Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/Ref.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/Ref.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/Ref.h	(revision 3762)
@@ -0,0 +1,284 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2012 Gael Guennebaud <gael.guennebaud@inria.fr>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_REF_H
+#define EIGEN_REF_H
+
+namespace Eigen { 
+
+namespace internal {
+
+template<typename _PlainObjectType, int _Options, typename _StrideType>
+struct traits<Ref<_PlainObjectType, _Options, _StrideType> >
+  : public traits<Map<_PlainObjectType, _Options, _StrideType> >
+{
+  typedef _PlainObjectType PlainObjectType;
+  typedef _StrideType StrideType;
+  enum {
+    Options = _Options,
+    Flags = traits<Map<_PlainObjectType, _Options, _StrideType> >::Flags | NestByRefBit,
+    Alignment = traits<Map<_PlainObjectType, _Options, _StrideType> >::Alignment
+  };
+
+  template<typename Derived> struct match {
+    enum {
+      IsVectorAtCompileTime = PlainObjectType::IsVectorAtCompileTime || Derived::IsVectorAtCompileTime,
+      HasDirectAccess = internal::has_direct_access<Derived>::ret,
+      StorageOrderMatch = IsVectorAtCompileTime || ((PlainObjectType::Flags&RowMajorBit)==(Derived::Flags&RowMajorBit)),
+      InnerStrideMatch = int(StrideType::InnerStrideAtCompileTime)==int(Dynamic)
+                      || int(StrideType::InnerStrideAtCompileTime)==int(Derived::InnerStrideAtCompileTime)
+                      || (int(StrideType::InnerStrideAtCompileTime)==0 && int(Derived::InnerStrideAtCompileTime)==1),
+      OuterStrideMatch = IsVectorAtCompileTime
+                      || int(StrideType::OuterStrideAtCompileTime)==int(Dynamic) || int(StrideType::OuterStrideAtCompileTime)==int(Derived::OuterStrideAtCompileTime),
+      // NOTE, this indirection of evaluator<Derived>::Alignment is needed
+      // to workaround a very strange bug in MSVC related to the instantiation
+      // of has_*ary_operator in evaluator<CwiseNullaryOp>.
+      // This line is surprisingly very sensitive. For instance, simply adding parenthesis
+      // as "DerivedAlignment = (int(evaluator<Derived>::Alignment))," will make MSVC fail...
+      DerivedAlignment = int(evaluator<Derived>::Alignment),
+      AlignmentMatch = (int(traits<PlainObjectType>::Alignment)==int(Unaligned)) || (DerivedAlignment >= int(Alignment)), // FIXME the first condition is not very clear, it should be replaced by the required alignment
+      ScalarTypeMatch = internal::is_same<typename PlainObjectType::Scalar, typename Derived::Scalar>::value,
+      MatchAtCompileTime = HasDirectAccess && StorageOrderMatch && InnerStrideMatch && OuterStrideMatch && AlignmentMatch && ScalarTypeMatch
+    };
+    typedef typename internal::conditional<MatchAtCompileTime,internal::true_type,internal::false_type>::type type;
+  };
+  
+};
+
+template<typename Derived>
+struct traits<RefBase<Derived> > : public traits<Derived> {};
+
+}
+
+template<typename Derived> class RefBase
+ : public MapBase<Derived>
+{
+  typedef typename internal::traits<Derived>::PlainObjectType PlainObjectType;
+  typedef typename internal::traits<Derived>::StrideType StrideType;
+
+public:
+
+  typedef MapBase<Derived> Base;
+  EIGEN_DENSE_PUBLIC_INTERFACE(RefBase)
+
+  EIGEN_DEVICE_FUNC inline Index innerStride() const
+  {
+    return StrideType::InnerStrideAtCompileTime != 0 ? m_stride.inner() : 1;
+  }
+
+  EIGEN_DEVICE_FUNC inline Index outerStride() const
+  {
+    return StrideType::OuterStrideAtCompileTime != 0 ? m_stride.outer()
+         : IsVectorAtCompileTime ? this->size()
+         : int(Flags)&RowMajorBit ? this->cols()
+         : this->rows();
+  }
+
+  EIGEN_DEVICE_FUNC RefBase()
+    : Base(0,RowsAtCompileTime==Dynamic?0:RowsAtCompileTime,ColsAtCompileTime==Dynamic?0:ColsAtCompileTime),
+      // Stride<> does not allow default ctor for Dynamic strides, so let' initialize it with dummy values:
+      m_stride(StrideType::OuterStrideAtCompileTime==Dynamic?0:StrideType::OuterStrideAtCompileTime,
+               StrideType::InnerStrideAtCompileTime==Dynamic?0:StrideType::InnerStrideAtCompileTime)
+  {}
+  
+  EIGEN_INHERIT_ASSIGNMENT_OPERATORS(RefBase)
+
+protected:
+
+  typedef Stride<StrideType::OuterStrideAtCompileTime,StrideType::InnerStrideAtCompileTime> StrideBase;
+
+  template<typename Expression>
+  EIGEN_DEVICE_FUNC void construct(Expression& expr)
+  {
+    EIGEN_STATIC_ASSERT_SAME_MATRIX_SIZE(PlainObjectType,Expression);
+
+    if(PlainObjectType::RowsAtCompileTime==1)
+    {
+      eigen_assert(expr.rows()==1 || expr.cols()==1);
+      ::new (static_cast<Base*>(this)) Base(expr.data(), 1, expr.size());
+    }
+    else if(PlainObjectType::ColsAtCompileTime==1)
+    {
+      eigen_assert(expr.rows()==1 || expr.cols()==1);
+      ::new (static_cast<Base*>(this)) Base(expr.data(), expr.size(), 1);
+    }
+    else
+      ::new (static_cast<Base*>(this)) Base(expr.data(), expr.rows(), expr.cols());
+    
+    if(Expression::IsVectorAtCompileTime && (!PlainObjectType::IsVectorAtCompileTime) && ((Expression::Flags&RowMajorBit)!=(PlainObjectType::Flags&RowMajorBit)))
+      ::new (&m_stride) StrideBase(expr.innerStride(), StrideType::InnerStrideAtCompileTime==0?0:1);
+    else
+      ::new (&m_stride) StrideBase(StrideType::OuterStrideAtCompileTime==0?0:expr.outerStride(),
+                                   StrideType::InnerStrideAtCompileTime==0?0:expr.innerStride());    
+  }
+
+  StrideBase m_stride;
+};
+
+/** \class Ref
+  * \ingroup Core_Module
+  *
+  * \brief A matrix or vector expression mapping an existing expression
+  *
+  * \tparam PlainObjectType the equivalent matrix type of the mapped data
+  * \tparam Options specifies the pointer alignment in bytes. It can be: \c #Aligned128, , \c #Aligned64, \c #Aligned32, \c #Aligned16, \c #Aligned8 or \c #Unaligned.
+  *                 The default is \c #Unaligned.
+  * \tparam StrideType optionally specifies strides. By default, Ref implies a contiguous storage along the inner dimension (inner stride==1),
+  *                   but accepts a variable outer stride (leading dimension).
+  *                   This can be overridden by specifying strides.
+  *                   The type passed here must be a specialization of the Stride template, see examples below.
+  *
+  * This class provides a way to write non-template functions taking Eigen objects as parameters while limiting the number of copies.
+  * A Ref<> object can represent either a const expression or a l-value:
+  * \code
+  * // in-out argument:
+  * void foo1(Ref<VectorXf> x);
+  *
+  * // read-only const argument:
+  * void foo2(const Ref<const VectorXf>& x);
+  * \endcode
+  *
+  * In the in-out case, the input argument must satisfy the constraints of the actual Ref<> type, otherwise a compilation issue will be triggered.
+  * By default, a Ref<VectorXf> can reference any dense vector expression of float having a contiguous memory layout.
+  * Likewise, a Ref<MatrixXf> can reference any column-major dense matrix expression of float whose column's elements are contiguously stored with
+  * the possibility to have a constant space in-between each column, i.e. the inner stride must be equal to 1, but the outer stride (or leading dimension)
+  * can be greater than the number of rows.
+  *
+  * In the const case, if the input expression does not match the above requirement, then it is evaluated into a temporary before being passed to the function.
+  * Here are some examples:
+  * \code
+  * MatrixXf A;
+  * VectorXf a;
+  * foo1(a.head());             // OK
+  * foo1(A.col());              // OK
+  * foo1(A.row());              // Compilation error because here innerstride!=1
+  * foo2(A.row());              // Compilation error because A.row() is a 1xN object while foo2 is expecting a Nx1 object
+  * foo2(A.row().transpose());  // The row is copied into a contiguous temporary
+  * foo2(2*a);                  // The expression is evaluated into a temporary
+  * foo2(A.col().segment(2,4)); // No temporary
+  * \endcode
+  *
+  * The range of inputs that can be referenced without temporary can be enlarged using the last two template parameters.
+  * Here is an example accepting an innerstride!=1:
+  * \code
+  * // in-out argument:
+  * void foo3(Ref<VectorXf,0,InnerStride<> > x);
+  * foo3(A.row());              // OK
+  * \endcode
+  * The downside here is that the function foo3 might be significantly slower than foo1 because it won't be able to exploit vectorization, and will involve more
+  * expensive address computations even if the input is contiguously stored in memory. To overcome this issue, one might propose to overload internally calling a
+  * template function, e.g.:
+  * \code
+  * // in the .h:
+  * void foo(const Ref<MatrixXf>& A);
+  * void foo(const Ref<MatrixXf,0,Stride<> >& A);
+  *
+  * // in the .cpp:
+  * template<typename TypeOfA> void foo_impl(const TypeOfA& A) {
+  *     ... // crazy code goes here
+  * }
+  * void foo(const Ref<MatrixXf>& A) { foo_impl(A); }
+  * void foo(const Ref<MatrixXf,0,Stride<> >& A) { foo_impl(A); }
+  * \endcode
+  *
+  *
+  * \sa PlainObjectBase::Map(), \ref TopicStorageOrders
+  */
+template<typename PlainObjectType, int Options, typename StrideType> class Ref
+  : public RefBase<Ref<PlainObjectType, Options, StrideType> >
+{
+  private:
+    typedef internal::traits<Ref> Traits;
+    template<typename Derived>
+    EIGEN_DEVICE_FUNC inline Ref(const PlainObjectBase<Derived>& expr,
+                                 typename internal::enable_if<bool(Traits::template match<Derived>::MatchAtCompileTime),Derived>::type* = 0);
+  public:
+
+    typedef RefBase<Ref> Base;
+    EIGEN_DENSE_PUBLIC_INTERFACE(Ref)
+
+
+    #ifndef EIGEN_PARSED_BY_DOXYGEN
+    template<typename Derived>
+    EIGEN_DEVICE_FUNC inline Ref(PlainObjectBase<Derived>& expr,
+                                 typename internal::enable_if<bool(Traits::template match<Derived>::MatchAtCompileTime),Derived>::type* = 0)
+    {
+      EIGEN_STATIC_ASSERT(bool(Traits::template match<Derived>::MatchAtCompileTime), STORAGE_LAYOUT_DOES_NOT_MATCH);
+      Base::construct(expr.derived());
+    }
+    template<typename Derived>
+    EIGEN_DEVICE_FUNC inline Ref(const DenseBase<Derived>& expr,
+                                 typename internal::enable_if<bool(Traits::template match<Derived>::MatchAtCompileTime),Derived>::type* = 0)
+    #else
+    /** Implicit constructor from any dense expression */
+    template<typename Derived>
+    inline Ref(DenseBase<Derived>& expr)
+    #endif
+    {
+      EIGEN_STATIC_ASSERT(bool(internal::is_lvalue<Derived>::value), THIS_EXPRESSION_IS_NOT_A_LVALUE__IT_IS_READ_ONLY);
+      EIGEN_STATIC_ASSERT(bool(Traits::template match<Derived>::MatchAtCompileTime), STORAGE_LAYOUT_DOES_NOT_MATCH);
+      EIGEN_STATIC_ASSERT(!Derived::IsPlainObjectBase,THIS_EXPRESSION_IS_NOT_A_LVALUE__IT_IS_READ_ONLY);
+      Base::construct(expr.const_cast_derived());
+    }
+
+    EIGEN_INHERIT_ASSIGNMENT_OPERATORS(Ref)
+
+};
+
+// this is the const ref version
+template<typename TPlainObjectType, int Options, typename StrideType> class Ref<const TPlainObjectType, Options, StrideType>
+  : public RefBase<Ref<const TPlainObjectType, Options, StrideType> >
+{
+    typedef internal::traits<Ref> Traits;
+  public:
+
+    typedef RefBase<Ref> Base;
+    EIGEN_DENSE_PUBLIC_INTERFACE(Ref)
+
+    template<typename Derived>
+    EIGEN_DEVICE_FUNC inline Ref(const DenseBase<Derived>& expr,
+                                 typename internal::enable_if<bool(Traits::template match<Derived>::ScalarTypeMatch),Derived>::type* = 0)
+    {
+//      std::cout << match_helper<Derived>::HasDirectAccess << "," << match_helper<Derived>::OuterStrideMatch << "," << match_helper<Derived>::InnerStrideMatch << "\n";
+//      std::cout << int(StrideType::OuterStrideAtCompileTime) << " - " << int(Derived::OuterStrideAtCompileTime) << "\n";
+//      std::cout << int(StrideType::InnerStrideAtCompileTime) << " - " << int(Derived::InnerStrideAtCompileTime) << "\n";
+      construct(expr.derived(), typename Traits::template match<Derived>::type());
+    }
+
+    EIGEN_DEVICE_FUNC inline Ref(const Ref& other) : Base(other) {
+      // copy constructor shall not copy the m_object, to avoid unnecessary malloc and copy
+    }
+
+    template<typename OtherRef>
+    EIGEN_DEVICE_FUNC inline Ref(const RefBase<OtherRef>& other) {
+      construct(other.derived(), typename Traits::template match<OtherRef>::type());
+    }
+
+  protected:
+
+    template<typename Expression>
+    EIGEN_DEVICE_FUNC void construct(const Expression& expr,internal::true_type)
+    {
+      Base::construct(expr);
+    }
+
+    template<typename Expression>
+    EIGEN_DEVICE_FUNC void construct(const Expression& expr, internal::false_type)
+    {
+      internal::call_assignment_no_alias(m_object,expr,internal::assign_op<Scalar,Scalar>());
+      Base::construct(m_object);
+    }
+
+  protected:
+    TPlainObjectType m_object;
+};
+
+} // end namespace Eigen
+
+#endif // EIGEN_REF_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/Map.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/Map.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/Map.h	(revision 3762)
@@ -0,0 +1,171 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2007-2010 Benoit Jacob <jacob.benoit.1@gmail.com>
+// Copyright (C) 2008 Gael Guennebaud <gael.guennebaud@inria.fr>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_MAP_H
+#define EIGEN_MAP_H
+
+namespace Eigen { 
+
+namespace internal {
+template<typename PlainObjectType, int MapOptions, typename StrideType>
+struct traits<Map<PlainObjectType, MapOptions, StrideType> >
+  : public traits<PlainObjectType>
+{
+  typedef traits<PlainObjectType> TraitsBase;
+  enum {
+    PlainObjectTypeInnerSize = ((traits<PlainObjectType>::Flags&RowMajorBit)==RowMajorBit)
+                             ? PlainObjectType::ColsAtCompileTime
+                             : PlainObjectType::RowsAtCompileTime,
+
+    InnerStrideAtCompileTime = StrideType::InnerStrideAtCompileTime == 0
+                             ? int(PlainObjectType::InnerStrideAtCompileTime)
+                             : int(StrideType::InnerStrideAtCompileTime),
+    OuterStrideAtCompileTime = StrideType::OuterStrideAtCompileTime == 0
+                             ? (InnerStrideAtCompileTime==Dynamic || PlainObjectTypeInnerSize==Dynamic
+                                ? Dynamic
+                                : int(InnerStrideAtCompileTime) * int(PlainObjectTypeInnerSize))
+                             : int(StrideType::OuterStrideAtCompileTime),
+    Alignment = int(MapOptions)&int(AlignedMask),
+    Flags0 = TraitsBase::Flags & (~NestByRefBit),
+    Flags = is_lvalue<PlainObjectType>::value ? int(Flags0) : (int(Flags0) & ~LvalueBit)
+  };
+private:
+  enum { Options }; // Expressions don't have Options
+};
+}
+
+/** \class Map
+  * \ingroup Core_Module
+  *
+  * \brief A matrix or vector expression mapping an existing array of data.
+  *
+  * \tparam PlainObjectType the equivalent matrix type of the mapped data
+  * \tparam MapOptions specifies the pointer alignment in bytes. It can be: \c #Aligned128, , \c #Aligned64, \c #Aligned32, \c #Aligned16, \c #Aligned8 or \c #Unaligned.
+  *                The default is \c #Unaligned.
+  * \tparam StrideType optionally specifies strides. By default, Map assumes the memory layout
+  *                   of an ordinary, contiguous array. This can be overridden by specifying strides.
+  *                   The type passed here must be a specialization of the Stride template, see examples below.
+  *
+  * This class represents a matrix or vector expression mapping an existing array of data.
+  * It can be used to let Eigen interface without any overhead with non-Eigen data structures,
+  * such as plain C arrays or structures from other libraries. By default, it assumes that the
+  * data is laid out contiguously in memory. You can however override this by explicitly specifying
+  * inner and outer strides.
+  *
+  * Here's an example of simply mapping a contiguous array as a \ref TopicStorageOrders "column-major" matrix:
+  * \include Map_simple.cpp
+  * Output: \verbinclude Map_simple.out
+  *
+  * If you need to map non-contiguous arrays, you can do so by specifying strides:
+  *
+  * Here's an example of mapping an array as a vector, specifying an inner stride, that is, the pointer
+  * increment between two consecutive coefficients. Here, we're specifying the inner stride as a compile-time
+  * fixed value.
+  * \include Map_inner_stride.cpp
+  * Output: \verbinclude Map_inner_stride.out
+  *
+  * Here's an example of mapping an array while specifying an outer stride. Here, since we're mapping
+  * as a column-major matrix, 'outer stride' means the pointer increment between two consecutive columns.
+  * Here, we're specifying the outer stride as a runtime parameter. Note that here \c OuterStride<> is
+  * a short version of \c OuterStride<Dynamic> because the default template parameter of OuterStride
+  * is  \c Dynamic
+  * \include Map_outer_stride.cpp
+  * Output: \verbinclude Map_outer_stride.out
+  *
+  * For more details and for an example of specifying both an inner and an outer stride, see class Stride.
+  *
+  * \b Tip: to change the array of data mapped by a Map object, you can use the C++
+  * placement new syntax:
+  *
+  * Example: \include Map_placement_new.cpp
+  * Output: \verbinclude Map_placement_new.out
+  *
+  * This class is the return type of PlainObjectBase::Map() but can also be used directly.
+  *
+  * \sa PlainObjectBase::Map(), \ref TopicStorageOrders
+  */
+template<typename PlainObjectType, int MapOptions, typename StrideType> class Map
+  : public MapBase<Map<PlainObjectType, MapOptions, StrideType> >
+{
+  public:
+
+    typedef MapBase<Map> Base;
+    EIGEN_DENSE_PUBLIC_INTERFACE(Map)
+
+    typedef typename Base::PointerType PointerType;
+    typedef PointerType PointerArgType;
+    EIGEN_DEVICE_FUNC
+    inline PointerType cast_to_pointer_type(PointerArgType ptr) { return ptr; }
+
+    EIGEN_DEVICE_FUNC
+    inline Index innerStride() const
+    {
+      return StrideType::InnerStrideAtCompileTime != 0 ? m_stride.inner() : 1;
+    }
+
+    EIGEN_DEVICE_FUNC
+    inline Index outerStride() const
+    {
+      return int(StrideType::OuterStrideAtCompileTime) != 0 ? m_stride.outer()
+           : int(internal::traits<Map>::OuterStrideAtCompileTime) != Dynamic ? Index(internal::traits<Map>::OuterStrideAtCompileTime)
+           : IsVectorAtCompileTime ? (this->size() * innerStride())
+           : (int(Flags)&RowMajorBit) ? (this->cols() * innerStride())
+           : (this->rows() * innerStride());
+    }
+
+    /** Constructor in the fixed-size case.
+      *
+      * \param dataPtr pointer to the array to map
+      * \param stride optional Stride object, passing the strides.
+      */
+    EIGEN_DEVICE_FUNC
+    explicit inline Map(PointerArgType dataPtr, const StrideType& stride = StrideType())
+      : Base(cast_to_pointer_type(dataPtr)), m_stride(stride)
+    {
+      PlainObjectType::Base::_check_template_params();
+    }
+
+    /** Constructor in the dynamic-size vector case.
+      *
+      * \param dataPtr pointer to the array to map
+      * \param size the size of the vector expression
+      * \param stride optional Stride object, passing the strides.
+      */
+    EIGEN_DEVICE_FUNC
+    inline Map(PointerArgType dataPtr, Index size, const StrideType& stride = StrideType())
+      : Base(cast_to_pointer_type(dataPtr), size), m_stride(stride)
+    {
+      PlainObjectType::Base::_check_template_params();
+    }
+
+    /** Constructor in the dynamic-size matrix case.
+      *
+      * \param dataPtr pointer to the array to map
+      * \param rows the number of rows of the matrix expression
+      * \param cols the number of columns of the matrix expression
+      * \param stride optional Stride object, passing the strides.
+      */
+    EIGEN_DEVICE_FUNC
+    inline Map(PointerArgType dataPtr, Index rows, Index cols, const StrideType& stride = StrideType())
+      : Base(cast_to_pointer_type(dataPtr), rows, cols), m_stride(stride)
+    {
+      PlainObjectType::Base::_check_template_params();
+    }
+
+    EIGEN_INHERIT_ASSIGNMENT_OPERATORS(Map)
+
+  protected:
+    StrideType m_stride;
+};
+
+
+} // end namespace Eigen
+
+#endif // EIGEN_MAP_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/ConditionEstimator.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/ConditionEstimator.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/ConditionEstimator.h	(revision 3762)
@@ -0,0 +1,175 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2016 Rasmus Munk Larsen (rmlarsen@google.com)
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CONDITIONESTIMATOR_H
+#define EIGEN_CONDITIONESTIMATOR_H
+
+namespace Eigen {
+
+namespace internal {
+
+template <typename Vector, typename RealVector, bool IsComplex>
+struct rcond_compute_sign {
+  static inline Vector run(const Vector& v) {
+    const RealVector v_abs = v.cwiseAbs();
+    return (v_abs.array() == static_cast<typename Vector::RealScalar>(0))
+            .select(Vector::Ones(v.size()), v.cwiseQuotient(v_abs));
+  }
+};
+
+// Partial specialization to avoid elementwise division for real vectors.
+template <typename Vector>
+struct rcond_compute_sign<Vector, Vector, false> {
+  static inline Vector run(const Vector& v) {
+    return (v.array() < static_cast<typename Vector::RealScalar>(0))
+           .select(-Vector::Ones(v.size()), Vector::Ones(v.size()));
+  }
+};
+
+/**
+  * \returns an estimate of ||inv(matrix)||_1 given a decomposition of
+  * \a matrix that implements .solve() and .adjoint().solve() methods.
+  *
+  * This function implements Algorithms 4.1 and 5.1 from
+  *   http://www.maths.manchester.ac.uk/~higham/narep/narep135.pdf
+  * which also forms the basis for the condition number estimators in
+  * LAPACK. Since at most 10 calls to the solve method of dec are
+  * performed, the total cost is O(dims^2), as opposed to O(dims^3)
+  * needed to compute the inverse matrix explicitly.
+  *
+  * The most common usage is in estimating the condition number
+  * ||matrix||_1 * ||inv(matrix)||_1. The first term ||matrix||_1 can be
+  * computed directly in O(n^2) operations.
+  *
+  * Supports the following decompositions: FullPivLU, PartialPivLU, LDLT, and
+  * LLT.
+  *
+  * \sa FullPivLU, PartialPivLU, LDLT, LLT.
+  */
+template <typename Decomposition>
+typename Decomposition::RealScalar rcond_invmatrix_L1_norm_estimate(const Decomposition& dec)
+{
+  typedef typename Decomposition::MatrixType MatrixType;
+  typedef typename Decomposition::Scalar Scalar;
+  typedef typename Decomposition::RealScalar RealScalar;
+  typedef typename internal::plain_col_type<MatrixType>::type Vector;
+  typedef typename internal::plain_col_type<MatrixType, RealScalar>::type RealVector;
+  const bool is_complex = (NumTraits<Scalar>::IsComplex != 0);
+
+  eigen_assert(dec.rows() == dec.cols());
+  const Index n = dec.rows();
+  if (n == 0)
+    return 0;
+
+  // Disable Index to float conversion warning
+#ifdef __INTEL_COMPILER
+  #pragma warning push
+  #pragma warning ( disable : 2259 )
+#endif
+  Vector v = dec.solve(Vector::Ones(n) / Scalar(n));
+#ifdef __INTEL_COMPILER
+  #pragma warning pop
+#endif
+
+  // lower_bound is a lower bound on
+  //   ||inv(matrix)||_1  = sup_v ||inv(matrix) v||_1 / ||v||_1
+  // and is the objective maximized by the ("super-") gradient ascent
+  // algorithm below.
+  RealScalar lower_bound = v.template lpNorm<1>();
+  if (n == 1)
+    return lower_bound;
+
+  // Gradient ascent algorithm follows: We know that the optimum is achieved at
+  // one of the simplices v = e_i, so in each iteration we follow a
+  // super-gradient to move towards the optimal one.
+  RealScalar old_lower_bound = lower_bound;
+  Vector sign_vector(n);
+  Vector old_sign_vector;
+  Index v_max_abs_index = -1;
+  Index old_v_max_abs_index = v_max_abs_index;
+  for (int k = 0; k < 4; ++k)
+  {
+    sign_vector = internal::rcond_compute_sign<Vector, RealVector, is_complex>::run(v);
+    if (k > 0 && !is_complex && sign_vector == old_sign_vector) {
+      // Break if the solution stagnated.
+      break;
+    }
+    // v_max_abs_index = argmax |real( inv(matrix)^T * sign_vector )|
+    v = dec.adjoint().solve(sign_vector);
+    v.real().cwiseAbs().maxCoeff(&v_max_abs_index);
+    if (v_max_abs_index == old_v_max_abs_index) {
+      // Break if the solution stagnated.
+      break;
+    }
+    // Move to the new simplex e_j, where j = v_max_abs_index.
+    v = dec.solve(Vector::Unit(n, v_max_abs_index));  // v = inv(matrix) * e_j.
+    lower_bound = v.template lpNorm<1>();
+    if (lower_bound <= old_lower_bound) {
+      // Break if the gradient step did not increase the lower_bound.
+      break;
+    }
+    if (!is_complex) {
+      old_sign_vector = sign_vector;
+    }
+    old_v_max_abs_index = v_max_abs_index;
+    old_lower_bound = lower_bound;
+  }
+  // The following calculates an independent estimate of ||matrix||_1 by
+  // multiplying matrix by a vector with entries of slowly increasing
+  // magnitude and alternating sign:
+  //   v_i = (-1)^{i} (1 + (i / (dim-1))), i = 0,...,dim-1.
+  // This improvement to Hager's algorithm above is due to Higham. It was
+  // added to make the algorithm more robust in certain corner cases where
+  // large elements in the matrix might otherwise escape detection due to
+  // exact cancellation (especially when op and op_adjoint correspond to a
+  // sequence of backsubstitutions and permutations), which could cause
+  // Hager's algorithm to vastly underestimate ||matrix||_1.
+  Scalar alternating_sign(RealScalar(1));
+  for (Index i = 0; i < n; ++i) {
+    // The static_cast is needed when Scalar is a complex and RealScalar implements expression templates
+    v[i] = alternating_sign * static_cast<RealScalar>(RealScalar(1) + (RealScalar(i) / (RealScalar(n - 1))));
+    alternating_sign = -alternating_sign;
+  }
+  v = dec.solve(v);
+  const RealScalar alternate_lower_bound = (2 * v.template lpNorm<1>()) / (3 * RealScalar(n));
+  return numext::maxi(lower_bound, alternate_lower_bound);
+}
+
+/** \brief Reciprocal condition number estimator.
+  *
+  * Computing a decomposition of a dense matrix takes O(n^3) operations, while
+  * this method estimates the condition number quickly and reliably in O(n^2)
+  * operations.
+  *
+  * \returns an estimate of the reciprocal condition number
+  * (1 / (||matrix||_1 * ||inv(matrix)||_1)) of matrix, given ||matrix||_1 and
+  * its decomposition. Supports the following decompositions: FullPivLU,
+  * PartialPivLU, LDLT, and LLT.
+  *
+  * \sa FullPivLU, PartialPivLU, LDLT, LLT.
+  */
+template <typename Decomposition>
+typename Decomposition::RealScalar
+rcond_estimate_helper(typename Decomposition::RealScalar matrix_norm, const Decomposition& dec)
+{
+  typedef typename Decomposition::RealScalar RealScalar;
+  eigen_assert(dec.rows() == dec.cols());
+  if (dec.rows() == 0)              return NumTraits<RealScalar>::infinity();
+  if (matrix_norm == RealScalar(0)) return RealScalar(0);
+  if (dec.rows() == 1)              return RealScalar(1);
+  const RealScalar inverse_matrix_norm = rcond_invmatrix_L1_norm_estimate(dec);
+  return (inverse_matrix_norm == RealScalar(0) ? RealScalar(0)
+                                               : (RealScalar(1) / inverse_matrix_norm) / matrix_norm);
+}
+
+}  // namespace internal
+
+}  // namespace Eigen
+
+#endif
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/CwiseNullaryOp.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/CwiseNullaryOp.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/CwiseNullaryOp.h	(revision 3762)
@@ -0,0 +1,866 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2008-2010 Gael Guennebaud <gael.guennebaud@inria.fr>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CWISE_NULLARY_OP_H
+#define EIGEN_CWISE_NULLARY_OP_H
+
+namespace Eigen {
+
+namespace internal {
+template<typename NullaryOp, typename PlainObjectType>
+struct traits<CwiseNullaryOp<NullaryOp, PlainObjectType> > : traits<PlainObjectType>
+{
+  enum {
+    Flags = traits<PlainObjectType>::Flags & RowMajorBit
+  };
+};
+
+} // namespace internal
+
+/** \class CwiseNullaryOp
+  * \ingroup Core_Module
+  *
+  * \brief Generic expression of a matrix where all coefficients are defined by a functor
+  *
+  * \tparam NullaryOp template functor implementing the operator
+  * \tparam PlainObjectType the underlying plain matrix/array type
+  *
+  * This class represents an expression of a generic nullary operator.
+  * It is the return type of the Ones(), Zero(), Constant(), Identity() and Random() methods,
+  * and most of the time this is the only way it is used.
+  *
+  * However, if you want to write a function returning such an expression, you
+  * will need to use this class.
+  *
+  * The functor NullaryOp must expose one of the following method:
+    <table class="manual">
+    <tr            ><td>\c operator()() </td><td>if the procedural generation does not depend on the coefficient entries (e.g., random numbers)</td></tr>
+    <tr class="alt"><td>\c operator()(Index i)</td><td>if the procedural generation makes sense for vectors only and that it depends on the coefficient index \c i (e.g., linspace) </td></tr>
+    <tr            ><td>\c operator()(Index i,Index j)</td><td>if the procedural generation depends on the matrix coordinates \c i, \c j (e.g., to generate a checkerboard with 0 and 1)</td></tr>
+    </table>
+  * It is also possible to expose the last two operators if the generation makes sense for matrices but can be optimized for vectors.
+  *
+  * See DenseBase::NullaryExpr(Index,const CustomNullaryOp&) for an example binding
+  * C++11 random number generators.
+  *
+  * A nullary expression can also be used to implement custom sophisticated matrix manipulations
+  * that cannot be covered by the existing set of natively supported matrix manipulations.
+  * See this \ref TopicCustomizing_NullaryExpr "page" for some examples and additional explanations
+  * on the behavior of CwiseNullaryOp.
+  *
+  * \sa class CwiseUnaryOp, class CwiseBinaryOp, DenseBase::NullaryExpr
+  */
+template<typename NullaryOp, typename PlainObjectType>
+class CwiseNullaryOp : public internal::dense_xpr_base< CwiseNullaryOp<NullaryOp, PlainObjectType> >::type, internal::no_assignment_operator
+{
+  public:
+
+    typedef typename internal::dense_xpr_base<CwiseNullaryOp>::type Base;
+    EIGEN_DENSE_PUBLIC_INTERFACE(CwiseNullaryOp)
+
+    EIGEN_DEVICE_FUNC
+    CwiseNullaryOp(Index rows, Index cols, const NullaryOp& func = NullaryOp())
+      : m_rows(rows), m_cols(cols), m_functor(func)
+    {
+      eigen_assert(rows >= 0
+            && (RowsAtCompileTime == Dynamic || RowsAtCompileTime == rows)
+            &&  cols >= 0
+            && (ColsAtCompileTime == Dynamic || ColsAtCompileTime == cols));
+    }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Index rows() const { return m_rows.value(); }
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Index cols() const { return m_cols.value(); }
+
+    /** \returns the functor representing the nullary operation */
+    EIGEN_DEVICE_FUNC
+    const NullaryOp& functor() const { return m_functor; }
+
+  protected:
+    const internal::variable_if_dynamic<Index, RowsAtCompileTime> m_rows;
+    const internal::variable_if_dynamic<Index, ColsAtCompileTime> m_cols;
+    const NullaryOp m_functor;
+};
+
+
+/** \returns an expression of a matrix defined by a custom functor \a func
+  *
+  * The parameters \a rows and \a cols are the number of rows and of columns of
+  * the returned matrix. Must be compatible with this MatrixBase type.
+  *
+  * This variant is meant to be used for dynamic-size matrix types. For fixed-size types,
+  * it is redundant to pass \a rows and \a cols as arguments, so Zero() should be used
+  * instead.
+  *
+  * The template parameter \a CustomNullaryOp is the type of the functor.
+  *
+  * \sa class CwiseNullaryOp
+  */
+template<typename Derived>
+template<typename CustomNullaryOp>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const CwiseNullaryOp<CustomNullaryOp, typename DenseBase<Derived>::PlainObject>
+DenseBase<Derived>::NullaryExpr(Index rows, Index cols, const CustomNullaryOp& func)
+{
+  return CwiseNullaryOp<CustomNullaryOp, PlainObject>(rows, cols, func);
+}
+
+/** \returns an expression of a matrix defined by a custom functor \a func
+  *
+  * The parameter \a size is the size of the returned vector.
+  * Must be compatible with this MatrixBase type.
+  *
+  * \only_for_vectors
+  *
+  * This variant is meant to be used for dynamic-size vector types. For fixed-size types,
+  * it is redundant to pass \a size as argument, so Zero() should be used
+  * instead.
+  *
+  * The template parameter \a CustomNullaryOp is the type of the functor.
+  *
+  * Here is an example with C++11 random generators: \include random_cpp11.cpp
+  * Output: \verbinclude random_cpp11.out
+  * 
+  * \sa class CwiseNullaryOp
+  */
+template<typename Derived>
+template<typename CustomNullaryOp>
+EIGEN_STRONG_INLINE const CwiseNullaryOp<CustomNullaryOp, typename DenseBase<Derived>::PlainObject>
+DenseBase<Derived>::NullaryExpr(Index size, const CustomNullaryOp& func)
+{
+  EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
+  if(RowsAtCompileTime == 1) return CwiseNullaryOp<CustomNullaryOp, PlainObject>(1, size, func);
+  else return CwiseNullaryOp<CustomNullaryOp, PlainObject>(size, 1, func);
+}
+
+/** \returns an expression of a matrix defined by a custom functor \a func
+  *
+  * This variant is only for fixed-size DenseBase types. For dynamic-size types, you
+  * need to use the variants taking size arguments.
+  *
+  * The template parameter \a CustomNullaryOp is the type of the functor.
+  *
+  * \sa class CwiseNullaryOp
+  */
+template<typename Derived>
+template<typename CustomNullaryOp>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const CwiseNullaryOp<CustomNullaryOp, typename DenseBase<Derived>::PlainObject>
+DenseBase<Derived>::NullaryExpr(const CustomNullaryOp& func)
+{
+  return CwiseNullaryOp<CustomNullaryOp, PlainObject>(RowsAtCompileTime, ColsAtCompileTime, func);
+}
+
+/** \returns an expression of a constant matrix of value \a value
+  *
+  * The parameters \a rows and \a cols are the number of rows and of columns of
+  * the returned matrix. Must be compatible with this DenseBase type.
+  *
+  * This variant is meant to be used for dynamic-size matrix types. For fixed-size types,
+  * it is redundant to pass \a rows and \a cols as arguments, so Zero() should be used
+  * instead.
+  *
+  * The template parameter \a CustomNullaryOp is the type of the functor.
+  *
+  * \sa class CwiseNullaryOp
+  */
+template<typename Derived>
+EIGEN_STRONG_INLINE const typename DenseBase<Derived>::ConstantReturnType
+DenseBase<Derived>::Constant(Index rows, Index cols, const Scalar& value)
+{
+  return DenseBase<Derived>::NullaryExpr(rows, cols, internal::scalar_constant_op<Scalar>(value));
+}
+
+/** \returns an expression of a constant matrix of value \a value
+  *
+  * The parameter \a size is the size of the returned vector.
+  * Must be compatible with this DenseBase type.
+  *
+  * \only_for_vectors
+  *
+  * This variant is meant to be used for dynamic-size vector types. For fixed-size types,
+  * it is redundant to pass \a size as argument, so Zero() should be used
+  * instead.
+  *
+  * The template parameter \a CustomNullaryOp is the type of the functor.
+  *
+  * \sa class CwiseNullaryOp
+  */
+template<typename Derived>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const typename DenseBase<Derived>::ConstantReturnType
+DenseBase<Derived>::Constant(Index size, const Scalar& value)
+{
+  return DenseBase<Derived>::NullaryExpr(size, internal::scalar_constant_op<Scalar>(value));
+}
+
+/** \returns an expression of a constant matrix of value \a value
+  *
+  * This variant is only for fixed-size DenseBase types. For dynamic-size types, you
+  * need to use the variants taking size arguments.
+  *
+  * The template parameter \a CustomNullaryOp is the type of the functor.
+  *
+  * \sa class CwiseNullaryOp
+  */
+template<typename Derived>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const typename DenseBase<Derived>::ConstantReturnType
+DenseBase<Derived>::Constant(const Scalar& value)
+{
+  EIGEN_STATIC_ASSERT_FIXED_SIZE(Derived)
+  return DenseBase<Derived>::NullaryExpr(RowsAtCompileTime, ColsAtCompileTime, internal::scalar_constant_op<Scalar>(value));
+}
+
+/** \deprecated because of accuracy loss. In Eigen 3.3, it is an alias for LinSpaced(Index,const Scalar&,const Scalar&)
+  *
+  * \sa LinSpaced(Index,Scalar,Scalar), setLinSpaced(Index,const Scalar&,const Scalar&)
+  */
+template<typename Derived>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const typename DenseBase<Derived>::RandomAccessLinSpacedReturnType
+DenseBase<Derived>::LinSpaced(Sequential_t, Index size, const Scalar& low, const Scalar& high)
+{
+  EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
+  return DenseBase<Derived>::NullaryExpr(size, internal::linspaced_op<Scalar,PacketScalar>(low,high,size));
+}
+
+/** \deprecated because of accuracy loss. In Eigen 3.3, it is an alias for LinSpaced(const Scalar&,const Scalar&)
+  *
+  * \sa LinSpaced(Scalar,Scalar)
+  */
+template<typename Derived>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const typename DenseBase<Derived>::RandomAccessLinSpacedReturnType
+DenseBase<Derived>::LinSpaced(Sequential_t, const Scalar& low, const Scalar& high)
+{
+  EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
+  EIGEN_STATIC_ASSERT_FIXED_SIZE(Derived)
+  return DenseBase<Derived>::NullaryExpr(Derived::SizeAtCompileTime, internal::linspaced_op<Scalar,PacketScalar>(low,high,Derived::SizeAtCompileTime));
+}
+
+/**
+  * \brief Sets a linearly spaced vector.
+  *
+  * The function generates 'size' equally spaced values in the closed interval [low,high].
+  * When size is set to 1, a vector of length 1 containing 'high' is returned.
+  *
+  * \only_for_vectors
+  *
+  * Example: \include DenseBase_LinSpaced.cpp
+  * Output: \verbinclude DenseBase_LinSpaced.out
+  *
+  * For integer scalar types, an even spacing is possible if and only if the length of the range,
+  * i.e., \c high-low is a scalar multiple of \c size-1, or if \c size is a scalar multiple of the
+  * number of values \c high-low+1 (meaning each value can be repeated the same number of time).
+  * If one of these two considions is not satisfied, then \c high is lowered to the largest value
+  * satisfying one of this constraint.
+  * Here are some examples:
+  *
+  * Example: \include DenseBase_LinSpacedInt.cpp
+  * Output: \verbinclude DenseBase_LinSpacedInt.out
+  *
+  * \sa setLinSpaced(Index,const Scalar&,const Scalar&), CwiseNullaryOp
+  */
+template<typename Derived>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const typename DenseBase<Derived>::RandomAccessLinSpacedReturnType
+DenseBase<Derived>::LinSpaced(Index size, const Scalar& low, const Scalar& high)
+{
+  EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
+  return DenseBase<Derived>::NullaryExpr(size, internal::linspaced_op<Scalar,PacketScalar>(low,high,size));
+}
+
+/**
+  * \copydoc DenseBase::LinSpaced(Index, const Scalar&, const Scalar&)
+  * Special version for fixed size types which does not require the size parameter.
+  */
+template<typename Derived>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const typename DenseBase<Derived>::RandomAccessLinSpacedReturnType
+DenseBase<Derived>::LinSpaced(const Scalar& low, const Scalar& high)
+{
+  EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
+  EIGEN_STATIC_ASSERT_FIXED_SIZE(Derived)
+  return DenseBase<Derived>::NullaryExpr(Derived::SizeAtCompileTime, internal::linspaced_op<Scalar,PacketScalar>(low,high,Derived::SizeAtCompileTime));
+}
+
+/** \returns true if all coefficients in this matrix are approximately equal to \a val, to within precision \a prec */
+template<typename Derived>
+EIGEN_DEVICE_FUNC bool DenseBase<Derived>::isApproxToConstant
+(const Scalar& val, const RealScalar& prec) const
+{
+  typename internal::nested_eval<Derived,1>::type self(derived());
+  for(Index j = 0; j < cols(); ++j)
+    for(Index i = 0; i < rows(); ++i)
+      if(!internal::isApprox(self.coeff(i, j), val, prec))
+        return false;
+  return true;
+}
+
+/** This is just an alias for isApproxToConstant().
+  *
+  * \returns true if all coefficients in this matrix are approximately equal to \a value, to within precision \a prec */
+template<typename Derived>
+EIGEN_DEVICE_FUNC bool DenseBase<Derived>::isConstant
+(const Scalar& val, const RealScalar& prec) const
+{
+  return isApproxToConstant(val, prec);
+}
+
+/** Alias for setConstant(): sets all coefficients in this expression to \a val.
+  *
+  * \sa setConstant(), Constant(), class CwiseNullaryOp
+  */
+template<typename Derived>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void DenseBase<Derived>::fill(const Scalar& val)
+{
+  setConstant(val);
+}
+
+/** Sets all coefficients in this expression to value \a val.
+  *
+  * \sa fill(), setConstant(Index,const Scalar&), setConstant(Index,Index,const Scalar&), setZero(), setOnes(), Constant(), class CwiseNullaryOp, setZero(), setOnes()
+  */
+template<typename Derived>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived& DenseBase<Derived>::setConstant(const Scalar& val)
+{
+  return derived() = Constant(rows(), cols(), val);
+}
+
+/** Resizes to the given \a size, and sets all coefficients in this expression to the given value \a val.
+  *
+  * \only_for_vectors
+  *
+  * Example: \include Matrix_setConstant_int.cpp
+  * Output: \verbinclude Matrix_setConstant_int.out
+  *
+  * \sa MatrixBase::setConstant(const Scalar&), setConstant(Index,Index,const Scalar&), class CwiseNullaryOp, MatrixBase::Constant(const Scalar&)
+  */
+template<typename Derived>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived&
+PlainObjectBase<Derived>::setConstant(Index size, const Scalar& val)
+{
+  resize(size);
+  return setConstant(val);
+}
+
+/** Resizes to the given size, and sets all coefficients in this expression to the given value \a val.
+  *
+  * \param rows the new number of rows
+  * \param cols the new number of columns
+  * \param val the value to which all coefficients are set
+  *
+  * Example: \include Matrix_setConstant_int_int.cpp
+  * Output: \verbinclude Matrix_setConstant_int_int.out
+  *
+  * \sa MatrixBase::setConstant(const Scalar&), setConstant(Index,const Scalar&), class CwiseNullaryOp, MatrixBase::Constant(const Scalar&)
+  */
+template<typename Derived>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived&
+PlainObjectBase<Derived>::setConstant(Index rows, Index cols, const Scalar& val)
+{
+  resize(rows, cols);
+  return setConstant(val);
+}
+
+/**
+  * \brief Sets a linearly spaced vector.
+  *
+  * The function generates 'size' equally spaced values in the closed interval [low,high].
+  * When size is set to 1, a vector of length 1 containing 'high' is returned.
+  *
+  * \only_for_vectors
+  *
+  * Example: \include DenseBase_setLinSpaced.cpp
+  * Output: \verbinclude DenseBase_setLinSpaced.out
+  *
+  * For integer scalar types, do not miss the explanations on the definition
+  * of \link LinSpaced(Index,const Scalar&,const Scalar&) even spacing \endlink.
+  *
+  * \sa LinSpaced(Index,const Scalar&,const Scalar&), CwiseNullaryOp
+  */
+template<typename Derived>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived& DenseBase<Derived>::setLinSpaced(Index newSize, const Scalar& low, const Scalar& high)
+{
+  EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
+  return derived() = Derived::NullaryExpr(newSize, internal::linspaced_op<Scalar,PacketScalar>(low,high,newSize));
+}
+
+/**
+  * \brief Sets a linearly spaced vector.
+  *
+  * The function fills \c *this with equally spaced values in the closed interval [low,high].
+  * When size is set to 1, a vector of length 1 containing 'high' is returned.
+  *
+  * \only_for_vectors
+  *
+  * For integer scalar types, do not miss the explanations on the definition
+  * of \link LinSpaced(Index,const Scalar&,const Scalar&) even spacing \endlink.
+  *
+  * \sa LinSpaced(Index,const Scalar&,const Scalar&), setLinSpaced(Index, const Scalar&, const Scalar&), CwiseNullaryOp
+  */
+template<typename Derived>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived& DenseBase<Derived>::setLinSpaced(const Scalar& low, const Scalar& high)
+{
+  EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
+  return setLinSpaced(size(), low, high);
+}
+
+// zero:
+
+/** \returns an expression of a zero matrix.
+  *
+  * The parameters \a rows and \a cols are the number of rows and of columns of
+  * the returned matrix. Must be compatible with this MatrixBase type.
+  *
+  * This variant is meant to be used for dynamic-size matrix types. For fixed-size types,
+  * it is redundant to pass \a rows and \a cols as arguments, so Zero() should be used
+  * instead.
+  *
+  * Example: \include MatrixBase_zero_int_int.cpp
+  * Output: \verbinclude MatrixBase_zero_int_int.out
+  *
+  * \sa Zero(), Zero(Index)
+  */
+template<typename Derived>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const typename DenseBase<Derived>::ConstantReturnType
+DenseBase<Derived>::Zero(Index rows, Index cols)
+{
+  return Constant(rows, cols, Scalar(0));
+}
+
+/** \returns an expression of a zero vector.
+  *
+  * The parameter \a size is the size of the returned vector.
+  * Must be compatible with this MatrixBase type.
+  *
+  * \only_for_vectors
+  *
+  * This variant is meant to be used for dynamic-size vector types. For fixed-size types,
+  * it is redundant to pass \a size as argument, so Zero() should be used
+  * instead.
+  *
+  * Example: \include MatrixBase_zero_int.cpp
+  * Output: \verbinclude MatrixBase_zero_int.out
+  *
+  * \sa Zero(), Zero(Index,Index)
+  */
+template<typename Derived>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const typename DenseBase<Derived>::ConstantReturnType
+DenseBase<Derived>::Zero(Index size)
+{
+  return Constant(size, Scalar(0));
+}
+
+/** \returns an expression of a fixed-size zero matrix or vector.
+  *
+  * This variant is only for fixed-size MatrixBase types. For dynamic-size types, you
+  * need to use the variants taking size arguments.
+  *
+  * Example: \include MatrixBase_zero.cpp
+  * Output: \verbinclude MatrixBase_zero.out
+  *
+  * \sa Zero(Index), Zero(Index,Index)
+  */
+template<typename Derived>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const typename DenseBase<Derived>::ConstantReturnType
+DenseBase<Derived>::Zero()
+{
+  return Constant(Scalar(0));
+}
+
+/** \returns true if *this is approximately equal to the zero matrix,
+  *          within the precision given by \a prec.
+  *
+  * Example: \include MatrixBase_isZero.cpp
+  * Output: \verbinclude MatrixBase_isZero.out
+  *
+  * \sa class CwiseNullaryOp, Zero()
+  */
+template<typename Derived>
+EIGEN_DEVICE_FUNC bool DenseBase<Derived>::isZero(const RealScalar& prec) const
+{
+  typename internal::nested_eval<Derived,1>::type self(derived());
+  for(Index j = 0; j < cols(); ++j)
+    for(Index i = 0; i < rows(); ++i)
+      if(!internal::isMuchSmallerThan(self.coeff(i, j), static_cast<Scalar>(1), prec))
+        return false;
+  return true;
+}
+
+/** Sets all coefficients in this expression to zero.
+  *
+  * Example: \include MatrixBase_setZero.cpp
+  * Output: \verbinclude MatrixBase_setZero.out
+  *
+  * \sa class CwiseNullaryOp, Zero()
+  */
+template<typename Derived>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived& DenseBase<Derived>::setZero()
+{
+  return setConstant(Scalar(0));
+}
+
+/** Resizes to the given \a size, and sets all coefficients in this expression to zero.
+  *
+  * \only_for_vectors
+  *
+  * Example: \include Matrix_setZero_int.cpp
+  * Output: \verbinclude Matrix_setZero_int.out
+  *
+  * \sa DenseBase::setZero(), setZero(Index,Index), class CwiseNullaryOp, DenseBase::Zero()
+  */
+template<typename Derived>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived&
+PlainObjectBase<Derived>::setZero(Index newSize)
+{
+  resize(newSize);
+  return setConstant(Scalar(0));
+}
+
+/** Resizes to the given size, and sets all coefficients in this expression to zero.
+  *
+  * \param rows the new number of rows
+  * \param cols the new number of columns
+  *
+  * Example: \include Matrix_setZero_int_int.cpp
+  * Output: \verbinclude Matrix_setZero_int_int.out
+  *
+  * \sa DenseBase::setZero(), setZero(Index), class CwiseNullaryOp, DenseBase::Zero()
+  */
+template<typename Derived>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived&
+PlainObjectBase<Derived>::setZero(Index rows, Index cols)
+{
+  resize(rows, cols);
+  return setConstant(Scalar(0));
+}
+
+// ones:
+
+/** \returns an expression of a matrix where all coefficients equal one.
+  *
+  * The parameters \a rows and \a cols are the number of rows and of columns of
+  * the returned matrix. Must be compatible with this MatrixBase type.
+  *
+  * This variant is meant to be used for dynamic-size matrix types. For fixed-size types,
+  * it is redundant to pass \a rows and \a cols as arguments, so Ones() should be used
+  * instead.
+  *
+  * Example: \include MatrixBase_ones_int_int.cpp
+  * Output: \verbinclude MatrixBase_ones_int_int.out
+  *
+  * \sa Ones(), Ones(Index), isOnes(), class Ones
+  */
+template<typename Derived>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const typename DenseBase<Derived>::ConstantReturnType
+DenseBase<Derived>::Ones(Index rows, Index cols)
+{
+  return Constant(rows, cols, Scalar(1));
+}
+
+/** \returns an expression of a vector where all coefficients equal one.
+  *
+  * The parameter \a newSize is the size of the returned vector.
+  * Must be compatible with this MatrixBase type.
+  *
+  * \only_for_vectors
+  *
+  * This variant is meant to be used for dynamic-size vector types. For fixed-size types,
+  * it is redundant to pass \a size as argument, so Ones() should be used
+  * instead.
+  *
+  * Example: \include MatrixBase_ones_int.cpp
+  * Output: \verbinclude MatrixBase_ones_int.out
+  *
+  * \sa Ones(), Ones(Index,Index), isOnes(), class Ones
+  */
+template<typename Derived>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const typename DenseBase<Derived>::ConstantReturnType
+DenseBase<Derived>::Ones(Index newSize)
+{
+  return Constant(newSize, Scalar(1));
+}
+
+/** \returns an expression of a fixed-size matrix or vector where all coefficients equal one.
+  *
+  * This variant is only for fixed-size MatrixBase types. For dynamic-size types, you
+  * need to use the variants taking size arguments.
+  *
+  * Example: \include MatrixBase_ones.cpp
+  * Output: \verbinclude MatrixBase_ones.out
+  *
+  * \sa Ones(Index), Ones(Index,Index), isOnes(), class Ones
+  */
+template<typename Derived>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const typename DenseBase<Derived>::ConstantReturnType
+DenseBase<Derived>::Ones()
+{
+  return Constant(Scalar(1));
+}
+
+/** \returns true if *this is approximately equal to the matrix where all coefficients
+  *          are equal to 1, within the precision given by \a prec.
+  *
+  * Example: \include MatrixBase_isOnes.cpp
+  * Output: \verbinclude MatrixBase_isOnes.out
+  *
+  * \sa class CwiseNullaryOp, Ones()
+  */
+template<typename Derived>
+EIGEN_DEVICE_FUNC bool DenseBase<Derived>::isOnes
+(const RealScalar& prec) const
+{
+  return isApproxToConstant(Scalar(1), prec);
+}
+
+/** Sets all coefficients in this expression to one.
+  *
+  * Example: \include MatrixBase_setOnes.cpp
+  * Output: \verbinclude MatrixBase_setOnes.out
+  *
+  * \sa class CwiseNullaryOp, Ones()
+  */
+template<typename Derived>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived& DenseBase<Derived>::setOnes()
+{
+  return setConstant(Scalar(1));
+}
+
+/** Resizes to the given \a newSize, and sets all coefficients in this expression to one.
+  *
+  * \only_for_vectors
+  *
+  * Example: \include Matrix_setOnes_int.cpp
+  * Output: \verbinclude Matrix_setOnes_int.out
+  *
+  * \sa MatrixBase::setOnes(), setOnes(Index,Index), class CwiseNullaryOp, MatrixBase::Ones()
+  */
+template<typename Derived>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived&
+PlainObjectBase<Derived>::setOnes(Index newSize)
+{
+  resize(newSize);
+  return setConstant(Scalar(1));
+}
+
+/** Resizes to the given size, and sets all coefficients in this expression to one.
+  *
+  * \param rows the new number of rows
+  * \param cols the new number of columns
+  *
+  * Example: \include Matrix_setOnes_int_int.cpp
+  * Output: \verbinclude Matrix_setOnes_int_int.out
+  *
+  * \sa MatrixBase::setOnes(), setOnes(Index), class CwiseNullaryOp, MatrixBase::Ones()
+  */
+template<typename Derived>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived&
+PlainObjectBase<Derived>::setOnes(Index rows, Index cols)
+{
+  resize(rows, cols);
+  return setConstant(Scalar(1));
+}
+
+// Identity:
+
+/** \returns an expression of the identity matrix (not necessarily square).
+  *
+  * The parameters \a rows and \a cols are the number of rows and of columns of
+  * the returned matrix. Must be compatible with this MatrixBase type.
+  *
+  * This variant is meant to be used for dynamic-size matrix types. For fixed-size types,
+  * it is redundant to pass \a rows and \a cols as arguments, so Identity() should be used
+  * instead.
+  *
+  * Example: \include MatrixBase_identity_int_int.cpp
+  * Output: \verbinclude MatrixBase_identity_int_int.out
+  *
+  * \sa Identity(), setIdentity(), isIdentity()
+  */
+template<typename Derived>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const typename MatrixBase<Derived>::IdentityReturnType
+MatrixBase<Derived>::Identity(Index rows, Index cols)
+{
+  return DenseBase<Derived>::NullaryExpr(rows, cols, internal::scalar_identity_op<Scalar>());
+}
+
+/** \returns an expression of the identity matrix (not necessarily square).
+  *
+  * This variant is only for fixed-size MatrixBase types. For dynamic-size types, you
+  * need to use the variant taking size arguments.
+  *
+  * Example: \include MatrixBase_identity.cpp
+  * Output: \verbinclude MatrixBase_identity.out
+  *
+  * \sa Identity(Index,Index), setIdentity(), isIdentity()
+  */
+template<typename Derived>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const typename MatrixBase<Derived>::IdentityReturnType
+MatrixBase<Derived>::Identity()
+{
+  EIGEN_STATIC_ASSERT_FIXED_SIZE(Derived)
+  return MatrixBase<Derived>::NullaryExpr(RowsAtCompileTime, ColsAtCompileTime, internal::scalar_identity_op<Scalar>());
+}
+
+/** \returns true if *this is approximately equal to the identity matrix
+  *          (not necessarily square),
+  *          within the precision given by \a prec.
+  *
+  * Example: \include MatrixBase_isIdentity.cpp
+  * Output: \verbinclude MatrixBase_isIdentity.out
+  *
+  * \sa class CwiseNullaryOp, Identity(), Identity(Index,Index), setIdentity()
+  */
+template<typename Derived>
+bool MatrixBase<Derived>::isIdentity
+(const RealScalar& prec) const
+{
+  typename internal::nested_eval<Derived,1>::type self(derived());
+  for(Index j = 0; j < cols(); ++j)
+  {
+    for(Index i = 0; i < rows(); ++i)
+    {
+      if(i == j)
+      {
+        if(!internal::isApprox(self.coeff(i, j), static_cast<Scalar>(1), prec))
+          return false;
+      }
+      else
+      {
+        if(!internal::isMuchSmallerThan(self.coeff(i, j), static_cast<RealScalar>(1), prec))
+          return false;
+      }
+    }
+  }
+  return true;
+}
+
+namespace internal {
+
+template<typename Derived, bool Big = (Derived::SizeAtCompileTime>=16)>
+struct setIdentity_impl
+{
+  EIGEN_DEVICE_FUNC
+  static EIGEN_STRONG_INLINE Derived& run(Derived& m)
+  {
+    return m = Derived::Identity(m.rows(), m.cols());
+  }
+};
+
+template<typename Derived>
+struct setIdentity_impl<Derived, true>
+{
+  EIGEN_DEVICE_FUNC
+  static EIGEN_STRONG_INLINE Derived& run(Derived& m)
+  {
+    m.setZero();
+    const Index size = numext::mini(m.rows(), m.cols());
+    for(Index i = 0; i < size; ++i) m.coeffRef(i,i) = typename Derived::Scalar(1);
+    return m;
+  }
+};
+
+} // end namespace internal
+
+/** Writes the identity expression (not necessarily square) into *this.
+  *
+  * Example: \include MatrixBase_setIdentity.cpp
+  * Output: \verbinclude MatrixBase_setIdentity.out
+  *
+  * \sa class CwiseNullaryOp, Identity(), Identity(Index,Index), isIdentity()
+  */
+template<typename Derived>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived& MatrixBase<Derived>::setIdentity()
+{
+  return internal::setIdentity_impl<Derived>::run(derived());
+}
+
+/** \brief Resizes to the given size, and writes the identity expression (not necessarily square) into *this.
+  *
+  * \param rows the new number of rows
+  * \param cols the new number of columns
+  *
+  * Example: \include Matrix_setIdentity_int_int.cpp
+  * Output: \verbinclude Matrix_setIdentity_int_int.out
+  *
+  * \sa MatrixBase::setIdentity(), class CwiseNullaryOp, MatrixBase::Identity()
+  */
+template<typename Derived>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived& MatrixBase<Derived>::setIdentity(Index rows, Index cols)
+{
+  derived().resize(rows, cols);
+  return setIdentity();
+}
+
+/** \returns an expression of the i-th unit (basis) vector.
+  *
+  * \only_for_vectors
+  *
+  * \sa MatrixBase::Unit(Index), MatrixBase::UnitX(), MatrixBase::UnitY(), MatrixBase::UnitZ(), MatrixBase::UnitW()
+  */
+template<typename Derived>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const typename MatrixBase<Derived>::BasisReturnType MatrixBase<Derived>::Unit(Index newSize, Index i)
+{
+  EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
+  return BasisReturnType(SquareMatrixType::Identity(newSize,newSize), i);
+}
+
+/** \returns an expression of the i-th unit (basis) vector.
+  *
+  * \only_for_vectors
+  *
+  * This variant is for fixed-size vector only.
+  *
+  * \sa MatrixBase::Unit(Index,Index), MatrixBase::UnitX(), MatrixBase::UnitY(), MatrixBase::UnitZ(), MatrixBase::UnitW()
+  */
+template<typename Derived>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const typename MatrixBase<Derived>::BasisReturnType MatrixBase<Derived>::Unit(Index i)
+{
+  EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
+  return BasisReturnType(SquareMatrixType::Identity(),i);
+}
+
+/** \returns an expression of the X axis unit vector (1{,0}^*)
+  *
+  * \only_for_vectors
+  *
+  * \sa MatrixBase::Unit(Index,Index), MatrixBase::Unit(Index), MatrixBase::UnitY(), MatrixBase::UnitZ(), MatrixBase::UnitW()
+  */
+template<typename Derived>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const typename MatrixBase<Derived>::BasisReturnType MatrixBase<Derived>::UnitX()
+{ return Derived::Unit(0); }
+
+/** \returns an expression of the Y axis unit vector (0,1{,0}^*)
+  *
+  * \only_for_vectors
+  *
+  * \sa MatrixBase::Unit(Index,Index), MatrixBase::Unit(Index), MatrixBase::UnitY(), MatrixBase::UnitZ(), MatrixBase::UnitW()
+  */
+template<typename Derived>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const typename MatrixBase<Derived>::BasisReturnType MatrixBase<Derived>::UnitY()
+{ return Derived::Unit(1); }
+
+/** \returns an expression of the Z axis unit vector (0,0,1{,0}^*)
+  *
+  * \only_for_vectors
+  *
+  * \sa MatrixBase::Unit(Index,Index), MatrixBase::Unit(Index), MatrixBase::UnitY(), MatrixBase::UnitZ(), MatrixBase::UnitW()
+  */
+template<typename Derived>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const typename MatrixBase<Derived>::BasisReturnType MatrixBase<Derived>::UnitZ()
+{ return Derived::Unit(2); }
+
+/** \returns an expression of the W axis unit vector (0,0,0,1)
+  *
+  * \only_for_vectors
+  *
+  * \sa MatrixBase::Unit(Index,Index), MatrixBase::Unit(Index), MatrixBase::UnitY(), MatrixBase::UnitZ(), MatrixBase::UnitW()
+  */
+template<typename Derived>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const typename MatrixBase<Derived>::BasisReturnType MatrixBase<Derived>::UnitW()
+{ return Derived::Unit(3); }
+
+} // end namespace Eigen
+
+#endif // EIGEN_CWISE_NULLARY_OP_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/Product.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/Product.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/Product.h	(revision 3762)
@@ -0,0 +1,186 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2008-2011 Gael Guennebaud <gael.guennebaud@inria.fr>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_PRODUCT_H
+#define EIGEN_PRODUCT_H
+
+namespace Eigen {
+
+template<typename Lhs, typename Rhs, int Option, typename StorageKind> class ProductImpl;
+
+namespace internal {
+
+template<typename Lhs, typename Rhs, int Option>
+struct traits<Product<Lhs, Rhs, Option> >
+{
+  typedef typename remove_all<Lhs>::type LhsCleaned;
+  typedef typename remove_all<Rhs>::type RhsCleaned;
+  typedef traits<LhsCleaned> LhsTraits;
+  typedef traits<RhsCleaned> RhsTraits;
+  
+  typedef MatrixXpr XprKind;
+  
+  typedef typename ScalarBinaryOpTraits<typename traits<LhsCleaned>::Scalar, typename traits<RhsCleaned>::Scalar>::ReturnType Scalar;
+  typedef typename product_promote_storage_type<typename LhsTraits::StorageKind,
+                                                typename RhsTraits::StorageKind,
+                                                internal::product_type<Lhs,Rhs>::ret>::ret StorageKind;
+  typedef typename promote_index_type<typename LhsTraits::StorageIndex,
+                                      typename RhsTraits::StorageIndex>::type StorageIndex;
+  
+  enum {
+    RowsAtCompileTime    = LhsTraits::RowsAtCompileTime,
+    ColsAtCompileTime    = RhsTraits::ColsAtCompileTime,
+    MaxRowsAtCompileTime = LhsTraits::MaxRowsAtCompileTime,
+    MaxColsAtCompileTime = RhsTraits::MaxColsAtCompileTime,
+    
+    // FIXME: only needed by GeneralMatrixMatrixTriangular
+    InnerSize = EIGEN_SIZE_MIN_PREFER_FIXED(LhsTraits::ColsAtCompileTime, RhsTraits::RowsAtCompileTime),
+    
+    // The storage order is somewhat arbitrary here. The correct one will be determined through the evaluator.
+    Flags = (MaxRowsAtCompileTime==1 && MaxColsAtCompileTime!=1) ? RowMajorBit
+          : (MaxColsAtCompileTime==1 && MaxRowsAtCompileTime!=1) ? 0
+          : (   ((LhsTraits::Flags&NoPreferredStorageOrderBit) && (RhsTraits::Flags&RowMajorBit))
+             || ((RhsTraits::Flags&NoPreferredStorageOrderBit) && (LhsTraits::Flags&RowMajorBit)) ) ? RowMajorBit
+          : NoPreferredStorageOrderBit
+  };
+};
+
+} // end namespace internal
+
+/** \class Product
+  * \ingroup Core_Module
+  *
+  * \brief Expression of the product of two arbitrary matrices or vectors
+  *
+  * \tparam _Lhs the type of the left-hand side expression
+  * \tparam _Rhs the type of the right-hand side expression
+  *
+  * This class represents an expression of the product of two arbitrary matrices.
+  *
+  * The other template parameters are:
+  * \tparam Option     can be DefaultProduct, AliasFreeProduct, or LazyProduct
+  *
+  */
+template<typename _Lhs, typename _Rhs, int Option>
+class Product : public ProductImpl<_Lhs,_Rhs,Option,
+                                   typename internal::product_promote_storage_type<typename internal::traits<_Lhs>::StorageKind,
+                                                                                   typename internal::traits<_Rhs>::StorageKind,
+                                                                                   internal::product_type<_Lhs,_Rhs>::ret>::ret>
+{
+  public:
+    
+    typedef _Lhs Lhs;
+    typedef _Rhs Rhs;
+    
+    typedef typename ProductImpl<
+        Lhs, Rhs, Option,
+        typename internal::product_promote_storage_type<typename internal::traits<Lhs>::StorageKind,
+                                                        typename internal::traits<Rhs>::StorageKind,
+                                                        internal::product_type<Lhs,Rhs>::ret>::ret>::Base Base;
+    EIGEN_GENERIC_PUBLIC_INTERFACE(Product)
+
+    typedef typename internal::ref_selector<Lhs>::type LhsNested;
+    typedef typename internal::ref_selector<Rhs>::type RhsNested;
+    typedef typename internal::remove_all<LhsNested>::type LhsNestedCleaned;
+    typedef typename internal::remove_all<RhsNested>::type RhsNestedCleaned;
+
+    EIGEN_DEVICE_FUNC Product(const Lhs& lhs, const Rhs& rhs) : m_lhs(lhs), m_rhs(rhs)
+    {
+      eigen_assert(lhs.cols() == rhs.rows()
+        && "invalid matrix product"
+        && "if you wanted a coeff-wise or a dot product use the respective explicit functions");
+    }
+
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Index rows() const { return m_lhs.rows(); }
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Index cols() const { return m_rhs.cols(); }
+
+    EIGEN_DEVICE_FUNC const LhsNestedCleaned& lhs() const { return m_lhs; }
+    EIGEN_DEVICE_FUNC const RhsNestedCleaned& rhs() const { return m_rhs; }
+
+  protected:
+
+    LhsNested m_lhs;
+    RhsNested m_rhs;
+};
+
+namespace internal {
+  
+template<typename Lhs, typename Rhs, int Option, int ProductTag = internal::product_type<Lhs,Rhs>::ret>
+class dense_product_base
+ : public internal::dense_xpr_base<Product<Lhs,Rhs,Option> >::type
+{};
+
+/** Convertion to scalar for inner-products */
+template<typename Lhs, typename Rhs, int Option>
+class dense_product_base<Lhs, Rhs, Option, InnerProduct>
+ : public internal::dense_xpr_base<Product<Lhs,Rhs,Option> >::type
+{
+  typedef Product<Lhs,Rhs,Option> ProductXpr;
+  typedef typename internal::dense_xpr_base<ProductXpr>::type Base;
+public:
+  using Base::derived;
+  typedef typename Base::Scalar Scalar;
+  
+  EIGEN_STRONG_INLINE operator const Scalar() const
+  {
+    return internal::evaluator<ProductXpr>(derived()).coeff(0,0);
+  }
+};
+
+} // namespace internal
+
+// Generic API dispatcher
+template<typename Lhs, typename Rhs, int Option, typename StorageKind>
+class ProductImpl : public internal::generic_xpr_base<Product<Lhs,Rhs,Option>, MatrixXpr, StorageKind>::type
+{
+  public:
+    typedef typename internal::generic_xpr_base<Product<Lhs,Rhs,Option>, MatrixXpr, StorageKind>::type Base;
+};
+
+template<typename Lhs, typename Rhs, int Option>
+class ProductImpl<Lhs,Rhs,Option,Dense>
+  : public internal::dense_product_base<Lhs,Rhs,Option>
+{
+    typedef Product<Lhs, Rhs, Option> Derived;
+    
+  public:
+    
+    typedef typename internal::dense_product_base<Lhs, Rhs, Option> Base;
+    EIGEN_DENSE_PUBLIC_INTERFACE(Derived)
+  protected:
+    enum {
+      IsOneByOne = (RowsAtCompileTime == 1 || RowsAtCompileTime == Dynamic) && 
+                   (ColsAtCompileTime == 1 || ColsAtCompileTime == Dynamic),
+      EnableCoeff = IsOneByOne || Option==LazyProduct
+    };
+    
+  public:
+  
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar coeff(Index row, Index col) const
+    {
+      EIGEN_STATIC_ASSERT(EnableCoeff, THIS_METHOD_IS_ONLY_FOR_INNER_OR_LAZY_PRODUCTS);
+      eigen_assert( (Option==LazyProduct) || (this->rows() == 1 && this->cols() == 1) );
+      
+      return internal::evaluator<Derived>(derived()).coeff(row,col);
+    }
+
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar coeff(Index i) const
+    {
+      EIGEN_STATIC_ASSERT(EnableCoeff, THIS_METHOD_IS_ONLY_FOR_INNER_OR_LAZY_PRODUCTS);
+      eigen_assert( (Option==LazyProduct) || (this->rows() == 1 && this->cols() == 1) );
+      
+      return internal::evaluator<Derived>(derived()).coeff(i);
+    }
+    
+  
+};
+
+} // end namespace Eigen
+
+#endif // EIGEN_PRODUCT_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/MathFunctions.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/MathFunctions.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/MathFunctions.h	(revision 3762)
@@ -0,0 +1,1421 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2006-2010 Benoit Jacob <jacob.benoit.1@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_MATHFUNCTIONS_H
+#define EIGEN_MATHFUNCTIONS_H
+
+// source: http://www.geom.uiuc.edu/~huberty/math5337/groupe/digits.html
+// TODO this should better be moved to NumTraits
+#define EIGEN_PI 3.141592653589793238462643383279502884197169399375105820974944592307816406L
+
+
+namespace Eigen {
+
+// On WINCE, std::abs is defined for int only, so let's defined our own overloads:
+// This issue has been confirmed with MSVC 2008 only, but the issue might exist for more recent versions too.
+#if EIGEN_OS_WINCE && EIGEN_COMP_MSVC && EIGEN_COMP_MSVC<=1500
+long        abs(long        x) { return (labs(x));  }
+double      abs(double      x) { return (fabs(x));  }
+float       abs(float       x) { return (fabsf(x)); }
+long double abs(long double x) { return (fabsl(x)); }
+#endif
+
+namespace internal {
+
+/** \internal \class global_math_functions_filtering_base
+  *
+  * What it does:
+  * Defines a typedef 'type' as follows:
+  * - if type T has a member typedef Eigen_BaseClassForSpecializationOfGlobalMathFuncImpl, then
+  *   global_math_functions_filtering_base<T>::type is a typedef for it.
+  * - otherwise, global_math_functions_filtering_base<T>::type is a typedef for T.
+  *
+  * How it's used:
+  * To allow to defined the global math functions (like sin...) in certain cases, like the Array expressions.
+  * When you do sin(array1+array2), the object array1+array2 has a complicated expression type, all what you want to know
+  * is that it inherits ArrayBase. So we implement a partial specialization of sin_impl for ArrayBase<Derived>.
+  * So we must make sure to use sin_impl<ArrayBase<Derived> > and not sin_impl<Derived>, otherwise our partial specialization
+  * won't be used. How does sin know that? That's exactly what global_math_functions_filtering_base tells it.
+  *
+  * How it's implemented:
+  * SFINAE in the style of enable_if. Highly susceptible of breaking compilers. With GCC, it sure does work, but if you replace
+  * the typename dummy by an integer template parameter, it doesn't work anymore!
+  */
+
+template<typename T, typename dummy = void>
+struct global_math_functions_filtering_base
+{
+  typedef T type;
+};
+
+template<typename T> struct always_void { typedef void type; };
+
+template<typename T>
+struct global_math_functions_filtering_base
+  <T,
+   typename always_void<typename T::Eigen_BaseClassForSpecializationOfGlobalMathFuncImpl>::type
+  >
+{
+  typedef typename T::Eigen_BaseClassForSpecializationOfGlobalMathFuncImpl type;
+};
+
+#define EIGEN_MATHFUNC_IMPL(func, scalar) Eigen::internal::func##_impl<typename Eigen::internal::global_math_functions_filtering_base<scalar>::type>
+#define EIGEN_MATHFUNC_RETVAL(func, scalar) typename Eigen::internal::func##_retval<typename Eigen::internal::global_math_functions_filtering_base<scalar>::type>::type
+
+/****************************************************************************
+* Implementation of real                                                 *
+****************************************************************************/
+
+template<typename Scalar, bool IsComplex = NumTraits<Scalar>::IsComplex>
+struct real_default_impl
+{
+  typedef typename NumTraits<Scalar>::Real RealScalar;
+  EIGEN_DEVICE_FUNC
+  static inline RealScalar run(const Scalar& x)
+  {
+    return x;
+  }
+};
+
+template<typename Scalar>
+struct real_default_impl<Scalar,true>
+{
+  typedef typename NumTraits<Scalar>::Real RealScalar;
+  EIGEN_DEVICE_FUNC
+  static inline RealScalar run(const Scalar& x)
+  {
+    using std::real;
+    return real(x);
+  }
+};
+
+template<typename Scalar> struct real_impl : real_default_impl<Scalar> {};
+
+#ifdef __CUDA_ARCH__
+template<typename T>
+struct real_impl<std::complex<T> >
+{
+  typedef T RealScalar;
+  EIGEN_DEVICE_FUNC
+  static inline T run(const std::complex<T>& x)
+  {
+    return x.real();
+  }
+};
+#endif
+
+template<typename Scalar>
+struct real_retval
+{
+  typedef typename NumTraits<Scalar>::Real type;
+};
+
+/****************************************************************************
+* Implementation of imag                                                 *
+****************************************************************************/
+
+template<typename Scalar, bool IsComplex = NumTraits<Scalar>::IsComplex>
+struct imag_default_impl
+{
+  typedef typename NumTraits<Scalar>::Real RealScalar;
+  EIGEN_DEVICE_FUNC
+  static inline RealScalar run(const Scalar&)
+  {
+    return RealScalar(0);
+  }
+};
+
+template<typename Scalar>
+struct imag_default_impl<Scalar,true>
+{
+  typedef typename NumTraits<Scalar>::Real RealScalar;
+  EIGEN_DEVICE_FUNC
+  static inline RealScalar run(const Scalar& x)
+  {
+    using std::imag;
+    return imag(x);
+  }
+};
+
+template<typename Scalar> struct imag_impl : imag_default_impl<Scalar> {};
+
+#ifdef __CUDA_ARCH__
+template<typename T>
+struct imag_impl<std::complex<T> >
+{
+  typedef T RealScalar;
+  EIGEN_DEVICE_FUNC
+  static inline T run(const std::complex<T>& x)
+  {
+    return x.imag();
+  }
+};
+#endif
+
+template<typename Scalar>
+struct imag_retval
+{
+  typedef typename NumTraits<Scalar>::Real type;
+};
+
+/****************************************************************************
+* Implementation of real_ref                                             *
+****************************************************************************/
+
+template<typename Scalar>
+struct real_ref_impl
+{
+  typedef typename NumTraits<Scalar>::Real RealScalar;
+  EIGEN_DEVICE_FUNC
+  static inline RealScalar& run(Scalar& x)
+  {
+    return reinterpret_cast<RealScalar*>(&x)[0];
+  }
+  EIGEN_DEVICE_FUNC
+  static inline const RealScalar& run(const Scalar& x)
+  {
+    return reinterpret_cast<const RealScalar*>(&x)[0];
+  }
+};
+
+template<typename Scalar>
+struct real_ref_retval
+{
+  typedef typename NumTraits<Scalar>::Real & type;
+};
+
+/****************************************************************************
+* Implementation of imag_ref                                             *
+****************************************************************************/
+
+template<typename Scalar, bool IsComplex>
+struct imag_ref_default_impl
+{
+  typedef typename NumTraits<Scalar>::Real RealScalar;
+  EIGEN_DEVICE_FUNC
+  static inline RealScalar& run(Scalar& x)
+  {
+    return reinterpret_cast<RealScalar*>(&x)[1];
+  }
+  EIGEN_DEVICE_FUNC
+  static inline const RealScalar& run(const Scalar& x)
+  {
+    return reinterpret_cast<RealScalar*>(&x)[1];
+  }
+};
+
+template<typename Scalar>
+struct imag_ref_default_impl<Scalar, false>
+{
+  EIGEN_DEVICE_FUNC
+  static inline Scalar run(Scalar&)
+  {
+    return Scalar(0);
+  }
+  EIGEN_DEVICE_FUNC
+  static inline const Scalar run(const Scalar&)
+  {
+    return Scalar(0);
+  }
+};
+
+template<typename Scalar>
+struct imag_ref_impl : imag_ref_default_impl<Scalar, NumTraits<Scalar>::IsComplex> {};
+
+template<typename Scalar>
+struct imag_ref_retval
+{
+  typedef typename NumTraits<Scalar>::Real & type;
+};
+
+/****************************************************************************
+* Implementation of conj                                                 *
+****************************************************************************/
+
+template<typename Scalar, bool IsComplex = NumTraits<Scalar>::IsComplex>
+struct conj_impl
+{
+  EIGEN_DEVICE_FUNC
+  static inline Scalar run(const Scalar& x)
+  {
+    return x;
+  }
+};
+
+template<typename Scalar>
+struct conj_impl<Scalar,true>
+{
+  EIGEN_DEVICE_FUNC
+  static inline Scalar run(const Scalar& x)
+  {
+    using std::conj;
+    return conj(x);
+  }
+};
+
+template<typename Scalar>
+struct conj_retval
+{
+  typedef Scalar type;
+};
+
+/****************************************************************************
+* Implementation of abs2                                                 *
+****************************************************************************/
+
+template<typename Scalar,bool IsComplex>
+struct abs2_impl_default
+{
+  typedef typename NumTraits<Scalar>::Real RealScalar;
+  EIGEN_DEVICE_FUNC
+  static inline RealScalar run(const Scalar& x)
+  {
+    return x*x;
+  }
+};
+
+template<typename Scalar>
+struct abs2_impl_default<Scalar, true> // IsComplex
+{
+  typedef typename NumTraits<Scalar>::Real RealScalar;
+  EIGEN_DEVICE_FUNC
+  static inline RealScalar run(const Scalar& x)
+  {
+    return x.real()*x.real() + x.imag()*x.imag();
+  }
+};
+
+template<typename Scalar>
+struct abs2_impl
+{
+  typedef typename NumTraits<Scalar>::Real RealScalar;
+  EIGEN_DEVICE_FUNC
+  static inline RealScalar run(const Scalar& x)
+  {
+    return abs2_impl_default<Scalar,NumTraits<Scalar>::IsComplex>::run(x);
+  }
+};
+
+template<typename Scalar>
+struct abs2_retval
+{
+  typedef typename NumTraits<Scalar>::Real type;
+};
+
+/****************************************************************************
+* Implementation of norm1                                                *
+****************************************************************************/
+
+template<typename Scalar, bool IsComplex>
+struct norm1_default_impl;
+
+template<typename Scalar>
+struct norm1_default_impl<Scalar,true>
+{
+  typedef typename NumTraits<Scalar>::Real RealScalar;
+  EIGEN_DEVICE_FUNC
+  static inline RealScalar run(const Scalar& x)
+  {
+    EIGEN_USING_STD_MATH(abs);
+    return abs(x.real()) + abs(x.imag());
+  }
+};
+
+template<typename Scalar>
+struct norm1_default_impl<Scalar, false>
+{
+  EIGEN_DEVICE_FUNC
+  static inline Scalar run(const Scalar& x)
+  {
+    EIGEN_USING_STD_MATH(abs);
+    return abs(x);
+  }
+};
+
+template<typename Scalar>
+struct norm1_impl : norm1_default_impl<Scalar, NumTraits<Scalar>::IsComplex> {};
+
+template<typename Scalar>
+struct norm1_retval
+{
+  typedef typename NumTraits<Scalar>::Real type;
+};
+
+/****************************************************************************
+* Implementation of hypot                                                *
+****************************************************************************/
+
+template<typename Scalar> struct hypot_impl;
+
+template<typename Scalar>
+struct hypot_retval
+{
+  typedef typename NumTraits<Scalar>::Real type;
+};
+
+/****************************************************************************
+* Implementation of cast                                                 *
+****************************************************************************/
+
+template<typename OldType, typename NewType>
+struct cast_impl
+{
+  EIGEN_DEVICE_FUNC
+  static inline NewType run(const OldType& x)
+  {
+    return static_cast<NewType>(x);
+  }
+};
+
+// here, for once, we're plainly returning NewType: we don't want cast to do weird things.
+
+template<typename OldType, typename NewType>
+EIGEN_DEVICE_FUNC
+inline NewType cast(const OldType& x)
+{
+  return cast_impl<OldType, NewType>::run(x);
+}
+
+/****************************************************************************
+* Implementation of round                                                   *
+****************************************************************************/
+
+#if EIGEN_HAS_CXX11_MATH
+  template<typename Scalar>
+  struct round_impl {
+    static inline Scalar run(const Scalar& x)
+    {
+      EIGEN_STATIC_ASSERT((!NumTraits<Scalar>::IsComplex), NUMERIC_TYPE_MUST_BE_REAL)
+      using std::round;
+      return round(x);
+    }
+  };
+#else
+  template<typename Scalar>
+  struct round_impl
+  {
+    static inline Scalar run(const Scalar& x)
+    {
+      EIGEN_STATIC_ASSERT((!NumTraits<Scalar>::IsComplex), NUMERIC_TYPE_MUST_BE_REAL)
+      EIGEN_USING_STD_MATH(floor);
+      EIGEN_USING_STD_MATH(ceil);
+      return (x > Scalar(0)) ? floor(x + Scalar(0.5)) : ceil(x - Scalar(0.5));
+    }
+  };
+#endif
+
+template<typename Scalar>
+struct round_retval
+{
+  typedef Scalar type;
+};
+
+/****************************************************************************
+* Implementation of arg                                                     *
+****************************************************************************/
+
+#if EIGEN_HAS_CXX11_MATH
+  template<typename Scalar>
+  struct arg_impl {
+    static inline Scalar run(const Scalar& x)
+    {
+      EIGEN_USING_STD_MATH(arg);
+      return arg(x);
+    }
+  };
+#else
+  template<typename Scalar, bool IsComplex = NumTraits<Scalar>::IsComplex>
+  struct arg_default_impl
+  {
+    typedef typename NumTraits<Scalar>::Real RealScalar;
+    EIGEN_DEVICE_FUNC
+    static inline RealScalar run(const Scalar& x)
+    {
+      return (x < Scalar(0)) ? Scalar(EIGEN_PI) : Scalar(0); }
+  };
+
+  template<typename Scalar>
+  struct arg_default_impl<Scalar,true>
+  {
+    typedef typename NumTraits<Scalar>::Real RealScalar;
+    EIGEN_DEVICE_FUNC
+    static inline RealScalar run(const Scalar& x)
+    {
+      EIGEN_USING_STD_MATH(arg);
+      return arg(x);
+    }
+  };
+
+  template<typename Scalar> struct arg_impl : arg_default_impl<Scalar> {};
+#endif
+
+template<typename Scalar>
+struct arg_retval
+{
+  typedef typename NumTraits<Scalar>::Real type;
+};
+
+/****************************************************************************
+* Implementation of log1p                                                   *
+****************************************************************************/
+
+namespace std_fallback {
+  // fallback log1p implementation in case there is no log1p(Scalar) function in namespace of Scalar,
+  // or that there is no suitable std::log1p function available
+  template<typename Scalar>
+  EIGEN_DEVICE_FUNC inline Scalar log1p(const Scalar& x) {
+    EIGEN_STATIC_ASSERT_NON_INTEGER(Scalar)
+    typedef typename NumTraits<Scalar>::Real RealScalar;
+    EIGEN_USING_STD_MATH(log);
+    Scalar x1p = RealScalar(1) + x;
+    return numext::equal_strict(x1p, Scalar(1)) ? x : x * ( log(x1p) / (x1p - RealScalar(1)) );
+  }
+}
+
+template<typename Scalar>
+struct log1p_impl {
+  static inline Scalar run(const Scalar& x)
+  {
+    EIGEN_STATIC_ASSERT_NON_INTEGER(Scalar)
+    #if EIGEN_HAS_CXX11_MATH
+    using std::log1p;
+    #endif
+    using std_fallback::log1p;
+    return log1p(x);
+  }
+};
+
+
+template<typename Scalar>
+struct log1p_retval
+{
+  typedef Scalar type;
+};
+
+/****************************************************************************
+* Implementation of pow                                                  *
+****************************************************************************/
+
+template<typename ScalarX,typename ScalarY, bool IsInteger = NumTraits<ScalarX>::IsInteger&&NumTraits<ScalarY>::IsInteger>
+struct pow_impl
+{
+  //typedef Scalar retval;
+  typedef typename ScalarBinaryOpTraits<ScalarX,ScalarY,internal::scalar_pow_op<ScalarX,ScalarY> >::ReturnType result_type;
+  static EIGEN_DEVICE_FUNC inline result_type run(const ScalarX& x, const ScalarY& y)
+  {
+    EIGEN_USING_STD_MATH(pow);
+    return pow(x, y);
+  }
+};
+
+template<typename ScalarX,typename ScalarY>
+struct pow_impl<ScalarX,ScalarY, true>
+{
+  typedef ScalarX result_type;
+  static EIGEN_DEVICE_FUNC inline ScalarX run(ScalarX x, ScalarY y)
+  {
+    ScalarX res(1);
+    eigen_assert(!NumTraits<ScalarY>::IsSigned || y >= 0);
+    if(y & 1) res *= x;
+    y >>= 1;
+    while(y)
+    {
+      x *= x;
+      if(y&1) res *= x;
+      y >>= 1;
+    }
+    return res;
+  }
+};
+
+/****************************************************************************
+* Implementation of random                                               *
+****************************************************************************/
+
+template<typename Scalar,
+         bool IsComplex,
+         bool IsInteger>
+struct random_default_impl {};
+
+template<typename Scalar>
+struct random_impl : random_default_impl<Scalar, NumTraits<Scalar>::IsComplex, NumTraits<Scalar>::IsInteger> {};
+
+template<typename Scalar>
+struct random_retval
+{
+  typedef Scalar type;
+};
+
+template<typename Scalar> inline EIGEN_MATHFUNC_RETVAL(random, Scalar) random(const Scalar& x, const Scalar& y);
+template<typename Scalar> inline EIGEN_MATHFUNC_RETVAL(random, Scalar) random();
+
+template<typename Scalar>
+struct random_default_impl<Scalar, false, false>
+{
+  static inline Scalar run(const Scalar& x, const Scalar& y)
+  {
+    return x + (y-x) * Scalar(std::rand()) / Scalar(RAND_MAX);
+  }
+  static inline Scalar run()
+  {
+    return run(Scalar(NumTraits<Scalar>::IsSigned ? -1 : 0), Scalar(1));
+  }
+};
+
+enum {
+  meta_floor_log2_terminate,
+  meta_floor_log2_move_up,
+  meta_floor_log2_move_down,
+  meta_floor_log2_bogus
+};
+
+template<unsigned int n, int lower, int upper> struct meta_floor_log2_selector
+{
+  enum { middle = (lower + upper) / 2,
+         value = (upper <= lower + 1) ? int(meta_floor_log2_terminate)
+               : (n < (1 << middle)) ? int(meta_floor_log2_move_down)
+               : (n==0) ? int(meta_floor_log2_bogus)
+               : int(meta_floor_log2_move_up)
+  };
+};
+
+template<unsigned int n,
+         int lower = 0,
+         int upper = sizeof(unsigned int) * CHAR_BIT - 1,
+         int selector = meta_floor_log2_selector<n, lower, upper>::value>
+struct meta_floor_log2 {};
+
+template<unsigned int n, int lower, int upper>
+struct meta_floor_log2<n, lower, upper, meta_floor_log2_move_down>
+{
+  enum { value = meta_floor_log2<n, lower, meta_floor_log2_selector<n, lower, upper>::middle>::value };
+};
+
+template<unsigned int n, int lower, int upper>
+struct meta_floor_log2<n, lower, upper, meta_floor_log2_move_up>
+{
+  enum { value = meta_floor_log2<n, meta_floor_log2_selector<n, lower, upper>::middle, upper>::value };
+};
+
+template<unsigned int n, int lower, int upper>
+struct meta_floor_log2<n, lower, upper, meta_floor_log2_terminate>
+{
+  enum { value = (n >= ((unsigned int)(1) << (lower+1))) ? lower+1 : lower };
+};
+
+template<unsigned int n, int lower, int upper>
+struct meta_floor_log2<n, lower, upper, meta_floor_log2_bogus>
+{
+  // no value, error at compile time
+};
+
+template<typename Scalar>
+struct random_default_impl<Scalar, false, true>
+{
+  static inline Scalar run(const Scalar& x, const Scalar& y)
+  {
+    if (y <= x)
+      return x;
+    // ScalarU is the unsigned counterpart of Scalar, possibly Scalar itself.
+    typedef typename make_unsigned<Scalar>::type ScalarU;
+    // ScalarX is the widest of ScalarU and unsigned int.
+    // We'll deal only with ScalarX and unsigned int below thus avoiding signed
+    // types and arithmetic and signed overflows (which are undefined behavior).
+    typedef typename conditional<(ScalarU(-1) > unsigned(-1)), ScalarU, unsigned>::type ScalarX;
+    // The following difference doesn't overflow, provided our integer types are two's
+    // complement and have the same number of padding bits in signed and unsigned variants.
+    // This is the case in most modern implementations of C++.
+    ScalarX range = ScalarX(y) - ScalarX(x);
+    ScalarX offset = 0;
+    ScalarX divisor = 1;
+    ScalarX multiplier = 1;
+    const unsigned rand_max = RAND_MAX;
+    if (range <= rand_max) divisor = (rand_max + 1) / (range + 1);
+    else                   multiplier = 1 + range / (rand_max + 1);
+    // Rejection sampling.
+    do {
+      offset = (unsigned(std::rand()) * multiplier) / divisor;
+    } while (offset > range);
+    return Scalar(ScalarX(x) + offset);
+  }
+
+  static inline Scalar run()
+  {
+#ifdef EIGEN_MAKING_DOCS
+    return run(Scalar(NumTraits<Scalar>::IsSigned ? -10 : 0), Scalar(10));
+#else
+    enum { rand_bits = meta_floor_log2<(unsigned int)(RAND_MAX)+1>::value,
+           scalar_bits = sizeof(Scalar) * CHAR_BIT,
+           shift = EIGEN_PLAIN_ENUM_MAX(0, int(rand_bits) - int(scalar_bits)),
+           offset = NumTraits<Scalar>::IsSigned ? (1 << (EIGEN_PLAIN_ENUM_MIN(rand_bits,scalar_bits)-1)) : 0
+    };
+    return Scalar((std::rand() >> shift) - offset);
+#endif
+  }
+};
+
+template<typename Scalar>
+struct random_default_impl<Scalar, true, false>
+{
+  static inline Scalar run(const Scalar& x, const Scalar& y)
+  {
+    return Scalar(random(x.real(), y.real()),
+                  random(x.imag(), y.imag()));
+  }
+  static inline Scalar run()
+  {
+    typedef typename NumTraits<Scalar>::Real RealScalar;
+    return Scalar(random<RealScalar>(), random<RealScalar>());
+  }
+};
+
+template<typename Scalar>
+inline EIGEN_MATHFUNC_RETVAL(random, Scalar) random(const Scalar& x, const Scalar& y)
+{
+  return EIGEN_MATHFUNC_IMPL(random, Scalar)::run(x, y);
+}
+
+template<typename Scalar>
+inline EIGEN_MATHFUNC_RETVAL(random, Scalar) random()
+{
+  return EIGEN_MATHFUNC_IMPL(random, Scalar)::run();
+}
+
+// Implementatin of is* functions
+
+// std::is* do not work with fast-math and gcc, std::is* are available on MSVC 2013 and newer, as well as in clang.
+#if (EIGEN_HAS_CXX11_MATH && !(EIGEN_COMP_GNUC_STRICT && __FINITE_MATH_ONLY__)) || (EIGEN_COMP_MSVC>=1800) || (EIGEN_COMP_CLANG)
+#define EIGEN_USE_STD_FPCLASSIFY 1
+#else
+#define EIGEN_USE_STD_FPCLASSIFY 0
+#endif
+
+template<typename T>
+EIGEN_DEVICE_FUNC
+typename internal::enable_if<internal::is_integral<T>::value,bool>::type
+isnan_impl(const T&) { return false; }
+
+template<typename T>
+EIGEN_DEVICE_FUNC
+typename internal::enable_if<internal::is_integral<T>::value,bool>::type
+isinf_impl(const T&) { return false; }
+
+template<typename T>
+EIGEN_DEVICE_FUNC
+typename internal::enable_if<internal::is_integral<T>::value,bool>::type
+isfinite_impl(const T&) { return true; }
+
+template<typename T>
+EIGEN_DEVICE_FUNC
+typename internal::enable_if<(!internal::is_integral<T>::value)&&(!NumTraits<T>::IsComplex),bool>::type
+isfinite_impl(const T& x)
+{
+  #ifdef __CUDA_ARCH__
+    return (::isfinite)(x);
+  #elif EIGEN_USE_STD_FPCLASSIFY
+    using std::isfinite;
+    return isfinite EIGEN_NOT_A_MACRO (x);
+  #else
+    return x<=NumTraits<T>::highest() && x>=NumTraits<T>::lowest();
+  #endif
+}
+
+template<typename T>
+EIGEN_DEVICE_FUNC
+typename internal::enable_if<(!internal::is_integral<T>::value)&&(!NumTraits<T>::IsComplex),bool>::type
+isinf_impl(const T& x)
+{
+  #ifdef __CUDA_ARCH__
+    return (::isinf)(x);
+  #elif EIGEN_USE_STD_FPCLASSIFY
+    using std::isinf;
+    return isinf EIGEN_NOT_A_MACRO (x);
+  #else
+    return x>NumTraits<T>::highest() || x<NumTraits<T>::lowest();
+  #endif
+}
+
+template<typename T>
+EIGEN_DEVICE_FUNC
+typename internal::enable_if<(!internal::is_integral<T>::value)&&(!NumTraits<T>::IsComplex),bool>::type
+isnan_impl(const T& x)
+{
+  #ifdef __CUDA_ARCH__
+    return (::isnan)(x);
+  #elif EIGEN_USE_STD_FPCLASSIFY
+    using std::isnan;
+    return isnan EIGEN_NOT_A_MACRO (x);
+  #else
+    return x != x;
+  #endif
+}
+
+#if (!EIGEN_USE_STD_FPCLASSIFY)
+
+#if EIGEN_COMP_MSVC
+
+template<typename T> EIGEN_DEVICE_FUNC bool isinf_msvc_helper(T x)
+{
+  return _fpclass(x)==_FPCLASS_NINF || _fpclass(x)==_FPCLASS_PINF;
+}
+
+//MSVC defines a _isnan builtin function, but for double only
+EIGEN_DEVICE_FUNC inline bool isnan_impl(const long double& x) { return _isnan(x)!=0; }
+EIGEN_DEVICE_FUNC inline bool isnan_impl(const double& x)      { return _isnan(x)!=0; }
+EIGEN_DEVICE_FUNC inline bool isnan_impl(const float& x)       { return _isnan(x)!=0; }
+
+EIGEN_DEVICE_FUNC inline bool isinf_impl(const long double& x) { return isinf_msvc_helper(x); }
+EIGEN_DEVICE_FUNC inline bool isinf_impl(const double& x)      { return isinf_msvc_helper(x); }
+EIGEN_DEVICE_FUNC inline bool isinf_impl(const float& x)       { return isinf_msvc_helper(x); }
+
+#elif (defined __FINITE_MATH_ONLY__ && __FINITE_MATH_ONLY__ && EIGEN_COMP_GNUC)
+
+#if EIGEN_GNUC_AT_LEAST(5,0)
+  #define EIGEN_TMP_NOOPT_ATTRIB EIGEN_DEVICE_FUNC inline __attribute__((optimize("no-finite-math-only")))
+#else
+  // NOTE the inline qualifier and noinline attribute are both needed: the former is to avoid linking issue (duplicate symbol),
+  //      while the second prevent too aggressive optimizations in fast-math mode:
+  #define EIGEN_TMP_NOOPT_ATTRIB EIGEN_DEVICE_FUNC inline __attribute__((noinline,optimize("no-finite-math-only")))
+#endif
+
+template<> EIGEN_TMP_NOOPT_ATTRIB bool isnan_impl(const long double& x) { return __builtin_isnan(x); }
+template<> EIGEN_TMP_NOOPT_ATTRIB bool isnan_impl(const double& x)      { return __builtin_isnan(x); }
+template<> EIGEN_TMP_NOOPT_ATTRIB bool isnan_impl(const float& x)       { return __builtin_isnan(x); }
+template<> EIGEN_TMP_NOOPT_ATTRIB bool isinf_impl(const double& x)      { return __builtin_isinf(x); }
+template<> EIGEN_TMP_NOOPT_ATTRIB bool isinf_impl(const float& x)       { return __builtin_isinf(x); }
+template<> EIGEN_TMP_NOOPT_ATTRIB bool isinf_impl(const long double& x) { return __builtin_isinf(x); }
+
+#undef EIGEN_TMP_NOOPT_ATTRIB
+
+#endif
+
+#endif
+
+// The following overload are defined at the end of this file
+template<typename T> EIGEN_DEVICE_FUNC bool isfinite_impl(const std::complex<T>& x);
+template<typename T> EIGEN_DEVICE_FUNC bool isnan_impl(const std::complex<T>& x);
+template<typename T> EIGEN_DEVICE_FUNC bool isinf_impl(const std::complex<T>& x);
+
+template<typename T> T generic_fast_tanh_float(const T& a_x);
+
+} // end namespace internal
+
+/****************************************************************************
+* Generic math functions                                                    *
+****************************************************************************/
+
+namespace numext {
+
+#ifndef __CUDA_ARCH__
+template<typename T>
+EIGEN_DEVICE_FUNC
+EIGEN_ALWAYS_INLINE T mini(const T& x, const T& y)
+{
+  EIGEN_USING_STD_MATH(min);
+  return min EIGEN_NOT_A_MACRO (x,y);
+}
+
+template<typename T>
+EIGEN_DEVICE_FUNC
+EIGEN_ALWAYS_INLINE T maxi(const T& x, const T& y)
+{
+  EIGEN_USING_STD_MATH(max);
+  return max EIGEN_NOT_A_MACRO (x,y);
+}
+#else
+template<typename T>
+EIGEN_DEVICE_FUNC
+EIGEN_ALWAYS_INLINE T mini(const T& x, const T& y)
+{
+  return y < x ? y : x;
+}
+template<>
+EIGEN_DEVICE_FUNC
+EIGEN_ALWAYS_INLINE float mini(const float& x, const float& y)
+{
+  return fminf(x, y);
+}
+template<typename T>
+EIGEN_DEVICE_FUNC
+EIGEN_ALWAYS_INLINE T maxi(const T& x, const T& y)
+{
+  return x < y ? y : x;
+}
+template<>
+EIGEN_DEVICE_FUNC
+EIGEN_ALWAYS_INLINE float maxi(const float& x, const float& y)
+{
+  return fmaxf(x, y);
+}
+#endif
+
+
+template<typename Scalar>
+EIGEN_DEVICE_FUNC
+inline EIGEN_MATHFUNC_RETVAL(real, Scalar) real(const Scalar& x)
+{
+  return EIGEN_MATHFUNC_IMPL(real, Scalar)::run(x);
+}
+
+template<typename Scalar>
+EIGEN_DEVICE_FUNC
+inline typename internal::add_const_on_value_type< EIGEN_MATHFUNC_RETVAL(real_ref, Scalar) >::type real_ref(const Scalar& x)
+{
+  return internal::real_ref_impl<Scalar>::run(x);
+}
+
+template<typename Scalar>
+EIGEN_DEVICE_FUNC
+inline EIGEN_MATHFUNC_RETVAL(real_ref, Scalar) real_ref(Scalar& x)
+{
+  return EIGEN_MATHFUNC_IMPL(real_ref, Scalar)::run(x);
+}
+
+template<typename Scalar>
+EIGEN_DEVICE_FUNC
+inline EIGEN_MATHFUNC_RETVAL(imag, Scalar) imag(const Scalar& x)
+{
+  return EIGEN_MATHFUNC_IMPL(imag, Scalar)::run(x);
+}
+
+template<typename Scalar>
+EIGEN_DEVICE_FUNC
+inline EIGEN_MATHFUNC_RETVAL(arg, Scalar) arg(const Scalar& x)
+{
+  return EIGEN_MATHFUNC_IMPL(arg, Scalar)::run(x);
+}
+
+template<typename Scalar>
+EIGEN_DEVICE_FUNC
+inline typename internal::add_const_on_value_type< EIGEN_MATHFUNC_RETVAL(imag_ref, Scalar) >::type imag_ref(const Scalar& x)
+{
+  return internal::imag_ref_impl<Scalar>::run(x);
+}
+
+template<typename Scalar>
+EIGEN_DEVICE_FUNC
+inline EIGEN_MATHFUNC_RETVAL(imag_ref, Scalar) imag_ref(Scalar& x)
+{
+  return EIGEN_MATHFUNC_IMPL(imag_ref, Scalar)::run(x);
+}
+
+template<typename Scalar>
+EIGEN_DEVICE_FUNC
+inline EIGEN_MATHFUNC_RETVAL(conj, Scalar) conj(const Scalar& x)
+{
+  return EIGEN_MATHFUNC_IMPL(conj, Scalar)::run(x);
+}
+
+template<typename Scalar>
+EIGEN_DEVICE_FUNC
+inline EIGEN_MATHFUNC_RETVAL(abs2, Scalar) abs2(const Scalar& x)
+{
+  return EIGEN_MATHFUNC_IMPL(abs2, Scalar)::run(x);
+}
+
+EIGEN_DEVICE_FUNC
+inline bool abs2(bool x) { return x; }
+
+template<typename Scalar>
+EIGEN_DEVICE_FUNC
+inline EIGEN_MATHFUNC_RETVAL(norm1, Scalar) norm1(const Scalar& x)
+{
+  return EIGEN_MATHFUNC_IMPL(norm1, Scalar)::run(x);
+}
+
+template<typename Scalar>
+EIGEN_DEVICE_FUNC
+inline EIGEN_MATHFUNC_RETVAL(hypot, Scalar) hypot(const Scalar& x, const Scalar& y)
+{
+  return EIGEN_MATHFUNC_IMPL(hypot, Scalar)::run(x, y);
+}
+
+template<typename Scalar>
+EIGEN_DEVICE_FUNC
+inline EIGEN_MATHFUNC_RETVAL(log1p, Scalar) log1p(const Scalar& x)
+{
+  return EIGEN_MATHFUNC_IMPL(log1p, Scalar)::run(x);
+}
+
+#ifdef __CUDACC__
+template<> EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+float log1p(const float &x) { return ::log1pf(x); }
+
+template<> EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+double log1p(const double &x) { return ::log1p(x); }
+#endif
+
+template<typename ScalarX,typename ScalarY>
+EIGEN_DEVICE_FUNC
+inline typename internal::pow_impl<ScalarX,ScalarY>::result_type pow(const ScalarX& x, const ScalarY& y)
+{
+  return internal::pow_impl<ScalarX,ScalarY>::run(x, y);
+}
+
+template<typename T> EIGEN_DEVICE_FUNC bool (isnan)   (const T &x) { return internal::isnan_impl(x); }
+template<typename T> EIGEN_DEVICE_FUNC bool (isinf)   (const T &x) { return internal::isinf_impl(x); }
+template<typename T> EIGEN_DEVICE_FUNC bool (isfinite)(const T &x) { return internal::isfinite_impl(x); }
+
+template<typename Scalar>
+EIGEN_DEVICE_FUNC
+inline EIGEN_MATHFUNC_RETVAL(round, Scalar) round(const Scalar& x)
+{
+  return EIGEN_MATHFUNC_IMPL(round, Scalar)::run(x);
+}
+
+template<typename T>
+EIGEN_DEVICE_FUNC
+T (floor)(const T& x)
+{
+  EIGEN_USING_STD_MATH(floor);
+  return floor(x);
+}
+
+#ifdef __CUDACC__
+template<> EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+float floor(const float &x) { return ::floorf(x); }
+
+template<> EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+double floor(const double &x) { return ::floor(x); }
+#endif
+
+template<typename T>
+EIGEN_DEVICE_FUNC
+T (ceil)(const T& x)
+{
+  EIGEN_USING_STD_MATH(ceil);
+  return ceil(x);
+}
+
+#ifdef __CUDACC__
+template<> EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+float ceil(const float &x) { return ::ceilf(x); }
+
+template<> EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+double ceil(const double &x) { return ::ceil(x); }
+#endif
+
+
+/** Log base 2 for 32 bits positive integers.
+  * Conveniently returns 0 for x==0. */
+inline int log2(int x)
+{
+  eigen_assert(x>=0);
+  unsigned int v(x);
+  static const int table[32] = { 0, 9, 1, 10, 13, 21, 2, 29, 11, 14, 16, 18, 22, 25, 3, 30, 8, 12, 20, 28, 15, 17, 24, 7, 19, 27, 23, 6, 26, 5, 4, 31 };
+  v |= v >> 1;
+  v |= v >> 2;
+  v |= v >> 4;
+  v |= v >> 8;
+  v |= v >> 16;
+  return table[(v * 0x07C4ACDDU) >> 27];
+}
+
+/** \returns the square root of \a x.
+  *
+  * It is essentially equivalent to
+  * \code using std::sqrt; return sqrt(x); \endcode
+  * but slightly faster for float/double and some compilers (e.g., gcc), thanks to
+  * specializations when SSE is enabled.
+  *
+  * It's usage is justified in performance critical functions, like norm/normalize.
+  */
+template<typename T>
+EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+T sqrt(const T &x)
+{
+  EIGEN_USING_STD_MATH(sqrt);
+  return sqrt(x);
+}
+
+template<typename T>
+EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+T log(const T &x) {
+  EIGEN_USING_STD_MATH(log);
+  return log(x);
+}
+
+#ifdef __CUDACC__
+template<> EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+float log(const float &x) { return ::logf(x); }
+
+template<> EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+double log(const double &x) { return ::log(x); }
+#endif
+
+template<typename T>
+EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+typename internal::enable_if<NumTraits<T>::IsSigned || NumTraits<T>::IsComplex,typename NumTraits<T>::Real>::type
+abs(const T &x) {
+  EIGEN_USING_STD_MATH(abs);
+  return abs(x);
+}
+
+template<typename T>
+EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+typename internal::enable_if<!(NumTraits<T>::IsSigned || NumTraits<T>::IsComplex),typename NumTraits<T>::Real>::type
+abs(const T &x) {
+  return x;
+}
+
+#if defined(__SYCL_DEVICE_ONLY__)
+EIGEN_ALWAYS_INLINE float   abs(float x) { return cl::sycl::fabs(x); }
+EIGEN_ALWAYS_INLINE double  abs(double x) { return cl::sycl::fabs(x); }
+#endif // defined(__SYCL_DEVICE_ONLY__)
+
+#ifdef __CUDACC__
+template<> EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+float abs(const float &x) { return ::fabsf(x); }
+
+template<> EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+double abs(const double &x) { return ::fabs(x); }
+
+template <> EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+float abs(const std::complex<float>& x) {
+  return ::hypotf(x.real(), x.imag());
+}
+
+template <> EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+double abs(const std::complex<double>& x) {
+  return ::hypot(x.real(), x.imag());
+}
+#endif
+
+template<typename T>
+EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+T exp(const T &x) {
+  EIGEN_USING_STD_MATH(exp);
+  return exp(x);
+}
+
+#ifdef __CUDACC__
+template<> EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+float exp(const float &x) { return ::expf(x); }
+
+template<> EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+double exp(const double &x) { return ::exp(x); }
+#endif
+
+template<typename T>
+EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+T cos(const T &x) {
+  EIGEN_USING_STD_MATH(cos);
+  return cos(x);
+}
+
+#ifdef __CUDACC__
+template<> EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+float cos(const float &x) { return ::cosf(x); }
+
+template<> EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+double cos(const double &x) { return ::cos(x); }
+#endif
+
+template<typename T>
+EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+T sin(const T &x) {
+  EIGEN_USING_STD_MATH(sin);
+  return sin(x);
+}
+
+#ifdef __CUDACC__
+template<> EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+float sin(const float &x) { return ::sinf(x); }
+
+template<> EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+double sin(const double &x) { return ::sin(x); }
+#endif
+
+template<typename T>
+EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+T tan(const T &x) {
+  EIGEN_USING_STD_MATH(tan);
+  return tan(x);
+}
+
+#ifdef __CUDACC__
+template<> EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+float tan(const float &x) { return ::tanf(x); }
+
+template<> EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+double tan(const double &x) { return ::tan(x); }
+#endif
+
+template<typename T>
+EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+T acos(const T &x) {
+  EIGEN_USING_STD_MATH(acos);
+  return acos(x);
+}
+
+#ifdef __CUDACC__
+template<> EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+float acos(const float &x) { return ::acosf(x); }
+
+template<> EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+double acos(const double &x) { return ::acos(x); }
+#endif
+
+template<typename T>
+EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+T asin(const T &x) {
+  EIGEN_USING_STD_MATH(asin);
+  return asin(x);
+}
+
+#ifdef __CUDACC__
+template<> EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+float asin(const float &x) { return ::asinf(x); }
+
+template<> EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+double asin(const double &x) { return ::asin(x); }
+#endif
+
+template<typename T>
+EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+T atan(const T &x) {
+  EIGEN_USING_STD_MATH(atan);
+  return atan(x);
+}
+
+#ifdef __CUDACC__
+template<> EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+float atan(const float &x) { return ::atanf(x); }
+
+template<> EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+double atan(const double &x) { return ::atan(x); }
+#endif
+
+
+template<typename T>
+EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+T cosh(const T &x) {
+  EIGEN_USING_STD_MATH(cosh);
+  return cosh(x);
+}
+
+#ifdef __CUDACC__
+template<> EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+float cosh(const float &x) { return ::coshf(x); }
+
+template<> EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+double cosh(const double &x) { return ::cosh(x); }
+#endif
+
+template<typename T>
+EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+T sinh(const T &x) {
+  EIGEN_USING_STD_MATH(sinh);
+  return sinh(x);
+}
+
+#ifdef __CUDACC__
+template<> EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+float sinh(const float &x) { return ::sinhf(x); }
+
+template<> EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+double sinh(const double &x) { return ::sinh(x); }
+#endif
+
+template<typename T>
+EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+T tanh(const T &x) {
+  EIGEN_USING_STD_MATH(tanh);
+  return tanh(x);
+}
+
+#if (!defined(__CUDACC__)) && EIGEN_FAST_MATH
+EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+float tanh(float x) { return internal::generic_fast_tanh_float(x); }
+#endif
+
+#ifdef __CUDACC__
+template<> EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+float tanh(const float &x) { return ::tanhf(x); }
+
+template<> EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+double tanh(const double &x) { return ::tanh(x); }
+#endif
+
+template <typename T>
+EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+T fmod(const T& a, const T& b) {
+  EIGEN_USING_STD_MATH(fmod);
+  return fmod(a, b);
+}
+
+#ifdef __CUDACC__
+template <>
+EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+float fmod(const float& a, const float& b) {
+  return ::fmodf(a, b);
+}
+
+template <>
+EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+double fmod(const double& a, const double& b) {
+  return ::fmod(a, b);
+}
+#endif
+
+} // end namespace numext
+
+namespace internal {
+
+template<typename T>
+EIGEN_DEVICE_FUNC bool isfinite_impl(const std::complex<T>& x)
+{
+  return (numext::isfinite)(numext::real(x)) && (numext::isfinite)(numext::imag(x));
+}
+
+template<typename T>
+EIGEN_DEVICE_FUNC bool isnan_impl(const std::complex<T>& x)
+{
+  return (numext::isnan)(numext::real(x)) || (numext::isnan)(numext::imag(x));
+}
+
+template<typename T>
+EIGEN_DEVICE_FUNC bool isinf_impl(const std::complex<T>& x)
+{
+  return ((numext::isinf)(numext::real(x)) || (numext::isinf)(numext::imag(x))) && (!(numext::isnan)(x));
+}
+
+/****************************************************************************
+* Implementation of fuzzy comparisons                                       *
+****************************************************************************/
+
+template<typename Scalar,
+         bool IsComplex,
+         bool IsInteger>
+struct scalar_fuzzy_default_impl {};
+
+template<typename Scalar>
+struct scalar_fuzzy_default_impl<Scalar, false, false>
+{
+  typedef typename NumTraits<Scalar>::Real RealScalar;
+  template<typename OtherScalar> EIGEN_DEVICE_FUNC
+  static inline bool isMuchSmallerThan(const Scalar& x, const OtherScalar& y, const RealScalar& prec)
+  {
+    return numext::abs(x) <= numext::abs(y) * prec;
+  }
+  EIGEN_DEVICE_FUNC
+  static inline bool isApprox(const Scalar& x, const Scalar& y, const RealScalar& prec)
+  {
+    return numext::abs(x - y) <= numext::mini(numext::abs(x), numext::abs(y)) * prec;
+  }
+  EIGEN_DEVICE_FUNC
+  static inline bool isApproxOrLessThan(const Scalar& x, const Scalar& y, const RealScalar& prec)
+  {
+    return x <= y || isApprox(x, y, prec);
+  }
+};
+
+template<typename Scalar>
+struct scalar_fuzzy_default_impl<Scalar, false, true>
+{
+  typedef typename NumTraits<Scalar>::Real RealScalar;
+  template<typename OtherScalar> EIGEN_DEVICE_FUNC
+  static inline bool isMuchSmallerThan(const Scalar& x, const Scalar&, const RealScalar&)
+  {
+    return x == Scalar(0);
+  }
+  EIGEN_DEVICE_FUNC
+  static inline bool isApprox(const Scalar& x, const Scalar& y, const RealScalar&)
+  {
+    return x == y;
+  }
+  EIGEN_DEVICE_FUNC
+  static inline bool isApproxOrLessThan(const Scalar& x, const Scalar& y, const RealScalar&)
+  {
+    return x <= y;
+  }
+};
+
+template<typename Scalar>
+struct scalar_fuzzy_default_impl<Scalar, true, false>
+{
+  typedef typename NumTraits<Scalar>::Real RealScalar;
+  template<typename OtherScalar> EIGEN_DEVICE_FUNC
+  static inline bool isMuchSmallerThan(const Scalar& x, const OtherScalar& y, const RealScalar& prec)
+  {
+    return numext::abs2(x) <= numext::abs2(y) * prec * prec;
+  }
+  EIGEN_DEVICE_FUNC
+  static inline bool isApprox(const Scalar& x, const Scalar& y, const RealScalar& prec)
+  {
+    return numext::abs2(x - y) <= numext::mini(numext::abs2(x), numext::abs2(y)) * prec * prec;
+  }
+};
+
+template<typename Scalar>
+struct scalar_fuzzy_impl : scalar_fuzzy_default_impl<Scalar, NumTraits<Scalar>::IsComplex, NumTraits<Scalar>::IsInteger> {};
+
+template<typename Scalar, typename OtherScalar> EIGEN_DEVICE_FUNC
+inline bool isMuchSmallerThan(const Scalar& x, const OtherScalar& y,
+                              const typename NumTraits<Scalar>::Real &precision = NumTraits<Scalar>::dummy_precision())
+{
+  return scalar_fuzzy_impl<Scalar>::template isMuchSmallerThan<OtherScalar>(x, y, precision);
+}
+
+template<typename Scalar> EIGEN_DEVICE_FUNC
+inline bool isApprox(const Scalar& x, const Scalar& y,
+                     const typename NumTraits<Scalar>::Real &precision = NumTraits<Scalar>::dummy_precision())
+{
+  return scalar_fuzzy_impl<Scalar>::isApprox(x, y, precision);
+}
+
+template<typename Scalar> EIGEN_DEVICE_FUNC
+inline bool isApproxOrLessThan(const Scalar& x, const Scalar& y,
+                               const typename NumTraits<Scalar>::Real &precision = NumTraits<Scalar>::dummy_precision())
+{
+  return scalar_fuzzy_impl<Scalar>::isApproxOrLessThan(x, y, precision);
+}
+
+/******************************************
+***  The special case of the  bool type ***
+******************************************/
+
+template<> struct random_impl<bool>
+{
+  static inline bool run()
+  {
+    return random<int>(0,1)==0 ? false : true;
+  }
+};
+
+template<> struct scalar_fuzzy_impl<bool>
+{
+  typedef bool RealScalar;
+  
+  template<typename OtherScalar> EIGEN_DEVICE_FUNC
+  static inline bool isMuchSmallerThan(const bool& x, const bool&, const bool&)
+  {
+    return !x;
+  }
+  
+  EIGEN_DEVICE_FUNC
+  static inline bool isApprox(bool x, bool y, bool)
+  {
+    return x == y;
+  }
+
+  EIGEN_DEVICE_FUNC
+  static inline bool isApproxOrLessThan(const bool& x, const bool& y, const bool&)
+  {
+    return (!x) || y;
+  }
+  
+};
+
+  
+} // end namespace internal
+
+} // end namespace Eigen
+
+#endif // EIGEN_MATHFUNCTIONS_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/DenseStorage.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/DenseStorage.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/DenseStorage.h	(revision 3762)
@@ -0,0 +1,570 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2008 Gael Guennebaud <gael.guennebaud@inria.fr>
+// Copyright (C) 2006-2009 Benoit Jacob <jacob.benoit.1@gmail.com>
+// Copyright (C) 2010-2013 Hauke Heibel <hauke.heibel@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_MATRIXSTORAGE_H
+#define EIGEN_MATRIXSTORAGE_H
+
+#ifdef EIGEN_DENSE_STORAGE_CTOR_PLUGIN
+  #define EIGEN_INTERNAL_DENSE_STORAGE_CTOR_PLUGIN(X) X; EIGEN_DENSE_STORAGE_CTOR_PLUGIN;
+#else
+  #define EIGEN_INTERNAL_DENSE_STORAGE_CTOR_PLUGIN(X)
+#endif
+
+namespace Eigen {
+
+namespace internal {
+
+struct constructor_without_unaligned_array_assert {};
+
+template<typename T, int Size>
+EIGEN_DEVICE_FUNC
+void check_static_allocation_size()
+{
+  // if EIGEN_STACK_ALLOCATION_LIMIT is defined to 0, then no limit
+  #if EIGEN_STACK_ALLOCATION_LIMIT
+  EIGEN_STATIC_ASSERT(Size * sizeof(T) <= EIGEN_STACK_ALLOCATION_LIMIT, OBJECT_ALLOCATED_ON_STACK_IS_TOO_BIG);
+  #endif
+}
+
+/** \internal
+  * Static array. If the MatrixOrArrayOptions require auto-alignment, the array will be automatically aligned:
+  * to 16 bytes boundary if the total size is a multiple of 16 bytes.
+  */
+template <typename T, int Size, int MatrixOrArrayOptions,
+          int Alignment = (MatrixOrArrayOptions&DontAlign) ? 0
+                        : compute_default_alignment<T,Size>::value >
+struct plain_array
+{
+  T array[Size];
+
+  EIGEN_DEVICE_FUNC
+  plain_array()
+  { 
+    check_static_allocation_size<T,Size>();
+  }
+
+  EIGEN_DEVICE_FUNC
+  plain_array(constructor_without_unaligned_array_assert)
+  { 
+    check_static_allocation_size<T,Size>();
+  }
+};
+
+#if defined(EIGEN_DISABLE_UNALIGNED_ARRAY_ASSERT)
+  #define EIGEN_MAKE_UNALIGNED_ARRAY_ASSERT(sizemask)
+#elif EIGEN_GNUC_AT_LEAST(4,7) 
+  // GCC 4.7 is too aggressive in its optimizations and remove the alignement test based on the fact the array is declared to be aligned.
+  // See this bug report: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53900
+  // Hiding the origin of the array pointer behind a function argument seems to do the trick even if the function is inlined:
+  template<typename PtrType>
+  EIGEN_ALWAYS_INLINE PtrType eigen_unaligned_array_assert_workaround_gcc47(PtrType array) { return array; }
+  #define EIGEN_MAKE_UNALIGNED_ARRAY_ASSERT(sizemask) \
+    eigen_assert((internal::UIntPtr(eigen_unaligned_array_assert_workaround_gcc47(array)) & (sizemask)) == 0 \
+              && "this assertion is explained here: " \
+              "http://eigen.tuxfamily.org/dox-devel/group__TopicUnalignedArrayAssert.html" \
+              " **** READ THIS WEB PAGE !!! ****");
+#else
+  #define EIGEN_MAKE_UNALIGNED_ARRAY_ASSERT(sizemask) \
+    eigen_assert((internal::UIntPtr(array) & (sizemask)) == 0 \
+              && "this assertion is explained here: " \
+              "http://eigen.tuxfamily.org/dox-devel/group__TopicUnalignedArrayAssert.html" \
+              " **** READ THIS WEB PAGE !!! ****");
+#endif
+
+template <typename T, int Size, int MatrixOrArrayOptions>
+struct plain_array<T, Size, MatrixOrArrayOptions, 8>
+{
+  EIGEN_ALIGN_TO_BOUNDARY(8) T array[Size];
+
+  EIGEN_DEVICE_FUNC
+  plain_array() 
+  {
+    EIGEN_MAKE_UNALIGNED_ARRAY_ASSERT(7);
+    check_static_allocation_size<T,Size>();
+  }
+
+  EIGEN_DEVICE_FUNC
+  plain_array(constructor_without_unaligned_array_assert) 
+  { 
+    check_static_allocation_size<T,Size>();
+  }
+};
+
+template <typename T, int Size, int MatrixOrArrayOptions>
+struct plain_array<T, Size, MatrixOrArrayOptions, 16>
+{
+  EIGEN_ALIGN_TO_BOUNDARY(16) T array[Size];
+
+  EIGEN_DEVICE_FUNC
+  plain_array() 
+  { 
+    EIGEN_MAKE_UNALIGNED_ARRAY_ASSERT(15);
+    check_static_allocation_size<T,Size>();
+  }
+
+  EIGEN_DEVICE_FUNC
+  plain_array(constructor_without_unaligned_array_assert) 
+  { 
+    check_static_allocation_size<T,Size>();
+  }
+};
+
+template <typename T, int Size, int MatrixOrArrayOptions>
+struct plain_array<T, Size, MatrixOrArrayOptions, 32>
+{
+  EIGEN_ALIGN_TO_BOUNDARY(32) T array[Size];
+
+  EIGEN_DEVICE_FUNC
+  plain_array() 
+  {
+    EIGEN_MAKE_UNALIGNED_ARRAY_ASSERT(31);
+    check_static_allocation_size<T,Size>();
+  }
+
+  EIGEN_DEVICE_FUNC
+  plain_array(constructor_without_unaligned_array_assert) 
+  { 
+    check_static_allocation_size<T,Size>();
+  }
+};
+
+template <typename T, int Size, int MatrixOrArrayOptions>
+struct plain_array<T, Size, MatrixOrArrayOptions, 64>
+{
+  EIGEN_ALIGN_TO_BOUNDARY(64) T array[Size];
+
+  EIGEN_DEVICE_FUNC
+  plain_array() 
+  { 
+    EIGEN_MAKE_UNALIGNED_ARRAY_ASSERT(63);
+    check_static_allocation_size<T,Size>();
+  }
+
+  EIGEN_DEVICE_FUNC
+  plain_array(constructor_without_unaligned_array_assert) 
+  { 
+    check_static_allocation_size<T,Size>();
+  }
+};
+
+template <typename T, int MatrixOrArrayOptions, int Alignment>
+struct plain_array<T, 0, MatrixOrArrayOptions, Alignment>
+{
+  T array[1];
+  EIGEN_DEVICE_FUNC plain_array() {}
+  EIGEN_DEVICE_FUNC plain_array(constructor_without_unaligned_array_assert) {}
+};
+
+} // end namespace internal
+
+/** \internal
+  *
+  * \class DenseStorage
+  * \ingroup Core_Module
+  *
+  * \brief Stores the data of a matrix
+  *
+  * This class stores the data of fixed-size, dynamic-size or mixed matrices
+  * in a way as compact as possible.
+  *
+  * \sa Matrix
+  */
+template<typename T, int Size, int _Rows, int _Cols, int _Options> class DenseStorage;
+
+// purely fixed-size matrix
+template<typename T, int Size, int _Rows, int _Cols, int _Options> class DenseStorage
+{
+    internal::plain_array<T,Size,_Options> m_data;
+  public:
+    EIGEN_DEVICE_FUNC DenseStorage() {
+      EIGEN_INTERNAL_DENSE_STORAGE_CTOR_PLUGIN(Index size = Size)
+    }
+    EIGEN_DEVICE_FUNC
+    explicit DenseStorage(internal::constructor_without_unaligned_array_assert)
+      : m_data(internal::constructor_without_unaligned_array_assert()) {}
+    EIGEN_DEVICE_FUNC 
+    DenseStorage(const DenseStorage& other) : m_data(other.m_data) {
+      EIGEN_INTERNAL_DENSE_STORAGE_CTOR_PLUGIN(Index size = Size)
+    }
+    EIGEN_DEVICE_FUNC 
+    DenseStorage& operator=(const DenseStorage& other)
+    { 
+      if (this != &other) m_data = other.m_data;
+      return *this; 
+    }
+    EIGEN_DEVICE_FUNC DenseStorage(Index size, Index rows, Index cols) {
+      EIGEN_INTERNAL_DENSE_STORAGE_CTOR_PLUGIN({})
+      eigen_internal_assert(size==rows*cols && rows==_Rows && cols==_Cols);
+      EIGEN_UNUSED_VARIABLE(size);
+      EIGEN_UNUSED_VARIABLE(rows);
+      EIGEN_UNUSED_VARIABLE(cols);
+    }
+    EIGEN_DEVICE_FUNC void swap(DenseStorage& other) { std::swap(m_data,other.m_data); }
+    EIGEN_DEVICE_FUNC static Index rows(void) {return _Rows;}
+    EIGEN_DEVICE_FUNC static Index cols(void) {return _Cols;}
+    EIGEN_DEVICE_FUNC void conservativeResize(Index,Index,Index) {}
+    EIGEN_DEVICE_FUNC void resize(Index,Index,Index) {}
+    EIGEN_DEVICE_FUNC const T *data() const { return m_data.array; }
+    EIGEN_DEVICE_FUNC T *data() { return m_data.array; }
+};
+
+// null matrix
+template<typename T, int _Rows, int _Cols, int _Options> class DenseStorage<T, 0, _Rows, _Cols, _Options>
+{
+  public:
+    EIGEN_DEVICE_FUNC DenseStorage() {}
+    EIGEN_DEVICE_FUNC explicit DenseStorage(internal::constructor_without_unaligned_array_assert) {}
+    EIGEN_DEVICE_FUNC DenseStorage(const DenseStorage&) {}
+    EIGEN_DEVICE_FUNC DenseStorage& operator=(const DenseStorage&) { return *this; }
+    EIGEN_DEVICE_FUNC DenseStorage(Index,Index,Index) {}
+    EIGEN_DEVICE_FUNC void swap(DenseStorage& ) {}
+    EIGEN_DEVICE_FUNC static Index rows(void) {return _Rows;}
+    EIGEN_DEVICE_FUNC static Index cols(void) {return _Cols;}
+    EIGEN_DEVICE_FUNC void conservativeResize(Index,Index,Index) {}
+    EIGEN_DEVICE_FUNC void resize(Index,Index,Index) {}
+    EIGEN_DEVICE_FUNC const T *data() const { return 0; }
+    EIGEN_DEVICE_FUNC T *data() { return 0; }
+};
+
+// more specializations for null matrices; these are necessary to resolve ambiguities
+template<typename T, int _Options> class DenseStorage<T, 0, Dynamic, Dynamic, _Options>
+: public DenseStorage<T, 0, 0, 0, _Options> { };
+
+template<typename T, int _Rows, int _Options> class DenseStorage<T, 0, _Rows, Dynamic, _Options>
+: public DenseStorage<T, 0, 0, 0, _Options> { };
+
+template<typename T, int _Cols, int _Options> class DenseStorage<T, 0, Dynamic, _Cols, _Options>
+: public DenseStorage<T, 0, 0, 0, _Options> { };
+
+// dynamic-size matrix with fixed-size storage
+template<typename T, int Size, int _Options> class DenseStorage<T, Size, Dynamic, Dynamic, _Options>
+{
+    internal::plain_array<T,Size,_Options> m_data;
+    Index m_rows;
+    Index m_cols;
+  public:
+    EIGEN_DEVICE_FUNC DenseStorage() : m_rows(0), m_cols(0) {}
+    EIGEN_DEVICE_FUNC explicit DenseStorage(internal::constructor_without_unaligned_array_assert)
+      : m_data(internal::constructor_without_unaligned_array_assert()), m_rows(0), m_cols(0) {}
+    EIGEN_DEVICE_FUNC DenseStorage(const DenseStorage& other) : m_data(other.m_data), m_rows(other.m_rows), m_cols(other.m_cols) {}
+    EIGEN_DEVICE_FUNC DenseStorage& operator=(const DenseStorage& other) 
+    { 
+      if (this != &other)
+      {
+        m_data = other.m_data;
+        m_rows = other.m_rows;
+        m_cols = other.m_cols;
+      }
+      return *this; 
+    }
+    EIGEN_DEVICE_FUNC DenseStorage(Index, Index rows, Index cols) : m_rows(rows), m_cols(cols) {}
+    EIGEN_DEVICE_FUNC void swap(DenseStorage& other)
+    { std::swap(m_data,other.m_data); std::swap(m_rows,other.m_rows); std::swap(m_cols,other.m_cols); }
+    EIGEN_DEVICE_FUNC Index rows() const {return m_rows;}
+    EIGEN_DEVICE_FUNC Index cols() const {return m_cols;}
+    EIGEN_DEVICE_FUNC void conservativeResize(Index, Index rows, Index cols) { m_rows = rows; m_cols = cols; }
+    EIGEN_DEVICE_FUNC void resize(Index, Index rows, Index cols) { m_rows = rows; m_cols = cols; }
+    EIGEN_DEVICE_FUNC const T *data() const { return m_data.array; }
+    EIGEN_DEVICE_FUNC T *data() { return m_data.array; }
+};
+
+// dynamic-size matrix with fixed-size storage and fixed width
+template<typename T, int Size, int _Cols, int _Options> class DenseStorage<T, Size, Dynamic, _Cols, _Options>
+{
+    internal::plain_array<T,Size,_Options> m_data;
+    Index m_rows;
+  public:
+    EIGEN_DEVICE_FUNC DenseStorage() : m_rows(0) {}
+    EIGEN_DEVICE_FUNC explicit DenseStorage(internal::constructor_without_unaligned_array_assert)
+      : m_data(internal::constructor_without_unaligned_array_assert()), m_rows(0) {}
+    EIGEN_DEVICE_FUNC DenseStorage(const DenseStorage& other) : m_data(other.m_data), m_rows(other.m_rows) {}
+    EIGEN_DEVICE_FUNC DenseStorage& operator=(const DenseStorage& other) 
+    {
+      if (this != &other)
+      {
+        m_data = other.m_data;
+        m_rows = other.m_rows;
+      }
+      return *this; 
+    }
+    EIGEN_DEVICE_FUNC DenseStorage(Index, Index rows, Index) : m_rows(rows) {}
+    EIGEN_DEVICE_FUNC void swap(DenseStorage& other) { std::swap(m_data,other.m_data); std::swap(m_rows,other.m_rows); }
+    EIGEN_DEVICE_FUNC Index rows(void) const {return m_rows;}
+    EIGEN_DEVICE_FUNC Index cols(void) const {return _Cols;}
+    EIGEN_DEVICE_FUNC void conservativeResize(Index, Index rows, Index) { m_rows = rows; }
+    EIGEN_DEVICE_FUNC void resize(Index, Index rows, Index) { m_rows = rows; }
+    EIGEN_DEVICE_FUNC const T *data() const { return m_data.array; }
+    EIGEN_DEVICE_FUNC T *data() { return m_data.array; }
+};
+
+// dynamic-size matrix with fixed-size storage and fixed height
+template<typename T, int Size, int _Rows, int _Options> class DenseStorage<T, Size, _Rows, Dynamic, _Options>
+{
+    internal::plain_array<T,Size,_Options> m_data;
+    Index m_cols;
+  public:
+    EIGEN_DEVICE_FUNC DenseStorage() : m_cols(0) {}
+    EIGEN_DEVICE_FUNC explicit DenseStorage(internal::constructor_without_unaligned_array_assert)
+      : m_data(internal::constructor_without_unaligned_array_assert()), m_cols(0) {}
+    EIGEN_DEVICE_FUNC DenseStorage(const DenseStorage& other) : m_data(other.m_data), m_cols(other.m_cols) {}
+    EIGEN_DEVICE_FUNC DenseStorage& operator=(const DenseStorage& other)
+    {
+      if (this != &other)
+      {
+        m_data = other.m_data;
+        m_cols = other.m_cols;
+      }
+      return *this;
+    }
+    EIGEN_DEVICE_FUNC DenseStorage(Index, Index, Index cols) : m_cols(cols) {}
+    EIGEN_DEVICE_FUNC void swap(DenseStorage& other) { std::swap(m_data,other.m_data); std::swap(m_cols,other.m_cols); }
+    EIGEN_DEVICE_FUNC Index rows(void) const {return _Rows;}
+    EIGEN_DEVICE_FUNC Index cols(void) const {return m_cols;}
+    void conservativeResize(Index, Index, Index cols) { m_cols = cols; }
+    void resize(Index, Index, Index cols) { m_cols = cols; }
+    EIGEN_DEVICE_FUNC const T *data() const { return m_data.array; }
+    EIGEN_DEVICE_FUNC T *data() { return m_data.array; }
+};
+
+// purely dynamic matrix.
+template<typename T, int _Options> class DenseStorage<T, Dynamic, Dynamic, Dynamic, _Options>
+{
+    T *m_data;
+    Index m_rows;
+    Index m_cols;
+  public:
+    EIGEN_DEVICE_FUNC DenseStorage() : m_data(0), m_rows(0), m_cols(0) {}
+    EIGEN_DEVICE_FUNC explicit DenseStorage(internal::constructor_without_unaligned_array_assert)
+       : m_data(0), m_rows(0), m_cols(0) {}
+    EIGEN_DEVICE_FUNC DenseStorage(Index size, Index rows, Index cols)
+      : m_data(internal::conditional_aligned_new_auto<T,(_Options&DontAlign)==0>(size)), m_rows(rows), m_cols(cols)
+    {
+      EIGEN_INTERNAL_DENSE_STORAGE_CTOR_PLUGIN({})
+      eigen_internal_assert(size==rows*cols && rows>=0 && cols >=0);
+    }
+    EIGEN_DEVICE_FUNC DenseStorage(const DenseStorage& other)
+      : m_data(internal::conditional_aligned_new_auto<T,(_Options&DontAlign)==0>(other.m_rows*other.m_cols))
+      , m_rows(other.m_rows)
+      , m_cols(other.m_cols)
+    {
+      EIGEN_INTERNAL_DENSE_STORAGE_CTOR_PLUGIN(Index size = m_rows*m_cols)
+      internal::smart_copy(other.m_data, other.m_data+other.m_rows*other.m_cols, m_data);
+    }
+    EIGEN_DEVICE_FUNC DenseStorage& operator=(const DenseStorage& other)
+    {
+      if (this != &other)
+      {
+        DenseStorage tmp(other);
+        this->swap(tmp);
+      }
+      return *this;
+    }
+#if EIGEN_HAS_RVALUE_REFERENCES
+    EIGEN_DEVICE_FUNC
+    DenseStorage(DenseStorage&& other) EIGEN_NOEXCEPT
+      : m_data(std::move(other.m_data))
+      , m_rows(std::move(other.m_rows))
+      , m_cols(std::move(other.m_cols))
+    {
+      other.m_data = nullptr;
+      other.m_rows = 0;
+      other.m_cols = 0;
+    }
+    EIGEN_DEVICE_FUNC
+    DenseStorage& operator=(DenseStorage&& other) EIGEN_NOEXCEPT
+    {
+      using std::swap;
+      swap(m_data, other.m_data);
+      swap(m_rows, other.m_rows);
+      swap(m_cols, other.m_cols);
+      return *this;
+    }
+#endif
+    EIGEN_DEVICE_FUNC ~DenseStorage() { internal::conditional_aligned_delete_auto<T,(_Options&DontAlign)==0>(m_data, m_rows*m_cols); }
+    EIGEN_DEVICE_FUNC void swap(DenseStorage& other)
+    { std::swap(m_data,other.m_data); std::swap(m_rows,other.m_rows); std::swap(m_cols,other.m_cols); }
+    EIGEN_DEVICE_FUNC Index rows(void) const {return m_rows;}
+    EIGEN_DEVICE_FUNC Index cols(void) const {return m_cols;}
+    void conservativeResize(Index size, Index rows, Index cols)
+    {
+      m_data = internal::conditional_aligned_realloc_new_auto<T,(_Options&DontAlign)==0>(m_data, size, m_rows*m_cols);
+      m_rows = rows;
+      m_cols = cols;
+    }
+    EIGEN_DEVICE_FUNC void resize(Index size, Index rows, Index cols)
+    {
+      if(size != m_rows*m_cols)
+      {
+        internal::conditional_aligned_delete_auto<T,(_Options&DontAlign)==0>(m_data, m_rows*m_cols);
+        if (size>0) // >0 and not simply !=0 to let the compiler knows that size cannot be negative
+          m_data = internal::conditional_aligned_new_auto<T,(_Options&DontAlign)==0>(size);
+        else
+          m_data = 0;
+        EIGEN_INTERNAL_DENSE_STORAGE_CTOR_PLUGIN({})
+      }
+      m_rows = rows;
+      m_cols = cols;
+    }
+    EIGEN_DEVICE_FUNC const T *data() const { return m_data; }
+    EIGEN_DEVICE_FUNC T *data() { return m_data; }
+};
+
+// matrix with dynamic width and fixed height (so that matrix has dynamic size).
+template<typename T, int _Rows, int _Options> class DenseStorage<T, Dynamic, _Rows, Dynamic, _Options>
+{
+    T *m_data;
+    Index m_cols;
+  public:
+    EIGEN_DEVICE_FUNC DenseStorage() : m_data(0), m_cols(0) {}
+    explicit DenseStorage(internal::constructor_without_unaligned_array_assert) : m_data(0), m_cols(0) {}
+    EIGEN_DEVICE_FUNC DenseStorage(Index size, Index rows, Index cols) : m_data(internal::conditional_aligned_new_auto<T,(_Options&DontAlign)==0>(size)), m_cols(cols)
+    {
+      EIGEN_INTERNAL_DENSE_STORAGE_CTOR_PLUGIN({})
+      eigen_internal_assert(size==rows*cols && rows==_Rows && cols >=0);
+      EIGEN_UNUSED_VARIABLE(rows);
+    }
+    EIGEN_DEVICE_FUNC DenseStorage(const DenseStorage& other)
+      : m_data(internal::conditional_aligned_new_auto<T,(_Options&DontAlign)==0>(_Rows*other.m_cols))
+      , m_cols(other.m_cols)
+    {
+      EIGEN_INTERNAL_DENSE_STORAGE_CTOR_PLUGIN(Index size = m_cols*_Rows)
+      internal::smart_copy(other.m_data, other.m_data+_Rows*m_cols, m_data);
+    }
+    EIGEN_DEVICE_FUNC DenseStorage& operator=(const DenseStorage& other)
+    {
+      if (this != &other)
+      {
+        DenseStorage tmp(other);
+        this->swap(tmp);
+      }
+      return *this;
+    }    
+#if EIGEN_HAS_RVALUE_REFERENCES
+    EIGEN_DEVICE_FUNC
+    DenseStorage(DenseStorage&& other) EIGEN_NOEXCEPT
+      : m_data(std::move(other.m_data))
+      , m_cols(std::move(other.m_cols))
+    {
+      other.m_data = nullptr;
+      other.m_cols = 0;
+    }
+    EIGEN_DEVICE_FUNC
+    DenseStorage& operator=(DenseStorage&& other) EIGEN_NOEXCEPT
+    {
+      using std::swap;
+      swap(m_data, other.m_data);
+      swap(m_cols, other.m_cols);
+      return *this;
+    }
+#endif
+    EIGEN_DEVICE_FUNC ~DenseStorage() { internal::conditional_aligned_delete_auto<T,(_Options&DontAlign)==0>(m_data, _Rows*m_cols); }
+    EIGEN_DEVICE_FUNC void swap(DenseStorage& other) { std::swap(m_data,other.m_data); std::swap(m_cols,other.m_cols); }
+    EIGEN_DEVICE_FUNC static Index rows(void) {return _Rows;}
+    EIGEN_DEVICE_FUNC Index cols(void) const {return m_cols;}
+    EIGEN_DEVICE_FUNC void conservativeResize(Index size, Index, Index cols)
+    {
+      m_data = internal::conditional_aligned_realloc_new_auto<T,(_Options&DontAlign)==0>(m_data, size, _Rows*m_cols);
+      m_cols = cols;
+    }
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void resize(Index size, Index, Index cols)
+    {
+      if(size != _Rows*m_cols)
+      {
+        internal::conditional_aligned_delete_auto<T,(_Options&DontAlign)==0>(m_data, _Rows*m_cols);
+        if (size>0) // >0 and not simply !=0 to let the compiler knows that size cannot be negative
+          m_data = internal::conditional_aligned_new_auto<T,(_Options&DontAlign)==0>(size);
+        else
+          m_data = 0;
+        EIGEN_INTERNAL_DENSE_STORAGE_CTOR_PLUGIN({})
+      }
+      m_cols = cols;
+    }
+    EIGEN_DEVICE_FUNC const T *data() const { return m_data; }
+    EIGEN_DEVICE_FUNC T *data() { return m_data; }
+};
+
+// matrix with dynamic height and fixed width (so that matrix has dynamic size).
+template<typename T, int _Cols, int _Options> class DenseStorage<T, Dynamic, Dynamic, _Cols, _Options>
+{
+    T *m_data;
+    Index m_rows;
+  public:
+    EIGEN_DEVICE_FUNC DenseStorage() : m_data(0), m_rows(0) {}
+    explicit DenseStorage(internal::constructor_without_unaligned_array_assert) : m_data(0), m_rows(0) {}
+    EIGEN_DEVICE_FUNC DenseStorage(Index size, Index rows, Index cols) : m_data(internal::conditional_aligned_new_auto<T,(_Options&DontAlign)==0>(size)), m_rows(rows)
+    {
+      EIGEN_INTERNAL_DENSE_STORAGE_CTOR_PLUGIN({})
+      eigen_internal_assert(size==rows*cols && rows>=0 && cols == _Cols);
+      EIGEN_UNUSED_VARIABLE(cols);
+    }
+    EIGEN_DEVICE_FUNC DenseStorage(const DenseStorage& other)
+      : m_data(internal::conditional_aligned_new_auto<T,(_Options&DontAlign)==0>(other.m_rows*_Cols))
+      , m_rows(other.m_rows)
+    {
+      EIGEN_INTERNAL_DENSE_STORAGE_CTOR_PLUGIN(Index size = m_rows*_Cols)
+      internal::smart_copy(other.m_data, other.m_data+other.m_rows*_Cols, m_data);
+    }
+    EIGEN_DEVICE_FUNC DenseStorage& operator=(const DenseStorage& other)
+    {
+      if (this != &other)
+      {
+        DenseStorage tmp(other);
+        this->swap(tmp);
+      }
+      return *this;
+    }    
+#if EIGEN_HAS_RVALUE_REFERENCES
+    EIGEN_DEVICE_FUNC
+    DenseStorage(DenseStorage&& other) EIGEN_NOEXCEPT
+      : m_data(std::move(other.m_data))
+      , m_rows(std::move(other.m_rows))
+    {
+      other.m_data = nullptr;
+      other.m_rows = 0;
+    }
+    EIGEN_DEVICE_FUNC
+    DenseStorage& operator=(DenseStorage&& other) EIGEN_NOEXCEPT
+    {
+      using std::swap;
+      swap(m_data, other.m_data);
+      swap(m_rows, other.m_rows);
+      return *this;
+    }
+#endif
+    EIGEN_DEVICE_FUNC ~DenseStorage() { internal::conditional_aligned_delete_auto<T,(_Options&DontAlign)==0>(m_data, _Cols*m_rows); }
+    EIGEN_DEVICE_FUNC void swap(DenseStorage& other) { std::swap(m_data,other.m_data); std::swap(m_rows,other.m_rows); }
+    EIGEN_DEVICE_FUNC Index rows(void) const {return m_rows;}
+    EIGEN_DEVICE_FUNC static Index cols(void) {return _Cols;}
+    void conservativeResize(Index size, Index rows, Index)
+    {
+      m_data = internal::conditional_aligned_realloc_new_auto<T,(_Options&DontAlign)==0>(m_data, size, m_rows*_Cols);
+      m_rows = rows;
+    }
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void resize(Index size, Index rows, Index)
+    {
+      if(size != m_rows*_Cols)
+      {
+        internal::conditional_aligned_delete_auto<T,(_Options&DontAlign)==0>(m_data, _Cols*m_rows);
+        if (size>0) // >0 and not simply !=0 to let the compiler knows that size cannot be negative
+          m_data = internal::conditional_aligned_new_auto<T,(_Options&DontAlign)==0>(size);
+        else
+          m_data = 0;
+        EIGEN_INTERNAL_DENSE_STORAGE_CTOR_PLUGIN({})
+      }
+      m_rows = rows;
+    }
+    EIGEN_DEVICE_FUNC const T *data() const { return m_data; }
+    EIGEN_DEVICE_FUNC T *data() { return m_data; }
+};
+
+} // end namespace Eigen
+
+#endif // EIGEN_MATRIX_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/CoreIterators.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/CoreIterators.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/CoreIterators.h	(revision 3762)
@@ -0,0 +1,127 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2008-2014 Gael Guennebaud <gael.guennebaud@inria.fr>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_COREITERATORS_H
+#define EIGEN_COREITERATORS_H
+
+namespace Eigen { 
+
+/* This file contains the respective InnerIterator definition of the expressions defined in Eigen/Core
+ */
+
+namespace internal {
+
+template<typename XprType, typename EvaluatorKind>
+class inner_iterator_selector;
+
+}
+
+/** \class InnerIterator
+  * \brief An InnerIterator allows to loop over the element of any matrix expression.
+  * 
+  * \warning To be used with care because an evaluator is constructed every time an InnerIterator iterator is constructed.
+  * 
+  * TODO: add a usage example
+  */
+template<typename XprType>
+class InnerIterator
+{
+protected:
+  typedef internal::inner_iterator_selector<XprType, typename internal::evaluator_traits<XprType>::Kind> IteratorType;
+  typedef internal::evaluator<XprType> EvaluatorType;
+  typedef typename internal::traits<XprType>::Scalar Scalar;
+public:
+  /** Construct an iterator over the \a outerId -th row or column of \a xpr */
+  InnerIterator(const XprType &xpr, const Index &outerId)
+    : m_eval(xpr), m_iter(m_eval, outerId, xpr.innerSize())
+  {}
+  
+  /// \returns the value of the current coefficient.
+  EIGEN_STRONG_INLINE Scalar value() const          { return m_iter.value(); }
+  /** Increment the iterator \c *this to the next non-zero coefficient.
+    * Explicit zeros are not skipped over. To skip explicit zeros, see class SparseView
+    */
+  EIGEN_STRONG_INLINE InnerIterator& operator++()   { m_iter.operator++(); return *this; }
+  /// \returns the column or row index of the current coefficient.
+  EIGEN_STRONG_INLINE Index index() const           { return m_iter.index(); }
+  /// \returns the row index of the current coefficient.
+  EIGEN_STRONG_INLINE Index row() const             { return m_iter.row(); }
+  /// \returns the column index of the current coefficient.
+  EIGEN_STRONG_INLINE Index col() const             { return m_iter.col(); }
+  /// \returns \c true if the iterator \c *this still references a valid coefficient.
+  EIGEN_STRONG_INLINE operator bool() const         { return m_iter; }
+  
+protected:
+  EvaluatorType m_eval;
+  IteratorType m_iter;
+private:
+  // If you get here, then you're not using the right InnerIterator type, e.g.:
+  //   SparseMatrix<double,RowMajor> A;
+  //   SparseMatrix<double>::InnerIterator it(A,0);
+  template<typename T> InnerIterator(const EigenBase<T>&,Index outer);
+};
+
+namespace internal {
+
+// Generic inner iterator implementation for dense objects
+template<typename XprType>
+class inner_iterator_selector<XprType, IndexBased>
+{
+protected:
+  typedef evaluator<XprType> EvaluatorType;
+  typedef typename traits<XprType>::Scalar Scalar;
+  enum { IsRowMajor = (XprType::Flags&RowMajorBit)==RowMajorBit };
+  
+public:
+  EIGEN_STRONG_INLINE inner_iterator_selector(const EvaluatorType &eval, const Index &outerId, const Index &innerSize)
+    : m_eval(eval), m_inner(0), m_outer(outerId), m_end(innerSize)
+  {}
+
+  EIGEN_STRONG_INLINE Scalar value() const
+  {
+    return (IsRowMajor) ? m_eval.coeff(m_outer, m_inner)
+                        : m_eval.coeff(m_inner, m_outer);
+  }
+
+  EIGEN_STRONG_INLINE inner_iterator_selector& operator++() { m_inner++; return *this; }
+
+  EIGEN_STRONG_INLINE Index index() const { return m_inner; }
+  inline Index row() const { return IsRowMajor ? m_outer : index(); }
+  inline Index col() const { return IsRowMajor ? index() : m_outer; }
+
+  EIGEN_STRONG_INLINE operator bool() const { return m_inner < m_end && m_inner>=0; }
+
+protected:
+  const EvaluatorType& m_eval;
+  Index m_inner;
+  const Index m_outer;
+  const Index m_end;
+};
+
+// For iterator-based evaluator, inner-iterator is already implemented as
+// evaluator<>::InnerIterator
+template<typename XprType>
+class inner_iterator_selector<XprType, IteratorBased>
+ : public evaluator<XprType>::InnerIterator
+{
+protected:
+  typedef typename evaluator<XprType>::InnerIterator Base;
+  typedef evaluator<XprType> EvaluatorType;
+  
+public:
+  EIGEN_STRONG_INLINE inner_iterator_selector(const EvaluatorType &eval, const Index &outerId, const Index &/*innerSize*/)
+    : Base(eval, outerId)
+  {}  
+};
+
+} // end namespace internal
+
+} // end namespace Eigen
+
+#endif // EIGEN_COREITERATORS_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/ProductEvaluators.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/ProductEvaluators.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/ProductEvaluators.h	(revision 3762)
@@ -0,0 +1,1138 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2006-2008 Benoit Jacob <jacob.benoit.1@gmail.com>
+// Copyright (C) 2008-2010 Gael Guennebaud <gael.guennebaud@inria.fr>
+// Copyright (C) 2011 Jitse Niesen <jitse@maths.leeds.ac.uk>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+#ifndef EIGEN_PRODUCTEVALUATORS_H
+#define EIGEN_PRODUCTEVALUATORS_H
+
+namespace Eigen {
+  
+namespace internal {
+
+/** \internal
+  * Evaluator of a product expression.
+  * Since products require special treatments to handle all possible cases,
+  * we simply deffer the evaluation logic to a product_evaluator class
+  * which offers more partial specialization possibilities.
+  * 
+  * \sa class product_evaluator
+  */
+template<typename Lhs, typename Rhs, int Options>
+struct evaluator<Product<Lhs, Rhs, Options> > 
+ : public product_evaluator<Product<Lhs, Rhs, Options> >
+{
+  typedef Product<Lhs, Rhs, Options> XprType;
+  typedef product_evaluator<XprType> Base;
+  
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE explicit evaluator(const XprType& xpr) : Base(xpr) {}
+};
+ 
+// Catch "scalar * ( A * B )" and transform it to "(A*scalar) * B"
+// TODO we should apply that rule only if that's really helpful
+template<typename Lhs, typename Rhs, typename Scalar1, typename Scalar2, typename Plain1>
+struct evaluator_assume_aliasing<CwiseBinaryOp<internal::scalar_product_op<Scalar1,Scalar2>,
+                                               const CwiseNullaryOp<internal::scalar_constant_op<Scalar1>, Plain1>,
+                                               const Product<Lhs, Rhs, DefaultProduct> > >
+{
+  static const bool value = true;
+};
+template<typename Lhs, typename Rhs, typename Scalar1, typename Scalar2, typename Plain1>
+struct evaluator<CwiseBinaryOp<internal::scalar_product_op<Scalar1,Scalar2>,
+                               const CwiseNullaryOp<internal::scalar_constant_op<Scalar1>, Plain1>,
+                               const Product<Lhs, Rhs, DefaultProduct> > >
+ : public evaluator<Product<EIGEN_SCALAR_BINARYOP_EXPR_RETURN_TYPE(Scalar1,Lhs,product), Rhs, DefaultProduct> >
+{
+  typedef CwiseBinaryOp<internal::scalar_product_op<Scalar1,Scalar2>,
+                               const CwiseNullaryOp<internal::scalar_constant_op<Scalar1>, Plain1>,
+                               const Product<Lhs, Rhs, DefaultProduct> > XprType;
+  typedef evaluator<Product<EIGEN_SCALAR_BINARYOP_EXPR_RETURN_TYPE(Scalar1,Lhs,product), Rhs, DefaultProduct> > Base;
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE explicit evaluator(const XprType& xpr)
+    : Base(xpr.lhs().functor().m_other * xpr.rhs().lhs() * xpr.rhs().rhs())
+  {}
+};
+
+
+template<typename Lhs, typename Rhs, int DiagIndex>
+struct evaluator<Diagonal<const Product<Lhs, Rhs, DefaultProduct>, DiagIndex> > 
+ : public evaluator<Diagonal<const Product<Lhs, Rhs, LazyProduct>, DiagIndex> >
+{
+  typedef Diagonal<const Product<Lhs, Rhs, DefaultProduct>, DiagIndex> XprType;
+  typedef evaluator<Diagonal<const Product<Lhs, Rhs, LazyProduct>, DiagIndex> > Base;
+  
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE explicit evaluator(const XprType& xpr)
+    : Base(Diagonal<const Product<Lhs, Rhs, LazyProduct>, DiagIndex>(
+        Product<Lhs, Rhs, LazyProduct>(xpr.nestedExpression().lhs(), xpr.nestedExpression().rhs()),
+        xpr.index() ))
+  {}
+};
+
+
+// Helper class to perform a matrix product with the destination at hand.
+// Depending on the sizes of the factors, there are different evaluation strategies
+// as controlled by internal::product_type.
+template< typename Lhs, typename Rhs,
+          typename LhsShape = typename evaluator_traits<Lhs>::Shape,
+          typename RhsShape = typename evaluator_traits<Rhs>::Shape,
+          int ProductType = internal::product_type<Lhs,Rhs>::value>
+struct generic_product_impl;
+
+template<typename Lhs, typename Rhs>
+struct evaluator_assume_aliasing<Product<Lhs, Rhs, DefaultProduct> > {
+  static const bool value = true;
+};
+
+// This is the default evaluator implementation for products:
+// It creates a temporary and call generic_product_impl
+template<typename Lhs, typename Rhs, int Options, int ProductTag, typename LhsShape, typename RhsShape>
+struct product_evaluator<Product<Lhs, Rhs, Options>, ProductTag, LhsShape, RhsShape>
+  : public evaluator<typename Product<Lhs, Rhs, Options>::PlainObject>
+{
+  typedef Product<Lhs, Rhs, Options> XprType;
+  typedef typename XprType::PlainObject PlainObject;
+  typedef evaluator<PlainObject> Base;
+  enum {
+    Flags = Base::Flags | EvalBeforeNestingBit
+  };
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  explicit product_evaluator(const XprType& xpr)
+    : m_result(xpr.rows(), xpr.cols())
+  {
+    ::new (static_cast<Base*>(this)) Base(m_result);
+    
+// FIXME shall we handle nested_eval here?,
+// if so, then we must take care at removing the call to nested_eval in the specializations (e.g., in permutation_matrix_product, transposition_matrix_product, etc.)
+//     typedef typename internal::nested_eval<Lhs,Rhs::ColsAtCompileTime>::type LhsNested;
+//     typedef typename internal::nested_eval<Rhs,Lhs::RowsAtCompileTime>::type RhsNested;
+//     typedef typename internal::remove_all<LhsNested>::type LhsNestedCleaned;
+//     typedef typename internal::remove_all<RhsNested>::type RhsNestedCleaned;
+//     
+//     const LhsNested lhs(xpr.lhs());
+//     const RhsNested rhs(xpr.rhs());
+//   
+//     generic_product_impl<LhsNestedCleaned, RhsNestedCleaned>::evalTo(m_result, lhs, rhs);
+
+    generic_product_impl<Lhs, Rhs, LhsShape, RhsShape, ProductTag>::evalTo(m_result, xpr.lhs(), xpr.rhs());
+  }
+  
+protected:  
+  PlainObject m_result;
+};
+
+// The following three shortcuts are enabled only if the scalar types match excatly.
+// TODO: we could enable them for different scalar types when the product is not vectorized.
+
+// Dense = Product
+template< typename DstXprType, typename Lhs, typename Rhs, int Options, typename Scalar>
+struct Assignment<DstXprType, Product<Lhs,Rhs,Options>, internal::assign_op<Scalar,Scalar>, Dense2Dense,
+  typename enable_if<(Options==DefaultProduct || Options==AliasFreeProduct)>::type>
+{
+  typedef Product<Lhs,Rhs,Options> SrcXprType;
+  static EIGEN_STRONG_INLINE
+  void run(DstXprType &dst, const SrcXprType &src, const internal::assign_op<Scalar,Scalar> &)
+  {
+    Index dstRows = src.rows();
+    Index dstCols = src.cols();
+    if((dst.rows()!=dstRows) || (dst.cols()!=dstCols))
+      dst.resize(dstRows, dstCols);
+    // FIXME shall we handle nested_eval here?
+    generic_product_impl<Lhs, Rhs>::evalTo(dst, src.lhs(), src.rhs());
+  }
+};
+
+// Dense += Product
+template< typename DstXprType, typename Lhs, typename Rhs, int Options, typename Scalar>
+struct Assignment<DstXprType, Product<Lhs,Rhs,Options>, internal::add_assign_op<Scalar,Scalar>, Dense2Dense,
+  typename enable_if<(Options==DefaultProduct || Options==AliasFreeProduct)>::type>
+{
+  typedef Product<Lhs,Rhs,Options> SrcXprType;
+  static EIGEN_STRONG_INLINE
+  void run(DstXprType &dst, const SrcXprType &src, const internal::add_assign_op<Scalar,Scalar> &)
+  {
+    eigen_assert(dst.rows() == src.rows() && dst.cols() == src.cols());
+    // FIXME shall we handle nested_eval here?
+    generic_product_impl<Lhs, Rhs>::addTo(dst, src.lhs(), src.rhs());
+  }
+};
+
+// Dense -= Product
+template< typename DstXprType, typename Lhs, typename Rhs, int Options, typename Scalar>
+struct Assignment<DstXprType, Product<Lhs,Rhs,Options>, internal::sub_assign_op<Scalar,Scalar>, Dense2Dense,
+  typename enable_if<(Options==DefaultProduct || Options==AliasFreeProduct)>::type>
+{
+  typedef Product<Lhs,Rhs,Options> SrcXprType;
+  static EIGEN_STRONG_INLINE
+  void run(DstXprType &dst, const SrcXprType &src, const internal::sub_assign_op<Scalar,Scalar> &)
+  {
+    eigen_assert(dst.rows() == src.rows() && dst.cols() == src.cols());
+    // FIXME shall we handle nested_eval here?
+    generic_product_impl<Lhs, Rhs>::subTo(dst, src.lhs(), src.rhs());
+  }
+};
+
+
+// Dense ?= scalar * Product
+// TODO we should apply that rule if that's really helpful
+// for instance, this is not good for inner products
+template< typename DstXprType, typename Lhs, typename Rhs, typename AssignFunc, typename Scalar, typename ScalarBis, typename Plain>
+struct Assignment<DstXprType, CwiseBinaryOp<internal::scalar_product_op<ScalarBis,Scalar>, const CwiseNullaryOp<internal::scalar_constant_op<ScalarBis>,Plain>,
+                                           const Product<Lhs,Rhs,DefaultProduct> >, AssignFunc, Dense2Dense>
+{
+  typedef CwiseBinaryOp<internal::scalar_product_op<ScalarBis,Scalar>,
+                        const CwiseNullaryOp<internal::scalar_constant_op<ScalarBis>,Plain>,
+                        const Product<Lhs,Rhs,DefaultProduct> > SrcXprType;
+  static EIGEN_STRONG_INLINE
+  void run(DstXprType &dst, const SrcXprType &src, const AssignFunc& func)
+  {
+    call_assignment_no_alias(dst, (src.lhs().functor().m_other * src.rhs().lhs())*src.rhs().rhs(), func);
+  }
+};
+
+//----------------------------------------
+// Catch "Dense ?= xpr + Product<>" expression to save one temporary
+// FIXME we could probably enable these rules for any product, i.e., not only Dense and DefaultProduct
+
+template<typename OtherXpr, typename Lhs, typename Rhs>
+struct evaluator_assume_aliasing<CwiseBinaryOp<internal::scalar_sum_op<typename OtherXpr::Scalar,typename Product<Lhs,Rhs,DefaultProduct>::Scalar>, const OtherXpr,
+                                               const Product<Lhs,Rhs,DefaultProduct> >, DenseShape > {
+  static const bool value = true;
+};
+
+template<typename OtherXpr, typename Lhs, typename Rhs>
+struct evaluator_assume_aliasing<CwiseBinaryOp<internal::scalar_difference_op<typename OtherXpr::Scalar,typename Product<Lhs,Rhs,DefaultProduct>::Scalar>, const OtherXpr,
+                                               const Product<Lhs,Rhs,DefaultProduct> >, DenseShape > {
+  static const bool value = true;
+};
+
+template<typename DstXprType, typename OtherXpr, typename ProductType, typename Func1, typename Func2>
+struct assignment_from_xpr_op_product
+{
+  template<typename SrcXprType, typename InitialFunc>
+  static EIGEN_STRONG_INLINE
+  void run(DstXprType &dst, const SrcXprType &src, const InitialFunc& /*func*/)
+  {
+    call_assignment_no_alias(dst, src.lhs(), Func1());
+    call_assignment_no_alias(dst, src.rhs(), Func2());
+  }
+};
+
+#define EIGEN_CATCH_ASSIGN_XPR_OP_PRODUCT(ASSIGN_OP,BINOP,ASSIGN_OP2) \
+  template< typename DstXprType, typename OtherXpr, typename Lhs, typename Rhs, typename DstScalar, typename SrcScalar, typename OtherScalar,typename ProdScalar> \
+  struct Assignment<DstXprType, CwiseBinaryOp<internal::BINOP<OtherScalar,ProdScalar>, const OtherXpr, \
+                                            const Product<Lhs,Rhs,DefaultProduct> >, internal::ASSIGN_OP<DstScalar,SrcScalar>, Dense2Dense> \
+    : assignment_from_xpr_op_product<DstXprType, OtherXpr, Product<Lhs,Rhs,DefaultProduct>, internal::ASSIGN_OP<DstScalar,OtherScalar>, internal::ASSIGN_OP2<DstScalar,ProdScalar> > \
+  {}
+
+EIGEN_CATCH_ASSIGN_XPR_OP_PRODUCT(assign_op,    scalar_sum_op,add_assign_op);
+EIGEN_CATCH_ASSIGN_XPR_OP_PRODUCT(add_assign_op,scalar_sum_op,add_assign_op);
+EIGEN_CATCH_ASSIGN_XPR_OP_PRODUCT(sub_assign_op,scalar_sum_op,sub_assign_op);
+
+EIGEN_CATCH_ASSIGN_XPR_OP_PRODUCT(assign_op,    scalar_difference_op,sub_assign_op);
+EIGEN_CATCH_ASSIGN_XPR_OP_PRODUCT(add_assign_op,scalar_difference_op,sub_assign_op);
+EIGEN_CATCH_ASSIGN_XPR_OP_PRODUCT(sub_assign_op,scalar_difference_op,add_assign_op);
+
+//----------------------------------------
+
+template<typename Lhs, typename Rhs>
+struct generic_product_impl<Lhs,Rhs,DenseShape,DenseShape,InnerProduct>
+{
+  template<typename Dst>
+  static EIGEN_STRONG_INLINE void evalTo(Dst& dst, const Lhs& lhs, const Rhs& rhs)
+  {
+    dst.coeffRef(0,0) = (lhs.transpose().cwiseProduct(rhs)).sum();
+  }
+  
+  template<typename Dst>
+  static EIGEN_STRONG_INLINE void addTo(Dst& dst, const Lhs& lhs, const Rhs& rhs)
+  {
+    dst.coeffRef(0,0) += (lhs.transpose().cwiseProduct(rhs)).sum();
+  }
+  
+  template<typename Dst>
+  static EIGEN_STRONG_INLINE void subTo(Dst& dst, const Lhs& lhs, const Rhs& rhs)
+  { dst.coeffRef(0,0) -= (lhs.transpose().cwiseProduct(rhs)).sum(); }
+};
+
+
+/***********************************************************************
+*  Implementation of outer dense * dense vector product
+***********************************************************************/
+
+// Column major result
+template<typename Dst, typename Lhs, typename Rhs, typename Func>
+void outer_product_selector_run(Dst& dst, const Lhs &lhs, const Rhs &rhs, const Func& func, const false_type&)
+{
+  evaluator<Rhs> rhsEval(rhs);
+  typename nested_eval<Lhs,Rhs::SizeAtCompileTime>::type actual_lhs(lhs);
+  // FIXME if cols is large enough, then it might be useful to make sure that lhs is sequentially stored
+  // FIXME not very good if rhs is real and lhs complex while alpha is real too
+  const Index cols = dst.cols();
+  for (Index j=0; j<cols; ++j)
+    func(dst.col(j), rhsEval.coeff(Index(0),j) * actual_lhs);
+}
+
+// Row major result
+template<typename Dst, typename Lhs, typename Rhs, typename Func>
+void outer_product_selector_run(Dst& dst, const Lhs &lhs, const Rhs &rhs, const Func& func, const true_type&)
+{
+  evaluator<Lhs> lhsEval(lhs);
+  typename nested_eval<Rhs,Lhs::SizeAtCompileTime>::type actual_rhs(rhs);
+  // FIXME if rows is large enough, then it might be useful to make sure that rhs is sequentially stored
+  // FIXME not very good if lhs is real and rhs complex while alpha is real too
+  const Index rows = dst.rows();
+  for (Index i=0; i<rows; ++i)
+    func(dst.row(i), lhsEval.coeff(i,Index(0)) * actual_rhs);
+}
+
+template<typename Lhs, typename Rhs>
+struct generic_product_impl<Lhs,Rhs,DenseShape,DenseShape,OuterProduct>
+{
+  template<typename T> struct is_row_major : internal::conditional<(int(T::Flags)&RowMajorBit), internal::true_type, internal::false_type>::type {};
+  typedef typename Product<Lhs,Rhs>::Scalar Scalar;
+  
+  // TODO it would be nice to be able to exploit our *_assign_op functors for that purpose
+  struct set  { template<typename Dst, typename Src> void operator()(const Dst& dst, const Src& src) const { dst.const_cast_derived()  = src; } };
+  struct add  { template<typename Dst, typename Src> void operator()(const Dst& dst, const Src& src) const { dst.const_cast_derived() += src; } };
+  struct sub  { template<typename Dst, typename Src> void operator()(const Dst& dst, const Src& src) const { dst.const_cast_derived() -= src; } };
+  struct adds {
+    Scalar m_scale;
+    explicit adds(const Scalar& s) : m_scale(s) {}
+    template<typename Dst, typename Src> void operator()(const Dst& dst, const Src& src) const {
+      dst.const_cast_derived() += m_scale * src;
+    }
+  };
+  
+  template<typename Dst>
+  static EIGEN_STRONG_INLINE void evalTo(Dst& dst, const Lhs& lhs, const Rhs& rhs)
+  {
+    internal::outer_product_selector_run(dst, lhs, rhs, set(), is_row_major<Dst>());
+  }
+  
+  template<typename Dst>
+  static EIGEN_STRONG_INLINE void addTo(Dst& dst, const Lhs& lhs, const Rhs& rhs)
+  {
+    internal::outer_product_selector_run(dst, lhs, rhs, add(), is_row_major<Dst>());
+  }
+  
+  template<typename Dst>
+  static EIGEN_STRONG_INLINE void subTo(Dst& dst, const Lhs& lhs, const Rhs& rhs)
+  {
+    internal::outer_product_selector_run(dst, lhs, rhs, sub(), is_row_major<Dst>());
+  }
+  
+  template<typename Dst>
+  static EIGEN_STRONG_INLINE void scaleAndAddTo(Dst& dst, const Lhs& lhs, const Rhs& rhs, const Scalar& alpha)
+  {
+    internal::outer_product_selector_run(dst, lhs, rhs, adds(alpha), is_row_major<Dst>());
+  }
+  
+};
+
+
+// This base class provides default implementations for evalTo, addTo, subTo, in terms of scaleAndAddTo
+template<typename Lhs, typename Rhs, typename Derived>
+struct generic_product_impl_base
+{
+  typedef typename Product<Lhs,Rhs>::Scalar Scalar;
+  
+  template<typename Dst>
+  static EIGEN_STRONG_INLINE void evalTo(Dst& dst, const Lhs& lhs, const Rhs& rhs)
+  { dst.setZero(); scaleAndAddTo(dst, lhs, rhs, Scalar(1)); }
+
+  template<typename Dst>
+  static EIGEN_STRONG_INLINE void addTo(Dst& dst, const Lhs& lhs, const Rhs& rhs)
+  { scaleAndAddTo(dst,lhs, rhs, Scalar(1)); }
+
+  template<typename Dst>
+  static EIGEN_STRONG_INLINE void subTo(Dst& dst, const Lhs& lhs, const Rhs& rhs)
+  { scaleAndAddTo(dst, lhs, rhs, Scalar(-1)); }
+  
+  template<typename Dst>
+  static EIGEN_STRONG_INLINE void scaleAndAddTo(Dst& dst, const Lhs& lhs, const Rhs& rhs, const Scalar& alpha)
+  { Derived::scaleAndAddTo(dst,lhs,rhs,alpha); }
+
+};
+
+template<typename Lhs, typename Rhs>
+struct generic_product_impl<Lhs,Rhs,DenseShape,DenseShape,GemvProduct>
+  : generic_product_impl_base<Lhs,Rhs,generic_product_impl<Lhs,Rhs,DenseShape,DenseShape,GemvProduct> >
+{
+  typedef typename nested_eval<Lhs,1>::type LhsNested;
+  typedef typename nested_eval<Rhs,1>::type RhsNested;
+  typedef typename Product<Lhs,Rhs>::Scalar Scalar;
+  enum { Side = Lhs::IsVectorAtCompileTime ? OnTheLeft : OnTheRight };
+  typedef typename internal::remove_all<typename internal::conditional<int(Side)==OnTheRight,LhsNested,RhsNested>::type>::type MatrixType;
+
+  template<typename Dest>
+  static EIGEN_STRONG_INLINE void scaleAndAddTo(Dest& dst, const Lhs& lhs, const Rhs& rhs, const Scalar& alpha)
+  {
+    LhsNested actual_lhs(lhs);
+    RhsNested actual_rhs(rhs);
+    internal::gemv_dense_selector<Side,
+                            (int(MatrixType::Flags)&RowMajorBit) ? RowMajor : ColMajor,
+                            bool(internal::blas_traits<MatrixType>::HasUsableDirectAccess)
+                           >::run(actual_lhs, actual_rhs, dst, alpha);
+  }
+};
+
+template<typename Lhs, typename Rhs>
+struct generic_product_impl<Lhs,Rhs,DenseShape,DenseShape,CoeffBasedProductMode> 
+{
+  typedef typename Product<Lhs,Rhs>::Scalar Scalar;
+  
+  template<typename Dst>
+  static EIGEN_STRONG_INLINE void evalTo(Dst& dst, const Lhs& lhs, const Rhs& rhs)
+  {
+    // Same as: dst.noalias() = lhs.lazyProduct(rhs);
+    // but easier on the compiler side
+    call_assignment_no_alias(dst, lhs.lazyProduct(rhs), internal::assign_op<typename Dst::Scalar,Scalar>());
+  }
+
+  template<typename Dst>
+  static EIGEN_STRONG_INLINE void addTo(Dst& dst, const Lhs& lhs, const Rhs& rhs)
+  {
+    // dst.noalias() += lhs.lazyProduct(rhs);
+    call_assignment_no_alias(dst, lhs.lazyProduct(rhs), internal::add_assign_op<typename Dst::Scalar,Scalar>());
+  }
+  
+  template<typename Dst>
+  static EIGEN_STRONG_INLINE void subTo(Dst& dst, const Lhs& lhs, const Rhs& rhs)
+  {
+    // dst.noalias() -= lhs.lazyProduct(rhs);
+    call_assignment_no_alias(dst, lhs.lazyProduct(rhs), internal::sub_assign_op<typename Dst::Scalar,Scalar>());
+  }
+
+  // Catch "dst {,+,-}= (s*A)*B" and evaluate it lazily by moving out the scalar factor:
+  //    dst {,+,-}= s * (A.lazyProduct(B))
+  // This is a huge benefit for heap-allocated matrix types as it save one costly allocation.
+  // For them, this strategy is also faster than simply by-passing the heap allocation through
+  // stack allocation.
+  // For fixed sizes matrices, this is less obvious, it is sometimes x2 faster, but sometimes x3 slower,
+  // and the behavior depends also a lot on the compiler... so let's be conservative and enable them for dynamic-size only,
+  // that is when coming from generic_product_impl<...,GemmProduct> in file GeneralMatrixMatrix.h
+  template<typename Dst, typename Scalar1, typename Scalar2, typename Plain1, typename Xpr2, typename Func>
+  static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  void eval_dynamic(Dst& dst, const CwiseBinaryOp<internal::scalar_product_op<Scalar1,Scalar2>,
+                                           const CwiseNullaryOp<internal::scalar_constant_op<Scalar1>, Plain1>, Xpr2>& lhs, const Rhs& rhs, const Func &func)
+  {
+    call_assignment_no_alias(dst, lhs.lhs().functor().m_other * lhs.rhs().lazyProduct(rhs), func);
+  }
+
+  // Here, we we always have LhsT==Lhs, but we need to make it a template type to make the above
+  // overload more specialized.
+  template<typename Dst, typename LhsT, typename Func>
+  static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  void eval_dynamic(Dst& dst, const LhsT& lhs, const Rhs& rhs, const Func &func)
+  {
+    call_assignment_no_alias(dst, lhs.lazyProduct(rhs), func);
+  }
+  
+  
+//   template<typename Dst>
+//   static inline void scaleAndAddTo(Dst& dst, const Lhs& lhs, const Rhs& rhs, const Scalar& alpha)
+//   { dst.noalias() += alpha * lhs.lazyProduct(rhs); }
+};
+
+// This specialization enforces the use of a coefficient-based evaluation strategy
+template<typename Lhs, typename Rhs>
+struct generic_product_impl<Lhs,Rhs,DenseShape,DenseShape,LazyCoeffBasedProductMode>
+  : generic_product_impl<Lhs,Rhs,DenseShape,DenseShape,CoeffBasedProductMode> {};
+
+// Case 2: Evaluate coeff by coeff
+//
+// This is mostly taken from CoeffBasedProduct.h
+// The main difference is that we add an extra argument to the etor_product_*_impl::run() function
+// for the inner dimension of the product, because evaluator object do not know their size.
+
+template<int Traversal, int UnrollingIndex, typename Lhs, typename Rhs, typename RetScalar>
+struct etor_product_coeff_impl;
+
+template<int StorageOrder, int UnrollingIndex, typename Lhs, typename Rhs, typename Packet, int LoadMode>
+struct etor_product_packet_impl;
+
+template<typename Lhs, typename Rhs, int ProductTag>
+struct product_evaluator<Product<Lhs, Rhs, LazyProduct>, ProductTag, DenseShape, DenseShape>
+    : evaluator_base<Product<Lhs, Rhs, LazyProduct> >
+{
+  typedef Product<Lhs, Rhs, LazyProduct> XprType;
+  typedef typename XprType::Scalar Scalar;
+  typedef typename XprType::CoeffReturnType CoeffReturnType;
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  explicit product_evaluator(const XprType& xpr)
+    : m_lhs(xpr.lhs()),
+      m_rhs(xpr.rhs()),
+      m_lhsImpl(m_lhs),     // FIXME the creation of the evaluator objects should result in a no-op, but check that!
+      m_rhsImpl(m_rhs),     //       Moreover, they are only useful for the packet path, so we could completely disable them when not needed,
+                            //       or perhaps declare them on the fly on the packet method... We have experiment to check what's best.
+      m_innerDim(xpr.lhs().cols())
+  {
+    EIGEN_INTERNAL_CHECK_COST_VALUE(NumTraits<Scalar>::MulCost);
+    EIGEN_INTERNAL_CHECK_COST_VALUE(NumTraits<Scalar>::AddCost);
+    EIGEN_INTERNAL_CHECK_COST_VALUE(CoeffReadCost);
+#if 0
+    std::cerr << "LhsOuterStrideBytes=  " << LhsOuterStrideBytes << "\n";
+    std::cerr << "RhsOuterStrideBytes=  " << RhsOuterStrideBytes << "\n";
+    std::cerr << "LhsAlignment=         " << LhsAlignment << "\n";
+    std::cerr << "RhsAlignment=         " << RhsAlignment << "\n";
+    std::cerr << "CanVectorizeLhs=      " << CanVectorizeLhs << "\n";
+    std::cerr << "CanVectorizeRhs=      " << CanVectorizeRhs << "\n";
+    std::cerr << "CanVectorizeInner=    " << CanVectorizeInner << "\n";
+    std::cerr << "EvalToRowMajor=       " << EvalToRowMajor << "\n";
+    std::cerr << "Alignment=            " << Alignment << "\n";
+    std::cerr << "Flags=                " << Flags << "\n";
+#endif
+  }
+
+  // Everything below here is taken from CoeffBasedProduct.h
+
+  typedef typename internal::nested_eval<Lhs,Rhs::ColsAtCompileTime>::type LhsNested;
+  typedef typename internal::nested_eval<Rhs,Lhs::RowsAtCompileTime>::type RhsNested;
+  
+  typedef typename internal::remove_all<LhsNested>::type LhsNestedCleaned;
+  typedef typename internal::remove_all<RhsNested>::type RhsNestedCleaned;
+
+  typedef evaluator<LhsNestedCleaned> LhsEtorType;
+  typedef evaluator<RhsNestedCleaned> RhsEtorType;
+
+  enum {
+    RowsAtCompileTime = LhsNestedCleaned::RowsAtCompileTime,
+    ColsAtCompileTime = RhsNestedCleaned::ColsAtCompileTime,
+    InnerSize = EIGEN_SIZE_MIN_PREFER_FIXED(LhsNestedCleaned::ColsAtCompileTime, RhsNestedCleaned::RowsAtCompileTime),
+    MaxRowsAtCompileTime = LhsNestedCleaned::MaxRowsAtCompileTime,
+    MaxColsAtCompileTime = RhsNestedCleaned::MaxColsAtCompileTime
+  };
+
+  typedef typename find_best_packet<Scalar,RowsAtCompileTime>::type LhsVecPacketType;
+  typedef typename find_best_packet<Scalar,ColsAtCompileTime>::type RhsVecPacketType;
+
+  enum {
+      
+    LhsCoeffReadCost = LhsEtorType::CoeffReadCost,
+    RhsCoeffReadCost = RhsEtorType::CoeffReadCost,
+    CoeffReadCost = InnerSize==0 ? NumTraits<Scalar>::ReadCost
+                  : InnerSize == Dynamic ? HugeCost
+                  : InnerSize * (NumTraits<Scalar>::MulCost + LhsCoeffReadCost + RhsCoeffReadCost)
+                    + (InnerSize - 1) * NumTraits<Scalar>::AddCost,
+
+    Unroll = CoeffReadCost <= EIGEN_UNROLLING_LIMIT,
+    
+    LhsFlags = LhsEtorType::Flags,
+    RhsFlags = RhsEtorType::Flags,
+    
+    LhsRowMajor = LhsFlags & RowMajorBit,
+    RhsRowMajor = RhsFlags & RowMajorBit,
+
+    LhsVecPacketSize = unpacket_traits<LhsVecPacketType>::size,
+    RhsVecPacketSize = unpacket_traits<RhsVecPacketType>::size,
+
+    // Here, we don't care about alignment larger than the usable packet size.
+    LhsAlignment = EIGEN_PLAIN_ENUM_MIN(LhsEtorType::Alignment,LhsVecPacketSize*int(sizeof(typename LhsNestedCleaned::Scalar))),
+    RhsAlignment = EIGEN_PLAIN_ENUM_MIN(RhsEtorType::Alignment,RhsVecPacketSize*int(sizeof(typename RhsNestedCleaned::Scalar))),
+      
+    SameType = is_same<typename LhsNestedCleaned::Scalar,typename RhsNestedCleaned::Scalar>::value,
+
+    CanVectorizeRhs = bool(RhsRowMajor) && (RhsFlags & PacketAccessBit) && (ColsAtCompileTime!=1),
+    CanVectorizeLhs = (!LhsRowMajor) && (LhsFlags & PacketAccessBit) && (RowsAtCompileTime!=1),
+
+    EvalToRowMajor = (MaxRowsAtCompileTime==1&&MaxColsAtCompileTime!=1) ? 1
+                    : (MaxColsAtCompileTime==1&&MaxRowsAtCompileTime!=1) ? 0
+                    : (bool(RhsRowMajor) && !CanVectorizeLhs),
+
+    Flags = ((unsigned int)(LhsFlags | RhsFlags) & HereditaryBits & ~RowMajorBit)
+          | (EvalToRowMajor ? RowMajorBit : 0)
+          // TODO enable vectorization for mixed types
+          | (SameType && (CanVectorizeLhs || CanVectorizeRhs) ? PacketAccessBit : 0)
+          | (XprType::IsVectorAtCompileTime ? LinearAccessBit : 0),
+          
+    LhsOuterStrideBytes = int(LhsNestedCleaned::OuterStrideAtCompileTime) * int(sizeof(typename LhsNestedCleaned::Scalar)),
+    RhsOuterStrideBytes = int(RhsNestedCleaned::OuterStrideAtCompileTime) * int(sizeof(typename RhsNestedCleaned::Scalar)),
+
+    Alignment = bool(CanVectorizeLhs) ? (LhsOuterStrideBytes<=0 || (int(LhsOuterStrideBytes) % EIGEN_PLAIN_ENUM_MAX(1,LhsAlignment))!=0 ? 0 : LhsAlignment)
+              : bool(CanVectorizeRhs) ? (RhsOuterStrideBytes<=0 || (int(RhsOuterStrideBytes) % EIGEN_PLAIN_ENUM_MAX(1,RhsAlignment))!=0 ? 0 : RhsAlignment)
+              : 0,
+
+    /* CanVectorizeInner deserves special explanation. It does not affect the product flags. It is not used outside
+     * of Product. If the Product itself is not a packet-access expression, there is still a chance that the inner
+     * loop of the product might be vectorized. This is the meaning of CanVectorizeInner. Since it doesn't affect
+     * the Flags, it is safe to make this value depend on ActualPacketAccessBit, that doesn't affect the ABI.
+     */
+    CanVectorizeInner =    SameType
+                        && LhsRowMajor
+                        && (!RhsRowMajor)
+                        && (LhsFlags & RhsFlags & ActualPacketAccessBit)
+                        && (InnerSize % packet_traits<Scalar>::size == 0)
+  };
+  
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const CoeffReturnType coeff(Index row, Index col) const
+  {
+    return (m_lhs.row(row).transpose().cwiseProduct( m_rhs.col(col) )).sum();
+  }
+
+  /* Allow index-based non-packet access. It is impossible though to allow index-based packed access,
+   * which is why we don't set the LinearAccessBit.
+   * TODO: this seems possible when the result is a vector
+   */
+  EIGEN_DEVICE_FUNC const CoeffReturnType coeff(Index index) const
+  {
+    const Index row = (RowsAtCompileTime == 1 || MaxRowsAtCompileTime==1) ? 0 : index;
+    const Index col = (RowsAtCompileTime == 1 || MaxRowsAtCompileTime==1) ? index : 0;
+    return (m_lhs.row(row).transpose().cwiseProduct( m_rhs.col(col) )).sum();
+  }
+
+  template<int LoadMode, typename PacketType>
+  const PacketType packet(Index row, Index col) const
+  {
+    PacketType res;
+    typedef etor_product_packet_impl<bool(int(Flags)&RowMajorBit) ? RowMajor : ColMajor,
+                                     Unroll ? int(InnerSize) : Dynamic,
+                                     LhsEtorType, RhsEtorType, PacketType, LoadMode> PacketImpl;
+    PacketImpl::run(row, col, m_lhsImpl, m_rhsImpl, m_innerDim, res);
+    return res;
+  }
+
+  template<int LoadMode, typename PacketType>
+  const PacketType packet(Index index) const
+  {
+    const Index row = (RowsAtCompileTime == 1 || MaxRowsAtCompileTime==1) ? 0 : index;
+    const Index col = (RowsAtCompileTime == 1 || MaxRowsAtCompileTime==1) ? index : 0;
+    return packet<LoadMode,PacketType>(row,col);
+  }
+
+protected:
+  typename internal::add_const_on_value_type<LhsNested>::type m_lhs;
+  typename internal::add_const_on_value_type<RhsNested>::type m_rhs;
+  
+  LhsEtorType m_lhsImpl;
+  RhsEtorType m_rhsImpl;
+
+  // TODO: Get rid of m_innerDim if known at compile time
+  Index m_innerDim;
+};
+
+template<typename Lhs, typename Rhs>
+struct product_evaluator<Product<Lhs, Rhs, DefaultProduct>, LazyCoeffBasedProductMode, DenseShape, DenseShape>
+  : product_evaluator<Product<Lhs, Rhs, LazyProduct>, CoeffBasedProductMode, DenseShape, DenseShape>
+{
+  typedef Product<Lhs, Rhs, DefaultProduct> XprType;
+  typedef Product<Lhs, Rhs, LazyProduct> BaseProduct;
+  typedef product_evaluator<BaseProduct, CoeffBasedProductMode, DenseShape, DenseShape> Base;
+  enum {
+    Flags = Base::Flags | EvalBeforeNestingBit
+  };
+  EIGEN_DEVICE_FUNC explicit product_evaluator(const XprType& xpr)
+    : Base(BaseProduct(xpr.lhs(),xpr.rhs()))
+  {}
+};
+
+/****************************************
+*** Coeff based product, Packet path  ***
+****************************************/
+
+template<int UnrollingIndex, typename Lhs, typename Rhs, typename Packet, int LoadMode>
+struct etor_product_packet_impl<RowMajor, UnrollingIndex, Lhs, Rhs, Packet, LoadMode>
+{
+  static EIGEN_STRONG_INLINE void run(Index row, Index col, const Lhs& lhs, const Rhs& rhs, Index innerDim, Packet &res)
+  {
+    etor_product_packet_impl<RowMajor, UnrollingIndex-1, Lhs, Rhs, Packet, LoadMode>::run(row, col, lhs, rhs, innerDim, res);
+    res =  pmadd(pset1<Packet>(lhs.coeff(row, Index(UnrollingIndex-1))), rhs.template packet<LoadMode,Packet>(Index(UnrollingIndex-1), col), res);
+  }
+};
+
+template<int UnrollingIndex, typename Lhs, typename Rhs, typename Packet, int LoadMode>
+struct etor_product_packet_impl<ColMajor, UnrollingIndex, Lhs, Rhs, Packet, LoadMode>
+{
+  static EIGEN_STRONG_INLINE void run(Index row, Index col, const Lhs& lhs, const Rhs& rhs, Index innerDim, Packet &res)
+  {
+    etor_product_packet_impl<ColMajor, UnrollingIndex-1, Lhs, Rhs, Packet, LoadMode>::run(row, col, lhs, rhs, innerDim, res);
+    res =  pmadd(lhs.template packet<LoadMode,Packet>(row, Index(UnrollingIndex-1)), pset1<Packet>(rhs.coeff(Index(UnrollingIndex-1), col)), res);
+  }
+};
+
+template<typename Lhs, typename Rhs, typename Packet, int LoadMode>
+struct etor_product_packet_impl<RowMajor, 1, Lhs, Rhs, Packet, LoadMode>
+{
+  static EIGEN_STRONG_INLINE void run(Index row, Index col, const Lhs& lhs, const Rhs& rhs, Index /*innerDim*/, Packet &res)
+  {
+    res = pmul(pset1<Packet>(lhs.coeff(row, Index(0))),rhs.template packet<LoadMode,Packet>(Index(0), col));
+  }
+};
+
+template<typename Lhs, typename Rhs, typename Packet, int LoadMode>
+struct etor_product_packet_impl<ColMajor, 1, Lhs, Rhs, Packet, LoadMode>
+{
+  static EIGEN_STRONG_INLINE void run(Index row, Index col, const Lhs& lhs, const Rhs& rhs, Index /*innerDim*/, Packet &res)
+  {
+    res = pmul(lhs.template packet<LoadMode,Packet>(row, Index(0)), pset1<Packet>(rhs.coeff(Index(0), col)));
+  }
+};
+
+template<typename Lhs, typename Rhs, typename Packet, int LoadMode>
+struct etor_product_packet_impl<RowMajor, 0, Lhs, Rhs, Packet, LoadMode>
+{
+  static EIGEN_STRONG_INLINE void run(Index /*row*/, Index /*col*/, const Lhs& /*lhs*/, const Rhs& /*rhs*/, Index /*innerDim*/, Packet &res)
+  {
+    res = pset1<Packet>(typename unpacket_traits<Packet>::type(0));
+  }
+};
+
+template<typename Lhs, typename Rhs, typename Packet, int LoadMode>
+struct etor_product_packet_impl<ColMajor, 0, Lhs, Rhs, Packet, LoadMode>
+{
+  static EIGEN_STRONG_INLINE void run(Index /*row*/, Index /*col*/, const Lhs& /*lhs*/, const Rhs& /*rhs*/, Index /*innerDim*/, Packet &res)
+  {
+    res = pset1<Packet>(typename unpacket_traits<Packet>::type(0));
+  }
+};
+
+template<typename Lhs, typename Rhs, typename Packet, int LoadMode>
+struct etor_product_packet_impl<RowMajor, Dynamic, Lhs, Rhs, Packet, LoadMode>
+{
+  static EIGEN_STRONG_INLINE void run(Index row, Index col, const Lhs& lhs, const Rhs& rhs, Index innerDim, Packet& res)
+  {
+    res = pset1<Packet>(typename unpacket_traits<Packet>::type(0));
+    for(Index i = 0; i < innerDim; ++i)
+      res =  pmadd(pset1<Packet>(lhs.coeff(row, i)), rhs.template packet<LoadMode,Packet>(i, col), res);
+  }
+};
+
+template<typename Lhs, typename Rhs, typename Packet, int LoadMode>
+struct etor_product_packet_impl<ColMajor, Dynamic, Lhs, Rhs, Packet, LoadMode>
+{
+  static EIGEN_STRONG_INLINE void run(Index row, Index col, const Lhs& lhs, const Rhs& rhs, Index innerDim, Packet& res)
+  {
+    res = pset1<Packet>(typename unpacket_traits<Packet>::type(0));
+    for(Index i = 0; i < innerDim; ++i)
+      res =  pmadd(lhs.template packet<LoadMode,Packet>(row, i), pset1<Packet>(rhs.coeff(i, col)), res);
+  }
+};
+
+
+/***************************************************************************
+* Triangular products
+***************************************************************************/
+template<int Mode, bool LhsIsTriangular,
+         typename Lhs, bool LhsIsVector,
+         typename Rhs, bool RhsIsVector>
+struct triangular_product_impl;
+
+template<typename Lhs, typename Rhs, int ProductTag>
+struct generic_product_impl<Lhs,Rhs,TriangularShape,DenseShape,ProductTag>
+  : generic_product_impl_base<Lhs,Rhs,generic_product_impl<Lhs,Rhs,TriangularShape,DenseShape,ProductTag> >
+{
+  typedef typename Product<Lhs,Rhs>::Scalar Scalar;
+  
+  template<typename Dest>
+  static void scaleAndAddTo(Dest& dst, const Lhs& lhs, const Rhs& rhs, const Scalar& alpha)
+  {
+    triangular_product_impl<Lhs::Mode,true,typename Lhs::MatrixType,false,Rhs, Rhs::ColsAtCompileTime==1>
+        ::run(dst, lhs.nestedExpression(), rhs, alpha);
+  }
+};
+
+template<typename Lhs, typename Rhs, int ProductTag>
+struct generic_product_impl<Lhs,Rhs,DenseShape,TriangularShape,ProductTag>
+: generic_product_impl_base<Lhs,Rhs,generic_product_impl<Lhs,Rhs,DenseShape,TriangularShape,ProductTag> >
+{
+  typedef typename Product<Lhs,Rhs>::Scalar Scalar;
+  
+  template<typename Dest>
+  static void scaleAndAddTo(Dest& dst, const Lhs& lhs, const Rhs& rhs, const Scalar& alpha)
+  {
+    triangular_product_impl<Rhs::Mode,false,Lhs,Lhs::RowsAtCompileTime==1, typename Rhs::MatrixType, false>::run(dst, lhs, rhs.nestedExpression(), alpha);
+  }
+};
+
+
+/***************************************************************************
+* SelfAdjoint products
+***************************************************************************/
+template <typename Lhs, int LhsMode, bool LhsIsVector,
+          typename Rhs, int RhsMode, bool RhsIsVector>
+struct selfadjoint_product_impl;
+
+template<typename Lhs, typename Rhs, int ProductTag>
+struct generic_product_impl<Lhs,Rhs,SelfAdjointShape,DenseShape,ProductTag>
+  : generic_product_impl_base<Lhs,Rhs,generic_product_impl<Lhs,Rhs,SelfAdjointShape,DenseShape,ProductTag> >
+{
+  typedef typename Product<Lhs,Rhs>::Scalar Scalar;
+  
+  template<typename Dest>
+  static void scaleAndAddTo(Dest& dst, const Lhs& lhs, const Rhs& rhs, const Scalar& alpha)
+  {
+    selfadjoint_product_impl<typename Lhs::MatrixType,Lhs::Mode,false,Rhs,0,Rhs::IsVectorAtCompileTime>::run(dst, lhs.nestedExpression(), rhs, alpha);
+  }
+};
+
+template<typename Lhs, typename Rhs, int ProductTag>
+struct generic_product_impl<Lhs,Rhs,DenseShape,SelfAdjointShape,ProductTag>
+: generic_product_impl_base<Lhs,Rhs,generic_product_impl<Lhs,Rhs,DenseShape,SelfAdjointShape,ProductTag> >
+{
+  typedef typename Product<Lhs,Rhs>::Scalar Scalar;
+  
+  template<typename Dest>
+  static void scaleAndAddTo(Dest& dst, const Lhs& lhs, const Rhs& rhs, const Scalar& alpha)
+  {
+    selfadjoint_product_impl<Lhs,0,Lhs::IsVectorAtCompileTime,typename Rhs::MatrixType,Rhs::Mode,false>::run(dst, lhs, rhs.nestedExpression(), alpha);
+  }
+};
+
+
+/***************************************************************************
+* Diagonal products
+***************************************************************************/
+  
+template<typename MatrixType, typename DiagonalType, typename Derived, int ProductOrder>
+struct diagonal_product_evaluator_base
+  : evaluator_base<Derived>
+{
+   typedef typename ScalarBinaryOpTraits<typename MatrixType::Scalar, typename DiagonalType::Scalar>::ReturnType Scalar;
+public:
+  enum {
+    CoeffReadCost = NumTraits<Scalar>::MulCost + evaluator<MatrixType>::CoeffReadCost + evaluator<DiagonalType>::CoeffReadCost,
+    
+    MatrixFlags = evaluator<MatrixType>::Flags,
+    DiagFlags = evaluator<DiagonalType>::Flags,
+    _StorageOrder = MatrixFlags & RowMajorBit ? RowMajor : ColMajor,
+    _ScalarAccessOnDiag =  !((int(_StorageOrder) == ColMajor && int(ProductOrder) == OnTheLeft)
+                           ||(int(_StorageOrder) == RowMajor && int(ProductOrder) == OnTheRight)),
+    _SameTypes = is_same<typename MatrixType::Scalar, typename DiagonalType::Scalar>::value,
+    // FIXME currently we need same types, but in the future the next rule should be the one
+    //_Vectorizable = bool(int(MatrixFlags)&PacketAccessBit) && ((!_PacketOnDiag) || (_SameTypes && bool(int(DiagFlags)&PacketAccessBit))),
+    _Vectorizable = bool(int(MatrixFlags)&PacketAccessBit) && _SameTypes && (_ScalarAccessOnDiag || (bool(int(DiagFlags)&PacketAccessBit))),
+    _LinearAccessMask = (MatrixType::RowsAtCompileTime==1 || MatrixType::ColsAtCompileTime==1) ? LinearAccessBit : 0,
+    Flags = ((HereditaryBits|_LinearAccessMask) & (unsigned int)(MatrixFlags)) | (_Vectorizable ? PacketAccessBit : 0),
+    Alignment = evaluator<MatrixType>::Alignment,
+
+    AsScalarProduct =     (DiagonalType::SizeAtCompileTime==1)
+                      ||  (DiagonalType::SizeAtCompileTime==Dynamic && MatrixType::RowsAtCompileTime==1 && ProductOrder==OnTheLeft)
+                      ||  (DiagonalType::SizeAtCompileTime==Dynamic && MatrixType::ColsAtCompileTime==1 && ProductOrder==OnTheRight)
+  };
+  
+  diagonal_product_evaluator_base(const MatrixType &mat, const DiagonalType &diag)
+    : m_diagImpl(diag), m_matImpl(mat)
+  {
+    EIGEN_INTERNAL_CHECK_COST_VALUE(NumTraits<Scalar>::MulCost);
+    EIGEN_INTERNAL_CHECK_COST_VALUE(CoeffReadCost);
+  }
+  
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Scalar coeff(Index idx) const
+  {
+    if(AsScalarProduct)
+      return m_diagImpl.coeff(0) * m_matImpl.coeff(idx);
+    else
+      return m_diagImpl.coeff(idx) * m_matImpl.coeff(idx);
+  }
+  
+protected:
+  template<int LoadMode,typename PacketType>
+  EIGEN_STRONG_INLINE PacketType packet_impl(Index row, Index col, Index id, internal::true_type) const
+  {
+    return internal::pmul(m_matImpl.template packet<LoadMode,PacketType>(row, col),
+                          internal::pset1<PacketType>(m_diagImpl.coeff(id)));
+  }
+  
+  template<int LoadMode,typename PacketType>
+  EIGEN_STRONG_INLINE PacketType packet_impl(Index row, Index col, Index id, internal::false_type) const
+  {
+    enum {
+      InnerSize = (MatrixType::Flags & RowMajorBit) ? MatrixType::ColsAtCompileTime : MatrixType::RowsAtCompileTime,
+      DiagonalPacketLoadMode = EIGEN_PLAIN_ENUM_MIN(LoadMode,((InnerSize%16) == 0) ? int(Aligned16) : int(evaluator<DiagonalType>::Alignment)) // FIXME hardcoded 16!!
+    };
+    return internal::pmul(m_matImpl.template packet<LoadMode,PacketType>(row, col),
+                          m_diagImpl.template packet<DiagonalPacketLoadMode,PacketType>(id));
+  }
+  
+  evaluator<DiagonalType> m_diagImpl;
+  evaluator<MatrixType>   m_matImpl;
+};
+
+// diagonal * dense
+template<typename Lhs, typename Rhs, int ProductKind, int ProductTag>
+struct product_evaluator<Product<Lhs, Rhs, ProductKind>, ProductTag, DiagonalShape, DenseShape>
+  : diagonal_product_evaluator_base<Rhs, typename Lhs::DiagonalVectorType, Product<Lhs, Rhs, LazyProduct>, OnTheLeft>
+{
+  typedef diagonal_product_evaluator_base<Rhs, typename Lhs::DiagonalVectorType, Product<Lhs, Rhs, LazyProduct>, OnTheLeft> Base;
+  using Base::m_diagImpl;
+  using Base::m_matImpl;
+  using Base::coeff;
+  typedef typename Base::Scalar Scalar;
+  
+  typedef Product<Lhs, Rhs, ProductKind> XprType;
+  typedef typename XprType::PlainObject PlainObject;
+  
+  enum {
+    StorageOrder = int(Rhs::Flags) & RowMajorBit ? RowMajor : ColMajor
+  };
+
+  EIGEN_DEVICE_FUNC explicit product_evaluator(const XprType& xpr)
+    : Base(xpr.rhs(), xpr.lhs().diagonal())
+  {
+  }
+  
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Scalar coeff(Index row, Index col) const
+  {
+    return m_diagImpl.coeff(row) * m_matImpl.coeff(row, col);
+  }
+  
+#ifndef __CUDACC__
+  template<int LoadMode,typename PacketType>
+  EIGEN_STRONG_INLINE PacketType packet(Index row, Index col) const
+  {
+    // FIXME: NVCC used to complain about the template keyword, but we have to check whether this is still the case.
+    // See also similar calls below.
+    return this->template packet_impl<LoadMode,PacketType>(row,col, row,
+                                 typename internal::conditional<int(StorageOrder)==RowMajor, internal::true_type, internal::false_type>::type());
+  }
+  
+  template<int LoadMode,typename PacketType>
+  EIGEN_STRONG_INLINE PacketType packet(Index idx) const
+  {
+    return packet<LoadMode,PacketType>(int(StorageOrder)==ColMajor?idx:0,int(StorageOrder)==ColMajor?0:idx);
+  }
+#endif
+};
+
+// dense * diagonal
+template<typename Lhs, typename Rhs, int ProductKind, int ProductTag>
+struct product_evaluator<Product<Lhs, Rhs, ProductKind>, ProductTag, DenseShape, DiagonalShape>
+  : diagonal_product_evaluator_base<Lhs, typename Rhs::DiagonalVectorType, Product<Lhs, Rhs, LazyProduct>, OnTheRight>
+{
+  typedef diagonal_product_evaluator_base<Lhs, typename Rhs::DiagonalVectorType, Product<Lhs, Rhs, LazyProduct>, OnTheRight> Base;
+  using Base::m_diagImpl;
+  using Base::m_matImpl;
+  using Base::coeff;
+  typedef typename Base::Scalar Scalar;
+  
+  typedef Product<Lhs, Rhs, ProductKind> XprType;
+  typedef typename XprType::PlainObject PlainObject;
+  
+  enum { StorageOrder = int(Lhs::Flags) & RowMajorBit ? RowMajor : ColMajor };
+
+  EIGEN_DEVICE_FUNC explicit product_evaluator(const XprType& xpr)
+    : Base(xpr.lhs(), xpr.rhs().diagonal())
+  {
+  }
+  
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Scalar coeff(Index row, Index col) const
+  {
+    return m_matImpl.coeff(row, col) * m_diagImpl.coeff(col);
+  }
+  
+#ifndef __CUDACC__
+  template<int LoadMode,typename PacketType>
+  EIGEN_STRONG_INLINE PacketType packet(Index row, Index col) const
+  {
+    return this->template packet_impl<LoadMode,PacketType>(row,col, col,
+                                 typename internal::conditional<int(StorageOrder)==ColMajor, internal::true_type, internal::false_type>::type());
+  }
+  
+  template<int LoadMode,typename PacketType>
+  EIGEN_STRONG_INLINE PacketType packet(Index idx) const
+  {
+    return packet<LoadMode,PacketType>(int(StorageOrder)==ColMajor?idx:0,int(StorageOrder)==ColMajor?0:idx);
+  }
+#endif
+};
+
+/***************************************************************************
+* Products with permutation matrices
+***************************************************************************/
+
+/** \internal
+  * \class permutation_matrix_product
+  * Internal helper class implementing the product between a permutation matrix and a matrix.
+  * This class is specialized for DenseShape below and for SparseShape in SparseCore/SparsePermutation.h
+  */
+template<typename ExpressionType, int Side, bool Transposed, typename ExpressionShape>
+struct permutation_matrix_product;
+
+template<typename ExpressionType, int Side, bool Transposed>
+struct permutation_matrix_product<ExpressionType, Side, Transposed, DenseShape>
+{
+    typedef typename nested_eval<ExpressionType, 1>::type MatrixType;
+    typedef typename remove_all<MatrixType>::type MatrixTypeCleaned;
+
+    template<typename Dest, typename PermutationType>
+    static inline void run(Dest& dst, const PermutationType& perm, const ExpressionType& xpr)
+    {
+      MatrixType mat(xpr);
+      const Index n = Side==OnTheLeft ? mat.rows() : mat.cols();
+      // FIXME we need an is_same for expression that is not sensitive to constness. For instance
+      // is_same_xpr<Block<const Matrix>, Block<Matrix> >::value should be true.
+      //if(is_same<MatrixTypeCleaned,Dest>::value && extract_data(dst) == extract_data(mat))
+      if(is_same_dense(dst, mat))
+      {
+        // apply the permutation inplace
+        Matrix<bool,PermutationType::RowsAtCompileTime,1,0,PermutationType::MaxRowsAtCompileTime> mask(perm.size());
+        mask.fill(false);
+        Index r = 0;
+        while(r < perm.size())
+        {
+          // search for the next seed
+          while(r<perm.size() && mask[r]) r++;
+          if(r>=perm.size())
+            break;
+          // we got one, let's follow it until we are back to the seed
+          Index k0 = r++;
+          Index kPrev = k0;
+          mask.coeffRef(k0) = true;
+          for(Index k=perm.indices().coeff(k0); k!=k0; k=perm.indices().coeff(k))
+          {
+                  Block<Dest, Side==OnTheLeft ? 1 : Dest::RowsAtCompileTime, Side==OnTheRight ? 1 : Dest::ColsAtCompileTime>(dst, k)
+            .swap(Block<Dest, Side==OnTheLeft ? 1 : Dest::RowsAtCompileTime, Side==OnTheRight ? 1 : Dest::ColsAtCompileTime>
+                       (dst,((Side==OnTheLeft) ^ Transposed) ? k0 : kPrev));
+
+            mask.coeffRef(k) = true;
+            kPrev = k;
+          }
+        }
+      }
+      else
+      {
+        for(Index i = 0; i < n; ++i)
+        {
+          Block<Dest, Side==OnTheLeft ? 1 : Dest::RowsAtCompileTime, Side==OnTheRight ? 1 : Dest::ColsAtCompileTime>
+               (dst, ((Side==OnTheLeft) ^ Transposed) ? perm.indices().coeff(i) : i)
+
+          =
+
+          Block<const MatrixTypeCleaned,Side==OnTheLeft ? 1 : MatrixTypeCleaned::RowsAtCompileTime,Side==OnTheRight ? 1 : MatrixTypeCleaned::ColsAtCompileTime>
+               (mat, ((Side==OnTheRight) ^ Transposed) ? perm.indices().coeff(i) : i);
+        }
+      }
+    }
+};
+
+template<typename Lhs, typename Rhs, int ProductTag, typename MatrixShape>
+struct generic_product_impl<Lhs, Rhs, PermutationShape, MatrixShape, ProductTag>
+{
+  template<typename Dest>
+  static void evalTo(Dest& dst, const Lhs& lhs, const Rhs& rhs)
+  {
+    permutation_matrix_product<Rhs, OnTheLeft, false, MatrixShape>::run(dst, lhs, rhs);
+  }
+};
+
+template<typename Lhs, typename Rhs, int ProductTag, typename MatrixShape>
+struct generic_product_impl<Lhs, Rhs, MatrixShape, PermutationShape, ProductTag>
+{
+  template<typename Dest>
+  static void evalTo(Dest& dst, const Lhs& lhs, const Rhs& rhs)
+  {
+    permutation_matrix_product<Lhs, OnTheRight, false, MatrixShape>::run(dst, rhs, lhs);
+  }
+};
+
+template<typename Lhs, typename Rhs, int ProductTag, typename MatrixShape>
+struct generic_product_impl<Inverse<Lhs>, Rhs, PermutationShape, MatrixShape, ProductTag>
+{
+  template<typename Dest>
+  static void evalTo(Dest& dst, const Inverse<Lhs>& lhs, const Rhs& rhs)
+  {
+    permutation_matrix_product<Rhs, OnTheLeft, true, MatrixShape>::run(dst, lhs.nestedExpression(), rhs);
+  }
+};
+
+template<typename Lhs, typename Rhs, int ProductTag, typename MatrixShape>
+struct generic_product_impl<Lhs, Inverse<Rhs>, MatrixShape, PermutationShape, ProductTag>
+{
+  template<typename Dest>
+  static void evalTo(Dest& dst, const Lhs& lhs, const Inverse<Rhs>& rhs)
+  {
+    permutation_matrix_product<Lhs, OnTheRight, true, MatrixShape>::run(dst, rhs.nestedExpression(), lhs);
+  }
+};
+
+
+/***************************************************************************
+* Products with transpositions matrices
+***************************************************************************/
+
+// FIXME could we unify Transpositions and Permutation into a single "shape"??
+
+/** \internal
+  * \class transposition_matrix_product
+  * Internal helper class implementing the product between a permutation matrix and a matrix.
+  */
+template<typename ExpressionType, int Side, bool Transposed, typename ExpressionShape>
+struct transposition_matrix_product
+{
+  typedef typename nested_eval<ExpressionType, 1>::type MatrixType;
+  typedef typename remove_all<MatrixType>::type MatrixTypeCleaned;
+  
+  template<typename Dest, typename TranspositionType>
+  static inline void run(Dest& dst, const TranspositionType& tr, const ExpressionType& xpr)
+  {
+    MatrixType mat(xpr);
+    typedef typename TranspositionType::StorageIndex StorageIndex;
+    const Index size = tr.size();
+    StorageIndex j = 0;
+
+    if(!is_same_dense(dst,mat))
+      dst = mat;
+
+    for(Index k=(Transposed?size-1:0) ; Transposed?k>=0:k<size ; Transposed?--k:++k)
+      if(Index(j=tr.coeff(k))!=k)
+      {
+        if(Side==OnTheLeft)        dst.row(k).swap(dst.row(j));
+        else if(Side==OnTheRight)  dst.col(k).swap(dst.col(j));
+      }
+  }
+};
+
+template<typename Lhs, typename Rhs, int ProductTag, typename MatrixShape>
+struct generic_product_impl<Lhs, Rhs, TranspositionsShape, MatrixShape, ProductTag>
+{
+  template<typename Dest>
+  static void evalTo(Dest& dst, const Lhs& lhs, const Rhs& rhs)
+  {
+    transposition_matrix_product<Rhs, OnTheLeft, false, MatrixShape>::run(dst, lhs, rhs);
+  }
+};
+
+template<typename Lhs, typename Rhs, int ProductTag, typename MatrixShape>
+struct generic_product_impl<Lhs, Rhs, MatrixShape, TranspositionsShape, ProductTag>
+{
+  template<typename Dest>
+  static void evalTo(Dest& dst, const Lhs& lhs, const Rhs& rhs)
+  {
+    transposition_matrix_product<Lhs, OnTheRight, false, MatrixShape>::run(dst, rhs, lhs);
+  }
+};
+
+
+template<typename Lhs, typename Rhs, int ProductTag, typename MatrixShape>
+struct generic_product_impl<Transpose<Lhs>, Rhs, TranspositionsShape, MatrixShape, ProductTag>
+{
+  template<typename Dest>
+  static void evalTo(Dest& dst, const Transpose<Lhs>& lhs, const Rhs& rhs)
+  {
+    transposition_matrix_product<Rhs, OnTheLeft, true, MatrixShape>::run(dst, lhs.nestedExpression(), rhs);
+  }
+};
+
+template<typename Lhs, typename Rhs, int ProductTag, typename MatrixShape>
+struct generic_product_impl<Lhs, Transpose<Rhs>, MatrixShape, TranspositionsShape, ProductTag>
+{
+  template<typename Dest>
+  static void evalTo(Dest& dst, const Lhs& lhs, const Transpose<Rhs>& rhs)
+  {
+    transposition_matrix_product<Lhs, OnTheRight, true, MatrixShape>::run(dst, rhs.nestedExpression(), lhs);
+  }
+};
+
+} // end namespace internal
+
+} // end namespace Eigen
+
+#endif // EIGEN_PRODUCT_EVALUATORS_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/Redux.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/Redux.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/Redux.h	(revision 3762)
@@ -0,0 +1,505 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2008 Gael Guennebaud <gael.guennebaud@inria.fr>
+// Copyright (C) 2006-2008 Benoit Jacob <jacob.benoit.1@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_REDUX_H
+#define EIGEN_REDUX_H
+
+namespace Eigen { 
+
+namespace internal {
+
+// TODO
+//  * implement other kind of vectorization
+//  * factorize code
+
+/***************************************************************************
+* Part 1 : the logic deciding a strategy for vectorization and unrolling
+***************************************************************************/
+
+template<typename Func, typename Derived>
+struct redux_traits
+{
+public:
+    typedef typename find_best_packet<typename Derived::Scalar,Derived::SizeAtCompileTime>::type PacketType;
+  enum {
+    PacketSize = unpacket_traits<PacketType>::size,
+    InnerMaxSize = int(Derived::IsRowMajor)
+                 ? Derived::MaxColsAtCompileTime
+                 : Derived::MaxRowsAtCompileTime
+  };
+
+  enum {
+    MightVectorize = (int(Derived::Flags)&ActualPacketAccessBit)
+                  && (functor_traits<Func>::PacketAccess),
+    MayLinearVectorize = bool(MightVectorize) && (int(Derived::Flags)&LinearAccessBit),
+    MaySliceVectorize  = bool(MightVectorize) && int(InnerMaxSize)>=3*PacketSize
+  };
+
+public:
+  enum {
+    Traversal = int(MayLinearVectorize) ? int(LinearVectorizedTraversal)
+              : int(MaySliceVectorize)  ? int(SliceVectorizedTraversal)
+                                        : int(DefaultTraversal)
+  };
+
+public:
+  enum {
+    Cost = Derived::SizeAtCompileTime == Dynamic ? HugeCost
+         : Derived::SizeAtCompileTime * Derived::CoeffReadCost + (Derived::SizeAtCompileTime-1) * functor_traits<Func>::Cost,
+    UnrollingLimit = EIGEN_UNROLLING_LIMIT * (int(Traversal) == int(DefaultTraversal) ? 1 : int(PacketSize))
+  };
+
+public:
+  enum {
+    Unrolling = Cost <= UnrollingLimit ? CompleteUnrolling : NoUnrolling
+  };
+  
+#ifdef EIGEN_DEBUG_ASSIGN
+  static void debug()
+  {
+    std::cerr << "Xpr: " << typeid(typename Derived::XprType).name() << std::endl;
+    std::cerr.setf(std::ios::hex, std::ios::basefield);
+    EIGEN_DEBUG_VAR(Derived::Flags)
+    std::cerr.unsetf(std::ios::hex);
+    EIGEN_DEBUG_VAR(InnerMaxSize)
+    EIGEN_DEBUG_VAR(PacketSize)
+    EIGEN_DEBUG_VAR(MightVectorize)
+    EIGEN_DEBUG_VAR(MayLinearVectorize)
+    EIGEN_DEBUG_VAR(MaySliceVectorize)
+    EIGEN_DEBUG_VAR(Traversal)
+    EIGEN_DEBUG_VAR(UnrollingLimit)
+    EIGEN_DEBUG_VAR(Unrolling)
+    std::cerr << std::endl;
+  }
+#endif
+};
+
+/***************************************************************************
+* Part 2 : unrollers
+***************************************************************************/
+
+/*** no vectorization ***/
+
+template<typename Func, typename Derived, int Start, int Length>
+struct redux_novec_unroller
+{
+  enum {
+    HalfLength = Length/2
+  };
+
+  typedef typename Derived::Scalar Scalar;
+
+  EIGEN_DEVICE_FUNC
+  static EIGEN_STRONG_INLINE Scalar run(const Derived &mat, const Func& func)
+  {
+    return func(redux_novec_unroller<Func, Derived, Start, HalfLength>::run(mat,func),
+                redux_novec_unroller<Func, Derived, Start+HalfLength, Length-HalfLength>::run(mat,func));
+  }
+};
+
+template<typename Func, typename Derived, int Start>
+struct redux_novec_unroller<Func, Derived, Start, 1>
+{
+  enum {
+    outer = Start / Derived::InnerSizeAtCompileTime,
+    inner = Start % Derived::InnerSizeAtCompileTime
+  };
+
+  typedef typename Derived::Scalar Scalar;
+
+  EIGEN_DEVICE_FUNC
+  static EIGEN_STRONG_INLINE Scalar run(const Derived &mat, const Func&)
+  {
+    return mat.coeffByOuterInner(outer, inner);
+  }
+};
+
+// This is actually dead code and will never be called. It is required
+// to prevent false warnings regarding failed inlining though
+// for 0 length run() will never be called at all.
+template<typename Func, typename Derived, int Start>
+struct redux_novec_unroller<Func, Derived, Start, 0>
+{
+  typedef typename Derived::Scalar Scalar;
+  EIGEN_DEVICE_FUNC 
+  static EIGEN_STRONG_INLINE Scalar run(const Derived&, const Func&) { return Scalar(); }
+};
+
+/*** vectorization ***/
+
+template<typename Func, typename Derived, int Start, int Length>
+struct redux_vec_unroller
+{
+  enum {
+    PacketSize = redux_traits<Func, Derived>::PacketSize,
+    HalfLength = Length/2
+  };
+
+  typedef typename Derived::Scalar Scalar;
+  typedef typename redux_traits<Func, Derived>::PacketType PacketScalar;
+
+  static EIGEN_STRONG_INLINE PacketScalar run(const Derived &mat, const Func& func)
+  {
+    return func.packetOp(
+            redux_vec_unroller<Func, Derived, Start, HalfLength>::run(mat,func),
+            redux_vec_unroller<Func, Derived, Start+HalfLength, Length-HalfLength>::run(mat,func) );
+  }
+};
+
+template<typename Func, typename Derived, int Start>
+struct redux_vec_unroller<Func, Derived, Start, 1>
+{
+  enum {
+    index = Start * redux_traits<Func, Derived>::PacketSize,
+    outer = index / int(Derived::InnerSizeAtCompileTime),
+    inner = index % int(Derived::InnerSizeAtCompileTime),
+    alignment = Derived::Alignment
+  };
+
+  typedef typename Derived::Scalar Scalar;
+  typedef typename redux_traits<Func, Derived>::PacketType PacketScalar;
+
+  static EIGEN_STRONG_INLINE PacketScalar run(const Derived &mat, const Func&)
+  {
+    return mat.template packetByOuterInner<alignment,PacketScalar>(outer, inner);
+  }
+};
+
+/***************************************************************************
+* Part 3 : implementation of all cases
+***************************************************************************/
+
+template<typename Func, typename Derived,
+         int Traversal = redux_traits<Func, Derived>::Traversal,
+         int Unrolling = redux_traits<Func, Derived>::Unrolling
+>
+struct redux_impl;
+
+template<typename Func, typename Derived>
+struct redux_impl<Func, Derived, DefaultTraversal, NoUnrolling>
+{
+  typedef typename Derived::Scalar Scalar;
+  EIGEN_DEVICE_FUNC
+  static EIGEN_STRONG_INLINE Scalar run(const Derived &mat, const Func& func)
+  {
+    eigen_assert(mat.rows()>0 && mat.cols()>0 && "you are using an empty matrix");
+    Scalar res;
+    res = mat.coeffByOuterInner(0, 0);
+    for(Index i = 1; i < mat.innerSize(); ++i)
+      res = func(res, mat.coeffByOuterInner(0, i));
+    for(Index i = 1; i < mat.outerSize(); ++i)
+      for(Index j = 0; j < mat.innerSize(); ++j)
+        res = func(res, mat.coeffByOuterInner(i, j));
+    return res;
+  }
+};
+
+template<typename Func, typename Derived>
+struct redux_impl<Func,Derived, DefaultTraversal, CompleteUnrolling>
+  : public redux_novec_unroller<Func,Derived, 0, Derived::SizeAtCompileTime>
+{};
+
+template<typename Func, typename Derived>
+struct redux_impl<Func, Derived, LinearVectorizedTraversal, NoUnrolling>
+{
+  typedef typename Derived::Scalar Scalar;
+  typedef typename redux_traits<Func, Derived>::PacketType PacketScalar;
+
+  static Scalar run(const Derived &mat, const Func& func)
+  {
+    const Index size = mat.size();
+    
+    const Index packetSize = redux_traits<Func, Derived>::PacketSize;
+    const int packetAlignment = unpacket_traits<PacketScalar>::alignment;
+    enum {
+      alignment0 = (bool(Derived::Flags & DirectAccessBit) && bool(packet_traits<Scalar>::AlignedOnScalar)) ? int(packetAlignment) : int(Unaligned),
+      alignment = EIGEN_PLAIN_ENUM_MAX(alignment0, Derived::Alignment)
+    };
+    const Index alignedStart = internal::first_default_aligned(mat.nestedExpression());
+    const Index alignedSize2 = ((size-alignedStart)/(2*packetSize))*(2*packetSize);
+    const Index alignedSize = ((size-alignedStart)/(packetSize))*(packetSize);
+    const Index alignedEnd2 = alignedStart + alignedSize2;
+    const Index alignedEnd  = alignedStart + alignedSize;
+    Scalar res;
+    if(alignedSize)
+    {
+      PacketScalar packet_res0 = mat.template packet<alignment,PacketScalar>(alignedStart);
+      if(alignedSize>packetSize) // we have at least two packets to partly unroll the loop
+      {
+        PacketScalar packet_res1 = mat.template packet<alignment,PacketScalar>(alignedStart+packetSize);
+        for(Index index = alignedStart + 2*packetSize; index < alignedEnd2; index += 2*packetSize)
+        {
+          packet_res0 = func.packetOp(packet_res0, mat.template packet<alignment,PacketScalar>(index));
+          packet_res1 = func.packetOp(packet_res1, mat.template packet<alignment,PacketScalar>(index+packetSize));
+        }
+
+        packet_res0 = func.packetOp(packet_res0,packet_res1);
+        if(alignedEnd>alignedEnd2)
+          packet_res0 = func.packetOp(packet_res0, mat.template packet<alignment,PacketScalar>(alignedEnd2));
+      }
+      res = func.predux(packet_res0);
+
+      for(Index index = 0; index < alignedStart; ++index)
+        res = func(res,mat.coeff(index));
+
+      for(Index index = alignedEnd; index < size; ++index)
+        res = func(res,mat.coeff(index));
+    }
+    else // too small to vectorize anything.
+         // since this is dynamic-size hence inefficient anyway for such small sizes, don't try to optimize.
+    {
+      res = mat.coeff(0);
+      for(Index index = 1; index < size; ++index)
+        res = func(res,mat.coeff(index));
+    }
+
+    return res;
+  }
+};
+
+// NOTE: for SliceVectorizedTraversal we simply bypass unrolling
+template<typename Func, typename Derived, int Unrolling>
+struct redux_impl<Func, Derived, SliceVectorizedTraversal, Unrolling>
+{
+  typedef typename Derived::Scalar Scalar;
+  typedef typename redux_traits<Func, Derived>::PacketType PacketType;
+
+  EIGEN_DEVICE_FUNC static Scalar run(const Derived &mat, const Func& func)
+  {
+    eigen_assert(mat.rows()>0 && mat.cols()>0 && "you are using an empty matrix");
+    const Index innerSize = mat.innerSize();
+    const Index outerSize = mat.outerSize();
+    enum {
+      packetSize = redux_traits<Func, Derived>::PacketSize
+    };
+    const Index packetedInnerSize = ((innerSize)/packetSize)*packetSize;
+    Scalar res;
+    if(packetedInnerSize)
+    {
+      PacketType packet_res = mat.template packet<Unaligned,PacketType>(0,0);
+      for(Index j=0; j<outerSize; ++j)
+        for(Index i=(j==0?packetSize:0); i<packetedInnerSize; i+=Index(packetSize))
+          packet_res = func.packetOp(packet_res, mat.template packetByOuterInner<Unaligned,PacketType>(j,i));
+
+      res = func.predux(packet_res);
+      for(Index j=0; j<outerSize; ++j)
+        for(Index i=packetedInnerSize; i<innerSize; ++i)
+          res = func(res, mat.coeffByOuterInner(j,i));
+    }
+    else // too small to vectorize anything.
+         // since this is dynamic-size hence inefficient anyway for such small sizes, don't try to optimize.
+    {
+      res = redux_impl<Func, Derived, DefaultTraversal, NoUnrolling>::run(mat, func);
+    }
+
+    return res;
+  }
+};
+
+template<typename Func, typename Derived>
+struct redux_impl<Func, Derived, LinearVectorizedTraversal, CompleteUnrolling>
+{
+  typedef typename Derived::Scalar Scalar;
+
+  typedef typename redux_traits<Func, Derived>::PacketType PacketScalar;
+  enum {
+    PacketSize = redux_traits<Func, Derived>::PacketSize,
+    Size = Derived::SizeAtCompileTime,
+    VectorizedSize = (Size / PacketSize) * PacketSize
+  };
+  EIGEN_DEVICE_FUNC static EIGEN_STRONG_INLINE Scalar run(const Derived &mat, const Func& func)
+  {
+    eigen_assert(mat.rows()>0 && mat.cols()>0 && "you are using an empty matrix");
+    if (VectorizedSize > 0) {
+      Scalar res = func.predux(redux_vec_unroller<Func, Derived, 0, Size / PacketSize>::run(mat,func));
+      if (VectorizedSize != Size)
+        res = func(res,redux_novec_unroller<Func, Derived, VectorizedSize, Size-VectorizedSize>::run(mat,func));
+      return res;
+    }
+    else {
+      return redux_novec_unroller<Func, Derived, 0, Size>::run(mat,func);
+    }
+  }
+};
+
+// evaluator adaptor
+template<typename _XprType>
+class redux_evaluator
+{
+public:
+  typedef _XprType XprType;
+  EIGEN_DEVICE_FUNC explicit redux_evaluator(const XprType &xpr) : m_evaluator(xpr), m_xpr(xpr) {}
+  
+  typedef typename XprType::Scalar Scalar;
+  typedef typename XprType::CoeffReturnType CoeffReturnType;
+  typedef typename XprType::PacketScalar PacketScalar;
+  typedef typename XprType::PacketReturnType PacketReturnType;
+  
+  enum {
+    MaxRowsAtCompileTime = XprType::MaxRowsAtCompileTime,
+    MaxColsAtCompileTime = XprType::MaxColsAtCompileTime,
+    // TODO we should not remove DirectAccessBit and rather find an elegant way to query the alignment offset at runtime from the evaluator
+    Flags = evaluator<XprType>::Flags & ~DirectAccessBit,
+    IsRowMajor = XprType::IsRowMajor,
+    SizeAtCompileTime = XprType::SizeAtCompileTime,
+    InnerSizeAtCompileTime = XprType::InnerSizeAtCompileTime,
+    CoeffReadCost = evaluator<XprType>::CoeffReadCost,
+    Alignment = evaluator<XprType>::Alignment
+  };
+  
+  EIGEN_DEVICE_FUNC Index rows() const { return m_xpr.rows(); }
+  EIGEN_DEVICE_FUNC Index cols() const { return m_xpr.cols(); }
+  EIGEN_DEVICE_FUNC Index size() const { return m_xpr.size(); }
+  EIGEN_DEVICE_FUNC Index innerSize() const { return m_xpr.innerSize(); }
+  EIGEN_DEVICE_FUNC Index outerSize() const { return m_xpr.outerSize(); }
+
+  EIGEN_DEVICE_FUNC
+  CoeffReturnType coeff(Index row, Index col) const
+  { return m_evaluator.coeff(row, col); }
+
+  EIGEN_DEVICE_FUNC
+  CoeffReturnType coeff(Index index) const
+  { return m_evaluator.coeff(index); }
+
+  template<int LoadMode, typename PacketType>
+  PacketType packet(Index row, Index col) const
+  { return m_evaluator.template packet<LoadMode,PacketType>(row, col); }
+
+  template<int LoadMode, typename PacketType>
+  PacketType packet(Index index) const
+  { return m_evaluator.template packet<LoadMode,PacketType>(index); }
+  
+  EIGEN_DEVICE_FUNC
+  CoeffReturnType coeffByOuterInner(Index outer, Index inner) const
+  { return m_evaluator.coeff(IsRowMajor ? outer : inner, IsRowMajor ? inner : outer); }
+  
+  template<int LoadMode, typename PacketType>
+  PacketType packetByOuterInner(Index outer, Index inner) const
+  { return m_evaluator.template packet<LoadMode,PacketType>(IsRowMajor ? outer : inner, IsRowMajor ? inner : outer); }
+  
+  const XprType & nestedExpression() const { return m_xpr; }
+  
+protected:
+  internal::evaluator<XprType> m_evaluator;
+  const XprType &m_xpr;
+};
+
+} // end namespace internal
+
+/***************************************************************************
+* Part 4 : public API
+***************************************************************************/
+
+
+/** \returns the result of a full redux operation on the whole matrix or vector using \a func
+  *
+  * The template parameter \a BinaryOp is the type of the functor \a func which must be
+  * an associative operator. Both current C++98 and C++11 functor styles are handled.
+  *
+  * \sa DenseBase::sum(), DenseBase::minCoeff(), DenseBase::maxCoeff(), MatrixBase::colwise(), MatrixBase::rowwise()
+  */
+template<typename Derived>
+template<typename Func>
+EIGEN_STRONG_INLINE typename internal::traits<Derived>::Scalar
+DenseBase<Derived>::redux(const Func& func) const
+{
+  eigen_assert(this->rows()>0 && this->cols()>0 && "you are using an empty matrix");
+
+  typedef typename internal::redux_evaluator<Derived> ThisEvaluator;
+  ThisEvaluator thisEval(derived());
+  
+  return internal::redux_impl<Func, ThisEvaluator>::run(thisEval, func);
+}
+
+/** \returns the minimum of all coefficients of \c *this.
+  * \warning the result is undefined if \c *this contains NaN.
+  */
+template<typename Derived>
+EIGEN_STRONG_INLINE typename internal::traits<Derived>::Scalar
+DenseBase<Derived>::minCoeff() const
+{
+  return derived().redux(Eigen::internal::scalar_min_op<Scalar,Scalar>());
+}
+
+/** \returns the maximum of all coefficients of \c *this.
+  * \warning the result is undefined if \c *this contains NaN.
+  */
+template<typename Derived>
+EIGEN_STRONG_INLINE typename internal::traits<Derived>::Scalar
+DenseBase<Derived>::maxCoeff() const
+{
+  return derived().redux(Eigen::internal::scalar_max_op<Scalar,Scalar>());
+}
+
+/** \returns the sum of all coefficients of \c *this
+  *
+  * If \c *this is empty, then the value 0 is returned.
+  *
+  * \sa trace(), prod(), mean()
+  */
+template<typename Derived>
+EIGEN_STRONG_INLINE typename internal::traits<Derived>::Scalar
+DenseBase<Derived>::sum() const
+{
+  if(SizeAtCompileTime==0 || (SizeAtCompileTime==Dynamic && size()==0))
+    return Scalar(0);
+  return derived().redux(Eigen::internal::scalar_sum_op<Scalar,Scalar>());
+}
+
+/** \returns the mean of all coefficients of *this
+*
+* \sa trace(), prod(), sum()
+*/
+template<typename Derived>
+EIGEN_STRONG_INLINE typename internal::traits<Derived>::Scalar
+DenseBase<Derived>::mean() const
+{
+#ifdef __INTEL_COMPILER
+  #pragma warning push
+  #pragma warning ( disable : 2259 )
+#endif
+  return Scalar(derived().redux(Eigen::internal::scalar_sum_op<Scalar,Scalar>())) / Scalar(this->size());
+#ifdef __INTEL_COMPILER
+  #pragma warning pop
+#endif
+}
+
+/** \returns the product of all coefficients of *this
+  *
+  * Example: \include MatrixBase_prod.cpp
+  * Output: \verbinclude MatrixBase_prod.out
+  *
+  * \sa sum(), mean(), trace()
+  */
+template<typename Derived>
+EIGEN_STRONG_INLINE typename internal::traits<Derived>::Scalar
+DenseBase<Derived>::prod() const
+{
+  if(SizeAtCompileTime==0 || (SizeAtCompileTime==Dynamic && size()==0))
+    return Scalar(1);
+  return derived().redux(Eigen::internal::scalar_product_op<Scalar>());
+}
+
+/** \returns the trace of \c *this, i.e. the sum of the coefficients on the main diagonal.
+  *
+  * \c *this can be any matrix, not necessarily square.
+  *
+  * \sa diagonal(), sum()
+  */
+template<typename Derived>
+EIGEN_STRONG_INLINE typename internal::traits<Derived>::Scalar
+MatrixBase<Derived>::trace() const
+{
+  return derived().diagonal().sum();
+}
+
+} // end namespace Eigen
+
+#endif // EIGEN_REDUX_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/Assign_MKL.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/Assign_MKL.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/Assign_MKL.h	(revision 3762)
@@ -0,0 +1,178 @@
+/*
+ Copyright (c) 2011, Intel Corporation. All rights reserved.
+ Copyright (C) 2015 Gael Guennebaud <gael.guennebaud@inria.fr>
+ 
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice, this
+   list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+   this list of conditions and the following disclaimer in the documentation
+   and/or other materials provided with the distribution.
+ * Neither the name of Intel Corporation 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 OWNER 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.
+
+ ********************************************************************************
+ *   Content : Eigen bindings to Intel(R) MKL
+ *   MKL VML support for coefficient-wise unary Eigen expressions like a=b.sin()
+ ********************************************************************************
+*/
+
+#ifndef EIGEN_ASSIGN_VML_H
+#define EIGEN_ASSIGN_VML_H
+
+namespace Eigen { 
+
+namespace internal {
+
+template<typename Dst, typename Src>
+class vml_assign_traits
+{
+  private:
+    enum {
+      DstHasDirectAccess = Dst::Flags & DirectAccessBit,
+      SrcHasDirectAccess = Src::Flags & DirectAccessBit,
+      StorageOrdersAgree = (int(Dst::IsRowMajor) == int(Src::IsRowMajor)),
+      InnerSize = int(Dst::IsVectorAtCompileTime) ? int(Dst::SizeAtCompileTime)
+                : int(Dst::Flags)&RowMajorBit ? int(Dst::ColsAtCompileTime)
+                : int(Dst::RowsAtCompileTime),
+      InnerMaxSize  = int(Dst::IsVectorAtCompileTime) ? int(Dst::MaxSizeAtCompileTime)
+                    : int(Dst::Flags)&RowMajorBit ? int(Dst::MaxColsAtCompileTime)
+                    : int(Dst::MaxRowsAtCompileTime),
+      MaxSizeAtCompileTime = Dst::SizeAtCompileTime,
+
+      MightEnableVml = StorageOrdersAgree && DstHasDirectAccess && SrcHasDirectAccess && Src::InnerStrideAtCompileTime==1 && Dst::InnerStrideAtCompileTime==1,
+      MightLinearize = MightEnableVml && (int(Dst::Flags) & int(Src::Flags) & LinearAccessBit),
+      VmlSize = MightLinearize ? MaxSizeAtCompileTime : InnerMaxSize,
+      LargeEnough = VmlSize==Dynamic || VmlSize>=EIGEN_MKL_VML_THRESHOLD
+    };
+  public:
+    enum {
+      EnableVml = MightEnableVml && LargeEnough,
+      Traversal = MightLinearize ? LinearTraversal : DefaultTraversal
+    };
+};
+
+#define EIGEN_PP_EXPAND(ARG) ARG
+#if !defined (EIGEN_FAST_MATH) || (EIGEN_FAST_MATH != 1)
+#define EIGEN_VMLMODE_EXPAND_LA , VML_HA
+#else
+#define EIGEN_VMLMODE_EXPAND_LA , VML_LA
+#endif
+
+#define EIGEN_VMLMODE_EXPAND__ 
+
+#define EIGEN_VMLMODE_PREFIX_LA vm
+#define EIGEN_VMLMODE_PREFIX__  v
+#define EIGEN_VMLMODE_PREFIX(VMLMODE) EIGEN_CAT(EIGEN_VMLMODE_PREFIX_,VMLMODE)
+
+#define EIGEN_MKL_VML_DECLARE_UNARY_CALL(EIGENOP, VMLOP, EIGENTYPE, VMLTYPE, VMLMODE)                                           \
+  template< typename DstXprType, typename SrcXprNested>                                                                         \
+  struct Assignment<DstXprType, CwiseUnaryOp<scalar_##EIGENOP##_op<EIGENTYPE>, SrcXprNested>, assign_op<EIGENTYPE,EIGENTYPE>,   \
+                   Dense2Dense, typename enable_if<vml_assign_traits<DstXprType,SrcXprNested>::EnableVml>::type> {              \
+    typedef CwiseUnaryOp<scalar_##EIGENOP##_op<EIGENTYPE>, SrcXprNested> SrcXprType;                                            \
+    static void run(DstXprType &dst, const SrcXprType &src, const assign_op<EIGENTYPE,EIGENTYPE> &func) {                       \
+      resize_if_allowed(dst, src, func);                                                                                        \
+      eigen_assert(dst.rows() == src.rows() && dst.cols() == src.cols());                                                       \
+      if(vml_assign_traits<DstXprType,SrcXprNested>::Traversal==LinearTraversal) {                                              \
+        VMLOP(dst.size(), (const VMLTYPE*)src.nestedExpression().data(),                                                        \
+              (VMLTYPE*)dst.data() EIGEN_PP_EXPAND(EIGEN_VMLMODE_EXPAND_##VMLMODE) );                                           \
+      } else {                                                                                                                  \
+        const Index outerSize = dst.outerSize();                                                                                \
+        for(Index outer = 0; outer < outerSize; ++outer) {                                                                      \
+          const EIGENTYPE *src_ptr = src.IsRowMajor ? &(src.nestedExpression().coeffRef(outer,0)) :                             \
+                                                      &(src.nestedExpression().coeffRef(0, outer));                             \
+          EIGENTYPE *dst_ptr = dst.IsRowMajor ? &(dst.coeffRef(outer,0)) : &(dst.coeffRef(0, outer));                           \
+          VMLOP( dst.innerSize(), (const VMLTYPE*)src_ptr,                                                                      \
+                (VMLTYPE*)dst_ptr EIGEN_PP_EXPAND(EIGEN_VMLMODE_EXPAND_##VMLMODE));                                             \
+        }                                                                                                                       \
+      }                                                                                                                         \
+    }                                                                                                                           \
+  };                                                                                                                            \
+
+
+#define EIGEN_MKL_VML_DECLARE_UNARY_CALLS_REAL(EIGENOP, VMLOP, VMLMODE)                                                         \
+  EIGEN_MKL_VML_DECLARE_UNARY_CALL(EIGENOP, EIGEN_CAT(EIGEN_VMLMODE_PREFIX(VMLMODE),s##VMLOP), float, float, VMLMODE)           \
+  EIGEN_MKL_VML_DECLARE_UNARY_CALL(EIGENOP, EIGEN_CAT(EIGEN_VMLMODE_PREFIX(VMLMODE),d##VMLOP), double, double, VMLMODE)
+
+#define EIGEN_MKL_VML_DECLARE_UNARY_CALLS_CPLX(EIGENOP, VMLOP, VMLMODE)                                                         \
+  EIGEN_MKL_VML_DECLARE_UNARY_CALL(EIGENOP, EIGEN_CAT(EIGEN_VMLMODE_PREFIX(VMLMODE),c##VMLOP), scomplex, MKL_Complex8, VMLMODE) \
+  EIGEN_MKL_VML_DECLARE_UNARY_CALL(EIGENOP, EIGEN_CAT(EIGEN_VMLMODE_PREFIX(VMLMODE),z##VMLOP), dcomplex, MKL_Complex16, VMLMODE)
+  
+#define EIGEN_MKL_VML_DECLARE_UNARY_CALLS(EIGENOP, VMLOP, VMLMODE)                                                              \
+  EIGEN_MKL_VML_DECLARE_UNARY_CALLS_REAL(EIGENOP, VMLOP, VMLMODE)                                                               \
+  EIGEN_MKL_VML_DECLARE_UNARY_CALLS_CPLX(EIGENOP, VMLOP, VMLMODE)
+
+  
+EIGEN_MKL_VML_DECLARE_UNARY_CALLS(sin,   Sin,   LA)
+EIGEN_MKL_VML_DECLARE_UNARY_CALLS(asin,  Asin,  LA)
+EIGEN_MKL_VML_DECLARE_UNARY_CALLS(sinh,  Sinh,  LA)
+EIGEN_MKL_VML_DECLARE_UNARY_CALLS(cos,   Cos,   LA)
+EIGEN_MKL_VML_DECLARE_UNARY_CALLS(acos,  Acos,  LA)
+EIGEN_MKL_VML_DECLARE_UNARY_CALLS(cosh,  Cosh,  LA)
+EIGEN_MKL_VML_DECLARE_UNARY_CALLS(tan,   Tan,   LA)
+EIGEN_MKL_VML_DECLARE_UNARY_CALLS(atan,  Atan,  LA)
+EIGEN_MKL_VML_DECLARE_UNARY_CALLS(tanh,  Tanh,  LA)
+// EIGEN_MKL_VML_DECLARE_UNARY_CALLS(abs,   Abs,    _)
+EIGEN_MKL_VML_DECLARE_UNARY_CALLS(exp,   Exp,   LA)
+EIGEN_MKL_VML_DECLARE_UNARY_CALLS(log,   Ln,    LA)
+EIGEN_MKL_VML_DECLARE_UNARY_CALLS(log10, Log10, LA)
+EIGEN_MKL_VML_DECLARE_UNARY_CALLS(sqrt,  Sqrt,  _)
+
+EIGEN_MKL_VML_DECLARE_UNARY_CALLS_REAL(square, Sqr,   _)
+EIGEN_MKL_VML_DECLARE_UNARY_CALLS_CPLX(arg, Arg,      _)
+EIGEN_MKL_VML_DECLARE_UNARY_CALLS_REAL(round, Round,  _)
+EIGEN_MKL_VML_DECLARE_UNARY_CALLS_REAL(floor, Floor,  _)
+EIGEN_MKL_VML_DECLARE_UNARY_CALLS_REAL(ceil,  Ceil,   _)
+
+#define EIGEN_MKL_VML_DECLARE_POW_CALL(EIGENOP, VMLOP, EIGENTYPE, VMLTYPE, VMLMODE)                                           \
+  template< typename DstXprType, typename SrcXprNested, typename Plain>                                                       \
+  struct Assignment<DstXprType, CwiseBinaryOp<scalar_##EIGENOP##_op<EIGENTYPE,EIGENTYPE>, SrcXprNested,                       \
+                    const CwiseNullaryOp<internal::scalar_constant_op<EIGENTYPE>,Plain> >, assign_op<EIGENTYPE,EIGENTYPE>,    \
+                   Dense2Dense, typename enable_if<vml_assign_traits<DstXprType,SrcXprNested>::EnableVml>::type> {            \
+    typedef CwiseBinaryOp<scalar_##EIGENOP##_op<EIGENTYPE,EIGENTYPE>, SrcXprNested,                                           \
+                    const CwiseNullaryOp<internal::scalar_constant_op<EIGENTYPE>,Plain> > SrcXprType;                         \
+    static void run(DstXprType &dst, const SrcXprType &src, const assign_op<EIGENTYPE,EIGENTYPE> &func) {                     \
+      resize_if_allowed(dst, src, func);                                                                                      \
+      eigen_assert(dst.rows() == src.rows() && dst.cols() == src.cols());                                                     \
+      VMLTYPE exponent = reinterpret_cast<const VMLTYPE&>(src.rhs().functor().m_other);                                       \
+      if(vml_assign_traits<DstXprType,SrcXprNested>::Traversal==LinearTraversal)                                              \
+      {                                                                                                                       \
+        VMLOP( dst.size(), (const VMLTYPE*)src.lhs().data(), exponent,                                                        \
+              (VMLTYPE*)dst.data() EIGEN_PP_EXPAND(EIGEN_VMLMODE_EXPAND_##VMLMODE) );                                         \
+      } else {                                                                                                                \
+        const Index outerSize = dst.outerSize();                                                                              \
+        for(Index outer = 0; outer < outerSize; ++outer) {                                                                    \
+          const EIGENTYPE *src_ptr = src.IsRowMajor ? &(src.lhs().coeffRef(outer,0)) :                                        \
+                                                      &(src.lhs().coeffRef(0, outer));                                        \
+          EIGENTYPE *dst_ptr = dst.IsRowMajor ? &(dst.coeffRef(outer,0)) : &(dst.coeffRef(0, outer));                         \
+          VMLOP( dst.innerSize(), (const VMLTYPE*)src_ptr, exponent,                                                          \
+                 (VMLTYPE*)dst_ptr EIGEN_PP_EXPAND(EIGEN_VMLMODE_EXPAND_##VMLMODE));                                          \
+        }                                                                                                                     \
+      }                                                                                                                       \
+    }                                                                                                                         \
+  };
+  
+EIGEN_MKL_VML_DECLARE_POW_CALL(pow, vmsPowx, float,    float,         LA)
+EIGEN_MKL_VML_DECLARE_POW_CALL(pow, vmdPowx, double,   double,        LA)
+EIGEN_MKL_VML_DECLARE_POW_CALL(pow, vmcPowx, scomplex, MKL_Complex8,  LA)
+EIGEN_MKL_VML_DECLARE_POW_CALL(pow, vmzPowx, dcomplex, MKL_Complex16, LA)
+
+} // end namespace internal
+
+} // end namespace Eigen
+
+#endif // EIGEN_ASSIGN_VML_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/CwiseUnaryOp.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/CwiseUnaryOp.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/CwiseUnaryOp.h	(revision 3762)
@@ -0,0 +1,103 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2008-2014 Gael Guennebaud <gael.guennebaud@inria.fr>
+// Copyright (C) 2006-2008 Benoit Jacob <jacob.benoit.1@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CWISE_UNARY_OP_H
+#define EIGEN_CWISE_UNARY_OP_H
+
+namespace Eigen { 
+
+namespace internal {
+template<typename UnaryOp, typename XprType>
+struct traits<CwiseUnaryOp<UnaryOp, XprType> >
+ : traits<XprType>
+{
+  typedef typename result_of<
+                     UnaryOp(const typename XprType::Scalar&)
+                   >::type Scalar;
+  typedef typename XprType::Nested XprTypeNested;
+  typedef typename remove_reference<XprTypeNested>::type _XprTypeNested;
+  enum {
+    Flags = _XprTypeNested::Flags & RowMajorBit 
+  };
+};
+}
+
+template<typename UnaryOp, typename XprType, typename StorageKind>
+class CwiseUnaryOpImpl;
+
+/** \class CwiseUnaryOp
+  * \ingroup Core_Module
+  *
+  * \brief Generic expression where a coefficient-wise unary operator is applied to an expression
+  *
+  * \tparam UnaryOp template functor implementing the operator
+  * \tparam XprType the type of the expression to which we are applying the unary operator
+  *
+  * This class represents an expression where a unary operator is applied to an expression.
+  * It is the return type of all operations taking exactly 1 input expression, regardless of the
+  * presence of other inputs such as scalars. For example, the operator* in the expression 3*matrix
+  * is considered unary, because only the right-hand side is an expression, and its
+  * return type is a specialization of CwiseUnaryOp.
+  *
+  * Most of the time, this is the only way that it is used, so you typically don't have to name
+  * CwiseUnaryOp types explicitly.
+  *
+  * \sa MatrixBase::unaryExpr(const CustomUnaryOp &) const, class CwiseBinaryOp, class CwiseNullaryOp
+  */
+template<typename UnaryOp, typename XprType>
+class CwiseUnaryOp : public CwiseUnaryOpImpl<UnaryOp, XprType, typename internal::traits<XprType>::StorageKind>, internal::no_assignment_operator
+{
+  public:
+
+    typedef typename CwiseUnaryOpImpl<UnaryOp, XprType,typename internal::traits<XprType>::StorageKind>::Base Base;
+    EIGEN_GENERIC_PUBLIC_INTERFACE(CwiseUnaryOp)
+    typedef typename internal::ref_selector<XprType>::type XprTypeNested;
+    typedef typename internal::remove_all<XprType>::type NestedExpression;
+
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    explicit CwiseUnaryOp(const XprType& xpr, const UnaryOp& func = UnaryOp())
+      : m_xpr(xpr), m_functor(func) {}
+
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    Index rows() const { return m_xpr.rows(); }
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    Index cols() const { return m_xpr.cols(); }
+
+    /** \returns the functor representing the unary operation */
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const UnaryOp& functor() const { return m_functor; }
+
+    /** \returns the nested expression */
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const typename internal::remove_all<XprTypeNested>::type&
+    nestedExpression() const { return m_xpr; }
+
+    /** \returns the nested expression */
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    typename internal::remove_all<XprTypeNested>::type&
+    nestedExpression() { return m_xpr; }
+
+  protected:
+    XprTypeNested m_xpr;
+    const UnaryOp m_functor;
+};
+
+// Generic API dispatcher
+template<typename UnaryOp, typename XprType, typename StorageKind>
+class CwiseUnaryOpImpl
+  : public internal::generic_xpr_base<CwiseUnaryOp<UnaryOp, XprType> >::type
+{
+public:
+  typedef typename internal::generic_xpr_base<CwiseUnaryOp<UnaryOp, XprType> >::type Base;
+};
+
+} // end namespace Eigen
+
+#endif // EIGEN_CWISE_UNARY_OP_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/DenseBase.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/DenseBase.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/DenseBase.h	(revision 3762)
@@ -0,0 +1,612 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2007-2010 Benoit Jacob <jacob.benoit.1@gmail.com>
+// Copyright (C) 2008-2010 Gael Guennebaud <gael.guennebaud@inria.fr>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_DENSEBASE_H
+#define EIGEN_DENSEBASE_H
+
+namespace Eigen {
+
+namespace internal {
+  
+// The index type defined by EIGEN_DEFAULT_DENSE_INDEX_TYPE must be a signed type.
+// This dummy function simply aims at checking that at compile time.
+static inline void check_DenseIndex_is_signed() {
+  EIGEN_STATIC_ASSERT(NumTraits<DenseIndex>::IsSigned,THE_INDEX_TYPE_MUST_BE_A_SIGNED_TYPE); 
+}
+
+} // end namespace internal
+  
+/** \class DenseBase
+  * \ingroup Core_Module
+  *
+  * \brief Base class for all dense matrices, vectors, and arrays
+  *
+  * This class is the base that is inherited by all dense objects (matrix, vector, arrays,
+  * and related expression types). The common Eigen API for dense objects is contained in this class.
+  *
+  * \tparam Derived is the derived type, e.g., a matrix type or an expression.
+  *
+  * This class can be extended with the help of the plugin mechanism described on the page
+  * \ref TopicCustomizing_Plugins by defining the preprocessor symbol \c EIGEN_DENSEBASE_PLUGIN.
+  *
+  * \sa \blank \ref TopicClassHierarchy
+  */
+template<typename Derived> class DenseBase
+#ifndef EIGEN_PARSED_BY_DOXYGEN
+  : public DenseCoeffsBase<Derived, internal::accessors_level<Derived>::value>
+#else
+  : public DenseCoeffsBase<Derived,DirectWriteAccessors>
+#endif // not EIGEN_PARSED_BY_DOXYGEN
+{
+  public:
+
+    /** Inner iterator type to iterate over the coefficients of a row or column.
+      * \sa class InnerIterator
+      */
+    typedef Eigen::InnerIterator<Derived> InnerIterator;
+
+    typedef typename internal::traits<Derived>::StorageKind StorageKind;
+
+    /**
+      * \brief The type used to store indices
+      * \details This typedef is relevant for types that store multiple indices such as
+      *          PermutationMatrix or Transpositions, otherwise it defaults to Eigen::Index
+      * \sa \blank \ref TopicPreprocessorDirectives, Eigen::Index, SparseMatrixBase.
+     */
+    typedef typename internal::traits<Derived>::StorageIndex StorageIndex;
+
+    /** The numeric type of the expression' coefficients, e.g. float, double, int or std::complex<float>, etc. */
+    typedef typename internal::traits<Derived>::Scalar Scalar;
+    
+    /** The numeric type of the expression' coefficients, e.g. float, double, int or std::complex<float>, etc.
+      *
+      * It is an alias for the Scalar type */
+    typedef Scalar value_type;
+    
+    typedef typename NumTraits<Scalar>::Real RealScalar;
+    typedef DenseCoeffsBase<Derived, internal::accessors_level<Derived>::value> Base;
+
+    using Base::derived;
+    using Base::const_cast_derived;
+    using Base::rows;
+    using Base::cols;
+    using Base::size;
+    using Base::rowIndexByOuterInner;
+    using Base::colIndexByOuterInner;
+    using Base::coeff;
+    using Base::coeffByOuterInner;
+    using Base::operator();
+    using Base::operator[];
+    using Base::x;
+    using Base::y;
+    using Base::z;
+    using Base::w;
+    using Base::stride;
+    using Base::innerStride;
+    using Base::outerStride;
+    using Base::rowStride;
+    using Base::colStride;
+    typedef typename Base::CoeffReturnType CoeffReturnType;
+
+    enum {
+
+      RowsAtCompileTime = internal::traits<Derived>::RowsAtCompileTime,
+        /**< The number of rows at compile-time. This is just a copy of the value provided
+          * by the \a Derived type. If a value is not known at compile-time,
+          * it is set to the \a Dynamic constant.
+          * \sa MatrixBase::rows(), MatrixBase::cols(), ColsAtCompileTime, SizeAtCompileTime */
+
+      ColsAtCompileTime = internal::traits<Derived>::ColsAtCompileTime,
+        /**< The number of columns at compile-time. This is just a copy of the value provided
+          * by the \a Derived type. If a value is not known at compile-time,
+          * it is set to the \a Dynamic constant.
+          * \sa MatrixBase::rows(), MatrixBase::cols(), RowsAtCompileTime, SizeAtCompileTime */
+
+
+      SizeAtCompileTime = (internal::size_at_compile_time<internal::traits<Derived>::RowsAtCompileTime,
+                                                   internal::traits<Derived>::ColsAtCompileTime>::ret),
+        /**< This is equal to the number of coefficients, i.e. the number of
+          * rows times the number of columns, or to \a Dynamic if this is not
+          * known at compile-time. \sa RowsAtCompileTime, ColsAtCompileTime */
+
+      MaxRowsAtCompileTime = internal::traits<Derived>::MaxRowsAtCompileTime,
+        /**< This value is equal to the maximum possible number of rows that this expression
+          * might have. If this expression might have an arbitrarily high number of rows,
+          * this value is set to \a Dynamic.
+          *
+          * This value is useful to know when evaluating an expression, in order to determine
+          * whether it is possible to avoid doing a dynamic memory allocation.
+          *
+          * \sa RowsAtCompileTime, MaxColsAtCompileTime, MaxSizeAtCompileTime
+          */
+
+      MaxColsAtCompileTime = internal::traits<Derived>::MaxColsAtCompileTime,
+        /**< This value is equal to the maximum possible number of columns that this expression
+          * might have. If this expression might have an arbitrarily high number of columns,
+          * this value is set to \a Dynamic.
+          *
+          * This value is useful to know when evaluating an expression, in order to determine
+          * whether it is possible to avoid doing a dynamic memory allocation.
+          *
+          * \sa ColsAtCompileTime, MaxRowsAtCompileTime, MaxSizeAtCompileTime
+          */
+
+      MaxSizeAtCompileTime = (internal::size_at_compile_time<internal::traits<Derived>::MaxRowsAtCompileTime,
+                                                      internal::traits<Derived>::MaxColsAtCompileTime>::ret),
+        /**< This value is equal to the maximum possible number of coefficients that this expression
+          * might have. If this expression might have an arbitrarily high number of coefficients,
+          * this value is set to \a Dynamic.
+          *
+          * This value is useful to know when evaluating an expression, in order to determine
+          * whether it is possible to avoid doing a dynamic memory allocation.
+          *
+          * \sa SizeAtCompileTime, MaxRowsAtCompileTime, MaxColsAtCompileTime
+          */
+
+      IsVectorAtCompileTime = internal::traits<Derived>::MaxRowsAtCompileTime == 1
+                           || internal::traits<Derived>::MaxColsAtCompileTime == 1,
+        /**< This is set to true if either the number of rows or the number of
+          * columns is known at compile-time to be equal to 1. Indeed, in that case,
+          * we are dealing with a column-vector (if there is only one column) or with
+          * a row-vector (if there is only one row). */
+
+      Flags = internal::traits<Derived>::Flags,
+        /**< This stores expression \ref flags flags which may or may not be inherited by new expressions
+          * constructed from this one. See the \ref flags "list of flags".
+          */
+
+      IsRowMajor = int(Flags) & RowMajorBit, /**< True if this expression has row-major storage order. */
+
+      InnerSizeAtCompileTime = int(IsVectorAtCompileTime) ? int(SizeAtCompileTime)
+                             : int(IsRowMajor) ? int(ColsAtCompileTime) : int(RowsAtCompileTime),
+
+      InnerStrideAtCompileTime = internal::inner_stride_at_compile_time<Derived>::ret,
+      OuterStrideAtCompileTime = internal::outer_stride_at_compile_time<Derived>::ret
+    };
+    
+    typedef typename internal::find_best_packet<Scalar,SizeAtCompileTime>::type PacketScalar;
+
+    enum { IsPlainObjectBase = 0 };
+    
+    /** The plain matrix type corresponding to this expression.
+      * \sa PlainObject */
+    typedef Matrix<typename internal::traits<Derived>::Scalar,
+                internal::traits<Derived>::RowsAtCompileTime,
+                internal::traits<Derived>::ColsAtCompileTime,
+                AutoAlign | (internal::traits<Derived>::Flags&RowMajorBit ? RowMajor : ColMajor),
+                internal::traits<Derived>::MaxRowsAtCompileTime,
+                internal::traits<Derived>::MaxColsAtCompileTime
+          > PlainMatrix;
+    
+    /** The plain array type corresponding to this expression.
+      * \sa PlainObject */
+    typedef Array<typename internal::traits<Derived>::Scalar,
+                internal::traits<Derived>::RowsAtCompileTime,
+                internal::traits<Derived>::ColsAtCompileTime,
+                AutoAlign | (internal::traits<Derived>::Flags&RowMajorBit ? RowMajor : ColMajor),
+                internal::traits<Derived>::MaxRowsAtCompileTime,
+                internal::traits<Derived>::MaxColsAtCompileTime
+          > PlainArray;
+
+    /** \brief The plain matrix or array type corresponding to this expression.
+      *
+      * This is not necessarily exactly the return type of eval(). In the case of plain matrices,
+      * the return type of eval() is a const reference to a matrix, not a matrix! It is however guaranteed
+      * that the return type of eval() is either PlainObject or const PlainObject&.
+      */
+    typedef typename internal::conditional<internal::is_same<typename internal::traits<Derived>::XprKind,MatrixXpr >::value,
+                                 PlainMatrix, PlainArray>::type PlainObject;
+
+    /** \returns the number of nonzero coefficients which is in practice the number
+      * of stored coefficients. */
+    EIGEN_DEVICE_FUNC
+    inline Index nonZeros() const { return size(); }
+
+    /** \returns the outer size.
+      *
+      * \note For a vector, this returns just 1. For a matrix (non-vector), this is the major dimension
+      * with respect to the \ref TopicStorageOrders "storage order", i.e., the number of columns for a
+      * column-major matrix, and the number of rows for a row-major matrix. */
+    EIGEN_DEVICE_FUNC
+    Index outerSize() const
+    {
+      return IsVectorAtCompileTime ? 1
+           : int(IsRowMajor) ? this->rows() : this->cols();
+    }
+
+    /** \returns the inner size.
+      *
+      * \note For a vector, this is just the size. For a matrix (non-vector), this is the minor dimension
+      * with respect to the \ref TopicStorageOrders "storage order", i.e., the number of rows for a 
+      * column-major matrix, and the number of columns for a row-major matrix. */
+    EIGEN_DEVICE_FUNC
+    Index innerSize() const
+    {
+      return IsVectorAtCompileTime ? this->size()
+           : int(IsRowMajor) ? this->cols() : this->rows();
+    }
+
+    /** Only plain matrices/arrays, not expressions, may be resized; therefore the only useful resize methods are
+      * Matrix::resize() and Array::resize(). The present method only asserts that the new size equals the old size, and does
+      * nothing else.
+      */
+    EIGEN_DEVICE_FUNC
+    void resize(Index newSize)
+    {
+      EIGEN_ONLY_USED_FOR_DEBUG(newSize);
+      eigen_assert(newSize == this->size()
+                && "DenseBase::resize() does not actually allow to resize.");
+    }
+    /** Only plain matrices/arrays, not expressions, may be resized; therefore the only useful resize methods are
+      * Matrix::resize() and Array::resize(). The present method only asserts that the new size equals the old size, and does
+      * nothing else.
+      */
+    EIGEN_DEVICE_FUNC
+    void resize(Index rows, Index cols)
+    {
+      EIGEN_ONLY_USED_FOR_DEBUG(rows);
+      EIGEN_ONLY_USED_FOR_DEBUG(cols);
+      eigen_assert(rows == this->rows() && cols == this->cols()
+                && "DenseBase::resize() does not actually allow to resize.");
+    }
+
+#ifndef EIGEN_PARSED_BY_DOXYGEN
+    /** \internal Represents a matrix with all coefficients equal to one another*/
+    typedef CwiseNullaryOp<internal::scalar_constant_op<Scalar>,PlainObject> ConstantReturnType;
+    /** \internal \deprecated Represents a vector with linearly spaced coefficients that allows sequential access only. */
+    typedef CwiseNullaryOp<internal::linspaced_op<Scalar,PacketScalar>,PlainObject> SequentialLinSpacedReturnType;
+    /** \internal Represents a vector with linearly spaced coefficients that allows random access. */
+    typedef CwiseNullaryOp<internal::linspaced_op<Scalar,PacketScalar>,PlainObject> RandomAccessLinSpacedReturnType;
+    /** \internal the return type of MatrixBase::eigenvalues() */
+    typedef Matrix<typename NumTraits<typename internal::traits<Derived>::Scalar>::Real, internal::traits<Derived>::ColsAtCompileTime, 1> EigenvaluesReturnType;
+
+#endif // not EIGEN_PARSED_BY_DOXYGEN
+
+    /** Copies \a other into *this. \returns a reference to *this. */
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    Derived& operator=(const DenseBase<OtherDerived>& other);
+
+    /** Special case of the template operator=, in order to prevent the compiler
+      * from generating a default operator= (issue hit with g++ 4.1)
+      */
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    Derived& operator=(const DenseBase& other);
+
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    Derived& operator=(const EigenBase<OtherDerived> &other);
+
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    Derived& operator+=(const EigenBase<OtherDerived> &other);
+
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    Derived& operator-=(const EigenBase<OtherDerived> &other);
+
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    Derived& operator=(const ReturnByValue<OtherDerived>& func);
+
+    /** \internal
+      * Copies \a other into *this without evaluating other. \returns a reference to *this.
+      * \deprecated */
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    Derived& lazyAssign(const DenseBase<OtherDerived>& other);
+
+    EIGEN_DEVICE_FUNC
+    CommaInitializer<Derived> operator<< (const Scalar& s);
+
+    /** \deprecated it now returns \c *this */
+    template<unsigned int Added,unsigned int Removed>
+    EIGEN_DEPRECATED
+    const Derived& flagged() const
+    { return derived(); }
+
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    CommaInitializer<Derived> operator<< (const DenseBase<OtherDerived>& other);
+
+    typedef Transpose<Derived> TransposeReturnType;
+    EIGEN_DEVICE_FUNC
+    TransposeReturnType transpose();
+    typedef typename internal::add_const<Transpose<const Derived> >::type ConstTransposeReturnType;
+    EIGEN_DEVICE_FUNC
+    ConstTransposeReturnType transpose() const;
+    EIGEN_DEVICE_FUNC
+    void transposeInPlace();
+
+    EIGEN_DEVICE_FUNC static const ConstantReturnType
+    Constant(Index rows, Index cols, const Scalar& value);
+    EIGEN_DEVICE_FUNC static const ConstantReturnType
+    Constant(Index size, const Scalar& value);
+    EIGEN_DEVICE_FUNC static const ConstantReturnType
+    Constant(const Scalar& value);
+
+    EIGEN_DEVICE_FUNC static const SequentialLinSpacedReturnType
+    LinSpaced(Sequential_t, Index size, const Scalar& low, const Scalar& high);
+    EIGEN_DEVICE_FUNC static const RandomAccessLinSpacedReturnType
+    LinSpaced(Index size, const Scalar& low, const Scalar& high);
+    EIGEN_DEVICE_FUNC static const SequentialLinSpacedReturnType
+    LinSpaced(Sequential_t, const Scalar& low, const Scalar& high);
+    EIGEN_DEVICE_FUNC static const RandomAccessLinSpacedReturnType
+    LinSpaced(const Scalar& low, const Scalar& high);
+
+    template<typename CustomNullaryOp> EIGEN_DEVICE_FUNC
+    static const CwiseNullaryOp<CustomNullaryOp, PlainObject>
+    NullaryExpr(Index rows, Index cols, const CustomNullaryOp& func);
+    template<typename CustomNullaryOp> EIGEN_DEVICE_FUNC
+    static const CwiseNullaryOp<CustomNullaryOp, PlainObject>
+    NullaryExpr(Index size, const CustomNullaryOp& func);
+    template<typename CustomNullaryOp> EIGEN_DEVICE_FUNC
+    static const CwiseNullaryOp<CustomNullaryOp, PlainObject>
+    NullaryExpr(const CustomNullaryOp& func);
+
+    EIGEN_DEVICE_FUNC static const ConstantReturnType Zero(Index rows, Index cols);
+    EIGEN_DEVICE_FUNC static const ConstantReturnType Zero(Index size);
+    EIGEN_DEVICE_FUNC static const ConstantReturnType Zero();
+    EIGEN_DEVICE_FUNC static const ConstantReturnType Ones(Index rows, Index cols);
+    EIGEN_DEVICE_FUNC static const ConstantReturnType Ones(Index size);
+    EIGEN_DEVICE_FUNC static const ConstantReturnType Ones();
+
+    EIGEN_DEVICE_FUNC void fill(const Scalar& value);
+    EIGEN_DEVICE_FUNC Derived& setConstant(const Scalar& value);
+    EIGEN_DEVICE_FUNC Derived& setLinSpaced(Index size, const Scalar& low, const Scalar& high);
+    EIGEN_DEVICE_FUNC Derived& setLinSpaced(const Scalar& low, const Scalar& high);
+    EIGEN_DEVICE_FUNC Derived& setZero();
+    EIGEN_DEVICE_FUNC Derived& setOnes();
+    EIGEN_DEVICE_FUNC Derived& setRandom();
+
+    template<typename OtherDerived> EIGEN_DEVICE_FUNC
+    bool isApprox(const DenseBase<OtherDerived>& other,
+                  const RealScalar& prec = NumTraits<Scalar>::dummy_precision()) const;
+    EIGEN_DEVICE_FUNC 
+    bool isMuchSmallerThan(const RealScalar& other,
+                           const RealScalar& prec = NumTraits<Scalar>::dummy_precision()) const;
+    template<typename OtherDerived> EIGEN_DEVICE_FUNC
+    bool isMuchSmallerThan(const DenseBase<OtherDerived>& other,
+                           const RealScalar& prec = NumTraits<Scalar>::dummy_precision()) const;
+
+    EIGEN_DEVICE_FUNC bool isApproxToConstant(const Scalar& value, const RealScalar& prec = NumTraits<Scalar>::dummy_precision()) const;
+    EIGEN_DEVICE_FUNC bool isConstant(const Scalar& value, const RealScalar& prec = NumTraits<Scalar>::dummy_precision()) const;
+    EIGEN_DEVICE_FUNC bool isZero(const RealScalar& prec = NumTraits<Scalar>::dummy_precision()) const;
+    EIGEN_DEVICE_FUNC bool isOnes(const RealScalar& prec = NumTraits<Scalar>::dummy_precision()) const;
+    
+    inline bool hasNaN() const;
+    inline bool allFinite() const;
+
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    Derived& operator*=(const Scalar& other);
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    Derived& operator/=(const Scalar& other);
+
+    typedef typename internal::add_const_on_value_type<typename internal::eval<Derived>::type>::type EvalReturnType;
+    /** \returns the matrix or vector obtained by evaluating this expression.
+      *
+      * Notice that in the case of a plain matrix or vector (not an expression) this function just returns
+      * a const reference, in order to avoid a useless copy.
+      * 
+      * \warning Be carefull with eval() and the auto C++ keyword, as detailed in this \link TopicPitfalls_auto_keyword page \endlink.
+      */
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE EvalReturnType eval() const
+    {
+      // Even though MSVC does not honor strong inlining when the return type
+      // is a dynamic matrix, we desperately need strong inlining for fixed
+      // size types on MSVC.
+      return typename internal::eval<Derived>::type(derived());
+    }
+    
+    /** swaps *this with the expression \a other.
+      *
+      */
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    void swap(const DenseBase<OtherDerived>& other)
+    {
+      EIGEN_STATIC_ASSERT(!OtherDerived::IsPlainObjectBase,THIS_EXPRESSION_IS_NOT_A_LVALUE__IT_IS_READ_ONLY);
+      eigen_assert(rows()==other.rows() && cols()==other.cols());
+      call_assignment(derived(), other.const_cast_derived(), internal::swap_assign_op<Scalar>());
+    }
+
+    /** swaps *this with the matrix or array \a other.
+      *
+      */
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    void swap(PlainObjectBase<OtherDerived>& other)
+    {
+      eigen_assert(rows()==other.rows() && cols()==other.cols());
+      call_assignment(derived(), other.derived(), internal::swap_assign_op<Scalar>());
+    }
+
+    EIGEN_DEVICE_FUNC inline const NestByValue<Derived> nestByValue() const;
+    EIGEN_DEVICE_FUNC inline const ForceAlignedAccess<Derived> forceAlignedAccess() const;
+    EIGEN_DEVICE_FUNC inline ForceAlignedAccess<Derived> forceAlignedAccess();
+    template<bool Enable> EIGEN_DEVICE_FUNC
+    inline const typename internal::conditional<Enable,ForceAlignedAccess<Derived>,Derived&>::type forceAlignedAccessIf() const;
+    template<bool Enable> EIGEN_DEVICE_FUNC
+    inline typename internal::conditional<Enable,ForceAlignedAccess<Derived>,Derived&>::type forceAlignedAccessIf();
+
+    EIGEN_DEVICE_FUNC Scalar sum() const;
+    EIGEN_DEVICE_FUNC Scalar mean() const;
+    EIGEN_DEVICE_FUNC Scalar trace() const;
+
+    EIGEN_DEVICE_FUNC Scalar prod() const;
+
+    EIGEN_DEVICE_FUNC typename internal::traits<Derived>::Scalar minCoeff() const;
+    EIGEN_DEVICE_FUNC typename internal::traits<Derived>::Scalar maxCoeff() const;
+
+    template<typename IndexType> EIGEN_DEVICE_FUNC
+    typename internal::traits<Derived>::Scalar minCoeff(IndexType* row, IndexType* col) const;
+    template<typename IndexType> EIGEN_DEVICE_FUNC
+    typename internal::traits<Derived>::Scalar maxCoeff(IndexType* row, IndexType* col) const;
+    template<typename IndexType> EIGEN_DEVICE_FUNC
+    typename internal::traits<Derived>::Scalar minCoeff(IndexType* index) const;
+    template<typename IndexType> EIGEN_DEVICE_FUNC
+    typename internal::traits<Derived>::Scalar maxCoeff(IndexType* index) const;
+
+    template<typename BinaryOp>
+    EIGEN_DEVICE_FUNC
+    Scalar redux(const BinaryOp& func) const;
+
+    template<typename Visitor>
+    EIGEN_DEVICE_FUNC
+    void visit(Visitor& func) const;
+
+    /** \returns a WithFormat proxy object allowing to print a matrix the with given
+      * format \a fmt.
+      *
+      * See class IOFormat for some examples.
+      *
+      * \sa class IOFormat, class WithFormat
+      */
+    inline const WithFormat<Derived> format(const IOFormat& fmt) const
+    {
+      return WithFormat<Derived>(derived(), fmt);
+    }
+
+    /** \returns the unique coefficient of a 1x1 expression */
+    EIGEN_DEVICE_FUNC
+    CoeffReturnType value() const
+    {
+      EIGEN_STATIC_ASSERT_SIZE_1x1(Derived)
+      eigen_assert(this->rows() == 1 && this->cols() == 1);
+      return derived().coeff(0,0);
+    }
+
+    EIGEN_DEVICE_FUNC bool all() const;
+    EIGEN_DEVICE_FUNC bool any() const;
+    EIGEN_DEVICE_FUNC Index count() const;
+
+    typedef VectorwiseOp<Derived, Horizontal> RowwiseReturnType;
+    typedef const VectorwiseOp<const Derived, Horizontal> ConstRowwiseReturnType;
+    typedef VectorwiseOp<Derived, Vertical> ColwiseReturnType;
+    typedef const VectorwiseOp<const Derived, Vertical> ConstColwiseReturnType;
+
+    /** \returns a VectorwiseOp wrapper of *this providing additional partial reduction operations
+    *
+    * Example: \include MatrixBase_rowwise.cpp
+    * Output: \verbinclude MatrixBase_rowwise.out
+    *
+    * \sa colwise(), class VectorwiseOp, \ref TutorialReductionsVisitorsBroadcasting
+    */
+    //Code moved here due to a CUDA compiler bug
+    EIGEN_DEVICE_FUNC inline ConstRowwiseReturnType rowwise() const {
+      return ConstRowwiseReturnType(derived());
+    }
+    EIGEN_DEVICE_FUNC RowwiseReturnType rowwise();
+
+    /** \returns a VectorwiseOp wrapper of *this providing additional partial reduction operations
+    *
+    * Example: \include MatrixBase_colwise.cpp
+    * Output: \verbinclude MatrixBase_colwise.out
+    *
+    * \sa rowwise(), class VectorwiseOp, \ref TutorialReductionsVisitorsBroadcasting
+    */
+    EIGEN_DEVICE_FUNC inline ConstColwiseReturnType colwise() const {
+      return ConstColwiseReturnType(derived());
+    }
+    EIGEN_DEVICE_FUNC ColwiseReturnType colwise();
+
+    typedef CwiseNullaryOp<internal::scalar_random_op<Scalar>,PlainObject> RandomReturnType;
+    static const RandomReturnType Random(Index rows, Index cols);
+    static const RandomReturnType Random(Index size);
+    static const RandomReturnType Random();
+
+    template<typename ThenDerived,typename ElseDerived>
+    const Select<Derived,ThenDerived,ElseDerived>
+    select(const DenseBase<ThenDerived>& thenMatrix,
+           const DenseBase<ElseDerived>& elseMatrix) const;
+
+    template<typename ThenDerived>
+    inline const Select<Derived,ThenDerived, typename ThenDerived::ConstantReturnType>
+    select(const DenseBase<ThenDerived>& thenMatrix, const typename ThenDerived::Scalar& elseScalar) const;
+
+    template<typename ElseDerived>
+    inline const Select<Derived, typename ElseDerived::ConstantReturnType, ElseDerived >
+    select(const typename ElseDerived::Scalar& thenScalar, const DenseBase<ElseDerived>& elseMatrix) const;
+
+    template<int p> RealScalar lpNorm() const;
+
+    template<int RowFactor, int ColFactor>
+    EIGEN_DEVICE_FUNC
+    const Replicate<Derived,RowFactor,ColFactor> replicate() const;
+    /**
+    * \return an expression of the replication of \c *this
+    *
+    * Example: \include MatrixBase_replicate_int_int.cpp
+    * Output: \verbinclude MatrixBase_replicate_int_int.out
+    *
+    * \sa VectorwiseOp::replicate(), DenseBase::replicate<int,int>(), class Replicate
+    */
+    //Code moved here due to a CUDA compiler bug
+    EIGEN_DEVICE_FUNC
+    const Replicate<Derived, Dynamic, Dynamic> replicate(Index rowFactor, Index colFactor) const
+    {
+      return Replicate<Derived, Dynamic, Dynamic>(derived(), rowFactor, colFactor);
+    }
+
+    typedef Reverse<Derived, BothDirections> ReverseReturnType;
+    typedef const Reverse<const Derived, BothDirections> ConstReverseReturnType;
+    EIGEN_DEVICE_FUNC ReverseReturnType reverse();
+    /** This is the const version of reverse(). */
+    //Code moved here due to a CUDA compiler bug
+    EIGEN_DEVICE_FUNC ConstReverseReturnType reverse() const
+    {
+      return ConstReverseReturnType(derived());
+    }
+    EIGEN_DEVICE_FUNC void reverseInPlace();
+
+#define EIGEN_CURRENT_STORAGE_BASE_CLASS Eigen::DenseBase
+#define EIGEN_DOC_BLOCK_ADDONS_NOT_INNER_PANEL
+#define EIGEN_DOC_BLOCK_ADDONS_INNER_PANEL_IF(COND)
+#   include "../plugins/BlockMethods.h"
+#   ifdef EIGEN_DENSEBASE_PLUGIN
+#     include EIGEN_DENSEBASE_PLUGIN
+#   endif
+#undef EIGEN_CURRENT_STORAGE_BASE_CLASS
+#undef EIGEN_DOC_BLOCK_ADDONS_NOT_INNER_PANEL
+#undef EIGEN_DOC_BLOCK_ADDONS_INNER_PANEL_IF
+
+    // disable the use of evalTo for dense objects with a nice compilation error
+    template<typename Dest>
+    EIGEN_DEVICE_FUNC
+    inline void evalTo(Dest& ) const
+    {
+      EIGEN_STATIC_ASSERT((internal::is_same<Dest,void>::value),THE_EVAL_EVALTO_FUNCTION_SHOULD_NEVER_BE_CALLED_FOR_DENSE_OBJECTS);
+    }
+
+  protected:
+    EIGEN_DEFAULT_COPY_CONSTRUCTOR(DenseBase)
+    /** Default constructor. Do nothing. */
+    EIGEN_DEVICE_FUNC DenseBase()
+    {
+      /* Just checks for self-consistency of the flags.
+       * Only do it when debugging Eigen, as this borders on paranoia and could slow compilation down
+       */
+#ifdef EIGEN_INTERNAL_DEBUGGING
+      EIGEN_STATIC_ASSERT((EIGEN_IMPLIES(MaxRowsAtCompileTime==1 && MaxColsAtCompileTime!=1, int(IsRowMajor))
+                        && EIGEN_IMPLIES(MaxColsAtCompileTime==1 && MaxRowsAtCompileTime!=1, int(!IsRowMajor))),
+                          INVALID_STORAGE_ORDER_FOR_THIS_VECTOR_EXPRESSION)
+#endif
+    }
+
+  private:
+    EIGEN_DEVICE_FUNC explicit DenseBase(int);
+    EIGEN_DEVICE_FUNC DenseBase(int,int);
+    template<typename OtherDerived> EIGEN_DEVICE_FUNC explicit DenseBase(const DenseBase<OtherDerived>&);
+};
+
+} // end namespace Eigen
+
+#endif // EIGEN_DENSEBASE_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/SelfAdjointView.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/SelfAdjointView.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/SelfAdjointView.h	(revision 3762)
@@ -0,0 +1,352 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2009 Gael Guennebaud <gael.guennebaud@inria.fr>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_SELFADJOINTMATRIX_H
+#define EIGEN_SELFADJOINTMATRIX_H
+
+namespace Eigen { 
+
+/** \class SelfAdjointView
+  * \ingroup Core_Module
+  *
+  *
+  * \brief Expression of a selfadjoint matrix from a triangular part of a dense matrix
+  *
+  * \param MatrixType the type of the dense matrix storing the coefficients
+  * \param TriangularPart can be either \c #Lower or \c #Upper
+  *
+  * This class is an expression of a sefladjoint matrix from a triangular part of a matrix
+  * with given dense storage of the coefficients. It is the return type of MatrixBase::selfadjointView()
+  * and most of the time this is the only way that it is used.
+  *
+  * \sa class TriangularBase, MatrixBase::selfadjointView()
+  */
+
+namespace internal {
+template<typename MatrixType, unsigned int UpLo>
+struct traits<SelfAdjointView<MatrixType, UpLo> > : traits<MatrixType>
+{
+  typedef typename ref_selector<MatrixType>::non_const_type MatrixTypeNested;
+  typedef typename remove_all<MatrixTypeNested>::type MatrixTypeNestedCleaned;
+  typedef MatrixType ExpressionType;
+  typedef typename MatrixType::PlainObject FullMatrixType;
+  enum {
+    Mode = UpLo | SelfAdjoint,
+    FlagsLvalueBit = is_lvalue<MatrixType>::value ? LvalueBit : 0,
+    Flags =  MatrixTypeNestedCleaned::Flags & (HereditaryBits|FlagsLvalueBit)
+           & (~(PacketAccessBit | DirectAccessBit | LinearAccessBit)) // FIXME these flags should be preserved
+  };
+};
+}
+
+
+template<typename _MatrixType, unsigned int UpLo> class SelfAdjointView
+  : public TriangularBase<SelfAdjointView<_MatrixType, UpLo> >
+{
+  public:
+
+    typedef _MatrixType MatrixType;
+    typedef TriangularBase<SelfAdjointView> Base;
+    typedef typename internal::traits<SelfAdjointView>::MatrixTypeNested MatrixTypeNested;
+    typedef typename internal::traits<SelfAdjointView>::MatrixTypeNestedCleaned MatrixTypeNestedCleaned;
+    typedef MatrixTypeNestedCleaned NestedExpression;
+
+    /** \brief The type of coefficients in this matrix */
+    typedef typename internal::traits<SelfAdjointView>::Scalar Scalar; 
+    typedef typename MatrixType::StorageIndex StorageIndex;
+    typedef typename internal::remove_all<typename MatrixType::ConjugateReturnType>::type MatrixConjugateReturnType;
+
+    enum {
+      Mode = internal::traits<SelfAdjointView>::Mode,
+      Flags = internal::traits<SelfAdjointView>::Flags,
+      TransposeMode = ((Mode & Upper) ? Lower : 0) | ((Mode & Lower) ? Upper : 0)
+    };
+    typedef typename MatrixType::PlainObject PlainObject;
+
+    EIGEN_DEVICE_FUNC
+    explicit inline SelfAdjointView(MatrixType& matrix) : m_matrix(matrix)
+    {
+      EIGEN_STATIC_ASSERT(UpLo==Lower || UpLo==Upper,SELFADJOINTVIEW_ACCEPTS_UPPER_AND_LOWER_MODE_ONLY);
+    }
+
+    EIGEN_DEVICE_FUNC
+    inline Index rows() const { return m_matrix.rows(); }
+    EIGEN_DEVICE_FUNC
+    inline Index cols() const { return m_matrix.cols(); }
+    EIGEN_DEVICE_FUNC
+    inline Index outerStride() const { return m_matrix.outerStride(); }
+    EIGEN_DEVICE_FUNC
+    inline Index innerStride() const { return m_matrix.innerStride(); }
+
+    /** \sa MatrixBase::coeff()
+      * \warning the coordinates must fit into the referenced triangular part
+      */
+    EIGEN_DEVICE_FUNC
+    inline Scalar coeff(Index row, Index col) const
+    {
+      Base::check_coordinates_internal(row, col);
+      return m_matrix.coeff(row, col);
+    }
+
+    /** \sa MatrixBase::coeffRef()
+      * \warning the coordinates must fit into the referenced triangular part
+      */
+    EIGEN_DEVICE_FUNC
+    inline Scalar& coeffRef(Index row, Index col)
+    {
+      EIGEN_STATIC_ASSERT_LVALUE(SelfAdjointView);
+      Base::check_coordinates_internal(row, col);
+      return m_matrix.coeffRef(row, col);
+    }
+
+    /** \internal */
+    EIGEN_DEVICE_FUNC
+    const MatrixTypeNestedCleaned& _expression() const { return m_matrix; }
+
+    EIGEN_DEVICE_FUNC
+    const MatrixTypeNestedCleaned& nestedExpression() const { return m_matrix; }
+    EIGEN_DEVICE_FUNC
+    MatrixTypeNestedCleaned& nestedExpression() { return m_matrix; }
+
+    /** Efficient triangular matrix times vector/matrix product */
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    const Product<SelfAdjointView,OtherDerived>
+    operator*(const MatrixBase<OtherDerived>& rhs) const
+    {
+      return Product<SelfAdjointView,OtherDerived>(*this, rhs.derived());
+    }
+
+    /** Efficient vector/matrix times triangular matrix product */
+    template<typename OtherDerived> friend
+    EIGEN_DEVICE_FUNC
+    const Product<OtherDerived,SelfAdjointView>
+    operator*(const MatrixBase<OtherDerived>& lhs, const SelfAdjointView& rhs)
+    {
+      return Product<OtherDerived,SelfAdjointView>(lhs.derived(),rhs);
+    }
+    
+    friend EIGEN_DEVICE_FUNC
+    const SelfAdjointView<const EIGEN_SCALAR_BINARYOP_EXPR_RETURN_TYPE(Scalar,MatrixType,product),UpLo>
+    operator*(const Scalar& s, const SelfAdjointView& mat)
+    {
+      return (s*mat.nestedExpression()).template selfadjointView<UpLo>();
+    }
+
+    /** Perform a symmetric rank 2 update of the selfadjoint matrix \c *this:
+      * \f$ this = this + \alpha u v^* + conj(\alpha) v u^* \f$
+      * \returns a reference to \c *this
+      *
+      * The vectors \a u and \c v \b must be column vectors, however they can be
+      * a adjoint expression without any overhead. Only the meaningful triangular
+      * part of the matrix is updated, the rest is left unchanged.
+      *
+      * \sa rankUpdate(const MatrixBase<DerivedU>&, Scalar)
+      */
+    template<typename DerivedU, typename DerivedV>
+    EIGEN_DEVICE_FUNC
+    SelfAdjointView& rankUpdate(const MatrixBase<DerivedU>& u, const MatrixBase<DerivedV>& v, const Scalar& alpha = Scalar(1));
+
+    /** Perform a symmetric rank K update of the selfadjoint matrix \c *this:
+      * \f$ this = this + \alpha ( u u^* ) \f$ where \a u is a vector or matrix.
+      *
+      * \returns a reference to \c *this
+      *
+      * Note that to perform \f$ this = this + \alpha ( u^* u ) \f$ you can simply
+      * call this function with u.adjoint().
+      *
+      * \sa rankUpdate(const MatrixBase<DerivedU>&, const MatrixBase<DerivedV>&, Scalar)
+      */
+    template<typename DerivedU>
+    EIGEN_DEVICE_FUNC
+    SelfAdjointView& rankUpdate(const MatrixBase<DerivedU>& u, const Scalar& alpha = Scalar(1));
+
+    /** \returns an expression of a triangular view extracted from the current selfadjoint view of a given triangular part
+      *
+      * The parameter \a TriMode can have the following values: \c #Upper, \c #StrictlyUpper, \c #UnitUpper,
+      * \c #Lower, \c #StrictlyLower, \c #UnitLower.
+      *
+      * If \c TriMode references the same triangular part than \c *this, then this method simply return a \c TriangularView of the nested expression,
+      * otherwise, the nested expression is first transposed, thus returning a \c TriangularView<Transpose<MatrixType>> object.
+      *
+      * \sa MatrixBase::triangularView(), class TriangularView
+      */
+    template<unsigned int TriMode>
+    EIGEN_DEVICE_FUNC
+    typename internal::conditional<(TriMode&(Upper|Lower))==(UpLo&(Upper|Lower)),
+                                   TriangularView<MatrixType,TriMode>,
+                                   TriangularView<typename MatrixType::AdjointReturnType,TriMode> >::type
+    triangularView() const
+    {
+      typename internal::conditional<(TriMode&(Upper|Lower))==(UpLo&(Upper|Lower)), MatrixType&, typename MatrixType::ConstTransposeReturnType>::type tmp1(m_matrix);
+      typename internal::conditional<(TriMode&(Upper|Lower))==(UpLo&(Upper|Lower)), MatrixType&, typename MatrixType::AdjointReturnType>::type tmp2(tmp1);
+      return typename internal::conditional<(TriMode&(Upper|Lower))==(UpLo&(Upper|Lower)),
+                                   TriangularView<MatrixType,TriMode>,
+                                   TriangularView<typename MatrixType::AdjointReturnType,TriMode> >::type(tmp2);
+    }
+
+    typedef SelfAdjointView<const MatrixConjugateReturnType,UpLo> ConjugateReturnType;
+    /** \sa MatrixBase::conjugate() const */
+    EIGEN_DEVICE_FUNC
+    inline const ConjugateReturnType conjugate() const
+    { return ConjugateReturnType(m_matrix.conjugate()); }
+
+    typedef SelfAdjointView<const typename MatrixType::AdjointReturnType,TransposeMode> AdjointReturnType;
+    /** \sa MatrixBase::adjoint() const */
+    EIGEN_DEVICE_FUNC
+    inline const AdjointReturnType adjoint() const
+    { return AdjointReturnType(m_matrix.adjoint()); }
+
+    typedef SelfAdjointView<typename MatrixType::TransposeReturnType,TransposeMode> TransposeReturnType;
+     /** \sa MatrixBase::transpose() */
+    EIGEN_DEVICE_FUNC
+    inline TransposeReturnType transpose()
+    {
+      EIGEN_STATIC_ASSERT_LVALUE(MatrixType)
+      typename MatrixType::TransposeReturnType tmp(m_matrix);
+      return TransposeReturnType(tmp);
+    }
+
+    typedef SelfAdjointView<const typename MatrixType::ConstTransposeReturnType,TransposeMode> ConstTransposeReturnType;
+    /** \sa MatrixBase::transpose() const */
+    EIGEN_DEVICE_FUNC
+    inline const ConstTransposeReturnType transpose() const
+    {
+      return ConstTransposeReturnType(m_matrix.transpose());
+    }
+
+    /** \returns a const expression of the main diagonal of the matrix \c *this
+      *
+      * This method simply returns the diagonal of the nested expression, thus by-passing the SelfAdjointView decorator.
+      *
+      * \sa MatrixBase::diagonal(), class Diagonal */
+    EIGEN_DEVICE_FUNC
+    typename MatrixType::ConstDiagonalReturnType diagonal() const
+    {
+      return typename MatrixType::ConstDiagonalReturnType(m_matrix);
+    }
+
+/////////// Cholesky module ///////////
+
+    const LLT<PlainObject, UpLo> llt() const;
+    const LDLT<PlainObject, UpLo> ldlt() const;
+
+/////////// Eigenvalue module ///////////
+
+    /** Real part of #Scalar */
+    typedef typename NumTraits<Scalar>::Real RealScalar;
+    /** Return type of eigenvalues() */
+    typedef Matrix<RealScalar, internal::traits<MatrixType>::ColsAtCompileTime, 1> EigenvaluesReturnType;
+
+    EIGEN_DEVICE_FUNC
+    EigenvaluesReturnType eigenvalues() const;
+    EIGEN_DEVICE_FUNC
+    RealScalar operatorNorm() const;
+
+  protected:
+    MatrixTypeNested m_matrix;
+};
+
+
+// template<typename OtherDerived, typename MatrixType, unsigned int UpLo>
+// internal::selfadjoint_matrix_product_returntype<OtherDerived,SelfAdjointView<MatrixType,UpLo> >
+// operator*(const MatrixBase<OtherDerived>& lhs, const SelfAdjointView<MatrixType,UpLo>& rhs)
+// {
+//   return internal::matrix_selfadjoint_product_returntype<OtherDerived,SelfAdjointView<MatrixType,UpLo> >(lhs.derived(),rhs);
+// }
+
+// selfadjoint to dense matrix
+
+namespace internal {
+
+// TODO currently a selfadjoint expression has the form SelfAdjointView<.,.>
+//      in the future selfadjoint-ness should be defined by the expression traits
+//      such that Transpose<SelfAdjointView<.,.> > is valid. (currently TriangularBase::transpose() is overloaded to make it work)
+template<typename MatrixType, unsigned int Mode>
+struct evaluator_traits<SelfAdjointView<MatrixType,Mode> >
+{
+  typedef typename storage_kind_to_evaluator_kind<typename MatrixType::StorageKind>::Kind Kind;
+  typedef SelfAdjointShape Shape;
+};
+
+template<int UpLo, int SetOpposite, typename DstEvaluatorTypeT, typename SrcEvaluatorTypeT, typename Functor, int Version>
+class triangular_dense_assignment_kernel<UpLo,SelfAdjoint,SetOpposite,DstEvaluatorTypeT,SrcEvaluatorTypeT,Functor,Version>
+  : public generic_dense_assignment_kernel<DstEvaluatorTypeT, SrcEvaluatorTypeT, Functor, Version>
+{
+protected:
+  typedef generic_dense_assignment_kernel<DstEvaluatorTypeT, SrcEvaluatorTypeT, Functor, Version> Base;
+  typedef typename Base::DstXprType DstXprType;
+  typedef typename Base::SrcXprType SrcXprType;
+  using Base::m_dst;
+  using Base::m_src;
+  using Base::m_functor;
+public:
+  
+  typedef typename Base::DstEvaluatorType DstEvaluatorType;
+  typedef typename Base::SrcEvaluatorType SrcEvaluatorType;
+  typedef typename Base::Scalar Scalar;
+  typedef typename Base::AssignmentTraits AssignmentTraits;
+  
+  
+  EIGEN_DEVICE_FUNC triangular_dense_assignment_kernel(DstEvaluatorType &dst, const SrcEvaluatorType &src, const Functor &func, DstXprType& dstExpr)
+    : Base(dst, src, func, dstExpr)
+  {}
+  
+  EIGEN_DEVICE_FUNC void assignCoeff(Index row, Index col)
+  {
+    eigen_internal_assert(row!=col);
+    Scalar tmp = m_src.coeff(row,col);
+    m_functor.assignCoeff(m_dst.coeffRef(row,col), tmp);
+    m_functor.assignCoeff(m_dst.coeffRef(col,row), numext::conj(tmp));
+  }
+  
+  EIGEN_DEVICE_FUNC void assignDiagonalCoeff(Index id)
+  {
+    Base::assignCoeff(id,id);
+  }
+  
+  EIGEN_DEVICE_FUNC void assignOppositeCoeff(Index, Index)
+  { eigen_internal_assert(false && "should never be called"); }
+};
+
+} // end namespace internal
+
+/***************************************************************************
+* Implementation of MatrixBase methods
+***************************************************************************/
+
+/** This is the const version of MatrixBase::selfadjointView() */
+template<typename Derived>
+template<unsigned int UpLo>
+typename MatrixBase<Derived>::template ConstSelfAdjointViewReturnType<UpLo>::Type
+MatrixBase<Derived>::selfadjointView() const
+{
+  return typename ConstSelfAdjointViewReturnType<UpLo>::Type(derived());
+}
+
+/** \returns an expression of a symmetric/self-adjoint view extracted from the upper or lower triangular part of the current matrix
+  *
+  * The parameter \a UpLo can be either \c #Upper or \c #Lower
+  *
+  * Example: \include MatrixBase_selfadjointView.cpp
+  * Output: \verbinclude MatrixBase_selfadjointView.out
+  *
+  * \sa class SelfAdjointView
+  */
+template<typename Derived>
+template<unsigned int UpLo>
+typename MatrixBase<Derived>::template SelfAdjointViewReturnType<UpLo>::Type
+MatrixBase<Derived>::selfadjointView()
+{
+  return typename SelfAdjointViewReturnType<UpLo>::Type(derived());
+}
+
+} // end namespace Eigen
+
+#endif // EIGEN_SELFADJOINTMATRIX_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/NestByValue.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/NestByValue.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/NestByValue.h	(revision 3762)
@@ -0,0 +1,110 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2008 Gael Guennebaud <gael.guennebaud@inria.fr>
+// Copyright (C) 2006-2008 Benoit Jacob <jacob.benoit.1@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_NESTBYVALUE_H
+#define EIGEN_NESTBYVALUE_H
+
+namespace Eigen {
+
+namespace internal {
+template<typename ExpressionType>
+struct traits<NestByValue<ExpressionType> > : public traits<ExpressionType>
+{};
+}
+
+/** \class NestByValue
+  * \ingroup Core_Module
+  *
+  * \brief Expression which must be nested by value
+  *
+  * \tparam ExpressionType the type of the object of which we are requiring nesting-by-value
+  *
+  * This class is the return type of MatrixBase::nestByValue()
+  * and most of the time this is the only way it is used.
+  *
+  * \sa MatrixBase::nestByValue()
+  */
+template<typename ExpressionType> class NestByValue
+  : public internal::dense_xpr_base< NestByValue<ExpressionType> >::type
+{
+  public:
+
+    typedef typename internal::dense_xpr_base<NestByValue>::type Base;
+    EIGEN_DENSE_PUBLIC_INTERFACE(NestByValue)
+
+    EIGEN_DEVICE_FUNC explicit inline NestByValue(const ExpressionType& matrix) : m_expression(matrix) {}
+
+    EIGEN_DEVICE_FUNC inline Index rows() const { return m_expression.rows(); }
+    EIGEN_DEVICE_FUNC inline Index cols() const { return m_expression.cols(); }
+    EIGEN_DEVICE_FUNC inline Index outerStride() const { return m_expression.outerStride(); }
+    EIGEN_DEVICE_FUNC inline Index innerStride() const { return m_expression.innerStride(); }
+
+    EIGEN_DEVICE_FUNC inline const CoeffReturnType coeff(Index row, Index col) const
+    {
+      return m_expression.coeff(row, col);
+    }
+
+    EIGEN_DEVICE_FUNC inline Scalar& coeffRef(Index row, Index col)
+    {
+      return m_expression.const_cast_derived().coeffRef(row, col);
+    }
+
+    EIGEN_DEVICE_FUNC inline const CoeffReturnType coeff(Index index) const
+    {
+      return m_expression.coeff(index);
+    }
+
+    EIGEN_DEVICE_FUNC inline Scalar& coeffRef(Index index)
+    {
+      return m_expression.const_cast_derived().coeffRef(index);
+    }
+
+    template<int LoadMode>
+    inline const PacketScalar packet(Index row, Index col) const
+    {
+      return m_expression.template packet<LoadMode>(row, col);
+    }
+
+    template<int LoadMode>
+    inline void writePacket(Index row, Index col, const PacketScalar& x)
+    {
+      m_expression.const_cast_derived().template writePacket<LoadMode>(row, col, x);
+    }
+
+    template<int LoadMode>
+    inline const PacketScalar packet(Index index) const
+    {
+      return m_expression.template packet<LoadMode>(index);
+    }
+
+    template<int LoadMode>
+    inline void writePacket(Index index, const PacketScalar& x)
+    {
+      m_expression.const_cast_derived().template writePacket<LoadMode>(index, x);
+    }
+
+    EIGEN_DEVICE_FUNC operator const ExpressionType&() const { return m_expression; }
+
+  protected:
+    const ExpressionType m_expression;
+};
+
+/** \returns an expression of the temporary version of *this.
+  */
+template<typename Derived>
+inline const NestByValue<Derived>
+DenseBase<Derived>::nestByValue() const
+{
+  return NestByValue<Derived>(derived());
+}
+
+} // end namespace Eigen
+
+#endif // EIGEN_NESTBYVALUE_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/SolverBase.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/SolverBase.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/SolverBase.h	(revision 3762)
@@ -0,0 +1,130 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2015 Gael Guennebaud <gael.guennebaud@inria.fr>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_SOLVERBASE_H
+#define EIGEN_SOLVERBASE_H
+
+namespace Eigen {
+
+namespace internal {
+
+
+
+} // end namespace internal
+
+/** \class SolverBase
+  * \brief A base class for matrix decomposition and solvers
+  *
+  * \tparam Derived the actual type of the decomposition/solver.
+  *
+  * Any matrix decomposition inheriting this base class provide the following API:
+  *
+  * \code
+  * MatrixType A, b, x;
+  * DecompositionType dec(A);
+  * x = dec.solve(b);             // solve A   * x = b
+  * x = dec.transpose().solve(b); // solve A^T * x = b
+  * x = dec.adjoint().solve(b);   // solve A'  * x = b
+  * \endcode
+  *
+  * \warning Currently, any other usage of transpose() and adjoint() are not supported and will produce compilation errors.
+  *
+  * \sa class PartialPivLU, class FullPivLU
+  */
+template<typename Derived>
+class SolverBase : public EigenBase<Derived>
+{
+  public:
+
+    typedef EigenBase<Derived> Base;
+    typedef typename internal::traits<Derived>::Scalar Scalar;
+    typedef Scalar CoeffReturnType;
+
+    enum {
+      RowsAtCompileTime = internal::traits<Derived>::RowsAtCompileTime,
+      ColsAtCompileTime = internal::traits<Derived>::ColsAtCompileTime,
+      SizeAtCompileTime = (internal::size_at_compile_time<internal::traits<Derived>::RowsAtCompileTime,
+                                                          internal::traits<Derived>::ColsAtCompileTime>::ret),
+      MaxRowsAtCompileTime = internal::traits<Derived>::MaxRowsAtCompileTime,
+      MaxColsAtCompileTime = internal::traits<Derived>::MaxColsAtCompileTime,
+      MaxSizeAtCompileTime = (internal::size_at_compile_time<internal::traits<Derived>::MaxRowsAtCompileTime,
+                                                             internal::traits<Derived>::MaxColsAtCompileTime>::ret),
+      IsVectorAtCompileTime = internal::traits<Derived>::MaxRowsAtCompileTime == 1
+                           || internal::traits<Derived>::MaxColsAtCompileTime == 1
+    };
+
+    /** Default constructor */
+    SolverBase()
+    {}
+
+    ~SolverBase()
+    {}
+
+    using Base::derived;
+
+    /** \returns an expression of the solution x of \f$ A x = b \f$ using the current decomposition of A.
+      */
+    template<typename Rhs>
+    inline const Solve<Derived, Rhs>
+    solve(const MatrixBase<Rhs>& b) const
+    {
+      eigen_assert(derived().rows()==b.rows() && "solve(): invalid number of rows of the right hand side matrix b");
+      return Solve<Derived, Rhs>(derived(), b.derived());
+    }
+
+    /** \internal the return type of transpose() */
+    typedef typename internal::add_const<Transpose<const Derived> >::type ConstTransposeReturnType;
+    /** \returns an expression of the transposed of the factored matrix.
+      *
+      * A typical usage is to solve for the transposed problem A^T x = b:
+      * \code x = dec.transpose().solve(b); \endcode
+      *
+      * \sa adjoint(), solve()
+      */
+    inline ConstTransposeReturnType transpose() const
+    {
+      return ConstTransposeReturnType(derived());
+    }
+
+    /** \internal the return type of adjoint() */
+    typedef typename internal::conditional<NumTraits<Scalar>::IsComplex,
+                        CwiseUnaryOp<internal::scalar_conjugate_op<Scalar>, ConstTransposeReturnType>,
+                        ConstTransposeReturnType
+                     >::type AdjointReturnType;
+    /** \returns an expression of the adjoint of the factored matrix
+      *
+      * A typical usage is to solve for the adjoint problem A' x = b:
+      * \code x = dec.adjoint().solve(b); \endcode
+      *
+      * For real scalar types, this function is equivalent to transpose().
+      *
+      * \sa transpose(), solve()
+      */
+    inline AdjointReturnType adjoint() const
+    {
+      return AdjointReturnType(derived().transpose());
+    }
+
+  protected:
+};
+
+namespace internal {
+
+template<typename Derived>
+struct generic_xpr_base<Derived, MatrixXpr, SolverStorage>
+{
+  typedef SolverBase<Derived> type;
+
+};
+
+} // end namespace internal
+
+} // end namespace Eigen
+
+#endif // EIGEN_SOLVERBASE_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/ReturnByValue.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/ReturnByValue.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/ReturnByValue.h	(revision 3762)
@@ -0,0 +1,117 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2009-2010 Gael Guennebaud <gael.guennebaud@inria.fr>
+// Copyright (C) 2009-2010 Benoit Jacob <jacob.benoit.1@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_RETURNBYVALUE_H
+#define EIGEN_RETURNBYVALUE_H
+
+namespace Eigen {
+
+namespace internal {
+
+template<typename Derived>
+struct traits<ReturnByValue<Derived> >
+  : public traits<typename traits<Derived>::ReturnType>
+{
+  enum {
+    // We're disabling the DirectAccess because e.g. the constructor of
+    // the Block-with-DirectAccess expression requires to have a coeffRef method.
+    // Also, we don't want to have to implement the stride stuff.
+    Flags = (traits<typename traits<Derived>::ReturnType>::Flags
+             | EvalBeforeNestingBit) & ~DirectAccessBit
+  };
+};
+
+/* The ReturnByValue object doesn't even have a coeff() method.
+ * So the only way that nesting it in an expression can work, is by evaluating it into a plain matrix.
+ * So internal::nested always gives the plain return matrix type.
+ *
+ * FIXME: I don't understand why we need this specialization: isn't this taken care of by the EvalBeforeNestingBit ??
+ * Answer: EvalBeforeNestingBit should be deprecated since we have the evaluators
+ */
+template<typename Derived,int n,typename PlainObject>
+struct nested_eval<ReturnByValue<Derived>, n, PlainObject>
+{
+  typedef typename traits<Derived>::ReturnType type;
+};
+
+} // end namespace internal
+
+/** \class ReturnByValue
+  * \ingroup Core_Module
+  *
+  */
+template<typename Derived> class ReturnByValue
+  : public internal::dense_xpr_base< ReturnByValue<Derived> >::type, internal::no_assignment_operator
+{
+  public:
+    typedef typename internal::traits<Derived>::ReturnType ReturnType;
+
+    typedef typename internal::dense_xpr_base<ReturnByValue>::type Base;
+    EIGEN_DENSE_PUBLIC_INTERFACE(ReturnByValue)
+
+    template<typename Dest>
+    EIGEN_DEVICE_FUNC
+    inline void evalTo(Dest& dst) const
+    { static_cast<const Derived*>(this)->evalTo(dst); }
+    EIGEN_DEVICE_FUNC inline Index rows() const { return static_cast<const Derived*>(this)->rows(); }
+    EIGEN_DEVICE_FUNC inline Index cols() const { return static_cast<const Derived*>(this)->cols(); }
+
+#ifndef EIGEN_PARSED_BY_DOXYGEN
+#define Unusable YOU_ARE_TRYING_TO_ACCESS_A_SINGLE_COEFFICIENT_IN_A_SPECIAL_EXPRESSION_WHERE_THAT_IS_NOT_ALLOWED_BECAUSE_THAT_WOULD_BE_INEFFICIENT
+    class Unusable{
+      Unusable(const Unusable&) {}
+      Unusable& operator=(const Unusable&) {return *this;}
+    };
+    const Unusable& coeff(Index) const { return *reinterpret_cast<const Unusable*>(this); }
+    const Unusable& coeff(Index,Index) const { return *reinterpret_cast<const Unusable*>(this); }
+    Unusable& coeffRef(Index) { return *reinterpret_cast<Unusable*>(this); }
+    Unusable& coeffRef(Index,Index) { return *reinterpret_cast<Unusable*>(this); }
+#undef Unusable
+#endif
+};
+
+template<typename Derived>
+template<typename OtherDerived>
+Derived& DenseBase<Derived>::operator=(const ReturnByValue<OtherDerived>& other)
+{
+  other.evalTo(derived());
+  return derived();
+}
+
+namespace internal {
+
+// Expression is evaluated in a temporary; default implementation of Assignment is bypassed so that
+// when a ReturnByValue expression is assigned, the evaluator is not constructed.
+// TODO: Finalize port to new regime; ReturnByValue should not exist in the expression world
+  
+template<typename Derived>
+struct evaluator<ReturnByValue<Derived> >
+  : public evaluator<typename internal::traits<Derived>::ReturnType>
+{
+  typedef ReturnByValue<Derived> XprType;
+  typedef typename internal::traits<Derived>::ReturnType PlainObject;
+  typedef evaluator<PlainObject> Base;
+  
+  EIGEN_DEVICE_FUNC explicit evaluator(const XprType& xpr)
+    : m_result(xpr.rows(), xpr.cols())
+  {
+    ::new (static_cast<Base*>(this)) Base(m_result);
+    xpr.evalTo(m_result);
+  }
+
+protected:
+  PlainObject m_result;
+};
+
+} // end namespace internal
+
+} // end namespace Eigen
+
+#endif // EIGEN_RETURNBYVALUE_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/MapBase.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/MapBase.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/MapBase.h	(revision 3762)
@@ -0,0 +1,308 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2007-2010 Benoit Jacob <jacob.benoit.1@gmail.com>
+// Copyright (C) 2008 Gael Guennebaud <gael.guennebaud@inria.fr>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_MAPBASE_H
+#define EIGEN_MAPBASE_H
+
+#define EIGEN_STATIC_ASSERT_INDEX_BASED_ACCESS(Derived) \
+      EIGEN_STATIC_ASSERT((int(internal::evaluator<Derived>::Flags) & LinearAccessBit) || Derived::IsVectorAtCompileTime, \
+                          YOU_ARE_TRYING_TO_USE_AN_INDEX_BASED_ACCESSOR_ON_AN_EXPRESSION_THAT_DOES_NOT_SUPPORT_THAT)
+
+namespace Eigen { 
+
+/** \ingroup Core_Module
+  *
+  * \brief Base class for dense Map and Block expression with direct access
+  *
+  * This base class provides the const low-level accessors (e.g. coeff, coeffRef) of dense
+  * Map and Block objects with direct access.
+  * Typical users do not have to directly deal with this class.
+  *
+  * This class can be extended by through the macro plugin \c EIGEN_MAPBASE_PLUGIN.
+  * See \link TopicCustomizing_Plugins customizing Eigen \endlink for details.
+  *
+  * The \c Derived class has to provide the following two methods describing the memory layout:
+  *  \code Index innerStride() const; \endcode
+  *  \code Index outerStride() const; \endcode
+  *
+  * \sa class Map, class Block
+  */
+template<typename Derived> class MapBase<Derived, ReadOnlyAccessors>
+  : public internal::dense_xpr_base<Derived>::type
+{
+  public:
+
+    typedef typename internal::dense_xpr_base<Derived>::type Base;
+    enum {
+      RowsAtCompileTime = internal::traits<Derived>::RowsAtCompileTime,
+      ColsAtCompileTime = internal::traits<Derived>::ColsAtCompileTime,
+      InnerStrideAtCompileTime = internal::traits<Derived>::InnerStrideAtCompileTime,
+      SizeAtCompileTime = Base::SizeAtCompileTime
+    };
+
+    typedef typename internal::traits<Derived>::StorageKind StorageKind;
+    typedef typename internal::traits<Derived>::Scalar Scalar;
+    typedef typename internal::packet_traits<Scalar>::type PacketScalar;
+    typedef typename NumTraits<Scalar>::Real RealScalar;
+    typedef typename internal::conditional<
+                         bool(internal::is_lvalue<Derived>::value),
+                         Scalar *,
+                         const Scalar *>::type
+                     PointerType;
+
+    using Base::derived;
+//    using Base::RowsAtCompileTime;
+//    using Base::ColsAtCompileTime;
+//    using Base::SizeAtCompileTime;
+    using Base::MaxRowsAtCompileTime;
+    using Base::MaxColsAtCompileTime;
+    using Base::MaxSizeAtCompileTime;
+    using Base::IsVectorAtCompileTime;
+    using Base::Flags;
+    using Base::IsRowMajor;
+
+    using Base::rows;
+    using Base::cols;
+    using Base::size;
+    using Base::coeff;
+    using Base::coeffRef;
+    using Base::lazyAssign;
+    using Base::eval;
+
+    using Base::innerStride;
+    using Base::outerStride;
+    using Base::rowStride;
+    using Base::colStride;
+
+    // bug 217 - compile error on ICC 11.1
+    using Base::operator=;
+
+    typedef typename Base::CoeffReturnType CoeffReturnType;
+
+    /** \copydoc DenseBase::rows() */
+    EIGEN_DEVICE_FUNC inline Index rows() const { return m_rows.value(); }
+    /** \copydoc DenseBase::cols() */
+    EIGEN_DEVICE_FUNC inline Index cols() const { return m_cols.value(); }
+
+    /** Returns a pointer to the first coefficient of the matrix or vector.
+      *
+      * \note When addressing this data, make sure to honor the strides returned by innerStride() and outerStride().
+      *
+      * \sa innerStride(), outerStride()
+      */
+    EIGEN_DEVICE_FUNC inline const Scalar* data() const { return m_data; }
+
+    /** \copydoc PlainObjectBase::coeff(Index,Index) const */
+    EIGEN_DEVICE_FUNC
+    inline const Scalar& coeff(Index rowId, Index colId) const
+    {
+      return m_data[colId * colStride() + rowId * rowStride()];
+    }
+
+    /** \copydoc PlainObjectBase::coeff(Index) const */
+    EIGEN_DEVICE_FUNC
+    inline const Scalar& coeff(Index index) const
+    {
+      EIGEN_STATIC_ASSERT_INDEX_BASED_ACCESS(Derived)
+      return m_data[index * innerStride()];
+    }
+
+    /** \copydoc PlainObjectBase::coeffRef(Index,Index) const */
+    EIGEN_DEVICE_FUNC
+    inline const Scalar& coeffRef(Index rowId, Index colId) const
+    {
+      return this->m_data[colId * colStride() + rowId * rowStride()];
+    }
+
+    /** \copydoc PlainObjectBase::coeffRef(Index) const */
+    EIGEN_DEVICE_FUNC
+    inline const Scalar& coeffRef(Index index) const
+    {
+      EIGEN_STATIC_ASSERT_INDEX_BASED_ACCESS(Derived)
+      return this->m_data[index * innerStride()];
+    }
+
+    /** \internal */
+    template<int LoadMode>
+    inline PacketScalar packet(Index rowId, Index colId) const
+    {
+      return internal::ploadt<PacketScalar, LoadMode>
+               (m_data + (colId * colStride() + rowId * rowStride()));
+    }
+
+    /** \internal */
+    template<int LoadMode>
+    inline PacketScalar packet(Index index) const
+    {
+      EIGEN_STATIC_ASSERT_INDEX_BASED_ACCESS(Derived)
+      return internal::ploadt<PacketScalar, LoadMode>(m_data + index * innerStride());
+    }
+
+    /** \internal Constructor for fixed size matrices or vectors */
+    EIGEN_DEVICE_FUNC
+    explicit inline MapBase(PointerType dataPtr) : m_data(dataPtr), m_rows(RowsAtCompileTime), m_cols(ColsAtCompileTime)
+    {
+      EIGEN_STATIC_ASSERT_FIXED_SIZE(Derived)
+      checkSanity<Derived>();
+    }
+
+    /** \internal Constructor for dynamically sized vectors */
+    EIGEN_DEVICE_FUNC
+    inline MapBase(PointerType dataPtr, Index vecSize)
+            : m_data(dataPtr),
+              m_rows(RowsAtCompileTime == Dynamic ? vecSize : Index(RowsAtCompileTime)),
+              m_cols(ColsAtCompileTime == Dynamic ? vecSize : Index(ColsAtCompileTime))
+    {
+      EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
+      eigen_assert(vecSize >= 0);
+      eigen_assert(dataPtr == 0 || SizeAtCompileTime == Dynamic || SizeAtCompileTime == vecSize);
+      checkSanity<Derived>();
+    }
+
+    /** \internal Constructor for dynamically sized matrices */
+    EIGEN_DEVICE_FUNC
+    inline MapBase(PointerType dataPtr, Index rows, Index cols)
+            : m_data(dataPtr), m_rows(rows), m_cols(cols)
+    {
+      eigen_assert( (dataPtr == 0)
+              || (   rows >= 0 && (RowsAtCompileTime == Dynamic || RowsAtCompileTime == rows)
+                  && cols >= 0 && (ColsAtCompileTime == Dynamic || ColsAtCompileTime == cols)));
+      checkSanity<Derived>();
+    }
+
+    #ifdef EIGEN_MAPBASE_PLUGIN
+    #include EIGEN_MAPBASE_PLUGIN
+    #endif
+
+  protected:
+    EIGEN_DEFAULT_COPY_CONSTRUCTOR(MapBase)
+    EIGEN_DEFAULT_EMPTY_CONSTRUCTOR_AND_DESTRUCTOR(MapBase)
+
+    template<typename T>
+    EIGEN_DEVICE_FUNC
+    void checkSanity(typename internal::enable_if<(internal::traits<T>::Alignment>0),void*>::type = 0) const
+    {
+#if EIGEN_MAX_ALIGN_BYTES>0
+      // innerStride() is not set yet when this function is called, so we optimistically assume the lowest plausible value:
+      const Index minInnerStride = InnerStrideAtCompileTime == Dynamic ? 1 : Index(InnerStrideAtCompileTime);
+      EIGEN_ONLY_USED_FOR_DEBUG(minInnerStride);
+      eigen_assert((   ((internal::UIntPtr(m_data) % internal::traits<Derived>::Alignment) == 0)
+                    || (cols() * rows() * minInnerStride * sizeof(Scalar)) < internal::traits<Derived>::Alignment ) && "data is not aligned");
+#endif
+    }
+
+    template<typename T>
+    EIGEN_DEVICE_FUNC
+    void checkSanity(typename internal::enable_if<internal::traits<T>::Alignment==0,void*>::type = 0) const
+    {}
+
+    PointerType m_data;
+    const internal::variable_if_dynamic<Index, RowsAtCompileTime> m_rows;
+    const internal::variable_if_dynamic<Index, ColsAtCompileTime> m_cols;
+};
+
+/** \ingroup Core_Module
+  *
+  * \brief Base class for non-const dense Map and Block expression with direct access
+  *
+  * This base class provides the non-const low-level accessors (e.g. coeff and coeffRef) of
+  * dense Map and Block objects with direct access.
+  * It inherits MapBase<Derived, ReadOnlyAccessors> which defines the const variant for reading specific entries.
+  *
+  * \sa class Map, class Block
+  */
+template<typename Derived> class MapBase<Derived, WriteAccessors>
+  : public MapBase<Derived, ReadOnlyAccessors>
+{
+    typedef MapBase<Derived, ReadOnlyAccessors> ReadOnlyMapBase;
+  public:
+
+    typedef MapBase<Derived, ReadOnlyAccessors> Base;
+
+    typedef typename Base::Scalar Scalar;
+    typedef typename Base::PacketScalar PacketScalar;
+    typedef typename Base::StorageIndex StorageIndex;
+    typedef typename Base::PointerType PointerType;
+
+    using Base::derived;
+    using Base::rows;
+    using Base::cols;
+    using Base::size;
+    using Base::coeff;
+    using Base::coeffRef;
+
+    using Base::innerStride;
+    using Base::outerStride;
+    using Base::rowStride;
+    using Base::colStride;
+
+    typedef typename internal::conditional<
+                    internal::is_lvalue<Derived>::value,
+                    Scalar,
+                    const Scalar
+                  >::type ScalarWithConstIfNotLvalue;
+
+    EIGEN_DEVICE_FUNC
+    inline const Scalar* data() const { return this->m_data; }
+    EIGEN_DEVICE_FUNC
+    inline ScalarWithConstIfNotLvalue* data() { return this->m_data; } // no const-cast here so non-const-correct code will give a compile error
+
+    EIGEN_DEVICE_FUNC
+    inline ScalarWithConstIfNotLvalue& coeffRef(Index row, Index col)
+    {
+      return this->m_data[col * colStride() + row * rowStride()];
+    }
+
+    EIGEN_DEVICE_FUNC
+    inline ScalarWithConstIfNotLvalue& coeffRef(Index index)
+    {
+      EIGEN_STATIC_ASSERT_INDEX_BASED_ACCESS(Derived)
+      return this->m_data[index * innerStride()];
+    }
+
+    template<int StoreMode>
+    inline void writePacket(Index row, Index col, const PacketScalar& val)
+    {
+      internal::pstoret<Scalar, PacketScalar, StoreMode>
+               (this->m_data + (col * colStride() + row * rowStride()), val);
+    }
+
+    template<int StoreMode>
+    inline void writePacket(Index index, const PacketScalar& val)
+    {
+      EIGEN_STATIC_ASSERT_INDEX_BASED_ACCESS(Derived)
+      internal::pstoret<Scalar, PacketScalar, StoreMode>
+                (this->m_data + index * innerStride(), val);
+    }
+
+    EIGEN_DEVICE_FUNC explicit inline MapBase(PointerType dataPtr) : Base(dataPtr) {}
+    EIGEN_DEVICE_FUNC inline MapBase(PointerType dataPtr, Index vecSize) : Base(dataPtr, vecSize) {}
+    EIGEN_DEVICE_FUNC inline MapBase(PointerType dataPtr, Index rows, Index cols) : Base(dataPtr, rows, cols) {}
+
+    EIGEN_DEVICE_FUNC
+    Derived& operator=(const MapBase& other)
+    {
+      ReadOnlyMapBase::Base::operator=(other);
+      return derived();
+    }
+
+    // In theory we could simply refer to Base:Base::operator=, but MSVC does not like Base::Base,
+    // see bugs 821 and 920.
+    using ReadOnlyMapBase::Base::operator=;
+  protected:
+    EIGEN_DEFAULT_COPY_CONSTRUCTOR(MapBase)
+    EIGEN_DEFAULT_EMPTY_CONSTRUCTOR_AND_DESTRUCTOR(MapBase)
+};
+
+#undef EIGEN_STATIC_ASSERT_INDEX_BASED_ACCESS
+
+} // end namespace Eigen
+
+#endif // EIGEN_MAPBASE_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/Replicate.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/Replicate.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/Replicate.h	(revision 3762)
@@ -0,0 +1,142 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2009-2010 Gael Guennebaud <gael.guennebaud@inria.fr>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_REPLICATE_H
+#define EIGEN_REPLICATE_H
+
+namespace Eigen { 
+
+namespace internal {
+template<typename MatrixType,int RowFactor,int ColFactor>
+struct traits<Replicate<MatrixType,RowFactor,ColFactor> >
+ : traits<MatrixType>
+{
+  typedef typename MatrixType::Scalar Scalar;
+  typedef typename traits<MatrixType>::StorageKind StorageKind;
+  typedef typename traits<MatrixType>::XprKind XprKind;
+  typedef typename ref_selector<MatrixType>::type MatrixTypeNested;
+  typedef typename remove_reference<MatrixTypeNested>::type _MatrixTypeNested;
+  enum {
+    RowsAtCompileTime = RowFactor==Dynamic || int(MatrixType::RowsAtCompileTime)==Dynamic
+                      ? Dynamic
+                      : RowFactor * MatrixType::RowsAtCompileTime,
+    ColsAtCompileTime = ColFactor==Dynamic || int(MatrixType::ColsAtCompileTime)==Dynamic
+                      ? Dynamic
+                      : ColFactor * MatrixType::ColsAtCompileTime,
+   //FIXME we don't propagate the max sizes !!!
+    MaxRowsAtCompileTime = RowsAtCompileTime,
+    MaxColsAtCompileTime = ColsAtCompileTime,
+    IsRowMajor = MaxRowsAtCompileTime==1 && MaxColsAtCompileTime!=1 ? 1
+               : MaxColsAtCompileTime==1 && MaxRowsAtCompileTime!=1 ? 0
+               : (MatrixType::Flags & RowMajorBit) ? 1 : 0,
+    
+    // FIXME enable DirectAccess with negative strides?
+    Flags = IsRowMajor ? RowMajorBit : 0
+  };
+};
+}
+
+/**
+  * \class Replicate
+  * \ingroup Core_Module
+  *
+  * \brief Expression of the multiple replication of a matrix or vector
+  *
+  * \tparam MatrixType the type of the object we are replicating
+  * \tparam RowFactor number of repetitions at compile time along the vertical direction, can be Dynamic.
+  * \tparam ColFactor number of repetitions at compile time along the horizontal direction, can be Dynamic.
+  *
+  * This class represents an expression of the multiple replication of a matrix or vector.
+  * It is the return type of DenseBase::replicate() and most of the time
+  * this is the only way it is used.
+  *
+  * \sa DenseBase::replicate()
+  */
+template<typename MatrixType,int RowFactor,int ColFactor> class Replicate
+  : public internal::dense_xpr_base< Replicate<MatrixType,RowFactor,ColFactor> >::type
+{
+    typedef typename internal::traits<Replicate>::MatrixTypeNested MatrixTypeNested;
+    typedef typename internal::traits<Replicate>::_MatrixTypeNested _MatrixTypeNested;
+  public:
+
+    typedef typename internal::dense_xpr_base<Replicate>::type Base;
+    EIGEN_DENSE_PUBLIC_INTERFACE(Replicate)
+    typedef typename internal::remove_all<MatrixType>::type NestedExpression;
+
+    template<typename OriginalMatrixType>
+    EIGEN_DEVICE_FUNC
+    inline explicit Replicate(const OriginalMatrixType& matrix)
+      : m_matrix(matrix), m_rowFactor(RowFactor), m_colFactor(ColFactor)
+    {
+      EIGEN_STATIC_ASSERT((internal::is_same<typename internal::remove_const<MatrixType>::type,OriginalMatrixType>::value),
+                          THE_MATRIX_OR_EXPRESSION_THAT_YOU_PASSED_DOES_NOT_HAVE_THE_EXPECTED_TYPE)
+      eigen_assert(RowFactor!=Dynamic && ColFactor!=Dynamic);
+    }
+
+    template<typename OriginalMatrixType>
+    EIGEN_DEVICE_FUNC
+    inline Replicate(const OriginalMatrixType& matrix, Index rowFactor, Index colFactor)
+      : m_matrix(matrix), m_rowFactor(rowFactor), m_colFactor(colFactor)
+    {
+      EIGEN_STATIC_ASSERT((internal::is_same<typename internal::remove_const<MatrixType>::type,OriginalMatrixType>::value),
+                          THE_MATRIX_OR_EXPRESSION_THAT_YOU_PASSED_DOES_NOT_HAVE_THE_EXPECTED_TYPE)
+    }
+
+    EIGEN_DEVICE_FUNC
+    inline Index rows() const { return m_matrix.rows() * m_rowFactor.value(); }
+    EIGEN_DEVICE_FUNC
+    inline Index cols() const { return m_matrix.cols() * m_colFactor.value(); }
+
+    EIGEN_DEVICE_FUNC
+    const _MatrixTypeNested& nestedExpression() const
+    { 
+      return m_matrix; 
+    }
+
+  protected:
+    MatrixTypeNested m_matrix;
+    const internal::variable_if_dynamic<Index, RowFactor> m_rowFactor;
+    const internal::variable_if_dynamic<Index, ColFactor> m_colFactor;
+};
+
+/**
+  * \return an expression of the replication of \c *this
+  *
+  * Example: \include MatrixBase_replicate.cpp
+  * Output: \verbinclude MatrixBase_replicate.out
+  *
+  * \sa VectorwiseOp::replicate(), DenseBase::replicate(Index,Index), class Replicate
+  */
+template<typename Derived>
+template<int RowFactor, int ColFactor>
+const Replicate<Derived,RowFactor,ColFactor>
+DenseBase<Derived>::replicate() const
+{
+  return Replicate<Derived,RowFactor,ColFactor>(derived());
+}
+
+/**
+  * \return an expression of the replication of each column (or row) of \c *this
+  *
+  * Example: \include DirectionWise_replicate_int.cpp
+  * Output: \verbinclude DirectionWise_replicate_int.out
+  *
+  * \sa VectorwiseOp::replicate(), DenseBase::replicate(), class Replicate
+  */
+template<typename ExpressionType, int Direction>
+const typename VectorwiseOp<ExpressionType,Direction>::ReplicateReturnType
+VectorwiseOp<ExpressionType,Direction>::replicate(Index factor) const
+{
+  return typename VectorwiseOp<ExpressionType,Direction>::ReplicateReturnType
+          (_expression(),Direction==Vertical?factor:1,Direction==Horizontal?factor:1);
+}
+
+} // end namespace Eigen
+
+#endif // EIGEN_REPLICATE_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/Swap.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/Swap.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/Swap.h	(revision 3762)
@@ -0,0 +1,67 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2006-2008 Benoit Jacob <jacob.benoit.1@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_SWAP_H
+#define EIGEN_SWAP_H
+
+namespace Eigen { 
+
+namespace internal {
+
+// Overload default assignPacket behavior for swapping them
+template<typename DstEvaluatorTypeT, typename SrcEvaluatorTypeT>
+class generic_dense_assignment_kernel<DstEvaluatorTypeT, SrcEvaluatorTypeT, swap_assign_op<typename DstEvaluatorTypeT::Scalar>, Specialized>
+ : public generic_dense_assignment_kernel<DstEvaluatorTypeT, SrcEvaluatorTypeT, swap_assign_op<typename DstEvaluatorTypeT::Scalar>, BuiltIn>
+{
+protected:
+  typedef generic_dense_assignment_kernel<DstEvaluatorTypeT, SrcEvaluatorTypeT, swap_assign_op<typename DstEvaluatorTypeT::Scalar>, BuiltIn> Base;
+  using Base::m_dst;
+  using Base::m_src;
+  using Base::m_functor;
+  
+public:
+  typedef typename Base::Scalar Scalar;
+  typedef typename Base::DstXprType DstXprType;
+  typedef swap_assign_op<Scalar> Functor;
+  
+  EIGEN_DEVICE_FUNC generic_dense_assignment_kernel(DstEvaluatorTypeT &dst, const SrcEvaluatorTypeT &src, const Functor &func, DstXprType& dstExpr)
+    : Base(dst, src, func, dstExpr)
+  {}
+  
+  template<int StoreMode, int LoadMode, typename PacketType>
+  void assignPacket(Index row, Index col)
+  {
+    PacketType tmp = m_src.template packet<LoadMode,PacketType>(row,col);
+    const_cast<SrcEvaluatorTypeT&>(m_src).template writePacket<LoadMode>(row,col, m_dst.template packet<StoreMode,PacketType>(row,col));
+    m_dst.template writePacket<StoreMode>(row,col,tmp);
+  }
+  
+  template<int StoreMode, int LoadMode, typename PacketType>
+  void assignPacket(Index index)
+  {
+    PacketType tmp = m_src.template packet<LoadMode,PacketType>(index);
+    const_cast<SrcEvaluatorTypeT&>(m_src).template writePacket<LoadMode>(index, m_dst.template packet<StoreMode,PacketType>(index));
+    m_dst.template writePacket<StoreMode>(index,tmp);
+  }
+  
+  // TODO find a simple way not to have to copy/paste this function from generic_dense_assignment_kernel, by simple I mean no CRTP (Gael)
+  template<int StoreMode, int LoadMode, typename PacketType>
+  void assignPacketByOuterInner(Index outer, Index inner)
+  {
+    Index row = Base::rowIndexByOuterInner(outer, inner); 
+    Index col = Base::colIndexByOuterInner(outer, inner);
+    assignPacket<StoreMode,LoadMode,PacketType>(row, col);
+  }
+};
+
+} // namespace internal
+
+} // end namespace Eigen
+
+#endif // EIGEN_SWAP_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/Inverse.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/Inverse.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/Inverse.h	(revision 3762)
@@ -0,0 +1,118 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2014 Gael Guennebaud <gael.guennebaud@inria.fr>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_INVERSE_H
+#define EIGEN_INVERSE_H
+
+namespace Eigen { 
+
+template<typename XprType,typename StorageKind> class InverseImpl;
+
+namespace internal {
+
+template<typename XprType>
+struct traits<Inverse<XprType> >
+  : traits<typename XprType::PlainObject>
+{
+  typedef typename XprType::PlainObject PlainObject;
+  typedef traits<PlainObject> BaseTraits;
+  enum {
+    Flags = BaseTraits::Flags & RowMajorBit
+  };
+};
+
+} // end namespace internal
+
+/** \class Inverse
+  *
+  * \brief Expression of the inverse of another expression
+  *
+  * \tparam XprType the type of the expression we are taking the inverse
+  *
+  * This class represents an abstract expression of A.inverse()
+  * and most of the time this is the only way it is used.
+  *
+  */
+template<typename XprType>
+class Inverse : public InverseImpl<XprType,typename internal::traits<XprType>::StorageKind>
+{
+public:
+  typedef typename XprType::StorageIndex StorageIndex;
+  typedef typename XprType::PlainObject                       PlainObject;
+  typedef typename XprType::Scalar                            Scalar;
+  typedef typename internal::ref_selector<XprType>::type      XprTypeNested;
+  typedef typename internal::remove_all<XprTypeNested>::type  XprTypeNestedCleaned;
+  typedef typename internal::ref_selector<Inverse>::type Nested;
+  typedef typename internal::remove_all<XprType>::type NestedExpression;
+  
+  explicit EIGEN_DEVICE_FUNC Inverse(const XprType &xpr)
+    : m_xpr(xpr)
+  {}
+
+  EIGEN_DEVICE_FUNC Index rows() const { return m_xpr.rows(); }
+  EIGEN_DEVICE_FUNC Index cols() const { return m_xpr.cols(); }
+
+  EIGEN_DEVICE_FUNC const XprTypeNestedCleaned& nestedExpression() const { return m_xpr; }
+
+protected:
+  XprTypeNested m_xpr;
+};
+
+// Generic API dispatcher
+template<typename XprType, typename StorageKind>
+class InverseImpl
+  : public internal::generic_xpr_base<Inverse<XprType> >::type
+{
+public:
+  typedef typename internal::generic_xpr_base<Inverse<XprType> >::type Base;
+  typedef typename XprType::Scalar Scalar;
+private:
+
+  Scalar coeff(Index row, Index col) const;
+  Scalar coeff(Index i) const;
+};
+
+namespace internal {
+
+/** \internal
+  * \brief Default evaluator for Inverse expression.
+  * 
+  * This default evaluator for Inverse expression simply evaluate the inverse into a temporary
+  * by a call to internal::call_assignment_no_alias.
+  * Therefore, inverse implementers only have to specialize Assignment<Dst,Inverse<...>, ...> for
+  * there own nested expression.
+  *
+  * \sa class Inverse
+  */
+template<typename ArgType>
+struct unary_evaluator<Inverse<ArgType> >
+  : public evaluator<typename Inverse<ArgType>::PlainObject>
+{
+  typedef Inverse<ArgType> InverseType;
+  typedef typename InverseType::PlainObject PlainObject;
+  typedef evaluator<PlainObject> Base;
+  
+  enum { Flags = Base::Flags | EvalBeforeNestingBit };
+
+  unary_evaluator(const InverseType& inv_xpr)
+    : m_result(inv_xpr.rows(), inv_xpr.cols())
+  {
+    ::new (static_cast<Base*>(this)) Base(m_result);
+    internal::call_assignment_no_alias(m_result, inv_xpr);
+  }
+  
+protected:
+  PlainObject m_result;
+};
+  
+} // end namespace internal
+
+} // end namespace Eigen
+
+#endif // EIGEN_INVERSE_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/VectorBlock.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/VectorBlock.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/VectorBlock.h	(revision 3762)
@@ -0,0 +1,96 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2008-2010 Gael Guennebaud <gael.guennebaud@inria.fr>
+// Copyright (C) 2006-2008 Benoit Jacob <jacob.benoit.1@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_VECTORBLOCK_H
+#define EIGEN_VECTORBLOCK_H
+
+namespace Eigen { 
+
+namespace internal {
+template<typename VectorType, int Size>
+struct traits<VectorBlock<VectorType, Size> >
+  : public traits<Block<VectorType,
+                     traits<VectorType>::Flags & RowMajorBit ? 1 : Size,
+                     traits<VectorType>::Flags & RowMajorBit ? Size : 1> >
+{
+};
+}
+
+/** \class VectorBlock
+  * \ingroup Core_Module
+  *
+  * \brief Expression of a fixed-size or dynamic-size sub-vector
+  *
+  * \tparam VectorType the type of the object in which we are taking a sub-vector
+  * \tparam Size size of the sub-vector we are taking at compile time (optional)
+  *
+  * This class represents an expression of either a fixed-size or dynamic-size sub-vector.
+  * It is the return type of DenseBase::segment(Index,Index) and DenseBase::segment<int>(Index) and
+  * most of the time this is the only way it is used.
+  *
+  * However, if you want to directly maniputate sub-vector expressions,
+  * for instance if you want to write a function returning such an expression, you
+  * will need to use this class.
+  *
+  * Here is an example illustrating the dynamic case:
+  * \include class_VectorBlock.cpp
+  * Output: \verbinclude class_VectorBlock.out
+  *
+  * \note Even though this expression has dynamic size, in the case where \a VectorType
+  * has fixed size, this expression inherits a fixed maximal size which means that evaluating
+  * it does not cause a dynamic memory allocation.
+  *
+  * Here is an example illustrating the fixed-size case:
+  * \include class_FixedVectorBlock.cpp
+  * Output: \verbinclude class_FixedVectorBlock.out
+  *
+  * \sa class Block, DenseBase::segment(Index,Index,Index,Index), DenseBase::segment(Index,Index)
+  */
+template<typename VectorType, int Size> class VectorBlock
+  : public Block<VectorType,
+                     internal::traits<VectorType>::Flags & RowMajorBit ? 1 : Size,
+                     internal::traits<VectorType>::Flags & RowMajorBit ? Size : 1>
+{
+    typedef Block<VectorType,
+                     internal::traits<VectorType>::Flags & RowMajorBit ? 1 : Size,
+                     internal::traits<VectorType>::Flags & RowMajorBit ? Size : 1> Base;
+    enum {
+      IsColVector = !(internal::traits<VectorType>::Flags & RowMajorBit)
+    };
+  public:
+    EIGEN_DENSE_PUBLIC_INTERFACE(VectorBlock)
+
+    using Base::operator=;
+
+    /** Dynamic-size constructor
+      */
+    EIGEN_DEVICE_FUNC
+    inline VectorBlock(VectorType& vector, Index start, Index size)
+      : Base(vector,
+             IsColVector ? start : 0, IsColVector ? 0 : start,
+             IsColVector ? size  : 1, IsColVector ? 1 : size)
+    {
+      EIGEN_STATIC_ASSERT_VECTOR_ONLY(VectorBlock);
+    }
+
+    /** Fixed-size constructor
+      */
+    EIGEN_DEVICE_FUNC
+    inline VectorBlock(VectorType& vector, Index start)
+      : Base(vector, IsColVector ? start : 0, IsColVector ? 0 : start)
+    {
+      EIGEN_STATIC_ASSERT_VECTOR_ONLY(VectorBlock);
+    }
+};
+
+
+} // end namespace Eigen
+
+#endif // EIGEN_VECTORBLOCK_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/GenericPacketMath.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/GenericPacketMath.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/GenericPacketMath.h	(revision 3762)
@@ -0,0 +1,590 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2008 Gael Guennebaud <gael.guennebaud@inria.fr>
+// Copyright (C) 2006-2008 Benoit Jacob <jacob.benoit.1@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_GENERIC_PACKET_MATH_H
+#define EIGEN_GENERIC_PACKET_MATH_H
+
+namespace Eigen {
+
+namespace internal {
+
+/** \internal
+  * \file GenericPacketMath.h
+  *
+  * Default implementation for types not supported by the vectorization.
+  * In practice these functions are provided to make easier the writing
+  * of generic vectorized code.
+  */
+
+#ifndef EIGEN_DEBUG_ALIGNED_LOAD
+#define EIGEN_DEBUG_ALIGNED_LOAD
+#endif
+
+#ifndef EIGEN_DEBUG_UNALIGNED_LOAD
+#define EIGEN_DEBUG_UNALIGNED_LOAD
+#endif
+
+#ifndef EIGEN_DEBUG_ALIGNED_STORE
+#define EIGEN_DEBUG_ALIGNED_STORE
+#endif
+
+#ifndef EIGEN_DEBUG_UNALIGNED_STORE
+#define EIGEN_DEBUG_UNALIGNED_STORE
+#endif
+
+struct default_packet_traits
+{
+  enum {
+    HasHalfPacket = 0,
+
+    HasAdd    = 1,
+    HasSub    = 1,
+    HasMul    = 1,
+    HasNegate = 1,
+    HasAbs    = 1,
+    HasArg    = 0,
+    HasAbs2   = 1,
+    HasMin    = 1,
+    HasMax    = 1,
+    HasConj   = 1,
+    HasSetLinear = 1,
+    HasBlend  = 0,
+
+    HasDiv    = 0,
+    HasSqrt   = 0,
+    HasRsqrt  = 0,
+    HasExp    = 0,
+    HasLog    = 0,
+    HasLog1p  = 0,
+    HasLog10  = 0,
+    HasPow    = 0,
+
+    HasSin    = 0,
+    HasCos    = 0,
+    HasTan    = 0,
+    HasASin   = 0,
+    HasACos   = 0,
+    HasATan   = 0,
+    HasSinh   = 0,
+    HasCosh   = 0,
+    HasTanh   = 0,
+    HasLGamma = 0,
+    HasDiGamma = 0,
+    HasZeta = 0,
+    HasPolygamma = 0,
+    HasErf = 0,
+    HasErfc = 0,
+    HasIGamma = 0,
+    HasIGammac = 0,
+    HasBetaInc = 0,
+
+    HasRound  = 0,
+    HasFloor  = 0,
+    HasCeil   = 0,
+
+    HasSign   = 0
+  };
+};
+
+template<typename T> struct packet_traits : default_packet_traits
+{
+  typedef T type;
+  typedef T half;
+  enum {
+    Vectorizable = 0,
+    size = 1,
+    AlignedOnScalar = 0,
+    HasHalfPacket = 0
+  };
+  enum {
+    HasAdd    = 0,
+    HasSub    = 0,
+    HasMul    = 0,
+    HasNegate = 0,
+    HasAbs    = 0,
+    HasAbs2   = 0,
+    HasMin    = 0,
+    HasMax    = 0,
+    HasConj   = 0,
+    HasSetLinear = 0
+  };
+};
+
+template<typename T> struct packet_traits<const T> : packet_traits<T> { };
+
+template <typename Src, typename Tgt> struct type_casting_traits {
+  enum {
+    VectorizedCast = 0,
+    SrcCoeffRatio = 1,
+    TgtCoeffRatio = 1
+  };
+};
+
+
+/** \internal \returns static_cast<TgtType>(a) (coeff-wise) */
+template <typename SrcPacket, typename TgtPacket>
+EIGEN_DEVICE_FUNC inline TgtPacket
+pcast(const SrcPacket& a) {
+  return static_cast<TgtPacket>(a);
+}
+template <typename SrcPacket, typename TgtPacket>
+EIGEN_DEVICE_FUNC inline TgtPacket
+pcast(const SrcPacket& a, const SrcPacket& /*b*/) {
+  return static_cast<TgtPacket>(a);
+}
+
+template <typename SrcPacket, typename TgtPacket>
+EIGEN_DEVICE_FUNC inline TgtPacket
+pcast(const SrcPacket& a, const SrcPacket& /*b*/, const SrcPacket& /*c*/, const SrcPacket& /*d*/) {
+  return static_cast<TgtPacket>(a);
+}
+
+/** \internal \returns a + b (coeff-wise) */
+template<typename Packet> EIGEN_DEVICE_FUNC inline Packet
+padd(const Packet& a,
+        const Packet& b) { return a+b; }
+
+/** \internal \returns a - b (coeff-wise) */
+template<typename Packet> EIGEN_DEVICE_FUNC inline Packet
+psub(const Packet& a,
+        const Packet& b) { return a-b; }
+
+/** \internal \returns -a (coeff-wise) */
+template<typename Packet> EIGEN_DEVICE_FUNC inline Packet
+pnegate(const Packet& a) { return -a; }
+
+/** \internal \returns conj(a) (coeff-wise) */
+
+template<typename Packet> EIGEN_DEVICE_FUNC inline Packet
+pconj(const Packet& a) { return numext::conj(a); }
+
+/** \internal \returns a * b (coeff-wise) */
+template<typename Packet> EIGEN_DEVICE_FUNC inline Packet
+pmul(const Packet& a,
+        const Packet& b) { return a*b; }
+
+/** \internal \returns a / b (coeff-wise) */
+template<typename Packet> EIGEN_DEVICE_FUNC inline Packet
+pdiv(const Packet& a,
+        const Packet& b) { return a/b; }
+
+/** \internal \returns the min of \a a and \a b  (coeff-wise) */
+template<typename Packet> EIGEN_DEVICE_FUNC inline Packet
+pmin(const Packet& a,
+        const Packet& b) { return numext::mini(a, b); }
+
+/** \internal \returns the max of \a a and \a b  (coeff-wise) */
+template<typename Packet> EIGEN_DEVICE_FUNC inline Packet
+pmax(const Packet& a,
+        const Packet& b) { return numext::maxi(a, b); }
+
+/** \internal \returns the absolute value of \a a */
+template<typename Packet> EIGEN_DEVICE_FUNC inline Packet
+pabs(const Packet& a) { using std::abs; return abs(a); }
+
+/** \internal \returns the phase angle of \a a */
+template<typename Packet> EIGEN_DEVICE_FUNC inline Packet
+parg(const Packet& a) { using numext::arg; return arg(a); }
+
+/** \internal \returns the bitwise and of \a a and \a b */
+template<typename Packet> EIGEN_DEVICE_FUNC inline Packet
+pand(const Packet& a, const Packet& b) { return a & b; }
+
+/** \internal \returns the bitwise or of \a a and \a b */
+template<typename Packet> EIGEN_DEVICE_FUNC inline Packet
+por(const Packet& a, const Packet& b) { return a | b; }
+
+/** \internal \returns the bitwise xor of \a a and \a b */
+template<typename Packet> EIGEN_DEVICE_FUNC inline Packet
+pxor(const Packet& a, const Packet& b) { return a ^ b; }
+
+/** \internal \returns the bitwise andnot of \a a and \a b */
+template<typename Packet> EIGEN_DEVICE_FUNC inline Packet
+pandnot(const Packet& a, const Packet& b) { return a & (!b); }
+
+/** \internal \returns a packet version of \a *from, from must be 16 bytes aligned */
+template<typename Packet> EIGEN_DEVICE_FUNC inline Packet
+pload(const typename unpacket_traits<Packet>::type* from) { return *from; }
+
+/** \internal \returns a packet version of \a *from, (un-aligned load) */
+template<typename Packet> EIGEN_DEVICE_FUNC inline Packet
+ploadu(const typename unpacket_traits<Packet>::type* from) { return *from; }
+
+/** \internal \returns a packet with constant coefficients \a a, e.g.: (a,a,a,a) */
+template<typename Packet> EIGEN_DEVICE_FUNC inline Packet
+pset1(const typename unpacket_traits<Packet>::type& a) { return a; }
+
+/** \internal \returns a packet with constant coefficients \a a[0], e.g.: (a[0],a[0],a[0],a[0]) */
+template<typename Packet> EIGEN_DEVICE_FUNC inline Packet
+pload1(const typename unpacket_traits<Packet>::type  *a) { return pset1<Packet>(*a); }
+
+/** \internal \returns a packet with elements of \a *from duplicated.
+  * For instance, for a packet of 8 elements, 4 scalars will be read from \a *from and
+  * duplicated to form: {from[0],from[0],from[1],from[1],from[2],from[2],from[3],from[3]}
+  * Currently, this function is only used for scalar * complex products.
+  */
+template<typename Packet> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet
+ploaddup(const typename unpacket_traits<Packet>::type* from) { return *from; }
+
+/** \internal \returns a packet with elements of \a *from quadrupled.
+  * For instance, for a packet of 8 elements, 2 scalars will be read from \a *from and
+  * replicated to form: {from[0],from[0],from[0],from[0],from[1],from[1],from[1],from[1]}
+  * Currently, this function is only used in matrix products.
+  * For packet-size smaller or equal to 4, this function is equivalent to pload1 
+  */
+template<typename Packet> EIGEN_DEVICE_FUNC inline Packet
+ploadquad(const typename unpacket_traits<Packet>::type* from)
+{ return pload1<Packet>(from); }
+
+/** \internal equivalent to
+  * \code
+  * a0 = pload1(a+0);
+  * a1 = pload1(a+1);
+  * a2 = pload1(a+2);
+  * a3 = pload1(a+3);
+  * \endcode
+  * \sa pset1, pload1, ploaddup, pbroadcast2
+  */
+template<typename Packet> EIGEN_DEVICE_FUNC
+inline void pbroadcast4(const typename unpacket_traits<Packet>::type *a,
+                        Packet& a0, Packet& a1, Packet& a2, Packet& a3)
+{
+  a0 = pload1<Packet>(a+0);
+  a1 = pload1<Packet>(a+1);
+  a2 = pload1<Packet>(a+2);
+  a3 = pload1<Packet>(a+3);
+}
+
+/** \internal equivalent to
+  * \code
+  * a0 = pload1(a+0);
+  * a1 = pload1(a+1);
+  * \endcode
+  * \sa pset1, pload1, ploaddup, pbroadcast4
+  */
+template<typename Packet> EIGEN_DEVICE_FUNC
+inline void pbroadcast2(const typename unpacket_traits<Packet>::type *a,
+                        Packet& a0, Packet& a1)
+{
+  a0 = pload1<Packet>(a+0);
+  a1 = pload1<Packet>(a+1);
+}
+
+/** \internal \brief Returns a packet with coefficients (a,a+1,...,a+packet_size-1). */
+template<typename Packet> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet
+plset(const typename unpacket_traits<Packet>::type& a) { return a; }
+
+/** \internal copy the packet \a from to \a *to, \a to must be 16 bytes aligned */
+template<typename Scalar, typename Packet> EIGEN_DEVICE_FUNC inline void pstore(Scalar* to, const Packet& from)
+{ (*to) = from; }
+
+/** \internal copy the packet \a from to \a *to, (un-aligned store) */
+template<typename Scalar, typename Packet> EIGEN_DEVICE_FUNC inline void pstoreu(Scalar* to, const Packet& from)
+{  (*to) = from; }
+
+ template<typename Scalar, typename Packet> EIGEN_DEVICE_FUNC inline Packet pgather(const Scalar* from, Index /*stride*/)
+ { return ploadu<Packet>(from); }
+
+ template<typename Scalar, typename Packet> EIGEN_DEVICE_FUNC inline void pscatter(Scalar* to, const Packet& from, Index /*stride*/)
+ { pstore(to, from); }
+
+/** \internal tries to do cache prefetching of \a addr */
+template<typename Scalar> EIGEN_DEVICE_FUNC inline void prefetch(const Scalar* addr)
+{
+#ifdef __CUDA_ARCH__
+#if defined(__LP64__)
+  // 64-bit pointer operand constraint for inlined asm
+  asm(" prefetch.L1 [ %1 ];" : "=l"(addr) : "l"(addr));
+#else
+  // 32-bit pointer operand constraint for inlined asm
+  asm(" prefetch.L1 [ %1 ];" : "=r"(addr) : "r"(addr));
+#endif
+#elif (!EIGEN_COMP_MSVC) && (EIGEN_COMP_GNUC || EIGEN_COMP_CLANG || EIGEN_COMP_ICC)
+  __builtin_prefetch(addr);
+#endif
+}
+
+/** \internal \returns the first element of a packet */
+template<typename Packet> EIGEN_DEVICE_FUNC inline typename unpacket_traits<Packet>::type pfirst(const Packet& a)
+{ return a; }
+
+/** \internal \returns a packet where the element i contains the sum of the packet of \a vec[i] */
+template<typename Packet> EIGEN_DEVICE_FUNC inline Packet
+preduxp(const Packet* vecs) { return vecs[0]; }
+
+/** \internal \returns the sum of the elements of \a a*/
+template<typename Packet> EIGEN_DEVICE_FUNC inline typename unpacket_traits<Packet>::type predux(const Packet& a)
+{ return a; }
+
+/** \internal \returns the sum of the elements of \a a by block of 4 elements.
+  * For a packet {a0, a1, a2, a3, a4, a5, a6, a7}, it returns a half packet {a0+a4, a1+a5, a2+a6, a3+a7}
+  * For packet-size smaller or equal to 4, this boils down to a noop.
+  */
+template<typename Packet> EIGEN_DEVICE_FUNC inline
+typename conditional<(unpacket_traits<Packet>::size%8)==0,typename unpacket_traits<Packet>::half,Packet>::type
+predux_downto4(const Packet& a)
+{ return a; }
+
+/** \internal \returns the product of the elements of \a a*/
+template<typename Packet> EIGEN_DEVICE_FUNC inline typename unpacket_traits<Packet>::type predux_mul(const Packet& a)
+{ return a; }
+
+/** \internal \returns the min of the elements of \a a*/
+template<typename Packet> EIGEN_DEVICE_FUNC inline typename unpacket_traits<Packet>::type predux_min(const Packet& a)
+{ return a; }
+
+/** \internal \returns the max of the elements of \a a*/
+template<typename Packet> EIGEN_DEVICE_FUNC inline typename unpacket_traits<Packet>::type predux_max(const Packet& a)
+{ return a; }
+
+/** \internal \returns the reversed elements of \a a*/
+template<typename Packet> EIGEN_DEVICE_FUNC inline Packet preverse(const Packet& a)
+{ return a; }
+
+/** \internal \returns \a a with real and imaginary part flipped (for complex type only) */
+template<typename Packet> EIGEN_DEVICE_FUNC inline Packet pcplxflip(const Packet& a)
+{
+  return Packet(a.imag(),a.real());
+}
+
+/**************************
+* Special math functions
+***************************/
+
+/** \internal \returns the sine of \a a (coeff-wise) */
+template<typename Packet> EIGEN_DECLARE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS
+Packet psin(const Packet& a) { using std::sin; return sin(a); }
+
+/** \internal \returns the cosine of \a a (coeff-wise) */
+template<typename Packet> EIGEN_DECLARE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS
+Packet pcos(const Packet& a) { using std::cos; return cos(a); }
+
+/** \internal \returns the tan of \a a (coeff-wise) */
+template<typename Packet> EIGEN_DECLARE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS
+Packet ptan(const Packet& a) { using std::tan; return tan(a); }
+
+/** \internal \returns the arc sine of \a a (coeff-wise) */
+template<typename Packet> EIGEN_DECLARE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS
+Packet pasin(const Packet& a) { using std::asin; return asin(a); }
+
+/** \internal \returns the arc cosine of \a a (coeff-wise) */
+template<typename Packet> EIGEN_DECLARE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS
+Packet pacos(const Packet& a) { using std::acos; return acos(a); }
+
+/** \internal \returns the arc tangent of \a a (coeff-wise) */
+template<typename Packet> EIGEN_DECLARE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS
+Packet patan(const Packet& a) { using std::atan; return atan(a); }
+
+/** \internal \returns the hyperbolic sine of \a a (coeff-wise) */
+template<typename Packet> EIGEN_DECLARE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS
+Packet psinh(const Packet& a) { using std::sinh; return sinh(a); }
+
+/** \internal \returns the hyperbolic cosine of \a a (coeff-wise) */
+template<typename Packet> EIGEN_DECLARE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS
+Packet pcosh(const Packet& a) { using std::cosh; return cosh(a); }
+
+/** \internal \returns the hyperbolic tan of \a a (coeff-wise) */
+template<typename Packet> EIGEN_DECLARE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS
+Packet ptanh(const Packet& a) { using std::tanh; return tanh(a); }
+
+/** \internal \returns the exp of \a a (coeff-wise) */
+template<typename Packet> EIGEN_DECLARE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS
+Packet pexp(const Packet& a) { using std::exp; return exp(a); }
+
+/** \internal \returns the log of \a a (coeff-wise) */
+template<typename Packet> EIGEN_DECLARE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS
+Packet plog(const Packet& a) { using std::log; return log(a); }
+
+/** \internal \returns the log1p of \a a (coeff-wise) */
+template<typename Packet> EIGEN_DECLARE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS
+Packet plog1p(const Packet& a) { return numext::log1p(a); }
+
+/** \internal \returns the log10 of \a a (coeff-wise) */
+template<typename Packet> EIGEN_DECLARE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS
+Packet plog10(const Packet& a) { using std::log10; return log10(a); }
+
+/** \internal \returns the square-root of \a a (coeff-wise) */
+template<typename Packet> EIGEN_DECLARE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS
+Packet psqrt(const Packet& a) { using std::sqrt; return sqrt(a); }
+
+/** \internal \returns the reciprocal square-root of \a a (coeff-wise) */
+template<typename Packet> EIGEN_DECLARE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS
+Packet prsqrt(const Packet& a) {
+  return pdiv(pset1<Packet>(1), psqrt(a));
+}
+
+/** \internal \returns the rounded value of \a a (coeff-wise) */
+template<typename Packet> EIGEN_DECLARE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS
+Packet pround(const Packet& a) { using numext::round; return round(a); }
+
+/** \internal \returns the floor of \a a (coeff-wise) */
+template<typename Packet> EIGEN_DECLARE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS
+Packet pfloor(const Packet& a) { using numext::floor; return floor(a); }
+
+/** \internal \returns the ceil of \a a (coeff-wise) */
+template<typename Packet> EIGEN_DECLARE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS
+Packet pceil(const Packet& a) { using numext::ceil; return ceil(a); }
+
+/***************************************************************************
+* The following functions might not have to be overwritten for vectorized types
+***************************************************************************/
+
+/** \internal copy a packet with constant coeficient \a a (e.g., [a,a,a,a]) to \a *to. \a to must be 16 bytes aligned */
+// NOTE: this function must really be templated on the packet type (think about different packet types for the same scalar type)
+template<typename Packet>
+inline void pstore1(typename unpacket_traits<Packet>::type* to, const typename unpacket_traits<Packet>::type& a)
+{
+  pstore(to, pset1<Packet>(a));
+}
+
+/** \internal \returns a * b + c (coeff-wise) */
+template<typename Packet> EIGEN_DEVICE_FUNC inline Packet
+pmadd(const Packet&  a,
+         const Packet&  b,
+         const Packet&  c)
+{ return padd(pmul(a, b),c); }
+
+/** \internal \returns a packet version of \a *from.
+  * The pointer \a from must be aligned on a \a Alignment bytes boundary. */
+template<typename Packet, int Alignment>
+EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE Packet ploadt(const typename unpacket_traits<Packet>::type* from)
+{
+  if(Alignment >= unpacket_traits<Packet>::alignment)
+    return pload<Packet>(from);
+  else
+    return ploadu<Packet>(from);
+}
+
+/** \internal copy the packet \a from to \a *to.
+  * The pointer \a from must be aligned on a \a Alignment bytes boundary. */
+template<typename Scalar, typename Packet, int Alignment>
+EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE void pstoret(Scalar* to, const Packet& from)
+{
+  if(Alignment >= unpacket_traits<Packet>::alignment)
+    pstore(to, from);
+  else
+    pstoreu(to, from);
+}
+
+/** \internal \returns a packet version of \a *from.
+  * Unlike ploadt, ploadt_ro takes advantage of the read-only memory path on the
+  * hardware if available to speedup the loading of data that won't be modified
+  * by the current computation.
+  */
+template<typename Packet, int LoadMode>
+EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE Packet ploadt_ro(const typename unpacket_traits<Packet>::type* from)
+{
+  return ploadt<Packet, LoadMode>(from);
+}
+
+/** \internal default implementation of palign() allowing partial specialization */
+template<int Offset,typename PacketType>
+struct palign_impl
+{
+  // by default data are aligned, so there is nothing to be done :)
+  static inline void run(PacketType&, const PacketType&) {}
+};
+
+/** \internal update \a first using the concatenation of the packet_size minus \a Offset last elements
+  * of \a first and \a Offset first elements of \a second.
+  * 
+  * This function is currently only used to optimize matrix-vector products on unligned matrices.
+  * It takes 2 packets that represent a contiguous memory array, and returns a packet starting
+  * at the position \a Offset. For instance, for packets of 4 elements, we have:
+  *  Input:
+  *  - first = {f0,f1,f2,f3}
+  *  - second = {s0,s1,s2,s3}
+  * Output: 
+  *   - if Offset==0 then {f0,f1,f2,f3}
+  *   - if Offset==1 then {f1,f2,f3,s0}
+  *   - if Offset==2 then {f2,f3,s0,s1}
+  *   - if Offset==3 then {f3,s0,s1,s3}
+  */
+template<int Offset,typename PacketType>
+inline void palign(PacketType& first, const PacketType& second)
+{
+  palign_impl<Offset,PacketType>::run(first,second);
+}
+
+/***************************************************************************
+* Fast complex products (GCC generates a function call which is very slow)
+***************************************************************************/
+
+// Eigen+CUDA does not support complexes.
+#ifndef __CUDACC__
+
+template<> inline std::complex<float> pmul(const std::complex<float>& a, const std::complex<float>& b)
+{ return std::complex<float>(a.real()*b.real() - a.imag()*b.imag(), a.imag()*b.real() + a.real()*b.imag()); }
+
+template<> inline std::complex<double> pmul(const std::complex<double>& a, const std::complex<double>& b)
+{ return std::complex<double>(a.real()*b.real() - a.imag()*b.imag(), a.imag()*b.real() + a.real()*b.imag()); }
+
+#endif
+
+
+/***************************************************************************
+ * PacketBlock, that is a collection of N packets where the number of words
+ * in the packet is a multiple of N.
+***************************************************************************/
+template <typename Packet,int N=unpacket_traits<Packet>::size> struct PacketBlock {
+  Packet packet[N];
+};
+
+template<typename Packet> EIGEN_DEVICE_FUNC inline void
+ptranspose(PacketBlock<Packet,1>& /*kernel*/) {
+  // Nothing to do in the scalar case, i.e. a 1x1 matrix.
+}
+
+/***************************************************************************
+ * Selector, i.e. vector of N boolean values used to select (i.e. blend)
+ * words from 2 packets.
+***************************************************************************/
+template <size_t N> struct Selector {
+  bool select[N];
+};
+
+template<typename Packet> EIGEN_DEVICE_FUNC inline Packet
+pblend(const Selector<unpacket_traits<Packet>::size>& ifPacket, const Packet& thenPacket, const Packet& elsePacket) {
+  return ifPacket.select[0] ? thenPacket : elsePacket;
+}
+
+/** \internal \returns \a a with the first coefficient replaced by the scalar b */
+template<typename Packet> EIGEN_DEVICE_FUNC inline Packet
+pinsertfirst(const Packet& a, typename unpacket_traits<Packet>::type b)
+{
+  // Default implementation based on pblend.
+  // It must be specialized for higher performance.
+  Selector<unpacket_traits<Packet>::size> mask;
+  mask.select[0] = true;
+  // This for loop should be optimized away by the compiler.
+  for(Index i=1; i<unpacket_traits<Packet>::size; ++i)
+    mask.select[i] = false;
+  return pblend(mask, pset1<Packet>(b), a);
+}
+
+/** \internal \returns \a a with the last coefficient replaced by the scalar b */
+template<typename Packet> EIGEN_DEVICE_FUNC inline Packet
+pinsertlast(const Packet& a, typename unpacket_traits<Packet>::type b)
+{
+  // Default implementation based on pblend.
+  // It must be specialized for higher performance.
+  Selector<unpacket_traits<Packet>::size> mask;
+  // This for loop should be optimized away by the compiler.
+  for(Index i=0; i<unpacket_traits<Packet>::size-1; ++i)
+    mask.select[i] = false;
+  mask.select[unpacket_traits<Packet>::size-1] = true;
+  return pblend(mask, pset1<Packet>(b), a);
+}
+
+} // end namespace internal
+
+} // end namespace Eigen
+
+#endif // EIGEN_GENERIC_PACKET_MATH_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/Array.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/Array.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/Array.h	(revision 3762)
@@ -0,0 +1,329 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2009 Gael Guennebaud <gael.guennebaud@inria.fr>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_ARRAY_H
+#define EIGEN_ARRAY_H
+
+namespace Eigen {
+
+namespace internal {
+template<typename _Scalar, int _Rows, int _Cols, int _Options, int _MaxRows, int _MaxCols>
+struct traits<Array<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols> > : traits<Matrix<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols> >
+{
+  typedef ArrayXpr XprKind;
+  typedef ArrayBase<Array<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols> > XprBase;
+};
+}
+
+/** \class Array
+  * \ingroup Core_Module
+  *
+  * \brief General-purpose arrays with easy API for coefficient-wise operations
+  *
+  * The %Array class is very similar to the Matrix class. It provides
+  * general-purpose one- and two-dimensional arrays. The difference between the
+  * %Array and the %Matrix class is primarily in the API: the API for the
+  * %Array class provides easy access to coefficient-wise operations, while the
+  * API for the %Matrix class provides easy access to linear-algebra
+  * operations.
+  *
+  * See documentation of class Matrix for detailed information on the template parameters
+  * storage layout.
+  *
+  * This class can be extended with the help of the plugin mechanism described on the page
+  * \ref TopicCustomizing_Plugins by defining the preprocessor symbol \c EIGEN_ARRAY_PLUGIN.
+  *
+  * \sa \blank \ref TutorialArrayClass, \ref TopicClassHierarchy
+  */
+template<typename _Scalar, int _Rows, int _Cols, int _Options, int _MaxRows, int _MaxCols>
+class Array
+  : public PlainObjectBase<Array<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols> >
+{
+  public:
+
+    typedef PlainObjectBase<Array> Base;
+    EIGEN_DENSE_PUBLIC_INTERFACE(Array)
+
+    enum { Options = _Options };
+    typedef typename Base::PlainObject PlainObject;
+
+  protected:
+    template <typename Derived, typename OtherDerived, bool IsVector>
+    friend struct internal::conservative_resize_like_impl;
+
+    using Base::m_storage;
+
+  public:
+
+    using Base::base;
+    using Base::coeff;
+    using Base::coeffRef;
+
+    /**
+      * The usage of
+      *   using Base::operator=;
+      * fails on MSVC. Since the code below is working with GCC and MSVC, we skipped
+      * the usage of 'using'. This should be done only for operator=.
+      */
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Array& operator=(const EigenBase<OtherDerived> &other)
+    {
+      return Base::operator=(other);
+    }
+
+    /** Set all the entries to \a value.
+      * \sa DenseBase::setConstant(), DenseBase::fill()
+      */
+    /* This overload is needed because the usage of
+      *   using Base::operator=;
+      * fails on MSVC. Since the code below is working with GCC and MSVC, we skipped
+      * the usage of 'using'. This should be done only for operator=.
+      */
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Array& operator=(const Scalar &value)
+    {
+      Base::setConstant(value);
+      return *this;
+    }
+
+    /** Copies the value of the expression \a other into \c *this with automatic resizing.
+      *
+      * *this might be resized to match the dimensions of \a other. If *this was a null matrix (not already initialized),
+      * it will be initialized.
+      *
+      * Note that copying a row-vector into a vector (and conversely) is allowed.
+      * The resizing, if any, is then done in the appropriate way so that row-vectors
+      * remain row-vectors and vectors remain vectors.
+      */
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Array& operator=(const DenseBase<OtherDerived>& other)
+    {
+      return Base::_set(other);
+    }
+
+    /** This is a special case of the templated operator=. Its purpose is to
+      * prevent a default operator= from hiding the templated operator=.
+      */
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Array& operator=(const Array& other)
+    {
+      return Base::_set(other);
+    }
+    
+    /** Default constructor.
+      *
+      * For fixed-size matrices, does nothing.
+      *
+      * For dynamic-size matrices, creates an empty matrix of size 0. Does not allocate any array. Such a matrix
+      * is called a null matrix. This constructor is the unique way to create null matrices: resizing
+      * a matrix to 0 is not supported.
+      *
+      * \sa resize(Index,Index)
+      */
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Array() : Base()
+    {
+      Base::_check_template_params();
+      EIGEN_INITIALIZE_COEFFS_IF_THAT_OPTION_IS_ENABLED
+    }
+
+#ifndef EIGEN_PARSED_BY_DOXYGEN
+    // FIXME is it still needed ??
+    /** \internal */
+    EIGEN_DEVICE_FUNC
+    Array(internal::constructor_without_unaligned_array_assert)
+      : Base(internal::constructor_without_unaligned_array_assert())
+    {
+      Base::_check_template_params();
+      EIGEN_INITIALIZE_COEFFS_IF_THAT_OPTION_IS_ENABLED
+    }
+#endif
+
+#if EIGEN_HAS_RVALUE_REFERENCES
+    EIGEN_DEVICE_FUNC
+    Array(Array&& other) EIGEN_NOEXCEPT_IF(std::is_nothrow_move_constructible<Scalar>::value)
+      : Base(std::move(other))
+    {
+      Base::_check_template_params();
+    }
+    EIGEN_DEVICE_FUNC
+    Array& operator=(Array&& other) EIGEN_NOEXCEPT_IF(std::is_nothrow_move_assignable<Scalar>::value)
+    {
+      other.swap(*this);
+      return *this;
+    }
+#endif
+
+    #ifndef EIGEN_PARSED_BY_DOXYGEN
+    template<typename T>
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE explicit Array(const T& x)
+    {
+      Base::_check_template_params();
+      Base::template _init1<T>(x);
+    }
+
+    template<typename T0, typename T1>
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Array(const T0& val0, const T1& val1)
+    {
+      Base::_check_template_params();
+      this->template _init2<T0,T1>(val0, val1);
+    }
+    #else
+    /** \brief Constructs a fixed-sized array initialized with coefficients starting at \a data */
+    EIGEN_DEVICE_FUNC explicit Array(const Scalar *data);
+    /** Constructs a vector or row-vector with given dimension. \only_for_vectors
+      *
+      * Note that this is only useful for dynamic-size vectors. For fixed-size vectors,
+      * it is redundant to pass the dimension here, so it makes more sense to use the default
+      * constructor Array() instead.
+      */
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE explicit Array(Index dim);
+    /** constructs an initialized 1x1 Array with the given coefficient */
+    Array(const Scalar& value);
+    /** constructs an uninitialized array with \a rows rows and \a cols columns.
+      *
+      * This is useful for dynamic-size arrays. For fixed-size arrays,
+      * it is redundant to pass these parameters, so one should use the default constructor
+      * Array() instead. */
+    Array(Index rows, Index cols);
+    /** constructs an initialized 2D vector with given coefficients */
+    Array(const Scalar& val0, const Scalar& val1);
+    #endif
+
+    /** constructs an initialized 3D vector with given coefficients */
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Array(const Scalar& val0, const Scalar& val1, const Scalar& val2)
+    {
+      Base::_check_template_params();
+      EIGEN_STATIC_ASSERT_VECTOR_SPECIFIC_SIZE(Array, 3)
+      m_storage.data()[0] = val0;
+      m_storage.data()[1] = val1;
+      m_storage.data()[2] = val2;
+    }
+    /** constructs an initialized 4D vector with given coefficients */
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Array(const Scalar& val0, const Scalar& val1, const Scalar& val2, const Scalar& val3)
+    {
+      Base::_check_template_params();
+      EIGEN_STATIC_ASSERT_VECTOR_SPECIFIC_SIZE(Array, 4)
+      m_storage.data()[0] = val0;
+      m_storage.data()[1] = val1;
+      m_storage.data()[2] = val2;
+      m_storage.data()[3] = val3;
+    }
+
+    /** Copy constructor */
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Array(const Array& other)
+            : Base(other)
+    { }
+
+  private:
+    struct PrivateType {};
+  public:
+
+    /** \sa MatrixBase::operator=(const EigenBase<OtherDerived>&) */
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Array(const EigenBase<OtherDerived> &other,
+                              typename internal::enable_if<internal::is_convertible<typename OtherDerived::Scalar,Scalar>::value,
+                                                           PrivateType>::type = PrivateType())
+      : Base(other.derived())
+    { }
+
+    EIGEN_DEVICE_FUNC inline Index innerStride() const { return 1; }
+    EIGEN_DEVICE_FUNC inline Index outerStride() const { return this->innerSize(); }
+
+    #ifdef EIGEN_ARRAY_PLUGIN
+    #include EIGEN_ARRAY_PLUGIN
+    #endif
+
+  private:
+
+    template<typename MatrixType, typename OtherDerived, bool SwapPointers>
+    friend struct internal::matrix_swap_impl;
+};
+
+/** \defgroup arraytypedefs Global array typedefs
+  * \ingroup Core_Module
+  *
+  * Eigen defines several typedef shortcuts for most common 1D and 2D array types.
+  *
+  * The general patterns are the following:
+  *
+  * \c ArrayRowsColsType where \c Rows and \c Cols can be \c 2,\c 3,\c 4 for fixed size square matrices or \c X for dynamic size,
+  * and where \c Type can be \c i for integer, \c f for float, \c d for double, \c cf for complex float, \c cd
+  * for complex double.
+  *
+  * For example, \c Array33d is a fixed-size 3x3 array type of doubles, and \c ArrayXXf is a dynamic-size matrix of floats.
+  *
+  * There are also \c ArraySizeType which are self-explanatory. For example, \c Array4cf is
+  * a fixed-size 1D array of 4 complex floats.
+  *
+  * \sa class Array
+  */
+
+#define EIGEN_MAKE_ARRAY_TYPEDEFS(Type, TypeSuffix, Size, SizeSuffix)   \
+/** \ingroup arraytypedefs */                                    \
+typedef Array<Type, Size, Size> Array##SizeSuffix##SizeSuffix##TypeSuffix;  \
+/** \ingroup arraytypedefs */                                    \
+typedef Array<Type, Size, 1>    Array##SizeSuffix##TypeSuffix;
+
+#define EIGEN_MAKE_ARRAY_FIXED_TYPEDEFS(Type, TypeSuffix, Size)         \
+/** \ingroup arraytypedefs */                                    \
+typedef Array<Type, Size, Dynamic> Array##Size##X##TypeSuffix;  \
+/** \ingroup arraytypedefs */                                    \
+typedef Array<Type, Dynamic, Size> Array##X##Size##TypeSuffix;
+
+#define EIGEN_MAKE_ARRAY_TYPEDEFS_ALL_SIZES(Type, TypeSuffix) \
+EIGEN_MAKE_ARRAY_TYPEDEFS(Type, TypeSuffix, 2, 2) \
+EIGEN_MAKE_ARRAY_TYPEDEFS(Type, TypeSuffix, 3, 3) \
+EIGEN_MAKE_ARRAY_TYPEDEFS(Type, TypeSuffix, 4, 4) \
+EIGEN_MAKE_ARRAY_TYPEDEFS(Type, TypeSuffix, Dynamic, X) \
+EIGEN_MAKE_ARRAY_FIXED_TYPEDEFS(Type, TypeSuffix, 2) \
+EIGEN_MAKE_ARRAY_FIXED_TYPEDEFS(Type, TypeSuffix, 3) \
+EIGEN_MAKE_ARRAY_FIXED_TYPEDEFS(Type, TypeSuffix, 4)
+
+EIGEN_MAKE_ARRAY_TYPEDEFS_ALL_SIZES(int,                  i)
+EIGEN_MAKE_ARRAY_TYPEDEFS_ALL_SIZES(float,                f)
+EIGEN_MAKE_ARRAY_TYPEDEFS_ALL_SIZES(double,               d)
+EIGEN_MAKE_ARRAY_TYPEDEFS_ALL_SIZES(std::complex<float>,  cf)
+EIGEN_MAKE_ARRAY_TYPEDEFS_ALL_SIZES(std::complex<double>, cd)
+
+#undef EIGEN_MAKE_ARRAY_TYPEDEFS_ALL_SIZES
+#undef EIGEN_MAKE_ARRAY_TYPEDEFS
+
+#undef EIGEN_MAKE_ARRAY_TYPEDEFS_LARGE
+
+#define EIGEN_USING_ARRAY_TYPEDEFS_FOR_TYPE_AND_SIZE(TypeSuffix, SizeSuffix) \
+using Eigen::Matrix##SizeSuffix##TypeSuffix; \
+using Eigen::Vector##SizeSuffix##TypeSuffix; \
+using Eigen::RowVector##SizeSuffix##TypeSuffix;
+
+#define EIGEN_USING_ARRAY_TYPEDEFS_FOR_TYPE(TypeSuffix) \
+EIGEN_USING_ARRAY_TYPEDEFS_FOR_TYPE_AND_SIZE(TypeSuffix, 2) \
+EIGEN_USING_ARRAY_TYPEDEFS_FOR_TYPE_AND_SIZE(TypeSuffix, 3) \
+EIGEN_USING_ARRAY_TYPEDEFS_FOR_TYPE_AND_SIZE(TypeSuffix, 4) \
+EIGEN_USING_ARRAY_TYPEDEFS_FOR_TYPE_AND_SIZE(TypeSuffix, X) \
+
+#define EIGEN_USING_ARRAY_TYPEDEFS \
+EIGEN_USING_ARRAY_TYPEDEFS_FOR_TYPE(i) \
+EIGEN_USING_ARRAY_TYPEDEFS_FOR_TYPE(f) \
+EIGEN_USING_ARRAY_TYPEDEFS_FOR_TYPE(d) \
+EIGEN_USING_ARRAY_TYPEDEFS_FOR_TYPE(cf) \
+EIGEN_USING_ARRAY_TYPEDEFS_FOR_TYPE(cd)
+
+} // end namespace Eigen
+
+#endif // EIGEN_ARRAY_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/GeneralProduct.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/GeneralProduct.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/GeneralProduct.h	(revision 3762)
@@ -0,0 +1,455 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2006-2008 Benoit Jacob <jacob.benoit.1@gmail.com>
+// Copyright (C) 2008-2011 Gael Guennebaud <gael.guennebaud@inria.fr>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_GENERAL_PRODUCT_H
+#define EIGEN_GENERAL_PRODUCT_H
+
+namespace Eigen {
+
+enum {
+  Large = 2,
+  Small = 3
+};
+
+namespace internal {
+
+template<int Rows, int Cols, int Depth> struct product_type_selector;
+
+template<int Size, int MaxSize> struct product_size_category
+{
+  enum {
+    #ifndef EIGEN_CUDA_ARCH
+    is_large = MaxSize == Dynamic ||
+               Size >= EIGEN_CACHEFRIENDLY_PRODUCT_THRESHOLD ||
+               (Size==Dynamic && MaxSize>=EIGEN_CACHEFRIENDLY_PRODUCT_THRESHOLD),
+    #else
+    is_large = 0,
+    #endif
+    value = is_large  ? Large
+          : Size == 1 ? 1
+                      : Small
+  };
+};
+
+template<typename Lhs, typename Rhs> struct product_type
+{
+  typedef typename remove_all<Lhs>::type _Lhs;
+  typedef typename remove_all<Rhs>::type _Rhs;
+  enum {
+    MaxRows = traits<_Lhs>::MaxRowsAtCompileTime,
+    Rows    = traits<_Lhs>::RowsAtCompileTime,
+    MaxCols = traits<_Rhs>::MaxColsAtCompileTime,
+    Cols    = traits<_Rhs>::ColsAtCompileTime,
+    MaxDepth = EIGEN_SIZE_MIN_PREFER_FIXED(traits<_Lhs>::MaxColsAtCompileTime,
+                                           traits<_Rhs>::MaxRowsAtCompileTime),
+    Depth = EIGEN_SIZE_MIN_PREFER_FIXED(traits<_Lhs>::ColsAtCompileTime,
+                                        traits<_Rhs>::RowsAtCompileTime)
+  };
+
+  // the splitting into different lines of code here, introducing the _select enums and the typedef below,
+  // is to work around an internal compiler error with gcc 4.1 and 4.2.
+private:
+  enum {
+    rows_select = product_size_category<Rows,MaxRows>::value,
+    cols_select = product_size_category<Cols,MaxCols>::value,
+    depth_select = product_size_category<Depth,MaxDepth>::value
+  };
+  typedef product_type_selector<rows_select, cols_select, depth_select> selector;
+
+public:
+  enum {
+    value = selector::ret,
+    ret = selector::ret
+  };
+#ifdef EIGEN_DEBUG_PRODUCT
+  static void debug()
+  {
+      EIGEN_DEBUG_VAR(Rows);
+      EIGEN_DEBUG_VAR(Cols);
+      EIGEN_DEBUG_VAR(Depth);
+      EIGEN_DEBUG_VAR(rows_select);
+      EIGEN_DEBUG_VAR(cols_select);
+      EIGEN_DEBUG_VAR(depth_select);
+      EIGEN_DEBUG_VAR(value);
+  }
+#endif
+};
+
+/* The following allows to select the kind of product at compile time
+ * based on the three dimensions of the product.
+ * This is a compile time mapping from {1,Small,Large}^3 -> {product types} */
+// FIXME I'm not sure the current mapping is the ideal one.
+template<int M, int N>  struct product_type_selector<M,N,1>              { enum { ret = OuterProduct }; };
+template<int M>         struct product_type_selector<M, 1, 1>            { enum { ret = LazyCoeffBasedProductMode }; };
+template<int N>         struct product_type_selector<1, N, 1>            { enum { ret = LazyCoeffBasedProductMode }; };
+template<int Depth>     struct product_type_selector<1,    1,    Depth>  { enum { ret = InnerProduct }; };
+template<>              struct product_type_selector<1,    1,    1>      { enum { ret = InnerProduct }; };
+template<>              struct product_type_selector<Small,1,    Small>  { enum { ret = CoeffBasedProductMode }; };
+template<>              struct product_type_selector<1,    Small,Small>  { enum { ret = CoeffBasedProductMode }; };
+template<>              struct product_type_selector<Small,Small,Small>  { enum { ret = CoeffBasedProductMode }; };
+template<>              struct product_type_selector<Small, Small, 1>    { enum { ret = LazyCoeffBasedProductMode }; };
+template<>              struct product_type_selector<Small, Large, 1>    { enum { ret = LazyCoeffBasedProductMode }; };
+template<>              struct product_type_selector<Large, Small, 1>    { enum { ret = LazyCoeffBasedProductMode }; };
+template<>              struct product_type_selector<1,    Large,Small>  { enum { ret = CoeffBasedProductMode }; };
+template<>              struct product_type_selector<1,    Large,Large>  { enum { ret = GemvProduct }; };
+template<>              struct product_type_selector<1,    Small,Large>  { enum { ret = CoeffBasedProductMode }; };
+template<>              struct product_type_selector<Large,1,    Small>  { enum { ret = CoeffBasedProductMode }; };
+template<>              struct product_type_selector<Large,1,    Large>  { enum { ret = GemvProduct }; };
+template<>              struct product_type_selector<Small,1,    Large>  { enum { ret = CoeffBasedProductMode }; };
+template<>              struct product_type_selector<Small,Small,Large>  { enum { ret = GemmProduct }; };
+template<>              struct product_type_selector<Large,Small,Large>  { enum { ret = GemmProduct }; };
+template<>              struct product_type_selector<Small,Large,Large>  { enum { ret = GemmProduct }; };
+template<>              struct product_type_selector<Large,Large,Large>  { enum { ret = GemmProduct }; };
+template<>              struct product_type_selector<Large,Small,Small>  { enum { ret = CoeffBasedProductMode }; };
+template<>              struct product_type_selector<Small,Large,Small>  { enum { ret = CoeffBasedProductMode }; };
+template<>              struct product_type_selector<Large,Large,Small>  { enum { ret = GemmProduct }; };
+
+} // end namespace internal
+
+/***********************************************************************
+*  Implementation of Inner Vector Vector Product
+***********************************************************************/
+
+// FIXME : maybe the "inner product" could return a Scalar
+// instead of a 1x1 matrix ??
+// Pro: more natural for the user
+// Cons: this could be a problem if in a meta unrolled algorithm a matrix-matrix
+// product ends up to a row-vector times col-vector product... To tackle this use
+// case, we could have a specialization for Block<MatrixType,1,1> with: operator=(Scalar x);
+
+/***********************************************************************
+*  Implementation of Outer Vector Vector Product
+***********************************************************************/
+
+/***********************************************************************
+*  Implementation of General Matrix Vector Product
+***********************************************************************/
+
+/*  According to the shape/flags of the matrix we have to distinghish 3 different cases:
+ *   1 - the matrix is col-major, BLAS compatible and M is large => call fast BLAS-like colmajor routine
+ *   2 - the matrix is row-major, BLAS compatible and N is large => call fast BLAS-like rowmajor routine
+ *   3 - all other cases are handled using a simple loop along the outer-storage direction.
+ *  Therefore we need a lower level meta selector.
+ *  Furthermore, if the matrix is the rhs, then the product has to be transposed.
+ */
+namespace internal {
+
+template<int Side, int StorageOrder, bool BlasCompatible>
+struct gemv_dense_selector;
+
+} // end namespace internal
+
+namespace internal {
+
+template<typename Scalar,int Size,int MaxSize,bool Cond> struct gemv_static_vector_if;
+
+template<typename Scalar,int Size,int MaxSize>
+struct gemv_static_vector_if<Scalar,Size,MaxSize,false>
+{
+  EIGEN_STRONG_INLINE  Scalar* data() { eigen_internal_assert(false && "should never be called"); return 0; }
+};
+
+template<typename Scalar,int Size>
+struct gemv_static_vector_if<Scalar,Size,Dynamic,true>
+{
+  EIGEN_STRONG_INLINE Scalar* data() { return 0; }
+};
+
+template<typename Scalar,int Size,int MaxSize>
+struct gemv_static_vector_if<Scalar,Size,MaxSize,true>
+{
+  enum {
+    ForceAlignment  = internal::packet_traits<Scalar>::Vectorizable,
+    PacketSize      = internal::packet_traits<Scalar>::size
+  };
+  #if EIGEN_MAX_STATIC_ALIGN_BYTES!=0
+  internal::plain_array<Scalar,EIGEN_SIZE_MIN_PREFER_FIXED(Size,MaxSize),0,EIGEN_PLAIN_ENUM_MIN(AlignedMax,PacketSize)> m_data;
+  EIGEN_STRONG_INLINE Scalar* data() { return m_data.array; }
+  #else
+  // Some architectures cannot align on the stack,
+  // => let's manually enforce alignment by allocating more data and return the address of the first aligned element.
+  internal::plain_array<Scalar,EIGEN_SIZE_MIN_PREFER_FIXED(Size,MaxSize)+(ForceAlignment?EIGEN_MAX_ALIGN_BYTES:0),0> m_data;
+  EIGEN_STRONG_INLINE Scalar* data() {
+    return ForceAlignment
+            ? reinterpret_cast<Scalar*>((internal::UIntPtr(m_data.array) & ~(std::size_t(EIGEN_MAX_ALIGN_BYTES-1))) + EIGEN_MAX_ALIGN_BYTES)
+            : m_data.array;
+  }
+  #endif
+};
+
+// The vector is on the left => transposition
+template<int StorageOrder, bool BlasCompatible>
+struct gemv_dense_selector<OnTheLeft,StorageOrder,BlasCompatible>
+{
+  template<typename Lhs, typename Rhs, typename Dest>
+  static void run(const Lhs &lhs, const Rhs &rhs, Dest& dest, const typename Dest::Scalar& alpha)
+  {
+    Transpose<Dest> destT(dest);
+    enum { OtherStorageOrder = StorageOrder == RowMajor ? ColMajor : RowMajor };
+    gemv_dense_selector<OnTheRight,OtherStorageOrder,BlasCompatible>
+      ::run(rhs.transpose(), lhs.transpose(), destT, alpha);
+  }
+};
+
+template<> struct gemv_dense_selector<OnTheRight,ColMajor,true>
+{
+  template<typename Lhs, typename Rhs, typename Dest>
+  static inline void run(const Lhs &lhs, const Rhs &rhs, Dest& dest, const typename Dest::Scalar& alpha)
+  {
+    typedef typename Lhs::Scalar   LhsScalar;
+    typedef typename Rhs::Scalar   RhsScalar;
+    typedef typename Dest::Scalar  ResScalar;
+    typedef typename Dest::RealScalar  RealScalar;
+    
+    typedef internal::blas_traits<Lhs> LhsBlasTraits;
+    typedef typename LhsBlasTraits::DirectLinearAccessType ActualLhsType;
+    typedef internal::blas_traits<Rhs> RhsBlasTraits;
+    typedef typename RhsBlasTraits::DirectLinearAccessType ActualRhsType;
+  
+    typedef Map<Matrix<ResScalar,Dynamic,1>, EIGEN_PLAIN_ENUM_MIN(AlignedMax,internal::packet_traits<ResScalar>::size)> MappedDest;
+
+    ActualLhsType actualLhs = LhsBlasTraits::extract(lhs);
+    ActualRhsType actualRhs = RhsBlasTraits::extract(rhs);
+
+    ResScalar actualAlpha = alpha * LhsBlasTraits::extractScalarFactor(lhs)
+                                  * RhsBlasTraits::extractScalarFactor(rhs);
+
+    // make sure Dest is a compile-time vector type (bug 1166)
+    typedef typename conditional<Dest::IsVectorAtCompileTime, Dest, typename Dest::ColXpr>::type ActualDest;
+
+    enum {
+      // FIXME find a way to allow an inner stride on the result if packet_traits<Scalar>::size==1
+      // on, the other hand it is good for the cache to pack the vector anyways...
+      EvalToDestAtCompileTime = (ActualDest::InnerStrideAtCompileTime==1),
+      ComplexByReal = (NumTraits<LhsScalar>::IsComplex) && (!NumTraits<RhsScalar>::IsComplex),
+      MightCannotUseDest = (!EvalToDestAtCompileTime) || ComplexByReal
+    };
+
+    typedef const_blas_data_mapper<LhsScalar,Index,ColMajor> LhsMapper;
+    typedef const_blas_data_mapper<RhsScalar,Index,RowMajor> RhsMapper;
+    RhsScalar compatibleAlpha = get_factor<ResScalar,RhsScalar>::run(actualAlpha);
+
+    if(!MightCannotUseDest)
+    {
+      // shortcut if we are sure to be able to use dest directly,
+      // this ease the compiler to generate cleaner and more optimzized code for most common cases
+      general_matrix_vector_product
+          <Index,LhsScalar,LhsMapper,ColMajor,LhsBlasTraits::NeedToConjugate,RhsScalar,RhsMapper,RhsBlasTraits::NeedToConjugate>::run(
+          actualLhs.rows(), actualLhs.cols(),
+          LhsMapper(actualLhs.data(), actualLhs.outerStride()),
+          RhsMapper(actualRhs.data(), actualRhs.innerStride()),
+          dest.data(), 1,
+          compatibleAlpha);
+    }
+    else
+    {
+      gemv_static_vector_if<ResScalar,ActualDest::SizeAtCompileTime,ActualDest::MaxSizeAtCompileTime,MightCannotUseDest> static_dest;
+
+      const bool alphaIsCompatible = (!ComplexByReal) || (numext::imag(actualAlpha)==RealScalar(0));
+      const bool evalToDest = EvalToDestAtCompileTime && alphaIsCompatible;
+
+      ei_declare_aligned_stack_constructed_variable(ResScalar,actualDestPtr,dest.size(),
+                                                    evalToDest ? dest.data() : static_dest.data());
+
+      if(!evalToDest)
+      {
+        #ifdef EIGEN_DENSE_STORAGE_CTOR_PLUGIN
+        Index size = dest.size();
+        EIGEN_DENSE_STORAGE_CTOR_PLUGIN
+        #endif
+        if(!alphaIsCompatible)
+        {
+          MappedDest(actualDestPtr, dest.size()).setZero();
+          compatibleAlpha = RhsScalar(1);
+        }
+        else
+          MappedDest(actualDestPtr, dest.size()) = dest;
+      }
+
+      general_matrix_vector_product
+          <Index,LhsScalar,LhsMapper,ColMajor,LhsBlasTraits::NeedToConjugate,RhsScalar,RhsMapper,RhsBlasTraits::NeedToConjugate>::run(
+          actualLhs.rows(), actualLhs.cols(),
+          LhsMapper(actualLhs.data(), actualLhs.outerStride()),
+          RhsMapper(actualRhs.data(), actualRhs.innerStride()),
+          actualDestPtr, 1,
+          compatibleAlpha);
+
+      if (!evalToDest)
+      {
+        if(!alphaIsCompatible)
+          dest.matrix() += actualAlpha * MappedDest(actualDestPtr, dest.size());
+        else
+          dest = MappedDest(actualDestPtr, dest.size());
+      }
+    }
+  }
+};
+
+template<> struct gemv_dense_selector<OnTheRight,RowMajor,true>
+{
+  template<typename Lhs, typename Rhs, typename Dest>
+  static void run(const Lhs &lhs, const Rhs &rhs, Dest& dest, const typename Dest::Scalar& alpha)
+  {
+    typedef typename Lhs::Scalar   LhsScalar;
+    typedef typename Rhs::Scalar   RhsScalar;
+    typedef typename Dest::Scalar  ResScalar;
+    
+    typedef internal::blas_traits<Lhs> LhsBlasTraits;
+    typedef typename LhsBlasTraits::DirectLinearAccessType ActualLhsType;
+    typedef internal::blas_traits<Rhs> RhsBlasTraits;
+    typedef typename RhsBlasTraits::DirectLinearAccessType ActualRhsType;
+    typedef typename internal::remove_all<ActualRhsType>::type ActualRhsTypeCleaned;
+
+    typename add_const<ActualLhsType>::type actualLhs = LhsBlasTraits::extract(lhs);
+    typename add_const<ActualRhsType>::type actualRhs = RhsBlasTraits::extract(rhs);
+
+    ResScalar actualAlpha = alpha * LhsBlasTraits::extractScalarFactor(lhs)
+                                  * RhsBlasTraits::extractScalarFactor(rhs);
+
+    enum {
+      // FIXME find a way to allow an inner stride on the result if packet_traits<Scalar>::size==1
+      // on, the other hand it is good for the cache to pack the vector anyways...
+      DirectlyUseRhs = ActualRhsTypeCleaned::InnerStrideAtCompileTime==1
+    };
+
+    gemv_static_vector_if<RhsScalar,ActualRhsTypeCleaned::SizeAtCompileTime,ActualRhsTypeCleaned::MaxSizeAtCompileTime,!DirectlyUseRhs> static_rhs;
+
+    ei_declare_aligned_stack_constructed_variable(RhsScalar,actualRhsPtr,actualRhs.size(),
+        DirectlyUseRhs ? const_cast<RhsScalar*>(actualRhs.data()) : static_rhs.data());
+
+    if(!DirectlyUseRhs)
+    {
+      #ifdef EIGEN_DENSE_STORAGE_CTOR_PLUGIN
+      Index size = actualRhs.size();
+      EIGEN_DENSE_STORAGE_CTOR_PLUGIN
+      #endif
+      Map<typename ActualRhsTypeCleaned::PlainObject>(actualRhsPtr, actualRhs.size()) = actualRhs;
+    }
+
+    typedef const_blas_data_mapper<LhsScalar,Index,RowMajor> LhsMapper;
+    typedef const_blas_data_mapper<RhsScalar,Index,ColMajor> RhsMapper;
+    general_matrix_vector_product
+        <Index,LhsScalar,LhsMapper,RowMajor,LhsBlasTraits::NeedToConjugate,RhsScalar,RhsMapper,RhsBlasTraits::NeedToConjugate>::run(
+        actualLhs.rows(), actualLhs.cols(),
+        LhsMapper(actualLhs.data(), actualLhs.outerStride()),
+        RhsMapper(actualRhsPtr, 1),
+        dest.data(), dest.col(0).innerStride(), //NOTE  if dest is not a vector at compile-time, then dest.innerStride() might be wrong. (bug 1166)
+        actualAlpha);
+  }
+};
+
+template<> struct gemv_dense_selector<OnTheRight,ColMajor,false>
+{
+  template<typename Lhs, typename Rhs, typename Dest>
+  static void run(const Lhs &lhs, const Rhs &rhs, Dest& dest, const typename Dest::Scalar& alpha)
+  {
+    EIGEN_STATIC_ASSERT((!nested_eval<Lhs,1>::Evaluate),EIGEN_INTERNAL_COMPILATION_ERROR_OR_YOU_MADE_A_PROGRAMMING_MISTAKE);
+    // TODO if rhs is large enough it might be beneficial to make sure that dest is sequentially stored in memory, otherwise use a temp
+    typename nested_eval<Rhs,1>::type actual_rhs(rhs);
+    const Index size = rhs.rows();
+    for(Index k=0; k<size; ++k)
+      dest += (alpha*actual_rhs.coeff(k)) * lhs.col(k);
+  }
+};
+
+template<> struct gemv_dense_selector<OnTheRight,RowMajor,false>
+{
+  template<typename Lhs, typename Rhs, typename Dest>
+  static void run(const Lhs &lhs, const Rhs &rhs, Dest& dest, const typename Dest::Scalar& alpha)
+  {
+    EIGEN_STATIC_ASSERT((!nested_eval<Lhs,1>::Evaluate),EIGEN_INTERNAL_COMPILATION_ERROR_OR_YOU_MADE_A_PROGRAMMING_MISTAKE);
+    typename nested_eval<Rhs,Lhs::RowsAtCompileTime>::type actual_rhs(rhs);
+    const Index rows = dest.rows();
+    for(Index i=0; i<rows; ++i)
+      dest.coeffRef(i) += alpha * (lhs.row(i).cwiseProduct(actual_rhs.transpose())).sum();
+  }
+};
+
+} // end namespace internal
+
+/***************************************************************************
+* Implementation of matrix base methods
+***************************************************************************/
+
+/** \returns the matrix product of \c *this and \a other.
+  *
+  * \note If instead of the matrix product you want the coefficient-wise product, see Cwise::operator*().
+  *
+  * \sa lazyProduct(), operator*=(const MatrixBase&), Cwise::operator*()
+  */
+template<typename Derived>
+template<typename OtherDerived>
+inline const Product<Derived, OtherDerived>
+MatrixBase<Derived>::operator*(const MatrixBase<OtherDerived> &other) const
+{
+  // A note regarding the function declaration: In MSVC, this function will sometimes
+  // not be inlined since DenseStorage is an unwindable object for dynamic
+  // matrices and product types are holding a member to store the result.
+  // Thus it does not help tagging this function with EIGEN_STRONG_INLINE.
+  enum {
+    ProductIsValid =  Derived::ColsAtCompileTime==Dynamic
+                   || OtherDerived::RowsAtCompileTime==Dynamic
+                   || int(Derived::ColsAtCompileTime)==int(OtherDerived::RowsAtCompileTime),
+    AreVectors = Derived::IsVectorAtCompileTime && OtherDerived::IsVectorAtCompileTime,
+    SameSizes = EIGEN_PREDICATE_SAME_MATRIX_SIZE(Derived,OtherDerived)
+  };
+  // note to the lost user:
+  //    * for a dot product use: v1.dot(v2)
+  //    * for a coeff-wise product use: v1.cwiseProduct(v2)
+  EIGEN_STATIC_ASSERT(ProductIsValid || !(AreVectors && SameSizes),
+    INVALID_VECTOR_VECTOR_PRODUCT__IF_YOU_WANTED_A_DOT_OR_COEFF_WISE_PRODUCT_YOU_MUST_USE_THE_EXPLICIT_FUNCTIONS)
+  EIGEN_STATIC_ASSERT(ProductIsValid || !(SameSizes && !AreVectors),
+    INVALID_MATRIX_PRODUCT__IF_YOU_WANTED_A_COEFF_WISE_PRODUCT_YOU_MUST_USE_THE_EXPLICIT_FUNCTION)
+  EIGEN_STATIC_ASSERT(ProductIsValid || SameSizes, INVALID_MATRIX_PRODUCT)
+#ifdef EIGEN_DEBUG_PRODUCT
+  internal::product_type<Derived,OtherDerived>::debug();
+#endif
+
+  return Product<Derived, OtherDerived>(derived(), other.derived());
+}
+
+/** \returns an expression of the matrix product of \c *this and \a other without implicit evaluation.
+  *
+  * The returned product will behave like any other expressions: the coefficients of the product will be
+  * computed once at a time as requested. This might be useful in some extremely rare cases when only
+  * a small and no coherent fraction of the result's coefficients have to be computed.
+  *
+  * \warning This version of the matrix product can be much much slower. So use it only if you know
+  * what you are doing and that you measured a true speed improvement.
+  *
+  * \sa operator*(const MatrixBase&)
+  */
+template<typename Derived>
+template<typename OtherDerived>
+const Product<Derived,OtherDerived,LazyProduct>
+MatrixBase<Derived>::lazyProduct(const MatrixBase<OtherDerived> &other) const
+{
+  enum {
+    ProductIsValid =  Derived::ColsAtCompileTime==Dynamic
+                   || OtherDerived::RowsAtCompileTime==Dynamic
+                   || int(Derived::ColsAtCompileTime)==int(OtherDerived::RowsAtCompileTime),
+    AreVectors = Derived::IsVectorAtCompileTime && OtherDerived::IsVectorAtCompileTime,
+    SameSizes = EIGEN_PREDICATE_SAME_MATRIX_SIZE(Derived,OtherDerived)
+  };
+  // note to the lost user:
+  //    * for a dot product use: v1.dot(v2)
+  //    * for a coeff-wise product use: v1.cwiseProduct(v2)
+  EIGEN_STATIC_ASSERT(ProductIsValid || !(AreVectors && SameSizes),
+    INVALID_VECTOR_VECTOR_PRODUCT__IF_YOU_WANTED_A_DOT_OR_COEFF_WISE_PRODUCT_YOU_MUST_USE_THE_EXPLICIT_FUNCTIONS)
+  EIGEN_STATIC_ASSERT(ProductIsValid || !(SameSizes && !AreVectors),
+    INVALID_MATRIX_PRODUCT__IF_YOU_WANTED_A_COEFF_WISE_PRODUCT_YOU_MUST_USE_THE_EXPLICIT_FUNCTION)
+  EIGEN_STATIC_ASSERT(ProductIsValid || SameSizes, INVALID_MATRIX_PRODUCT)
+
+  return Product<Derived,OtherDerived,LazyProduct>(derived(), other.derived());
+}
+
+} // end namespace Eigen
+
+#endif // EIGEN_PRODUCT_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/DiagonalProduct.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/DiagonalProduct.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/DiagonalProduct.h	(revision 3762)
@@ -0,0 +1,28 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2008 Gael Guennebaud <gael.guennebaud@inria.fr>
+// Copyright (C) 2007-2009 Benoit Jacob <jacob.benoit.1@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_DIAGONALPRODUCT_H
+#define EIGEN_DIAGONALPRODUCT_H
+
+namespace Eigen { 
+
+/** \returns the diagonal matrix product of \c *this by the diagonal matrix \a diagonal.
+  */
+template<typename Derived>
+template<typename DiagonalDerived>
+inline const Product<Derived, DiagonalDerived, LazyProduct>
+MatrixBase<Derived>::operator*(const DiagonalBase<DiagonalDerived> &a_diagonal) const
+{
+  return Product<Derived, DiagonalDerived, LazyProduct>(derived(),a_diagonal.derived());
+}
+
+} // end namespace Eigen
+
+#endif // EIGEN_DIAGONALPRODUCT_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/DenseCoeffsBase.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/DenseCoeffsBase.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/DenseCoeffsBase.h	(revision 3762)
@@ -0,0 +1,681 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2006-2010 Benoit Jacob <jacob.benoit.1@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_DENSECOEFFSBASE_H
+#define EIGEN_DENSECOEFFSBASE_H
+
+namespace Eigen {
+
+namespace internal {
+template<typename T> struct add_const_on_value_type_if_arithmetic
+{
+  typedef typename conditional<is_arithmetic<T>::value, T, typename add_const_on_value_type<T>::type>::type type;
+};
+}
+
+/** \brief Base class providing read-only coefficient access to matrices and arrays.
+  * \ingroup Core_Module
+  * \tparam Derived Type of the derived class
+  * \tparam #ReadOnlyAccessors Constant indicating read-only access
+  *
+  * This class defines the \c operator() \c const function and friends, which can be used to read specific
+  * entries of a matrix or array.
+  * 
+  * \sa DenseCoeffsBase<Derived, WriteAccessors>, DenseCoeffsBase<Derived, DirectAccessors>,
+  *     \ref TopicClassHierarchy
+  */
+template<typename Derived>
+class DenseCoeffsBase<Derived,ReadOnlyAccessors> : public EigenBase<Derived>
+{
+  public:
+    typedef typename internal::traits<Derived>::StorageKind StorageKind;
+    typedef typename internal::traits<Derived>::Scalar Scalar;
+    typedef typename internal::packet_traits<Scalar>::type PacketScalar;
+
+    // Explanation for this CoeffReturnType typedef.
+    // - This is the return type of the coeff() method.
+    // - The LvalueBit means exactly that we can offer a coeffRef() method, which means exactly that we can get references
+    // to coeffs, which means exactly that we can have coeff() return a const reference (as opposed to returning a value).
+    // - The is_artihmetic check is required since "const int", "const double", etc. will cause warnings on some systems
+    // while the declaration of "const T", where T is a non arithmetic type does not. Always returning "const Scalar&" is
+    // not possible, since the underlying expressions might not offer a valid address the reference could be referring to.
+    typedef typename internal::conditional<bool(internal::traits<Derived>::Flags&LvalueBit),
+                         const Scalar&,
+                         typename internal::conditional<internal::is_arithmetic<Scalar>::value, Scalar, const Scalar>::type
+                     >::type CoeffReturnType;
+
+    typedef typename internal::add_const_on_value_type_if_arithmetic<
+                         typename internal::packet_traits<Scalar>::type
+                     >::type PacketReturnType;
+
+    typedef EigenBase<Derived> Base;
+    using Base::rows;
+    using Base::cols;
+    using Base::size;
+    using Base::derived;
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Index rowIndexByOuterInner(Index outer, Index inner) const
+    {
+      return int(Derived::RowsAtCompileTime) == 1 ? 0
+          : int(Derived::ColsAtCompileTime) == 1 ? inner
+          : int(Derived::Flags)&RowMajorBit ? outer
+          : inner;
+    }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Index colIndexByOuterInner(Index outer, Index inner) const
+    {
+      return int(Derived::ColsAtCompileTime) == 1 ? 0
+          : int(Derived::RowsAtCompileTime) == 1 ? inner
+          : int(Derived::Flags)&RowMajorBit ? inner
+          : outer;
+    }
+
+    /** Short version: don't use this function, use
+      * \link operator()(Index,Index) const \endlink instead.
+      *
+      * Long version: this function is similar to
+      * \link operator()(Index,Index) const \endlink, but without the assertion.
+      * Use this for limiting the performance cost of debugging code when doing
+      * repeated coefficient access. Only use this when it is guaranteed that the
+      * parameters \a row and \a col are in range.
+      *
+      * If EIGEN_INTERNAL_DEBUGGING is defined, an assertion will be made, making this
+      * function equivalent to \link operator()(Index,Index) const \endlink.
+      *
+      * \sa operator()(Index,Index) const, coeffRef(Index,Index), coeff(Index) const
+      */
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE CoeffReturnType coeff(Index row, Index col) const
+    {
+      eigen_internal_assert(row >= 0 && row < rows()
+                         && col >= 0 && col < cols());
+      return internal::evaluator<Derived>(derived()).coeff(row,col);
+    }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE CoeffReturnType coeffByOuterInner(Index outer, Index inner) const
+    {
+      return coeff(rowIndexByOuterInner(outer, inner),
+                   colIndexByOuterInner(outer, inner));
+    }
+
+    /** \returns the coefficient at given the given row and column.
+      *
+      * \sa operator()(Index,Index), operator[](Index)
+      */
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE CoeffReturnType operator()(Index row, Index col) const
+    {
+      eigen_assert(row >= 0 && row < rows()
+          && col >= 0 && col < cols());
+      return coeff(row, col);
+    }
+
+    /** Short version: don't use this function, use
+      * \link operator[](Index) const \endlink instead.
+      *
+      * Long version: this function is similar to
+      * \link operator[](Index) const \endlink, but without the assertion.
+      * Use this for limiting the performance cost of debugging code when doing
+      * repeated coefficient access. Only use this when it is guaranteed that the
+      * parameter \a index is in range.
+      *
+      * If EIGEN_INTERNAL_DEBUGGING is defined, an assertion will be made, making this
+      * function equivalent to \link operator[](Index) const \endlink.
+      *
+      * \sa operator[](Index) const, coeffRef(Index), coeff(Index,Index) const
+      */
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE CoeffReturnType
+    coeff(Index index) const
+    {
+      EIGEN_STATIC_ASSERT(internal::evaluator<Derived>::Flags & LinearAccessBit,
+                          THIS_COEFFICIENT_ACCESSOR_TAKING_ONE_ACCESS_IS_ONLY_FOR_EXPRESSIONS_ALLOWING_LINEAR_ACCESS)
+      eigen_internal_assert(index >= 0 && index < size());
+      return internal::evaluator<Derived>(derived()).coeff(index);
+    }
+
+
+    /** \returns the coefficient at given index.
+      *
+      * This method is allowed only for vector expressions, and for matrix expressions having the LinearAccessBit.
+      *
+      * \sa operator[](Index), operator()(Index,Index) const, x() const, y() const,
+      * z() const, w() const
+      */
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE CoeffReturnType
+    operator[](Index index) const
+    {
+      EIGEN_STATIC_ASSERT(Derived::IsVectorAtCompileTime,
+                          THE_BRACKET_OPERATOR_IS_ONLY_FOR_VECTORS__USE_THE_PARENTHESIS_OPERATOR_INSTEAD)
+      eigen_assert(index >= 0 && index < size());
+      return coeff(index);
+    }
+
+    /** \returns the coefficient at given index.
+      *
+      * This is synonymous to operator[](Index) const.
+      *
+      * This method is allowed only for vector expressions, and for matrix expressions having the LinearAccessBit.
+      *
+      * \sa operator[](Index), operator()(Index,Index) const, x() const, y() const,
+      * z() const, w() const
+      */
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE CoeffReturnType
+    operator()(Index index) const
+    {
+      eigen_assert(index >= 0 && index < size());
+      return coeff(index);
+    }
+
+    /** equivalent to operator[](0).  */
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE CoeffReturnType
+    x() const { return (*this)[0]; }
+
+    /** equivalent to operator[](1).  */
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE CoeffReturnType
+    y() const
+    {
+      EIGEN_STATIC_ASSERT(Derived::SizeAtCompileTime==-1 || Derived::SizeAtCompileTime>=2, OUT_OF_RANGE_ACCESS);
+      return (*this)[1];
+    }
+
+    /** equivalent to operator[](2).  */
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE CoeffReturnType
+    z() const
+    {
+      EIGEN_STATIC_ASSERT(Derived::SizeAtCompileTime==-1 || Derived::SizeAtCompileTime>=3, OUT_OF_RANGE_ACCESS);
+      return (*this)[2];
+    }
+
+    /** equivalent to operator[](3).  */
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE CoeffReturnType
+    w() const
+    {
+      EIGEN_STATIC_ASSERT(Derived::SizeAtCompileTime==-1 || Derived::SizeAtCompileTime>=4, OUT_OF_RANGE_ACCESS);
+      return (*this)[3];
+    }
+
+    /** \internal
+      * \returns the packet of coefficients starting at the given row and column. It is your responsibility
+      * to ensure that a packet really starts there. This method is only available on expressions having the
+      * PacketAccessBit.
+      *
+      * The \a LoadMode parameter may have the value \a #Aligned or \a #Unaligned. Its effect is to select
+      * the appropriate vectorization instruction. Aligned access is faster, but is only possible for packets
+      * starting at an address which is a multiple of the packet size.
+      */
+
+    template<int LoadMode>
+    EIGEN_STRONG_INLINE PacketReturnType packet(Index row, Index col) const
+    {
+      typedef typename internal::packet_traits<Scalar>::type DefaultPacketType;
+      eigen_internal_assert(row >= 0 && row < rows() && col >= 0 && col < cols());
+      return internal::evaluator<Derived>(derived()).template packet<LoadMode,DefaultPacketType>(row,col);
+    }
+
+
+    /** \internal */
+    template<int LoadMode>
+    EIGEN_STRONG_INLINE PacketReturnType packetByOuterInner(Index outer, Index inner) const
+    {
+      return packet<LoadMode>(rowIndexByOuterInner(outer, inner),
+                              colIndexByOuterInner(outer, inner));
+    }
+
+    /** \internal
+      * \returns the packet of coefficients starting at the given index. It is your responsibility
+      * to ensure that a packet really starts there. This method is only available on expressions having the
+      * PacketAccessBit and the LinearAccessBit.
+      *
+      * The \a LoadMode parameter may have the value \a #Aligned or \a #Unaligned. Its effect is to select
+      * the appropriate vectorization instruction. Aligned access is faster, but is only possible for packets
+      * starting at an address which is a multiple of the packet size.
+      */
+
+    template<int LoadMode>
+    EIGEN_STRONG_INLINE PacketReturnType packet(Index index) const
+    {
+      EIGEN_STATIC_ASSERT(internal::evaluator<Derived>::Flags & LinearAccessBit,
+                          THIS_COEFFICIENT_ACCESSOR_TAKING_ONE_ACCESS_IS_ONLY_FOR_EXPRESSIONS_ALLOWING_LINEAR_ACCESS)
+      typedef typename internal::packet_traits<Scalar>::type DefaultPacketType;
+      eigen_internal_assert(index >= 0 && index < size());
+      return internal::evaluator<Derived>(derived()).template packet<LoadMode,DefaultPacketType>(index);
+    }
+
+  protected:
+    // explanation: DenseBase is doing "using ..." on the methods from DenseCoeffsBase.
+    // But some methods are only available in the DirectAccess case.
+    // So we add dummy methods here with these names, so that "using... " doesn't fail.
+    // It's not private so that the child class DenseBase can access them, and it's not public
+    // either since it's an implementation detail, so has to be protected.
+    void coeffRef();
+    void coeffRefByOuterInner();
+    void writePacket();
+    void writePacketByOuterInner();
+    void copyCoeff();
+    void copyCoeffByOuterInner();
+    void copyPacket();
+    void copyPacketByOuterInner();
+    void stride();
+    void innerStride();
+    void outerStride();
+    void rowStride();
+    void colStride();
+};
+
+/** \brief Base class providing read/write coefficient access to matrices and arrays.
+  * \ingroup Core_Module
+  * \tparam Derived Type of the derived class
+  * \tparam #WriteAccessors Constant indicating read/write access
+  *
+  * This class defines the non-const \c operator() function and friends, which can be used to write specific
+  * entries of a matrix or array. This class inherits DenseCoeffsBase<Derived, ReadOnlyAccessors> which
+  * defines the const variant for reading specific entries.
+  * 
+  * \sa DenseCoeffsBase<Derived, DirectAccessors>, \ref TopicClassHierarchy
+  */
+template<typename Derived>
+class DenseCoeffsBase<Derived, WriteAccessors> : public DenseCoeffsBase<Derived, ReadOnlyAccessors>
+{
+  public:
+
+    typedef DenseCoeffsBase<Derived, ReadOnlyAccessors> Base;
+
+    typedef typename internal::traits<Derived>::StorageKind StorageKind;
+    typedef typename internal::traits<Derived>::Scalar Scalar;
+    typedef typename internal::packet_traits<Scalar>::type PacketScalar;
+    typedef typename NumTraits<Scalar>::Real RealScalar;
+
+    using Base::coeff;
+    using Base::rows;
+    using Base::cols;
+    using Base::size;
+    using Base::derived;
+    using Base::rowIndexByOuterInner;
+    using Base::colIndexByOuterInner;
+    using Base::operator[];
+    using Base::operator();
+    using Base::x;
+    using Base::y;
+    using Base::z;
+    using Base::w;
+
+    /** Short version: don't use this function, use
+      * \link operator()(Index,Index) \endlink instead.
+      *
+      * Long version: this function is similar to
+      * \link operator()(Index,Index) \endlink, but without the assertion.
+      * Use this for limiting the performance cost of debugging code when doing
+      * repeated coefficient access. Only use this when it is guaranteed that the
+      * parameters \a row and \a col are in range.
+      *
+      * If EIGEN_INTERNAL_DEBUGGING is defined, an assertion will be made, making this
+      * function equivalent to \link operator()(Index,Index) \endlink.
+      *
+      * \sa operator()(Index,Index), coeff(Index, Index) const, coeffRef(Index)
+      */
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Scalar& coeffRef(Index row, Index col)
+    {
+      eigen_internal_assert(row >= 0 && row < rows()
+                         && col >= 0 && col < cols());
+      return internal::evaluator<Derived>(derived()).coeffRef(row,col);
+    }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Scalar&
+    coeffRefByOuterInner(Index outer, Index inner)
+    {
+      return coeffRef(rowIndexByOuterInner(outer, inner),
+                      colIndexByOuterInner(outer, inner));
+    }
+
+    /** \returns a reference to the coefficient at given the given row and column.
+      *
+      * \sa operator[](Index)
+      */
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Scalar&
+    operator()(Index row, Index col)
+    {
+      eigen_assert(row >= 0 && row < rows()
+          && col >= 0 && col < cols());
+      return coeffRef(row, col);
+    }
+
+
+    /** Short version: don't use this function, use
+      * \link operator[](Index) \endlink instead.
+      *
+      * Long version: this function is similar to
+      * \link operator[](Index) \endlink, but without the assertion.
+      * Use this for limiting the performance cost of debugging code when doing
+      * repeated coefficient access. Only use this when it is guaranteed that the
+      * parameters \a row and \a col are in range.
+      *
+      * If EIGEN_INTERNAL_DEBUGGING is defined, an assertion will be made, making this
+      * function equivalent to \link operator[](Index) \endlink.
+      *
+      * \sa operator[](Index), coeff(Index) const, coeffRef(Index,Index)
+      */
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Scalar&
+    coeffRef(Index index)
+    {
+      EIGEN_STATIC_ASSERT(internal::evaluator<Derived>::Flags & LinearAccessBit,
+                          THIS_COEFFICIENT_ACCESSOR_TAKING_ONE_ACCESS_IS_ONLY_FOR_EXPRESSIONS_ALLOWING_LINEAR_ACCESS)
+      eigen_internal_assert(index >= 0 && index < size());
+      return internal::evaluator<Derived>(derived()).coeffRef(index);
+    }
+
+    /** \returns a reference to the coefficient at given index.
+      *
+      * This method is allowed only for vector expressions, and for matrix expressions having the LinearAccessBit.
+      *
+      * \sa operator[](Index) const, operator()(Index,Index), x(), y(), z(), w()
+      */
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Scalar&
+    operator[](Index index)
+    {
+      EIGEN_STATIC_ASSERT(Derived::IsVectorAtCompileTime,
+                          THE_BRACKET_OPERATOR_IS_ONLY_FOR_VECTORS__USE_THE_PARENTHESIS_OPERATOR_INSTEAD)
+      eigen_assert(index >= 0 && index < size());
+      return coeffRef(index);
+    }
+
+    /** \returns a reference to the coefficient at given index.
+      *
+      * This is synonymous to operator[](Index).
+      *
+      * This method is allowed only for vector expressions, and for matrix expressions having the LinearAccessBit.
+      *
+      * \sa operator[](Index) const, operator()(Index,Index), x(), y(), z(), w()
+      */
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Scalar&
+    operator()(Index index)
+    {
+      eigen_assert(index >= 0 && index < size());
+      return coeffRef(index);
+    }
+
+    /** equivalent to operator[](0).  */
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Scalar&
+    x() { return (*this)[0]; }
+
+    /** equivalent to operator[](1).  */
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Scalar&
+    y()
+    {
+      EIGEN_STATIC_ASSERT(Derived::SizeAtCompileTime==-1 || Derived::SizeAtCompileTime>=2, OUT_OF_RANGE_ACCESS);
+      return (*this)[1];
+    }
+
+    /** equivalent to operator[](2).  */
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Scalar&
+    z()
+    {
+      EIGEN_STATIC_ASSERT(Derived::SizeAtCompileTime==-1 || Derived::SizeAtCompileTime>=3, OUT_OF_RANGE_ACCESS);
+      return (*this)[2];
+    }
+
+    /** equivalent to operator[](3).  */
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Scalar&
+    w()
+    {
+      EIGEN_STATIC_ASSERT(Derived::SizeAtCompileTime==-1 || Derived::SizeAtCompileTime>=4, OUT_OF_RANGE_ACCESS);
+      return (*this)[3];
+    }
+};
+
+/** \brief Base class providing direct read-only coefficient access to matrices and arrays.
+  * \ingroup Core_Module
+  * \tparam Derived Type of the derived class
+  * \tparam #DirectAccessors Constant indicating direct access
+  *
+  * This class defines functions to work with strides which can be used to access entries directly. This class
+  * inherits DenseCoeffsBase<Derived, ReadOnlyAccessors> which defines functions to access entries read-only using
+  * \c operator() .
+  *
+  * \sa \blank \ref TopicClassHierarchy
+  */
+template<typename Derived>
+class DenseCoeffsBase<Derived, DirectAccessors> : public DenseCoeffsBase<Derived, ReadOnlyAccessors>
+{
+  public:
+
+    typedef DenseCoeffsBase<Derived, ReadOnlyAccessors> Base;
+    typedef typename internal::traits<Derived>::Scalar Scalar;
+    typedef typename NumTraits<Scalar>::Real RealScalar;
+
+    using Base::rows;
+    using Base::cols;
+    using Base::size;
+    using Base::derived;
+
+    /** \returns the pointer increment between two consecutive elements within a slice in the inner direction.
+      *
+      * \sa outerStride(), rowStride(), colStride()
+      */
+    EIGEN_DEVICE_FUNC
+    inline Index innerStride() const
+    {
+      return derived().innerStride();
+    }
+
+    /** \returns the pointer increment between two consecutive inner slices (for example, between two consecutive columns
+      *          in a column-major matrix).
+      *
+      * \sa innerStride(), rowStride(), colStride()
+      */
+    EIGEN_DEVICE_FUNC
+    inline Index outerStride() const
+    {
+      return derived().outerStride();
+    }
+
+    // FIXME shall we remove it ?
+    inline Index stride() const
+    {
+      return Derived::IsVectorAtCompileTime ? innerStride() : outerStride();
+    }
+
+    /** \returns the pointer increment between two consecutive rows.
+      *
+      * \sa innerStride(), outerStride(), colStride()
+      */
+    EIGEN_DEVICE_FUNC
+    inline Index rowStride() const
+    {
+      return Derived::IsRowMajor ? outerStride() : innerStride();
+    }
+
+    /** \returns the pointer increment between two consecutive columns.
+      *
+      * \sa innerStride(), outerStride(), rowStride()
+      */
+    EIGEN_DEVICE_FUNC
+    inline Index colStride() const
+    {
+      return Derived::IsRowMajor ? innerStride() : outerStride();
+    }
+};
+
+/** \brief Base class providing direct read/write coefficient access to matrices and arrays.
+  * \ingroup Core_Module
+  * \tparam Derived Type of the derived class
+  * \tparam #DirectWriteAccessors Constant indicating direct access
+  *
+  * This class defines functions to work with strides which can be used to access entries directly. This class
+  * inherits DenseCoeffsBase<Derived, WriteAccessors> which defines functions to access entries read/write using
+  * \c operator().
+  *
+  * \sa \blank \ref TopicClassHierarchy
+  */
+template<typename Derived>
+class DenseCoeffsBase<Derived, DirectWriteAccessors>
+  : public DenseCoeffsBase<Derived, WriteAccessors>
+{
+  public:
+
+    typedef DenseCoeffsBase<Derived, WriteAccessors> Base;
+    typedef typename internal::traits<Derived>::Scalar Scalar;
+    typedef typename NumTraits<Scalar>::Real RealScalar;
+
+    using Base::rows;
+    using Base::cols;
+    using Base::size;
+    using Base::derived;
+
+    /** \returns the pointer increment between two consecutive elements within a slice in the inner direction.
+      *
+      * \sa outerStride(), rowStride(), colStride()
+      */
+    EIGEN_DEVICE_FUNC
+    inline Index innerStride() const
+    {
+      return derived().innerStride();
+    }
+
+    /** \returns the pointer increment between two consecutive inner slices (for example, between two consecutive columns
+      *          in a column-major matrix).
+      *
+      * \sa innerStride(), rowStride(), colStride()
+      */
+    EIGEN_DEVICE_FUNC
+    inline Index outerStride() const
+    {
+      return derived().outerStride();
+    }
+
+    // FIXME shall we remove it ?
+    inline Index stride() const
+    {
+      return Derived::IsVectorAtCompileTime ? innerStride() : outerStride();
+    }
+
+    /** \returns the pointer increment between two consecutive rows.
+      *
+      * \sa innerStride(), outerStride(), colStride()
+      */
+    EIGEN_DEVICE_FUNC
+    inline Index rowStride() const
+    {
+      return Derived::IsRowMajor ? outerStride() : innerStride();
+    }
+
+    /** \returns the pointer increment between two consecutive columns.
+      *
+      * \sa innerStride(), outerStride(), rowStride()
+      */
+    EIGEN_DEVICE_FUNC
+    inline Index colStride() const
+    {
+      return Derived::IsRowMajor ? innerStride() : outerStride();
+    }
+};
+
+namespace internal {
+
+template<int Alignment, typename Derived, bool JustReturnZero>
+struct first_aligned_impl
+{
+  static inline Index run(const Derived&)
+  { return 0; }
+};
+
+template<int Alignment, typename Derived>
+struct first_aligned_impl<Alignment, Derived, false>
+{
+  static inline Index run(const Derived& m)
+  {
+    return internal::first_aligned<Alignment>(m.data(), m.size());
+  }
+};
+
+/** \internal \returns the index of the first element of the array stored by \a m that is properly aligned with respect to \a Alignment for vectorization.
+  *
+  * \tparam Alignment requested alignment in Bytes.
+  *
+  * There is also the variant first_aligned(const Scalar*, Integer) defined in Memory.h. See it for more
+  * documentation.
+  */
+template<int Alignment, typename Derived>
+static inline Index first_aligned(const DenseBase<Derived>& m)
+{
+  enum { ReturnZero = (int(evaluator<Derived>::Alignment) >= Alignment) || !(Derived::Flags & DirectAccessBit) };
+  return first_aligned_impl<Alignment, Derived, ReturnZero>::run(m.derived());
+}
+
+template<typename Derived>
+static inline Index first_default_aligned(const DenseBase<Derived>& m)
+{
+  typedef typename Derived::Scalar Scalar;
+  typedef typename packet_traits<Scalar>::type DefaultPacketType;
+  return internal::first_aligned<int(unpacket_traits<DefaultPacketType>::alignment),Derived>(m);
+}
+
+template<typename Derived, bool HasDirectAccess = has_direct_access<Derived>::ret>
+struct inner_stride_at_compile_time
+{
+  enum { ret = traits<Derived>::InnerStrideAtCompileTime };
+};
+
+template<typename Derived>
+struct inner_stride_at_compile_time<Derived, false>
+{
+  enum { ret = 0 };
+};
+
+template<typename Derived, bool HasDirectAccess = has_direct_access<Derived>::ret>
+struct outer_stride_at_compile_time
+{
+  enum { ret = traits<Derived>::OuterStrideAtCompileTime };
+};
+
+template<typename Derived>
+struct outer_stride_at_compile_time<Derived, false>
+{
+  enum { ret = 0 };
+};
+
+} // end namespace internal
+
+} // end namespace Eigen
+
+#endif // EIGEN_DENSECOEFFSBASE_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/Select.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/Select.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/Select.h	(revision 3762)
@@ -0,0 +1,162 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2008-2010 Gael Guennebaud <gael.guennebaud@inria.fr>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_SELECT_H
+#define EIGEN_SELECT_H
+
+namespace Eigen { 
+
+/** \class Select
+  * \ingroup Core_Module
+  *
+  * \brief Expression of a coefficient wise version of the C++ ternary operator ?:
+  *
+  * \param ConditionMatrixType the type of the \em condition expression which must be a boolean matrix
+  * \param ThenMatrixType the type of the \em then expression
+  * \param ElseMatrixType the type of the \em else expression
+  *
+  * This class represents an expression of a coefficient wise version of the C++ ternary operator ?:.
+  * It is the return type of DenseBase::select() and most of the time this is the only way it is used.
+  *
+  * \sa DenseBase::select(const DenseBase<ThenDerived>&, const DenseBase<ElseDerived>&) const
+  */
+
+namespace internal {
+template<typename ConditionMatrixType, typename ThenMatrixType, typename ElseMatrixType>
+struct traits<Select<ConditionMatrixType, ThenMatrixType, ElseMatrixType> >
+ : traits<ThenMatrixType>
+{
+  typedef typename traits<ThenMatrixType>::Scalar Scalar;
+  typedef Dense StorageKind;
+  typedef typename traits<ThenMatrixType>::XprKind XprKind;
+  typedef typename ConditionMatrixType::Nested ConditionMatrixNested;
+  typedef typename ThenMatrixType::Nested ThenMatrixNested;
+  typedef typename ElseMatrixType::Nested ElseMatrixNested;
+  enum {
+    RowsAtCompileTime = ConditionMatrixType::RowsAtCompileTime,
+    ColsAtCompileTime = ConditionMatrixType::ColsAtCompileTime,
+    MaxRowsAtCompileTime = ConditionMatrixType::MaxRowsAtCompileTime,
+    MaxColsAtCompileTime = ConditionMatrixType::MaxColsAtCompileTime,
+    Flags = (unsigned int)ThenMatrixType::Flags & ElseMatrixType::Flags & RowMajorBit
+  };
+};
+}
+
+template<typename ConditionMatrixType, typename ThenMatrixType, typename ElseMatrixType>
+class Select : public internal::dense_xpr_base< Select<ConditionMatrixType, ThenMatrixType, ElseMatrixType> >::type,
+               internal::no_assignment_operator
+{
+  public:
+
+    typedef typename internal::dense_xpr_base<Select>::type Base;
+    EIGEN_DENSE_PUBLIC_INTERFACE(Select)
+
+    inline EIGEN_DEVICE_FUNC
+    Select(const ConditionMatrixType& a_conditionMatrix,
+           const ThenMatrixType& a_thenMatrix,
+           const ElseMatrixType& a_elseMatrix)
+      : m_condition(a_conditionMatrix), m_then(a_thenMatrix), m_else(a_elseMatrix)
+    {
+      eigen_assert(m_condition.rows() == m_then.rows() && m_condition.rows() == m_else.rows());
+      eigen_assert(m_condition.cols() == m_then.cols() && m_condition.cols() == m_else.cols());
+    }
+
+    inline EIGEN_DEVICE_FUNC Index rows() const { return m_condition.rows(); }
+    inline EIGEN_DEVICE_FUNC Index cols() const { return m_condition.cols(); }
+
+    inline EIGEN_DEVICE_FUNC
+    const Scalar coeff(Index i, Index j) const
+    {
+      if (m_condition.coeff(i,j))
+        return m_then.coeff(i,j);
+      else
+        return m_else.coeff(i,j);
+    }
+
+    inline EIGEN_DEVICE_FUNC
+    const Scalar coeff(Index i) const
+    {
+      if (m_condition.coeff(i))
+        return m_then.coeff(i);
+      else
+        return m_else.coeff(i);
+    }
+
+    inline EIGEN_DEVICE_FUNC const ConditionMatrixType& conditionMatrix() const
+    {
+      return m_condition;
+    }
+
+    inline EIGEN_DEVICE_FUNC const ThenMatrixType& thenMatrix() const
+    {
+      return m_then;
+    }
+
+    inline EIGEN_DEVICE_FUNC const ElseMatrixType& elseMatrix() const
+    {
+      return m_else;
+    }
+
+  protected:
+    typename ConditionMatrixType::Nested m_condition;
+    typename ThenMatrixType::Nested m_then;
+    typename ElseMatrixType::Nested m_else;
+};
+
+
+/** \returns a matrix where each coefficient (i,j) is equal to \a thenMatrix(i,j)
+  * if \c *this(i,j), and \a elseMatrix(i,j) otherwise.
+  *
+  * Example: \include MatrixBase_select.cpp
+  * Output: \verbinclude MatrixBase_select.out
+  *
+  * \sa class Select
+  */
+template<typename Derived>
+template<typename ThenDerived,typename ElseDerived>
+inline const Select<Derived,ThenDerived,ElseDerived>
+DenseBase<Derived>::select(const DenseBase<ThenDerived>& thenMatrix,
+                            const DenseBase<ElseDerived>& elseMatrix) const
+{
+  return Select<Derived,ThenDerived,ElseDerived>(derived(), thenMatrix.derived(), elseMatrix.derived());
+}
+
+/** Version of DenseBase::select(const DenseBase&, const DenseBase&) with
+  * the \em else expression being a scalar value.
+  *
+  * \sa DenseBase::select(const DenseBase<ThenDerived>&, const DenseBase<ElseDerived>&) const, class Select
+  */
+template<typename Derived>
+template<typename ThenDerived>
+inline const Select<Derived,ThenDerived, typename ThenDerived::ConstantReturnType>
+DenseBase<Derived>::select(const DenseBase<ThenDerived>& thenMatrix,
+                           const typename ThenDerived::Scalar& elseScalar) const
+{
+  return Select<Derived,ThenDerived,typename ThenDerived::ConstantReturnType>(
+    derived(), thenMatrix.derived(), ThenDerived::Constant(rows(),cols(),elseScalar));
+}
+
+/** Version of DenseBase::select(const DenseBase&, const DenseBase&) with
+  * the \em then expression being a scalar value.
+  *
+  * \sa DenseBase::select(const DenseBase<ThenDerived>&, const DenseBase<ElseDerived>&) const, class Select
+  */
+template<typename Derived>
+template<typename ElseDerived>
+inline const Select<Derived, typename ElseDerived::ConstantReturnType, ElseDerived >
+DenseBase<Derived>::select(const typename ElseDerived::Scalar& thenScalar,
+                           const DenseBase<ElseDerived>& elseMatrix) const
+{
+  return Select<Derived,typename ElseDerived::ConstantReturnType,ElseDerived>(
+    derived(), ElseDerived::Constant(rows(),cols(),thenScalar), elseMatrix.derived());
+}
+
+} // end namespace Eigen
+
+#endif // EIGEN_SELECT_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/SolveTriangular.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/SolveTriangular.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/SolveTriangular.h	(revision 3762)
@@ -0,0 +1,235 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2008-2009 Gael Guennebaud <gael.guennebaud@inria.fr>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_SOLVETRIANGULAR_H
+#define EIGEN_SOLVETRIANGULAR_H
+
+namespace Eigen { 
+
+namespace internal {
+
+// Forward declarations:
+// The following two routines are implemented in the products/TriangularSolver*.h files
+template<typename LhsScalar, typename RhsScalar, typename Index, int Side, int Mode, bool Conjugate, int StorageOrder>
+struct triangular_solve_vector;
+
+template <typename Scalar, typename Index, int Side, int Mode, bool Conjugate, int TriStorageOrder, int OtherStorageOrder, int OtherInnerStride>
+struct triangular_solve_matrix;
+
+// small helper struct extracting some traits on the underlying solver operation
+template<typename Lhs, typename Rhs, int Side>
+class trsolve_traits
+{
+  private:
+    enum {
+      RhsIsVectorAtCompileTime = (Side==OnTheLeft ? Rhs::ColsAtCompileTime : Rhs::RowsAtCompileTime)==1
+    };
+  public:
+    enum {
+      Unrolling   = (RhsIsVectorAtCompileTime && Rhs::SizeAtCompileTime != Dynamic && Rhs::SizeAtCompileTime <= 8)
+                  ? CompleteUnrolling : NoUnrolling,
+      RhsVectors  = RhsIsVectorAtCompileTime ? 1 : Dynamic
+    };
+};
+
+template<typename Lhs, typename Rhs,
+  int Side, // can be OnTheLeft/OnTheRight
+  int Mode, // can be Upper/Lower | UnitDiag
+  int Unrolling = trsolve_traits<Lhs,Rhs,Side>::Unrolling,
+  int RhsVectors = trsolve_traits<Lhs,Rhs,Side>::RhsVectors
+  >
+struct triangular_solver_selector;
+
+template<typename Lhs, typename Rhs, int Side, int Mode>
+struct triangular_solver_selector<Lhs,Rhs,Side,Mode,NoUnrolling,1>
+{
+  typedef typename Lhs::Scalar LhsScalar;
+  typedef typename Rhs::Scalar RhsScalar;
+  typedef blas_traits<Lhs> LhsProductTraits;
+  typedef typename LhsProductTraits::ExtractType ActualLhsType;
+  typedef Map<Matrix<RhsScalar,Dynamic,1>, Aligned> MappedRhs;
+  static void run(const Lhs& lhs, Rhs& rhs)
+  {
+    ActualLhsType actualLhs = LhsProductTraits::extract(lhs);
+
+    // FIXME find a way to allow an inner stride if packet_traits<Scalar>::size==1
+
+    bool useRhsDirectly = Rhs::InnerStrideAtCompileTime==1 || rhs.innerStride()==1;
+
+    ei_declare_aligned_stack_constructed_variable(RhsScalar,actualRhs,rhs.size(),
+                                                  (useRhsDirectly ? rhs.data() : 0));
+                                                  
+    if(!useRhsDirectly)
+      MappedRhs(actualRhs,rhs.size()) = rhs;
+
+    triangular_solve_vector<LhsScalar, RhsScalar, Index, Side, Mode, LhsProductTraits::NeedToConjugate,
+                            (int(Lhs::Flags) & RowMajorBit) ? RowMajor : ColMajor>
+      ::run(actualLhs.cols(), actualLhs.data(), actualLhs.outerStride(), actualRhs);
+
+    if(!useRhsDirectly)
+      rhs = MappedRhs(actualRhs, rhs.size());
+  }
+};
+
+// the rhs is a matrix
+template<typename Lhs, typename Rhs, int Side, int Mode>
+struct triangular_solver_selector<Lhs,Rhs,Side,Mode,NoUnrolling,Dynamic>
+{
+  typedef typename Rhs::Scalar Scalar;
+  typedef blas_traits<Lhs> LhsProductTraits;
+  typedef typename LhsProductTraits::DirectLinearAccessType ActualLhsType;
+
+  static void run(const Lhs& lhs, Rhs& rhs)
+  {
+    typename internal::add_const_on_value_type<ActualLhsType>::type actualLhs = LhsProductTraits::extract(lhs);
+
+    const Index size = lhs.rows();
+    const Index othersize = Side==OnTheLeft? rhs.cols() : rhs.rows();
+
+    typedef internal::gemm_blocking_space<(Rhs::Flags&RowMajorBit) ? RowMajor : ColMajor,Scalar,Scalar,
+              Rhs::MaxRowsAtCompileTime, Rhs::MaxColsAtCompileTime, Lhs::MaxRowsAtCompileTime,4> BlockingType;
+
+    BlockingType blocking(rhs.rows(), rhs.cols(), size, 1, false);
+
+    triangular_solve_matrix<Scalar,Index,Side,Mode,LhsProductTraits::NeedToConjugate,(int(Lhs::Flags) & RowMajorBit) ? RowMajor : ColMajor,
+                               (Rhs::Flags&RowMajorBit) ? RowMajor : ColMajor, Rhs::InnerStrideAtCompileTime>
+      ::run(size, othersize, &actualLhs.coeffRef(0,0), actualLhs.outerStride(), &rhs.coeffRef(0,0), rhs.innerStride(), rhs.outerStride(), blocking);
+  }
+};
+
+/***************************************************************************
+* meta-unrolling implementation
+***************************************************************************/
+
+template<typename Lhs, typename Rhs, int Mode, int LoopIndex, int Size,
+         bool Stop = LoopIndex==Size>
+struct triangular_solver_unroller;
+
+template<typename Lhs, typename Rhs, int Mode, int LoopIndex, int Size>
+struct triangular_solver_unroller<Lhs,Rhs,Mode,LoopIndex,Size,false> {
+  enum {
+    IsLower = ((Mode&Lower)==Lower),
+    DiagIndex  = IsLower ? LoopIndex : Size - LoopIndex - 1,
+    StartIndex = IsLower ? 0         : DiagIndex+1
+  };
+  static void run(const Lhs& lhs, Rhs& rhs)
+  {
+    if (LoopIndex>0)
+      rhs.coeffRef(DiagIndex) -= lhs.row(DiagIndex).template segment<LoopIndex>(StartIndex).transpose()
+                                .cwiseProduct(rhs.template segment<LoopIndex>(StartIndex)).sum();
+
+    if(!(Mode & UnitDiag))
+      rhs.coeffRef(DiagIndex) /= lhs.coeff(DiagIndex,DiagIndex);
+
+    triangular_solver_unroller<Lhs,Rhs,Mode,LoopIndex+1,Size>::run(lhs,rhs);
+  }
+};
+
+template<typename Lhs, typename Rhs, int Mode, int LoopIndex, int Size>
+struct triangular_solver_unroller<Lhs,Rhs,Mode,LoopIndex,Size,true> {
+  static void run(const Lhs&, Rhs&) {}
+};
+
+template<typename Lhs, typename Rhs, int Mode>
+struct triangular_solver_selector<Lhs,Rhs,OnTheLeft,Mode,CompleteUnrolling,1> {
+  static void run(const Lhs& lhs, Rhs& rhs)
+  { triangular_solver_unroller<Lhs,Rhs,Mode,0,Rhs::SizeAtCompileTime>::run(lhs,rhs); }
+};
+
+template<typename Lhs, typename Rhs, int Mode>
+struct triangular_solver_selector<Lhs,Rhs,OnTheRight,Mode,CompleteUnrolling,1> {
+  static void run(const Lhs& lhs, Rhs& rhs)
+  {
+    Transpose<const Lhs> trLhs(lhs);
+    Transpose<Rhs> trRhs(rhs);
+    
+    triangular_solver_unroller<Transpose<const Lhs>,Transpose<Rhs>,
+                              ((Mode&Upper)==Upper ? Lower : Upper) | (Mode&UnitDiag),
+                              0,Rhs::SizeAtCompileTime>::run(trLhs,trRhs);
+  }
+};
+
+} // end namespace internal
+
+/***************************************************************************
+* TriangularView methods
+***************************************************************************/
+
+#ifndef EIGEN_PARSED_BY_DOXYGEN
+template<typename MatrixType, unsigned int Mode>
+template<int Side, typename OtherDerived>
+void TriangularViewImpl<MatrixType,Mode,Dense>::solveInPlace(const MatrixBase<OtherDerived>& _other) const
+{
+  OtherDerived& other = _other.const_cast_derived();
+  eigen_assert( derived().cols() == derived().rows() && ((Side==OnTheLeft && derived().cols() == other.rows()) || (Side==OnTheRight && derived().cols() == other.cols())) );
+  eigen_assert((!(Mode & ZeroDiag)) && bool(Mode & (Upper|Lower)));
+  // If solving for a 0x0 matrix, nothing to do, simply return.
+  if (derived().cols() == 0)
+    return;
+
+  enum { copy = (internal::traits<OtherDerived>::Flags & RowMajorBit)  && OtherDerived::IsVectorAtCompileTime && OtherDerived::SizeAtCompileTime!=1};
+  typedef typename internal::conditional<copy,
+    typename internal::plain_matrix_type_column_major<OtherDerived>::type, OtherDerived&>::type OtherCopy;
+  OtherCopy otherCopy(other);
+
+  internal::triangular_solver_selector<MatrixType, typename internal::remove_reference<OtherCopy>::type,
+    Side, Mode>::run(derived().nestedExpression(), otherCopy);
+
+  if (copy)
+    other = otherCopy;
+}
+
+template<typename Derived, unsigned int Mode>
+template<int Side, typename Other>
+const internal::triangular_solve_retval<Side,TriangularView<Derived,Mode>,Other>
+TriangularViewImpl<Derived,Mode,Dense>::solve(const MatrixBase<Other>& other) const
+{
+  return internal::triangular_solve_retval<Side,TriangularViewType,Other>(derived(), other.derived());
+}
+#endif
+
+namespace internal {
+
+
+template<int Side, typename TriangularType, typename Rhs>
+struct traits<triangular_solve_retval<Side, TriangularType, Rhs> >
+{
+  typedef typename internal::plain_matrix_type_column_major<Rhs>::type ReturnType;
+};
+
+template<int Side, typename TriangularType, typename Rhs> struct triangular_solve_retval
+ : public ReturnByValue<triangular_solve_retval<Side, TriangularType, Rhs> >
+{
+  typedef typename remove_all<typename Rhs::Nested>::type RhsNestedCleaned;
+  typedef ReturnByValue<triangular_solve_retval> Base;
+
+  triangular_solve_retval(const TriangularType& tri, const Rhs& rhs)
+    : m_triangularMatrix(tri), m_rhs(rhs)
+  {}
+
+  inline Index rows() const { return m_rhs.rows(); }
+  inline Index cols() const { return m_rhs.cols(); }
+
+  template<typename Dest> inline void evalTo(Dest& dst) const
+  {
+    if(!is_same_dense(dst,m_rhs))
+      dst = m_rhs;
+    m_triangularMatrix.template solveInPlace<Side>(dst);
+  }
+
+  protected:
+    const TriangularType& m_triangularMatrix;
+    typename Rhs::Nested m_rhs;
+};
+
+} // namespace internal
+
+} // end namespace Eigen
+
+#endif // EIGEN_SOLVETRIANGULAR_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/CwiseUnaryView.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/CwiseUnaryView.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/CwiseUnaryView.h	(revision 3762)
@@ -0,0 +1,130 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2009-2010 Gael Guennebaud <gael.guennebaud@inria.fr>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CWISE_UNARY_VIEW_H
+#define EIGEN_CWISE_UNARY_VIEW_H
+
+namespace Eigen {
+
+namespace internal {
+template<typename ViewOp, typename MatrixType>
+struct traits<CwiseUnaryView<ViewOp, MatrixType> >
+ : traits<MatrixType>
+{
+  typedef typename result_of<
+                     ViewOp(const typename traits<MatrixType>::Scalar&)
+                   >::type Scalar;
+  typedef typename MatrixType::Nested MatrixTypeNested;
+  typedef typename remove_all<MatrixTypeNested>::type _MatrixTypeNested;
+  enum {
+    FlagsLvalueBit = is_lvalue<MatrixType>::value ? LvalueBit : 0,
+    Flags = traits<_MatrixTypeNested>::Flags & (RowMajorBit | FlagsLvalueBit | DirectAccessBit), // FIXME DirectAccessBit should not be handled by expressions
+    MatrixTypeInnerStride =  inner_stride_at_compile_time<MatrixType>::ret,
+    // need to cast the sizeof's from size_t to int explicitly, otherwise:
+    // "error: no integral type can represent all of the enumerator values
+    InnerStrideAtCompileTime = MatrixTypeInnerStride == Dynamic
+                             ? int(Dynamic)
+                             : int(MatrixTypeInnerStride) * int(sizeof(typename traits<MatrixType>::Scalar) / sizeof(Scalar)),
+    OuterStrideAtCompileTime = outer_stride_at_compile_time<MatrixType>::ret == Dynamic
+                             ? int(Dynamic)
+                             : outer_stride_at_compile_time<MatrixType>::ret * int(sizeof(typename traits<MatrixType>::Scalar) / sizeof(Scalar))
+  };
+};
+}
+
+template<typename ViewOp, typename MatrixType, typename StorageKind>
+class CwiseUnaryViewImpl;
+
+/** \class CwiseUnaryView
+  * \ingroup Core_Module
+  *
+  * \brief Generic lvalue expression of a coefficient-wise unary operator of a matrix or a vector
+  *
+  * \tparam ViewOp template functor implementing the view
+  * \tparam MatrixType the type of the matrix we are applying the unary operator
+  *
+  * This class represents a lvalue expression of a generic unary view operator of a matrix or a vector.
+  * It is the return type of real() and imag(), and most of the time this is the only way it is used.
+  *
+  * \sa MatrixBase::unaryViewExpr(const CustomUnaryOp &) const, class CwiseUnaryOp
+  */
+template<typename ViewOp, typename MatrixType>
+class CwiseUnaryView : public CwiseUnaryViewImpl<ViewOp, MatrixType, typename internal::traits<MatrixType>::StorageKind>
+{
+  public:
+
+    typedef typename CwiseUnaryViewImpl<ViewOp, MatrixType,typename internal::traits<MatrixType>::StorageKind>::Base Base;
+    EIGEN_GENERIC_PUBLIC_INTERFACE(CwiseUnaryView)
+    typedef typename internal::ref_selector<MatrixType>::non_const_type MatrixTypeNested;
+    typedef typename internal::remove_all<MatrixType>::type NestedExpression;
+
+    explicit inline CwiseUnaryView(MatrixType& mat, const ViewOp& func = ViewOp())
+      : m_matrix(mat), m_functor(func) {}
+
+    EIGEN_INHERIT_ASSIGNMENT_OPERATORS(CwiseUnaryView)
+
+    EIGEN_STRONG_INLINE Index rows() const { return m_matrix.rows(); }
+    EIGEN_STRONG_INLINE Index cols() const { return m_matrix.cols(); }
+
+    /** \returns the functor representing unary operation */
+    const ViewOp& functor() const { return m_functor; }
+
+    /** \returns the nested expression */
+    const typename internal::remove_all<MatrixTypeNested>::type&
+    nestedExpression() const { return m_matrix; }
+
+    /** \returns the nested expression */
+    typename internal::remove_reference<MatrixTypeNested>::type&
+    nestedExpression() { return m_matrix.const_cast_derived(); }
+
+  protected:
+    MatrixTypeNested m_matrix;
+    ViewOp m_functor;
+};
+
+// Generic API dispatcher
+template<typename ViewOp, typename XprType, typename StorageKind>
+class CwiseUnaryViewImpl
+  : public internal::generic_xpr_base<CwiseUnaryView<ViewOp, XprType> >::type
+{
+public:
+  typedef typename internal::generic_xpr_base<CwiseUnaryView<ViewOp, XprType> >::type Base;
+};
+
+template<typename ViewOp, typename MatrixType>
+class CwiseUnaryViewImpl<ViewOp,MatrixType,Dense>
+  : public internal::dense_xpr_base< CwiseUnaryView<ViewOp, MatrixType> >::type
+{
+  public:
+
+    typedef CwiseUnaryView<ViewOp, MatrixType> Derived;
+    typedef typename internal::dense_xpr_base< CwiseUnaryView<ViewOp, MatrixType> >::type Base;
+
+    EIGEN_DENSE_PUBLIC_INTERFACE(Derived)
+    EIGEN_INHERIT_ASSIGNMENT_OPERATORS(CwiseUnaryViewImpl)
+    
+    EIGEN_DEVICE_FUNC inline Scalar* data() { return &(this->coeffRef(0)); }
+    EIGEN_DEVICE_FUNC inline const Scalar* data() const { return &(this->coeff(0)); }
+
+    EIGEN_DEVICE_FUNC inline Index innerStride() const
+    {
+      return derived().nestedExpression().innerStride() * sizeof(typename internal::traits<MatrixType>::Scalar) / sizeof(Scalar);
+    }
+
+    EIGEN_DEVICE_FUNC inline Index outerStride() const
+    {
+      return derived().nestedExpression().outerStride() * sizeof(typename internal::traits<MatrixType>::Scalar) / sizeof(Scalar);
+    }
+  protected:
+    EIGEN_DEFAULT_EMPTY_CONSTRUCTOR_AND_DESTRUCTOR(CwiseUnaryViewImpl)
+};
+
+} // end namespace Eigen
+
+#endif // EIGEN_CWISE_UNARY_VIEW_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/NoAlias.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/NoAlias.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/NoAlias.h	(revision 3762)
@@ -0,0 +1,108 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2009 Gael Guennebaud <gael.guennebaud@inria.fr>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_NOALIAS_H
+#define EIGEN_NOALIAS_H
+
+namespace Eigen {
+
+/** \class NoAlias
+  * \ingroup Core_Module
+  *
+  * \brief Pseudo expression providing an operator = assuming no aliasing
+  *
+  * \tparam ExpressionType the type of the object on which to do the lazy assignment
+  *
+  * This class represents an expression with special assignment operators
+  * assuming no aliasing between the target expression and the source expression.
+  * More precisely it alloas to bypass the EvalBeforeAssignBit flag of the source expression.
+  * It is the return type of MatrixBase::noalias()
+  * and most of the time this is the only way it is used.
+  *
+  * \sa MatrixBase::noalias()
+  */
+template<typename ExpressionType, template <typename> class StorageBase>
+class NoAlias
+{
+  public:
+    typedef typename ExpressionType::Scalar Scalar;
+    
+    explicit NoAlias(ExpressionType& expression) : m_expression(expression) {}
+    
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE ExpressionType& operator=(const StorageBase<OtherDerived>& other)
+    {
+      call_assignment_no_alias(m_expression, other.derived(), internal::assign_op<Scalar,typename OtherDerived::Scalar>());
+      return m_expression;
+    }
+    
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE ExpressionType& operator+=(const StorageBase<OtherDerived>& other)
+    {
+      call_assignment_no_alias(m_expression, other.derived(), internal::add_assign_op<Scalar,typename OtherDerived::Scalar>());
+      return m_expression;
+    }
+    
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE ExpressionType& operator-=(const StorageBase<OtherDerived>& other)
+    {
+      call_assignment_no_alias(m_expression, other.derived(), internal::sub_assign_op<Scalar,typename OtherDerived::Scalar>());
+      return m_expression;
+    }
+
+    EIGEN_DEVICE_FUNC
+    ExpressionType& expression() const
+    {
+      return m_expression;
+    }
+
+  protected:
+    ExpressionType& m_expression;
+};
+
+/** \returns a pseudo expression of \c *this with an operator= assuming
+  * no aliasing between \c *this and the source expression.
+  *
+  * More precisely, noalias() allows to bypass the EvalBeforeAssignBit flag.
+  * Currently, even though several expressions may alias, only product
+  * expressions have this flag. Therefore, noalias() is only usefull when
+  * the source expression contains a matrix product.
+  *
+  * Here are some examples where noalias is usefull:
+  * \code
+  * D.noalias()  = A * B;
+  * D.noalias() += A.transpose() * B;
+  * D.noalias() -= 2 * A * B.adjoint();
+  * \endcode
+  *
+  * On the other hand the following example will lead to a \b wrong result:
+  * \code
+  * A.noalias() = A * B;
+  * \endcode
+  * because the result matrix A is also an operand of the matrix product. Therefore,
+  * there is no alternative than evaluating A * B in a temporary, that is the default
+  * behavior when you write:
+  * \code
+  * A = A * B;
+  * \endcode
+  *
+  * \sa class NoAlias
+  */
+template<typename Derived>
+NoAlias<Derived,MatrixBase> MatrixBase<Derived>::noalias()
+{
+  return NoAlias<Derived, Eigen::MatrixBase >(derived());
+}
+
+} // end namespace Eigen
+
+#endif // EIGEN_NOALIAS_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/NumTraits.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/NumTraits.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/NumTraits.h	(revision 3762)
@@ -0,0 +1,248 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2006-2010 Benoit Jacob <jacob.benoit.1@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_NUMTRAITS_H
+#define EIGEN_NUMTRAITS_H
+
+namespace Eigen {
+
+namespace internal {
+
+// default implementation of digits10(), based on numeric_limits if specialized,
+// 0 for integer types, and log10(epsilon()) otherwise.
+template< typename T,
+          bool use_numeric_limits = std::numeric_limits<T>::is_specialized,
+          bool is_integer = NumTraits<T>::IsInteger>
+struct default_digits10_impl
+{
+  static int run() { return std::numeric_limits<T>::digits10; }
+};
+
+template<typename T>
+struct default_digits10_impl<T,false,false> // Floating point
+{
+  static int run() {
+    using std::log10;
+    using std::ceil;
+    typedef typename NumTraits<T>::Real Real;
+    return int(ceil(-log10(NumTraits<Real>::epsilon())));
+  }
+};
+
+template<typename T>
+struct default_digits10_impl<T,false,true> // Integer
+{
+  static int run() { return 0; }
+};
+
+} // end namespace internal
+
+/** \class NumTraits
+  * \ingroup Core_Module
+  *
+  * \brief Holds information about the various numeric (i.e. scalar) types allowed by Eigen.
+  *
+  * \tparam T the numeric type at hand
+  *
+  * This class stores enums, typedefs and static methods giving information about a numeric type.
+  *
+  * The provided data consists of:
+  * \li A typedef \c Real, giving the "real part" type of \a T. If \a T is already real,
+  *     then \c Real is just a typedef to \a T. If \a T is \c std::complex<U> then \c Real
+  *     is a typedef to \a U.
+  * \li A typedef \c NonInteger, giving the type that should be used for operations producing non-integral values,
+  *     such as quotients, square roots, etc. If \a T is a floating-point type, then this typedef just gives
+  *     \a T again. Note however that many Eigen functions such as internal::sqrt simply refuse to
+  *     take integers. Outside of a few cases, Eigen doesn't do automatic type promotion. Thus, this typedef is
+  *     only intended as a helper for code that needs to explicitly promote types.
+  * \li A typedef \c Literal giving the type to use for numeric literals such as "2" or "0.5". For instance, for \c std::complex<U>, Literal is defined as \c U.
+  *     Of course, this type must be fully compatible with \a T. In doubt, just use \a T here.
+  * \li A typedef \a Nested giving the type to use to nest a value inside of the expression tree. If you don't know what
+  *     this means, just use \a T here.
+  * \li An enum value \a IsComplex. It is equal to 1 if \a T is a \c std::complex
+  *     type, and to 0 otherwise.
+  * \li An enum value \a IsInteger. It is equal to \c 1 if \a T is an integer type such as \c int,
+  *     and to \c 0 otherwise.
+  * \li Enum values ReadCost, AddCost and MulCost representing a rough estimate of the number of CPU cycles needed
+  *     to by move / add / mul instructions respectively, assuming the data is already stored in CPU registers.
+  *     Stay vague here. No need to do architecture-specific stuff.
+  * \li An enum value \a IsSigned. It is equal to \c 1 if \a T is a signed type and to 0 if \a T is unsigned.
+  * \li An enum value \a RequireInitialization. It is equal to \c 1 if the constructor of the numeric type \a T must
+  *     be called, and to 0 if it is safe not to call it. Default is 0 if \a T is an arithmetic type, and 1 otherwise.
+  * \li An epsilon() function which, unlike <a href="http://en.cppreference.com/w/cpp/types/numeric_limits/epsilon">std::numeric_limits::epsilon()</a>,
+  *     it returns a \a Real instead of a \a T.
+  * \li A dummy_precision() function returning a weak epsilon value. It is mainly used as a default
+  *     value by the fuzzy comparison operators.
+  * \li highest() and lowest() functions returning the highest and lowest possible values respectively.
+  * \li digits10() function returning the number of decimal digits that can be represented without change. This is
+  *     the analogue of <a href="http://en.cppreference.com/w/cpp/types/numeric_limits/digits10">std::numeric_limits<T>::digits10</a>
+  *     which is used as the default implementation if specialized.
+  */
+
+template<typename T> struct GenericNumTraits
+{
+  enum {
+    IsInteger = std::numeric_limits<T>::is_integer,
+    IsSigned = std::numeric_limits<T>::is_signed,
+    IsComplex = 0,
+    RequireInitialization = internal::is_arithmetic<T>::value ? 0 : 1,
+    ReadCost = 1,
+    AddCost = 1,
+    MulCost = 1
+  };
+
+  typedef T Real;
+  typedef typename internal::conditional<
+                     IsInteger,
+                     typename internal::conditional<sizeof(T)<=2, float, double>::type,
+                     T
+                   >::type NonInteger;
+  typedef T Nested;
+  typedef T Literal;
+
+  EIGEN_DEVICE_FUNC
+  static inline Real epsilon()
+  {
+    return numext::numeric_limits<T>::epsilon();
+  }
+
+  EIGEN_DEVICE_FUNC
+  static inline int digits10()
+  {
+    return internal::default_digits10_impl<T>::run();
+  }
+
+  EIGEN_DEVICE_FUNC
+  static inline Real dummy_precision()
+  {
+    // make sure to override this for floating-point types
+    return Real(0);
+  }
+
+
+  EIGEN_DEVICE_FUNC
+  static inline T highest() {
+    return (numext::numeric_limits<T>::max)();
+  }
+
+  EIGEN_DEVICE_FUNC
+  static inline T lowest()  {
+    return IsInteger ? (numext::numeric_limits<T>::min)() : (-(numext::numeric_limits<T>::max)());
+  }
+
+  EIGEN_DEVICE_FUNC
+  static inline T infinity() {
+    return numext::numeric_limits<T>::infinity();
+  }
+
+  EIGEN_DEVICE_FUNC
+  static inline T quiet_NaN() {
+    return numext::numeric_limits<T>::quiet_NaN();
+  }
+};
+
+template<typename T> struct NumTraits : GenericNumTraits<T>
+{};
+
+template<> struct NumTraits<float>
+  : GenericNumTraits<float>
+{
+  EIGEN_DEVICE_FUNC
+  static inline float dummy_precision() { return 1e-5f; }
+};
+
+template<> struct NumTraits<double> : GenericNumTraits<double>
+{
+  EIGEN_DEVICE_FUNC
+  static inline double dummy_precision() { return 1e-12; }
+};
+
+template<> struct NumTraits<long double>
+  : GenericNumTraits<long double>
+{
+  static inline long double dummy_precision() { return 1e-15l; }
+};
+
+template<typename _Real> struct NumTraits<std::complex<_Real> >
+  : GenericNumTraits<std::complex<_Real> >
+{
+  typedef _Real Real;
+  typedef typename NumTraits<_Real>::Literal Literal;
+  enum {
+    IsComplex = 1,
+    RequireInitialization = NumTraits<_Real>::RequireInitialization,
+    ReadCost = 2 * NumTraits<_Real>::ReadCost,
+    AddCost = 2 * NumTraits<Real>::AddCost,
+    MulCost = 4 * NumTraits<Real>::MulCost + 2 * NumTraits<Real>::AddCost
+  };
+
+  EIGEN_DEVICE_FUNC
+  static inline Real epsilon() { return NumTraits<Real>::epsilon(); }
+  EIGEN_DEVICE_FUNC
+  static inline Real dummy_precision() { return NumTraits<Real>::dummy_precision(); }
+  EIGEN_DEVICE_FUNC
+  static inline int digits10() { return NumTraits<Real>::digits10(); }
+};
+
+template<typename Scalar, int Rows, int Cols, int Options, int MaxRows, int MaxCols>
+struct NumTraits<Array<Scalar, Rows, Cols, Options, MaxRows, MaxCols> >
+{
+  typedef Array<Scalar, Rows, Cols, Options, MaxRows, MaxCols> ArrayType;
+  typedef typename NumTraits<Scalar>::Real RealScalar;
+  typedef Array<RealScalar, Rows, Cols, Options, MaxRows, MaxCols> Real;
+  typedef typename NumTraits<Scalar>::NonInteger NonIntegerScalar;
+  typedef Array<NonIntegerScalar, Rows, Cols, Options, MaxRows, MaxCols> NonInteger;
+  typedef ArrayType & Nested;
+  typedef typename NumTraits<Scalar>::Literal Literal;
+
+  enum {
+    IsComplex = NumTraits<Scalar>::IsComplex,
+    IsInteger = NumTraits<Scalar>::IsInteger,
+    IsSigned  = NumTraits<Scalar>::IsSigned,
+    RequireInitialization = 1,
+    ReadCost = ArrayType::SizeAtCompileTime==Dynamic ? HugeCost : ArrayType::SizeAtCompileTime * NumTraits<Scalar>::ReadCost,
+    AddCost  = ArrayType::SizeAtCompileTime==Dynamic ? HugeCost : ArrayType::SizeAtCompileTime * NumTraits<Scalar>::AddCost,
+    MulCost  = ArrayType::SizeAtCompileTime==Dynamic ? HugeCost : ArrayType::SizeAtCompileTime * NumTraits<Scalar>::MulCost
+  };
+
+  EIGEN_DEVICE_FUNC
+  static inline RealScalar epsilon() { return NumTraits<RealScalar>::epsilon(); }
+  EIGEN_DEVICE_FUNC
+  static inline RealScalar dummy_precision() { return NumTraits<RealScalar>::dummy_precision(); }
+
+  static inline int digits10() { return NumTraits<Scalar>::digits10(); }
+};
+
+template<> struct NumTraits<std::string>
+  : GenericNumTraits<std::string>
+{
+  enum {
+    RequireInitialization = 1,
+    ReadCost = HugeCost,
+    AddCost  = HugeCost,
+    MulCost  = HugeCost
+  };
+
+  static inline int digits10() { return 0; }
+
+private:
+  static inline std::string epsilon();
+  static inline std::string dummy_precision();
+  static inline std::string lowest();
+  static inline std::string highest();
+  static inline std::string infinity();
+  static inline std::string quiet_NaN();
+};
+
+// Empty specialization for void to allow template specialization based on NumTraits<T>::Real with T==void and SFINAE.
+template<> struct NumTraits<void> {};
+
+} // end namespace Eigen
+
+#endif // EIGEN_NUMTRAITS_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/util/Macros.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/util/Macros.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/util/Macros.h	(revision 3762)
@@ -0,0 +1,1053 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2008-2015 Gael Guennebaud <gael.guennebaud@inria.fr>
+// Copyright (C) 2006-2008 Benoit Jacob <jacob.benoit.1@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_MACROS_H
+#define EIGEN_MACROS_H
+
+#define EIGEN_WORLD_VERSION 3
+#define EIGEN_MAJOR_VERSION 3
+#define EIGEN_MINOR_VERSION 9
+
+#define EIGEN_VERSION_AT_LEAST(x,y,z) (EIGEN_WORLD_VERSION>x || (EIGEN_WORLD_VERSION>=x && \
+                                      (EIGEN_MAJOR_VERSION>y || (EIGEN_MAJOR_VERSION>=y && \
+                                                                 EIGEN_MINOR_VERSION>=z))))
+
+// Compiler identification, EIGEN_COMP_*
+
+/// \internal EIGEN_COMP_GNUC set to 1 for all compilers compatible with GCC
+#ifdef __GNUC__
+  #define EIGEN_COMP_GNUC 1
+#else
+  #define EIGEN_COMP_GNUC 0
+#endif
+
+/// \internal EIGEN_COMP_CLANG set to major+minor version (e.g., 307 for clang 3.7) if the compiler is clang
+#if defined(__clang__)
+  #define EIGEN_COMP_CLANG (__clang_major__*100+__clang_minor__)
+#else
+  #define EIGEN_COMP_CLANG 0
+#endif
+
+
+/// \internal EIGEN_COMP_LLVM set to 1 if the compiler backend is llvm
+#if defined(__llvm__)
+  #define EIGEN_COMP_LLVM 1
+#else
+  #define EIGEN_COMP_LLVM 0
+#endif
+
+/// \internal EIGEN_COMP_ICC set to __INTEL_COMPILER if the compiler is Intel compiler, 0 otherwise
+#if defined(__INTEL_COMPILER)
+  #define EIGEN_COMP_ICC __INTEL_COMPILER
+#else
+  #define EIGEN_COMP_ICC 0
+#endif
+
+/// \internal EIGEN_COMP_MINGW set to 1 if the compiler is mingw
+#if defined(__MINGW32__)
+  #define EIGEN_COMP_MINGW 1
+#else
+  #define EIGEN_COMP_MINGW 0
+#endif
+
+/// \internal EIGEN_COMP_SUNCC set to 1 if the compiler is Solaris Studio
+#if defined(__SUNPRO_CC)
+  #define EIGEN_COMP_SUNCC 1
+#else
+  #define EIGEN_COMP_SUNCC 0
+#endif
+
+/// \internal EIGEN_COMP_MSVC set to _MSC_VER if the compiler is Microsoft Visual C++, 0 otherwise.
+#if defined(_MSC_VER)
+  #define EIGEN_COMP_MSVC _MSC_VER
+#else
+  #define EIGEN_COMP_MSVC 0
+#endif
+
+// For the record, here is a table summarizing the possible values for EIGEN_COMP_MSVC:
+//  name  ver   MSC_VER
+//  2008    9      1500
+//  2010   10      1600
+//  2012   11      1700
+//  2013   12      1800
+//  2015   14      1900
+//  "15"   15      1900
+
+/// \internal EIGEN_COMP_MSVC_STRICT set to 1 if the compiler is really Microsoft Visual C++ and not ,e.g., ICC or clang-cl
+#if EIGEN_COMP_MSVC && !(EIGEN_COMP_ICC || EIGEN_COMP_LLVM || EIGEN_COMP_CLANG)
+  #define EIGEN_COMP_MSVC_STRICT _MSC_VER
+#else
+  #define EIGEN_COMP_MSVC_STRICT 0
+#endif
+
+/// \internal EIGEN_COMP_IBM set to 1 if the compiler is IBM XL C++
+#if defined(__IBMCPP__) || defined(__xlc__)
+  #define EIGEN_COMP_IBM 1
+#else
+  #define EIGEN_COMP_IBM 0
+#endif
+
+/// \internal EIGEN_COMP_PGI set to 1 if the compiler is Portland Group Compiler
+#if defined(__PGI)
+  #define EIGEN_COMP_PGI 1
+#else
+  #define EIGEN_COMP_PGI 0
+#endif
+
+/// \internal EIGEN_COMP_ARM set to 1 if the compiler is ARM Compiler
+#if defined(__CC_ARM) || defined(__ARMCC_VERSION)
+  #define EIGEN_COMP_ARM 1
+#else
+  #define EIGEN_COMP_ARM 0
+#endif
+
+/// \internal EIGEN_COMP_ARM set to 1 if the compiler is ARM Compiler
+#if defined(__EMSCRIPTEN__)
+  #define EIGEN_COMP_EMSCRIPTEN 1
+#else
+  #define EIGEN_COMP_EMSCRIPTEN 0
+#endif
+
+
+/// \internal EIGEN_GNUC_STRICT set to 1 if the compiler is really GCC and not a compatible compiler (e.g., ICC, clang, mingw, etc.)
+#if EIGEN_COMP_GNUC && !(EIGEN_COMP_CLANG || EIGEN_COMP_ICC || EIGEN_COMP_MINGW || EIGEN_COMP_PGI || EIGEN_COMP_IBM || EIGEN_COMP_ARM || EIGEN_COMP_EMSCRIPTEN)
+  #define EIGEN_COMP_GNUC_STRICT 1
+#else
+  #define EIGEN_COMP_GNUC_STRICT 0
+#endif
+
+
+#if EIGEN_COMP_GNUC
+  #define EIGEN_GNUC_AT_LEAST(x,y) ((__GNUC__==x && __GNUC_MINOR__>=y) || __GNUC__>x)
+  #define EIGEN_GNUC_AT_MOST(x,y)  ((__GNUC__==x && __GNUC_MINOR__<=y) || __GNUC__<x)
+  #define EIGEN_GNUC_AT(x,y)       ( __GNUC__==x && __GNUC_MINOR__==y )
+#else
+  #define EIGEN_GNUC_AT_LEAST(x,y) 0
+  #define EIGEN_GNUC_AT_MOST(x,y)  0
+  #define EIGEN_GNUC_AT(x,y)       0
+#endif
+
+// FIXME: could probably be removed as we do not support gcc 3.x anymore
+#if EIGEN_COMP_GNUC && (__GNUC__ <= 3)
+#define EIGEN_GCC3_OR_OLDER 1
+#else
+#define EIGEN_GCC3_OR_OLDER 0
+#endif
+
+
+// Architecture identification, EIGEN_ARCH_*
+
+#if defined(__x86_64__) || defined(_M_X64) || defined(__amd64)
+  #define EIGEN_ARCH_x86_64 1
+#else
+  #define EIGEN_ARCH_x86_64 0
+#endif
+
+#if defined(__i386__) || defined(_M_IX86) || defined(_X86_) || defined(__i386)
+  #define EIGEN_ARCH_i386 1
+#else
+  #define EIGEN_ARCH_i386 0
+#endif
+
+#if EIGEN_ARCH_x86_64 || EIGEN_ARCH_i386
+  #define EIGEN_ARCH_i386_OR_x86_64 1
+#else
+  #define EIGEN_ARCH_i386_OR_x86_64 0
+#endif
+
+/// \internal EIGEN_ARCH_ARM set to 1 if the architecture is ARM
+#if defined(__arm__)
+  #define EIGEN_ARCH_ARM 1
+#else
+  #define EIGEN_ARCH_ARM 0
+#endif
+
+/// \internal EIGEN_ARCH_ARM64 set to 1 if the architecture is ARM64
+#if defined(__aarch64__)
+  #define EIGEN_ARCH_ARM64 1
+#else
+  #define EIGEN_ARCH_ARM64 0
+#endif
+
+#if EIGEN_ARCH_ARM || EIGEN_ARCH_ARM64
+  #define EIGEN_ARCH_ARM_OR_ARM64 1
+#else
+  #define EIGEN_ARCH_ARM_OR_ARM64 0
+#endif
+
+/// \internal EIGEN_ARCH_MIPS set to 1 if the architecture is MIPS
+#if defined(__mips__) || defined(__mips)
+  #define EIGEN_ARCH_MIPS 1
+#else
+  #define EIGEN_ARCH_MIPS 0
+#endif
+
+/// \internal EIGEN_ARCH_SPARC set to 1 if the architecture is SPARC
+#if defined(__sparc__) || defined(__sparc)
+  #define EIGEN_ARCH_SPARC 1
+#else
+  #define EIGEN_ARCH_SPARC 0
+#endif
+
+/// \internal EIGEN_ARCH_IA64 set to 1 if the architecture is Intel Itanium
+#if defined(__ia64__)
+  #define EIGEN_ARCH_IA64 1
+#else
+  #define EIGEN_ARCH_IA64 0
+#endif
+
+/// \internal EIGEN_ARCH_PPC set to 1 if the architecture is PowerPC
+#if defined(__powerpc__) || defined(__ppc__) || defined(_M_PPC)
+  #define EIGEN_ARCH_PPC 1
+#else
+  #define EIGEN_ARCH_PPC 0
+#endif
+
+
+
+// Operating system identification, EIGEN_OS_*
+
+/// \internal EIGEN_OS_UNIX set to 1 if the OS is a unix variant
+#if defined(__unix__) || defined(__unix)
+  #define EIGEN_OS_UNIX 1
+#else
+  #define EIGEN_OS_UNIX 0
+#endif
+
+/// \internal EIGEN_OS_LINUX set to 1 if the OS is based on Linux kernel
+#if defined(__linux__)
+  #define EIGEN_OS_LINUX 1
+#else
+  #define EIGEN_OS_LINUX 0
+#endif
+
+/// \internal EIGEN_OS_ANDROID set to 1 if the OS is Android
+// note: ANDROID is defined when using ndk_build, __ANDROID__ is defined when using a standalone toolchain.
+#if defined(__ANDROID__) || defined(ANDROID)
+  #define EIGEN_OS_ANDROID 1
+#else
+  #define EIGEN_OS_ANDROID 0
+#endif
+
+/// \internal EIGEN_OS_GNULINUX set to 1 if the OS is GNU Linux and not Linux-based OS (e.g., not android)
+#if defined(__gnu_linux__) && !(EIGEN_OS_ANDROID)
+  #define EIGEN_OS_GNULINUX 1
+#else
+  #define EIGEN_OS_GNULINUX 0
+#endif
+
+/// \internal EIGEN_OS_BSD set to 1 if the OS is a BSD variant
+#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__bsdi__) || defined(__DragonFly__)
+  #define EIGEN_OS_BSD 1
+#else
+  #define EIGEN_OS_BSD 0
+#endif
+
+/// \internal EIGEN_OS_MAC set to 1 if the OS is MacOS
+#if defined(__APPLE__)
+  #define EIGEN_OS_MAC 1
+#else
+  #define EIGEN_OS_MAC 0
+#endif
+
+/// \internal EIGEN_OS_QNX set to 1 if the OS is QNX
+#if defined(__QNX__)
+  #define EIGEN_OS_QNX 1
+#else
+  #define EIGEN_OS_QNX 0
+#endif
+
+/// \internal EIGEN_OS_WIN set to 1 if the OS is Windows based
+#if defined(_WIN32)
+  #define EIGEN_OS_WIN 1
+#else
+  #define EIGEN_OS_WIN 0
+#endif
+
+/// \internal EIGEN_OS_WIN64 set to 1 if the OS is Windows 64bits
+#if defined(_WIN64)
+  #define EIGEN_OS_WIN64 1
+#else
+  #define EIGEN_OS_WIN64 0
+#endif
+
+/// \internal EIGEN_OS_WINCE set to 1 if the OS is Windows CE
+#if defined(_WIN32_WCE)
+  #define EIGEN_OS_WINCE 1
+#else
+  #define EIGEN_OS_WINCE 0
+#endif
+
+/// \internal EIGEN_OS_CYGWIN set to 1 if the OS is Windows/Cygwin
+#if defined(__CYGWIN__)
+  #define EIGEN_OS_CYGWIN 1
+#else
+  #define EIGEN_OS_CYGWIN 0
+#endif
+
+/// \internal EIGEN_OS_WIN_STRICT set to 1 if the OS is really Windows and not some variants
+#if EIGEN_OS_WIN && !( EIGEN_OS_WINCE || EIGEN_OS_CYGWIN )
+  #define EIGEN_OS_WIN_STRICT 1
+#else
+  #define EIGEN_OS_WIN_STRICT 0
+#endif
+
+/// \internal EIGEN_OS_SUN set to 1 if the OS is SUN
+#if (defined(sun) || defined(__sun)) && !(defined(__SVR4) || defined(__svr4__))
+  #define EIGEN_OS_SUN 1
+#else
+  #define EIGEN_OS_SUN 0
+#endif
+
+/// \internal EIGEN_OS_SOLARIS set to 1 if the OS is Solaris
+#if (defined(sun) || defined(__sun)) && (defined(__SVR4) || defined(__svr4__))
+  #define EIGEN_OS_SOLARIS 1
+#else
+  #define EIGEN_OS_SOLARIS 0
+#endif
+
+
+
+#if EIGEN_GNUC_AT_MOST(4,3) && !EIGEN_COMP_CLANG
+  // see bug 89
+  #define EIGEN_SAFE_TO_USE_STANDARD_ASSERT_MACRO 0
+#else
+  #define EIGEN_SAFE_TO_USE_STANDARD_ASSERT_MACRO 1
+#endif
+
+// This macro can be used to prevent from macro expansion, e.g.:
+//   std::max EIGEN_NOT_A_MACRO(a,b)
+#define EIGEN_NOT_A_MACRO
+
+#ifdef EIGEN_DEFAULT_TO_ROW_MAJOR
+#define EIGEN_DEFAULT_MATRIX_STORAGE_ORDER_OPTION Eigen::RowMajor
+#else
+#define EIGEN_DEFAULT_MATRIX_STORAGE_ORDER_OPTION Eigen::ColMajor
+#endif
+
+#ifndef EIGEN_DEFAULT_DENSE_INDEX_TYPE
+#define EIGEN_DEFAULT_DENSE_INDEX_TYPE std::ptrdiff_t
+#endif
+
+// Cross compiler wrapper around LLVM's __has_builtin
+#ifdef __has_builtin
+#  define EIGEN_HAS_BUILTIN(x) __has_builtin(x)
+#else
+#  define EIGEN_HAS_BUILTIN(x) 0
+#endif
+
+// A Clang feature extension to determine compiler features.
+// We use it to determine 'cxx_rvalue_references'
+#ifndef __has_feature
+# define __has_feature(x) 0
+#endif
+
+// Upperbound on the C++ version to use.
+// Expected values are 03, 11, 14, 17, etc.
+// By default, let's use an arbitrarily large C++ version.
+#ifndef EIGEN_MAX_CPP_VER
+#define EIGEN_MAX_CPP_VER 99
+#endif
+
+#if EIGEN_MAX_CPP_VER>=11 && (defined(__cplusplus) && (__cplusplus >= 201103L) || EIGEN_COMP_MSVC >= 1900)
+#define EIGEN_HAS_CXX11 1
+#else
+#define EIGEN_HAS_CXX11 0
+#endif
+
+
+// Do we support r-value references?
+#ifndef EIGEN_HAS_RVALUE_REFERENCES
+#if EIGEN_MAX_CPP_VER>=11 && \
+    (__has_feature(cxx_rvalue_references) || \
+    (defined(__cplusplus) && __cplusplus >= 201103L) || \
+    (EIGEN_COMP_MSVC >= 1600))
+  #define EIGEN_HAS_RVALUE_REFERENCES 1
+#else
+  #define EIGEN_HAS_RVALUE_REFERENCES 0
+#endif
+#endif
+
+// Does the compiler support C99?
+#ifndef EIGEN_HAS_C99_MATH
+#if EIGEN_MAX_CPP_VER>=11 && \
+    ((defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901))       \
+  || (defined(__GNUC__) && defined(_GLIBCXX_USE_C99)) \
+  || (defined(_LIBCPP_VERSION) && !defined(_MSC_VER)) \
+  || (EIGEN_COMP_MSVC >= 1900) )
+  #define EIGEN_HAS_C99_MATH 1
+#else
+  #define EIGEN_HAS_C99_MATH 0
+#endif
+#endif
+
+// Does the compiler support result_of?
+#ifndef EIGEN_HAS_STD_RESULT_OF
+#if EIGEN_MAX_CPP_VER>=11 && ((__has_feature(cxx_lambdas) || (defined(__cplusplus) && __cplusplus >= 201103L)))
+#define EIGEN_HAS_STD_RESULT_OF 1
+#else
+#define EIGEN_HAS_STD_RESULT_OF 0
+#endif
+#endif
+
+// Does the compiler support type_traits?
+// - full support of type traits was added only to GCC 5.1.0.
+// - 20150626 corresponds to the last release of 4.x libstdc++
+#ifndef EIGEN_HAS_TYPE_TRAITS
+#if EIGEN_MAX_CPP_VER>=11 && (EIGEN_HAS_CXX11 || EIGEN_COMP_MSVC >= 1700) \
+  && ((!EIGEN_COMP_GNUC_STRICT) || EIGEN_GNUC_AT_LEAST(5, 1)) \
+  && ((!defined(__GLIBCXX__))   || __GLIBCXX__ > 20150626)
+#define EIGEN_HAS_TYPE_TRAITS 1
+#define EIGEN_INCLUDE_TYPE_TRAITS
+#else
+#define EIGEN_HAS_TYPE_TRAITS 0
+#endif
+#endif
+
+// Does the compiler support variadic templates?
+#ifndef EIGEN_HAS_VARIADIC_TEMPLATES
+#if EIGEN_MAX_CPP_VER>=11 && (__cplusplus > 199711L || EIGEN_COMP_MSVC >= 1900) \
+  && (!defined(__NVCC__) || !EIGEN_ARCH_ARM_OR_ARM64 || (EIGEN_CUDACC_VER >= 80000) )
+    // ^^ Disable the use of variadic templates when compiling with versions of nvcc older than 8.0 on ARM devices:
+    //    this prevents nvcc from crashing when compiling Eigen on Tegra X1
+#define EIGEN_HAS_VARIADIC_TEMPLATES 1
+#else
+#define EIGEN_HAS_VARIADIC_TEMPLATES 0
+#endif
+#endif
+
+// Does the compiler fully support const expressions? (as in c++14)
+#ifndef EIGEN_HAS_CONSTEXPR
+
+#ifdef __CUDACC__
+// Const expressions are supported provided that c++11 is enabled and we're using either clang or nvcc 7.5 or above
+#if EIGEN_MAX_CPP_VER>=14 && (__cplusplus > 199711L && (EIGEN_COMP_CLANG || EIGEN_CUDACC_VER >= 70500))
+  #define EIGEN_HAS_CONSTEXPR 1
+#endif
+#elif EIGEN_MAX_CPP_VER>=14 && (__has_feature(cxx_relaxed_constexpr) || (defined(__cplusplus) && __cplusplus >= 201402L) || \
+  (EIGEN_GNUC_AT_LEAST(4,8) && (__cplusplus > 199711L)))
+#define EIGEN_HAS_CONSTEXPR 1
+#endif
+
+#ifndef EIGEN_HAS_CONSTEXPR
+#define EIGEN_HAS_CONSTEXPR 0
+#endif
+
+#endif
+
+// Does the compiler support C++11 math?
+// Let's be conservative and enable the default C++11 implementation only if we are sure it exists
+#ifndef EIGEN_HAS_CXX11_MATH
+  #if EIGEN_MAX_CPP_VER>=11 && ((__cplusplus > 201103L) || (__cplusplus >= 201103L) && (EIGEN_COMP_GNUC_STRICT || EIGEN_COMP_CLANG || EIGEN_COMP_MSVC || EIGEN_COMP_ICC)  \
+      && (EIGEN_ARCH_i386_OR_x86_64) && (EIGEN_OS_GNULINUX || EIGEN_OS_WIN_STRICT || EIGEN_OS_MAC))
+    #define EIGEN_HAS_CXX11_MATH 1
+  #else
+    #define EIGEN_HAS_CXX11_MATH 0
+  #endif
+#endif
+
+// Does the compiler support proper C++11 containers?
+#ifndef EIGEN_HAS_CXX11_CONTAINERS
+  #if    EIGEN_MAX_CPP_VER>=11 && \
+         ((__cplusplus > 201103L) \
+      || ((__cplusplus >= 201103L) && (EIGEN_COMP_GNUC_STRICT || EIGEN_COMP_CLANG || EIGEN_COMP_ICC>=1400)) \
+      || EIGEN_COMP_MSVC >= 1900)
+    #define EIGEN_HAS_CXX11_CONTAINERS 1
+  #else
+    #define EIGEN_HAS_CXX11_CONTAINERS 0
+  #endif
+#endif
+
+// Does the compiler support C++11 noexcept?
+#ifndef EIGEN_HAS_CXX11_NOEXCEPT
+  #if    EIGEN_MAX_CPP_VER>=11 && \
+         (__has_feature(cxx_noexcept) \
+      || (__cplusplus > 201103L) \
+      || ((__cplusplus >= 201103L) && (EIGEN_COMP_GNUC_STRICT || EIGEN_COMP_CLANG || EIGEN_COMP_ICC>=1400)) \
+      || EIGEN_COMP_MSVC >= 1900)
+    #define EIGEN_HAS_CXX11_NOEXCEPT 1
+  #else
+    #define EIGEN_HAS_CXX11_NOEXCEPT 0
+  #endif
+#endif
+
+/** Allows to disable some optimizations which might affect the accuracy of the result.
+  * Such optimization are enabled by default, and set EIGEN_FAST_MATH to 0 to disable them.
+  * They currently include:
+  *   - single precision ArrayBase::sin() and ArrayBase::cos() for SSE and AVX vectorization.
+  */
+#ifndef EIGEN_FAST_MATH
+#define EIGEN_FAST_MATH 1
+#endif
+
+#define EIGEN_DEBUG_VAR(x) std::cerr << #x << " = " << x << std::endl;
+
+// concatenate two tokens
+#define EIGEN_CAT2(a,b) a ## b
+#define EIGEN_CAT(a,b) EIGEN_CAT2(a,b)
+
+#define EIGEN_COMMA ,
+
+// convert a token to a string
+#define EIGEN_MAKESTRING2(a) #a
+#define EIGEN_MAKESTRING(a) EIGEN_MAKESTRING2(a)
+
+// EIGEN_STRONG_INLINE is a stronger version of the inline, using __forceinline on MSVC,
+// but it still doesn't use GCC's always_inline. This is useful in (common) situations where MSVC needs forceinline
+// but GCC is still doing fine with just inline.
+#ifndef EIGEN_STRONG_INLINE
+#if EIGEN_COMP_MSVC || EIGEN_COMP_ICC
+#define EIGEN_STRONG_INLINE __forceinline
+#else
+#define EIGEN_STRONG_INLINE inline
+#endif
+#endif
+
+// EIGEN_ALWAYS_INLINE is the stronget, it has the effect of making the function inline and adding every possible
+// attribute to maximize inlining. This should only be used when really necessary: in particular,
+// it uses __attribute__((always_inline)) on GCC, which most of the time is useless and can severely harm compile times.
+// FIXME with the always_inline attribute,
+// gcc 3.4.x and 4.1 reports the following compilation error:
+//   Eval.h:91: sorry, unimplemented: inlining failed in call to 'const Eigen::Eval<Derived> Eigen::MatrixBase<Scalar, Derived>::eval() const'
+//    : function body not available
+//   See also bug 1367
+#if EIGEN_GNUC_AT_LEAST(4,2)
+#define EIGEN_ALWAYS_INLINE __attribute__((always_inline)) inline
+#else
+#define EIGEN_ALWAYS_INLINE EIGEN_STRONG_INLINE
+#endif
+
+#if EIGEN_COMP_GNUC
+#define EIGEN_DONT_INLINE __attribute__((noinline))
+#elif EIGEN_COMP_MSVC
+#define EIGEN_DONT_INLINE __declspec(noinline)
+#else
+#define EIGEN_DONT_INLINE
+#endif
+
+#if EIGEN_COMP_GNUC
+#define EIGEN_PERMISSIVE_EXPR __extension__
+#else
+#define EIGEN_PERMISSIVE_EXPR
+#endif
+
+// this macro allows to get rid of linking errors about multiply defined functions.
+//  - static is not very good because it prevents definitions from different object files to be merged.
+//           So static causes the resulting linked executable to be bloated with multiple copies of the same function.
+//  - inline is not perfect either as it unwantedly hints the compiler toward inlining the function.
+#define EIGEN_DECLARE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS
+#define EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS inline
+
+#ifdef NDEBUG
+# ifndef EIGEN_NO_DEBUG
+#  define EIGEN_NO_DEBUG
+# endif
+#endif
+
+// eigen_plain_assert is where we implement the workaround for the assert() bug in GCC <= 4.3, see bug 89
+#ifdef EIGEN_NO_DEBUG
+  #define eigen_plain_assert(x)
+#else
+  #if EIGEN_SAFE_TO_USE_STANDARD_ASSERT_MACRO
+    namespace Eigen {
+    namespace internal {
+    inline bool copy_bool(bool b) { return b; }
+    }
+    }
+    #define eigen_plain_assert(x) assert(x)
+  #else
+    // work around bug 89
+    #include <cstdlib>   // for abort
+    #include <iostream>  // for std::cerr
+
+    namespace Eigen {
+    namespace internal {
+    // trivial function copying a bool. Must be EIGEN_DONT_INLINE, so we implement it after including Eigen headers.
+    // see bug 89.
+    namespace {
+    EIGEN_DONT_INLINE bool copy_bool(bool b) { return b; }
+    }
+    inline void assert_fail(const char *condition, const char *function, const char *file, int line)
+    {
+      std::cerr << "assertion failed: " << condition << " in function " << function << " at " << file << ":" << line << std::endl;
+      abort();
+    }
+    }
+    }
+    #define eigen_plain_assert(x) \
+      do { \
+        if(!Eigen::internal::copy_bool(x)) \
+          Eigen::internal::assert_fail(EIGEN_MAKESTRING(x), __PRETTY_FUNCTION__, __FILE__, __LINE__); \
+      } while(false)
+  #endif
+#endif
+
+// eigen_assert can be overridden
+#ifndef eigen_assert
+#define eigen_assert(x) eigen_plain_assert(x)
+#endif
+
+#ifdef EIGEN_INTERNAL_DEBUGGING
+#define eigen_internal_assert(x) eigen_assert(x)
+#else
+#define eigen_internal_assert(x)
+#endif
+
+#ifdef EIGEN_NO_DEBUG
+#define EIGEN_ONLY_USED_FOR_DEBUG(x) EIGEN_UNUSED_VARIABLE(x)
+#else
+#define EIGEN_ONLY_USED_FOR_DEBUG(x)
+#endif
+
+#ifndef EIGEN_NO_DEPRECATED_WARNING
+  #if EIGEN_COMP_GNUC
+    #define EIGEN_DEPRECATED __attribute__((deprecated))
+  #elif EIGEN_COMP_MSVC
+    #define EIGEN_DEPRECATED __declspec(deprecated)
+  #else
+    #define EIGEN_DEPRECATED
+  #endif
+#else
+  #define EIGEN_DEPRECATED
+#endif
+
+#if EIGEN_COMP_GNUC
+#define EIGEN_UNUSED __attribute__((unused))
+#else
+#define EIGEN_UNUSED
+#endif
+
+// Suppresses 'unused variable' warnings.
+namespace Eigen {
+  namespace internal {
+    template<typename T> EIGEN_DEVICE_FUNC void ignore_unused_variable(const T&) {}
+  }
+}
+#define EIGEN_UNUSED_VARIABLE(var) Eigen::internal::ignore_unused_variable(var);
+
+#if !defined(EIGEN_ASM_COMMENT)
+  #if EIGEN_COMP_GNUC && (EIGEN_ARCH_i386_OR_x86_64 || EIGEN_ARCH_ARM_OR_ARM64)
+    #define EIGEN_ASM_COMMENT(X)  __asm__("#" X)
+  #else
+    #define EIGEN_ASM_COMMENT(X)
+  #endif
+#endif
+
+
+//------------------------------------------------------------------------------------------
+// Static and dynamic alignment control
+//
+// The main purpose of this section is to define EIGEN_MAX_ALIGN_BYTES and EIGEN_MAX_STATIC_ALIGN_BYTES
+// as the maximal boundary in bytes on which dynamically and statically allocated data may be alignment respectively.
+// The values of EIGEN_MAX_ALIGN_BYTES and EIGEN_MAX_STATIC_ALIGN_BYTES can be specified by the user. If not,
+// a default value is automatically computed based on architecture, compiler, and OS.
+//
+// This section also defines macros EIGEN_ALIGN_TO_BOUNDARY(N) and the shortcuts EIGEN_ALIGN{8,16,32,_MAX}
+// to be used to declare statically aligned buffers.
+//------------------------------------------------------------------------------------------
+
+
+/* EIGEN_ALIGN_TO_BOUNDARY(n) forces data to be n-byte aligned. This is used to satisfy SIMD requirements.
+ * However, we do that EVEN if vectorization (EIGEN_VECTORIZE) is disabled,
+ * so that vectorization doesn't affect binary compatibility.
+ *
+ * If we made alignment depend on whether or not EIGEN_VECTORIZE is defined, it would be impossible to link
+ * vectorized and non-vectorized code.
+ */
+#if (defined __CUDACC__)
+  #define EIGEN_ALIGN_TO_BOUNDARY(n) __align__(n)
+#elif EIGEN_COMP_GNUC || EIGEN_COMP_PGI || EIGEN_COMP_IBM || EIGEN_COMP_ARM
+  #define EIGEN_ALIGN_TO_BOUNDARY(n) __attribute__((aligned(n)))
+#elif EIGEN_COMP_MSVC
+  #define EIGEN_ALIGN_TO_BOUNDARY(n) __declspec(align(n))
+#elif EIGEN_COMP_SUNCC
+  // FIXME not sure about this one:
+  #define EIGEN_ALIGN_TO_BOUNDARY(n) __attribute__((aligned(n)))
+#else
+  #error Please tell me what is the equivalent of __attribute__((aligned(n))) for your compiler
+#endif
+
+// If the user explicitly disable vectorization, then we also disable alignment
+#if defined(EIGEN_DONT_VECTORIZE)
+  #define EIGEN_IDEAL_MAX_ALIGN_BYTES 0
+#elif defined(EIGEN_VECTORIZE_AVX512)
+  // 64 bytes static alignmeent is preferred only if really required
+  #define EIGEN_IDEAL_MAX_ALIGN_BYTES 64
+#elif defined(__AVX__)
+  // 32 bytes static alignmeent is preferred only if really required
+  #define EIGEN_IDEAL_MAX_ALIGN_BYTES 32
+#else
+  #define EIGEN_IDEAL_MAX_ALIGN_BYTES 16
+#endif
+
+
+// EIGEN_MIN_ALIGN_BYTES defines the minimal value for which the notion of explicit alignment makes sense
+#define EIGEN_MIN_ALIGN_BYTES 16
+
+// Defined the boundary (in bytes) on which the data needs to be aligned. Note
+// that unless EIGEN_ALIGN is defined and not equal to 0, the data may not be
+// aligned at all regardless of the value of this #define.
+
+#if (defined(EIGEN_DONT_ALIGN_STATICALLY) || defined(EIGEN_DONT_ALIGN))  && defined(EIGEN_MAX_STATIC_ALIGN_BYTES) && EIGEN_MAX_STATIC_ALIGN_BYTES>0
+#error EIGEN_MAX_STATIC_ALIGN_BYTES and EIGEN_DONT_ALIGN[_STATICALLY] are both defined with EIGEN_MAX_STATIC_ALIGN_BYTES!=0. Use EIGEN_MAX_STATIC_ALIGN_BYTES=0 as a synonym of EIGEN_DONT_ALIGN_STATICALLY.
+#endif
+
+// EIGEN_DONT_ALIGN_STATICALLY and EIGEN_DONT_ALIGN are deprectated
+// They imply EIGEN_MAX_STATIC_ALIGN_BYTES=0
+#if defined(EIGEN_DONT_ALIGN_STATICALLY) || defined(EIGEN_DONT_ALIGN)
+  #ifdef EIGEN_MAX_STATIC_ALIGN_BYTES
+    #undef EIGEN_MAX_STATIC_ALIGN_BYTES
+  #endif
+  #define EIGEN_MAX_STATIC_ALIGN_BYTES 0
+#endif
+
+#ifndef EIGEN_MAX_STATIC_ALIGN_BYTES
+
+  // Try to automatically guess what is the best default value for EIGEN_MAX_STATIC_ALIGN_BYTES
+
+  // 16 byte alignment is only useful for vectorization. Since it affects the ABI, we need to enable
+  // 16 byte alignment on all platforms where vectorization might be enabled. In theory we could always
+  // enable alignment, but it can be a cause of problems on some platforms, so we just disable it in
+  // certain common platform (compiler+architecture combinations) to avoid these problems.
+  // Only static alignment is really problematic (relies on nonstandard compiler extensions),
+  // try to keep heap alignment even when we have to disable static alignment.
+  #if EIGEN_COMP_GNUC && !(EIGEN_ARCH_i386_OR_x86_64 || EIGEN_ARCH_ARM_OR_ARM64 || EIGEN_ARCH_PPC || EIGEN_ARCH_IA64)
+  #define EIGEN_GCC_AND_ARCH_DOESNT_WANT_STACK_ALIGNMENT 1
+  #elif EIGEN_ARCH_ARM_OR_ARM64 && EIGEN_COMP_GNUC_STRICT && EIGEN_GNUC_AT_MOST(4, 6)
+  // Old versions of GCC on ARM, at least 4.4, were once seen to have buggy static alignment support.
+  // Not sure which version fixed it, hopefully it doesn't affect 4.7, which is still somewhat in use.
+  // 4.8 and newer seem definitely unaffected.
+  #define EIGEN_GCC_AND_ARCH_DOESNT_WANT_STACK_ALIGNMENT 1
+  #else
+  #define EIGEN_GCC_AND_ARCH_DOESNT_WANT_STACK_ALIGNMENT 0
+  #endif
+
+  // static alignment is completely disabled with GCC 3, Sun Studio, and QCC/QNX
+  #if !EIGEN_GCC_AND_ARCH_DOESNT_WANT_STACK_ALIGNMENT \
+  && !EIGEN_GCC3_OR_OLDER \
+  && !EIGEN_COMP_SUNCC \
+  && !EIGEN_OS_QNX
+    #define EIGEN_ARCH_WANTS_STACK_ALIGNMENT 1
+  #else
+    #define EIGEN_ARCH_WANTS_STACK_ALIGNMENT 0
+  #endif
+
+  #if EIGEN_ARCH_WANTS_STACK_ALIGNMENT
+    #define EIGEN_MAX_STATIC_ALIGN_BYTES EIGEN_IDEAL_MAX_ALIGN_BYTES
+  #else
+    #define EIGEN_MAX_STATIC_ALIGN_BYTES 0
+  #endif
+
+#endif
+
+// If EIGEN_MAX_ALIGN_BYTES is defined, then it is considered as an upper bound for EIGEN_MAX_ALIGN_BYTES
+#if defined(EIGEN_MAX_ALIGN_BYTES) && EIGEN_MAX_ALIGN_BYTES<EIGEN_MAX_STATIC_ALIGN_BYTES
+#undef EIGEN_MAX_STATIC_ALIGN_BYTES
+#define EIGEN_MAX_STATIC_ALIGN_BYTES EIGEN_MAX_ALIGN_BYTES
+#endif
+
+#if EIGEN_MAX_STATIC_ALIGN_BYTES==0 && !defined(EIGEN_DISABLE_UNALIGNED_ARRAY_ASSERT)
+  #define EIGEN_DISABLE_UNALIGNED_ARRAY_ASSERT
+#endif
+
+// At this stage, EIGEN_MAX_STATIC_ALIGN_BYTES>0 is the true test whether we want to align arrays on the stack or not.
+// It takes into account both the user choice to explicitly enable/disable alignment (by settting EIGEN_MAX_STATIC_ALIGN_BYTES)
+// and the architecture config (EIGEN_ARCH_WANTS_STACK_ALIGNMENT).
+// Henceforth, only EIGEN_MAX_STATIC_ALIGN_BYTES should be used.
+
+
+// Shortcuts to EIGEN_ALIGN_TO_BOUNDARY
+#define EIGEN_ALIGN8  EIGEN_ALIGN_TO_BOUNDARY(8)
+#define EIGEN_ALIGN16 EIGEN_ALIGN_TO_BOUNDARY(16)
+#define EIGEN_ALIGN32 EIGEN_ALIGN_TO_BOUNDARY(32)
+#define EIGEN_ALIGN64 EIGEN_ALIGN_TO_BOUNDARY(64)
+#if EIGEN_MAX_STATIC_ALIGN_BYTES>0
+#define EIGEN_ALIGN_MAX EIGEN_ALIGN_TO_BOUNDARY(EIGEN_MAX_STATIC_ALIGN_BYTES)
+#else
+#define EIGEN_ALIGN_MAX
+#endif
+
+
+// Dynamic alignment control
+
+#if defined(EIGEN_DONT_ALIGN) && defined(EIGEN_MAX_ALIGN_BYTES) && EIGEN_MAX_ALIGN_BYTES>0
+#error EIGEN_MAX_ALIGN_BYTES and EIGEN_DONT_ALIGN are both defined with EIGEN_MAX_ALIGN_BYTES!=0. Use EIGEN_MAX_ALIGN_BYTES=0 as a synonym of EIGEN_DONT_ALIGN.
+#endif
+
+#ifdef EIGEN_DONT_ALIGN
+  #ifdef EIGEN_MAX_ALIGN_BYTES
+    #undef EIGEN_MAX_ALIGN_BYTES
+  #endif
+  #define EIGEN_MAX_ALIGN_BYTES 0
+#elif !defined(EIGEN_MAX_ALIGN_BYTES)
+  #define EIGEN_MAX_ALIGN_BYTES EIGEN_IDEAL_MAX_ALIGN_BYTES
+#endif
+
+#if EIGEN_IDEAL_MAX_ALIGN_BYTES > EIGEN_MAX_ALIGN_BYTES
+#define EIGEN_DEFAULT_ALIGN_BYTES EIGEN_IDEAL_MAX_ALIGN_BYTES
+#else
+#define EIGEN_DEFAULT_ALIGN_BYTES EIGEN_MAX_ALIGN_BYTES
+#endif
+
+
+#ifndef EIGEN_UNALIGNED_VECTORIZE
+#define EIGEN_UNALIGNED_VECTORIZE 1
+#endif
+
+//----------------------------------------------------------------------
+
+
+#ifdef EIGEN_DONT_USE_RESTRICT_KEYWORD
+  #define EIGEN_RESTRICT
+#endif
+#ifndef EIGEN_RESTRICT
+  #define EIGEN_RESTRICT __restrict
+#endif
+
+#ifndef EIGEN_STACK_ALLOCATION_LIMIT
+// 131072 == 128 KB
+#define EIGEN_STACK_ALLOCATION_LIMIT 131072
+#endif
+
+#ifndef EIGEN_DEFAULT_IO_FORMAT
+#ifdef EIGEN_MAKING_DOCS
+// format used in Eigen's documentation
+// needed to define it here as escaping characters in CMake add_definition's argument seems very problematic.
+#define EIGEN_DEFAULT_IO_FORMAT Eigen::IOFormat(3, 0, " ", "\n", "", "")
+#else
+#define EIGEN_DEFAULT_IO_FORMAT Eigen::IOFormat()
+#endif
+#endif
+
+// just an empty macro !
+#define EIGEN_EMPTY
+
+#if EIGEN_COMP_MSVC_STRICT && (EIGEN_COMP_MSVC < 1900 || EIGEN_CUDACC_VER>0)
+  // for older MSVC versions, as well as 1900 && CUDA 8, using the base operator is sufficient (cf Bugs 1000, 1324)
+  #define EIGEN_INHERIT_ASSIGNMENT_EQUAL_OPERATOR(Derived) \
+    using Base::operator =;
+#elif EIGEN_COMP_CLANG // workaround clang bug (see http://forum.kde.org/viewtopic.php?f=74&t=102653)
+  #define EIGEN_INHERIT_ASSIGNMENT_EQUAL_OPERATOR(Derived) \
+    using Base::operator =; \
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived& operator=(const Derived& other) { Base::operator=(other); return *this; } \
+    template <typename OtherDerived> \
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived& operator=(const DenseBase<OtherDerived>& other) { Base::operator=(other.derived()); return *this; }
+#else
+  #define EIGEN_INHERIT_ASSIGNMENT_EQUAL_OPERATOR(Derived) \
+    using Base::operator =; \
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived& operator=(const Derived& other) \
+    { \
+      Base::operator=(other); \
+      return *this; \
+    }
+#endif
+
+
+/**
+ * \internal
+ * \brief Macro to explicitly define the default copy constructor.
+ * This is necessary, because the implicit definition is deprecated if the copy-assignment is overridden.
+ */
+#if EIGEN_HAS_CXX11
+#define EIGEN_DEFAULT_COPY_CONSTRUCTOR(CLASS) EIGEN_DEVICE_FUNC CLASS(const CLASS&) = default;
+#else
+#define EIGEN_DEFAULT_COPY_CONSTRUCTOR(CLASS)
+#endif
+
+
+
+/** \internal
+ * \brief Macro to manually inherit assignment operators.
+ * This is necessary, because the implicitly defined assignment operator gets deleted when a custom operator= is defined.
+ * With C++11 or later this also default-implements the copy-constructor
+ */
+#define EIGEN_INHERIT_ASSIGNMENT_OPERATORS(Derived)  \
+    EIGEN_INHERIT_ASSIGNMENT_EQUAL_OPERATOR(Derived) \
+    EIGEN_DEFAULT_COPY_CONSTRUCTOR(Derived)
+
+/** \internal
+ * \brief Macro to manually define default constructors and destructors.
+ * This is necessary when the copy constructor is re-defined.
+ * For empty helper classes this should usually be protected, to avoid accidentally creating empty objects.
+ *
+ * Hiding the default destructor lead to problems in C++03 mode together with boost::multiprecision
+ */
+#if EIGEN_HAS_CXX11
+#define EIGEN_DEFAULT_EMPTY_CONSTRUCTOR_AND_DESTRUCTOR(Derived)  \
+    EIGEN_DEVICE_FUNC Derived() = default; \
+    EIGEN_DEVICE_FUNC ~Derived() = default;
+#else
+#define EIGEN_DEFAULT_EMPTY_CONSTRUCTOR_AND_DESTRUCTOR(Derived)  \
+    EIGEN_DEVICE_FUNC Derived() {}; \
+    /* EIGEN_DEVICE_FUNC ~Derived() {}; */
+#endif
+
+
+
+
+
+/**
+* Just a side note. Commenting within defines works only by documenting
+* behind the object (via '!<'). Comments cannot be multi-line and thus
+* we have these extra long lines. What is confusing doxygen over here is
+* that we use '\' and basically have a bunch of typedefs with their
+* documentation in a single line.
+**/
+
+#define EIGEN_GENERIC_PUBLIC_INTERFACE(Derived) \
+  typedef typename Eigen::internal::traits<Derived>::Scalar Scalar; /*!< \brief Numeric type, e.g. float, double, int or std::complex<float>. */ \
+  typedef typename Eigen::NumTraits<Scalar>::Real RealScalar; /*!< \brief The underlying numeric type for composed scalar types. \details In cases where Scalar is e.g. std::complex<T>, T were corresponding to RealScalar. */ \
+  typedef typename Base::CoeffReturnType CoeffReturnType; /*!< \brief The return type for coefficient access. \details Depending on whether the object allows direct coefficient access (e.g. for a MatrixXd), this type is either 'const Scalar&' or simply 'Scalar' for objects that do not allow direct coefficient access. */ \
+  typedef typename Eigen::internal::ref_selector<Derived>::type Nested; \
+  typedef typename Eigen::internal::traits<Derived>::StorageKind StorageKind; \
+  typedef typename Eigen::internal::traits<Derived>::StorageIndex StorageIndex; \
+  enum { RowsAtCompileTime = Eigen::internal::traits<Derived>::RowsAtCompileTime, \
+        ColsAtCompileTime = Eigen::internal::traits<Derived>::ColsAtCompileTime, \
+        Flags = Eigen::internal::traits<Derived>::Flags, \
+        SizeAtCompileTime = Base::SizeAtCompileTime, \
+        MaxSizeAtCompileTime = Base::MaxSizeAtCompileTime, \
+        IsVectorAtCompileTime = Base::IsVectorAtCompileTime }; \
+  using Base::derived; \
+  using Base::const_cast_derived;
+
+
+// FIXME Maybe the EIGEN_DENSE_PUBLIC_INTERFACE could be removed as importing PacketScalar is rarely needed
+#define EIGEN_DENSE_PUBLIC_INTERFACE(Derived) \
+  EIGEN_GENERIC_PUBLIC_INTERFACE(Derived) \
+  typedef typename Base::PacketScalar PacketScalar;
+
+
+#define EIGEN_PLAIN_ENUM_MIN(a,b) (((int)a <= (int)b) ? (int)a : (int)b)
+#define EIGEN_PLAIN_ENUM_MAX(a,b) (((int)a >= (int)b) ? (int)a : (int)b)
+
+// EIGEN_SIZE_MIN_PREFER_DYNAMIC gives the min between compile-time sizes. 0 has absolute priority, followed by 1,
+// followed by Dynamic, followed by other finite values. The reason for giving Dynamic the priority over
+// finite values is that min(3, Dynamic) should be Dynamic, since that could be anything between 0 and 3.
+#define EIGEN_SIZE_MIN_PREFER_DYNAMIC(a,b) (((int)a == 0 || (int)b == 0) ? 0 \
+                           : ((int)a == 1 || (int)b == 1) ? 1 \
+                           : ((int)a == Dynamic || (int)b == Dynamic) ? Dynamic \
+                           : ((int)a <= (int)b) ? (int)a : (int)b)
+
+// EIGEN_SIZE_MIN_PREFER_FIXED is a variant of EIGEN_SIZE_MIN_PREFER_DYNAMIC comparing MaxSizes. The difference is that finite values
+// now have priority over Dynamic, so that min(3, Dynamic) gives 3. Indeed, whatever the actual value is
+// (between 0 and 3), it is not more than 3.
+#define EIGEN_SIZE_MIN_PREFER_FIXED(a,b)  (((int)a == 0 || (int)b == 0) ? 0 \
+                           : ((int)a == 1 || (int)b == 1) ? 1 \
+                           : ((int)a == Dynamic && (int)b == Dynamic) ? Dynamic \
+                           : ((int)a == Dynamic) ? (int)b \
+                           : ((int)b == Dynamic) ? (int)a \
+                           : ((int)a <= (int)b) ? (int)a : (int)b)
+
+// see EIGEN_SIZE_MIN_PREFER_DYNAMIC. No need for a separate variant for MaxSizes here.
+#define EIGEN_SIZE_MAX(a,b) (((int)a == Dynamic || (int)b == Dynamic) ? Dynamic \
+                           : ((int)a >= (int)b) ? (int)a : (int)b)
+
+#define EIGEN_LOGICAL_XOR(a,b) (((a) || (b)) && !((a) && (b)))
+
+#define EIGEN_IMPLIES(a,b) (!(a) || (b))
+
+// the expression type of a standard coefficient wise binary operation
+#define EIGEN_CWISE_BINARY_RETURN_TYPE(LHS,RHS,OPNAME) \
+    CwiseBinaryOp< \
+      EIGEN_CAT(EIGEN_CAT(internal::scalar_,OPNAME),_op)< \
+          typename internal::traits<LHS>::Scalar, \
+          typename internal::traits<RHS>::Scalar \
+      >, \
+      const LHS, \
+      const RHS \
+    >
+
+#define EIGEN_MAKE_CWISE_BINARY_OP(METHOD,OPNAME) \
+  template<typename OtherDerived> \
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const EIGEN_CWISE_BINARY_RETURN_TYPE(Derived,OtherDerived,OPNAME) \
+  (METHOD)(const EIGEN_CURRENT_STORAGE_BASE_CLASS<OtherDerived> &other) const \
+  { \
+    return EIGEN_CWISE_BINARY_RETURN_TYPE(Derived,OtherDerived,OPNAME)(derived(), other.derived()); \
+  }
+
+#define EIGEN_SCALAR_BINARY_SUPPORTED(OPNAME,TYPEA,TYPEB) \
+  (Eigen::internal::has_ReturnType<Eigen::ScalarBinaryOpTraits<TYPEA,TYPEB,EIGEN_CAT(EIGEN_CAT(Eigen::internal::scalar_,OPNAME),_op)<TYPEA,TYPEB>  > >::value)
+
+#define EIGEN_EXPR_BINARYOP_SCALAR_RETURN_TYPE(EXPR,SCALAR,OPNAME) \
+  CwiseBinaryOp<EIGEN_CAT(EIGEN_CAT(internal::scalar_,OPNAME),_op)<typename internal::traits<EXPR>::Scalar,SCALAR>, const EXPR, \
+                const typename internal::plain_constant_type<EXPR,SCALAR>::type>
+
+#define EIGEN_SCALAR_BINARYOP_EXPR_RETURN_TYPE(SCALAR,EXPR,OPNAME) \
+  CwiseBinaryOp<EIGEN_CAT(EIGEN_CAT(internal::scalar_,OPNAME),_op)<SCALAR,typename internal::traits<EXPR>::Scalar>, \
+                const typename internal::plain_constant_type<EXPR,SCALAR>::type, const EXPR>
+
+// Workaround for MSVC 2010 (see ML thread "patch with compile for for MSVC 2010")
+#if EIGEN_COMP_MSVC_STRICT<=1600
+#define EIGEN_MSVC10_WORKAROUND_BINARYOP_RETURN_TYPE(X) typename internal::enable_if<true,X>::type
+#else
+#define EIGEN_MSVC10_WORKAROUND_BINARYOP_RETURN_TYPE(X) X
+#endif
+
+#define EIGEN_MAKE_SCALAR_BINARY_OP_ONTHERIGHT(METHOD,OPNAME) \
+  template <typename T> EIGEN_DEVICE_FUNC inline \
+  EIGEN_MSVC10_WORKAROUND_BINARYOP_RETURN_TYPE(const EIGEN_EXPR_BINARYOP_SCALAR_RETURN_TYPE(Derived,typename internal::promote_scalar_arg<Scalar EIGEN_COMMA T EIGEN_COMMA EIGEN_SCALAR_BINARY_SUPPORTED(OPNAME,Scalar,T)>::type,OPNAME))\
+  (METHOD)(const T& scalar) const { \
+    typedef typename internal::promote_scalar_arg<Scalar,T,EIGEN_SCALAR_BINARY_SUPPORTED(OPNAME,Scalar,T)>::type PromotedT; \
+    return EIGEN_EXPR_BINARYOP_SCALAR_RETURN_TYPE(Derived,PromotedT,OPNAME)(derived(), \
+           typename internal::plain_constant_type<Derived,PromotedT>::type(derived().rows(), derived().cols(), internal::scalar_constant_op<PromotedT>(scalar))); \
+  }
+
+#define EIGEN_MAKE_SCALAR_BINARY_OP_ONTHELEFT(METHOD,OPNAME) \
+  template <typename T> EIGEN_DEVICE_FUNC inline friend \
+  EIGEN_MSVC10_WORKAROUND_BINARYOP_RETURN_TYPE(const EIGEN_SCALAR_BINARYOP_EXPR_RETURN_TYPE(typename internal::promote_scalar_arg<Scalar EIGEN_COMMA T EIGEN_COMMA EIGEN_SCALAR_BINARY_SUPPORTED(OPNAME,T,Scalar)>::type,Derived,OPNAME)) \
+  (METHOD)(const T& scalar, const StorageBaseType& matrix) { \
+    typedef typename internal::promote_scalar_arg<Scalar,T,EIGEN_SCALAR_BINARY_SUPPORTED(OPNAME,T,Scalar)>::type PromotedT; \
+    return EIGEN_SCALAR_BINARYOP_EXPR_RETURN_TYPE(PromotedT,Derived,OPNAME)( \
+           typename internal::plain_constant_type<Derived,PromotedT>::type(matrix.derived().rows(), matrix.derived().cols(), internal::scalar_constant_op<PromotedT>(scalar)), matrix.derived()); \
+  }
+
+#define EIGEN_MAKE_SCALAR_BINARY_OP(METHOD,OPNAME) \
+  EIGEN_MAKE_SCALAR_BINARY_OP_ONTHELEFT(METHOD,OPNAME) \
+  EIGEN_MAKE_SCALAR_BINARY_OP_ONTHERIGHT(METHOD,OPNAME)
+
+
+#ifdef EIGEN_EXCEPTIONS
+#  define EIGEN_THROW_X(X) throw X
+#  define EIGEN_THROW throw
+#  define EIGEN_TRY try
+#  define EIGEN_CATCH(X) catch (X)
+#else
+#  ifdef __CUDA_ARCH__
+#    define EIGEN_THROW_X(X) asm("trap;")
+#    define EIGEN_THROW asm("trap;")
+#  else
+#    define EIGEN_THROW_X(X) std::abort()
+#    define EIGEN_THROW std::abort()
+#  endif
+#  define EIGEN_TRY if (true)
+#  define EIGEN_CATCH(X) else
+#endif
+
+
+#if EIGEN_HAS_CXX11_NOEXCEPT
+#   define EIGEN_INCLUDE_TYPE_TRAITS
+#   define EIGEN_NOEXCEPT noexcept
+#   define EIGEN_NOEXCEPT_IF(x) noexcept(x)
+#   define EIGEN_NO_THROW noexcept(true)
+#   define EIGEN_EXCEPTION_SPEC(X) noexcept(false)
+#else
+#   define EIGEN_NOEXCEPT
+#   define EIGEN_NOEXCEPT_IF(x)
+#   define EIGEN_NO_THROW throw()
+#   if EIGEN_COMP_MSVC
+      // MSVC does not support exception specifications (warning C4290),
+      // and they are deprecated in c++11 anyway.
+#     define EIGEN_EXCEPTION_SPEC(X) throw()
+#   else
+#     define EIGEN_EXCEPTION_SPEC(X) throw(X)
+#   endif
+#endif
+
+#endif // EIGEN_MACROS_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/util/DisableStupidWarnings.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/util/DisableStupidWarnings.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/util/DisableStupidWarnings.h	(revision 3762)
@@ -0,0 +1,95 @@
+#ifndef EIGEN_WARNINGS_DISABLED
+#define EIGEN_WARNINGS_DISABLED
+
+#ifdef _MSC_VER
+  // 4100 - unreferenced formal parameter (occurred e.g. in aligned_allocator::destroy(pointer p))
+  // 4101 - unreferenced local variable
+  // 4181 - qualifier applied to reference type ignored
+  // 4211 - nonstandard extension used : redefined extern to static
+  // 4244 - 'argument' : conversion from 'type1' to 'type2', possible loss of data
+  // 4273 - QtAlignedMalloc, inconsistent DLL linkage
+  // 4324 - structure was padded due to declspec(align())
+  // 4503 - decorated name length exceeded, name was truncated
+  // 4512 - assignment operator could not be generated
+  // 4522 - 'class' : multiple assignment operators specified
+  // 4700 - uninitialized local variable 'xyz' used
+  // 4714 - function marked as __forceinline not inlined
+  // 4717 - 'function' : recursive on all control paths, function will cause runtime stack overflow
+  // 4800 - 'type' : forcing value to bool 'true' or 'false' (performance warning)
+  #ifndef EIGEN_PERMANENTLY_DISABLE_STUPID_WARNINGS
+    #pragma warning( push )
+  #endif
+  #pragma warning( disable : 4100 4101 4181 4211 4244 4273 4324 4503 4512 4522 4700 4714 4717 4800)
+
+#elif defined __INTEL_COMPILER
+  // 2196 - routine is both "inline" and "noinline" ("noinline" assumed)
+  //        ICC 12 generates this warning even without any inline keyword, when defining class methods 'inline' i.e. inside of class body
+  //        typedef that may be a reference type.
+  // 279  - controlling expression is constant
+  //        ICC 12 generates this warning on assert(constant_expression_depending_on_template_params) and frankly this is a legitimate use case.
+  // 1684 - conversion from pointer to same-sized integral type (potential portability problem)
+  // 2259 - non-pointer conversion from "Eigen::Index={ptrdiff_t={long}}" to "int" may lose significant bits
+  #ifndef EIGEN_PERMANENTLY_DISABLE_STUPID_WARNINGS
+    #pragma warning push
+  #endif
+  #pragma warning disable 2196 279 1684 2259
+
+#elif defined __clang__
+  // -Wconstant-logical-operand - warning: use of logical && with constant operand; switch to bitwise & or remove constant
+  //     this is really a stupid warning as it warns on compile-time expressions involving enums
+  //#ifndef EIGEN_PERMANENTLY_DISABLE_STUPID_WARNINGS
+  //  #pragma clang diagnostic push
+  //#endif
+  //#pragma clang diagnostic ignored "-Wconstant-logical-operand"
+
+#elif defined __GNUC__
+
+  // #if (!defined(EIGEN_PERMANENTLY_DISABLE_STUPID_WARNINGS)) &&  (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))
+  //   #pragma GCC diagnostic push
+  // #endif
+  // // g++ warns about local variables shadowing member functions, which is too strict
+  // #pragma GCC diagnostic ignored "-Wshadow"
+  // #if __GNUC__ == 4 && __GNUC_MINOR__ < 8
+  //   // Until g++-4.7 there are warnings when comparing unsigned int vs 0, even in templated functions:
+  //   #pragma GCC diagnostic ignored "-Wtype-limits"
+  // #endif
+  // #if __GNUC__>=6
+  //   #pragma GCC diagnostic ignored "-Wignored-attributes"
+  // #endif
+  // #if __GNUC__==7
+  //   // See: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89325
+  //   #pragma GCC diagnostic ignored "-Wattributes"
+  // #endif
+#endif
+
+#if defined __NVCC__
+  #pragma diag_suppress boolean_controlling_expr_is_constant
+  // Disable the "statement is unreachable" message
+  #pragma diag_suppress code_is_unreachable
+  // Disable the "dynamic initialization in unreachable code" message
+  #pragma diag_suppress initialization_not_reachable
+  // Disable the "invalid error number" message that we get with older versions of nvcc
+  #pragma diag_suppress 1222
+  // Disable the "calling a __host__ function from a __host__ __device__ function is not allowed" messages (yes, there are many of them and they seem to change with every version of the compiler)
+  #pragma diag_suppress 2527
+  #pragma diag_suppress 2529
+  #pragma diag_suppress 2651
+  #pragma diag_suppress 2653
+  #pragma diag_suppress 2668
+  #pragma diag_suppress 2669
+  #pragma diag_suppress 2670
+  #pragma diag_suppress 2671
+  #pragma diag_suppress 2735
+  #pragma diag_suppress 2737
+  #pragma diag_suppress 2739
+#endif
+
+#else
+// warnings already disabled:
+# ifndef EIGEN_WARNINGS_DISABLED_2
+#  define EIGEN_WARNINGS_DISABLED_2
+# elif defined(EIGEN_INTERNAL_DEBUGGING)
+#  error "Do not include \"DisableStupidWarnings.h\" recursively more than twice!"
+# endif
+
+#endif // not EIGEN_WARNINGS_DISABLED
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/util/NonMPL2.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/util/NonMPL2.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/util/NonMPL2.h	(revision 3762)
@@ -0,0 +1,3 @@
+#ifdef EIGEN_MPL2_ONLY
+#error Including non-MPL2 code in EIGEN_MPL2_ONLY mode
+#endif
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/util/Meta.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/util/Meta.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/util/Meta.h	(revision 3762)
@@ -0,0 +1,568 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2008-2015 Gael Guennebaud <gael.guennebaud@inria.fr>
+// Copyright (C) 2006-2008 Benoit Jacob <jacob.benoit.1@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_META_H
+#define EIGEN_META_H
+
+#if defined(__CUDA_ARCH__)
+#include <cfloat>
+#include <math_constants.h>
+#endif
+
+#if EIGEN_COMP_ICC>=1600 &&  __cplusplus >= 201103L
+#include <cstdint>
+#endif
+
+namespace Eigen {
+
+typedef EIGEN_DEFAULT_DENSE_INDEX_TYPE DenseIndex;
+
+/**
+ * \brief The Index type as used for the API.
+ * \details To change this, \c \#define the preprocessor symbol \c EIGEN_DEFAULT_DENSE_INDEX_TYPE.
+ * \sa \blank \ref TopicPreprocessorDirectives, StorageIndex.
+ */
+
+typedef EIGEN_DEFAULT_DENSE_INDEX_TYPE Index;
+
+namespace internal {
+
+/** \internal
+  * \file Meta.h
+  * This file contains generic metaprogramming classes which are not specifically related to Eigen.
+  * \note In case you wonder, yes we're aware that Boost already provides all these features,
+  * we however don't want to add a dependency to Boost.
+  */
+
+// Only recent versions of ICC complain about using ptrdiff_t to hold pointers,
+// and older versions do not provide *intptr_t types.
+#if EIGEN_COMP_ICC>=1600 &&  __cplusplus >= 201103L
+typedef std::intptr_t  IntPtr;
+typedef std::uintptr_t UIntPtr;
+#else
+typedef std::ptrdiff_t IntPtr;
+typedef std::size_t UIntPtr;
+#endif
+
+struct true_type {  enum { value = 1 }; };
+struct false_type { enum { value = 0 }; };
+
+template<bool Condition, typename Then, typename Else>
+struct conditional { typedef Then type; };
+
+template<typename Then, typename Else>
+struct conditional <false, Then, Else> { typedef Else type; };
+
+template<typename T, typename U> struct is_same { enum { value = 0 }; };
+template<typename T> struct is_same<T,T> { enum { value = 1 }; };
+
+template<typename T> struct remove_reference { typedef T type; };
+template<typename T> struct remove_reference<T&> { typedef T type; };
+
+template<typename T> struct remove_pointer { typedef T type; };
+template<typename T> struct remove_pointer<T*> { typedef T type; };
+template<typename T> struct remove_pointer<T*const> { typedef T type; };
+
+template <class T> struct remove_const { typedef T type; };
+template <class T> struct remove_const<const T> { typedef T type; };
+template <class T> struct remove_const<const T[]> { typedef T type[]; };
+template <class T, unsigned int Size> struct remove_const<const T[Size]> { typedef T type[Size]; };
+
+template<typename T> struct remove_all { typedef T type; };
+template<typename T> struct remove_all<const T>   { typedef typename remove_all<T>::type type; };
+template<typename T> struct remove_all<T const&>  { typedef typename remove_all<T>::type type; };
+template<typename T> struct remove_all<T&>        { typedef typename remove_all<T>::type type; };
+template<typename T> struct remove_all<T const*>  { typedef typename remove_all<T>::type type; };
+template<typename T> struct remove_all<T*>        { typedef typename remove_all<T>::type type; };
+
+template<typename T> struct is_arithmetic      { enum { value = false }; };
+template<> struct is_arithmetic<float>         { enum { value = true }; };
+template<> struct is_arithmetic<double>        { enum { value = true }; };
+template<> struct is_arithmetic<long double>   { enum { value = true }; };
+template<> struct is_arithmetic<bool>          { enum { value = true }; };
+template<> struct is_arithmetic<char>          { enum { value = true }; };
+template<> struct is_arithmetic<signed char>   { enum { value = true }; };
+template<> struct is_arithmetic<unsigned char> { enum { value = true }; };
+template<> struct is_arithmetic<signed short>  { enum { value = true }; };
+template<> struct is_arithmetic<unsigned short>{ enum { value = true }; };
+template<> struct is_arithmetic<signed int>    { enum { value = true }; };
+template<> struct is_arithmetic<unsigned int>  { enum { value = true }; };
+template<> struct is_arithmetic<signed long>   { enum { value = true }; };
+template<> struct is_arithmetic<unsigned long> { enum { value = true }; };
+
+#if EIGEN_HAS_CXX11
+using std::is_integral;
+#else
+template<typename T> struct is_integral        { enum { value = false }; };
+template<> struct is_integral<bool>            { enum { value = true }; };
+template<> struct is_integral<char>            { enum { value = true }; };
+template<> struct is_integral<signed char>     { enum { value = true }; };
+template<> struct is_integral<unsigned char>   { enum { value = true }; };
+template<> struct is_integral<signed short>    { enum { value = true }; };
+template<> struct is_integral<unsigned short>  { enum { value = true }; };
+template<> struct is_integral<signed int>      { enum { value = true }; };
+template<> struct is_integral<unsigned int>    { enum { value = true }; };
+template<> struct is_integral<signed long>     { enum { value = true }; };
+template<> struct is_integral<unsigned long>   { enum { value = true }; };
+#if EIGEN_COMP_MSVC
+template<> struct is_integral<signed __int64>  { enum { value = true }; };
+template<> struct is_integral<unsigned __int64>{ enum { value = true }; };
+#endif
+#endif
+
+#if EIGEN_HAS_CXX11
+using std::make_unsigned;
+#else
+// TODO: Possibly improve this implementation of make_unsigned.
+// It is currently used only by
+// template<typename Scalar> struct random_default_impl<Scalar, false, true>.
+template<typename> struct make_unsigned;
+template<> struct make_unsigned<char>             { typedef unsigned char type; };
+template<> struct make_unsigned<signed char>      { typedef unsigned char type; };
+template<> struct make_unsigned<unsigned char>    { typedef unsigned char type; };
+template<> struct make_unsigned<signed short>     { typedef unsigned short type; };
+template<> struct make_unsigned<unsigned short>   { typedef unsigned short type; };
+template<> struct make_unsigned<signed int>       { typedef unsigned int type; };
+template<> struct make_unsigned<unsigned int>     { typedef unsigned int type; };
+template<> struct make_unsigned<signed long>      { typedef unsigned long type; };
+template<> struct make_unsigned<unsigned long>    { typedef unsigned long type; };
+#if EIGEN_COMP_MSVC
+template<> struct make_unsigned<signed __int64>   { typedef unsigned __int64 type; };
+template<> struct make_unsigned<unsigned __int64> { typedef unsigned __int64 type; };
+#endif
+#endif
+
+template <typename T> struct add_const { typedef const T type; };
+template <typename T> struct add_const<T&> { typedef T& type; };
+
+template <typename T> struct is_const { enum { value = 0 }; };
+template <typename T> struct is_const<T const> { enum { value = 1 }; };
+
+template<typename T> struct add_const_on_value_type            { typedef const T type;  };
+template<typename T> struct add_const_on_value_type<T&>        { typedef T const& type; };
+template<typename T> struct add_const_on_value_type<T*>        { typedef T const* type; };
+template<typename T> struct add_const_on_value_type<T* const>  { typedef T const* const type; };
+template<typename T> struct add_const_on_value_type<T const* const>  { typedef T const* const type; };
+
+
+template<typename From, typename To>
+struct is_convertible_impl
+{
+private:
+  struct any_conversion
+  {
+    template <typename T> any_conversion(const volatile T&);
+    template <typename T> any_conversion(T&);
+  };
+  struct yes {int a[1];};
+  struct no  {int a[2];};
+
+  static yes test(const To&, int);
+  static no  test(any_conversion, ...);
+
+public:
+  static From ms_from;
+#ifdef __INTEL_COMPILER
+  #pragma warning push
+  #pragma warning ( disable : 2259 )
+#endif
+  enum { value = sizeof(test(ms_from, 0))==sizeof(yes) };
+#ifdef __INTEL_COMPILER
+  #pragma warning pop
+#endif
+};
+
+template<typename From, typename To>
+struct is_convertible
+{
+  enum { value = is_convertible_impl<typename remove_all<From>::type,
+                                     typename remove_all<To  >::type>::value };
+};
+
+/** \internal Allows to enable/disable an overload
+  * according to a compile time condition.
+  */
+template<bool Condition, typename T=void> struct enable_if;
+
+template<typename T> struct enable_if<true,T>
+{ typedef T type; };
+
+#if defined(__CUDA_ARCH__)
+#if !defined(__FLT_EPSILON__)
+#define __FLT_EPSILON__ FLT_EPSILON
+#define __DBL_EPSILON__ DBL_EPSILON
+#endif
+
+namespace device {
+
+template<typename T> struct numeric_limits
+{
+  EIGEN_DEVICE_FUNC
+  static T epsilon() { return 0; }
+  static T (max)() { assert(false && "Highest not supported for this type"); }
+  static T (min)() { assert(false && "Lowest not supported for this type"); }
+  static T infinity() { assert(false && "Infinity not supported for this type"); }
+  static T quiet_NaN() { assert(false && "quiet_NaN not supported for this type"); }
+};
+template<> struct numeric_limits<float>
+{
+  EIGEN_DEVICE_FUNC
+  static float epsilon() { return __FLT_EPSILON__; }
+  EIGEN_DEVICE_FUNC
+  static float (max)() { return CUDART_MAX_NORMAL_F; }
+  EIGEN_DEVICE_FUNC
+  static float (min)() { return FLT_MIN; }
+  EIGEN_DEVICE_FUNC
+  static float infinity() { return CUDART_INF_F; }
+  EIGEN_DEVICE_FUNC
+  static float quiet_NaN() { return CUDART_NAN_F; }
+};
+template<> struct numeric_limits<double>
+{
+  EIGEN_DEVICE_FUNC
+  static double epsilon() { return __DBL_EPSILON__; }
+  EIGEN_DEVICE_FUNC
+  static double (max)() { return DBL_MAX; }
+  EIGEN_DEVICE_FUNC
+  static double (min)() { return DBL_MIN; }
+  EIGEN_DEVICE_FUNC
+  static double infinity() { return CUDART_INF; }
+  EIGEN_DEVICE_FUNC
+  static double quiet_NaN() { return CUDART_NAN; }
+};
+template<> struct numeric_limits<int>
+{
+  EIGEN_DEVICE_FUNC
+  static int epsilon() { return 0; }
+  EIGEN_DEVICE_FUNC
+  static int (max)() { return INT_MAX; }
+  EIGEN_DEVICE_FUNC
+  static int (min)() { return INT_MIN; }
+};
+template<> struct numeric_limits<unsigned int>
+{
+  EIGEN_DEVICE_FUNC
+  static unsigned int epsilon() { return 0; }
+  EIGEN_DEVICE_FUNC
+  static unsigned int (max)() { return UINT_MAX; }
+  EIGEN_DEVICE_FUNC
+  static unsigned int (min)() { return 0; }
+};
+template<> struct numeric_limits<long>
+{
+  EIGEN_DEVICE_FUNC
+  static long epsilon() { return 0; }
+  EIGEN_DEVICE_FUNC
+  static long (max)() { return LONG_MAX; }
+  EIGEN_DEVICE_FUNC
+  static long (min)() { return LONG_MIN; }
+};
+template<> struct numeric_limits<unsigned long>
+{
+  EIGEN_DEVICE_FUNC
+  static unsigned long epsilon() { return 0; }
+  EIGEN_DEVICE_FUNC
+  static unsigned long (max)() { return ULONG_MAX; }
+  EIGEN_DEVICE_FUNC
+  static unsigned long (min)() { return 0; }
+};
+template<> struct numeric_limits<long long>
+{
+  EIGEN_DEVICE_FUNC
+  static long long epsilon() { return 0; }
+  EIGEN_DEVICE_FUNC
+  static long long (max)() { return LLONG_MAX; }
+  EIGEN_DEVICE_FUNC
+  static long long (min)() { return LLONG_MIN; }
+};
+template<> struct numeric_limits<unsigned long long>
+{
+  EIGEN_DEVICE_FUNC
+  static unsigned long long epsilon() { return 0; }
+  EIGEN_DEVICE_FUNC
+  static unsigned long long (max)() { return ULLONG_MAX; }
+  EIGEN_DEVICE_FUNC
+  static unsigned long long (min)() { return 0; }
+};
+
+}
+
+#endif
+
+/** \internal
+  * A base class do disable default copy ctor and copy assignement operator.
+  */
+class noncopyable
+{
+  EIGEN_DEVICE_FUNC noncopyable(const noncopyable&);
+  EIGEN_DEVICE_FUNC const noncopyable& operator=(const noncopyable&);
+protected:
+  EIGEN_DEVICE_FUNC noncopyable() {}
+  EIGEN_DEVICE_FUNC ~noncopyable() {}
+};
+
+/** \internal
+  * Convenient struct to get the result type of a unary or binary functor.
+  *
+  * It supports both the current STL mechanism (using the result_type member) as well as
+  * upcoming next STL generation (using a templated result member).
+  * If none of these members is provided, then the type of the first argument is returned. FIXME, that behavior is a pretty bad hack.
+  */
+#if EIGEN_HAS_STD_RESULT_OF
+template<typename T> struct result_of {
+  typedef typename std::result_of<T>::type type1;
+  typedef typename remove_all<type1>::type type;
+};
+#else
+template<typename T> struct result_of { };
+
+struct has_none {int a[1];};
+struct has_std_result_type {int a[2];};
+struct has_tr1_result {int a[3];};
+
+template<typename Func, typename ArgType, int SizeOf=sizeof(has_none)>
+struct unary_result_of_select {typedef typename internal::remove_all<ArgType>::type type;};
+
+template<typename Func, typename ArgType>
+struct unary_result_of_select<Func, ArgType, sizeof(has_std_result_type)> {typedef typename Func::result_type type;};
+
+template<typename Func, typename ArgType>
+struct unary_result_of_select<Func, ArgType, sizeof(has_tr1_result)> {typedef typename Func::template result<Func(ArgType)>::type type;};
+
+template<typename Func, typename ArgType>
+struct result_of<Func(ArgType)> {
+    template<typename T>
+    static has_std_result_type    testFunctor(T const *, typename T::result_type const * = 0);
+    template<typename T>
+    static has_tr1_result         testFunctor(T const *, typename T::template result<T(ArgType)>::type const * = 0);
+    static has_none               testFunctor(...);
+
+    // note that the following indirection is needed for gcc-3.3
+    enum {FunctorType = sizeof(testFunctor(static_cast<Func*>(0)))};
+    typedef typename unary_result_of_select<Func, ArgType, FunctorType>::type type;
+};
+
+template<typename Func, typename ArgType0, typename ArgType1, int SizeOf=sizeof(has_none)>
+struct binary_result_of_select {typedef typename internal::remove_all<ArgType0>::type type;};
+
+template<typename Func, typename ArgType0, typename ArgType1>
+struct binary_result_of_select<Func, ArgType0, ArgType1, sizeof(has_std_result_type)>
+{typedef typename Func::result_type type;};
+
+template<typename Func, typename ArgType0, typename ArgType1>
+struct binary_result_of_select<Func, ArgType0, ArgType1, sizeof(has_tr1_result)>
+{typedef typename Func::template result<Func(ArgType0,ArgType1)>::type type;};
+
+template<typename Func, typename ArgType0, typename ArgType1>
+struct result_of<Func(ArgType0,ArgType1)> {
+    template<typename T>
+    static has_std_result_type    testFunctor(T const *, typename T::result_type const * = 0);
+    template<typename T>
+    static has_tr1_result         testFunctor(T const *, typename T::template result<T(ArgType0,ArgType1)>::type const * = 0);
+    static has_none               testFunctor(...);
+
+    // note that the following indirection is needed for gcc-3.3
+    enum {FunctorType = sizeof(testFunctor(static_cast<Func*>(0)))};
+    typedef typename binary_result_of_select<Func, ArgType0, ArgType1, FunctorType>::type type;
+};
+
+template<typename Func, typename ArgType0, typename ArgType1, typename ArgType2, int SizeOf=sizeof(has_none)>
+struct ternary_result_of_select {typedef typename internal::remove_all<ArgType0>::type type;};
+
+template<typename Func, typename ArgType0, typename ArgType1, typename ArgType2>
+struct ternary_result_of_select<Func, ArgType0, ArgType1, ArgType2, sizeof(has_std_result_type)>
+{typedef typename Func::result_type type;};
+
+template<typename Func, typename ArgType0, typename ArgType1, typename ArgType2>
+struct ternary_result_of_select<Func, ArgType0, ArgType1, ArgType2, sizeof(has_tr1_result)>
+{typedef typename Func::template result<Func(ArgType0,ArgType1,ArgType2)>::type type;};
+
+template<typename Func, typename ArgType0, typename ArgType1, typename ArgType2>
+struct result_of<Func(ArgType0,ArgType1,ArgType2)> {
+    template<typename T>
+    static has_std_result_type    testFunctor(T const *, typename T::result_type const * = 0);
+    template<typename T>
+    static has_tr1_result         testFunctor(T const *, typename T::template result<T(ArgType0,ArgType1,ArgType2)>::type const * = 0);
+    static has_none               testFunctor(...);
+
+    // note that the following indirection is needed for gcc-3.3
+    enum {FunctorType = sizeof(testFunctor(static_cast<Func*>(0)))};
+    typedef typename ternary_result_of_select<Func, ArgType0, ArgType1, ArgType2, FunctorType>::type type;
+};
+#endif
+
+struct meta_yes { char a[1]; };
+struct meta_no  { char a[2]; };
+
+// Check whether T::ReturnType does exist
+template <typename T>
+struct has_ReturnType
+{
+  template <typename C> static meta_yes testFunctor(typename C::ReturnType const *);
+  template <typename C> static meta_no testFunctor(...);
+
+  enum { value = sizeof(testFunctor<T>(0)) == sizeof(meta_yes) };
+};
+
+template<typename T> const T* return_ptr();
+
+template <typename T, typename IndexType=Index>
+struct has_nullary_operator
+{
+  template <typename C> static meta_yes testFunctor(C const *,typename enable_if<(sizeof(return_ptr<C>()->operator()())>0)>::type * = 0);
+  static meta_no testFunctor(...);
+
+  enum { value = sizeof(testFunctor(static_cast<T*>(0))) == sizeof(meta_yes) };
+};
+
+template <typename T, typename IndexType=Index>
+struct has_unary_operator
+{
+  template <typename C> static meta_yes testFunctor(C const *,typename enable_if<(sizeof(return_ptr<C>()->operator()(IndexType(0)))>0)>::type * = 0);
+  static meta_no testFunctor(...);
+
+  enum { value = sizeof(testFunctor(static_cast<T*>(0))) == sizeof(meta_yes) };
+};
+
+template <typename T, typename IndexType=Index>
+struct has_binary_operator
+{
+  template <typename C> static meta_yes testFunctor(C const *,typename enable_if<(sizeof(return_ptr<C>()->operator()(IndexType(0),IndexType(0)))>0)>::type * = 0);
+  static meta_no testFunctor(...);
+
+  enum { value = sizeof(testFunctor(static_cast<T*>(0))) == sizeof(meta_yes) };
+};
+
+/** \internal In short, it computes int(sqrt(\a Y)) with \a Y an integer.
+  * Usage example: \code meta_sqrt<1023>::ret \endcode
+  */
+template<int Y,
+         int InfX = 0,
+         int SupX = ((Y==1) ? 1 : Y/2),
+         bool Done = ((SupX-InfX)<=1 ? true : ((SupX*SupX <= Y) && ((SupX+1)*(SupX+1) > Y))) >
+                                // use ?: instead of || just to shut up a stupid gcc 4.3 warning
+class meta_sqrt
+{
+    enum {
+      MidX = (InfX+SupX)/2,
+      TakeInf = MidX*MidX > Y ? 1 : 0,
+      NewInf = int(TakeInf) ? InfX : int(MidX),
+      NewSup = int(TakeInf) ? int(MidX) : SupX
+    };
+  public:
+    enum { ret = meta_sqrt<Y,NewInf,NewSup>::ret };
+};
+
+template<int Y, int InfX, int SupX>
+class meta_sqrt<Y, InfX, SupX, true> { public:  enum { ret = (SupX*SupX <= Y) ? SupX : InfX }; };
+
+
+/** \internal Computes the least common multiple of two positive integer A and B
+  * at compile-time. It implements a naive algorithm testing all multiples of A.
+  * It thus works better if A>=B.
+  */
+template<int A, int B, int K=1, bool Done = ((A*K)%B)==0>
+struct meta_least_common_multiple
+{
+  enum { ret = meta_least_common_multiple<A,B,K+1>::ret };
+};
+template<int A, int B, int K>
+struct meta_least_common_multiple<A,B,K,true>
+{
+  enum { ret = A*K };
+};
+
+/** \internal determines whether the product of two numeric types is allowed and what the return type is */
+template<typename T, typename U> struct scalar_product_traits
+{
+  enum { Defined = 0 };
+};
+
+// FIXME quick workaround around current limitation of result_of
+// template<typename Scalar, typename ArgType0, typename ArgType1>
+// struct result_of<scalar_product_op<Scalar>(ArgType0,ArgType1)> {
+// typedef typename scalar_product_traits<typename remove_all<ArgType0>::type, typename remove_all<ArgType1>::type>::ReturnType type;
+// };
+
+} // end namespace internal
+
+namespace numext {
+  
+#if defined(__CUDA_ARCH__)
+template<typename T> EIGEN_DEVICE_FUNC   void swap(T &a, T &b) { T tmp = b; b = a; a = tmp; }
+#else
+template<typename T> EIGEN_STRONG_INLINE void swap(T &a, T &b) { std::swap(a,b); }
+#endif
+
+#if defined(__CUDA_ARCH__)
+using internal::device::numeric_limits;
+#else
+using std::numeric_limits;
+#endif
+
+// Integer division with rounding up.
+// T is assumed to be an integer type with a>=0, and b>0
+template<typename T>
+T div_ceil(const T &a, const T &b)
+{
+  return (a+b-1) / b;
+}
+
+// The aim of the following functions is to bypass -Wfloat-equal warnings
+// when we really want a strict equality comparison on floating points.
+template<typename X, typename Y> EIGEN_STRONG_INLINE
+bool equal_strict(const X& x,const Y& y) { return x == y; }
+
+template<> EIGEN_STRONG_INLINE
+bool equal_strict(const float& x,const float& y) { return std::equal_to<float>()(x,y); }
+
+template<> EIGEN_STRONG_INLINE
+bool equal_strict(const double& x,const double& y) { return std::equal_to<double>()(x,y); }
+
+template<typename X, typename Y> EIGEN_STRONG_INLINE
+bool not_equal_strict(const X& x,const Y& y) { return x != y; }
+
+template<> EIGEN_STRONG_INLINE
+bool not_equal_strict(const float& x,const float& y) { return std::not_equal_to<float>()(x,y); }
+
+template<> EIGEN_STRONG_INLINE
+bool not_equal_strict(const double& x,const double& y) { return std::not_equal_to<double>()(x,y); }
+
+} // end namespace numext
+
+} // end namespace Eigen
+
+// Define portable (u)int{32,64} types
+#if EIGEN_HAS_CXX11
+#include <cstdint>
+namespace Eigen {
+namespace numext {
+typedef std::uint32_t uint32_t;
+typedef std::int32_t  int32_t;
+typedef std::uint64_t uint64_t;
+typedef std::int64_t  int64_t;
+}
+}
+#else
+// Without c++11, all compilers able to compile Eigen also
+// provides the C99 stdint.h header file.
+#include <stdint.h>
+namespace Eigen {
+namespace numext {
+typedef ::uint32_t uint32_t;
+typedef ::int32_t  int32_t;
+typedef ::uint64_t uint64_t;
+typedef ::int64_t  int64_t;
+}
+}
+#endif
+
+
+#endif // EIGEN_META_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/util/Memory.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/util/Memory.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/util/Memory.h	(revision 3762)
@@ -0,0 +1,993 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2008-2015 Gael Guennebaud <gael.guennebaud@inria.fr>
+// Copyright (C) 2008-2009 Benoit Jacob <jacob.benoit.1@gmail.com>
+// Copyright (C) 2009 Kenneth Riddile <kfriddile@yahoo.com>
+// Copyright (C) 2010 Hauke Heibel <hauke.heibel@gmail.com>
+// Copyright (C) 2010 Thomas Capricelli <orzel@freehackers.org>
+// Copyright (C) 2013 Pavel Holoborodko <pavel@holoborodko.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+/*****************************************************************************
+*** Platform checks for aligned malloc functions                           ***
+*****************************************************************************/
+
+#ifndef EIGEN_MEMORY_H
+#define EIGEN_MEMORY_H
+
+#ifndef EIGEN_MALLOC_ALREADY_ALIGNED
+
+// Try to determine automatically if malloc is already aligned.
+
+// On 64-bit systems, glibc's malloc returns 16-byte-aligned pointers, see:
+//   http://www.gnu.org/s/libc/manual/html_node/Aligned-Memory-Blocks.html
+// This is true at least since glibc 2.8.
+// This leaves the question how to detect 64-bit. According to this document,
+//   http://gcc.fyxm.net/summit/2003/Porting%20to%2064%20bit.pdf
+// page 114, "[The] LP64 model [...] is used by all 64-bit UNIX ports" so it's indeed
+// quite safe, at least within the context of glibc, to equate 64-bit with LP64.
+#if defined(__GLIBC__) && ((__GLIBC__>=2 && __GLIBC_MINOR__ >= 8) || __GLIBC__>2) \
+ && defined(__LP64__) && ! defined( __SANITIZE_ADDRESS__ ) && (EIGEN_DEFAULT_ALIGN_BYTES == 16)
+  #define EIGEN_GLIBC_MALLOC_ALREADY_ALIGNED 1
+#else
+  #define EIGEN_GLIBC_MALLOC_ALREADY_ALIGNED 0
+#endif
+
+// FreeBSD 6 seems to have 16-byte aligned malloc
+//   See http://svn.freebsd.org/viewvc/base/stable/6/lib/libc/stdlib/malloc.c?view=markup
+// FreeBSD 7 seems to have 16-byte aligned malloc except on ARM and MIPS architectures
+//   See http://svn.freebsd.org/viewvc/base/stable/7/lib/libc/stdlib/malloc.c?view=markup
+#if defined(__FreeBSD__) && !(EIGEN_ARCH_ARM || EIGEN_ARCH_MIPS) && (EIGEN_DEFAULT_ALIGN_BYTES == 16)
+  #define EIGEN_FREEBSD_MALLOC_ALREADY_ALIGNED 1
+#else
+  #define EIGEN_FREEBSD_MALLOC_ALREADY_ALIGNED 0
+#endif
+
+#if (EIGEN_OS_MAC && (EIGEN_DEFAULT_ALIGN_BYTES == 16))     \
+ || (EIGEN_OS_WIN64 && (EIGEN_DEFAULT_ALIGN_BYTES == 16))   \
+ || EIGEN_GLIBC_MALLOC_ALREADY_ALIGNED              \
+ || EIGEN_FREEBSD_MALLOC_ALREADY_ALIGNED
+  #define EIGEN_MALLOC_ALREADY_ALIGNED 1
+#else
+  #define EIGEN_MALLOC_ALREADY_ALIGNED 0
+#endif
+
+#endif
+
+namespace Eigen {
+
+namespace internal {
+
+EIGEN_DEVICE_FUNC 
+inline void throw_std_bad_alloc()
+{
+  #ifdef EIGEN_EXCEPTIONS
+    throw std::bad_alloc();
+  #else
+    std::size_t huge = static_cast<std::size_t>(-1);
+    ::operator new(huge);
+  #endif
+}
+
+/*****************************************************************************
+*** Implementation of handmade aligned functions                           ***
+*****************************************************************************/
+
+/* ----- Hand made implementations of aligned malloc/free and realloc ----- */
+
+/** \internal Like malloc, but the returned pointer is guaranteed to be 16-byte aligned.
+  * Fast, but wastes 16 additional bytes of memory. Does not throw any exception.
+  */
+inline void* handmade_aligned_malloc(std::size_t size)
+{
+  void *original = std::malloc(size+EIGEN_DEFAULT_ALIGN_BYTES);
+  if (original == 0) return 0;
+  void *aligned = reinterpret_cast<void*>((reinterpret_cast<std::size_t>(original) & ~(std::size_t(EIGEN_DEFAULT_ALIGN_BYTES-1))) + EIGEN_DEFAULT_ALIGN_BYTES);
+  *(reinterpret_cast<void**>(aligned) - 1) = original;
+  return aligned;
+}
+
+/** \internal Frees memory allocated with handmade_aligned_malloc */
+inline void handmade_aligned_free(void *ptr)
+{
+  if (ptr) std::free(*(reinterpret_cast<void**>(ptr) - 1));
+}
+
+/** \internal
+  * \brief Reallocates aligned memory.
+  * Since we know that our handmade version is based on std::malloc
+  * we can use std::realloc to implement efficient reallocation.
+  */
+inline void* handmade_aligned_realloc(void* ptr, std::size_t size, std::size_t = 0)
+{
+  if (ptr == 0) return handmade_aligned_malloc(size);
+  void *original = *(reinterpret_cast<void**>(ptr) - 1);
+  std::ptrdiff_t previous_offset = static_cast<char *>(ptr)-static_cast<char *>(original);
+  original = std::realloc(original,size+EIGEN_DEFAULT_ALIGN_BYTES);
+  if (original == 0) return 0;
+  void *aligned = reinterpret_cast<void*>((reinterpret_cast<std::size_t>(original) & ~(std::size_t(EIGEN_DEFAULT_ALIGN_BYTES-1))) + EIGEN_DEFAULT_ALIGN_BYTES);
+  void *previous_aligned = static_cast<char *>(original)+previous_offset;
+  if(aligned!=previous_aligned)
+    std::memmove(aligned, previous_aligned, size);
+  
+  *(reinterpret_cast<void**>(aligned) - 1) = original;
+  return aligned;
+}
+
+/*****************************************************************************
+*** Implementation of portable aligned versions of malloc/free/realloc     ***
+*****************************************************************************/
+
+#ifdef EIGEN_NO_MALLOC
+EIGEN_DEVICE_FUNC inline void check_that_malloc_is_allowed()
+{
+  eigen_assert(false && "heap allocation is forbidden (EIGEN_NO_MALLOC is defined)");
+}
+#elif defined EIGEN_RUNTIME_NO_MALLOC
+EIGEN_DEVICE_FUNC inline bool is_malloc_allowed_impl(bool update, bool new_value = false)
+{
+  static bool value = true;
+  if (update == 1)
+    value = new_value;
+  return value;
+}
+EIGEN_DEVICE_FUNC inline bool is_malloc_allowed() { return is_malloc_allowed_impl(false); }
+EIGEN_DEVICE_FUNC inline bool set_is_malloc_allowed(bool new_value) { return is_malloc_allowed_impl(true, new_value); }
+EIGEN_DEVICE_FUNC inline void check_that_malloc_is_allowed()
+{
+  eigen_assert(is_malloc_allowed() && "heap allocation is forbidden (EIGEN_RUNTIME_NO_MALLOC is defined and g_is_malloc_allowed is false)");
+}
+#else 
+EIGEN_DEVICE_FUNC inline void check_that_malloc_is_allowed()
+{}
+#endif
+
+/** \internal Allocates \a size bytes. The returned pointer is guaranteed to have 16 or 32 bytes alignment depending on the requirements.
+  * On allocation error, the returned pointer is null, and std::bad_alloc is thrown.
+  */
+EIGEN_DEVICE_FUNC inline void* aligned_malloc(std::size_t size)
+{
+  check_that_malloc_is_allowed();
+
+  void *result;
+  #if (EIGEN_DEFAULT_ALIGN_BYTES==0) || EIGEN_MALLOC_ALREADY_ALIGNED
+    result = std::malloc(size);
+    #if EIGEN_DEFAULT_ALIGN_BYTES==16
+    eigen_assert((size<16 || (std::size_t(result)%16)==0) && "System's malloc returned an unaligned pointer. Compile with EIGEN_MALLOC_ALREADY_ALIGNED=0 to fallback to handmade alignd memory allocator.");
+    #endif
+  #else
+    result = handmade_aligned_malloc(size);
+  #endif
+
+  if(!result && size)
+    throw_std_bad_alloc();
+
+  return result;
+}
+
+/** \internal Frees memory allocated with aligned_malloc. */
+EIGEN_DEVICE_FUNC inline void aligned_free(void *ptr)
+{
+  #if (EIGEN_DEFAULT_ALIGN_BYTES==0) || EIGEN_MALLOC_ALREADY_ALIGNED
+    std::free(ptr);
+  #else
+    handmade_aligned_free(ptr);
+  #endif
+}
+
+/**
+  * \internal
+  * \brief Reallocates an aligned block of memory.
+  * \throws std::bad_alloc on allocation failure
+  */
+inline void* aligned_realloc(void *ptr, std::size_t new_size, std::size_t old_size)
+{
+  EIGEN_UNUSED_VARIABLE(old_size);
+
+  void *result;
+#if (EIGEN_DEFAULT_ALIGN_BYTES==0) || EIGEN_MALLOC_ALREADY_ALIGNED
+  result = std::realloc(ptr,new_size);
+#else
+  result = handmade_aligned_realloc(ptr,new_size,old_size);
+#endif
+
+  if (!result && new_size)
+    throw_std_bad_alloc();
+
+  return result;
+}
+
+/*****************************************************************************
+*** Implementation of conditionally aligned functions                      ***
+*****************************************************************************/
+
+/** \internal Allocates \a size bytes. If Align is true, then the returned ptr is 16-byte-aligned.
+  * On allocation error, the returned pointer is null, and a std::bad_alloc is thrown.
+  */
+template<bool Align> EIGEN_DEVICE_FUNC inline void* conditional_aligned_malloc(std::size_t size)
+{
+  return aligned_malloc(size);
+}
+
+template<> EIGEN_DEVICE_FUNC inline void* conditional_aligned_malloc<false>(std::size_t size)
+{
+  check_that_malloc_is_allowed();
+
+  void *result = std::malloc(size);
+  if(!result && size)
+    throw_std_bad_alloc();
+  return result;
+}
+
+/** \internal Frees memory allocated with conditional_aligned_malloc */
+template<bool Align> EIGEN_DEVICE_FUNC inline void conditional_aligned_free(void *ptr)
+{
+  aligned_free(ptr);
+}
+
+template<> EIGEN_DEVICE_FUNC inline void conditional_aligned_free<false>(void *ptr)
+{
+  std::free(ptr);
+}
+
+template<bool Align> inline void* conditional_aligned_realloc(void* ptr, std::size_t new_size, std::size_t old_size)
+{
+  return aligned_realloc(ptr, new_size, old_size);
+}
+
+template<> inline void* conditional_aligned_realloc<false>(void* ptr, std::size_t new_size, std::size_t)
+{
+  return std::realloc(ptr, new_size);
+}
+
+/*****************************************************************************
+*** Construction/destruction of array elements                             ***
+*****************************************************************************/
+
+/** \internal Destructs the elements of an array.
+  * The \a size parameters tells on how many objects to call the destructor of T.
+  */
+template<typename T> EIGEN_DEVICE_FUNC inline void destruct_elements_of_array(T *ptr, std::size_t size)
+{
+  // always destruct an array starting from the end.
+  if(ptr)
+    while(size) ptr[--size].~T();
+}
+
+/** \internal Constructs the elements of an array.
+  * The \a size parameter tells on how many objects to call the constructor of T.
+  */
+template<typename T> EIGEN_DEVICE_FUNC inline T* construct_elements_of_array(T *ptr, std::size_t size)
+{
+  std::size_t i;
+  EIGEN_TRY
+  {
+      for (i = 0; i < size; ++i) ::new (ptr + i) T;
+      return ptr;
+  }
+  EIGEN_CATCH(...)
+  {
+    destruct_elements_of_array(ptr, i);
+    EIGEN_THROW;
+  }
+  return NULL;
+}
+
+/*****************************************************************************
+*** Implementation of aligned new/delete-like functions                    ***
+*****************************************************************************/
+
+template<typename T>
+EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE void check_size_for_overflow(std::size_t size)
+{
+  if(size > std::size_t(-1) / sizeof(T))
+    throw_std_bad_alloc();
+}
+
+/** \internal Allocates \a size objects of type T. The returned pointer is guaranteed to have 16 bytes alignment.
+  * On allocation error, the returned pointer is undefined, but a std::bad_alloc is thrown.
+  * The default constructor of T is called.
+  */
+template<typename T> EIGEN_DEVICE_FUNC inline T* aligned_new(std::size_t size)
+{
+  check_size_for_overflow<T>(size);
+  T *result = reinterpret_cast<T*>(aligned_malloc(sizeof(T)*size));
+  EIGEN_TRY
+  {
+    return construct_elements_of_array(result, size);
+  }
+  EIGEN_CATCH(...)
+  {
+    aligned_free(result);
+    EIGEN_THROW;
+  }
+  return result;
+}
+
+template<typename T, bool Align> EIGEN_DEVICE_FUNC inline T* conditional_aligned_new(std::size_t size)
+{
+  check_size_for_overflow<T>(size);
+  T *result = reinterpret_cast<T*>(conditional_aligned_malloc<Align>(sizeof(T)*size));
+  EIGEN_TRY
+  {
+    return construct_elements_of_array(result, size);
+  }
+  EIGEN_CATCH(...)
+  {
+    conditional_aligned_free<Align>(result);
+    EIGEN_THROW;
+  }
+  return result;
+}
+
+/** \internal Deletes objects constructed with aligned_new
+  * The \a size parameters tells on how many objects to call the destructor of T.
+  */
+template<typename T> EIGEN_DEVICE_FUNC inline void aligned_delete(T *ptr, std::size_t size)
+{
+  destruct_elements_of_array<T>(ptr, size);
+  aligned_free(ptr);
+}
+
+/** \internal Deletes objects constructed with conditional_aligned_new
+  * The \a size parameters tells on how many objects to call the destructor of T.
+  */
+template<typename T, bool Align> EIGEN_DEVICE_FUNC inline void conditional_aligned_delete(T *ptr, std::size_t size)
+{
+  destruct_elements_of_array<T>(ptr, size);
+  conditional_aligned_free<Align>(ptr);
+}
+
+template<typename T, bool Align> EIGEN_DEVICE_FUNC inline T* conditional_aligned_realloc_new(T* pts, std::size_t new_size, std::size_t old_size)
+{
+  check_size_for_overflow<T>(new_size);
+  check_size_for_overflow<T>(old_size);
+  if(new_size < old_size)
+    destruct_elements_of_array(pts+new_size, old_size-new_size);
+  T *result = reinterpret_cast<T*>(conditional_aligned_realloc<Align>(reinterpret_cast<void*>(pts), sizeof(T)*new_size, sizeof(T)*old_size));
+  if(new_size > old_size)
+  {
+    EIGEN_TRY
+    {
+      construct_elements_of_array(result+old_size, new_size-old_size);
+    }
+    EIGEN_CATCH(...)
+    {
+      conditional_aligned_free<Align>(result);
+      EIGEN_THROW;
+    }
+  }
+  return result;
+}
+
+
+template<typename T, bool Align> EIGEN_DEVICE_FUNC inline T* conditional_aligned_new_auto(std::size_t size)
+{
+  if(size==0)
+    return 0; // short-cut. Also fixes Bug 884
+  check_size_for_overflow<T>(size);
+  T *result = reinterpret_cast<T*>(conditional_aligned_malloc<Align>(sizeof(T)*size));
+  if(NumTraits<T>::RequireInitialization)
+  {
+    EIGEN_TRY
+    {
+      construct_elements_of_array(result, size);
+    }
+    EIGEN_CATCH(...)
+    {
+      conditional_aligned_free<Align>(result);
+      EIGEN_THROW;
+    }
+  }
+  return result;
+}
+
+template<typename T, bool Align> inline T* conditional_aligned_realloc_new_auto(T* pts, std::size_t new_size, std::size_t old_size)
+{
+  check_size_for_overflow<T>(new_size);
+  check_size_for_overflow<T>(old_size);
+  if(NumTraits<T>::RequireInitialization && (new_size < old_size))
+    destruct_elements_of_array(pts+new_size, old_size-new_size);
+  T *result = reinterpret_cast<T*>(conditional_aligned_realloc<Align>(reinterpret_cast<void*>(pts), sizeof(T)*new_size, sizeof(T)*old_size));
+  if(NumTraits<T>::RequireInitialization && (new_size > old_size))
+  {
+    EIGEN_TRY
+    {
+      construct_elements_of_array(result+old_size, new_size-old_size);
+    }
+    EIGEN_CATCH(...)
+    {
+      conditional_aligned_free<Align>(result);
+      EIGEN_THROW;
+    }
+  }
+  return result;
+}
+
+template<typename T, bool Align> EIGEN_DEVICE_FUNC inline void conditional_aligned_delete_auto(T *ptr, std::size_t size)
+{
+  if(NumTraits<T>::RequireInitialization)
+    destruct_elements_of_array<T>(ptr, size);
+  conditional_aligned_free<Align>(ptr);
+}
+
+/****************************************************************************/
+
+/** \internal Returns the index of the first element of the array that is well aligned with respect to the requested \a Alignment.
+  *
+  * \tparam Alignment requested alignment in Bytes.
+  * \param array the address of the start of the array
+  * \param size the size of the array
+  *
+  * \note If no element of the array is well aligned or the requested alignment is not a multiple of a scalar,
+  * the size of the array is returned. For example with SSE, the requested alignment is typically 16-bytes. If
+  * packet size for the given scalar type is 1, then everything is considered well-aligned.
+  *
+  * \note Otherwise, if the Alignment is larger that the scalar size, we rely on the assumptions that sizeof(Scalar) is a
+  * power of 2. On the other hand, we do not assume that the array address is a multiple of sizeof(Scalar), as that fails for
+  * example with Scalar=double on certain 32-bit platforms, see bug #79.
+  *
+  * There is also the variant first_aligned(const MatrixBase&) defined in DenseCoeffsBase.h.
+  * \sa first_default_aligned()
+  */
+template<int Alignment, typename Scalar, typename Index>
+EIGEN_DEVICE_FUNC inline Index first_aligned(const Scalar* array, Index size)
+{
+  const Index ScalarSize = sizeof(Scalar);
+  const Index AlignmentSize = Alignment / ScalarSize;
+  const Index AlignmentMask = AlignmentSize-1;
+
+  if(AlignmentSize<=1)
+  {
+    // Either the requested alignment if smaller than a scalar, or it exactly match a 1 scalar
+    // so that all elements of the array have the same alignment.
+    return 0;
+  }
+  else if( (UIntPtr(array) & (sizeof(Scalar)-1)) || (Alignment%ScalarSize)!=0)
+  {
+    // The array is not aligned to the size of a single scalar, or the requested alignment is not a multiple of the scalar size.
+    // Consequently, no element of the array is well aligned.
+    return size;
+  }
+  else
+  {
+    Index first = (AlignmentSize - (Index((UIntPtr(array)/sizeof(Scalar))) & AlignmentMask)) & AlignmentMask;
+    return (first < size) ? first : size;
+  }
+}
+
+/** \internal Returns the index of the first element of the array that is well aligned with respect the largest packet requirement.
+   * \sa first_aligned(Scalar*,Index) and first_default_aligned(DenseBase<Derived>) */
+template<typename Scalar, typename Index>
+EIGEN_DEVICE_FUNC inline Index first_default_aligned(const Scalar* array, Index size)
+{
+  typedef typename packet_traits<Scalar>::type DefaultPacketType;
+  return first_aligned<unpacket_traits<DefaultPacketType>::alignment>(array, size);
+}
+
+/** \internal Returns the smallest integer multiple of \a base and greater or equal to \a size
+  */ 
+template<typename Index> 
+inline Index first_multiple(Index size, Index base)
+{
+  return ((size+base-1)/base)*base;
+}
+
+// std::copy is much slower than memcpy, so let's introduce a smart_copy which
+// use memcpy on trivial types, i.e., on types that does not require an initialization ctor.
+template<typename T, bool UseMemcpy> struct smart_copy_helper;
+
+template<typename T> EIGEN_DEVICE_FUNC void smart_copy(const T* start, const T* end, T* target)
+{
+  smart_copy_helper<T,!NumTraits<T>::RequireInitialization>::run(start, end, target);
+}
+
+template<typename T> struct smart_copy_helper<T,true> {
+  EIGEN_DEVICE_FUNC static inline void run(const T* start, const T* end, T* target)
+  {
+    IntPtr size = IntPtr(end)-IntPtr(start);
+    if(size==0) return;
+    eigen_internal_assert(start!=0 && end!=0 && target!=0);
+    std::memcpy(target, start, size);
+  }
+};
+
+template<typename T> struct smart_copy_helper<T,false> {
+  EIGEN_DEVICE_FUNC static inline void run(const T* start, const T* end, T* target)
+  { std::copy(start, end, target); }
+};
+
+// intelligent memmove. falls back to std::memmove for POD types, uses std::copy otherwise. 
+template<typename T, bool UseMemmove> struct smart_memmove_helper;
+
+template<typename T> void smart_memmove(const T* start, const T* end, T* target)
+{
+  smart_memmove_helper<T,!NumTraits<T>::RequireInitialization>::run(start, end, target);
+}
+
+template<typename T> struct smart_memmove_helper<T,true> {
+  static inline void run(const T* start, const T* end, T* target)
+  {
+    IntPtr size = IntPtr(end)-IntPtr(start);
+    if(size==0) return;
+    eigen_internal_assert(start!=0 && end!=0 && target!=0);
+    std::memmove(target, start, size);
+  }
+};
+
+template<typename T> struct smart_memmove_helper<T,false> {
+  static inline void run(const T* start, const T* end, T* target)
+  { 
+    if (UIntPtr(target) < UIntPtr(start))
+    {
+      std::copy(start, end, target);
+    }
+    else                                 
+    {
+      std::ptrdiff_t count = (std::ptrdiff_t(end)-std::ptrdiff_t(start)) / sizeof(T);
+      std::copy_backward(start, end, target + count); 
+    }
+  }
+};
+
+
+/*****************************************************************************
+*** Implementation of runtime stack allocation (falling back to malloc)    ***
+*****************************************************************************/
+
+// you can overwrite Eigen's default behavior regarding alloca by defining EIGEN_ALLOCA
+// to the appropriate stack allocation function
+#ifndef EIGEN_ALLOCA
+  #if EIGEN_OS_LINUX || EIGEN_OS_MAC || (defined alloca)
+    #define EIGEN_ALLOCA alloca
+  #elif EIGEN_COMP_MSVC
+    #define EIGEN_ALLOCA _alloca
+  #endif
+#endif
+
+// This helper class construct the allocated memory, and takes care of destructing and freeing the handled data
+// at destruction time. In practice this helper class is mainly useful to avoid memory leak in case of exceptions.
+template<typename T> class aligned_stack_memory_handler : noncopyable
+{
+  public:
+    /* Creates a stack_memory_handler responsible for the buffer \a ptr of size \a size.
+     * Note that \a ptr can be 0 regardless of the other parameters.
+     * This constructor takes care of constructing/initializing the elements of the buffer if required by the scalar type T (see NumTraits<T>::RequireInitialization).
+     * In this case, the buffer elements will also be destructed when this handler will be destructed.
+     * Finally, if \a dealloc is true, then the pointer \a ptr is freed.
+     **/
+    aligned_stack_memory_handler(T* ptr, std::size_t size, bool dealloc)
+      : m_ptr(ptr), m_size(size), m_deallocate(dealloc)
+    {
+      if(NumTraits<T>::RequireInitialization && m_ptr)
+        Eigen::internal::construct_elements_of_array(m_ptr, size);
+    }
+    ~aligned_stack_memory_handler()
+    {
+      if(NumTraits<T>::RequireInitialization && m_ptr)
+        Eigen::internal::destruct_elements_of_array<T>(m_ptr, m_size);
+      if(m_deallocate)
+        Eigen::internal::aligned_free(m_ptr);
+    }
+  protected:
+    T* m_ptr;
+    std::size_t m_size;
+    bool m_deallocate;
+};
+
+template<typename T> class scoped_array : noncopyable
+{
+  T* m_ptr;
+public:
+  explicit scoped_array(std::ptrdiff_t size)
+  {
+    m_ptr = new T[size];
+  }
+  ~scoped_array()
+  {
+    delete[] m_ptr;
+  }
+  T& operator[](std::ptrdiff_t i) { return m_ptr[i]; }
+  const T& operator[](std::ptrdiff_t i) const { return m_ptr[i]; }
+  T* &ptr() { return m_ptr; }
+  const T* ptr() const { return m_ptr; }
+  operator const T*() const { return m_ptr; }
+};
+
+template<typename T> void swap(scoped_array<T> &a,scoped_array<T> &b)
+{
+  std::swap(a.ptr(),b.ptr());
+}
+    
+} // end namespace internal
+
+/** \internal
+  * Declares, allocates and construct an aligned buffer named NAME of SIZE elements of type TYPE on the stack
+  * if SIZE is smaller than EIGEN_STACK_ALLOCATION_LIMIT, and if stack allocation is supported by the platform
+  * (currently, this is Linux and Visual Studio only). Otherwise the memory is allocated on the heap.
+  * The allocated buffer is automatically deleted when exiting the scope of this declaration.
+  * If BUFFER is non null, then the declared variable is simply an alias for BUFFER, and no allocation/deletion occurs.
+  * Here is an example:
+  * \code
+  * {
+  *   ei_declare_aligned_stack_constructed_variable(float,data,size,0);
+  *   // use data[0] to data[size-1]
+  * }
+  * \endcode
+  * The underlying stack allocation function can controlled with the EIGEN_ALLOCA preprocessor token.
+  */
+#ifdef EIGEN_ALLOCA
+  
+  #if EIGEN_DEFAULT_ALIGN_BYTES>0
+    // We always manually re-align the result of EIGEN_ALLOCA.
+    // If alloca is already aligned, the compiler should be smart enough to optimize away the re-alignment.
+    #define EIGEN_ALIGNED_ALLOCA(SIZE) reinterpret_cast<void*>((internal::UIntPtr(EIGEN_ALLOCA(SIZE+EIGEN_DEFAULT_ALIGN_BYTES-1)) + EIGEN_DEFAULT_ALIGN_BYTES-1) & ~(std::size_t(EIGEN_DEFAULT_ALIGN_BYTES-1)))
+  #else
+    #define EIGEN_ALIGNED_ALLOCA(SIZE) EIGEN_ALLOCA(SIZE)
+  #endif
+
+  #define ei_declare_aligned_stack_constructed_variable(TYPE,NAME,SIZE,BUFFER) \
+    Eigen::internal::check_size_for_overflow<TYPE>(SIZE); \
+    TYPE* NAME = (BUFFER)!=0 ? (BUFFER) \
+               : reinterpret_cast<TYPE*>( \
+                      (sizeof(TYPE)*SIZE<=EIGEN_STACK_ALLOCATION_LIMIT) ? EIGEN_ALIGNED_ALLOCA(sizeof(TYPE)*SIZE) \
+                    : Eigen::internal::aligned_malloc(sizeof(TYPE)*SIZE) );  \
+    Eigen::internal::aligned_stack_memory_handler<TYPE> EIGEN_CAT(NAME,_stack_memory_destructor)((BUFFER)==0 ? NAME : 0,SIZE,sizeof(TYPE)*SIZE>EIGEN_STACK_ALLOCATION_LIMIT)
+
+#else
+
+  #define ei_declare_aligned_stack_constructed_variable(TYPE,NAME,SIZE,BUFFER) \
+    Eigen::internal::check_size_for_overflow<TYPE>(SIZE); \
+    TYPE* NAME = (BUFFER)!=0 ? BUFFER : reinterpret_cast<TYPE*>(Eigen::internal::aligned_malloc(sizeof(TYPE)*SIZE));    \
+    Eigen::internal::aligned_stack_memory_handler<TYPE> EIGEN_CAT(NAME,_stack_memory_destructor)((BUFFER)==0 ? NAME : 0,SIZE,true)
+    
+#endif
+
+
+/*****************************************************************************
+*** Implementation of EIGEN_MAKE_ALIGNED_OPERATOR_NEW [_IF]                ***
+*****************************************************************************/
+
+#if EIGEN_MAX_ALIGN_BYTES!=0
+  #define EIGEN_MAKE_ALIGNED_OPERATOR_NEW_NOTHROW(NeedsToAlign) \
+      void* operator new(std::size_t size, const std::nothrow_t&) EIGEN_NO_THROW { \
+        EIGEN_TRY { return Eigen::internal::conditional_aligned_malloc<NeedsToAlign>(size); } \
+        EIGEN_CATCH (...) { return 0; } \
+      }
+  #define EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF(NeedsToAlign) \
+      void *operator new(std::size_t size) { \
+        return Eigen::internal::conditional_aligned_malloc<NeedsToAlign>(size); \
+      } \
+      void *operator new[](std::size_t size) { \
+        return Eigen::internal::conditional_aligned_malloc<NeedsToAlign>(size); \
+      } \
+      void operator delete(void * ptr) EIGEN_NO_THROW { Eigen::internal::conditional_aligned_free<NeedsToAlign>(ptr); } \
+      void operator delete[](void * ptr) EIGEN_NO_THROW { Eigen::internal::conditional_aligned_free<NeedsToAlign>(ptr); } \
+      void operator delete(void * ptr, std::size_t /* sz */) EIGEN_NO_THROW { Eigen::internal::conditional_aligned_free<NeedsToAlign>(ptr); } \
+      void operator delete[](void * ptr, std::size_t /* sz */) EIGEN_NO_THROW { Eigen::internal::conditional_aligned_free<NeedsToAlign>(ptr); } \
+      /* in-place new and delete. since (at least afaik) there is no actual   */ \
+      /* memory allocated we can safely let the default implementation handle */ \
+      /* this particular case. */ \
+      static void *operator new(std::size_t size, void *ptr) { return ::operator new(size,ptr); } \
+      static void *operator new[](std::size_t size, void* ptr) { return ::operator new[](size,ptr); } \
+      void operator delete(void * memory, void *ptr) EIGEN_NO_THROW { return ::operator delete(memory,ptr); } \
+      void operator delete[](void * memory, void *ptr) EIGEN_NO_THROW { return ::operator delete[](memory,ptr); } \
+      /* nothrow-new (returns zero instead of std::bad_alloc) */ \
+      EIGEN_MAKE_ALIGNED_OPERATOR_NEW_NOTHROW(NeedsToAlign) \
+      void operator delete(void *ptr, const std::nothrow_t&) EIGEN_NO_THROW { \
+        Eigen::internal::conditional_aligned_free<NeedsToAlign>(ptr); \
+      } \
+      typedef void eigen_aligned_operator_new_marker_type;
+#else
+  #define EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF(NeedsToAlign)
+#endif
+
+#define EIGEN_MAKE_ALIGNED_OPERATOR_NEW EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF(true)
+#define EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF_VECTORIZABLE_FIXED_SIZE(Scalar,Size) \
+  EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF(bool(((Size)!=Eigen::Dynamic) && ((sizeof(Scalar)*(Size))%EIGEN_MAX_ALIGN_BYTES==0)))
+
+/****************************************************************************/
+
+/** \class aligned_allocator
+* \ingroup Core_Module
+*
+* \brief STL compatible allocator to use with types requiring a non standrad alignment.
+*
+* The memory is aligned as for dynamically aligned matrix/array types such as MatrixXd.
+* By default, it will thus provide at least 16 bytes alignment and more in following cases:
+*  - 32 bytes alignment if AVX is enabled.
+*  - 64 bytes alignment if AVX512 is enabled.
+*
+* This can be controled using the \c EIGEN_MAX_ALIGN_BYTES macro as documented
+* \link TopicPreprocessorDirectivesPerformance there \endlink.
+*
+* Example:
+* \code
+* // Matrix4f requires 16 bytes alignment:
+* std::map< int, Matrix4f, std::less<int>, 
+*           aligned_allocator<std::pair<const int, Matrix4f> > > my_map_mat4;
+* // Vector3f does not require 16 bytes alignment, no need to use Eigen's allocator:
+* std::map< int, Vector3f > my_map_vec3;
+* \endcode
+*
+* \sa \blank \ref TopicStlContainers.
+*/
+template<class T>
+class aligned_allocator : public std::allocator<T>
+{
+public:
+  typedef std::size_t     size_type;
+  typedef std::ptrdiff_t  difference_type;
+  typedef T*              pointer;
+  typedef const T*        const_pointer;
+  typedef T&              reference;
+  typedef const T&        const_reference;
+  typedef T               value_type;
+
+  template<class U>
+  struct rebind
+  {
+    typedef aligned_allocator<U> other;
+  };
+
+  aligned_allocator() : std::allocator<T>() {}
+
+  aligned_allocator(const aligned_allocator& other) : std::allocator<T>(other) {}
+
+  template<class U>
+  aligned_allocator(const aligned_allocator<U>& other) : std::allocator<T>(other) {}
+
+  ~aligned_allocator() {}
+
+  pointer allocate(size_type num, const void* /*hint*/ = 0)
+  {
+    internal::check_size_for_overflow<T>(num);
+    size_type size = num * sizeof(T);
+#if EIGEN_COMP_GNUC_STRICT && EIGEN_GNUC_AT_LEAST(7,0)
+    // workaround gcc bug https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87544
+    // It triggered eigen/Eigen/src/Core/util/Memory.h:189:12: warning: argument 1 value '18446744073709551612' exceeds maximum object size 9223372036854775807
+    if(size>=std::size_t((std::numeric_limits<std::ptrdiff_t>::max)()))
+      return 0;
+    else
+#endif
+      return static_cast<pointer>( internal::aligned_malloc(size) );
+  }
+
+  void deallocate(pointer p, size_type /*num*/)
+  {
+    internal::aligned_free(p);
+  }
+};
+
+//---------- Cache sizes ----------
+
+#if !defined(EIGEN_NO_CPUID)
+#  if EIGEN_COMP_GNUC && EIGEN_ARCH_i386_OR_x86_64
+#    if defined(__PIC__) && EIGEN_ARCH_i386
+       // Case for x86 with PIC
+#      define EIGEN_CPUID(abcd,func,id) \
+         __asm__ __volatile__ ("xchgl %%ebx, %k1;cpuid; xchgl %%ebx,%k1": "=a" (abcd[0]), "=&r" (abcd[1]), "=c" (abcd[2]), "=d" (abcd[3]) : "a" (func), "c" (id));
+#    elif defined(__PIC__) && EIGEN_ARCH_x86_64
+       // Case for x64 with PIC. In theory this is only a problem with recent gcc and with medium or large code model, not with the default small code model.
+       // However, we cannot detect which code model is used, and the xchg overhead is negligible anyway.
+#      define EIGEN_CPUID(abcd,func,id) \
+        __asm__ __volatile__ ("xchg{q}\t{%%}rbx, %q1; cpuid; xchg{q}\t{%%}rbx, %q1": "=a" (abcd[0]), "=&r" (abcd[1]), "=c" (abcd[2]), "=d" (abcd[3]) : "0" (func), "2" (id));
+#    else
+       // Case for x86_64 or x86 w/o PIC
+#      define EIGEN_CPUID(abcd,func,id) \
+         __asm__ __volatile__ ("cpuid": "=a" (abcd[0]), "=b" (abcd[1]), "=c" (abcd[2]), "=d" (abcd[3]) : "0" (func), "2" (id) );
+#    endif
+#  elif EIGEN_COMP_MSVC
+#    if (EIGEN_COMP_MSVC > 1500) && EIGEN_ARCH_i386_OR_x86_64
+#      define EIGEN_CPUID(abcd,func,id) __cpuidex((int*)abcd,func,id)
+#    endif
+#  endif
+#endif
+
+namespace internal {
+
+#ifdef EIGEN_CPUID
+
+inline bool cpuid_is_vendor(int abcd[4], const int vendor[3])
+{
+  return abcd[1]==vendor[0] && abcd[3]==vendor[1] && abcd[2]==vendor[2];
+}
+
+inline void queryCacheSizes_intel_direct(int& l1, int& l2, int& l3)
+{
+  int abcd[4];
+  l1 = l2 = l3 = 0;
+  int cache_id = 0;
+  int cache_type = 0;
+  do {
+    abcd[0] = abcd[1] = abcd[2] = abcd[3] = 0;
+    EIGEN_CPUID(abcd,0x4,cache_id);
+    cache_type  = (abcd[0] & 0x0F) >> 0;
+    if(cache_type==1||cache_type==3) // data or unified cache
+    {
+      int cache_level = (abcd[0] & 0xE0) >> 5;  // A[7:5]
+      int ways        = (abcd[1] & 0xFFC00000) >> 22; // B[31:22]
+      int partitions  = (abcd[1] & 0x003FF000) >> 12; // B[21:12]
+      int line_size   = (abcd[1] & 0x00000FFF) >>  0; // B[11:0]
+      int sets        = (abcd[2]);                    // C[31:0]
+
+      int cache_size = (ways+1) * (partitions+1) * (line_size+1) * (sets+1);
+
+      switch(cache_level)
+      {
+        case 1: l1 = cache_size; break;
+        case 2: l2 = cache_size; break;
+        case 3: l3 = cache_size; break;
+        default: break;
+      }
+    }
+    cache_id++;
+  } while(cache_type>0 && cache_id<16);
+}
+
+inline void queryCacheSizes_intel_codes(int& l1, int& l2, int& l3)
+{
+  int abcd[4];
+  abcd[0] = abcd[1] = abcd[2] = abcd[3] = 0;
+  l1 = l2 = l3 = 0;
+  EIGEN_CPUID(abcd,0x00000002,0);
+  unsigned char * bytes = reinterpret_cast<unsigned char *>(abcd)+2;
+  bool check_for_p2_core2 = false;
+  for(int i=0; i<14; ++i)
+  {
+    switch(bytes[i])
+    {
+      case 0x0A: l1 = 8; break;   // 0Ah   data L1 cache, 8 KB, 2 ways, 32 byte lines
+      case 0x0C: l1 = 16; break;  // 0Ch   data L1 cache, 16 KB, 4 ways, 32 byte lines
+      case 0x0E: l1 = 24; break;  // 0Eh   data L1 cache, 24 KB, 6 ways, 64 byte lines
+      case 0x10: l1 = 16; break;  // 10h   data L1 cache, 16 KB, 4 ways, 32 byte lines (IA-64)
+      case 0x15: l1 = 16; break;  // 15h   code L1 cache, 16 KB, 4 ways, 32 byte lines (IA-64)
+      case 0x2C: l1 = 32; break;  // 2Ch   data L1 cache, 32 KB, 8 ways, 64 byte lines
+      case 0x30: l1 = 32; break;  // 30h   code L1 cache, 32 KB, 8 ways, 64 byte lines
+      case 0x60: l1 = 16; break;  // 60h   data L1 cache, 16 KB, 8 ways, 64 byte lines, sectored
+      case 0x66: l1 = 8; break;   // 66h   data L1 cache, 8 KB, 4 ways, 64 byte lines, sectored
+      case 0x67: l1 = 16; break;  // 67h   data L1 cache, 16 KB, 4 ways, 64 byte lines, sectored
+      case 0x68: l1 = 32; break;  // 68h   data L1 cache, 32 KB, 4 ways, 64 byte lines, sectored
+      case 0x1A: l2 = 96; break;   // code and data L2 cache, 96 KB, 6 ways, 64 byte lines (IA-64)
+      case 0x22: l3 = 512; break;   // code and data L3 cache, 512 KB, 4 ways (!), 64 byte lines, dual-sectored
+      case 0x23: l3 = 1024; break;   // code and data L3 cache, 1024 KB, 8 ways, 64 byte lines, dual-sectored
+      case 0x25: l3 = 2048; break;   // code and data L3 cache, 2048 KB, 8 ways, 64 byte lines, dual-sectored
+      case 0x29: l3 = 4096; break;   // code and data L3 cache, 4096 KB, 8 ways, 64 byte lines, dual-sectored
+      case 0x39: l2 = 128; break;   // code and data L2 cache, 128 KB, 4 ways, 64 byte lines, sectored
+      case 0x3A: l2 = 192; break;   // code and data L2 cache, 192 KB, 6 ways, 64 byte lines, sectored
+      case 0x3B: l2 = 128; break;   // code and data L2 cache, 128 KB, 2 ways, 64 byte lines, sectored
+      case 0x3C: l2 = 256; break;   // code and data L2 cache, 256 KB, 4 ways, 64 byte lines, sectored
+      case 0x3D: l2 = 384; break;   // code and data L2 cache, 384 KB, 6 ways, 64 byte lines, sectored
+      case 0x3E: l2 = 512; break;   // code and data L2 cache, 512 KB, 4 ways, 64 byte lines, sectored
+      case 0x40: l2 = 0; break;   // no integrated L2 cache (P6 core) or L3 cache (P4 core)
+      case 0x41: l2 = 128; break;   // code and data L2 cache, 128 KB, 4 ways, 32 byte lines
+      case 0x42: l2 = 256; break;   // code and data L2 cache, 256 KB, 4 ways, 32 byte lines
+      case 0x43: l2 = 512; break;   // code and data L2 cache, 512 KB, 4 ways, 32 byte lines
+      case 0x44: l2 = 1024; break;   // code and data L2 cache, 1024 KB, 4 ways, 32 byte lines
+      case 0x45: l2 = 2048; break;   // code and data L2 cache, 2048 KB, 4 ways, 32 byte lines
+      case 0x46: l3 = 4096; break;   // code and data L3 cache, 4096 KB, 4 ways, 64 byte lines
+      case 0x47: l3 = 8192; break;   // code and data L3 cache, 8192 KB, 8 ways, 64 byte lines
+      case 0x48: l2 = 3072; break;   // code and data L2 cache, 3072 KB, 12 ways, 64 byte lines
+      case 0x49: if(l2!=0) l3 = 4096; else {check_for_p2_core2=true; l3 = l2 = 4096;} break;// code and data L3 cache, 4096 KB, 16 ways, 64 byte lines (P4) or L2 for core2
+      case 0x4A: l3 = 6144; break;   // code and data L3 cache, 6144 KB, 12 ways, 64 byte lines
+      case 0x4B: l3 = 8192; break;   // code and data L3 cache, 8192 KB, 16 ways, 64 byte lines
+      case 0x4C: l3 = 12288; break;   // code and data L3 cache, 12288 KB, 12 ways, 64 byte lines
+      case 0x4D: l3 = 16384; break;   // code and data L3 cache, 16384 KB, 16 ways, 64 byte lines
+      case 0x4E: l2 = 6144; break;   // code and data L2 cache, 6144 KB, 24 ways, 64 byte lines
+      case 0x78: l2 = 1024; break;   // code and data L2 cache, 1024 KB, 4 ways, 64 byte lines
+      case 0x79: l2 = 128; break;   // code and data L2 cache, 128 KB, 8 ways, 64 byte lines, dual-sectored
+      case 0x7A: l2 = 256; break;   // code and data L2 cache, 256 KB, 8 ways, 64 byte lines, dual-sectored
+      case 0x7B: l2 = 512; break;   // code and data L2 cache, 512 KB, 8 ways, 64 byte lines, dual-sectored
+      case 0x7C: l2 = 1024; break;   // code and data L2 cache, 1024 KB, 8 ways, 64 byte lines, dual-sectored
+      case 0x7D: l2 = 2048; break;   // code and data L2 cache, 2048 KB, 8 ways, 64 byte lines
+      case 0x7E: l2 = 256; break;   // code and data L2 cache, 256 KB, 8 ways, 128 byte lines, sect. (IA-64)
+      case 0x7F: l2 = 512; break;   // code and data L2 cache, 512 KB, 2 ways, 64 byte lines
+      case 0x80: l2 = 512; break;   // code and data L2 cache, 512 KB, 8 ways, 64 byte lines
+      case 0x81: l2 = 128; break;   // code and data L2 cache, 128 KB, 8 ways, 32 byte lines
+      case 0x82: l2 = 256; break;   // code and data L2 cache, 256 KB, 8 ways, 32 byte lines
+      case 0x83: l2 = 512; break;   // code and data L2 cache, 512 KB, 8 ways, 32 byte lines
+      case 0x84: l2 = 1024; break;   // code and data L2 cache, 1024 KB, 8 ways, 32 byte lines
+      case 0x85: l2 = 2048; break;   // code and data L2 cache, 2048 KB, 8 ways, 32 byte lines
+      case 0x86: l2 = 512; break;   // code and data L2 cache, 512 KB, 4 ways, 64 byte lines
+      case 0x87: l2 = 1024; break;   // code and data L2 cache, 1024 KB, 8 ways, 64 byte lines
+      case 0x88: l3 = 2048; break;   // code and data L3 cache, 2048 KB, 4 ways, 64 byte lines (IA-64)
+      case 0x89: l3 = 4096; break;   // code and data L3 cache, 4096 KB, 4 ways, 64 byte lines (IA-64)
+      case 0x8A: l3 = 8192; break;   // code and data L3 cache, 8192 KB, 4 ways, 64 byte lines (IA-64)
+      case 0x8D: l3 = 3072; break;   // code and data L3 cache, 3072 KB, 12 ways, 128 byte lines (IA-64)
+
+      default: break;
+    }
+  }
+  if(check_for_p2_core2 && l2 == l3)
+    l3 = 0;
+  l1 *= 1024;
+  l2 *= 1024;
+  l3 *= 1024;
+}
+
+inline void queryCacheSizes_intel(int& l1, int& l2, int& l3, int max_std_funcs)
+{
+  if(max_std_funcs>=4)
+    queryCacheSizes_intel_direct(l1,l2,l3);
+  else
+    queryCacheSizes_intel_codes(l1,l2,l3);
+}
+
+inline void queryCacheSizes_amd(int& l1, int& l2, int& l3)
+{
+  int abcd[4];
+  abcd[0] = abcd[1] = abcd[2] = abcd[3] = 0;
+  EIGEN_CPUID(abcd,0x80000005,0);
+  l1 = (abcd[2] >> 24) * 1024; // C[31:24] = L1 size in KB
+  abcd[0] = abcd[1] = abcd[2] = abcd[3] = 0;
+  EIGEN_CPUID(abcd,0x80000006,0);
+  l2 = (abcd[2] >> 16) * 1024; // C[31;16] = l2 cache size in KB
+  l3 = ((abcd[3] & 0xFFFC000) >> 18) * 512 * 1024; // D[31;18] = l3 cache size in 512KB
+}
+#endif
+
+/** \internal
+ * Queries and returns the cache sizes in Bytes of the L1, L2, and L3 data caches respectively */
+inline void queryCacheSizes(int& l1, int& l2, int& l3)
+{
+  #ifdef EIGEN_CPUID
+  int abcd[4];
+  const int GenuineIntel[] = {0x756e6547, 0x49656e69, 0x6c65746e};
+  const int AuthenticAMD[] = {0x68747541, 0x69746e65, 0x444d4163};
+  const int AMDisbetter_[] = {0x69444d41, 0x74656273, 0x21726574}; // "AMDisbetter!"
+
+  // identify the CPU vendor
+  EIGEN_CPUID(abcd,0x0,0);
+  int max_std_funcs = abcd[1];
+  if(cpuid_is_vendor(abcd,GenuineIntel))
+    queryCacheSizes_intel(l1,l2,l3,max_std_funcs);
+  else if(cpuid_is_vendor(abcd,AuthenticAMD) || cpuid_is_vendor(abcd,AMDisbetter_))
+    queryCacheSizes_amd(l1,l2,l3);
+  else
+    // by default let's use Intel's API
+    queryCacheSizes_intel(l1,l2,l3,max_std_funcs);
+
+  // here is the list of other vendors:
+//   ||cpuid_is_vendor(abcd,"VIA VIA VIA ")
+//   ||cpuid_is_vendor(abcd,"CyrixInstead")
+//   ||cpuid_is_vendor(abcd,"CentaurHauls")
+//   ||cpuid_is_vendor(abcd,"GenuineTMx86")
+//   ||cpuid_is_vendor(abcd,"TransmetaCPU")
+//   ||cpuid_is_vendor(abcd,"RiseRiseRise")
+//   ||cpuid_is_vendor(abcd,"Geode by NSC")
+//   ||cpuid_is_vendor(abcd,"SiS SiS SiS ")
+//   ||cpuid_is_vendor(abcd,"UMC UMC UMC ")
+//   ||cpuid_is_vendor(abcd,"NexGenDriven")
+  #else
+  l1 = l2 = l3 = -1;
+  #endif
+}
+
+/** \internal
+ * \returns the size in Bytes of the L1 data cache */
+inline int queryL1CacheSize()
+{
+  int l1(-1), l2, l3;
+  queryCacheSizes(l1,l2,l3);
+  return l1;
+}
+
+/** \internal
+ * \returns the size in Bytes of the L2 or L3 cache if this later is present */
+inline int queryTopLevelCacheSize()
+{
+  int l1, l2(-1), l3(-1);
+  queryCacheSizes(l1,l2,l3);
+  return (std::max)(l2,l3);
+}
+
+} // end namespace internal
+
+} // end namespace Eigen
+
+#endif // EIGEN_MEMORY_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/util/StaticAssert.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/util/StaticAssert.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/util/StaticAssert.h	(revision 3762)
@@ -0,0 +1,218 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2008 Gael Guennebaud <gael.guennebaud@inria.fr>
+// Copyright (C) 2008 Benoit Jacob <jacob.benoit.1@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_STATIC_ASSERT_H
+#define EIGEN_STATIC_ASSERT_H
+
+/* Some notes on Eigen's static assertion mechanism:
+ *
+ *  - in EIGEN_STATIC_ASSERT(CONDITION,MSG) the parameter CONDITION must be a compile time boolean
+ *    expression, and MSG an enum listed in struct internal::static_assertion<true>
+ *
+ *  - define EIGEN_NO_STATIC_ASSERT to disable them (and save compilation time)
+ *    in that case, the static assertion is converted to the following runtime assert:
+ *      eigen_assert(CONDITION && "MSG")
+ *
+ *  - currently EIGEN_STATIC_ASSERT can only be used in function scope
+ *
+ */
+
+#ifndef EIGEN_STATIC_ASSERT
+#ifndef EIGEN_NO_STATIC_ASSERT
+
+  #if EIGEN_MAX_CPP_VER>=11 && (__has_feature(cxx_static_assert) || (defined(__cplusplus) && __cplusplus >= 201103L) || (EIGEN_COMP_MSVC >= 1600))
+
+    // if native static_assert is enabled, let's use it
+    #define EIGEN_STATIC_ASSERT(X,MSG) static_assert(X,#MSG);
+
+  #else // not CXX0X
+
+    namespace Eigen {
+
+    namespace internal {
+
+    template<bool condition>
+    struct static_assertion {};
+
+    template<>
+    struct static_assertion<true>
+    {
+      enum {
+        YOU_TRIED_CALLING_A_VECTOR_METHOD_ON_A_MATRIX=1,
+        YOU_MIXED_VECTORS_OF_DIFFERENT_SIZES=1,
+        YOU_MIXED_MATRICES_OF_DIFFERENT_SIZES=1,
+        THIS_METHOD_IS_ONLY_FOR_VECTORS_OF_A_SPECIFIC_SIZE=1,
+        THIS_METHOD_IS_ONLY_FOR_MATRICES_OF_A_SPECIFIC_SIZE=1,
+        THIS_METHOD_IS_ONLY_FOR_OBJECTS_OF_A_SPECIFIC_SIZE=1,
+        OUT_OF_RANGE_ACCESS=1,
+        YOU_MADE_A_PROGRAMMING_MISTAKE=1,
+        EIGEN_INTERNAL_ERROR_PLEASE_FILE_A_BUG_REPORT=1,
+        EIGEN_INTERNAL_COMPILATION_ERROR_OR_YOU_MADE_A_PROGRAMMING_MISTAKE=1,
+        YOU_CALLED_A_FIXED_SIZE_METHOD_ON_A_DYNAMIC_SIZE_MATRIX_OR_VECTOR=1,
+        YOU_CALLED_A_DYNAMIC_SIZE_METHOD_ON_A_FIXED_SIZE_MATRIX_OR_VECTOR=1,
+        UNALIGNED_LOAD_AND_STORE_OPERATIONS_UNIMPLEMENTED_ON_ALTIVEC=1,
+        THIS_FUNCTION_IS_NOT_FOR_INTEGER_NUMERIC_TYPES=1,
+        FLOATING_POINT_ARGUMENT_PASSED__INTEGER_WAS_EXPECTED=1,
+        NUMERIC_TYPE_MUST_BE_REAL=1,
+        COEFFICIENT_WRITE_ACCESS_TO_SELFADJOINT_NOT_SUPPORTED=1,
+        WRITING_TO_TRIANGULAR_PART_WITH_UNIT_DIAGONAL_IS_NOT_SUPPORTED=1,
+        THIS_METHOD_IS_ONLY_FOR_FIXED_SIZE=1,
+        INVALID_MATRIX_PRODUCT=1,
+        INVALID_VECTOR_VECTOR_PRODUCT__IF_YOU_WANTED_A_DOT_OR_COEFF_WISE_PRODUCT_YOU_MUST_USE_THE_EXPLICIT_FUNCTIONS=1,
+        INVALID_MATRIX_PRODUCT__IF_YOU_WANTED_A_COEFF_WISE_PRODUCT_YOU_MUST_USE_THE_EXPLICIT_FUNCTION=1,
+        YOU_MIXED_DIFFERENT_NUMERIC_TYPES__YOU_NEED_TO_USE_THE_CAST_METHOD_OF_MATRIXBASE_TO_CAST_NUMERIC_TYPES_EXPLICITLY=1,
+        THIS_METHOD_IS_ONLY_FOR_COLUMN_MAJOR_MATRICES=1,
+        THIS_METHOD_IS_ONLY_FOR_ROW_MAJOR_MATRICES=1,
+        INVALID_MATRIX_TEMPLATE_PARAMETERS=1,
+        INVALID_MATRIXBASE_TEMPLATE_PARAMETERS=1,
+        BOTH_MATRICES_MUST_HAVE_THE_SAME_STORAGE_ORDER=1,
+        THIS_METHOD_IS_ONLY_FOR_DIAGONAL_MATRIX=1,
+        THE_MATRIX_OR_EXPRESSION_THAT_YOU_PASSED_DOES_NOT_HAVE_THE_EXPECTED_TYPE=1,
+        THIS_METHOD_IS_ONLY_FOR_EXPRESSIONS_WITH_DIRECT_MEMORY_ACCESS_SUCH_AS_MAP_OR_PLAIN_MATRICES=1,
+        YOU_ALREADY_SPECIFIED_THIS_STRIDE=1,
+        INVALID_STORAGE_ORDER_FOR_THIS_VECTOR_EXPRESSION=1,
+        THE_BRACKET_OPERATOR_IS_ONLY_FOR_VECTORS__USE_THE_PARENTHESIS_OPERATOR_INSTEAD=1,
+        PACKET_ACCESS_REQUIRES_TO_HAVE_INNER_STRIDE_FIXED_TO_1=1,
+        THIS_METHOD_IS_ONLY_FOR_SPECIFIC_TRANSFORMATIONS=1,
+        YOU_CANNOT_MIX_ARRAYS_AND_MATRICES=1,
+        YOU_PERFORMED_AN_INVALID_TRANSFORMATION_CONVERSION=1,
+        THIS_EXPRESSION_IS_NOT_A_LVALUE__IT_IS_READ_ONLY=1,
+        YOU_ARE_TRYING_TO_USE_AN_INDEX_BASED_ACCESSOR_ON_AN_EXPRESSION_THAT_DOES_NOT_SUPPORT_THAT=1,
+        THIS_METHOD_IS_ONLY_FOR_1x1_EXPRESSIONS=1,
+        THIS_METHOD_IS_ONLY_FOR_INNER_OR_LAZY_PRODUCTS=1,
+        THIS_METHOD_IS_ONLY_FOR_EXPRESSIONS_OF_BOOL=1,
+        THIS_METHOD_IS_ONLY_FOR_ARRAYS_NOT_MATRICES=1,
+        YOU_PASSED_A_ROW_VECTOR_BUT_A_COLUMN_VECTOR_WAS_EXPECTED=1,
+        YOU_PASSED_A_COLUMN_VECTOR_BUT_A_ROW_VECTOR_WAS_EXPECTED=1,
+        THE_INDEX_TYPE_MUST_BE_A_SIGNED_TYPE=1,
+        THE_STORAGE_ORDER_OF_BOTH_SIDES_MUST_MATCH=1,
+        OBJECT_ALLOCATED_ON_STACK_IS_TOO_BIG=1,
+        IMPLICIT_CONVERSION_TO_SCALAR_IS_FOR_INNER_PRODUCT_ONLY=1,
+        STORAGE_LAYOUT_DOES_NOT_MATCH=1,
+        EIGEN_INTERNAL_ERROR_PLEASE_FILE_A_BUG_REPORT__INVALID_COST_VALUE=1,
+        THIS_COEFFICIENT_ACCESSOR_TAKING_ONE_ACCESS_IS_ONLY_FOR_EXPRESSIONS_ALLOWING_LINEAR_ACCESS=1,
+        MATRIX_FREE_CONJUGATE_GRADIENT_IS_COMPATIBLE_WITH_UPPER_UNION_LOWER_MODE_ONLY=1,
+        THIS_TYPE_IS_NOT_SUPPORTED=1,
+        STORAGE_KIND_MUST_MATCH=1,
+        STORAGE_INDEX_MUST_MATCH=1,
+        CHOLMOD_SUPPORTS_DOUBLE_PRECISION_ONLY=1,
+        SELFADJOINTVIEW_ACCEPTS_UPPER_AND_LOWER_MODE_ONLY=1
+      };
+    };
+
+    } // end namespace internal
+
+    } // end namespace Eigen
+
+    // Specialized implementation for MSVC to avoid "conditional
+    // expression is constant" warnings.  This implementation doesn't
+    // appear to work under GCC, hence the multiple implementations.
+    #if EIGEN_COMP_MSVC
+
+      #define EIGEN_STATIC_ASSERT(CONDITION,MSG) \
+        {Eigen::internal::static_assertion<bool(CONDITION)>::MSG;}
+
+    #else
+      // In some cases clang interprets bool(CONDITION) as function declaration
+      #define EIGEN_STATIC_ASSERT(CONDITION,MSG) \
+        if (Eigen::internal::static_assertion<static_cast<bool>(CONDITION)>::MSG) {}
+
+    #endif
+
+  #endif // not CXX0X
+
+#else // EIGEN_NO_STATIC_ASSERT
+
+  #define EIGEN_STATIC_ASSERT(CONDITION,MSG) eigen_assert((CONDITION) && #MSG);
+
+#endif // EIGEN_NO_STATIC_ASSERT
+#endif // EIGEN_STATIC_ASSERT
+
+// static assertion failing if the type \a TYPE is not a vector type
+#define EIGEN_STATIC_ASSERT_VECTOR_ONLY(TYPE) \
+  EIGEN_STATIC_ASSERT(TYPE::IsVectorAtCompileTime, \
+                      YOU_TRIED_CALLING_A_VECTOR_METHOD_ON_A_MATRIX)
+
+// static assertion failing if the type \a TYPE is not fixed-size
+#define EIGEN_STATIC_ASSERT_FIXED_SIZE(TYPE) \
+  EIGEN_STATIC_ASSERT(TYPE::SizeAtCompileTime!=Eigen::Dynamic, \
+                      YOU_CALLED_A_FIXED_SIZE_METHOD_ON_A_DYNAMIC_SIZE_MATRIX_OR_VECTOR)
+
+// static assertion failing if the type \a TYPE is not dynamic-size
+#define EIGEN_STATIC_ASSERT_DYNAMIC_SIZE(TYPE) \
+  EIGEN_STATIC_ASSERT(TYPE::SizeAtCompileTime==Eigen::Dynamic, \
+                      YOU_CALLED_A_DYNAMIC_SIZE_METHOD_ON_A_FIXED_SIZE_MATRIX_OR_VECTOR)
+
+// static assertion failing if the type \a TYPE is not a vector type of the given size
+#define EIGEN_STATIC_ASSERT_VECTOR_SPECIFIC_SIZE(TYPE, SIZE) \
+  EIGEN_STATIC_ASSERT(TYPE::IsVectorAtCompileTime && TYPE::SizeAtCompileTime==SIZE, \
+                      THIS_METHOD_IS_ONLY_FOR_VECTORS_OF_A_SPECIFIC_SIZE)
+
+// static assertion failing if the type \a TYPE is not a vector type of the given size
+#define EIGEN_STATIC_ASSERT_MATRIX_SPECIFIC_SIZE(TYPE, ROWS, COLS) \
+  EIGEN_STATIC_ASSERT(TYPE::RowsAtCompileTime==ROWS && TYPE::ColsAtCompileTime==COLS, \
+                      THIS_METHOD_IS_ONLY_FOR_MATRICES_OF_A_SPECIFIC_SIZE)
+
+// static assertion failing if the two vector expression types are not compatible (same fixed-size or dynamic size)
+#define EIGEN_STATIC_ASSERT_SAME_VECTOR_SIZE(TYPE0,TYPE1) \
+  EIGEN_STATIC_ASSERT( \
+      (int(TYPE0::SizeAtCompileTime)==Eigen::Dynamic \
+    || int(TYPE1::SizeAtCompileTime)==Eigen::Dynamic \
+    || int(TYPE0::SizeAtCompileTime)==int(TYPE1::SizeAtCompileTime)),\
+    YOU_MIXED_VECTORS_OF_DIFFERENT_SIZES)
+
+#define EIGEN_PREDICATE_SAME_MATRIX_SIZE(TYPE0,TYPE1) \
+     ( \
+        (int(Eigen::internal::size_of_xpr_at_compile_time<TYPE0>::ret)==0 && int(Eigen::internal::size_of_xpr_at_compile_time<TYPE1>::ret)==0) \
+    || (\
+          (int(TYPE0::RowsAtCompileTime)==Eigen::Dynamic \
+        || int(TYPE1::RowsAtCompileTime)==Eigen::Dynamic \
+        || int(TYPE0::RowsAtCompileTime)==int(TYPE1::RowsAtCompileTime)) \
+      &&  (int(TYPE0::ColsAtCompileTime)==Eigen::Dynamic \
+        || int(TYPE1::ColsAtCompileTime)==Eigen::Dynamic \
+        || int(TYPE0::ColsAtCompileTime)==int(TYPE1::ColsAtCompileTime))\
+       ) \
+     )
+
+#define EIGEN_STATIC_ASSERT_NON_INTEGER(TYPE) \
+    EIGEN_STATIC_ASSERT(!NumTraits<TYPE>::IsInteger, THIS_FUNCTION_IS_NOT_FOR_INTEGER_NUMERIC_TYPES)
+
+
+// static assertion failing if it is guaranteed at compile-time that the two matrix expression types have different sizes
+#define EIGEN_STATIC_ASSERT_SAME_MATRIX_SIZE(TYPE0,TYPE1) \
+  EIGEN_STATIC_ASSERT( \
+     EIGEN_PREDICATE_SAME_MATRIX_SIZE(TYPE0,TYPE1),\
+    YOU_MIXED_MATRICES_OF_DIFFERENT_SIZES)
+
+#define EIGEN_STATIC_ASSERT_SIZE_1x1(TYPE) \
+      EIGEN_STATIC_ASSERT((TYPE::RowsAtCompileTime == 1 || TYPE::RowsAtCompileTime == Dynamic) && \
+                          (TYPE::ColsAtCompileTime == 1 || TYPE::ColsAtCompileTime == Dynamic), \
+                          THIS_METHOD_IS_ONLY_FOR_1x1_EXPRESSIONS)
+
+#define EIGEN_STATIC_ASSERT_LVALUE(Derived) \
+      EIGEN_STATIC_ASSERT(Eigen::internal::is_lvalue<Derived>::value, \
+                          THIS_EXPRESSION_IS_NOT_A_LVALUE__IT_IS_READ_ONLY)
+
+#define EIGEN_STATIC_ASSERT_ARRAYXPR(Derived) \
+      EIGEN_STATIC_ASSERT((Eigen::internal::is_same<typename Eigen::internal::traits<Derived>::XprKind, ArrayXpr>::value), \
+                          THIS_METHOD_IS_ONLY_FOR_ARRAYS_NOT_MATRICES)
+
+#define EIGEN_STATIC_ASSERT_SAME_XPR_KIND(Derived1, Derived2) \
+      EIGEN_STATIC_ASSERT((Eigen::internal::is_same<typename Eigen::internal::traits<Derived1>::XprKind, \
+                                             typename Eigen::internal::traits<Derived2>::XprKind \
+                                            >::value), \
+                          YOU_CANNOT_MIX_ARRAYS_AND_MATRICES)
+
+// Check that a cost value is positive, and that is stay within a reasonable range
+// TODO this check could be enabled for internal debugging only
+#define EIGEN_INTERNAL_CHECK_COST_VALUE(C) \
+      EIGEN_STATIC_ASSERT((C)>=0 && (C)<=HugeCost*HugeCost, EIGEN_INTERNAL_ERROR_PLEASE_FILE_A_BUG_REPORT__INVALID_COST_VALUE);
+
+#endif // EIGEN_STATIC_ASSERT_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/util/XprHelper.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/util/XprHelper.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/util/XprHelper.h	(revision 3762)
@@ -0,0 +1,838 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2008 Gael Guennebaud <gael.guennebaud@inria.fr>
+// Copyright (C) 2006-2008 Benoit Jacob <jacob.benoit.1@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_XPRHELPER_H
+#define EIGEN_XPRHELPER_H
+
+// just a workaround because GCC seems to not really like empty structs
+// FIXME: gcc 4.3 generates bad code when strict-aliasing is enabled
+// so currently we simply disable this optimization for gcc 4.3
+#if EIGEN_COMP_GNUC && !EIGEN_GNUC_AT(4,3)
+  #define EIGEN_EMPTY_STRUCT_CTOR(X) \
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE X() {} \
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE X(const X& ) {}
+#else
+  #define EIGEN_EMPTY_STRUCT_CTOR(X)
+#endif
+
+namespace Eigen {
+
+namespace internal {
+
+template<typename IndexDest, typename IndexSrc>
+EIGEN_DEVICE_FUNC
+inline IndexDest convert_index(const IndexSrc& idx) {
+  // for sizeof(IndexDest)>=sizeof(IndexSrc) compilers should be able to optimize this away:
+  eigen_internal_assert(idx <= NumTraits<IndexDest>::highest() && "Index value to big for target type");
+  return IndexDest(idx);
+}
+
+// true if T can be considered as an integral index (i.e., and integral type or enum)
+template<typename T> struct is_valid_index_type
+{
+  enum { value =
+#if EIGEN_HAS_TYPE_TRAITS
+    internal::is_integral<T>::value || std::is_enum<T>::value
+#elif EIGEN_COMP_MSVC
+    internal::is_integral<T>::value || __is_enum(T)
+#else
+    // without C++11, we use is_convertible to Index instead of is_integral in order to treat enums as Index.
+    internal::is_convertible<T,Index>::value && !internal::is_same<T,float>::value && !is_same<T,double>::value
+#endif
+  };
+};
+
+// promote_scalar_arg is an helper used in operation between an expression and a scalar, like:
+//    expression * scalar
+// Its role is to determine how the type T of the scalar operand should be promoted given the scalar type ExprScalar of the given expression.
+// The IsSupported template parameter must be provided by the caller as: internal::has_ReturnType<ScalarBinaryOpTraits<ExprScalar,T,op> >::value using the proper order for ExprScalar and T.
+// Then the logic is as follows:
+//  - if the operation is natively supported as defined by IsSupported, then the scalar type is not promoted, and T is returned.
+//  - otherwise, NumTraits<ExprScalar>::Literal is returned if T is implicitly convertible to NumTraits<ExprScalar>::Literal AND that this does not imply a float to integer conversion.
+//  - otherwise, ExprScalar is returned if T is implicitly convertible to ExprScalar AND that this does not imply a float to integer conversion.
+//  - In all other cases, the promoted type is not defined, and the respective operation is thus invalid and not available (SFINAE).
+template<typename ExprScalar,typename T, bool IsSupported>
+struct promote_scalar_arg;
+
+template<typename S,typename T>
+struct promote_scalar_arg<S,T,true>
+{
+  typedef T type;
+};
+
+// Recursively check safe conversion to PromotedType, and then ExprScalar if they are different.
+template<typename ExprScalar,typename T,typename PromotedType,
+  bool ConvertibleToLiteral = internal::is_convertible<T,PromotedType>::value,
+  bool IsSafe = NumTraits<T>::IsInteger || !NumTraits<PromotedType>::IsInteger>
+struct promote_scalar_arg_unsupported;
+
+// Start recursion with NumTraits<ExprScalar>::Literal
+template<typename S,typename T>
+struct promote_scalar_arg<S,T,false> : promote_scalar_arg_unsupported<S,T,typename NumTraits<S>::Literal> {};
+
+// We found a match!
+template<typename S,typename T, typename PromotedType>
+struct promote_scalar_arg_unsupported<S,T,PromotedType,true,true>
+{
+  typedef PromotedType type;
+};
+
+// No match, but no real-to-integer issues, and ExprScalar and current PromotedType are different,
+// so let's try to promote to ExprScalar
+template<typename ExprScalar,typename T, typename PromotedType>
+struct promote_scalar_arg_unsupported<ExprScalar,T,PromotedType,false,true>
+   : promote_scalar_arg_unsupported<ExprScalar,T,ExprScalar>
+{};
+
+// Unsafe real-to-integer, let's stop.
+template<typename S,typename T, typename PromotedType, bool ConvertibleToLiteral>
+struct promote_scalar_arg_unsupported<S,T,PromotedType,ConvertibleToLiteral,false> {};
+
+// T is not even convertible to ExprScalar, let's stop.
+template<typename S,typename T>
+struct promote_scalar_arg_unsupported<S,T,S,false,true> {};
+
+//classes inheriting no_assignment_operator don't generate a default operator=.
+class no_assignment_operator
+{
+  private:
+    no_assignment_operator& operator=(const no_assignment_operator&);
+  protected:
+    EIGEN_DEFAULT_COPY_CONSTRUCTOR(no_assignment_operator)
+    EIGEN_DEFAULT_EMPTY_CONSTRUCTOR_AND_DESTRUCTOR(no_assignment_operator)
+};
+
+/** \internal return the index type with the largest number of bits */
+template<typename I1, typename I2>
+struct promote_index_type
+{
+  typedef typename conditional<(sizeof(I1)<sizeof(I2)), I2, I1>::type type;
+};
+
+/** \internal If the template parameter Value is Dynamic, this class is just a wrapper around a T variable that
+  * can be accessed using value() and setValue().
+  * Otherwise, this class is an empty structure and value() just returns the template parameter Value.
+  */
+template<typename T, int Value> class variable_if_dynamic
+{
+  public:
+    EIGEN_EMPTY_STRUCT_CTOR(variable_if_dynamic)
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE explicit variable_if_dynamic(T v) { EIGEN_ONLY_USED_FOR_DEBUG(v); eigen_assert(v == T(Value)); }
+    EIGEN_DEVICE_FUNC static EIGEN_STRONG_INLINE T value() { return T(Value); }
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void setValue(T) {}
+};
+
+template<typename T> class variable_if_dynamic<T, Dynamic>
+{
+    T m_value;
+    EIGEN_DEVICE_FUNC variable_if_dynamic() { eigen_assert(false); }
+  public:
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE explicit variable_if_dynamic(T value) : m_value(value) {}
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T value() const { return m_value; }
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void setValue(T value) { m_value = value; }
+};
+
+/** \internal like variable_if_dynamic but for DynamicIndex
+  */
+template<typename T, int Value> class variable_if_dynamicindex
+{
+  public:
+    EIGEN_EMPTY_STRUCT_CTOR(variable_if_dynamicindex)
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE explicit variable_if_dynamicindex(T v) { EIGEN_ONLY_USED_FOR_DEBUG(v); eigen_assert(v == T(Value)); }
+    EIGEN_DEVICE_FUNC static EIGEN_STRONG_INLINE T value() { return T(Value); }
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void setValue(T) {}
+};
+
+template<typename T> class variable_if_dynamicindex<T, DynamicIndex>
+{
+    T m_value;
+    EIGEN_DEVICE_FUNC variable_if_dynamicindex() { eigen_assert(false); }
+  public:
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE explicit variable_if_dynamicindex(T value) : m_value(value) {}
+    EIGEN_DEVICE_FUNC T EIGEN_STRONG_INLINE value() const { return m_value; }
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void setValue(T value) { m_value = value; }
+};
+
+template<typename T> struct functor_traits
+{
+  enum
+  {
+    Cost = 10,
+    PacketAccess = false,
+    IsRepeatable = false
+  };
+};
+
+template<typename T> struct packet_traits;
+
+template<typename T> struct unpacket_traits
+{
+  typedef T type;
+  typedef T half;
+  enum
+  {
+    size = 1,
+    alignment = 1
+  };
+};
+
+template<int Size, typename PacketType,
+         bool Stop = Size==Dynamic || (Size%unpacket_traits<PacketType>::size)==0 || is_same<PacketType,typename unpacket_traits<PacketType>::half>::value>
+struct find_best_packet_helper;
+
+template< int Size, typename PacketType>
+struct find_best_packet_helper<Size,PacketType,true>
+{
+  typedef PacketType type;
+};
+
+template<int Size, typename PacketType>
+struct find_best_packet_helper<Size,PacketType,false>
+{
+  typedef typename find_best_packet_helper<Size,typename unpacket_traits<PacketType>::half>::type type;
+};
+
+template<typename T, int Size>
+struct find_best_packet
+{
+  typedef typename find_best_packet_helper<Size,typename packet_traits<T>::type>::type type;
+};
+
+#if EIGEN_MAX_STATIC_ALIGN_BYTES>0
+template<int ArrayBytes, int AlignmentBytes,
+         bool Match     =  bool((ArrayBytes%AlignmentBytes)==0),
+         bool TryHalf   =  bool(EIGEN_MIN_ALIGN_BYTES<AlignmentBytes) >
+struct compute_default_alignment_helper
+{
+  enum { value = 0 };
+};
+
+template<int ArrayBytes, int AlignmentBytes, bool TryHalf>
+struct compute_default_alignment_helper<ArrayBytes, AlignmentBytes, true, TryHalf> // Match
+{
+  enum { value = AlignmentBytes };
+};
+
+template<int ArrayBytes, int AlignmentBytes>
+struct compute_default_alignment_helper<ArrayBytes, AlignmentBytes, false, true> // Try-half
+{
+  // current packet too large, try with an half-packet
+  enum { value = compute_default_alignment_helper<ArrayBytes, AlignmentBytes/2>::value };
+};
+#else
+// If static alignment is disabled, no need to bother.
+// This also avoids a division by zero in "bool Match =  bool((ArrayBytes%AlignmentBytes)==0)"
+template<int ArrayBytes, int AlignmentBytes>
+struct compute_default_alignment_helper
+{
+  enum { value = 0 };
+};
+#endif
+
+template<typename T, int Size> struct compute_default_alignment {
+  enum { value = compute_default_alignment_helper<Size*sizeof(T),EIGEN_MAX_STATIC_ALIGN_BYTES>::value };
+};
+
+template<typename T> struct compute_default_alignment<T,Dynamic> {
+  enum { value = EIGEN_MAX_ALIGN_BYTES };
+};
+
+template<typename _Scalar, int _Rows, int _Cols,
+         int _Options = AutoAlign |
+                          ( (_Rows==1 && _Cols!=1) ? RowMajor
+                          : (_Cols==1 && _Rows!=1) ? ColMajor
+                          : EIGEN_DEFAULT_MATRIX_STORAGE_ORDER_OPTION ),
+         int _MaxRows = _Rows,
+         int _MaxCols = _Cols
+> class make_proper_matrix_type
+{
+    enum {
+      IsColVector = _Cols==1 && _Rows!=1,
+      IsRowVector = _Rows==1 && _Cols!=1,
+      Options = IsColVector ? (_Options | ColMajor) & ~RowMajor
+              : IsRowVector ? (_Options | RowMajor) & ~ColMajor
+              : _Options
+    };
+  public:
+    typedef Matrix<_Scalar, _Rows, _Cols, Options, _MaxRows, _MaxCols> type;
+};
+
+template<typename Scalar, int Rows, int Cols, int Options, int MaxRows, int MaxCols>
+class compute_matrix_flags
+{
+    enum { row_major_bit = Options&RowMajor ? RowMajorBit : 0 };
+  public:
+    // FIXME currently we still have to handle DirectAccessBit at the expression level to handle DenseCoeffsBase<>
+    // and then propagate this information to the evaluator's flags.
+    // However, I (Gael) think that DirectAccessBit should only matter at the evaluation stage.
+    enum { ret = DirectAccessBit | LvalueBit | NestByRefBit | row_major_bit };
+};
+
+template<int _Rows, int _Cols> struct size_at_compile_time
+{
+  enum { ret = (_Rows==Dynamic || _Cols==Dynamic) ? Dynamic : _Rows * _Cols };
+};
+
+template<typename XprType> struct size_of_xpr_at_compile_time
+{
+  enum { ret = size_at_compile_time<traits<XprType>::RowsAtCompileTime,traits<XprType>::ColsAtCompileTime>::ret };
+};
+
+/* plain_matrix_type : the difference from eval is that plain_matrix_type is always a plain matrix type,
+ * whereas eval is a const reference in the case of a matrix
+ */
+
+template<typename T, typename StorageKind = typename traits<T>::StorageKind> struct plain_matrix_type;
+template<typename T, typename BaseClassType, int Flags> struct plain_matrix_type_dense;
+template<typename T> struct plain_matrix_type<T,Dense>
+{
+  typedef typename plain_matrix_type_dense<T,typename traits<T>::XprKind, traits<T>::Flags>::type type;
+};
+template<typename T> struct plain_matrix_type<T,DiagonalShape>
+{
+  typedef typename T::PlainObject type;
+};
+
+template<typename T, int Flags> struct plain_matrix_type_dense<T,MatrixXpr,Flags>
+{
+  typedef Matrix<typename traits<T>::Scalar,
+                traits<T>::RowsAtCompileTime,
+                traits<T>::ColsAtCompileTime,
+                AutoAlign | (Flags&RowMajorBit ? RowMajor : ColMajor),
+                traits<T>::MaxRowsAtCompileTime,
+                traits<T>::MaxColsAtCompileTime
+          > type;
+};
+
+template<typename T, int Flags> struct plain_matrix_type_dense<T,ArrayXpr,Flags>
+{
+  typedef Array<typename traits<T>::Scalar,
+                traits<T>::RowsAtCompileTime,
+                traits<T>::ColsAtCompileTime,
+                AutoAlign | (Flags&RowMajorBit ? RowMajor : ColMajor),
+                traits<T>::MaxRowsAtCompileTime,
+                traits<T>::MaxColsAtCompileTime
+          > type;
+};
+
+/* eval : the return type of eval(). For matrices, this is just a const reference
+ * in order to avoid a useless copy
+ */
+
+template<typename T, typename StorageKind = typename traits<T>::StorageKind> struct eval;
+
+template<typename T> struct eval<T,Dense>
+{
+  typedef typename plain_matrix_type<T>::type type;
+//   typedef typename T::PlainObject type;
+//   typedef T::Matrix<typename traits<T>::Scalar,
+//                 traits<T>::RowsAtCompileTime,
+//                 traits<T>::ColsAtCompileTime,
+//                 AutoAlign | (traits<T>::Flags&RowMajorBit ? RowMajor : ColMajor),
+//                 traits<T>::MaxRowsAtCompileTime,
+//                 traits<T>::MaxColsAtCompileTime
+//           > type;
+};
+
+template<typename T> struct eval<T,DiagonalShape>
+{
+  typedef typename plain_matrix_type<T>::type type;
+};
+
+// for matrices, no need to evaluate, just use a const reference to avoid a useless copy
+template<typename _Scalar, int _Rows, int _Cols, int _Options, int _MaxRows, int _MaxCols>
+struct eval<Matrix<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols>, Dense>
+{
+  typedef const Matrix<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols>& type;
+};
+
+template<typename _Scalar, int _Rows, int _Cols, int _Options, int _MaxRows, int _MaxCols>
+struct eval<Array<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols>, Dense>
+{
+  typedef const Array<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols>& type;
+};
+
+
+/* similar to plain_matrix_type, but using the evaluator's Flags */
+template<typename T, typename StorageKind = typename traits<T>::StorageKind> struct plain_object_eval;
+
+template<typename T>
+struct plain_object_eval<T,Dense>
+{
+  typedef typename plain_matrix_type_dense<T,typename traits<T>::XprKind, evaluator<T>::Flags>::type type;
+};
+
+
+/* plain_matrix_type_column_major : same as plain_matrix_type but guaranteed to be column-major
+ */
+template<typename T> struct plain_matrix_type_column_major
+{
+  enum { Rows = traits<T>::RowsAtCompileTime,
+         Cols = traits<T>::ColsAtCompileTime,
+         MaxRows = traits<T>::MaxRowsAtCompileTime,
+         MaxCols = traits<T>::MaxColsAtCompileTime
+  };
+  typedef Matrix<typename traits<T>::Scalar,
+                Rows,
+                Cols,
+                (MaxRows==1&&MaxCols!=1) ? RowMajor : ColMajor,
+                MaxRows,
+                MaxCols
+          > type;
+};
+
+/* plain_matrix_type_row_major : same as plain_matrix_type but guaranteed to be row-major
+ */
+template<typename T> struct plain_matrix_type_row_major
+{
+  enum { Rows = traits<T>::RowsAtCompileTime,
+         Cols = traits<T>::ColsAtCompileTime,
+         MaxRows = traits<T>::MaxRowsAtCompileTime,
+         MaxCols = traits<T>::MaxColsAtCompileTime
+  };
+  typedef Matrix<typename traits<T>::Scalar,
+                Rows,
+                Cols,
+                (MaxCols==1&&MaxRows!=1) ? RowMajor : ColMajor,
+                MaxRows,
+                MaxCols
+          > type;
+};
+
+/** \internal The reference selector for template expressions. The idea is that we don't
+  * need to use references for expressions since they are light weight proxy
+  * objects which should generate no copying overhead. */
+template <typename T>
+struct ref_selector
+{
+  typedef typename conditional<
+    bool(traits<T>::Flags & NestByRefBit),
+    T const&,
+    const T
+  >::type type;
+  
+  typedef typename conditional<
+    bool(traits<T>::Flags & NestByRefBit),
+    T &,
+    T
+  >::type non_const_type;
+};
+
+/** \internal Adds the const qualifier on the value-type of T2 if and only if T1 is a const type */
+template<typename T1, typename T2>
+struct transfer_constness
+{
+  typedef typename conditional<
+    bool(internal::is_const<T1>::value),
+    typename internal::add_const_on_value_type<T2>::type,
+    T2
+  >::type type;
+};
+
+
+// However, we still need a mechanism to detect whether an expression which is evaluated multiple time
+// has to be evaluated into a temporary.
+// That's the purpose of this new nested_eval helper:
+/** \internal Determines how a given expression should be nested when evaluated multiple times.
+  * For example, when you do a * (b+c), Eigen will determine how the expression b+c should be
+  * evaluated into the bigger product expression. The choice is between nesting the expression b+c as-is, or
+  * evaluating that expression b+c into a temporary variable d, and nest d so that the resulting expression is
+  * a*d. Evaluating can be beneficial for example if every coefficient access in the resulting expression causes
+  * many coefficient accesses in the nested expressions -- as is the case with matrix product for example.
+  *
+  * \tparam T the type of the expression being nested.
+  * \tparam n the number of coefficient accesses in the nested expression for each coefficient access in the bigger expression.
+  * \tparam PlainObject the type of the temporary if needed.
+  */
+template<typename T, int n, typename PlainObject = typename plain_object_eval<T>::type> struct nested_eval
+{
+  enum {
+    ScalarReadCost = NumTraits<typename traits<T>::Scalar>::ReadCost,
+    CoeffReadCost = evaluator<T>::CoeffReadCost,  // NOTE What if an evaluator evaluate itself into a tempory?
+                                                  //      Then CoeffReadCost will be small (e.g., 1) but we still have to evaluate, especially if n>1.
+                                                  //      This situation is already taken care by the EvalBeforeNestingBit flag, which is turned ON
+                                                  //      for all evaluator creating a temporary. This flag is then propagated by the parent evaluators.
+                                                  //      Another solution could be to count the number of temps?
+    NAsInteger = n == Dynamic ? HugeCost : n,
+    CostEval   = (NAsInteger+1) * ScalarReadCost + CoeffReadCost,
+    CostNoEval = NAsInteger * CoeffReadCost,
+    Evaluate = (int(evaluator<T>::Flags) & EvalBeforeNestingBit) || (int(CostEval) < int(CostNoEval))
+  };
+
+  typedef typename conditional<Evaluate, PlainObject, typename ref_selector<T>::type>::type type;
+};
+
+template<typename T>
+EIGEN_DEVICE_FUNC
+inline T* const_cast_ptr(const T* ptr)
+{
+  return const_cast<T*>(ptr);
+}
+
+template<typename Derived, typename XprKind = typename traits<Derived>::XprKind>
+struct dense_xpr_base
+{
+  /* dense_xpr_base should only ever be used on dense expressions, thus falling either into the MatrixXpr or into the ArrayXpr cases */
+};
+
+template<typename Derived>
+struct dense_xpr_base<Derived, MatrixXpr>
+{
+  typedef MatrixBase<Derived> type;
+};
+
+template<typename Derived>
+struct dense_xpr_base<Derived, ArrayXpr>
+{
+  typedef ArrayBase<Derived> type;
+};
+
+template<typename Derived, typename XprKind = typename traits<Derived>::XprKind, typename StorageKind = typename traits<Derived>::StorageKind>
+struct generic_xpr_base;
+
+template<typename Derived, typename XprKind>
+struct generic_xpr_base<Derived, XprKind, Dense>
+{
+  typedef typename dense_xpr_base<Derived,XprKind>::type type;
+};
+
+template<typename XprType, typename CastType> struct cast_return_type
+{
+  typedef typename XprType::Scalar CurrentScalarType;
+  typedef typename remove_all<CastType>::type _CastType;
+  typedef typename _CastType::Scalar NewScalarType;
+  typedef typename conditional<is_same<CurrentScalarType,NewScalarType>::value,
+                              const XprType&,CastType>::type type;
+};
+
+template <typename A, typename B> struct promote_storage_type;
+
+template <typename A> struct promote_storage_type<A,A>
+{
+  typedef A ret;
+};
+template <typename A> struct promote_storage_type<A, const A>
+{
+  typedef A ret;
+};
+template <typename A> struct promote_storage_type<const A, A>
+{
+  typedef A ret;
+};
+
+/** \internal Specify the "storage kind" of applying a coefficient-wise
+  * binary operations between two expressions of kinds A and B respectively.
+  * The template parameter Functor permits to specialize the resulting storage kind wrt to
+  * the functor.
+  * The default rules are as follows:
+  * \code
+  * A      op A      -> A
+  * A      op dense  -> dense
+  * dense  op B      -> dense
+  * sparse op dense  -> sparse
+  * dense  op sparse -> sparse
+  * \endcode
+  */
+template <typename A, typename B, typename Functor> struct cwise_promote_storage_type;
+
+template <typename A, typename Functor>                   struct cwise_promote_storage_type<A,A,Functor>                                      { typedef A      ret; };
+template <typename Functor>                               struct cwise_promote_storage_type<Dense,Dense,Functor>                              { typedef Dense  ret; };
+template <typename A, typename Functor>                   struct cwise_promote_storage_type<A,Dense,Functor>                                  { typedef Dense  ret; };
+template <typename B, typename Functor>                   struct cwise_promote_storage_type<Dense,B,Functor>                                  { typedef Dense  ret; };
+template <typename Functor>                               struct cwise_promote_storage_type<Sparse,Dense,Functor>                             { typedef Sparse ret; };
+template <typename Functor>                               struct cwise_promote_storage_type<Dense,Sparse,Functor>                             { typedef Sparse ret; };
+
+template <typename LhsKind, typename RhsKind, int LhsOrder, int RhsOrder> struct cwise_promote_storage_order {
+  enum { value = LhsOrder };
+};
+
+template <typename LhsKind, int LhsOrder, int RhsOrder>   struct cwise_promote_storage_order<LhsKind,Sparse,LhsOrder,RhsOrder>                { enum { value = RhsOrder }; };
+template <typename RhsKind, int LhsOrder, int RhsOrder>   struct cwise_promote_storage_order<Sparse,RhsKind,LhsOrder,RhsOrder>                { enum { value = LhsOrder }; };
+template <int Order>                                      struct cwise_promote_storage_order<Sparse,Sparse,Order,Order>                       { enum { value = Order }; };
+
+
+/** \internal Specify the "storage kind" of multiplying an expression of kind A with kind B.
+  * The template parameter ProductTag permits to specialize the resulting storage kind wrt to
+  * some compile-time properties of the product: GemmProduct, GemvProduct, OuterProduct, InnerProduct.
+  * The default rules are as follows:
+  * \code
+  *  K * K            -> K
+  *  dense * K        -> dense
+  *  K * dense        -> dense
+  *  diag * K         -> K
+  *  K * diag         -> K
+  *  Perm * K         -> K
+  * K * Perm          -> K
+  * \endcode
+  */
+template <typename A, typename B, int ProductTag> struct product_promote_storage_type;
+
+template <typename A, int ProductTag> struct product_promote_storage_type<A,                  A,                  ProductTag> { typedef A     ret;};
+template <int ProductTag>             struct product_promote_storage_type<Dense,              Dense,              ProductTag> { typedef Dense ret;};
+template <typename A, int ProductTag> struct product_promote_storage_type<A,                  Dense,              ProductTag> { typedef Dense ret; };
+template <typename B, int ProductTag> struct product_promote_storage_type<Dense,              B,                  ProductTag> { typedef Dense ret; };
+
+template <typename A, int ProductTag> struct product_promote_storage_type<A,                  DiagonalShape,      ProductTag> { typedef A ret; };
+template <typename B, int ProductTag> struct product_promote_storage_type<DiagonalShape,      B,                  ProductTag> { typedef B ret; };
+template <int ProductTag>             struct product_promote_storage_type<Dense,              DiagonalShape,      ProductTag> { typedef Dense ret; };
+template <int ProductTag>             struct product_promote_storage_type<DiagonalShape,      Dense,              ProductTag> { typedef Dense ret; };
+
+template <typename A, int ProductTag> struct product_promote_storage_type<A,                  PermutationStorage, ProductTag> { typedef A ret; };
+template <typename B, int ProductTag> struct product_promote_storage_type<PermutationStorage, B,                  ProductTag> { typedef B ret; };
+template <int ProductTag>             struct product_promote_storage_type<Dense,              PermutationStorage, ProductTag> { typedef Dense ret; };
+template <int ProductTag>             struct product_promote_storage_type<PermutationStorage, Dense,              ProductTag> { typedef Dense ret; };
+
+/** \internal gives the plain matrix or array type to store a row/column/diagonal of a matrix type.
+  * \tparam Scalar optional parameter allowing to pass a different scalar type than the one of the MatrixType.
+  */
+template<typename ExpressionType, typename Scalar = typename ExpressionType::Scalar>
+struct plain_row_type
+{
+  typedef Matrix<Scalar, 1, ExpressionType::ColsAtCompileTime,
+                 ExpressionType::PlainObject::Options | RowMajor, 1, ExpressionType::MaxColsAtCompileTime> MatrixRowType;
+  typedef Array<Scalar, 1, ExpressionType::ColsAtCompileTime,
+                 ExpressionType::PlainObject::Options | RowMajor, 1, ExpressionType::MaxColsAtCompileTime> ArrayRowType;
+
+  typedef typename conditional<
+    is_same< typename traits<ExpressionType>::XprKind, MatrixXpr >::value,
+    MatrixRowType,
+    ArrayRowType 
+  >::type type;
+};
+
+template<typename ExpressionType, typename Scalar = typename ExpressionType::Scalar>
+struct plain_col_type
+{
+  typedef Matrix<Scalar, ExpressionType::RowsAtCompileTime, 1,
+                 ExpressionType::PlainObject::Options & ~RowMajor, ExpressionType::MaxRowsAtCompileTime, 1> MatrixColType;
+  typedef Array<Scalar, ExpressionType::RowsAtCompileTime, 1,
+                 ExpressionType::PlainObject::Options & ~RowMajor, ExpressionType::MaxRowsAtCompileTime, 1> ArrayColType;
+
+  typedef typename conditional<
+    is_same< typename traits<ExpressionType>::XprKind, MatrixXpr >::value,
+    MatrixColType,
+    ArrayColType 
+  >::type type;
+};
+
+template<typename ExpressionType, typename Scalar = typename ExpressionType::Scalar>
+struct plain_diag_type
+{
+  enum { diag_size = EIGEN_SIZE_MIN_PREFER_DYNAMIC(ExpressionType::RowsAtCompileTime, ExpressionType::ColsAtCompileTime),
+         max_diag_size = EIGEN_SIZE_MIN_PREFER_FIXED(ExpressionType::MaxRowsAtCompileTime, ExpressionType::MaxColsAtCompileTime)
+  };
+  typedef Matrix<Scalar, diag_size, 1, ExpressionType::PlainObject::Options & ~RowMajor, max_diag_size, 1> MatrixDiagType;
+  typedef Array<Scalar, diag_size, 1, ExpressionType::PlainObject::Options & ~RowMajor, max_diag_size, 1> ArrayDiagType;
+
+  typedef typename conditional<
+    is_same< typename traits<ExpressionType>::XprKind, MatrixXpr >::value,
+    MatrixDiagType,
+    ArrayDiagType 
+  >::type type;
+};
+
+template<typename Expr,typename Scalar = typename Expr::Scalar>
+struct plain_constant_type
+{
+  enum { Options = (traits<Expr>::Flags&RowMajorBit)?RowMajor:0 };
+
+  typedef Array<Scalar,  traits<Expr>::RowsAtCompileTime,   traits<Expr>::ColsAtCompileTime,
+                Options, traits<Expr>::MaxRowsAtCompileTime,traits<Expr>::MaxColsAtCompileTime> array_type;
+
+  typedef Matrix<Scalar,  traits<Expr>::RowsAtCompileTime,   traits<Expr>::ColsAtCompileTime,
+                 Options, traits<Expr>::MaxRowsAtCompileTime,traits<Expr>::MaxColsAtCompileTime> matrix_type;
+
+  typedef CwiseNullaryOp<scalar_constant_op<Scalar>, const typename conditional<is_same< typename traits<Expr>::XprKind, MatrixXpr >::value, matrix_type, array_type>::type > type;
+};
+
+template<typename ExpressionType>
+struct is_lvalue
+{
+  enum { value = (!bool(is_const<ExpressionType>::value)) &&
+                 bool(traits<ExpressionType>::Flags & LvalueBit) };
+};
+
+template<typename T> struct is_diagonal
+{ enum { ret = false }; };
+
+template<typename T> struct is_diagonal<DiagonalBase<T> >
+{ enum { ret = true }; };
+
+template<typename T> struct is_diagonal<DiagonalWrapper<T> >
+{ enum { ret = true }; };
+
+template<typename T, int S> struct is_diagonal<DiagonalMatrix<T,S> >
+{ enum { ret = true }; };
+
+template<typename S1, typename S2> struct glue_shapes;
+template<> struct glue_shapes<DenseShape,TriangularShape> { typedef TriangularShape type;  };
+
+template<typename T1, typename T2>
+bool is_same_dense(const T1 &mat1, const T2 &mat2, typename enable_if<has_direct_access<T1>::ret&&has_direct_access<T2>::ret, T1>::type * = 0)
+{
+  return (mat1.data()==mat2.data()) && (mat1.innerStride()==mat2.innerStride()) && (mat1.outerStride()==mat2.outerStride());
+}
+
+template<typename T1, typename T2>
+bool is_same_dense(const T1 &, const T2 &, typename enable_if<!(has_direct_access<T1>::ret&&has_direct_access<T2>::ret), T1>::type * = 0)
+{
+  return false;
+}
+
+// Internal helper defining the cost of a scalar division for the type T.
+// The default heuristic can be specialized for each scalar type and architecture.
+template<typename T,bool Vectorized=false,typename EnaleIf = void>
+struct scalar_div_cost {
+  enum { value = 8*NumTraits<T>::MulCost };
+};
+
+template<typename T,bool Vectorized>
+struct scalar_div_cost<std::complex<T>, Vectorized> {
+  enum { value = 2*scalar_div_cost<T>::value
+               + 6*NumTraits<T>::MulCost
+               + 3*NumTraits<T>::AddCost
+  };
+};
+
+
+template<bool Vectorized>
+struct scalar_div_cost<signed long,Vectorized,typename conditional<sizeof(long)==8,void,false_type>::type> { enum { value = 24 }; };
+template<bool Vectorized>
+struct scalar_div_cost<unsigned long,Vectorized,typename conditional<sizeof(long)==8,void,false_type>::type> { enum { value = 21 }; };
+
+
+#ifdef EIGEN_DEBUG_ASSIGN
+std::string demangle_traversal(int t)
+{
+  if(t==DefaultTraversal) return "DefaultTraversal";
+  if(t==LinearTraversal) return "LinearTraversal";
+  if(t==InnerVectorizedTraversal) return "InnerVectorizedTraversal";
+  if(t==LinearVectorizedTraversal) return "LinearVectorizedTraversal";
+  if(t==SliceVectorizedTraversal) return "SliceVectorizedTraversal";
+  return "?";
+}
+std::string demangle_unrolling(int t)
+{
+  if(t==NoUnrolling) return "NoUnrolling";
+  if(t==InnerUnrolling) return "InnerUnrolling";
+  if(t==CompleteUnrolling) return "CompleteUnrolling";
+  return "?";
+}
+std::string demangle_flags(int f)
+{
+  std::string res;
+  if(f&RowMajorBit)                 res += " | RowMajor";
+  if(f&PacketAccessBit)             res += " | Packet";
+  if(f&LinearAccessBit)             res += " | Linear";
+  if(f&LvalueBit)                   res += " | Lvalue";
+  if(f&DirectAccessBit)             res += " | Direct";
+  if(f&NestByRefBit)                res += " | NestByRef";
+  if(f&NoPreferredStorageOrderBit)  res += " | NoPreferredStorageOrderBit";
+  
+  return res;
+}
+#endif
+
+} // end namespace internal
+
+
+/** \class ScalarBinaryOpTraits
+  * \ingroup Core_Module
+  *
+  * \brief Determines whether the given binary operation of two numeric types is allowed and what the scalar return type is.
+  *
+  * This class permits to control the scalar return type of any binary operation performed on two different scalar types through (partial) template specializations.
+  *
+  * For instance, let \c U1, \c U2 and \c U3 be three user defined scalar types for which most operations between instances of \c U1 and \c U2 returns an \c U3.
+  * You can let %Eigen knows that by defining:
+    \code
+    template<typename BinaryOp>
+    struct ScalarBinaryOpTraits<U1,U2,BinaryOp> { typedef U3 ReturnType;  };
+    template<typename BinaryOp>
+    struct ScalarBinaryOpTraits<U2,U1,BinaryOp> { typedef U3 ReturnType;  };
+    \endcode
+  * You can then explicitly disable some particular operations to get more explicit error messages:
+    \code
+    template<>
+    struct ScalarBinaryOpTraits<U1,U2,internal::scalar_max_op<U1,U2> > {};
+    \endcode
+  * Or customize the return type for individual operation:
+    \code
+    template<>
+    struct ScalarBinaryOpTraits<U1,U2,internal::scalar_sum_op<U1,U2> > { typedef U1 ReturnType; };
+    \endcode
+  *
+  * By default, the following generic combinations are supported:
+  <table class="manual">
+  <tr><th>ScalarA</th><th>ScalarB</th><th>BinaryOp</th><th>ReturnType</th><th>Note</th></tr>
+  <tr            ><td>\c T </td><td>\c T </td><td>\c * </td><td>\c T </td><td></td></tr>
+  <tr class="alt"><td>\c NumTraits<T>::Real </td><td>\c T </td><td>\c * </td><td>\c T </td><td>Only if \c NumTraits<T>::IsComplex </td></tr>
+  <tr            ><td>\c T </td><td>\c NumTraits<T>::Real </td><td>\c * </td><td>\c T </td><td>Only if \c NumTraits<T>::IsComplex </td></tr>
+  </table>
+  *
+  * \sa CwiseBinaryOp
+  */
+template<typename ScalarA, typename ScalarB, typename BinaryOp=internal::scalar_product_op<ScalarA,ScalarB> >
+struct ScalarBinaryOpTraits
+#ifndef EIGEN_PARSED_BY_DOXYGEN
+  // for backward compatibility, use the hints given by the (deprecated) internal::scalar_product_traits class.
+  : internal::scalar_product_traits<ScalarA,ScalarB>
+#endif // EIGEN_PARSED_BY_DOXYGEN
+{};
+
+template<typename T, typename BinaryOp>
+struct ScalarBinaryOpTraits<T,T,BinaryOp>
+{
+  typedef T ReturnType;
+};
+
+template <typename T, typename BinaryOp>
+struct ScalarBinaryOpTraits<T, typename NumTraits<typename internal::enable_if<NumTraits<T>::IsComplex,T>::type>::Real, BinaryOp>
+{
+  typedef T ReturnType;
+};
+template <typename T, typename BinaryOp>
+struct ScalarBinaryOpTraits<typename NumTraits<typename internal::enable_if<NumTraits<T>::IsComplex,T>::type>::Real, T, BinaryOp>
+{
+  typedef T ReturnType;
+};
+
+// For Matrix * Permutation
+template<typename T, typename BinaryOp>
+struct ScalarBinaryOpTraits<T,void,BinaryOp>
+{
+  typedef T ReturnType;
+};
+
+// For Permutation * Matrix
+template<typename T, typename BinaryOp>
+struct ScalarBinaryOpTraits<void,T,BinaryOp>
+{
+  typedef T ReturnType;
+};
+
+// for Permutation*Permutation
+template<typename BinaryOp>
+struct ScalarBinaryOpTraits<void,void,BinaryOp>
+{
+  typedef void ReturnType;
+};
+
+// We require Lhs and Rhs to have "compatible" scalar types.
+// It is tempting to always allow mixing different types but remember that this is often impossible in the vectorized paths.
+// So allowing mixing different types gives very unexpected errors when enabling vectorization, when the user tries to
+// add together a float matrix and a double matrix.
+#define EIGEN_CHECK_BINARY_COMPATIBILIY(BINOP,LHS,RHS) \
+  EIGEN_STATIC_ASSERT((Eigen::internal::has_ReturnType<ScalarBinaryOpTraits<LHS, RHS,BINOP> >::value), \
+    YOU_MIXED_DIFFERENT_NUMERIC_TYPES__YOU_NEED_TO_USE_THE_CAST_METHOD_OF_MATRIXBASE_TO_CAST_NUMERIC_TYPES_EXPLICITLY)
+    
+} // end namespace Eigen
+
+#endif // EIGEN_XPRHELPER_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/util/Constants.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/util/Constants.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/util/Constants.h	(revision 3762)
@@ -0,0 +1,547 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2008-2015 Gael Guennebaud <gael.guennebaud@inria.fr>
+// Copyright (C) 2007-2009 Benoit Jacob <jacob.benoit.1@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CONSTANTS_H
+#define EIGEN_CONSTANTS_H
+
+namespace Eigen {
+
+/** This value means that a positive quantity (e.g., a size) is not known at compile-time, and that instead the value is
+  * stored in some runtime variable.
+  *
+  * Changing the value of Dynamic breaks the ABI, as Dynamic is often used as a template parameter for Matrix.
+  */
+const int Dynamic = -1;
+
+/** This value means that a signed quantity (e.g., a signed index) is not known at compile-time, and that instead its value
+  * has to be specified at runtime.
+  */
+const int DynamicIndex = 0xffffff;
+
+/** This value means +Infinity; it is currently used only as the p parameter to MatrixBase::lpNorm<int>().
+  * The value Infinity there means the L-infinity norm.
+  */
+const int Infinity = -1;
+
+/** This value means that the cost to evaluate an expression coefficient is either very expensive or
+  * cannot be known at compile time.
+  *
+  * This value has to be positive to (1) simplify cost computation, and (2) allow to distinguish between a very expensive and very very expensive expressions.
+  * It thus must also be large enough to make sure unrolling won't happen and that sub expressions will be evaluated, but not too large to avoid overflow.
+  */
+const int HugeCost = 10000;
+
+/** \defgroup flags Flags
+  * \ingroup Core_Module
+  *
+  * These are the possible bits which can be OR'ed to constitute the flags of a matrix or
+  * expression.
+  *
+  * It is important to note that these flags are a purely compile-time notion. They are a compile-time property of
+  * an expression type, implemented as enum's. They are not stored in memory at runtime, and they do not incur any
+  * runtime overhead.
+  *
+  * \sa MatrixBase::Flags
+  */
+
+/** \ingroup flags
+  *
+  * for a matrix, this means that the storage order is row-major.
+  * If this bit is not set, the storage order is column-major.
+  * For an expression, this determines the storage order of
+  * the matrix created by evaluation of that expression.
+  * \sa \blank  \ref TopicStorageOrders */
+const unsigned int RowMajorBit = 0x1;
+
+/** \ingroup flags
+  * means the expression should be evaluated by the calling expression */
+const unsigned int EvalBeforeNestingBit = 0x2;
+
+/** \ingroup flags
+  * \deprecated
+  * means the expression should be evaluated before any assignment */
+EIGEN_DEPRECATED
+const unsigned int EvalBeforeAssigningBit = 0x4; // FIXME deprecated
+
+/** \ingroup flags
+  *
+  * Short version: means the expression might be vectorized
+  *
+  * Long version: means that the coefficients can be handled by packets
+  * and start at a memory location whose alignment meets the requirements
+  * of the present CPU architecture for optimized packet access. In the fixed-size
+  * case, there is the additional condition that it be possible to access all the
+  * coefficients by packets (this implies the requirement that the size be a multiple of 16 bytes,
+  * and that any nontrivial strides don't break the alignment). In the dynamic-size case,
+  * there is no such condition on the total size and strides, so it might not be possible to access
+  * all coeffs by packets.
+  *
+  * \note This bit can be set regardless of whether vectorization is actually enabled.
+  *       To check for actual vectorizability, see \a ActualPacketAccessBit.
+  */
+const unsigned int PacketAccessBit = 0x8;
+
+#ifdef EIGEN_VECTORIZE
+/** \ingroup flags
+  *
+  * If vectorization is enabled (EIGEN_VECTORIZE is defined) this constant
+  * is set to the value \a PacketAccessBit.
+  *
+  * If vectorization is not enabled (EIGEN_VECTORIZE is not defined) this constant
+  * is set to the value 0.
+  */
+const unsigned int ActualPacketAccessBit = PacketAccessBit;
+#else
+const unsigned int ActualPacketAccessBit = 0x0;
+#endif
+
+/** \ingroup flags
+  *
+  * Short version: means the expression can be seen as 1D vector.
+  *
+  * Long version: means that one can access the coefficients
+  * of this expression by coeff(int), and coeffRef(int) in the case of a lvalue expression. These
+  * index-based access methods are guaranteed
+  * to not have to do any runtime computation of a (row, col)-pair from the index, so that it
+  * is guaranteed that whenever it is available, index-based access is at least as fast as
+  * (row,col)-based access. Expressions for which that isn't possible don't have the LinearAccessBit.
+  *
+  * If both PacketAccessBit and LinearAccessBit are set, then the
+  * packets of this expression can be accessed by packet(int), and writePacket(int) in the case of a
+  * lvalue expression.
+  *
+  * Typically, all vector expressions have the LinearAccessBit, but there is one exception:
+  * Product expressions don't have it, because it would be troublesome for vectorization, even when the
+  * Product is a vector expression. Thus, vector Product expressions allow index-based coefficient access but
+  * not index-based packet access, so they don't have the LinearAccessBit.
+  */
+const unsigned int LinearAccessBit = 0x10;
+
+/** \ingroup flags
+  *
+  * Means the expression has a coeffRef() method, i.e. is writable as its individual coefficients are directly addressable.
+  * This rules out read-only expressions.
+  *
+  * Note that DirectAccessBit and LvalueBit are mutually orthogonal, as there are examples of expression having one but note
+  * the other:
+  *   \li writable expressions that don't have a very simple memory layout as a strided array, have LvalueBit but not DirectAccessBit
+  *   \li Map-to-const expressions, for example Map<const Matrix>, have DirectAccessBit but not LvalueBit
+  *
+  * Expressions having LvalueBit also have their coeff() method returning a const reference instead of returning a new value.
+  */
+const unsigned int LvalueBit = 0x20;
+
+/** \ingroup flags
+  *
+  * Means that the underlying array of coefficients can be directly accessed as a plain strided array. The memory layout
+  * of the array of coefficients must be exactly the natural one suggested by rows(), cols(),
+  * outerStride(), innerStride(), and the RowMajorBit. This rules out expressions such as Diagonal, whose coefficients,
+  * though referencable, do not have such a regular memory layout.
+  *
+  * See the comment on LvalueBit for an explanation of how LvalueBit and DirectAccessBit are mutually orthogonal.
+  */
+const unsigned int DirectAccessBit = 0x40;
+
+/** \deprecated \ingroup flags
+  *
+  * means the first coefficient packet is guaranteed to be aligned.
+  * An expression cannot has the AlignedBit without the PacketAccessBit flag.
+  * In other words, this means we are allow to perform an aligned packet access to the first element regardless
+  * of the expression kind:
+  * \code
+  * expression.packet<Aligned>(0);
+  * \endcode
+  */
+EIGEN_DEPRECATED const unsigned int AlignedBit = 0x80;
+
+const unsigned int NestByRefBit = 0x100;
+
+/** \ingroup flags
+  *
+  * for an expression, this means that the storage order
+  * can be either row-major or column-major.
+  * The precise choice will be decided at evaluation time or when
+  * combined with other expressions.
+  * \sa \blank  \ref RowMajorBit, \ref TopicStorageOrders */
+const unsigned int NoPreferredStorageOrderBit = 0x200;
+
+/** \ingroup flags
+  *
+  * Means that the underlying coefficients can be accessed through pointers to the sparse (un)compressed storage format,
+  * that is, the expression provides:
+  * \code
+    inline const Scalar* valuePtr() const;
+    inline const Index* innerIndexPtr() const;
+    inline const Index* outerIndexPtr() const;
+    inline const Index* innerNonZeroPtr() const;
+    \endcode
+  */
+const unsigned int CompressedAccessBit = 0x400;
+
+
+// list of flags that are inherited by default
+const unsigned int HereditaryBits = RowMajorBit
+                                  | EvalBeforeNestingBit;
+
+/** \defgroup enums Enumerations
+  * \ingroup Core_Module
+  *
+  * Various enumerations used in %Eigen. Many of these are used as template parameters.
+  */
+
+/** \ingroup enums
+  * Enum containing possible values for the \c Mode or \c UpLo parameter of
+  * MatrixBase::selfadjointView() and MatrixBase::triangularView(), and selfadjoint solvers. */
+enum UpLoType {
+  /** View matrix as a lower triangular matrix. */
+  Lower=0x1,                      
+  /** View matrix as an upper triangular matrix. */
+  Upper=0x2,                      
+  /** %Matrix has ones on the diagonal; to be used in combination with #Lower or #Upper. */
+  UnitDiag=0x4, 
+  /** %Matrix has zeros on the diagonal; to be used in combination with #Lower or #Upper. */
+  ZeroDiag=0x8,
+  /** View matrix as a lower triangular matrix with ones on the diagonal. */
+  UnitLower=UnitDiag|Lower, 
+  /** View matrix as an upper triangular matrix with ones on the diagonal. */
+  UnitUpper=UnitDiag|Upper,
+  /** View matrix as a lower triangular matrix with zeros on the diagonal. */
+  StrictlyLower=ZeroDiag|Lower, 
+  /** View matrix as an upper triangular matrix with zeros on the diagonal. */
+  StrictlyUpper=ZeroDiag|Upper,
+  /** Used in BandMatrix and SelfAdjointView to indicate that the matrix is self-adjoint. */
+  SelfAdjoint=0x10,
+  /** Used to support symmetric, non-selfadjoint, complex matrices. */
+  Symmetric=0x20
+};
+
+/** \ingroup enums
+  * Enum for indicating whether a buffer is aligned or not. */
+enum AlignmentType {
+  Unaligned=0,        /**< Data pointer has no specific alignment. */
+  Aligned8=8,         /**< Data pointer is aligned on a 8 bytes boundary. */
+  Aligned16=16,       /**< Data pointer is aligned on a 16 bytes boundary. */
+  Aligned32=32,       /**< Data pointer is aligned on a 32 bytes boundary. */
+  Aligned64=64,       /**< Data pointer is aligned on a 64 bytes boundary. */
+  Aligned128=128,     /**< Data pointer is aligned on a 128 bytes boundary. */
+  AlignedMask=255,
+  Aligned=16,         /**< \deprecated Synonym for Aligned16. */
+#if EIGEN_MAX_ALIGN_BYTES==128
+  AlignedMax = Aligned128
+#elif EIGEN_MAX_ALIGN_BYTES==64
+  AlignedMax = Aligned64
+#elif EIGEN_MAX_ALIGN_BYTES==32
+  AlignedMax = Aligned32
+#elif EIGEN_MAX_ALIGN_BYTES==16
+  AlignedMax = Aligned16
+#elif EIGEN_MAX_ALIGN_BYTES==8
+  AlignedMax = Aligned8
+#elif EIGEN_MAX_ALIGN_BYTES==0
+  AlignedMax = Unaligned
+#else
+#error Invalid value for EIGEN_MAX_ALIGN_BYTES
+#endif
+};
+
+/** \ingroup enums
+ * Enum used by DenseBase::corner() in Eigen2 compatibility mode. */
+// FIXME after the corner() API change, this was not needed anymore, except by AlignedBox
+// TODO: find out what to do with that. Adapt the AlignedBox API ?
+enum CornerType { TopLeft, TopRight, BottomLeft, BottomRight };
+
+/** \ingroup enums
+  * Enum containing possible values for the \p Direction parameter of
+  * Reverse, PartialReduxExpr and VectorwiseOp. */
+enum DirectionType { 
+  /** For Reverse, all columns are reversed; 
+    * for PartialReduxExpr and VectorwiseOp, act on columns. */
+  Vertical, 
+  /** For Reverse, all rows are reversed; 
+    * for PartialReduxExpr and VectorwiseOp, act on rows. */
+  Horizontal, 
+  /** For Reverse, both rows and columns are reversed; 
+    * not used for PartialReduxExpr and VectorwiseOp. */
+  BothDirections 
+};
+
+/** \internal \ingroup enums
+  * Enum to specify how to traverse the entries of a matrix. */
+enum TraversalType {
+  /** \internal Default traversal, no vectorization, no index-based access */
+  DefaultTraversal,
+  /** \internal No vectorization, use index-based access to have only one for loop instead of 2 nested loops */
+  LinearTraversal,
+  /** \internal Equivalent to a slice vectorization for fixed-size matrices having good alignment
+    * and good size */
+  InnerVectorizedTraversal,
+  /** \internal Vectorization path using a single loop plus scalar loops for the
+    * unaligned boundaries */
+  LinearVectorizedTraversal,
+  /** \internal Generic vectorization path using one vectorized loop per row/column with some
+    * scalar loops to handle the unaligned boundaries */
+  SliceVectorizedTraversal,
+  /** \internal Special case to properly handle incompatible scalar types or other defecting cases*/
+  InvalidTraversal,
+  /** \internal Evaluate all entries at once */
+  AllAtOnceTraversal
+};
+
+/** \internal \ingroup enums
+  * Enum to specify whether to unroll loops when traversing over the entries of a matrix. */
+enum UnrollingType {
+  /** \internal Do not unroll loops. */
+  NoUnrolling,
+  /** \internal Unroll only the inner loop, but not the outer loop. */
+  InnerUnrolling,
+  /** \internal Unroll both the inner and the outer loop. If there is only one loop, 
+    * because linear traversal is used, then unroll that loop. */
+  CompleteUnrolling
+};
+
+/** \internal \ingroup enums
+  * Enum to specify whether to use the default (built-in) implementation or the specialization. */
+enum SpecializedType {
+  Specialized,
+  BuiltIn
+};
+
+/** \ingroup enums
+  * Enum containing possible values for the \p _Options template parameter of
+  * Matrix, Array and BandMatrix. */
+enum StorageOptions {
+  /** Storage order is column major (see \ref TopicStorageOrders). */
+  ColMajor = 0,
+  /** Storage order is row major (see \ref TopicStorageOrders). */
+  RowMajor = 0x1,  // it is only a coincidence that this is equal to RowMajorBit -- don't rely on that
+  /** Align the matrix itself if it is vectorizable fixed-size */
+  AutoAlign = 0,
+  /** Don't require alignment for the matrix itself (the array of coefficients, if dynamically allocated, may still be requested to be aligned) */ // FIXME --- clarify the situation
+  DontAlign = 0x2
+};
+
+/** \ingroup enums
+  * Enum for specifying whether to apply or solve on the left or right. */
+enum SideType {
+  /** Apply transformation on the left. */
+  OnTheLeft = 1,  
+  /** Apply transformation on the right. */
+  OnTheRight = 2  
+};
+
+/* the following used to be written as:
+ *
+ *   struct NoChange_t {};
+ *   namespace {
+ *     EIGEN_UNUSED NoChange_t NoChange;
+ *   }
+ *
+ * on the ground that it feels dangerous to disambiguate overloaded functions on enum/integer types.  
+ * However, this leads to "variable declared but never referenced" warnings on Intel Composer XE,
+ * and we do not know how to get rid of them (bug 450).
+ */
+
+enum NoChange_t   { NoChange };
+enum Sequential_t { Sequential };
+enum Default_t    { Default };
+
+/** \internal \ingroup enums
+  * Used in AmbiVector. */
+enum AmbiVectorMode {
+  IsDense         = 0,
+  IsSparse
+};
+
+/** \ingroup enums
+  * Used as template parameter in DenseCoeffBase and MapBase to indicate 
+  * which accessors should be provided. */
+enum AccessorLevels {
+  /** Read-only access via a member function. */
+  ReadOnlyAccessors, 
+  /** Read/write access via member functions. */
+  WriteAccessors, 
+  /** Direct read-only access to the coefficients. */
+  DirectAccessors, 
+  /** Direct read/write access to the coefficients. */
+  DirectWriteAccessors
+};
+
+/** \ingroup enums
+  * Enum with options to give to various decompositions. */
+enum DecompositionOptions {
+  /** \internal Not used (meant for LDLT?). */
+  Pivoting            = 0x01, 
+  /** \internal Not used (meant for LDLT?). */
+  NoPivoting          = 0x02, 
+  /** Used in JacobiSVD to indicate that the square matrix U is to be computed. */
+  ComputeFullU        = 0x04,
+  /** Used in JacobiSVD to indicate that the thin matrix U is to be computed. */
+  ComputeThinU        = 0x08,
+  /** Used in JacobiSVD to indicate that the square matrix V is to be computed. */
+  ComputeFullV        = 0x10,
+  /** Used in JacobiSVD to indicate that the thin matrix V is to be computed. */
+  ComputeThinV        = 0x20,
+  /** Used in SelfAdjointEigenSolver and GeneralizedSelfAdjointEigenSolver to specify
+    * that only the eigenvalues are to be computed and not the eigenvectors. */
+  EigenvaluesOnly     = 0x40,
+  /** Used in SelfAdjointEigenSolver and GeneralizedSelfAdjointEigenSolver to specify
+    * that both the eigenvalues and the eigenvectors are to be computed. */
+  ComputeEigenvectors = 0x80,
+  /** \internal */
+  EigVecMask = EigenvaluesOnly | ComputeEigenvectors,
+  /** Used in GeneralizedSelfAdjointEigenSolver to indicate that it should
+    * solve the generalized eigenproblem \f$ Ax = \lambda B x \f$. */
+  Ax_lBx              = 0x100,
+  /** Used in GeneralizedSelfAdjointEigenSolver to indicate that it should
+    * solve the generalized eigenproblem \f$ ABx = \lambda x \f$. */
+  ABx_lx              = 0x200,
+  /** Used in GeneralizedSelfAdjointEigenSolver to indicate that it should
+    * solve the generalized eigenproblem \f$ BAx = \lambda x \f$. */
+  BAx_lx              = 0x400,
+  /** \internal */
+  GenEigMask = Ax_lBx | ABx_lx | BAx_lx
+};
+
+/** \ingroup enums
+  * Possible values for the \p QRPreconditioner template parameter of JacobiSVD. */
+enum QRPreconditioners {
+  /** Do not specify what is to be done if the SVD of a non-square matrix is asked for. */
+  NoQRPreconditioner,
+  /** Use a QR decomposition without pivoting as the first step. */
+  HouseholderQRPreconditioner,
+  /** Use a QR decomposition with column pivoting as the first step. */
+  ColPivHouseholderQRPreconditioner,
+  /** Use a QR decomposition with full pivoting as the first step. */
+  FullPivHouseholderQRPreconditioner
+};
+
+#ifdef Success
+#error The preprocessor symbol 'Success' is defined, possibly by the X11 header file X.h
+#endif
+
+/** \ingroup enums
+  * Enum for reporting the status of a computation. */
+enum ComputationInfo {
+  /** Computation was successful. */
+  Success = 0,        
+  /** The provided data did not satisfy the prerequisites. */
+  NumericalIssue = 1, 
+  /** Iterative procedure did not converge. */
+  NoConvergence = 2,
+  /** The inputs are invalid, or the algorithm has been improperly called.
+    * When assertions are enabled, such errors trigger an assert. */
+  InvalidInput = 3
+};
+
+/** \ingroup enums
+  * Enum used to specify how a particular transformation is stored in a matrix.
+  * \sa Transform, Hyperplane::transform(). */
+enum TransformTraits {
+  /** Transformation is an isometry. */
+  Isometry      = 0x1,
+  /** Transformation is an affine transformation stored as a (Dim+1)^2 matrix whose last row is 
+    * assumed to be [0 ... 0 1]. */
+  Affine        = 0x2,
+  /** Transformation is an affine transformation stored as a (Dim) x (Dim+1) matrix. */
+  AffineCompact = 0x10 | Affine,
+  /** Transformation is a general projective transformation stored as a (Dim+1)^2 matrix. */
+  Projective    = 0x20
+};
+
+/** \internal \ingroup enums
+  * Enum used to choose between implementation depending on the computer architecture. */
+namespace Architecture
+{
+  enum Type {
+    Generic = 0x0,
+    SSE = 0x1,
+    AltiVec = 0x2,
+    VSX = 0x3,
+    NEON = 0x4,
+#if defined EIGEN_VECTORIZE_SSE
+    Target = SSE
+#elif defined EIGEN_VECTORIZE_ALTIVEC
+    Target = AltiVec
+#elif defined EIGEN_VECTORIZE_VSX
+    Target = VSX
+#elif defined EIGEN_VECTORIZE_NEON
+    Target = NEON
+#else
+    Target = Generic
+#endif
+  };
+}
+
+/** \internal \ingroup enums
+  * Enum used as template parameter in Product and product evaluators. */
+enum ProductImplType
+{ DefaultProduct=0, LazyProduct, AliasFreeProduct, CoeffBasedProductMode, LazyCoeffBasedProductMode, OuterProduct, InnerProduct, GemvProduct, GemmProduct };
+
+/** \internal \ingroup enums
+  * Enum used in experimental parallel implementation. */
+enum Action {GetAction, SetAction};
+
+/** The type used to identify a dense storage. */
+struct Dense {};
+
+/** The type used to identify a general sparse storage. */
+struct Sparse {};
+
+/** The type used to identify a general solver (factored) storage. */
+struct SolverStorage {};
+
+/** The type used to identify a permutation storage. */
+struct PermutationStorage {};
+
+/** The type used to identify a permutation storage. */
+struct TranspositionsStorage {};
+
+/** The type used to identify a matrix expression */
+struct MatrixXpr {};
+
+/** The type used to identify an array expression */
+struct ArrayXpr {};
+
+// An evaluator must define its shape. By default, it can be one of the following:
+struct DenseShape             { static std::string debugName() { return "DenseShape"; } };
+struct SolverShape            { static std::string debugName() { return "SolverShape"; } };
+struct HomogeneousShape       { static std::string debugName() { return "HomogeneousShape"; } };
+struct DiagonalShape          { static std::string debugName() { return "DiagonalShape"; } };
+struct BandShape              { static std::string debugName() { return "BandShape"; } };
+struct TriangularShape        { static std::string debugName() { return "TriangularShape"; } };
+struct SelfAdjointShape       { static std::string debugName() { return "SelfAdjointShape"; } };
+struct PermutationShape       { static std::string debugName() { return "PermutationShape"; } };
+struct TranspositionsShape    { static std::string debugName() { return "TranspositionsShape"; } };
+struct SparseShape            { static std::string debugName() { return "SparseShape"; } };
+
+namespace internal {
+
+  // random access iterators based on coeff*() accessors.
+struct IndexBased {};
+
+// evaluator based on iterators to access coefficients. 
+struct IteratorBased {};
+
+/** \internal
+ * Constants for comparison functors
+ */
+enum ComparisonName {
+  cmp_EQ = 0,
+  cmp_LT = 1,
+  cmp_LE = 2,
+  cmp_UNORD = 3,
+  cmp_NEQ = 4,
+  cmp_GT = 5,
+  cmp_GE = 6
+};
+} // end namespace internal
+
+} // end namespace Eigen
+
+#endif // EIGEN_CONSTANTS_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/util/ForwardDeclarations.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/util/ForwardDeclarations.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/util/ForwardDeclarations.h	(revision 3762)
@@ -0,0 +1,298 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2007-2010 Benoit Jacob <jacob.benoit.1@gmail.com>
+// Copyright (C) 2008-2009 Gael Guennebaud <gael.guennebaud@inria.fr>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_FORWARDDECLARATIONS_H
+#define EIGEN_FORWARDDECLARATIONS_H
+
+namespace Eigen {
+namespace internal {
+
+template<typename T> struct traits;
+
+// here we say once and for all that traits<const T> == traits<T>
+// When constness must affect traits, it has to be constness on template parameters on which T itself depends.
+// For example, traits<Map<const T> > != traits<Map<T> >, but
+//              traits<const Map<T> > == traits<Map<T> >
+template<typename T> struct traits<const T> : traits<T> {};
+
+template<typename Derived> struct has_direct_access
+{
+  enum { ret = (traits<Derived>::Flags & DirectAccessBit) ? 1 : 0 };
+};
+
+template<typename Derived> struct accessors_level
+{
+  enum { has_direct_access = (traits<Derived>::Flags & DirectAccessBit) ? 1 : 0,
+         has_write_access = (traits<Derived>::Flags & LvalueBit) ? 1 : 0,
+         value = has_direct_access ? (has_write_access ? DirectWriteAccessors : DirectAccessors)
+                                   : (has_write_access ? WriteAccessors       : ReadOnlyAccessors)
+  };
+};
+
+template<typename T> struct evaluator_traits;
+
+template< typename T> struct evaluator;
+
+} // end namespace internal
+
+template<typename T> struct NumTraits;
+
+template<typename Derived> struct EigenBase;
+template<typename Derived> class DenseBase;
+template<typename Derived> class PlainObjectBase;
+template<typename Derived, int Level> class DenseCoeffsBase;
+
+template<typename _Scalar, int _Rows, int _Cols,
+         int _Options = AutoAlign |
+#if EIGEN_GNUC_AT(3,4)
+    // workaround a bug in at least gcc 3.4.6
+    // the innermost ?: ternary operator is misparsed. We write it slightly
+    // differently and this makes gcc 3.4.6 happy, but it's ugly.
+    // The error would only show up with EIGEN_DEFAULT_TO_ROW_MAJOR is defined
+    // (when EIGEN_DEFAULT_MATRIX_STORAGE_ORDER_OPTION is RowMajor)
+                          ( (_Rows==1 && _Cols!=1) ? Eigen::RowMajor
+                          : !(_Cols==1 && _Rows!=1) ?  EIGEN_DEFAULT_MATRIX_STORAGE_ORDER_OPTION
+                          : Eigen::ColMajor ),
+#else
+                          ( (_Rows==1 && _Cols!=1) ? Eigen::RowMajor
+                          : (_Cols==1 && _Rows!=1) ? Eigen::ColMajor
+                          : EIGEN_DEFAULT_MATRIX_STORAGE_ORDER_OPTION ),
+#endif
+         int _MaxRows = _Rows,
+         int _MaxCols = _Cols
+> class Matrix;
+
+template<typename Derived> class MatrixBase;
+template<typename Derived> class ArrayBase;
+
+template<typename ExpressionType, unsigned int Added, unsigned int Removed> class Flagged;
+template<typename ExpressionType, template <typename> class StorageBase > class NoAlias;
+template<typename ExpressionType> class NestByValue;
+template<typename ExpressionType> class ForceAlignedAccess;
+template<typename ExpressionType> class SwapWrapper;
+
+template<typename XprType, int BlockRows=Dynamic, int BlockCols=Dynamic, bool InnerPanel = false> class Block;
+
+template<typename MatrixType, int Size=Dynamic> class VectorBlock;
+template<typename MatrixType> class Transpose;
+template<typename MatrixType> class Conjugate;
+template<typename NullaryOp, typename MatrixType>         class CwiseNullaryOp;
+template<typename UnaryOp,   typename MatrixType>         class CwiseUnaryOp;
+template<typename ViewOp,    typename MatrixType>         class CwiseUnaryView;
+template<typename BinaryOp,  typename Lhs, typename Rhs>  class CwiseBinaryOp;
+template<typename TernaryOp, typename Arg1, typename Arg2, typename Arg3>  class CwiseTernaryOp;
+template<typename Decomposition, typename Rhstype>        class Solve;
+template<typename XprType>                                class Inverse;
+
+template<typename Lhs, typename Rhs, int Option = DefaultProduct> class Product;
+
+template<typename Derived> class DiagonalBase;
+template<typename _DiagonalVectorType> class DiagonalWrapper;
+template<typename _Scalar, int SizeAtCompileTime, int MaxSizeAtCompileTime=SizeAtCompileTime> class DiagonalMatrix;
+template<typename MatrixType, typename DiagonalType, int ProductOrder> class DiagonalProduct;
+template<typename MatrixType, int Index = 0> class Diagonal;
+template<int SizeAtCompileTime, int MaxSizeAtCompileTime = SizeAtCompileTime, typename IndexType=int> class PermutationMatrix;
+template<int SizeAtCompileTime, int MaxSizeAtCompileTime = SizeAtCompileTime, typename IndexType=int> class Transpositions;
+template<typename Derived> class PermutationBase;
+template<typename Derived> class TranspositionsBase;
+template<typename _IndicesType> class PermutationWrapper;
+template<typename _IndicesType> class TranspositionsWrapper;
+
+template<typename Derived,
+         int Level = internal::accessors_level<Derived>::has_write_access ? WriteAccessors : ReadOnlyAccessors
+> class MapBase;
+template<int InnerStrideAtCompileTime, int OuterStrideAtCompileTime> class Stride;
+template<int Value = Dynamic> class InnerStride;
+template<int Value = Dynamic> class OuterStride;
+template<typename MatrixType, int MapOptions=Unaligned, typename StrideType = Stride<0,0> > class Map;
+template<typename Derived> class RefBase;
+template<typename PlainObjectType, int Options = 0,
+         typename StrideType = typename internal::conditional<PlainObjectType::IsVectorAtCompileTime,InnerStride<1>,OuterStride<> >::type > class Ref;
+
+template<typename Derived> class TriangularBase;
+template<typename MatrixType, unsigned int Mode> class TriangularView;
+template<typename MatrixType, unsigned int Mode> class SelfAdjointView;
+template<typename MatrixType> class SparseView;
+template<typename ExpressionType> class WithFormat;
+template<typename MatrixType> struct CommaInitializer;
+template<typename Derived> class ReturnByValue;
+template<typename ExpressionType> class ArrayWrapper;
+template<typename ExpressionType> class MatrixWrapper;
+template<typename Derived> class SolverBase;
+template<typename XprType> class InnerIterator;
+
+namespace internal {
+template<typename DecompositionType> struct kernel_retval_base;
+template<typename DecompositionType> struct kernel_retval;
+template<typename DecompositionType> struct image_retval_base;
+template<typename DecompositionType> struct image_retval;
+} // end namespace internal
+
+namespace internal {
+template<typename _Scalar, int Rows=Dynamic, int Cols=Dynamic, int Supers=Dynamic, int Subs=Dynamic, int Options=0> class BandMatrix;
+}
+
+namespace internal {
+template<typename Lhs, typename Rhs> struct product_type;
+
+template<bool> struct EnableIf;
+
+/** \internal
+  * \class product_evaluator
+  * Products need their own evaluator with more template arguments allowing for
+  * easier partial template specializations.
+  */
+template< typename T,
+          int ProductTag = internal::product_type<typename T::Lhs,typename T::Rhs>::ret,
+          typename LhsShape = typename evaluator_traits<typename T::Lhs>::Shape,
+          typename RhsShape = typename evaluator_traits<typename T::Rhs>::Shape,
+          typename LhsScalar = typename traits<typename T::Lhs>::Scalar,
+          typename RhsScalar = typename traits<typename T::Rhs>::Scalar
+        > struct product_evaluator;
+}
+
+template<typename Lhs, typename Rhs,
+         int ProductType = internal::product_type<Lhs,Rhs>::value>
+struct ProductReturnType;
+
+// this is a workaround for sun CC
+template<typename Lhs, typename Rhs> struct LazyProductReturnType;
+
+namespace internal {
+
+// Provides scalar/packet-wise product and product with accumulation
+// with optional conjugation of the arguments.
+template<typename LhsScalar, typename RhsScalar, bool ConjLhs=false, bool ConjRhs=false> struct conj_helper;
+
+template<typename LhsScalar,typename RhsScalar=LhsScalar> struct scalar_sum_op;
+template<typename LhsScalar,typename RhsScalar=LhsScalar> struct scalar_difference_op;
+template<typename LhsScalar,typename RhsScalar=LhsScalar> struct scalar_conj_product_op;
+template<typename LhsScalar,typename RhsScalar=LhsScalar> struct scalar_min_op;
+template<typename LhsScalar,typename RhsScalar=LhsScalar> struct scalar_max_op;
+template<typename Scalar> struct scalar_opposite_op;
+template<typename Scalar> struct scalar_conjugate_op;
+template<typename Scalar> struct scalar_real_op;
+template<typename Scalar> struct scalar_imag_op;
+template<typename Scalar> struct scalar_abs_op;
+template<typename Scalar> struct scalar_abs2_op;
+template<typename Scalar> struct scalar_sqrt_op;
+template<typename Scalar> struct scalar_rsqrt_op;
+template<typename Scalar> struct scalar_exp_op;
+template<typename Scalar> struct scalar_log_op;
+template<typename Scalar> struct scalar_cos_op;
+template<typename Scalar> struct scalar_sin_op;
+template<typename Scalar> struct scalar_acos_op;
+template<typename Scalar> struct scalar_asin_op;
+template<typename Scalar> struct scalar_tan_op;
+template<typename Scalar> struct scalar_inverse_op;
+template<typename Scalar> struct scalar_square_op;
+template<typename Scalar> struct scalar_cube_op;
+template<typename Scalar, typename NewType> struct scalar_cast_op;
+template<typename Scalar> struct scalar_random_op;
+template<typename Scalar> struct scalar_constant_op;
+template<typename Scalar> struct scalar_identity_op;
+template<typename Scalar,bool iscpx> struct scalar_sign_op;
+template<typename Scalar,typename ScalarExponent> struct scalar_pow_op;
+template<typename LhsScalar,typename RhsScalar=LhsScalar> struct scalar_hypot_op;
+template<typename LhsScalar,typename RhsScalar=LhsScalar> struct scalar_product_op;
+template<typename LhsScalar,typename RhsScalar=LhsScalar> struct scalar_quotient_op;
+
+// SpecialFunctions module
+template<typename Scalar> struct scalar_lgamma_op;
+template<typename Scalar> struct scalar_digamma_op;
+template<typename Scalar> struct scalar_erf_op;
+template<typename Scalar> struct scalar_erfc_op;
+template<typename Scalar> struct scalar_igamma_op;
+template<typename Scalar> struct scalar_igammac_op;
+template<typename Scalar> struct scalar_zeta_op;
+template<typename Scalar> struct scalar_betainc_op;
+
+} // end namespace internal
+
+struct IOFormat;
+
+// Array module
+template<typename _Scalar, int _Rows, int _Cols,
+         int _Options = AutoAlign |
+#if EIGEN_GNUC_AT(3,4)
+    // workaround a bug in at least gcc 3.4.6
+    // the innermost ?: ternary operator is misparsed. We write it slightly
+    // differently and this makes gcc 3.4.6 happy, but it's ugly.
+    // The error would only show up with EIGEN_DEFAULT_TO_ROW_MAJOR is defined
+    // (when EIGEN_DEFAULT_MATRIX_STORAGE_ORDER_OPTION is RowMajor)
+                          ( (_Rows==1 && _Cols!=1) ? Eigen::RowMajor
+                          : !(_Cols==1 && _Rows!=1) ?  EIGEN_DEFAULT_MATRIX_STORAGE_ORDER_OPTION
+                          : Eigen::ColMajor ),
+#else
+                          ( (_Rows==1 && _Cols!=1) ? Eigen::RowMajor
+                          : (_Cols==1 && _Rows!=1) ? Eigen::ColMajor
+                          : EIGEN_DEFAULT_MATRIX_STORAGE_ORDER_OPTION ),
+#endif
+         int _MaxRows = _Rows, int _MaxCols = _Cols> class Array;
+template<typename ConditionMatrixType, typename ThenMatrixType, typename ElseMatrixType> class Select;
+template<typename MatrixType, typename BinaryOp, int Direction> class PartialReduxExpr;
+template<typename ExpressionType, int Direction> class VectorwiseOp;
+template<typename MatrixType,int RowFactor,int ColFactor> class Replicate;
+template<typename MatrixType, int Direction = BothDirections> class Reverse;
+
+template<typename MatrixType> class FullPivLU;
+template<typename MatrixType> class PartialPivLU;
+namespace internal {
+template<typename MatrixType> struct inverse_impl;
+}
+template<typename MatrixType> class HouseholderQR;
+template<typename MatrixType> class ColPivHouseholderQR;
+template<typename MatrixType> class FullPivHouseholderQR;
+template<typename MatrixType> class CompleteOrthogonalDecomposition;
+template<typename MatrixType, int QRPreconditioner = ColPivHouseholderQRPreconditioner> class JacobiSVD;
+template<typename MatrixType> class BDCSVD;
+template<typename MatrixType, int UpLo = Lower> class LLT;
+template<typename MatrixType, int UpLo = Lower> class LDLT;
+template<typename VectorsType, typename CoeffsType, int Side=OnTheLeft> class HouseholderSequence;
+template<typename Scalar>     class JacobiRotation;
+
+// Geometry module:
+template<typename Derived, int _Dim> class RotationBase;
+template<typename Lhs, typename Rhs> class Cross;
+template<typename Derived> class QuaternionBase;
+template<typename Scalar> class Rotation2D;
+template<typename Scalar> class AngleAxis;
+template<typename Scalar,int Dim> class Translation;
+template<typename Scalar,int Dim> class AlignedBox;
+template<typename Scalar, int Options = AutoAlign> class Quaternion;
+template<typename Scalar,int Dim,int Mode,int _Options=AutoAlign> class Transform;
+template <typename _Scalar, int _AmbientDim, int Options=AutoAlign> class ParametrizedLine;
+template <typename _Scalar, int _AmbientDim, int Options=AutoAlign> class Hyperplane;
+template<typename Scalar> class UniformScaling;
+template<typename MatrixType,int Direction> class Homogeneous;
+
+// Sparse module:
+template<typename Derived> class SparseMatrixBase;
+
+// MatrixFunctions module
+template<typename Derived> struct MatrixExponentialReturnValue;
+template<typename Derived> class MatrixFunctionReturnValue;
+template<typename Derived> class MatrixSquareRootReturnValue;
+template<typename Derived> class MatrixLogarithmReturnValue;
+template<typename Derived> class MatrixPowerReturnValue;
+template<typename Derived> class MatrixComplexPowerReturnValue;
+
+namespace internal {
+template <typename Scalar>
+struct stem_function
+{
+  typedef std::complex<typename NumTraits<Scalar>::Real> ComplexScalar;
+  typedef ComplexScalar type(ComplexScalar, int);
+};
+}
+
+} // end namespace Eigen
+
+#endif // EIGEN_FORWARDDECLARATIONS_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/util/BlasUtil.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/util/BlasUtil.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/util/BlasUtil.h	(revision 3762)
@@ -0,0 +1,499 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2009-2010 Gael Guennebaud <gael.guennebaud@inria.fr>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_BLASUTIL_H
+#define EIGEN_BLASUTIL_H
+
+// This file contains many lightweight helper classes used to
+// implement and control fast level 2 and level 3 BLAS-like routines.
+
+namespace Eigen {
+
+namespace internal {
+
+// forward declarations
+template<typename LhsScalar, typename RhsScalar, typename Index, typename DataMapper, int mr, int nr, bool ConjugateLhs=false, bool ConjugateRhs=false>
+struct gebp_kernel;
+
+template<typename Scalar, typename Index, typename DataMapper, int nr, int StorageOrder, bool Conjugate = false, bool PanelMode=false>
+struct gemm_pack_rhs;
+
+template<typename Scalar, typename Index, typename DataMapper, int Pack1, int Pack2, int StorageOrder, bool Conjugate = false, bool PanelMode = false>
+struct gemm_pack_lhs;
+
+template<
+  typename Index,
+  typename LhsScalar, int LhsStorageOrder, bool ConjugateLhs,
+  typename RhsScalar, int RhsStorageOrder, bool ConjugateRhs,
+  int ResStorageOrder, int ResInnerStride>
+struct general_matrix_matrix_product;
+
+template<typename Index,
+         typename LhsScalar, typename LhsMapper, int LhsStorageOrder, bool ConjugateLhs,
+         typename RhsScalar, typename RhsMapper, bool ConjugateRhs, int Version=Specialized>
+struct general_matrix_vector_product;
+
+
+template<bool Conjugate> struct conj_if;
+
+template<> struct conj_if<true> {
+  template<typename T>
+  inline T operator()(const T& x) const { return numext::conj(x); }
+  template<typename T>
+  inline T pconj(const T& x) const { return internal::pconj(x); }
+};
+
+template<> struct conj_if<false> {
+  template<typename T>
+  inline const T& operator()(const T& x) const { return x; }
+  template<typename T>
+  inline const T& pconj(const T& x) const { return x; }
+};
+
+// Generic implementation for custom complex types.
+template<typename LhsScalar, typename RhsScalar, bool ConjLhs, bool ConjRhs>
+struct conj_helper
+{
+  typedef typename ScalarBinaryOpTraits<LhsScalar,RhsScalar>::ReturnType Scalar;
+
+  EIGEN_STRONG_INLINE Scalar pmadd(const LhsScalar& x, const RhsScalar& y, const Scalar& c) const
+  { return padd(c, pmul(x,y)); }
+
+  EIGEN_STRONG_INLINE Scalar pmul(const LhsScalar& x, const RhsScalar& y) const
+  { return conj_if<ConjLhs>()(x) *  conj_if<ConjRhs>()(y); }
+};
+
+template<typename Scalar> struct conj_helper<Scalar,Scalar,false,false>
+{
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar pmadd(const Scalar& x, const Scalar& y, const Scalar& c) const { return internal::pmadd(x,y,c); }
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar pmul(const Scalar& x, const Scalar& y) const { return internal::pmul(x,y); }
+};
+
+template<typename RealScalar> struct conj_helper<std::complex<RealScalar>, std::complex<RealScalar>, false,true>
+{
+  typedef std::complex<RealScalar> Scalar;
+  EIGEN_STRONG_INLINE Scalar pmadd(const Scalar& x, const Scalar& y, const Scalar& c) const
+  { return c + pmul(x,y); }
+
+  EIGEN_STRONG_INLINE Scalar pmul(const Scalar& x, const Scalar& y) const
+  { return Scalar(numext::real(x)*numext::real(y) + numext::imag(x)*numext::imag(y), numext::imag(x)*numext::real(y) - numext::real(x)*numext::imag(y)); }
+};
+
+template<typename RealScalar> struct conj_helper<std::complex<RealScalar>, std::complex<RealScalar>, true,false>
+{
+  typedef std::complex<RealScalar> Scalar;
+  EIGEN_STRONG_INLINE Scalar pmadd(const Scalar& x, const Scalar& y, const Scalar& c) const
+  { return c + pmul(x,y); }
+
+  EIGEN_STRONG_INLINE Scalar pmul(const Scalar& x, const Scalar& y) const
+  { return Scalar(numext::real(x)*numext::real(y) + numext::imag(x)*numext::imag(y), numext::real(x)*numext::imag(y) - numext::imag(x)*numext::real(y)); }
+};
+
+template<typename RealScalar> struct conj_helper<std::complex<RealScalar>, std::complex<RealScalar>, true,true>
+{
+  typedef std::complex<RealScalar> Scalar;
+  EIGEN_STRONG_INLINE Scalar pmadd(const Scalar& x, const Scalar& y, const Scalar& c) const
+  { return c + pmul(x,y); }
+
+  EIGEN_STRONG_INLINE Scalar pmul(const Scalar& x, const Scalar& y) const
+  { return Scalar(numext::real(x)*numext::real(y) - numext::imag(x)*numext::imag(y), - numext::real(x)*numext::imag(y) - numext::imag(x)*numext::real(y)); }
+};
+
+template<typename RealScalar,bool Conj> struct conj_helper<std::complex<RealScalar>, RealScalar, Conj,false>
+{
+  typedef std::complex<RealScalar> Scalar;
+  EIGEN_STRONG_INLINE Scalar pmadd(const Scalar& x, const RealScalar& y, const Scalar& c) const
+  { return padd(c, pmul(x,y)); }
+  EIGEN_STRONG_INLINE Scalar pmul(const Scalar& x, const RealScalar& y) const
+  { return conj_if<Conj>()(x)*y; }
+};
+
+template<typename RealScalar,bool Conj> struct conj_helper<RealScalar, std::complex<RealScalar>, false,Conj>
+{
+  typedef std::complex<RealScalar> Scalar;
+  EIGEN_STRONG_INLINE Scalar pmadd(const RealScalar& x, const Scalar& y, const Scalar& c) const
+  { return padd(c, pmul(x,y)); }
+  EIGEN_STRONG_INLINE Scalar pmul(const RealScalar& x, const Scalar& y) const
+  { return x*conj_if<Conj>()(y); }
+};
+
+template<typename From,typename To> struct get_factor {
+  EIGEN_DEVICE_FUNC static EIGEN_STRONG_INLINE To run(const From& x) { return To(x); }
+};
+
+template<typename Scalar> struct get_factor<Scalar,typename NumTraits<Scalar>::Real> {
+  EIGEN_DEVICE_FUNC
+  static EIGEN_STRONG_INLINE typename NumTraits<Scalar>::Real run(const Scalar& x) { return numext::real(x); }
+};
+
+
+template<typename Scalar, typename Index>
+class BlasVectorMapper {
+  public:
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE BlasVectorMapper(Scalar *data) : m_data(data) {}
+
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE Scalar operator()(Index i) const {
+    return m_data[i];
+  }
+  template <typename Packet, int AlignmentType>
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE Packet load(Index i) const {
+    return ploadt<Packet, AlignmentType>(m_data + i);
+  }
+
+  template <typename Packet>
+  EIGEN_DEVICE_FUNC bool aligned(Index i) const {
+    return (UIntPtr(m_data+i)%sizeof(Packet))==0;
+  }
+
+  protected:
+  Scalar* m_data;
+};
+
+template<typename Scalar, typename Index, int AlignmentType, int Incr=1>
+class BlasLinearMapper;
+
+template<typename Scalar, typename Index, int AlignmentType>
+class BlasLinearMapper<Scalar,Index,AlignmentType,1> {
+  public:
+  typedef typename packet_traits<Scalar>::type Packet;
+  typedef typename packet_traits<Scalar>::half HalfPacket;
+
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE BlasLinearMapper(Scalar *data, Index incr=1)
+    : m_data(data)
+  {
+    EIGEN_ONLY_USED_FOR_DEBUG(incr);
+    eigen_assert(incr==1);
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE void prefetch(int i) const {
+    internal::prefetch(&operator()(i));
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE Scalar& operator()(Index i) const {
+    return m_data[i];
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE Packet loadPacket(Index i) const {
+    return ploadt<Packet, AlignmentType>(m_data + i);
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE HalfPacket loadHalfPacket(Index i) const {
+    return ploadt<HalfPacket, AlignmentType>(m_data + i);
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE void storePacket(Index i, const Packet &p) const {
+    pstoret<Scalar, Packet, AlignmentType>(m_data + i, p);
+  }
+
+  protected:
+  Scalar *m_data;
+};
+
+// Lightweight helper class to access matrix coefficients.
+template<typename Scalar, typename Index, int StorageOrder, int AlignmentType = Unaligned, int Incr = 1>
+class blas_data_mapper;
+
+template<typename Scalar, typename Index, int StorageOrder, int AlignmentType>
+class blas_data_mapper<Scalar,Index,StorageOrder,AlignmentType,1>
+{
+public:
+  typedef typename packet_traits<Scalar>::type Packet;
+  typedef typename packet_traits<Scalar>::half HalfPacket;
+
+  typedef BlasLinearMapper<Scalar, Index, AlignmentType> LinearMapper;
+  typedef BlasVectorMapper<Scalar, Index> VectorMapper;
+
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE blas_data_mapper(Scalar* data, Index stride, Index incr=1)
+   : m_data(data), m_stride(stride)
+  {
+    EIGEN_ONLY_USED_FOR_DEBUG(incr);
+    eigen_assert(incr==1);
+  }
+
+  EIGEN_DEVICE_FUNC  EIGEN_ALWAYS_INLINE blas_data_mapper<Scalar, Index, StorageOrder, AlignmentType>
+  getSubMapper(Index i, Index j) const {
+    return blas_data_mapper<Scalar, Index, StorageOrder, AlignmentType>(&operator()(i, j), m_stride);
+  }
+
+  EIGEN_DEVICE_FUNC  EIGEN_ALWAYS_INLINE LinearMapper getLinearMapper(Index i, Index j) const {
+    return LinearMapper(&operator()(i, j));
+  }
+
+  EIGEN_DEVICE_FUNC  EIGEN_ALWAYS_INLINE VectorMapper getVectorMapper(Index i, Index j) const {
+    return VectorMapper(&operator()(i, j));
+  }
+
+
+  EIGEN_DEVICE_FUNC
+  EIGEN_ALWAYS_INLINE Scalar& operator()(Index i, Index j) const {
+    return m_data[StorageOrder==RowMajor ? j + i*m_stride : i + j*m_stride];
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE Packet loadPacket(Index i, Index j) const {
+    return ploadt<Packet, AlignmentType>(&operator()(i, j));
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE HalfPacket loadHalfPacket(Index i, Index j) const {
+    return ploadt<HalfPacket, AlignmentType>(&operator()(i, j));
+  }
+
+  template<typename SubPacket>
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE void scatterPacket(Index i, Index j, const SubPacket &p) const {
+    pscatter<Scalar, SubPacket>(&operator()(i, j), p, m_stride);
+  }
+
+  template<typename SubPacket>
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE SubPacket gatherPacket(Index i, Index j) const {
+    return pgather<Scalar, SubPacket>(&operator()(i, j), m_stride);
+  }
+
+  EIGEN_DEVICE_FUNC const Index stride() const { return m_stride; }
+  EIGEN_DEVICE_FUNC const Scalar* data() const { return m_data; }
+
+  EIGEN_DEVICE_FUNC Index firstAligned(Index size) const {
+    if (UIntPtr(m_data)%sizeof(Scalar)) {
+      return -1;
+    }
+    return internal::first_default_aligned(m_data, size);
+  }
+
+  protected:
+  Scalar* EIGEN_RESTRICT m_data;
+  const Index m_stride;
+};
+
+// Implementation of non-natural increment (i.e. inner-stride != 1)
+// The exposed API is not complete yet compared to the Incr==1 case
+// because some features makes less sense in this case.
+template<typename Scalar, typename Index, int AlignmentType, int Incr>
+class BlasLinearMapper
+{
+public:
+  typedef typename packet_traits<Scalar>::type Packet;
+  typedef typename packet_traits<Scalar>::half HalfPacket;
+
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE BlasLinearMapper(Scalar *data,Index incr) : m_data(data), m_incr(incr) {}
+
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE void prefetch(int i) const {
+    internal::prefetch(&operator()(i));
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE Scalar& operator()(Index i) const {
+    return m_data[i*m_incr.value()];
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE Packet loadPacket(Index i) const {
+    return pgather<Scalar,Packet>(m_data + i*m_incr.value(), m_incr.value());
+  }
+
+  template<typename PacketType>
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE void storePacket(Index i, const PacketType &p) const {
+    pscatter<Scalar, PacketType>(m_data + i*m_incr.value(), p, m_incr.value());
+  }
+
+protected:
+  Scalar *m_data;
+  const internal::variable_if_dynamic<Index,Incr> m_incr;
+};
+
+template<typename Scalar, typename Index, int StorageOrder, int AlignmentType,int Incr>
+class blas_data_mapper
+{
+public:
+  typedef typename packet_traits<Scalar>::type Packet;
+  typedef typename packet_traits<Scalar>::half HalfPacket;
+
+  typedef BlasLinearMapper<Scalar, Index, AlignmentType,Incr> LinearMapper;
+
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE blas_data_mapper(Scalar* data, Index stride, Index incr) : m_data(data), m_stride(stride), m_incr(incr) {}
+
+  EIGEN_DEVICE_FUNC  EIGEN_ALWAYS_INLINE blas_data_mapper
+  getSubMapper(Index i, Index j) const {
+    return blas_data_mapper(&operator()(i, j), m_stride, m_incr.value());
+  }
+
+  EIGEN_DEVICE_FUNC  EIGEN_ALWAYS_INLINE LinearMapper getLinearMapper(Index i, Index j) const {
+    return LinearMapper(&operator()(i, j), m_incr.value());
+  }
+
+  EIGEN_DEVICE_FUNC
+  EIGEN_ALWAYS_INLINE Scalar& operator()(Index i, Index j) const {
+    return m_data[StorageOrder==RowMajor ? j*m_incr.value() + i*m_stride : i*m_incr.value() + j*m_stride];
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE Packet loadPacket(Index i, Index j) const {
+    return pgather<Scalar,Packet>(&operator()(i, j),m_incr.value());
+  }
+
+  template <typename PacketT, int AlignmentT>
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE PacketT load(Index i, Index j) const {
+    return pgather<Scalar,PacketT>(&operator()(i, j),m_incr.value());
+  }
+
+  template<typename SubPacket>
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE void scatterPacket(Index i, Index j, const SubPacket &p) const {
+    pscatter<Scalar, SubPacket>(&operator()(i, j), p, m_stride);
+  }
+
+  template<typename SubPacket>
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE SubPacket gatherPacket(Index i, Index j) const {
+    return pgather<Scalar, SubPacket>(&operator()(i, j), m_stride);
+  }
+
+protected:
+  Scalar* EIGEN_RESTRICT m_data;
+  const Index m_stride;
+  const internal::variable_if_dynamic<Index,Incr> m_incr;
+};
+
+// lightweight helper class to access matrix coefficients (const version)
+template<typename Scalar, typename Index, int StorageOrder>
+class const_blas_data_mapper : public blas_data_mapper<const Scalar, Index, StorageOrder> {
+  public:
+  EIGEN_ALWAYS_INLINE const_blas_data_mapper(const Scalar *data, Index stride) : blas_data_mapper<const Scalar, Index, StorageOrder>(data, stride) {}
+
+  EIGEN_ALWAYS_INLINE const_blas_data_mapper<Scalar, Index, StorageOrder> getSubMapper(Index i, Index j) const {
+    return const_blas_data_mapper<Scalar, Index, StorageOrder>(&(this->operator()(i, j)), this->m_stride);
+  }
+};
+
+
+/* Helper class to analyze the factors of a Product expression.
+ * In particular it allows to pop out operator-, scalar multiples,
+ * and conjugate */
+template<typename XprType> struct blas_traits
+{
+  typedef typename traits<XprType>::Scalar Scalar;
+  typedef const XprType& ExtractType;
+  typedef XprType _ExtractType;
+  enum {
+    IsComplex = NumTraits<Scalar>::IsComplex,
+    IsTransposed = false,
+    NeedToConjugate = false,
+    HasUsableDirectAccess = (    (int(XprType::Flags)&DirectAccessBit)
+                              && (   bool(XprType::IsVectorAtCompileTime)
+                                  || int(inner_stride_at_compile_time<XprType>::ret) == 1)
+                             ) ?  1 : 0
+  };
+  typedef typename conditional<bool(HasUsableDirectAccess),
+    ExtractType,
+    typename _ExtractType::PlainObject
+    >::type DirectLinearAccessType;
+  static inline ExtractType extract(const XprType& x) { return x; }
+  static inline const Scalar extractScalarFactor(const XprType&) { return Scalar(1); }
+};
+
+// pop conjugate
+template<typename Scalar, typename NestedXpr>
+struct blas_traits<CwiseUnaryOp<scalar_conjugate_op<Scalar>, NestedXpr> >
+ : blas_traits<NestedXpr>
+{
+  typedef blas_traits<NestedXpr> Base;
+  typedef CwiseUnaryOp<scalar_conjugate_op<Scalar>, NestedXpr> XprType;
+  typedef typename Base::ExtractType ExtractType;
+
+  enum {
+    IsComplex = NumTraits<Scalar>::IsComplex,
+    NeedToConjugate = Base::NeedToConjugate ? 0 : IsComplex
+  };
+  static inline ExtractType extract(const XprType& x) { return Base::extract(x.nestedExpression()); }
+  static inline Scalar extractScalarFactor(const XprType& x) { return conj(Base::extractScalarFactor(x.nestedExpression())); }
+};
+
+// pop scalar multiple
+template<typename Scalar, typename NestedXpr, typename Plain>
+struct blas_traits<CwiseBinaryOp<scalar_product_op<Scalar>, const CwiseNullaryOp<scalar_constant_op<Scalar>,Plain>, NestedXpr> >
+ : blas_traits<NestedXpr>
+{
+  typedef blas_traits<NestedXpr> Base;
+  typedef CwiseBinaryOp<scalar_product_op<Scalar>, const CwiseNullaryOp<scalar_constant_op<Scalar>,Plain>, NestedXpr> XprType;
+  typedef typename Base::ExtractType ExtractType;
+  static inline ExtractType extract(const XprType& x) { return Base::extract(x.rhs()); }
+  static inline Scalar extractScalarFactor(const XprType& x)
+  { return x.lhs().functor().m_other * Base::extractScalarFactor(x.rhs()); }
+};
+template<typename Scalar, typename NestedXpr, typename Plain>
+struct blas_traits<CwiseBinaryOp<scalar_product_op<Scalar>, NestedXpr, const CwiseNullaryOp<scalar_constant_op<Scalar>,Plain> > >
+ : blas_traits<NestedXpr>
+{
+  typedef blas_traits<NestedXpr> Base;
+  typedef CwiseBinaryOp<scalar_product_op<Scalar>, NestedXpr, const CwiseNullaryOp<scalar_constant_op<Scalar>,Plain> > XprType;
+  typedef typename Base::ExtractType ExtractType;
+  static inline ExtractType extract(const XprType& x) { return Base::extract(x.lhs()); }
+  static inline Scalar extractScalarFactor(const XprType& x)
+  { return Base::extractScalarFactor(x.lhs()) * x.rhs().functor().m_other; }
+};
+template<typename Scalar, typename Plain1, typename Plain2>
+struct blas_traits<CwiseBinaryOp<scalar_product_op<Scalar>, const CwiseNullaryOp<scalar_constant_op<Scalar>,Plain1>,
+                                                            const CwiseNullaryOp<scalar_constant_op<Scalar>,Plain2> > >
+ : blas_traits<CwiseNullaryOp<scalar_constant_op<Scalar>,Plain1> >
+{};
+
+// pop opposite
+template<typename Scalar, typename NestedXpr>
+struct blas_traits<CwiseUnaryOp<scalar_opposite_op<Scalar>, NestedXpr> >
+ : blas_traits<NestedXpr>
+{
+  typedef blas_traits<NestedXpr> Base;
+  typedef CwiseUnaryOp<scalar_opposite_op<Scalar>, NestedXpr> XprType;
+  typedef typename Base::ExtractType ExtractType;
+  static inline ExtractType extract(const XprType& x) { return Base::extract(x.nestedExpression()); }
+  static inline Scalar extractScalarFactor(const XprType& x)
+  { return - Base::extractScalarFactor(x.nestedExpression()); }
+};
+
+// pop/push transpose
+template<typename NestedXpr>
+struct blas_traits<Transpose<NestedXpr> >
+ : blas_traits<NestedXpr>
+{
+  typedef typename NestedXpr::Scalar Scalar;
+  typedef blas_traits<NestedXpr> Base;
+  typedef Transpose<NestedXpr> XprType;
+  typedef Transpose<const typename Base::_ExtractType>  ExtractType; // const to get rid of a compile error; anyway blas traits are only used on the RHS
+  typedef Transpose<const typename Base::_ExtractType> _ExtractType;
+  typedef typename conditional<bool(Base::HasUsableDirectAccess),
+    ExtractType,
+    typename ExtractType::PlainObject
+    >::type DirectLinearAccessType;
+  enum {
+    IsTransposed = Base::IsTransposed ? 0 : 1
+  };
+  static inline ExtractType extract(const XprType& x) { return ExtractType(Base::extract(x.nestedExpression())); }
+  static inline Scalar extractScalarFactor(const XprType& x) { return Base::extractScalarFactor(x.nestedExpression()); }
+};
+
+template<typename T>
+struct blas_traits<const T>
+     : blas_traits<T>
+{};
+
+template<typename T, bool HasUsableDirectAccess=blas_traits<T>::HasUsableDirectAccess>
+struct extract_data_selector {
+  static const typename T::Scalar* run(const T& m)
+  {
+    return blas_traits<T>::extract(m).data();
+  }
+};
+
+template<typename T>
+struct extract_data_selector<T,false> {
+  static typename T::Scalar* run(const T&) { return 0; }
+};
+
+template<typename T> const typename T::Scalar* extract_data(const T& m)
+{
+  return extract_data_selector<T>::run(m);
+}
+
+} // end namespace internal
+
+} // end namespace Eigen
+
+#endif // EIGEN_BLASUTIL_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/util/MKL_support.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/util/MKL_support.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/util/MKL_support.h	(revision 3762)
@@ -0,0 +1,130 @@
+/*
+ Copyright (c) 2011, Intel Corporation. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice, this
+   list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+   this list of conditions and the following disclaimer in the documentation
+   and/or other materials provided with the distribution.
+ * Neither the name of Intel Corporation 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 OWNER 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.
+
+ ********************************************************************************
+ *   Content : Eigen bindings to Intel(R) MKL
+ *   Include file with common MKL declarations
+ ********************************************************************************
+*/
+
+#ifndef EIGEN_MKL_SUPPORT_H
+#define EIGEN_MKL_SUPPORT_H
+
+#ifdef EIGEN_USE_MKL_ALL
+  #ifndef EIGEN_USE_BLAS
+    #define EIGEN_USE_BLAS
+  #endif
+  #ifndef EIGEN_USE_LAPACKE
+    #define EIGEN_USE_LAPACKE
+  #endif
+  #ifndef EIGEN_USE_MKL_VML
+    #define EIGEN_USE_MKL_VML
+  #endif
+#endif
+
+#ifdef EIGEN_USE_LAPACKE_STRICT
+  #define EIGEN_USE_LAPACKE
+#endif
+
+#if defined(EIGEN_USE_MKL_VML) && !defined(EIGEN_USE_MKL)
+  #define EIGEN_USE_MKL
+#endif
+
+
+#if defined EIGEN_USE_MKL
+#   include <mkl.h> 
+/*Check IMKL version for compatibility: < 10.3 is not usable with Eigen*/
+#   ifndef INTEL_MKL_VERSION
+#       undef EIGEN_USE_MKL /* INTEL_MKL_VERSION is not even defined on older versions */
+#   elif INTEL_MKL_VERSION < 100305    /* the intel-mkl-103-release-notes say this was when the lapacke.h interface was added*/
+#       undef EIGEN_USE_MKL
+#   endif
+#   ifndef EIGEN_USE_MKL
+    /*If the MKL version is too old, undef everything*/
+#       undef   EIGEN_USE_MKL_ALL
+#       undef   EIGEN_USE_LAPACKE
+#       undef   EIGEN_USE_MKL_VML
+#       undef   EIGEN_USE_LAPACKE_STRICT
+#       undef   EIGEN_USE_LAPACKE
+#   endif
+#endif
+
+#if defined EIGEN_USE_MKL
+
+#define EIGEN_MKL_VML_THRESHOLD 128
+
+/* MKL_DOMAIN_BLAS, etc are defined only in 10.3 update 7 */
+/* MKL_BLAS, etc are not defined in 11.2 */
+#ifdef MKL_DOMAIN_ALL
+#define EIGEN_MKL_DOMAIN_ALL MKL_DOMAIN_ALL
+#else
+#define EIGEN_MKL_DOMAIN_ALL MKL_ALL
+#endif
+
+#ifdef MKL_DOMAIN_BLAS
+#define EIGEN_MKL_DOMAIN_BLAS MKL_DOMAIN_BLAS
+#else
+#define EIGEN_MKL_DOMAIN_BLAS MKL_BLAS
+#endif
+
+#ifdef MKL_DOMAIN_FFT
+#define EIGEN_MKL_DOMAIN_FFT MKL_DOMAIN_FFT
+#else
+#define EIGEN_MKL_DOMAIN_FFT MKL_FFT
+#endif
+
+#ifdef MKL_DOMAIN_VML
+#define EIGEN_MKL_DOMAIN_VML MKL_DOMAIN_VML
+#else
+#define EIGEN_MKL_DOMAIN_VML MKL_VML
+#endif
+
+#ifdef MKL_DOMAIN_PARDISO
+#define EIGEN_MKL_DOMAIN_PARDISO MKL_DOMAIN_PARDISO
+#else
+#define EIGEN_MKL_DOMAIN_PARDISO MKL_PARDISO
+#endif
+#endif
+
+#if defined(EIGEN_USE_BLAS) && !defined(EIGEN_USE_MKL)
+#include "../../misc/blas.h"
+#endif
+
+namespace Eigen {
+
+typedef std::complex<double> dcomplex;
+typedef std::complex<float>  scomplex;
+
+#if defined(EIGEN_USE_MKL)
+typedef MKL_INT BlasIndex;
+#else
+typedef int BlasIndex;
+#endif
+
+} // end namespace Eigen
+
+
+#endif // EIGEN_MKL_SUPPORT_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/util/ReenableStupidWarnings.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/util/ReenableStupidWarnings.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/util/ReenableStupidWarnings.h	(revision 3762)
@@ -0,0 +1,31 @@
+#ifdef EIGEN_WARNINGS_DISABLED_2
+// "DisableStupidWarnings.h" was included twice recursively: Do not reenable warnings yet!
+#  undef EIGEN_WARNINGS_DISABLED_2
+
+#elif defined(EIGEN_WARNINGS_DISABLED)
+#undef EIGEN_WARNINGS_DISABLED
+
+#ifndef EIGEN_PERMANENTLY_DISABLE_STUPID_WARNINGS
+  #ifdef _MSC_VER
+    #pragma warning( pop )
+  #elif defined __INTEL_COMPILER
+    #pragma warning pop
+  #elif defined __clang__
+    #pragma clang diagnostic pop
+  #elif defined __GNUC__  &&  (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))
+    #pragma GCC diagnostic pop
+  #endif
+
+  #if defined __NVCC__
+//    Don't reenable the diagnostic messages, as it turns out these messages need
+//    to be disabled at the point of the template instantiation (i.e the user code)
+//    otherwise they'll be triggered by nvcc.
+//    #pragma diag_default code_is_unreachable
+//    #pragma diag_default initialization_not_reachable
+//    #pragma diag_default 2651
+//    #pragma diag_default 2653
+  #endif
+
+#endif
+
+#endif // EIGEN_WARNINGS_DISABLED
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/Solve.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/Solve.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/Solve.h	(revision 3762)
@@ -0,0 +1,188 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2014 Gael Guennebaud <gael.guennebaud@inria.fr>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_SOLVE_H
+#define EIGEN_SOLVE_H
+
+namespace Eigen {
+
+template<typename Decomposition, typename RhsType, typename StorageKind> class SolveImpl;
+  
+/** \class Solve
+  * \ingroup Core_Module
+  *
+  * \brief Pseudo expression representing a solving operation
+  *
+  * \tparam Decomposition the type of the matrix or decomposion object
+  * \tparam Rhstype the type of the right-hand side
+  *
+  * This class represents an expression of A.solve(B)
+  * and most of the time this is the only way it is used.
+  *
+  */
+namespace internal {
+
+// this solve_traits class permits to determine the evaluation type with respect to storage kind (Dense vs Sparse)
+template<typename Decomposition, typename RhsType,typename StorageKind> struct solve_traits;
+
+template<typename Decomposition, typename RhsType>
+struct solve_traits<Decomposition,RhsType,Dense>
+{
+  typedef typename make_proper_matrix_type<typename RhsType::Scalar,
+                 Decomposition::ColsAtCompileTime,
+                 RhsType::ColsAtCompileTime,
+                 RhsType::PlainObject::Options,
+                 Decomposition::MaxColsAtCompileTime,
+                 RhsType::MaxColsAtCompileTime>::type PlainObject;
+};
+
+template<typename Decomposition, typename RhsType>
+struct traits<Solve<Decomposition, RhsType> >
+  : traits<typename solve_traits<Decomposition,RhsType,typename internal::traits<RhsType>::StorageKind>::PlainObject>
+{
+  typedef typename solve_traits<Decomposition,RhsType,typename internal::traits<RhsType>::StorageKind>::PlainObject PlainObject;
+  typedef typename promote_index_type<typename Decomposition::StorageIndex, typename RhsType::StorageIndex>::type StorageIndex;
+  typedef traits<PlainObject> BaseTraits;
+  enum {
+    Flags = BaseTraits::Flags & RowMajorBit,
+    CoeffReadCost = HugeCost
+  };
+};
+
+}
+
+
+template<typename Decomposition, typename RhsType>
+class Solve : public SolveImpl<Decomposition,RhsType,typename internal::traits<RhsType>::StorageKind>
+{
+public:
+  typedef typename internal::traits<Solve>::PlainObject PlainObject;
+  typedef typename internal::traits<Solve>::StorageIndex StorageIndex;
+  
+  Solve(const Decomposition &dec, const RhsType &rhs)
+    : m_dec(dec), m_rhs(rhs)
+  {}
+  
+  EIGEN_DEVICE_FUNC Index rows() const { return m_dec.cols(); }
+  EIGEN_DEVICE_FUNC Index cols() const { return m_rhs.cols(); }
+
+  EIGEN_DEVICE_FUNC const Decomposition& dec() const { return m_dec; }
+  EIGEN_DEVICE_FUNC const RhsType&       rhs() const { return m_rhs; }
+
+protected:
+  const Decomposition &m_dec;
+  const RhsType       &m_rhs;
+};
+
+
+// Specialization of the Solve expression for dense results
+template<typename Decomposition, typename RhsType>
+class SolveImpl<Decomposition,RhsType,Dense>
+  : public MatrixBase<Solve<Decomposition,RhsType> >
+{
+  typedef Solve<Decomposition,RhsType> Derived;
+  
+public:
+  
+  typedef MatrixBase<Solve<Decomposition,RhsType> > Base;
+  EIGEN_DENSE_PUBLIC_INTERFACE(Derived)
+
+private:
+  
+  Scalar coeff(Index row, Index col) const;
+  Scalar coeff(Index i) const;
+};
+
+// Generic API dispatcher
+template<typename Decomposition, typename RhsType, typename StorageKind>
+class SolveImpl : public internal::generic_xpr_base<Solve<Decomposition,RhsType>, MatrixXpr, StorageKind>::type
+{
+  public:
+    typedef typename internal::generic_xpr_base<Solve<Decomposition,RhsType>, MatrixXpr, StorageKind>::type Base;
+};
+
+namespace internal {
+
+// Evaluator of Solve -> eval into a temporary
+template<typename Decomposition, typename RhsType>
+struct evaluator<Solve<Decomposition,RhsType> >
+  : public evaluator<typename Solve<Decomposition,RhsType>::PlainObject>
+{
+  typedef Solve<Decomposition,RhsType> SolveType;
+  typedef typename SolveType::PlainObject PlainObject;
+  typedef evaluator<PlainObject> Base;
+
+  enum { Flags = Base::Flags | EvalBeforeNestingBit };
+  
+  EIGEN_DEVICE_FUNC explicit evaluator(const SolveType& solve)
+    : m_result(solve.rows(), solve.cols())
+  {
+    ::new (static_cast<Base*>(this)) Base(m_result);
+    solve.dec()._solve_impl(solve.rhs(), m_result);
+  }
+  
+protected:  
+  PlainObject m_result;
+};
+
+// Specialization for "dst = dec.solve(rhs)"
+// NOTE we need to specialize it for Dense2Dense to avoid ambiguous specialization error and a Sparse2Sparse specialization must exist somewhere
+template<typename DstXprType, typename DecType, typename RhsType, typename Scalar>
+struct Assignment<DstXprType, Solve<DecType,RhsType>, internal::assign_op<Scalar,Scalar>, Dense2Dense>
+{
+  typedef Solve<DecType,RhsType> SrcXprType;
+  static void run(DstXprType &dst, const SrcXprType &src, const internal::assign_op<Scalar,Scalar> &)
+  {
+    Index dstRows = src.rows();
+    Index dstCols = src.cols();
+    if((dst.rows()!=dstRows) || (dst.cols()!=dstCols))
+      dst.resize(dstRows, dstCols);
+
+    src.dec()._solve_impl(src.rhs(), dst);
+  }
+};
+
+// Specialization for "dst = dec.transpose().solve(rhs)"
+template<typename DstXprType, typename DecType, typename RhsType, typename Scalar>
+struct Assignment<DstXprType, Solve<Transpose<const DecType>,RhsType>, internal::assign_op<Scalar,Scalar>, Dense2Dense>
+{
+  typedef Solve<Transpose<const DecType>,RhsType> SrcXprType;
+  static void run(DstXprType &dst, const SrcXprType &src, const internal::assign_op<Scalar,Scalar> &)
+  {
+    Index dstRows = src.rows();
+    Index dstCols = src.cols();
+    if((dst.rows()!=dstRows) || (dst.cols()!=dstCols))
+      dst.resize(dstRows, dstCols);
+
+    src.dec().nestedExpression().template _solve_impl_transposed<false>(src.rhs(), dst);
+  }
+};
+
+// Specialization for "dst = dec.adjoint().solve(rhs)"
+template<typename DstXprType, typename DecType, typename RhsType, typename Scalar>
+struct Assignment<DstXprType, Solve<CwiseUnaryOp<internal::scalar_conjugate_op<typename DecType::Scalar>, const Transpose<const DecType> >,RhsType>,
+                  internal::assign_op<Scalar,Scalar>, Dense2Dense>
+{
+  typedef Solve<CwiseUnaryOp<internal::scalar_conjugate_op<typename DecType::Scalar>, const Transpose<const DecType> >,RhsType> SrcXprType;
+  static void run(DstXprType &dst, const SrcXprType &src, const internal::assign_op<Scalar,Scalar> &)
+  {
+    Index dstRows = src.rows();
+    Index dstCols = src.cols();
+    if((dst.rows()!=dstRows) || (dst.cols()!=dstCols))
+      dst.resize(dstRows, dstCols);
+    
+    src.dec().nestedExpression().nestedExpression().template _solve_impl_transposed<true>(src.rhs(), dst);
+  }
+};
+
+} // end namepsace internal
+
+} // end namespace Eigen
+
+#endif // EIGEN_SOLVE_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/TriangularMatrix.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/TriangularMatrix.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/TriangularMatrix.h	(revision 3762)
@@ -0,0 +1,985 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2008 Benoit Jacob <jacob.benoit.1@gmail.com>
+// Copyright (C) 2008-2009 Gael Guennebaud <gael.guennebaud@inria.fr>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_TRIANGULARMATRIX_H
+#define EIGEN_TRIANGULARMATRIX_H
+
+namespace Eigen { 
+
+namespace internal {
+  
+template<int Side, typename TriangularType, typename Rhs> struct triangular_solve_retval;
+  
+}
+
+/** \class TriangularBase
+  * \ingroup Core_Module
+  *
+  * \brief Base class for triangular part in a matrix
+  */
+template<typename Derived> class TriangularBase : public EigenBase<Derived>
+{
+  public:
+
+    enum {
+      Mode = internal::traits<Derived>::Mode,
+      RowsAtCompileTime = internal::traits<Derived>::RowsAtCompileTime,
+      ColsAtCompileTime = internal::traits<Derived>::ColsAtCompileTime,
+      MaxRowsAtCompileTime = internal::traits<Derived>::MaxRowsAtCompileTime,
+      MaxColsAtCompileTime = internal::traits<Derived>::MaxColsAtCompileTime,
+      
+      SizeAtCompileTime = (internal::size_at_compile_time<internal::traits<Derived>::RowsAtCompileTime,
+                                                   internal::traits<Derived>::ColsAtCompileTime>::ret),
+      /**< This is equal to the number of coefficients, i.e. the number of
+          * rows times the number of columns, or to \a Dynamic if this is not
+          * known at compile-time. \sa RowsAtCompileTime, ColsAtCompileTime */
+      
+      MaxSizeAtCompileTime = (internal::size_at_compile_time<internal::traits<Derived>::MaxRowsAtCompileTime,
+                                                   internal::traits<Derived>::MaxColsAtCompileTime>::ret)
+        
+    };
+    typedef typename internal::traits<Derived>::Scalar Scalar;
+    typedef typename internal::traits<Derived>::StorageKind StorageKind;
+    typedef typename internal::traits<Derived>::StorageIndex StorageIndex;
+    typedef typename internal::traits<Derived>::FullMatrixType DenseMatrixType;
+    typedef DenseMatrixType DenseType;
+    typedef Derived const& Nested;
+
+    EIGEN_DEVICE_FUNC
+    inline TriangularBase() { eigen_assert(!((Mode&UnitDiag) && (Mode&ZeroDiag))); }
+
+    EIGEN_DEVICE_FUNC
+    inline Index rows() const { return derived().rows(); }
+    EIGEN_DEVICE_FUNC
+    inline Index cols() const { return derived().cols(); }
+    EIGEN_DEVICE_FUNC
+    inline Index outerStride() const { return derived().outerStride(); }
+    EIGEN_DEVICE_FUNC
+    inline Index innerStride() const { return derived().innerStride(); }
+    
+    // dummy resize function
+    void resize(Index rows, Index cols)
+    {
+      EIGEN_UNUSED_VARIABLE(rows);
+      EIGEN_UNUSED_VARIABLE(cols);
+      eigen_assert(rows==this->rows() && cols==this->cols());
+    }
+
+    EIGEN_DEVICE_FUNC
+    inline Scalar coeff(Index row, Index col) const  { return derived().coeff(row,col); }
+    EIGEN_DEVICE_FUNC
+    inline Scalar& coeffRef(Index row, Index col) { return derived().coeffRef(row,col); }
+
+    /** \see MatrixBase::copyCoeff(row,col)
+      */
+    template<typename Other>
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE void copyCoeff(Index row, Index col, Other& other)
+    {
+      derived().coeffRef(row, col) = other.coeff(row, col);
+    }
+
+    EIGEN_DEVICE_FUNC
+    inline Scalar operator()(Index row, Index col) const
+    {
+      check_coordinates(row, col);
+      return coeff(row,col);
+    }
+    EIGEN_DEVICE_FUNC
+    inline Scalar& operator()(Index row, Index col)
+    {
+      check_coordinates(row, col);
+      return coeffRef(row,col);
+    }
+
+    #ifndef EIGEN_PARSED_BY_DOXYGEN
+    EIGEN_DEVICE_FUNC
+    inline const Derived& derived() const { return *static_cast<const Derived*>(this); }
+    EIGEN_DEVICE_FUNC
+    inline Derived& derived() { return *static_cast<Derived*>(this); }
+    #endif // not EIGEN_PARSED_BY_DOXYGEN
+
+    template<typename DenseDerived>
+    EIGEN_DEVICE_FUNC
+    void evalTo(MatrixBase<DenseDerived> &other) const;
+    template<typename DenseDerived>
+    EIGEN_DEVICE_FUNC
+    void evalToLazy(MatrixBase<DenseDerived> &other) const;
+
+    EIGEN_DEVICE_FUNC
+    DenseMatrixType toDenseMatrix() const
+    {
+      DenseMatrixType res(rows(), cols());
+      evalToLazy(res);
+      return res;
+    }
+
+  protected:
+
+    void check_coordinates(Index row, Index col) const
+    {
+      EIGEN_ONLY_USED_FOR_DEBUG(row);
+      EIGEN_ONLY_USED_FOR_DEBUG(col);
+      eigen_assert(col>=0 && col<cols() && row>=0 && row<rows());
+      const int mode = int(Mode) & ~SelfAdjoint;
+      EIGEN_ONLY_USED_FOR_DEBUG(mode);
+      eigen_assert((mode==Upper && col>=row)
+                || (mode==Lower && col<=row)
+                || ((mode==StrictlyUpper || mode==UnitUpper) && col>row)
+                || ((mode==StrictlyLower || mode==UnitLower) && col<row));
+    }
+
+    #ifdef EIGEN_INTERNAL_DEBUGGING
+    void check_coordinates_internal(Index row, Index col) const
+    {
+      check_coordinates(row, col);
+    }
+    #else
+    void check_coordinates_internal(Index , Index ) const {}
+    #endif
+
+};
+
+/** \class TriangularView
+  * \ingroup Core_Module
+  *
+  * \brief Expression of a triangular part in a matrix
+  *
+  * \param MatrixType the type of the object in which we are taking the triangular part
+  * \param Mode the kind of triangular matrix expression to construct. Can be #Upper,
+  *             #Lower, #UnitUpper, #UnitLower, #StrictlyUpper, or #StrictlyLower.
+  *             This is in fact a bit field; it must have either #Upper or #Lower, 
+  *             and additionally it may have #UnitDiag or #ZeroDiag or neither.
+  *
+  * This class represents a triangular part of a matrix, not necessarily square. Strictly speaking, for rectangular
+  * matrices one should speak of "trapezoid" parts. This class is the return type
+  * of MatrixBase::triangularView() and SparseMatrixBase::triangularView(), and most of the time this is the only way it is used.
+  *
+  * \sa MatrixBase::triangularView()
+  */
+namespace internal {
+template<typename MatrixType, unsigned int _Mode>
+struct traits<TriangularView<MatrixType, _Mode> > : traits<MatrixType>
+{
+  typedef typename ref_selector<MatrixType>::non_const_type MatrixTypeNested;
+  typedef typename remove_reference<MatrixTypeNested>::type MatrixTypeNestedNonRef;
+  typedef typename remove_all<MatrixTypeNested>::type MatrixTypeNestedCleaned;
+  typedef typename MatrixType::PlainObject FullMatrixType;
+  typedef MatrixType ExpressionType;
+  enum {
+    Mode = _Mode,
+    FlagsLvalueBit = is_lvalue<MatrixType>::value ? LvalueBit : 0,
+    Flags = (MatrixTypeNestedCleaned::Flags & (HereditaryBits | FlagsLvalueBit) & (~(PacketAccessBit | DirectAccessBit | LinearAccessBit)))
+  };
+};
+}
+
+template<typename _MatrixType, unsigned int _Mode, typename StorageKind> class TriangularViewImpl;
+
+template<typename _MatrixType, unsigned int _Mode> class TriangularView
+  : public TriangularViewImpl<_MatrixType, _Mode, typename internal::traits<_MatrixType>::StorageKind >
+{
+  public:
+
+    typedef TriangularViewImpl<_MatrixType, _Mode, typename internal::traits<_MatrixType>::StorageKind > Base;
+    typedef typename internal::traits<TriangularView>::Scalar Scalar;
+    typedef _MatrixType MatrixType;
+
+  protected:
+    typedef typename internal::traits<TriangularView>::MatrixTypeNested MatrixTypeNested;
+    typedef typename internal::traits<TriangularView>::MatrixTypeNestedNonRef MatrixTypeNestedNonRef;
+
+    typedef typename internal::remove_all<typename MatrixType::ConjugateReturnType>::type MatrixConjugateReturnType;
+    
+  public:
+
+    typedef typename internal::traits<TriangularView>::StorageKind StorageKind;
+    typedef typename internal::traits<TriangularView>::MatrixTypeNestedCleaned NestedExpression;
+
+    enum {
+      Mode = _Mode,
+      Flags = internal::traits<TriangularView>::Flags,
+      TransposeMode = (Mode & Upper ? Lower : 0)
+                    | (Mode & Lower ? Upper : 0)
+                    | (Mode & (UnitDiag))
+                    | (Mode & (ZeroDiag)),
+      IsVectorAtCompileTime = false
+    };
+
+    EIGEN_DEVICE_FUNC
+    explicit inline TriangularView(MatrixType& matrix) : m_matrix(matrix)
+    {}
+    
+    EIGEN_INHERIT_ASSIGNMENT_OPERATORS(TriangularView)
+
+    /** \copydoc EigenBase::rows() */
+    EIGEN_DEVICE_FUNC
+    inline Index rows() const { return m_matrix.rows(); }
+    /** \copydoc EigenBase::cols() */
+    EIGEN_DEVICE_FUNC
+    inline Index cols() const { return m_matrix.cols(); }
+
+    /** \returns a const reference to the nested expression */
+    EIGEN_DEVICE_FUNC
+    const NestedExpression& nestedExpression() const { return m_matrix; }
+
+    /** \returns a reference to the nested expression */
+    EIGEN_DEVICE_FUNC
+    NestedExpression& nestedExpression() { return m_matrix; }
+    
+    typedef TriangularView<const MatrixConjugateReturnType,Mode> ConjugateReturnType;
+    /** \sa MatrixBase::conjugate() const */
+    EIGEN_DEVICE_FUNC
+    inline const ConjugateReturnType conjugate() const
+    { return ConjugateReturnType(m_matrix.conjugate()); }
+
+    typedef TriangularView<const typename MatrixType::AdjointReturnType,TransposeMode> AdjointReturnType;
+    /** \sa MatrixBase::adjoint() const */
+    EIGEN_DEVICE_FUNC
+    inline const AdjointReturnType adjoint() const
+    { return AdjointReturnType(m_matrix.adjoint()); }
+
+    typedef TriangularView<typename MatrixType::TransposeReturnType,TransposeMode> TransposeReturnType;
+     /** \sa MatrixBase::transpose() */
+    EIGEN_DEVICE_FUNC
+    inline TransposeReturnType transpose()
+    {
+      EIGEN_STATIC_ASSERT_LVALUE(MatrixType)
+      typename MatrixType::TransposeReturnType tmp(m_matrix);
+      return TransposeReturnType(tmp);
+    }
+    
+    typedef TriangularView<const typename MatrixType::ConstTransposeReturnType,TransposeMode> ConstTransposeReturnType;
+    /** \sa MatrixBase::transpose() const */
+    EIGEN_DEVICE_FUNC
+    inline const ConstTransposeReturnType transpose() const
+    {
+      return ConstTransposeReturnType(m_matrix.transpose());
+    }
+
+    template<typename Other>
+    EIGEN_DEVICE_FUNC
+    inline const Solve<TriangularView, Other> 
+    solve(const MatrixBase<Other>& other) const
+    { return Solve<TriangularView, Other>(*this, other.derived()); }
+    
+  // workaround MSVC ICE
+  #if EIGEN_COMP_MSVC
+    template<int Side, typename Other>
+    EIGEN_DEVICE_FUNC
+    inline const internal::triangular_solve_retval<Side,TriangularView, Other>
+    solve(const MatrixBase<Other>& other) const
+    { return Base::template solve<Side>(other); }
+  #else
+    using Base::solve;
+  #endif
+
+    /** \returns a selfadjoint view of the referenced triangular part which must be either \c #Upper or \c #Lower.
+      *
+      * This is a shortcut for \code this->nestedExpression().selfadjointView<(*this)::Mode>() \endcode
+      * \sa MatrixBase::selfadjointView() */
+    EIGEN_DEVICE_FUNC
+    SelfAdjointView<MatrixTypeNestedNonRef,Mode> selfadjointView()
+    {
+      EIGEN_STATIC_ASSERT((Mode&(UnitDiag|ZeroDiag))==0,PROGRAMMING_ERROR);
+      return SelfAdjointView<MatrixTypeNestedNonRef,Mode>(m_matrix);
+    }
+
+    /** This is the const version of selfadjointView() */
+    EIGEN_DEVICE_FUNC
+    const SelfAdjointView<MatrixTypeNestedNonRef,Mode> selfadjointView() const
+    {
+      EIGEN_STATIC_ASSERT((Mode&(UnitDiag|ZeroDiag))==0,PROGRAMMING_ERROR);
+      return SelfAdjointView<MatrixTypeNestedNonRef,Mode>(m_matrix);
+    }
+
+
+    /** \returns the determinant of the triangular matrix
+      * \sa MatrixBase::determinant() */
+    EIGEN_DEVICE_FUNC
+    Scalar determinant() const
+    {
+      if (Mode & UnitDiag)
+        return 1;
+      else if (Mode & ZeroDiag)
+        return 0;
+      else
+        return m_matrix.diagonal().prod();
+    }
+      
+  protected:
+
+    MatrixTypeNested m_matrix;
+};
+
+/** \ingroup Core_Module
+  *
+  * \brief Base class for a triangular part in a \b dense matrix
+  *
+  * This class is an abstract base class of class TriangularView, and objects of type TriangularViewImpl cannot be instantiated.
+  * It extends class TriangularView with additional methods which available for dense expressions only.
+  *
+  * \sa class TriangularView, MatrixBase::triangularView()
+  */
+template<typename _MatrixType, unsigned int _Mode> class TriangularViewImpl<_MatrixType,_Mode,Dense>
+  : public TriangularBase<TriangularView<_MatrixType, _Mode> >
+{
+  public:
+
+    typedef TriangularView<_MatrixType, _Mode> TriangularViewType;
+    typedef TriangularBase<TriangularViewType> Base;
+    typedef typename internal::traits<TriangularViewType>::Scalar Scalar;
+
+    typedef _MatrixType MatrixType;
+    typedef typename MatrixType::PlainObject DenseMatrixType;
+    typedef DenseMatrixType PlainObject;
+
+  public:
+    using Base::evalToLazy;
+    using Base::derived;
+
+    typedef typename internal::traits<TriangularViewType>::StorageKind StorageKind;
+
+    enum {
+      Mode = _Mode,
+      Flags = internal::traits<TriangularViewType>::Flags
+    };
+
+    /** \returns the outer-stride of the underlying dense matrix
+      * \sa DenseCoeffsBase::outerStride() */
+    EIGEN_DEVICE_FUNC
+    inline Index outerStride() const { return derived().nestedExpression().outerStride(); }
+    /** \returns the inner-stride of the underlying dense matrix
+      * \sa DenseCoeffsBase::innerStride() */
+    EIGEN_DEVICE_FUNC
+    inline Index innerStride() const { return derived().nestedExpression().innerStride(); }
+
+    /** \sa MatrixBase::operator+=() */
+    template<typename Other>
+    EIGEN_DEVICE_FUNC
+    TriangularViewType&  operator+=(const DenseBase<Other>& other) {
+      internal::call_assignment_no_alias(derived(), other.derived(), internal::add_assign_op<Scalar,typename Other::Scalar>());
+      return derived();
+    }
+    /** \sa MatrixBase::operator-=() */
+    template<typename Other>
+    EIGEN_DEVICE_FUNC
+    TriangularViewType&  operator-=(const DenseBase<Other>& other) {
+      internal::call_assignment_no_alias(derived(), other.derived(), internal::sub_assign_op<Scalar,typename Other::Scalar>());
+      return derived();
+    }
+    
+    /** \sa MatrixBase::operator*=() */
+    EIGEN_DEVICE_FUNC
+    TriangularViewType&  operator*=(const typename internal::traits<MatrixType>::Scalar& other) { return *this = derived().nestedExpression() * other; }
+    /** \sa DenseBase::operator/=() */
+    EIGEN_DEVICE_FUNC
+    TriangularViewType&  operator/=(const typename internal::traits<MatrixType>::Scalar& other) { return *this = derived().nestedExpression() / other; }
+
+    /** \sa MatrixBase::fill() */
+    EIGEN_DEVICE_FUNC
+    void fill(const Scalar& value) { setConstant(value); }
+    /** \sa MatrixBase::setConstant() */
+    EIGEN_DEVICE_FUNC
+    TriangularViewType& setConstant(const Scalar& value)
+    { return *this = MatrixType::Constant(derived().rows(), derived().cols(), value); }
+    /** \sa MatrixBase::setZero() */
+    EIGEN_DEVICE_FUNC
+    TriangularViewType& setZero() { return setConstant(Scalar(0)); }
+    /** \sa MatrixBase::setOnes() */
+    EIGEN_DEVICE_FUNC
+    TriangularViewType& setOnes() { return setConstant(Scalar(1)); }
+
+    /** \sa MatrixBase::coeff()
+      * \warning the coordinates must fit into the referenced triangular part
+      */
+    EIGEN_DEVICE_FUNC
+    inline Scalar coeff(Index row, Index col) const
+    {
+      Base::check_coordinates_internal(row, col);
+      return derived().nestedExpression().coeff(row, col);
+    }
+
+    /** \sa MatrixBase::coeffRef()
+      * \warning the coordinates must fit into the referenced triangular part
+      */
+    EIGEN_DEVICE_FUNC
+    inline Scalar& coeffRef(Index row, Index col)
+    {
+      EIGEN_STATIC_ASSERT_LVALUE(TriangularViewType);
+      Base::check_coordinates_internal(row, col);
+      return derived().nestedExpression().coeffRef(row, col);
+    }
+
+    /** Assigns a triangular matrix to a triangular part of a dense matrix */
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    TriangularViewType& operator=(const TriangularBase<OtherDerived>& other);
+
+    /** Shortcut for\code *this = other.other.triangularView<(*this)::Mode>() \endcode */
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    TriangularViewType& operator=(const MatrixBase<OtherDerived>& other);
+
+#ifndef EIGEN_PARSED_BY_DOXYGEN
+    EIGEN_DEVICE_FUNC
+    TriangularViewType& operator=(const TriangularViewImpl& other)
+    { return *this = other.derived().nestedExpression(); }
+
+    /** \deprecated */
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    void lazyAssign(const TriangularBase<OtherDerived>& other);
+
+    /** \deprecated */
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    void lazyAssign(const MatrixBase<OtherDerived>& other);
+#endif
+
+    /** Efficient triangular matrix times vector/matrix product */
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    const Product<TriangularViewType,OtherDerived>
+    operator*(const MatrixBase<OtherDerived>& rhs) const
+    {
+      return Product<TriangularViewType,OtherDerived>(derived(), rhs.derived());
+    }
+
+    /** Efficient vector/matrix times triangular matrix product */
+    template<typename OtherDerived> friend
+    EIGEN_DEVICE_FUNC
+    const Product<OtherDerived,TriangularViewType>
+    operator*(const MatrixBase<OtherDerived>& lhs, const TriangularViewImpl& rhs)
+    {
+      return Product<OtherDerived,TriangularViewType>(lhs.derived(),rhs.derived());
+    }
+
+    /** \returns the product of the inverse of \c *this with \a other, \a *this being triangular.
+      *
+      * This function computes the inverse-matrix matrix product inverse(\c *this) * \a other if
+      * \a Side==OnTheLeft (the default), or the right-inverse-multiply  \a other * inverse(\c *this) if
+      * \a Side==OnTheRight.
+      *
+      * Note that the template parameter \c Side can be ommitted, in which case \c Side==OnTheLeft
+      *
+      * The matrix \c *this must be triangular and invertible (i.e., all the coefficients of the
+      * diagonal must be non zero). It works as a forward (resp. backward) substitution if \c *this
+      * is an upper (resp. lower) triangular matrix.
+      *
+      * Example: \include Triangular_solve.cpp
+      * Output: \verbinclude Triangular_solve.out
+      *
+      * This function returns an expression of the inverse-multiply and can works in-place if it is assigned
+      * to the same matrix or vector \a other.
+      *
+      * For users coming from BLAS, this function (and more specifically solveInPlace()) offer
+      * all the operations supported by the \c *TRSV and \c *TRSM BLAS routines.
+      *
+      * \sa TriangularView::solveInPlace()
+      */
+    template<int Side, typename Other>
+    EIGEN_DEVICE_FUNC
+    inline const internal::triangular_solve_retval<Side,TriangularViewType, Other>
+    solve(const MatrixBase<Other>& other) const;
+
+    /** "in-place" version of TriangularView::solve() where the result is written in \a other
+      *
+      * \warning The parameter is only marked 'const' to make the C++ compiler accept a temporary expression here.
+      * This function will const_cast it, so constness isn't honored here.
+      *
+      * Note that the template parameter \c Side can be ommitted, in which case \c Side==OnTheLeft
+      *
+      * See TriangularView:solve() for the details.
+      */
+    template<int Side, typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    void solveInPlace(const MatrixBase<OtherDerived>& other) const;
+
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    void solveInPlace(const MatrixBase<OtherDerived>& other) const
+    { return solveInPlace<OnTheLeft>(other); }
+
+    /** Swaps the coefficients of the common triangular parts of two matrices */
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+#ifdef EIGEN_PARSED_BY_DOXYGEN
+    void swap(TriangularBase<OtherDerived> &other)
+#else
+    void swap(TriangularBase<OtherDerived> const & other)
+#endif
+    {
+      EIGEN_STATIC_ASSERT_LVALUE(OtherDerived);
+      call_assignment(derived(), other.const_cast_derived(), internal::swap_assign_op<Scalar>());
+    }
+
+    /** \deprecated
+      * Shortcut for \code (*this).swap(other.triangularView<(*this)::Mode>()) \endcode */
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    void swap(MatrixBase<OtherDerived> const & other)
+    {
+      EIGEN_STATIC_ASSERT_LVALUE(OtherDerived);
+      call_assignment(derived(), other.const_cast_derived(), internal::swap_assign_op<Scalar>());
+    }
+
+    template<typename RhsType, typename DstType>
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE void _solve_impl(const RhsType &rhs, DstType &dst) const {
+      if(!internal::is_same_dense(dst,rhs))
+        dst = rhs;
+      this->solveInPlace(dst);
+    }
+
+    template<typename ProductType>
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE TriangularViewType& _assignProduct(const ProductType& prod, const Scalar& alpha, bool beta);
+  protected:
+    EIGEN_DEFAULT_COPY_CONSTRUCTOR(TriangularViewImpl)
+    EIGEN_DEFAULT_EMPTY_CONSTRUCTOR_AND_DESTRUCTOR(TriangularViewImpl)
+
+};
+
+/***************************************************************************
+* Implementation of triangular evaluation/assignment
+***************************************************************************/
+
+#ifndef EIGEN_PARSED_BY_DOXYGEN
+// FIXME should we keep that possibility
+template<typename MatrixType, unsigned int Mode>
+template<typename OtherDerived>
+inline TriangularView<MatrixType, Mode>&
+TriangularViewImpl<MatrixType, Mode, Dense>::operator=(const MatrixBase<OtherDerived>& other)
+{
+  internal::call_assignment_no_alias(derived(), other.derived(), internal::assign_op<Scalar,typename OtherDerived::Scalar>());
+  return derived();
+}
+
+// FIXME should we keep that possibility
+template<typename MatrixType, unsigned int Mode>
+template<typename OtherDerived>
+void TriangularViewImpl<MatrixType, Mode, Dense>::lazyAssign(const MatrixBase<OtherDerived>& other)
+{
+  internal::call_assignment_no_alias(derived(), other.template triangularView<Mode>());
+}
+
+
+
+template<typename MatrixType, unsigned int Mode>
+template<typename OtherDerived>
+inline TriangularView<MatrixType, Mode>&
+TriangularViewImpl<MatrixType, Mode, Dense>::operator=(const TriangularBase<OtherDerived>& other)
+{
+  eigen_assert(Mode == int(OtherDerived::Mode));
+  internal::call_assignment(derived(), other.derived());
+  return derived();
+}
+
+template<typename MatrixType, unsigned int Mode>
+template<typename OtherDerived>
+void TriangularViewImpl<MatrixType, Mode, Dense>::lazyAssign(const TriangularBase<OtherDerived>& other)
+{
+  eigen_assert(Mode == int(OtherDerived::Mode));
+  internal::call_assignment_no_alias(derived(), other.derived());
+}
+#endif
+
+/***************************************************************************
+* Implementation of TriangularBase methods
+***************************************************************************/
+
+/** Assigns a triangular or selfadjoint matrix to a dense matrix.
+  * If the matrix is triangular, the opposite part is set to zero. */
+template<typename Derived>
+template<typename DenseDerived>
+void TriangularBase<Derived>::evalTo(MatrixBase<DenseDerived> &other) const
+{
+  evalToLazy(other.derived());
+}
+
+/***************************************************************************
+* Implementation of TriangularView methods
+***************************************************************************/
+
+/***************************************************************************
+* Implementation of MatrixBase methods
+***************************************************************************/
+
+/**
+  * \returns an expression of a triangular view extracted from the current matrix
+  *
+  * The parameter \a Mode can have the following values: \c #Upper, \c #StrictlyUpper, \c #UnitUpper,
+  * \c #Lower, \c #StrictlyLower, \c #UnitLower.
+  *
+  * Example: \include MatrixBase_triangularView.cpp
+  * Output: \verbinclude MatrixBase_triangularView.out
+  *
+  * \sa class TriangularView
+  */
+template<typename Derived>
+template<unsigned int Mode>
+typename MatrixBase<Derived>::template TriangularViewReturnType<Mode>::Type
+MatrixBase<Derived>::triangularView()
+{
+  return typename TriangularViewReturnType<Mode>::Type(derived());
+}
+
+/** This is the const version of MatrixBase::triangularView() */
+template<typename Derived>
+template<unsigned int Mode>
+typename MatrixBase<Derived>::template ConstTriangularViewReturnType<Mode>::Type
+MatrixBase<Derived>::triangularView() const
+{
+  return typename ConstTriangularViewReturnType<Mode>::Type(derived());
+}
+
+/** \returns true if *this is approximately equal to an upper triangular matrix,
+  *          within the precision given by \a prec.
+  *
+  * \sa isLowerTriangular()
+  */
+template<typename Derived>
+bool MatrixBase<Derived>::isUpperTriangular(const RealScalar& prec) const
+{
+  RealScalar maxAbsOnUpperPart = static_cast<RealScalar>(-1);
+  for(Index j = 0; j < cols(); ++j)
+  {
+    Index maxi = numext::mini(j, rows()-1);
+    for(Index i = 0; i <= maxi; ++i)
+    {
+      RealScalar absValue = numext::abs(coeff(i,j));
+      if(absValue > maxAbsOnUpperPart) maxAbsOnUpperPart = absValue;
+    }
+  }
+  RealScalar threshold = maxAbsOnUpperPart * prec;
+  for(Index j = 0; j < cols(); ++j)
+    for(Index i = j+1; i < rows(); ++i)
+      if(numext::abs(coeff(i, j)) > threshold) return false;
+  return true;
+}
+
+/** \returns true if *this is approximately equal to a lower triangular matrix,
+  *          within the precision given by \a prec.
+  *
+  * \sa isUpperTriangular()
+  */
+template<typename Derived>
+bool MatrixBase<Derived>::isLowerTriangular(const RealScalar& prec) const
+{
+  RealScalar maxAbsOnLowerPart = static_cast<RealScalar>(-1);
+  for(Index j = 0; j < cols(); ++j)
+    for(Index i = j; i < rows(); ++i)
+    {
+      RealScalar absValue = numext::abs(coeff(i,j));
+      if(absValue > maxAbsOnLowerPart) maxAbsOnLowerPart = absValue;
+    }
+  RealScalar threshold = maxAbsOnLowerPart * prec;
+  for(Index j = 1; j < cols(); ++j)
+  {
+    Index maxi = numext::mini(j, rows()-1);
+    for(Index i = 0; i < maxi; ++i)
+      if(numext::abs(coeff(i, j)) > threshold) return false;
+  }
+  return true;
+}
+
+
+/***************************************************************************
+****************************************************************************
+* Evaluators and Assignment of triangular expressions
+***************************************************************************
+***************************************************************************/
+
+namespace internal {
+
+  
+// TODO currently a triangular expression has the form TriangularView<.,.>
+//      in the future triangular-ness should be defined by the expression traits
+//      such that Transpose<TriangularView<.,.> > is valid. (currently TriangularBase::transpose() is overloaded to make it work)
+template<typename MatrixType, unsigned int Mode>
+struct evaluator_traits<TriangularView<MatrixType,Mode> >
+{
+  typedef typename storage_kind_to_evaluator_kind<typename MatrixType::StorageKind>::Kind Kind;
+  typedef typename glue_shapes<typename evaluator_traits<MatrixType>::Shape, TriangularShape>::type Shape;
+};
+
+template<typename MatrixType, unsigned int Mode>
+struct unary_evaluator<TriangularView<MatrixType,Mode>, IndexBased>
+ : evaluator<typename internal::remove_all<MatrixType>::type>
+{
+  typedef TriangularView<MatrixType,Mode> XprType;
+  typedef evaluator<typename internal::remove_all<MatrixType>::type> Base;
+  unary_evaluator(const XprType &xpr) : Base(xpr.nestedExpression()) {}
+};
+
+// Additional assignment kinds:
+struct Triangular2Triangular    {};
+struct Triangular2Dense         {};
+struct Dense2Triangular         {};
+
+
+template<typename Kernel, unsigned int Mode, int UnrollCount, bool ClearOpposite> struct triangular_assignment_loop;
+
+ 
+/** \internal Specialization of the dense assignment kernel for triangular matrices.
+  * The main difference is that the triangular, diagonal, and opposite parts are processed through three different functions.
+  * \tparam UpLo must be either Lower or Upper
+  * \tparam Mode must be either 0, UnitDiag, ZeroDiag, or SelfAdjoint
+  */
+template<int UpLo, int Mode, int SetOpposite, typename DstEvaluatorTypeT, typename SrcEvaluatorTypeT, typename Functor, int Version = Specialized>
+class triangular_dense_assignment_kernel : public generic_dense_assignment_kernel<DstEvaluatorTypeT, SrcEvaluatorTypeT, Functor, Version>
+{
+protected:
+  typedef generic_dense_assignment_kernel<DstEvaluatorTypeT, SrcEvaluatorTypeT, Functor, Version> Base;
+  typedef typename Base::DstXprType DstXprType;
+  typedef typename Base::SrcXprType SrcXprType;
+  using Base::m_dst;
+  using Base::m_src;
+  using Base::m_functor;
+public:
+  
+  typedef typename Base::DstEvaluatorType DstEvaluatorType;
+  typedef typename Base::SrcEvaluatorType SrcEvaluatorType;
+  typedef typename Base::Scalar Scalar;
+  typedef typename Base::AssignmentTraits AssignmentTraits;
+  
+  
+  EIGEN_DEVICE_FUNC triangular_dense_assignment_kernel(DstEvaluatorType &dst, const SrcEvaluatorType &src, const Functor &func, DstXprType& dstExpr)
+    : Base(dst, src, func, dstExpr)
+  {}
+  
+#ifdef EIGEN_INTERNAL_DEBUGGING
+  EIGEN_DEVICE_FUNC void assignCoeff(Index row, Index col)
+  {
+    eigen_internal_assert(row!=col);
+    Base::assignCoeff(row,col);
+  }
+#else
+  using Base::assignCoeff;
+#endif
+  
+  EIGEN_DEVICE_FUNC void assignDiagonalCoeff(Index id)
+  {
+         if(Mode==UnitDiag && SetOpposite) m_functor.assignCoeff(m_dst.coeffRef(id,id), Scalar(1));
+    else if(Mode==ZeroDiag && SetOpposite) m_functor.assignCoeff(m_dst.coeffRef(id,id), Scalar(0));
+    else if(Mode==0)                       Base::assignCoeff(id,id);
+  }
+  
+  EIGEN_DEVICE_FUNC void assignOppositeCoeff(Index row, Index col)
+  { 
+    eigen_internal_assert(row!=col);
+    if(SetOpposite)
+      m_functor.assignCoeff(m_dst.coeffRef(row,col), Scalar(0));
+  }
+};
+
+template<int Mode, bool SetOpposite, typename DstXprType, typename SrcXprType, typename Functor>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+void call_triangular_assignment_loop(DstXprType& dst, const SrcXprType& src, const Functor &func)
+{
+  typedef evaluator<DstXprType> DstEvaluatorType;
+  typedef evaluator<SrcXprType> SrcEvaluatorType;
+
+  SrcEvaluatorType srcEvaluator(src);
+
+  Index dstRows = src.rows();
+  Index dstCols = src.cols();
+  if((dst.rows()!=dstRows) || (dst.cols()!=dstCols))
+    dst.resize(dstRows, dstCols);
+  DstEvaluatorType dstEvaluator(dst);
+    
+  typedef triangular_dense_assignment_kernel< Mode&(Lower|Upper),Mode&(UnitDiag|ZeroDiag|SelfAdjoint),SetOpposite,
+                                              DstEvaluatorType,SrcEvaluatorType,Functor> Kernel;
+  Kernel kernel(dstEvaluator, srcEvaluator, func, dst.const_cast_derived());
+  
+  enum {
+      unroll = DstXprType::SizeAtCompileTime != Dynamic
+            && SrcEvaluatorType::CoeffReadCost < HugeCost
+            && DstXprType::SizeAtCompileTime * (DstEvaluatorType::CoeffReadCost+SrcEvaluatorType::CoeffReadCost) / 2 <= EIGEN_UNROLLING_LIMIT
+    };
+  
+  triangular_assignment_loop<Kernel, Mode, unroll ? int(DstXprType::SizeAtCompileTime) : Dynamic, SetOpposite>::run(kernel);
+}
+
+template<int Mode, bool SetOpposite, typename DstXprType, typename SrcXprType>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+void call_triangular_assignment_loop(DstXprType& dst, const SrcXprType& src)
+{
+  call_triangular_assignment_loop<Mode,SetOpposite>(dst, src, internal::assign_op<typename DstXprType::Scalar,typename SrcXprType::Scalar>());
+}
+
+template<> struct AssignmentKind<TriangularShape,TriangularShape> { typedef Triangular2Triangular Kind; };
+template<> struct AssignmentKind<DenseShape,TriangularShape>      { typedef Triangular2Dense      Kind; };
+template<> struct AssignmentKind<TriangularShape,DenseShape>      { typedef Dense2Triangular      Kind; };
+
+
+template< typename DstXprType, typename SrcXprType, typename Functor>
+struct Assignment<DstXprType, SrcXprType, Functor, Triangular2Triangular>
+{
+  EIGEN_DEVICE_FUNC static void run(DstXprType &dst, const SrcXprType &src, const Functor &func)
+  {
+    eigen_assert(int(DstXprType::Mode) == int(SrcXprType::Mode));
+    
+    call_triangular_assignment_loop<DstXprType::Mode, false>(dst, src, func);  
+  }
+};
+
+template< typename DstXprType, typename SrcXprType, typename Functor>
+struct Assignment<DstXprType, SrcXprType, Functor, Triangular2Dense>
+{
+  EIGEN_DEVICE_FUNC static void run(DstXprType &dst, const SrcXprType &src, const Functor &func)
+  {
+    call_triangular_assignment_loop<SrcXprType::Mode, (SrcXprType::Mode&SelfAdjoint)==0>(dst, src, func);  
+  }
+};
+
+template< typename DstXprType, typename SrcXprType, typename Functor>
+struct Assignment<DstXprType, SrcXprType, Functor, Dense2Triangular>
+{
+  EIGEN_DEVICE_FUNC static void run(DstXprType &dst, const SrcXprType &src, const Functor &func)
+  {
+    call_triangular_assignment_loop<DstXprType::Mode, false>(dst, src, func);  
+  }
+};
+
+
+template<typename Kernel, unsigned int Mode, int UnrollCount, bool SetOpposite>
+struct triangular_assignment_loop
+{
+  // FIXME: this is not very clean, perhaps this information should be provided by the kernel?
+  typedef typename Kernel::DstEvaluatorType DstEvaluatorType;
+  typedef typename DstEvaluatorType::XprType DstXprType;
+  
+  enum {
+    col = (UnrollCount-1) / DstXprType::RowsAtCompileTime,
+    row = (UnrollCount-1) % DstXprType::RowsAtCompileTime
+  };
+  
+  typedef typename Kernel::Scalar Scalar;
+
+  EIGEN_DEVICE_FUNC
+  static inline void run(Kernel &kernel)
+  {
+    triangular_assignment_loop<Kernel, Mode, UnrollCount-1, SetOpposite>::run(kernel);
+    
+    if(row==col)
+      kernel.assignDiagonalCoeff(row);
+    else if( ((Mode&Lower) && row>col) || ((Mode&Upper) && row<col) )
+      kernel.assignCoeff(row,col);
+    else if(SetOpposite)
+      kernel.assignOppositeCoeff(row,col);
+  }
+};
+
+// prevent buggy user code from causing an infinite recursion
+template<typename Kernel, unsigned int Mode, bool SetOpposite>
+struct triangular_assignment_loop<Kernel, Mode, 0, SetOpposite>
+{
+  EIGEN_DEVICE_FUNC
+  static inline void run(Kernel &) {}
+};
+
+
+
+// TODO: experiment with a recursive assignment procedure splitting the current
+//       triangular part into one rectangular and two triangular parts.
+
+
+template<typename Kernel, unsigned int Mode, bool SetOpposite>
+struct triangular_assignment_loop<Kernel, Mode, Dynamic, SetOpposite>
+{
+  typedef typename Kernel::Scalar Scalar;
+  EIGEN_DEVICE_FUNC
+  static inline void run(Kernel &kernel)
+  {
+    for(Index j = 0; j < kernel.cols(); ++j)
+    {
+      Index maxi = numext::mini(j, kernel.rows());
+      Index i = 0;
+      if (((Mode&Lower) && SetOpposite) || (Mode&Upper))
+      {
+        for(; i < maxi; ++i)
+          if(Mode&Upper) kernel.assignCoeff(i, j);
+          else           kernel.assignOppositeCoeff(i, j);
+      }
+      else
+        i = maxi;
+      
+      if(i<kernel.rows()) // then i==j
+        kernel.assignDiagonalCoeff(i++);
+      
+      if (((Mode&Upper) && SetOpposite) || (Mode&Lower))
+      {
+        for(; i < kernel.rows(); ++i)
+          if(Mode&Lower) kernel.assignCoeff(i, j);
+          else           kernel.assignOppositeCoeff(i, j);
+      }
+    }
+  }
+};
+
+} // end namespace internal
+
+/** Assigns a triangular or selfadjoint matrix to a dense matrix.
+  * If the matrix is triangular, the opposite part is set to zero. */
+template<typename Derived>
+template<typename DenseDerived>
+void TriangularBase<Derived>::evalToLazy(MatrixBase<DenseDerived> &other) const
+{
+  other.derived().resize(this->rows(), this->cols());
+  internal::call_triangular_assignment_loop<Derived::Mode,(Derived::Mode&SelfAdjoint)==0 /* SetOpposite */>(other.derived(), derived().nestedExpression());
+}
+
+namespace internal {
+  
+// Triangular = Product
+template< typename DstXprType, typename Lhs, typename Rhs, typename Scalar>
+struct Assignment<DstXprType, Product<Lhs,Rhs,DefaultProduct>, internal::assign_op<Scalar,typename Product<Lhs,Rhs,DefaultProduct>::Scalar>, Dense2Triangular>
+{
+  typedef Product<Lhs,Rhs,DefaultProduct> SrcXprType;
+  static void run(DstXprType &dst, const SrcXprType &src, const internal::assign_op<Scalar,typename SrcXprType::Scalar> &)
+  {
+    Index dstRows = src.rows();
+    Index dstCols = src.cols();
+    if((dst.rows()!=dstRows) || (dst.cols()!=dstCols))
+      dst.resize(dstRows, dstCols);
+
+    dst._assignProduct(src, 1, 0);
+  }
+};
+
+// Triangular += Product
+template< typename DstXprType, typename Lhs, typename Rhs, typename Scalar>
+struct Assignment<DstXprType, Product<Lhs,Rhs,DefaultProduct>, internal::add_assign_op<Scalar,typename Product<Lhs,Rhs,DefaultProduct>::Scalar>, Dense2Triangular>
+{
+  typedef Product<Lhs,Rhs,DefaultProduct> SrcXprType;
+  static void run(DstXprType &dst, const SrcXprType &src, const internal::add_assign_op<Scalar,typename SrcXprType::Scalar> &)
+  {
+    dst._assignProduct(src, 1, 1);
+  }
+};
+
+// Triangular -= Product
+template< typename DstXprType, typename Lhs, typename Rhs, typename Scalar>
+struct Assignment<DstXprType, Product<Lhs,Rhs,DefaultProduct>, internal::sub_assign_op<Scalar,typename Product<Lhs,Rhs,DefaultProduct>::Scalar>, Dense2Triangular>
+{
+  typedef Product<Lhs,Rhs,DefaultProduct> SrcXprType;
+  static void run(DstXprType &dst, const SrcXprType &src, const internal::sub_assign_op<Scalar,typename SrcXprType::Scalar> &)
+  {
+    dst._assignProduct(src, -1, 1);
+  }
+};
+
+} // end namespace internal
+
+} // end namespace Eigen
+
+#endif // EIGEN_TRIANGULARMATRIX_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/CoreEvaluators.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/CoreEvaluators.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/CoreEvaluators.h	(revision 3762)
@@ -0,0 +1,1688 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2011 Benoit Jacob <jacob.benoit.1@gmail.com>
+// Copyright (C) 2011-2014 Gael Guennebaud <gael.guennebaud@inria.fr>
+// Copyright (C) 2011-2012 Jitse Niesen <jitse@maths.leeds.ac.uk>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+#ifndef EIGEN_COREEVALUATORS_H
+#define EIGEN_COREEVALUATORS_H
+
+namespace Eigen {
+  
+namespace internal {
+
+// This class returns the evaluator kind from the expression storage kind.
+// Default assumes index based accessors
+template<typename StorageKind>
+struct storage_kind_to_evaluator_kind {
+  typedef IndexBased Kind;
+};
+
+// This class returns the evaluator shape from the expression storage kind.
+// It can be Dense, Sparse, Triangular, Diagonal, SelfAdjoint, Band, etc.
+template<typename StorageKind> struct storage_kind_to_shape;
+
+template<> struct storage_kind_to_shape<Dense>                  { typedef DenseShape Shape;           };
+template<> struct storage_kind_to_shape<SolverStorage>          { typedef SolverShape Shape;           };
+template<> struct storage_kind_to_shape<PermutationStorage>     { typedef PermutationShape Shape;     };
+template<> struct storage_kind_to_shape<TranspositionsStorage>  { typedef TranspositionsShape Shape;  };
+
+// Evaluators have to be specialized with respect to various criteria such as:
+//  - storage/structure/shape
+//  - scalar type
+//  - etc.
+// Therefore, we need specialization of evaluator providing additional template arguments for each kind of evaluators.
+// We currently distinguish the following kind of evaluators:
+// - unary_evaluator    for expressions taking only one arguments (CwiseUnaryOp, CwiseUnaryView, Transpose, MatrixWrapper, ArrayWrapper, Reverse, Replicate)
+// - binary_evaluator   for expression taking two arguments (CwiseBinaryOp)
+// - ternary_evaluator   for expression taking three arguments (CwiseTernaryOp)
+// - product_evaluator  for linear algebra products (Product); special case of binary_evaluator because it requires additional tags for dispatching.
+// - mapbase_evaluator  for Map, Block, Ref
+// - block_evaluator    for Block (special dispatching to a mapbase_evaluator or unary_evaluator)
+
+template< typename T,
+          typename Arg1Kind   = typename evaluator_traits<typename T::Arg1>::Kind,
+          typename Arg2Kind   = typename evaluator_traits<typename T::Arg2>::Kind,
+          typename Arg3Kind   = typename evaluator_traits<typename T::Arg3>::Kind,
+          typename Arg1Scalar = typename traits<typename T::Arg1>::Scalar,
+          typename Arg2Scalar = typename traits<typename T::Arg2>::Scalar,
+          typename Arg3Scalar = typename traits<typename T::Arg3>::Scalar> struct ternary_evaluator;
+
+template< typename T,
+          typename LhsKind   = typename evaluator_traits<typename T::Lhs>::Kind,
+          typename RhsKind   = typename evaluator_traits<typename T::Rhs>::Kind,
+          typename LhsScalar = typename traits<typename T::Lhs>::Scalar,
+          typename RhsScalar = typename traits<typename T::Rhs>::Scalar> struct binary_evaluator;
+
+template< typename T,
+          typename Kind   = typename evaluator_traits<typename T::NestedExpression>::Kind,
+          typename Scalar = typename T::Scalar> struct unary_evaluator;
+          
+// evaluator_traits<T> contains traits for evaluator<T> 
+
+template<typename T>
+struct evaluator_traits_base
+{
+  // by default, get evaluator kind and shape from storage
+  typedef typename storage_kind_to_evaluator_kind<typename traits<T>::StorageKind>::Kind Kind;
+  typedef typename storage_kind_to_shape<typename traits<T>::StorageKind>::Shape Shape;
+};
+
+// Default evaluator traits
+template<typename T>
+struct evaluator_traits : public evaluator_traits_base<T>
+{
+};
+
+template<typename T, typename Shape = typename evaluator_traits<T>::Shape >
+struct evaluator_assume_aliasing {
+  static const bool value = false;
+};
+
+// By default, we assume a unary expression:
+template<typename T>
+struct evaluator : public unary_evaluator<T>
+{
+  typedef unary_evaluator<T> Base;
+  EIGEN_DEVICE_FUNC explicit evaluator(const T& xpr) : Base(xpr) {}
+};
+
+
+// TODO: Think about const-correctness
+template<typename T>
+struct evaluator<const T>
+  : evaluator<T>
+{
+  EIGEN_DEVICE_FUNC
+  explicit evaluator(const T& xpr) : evaluator<T>(xpr) {}
+};
+
+// ---------- base class for all evaluators ----------
+
+template<typename ExpressionType>
+struct evaluator_base : public noncopyable
+{
+  // TODO that's not very nice to have to propagate all these traits. They are currently only needed to handle outer,inner indices.
+  typedef traits<ExpressionType> ExpressionTraits;
+  
+  enum {
+    Alignment = 0
+  };
+};
+
+// -------------------- Matrix and Array --------------------
+//
+// evaluator<PlainObjectBase> is a common base class for the
+// Matrix and Array evaluators.
+// Here we directly specialize evaluator. This is not really a unary expression, and it is, by definition, dense,
+// so no need for more sophisticated dispatching.
+
+template<typename Derived>
+struct evaluator<PlainObjectBase<Derived> >
+  : evaluator_base<Derived>
+{
+  typedef PlainObjectBase<Derived> PlainObjectType;
+  typedef typename PlainObjectType::Scalar Scalar;
+  typedef typename PlainObjectType::CoeffReturnType CoeffReturnType;
+
+  enum {
+    IsRowMajor = PlainObjectType::IsRowMajor,
+    IsVectorAtCompileTime = PlainObjectType::IsVectorAtCompileTime,
+    RowsAtCompileTime = PlainObjectType::RowsAtCompileTime,
+    ColsAtCompileTime = PlainObjectType::ColsAtCompileTime,
+    
+    CoeffReadCost = NumTraits<Scalar>::ReadCost,
+    Flags = traits<Derived>::EvaluatorFlags,
+    Alignment = traits<Derived>::Alignment
+  };
+  
+  EIGEN_DEVICE_FUNC evaluator()
+    : m_data(0),
+      m_outerStride(IsVectorAtCompileTime  ? 0 
+                                           : int(IsRowMajor) ? ColsAtCompileTime 
+                                           : RowsAtCompileTime)
+  {
+    EIGEN_INTERNAL_CHECK_COST_VALUE(CoeffReadCost);
+  }
+  
+  EIGEN_DEVICE_FUNC explicit evaluator(const PlainObjectType& m)
+    : m_data(m.data()), m_outerStride(IsVectorAtCompileTime ? 0 : m.outerStride()) 
+  {
+    EIGEN_INTERNAL_CHECK_COST_VALUE(CoeffReadCost);
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  CoeffReturnType coeff(Index row, Index col) const
+  {
+    if (IsRowMajor)
+      return m_data[row * m_outerStride.value() + col];
+    else
+      return m_data[row + col * m_outerStride.value()];
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  CoeffReturnType coeff(Index index) const
+  {
+    return m_data[index];
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  Scalar& coeffRef(Index row, Index col)
+  {
+    if (IsRowMajor)
+      return const_cast<Scalar*>(m_data)[row * m_outerStride.value() + col];
+    else
+      return const_cast<Scalar*>(m_data)[row + col * m_outerStride.value()];
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  Scalar& coeffRef(Index index)
+  {
+    return const_cast<Scalar*>(m_data)[index];
+  }
+
+  template<int LoadMode, typename PacketType>
+  EIGEN_STRONG_INLINE
+  PacketType packet(Index row, Index col) const
+  {
+    if (IsRowMajor)
+      return ploadt<PacketType, LoadMode>(m_data + row * m_outerStride.value() + col);
+    else
+      return ploadt<PacketType, LoadMode>(m_data + row + col * m_outerStride.value());
+  }
+
+  template<int LoadMode, typename PacketType>
+  EIGEN_STRONG_INLINE
+  PacketType packet(Index index) const
+  {
+    return ploadt<PacketType, LoadMode>(m_data + index);
+  }
+
+  template<int StoreMode,typename PacketType>
+  EIGEN_STRONG_INLINE
+  void writePacket(Index row, Index col, const PacketType& x)
+  {
+    if (IsRowMajor)
+      return pstoret<Scalar, PacketType, StoreMode>
+	            (const_cast<Scalar*>(m_data) + row * m_outerStride.value() + col, x);
+    else
+      return pstoret<Scalar, PacketType, StoreMode>
+                    (const_cast<Scalar*>(m_data) + row + col * m_outerStride.value(), x);
+  }
+
+  template<int StoreMode, typename PacketType>
+  EIGEN_STRONG_INLINE
+  void writePacket(Index index, const PacketType& x)
+  {
+    return pstoret<Scalar, PacketType, StoreMode>(const_cast<Scalar*>(m_data) + index, x);
+  }
+
+protected:
+  const Scalar *m_data;
+
+  // We do not need to know the outer stride for vectors
+  variable_if_dynamic<Index, IsVectorAtCompileTime  ? 0 
+                                                    : int(IsRowMajor) ? ColsAtCompileTime 
+                                                    : RowsAtCompileTime> m_outerStride;
+};
+
+template<typename Scalar, int Rows, int Cols, int Options, int MaxRows, int MaxCols>
+struct evaluator<Matrix<Scalar, Rows, Cols, Options, MaxRows, MaxCols> >
+  : evaluator<PlainObjectBase<Matrix<Scalar, Rows, Cols, Options, MaxRows, MaxCols> > >
+{
+  typedef Matrix<Scalar, Rows, Cols, Options, MaxRows, MaxCols> XprType;
+  
+  EIGEN_DEVICE_FUNC evaluator() {}
+
+  EIGEN_DEVICE_FUNC explicit evaluator(const XprType& m)
+    : evaluator<PlainObjectBase<XprType> >(m) 
+  { }
+};
+
+template<typename Scalar, int Rows, int Cols, int Options, int MaxRows, int MaxCols>
+struct evaluator<Array<Scalar, Rows, Cols, Options, MaxRows, MaxCols> >
+  : evaluator<PlainObjectBase<Array<Scalar, Rows, Cols, Options, MaxRows, MaxCols> > >
+{
+  typedef Array<Scalar, Rows, Cols, Options, MaxRows, MaxCols> XprType;
+
+  EIGEN_DEVICE_FUNC evaluator() {}
+  
+  EIGEN_DEVICE_FUNC explicit evaluator(const XprType& m)
+    : evaluator<PlainObjectBase<XprType> >(m) 
+  { }
+};
+
+// -------------------- Transpose --------------------
+
+template<typename ArgType>
+struct unary_evaluator<Transpose<ArgType>, IndexBased>
+  : evaluator_base<Transpose<ArgType> >
+{
+  typedef Transpose<ArgType> XprType;
+  
+  enum {
+    CoeffReadCost = evaluator<ArgType>::CoeffReadCost,    
+    Flags = evaluator<ArgType>::Flags ^ RowMajorBit,
+    Alignment = evaluator<ArgType>::Alignment
+  };
+
+  EIGEN_DEVICE_FUNC explicit unary_evaluator(const XprType& t) : m_argImpl(t.nestedExpression()) {}
+
+  typedef typename XprType::Scalar Scalar;
+  typedef typename XprType::CoeffReturnType CoeffReturnType;
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  CoeffReturnType coeff(Index row, Index col) const
+  {
+    return m_argImpl.coeff(col, row);
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  CoeffReturnType coeff(Index index) const
+  {
+    return m_argImpl.coeff(index);
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  Scalar& coeffRef(Index row, Index col)
+  {
+    return m_argImpl.coeffRef(col, row);
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  typename XprType::Scalar& coeffRef(Index index)
+  {
+    return m_argImpl.coeffRef(index);
+  }
+
+  template<int LoadMode, typename PacketType>
+  EIGEN_STRONG_INLINE
+  PacketType packet(Index row, Index col) const
+  {
+    return m_argImpl.template packet<LoadMode,PacketType>(col, row);
+  }
+
+  template<int LoadMode, typename PacketType>
+  EIGEN_STRONG_INLINE
+  PacketType packet(Index index) const
+  {
+    return m_argImpl.template packet<LoadMode,PacketType>(index);
+  }
+
+  template<int StoreMode, typename PacketType>
+  EIGEN_STRONG_INLINE
+  void writePacket(Index row, Index col, const PacketType& x)
+  {
+    m_argImpl.template writePacket<StoreMode,PacketType>(col, row, x);
+  }
+
+  template<int StoreMode, typename PacketType>
+  EIGEN_STRONG_INLINE
+  void writePacket(Index index, const PacketType& x)
+  {
+    m_argImpl.template writePacket<StoreMode,PacketType>(index, x);
+  }
+
+protected:
+  evaluator<ArgType> m_argImpl;
+};
+
+// -------------------- CwiseNullaryOp --------------------
+// Like Matrix and Array, this is not really a unary expression, so we directly specialize evaluator.
+// Likewise, there is not need to more sophisticated dispatching here.
+
+template<typename Scalar,typename NullaryOp,
+         bool has_nullary = has_nullary_operator<NullaryOp>::value,
+         bool has_unary   = has_unary_operator<NullaryOp>::value,
+         bool has_binary  = has_binary_operator<NullaryOp>::value>
+struct nullary_wrapper
+{
+  template <typename IndexType>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar operator()(const NullaryOp& op, IndexType i, IndexType j) const { return op(i,j); }
+  template <typename IndexType>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar operator()(const NullaryOp& op, IndexType i) const { return op(i); }
+
+  template <typename T, typename IndexType> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T packetOp(const NullaryOp& op, IndexType i, IndexType j) const { return op.template packetOp<T>(i,j); }
+  template <typename T, typename IndexType> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T packetOp(const NullaryOp& op, IndexType i) const { return op.template packetOp<T>(i); }
+};
+
+template<typename Scalar,typename NullaryOp>
+struct nullary_wrapper<Scalar,NullaryOp,true,false,false>
+{
+  template <typename IndexType>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar operator()(const NullaryOp& op, IndexType=0, IndexType=0) const { return op(); }
+  template <typename T, typename IndexType> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T packetOp(const NullaryOp& op, IndexType=0, IndexType=0) const { return op.template packetOp<T>(); }
+};
+
+template<typename Scalar,typename NullaryOp>
+struct nullary_wrapper<Scalar,NullaryOp,false,false,true>
+{
+  template <typename IndexType>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar operator()(const NullaryOp& op, IndexType i, IndexType j=0) const { return op(i,j); }
+  template <typename T, typename IndexType> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T packetOp(const NullaryOp& op, IndexType i, IndexType j=0) const { return op.template packetOp<T>(i,j); }
+};
+
+// We need the following specialization for vector-only functors assigned to a runtime vector,
+// for instance, using linspace and assigning a RowVectorXd to a MatrixXd or even a row of a MatrixXd.
+// In this case, i==0 and j is used for the actual iteration.
+template<typename Scalar,typename NullaryOp>
+struct nullary_wrapper<Scalar,NullaryOp,false,true,false>
+{
+  template <typename IndexType>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar operator()(const NullaryOp& op, IndexType i, IndexType j) const {
+    eigen_assert(i==0 || j==0);
+    return op(i+j);
+  }
+  template <typename T, typename IndexType> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T packetOp(const NullaryOp& op, IndexType i, IndexType j) const {
+    eigen_assert(i==0 || j==0);
+    return op.template packetOp<T>(i+j);
+  }
+
+  template <typename IndexType>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar operator()(const NullaryOp& op, IndexType i) const { return op(i); }
+  template <typename T, typename IndexType>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T packetOp(const NullaryOp& op, IndexType i) const { return op.template packetOp<T>(i); }
+};
+
+template<typename Scalar,typename NullaryOp>
+struct nullary_wrapper<Scalar,NullaryOp,false,false,false> {};
+
+#if 0 && EIGEN_COMP_MSVC>0
+// Disable this ugly workaround. This is now handled in traits<Ref>::match,
+// but this piece of code might still become handly if some other weird compilation
+// erros pop up again.
+
+// MSVC exhibits a weird compilation error when
+// compiling:
+//    Eigen::MatrixXf A = MatrixXf::Random(3,3);
+//    Ref<const MatrixXf> R = 2.f*A;
+// and that has_*ary_operator<scalar_constant_op<float>> have not been instantiated yet.
+// The "problem" is that evaluator<2.f*A> is instantiated by traits<Ref>::match<2.f*A>
+// and at that time has_*ary_operator<T> returns true regardless of T.
+// Then nullary_wrapper is badly instantiated as nullary_wrapper<.,.,true,true,true>.
+// The trick is thus to defer the proper instantiation of nullary_wrapper when coeff(),
+// and packet() are really instantiated as implemented below:
+
+// This is a simple wrapper around Index to enforce the re-instantiation of
+// has_*ary_operator when needed.
+template<typename T> struct nullary_wrapper_workaround_msvc {
+  nullary_wrapper_workaround_msvc(const T&);
+  operator T()const;
+};
+
+template<typename Scalar,typename NullaryOp>
+struct nullary_wrapper<Scalar,NullaryOp,true,true,true>
+{
+  template <typename IndexType>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar operator()(const NullaryOp& op, IndexType i, IndexType j) const {
+    return nullary_wrapper<Scalar,NullaryOp,
+    has_nullary_operator<NullaryOp,nullary_wrapper_workaround_msvc<IndexType> >::value,
+    has_unary_operator<NullaryOp,nullary_wrapper_workaround_msvc<IndexType> >::value,
+    has_binary_operator<NullaryOp,nullary_wrapper_workaround_msvc<IndexType> >::value>().operator()(op,i,j);
+  }
+  template <typename IndexType>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar operator()(const NullaryOp& op, IndexType i) const {
+    return nullary_wrapper<Scalar,NullaryOp,
+    has_nullary_operator<NullaryOp,nullary_wrapper_workaround_msvc<IndexType> >::value,
+    has_unary_operator<NullaryOp,nullary_wrapper_workaround_msvc<IndexType> >::value,
+    has_binary_operator<NullaryOp,nullary_wrapper_workaround_msvc<IndexType> >::value>().operator()(op,i);
+  }
+
+  template <typename T, typename IndexType>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T packetOp(const NullaryOp& op, IndexType i, IndexType j) const {
+    return nullary_wrapper<Scalar,NullaryOp,
+    has_nullary_operator<NullaryOp,nullary_wrapper_workaround_msvc<IndexType> >::value,
+    has_unary_operator<NullaryOp,nullary_wrapper_workaround_msvc<IndexType> >::value,
+    has_binary_operator<NullaryOp,nullary_wrapper_workaround_msvc<IndexType> >::value>().template packetOp<T>(op,i,j);
+  }
+  template <typename T, typename IndexType>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T packetOp(const NullaryOp& op, IndexType i) const {
+    return nullary_wrapper<Scalar,NullaryOp,
+    has_nullary_operator<NullaryOp,nullary_wrapper_workaround_msvc<IndexType> >::value,
+    has_unary_operator<NullaryOp,nullary_wrapper_workaround_msvc<IndexType> >::value,
+    has_binary_operator<NullaryOp,nullary_wrapper_workaround_msvc<IndexType> >::value>().template packetOp<T>(op,i);
+  }
+};
+#endif // MSVC workaround
+
+template<typename NullaryOp, typename PlainObjectType>
+struct evaluator<CwiseNullaryOp<NullaryOp,PlainObjectType> >
+  : evaluator_base<CwiseNullaryOp<NullaryOp,PlainObjectType> >
+{
+  typedef CwiseNullaryOp<NullaryOp,PlainObjectType> XprType;
+  typedef typename internal::remove_all<PlainObjectType>::type PlainObjectTypeCleaned;
+  
+  enum {
+    CoeffReadCost = internal::functor_traits<NullaryOp>::Cost,
+    
+    Flags = (evaluator<PlainObjectTypeCleaned>::Flags
+          &  (  HereditaryBits
+              | (functor_has_linear_access<NullaryOp>::ret  ? LinearAccessBit : 0)
+              | (functor_traits<NullaryOp>::PacketAccess    ? PacketAccessBit : 0)))
+          | (functor_traits<NullaryOp>::IsRepeatable ? 0 : EvalBeforeNestingBit),
+    Alignment = AlignedMax
+  };
+
+  EIGEN_DEVICE_FUNC explicit evaluator(const XprType& n)
+    : m_functor(n.functor()), m_wrapper()
+  {
+    EIGEN_INTERNAL_CHECK_COST_VALUE(CoeffReadCost);
+  }
+
+  typedef typename XprType::CoeffReturnType CoeffReturnType;
+
+  template <typename IndexType>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  CoeffReturnType coeff(IndexType row, IndexType col) const
+  {
+    return m_wrapper(m_functor, row, col);
+  }
+
+  template <typename IndexType>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  CoeffReturnType coeff(IndexType index) const
+  {
+    return m_wrapper(m_functor,index);
+  }
+
+  template<int LoadMode, typename PacketType, typename IndexType>
+  EIGEN_STRONG_INLINE
+  PacketType packet(IndexType row, IndexType col) const
+  {
+    return m_wrapper.template packetOp<PacketType>(m_functor, row, col);
+  }
+
+  template<int LoadMode, typename PacketType, typename IndexType>
+  EIGEN_STRONG_INLINE
+  PacketType packet(IndexType index) const
+  {
+    return m_wrapper.template packetOp<PacketType>(m_functor, index);
+  }
+
+protected:
+  const NullaryOp m_functor;
+  const internal::nullary_wrapper<CoeffReturnType,NullaryOp> m_wrapper;
+};
+
+// -------------------- CwiseUnaryOp --------------------
+
+template<typename UnaryOp, typename ArgType>
+struct unary_evaluator<CwiseUnaryOp<UnaryOp, ArgType>, IndexBased >
+  : evaluator_base<CwiseUnaryOp<UnaryOp, ArgType> >
+{
+  typedef CwiseUnaryOp<UnaryOp, ArgType> XprType;
+  
+  enum {
+    CoeffReadCost = evaluator<ArgType>::CoeffReadCost + functor_traits<UnaryOp>::Cost,
+    
+    Flags = evaluator<ArgType>::Flags
+          & (HereditaryBits | LinearAccessBit | (functor_traits<UnaryOp>::PacketAccess ? PacketAccessBit : 0)),
+    Alignment = evaluator<ArgType>::Alignment
+  };
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  explicit unary_evaluator(const XprType& op)
+    : m_functor(op.functor()), 
+      m_argImpl(op.nestedExpression()) 
+  {
+    EIGEN_INTERNAL_CHECK_COST_VALUE(functor_traits<UnaryOp>::Cost);
+    EIGEN_INTERNAL_CHECK_COST_VALUE(CoeffReadCost);
+  }
+
+  typedef typename XprType::CoeffReturnType CoeffReturnType;
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  CoeffReturnType coeff(Index row, Index col) const
+  {
+    return m_functor(m_argImpl.coeff(row, col));
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  CoeffReturnType coeff(Index index) const
+  {
+    return m_functor(m_argImpl.coeff(index));
+  }
+
+  template<int LoadMode, typename PacketType>
+  EIGEN_STRONG_INLINE
+  PacketType packet(Index row, Index col) const
+  {
+    return m_functor.packetOp(m_argImpl.template packet<LoadMode, PacketType>(row, col));
+  }
+
+  template<int LoadMode, typename PacketType>
+  EIGEN_STRONG_INLINE
+  PacketType packet(Index index) const
+  {
+    return m_functor.packetOp(m_argImpl.template packet<LoadMode, PacketType>(index));
+  }
+
+protected:
+  const UnaryOp m_functor;
+  evaluator<ArgType> m_argImpl;
+};
+
+// -------------------- CwiseTernaryOp --------------------
+
+// this is a ternary expression
+template<typename TernaryOp, typename Arg1, typename Arg2, typename Arg3>
+struct evaluator<CwiseTernaryOp<TernaryOp, Arg1, Arg2, Arg3> >
+  : public ternary_evaluator<CwiseTernaryOp<TernaryOp, Arg1, Arg2, Arg3> >
+{
+  typedef CwiseTernaryOp<TernaryOp, Arg1, Arg2, Arg3> XprType;
+  typedef ternary_evaluator<CwiseTernaryOp<TernaryOp, Arg1, Arg2, Arg3> > Base;
+  
+  EIGEN_DEVICE_FUNC explicit evaluator(const XprType& xpr) : Base(xpr) {}
+};
+
+template<typename TernaryOp, typename Arg1, typename Arg2, typename Arg3>
+struct ternary_evaluator<CwiseTernaryOp<TernaryOp, Arg1, Arg2, Arg3>, IndexBased, IndexBased>
+  : evaluator_base<CwiseTernaryOp<TernaryOp, Arg1, Arg2, Arg3> >
+{
+  typedef CwiseTernaryOp<TernaryOp, Arg1, Arg2, Arg3> XprType;
+  
+  enum {
+    CoeffReadCost = evaluator<Arg1>::CoeffReadCost + evaluator<Arg2>::CoeffReadCost + evaluator<Arg3>::CoeffReadCost + functor_traits<TernaryOp>::Cost,
+    
+    Arg1Flags = evaluator<Arg1>::Flags,
+    Arg2Flags = evaluator<Arg2>::Flags,
+    Arg3Flags = evaluator<Arg3>::Flags,
+    SameType = is_same<typename Arg1::Scalar,typename Arg2::Scalar>::value && is_same<typename Arg1::Scalar,typename Arg3::Scalar>::value,
+    StorageOrdersAgree = (int(Arg1Flags)&RowMajorBit)==(int(Arg2Flags)&RowMajorBit) && (int(Arg1Flags)&RowMajorBit)==(int(Arg3Flags)&RowMajorBit),
+    Flags0 = (int(Arg1Flags) | int(Arg2Flags) | int(Arg3Flags)) & (
+        HereditaryBits
+        | (int(Arg1Flags) & int(Arg2Flags) & int(Arg3Flags) &
+           ( (StorageOrdersAgree ? LinearAccessBit : 0)
+           | (functor_traits<TernaryOp>::PacketAccess && StorageOrdersAgree && SameType ? PacketAccessBit : 0)
+           )
+        )
+     ),
+    Flags = (Flags0 & ~RowMajorBit) | (Arg1Flags & RowMajorBit),
+    Alignment = EIGEN_PLAIN_ENUM_MIN(
+        EIGEN_PLAIN_ENUM_MIN(evaluator<Arg1>::Alignment, evaluator<Arg2>::Alignment),
+        evaluator<Arg3>::Alignment)
+  };
+
+  EIGEN_DEVICE_FUNC explicit ternary_evaluator(const XprType& xpr)
+    : m_functor(xpr.functor()),
+      m_arg1Impl(xpr.arg1()), 
+      m_arg2Impl(xpr.arg2()), 
+      m_arg3Impl(xpr.arg3())  
+  {
+    EIGEN_INTERNAL_CHECK_COST_VALUE(functor_traits<TernaryOp>::Cost);
+    EIGEN_INTERNAL_CHECK_COST_VALUE(CoeffReadCost);
+  }
+
+  typedef typename XprType::CoeffReturnType CoeffReturnType;
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  CoeffReturnType coeff(Index row, Index col) const
+  {
+    return m_functor(m_arg1Impl.coeff(row, col), m_arg2Impl.coeff(row, col), m_arg3Impl.coeff(row, col));
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  CoeffReturnType coeff(Index index) const
+  {
+    return m_functor(m_arg1Impl.coeff(index), m_arg2Impl.coeff(index), m_arg3Impl.coeff(index));
+  }
+
+  template<int LoadMode, typename PacketType>
+  EIGEN_STRONG_INLINE
+  PacketType packet(Index row, Index col) const
+  {
+    return m_functor.packetOp(m_arg1Impl.template packet<LoadMode,PacketType>(row, col),
+                              m_arg2Impl.template packet<LoadMode,PacketType>(row, col),
+                              m_arg3Impl.template packet<LoadMode,PacketType>(row, col));
+  }
+
+  template<int LoadMode, typename PacketType>
+  EIGEN_STRONG_INLINE
+  PacketType packet(Index index) const
+  {
+    return m_functor.packetOp(m_arg1Impl.template packet<LoadMode,PacketType>(index),
+                              m_arg2Impl.template packet<LoadMode,PacketType>(index),
+                              m_arg3Impl.template packet<LoadMode,PacketType>(index));
+  }
+
+protected:
+  const TernaryOp m_functor;
+  evaluator<Arg1> m_arg1Impl;
+  evaluator<Arg2> m_arg2Impl;
+  evaluator<Arg3> m_arg3Impl;
+};
+
+// -------------------- CwiseBinaryOp --------------------
+
+// this is a binary expression
+template<typename BinaryOp, typename Lhs, typename Rhs>
+struct evaluator<CwiseBinaryOp<BinaryOp, Lhs, Rhs> >
+  : public binary_evaluator<CwiseBinaryOp<BinaryOp, Lhs, Rhs> >
+{
+  typedef CwiseBinaryOp<BinaryOp, Lhs, Rhs> XprType;
+  typedef binary_evaluator<CwiseBinaryOp<BinaryOp, Lhs, Rhs> > Base;
+  
+  EIGEN_DEVICE_FUNC explicit evaluator(const XprType& xpr) : Base(xpr) {}
+};
+
+template<typename BinaryOp, typename Lhs, typename Rhs>
+struct binary_evaluator<CwiseBinaryOp<BinaryOp, Lhs, Rhs>, IndexBased, IndexBased>
+  : evaluator_base<CwiseBinaryOp<BinaryOp, Lhs, Rhs> >
+{
+  typedef CwiseBinaryOp<BinaryOp, Lhs, Rhs> XprType;
+  
+  enum {
+    CoeffReadCost = evaluator<Lhs>::CoeffReadCost + evaluator<Rhs>::CoeffReadCost + functor_traits<BinaryOp>::Cost,
+    
+    LhsFlags = evaluator<Lhs>::Flags,
+    RhsFlags = evaluator<Rhs>::Flags,
+    SameType = is_same<typename Lhs::Scalar,typename Rhs::Scalar>::value,
+    StorageOrdersAgree = (int(LhsFlags)&RowMajorBit)==(int(RhsFlags)&RowMajorBit),
+    Flags0 = (int(LhsFlags) | int(RhsFlags)) & (
+        HereditaryBits
+      | (int(LhsFlags) & int(RhsFlags) &
+           ( (StorageOrdersAgree ? LinearAccessBit : 0)
+           | (functor_traits<BinaryOp>::PacketAccess && StorageOrdersAgree && SameType ? PacketAccessBit : 0)
+           )
+        )
+     ),
+    Flags = (Flags0 & ~RowMajorBit) | (LhsFlags & RowMajorBit),
+    Alignment = EIGEN_PLAIN_ENUM_MIN(evaluator<Lhs>::Alignment,evaluator<Rhs>::Alignment)
+  };
+
+  EIGEN_DEVICE_FUNC explicit binary_evaluator(const XprType& xpr)
+    : m_functor(xpr.functor()),
+      m_lhsImpl(xpr.lhs()), 
+      m_rhsImpl(xpr.rhs())  
+  {
+    EIGEN_INTERNAL_CHECK_COST_VALUE(functor_traits<BinaryOp>::Cost);
+    EIGEN_INTERNAL_CHECK_COST_VALUE(CoeffReadCost);
+  }
+
+  typedef typename XprType::CoeffReturnType CoeffReturnType;
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  CoeffReturnType coeff(Index row, Index col) const
+  {
+    return m_functor(m_lhsImpl.coeff(row, col), m_rhsImpl.coeff(row, col));
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  CoeffReturnType coeff(Index index) const
+  {
+    return m_functor(m_lhsImpl.coeff(index), m_rhsImpl.coeff(index));
+  }
+
+  template<int LoadMode, typename PacketType>
+  EIGEN_STRONG_INLINE
+  PacketType packet(Index row, Index col) const
+  {
+    return m_functor.packetOp(m_lhsImpl.template packet<LoadMode,PacketType>(row, col),
+                              m_rhsImpl.template packet<LoadMode,PacketType>(row, col));
+  }
+
+  template<int LoadMode, typename PacketType>
+  EIGEN_STRONG_INLINE
+  PacketType packet(Index index) const
+  {
+    return m_functor.packetOp(m_lhsImpl.template packet<LoadMode,PacketType>(index),
+                              m_rhsImpl.template packet<LoadMode,PacketType>(index));
+  }
+
+protected:
+  const BinaryOp m_functor;
+  evaluator<Lhs> m_lhsImpl;
+  evaluator<Rhs> m_rhsImpl;
+};
+
+// -------------------- CwiseUnaryView --------------------
+
+template<typename UnaryOp, typename ArgType>
+struct unary_evaluator<CwiseUnaryView<UnaryOp, ArgType>, IndexBased>
+  : evaluator_base<CwiseUnaryView<UnaryOp, ArgType> >
+{
+  typedef CwiseUnaryView<UnaryOp, ArgType> XprType;
+  
+  enum {
+    CoeffReadCost = evaluator<ArgType>::CoeffReadCost + functor_traits<UnaryOp>::Cost,
+    
+    Flags = (evaluator<ArgType>::Flags & (HereditaryBits | LinearAccessBit | DirectAccessBit)),
+    
+    Alignment = 0 // FIXME it is not very clear why alignment is necessarily lost...
+  };
+
+  EIGEN_DEVICE_FUNC explicit unary_evaluator(const XprType& op)
+    : m_unaryOp(op.functor()), 
+      m_argImpl(op.nestedExpression()) 
+  {
+    EIGEN_INTERNAL_CHECK_COST_VALUE(functor_traits<UnaryOp>::Cost);
+    EIGEN_INTERNAL_CHECK_COST_VALUE(CoeffReadCost);
+  }
+
+  typedef typename XprType::Scalar Scalar;
+  typedef typename XprType::CoeffReturnType CoeffReturnType;
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  CoeffReturnType coeff(Index row, Index col) const
+  {
+    return m_unaryOp(m_argImpl.coeff(row, col));
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  CoeffReturnType coeff(Index index) const
+  {
+    return m_unaryOp(m_argImpl.coeff(index));
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  Scalar& coeffRef(Index row, Index col)
+  {
+    return m_unaryOp(m_argImpl.coeffRef(row, col));
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  Scalar& coeffRef(Index index)
+  {
+    return m_unaryOp(m_argImpl.coeffRef(index));
+  }
+
+protected:
+  const UnaryOp m_unaryOp;
+  evaluator<ArgType> m_argImpl;
+};
+
+// -------------------- Map --------------------
+
+// FIXME perhaps the PlainObjectType could be provided by Derived::PlainObject ?
+// but that might complicate template specialization
+template<typename Derived, typename PlainObjectType>
+struct mapbase_evaluator;
+
+template<typename Derived, typename PlainObjectType>
+struct mapbase_evaluator : evaluator_base<Derived>
+{
+  typedef Derived  XprType;
+  typedef typename XprType::PointerType PointerType;
+  typedef typename XprType::Scalar Scalar;
+  typedef typename XprType::CoeffReturnType CoeffReturnType;
+  
+  enum {
+    IsRowMajor = XprType::RowsAtCompileTime,
+    ColsAtCompileTime = XprType::ColsAtCompileTime,
+    CoeffReadCost = NumTraits<Scalar>::ReadCost
+  };
+
+  EIGEN_DEVICE_FUNC explicit mapbase_evaluator(const XprType& map)
+    : m_data(const_cast<PointerType>(map.data())),
+      m_innerStride(map.innerStride()),
+      m_outerStride(map.outerStride())
+  {
+    EIGEN_STATIC_ASSERT(EIGEN_IMPLIES(evaluator<Derived>::Flags&PacketAccessBit, internal::inner_stride_at_compile_time<Derived>::ret==1),
+                        PACKET_ACCESS_REQUIRES_TO_HAVE_INNER_STRIDE_FIXED_TO_1);
+    EIGEN_INTERNAL_CHECK_COST_VALUE(CoeffReadCost);
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  CoeffReturnType coeff(Index row, Index col) const
+  {
+    return m_data[col * colStride() + row * rowStride()];
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  CoeffReturnType coeff(Index index) const
+  {
+    return m_data[index * m_innerStride.value()];
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  Scalar& coeffRef(Index row, Index col)
+  {
+    return m_data[col * colStride() + row * rowStride()];
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  Scalar& coeffRef(Index index)
+  {
+    return m_data[index * m_innerStride.value()];
+  }
+
+  template<int LoadMode, typename PacketType>
+  EIGEN_STRONG_INLINE
+  PacketType packet(Index row, Index col) const
+  {
+    PointerType ptr = m_data + row * rowStride() + col * colStride();
+    return internal::ploadt<PacketType, LoadMode>(ptr);
+  }
+
+  template<int LoadMode, typename PacketType>
+  EIGEN_STRONG_INLINE
+  PacketType packet(Index index) const
+  {
+    return internal::ploadt<PacketType, LoadMode>(m_data + index * m_innerStride.value());
+  }
+
+  template<int StoreMode, typename PacketType>
+  EIGEN_STRONG_INLINE
+  void writePacket(Index row, Index col, const PacketType& x)
+  {
+    PointerType ptr = m_data + row * rowStride() + col * colStride();
+    return internal::pstoret<Scalar, PacketType, StoreMode>(ptr, x);
+  }
+
+  template<int StoreMode, typename PacketType>
+  EIGEN_STRONG_INLINE
+  void writePacket(Index index, const PacketType& x)
+  {
+    internal::pstoret<Scalar, PacketType, StoreMode>(m_data + index * m_innerStride.value(), x);
+  }
+protected:
+  EIGEN_DEVICE_FUNC
+  inline Index rowStride() const { return XprType::IsRowMajor ? m_outerStride.value() : m_innerStride.value(); }
+  EIGEN_DEVICE_FUNC
+  inline Index colStride() const { return XprType::IsRowMajor ? m_innerStride.value() : m_outerStride.value(); }
+
+  PointerType m_data;
+  const internal::variable_if_dynamic<Index, XprType::InnerStrideAtCompileTime> m_innerStride;
+  const internal::variable_if_dynamic<Index, XprType::OuterStrideAtCompileTime> m_outerStride;
+};
+
+template<typename PlainObjectType, int MapOptions, typename StrideType> 
+struct evaluator<Map<PlainObjectType, MapOptions, StrideType> >
+  : public mapbase_evaluator<Map<PlainObjectType, MapOptions, StrideType>, PlainObjectType>
+{
+  typedef Map<PlainObjectType, MapOptions, StrideType> XprType;
+  typedef typename XprType::Scalar Scalar;
+  // TODO: should check for smaller packet types once we can handle multi-sized packet types
+  typedef typename packet_traits<Scalar>::type PacketScalar;
+  
+  enum {
+    InnerStrideAtCompileTime = StrideType::InnerStrideAtCompileTime == 0
+                             ? int(PlainObjectType::InnerStrideAtCompileTime)
+                             : int(StrideType::InnerStrideAtCompileTime),
+    OuterStrideAtCompileTime = StrideType::OuterStrideAtCompileTime == 0
+                             ? int(PlainObjectType::OuterStrideAtCompileTime)
+                             : int(StrideType::OuterStrideAtCompileTime),
+    HasNoInnerStride = InnerStrideAtCompileTime == 1,
+    HasNoOuterStride = StrideType::OuterStrideAtCompileTime == 0,
+    HasNoStride = HasNoInnerStride && HasNoOuterStride,
+    IsDynamicSize = PlainObjectType::SizeAtCompileTime==Dynamic,
+    
+    PacketAccessMask = bool(HasNoInnerStride) ? ~int(0) : ~int(PacketAccessBit),
+    LinearAccessMask = bool(HasNoStride) || bool(PlainObjectType::IsVectorAtCompileTime) ? ~int(0) : ~int(LinearAccessBit),
+    Flags = int( evaluator<PlainObjectType>::Flags) & (LinearAccessMask&PacketAccessMask),
+    
+    Alignment = int(MapOptions)&int(AlignedMask)
+  };
+
+  EIGEN_DEVICE_FUNC explicit evaluator(const XprType& map)
+    : mapbase_evaluator<XprType, PlainObjectType>(map) 
+  { }
+};
+
+// -------------------- Ref --------------------
+
+template<typename PlainObjectType, int RefOptions, typename StrideType> 
+struct evaluator<Ref<PlainObjectType, RefOptions, StrideType> >
+  : public mapbase_evaluator<Ref<PlainObjectType, RefOptions, StrideType>, PlainObjectType>
+{
+  typedef Ref<PlainObjectType, RefOptions, StrideType> XprType;
+  
+  enum {
+    Flags = evaluator<Map<PlainObjectType, RefOptions, StrideType> >::Flags,
+    Alignment = evaluator<Map<PlainObjectType, RefOptions, StrideType> >::Alignment
+  };
+
+  EIGEN_DEVICE_FUNC explicit evaluator(const XprType& ref)
+    : mapbase_evaluator<XprType, PlainObjectType>(ref) 
+  { }
+};
+
+// -------------------- Block --------------------
+
+template<typename ArgType, int BlockRows, int BlockCols, bool InnerPanel,
+         bool HasDirectAccess = internal::has_direct_access<ArgType>::ret> struct block_evaluator;
+         
+template<typename ArgType, int BlockRows, int BlockCols, bool InnerPanel> 
+struct evaluator<Block<ArgType, BlockRows, BlockCols, InnerPanel> >
+  : block_evaluator<ArgType, BlockRows, BlockCols, InnerPanel>
+{
+  typedef Block<ArgType, BlockRows, BlockCols, InnerPanel> XprType;
+  typedef typename XprType::Scalar Scalar;
+  // TODO: should check for smaller packet types once we can handle multi-sized packet types
+  typedef typename packet_traits<Scalar>::type PacketScalar;
+  
+  enum {
+    CoeffReadCost = evaluator<ArgType>::CoeffReadCost,
+    
+    RowsAtCompileTime = traits<XprType>::RowsAtCompileTime,
+    ColsAtCompileTime = traits<XprType>::ColsAtCompileTime,
+    MaxRowsAtCompileTime = traits<XprType>::MaxRowsAtCompileTime,
+    MaxColsAtCompileTime = traits<XprType>::MaxColsAtCompileTime,
+    
+    ArgTypeIsRowMajor = (int(evaluator<ArgType>::Flags)&RowMajorBit) != 0,
+    IsRowMajor = (MaxRowsAtCompileTime==1 && MaxColsAtCompileTime!=1) ? 1
+               : (MaxColsAtCompileTime==1 && MaxRowsAtCompileTime!=1) ? 0
+               : ArgTypeIsRowMajor,
+    HasSameStorageOrderAsArgType = (IsRowMajor == ArgTypeIsRowMajor),
+    InnerSize = IsRowMajor ? int(ColsAtCompileTime) : int(RowsAtCompileTime),
+    InnerStrideAtCompileTime = HasSameStorageOrderAsArgType
+                             ? int(inner_stride_at_compile_time<ArgType>::ret)
+                             : int(outer_stride_at_compile_time<ArgType>::ret),
+    OuterStrideAtCompileTime = HasSameStorageOrderAsArgType
+                             ? int(outer_stride_at_compile_time<ArgType>::ret)
+                             : int(inner_stride_at_compile_time<ArgType>::ret),
+    MaskPacketAccessBit = (InnerStrideAtCompileTime == 1 || HasSameStorageOrderAsArgType) ? PacketAccessBit : 0,
+    
+    FlagsLinearAccessBit = (RowsAtCompileTime == 1 || ColsAtCompileTime == 1 || (InnerPanel && (evaluator<ArgType>::Flags&LinearAccessBit))) ? LinearAccessBit : 0,    
+    FlagsRowMajorBit = XprType::Flags&RowMajorBit,
+    Flags0 = evaluator<ArgType>::Flags & ( (HereditaryBits & ~RowMajorBit) |
+                                           DirectAccessBit |
+                                           MaskPacketAccessBit),
+    Flags = Flags0 | FlagsLinearAccessBit | FlagsRowMajorBit,
+    
+    PacketAlignment = unpacket_traits<PacketScalar>::alignment,
+    Alignment0 = (InnerPanel && (OuterStrideAtCompileTime!=Dynamic)
+                             && (OuterStrideAtCompileTime!=0)
+                             && (((OuterStrideAtCompileTime * int(sizeof(Scalar))) % int(PacketAlignment)) == 0)) ? int(PacketAlignment) : 0,
+    Alignment = EIGEN_PLAIN_ENUM_MIN(evaluator<ArgType>::Alignment, Alignment0)
+  };
+  typedef block_evaluator<ArgType, BlockRows, BlockCols, InnerPanel> block_evaluator_type;
+  EIGEN_DEVICE_FUNC explicit evaluator(const XprType& block) : block_evaluator_type(block)
+  {
+    EIGEN_INTERNAL_CHECK_COST_VALUE(CoeffReadCost);
+  }
+};
+
+// no direct-access => dispatch to a unary evaluator
+template<typename ArgType, int BlockRows, int BlockCols, bool InnerPanel>
+struct block_evaluator<ArgType, BlockRows, BlockCols, InnerPanel, /*HasDirectAccess*/ false>
+  : unary_evaluator<Block<ArgType, BlockRows, BlockCols, InnerPanel> >
+{
+  typedef Block<ArgType, BlockRows, BlockCols, InnerPanel> XprType;
+
+  EIGEN_DEVICE_FUNC explicit block_evaluator(const XprType& block)
+    : unary_evaluator<XprType>(block) 
+  {}
+};
+
+template<typename ArgType, int BlockRows, int BlockCols, bool InnerPanel>
+struct unary_evaluator<Block<ArgType, BlockRows, BlockCols, InnerPanel>, IndexBased>
+  : evaluator_base<Block<ArgType, BlockRows, BlockCols, InnerPanel> >
+{
+  typedef Block<ArgType, BlockRows, BlockCols, InnerPanel> XprType;
+
+  EIGEN_DEVICE_FUNC explicit unary_evaluator(const XprType& block)
+    : m_argImpl(block.nestedExpression()), 
+      m_startRow(block.startRow()), 
+      m_startCol(block.startCol()),
+      m_linear_offset(InnerPanel?(XprType::IsRowMajor ? block.startRow()*block.cols() : block.startCol()*block.rows()):0)
+  { }
+ 
+  typedef typename XprType::Scalar Scalar;
+  typedef typename XprType::CoeffReturnType CoeffReturnType;
+
+  enum {
+    RowsAtCompileTime = XprType::RowsAtCompileTime,
+    ForwardLinearAccess = InnerPanel && bool(evaluator<ArgType>::Flags&LinearAccessBit)
+  };
+ 
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  CoeffReturnType coeff(Index row, Index col) const
+  { 
+    return m_argImpl.coeff(m_startRow.value() + row, m_startCol.value() + col); 
+  }
+  
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  CoeffReturnType coeff(Index index) const
+  { 
+    if (ForwardLinearAccess)
+      return m_argImpl.coeff(m_linear_offset.value() + index); 
+    else
+      return coeff(RowsAtCompileTime == 1 ? 0 : index, RowsAtCompileTime == 1 ? index : 0);
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  Scalar& coeffRef(Index row, Index col)
+  { 
+    return m_argImpl.coeffRef(m_startRow.value() + row, m_startCol.value() + col); 
+  }
+  
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  Scalar& coeffRef(Index index)
+  { 
+    if (ForwardLinearAccess)
+      return m_argImpl.coeffRef(m_linear_offset.value() + index); 
+    else
+      return coeffRef(RowsAtCompileTime == 1 ? 0 : index, RowsAtCompileTime == 1 ? index : 0);
+  }
+ 
+  template<int LoadMode, typename PacketType>
+  EIGEN_STRONG_INLINE
+  PacketType packet(Index row, Index col) const 
+  { 
+    return m_argImpl.template packet<LoadMode,PacketType>(m_startRow.value() + row, m_startCol.value() + col); 
+  }
+
+  template<int LoadMode, typename PacketType>
+  EIGEN_STRONG_INLINE
+  PacketType packet(Index index) const 
+  { 
+    if (ForwardLinearAccess)
+      return m_argImpl.template packet<LoadMode,PacketType>(m_linear_offset.value() + index);
+    else
+      return packet<LoadMode,PacketType>(RowsAtCompileTime == 1 ? 0 : index,
+                                         RowsAtCompileTime == 1 ? index : 0);
+  }
+  
+  template<int StoreMode, typename PacketType>
+  EIGEN_STRONG_INLINE
+  void writePacket(Index row, Index col, const PacketType& x) 
+  {
+    return m_argImpl.template writePacket<StoreMode,PacketType>(m_startRow.value() + row, m_startCol.value() + col, x); 
+  }
+  
+  template<int StoreMode, typename PacketType>
+  EIGEN_STRONG_INLINE
+  void writePacket(Index index, const PacketType& x) 
+  {
+    if (ForwardLinearAccess)
+      return m_argImpl.template writePacket<StoreMode,PacketType>(m_linear_offset.value() + index, x);
+    else
+      return writePacket<StoreMode,PacketType>(RowsAtCompileTime == 1 ? 0 : index,
+                                              RowsAtCompileTime == 1 ? index : 0,
+                                              x);
+  }
+ 
+protected:
+  evaluator<ArgType> m_argImpl;
+  const variable_if_dynamic<Index, (ArgType::RowsAtCompileTime == 1 && BlockRows==1) ? 0 : Dynamic> m_startRow;
+  const variable_if_dynamic<Index, (ArgType::ColsAtCompileTime == 1 && BlockCols==1) ? 0 : Dynamic> m_startCol;
+  const variable_if_dynamic<Index, InnerPanel ? Dynamic : 0> m_linear_offset;
+};
+
+// TODO: This evaluator does not actually use the child evaluator; 
+// all action is via the data() as returned by the Block expression.
+
+template<typename ArgType, int BlockRows, int BlockCols, bool InnerPanel> 
+struct block_evaluator<ArgType, BlockRows, BlockCols, InnerPanel, /* HasDirectAccess */ true>
+  : mapbase_evaluator<Block<ArgType, BlockRows, BlockCols, InnerPanel>,
+                      typename Block<ArgType, BlockRows, BlockCols, InnerPanel>::PlainObject>
+{
+  typedef Block<ArgType, BlockRows, BlockCols, InnerPanel> XprType;
+  typedef typename XprType::Scalar Scalar;
+
+  EIGEN_DEVICE_FUNC explicit block_evaluator(const XprType& block)
+    : mapbase_evaluator<XprType, typename XprType::PlainObject>(block) 
+  {
+    // TODO: for the 3.3 release, this should be turned to an internal assertion, but let's keep it as is for the beta lifetime
+    eigen_assert(((internal::UIntPtr(block.data()) % EIGEN_PLAIN_ENUM_MAX(1,evaluator<XprType>::Alignment)) == 0) && "data is not aligned");
+  }
+};
+
+
+// -------------------- Select --------------------
+// NOTE shall we introduce a ternary_evaluator?
+
+// TODO enable vectorization for Select
+template<typename ConditionMatrixType, typename ThenMatrixType, typename ElseMatrixType>
+struct evaluator<Select<ConditionMatrixType, ThenMatrixType, ElseMatrixType> >
+  : evaluator_base<Select<ConditionMatrixType, ThenMatrixType, ElseMatrixType> >
+{
+  typedef Select<ConditionMatrixType, ThenMatrixType, ElseMatrixType> XprType;
+  enum {
+    CoeffReadCost = evaluator<ConditionMatrixType>::CoeffReadCost
+                  + EIGEN_PLAIN_ENUM_MAX(evaluator<ThenMatrixType>::CoeffReadCost,
+                                         evaluator<ElseMatrixType>::CoeffReadCost),
+
+    Flags = (unsigned int)evaluator<ThenMatrixType>::Flags & evaluator<ElseMatrixType>::Flags & HereditaryBits,
+    
+    Alignment = EIGEN_PLAIN_ENUM_MIN(evaluator<ThenMatrixType>::Alignment, evaluator<ElseMatrixType>::Alignment)
+  };
+
+  EIGEN_DEVICE_FUNC explicit evaluator(const XprType& select)
+    : m_conditionImpl(select.conditionMatrix()),
+      m_thenImpl(select.thenMatrix()),
+      m_elseImpl(select.elseMatrix())
+  {
+    EIGEN_INTERNAL_CHECK_COST_VALUE(CoeffReadCost);
+  }
+ 
+  typedef typename XprType::CoeffReturnType CoeffReturnType;
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  CoeffReturnType coeff(Index row, Index col) const
+  {
+    if (m_conditionImpl.coeff(row, col))
+      return m_thenImpl.coeff(row, col);
+    else
+      return m_elseImpl.coeff(row, col);
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  CoeffReturnType coeff(Index index) const
+  {
+    if (m_conditionImpl.coeff(index))
+      return m_thenImpl.coeff(index);
+    else
+      return m_elseImpl.coeff(index);
+  }
+ 
+protected:
+  evaluator<ConditionMatrixType> m_conditionImpl;
+  evaluator<ThenMatrixType> m_thenImpl;
+  evaluator<ElseMatrixType> m_elseImpl;
+};
+
+
+// -------------------- Replicate --------------------
+
+template<typename ArgType, int RowFactor, int ColFactor> 
+struct unary_evaluator<Replicate<ArgType, RowFactor, ColFactor> >
+  : evaluator_base<Replicate<ArgType, RowFactor, ColFactor> >
+{
+  typedef Replicate<ArgType, RowFactor, ColFactor> XprType;
+  typedef typename XprType::CoeffReturnType CoeffReturnType;
+  enum {
+    Factor = (RowFactor==Dynamic || ColFactor==Dynamic) ? Dynamic : RowFactor*ColFactor
+  };
+  typedef typename internal::nested_eval<ArgType,Factor>::type ArgTypeNested;
+  typedef typename internal::remove_all<ArgTypeNested>::type ArgTypeNestedCleaned;
+  
+  enum {
+    CoeffReadCost = evaluator<ArgTypeNestedCleaned>::CoeffReadCost,
+    LinearAccessMask = XprType::IsVectorAtCompileTime ? LinearAccessBit : 0,
+    Flags = (evaluator<ArgTypeNestedCleaned>::Flags & (HereditaryBits|LinearAccessMask) & ~RowMajorBit) | (traits<XprType>::Flags & RowMajorBit),
+    
+    Alignment = evaluator<ArgTypeNestedCleaned>::Alignment
+  };
+
+  EIGEN_DEVICE_FUNC explicit unary_evaluator(const XprType& replicate)
+    : m_arg(replicate.nestedExpression()),
+      m_argImpl(m_arg),
+      m_rows(replicate.nestedExpression().rows()),
+      m_cols(replicate.nestedExpression().cols())
+  {}
+ 
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  CoeffReturnType coeff(Index row, Index col) const
+  {
+    // try to avoid using modulo; this is a pure optimization strategy
+    const Index actual_row = internal::traits<XprType>::RowsAtCompileTime==1 ? 0
+                           : RowFactor==1 ? row
+                           : row % m_rows.value();
+    const Index actual_col = internal::traits<XprType>::ColsAtCompileTime==1 ? 0
+                           : ColFactor==1 ? col
+                           : col % m_cols.value();
+    
+    return m_argImpl.coeff(actual_row, actual_col);
+  }
+  
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  CoeffReturnType coeff(Index index) const
+  {
+    // try to avoid using modulo; this is a pure optimization strategy
+    const Index actual_index = internal::traits<XprType>::RowsAtCompileTime==1
+                                  ? (ColFactor==1 ?  index : index%m_cols.value())
+                                  : (RowFactor==1 ?  index : index%m_rows.value());
+    
+    return m_argImpl.coeff(actual_index);
+  }
+
+  template<int LoadMode, typename PacketType>
+  EIGEN_STRONG_INLINE
+  PacketType packet(Index row, Index col) const
+  {
+    const Index actual_row = internal::traits<XprType>::RowsAtCompileTime==1 ? 0
+                           : RowFactor==1 ? row
+                           : row % m_rows.value();
+    const Index actual_col = internal::traits<XprType>::ColsAtCompileTime==1 ? 0
+                           : ColFactor==1 ? col
+                           : col % m_cols.value();
+
+    return m_argImpl.template packet<LoadMode,PacketType>(actual_row, actual_col);
+  }
+  
+  template<int LoadMode, typename PacketType>
+  EIGEN_STRONG_INLINE
+  PacketType packet(Index index) const
+  {
+    const Index actual_index = internal::traits<XprType>::RowsAtCompileTime==1
+                                  ? (ColFactor==1 ?  index : index%m_cols.value())
+                                  : (RowFactor==1 ?  index : index%m_rows.value());
+
+    return m_argImpl.template packet<LoadMode,PacketType>(actual_index);
+  }
+ 
+protected:
+  const ArgTypeNested m_arg;
+  evaluator<ArgTypeNestedCleaned> m_argImpl;
+  const variable_if_dynamic<Index, ArgType::RowsAtCompileTime> m_rows;
+  const variable_if_dynamic<Index, ArgType::ColsAtCompileTime> m_cols;
+};
+
+
+// -------------------- PartialReduxExpr --------------------
+
+template< typename ArgType, typename MemberOp, int Direction>
+struct evaluator<PartialReduxExpr<ArgType, MemberOp, Direction> >
+  : evaluator_base<PartialReduxExpr<ArgType, MemberOp, Direction> >
+{
+  typedef PartialReduxExpr<ArgType, MemberOp, Direction> XprType;
+  typedef typename internal::nested_eval<ArgType,1>::type ArgTypeNested;
+  typedef typename internal::remove_all<ArgTypeNested>::type ArgTypeNestedCleaned;
+  typedef typename ArgType::Scalar InputScalar;
+  typedef typename XprType::Scalar Scalar;
+  enum {
+    TraversalSize = Direction==int(Vertical) ? int(ArgType::RowsAtCompileTime) :  int(ArgType::ColsAtCompileTime)
+  };
+  typedef typename MemberOp::template Cost<InputScalar,int(TraversalSize)> CostOpType;
+  enum {
+    CoeffReadCost = TraversalSize==Dynamic ? HugeCost
+                  : TraversalSize * evaluator<ArgType>::CoeffReadCost + int(CostOpType::value),
+    
+    Flags = (traits<XprType>::Flags&RowMajorBit) | (evaluator<ArgType>::Flags&(HereditaryBits&(~RowMajorBit))) | LinearAccessBit,
+    
+    Alignment = 0 // FIXME this will need to be improved once PartialReduxExpr is vectorized
+  };
+
+  EIGEN_DEVICE_FUNC explicit evaluator(const XprType xpr)
+    : m_arg(xpr.nestedExpression()), m_functor(xpr.functor())
+  {
+    EIGEN_INTERNAL_CHECK_COST_VALUE(TraversalSize==Dynamic ? HugeCost : int(CostOpType::value));
+    EIGEN_INTERNAL_CHECK_COST_VALUE(CoeffReadCost);
+  }
+
+  typedef typename XprType::CoeffReturnType CoeffReturnType;
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  const Scalar coeff(Index i, Index j) const
+  {
+    if (Direction==Vertical)
+      return m_functor(m_arg.col(j));
+    else
+      return m_functor(m_arg.row(i));
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  const Scalar coeff(Index index) const
+  {
+    if (Direction==Vertical)
+      return m_functor(m_arg.col(index));
+    else
+      return m_functor(m_arg.row(index));
+  }
+
+protected:
+  typename internal::add_const_on_value_type<ArgTypeNested>::type m_arg;
+  const MemberOp m_functor;
+};
+
+
+// -------------------- MatrixWrapper and ArrayWrapper --------------------
+//
+// evaluator_wrapper_base<T> is a common base class for the
+// MatrixWrapper and ArrayWrapper evaluators.
+
+template<typename XprType>
+struct evaluator_wrapper_base
+  : evaluator_base<XprType>
+{
+  typedef typename remove_all<typename XprType::NestedExpressionType>::type ArgType;
+  enum {
+    CoeffReadCost = evaluator<ArgType>::CoeffReadCost,
+    Flags = evaluator<ArgType>::Flags,
+    Alignment = evaluator<ArgType>::Alignment
+  };
+
+  EIGEN_DEVICE_FUNC explicit evaluator_wrapper_base(const ArgType& arg) : m_argImpl(arg) {}
+
+  typedef typename ArgType::Scalar Scalar;
+  typedef typename ArgType::CoeffReturnType CoeffReturnType;
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  CoeffReturnType coeff(Index row, Index col) const
+  {
+    return m_argImpl.coeff(row, col);
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  CoeffReturnType coeff(Index index) const
+  {
+    return m_argImpl.coeff(index);
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  Scalar& coeffRef(Index row, Index col)
+  {
+    return m_argImpl.coeffRef(row, col);
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  Scalar& coeffRef(Index index)
+  {
+    return m_argImpl.coeffRef(index);
+  }
+
+  template<int LoadMode, typename PacketType>
+  EIGEN_STRONG_INLINE
+  PacketType packet(Index row, Index col) const
+  {
+    return m_argImpl.template packet<LoadMode,PacketType>(row, col);
+  }
+
+  template<int LoadMode, typename PacketType>
+  EIGEN_STRONG_INLINE
+  PacketType packet(Index index) const
+  {
+    return m_argImpl.template packet<LoadMode,PacketType>(index);
+  }
+
+  template<int StoreMode, typename PacketType>
+  EIGEN_STRONG_INLINE
+  void writePacket(Index row, Index col, const PacketType& x)
+  {
+    m_argImpl.template writePacket<StoreMode>(row, col, x);
+  }
+
+  template<int StoreMode, typename PacketType>
+  EIGEN_STRONG_INLINE
+  void writePacket(Index index, const PacketType& x)
+  {
+    m_argImpl.template writePacket<StoreMode>(index, x);
+  }
+
+protected:
+  evaluator<ArgType> m_argImpl;
+};
+
+template<typename TArgType>
+struct unary_evaluator<MatrixWrapper<TArgType> >
+  : evaluator_wrapper_base<MatrixWrapper<TArgType> >
+{
+  typedef MatrixWrapper<TArgType> XprType;
+
+  EIGEN_DEVICE_FUNC explicit unary_evaluator(const XprType& wrapper)
+    : evaluator_wrapper_base<MatrixWrapper<TArgType> >(wrapper.nestedExpression())
+  { }
+};
+
+template<typename TArgType>
+struct unary_evaluator<ArrayWrapper<TArgType> >
+  : evaluator_wrapper_base<ArrayWrapper<TArgType> >
+{
+  typedef ArrayWrapper<TArgType> XprType;
+
+  EIGEN_DEVICE_FUNC explicit unary_evaluator(const XprType& wrapper)
+    : evaluator_wrapper_base<ArrayWrapper<TArgType> >(wrapper.nestedExpression())
+  { }
+};
+
+
+// -------------------- Reverse --------------------
+
+// defined in Reverse.h:
+template<typename PacketType, bool ReversePacket> struct reverse_packet_cond;
+
+template<typename ArgType, int Direction>
+struct unary_evaluator<Reverse<ArgType, Direction> >
+  : evaluator_base<Reverse<ArgType, Direction> >
+{
+  typedef Reverse<ArgType, Direction> XprType;
+  typedef typename XprType::Scalar Scalar;
+  typedef typename XprType::CoeffReturnType CoeffReturnType;
+
+  enum {
+    IsRowMajor = XprType::IsRowMajor,
+    IsColMajor = !IsRowMajor,
+    ReverseRow = (Direction == Vertical)   || (Direction == BothDirections),
+    ReverseCol = (Direction == Horizontal) || (Direction == BothDirections),
+    ReversePacket = (Direction == BothDirections)
+                    || ((Direction == Vertical)   && IsColMajor)
+                    || ((Direction == Horizontal) && IsRowMajor),
+                    
+    CoeffReadCost = evaluator<ArgType>::CoeffReadCost,
+    
+    // let's enable LinearAccess only with vectorization because of the product overhead
+    // FIXME enable DirectAccess with negative strides?
+    Flags0 = evaluator<ArgType>::Flags,
+    LinearAccess = ( (Direction==BothDirections) && (int(Flags0)&PacketAccessBit) )
+                  || ((ReverseRow && XprType::ColsAtCompileTime==1) || (ReverseCol && XprType::RowsAtCompileTime==1))
+                 ? LinearAccessBit : 0,
+
+    Flags = int(Flags0) & (HereditaryBits | PacketAccessBit | LinearAccess),
+    
+    Alignment = 0 // FIXME in some rare cases, Alignment could be preserved, like a Vector4f.
+  };
+
+  EIGEN_DEVICE_FUNC explicit unary_evaluator(const XprType& reverse)
+    : m_argImpl(reverse.nestedExpression()),
+      m_rows(ReverseRow ? reverse.nestedExpression().rows() : 1),
+      m_cols(ReverseCol ? reverse.nestedExpression().cols() : 1)
+  { }
+ 
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  CoeffReturnType coeff(Index row, Index col) const
+  {
+    return m_argImpl.coeff(ReverseRow ? m_rows.value() - row - 1 : row,
+                           ReverseCol ? m_cols.value() - col - 1 : col);
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  CoeffReturnType coeff(Index index) const
+  {
+    return m_argImpl.coeff(m_rows.value() * m_cols.value() - index - 1);
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  Scalar& coeffRef(Index row, Index col)
+  {
+    return m_argImpl.coeffRef(ReverseRow ? m_rows.value() - row - 1 : row,
+                              ReverseCol ? m_cols.value() - col - 1 : col);
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  Scalar& coeffRef(Index index)
+  {
+    return m_argImpl.coeffRef(m_rows.value() * m_cols.value() - index - 1);
+  }
+
+  template<int LoadMode, typename PacketType>
+  EIGEN_STRONG_INLINE
+  PacketType packet(Index row, Index col) const
+  {
+    enum {
+      PacketSize = unpacket_traits<PacketType>::size,
+      OffsetRow  = ReverseRow && IsColMajor ? PacketSize : 1,
+      OffsetCol  = ReverseCol && IsRowMajor ? PacketSize : 1
+    };
+    typedef internal::reverse_packet_cond<PacketType,ReversePacket> reverse_packet;
+    return reverse_packet::run(m_argImpl.template packet<LoadMode,PacketType>(
+                                  ReverseRow ? m_rows.value() - row - OffsetRow : row,
+                                  ReverseCol ? m_cols.value() - col - OffsetCol : col));
+  }
+
+  template<int LoadMode, typename PacketType>
+  EIGEN_STRONG_INLINE
+  PacketType packet(Index index) const
+  {
+    enum { PacketSize = unpacket_traits<PacketType>::size };
+    return preverse(m_argImpl.template packet<LoadMode,PacketType>(m_rows.value() * m_cols.value() - index - PacketSize));
+  }
+
+  template<int LoadMode, typename PacketType>
+  EIGEN_STRONG_INLINE
+  void writePacket(Index row, Index col, const PacketType& x)
+  {
+    // FIXME we could factorize some code with packet(i,j)
+    enum {
+      PacketSize = unpacket_traits<PacketType>::size,
+      OffsetRow  = ReverseRow && IsColMajor ? PacketSize : 1,
+      OffsetCol  = ReverseCol && IsRowMajor ? PacketSize : 1
+    };
+    typedef internal::reverse_packet_cond<PacketType,ReversePacket> reverse_packet;
+    m_argImpl.template writePacket<LoadMode>(
+                                  ReverseRow ? m_rows.value() - row - OffsetRow : row,
+                                  ReverseCol ? m_cols.value() - col - OffsetCol : col,
+                                  reverse_packet::run(x));
+  }
+
+  template<int LoadMode, typename PacketType>
+  EIGEN_STRONG_INLINE
+  void writePacket(Index index, const PacketType& x)
+  {
+    enum { PacketSize = unpacket_traits<PacketType>::size };
+    m_argImpl.template writePacket<LoadMode>
+      (m_rows.value() * m_cols.value() - index - PacketSize, preverse(x));
+  }
+ 
+protected:
+  evaluator<ArgType> m_argImpl;
+
+  // If we do not reverse rows, then we do not need to know the number of rows; same for columns
+  // Nonetheless, in this case it is important to set to 1 such that the coeff(index) method works fine for vectors.
+  const variable_if_dynamic<Index, ReverseRow ? ArgType::RowsAtCompileTime : 1> m_rows;
+  const variable_if_dynamic<Index, ReverseCol ? ArgType::ColsAtCompileTime : 1> m_cols;
+};
+
+
+// -------------------- Diagonal --------------------
+
+template<typename ArgType, int DiagIndex>
+struct evaluator<Diagonal<ArgType, DiagIndex> >
+  : evaluator_base<Diagonal<ArgType, DiagIndex> >
+{
+  typedef Diagonal<ArgType, DiagIndex> XprType;
+  
+  enum {
+    CoeffReadCost = evaluator<ArgType>::CoeffReadCost,
+    
+    Flags = (unsigned int)(evaluator<ArgType>::Flags & (HereditaryBits | DirectAccessBit) & ~RowMajorBit) | LinearAccessBit,
+    
+    Alignment = 0
+  };
+
+  EIGEN_DEVICE_FUNC explicit evaluator(const XprType& diagonal)
+    : m_argImpl(diagonal.nestedExpression()),
+      m_index(diagonal.index())
+  { }
+ 
+  typedef typename XprType::Scalar Scalar;
+  typedef typename XprType::CoeffReturnType CoeffReturnType;
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  CoeffReturnType coeff(Index row, Index) const
+  {
+    return m_argImpl.coeff(row + rowOffset(), row + colOffset());
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  CoeffReturnType coeff(Index index) const
+  {
+    return m_argImpl.coeff(index + rowOffset(), index + colOffset());
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  Scalar& coeffRef(Index row, Index)
+  {
+    return m_argImpl.coeffRef(row + rowOffset(), row + colOffset());
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  Scalar& coeffRef(Index index)
+  {
+    return m_argImpl.coeffRef(index + rowOffset(), index + colOffset());
+  }
+
+protected:
+  evaluator<ArgType> m_argImpl;
+  const internal::variable_if_dynamicindex<Index, XprType::DiagIndex> m_index;
+
+private:
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Index rowOffset() const { return m_index.value() > 0 ? 0 : -m_index.value(); }
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Index colOffset() const { return m_index.value() > 0 ? m_index.value() : 0; }
+};
+
+
+//----------------------------------------------------------------------
+// deprecated code
+//----------------------------------------------------------------------
+
+// -------------------- EvalToTemp --------------------
+
+// expression class for evaluating nested expression to a temporary
+
+template<typename ArgType> class EvalToTemp;
+
+template<typename ArgType>
+struct traits<EvalToTemp<ArgType> >
+  : public traits<ArgType>
+{ };
+
+template<typename ArgType>
+class EvalToTemp
+  : public dense_xpr_base<EvalToTemp<ArgType> >::type
+{
+ public:
+ 
+  typedef typename dense_xpr_base<EvalToTemp>::type Base;
+  EIGEN_GENERIC_PUBLIC_INTERFACE(EvalToTemp)
+ 
+  explicit EvalToTemp(const ArgType& arg)
+    : m_arg(arg)
+  { }
+ 
+  const ArgType& arg() const
+  {
+    return m_arg;
+  }
+
+  Index rows() const 
+  {
+    return m_arg.rows();
+  }
+
+  Index cols() const 
+  {
+    return m_arg.cols();
+  }
+
+ private:
+  const ArgType& m_arg;
+};
+ 
+template<typename ArgType>
+struct evaluator<EvalToTemp<ArgType> >
+  : public evaluator<typename ArgType::PlainObject>
+{
+  typedef EvalToTemp<ArgType>                   XprType;
+  typedef typename ArgType::PlainObject         PlainObject;
+  typedef evaluator<PlainObject> Base;
+  
+  EIGEN_DEVICE_FUNC explicit evaluator(const XprType& xpr)
+    : m_result(xpr.arg())
+  {
+    ::new (static_cast<Base*>(this)) Base(m_result);
+  }
+
+  // This constructor is used when nesting an EvalTo evaluator in another evaluator
+  EIGEN_DEVICE_FUNC evaluator(const ArgType& arg)
+    : m_result(arg)
+  {
+    ::new (static_cast<Base*>(this)) Base(m_result);
+  }
+
+protected:
+  PlainObject m_result;
+};
+
+} // namespace internal
+
+} // end namespace Eigen
+
+#endif // EIGEN_COREEVALUATORS_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/CommaInitializer.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/CommaInitializer.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/CommaInitializer.h	(revision 3762)
@@ -0,0 +1,160 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2008 Gael Guennebaud <gael.guennebaud@inria.fr>
+// Copyright (C) 2006-2008 Benoit Jacob <jacob.benoit.1@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_COMMAINITIALIZER_H
+#define EIGEN_COMMAINITIALIZER_H
+
+namespace Eigen { 
+
+/** \class CommaInitializer
+  * \ingroup Core_Module
+  *
+  * \brief Helper class used by the comma initializer operator
+  *
+  * This class is internally used to implement the comma initializer feature. It is
+  * the return type of MatrixBase::operator<<, and most of the time this is the only
+  * way it is used.
+  *
+  * \sa \blank \ref MatrixBaseCommaInitRef "MatrixBase::operator<<", CommaInitializer::finished()
+  */
+template<typename XprType>
+struct CommaInitializer
+{
+  typedef typename XprType::Scalar Scalar;
+
+  EIGEN_DEVICE_FUNC
+  inline CommaInitializer(XprType& xpr, const Scalar& s)
+    : m_xpr(xpr), m_row(0), m_col(1), m_currentBlockRows(1)
+  {
+    m_xpr.coeffRef(0,0) = s;
+  }
+
+  template<typename OtherDerived>
+  EIGEN_DEVICE_FUNC
+  inline CommaInitializer(XprType& xpr, const DenseBase<OtherDerived>& other)
+    : m_xpr(xpr), m_row(0), m_col(other.cols()), m_currentBlockRows(other.rows())
+  {
+    m_xpr.block(0, 0, other.rows(), other.cols()) = other;
+  }
+
+  /* Copy/Move constructor which transfers ownership. This is crucial in 
+   * absence of return value optimization to avoid assertions during destruction. */
+  // FIXME in C++11 mode this could be replaced by a proper RValue constructor
+  EIGEN_DEVICE_FUNC
+  inline CommaInitializer(const CommaInitializer& o)
+  : m_xpr(o.m_xpr), m_row(o.m_row), m_col(o.m_col), m_currentBlockRows(o.m_currentBlockRows) {
+    // Mark original object as finished. In absence of R-value references we need to const_cast:
+    const_cast<CommaInitializer&>(o).m_row = m_xpr.rows();
+    const_cast<CommaInitializer&>(o).m_col = m_xpr.cols();
+    const_cast<CommaInitializer&>(o).m_currentBlockRows = 0;
+  }
+
+  /* inserts a scalar value in the target matrix */
+  EIGEN_DEVICE_FUNC
+  CommaInitializer& operator,(const Scalar& s)
+  {
+    if (m_col==m_xpr.cols())
+    {
+      m_row+=m_currentBlockRows;
+      m_col = 0;
+      m_currentBlockRows = 1;
+      eigen_assert(m_row<m_xpr.rows()
+        && "Too many rows passed to comma initializer (operator<<)");
+    }
+    eigen_assert(m_col<m_xpr.cols()
+      && "Too many coefficients passed to comma initializer (operator<<)");
+    eigen_assert(m_currentBlockRows==1);
+    m_xpr.coeffRef(m_row, m_col++) = s;
+    return *this;
+  }
+
+  /* inserts a matrix expression in the target matrix */
+  template<typename OtherDerived>
+  EIGEN_DEVICE_FUNC
+  CommaInitializer& operator,(const DenseBase<OtherDerived>& other)
+  {
+    if (m_col==m_xpr.cols() && (other.cols()!=0 || other.rows()!=m_currentBlockRows))
+    {
+      m_row+=m_currentBlockRows;
+      m_col = 0;
+      m_currentBlockRows = other.rows();
+      eigen_assert(m_row+m_currentBlockRows<=m_xpr.rows()
+        && "Too many rows passed to comma initializer (operator<<)");
+    }
+    eigen_assert((m_col + other.cols() <= m_xpr.cols())
+      && "Too many coefficients passed to comma initializer (operator<<)");
+    eigen_assert(m_currentBlockRows==other.rows());
+    m_xpr.template block<OtherDerived::RowsAtCompileTime, OtherDerived::ColsAtCompileTime>
+                    (m_row, m_col, other.rows(), other.cols()) = other;
+    m_col += other.cols();
+    return *this;
+  }
+
+  EIGEN_DEVICE_FUNC
+  inline ~CommaInitializer()
+#if defined VERIFY_RAISES_ASSERT && (!defined EIGEN_NO_ASSERTION_CHECKING) && defined EIGEN_EXCEPTIONS
+  EIGEN_EXCEPTION_SPEC(Eigen::eigen_assert_exception)
+#endif
+  {
+      finished();
+  }
+
+  /** \returns the built matrix once all its coefficients have been set.
+    * Calling finished is 100% optional. Its purpose is to write expressions
+    * like this:
+    * \code
+    * quaternion.fromRotationMatrix((Matrix3f() << axis0, axis1, axis2).finished());
+    * \endcode
+    */
+  EIGEN_DEVICE_FUNC
+  inline XprType& finished() {
+      eigen_assert(((m_row+m_currentBlockRows) == m_xpr.rows() || m_xpr.cols() == 0)
+           && m_col == m_xpr.cols()
+           && "Too few coefficients passed to comma initializer (operator<<)");
+      return m_xpr;
+  }
+
+  XprType& m_xpr;           // target expression
+  Index m_row;              // current row id
+  Index m_col;              // current col id
+  Index m_currentBlockRows; // current block height
+};
+
+/** \anchor MatrixBaseCommaInitRef
+  * Convenient operator to set the coefficients of a matrix.
+  *
+  * The coefficients must be provided in a row major order and exactly match
+  * the size of the matrix. Otherwise an assertion is raised.
+  *
+  * Example: \include MatrixBase_set.cpp
+  * Output: \verbinclude MatrixBase_set.out
+  * 
+  * \note According the c++ standard, the argument expressions of this comma initializer are evaluated in arbitrary order.
+  *
+  * \sa CommaInitializer::finished(), class CommaInitializer
+  */
+template<typename Derived>
+inline CommaInitializer<Derived> DenseBase<Derived>::operator<< (const Scalar& s)
+{
+  return CommaInitializer<Derived>(*static_cast<Derived*>(this), s);
+}
+
+/** \sa operator<<(const Scalar&) */
+template<typename Derived>
+template<typename OtherDerived>
+inline CommaInitializer<Derived>
+DenseBase<Derived>::operator<<(const DenseBase<OtherDerived>& other)
+{
+  return CommaInitializer<Derived>(*static_cast<Derived *>(this), other);
+}
+
+} // end namespace Eigen
+
+#endif // EIGEN_COMMAINITIALIZER_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/MathFunctionsImpl.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/MathFunctionsImpl.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/MathFunctionsImpl.h	(revision 3762)
@@ -0,0 +1,101 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2014 Pedro Gonnet (pedro.gonnet@gmail.com)
+// Copyright (C) 2016 Gael Guennebaud <gael.guennebaud@inria.fr>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_MATHFUNCTIONSIMPL_H
+#define EIGEN_MATHFUNCTIONSIMPL_H
+
+namespace Eigen {
+
+namespace internal {
+
+/** \internal \returns the hyperbolic tan of \a a (coeff-wise)
+    Doesn't do anything fancy, just a 13/6-degree rational interpolant which
+    is accurate up to a couple of ulp in the range [-9, 9], outside of which
+    the tanh(x) = +/-1.
+
+    This implementation works on both scalars and packets.
+*/
+template<typename T>
+T generic_fast_tanh_float(const T& a_x)
+{
+  // Clamp the inputs to the range [-9, 9] since anything outside
+  // this range is +/-1.0f in single-precision.
+  const T plus_9 = pset1<T>(9.f);
+  const T minus_9 = pset1<T>(-9.f);
+  // NOTE GCC prior to 6.3 might improperly optimize this max/min
+  //      step such that if a_x is nan, x will be either 9 or -9,
+  //      and tanh will return 1 or -1 instead of nan.
+  //      This is supposed to be fixed in gcc6.3,
+  //      see: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=72867
+  const T x = pmax(minus_9,pmin(plus_9,a_x));
+  // The monomial coefficients of the numerator polynomial (odd).
+  const T alpha_1 = pset1<T>(4.89352455891786e-03f);
+  const T alpha_3 = pset1<T>(6.37261928875436e-04f);
+  const T alpha_5 = pset1<T>(1.48572235717979e-05f);
+  const T alpha_7 = pset1<T>(5.12229709037114e-08f);
+  const T alpha_9 = pset1<T>(-8.60467152213735e-11f);
+  const T alpha_11 = pset1<T>(2.00018790482477e-13f);
+  const T alpha_13 = pset1<T>(-2.76076847742355e-16f);
+
+  // The monomial coefficients of the denominator polynomial (even).
+  const T beta_0 = pset1<T>(4.89352518554385e-03f);
+  const T beta_2 = pset1<T>(2.26843463243900e-03f);
+  const T beta_4 = pset1<T>(1.18534705686654e-04f);
+  const T beta_6 = pset1<T>(1.19825839466702e-06f);
+
+  // Since the polynomials are odd/even, we need x^2.
+  const T x2 = pmul(x, x);
+
+  // Evaluate the numerator polynomial p.
+  T p = pmadd(x2, alpha_13, alpha_11);
+  p = pmadd(x2, p, alpha_9);
+  p = pmadd(x2, p, alpha_7);
+  p = pmadd(x2, p, alpha_5);
+  p = pmadd(x2, p, alpha_3);
+  p = pmadd(x2, p, alpha_1);
+  p = pmul(x, p);
+
+  // Evaluate the denominator polynomial p.
+  T q = pmadd(x2, beta_6, beta_4);
+  q = pmadd(x2, q, beta_2);
+  q = pmadd(x2, q, beta_0);
+
+  // Divide the numerator by the denominator.
+  return pdiv(p, q);
+}
+
+template<typename RealScalar>
+EIGEN_STRONG_INLINE
+RealScalar positive_real_hypot(const RealScalar& x, const RealScalar& y)
+{
+  EIGEN_USING_STD_MATH(sqrt);
+  RealScalar p, qp;
+  p = numext::maxi(x,y);
+  if(p==RealScalar(0)) return RealScalar(0);
+  qp = numext::mini(y,x) / p;    
+  return p * sqrt(RealScalar(1) + qp*qp);
+}
+
+template<typename Scalar>
+struct hypot_impl
+{
+  typedef typename NumTraits<Scalar>::Real RealScalar;
+  static inline RealScalar run(const Scalar& x, const Scalar& y)
+  {
+    EIGEN_USING_STD_MATH(abs);
+    return positive_real_hypot<RealScalar>(abs(x), abs(y));
+  }
+};
+
+} // end namespace internal
+
+} // end namespace Eigen
+
+#endif // EIGEN_MATHFUNCTIONSIMPL_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/Matrix.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/Matrix.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/Matrix.h	(revision 3762)
@@ -0,0 +1,459 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2006-2010 Benoit Jacob <jacob.benoit.1@gmail.com>
+// Copyright (C) 2008-2009 Gael Guennebaud <gael.guennebaud@inria.fr>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_MATRIX_H
+#define EIGEN_MATRIX_H
+
+namespace Eigen {
+
+namespace internal {
+template<typename _Scalar, int _Rows, int _Cols, int _Options, int _MaxRows, int _MaxCols>
+struct traits<Matrix<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols> >
+{
+private:
+  enum { size = internal::size_at_compile_time<_Rows,_Cols>::ret };
+  typedef typename find_best_packet<_Scalar,size>::type PacketScalar;
+  enum {
+      row_major_bit = _Options&RowMajor ? RowMajorBit : 0,
+      is_dynamic_size_storage = _MaxRows==Dynamic || _MaxCols==Dynamic,
+      max_size = is_dynamic_size_storage ? Dynamic : _MaxRows*_MaxCols,
+      default_alignment = compute_default_alignment<_Scalar,max_size>::value,
+      actual_alignment = ((_Options&DontAlign)==0) ? default_alignment : 0,
+      required_alignment = unpacket_traits<PacketScalar>::alignment,
+      packet_access_bit = (packet_traits<_Scalar>::Vectorizable && (EIGEN_UNALIGNED_VECTORIZE || (actual_alignment>=required_alignment))) ? PacketAccessBit : 0
+    };
+    
+public:
+  typedef _Scalar Scalar;
+  typedef Dense StorageKind;
+  typedef Eigen::Index StorageIndex;
+  typedef MatrixXpr XprKind;
+  enum {
+    RowsAtCompileTime = _Rows,
+    ColsAtCompileTime = _Cols,
+    MaxRowsAtCompileTime = _MaxRows,
+    MaxColsAtCompileTime = _MaxCols,
+    Flags = compute_matrix_flags<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols>::ret,
+    Options = _Options,
+    InnerStrideAtCompileTime = 1,
+    OuterStrideAtCompileTime = (Options&RowMajor) ? ColsAtCompileTime : RowsAtCompileTime,
+    
+    // FIXME, the following flag in only used to define NeedsToAlign in PlainObjectBase
+    EvaluatorFlags = LinearAccessBit | DirectAccessBit | packet_access_bit | row_major_bit,
+    Alignment = actual_alignment
+  };
+};
+}
+
+/** \class Matrix
+  * \ingroup Core_Module
+  *
+  * \brief The matrix class, also used for vectors and row-vectors
+  *
+  * The %Matrix class is the work-horse for all \em dense (\ref dense "note") matrices and vectors within Eigen.
+  * Vectors are matrices with one column, and row-vectors are matrices with one row.
+  *
+  * The %Matrix class encompasses \em both fixed-size and dynamic-size objects (\ref fixedsize "note").
+  *
+  * The first three template parameters are required:
+  * \tparam _Scalar Numeric type, e.g. float, double, int or std::complex<float>.
+  *                 User defined scalar types are supported as well (see \ref user_defined_scalars "here").
+  * \tparam _Rows Number of rows, or \b Dynamic
+  * \tparam _Cols Number of columns, or \b Dynamic
+  *
+  * The remaining template parameters are optional -- in most cases you don't have to worry about them.
+  * \tparam _Options A combination of either \b #RowMajor or \b #ColMajor, and of either
+  *                 \b #AutoAlign or \b #DontAlign.
+  *                 The former controls \ref TopicStorageOrders "storage order", and defaults to column-major. The latter controls alignment, which is required
+  *                 for vectorization. It defaults to aligning matrices except for fixed sizes that aren't a multiple of the packet size.
+  * \tparam _MaxRows Maximum number of rows. Defaults to \a _Rows (\ref maxrows "note").
+  * \tparam _MaxCols Maximum number of columns. Defaults to \a _Cols (\ref maxrows "note").
+  *
+  * Eigen provides a number of typedefs covering the usual cases. Here are some examples:
+  *
+  * \li \c Matrix2d is a 2x2 square matrix of doubles (\c Matrix<double, 2, 2>)
+  * \li \c Vector4f is a vector of 4 floats (\c Matrix<float, 4, 1>)
+  * \li \c RowVector3i is a row-vector of 3 ints (\c Matrix<int, 1, 3>)
+  *
+  * \li \c MatrixXf is a dynamic-size matrix of floats (\c Matrix<float, Dynamic, Dynamic>)
+  * \li \c VectorXf is a dynamic-size vector of floats (\c Matrix<float, Dynamic, 1>)
+  *
+  * \li \c Matrix2Xf is a partially fixed-size (dynamic-size) matrix of floats (\c Matrix<float, 2, Dynamic>)
+  * \li \c MatrixX3d is a partially dynamic-size (fixed-size) matrix of double (\c Matrix<double, Dynamic, 3>)
+  *
+  * See \link matrixtypedefs this page \endlink for a complete list of predefined \em %Matrix and \em Vector typedefs.
+  *
+  * You can access elements of vectors and matrices using normal subscripting:
+  *
+  * \code
+  * Eigen::VectorXd v(10);
+  * v[0] = 0.1;
+  * v[1] = 0.2;
+  * v(0) = 0.3;
+  * v(1) = 0.4;
+  *
+  * Eigen::MatrixXi m(10, 10);
+  * m(0, 1) = 1;
+  * m(0, 2) = 2;
+  * m(0, 3) = 3;
+  * \endcode
+  *
+  * This class can be extended with the help of the plugin mechanism described on the page
+  * \ref TopicCustomizing_Plugins by defining the preprocessor symbol \c EIGEN_MATRIX_PLUGIN.
+  *
+  * <i><b>Some notes:</b></i>
+  *
+  * <dl>
+  * <dt><b>\anchor dense Dense versus sparse:</b></dt>
+  * <dd>This %Matrix class handles dense, not sparse matrices and vectors. For sparse matrices and vectors, see the Sparse module.
+  *
+  * Dense matrices and vectors are plain usual arrays of coefficients. All the coefficients are stored, in an ordinary contiguous array.
+  * This is unlike Sparse matrices and vectors where the coefficients are stored as a list of nonzero coefficients.</dd>
+  *
+  * <dt><b>\anchor fixedsize Fixed-size versus dynamic-size:</b></dt>
+  * <dd>Fixed-size means that the numbers of rows and columns are known are compile-time. In this case, Eigen allocates the array
+  * of coefficients as a fixed-size array, as a class member. This makes sense for very small matrices, typically up to 4x4, sometimes up
+  * to 16x16. Larger matrices should be declared as dynamic-size even if one happens to know their size at compile-time.
+  *
+  * Dynamic-size means that the numbers of rows or columns are not necessarily known at compile-time. In this case they are runtime
+  * variables, and the array of coefficients is allocated dynamically on the heap.
+  *
+  * Note that \em dense matrices, be they Fixed-size or Dynamic-size, <em>do not</em> expand dynamically in the sense of a std::map.
+  * If you want this behavior, see the Sparse module.</dd>
+  *
+  * <dt><b>\anchor maxrows _MaxRows and _MaxCols:</b></dt>
+  * <dd>In most cases, one just leaves these parameters to the default values.
+  * These parameters mean the maximum size of rows and columns that the matrix may have. They are useful in cases
+  * when the exact numbers of rows and columns are not known are compile-time, but it is known at compile-time that they cannot
+  * exceed a certain value. This happens when taking dynamic-size blocks inside fixed-size matrices: in this case _MaxRows and _MaxCols
+  * are the dimensions of the original matrix, while _Rows and _Cols are Dynamic.</dd>
+  * </dl>
+  *
+  * <i><b>ABI and storage layout</b></i>
+  *
+  * The table below summarizes the ABI of some possible Matrix instances which is fixed thorough the lifetime of Eigen 3.
+  * <table  class="manual">
+  * <tr><th>Matrix type</th><th>Equivalent C structure</th></tr>
+  * <tr><td>\code Matrix<T,Dynamic,Dynamic> \endcode</td><td>\code
+  * struct {
+  *   T *data;                  // with (size_t(data)%EIGEN_MAX_ALIGN_BYTES)==0
+  *   Eigen::Index rows, cols;
+  *  };
+  * \endcode</td></tr>
+  * <tr class="alt"><td>\code
+  * Matrix<T,Dynamic,1>
+  * Matrix<T,1,Dynamic> \endcode</td><td>\code
+  * struct {
+  *   T *data;                  // with (size_t(data)%EIGEN_MAX_ALIGN_BYTES)==0
+  *   Eigen::Index size;
+  *  };
+  * \endcode</td></tr>
+  * <tr><td>\code Matrix<T,Rows,Cols> \endcode</td><td>\code
+  * struct {
+  *   T data[Rows*Cols];        // with (size_t(data)%A(Rows*Cols*sizeof(T)))==0
+  *  };
+  * \endcode</td></tr>
+  * <tr class="alt"><td>\code Matrix<T,Dynamic,Dynamic,0,MaxRows,MaxCols> \endcode</td><td>\code
+  * struct {
+  *   T data[MaxRows*MaxCols];  // with (size_t(data)%A(MaxRows*MaxCols*sizeof(T)))==0
+  *   Eigen::Index rows, cols;
+  *  };
+  * \endcode</td></tr>
+  * </table>
+  * Note that in this table Rows, Cols, MaxRows and MaxCols are all positive integers. A(S) is defined to the largest possible power-of-two
+  * smaller to EIGEN_MAX_STATIC_ALIGN_BYTES.
+  *
+  * \see MatrixBase for the majority of the API methods for matrices, \ref TopicClassHierarchy,
+  * \ref TopicStorageOrders
+  */
+
+template<typename _Scalar, int _Rows, int _Cols, int _Options, int _MaxRows, int _MaxCols>
+class Matrix
+  : public PlainObjectBase<Matrix<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols> >
+{
+  public:
+
+    /** \brief Base class typedef.
+      * \sa PlainObjectBase
+      */
+    typedef PlainObjectBase<Matrix> Base;
+
+    enum { Options = _Options };
+
+    EIGEN_DENSE_PUBLIC_INTERFACE(Matrix)
+
+    typedef typename Base::PlainObject PlainObject;
+
+    using Base::base;
+    using Base::coeffRef;
+
+    /**
+      * \brief Assigns matrices to each other.
+      *
+      * \note This is a special case of the templated operator=. Its purpose is
+      * to prevent a default operator= from hiding the templated operator=.
+      *
+      * \callgraph
+      */
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Matrix& operator=(const Matrix& other)
+    {
+      return Base::_set(other);
+    }
+
+    /** \internal
+      * \brief Copies the value of the expression \a other into \c *this with automatic resizing.
+      *
+      * *this might be resized to match the dimensions of \a other. If *this was a null matrix (not already initialized),
+      * it will be initialized.
+      *
+      * Note that copying a row-vector into a vector (and conversely) is allowed.
+      * The resizing, if any, is then done in the appropriate way so that row-vectors
+      * remain row-vectors and vectors remain vectors.
+      */
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Matrix& operator=(const DenseBase<OtherDerived>& other)
+    {
+      return Base::_set(other);
+    }
+
+    /* Here, doxygen failed to copy the brief information when using \copydoc */
+
+    /**
+      * \brief Copies the generic expression \a other into *this.
+      * \copydetails DenseBase::operator=(const EigenBase<OtherDerived> &other)
+      */
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Matrix& operator=(const EigenBase<OtherDerived> &other)
+    {
+      return Base::operator=(other);
+    }
+
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Matrix& operator=(const ReturnByValue<OtherDerived>& func)
+    {
+      return Base::operator=(func);
+    }
+
+    /** \brief Default constructor.
+      *
+      * For fixed-size matrices, does nothing.
+      *
+      * For dynamic-size matrices, creates an empty matrix of size 0. Does not allocate any array. Such a matrix
+      * is called a null matrix. This constructor is the unique way to create null matrices: resizing
+      * a matrix to 0 is not supported.
+      *
+      * \sa resize(Index,Index)
+      */
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Matrix() : Base()
+    {
+      Base::_check_template_params();
+      EIGEN_INITIALIZE_COEFFS_IF_THAT_OPTION_IS_ENABLED
+    }
+
+    // FIXME is it still needed
+    EIGEN_DEVICE_FUNC
+    explicit Matrix(internal::constructor_without_unaligned_array_assert)
+      : Base(internal::constructor_without_unaligned_array_assert())
+    { Base::_check_template_params(); EIGEN_INITIALIZE_COEFFS_IF_THAT_OPTION_IS_ENABLED }
+
+#if EIGEN_HAS_RVALUE_REFERENCES
+    EIGEN_DEVICE_FUNC
+    Matrix(Matrix&& other) EIGEN_NOEXCEPT_IF(std::is_nothrow_move_constructible<Scalar>::value)
+      : Base(std::move(other))
+    {
+      Base::_check_template_params();
+    }
+    EIGEN_DEVICE_FUNC
+    Matrix& operator=(Matrix&& other) EIGEN_NOEXCEPT_IF(std::is_nothrow_move_assignable<Scalar>::value)
+    {
+      other.swap(*this);
+      return *this;
+    }
+#endif
+
+    #ifndef EIGEN_PARSED_BY_DOXYGEN
+
+    // This constructor is for both 1x1 matrices and dynamic vectors
+    template<typename T>
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE explicit Matrix(const T& x)
+    {
+      Base::_check_template_params();
+      Base::template _init1<T>(x);
+    }
+
+    template<typename T0, typename T1>
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Matrix(const T0& x, const T1& y)
+    {
+      Base::_check_template_params();
+      Base::template _init2<T0,T1>(x, y);
+    }
+    #else
+    /** \brief Constructs a fixed-sized matrix initialized with coefficients starting at \a data */
+    EIGEN_DEVICE_FUNC
+    explicit Matrix(const Scalar *data);
+
+    /** \brief Constructs a vector or row-vector with given dimension. \only_for_vectors
+      *
+      * This is useful for dynamic-size vectors. For fixed-size vectors,
+      * it is redundant to pass these parameters, so one should use the default constructor
+      * Matrix() instead.
+      * 
+      * \warning This constructor is disabled for fixed-size \c 1x1 matrices. For instance,
+      * calling Matrix<double,1,1>(1) will call the initialization constructor: Matrix(const Scalar&).
+      * For fixed-size \c 1x1 matrices it is therefore recommended to use the default
+      * constructor Matrix() instead, especially when using one of the non standard
+      * \c EIGEN_INITIALIZE_MATRICES_BY_{ZERO,\c NAN} macros (see \ref TopicPreprocessorDirectives).
+      */
+    EIGEN_STRONG_INLINE explicit Matrix(Index dim);
+    /** \brief Constructs an initialized 1x1 matrix with the given coefficient */
+    Matrix(const Scalar& x);
+    /** \brief Constructs an uninitialized matrix with \a rows rows and \a cols columns.
+      *
+      * This is useful for dynamic-size matrices. For fixed-size matrices,
+      * it is redundant to pass these parameters, so one should use the default constructor
+      * Matrix() instead.
+      * 
+      * \warning This constructor is disabled for fixed-size \c 1x2 and \c 2x1 vectors. For instance,
+      * calling Matrix2f(2,1) will call the initialization constructor: Matrix(const Scalar& x, const Scalar& y).
+      * For fixed-size \c 1x2 or \c 2x1 vectors it is therefore recommended to use the default
+      * constructor Matrix() instead, especially when using one of the non standard
+      * \c EIGEN_INITIALIZE_MATRICES_BY_{ZERO,\c NAN} macros (see \ref TopicPreprocessorDirectives).
+      */
+    EIGEN_DEVICE_FUNC
+    Matrix(Index rows, Index cols);
+    
+    /** \brief Constructs an initialized 2D vector with given coefficients */
+    Matrix(const Scalar& x, const Scalar& y);
+    #endif
+
+    /** \brief Constructs an initialized 3D vector with given coefficients */
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Matrix(const Scalar& x, const Scalar& y, const Scalar& z)
+    {
+      Base::_check_template_params();
+      EIGEN_STATIC_ASSERT_VECTOR_SPECIFIC_SIZE(Matrix, 3)
+      m_storage.data()[0] = x;
+      m_storage.data()[1] = y;
+      m_storage.data()[2] = z;
+    }
+    /** \brief Constructs an initialized 4D vector with given coefficients */
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Matrix(const Scalar& x, const Scalar& y, const Scalar& z, const Scalar& w)
+    {
+      Base::_check_template_params();
+      EIGEN_STATIC_ASSERT_VECTOR_SPECIFIC_SIZE(Matrix, 4)
+      m_storage.data()[0] = x;
+      m_storage.data()[1] = y;
+      m_storage.data()[2] = z;
+      m_storage.data()[3] = w;
+    }
+
+
+    /** \brief Copy constructor */
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Matrix(const Matrix& other) : Base(other)
+    { }
+
+    /** \brief Copy constructor for generic expressions.
+      * \sa MatrixBase::operator=(const EigenBase<OtherDerived>&)
+      */
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Matrix(const EigenBase<OtherDerived> &other)
+      : Base(other.derived())
+    { }
+
+    EIGEN_DEVICE_FUNC inline Index innerStride() const { return 1; }
+    EIGEN_DEVICE_FUNC inline Index outerStride() const { return this->innerSize(); }
+
+    /////////// Geometry module ///////////
+
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    explicit Matrix(const RotationBase<OtherDerived,ColsAtCompileTime>& r);
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    Matrix& operator=(const RotationBase<OtherDerived,ColsAtCompileTime>& r);
+
+    // allow to extend Matrix outside Eigen
+    #ifdef EIGEN_MATRIX_PLUGIN
+    #include EIGEN_MATRIX_PLUGIN
+    #endif
+
+  protected:
+    template <typename Derived, typename OtherDerived, bool IsVector>
+    friend struct internal::conservative_resize_like_impl;
+
+    using Base::m_storage;
+};
+
+/** \defgroup matrixtypedefs Global matrix typedefs
+  *
+  * \ingroup Core_Module
+  *
+  * Eigen defines several typedef shortcuts for most common matrix and vector types.
+  *
+  * The general patterns are the following:
+  *
+  * \c MatrixSizeType where \c Size can be \c 2,\c 3,\c 4 for fixed size square matrices or \c X for dynamic size,
+  * and where \c Type can be \c i for integer, \c f for float, \c d for double, \c cf for complex float, \c cd
+  * for complex double.
+  *
+  * For example, \c Matrix3d is a fixed-size 3x3 matrix type of doubles, and \c MatrixXf is a dynamic-size matrix of floats.
+  *
+  * There are also \c VectorSizeType and \c RowVectorSizeType which are self-explanatory. For example, \c Vector4cf is
+  * a fixed-size vector of 4 complex floats.
+  *
+  * \sa class Matrix
+  */
+
+#define EIGEN_MAKE_TYPEDEFS(Type, TypeSuffix, Size, SizeSuffix)   \
+/** \ingroup matrixtypedefs */                                    \
+typedef Matrix<Type, Size, Size> Matrix##SizeSuffix##TypeSuffix;  \
+/** \ingroup matrixtypedefs */                                    \
+typedef Matrix<Type, Size, 1>    Vector##SizeSuffix##TypeSuffix;  \
+/** \ingroup matrixtypedefs */                                    \
+typedef Matrix<Type, 1, Size>    RowVector##SizeSuffix##TypeSuffix;
+
+#define EIGEN_MAKE_FIXED_TYPEDEFS(Type, TypeSuffix, Size)         \
+/** \ingroup matrixtypedefs */                                    \
+typedef Matrix<Type, Size, Dynamic> Matrix##Size##X##TypeSuffix;  \
+/** \ingroup matrixtypedefs */                                    \
+typedef Matrix<Type, Dynamic, Size> Matrix##X##Size##TypeSuffix;
+
+#define EIGEN_MAKE_TYPEDEFS_ALL_SIZES(Type, TypeSuffix) \
+EIGEN_MAKE_TYPEDEFS(Type, TypeSuffix, 2, 2) \
+EIGEN_MAKE_TYPEDEFS(Type, TypeSuffix, 3, 3) \
+EIGEN_MAKE_TYPEDEFS(Type, TypeSuffix, 4, 4) \
+EIGEN_MAKE_TYPEDEFS(Type, TypeSuffix, Dynamic, X) \
+EIGEN_MAKE_FIXED_TYPEDEFS(Type, TypeSuffix, 2) \
+EIGEN_MAKE_FIXED_TYPEDEFS(Type, TypeSuffix, 3) \
+EIGEN_MAKE_FIXED_TYPEDEFS(Type, TypeSuffix, 4)
+
+EIGEN_MAKE_TYPEDEFS_ALL_SIZES(int,                  i)
+EIGEN_MAKE_TYPEDEFS_ALL_SIZES(float,                f)
+EIGEN_MAKE_TYPEDEFS_ALL_SIZES(double,               d)
+EIGEN_MAKE_TYPEDEFS_ALL_SIZES(std::complex<float>,  cf)
+EIGEN_MAKE_TYPEDEFS_ALL_SIZES(std::complex<double>, cd)
+
+#undef EIGEN_MAKE_TYPEDEFS_ALL_SIZES
+#undef EIGEN_MAKE_TYPEDEFS
+#undef EIGEN_MAKE_FIXED_TYPEDEFS
+
+} // end namespace Eigen
+
+#endif // EIGEN_MATRIX_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/ForceAlignedAccess.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/ForceAlignedAccess.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/ForceAlignedAccess.h	(revision 3762)
@@ -0,0 +1,146 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2009-2010 Gael Guennebaud <gael.guennebaud@inria.fr>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_FORCEALIGNEDACCESS_H
+#define EIGEN_FORCEALIGNEDACCESS_H
+
+namespace Eigen {
+
+/** \class ForceAlignedAccess
+  * \ingroup Core_Module
+  *
+  * \brief Enforce aligned packet loads and stores regardless of what is requested
+  *
+  * \param ExpressionType the type of the object of which we are forcing aligned packet access
+  *
+  * This class is the return type of MatrixBase::forceAlignedAccess()
+  * and most of the time this is the only way it is used.
+  *
+  * \sa MatrixBase::forceAlignedAccess()
+  */
+
+namespace internal {
+template<typename ExpressionType>
+struct traits<ForceAlignedAccess<ExpressionType> > : public traits<ExpressionType>
+{};
+}
+
+template<typename ExpressionType> class ForceAlignedAccess
+  : public internal::dense_xpr_base< ForceAlignedAccess<ExpressionType> >::type
+{
+  public:
+
+    typedef typename internal::dense_xpr_base<ForceAlignedAccess>::type Base;
+    EIGEN_DENSE_PUBLIC_INTERFACE(ForceAlignedAccess)
+
+    EIGEN_DEVICE_FUNC explicit inline ForceAlignedAccess(const ExpressionType& matrix) : m_expression(matrix) {}
+
+    EIGEN_DEVICE_FUNC inline Index rows() const { return m_expression.rows(); }
+    EIGEN_DEVICE_FUNC inline Index cols() const { return m_expression.cols(); }
+    EIGEN_DEVICE_FUNC inline Index outerStride() const { return m_expression.outerStride(); }
+    EIGEN_DEVICE_FUNC inline Index innerStride() const { return m_expression.innerStride(); }
+
+    EIGEN_DEVICE_FUNC inline const CoeffReturnType coeff(Index row, Index col) const
+    {
+      return m_expression.coeff(row, col);
+    }
+
+    EIGEN_DEVICE_FUNC inline Scalar& coeffRef(Index row, Index col)
+    {
+      return m_expression.const_cast_derived().coeffRef(row, col);
+    }
+
+    EIGEN_DEVICE_FUNC inline const CoeffReturnType coeff(Index index) const
+    {
+      return m_expression.coeff(index);
+    }
+
+    EIGEN_DEVICE_FUNC inline Scalar& coeffRef(Index index)
+    {
+      return m_expression.const_cast_derived().coeffRef(index);
+    }
+
+    template<int LoadMode>
+    inline const PacketScalar packet(Index row, Index col) const
+    {
+      return m_expression.template packet<Aligned>(row, col);
+    }
+
+    template<int LoadMode>
+    inline void writePacket(Index row, Index col, const PacketScalar& x)
+    {
+      m_expression.const_cast_derived().template writePacket<Aligned>(row, col, x);
+    }
+
+    template<int LoadMode>
+    inline const PacketScalar packet(Index index) const
+    {
+      return m_expression.template packet<Aligned>(index);
+    }
+
+    template<int LoadMode>
+    inline void writePacket(Index index, const PacketScalar& x)
+    {
+      m_expression.const_cast_derived().template writePacket<Aligned>(index, x);
+    }
+
+    EIGEN_DEVICE_FUNC operator const ExpressionType&() const { return m_expression; }
+
+  protected:
+    const ExpressionType& m_expression;
+
+  private:
+    ForceAlignedAccess& operator=(const ForceAlignedAccess&);
+};
+
+/** \returns an expression of *this with forced aligned access
+  * \sa forceAlignedAccessIf(),class ForceAlignedAccess
+  */
+template<typename Derived>
+inline const ForceAlignedAccess<Derived>
+MatrixBase<Derived>::forceAlignedAccess() const
+{
+  return ForceAlignedAccess<Derived>(derived());
+}
+
+/** \returns an expression of *this with forced aligned access
+  * \sa forceAlignedAccessIf(), class ForceAlignedAccess
+  */
+template<typename Derived>
+inline ForceAlignedAccess<Derived>
+MatrixBase<Derived>::forceAlignedAccess()
+{
+  return ForceAlignedAccess<Derived>(derived());
+}
+
+/** \returns an expression of *this with forced aligned access if \a Enable is true.
+  * \sa forceAlignedAccess(), class ForceAlignedAccess
+  */
+template<typename Derived>
+template<bool Enable>
+inline typename internal::add_const_on_value_type<typename internal::conditional<Enable,ForceAlignedAccess<Derived>,Derived&>::type>::type
+MatrixBase<Derived>::forceAlignedAccessIf() const
+{
+  return derived();  // FIXME This should not work but apparently is never used
+}
+
+/** \returns an expression of *this with forced aligned access if \a Enable is true.
+  * \sa forceAlignedAccess(), class ForceAlignedAccess
+  */
+template<typename Derived>
+template<bool Enable>
+inline typename internal::conditional<Enable,ForceAlignedAccess<Derived>,Derived&>::type
+MatrixBase<Derived>::forceAlignedAccessIf()
+{
+  return derived();  // FIXME This should not work but apparently is never used
+}
+
+} // end namespace Eigen
+
+#endif // EIGEN_FORCEALIGNEDACCESS_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/ArrayBase.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/ArrayBase.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/ArrayBase.h	(revision 3762)
@@ -0,0 +1,226 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2009 Gael Guennebaud <gael.guennebaud@inria.fr>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_ARRAYBASE_H
+#define EIGEN_ARRAYBASE_H
+
+namespace Eigen { 
+
+template<typename ExpressionType> class MatrixWrapper;
+
+/** \class ArrayBase
+  * \ingroup Core_Module
+  *
+  * \brief Base class for all 1D and 2D array, and related expressions
+  *
+  * An array is similar to a dense vector or matrix. While matrices are mathematical
+  * objects with well defined linear algebra operators, an array is just a collection
+  * of scalar values arranged in a one or two dimensionnal fashion. As the main consequence,
+  * all operations applied to an array are performed coefficient wise. Furthermore,
+  * arrays support scalar math functions of the c++ standard library (e.g., std::sin(x)), and convenient
+  * constructors allowing to easily write generic code working for both scalar values
+  * and arrays.
+  *
+  * This class is the base that is inherited by all array expression types.
+  *
+  * \tparam Derived is the derived type, e.g., an array or an expression type.
+  *
+  * This class can be extended with the help of the plugin mechanism described on the page
+  * \ref TopicCustomizing_Plugins by defining the preprocessor symbol \c EIGEN_ARRAYBASE_PLUGIN.
+  *
+  * \sa class MatrixBase, \ref TopicClassHierarchy
+  */
+template<typename Derived> class ArrayBase
+  : public DenseBase<Derived>
+{
+  public:
+#ifndef EIGEN_PARSED_BY_DOXYGEN
+    /** The base class for a given storage type. */
+    typedef ArrayBase StorageBaseType;
+
+    typedef ArrayBase Eigen_BaseClassForSpecializationOfGlobalMathFuncImpl;
+
+    typedef typename internal::traits<Derived>::StorageKind StorageKind;
+    typedef typename internal::traits<Derived>::Scalar Scalar;
+    typedef typename internal::packet_traits<Scalar>::type PacketScalar;
+    typedef typename NumTraits<Scalar>::Real RealScalar;
+
+    typedef DenseBase<Derived> Base;
+    using Base::RowsAtCompileTime;
+    using Base::ColsAtCompileTime;
+    using Base::SizeAtCompileTime;
+    using Base::MaxRowsAtCompileTime;
+    using Base::MaxColsAtCompileTime;
+    using Base::MaxSizeAtCompileTime;
+    using Base::IsVectorAtCompileTime;
+    using Base::Flags;
+    
+    using Base::derived;
+    using Base::const_cast_derived;
+    using Base::rows;
+    using Base::cols;
+    using Base::size;
+    using Base::coeff;
+    using Base::coeffRef;
+    using Base::lazyAssign;
+    using Base::operator=;
+    using Base::operator+=;
+    using Base::operator-=;
+    using Base::operator*=;
+    using Base::operator/=;
+
+    typedef typename Base::CoeffReturnType CoeffReturnType;
+
+#endif // not EIGEN_PARSED_BY_DOXYGEN
+
+#ifndef EIGEN_PARSED_BY_DOXYGEN
+    typedef typename Base::PlainObject PlainObject;
+
+    /** \internal Represents a matrix with all coefficients equal to one another*/
+    typedef CwiseNullaryOp<internal::scalar_constant_op<Scalar>,PlainObject> ConstantReturnType;
+#endif // not EIGEN_PARSED_BY_DOXYGEN
+
+#define EIGEN_CURRENT_STORAGE_BASE_CLASS Eigen::ArrayBase
+#define EIGEN_DOC_UNARY_ADDONS(X,Y)
+#   include "../plugins/CommonCwiseUnaryOps.h"
+#   include "../plugins/MatrixCwiseUnaryOps.h"
+#   include "../plugins/ArrayCwiseUnaryOps.h"
+#   include "../plugins/CommonCwiseBinaryOps.h"
+#   include "../plugins/MatrixCwiseBinaryOps.h"
+#   include "../plugins/ArrayCwiseBinaryOps.h"
+#   ifdef EIGEN_ARRAYBASE_PLUGIN
+#     include EIGEN_ARRAYBASE_PLUGIN
+#   endif
+#undef EIGEN_CURRENT_STORAGE_BASE_CLASS
+#undef EIGEN_DOC_UNARY_ADDONS
+
+    /** Special case of the template operator=, in order to prevent the compiler
+      * from generating a default operator= (issue hit with g++ 4.1)
+      */
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    Derived& operator=(const ArrayBase& other)
+    {
+      internal::call_assignment(derived(), other.derived());
+      return derived();
+    }
+    
+    /** Set all the entries to \a value.
+      * \sa DenseBase::setConstant(), DenseBase::fill() */
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    Derived& operator=(const Scalar &value)
+    { Base::setConstant(value); return derived(); }
+
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    Derived& operator+=(const Scalar& scalar);
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    Derived& operator-=(const Scalar& scalar);
+
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    Derived& operator+=(const ArrayBase<OtherDerived>& other);
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    Derived& operator-=(const ArrayBase<OtherDerived>& other);
+
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    Derived& operator*=(const ArrayBase<OtherDerived>& other);
+
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    Derived& operator/=(const ArrayBase<OtherDerived>& other);
+
+  public:
+    EIGEN_DEVICE_FUNC
+    ArrayBase<Derived>& array() { return *this; }
+    EIGEN_DEVICE_FUNC
+    const ArrayBase<Derived>& array() const { return *this; }
+
+    /** \returns an \link Eigen::MatrixBase Matrix \endlink expression of this array
+      * \sa MatrixBase::array() */
+    EIGEN_DEVICE_FUNC
+    MatrixWrapper<Derived> matrix() { return MatrixWrapper<Derived>(derived()); }
+    EIGEN_DEVICE_FUNC
+    const MatrixWrapper<const Derived> matrix() const { return MatrixWrapper<const Derived>(derived()); }
+
+//     template<typename Dest>
+//     inline void evalTo(Dest& dst) const { dst = matrix(); }
+
+  protected:
+    EIGEN_DEFAULT_COPY_CONSTRUCTOR(ArrayBase)
+    EIGEN_DEFAULT_EMPTY_CONSTRUCTOR_AND_DESTRUCTOR(ArrayBase)
+
+  private:
+    explicit ArrayBase(Index);
+    ArrayBase(Index,Index);
+    template<typename OtherDerived> explicit ArrayBase(const ArrayBase<OtherDerived>&);
+  protected:
+    // mixing arrays and matrices is not legal
+    template<typename OtherDerived> Derived& operator+=(const MatrixBase<OtherDerived>& )
+    {EIGEN_STATIC_ASSERT(std::ptrdiff_t(sizeof(typename OtherDerived::Scalar))==-1,YOU_CANNOT_MIX_ARRAYS_AND_MATRICES); return *this;}
+    // mixing arrays and matrices is not legal
+    template<typename OtherDerived> Derived& operator-=(const MatrixBase<OtherDerived>& )
+    {EIGEN_STATIC_ASSERT(std::ptrdiff_t(sizeof(typename OtherDerived::Scalar))==-1,YOU_CANNOT_MIX_ARRAYS_AND_MATRICES); return *this;}
+};
+
+/** replaces \c *this by \c *this - \a other.
+  *
+  * \returns a reference to \c *this
+  */
+template<typename Derived>
+template<typename OtherDerived>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived &
+ArrayBase<Derived>::operator-=(const ArrayBase<OtherDerived> &other)
+{
+  call_assignment(derived(), other.derived(), internal::sub_assign_op<Scalar,typename OtherDerived::Scalar>());
+  return derived();
+}
+
+/** replaces \c *this by \c *this + \a other.
+  *
+  * \returns a reference to \c *this
+  */
+template<typename Derived>
+template<typename OtherDerived>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived &
+ArrayBase<Derived>::operator+=(const ArrayBase<OtherDerived>& other)
+{
+  call_assignment(derived(), other.derived(), internal::add_assign_op<Scalar,typename OtherDerived::Scalar>());
+  return derived();
+}
+
+/** replaces \c *this by \c *this * \a other coefficient wise.
+  *
+  * \returns a reference to \c *this
+  */
+template<typename Derived>
+template<typename OtherDerived>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived &
+ArrayBase<Derived>::operator*=(const ArrayBase<OtherDerived>& other)
+{
+  call_assignment(derived(), other.derived(), internal::mul_assign_op<Scalar,typename OtherDerived::Scalar>());
+  return derived();
+}
+
+/** replaces \c *this by \c *this / \a other coefficient wise.
+  *
+  * \returns a reference to \c *this
+  */
+template<typename Derived>
+template<typename OtherDerived>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived &
+ArrayBase<Derived>::operator/=(const ArrayBase<OtherDerived>& other)
+{
+  call_assignment(derived(), other.derived(), internal::div_assign_op<Scalar,typename OtherDerived::Scalar>());
+  return derived();
+}
+
+} // end namespace Eigen
+
+#endif // EIGEN_ARRAYBASE_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/Reverse.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/Reverse.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/Reverse.h	(revision 3762)
@@ -0,0 +1,211 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2006-2008 Benoit Jacob <jacob.benoit.1@gmail.com>
+// Copyright (C) 2009 Ricard Marxer <email@ricardmarxer.com>
+// Copyright (C) 2009-2010 Gael Guennebaud <gael.guennebaud@inria.fr>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_REVERSE_H
+#define EIGEN_REVERSE_H
+
+namespace Eigen { 
+
+namespace internal {
+
+template<typename MatrixType, int Direction>
+struct traits<Reverse<MatrixType, Direction> >
+ : traits<MatrixType>
+{
+  typedef typename MatrixType::Scalar Scalar;
+  typedef typename traits<MatrixType>::StorageKind StorageKind;
+  typedef typename traits<MatrixType>::XprKind XprKind;
+  typedef typename ref_selector<MatrixType>::type MatrixTypeNested;
+  typedef typename remove_reference<MatrixTypeNested>::type _MatrixTypeNested;
+  enum {
+    RowsAtCompileTime = MatrixType::RowsAtCompileTime,
+    ColsAtCompileTime = MatrixType::ColsAtCompileTime,
+    MaxRowsAtCompileTime = MatrixType::MaxRowsAtCompileTime,
+    MaxColsAtCompileTime = MatrixType::MaxColsAtCompileTime,
+    Flags = _MatrixTypeNested::Flags & (RowMajorBit | LvalueBit)
+  };
+};
+
+template<typename PacketType, bool ReversePacket> struct reverse_packet_cond
+{
+  static inline PacketType run(const PacketType& x) { return preverse(x); }
+};
+
+template<typename PacketType> struct reverse_packet_cond<PacketType,false>
+{
+  static inline PacketType run(const PacketType& x) { return x; }
+};
+
+} // end namespace internal 
+
+/** \class Reverse
+  * \ingroup Core_Module
+  *
+  * \brief Expression of the reverse of a vector or matrix
+  *
+  * \tparam MatrixType the type of the object of which we are taking the reverse
+  * \tparam Direction defines the direction of the reverse operation, can be Vertical, Horizontal, or BothDirections
+  *
+  * This class represents an expression of the reverse of a vector.
+  * It is the return type of MatrixBase::reverse() and VectorwiseOp::reverse()
+  * and most of the time this is the only way it is used.
+  *
+  * \sa MatrixBase::reverse(), VectorwiseOp::reverse()
+  */
+template<typename MatrixType, int Direction> class Reverse
+  : public internal::dense_xpr_base< Reverse<MatrixType, Direction> >::type
+{
+  public:
+
+    typedef typename internal::dense_xpr_base<Reverse>::type Base;
+    EIGEN_DENSE_PUBLIC_INTERFACE(Reverse)
+    typedef typename internal::remove_all<MatrixType>::type NestedExpression;
+    using Base::IsRowMajor;
+
+  protected:
+    enum {
+      PacketSize = internal::packet_traits<Scalar>::size,
+      IsColMajor = !IsRowMajor,
+      ReverseRow = (Direction == Vertical)   || (Direction == BothDirections),
+      ReverseCol = (Direction == Horizontal) || (Direction == BothDirections),
+      OffsetRow  = ReverseRow && IsColMajor ? PacketSize : 1,
+      OffsetCol  = ReverseCol && IsRowMajor ? PacketSize : 1,
+      ReversePacket = (Direction == BothDirections)
+                    || ((Direction == Vertical)   && IsColMajor)
+                    || ((Direction == Horizontal) && IsRowMajor)
+    };
+    typedef internal::reverse_packet_cond<PacketScalar,ReversePacket> reverse_packet;
+  public:
+
+    EIGEN_DEVICE_FUNC explicit inline Reverse(const MatrixType& matrix) : m_matrix(matrix) { }
+
+    EIGEN_INHERIT_ASSIGNMENT_OPERATORS(Reverse)
+
+    EIGEN_DEVICE_FUNC inline Index rows() const { return m_matrix.rows(); }
+    EIGEN_DEVICE_FUNC inline Index cols() const { return m_matrix.cols(); }
+
+    EIGEN_DEVICE_FUNC inline Index innerStride() const
+    {
+      return -m_matrix.innerStride();
+    }
+
+    EIGEN_DEVICE_FUNC const typename internal::remove_all<typename MatrixType::Nested>::type&
+    nestedExpression() const 
+    {
+      return m_matrix;
+    }
+
+  protected:
+    typename MatrixType::Nested m_matrix;
+};
+
+/** \returns an expression of the reverse of *this.
+  *
+  * Example: \include MatrixBase_reverse.cpp
+  * Output: \verbinclude MatrixBase_reverse.out
+  *
+  */
+template<typename Derived>
+inline typename DenseBase<Derived>::ReverseReturnType
+DenseBase<Derived>::reverse()
+{
+  return ReverseReturnType(derived());
+}
+
+
+//reverse const overload moved DenseBase.h due to a CUDA compiler bug
+
+/** This is the "in place" version of reverse: it reverses \c *this.
+  *
+  * In most cases it is probably better to simply use the reversed expression
+  * of a matrix. However, when reversing the matrix data itself is really needed,
+  * then this "in-place" version is probably the right choice because it provides
+  * the following additional benefits:
+  *  - less error prone: doing the same operation with .reverse() requires special care:
+  *    \code m = m.reverse().eval(); \endcode
+  *  - this API enables reverse operations without the need for a temporary
+  *  - it allows future optimizations (cache friendliness, etc.)
+  *
+  * \sa VectorwiseOp::reverseInPlace(), reverse() */
+template<typename Derived>
+inline void DenseBase<Derived>::reverseInPlace()
+{
+  if(cols()>rows())
+  {
+    Index half = cols()/2;
+    leftCols(half).swap(rightCols(half).reverse());
+    if((cols()%2)==1)
+    {
+      Index half2 = rows()/2;
+      col(half).head(half2).swap(col(half).tail(half2).reverse());
+    }
+  }
+  else
+  {
+    Index half = rows()/2;
+    topRows(half).swap(bottomRows(half).reverse());
+    if((rows()%2)==1)
+    {
+      Index half2 = cols()/2;
+      row(half).head(half2).swap(row(half).tail(half2).reverse());
+    }
+  }
+}
+
+namespace internal {
+  
+template<int Direction>
+struct vectorwise_reverse_inplace_impl;
+
+template<>
+struct vectorwise_reverse_inplace_impl<Vertical>
+{
+  template<typename ExpressionType>
+  static void run(ExpressionType &xpr)
+  {
+    Index half = xpr.rows()/2;
+    xpr.topRows(half).swap(xpr.bottomRows(half).colwise().reverse());
+  }
+};
+
+template<>
+struct vectorwise_reverse_inplace_impl<Horizontal>
+{
+  template<typename ExpressionType>
+  static void run(ExpressionType &xpr)
+  {
+    Index half = xpr.cols()/2;
+    xpr.leftCols(half).swap(xpr.rightCols(half).rowwise().reverse());
+  }
+};
+
+} // end namespace internal
+
+/** This is the "in place" version of VectorwiseOp::reverse: it reverses each column or row of \c *this.
+  *
+  * In most cases it is probably better to simply use the reversed expression
+  * of a matrix. However, when reversing the matrix data itself is really needed,
+  * then this "in-place" version is probably the right choice because it provides
+  * the following additional benefits:
+  *  - less error prone: doing the same operation with .reverse() requires special care:
+  *    \code m = m.reverse().eval(); \endcode
+  *  - this API enables reverse operations without the need for a temporary
+  *
+  * \sa DenseBase::reverseInPlace(), reverse() */
+template<typename ExpressionType, int Direction>
+void VectorwiseOp<ExpressionType,Direction>::reverseInPlace()
+{
+  internal::vectorwise_reverse_inplace_impl<Direction>::run(_expression().const_cast_derived());
+}
+
+} // end namespace Eigen
+
+#endif // EIGEN_REVERSE_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/CwiseTernaryOp.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/CwiseTernaryOp.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/CwiseTernaryOp.h	(revision 3762)
@@ -0,0 +1,197 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2008-2014 Gael Guennebaud <gael.guennebaud@inria.fr>
+// Copyright (C) 2006-2008 Benoit Jacob <jacob.benoit.1@gmail.com>
+// Copyright (C) 2016 Eugene Brevdo <ebrevdo@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CWISE_TERNARY_OP_H
+#define EIGEN_CWISE_TERNARY_OP_H
+
+namespace Eigen {
+
+namespace internal {
+template <typename TernaryOp, typename Arg1, typename Arg2, typename Arg3>
+struct traits<CwiseTernaryOp<TernaryOp, Arg1, Arg2, Arg3> > {
+  // we must not inherit from traits<Arg1> since it has
+  // the potential to cause problems with MSVC
+  typedef typename remove_all<Arg1>::type Ancestor;
+  typedef typename traits<Ancestor>::XprKind XprKind;
+  enum {
+    RowsAtCompileTime = traits<Ancestor>::RowsAtCompileTime,
+    ColsAtCompileTime = traits<Ancestor>::ColsAtCompileTime,
+    MaxRowsAtCompileTime = traits<Ancestor>::MaxRowsAtCompileTime,
+    MaxColsAtCompileTime = traits<Ancestor>::MaxColsAtCompileTime
+  };
+
+  // even though we require Arg1, Arg2, and Arg3 to have the same scalar type
+  // (see CwiseTernaryOp constructor),
+  // we still want to handle the case when the result type is different.
+  typedef typename result_of<TernaryOp(
+      const typename Arg1::Scalar&, const typename Arg2::Scalar&,
+      const typename Arg3::Scalar&)>::type Scalar;
+
+  typedef typename internal::traits<Arg1>::StorageKind StorageKind;
+  typedef typename internal::traits<Arg1>::StorageIndex StorageIndex;
+
+  typedef typename Arg1::Nested Arg1Nested;
+  typedef typename Arg2::Nested Arg2Nested;
+  typedef typename Arg3::Nested Arg3Nested;
+  typedef typename remove_reference<Arg1Nested>::type _Arg1Nested;
+  typedef typename remove_reference<Arg2Nested>::type _Arg2Nested;
+  typedef typename remove_reference<Arg3Nested>::type _Arg3Nested;
+  enum { Flags = _Arg1Nested::Flags & RowMajorBit };
+};
+}  // end namespace internal
+
+template <typename TernaryOp, typename Arg1, typename Arg2, typename Arg3,
+          typename StorageKind>
+class CwiseTernaryOpImpl;
+
+/** \class CwiseTernaryOp
+  * \ingroup Core_Module
+  *
+  * \brief Generic expression where a coefficient-wise ternary operator is
+ * applied to two expressions
+  *
+  * \tparam TernaryOp template functor implementing the operator
+  * \tparam Arg1Type the type of the first argument
+  * \tparam Arg2Type the type of the second argument
+  * \tparam Arg3Type the type of the third argument
+  *
+  * This class represents an expression where a coefficient-wise ternary
+ * operator is applied to three expressions.
+  * It is the return type of ternary operators, by which we mean only those
+ * ternary operators where
+  * all three arguments are Eigen expressions.
+  * For example, the return type of betainc(matrix1, matrix2, matrix3) is a
+ * CwiseTernaryOp.
+  *
+  * Most of the time, this is the only way that it is used, so you typically
+ * don't have to name
+  * CwiseTernaryOp types explicitly.
+  *
+  * \sa MatrixBase::ternaryExpr(const MatrixBase<Argument2> &, const
+ * MatrixBase<Argument3> &, const CustomTernaryOp &) const, class CwiseBinaryOp,
+ * class CwiseUnaryOp, class CwiseNullaryOp
+  */
+template <typename TernaryOp, typename Arg1Type, typename Arg2Type,
+          typename Arg3Type>
+class CwiseTernaryOp : public CwiseTernaryOpImpl<
+                           TernaryOp, Arg1Type, Arg2Type, Arg3Type,
+                           typename internal::traits<Arg1Type>::StorageKind>,
+                       internal::no_assignment_operator
+{
+ public:
+  typedef typename internal::remove_all<Arg1Type>::type Arg1;
+  typedef typename internal::remove_all<Arg2Type>::type Arg2;
+  typedef typename internal::remove_all<Arg3Type>::type Arg3;
+
+  typedef typename CwiseTernaryOpImpl<
+      TernaryOp, Arg1Type, Arg2Type, Arg3Type,
+      typename internal::traits<Arg1Type>::StorageKind>::Base Base;
+  EIGEN_GENERIC_PUBLIC_INTERFACE(CwiseTernaryOp)
+
+  typedef typename internal::ref_selector<Arg1Type>::type Arg1Nested;
+  typedef typename internal::ref_selector<Arg2Type>::type Arg2Nested;
+  typedef typename internal::ref_selector<Arg3Type>::type Arg3Nested;
+  typedef typename internal::remove_reference<Arg1Nested>::type _Arg1Nested;
+  typedef typename internal::remove_reference<Arg2Nested>::type _Arg2Nested;
+  typedef typename internal::remove_reference<Arg3Nested>::type _Arg3Nested;
+
+  EIGEN_DEVICE_FUNC
+  EIGEN_STRONG_INLINE CwiseTernaryOp(const Arg1& a1, const Arg2& a2,
+                                     const Arg3& a3,
+                                     const TernaryOp& func = TernaryOp())
+      : m_arg1(a1), m_arg2(a2), m_arg3(a3), m_functor(func) {
+    // require the sizes to match
+    EIGEN_STATIC_ASSERT_SAME_MATRIX_SIZE(Arg1, Arg2)
+    EIGEN_STATIC_ASSERT_SAME_MATRIX_SIZE(Arg1, Arg3)
+
+    // The index types should match
+    EIGEN_STATIC_ASSERT((internal::is_same<
+                         typename internal::traits<Arg1Type>::StorageKind,
+                         typename internal::traits<Arg2Type>::StorageKind>::value),
+                        STORAGE_KIND_MUST_MATCH)
+    EIGEN_STATIC_ASSERT((internal::is_same<
+                         typename internal::traits<Arg1Type>::StorageKind,
+                         typename internal::traits<Arg3Type>::StorageKind>::value),
+                        STORAGE_KIND_MUST_MATCH)
+
+    eigen_assert(a1.rows() == a2.rows() && a1.cols() == a2.cols() &&
+                 a1.rows() == a3.rows() && a1.cols() == a3.cols());
+  }
+
+  EIGEN_DEVICE_FUNC
+  EIGEN_STRONG_INLINE Index rows() const {
+    // return the fixed size type if available to enable compile time
+    // optimizations
+    if (internal::traits<typename internal::remove_all<Arg1Nested>::type>::
+                RowsAtCompileTime == Dynamic &&
+        internal::traits<typename internal::remove_all<Arg2Nested>::type>::
+                RowsAtCompileTime == Dynamic)
+      return m_arg3.rows();
+    else if (internal::traits<typename internal::remove_all<Arg1Nested>::type>::
+                     RowsAtCompileTime == Dynamic &&
+             internal::traits<typename internal::remove_all<Arg3Nested>::type>::
+                     RowsAtCompileTime == Dynamic)
+      return m_arg2.rows();
+    else
+      return m_arg1.rows();
+  }
+  EIGEN_DEVICE_FUNC
+  EIGEN_STRONG_INLINE Index cols() const {
+    // return the fixed size type if available to enable compile time
+    // optimizations
+    if (internal::traits<typename internal::remove_all<Arg1Nested>::type>::
+                ColsAtCompileTime == Dynamic &&
+        internal::traits<typename internal::remove_all<Arg2Nested>::type>::
+                ColsAtCompileTime == Dynamic)
+      return m_arg3.cols();
+    else if (internal::traits<typename internal::remove_all<Arg1Nested>::type>::
+                     ColsAtCompileTime == Dynamic &&
+             internal::traits<typename internal::remove_all<Arg3Nested>::type>::
+                     ColsAtCompileTime == Dynamic)
+      return m_arg2.cols();
+    else
+      return m_arg1.cols();
+  }
+
+  /** \returns the first argument nested expression */
+  EIGEN_DEVICE_FUNC
+  const _Arg1Nested& arg1() const { return m_arg1; }
+  /** \returns the first argument nested expression */
+  EIGEN_DEVICE_FUNC
+  const _Arg2Nested& arg2() const { return m_arg2; }
+  /** \returns the third argument nested expression */
+  EIGEN_DEVICE_FUNC
+  const _Arg3Nested& arg3() const { return m_arg3; }
+  /** \returns the functor representing the ternary operation */
+  EIGEN_DEVICE_FUNC
+  const TernaryOp& functor() const { return m_functor; }
+
+ protected:
+  Arg1Nested m_arg1;
+  Arg2Nested m_arg2;
+  Arg3Nested m_arg3;
+  const TernaryOp m_functor;
+};
+
+// Generic API dispatcher
+template <typename TernaryOp, typename Arg1, typename Arg2, typename Arg3,
+          typename StorageKind>
+class CwiseTernaryOpImpl
+    : public internal::generic_xpr_base<
+          CwiseTernaryOp<TernaryOp, Arg1, Arg2, Arg3> >::type {
+ public:
+  typedef typename internal::generic_xpr_base<
+      CwiseTernaryOp<TernaryOp, Arg1, Arg2, Arg3> >::type Base;
+};
+
+}  // end namespace Eigen
+
+#endif  // EIGEN_CWISE_TERNARY_OP_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/Diagonal.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/Diagonal.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/Diagonal.h	(revision 3762)
@@ -0,0 +1,260 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2007-2009 Benoit Jacob <jacob.benoit.1@gmail.com>
+// Copyright (C) 2009-2010 Gael Guennebaud <gael.guennebaud@inria.fr>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_DIAGONAL_H
+#define EIGEN_DIAGONAL_H
+
+namespace Eigen { 
+
+/** \class Diagonal
+  * \ingroup Core_Module
+  *
+  * \brief Expression of a diagonal/subdiagonal/superdiagonal in a matrix
+  *
+  * \param MatrixType the type of the object in which we are taking a sub/main/super diagonal
+  * \param DiagIndex the index of the sub/super diagonal. The default is 0 and it means the main diagonal.
+  *              A positive value means a superdiagonal, a negative value means a subdiagonal.
+  *              You can also use DynamicIndex so the index can be set at runtime.
+  *
+  * The matrix is not required to be square.
+  *
+  * This class represents an expression of the main diagonal, or any sub/super diagonal
+  * of a square matrix. It is the return type of MatrixBase::diagonal() and MatrixBase::diagonal(Index) and most of the
+  * time this is the only way it is used.
+  *
+  * \sa MatrixBase::diagonal(), MatrixBase::diagonal(Index)
+  */
+
+namespace internal {
+template<typename MatrixType, int DiagIndex>
+struct traits<Diagonal<MatrixType,DiagIndex> >
+ : traits<MatrixType>
+{
+  typedef typename ref_selector<MatrixType>::type MatrixTypeNested;
+  typedef typename remove_reference<MatrixTypeNested>::type _MatrixTypeNested;
+  typedef typename MatrixType::StorageKind StorageKind;
+  enum {
+    RowsAtCompileTime = (int(DiagIndex) == DynamicIndex || int(MatrixType::SizeAtCompileTime) == Dynamic) ? Dynamic
+                      : (EIGEN_PLAIN_ENUM_MIN(MatrixType::RowsAtCompileTime - EIGEN_PLAIN_ENUM_MAX(-DiagIndex, 0),
+                                              MatrixType::ColsAtCompileTime - EIGEN_PLAIN_ENUM_MAX( DiagIndex, 0))),
+    ColsAtCompileTime = 1,
+    MaxRowsAtCompileTime = int(MatrixType::MaxSizeAtCompileTime) == Dynamic ? Dynamic
+                         : DiagIndex == DynamicIndex ? EIGEN_SIZE_MIN_PREFER_FIXED(MatrixType::MaxRowsAtCompileTime,
+                                                                              MatrixType::MaxColsAtCompileTime)
+                         : (EIGEN_PLAIN_ENUM_MIN(MatrixType::MaxRowsAtCompileTime - EIGEN_PLAIN_ENUM_MAX(-DiagIndex, 0),
+                                                 MatrixType::MaxColsAtCompileTime - EIGEN_PLAIN_ENUM_MAX( DiagIndex, 0))),
+    MaxColsAtCompileTime = 1,
+    MaskLvalueBit = is_lvalue<MatrixType>::value ? LvalueBit : 0,
+    Flags = (unsigned int)_MatrixTypeNested::Flags & (RowMajorBit | MaskLvalueBit | DirectAccessBit) & ~RowMajorBit, // FIXME DirectAccessBit should not be handled by expressions
+    MatrixTypeOuterStride = outer_stride_at_compile_time<MatrixType>::ret,
+    InnerStrideAtCompileTime = MatrixTypeOuterStride == Dynamic ? Dynamic : MatrixTypeOuterStride+1,
+    OuterStrideAtCompileTime = 0
+  };
+};
+}
+
+template<typename MatrixType, int _DiagIndex> class Diagonal
+   : public internal::dense_xpr_base< Diagonal<MatrixType,_DiagIndex> >::type
+{
+  public:
+
+    enum { DiagIndex = _DiagIndex };
+    typedef typename internal::dense_xpr_base<Diagonal>::type Base;
+    EIGEN_DENSE_PUBLIC_INTERFACE(Diagonal)
+
+    EIGEN_DEVICE_FUNC
+    explicit inline Diagonal(MatrixType& matrix, Index a_index = DiagIndex) : m_matrix(matrix), m_index(a_index)
+    {
+      eigen_assert( a_index <= m_matrix.cols() && -a_index <= m_matrix.rows() );
+    }
+
+    EIGEN_INHERIT_ASSIGNMENT_OPERATORS(Diagonal)
+
+    EIGEN_DEVICE_FUNC
+    inline Index rows() const
+    {
+      return m_index.value()<0 ? numext::mini<Index>(m_matrix.cols(),m_matrix.rows()+m_index.value())
+                               : numext::mini<Index>(m_matrix.rows(),m_matrix.cols()-m_index.value());
+    }
+
+    EIGEN_DEVICE_FUNC
+    inline Index cols() const { return 1; }
+
+    EIGEN_DEVICE_FUNC
+    inline Index innerStride() const
+    {
+      return m_matrix.outerStride() + 1;
+    }
+
+    EIGEN_DEVICE_FUNC
+    inline Index outerStride() const
+    {
+      return 0;
+    }
+
+    typedef typename internal::conditional<
+                       internal::is_lvalue<MatrixType>::value,
+                       Scalar,
+                       const Scalar
+                     >::type ScalarWithConstIfNotLvalue;
+
+    EIGEN_DEVICE_FUNC
+    inline ScalarWithConstIfNotLvalue* data() { return &(m_matrix.coeffRef(rowOffset(), colOffset())); }
+    EIGEN_DEVICE_FUNC
+    inline const Scalar* data() const { return &(m_matrix.coeffRef(rowOffset(), colOffset())); }
+
+    EIGEN_DEVICE_FUNC
+    inline Scalar& coeffRef(Index row, Index)
+    {
+      EIGEN_STATIC_ASSERT_LVALUE(MatrixType)
+      return m_matrix.coeffRef(row+rowOffset(), row+colOffset());
+    }
+
+    EIGEN_DEVICE_FUNC
+    inline const Scalar& coeffRef(Index row, Index) const
+    {
+      return m_matrix.coeffRef(row+rowOffset(), row+colOffset());
+    }
+
+    EIGEN_DEVICE_FUNC
+    inline CoeffReturnType coeff(Index row, Index) const
+    {
+      return m_matrix.coeff(row+rowOffset(), row+colOffset());
+    }
+
+    EIGEN_DEVICE_FUNC
+    inline Scalar& coeffRef(Index idx)
+    {
+      EIGEN_STATIC_ASSERT_LVALUE(MatrixType)
+      return m_matrix.coeffRef(idx+rowOffset(), idx+colOffset());
+    }
+
+    EIGEN_DEVICE_FUNC
+    inline const Scalar& coeffRef(Index idx) const
+    {
+      return m_matrix.coeffRef(idx+rowOffset(), idx+colOffset());
+    }
+
+    EIGEN_DEVICE_FUNC
+    inline CoeffReturnType coeff(Index idx) const
+    {
+      return m_matrix.coeff(idx+rowOffset(), idx+colOffset());
+    }
+
+    EIGEN_DEVICE_FUNC
+    inline const typename internal::remove_all<typename MatrixType::Nested>::type& 
+    nestedExpression() const 
+    {
+      return m_matrix;
+    }
+
+    EIGEN_DEVICE_FUNC
+    inline Index index() const
+    {
+      return m_index.value();
+    }
+
+  protected:
+    typename internal::ref_selector<MatrixType>::non_const_type m_matrix;
+    const internal::variable_if_dynamicindex<Index, DiagIndex> m_index;
+
+  private:
+    // some compilers may fail to optimize std::max etc in case of compile-time constants...
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Index absDiagIndex() const { return m_index.value()>0 ? m_index.value() : -m_index.value(); }
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Index rowOffset() const { return m_index.value()>0 ? 0 : -m_index.value(); }
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Index colOffset() const { return m_index.value()>0 ? m_index.value() : 0; }
+    // trigger a compile-time error if someone try to call packet
+    template<int LoadMode> typename MatrixType::PacketReturnType packet(Index) const;
+    template<int LoadMode> typename MatrixType::PacketReturnType packet(Index,Index) const;
+};
+
+/** \returns an expression of the main diagonal of the matrix \c *this
+  *
+  * \c *this is not required to be square.
+  *
+  * Example: \include MatrixBase_diagonal.cpp
+  * Output: \verbinclude MatrixBase_diagonal.out
+  *
+  * \sa class Diagonal */
+template<typename Derived>
+inline typename MatrixBase<Derived>::DiagonalReturnType
+MatrixBase<Derived>::diagonal()
+{
+  return DiagonalReturnType(derived());
+}
+
+/** This is the const version of diagonal(). */
+template<typename Derived>
+inline typename MatrixBase<Derived>::ConstDiagonalReturnType
+MatrixBase<Derived>::diagonal() const
+{
+  return ConstDiagonalReturnType(derived());
+}
+
+/** \returns an expression of the \a DiagIndex-th sub or super diagonal of the matrix \c *this
+  *
+  * \c *this is not required to be square.
+  *
+  * The template parameter \a DiagIndex represent a super diagonal if \a DiagIndex > 0
+  * and a sub diagonal otherwise. \a DiagIndex == 0 is equivalent to the main diagonal.
+  *
+  * Example: \include MatrixBase_diagonal_int.cpp
+  * Output: \verbinclude MatrixBase_diagonal_int.out
+  *
+  * \sa MatrixBase::diagonal(), class Diagonal */
+template<typename Derived>
+inline typename MatrixBase<Derived>::DiagonalDynamicIndexReturnType
+MatrixBase<Derived>::diagonal(Index index)
+{
+  return DiagonalDynamicIndexReturnType(derived(), index);
+}
+
+/** This is the const version of diagonal(Index). */
+template<typename Derived>
+inline typename MatrixBase<Derived>::ConstDiagonalDynamicIndexReturnType
+MatrixBase<Derived>::diagonal(Index index) const
+{
+  return ConstDiagonalDynamicIndexReturnType(derived(), index);
+}
+
+/** \returns an expression of the \a DiagIndex-th sub or super diagonal of the matrix \c *this
+  *
+  * \c *this is not required to be square.
+  *
+  * The template parameter \a DiagIndex represent a super diagonal if \a DiagIndex > 0
+  * and a sub diagonal otherwise. \a DiagIndex == 0 is equivalent to the main diagonal.
+  *
+  * Example: \include MatrixBase_diagonal_template_int.cpp
+  * Output: \verbinclude MatrixBase_diagonal_template_int.out
+  *
+  * \sa MatrixBase::diagonal(), class Diagonal */
+template<typename Derived>
+template<int Index_>
+inline typename MatrixBase<Derived>::template DiagonalIndexReturnType<Index_>::Type
+MatrixBase<Derived>::diagonal()
+{
+  return typename DiagonalIndexReturnType<Index_>::Type(derived());
+}
+
+/** This is the const version of diagonal<int>(). */
+template<typename Derived>
+template<int Index_>
+inline typename MatrixBase<Derived>::template ConstDiagonalIndexReturnType<Index_>::Type
+MatrixBase<Derived>::diagonal() const
+{
+  return typename ConstDiagonalIndexReturnType<Index_>::Type(derived());
+}
+
+} // end namespace Eigen
+
+#endif // EIGEN_DIAGONAL_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/CwiseBinaryOp.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/CwiseBinaryOp.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/CwiseBinaryOp.h	(revision 3762)
@@ -0,0 +1,184 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2008-2014 Gael Guennebaud <gael.guennebaud@inria.fr>
+// Copyright (C) 2006-2008 Benoit Jacob <jacob.benoit.1@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CWISE_BINARY_OP_H
+#define EIGEN_CWISE_BINARY_OP_H
+
+namespace Eigen {
+
+namespace internal {
+template<typename BinaryOp, typename Lhs, typename Rhs>
+struct traits<CwiseBinaryOp<BinaryOp, Lhs, Rhs> >
+{
+  // we must not inherit from traits<Lhs> since it has
+  // the potential to cause problems with MSVC
+  typedef typename remove_all<Lhs>::type Ancestor;
+  typedef typename traits<Ancestor>::XprKind XprKind;
+  enum {
+    RowsAtCompileTime = traits<Ancestor>::RowsAtCompileTime,
+    ColsAtCompileTime = traits<Ancestor>::ColsAtCompileTime,
+    MaxRowsAtCompileTime = traits<Ancestor>::MaxRowsAtCompileTime,
+    MaxColsAtCompileTime = traits<Ancestor>::MaxColsAtCompileTime
+  };
+
+  // even though we require Lhs and Rhs to have the same scalar type (see CwiseBinaryOp constructor),
+  // we still want to handle the case when the result type is different.
+  typedef typename result_of<
+                     BinaryOp(
+                       const typename Lhs::Scalar&,
+                       const typename Rhs::Scalar&
+                     )
+                   >::type Scalar;
+  typedef typename cwise_promote_storage_type<typename traits<Lhs>::StorageKind,
+                                              typename traits<Rhs>::StorageKind,
+                                              BinaryOp>::ret StorageKind;
+  typedef typename promote_index_type<typename traits<Lhs>::StorageIndex,
+                                      typename traits<Rhs>::StorageIndex>::type StorageIndex;
+  typedef typename Lhs::Nested LhsNested;
+  typedef typename Rhs::Nested RhsNested;
+  typedef typename remove_reference<LhsNested>::type _LhsNested;
+  typedef typename remove_reference<RhsNested>::type _RhsNested;
+  enum {
+    Flags = cwise_promote_storage_order<typename traits<Lhs>::StorageKind,typename traits<Rhs>::StorageKind,_LhsNested::Flags & RowMajorBit,_RhsNested::Flags & RowMajorBit>::value
+  };
+};
+} // end namespace internal
+
+template<typename BinaryOp, typename Lhs, typename Rhs, typename StorageKind>
+class CwiseBinaryOpImpl;
+
+/** \class CwiseBinaryOp
+  * \ingroup Core_Module
+  *
+  * \brief Generic expression where a coefficient-wise binary operator is applied to two expressions
+  *
+  * \tparam BinaryOp template functor implementing the operator
+  * \tparam LhsType the type of the left-hand side
+  * \tparam RhsType the type of the right-hand side
+  *
+  * This class represents an expression  where a coefficient-wise binary operator is applied to two expressions.
+  * It is the return type of binary operators, by which we mean only those binary operators where
+  * both the left-hand side and the right-hand side are Eigen expressions.
+  * For example, the return type of matrix1+matrix2 is a CwiseBinaryOp.
+  *
+  * Most of the time, this is the only way that it is used, so you typically don't have to name
+  * CwiseBinaryOp types explicitly.
+  *
+  * \sa MatrixBase::binaryExpr(const MatrixBase<OtherDerived> &,const CustomBinaryOp &) const, class CwiseUnaryOp, class CwiseNullaryOp
+  */
+template<typename BinaryOp, typename LhsType, typename RhsType>
+class CwiseBinaryOp : 
+  public CwiseBinaryOpImpl<
+          BinaryOp, LhsType, RhsType,
+          typename internal::cwise_promote_storage_type<typename internal::traits<LhsType>::StorageKind,
+                                                        typename internal::traits<RhsType>::StorageKind,
+                                                        BinaryOp>::ret>,
+  internal::no_assignment_operator
+{
+  public:
+    
+    typedef typename internal::remove_all<BinaryOp>::type Functor;
+    typedef typename internal::remove_all<LhsType>::type Lhs;
+    typedef typename internal::remove_all<RhsType>::type Rhs;
+
+    typedef typename CwiseBinaryOpImpl<
+        BinaryOp, LhsType, RhsType,
+        typename internal::cwise_promote_storage_type<typename internal::traits<LhsType>::StorageKind,
+                                                      typename internal::traits<Rhs>::StorageKind,
+                                                      BinaryOp>::ret>::Base Base;
+    EIGEN_GENERIC_PUBLIC_INTERFACE(CwiseBinaryOp)
+
+    typedef typename internal::ref_selector<LhsType>::type LhsNested;
+    typedef typename internal::ref_selector<RhsType>::type RhsNested;
+    typedef typename internal::remove_reference<LhsNested>::type _LhsNested;
+    typedef typename internal::remove_reference<RhsNested>::type _RhsNested;
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE CwiseBinaryOp(const Lhs& aLhs, const Rhs& aRhs, const BinaryOp& func = BinaryOp())
+      : m_lhs(aLhs), m_rhs(aRhs), m_functor(func)
+    {
+      EIGEN_CHECK_BINARY_COMPATIBILIY(BinaryOp,typename Lhs::Scalar,typename Rhs::Scalar);
+      // require the sizes to match
+      EIGEN_STATIC_ASSERT_SAME_MATRIX_SIZE(Lhs, Rhs)
+      eigen_assert(aLhs.rows() == aRhs.rows() && aLhs.cols() == aRhs.cols());
+    }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Index rows() const {
+      // return the fixed size type if available to enable compile time optimizations
+      if (internal::traits<typename internal::remove_all<LhsNested>::type>::RowsAtCompileTime==Dynamic)
+        return m_rhs.rows();
+      else
+        return m_lhs.rows();
+    }
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Index cols() const {
+      // return the fixed size type if available to enable compile time optimizations
+      if (internal::traits<typename internal::remove_all<LhsNested>::type>::ColsAtCompileTime==Dynamic)
+        return m_rhs.cols();
+      else
+        return m_lhs.cols();
+    }
+
+    /** \returns the left hand side nested expression */
+    EIGEN_DEVICE_FUNC
+    const _LhsNested& lhs() const { return m_lhs; }
+    /** \returns the right hand side nested expression */
+    EIGEN_DEVICE_FUNC
+    const _RhsNested& rhs() const { return m_rhs; }
+    /** \returns the functor representing the binary operation */
+    EIGEN_DEVICE_FUNC
+    const BinaryOp& functor() const { return m_functor; }
+
+  protected:
+    LhsNested m_lhs;
+    RhsNested m_rhs;
+    const BinaryOp m_functor;
+};
+
+// Generic API dispatcher
+template<typename BinaryOp, typename Lhs, typename Rhs, typename StorageKind>
+class CwiseBinaryOpImpl
+  : public internal::generic_xpr_base<CwiseBinaryOp<BinaryOp, Lhs, Rhs> >::type
+{
+public:
+  typedef typename internal::generic_xpr_base<CwiseBinaryOp<BinaryOp, Lhs, Rhs> >::type Base;
+};
+
+/** replaces \c *this by \c *this - \a other.
+  *
+  * \returns a reference to \c *this
+  */
+template<typename Derived>
+template<typename OtherDerived>
+EIGEN_STRONG_INLINE Derived &
+MatrixBase<Derived>::operator-=(const MatrixBase<OtherDerived> &other)
+{
+  call_assignment(derived(), other.derived(), internal::sub_assign_op<Scalar,typename OtherDerived::Scalar>());
+  return derived();
+}
+
+/** replaces \c *this by \c *this + \a other.
+  *
+  * \returns a reference to \c *this
+  */
+template<typename Derived>
+template<typename OtherDerived>
+EIGEN_STRONG_INLINE Derived &
+MatrixBase<Derived>::operator+=(const MatrixBase<OtherDerived>& other)
+{
+  call_assignment(derived(), other.derived(), internal::add_assign_op<Scalar,typename OtherDerived::Scalar>());
+  return derived();
+}
+
+} // end namespace Eigen
+
+#endif // EIGEN_CWISE_BINARY_OP_H
+
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/ArrayWrapper.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/ArrayWrapper.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/ArrayWrapper.h	(revision 3762)
@@ -0,0 +1,209 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2009-2010 Gael Guennebaud <gael.guennebaud@inria.fr>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_ARRAYWRAPPER_H
+#define EIGEN_ARRAYWRAPPER_H
+
+namespace Eigen { 
+
+/** \class ArrayWrapper
+  * \ingroup Core_Module
+  *
+  * \brief Expression of a mathematical vector or matrix as an array object
+  *
+  * This class is the return type of MatrixBase::array(), and most of the time
+  * this is the only way it is use.
+  *
+  * \sa MatrixBase::array(), class MatrixWrapper
+  */
+
+namespace internal {
+template<typename ExpressionType>
+struct traits<ArrayWrapper<ExpressionType> >
+  : public traits<typename remove_all<typename ExpressionType::Nested>::type >
+{
+  typedef ArrayXpr XprKind;
+  // Let's remove NestByRefBit
+  enum {
+    Flags0 = traits<typename remove_all<typename ExpressionType::Nested>::type >::Flags,
+    LvalueBitFlag = is_lvalue<ExpressionType>::value ? LvalueBit : 0,
+    Flags = (Flags0 & ~(NestByRefBit | LvalueBit)) | LvalueBitFlag
+  };
+};
+}
+
+template<typename ExpressionType>
+class ArrayWrapper : public ArrayBase<ArrayWrapper<ExpressionType> >
+{
+  public:
+    typedef ArrayBase<ArrayWrapper> Base;
+    EIGEN_DENSE_PUBLIC_INTERFACE(ArrayWrapper)
+    EIGEN_INHERIT_ASSIGNMENT_OPERATORS(ArrayWrapper)
+    typedef typename internal::remove_all<ExpressionType>::type NestedExpression;
+
+    typedef typename internal::conditional<
+                       internal::is_lvalue<ExpressionType>::value,
+                       Scalar,
+                       const Scalar
+                     >::type ScalarWithConstIfNotLvalue;
+
+    typedef typename internal::ref_selector<ExpressionType>::non_const_type NestedExpressionType;
+
+    using Base::coeffRef;
+
+    EIGEN_DEVICE_FUNC
+    explicit EIGEN_STRONG_INLINE ArrayWrapper(ExpressionType& matrix) : m_expression(matrix) {}
+
+    EIGEN_DEVICE_FUNC
+    inline Index rows() const { return m_expression.rows(); }
+    EIGEN_DEVICE_FUNC
+    inline Index cols() const { return m_expression.cols(); }
+    EIGEN_DEVICE_FUNC
+    inline Index outerStride() const { return m_expression.outerStride(); }
+    EIGEN_DEVICE_FUNC
+    inline Index innerStride() const { return m_expression.innerStride(); }
+
+    EIGEN_DEVICE_FUNC
+    inline ScalarWithConstIfNotLvalue* data() { return m_expression.data(); }
+    EIGEN_DEVICE_FUNC
+    inline const Scalar* data() const { return m_expression.data(); }
+
+    EIGEN_DEVICE_FUNC
+    inline const Scalar& coeffRef(Index rowId, Index colId) const
+    {
+      return m_expression.coeffRef(rowId, colId);
+    }
+
+    EIGEN_DEVICE_FUNC
+    inline const Scalar& coeffRef(Index index) const
+    {
+      return m_expression.coeffRef(index);
+    }
+
+    template<typename Dest>
+    EIGEN_DEVICE_FUNC
+    inline void evalTo(Dest& dst) const { dst = m_expression; }
+
+    const typename internal::remove_all<NestedExpressionType>::type& 
+    EIGEN_DEVICE_FUNC
+    nestedExpression() const 
+    {
+      return m_expression;
+    }
+
+    /** Forwards the resizing request to the nested expression
+      * \sa DenseBase::resize(Index)  */
+    EIGEN_DEVICE_FUNC
+    void resize(Index newSize) { m_expression.resize(newSize); }
+    /** Forwards the resizing request to the nested expression
+      * \sa DenseBase::resize(Index,Index)*/
+    EIGEN_DEVICE_FUNC
+    void resize(Index rows, Index cols) { m_expression.resize(rows,cols); }
+
+  protected:
+    NestedExpressionType m_expression;
+};
+
+/** \class MatrixWrapper
+  * \ingroup Core_Module
+  *
+  * \brief Expression of an array as a mathematical vector or matrix
+  *
+  * This class is the return type of ArrayBase::matrix(), and most of the time
+  * this is the only way it is use.
+  *
+  * \sa MatrixBase::matrix(), class ArrayWrapper
+  */
+
+namespace internal {
+template<typename ExpressionType>
+struct traits<MatrixWrapper<ExpressionType> >
+ : public traits<typename remove_all<typename ExpressionType::Nested>::type >
+{
+  typedef MatrixXpr XprKind;
+  // Let's remove NestByRefBit
+  enum {
+    Flags0 = traits<typename remove_all<typename ExpressionType::Nested>::type >::Flags,
+    LvalueBitFlag = is_lvalue<ExpressionType>::value ? LvalueBit : 0,
+    Flags = (Flags0 & ~(NestByRefBit | LvalueBit)) | LvalueBitFlag
+  };
+};
+}
+
+template<typename ExpressionType>
+class MatrixWrapper : public MatrixBase<MatrixWrapper<ExpressionType> >
+{
+  public:
+    typedef MatrixBase<MatrixWrapper<ExpressionType> > Base;
+    EIGEN_DENSE_PUBLIC_INTERFACE(MatrixWrapper)
+    EIGEN_INHERIT_ASSIGNMENT_OPERATORS(MatrixWrapper)
+    typedef typename internal::remove_all<ExpressionType>::type NestedExpression;
+
+    typedef typename internal::conditional<
+                       internal::is_lvalue<ExpressionType>::value,
+                       Scalar,
+                       const Scalar
+                     >::type ScalarWithConstIfNotLvalue;
+
+    typedef typename internal::ref_selector<ExpressionType>::non_const_type NestedExpressionType;
+
+    using Base::coeffRef;
+
+    EIGEN_DEVICE_FUNC
+    explicit inline MatrixWrapper(ExpressionType& matrix) : m_expression(matrix) {}
+
+    EIGEN_DEVICE_FUNC
+    inline Index rows() const { return m_expression.rows(); }
+    EIGEN_DEVICE_FUNC
+    inline Index cols() const { return m_expression.cols(); }
+    EIGEN_DEVICE_FUNC
+    inline Index outerStride() const { return m_expression.outerStride(); }
+    EIGEN_DEVICE_FUNC
+    inline Index innerStride() const { return m_expression.innerStride(); }
+
+    EIGEN_DEVICE_FUNC
+    inline ScalarWithConstIfNotLvalue* data() { return m_expression.data(); }
+    EIGEN_DEVICE_FUNC
+    inline const Scalar* data() const { return m_expression.data(); }
+
+    EIGEN_DEVICE_FUNC
+    inline const Scalar& coeffRef(Index rowId, Index colId) const
+    {
+      return m_expression.derived().coeffRef(rowId, colId);
+    }
+
+    EIGEN_DEVICE_FUNC
+    inline const Scalar& coeffRef(Index index) const
+    {
+      return m_expression.coeffRef(index);
+    }
+
+    EIGEN_DEVICE_FUNC
+    const typename internal::remove_all<NestedExpressionType>::type& 
+    nestedExpression() const 
+    {
+      return m_expression;
+    }
+
+    /** Forwards the resizing request to the nested expression
+      * \sa DenseBase::resize(Index)  */
+    EIGEN_DEVICE_FUNC
+    void resize(Index newSize) { m_expression.resize(newSize); }
+    /** Forwards the resizing request to the nested expression
+      * \sa DenseBase::resize(Index,Index)*/
+    EIGEN_DEVICE_FUNC
+    void resize(Index rows, Index cols) { m_expression.resize(rows,cols); }
+
+  protected:
+    NestedExpressionType m_expression;
+};
+
+} // end namespace Eigen
+
+#endif // EIGEN_ARRAYWRAPPER_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/Random.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/Random.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/Random.h	(revision 3762)
@@ -0,0 +1,182 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2008 Gael Guennebaud <gael.guennebaud@inria.fr>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_RANDOM_H
+#define EIGEN_RANDOM_H
+
+namespace Eigen { 
+
+namespace internal {
+
+template<typename Scalar> struct scalar_random_op {
+  EIGEN_EMPTY_STRUCT_CTOR(scalar_random_op)
+  inline const Scalar operator() () const { return random<Scalar>(); }
+};
+
+template<typename Scalar>
+struct functor_traits<scalar_random_op<Scalar> >
+{ enum { Cost = 5 * NumTraits<Scalar>::MulCost, PacketAccess = false, IsRepeatable = false }; };
+
+} // end namespace internal
+
+/** \returns a random matrix expression
+  *
+  * Numbers are uniformly spread through their whole definition range for integer types,
+  * and in the [-1:1] range for floating point scalar types.
+  * 
+  * The parameters \a rows and \a cols are the number of rows and of columns of
+  * the returned matrix. Must be compatible with this MatrixBase type.
+  *
+  * \not_reentrant
+  * 
+  * This variant is meant to be used for dynamic-size matrix types. For fixed-size types,
+  * it is redundant to pass \a rows and \a cols as arguments, so Random() should be used
+  * instead.
+  * 
+  *
+  * Example: \include MatrixBase_random_int_int.cpp
+  * Output: \verbinclude MatrixBase_random_int_int.out
+  *
+  * This expression has the "evaluate before nesting" flag so that it will be evaluated into
+  * a temporary matrix whenever it is nested in a larger expression. This prevents unexpected
+  * behavior with expressions involving random matrices.
+  * 
+  * See DenseBase::NullaryExpr(Index, const CustomNullaryOp&) for an example using C++11 random generators.
+  *
+  * \sa DenseBase::setRandom(), DenseBase::Random(Index), DenseBase::Random()
+  */
+template<typename Derived>
+inline const typename DenseBase<Derived>::RandomReturnType
+DenseBase<Derived>::Random(Index rows, Index cols)
+{
+  return NullaryExpr(rows, cols, internal::scalar_random_op<Scalar>());
+}
+
+/** \returns a random vector expression
+  *
+  * Numbers are uniformly spread through their whole definition range for integer types,
+  * and in the [-1:1] range for floating point scalar types.
+  *
+  * The parameter \a size is the size of the returned vector.
+  * Must be compatible with this MatrixBase type.
+  *
+  * \only_for_vectors
+  * \not_reentrant
+  *
+  * This variant is meant to be used for dynamic-size vector types. For fixed-size types,
+  * it is redundant to pass \a size as argument, so Random() should be used
+  * instead.
+  *
+  * Example: \include MatrixBase_random_int.cpp
+  * Output: \verbinclude MatrixBase_random_int.out
+  *
+  * This expression has the "evaluate before nesting" flag so that it will be evaluated into
+  * a temporary vector whenever it is nested in a larger expression. This prevents unexpected
+  * behavior with expressions involving random matrices.
+  *
+  * \sa DenseBase::setRandom(), DenseBase::Random(Index,Index), DenseBase::Random()
+  */
+template<typename Derived>
+inline const typename DenseBase<Derived>::RandomReturnType
+DenseBase<Derived>::Random(Index size)
+{
+  return NullaryExpr(size, internal::scalar_random_op<Scalar>());
+}
+
+/** \returns a fixed-size random matrix or vector expression
+  *
+  * Numbers are uniformly spread through their whole definition range for integer types,
+  * and in the [-1:1] range for floating point scalar types.
+  * 
+  * This variant is only for fixed-size MatrixBase types. For dynamic-size types, you
+  * need to use the variants taking size arguments.
+  *
+  * Example: \include MatrixBase_random.cpp
+  * Output: \verbinclude MatrixBase_random.out
+  *
+  * This expression has the "evaluate before nesting" flag so that it will be evaluated into
+  * a temporary matrix whenever it is nested in a larger expression. This prevents unexpected
+  * behavior with expressions involving random matrices.
+  * 
+  * \not_reentrant
+  *
+  * \sa DenseBase::setRandom(), DenseBase::Random(Index,Index), DenseBase::Random(Index)
+  */
+template<typename Derived>
+inline const typename DenseBase<Derived>::RandomReturnType
+DenseBase<Derived>::Random()
+{
+  return NullaryExpr(RowsAtCompileTime, ColsAtCompileTime, internal::scalar_random_op<Scalar>());
+}
+
+/** Sets all coefficients in this expression to random values.
+  *
+  * Numbers are uniformly spread through their whole definition range for integer types,
+  * and in the [-1:1] range for floating point scalar types.
+  * 
+  * \not_reentrant
+  * 
+  * Example: \include MatrixBase_setRandom.cpp
+  * Output: \verbinclude MatrixBase_setRandom.out
+  *
+  * \sa class CwiseNullaryOp, setRandom(Index), setRandom(Index,Index)
+  */
+template<typename Derived>
+inline Derived& DenseBase<Derived>::setRandom()
+{
+  return *this = Random(rows(), cols());
+}
+
+/** Resizes to the given \a newSize, and sets all coefficients in this expression to random values.
+  *
+  * Numbers are uniformly spread through their whole definition range for integer types,
+  * and in the [-1:1] range for floating point scalar types.
+  * 
+  * \only_for_vectors
+  * \not_reentrant
+  *
+  * Example: \include Matrix_setRandom_int.cpp
+  * Output: \verbinclude Matrix_setRandom_int.out
+  *
+  * \sa DenseBase::setRandom(), setRandom(Index,Index), class CwiseNullaryOp, DenseBase::Random()
+  */
+template<typename Derived>
+EIGEN_STRONG_INLINE Derived&
+PlainObjectBase<Derived>::setRandom(Index newSize)
+{
+  resize(newSize);
+  return setRandom();
+}
+
+/** Resizes to the given size, and sets all coefficients in this expression to random values.
+  *
+  * Numbers are uniformly spread through their whole definition range for integer types,
+  * and in the [-1:1] range for floating point scalar types.
+  *
+  * \not_reentrant
+  * 
+  * \param rows the new number of rows
+  * \param cols the new number of columns
+  *
+  * Example: \include Matrix_setRandom_int_int.cpp
+  * Output: \verbinclude Matrix_setRandom_int_int.out
+  *
+  * \sa DenseBase::setRandom(), setRandom(Index), class CwiseNullaryOp, DenseBase::Random()
+  */
+template<typename Derived>
+EIGEN_STRONG_INLINE Derived&
+PlainObjectBase<Derived>::setRandom(Index rows, Index cols)
+{
+  resize(rows, cols);
+  return setRandom();
+}
+
+} // end namespace Eigen
+
+#endif // EIGEN_RANDOM_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/EigenBase.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/EigenBase.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/EigenBase.h	(revision 3762)
@@ -0,0 +1,159 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2009 Benoit Jacob <jacob.benoit.1@gmail.com>
+// Copyright (C) 2009 Gael Guennebaud <gael.guennebaud@inria.fr>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_EIGENBASE_H
+#define EIGEN_EIGENBASE_H
+
+namespace Eigen {
+
+/** \class EigenBase
+  * \ingroup Core_Module
+  * 
+  * Common base class for all classes T such that MatrixBase has an operator=(T) and a constructor MatrixBase(T).
+  *
+  * In other words, an EigenBase object is an object that can be copied into a MatrixBase.
+  *
+  * Besides MatrixBase-derived classes, this also includes special matrix classes such as diagonal matrices, etc.
+  *
+  * Notice that this class is trivial, it is only used to disambiguate overloaded functions.
+  *
+  * \sa \blank \ref TopicClassHierarchy
+  */
+template<typename Derived> struct EigenBase
+{
+//   typedef typename internal::plain_matrix_type<Derived>::type PlainObject;
+  
+  /** \brief The interface type of indices
+    * \details To change this, \c \#define the preprocessor symbol \c EIGEN_DEFAULT_DENSE_INDEX_TYPE.
+    * \deprecated Since Eigen 3.3, its usage is deprecated. Use Eigen::Index instead.
+    * \sa StorageIndex, \ref TopicPreprocessorDirectives.
+    */
+  typedef Eigen::Index Index;
+
+  // FIXME is it needed?
+  typedef typename internal::traits<Derived>::StorageKind StorageKind;
+
+  /** \returns a reference to the derived object */
+  EIGEN_DEVICE_FUNC
+  Derived& derived() { return *static_cast<Derived*>(this); }
+  /** \returns a const reference to the derived object */
+  EIGEN_DEVICE_FUNC
+  const Derived& derived() const { return *static_cast<const Derived*>(this); }
+
+  EIGEN_DEVICE_FUNC
+  inline Derived& const_cast_derived() const
+  { return *static_cast<Derived*>(const_cast<EigenBase*>(this)); }
+  EIGEN_DEVICE_FUNC
+  inline const Derived& const_derived() const
+  { return *static_cast<const Derived*>(this); }
+
+  /** \returns the number of rows. \sa cols(), RowsAtCompileTime */
+  EIGEN_DEVICE_FUNC
+  inline Index rows() const { return derived().rows(); }
+  /** \returns the number of columns. \sa rows(), ColsAtCompileTime*/
+  EIGEN_DEVICE_FUNC
+  inline Index cols() const { return derived().cols(); }
+  /** \returns the number of coefficients, which is rows()*cols().
+    * \sa rows(), cols(), SizeAtCompileTime. */
+  EIGEN_DEVICE_FUNC
+  inline Index size() const { return rows() * cols(); }
+
+  /** \internal Don't use it, but do the equivalent: \code dst = *this; \endcode */
+  template<typename Dest>
+  EIGEN_DEVICE_FUNC
+  inline void evalTo(Dest& dst) const
+  { derived().evalTo(dst); }
+
+  /** \internal Don't use it, but do the equivalent: \code dst += *this; \endcode */
+  template<typename Dest>
+  EIGEN_DEVICE_FUNC
+  inline void addTo(Dest& dst) const
+  {
+    // This is the default implementation,
+    // derived class can reimplement it in a more optimized way.
+    typename Dest::PlainObject res(rows(),cols());
+    evalTo(res);
+    dst += res;
+  }
+
+  /** \internal Don't use it, but do the equivalent: \code dst -= *this; \endcode */
+  template<typename Dest>
+  EIGEN_DEVICE_FUNC
+  inline void subTo(Dest& dst) const
+  {
+    // This is the default implementation,
+    // derived class can reimplement it in a more optimized way.
+    typename Dest::PlainObject res(rows(),cols());
+    evalTo(res);
+    dst -= res;
+  }
+
+  /** \internal Don't use it, but do the equivalent: \code dst.applyOnTheRight(*this); \endcode */
+  template<typename Dest>
+  EIGEN_DEVICE_FUNC inline void applyThisOnTheRight(Dest& dst) const
+  {
+    // This is the default implementation,
+    // derived class can reimplement it in a more optimized way.
+    dst = dst * this->derived();
+  }
+
+  /** \internal Don't use it, but do the equivalent: \code dst.applyOnTheLeft(*this); \endcode */
+  template<typename Dest>
+  EIGEN_DEVICE_FUNC inline void applyThisOnTheLeft(Dest& dst) const
+  {
+    // This is the default implementation,
+    // derived class can reimplement it in a more optimized way.
+    dst = this->derived() * dst;
+  }
+
+};
+
+/***************************************************************************
+* Implementation of matrix base methods
+***************************************************************************/
+
+/** \brief Copies the generic expression \a other into *this.
+  *
+  * \details The expression must provide a (templated) evalTo(Derived& dst) const
+  * function which does the actual job. In practice, this allows any user to write
+  * its own special matrix without having to modify MatrixBase
+  *
+  * \returns a reference to *this.
+  */
+template<typename Derived>
+template<typename OtherDerived>
+EIGEN_DEVICE_FUNC
+Derived& DenseBase<Derived>::operator=(const EigenBase<OtherDerived> &other)
+{
+  call_assignment(derived(), other.derived());
+  return derived();
+}
+
+template<typename Derived>
+template<typename OtherDerived>
+EIGEN_DEVICE_FUNC
+Derived& DenseBase<Derived>::operator+=(const EigenBase<OtherDerived> &other)
+{
+  call_assignment(derived(), other.derived(), internal::add_assign_op<Scalar,typename OtherDerived::Scalar>());
+  return derived();
+}
+
+template<typename Derived>
+template<typename OtherDerived>
+EIGEN_DEVICE_FUNC
+Derived& DenseBase<Derived>::operator-=(const EigenBase<OtherDerived> &other)
+{
+  call_assignment(derived(), other.derived(), internal::sub_assign_op<Scalar,typename OtherDerived::Scalar>());
+  return derived();
+}
+
+} // end namespace Eigen
+
+#endif // EIGEN_EIGENBASE_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/Assign.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/Assign.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/Assign.h	(revision 3762)
@@ -0,0 +1,90 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2007 Michael Olbrich <michael.olbrich@gmx.net>
+// Copyright (C) 2006-2010 Benoit Jacob <jacob.benoit.1@gmail.com>
+// Copyright (C) 2008 Gael Guennebaud <gael.guennebaud@inria.fr>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_ASSIGN_H
+#define EIGEN_ASSIGN_H
+
+namespace Eigen {
+
+template<typename Derived>
+template<typename OtherDerived>
+EIGEN_STRONG_INLINE Derived& DenseBase<Derived>
+  ::lazyAssign(const DenseBase<OtherDerived>& other)
+{
+  enum{
+    SameType = internal::is_same<typename Derived::Scalar,typename OtherDerived::Scalar>::value
+  };
+
+  EIGEN_STATIC_ASSERT_LVALUE(Derived)
+  EIGEN_STATIC_ASSERT_SAME_MATRIX_SIZE(Derived,OtherDerived)
+  EIGEN_STATIC_ASSERT(SameType,YOU_MIXED_DIFFERENT_NUMERIC_TYPES__YOU_NEED_TO_USE_THE_CAST_METHOD_OF_MATRIXBASE_TO_CAST_NUMERIC_TYPES_EXPLICITLY)
+
+  eigen_assert(rows() == other.rows() && cols() == other.cols());
+  internal::call_assignment_no_alias(derived(),other.derived());
+  
+  return derived();
+}
+
+template<typename Derived>
+template<typename OtherDerived>
+EIGEN_DEVICE_FUNC
+EIGEN_STRONG_INLINE Derived& DenseBase<Derived>::operator=(const DenseBase<OtherDerived>& other)
+{
+  internal::call_assignment(derived(), other.derived());
+  return derived();
+}
+
+template<typename Derived>
+EIGEN_DEVICE_FUNC
+EIGEN_STRONG_INLINE Derived& DenseBase<Derived>::operator=(const DenseBase& other)
+{
+  internal::call_assignment(derived(), other.derived());
+  return derived();
+}
+
+template<typename Derived>
+EIGEN_DEVICE_FUNC
+EIGEN_STRONG_INLINE Derived& MatrixBase<Derived>::operator=(const MatrixBase& other)
+{
+  internal::call_assignment(derived(), other.derived());
+  return derived();
+}
+
+template<typename Derived>
+template <typename OtherDerived>
+EIGEN_DEVICE_FUNC
+EIGEN_STRONG_INLINE Derived& MatrixBase<Derived>::operator=(const DenseBase<OtherDerived>& other)
+{
+  internal::call_assignment(derived(), other.derived());
+  return derived();
+}
+
+template<typename Derived>
+template <typename OtherDerived>
+EIGEN_DEVICE_FUNC
+EIGEN_STRONG_INLINE Derived& MatrixBase<Derived>::operator=(const EigenBase<OtherDerived>& other)
+{
+  internal::call_assignment(derived(), other.derived());
+  return derived();
+}
+
+template<typename Derived>
+template<typename OtherDerived>
+EIGEN_DEVICE_FUNC
+EIGEN_STRONG_INLINE Derived& MatrixBase<Derived>::operator=(const ReturnByValue<OtherDerived>& other)
+{
+  other.derived().evalTo(derived());
+  return derived();
+}
+
+} // end namespace Eigen
+
+#endif // EIGEN_ASSIGN_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/PlainObjectBase.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/PlainObjectBase.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/PlainObjectBase.h	(revision 3762)
@@ -0,0 +1,1037 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2008-2009 Gael Guennebaud <gael.guennebaud@inria.fr>
+// Copyright (C) 2006-2008 Benoit Jacob <jacob.benoit.1@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_DENSESTORAGEBASE_H
+#define EIGEN_DENSESTORAGEBASE_H
+
+#if defined(EIGEN_INITIALIZE_MATRICES_BY_ZERO)
+# define EIGEN_INITIALIZE_COEFFS
+# define EIGEN_INITIALIZE_COEFFS_IF_THAT_OPTION_IS_ENABLED for(int i=0;i<base().size();++i) coeffRef(i)=Scalar(0);
+#elif defined(EIGEN_INITIALIZE_MATRICES_BY_NAN)
+# define EIGEN_INITIALIZE_COEFFS
+# define EIGEN_INITIALIZE_COEFFS_IF_THAT_OPTION_IS_ENABLED for(int i=0;i<base().size();++i) coeffRef(i)=std::numeric_limits<Scalar>::quiet_NaN();
+#else
+# undef EIGEN_INITIALIZE_COEFFS
+# define EIGEN_INITIALIZE_COEFFS_IF_THAT_OPTION_IS_ENABLED
+#endif
+
+namespace Eigen {
+
+namespace internal {
+
+template<int MaxSizeAtCompileTime> struct check_rows_cols_for_overflow {
+  template<typename Index>
+  EIGEN_DEVICE_FUNC
+  static EIGEN_ALWAYS_INLINE void run(Index, Index)
+  {
+  }
+};
+
+template<> struct check_rows_cols_for_overflow<Dynamic> {
+  template<typename Index>
+  EIGEN_DEVICE_FUNC
+  static EIGEN_ALWAYS_INLINE void run(Index rows, Index cols)
+  {
+    // http://hg.mozilla.org/mozilla-central/file/6c8a909977d3/xpcom/ds/CheckedInt.h#l242
+    // we assume Index is signed
+    Index max_index = (std::size_t(1) << (8 * sizeof(Index) - 1)) - 1; // assume Index is signed
+    bool error = (rows == 0 || cols == 0) ? false
+               : (rows > max_index / cols);
+    if (error)
+      throw_std_bad_alloc();
+  }
+};
+
+template <typename Derived,
+          typename OtherDerived = Derived,
+          bool IsVector = bool(Derived::IsVectorAtCompileTime) && bool(OtherDerived::IsVectorAtCompileTime)>
+struct conservative_resize_like_impl;
+
+template<typename MatrixTypeA, typename MatrixTypeB, bool SwapPointers> struct matrix_swap_impl;
+
+} // end namespace internal
+
+#ifdef EIGEN_PARSED_BY_DOXYGEN
+namespace doxygen {
+
+// This is a workaround to doxygen not being able to understand the inheritance logic
+// when it is hidden by the dense_xpr_base helper struct.
+// Moreover, doxygen fails to include members that are not documented in the declaration body of
+// MatrixBase if we inherits MatrixBase<Matrix<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols> >,
+// this is why we simply inherits MatrixBase, though this does not make sense.
+
+/** This class is just a workaround for Doxygen and it does not not actually exist. */
+template<typename Derived> struct dense_xpr_base_dispatcher;
+/** This class is just a workaround for Doxygen and it does not not actually exist. */
+template<typename _Scalar, int _Rows, int _Cols, int _Options, int _MaxRows, int _MaxCols>
+struct dense_xpr_base_dispatcher<Matrix<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols> >
+    : public MatrixBase {};
+/** This class is just a workaround for Doxygen and it does not not actually exist. */
+template<typename _Scalar, int _Rows, int _Cols, int _Options, int _MaxRows, int _MaxCols>
+struct dense_xpr_base_dispatcher<Array<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols> >
+    : public ArrayBase {};
+
+} // namespace doxygen
+
+/** \class PlainObjectBase
+  * \ingroup Core_Module
+  * \brief %Dense storage base class for matrices and arrays.
+  *
+  * This class can be extended with the help of the plugin mechanism described on the page
+  * \ref TopicCustomizing_Plugins by defining the preprocessor symbol \c EIGEN_PLAINOBJECTBASE_PLUGIN.
+  *
+  * \tparam Derived is the derived type, e.g., a Matrix or Array
+  *
+  * \sa \ref TopicClassHierarchy
+  */
+template<typename Derived>
+class PlainObjectBase : public doxygen::dense_xpr_base_dispatcher<Derived>
+#else
+template<typename Derived>
+class PlainObjectBase : public internal::dense_xpr_base<Derived>::type
+#endif
+{
+  public:
+    enum { Options = internal::traits<Derived>::Options };
+    typedef typename internal::dense_xpr_base<Derived>::type Base;
+
+    typedef typename internal::traits<Derived>::StorageKind StorageKind;
+    typedef typename internal::traits<Derived>::Scalar Scalar;
+    
+    typedef typename internal::packet_traits<Scalar>::type PacketScalar;
+    typedef typename NumTraits<Scalar>::Real RealScalar;
+    typedef Derived DenseType;
+
+    using Base::RowsAtCompileTime;
+    using Base::ColsAtCompileTime;
+    using Base::SizeAtCompileTime;
+    using Base::MaxRowsAtCompileTime;
+    using Base::MaxColsAtCompileTime;
+    using Base::MaxSizeAtCompileTime;
+    using Base::IsVectorAtCompileTime;
+    using Base::Flags;
+
+    template<typename PlainObjectType, int MapOptions, typename StrideType> friend class Eigen::Map;
+    friend  class Eigen::Map<Derived, Unaligned>;
+    typedef Eigen::Map<Derived, Unaligned>  MapType;
+    friend  class Eigen::Map<const Derived, Unaligned>;
+    typedef const Eigen::Map<const Derived, Unaligned> ConstMapType;
+#if EIGEN_MAX_ALIGN_BYTES>0
+    // for EIGEN_MAX_ALIGN_BYTES==0, AlignedMax==Unaligned, and many compilers generate warnings for friend-ing a class twice.
+    friend  class Eigen::Map<Derived, AlignedMax>;
+    friend  class Eigen::Map<const Derived, AlignedMax>;
+#endif
+    typedef Eigen::Map<Derived, AlignedMax> AlignedMapType;
+    typedef const Eigen::Map<const Derived, AlignedMax> ConstAlignedMapType;
+    template<typename StrideType> struct StridedMapType { typedef Eigen::Map<Derived, Unaligned, StrideType> type; };
+    template<typename StrideType> struct StridedConstMapType { typedef Eigen::Map<const Derived, Unaligned, StrideType> type; };
+    template<typename StrideType> struct StridedAlignedMapType { typedef Eigen::Map<Derived, AlignedMax, StrideType> type; };
+    template<typename StrideType> struct StridedConstAlignedMapType { typedef Eigen::Map<const Derived, AlignedMax, StrideType> type; };
+
+  protected:
+    DenseStorage<Scalar, Base::MaxSizeAtCompileTime, Base::RowsAtCompileTime, Base::ColsAtCompileTime, Options> m_storage;
+
+  public:
+    enum { NeedsToAlign = (SizeAtCompileTime != Dynamic) && (internal::traits<Derived>::Alignment>0) };
+    EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF(NeedsToAlign)
+
+    EIGEN_DEVICE_FUNC
+    Base& base() { return *static_cast<Base*>(this); }
+    EIGEN_DEVICE_FUNC
+    const Base& base() const { return *static_cast<const Base*>(this); }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Index rows() const { return m_storage.rows(); }
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Index cols() const { return m_storage.cols(); }
+
+    /** This is an overloaded version of DenseCoeffsBase<Derived,ReadOnlyAccessors>::coeff(Index,Index) const
+      * provided to by-pass the creation of an evaluator of the expression, thus saving compilation efforts.
+      *
+      * See DenseCoeffsBase<Derived,ReadOnlyAccessors>::coeff(Index) const for details. */
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const Scalar& coeff(Index rowId, Index colId) const
+    {
+      if(Flags & RowMajorBit)
+        return m_storage.data()[colId + rowId * m_storage.cols()];
+      else // column-major
+        return m_storage.data()[rowId + colId * m_storage.rows()];
+    }
+
+    /** This is an overloaded version of DenseCoeffsBase<Derived,ReadOnlyAccessors>::coeff(Index) const
+      * provided to by-pass the creation of an evaluator of the expression, thus saving compilation efforts.
+      *
+      * See DenseCoeffsBase<Derived,ReadOnlyAccessors>::coeff(Index) const for details. */
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const Scalar& coeff(Index index) const
+    {
+      return m_storage.data()[index];
+    }
+
+    /** This is an overloaded version of DenseCoeffsBase<Derived,WriteAccessors>::coeffRef(Index,Index) const
+      * provided to by-pass the creation of an evaluator of the expression, thus saving compilation efforts.
+      *
+      * See DenseCoeffsBase<Derived,WriteAccessors>::coeffRef(Index,Index) const for details. */
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Scalar& coeffRef(Index rowId, Index colId)
+    {
+      if(Flags & RowMajorBit)
+        return m_storage.data()[colId + rowId * m_storage.cols()];
+      else // column-major
+        return m_storage.data()[rowId + colId * m_storage.rows()];
+    }
+
+    /** This is an overloaded version of DenseCoeffsBase<Derived,WriteAccessors>::coeffRef(Index) const
+      * provided to by-pass the creation of an evaluator of the expression, thus saving compilation efforts.
+      *
+      * See DenseCoeffsBase<Derived,WriteAccessors>::coeffRef(Index) const for details. */
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Scalar& coeffRef(Index index)
+    {
+      return m_storage.data()[index];
+    }
+
+    /** This is the const version of coeffRef(Index,Index) which is thus synonym of coeff(Index,Index).
+      * It is provided for convenience. */
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const Scalar& coeffRef(Index rowId, Index colId) const
+    {
+      if(Flags & RowMajorBit)
+        return m_storage.data()[colId + rowId * m_storage.cols()];
+      else // column-major
+        return m_storage.data()[rowId + colId * m_storage.rows()];
+    }
+
+    /** This is the const version of coeffRef(Index) which is thus synonym of coeff(Index).
+      * It is provided for convenience. */
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const Scalar& coeffRef(Index index) const
+    {
+      return m_storage.data()[index];
+    }
+
+    /** \internal */
+    template<int LoadMode>
+    EIGEN_STRONG_INLINE PacketScalar packet(Index rowId, Index colId) const
+    {
+      return internal::ploadt<PacketScalar, LoadMode>
+               (m_storage.data() + (Flags & RowMajorBit
+                                   ? colId + rowId * m_storage.cols()
+                                   : rowId + colId * m_storage.rows()));
+    }
+
+    /** \internal */
+    template<int LoadMode>
+    EIGEN_STRONG_INLINE PacketScalar packet(Index index) const
+    {
+      return internal::ploadt<PacketScalar, LoadMode>(m_storage.data() + index);
+    }
+
+    /** \internal */
+    template<int StoreMode>
+    EIGEN_STRONG_INLINE void writePacket(Index rowId, Index colId, const PacketScalar& val)
+    {
+      internal::pstoret<Scalar, PacketScalar, StoreMode>
+              (m_storage.data() + (Flags & RowMajorBit
+                                   ? colId + rowId * m_storage.cols()
+                                   : rowId + colId * m_storage.rows()), val);
+    }
+
+    /** \internal */
+    template<int StoreMode>
+    EIGEN_STRONG_INLINE void writePacket(Index index, const PacketScalar& val)
+    {
+      internal::pstoret<Scalar, PacketScalar, StoreMode>(m_storage.data() + index, val);
+    }
+
+    /** \returns a const pointer to the data array of this matrix */
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Scalar *data() const
+    { return m_storage.data(); }
+
+    /** \returns a pointer to the data array of this matrix */
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar *data()
+    { return m_storage.data(); }
+
+    /** Resizes \c *this to a \a rows x \a cols matrix.
+      *
+      * This method is intended for dynamic-size matrices, although it is legal to call it on any
+      * matrix as long as fixed dimensions are left unchanged. If you only want to change the number
+      * of rows and/or of columns, you can use resize(NoChange_t, Index), resize(Index, NoChange_t).
+      *
+      * If the current number of coefficients of \c *this exactly matches the
+      * product \a rows * \a cols, then no memory allocation is performed and
+      * the current values are left unchanged. In all other cases, including
+      * shrinking, the data is reallocated and all previous values are lost.
+      *
+      * Example: \include Matrix_resize_int_int.cpp
+      * Output: \verbinclude Matrix_resize_int_int.out
+      *
+      * \sa resize(Index) for vectors, resize(NoChange_t, Index), resize(Index, NoChange_t)
+      */
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE void resize(Index rows, Index cols)
+    {
+      eigen_assert(   EIGEN_IMPLIES(RowsAtCompileTime!=Dynamic,rows==RowsAtCompileTime)
+                   && EIGEN_IMPLIES(ColsAtCompileTime!=Dynamic,cols==ColsAtCompileTime)
+                   && EIGEN_IMPLIES(RowsAtCompileTime==Dynamic && MaxRowsAtCompileTime!=Dynamic,rows<=MaxRowsAtCompileTime)
+                   && EIGEN_IMPLIES(ColsAtCompileTime==Dynamic && MaxColsAtCompileTime!=Dynamic,cols<=MaxColsAtCompileTime)
+                   && rows>=0 && cols>=0 && "Invalid sizes when resizing a matrix or array.");
+      internal::check_rows_cols_for_overflow<MaxSizeAtCompileTime>::run(rows, cols);
+      #ifdef EIGEN_INITIALIZE_COEFFS
+        Index size = rows*cols;
+        bool size_changed = size != this->size();
+        m_storage.resize(size, rows, cols);
+        if(size_changed) EIGEN_INITIALIZE_COEFFS_IF_THAT_OPTION_IS_ENABLED
+      #else
+        m_storage.resize(rows*cols, rows, cols);
+      #endif
+    }
+
+    /** Resizes \c *this to a vector of length \a size
+      *
+      * \only_for_vectors. This method does not work for
+      * partially dynamic matrices when the static dimension is anything other
+      * than 1. For example it will not work with Matrix<double, 2, Dynamic>.
+      *
+      * Example: \include Matrix_resize_int.cpp
+      * Output: \verbinclude Matrix_resize_int.out
+      *
+      * \sa resize(Index,Index), resize(NoChange_t, Index), resize(Index, NoChange_t)
+      */
+    EIGEN_DEVICE_FUNC
+    inline void resize(Index size)
+    {
+      EIGEN_STATIC_ASSERT_VECTOR_ONLY(PlainObjectBase)
+      eigen_assert(((SizeAtCompileTime == Dynamic && (MaxSizeAtCompileTime==Dynamic || size<=MaxSizeAtCompileTime)) || SizeAtCompileTime == size) && size>=0);
+      #ifdef EIGEN_INITIALIZE_COEFFS
+        bool size_changed = size != this->size();
+      #endif
+      if(RowsAtCompileTime == 1)
+        m_storage.resize(size, 1, size);
+      else
+        m_storage.resize(size, size, 1);
+      #ifdef EIGEN_INITIALIZE_COEFFS
+        if(size_changed) EIGEN_INITIALIZE_COEFFS_IF_THAT_OPTION_IS_ENABLED
+      #endif
+    }
+
+    /** Resizes the matrix, changing only the number of columns. For the parameter of type NoChange_t, just pass the special value \c NoChange
+      * as in the example below.
+      *
+      * Example: \include Matrix_resize_NoChange_int.cpp
+      * Output: \verbinclude Matrix_resize_NoChange_int.out
+      *
+      * \sa resize(Index,Index)
+      */
+    EIGEN_DEVICE_FUNC
+    inline void resize(NoChange_t, Index cols)
+    {
+      resize(rows(), cols);
+    }
+
+    /** Resizes the matrix, changing only the number of rows. For the parameter of type NoChange_t, just pass the special value \c NoChange
+      * as in the example below.
+      *
+      * Example: \include Matrix_resize_int_NoChange.cpp
+      * Output: \verbinclude Matrix_resize_int_NoChange.out
+      *
+      * \sa resize(Index,Index)
+      */
+    EIGEN_DEVICE_FUNC
+    inline void resize(Index rows, NoChange_t)
+    {
+      resize(rows, cols());
+    }
+
+    /** Resizes \c *this to have the same dimensions as \a other.
+      * Takes care of doing all the checking that's needed.
+      *
+      * Note that copying a row-vector into a vector (and conversely) is allowed.
+      * The resizing, if any, is then done in the appropriate way so that row-vectors
+      * remain row-vectors and vectors remain vectors.
+      */
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC 
+    EIGEN_STRONG_INLINE void resizeLike(const EigenBase<OtherDerived>& _other)
+    {
+      const OtherDerived& other = _other.derived();
+      internal::check_rows_cols_for_overflow<MaxSizeAtCompileTime>::run(other.rows(), other.cols());
+      const Index othersize = other.rows()*other.cols();
+      if(RowsAtCompileTime == 1)
+      {
+        eigen_assert(other.rows() == 1 || other.cols() == 1);
+        resize(1, othersize);
+      }
+      else if(ColsAtCompileTime == 1)
+      {
+        eigen_assert(other.rows() == 1 || other.cols() == 1);
+        resize(othersize, 1);
+      }
+      else resize(other.rows(), other.cols());
+    }
+
+    /** Resizes the matrix to \a rows x \a cols while leaving old values untouched.
+      *
+      * The method is intended for matrices of dynamic size. If you only want to change the number
+      * of rows and/or of columns, you can use conservativeResize(NoChange_t, Index) or
+      * conservativeResize(Index, NoChange_t).
+      *
+      * Matrices are resized relative to the top-left element. In case values need to be 
+      * appended to the matrix they will be uninitialized.
+      */
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE void conservativeResize(Index rows, Index cols)
+    {
+      internal::conservative_resize_like_impl<Derived>::run(*this, rows, cols);
+    }
+
+    /** Resizes the matrix to \a rows x \a cols while leaving old values untouched.
+      *
+      * As opposed to conservativeResize(Index rows, Index cols), this version leaves
+      * the number of columns unchanged.
+      *
+      * In case the matrix is growing, new rows will be uninitialized.
+      */
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE void conservativeResize(Index rows, NoChange_t)
+    {
+      // Note: see the comment in conservativeResize(Index,Index)
+      conservativeResize(rows, cols());
+    }
+
+    /** Resizes the matrix to \a rows x \a cols while leaving old values untouched.
+      *
+      * As opposed to conservativeResize(Index rows, Index cols), this version leaves
+      * the number of rows unchanged.
+      *
+      * In case the matrix is growing, new columns will be uninitialized.
+      */
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE void conservativeResize(NoChange_t, Index cols)
+    {
+      // Note: see the comment in conservativeResize(Index,Index)
+      conservativeResize(rows(), cols);
+    }
+
+    /** Resizes the vector to \a size while retaining old values.
+      *
+      * \only_for_vectors. This method does not work for
+      * partially dynamic matrices when the static dimension is anything other
+      * than 1. For example it will not work with Matrix<double, 2, Dynamic>.
+      *
+      * When values are appended, they will be uninitialized.
+      */
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE void conservativeResize(Index size)
+    {
+      internal::conservative_resize_like_impl<Derived>::run(*this, size);
+    }
+
+    /** Resizes the matrix to \a rows x \a cols of \c other, while leaving old values untouched.
+      *
+      * The method is intended for matrices of dynamic size. If you only want to change the number
+      * of rows and/or of columns, you can use conservativeResize(NoChange_t, Index) or
+      * conservativeResize(Index, NoChange_t).
+      *
+      * Matrices are resized relative to the top-left element. In case values need to be 
+      * appended to the matrix they will copied from \c other.
+      */
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE void conservativeResizeLike(const DenseBase<OtherDerived>& other)
+    {
+      internal::conservative_resize_like_impl<Derived,OtherDerived>::run(*this, other);
+    }
+
+    /** This is a special case of the templated operator=. Its purpose is to
+      * prevent a default operator= from hiding the templated operator=.
+      */
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Derived& operator=(const PlainObjectBase& other)
+    {
+      return _set(other);
+    }
+
+    /** \sa MatrixBase::lazyAssign() */
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Derived& lazyAssign(const DenseBase<OtherDerived>& other)
+    {
+      _resize_to_match(other);
+      return Base::lazyAssign(other.derived());
+    }
+
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Derived& operator=(const ReturnByValue<OtherDerived>& func)
+    {
+      resize(func.rows(), func.cols());
+      return Base::operator=(func);
+    }
+
+    // Prevent user from trying to instantiate PlainObjectBase objects
+    // by making all its constructor protected. See bug 1074.
+  protected:
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE PlainObjectBase() : m_storage()
+    {
+//       _check_template_params();
+//       EIGEN_INITIALIZE_COEFFS_IF_THAT_OPTION_IS_ENABLED
+    }
+
+#ifndef EIGEN_PARSED_BY_DOXYGEN
+    // FIXME is it still needed ?
+    /** \internal */
+    EIGEN_DEVICE_FUNC
+    explicit PlainObjectBase(internal::constructor_without_unaligned_array_assert)
+      : m_storage(internal::constructor_without_unaligned_array_assert())
+    {
+//       _check_template_params(); EIGEN_INITIALIZE_COEFFS_IF_THAT_OPTION_IS_ENABLED
+    }
+#endif
+
+#if EIGEN_HAS_RVALUE_REFERENCES
+    EIGEN_DEVICE_FUNC
+    PlainObjectBase(PlainObjectBase&& other) EIGEN_NOEXCEPT
+      : m_storage( std::move(other.m_storage) )
+    {
+    }
+
+    EIGEN_DEVICE_FUNC
+    PlainObjectBase& operator=(PlainObjectBase&& other) EIGEN_NOEXCEPT
+    {
+      using std::swap;
+      swap(m_storage, other.m_storage);
+      return *this;
+    }
+#endif
+
+    /** Copy constructor */
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE PlainObjectBase(const PlainObjectBase& other)
+      : Base(), m_storage(other.m_storage) { }
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE PlainObjectBase(Index size, Index rows, Index cols)
+      : m_storage(size, rows, cols)
+    {
+//       _check_template_params();
+//       EIGEN_INITIALIZE_COEFFS_IF_THAT_OPTION_IS_ENABLED
+    }
+
+    /** \sa PlainObjectBase::operator=(const EigenBase<OtherDerived>&) */
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE PlainObjectBase(const DenseBase<OtherDerived> &other)
+      : m_storage()
+    {
+      _check_template_params();
+      resizeLike(other);
+      _set_noalias(other);
+    }
+
+    /** \sa PlainObjectBase::operator=(const EigenBase<OtherDerived>&) */
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE PlainObjectBase(const EigenBase<OtherDerived> &other)
+      : m_storage()
+    {
+      _check_template_params();
+      resizeLike(other);
+      *this = other.derived();
+    }
+    /** \brief Copy constructor with in-place evaluation */
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE PlainObjectBase(const ReturnByValue<OtherDerived>& other)
+    {
+      _check_template_params();
+      // FIXME this does not automatically transpose vectors if necessary
+      resize(other.rows(), other.cols());
+      other.evalTo(this->derived());
+    }
+
+  public:
+
+    /** \brief Copies the generic expression \a other into *this.
+      * \copydetails DenseBase::operator=(const EigenBase<OtherDerived> &other)
+      */
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC 
+    EIGEN_STRONG_INLINE Derived& operator=(const EigenBase<OtherDerived> &other)
+    {
+      _resize_to_match(other);
+      Base::operator=(other.derived());
+      return this->derived();
+    }
+
+    /** \name Map
+      * These are convenience functions returning Map objects. The Map() static functions return unaligned Map objects,
+      * while the AlignedMap() functions return aligned Map objects and thus should be called only with 16-byte-aligned
+      * \a data pointers.
+      *
+      * Here is an example using strides:
+      * \include Matrix_Map_stride.cpp
+      * Output: \verbinclude Matrix_Map_stride.out
+      *
+      * \see class Map
+      */
+    //@{
+    static inline ConstMapType Map(const Scalar* data)
+    { return ConstMapType(data); }
+    static inline MapType Map(Scalar* data)
+    { return MapType(data); }
+    static inline ConstMapType Map(const Scalar* data, Index size)
+    { return ConstMapType(data, size); }
+    static inline MapType Map(Scalar* data, Index size)
+    { return MapType(data, size); }
+    static inline ConstMapType Map(const Scalar* data, Index rows, Index cols)
+    { return ConstMapType(data, rows, cols); }
+    static inline MapType Map(Scalar* data, Index rows, Index cols)
+    { return MapType(data, rows, cols); }
+
+    static inline ConstAlignedMapType MapAligned(const Scalar* data)
+    { return ConstAlignedMapType(data); }
+    static inline AlignedMapType MapAligned(Scalar* data)
+    { return AlignedMapType(data); }
+    static inline ConstAlignedMapType MapAligned(const Scalar* data, Index size)
+    { return ConstAlignedMapType(data, size); }
+    static inline AlignedMapType MapAligned(Scalar* data, Index size)
+    { return AlignedMapType(data, size); }
+    static inline ConstAlignedMapType MapAligned(const Scalar* data, Index rows, Index cols)
+    { return ConstAlignedMapType(data, rows, cols); }
+    static inline AlignedMapType MapAligned(Scalar* data, Index rows, Index cols)
+    { return AlignedMapType(data, rows, cols); }
+
+    template<int Outer, int Inner>
+    static inline typename StridedConstMapType<Stride<Outer, Inner> >::type Map(const Scalar* data, const Stride<Outer, Inner>& stride)
+    { return typename StridedConstMapType<Stride<Outer, Inner> >::type(data, stride); }
+    template<int Outer, int Inner>
+    static inline typename StridedMapType<Stride<Outer, Inner> >::type Map(Scalar* data, const Stride<Outer, Inner>& stride)
+    { return typename StridedMapType<Stride<Outer, Inner> >::type(data, stride); }
+    template<int Outer, int Inner>
+    static inline typename StridedConstMapType<Stride<Outer, Inner> >::type Map(const Scalar* data, Index size, const Stride<Outer, Inner>& stride)
+    { return typename StridedConstMapType<Stride<Outer, Inner> >::type(data, size, stride); }
+    template<int Outer, int Inner>
+    static inline typename StridedMapType<Stride<Outer, Inner> >::type Map(Scalar* data, Index size, const Stride<Outer, Inner>& stride)
+    { return typename StridedMapType<Stride<Outer, Inner> >::type(data, size, stride); }
+    template<int Outer, int Inner>
+    static inline typename StridedConstMapType<Stride<Outer, Inner> >::type Map(const Scalar* data, Index rows, Index cols, const Stride<Outer, Inner>& stride)
+    { return typename StridedConstMapType<Stride<Outer, Inner> >::type(data, rows, cols, stride); }
+    template<int Outer, int Inner>
+    static inline typename StridedMapType<Stride<Outer, Inner> >::type Map(Scalar* data, Index rows, Index cols, const Stride<Outer, Inner>& stride)
+    { return typename StridedMapType<Stride<Outer, Inner> >::type(data, rows, cols, stride); }
+
+    template<int Outer, int Inner>
+    static inline typename StridedConstAlignedMapType<Stride<Outer, Inner> >::type MapAligned(const Scalar* data, const Stride<Outer, Inner>& stride)
+    { return typename StridedConstAlignedMapType<Stride<Outer, Inner> >::type(data, stride); }
+    template<int Outer, int Inner>
+    static inline typename StridedAlignedMapType<Stride<Outer, Inner> >::type MapAligned(Scalar* data, const Stride<Outer, Inner>& stride)
+    { return typename StridedAlignedMapType<Stride<Outer, Inner> >::type(data, stride); }
+    template<int Outer, int Inner>
+    static inline typename StridedConstAlignedMapType<Stride<Outer, Inner> >::type MapAligned(const Scalar* data, Index size, const Stride<Outer, Inner>& stride)
+    { return typename StridedConstAlignedMapType<Stride<Outer, Inner> >::type(data, size, stride); }
+    template<int Outer, int Inner>
+    static inline typename StridedAlignedMapType<Stride<Outer, Inner> >::type MapAligned(Scalar* data, Index size, const Stride<Outer, Inner>& stride)
+    { return typename StridedAlignedMapType<Stride<Outer, Inner> >::type(data, size, stride); }
+    template<int Outer, int Inner>
+    static inline typename StridedConstAlignedMapType<Stride<Outer, Inner> >::type MapAligned(const Scalar* data, Index rows, Index cols, const Stride<Outer, Inner>& stride)
+    { return typename StridedConstAlignedMapType<Stride<Outer, Inner> >::type(data, rows, cols, stride); }
+    template<int Outer, int Inner>
+    static inline typename StridedAlignedMapType<Stride<Outer, Inner> >::type MapAligned(Scalar* data, Index rows, Index cols, const Stride<Outer, Inner>& stride)
+    { return typename StridedAlignedMapType<Stride<Outer, Inner> >::type(data, rows, cols, stride); }
+    //@}
+
+    using Base::setConstant;
+    EIGEN_DEVICE_FUNC Derived& setConstant(Index size, const Scalar& val);
+    EIGEN_DEVICE_FUNC Derived& setConstant(Index rows, Index cols, const Scalar& val);
+
+    using Base::setZero;
+    EIGEN_DEVICE_FUNC Derived& setZero(Index size);
+    EIGEN_DEVICE_FUNC Derived& setZero(Index rows, Index cols);
+
+    using Base::setOnes;
+    EIGEN_DEVICE_FUNC Derived& setOnes(Index size);
+    EIGEN_DEVICE_FUNC Derived& setOnes(Index rows, Index cols);
+
+    using Base::setRandom;
+    Derived& setRandom(Index size);
+    Derived& setRandom(Index rows, Index cols);
+
+    #ifdef EIGEN_PLAINOBJECTBASE_PLUGIN
+    #include EIGEN_PLAINOBJECTBASE_PLUGIN
+    #endif
+
+  protected:
+    /** \internal Resizes *this in preparation for assigning \a other to it.
+      * Takes care of doing all the checking that's needed.
+      *
+      * Note that copying a row-vector into a vector (and conversely) is allowed.
+      * The resizing, if any, is then done in the appropriate way so that row-vectors
+      * remain row-vectors and vectors remain vectors.
+      */
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC 
+    EIGEN_STRONG_INLINE void _resize_to_match(const EigenBase<OtherDerived>& other)
+    {
+      #ifdef EIGEN_NO_AUTOMATIC_RESIZING
+      eigen_assert((this->size()==0 || (IsVectorAtCompileTime ? (this->size() == other.size())
+                 : (rows() == other.rows() && cols() == other.cols())))
+        && "Size mismatch. Automatic resizing is disabled because EIGEN_NO_AUTOMATIC_RESIZING is defined");
+      EIGEN_ONLY_USED_FOR_DEBUG(other);
+      #else
+      resizeLike(other);
+      #endif
+    }
+
+    /**
+      * \brief Copies the value of the expression \a other into \c *this with automatic resizing.
+      *
+      * *this might be resized to match the dimensions of \a other. If *this was a null matrix (not already initialized),
+      * it will be initialized.
+      *
+      * Note that copying a row-vector into a vector (and conversely) is allowed.
+      * The resizing, if any, is then done in the appropriate way so that row-vectors
+      * remain row-vectors and vectors remain vectors.
+      *
+      * \sa operator=(const MatrixBase<OtherDerived>&), _set_noalias()
+      *
+      * \internal
+      */
+    // aliasing is dealt once in internall::call_assignment
+    // so at this stage we have to assume aliasing... and resising has to be done later.
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC 
+    EIGEN_STRONG_INLINE Derived& _set(const DenseBase<OtherDerived>& other)
+    {
+      internal::call_assignment(this->derived(), other.derived());
+      return this->derived();
+    }
+
+    /** \internal Like _set() but additionally makes the assumption that no aliasing effect can happen (which
+      * is the case when creating a new matrix) so one can enforce lazy evaluation.
+      *
+      * \sa operator=(const MatrixBase<OtherDerived>&), _set()
+      */
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC 
+    EIGEN_STRONG_INLINE Derived& _set_noalias(const DenseBase<OtherDerived>& other)
+    {
+      // I don't think we need this resize call since the lazyAssign will anyways resize
+      // and lazyAssign will be called by the assign selector.
+      //_resize_to_match(other);
+      // the 'false' below means to enforce lazy evaluation. We don't use lazyAssign() because
+      // it wouldn't allow to copy a row-vector into a column-vector.
+      internal::call_assignment_no_alias(this->derived(), other.derived(), internal::assign_op<Scalar,typename OtherDerived::Scalar>());
+      return this->derived();
+    }
+
+    template<typename T0, typename T1>
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE void _init2(Index rows, Index cols, typename internal::enable_if<Base::SizeAtCompileTime!=2,T0>::type* = 0)
+    {
+      const bool t0_is_integer_alike = internal::is_valid_index_type<T0>::value;
+      const bool t1_is_integer_alike = internal::is_valid_index_type<T1>::value;
+      EIGEN_STATIC_ASSERT(t0_is_integer_alike &&
+                          t1_is_integer_alike,
+                          FLOATING_POINT_ARGUMENT_PASSED__INTEGER_WAS_EXPECTED)
+      resize(rows,cols);
+    }
+    
+    template<typename T0, typename T1>
+    EIGEN_DEVICE_FUNC 
+    EIGEN_STRONG_INLINE void _init2(const T0& val0, const T1& val1, typename internal::enable_if<Base::SizeAtCompileTime==2,T0>::type* = 0)
+    {
+      EIGEN_STATIC_ASSERT_VECTOR_SPECIFIC_SIZE(PlainObjectBase, 2)
+      m_storage.data()[0] = Scalar(val0);
+      m_storage.data()[1] = Scalar(val1);
+    }
+    
+    template<typename T0, typename T1>
+    EIGEN_DEVICE_FUNC 
+    EIGEN_STRONG_INLINE void _init2(const Index& val0, const Index& val1,
+                                    typename internal::enable_if<    (!internal::is_same<Index,Scalar>::value)
+                                                                  && (internal::is_same<T0,Index>::value)
+                                                                  && (internal::is_same<T1,Index>::value)
+                                                                  && Base::SizeAtCompileTime==2,T1>::type* = 0)
+    {
+      EIGEN_STATIC_ASSERT_VECTOR_SPECIFIC_SIZE(PlainObjectBase, 2)
+      m_storage.data()[0] = Scalar(val0);
+      m_storage.data()[1] = Scalar(val1);
+    }
+
+    // The argument is convertible to the Index type and we either have a non 1x1 Matrix, or a dynamic-sized Array,
+    // then the argument is meant to be the size of the object.
+    template<typename T>
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE void _init1(Index size, typename internal::enable_if<    (Base::SizeAtCompileTime!=1 || !internal::is_convertible<T, Scalar>::value)
+                                                                              && ((!internal::is_same<typename internal::traits<Derived>::XprKind,ArrayXpr>::value || Base::SizeAtCompileTime==Dynamic)),T>::type* = 0)
+    {
+      // NOTE MSVC 2008 complains if we directly put bool(NumTraits<T>::IsInteger) as the EIGEN_STATIC_ASSERT argument.
+      const bool is_integer_alike = internal::is_valid_index_type<T>::value;
+      EIGEN_UNUSED_VARIABLE(is_integer_alike);
+      EIGEN_STATIC_ASSERT(is_integer_alike,
+                          FLOATING_POINT_ARGUMENT_PASSED__INTEGER_WAS_EXPECTED)
+      resize(size);
+    }
+    
+    // We have a 1x1 matrix/array => the argument is interpreted as the value of the unique coefficient (case where scalar type can be implicitely converted)
+    template<typename T>
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE void _init1(const Scalar& val0, typename internal::enable_if<Base::SizeAtCompileTime==1 && internal::is_convertible<T, Scalar>::value,T>::type* = 0)
+    {
+      EIGEN_STATIC_ASSERT_VECTOR_SPECIFIC_SIZE(PlainObjectBase, 1)
+      m_storage.data()[0] = val0;
+    }
+    
+    // We have a 1x1 matrix/array => the argument is interpreted as the value of the unique coefficient (case where scalar type match the index type)
+    template<typename T>
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE void _init1(const Index& val0,
+                                    typename internal::enable_if<    (!internal::is_same<Index,Scalar>::value)
+                                                                  && (internal::is_same<Index,T>::value)
+                                                                  && Base::SizeAtCompileTime==1
+                                                                  && internal::is_convertible<T, Scalar>::value,T*>::type* = 0)
+    {
+      EIGEN_STATIC_ASSERT_VECTOR_SPECIFIC_SIZE(PlainObjectBase, 1)
+      m_storage.data()[0] = Scalar(val0);
+    }
+
+    // Initialize a fixed size matrix from a pointer to raw data
+    template<typename T>
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE void _init1(const Scalar* data){
+      this->_set_noalias(ConstMapType(data));
+    }
+
+    // Initialize an arbitrary matrix from a dense expression
+    template<typename T, typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE void _init1(const DenseBase<OtherDerived>& other){
+      this->_set_noalias(other);
+    }
+
+    // Initialize an arbitrary matrix from an object convertible to the Derived type.
+    template<typename T>
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE void _init1(const Derived& other){
+      this->_set_noalias(other);
+    }
+
+    // Initialize an arbitrary matrix from a generic Eigen expression
+    template<typename T, typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE void _init1(const EigenBase<OtherDerived>& other){
+      this->derived() = other;
+    }
+
+    template<typename T, typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE void _init1(const ReturnByValue<OtherDerived>& other)
+    {
+      resize(other.rows(), other.cols());
+      other.evalTo(this->derived());
+    }
+
+    template<typename T, typename OtherDerived, int ColsAtCompileTime>
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE void _init1(const RotationBase<OtherDerived,ColsAtCompileTime>& r)
+    {
+      this->derived() = r;
+    }
+    
+    // For fixed-size Array<Scalar,...>
+    template<typename T>
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE void _init1(const Scalar& val0,
+                                    typename internal::enable_if<    Base::SizeAtCompileTime!=Dynamic
+                                                                  && Base::SizeAtCompileTime!=1
+                                                                  && internal::is_convertible<T, Scalar>::value
+                                                                  && internal::is_same<typename internal::traits<Derived>::XprKind,ArrayXpr>::value,T>::type* = 0)
+    {
+      Base::setConstant(val0);
+    }
+    
+    // For fixed-size Array<Index,...>
+    template<typename T>
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE void _init1(const Index& val0,
+                                    typename internal::enable_if<    (!internal::is_same<Index,Scalar>::value)
+                                                                  && (internal::is_same<Index,T>::value)
+                                                                  && Base::SizeAtCompileTime!=Dynamic
+                                                                  && Base::SizeAtCompileTime!=1
+                                                                  && internal::is_convertible<T, Scalar>::value
+                                                                  && internal::is_same<typename internal::traits<Derived>::XprKind,ArrayXpr>::value,T*>::type* = 0)
+    {
+      Base::setConstant(val0);
+    }
+    
+    template<typename MatrixTypeA, typename MatrixTypeB, bool SwapPointers>
+    friend struct internal::matrix_swap_impl;
+
+  public:
+    
+#ifndef EIGEN_PARSED_BY_DOXYGEN
+    /** \internal
+      * \brief Override DenseBase::swap() since for dynamic-sized matrices
+      * of same type it is enough to swap the data pointers.
+      */
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    void swap(DenseBase<OtherDerived> & other)
+    {
+      enum { SwapPointers = internal::is_same<Derived, OtherDerived>::value && Base::SizeAtCompileTime==Dynamic };
+      internal::matrix_swap_impl<Derived, OtherDerived, bool(SwapPointers)>::run(this->derived(), other.derived());
+    }
+    
+    /** \internal
+      * \brief const version forwarded to DenseBase::swap
+      */
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    void swap(DenseBase<OtherDerived> const & other)
+    { Base::swap(other.derived()); }
+    
+    EIGEN_DEVICE_FUNC 
+    static EIGEN_STRONG_INLINE void _check_template_params()
+    {
+      EIGEN_STATIC_ASSERT((EIGEN_IMPLIES(MaxRowsAtCompileTime==1 && MaxColsAtCompileTime!=1, (Options&RowMajor)==RowMajor)
+                        && EIGEN_IMPLIES(MaxColsAtCompileTime==1 && MaxRowsAtCompileTime!=1, (Options&RowMajor)==0)
+                        && ((RowsAtCompileTime == Dynamic) || (RowsAtCompileTime >= 0))
+                        && ((ColsAtCompileTime == Dynamic) || (ColsAtCompileTime >= 0))
+                        && ((MaxRowsAtCompileTime == Dynamic) || (MaxRowsAtCompileTime >= 0))
+                        && ((MaxColsAtCompileTime == Dynamic) || (MaxColsAtCompileTime >= 0))
+                        && (MaxRowsAtCompileTime == RowsAtCompileTime || RowsAtCompileTime==Dynamic)
+                        && (MaxColsAtCompileTime == ColsAtCompileTime || ColsAtCompileTime==Dynamic)
+                        && (Options & (DontAlign|RowMajor)) == Options),
+        INVALID_MATRIX_TEMPLATE_PARAMETERS)
+    }
+
+    enum { IsPlainObjectBase = 1 };
+#endif
+};
+
+namespace internal {
+
+template <typename Derived, typename OtherDerived, bool IsVector>
+struct conservative_resize_like_impl
+{
+  static void run(DenseBase<Derived>& _this, Index rows, Index cols)
+  {
+    if (_this.rows() == rows && _this.cols() == cols) return;
+    EIGEN_STATIC_ASSERT_DYNAMIC_SIZE(Derived)
+
+    if ( ( Derived::IsRowMajor && _this.cols() == cols) || // row-major and we change only the number of rows
+         (!Derived::IsRowMajor && _this.rows() == rows) )  // column-major and we change only the number of columns
+    {
+      internal::check_rows_cols_for_overflow<Derived::MaxSizeAtCompileTime>::run(rows, cols);
+      _this.derived().m_storage.conservativeResize(rows*cols,rows,cols);
+    }
+    else
+    {
+      // The storage order does not allow us to use reallocation.
+      typename Derived::PlainObject tmp(rows,cols);
+      const Index common_rows = numext::mini(rows, _this.rows());
+      const Index common_cols = numext::mini(cols, _this.cols());
+      tmp.block(0,0,common_rows,common_cols) = _this.block(0,0,common_rows,common_cols);
+      _this.derived().swap(tmp);
+    }
+  }
+
+  static void run(DenseBase<Derived>& _this, const DenseBase<OtherDerived>& other)
+  {
+    if (_this.rows() == other.rows() && _this.cols() == other.cols()) return;
+
+    // Note: Here is space for improvement. Basically, for conservativeResize(Index,Index),
+    // neither RowsAtCompileTime or ColsAtCompileTime must be Dynamic. If only one of the
+    // dimensions is dynamic, one could use either conservativeResize(Index rows, NoChange_t) or
+    // conservativeResize(NoChange_t, Index cols). For these methods new static asserts like
+    // EIGEN_STATIC_ASSERT_DYNAMIC_ROWS and EIGEN_STATIC_ASSERT_DYNAMIC_COLS would be good.
+    EIGEN_STATIC_ASSERT_DYNAMIC_SIZE(Derived)
+    EIGEN_STATIC_ASSERT_DYNAMIC_SIZE(OtherDerived)
+
+    if ( ( Derived::IsRowMajor && _this.cols() == other.cols()) || // row-major and we change only the number of rows
+         (!Derived::IsRowMajor && _this.rows() == other.rows()) )  // column-major and we change only the number of columns
+    {
+      const Index new_rows = other.rows() - _this.rows();
+      const Index new_cols = other.cols() - _this.cols();
+      _this.derived().m_storage.conservativeResize(other.size(),other.rows(),other.cols());
+      if (new_rows>0)
+        _this.bottomRightCorner(new_rows, other.cols()) = other.bottomRows(new_rows);
+      else if (new_cols>0)
+        _this.bottomRightCorner(other.rows(), new_cols) = other.rightCols(new_cols);
+    }
+    else
+    {
+      // The storage order does not allow us to use reallocation.
+      typename Derived::PlainObject tmp(other);
+      const Index common_rows = numext::mini(tmp.rows(), _this.rows());
+      const Index common_cols = numext::mini(tmp.cols(), _this.cols());
+      tmp.block(0,0,common_rows,common_cols) = _this.block(0,0,common_rows,common_cols);
+      _this.derived().swap(tmp);
+    }
+  }
+};
+
+// Here, the specialization for vectors inherits from the general matrix case
+// to allow calling .conservativeResize(rows,cols) on vectors.
+template <typename Derived, typename OtherDerived>
+struct conservative_resize_like_impl<Derived,OtherDerived,true>
+  : conservative_resize_like_impl<Derived,OtherDerived,false>
+{
+  using conservative_resize_like_impl<Derived,OtherDerived,false>::run;
+  
+  static void run(DenseBase<Derived>& _this, Index size)
+  {
+    const Index new_rows = Derived::RowsAtCompileTime==1 ? 1 : size;
+    const Index new_cols = Derived::RowsAtCompileTime==1 ? size : 1;
+    _this.derived().m_storage.conservativeResize(size,new_rows,new_cols);
+  }
+
+  static void run(DenseBase<Derived>& _this, const DenseBase<OtherDerived>& other)
+  {
+    if (_this.rows() == other.rows() && _this.cols() == other.cols()) return;
+
+    const Index num_new_elements = other.size() - _this.size();
+
+    const Index new_rows = Derived::RowsAtCompileTime==1 ? 1 : other.rows();
+    const Index new_cols = Derived::RowsAtCompileTime==1 ? other.cols() : 1;
+    _this.derived().m_storage.conservativeResize(other.size(),new_rows,new_cols);
+
+    if (num_new_elements > 0)
+      _this.tail(num_new_elements) = other.tail(num_new_elements);
+  }
+};
+
+template<typename MatrixTypeA, typename MatrixTypeB, bool SwapPointers>
+struct matrix_swap_impl
+{
+  EIGEN_DEVICE_FUNC
+  static inline void run(MatrixTypeA& a, MatrixTypeB& b)
+  {
+    a.base().swap(b);
+  }
+};
+
+template<typename MatrixTypeA, typename MatrixTypeB>
+struct matrix_swap_impl<MatrixTypeA, MatrixTypeB, true>
+{
+  EIGEN_DEVICE_FUNC
+  static inline void run(MatrixTypeA& a, MatrixTypeB& b)
+  {
+    static_cast<typename MatrixTypeA::Base&>(a).m_storage.swap(static_cast<typename MatrixTypeB::Base&>(b).m_storage);
+  }
+};
+
+} // end namespace internal
+
+} // end namespace Eigen
+
+#endif // EIGEN_DENSESTORAGEBASE_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/Dot.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/Dot.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/Dot.h	(revision 3762)
@@ -0,0 +1,318 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2006-2008, 2010 Benoit Jacob <jacob.benoit.1@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_DOT_H
+#define EIGEN_DOT_H
+
+namespace Eigen { 
+
+namespace internal {
+
+// helper function for dot(). The problem is that if we put that in the body of dot(), then upon calling dot
+// with mismatched types, the compiler emits errors about failing to instantiate cwiseProduct BEFORE
+// looking at the static assertions. Thus this is a trick to get better compile errors.
+template<typename T, typename U,
+// the NeedToTranspose condition here is taken straight from Assign.h
+         bool NeedToTranspose = T::IsVectorAtCompileTime
+                && U::IsVectorAtCompileTime
+                && ((int(T::RowsAtCompileTime) == 1 && int(U::ColsAtCompileTime) == 1)
+                      |  // FIXME | instead of || to please GCC 4.4.0 stupid warning "suggest parentheses around &&".
+                         // revert to || as soon as not needed anymore.
+                    (int(T::ColsAtCompileTime) == 1 && int(U::RowsAtCompileTime) == 1))
+>
+struct dot_nocheck
+{
+  typedef scalar_conj_product_op<typename traits<T>::Scalar,typename traits<U>::Scalar> conj_prod;
+  typedef typename conj_prod::result_type ResScalar;
+  EIGEN_DEVICE_FUNC
+  EIGEN_STRONG_INLINE
+  static ResScalar run(const MatrixBase<T>& a, const MatrixBase<U>& b)
+  {
+    return a.template binaryExpr<conj_prod>(b).sum();
+  }
+};
+
+template<typename T, typename U>
+struct dot_nocheck<T, U, true>
+{
+  typedef scalar_conj_product_op<typename traits<T>::Scalar,typename traits<U>::Scalar> conj_prod;
+  typedef typename conj_prod::result_type ResScalar;
+  EIGEN_DEVICE_FUNC
+  EIGEN_STRONG_INLINE
+  static ResScalar run(const MatrixBase<T>& a, const MatrixBase<U>& b)
+  {
+    return a.transpose().template binaryExpr<conj_prod>(b).sum();
+  }
+};
+
+} // end namespace internal
+
+/** \fn MatrixBase::dot
+  * \returns the dot product of *this with other.
+  *
+  * \only_for_vectors
+  *
+  * \note If the scalar type is complex numbers, then this function returns the hermitian
+  * (sesquilinear) dot product, conjugate-linear in the first variable and linear in the
+  * second variable.
+  *
+  * \sa squaredNorm(), norm()
+  */
+template<typename Derived>
+template<typename OtherDerived>
+EIGEN_DEVICE_FUNC
+EIGEN_STRONG_INLINE
+typename ScalarBinaryOpTraits<typename internal::traits<Derived>::Scalar,typename internal::traits<OtherDerived>::Scalar>::ReturnType
+MatrixBase<Derived>::dot(const MatrixBase<OtherDerived>& other) const
+{
+  EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
+  EIGEN_STATIC_ASSERT_VECTOR_ONLY(OtherDerived)
+  EIGEN_STATIC_ASSERT_SAME_VECTOR_SIZE(Derived,OtherDerived)
+#if !(defined(EIGEN_NO_STATIC_ASSERT) && defined(EIGEN_NO_DEBUG))
+  typedef internal::scalar_conj_product_op<Scalar,typename OtherDerived::Scalar> func;
+  EIGEN_CHECK_BINARY_COMPATIBILIY(func,Scalar,typename OtherDerived::Scalar);
+#endif
+  
+  eigen_assert(size() == other.size());
+
+  return internal::dot_nocheck<Derived,OtherDerived>::run(*this, other);
+}
+
+//---------- implementation of L2 norm and related functions ----------
+
+/** \returns, for vectors, the squared \em l2 norm of \c *this, and for matrices the Frobenius norm.
+  * In both cases, it consists in the sum of the square of all the matrix entries.
+  * For vectors, this is also equals to the dot product of \c *this with itself.
+  *
+  * \sa dot(), norm(), lpNorm()
+  */
+template<typename Derived>
+EIGEN_STRONG_INLINE typename NumTraits<typename internal::traits<Derived>::Scalar>::Real MatrixBase<Derived>::squaredNorm() const
+{
+  return numext::real((*this).cwiseAbs2().sum());
+}
+
+/** \returns, for vectors, the \em l2 norm of \c *this, and for matrices the Frobenius norm.
+  * In both cases, it consists in the square root of the sum of the square of all the matrix entries.
+  * For vectors, this is also equals to the square root of the dot product of \c *this with itself.
+  *
+  * \sa lpNorm(), dot(), squaredNorm()
+  */
+template<typename Derived>
+EIGEN_STRONG_INLINE typename NumTraits<typename internal::traits<Derived>::Scalar>::Real MatrixBase<Derived>::norm() const
+{
+  return numext::sqrt(squaredNorm());
+}
+
+/** \returns an expression of the quotient of \c *this by its own norm.
+  *
+  * \warning If the input vector is too small (i.e., this->norm()==0),
+  *          then this function returns a copy of the input.
+  *
+  * \only_for_vectors
+  *
+  * \sa norm(), normalize()
+  */
+template<typename Derived>
+EIGEN_STRONG_INLINE const typename MatrixBase<Derived>::PlainObject
+MatrixBase<Derived>::normalized() const
+{
+  typedef typename internal::nested_eval<Derived,2>::type _Nested;
+  _Nested n(derived());
+  RealScalar z = n.squaredNorm();
+  // NOTE: after extensive benchmarking, this conditional does not impact performance, at least on recent x86 CPU
+  if(z>RealScalar(0))
+    return n / numext::sqrt(z);
+  else
+    return n;
+}
+
+/** Normalizes the vector, i.e. divides it by its own norm.
+  *
+  * \only_for_vectors
+  *
+  * \warning If the input vector is too small (i.e., this->norm()==0), then \c *this is left unchanged.
+  *
+  * \sa norm(), normalized()
+  */
+template<typename Derived>
+EIGEN_STRONG_INLINE void MatrixBase<Derived>::normalize()
+{
+  RealScalar z = squaredNorm();
+  // NOTE: after extensive benchmarking, this conditional does not impact performance, at least on recent x86 CPU
+  if(z>RealScalar(0))
+    derived() /= numext::sqrt(z);
+}
+
+/** \returns an expression of the quotient of \c *this by its own norm while avoiding underflow and overflow.
+  *
+  * \only_for_vectors
+  *
+  * This method is analogue to the normalized() method, but it reduces the risk of
+  * underflow and overflow when computing the norm.
+  *
+  * \warning If the input vector is too small (i.e., this->norm()==0),
+  *          then this function returns a copy of the input.
+  *
+  * \sa stableNorm(), stableNormalize(), normalized()
+  */
+template<typename Derived>
+EIGEN_STRONG_INLINE const typename MatrixBase<Derived>::PlainObject
+MatrixBase<Derived>::stableNormalized() const
+{
+  typedef typename internal::nested_eval<Derived,3>::type _Nested;
+  _Nested n(derived());
+  RealScalar w = n.cwiseAbs().maxCoeff();
+  RealScalar z = (n/w).squaredNorm();
+  if(z>RealScalar(0))
+    return n / (numext::sqrt(z)*w);
+  else
+    return n;
+}
+
+/** Normalizes the vector while avoid underflow and overflow
+  *
+  * \only_for_vectors
+  *
+  * This method is analogue to the normalize() method, but it reduces the risk of
+  * underflow and overflow when computing the norm.
+  *
+  * \warning If the input vector is too small (i.e., this->norm()==0), then \c *this is left unchanged.
+  *
+  * \sa stableNorm(), stableNormalized(), normalize()
+  */
+template<typename Derived>
+EIGEN_STRONG_INLINE void MatrixBase<Derived>::stableNormalize()
+{
+  RealScalar w = cwiseAbs().maxCoeff();
+  RealScalar z = (derived()/w).squaredNorm();
+  if(z>RealScalar(0))
+    derived() /= numext::sqrt(z)*w;
+}
+
+//---------- implementation of other norms ----------
+
+namespace internal {
+
+template<typename Derived, int p>
+struct lpNorm_selector
+{
+  typedef typename NumTraits<typename traits<Derived>::Scalar>::Real RealScalar;
+  EIGEN_DEVICE_FUNC
+  static inline RealScalar run(const MatrixBase<Derived>& m)
+  {
+    EIGEN_USING_STD_MATH(pow)
+    return pow(m.cwiseAbs().array().pow(p).sum(), RealScalar(1)/p);
+  }
+};
+
+template<typename Derived>
+struct lpNorm_selector<Derived, 1>
+{
+  EIGEN_DEVICE_FUNC
+  static inline typename NumTraits<typename traits<Derived>::Scalar>::Real run(const MatrixBase<Derived>& m)
+  {
+    return m.cwiseAbs().sum();
+  }
+};
+
+template<typename Derived>
+struct lpNorm_selector<Derived, 2>
+{
+  EIGEN_DEVICE_FUNC
+  static inline typename NumTraits<typename traits<Derived>::Scalar>::Real run(const MatrixBase<Derived>& m)
+  {
+    return m.norm();
+  }
+};
+
+template<typename Derived>
+struct lpNorm_selector<Derived, Infinity>
+{
+  typedef typename NumTraits<typename traits<Derived>::Scalar>::Real RealScalar;
+  EIGEN_DEVICE_FUNC
+  static inline RealScalar run(const MatrixBase<Derived>& m)
+  {
+    if(Derived::SizeAtCompileTime==0 || (Derived::SizeAtCompileTime==Dynamic && m.size()==0))
+      return RealScalar(0);
+    return m.cwiseAbs().maxCoeff();
+  }
+};
+
+} // end namespace internal
+
+/** \returns the \b coefficient-wise \f$ \ell^p \f$ norm of \c *this, that is, returns the p-th root of the sum of the p-th powers of the absolute values
+  *          of the coefficients of \c *this. If \a p is the special value \a Eigen::Infinity, this function returns the \f$ \ell^\infty \f$
+  *          norm, that is the maximum of the absolute values of the coefficients of \c *this.
+  *
+  * In all cases, if \c *this is empty, then the value 0 is returned.
+  *
+  * \note For matrices, this function does not compute the <a href="https://en.wikipedia.org/wiki/Operator_norm">operator-norm</a>. That is, if \c *this is a matrix, then its coefficients are interpreted as a 1D vector. Nonetheless, you can easily compute the 1-norm and \f$\infty\f$-norm matrix operator norms using \link TutorialReductionsVisitorsBroadcastingReductionsNorm partial reductions \endlink.
+  *
+  * \sa norm()
+  */
+template<typename Derived>
+template<int p>
+#ifndef EIGEN_PARSED_BY_DOXYGEN
+inline typename NumTraits<typename internal::traits<Derived>::Scalar>::Real
+#else
+MatrixBase<Derived>::RealScalar
+#endif
+MatrixBase<Derived>::lpNorm() const
+{
+  return internal::lpNorm_selector<Derived, p>::run(*this);
+}
+
+//---------- implementation of isOrthogonal / isUnitary ----------
+
+/** \returns true if *this is approximately orthogonal to \a other,
+  *          within the precision given by \a prec.
+  *
+  * Example: \include MatrixBase_isOrthogonal.cpp
+  * Output: \verbinclude MatrixBase_isOrthogonal.out
+  */
+template<typename Derived>
+template<typename OtherDerived>
+bool MatrixBase<Derived>::isOrthogonal
+(const MatrixBase<OtherDerived>& other, const RealScalar& prec) const
+{
+  typename internal::nested_eval<Derived,2>::type nested(derived());
+  typename internal::nested_eval<OtherDerived,2>::type otherNested(other.derived());
+  return numext::abs2(nested.dot(otherNested)) <= prec * prec * nested.squaredNorm() * otherNested.squaredNorm();
+}
+
+/** \returns true if *this is approximately an unitary matrix,
+  *          within the precision given by \a prec. In the case where the \a Scalar
+  *          type is real numbers, a unitary matrix is an orthogonal matrix, whence the name.
+  *
+  * \note This can be used to check whether a family of vectors forms an orthonormal basis.
+  *       Indeed, \c m.isUnitary() returns true if and only if the columns (equivalently, the rows) of m form an
+  *       orthonormal basis.
+  *
+  * Example: \include MatrixBase_isUnitary.cpp
+  * Output: \verbinclude MatrixBase_isUnitary.out
+  */
+template<typename Derived>
+bool MatrixBase<Derived>::isUnitary(const RealScalar& prec) const
+{
+  typename internal::nested_eval<Derived,1>::type self(derived());
+  for(Index i = 0; i < cols(); ++i)
+  {
+    if(!internal::isApprox(self.col(i).squaredNorm(), static_cast<RealScalar>(1), prec))
+      return false;
+    for(Index j = 0; j < i; ++j)
+      if(!internal::isMuchSmallerThan(self.col(i).dot(self.col(j)), static_cast<Scalar>(1), prec))
+        return false;
+  }
+  return true;
+}
+
+} // end namespace Eigen
+
+#endif // EIGEN_DOT_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/BooleanRedux.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/BooleanRedux.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/BooleanRedux.h	(revision 3762)
@@ -0,0 +1,164 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2008 Gael Guennebaud <gael.guennebaud@inria.fr>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_ALLANDANY_H
+#define EIGEN_ALLANDANY_H
+
+namespace Eigen { 
+
+namespace internal {
+
+template<typename Derived, int UnrollCount>
+struct all_unroller
+{
+  typedef typename Derived::ExpressionTraits Traits;
+  enum {
+    col = (UnrollCount-1) / Traits::RowsAtCompileTime,
+    row = (UnrollCount-1) % Traits::RowsAtCompileTime
+  };
+
+  static inline bool run(const Derived &mat)
+  {
+    return all_unroller<Derived, UnrollCount-1>::run(mat) && mat.coeff(row, col);
+  }
+};
+
+template<typename Derived>
+struct all_unroller<Derived, 0>
+{
+  static inline bool run(const Derived &/*mat*/) { return true; }
+};
+
+template<typename Derived>
+struct all_unroller<Derived, Dynamic>
+{
+  static inline bool run(const Derived &) { return false; }
+};
+
+template<typename Derived, int UnrollCount>
+struct any_unroller
+{
+  typedef typename Derived::ExpressionTraits Traits;
+  enum {
+    col = (UnrollCount-1) / Traits::RowsAtCompileTime,
+    row = (UnrollCount-1) % Traits::RowsAtCompileTime
+  };
+  
+  static inline bool run(const Derived &mat)
+  {
+    return any_unroller<Derived, UnrollCount-1>::run(mat) || mat.coeff(row, col);
+  }
+};
+
+template<typename Derived>
+struct any_unroller<Derived, 0>
+{
+  static inline bool run(const Derived & /*mat*/) { return false; }
+};
+
+template<typename Derived>
+struct any_unroller<Derived, Dynamic>
+{
+  static inline bool run(const Derived &) { return false; }
+};
+
+} // end namespace internal
+
+/** \returns true if all coefficients are true
+  *
+  * Example: \include MatrixBase_all.cpp
+  * Output: \verbinclude MatrixBase_all.out
+  *
+  * \sa any(), Cwise::operator<()
+  */
+template<typename Derived>
+inline bool DenseBase<Derived>::all() const
+{
+  typedef internal::evaluator<Derived> Evaluator;
+  enum {
+    unroll = SizeAtCompileTime != Dynamic
+          && SizeAtCompileTime * (Evaluator::CoeffReadCost + NumTraits<Scalar>::AddCost) <= EIGEN_UNROLLING_LIMIT
+  };
+  Evaluator evaluator(derived());
+  if(unroll)
+    return internal::all_unroller<Evaluator, unroll ? int(SizeAtCompileTime) : Dynamic>::run(evaluator);
+  else
+  {
+    for(Index j = 0; j < cols(); ++j)
+      for(Index i = 0; i < rows(); ++i)
+        if (!evaluator.coeff(i, j)) return false;
+    return true;
+  }
+}
+
+/** \returns true if at least one coefficient is true
+  *
+  * \sa all()
+  */
+template<typename Derived>
+inline bool DenseBase<Derived>::any() const
+{
+  typedef internal::evaluator<Derived> Evaluator;
+  enum {
+    unroll = SizeAtCompileTime != Dynamic
+          && SizeAtCompileTime * (Evaluator::CoeffReadCost + NumTraits<Scalar>::AddCost) <= EIGEN_UNROLLING_LIMIT
+  };
+  Evaluator evaluator(derived());
+  if(unroll)
+    return internal::any_unroller<Evaluator, unroll ? int(SizeAtCompileTime) : Dynamic>::run(evaluator);
+  else
+  {
+    for(Index j = 0; j < cols(); ++j)
+      for(Index i = 0; i < rows(); ++i)
+        if (evaluator.coeff(i, j)) return true;
+    return false;
+  }
+}
+
+/** \returns the number of coefficients which evaluate to true
+  *
+  * \sa all(), any()
+  */
+template<typename Derived>
+inline Eigen::Index DenseBase<Derived>::count() const
+{
+  return derived().template cast<bool>().template cast<Index>().sum();
+}
+
+/** \returns true is \c *this contains at least one Not A Number (NaN).
+  *
+  * \sa allFinite()
+  */
+template<typename Derived>
+inline bool DenseBase<Derived>::hasNaN() const
+{
+#if EIGEN_COMP_MSVC || (defined __FAST_MATH__)
+  return derived().array().isNaN().any();
+#else
+  return !((derived().array()==derived().array()).all());
+#endif
+}
+
+/** \returns true if \c *this contains only finite numbers, i.e., no NaN and no +/-INF values.
+  *
+  * \sa hasNaN()
+  */
+template<typename Derived>
+inline bool DenseBase<Derived>::allFinite() const
+{
+#if EIGEN_COMP_MSVC || (defined __FAST_MATH__)
+  return derived().array().isFinite().all();
+#else
+  return !((derived()-derived()).hasNaN());
+#endif
+}
+    
+} // end namespace Eigen
+
+#endif // EIGEN_ALLANDANY_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/Fuzzy.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/Fuzzy.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/Fuzzy.h	(revision 3762)
@@ -0,0 +1,155 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2006-2008 Benoit Jacob <jacob.benoit.1@gmail.com>
+// Copyright (C) 2008 Gael Guennebaud <gael.guennebaud@inria.fr>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_FUZZY_H
+#define EIGEN_FUZZY_H
+
+namespace Eigen { 
+
+namespace internal
+{
+
+template<typename Derived, typename OtherDerived, bool is_integer = NumTraits<typename Derived::Scalar>::IsInteger>
+struct isApprox_selector
+{
+  EIGEN_DEVICE_FUNC
+  static bool run(const Derived& x, const OtherDerived& y, const typename Derived::RealScalar& prec)
+  {
+    typename internal::nested_eval<Derived,2>::type nested(x);
+    typename internal::nested_eval<OtherDerived,2>::type otherNested(y);
+    return (nested - otherNested).cwiseAbs2().sum() <= prec * prec * numext::mini(nested.cwiseAbs2().sum(), otherNested.cwiseAbs2().sum());
+  }
+};
+
+template<typename Derived, typename OtherDerived>
+struct isApprox_selector<Derived, OtherDerived, true>
+{
+  EIGEN_DEVICE_FUNC
+  static bool run(const Derived& x, const OtherDerived& y, const typename Derived::RealScalar&)
+  {
+    return x.matrix() == y.matrix();
+  }
+};
+
+template<typename Derived, typename OtherDerived, bool is_integer = NumTraits<typename Derived::Scalar>::IsInteger>
+struct isMuchSmallerThan_object_selector
+{
+  EIGEN_DEVICE_FUNC
+  static bool run(const Derived& x, const OtherDerived& y, const typename Derived::RealScalar& prec)
+  {
+    return x.cwiseAbs2().sum() <= numext::abs2(prec) * y.cwiseAbs2().sum();
+  }
+};
+
+template<typename Derived, typename OtherDerived>
+struct isMuchSmallerThan_object_selector<Derived, OtherDerived, true>
+{
+  EIGEN_DEVICE_FUNC
+  static bool run(const Derived& x, const OtherDerived&, const typename Derived::RealScalar&)
+  {
+    return x.matrix() == Derived::Zero(x.rows(), x.cols()).matrix();
+  }
+};
+
+template<typename Derived, bool is_integer = NumTraits<typename Derived::Scalar>::IsInteger>
+struct isMuchSmallerThan_scalar_selector
+{
+  EIGEN_DEVICE_FUNC
+  static bool run(const Derived& x, const typename Derived::RealScalar& y, const typename Derived::RealScalar& prec)
+  {
+    return x.cwiseAbs2().sum() <= numext::abs2(prec * y);
+  }
+};
+
+template<typename Derived>
+struct isMuchSmallerThan_scalar_selector<Derived, true>
+{
+  EIGEN_DEVICE_FUNC
+  static bool run(const Derived& x, const typename Derived::RealScalar&, const typename Derived::RealScalar&)
+  {
+    return x.matrix() == Derived::Zero(x.rows(), x.cols()).matrix();
+  }
+};
+
+} // end namespace internal
+
+
+/** \returns \c true if \c *this is approximately equal to \a other, within the precision
+  * determined by \a prec.
+  *
+  * \note The fuzzy compares are done multiplicatively. Two vectors \f$ v \f$ and \f$ w \f$
+  * are considered to be approximately equal within precision \f$ p \f$ if
+  * \f[ \Vert v - w \Vert \leqslant p\,\min(\Vert v\Vert, \Vert w\Vert). \f]
+  * For matrices, the comparison is done using the Hilbert-Schmidt norm (aka Frobenius norm
+  * L2 norm).
+  *
+  * \note Because of the multiplicativeness of this comparison, one can't use this function
+  * to check whether \c *this is approximately equal to the zero matrix or vector.
+  * Indeed, \c isApprox(zero) returns false unless \c *this itself is exactly the zero matrix
+  * or vector. If you want to test whether \c *this is zero, use internal::isMuchSmallerThan(const
+  * RealScalar&, RealScalar) instead.
+  *
+  * \sa internal::isMuchSmallerThan(const RealScalar&, RealScalar) const
+  */
+template<typename Derived>
+template<typename OtherDerived>
+bool DenseBase<Derived>::isApprox(
+  const DenseBase<OtherDerived>& other,
+  const RealScalar& prec
+) const
+{
+  return internal::isApprox_selector<Derived, OtherDerived>::run(derived(), other.derived(), prec);
+}
+
+/** \returns \c true if the norm of \c *this is much smaller than \a other,
+  * within the precision determined by \a prec.
+  *
+  * \note The fuzzy compares are done multiplicatively. A vector \f$ v \f$ is
+  * considered to be much smaller than \f$ x \f$ within precision \f$ p \f$ if
+  * \f[ \Vert v \Vert \leqslant p\,\vert x\vert. \f]
+  *
+  * For matrices, the comparison is done using the Hilbert-Schmidt norm. For this reason,
+  * the value of the reference scalar \a other should come from the Hilbert-Schmidt norm
+  * of a reference matrix of same dimensions.
+  *
+  * \sa isApprox(), isMuchSmallerThan(const DenseBase<OtherDerived>&, RealScalar) const
+  */
+template<typename Derived>
+bool DenseBase<Derived>::isMuchSmallerThan(
+  const typename NumTraits<Scalar>::Real& other,
+  const RealScalar& prec
+) const
+{
+  return internal::isMuchSmallerThan_scalar_selector<Derived>::run(derived(), other, prec);
+}
+
+/** \returns \c true if the norm of \c *this is much smaller than the norm of \a other,
+  * within the precision determined by \a prec.
+  *
+  * \note The fuzzy compares are done multiplicatively. A vector \f$ v \f$ is
+  * considered to be much smaller than a vector \f$ w \f$ within precision \f$ p \f$ if
+  * \f[ \Vert v \Vert \leqslant p\,\Vert w\Vert. \f]
+  * For matrices, the comparison is done using the Hilbert-Schmidt norm.
+  *
+  * \sa isApprox(), isMuchSmallerThan(const RealScalar&, RealScalar) const
+  */
+template<typename Derived>
+template<typename OtherDerived>
+bool DenseBase<Derived>::isMuchSmallerThan(
+  const DenseBase<OtherDerived>& other,
+  const RealScalar& prec
+) const
+{
+  return internal::isMuchSmallerThan_object_selector<Derived, OtherDerived>::run(derived(), other.derived(), prec);
+}
+
+} // end namespace Eigen
+
+#endif // EIGEN_FUZZY_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/VectorwiseOp.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/VectorwiseOp.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/VectorwiseOp.h	(revision 3762)
@@ -0,0 +1,695 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2008-2010 Gael Guennebaud <gael.guennebaud@inria.fr>
+// Copyright (C) 2006-2008 Benoit Jacob <jacob.benoit.1@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_PARTIAL_REDUX_H
+#define EIGEN_PARTIAL_REDUX_H
+
+namespace Eigen {
+
+/** \class PartialReduxExpr
+  * \ingroup Core_Module
+  *
+  * \brief Generic expression of a partially reduxed matrix
+  *
+  * \tparam MatrixType the type of the matrix we are applying the redux operation
+  * \tparam MemberOp type of the member functor
+  * \tparam Direction indicates the direction of the redux (#Vertical or #Horizontal)
+  *
+  * This class represents an expression of a partial redux operator of a matrix.
+  * It is the return type of some VectorwiseOp functions,
+  * and most of the time this is the only way it is used.
+  *
+  * \sa class VectorwiseOp
+  */
+
+template< typename MatrixType, typename MemberOp, int Direction>
+class PartialReduxExpr;
+
+namespace internal {
+template<typename MatrixType, typename MemberOp, int Direction>
+struct traits<PartialReduxExpr<MatrixType, MemberOp, Direction> >
+ : traits<MatrixType>
+{
+  typedef typename MemberOp::result_type Scalar;
+  typedef typename traits<MatrixType>::StorageKind StorageKind;
+  typedef typename traits<MatrixType>::XprKind XprKind;
+  typedef typename MatrixType::Scalar InputScalar;
+  enum {
+    RowsAtCompileTime = Direction==Vertical   ? 1 : MatrixType::RowsAtCompileTime,
+    ColsAtCompileTime = Direction==Horizontal ? 1 : MatrixType::ColsAtCompileTime,
+    MaxRowsAtCompileTime = Direction==Vertical   ? 1 : MatrixType::MaxRowsAtCompileTime,
+    MaxColsAtCompileTime = Direction==Horizontal ? 1 : MatrixType::MaxColsAtCompileTime,
+    Flags = RowsAtCompileTime == 1 ? RowMajorBit : 0,
+    TraversalSize = Direction==Vertical ? MatrixType::RowsAtCompileTime :  MatrixType::ColsAtCompileTime
+  };
+};
+}
+
+template< typename MatrixType, typename MemberOp, int Direction>
+class PartialReduxExpr : public internal::dense_xpr_base< PartialReduxExpr<MatrixType, MemberOp, Direction> >::type,
+                         internal::no_assignment_operator
+{
+  public:
+
+    typedef typename internal::dense_xpr_base<PartialReduxExpr>::type Base;
+    EIGEN_DENSE_PUBLIC_INTERFACE(PartialReduxExpr)
+
+    EIGEN_DEVICE_FUNC
+    explicit PartialReduxExpr(const MatrixType& mat, const MemberOp& func = MemberOp())
+      : m_matrix(mat), m_functor(func) {}
+
+    EIGEN_DEVICE_FUNC
+    Index rows() const { return (Direction==Vertical   ? 1 : m_matrix.rows()); }
+    EIGEN_DEVICE_FUNC
+    Index cols() const { return (Direction==Horizontal ? 1 : m_matrix.cols()); }
+
+    EIGEN_DEVICE_FUNC
+    typename MatrixType::Nested nestedExpression() const { return m_matrix; }
+
+    EIGEN_DEVICE_FUNC
+    const MemberOp& functor() const { return m_functor; }
+
+  protected:
+    typename MatrixType::Nested m_matrix;
+    const MemberOp m_functor;
+};
+
+#define EIGEN_MEMBER_FUNCTOR(MEMBER,COST)                               \
+  template <typename ResultType>                                        \
+  struct member_##MEMBER {                                              \
+    EIGEN_EMPTY_STRUCT_CTOR(member_##MEMBER)                            \
+    typedef ResultType result_type;                                     \
+    template<typename Scalar, int Size> struct Cost                     \
+    { enum { value = COST }; };                                         \
+    template<typename XprType>                                          \
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE                               \
+    ResultType operator()(const XprType& mat) const                     \
+    { return mat.MEMBER(); } \
+  }
+
+namespace internal {
+
+EIGEN_MEMBER_FUNCTOR(squaredNorm, Size * NumTraits<Scalar>::MulCost + (Size-1)*NumTraits<Scalar>::AddCost);
+EIGEN_MEMBER_FUNCTOR(norm, (Size+5) * NumTraits<Scalar>::MulCost + (Size-1)*NumTraits<Scalar>::AddCost);
+EIGEN_MEMBER_FUNCTOR(stableNorm, (Size+5) * NumTraits<Scalar>::MulCost + (Size-1)*NumTraits<Scalar>::AddCost);
+EIGEN_MEMBER_FUNCTOR(blueNorm, (Size+5) * NumTraits<Scalar>::MulCost + (Size-1)*NumTraits<Scalar>::AddCost);
+EIGEN_MEMBER_FUNCTOR(hypotNorm, (Size-1) * functor_traits<scalar_hypot_op<Scalar> >::Cost );
+EIGEN_MEMBER_FUNCTOR(sum, (Size-1)*NumTraits<Scalar>::AddCost);
+EIGEN_MEMBER_FUNCTOR(mean, (Size-1)*NumTraits<Scalar>::AddCost + NumTraits<Scalar>::MulCost);
+EIGEN_MEMBER_FUNCTOR(minCoeff, (Size-1)*NumTraits<Scalar>::AddCost);
+EIGEN_MEMBER_FUNCTOR(maxCoeff, (Size-1)*NumTraits<Scalar>::AddCost);
+EIGEN_MEMBER_FUNCTOR(all, (Size-1)*NumTraits<Scalar>::AddCost);
+EIGEN_MEMBER_FUNCTOR(any, (Size-1)*NumTraits<Scalar>::AddCost);
+EIGEN_MEMBER_FUNCTOR(count, (Size-1)*NumTraits<Scalar>::AddCost);
+EIGEN_MEMBER_FUNCTOR(prod, (Size-1)*NumTraits<Scalar>::MulCost);
+
+template <int p, typename ResultType>
+struct member_lpnorm {
+  typedef ResultType result_type;
+  template<typename Scalar, int Size> struct Cost
+  { enum { value = (Size+5) * NumTraits<Scalar>::MulCost + (Size-1)*NumTraits<Scalar>::AddCost }; };
+  EIGEN_DEVICE_FUNC member_lpnorm() {}
+  template<typename XprType>
+  EIGEN_DEVICE_FUNC inline ResultType operator()(const XprType& mat) const
+  { return mat.template lpNorm<p>(); }
+};
+
+template <typename BinaryOp, typename Scalar>
+struct member_redux {
+  typedef typename result_of<
+                     BinaryOp(const Scalar&,const Scalar&)
+                   >::type  result_type;
+  template<typename _Scalar, int Size> struct Cost
+  { enum { value = (Size-1) * functor_traits<BinaryOp>::Cost }; };
+  EIGEN_DEVICE_FUNC explicit member_redux(const BinaryOp func) : m_functor(func) {}
+  template<typename Derived>
+  EIGEN_DEVICE_FUNC inline result_type operator()(const DenseBase<Derived>& mat) const
+  { return mat.redux(m_functor); }
+  const BinaryOp m_functor;
+};
+}
+
+/** \class VectorwiseOp
+  * \ingroup Core_Module
+  *
+  * \brief Pseudo expression providing partial reduction operations
+  *
+  * \tparam ExpressionType the type of the object on which to do partial reductions
+  * \tparam Direction indicates the direction of the redux (#Vertical or #Horizontal)
+  *
+  * This class represents a pseudo expression with partial reduction features.
+  * It is the return type of DenseBase::colwise() and DenseBase::rowwise()
+  * and most of the time this is the only way it is used.
+  *
+  * Example: \include MatrixBase_colwise.cpp
+  * Output: \verbinclude MatrixBase_colwise.out
+  *
+  * \sa DenseBase::colwise(), DenseBase::rowwise(), class PartialReduxExpr
+  */
+template<typename ExpressionType, int Direction> class VectorwiseOp
+{
+  public:
+
+    typedef typename ExpressionType::Scalar Scalar;
+    typedef typename ExpressionType::RealScalar RealScalar;
+    typedef Eigen::Index Index; ///< \deprecated since Eigen 3.3
+    typedef typename internal::ref_selector<ExpressionType>::non_const_type ExpressionTypeNested;
+    typedef typename internal::remove_all<ExpressionTypeNested>::type ExpressionTypeNestedCleaned;
+
+    template<template<typename _Scalar> class Functor,
+                      typename Scalar_=Scalar> struct ReturnType
+    {
+      typedef PartialReduxExpr<ExpressionType,
+                               Functor<Scalar_>,
+                               Direction
+                              > Type;
+    };
+
+    template<typename BinaryOp> struct ReduxReturnType
+    {
+      typedef PartialReduxExpr<ExpressionType,
+                               internal::member_redux<BinaryOp,Scalar>,
+                               Direction
+                              > Type;
+    };
+
+    enum {
+      isVertical   = (Direction==Vertical) ? 1 : 0,
+      isHorizontal = (Direction==Horizontal) ? 1 : 0
+    };
+
+  protected:
+
+    typedef typename internal::conditional<isVertical,
+                               typename ExpressionType::ColXpr,
+                               typename ExpressionType::RowXpr>::type SubVector;
+    /** \internal
+      * \returns the i-th subvector according to the \c Direction */
+    EIGEN_DEVICE_FUNC
+    SubVector subVector(Index i)
+    {
+      return SubVector(m_matrix.derived(),i);
+    }
+
+    /** \internal
+      * \returns the number of subvectors in the direction \c Direction */
+    EIGEN_DEVICE_FUNC
+    Index subVectors() const
+    { return isVertical?m_matrix.cols():m_matrix.rows(); }
+
+    template<typename OtherDerived> struct ExtendedType {
+      typedef Replicate<OtherDerived,
+                        isVertical   ? 1 : ExpressionType::RowsAtCompileTime,
+                        isHorizontal ? 1 : ExpressionType::ColsAtCompileTime> Type;
+    };
+
+    /** \internal
+      * Replicates a vector to match the size of \c *this */
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    typename ExtendedType<OtherDerived>::Type
+    extendedTo(const DenseBase<OtherDerived>& other) const
+    {
+      EIGEN_STATIC_ASSERT(EIGEN_IMPLIES(isVertical, OtherDerived::MaxColsAtCompileTime==1),
+                          YOU_PASSED_A_ROW_VECTOR_BUT_A_COLUMN_VECTOR_WAS_EXPECTED)
+      EIGEN_STATIC_ASSERT(EIGEN_IMPLIES(isHorizontal, OtherDerived::MaxRowsAtCompileTime==1),
+                          YOU_PASSED_A_COLUMN_VECTOR_BUT_A_ROW_VECTOR_WAS_EXPECTED)
+      return typename ExtendedType<OtherDerived>::Type
+                      (other.derived(),
+                       isVertical   ? 1 : m_matrix.rows(),
+                       isHorizontal ? 1 : m_matrix.cols());
+    }
+
+    template<typename OtherDerived> struct OppositeExtendedType {
+      typedef Replicate<OtherDerived,
+                        isHorizontal ? 1 : ExpressionType::RowsAtCompileTime,
+                        isVertical   ? 1 : ExpressionType::ColsAtCompileTime> Type;
+    };
+
+    /** \internal
+      * Replicates a vector in the opposite direction to match the size of \c *this */
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    typename OppositeExtendedType<OtherDerived>::Type
+    extendedToOpposite(const DenseBase<OtherDerived>& other) const
+    {
+      EIGEN_STATIC_ASSERT(EIGEN_IMPLIES(isHorizontal, OtherDerived::MaxColsAtCompileTime==1),
+                          YOU_PASSED_A_ROW_VECTOR_BUT_A_COLUMN_VECTOR_WAS_EXPECTED)
+      EIGEN_STATIC_ASSERT(EIGEN_IMPLIES(isVertical, OtherDerived::MaxRowsAtCompileTime==1),
+                          YOU_PASSED_A_COLUMN_VECTOR_BUT_A_ROW_VECTOR_WAS_EXPECTED)
+      return typename OppositeExtendedType<OtherDerived>::Type
+                      (other.derived(),
+                       isHorizontal  ? 1 : m_matrix.rows(),
+                       isVertical    ? 1 : m_matrix.cols());
+    }
+
+  public:
+    EIGEN_DEVICE_FUNC
+    explicit inline VectorwiseOp(ExpressionType& matrix) : m_matrix(matrix) {}
+
+    /** \internal */
+    EIGEN_DEVICE_FUNC
+    inline const ExpressionType& _expression() const { return m_matrix; }
+
+    /** \returns a row or column vector expression of \c *this reduxed by \a func
+      *
+      * The template parameter \a BinaryOp is the type of the functor
+      * of the custom redux operator. Note that func must be an associative operator.
+      *
+      * \sa class VectorwiseOp, DenseBase::colwise(), DenseBase::rowwise()
+      */
+    template<typename BinaryOp>
+    EIGEN_DEVICE_FUNC
+    const typename ReduxReturnType<BinaryOp>::Type
+    redux(const BinaryOp& func = BinaryOp()) const
+    { return typename ReduxReturnType<BinaryOp>::Type(_expression(), internal::member_redux<BinaryOp,Scalar>(func)); }
+
+    typedef typename ReturnType<internal::member_minCoeff>::Type MinCoeffReturnType;
+    typedef typename ReturnType<internal::member_maxCoeff>::Type MaxCoeffReturnType;
+    typedef typename ReturnType<internal::member_squaredNorm,RealScalar>::Type SquaredNormReturnType;
+    typedef typename ReturnType<internal::member_norm,RealScalar>::Type NormReturnType;
+    typedef typename ReturnType<internal::member_blueNorm,RealScalar>::Type BlueNormReturnType;
+    typedef typename ReturnType<internal::member_stableNorm,RealScalar>::Type StableNormReturnType;
+    typedef typename ReturnType<internal::member_hypotNorm,RealScalar>::Type HypotNormReturnType;
+    typedef typename ReturnType<internal::member_sum>::Type SumReturnType;
+    typedef typename ReturnType<internal::member_mean>::Type MeanReturnType;
+    typedef typename ReturnType<internal::member_all>::Type AllReturnType;
+    typedef typename ReturnType<internal::member_any>::Type AnyReturnType;
+    typedef PartialReduxExpr<ExpressionType, internal::member_count<Index>, Direction> CountReturnType;
+    typedef typename ReturnType<internal::member_prod>::Type ProdReturnType;
+    typedef Reverse<const ExpressionType, Direction> ConstReverseReturnType;
+    typedef Reverse<ExpressionType, Direction> ReverseReturnType;
+
+    template<int p> struct LpNormReturnType {
+      typedef PartialReduxExpr<ExpressionType, internal::member_lpnorm<p,RealScalar>,Direction> Type;
+    };
+
+    /** \returns a row (or column) vector expression of the smallest coefficient
+      * of each column (or row) of the referenced expression.
+      *
+      * \warning the result is undefined if \c *this contains NaN.
+      *
+      * Example: \include PartialRedux_minCoeff.cpp
+      * Output: \verbinclude PartialRedux_minCoeff.out
+      *
+      * \sa DenseBase::minCoeff() */
+    EIGEN_DEVICE_FUNC
+    const MinCoeffReturnType minCoeff() const
+    { return MinCoeffReturnType(_expression()); }
+
+    /** \returns a row (or column) vector expression of the largest coefficient
+      * of each column (or row) of the referenced expression.
+      *
+      * \warning the result is undefined if \c *this contains NaN.
+      *
+      * Example: \include PartialRedux_maxCoeff.cpp
+      * Output: \verbinclude PartialRedux_maxCoeff.out
+      *
+      * \sa DenseBase::maxCoeff() */
+    EIGEN_DEVICE_FUNC
+    const MaxCoeffReturnType maxCoeff() const
+    { return MaxCoeffReturnType(_expression()); }
+
+    /** \returns a row (or column) vector expression of the squared norm
+      * of each column (or row) of the referenced expression.
+      * This is a vector with real entries, even if the original matrix has complex entries.
+      *
+      * Example: \include PartialRedux_squaredNorm.cpp
+      * Output: \verbinclude PartialRedux_squaredNorm.out
+      *
+      * \sa DenseBase::squaredNorm() */
+    EIGEN_DEVICE_FUNC
+    const SquaredNormReturnType squaredNorm() const
+    { return SquaredNormReturnType(_expression()); }
+
+    /** \returns a row (or column) vector expression of the norm
+      * of each column (or row) of the referenced expression.
+      * This is a vector with real entries, even if the original matrix has complex entries.
+      *
+      * Example: \include PartialRedux_norm.cpp
+      * Output: \verbinclude PartialRedux_norm.out
+      *
+      * \sa DenseBase::norm() */
+    EIGEN_DEVICE_FUNC
+    const NormReturnType norm() const
+    { return NormReturnType(_expression()); }
+
+    /** \returns a row (or column) vector expression of the norm
+      * of each column (or row) of the referenced expression.
+      * This is a vector with real entries, even if the original matrix has complex entries.
+      *
+      * Example: \include PartialRedux_norm.cpp
+      * Output: \verbinclude PartialRedux_norm.out
+      *
+      * \sa DenseBase::norm() */
+    template<int p>
+    EIGEN_DEVICE_FUNC
+    const typename LpNormReturnType<p>::Type lpNorm() const
+    { return typename LpNormReturnType<p>::Type(_expression()); }
+
+
+    /** \returns a row (or column) vector expression of the norm
+      * of each column (or row) of the referenced expression, using
+      * Blue's algorithm.
+      * This is a vector with real entries, even if the original matrix has complex entries.
+      *
+      * \sa DenseBase::blueNorm() */
+    EIGEN_DEVICE_FUNC
+    const BlueNormReturnType blueNorm() const
+    { return BlueNormReturnType(_expression()); }
+
+
+    /** \returns a row (or column) vector expression of the norm
+      * of each column (or row) of the referenced expression, avoiding
+      * underflow and overflow.
+      * This is a vector with real entries, even if the original matrix has complex entries.
+      *
+      * \sa DenseBase::stableNorm() */
+    EIGEN_DEVICE_FUNC
+    const StableNormReturnType stableNorm() const
+    { return StableNormReturnType(_expression()); }
+
+
+    /** \returns a row (or column) vector expression of the norm
+      * of each column (or row) of the referenced expression, avoiding
+      * underflow and overflow using a concatenation of hypot() calls.
+      * This is a vector with real entries, even if the original matrix has complex entries.
+      *
+      * \sa DenseBase::hypotNorm() */
+    EIGEN_DEVICE_FUNC
+    const HypotNormReturnType hypotNorm() const
+    { return HypotNormReturnType(_expression()); }
+
+    /** \returns a row (or column) vector expression of the sum
+      * of each column (or row) of the referenced expression.
+      *
+      * Example: \include PartialRedux_sum.cpp
+      * Output: \verbinclude PartialRedux_sum.out
+      *
+      * \sa DenseBase::sum() */
+    EIGEN_DEVICE_FUNC
+    const SumReturnType sum() const
+    { return SumReturnType(_expression()); }
+
+    /** \returns a row (or column) vector expression of the mean
+    * of each column (or row) of the referenced expression.
+    *
+    * \sa DenseBase::mean() */
+    EIGEN_DEVICE_FUNC
+    const MeanReturnType mean() const
+    { return MeanReturnType(_expression()); }
+
+    /** \returns a row (or column) vector expression representing
+      * whether \b all coefficients of each respective column (or row) are \c true.
+      * This expression can be assigned to a vector with entries of type \c bool.
+      *
+      * \sa DenseBase::all() */
+    EIGEN_DEVICE_FUNC
+    const AllReturnType all() const
+    { return AllReturnType(_expression()); }
+
+    /** \returns a row (or column) vector expression representing
+      * whether \b at \b least one coefficient of each respective column (or row) is \c true.
+      * This expression can be assigned to a vector with entries of type \c bool.
+      *
+      * \sa DenseBase::any() */
+    EIGEN_DEVICE_FUNC
+    const AnyReturnType any() const
+    { return AnyReturnType(_expression()); }
+
+    /** \returns a row (or column) vector expression representing
+      * the number of \c true coefficients of each respective column (or row).
+      * This expression can be assigned to a vector whose entries have the same type as is used to
+      * index entries of the original matrix; for dense matrices, this is \c std::ptrdiff_t .
+      *
+      * Example: \include PartialRedux_count.cpp
+      * Output: \verbinclude PartialRedux_count.out
+      *
+      * \sa DenseBase::count() */
+    EIGEN_DEVICE_FUNC
+    const CountReturnType count() const
+    { return CountReturnType(_expression()); }
+
+    /** \returns a row (or column) vector expression of the product
+      * of each column (or row) of the referenced expression.
+      *
+      * Example: \include PartialRedux_prod.cpp
+      * Output: \verbinclude PartialRedux_prod.out
+      *
+      * \sa DenseBase::prod() */
+    EIGEN_DEVICE_FUNC
+    const ProdReturnType prod() const
+    { return ProdReturnType(_expression()); }
+
+
+    /** \returns a matrix expression
+      * where each column (or row) are reversed.
+      *
+      * Example: \include Vectorwise_reverse.cpp
+      * Output: \verbinclude Vectorwise_reverse.out
+      *
+      * \sa DenseBase::reverse() */
+    EIGEN_DEVICE_FUNC
+    const ConstReverseReturnType reverse() const
+    { return ConstReverseReturnType( _expression() ); }
+
+    /** \returns a writable matrix expression
+      * where each column (or row) are reversed.
+      *
+      * \sa reverse() const */
+    EIGEN_DEVICE_FUNC
+    ReverseReturnType reverse()
+    { return ReverseReturnType( _expression() ); }
+
+    typedef Replicate<ExpressionType,(isVertical?Dynamic:1),(isHorizontal?Dynamic:1)> ReplicateReturnType;
+    EIGEN_DEVICE_FUNC
+    const ReplicateReturnType replicate(Index factor) const;
+
+    /**
+      * \return an expression of the replication of each column (or row) of \c *this
+      *
+      * Example: \include DirectionWise_replicate.cpp
+      * Output: \verbinclude DirectionWise_replicate.out
+      *
+      * \sa VectorwiseOp::replicate(Index), DenseBase::replicate(), class Replicate
+      */
+    // NOTE implemented here because of sunstudio's compilation errors
+    // isVertical*Factor+isHorizontal instead of (isVertical?Factor:1) to handle CUDA bug with ternary operator
+    template<int Factor> const Replicate<ExpressionType,isVertical*Factor+isHorizontal,isHorizontal*Factor+isVertical>
+    EIGEN_DEVICE_FUNC
+    replicate(Index factor = Factor) const
+    {
+      return Replicate<ExpressionType,(isVertical?Factor:1),(isHorizontal?Factor:1)>
+          (_expression(),isVertical?factor:1,isHorizontal?factor:1);
+    }
+
+/////////// Artithmetic operators ///////////
+
+    /** Copies the vector \a other to each subvector of \c *this */
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    ExpressionType& operator=(const DenseBase<OtherDerived>& other)
+    {
+      EIGEN_STATIC_ASSERT_VECTOR_ONLY(OtherDerived)
+      EIGEN_STATIC_ASSERT_SAME_XPR_KIND(ExpressionType, OtherDerived)
+      //eigen_assert((m_matrix.isNull()) == (other.isNull())); FIXME
+      return const_cast<ExpressionType&>(m_matrix = extendedTo(other.derived()));
+    }
+
+    /** Adds the vector \a other to each subvector of \c *this */
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    ExpressionType& operator+=(const DenseBase<OtherDerived>& other)
+    {
+      EIGEN_STATIC_ASSERT_VECTOR_ONLY(OtherDerived)
+      EIGEN_STATIC_ASSERT_SAME_XPR_KIND(ExpressionType, OtherDerived)
+      return const_cast<ExpressionType&>(m_matrix += extendedTo(other.derived()));
+    }
+
+    /** Substracts the vector \a other to each subvector of \c *this */
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    ExpressionType& operator-=(const DenseBase<OtherDerived>& other)
+    {
+      EIGEN_STATIC_ASSERT_VECTOR_ONLY(OtherDerived)
+      EIGEN_STATIC_ASSERT_SAME_XPR_KIND(ExpressionType, OtherDerived)
+      return const_cast<ExpressionType&>(m_matrix -= extendedTo(other.derived()));
+    }
+
+    /** Multiples each subvector of \c *this by the vector \a other */
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    ExpressionType& operator*=(const DenseBase<OtherDerived>& other)
+    {
+      EIGEN_STATIC_ASSERT_VECTOR_ONLY(OtherDerived)
+      EIGEN_STATIC_ASSERT_ARRAYXPR(ExpressionType)
+      EIGEN_STATIC_ASSERT_SAME_XPR_KIND(ExpressionType, OtherDerived)
+      m_matrix *= extendedTo(other.derived());
+      return const_cast<ExpressionType&>(m_matrix);
+    }
+
+    /** Divides each subvector of \c *this by the vector \a other */
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    ExpressionType& operator/=(const DenseBase<OtherDerived>& other)
+    {
+      EIGEN_STATIC_ASSERT_VECTOR_ONLY(OtherDerived)
+      EIGEN_STATIC_ASSERT_ARRAYXPR(ExpressionType)
+      EIGEN_STATIC_ASSERT_SAME_XPR_KIND(ExpressionType, OtherDerived)
+      m_matrix /= extendedTo(other.derived());
+      return const_cast<ExpressionType&>(m_matrix);
+    }
+
+    /** Returns the expression of the sum of the vector \a other to each subvector of \c *this */
+    template<typename OtherDerived> EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC
+    CwiseBinaryOp<internal::scalar_sum_op<Scalar,typename OtherDerived::Scalar>,
+                  const ExpressionTypeNestedCleaned,
+                  const typename ExtendedType<OtherDerived>::Type>
+    operator+(const DenseBase<OtherDerived>& other) const
+    {
+      EIGEN_STATIC_ASSERT_VECTOR_ONLY(OtherDerived)
+      EIGEN_STATIC_ASSERT_SAME_XPR_KIND(ExpressionType, OtherDerived)
+      return m_matrix + extendedTo(other.derived());
+    }
+
+    /** Returns the expression of the difference between each subvector of \c *this and the vector \a other */
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    CwiseBinaryOp<internal::scalar_difference_op<Scalar,typename OtherDerived::Scalar>,
+                  const ExpressionTypeNestedCleaned,
+                  const typename ExtendedType<OtherDerived>::Type>
+    operator-(const DenseBase<OtherDerived>& other) const
+    {
+      EIGEN_STATIC_ASSERT_VECTOR_ONLY(OtherDerived)
+      EIGEN_STATIC_ASSERT_SAME_XPR_KIND(ExpressionType, OtherDerived)
+      return m_matrix - extendedTo(other.derived());
+    }
+
+    /** Returns the expression where each subvector is the product of the vector \a other
+      * by the corresponding subvector of \c *this */
+    template<typename OtherDerived> EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC
+    CwiseBinaryOp<internal::scalar_product_op<Scalar>,
+                  const ExpressionTypeNestedCleaned,
+                  const typename ExtendedType<OtherDerived>::Type>
+    EIGEN_DEVICE_FUNC
+    operator*(const DenseBase<OtherDerived>& other) const
+    {
+      EIGEN_STATIC_ASSERT_VECTOR_ONLY(OtherDerived)
+      EIGEN_STATIC_ASSERT_ARRAYXPR(ExpressionType)
+      EIGEN_STATIC_ASSERT_SAME_XPR_KIND(ExpressionType, OtherDerived)
+      return m_matrix * extendedTo(other.derived());
+    }
+
+    /** Returns the expression where each subvector is the quotient of the corresponding
+      * subvector of \c *this by the vector \a other */
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    CwiseBinaryOp<internal::scalar_quotient_op<Scalar>,
+                  const ExpressionTypeNestedCleaned,
+                  const typename ExtendedType<OtherDerived>::Type>
+    operator/(const DenseBase<OtherDerived>& other) const
+    {
+      EIGEN_STATIC_ASSERT_VECTOR_ONLY(OtherDerived)
+      EIGEN_STATIC_ASSERT_ARRAYXPR(ExpressionType)
+      EIGEN_STATIC_ASSERT_SAME_XPR_KIND(ExpressionType, OtherDerived)
+      return m_matrix / extendedTo(other.derived());
+    }
+
+    /** \returns an expression where each column (or row) of the referenced matrix are normalized.
+      * The referenced matrix is \b not modified.
+      * \sa MatrixBase::normalized(), normalize()
+      */
+    EIGEN_DEVICE_FUNC
+    CwiseBinaryOp<internal::scalar_quotient_op<Scalar>,
+                  const ExpressionTypeNestedCleaned,
+                  const typename OppositeExtendedType<typename ReturnType<internal::member_norm,RealScalar>::Type>::Type>
+    normalized() const { return m_matrix.cwiseQuotient(extendedToOpposite(this->norm())); }
+
+
+    /** Normalize in-place each row or columns of the referenced matrix.
+      * \sa MatrixBase::normalize(), normalized()
+      */
+    EIGEN_DEVICE_FUNC void normalize() {
+      m_matrix = this->normalized();
+    }
+
+    EIGEN_DEVICE_FUNC inline void reverseInPlace();
+
+/////////// Geometry module ///////////
+
+    typedef Homogeneous<ExpressionType,Direction> HomogeneousReturnType;
+    EIGEN_DEVICE_FUNC
+    HomogeneousReturnType homogeneous() const;
+
+    typedef typename ExpressionType::PlainObject CrossReturnType;
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    const CrossReturnType cross(const MatrixBase<OtherDerived>& other) const;
+
+    enum {
+      HNormalized_Size = Direction==Vertical ? internal::traits<ExpressionType>::RowsAtCompileTime
+                                             : internal::traits<ExpressionType>::ColsAtCompileTime,
+      HNormalized_SizeMinusOne = HNormalized_Size==Dynamic ? Dynamic : HNormalized_Size-1
+    };
+    typedef Block<const ExpressionType,
+                  Direction==Vertical   ? int(HNormalized_SizeMinusOne)
+                                        : int(internal::traits<ExpressionType>::RowsAtCompileTime),
+                  Direction==Horizontal ? int(HNormalized_SizeMinusOne)
+                                        : int(internal::traits<ExpressionType>::ColsAtCompileTime)>
+            HNormalized_Block;
+    typedef Block<const ExpressionType,
+                  Direction==Vertical   ? 1 : int(internal::traits<ExpressionType>::RowsAtCompileTime),
+                  Direction==Horizontal ? 1 : int(internal::traits<ExpressionType>::ColsAtCompileTime)>
+            HNormalized_Factors;
+    typedef CwiseBinaryOp<internal::scalar_quotient_op<typename internal::traits<ExpressionType>::Scalar>,
+                const HNormalized_Block,
+                const Replicate<HNormalized_Factors,
+                  Direction==Vertical   ? HNormalized_SizeMinusOne : 1,
+                  Direction==Horizontal ? HNormalized_SizeMinusOne : 1> >
+            HNormalizedReturnType;
+
+    EIGEN_DEVICE_FUNC
+    const HNormalizedReturnType hnormalized() const;
+
+  protected:
+    ExpressionTypeNested m_matrix;
+};
+
+//const colwise moved to DenseBase.h due to CUDA compiler bug
+
+
+/** \returns a writable VectorwiseOp wrapper of *this providing additional partial reduction operations
+  *
+  * \sa rowwise(), class VectorwiseOp, \ref TutorialReductionsVisitorsBroadcasting
+  */
+template<typename Derived>
+inline typename DenseBase<Derived>::ColwiseReturnType
+DenseBase<Derived>::colwise()
+{
+  return ColwiseReturnType(derived());
+}
+
+//const rowwise moved to DenseBase.h due to CUDA compiler bug
+
+
+/** \returns a writable VectorwiseOp wrapper of *this providing additional partial reduction operations
+  *
+  * \sa colwise(), class VectorwiseOp, \ref TutorialReductionsVisitorsBroadcasting
+  */
+template<typename Derived>
+inline typename DenseBase<Derived>::RowwiseReturnType
+DenseBase<Derived>::rowwise()
+{
+  return RowwiseReturnType(derived());
+}
+
+} // end namespace Eigen
+
+#endif // EIGEN_PARTIAL_REDUX_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/Stride.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/Stride.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/Stride.h	(revision 3762)
@@ -0,0 +1,111 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2010 Benoit Jacob <jacob.benoit.1@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_STRIDE_H
+#define EIGEN_STRIDE_H
+
+namespace Eigen { 
+
+/** \class Stride
+  * \ingroup Core_Module
+  *
+  * \brief Holds strides information for Map
+  *
+  * This class holds the strides information for mapping arrays with strides with class Map.
+  *
+  * It holds two values: the inner stride and the outer stride.
+  *
+  * The inner stride is the pointer increment between two consecutive entries within a given row of a
+  * row-major matrix or within a given column of a column-major matrix.
+  *
+  * The outer stride is the pointer increment between two consecutive rows of a row-major matrix or
+  * between two consecutive columns of a column-major matrix.
+  *
+  * These two values can be passed either at compile-time as template parameters, or at runtime as
+  * arguments to the constructor.
+  *
+  * Indeed, this class takes two template parameters:
+  *  \tparam _OuterStrideAtCompileTime the outer stride, or Dynamic if you want to specify it at runtime.
+  *  \tparam _InnerStrideAtCompileTime the inner stride, or Dynamic if you want to specify it at runtime.
+  *
+  * Here is an example:
+  * \include Map_general_stride.cpp
+  * Output: \verbinclude Map_general_stride.out
+  *
+  * \sa class InnerStride, class OuterStride, \ref TopicStorageOrders
+  */
+template<int _OuterStrideAtCompileTime, int _InnerStrideAtCompileTime>
+class Stride
+{
+  public:
+    typedef Eigen::Index Index; ///< \deprecated since Eigen 3.3
+    enum {
+      InnerStrideAtCompileTime = _InnerStrideAtCompileTime,
+      OuterStrideAtCompileTime = _OuterStrideAtCompileTime
+    };
+
+    /** Default constructor, for use when strides are fixed at compile time */
+    EIGEN_DEVICE_FUNC
+    Stride()
+      : m_outer(OuterStrideAtCompileTime), m_inner(InnerStrideAtCompileTime)
+    {
+      eigen_assert(InnerStrideAtCompileTime != Dynamic && OuterStrideAtCompileTime != Dynamic);
+    }
+
+    /** Constructor allowing to pass the strides at runtime */
+    EIGEN_DEVICE_FUNC
+    Stride(Index outerStride, Index innerStride)
+      : m_outer(outerStride), m_inner(innerStride)
+    {
+      eigen_assert(innerStride>=0 && outerStride>=0);
+    }
+
+    /** Copy constructor */
+    EIGEN_DEVICE_FUNC
+    Stride(const Stride& other)
+      : m_outer(other.outer()), m_inner(other.inner())
+    {}
+
+    /** \returns the outer stride */
+    EIGEN_DEVICE_FUNC
+    inline Index outer() const { return m_outer.value(); }
+    /** \returns the inner stride */
+    EIGEN_DEVICE_FUNC
+    inline Index inner() const { return m_inner.value(); }
+
+  protected:
+    internal::variable_if_dynamic<Index, OuterStrideAtCompileTime> m_outer;
+    internal::variable_if_dynamic<Index, InnerStrideAtCompileTime> m_inner;
+};
+
+/** \brief Convenience specialization of Stride to specify only an inner stride
+  * See class Map for some examples */
+template<int Value>
+class InnerStride : public Stride<0, Value>
+{
+    typedef Stride<0, Value> Base;
+  public:
+    EIGEN_DEVICE_FUNC InnerStride() : Base() {}
+    EIGEN_DEVICE_FUNC InnerStride(Index v) : Base(0, v) {} // FIXME making this explicit could break valid code
+};
+
+/** \brief Convenience specialization of Stride to specify only an outer stride
+  * See class Map for some examples */
+template<int Value>
+class OuterStride : public Stride<Value, 0>
+{
+    typedef Stride<Value, 0> Base;
+  public:
+    EIGEN_DEVICE_FUNC OuterStride() : Base() {}
+    EIGEN_DEVICE_FUNC OuterStride(Index v) : Base(v,0) {} // FIXME making this explicit could break valid code
+};
+
+} // end namespace Eigen
+
+#endif // EIGEN_STRIDE_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/Block.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/Block.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/Block.h	(revision 3762)
@@ -0,0 +1,452 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2008 Gael Guennebaud <gael.guennebaud@inria.fr>
+// Copyright (C) 2006-2010 Benoit Jacob <jacob.benoit.1@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_BLOCK_H
+#define EIGEN_BLOCK_H
+
+namespace Eigen { 
+
+namespace internal {
+template<typename XprType, int BlockRows, int BlockCols, bool InnerPanel>
+struct traits<Block<XprType, BlockRows, BlockCols, InnerPanel> > : traits<XprType>
+{
+  typedef typename traits<XprType>::Scalar Scalar;
+  typedef typename traits<XprType>::StorageKind StorageKind;
+  typedef typename traits<XprType>::XprKind XprKind;
+  typedef typename ref_selector<XprType>::type XprTypeNested;
+  typedef typename remove_reference<XprTypeNested>::type _XprTypeNested;
+  enum{
+    MatrixRows = traits<XprType>::RowsAtCompileTime,
+    MatrixCols = traits<XprType>::ColsAtCompileTime,
+    RowsAtCompileTime = MatrixRows == 0 ? 0 : BlockRows,
+    ColsAtCompileTime = MatrixCols == 0 ? 0 : BlockCols,
+    MaxRowsAtCompileTime = BlockRows==0 ? 0
+                         : RowsAtCompileTime != Dynamic ? int(RowsAtCompileTime)
+                         : int(traits<XprType>::MaxRowsAtCompileTime),
+    MaxColsAtCompileTime = BlockCols==0 ? 0
+                         : ColsAtCompileTime != Dynamic ? int(ColsAtCompileTime)
+                         : int(traits<XprType>::MaxColsAtCompileTime),
+
+    XprTypeIsRowMajor = (int(traits<XprType>::Flags)&RowMajorBit) != 0,
+    IsRowMajor = (MaxRowsAtCompileTime==1&&MaxColsAtCompileTime!=1) ? 1
+               : (MaxColsAtCompileTime==1&&MaxRowsAtCompileTime!=1) ? 0
+               : XprTypeIsRowMajor,
+    HasSameStorageOrderAsXprType = (IsRowMajor == XprTypeIsRowMajor),
+    InnerSize = IsRowMajor ? int(ColsAtCompileTime) : int(RowsAtCompileTime),
+    InnerStrideAtCompileTime = HasSameStorageOrderAsXprType
+                             ? int(inner_stride_at_compile_time<XprType>::ret)
+                             : int(outer_stride_at_compile_time<XprType>::ret),
+    OuterStrideAtCompileTime = HasSameStorageOrderAsXprType
+                             ? int(outer_stride_at_compile_time<XprType>::ret)
+                             : int(inner_stride_at_compile_time<XprType>::ret),
+
+    // FIXME, this traits is rather specialized for dense object and it needs to be cleaned further
+    FlagsLvalueBit = is_lvalue<XprType>::value ? LvalueBit : 0,
+    FlagsRowMajorBit = IsRowMajor ? RowMajorBit : 0,
+    Flags = (traits<XprType>::Flags & (DirectAccessBit | (InnerPanel?CompressedAccessBit:0))) | FlagsLvalueBit | FlagsRowMajorBit,
+    // FIXME DirectAccessBit should not be handled by expressions
+    // 
+    // Alignment is needed by MapBase's assertions
+    // We can sefely set it to false here. Internal alignment errors will be detected by an eigen_internal_assert in the respective evaluator
+    Alignment = 0
+  };
+};
+
+template<typename XprType, int BlockRows=Dynamic, int BlockCols=Dynamic, bool InnerPanel = false,
+         bool HasDirectAccess = internal::has_direct_access<XprType>::ret> class BlockImpl_dense;
+         
+} // end namespace internal
+
+template<typename XprType, int BlockRows, int BlockCols, bool InnerPanel, typename StorageKind> class BlockImpl;
+
+/** \class Block
+  * \ingroup Core_Module
+  *
+  * \brief Expression of a fixed-size or dynamic-size block
+  *
+  * \tparam XprType the type of the expression in which we are taking a block
+  * \tparam BlockRows the number of rows of the block we are taking at compile time (optional)
+  * \tparam BlockCols the number of columns of the block we are taking at compile time (optional)
+  * \tparam InnerPanel is true, if the block maps to a set of rows of a row major matrix or
+  *         to set of columns of a column major matrix (optional). The parameter allows to determine
+  *         at compile time whether aligned access is possible on the block expression.
+  *
+  * This class represents an expression of either a fixed-size or dynamic-size block. It is the return
+  * type of DenseBase::block(Index,Index,Index,Index) and DenseBase::block<int,int>(Index,Index) and
+  * most of the time this is the only way it is used.
+  *
+  * However, if you want to directly maniputate block expressions,
+  * for instance if you want to write a function returning such an expression, you
+  * will need to use this class.
+  *
+  * Here is an example illustrating the dynamic case:
+  * \include class_Block.cpp
+  * Output: \verbinclude class_Block.out
+  *
+  * \note Even though this expression has dynamic size, in the case where \a XprType
+  * has fixed size, this expression inherits a fixed maximal size which means that evaluating
+  * it does not cause a dynamic memory allocation.
+  *
+  * Here is an example illustrating the fixed-size case:
+  * \include class_FixedBlock.cpp
+  * Output: \verbinclude class_FixedBlock.out
+  *
+  * \sa DenseBase::block(Index,Index,Index,Index), DenseBase::block(Index,Index), class VectorBlock
+  */
+template<typename XprType, int BlockRows, int BlockCols, bool InnerPanel> class Block
+  : public BlockImpl<XprType, BlockRows, BlockCols, InnerPanel, typename internal::traits<XprType>::StorageKind>
+{
+    typedef BlockImpl<XprType, BlockRows, BlockCols, InnerPanel, typename internal::traits<XprType>::StorageKind> Impl;
+  public:
+    //typedef typename Impl::Base Base;
+    typedef Impl Base;
+    EIGEN_GENERIC_PUBLIC_INTERFACE(Block)
+    EIGEN_INHERIT_ASSIGNMENT_OPERATORS(Block)
+    
+    typedef typename internal::remove_all<XprType>::type NestedExpression;
+  
+    /** Column or Row constructor
+      */
+    EIGEN_DEVICE_FUNC
+    inline Block(XprType& xpr, Index i) : Impl(xpr,i)
+    {
+      eigen_assert( (i>=0) && (
+          ((BlockRows==1) && (BlockCols==XprType::ColsAtCompileTime) && i<xpr.rows())
+        ||((BlockRows==XprType::RowsAtCompileTime) && (BlockCols==1) && i<xpr.cols())));
+    }
+
+    /** Fixed-size constructor
+      */
+    EIGEN_DEVICE_FUNC
+    inline Block(XprType& xpr, Index startRow, Index startCol)
+      : Impl(xpr, startRow, startCol)
+    {
+      EIGEN_STATIC_ASSERT(RowsAtCompileTime!=Dynamic && ColsAtCompileTime!=Dynamic,THIS_METHOD_IS_ONLY_FOR_FIXED_SIZE)
+      eigen_assert(startRow >= 0 && BlockRows >= 0 && startRow + BlockRows <= xpr.rows()
+             && startCol >= 0 && BlockCols >= 0 && startCol + BlockCols <= xpr.cols());
+    }
+
+    /** Dynamic-size constructor
+      */
+    EIGEN_DEVICE_FUNC
+    inline Block(XprType& xpr,
+          Index startRow, Index startCol,
+          Index blockRows, Index blockCols)
+      : Impl(xpr, startRow, startCol, blockRows, blockCols)
+    {
+      eigen_assert((RowsAtCompileTime==Dynamic || RowsAtCompileTime==blockRows)
+          && (ColsAtCompileTime==Dynamic || ColsAtCompileTime==blockCols));
+      eigen_assert(startRow >= 0 && blockRows >= 0 && startRow  <= xpr.rows() - blockRows
+          && startCol >= 0 && blockCols >= 0 && startCol <= xpr.cols() - blockCols);
+    }
+};
+         
+// The generic default implementation for dense block simplu forward to the internal::BlockImpl_dense
+// that must be specialized for direct and non-direct access...
+template<typename XprType, int BlockRows, int BlockCols, bool InnerPanel>
+class BlockImpl<XprType, BlockRows, BlockCols, InnerPanel, Dense>
+  : public internal::BlockImpl_dense<XprType, BlockRows, BlockCols, InnerPanel>
+{
+    typedef internal::BlockImpl_dense<XprType, BlockRows, BlockCols, InnerPanel> Impl;
+    typedef typename XprType::StorageIndex StorageIndex;
+  public:
+    typedef Impl Base;
+    EIGEN_INHERIT_ASSIGNMENT_OPERATORS(BlockImpl)
+    EIGEN_DEVICE_FUNC inline BlockImpl(XprType& xpr, Index i) : Impl(xpr,i) {}
+    EIGEN_DEVICE_FUNC inline BlockImpl(XprType& xpr, Index startRow, Index startCol) : Impl(xpr, startRow, startCol) {}
+    EIGEN_DEVICE_FUNC
+    inline BlockImpl(XprType& xpr, Index startRow, Index startCol, Index blockRows, Index blockCols)
+      : Impl(xpr, startRow, startCol, blockRows, blockCols) {}
+};
+
+namespace internal {
+
+/** \internal Internal implementation of dense Blocks in the general case. */
+template<typename XprType, int BlockRows, int BlockCols, bool InnerPanel, bool HasDirectAccess> class BlockImpl_dense
+  : public internal::dense_xpr_base<Block<XprType, BlockRows, BlockCols, InnerPanel> >::type
+{
+    typedef Block<XprType, BlockRows, BlockCols, InnerPanel> BlockType;
+    typedef typename internal::ref_selector<XprType>::non_const_type XprTypeNested;
+  public:
+
+    typedef typename internal::dense_xpr_base<BlockType>::type Base;
+    EIGEN_DENSE_PUBLIC_INTERFACE(BlockType)
+    EIGEN_INHERIT_ASSIGNMENT_OPERATORS(BlockImpl_dense)
+
+    // class InnerIterator; // FIXME apparently never used
+
+    /** Column or Row constructor
+      */
+    EIGEN_DEVICE_FUNC
+    inline BlockImpl_dense(XprType& xpr, Index i)
+      : m_xpr(xpr),
+        // It is a row if and only if BlockRows==1 and BlockCols==XprType::ColsAtCompileTime,
+        // and it is a column if and only if BlockRows==XprType::RowsAtCompileTime and BlockCols==1,
+        // all other cases are invalid.
+        // The case a 1x1 matrix seems ambiguous, but the result is the same anyway.
+        m_startRow( (BlockRows==1) && (BlockCols==XprType::ColsAtCompileTime) ? i : 0),
+        m_startCol( (BlockRows==XprType::RowsAtCompileTime) && (BlockCols==1) ? i : 0),
+        m_blockRows(BlockRows==1 ? 1 : xpr.rows()),
+        m_blockCols(BlockCols==1 ? 1 : xpr.cols())
+    {}
+
+    /** Fixed-size constructor
+      */
+    EIGEN_DEVICE_FUNC
+    inline BlockImpl_dense(XprType& xpr, Index startRow, Index startCol)
+      : m_xpr(xpr), m_startRow(startRow), m_startCol(startCol),
+                    m_blockRows(BlockRows), m_blockCols(BlockCols)
+    {}
+
+    /** Dynamic-size constructor
+      */
+    EIGEN_DEVICE_FUNC
+    inline BlockImpl_dense(XprType& xpr,
+          Index startRow, Index startCol,
+          Index blockRows, Index blockCols)
+      : m_xpr(xpr), m_startRow(startRow), m_startCol(startCol),
+                    m_blockRows(blockRows), m_blockCols(blockCols)
+    {}
+
+    EIGEN_DEVICE_FUNC inline Index rows() const { return m_blockRows.value(); }
+    EIGEN_DEVICE_FUNC inline Index cols() const { return m_blockCols.value(); }
+
+    EIGEN_DEVICE_FUNC
+    inline Scalar& coeffRef(Index rowId, Index colId)
+    {
+      EIGEN_STATIC_ASSERT_LVALUE(XprType)
+      return m_xpr.coeffRef(rowId + m_startRow.value(), colId + m_startCol.value());
+    }
+
+    EIGEN_DEVICE_FUNC
+    inline const Scalar& coeffRef(Index rowId, Index colId) const
+    {
+      return m_xpr.derived().coeffRef(rowId + m_startRow.value(), colId + m_startCol.value());
+    }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const CoeffReturnType coeff(Index rowId, Index colId) const
+    {
+      return m_xpr.coeff(rowId + m_startRow.value(), colId + m_startCol.value());
+    }
+
+    EIGEN_DEVICE_FUNC
+    inline Scalar& coeffRef(Index index)
+    {
+      EIGEN_STATIC_ASSERT_LVALUE(XprType)
+      return m_xpr.coeffRef(m_startRow.value() + (RowsAtCompileTime == 1 ? 0 : index),
+                            m_startCol.value() + (RowsAtCompileTime == 1 ? index : 0));
+    }
+
+    EIGEN_DEVICE_FUNC
+    inline const Scalar& coeffRef(Index index) const
+    {
+      return m_xpr.coeffRef(m_startRow.value() + (RowsAtCompileTime == 1 ? 0 : index),
+                            m_startCol.value() + (RowsAtCompileTime == 1 ? index : 0));
+    }
+
+    EIGEN_DEVICE_FUNC
+    inline const CoeffReturnType coeff(Index index) const
+    {
+      return m_xpr.coeff(m_startRow.value() + (RowsAtCompileTime == 1 ? 0 : index),
+                         m_startCol.value() + (RowsAtCompileTime == 1 ? index : 0));
+    }
+
+    template<int LoadMode>
+    inline PacketScalar packet(Index rowId, Index colId) const
+    {
+      return m_xpr.template packet<Unaligned>(rowId + m_startRow.value(), colId + m_startCol.value());
+    }
+
+    template<int LoadMode>
+    inline void writePacket(Index rowId, Index colId, const PacketScalar& val)
+    {
+      m_xpr.template writePacket<Unaligned>(rowId + m_startRow.value(), colId + m_startCol.value(), val);
+    }
+
+    template<int LoadMode>
+    inline PacketScalar packet(Index index) const
+    {
+      return m_xpr.template packet<Unaligned>
+              (m_startRow.value() + (RowsAtCompileTime == 1 ? 0 : index),
+               m_startCol.value() + (RowsAtCompileTime == 1 ? index : 0));
+    }
+
+    template<int LoadMode>
+    inline void writePacket(Index index, const PacketScalar& val)
+    {
+      m_xpr.template writePacket<Unaligned>
+         (m_startRow.value() + (RowsAtCompileTime == 1 ? 0 : index),
+          m_startCol.value() + (RowsAtCompileTime == 1 ? index : 0), val);
+    }
+
+    #ifdef EIGEN_PARSED_BY_DOXYGEN
+    /** \sa MapBase::data() */
+    EIGEN_DEVICE_FUNC inline const Scalar* data() const;
+    EIGEN_DEVICE_FUNC inline Index innerStride() const;
+    EIGEN_DEVICE_FUNC inline Index outerStride() const;
+    #endif
+
+    EIGEN_DEVICE_FUNC
+    const typename internal::remove_all<XprTypeNested>::type& nestedExpression() const
+    { 
+      return m_xpr; 
+    }
+
+    EIGEN_DEVICE_FUNC
+    XprType& nestedExpression() { return m_xpr; }
+      
+    EIGEN_DEVICE_FUNC
+    StorageIndex startRow() const
+    { 
+      return m_startRow.value(); 
+    }
+      
+    EIGEN_DEVICE_FUNC
+    StorageIndex startCol() const
+    { 
+      return m_startCol.value(); 
+    }
+
+  protected:
+
+    XprTypeNested m_xpr;
+    const internal::variable_if_dynamic<StorageIndex, (XprType::RowsAtCompileTime == 1 && BlockRows==1) ? 0 : Dynamic> m_startRow;
+    const internal::variable_if_dynamic<StorageIndex, (XprType::ColsAtCompileTime == 1 && BlockCols==1) ? 0 : Dynamic> m_startCol;
+    const internal::variable_if_dynamic<StorageIndex, RowsAtCompileTime> m_blockRows;
+    const internal::variable_if_dynamic<StorageIndex, ColsAtCompileTime> m_blockCols;
+};
+
+/** \internal Internal implementation of dense Blocks in the direct access case.*/
+template<typename XprType, int BlockRows, int BlockCols, bool InnerPanel>
+class BlockImpl_dense<XprType,BlockRows,BlockCols, InnerPanel,true>
+  : public MapBase<Block<XprType, BlockRows, BlockCols, InnerPanel> >
+{
+    typedef Block<XprType, BlockRows, BlockCols, InnerPanel> BlockType;
+    typedef typename internal::ref_selector<XprType>::non_const_type XprTypeNested;
+    enum {
+      XprTypeIsRowMajor = (int(traits<XprType>::Flags)&RowMajorBit) != 0
+    };
+  public:
+
+    typedef MapBase<BlockType> Base;
+    EIGEN_DENSE_PUBLIC_INTERFACE(BlockType)
+    EIGEN_INHERIT_ASSIGNMENT_OPERATORS(BlockImpl_dense)
+
+    /** Column or Row constructor
+      */
+    EIGEN_DEVICE_FUNC
+    inline BlockImpl_dense(XprType& xpr, Index i)
+      : Base(xpr.data() + i * (    ((BlockRows==1) && (BlockCols==XprType::ColsAtCompileTime) && (!XprTypeIsRowMajor)) 
+                                || ((BlockRows==XprType::RowsAtCompileTime) && (BlockCols==1) && ( XprTypeIsRowMajor)) ? xpr.innerStride() : xpr.outerStride()),
+             BlockRows==1 ? 1 : xpr.rows(),
+             BlockCols==1 ? 1 : xpr.cols()),
+        m_xpr(xpr),
+        m_startRow( (BlockRows==1) && (BlockCols==XprType::ColsAtCompileTime) ? i : 0),
+        m_startCol( (BlockRows==XprType::RowsAtCompileTime) && (BlockCols==1) ? i : 0)
+    {
+      init();
+    }
+
+    /** Fixed-size constructor
+      */
+    EIGEN_DEVICE_FUNC
+    inline BlockImpl_dense(XprType& xpr, Index startRow, Index startCol)
+      : Base(xpr.data()+xpr.innerStride()*(XprTypeIsRowMajor?startCol:startRow) + xpr.outerStride()*(XprTypeIsRowMajor?startRow:startCol)),
+        m_xpr(xpr), m_startRow(startRow), m_startCol(startCol)
+    {
+      init();
+    }
+
+    /** Dynamic-size constructor
+      */
+    EIGEN_DEVICE_FUNC
+    inline BlockImpl_dense(XprType& xpr,
+          Index startRow, Index startCol,
+          Index blockRows, Index blockCols)
+      : Base(xpr.data()+xpr.innerStride()*(XprTypeIsRowMajor?startCol:startRow) + xpr.outerStride()*(XprTypeIsRowMajor?startRow:startCol), blockRows, blockCols),
+        m_xpr(xpr), m_startRow(startRow), m_startCol(startCol)
+    {
+      init();
+    }
+
+    EIGEN_DEVICE_FUNC
+    const typename internal::remove_all<XprTypeNested>::type& nestedExpression() const
+    { 
+      return m_xpr; 
+    }
+
+    EIGEN_DEVICE_FUNC
+    XprType& nestedExpression() { return m_xpr; }
+      
+    /** \sa MapBase::innerStride() */
+    EIGEN_DEVICE_FUNC
+    inline Index innerStride() const
+    {
+      return internal::traits<BlockType>::HasSameStorageOrderAsXprType
+             ? m_xpr.innerStride()
+             : m_xpr.outerStride();
+    }
+
+    /** \sa MapBase::outerStride() */
+    EIGEN_DEVICE_FUNC
+    inline Index outerStride() const
+    {
+      return m_outerStride;
+    }
+
+    EIGEN_DEVICE_FUNC
+    StorageIndex startRow() const
+    {
+      return m_startRow.value();
+    }
+
+    EIGEN_DEVICE_FUNC
+    StorageIndex startCol() const
+    {
+      return m_startCol.value();
+    }
+
+  #ifndef __SUNPRO_CC
+  // FIXME sunstudio is not friendly with the above friend...
+  // META-FIXME there is no 'friend' keyword around here. Is this obsolete?
+  protected:
+  #endif
+
+    #ifndef EIGEN_PARSED_BY_DOXYGEN
+    /** \internal used by allowAligned() */
+    EIGEN_DEVICE_FUNC
+    inline BlockImpl_dense(XprType& xpr, const Scalar* data, Index blockRows, Index blockCols)
+      : Base(data, blockRows, blockCols), m_xpr(xpr)
+    {
+      init();
+    }
+    #endif
+
+  protected:
+    EIGEN_DEVICE_FUNC
+    void init()
+    {
+      m_outerStride = internal::traits<BlockType>::HasSameStorageOrderAsXprType
+                    ? m_xpr.outerStride()
+                    : m_xpr.innerStride();
+    }
+
+    XprTypeNested m_xpr;
+    const internal::variable_if_dynamic<StorageIndex, (XprType::RowsAtCompileTime == 1 && BlockRows==1) ? 0 : Dynamic> m_startRow;
+    const internal::variable_if_dynamic<StorageIndex, (XprType::ColsAtCompileTime == 1 && BlockCols==1) ? 0 : Dynamic> m_startCol;
+    Index m_outerStride;
+};
+
+} // end namespace internal
+
+} // end namespace Eigen
+
+#endif // EIGEN_BLOCK_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/Visitor.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/Visitor.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/Visitor.h	(revision 3762)
@@ -0,0 +1,273 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2008 Gael Guennebaud <gael.guennebaud@inria.fr>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_VISITOR_H
+#define EIGEN_VISITOR_H
+
+namespace Eigen { 
+
+namespace internal {
+
+template<typename Visitor, typename Derived, int UnrollCount>
+struct visitor_impl
+{
+  enum {
+    col = (UnrollCount-1) / Derived::RowsAtCompileTime,
+    row = (UnrollCount-1) % Derived::RowsAtCompileTime
+  };
+
+  EIGEN_DEVICE_FUNC
+  static inline void run(const Derived &mat, Visitor& visitor)
+  {
+    visitor_impl<Visitor, Derived, UnrollCount-1>::run(mat, visitor);
+    visitor(mat.coeff(row, col), row, col);
+  }
+};
+
+template<typename Visitor, typename Derived>
+struct visitor_impl<Visitor, Derived, 1>
+{
+  EIGEN_DEVICE_FUNC
+  static inline void run(const Derived &mat, Visitor& visitor)
+  {
+    return visitor.init(mat.coeff(0, 0), 0, 0);
+  }
+};
+
+template<typename Visitor, typename Derived>
+struct visitor_impl<Visitor, Derived, Dynamic>
+{
+  EIGEN_DEVICE_FUNC
+  static inline void run(const Derived& mat, Visitor& visitor)
+  {
+    visitor.init(mat.coeff(0,0), 0, 0);
+    for(Index i = 1; i < mat.rows(); ++i)
+      visitor(mat.coeff(i, 0), i, 0);
+    for(Index j = 1; j < mat.cols(); ++j)
+      for(Index i = 0; i < mat.rows(); ++i)
+        visitor(mat.coeff(i, j), i, j);
+  }
+};
+
+// evaluator adaptor
+template<typename XprType>
+class visitor_evaluator
+{
+public:
+  EIGEN_DEVICE_FUNC
+  explicit visitor_evaluator(const XprType &xpr) : m_evaluator(xpr), m_xpr(xpr) {}
+  
+  typedef typename XprType::Scalar Scalar;
+  typedef typename XprType::CoeffReturnType CoeffReturnType;
+  
+  enum {
+    RowsAtCompileTime = XprType::RowsAtCompileTime,
+    CoeffReadCost = internal::evaluator<XprType>::CoeffReadCost
+  };
+  
+  EIGEN_DEVICE_FUNC Index rows() const { return m_xpr.rows(); }
+  EIGEN_DEVICE_FUNC Index cols() const { return m_xpr.cols(); }
+  EIGEN_DEVICE_FUNC Index size() const { return m_xpr.size(); }
+
+  EIGEN_DEVICE_FUNC CoeffReturnType coeff(Index row, Index col) const
+  { return m_evaluator.coeff(row, col); }
+  
+protected:
+  internal::evaluator<XprType> m_evaluator;
+  const XprType &m_xpr;
+};
+} // end namespace internal
+
+/** Applies the visitor \a visitor to the whole coefficients of the matrix or vector.
+  *
+  * The template parameter \a Visitor is the type of the visitor and provides the following interface:
+  * \code
+  * struct MyVisitor {
+  *   // called for the first coefficient
+  *   void init(const Scalar& value, Index i, Index j);
+  *   // called for all other coefficients
+  *   void operator() (const Scalar& value, Index i, Index j);
+  * };
+  * \endcode
+  *
+  * \note compared to one or two \em for \em loops, visitors offer automatic
+  * unrolling for small fixed size matrix.
+  *
+  * \sa minCoeff(Index*,Index*), maxCoeff(Index*,Index*), DenseBase::redux()
+  */
+template<typename Derived>
+template<typename Visitor>
+EIGEN_DEVICE_FUNC
+void DenseBase<Derived>::visit(Visitor& visitor) const
+{
+  typedef typename internal::visitor_evaluator<Derived> ThisEvaluator;
+  ThisEvaluator thisEval(derived());
+  
+  enum {
+    unroll =  SizeAtCompileTime != Dynamic
+           && SizeAtCompileTime * ThisEvaluator::CoeffReadCost + (SizeAtCompileTime-1) * internal::functor_traits<Visitor>::Cost <= EIGEN_UNROLLING_LIMIT
+  };
+  return internal::visitor_impl<Visitor, ThisEvaluator, unroll ? int(SizeAtCompileTime) : Dynamic>::run(thisEval, visitor);
+}
+
+namespace internal {
+
+/** \internal
+  * \brief Base class to implement min and max visitors
+  */
+template <typename Derived>
+struct coeff_visitor
+{
+  typedef typename Derived::Scalar Scalar;
+  Index row, col;
+  Scalar res;
+  EIGEN_DEVICE_FUNC
+  inline void init(const Scalar& value, Index i, Index j)
+  {
+    res = value;
+    row = i;
+    col = j;
+  }
+};
+
+/** \internal
+  * \brief Visitor computing the min coefficient with its value and coordinates
+  *
+  * \sa DenseBase::minCoeff(Index*, Index*)
+  */
+template <typename Derived>
+struct min_coeff_visitor : coeff_visitor<Derived>
+{
+  typedef typename Derived::Scalar Scalar;
+  EIGEN_DEVICE_FUNC
+  void operator() (const Scalar& value, Index i, Index j)
+  {
+    if(value < this->res)
+    {
+      this->res = value;
+      this->row = i;
+      this->col = j;
+    }
+  }
+};
+
+template<typename Scalar>
+struct functor_traits<min_coeff_visitor<Scalar> > {
+  enum {
+    Cost = NumTraits<Scalar>::AddCost
+  };
+};
+
+/** \internal
+  * \brief Visitor computing the max coefficient with its value and coordinates
+  *
+  * \sa DenseBase::maxCoeff(Index*, Index*)
+  */
+template <typename Derived>
+struct max_coeff_visitor : coeff_visitor<Derived>
+{
+  typedef typename Derived::Scalar Scalar; 
+  EIGEN_DEVICE_FUNC
+  void operator() (const Scalar& value, Index i, Index j)
+  {
+    if(value > this->res)
+    {
+      this->res = value;
+      this->row = i;
+      this->col = j;
+    }
+  }
+};
+
+template<typename Scalar>
+struct functor_traits<max_coeff_visitor<Scalar> > {
+  enum {
+    Cost = NumTraits<Scalar>::AddCost
+  };
+};
+
+} // end namespace internal
+
+/** \fn DenseBase<Derived>::minCoeff(IndexType* rowId, IndexType* colId) const
+  * \returns the minimum of all coefficients of *this and puts in *row and *col its location.
+  * \warning the result is undefined if \c *this contains NaN.
+  *
+  * \sa DenseBase::minCoeff(Index*), DenseBase::maxCoeff(Index*,Index*), DenseBase::visit(), DenseBase::minCoeff()
+  */
+template<typename Derived>
+template<typename IndexType>
+EIGEN_DEVICE_FUNC
+typename internal::traits<Derived>::Scalar
+DenseBase<Derived>::minCoeff(IndexType* rowId, IndexType* colId) const
+{
+  internal::min_coeff_visitor<Derived> minVisitor;
+  this->visit(minVisitor);
+  *rowId = minVisitor.row;
+  if (colId) *colId = minVisitor.col;
+  return minVisitor.res;
+}
+
+/** \returns the minimum of all coefficients of *this and puts in *index its location.
+  * \warning the result is undefined if \c *this contains NaN. 
+  *
+  * \sa DenseBase::minCoeff(IndexType*,IndexType*), DenseBase::maxCoeff(IndexType*,IndexType*), DenseBase::visit(), DenseBase::minCoeff()
+  */
+template<typename Derived>
+template<typename IndexType>
+EIGEN_DEVICE_FUNC
+typename internal::traits<Derived>::Scalar
+DenseBase<Derived>::minCoeff(IndexType* index) const
+{
+  EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
+  internal::min_coeff_visitor<Derived> minVisitor;
+  this->visit(minVisitor);
+  *index = IndexType((RowsAtCompileTime==1) ? minVisitor.col : minVisitor.row);
+  return minVisitor.res;
+}
+
+/** \fn DenseBase<Derived>::maxCoeff(IndexType* rowId, IndexType* colId) const
+  * \returns the maximum of all coefficients of *this and puts in *row and *col its location.
+  * \warning the result is undefined if \c *this contains NaN. 
+  *
+  * \sa DenseBase::minCoeff(IndexType*,IndexType*), DenseBase::visit(), DenseBase::maxCoeff()
+  */
+template<typename Derived>
+template<typename IndexType>
+EIGEN_DEVICE_FUNC
+typename internal::traits<Derived>::Scalar
+DenseBase<Derived>::maxCoeff(IndexType* rowPtr, IndexType* colPtr) const
+{
+  internal::max_coeff_visitor<Derived> maxVisitor;
+  this->visit(maxVisitor);
+  *rowPtr = maxVisitor.row;
+  if (colPtr) *colPtr = maxVisitor.col;
+  return maxVisitor.res;
+}
+
+/** \returns the maximum of all coefficients of *this and puts in *index its location.
+  * \warning the result is undefined if \c *this contains NaN.
+  *
+  * \sa DenseBase::maxCoeff(IndexType*,IndexType*), DenseBase::minCoeff(IndexType*,IndexType*), DenseBase::visitor(), DenseBase::maxCoeff()
+  */
+template<typename Derived>
+template<typename IndexType>
+EIGEN_DEVICE_FUNC
+typename internal::traits<Derived>::Scalar
+DenseBase<Derived>::maxCoeff(IndexType* index) const
+{
+  EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
+  internal::max_coeff_visitor<Derived> maxVisitor;
+  this->visit(maxVisitor);
+  *index = (RowsAtCompileTime==1) ? maxVisitor.col : maxVisitor.row;
+  return maxVisitor.res;
+}
+
+} // end namespace Eigen
+
+#endif // EIGEN_VISITOR_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/MatrixBase.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/MatrixBase.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/MatrixBase.h	(revision 3762)
@@ -0,0 +1,530 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2006-2009 Benoit Jacob <jacob.benoit.1@gmail.com>
+// Copyright (C) 2008 Gael Guennebaud <gael.guennebaud@inria.fr>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_MATRIXBASE_H
+#define EIGEN_MATRIXBASE_H
+
+namespace Eigen {
+
+/** \class MatrixBase
+  * \ingroup Core_Module
+  *
+  * \brief Base class for all dense matrices, vectors, and expressions
+  *
+  * This class is the base that is inherited by all matrix, vector, and related expression
+  * types. Most of the Eigen API is contained in this class, and its base classes. Other important
+  * classes for the Eigen API are Matrix, and VectorwiseOp.
+  *
+  * Note that some methods are defined in other modules such as the \ref LU_Module LU module
+  * for all functions related to matrix inversions.
+  *
+  * \tparam Derived is the derived type, e.g. a matrix type, or an expression, etc.
+  *
+  * When writing a function taking Eigen objects as argument, if you want your function
+  * to take as argument any matrix, vector, or expression, just let it take a
+  * MatrixBase argument. As an example, here is a function printFirstRow which, given
+  * a matrix, vector, or expression \a x, prints the first row of \a x.
+  *
+  * \code
+    template<typename Derived>
+    void printFirstRow(const Eigen::MatrixBase<Derived>& x)
+    {
+      cout << x.row(0) << endl;
+    }
+  * \endcode
+  *
+  * This class can be extended with the help of the plugin mechanism described on the page
+  * \ref TopicCustomizing_Plugins by defining the preprocessor symbol \c EIGEN_MATRIXBASE_PLUGIN.
+  *
+  * \sa \blank \ref TopicClassHierarchy
+  */
+template<typename Derived> class MatrixBase
+  : public DenseBase<Derived>
+{
+  public:
+#ifndef EIGEN_PARSED_BY_DOXYGEN
+    typedef MatrixBase StorageBaseType;
+    typedef typename internal::traits<Derived>::StorageKind StorageKind;
+    typedef typename internal::traits<Derived>::StorageIndex StorageIndex;
+    typedef typename internal::traits<Derived>::Scalar Scalar;
+    typedef typename internal::packet_traits<Scalar>::type PacketScalar;
+    typedef typename NumTraits<Scalar>::Real RealScalar;
+
+    typedef DenseBase<Derived> Base;
+    using Base::RowsAtCompileTime;
+    using Base::ColsAtCompileTime;
+    using Base::SizeAtCompileTime;
+    using Base::MaxRowsAtCompileTime;
+    using Base::MaxColsAtCompileTime;
+    using Base::MaxSizeAtCompileTime;
+    using Base::IsVectorAtCompileTime;
+    using Base::Flags;
+
+    using Base::derived;
+    using Base::const_cast_derived;
+    using Base::rows;
+    using Base::cols;
+    using Base::size;
+    using Base::coeff;
+    using Base::coeffRef;
+    using Base::lazyAssign;
+    using Base::eval;
+    using Base::operator+=;
+    using Base::operator-=;
+    using Base::operator*=;
+    using Base::operator/=;
+
+    typedef typename Base::CoeffReturnType CoeffReturnType;
+    typedef typename Base::ConstTransposeReturnType ConstTransposeReturnType;
+    typedef typename Base::RowXpr RowXpr;
+    typedef typename Base::ColXpr ColXpr;
+#endif // not EIGEN_PARSED_BY_DOXYGEN
+
+
+
+#ifndef EIGEN_PARSED_BY_DOXYGEN
+    /** type of the equivalent square matrix */
+    typedef Matrix<Scalar,EIGEN_SIZE_MAX(RowsAtCompileTime,ColsAtCompileTime),
+                          EIGEN_SIZE_MAX(RowsAtCompileTime,ColsAtCompileTime)> SquareMatrixType;
+#endif // not EIGEN_PARSED_BY_DOXYGEN
+
+    /** \returns the size of the main diagonal, which is min(rows(),cols()).
+      * \sa rows(), cols(), SizeAtCompileTime. */
+    EIGEN_DEVICE_FUNC
+    inline Index diagonalSize() const { return (numext::mini)(rows(),cols()); }
+
+    typedef typename Base::PlainObject PlainObject;
+
+#ifndef EIGEN_PARSED_BY_DOXYGEN
+    /** \internal Represents a matrix with all coefficients equal to one another*/
+    typedef CwiseNullaryOp<internal::scalar_constant_op<Scalar>,PlainObject> ConstantReturnType;
+    /** \internal the return type of MatrixBase::adjoint() */
+    typedef typename internal::conditional<NumTraits<Scalar>::IsComplex,
+                        CwiseUnaryOp<internal::scalar_conjugate_op<Scalar>, ConstTransposeReturnType>,
+                        ConstTransposeReturnType
+                     >::type AdjointReturnType;
+    /** \internal Return type of eigenvalues() */
+    typedef Matrix<std::complex<RealScalar>, internal::traits<Derived>::ColsAtCompileTime, 1, ColMajor> EigenvaluesReturnType;
+    /** \internal the return type of identity */
+    typedef CwiseNullaryOp<internal::scalar_identity_op<Scalar>,PlainObject> IdentityReturnType;
+    /** \internal the return type of unit vectors */
+    typedef Block<const CwiseNullaryOp<internal::scalar_identity_op<Scalar>, SquareMatrixType>,
+                  internal::traits<Derived>::RowsAtCompileTime,
+                  internal::traits<Derived>::ColsAtCompileTime> BasisReturnType;
+#endif // not EIGEN_PARSED_BY_DOXYGEN
+
+#define EIGEN_CURRENT_STORAGE_BASE_CLASS Eigen::MatrixBase
+#define EIGEN_DOC_UNARY_ADDONS(X,Y)
+#   include "../plugins/CommonCwiseUnaryOps.h"
+#   include "../plugins/CommonCwiseBinaryOps.h"
+#   include "../plugins/MatrixCwiseUnaryOps.h"
+#   include "../plugins/MatrixCwiseBinaryOps.h"
+#   ifdef EIGEN_MATRIXBASE_PLUGIN
+#     include EIGEN_MATRIXBASE_PLUGIN
+#   endif
+#undef EIGEN_CURRENT_STORAGE_BASE_CLASS
+#undef EIGEN_DOC_UNARY_ADDONS
+
+    /** Special case of the template operator=, in order to prevent the compiler
+      * from generating a default operator= (issue hit with g++ 4.1)
+      */
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    Derived& operator=(const MatrixBase& other);
+
+    // We cannot inherit here via Base::operator= since it is causing
+    // trouble with MSVC.
+
+    template <typename OtherDerived>
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    Derived& operator=(const DenseBase<OtherDerived>& other);
+
+    template <typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    Derived& operator=(const EigenBase<OtherDerived>& other);
+
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    Derived& operator=(const ReturnByValue<OtherDerived>& other);
+
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    Derived& operator+=(const MatrixBase<OtherDerived>& other);
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    Derived& operator-=(const MatrixBase<OtherDerived>& other);
+
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    const Product<Derived,OtherDerived>
+    operator*(const MatrixBase<OtherDerived> &other) const;
+
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    const Product<Derived,OtherDerived,LazyProduct>
+    lazyProduct(const MatrixBase<OtherDerived> &other) const;
+
+    template<typename OtherDerived>
+    Derived& operator*=(const EigenBase<OtherDerived>& other);
+
+    template<typename OtherDerived>
+    void applyOnTheLeft(const EigenBase<OtherDerived>& other);
+
+    template<typename OtherDerived>
+    void applyOnTheRight(const EigenBase<OtherDerived>& other);
+
+    template<typename DiagonalDerived>
+    EIGEN_DEVICE_FUNC
+    const Product<Derived, DiagonalDerived, LazyProduct>
+    operator*(const DiagonalBase<DiagonalDerived> &diagonal) const;
+
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    typename ScalarBinaryOpTraits<typename internal::traits<Derived>::Scalar,typename internal::traits<OtherDerived>::Scalar>::ReturnType
+    dot(const MatrixBase<OtherDerived>& other) const;
+
+    EIGEN_DEVICE_FUNC RealScalar squaredNorm() const;
+    EIGEN_DEVICE_FUNC RealScalar norm() const;
+    RealScalar stableNorm() const;
+    RealScalar blueNorm() const;
+    RealScalar hypotNorm() const;
+    EIGEN_DEVICE_FUNC const PlainObject normalized() const;
+    EIGEN_DEVICE_FUNC const PlainObject stableNormalized() const;
+    EIGEN_DEVICE_FUNC void normalize();
+    EIGEN_DEVICE_FUNC void stableNormalize();
+
+    EIGEN_DEVICE_FUNC const AdjointReturnType adjoint() const;
+    EIGEN_DEVICE_FUNC void adjointInPlace();
+
+    typedef Diagonal<Derived> DiagonalReturnType;
+    EIGEN_DEVICE_FUNC
+    DiagonalReturnType diagonal();
+
+    typedef typename internal::add_const<Diagonal<const Derived> >::type ConstDiagonalReturnType;
+    EIGEN_DEVICE_FUNC
+    ConstDiagonalReturnType diagonal() const;
+
+    template<int Index> struct DiagonalIndexReturnType { typedef Diagonal<Derived,Index> Type; };
+    template<int Index> struct ConstDiagonalIndexReturnType { typedef const Diagonal<const Derived,Index> Type; };
+
+    template<int Index>
+    EIGEN_DEVICE_FUNC
+    typename DiagonalIndexReturnType<Index>::Type diagonal();
+
+    template<int Index>
+    EIGEN_DEVICE_FUNC
+    typename ConstDiagonalIndexReturnType<Index>::Type diagonal() const;
+
+    typedef Diagonal<Derived,DynamicIndex> DiagonalDynamicIndexReturnType;
+    typedef typename internal::add_const<Diagonal<const Derived,DynamicIndex> >::type ConstDiagonalDynamicIndexReturnType;
+
+    EIGEN_DEVICE_FUNC
+    DiagonalDynamicIndexReturnType diagonal(Index index);
+    EIGEN_DEVICE_FUNC
+    ConstDiagonalDynamicIndexReturnType diagonal(Index index) const;
+
+    template<unsigned int Mode> struct TriangularViewReturnType { typedef TriangularView<Derived, Mode> Type; };
+    template<unsigned int Mode> struct ConstTriangularViewReturnType { typedef const TriangularView<const Derived, Mode> Type; };
+
+    template<unsigned int Mode>
+    EIGEN_DEVICE_FUNC
+    typename TriangularViewReturnType<Mode>::Type triangularView();
+    template<unsigned int Mode>
+    EIGEN_DEVICE_FUNC
+    typename ConstTriangularViewReturnType<Mode>::Type triangularView() const;
+
+    template<unsigned int UpLo> struct SelfAdjointViewReturnType { typedef SelfAdjointView<Derived, UpLo> Type; };
+    template<unsigned int UpLo> struct ConstSelfAdjointViewReturnType { typedef const SelfAdjointView<const Derived, UpLo> Type; };
+
+    template<unsigned int UpLo>
+    EIGEN_DEVICE_FUNC
+    typename SelfAdjointViewReturnType<UpLo>::Type selfadjointView();
+    template<unsigned int UpLo>
+    EIGEN_DEVICE_FUNC
+    typename ConstSelfAdjointViewReturnType<UpLo>::Type selfadjointView() const;
+
+    const SparseView<Derived> sparseView(const Scalar& m_reference = Scalar(0),
+                                         const typename NumTraits<Scalar>::Real& m_epsilon = NumTraits<Scalar>::dummy_precision()) const;
+    EIGEN_DEVICE_FUNC static const IdentityReturnType Identity();
+    EIGEN_DEVICE_FUNC static const IdentityReturnType Identity(Index rows, Index cols);
+    EIGEN_DEVICE_FUNC static const BasisReturnType Unit(Index size, Index i);
+    EIGEN_DEVICE_FUNC static const BasisReturnType Unit(Index i);
+    EIGEN_DEVICE_FUNC static const BasisReturnType UnitX();
+    EIGEN_DEVICE_FUNC static const BasisReturnType UnitY();
+    EIGEN_DEVICE_FUNC static const BasisReturnType UnitZ();
+    EIGEN_DEVICE_FUNC static const BasisReturnType UnitW();
+
+    EIGEN_DEVICE_FUNC
+    const DiagonalWrapper<const Derived> asDiagonal() const;
+    const PermutationWrapper<const Derived> asPermutation() const;
+
+    EIGEN_DEVICE_FUNC
+    Derived& setIdentity();
+    EIGEN_DEVICE_FUNC
+    Derived& setIdentity(Index rows, Index cols);
+
+    bool isIdentity(const RealScalar& prec = NumTraits<Scalar>::dummy_precision()) const;
+    bool isDiagonal(const RealScalar& prec = NumTraits<Scalar>::dummy_precision()) const;
+
+    bool isUpperTriangular(const RealScalar& prec = NumTraits<Scalar>::dummy_precision()) const;
+    bool isLowerTriangular(const RealScalar& prec = NumTraits<Scalar>::dummy_precision()) const;
+
+    template<typename OtherDerived>
+    bool isOrthogonal(const MatrixBase<OtherDerived>& other,
+                      const RealScalar& prec = NumTraits<Scalar>::dummy_precision()) const;
+    bool isUnitary(const RealScalar& prec = NumTraits<Scalar>::dummy_precision()) const;
+
+    /** \returns true if each coefficients of \c *this and \a other are all exactly equal.
+      * \warning When using floating point scalar values you probably should rather use a
+      *          fuzzy comparison such as isApprox()
+      * \sa isApprox(), operator!= */
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC inline bool operator==(const MatrixBase<OtherDerived>& other) const
+    { return cwiseEqual(other).all(); }
+
+    /** \returns true if at least one pair of coefficients of \c *this and \a other are not exactly equal to each other.
+      * \warning When using floating point scalar values you probably should rather use a
+      *          fuzzy comparison such as isApprox()
+      * \sa isApprox(), operator== */
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC inline bool operator!=(const MatrixBase<OtherDerived>& other) const
+    { return cwiseNotEqual(other).any(); }
+
+    NoAlias<Derived,Eigen::MatrixBase > noalias();
+
+    // TODO forceAlignedAccess is temporarily disabled
+    // Need to find a nicer workaround.
+    inline const Derived& forceAlignedAccess() const { return derived(); }
+    inline Derived& forceAlignedAccess() { return derived(); }
+    template<bool Enable> inline const Derived& forceAlignedAccessIf() const { return derived(); }
+    template<bool Enable> inline Derived& forceAlignedAccessIf() { return derived(); }
+
+    EIGEN_DEVICE_FUNC Scalar trace() const;
+
+    template<int p> EIGEN_DEVICE_FUNC RealScalar lpNorm() const;
+
+    EIGEN_DEVICE_FUNC MatrixBase<Derived>& matrix() { return *this; }
+    EIGEN_DEVICE_FUNC const MatrixBase<Derived>& matrix() const { return *this; }
+
+    /** \returns an \link Eigen::ArrayBase Array \endlink expression of this matrix
+      * \sa ArrayBase::matrix() */
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE ArrayWrapper<Derived> array() { return ArrayWrapper<Derived>(derived()); }
+    /** \returns a const \link Eigen::ArrayBase Array \endlink expression of this matrix
+      * \sa ArrayBase::matrix() */
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const ArrayWrapper<const Derived> array() const { return ArrayWrapper<const Derived>(derived()); }
+
+/////////// LU module ///////////
+
+    inline const FullPivLU<PlainObject> fullPivLu() const;
+    inline const PartialPivLU<PlainObject> partialPivLu() const;
+
+    inline const PartialPivLU<PlainObject> lu() const;
+
+    inline const Inverse<Derived> inverse() const;
+
+    template<typename ResultType>
+    inline void computeInverseAndDetWithCheck(
+      ResultType& inverse,
+      typename ResultType::Scalar& determinant,
+      bool& invertible,
+      const RealScalar& absDeterminantThreshold = NumTraits<Scalar>::dummy_precision()
+    ) const;
+    template<typename ResultType>
+    inline void computeInverseWithCheck(
+      ResultType& inverse,
+      bool& invertible,
+      const RealScalar& absDeterminantThreshold = NumTraits<Scalar>::dummy_precision()
+    ) const;
+    Scalar determinant() const;
+
+/////////// Cholesky module ///////////
+
+    inline const LLT<PlainObject>  llt() const;
+    inline const LDLT<PlainObject> ldlt() const;
+
+/////////// QR module ///////////
+
+    inline const HouseholderQR<PlainObject> householderQr() const;
+    inline const ColPivHouseholderQR<PlainObject> colPivHouseholderQr() const;
+    inline const FullPivHouseholderQR<PlainObject> fullPivHouseholderQr() const;
+    inline const CompleteOrthogonalDecomposition<PlainObject> completeOrthogonalDecomposition() const;
+
+/////////// Eigenvalues module ///////////
+
+    inline EigenvaluesReturnType eigenvalues() const;
+    inline RealScalar operatorNorm() const;
+
+/////////// SVD module ///////////
+
+    inline JacobiSVD<PlainObject> jacobiSvd(unsigned int computationOptions = 0) const;
+    inline BDCSVD<PlainObject>    bdcSvd(unsigned int computationOptions = 0) const;
+
+/////////// Geometry module ///////////
+
+    #ifndef EIGEN_PARSED_BY_DOXYGEN
+    /// \internal helper struct to form the return type of the cross product
+    template<typename OtherDerived> struct cross_product_return_type {
+      typedef typename ScalarBinaryOpTraits<typename internal::traits<Derived>::Scalar,typename internal::traits<OtherDerived>::Scalar>::ReturnType Scalar;
+      typedef Matrix<Scalar,MatrixBase::RowsAtCompileTime,MatrixBase::ColsAtCompileTime> type;
+    };
+    #endif // EIGEN_PARSED_BY_DOXYGEN
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+#ifndef EIGEN_PARSED_BY_DOXYGEN
+    inline typename cross_product_return_type<OtherDerived>::type
+#else
+    inline PlainObject
+#endif
+    cross(const MatrixBase<OtherDerived>& other) const;
+
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    inline PlainObject cross3(const MatrixBase<OtherDerived>& other) const;
+
+    EIGEN_DEVICE_FUNC
+    inline PlainObject unitOrthogonal(void) const;
+
+    EIGEN_DEVICE_FUNC
+    inline Matrix<Scalar,3,1> eulerAngles(Index a0, Index a1, Index a2) const;
+
+    // put this as separate enum value to work around possible GCC 4.3 bug (?)
+    enum { HomogeneousReturnTypeDirection = ColsAtCompileTime==1&&RowsAtCompileTime==1 ? ((internal::traits<Derived>::Flags&RowMajorBit)==RowMajorBit ? Horizontal : Vertical)
+                                          : ColsAtCompileTime==1 ? Vertical : Horizontal };
+    typedef Homogeneous<Derived, HomogeneousReturnTypeDirection> HomogeneousReturnType;
+    EIGEN_DEVICE_FUNC
+    inline HomogeneousReturnType homogeneous() const;
+
+    enum {
+      SizeMinusOne = SizeAtCompileTime==Dynamic ? Dynamic : SizeAtCompileTime-1
+    };
+    typedef Block<const Derived,
+                  internal::traits<Derived>::ColsAtCompileTime==1 ? SizeMinusOne : 1,
+                  internal::traits<Derived>::ColsAtCompileTime==1 ? 1 : SizeMinusOne> ConstStartMinusOne;
+    typedef EIGEN_EXPR_BINARYOP_SCALAR_RETURN_TYPE(ConstStartMinusOne,Scalar,quotient) HNormalizedReturnType;
+    EIGEN_DEVICE_FUNC
+    inline const HNormalizedReturnType hnormalized() const;
+
+////////// Householder module ///////////
+
+    void makeHouseholderInPlace(Scalar& tau, RealScalar& beta);
+    template<typename EssentialPart>
+    void makeHouseholder(EssentialPart& essential,
+                         Scalar& tau, RealScalar& beta) const;
+    template<typename EssentialPart>
+    void applyHouseholderOnTheLeft(const EssentialPart& essential,
+                                   const Scalar& tau,
+                                   Scalar* workspace);
+    template<typename EssentialPart>
+    void applyHouseholderOnTheRight(const EssentialPart& essential,
+                                    const Scalar& tau,
+                                    Scalar* workspace);
+
+///////// Jacobi module /////////
+
+    template<typename OtherScalar>
+    void applyOnTheLeft(Index p, Index q, const JacobiRotation<OtherScalar>& j);
+    template<typename OtherScalar>
+    void applyOnTheRight(Index p, Index q, const JacobiRotation<OtherScalar>& j);
+
+///////// SparseCore module /////////
+
+    template<typename OtherDerived>
+    EIGEN_STRONG_INLINE const typename SparseMatrixBase<OtherDerived>::template CwiseProductDenseReturnType<Derived>::Type
+    cwiseProduct(const SparseMatrixBase<OtherDerived> &other) const
+    {
+      return other.cwiseProduct(derived());
+    }
+
+///////// MatrixFunctions module /////////
+
+    typedef typename internal::stem_function<Scalar>::type StemFunction;
+#define EIGEN_MATRIX_FUNCTION(ReturnType, Name, Description) \
+    /** \returns an expression of the matrix Description of \c *this. \brief This function requires the <a href="unsupported/group__MatrixFunctions__Module.html"> unsupported MatrixFunctions module</a>. To compute the coefficient-wise Description use ArrayBase::##Name . */ \
+    const ReturnType<Derived> Name() const;
+#define EIGEN_MATRIX_FUNCTION_1(ReturnType, Name, Description, Argument) \
+    /** \returns an expression of the matrix Description of \c *this. \brief This function requires the <a href="unsupported/group__MatrixFunctions__Module.html"> unsupported MatrixFunctions module</a>. To compute the coefficient-wise Description use ArrayBase::##Name . */ \
+    const ReturnType<Derived> Name(Argument) const;
+
+    EIGEN_MATRIX_FUNCTION(MatrixExponentialReturnValue, exp, exponential)
+    /** \brief Helper function for the <a href="unsupported/group__MatrixFunctions__Module.html"> unsupported MatrixFunctions module</a>.*/
+    const MatrixFunctionReturnValue<Derived> matrixFunction(StemFunction f) const;
+    EIGEN_MATRIX_FUNCTION(MatrixFunctionReturnValue, cosh, hyperbolic cosine)
+    EIGEN_MATRIX_FUNCTION(MatrixFunctionReturnValue, sinh, hyperbolic sine)
+    EIGEN_MATRIX_FUNCTION(MatrixFunctionReturnValue, cos, cosine)
+    EIGEN_MATRIX_FUNCTION(MatrixFunctionReturnValue, sin, sine)
+    EIGEN_MATRIX_FUNCTION(MatrixSquareRootReturnValue, sqrt, square root)
+    EIGEN_MATRIX_FUNCTION(MatrixLogarithmReturnValue, log, logarithm)
+    EIGEN_MATRIX_FUNCTION_1(MatrixPowerReturnValue,        pow, power to \c p, const RealScalar& p)
+    EIGEN_MATRIX_FUNCTION_1(MatrixComplexPowerReturnValue, pow, power to \c p, const std::complex<RealScalar>& p)
+
+  protected:
+    EIGEN_DEFAULT_COPY_CONSTRUCTOR(MatrixBase)
+    EIGEN_DEFAULT_EMPTY_CONSTRUCTOR_AND_DESTRUCTOR(MatrixBase)
+
+  private:
+    EIGEN_DEVICE_FUNC explicit MatrixBase(int);
+    EIGEN_DEVICE_FUNC MatrixBase(int,int);
+    template<typename OtherDerived> EIGEN_DEVICE_FUNC explicit MatrixBase(const MatrixBase<OtherDerived>&);
+  protected:
+    // mixing arrays and matrices is not legal
+    template<typename OtherDerived> Derived& operator+=(const ArrayBase<OtherDerived>& )
+    {EIGEN_STATIC_ASSERT(std::ptrdiff_t(sizeof(typename OtherDerived::Scalar))==-1,YOU_CANNOT_MIX_ARRAYS_AND_MATRICES); return *this;}
+    // mixing arrays and matrices is not legal
+    template<typename OtherDerived> Derived& operator-=(const ArrayBase<OtherDerived>& )
+    {EIGEN_STATIC_ASSERT(std::ptrdiff_t(sizeof(typename OtherDerived::Scalar))==-1,YOU_CANNOT_MIX_ARRAYS_AND_MATRICES); return *this;}
+};
+
+
+/***************************************************************************
+* Implementation of matrix base methods
+***************************************************************************/
+
+/** replaces \c *this by \c *this * \a other.
+  *
+  * \returns a reference to \c *this
+  *
+  * Example: \include MatrixBase_applyOnTheRight.cpp
+  * Output: \verbinclude MatrixBase_applyOnTheRight.out
+  */
+template<typename Derived>
+template<typename OtherDerived>
+inline Derived&
+MatrixBase<Derived>::operator*=(const EigenBase<OtherDerived> &other)
+{
+  other.derived().applyThisOnTheRight(derived());
+  return derived();
+}
+
+/** replaces \c *this by \c *this * \a other. It is equivalent to MatrixBase::operator*=().
+  *
+  * Example: \include MatrixBase_applyOnTheRight.cpp
+  * Output: \verbinclude MatrixBase_applyOnTheRight.out
+  */
+template<typename Derived>
+template<typename OtherDerived>
+inline void MatrixBase<Derived>::applyOnTheRight(const EigenBase<OtherDerived> &other)
+{
+  other.derived().applyThisOnTheRight(derived());
+}
+
+/** replaces \c *this by \a other * \c *this.
+  *
+  * Example: \include MatrixBase_applyOnTheLeft.cpp
+  * Output: \verbinclude MatrixBase_applyOnTheLeft.out
+  */
+template<typename Derived>
+template<typename OtherDerived>
+inline void MatrixBase<Derived>::applyOnTheLeft(const EigenBase<OtherDerived> &other)
+{
+  other.derived().applyThisOnTheLeft(derived());
+}
+
+} // end namespace Eigen
+
+#endif // EIGEN_MATRIXBASE_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/Transpositions.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/Transpositions.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/Transpositions.h	(revision 3762)
@@ -0,0 +1,368 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2010-2011 Gael Guennebaud <gael.guennebaud@inria.fr>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_TRANSPOSITIONS_H
+#define EIGEN_TRANSPOSITIONS_H
+
+namespace Eigen { 
+
+template<typename Derived>
+class TranspositionsBase
+{
+    typedef internal::traits<Derived> Traits;
+    
+  public:
+
+    typedef typename Traits::IndicesType IndicesType;
+    typedef typename IndicesType::Scalar StorageIndex;
+    typedef Eigen::Index Index; ///< \deprecated since Eigen 3.3
+
+    Derived& derived() { return *static_cast<Derived*>(this); }
+    const Derived& derived() const { return *static_cast<const Derived*>(this); }
+
+    /** Copies the \a other transpositions into \c *this */
+    template<typename OtherDerived>
+    Derived& operator=(const TranspositionsBase<OtherDerived>& other)
+    {
+      indices() = other.indices();
+      return derived();
+    }
+
+    /** \returns the number of transpositions */
+    Index size() const { return indices().size(); }
+    /** \returns the number of rows of the equivalent permutation matrix */
+    Index rows() const { return indices().size(); }
+    /** \returns the number of columns of the equivalent permutation matrix */
+    Index cols() const { return indices().size(); }
+
+    /** Direct access to the underlying index vector */
+    inline const StorageIndex& coeff(Index i) const { return indices().coeff(i); }
+    /** Direct access to the underlying index vector */
+    inline StorageIndex& coeffRef(Index i) { return indices().coeffRef(i); }
+    /** Direct access to the underlying index vector */
+    inline const StorageIndex& operator()(Index i) const { return indices()(i); }
+    /** Direct access to the underlying index vector */
+    inline StorageIndex& operator()(Index i) { return indices()(i); }
+    /** Direct access to the underlying index vector */
+    inline const StorageIndex& operator[](Index i) const { return indices()(i); }
+    /** Direct access to the underlying index vector */
+    inline StorageIndex& operator[](Index i) { return indices()(i); }
+
+    /** const version of indices(). */
+    const IndicesType& indices() const { return derived().indices(); }
+    /** \returns a reference to the stored array representing the transpositions. */
+    IndicesType& indices() { return derived().indices(); }
+
+    /** Resizes to given size. */
+    inline void resize(Index newSize)
+    {
+      indices().resize(newSize);
+    }
+
+    /** Sets \c *this to represents an identity transformation */
+    void setIdentity()
+    {
+      for(StorageIndex i = 0; i < indices().size(); ++i)
+        coeffRef(i) = i;
+    }
+
+    // FIXME: do we want such methods ?
+    // might be usefull when the target matrix expression is complex, e.g.:
+    // object.matrix().block(..,..,..,..) = trans * object.matrix().block(..,..,..,..);
+    /*
+    template<typename MatrixType>
+    void applyForwardToRows(MatrixType& mat) const
+    {
+      for(Index k=0 ; k<size() ; ++k)
+        if(m_indices(k)!=k)
+          mat.row(k).swap(mat.row(m_indices(k)));
+    }
+
+    template<typename MatrixType>
+    void applyBackwardToRows(MatrixType& mat) const
+    {
+      for(Index k=size()-1 ; k>=0 ; --k)
+        if(m_indices(k)!=k)
+          mat.row(k).swap(mat.row(m_indices(k)));
+    }
+    */
+
+    /** \returns the inverse transformation */
+    inline Transpose<TranspositionsBase> inverse() const
+    { return Transpose<TranspositionsBase>(derived()); }
+
+    /** \returns the tranpose transformation */
+    inline Transpose<TranspositionsBase> transpose() const
+    { return Transpose<TranspositionsBase>(derived()); }
+
+  protected:
+};
+
+namespace internal {
+template<int SizeAtCompileTime, int MaxSizeAtCompileTime, typename _StorageIndex>
+struct traits<Transpositions<SizeAtCompileTime,MaxSizeAtCompileTime,_StorageIndex> >
+ : traits<PermutationMatrix<SizeAtCompileTime,MaxSizeAtCompileTime,_StorageIndex> >
+{
+  typedef Matrix<_StorageIndex, SizeAtCompileTime, 1, 0, MaxSizeAtCompileTime, 1> IndicesType;
+  typedef TranspositionsStorage StorageKind;
+};
+}
+
+/** \class Transpositions
+  * \ingroup Core_Module
+  *
+  * \brief Represents a sequence of transpositions (row/column interchange)
+  *
+  * \tparam SizeAtCompileTime the number of transpositions, or Dynamic
+  * \tparam MaxSizeAtCompileTime the maximum number of transpositions, or Dynamic. This optional parameter defaults to SizeAtCompileTime. Most of the time, you should not have to specify it.
+  *
+  * This class represents a permutation transformation as a sequence of \em n transpositions
+  * \f$[T_{n-1} \ldots T_{i} \ldots T_{0}]\f$. It is internally stored as a vector of integers \c indices.
+  * Each transposition \f$ T_{i} \f$ applied on the left of a matrix (\f$ T_{i} M\f$) interchanges
+  * the rows \c i and \c indices[i] of the matrix \c M.
+  * A transposition applied on the right (e.g., \f$ M T_{i}\f$) yields a column interchange.
+  *
+  * Compared to the class PermutationMatrix, such a sequence of transpositions is what is
+  * computed during a decomposition with pivoting, and it is faster when applying the permutation in-place.
+  *
+  * To apply a sequence of transpositions to a matrix, simply use the operator * as in the following example:
+  * \code
+  * Transpositions tr;
+  * MatrixXf mat;
+  * mat = tr * mat;
+  * \endcode
+  * In this example, we detect that the matrix appears on both side, and so the transpositions
+  * are applied in-place without any temporary or extra copy.
+  *
+  * \sa class PermutationMatrix
+  */
+
+template<int SizeAtCompileTime, int MaxSizeAtCompileTime, typename _StorageIndex>
+class Transpositions : public TranspositionsBase<Transpositions<SizeAtCompileTime,MaxSizeAtCompileTime,_StorageIndex> >
+{
+    typedef internal::traits<Transpositions> Traits;
+  public:
+
+    typedef TranspositionsBase<Transpositions> Base;
+    typedef typename Traits::IndicesType IndicesType;
+    typedef typename IndicesType::Scalar StorageIndex;
+
+    inline Transpositions() {}
+
+    /** Copy constructor. */
+    template<typename OtherDerived>
+    inline Transpositions(const TranspositionsBase<OtherDerived>& other)
+      : m_indices(other.indices()) {}
+
+    /** Generic constructor from expression of the transposition indices. */
+    template<typename Other>
+    explicit inline Transpositions(const MatrixBase<Other>& indices) : m_indices(indices)
+    {}
+
+    /** Copies the \a other transpositions into \c *this */
+    template<typename OtherDerived>
+    Transpositions& operator=(const TranspositionsBase<OtherDerived>& other)
+    {
+      return Base::operator=(other);
+    }
+
+    /** Constructs an uninitialized permutation matrix of given size.
+      */
+    inline Transpositions(Index size) : m_indices(size)
+    {}
+
+    /** const version of indices(). */
+    const IndicesType& indices() const { return m_indices; }
+    /** \returns a reference to the stored array representing the transpositions. */
+    IndicesType& indices() { return m_indices; }
+
+  protected:
+
+    IndicesType m_indices;
+};
+
+
+namespace internal {
+template<int SizeAtCompileTime, int MaxSizeAtCompileTime, typename _StorageIndex, int _PacketAccess>
+struct traits<Map<Transpositions<SizeAtCompileTime,MaxSizeAtCompileTime,_StorageIndex>,_PacketAccess> >
+ : traits<PermutationMatrix<SizeAtCompileTime,MaxSizeAtCompileTime,_StorageIndex> >
+{
+  typedef Map<const Matrix<_StorageIndex,SizeAtCompileTime,1,0,MaxSizeAtCompileTime,1>, _PacketAccess> IndicesType;
+  typedef _StorageIndex StorageIndex;
+  typedef TranspositionsStorage StorageKind;
+};
+}
+
+template<int SizeAtCompileTime, int MaxSizeAtCompileTime, typename _StorageIndex, int PacketAccess>
+class Map<Transpositions<SizeAtCompileTime,MaxSizeAtCompileTime,_StorageIndex>,PacketAccess>
+ : public TranspositionsBase<Map<Transpositions<SizeAtCompileTime,MaxSizeAtCompileTime,_StorageIndex>,PacketAccess> >
+{
+    typedef internal::traits<Map> Traits;
+  public:
+
+    typedef TranspositionsBase<Map> Base;
+    typedef typename Traits::IndicesType IndicesType;
+    typedef typename IndicesType::Scalar StorageIndex;
+
+    explicit inline Map(const StorageIndex* indicesPtr)
+      : m_indices(indicesPtr)
+    {}
+
+    inline Map(const StorageIndex* indicesPtr, Index size)
+      : m_indices(indicesPtr,size)
+    {}
+
+    /** Copies the \a other transpositions into \c *this */
+    template<typename OtherDerived>
+    Map& operator=(const TranspositionsBase<OtherDerived>& other)
+    {
+      return Base::operator=(other);
+    }
+
+    #ifndef EIGEN_PARSED_BY_DOXYGEN
+    /** This is a special case of the templated operator=. Its purpose is to
+      * prevent a default operator= from hiding the templated operator=.
+      */
+    Map& operator=(const Map& other)
+    {
+      m_indices = other.m_indices;
+      return *this;
+    }
+    #endif
+
+    /** const version of indices(). */
+    const IndicesType& indices() const { return m_indices; }
+    
+    /** \returns a reference to the stored array representing the transpositions. */
+    IndicesType& indices() { return m_indices; }
+
+  protected:
+
+    IndicesType m_indices;
+};
+
+namespace internal {
+template<typename _IndicesType>
+struct traits<TranspositionsWrapper<_IndicesType> >
+ : traits<PermutationWrapper<_IndicesType> >
+{
+  typedef TranspositionsStorage StorageKind;
+};
+}
+
+template<typename _IndicesType>
+class TranspositionsWrapper
+ : public TranspositionsBase<TranspositionsWrapper<_IndicesType> >
+{
+    typedef internal::traits<TranspositionsWrapper> Traits;
+  public:
+
+    typedef TranspositionsBase<TranspositionsWrapper> Base;
+    typedef typename Traits::IndicesType IndicesType;
+    typedef typename IndicesType::Scalar StorageIndex;
+
+    explicit inline TranspositionsWrapper(IndicesType& indices)
+      : m_indices(indices)
+    {}
+
+    /** Copies the \a other transpositions into \c *this */
+    template<typename OtherDerived>
+    TranspositionsWrapper& operator=(const TranspositionsBase<OtherDerived>& other)
+    {
+      return Base::operator=(other);
+    }
+
+    /** const version of indices(). */
+    const IndicesType& indices() const { return m_indices; }
+
+    /** \returns a reference to the stored array representing the transpositions. */
+    IndicesType& indices() { return m_indices; }
+
+  protected:
+
+    typename IndicesType::Nested m_indices;
+};
+
+
+
+/** \returns the \a matrix with the \a transpositions applied to the columns.
+  */
+template<typename MatrixDerived, typename TranspositionsDerived>
+EIGEN_DEVICE_FUNC
+const Product<MatrixDerived, TranspositionsDerived, AliasFreeProduct>
+operator*(const MatrixBase<MatrixDerived> &matrix,
+          const TranspositionsBase<TranspositionsDerived>& transpositions)
+{
+  return Product<MatrixDerived, TranspositionsDerived, AliasFreeProduct>
+            (matrix.derived(), transpositions.derived());
+}
+
+/** \returns the \a matrix with the \a transpositions applied to the rows.
+  */
+template<typename TranspositionsDerived, typename MatrixDerived>
+EIGEN_DEVICE_FUNC
+const Product<TranspositionsDerived, MatrixDerived, AliasFreeProduct>
+operator*(const TranspositionsBase<TranspositionsDerived> &transpositions,
+          const MatrixBase<MatrixDerived>& matrix)
+{
+  return Product<TranspositionsDerived, MatrixDerived, AliasFreeProduct>
+            (transpositions.derived(), matrix.derived());
+}
+
+// Template partial specialization for transposed/inverse transpositions
+
+namespace internal {
+
+template<typename Derived>
+struct traits<Transpose<TranspositionsBase<Derived> > >
+ : traits<Derived>
+{};
+
+} // end namespace internal
+
+template<typename TranspositionsDerived>
+class Transpose<TranspositionsBase<TranspositionsDerived> >
+{
+    typedef TranspositionsDerived TranspositionType;
+    typedef typename TranspositionType::IndicesType IndicesType;
+  public:
+
+    explicit Transpose(const TranspositionType& t) : m_transpositions(t) {}
+
+    Index size() const { return m_transpositions.size(); }
+    Index rows() const { return m_transpositions.size(); }
+    Index cols() const { return m_transpositions.size(); }
+
+    /** \returns the \a matrix with the inverse transpositions applied to the columns.
+      */
+    template<typename OtherDerived> friend
+    const Product<OtherDerived, Transpose, AliasFreeProduct>
+    operator*(const MatrixBase<OtherDerived>& matrix, const Transpose& trt)
+    {
+      return Product<OtherDerived, Transpose, AliasFreeProduct>(matrix.derived(), trt);
+    }
+
+    /** \returns the \a matrix with the inverse transpositions applied to the rows.
+      */
+    template<typename OtherDerived>
+    const Product<Transpose, OtherDerived, AliasFreeProduct>
+    operator*(const MatrixBase<OtherDerived>& matrix) const
+    {
+      return Product<Transpose, OtherDerived, AliasFreeProduct>(*this, matrix.derived());
+    }
+    
+    const TranspositionType& nestedExpression() const { return m_transpositions; }
+
+  protected:
+    const TranspositionType& m_transpositions;
+};
+
+} // end namespace Eigen
+
+#endif // EIGEN_TRANSPOSITIONS_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/AssignEvaluator.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/AssignEvaluator.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/AssignEvaluator.h	(revision 3762)
@@ -0,0 +1,935 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2011 Benoit Jacob <jacob.benoit.1@gmail.com>
+// Copyright (C) 2011-2014 Gael Guennebaud <gael.guennebaud@inria.fr>
+// Copyright (C) 2011-2012 Jitse Niesen <jitse@maths.leeds.ac.uk>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_ASSIGN_EVALUATOR_H
+#define EIGEN_ASSIGN_EVALUATOR_H
+
+namespace Eigen {
+
+// This implementation is based on Assign.h
+
+namespace internal {
+  
+/***************************************************************************
+* Part 1 : the logic deciding a strategy for traversal and unrolling       *
+***************************************************************************/
+
+// copy_using_evaluator_traits is based on assign_traits
+
+template <typename DstEvaluator, typename SrcEvaluator, typename AssignFunc>
+struct copy_using_evaluator_traits
+{
+  typedef typename DstEvaluator::XprType Dst;
+  typedef typename Dst::Scalar DstScalar;
+  
+  enum {
+    DstFlags = DstEvaluator::Flags,
+    SrcFlags = SrcEvaluator::Flags
+  };
+  
+public:
+  enum {
+    DstAlignment = DstEvaluator::Alignment,
+    SrcAlignment = SrcEvaluator::Alignment,
+    DstHasDirectAccess = (DstFlags & DirectAccessBit) == DirectAccessBit,
+    JointAlignment = EIGEN_PLAIN_ENUM_MIN(DstAlignment,SrcAlignment)
+  };
+
+private:
+  enum {
+    InnerSize = int(Dst::IsVectorAtCompileTime) ? int(Dst::SizeAtCompileTime)
+              : int(DstFlags)&RowMajorBit ? int(Dst::ColsAtCompileTime)
+              : int(Dst::RowsAtCompileTime),
+    InnerMaxSize = int(Dst::IsVectorAtCompileTime) ? int(Dst::MaxSizeAtCompileTime)
+              : int(DstFlags)&RowMajorBit ? int(Dst::MaxColsAtCompileTime)
+              : int(Dst::MaxRowsAtCompileTime),
+    OuterStride = int(outer_stride_at_compile_time<Dst>::ret),
+    MaxSizeAtCompileTime = Dst::SizeAtCompileTime
+  };
+
+  // TODO distinguish between linear traversal and inner-traversals
+  typedef typename find_best_packet<DstScalar,Dst::SizeAtCompileTime>::type LinearPacketType;
+  typedef typename find_best_packet<DstScalar,InnerSize>::type InnerPacketType;
+
+  enum {
+    LinearPacketSize = unpacket_traits<LinearPacketType>::size,
+    InnerPacketSize = unpacket_traits<InnerPacketType>::size
+  };
+
+public:
+  enum {
+    LinearRequiredAlignment = unpacket_traits<LinearPacketType>::alignment,
+    InnerRequiredAlignment = unpacket_traits<InnerPacketType>::alignment
+  };
+
+private:
+  enum {
+    DstIsRowMajor = DstFlags&RowMajorBit,
+    SrcIsRowMajor = SrcFlags&RowMajorBit,
+    StorageOrdersAgree = (int(DstIsRowMajor) == int(SrcIsRowMajor)),
+    MightVectorize = bool(StorageOrdersAgree)
+                  && (int(DstFlags) & int(SrcFlags) & ActualPacketAccessBit)
+                  && bool(functor_traits<AssignFunc>::PacketAccess),
+    MayInnerVectorize  = MightVectorize
+                       && int(InnerSize)!=Dynamic && int(InnerSize)%int(InnerPacketSize)==0
+                       && int(OuterStride)!=Dynamic && int(OuterStride)%int(InnerPacketSize)==0
+                       && (EIGEN_UNALIGNED_VECTORIZE  || int(JointAlignment)>=int(InnerRequiredAlignment)),
+    MayLinearize = bool(StorageOrdersAgree) && (int(DstFlags) & int(SrcFlags) & LinearAccessBit),
+    MayLinearVectorize = bool(MightVectorize) && bool(MayLinearize) && bool(DstHasDirectAccess)
+                       && (EIGEN_UNALIGNED_VECTORIZE || (int(DstAlignment)>=int(LinearRequiredAlignment)) || MaxSizeAtCompileTime == Dynamic),
+      /* If the destination isn't aligned, we have to do runtime checks and we don't unroll,
+         so it's only good for large enough sizes. */
+    MaySliceVectorize  = bool(MightVectorize) && bool(DstHasDirectAccess)
+                       && (int(InnerMaxSize)==Dynamic || int(InnerMaxSize)>=(EIGEN_UNALIGNED_VECTORIZE?InnerPacketSize:(3*InnerPacketSize)))
+      /* slice vectorization can be slow, so we only want it if the slices are big, which is
+         indicated by InnerMaxSize rather than InnerSize, think of the case of a dynamic block
+         in a fixed-size matrix
+         However, with EIGEN_UNALIGNED_VECTORIZE and unrolling, slice vectorization is still worth it */
+  };
+
+public:
+  enum {
+    Traversal = int(MayLinearVectorize) && (LinearPacketSize>InnerPacketSize) ? int(LinearVectorizedTraversal)
+              : int(MayInnerVectorize)   ? int(InnerVectorizedTraversal)
+              : int(MayLinearVectorize)  ? int(LinearVectorizedTraversal)
+              : int(MaySliceVectorize)   ? int(SliceVectorizedTraversal)
+              : int(MayLinearize)        ? int(LinearTraversal)
+                                         : int(DefaultTraversal),
+    Vectorized = int(Traversal) == InnerVectorizedTraversal
+              || int(Traversal) == LinearVectorizedTraversal
+              || int(Traversal) == SliceVectorizedTraversal
+  };
+
+  typedef typename conditional<int(Traversal)==LinearVectorizedTraversal, LinearPacketType, InnerPacketType>::type PacketType;
+
+private:
+  enum {
+    ActualPacketSize    = int(Traversal)==LinearVectorizedTraversal ? LinearPacketSize
+                        : Vectorized ? InnerPacketSize
+                        : 1,
+    UnrollingLimit      = EIGEN_UNROLLING_LIMIT * ActualPacketSize,
+    MayUnrollCompletely = int(Dst::SizeAtCompileTime) != Dynamic
+                       && int(Dst::SizeAtCompileTime) * (int(DstEvaluator::CoeffReadCost)+int(SrcEvaluator::CoeffReadCost)) <= int(UnrollingLimit),
+    MayUnrollInner      = int(InnerSize) != Dynamic
+                       && int(InnerSize) * (int(DstEvaluator::CoeffReadCost)+int(SrcEvaluator::CoeffReadCost)) <= int(UnrollingLimit)
+  };
+
+public:
+  enum {
+    Unrolling = (int(Traversal) == int(InnerVectorizedTraversal) || int(Traversal) == int(DefaultTraversal))
+                ? (
+                    int(MayUnrollCompletely) ? int(CompleteUnrolling)
+                  : int(MayUnrollInner)      ? int(InnerUnrolling)
+                                             : int(NoUnrolling)
+                  )
+              : int(Traversal) == int(LinearVectorizedTraversal)
+                ? ( bool(MayUnrollCompletely) && ( EIGEN_UNALIGNED_VECTORIZE || (int(DstAlignment)>=int(LinearRequiredAlignment)))
+                          ? int(CompleteUnrolling)
+                          : int(NoUnrolling) )
+              : int(Traversal) == int(LinearTraversal)
+                ? ( bool(MayUnrollCompletely) ? int(CompleteUnrolling) 
+                                              : int(NoUnrolling) )
+#if EIGEN_UNALIGNED_VECTORIZE
+              : int(Traversal) == int(SliceVectorizedTraversal)
+                ? ( bool(MayUnrollInner) ? int(InnerUnrolling)
+                                         : int(NoUnrolling) )
+#endif
+              : int(NoUnrolling)
+  };
+
+#ifdef EIGEN_DEBUG_ASSIGN
+  static void debug()
+  {
+    std::cerr << "DstXpr: " << typeid(typename DstEvaluator::XprType).name() << std::endl;
+    std::cerr << "SrcXpr: " << typeid(typename SrcEvaluator::XprType).name() << std::endl;
+    std::cerr.setf(std::ios::hex, std::ios::basefield);
+    std::cerr << "DstFlags" << " = " << DstFlags << " (" << demangle_flags(DstFlags) << " )" << std::endl;
+    std::cerr << "SrcFlags" << " = " << SrcFlags << " (" << demangle_flags(SrcFlags) << " )" << std::endl;
+    std::cerr.unsetf(std::ios::hex);
+    EIGEN_DEBUG_VAR(DstAlignment)
+    EIGEN_DEBUG_VAR(SrcAlignment)
+    EIGEN_DEBUG_VAR(LinearRequiredAlignment)
+    EIGEN_DEBUG_VAR(InnerRequiredAlignment)
+    EIGEN_DEBUG_VAR(JointAlignment)
+    EIGEN_DEBUG_VAR(InnerSize)
+    EIGEN_DEBUG_VAR(InnerMaxSize)
+    EIGEN_DEBUG_VAR(LinearPacketSize)
+    EIGEN_DEBUG_VAR(InnerPacketSize)
+    EIGEN_DEBUG_VAR(ActualPacketSize)
+    EIGEN_DEBUG_VAR(StorageOrdersAgree)
+    EIGEN_DEBUG_VAR(MightVectorize)
+    EIGEN_DEBUG_VAR(MayLinearize)
+    EIGEN_DEBUG_VAR(MayInnerVectorize)
+    EIGEN_DEBUG_VAR(MayLinearVectorize)
+    EIGEN_DEBUG_VAR(MaySliceVectorize)
+    std::cerr << "Traversal" << " = " << Traversal << " (" << demangle_traversal(Traversal) << ")" << std::endl;
+    EIGEN_DEBUG_VAR(SrcEvaluator::CoeffReadCost)
+    EIGEN_DEBUG_VAR(UnrollingLimit)
+    EIGEN_DEBUG_VAR(MayUnrollCompletely)
+    EIGEN_DEBUG_VAR(MayUnrollInner)
+    std::cerr << "Unrolling" << " = " << Unrolling << " (" << demangle_unrolling(Unrolling) << ")" << std::endl;
+    std::cerr << std::endl;
+  }
+#endif
+};
+
+/***************************************************************************
+* Part 2 : meta-unrollers
+***************************************************************************/
+
+/************************
+*** Default traversal ***
+************************/
+
+template<typename Kernel, int Index, int Stop>
+struct copy_using_evaluator_DefaultTraversal_CompleteUnrolling
+{
+  // FIXME: this is not very clean, perhaps this information should be provided by the kernel?
+  typedef typename Kernel::DstEvaluatorType DstEvaluatorType;
+  typedef typename DstEvaluatorType::XprType DstXprType;
+  
+  enum {
+    outer = Index / DstXprType::InnerSizeAtCompileTime,
+    inner = Index % DstXprType::InnerSizeAtCompileTime
+  };
+
+  EIGEN_DEVICE_FUNC static EIGEN_STRONG_INLINE void run(Kernel &kernel)
+  {
+    kernel.assignCoeffByOuterInner(outer, inner);
+    copy_using_evaluator_DefaultTraversal_CompleteUnrolling<Kernel, Index+1, Stop>::run(kernel);
+  }
+};
+
+template<typename Kernel, int Stop>
+struct copy_using_evaluator_DefaultTraversal_CompleteUnrolling<Kernel, Stop, Stop>
+{
+  EIGEN_DEVICE_FUNC static EIGEN_STRONG_INLINE void run(Kernel&) { }
+};
+
+template<typename Kernel, int Index_, int Stop>
+struct copy_using_evaluator_DefaultTraversal_InnerUnrolling
+{
+  EIGEN_DEVICE_FUNC static EIGEN_STRONG_INLINE void run(Kernel &kernel, Index outer)
+  {
+    kernel.assignCoeffByOuterInner(outer, Index_);
+    copy_using_evaluator_DefaultTraversal_InnerUnrolling<Kernel, Index_+1, Stop>::run(kernel, outer);
+  }
+};
+
+template<typename Kernel, int Stop>
+struct copy_using_evaluator_DefaultTraversal_InnerUnrolling<Kernel, Stop, Stop>
+{
+  EIGEN_DEVICE_FUNC static EIGEN_STRONG_INLINE void run(Kernel&, Index) { }
+};
+
+/***********************
+*** Linear traversal ***
+***********************/
+
+template<typename Kernel, int Index, int Stop>
+struct copy_using_evaluator_LinearTraversal_CompleteUnrolling
+{
+  EIGEN_DEVICE_FUNC static EIGEN_STRONG_INLINE void run(Kernel& kernel)
+  {
+    kernel.assignCoeff(Index);
+    copy_using_evaluator_LinearTraversal_CompleteUnrolling<Kernel, Index+1, Stop>::run(kernel);
+  }
+};
+
+template<typename Kernel, int Stop>
+struct copy_using_evaluator_LinearTraversal_CompleteUnrolling<Kernel, Stop, Stop>
+{
+  EIGEN_DEVICE_FUNC static EIGEN_STRONG_INLINE void run(Kernel&) { }
+};
+
+/**************************
+*** Inner vectorization ***
+**************************/
+
+template<typename Kernel, int Index, int Stop>
+struct copy_using_evaluator_innervec_CompleteUnrolling
+{
+  // FIXME: this is not very clean, perhaps this information should be provided by the kernel?
+  typedef typename Kernel::DstEvaluatorType DstEvaluatorType;
+  typedef typename DstEvaluatorType::XprType DstXprType;
+  typedef typename Kernel::PacketType PacketType;
+  
+  enum {
+    outer = Index / DstXprType::InnerSizeAtCompileTime,
+    inner = Index % DstXprType::InnerSizeAtCompileTime,
+    SrcAlignment = Kernel::AssignmentTraits::SrcAlignment,
+    DstAlignment = Kernel::AssignmentTraits::DstAlignment
+  };
+
+  EIGEN_DEVICE_FUNC static EIGEN_STRONG_INLINE void run(Kernel &kernel)
+  {
+    kernel.template assignPacketByOuterInner<DstAlignment, SrcAlignment, PacketType>(outer, inner);
+    enum { NextIndex = Index + unpacket_traits<PacketType>::size };
+    copy_using_evaluator_innervec_CompleteUnrolling<Kernel, NextIndex, Stop>::run(kernel);
+  }
+};
+
+template<typename Kernel, int Stop>
+struct copy_using_evaluator_innervec_CompleteUnrolling<Kernel, Stop, Stop>
+{
+  EIGEN_DEVICE_FUNC static EIGEN_STRONG_INLINE void run(Kernel&) { }
+};
+
+template<typename Kernel, int Index_, int Stop, int SrcAlignment, int DstAlignment>
+struct copy_using_evaluator_innervec_InnerUnrolling
+{
+  typedef typename Kernel::PacketType PacketType;
+  EIGEN_DEVICE_FUNC static EIGEN_STRONG_INLINE void run(Kernel &kernel, Index outer)
+  {
+    kernel.template assignPacketByOuterInner<DstAlignment, SrcAlignment, PacketType>(outer, Index_);
+    enum { NextIndex = Index_ + unpacket_traits<PacketType>::size };
+    copy_using_evaluator_innervec_InnerUnrolling<Kernel, NextIndex, Stop, SrcAlignment, DstAlignment>::run(kernel, outer);
+  }
+};
+
+template<typename Kernel, int Stop, int SrcAlignment, int DstAlignment>
+struct copy_using_evaluator_innervec_InnerUnrolling<Kernel, Stop, Stop, SrcAlignment, DstAlignment>
+{
+  EIGEN_DEVICE_FUNC static EIGEN_STRONG_INLINE void run(Kernel &, Index) { }
+};
+
+/***************************************************************************
+* Part 3 : implementation of all cases
+***************************************************************************/
+
+// dense_assignment_loop is based on assign_impl
+
+template<typename Kernel,
+         int Traversal = Kernel::AssignmentTraits::Traversal,
+         int Unrolling = Kernel::AssignmentTraits::Unrolling>
+struct dense_assignment_loop;
+
+/************************
+*** Default traversal ***
+************************/
+
+template<typename Kernel>
+struct dense_assignment_loop<Kernel, DefaultTraversal, NoUnrolling>
+{
+  EIGEN_DEVICE_FUNC static void EIGEN_STRONG_INLINE run(Kernel &kernel)
+  {
+    for(Index outer = 0; outer < kernel.outerSize(); ++outer) {
+      for(Index inner = 0; inner < kernel.innerSize(); ++inner) {
+        kernel.assignCoeffByOuterInner(outer, inner);
+      }
+    }
+  }
+};
+
+template<typename Kernel>
+struct dense_assignment_loop<Kernel, DefaultTraversal, CompleteUnrolling>
+{
+  EIGEN_DEVICE_FUNC static EIGEN_STRONG_INLINE void run(Kernel &kernel)
+  {
+    typedef typename Kernel::DstEvaluatorType::XprType DstXprType;
+    copy_using_evaluator_DefaultTraversal_CompleteUnrolling<Kernel, 0, DstXprType::SizeAtCompileTime>::run(kernel);
+  }
+};
+
+template<typename Kernel>
+struct dense_assignment_loop<Kernel, DefaultTraversal, InnerUnrolling>
+{
+  EIGEN_DEVICE_FUNC static EIGEN_STRONG_INLINE void run(Kernel &kernel)
+  {
+    typedef typename Kernel::DstEvaluatorType::XprType DstXprType;
+
+    const Index outerSize = kernel.outerSize();
+    for(Index outer = 0; outer < outerSize; ++outer)
+      copy_using_evaluator_DefaultTraversal_InnerUnrolling<Kernel, 0, DstXprType::InnerSizeAtCompileTime>::run(kernel, outer);
+  }
+};
+
+/***************************
+*** Linear vectorization ***
+***************************/
+
+
+// The goal of unaligned_dense_assignment_loop is simply to factorize the handling
+// of the non vectorizable beginning and ending parts
+
+template <bool IsAligned = false>
+struct unaligned_dense_assignment_loop
+{
+  // if IsAligned = true, then do nothing
+  template <typename Kernel>
+  EIGEN_DEVICE_FUNC static EIGEN_STRONG_INLINE void run(Kernel&, Index, Index) {}
+};
+
+template <>
+struct unaligned_dense_assignment_loop<false>
+{
+  // MSVC must not inline this functions. If it does, it fails to optimize the
+  // packet access path.
+  // FIXME check which version exhibits this issue
+#if EIGEN_COMP_MSVC
+  template <typename Kernel>
+  static EIGEN_DONT_INLINE void run(Kernel &kernel,
+                                    Index start,
+                                    Index end)
+#else
+  template <typename Kernel>
+  EIGEN_DEVICE_FUNC static EIGEN_STRONG_INLINE void run(Kernel &kernel,
+                                      Index start,
+                                      Index end)
+#endif
+  {
+    for (Index index = start; index < end; ++index)
+      kernel.assignCoeff(index);
+  }
+};
+
+template<typename Kernel>
+struct dense_assignment_loop<Kernel, LinearVectorizedTraversal, NoUnrolling>
+{
+  EIGEN_DEVICE_FUNC static EIGEN_STRONG_INLINE void run(Kernel &kernel)
+  {
+    const Index size = kernel.size();
+    typedef typename Kernel::Scalar Scalar;
+    typedef typename Kernel::PacketType PacketType;
+    enum {
+      requestedAlignment = Kernel::AssignmentTraits::LinearRequiredAlignment,
+      packetSize = unpacket_traits<PacketType>::size,
+      dstIsAligned = int(Kernel::AssignmentTraits::DstAlignment)>=int(requestedAlignment),
+      dstAlignment = packet_traits<Scalar>::AlignedOnScalar ? int(requestedAlignment)
+                                                            : int(Kernel::AssignmentTraits::DstAlignment),
+      srcAlignment = Kernel::AssignmentTraits::JointAlignment
+    };
+    const Index alignedStart = dstIsAligned ? 0 : internal::first_aligned<requestedAlignment>(kernel.dstDataPtr(), size);
+    const Index alignedEnd = alignedStart + ((size-alignedStart)/packetSize)*packetSize;
+
+    unaligned_dense_assignment_loop<dstIsAligned!=0>::run(kernel, 0, alignedStart);
+
+    for(Index index = alignedStart; index < alignedEnd; index += packetSize)
+      kernel.template assignPacket<dstAlignment, srcAlignment, PacketType>(index);
+
+    unaligned_dense_assignment_loop<>::run(kernel, alignedEnd, size);
+  }
+};
+
+template<typename Kernel>
+struct dense_assignment_loop<Kernel, LinearVectorizedTraversal, CompleteUnrolling>
+{
+  EIGEN_DEVICE_FUNC static EIGEN_STRONG_INLINE void run(Kernel &kernel)
+  {
+    typedef typename Kernel::DstEvaluatorType::XprType DstXprType;
+    typedef typename Kernel::PacketType PacketType;
+    
+    enum { size = DstXprType::SizeAtCompileTime,
+           packetSize =unpacket_traits<PacketType>::size,
+           alignedSize = (size/packetSize)*packetSize };
+
+    copy_using_evaluator_innervec_CompleteUnrolling<Kernel, 0, alignedSize>::run(kernel);
+    copy_using_evaluator_DefaultTraversal_CompleteUnrolling<Kernel, alignedSize, size>::run(kernel);
+  }
+};
+
+/**************************
+*** Inner vectorization ***
+**************************/
+
+template<typename Kernel>
+struct dense_assignment_loop<Kernel, InnerVectorizedTraversal, NoUnrolling>
+{
+  typedef typename Kernel::PacketType PacketType;
+  enum {
+    SrcAlignment = Kernel::AssignmentTraits::SrcAlignment,
+    DstAlignment = Kernel::AssignmentTraits::DstAlignment
+  };
+  EIGEN_DEVICE_FUNC static EIGEN_STRONG_INLINE void run(Kernel &kernel)
+  {
+    const Index innerSize = kernel.innerSize();
+    const Index outerSize = kernel.outerSize();
+    const Index packetSize = unpacket_traits<PacketType>::size;
+    for(Index outer = 0; outer < outerSize; ++outer)
+      for(Index inner = 0; inner < innerSize; inner+=packetSize)
+        kernel.template assignPacketByOuterInner<DstAlignment, SrcAlignment, PacketType>(outer, inner);
+  }
+};
+
+template<typename Kernel>
+struct dense_assignment_loop<Kernel, InnerVectorizedTraversal, CompleteUnrolling>
+{
+  EIGEN_DEVICE_FUNC static EIGEN_STRONG_INLINE void run(Kernel &kernel)
+  {
+    typedef typename Kernel::DstEvaluatorType::XprType DstXprType;
+    copy_using_evaluator_innervec_CompleteUnrolling<Kernel, 0, DstXprType::SizeAtCompileTime>::run(kernel);
+  }
+};
+
+template<typename Kernel>
+struct dense_assignment_loop<Kernel, InnerVectorizedTraversal, InnerUnrolling>
+{
+  EIGEN_DEVICE_FUNC static EIGEN_STRONG_INLINE void run(Kernel &kernel)
+  {
+    typedef typename Kernel::DstEvaluatorType::XprType DstXprType;
+    typedef typename Kernel::AssignmentTraits Traits;
+    const Index outerSize = kernel.outerSize();
+    for(Index outer = 0; outer < outerSize; ++outer)
+      copy_using_evaluator_innervec_InnerUnrolling<Kernel, 0, DstXprType::InnerSizeAtCompileTime,
+                                                   Traits::SrcAlignment, Traits::DstAlignment>::run(kernel, outer);
+  }
+};
+
+/***********************
+*** Linear traversal ***
+***********************/
+
+template<typename Kernel>
+struct dense_assignment_loop<Kernel, LinearTraversal, NoUnrolling>
+{
+  EIGEN_DEVICE_FUNC static EIGEN_STRONG_INLINE void run(Kernel &kernel)
+  {
+    const Index size = kernel.size();
+    for(Index i = 0; i < size; ++i)
+      kernel.assignCoeff(i);
+  }
+};
+
+template<typename Kernel>
+struct dense_assignment_loop<Kernel, LinearTraversal, CompleteUnrolling>
+{
+  EIGEN_DEVICE_FUNC static EIGEN_STRONG_INLINE void run(Kernel &kernel)
+  {
+    typedef typename Kernel::DstEvaluatorType::XprType DstXprType;
+    copy_using_evaluator_LinearTraversal_CompleteUnrolling<Kernel, 0, DstXprType::SizeAtCompileTime>::run(kernel);
+  }
+};
+
+/**************************
+*** Slice vectorization ***
+***************************/
+
+template<typename Kernel>
+struct dense_assignment_loop<Kernel, SliceVectorizedTraversal, NoUnrolling>
+{
+  EIGEN_DEVICE_FUNC static EIGEN_STRONG_INLINE void run(Kernel &kernel)
+  {
+    typedef typename Kernel::Scalar Scalar;
+    typedef typename Kernel::PacketType PacketType;
+    enum {
+      packetSize = unpacket_traits<PacketType>::size,
+      requestedAlignment = int(Kernel::AssignmentTraits::InnerRequiredAlignment),
+      alignable = packet_traits<Scalar>::AlignedOnScalar || int(Kernel::AssignmentTraits::DstAlignment)>=sizeof(Scalar),
+      dstIsAligned = int(Kernel::AssignmentTraits::DstAlignment)>=int(requestedAlignment),
+      dstAlignment = alignable ? int(requestedAlignment)
+                               : int(Kernel::AssignmentTraits::DstAlignment)
+    };
+    const Scalar *dst_ptr = kernel.dstDataPtr();
+    if((!bool(dstIsAligned)) && (UIntPtr(dst_ptr) % sizeof(Scalar))>0)
+    {
+      // the pointer is not aligend-on scalar, so alignment is not possible
+      return dense_assignment_loop<Kernel,DefaultTraversal,NoUnrolling>::run(kernel);
+    }
+    const Index packetAlignedMask = packetSize - 1;
+    const Index innerSize = kernel.innerSize();
+    const Index outerSize = kernel.outerSize();
+    const Index alignedStep = alignable ? (packetSize - kernel.outerStride() % packetSize) & packetAlignedMask : 0;
+    Index alignedStart = ((!alignable) || bool(dstIsAligned)) ? 0 : internal::first_aligned<requestedAlignment>(dst_ptr, innerSize);
+
+    for(Index outer = 0; outer < outerSize; ++outer)
+    {
+      const Index alignedEnd = alignedStart + ((innerSize-alignedStart) & ~packetAlignedMask);
+      // do the non-vectorizable part of the assignment
+      for(Index inner = 0; inner<alignedStart ; ++inner)
+        kernel.assignCoeffByOuterInner(outer, inner);
+
+      // do the vectorizable part of the assignment
+      for(Index inner = alignedStart; inner<alignedEnd; inner+=packetSize)
+        kernel.template assignPacketByOuterInner<dstAlignment, Unaligned, PacketType>(outer, inner);
+
+      // do the non-vectorizable part of the assignment
+      for(Index inner = alignedEnd; inner<innerSize ; ++inner)
+        kernel.assignCoeffByOuterInner(outer, inner);
+
+      alignedStart = numext::mini((alignedStart+alignedStep)%packetSize, innerSize);
+    }
+  }
+};
+
+#if EIGEN_UNALIGNED_VECTORIZE
+template<typename Kernel>
+struct dense_assignment_loop<Kernel, SliceVectorizedTraversal, InnerUnrolling>
+{
+  EIGEN_DEVICE_FUNC static EIGEN_STRONG_INLINE void run(Kernel &kernel)
+  {
+    typedef typename Kernel::DstEvaluatorType::XprType DstXprType;
+    typedef typename Kernel::PacketType PacketType;
+
+    enum { size = DstXprType::InnerSizeAtCompileTime,
+           packetSize =unpacket_traits<PacketType>::size,
+           vectorizableSize = (size/packetSize)*packetSize };
+
+    for(Index outer = 0; outer < kernel.outerSize(); ++outer)
+    {
+      copy_using_evaluator_innervec_InnerUnrolling<Kernel, 0, vectorizableSize, 0, 0>::run(kernel, outer);
+      copy_using_evaluator_DefaultTraversal_InnerUnrolling<Kernel, vectorizableSize, size>::run(kernel, outer);
+    }
+  }
+};
+#endif
+
+
+/***************************************************************************
+* Part 4 : Generic dense assignment kernel
+***************************************************************************/
+
+// This class generalize the assignment of a coefficient (or packet) from one dense evaluator
+// to another dense writable evaluator.
+// It is parametrized by the two evaluators, and the actual assignment functor.
+// This abstraction level permits to keep the evaluation loops as simple and as generic as possible.
+// One can customize the assignment using this generic dense_assignment_kernel with different
+// functors, or by completely overloading it, by-passing a functor.
+template<typename DstEvaluatorTypeT, typename SrcEvaluatorTypeT, typename Functor, int Version = Specialized>
+class generic_dense_assignment_kernel
+{
+protected:
+  typedef typename DstEvaluatorTypeT::XprType DstXprType;
+  typedef typename SrcEvaluatorTypeT::XprType SrcXprType;
+public:
+  
+  typedef DstEvaluatorTypeT DstEvaluatorType;
+  typedef SrcEvaluatorTypeT SrcEvaluatorType;
+  typedef typename DstEvaluatorType::Scalar Scalar;
+  typedef copy_using_evaluator_traits<DstEvaluatorTypeT, SrcEvaluatorTypeT, Functor> AssignmentTraits;
+  typedef typename AssignmentTraits::PacketType PacketType;
+  
+  
+  EIGEN_DEVICE_FUNC generic_dense_assignment_kernel(DstEvaluatorType &dst, const SrcEvaluatorType &src, const Functor &func, DstXprType& dstExpr)
+    : m_dst(dst), m_src(src), m_functor(func), m_dstExpr(dstExpr)
+  {
+    #ifdef EIGEN_DEBUG_ASSIGN
+    AssignmentTraits::debug();
+    #endif
+  }
+  
+  EIGEN_DEVICE_FUNC Index size() const        { return m_dstExpr.size(); }
+  EIGEN_DEVICE_FUNC Index innerSize() const   { return m_dstExpr.innerSize(); }
+  EIGEN_DEVICE_FUNC Index outerSize() const   { return m_dstExpr.outerSize(); }
+  EIGEN_DEVICE_FUNC Index rows() const        { return m_dstExpr.rows(); }
+  EIGEN_DEVICE_FUNC Index cols() const        { return m_dstExpr.cols(); }
+  EIGEN_DEVICE_FUNC Index outerStride() const { return m_dstExpr.outerStride(); }
+  
+  EIGEN_DEVICE_FUNC DstEvaluatorType& dstEvaluator() { return m_dst; }
+  EIGEN_DEVICE_FUNC const SrcEvaluatorType& srcEvaluator() const { return m_src; }
+  
+  /// Assign src(row,col) to dst(row,col) through the assignment functor.
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void assignCoeff(Index row, Index col)
+  {
+    m_functor.assignCoeff(m_dst.coeffRef(row,col), m_src.coeff(row,col));
+  }
+  
+  /// \sa assignCoeff(Index,Index)
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void assignCoeff(Index index)
+  {
+    m_functor.assignCoeff(m_dst.coeffRef(index), m_src.coeff(index));
+  }
+  
+  /// \sa assignCoeff(Index,Index)
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void assignCoeffByOuterInner(Index outer, Index inner)
+  {
+    Index row = rowIndexByOuterInner(outer, inner); 
+    Index col = colIndexByOuterInner(outer, inner); 
+    assignCoeff(row, col);
+  }
+  
+  
+  template<int StoreMode, int LoadMode, typename PacketType>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void assignPacket(Index row, Index col)
+  {
+    m_functor.template assignPacket<StoreMode>(&m_dst.coeffRef(row,col), m_src.template packet<LoadMode,PacketType>(row,col));
+  }
+  
+  template<int StoreMode, int LoadMode, typename PacketType>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void assignPacket(Index index)
+  {
+    m_functor.template assignPacket<StoreMode>(&m_dst.coeffRef(index), m_src.template packet<LoadMode,PacketType>(index));
+  }
+  
+  template<int StoreMode, int LoadMode, typename PacketType>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void assignPacketByOuterInner(Index outer, Index inner)
+  {
+    Index row = rowIndexByOuterInner(outer, inner); 
+    Index col = colIndexByOuterInner(outer, inner);
+    assignPacket<StoreMode,LoadMode,PacketType>(row, col);
+  }
+  
+  EIGEN_DEVICE_FUNC static EIGEN_STRONG_INLINE Index rowIndexByOuterInner(Index outer, Index inner)
+  {
+    typedef typename DstEvaluatorType::ExpressionTraits Traits;
+    return int(Traits::RowsAtCompileTime) == 1 ? 0
+      : int(Traits::ColsAtCompileTime) == 1 ? inner
+      : int(DstEvaluatorType::Flags)&RowMajorBit ? outer
+      : inner;
+  }
+
+  EIGEN_DEVICE_FUNC static EIGEN_STRONG_INLINE Index colIndexByOuterInner(Index outer, Index inner)
+  {
+    typedef typename DstEvaluatorType::ExpressionTraits Traits;
+    return int(Traits::ColsAtCompileTime) == 1 ? 0
+      : int(Traits::RowsAtCompileTime) == 1 ? inner
+      : int(DstEvaluatorType::Flags)&RowMajorBit ? inner
+      : outer;
+  }
+
+  EIGEN_DEVICE_FUNC const Scalar* dstDataPtr() const
+  {
+    return m_dstExpr.data();
+  }
+  
+protected:
+  DstEvaluatorType& m_dst;
+  const SrcEvaluatorType& m_src;
+  const Functor &m_functor;
+  // TODO find a way to avoid the needs of the original expression
+  DstXprType& m_dstExpr;
+};
+
+/***************************************************************************
+* Part 5 : Entry point for dense rectangular assignment
+***************************************************************************/
+
+template<typename DstXprType,typename SrcXprType, typename Functor>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+void resize_if_allowed(DstXprType &dst, const SrcXprType& src, const Functor &/*func*/)
+{
+  EIGEN_ONLY_USED_FOR_DEBUG(dst);
+  EIGEN_ONLY_USED_FOR_DEBUG(src);
+  eigen_assert(dst.rows() == src.rows() && dst.cols() == src.cols());
+}
+
+template<typename DstXprType,typename SrcXprType, typename T1, typename T2>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+void resize_if_allowed(DstXprType &dst, const SrcXprType& src, const internal::assign_op<T1,T2> &/*func*/)
+{
+  Index dstRows = src.rows();
+  Index dstCols = src.cols();
+  if(((dst.rows()!=dstRows) || (dst.cols()!=dstCols)))
+    dst.resize(dstRows, dstCols);
+  eigen_assert(dst.rows() == dstRows && dst.cols() == dstCols);
+}
+
+template<typename DstXprType, typename SrcXprType, typename Functor>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void call_dense_assignment_loop(DstXprType& dst, const SrcXprType& src, const Functor &func)
+{
+  typedef evaluator<DstXprType> DstEvaluatorType;
+  typedef evaluator<SrcXprType> SrcEvaluatorType;
+
+  SrcEvaluatorType srcEvaluator(src);
+
+  // NOTE To properly handle A = (A*A.transpose())/s with A rectangular,
+  // we need to resize the destination after the source evaluator has been created.
+  resize_if_allowed(dst, src, func);
+
+  DstEvaluatorType dstEvaluator(dst);
+    
+  typedef generic_dense_assignment_kernel<DstEvaluatorType,SrcEvaluatorType,Functor> Kernel;
+  Kernel kernel(dstEvaluator, srcEvaluator, func, dst.const_cast_derived());
+
+  dense_assignment_loop<Kernel>::run(kernel);
+}
+
+template<typename DstXprType, typename SrcXprType>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void call_dense_assignment_loop(DstXprType& dst, const SrcXprType& src)
+{
+  call_dense_assignment_loop(dst, src, internal::assign_op<typename DstXprType::Scalar,typename SrcXprType::Scalar>());
+}
+
+/***************************************************************************
+* Part 6 : Generic assignment
+***************************************************************************/
+
+// Based on the respective shapes of the destination and source,
+// the class AssignmentKind determine the kind of assignment mechanism.
+// AssignmentKind must define a Kind typedef.
+template<typename DstShape, typename SrcShape> struct AssignmentKind;
+
+// Assignement kind defined in this file:
+struct Dense2Dense {};
+struct EigenBase2EigenBase {};
+
+template<typename,typename> struct AssignmentKind { typedef EigenBase2EigenBase Kind; };
+template<> struct AssignmentKind<DenseShape,DenseShape> { typedef Dense2Dense Kind; };
+    
+// This is the main assignment class
+template< typename DstXprType, typename SrcXprType, typename Functor,
+          typename Kind = typename AssignmentKind< typename evaluator_traits<DstXprType>::Shape , typename evaluator_traits<SrcXprType>::Shape >::Kind,
+          typename EnableIf = void>
+struct Assignment;
+
+
+// The only purpose of this call_assignment() function is to deal with noalias() / "assume-aliasing" and automatic transposition.
+// Indeed, I (Gael) think that this concept of "assume-aliasing" was a mistake, and it makes thing quite complicated.
+// So this intermediate function removes everything related to "assume-aliasing" such that Assignment
+// does not has to bother about these annoying details.
+
+template<typename Dst, typename Src>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+void call_assignment(Dst& dst, const Src& src)
+{
+  call_assignment(dst, src, internal::assign_op<typename Dst::Scalar,typename Src::Scalar>());
+}
+template<typename Dst, typename Src>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+void call_assignment(const Dst& dst, const Src& src)
+{
+  call_assignment(dst, src, internal::assign_op<typename Dst::Scalar,typename Src::Scalar>());
+}
+                     
+// Deal with "assume-aliasing"
+template<typename Dst, typename Src, typename Func>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+void call_assignment(Dst& dst, const Src& src, const Func& func, typename enable_if< evaluator_assume_aliasing<Src>::value, void*>::type = 0)
+{
+  typename plain_matrix_type<Src>::type tmp(src);
+  call_assignment_no_alias(dst, tmp, func);
+}
+
+template<typename Dst, typename Src, typename Func>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+void call_assignment(Dst& dst, const Src& src, const Func& func, typename enable_if<!evaluator_assume_aliasing<Src>::value, void*>::type = 0)
+{
+  call_assignment_no_alias(dst, src, func);
+}
+
+// by-pass "assume-aliasing"
+// When there is no aliasing, we require that 'dst' has been properly resized
+template<typename Dst, template <typename> class StorageBase, typename Src, typename Func>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+void call_assignment(NoAlias<Dst,StorageBase>& dst, const Src& src, const Func& func)
+{
+  call_assignment_no_alias(dst.expression(), src, func);
+}
+
+
+template<typename Dst, typename Src, typename Func>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+void call_assignment_no_alias(Dst& dst, const Src& src, const Func& func)
+{
+  enum {
+    NeedToTranspose = (    (int(Dst::RowsAtCompileTime) == 1 && int(Src::ColsAtCompileTime) == 1)
+                        || (int(Dst::ColsAtCompileTime) == 1 && int(Src::RowsAtCompileTime) == 1)
+                      ) && int(Dst::SizeAtCompileTime) != 1
+  };
+
+  typedef typename internal::conditional<NeedToTranspose, Transpose<Dst>, Dst>::type ActualDstTypeCleaned;
+  typedef typename internal::conditional<NeedToTranspose, Transpose<Dst>, Dst&>::type ActualDstType;
+  ActualDstType actualDst(dst);
+  
+  // TODO check whether this is the right place to perform these checks:
+  EIGEN_STATIC_ASSERT_LVALUE(Dst)
+  EIGEN_STATIC_ASSERT_SAME_MATRIX_SIZE(ActualDstTypeCleaned,Src)
+  EIGEN_CHECK_BINARY_COMPATIBILIY(Func,typename ActualDstTypeCleaned::Scalar,typename Src::Scalar);
+  
+  Assignment<ActualDstTypeCleaned,Src,Func>::run(actualDst, src, func);
+}
+template<typename Dst, typename Src>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+void call_assignment_no_alias(Dst& dst, const Src& src)
+{
+  call_assignment_no_alias(dst, src, internal::assign_op<typename Dst::Scalar,typename Src::Scalar>());
+}
+
+template<typename Dst, typename Src, typename Func>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+void call_assignment_no_alias_no_transpose(Dst& dst, const Src& src, const Func& func)
+{
+  // TODO check whether this is the right place to perform these checks:
+  EIGEN_STATIC_ASSERT_LVALUE(Dst)
+  EIGEN_STATIC_ASSERT_SAME_MATRIX_SIZE(Dst,Src)
+  EIGEN_CHECK_BINARY_COMPATIBILIY(Func,typename Dst::Scalar,typename Src::Scalar);
+
+  Assignment<Dst,Src,Func>::run(dst, src, func);
+}
+template<typename Dst, typename Src>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+void call_assignment_no_alias_no_transpose(Dst& dst, const Src& src)
+{
+  call_assignment_no_alias_no_transpose(dst, src, internal::assign_op<typename Dst::Scalar,typename Src::Scalar>());
+}
+
+// forward declaration
+template<typename Dst, typename Src> void check_for_aliasing(const Dst &dst, const Src &src);
+
+// Generic Dense to Dense assignment
+// Note that the last template argument "Weak" is needed to make it possible to perform
+// both partial specialization+SFINAE without ambiguous specialization
+template< typename DstXprType, typename SrcXprType, typename Functor, typename Weak>
+struct Assignment<DstXprType, SrcXprType, Functor, Dense2Dense, Weak>
+{
+  EIGEN_DEVICE_FUNC
+  static EIGEN_STRONG_INLINE void run(DstXprType &dst, const SrcXprType &src, const Functor &func)
+  {
+#ifndef EIGEN_NO_DEBUG
+    internal::check_for_aliasing(dst, src);
+#endif
+    
+    call_dense_assignment_loop(dst, src, func);
+  }
+};
+
+// Generic assignment through evalTo.
+// TODO: not sure we have to keep that one, but it helps porting current code to new evaluator mechanism.
+// Note that the last template argument "Weak" is needed to make it possible to perform
+// both partial specialization+SFINAE without ambiguous specialization
+template< typename DstXprType, typename SrcXprType, typename Functor, typename Weak>
+struct Assignment<DstXprType, SrcXprType, Functor, EigenBase2EigenBase, Weak>
+{
+  EIGEN_DEVICE_FUNC
+  static EIGEN_STRONG_INLINE void run(DstXprType &dst, const SrcXprType &src, const internal::assign_op<typename DstXprType::Scalar,typename SrcXprType::Scalar> &/*func*/)
+  {
+    Index dstRows = src.rows();
+    Index dstCols = src.cols();
+    if((dst.rows()!=dstRows) || (dst.cols()!=dstCols))
+      dst.resize(dstRows, dstCols);
+
+    eigen_assert(dst.rows() == src.rows() && dst.cols() == src.cols());
+    src.evalTo(dst);
+  }
+
+  // NOTE The following two functions are templated to avoid their instanciation if not needed
+  //      This is needed because some expressions supports evalTo only and/or have 'void' as scalar type.
+  template<typename SrcScalarType>
+  EIGEN_DEVICE_FUNC
+  static EIGEN_STRONG_INLINE void run(DstXprType &dst, const SrcXprType &src, const internal::add_assign_op<typename DstXprType::Scalar,SrcScalarType> &/*func*/)
+  {
+    Index dstRows = src.rows();
+    Index dstCols = src.cols();
+    if((dst.rows()!=dstRows) || (dst.cols()!=dstCols))
+      dst.resize(dstRows, dstCols);
+
+    eigen_assert(dst.rows() == src.rows() && dst.cols() == src.cols());
+    src.addTo(dst);
+  }
+
+  template<typename SrcScalarType>
+  EIGEN_DEVICE_FUNC
+  static EIGEN_STRONG_INLINE void run(DstXprType &dst, const SrcXprType &src, const internal::sub_assign_op<typename DstXprType::Scalar,SrcScalarType> &/*func*/)
+  {
+    Index dstRows = src.rows();
+    Index dstCols = src.cols();
+    if((dst.rows()!=dstRows) || (dst.cols()!=dstCols))
+      dst.resize(dstRows, dstCols);
+
+    eigen_assert(dst.rows() == src.rows() && dst.cols() == src.cols());
+    src.subTo(dst);
+  }
+};
+
+} // namespace internal
+
+} // end namespace Eigen
+
+#endif // EIGEN_ASSIGN_EVALUATOR_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/Transpose.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/Transpose.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/Transpose.h	(revision 3762)
@@ -0,0 +1,405 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2006-2008 Benoit Jacob <jacob.benoit.1@gmail.com>
+// Copyright (C) 2009-2014 Gael Guennebaud <gael.guennebaud@inria.fr>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_TRANSPOSE_H
+#define EIGEN_TRANSPOSE_H
+
+namespace Eigen { 
+
+namespace internal {
+template<typename MatrixType>
+struct traits<Transpose<MatrixType> > : public traits<MatrixType>
+{
+  typedef typename ref_selector<MatrixType>::type MatrixTypeNested;
+  typedef typename remove_reference<MatrixTypeNested>::type MatrixTypeNestedPlain;
+  enum {
+    RowsAtCompileTime = MatrixType::ColsAtCompileTime,
+    ColsAtCompileTime = MatrixType::RowsAtCompileTime,
+    MaxRowsAtCompileTime = MatrixType::MaxColsAtCompileTime,
+    MaxColsAtCompileTime = MatrixType::MaxRowsAtCompileTime,
+    FlagsLvalueBit = is_lvalue<MatrixType>::value ? LvalueBit : 0,
+    Flags0 = traits<MatrixTypeNestedPlain>::Flags & ~(LvalueBit | NestByRefBit),
+    Flags1 = Flags0 | FlagsLvalueBit,
+    Flags = Flags1 ^ RowMajorBit,
+    InnerStrideAtCompileTime = inner_stride_at_compile_time<MatrixType>::ret,
+    OuterStrideAtCompileTime = outer_stride_at_compile_time<MatrixType>::ret
+  };
+};
+}
+
+template<typename MatrixType, typename StorageKind> class TransposeImpl;
+
+/** \class Transpose
+  * \ingroup Core_Module
+  *
+  * \brief Expression of the transpose of a matrix
+  *
+  * \tparam MatrixType the type of the object of which we are taking the transpose
+  *
+  * This class represents an expression of the transpose of a matrix.
+  * It is the return type of MatrixBase::transpose() and MatrixBase::adjoint()
+  * and most of the time this is the only way it is used.
+  *
+  * \sa MatrixBase::transpose(), MatrixBase::adjoint()
+  */
+template<typename MatrixType> class Transpose
+  : public TransposeImpl<MatrixType,typename internal::traits<MatrixType>::StorageKind>
+{
+  public:
+
+    typedef typename internal::ref_selector<MatrixType>::non_const_type MatrixTypeNested;
+
+    typedef typename TransposeImpl<MatrixType,typename internal::traits<MatrixType>::StorageKind>::Base Base;
+    EIGEN_GENERIC_PUBLIC_INTERFACE(Transpose)
+    typedef typename internal::remove_all<MatrixType>::type NestedExpression;
+
+    EIGEN_DEVICE_FUNC
+    explicit inline Transpose(MatrixType& matrix) : m_matrix(matrix) {}
+
+    EIGEN_INHERIT_ASSIGNMENT_OPERATORS(Transpose)
+
+    EIGEN_DEVICE_FUNC inline Index rows() const { return m_matrix.cols(); }
+    EIGEN_DEVICE_FUNC inline Index cols() const { return m_matrix.rows(); }
+
+    /** \returns the nested expression */
+    EIGEN_DEVICE_FUNC
+    const typename internal::remove_all<MatrixTypeNested>::type&
+    nestedExpression() const { return m_matrix; }
+
+    /** \returns the nested expression */
+    EIGEN_DEVICE_FUNC
+    typename internal::remove_reference<MatrixTypeNested>::type&
+    nestedExpression() { return m_matrix; }
+
+    /** \internal */
+    void resize(Index nrows, Index ncols) {
+      m_matrix.resize(ncols,nrows);
+    }
+
+  protected:
+    typename internal::ref_selector<MatrixType>::non_const_type m_matrix;
+};
+
+namespace internal {
+
+template<typename MatrixType, bool HasDirectAccess = has_direct_access<MatrixType>::ret>
+struct TransposeImpl_base
+{
+  typedef typename dense_xpr_base<Transpose<MatrixType> >::type type;
+};
+
+template<typename MatrixType>
+struct TransposeImpl_base<MatrixType, false>
+{
+  typedef typename dense_xpr_base<Transpose<MatrixType> >::type type;
+};
+
+} // end namespace internal
+
+// Generic API dispatcher
+template<typename XprType, typename StorageKind>
+class TransposeImpl
+  : public internal::generic_xpr_base<Transpose<XprType> >::type
+{
+public:
+  typedef typename internal::generic_xpr_base<Transpose<XprType> >::type Base;
+};
+
+template<typename MatrixType> class TransposeImpl<MatrixType,Dense>
+  : public internal::TransposeImpl_base<MatrixType>::type
+{
+  public:
+
+    typedef typename internal::TransposeImpl_base<MatrixType>::type Base;
+    using Base::coeffRef;
+    EIGEN_DENSE_PUBLIC_INTERFACE(Transpose<MatrixType>)
+    EIGEN_INHERIT_ASSIGNMENT_OPERATORS(TransposeImpl)
+
+    EIGEN_DEVICE_FUNC inline Index innerStride() const { return derived().nestedExpression().innerStride(); }
+    EIGEN_DEVICE_FUNC inline Index outerStride() const { return derived().nestedExpression().outerStride(); }
+
+    typedef typename internal::conditional<
+                       internal::is_lvalue<MatrixType>::value,
+                       Scalar,
+                       const Scalar
+                     >::type ScalarWithConstIfNotLvalue;
+
+    EIGEN_DEVICE_FUNC inline ScalarWithConstIfNotLvalue* data() { return derived().nestedExpression().data(); }
+    EIGEN_DEVICE_FUNC inline const Scalar* data() const { return derived().nestedExpression().data(); }
+
+    // FIXME: shall we keep the const version of coeffRef?
+    EIGEN_DEVICE_FUNC
+    inline const Scalar& coeffRef(Index rowId, Index colId) const
+    {
+      return derived().nestedExpression().coeffRef(colId, rowId);
+    }
+
+    EIGEN_DEVICE_FUNC
+    inline const Scalar& coeffRef(Index index) const
+    {
+      return derived().nestedExpression().coeffRef(index);
+    }
+  protected:
+    EIGEN_DEFAULT_EMPTY_CONSTRUCTOR_AND_DESTRUCTOR(TransposeImpl)
+};
+
+/** \returns an expression of the transpose of *this.
+  *
+  * Example: \include MatrixBase_transpose.cpp
+  * Output: \verbinclude MatrixBase_transpose.out
+  *
+  * \warning If you want to replace a matrix by its own transpose, do \b NOT do this:
+  * \code
+  * m = m.transpose(); // bug!!! caused by aliasing effect
+  * \endcode
+  * Instead, use the transposeInPlace() method:
+  * \code
+  * m.transposeInPlace();
+  * \endcode
+  * which gives Eigen good opportunities for optimization, or alternatively you can also do:
+  * \code
+  * m = m.transpose().eval();
+  * \endcode
+  *
+  * \sa transposeInPlace(), adjoint() */
+template<typename Derived>
+inline Transpose<Derived>
+DenseBase<Derived>::transpose()
+{
+  return TransposeReturnType(derived());
+}
+
+/** This is the const version of transpose().
+  *
+  * Make sure you read the warning for transpose() !
+  *
+  * \sa transposeInPlace(), adjoint() */
+template<typename Derived>
+inline typename DenseBase<Derived>::ConstTransposeReturnType
+DenseBase<Derived>::transpose() const
+{
+  return ConstTransposeReturnType(derived());
+}
+
+/** \returns an expression of the adjoint (i.e. conjugate transpose) of *this.
+  *
+  * Example: \include MatrixBase_adjoint.cpp
+  * Output: \verbinclude MatrixBase_adjoint.out
+  *
+  * \warning If you want to replace a matrix by its own adjoint, do \b NOT do this:
+  * \code
+  * m = m.adjoint(); // bug!!! caused by aliasing effect
+  * \endcode
+  * Instead, use the adjointInPlace() method:
+  * \code
+  * m.adjointInPlace();
+  * \endcode
+  * which gives Eigen good opportunities for optimization, or alternatively you can also do:
+  * \code
+  * m = m.adjoint().eval();
+  * \endcode
+  *
+  * \sa adjointInPlace(), transpose(), conjugate(), class Transpose, class internal::scalar_conjugate_op */
+template<typename Derived>
+inline const typename MatrixBase<Derived>::AdjointReturnType
+MatrixBase<Derived>::adjoint() const
+{
+  return AdjointReturnType(this->transpose());
+}
+
+/***************************************************************************
+* "in place" transpose implementation
+***************************************************************************/
+
+namespace internal {
+
+template<typename MatrixType,
+  bool IsSquare = (MatrixType::RowsAtCompileTime == MatrixType::ColsAtCompileTime) && MatrixType::RowsAtCompileTime!=Dynamic,
+  bool MatchPacketSize =
+        (int(MatrixType::RowsAtCompileTime) == int(internal::packet_traits<typename MatrixType::Scalar>::size))
+    &&  (internal::evaluator<MatrixType>::Flags&PacketAccessBit) >
+struct inplace_transpose_selector;
+
+template<typename MatrixType>
+struct inplace_transpose_selector<MatrixType,true,false> { // square matrix
+  static void run(MatrixType& m) {
+    m.matrix().template triangularView<StrictlyUpper>().swap(m.matrix().transpose());
+  }
+};
+
+// TODO: vectorized path is currently limited to LargestPacketSize x LargestPacketSize cases only.
+template<typename MatrixType>
+struct inplace_transpose_selector<MatrixType,true,true> { // PacketSize x PacketSize
+  static void run(MatrixType& m) {
+    typedef typename MatrixType::Scalar Scalar;
+    typedef typename internal::packet_traits<typename MatrixType::Scalar>::type Packet;
+    const Index PacketSize = internal::packet_traits<Scalar>::size;
+    const Index Alignment = internal::evaluator<MatrixType>::Alignment;
+    PacketBlock<Packet> A;
+    for (Index i=0; i<PacketSize; ++i)
+      A.packet[i] = m.template packetByOuterInner<Alignment>(i,0);
+    internal::ptranspose(A);
+    for (Index i=0; i<PacketSize; ++i)
+      m.template writePacket<Alignment>(m.rowIndexByOuterInner(i,0), m.colIndexByOuterInner(i,0), A.packet[i]);
+  }
+};
+
+template<typename MatrixType,bool MatchPacketSize>
+struct inplace_transpose_selector<MatrixType,false,MatchPacketSize> { // non square matrix
+  static void run(MatrixType& m) {
+    if (m.rows()==m.cols())
+      m.matrix().template triangularView<StrictlyUpper>().swap(m.matrix().transpose());
+    else
+      m = m.transpose().eval();
+  }
+};
+
+} // end namespace internal
+
+/** This is the "in place" version of transpose(): it replaces \c *this by its own transpose.
+  * Thus, doing
+  * \code
+  * m.transposeInPlace();
+  * \endcode
+  * has the same effect on m as doing
+  * \code
+  * m = m.transpose().eval();
+  * \endcode
+  * and is faster and also safer because in the latter line of code, forgetting the eval() results
+  * in a bug caused by \ref TopicAliasing "aliasing".
+  *
+  * Notice however that this method is only useful if you want to replace a matrix by its own transpose.
+  * If you just need the transpose of a matrix, use transpose().
+  *
+  * \note if the matrix is not square, then \c *this must be a resizable matrix. 
+  * This excludes (non-square) fixed-size matrices, block-expressions and maps.
+  *
+  * \sa transpose(), adjoint(), adjointInPlace() */
+template<typename Derived>
+inline void DenseBase<Derived>::transposeInPlace()
+{
+  eigen_assert((rows() == cols() || (RowsAtCompileTime == Dynamic && ColsAtCompileTime == Dynamic))
+               && "transposeInPlace() called on a non-square non-resizable matrix");
+  internal::inplace_transpose_selector<Derived>::run(derived());
+}
+
+/***************************************************************************
+* "in place" adjoint implementation
+***************************************************************************/
+
+/** This is the "in place" version of adjoint(): it replaces \c *this by its own transpose.
+  * Thus, doing
+  * \code
+  * m.adjointInPlace();
+  * \endcode
+  * has the same effect on m as doing
+  * \code
+  * m = m.adjoint().eval();
+  * \endcode
+  * and is faster and also safer because in the latter line of code, forgetting the eval() results
+  * in a bug caused by aliasing.
+  *
+  * Notice however that this method is only useful if you want to replace a matrix by its own adjoint.
+  * If you just need the adjoint of a matrix, use adjoint().
+  *
+  * \note if the matrix is not square, then \c *this must be a resizable matrix.
+  * This excludes (non-square) fixed-size matrices, block-expressions and maps.
+  *
+  * \sa transpose(), adjoint(), transposeInPlace() */
+template<typename Derived>
+inline void MatrixBase<Derived>::adjointInPlace()
+{
+  derived() = adjoint().eval();
+}
+
+#ifndef EIGEN_NO_DEBUG
+
+// The following is to detect aliasing problems in most common cases.
+
+namespace internal {
+
+template<bool DestIsTransposed, typename OtherDerived>
+struct check_transpose_aliasing_compile_time_selector
+{
+  enum { ret = bool(blas_traits<OtherDerived>::IsTransposed) != DestIsTransposed };
+};
+
+template<bool DestIsTransposed, typename BinOp, typename DerivedA, typename DerivedB>
+struct check_transpose_aliasing_compile_time_selector<DestIsTransposed,CwiseBinaryOp<BinOp,DerivedA,DerivedB> >
+{
+  enum { ret =    bool(blas_traits<DerivedA>::IsTransposed) != DestIsTransposed
+               || bool(blas_traits<DerivedB>::IsTransposed) != DestIsTransposed
+  };
+};
+
+template<typename Scalar, bool DestIsTransposed, typename OtherDerived>
+struct check_transpose_aliasing_run_time_selector
+{
+  static bool run(const Scalar* dest, const OtherDerived& src)
+  {
+    return (bool(blas_traits<OtherDerived>::IsTransposed) != DestIsTransposed) && (dest!=0 && dest==(const Scalar*)extract_data(src));
+  }
+};
+
+template<typename Scalar, bool DestIsTransposed, typename BinOp, typename DerivedA, typename DerivedB>
+struct check_transpose_aliasing_run_time_selector<Scalar,DestIsTransposed,CwiseBinaryOp<BinOp,DerivedA,DerivedB> >
+{
+  static bool run(const Scalar* dest, const CwiseBinaryOp<BinOp,DerivedA,DerivedB>& src)
+  {
+    return ((blas_traits<DerivedA>::IsTransposed != DestIsTransposed) && (dest!=0 && dest==(const Scalar*)extract_data(src.lhs())))
+        || ((blas_traits<DerivedB>::IsTransposed != DestIsTransposed) && (dest!=0 && dest==(const Scalar*)extract_data(src.rhs())));
+  }
+};
+
+// the following selector, checkTransposeAliasing_impl, based on MightHaveTransposeAliasing,
+// is because when the condition controlling the assert is known at compile time, ICC emits a warning.
+// This is actually a good warning: in expressions that don't have any transposing, the condition is
+// known at compile time to be false, and using that, we can avoid generating the code of the assert again
+// and again for all these expressions that don't need it.
+
+template<typename Derived, typename OtherDerived,
+         bool MightHaveTransposeAliasing
+                 = check_transpose_aliasing_compile_time_selector
+                     <blas_traits<Derived>::IsTransposed,OtherDerived>::ret
+        >
+struct checkTransposeAliasing_impl
+{
+    static void run(const Derived& dst, const OtherDerived& other)
+    {
+        eigen_assert((!check_transpose_aliasing_run_time_selector
+                      <typename Derived::Scalar,blas_traits<Derived>::IsTransposed,OtherDerived>
+                      ::run(extract_data(dst), other))
+          && "aliasing detected during transposition, use transposeInPlace() "
+             "or evaluate the rhs into a temporary using .eval()");
+
+    }
+};
+
+template<typename Derived, typename OtherDerived>
+struct checkTransposeAliasing_impl<Derived, OtherDerived, false>
+{
+    static void run(const Derived&, const OtherDerived&)
+    {
+    }
+};
+
+template<typename Dst, typename Src>
+void check_for_aliasing(const Dst &dst, const Src &src)
+{
+  internal::checkTransposeAliasing_impl<Dst, Src>::run(dst, src);
+}
+
+} // end namespace internal
+
+#endif // EIGEN_NO_DEBUG
+
+} // end namespace Eigen
+
+#endif // EIGEN_TRANSPOSE_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/SelfCwiseBinaryOp.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/SelfCwiseBinaryOp.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/SelfCwiseBinaryOp.h	(revision 3762)
@@ -0,0 +1,47 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2009-2010 Gael Guennebaud <gael.guennebaud@inria.fr>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_SELFCWISEBINARYOP_H
+#define EIGEN_SELFCWISEBINARYOP_H
+
+namespace Eigen { 
+
+// TODO generalize the scalar type of 'other'
+
+template<typename Derived>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived& DenseBase<Derived>::operator*=(const Scalar& other)
+{
+  internal::call_assignment(this->derived(), PlainObject::Constant(rows(),cols(),other), internal::mul_assign_op<Scalar,Scalar>());
+  return derived();
+}
+
+template<typename Derived>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived& ArrayBase<Derived>::operator+=(const Scalar& other)
+{
+  internal::call_assignment(this->derived(), PlainObject::Constant(rows(),cols(),other), internal::add_assign_op<Scalar,Scalar>());
+  return derived();
+}
+
+template<typename Derived>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived& ArrayBase<Derived>::operator-=(const Scalar& other)
+{
+  internal::call_assignment(this->derived(), PlainObject::Constant(rows(),cols(),other), internal::sub_assign_op<Scalar,Scalar>());
+  return derived();
+}
+
+template<typename Derived>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived& DenseBase<Derived>::operator/=(const Scalar& other)
+{
+  internal::call_assignment(this->derived(), PlainObject::Constant(rows(),cols(),other), internal::div_assign_op<Scalar,Scalar>());
+  return derived();
+}
+
+} // end namespace Eigen
+
+#endif // EIGEN_SELFCWISEBINARYOP_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/BandMatrix.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/BandMatrix.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/BandMatrix.h	(revision 3762)
@@ -0,0 +1,353 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2009 Gael Guennebaud <gael.guennebaud@inria.fr>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_BANDMATRIX_H
+#define EIGEN_BANDMATRIX_H
+
+namespace Eigen { 
+
+namespace internal {
+
+template<typename Derived>
+class BandMatrixBase : public EigenBase<Derived>
+{
+  public:
+
+    enum {
+      Flags = internal::traits<Derived>::Flags,
+      CoeffReadCost = internal::traits<Derived>::CoeffReadCost,
+      RowsAtCompileTime = internal::traits<Derived>::RowsAtCompileTime,
+      ColsAtCompileTime = internal::traits<Derived>::ColsAtCompileTime,
+      MaxRowsAtCompileTime = internal::traits<Derived>::MaxRowsAtCompileTime,
+      MaxColsAtCompileTime = internal::traits<Derived>::MaxColsAtCompileTime,
+      Supers = internal::traits<Derived>::Supers,
+      Subs   = internal::traits<Derived>::Subs,
+      Options = internal::traits<Derived>::Options
+    };
+    typedef typename internal::traits<Derived>::Scalar Scalar;
+    typedef Matrix<Scalar,RowsAtCompileTime,ColsAtCompileTime> DenseMatrixType;
+    typedef typename DenseMatrixType::StorageIndex StorageIndex;
+    typedef typename internal::traits<Derived>::CoefficientsType CoefficientsType;
+    typedef EigenBase<Derived> Base;
+
+  protected:
+    enum {
+      DataRowsAtCompileTime = ((Supers!=Dynamic) && (Subs!=Dynamic))
+                            ? 1 + Supers + Subs
+                            : Dynamic,
+      SizeAtCompileTime = EIGEN_SIZE_MIN_PREFER_DYNAMIC(RowsAtCompileTime,ColsAtCompileTime)
+    };
+
+  public:
+    
+    using Base::derived;
+    using Base::rows;
+    using Base::cols;
+
+    /** \returns the number of super diagonals */
+    inline Index supers() const { return derived().supers(); }
+
+    /** \returns the number of sub diagonals */
+    inline Index subs() const { return derived().subs(); }
+    
+    /** \returns an expression of the underlying coefficient matrix */
+    inline const CoefficientsType& coeffs() const { return derived().coeffs(); }
+    
+    /** \returns an expression of the underlying coefficient matrix */
+    inline CoefficientsType& coeffs() { return derived().coeffs(); }
+
+    /** \returns a vector expression of the \a i -th column,
+      * only the meaningful part is returned.
+      * \warning the internal storage must be column major. */
+    inline Block<CoefficientsType,Dynamic,1> col(Index i)
+    {
+      EIGEN_STATIC_ASSERT((Options&RowMajor)==0,THIS_METHOD_IS_ONLY_FOR_COLUMN_MAJOR_MATRICES);
+      Index start = 0;
+      Index len = coeffs().rows();
+      if (i<=supers())
+      {
+        start = supers()-i;
+        len = (std::min)(rows(),std::max<Index>(0,coeffs().rows() - (supers()-i)));
+      }
+      else if (i>=rows()-subs())
+        len = std::max<Index>(0,coeffs().rows() - (i + 1 - rows() + subs()));
+      return Block<CoefficientsType,Dynamic,1>(coeffs(), start, i, len, 1);
+    }
+
+    /** \returns a vector expression of the main diagonal */
+    inline Block<CoefficientsType,1,SizeAtCompileTime> diagonal()
+    { return Block<CoefficientsType,1,SizeAtCompileTime>(coeffs(),supers(),0,1,(std::min)(rows(),cols())); }
+
+    /** \returns a vector expression of the main diagonal (const version) */
+    inline const Block<const CoefficientsType,1,SizeAtCompileTime> diagonal() const
+    { return Block<const CoefficientsType,1,SizeAtCompileTime>(coeffs(),supers(),0,1,(std::min)(rows(),cols())); }
+
+    template<int Index> struct DiagonalIntReturnType {
+      enum {
+        ReturnOpposite = (Options&SelfAdjoint) && (((Index)>0 && Supers==0) || ((Index)<0 && Subs==0)),
+        Conjugate = ReturnOpposite && NumTraits<Scalar>::IsComplex,
+        ActualIndex = ReturnOpposite ? -Index : Index,
+        DiagonalSize = (RowsAtCompileTime==Dynamic || ColsAtCompileTime==Dynamic)
+                     ? Dynamic
+                     : (ActualIndex<0
+                     ? EIGEN_SIZE_MIN_PREFER_DYNAMIC(ColsAtCompileTime, RowsAtCompileTime + ActualIndex)
+                     : EIGEN_SIZE_MIN_PREFER_DYNAMIC(RowsAtCompileTime, ColsAtCompileTime - ActualIndex))
+      };
+      typedef Block<CoefficientsType,1, DiagonalSize> BuildType;
+      typedef typename internal::conditional<Conjugate,
+                 CwiseUnaryOp<internal::scalar_conjugate_op<Scalar>,BuildType >,
+                 BuildType>::type Type;
+    };
+
+    /** \returns a vector expression of the \a N -th sub or super diagonal */
+    template<int N> inline typename DiagonalIntReturnType<N>::Type diagonal()
+    {
+      return typename DiagonalIntReturnType<N>::BuildType(coeffs(), supers()-N, (std::max)(0,N), 1, diagonalLength(N));
+    }
+
+    /** \returns a vector expression of the \a N -th sub or super diagonal */
+    template<int N> inline const typename DiagonalIntReturnType<N>::Type diagonal() const
+    {
+      return typename DiagonalIntReturnType<N>::BuildType(coeffs(), supers()-N, (std::max)(0,N), 1, diagonalLength(N));
+    }
+
+    /** \returns a vector expression of the \a i -th sub or super diagonal */
+    inline Block<CoefficientsType,1,Dynamic> diagonal(Index i)
+    {
+      eigen_assert((i<0 && -i<=subs()) || (i>=0 && i<=supers()));
+      return Block<CoefficientsType,1,Dynamic>(coeffs(), supers()-i, std::max<Index>(0,i), 1, diagonalLength(i));
+    }
+
+    /** \returns a vector expression of the \a i -th sub or super diagonal */
+    inline const Block<const CoefficientsType,1,Dynamic> diagonal(Index i) const
+    {
+      eigen_assert((i<0 && -i<=subs()) || (i>=0 && i<=supers()));
+      return Block<const CoefficientsType,1,Dynamic>(coeffs(), supers()-i, std::max<Index>(0,i), 1, diagonalLength(i));
+    }
+    
+    template<typename Dest> inline void evalTo(Dest& dst) const
+    {
+      dst.resize(rows(),cols());
+      dst.setZero();
+      dst.diagonal() = diagonal();
+      for (Index i=1; i<=supers();++i)
+        dst.diagonal(i) = diagonal(i);
+      for (Index i=1; i<=subs();++i)
+        dst.diagonal(-i) = diagonal(-i);
+    }
+
+    DenseMatrixType toDenseMatrix() const
+    {
+      DenseMatrixType res(rows(),cols());
+      evalTo(res);
+      return res;
+    }
+
+  protected:
+
+    inline Index diagonalLength(Index i) const
+    { return i<0 ? (std::min)(cols(),rows()+i) : (std::min)(rows(),cols()-i); }
+};
+
+/**
+  * \class BandMatrix
+  * \ingroup Core_Module
+  *
+  * \brief Represents a rectangular matrix with a banded storage
+  *
+  * \tparam _Scalar Numeric type, i.e. float, double, int
+  * \tparam _Rows Number of rows, or \b Dynamic
+  * \tparam _Cols Number of columns, or \b Dynamic
+  * \tparam _Supers Number of super diagonal
+  * \tparam _Subs Number of sub diagonal
+  * \tparam _Options A combination of either \b #RowMajor or \b #ColMajor, and of \b #SelfAdjoint
+  *                  The former controls \ref TopicStorageOrders "storage order", and defaults to
+  *                  column-major. The latter controls whether the matrix represents a selfadjoint
+  *                  matrix in which case either Supers of Subs have to be null.
+  *
+  * \sa class TridiagonalMatrix
+  */
+
+template<typename _Scalar, int _Rows, int _Cols, int _Supers, int _Subs, int _Options>
+struct traits<BandMatrix<_Scalar,_Rows,_Cols,_Supers,_Subs,_Options> >
+{
+  typedef _Scalar Scalar;
+  typedef Dense StorageKind;
+  typedef Eigen::Index StorageIndex;
+  enum {
+    CoeffReadCost = NumTraits<Scalar>::ReadCost,
+    RowsAtCompileTime = _Rows,
+    ColsAtCompileTime = _Cols,
+    MaxRowsAtCompileTime = _Rows,
+    MaxColsAtCompileTime = _Cols,
+    Flags = LvalueBit,
+    Supers = _Supers,
+    Subs = _Subs,
+    Options = _Options,
+    DataRowsAtCompileTime = ((Supers!=Dynamic) && (Subs!=Dynamic)) ? 1 + Supers + Subs : Dynamic
+  };
+  typedef Matrix<Scalar,DataRowsAtCompileTime,ColsAtCompileTime,Options&RowMajor?RowMajor:ColMajor> CoefficientsType;
+};
+
+template<typename _Scalar, int Rows, int Cols, int Supers, int Subs, int Options>
+class BandMatrix : public BandMatrixBase<BandMatrix<_Scalar,Rows,Cols,Supers,Subs,Options> >
+{
+  public:
+
+    typedef typename internal::traits<BandMatrix>::Scalar Scalar;
+    typedef typename internal::traits<BandMatrix>::StorageIndex StorageIndex;
+    typedef typename internal::traits<BandMatrix>::CoefficientsType CoefficientsType;
+
+    explicit inline BandMatrix(Index rows=Rows, Index cols=Cols, Index supers=Supers, Index subs=Subs)
+      : m_coeffs(1+supers+subs,cols),
+        m_rows(rows), m_supers(supers), m_subs(subs)
+    {
+    }
+
+    /** \returns the number of columns */
+    inline Index rows() const { return m_rows.value(); }
+
+    /** \returns the number of rows */
+    inline Index cols() const { return m_coeffs.cols(); }
+
+    /** \returns the number of super diagonals */
+    inline Index supers() const { return m_supers.value(); }
+
+    /** \returns the number of sub diagonals */
+    inline Index subs() const { return m_subs.value(); }
+
+    inline const CoefficientsType& coeffs() const { return m_coeffs; }
+    inline CoefficientsType& coeffs() { return m_coeffs; }
+
+  protected:
+
+    CoefficientsType m_coeffs;
+    internal::variable_if_dynamic<Index, Rows>   m_rows;
+    internal::variable_if_dynamic<Index, Supers> m_supers;
+    internal::variable_if_dynamic<Index, Subs>   m_subs;
+};
+
+template<typename _CoefficientsType,int _Rows, int _Cols, int _Supers, int _Subs,int _Options>
+class BandMatrixWrapper;
+
+template<typename _CoefficientsType,int _Rows, int _Cols, int _Supers, int _Subs,int _Options>
+struct traits<BandMatrixWrapper<_CoefficientsType,_Rows,_Cols,_Supers,_Subs,_Options> >
+{
+  typedef typename _CoefficientsType::Scalar Scalar;
+  typedef typename _CoefficientsType::StorageKind StorageKind;
+  typedef typename _CoefficientsType::StorageIndex StorageIndex;
+  enum {
+    CoeffReadCost = internal::traits<_CoefficientsType>::CoeffReadCost,
+    RowsAtCompileTime = _Rows,
+    ColsAtCompileTime = _Cols,
+    MaxRowsAtCompileTime = _Rows,
+    MaxColsAtCompileTime = _Cols,
+    Flags = LvalueBit,
+    Supers = _Supers,
+    Subs = _Subs,
+    Options = _Options,
+    DataRowsAtCompileTime = ((Supers!=Dynamic) && (Subs!=Dynamic)) ? 1 + Supers + Subs : Dynamic
+  };
+  typedef _CoefficientsType CoefficientsType;
+};
+
+template<typename _CoefficientsType,int _Rows, int _Cols, int _Supers, int _Subs,int _Options>
+class BandMatrixWrapper : public BandMatrixBase<BandMatrixWrapper<_CoefficientsType,_Rows,_Cols,_Supers,_Subs,_Options> >
+{
+  public:
+
+    typedef typename internal::traits<BandMatrixWrapper>::Scalar Scalar;
+    typedef typename internal::traits<BandMatrixWrapper>::CoefficientsType CoefficientsType;
+    typedef typename internal::traits<BandMatrixWrapper>::StorageIndex StorageIndex;
+
+    explicit inline BandMatrixWrapper(const CoefficientsType& coeffs, Index rows=_Rows, Index cols=_Cols, Index supers=_Supers, Index subs=_Subs)
+      : m_coeffs(coeffs),
+        m_rows(rows), m_supers(supers), m_subs(subs)
+    {
+      EIGEN_UNUSED_VARIABLE(cols);
+      //internal::assert(coeffs.cols()==cols() && (supers()+subs()+1)==coeffs.rows());
+    }
+
+    /** \returns the number of columns */
+    inline Index rows() const { return m_rows.value(); }
+
+    /** \returns the number of rows */
+    inline Index cols() const { return m_coeffs.cols(); }
+
+    /** \returns the number of super diagonals */
+    inline Index supers() const { return m_supers.value(); }
+
+    /** \returns the number of sub diagonals */
+    inline Index subs() const { return m_subs.value(); }
+
+    inline const CoefficientsType& coeffs() const { return m_coeffs; }
+
+  protected:
+
+    const CoefficientsType& m_coeffs;
+    internal::variable_if_dynamic<Index, _Rows>   m_rows;
+    internal::variable_if_dynamic<Index, _Supers> m_supers;
+    internal::variable_if_dynamic<Index, _Subs>   m_subs;
+};
+
+/**
+  * \class TridiagonalMatrix
+  * \ingroup Core_Module
+  *
+  * \brief Represents a tridiagonal matrix with a compact banded storage
+  *
+  * \tparam Scalar Numeric type, i.e. float, double, int
+  * \tparam Size Number of rows and cols, or \b Dynamic
+  * \tparam Options Can be 0 or \b SelfAdjoint
+  *
+  * \sa class BandMatrix
+  */
+template<typename Scalar, int Size, int Options>
+class TridiagonalMatrix : public BandMatrix<Scalar,Size,Size,Options&SelfAdjoint?0:1,1,Options|RowMajor>
+{
+    typedef BandMatrix<Scalar,Size,Size,Options&SelfAdjoint?0:1,1,Options|RowMajor> Base;
+    typedef typename Base::StorageIndex StorageIndex;
+  public:
+    explicit TridiagonalMatrix(Index size = Size) : Base(size,size,Options&SelfAdjoint?0:1,1) {}
+
+    inline typename Base::template DiagonalIntReturnType<1>::Type super()
+    { return Base::template diagonal<1>(); }
+    inline const typename Base::template DiagonalIntReturnType<1>::Type super() const
+    { return Base::template diagonal<1>(); }
+    inline typename Base::template DiagonalIntReturnType<-1>::Type sub()
+    { return Base::template diagonal<-1>(); }
+    inline const typename Base::template DiagonalIntReturnType<-1>::Type sub() const
+    { return Base::template diagonal<-1>(); }
+  protected:
+};
+
+
+struct BandShape {};
+
+template<typename _Scalar, int _Rows, int _Cols, int _Supers, int _Subs, int _Options>
+struct evaluator_traits<BandMatrix<_Scalar,_Rows,_Cols,_Supers,_Subs,_Options> >
+  : public evaluator_traits_base<BandMatrix<_Scalar,_Rows,_Cols,_Supers,_Subs,_Options> >
+{
+  typedef BandShape Shape;
+};
+
+template<typename _CoefficientsType,int _Rows, int _Cols, int _Supers, int _Subs,int _Options>
+struct evaluator_traits<BandMatrixWrapper<_CoefficientsType,_Rows,_Cols,_Supers,_Subs,_Options> >
+  : public evaluator_traits_base<BandMatrixWrapper<_CoefficientsType,_Rows,_Cols,_Supers,_Subs,_Options> >
+{
+  typedef BandShape Shape;
+};
+
+template<> struct AssignmentKind<DenseShape,BandShape> { typedef EigenBase2EigenBase Kind; };
+
+} // end namespace internal
+
+} // end namespace Eigen
+
+#endif // EIGEN_BANDMATRIX_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/GlobalFunctions.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/GlobalFunctions.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/GlobalFunctions.h	(revision 3762)
@@ -0,0 +1,187 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2010-2016 Gael Guennebaud <gael.guennebaud@inria.fr>
+// Copyright (C) 2010 Benoit Jacob <jacob.benoit.1@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_GLOBAL_FUNCTIONS_H
+#define EIGEN_GLOBAL_FUNCTIONS_H
+
+#ifdef EIGEN_PARSED_BY_DOXYGEN
+
+#define EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(NAME,FUNCTOR,DOC_OP,DOC_DETAILS) \
+  /** \returns an expression of the coefficient-wise DOC_OP of \a x
+
+    DOC_DETAILS
+
+    \sa <a href="group__CoeffwiseMathFunctions.html#cwisetable_##NAME">Math functions</a>, class CwiseUnaryOp
+    */ \
+  template<typename Derived> \
+  inline const Eigen::CwiseUnaryOp<Eigen::internal::FUNCTOR<typename Derived::Scalar>, const Derived> \
+  NAME(const Eigen::ArrayBase<Derived>& x);
+
+#else
+
+#define EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(NAME,FUNCTOR,DOC_OP,DOC_DETAILS) \
+  template<typename Derived> \
+  inline const Eigen::CwiseUnaryOp<Eigen::internal::FUNCTOR<typename Derived::Scalar>, const Derived> \
+  (NAME)(const Eigen::ArrayBase<Derived>& x) { \
+    return Eigen::CwiseUnaryOp<Eigen::internal::FUNCTOR<typename Derived::Scalar>, const Derived>(x.derived()); \
+  }
+
+#endif // EIGEN_PARSED_BY_DOXYGEN
+
+#define EIGEN_ARRAY_DECLARE_GLOBAL_EIGEN_UNARY(NAME,FUNCTOR) \
+  \
+  template<typename Derived> \
+  struct NAME##_retval<ArrayBase<Derived> > \
+  { \
+    typedef const Eigen::CwiseUnaryOp<Eigen::internal::FUNCTOR<typename Derived::Scalar>, const Derived> type; \
+  }; \
+  template<typename Derived> \
+  struct NAME##_impl<ArrayBase<Derived> > \
+  { \
+    static inline typename NAME##_retval<ArrayBase<Derived> >::type run(const Eigen::ArrayBase<Derived>& x) \
+    { \
+      return typename NAME##_retval<ArrayBase<Derived> >::type(x.derived()); \
+    } \
+  };
+
+namespace Eigen
+{
+  EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(real,scalar_real_op,real part,\sa ArrayBase::real)
+  EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(imag,scalar_imag_op,imaginary part,\sa ArrayBase::imag)
+  EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(conj,scalar_conjugate_op,complex conjugate,\sa ArrayBase::conjugate)
+  EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(inverse,scalar_inverse_op,inverse,\sa ArrayBase::inverse)
+  EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(sin,scalar_sin_op,sine,\sa ArrayBase::sin)
+  EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(cos,scalar_cos_op,cosine,\sa ArrayBase::cos)
+  EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(tan,scalar_tan_op,tangent,\sa ArrayBase::tan)
+  EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(atan,scalar_atan_op,arc-tangent,\sa ArrayBase::atan)
+  EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(asin,scalar_asin_op,arc-sine,\sa ArrayBase::asin)
+  EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(acos,scalar_acos_op,arc-consine,\sa ArrayBase::acos)
+  EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(sinh,scalar_sinh_op,hyperbolic sine,\sa ArrayBase::sinh)
+  EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(cosh,scalar_cosh_op,hyperbolic cosine,\sa ArrayBase::cosh)
+  EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(tanh,scalar_tanh_op,hyperbolic tangent,\sa ArrayBase::tanh)
+  EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(lgamma,scalar_lgamma_op,natural logarithm of the gamma function,\sa ArrayBase::lgamma)
+  EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(digamma,scalar_digamma_op,derivative of lgamma,\sa ArrayBase::digamma)
+  EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(erf,scalar_erf_op,error function,\sa ArrayBase::erf)
+  EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(erfc,scalar_erfc_op,complement error function,\sa ArrayBase::erfc)
+  EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(exp,scalar_exp_op,exponential,\sa ArrayBase::exp)
+  EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(log,scalar_log_op,natural logarithm,\sa Eigen::log10 DOXCOMMA ArrayBase::log)
+  EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(log1p,scalar_log1p_op,natural logarithm of 1 plus the value,\sa ArrayBase::log1p)
+  EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(log10,scalar_log10_op,base 10 logarithm,\sa Eigen::log DOXCOMMA ArrayBase::log)
+  EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(abs,scalar_abs_op,absolute value,\sa ArrayBase::abs DOXCOMMA MatrixBase::cwiseAbs)
+  EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(abs2,scalar_abs2_op,squared absolute value,\sa ArrayBase::abs2 DOXCOMMA MatrixBase::cwiseAbs2)
+  EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(arg,scalar_arg_op,complex argument,\sa ArrayBase::arg)
+  EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(sqrt,scalar_sqrt_op,square root,\sa ArrayBase::sqrt DOXCOMMA MatrixBase::cwiseSqrt)
+  EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(rsqrt,scalar_rsqrt_op,reciprocal square root,\sa ArrayBase::rsqrt)
+  EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(square,scalar_square_op,square (power 2),\sa Eigen::abs2 DOXCOMMA Eigen::pow DOXCOMMA ArrayBase::square)
+  EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(cube,scalar_cube_op,cube (power 3),\sa Eigen::pow DOXCOMMA ArrayBase::cube)
+  EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(round,scalar_round_op,nearest integer,\sa Eigen::floor DOXCOMMA Eigen::ceil DOXCOMMA ArrayBase::round)
+  EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(floor,scalar_floor_op,nearest integer not greater than the giben value,\sa Eigen::ceil DOXCOMMA ArrayBase::floor)
+  EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(ceil,scalar_ceil_op,nearest integer not less than the giben value,\sa Eigen::floor DOXCOMMA ArrayBase::ceil)
+  EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(isnan,scalar_isnan_op,not-a-number test,\sa Eigen::isinf DOXCOMMA Eigen::isfinite DOXCOMMA ArrayBase::isnan)
+  EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(isinf,scalar_isinf_op,infinite value test,\sa Eigen::isnan DOXCOMMA Eigen::isfinite DOXCOMMA ArrayBase::isinf)
+  EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(isfinite,scalar_isfinite_op,finite value test,\sa Eigen::isinf DOXCOMMA Eigen::isnan DOXCOMMA ArrayBase::isfinite)
+  EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(sign,scalar_sign_op,sign (or 0),\sa ArrayBase::sign)
+  
+  /** \returns an expression of the coefficient-wise power of \a x to the given constant \a exponent.
+    *
+    * \tparam ScalarExponent is the scalar type of \a exponent. It must be compatible with the scalar type of the given expression (\c Derived::Scalar).
+    *
+    * \sa ArrayBase::pow()
+    *
+    * \relates ArrayBase
+    */
+#ifdef EIGEN_PARSED_BY_DOXYGEN
+  template<typename Derived,typename ScalarExponent>
+  inline const CwiseBinaryOp<internal::scalar_pow_op<Derived::Scalar,ScalarExponent>,Derived,Constant<ScalarExponent> >
+  pow(const Eigen::ArrayBase<Derived>& x, const ScalarExponent& exponent);
+#else
+  template<typename Derived,typename ScalarExponent>
+  inline typename internal::enable_if<   !(internal::is_same<typename Derived::Scalar,ScalarExponent>::value) && EIGEN_SCALAR_BINARY_SUPPORTED(pow,typename Derived::Scalar,ScalarExponent),
+          const EIGEN_EXPR_BINARYOP_SCALAR_RETURN_TYPE(Derived,ScalarExponent,pow) >::type
+  pow(const Eigen::ArrayBase<Derived>& x, const ScalarExponent& exponent) {
+    return x.derived().pow(exponent);
+  }
+
+  template<typename Derived>
+  inline const EIGEN_EXPR_BINARYOP_SCALAR_RETURN_TYPE(Derived,typename Derived::Scalar,pow)
+  pow(const Eigen::ArrayBase<Derived>& x, const typename Derived::Scalar& exponent) {
+    return x.derived().pow(exponent);
+  }
+#endif
+
+  /** \returns an expression of the coefficient-wise power of \a x to the given array of \a exponents.
+    *
+    * This function computes the coefficient-wise power.
+    *
+    * Example: \include Cwise_array_power_array.cpp
+    * Output: \verbinclude Cwise_array_power_array.out
+    * 
+    * \sa ArrayBase::pow()
+    *
+    * \relates ArrayBase
+    */
+  template<typename Derived,typename ExponentDerived>
+  inline const Eigen::CwiseBinaryOp<Eigen::internal::scalar_pow_op<typename Derived::Scalar, typename ExponentDerived::Scalar>, const Derived, const ExponentDerived>
+  pow(const Eigen::ArrayBase<Derived>& x, const Eigen::ArrayBase<ExponentDerived>& exponents) 
+  {
+    return Eigen::CwiseBinaryOp<Eigen::internal::scalar_pow_op<typename Derived::Scalar, typename ExponentDerived::Scalar>, const Derived, const ExponentDerived>(
+      x.derived(),
+      exponents.derived()
+    );
+  }
+  
+  /** \returns an expression of the coefficient-wise power of the scalar \a x to the given array of \a exponents.
+    *
+    * This function computes the coefficient-wise power between a scalar and an array of exponents.
+    *
+    * \tparam Scalar is the scalar type of \a x. It must be compatible with the scalar type of the given array expression (\c Derived::Scalar).
+    *
+    * Example: \include Cwise_scalar_power_array.cpp
+    * Output: \verbinclude Cwise_scalar_power_array.out
+    * 
+    * \sa ArrayBase::pow()
+    *
+    * \relates ArrayBase
+    */
+#ifdef EIGEN_PARSED_BY_DOXYGEN
+  template<typename Scalar,typename Derived>
+  inline const CwiseBinaryOp<internal::scalar_pow_op<Scalar,Derived::Scalar>,Constant<Scalar>,Derived>
+  pow(const Scalar& x,const Eigen::ArrayBase<Derived>& x);
+#else
+  template<typename Scalar, typename Derived>
+  inline typename internal::enable_if<   !(internal::is_same<typename Derived::Scalar,Scalar>::value) && EIGEN_SCALAR_BINARY_SUPPORTED(pow,Scalar,typename Derived::Scalar),
+          const EIGEN_SCALAR_BINARYOP_EXPR_RETURN_TYPE(Scalar,Derived,pow) >::type
+  pow(const Scalar& x, const Eigen::ArrayBase<Derived>& exponents)
+  {
+    return EIGEN_SCALAR_BINARYOP_EXPR_RETURN_TYPE(Scalar,Derived,pow)(
+            typename internal::plain_constant_type<Derived,Scalar>::type(exponents.rows(), exponents.cols(), x), exponents.derived() );
+  }
+
+  template<typename Derived>
+  inline const EIGEN_SCALAR_BINARYOP_EXPR_RETURN_TYPE(typename Derived::Scalar,Derived,pow)
+  pow(const typename Derived::Scalar& x, const Eigen::ArrayBase<Derived>& exponents)
+  {
+    return EIGEN_SCALAR_BINARYOP_EXPR_RETURN_TYPE(typename Derived::Scalar,Derived,pow)(
+      typename internal::plain_constant_type<Derived,typename Derived::Scalar>::type(exponents.rows(), exponents.cols(), x), exponents.derived() );
+  }
+#endif
+
+
+  namespace internal
+  {
+    EIGEN_ARRAY_DECLARE_GLOBAL_EIGEN_UNARY(real,scalar_real_op)
+    EIGEN_ARRAY_DECLARE_GLOBAL_EIGEN_UNARY(imag,scalar_imag_op)
+    EIGEN_ARRAY_DECLARE_GLOBAL_EIGEN_UNARY(abs2,scalar_abs2_op)
+  }
+}
+
+// TODO: cleanly disable those functions that are not supported on Array (numext::real_ref, internal::random, internal::isApprox...)
+
+#endif // EIGEN_GLOBAL_FUNCTIONS_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/PermutationMatrix.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/PermutationMatrix.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/PermutationMatrix.h	(revision 3762)
@@ -0,0 +1,605 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2009 Benoit Jacob <jacob.benoit.1@gmail.com>
+// Copyright (C) 2009-2015 Gael Guennebaud <gael.guennebaud@inria.fr>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_PERMUTATIONMATRIX_H
+#define EIGEN_PERMUTATIONMATRIX_H
+
+namespace Eigen { 
+
+namespace internal {
+
+enum PermPermProduct_t {PermPermProduct};
+
+} // end namespace internal
+
+/** \class PermutationBase
+  * \ingroup Core_Module
+  *
+  * \brief Base class for permutations
+  *
+  * \tparam Derived the derived class
+  *
+  * This class is the base class for all expressions representing a permutation matrix,
+  * internally stored as a vector of integers.
+  * The convention followed here is that if \f$ \sigma \f$ is a permutation, the corresponding permutation matrix
+  * \f$ P_\sigma \f$ is such that if \f$ (e_1,\ldots,e_p) \f$ is the canonical basis, we have:
+  *  \f[ P_\sigma(e_i) = e_{\sigma(i)}. \f]
+  * This convention ensures that for any two permutations \f$ \sigma, \tau \f$, we have:
+  *  \f[ P_{\sigma\circ\tau} = P_\sigma P_\tau. \f]
+  *
+  * Permutation matrices are square and invertible.
+  *
+  * Notice that in addition to the member functions and operators listed here, there also are non-member
+  * operator* to multiply any kind of permutation object with any kind of matrix expression (MatrixBase)
+  * on either side.
+  *
+  * \sa class PermutationMatrix, class PermutationWrapper
+  */
+template<typename Derived>
+class PermutationBase : public EigenBase<Derived>
+{
+    typedef internal::traits<Derived> Traits;
+    typedef EigenBase<Derived> Base;
+  public:
+
+    #ifndef EIGEN_PARSED_BY_DOXYGEN
+    typedef typename Traits::IndicesType IndicesType;
+    enum {
+      Flags = Traits::Flags,
+      RowsAtCompileTime = Traits::RowsAtCompileTime,
+      ColsAtCompileTime = Traits::ColsAtCompileTime,
+      MaxRowsAtCompileTime = Traits::MaxRowsAtCompileTime,
+      MaxColsAtCompileTime = Traits::MaxColsAtCompileTime
+    };
+    typedef typename Traits::StorageIndex StorageIndex;
+    typedef Matrix<StorageIndex,RowsAtCompileTime,ColsAtCompileTime,0,MaxRowsAtCompileTime,MaxColsAtCompileTime>
+            DenseMatrixType;
+    typedef PermutationMatrix<IndicesType::SizeAtCompileTime,IndicesType::MaxSizeAtCompileTime,StorageIndex>
+            PlainPermutationType;
+    typedef PlainPermutationType PlainObject;
+    using Base::derived;
+    typedef Inverse<Derived> InverseReturnType;
+    typedef void Scalar;
+    #endif
+
+    /** Copies the other permutation into *this */
+    template<typename OtherDerived>
+    Derived& operator=(const PermutationBase<OtherDerived>& other)
+    {
+      indices() = other.indices();
+      return derived();
+    }
+
+    /** Assignment from the Transpositions \a tr */
+    template<typename OtherDerived>
+    Derived& operator=(const TranspositionsBase<OtherDerived>& tr)
+    {
+      setIdentity(tr.size());
+      for(Index k=size()-1; k>=0; --k)
+        applyTranspositionOnTheRight(k,tr.coeff(k));
+      return derived();
+    }
+
+    /** \returns the number of rows */
+    inline Index rows() const { return Index(indices().size()); }
+
+    /** \returns the number of columns */
+    inline Index cols() const { return Index(indices().size()); }
+
+    /** \returns the size of a side of the respective square matrix, i.e., the number of indices */
+    inline Index size() const { return Index(indices().size()); }
+
+    #ifndef EIGEN_PARSED_BY_DOXYGEN
+    template<typename DenseDerived>
+    void evalTo(MatrixBase<DenseDerived>& other) const
+    {
+      other.setZero();
+      for (Index i=0; i<rows(); ++i)
+        other.coeffRef(indices().coeff(i),i) = typename DenseDerived::Scalar(1);
+    }
+    #endif
+
+    /** \returns a Matrix object initialized from this permutation matrix. Notice that it
+      * is inefficient to return this Matrix object by value. For efficiency, favor using
+      * the Matrix constructor taking EigenBase objects.
+      */
+    DenseMatrixType toDenseMatrix() const
+    {
+      return derived();
+    }
+
+    /** const version of indices(). */
+    const IndicesType& indices() const { return derived().indices(); }
+    /** \returns a reference to the stored array representing the permutation. */
+    IndicesType& indices() { return derived().indices(); }
+
+    /** Resizes to given size.
+      */
+    inline void resize(Index newSize)
+    {
+      indices().resize(newSize);
+    }
+
+    /** Sets *this to be the identity permutation matrix */
+    void setIdentity()
+    {
+      StorageIndex n = StorageIndex(size());
+      for(StorageIndex i = 0; i < n; ++i)
+        indices().coeffRef(i) = i;
+    }
+
+    /** Sets *this to be the identity permutation matrix of given size.
+      */
+    void setIdentity(Index newSize)
+    {
+      resize(newSize);
+      setIdentity();
+    }
+
+    /** Multiplies *this by the transposition \f$(ij)\f$ on the left.
+      *
+      * \returns a reference to *this.
+      *
+      * \warning This is much slower than applyTranspositionOnTheRight(Index,Index):
+      * this has linear complexity and requires a lot of branching.
+      *
+      * \sa applyTranspositionOnTheRight(Index,Index)
+      */
+    Derived& applyTranspositionOnTheLeft(Index i, Index j)
+    {
+      eigen_assert(i>=0 && j>=0 && i<size() && j<size());
+      for(Index k = 0; k < size(); ++k)
+      {
+        if(indices().coeff(k) == i) indices().coeffRef(k) = StorageIndex(j);
+        else if(indices().coeff(k) == j) indices().coeffRef(k) = StorageIndex(i);
+      }
+      return derived();
+    }
+
+    /** Multiplies *this by the transposition \f$(ij)\f$ on the right.
+      *
+      * \returns a reference to *this.
+      *
+      * This is a fast operation, it only consists in swapping two indices.
+      *
+      * \sa applyTranspositionOnTheLeft(Index,Index)
+      */
+    Derived& applyTranspositionOnTheRight(Index i, Index j)
+    {
+      eigen_assert(i>=0 && j>=0 && i<size() && j<size());
+      std::swap(indices().coeffRef(i), indices().coeffRef(j));
+      return derived();
+    }
+
+    /** \returns the inverse permutation matrix.
+      *
+      * \note \blank \note_try_to_help_rvo
+      */
+    inline InverseReturnType inverse() const
+    { return InverseReturnType(derived()); }
+    /** \returns the tranpose permutation matrix.
+      *
+      * \note \blank \note_try_to_help_rvo
+      */
+    inline InverseReturnType transpose() const
+    { return InverseReturnType(derived()); }
+
+    /**** multiplication helpers to hopefully get RVO ****/
+
+  
+#ifndef EIGEN_PARSED_BY_DOXYGEN
+  protected:
+    template<typename OtherDerived>
+    void assignTranspose(const PermutationBase<OtherDerived>& other)
+    {
+      for (Index i=0; i<rows();++i) indices().coeffRef(other.indices().coeff(i)) = i;
+    }
+    template<typename Lhs,typename Rhs>
+    void assignProduct(const Lhs& lhs, const Rhs& rhs)
+    {
+      eigen_assert(lhs.cols() == rhs.rows());
+      for (Index i=0; i<rows();++i) indices().coeffRef(i) = lhs.indices().coeff(rhs.indices().coeff(i));
+    }
+#endif
+
+  public:
+
+    /** \returns the product permutation matrix.
+      *
+      * \note \blank \note_try_to_help_rvo
+      */
+    template<typename Other>
+    inline PlainPermutationType operator*(const PermutationBase<Other>& other) const
+    { return PlainPermutationType(internal::PermPermProduct, derived(), other.derived()); }
+
+    /** \returns the product of a permutation with another inverse permutation.
+      *
+      * \note \blank \note_try_to_help_rvo
+      */
+    template<typename Other>
+    inline PlainPermutationType operator*(const InverseImpl<Other,PermutationStorage>& other) const
+    { return PlainPermutationType(internal::PermPermProduct, *this, other.eval()); }
+
+    /** \returns the product of an inverse permutation with another permutation.
+      *
+      * \note \blank \note_try_to_help_rvo
+      */
+    template<typename Other> friend
+    inline PlainPermutationType operator*(const InverseImpl<Other, PermutationStorage>& other, const PermutationBase& perm)
+    { return PlainPermutationType(internal::PermPermProduct, other.eval(), perm); }
+    
+    /** \returns the determinant of the permutation matrix, which is either 1 or -1 depending on the parity of the permutation.
+      *
+      * This function is O(\c n) procedure allocating a buffer of \c n booleans.
+      */
+    Index determinant() const
+    {
+      Index res = 1;
+      Index n = size();
+      Matrix<bool,RowsAtCompileTime,1,0,MaxRowsAtCompileTime> mask(n);
+      mask.fill(false);
+      Index r = 0;
+      while(r < n)
+      {
+        // search for the next seed
+        while(r<n && mask[r]) r++;
+        if(r>=n)
+          break;
+        // we got one, let's follow it until we are back to the seed
+        Index k0 = r++;
+        mask.coeffRef(k0) = true;
+        for(Index k=indices().coeff(k0); k!=k0; k=indices().coeff(k))
+        {
+          mask.coeffRef(k) = true;
+          res = -res;
+        }
+      }
+      return res;
+    }
+
+  protected:
+
+};
+
+namespace internal {
+template<int SizeAtCompileTime, int MaxSizeAtCompileTime, typename _StorageIndex>
+struct traits<PermutationMatrix<SizeAtCompileTime, MaxSizeAtCompileTime, _StorageIndex> >
+ : traits<Matrix<_StorageIndex,SizeAtCompileTime,SizeAtCompileTime,0,MaxSizeAtCompileTime,MaxSizeAtCompileTime> >
+{
+  typedef PermutationStorage StorageKind;
+  typedef Matrix<_StorageIndex, SizeAtCompileTime, 1, 0, MaxSizeAtCompileTime, 1> IndicesType;
+  typedef _StorageIndex StorageIndex;
+  typedef void Scalar;
+};
+}
+
+/** \class PermutationMatrix
+  * \ingroup Core_Module
+  *
+  * \brief Permutation matrix
+  *
+  * \tparam SizeAtCompileTime the number of rows/cols, or Dynamic
+  * \tparam MaxSizeAtCompileTime the maximum number of rows/cols, or Dynamic. This optional parameter defaults to SizeAtCompileTime. Most of the time, you should not have to specify it.
+  * \tparam _StorageIndex the integer type of the indices
+  *
+  * This class represents a permutation matrix, internally stored as a vector of integers.
+  *
+  * \sa class PermutationBase, class PermutationWrapper, class DiagonalMatrix
+  */
+template<int SizeAtCompileTime, int MaxSizeAtCompileTime, typename _StorageIndex>
+class PermutationMatrix : public PermutationBase<PermutationMatrix<SizeAtCompileTime, MaxSizeAtCompileTime, _StorageIndex> >
+{
+    typedef PermutationBase<PermutationMatrix> Base;
+    typedef internal::traits<PermutationMatrix> Traits;
+  public:
+
+    typedef const PermutationMatrix& Nested;
+
+    #ifndef EIGEN_PARSED_BY_DOXYGEN
+    typedef typename Traits::IndicesType IndicesType;
+    typedef typename Traits::StorageIndex StorageIndex;
+    #endif
+
+    inline PermutationMatrix()
+    {}
+
+    /** Constructs an uninitialized permutation matrix of given size.
+      */
+    explicit inline PermutationMatrix(Index size) : m_indices(size)
+    {
+      eigen_internal_assert(size <= NumTraits<StorageIndex>::highest());
+    }
+
+    /** Copy constructor. */
+    template<typename OtherDerived>
+    inline PermutationMatrix(const PermutationBase<OtherDerived>& other)
+      : m_indices(other.indices()) {}
+
+    /** Generic constructor from expression of the indices. The indices
+      * array has the meaning that the permutations sends each integer i to indices[i].
+      *
+      * \warning It is your responsibility to check that the indices array that you passes actually
+      * describes a permutation, i.e., each value between 0 and n-1 occurs exactly once, where n is the
+      * array's size.
+      */
+    template<typename Other>
+    explicit inline PermutationMatrix(const MatrixBase<Other>& indices) : m_indices(indices)
+    {}
+
+    /** Convert the Transpositions \a tr to a permutation matrix */
+    template<typename Other>
+    explicit PermutationMatrix(const TranspositionsBase<Other>& tr)
+      : m_indices(tr.size())
+    {
+      *this = tr;
+    }
+
+    /** Copies the other permutation into *this */
+    template<typename Other>
+    PermutationMatrix& operator=(const PermutationBase<Other>& other)
+    {
+      m_indices = other.indices();
+      return *this;
+    }
+
+    /** Assignment from the Transpositions \a tr */
+    template<typename Other>
+    PermutationMatrix& operator=(const TranspositionsBase<Other>& tr)
+    {
+      return Base::operator=(tr.derived());
+    }
+
+    /** const version of indices(). */
+    const IndicesType& indices() const { return m_indices; }
+    /** \returns a reference to the stored array representing the permutation. */
+    IndicesType& indices() { return m_indices; }
+
+
+    /**** multiplication helpers to hopefully get RVO ****/
+
+#ifndef EIGEN_PARSED_BY_DOXYGEN
+    template<typename Other>
+    PermutationMatrix(const InverseImpl<Other,PermutationStorage>& other)
+      : m_indices(other.derived().nestedExpression().size())
+    {
+      eigen_internal_assert(m_indices.size() <= NumTraits<StorageIndex>::highest());
+      StorageIndex end = StorageIndex(m_indices.size());
+      for (StorageIndex i=0; i<end;++i)
+        m_indices.coeffRef(other.derived().nestedExpression().indices().coeff(i)) = i;
+    }
+    template<typename Lhs,typename Rhs>
+    PermutationMatrix(internal::PermPermProduct_t, const Lhs& lhs, const Rhs& rhs)
+      : m_indices(lhs.indices().size())
+    {
+      Base::assignProduct(lhs,rhs);
+    }
+#endif
+
+  protected:
+
+    IndicesType m_indices;
+};
+
+
+namespace internal {
+template<int SizeAtCompileTime, int MaxSizeAtCompileTime, typename _StorageIndex, int _PacketAccess>
+struct traits<Map<PermutationMatrix<SizeAtCompileTime, MaxSizeAtCompileTime, _StorageIndex>,_PacketAccess> >
+ : traits<Matrix<_StorageIndex,SizeAtCompileTime,SizeAtCompileTime,0,MaxSizeAtCompileTime,MaxSizeAtCompileTime> >
+{
+  typedef PermutationStorage StorageKind;
+  typedef Map<const Matrix<_StorageIndex, SizeAtCompileTime, 1, 0, MaxSizeAtCompileTime, 1>, _PacketAccess> IndicesType;
+  typedef _StorageIndex StorageIndex;
+  typedef void Scalar;
+};
+}
+
+template<int SizeAtCompileTime, int MaxSizeAtCompileTime, typename _StorageIndex, int _PacketAccess>
+class Map<PermutationMatrix<SizeAtCompileTime, MaxSizeAtCompileTime, _StorageIndex>,_PacketAccess>
+  : public PermutationBase<Map<PermutationMatrix<SizeAtCompileTime, MaxSizeAtCompileTime, _StorageIndex>,_PacketAccess> >
+{
+    typedef PermutationBase<Map> Base;
+    typedef internal::traits<Map> Traits;
+  public:
+
+    #ifndef EIGEN_PARSED_BY_DOXYGEN
+    typedef typename Traits::IndicesType IndicesType;
+    typedef typename IndicesType::Scalar StorageIndex;
+    #endif
+
+    inline Map(const StorageIndex* indicesPtr)
+      : m_indices(indicesPtr)
+    {}
+
+    inline Map(const StorageIndex* indicesPtr, Index size)
+      : m_indices(indicesPtr,size)
+    {}
+
+    /** Copies the other permutation into *this */
+    template<typename Other>
+    Map& operator=(const PermutationBase<Other>& other)
+    { return Base::operator=(other.derived()); }
+
+    /** Assignment from the Transpositions \a tr */
+    template<typename Other>
+    Map& operator=(const TranspositionsBase<Other>& tr)
+    { return Base::operator=(tr.derived()); }
+
+    #ifndef EIGEN_PARSED_BY_DOXYGEN
+    /** This is a special case of the templated operator=. Its purpose is to
+      * prevent a default operator= from hiding the templated operator=.
+      */
+    Map& operator=(const Map& other)
+    {
+      m_indices = other.m_indices;
+      return *this;
+    }
+    #endif
+
+    /** const version of indices(). */
+    const IndicesType& indices() const { return m_indices; }
+    /** \returns a reference to the stored array representing the permutation. */
+    IndicesType& indices() { return m_indices; }
+
+  protected:
+
+    IndicesType m_indices;
+};
+
+template<typename _IndicesType> class TranspositionsWrapper;
+namespace internal {
+template<typename _IndicesType>
+struct traits<PermutationWrapper<_IndicesType> >
+{
+  typedef PermutationStorage StorageKind;
+  typedef void Scalar;
+  typedef typename _IndicesType::Scalar StorageIndex;
+  typedef _IndicesType IndicesType;
+  enum {
+    RowsAtCompileTime = _IndicesType::SizeAtCompileTime,
+    ColsAtCompileTime = _IndicesType::SizeAtCompileTime,
+    MaxRowsAtCompileTime = IndicesType::MaxSizeAtCompileTime,
+    MaxColsAtCompileTime = IndicesType::MaxSizeAtCompileTime,
+    Flags = 0
+  };
+};
+}
+
+/** \class PermutationWrapper
+  * \ingroup Core_Module
+  *
+  * \brief Class to view a vector of integers as a permutation matrix
+  *
+  * \tparam _IndicesType the type of the vector of integer (can be any compatible expression)
+  *
+  * This class allows to view any vector expression of integers as a permutation matrix.
+  *
+  * \sa class PermutationBase, class PermutationMatrix
+  */
+template<typename _IndicesType>
+class PermutationWrapper : public PermutationBase<PermutationWrapper<_IndicesType> >
+{
+    typedef PermutationBase<PermutationWrapper> Base;
+    typedef internal::traits<PermutationWrapper> Traits;
+  public:
+
+    #ifndef EIGEN_PARSED_BY_DOXYGEN
+    typedef typename Traits::IndicesType IndicesType;
+    #endif
+
+    inline PermutationWrapper(const IndicesType& indices)
+      : m_indices(indices)
+    {}
+
+    /** const version of indices(). */
+    const typename internal::remove_all<typename IndicesType::Nested>::type&
+    indices() const { return m_indices; }
+
+  protected:
+
+    typename IndicesType::Nested m_indices;
+};
+
+
+/** \returns the matrix with the permutation applied to the columns.
+  */
+template<typename MatrixDerived, typename PermutationDerived>
+EIGEN_DEVICE_FUNC
+const Product<MatrixDerived, PermutationDerived, AliasFreeProduct>
+operator*(const MatrixBase<MatrixDerived> &matrix,
+          const PermutationBase<PermutationDerived>& permutation)
+{
+  return Product<MatrixDerived, PermutationDerived, AliasFreeProduct>
+            (matrix.derived(), permutation.derived());
+}
+
+/** \returns the matrix with the permutation applied to the rows.
+  */
+template<typename PermutationDerived, typename MatrixDerived>
+EIGEN_DEVICE_FUNC
+const Product<PermutationDerived, MatrixDerived, AliasFreeProduct>
+operator*(const PermutationBase<PermutationDerived> &permutation,
+          const MatrixBase<MatrixDerived>& matrix)
+{
+  return Product<PermutationDerived, MatrixDerived, AliasFreeProduct>
+            (permutation.derived(), matrix.derived());
+}
+
+
+template<typename PermutationType>
+class InverseImpl<PermutationType, PermutationStorage>
+  : public EigenBase<Inverse<PermutationType> >
+{
+    typedef typename PermutationType::PlainPermutationType PlainPermutationType;
+    typedef internal::traits<PermutationType> PermTraits;
+  protected:
+    InverseImpl() {}
+  public:
+    typedef Inverse<PermutationType> InverseType;
+    using EigenBase<Inverse<PermutationType> >::derived;
+
+    #ifndef EIGEN_PARSED_BY_DOXYGEN
+    typedef typename PermutationType::DenseMatrixType DenseMatrixType;
+    enum {
+      RowsAtCompileTime = PermTraits::RowsAtCompileTime,
+      ColsAtCompileTime = PermTraits::ColsAtCompileTime,
+      MaxRowsAtCompileTime = PermTraits::MaxRowsAtCompileTime,
+      MaxColsAtCompileTime = PermTraits::MaxColsAtCompileTime
+    };
+    #endif
+
+    #ifndef EIGEN_PARSED_BY_DOXYGEN
+    template<typename DenseDerived>
+    void evalTo(MatrixBase<DenseDerived>& other) const
+    {
+      other.setZero();
+      for (Index i=0; i<derived().rows();++i)
+        other.coeffRef(i, derived().nestedExpression().indices().coeff(i)) = typename DenseDerived::Scalar(1);
+    }
+    #endif
+
+    /** \return the equivalent permutation matrix */
+    PlainPermutationType eval() const { return derived(); }
+
+    DenseMatrixType toDenseMatrix() const { return derived(); }
+
+    /** \returns the matrix with the inverse permutation applied to the columns.
+      */
+    template<typename OtherDerived> friend
+    const Product<OtherDerived, InverseType, AliasFreeProduct>
+    operator*(const MatrixBase<OtherDerived>& matrix, const InverseType& trPerm)
+    {
+      return Product<OtherDerived, InverseType, AliasFreeProduct>(matrix.derived(), trPerm.derived());
+    }
+
+    /** \returns the matrix with the inverse permutation applied to the rows.
+      */
+    template<typename OtherDerived>
+    const Product<InverseType, OtherDerived, AliasFreeProduct>
+    operator*(const MatrixBase<OtherDerived>& matrix) const
+    {
+      return Product<InverseType, OtherDerived, AliasFreeProduct>(derived(), matrix.derived());
+    }
+};
+
+template<typename Derived>
+const PermutationWrapper<const Derived> MatrixBase<Derived>::asPermutation() const
+{
+  return derived();
+}
+
+namespace internal {
+
+template<> struct AssignmentKind<DenseShape,PermutationShape> { typedef EigenBase2EigenBase Kind; };
+
+} // end namespace internal
+
+} // end namespace Eigen
+
+#endif // EIGEN_PERMUTATIONMATRIX_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/DiagonalMatrix.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/DiagonalMatrix.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/DiagonalMatrix.h	(revision 3762)
@@ -0,0 +1,343 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2009 Gael Guennebaud <gael.guennebaud@inria.fr>
+// Copyright (C) 2007-2009 Benoit Jacob <jacob.benoit.1@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_DIAGONALMATRIX_H
+#define EIGEN_DIAGONALMATRIX_H
+
+namespace Eigen { 
+
+#ifndef EIGEN_PARSED_BY_DOXYGEN
+template<typename Derived>
+class DiagonalBase : public EigenBase<Derived>
+{
+  public:
+    typedef typename internal::traits<Derived>::DiagonalVectorType DiagonalVectorType;
+    typedef typename DiagonalVectorType::Scalar Scalar;
+    typedef typename DiagonalVectorType::RealScalar RealScalar;
+    typedef typename internal::traits<Derived>::StorageKind StorageKind;
+    typedef typename internal::traits<Derived>::StorageIndex StorageIndex;
+
+    enum {
+      RowsAtCompileTime = DiagonalVectorType::SizeAtCompileTime,
+      ColsAtCompileTime = DiagonalVectorType::SizeAtCompileTime,
+      MaxRowsAtCompileTime = DiagonalVectorType::MaxSizeAtCompileTime,
+      MaxColsAtCompileTime = DiagonalVectorType::MaxSizeAtCompileTime,
+      IsVectorAtCompileTime = 0,
+      Flags = NoPreferredStorageOrderBit
+    };
+
+    typedef Matrix<Scalar, RowsAtCompileTime, ColsAtCompileTime, 0, MaxRowsAtCompileTime, MaxColsAtCompileTime> DenseMatrixType;
+    typedef DenseMatrixType DenseType;
+    typedef DiagonalMatrix<Scalar,DiagonalVectorType::SizeAtCompileTime,DiagonalVectorType::MaxSizeAtCompileTime> PlainObject;
+
+    EIGEN_DEVICE_FUNC
+    inline const Derived& derived() const { return *static_cast<const Derived*>(this); }
+    EIGEN_DEVICE_FUNC
+    inline Derived& derived() { return *static_cast<Derived*>(this); }
+
+    EIGEN_DEVICE_FUNC
+    DenseMatrixType toDenseMatrix() const { return derived(); }
+    
+    EIGEN_DEVICE_FUNC
+    inline const DiagonalVectorType& diagonal() const { return derived().diagonal(); }
+    EIGEN_DEVICE_FUNC
+    inline DiagonalVectorType& diagonal() { return derived().diagonal(); }
+
+    EIGEN_DEVICE_FUNC
+    inline Index rows() const { return diagonal().size(); }
+    EIGEN_DEVICE_FUNC
+    inline Index cols() const { return diagonal().size(); }
+
+    template<typename MatrixDerived>
+    EIGEN_DEVICE_FUNC
+    const Product<Derived,MatrixDerived,LazyProduct>
+    operator*(const MatrixBase<MatrixDerived> &matrix) const
+    {
+      return Product<Derived, MatrixDerived, LazyProduct>(derived(),matrix.derived());
+    }
+
+    typedef DiagonalWrapper<const CwiseUnaryOp<internal::scalar_inverse_op<Scalar>, const DiagonalVectorType> > InverseReturnType;
+    EIGEN_DEVICE_FUNC
+    inline const InverseReturnType
+    inverse() const
+    {
+      return InverseReturnType(diagonal().cwiseInverse());
+    }
+    
+    EIGEN_DEVICE_FUNC
+    inline const DiagonalWrapper<const EIGEN_EXPR_BINARYOP_SCALAR_RETURN_TYPE(DiagonalVectorType,Scalar,product) >
+    operator*(const Scalar& scalar) const
+    {
+      return DiagonalWrapper<const EIGEN_EXPR_BINARYOP_SCALAR_RETURN_TYPE(DiagonalVectorType,Scalar,product) >(diagonal() * scalar);
+    }
+    EIGEN_DEVICE_FUNC
+    friend inline const DiagonalWrapper<const EIGEN_SCALAR_BINARYOP_EXPR_RETURN_TYPE(Scalar,DiagonalVectorType,product) >
+    operator*(const Scalar& scalar, const DiagonalBase& other)
+    {
+      return DiagonalWrapper<const EIGEN_SCALAR_BINARYOP_EXPR_RETURN_TYPE(Scalar,DiagonalVectorType,product) >(scalar * other.diagonal());
+    }
+};
+
+#endif
+
+/** \class DiagonalMatrix
+  * \ingroup Core_Module
+  *
+  * \brief Represents a diagonal matrix with its storage
+  *
+  * \param _Scalar the type of coefficients
+  * \param SizeAtCompileTime the dimension of the matrix, or Dynamic
+  * \param MaxSizeAtCompileTime the dimension of the matrix, or Dynamic. This parameter is optional and defaults
+  *        to SizeAtCompileTime. Most of the time, you do not need to specify it.
+  *
+  * \sa class DiagonalWrapper
+  */
+
+namespace internal {
+template<typename _Scalar, int SizeAtCompileTime, int MaxSizeAtCompileTime>
+struct traits<DiagonalMatrix<_Scalar,SizeAtCompileTime,MaxSizeAtCompileTime> >
+ : traits<Matrix<_Scalar,SizeAtCompileTime,SizeAtCompileTime,0,MaxSizeAtCompileTime,MaxSizeAtCompileTime> >
+{
+  typedef Matrix<_Scalar,SizeAtCompileTime,1,0,MaxSizeAtCompileTime,1> DiagonalVectorType;
+  typedef DiagonalShape StorageKind;
+  enum {
+    Flags = LvalueBit | NoPreferredStorageOrderBit
+  };
+};
+}
+template<typename _Scalar, int SizeAtCompileTime, int MaxSizeAtCompileTime>
+class DiagonalMatrix
+  : public DiagonalBase<DiagonalMatrix<_Scalar,SizeAtCompileTime,MaxSizeAtCompileTime> >
+{
+  public:
+    #ifndef EIGEN_PARSED_BY_DOXYGEN
+    typedef typename internal::traits<DiagonalMatrix>::DiagonalVectorType DiagonalVectorType;
+    typedef const DiagonalMatrix& Nested;
+    typedef _Scalar Scalar;
+    typedef typename internal::traits<DiagonalMatrix>::StorageKind StorageKind;
+    typedef typename internal::traits<DiagonalMatrix>::StorageIndex StorageIndex;
+    #endif
+
+  protected:
+
+    DiagonalVectorType m_diagonal;
+
+  public:
+
+    /** const version of diagonal(). */
+    EIGEN_DEVICE_FUNC
+    inline const DiagonalVectorType& diagonal() const { return m_diagonal; }
+    /** \returns a reference to the stored vector of diagonal coefficients. */
+    EIGEN_DEVICE_FUNC
+    inline DiagonalVectorType& diagonal() { return m_diagonal; }
+
+    /** Default constructor without initialization */
+    EIGEN_DEVICE_FUNC
+    inline DiagonalMatrix() {}
+
+    /** Constructs a diagonal matrix with given dimension  */
+    EIGEN_DEVICE_FUNC
+    explicit inline DiagonalMatrix(Index dim) : m_diagonal(dim) {}
+
+    /** 2D constructor. */
+    EIGEN_DEVICE_FUNC
+    inline DiagonalMatrix(const Scalar& x, const Scalar& y) : m_diagonal(x,y) {}
+
+    /** 3D constructor. */
+    EIGEN_DEVICE_FUNC
+    inline DiagonalMatrix(const Scalar& x, const Scalar& y, const Scalar& z) : m_diagonal(x,y,z) {}
+
+    /** Copy constructor. */
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    inline DiagonalMatrix(const DiagonalBase<OtherDerived>& other) : m_diagonal(other.diagonal()) {}
+
+    #ifndef EIGEN_PARSED_BY_DOXYGEN
+    /** copy constructor. prevent a default copy constructor from hiding the other templated constructor */
+    inline DiagonalMatrix(const DiagonalMatrix& other) : m_diagonal(other.diagonal()) {}
+    #endif
+
+    /** generic constructor from expression of the diagonal coefficients */
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    explicit inline DiagonalMatrix(const MatrixBase<OtherDerived>& other) : m_diagonal(other)
+    {}
+
+    /** Copy operator. */
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    DiagonalMatrix& operator=(const DiagonalBase<OtherDerived>& other)
+    {
+      m_diagonal = other.diagonal();
+      return *this;
+    }
+
+    #ifndef EIGEN_PARSED_BY_DOXYGEN
+    /** This is a special case of the templated operator=. Its purpose is to
+      * prevent a default operator= from hiding the templated operator=.
+      */
+    EIGEN_DEVICE_FUNC
+    DiagonalMatrix& operator=(const DiagonalMatrix& other)
+    {
+      m_diagonal = other.diagonal();
+      return *this;
+    }
+    #endif
+
+    /** Resizes to given size. */
+    EIGEN_DEVICE_FUNC
+    inline void resize(Index size) { m_diagonal.resize(size); }
+    /** Sets all coefficients to zero. */
+    EIGEN_DEVICE_FUNC
+    inline void setZero() { m_diagonal.setZero(); }
+    /** Resizes and sets all coefficients to zero. */
+    EIGEN_DEVICE_FUNC
+    inline void setZero(Index size) { m_diagonal.setZero(size); }
+    /** Sets this matrix to be the identity matrix of the current size. */
+    EIGEN_DEVICE_FUNC
+    inline void setIdentity() { m_diagonal.setOnes(); }
+    /** Sets this matrix to be the identity matrix of the given size. */
+    EIGEN_DEVICE_FUNC
+    inline void setIdentity(Index size) { m_diagonal.setOnes(size); }
+};
+
+/** \class DiagonalWrapper
+  * \ingroup Core_Module
+  *
+  * \brief Expression of a diagonal matrix
+  *
+  * \param _DiagonalVectorType the type of the vector of diagonal coefficients
+  *
+  * This class is an expression of a diagonal matrix, but not storing its own vector of diagonal coefficients,
+  * instead wrapping an existing vector expression. It is the return type of MatrixBase::asDiagonal()
+  * and most of the time this is the only way that it is used.
+  *
+  * \sa class DiagonalMatrix, class DiagonalBase, MatrixBase::asDiagonal()
+  */
+
+namespace internal {
+template<typename _DiagonalVectorType>
+struct traits<DiagonalWrapper<_DiagonalVectorType> >
+{
+  typedef _DiagonalVectorType DiagonalVectorType;
+  typedef typename DiagonalVectorType::Scalar Scalar;
+  typedef typename DiagonalVectorType::StorageIndex StorageIndex;
+  typedef DiagonalShape StorageKind;
+  typedef typename traits<DiagonalVectorType>::XprKind XprKind;
+  enum {
+    RowsAtCompileTime = DiagonalVectorType::SizeAtCompileTime,
+    ColsAtCompileTime = DiagonalVectorType::SizeAtCompileTime,
+    MaxRowsAtCompileTime = DiagonalVectorType::MaxSizeAtCompileTime,
+    MaxColsAtCompileTime = DiagonalVectorType::MaxSizeAtCompileTime,
+    Flags =  (traits<DiagonalVectorType>::Flags & LvalueBit) | NoPreferredStorageOrderBit
+  };
+};
+}
+
+template<typename _DiagonalVectorType>
+class DiagonalWrapper
+  : public DiagonalBase<DiagonalWrapper<_DiagonalVectorType> >, internal::no_assignment_operator
+{
+  public:
+    #ifndef EIGEN_PARSED_BY_DOXYGEN
+    typedef _DiagonalVectorType DiagonalVectorType;
+    typedef DiagonalWrapper Nested;
+    #endif
+
+    /** Constructor from expression of diagonal coefficients to wrap. */
+    EIGEN_DEVICE_FUNC
+    explicit inline DiagonalWrapper(DiagonalVectorType& a_diagonal) : m_diagonal(a_diagonal) {}
+
+    /** \returns a const reference to the wrapped expression of diagonal coefficients. */
+    EIGEN_DEVICE_FUNC
+    const DiagonalVectorType& diagonal() const { return m_diagonal; }
+
+  protected:
+    typename DiagonalVectorType::Nested m_diagonal;
+};
+
+/** \returns a pseudo-expression of a diagonal matrix with *this as vector of diagonal coefficients
+  *
+  * \only_for_vectors
+  *
+  * Example: \include MatrixBase_asDiagonal.cpp
+  * Output: \verbinclude MatrixBase_asDiagonal.out
+  *
+  * \sa class DiagonalWrapper, class DiagonalMatrix, diagonal(), isDiagonal()
+  **/
+template<typename Derived>
+inline const DiagonalWrapper<const Derived>
+MatrixBase<Derived>::asDiagonal() const
+{
+  return DiagonalWrapper<const Derived>(derived());
+}
+
+/** \returns true if *this is approximately equal to a diagonal matrix,
+  *          within the precision given by \a prec.
+  *
+  * Example: \include MatrixBase_isDiagonal.cpp
+  * Output: \verbinclude MatrixBase_isDiagonal.out
+  *
+  * \sa asDiagonal()
+  */
+template<typename Derived>
+bool MatrixBase<Derived>::isDiagonal(const RealScalar& prec) const
+{
+  if(cols() != rows()) return false;
+  RealScalar maxAbsOnDiagonal = static_cast<RealScalar>(-1);
+  for(Index j = 0; j < cols(); ++j)
+  {
+    RealScalar absOnDiagonal = numext::abs(coeff(j,j));
+    if(absOnDiagonal > maxAbsOnDiagonal) maxAbsOnDiagonal = absOnDiagonal;
+  }
+  for(Index j = 0; j < cols(); ++j)
+    for(Index i = 0; i < j; ++i)
+    {
+      if(!internal::isMuchSmallerThan(coeff(i, j), maxAbsOnDiagonal, prec)) return false;
+      if(!internal::isMuchSmallerThan(coeff(j, i), maxAbsOnDiagonal, prec)) return false;
+    }
+  return true;
+}
+
+namespace internal {
+
+template<> struct storage_kind_to_shape<DiagonalShape> { typedef DiagonalShape Shape; };
+
+struct Diagonal2Dense {};
+
+template<> struct AssignmentKind<DenseShape,DiagonalShape> { typedef Diagonal2Dense Kind; };
+
+// Diagonal matrix to Dense assignment
+template< typename DstXprType, typename SrcXprType, typename Functor>
+struct Assignment<DstXprType, SrcXprType, Functor, Diagonal2Dense>
+{
+  static void run(DstXprType &dst, const SrcXprType &src, const internal::assign_op<typename DstXprType::Scalar,typename SrcXprType::Scalar> &/*func*/)
+  {
+    Index dstRows = src.rows();
+    Index dstCols = src.cols();
+    if((dst.rows()!=dstRows) || (dst.cols()!=dstCols))
+      dst.resize(dstRows, dstCols);
+    
+    dst.setZero();
+    dst.diagonal() = src.diagonal();
+  }
+  
+  static void run(DstXprType &dst, const SrcXprType &src, const internal::add_assign_op<typename DstXprType::Scalar,typename SrcXprType::Scalar> &/*func*/)
+  { dst.diagonal() += src.diagonal(); }
+  
+  static void run(DstXprType &dst, const SrcXprType &src, const internal::sub_assign_op<typename DstXprType::Scalar,typename SrcXprType::Scalar> &/*func*/)
+  { dst.diagonal() -= src.diagonal(); }
+};
+
+} // namespace internal
+
+} // end namespace Eigen
+
+#endif // EIGEN_DIAGONALMATRIX_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/StableNorm.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/StableNorm.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/StableNorm.h	(revision 3762)
@@ -0,0 +1,221 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2009 Gael Guennebaud <gael.guennebaud@inria.fr>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_STABLENORM_H
+#define EIGEN_STABLENORM_H
+
+namespace Eigen { 
+
+namespace internal {
+
+template<typename ExpressionType, typename Scalar>
+inline void stable_norm_kernel(const ExpressionType& bl, Scalar& ssq, Scalar& scale, Scalar& invScale)
+{
+  Scalar maxCoeff = bl.cwiseAbs().maxCoeff();
+  
+  if(maxCoeff>scale)
+  {
+    ssq = ssq * numext::abs2(scale/maxCoeff);
+    Scalar tmp = Scalar(1)/maxCoeff;
+    if(tmp > NumTraits<Scalar>::highest())
+    {
+      invScale = NumTraits<Scalar>::highest();
+      scale = Scalar(1)/invScale;
+    }
+    else if(maxCoeff>NumTraits<Scalar>::highest()) // we got a INF
+    {
+      invScale = Scalar(1);
+      scale = maxCoeff;
+    }
+    else
+    {
+      scale = maxCoeff;
+      invScale = tmp;
+    }
+  }
+  else if(maxCoeff!=maxCoeff) // we got a NaN
+  {
+    scale = maxCoeff;
+  }
+  
+  // TODO if the maxCoeff is much much smaller than the current scale,
+  // then we can neglect this sub vector
+  if(scale>Scalar(0)) // if scale==0, then bl is 0 
+    ssq += (bl*invScale).squaredNorm();
+}
+
+template<typename Derived>
+inline typename NumTraits<typename traits<Derived>::Scalar>::Real
+blueNorm_impl(const EigenBase<Derived>& _vec)
+{
+  typedef typename Derived::RealScalar RealScalar;  
+  using std::pow;
+  using std::sqrt;
+  using std::abs;
+  const Derived& vec(_vec.derived());
+  static bool initialized = false;
+  static RealScalar b1, b2, s1m, s2m, rbig, relerr;
+  if(!initialized)
+  {
+    int ibeta, it, iemin, iemax, iexp;
+    RealScalar eps;
+    // This program calculates the machine-dependent constants
+    // bl, b2, slm, s2m, relerr overfl
+    // from the "basic" machine-dependent numbers
+    // nbig, ibeta, it, iemin, iemax, rbig.
+    // The following define the basic machine-dependent constants.
+    // For portability, the PORT subprograms "ilmaeh" and "rlmach"
+    // are used. For any specific computer, each of the assignment
+    // statements can be replaced
+    ibeta = std::numeric_limits<RealScalar>::radix;                 // base for floating-point numbers
+    it    = std::numeric_limits<RealScalar>::digits;                // number of base-beta digits in mantissa
+    iemin = std::numeric_limits<RealScalar>::min_exponent;          // minimum exponent
+    iemax = std::numeric_limits<RealScalar>::max_exponent;          // maximum exponent
+    rbig  = (std::numeric_limits<RealScalar>::max)();               // largest floating-point number
+
+    iexp  = -((1-iemin)/2);
+    b1    = RealScalar(pow(RealScalar(ibeta),RealScalar(iexp)));    // lower boundary of midrange
+    iexp  = (iemax + 1 - it)/2;
+    b2    = RealScalar(pow(RealScalar(ibeta),RealScalar(iexp)));    // upper boundary of midrange
+
+    iexp  = (2-iemin)/2;
+    s1m   = RealScalar(pow(RealScalar(ibeta),RealScalar(iexp)));    // scaling factor for lower range
+    iexp  = - ((iemax+it)/2);
+    s2m   = RealScalar(pow(RealScalar(ibeta),RealScalar(iexp)));    // scaling factor for upper range
+
+    eps     = RealScalar(pow(double(ibeta), 1-it));
+    relerr  = sqrt(eps);                                            // tolerance for neglecting asml
+    initialized = true;
+  }
+  Index n = vec.size();
+  RealScalar ab2 = b2 / RealScalar(n);
+  RealScalar asml = RealScalar(0);
+  RealScalar amed = RealScalar(0);
+  RealScalar abig = RealScalar(0);
+  for(typename Derived::InnerIterator it(vec, 0); it; ++it)
+  {
+    RealScalar ax = abs(it.value());
+    if(ax > ab2)     abig += numext::abs2(ax*s2m);
+    else if(ax < b1) asml += numext::abs2(ax*s1m);
+    else             amed += numext::abs2(ax);
+  }
+  if(amed!=amed)
+    return amed;  // we got a NaN
+  if(abig > RealScalar(0))
+  {
+    abig = sqrt(abig);
+    if(abig > rbig) // overflow, or *this contains INF values
+      return abig;  // return INF
+    if(amed > RealScalar(0))
+    {
+      abig = abig/s2m;
+      amed = sqrt(amed);
+    }
+    else
+      return abig/s2m;
+  }
+  else if(asml > RealScalar(0))
+  {
+    if (amed > RealScalar(0))
+    {
+      abig = sqrt(amed);
+      amed = sqrt(asml) / s1m;
+    }
+    else
+      return sqrt(asml)/s1m;
+  }
+  else
+    return sqrt(amed);
+  asml = numext::mini(abig, amed);
+  abig = numext::maxi(abig, amed);
+  if(asml <= abig*relerr)
+    return abig;
+  else
+    return abig * sqrt(RealScalar(1) + numext::abs2(asml/abig));
+}
+
+} // end namespace internal
+
+/** \returns the \em l2 norm of \c *this avoiding underflow and overflow.
+  * This version use a blockwise two passes algorithm:
+  *  1 - find the absolute largest coefficient \c s
+  *  2 - compute \f$ s \Vert \frac{*this}{s} \Vert \f$ in a standard way
+  *
+  * For architecture/scalar types supporting vectorization, this version
+  * is faster than blueNorm(). Otherwise the blueNorm() is much faster.
+  *
+  * \sa norm(), blueNorm(), hypotNorm()
+  */
+template<typename Derived>
+inline typename NumTraits<typename internal::traits<Derived>::Scalar>::Real
+MatrixBase<Derived>::stableNorm() const
+{
+  using std::sqrt;
+  using std::abs;
+  const Index blockSize = 4096;
+  RealScalar scale(0);
+  RealScalar invScale(1);
+  RealScalar ssq(0); // sum of square
+  
+  typedef typename internal::nested_eval<Derived,2>::type DerivedCopy;
+  typedef typename internal::remove_all<DerivedCopy>::type DerivedCopyClean;
+  const DerivedCopy copy(derived());
+  
+  enum {
+    CanAlign = (   (int(DerivedCopyClean::Flags)&DirectAccessBit)
+                || (int(internal::evaluator<DerivedCopyClean>::Alignment)>0) // FIXME Alignment)>0 might not be enough
+               ) && (blockSize*sizeof(Scalar)*2<EIGEN_STACK_ALLOCATION_LIMIT)
+                 && (EIGEN_MAX_STATIC_ALIGN_BYTES>0) // if we cannot allocate on the stack, then let's not bother about this optimization
+  };
+  typedef typename internal::conditional<CanAlign, Ref<const Matrix<Scalar,Dynamic,1,0,blockSize,1>, internal::evaluator<DerivedCopyClean>::Alignment>,
+                                                   typename DerivedCopyClean::ConstSegmentReturnType>::type SegmentWrapper;
+  Index n = size();
+  
+  if(n==1)
+    return abs(this->coeff(0));
+  
+  Index bi = internal::first_default_aligned(copy);
+  if (bi>0)
+    internal::stable_norm_kernel(copy.head(bi), ssq, scale, invScale);
+  for (; bi<n; bi+=blockSize)
+    internal::stable_norm_kernel(SegmentWrapper(copy.segment(bi,numext::mini(blockSize, n - bi))), ssq, scale, invScale);
+  return scale * sqrt(ssq);
+}
+
+/** \returns the \em l2 norm of \c *this using the Blue's algorithm.
+  * A Portable Fortran Program to Find the Euclidean Norm of a Vector,
+  * ACM TOMS, Vol 4, Issue 1, 1978.
+  *
+  * For architecture/scalar types without vectorization, this version
+  * is much faster than stableNorm(). Otherwise the stableNorm() is faster.
+  *
+  * \sa norm(), stableNorm(), hypotNorm()
+  */
+template<typename Derived>
+inline typename NumTraits<typename internal::traits<Derived>::Scalar>::Real
+MatrixBase<Derived>::blueNorm() const
+{
+  return internal::blueNorm_impl(*this);
+}
+
+/** \returns the \em l2 norm of \c *this avoiding undeflow and overflow.
+  * This version use a concatenation of hypot() calls, and it is very slow.
+  *
+  * \sa norm(), stableNorm()
+  */
+template<typename Derived>
+inline typename NumTraits<typename internal::traits<Derived>::Scalar>::Real
+MatrixBase<Derived>::hypotNorm() const
+{
+  return this->cwiseAbs().redux(internal::scalar_hypot_op<RealScalar>());
+}
+
+} // end namespace Eigen
+
+#endif // EIGEN_STABLENORM_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/IO.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/IO.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/RcppEigen/include/Eigen/src/Core/IO.h	(revision 3762)
@@ -0,0 +1,225 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2006-2008 Benoit Jacob <jacob.benoit.1@gmail.com>
+// Copyright (C) 2008 Gael Guennebaud <gael.guennebaud@inria.fr>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_IO_H
+#define EIGEN_IO_H
+
+namespace Eigen { 
+
+enum { DontAlignCols = 1 };
+enum { StreamPrecision = -1,
+       FullPrecision = -2 };
+
+namespace internal {
+template<typename Derived>
+std::ostream & print_matrix(std::ostream & s, const Derived& _m, const IOFormat& fmt);
+}
+
+/** \class IOFormat
+  * \ingroup Core_Module
+  *
+  * \brief Stores a set of parameters controlling the way matrices are printed
+  *
+  * List of available parameters:
+  *  - \b precision number of digits for floating point values, or one of the special constants \c StreamPrecision and \c FullPrecision.
+  *                 The default is the special value \c StreamPrecision which means to use the
+  *                 stream's own precision setting, as set for instance using \c cout.precision(3). The other special value
+  *                 \c FullPrecision means that the number of digits will be computed to match the full precision of each floating-point
+  *                 type.
+  *  - \b flags an OR-ed combination of flags, the default value is 0, the only currently available flag is \c DontAlignCols which
+  *             allows to disable the alignment of columns, resulting in faster code.
+  *  - \b coeffSeparator string printed between two coefficients of the same row
+  *  - \b rowSeparator string printed between two rows
+  *  - \b rowPrefix string printed at the beginning of each row
+  *  - \b rowSuffix string printed at the end of each row
+  *  - \b matPrefix string printed at the beginning of the matrix
+  *  - \b matSuffix string printed at the end of the matrix
+  *
+  * Example: \include IOFormat.cpp
+  * Output: \verbinclude IOFormat.out
+  *
+  * \sa DenseBase::format(), class WithFormat
+  */
+struct IOFormat
+{
+  /** Default constructor, see class IOFormat for the meaning of the parameters */
+  IOFormat(int _precision = StreamPrecision, int _flags = 0,
+    const std::string& _coeffSeparator = " ",
+    const std::string& _rowSeparator = "\n", const std::string& _rowPrefix="", const std::string& _rowSuffix="",
+    const std::string& _matPrefix="", const std::string& _matSuffix="")
+  : matPrefix(_matPrefix), matSuffix(_matSuffix), rowPrefix(_rowPrefix), rowSuffix(_rowSuffix), rowSeparator(_rowSeparator),
+    rowSpacer(""), coeffSeparator(_coeffSeparator), precision(_precision), flags(_flags)
+  {
+    // TODO check if rowPrefix, rowSuffix or rowSeparator contains a newline
+    // don't add rowSpacer if columns are not to be aligned
+    if((flags & DontAlignCols))
+      return;
+    int i = int(matSuffix.length())-1;
+    while (i>=0 && matSuffix[i]!='\n')
+    {
+      rowSpacer += ' ';
+      i--;
+    }
+  }
+  std::string matPrefix, matSuffix;
+  std::string rowPrefix, rowSuffix, rowSeparator, rowSpacer;
+  std::string coeffSeparator;
+  int precision;
+  int flags;
+};
+
+/** \class WithFormat
+  * \ingroup Core_Module
+  *
+  * \brief Pseudo expression providing matrix output with given format
+  *
+  * \tparam ExpressionType the type of the object on which IO stream operations are performed
+  *
+  * This class represents an expression with stream operators controlled by a given IOFormat.
+  * It is the return type of DenseBase::format()
+  * and most of the time this is the only way it is used.
+  *
+  * See class IOFormat for some examples.
+  *
+  * \sa DenseBase::format(), class IOFormat
+  */
+template<typename ExpressionType>
+class WithFormat
+{
+  public:
+
+    WithFormat(const ExpressionType& matrix, const IOFormat& format)
+      : m_matrix(matrix), m_format(format)
+    {}
+
+    friend std::ostream & operator << (std::ostream & s, const WithFormat& wf)
+    {
+      return internal::print_matrix(s, wf.m_matrix.eval(), wf.m_format);
+    }
+
+  protected:
+    typename ExpressionType::Nested m_matrix;
+    IOFormat m_format;
+};
+
+namespace internal {
+
+// NOTE: This helper is kept for backward compatibility with previous code specializing
+//       this internal::significant_decimals_impl structure. In the future we should directly
+//       call digits10() which has been introduced in July 2016 in 3.3.
+template<typename Scalar>
+struct significant_decimals_impl
+{
+  static inline int run()
+  {
+    return NumTraits<Scalar>::digits10();
+  }
+};
+
+/** \internal
+  * print the matrix \a _m to the output stream \a s using the output format \a fmt */
+template<typename Derived>
+std::ostream & print_matrix(std::ostream & s, const Derived& _m, const IOFormat& fmt)
+{
+  if(_m.size() == 0)
+  {
+    s << fmt.matPrefix << fmt.matSuffix;
+    return s;
+  }
+  
+  typename Derived::Nested m = _m;
+  typedef typename Derived::Scalar Scalar;
+
+  Index width = 0;
+
+  std::streamsize explicit_precision;
+  if(fmt.precision == StreamPrecision)
+  {
+    explicit_precision = 0;
+  }
+  else if(fmt.precision == FullPrecision)
+  {
+    if (NumTraits<Scalar>::IsInteger)
+    {
+      explicit_precision = 0;
+    }
+    else
+    {
+      explicit_precision = significant_decimals_impl<Scalar>::run();
+    }
+  }
+  else
+  {
+    explicit_precision = fmt.precision;
+  }
+
+  std::streamsize old_precision = 0;
+  if(explicit_precision) old_precision = s.precision(explicit_precision);
+
+  bool align_cols = !(fmt.flags & DontAlignCols);
+  if(align_cols)
+  {
+    // compute the largest width
+    for(Index j = 0; j < m.cols(); ++j)
+      for(Index i = 0; i < m.rows(); ++i)
+      {
+        std::stringstream sstr;
+        sstr.copyfmt(s);
+        sstr << m.coeff(i,j);
+        width = std::max<Index>(width, Index(sstr.str().length()));
+      }
+  }
+  s << fmt.matPrefix;
+  for(Index i = 0; i < m.rows(); ++i)
+  {
+    if (i)
+      s << fmt.rowSpacer;
+    s << fmt.rowPrefix;
+    if(width) s.width(width);
+    s << m.coeff(i, 0);
+    for(Index j = 1; j < m.cols(); ++j)
+    {
+      s << fmt.coeffSeparator;
+      if (width) s.width(width);
+      s << m.coeff(i, j);
+    }
+    s << fmt.rowSuffix;
+    if( i < m.rows() - 1)
+      s << fmt.rowSeparator;
+  }
+  s << fmt.matSuffix;
+  if(explicit_precision) s.precision(old_precision);
+  return s;
+}
+
+} // end namespace internal
+
+/** \relates DenseBase
+  *
+  * Outputs the matrix, to the given stream.
+  *
+  * If you wish to print the matrix with a format different than the default, use DenseBase::format().
+  *
+  * It is also possible to change the default format by defining EIGEN_DEFAULT_IO_FORMAT before including Eigen headers.
+  * If not defined, this will automatically be defined to Eigen::IOFormat(), that is the Eigen::IOFormat with default parameters.
+  *
+  * \sa DenseBase::format()
+  */
+template<typename Derived>
+std::ostream & operator <<
+(std::ostream & s,
+ const DenseBase<Derived> & m)
+{
+  return internal::print_matrix(s, m.eval(), EIGEN_DEFAULT_IO_FORMAT);
+}
+
+} // end namespace Eigen
+
+#endif // EIGEN_IO_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/Meta/package.rds
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/Meta/package.rds
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/Meta/nsInfo.rds
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/Meta/nsInfo.rds
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/Meta/hsearch.rds
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/Meta/hsearch.rds
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/Meta/features.rds
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/Meta/features.rds
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/Meta/links.rds
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/Meta/links.rds
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/Meta/Rd.rds
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/Meta/Rd.rds
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/Meta/data.rds
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/Meta/data.rds
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/help/mgcv.rdb
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/help/mgcv.rdb
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/help/AnIndex
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/help/AnIndex	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/help/AnIndex	(revision 3762)
@@ -0,0 +1,252 @@
+mgcv-package	mgcv-package
+%.%	tensor.prod.model.matrix
+adaptive.smooth	smooth.construct.ad.smooth.spec
+AIC.gam	logLik.gam
+anova.gam	anova.gam
+b.spline	smooth.construct.bs.smooth.spec
+bam	bam
+bam.update	bam.update
+bandchol	bandchol
+betar	Beta
+blas.thread.test	blas.thread.test
+bug.reports.mgcv	bug.reports.mgcv
+choldrop	chol.down
+cholup	chol.down
+choose.k	choose.k
+cnorm	cnorm
+coef.pdIdnot	pdIdnot
+coef.pdTens	pdTens
+columb	columb
+columb.polys	columb
+concurvity	concurvity
+corMatrix.pdIdnot	pdIdnot
+cox.ph	coxph
+cox.pht	coxpht
+cSplineDes	cSplineDes
+cubic.regression.spline	smooth.construct.cr.smooth.spec
+cyclic.cubic.spline	smooth.construct.cr.smooth.spec
+cyclic.p.spline	smooth.construct.ps.smooth.spec
+d.mvt	rmvn
+d.spline	smooth.construct.bs.smooth.spec
+dDeta	dDeta
+diagXVXd	XWXd
+Dim.pdIdnot	pdIdnot
+dmvn	rmvn
+dpnorm	dpnorm
+Duchon.spline	smooth.construct.ds.smooth.spec
+exclude.too.far	exclude.too.far
+extract.lme.cov	extract.lme.cov
+extract.lme.cov2	extract.lme.cov
+factor.smooth	factor.smooth
+factor.smooth.interaction	factor.smooth
+family.mgcv	family.mgcv
+FFdes	FFdes
+fix.family.link	fix.family.link
+fix.family.ls	fix.family.link
+fix.family.qf	fix.family.link
+fix.family.rd	fix.family.link
+fix.family.var	fix.family.link
+fixDependence	fixDependence
+formula.gam	formula.gam
+formXtViX	formXtViX
+fs.boundary	fs.test
+fs.test	fs.test
+full.score	full.score
+function.predictors	linear.functional.terms
+gam	gam
+gam.check	gam.check
+gam.control	gam.control
+gam.convergence	gam.convergence
+gam.fit	gam.fit
+gam.fit3	gam.fit3
+gam.fit5.post.proc	gam.fit5.post.proc
+gam.mh	gam.mh
+gam.models	gam.models
+gam.outer	gam.outer
+gam.performance	gam.convergence
+gam.reparam	gam.reparam
+gam.scale	gam.scale
+gam.selection	gam.selection
+gam.side	gam.side
+gam.vcomp	gam.vcomp
+gam2derivative	gam2objective
+gam2objective	gam2objective
+gamlss.etamu	gamlss.etamu
+gamlss.gH	gamlss.gH
+gamm	gamm
+gammals	gammals
+gamObject	gamObject
+gamSim	gamSim
+gaulss	gaulss
+get.var	get.var
+gevlss	gevlss
+ginla	ginla
+gp.smooth	smooth.construct.gp.smooth.spec
+gumbls	gumbls
+identifiability	identifiability
+in.out	in.out
+influence.gam	influence.gam
+initial.sp	initial.sp
+inSide	inSide
+interpret.gam	interpret.gam
+jagam	jagam
+k.check	k.check
+ldetS	ldetS
+ldTweedie	ldTweedie
+linear.functional.terms	linear.functional.terms
+logDet.pdIdnot	pdIdnot
+logLik.gam	logLik.gam
+ls.size	ls.size
+magic	magic
+magic.post.proc	magic.post.proc
+mgcv	mgcv-package
+mgcv.FAQ	mgcv-FAQ
+mgcv.package	mgcv-package
+mgcv.parallel	mgcv-parallel
+mini.roots	mini.roots
+missing.data	missing.data
+model.matrix.gam	model.matrix.gam
+mono.con	mono.con
+mrf	smooth.construct.mrf.smooth.spec
+mroot	mroot
+multinom	multinom
+mvn	mvn
+nb	negbin
+negbin	negbin
+new.name	new.name
+notExp	notExp
+notExp2	notExp2
+notLog	notExp
+notLog2	notExp2
+null.space.dimension	null.space.dimension
+ocat	ocat
+one.se.rule	one.se.rule
+ordered.categorical	ocat
+p.spline	smooth.construct.ps.smooth.spec
+pcls	pcls
+pdConstruct.pdIdnot	pdIdnot
+pdConstruct.pdTens	pdTens
+pdFactor.pdIdnot	pdIdnot
+pdFactor.pdTens	pdTens
+pdIdnot	pdIdnot
+pdMatrix.pdIdnot	pdIdnot
+pdMatrix.pdTens	pdTens
+pdTens	pdTens
+pen.edf	pen.edf
+persp.gam	vis.gam
+place.knots	place.knots
+plot.gam	plot.gam
+polys.plot	polys.plot
+posterior.simulation	gam.mh
+predict.bam	predict.bam
+predict.gam	predict.gam
+Predict.matrix	Predict.matrix
+Predict.matrix.Bspline.smooth	smooth.construct.bs.smooth.spec
+Predict.matrix.cr.smooth	Predict.matrix.cr.smooth
+Predict.matrix.cs.smooth	Predict.matrix.cr.smooth
+Predict.matrix.cyclic.smooth	Predict.matrix.cr.smooth
+Predict.matrix.duchon.spline	smooth.construct.ds.smooth.spec
+Predict.matrix.fs.interaction	smooth.construct.fs.smooth.spec
+Predict.matrix.gp.smooth	smooth.construct.gp.smooth.spec
+Predict.matrix.mrf.smooth	smooth.construct.mrf.smooth.spec
+Predict.matrix.pspline.smooth	Predict.matrix.cr.smooth
+Predict.matrix.random.effect	smooth.construct.re.smooth.spec
+Predict.matrix.sf	Predict.matrix.soap.film
+Predict.matrix.soap.film	Predict.matrix.soap.film
+Predict.matrix.sos.smooth	smooth.construct.sos.smooth.spec
+Predict.matrix.sw	Predict.matrix.soap.film
+Predict.matrix.sz.interaction	smooth.construct.sz.smooth.spec
+Predict.matrix.t2.smooth	Predict.matrix.cr.smooth
+Predict.matrix.tensor.smooth	Predict.matrix.cr.smooth
+Predict.matrix.tprs.smooth	Predict.matrix.cr.smooth
+Predict.matrix.ts.smooth	Predict.matrix.cr.smooth
+Predict.matrix2	Predict.matrix
+PredictMat	smoothCon
+print.anova.gam	anova.gam
+print.gam	print.gam
+print.summary.gam	summary.gam
+psum.chisq	psum.chisq
+qq.gam	qq.gam
+r.mvt	rmvn
+random.effects	random.effects
+residuals.gam	residuals.gam
+rig	rig
+rmvn	rmvn
+Rrank	Rrank
+rTweedie	rTweedie
+s	s
+scat	scat
+sdiag	sdiag
+sdiag<-	sdiag
+shash	shash
+signal.regression	linear.functional.terms
+sim2jam	jagam
+single.index	single.index
+Sl.inirep	Sl.initial.repara
+Sl.initial.repara	Sl.initial.repara
+Sl.repara	Sl.repara
+Sl.setup	Sl.setup
+slanczos	slanczos
+smooth.construct	smooth.construct
+smooth.construct.ad.smooth.spec	smooth.construct.ad.smooth.spec
+smooth.construct.bs.smooth.spec	smooth.construct.bs.smooth.spec
+smooth.construct.cc.smooth.spec	smooth.construct.cr.smooth.spec
+smooth.construct.cp.smooth.spec	smooth.construct.ps.smooth.spec
+smooth.construct.cr.smooth.spec	smooth.construct.cr.smooth.spec
+smooth.construct.cs.smooth.spec	smooth.construct.cr.smooth.spec
+smooth.construct.ds.smooth.spec	smooth.construct.ds.smooth.spec
+smooth.construct.fs.smooth.spec	smooth.construct.fs.smooth.spec
+smooth.construct.gp.smooth.spec	smooth.construct.gp.smooth.spec
+smooth.construct.mrf.smooth.spec	smooth.construct.mrf.smooth.spec
+smooth.construct.ps.smooth.spec	smooth.construct.ps.smooth.spec
+smooth.construct.re.smooth.spec	smooth.construct.re.smooth.spec
+smooth.construct.sf.smooth.spec	smooth.construct.so.smooth.spec
+smooth.construct.so.smooth.spec	smooth.construct.so.smooth.spec
+smooth.construct.sos.smooth.spec	smooth.construct.sos.smooth.spec
+smooth.construct.sw.smooth.spec	smooth.construct.so.smooth.spec
+smooth.construct.sz.smooth.spec	smooth.construct.sz.smooth.spec
+smooth.construct.t2.smooth.spec	smooth.construct.t2.smooth.spec
+smooth.construct.tensor.smooth.spec	smooth.construct.tensor.smooth.spec
+smooth.construct.tp.smooth.spec	smooth.construct.tp.smooth.spec
+smooth.construct.ts.smooth.spec	smooth.construct.tp.smooth.spec
+smooth.construct2	smooth.construct
+smooth.info	smooth.info
+smooth.terms	smooth.terms
+smooth2random	smooth2random
+smoothCon	smoothCon
+smooths	smooth.terms
+soap	smooth.construct.so.smooth.spec
+solve.pdIdnot	pdIdnot
+sp.vcov	sp.vcov
+spasm.construct	spasm.construct
+spasm.smooth	spasm.construct
+spasm.sp	spasm.construct
+Spherical.Spline	smooth.construct.sos.smooth.spec
+step.gam	step.gam
+summary.gam	summary.gam
+summary.pdIdnot	pdIdnot
+summary.pdTens	pdTens
+t.scaled	scat
+t2	t2
+te	te
+tensor.prod.model.matrix	tensor.prod.model.matrix
+tensor.prod.penalties	tensor.prod.model.matrix
+ti	te
+Tobit	cnorm
+totalPenaltySpace	totalPenaltySpace
+tprs	smooth.construct.tp.smooth.spec
+trichol	trichol
+trind.generator	trind.generator
+tw	Tweedie
+Tweedie	Tweedie
+twlss	twlss
+uniquecombs	uniquecombs
+user.defined.smooth	smooth.construct
+vcov.gam	vcov.gam
+vis.gam	vis.gam
+Xbd	XWXd
+XWXd	XWXd
+XWyd	XWXd
+ziP	ziP
+zipll	ziplss
+ziplss	ziplss
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/help/paths.rds
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/help/paths.rds
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/help/aliases.rds
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/help/aliases.rds
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/help/mgcv.rdx
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/help/mgcv.rdx
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/data/columb.rda
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/data/columb.rda
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/data/columb.polys.rda
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/data/columb.polys.rda
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/libs/mgcv.so
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/libs/mgcv.so
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/po/fr/LC_MESSAGES/R-mgcv.mo
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/po/fr/LC_MESSAGES/R-mgcv.mo
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/po/fr/LC_MESSAGES/mgcv.mo
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/po/fr/LC_MESSAGES/mgcv.mo
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/po/de/LC_MESSAGES/R-mgcv.mo
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/po/de/LC_MESSAGES/R-mgcv.mo
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/po/de/LC_MESSAGES/mgcv.mo
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/po/de/LC_MESSAGES/mgcv.mo
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/po/ko/LC_MESSAGES/R-mgcv.mo
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/po/ko/LC_MESSAGES/R-mgcv.mo
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/po/ko/LC_MESSAGES/mgcv.mo
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/po/ko/LC_MESSAGES/mgcv.mo
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/po/en@quot/LC_MESSAGES/R-mgcv.mo
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/po/en@quot/LC_MESSAGES/R-mgcv.mo
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/po/en@quot/LC_MESSAGES/mgcv.mo
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/po/en@quot/LC_MESSAGES/mgcv.mo
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/po/pl/LC_MESSAGES/R-mgcv.mo
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/po/pl/LC_MESSAGES/R-mgcv.mo
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/po/pl/LC_MESSAGES/mgcv.mo
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/po/pl/LC_MESSAGES/mgcv.mo
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/R/mgcv
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/R/mgcv	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/R/mgcv	(revision 3762)
@@ -0,0 +1,27 @@
+#  File share/R/nspackloader.R
+#  Part of the R package, https://www.R-project.org
+#
+#  Copyright (C) 1995-2012 The R Core Team
+#
+#  This program is free software; you can redistribute it and/or modify
+#  it under the terms of the GNU General Public License as published by
+#  the Free Software Foundation; either version 2 of the License, or
+#  (at your option) any later version.
+#
+#  This program is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#  GNU General Public License for more details.
+#
+#  A copy of the GNU General Public License is available at
+#  https://www.r-project.org/Licenses/
+
+local({
+    info <- loadingNamespaceInfo()
+    pkg <- info$pkgname
+    ns <- .getNamespace(as.name(pkg))
+    if (is.null(ns))
+        stop("cannot find namespace environment for ", pkg, domain = NA);
+    dbbase <- file.path(info$libname, pkg, "R", pkg)
+    lazyLoad(dbbase, ns, filter = function(n) n != ".__NAMESPACE__.")
+})
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/R/mgcv.rdb
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/R/mgcv.rdb
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/R/mgcv.rdx
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/R/mgcv.rdx
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/tests/coxpht.R
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/tests/coxpht.R	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/tests/coxpht.R	(revision 3762)
@@ -0,0 +1,75 @@
+## coxpht donttest case
+
+require(mgcv);require(survival)
+
+## First define functions for producing Poisson model data frame
+
+app <- function(x,t,to) {
+## wrapper to approx for calling from apply...
+  y <- if (sum(!is.na(x))<1) rep(NA,length(to)) else
+       approx(t,x,to,method="constant",rule=2)$y
+  if (is.factor(x)) factor(levels(x)[y],levels=levels(x)) else y
+} ## app
+
+tdpois <- function(dat,event="z",et="futime",t="day",status="status1",
+                                                             id="id") {
+## dat is data frame. id is patient id; et is event time; t is
+## observation time; status is 1 for death 0 otherwise;
+## event is name for Poisson response.
+  if (event %in% names(dat)) warning("event name in use")
+  require(utils) ## for progress bar
+  te <- sort(unique(dat[[et]][dat[[status]]==1])) ## event times
+  sid <- unique(dat[[id]])
+  inter <- interactive()
+  if (inter) prg <-
+       txtProgressBar(min = 0, max = length(sid), initial = 0,
+       char = "=",width = NA, title="Progress", style = 3)
+  ## create dataframe for poisson model data
+  dat[[event]] <- 0; start <- 1
+  dap <- dat[rep(1:length(sid),length(te)),]
+  for (i in 1:length(sid)) { ## work through patients
+    di <- dat[dat[[id]]==sid[i],] ## ith patient's data
+    tr <- te[te <= di[[et]][1]] ## times required for this patient
+    ## Now do the interpolation of covariates to event times...
+    um <- data.frame(lapply(X=di,FUN=app,t=di[[t]],to=tr))
+    ## Mark the actual event...
+    if (um[[et]][1]==max(tr)&&um[[status]][1]==1) um[[event]][nrow(um)] <- 1 
+    um[[et]] <- tr ## reset time to relevant event times
+    dap[start:(start-1+nrow(um)),] <- um ## copy to dap
+    start <- start + nrow(um)
+    if (inter) setTxtProgressBar(prg, i)
+  }
+  if (inter) close(prg)
+  dap[1:(start-1),]
+} ## tdpois
+pbcseq$status1 <- as.numeric(pbcseq$status==2) ## death indicator
+pb <- tdpois(pbcseq) ## conversion
+pb$tf <- factor(pb$futime) ## add factor for event time
+
+## Fit Poisson model...
+b <- bam(z ~ tf - 1 + sex + trt + s(sqrt(protime)) + s(platelet)+ s(age)+
+s(bili)+s(albumin), family=poisson,data=pb,discrete=TRUE,nthreads=2)
+
+par(mfrow=c(2,3))
+plot(b,scale=0)
+
+## compute residuals...
+chaz <- tapply(fitted(b),pb$id,sum) ## cum haz by subject
+d <- tapply(pb$z,pb$id,sum) ## censoring indicator
+mrsd <- d - chaz ## Martingale
+drsd <- sign(mrsd)*sqrt(-2*(mrsd + d*log(chaz))) ## deviance
+
+## plot survivor function and s.e. band for subject 25
+te <- sort(unique(pb$futime)) ## event times
+di <- pbcseq[pbcseq$id==25,] ## data for subject 25
+pd <- data.frame(lapply(X=di,FUN=app,t=di$day,to=te)) ## interpolate to te
+pd$tf <- factor(te)
+X <- predict(b,newdata=pd,type="lpmatrix")
+eta <- drop(X%*%coef(b)); H <- cumsum(exp(eta))
+J <- apply(exp(eta)*X,2,cumsum)
+se <- diag(J%*%vcov(b)%*%t(J))^.5
+plot(stepfun(te,c(1,exp(-H))),do.points=FALSE,ylim=c(0.7,1),
+     ylab="S(t)",xlab="t (days)",main="",lwd=2)
+lines(stepfun(te,c(1,exp(-H+se))),do.points=FALSE)
+lines(stepfun(te,c(1,exp(-H-se))),do.points=FALSE)
+rug(pbcseq$day[pbcseq$id==25]) ## measurement times
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/tests/mgcv-parallel.R
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/tests/mgcv-parallel.R	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/tests/mgcv-parallel.R	(revision 3762)
@@ -0,0 +1,41 @@
+## examples that are claimed to be too long in help files
+## illustration of multi-threading with gam...
+
+require(mgcv);set.seed(9)
+dat <- gamSim(1,n=2000,dist="poisson",scale=.1)
+k <- 12;bs <- "cr";ctrl <- list(nthreads=2)
+
+system.time(b1<-gam(y~s(x0,bs=bs)+s(x1,bs=bs)+s(x2,bs=bs,k=k)
+            ,family=poisson,data=dat,method="REML"))[3]
+
+system.time(b2<-gam(y~s(x0,bs=bs)+s(x1,bs=bs)+s(x2,bs=bs,k=k),
+            family=poisson,data=dat,method="REML",control=ctrl))[3]
+
+## Poisson example on a cluster with 'bam'. 
+## Note that there is some overhead in initializing the 
+## computation on the cluster, associated with loading 
+## the Matrix package on each node. For this reason the 
+## sample sizes here are very small to keep CRAN happy, but at
+## this low sample size you see little advantage of parallel computation.
+
+k <- 13;set.seed(9)
+dat <- gamSim(1,n=6000,dist="poisson",scale=.1)
+require(parallel)  
+nc <- 2   ## cluster size, set for example portability
+if (detectCores()>1) { ## no point otherwise
+  cl <- makeCluster(nc) 
+  ## could also use makeForkCluster, but read warnings first!
+} else cl <- NULL
+  
+system.time(b3 <- bam(y ~ s(x0,bs=bs,k=7)+s(x1,bs=bs,k=7)+s(x2,bs=bs,k=k)
+            ,data=dat,family=poisson(),chunk.size=5000,cluster=cl))
+
+fv <- predict(b3,cluster=cl) ## parallel prediction
+
+if (!is.null(cl)) stopCluster(cl)
+b3
+
+## Alternative using the discrete option with bam...
+
+system.time(b4 <- bam(y ~ s(x0,bs=bs,k=7)+s(x1,bs=bs,k=7)+s(x2,bs=bs,k=k)
+            ,data=dat,family=poisson(),discrete=TRUE,nthreads=2))
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/tests/single.index.R
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/tests/single.index.R	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/tests/single.index.R	(revision 3762)
@@ -0,0 +1,63 @@
+## donttest single.index.Rd examples
+
+require(mgcv)
+
+si <- function(theta,y,x,z,opt=TRUE,k=10,fx=FALSE) {
+## Fit single index model using gam call, given theta (defines alpha). 
+## Return ML if opt==TRUE and fitted gam with theta added otherwise.
+## Suitable for calling from 'optim' to find optimal theta/alpha.
+  alpha <- c(1,theta) ## constrained alpha defined using free theta
+  kk <- sqrt(sum(alpha^2))
+  alpha <- alpha/kk  ## so now ||alpha||=1
+  a <- x%*%alpha     ## argument of smooth
+  b <- gam(y~s(a,fx=fx,k=k)+s(z),family=poisson,method="ML") ## fit model
+  if (opt) return(b$gcv.ubre) else {
+    b$alpha <- alpha  ## add alpha
+    J <- outer(alpha,-theta/kk^2) ## compute Jacobian
+    for (j in 1:length(theta)) J[j+1,j] <- J[j+1,j] + 1/kk
+    b$J <- J ## dalpha_i/dtheta_j 
+    return(b)
+  }
+} ## si
+
+## simulate some data from a single index model...
+
+set.seed(1)
+f2 <- function(x) 0.2 * x^11 * (10 * (1 - x))^6 + 10 * 
+            (10 * x)^3 * (1 - x)^10
+n <- 200;m <- 3
+x <- matrix(runif(n*m),n,m) ## the covariates for the single index part
+z <- runif(n) ## another covariate
+alpha <- c(1,-1,.5); alpha <- alpha/sqrt(sum(alpha^2))
+eta <- as.numeric(f2((x%*%alpha+.41)/1.4)+1+z^2*2)/4
+mu <- exp(eta)
+y <- rpois(n,mu) ## Poi response 
+
+## now fit to the simulated data...
+
+
+th0 <- c(-.8,.4) ## close to truth for speed
+## get initial theta, using no penalization...
+f0 <- nlm(si,th0,y=y,x=x,z=z,fx=TRUE,k=5)
+## now get theta/alpha with smoothing parameter selection...
+f1 <- nlm(si,f0$estimate,y=y,x=x,z=z,hessian=TRUE,k=10)
+theta.est <-f1$estimate 
+
+## Alternative using 'optim'... 
+
+th0 <- rep(0,m-1) 
+## get initial theta, using no penalization...
+f0 <- optim(th0,si,y=y,x=x,z=z,fx=TRUE,k=5)
+## now get theta/alpha with smoothing parameter selection...
+f1 <- optim(f0$par,si,y=y,x=x,z=z,hessian=TRUE,k=10)
+theta.est <-f1$par 
+
+## extract and examine fitted model...
+
+b <- si(theta.est,y,x,z,opt=FALSE) ## extract best fit model
+plot(b,pages=1)
+b
+b$alpha 
+## get sd for alpha...
+Vt <- b$J%*%solve(f1$hessian,t(b$J))
+diag(Vt)^.5
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/tests/smooth.construct.so.smooth.spec.R
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/tests/smooth.construct.so.smooth.spec.R	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/tests/smooth.construct.so.smooth.spec.R	(revision 3762)
@@ -0,0 +1,50 @@
+## donttest examples from smooth.construct.so.smooth.spec
+library(mgcv)
+set.seed(9)
+n <- 10000;nmax <- 100
+v <- runif(n)*5-1;w<-runif(n)*2-1
+t <- runif(n)
+y <- fs.test(v,w,b=1)
+y <- y + 4.2
+y <- y^(.5+t)
+fsb <- list(fs.boundary())
+names(fsb[[1]]) <- c("v","w")
+ind <- inSide(fsb,x=v,y=w) ## remove outsiders
+y <- y[ind];v <- v[ind]; w <- w[ind]; t <- t[ind] 
+n <- length(y)
+y <- y + rnorm(n)*.05 ## add noise
+knots <- data.frame(v=rep(seq(-.5,3,by=.5),4),
+                    w=rep(c(-.6,-.3,.3,.6),rep(8,4)))
+
+## notice NULL element in 'xt' list - to indicate no xt object for "cr" basis...
+bk <- gam(y~ te(v,w,t,bs=c("sf","cr"),k=c(25,4),d=c(2,1),
+          xt=list(list(bnd=fsb,nmax=nmax),NULL))+
+          te(v,w,t,bs=c("sw","cr"),k=c(25,4),d=c(2,1),
+	  xt=list(list(bnd=fsb,nmax=nmax),NULL)),knots=knots)
+
+par(mfrow=c(3,2))
+m<-100;n<-50 
+xm <- seq(-1,3.5,length=m);yn<-seq(-1,1,length=n)
+xx <- rep(xm,n);yy<-rep(yn,rep(m,n))
+tru <- matrix(fs.test(xx,yy),m,n)+4.2 ## truth
+
+image(xm,yn,tru^.5,col=heat.colors(100),xlab="v",ylab="w",
+      main="truth")
+lines(fsb[[1]]$v,fsb[[1]]$w,lwd=3)
+contour(xm,yn,tru^.5,add=TRUE)
+
+vis.gam(bk,view=c("v","w"),cond=list(t=0),plot.type="contour")
+
+image(xm,yn,tru,col=heat.colors(100),xlab="v",ylab="w",
+      main="truth")
+lines(fsb[[1]]$v,fsb[[1]]$w,lwd=3)
+contour(xm,yn,tru,add=TRUE)
+
+vis.gam(bk,view=c("v","w"),cond=list(t=.5),plot.type="contour")
+
+image(xm,yn,tru^1.5,col=heat.colors(100),xlab="v",ylab="w",
+      main="truth")
+lines(fsb[[1]]$v,fsb[[1]]$w,lwd=3)
+contour(xm,yn,tru^1.5,add=TRUE)
+
+vis.gam(bk,view=c("v","w"),cond=list(t=1),plot.type="contour")
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/tests/bam.R
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/tests/bam.R	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/tests/bam.R	(revision 3762)
@@ -0,0 +1,8 @@
+## bam donttest case
+library(mgcv)
+set.seed(3); k <- 12; bs <- "cr"
+dat <- gamSim(1,n=25000,dist="normal",scale=20)
+ba <- bam(y ~ s(x0,bs=bs,k=k)+s(x1,bs=bs,k=k)+s(x2,bs=bs,k=k)+
+            s(x3,bs=bs,k=k),data=dat,method="GCV.Cp") ## use GCV
+summary(ba)
+
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/tests/missing.data.R
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/tests/missing.data.R	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/tests/missing.data.R	(revision 3762)
@@ -0,0 +1,59 @@
+## donttest examples from missing.data.Rd
+require(mgcv)
+par(mfrow=c(4,4),mar=c(4,4,1,1))
+t0 <- proc.time()
+for (sim in c(1,7)) { ## cycle over uncorrelated and correlated covariates
+  n <- 350;set.seed(2)
+  ## simulate data but randomly drop 300 covariate measurements
+  ## leaving only 50 complete cases...
+  dat <- gamSim(sim,n=n,scale=3) ## 1 or 7
+  drop <- sample(1:n,300) ## to
+  for (i in 2:5) dat[drop[1:75+(i-2)*75],i] <- NA
+
+  ## process data.frame producing binary indicators of missingness,
+  ## mx0, mx1 etc. For each missing value create a level of a factor
+  ## idx0, idx1, etc. So idx0 has as many levels as x0 has missing 
+  ## values. Replace the NA's in each variable by the mean of the 
+  ## non missing for that variable...
+
+  dname <- names(dat)[2:5]
+  dat1 <- dat
+  for (i in 1:4) {
+    by.name <- paste("m",dname[i],sep="") 
+    dat1[[by.name]] <- is.na(dat1[[dname[i]]])
+    dat1[[dname[i]]][dat1[[by.name]]] <- mean(dat1[[dname[i]]],na.rm=TRUE)
+    lev <- rep(1,n);lev[dat1[[by.name]]] <- 1:sum(dat1[[by.name]])
+    id.name <- paste("id",dname[i],sep="")
+    dat1[[id.name]] <- factor(lev) 
+    dat1[[by.name]] <- as.numeric(dat1[[by.name]])
+  }
+
+  ## Fit a gam, in which any missing value contributes zero 
+  ## to the linear predictor from its smooth, but each 
+  ## missing has its own random effect, with the random effect 
+  ## variances being specific to the variable. e.g.
+  ## for s(x0,by=ordered(!mx0)), declaring the `by' as an ordered
+  ## factor ensures that the smooth is centred, but multiplied
+  ## by zero when mx0 is one (indicating a missing x0). This means
+  ## that any value (within range) can be put in place of the 
+  ## NA for x0.  s(idx0,bs="re",by=mx0) produces a separate Gaussian 
+  ## random effect for each missing value of x0 (in place of s(x0),
+  ## effectively). The `by' variable simply sets the random effect to 
+  ## zero when x0 is non-missing, so that we can set idx0 to any 
+  ## existing level for these cases.   
+
+  b <- bam(y~s(x0,by=ordered(!mx0))+s(x1,by=ordered(!mx1))+
+             s(x2,by=ordered(!mx2))+s(x3,by=ordered(!mx3))+
+             s(idx0,bs="re",by=mx0)+s(idx1,bs="re",by=mx1)+
+             s(idx2,bs="re",by=mx2)+s(idx3,bs="re",by=mx3)
+             ,data=dat1,discrete=TRUE)
+
+  for (i in 1:4) plot(b,select=i) ## plot the smooth effects from b
+
+  ## fit the model to the `complete case' data...
+  b2 <- gam(y~s(x0)+s(x1)+s(x2)+s(x3),data=dat,method="REML")
+  plot(b2) ## plot the complete case results
+}
+t1 <- proc.time()
+t1-t0
+
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/tests/gam.R
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/tests/gam.R	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/tests/gam.R	(revision 3762)
@@ -0,0 +1,115 @@
+## \donttest examples from gam
+
+require(mgcv)
+
+## now simulate poisson data...
+set.seed(6)
+dat <- gamSim(1,n=2000,dist="poisson",scale=.1)
+
+## use "cr" basis to save time, with 2000 data...
+b2<-gam(y~s(x0,bs="cr")+s(x1,bs="cr")+s(x2,bs="cr")+
+        s(x3,bs="cr"),family=poisson,data=dat,method="REML")
+plot(b2,pages=1)
+
+## drop x3, but initialize sp's from previous fit, to 
+## save more time...
+
+b2a<-gam(y~s(x0,bs="cr")+s(x1,bs="cr")+s(x2,bs="cr"),
+         family=poisson,data=dat,method="REML",
+         in.out=list(sp=b2$sp[1:3],scale=1))
+par(mfrow=c(2,2))
+plot(b2a)
+
+par(mfrow=c(1,1))
+## similar example using performance iteration
+dat <- gamSim(1,n=400,dist="poisson",scale=.25)
+
+b3<-gam(y~s(x0)+s(x1)+s(x2)+s(x3),family=poisson,
+        data=dat,optimizer="perf")
+plot(b3,pages=1)
+
+## repeat using GACV as in Wood 2008...
+
+b4<-gam(y~s(x0)+s(x1)+s(x2)+s(x3),family=poisson,
+        data=dat,method="GACV.Cp",scale=-1)
+plot(b4,pages=1)
+
+## repeat using REML as in Wood 2011...
+
+b5<-gam(y~s(x0)+s(x1)+s(x2)+s(x3),family=poisson,
+        data=dat,method="REML")
+plot(b5,pages=1)
+
+ 
+## a binary example (see ?gam.models for large dataset version)...
+
+dat <- gamSim(1,n=400,dist="binary",scale=.33)
+
+lr.fit <- gam(y~s(x0)+s(x1)+s(x2)+s(x3),family=binomial,
+              data=dat,method="REML")
+
+## plot model components with truth overlaid in red
+op <- par(mfrow=c(2,2))
+fn <- c("f0","f1","f2","f3");xn <- c("x0","x1","x2","x3")
+for (k in 1:4) {
+  plot(lr.fit,residuals=TRUE,select=k)
+  ff <- dat[[fn[k]]];xx <- dat[[xn[k]]]
+  ind <- sort.int(xx,index.return=TRUE)$ix
+  lines(xx[ind],(ff-mean(ff))[ind]*.33,col=2)
+}
+par(op)
+anova(lr.fit)
+lr.fit1 <- gam(y~s(x0)+s(x1)+s(x2),family=binomial,
+               data=dat,method="REML")
+lr.fit2 <- gam(y~s(x1)+s(x2),family=binomial,
+               data=dat,method="REML")
+AIC(lr.fit,lr.fit1,lr.fit2)
+
+## For a Gamma example, see ?summary.gam...
+
+## For inverse Gaussian, see ?rig
+
+## now 2D smoothing...
+
+eg <- gamSim(2,n=500,scale=.1)
+attach(eg)
+
+op <- par(mfrow=c(2,2),mar=c(4,4,1,1))
+
+contour(truth$x,truth$z,truth$f) ## contour truth
+b4 <- gam(y~s(x,z),data=data) ## fit model
+fit1 <- matrix(predict.gam(b4,pr,se=FALSE),40,40)
+contour(truth$x,truth$z,fit1)   ## contour fit
+persp(truth$x,truth$z,truth$f)    ## persp truth
+vis.gam(b4)                     ## persp fit
+detach(eg)
+par(op)
+
+##################################################
+## largish dataset example with user defined knots
+##################################################
+
+par(mfrow=c(2,2))
+n <- 5000
+eg <- gamSim(2,n=n,scale=.5)
+attach(eg)
+
+ind<-sample(1:n,200,replace=FALSE)
+b5<-gam(y~s(x,z,k=40),data=data,
+        knots=list(x=data$x[ind],z=data$z[ind]))
+## various visualizations
+vis.gam(b5,theta=30,phi=30)
+plot(b5)
+plot(b5,scheme=1,theta=50,phi=20)
+plot(b5,scheme=2)
+
+par(mfrow=c(1,1))
+## and a pure "knot based" spline of the same data
+b6<-gam(y~s(x,z,k=64),data=data,knots=list(x= rep((1:8-0.5)/8,8),
+        z=rep((1:8-0.5)/8,rep(8,8))))
+vis.gam(b6,color="heat",theta=30,phi=30)
+
+## varying the default large dataset behaviour via `xt'
+b7 <- gam(y~s(x,z,k=40,xt=list(max.knots=500,seed=2)),data=data)
+vis.gam(b7,theta=30,phi=30)
+detach(eg)
\ No newline at end of file
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/html/R.css
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/html/R.css	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/html/R.css	(revision 3762)
@@ -0,0 +1,130 @@
+@media screen {
+    .container {
+	padding-right: 10px;
+	padding-left: 10px;
+	margin-right: auto;
+	margin-left: auto;
+	max-width: 900px;
+    }
+}
+
+.rimage img { /* from knitr - for examples and demos */
+    width: 96%;
+    margin-left: 2%;
+} 	
+
+.katex { font-size: 1.1em; }
+
+code {
+    color: inherit;
+    background: inherit;
+}
+
+body {
+    line-height: 1.4;
+    background: white;
+    color: black;
+}
+
+a:link {
+    background: white;
+    color: blue;
+}
+
+a:visited {
+    background: white;
+    color: rgb(50%, 0%, 50%);
+}
+
+h1 {
+    background: white;
+    color: rgb(55%, 55%, 55%);
+    font-family: monospace;
+    font-size: 1.4em; /* x-large; */
+    text-align: center;
+}
+
+h2 {
+    background: white;
+    color: rgb(40%, 40%, 40%);
+    font-family: monospace;
+    font-size: 1.2em; /* large; */
+    text-align: center;
+}
+
+h3 {
+    background: white;
+    color: rgb(40%, 40%, 40%);
+    font-family: monospace;
+    font-size: 1.2em; /* large; */
+}
+
+h4 {
+    background: white;
+    color: rgb(40%, 40%, 40%);
+    font-family: monospace;
+    font-style: italic;
+    font-size: 1.2em; /* large; */
+}
+
+h5 {
+    background: white;
+    color: rgb(40%, 40%, 40%);
+    font-family: monospace;
+}
+
+h6 {
+    background: white;
+    color: rgb(40%, 40%, 40%);
+    font-family: monospace;
+    font-style: italic;
+}
+
+img.toplogo {
+    width: 4em;
+    vertical-align: middle;
+}
+
+img.arrow {
+    width: 30px;
+    height: 30px;
+    border: 0;
+}
+
+span.acronym {
+    font-size: small;
+}
+
+span.env {
+    font-family: monospace;
+}
+
+span.file {
+    font-family: monospace;
+}
+
+span.option{
+    font-family: monospace;
+}
+
+span.pkg {
+    font-weight: bold;
+}
+
+span.samp{
+    font-family: monospace;
+}
+
+div.vignettes a:hover {
+    background: rgb(85%, 85%, 85%);
+}
+
+tr {
+    vertical-align: top;
+}
+
+span.rlang {
+    font-family: Courier New, Courier;
+    color: #666666;
+}
+
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/html/00Index.html
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/html/00Index.html	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/mgcv/html/00Index.html	(revision 3762)
@@ -0,0 +1,679 @@
+<!DOCTYPE html>
+<html>
+<head><title>R: Mixed GAM Computation Vehicle with Automatic Smoothness
+Estimation</title>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
+<link rel="stylesheet" type="text/css" href="R.css" />
+</head><body><div class="container">
+<h1> Mixed GAM Computation Vehicle with Automatic Smoothness
+Estimation
+<img class="toplogo" src="../../../doc/html/Rlogo.svg" alt="[R logo]" />
+</h1>
+<hr/>
+<div style="text-align: center;">
+<a href="../../../doc/html/packages.html"><img class="arrow" src="../../../doc/html/left.jpg" alt="[Up]" /></a>
+<a href="../../../doc/html/index.html"><img class="arrow" src="../../../doc/html/up.jpg" alt="[Top]" /></a>
+</div><h2>Documentation for package &lsquo;mgcv&rsquo; version 1.8-42</h2>
+
+<ul><li><a href="../DESCRIPTION">DESCRIPTION file</a>.</li>
+</ul>
+
+<h2>Help Pages</h2>
+
+
+<p style="text-align: center;">
+<a href="# "> </a>
+<a href="#A">A</a>
+<a href="#B">B</a>
+<a href="#C">C</a>
+<a href="#D">D</a>
+<a href="#E">E</a>
+<a href="#F">F</a>
+<a href="#G">G</a>
+<a href="#I">I</a>
+<a href="#J">J</a>
+<a href="#K">K</a>
+<a href="#L">L</a>
+<a href="#M">M</a>
+<a href="#N">N</a>
+<a href="#O">O</a>
+<a href="#P">P</a>
+<a href="#Q">Q</a>
+<a href="#R">R</a>
+<a href="#S">S</a>
+<a href="#T">T</a>
+<a href="#U">U</a>
+<a href="#V">V</a>
+<a href="#X">X</a>
+<a href="#Z">Z</a>
+<a href="#misc">misc</a>
+</p>
+
+<table style="width: 100%;">
+<tr><td style="width: 25%;"><a href="mgcv-package.html">mgcv-package</a></td>
+<td>Mixed GAM Computation Vehicle with GCV/AIC/REML smoothness estimation and GAMMs by REML/PQL</td></tr>
+</table>
+
+<h2><a id="A">-- A --</a></h2>
+
+<table style="width: 100%;">
+<tr><td style="width: 25%;"><a href="smooth.construct.ad.smooth.spec.html">adaptive.smooth</a></td>
+<td>Adaptive smooths in GAMs</td></tr>
+<tr><td style="width: 25%;"><a href="logLik.gam.html">AIC.gam</a></td>
+<td>AIC and Log likelihood for a fitted GAM</td></tr>
+<tr><td style="width: 25%;"><a href="anova.gam.html">anova.gam</a></td>
+<td>Approximate hypothesis tests related to GAM fits</td></tr>
+</table>
+
+<h2><a id="B">-- B --</a></h2>
+
+<table style="width: 100%;">
+<tr><td style="width: 25%;"><a href="smooth.construct.bs.smooth.spec.html">b.spline</a></td>
+<td>Penalized B-splines in GAMs</td></tr>
+<tr><td style="width: 25%;"><a href="bam.html">bam</a></td>
+<td>Generalized additive models for very large datasets</td></tr>
+<tr><td style="width: 25%;"><a href="bam.update.html">bam.update</a></td>
+<td>Update a strictly additive bam model for new data.</td></tr>
+<tr><td style="width: 25%;"><a href="bandchol.html">bandchol</a></td>
+<td>Choleski decomposition of a band diagonal matrix</td></tr>
+<tr><td style="width: 25%;"><a href="Beta.html">betar</a></td>
+<td>GAM beta regression family</td></tr>
+<tr><td style="width: 25%;"><a href="blas.thread.test.html">blas.thread.test</a></td>
+<td>BLAS thread safety</td></tr>
+<tr><td style="width: 25%;"><a href="bug.reports.mgcv.html">bug.reports.mgcv</a></td>
+<td>Reporting mgcv bugs.</td></tr>
+</table>
+
+<h2><a id="C">-- C --</a></h2>
+
+<table style="width: 100%;">
+<tr><td style="width: 25%;"><a href="chol.down.html">choldrop</a></td>
+<td>Deletion and rank one Cholesky factor update</td></tr>
+<tr><td style="width: 25%;"><a href="chol.down.html">cholup</a></td>
+<td>Deletion and rank one Cholesky factor update</td></tr>
+<tr><td style="width: 25%;"><a href="choose.k.html">choose.k</a></td>
+<td>Basis dimension choice for smooths</td></tr>
+<tr><td style="width: 25%;"><a href="cnorm.html">cnorm</a></td>
+<td>GAM censored normal family for log-normal AFT and Tobit models</td></tr>
+<tr><td style="width: 25%;"><a href="pdIdnot.html">coef.pdIdnot</a></td>
+<td>Overflow proof pdMat class for multiples of the identity matrix</td></tr>
+<tr><td style="width: 25%;"><a href="pdTens.html">coef.pdTens</a></td>
+<td>Functions implementing a pdMat class for tensor product smooths</td></tr>
+<tr><td style="width: 25%;"><a href="columb.html">columb</a></td>
+<td>Reduced version of Columbus OH crime data</td></tr>
+<tr><td style="width: 25%;"><a href="columb.html">columb.polys</a></td>
+<td>Reduced version of Columbus OH crime data</td></tr>
+<tr><td style="width: 25%;"><a href="concurvity.html">concurvity</a></td>
+<td>GAM concurvity measures</td></tr>
+<tr><td style="width: 25%;"><a href="pdIdnot.html">corMatrix.pdIdnot</a></td>
+<td>Overflow proof pdMat class for multiples of the identity matrix</td></tr>
+<tr><td style="width: 25%;"><a href="coxph.html">cox.ph</a></td>
+<td>Additive Cox Proportional Hazard Model</td></tr>
+<tr><td style="width: 25%;"><a href="coxpht.html">cox.pht</a></td>
+<td>Additive Cox proportional hazard models with time varying covariates</td></tr>
+<tr><td style="width: 25%;"><a href="cSplineDes.html">cSplineDes</a></td>
+<td>Evaluate cyclic B spline basis</td></tr>
+<tr><td style="width: 25%;"><a href="smooth.construct.cr.smooth.spec.html">cubic.regression.spline</a></td>
+<td>Penalized Cubic regression splines in GAMs</td></tr>
+<tr><td style="width: 25%;"><a href="smooth.construct.cr.smooth.spec.html">cyclic.cubic.spline</a></td>
+<td>Penalized Cubic regression splines in GAMs</td></tr>
+<tr><td style="width: 25%;"><a href="smooth.construct.ps.smooth.spec.html">cyclic.p.spline</a></td>
+<td>P-splines in GAMs</td></tr>
+</table>
+
+<h2><a id="D">-- D --</a></h2>
+
+<table style="width: 100%;">
+<tr><td style="width: 25%;"><a href="rmvn.html">d.mvt</a></td>
+<td>Generate from or evaluate multivariate normal or t densities.</td></tr>
+<tr><td style="width: 25%;"><a href="smooth.construct.bs.smooth.spec.html">d.spline</a></td>
+<td>Penalized B-splines in GAMs</td></tr>
+<tr><td style="width: 25%;"><a href="dDeta.html">dDeta</a></td>
+<td>Obtaining derivative w.r.t. linear predictor</td></tr>
+<tr><td style="width: 25%;"><a href="XWXd.html">diagXVXd</a></td>
+<td>Internal functions for discretized model matrix handling</td></tr>
+<tr><td style="width: 25%;"><a href="pdIdnot.html">Dim.pdIdnot</a></td>
+<td>Overflow proof pdMat class for multiples of the identity matrix</td></tr>
+<tr><td style="width: 25%;"><a href="rmvn.html">dmvn</a></td>
+<td>Generate from or evaluate multivariate normal or t densities.</td></tr>
+<tr><td style="width: 25%;"><a href="dpnorm.html">dpnorm</a></td>
+<td>Stable evaluation of difference between normal c.d.f.s</td></tr>
+<tr><td style="width: 25%;"><a href="smooth.construct.ds.smooth.spec.html">Duchon.spline</a></td>
+<td>Low rank Duchon 1977 splines</td></tr>
+</table>
+
+<h2><a id="E">-- E --</a></h2>
+
+<table style="width: 100%;">
+<tr><td style="width: 25%;"><a href="exclude.too.far.html">exclude.too.far</a></td>
+<td>Exclude prediction grid points too far from data</td></tr>
+<tr><td style="width: 25%;"><a href="extract.lme.cov.html">extract.lme.cov</a></td>
+<td>Extract the data covariance matrix from an lme object</td></tr>
+<tr><td style="width: 25%;"><a href="extract.lme.cov.html">extract.lme.cov2</a></td>
+<td>Extract the data covariance matrix from an lme object</td></tr>
+</table>
+
+<h2><a id="F">-- F --</a></h2>
+
+<table style="width: 100%;">
+<tr><td style="width: 25%;"><a href="factor.smooth.html">factor.smooth</a></td>
+<td>Factor smooth interactions in GAMs</td></tr>
+<tr><td style="width: 25%;"><a href="factor.smooth.html">factor.smooth.interaction</a></td>
+<td>Factor smooth interactions in GAMs</td></tr>
+<tr><td style="width: 25%;"><a href="family.mgcv.html">family.mgcv</a></td>
+<td>Distribution families in mgcv</td></tr>
+<tr><td style="width: 25%;"><a href="FFdes.html">FFdes</a></td>
+<td>Level 5 fractional factorial designs</td></tr>
+<tr><td style="width: 25%;"><a href="fix.family.link.html">fix.family.link</a></td>
+<td>Modify families for use in GAM fitting and checking</td></tr>
+<tr><td style="width: 25%;"><a href="fix.family.link.html">fix.family.ls</a></td>
+<td>Modify families for use in GAM fitting and checking</td></tr>
+<tr><td style="width: 25%;"><a href="fix.family.link.html">fix.family.qf</a></td>
+<td>Modify families for use in GAM fitting and checking</td></tr>
+<tr><td style="width: 25%;"><a href="fix.family.link.html">fix.family.rd</a></td>
+<td>Modify families for use in GAM fitting and checking</td></tr>
+<tr><td style="width: 25%;"><a href="fix.family.link.html">fix.family.var</a></td>
+<td>Modify families for use in GAM fitting and checking</td></tr>
+<tr><td style="width: 25%;"><a href="fixDependence.html">fixDependence</a></td>
+<td>Detect linear dependencies of one matrix on another</td></tr>
+<tr><td style="width: 25%;"><a href="formula.gam.html">formula.gam</a></td>
+<td>GAM formula</td></tr>
+<tr><td style="width: 25%;"><a href="formXtViX.html">formXtViX</a></td>
+<td>Form component of GAMM covariance matrix</td></tr>
+<tr><td style="width: 25%;"><a href="fs.test.html">fs.boundary</a></td>
+<td>FELSPLINE test function</td></tr>
+<tr><td style="width: 25%;"><a href="fs.test.html">fs.test</a></td>
+<td>FELSPLINE test function</td></tr>
+<tr><td style="width: 25%;"><a href="full.score.html">full.score</a></td>
+<td>GCV/UBRE score for use within nlm</td></tr>
+<tr><td style="width: 25%;"><a href="linear.functional.terms.html">function.predictors</a></td>
+<td>Linear functionals of a smooth in GAMs</td></tr>
+</table>
+
+<h2><a id="G">-- G --</a></h2>
+
+<table style="width: 100%;">
+<tr><td style="width: 25%;"><a href="gam.html">gam</a></td>
+<td>Generalized additive models with integrated smoothness estimation</td></tr>
+<tr><td style="width: 25%;"><a href="gam.check.html">gam.check</a></td>
+<td>Some diagnostics for a fitted gam model</td></tr>
+<tr><td style="width: 25%;"><a href="gam.control.html">gam.control</a></td>
+<td>Setting GAM fitting defaults</td></tr>
+<tr><td style="width: 25%;"><a href="gam.convergence.html">gam.convergence</a></td>
+<td>GAM convergence and performance issues</td></tr>
+<tr><td style="width: 25%;"><a href="gam.fit.html">gam.fit</a></td>
+<td>GAM P-IRLS estimation with GCV/UBRE smoothness estimation</td></tr>
+<tr><td style="width: 25%;"><a href="gam.fit3.html">gam.fit3</a></td>
+<td>P-IRLS GAM estimation with GCV, UBRE/AIC or RE/ML derivative calculation</td></tr>
+<tr><td style="width: 25%;"><a href="gam.fit5.post.proc.html">gam.fit5.post.proc</a></td>
+<td>Post-processing output of gam.fit5</td></tr>
+<tr><td style="width: 25%;"><a href="gam.mh.html">gam.mh</a></td>
+<td>Simple posterior simulation with gam fits</td></tr>
+<tr><td style="width: 25%;"><a href="gam.models.html">gam.models</a></td>
+<td>Specifying generalized additive models</td></tr>
+<tr><td style="width: 25%;"><a href="gam.outer.html">gam.outer</a></td>
+<td>Minimize GCV or UBRE score of a GAM using 'outer' iteration</td></tr>
+<tr><td style="width: 25%;"><a href="gam.convergence.html">gam.performance</a></td>
+<td>GAM convergence and performance issues</td></tr>
+<tr><td style="width: 25%;"><a href="gam.reparam.html">gam.reparam</a></td>
+<td>Finding stable orthogonal re-parameterization of the square root penalty.</td></tr>
+<tr><td style="width: 25%;"><a href="gam.scale.html">gam.scale</a></td>
+<td>Scale parameter estimation in GAMs</td></tr>
+<tr><td style="width: 25%;"><a href="gam.selection.html">gam.selection</a></td>
+<td>Generalized Additive Model Selection</td></tr>
+<tr><td style="width: 25%;"><a href="gam.side.html">gam.side</a></td>
+<td>Identifiability side conditions for a GAM</td></tr>
+<tr><td style="width: 25%;"><a href="gam.vcomp.html">gam.vcomp</a></td>
+<td>Report gam smoothness estimates as variance components</td></tr>
+<tr><td style="width: 25%;"><a href="gam2objective.html">gam2derivative</a></td>
+<td>Objective functions for GAM smoothing parameter estimation</td></tr>
+<tr><td style="width: 25%;"><a href="gam2objective.html">gam2objective</a></td>
+<td>Objective functions for GAM smoothing parameter estimation</td></tr>
+<tr><td style="width: 25%;"><a href="gamlss.etamu.html">gamlss.etamu</a></td>
+<td>Transform derivatives wrt mu to derivatives wrt linear predictor</td></tr>
+<tr><td style="width: 25%;"><a href="gamlss.gH.html">gamlss.gH</a></td>
+<td>Calculating derivatives of log-likelihood wrt regression coefficients</td></tr>
+<tr><td style="width: 25%;"><a href="gamm.html">gamm</a></td>
+<td>Generalized Additive Mixed Models</td></tr>
+<tr><td style="width: 25%;"><a href="gammals.html">gammals</a></td>
+<td>Gamma location-scale model family</td></tr>
+<tr><td style="width: 25%;"><a href="gamObject.html">gamObject</a></td>
+<td>Fitted gam object</td></tr>
+<tr><td style="width: 25%;"><a href="gamSim.html">gamSim</a></td>
+<td>Simulate example data for GAMs</td></tr>
+<tr><td style="width: 25%;"><a href="gaulss.html">gaulss</a></td>
+<td>Gaussian location-scale model family</td></tr>
+<tr><td style="width: 25%;"><a href="get.var.html">get.var</a></td>
+<td>Get named variable or evaluate expression from list or data.frame</td></tr>
+<tr><td style="width: 25%;"><a href="gevlss.html">gevlss</a></td>
+<td>Generalized Extreme Value location-scale model family</td></tr>
+<tr><td style="width: 25%;"><a href="ginla.html">ginla</a></td>
+<td>GAM Integrated Nested Laplace Approximation Newton Enhanced</td></tr>
+<tr><td style="width: 25%;"><a href="smooth.construct.gp.smooth.spec.html">gp.smooth</a></td>
+<td>Low rank Gaussian process smooths</td></tr>
+<tr><td style="width: 25%;"><a href="gumbls.html">gumbls</a></td>
+<td>Gumbel location-scale model family</td></tr>
+</table>
+
+<h2><a id="I">-- I --</a></h2>
+
+<table style="width: 100%;">
+<tr><td style="width: 25%;"><a href="identifiability.html">identifiability</a></td>
+<td>Identifiability constraints</td></tr>
+<tr><td style="width: 25%;"><a href="in.out.html">in.out</a></td>
+<td>Which of a set of points lie within a polygon defined region</td></tr>
+<tr><td style="width: 25%;"><a href="influence.gam.html">influence.gam</a></td>
+<td>Extract the diagonal of the influence/hat matrix for a GAM</td></tr>
+<tr><td style="width: 25%;"><a href="initial.sp.html">initial.sp</a></td>
+<td>Starting values for multiple smoothing parameter estimation</td></tr>
+<tr><td style="width: 25%;"><a href="inSide.html">inSide</a></td>
+<td>Are points inside boundary?</td></tr>
+<tr><td style="width: 25%;"><a href="interpret.gam.html">interpret.gam</a></td>
+<td>Interpret a GAM formula</td></tr>
+</table>
+
+<h2><a id="J">-- J --</a></h2>
+
+<table style="width: 100%;">
+<tr><td style="width: 25%;"><a href="jagam.html">jagam</a></td>
+<td>Just Another Gibbs Additive Modeller: JAGS support for mgcv.</td></tr>
+</table>
+
+<h2><a id="K">-- K --</a></h2>
+
+<table style="width: 100%;">
+<tr><td style="width: 25%;"><a href="k.check.html">k.check</a></td>
+<td>Checking smooth basis dimension</td></tr>
+</table>
+
+<h2><a id="L">-- L --</a></h2>
+
+<table style="width: 100%;">
+<tr><td style="width: 25%;"><a href="ldetS.html">ldetS</a></td>
+<td>Getting log generalized determinant of penalty matrices</td></tr>
+<tr><td style="width: 25%;"><a href="ldTweedie.html">ldTweedie</a></td>
+<td>Log Tweedie density evaluation</td></tr>
+<tr><td style="width: 25%;"><a href="linear.functional.terms.html">linear.functional.terms</a></td>
+<td>Linear functionals of a smooth in GAMs</td></tr>
+<tr><td style="width: 25%;"><a href="pdIdnot.html">logDet.pdIdnot</a></td>
+<td>Overflow proof pdMat class for multiples of the identity matrix</td></tr>
+<tr><td style="width: 25%;"><a href="logLik.gam.html">logLik.gam</a></td>
+<td>AIC and Log likelihood for a fitted GAM</td></tr>
+<tr><td style="width: 25%;"><a href="ls.size.html">ls.size</a></td>
+<td>Size of list elements</td></tr>
+</table>
+
+<h2><a id="M">-- M --</a></h2>
+
+<table style="width: 100%;">
+<tr><td style="width: 25%;"><a href="magic.html">magic</a></td>
+<td>Stable Multiple Smoothing Parameter Estimation by GCV or UBRE</td></tr>
+<tr><td style="width: 25%;"><a href="magic.post.proc.html">magic.post.proc</a></td>
+<td>Auxilliary information from magic fit</td></tr>
+<tr><td style="width: 25%;"><a href="mgcv-package.html">mgcv</a></td>
+<td>Mixed GAM Computation Vehicle with GCV/AIC/REML smoothness estimation and GAMMs by REML/PQL</td></tr>
+<tr><td style="width: 25%;"><a href="mgcv-FAQ.html">mgcv.FAQ</a></td>
+<td>Frequently Asked Questions for package mgcv</td></tr>
+<tr><td style="width: 25%;"><a href="mgcv-package.html">mgcv.package</a></td>
+<td>Mixed GAM Computation Vehicle with GCV/AIC/REML smoothness estimation and GAMMs by REML/PQL</td></tr>
+<tr><td style="width: 25%;"><a href="mgcv-parallel.html">mgcv.parallel</a></td>
+<td>Parallel computation in mgcv.</td></tr>
+<tr><td style="width: 25%;"><a href="mini.roots.html">mini.roots</a></td>
+<td>Obtain square roots of penalty matrices</td></tr>
+<tr><td style="width: 25%;"><a href="missing.data.html">missing.data</a></td>
+<td>Missing data in GAMs</td></tr>
+<tr><td style="width: 25%;"><a href="model.matrix.gam.html">model.matrix.gam</a></td>
+<td>Extract model matrix from GAM fit</td></tr>
+<tr><td style="width: 25%;"><a href="mono.con.html">mono.con</a></td>
+<td>Monotonicity constraints for a cubic regression spline</td></tr>
+<tr><td style="width: 25%;"><a href="smooth.construct.mrf.smooth.spec.html">mrf</a></td>
+<td>Markov Random Field Smooths</td></tr>
+<tr><td style="width: 25%;"><a href="mroot.html">mroot</a></td>
+<td>Smallest square root of matrix</td></tr>
+<tr><td style="width: 25%;"><a href="multinom.html">multinom</a></td>
+<td>GAM multinomial logistic regression</td></tr>
+<tr><td style="width: 25%;"><a href="mvn.html">mvn</a></td>
+<td>Multivariate normal additive models</td></tr>
+</table>
+
+<h2><a id="N">-- N --</a></h2>
+
+<table style="width: 100%;">
+<tr><td style="width: 25%;"><a href="negbin.html">nb</a></td>
+<td>GAM negative binomial families</td></tr>
+<tr><td style="width: 25%;"><a href="negbin.html">negbin</a></td>
+<td>GAM negative binomial families</td></tr>
+<tr><td style="width: 25%;"><a href="new.name.html">new.name</a></td>
+<td>Obtain a name for a new variable that is not already in use</td></tr>
+<tr><td style="width: 25%;"><a href="notExp.html">notExp</a></td>
+<td>Functions for better-than-log positive parameterization</td></tr>
+<tr><td style="width: 25%;"><a href="notExp2.html">notExp2</a></td>
+<td>Alternative to log parameterization for variance components</td></tr>
+<tr><td style="width: 25%;"><a href="notExp.html">notLog</a></td>
+<td>Functions for better-than-log positive parameterization</td></tr>
+<tr><td style="width: 25%;"><a href="notExp2.html">notLog2</a></td>
+<td>Alternative to log parameterization for variance components</td></tr>
+<tr><td style="width: 25%;"><a href="null.space.dimension.html">null.space.dimension</a></td>
+<td>The basis of the space of un-penalized functions for a TPRS</td></tr>
+</table>
+
+<h2><a id="O">-- O --</a></h2>
+
+<table style="width: 100%;">
+<tr><td style="width: 25%;"><a href="ocat.html">ocat</a></td>
+<td>GAM ordered categorical family</td></tr>
+<tr><td style="width: 25%;"><a href="one.se.rule.html">one.se.rule</a></td>
+<td>The one standard error rule for smoother models</td></tr>
+<tr><td style="width: 25%;"><a href="ocat.html">ordered.categorical</a></td>
+<td>GAM ordered categorical family</td></tr>
+</table>
+
+<h2><a id="P">-- P --</a></h2>
+
+<table style="width: 100%;">
+<tr><td style="width: 25%;"><a href="smooth.construct.ps.smooth.spec.html">p.spline</a></td>
+<td>P-splines in GAMs</td></tr>
+<tr><td style="width: 25%;"><a href="pcls.html">pcls</a></td>
+<td>Penalized Constrained Least Squares Fitting</td></tr>
+<tr><td style="width: 25%;"><a href="pdIdnot.html">pdConstruct.pdIdnot</a></td>
+<td>Overflow proof pdMat class for multiples of the identity matrix</td></tr>
+<tr><td style="width: 25%;"><a href="pdTens.html">pdConstruct.pdTens</a></td>
+<td>Functions implementing a pdMat class for tensor product smooths</td></tr>
+<tr><td style="width: 25%;"><a href="pdIdnot.html">pdFactor.pdIdnot</a></td>
+<td>Overflow proof pdMat class for multiples of the identity matrix</td></tr>
+<tr><td style="width: 25%;"><a href="pdTens.html">pdFactor.pdTens</a></td>
+<td>Functions implementing a pdMat class for tensor product smooths</td></tr>
+<tr><td style="width: 25%;"><a href="pdIdnot.html">pdIdnot</a></td>
+<td>Overflow proof pdMat class for multiples of the identity matrix</td></tr>
+<tr><td style="width: 25%;"><a href="pdIdnot.html">pdMatrix.pdIdnot</a></td>
+<td>Overflow proof pdMat class for multiples of the identity matrix</td></tr>
+<tr><td style="width: 25%;"><a href="pdTens.html">pdMatrix.pdTens</a></td>
+<td>Functions implementing a pdMat class for tensor product smooths</td></tr>
+<tr><td style="width: 25%;"><a href="pdTens.html">pdTens</a></td>
+<td>Functions implementing a pdMat class for tensor product smooths</td></tr>
+<tr><td style="width: 25%;"><a href="pen.edf.html">pen.edf</a></td>
+<td>Extract the effective degrees of freedom associated with each penalty in a gam fit</td></tr>
+<tr><td style="width: 25%;"><a href="vis.gam.html">persp.gam</a></td>
+<td>Visualization of GAM objects</td></tr>
+<tr><td style="width: 25%;"><a href="place.knots.html">place.knots</a></td>
+<td>Automatically place a set of knots evenly through covariate values</td></tr>
+<tr><td style="width: 25%;"><a href="plot.gam.html">plot.gam</a></td>
+<td>Default GAM plotting</td></tr>
+<tr><td style="width: 25%;"><a href="polys.plot.html">polys.plot</a></td>
+<td>Plot geographic regions defined as polygons</td></tr>
+<tr><td style="width: 25%;"><a href="gam.mh.html">posterior.simulation</a></td>
+<td>Simple posterior simulation with gam fits</td></tr>
+<tr><td style="width: 25%;"><a href="predict.bam.html">predict.bam</a></td>
+<td>Prediction from fitted Big Additive Model model</td></tr>
+<tr><td style="width: 25%;"><a href="predict.gam.html">predict.gam</a></td>
+<td>Prediction from fitted GAM model</td></tr>
+<tr><td style="width: 25%;"><a href="Predict.matrix.html">Predict.matrix</a></td>
+<td>Prediction methods for smooth terms in a GAM</td></tr>
+<tr><td style="width: 25%;"><a href="smooth.construct.bs.smooth.spec.html">Predict.matrix.Bspline.smooth</a></td>
+<td>Penalized B-splines in GAMs</td></tr>
+<tr><td style="width: 25%;"><a href="Predict.matrix.cr.smooth.html">Predict.matrix.cr.smooth</a></td>
+<td>Predict matrix method functions</td></tr>
+<tr><td style="width: 25%;"><a href="Predict.matrix.cr.smooth.html">Predict.matrix.cs.smooth</a></td>
+<td>Predict matrix method functions</td></tr>
+<tr><td style="width: 25%;"><a href="Predict.matrix.cr.smooth.html">Predict.matrix.cyclic.smooth</a></td>
+<td>Predict matrix method functions</td></tr>
+<tr><td style="width: 25%;"><a href="smooth.construct.ds.smooth.spec.html">Predict.matrix.duchon.spline</a></td>
+<td>Low rank Duchon 1977 splines</td></tr>
+<tr><td style="width: 25%;"><a href="smooth.construct.fs.smooth.spec.html">Predict.matrix.fs.interaction</a></td>
+<td>Factor smooth interactions in GAMs</td></tr>
+<tr><td style="width: 25%;"><a href="smooth.construct.gp.smooth.spec.html">Predict.matrix.gp.smooth</a></td>
+<td>Low rank Gaussian process smooths</td></tr>
+<tr><td style="width: 25%;"><a href="smooth.construct.mrf.smooth.spec.html">Predict.matrix.mrf.smooth</a></td>
+<td>Markov Random Field Smooths</td></tr>
+<tr><td style="width: 25%;"><a href="Predict.matrix.cr.smooth.html">Predict.matrix.pspline.smooth</a></td>
+<td>Predict matrix method functions</td></tr>
+<tr><td style="width: 25%;"><a href="smooth.construct.re.smooth.spec.html">Predict.matrix.random.effect</a></td>
+<td>Simple random effects in GAMs</td></tr>
+<tr><td style="width: 25%;"><a href="Predict.matrix.soap.film.html">Predict.matrix.sf</a></td>
+<td>Prediction matrix for soap film smooth</td></tr>
+<tr><td style="width: 25%;"><a href="Predict.matrix.soap.film.html">Predict.matrix.soap.film</a></td>
+<td>Prediction matrix for soap film smooth</td></tr>
+<tr><td style="width: 25%;"><a href="smooth.construct.sos.smooth.spec.html">Predict.matrix.sos.smooth</a></td>
+<td>Splines on the sphere</td></tr>
+<tr><td style="width: 25%;"><a href="Predict.matrix.soap.film.html">Predict.matrix.sw</a></td>
+<td>Prediction matrix for soap film smooth</td></tr>
+<tr><td style="width: 25%;"><a href="smooth.construct.sz.smooth.spec.html">Predict.matrix.sz.interaction</a></td>
+<td>Constrained factor smooth interactions in GAMs</td></tr>
+<tr><td style="width: 25%;"><a href="Predict.matrix.cr.smooth.html">Predict.matrix.t2.smooth</a></td>
+<td>Predict matrix method functions</td></tr>
+<tr><td style="width: 25%;"><a href="Predict.matrix.cr.smooth.html">Predict.matrix.tensor.smooth</a></td>
+<td>Predict matrix method functions</td></tr>
+<tr><td style="width: 25%;"><a href="Predict.matrix.cr.smooth.html">Predict.matrix.tprs.smooth</a></td>
+<td>Predict matrix method functions</td></tr>
+<tr><td style="width: 25%;"><a href="Predict.matrix.cr.smooth.html">Predict.matrix.ts.smooth</a></td>
+<td>Predict matrix method functions</td></tr>
+<tr><td style="width: 25%;"><a href="Predict.matrix.html">Predict.matrix2</a></td>
+<td>Prediction methods for smooth terms in a GAM</td></tr>
+<tr><td style="width: 25%;"><a href="smoothCon.html">PredictMat</a></td>
+<td>Prediction/Construction wrapper functions for GAM smooth terms</td></tr>
+<tr><td style="width: 25%;"><a href="anova.gam.html">print.anova.gam</a></td>
+<td>Approximate hypothesis tests related to GAM fits</td></tr>
+<tr><td style="width: 25%;"><a href="print.gam.html">print.gam</a></td>
+<td>Print a Generalized Additive Model object.</td></tr>
+<tr><td style="width: 25%;"><a href="summary.gam.html">print.summary.gam</a></td>
+<td>Summary for a GAM fit</td></tr>
+<tr><td style="width: 25%;"><a href="psum.chisq.html">psum.chisq</a></td>
+<td>Evaluate the c.d.f. of a weighted sum of chi-squared deviates</td></tr>
+</table>
+
+<h2><a id="Q">-- Q --</a></h2>
+
+<table style="width: 100%;">
+<tr><td style="width: 25%;"><a href="qq.gam.html">qq.gam</a></td>
+<td>QQ plots for gam model residuals</td></tr>
+</table>
+
+<h2><a id="R">-- R --</a></h2>
+
+<table style="width: 100%;">
+<tr><td style="width: 25%;"><a href="rmvn.html">r.mvt</a></td>
+<td>Generate from or evaluate multivariate normal or t densities.</td></tr>
+<tr><td style="width: 25%;"><a href="random.effects.html">random.effects</a></td>
+<td>Random effects in GAMs</td></tr>
+<tr><td style="width: 25%;"><a href="residuals.gam.html">residuals.gam</a></td>
+<td>Generalized Additive Model residuals</td></tr>
+<tr><td style="width: 25%;"><a href="rig.html">rig</a></td>
+<td>Generate inverse Gaussian random deviates</td></tr>
+<tr><td style="width: 25%;"><a href="rmvn.html">rmvn</a></td>
+<td>Generate from or evaluate multivariate normal or t densities.</td></tr>
+<tr><td style="width: 25%;"><a href="Rrank.html">Rrank</a></td>
+<td>Find rank of upper triangular matrix</td></tr>
+<tr><td style="width: 25%;"><a href="rTweedie.html">rTweedie</a></td>
+<td>Generate Tweedie random deviates</td></tr>
+</table>
+
+<h2><a id="S">-- S --</a></h2>
+
+<table style="width: 100%;">
+<tr><td style="width: 25%;"><a href="s.html">s</a></td>
+<td>Defining smooths in GAM formulae</td></tr>
+<tr><td style="width: 25%;"><a href="scat.html">scat</a></td>
+<td>GAM scaled t family for heavy tailed data</td></tr>
+<tr><td style="width: 25%;"><a href="sdiag.html">sdiag</a></td>
+<td>Extract or modify diagonals of a matrix</td></tr>
+<tr><td style="width: 25%;"><a href="sdiag.html">sdiag&lt;-</a></td>
+<td>Extract or modify diagonals of a matrix</td></tr>
+<tr><td style="width: 25%;"><a href="shash.html">shash</a></td>
+<td>Sinh-arcsinh location scale and shape model family</td></tr>
+<tr><td style="width: 25%;"><a href="linear.functional.terms.html">signal.regression</a></td>
+<td>Linear functionals of a smooth in GAMs</td></tr>
+<tr><td style="width: 25%;"><a href="jagam.html">sim2jam</a></td>
+<td>Just Another Gibbs Additive Modeller: JAGS support for mgcv.</td></tr>
+<tr><td style="width: 25%;"><a href="single.index.html">single.index</a></td>
+<td>Single index models with mgcv</td></tr>
+<tr><td style="width: 25%;"><a href="Sl.initial.repara.html">Sl.inirep</a></td>
+<td>Re-parametrizing model matrix X</td></tr>
+<tr><td style="width: 25%;"><a href="Sl.initial.repara.html">Sl.initial.repara</a></td>
+<td>Re-parametrizing model matrix X</td></tr>
+<tr><td style="width: 25%;"><a href="Sl.repara.html">Sl.repara</a></td>
+<td>Applying re-parameterization from log-determinant of penalty matrix to model matrix.</td></tr>
+<tr><td style="width: 25%;"><a href="Sl.setup.html">Sl.setup</a></td>
+<td>Setting up a list representing a block diagonal penalty matrix</td></tr>
+<tr><td style="width: 25%;"><a href="slanczos.html">slanczos</a></td>
+<td>Compute truncated eigen decomposition of a symmetric matrix</td></tr>
+<tr><td style="width: 25%;"><a href="smooth.construct.html">smooth.construct</a></td>
+<td>Constructor functions for smooth terms in a GAM</td></tr>
+<tr><td style="width: 25%;"><a href="smooth.construct.ad.smooth.spec.html">smooth.construct.ad.smooth.spec</a></td>
+<td>Adaptive smooths in GAMs</td></tr>
+<tr><td style="width: 25%;"><a href="smooth.construct.bs.smooth.spec.html">smooth.construct.bs.smooth.spec</a></td>
+<td>Penalized B-splines in GAMs</td></tr>
+<tr><td style="width: 25%;"><a href="smooth.construct.cr.smooth.spec.html">smooth.construct.cc.smooth.spec</a></td>
+<td>Penalized Cubic regression splines in GAMs</td></tr>
+<tr><td style="width: 25%;"><a href="smooth.construct.ps.smooth.spec.html">smooth.construct.cp.smooth.spec</a></td>
+<td>P-splines in GAMs</td></tr>
+<tr><td style="width: 25%;"><a href="smooth.construct.cr.smooth.spec.html">smooth.construct.cr.smooth.spec</a></td>
+<td>Penalized Cubic regression splines in GAMs</td></tr>
+<tr><td style="width: 25%;"><a href="smooth.construct.cr.smooth.spec.html">smooth.construct.cs.smooth.spec</a></td>
+<td>Penalized Cubic regression splines in GAMs</td></tr>
+<tr><td style="width: 25%;"><a href="smooth.construct.ds.smooth.spec.html">smooth.construct.ds.smooth.spec</a></td>
+<td>Low rank Duchon 1977 splines</td></tr>
+<tr><td style="width: 25%;"><a href="smooth.construct.fs.smooth.spec.html">smooth.construct.fs.smooth.spec</a></td>
+<td>Factor smooth interactions in GAMs</td></tr>
+<tr><td style="width: 25%;"><a href="smooth.construct.gp.smooth.spec.html">smooth.construct.gp.smooth.spec</a></td>
+<td>Low rank Gaussian process smooths</td></tr>
+<tr><td style="width: 25%;"><a href="smooth.construct.mrf.smooth.spec.html">smooth.construct.mrf.smooth.spec</a></td>
+<td>Markov Random Field Smooths</td></tr>
+<tr><td style="width: 25%;"><a href="smooth.construct.ps.smooth.spec.html">smooth.construct.ps.smooth.spec</a></td>
+<td>P-splines in GAMs</td></tr>
+<tr><td style="width: 25%;"><a href="smooth.construct.re.smooth.spec.html">smooth.construct.re.smooth.spec</a></td>
+<td>Simple random effects in GAMs</td></tr>
+<tr><td style="width: 25%;"><a href="smooth.construct.so.smooth.spec.html">smooth.construct.sf.smooth.spec</a></td>
+<td>Soap film smoother constructer</td></tr>
+<tr><td style="width: 25%;"><a href="smooth.construct.so.smooth.spec.html">smooth.construct.so.smooth.spec</a></td>
+<td>Soap film smoother constructer</td></tr>
+<tr><td style="width: 25%;"><a href="smooth.construct.sos.smooth.spec.html">smooth.construct.sos.smooth.spec</a></td>
+<td>Splines on the sphere</td></tr>
+<tr><td style="width: 25%;"><a href="smooth.construct.so.smooth.spec.html">smooth.construct.sw.smooth.spec</a></td>
+<td>Soap film smoother constructer</td></tr>
+<tr><td style="width: 25%;"><a href="smooth.construct.sz.smooth.spec.html">smooth.construct.sz.smooth.spec</a></td>
+<td>Constrained factor smooth interactions in GAMs</td></tr>
+<tr><td style="width: 25%;"><a href="smooth.construct.t2.smooth.spec.html">smooth.construct.t2.smooth.spec</a></td>
+<td>Tensor product smoothing constructor</td></tr>
+<tr><td style="width: 25%;"><a href="smooth.construct.tensor.smooth.spec.html">smooth.construct.tensor.smooth.spec</a></td>
+<td>Tensor product smoothing constructor</td></tr>
+<tr><td style="width: 25%;"><a href="smooth.construct.tp.smooth.spec.html">smooth.construct.tp.smooth.spec</a></td>
+<td>Penalized thin plate regression splines in GAMs</td></tr>
+<tr><td style="width: 25%;"><a href="smooth.construct.tp.smooth.spec.html">smooth.construct.ts.smooth.spec</a></td>
+<td>Penalized thin plate regression splines in GAMs</td></tr>
+<tr><td style="width: 25%;"><a href="smooth.construct.html">smooth.construct2</a></td>
+<td>Constructor functions for smooth terms in a GAM</td></tr>
+<tr><td style="width: 25%;"><a href="smooth.info.html">smooth.info</a></td>
+<td>Generic function to provide extra information about smooth specification</td></tr>
+<tr><td style="width: 25%;"><a href="smooth.terms.html">smooth.terms</a></td>
+<td>Smooth terms in GAM</td></tr>
+<tr><td style="width: 25%;"><a href="smooth2random.html">smooth2random</a></td>
+<td>Convert a smooth to a form suitable for estimating as random effect</td></tr>
+<tr><td style="width: 25%;"><a href="smoothCon.html">smoothCon</a></td>
+<td>Prediction/Construction wrapper functions for GAM smooth terms</td></tr>
+<tr><td style="width: 25%;"><a href="smooth.terms.html">smooths</a></td>
+<td>Smooth terms in GAM</td></tr>
+<tr><td style="width: 25%;"><a href="smooth.construct.so.smooth.spec.html">soap</a></td>
+<td>Soap film smoother constructer</td></tr>
+<tr><td style="width: 25%;"><a href="pdIdnot.html">solve.pdIdnot</a></td>
+<td>Overflow proof pdMat class for multiples of the identity matrix</td></tr>
+<tr><td style="width: 25%;"><a href="sp.vcov.html">sp.vcov</a></td>
+<td>Extract smoothing parameter estimator covariance matrix from (RE)ML GAM fit</td></tr>
+<tr><td style="width: 25%;"><a href="spasm.construct.html">spasm.construct</a></td>
+<td>Experimental sparse smoothers</td></tr>
+<tr><td style="width: 25%;"><a href="spasm.construct.html">spasm.smooth</a></td>
+<td>Experimental sparse smoothers</td></tr>
+<tr><td style="width: 25%;"><a href="spasm.construct.html">spasm.sp</a></td>
+<td>Experimental sparse smoothers</td></tr>
+<tr><td style="width: 25%;"><a href="smooth.construct.sos.smooth.spec.html">Spherical.Spline</a></td>
+<td>Splines on the sphere</td></tr>
+<tr><td style="width: 25%;"><a href="step.gam.html">step.gam</a></td>
+<td>Alternatives to step.gam</td></tr>
+<tr><td style="width: 25%;"><a href="summary.gam.html">summary.gam</a></td>
+<td>Summary for a GAM fit</td></tr>
+<tr><td style="width: 25%;"><a href="pdIdnot.html">summary.pdIdnot</a></td>
+<td>Overflow proof pdMat class for multiples of the identity matrix</td></tr>
+<tr><td style="width: 25%;"><a href="pdTens.html">summary.pdTens</a></td>
+<td>Functions implementing a pdMat class for tensor product smooths</td></tr>
+</table>
+
+<h2><a id="T">-- T --</a></h2>
+
+<table style="width: 100%;">
+<tr><td style="width: 25%;"><a href="scat.html">t.scaled</a></td>
+<td>GAM scaled t family for heavy tailed data</td></tr>
+<tr><td style="width: 25%;"><a href="t2.html">t2</a></td>
+<td>Define alternative tensor product smooths in GAM formulae</td></tr>
+<tr><td style="width: 25%;"><a href="te.html">te</a></td>
+<td>Define tensor product smooths or tensor product interactions in GAM formulae</td></tr>
+<tr><td style="width: 25%;"><a href="tensor.prod.model.matrix.html">tensor.prod.model.matrix</a></td>
+<td>Row Kronecker product/ tensor product smooth construction</td></tr>
+<tr><td style="width: 25%;"><a href="tensor.prod.model.matrix.html">tensor.prod.penalties</a></td>
+<td>Row Kronecker product/ tensor product smooth construction</td></tr>
+<tr><td style="width: 25%;"><a href="te.html">ti</a></td>
+<td>Define tensor product smooths or tensor product interactions in GAM formulae</td></tr>
+<tr><td style="width: 25%;"><a href="cnorm.html">Tobit</a></td>
+<td>GAM censored normal family for log-normal AFT and Tobit models</td></tr>
+<tr><td style="width: 25%;"><a href="totalPenaltySpace.html">totalPenaltySpace</a></td>
+<td>Obtaining (orthogonal) basis for null space and range of the penalty matrix</td></tr>
+<tr><td style="width: 25%;"><a href="smooth.construct.tp.smooth.spec.html">tprs</a></td>
+<td>Penalized thin plate regression splines in GAMs</td></tr>
+<tr><td style="width: 25%;"><a href="trichol.html">trichol</a></td>
+<td>Choleski decomposition of a tri-diagonal matrix</td></tr>
+<tr><td style="width: 25%;"><a href="trind.generator.html">trind.generator</a></td>
+<td>Generates index arrays for upper triangular storage</td></tr>
+<tr><td style="width: 25%;"><a href="Tweedie.html">tw</a></td>
+<td>GAM Tweedie families</td></tr>
+<tr><td style="width: 25%;"><a href="Tweedie.html">Tweedie</a></td>
+<td>GAM Tweedie families</td></tr>
+<tr><td style="width: 25%;"><a href="twlss.html">twlss</a></td>
+<td>Tweedie location scale family</td></tr>
+</table>
+
+<h2><a id="U">-- U --</a></h2>
+
+<table style="width: 100%;">
+<tr><td style="width: 25%;"><a href="uniquecombs.html">uniquecombs</a></td>
+<td>find the unique rows in a matrix</td></tr>
+<tr><td style="width: 25%;"><a href="smooth.construct.html">user.defined.smooth</a></td>
+<td>Constructor functions for smooth terms in a GAM</td></tr>
+</table>
+
+<h2><a id="V">-- V --</a></h2>
+
+<table style="width: 100%;">
+<tr><td style="width: 25%;"><a href="vcov.gam.html">vcov.gam</a></td>
+<td>Extract parameter (estimator) covariance matrix from GAM fit</td></tr>
+<tr><td style="width: 25%;"><a href="vis.gam.html">vis.gam</a></td>
+<td>Visualization of GAM objects</td></tr>
+</table>
+
+<h2><a id="X">-- X --</a></h2>
+
+<table style="width: 100%;">
+<tr><td style="width: 25%;"><a href="XWXd.html">Xbd</a></td>
+<td>Internal functions for discretized model matrix handling</td></tr>
+<tr><td style="width: 25%;"><a href="XWXd.html">XWXd</a></td>
+<td>Internal functions for discretized model matrix handling</td></tr>
+<tr><td style="width: 25%;"><a href="XWXd.html">XWyd</a></td>
+<td>Internal functions for discretized model matrix handling</td></tr>
+</table>
+
+<h2><a id="Z">-- Z --</a></h2>
+
+<table style="width: 100%;">
+<tr><td style="width: 25%;"><a href="ziP.html">ziP</a></td>
+<td>GAM zero-inflated (hurdle) Poisson regression family</td></tr>
+<tr><td style="width: 25%;"><a href="ziplss.html">zipll</a></td>
+<td>Zero inflated (hurdle) Poisson location-scale model family</td></tr>
+<tr><td style="width: 25%;"><a href="ziplss.html">ziplss</a></td>
+<td>Zero inflated (hurdle) Poisson location-scale model family</td></tr>
+</table>
+
+<h2><a id="misc">-- misc --</a></h2>
+
+<table style="width: 100%;">
+<tr><td style="width: 25%;"><a href="tensor.prod.model.matrix.html">%.%</a></td>
+<td>Row Kronecker product/ tensor product smooth construction</td></tr>
+</table>
+</div></body></html>
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/desc/help/aliases.rds
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/desc/help/aliases.rds
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/desc/help/desc.rdx
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/desc/help/desc.rdx
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/desc/help/desc.rdb
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/desc/help/desc.rdb
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/desc/help/AnIndex
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/desc/help/AnIndex	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/desc/help/AnIndex	(revision 3762)
@@ -0,0 +1,62 @@
+desc-package	desc-package
+check_encoding	check_encoding
+check_field	check_field
+cran_ascii_fields	cran_ascii_fields
+cran_valid_fields	cran_valid_fields
+dep_types	dep_types
+desc	desc
+description	description
+desc_add_author	desc_add_author
+desc_add_author_gh	desc_add_author_gh
+desc_add_me	desc_add_me
+desc_add_orcid	desc_add_orcid
+desc_add_remotes	desc_add_remotes
+desc_add_role	desc_add_role
+desc_add_to_collate	desc_add_to_collate
+desc_add_urls	desc_add_urls
+desc_bump_version	desc_bump_version
+desc_change_maintainer	desc_change_maintainer
+desc_clear_remotes	desc_clear_remotes
+desc_clear_urls	desc_clear_urls
+desc_coerce_authors_at_r	desc_coerce_authors_at_r
+desc_del	desc_del
+desc_del_author	desc_del_author
+desc_del_collate	desc_del_collate
+desc_del_dep	desc_del_dep
+desc_del_deps	desc_del_deps
+desc_del_from_collate	desc_del_from_collate
+desc_del_remotes	desc_del_remotes
+desc_del_role	desc_del_role
+desc_del_urls	desc_del_urls
+desc_fields	desc_fields
+desc_get	desc_get
+desc_get_author	desc_get_author
+desc_get_authors	desc_get_authors
+desc_get_built	desc_get_built
+desc_get_collate	desc_get_collate
+desc_get_deps	desc_get_deps
+desc_get_field	desc_get_field
+desc_get_list	desc_get_field
+desc_get_maintainer	desc_get_maintainer
+desc_get_or_fail	desc_get_field
+desc_get_remotes	desc_get_remotes
+desc_get_urls	desc_get_urls
+desc_get_version	desc_get_version
+desc_has_dep	desc_has_dep
+desc_has_fields	desc_has_fields
+desc_normalize	desc_normalize
+desc_print	desc_print
+desc_reformat_fields	desc_reformat_fields
+desc_reorder_fields	desc_reorder_fields
+desc_set	desc_set
+desc_set_authors	desc_set_authors
+desc_set_collate	desc_set_collate
+desc_set_dep	desc_set_dep
+desc_set_deps	desc_set_deps
+desc_set_list	desc_set
+desc_set_remotes	desc_set_remotes
+desc_set_urls	desc_set_urls
+desc_set_version	desc_set_version
+desc_to_latex	desc_to_latex
+desc_validate	desc_validate
+_PACKAGE	desc-package
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/desc/help/paths.rds
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/desc/help/paths.rds
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/desc/R/desc.rdb
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/desc/R/desc.rdb
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/desc/R/desc.rdx
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/desc/R/desc.rdx
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/desc/R/desc
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/desc/R/desc	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/desc/R/desc	(revision 3762)
@@ -0,0 +1,27 @@
+#  File share/R/nspackloader.R
+#  Part of the R package, https://www.R-project.org
+#
+#  Copyright (C) 1995-2012 The R Core Team
+#
+#  This program is free software; you can redistribute it and/or modify
+#  it under the terms of the GNU General Public License as published by
+#  the Free Software Foundation; either version 2 of the License, or
+#  (at your option) any later version.
+#
+#  This program is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#  GNU General Public License for more details.
+#
+#  A copy of the GNU General Public License is available at
+#  https://www.r-project.org/Licenses/
+
+local({
+    info <- loadingNamespaceInfo()
+    pkg <- info$pkgname
+    ns <- .getNamespace(as.name(pkg))
+    if (is.null(ns))
+        stop("cannot find namespace environment for ", pkg, domain = NA);
+    dbbase <- file.path(info$libname, pkg, "R", pkg)
+    lazyLoad(dbbase, ns, filter = function(n) n != ".__NAMESPACE__.")
+})
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/desc/html/R.css
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/desc/html/R.css	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/desc/html/R.css	(revision 3762)
@@ -0,0 +1,130 @@
+@media screen {
+    .container {
+	padding-right: 10px;
+	padding-left: 10px;
+	margin-right: auto;
+	margin-left: auto;
+	max-width: 900px;
+    }
+}
+
+.rimage img { /* from knitr - for examples and demos */
+    width: 96%;
+    margin-left: 2%;
+} 	
+
+.katex { font-size: 1.1em; }
+
+code {
+    color: inherit;
+    background: inherit;
+}
+
+body {
+    line-height: 1.4;
+    background: white;
+    color: black;
+}
+
+a:link {
+    background: white;
+    color: blue;
+}
+
+a:visited {
+    background: white;
+    color: rgb(50%, 0%, 50%);
+}
+
+h1 {
+    background: white;
+    color: rgb(55%, 55%, 55%);
+    font-family: monospace;
+    font-size: 1.4em; /* x-large; */
+    text-align: center;
+}
+
+h2 {
+    background: white;
+    color: rgb(40%, 40%, 40%);
+    font-family: monospace;
+    font-size: 1.2em; /* large; */
+    text-align: center;
+}
+
+h3 {
+    background: white;
+    color: rgb(40%, 40%, 40%);
+    font-family: monospace;
+    font-size: 1.2em; /* large; */
+}
+
+h4 {
+    background: white;
+    color: rgb(40%, 40%, 40%);
+    font-family: monospace;
+    font-style: italic;
+    font-size: 1.2em; /* large; */
+}
+
+h5 {
+    background: white;
+    color: rgb(40%, 40%, 40%);
+    font-family: monospace;
+}
+
+h6 {
+    background: white;
+    color: rgb(40%, 40%, 40%);
+    font-family: monospace;
+    font-style: italic;
+}
+
+img.toplogo {
+    width: 4em;
+    vertical-align: middle;
+}
+
+img.arrow {
+    width: 30px;
+    height: 30px;
+    border: 0;
+}
+
+span.acronym {
+    font-size: small;
+}
+
+span.env {
+    font-family: monospace;
+}
+
+span.file {
+    font-family: monospace;
+}
+
+span.option{
+    font-family: monospace;
+}
+
+span.pkg {
+    font-weight: bold;
+}
+
+span.samp{
+    font-family: monospace;
+}
+
+div.vignettes a:hover {
+    background: rgb(85%, 85%, 85%);
+}
+
+tr {
+    vertical-align: top;
+}
+
+span.rlang {
+    font-family: Courier New, Courier;
+    color: #666666;
+}
+
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/desc/html/00Index.html
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/desc/html/00Index.html	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/desc/html/00Index.html	(revision 3762)
@@ -0,0 +1,144 @@
+<!DOCTYPE html>
+<html>
+<head><title>R: Manipulate DESCRIPTION Files</title>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
+<link rel="stylesheet" type="text/css" href="R.css" />
+</head><body><div class="container">
+<h1> Manipulate DESCRIPTION Files
+<img class="toplogo" src="../../../doc/html/Rlogo.svg" alt="[R logo]" />
+</h1>
+<hr/>
+<div style="text-align: center;">
+<a href="../../../doc/html/packages.html"><img class="arrow" src="../../../doc/html/left.jpg" alt="[Up]" /></a>
+<a href="../../../doc/html/index.html"><img class="arrow" src="../../../doc/html/up.jpg" alt="[Top]" /></a>
+</div><h2>Documentation for package &lsquo;desc&rsquo; version 1.4.2</h2>
+
+<ul><li><a href="../DESCRIPTION">DESCRIPTION file</a>.</li>
+<li><a href="../NEWS">Package NEWS</a>.</li>
+</ul>
+
+<h2>Help Pages</h2>
+
+
+<table style="width: 100%;">
+<tr><td style="width: 25%;"><a href="check_field.html">check_field</a></td>
+<td>Syntactical check of a DESCRIPTION field</td></tr>
+<tr><td style="width: 25%;"><a href="cran_ascii_fields.html">cran_ascii_fields</a></td>
+<td>The DESCRIPTION fields that are supposed to be in plain ASCII encoding</td></tr>
+<tr><td style="width: 25%;"><a href="cran_valid_fields.html">cran_valid_fields</a></td>
+<td>A list of DESCRIPTION fields that are valid according to the CRAN checks</td></tr>
+<tr><td style="width: 25%;"><a href="dep_types.html">dep_types</a></td>
+<td>DESCRIPTION fields that denote package dependencies</td></tr>
+<tr><td style="width: 25%;"><a href="desc.html">desc</a></td>
+<td>Read a DESCRIPTION file</td></tr>
+<tr><td style="width: 25%;"><a href="description.html">description</a></td>
+<td>Read, write, update, validate DESCRIPTION files</td></tr>
+<tr><td style="width: 25%;"><a href="desc_add_author.html">desc_add_author</a></td>
+<td>Add an author to Authors@R in DESCRIPTION</td></tr>
+<tr><td style="width: 25%;"><a href="desc_add_author_gh.html">desc_add_author_gh</a></td>
+<td>Add a GitHub user as an author to DESCRIPTION</td></tr>
+<tr><td style="width: 25%;"><a href="desc_add_me.html">desc_add_me</a></td>
+<td>Add the current user as an author to DESCRIPTION</td></tr>
+<tr><td style="width: 25%;"><a href="desc_add_orcid.html">desc_add_orcid</a></td>
+<td>Add an ORCID to one or more authors in Authors@R, in DESCRIPTION</td></tr>
+<tr><td style="width: 25%;"><a href="desc_add_remotes.html">desc_add_remotes</a></td>
+<td>Add locations in the Remotes field in DESCRIPTION</td></tr>
+<tr><td style="width: 25%;"><a href="desc_add_role.html">desc_add_role</a></td>
+<td>Add a role to one or more authors in Authors@R, in DESCRIPTION</td></tr>
+<tr><td style="width: 25%;"><a href="desc_add_to_collate.html">desc_add_to_collate</a></td>
+<td>Add one or more files to the Collate field, in DESCRIPTION</td></tr>
+<tr><td style="width: 25%;"><a href="desc_add_urls.html">desc_add_urls</a></td>
+<td>Add URLs to the URL field in DESCRIPTION</td></tr>
+<tr><td style="width: 25%;"><a href="desc_bump_version.html">desc_bump_version</a></td>
+<td>Increase the version number in DESCRIPTION</td></tr>
+<tr><td style="width: 25%;"><a href="desc_change_maintainer.html">desc_change_maintainer</a></td>
+<td>Change maintainer of the package, in DESCRIPTION</td></tr>
+<tr><td style="width: 25%;"><a href="desc_clear_remotes.html">desc_clear_remotes</a></td>
+<td>Remove all locations from the Remotes field of DESCRIPTION</td></tr>
+<tr><td style="width: 25%;"><a href="desc_clear_urls.html">desc_clear_urls</a></td>
+<td>Remove all URLs from the URL field of DESCRIPTION</td></tr>
+<tr><td style="width: 25%;"><a href="desc_coerce_authors_at_r.html">desc_coerce_authors_at_r</a></td>
+<td>Coerce Author and Maintainer Fields to Authors@R</td></tr>
+<tr><td style="width: 25%;"><a href="desc_del.html">desc_del</a></td>
+<td>Remove fields from a DESCRIPTION file</td></tr>
+<tr><td style="width: 25%;"><a href="desc_del_author.html">desc_del_author</a></td>
+<td>Remove one or more authors from DESCRIPTION.</td></tr>
+<tr><td style="width: 25%;"><a href="desc_del_collate.html">desc_del_collate</a></td>
+<td>Delete the Collate field from DESCRIPTION</td></tr>
+<tr><td style="width: 25%;"><a href="desc_del_dep.html">desc_del_dep</a></td>
+<td>Remove a package dependency from DESCRIPTION</td></tr>
+<tr><td style="width: 25%;"><a href="desc_del_deps.html">desc_del_deps</a></td>
+<td>Remove all dependencies from DESCRIPTION</td></tr>
+<tr><td style="width: 25%;"><a href="desc_del_from_collate.html">desc_del_from_collate</a></td>
+<td>Remove files from the Collate field.</td></tr>
+<tr><td style="width: 25%;"><a href="desc_del_remotes.html">desc_del_remotes</a></td>
+<td>Delete locations from the Remotes field in DESCRIPTION</td></tr>
+<tr><td style="width: 25%;"><a href="desc_del_role.html">desc_del_role</a></td>
+<td>Delete a role of an author, in DESCRIPTION</td></tr>
+<tr><td style="width: 25%;"><a href="desc_del_urls.html">desc_del_urls</a></td>
+<td>Delete URLs from the URL field in DESCRIPTION</td></tr>
+<tr><td style="width: 25%;"><a href="desc_fields.html">desc_fields</a></td>
+<td>List all fields in a DESCRIPTION file</td></tr>
+<tr><td style="width: 25%;"><a href="desc_get.html">desc_get</a></td>
+<td>Get a field from a DESCRIPTION file</td></tr>
+<tr><td style="width: 25%;"><a href="desc_get_author.html">desc_get_author</a></td>
+<td>Query authors by role in Authors@R, in DESCRIPTION</td></tr>
+<tr><td style="width: 25%;"><a href="desc_get_authors.html">desc_get_authors</a></td>
+<td>Query all authors in Authors@R, in DESCRIPTION</td></tr>
+<tr><td style="width: 25%;"><a href="desc_get_built.html">desc_get_built</a></td>
+<td>Query the built field in DESCRIPTION</td></tr>
+<tr><td style="width: 25%;"><a href="desc_get_collate.html">desc_get_collate</a></td>
+<td>Query the Collate field in DESCRIPTION</td></tr>
+<tr><td style="width: 25%;"><a href="desc_get_deps.html">desc_get_deps</a></td>
+<td>List all package dependencies from a DESCRIPTION file</td></tr>
+<tr><td style="width: 25%;"><a href="desc_get_field.html">desc_get_field</a></td>
+<td>Get a single field from a DESCRIPTION file, fail if not found</td></tr>
+<tr><td style="width: 25%;"><a href="desc_get_field.html">desc_get_list</a></td>
+<td>Get a single field from a DESCRIPTION file, fail if not found</td></tr>
+<tr><td style="width: 25%;"><a href="desc_get_maintainer.html">desc_get_maintainer</a></td>
+<td>Query the package maintainer in DESCRIPTION</td></tr>
+<tr><td style="width: 25%;"><a href="desc_get_field.html">desc_get_or_fail</a></td>
+<td>Get a single field from a DESCRIPTION file, fail if not found</td></tr>
+<tr><td style="width: 25%;"><a href="desc_get_remotes.html">desc_get_remotes</a></td>
+<td>List the locations in the Remotes field in DESCRIPTION</td></tr>
+<tr><td style="width: 25%;"><a href="desc_get_urls.html">desc_get_urls</a></td>
+<td>Query the URL field in DESCRIPTION</td></tr>
+<tr><td style="width: 25%;"><a href="desc_get_version.html">desc_get_version</a></td>
+<td>Query the package version in DESCRIPTION</td></tr>
+<tr><td style="width: 25%;"><a href="desc_has_dep.html">desc_has_dep</a></td>
+<td>Check for a dependency</td></tr>
+<tr><td style="width: 25%;"><a href="desc_has_fields.html">desc_has_fields</a></td>
+<td>Check if some fields are present in a DESCRIPTION file</td></tr>
+<tr><td style="width: 25%;"><a href="desc_normalize.html">desc_normalize</a></td>
+<td>Normalize a DESCRIPTION file</td></tr>
+<tr><td style="width: 25%;"><a href="desc_print.html">desc_print</a></td>
+<td>Print the contents of a DESCRIPTION file to the screen</td></tr>
+<tr><td style="width: 25%;"><a href="desc_reformat_fields.html">desc_reformat_fields</a></td>
+<td>Reformat fields in a DESCRIPTION file</td></tr>
+<tr><td style="width: 25%;"><a href="desc_reorder_fields.html">desc_reorder_fields</a></td>
+<td>Reorder fields in a DESCRIPTION file</td></tr>
+<tr><td style="width: 25%;"><a href="desc_set.html">desc_set</a></td>
+<td>Set one or more fields in a DESCRIPTION file</td></tr>
+<tr><td style="width: 25%;"><a href="desc_set_authors.html">desc_set_authors</a></td>
+<td>Set authors in Authors@R, in DESCRIPTION</td></tr>
+<tr><td style="width: 25%;"><a href="desc_set_collate.html">desc_set_collate</a></td>
+<td>Set the Collate field in DESCRIPTION</td></tr>
+<tr><td style="width: 25%;"><a href="desc_set_dep.html">desc_set_dep</a></td>
+<td>Add a package dependency to a DESCRIPTION file</td></tr>
+<tr><td style="width: 25%;"><a href="desc_set_deps.html">desc_set_deps</a></td>
+<td>Set all package dependencies in DESCRIPTION</td></tr>
+<tr><td style="width: 25%;"><a href="desc_set.html">desc_set_list</a></td>
+<td>Set one or more fields in a DESCRIPTION file</td></tr>
+<tr><td style="width: 25%;"><a href="desc_set_remotes.html">desc_set_remotes</a></td>
+<td>Set the Remotes field in DESCRIPTION</td></tr>
+<tr><td style="width: 25%;"><a href="desc_set_urls.html">desc_set_urls</a></td>
+<td>Set the URL field in DESCRIPTION</td></tr>
+<tr><td style="width: 25%;"><a href="desc_set_version.html">desc_set_version</a></td>
+<td>Set the package version in DESCRIPTION</td></tr>
+<tr><td style="width: 25%;"><a href="desc_to_latex.html">desc_to_latex</a></td>
+<td>Converts a DESCRIPTION file to LaTeX</td></tr>
+<tr><td style="width: 25%;"><a href="desc_validate.html">desc_validate</a></td>
+<td>Validate a DESCRIPTION file</td></tr>
+</table>
+</div></body></html>
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/desc/Meta/Rd.rds
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/desc/Meta/Rd.rds
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/desc/Meta/package.rds
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/desc/Meta/package.rds
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/desc/Meta/nsInfo.rds
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/desc/Meta/nsInfo.rds
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/desc/Meta/hsearch.rds
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/desc/Meta/hsearch.rds
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/desc/Meta/features.rds
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/desc/Meta/features.rds
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/desc/Meta/links.rds
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/desc/Meta/links.rds
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/themer/themer.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/themer/themer.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/themer/themer.scss	(revision 3762)
@@ -0,0 +1,20 @@
+#bsthemerToggle {
+  padding: 0 5px;
+  margin-right: -5px;
+}
+#bsthemerToggle span {
+  @include caret(up);
+}
+#bsthemerToggle.collapsed span {
+  @include caret(down);
+}
+
+.move-grabber {
+  cursor: move;
+  /* Required to avoid scrolling on mobile safari */
+  touch-action: none;
+  -webkit-touch-action: none;
+  -moz-touch-action: none;
+  -ms-touch-action: none;
+  -o-touch-action: none;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/themer/themer.js
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/themer/themer.js	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/themer/themer.js	(revision 3762)
@@ -0,0 +1,398 @@
+// TODO: Invalid values shouldn't just stop event from propagating, they should
+// also not be sent to the server if a different input has a validinput event.
+
+(function($) {
+  // From Shiny
+  function debounce(threshold, func) {
+    var timerId = null;
+    var self, args;
+    return function () {
+      self = this;
+      args = arguments;
+      if (timerId !== null) {
+        clearTimeout(timerId);
+        timerId = null;
+      }
+      timerId = setTimeout(function () {
+        // IE8 doesn't reliably clear timeout, so this additional
+        // check is needed
+        if (timerId === null) return;
+        timerId = null;
+        func.apply(self, args);
+      }, threshold);
+    };
+  }
+
+  var debouncedSetInputValue = debounce(750, function() {
+    Shiny.setInputValue.apply(Shiny, arguments);
+  });
+
+  function resetColors(input) {
+    $(input).css("background-color", "");
+    $(input).css("color", "");
+  }
+
+  function showError(input, message) {
+    resetColors(input);
+    $(input).addClass("is-invalid");
+  }
+
+  function clearError(input) {
+    $(input).removeClass("is-invalid");
+  }
+
+  function yiq_light(red, green, blue) {
+    return (red * 299 + green * 587 + blue * 114) / 1000 >= 128;
+  }
+
+  function parseColor(color) {
+    // Drop whitespace:
+    color = color
+      .replace(/\s*,\s*/g, ",") // around commas
+      .replace(/\(\s+/g, "(")   // after open-parens
+      .replace(/\s+\)/, ")")    // before close-parens
+      .replace(/^\s+/, "")      // at the start
+      .replace(/\s+$/, "");     // at the end
+
+    var keywords = {
+  "aliceblue": "#F0F8FF", "antiquewhite": "#FAEBD7", "aqua": "#00FFFF", "aquamarine": "#7FFFD4", "azure": "#F0FFFF", "beige": "#F5F5DC", "bisque": "#FFE4C4", "black": "#000000", "blanchedalmond": "#FFEBCD", "blue": "#0000FF", "blueviolet": "#8A2BE2", "brown": "#A52A2A", "burlywood": "#DEB887", "cadetblue": "#5F9EA0", "chartreuse": "#7FFF00", "chocolate": "#D2691E", "coral": "#FF7F50", "cornflowerblue": "#6495ED", "cornsilk": "#FFF8DC", "crimson": "#DC143C", "cyan": "#00FFFF", "darkblue": "#00008B", "darkcyan": "#008B8B", "darkgoldenrod": "#B8860B", "darkgray": "#A9A9A9", "darkgreen": "#006400", "darkgrey": "#A9A9A9", "darkkhaki": "#BDB76B", "darkmagenta": "#8B008B", "darkolivegreen": "#556B2F", "darkorange": "#FF8C00", "darkorchid": "#9932CC", "darkred": "#8B0000", "darksalmon": "#E9967A", "darkseagreen": "#8FBC8F", "darkslateblue": "#483D8B", "darkslategray": "#2F4F4F", "darkslategrey": "#2F4F4F", "darkturquoise": "#00CED1", "darkviolet": "#9400D3", "deeppink": "#FF1493", "deepskyblue": "#00BFFF", "dimgray": "#696969", "dimgrey": "#696969", "dodgerblue": "#1E90FF", "firebrick": "#B22222", "floralwhite": "#FFFAF0", "forestgreen": "#228B22", "fuchsia": "#FF00FF", "gainsboro": "#DCDCDC", "ghostwhite": "#F8F8FF", "gold": "#FFD700", "goldenrod": "#DAA520", "gray": "#808080", "green": "#008000", "greenyellow": "#ADFF2F", "grey": "#808080", "honeydew": "#F0FFF0", "hotpink": "#FF69B4", "indianred": "#CD5C5C", "indigo": "#4B0082", "ivory": "#FFFFF0", "khaki": "#F0E68C", "lavender": "#E6E6FA", "lavenderblush": "#FFF0F5", "lawngreen": "#7CFC00", "lemonchiffon": "#FFFACD", "lightblue": "#ADD8E6", "lightcoral": "#F08080", "lightcyan": "#E0FFFF", "lightgoldenrodyellow": "#FAFAD2", "lightgray": "#D3D3D3", "lightgreen": "#90EE90", "lightgrey": "#D3D3D3", "lightpink": "#FFB6C1", "lightsalmon": "#FFA07A", "lightseagreen": "#20B2AA", "lightskyblue": "#87CEFA", "lightslategray": "#778899", "lightslategrey": "#778899", "lightsteelblue": "#B0C4DE", "lightyellow": "#FFFFE0", "lime": "#00FF00", "limegreen": "#32CD32", "linen": "#FAF0E6", "magenta": "#FF00FF", "maroon": "#800000", "mediumaquamarine": "#66CDAA", "mediumblue": "#0000CD", "mediumorchid": "#BA55D3", "mediumpurple": "#9370DB", "mediumseagreen": "#3CB371", "mediumslateblue": "#7B68EE", "mediumspringgreen": "#00FA9A", "mediumturquoise": "#48D1CC", "mediumvioletred": "#C71585", "midnightblue": "#191970", "mintcream": "#F5FFFA", "mistyrose": "#FFE4E1", "moccasin": "#FFE4B5", "navajowhite": "#FFDEAD", "navy": "#000080", "oldlace": "#FDF5E6", "olive": "#808000", "olivedrab": "#6B8E23", "orange": "#FFA500", "orangered": "#FF4500", "orchid": "#DA70D6", "palegoldenrod": "#EEE8AA", "palegreen": "#98FB98", "paleturquoise": "#AFEEEE", "palevioletred": "#DB7093", "papayawhip": "#FFEFD5", "peachpuff": "#FFDAB9", "peru": "#CD853F", "pink": "#FFC0CB", "plum": "#DDA0DD", "powderblue": "#B0E0E6", "purple": "#800080", "rebeccapurple": "#663399", "red": "#FF0000", "rosybrown": "#BC8F8F", "royalblue": "#4169E1", "saddlebrown": "#8B4513", "salmon": "#FA8072", "sandybrown": "#F4A460", "seagreen": "#2E8B57", "seashell": "#FFF5EE", "sienna": "#A0522D", "silver": "#C0C0C0", "skyblue": "#87CEEB", "slateblue": "#6A5ACD", "slategray": "#708090", "slategrey": "#708090", "snow": "#FFFAFA", "springgreen": "#00FF7F", "steelblue": "#4682B4", "tan": "#D2B48C", "teal": "#008080", "thistle": "#D8BFD8", "tomato": "#FF6347", "turquoise": "#40E0D0", "violet": "#EE82EE", "wheat": "#F5DEB3", "white": "#FFFFFF", "whitesmoke": "#F5F5F5", "yellow": "#FFFF00", "yellowgreen": "#9ACD32"
+};
+    if (keywords[color]) {
+      color = keywords[color];
+    }
+
+    var m;
+    m = /^#([A-Za-z0-9]{2})([A-Za-z0-9]{2})([A-Za-z0-9]{2})$/.exec(color);
+    if (m) {
+      return {
+        red: parseInt(m[1], 16),
+        green: parseInt(m[2], 16),
+        blue: parseInt(m[3], 16)
+      };
+    }
+    m = /^#([A-Za-z0-9]{2})([A-Za-z0-9]{2})([A-Za-z0-9]{2})([A-Za-z0-9]{2})$/.exec(color);
+    if (m) {
+      return {
+        red: parseInt(m[1], 16),
+        green: parseInt(m[2], 16),
+        blue: parseInt(m[3], 16),
+        alpha: parseInt(m[4], 16) / 255
+      };
+    }
+    m = /^#([A-Za-z0-9])([A-Za-z0-9])([A-Za-z0-9])$/.exec(color);
+    if (m) {
+      return {
+        red: parseInt(m[1], 16) * 0x11,
+        green: parseInt(m[2], 16) * 0x11,
+        blue: parseInt(m[3], 16) * 0x11
+      };
+    }
+    m = /^#([A-Za-z0-9])([A-Za-z0-9])([A-Za-z0-9])([A-Za-z0-9])$/.exec(color);
+    if (m) {
+      return {
+        red: parseInt(m[1], 16) * 0x11,
+        green: parseInt(m[2], 16) * 0x11,
+        blue: parseInt(m[3], 16) * 0x11,
+        alpha: parseInt(m[4], 16) * 0x11 / 255
+      };
+    }
+    m = /^rgba?\((\d+),(\d+),(\d+)\)$/.exec(color);
+    if (m) {
+      return {
+        red: parseInt(m[1]),
+        green: parseInt(m[2]),
+        blue: parseInt(m[3])
+      };
+    }
+    m = /^rgba?\((\d+),(\d+),(\d+),(\d*\.?\d*)\)$/.exec(color);
+    if (m) {
+      if (!isNaN(parseFloat(m[4]))) {
+        return {
+          red: parseInt(m[1]),
+          green: parseInt(m[2]),
+          blue: parseInt(m[3]),
+          alpha: parseFloat(m[4])
+        };
+      } else {
+        return {
+          red: parseInt(m[1]),
+          green: parseInt(m[2]),
+          blue: parseInt(m[3])
+        };
+      }
+    }
+
+    return null;
+  }
+
+  function colorsEquivalent(colorStrA, colorStrB) {
+    var colorA = parseColor(colorStrA);
+    var colorB = parseColor(colorStrB);
+    if (!colorA || !colorB) {
+      // Don't consider invalid colors equivalent
+      return false;
+    }
+
+    return JSON.stringify(colorA) === JSON.stringify(colorB);
+  }
+
+  function syncColors(inputEl) {
+    var color = inputEl.value;
+
+    // TODO: Trim color?
+    clearError(inputEl);
+
+    var parsedColor = parseColor(color);
+
+    if (!parsedColor) {
+      showError(inputEl, null);
+      return false;
+    }
+
+    var { red, green, blue } = parsedColor;
+    var text_color = yiq_light(red, green, blue) ? "#333333" : "#FFFFFF";
+    $(inputEl).css("color", text_color);
+    $(inputEl).css("background-color", color);
+    return color;
+  }
+
+  $(document).on("colorpickerChange.bsthemer", ".bs-theme-value-color", function(e) {
+    var newColor = $(e.target).colorpicker("getValue");
+    if (colorsEquivalent(newColor, e.target.value)) {
+      return;
+    }
+    e.target.value = newColor;
+    syncColors(e.target);
+    $(e.target).trigger("validinput");
+  });
+  $(document).on("input.bsthemer", ".bs-theme-value-color", function(e) {
+    var origValue = e.target.value;
+    var color = syncColors(e.target);
+    if (color) {
+      $(e.target).colorpicker("setValue", color);
+      // I can't stop "setValue" from modifying e.target.value, but I can
+      // immediately undo it. For example, setting color to #FFFFAA, then
+      // backspacing it to #FFF, without this change it's expanded out to
+      // #FFFFFF automatically which is disruptive to the user while typing.
+      e.target.value = origValue;
+      $(e.target).trigger("validinput");
+    }
+  });
+
+  function initColorInput(el) {
+    var origValue = el.value;
+    syncColors(el);
+    $(el).colorpicker({
+      autoInputFallback: false
+    });
+    // needed to prevent the colorpicker() call we just performed
+    // from normalizing the value, e.g. #fff becomes #FFFFFF, which
+    // then makes it hard to know which values actually changed
+    el.value = origValue;
+    // bootstrap-colorpicker is too aggressive in handling changes to the
+    // text input. It replaces #ABC with #AABBCC, and it's very hard to
+    // make it stop. Instead, we just stop it from listening to the input
+    // and handle the events ourselves.
+    $(el).off("keyup.colorpicker");
+    $(el).off("change.colorpicker");
+  }
+
+  $(document).on("change.bsthemer click.bsthemer", ".bs-theme-value-bool", function(e) {
+    $(e.target).trigger("validinput");
+  });
+
+  function initBoolInput(el) {
+  }
+
+  $(document).on("input.bsthemer", ".bs-theme-value-str", function(e) {
+    $(e.target).trigger("validinput");
+  });
+
+  function initStrInput(el) {
+    // Starting with BS5, some Sass variables hold CSS variables (e.g. $font-family-base)
+    if (el.value.match(/var\(--/)) {
+      const bodyStyles = getComputedStyle(document.body);
+      const cssVar = el.value.replace('var(', '').replace(')', '');
+      const val = bodyStyles.getPropertyValue(cssVar);
+      el.value = val;
+    }
+  }
+
+  $(document).on("change", ".bs-theme-value-select", function(e) {
+    var select = $(e.target);
+    if (select.data("id") === "bootswatch") {
+      Shiny.setInputValue("bs_theme_bootswatch", select.val());
+    } else {
+      select.trigger("validinput");
+    }
+  });
+
+  function initSelectInput(el) {
+  }
+
+  $(document).on("input.bsthemer", ".bs-theme-value-length", function(e) {
+    // TODO: Maybe validate length?
+    $(e.target).trigger("validinput");
+  });
+
+  function initLengthInput(el) {
+  }
+
+  $(function() {
+    $(".bs-theme-value-color").each(function(i, el) {
+      initColorInput(el);
+    });
+    $(".bs-theme-value-bool").each(function(i, el) {
+      initBoolInput(el);
+    });
+    $(".bs-theme-value-str").each(function(i, el) {
+      initStrInput(el);
+    });
+    $(".bs-theme-value-select").each(function(i, el) {
+      initSelectInput(el);
+    });
+    $(".bs-theme-value-length").each(function(i, el) {
+      initLengthInput(el);
+    });
+  });
+
+  $(document).on("validinput", ".bs-theme-value", function(e) {
+    if (syncing) return;
+    var values = {};
+    $(".bs-theme-value-color, .bs-theme-value-str, .bs-theme-value-select, .bs-theme-value-length").each(function() {
+      values[$(this).data("id")] = $(this).val();
+    });
+    $(".bs-theme-value-bool").each(function() {
+      values[$(this).data("id")] = this.checked;
+    });
+    Object.keys(values).forEach(function(key) {
+      if (typeof(values[key]) === "string" && /^\s*$/.test(values[key])) {
+        // Empty strings cause crashes in sass; nulls are safely omitted
+        values[key] = null;
+      }
+    });
+    debouncedSetInputValue.call(Shiny, "bs_theme_vars", JSON.stringify(values));
+  });
+
+  // When the Bootswatch theme changes, apply new input defaults
+  var syncing = false;
+  Shiny.addCustomMessageHandler("bs-themer-bootswatch", function(msg) {
+    syncing = true;
+    var vals = msg.values;
+    var keys = Object.keys(vals);
+    var themer = $("#bsthemerContainer");
+    for (var i = 0; i < keys.length; i++) {
+      var key = keys[i];
+      var val = vals[key];
+      var input = themer.find(".bs-theme-value[data-id='" + key + "']");
+      if (input.hasClass("bs-theme-value-bool")) {
+        input.prop('checked', JSON.parse(val));
+      } else {
+        input.val(val);
+      }
+      if (input.data("colorpicker")) {
+        input.colorpicker("setValue", val);
+        syncColors(input[0]);
+      }
+    }
+    syncing = false;
+  })
+
+  /*** Begin dragging logic ***/
+
+  var active_move_grabber = null;
+  var active_move_target = null;
+  var active_move_offset = null;
+
+  $(document).on("pointerdown", ".move-grabber", function(e) {
+    e.preventDefault();
+
+    active_move_grabber = e.target;
+    active_move_target = $(document).find(e.target.dataset.target)[0];
+    active_move_offset = {
+      x: e.clientX - active_move_target.offsetLeft,
+      y: e.clientY - active_move_target.offsetTop
+    };
+
+    if (active_move_grabber.setPointerCapture) {
+      active_move_grabber.setPointerCapture(e.pointerId);
+    }
+  });
+
+  $(document).on("pointermove", function(e) {
+    if (!active_move_grabber) {
+      return;
+    }
+    active_move_target.style.left = (e.clientX - active_move_offset.x) + "px";
+    active_move_target.style.top = (e.clientY - active_move_offset.y) + "px";
+    active_move_target.style.right = "auto";
+    active_move_target.style.bottom = "auto";
+
+    constrain(active_move_target);
+  });
+
+  $(document).on("pointerup", ".move-grabber", function(e) {
+    if (!active_move_grabber) {
+      return;
+    }
+
+    if (active_move_grabber.setPointerCapture) {
+      active_move_grabber.releasePointerCapture(e.pointerId);
+    }
+    active_move_grabber = null;
+    active_move_target = null;
+    active_move_offset = null;
+  });
+
+  /**
+   * Takes the given absolutely positioned element, and determines which corner
+   * of its offsetParent it's closest to (unless its offsetParent is a body tag,
+   * in which case we use the browser's viewport). The element's position is
+   * anchored to its closest corner, so that resizing the browser causes the
+   * element to stay in view. It also makes sure that the entire element is
+   * visible.
+   */
+  function constrain(el) {
+    var parent = el.offsetParent;
+    // RStudio viewer gives null offsetParent??
+    if (!parent || parent.tagName === "BODY") {
+      // If the element is parented by the body, look at the top-level html tag
+      // instead; its clientWidth/Height is the browser's viewport, a special
+      // case.
+      parent = document.documentElement;
+    }
+
+    var parentBounds = {
+      top: 0,
+      right: parent.clientWidth,
+      bottom: parent.clientHeight,
+      left: 0
+    };
+
+    var elBounds = {
+      top: el.offsetTop,
+      right: parentBounds.right - (el.offsetLeft + el.offsetWidth),
+      bottom: parentBounds.bottom - (el.offsetTop + el.offsetHeight),
+      left: el.offsetLeft
+    };
+
+    if (elBounds.top <= elBounds.bottom) {
+      el.style.top = Math.max(0, elBounds.top) + "px";
+      el.style.bottom = "auto";
+    } else {
+      el.style.top = "auto";
+      el.style.bottom = Math.max(0, elBounds.bottom) + "px";
+    }
+    if (elBounds.left <= elBounds.right) {
+      el.style.left = Math.max(0, elBounds.left) + "px";
+      el.style.right = "auto";
+    } else {
+      el.style.left = "auto";
+      el.style.right = Math.max(0, elBounds.right) + "px";
+    }
+  }
+
+  /*** End dragging logic ***/
+
+
+})(window.jQuery);
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/themer/options.json
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/themer/options.json	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/themer/options.json	(revision 3762)
@@ -0,0 +1,102 @@
+{
+  "Main colors": {
+    "bootswatch": {
+      "type": "select",
+      "label": "Overall theme",
+      // The inlined svg below is the info-circle Bootstrap icon https://icons.getbootstrap.com
+      "desc": "<svg width='1em' height='1.25em' viewBox='0 2 16 16' class='bi bi-info-circle' fill='currentColor' xmlns='http://www.w3.org/2000/svg'><path fill-rule='evenodd' d='M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z'/><path d='M8.93 6.588l-2.29.287-.082.38.45.083c.294.07.352.176.288.469l-.738 3.468c-.194.897.105 1.319.808 1.319.545 0 1.178-.252 1.465-.598l.088-.416c-.2.176-.492.246-.686.246-.275 0-.375-.193-.304-.533L8.93 6.588z'/><circle cx='8' cy='4.5' r='1'/></svg> Changing the overall (<a href='https://bootswatch.com'>Bootswatch</a>) theme may undo other theming changes."
+    },
+    "bg": {
+      "type": "color",
+      "label": "Background (bg) color"
+    },
+    "fg": {
+      "type": "color",
+      "label": "Foreground (fg) color"
+    }
+  },
+  "Accent colors": {
+    "primary": {
+      "type": "color",
+      "label": "Primary color",
+      "desc": "Links and highlighted navigation"
+    },
+    "secondary": {
+      "type": "color",
+      "label": "Secondary",
+      "desc": null
+    },
+    "success": {
+      "type": "color",
+      "label": "Success",
+      "desc": null
+    },
+    "info": {
+      "type": "color",
+      "label": "Info",
+      "desc": null
+    },
+    "warning": {
+      "type": "color",
+      "label": "Warning",
+      "desc": null
+    },
+    "danger": {
+      "type": "color",
+      "label": "Danger",
+      "desc": null
+    }
+  },
+  "Fonts": {
+    "font-family-base": {
+      "type": "str",
+      "label": "Base font",
+      "desc": "Try a <a href='https://fonts.google.com/?category=Sans+Serif'>San Serif</a> Google Font (e.g., Prompt)."
+    },
+    "font-family-monospace": {
+      "type": "str",
+      "label": "Code font",
+      "desc": "Try a <a href='https://fonts.google.com/?category=Monospace'>Monospace</a> Google Font"
+    },
+    "headings-font-family": {
+      "type": "str",
+      "label": "Heading font",
+      "desc": "Try a <a href='https://fonts.google.com/?category=Serif'>Serif</a> Google Font. Defaults to the base font family."
+    },
+    "font-size-base": {
+      "type": "number",
+      "step": "0.05",
+      "label": "Base font size",
+      "desc": "A scalar multiple to apply to all font sizes."
+    }
+  },
+  "Options": {
+    "enable-gradients": {
+      "type": "bool",
+      "label": "Gradient backgrounds",
+      "desc": null
+    },
+    "enable-shadows": {
+      "type": "bool",
+      "label": "Box shadows",
+      "desc": null
+    },
+    "enable-rounded": {
+      "type": "bool",
+      "label": "Rounded corners",
+      "desc": null
+    },
+    "enable-transitions": {
+      "type": "bool",
+      "label": "Transitions",
+      "desc": null
+    }
+  },
+  "Spacing": {
+    "spacer": {
+      "type": "length",
+      "label": "Spacer",
+      "desc": "Basic unit of spacing; affects margin and padding of many (but not all) Bootstrap components."
+    }
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/Meta/features.rds
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/Meta/features.rds
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/Meta/links.rds
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/Meta/links.rds
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/Meta/Rd.rds
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/Meta/Rd.rds
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/Meta/package.rds
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/Meta/package.rds
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/Meta/nsInfo.rds
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/Meta/nsInfo.rds
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/Meta/hsearch.rds
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/Meta/hsearch.rds
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/help/bslib.rdb
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/help/bslib.rdb
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/help/figures/rstudio-templates.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/help/figures/rstudio-templates.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/help/AnIndex
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/help/AnIndex	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/help/AnIndex	(revision 3762)
@@ -0,0 +1,89 @@
+as.card_item	card_body
+bootstrap	deprecated
+bootstrap_sass	deprecated
+bootswatch_themes	bootswatch_themes
+bs_add_declarations	deprecated
+bs_add_functions	bs_bundle
+bs_add_mixins	bs_bundle
+bs_add_rules	bs_bundle
+bs_add_variables	bs_bundle
+bs_bundle	bs_bundle
+bs_current_theme	bs_current_theme
+bs_dependency	bs_dependency
+bs_dependency_defer	bs_dependency
+bs_get_contrast	bs_get_variables
+bs_get_variables	bs_get_variables
+bs_global_add_rules	bs_global_theme
+bs_global_add_variables	bs_global_theme
+bs_global_bundle	bs_global_theme
+bs_global_clear	bs_global_theme
+bs_global_get	bs_global_theme
+bs_global_set	bs_global_theme
+bs_global_theme	bs_global_theme
+bs_global_theme_update	bs_global_theme
+bs_remove	bs_remove
+bs_retrieve	bs_remove
+bs_theme	bs_theme
+bs_themer	run_with_themer
+bs_theme_accent_colors	deprecated
+bs_theme_add	deprecated
+bs_theme_add_variables	deprecated
+bs_theme_base_colors	deprecated
+bs_theme_clear	deprecated
+bs_theme_dependencies	bs_theme_dependencies
+bs_theme_fonts	deprecated
+bs_theme_get	deprecated
+bs_theme_get_variables	deprecated
+bs_theme_new	deprecated
+bs_theme_preview	bs_theme_preview
+bs_theme_set	deprecated
+bs_theme_update	bs_theme
+card	card
+card_body	card_body
+card_body_fill	card_body
+card_footer	card_body
+card_header	card_body
+card_image	card_body
+card_title	card_body
+font_collection	font_face
+font_face	font_face
+font_google	font_face
+font_link	font_face
+is.card_item	card_body
+is_bs_theme	bs_theme
+layout_column_wrap	layout_column_wrap
+nav	nav
+navs_bar	navs
+navs_hidden	navs
+navs_pill	navs
+navs_pill_card	navs
+navs_pill_list	navs
+navs_tab	navs
+navs_tab_card	navs
+nav_append	nav_prepend
+nav_content	nav
+nav_hide	nav_select
+nav_insert	nav_select
+nav_item	nav
+nav_menu	nav
+nav_prepend	nav_prepend
+nav_remove	nav_select
+nav_select	nav_select
+nav_show	nav_select
+nav_spacer	nav
+page	page
+page_fill	page
+page_fixed	page
+page_fluid	page
+page_navbar	page
+precompiled_css_path	precompiled_css_path
+print.bslib_fragment	html-browse
+print.bslib_page	html-browse
+run_with_themer	run_with_themer
+showcase_left_center	value_box
+showcase_top_right	value_box
+theme_bootswatch	theme_bootswatch
+theme_version	theme_version
+value_box	value_box
+versions	versions
+version_default	versions
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/help/paths.rds
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/help/paths.rds
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/help/bslib.rdx
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/help/bslib.rdx
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/help/aliases.rds
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/help/aliases.rds
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/css-precompiled/3/bootstrap.min.css
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/css-precompiled/3/bootstrap.min.css	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/css-precompiled/3/bootstrap.min.css	(revision 3762)
@@ -0,0 +1 @@
+﻿/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,*:before,*:after{color:#000 !important;text-shadow:none !important;background:transparent !important;box-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}@font-face{font-family:"Glyphicons Halflings";src:url("glyphicon-fonts/glyphicons-halflings-regular.eot");src:url("glyphicon-fonts/glyphicons-halflings-regular.eot?#iefix") format("embedded-opentype"),url("glyphicon-fonts/glyphicons-halflings-regular.woff2") format("woff2"),url("glyphicon-fonts/glyphicons-halflings-regular.woff") format("woff"),url("glyphicon-fonts/glyphicons-halflings-regular.ttf") format("truetype"),url("glyphicon-fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular") format("svg")}.glyphicon{position:relative;top:1px;display:inline-block;font-family:"Glyphicons Halflings";font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:hover,a:focus{color:#2c689c;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role="button"]{cursor:pointer}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h1 .small,h2 small,h2 .small,h3 small,h3 .small,h4 small,h4 .small,h5 small,h5 .small,h6 small,h6 .small,.h1 small,.h1 .small,.h2 small,.h2 .small,.h3 small,.h3 .small,.h4 small,.h4 .small,.h5 small,.h5 .small,.h6 small,.h6 .small{font-weight:400;line-height:1;color:#777}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,h1 .small,.h1 small,.h1 .small,h2 small,h2 .small,.h2 small,.h2 .small,h3 small,h3 .small,.h3 small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,h4 .small,.h4 small,.h4 .small,h5 small,h5 .small,.h5 small,.h5 .small,h6 small,h6 .small,.h6 small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width: 768px){.lead{font-size:21px}}small,.small{font-size:85%}mark,.mark{padding:.2em;background-color:#fcefdc}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase,.initialism{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:hover,a.text-primary:focus{color:#2e6ea5}.text-success{color:#3e7b3e}a.text-success:hover,a.text-success:focus{color:#386f38}.text-info{color:#3b7d90}a.text-info:hover,a.text-info:focus{color:#357182}.text-warning{color:#90682f}a.text-warning:hover,a.text-warning:focus{color:#825e2a}.text-danger{color:#ae423f}a.text-danger:hover,a.text-danger:focus{color:#9d3b39}.bg-primary{color:#fff}.bg-primary{background-color:#337ab7}a.bg-primary:hover,a.bg-primary:focus{background-color:#2e6ea5}.bg-success{background-color:#def1de}a.bg-success:hover,a.bg-success:focus{background-color:#c8d9c8}.bg-info{background-color:#def2f8}a.bg-info:hover,a.bg-info:focus{background-color:#c8dadf}.bg-warning{background-color:#fcefdc}a.bg-warning:hover,a.bg-warning:focus{background-color:#e3d7c6}.bg-danger{background-color:#f7dddc}a.bg-danger:hover,a.bg-danger:focus{background-color:#dec7c6}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ul ol,ol ul,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857}dt{font-weight:700}dd{margin-left:0}.dl-horizontal dd:before,.dl-horizontal dd:after{display:table;content:" "}.dl-horizontal dd:after{clear:both}@media (min-width: 768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help}.initialism{font-size:90%}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857;color:#777}blockquote footer:before,blockquote small:before,blockquote .small:before{content:"\2014 \00A0"}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse footer:before,.blockquote-reverse small:before,.blockquote-reverse .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before,blockquote.pull-right .small:before{content:""}.blockquote-reverse footer:after,.blockquote-reverse small:after,.blockquote-reverse .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after,blockquote.pull-right .small:after{content:"\00A0 \2014"}address{margin-bottom:20px;font-style:normal;line-height:1.42857}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:inherit;background-color:#f5f5f5;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.container:before,.container:after{display:table;content:" "}.container:after{clear:both}@media (min-width: 768px){.container{width:750px}}@media (min-width: 992px){.container{width:970px}}@media (min-width: 1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.container-fluid:before,.container-fluid:after{display:table;content:" "}.container-fluid:after{clear:both}.row{margin-right:-15px;margin-left:-15px}.row:before,.row:after{display:table;content:" "}.row:after{clear:both}.row-no-gutters{margin-right:0;margin-left:0}.row-no-gutters [class*="col-"]{padding-right:0;padding-left:0}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-1{width:8.33333%}.col-xs-2{width:16.66667%}.col-xs-3{width:25%}.col-xs-4{width:33.33333%}.col-xs-5{width:41.66667%}.col-xs-6{width:50%}.col-xs-7{width:58.33333%}.col-xs-8{width:66.66667%}.col-xs-9{width:75%}.col-xs-10{width:83.33333%}.col-xs-11{width:91.66667%}.col-xs-12{width:100%}.col-xs-pull-0{right:auto}.col-xs-pull-1{right:8.33333%}.col-xs-pull-2{right:16.66667%}.col-xs-pull-3{right:25%}.col-xs-pull-4{right:33.33333%}.col-xs-pull-5{right:41.66667%}.col-xs-pull-6{right:50%}.col-xs-pull-7{right:58.33333%}.col-xs-pull-8{right:66.66667%}.col-xs-pull-9{right:75%}.col-xs-pull-10{right:83.33333%}.col-xs-pull-11{right:91.66667%}.col-xs-pull-12{right:100%}.col-xs-push-0{left:auto}.col-xs-push-1{left:8.33333%}.col-xs-push-2{left:16.66667%}.col-xs-push-3{left:25%}.col-xs-push-4{left:33.33333%}.col-xs-push-5{left:41.66667%}.col-xs-push-6{left:50%}.col-xs-push-7{left:58.33333%}.col-xs-push-8{left:66.66667%}.col-xs-push-9{left:75%}.col-xs-push-10{left:83.33333%}.col-xs-push-11{left:91.66667%}.col-xs-push-12{left:100%}.col-xs-offset-0{margin-left:0%}.col-xs-offset-1{margin-left:8.33333%}.col-xs-offset-2{margin-left:16.66667%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-4{margin-left:33.33333%}.col-xs-offset-5{margin-left:41.66667%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-7{margin-left:58.33333%}.col-xs-offset-8{margin-left:66.66667%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-10{margin-left:83.33333%}.col-xs-offset-11{margin-left:91.66667%}.col-xs-offset-12{margin-left:100%}@media (min-width: 768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-1{width:8.33333%}.col-sm-2{width:16.66667%}.col-sm-3{width:25%}.col-sm-4{width:33.33333%}.col-sm-5{width:41.66667%}.col-sm-6{width:50%}.col-sm-7{width:58.33333%}.col-sm-8{width:66.66667%}.col-sm-9{width:75%}.col-sm-10{width:83.33333%}.col-sm-11{width:91.66667%}.col-sm-12{width:100%}.col-sm-pull-0{right:auto}.col-sm-pull-1{right:8.33333%}.col-sm-pull-2{right:16.66667%}.col-sm-pull-3{right:25%}.col-sm-pull-4{right:33.33333%}.col-sm-pull-5{right:41.66667%}.col-sm-pull-6{right:50%}.col-sm-pull-7{right:58.33333%}.col-sm-pull-8{right:66.66667%}.col-sm-pull-9{right:75%}.col-sm-pull-10{right:83.33333%}.col-sm-pull-11{right:91.66667%}.col-sm-pull-12{right:100%}.col-sm-push-0{left:auto}.col-sm-push-1{left:8.33333%}.col-sm-push-2{left:16.66667%}.col-sm-push-3{left:25%}.col-sm-push-4{left:33.33333%}.col-sm-push-5{left:41.66667%}.col-sm-push-6{left:50%}.col-sm-push-7{left:58.33333%}.col-sm-push-8{left:66.66667%}.col-sm-push-9{left:75%}.col-sm-push-10{left:83.33333%}.col-sm-push-11{left:91.66667%}.col-sm-push-12{left:100%}.col-sm-offset-0{margin-left:0%}.col-sm-offset-1{margin-left:8.33333%}.col-sm-offset-2{margin-left:16.66667%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-4{margin-left:33.33333%}.col-sm-offset-5{margin-left:41.66667%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-7{margin-left:58.33333%}.col-sm-offset-8{margin-left:66.66667%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-10{margin-left:83.33333%}.col-sm-offset-11{margin-left:91.66667%}.col-sm-offset-12{margin-left:100%}}@media (min-width: 992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-1{width:8.33333%}.col-md-2{width:16.66667%}.col-md-3{width:25%}.col-md-4{width:33.33333%}.col-md-5{width:41.66667%}.col-md-6{width:50%}.col-md-7{width:58.33333%}.col-md-8{width:66.66667%}.col-md-9{width:75%}.col-md-10{width:83.33333%}.col-md-11{width:91.66667%}.col-md-12{width:100%}.col-md-pull-0{right:auto}.col-md-pull-1{right:8.33333%}.col-md-pull-2{right:16.66667%}.col-md-pull-3{right:25%}.col-md-pull-4{right:33.33333%}.col-md-pull-5{right:41.66667%}.col-md-pull-6{right:50%}.col-md-pull-7{right:58.33333%}.col-md-pull-8{right:66.66667%}.col-md-pull-9{right:75%}.col-md-pull-10{right:83.33333%}.col-md-pull-11{right:91.66667%}.col-md-pull-12{right:100%}.col-md-push-0{left:auto}.col-md-push-1{left:8.33333%}.col-md-push-2{left:16.66667%}.col-md-push-3{left:25%}.col-md-push-4{left:33.33333%}.col-md-push-5{left:41.66667%}.col-md-push-6{left:50%}.col-md-push-7{left:58.33333%}.col-md-push-8{left:66.66667%}.col-md-push-9{left:75%}.col-md-push-10{left:83.33333%}.col-md-push-11{left:91.66667%}.col-md-push-12{left:100%}.col-md-offset-0{margin-left:0%}.col-md-offset-1{margin-left:8.33333%}.col-md-offset-2{margin-left:16.66667%}.col-md-offset-3{margin-left:25%}.col-md-offset-4{margin-left:33.33333%}.col-md-offset-5{margin-left:41.66667%}.col-md-offset-6{margin-left:50%}.col-md-offset-7{margin-left:58.33333%}.col-md-offset-8{margin-left:66.66667%}.col-md-offset-9{margin-left:75%}.col-md-offset-10{margin-left:83.33333%}.col-md-offset-11{margin-left:91.66667%}.col-md-offset-12{margin-left:100%}}@media (min-width: 1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-1{width:8.33333%}.col-lg-2{width:16.66667%}.col-lg-3{width:25%}.col-lg-4{width:33.33333%}.col-lg-5{width:41.66667%}.col-lg-6{width:50%}.col-lg-7{width:58.33333%}.col-lg-8{width:66.66667%}.col-lg-9{width:75%}.col-lg-10{width:83.33333%}.col-lg-11{width:91.66667%}.col-lg-12{width:100%}.col-lg-pull-0{right:auto}.col-lg-pull-1{right:8.33333%}.col-lg-pull-2{right:16.66667%}.col-lg-pull-3{right:25%}.col-lg-pull-4{right:33.33333%}.col-lg-pull-5{right:41.66667%}.col-lg-pull-6{right:50%}.col-lg-pull-7{right:58.33333%}.col-lg-pull-8{right:66.66667%}.col-lg-pull-9{right:75%}.col-lg-pull-10{right:83.33333%}.col-lg-pull-11{right:91.66667%}.col-lg-pull-12{right:100%}.col-lg-push-0{left:auto}.col-lg-push-1{left:8.33333%}.col-lg-push-2{left:16.66667%}.col-lg-push-3{left:25%}.col-lg-push-4{left:33.33333%}.col-lg-push-5{left:41.66667%}.col-lg-push-6{left:50%}.col-lg-push-7{left:58.33333%}.col-lg-push-8{left:66.66667%}.col-lg-push-9{left:75%}.col-lg-push-10{left:83.33333%}.col-lg-push-11{left:91.66667%}.col-lg-push-12{left:100%}.col-lg-offset-0{margin-left:0%}.col-lg-offset-1{margin-left:8.33333%}.col-lg-offset-2{margin-left:16.66667%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-4{margin-left:33.33333%}.col-lg-offset-5{margin-left:41.66667%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-7{margin-left:58.33333%}.col-lg-offset-8{margin-left:66.66667%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-10{margin-left:83.33333%}.col-lg-offset-11{margin-left:91.66667%}.col-lg-offset-12{margin-left:100%}}table{background-color:rgba(0,0,0,0)}table col[class*="col-"]{position:static;display:table-column;float:none}table td[class*="col-"],table th[class*="col-"]{position:static;display:table-cell;float:none}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>thead>tr>th,.table>thead>tr>td,.table>tbody>tr>th,.table>tbody>tr>td,.table>tfoot>tr>th,.table>tfoot>tr>td{padding:8px;line-height:1.42857;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>th,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}.table>thead>tr>td.active,.table>thead>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e9e9e9}.table>thead>tr>td.success,.table>thead>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th{background-color:#def1de}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d3e5d3}.table>thead>tr>td.info,.table>thead>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th{background-color:#def2f8}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#d3e6ec}.table>thead>tr>td.warning,.table>thead>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th{background-color:#fcefdc}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#efe3d1}.table>thead>tr>td.danger,.table>thead>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th{background-color:#f7dddc}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebd2d1}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width: 767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:none;appearance:none}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="radio"][disabled],input.disabled[type="radio"],fieldset[disabled] input[type="radio"],input[type="checkbox"][disabled],input.disabled[type="checkbox"],fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;-o-transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s}.form-control:focus{border-color:rgba(51,122,183,0.25);outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(51,122,183,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(51,122,183,0.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control::-ms-expand{background-color:transparent;border:0}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}@media screen and (-webkit-min-device-pixel-ratio: 0){input.form-control[type="date"],input.form-control[type="time"],input.form-control[type="datetime-local"],input.form-control[type="month"]{line-height:34px}input.input-sm[type="date"],.input-group-sm>.form-control[type="date"],.input-group-sm>.input-group-addon[type="date"],.input-group-sm>.input-group-btn>.btn[type="date"],.input-group-sm input[type="date"],input.input-sm[type="time"],.input-group-sm>.form-control[type="time"],.input-group-sm>.input-group-addon[type="time"],.input-group-sm>.input-group-btn>.btn[type="time"],.input-group-sm input[type="time"],input.input-sm[type="datetime-local"],.input-group-sm>.form-control[type="datetime-local"],.input-group-sm>.input-group-addon[type="datetime-local"],.input-group-sm>.input-group-btn>.btn[type="datetime-local"],.input-group-sm input[type="datetime-local"],input.input-sm[type="month"],.input-group-sm>.form-control[type="month"],.input-group-sm>.input-group-addon[type="month"],.input-group-sm>.input-group-btn>.btn[type="month"],.input-group-sm input[type="month"]{line-height:30px}input.input-lg[type="date"],.input-group-lg>.form-control[type="date"],.input-group-lg>.input-group-addon[type="date"],.input-group-lg>.input-group-btn>.btn[type="date"],.input-group-lg input[type="date"],input.input-lg[type="time"],.input-group-lg>.form-control[type="time"],.input-group-lg>.input-group-addon[type="time"],.input-group-lg>.input-group-btn>.btn[type="time"],.input-group-lg input[type="time"],input.input-lg[type="datetime-local"],.input-group-lg>.form-control[type="datetime-local"],.input-group-lg>.input-group-addon[type="datetime-local"],.input-group-lg>.input-group-btn>.btn[type="datetime-local"],.input-group-lg input[type="datetime-local"],input.input-lg[type="month"],.input-group-lg>.form-control[type="month"],.input-group-lg>.input-group-addon[type="month"],.input-group-lg>.input-group-btn>.btn[type="month"],.input-group-lg input[type="month"]{line-height:46px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio.disabled label,fieldset[disabled] .radio label,.checkbox.disabled label,fieldset[disabled] .checkbox label{cursor:not-allowed}.radio label,.checkbox label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-top:4px \9;margin-left:-20px}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.radio-inline.disabled,fieldset[disabled] .radio-inline,.checkbox-inline.disabled,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.input-group-lg>.form-control-static.form-control,.input-group-lg>.form-control-static.input-group-addon,.input-group-lg>.input-group-btn>.form-control-static.btn,.form-control-static.input-sm,.input-group-sm>.form-control-static.form-control,.input-group-sm>.form-control-static.input-group-addon,.input-group-sm>.input-group-btn>.form-control-static.btn{padding-right:0;padding-left:0}.input-sm,.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm,.input-group-sm>select.form-control,.input-group-sm>select.input-group-addon,.input-group-sm>.input-group-btn>select.btn{height:30px;line-height:30px}textarea.input-sm,.input-group-sm>textarea.form-control,.input-group-sm>textarea.input-group-addon,.input-group-sm>.input-group-btn>textarea.btn,select.input-sm[multiple],.input-group-sm>.form-control[multiple],.input-group-sm>.input-group-addon[multiple],.input-group-sm>.input-group-btn>.btn[multiple]{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm textarea.form-control,.form-group-sm select.form-control[multiple]{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg,.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33333;border-radius:6px}select.input-lg,.input-group-lg>select.form-control,.input-group-lg>select.input-group-addon,.input-group-lg>.input-group-btn>select.btn{height:46px;line-height:46px}textarea.input-lg,.input-group-lg>textarea.form-control,.input-group-lg>textarea.input-group-addon,.input-group-lg>.input-group-btn>textarea.btn,select.input-lg[multiple],.input-group-lg>.form-control[multiple],.input-group-lg>.input-group-addon[multiple],.input-group-lg>.input-group-btn>.btn[multiple]{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.33333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg textarea.form-control,.form-group-lg select.form-control[multiple]{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.33333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback,.input-group-lg>.form-control+.form-control-feedback,.input-group-lg>.input-group-addon+.form-control-feedback,.input-group-lg>.input-group-btn>.btn+.form-control-feedback,.input-group-lg+.form-control-feedback,.form-group-lg .form-control+.form-control-feedback{width:46px;height:46px;line-height:46px}.input-sm+.form-control-feedback,.input-group-sm>.form-control+.form-control-feedback,.input-group-sm>.input-group-addon+.form-control-feedback,.input-group-sm>.input-group-btn>.btn+.form-control-feedback,.input-group-sm+.form-control-feedback,.form-group-sm .form-control+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#3e7b3e}.has-success .form-control{border-color:#3e7b3e;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#386f38;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #659565;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #659565}.has-success .input-group-addon{color:#3e7b3e;background-color:#def1de;border-color:#3e7b3e}.has-success .form-control-feedback{color:#3e7b3e}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#90682f}.has-warning .form-control{border-color:#90682f;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#825e2a;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #a68659;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #a68659}.has-warning .input-group-addon{color:#90682f;background-color:#fcefdc;border-color:#90682f}.has-warning .form-control-feedback{color:#90682f}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#ae423f}.has-error .form-control{border-color:#ae423f;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#9d3b39;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #be6865;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #be6865}.has-error .input-group-addon{color:#ae423f;background-color:#f7dddc;border-color:#ae423f}.has-error .form-control-feedback{color:#ae423f}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#666}@media (min-width: 768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}.form-horizontal .form-group:before,.form-horizontal .form-group:after{display:table;content:" "}.form-horizontal .form-group:after{clear:both}@media (min-width: 768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width: 768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}}@media (min-width: 768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;white-space:nowrap;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;padding:6px 12px;font-size:14px;line-height:1.42857;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn.focus,.btn:active:focus,.btn.focus:active,.btn.active:focus,.btn.active.focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#333;text-decoration:none}.btn:active,.btn.active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);opacity:.65;-webkit-box-shadow:none;box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:focus,.btn-default.focus{color:#333;background-color:#e6e6e6;border-color:#999}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#b4b4b4}.btn-default:active,.btn-default.active,.open>.btn-default.dropdown-toggle{color:#333;background-color:#e6e6e6;background-image:none;border-color:#b4b4b4}.btn-default:active:hover,.btn-default:active:focus,.btn-default.focus:active,.btn-default.active:hover,.btn-default.active:focus,.btn-default.active.focus,.open>.btn-default.dropdown-toggle:hover,.open>.btn-default.dropdown-toggle:focus,.open>.btn-default.dropdown-toggle.focus{color:#333;background-color:#d4d4d4;border-color:#999}.btn-default.disabled:hover,.btn-default.disabled:focus,.btn-default.disabled.focus,.btn-default[disabled]:hover,.btn-default[disabled]:focus,.btn-default.focus[disabled],fieldset[disabled] .btn-default:hover,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default.focus{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#3174ae}.btn-primary:focus,.btn-primary.focus{color:#fff;background-color:#2e6ea5;border-color:#255783}.btn-primary:hover{color:#fff;background-color:#2e6ea5;border-color:#2b6699}.btn-primary:active,.btn-primary.active,.open>.btn-primary.dropdown-toggle{color:#fff;background-color:#2e6ea5;background-image:none;border-color:#2b6699}.btn-primary:active:hover,.btn-primary:active:focus,.btn-primary.focus:active,.btn-primary.active:hover,.btn-primary.active:focus,.btn-primary.active.focus,.open>.btn-primary.dropdown-toggle:hover,.open>.btn-primary.dropdown-toggle:focus,.open>.btn-primary.dropdown-toggle.focus{color:#fff;background-color:#2b6598;border-color:#255783}.btn-primary.disabled:hover,.btn-primary.disabled:focus,.btn-primary.disabled.focus,.btn-primary[disabled]:hover,.btn-primary[disabled]:focus,.btn-primary.focus[disabled],fieldset[disabled] .btn-primary:hover,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary.focus{background-color:#337ab7;border-color:#3174ae}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#57af57}.btn-success:focus,.btn-success.focus{color:#fff;background-color:#53a653;border-color:#418341}.btn-success:hover{color:#fff;background-color:#53a653;border-color:#4d9a4d}.btn-success:active,.btn-success.active,.open>.btn-success.dropdown-toggle{color:#fff;background-color:#53a653;background-image:none;border-color:#4d9a4d}.btn-success:active:hover,.btn-success:active:focus,.btn-success.focus:active,.btn-success.active:hover,.btn-success.active:focus,.btn-success.active.focus,.open>.btn-success.dropdown-toggle:hover,.open>.btn-success.dropdown-toggle:focus,.open>.btn-success.dropdown-toggle.focus{color:#fff;background-color:#4c994c;border-color:#418341}.btn-success.disabled:hover,.btn-success.disabled:focus,.btn-success.disabled.focus,.btn-success[disabled]:hover,.btn-success[disabled]:focus,.btn-success.focus[disabled],fieldset[disabled] .btn-success:hover,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success.focus{background-color:#5cb85c;border-color:#57af57}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#56b6d3}.btn-info:focus,.btn-info.focus{color:#fff;background-color:#52adc8;border-color:#41899e}.btn-info:hover{color:#fff;background-color:#52adc8;border-color:#4ca0ba}.btn-info:active,.btn-info.active,.open>.btn-info.dropdown-toggle{color:#fff;background-color:#52adc8;background-image:none;border-color:#4ca0ba}.btn-info:active:hover,.btn-info:active:focus,.btn-info.focus:active,.btn-info.active:hover,.btn-info.active:focus,.btn-info.active.focus,.open>.btn-info.dropdown-toggle:hover,.open>.btn-info.dropdown-toggle:focus,.open>.btn-info.dropdown-toggle.focus{color:#fff;background-color:#4c9fb8;border-color:#41899e}.btn-info.disabled:hover,.btn-info.disabled:focus,.btn-info.disabled.focus,.btn-info[disabled]:hover,.btn-info[disabled]:focus,.btn-info.focus[disabled],fieldset[disabled] .btn-info:hover,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info.focus{background-color:#5bc0de;border-color:#56b6d3}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#e4a44a}.btn-warning:focus,.btn-warning.focus{color:#fff;background-color:#d89c46;border-color:#ab7b38}.btn-warning:hover{color:#fff;background-color:#d89c46;border-color:#c99041}.btn-warning:active,.btn-warning.active,.open>.btn-warning.dropdown-toggle{color:#fff;background-color:#d89c46;background-image:none;border-color:#c99041}.btn-warning:active:hover,.btn-warning:active:focus,.btn-warning.focus:active,.btn-warning.active:hover,.btn-warning.active:focus,.btn-warning.active.focus,.open>.btn-warning.dropdown-toggle:hover,.open>.btn-warning.dropdown-toggle:focus,.open>.btn-warning.dropdown-toggle.focus{color:#fff;background-color:#c79041;border-color:#ab7b38}.btn-warning.disabled:hover,.btn-warning.disabled:focus,.btn-warning.disabled.focus,.btn-warning[disabled]:hover,.btn-warning[disabled]:focus,.btn-warning.focus[disabled],fieldset[disabled] .btn-warning:hover,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning.focus{background-color:#f0ad4e;border-color:#e4a44a}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#ce4f4b}.btn-danger:focus,.btn-danger.focus{color:#fff;background-color:#c34b47;border-color:#9b3b38}.btn-danger:hover{color:#fff;background-color:#c34b47;border-color:#b54642}.btn-danger:active,.btn-danger.active,.open>.btn-danger.dropdown-toggle{color:#fff;background-color:#c34b47;background-image:none;border-color:#b54642}.btn-danger:active:hover,.btn-danger:active:focus,.btn-danger.focus:active,.btn-danger.active:hover,.btn-danger.active:focus,.btn-danger.active.focus,.open>.btn-danger.dropdown-toggle:hover,.open>.btn-danger.dropdown-toggle:focus,.open>.btn-danger.dropdown-toggle.focus{color:#fff;background-color:#b44542;border-color:#9b3b38}.btn-danger.disabled:hover,.btn-danger.disabled:focus,.btn-danger.disabled.focus,.btn-danger[disabled]:hover,.btn-danger[disabled]:focus,.btn-danger.focus[disabled],fieldset[disabled] .btn-danger:hover,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger.focus{background-color:#d9534f;border-color:#ce4f4b}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#2c689c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:hover,fieldset[disabled] .btn-link:focus{color:#777;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33333;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input.btn-block[type="submit"],input.btn-block[type="reset"],input.btn-block[type="button"]{width:100%}.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height,visibility;transition-property:height,visibility;-webkit-transition-duration:0.35s;transition-duration:0.35s;-webkit-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid \9;border-right:4px solid transparent;border-left:4px solid transparent}.dropup,.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{color:#303030;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#777}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid \9}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width: 768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn:hover,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar:before,.btn-toolbar:after{display:table;content:" "}.btn-toolbar:after{clear:both}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle,.btn-group-lg.btn-group>.btn+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret,.btn-group-lg>.btn .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret,.dropup .btn-group-lg>.btn .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after{display:table;content:" "}.btn-group-vertical>.btn-group:after{clear:both}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle="buttons"]>.btn input[type="radio"],[data-toggle="buttons"]>.btn input[type="checkbox"],[data-toggle="buttons"]>.btn-group>.btn input[type="radio"],[data-toggle="buttons"]>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.input-group-addon.btn{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.input-group-addon.btn{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav:before,.nav:after{display:table;content:" "}.nav:after{clear:both}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified,.nav-tabs.nav-justified{width:100%}.nav-justified>li,.nav-tabs.nav-justified>li{float:none}.nav-justified>li>a,.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width: 768px){.nav-justified>li,.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a,.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified,.nav-tabs.nav-justified{border-bottom:0}.nav-tabs-justified>li>a,.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs.nav-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #ddd}@media (min-width: 768px){.nav-tabs-justified>li>a,.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs.nav-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}.navbar:before,.navbar:after{display:table;content:" "}.navbar:after{clear:both}@media (min-width: 768px){.navbar{border-radius:4px}}.navbar-header:before,.navbar-header:after{display:table;content:" "}.navbar-header:after{clear:both}@media (min-width: 768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse:before,.navbar-collapse:after{display:table;content:" "}.navbar-collapse:after{clear:both}.navbar-collapse.in{overflow-y:auto}@media (min-width: 768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width: 480px) and (orientation: landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}@media (min-width: 768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.container>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-header,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width: 768px){.container>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-header,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width: 768px){.navbar-static-top{border-radius:0}}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width: 768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-right:15px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width: 768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width: 767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width: 768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-right:-15px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:8px;margin-bottom:8px}@media (min-width: 768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width: 767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width: 768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm,.btn-group-sm>.navbar-btn.btn{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs,.btn-group-xs>.navbar-btn.btn{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width: 768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width: 768px){.navbar-left{float:left !important}.navbar-right{float:right !important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e8e8e8}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#6b6b6b;background-color:rgba(0,0,0,0)}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:rgba(0,0,0,0)}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e8e8e8}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:rgba(0,0,0,0)}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{color:#555;background-color:#e8e8e8}@media (max-width: 767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:rgba(0,0,0,0)}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e8e8e8}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:rgba(0,0,0,0)}}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e8e8e8}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#333}.navbar-default .btn-link[disabled]:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:hover,fieldset[disabled] .navbar-default .btn-link:focus{color:#ccc}.navbar-inverse{background-color:#222;border-color:#1f1f1f}.navbar-inverse .navbar-brand{color:#8b8b8b}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:rgba(0,0,0,0)}.navbar-inverse .navbar-text{color:#8b8b8b}.navbar-inverse .navbar-nav>li>a{color:#8b8b8b}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:rgba(0,0,0,0)}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#1f1f1f}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:rgba(0,0,0,0)}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{color:#fff;background-color:#1f1f1f}@media (max-width: 767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#1f1f1f}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#1f1f1f}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#8b8b8b}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:rgba(0,0,0,0)}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#1f1f1f}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:rgba(0,0,0,0)}}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#202020}.navbar-inverse .navbar-link{color:#8b8b8b}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#8b8b8b}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#fff}.navbar-inverse .btn-link[disabled]:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:hover,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/ "}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li>a:hover,.pagination>li>a:focus,.pagination>li>span:hover,.pagination>li>span:focus{z-index:2;color:#2c689c;background-color:#eee;border-color:#ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>.active>a,.pagination>.active>a:hover,.pagination>.active>a:focus,.pagination>.active>span,.pagination>.active>span:hover,.pagination>.active>span:focus{z-index:3;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.33333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager:before,.pager:after{display:table;content:" "}.pager:after{clear:both}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.label:empty{display:none}.btn .label{position:relative;top:-1px}a.label:hover,a.label:focus{color:#fff;text-decoration:none;cursor:pointer}.label-default{background-color:#777}.label-default[href]:hover,.label-default[href]:focus{background-color:#6b6b6b}.label-primary{background-color:#337ab7}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#2e6ea5}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#53a653}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#52adc8}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#d89c46}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c34b47}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:bold;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge,.btn-group-xs>.btn .badge{top:0;padding:1px 5px}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d7d7d7}.container .jumbotron,.container-fluid .jumbotron{padding-right:15px;padding-left:15px;border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width: 768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border 0.2s ease-in-out;-o-transition:border 0.2s ease-in-out;transition:border 0.2s ease-in-out}.thumbnail>img,.thumbnail a>img{display:block;max-width:100%;height:auto;margin-right:auto;margin-left:auto}.thumbnail .caption{padding:9px;color:#333}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#337ab7}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3e7b3e;background-color:#def1de;border-color:#d6e5d3}.alert-success hr{border-top-color:#cbdac8}.alert-success .alert-link{color:#386f38}.alert-info{color:#3b7d90;background-color:#def2f8;border-color:#cee5e7}.alert-info hr{border-top-color:#c4dadb}.alert-info .alert-link{color:#357182}.alert-warning{color:#90682f;background-color:#fcefdc;border-color:#efded1}.alert-warning hr{border-top-color:#e3d3c7}.alert-warning .alert-link{color:#825e2a}.alert-danger{color:#ae423f;background-color:#f7dddc;border-color:#ebd1d4}.alert-danger hr{border-top-color:#dfc7c9}.alert-danger .alert-link{color:#9d3b39}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0%;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#85afd4}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus,button.list-group-item:hover,button.list-group-item:focus{color:#555;text-decoration:none;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item-success{color:#3e7b3e;background-color:#def1de}a.list-group-item-success,button.list-group-item-success{color:#3e7b3e}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus,button.list-group-item-success:hover,button.list-group-item-success:focus{color:#3e7b3e;background-color:#d3e5d3}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus,button.list-group-item-success.active,button.list-group-item-success.active:hover,button.list-group-item-success.active:focus{color:#fff;background-color:#3e7b3e;border-color:#3e7b3e}.list-group-item-info{color:#3b7d90;background-color:#def2f8}a.list-group-item-info,button.list-group-item-info{color:#3b7d90}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus,button.list-group-item-info:hover,button.list-group-item-info:focus{color:#3b7d90;background-color:#d3e6ec}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus,button.list-group-item-info.active,button.list-group-item-info.active:hover,button.list-group-item-info.active:focus{color:#fff;background-color:#3b7d90;border-color:#3b7d90}.list-group-item-warning{color:#90682f;background-color:#fcefdc}a.list-group-item-warning,button.list-group-item-warning{color:#90682f}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus,button.list-group-item-warning:hover,button.list-group-item-warning:focus{color:#90682f;background-color:#efe3d1}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus,button.list-group-item-warning.active,button.list-group-item-warning.active:hover,button.list-group-item-warning.active:focus{color:#fff;background-color:#90682f;border-color:#90682f}.list-group-item-danger{color:#ae423f;background-color:#f7dddc}a.list-group-item-danger,button.list-group-item-danger{color:#ae423f}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus,button.list-group-item-danger:hover,button.list-group-item-danger:focus{color:#ae423f;background-color:#ebd2d1}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus,button.list-group-item-danger.active,button.list-group-item-danger.active:hover,button.list-group-item-danger.active:focus{color:#fff;background-color:#ae423f;border-color:#ae423f}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-body:before,.panel-body:after{display:table;content:" "}.panel-body:after{clear:both}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a,.panel-title>small,.panel-title>.small,.panel-title>small>a,.panel-title>.small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption{padding-right:15px;padding-left:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e5d3}.panel-success>.panel-heading{color:#3e7b3e;background-color:#def1de;border-color:#d6e5d3}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e5d3}.panel-success>.panel-heading .badge{color:#def1de;background-color:#3e7b3e}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e5d3}.panel-info{border-color:#cee5e7}.panel-info>.panel-heading{color:#3b7d90;background-color:#def2f8;border-color:#cee5e7}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#cee5e7}.panel-info>.panel-heading .badge{color:#def2f8;background-color:#3b7d90}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#cee5e7}.panel-warning{border-color:#efded1}.panel-warning>.panel-heading{color:#90682f;background-color:#fcefdc;border-color:#efded1}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#efded1}.panel-warning>.panel-heading .badge{color:#fcefdc;background-color:#90682f}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#efded1}.panel-danger{border-color:#ebd1d4}.panel-danger>.panel-heading{color:#ae423f;background-color:#f7dddc;border-color:#ebd1d4}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebd1d4}.panel-danger>.panel-heading .badge{color:#f7dddc;background-color:#ae423f}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebd1d4}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e4e4e4;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:bold;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none;appearance:none}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);-o-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform 0.3s ease-out;-moz-transition:-moz-transform 0.3s ease-out;-o-transition:-o-transform 0.3s ease-out;transition:transform 0.3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header:before,.modal-header:after{display:table;content:" "}.modal-header:after{clear:both}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer:before,.modal-footer:after{display:table;content:" "}.modal-footer:after{clear:both}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width: 768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width: 992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:400;line-height:1.42857;line-break:auto;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;font-size:12px;filter:alpha(opacity=0);opacity:0}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:400;line-height:1.42857;line-break:auto;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;font-size:14px;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover>.arrow{border-width:11px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#a3a3a3;border-top-color:rgba(0,0,0,0.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#a3a3a3;border-right-color:rgba(0,0,0,0.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#a3a3a3;border-bottom-color:rgba(0,0,0,0.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#a3a3a3;border-left-color:rgba(0,0,0,0.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:0.6s ease-in-out left;-o-transition:0.6s ease-in-out left;transition:0.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto;line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform 0.6s ease-in-out;-moz-transition:-moz-transform 0.6s ease-in-out;-o-transition:-o-transform 0.6s ease-in-out;transition:transform 0.6s ease-in-out;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;-moz-perspective:1000px;perspective:1000px}.carousel-inner>.item.next,.carousel-inner>.item.active.right{-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0);left:0}.carousel-inner>.item.prev,.carousel-inner>.item.active.left{-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0);left:0}.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right,.carousel-inner>.item.active{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);left:0}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6);background-color:rgba(0,0,0,0);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.5) 0%, rgba(0,0,0,0.0001) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.5) 0%, rgba(0,0,0,0.0001) 100%);background-image:linear-gradient(to right, rgba(0,0,0,0.5) 0%, rgba(0,0,0,0.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.0001) 0%, rgba(0,0,0,0.5) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.0001) 0%, rgba(0,0,0,0.5) 100%);background-image:linear-gradient(to right, rgba(0,0,0,0.0001) 0%, rgba(0,0,0,0.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:hover,.carousel-control:focus{color:#fff;text-decoration:none;outline:0;filter:alpha(opacity=90);opacity:.9}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:"\2039"}.carousel-control .icon-next:before{content:"\203a"}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width: 768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after{display:table;content:" "}.clearfix:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs{display:none !important}.visible-sm{display:none !important}.visible-md{display:none !important}.visible-lg{display:none !important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important}@media (max-width: 767px){.visible-xs{display:block !important}table.visible-xs{display:table !important}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (max-width: 767px){.visible-xs-block{display:block !important}}@media (max-width: 767px){.visible-xs-inline{display:inline !important}}@media (max-width: 767px){.visible-xs-inline-block{display:inline-block !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm{display:block !important}table.visible-sm{display:table !important}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm-block{display:block !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm-inline{display:inline !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm-inline-block{display:inline-block !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md{display:block !important}table.visible-md{display:table !important}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md-block{display:block !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md-inline{display:inline !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md-inline-block{display:inline-block !important}}@media (min-width: 1200px){.visible-lg{display:block !important}table.visible-lg{display:table !important}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (min-width: 1200px){.visible-lg-block{display:block !important}}@media (min-width: 1200px){.visible-lg-inline{display:inline !important}}@media (min-width: 1200px){.visible-lg-inline-block{display:inline-block !important}}@media (max-width: 767px){.hidden-xs{display:none !important}}@media (min-width: 768px) and (max-width: 991px){.hidden-sm{display:none !important}}@media (min-width: 992px) and (max-width: 1199px){.hidden-md{display:none !important}}@media (min-width: 1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table !important}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}.visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}.visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}@media print{.hidden-print{display:none !important}}.btn:focus{outline:none 2px #000}.btn:focus-visible{outline:auto 2px #000}div.active:focus{outline:none 1px #000}div.active:focus-visible{outline:auto 1px #000}a:focus{outline:none 1px #000}a:focus-visible{outline:auto 1px #000}.close:hover,.close:focus{outline:none 1px #000}.close:focus-visible{outline:auto 1px #000}.nav>li>a:hover,.nav>li>a:focus{outline:none 1px #000}.nav>li>a:focus-visible{outline:auto 1px #000}.carousel-indicators li,.carousel-indicators li.active{height:18px;width:18px;border-width:2px;position:relative;box-shadow:0px 0px 0px 1px #808080}.carousel-indicators.active li{background-color:rgba(100,149,253,0.6)}.carousel-indicators.active li.active{background-color:white}.carousel-tablist-highlight{display:block;position:absolute;outline:2px solid transparent;background-color:transparent;box-shadow:0px 0px 0px 1px transparent}.carousel-tablist-highlight.focus{outline:2px solid #6495ED;background-color:rgba(0,0,0,0.4)}a.carousel-control:focus{outline:2px solid #6495ED;background-image:linear-gradient(to right, transparent 0px, rgba(0,0,0,0.5) 100%);box-shadow:0px 0px 0px 1px #000000}.carousel-pause-button{position:absolute;top:-30em;left:-300em;display:block}.carousel-pause-button.focus{top:0.5em;left:0.5em}.carousel:hover .carousel-caption,.carousel.contrast .carousel-caption{background-color:rgba(0,0,0,0.5);z-index:10}.alert-success{color:#2d4821}.alert-info{color:#214c62}.alert-warning{color:#6c4a00;background-color:#f9f1c6}.alert-danger{color:#d2322d}.alert-danger:hover{color:#bd2d29}@media (min-width: 768px){.nav:not(.nav-hidden){display:flex !important;display:-webkit-flex !important}.nav:not(.nav-hidden):not(.nav-stacked):not(.flex-column){float:none !important}.nav:not(.nav-hidden):not(.nav-stacked):not(.flex-column)>.bslib-nav-spacer{margin-left:auto !important}.nav:not(.nav-hidden):not(.nav-stacked):not(.flex-column)>.form-inline{margin-top:auto;margin-bottom:auto}.nav.nav-stacked:not(.nav-hidden){flex-direction:column;-webkit-flex-direction:column;height:100%}.nav.nav-stacked:not(.nav-hidden)>.bslib-nav-spacer{margin-top:auto !important}}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/css-precompiled/4/bootstrap.min.css
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/css-precompiled/4/bootstrap.min.css	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/css-precompiled/4/bootstrap.min.css	(revision 3762)
@@ -0,0 +1 @@
+:root{--blue: #007bff;--indigo: #6610f2;--purple: #6f42c1;--pink: #e83e8c;--red: #dc3545;--orange: #fd7e14;--yellow: #ffc107;--green: #28a745;--teal: #20c997;--cyan: #17a2b8;--white: #fff;--gray: #6c757d;--gray-dark: #343a40;--default: #dee2e6;--primary: #007bff;--secondary: #6c757d;--success: #28a745;--info: #17a2b8;--warning: #ffc107;--danger: #dc3545;--light: #f8f9fa;--dark: #343a40;--breakpoint-xs: 0;--breakpoint-sm: 576px;--breakpoint-md: 768px;--breakpoint-lg: 992px;--breakpoint-xl: 1200px;--font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace}*,*::before,*::after{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus:not(:focus-visible){outline:0 !important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[title],abbr[data-original-title]{text-decoration:underline;text-decoration:underline dotted;-webkit-text-decoration:underline dotted;-moz-text-decoration:underline dotted;-ms-text-decoration:underline dotted;-o-text-decoration:underline dotted;cursor:help;border-bottom:0;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem;padding:.625rem 1.25rem;border-left:.25rem solid #e9ecef}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;background-color:transparent}a:hover{color:#0056b3;text-decoration:underline;-webkit-text-decoration:underline;-moz-text-decoration:underline;-ms-text-decoration:underline;-o-text-decoration:underline}a:not([href]):not([class]){color:inherit;text-decoration:none}a:not([href]):not([class]):hover{color:inherit;text-decoration:none}pre,code,kbd,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit;text-align:-webkit-match-parent}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus:not(:focus-visible){outline:0}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[role="button"]{cursor:pointer}select{word-wrap:normal}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button:not(:disabled),[type="button"]:not(:disabled),[type="reset"]:not(:disabled),[type="submit"]:not(:disabled){cursor:pointer}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{padding:0;border-style:none}input[type="radio"],input[type="checkbox"]{box-sizing:border-box;padding:0}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{outline-offset:-2px;-webkit-appearance:none}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none !important}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}h1,.h1{font-size:2.5rem}h2,.h2{font-size:2rem}h3,.h3{font-size:1.75rem}h4,.h4{font-size:1.5rem}h5,.h5{font-size:1.25rem}h6,.h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,0.1)}small,.small{font-size:80%;font-weight:400}mark,.mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer::before{content:"\2014\00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code{font-size:87.5%;color:#000;background-color:#f6f6f6;border-radius:.25rem;padding:.125rem .25rem;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#000;background-color:#f6f6f6;padding:.5rem;border:1px solid #dee2e6;border-radius:.25rem}pre code{background-color:transparent;font-size:inherit;color:inherit;word-break:normal;padding:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container,.container-fluid,.container-xl,.container-lg,.container-md,.container-sm{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width: 576px){.container-sm,.container{max-width:540px}}@media (min-width: 768px){.container-md,.container-sm,.container{max-width:720px}}@media (min-width: 992px){.container-lg,.container-md,.container-sm,.container{max-width:960px}}@media (min-width: 1200px){.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1140px}}.row{display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*="col-"]{padding-right:0;padding-left:0}.col-xl,.col-xl-auto,.col-xl-12,.col-xl-11,.col-xl-10,.col-xl-9,.col-xl-8,.col-xl-7,.col-xl-6,.col-xl-5,.col-xl-4,.col-xl-3,.col-xl-2,.col-xl-1,.col-lg,.col-lg-auto,.col-lg-12,.col-lg-11,.col-lg-10,.col-lg-9,.col-lg-8,.col-lg-7,.col-lg-6,.col-lg-5,.col-lg-4,.col-lg-3,.col-lg-2,.col-lg-1,.col-md,.col-md-auto,.col-md-12,.col-md-11,.col-md-10,.col-md-9,.col-md-8,.col-md-7,.col-md-6,.col-md-5,.col-md-4,.col-md-3,.col-md-2,.col-md-1,.col-sm,.col-sm-auto,.col-sm-12,.col-sm-11,.col-sm-10,.col-sm-9,.col-sm-8,.col-sm-7,.col-sm-6,.col-sm-5,.col-sm-4,.col-sm-3,.col-sm-2,.col-sm-1,.col,.col-auto,.col-12,.col-11,.col-10,.col-9,.col-8,.col-7,.col-6,.col-5,.col-4,.col-3,.col-2,.col-1{position:relative;width:100%;padding-right:15px;padding-left:15px}.col{flex-basis:0;-webkit-flex-basis:0;flex-grow:1;-webkit-flex-grow:1;max-width:100%}.row-cols-1>*{flex:0 0 100%;-webkit-flex:0 0 100%;max-width:100%}.row-cols-2>*{flex:0 0 50%;-webkit-flex:0 0 50%;max-width:50%}.row-cols-3>*{flex:0 0 33.33333%;-webkit-flex:0 0 33.33333%;max-width:33.33333%}.row-cols-4>*{flex:0 0 25%;-webkit-flex:0 0 25%;max-width:25%}.row-cols-5>*{flex:0 0 20%;-webkit-flex:0 0 20%;max-width:20%}.row-cols-6>*{flex:0 0 16.66667%;-webkit-flex:0 0 16.66667%;max-width:16.66667%}.col-auto{flex:0 0 auto;-webkit-flex:0 0 auto;width:auto;max-width:100%}.col-1{flex:0 0 8.33333%;-webkit-flex:0 0 8.33333%;max-width:8.33333%}.col-2{flex:0 0 16.66667%;-webkit-flex:0 0 16.66667%;max-width:16.66667%}.col-3{flex:0 0 25%;-webkit-flex:0 0 25%;max-width:25%}.col-4{flex:0 0 33.33333%;-webkit-flex:0 0 33.33333%;max-width:33.33333%}.col-5{flex:0 0 41.66667%;-webkit-flex:0 0 41.66667%;max-width:41.66667%}.col-6{flex:0 0 50%;-webkit-flex:0 0 50%;max-width:50%}.col-7{flex:0 0 58.33333%;-webkit-flex:0 0 58.33333%;max-width:58.33333%}.col-8{flex:0 0 66.66667%;-webkit-flex:0 0 66.66667%;max-width:66.66667%}.col-9{flex:0 0 75%;-webkit-flex:0 0 75%;max-width:75%}.col-10{flex:0 0 83.33333%;-webkit-flex:0 0 83.33333%;max-width:83.33333%}.col-11{flex:0 0 91.66667%;-webkit-flex:0 0 91.66667%;max-width:91.66667%}.col-12{flex:0 0 100%;-webkit-flex:0 0 100%;max-width:100%}.order-first{order:-1}.order-last{order:13}.order-0{order:0}.order-1{order:1}.order-2{order:2}.order-3{order:3}.order-4{order:4}.order-5{order:5}.order-6{order:6}.order-7{order:7}.order-8{order:8}.order-9{order:9}.order-10{order:10}.order-11{order:11}.order-12{order:12}.offset-1{margin-left:8.33333%}.offset-2{margin-left:16.66667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333%}.offset-5{margin-left:41.66667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333%}.offset-8{margin-left:66.66667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333%}.offset-11{margin-left:91.66667%}@media (min-width: 576px){.col-sm{flex-basis:0;-webkit-flex-basis:0;flex-grow:1;-webkit-flex-grow:1;max-width:100%}.row-cols-sm-1>*{flex:0 0 100%;-webkit-flex:0 0 100%;max-width:100%}.row-cols-sm-2>*{flex:0 0 50%;-webkit-flex:0 0 50%;max-width:50%}.row-cols-sm-3>*{flex:0 0 33.33333%;-webkit-flex:0 0 33.33333%;max-width:33.33333%}.row-cols-sm-4>*{flex:0 0 25%;-webkit-flex:0 0 25%;max-width:25%}.row-cols-sm-5>*{flex:0 0 20%;-webkit-flex:0 0 20%;max-width:20%}.row-cols-sm-6>*{flex:0 0 16.66667%;-webkit-flex:0 0 16.66667%;max-width:16.66667%}.col-sm-auto{flex:0 0 auto;-webkit-flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{flex:0 0 8.33333%;-webkit-flex:0 0 8.33333%;max-width:8.33333%}.col-sm-2{flex:0 0 16.66667%;-webkit-flex:0 0 16.66667%;max-width:16.66667%}.col-sm-3{flex:0 0 25%;-webkit-flex:0 0 25%;max-width:25%}.col-sm-4{flex:0 0 33.33333%;-webkit-flex:0 0 33.33333%;max-width:33.33333%}.col-sm-5{flex:0 0 41.66667%;-webkit-flex:0 0 41.66667%;max-width:41.66667%}.col-sm-6{flex:0 0 50%;-webkit-flex:0 0 50%;max-width:50%}.col-sm-7{flex:0 0 58.33333%;-webkit-flex:0 0 58.33333%;max-width:58.33333%}.col-sm-8{flex:0 0 66.66667%;-webkit-flex:0 0 66.66667%;max-width:66.66667%}.col-sm-9{flex:0 0 75%;-webkit-flex:0 0 75%;max-width:75%}.col-sm-10{flex:0 0 83.33333%;-webkit-flex:0 0 83.33333%;max-width:83.33333%}.col-sm-11{flex:0 0 91.66667%;-webkit-flex:0 0 91.66667%;max-width:91.66667%}.col-sm-12{flex:0 0 100%;-webkit-flex:0 0 100%;max-width:100%}.order-sm-first{order:-1}.order-sm-last{order:13}.order-sm-0{order:0}.order-sm-1{order:1}.order-sm-2{order:2}.order-sm-3{order:3}.order-sm-4{order:4}.order-sm-5{order:5}.order-sm-6{order:6}.order-sm-7{order:7}.order-sm-8{order:8}.order-sm-9{order:9}.order-sm-10{order:10}.order-sm-11{order:11}.order-sm-12{order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333%}.offset-sm-2{margin-left:16.66667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333%}.offset-sm-5{margin-left:41.66667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333%}.offset-sm-8{margin-left:66.66667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333%}.offset-sm-11{margin-left:91.66667%}}@media (min-width: 768px){.col-md{flex-basis:0;-webkit-flex-basis:0;flex-grow:1;-webkit-flex-grow:1;max-width:100%}.row-cols-md-1>*{flex:0 0 100%;-webkit-flex:0 0 100%;max-width:100%}.row-cols-md-2>*{flex:0 0 50%;-webkit-flex:0 0 50%;max-width:50%}.row-cols-md-3>*{flex:0 0 33.33333%;-webkit-flex:0 0 33.33333%;max-width:33.33333%}.row-cols-md-4>*{flex:0 0 25%;-webkit-flex:0 0 25%;max-width:25%}.row-cols-md-5>*{flex:0 0 20%;-webkit-flex:0 0 20%;max-width:20%}.row-cols-md-6>*{flex:0 0 16.66667%;-webkit-flex:0 0 16.66667%;max-width:16.66667%}.col-md-auto{flex:0 0 auto;-webkit-flex:0 0 auto;width:auto;max-width:100%}.col-md-1{flex:0 0 8.33333%;-webkit-flex:0 0 8.33333%;max-width:8.33333%}.col-md-2{flex:0 0 16.66667%;-webkit-flex:0 0 16.66667%;max-width:16.66667%}.col-md-3{flex:0 0 25%;-webkit-flex:0 0 25%;max-width:25%}.col-md-4{flex:0 0 33.33333%;-webkit-flex:0 0 33.33333%;max-width:33.33333%}.col-md-5{flex:0 0 41.66667%;-webkit-flex:0 0 41.66667%;max-width:41.66667%}.col-md-6{flex:0 0 50%;-webkit-flex:0 0 50%;max-width:50%}.col-md-7{flex:0 0 58.33333%;-webkit-flex:0 0 58.33333%;max-width:58.33333%}.col-md-8{flex:0 0 66.66667%;-webkit-flex:0 0 66.66667%;max-width:66.66667%}.col-md-9{flex:0 0 75%;-webkit-flex:0 0 75%;max-width:75%}.col-md-10{flex:0 0 83.33333%;-webkit-flex:0 0 83.33333%;max-width:83.33333%}.col-md-11{flex:0 0 91.66667%;-webkit-flex:0 0 91.66667%;max-width:91.66667%}.col-md-12{flex:0 0 100%;-webkit-flex:0 0 100%;max-width:100%}.order-md-first{order:-1}.order-md-last{order:13}.order-md-0{order:0}.order-md-1{order:1}.order-md-2{order:2}.order-md-3{order:3}.order-md-4{order:4}.order-md-5{order:5}.order-md-6{order:6}.order-md-7{order:7}.order-md-8{order:8}.order-md-9{order:9}.order-md-10{order:10}.order-md-11{order:11}.order-md-12{order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333%}.offset-md-2{margin-left:16.66667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333%}.offset-md-5{margin-left:41.66667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333%}.offset-md-8{margin-left:66.66667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333%}.offset-md-11{margin-left:91.66667%}}@media (min-width: 992px){.col-lg{flex-basis:0;-webkit-flex-basis:0;flex-grow:1;-webkit-flex-grow:1;max-width:100%}.row-cols-lg-1>*{flex:0 0 100%;-webkit-flex:0 0 100%;max-width:100%}.row-cols-lg-2>*{flex:0 0 50%;-webkit-flex:0 0 50%;max-width:50%}.row-cols-lg-3>*{flex:0 0 33.33333%;-webkit-flex:0 0 33.33333%;max-width:33.33333%}.row-cols-lg-4>*{flex:0 0 25%;-webkit-flex:0 0 25%;max-width:25%}.row-cols-lg-5>*{flex:0 0 20%;-webkit-flex:0 0 20%;max-width:20%}.row-cols-lg-6>*{flex:0 0 16.66667%;-webkit-flex:0 0 16.66667%;max-width:16.66667%}.col-lg-auto{flex:0 0 auto;-webkit-flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{flex:0 0 8.33333%;-webkit-flex:0 0 8.33333%;max-width:8.33333%}.col-lg-2{flex:0 0 16.66667%;-webkit-flex:0 0 16.66667%;max-width:16.66667%}.col-lg-3{flex:0 0 25%;-webkit-flex:0 0 25%;max-width:25%}.col-lg-4{flex:0 0 33.33333%;-webkit-flex:0 0 33.33333%;max-width:33.33333%}.col-lg-5{flex:0 0 41.66667%;-webkit-flex:0 0 41.66667%;max-width:41.66667%}.col-lg-6{flex:0 0 50%;-webkit-flex:0 0 50%;max-width:50%}.col-lg-7{flex:0 0 58.33333%;-webkit-flex:0 0 58.33333%;max-width:58.33333%}.col-lg-8{flex:0 0 66.66667%;-webkit-flex:0 0 66.66667%;max-width:66.66667%}.col-lg-9{flex:0 0 75%;-webkit-flex:0 0 75%;max-width:75%}.col-lg-10{flex:0 0 83.33333%;-webkit-flex:0 0 83.33333%;max-width:83.33333%}.col-lg-11{flex:0 0 91.66667%;-webkit-flex:0 0 91.66667%;max-width:91.66667%}.col-lg-12{flex:0 0 100%;-webkit-flex:0 0 100%;max-width:100%}.order-lg-first{order:-1}.order-lg-last{order:13}.order-lg-0{order:0}.order-lg-1{order:1}.order-lg-2{order:2}.order-lg-3{order:3}.order-lg-4{order:4}.order-lg-5{order:5}.order-lg-6{order:6}.order-lg-7{order:7}.order-lg-8{order:8}.order-lg-9{order:9}.order-lg-10{order:10}.order-lg-11{order:11}.order-lg-12{order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333%}.offset-lg-2{margin-left:16.66667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333%}.offset-lg-5{margin-left:41.66667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333%}.offset-lg-8{margin-left:66.66667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333%}.offset-lg-11{margin-left:91.66667%}}@media (min-width: 1200px){.col-xl{flex-basis:0;-webkit-flex-basis:0;flex-grow:1;-webkit-flex-grow:1;max-width:100%}.row-cols-xl-1>*{flex:0 0 100%;-webkit-flex:0 0 100%;max-width:100%}.row-cols-xl-2>*{flex:0 0 50%;-webkit-flex:0 0 50%;max-width:50%}.row-cols-xl-3>*{flex:0 0 33.33333%;-webkit-flex:0 0 33.33333%;max-width:33.33333%}.row-cols-xl-4>*{flex:0 0 25%;-webkit-flex:0 0 25%;max-width:25%}.row-cols-xl-5>*{flex:0 0 20%;-webkit-flex:0 0 20%;max-width:20%}.row-cols-xl-6>*{flex:0 0 16.66667%;-webkit-flex:0 0 16.66667%;max-width:16.66667%}.col-xl-auto{flex:0 0 auto;-webkit-flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{flex:0 0 8.33333%;-webkit-flex:0 0 8.33333%;max-width:8.33333%}.col-xl-2{flex:0 0 16.66667%;-webkit-flex:0 0 16.66667%;max-width:16.66667%}.col-xl-3{flex:0 0 25%;-webkit-flex:0 0 25%;max-width:25%}.col-xl-4{flex:0 0 33.33333%;-webkit-flex:0 0 33.33333%;max-width:33.33333%}.col-xl-5{flex:0 0 41.66667%;-webkit-flex:0 0 41.66667%;max-width:41.66667%}.col-xl-6{flex:0 0 50%;-webkit-flex:0 0 50%;max-width:50%}.col-xl-7{flex:0 0 58.33333%;-webkit-flex:0 0 58.33333%;max-width:58.33333%}.col-xl-8{flex:0 0 66.66667%;-webkit-flex:0 0 66.66667%;max-width:66.66667%}.col-xl-9{flex:0 0 75%;-webkit-flex:0 0 75%;max-width:75%}.col-xl-10{flex:0 0 83.33333%;-webkit-flex:0 0 83.33333%;max-width:83.33333%}.col-xl-11{flex:0 0 91.66667%;-webkit-flex:0 0 91.66667%;max-width:91.66667%}.col-xl-12{flex:0 0 100%;-webkit-flex:0 0 100%;max-width:100%}.order-xl-first{order:-1}.order-xl-last{order:13}.order-xl-0{order:0}.order-xl-1{order:1}.order-xl-2{order:2}.order-xl-3{order:3}.order-xl-4{order:4}.order-xl-5{order:5}.order-xl-6{order:6}.order-xl-7{order:7}.order-xl-8{order:8}.order-xl-9{order:9}.order-xl-10{order:10}.order-xl-11{order:11}.order-xl-12{order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333%}.offset-xl-2{margin-left:16.66667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333%}.offset-xl-5{margin-left:41.66667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333%}.offset-xl-8{margin-left:66.66667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333%}.offset-xl-11{margin-left:91.66667%}}.table{width:100%;margin-bottom:1rem;color:#212529}.table th,.table td{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table-sm th,.table-sm td{padding:.3rem}.table-bordered{border:1px solid #dee2e6}.table-bordered th,.table-bordered td{border:1px solid #dee2e6}.table-bordered thead th,.table-bordered thead td{border-bottom-width:2px}.table-borderless th,.table-borderless td,.table-borderless thead th,.table-borderless tbody+tbody{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,0.05)}.table-hover tbody tr:hover{color:#212529;background-color:rgba(0,0,0,0.075)}.table-default,.table-default>th,.table-default>td{background-color:#f6f7f8}.table-default th,.table-default td,.table-default thead th,.table-default tbody+tbody{border-color:#eef0f2}.table-hover .table-default:hover{background-color:#e8eaed}.table-hover .table-default:hover>td,.table-hover .table-default:hover>th{background-color:#e8eaed}.table-primary,.table-primary>th,.table-primary>td{background-color:#b8daff}.table-primary th,.table-primary td,.table-primary thead th,.table-primary tbody+tbody{border-color:#7abaff}.table-hover .table-primary:hover{background-color:#9fcdff}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>th,.table-secondary>td{background-color:#d6d8db}.table-secondary th,.table-secondary td,.table-secondary thead th,.table-secondary tbody+tbody{border-color:#b3b7bb}.table-hover .table-secondary:hover{background-color:#c8cbcf}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>th,.table-success>td{background-color:#c3e6cb}.table-success th,.table-success td,.table-success thead th,.table-success tbody+tbody{border-color:#8fd19e}.table-hover .table-success:hover{background-color:#b1dfbb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>th,.table-info>td{background-color:#bee5eb}.table-info th,.table-info td,.table-info thead th,.table-info tbody+tbody{border-color:#86cfda}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>th,.table-warning>td{background-color:#ffeeba}.table-warning th,.table-warning td,.table-warning thead th,.table-warning tbody+tbody{border-color:#ffdf7e}.table-hover .table-warning:hover{background-color:#ffe8a1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>th,.table-danger>td{background-color:#f5c6cb}.table-danger th,.table-danger td,.table-danger thead th,.table-danger tbody+tbody{border-color:#ed969e}.table-hover .table-danger:hover{background-color:#f1b0b7}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>th,.table-light>td{background-color:#fdfdfe}.table-light th,.table-light td,.table-light thead th,.table-light tbody+tbody{border-color:#fbfcfc}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>th,.table-dark>td{background-color:#c6c8ca}.table-dark th,.table-dark td,.table-dark thead th,.table-dark tbody+tbody{border-color:#95999c}.table-hover .table-dark:hover{background-color:#b9bbbe}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>th,.table-active>td{background-color:rgba(0,0,0,0.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,0.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,0.075)}.table .thead-dark th{color:#fff;background-color:#343a40;border-color:#454d55}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#343a40}.table-dark th,.table-dark td,.table-dark thead th{border-color:#454d55}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,0.05)}.table-dark.table-hover tbody tr:hover{color:#fff;background-color:rgba(255,255,255,0.075)}@media (max-width: 575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-sm>.table-bordered{border:0}}@media (max-width: 767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-md>.table-bordered{border:0}}@media (max-width: 991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-lg>.table-bordered{border:0}}@media (max-width: 1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-control{transition:none}}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,0.25)}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}input.form-control[type="date"],input.form-control[type="time"],input.form-control[type="datetime-local"],input.form-control[type="month"]{appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;font-size:1rem;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-sm,.form-control-plaintext.form-control-lg{padding-right:0;padding-left:0}.form-control-sm{height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.form-control-lg{height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control[size],select.form-control[multiple]{height:auto}textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text,.help-text,.help-block{display:block;margin-top:.25rem}.form-row{display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*="col-"]{padding-right:5px;padding-left:5px}.form-check,.shiny-input-checkboxgroup .checkbox,.shiny-input-checkboxgroup .radio,.shiny-input-radiogroup .checkbox,.shiny-input-radiogroup .radio{position:relative;display:block;padding-left:1.25rem}.form-check-input,.shiny-input-checkboxgroup .checkbox label>input,.shiny-input-checkboxgroup .radio label>input,.shiny-input-radiogroup .checkbox label>input,.shiny-input-radiogroup .radio label>input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input[disabled]~.form-check-label,.shiny-input-checkboxgroup .checkbox label>input[disabled]~.form-check-label,.shiny-input-checkboxgroup .radio label>input[disabled]~.form-check-label,.shiny-input-radiogroup .checkbox label>input[disabled]~.form-check-label,.shiny-input-radiogroup .radio label>input[disabled]~.form-check-label,.shiny-input-checkboxgroup .checkbox .form-check-input[disabled]~label,.shiny-input-checkboxgroup .checkbox label>input[disabled]~label,.shiny-input-checkboxgroup .radio .form-check-input[disabled]~label,.shiny-input-checkboxgroup .radio label>input[disabled]~label,.shiny-input-radiogroup .checkbox .form-check-input[disabled]~label,.shiny-input-radiogroup .checkbox label>input[disabled]~label,.shiny-input-radiogroup .radio .form-check-input[disabled]~label,.shiny-input-radiogroup .radio label>input[disabled]~label,.form-check-input:disabled~.form-check-label,.shiny-input-checkboxgroup .checkbox label>input:disabled~.form-check-label,.shiny-input-checkboxgroup .radio label>input:disabled~.form-check-label,.shiny-input-radiogroup .checkbox label>input:disabled~.form-check-label,.shiny-input-radiogroup .radio label>input:disabled~.form-check-label,.shiny-input-checkboxgroup .checkbox .form-check-input:disabled~label,.shiny-input-checkboxgroup .checkbox label>input:disabled~label,.shiny-input-checkboxgroup .radio .form-check-input:disabled~label,.shiny-input-checkboxgroup .radio label>input:disabled~label,.shiny-input-radiogroup .checkbox .form-check-input:disabled~label,.shiny-input-radiogroup .checkbox label>input:disabled~label,.shiny-input-radiogroup .radio .form-check-input:disabled~label,.shiny-input-radiogroup .radio label>input:disabled~label{color:#6c757d}.form-check-label,.shiny-input-checkboxgroup .checkbox label,.shiny-input-checkboxgroup .radio label,.shiny-input-radiogroup .checkbox label,.shiny-input-radiogroup .radio label{margin-bottom:0}.form-check-inline{display:inline-flex;align-items:center;-webkit-align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input,.form-check-inline .shiny-input-checkboxgroup .checkbox label>input,.shiny-input-checkboxgroup .checkbox .form-check-inline label>input,.form-check-inline .shiny-input-checkboxgroup .radio label>input,.shiny-input-checkboxgroup .radio .form-check-inline label>input,.form-check-inline .shiny-input-radiogroup .checkbox label>input,.shiny-input-radiogroup .checkbox .form-check-inline label>input,.form-check-inline .shiny-input-radiogroup .radio label>input,.shiny-input-radiogroup .radio .form-check-inline label>input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;left:0;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(40,167,69,0.9);border-radius:.25rem}.form-row>.col>.valid-tooltip,.form-row>[class*="col-"]>.valid-tooltip{left:5px}.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip,.is-valid~.valid-feedback,.is-valid~.valid-tooltip{display:block}.was-validated .form-control:valid,.form-control.is-valid{border-color:#28a745;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .form-control:valid:focus,.form-control.is-valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,0.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.was-validated .custom-select:valid,.custom-select.is-valid{border-color:#28a745;padding-right:calc(.75em + 2.3125rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat,#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem) no-repeat}.was-validated .custom-select:valid:focus,.custom-select.is-valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,0.25)}.was-validated .form-check-input:valid~.form-check-label,.was-validated .shiny-input-checkboxgroup .checkbox label>input:valid~.form-check-label,.shiny-input-checkboxgroup .checkbox .was-validated label>input:valid~.form-check-label,.was-validated .shiny-input-checkboxgroup .radio label>input:valid~.form-check-label,.shiny-input-checkboxgroup .radio .was-validated label>input:valid~.form-check-label,.was-validated .shiny-input-radiogroup .checkbox label>input:valid~.form-check-label,.shiny-input-radiogroup .checkbox .was-validated label>input:valid~.form-check-label,.was-validated .shiny-input-radiogroup .radio label>input:valid~.form-check-label,.shiny-input-radiogroup .radio .was-validated label>input:valid~.form-check-label,.was-validated .shiny-input-checkboxgroup .checkbox .form-check-input:valid~label,.was-validated .shiny-input-checkboxgroup .checkbox label>input:valid~label,.was-validated .shiny-input-checkboxgroup .checkbox .radio label>input:valid~label,.was-validated .shiny-input-checkboxgroup .radio .checkbox label>input:valid~label,.was-validated .shiny-input-checkboxgroup .shiny-input-radiogroup .checkbox label>input:valid~label,.shiny-input-radiogroup .was-validated .shiny-input-checkboxgroup .checkbox label>input:valid~label,.was-validated .shiny-input-checkboxgroup .checkbox .shiny-input-radiogroup .radio label>input:valid~label,.shiny-input-radiogroup .radio .was-validated .shiny-input-checkboxgroup .checkbox label>input:valid~label,.shiny-input-checkboxgroup .checkbox .was-validated .form-check-input:valid~label,.shiny-input-checkboxgroup .checkbox .was-validated label>input:valid~label,.shiny-input-checkboxgroup .checkbox .was-validated .radio label>input:valid~label,.shiny-input-checkboxgroup .radio .checkbox .was-validated label>input:valid~label,.shiny-input-checkboxgroup .shiny-input-radiogroup .checkbox .was-validated label>input:valid~label,.shiny-input-radiogroup .shiny-input-checkboxgroup .checkbox .was-validated label>input:valid~label,.shiny-input-checkboxgroup .checkbox .was-validated .shiny-input-radiogroup .radio label>input:valid~label,.shiny-input-radiogroup .radio .shiny-input-checkboxgroup .checkbox .was-validated label>input:valid~label,.was-validated .shiny-input-checkboxgroup .radio .form-check-input:valid~label,.was-validated .shiny-input-checkboxgroup .radio .checkbox label>input:valid~label,.was-validated .shiny-input-checkboxgroup .checkbox .radio label>input:valid~label,.was-validated .shiny-input-checkboxgroup .radio label>input:valid~label,.was-validated .shiny-input-checkboxgroup .radio .shiny-input-radiogroup .checkbox label>input:valid~label,.shiny-input-radiogroup .checkbox .was-validated .shiny-input-checkboxgroup .radio label>input:valid~label,.was-validated .shiny-input-checkboxgroup .shiny-input-radiogroup .radio label>input:valid~label,.shiny-input-radiogroup .was-validated .shiny-input-checkboxgroup .radio label>input:valid~label,.shiny-input-checkboxgroup .radio .was-validated .form-check-input:valid~label,.shiny-input-checkboxgroup .radio .was-validated .checkbox label>input:valid~label,.shiny-input-checkboxgroup .checkbox .radio .was-validated label>input:valid~label,.shiny-input-checkboxgroup .radio .was-validated label>input:valid~label,.shiny-input-checkboxgroup .radio .was-validated .shiny-input-radiogroup .checkbox label>input:valid~label,.shiny-input-radiogroup .checkbox .shiny-input-checkboxgroup .radio .was-validated label>input:valid~label,.shiny-input-checkboxgroup .shiny-input-radiogroup .radio .was-validated label>input:valid~label,.shiny-input-radiogroup .shiny-input-checkboxgroup .radio .was-validated label>input:valid~label,.was-validated .shiny-input-radiogroup .checkbox .form-check-input:valid~label,.was-validated .shiny-input-radiogroup .shiny-input-checkboxgroup .checkbox label>input:valid~label,.shiny-input-checkboxgroup .was-validated .shiny-input-radiogroup .checkbox label>input:valid~label,.was-validated .shiny-input-radiogroup .checkbox .shiny-input-checkboxgroup .radio label>input:valid~label,.shiny-input-checkboxgroup .radio .was-validated .shiny-input-radiogroup .checkbox label>input:valid~label,.was-validated .shiny-input-radiogroup .checkbox label>input:valid~label,.was-validated .shiny-input-radiogroup .checkbox .radio label>input:valid~label,.was-validated .shiny-input-radiogroup .radio .checkbox label>input:valid~label,.shiny-input-radiogroup .checkbox .was-validated .form-check-input:valid~label,.shiny-input-radiogroup .shiny-input-checkboxgroup .checkbox .was-validated label>input:valid~label,.shiny-input-checkboxgroup .shiny-input-radiogroup .checkbox .was-validated label>input:valid~label,.shiny-input-radiogroup .checkbox .was-validated .shiny-input-checkboxgroup .radio label>input:valid~label,.shiny-input-checkboxgroup .radio .shiny-input-radiogroup .checkbox .was-validated label>input:valid~label,.shiny-input-radiogroup .checkbox .was-validated label>input:valid~label,.shiny-input-radiogroup .checkbox .was-validated .radio label>input:valid~label,.shiny-input-radiogroup .radio .checkbox .was-validated label>input:valid~label,.was-validated .shiny-input-radiogroup .radio .form-check-input:valid~label,.was-validated .shiny-input-radiogroup .radio .shiny-input-checkboxgroup .checkbox label>input:valid~label,.shiny-input-checkboxgroup .checkbox .was-validated .shiny-input-radiogroup .radio label>input:valid~label,.was-validated .shiny-input-radiogroup .shiny-input-checkboxgroup .radio label>input:valid~label,.shiny-input-checkboxgroup .was-validated .shiny-input-radiogroup .radio label>input:valid~label,.was-validated .shiny-input-radiogroup .radio .checkbox label>input:valid~label,.was-validated .shiny-input-radiogroup .checkbox .radio label>input:valid~label,.was-validated .shiny-input-radiogroup .radio label>input:valid~label,.shiny-input-radiogroup .radio .was-validated .form-check-input:valid~label,.shiny-input-radiogroup .radio .was-validated .shiny-input-checkboxgroup .checkbox label>input:valid~label,.shiny-input-checkboxgroup .checkbox .shiny-input-radiogroup .radio .was-validated label>input:valid~label,.shiny-input-radiogroup .shiny-input-checkboxgroup .radio .was-validated label>input:valid~label,.shiny-input-checkboxgroup .shiny-input-radiogroup .radio .was-validated label>input:valid~label,.shiny-input-radiogroup .radio .was-validated .checkbox label>input:valid~label,.shiny-input-radiogroup .checkbox .radio .was-validated label>input:valid~label,.shiny-input-radiogroup .radio .was-validated label>input:valid~label,.form-check-input.is-valid~.form-check-label,.shiny-input-checkboxgroup .checkbox label>input.is-valid~.form-check-label,.shiny-input-checkboxgroup .radio label>input.is-valid~.form-check-label,.shiny-input-radiogroup .checkbox label>input.is-valid~.form-check-label,.shiny-input-radiogroup .radio label>input.is-valid~.form-check-label,.shiny-input-checkboxgroup .checkbox .form-check-input.is-valid~label,.shiny-input-checkboxgroup .checkbox label>input.is-valid~label,.shiny-input-checkboxgroup .checkbox .radio label>input.is-valid~label,.shiny-input-checkboxgroup .radio .checkbox label>input.is-valid~label,.shiny-input-checkboxgroup .shiny-input-radiogroup .checkbox label>input.is-valid~label,.shiny-input-radiogroup .shiny-input-checkboxgroup .checkbox label>input.is-valid~label,.shiny-input-checkboxgroup .checkbox .shiny-input-radiogroup .radio label>input.is-valid~label,.shiny-input-radiogroup .radio .shiny-input-checkboxgroup .checkbox label>input.is-valid~label,.shiny-input-checkboxgroup .radio .form-check-input.is-valid~label,.shiny-input-checkboxgroup .radio .checkbox label>input.is-valid~label,.shiny-input-checkboxgroup .checkbox .radio label>input.is-valid~label,.shiny-input-checkboxgroup .radio label>input.is-valid~label,.shiny-input-checkboxgroup .radio .shiny-input-radiogroup .checkbox label>input.is-valid~label,.shiny-input-radiogroup .checkbox .shiny-input-checkboxgroup .radio label>input.is-valid~label,.shiny-input-checkboxgroup .shiny-input-radiogroup .radio label>input.is-valid~label,.shiny-input-radiogroup .shiny-input-checkboxgroup .radio label>input.is-valid~label,.shiny-input-radiogroup .checkbox .form-check-input.is-valid~label,.shiny-input-radiogroup .shiny-input-checkboxgroup .checkbox label>input.is-valid~label,.shiny-input-checkboxgroup .shiny-input-radiogroup .checkbox label>input.is-valid~label,.shiny-input-radiogroup .checkbox .shiny-input-checkboxgroup .radio label>input.is-valid~label,.shiny-input-checkboxgroup .radio .shiny-input-radiogroup .checkbox label>input.is-valid~label,.shiny-input-radiogroup .checkbox label>input.is-valid~label,.shiny-input-radiogroup .checkbox .radio label>input.is-valid~label,.shiny-input-radiogroup .radio .checkbox label>input.is-valid~label,.shiny-input-radiogroup .radio .form-check-input.is-valid~label,.shiny-input-radiogroup .radio .shiny-input-checkboxgroup .checkbox label>input.is-valid~label,.shiny-input-checkboxgroup .checkbox .shiny-input-radiogroup .radio label>input.is-valid~label,.shiny-input-radiogroup .shiny-input-checkboxgroup .radio label>input.is-valid~label,.shiny-input-checkboxgroup .shiny-input-radiogroup .radio label>input.is-valid~label,.shiny-input-radiogroup .radio .checkbox label>input.is-valid~label,.shiny-input-radiogroup .checkbox .radio label>input.is-valid~label,.shiny-input-radiogroup .radio label>input.is-valid~label{color:#28a745}.was-validated .form-check-input:valid~.valid-feedback,.was-validated .shiny-input-checkboxgroup .checkbox label>input:valid~.valid-feedback,.shiny-input-checkboxgroup .checkbox .was-validated label>input:valid~.valid-feedback,.was-validated .shiny-input-checkboxgroup .radio label>input:valid~.valid-feedback,.shiny-input-checkboxgroup .radio .was-validated label>input:valid~.valid-feedback,.was-validated .shiny-input-radiogroup .checkbox label>input:valid~.valid-feedback,.shiny-input-radiogroup .checkbox .was-validated label>input:valid~.valid-feedback,.was-validated .shiny-input-radiogroup .radio label>input:valid~.valid-feedback,.shiny-input-radiogroup .radio .was-validated label>input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip,.was-validated .shiny-input-checkboxgroup .checkbox label>input:valid~.valid-tooltip,.shiny-input-checkboxgroup .checkbox .was-validated label>input:valid~.valid-tooltip,.was-validated .shiny-input-checkboxgroup .radio label>input:valid~.valid-tooltip,.shiny-input-checkboxgroup .radio .was-validated label>input:valid~.valid-tooltip,.was-validated .shiny-input-radiogroup .checkbox label>input:valid~.valid-tooltip,.shiny-input-radiogroup .checkbox .was-validated label>input:valid~.valid-tooltip,.was-validated .shiny-input-radiogroup .radio label>input:valid~.valid-tooltip,.shiny-input-radiogroup .radio .was-validated label>input:valid~.valid-tooltip,.form-check-input.is-valid~.valid-feedback,.shiny-input-checkboxgroup .checkbox label>input.is-valid~.valid-feedback,.shiny-input-checkboxgroup .radio label>input.is-valid~.valid-feedback,.shiny-input-radiogroup .checkbox label>input.is-valid~.valid-feedback,.shiny-input-radiogroup .radio label>input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.shiny-input-checkboxgroup .checkbox label>input.is-valid~.valid-tooltip,.shiny-input-checkboxgroup .radio label>input.is-valid~.valid-tooltip,.shiny-input-radiogroup .checkbox label>input.is-valid~.valid-tooltip,.shiny-input-radiogroup .radio label>input.is-valid~.valid-tooltip{display:block}.was-validated .custom-control-input:valid~.custom-control-label,.custom-control-input.is-valid~.custom-control-label{color:#28a745}.was-validated .custom-control-input:valid~.custom-control-label::before,.custom-control-input.is-valid~.custom-control-label::before{border-color:#28a745}.was-validated .custom-control-input:valid:checked~.custom-control-label::before,.custom-control-input.is-valid:checked~.custom-control-label::before{border-color:#34ce57;background-color:#34ce57}.was-validated .custom-control-input:valid:focus~.custom-control-label::before,.custom-control-input.is-valid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(40,167,69,0.25)}.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label::before,.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label::before{border-color:#28a745}.was-validated .custom-file-input:valid~.custom-file-label,.custom-file-input.is-valid~.custom-file-label{border-color:#28a745}.was-validated .custom-file-input:valid:focus~.custom-file-label,.custom-file-input.is-valid:focus~.custom-file-label{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,0.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;left:0;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(220,53,69,0.9);border-radius:.25rem}.form-row>.col>.invalid-tooltip,.form-row>[class*="col-"]>.invalid-tooltip{left:5px}.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip,.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip{display:block}.was-validated .form-control:invalid,.form-control.is-invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,0.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.was-validated .custom-select:invalid,.custom-select.is-invalid{border-color:#dc3545;padding-right:calc(.75em + 2.3125rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat,#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e") center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem) no-repeat}.was-validated .custom-select:invalid:focus,.custom-select.is-invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,0.25)}.was-validated .form-check-input:invalid~.form-check-label,.was-validated .shiny-input-checkboxgroup .checkbox label>input:invalid~.form-check-label,.shiny-input-checkboxgroup .checkbox .was-validated label>input:invalid~.form-check-label,.was-validated .shiny-input-checkboxgroup .radio label>input:invalid~.form-check-label,.shiny-input-checkboxgroup .radio .was-validated label>input:invalid~.form-check-label,.was-validated .shiny-input-radiogroup .checkbox label>input:invalid~.form-check-label,.shiny-input-radiogroup .checkbox .was-validated label>input:invalid~.form-check-label,.was-validated .shiny-input-radiogroup .radio label>input:invalid~.form-check-label,.shiny-input-radiogroup .radio .was-validated label>input:invalid~.form-check-label,.was-validated .shiny-input-checkboxgroup .checkbox .form-check-input:invalid~label,.was-validated .shiny-input-checkboxgroup .checkbox label>input:invalid~label,.was-validated .shiny-input-checkboxgroup .checkbox .radio label>input:invalid~label,.was-validated .shiny-input-checkboxgroup .radio .checkbox label>input:invalid~label,.was-validated .shiny-input-checkboxgroup .shiny-input-radiogroup .checkbox label>input:invalid~label,.shiny-input-radiogroup .was-validated .shiny-input-checkboxgroup .checkbox label>input:invalid~label,.was-validated .shiny-input-checkboxgroup .checkbox .shiny-input-radiogroup .radio label>input:invalid~label,.shiny-input-radiogroup .radio .was-validated .shiny-input-checkboxgroup .checkbox label>input:invalid~label,.shiny-input-checkboxgroup .checkbox .was-validated .form-check-input:invalid~label,.shiny-input-checkboxgroup .checkbox .was-validated label>input:invalid~label,.shiny-input-checkboxgroup .checkbox .was-validated .radio label>input:invalid~label,.shiny-input-checkboxgroup .radio .checkbox .was-validated label>input:invalid~label,.shiny-input-checkboxgroup .shiny-input-radiogroup .checkbox .was-validated label>input:invalid~label,.shiny-input-radiogroup .shiny-input-checkboxgroup .checkbox .was-validated label>input:invalid~label,.shiny-input-checkboxgroup .checkbox .was-validated .shiny-input-radiogroup .radio label>input:invalid~label,.shiny-input-radiogroup .radio .shiny-input-checkboxgroup .checkbox .was-validated label>input:invalid~label,.was-validated .shiny-input-checkboxgroup .radio .form-check-input:invalid~label,.was-validated .shiny-input-checkboxgroup .radio .checkbox label>input:invalid~label,.was-validated .shiny-input-checkboxgroup .checkbox .radio label>input:invalid~label,.was-validated .shiny-input-checkboxgroup .radio label>input:invalid~label,.was-validated .shiny-input-checkboxgroup .radio .shiny-input-radiogroup .checkbox label>input:invalid~label,.shiny-input-radiogroup .checkbox .was-validated .shiny-input-checkboxgroup .radio label>input:invalid~label,.was-validated .shiny-input-checkboxgroup .shiny-input-radiogroup .radio label>input:invalid~label,.shiny-input-radiogroup .was-validated .shiny-input-checkboxgroup .radio label>input:invalid~label,.shiny-input-checkboxgroup .radio .was-validated .form-check-input:invalid~label,.shiny-input-checkboxgroup .radio .was-validated .checkbox label>input:invalid~label,.shiny-input-checkboxgroup .checkbox .radio .was-validated label>input:invalid~label,.shiny-input-checkboxgroup .radio .was-validated label>input:invalid~label,.shiny-input-checkboxgroup .radio .was-validated .shiny-input-radiogroup .checkbox label>input:invalid~label,.shiny-input-radiogroup .checkbox .shiny-input-checkboxgroup .radio .was-validated label>input:invalid~label,.shiny-input-checkboxgroup .shiny-input-radiogroup .radio .was-validated label>input:invalid~label,.shiny-input-radiogroup .shiny-input-checkboxgroup .radio .was-validated label>input:invalid~label,.was-validated .shiny-input-radiogroup .checkbox .form-check-input:invalid~label,.was-validated .shiny-input-radiogroup .shiny-input-checkboxgroup .checkbox label>input:invalid~label,.shiny-input-checkboxgroup .was-validated .shiny-input-radiogroup .checkbox label>input:invalid~label,.was-validated .shiny-input-radiogroup .checkbox .shiny-input-checkboxgroup .radio label>input:invalid~label,.shiny-input-checkboxgroup .radio .was-validated .shiny-input-radiogroup .checkbox label>input:invalid~label,.was-validated .shiny-input-radiogroup .checkbox label>input:invalid~label,.was-validated .shiny-input-radiogroup .checkbox .radio label>input:invalid~label,.was-validated .shiny-input-radiogroup .radio .checkbox label>input:invalid~label,.shiny-input-radiogroup .checkbox .was-validated .form-check-input:invalid~label,.shiny-input-radiogroup .shiny-input-checkboxgroup .checkbox .was-validated label>input:invalid~label,.shiny-input-checkboxgroup .shiny-input-radiogroup .checkbox .was-validated label>input:invalid~label,.shiny-input-radiogroup .checkbox .was-validated .shiny-input-checkboxgroup .radio label>input:invalid~label,.shiny-input-checkboxgroup .radio .shiny-input-radiogroup .checkbox .was-validated label>input:invalid~label,.shiny-input-radiogroup .checkbox .was-validated label>input:invalid~label,.shiny-input-radiogroup .checkbox .was-validated .radio label>input:invalid~label,.shiny-input-radiogroup .radio .checkbox .was-validated label>input:invalid~label,.was-validated .shiny-input-radiogroup .radio .form-check-input:invalid~label,.was-validated .shiny-input-radiogroup .radio .shiny-input-checkboxgroup .checkbox label>input:invalid~label,.shiny-input-checkboxgroup .checkbox .was-validated .shiny-input-radiogroup .radio label>input:invalid~label,.was-validated .shiny-input-radiogroup .shiny-input-checkboxgroup .radio label>input:invalid~label,.shiny-input-checkboxgroup .was-validated .shiny-input-radiogroup .radio label>input:invalid~label,.was-validated .shiny-input-radiogroup .radio .checkbox label>input:invalid~label,.was-validated .shiny-input-radiogroup .checkbox .radio label>input:invalid~label,.was-validated .shiny-input-radiogroup .radio label>input:invalid~label,.shiny-input-radiogroup .radio .was-validated .form-check-input:invalid~label,.shiny-input-radiogroup .radio .was-validated .shiny-input-checkboxgroup .checkbox label>input:invalid~label,.shiny-input-checkboxgroup .checkbox .shiny-input-radiogroup .radio .was-validated label>input:invalid~label,.shiny-input-radiogroup .shiny-input-checkboxgroup .radio .was-validated label>input:invalid~label,.shiny-input-checkboxgroup .shiny-input-radiogroup .radio .was-validated label>input:invalid~label,.shiny-input-radiogroup .radio .was-validated .checkbox label>input:invalid~label,.shiny-input-radiogroup .checkbox .radio .was-validated label>input:invalid~label,.shiny-input-radiogroup .radio .was-validated label>input:invalid~label,.form-check-input.is-invalid~.form-check-label,.shiny-input-checkboxgroup .checkbox label>input.is-invalid~.form-check-label,.shiny-input-checkboxgroup .radio label>input.is-invalid~.form-check-label,.shiny-input-radiogroup .checkbox label>input.is-invalid~.form-check-label,.shiny-input-radiogroup .radio label>input.is-invalid~.form-check-label,.shiny-input-checkboxgroup .checkbox .form-check-input.is-invalid~label,.shiny-input-checkboxgroup .checkbox label>input.is-invalid~label,.shiny-input-checkboxgroup .checkbox .radio label>input.is-invalid~label,.shiny-input-checkboxgroup .radio .checkbox label>input.is-invalid~label,.shiny-input-checkboxgroup .shiny-input-radiogroup .checkbox label>input.is-invalid~label,.shiny-input-radiogroup .shiny-input-checkboxgroup .checkbox label>input.is-invalid~label,.shiny-input-checkboxgroup .checkbox .shiny-input-radiogroup .radio label>input.is-invalid~label,.shiny-input-radiogroup .radio .shiny-input-checkboxgroup .checkbox label>input.is-invalid~label,.shiny-input-checkboxgroup .radio .form-check-input.is-invalid~label,.shiny-input-checkboxgroup .radio .checkbox label>input.is-invalid~label,.shiny-input-checkboxgroup .checkbox .radio label>input.is-invalid~label,.shiny-input-checkboxgroup .radio label>input.is-invalid~label,.shiny-input-checkboxgroup .radio .shiny-input-radiogroup .checkbox label>input.is-invalid~label,.shiny-input-radiogroup .checkbox .shiny-input-checkboxgroup .radio label>input.is-invalid~label,.shiny-input-checkboxgroup .shiny-input-radiogroup .radio label>input.is-invalid~label,.shiny-input-radiogroup .shiny-input-checkboxgroup .radio label>input.is-invalid~label,.shiny-input-radiogroup .checkbox .form-check-input.is-invalid~label,.shiny-input-radiogroup .shiny-input-checkboxgroup .checkbox label>input.is-invalid~label,.shiny-input-checkboxgroup .shiny-input-radiogroup .checkbox label>input.is-invalid~label,.shiny-input-radiogroup .checkbox .shiny-input-checkboxgroup .radio label>input.is-invalid~label,.shiny-input-checkboxgroup .radio .shiny-input-radiogroup .checkbox label>input.is-invalid~label,.shiny-input-radiogroup .checkbox label>input.is-invalid~label,.shiny-input-radiogroup .checkbox .radio label>input.is-invalid~label,.shiny-input-radiogroup .radio .checkbox label>input.is-invalid~label,.shiny-input-radiogroup .radio .form-check-input.is-invalid~label,.shiny-input-radiogroup .radio .shiny-input-checkboxgroup .checkbox label>input.is-invalid~label,.shiny-input-checkboxgroup .checkbox .shiny-input-radiogroup .radio label>input.is-invalid~label,.shiny-input-radiogroup .shiny-input-checkboxgroup .radio label>input.is-invalid~label,.shiny-input-checkboxgroup .shiny-input-radiogroup .radio label>input.is-invalid~label,.shiny-input-radiogroup .radio .checkbox label>input.is-invalid~label,.shiny-input-radiogroup .checkbox .radio label>input.is-invalid~label,.shiny-input-radiogroup .radio label>input.is-invalid~label{color:#dc3545}.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .shiny-input-checkboxgroup .checkbox label>input:invalid~.invalid-feedback,.shiny-input-checkboxgroup .checkbox .was-validated label>input:invalid~.invalid-feedback,.was-validated .shiny-input-checkboxgroup .radio label>input:invalid~.invalid-feedback,.shiny-input-checkboxgroup .radio .was-validated label>input:invalid~.invalid-feedback,.was-validated .shiny-input-radiogroup .checkbox label>input:invalid~.invalid-feedback,.shiny-input-radiogroup .checkbox .was-validated label>input:invalid~.invalid-feedback,.was-validated .shiny-input-radiogroup .radio label>input:invalid~.invalid-feedback,.shiny-input-radiogroup .radio .was-validated label>input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip,.was-validated .shiny-input-checkboxgroup .checkbox label>input:invalid~.invalid-tooltip,.shiny-input-checkboxgroup .checkbox .was-validated label>input:invalid~.invalid-tooltip,.was-validated .shiny-input-checkboxgroup .radio label>input:invalid~.invalid-tooltip,.shiny-input-checkboxgroup .radio .was-validated label>input:invalid~.invalid-tooltip,.was-validated .shiny-input-radiogroup .checkbox label>input:invalid~.invalid-tooltip,.shiny-input-radiogroup .checkbox .was-validated label>input:invalid~.invalid-tooltip,.was-validated .shiny-input-radiogroup .radio label>input:invalid~.invalid-tooltip,.shiny-input-radiogroup .radio .was-validated label>input:invalid~.invalid-tooltip,.form-check-input.is-invalid~.invalid-feedback,.shiny-input-checkboxgroup .checkbox label>input.is-invalid~.invalid-feedback,.shiny-input-checkboxgroup .radio label>input.is-invalid~.invalid-feedback,.shiny-input-radiogroup .checkbox label>input.is-invalid~.invalid-feedback,.shiny-input-radiogroup .radio label>input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.shiny-input-checkboxgroup .checkbox label>input.is-invalid~.invalid-tooltip,.shiny-input-checkboxgroup .radio label>input.is-invalid~.invalid-tooltip,.shiny-input-radiogroup .checkbox label>input.is-invalid~.invalid-tooltip,.shiny-input-radiogroup .radio label>input.is-invalid~.invalid-tooltip{display:block}.was-validated .custom-control-input:invalid~.custom-control-label,.custom-control-input.is-invalid~.custom-control-label{color:#dc3545}.was-validated .custom-control-input:invalid~.custom-control-label::before,.custom-control-input.is-invalid~.custom-control-label::before{border-color:#dc3545}.was-validated .custom-control-input:invalid:checked~.custom-control-label::before,.custom-control-input.is-invalid:checked~.custom-control-label::before{border-color:#e4606d;background-color:#e4606d}.was-validated .custom-control-input:invalid:focus~.custom-control-label::before,.custom-control-input.is-invalid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(220,53,69,0.25)}.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label::before,.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label::before{border-color:#dc3545}.was-validated .custom-file-input:invalid~.custom-file-label,.custom-file-input.is-invalid~.custom-file-label{border-color:#dc3545}.was-validated .custom-file-input:invalid:focus~.custom-file-label,.custom-file-input.is-invalid:focus~.custom-file-label{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,0.25)}.form-inline{display:flex;display:-webkit-flex;flex-flow:row wrap;-webkit-flex-flow:row wrap;align-items:center;-webkit-align-items:center}.form-inline .form-check,.form-inline .shiny-input-checkboxgroup .checkbox,.shiny-input-checkboxgroup .form-inline .checkbox,.form-inline .shiny-input-checkboxgroup .radio,.shiny-input-checkboxgroup .form-inline .radio,.form-inline .shiny-input-radiogroup .checkbox,.shiny-input-radiogroup .form-inline .checkbox,.form-inline .shiny-input-radiogroup .radio,.shiny-input-radiogroup .form-inline .radio{width:100%}@media (min-width: 576px){.form-inline label{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;justify-content:center;-webkit-justify-content:center;margin-bottom:0}.form-inline .form-group{display:flex;display:-webkit-flex;flex:0 0 auto;-webkit-flex:0 0 auto;flex-flow:row wrap;-webkit-flex-flow:row wrap;align-items:center;-webkit-align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .input-group,.form-inline .custom-select{width:auto}.form-inline .form-check,.form-inline .shiny-input-checkboxgroup .checkbox,.shiny-input-checkboxgroup .form-inline .checkbox,.form-inline .shiny-input-checkboxgroup .radio,.shiny-input-checkboxgroup .form-inline .radio,.form-inline .shiny-input-radiogroup .checkbox,.shiny-input-radiogroup .form-inline .checkbox,.form-inline .shiny-input-radiogroup .radio,.shiny-input-radiogroup .form-inline .radio{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;justify-content:center;-webkit-justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input,.form-inline .shiny-input-checkboxgroup .checkbox label>input,.shiny-input-checkboxgroup .checkbox .form-inline label>input,.form-inline .shiny-input-checkboxgroup .radio label>input,.shiny-input-checkboxgroup .radio .form-inline label>input,.form-inline .shiny-input-radiogroup .checkbox label>input,.shiny-input-radiogroup .checkbox .form-inline label>input,.form-inline .shiny-input-radiogroup .radio label>input,.shiny-input-radiogroup .radio .form-inline label>input{position:relative;flex-shrink:0;-webkit-flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{align-items:center;-webkit-align-items:center;justify-content:center;-webkit-justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;color:#212529;text-align:center;vertical-align:middle;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.btn{transition:none}}.btn:hover{color:#212529;text-decoration:none}.btn:focus,.btn.focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,0.25)}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-default{color:#000;background-color:#dee2e6;border-color:#dee2e6}.btn-default:hover{color:#000;background-color:#c8cfd6;border-color:#c1c9d0}.btn-default:focus,.btn-default.focus{color:#000;background-color:#c8cfd6;border-color:#c1c9d0;box-shadow:0 0 0 .2rem rgba(189,192,196,0.5)}.btn-default.disabled,.btn-default:disabled{color:#000;background-color:#dee2e6;border-color:#dee2e6}.btn-default:not(:disabled):not(.disabled):active,.btn-default.active:not(:disabled):not(.disabled),.show>.btn-default.dropdown-toggle,.in>.btn-default.dropdown-toggle{color:#000;background-color:#c1c9d0;border-color:#bac2cb}.btn-default:not(:disabled):not(.disabled):active:focus,.btn-default.active:not(:disabled):not(.disabled):focus,.show>.btn-default.dropdown-toggle:focus,.in>.btn-default.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(189,192,196,0.5)}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary:focus,.btn-primary.focus{color:#fff;background-color:#0069d9;border-color:#0062cc;box-shadow:0 0 0 .2rem rgba(38,143,255,0.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled):active,.btn-primary.active:not(:disabled):not(.disabled),.show>.btn-primary.dropdown-toggle,.in>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn-primary:not(:disabled):not(.disabled):active:focus,.btn-primary.active:not(:disabled):not(.disabled):focus,.show>.btn-primary.dropdown-toggle:focus,.in>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,0.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary:focus,.btn-secondary.focus{color:#fff;background-color:#5a6268;border-color:#545b62;box-shadow:0 0 0 .2rem rgba(130,138,145,0.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled):active,.btn-secondary.active:not(:disabled):not(.disabled),.show>.btn-secondary.dropdown-toggle,.in>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled):active:focus,.btn-secondary.active:not(:disabled):not(.disabled):focus,.show>.btn-secondary.dropdown-toggle:focus,.in>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(130,138,145,0.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success:focus,.btn-success.focus{color:#fff;background-color:#218838;border-color:#1e7e34;box-shadow:0 0 0 .2rem rgba(72,180,97,0.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled):active,.btn-success.active:not(:disabled):not(.disabled),.show>.btn-success.dropdown-toggle,.in>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled):active:focus,.btn-success.active:not(:disabled):not(.disabled):focus,.show>.btn-success.dropdown-toggle:focus,.in>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(72,180,97,0.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info:focus,.btn-info.focus{color:#fff;background-color:#138496;border-color:#117a8b;box-shadow:0 0 0 .2rem rgba(58,176,195,0.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled):active,.btn-info.active:not(:disabled):not(.disabled),.show>.btn-info.dropdown-toggle,.in>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled):active:focus,.btn-info.active:not(:disabled):not(.disabled):focus,.show>.btn-info.dropdown-toggle:focus,.in>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(58,176,195,0.5)}.btn-warning{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#000;background-color:#e0a800;border-color:#d39e00}.btn-warning:focus,.btn-warning.focus{color:#000;background-color:#e0a800;border-color:#d39e00;box-shadow:0 0 0 .2rem rgba(217,164,6,0.5)}.btn-warning.disabled,.btn-warning:disabled{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled):active,.btn-warning.active:not(:disabled):not(.disabled),.show>.btn-warning.dropdown-toggle,.in>.btn-warning.dropdown-toggle{color:#000;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled):active:focus,.btn-warning.active:not(:disabled):not(.disabled):focus,.show>.btn-warning.dropdown-toggle:focus,.in>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(217,164,6,0.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger:focus,.btn-danger.focus{color:#fff;background-color:#c82333;border-color:#bd2130;box-shadow:0 0 0 .2rem rgba(225,83,97,0.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled):active,.btn-danger.active:not(:disabled):not(.disabled),.show>.btn-danger.dropdown-toggle,.in>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled):active:focus,.btn-danger.active:not(:disabled):not(.disabled):focus,.show>.btn-danger.dropdown-toggle:focus,.in>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(225,83,97,0.5)}.btn-light{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#000;background-color:#e2e6ea;border-color:#dae0e5}.btn-light:focus,.btn-light.focus{color:#000;background-color:#e2e6ea;border-color:#dae0e5;box-shadow:0 0 0 .2rem rgba(211,212,213,0.5)}.btn-light.disabled,.btn-light:disabled{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled):active,.btn-light.active:not(:disabled):not(.disabled),.show>.btn-light.dropdown-toggle,.in>.btn-light.dropdown-toggle{color:#000;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled):active:focus,.btn-light.active:not(:disabled):not(.disabled):focus,.show>.btn-light.dropdown-toggle:focus,.in>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(211,212,213,0.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark:focus,.btn-dark.focus{color:#fff;background-color:#23272b;border-color:#1d2124;box-shadow:0 0 0 .2rem rgba(82,88,93,0.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled):active,.btn-dark.active:not(:disabled):not(.disabled),.show>.btn-dark.dropdown-toggle,.in>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled):active:focus,.btn-dark.active:not(:disabled):not(.disabled):focus,.show>.btn-dark.dropdown-toggle:focus,.in>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(82,88,93,0.5)}.btn-outline-default{color:#dee2e6;border-color:#dee2e6;background-color:transparent}.btn-outline-default:hover{color:#000;background-color:#dee2e6;border-color:#dee2e6}.btn-outline-default:focus,.btn-outline-default.focus{box-shadow:0 0 0 .2rem rgba(222,226,230,0.5)}.btn-outline-default.disabled,.btn-outline-default:disabled{color:#dee2e6;background-color:transparent}.btn-outline-default:not(:disabled):not(.disabled):active,.btn-outline-default.active:not(:disabled):not(.disabled),.show>.btn-outline-default.dropdown-toggle,.in>.btn-outline-default.dropdown-toggle{color:#000;background-color:#dee2e6;border-color:#dee2e6}.btn-outline-default:not(:disabled):not(.disabled):active:focus,.btn-outline-default.active:not(:disabled):not(.disabled):focus,.show>.btn-outline-default.dropdown-toggle:focus,.in>.btn-outline-default.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(222,226,230,0.5)}.btn-outline-primary{color:#007bff;border-color:#007bff;background-color:transparent}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:focus,.btn-outline-primary.focus{box-shadow:0 0 0 .2rem rgba(0,123,255,0.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled):active,.btn-outline-primary.active:not(:disabled):not(.disabled),.show>.btn-outline-primary.dropdown-toggle,.in>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.btn-outline-primary.active:not(:disabled):not(.disabled):focus,.show>.btn-outline-primary.dropdown-toggle:focus,.in>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,0.5)}.btn-outline-secondary{color:#6c757d;border-color:#6c757d;background-color:transparent}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:focus,.btn-outline-secondary.focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled):active,.btn-outline-secondary.active:not(:disabled):not(.disabled),.show>.btn-outline-secondary.dropdown-toggle,.in>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.btn-outline-secondary.active:not(:disabled):not(.disabled):focus,.show>.btn-outline-secondary.dropdown-toggle:focus,.in>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.btn-outline-success{color:#28a745;border-color:#28a745;background-color:transparent}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:focus,.btn-outline-success.focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled):active,.btn-outline-success.active:not(:disabled):not(.disabled),.show>.btn-outline-success.dropdown-toggle,.in>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled):active:focus,.btn-outline-success.active:not(:disabled):not(.disabled):focus,.show>.btn-outline-success.dropdown-toggle:focus,.in>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.btn-outline-info{color:#17a2b8;border-color:#17a2b8;background-color:transparent}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:focus,.btn-outline-info.focus{box-shadow:0 0 0 .2rem rgba(23,162,184,0.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled):active,.btn-outline-info.active:not(:disabled):not(.disabled),.show>.btn-outline-info.dropdown-toggle,.in>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled):active:focus,.btn-outline-info.active:not(:disabled):not(.disabled):focus,.show>.btn-outline-info.dropdown-toggle:focus,.in>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,0.5)}.btn-outline-warning{color:#ffc107;border-color:#ffc107;background-color:transparent}.btn-outline-warning:hover{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:focus,.btn-outline-warning.focus{box-shadow:0 0 0 .2rem rgba(255,193,7,0.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled):active,.btn-outline-warning.active:not(:disabled):not(.disabled),.show>.btn-outline-warning.dropdown-toggle,.in>.btn-outline-warning.dropdown-toggle{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.btn-outline-warning.active:not(:disabled):not(.disabled):focus,.show>.btn-outline-warning.dropdown-toggle:focus,.in>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,0.5)}.btn-outline-danger{color:#dc3545;border-color:#dc3545;background-color:transparent}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:focus,.btn-outline-danger.focus{box-shadow:0 0 0 .2rem rgba(220,53,69,0.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled):active,.btn-outline-danger.active:not(:disabled):not(.disabled),.show>.btn-outline-danger.dropdown-toggle,.in>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.btn-outline-danger.active:not(:disabled):not(.disabled):focus,.show>.btn-outline-danger.dropdown-toggle:focus,.in>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,0.5)}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa;background-color:transparent}.btn-outline-light:hover{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:focus,.btn-outline-light.focus{box-shadow:0 0 0 .2rem rgba(248,249,250,0.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled):active,.btn-outline-light.active:not(:disabled):not(.disabled),.show>.btn-outline-light.dropdown-toggle,.in>.btn-outline-light.dropdown-toggle{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled):active:focus,.btn-outline-light.active:not(:disabled):not(.disabled):focus,.show>.btn-outline-light.dropdown-toggle:focus,.in>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,0.5)}.btn-outline-dark{color:#343a40;border-color:#343a40;background-color:transparent}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:focus,.btn-outline-dark.focus{box-shadow:0 0 0 .2rem rgba(52,58,64,0.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled):active,.btn-outline-dark.active:not(:disabled):not(.disabled),.show>.btn-outline-dark.dropdown-toggle,.in>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.btn-outline-dark.active:not(:disabled):not(.disabled):focus,.show>.btn-outline-dark.dropdown-toggle:focus,.in>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,0.5)}.btn-link{font-weight:400;color:#007bff;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none}.btn-link:hover{color:#0056b3;text-decoration:underline;-webkit-text-decoration:underline;-moz-text-decoration:underline;-ms-text-decoration:underline;-o-text-decoration:underline}.btn-link:focus,.btn-link.focus{text-decoration:underline;-webkit-text-decoration:underline;-moz-text-decoration:underline;-ms-text-decoration:underline;-o-text-decoration:underline}.btn-link:disabled,.btn-link.disabled{color:#6c757d;pointer-events:none}.btn-lg,.btn-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-sm,.btn-group-sm>.btn{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input.btn-block[type="submit"],input.btn-block[type="reset"],input.btn-block[type="button"]{width:100%}.fade{transition:opacity 0.15s linear}@media (prefers-reduced-motion: reduce){.fade{transition:none}}.fade:not(.show):not(.in){opacity:0}.collapse:not(.show):not(.in){display:none}.collapsing{position:relative;height:0;overflow:hidden;transition:height 0.35s ease}@media (prefers-reduced-motion: reduce){.collapsing{transition:none}}.dropup,.dropright,.dropdown,.dropleft{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,0.15);border-radius:.25rem}.dropdown-menu-left{right:auto;left:0}.dropdown-menu-right{right:0;left:auto}@media (min-width: 576px){.dropdown-menu-sm-left{right:auto;left:0}.dropdown-menu-sm-right{right:0;left:auto}}@media (min-width: 768px){.dropdown-menu-md-left{right:auto;left:0}.dropdown-menu-md-right{right:0;left:auto}}@media (min-width: 992px){.dropdown-menu-lg-left{right:auto;left:0}.dropdown-menu-lg-right{right:0;left:auto}}@media (min-width: 1200px){.dropdown-menu-xl-left{right:auto;left:0}.dropdown-menu-xl-right{right:0;left:auto}}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-menu[x-placement^="top"],.dropdown-menu[x-placement^="right"],.dropdown-menu[x-placement^="bottom"],.dropdown-menu[x-placement^="left"]{right:auto;bottom:auto}.dropdown-divider,.dropdown-menu>li.divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item,.dropdown-menu>li>a{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:hover,.dropdown-menu>li>a:hover,.dropdown-item:focus,.dropdown-menu>li>a:focus{color:#16181b;text-decoration:none;background-color:#e9ecef}.dropdown-item.active,.dropdown-menu>li>a.active,.dropdown-item:active,.dropdown-menu>li>a:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-menu>li>a.disabled,.dropdown-item:disabled,.dropdown-menu>li>a:disabled{color:#adb5bd;pointer-events:none;background-color:transparent}.dropdown-menu.show,.dropdown-menu.in{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;flex:1 1 auto;-webkit-flex:1 1 auto}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover{z-index:1}.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:1}.btn-toolbar{display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;justify-content:flex-start;-webkit-justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn:not(:first-child),.btn-group>.btn-group:not(:first-child){margin-left:-1px}.btn-group>.btn:not(:last-child):not(.dropdown-toggle),.btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:not(:first-child),.btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after,.dropright .dropdown-toggle-split::after{margin-left:0}.dropleft .dropdown-toggle-split::before{margin-right:0}.btn-sm+.dropdown-toggle-split,.btn-group-sm>.btn+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-lg+.dropdown-toggle-split,.btn-group-lg>.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;-webkit-flex-direction:column;align-items:flex-start;-webkit-align-items:flex-start;justify-content:center;-webkit-justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),.btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type="radio"],.btn-group-toggle>.btn input[type="checkbox"],.btn-group-toggle>.btn-group>.btn input[type="radio"],.btn-group-toggle>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;align-items:stretch;-webkit-align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-control-plaintext,.input-group>.custom-select,.input-group>.custom-file{position:relative;flex:1 1 auto;-webkit-flex:1 1 auto;width:1%;min-width:0;margin-bottom:0}.input-group>.form-control+.form-control,.input-group>.form-control+.custom-select,.input-group>.form-control+.custom-file,.input-group>.form-control-plaintext+.form-control,.input-group>.form-control-plaintext+.custom-select,.input-group>.form-control-plaintext+.custom-file,.input-group>.custom-select+.form-control,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.custom-file,.input-group>.custom-file+.form-control,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.custom-file{margin-left:-1px}.input-group>.form-control:focus,.input-group>.custom-select:focus,.input-group>.custom-file .custom-file-input:focus~.custom-file-label{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.form-control:not(:first-child),.input-group>.custom-select:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group:not(.has-validation)>.form-control:not(:last-child),.input-group:not(.has-validation)>.custom-select:not(:last-child),.input-group:not(.has-validation)>.custom-file:not(:last-child) .custom-file-label::after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>.form-control:nth-last-child(n + 3),.input-group.has-validation>.custom-select:nth-last-child(n + 3),.input-group.has-validation>.custom-file:nth-last-child(n + 3) .custom-file-label::after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group-prepend,.input-group-append{display:flex;display:-webkit-flex}.input-group-prepend .btn,.input-group-append .btn{position:relative;z-index:2}.input-group-prepend .btn:focus,.input-group-append .btn:focus{z-index:3}.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.input-group-text,.input-group-append .input-group-text+.btn{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type="radio"],.input-group-text input[type="checkbox"]{margin-top:0}.input-group-lg>.form-control:not(textarea),.input-group-lg>.custom-select{height:calc(1.5em + 1rem + 2px)}.input-group-lg>.form-control,.input-group-lg>.custom-select,.input-group-lg>.input-group-prepend>.input-group-text,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-append>.btn{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-sm>.form-control:not(textarea),.input-group-sm>.custom-select{height:calc(1.5em + .5rem + 2px)}.input-group-sm>.form-control,.input-group-sm>.custom-select,.input-group-sm>.input-group-prepend>.input-group-text,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-append>.btn{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-lg>.custom-select,.input-group-sm>.custom-select{padding-right:1.75rem}.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text,.input-group:not(.has-validation)>.input-group-append:not(:last-child)>.btn,.input-group:not(.has-validation)>.input-group-append:not(:last-child)>.input-group-text,.input-group.has-validation>.input-group-append:nth-last-child(n + 3)>.btn,.input-group.has-validation>.input-group-append:nth-last-child(n + 3)>.input-group-text,.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;z-index:1;display:block;min-height:1.5rem;padding-left:1.5rem;color-adjust:exact;-webkit-print-color-adjust:exact}.custom-control-inline{display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;left:0;z-index:-1;width:1rem;height:1.25rem;opacity:0}.custom-control-input:checked~.custom-control-label::before{color:#fff;border-color:#007bff;background-color:#007bff}.custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(0,123,255,0.25)}.custom-control-input:focus:not(:checked)~.custom-control-label::before{border-color:#80bdff}.custom-control-input:not(:disabled):active~.custom-control-label::before{color:#000;background-color:#b3d7ff;border-color:#b3d7ff}.custom-control-input[disabled]~.custom-control-label,.custom-control-input:disabled~.custom-control-label{color:#6c757d}.custom-control-input[disabled]~.custom-control-label::before,.custom-control-input:disabled~.custom-control-label::before{background-color:#e9ecef}.custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.custom-control-label::before{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;pointer-events:none;content:"";background-color:#fff;border:#adb5bd solid 1px}.custom-control-label::after{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:"";background:50% / 50% 50% no-repeat}.custom-checkbox .custom-control-label::before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before{border-color:#007bff;background-color:#007bff}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,0.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label::before{background-color:rgba(0,123,255,0.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,0.5)}.custom-switch{padding-left:2.25rem}.custom-switch .custom-control-label::before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}.custom-switch .custom-control-label::after{top:calc(.25rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#adb5bd;border-radius:.5rem;transition:transform 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.custom-switch .custom-control-label::after{transition:none}}.custom-switch .custom-control-input:checked~.custom-control-label::after{background-color:#fff;transform:translateX(.75rem)}.custom-switch .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,0.5)}.custom-select{display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem 1.75rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat;border:1px solid #ced4da;border-radius:.25rem;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,0.25)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{display:none}.custom-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}.custom-select-sm{height:calc(1.5em + .5rem + 2px);padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.custom-select-lg{height:calc(1.5em + 1rem + 2px);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.custom-file{position:relative;display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(1.5em + .75rem + 2px);margin:0;overflow:hidden;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,0.25)}.custom-file-input[disabled]~.custom-file-label,.custom-file-input:disabled~.custom-file-label{background-color:#e9ecef}.custom-file-input:lang(en)~.custom-file-label::after{content:"Browse"}.custom-file-input~.custom-file-label[data-browse]::after{content:attr(data-browse)}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;overflow:hidden;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(1.5em + .75rem);padding:.375rem .75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#e9ecef;border-left:inherit;border-radius:0 .25rem .25rem 0}.custom-range{width:100%;height:1.4rem;padding:0;background-color:transparent;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none}.custom-range:focus{outline:0}.custom-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,0.25)}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,0.25)}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,0.25)}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#007bff;border:0;border-radius:1rem;transition:background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none}@media (prefers-reduced-motion: reduce){.custom-range::-webkit-slider-thumb{transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:#b3d7ff}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#007bff;border:0;border-radius:1rem;transition:background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none}@media (prefers-reduced-motion: reduce){.custom-range::-moz-range-thumb{transition:none}}.custom-range::-moz-range-thumb:active{background-color:#b3d7ff}.custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#007bff;border:0;border-radius:1rem;transition:background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none}@media (prefers-reduced-motion: reduce){.custom-range::-ms-thumb{transition:none}}.custom-range::-ms-thumb:active{background-color:#b3d7ff}.custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.custom-range::-ms-fill-lower{background-color:#dee2e6;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px;background-color:#dee2e6;border-radius:1rem}.custom-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.custom-range:disabled::-moz-range-thumb{background-color:#adb5bd}.custom-range:disabled::-moz-range-track{cursor:default}.custom-range:disabled::-ms-thumb{background-color:#adb5bd}.custom-control-label::before,.custom-file-label,.custom-select{transition:background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.custom-control-label::before,.custom-file-label,.custom-select{transition:none}}.nav{display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link,.nav-tabs>li>a,.nav-pills>li>a,ul.nav.navbar-nav>li>a{display:block;padding:.5rem 1rem}.nav-link:hover,.nav-tabs>li>a:hover,.nav-pills>li>a:hover,ul.nav.navbar-nav>li>a:hover,.nav-link:focus,.nav-tabs>li>a:focus,.nav-pills>li>a:focus,ul.nav.navbar-nav>li>a:focus{text-decoration:none}.nav-link.disabled,.nav-tabs>li>a.disabled,.nav-pills>li>a.disabled,ul.nav.navbar-nav>li>a.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-link,.nav-tabs>li>a,.nav-tabs .nav-pills>li>a,.nav-tabs ul.nav.navbar-nav>li>a{margin-bottom:-1px;border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:hover,.nav-tabs>li>a:hover,.nav-tabs .nav-pills>li>a:hover,.nav-tabs ul.nav.navbar-nav>li>a:hover,.nav-tabs .nav-link:focus,.nav-tabs>li>a:focus,.nav-tabs .nav-pills>li>a:focus,.nav-tabs ul.nav.navbar-nav>li>a:focus{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled,.nav-tabs>li>a.disabled,.nav-tabs .nav-pills>li>a.disabled,.nav-tabs ul.nav.navbar-nav>li>a.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-link.active,.nav-tabs>li>a.active,.nav-tabs .nav-pills>li>a.active,.nav-tabs ul.nav.navbar-nav>li>a.active,.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-item.in .nav-link,.nav-tabs .nav-item.show .nav-tabs>li>a,.nav-tabs .nav-item.in .nav-tabs>li>a,.nav-tabs .nav-item.show .nav-pills>li>a,.nav-tabs .nav-item.in .nav-pills>li>a,.nav-tabs>li.show .nav-link,.nav-tabs>li.in .nav-link,.nav-tabs>li.show .nav-tabs>li>a,.nav-tabs>li.in .nav-tabs>li>a,.nav-tabs>li.show .nav-pills>li>a,.nav-tabs>li.in .nav-pills>li>a,.nav-tabs .nav-pills>li.show .nav-link,.nav-tabs .nav-pills>li.in .nav-link,.nav-tabs .nav-pills>li.show .nav-tabs>li>a,.nav-tabs .nav-pills>li.in .nav-tabs>li>a,.nav-tabs .nav-pills>li.show .nav-pills>li>a,.nav-tabs .nav-pills>li.in .nav-pills>li>a,.nav-tabs .nav-item.show ul.nav.navbar-nav>li>a,.nav-tabs .nav-item.in ul.nav.navbar-nav>li>a,.nav-tabs>li.show ul.nav.navbar-nav>li>a,.nav-tabs>li.in ul.nav.navbar-nav>li>a,.nav-tabs .nav-pills>li.show ul.nav.navbar-nav>li>a,.nav-tabs .nav-pills>li.in ul.nav.navbar-nav>li>a,.nav-tabs ul.nav.navbar-nav>li.show:not(.dropdown) .nav-link,.nav-tabs ul.nav.navbar-nav>li.in:not(.dropdown) .nav-link,.nav-tabs ul.nav.navbar-nav>li.show:not(.dropdown) .nav-tabs>li>a,.nav-tabs ul.nav.navbar-nav>li.in:not(.dropdown) .nav-tabs>li>a,.nav-tabs ul.nav.navbar-nav>li.show:not(.dropdown) .nav-pills>li>a,.nav-tabs ul.nav.navbar-nav>li.in:not(.dropdown) .nav-pills>li>a,.nav-tabs ul.nav.navbar-nav>li.show:not(.dropdown) ul.nav.navbar-nav>li>a,.nav-tabs ul.nav.navbar-nav>li.in:not(.dropdown) ul.nav.navbar-nav>li>a{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link,.nav-pills .nav-tabs>li>a,.nav-pills>li>a,.nav-pills ul.nav.navbar-nav>li>a{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .nav-tabs>li>a.active,.nav-pills>li>a.active,.nav-pills ul.nav.navbar-nav>li>a.active,.nav-pills .show>.nav-link,.nav-pills .in>.nav-link,.nav-pills .nav-tabs>li.show>a,.nav-pills .nav-tabs>li.in>a,.nav-pills>li.show>a,.nav-pills>li.in>a,.nav-pills ul.nav.navbar-nav>li.show>a,.nav-pills ul.nav.navbar-nav>li.in>a{color:#fff;background-color:#007bff}.nav-fill>.nav-link,.nav-tabs>li.nav-fill>a,.nav-pills>li.nav-fill>a,ul.nav.navbar-nav>li.nav-fill>a,.nav-fill .nav-item,.nav-fill .nav-tabs>li,.nav-fill .nav-pills>li,.nav-fill ul.nav.navbar-nav>li:not(.dropdown){flex:1 1 auto;-webkit-flex:1 1 auto;text-align:center}.nav-justified>.nav-link,.nav-tabs>li.nav-justified>a,.nav-pills>li.nav-justified>a,ul.nav.navbar-nav>li.nav-justified>a,.nav-justified .nav-item,.nav-justified .nav-tabs>li,.nav-justified .nav-pills>li,.nav-justified ul.nav.navbar-nav>li:not(.dropdown){flex-basis:0;-webkit-flex-basis:0;flex-grow:1;-webkit-flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between;padding:.5rem 1rem}.navbar .container,.navbar .container-fluid,.navbar .container-sm,.navbar .container-md,.navbar .container-lg,.navbar .container-xl{display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-nav{display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link,.navbar-nav .nav-tabs>li>a,.navbar-nav .nav-pills>li>a,ul.nav.navbar-nav>li>a{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{flex-basis:100%;-webkit-flex-basis:100%;flex-grow:1;-webkit-flex-grow:1;align-items:center;-webkit-align-items:center}.navbar-toggler,.navbar-toggle{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:hover,.navbar-toggle:hover,.navbar-toggler:focus,.navbar-toggle:focus{text-decoration:none}.navbar-toggler-icon,.navbar-toggle>.icon-bar:last-child{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:50% / 100% 100% no-repeat}.navbar-nav-scroll{max-height:75vh;overflow-y:auto}@media (max-width: 575.98px){.navbar-expand-sm>.container,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl)>.container,.navbar-expand-sm>.container-fluid,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl)>.container-fluid,.navbar-expand-sm>.container-sm,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl)>.container-sm,.navbar-expand-sm>.container-md,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl)>.container-md,.navbar-expand-sm>.container-lg,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl)>.container-lg,.navbar-expand-sm>.container-xl,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl)>.container-xl{padding-right:0;padding-left:0}}@media (min-width: 576px){.navbar-expand-sm,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl){flex-flow:row nowrap;-webkit-flex-flow:row nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-sm .navbar-nav,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl) .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl) .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link,.navbar-expand-sm .navbar-nav .nav-tabs>li>a,.navbar-expand-sm .navbar-nav .nav-pills>li>a,.navbar-expand-sm ul.nav.navbar-nav>li>a,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl) .navbar-nav .nav-link,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl) .navbar-nav .nav-tabs>li>a,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl) .navbar-nav .nav-pills>li>a,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl) ul.nav.navbar-nav>li>a{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl)>.container,.navbar-expand-sm>.container-fluid,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl)>.container-fluid,.navbar-expand-sm>.container-sm,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl)>.container-sm,.navbar-expand-sm>.container-md,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl)>.container-md,.navbar-expand-sm>.container-lg,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl)>.container-lg,.navbar-expand-sm>.container-xl,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl)>.container-xl{flex-wrap:nowrap;-webkit-flex-wrap:nowrap}.navbar-expand-sm .navbar-nav-scroll,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl) .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl) .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-sm .navbar-toggler,.navbar-expand-sm .navbar-toggle,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl) .navbar-toggler,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl) .navbar-toggle{display:none}}@media (max-width: 767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-md,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-xl{padding-right:0;padding-left:0}}@media (min-width: 768px){.navbar-expand-md{flex-flow:row nowrap;-webkit-flex-flow:row nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link,.navbar-expand-md .navbar-nav .nav-tabs>li>a,.navbar-expand-md .navbar-nav .nav-pills>li>a,.navbar-expand-md ul.nav.navbar-nav>li>a{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-md,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-xl{flex-wrap:nowrap;-webkit-flex-wrap:nowrap}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-md .navbar-toggler,.navbar-expand-md .navbar-toggle{display:none}}@media (max-width: 991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-xl{padding-right:0;padding-left:0}}@media (min-width: 992px){.navbar-expand-lg{flex-flow:row nowrap;-webkit-flex-flow:row nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link,.navbar-expand-lg .navbar-nav .nav-tabs>li>a,.navbar-expand-lg .navbar-nav .nav-pills>li>a,.navbar-expand-lg ul.nav.navbar-nav>li>a{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-xl{flex-wrap:nowrap;-webkit-flex-wrap:nowrap}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-lg .navbar-toggler,.navbar-expand-lg .navbar-toggle{display:none}}@media (max-width: 1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-xl{padding-right:0;padding-left:0}}@media (min-width: 1200px){.navbar-expand-xl{flex-flow:row nowrap;-webkit-flex-flow:row nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link,.navbar-expand-xl .navbar-nav .nav-tabs>li>a,.navbar-expand-xl .navbar-nav .nav-pills>li>a,.navbar-expand-xl ul.nav.navbar-nav>li>a{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-xl{flex-wrap:nowrap;-webkit-flex-wrap:nowrap}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-xl .navbar-toggler,.navbar-expand-xl .navbar-toggle{display:none}}.navbar-expand{flex-flow:row nowrap;-webkit-flex-flow:row nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-sm,.navbar-expand>.container-md,.navbar-expand>.container-lg,.navbar-expand>.container-xl{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link,.navbar-expand .navbar-nav .nav-tabs>li>a,.navbar-expand .navbar-nav .nav-pills>li>a,.navbar-expand ul.nav.navbar-nav>li>a{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-sm,.navbar-expand>.container-md,.navbar-expand>.container-lg,.navbar-expand>.container-xl{flex-wrap:nowrap;-webkit-flex-wrap:nowrap}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand .navbar-toggler,.navbar-expand .navbar-toggle{display:none}.navbar-light,.navbar.navbar-default{background-color:#f8f9fa}.navbar-light .navbar-brand,.navbar.navbar-default .navbar-brand{color:#000}.navbar-light .navbar-brand:hover,.navbar.navbar-default .navbar-brand:hover,.navbar-light .navbar-brand:focus,.navbar.navbar-default .navbar-brand:focus{color:#000}.navbar-light .navbar-nav .nav-link,.navbar-light .navbar-nav .nav-tabs>li>a,.navbar-light .navbar-nav .nav-pills>li>a,.navbar.navbar-default .navbar-nav .nav-link,.navbar.navbar-default .navbar-nav .nav-tabs>li>a,.navbar.navbar-default .navbar-nav .nav-pills>li>a,.navbar-light ul.nav.navbar-nav>li>a,.navbar.navbar-default ul.nav.navbar-nav>li>a{color:rgba(0,0,0,0.5)}.navbar-light .navbar-nav .nav-link:hover,.navbar-light .navbar-nav .nav-tabs>li>a:hover,.navbar-light .navbar-nav .nav-pills>li>a:hover,.navbar.navbar-default .navbar-nav .nav-link:hover,.navbar.navbar-default .navbar-nav .nav-tabs>li>a:hover,.navbar.navbar-default .navbar-nav .nav-pills>li>a:hover,.navbar-light ul.nav.navbar-nav>li>a:hover,.navbar.navbar-default ul.nav.navbar-nav>li>a:hover,.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-tabs>li>a:focus,.navbar-light .navbar-nav .nav-pills>li>a:focus,.navbar.navbar-default .navbar-nav .nav-link:focus,.navbar.navbar-default .navbar-nav .nav-tabs>li>a:focus,.navbar.navbar-default .navbar-nav .nav-pills>li>a:focus,.navbar-light ul.nav.navbar-nav>li>a:focus,.navbar.navbar-default ul.nav.navbar-nav>li>a:focus{color:rgba(0,0,0,0.75)}.navbar-light .navbar-nav .nav-link.disabled,.navbar-light .navbar-nav .nav-tabs>li>a.disabled,.navbar-light .navbar-nav .nav-pills>li>a.disabled,.navbar.navbar-default .navbar-nav .nav-link.disabled,.navbar.navbar-default .navbar-nav .nav-tabs>li>a.disabled,.navbar.navbar-default .navbar-nav .nav-pills>li>a.disabled,.navbar-light ul.nav.navbar-nav>li>a.disabled,.navbar.navbar-default ul.nav.navbar-nav>li>a.disabled{color:rgba(0,0,0,0.25)}.navbar-light .navbar-nav .show>.nav-link,.navbar-light .navbar-nav .in>.nav-link,.navbar-light .navbar-nav .nav-tabs>li.show>a,.navbar-light .navbar-nav .nav-tabs>li.in>a,.navbar-light .navbar-nav .nav-pills>li.show>a,.navbar-light .navbar-nav .nav-pills>li.in>a,.navbar.navbar-default .navbar-nav .show>.nav-link,.navbar.navbar-default .navbar-nav .in>.nav-link,.navbar.navbar-default .navbar-nav .nav-tabs>li.show>a,.navbar.navbar-default .navbar-nav .nav-tabs>li.in>a,.navbar.navbar-default .navbar-nav .nav-pills>li.show>a,.navbar.navbar-default .navbar-nav .nav-pills>li.in>a,.navbar-light ul.nav.navbar-nav>li.show>a,.navbar-light ul.nav.navbar-nav>li.in>a,.navbar.navbar-default ul.nav.navbar-nav>li.show>a,.navbar.navbar-default ul.nav.navbar-nav>li.in>a,.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-tabs>li.active>a,.navbar-light .navbar-nav .nav-pills>li.active>a,.navbar.navbar-default .navbar-nav .active>.nav-link,.navbar.navbar-default .navbar-nav .nav-tabs>li.active>a,.navbar.navbar-default .navbar-nav .nav-pills>li.active>a,.navbar-light ul.nav.navbar-nav>li.active>a,.navbar.navbar-default ul.nav.navbar-nav>li.active>a,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .nav-link.in,.navbar-light .navbar-nav .nav-tabs>li>a.show,.navbar-light .navbar-nav .nav-tabs>li>a.in,.navbar-light .navbar-nav .nav-pills>li>a.show,.navbar-light .navbar-nav .nav-pills>li>a.in,.navbar.navbar-default .navbar-nav .nav-link.show,.navbar.navbar-default .navbar-nav .nav-link.in,.navbar.navbar-default .navbar-nav .nav-tabs>li>a.show,.navbar.navbar-default .navbar-nav .nav-tabs>li>a.in,.navbar.navbar-default .navbar-nav .nav-pills>li>a.show,.navbar.navbar-default .navbar-nav .nav-pills>li>a.in,.navbar-light ul.nav.navbar-nav>li>a.show,.navbar-light ul.nav.navbar-nav>li>a.in,.navbar.navbar-default ul.nav.navbar-nav>li>a.show,.navbar.navbar-default ul.nav.navbar-nav>li>a.in,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-tabs>li>a.active,.navbar-light .navbar-nav .nav-pills>li>a.active,.navbar.navbar-default .navbar-nav .nav-link.active,.navbar.navbar-default .navbar-nav .nav-tabs>li>a.active,.navbar.navbar-default .navbar-nav .nav-pills>li>a.active,.navbar-light ul.nav.navbar-nav>li>a.active,.navbar.navbar-default ul.nav.navbar-nav>li>a.active{color:#000}.navbar-light .navbar-toggler,.navbar-light .navbar-toggle,.navbar.navbar-default .navbar-toggler,.navbar.navbar-default .navbar-toggle{color:rgba(0,0,0,0.5);border-color:rgba(0,0,0,0.1)}.navbar-light .navbar-toggler-icon,.navbar-light .navbar-toggle>.icon-bar:last-child,.navbar.navbar-default .navbar-toggler-icon,.navbar.navbar-default .navbar-toggle>.icon-bar:last-child{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280,0,0,0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text,.navbar.navbar-default .navbar-text{color:rgba(0,0,0,0.5)}.navbar-light .navbar-text a,.navbar.navbar-default .navbar-text a{color:#000}.navbar-light .navbar-text a:hover,.navbar.navbar-default .navbar-text a:hover,.navbar-light .navbar-text a:focus,.navbar.navbar-default .navbar-text a:focus{color:#000}.navbar-dark,.navbar.navbar-inverse{background-color:#343a40}.navbar-dark .navbar-brand,.navbar.navbar-inverse .navbar-brand{color:#fff}.navbar-dark .navbar-brand:hover,.navbar.navbar-inverse .navbar-brand:hover,.navbar-dark .navbar-brand:focus,.navbar.navbar-inverse .navbar-brand:focus{color:#fff}.navbar-dark .navbar-nav .nav-link,.navbar-dark .navbar-nav .nav-tabs>li>a,.navbar-dark .navbar-nav .nav-pills>li>a,.navbar.navbar-inverse .navbar-nav .nav-link,.navbar.navbar-inverse .navbar-nav .nav-tabs>li>a,.navbar.navbar-inverse .navbar-nav .nav-pills>li>a,.navbar-dark ul.nav.navbar-nav>li>a,.navbar.navbar-inverse ul.nav.navbar-nav>li>a{color:rgba(255,255,255,0.5)}.navbar-dark .navbar-nav .nav-link:hover,.navbar-dark .navbar-nav .nav-tabs>li>a:hover,.navbar-dark .navbar-nav .nav-pills>li>a:hover,.navbar.navbar-inverse .navbar-nav .nav-link:hover,.navbar.navbar-inverse .navbar-nav .nav-tabs>li>a:hover,.navbar.navbar-inverse .navbar-nav .nav-pills>li>a:hover,.navbar-dark ul.nav.navbar-nav>li>a:hover,.navbar.navbar-inverse ul.nav.navbar-nav>li>a:hover,.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-tabs>li>a:focus,.navbar-dark .navbar-nav .nav-pills>li>a:focus,.navbar.navbar-inverse .navbar-nav .nav-link:focus,.navbar.navbar-inverse .navbar-nav .nav-tabs>li>a:focus,.navbar.navbar-inverse .navbar-nav .nav-pills>li>a:focus,.navbar-dark ul.nav.navbar-nav>li>a:focus,.navbar.navbar-inverse ul.nav.navbar-nav>li>a:focus{color:rgba(255,255,255,0.75)}.navbar-dark .navbar-nav .nav-link.disabled,.navbar-dark .navbar-nav .nav-tabs>li>a.disabled,.navbar-dark .navbar-nav .nav-pills>li>a.disabled,.navbar.navbar-inverse .navbar-nav .nav-link.disabled,.navbar.navbar-inverse .navbar-nav .nav-tabs>li>a.disabled,.navbar.navbar-inverse .navbar-nav .nav-pills>li>a.disabled,.navbar-dark ul.nav.navbar-nav>li>a.disabled,.navbar.navbar-inverse ul.nav.navbar-nav>li>a.disabled{color:rgba(255,255,255,0.25)}.navbar-dark .navbar-nav .show>.nav-link,.navbar-dark .navbar-nav .in>.nav-link,.navbar-dark .navbar-nav .nav-tabs>li.show>a,.navbar-dark .navbar-nav .nav-tabs>li.in>a,.navbar-dark .navbar-nav .nav-pills>li.show>a,.navbar-dark .navbar-nav .nav-pills>li.in>a,.navbar.navbar-inverse .navbar-nav .show>.nav-link,.navbar.navbar-inverse .navbar-nav .in>.nav-link,.navbar.navbar-inverse .navbar-nav .nav-tabs>li.show>a,.navbar.navbar-inverse .navbar-nav .nav-tabs>li.in>a,.navbar.navbar-inverse .navbar-nav .nav-pills>li.show>a,.navbar.navbar-inverse .navbar-nav .nav-pills>li.in>a,.navbar-dark ul.nav.navbar-nav>li.show>a,.navbar-dark ul.nav.navbar-nav>li.in>a,.navbar.navbar-inverse ul.nav.navbar-nav>li.show>a,.navbar.navbar-inverse ul.nav.navbar-nav>li.in>a,.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-tabs>li.active>a,.navbar-dark .navbar-nav .nav-pills>li.active>a,.navbar.navbar-inverse .navbar-nav .active>.nav-link,.navbar.navbar-inverse .navbar-nav .nav-tabs>li.active>a,.navbar.navbar-inverse .navbar-nav .nav-pills>li.active>a,.navbar-dark ul.nav.navbar-nav>li.active>a,.navbar.navbar-inverse ul.nav.navbar-nav>li.active>a,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .nav-link.in,.navbar-dark .navbar-nav .nav-tabs>li>a.show,.navbar-dark .navbar-nav .nav-tabs>li>a.in,.navbar-dark .navbar-nav .nav-pills>li>a.show,.navbar-dark .navbar-nav .nav-pills>li>a.in,.navbar.navbar-inverse .navbar-nav .nav-link.show,.navbar.navbar-inverse .navbar-nav .nav-link.in,.navbar.navbar-inverse .navbar-nav .nav-tabs>li>a.show,.navbar.navbar-inverse .navbar-nav .nav-tabs>li>a.in,.navbar.navbar-inverse .navbar-nav .nav-pills>li>a.show,.navbar.navbar-inverse .navbar-nav .nav-pills>li>a.in,.navbar-dark ul.nav.navbar-nav>li>a.show,.navbar-dark ul.nav.navbar-nav>li>a.in,.navbar.navbar-inverse ul.nav.navbar-nav>li>a.show,.navbar.navbar-inverse ul.nav.navbar-nav>li>a.in,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-tabs>li>a.active,.navbar-dark .navbar-nav .nav-pills>li>a.active,.navbar.navbar-inverse .navbar-nav .nav-link.active,.navbar.navbar-inverse .navbar-nav .nav-tabs>li>a.active,.navbar.navbar-inverse .navbar-nav .nav-pills>li>a.active,.navbar-dark ul.nav.navbar-nav>li>a.active,.navbar.navbar-inverse ul.nav.navbar-nav>li>a.active{color:#fff}.navbar-dark .navbar-toggler,.navbar-dark .navbar-toggle,.navbar.navbar-inverse .navbar-toggler,.navbar.navbar-inverse .navbar-toggle{color:rgba(255,255,255,0.5);border-color:rgba(255,255,255,0.1)}.navbar-dark .navbar-toggler-icon,.navbar-dark .navbar-toggle>.icon-bar:last-child,.navbar.navbar-inverse .navbar-toggler-icon,.navbar.navbar-inverse .navbar-toggle>.icon-bar:last-child{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255,255,255,0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text,.navbar.navbar-inverse .navbar-text{color:rgba(255,255,255,0.5)}.navbar-dark .navbar-text a,.navbar.navbar-inverse .navbar-text a{color:#fff}.navbar-dark .navbar-text a:hover,.navbar.navbar-inverse .navbar-text a:hover,.navbar-dark .navbar-text a:focus,.navbar.navbar-inverse .navbar-text a:focus{color:#fff}.card,.well{position:relative;display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,0.125);border-radius:.25rem}.card>hr,.well>hr{margin-right:0;margin-left:0}.card>.list-group,.well>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child,.well>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card>.list-group:last-child,.well>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card>.card-header+.list-group,.well>.card-header+.list-group,.card>.list-group+.card-footer,.well>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;-webkit-flex:1 1 auto;min-height:1px;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,0.03);border-bottom:1px solid rgba(0,0,0,0.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,0.03);border-top:1px solid rgba(0,0,0,0.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem;border-radius:calc(.25rem - 1px)}.card-img,.card-img-top,.card-img-bottom{flex-shrink:0;-webkit-flex-shrink:0;width:100%}.card-img,.card-img-top{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck .card,.card-deck .well{margin-bottom:15px}@media (min-width: 576px){.card-deck{display:flex;display:-webkit-flex;flex-flow:row wrap;-webkit-flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card,.card-deck .well{flex:1 0 0%;-webkit-flex:1 0 0%;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group>.card,.card-group>.well{margin-bottom:15px}@media (min-width: 576px){.card-group{display:flex;display:-webkit-flex;flex-flow:row wrap;-webkit-flex-flow:row wrap}.card-group>.card,.card-group>.well{flex:1 0 0%;-webkit-flex:1 0 0%;margin-bottom:0}.card-group>.card+.card,.card-group>.well+.card,.card-group>.card+.well,.card-group>.well+.well{margin-left:0;border-left:0}.card-group>.card:not(:last-child),.card-group>.well:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-img-top,.card-group>.well:not(:last-child) .card-img-top,.card-group>.card:not(:last-child) .card-header,.card-group>.well:not(:last-child) .card-header{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-img-bottom,.card-group>.well:not(:last-child) .card-img-bottom,.card-group>.card:not(:last-child) .card-footer,.card-group>.well:not(:last-child) .card-footer{border-bottom-right-radius:0}.card-group>.card:not(:first-child),.card-group>.well:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-img-top,.card-group>.well:not(:first-child) .card-img-top,.card-group>.card:not(:first-child) .card-header,.card-group>.well:not(:first-child) .card-header{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-img-bottom,.card-group>.well:not(:first-child) .card-img-bottom,.card-group>.card:not(:first-child) .card-footer,.card-group>.well:not(:first-child) .card-footer{border-bottom-left-radius:0}}.card-columns .card,.card-columns .well{margin-bottom:.75rem}@media (min-width: 576px){.card-columns{column-count:3;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card,.card-columns .well{display:inline-block;width:100%}}.accordion{overflow-anchor:none}.accordion>.card,.accordion>.well{overflow:hidden}.accordion>.card:not(:last-of-type),.accordion>.well:not(:last-of-type){border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion>.card:not(:first-of-type),.accordion>.well:not(:first-of-type){border-top-left-radius:0;border-top-right-radius:0}.accordion>.card>.card-header,.accordion>.well>.card-header{border-radius:0;margin-bottom:-1px}.breadcrumb{display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:flex;display:-webkit-flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#007bff;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{z-index:2;color:#0056b3;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:3;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,0.25)}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:3;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem;transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.badge{transition:none}}a.badge:hover,a.badge:focus{text-decoration:none}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-default{color:#000;background-color:#dee2e6}a.badge-default:hover,a.badge-default:focus{color:#000;background-color:#c1c9d0}a.badge-default:focus,a.badge-default.focus{outline:0;box-shadow:0 0 0 .2rem rgba(222,226,230,0.5)}.badge-primary{color:#fff;background-color:#007bff}a.badge-primary:hover,a.badge-primary:focus{color:#fff;background-color:#0062cc}a.badge-primary:focus,a.badge-primary.focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,0.5)}.badge-secondary{color:#fff;background-color:#6c757d}a.badge-secondary:hover,a.badge-secondary:focus{color:#fff;background-color:#545b62}a.badge-secondary:focus,a.badge-secondary.focus{outline:0;box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.badge-success{color:#fff;background-color:#28a745}a.badge-success:hover,a.badge-success:focus{color:#fff;background-color:#1e7e34}a.badge-success:focus,a.badge-success.focus{outline:0;box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.badge-info{color:#fff;background-color:#17a2b8}a.badge-info:hover,a.badge-info:focus{color:#fff;background-color:#117a8b}a.badge-info:focus,a.badge-info.focus{outline:0;box-shadow:0 0 0 .2rem rgba(23,162,184,0.5)}.badge-warning{color:#000;background-color:#ffc107}a.badge-warning:hover,a.badge-warning:focus{color:#000;background-color:#d39e00}a.badge-warning:focus,a.badge-warning.focus{outline:0;box-shadow:0 0 0 .2rem rgba(255,193,7,0.5)}.badge-danger{color:#fff;background-color:#dc3545}a.badge-danger:hover,a.badge-danger:focus{color:#fff;background-color:#bd2130}a.badge-danger:focus,a.badge-danger.focus{outline:0;box-shadow:0 0 0 .2rem rgba(220,53,69,0.5)}.badge-light{color:#000;background-color:#f8f9fa}a.badge-light:hover,a.badge-light:focus{color:#000;background-color:#dae0e5}a.badge-light:focus,a.badge-light.focus{outline:0;box-shadow:0 0 0 .2rem rgba(248,249,250,0.5)}.badge-dark{color:#fff;background-color:#343a40}a.badge-dark:hover,a.badge-dark:focus{color:#fff;background-color:#1d2124}a.badge-dark:focus,a.badge-dark.focus{outline:0;box-shadow:0 0 0 .2rem rgba(52,58,64,0.5)}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width: 576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;z-index:2;padding:.75rem 1.25rem;color:inherit}.alert-default{color:#737678;background-color:#f8f9fa;border-color:#f6f7f8}.alert-default hr{border-top-color:#e8eaed}.alert-default .alert-link{color:#5a5c5e}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:flex;display:-webkit-flex;height:1rem;overflow:hidden;line-height:0;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;justify-content:center;-webkit-justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#007bff;transition:width 0.6s ease}@media (prefers-reduced-motion: reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-size:1rem 1rem}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion: reduce){.progress-bar-animated{animation:none}}.media{display:flex;display:-webkit-flex;align-items:flex-start;-webkit-align-items:flex-start}.media-body{flex:1;-webkit-flex:1}.list-group{display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.25rem}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:hover,.list-group-item-action:focus{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;background-color:#fff;border:1px solid rgba(0,0,0,0.125)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width: 576px){.list-group-horizontal-sm{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width: 768px){.list-group-horizontal-md{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width: 992px){.list-group-horizontal-lg{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width: 1200px){.list-group-horizontal-xl{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-default{color:#737678;background-color:#f6f7f8}.list-group-item-default.list-group-item-action:hover,.list-group-item-default.list-group-item-action:focus{color:#737678;background-color:#e8eaed}.list-group-item-default.list-group-item-action.active{color:#fff;background-color:#737678;border-color:#737678}.list-group-item-primary{color:#004085;background-color:#b8daff}.list-group-item-primary.list-group-item-action:hover,.list-group-item-primary.list-group-item-action:focus{color:#004085;background-color:#9fcdff}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:hover,.list-group-item-secondary.list-group-item-action:focus{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:hover,.list-group-item-success.list-group-item-action:focus{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:hover,.list-group-item-info.list-group-item-action:focus{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:hover,.list-group-item-warning.list-group-item-action:focus{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:hover,.list-group-item-danger.list-group-item-action:focus{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:hover,.list-group-item-light.list-group-item-action:focus{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:hover,.list-group-item-dark.list-group-item-action:focus{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover{color:#000;text-decoration:none}.close:not(:disabled):not(.disabled):hover,.close:not(:disabled):not(.disabled):focus{opacity:.75}button.close{padding:0;background-color:transparent;border:0}a.close.disabled{pointer-events:none}.toast{flex-basis:350px;-webkit-flex-basis:350px;max-width:350px;font-size:.875rem;background-color:rgba(255,255,255,0.85);background-clip:padding-box;border:1px solid rgba(0,0,0,0.1);box-shadow:0 0.25rem 0.75rem rgba(0,0,0,0.1);opacity:0;border-radius:.25rem}.toast:not(:last-child){margin-bottom:.75rem}.toast.showing{opacity:1}.toast.show,.toast.in{display:block;opacity:1}.toast.hide{display:none}.toast-header{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;padding:.25rem .75rem;color:#6c757d;background-color:rgba(255,255,255,0.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,0.05);border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.toast-body{padding:.75rem}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform 0.3s ease-out;transform:translate(0, -50px)}@media (prefers-reduced-motion: reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog,.modal.in .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{display:flex;display:-webkit-flex;max-height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}.modal-dialog-scrollable .modal-header,.modal-dialog-scrollable .modal-footer{flex-shrink:0;-webkit-flex-shrink:0}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;min-height:calc(100% - 1rem)}.modal-dialog-centered::before{display:block;height:calc(100vh - 1rem);height:min-content;height:-webkit-min-content;height:-moz-min-content;height:-ms-min-content;height:-o-min-content;content:""}.modal-dialog-centered.modal-dialog-scrollable{flex-direction:column;-webkit-flex-direction:column;justify-content:center;-webkit-justify-content:center;height:100%}.modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}.modal-dialog-centered.modal-dialog-scrollable::before{content:none}.modal-content{position:relative;display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,0.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show,.modal-backdrop.in{opacity:.5}.modal-header{display:flex;display:-webkit-flex;align-items:flex-start;-webkit-align-items:flex-start;justify-content:space-between;-webkit-justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.modal-header .close{padding:1rem 1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;flex:1 1 auto;-webkit-flex:1 1 auto;padding:1rem}.modal-footer{display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;align-items:center;-webkit-align-items:center;justify-content:flex-end;-webkit-justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(.3rem - 1px);border-bottom-left-radius:calc(.3rem - 1px)}.modal-footer>*{margin:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width: 576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-dialog-centered::before{height:calc(100vh - 3.5rem);height:min-content;height:-webkit-min-content;height:-moz-min-content;height:-ms-min-content;height:-o-min-content}.modal-sm{max-width:300px}}@media (min-width: 992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width: 1200px){.modal-xl{max-width:1140px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show,.tooltip.in{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-top,.bs-tooltip-auto[x-placement^="top"]{padding:.4rem 0}.bs-tooltip-top .arrow,.bs-tooltip-auto[x-placement^="top"] .arrow{bottom:0}.bs-tooltip-top .arrow::before,.bs-tooltip-auto[x-placement^="top"] .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-right,.bs-tooltip-auto[x-placement^="right"]{padding:0 .4rem}.bs-tooltip-right .arrow,.bs-tooltip-auto[x-placement^="right"] .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-right .arrow::before,.bs-tooltip-auto[x-placement^="right"] .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-bottom,.bs-tooltip-auto[x-placement^="bottom"]{padding:.4rem 0}.bs-tooltip-bottom .arrow,.bs-tooltip-auto[x-placement^="bottom"] .arrow{top:0}.bs-tooltip-bottom .arrow::before,.bs-tooltip-auto[x-placement^="bottom"] .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-left,.bs-tooltip-auto[x-placement^="left"]{padding:0 .4rem}.bs-tooltip-left .arrow,.bs-tooltip-auto[x-placement^="left"] .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-left .arrow::before,.bs-tooltip-auto[x-placement^="left"] .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,0.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::before,.popover .arrow::after{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-top,.bs-popover-auto[x-placement^="top"]{margin-bottom:.5rem}.bs-popover-top>.arrow,.bs-popover-auto[x-placement^="top"]>.arrow{bottom:calc(-.5rem - 1px)}.bs-popover-top>.arrow::before,.bs-popover-auto[x-placement^="top"]>.arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,0.25)}.bs-popover-top>.arrow::after,.bs-popover-auto[x-placement^="top"]>.arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-right,.bs-popover-auto[x-placement^="right"]{margin-left:.5rem}.bs-popover-right>.arrow,.bs-popover-auto[x-placement^="right"]>.arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-right>.arrow::before,.bs-popover-auto[x-placement^="right"]>.arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,0.25)}.bs-popover-right>.arrow::after,.bs-popover-auto[x-placement^="right"]>.arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-bottom,.bs-popover-auto[x-placement^="bottom"]{margin-top:.5rem}.bs-popover-bottom>.arrow,.bs-popover-auto[x-placement^="bottom"]>.arrow{top:calc(-.5rem - 1px)}.bs-popover-bottom>.arrow::before,.bs-popover-auto[x-placement^="bottom"]>.arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,0.25)}.bs-popover-bottom>.arrow::after,.bs-popover-auto[x-placement^="bottom"]>.arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-bottom .popover-header::before,.bs-popover-auto[x-placement^="bottom"] .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-left,.bs-popover-auto[x-placement^="left"]{margin-right:.5rem}.bs-popover-left>.arrow,.bs-popover-auto[x-placement^="left"]>.arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-left>.arrow::before,.bs-popover-auto[x-placement^="left"]>.arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,0.25)}.bs-popover-left>.arrow::after,.bs-popover-auto[x-placement^="left"]>.arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y;-webkit-touch-action:pan-y;-moz-touch-action:pan-y;-ms-touch-action:pan-y;-o-touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;backface-visibility:hidden;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;-o-backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion: reduce){.carousel-item{transition:none}}.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}.carousel-item-next:not(.carousel-item-left),.active.carousel-item-right{transform:translateX(100%)}.carousel-item-prev:not(.carousel-item-right),.active.carousel-item-left{transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item.active,.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right{z-index:1;opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion: reduce){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{transition:none}}.carousel-control-prev,.carousel-control-next{position:absolute;top:0;bottom:0;z-index:1;display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;justify-content:center;-webkit-justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5;transition:opacity 0.15s ease}@media (prefers-reduced-motion: reduce){.carousel-control-prev,.carousel-control-next{transition:none}}.carousel-control-prev:hover,.carousel-control-prev:focus,.carousel-control-next:hover,.carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:20px;height:20px;background:50% / 100% 100% no-repeat}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:15;display:flex;display:-webkit-flex;justify-content:center;-webkit-justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{box-sizing:content-box;flex:0 1 auto;-webkit-flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity 0.6s ease}@media (prefers-reduced-motion: reduce){.carousel-indicators li{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;animation:.75s linear infinite spinner-border}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;background-color:currentColor;border-radius:50%;opacity:0;animation:.75s linear infinite spinner-grow}.spinner-grow-sm{width:1rem;height:1rem}@media (prefers-reduced-motion: reduce){.spinner-border,.spinner-grow{animation-duration:1.5s;-webkit-animation-duration:1.5s;-moz-animation-duration:1.5s;-ms-animation-duration:1.5s;-o-animation-duration:1.5s}}.align-baseline{vertical-align:baseline !important}.align-top{vertical-align:top !important}.align-middle{vertical-align:middle !important}.align-bottom{vertical-align:bottom !important}.align-text-bottom{vertical-align:text-bottom !important}.align-text-top{vertical-align:text-top !important}.bg-default{background-color:#dee2e6 !important;color:#000}a.bg-default:hover,a.bg-default:focus,button.bg-default:hover,button.bg-default:focus{background-color:#c1c9d0 !important}.bg-primary{background-color:#007bff !important;color:#fff}a.bg-primary:hover,a.bg-primary:focus,button.bg-primary:hover,button.bg-primary:focus{background-color:#0062cc !important}.bg-secondary{background-color:#6c757d !important;color:#fff}a.bg-secondary:hover,a.bg-secondary:focus,button.bg-secondary:hover,button.bg-secondary:focus{background-color:#545b62 !important}.bg-success{background-color:#28a745 !important;color:#fff}a.bg-success:hover,a.bg-success:focus,button.bg-success:hover,button.bg-success:focus{background-color:#1e7e34 !important}.bg-info{background-color:#17a2b8 !important;color:#fff}a.bg-info:hover,a.bg-info:focus,button.bg-info:hover,button.bg-info:focus{background-color:#117a8b !important}.bg-warning{background-color:#ffc107 !important;color:#000}a.bg-warning:hover,a.bg-warning:focus,button.bg-warning:hover,button.bg-warning:focus{background-color:#d39e00 !important}.bg-danger{background-color:#dc3545 !important;color:#fff}a.bg-danger:hover,a.bg-danger:focus,button.bg-danger:hover,button.bg-danger:focus{background-color:#bd2130 !important}.bg-light{background-color:#f8f9fa !important;color:#000}a.bg-light:hover,a.bg-light:focus,button.bg-light:hover,button.bg-light:focus{background-color:#dae0e5 !important}.bg-dark{background-color:#343a40 !important;color:#fff}a.bg-dark:hover,a.bg-dark:focus,button.bg-dark:hover,button.bg-dark:focus{background-color:#1d2124 !important}.bg-white{background-color:#fff !important;color:#000}.bg-transparent{background-color:transparent !important}.border{border:1px solid #dee2e6 !important}.border-top{border-top:1px solid #dee2e6 !important}.border-right{border-right:1px solid #dee2e6 !important}.border-bottom{border-bottom:1px solid #dee2e6 !important}.border-left{border-left:1px solid #dee2e6 !important}.border-0{border:0 !important}.border-top-0{border-top:0 !important}.border-right-0{border-right:0 !important}.border-bottom-0{border-bottom:0 !important}.border-left-0{border-left:0 !important}.border-default{border-color:#dee2e6 !important}.border-primary{border-color:#007bff !important}.border-secondary{border-color:#6c757d !important}.border-success{border-color:#28a745 !important}.border-info{border-color:#17a2b8 !important}.border-warning{border-color:#ffc107 !important}.border-danger{border-color:#dc3545 !important}.border-light{border-color:#f8f9fa !important}.border-dark{border-color:#343a40 !important}.border-white{border-color:#fff !important}.rounded-sm{border-radius:.2rem !important}.rounded{border-radius:.25rem !important}.rounded-top{border-top-left-radius:.25rem !important;border-top-right-radius:.25rem !important}.rounded-right{border-top-right-radius:.25rem !important;border-bottom-right-radius:.25rem !important}.rounded-bottom{border-bottom-right-radius:.25rem !important;border-bottom-left-radius:.25rem !important}.rounded-left{border-top-left-radius:.25rem !important;border-bottom-left-radius:.25rem !important}.rounded-lg{border-radius:.3rem !important}.rounded-circle{border-radius:50% !important}.rounded-pill{border-radius:50rem !important}.rounded-0{border-radius:0 !important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none !important}.d-inline{display:inline !important}.d-inline-block{display:inline-block !important}.d-block{display:block !important}.d-table{display:table !important}.d-table-row{display:table-row !important}.d-table-cell{display:table-cell !important}.d-flex{display:flex !important}.d-inline-flex{display:inline-flex !important}@media (min-width: 576px){.d-sm-none{display:none !important}.d-sm-inline{display:inline !important}.d-sm-inline-block{display:inline-block !important}.d-sm-block{display:block !important}.d-sm-table{display:table !important}.d-sm-table-row{display:table-row !important}.d-sm-table-cell{display:table-cell !important}.d-sm-flex{display:flex !important}.d-sm-inline-flex{display:inline-flex !important}}@media (min-width: 768px){.d-md-none{display:none !important}.d-md-inline{display:inline !important}.d-md-inline-block{display:inline-block !important}.d-md-block{display:block !important}.d-md-table{display:table !important}.d-md-table-row{display:table-row !important}.d-md-table-cell{display:table-cell !important}.d-md-flex{display:flex !important}.d-md-inline-flex{display:inline-flex !important}}@media (min-width: 992px){.d-lg-none{display:none !important}.d-lg-inline{display:inline !important}.d-lg-inline-block{display:inline-block !important}.d-lg-block{display:block !important}.d-lg-table{display:table !important}.d-lg-table-row{display:table-row !important}.d-lg-table-cell{display:table-cell !important}.d-lg-flex{display:flex !important}.d-lg-inline-flex{display:inline-flex !important}}@media (min-width: 1200px){.d-xl-none{display:none !important}.d-xl-inline{display:inline !important}.d-xl-inline-block{display:inline-block !important}.d-xl-block{display:block !important}.d-xl-table{display:table !important}.d-xl-table-row{display:table-row !important}.d-xl-table-cell{display:table-cell !important}.d-xl-flex{display:flex !important}.d-xl-inline-flex{display:inline-flex !important}}@media print{.d-print-none{display:none !important}.d-print-inline{display:inline !important}.d-print-inline-block{display:inline-block !important}.d-print-block{display:block !important}.d-print-table{display:table !important}.d-print-table-row{display:table-row !important}.d-print-table-cell{display:table-cell !important}.d-print-flex{display:flex !important}.d-print-inline-flex{display:inline-flex !important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.85714%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{flex-direction:row !important}.flex-column{flex-direction:column !important}.flex-row-reverse{flex-direction:row-reverse !important}.flex-column-reverse{flex-direction:column-reverse !important}.flex-wrap{flex-wrap:wrap !important}.flex-nowrap{flex-wrap:nowrap !important}.flex-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-fill{flex:1 1 auto !important}.flex-grow-0{flex-grow:0 !important}.flex-grow-1{flex-grow:1 !important}.flex-shrink-0{flex-shrink:0 !important}.flex-shrink-1{flex-shrink:1 !important}.justify-content-start{justify-content:flex-start !important}.justify-content-end{justify-content:flex-end !important}.justify-content-center{justify-content:center !important}.justify-content-between{justify-content:space-between !important}.justify-content-around{justify-content:space-around !important}.align-items-start{align-items:flex-start !important}.align-items-end{align-items:flex-end !important}.align-items-center{align-items:center !important}.align-items-baseline{align-items:baseline !important}.align-items-stretch{align-items:stretch !important}.align-content-start{align-content:flex-start !important}.align-content-end{align-content:flex-end !important}.align-content-center{align-content:center !important}.align-content-between{align-content:space-between !important}.align-content-around{align-content:space-around !important}.align-content-stretch{align-content:stretch !important}.align-self-auto{align-self:auto !important}.align-self-start{align-self:flex-start !important}.align-self-end{align-self:flex-end !important}.align-self-center{align-self:center !important}.align-self-baseline{align-self:baseline !important}.align-self-stretch{align-self:stretch !important}@media (min-width: 576px){.flex-sm-row{flex-direction:row !important}.flex-sm-column{flex-direction:column !important}.flex-sm-row-reverse{flex-direction:row-reverse !important}.flex-sm-column-reverse{flex-direction:column-reverse !important}.flex-sm-wrap{flex-wrap:wrap !important}.flex-sm-nowrap{flex-wrap:nowrap !important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-sm-fill{flex:1 1 auto !important}.flex-sm-grow-0{flex-grow:0 !important}.flex-sm-grow-1{flex-grow:1 !important}.flex-sm-shrink-0{flex-shrink:0 !important}.flex-sm-shrink-1{flex-shrink:1 !important}.justify-content-sm-start{justify-content:flex-start !important}.justify-content-sm-end{justify-content:flex-end !important}.justify-content-sm-center{justify-content:center !important}.justify-content-sm-between{justify-content:space-between !important}.justify-content-sm-around{justify-content:space-around !important}.align-items-sm-start{align-items:flex-start !important}.align-items-sm-end{align-items:flex-end !important}.align-items-sm-center{align-items:center !important}.align-items-sm-baseline{align-items:baseline !important}.align-items-sm-stretch{align-items:stretch !important}.align-content-sm-start{align-content:flex-start !important}.align-content-sm-end{align-content:flex-end !important}.align-content-sm-center{align-content:center !important}.align-content-sm-between{align-content:space-between !important}.align-content-sm-around{align-content:space-around !important}.align-content-sm-stretch{align-content:stretch !important}.align-self-sm-auto{align-self:auto !important}.align-self-sm-start{align-self:flex-start !important}.align-self-sm-end{align-self:flex-end !important}.align-self-sm-center{align-self:center !important}.align-self-sm-baseline{align-self:baseline !important}.align-self-sm-stretch{align-self:stretch !important}}@media (min-width: 768px){.flex-md-row{flex-direction:row !important}.flex-md-column{flex-direction:column !important}.flex-md-row-reverse{flex-direction:row-reverse !important}.flex-md-column-reverse{flex-direction:column-reverse !important}.flex-md-wrap{flex-wrap:wrap !important}.flex-md-nowrap{flex-wrap:nowrap !important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-md-fill{flex:1 1 auto !important}.flex-md-grow-0{flex-grow:0 !important}.flex-md-grow-1{flex-grow:1 !important}.flex-md-shrink-0{flex-shrink:0 !important}.flex-md-shrink-1{flex-shrink:1 !important}.justify-content-md-start{justify-content:flex-start !important}.justify-content-md-end{justify-content:flex-end !important}.justify-content-md-center{justify-content:center !important}.justify-content-md-between{justify-content:space-between !important}.justify-content-md-around{justify-content:space-around !important}.align-items-md-start{align-items:flex-start !important}.align-items-md-end{align-items:flex-end !important}.align-items-md-center{align-items:center !important}.align-items-md-baseline{align-items:baseline !important}.align-items-md-stretch{align-items:stretch !important}.align-content-md-start{align-content:flex-start !important}.align-content-md-end{align-content:flex-end !important}.align-content-md-center{align-content:center !important}.align-content-md-between{align-content:space-between !important}.align-content-md-around{align-content:space-around !important}.align-content-md-stretch{align-content:stretch !important}.align-self-md-auto{align-self:auto !important}.align-self-md-start{align-self:flex-start !important}.align-self-md-end{align-self:flex-end !important}.align-self-md-center{align-self:center !important}.align-self-md-baseline{align-self:baseline !important}.align-self-md-stretch{align-self:stretch !important}}@media (min-width: 992px){.flex-lg-row{flex-direction:row !important}.flex-lg-column{flex-direction:column !important}.flex-lg-row-reverse{flex-direction:row-reverse !important}.flex-lg-column-reverse{flex-direction:column-reverse !important}.flex-lg-wrap{flex-wrap:wrap !important}.flex-lg-nowrap{flex-wrap:nowrap !important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-lg-fill{flex:1 1 auto !important}.flex-lg-grow-0{flex-grow:0 !important}.flex-lg-grow-1{flex-grow:1 !important}.flex-lg-shrink-0{flex-shrink:0 !important}.flex-lg-shrink-1{flex-shrink:1 !important}.justify-content-lg-start{justify-content:flex-start !important}.justify-content-lg-end{justify-content:flex-end !important}.justify-content-lg-center{justify-content:center !important}.justify-content-lg-between{justify-content:space-between !important}.justify-content-lg-around{justify-content:space-around !important}.align-items-lg-start{align-items:flex-start !important}.align-items-lg-end{align-items:flex-end !important}.align-items-lg-center{align-items:center !important}.align-items-lg-baseline{align-items:baseline !important}.align-items-lg-stretch{align-items:stretch !important}.align-content-lg-start{align-content:flex-start !important}.align-content-lg-end{align-content:flex-end !important}.align-content-lg-center{align-content:center !important}.align-content-lg-between{align-content:space-between !important}.align-content-lg-around{align-content:space-around !important}.align-content-lg-stretch{align-content:stretch !important}.align-self-lg-auto{align-self:auto !important}.align-self-lg-start{align-self:flex-start !important}.align-self-lg-end{align-self:flex-end !important}.align-self-lg-center{align-self:center !important}.align-self-lg-baseline{align-self:baseline !important}.align-self-lg-stretch{align-self:stretch !important}}@media (min-width: 1200px){.flex-xl-row{flex-direction:row !important}.flex-xl-column{flex-direction:column !important}.flex-xl-row-reverse{flex-direction:row-reverse !important}.flex-xl-column-reverse{flex-direction:column-reverse !important}.flex-xl-wrap{flex-wrap:wrap !important}.flex-xl-nowrap{flex-wrap:nowrap !important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-xl-fill{flex:1 1 auto !important}.flex-xl-grow-0{flex-grow:0 !important}.flex-xl-grow-1{flex-grow:1 !important}.flex-xl-shrink-0{flex-shrink:0 !important}.flex-xl-shrink-1{flex-shrink:1 !important}.justify-content-xl-start{justify-content:flex-start !important}.justify-content-xl-end{justify-content:flex-end !important}.justify-content-xl-center{justify-content:center !important}.justify-content-xl-between{justify-content:space-between !important}.justify-content-xl-around{justify-content:space-around !important}.align-items-xl-start{align-items:flex-start !important}.align-items-xl-end{align-items:flex-end !important}.align-items-xl-center{align-items:center !important}.align-items-xl-baseline{align-items:baseline !important}.align-items-xl-stretch{align-items:stretch !important}.align-content-xl-start{align-content:flex-start !important}.align-content-xl-end{align-content:flex-end !important}.align-content-xl-center{align-content:center !important}.align-content-xl-between{align-content:space-between !important}.align-content-xl-around{align-content:space-around !important}.align-content-xl-stretch{align-content:stretch !important}.align-self-xl-auto{align-self:auto !important}.align-self-xl-start{align-self:flex-start !important}.align-self-xl-end{align-self:flex-end !important}.align-self-xl-center{align-self:center !important}.align-self-xl-baseline{align-self:baseline !important}.align-self-xl-stretch{align-self:stretch !important}}.float-left{float:left !important}.float-right{float:right !important}.float-none{float:none !important}@media (min-width: 576px){.float-sm-left{float:left !important}.float-sm-right{float:right !important}.float-sm-none{float:none !important}}@media (min-width: 768px){.float-md-left{float:left !important}.float-md-right{float:right !important}.float-md-none{float:none !important}}@media (min-width: 992px){.float-lg-left{float:left !important}.float-lg-right{float:right !important}.float-lg-none{float:none !important}}@media (min-width: 1200px){.float-xl-left{float:left !important}.float-xl-right{float:right !important}.float-xl-none{float:none !important}}.user-select-all{user-select:all !important}.user-select-auto{user-select:auto !important}.user-select-none{user-select:none !important}.overflow-auto{overflow:auto !important}.overflow-hidden{overflow:hidden !important}.position-static{position:static !important}.position-relative{position:relative !important}.position-absolute{position:absolute !important}.position-fixed{position:fixed !important}.position-sticky{position:sticky !important}.fixed-top,.navbar-fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom,.navbar-fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports (position: sticky){.sticky-top,.navbar-sticky-top{position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.shadow-sm{box-shadow:0 0.125rem 0.25rem rgba(0,0,0,0.075) !important}.shadow{box-shadow:0 0.5rem 1rem rgba(0,0,0,0.15) !important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,0.175) !important}.shadow-none{box-shadow:none !important}.w-25{width:25% !important}.w-50{width:50% !important}.w-75{width:75% !important}.w-100{width:100% !important}.w-auto{width:auto !important}.h-25{height:25% !important}.h-50{height:50% !important}.h-75{height:75% !important}.h-100{height:100% !important}.h-auto{height:auto !important}.mw-100{max-width:100% !important}.mh-100{max-height:100% !important}.min-vw-100{min-width:100vw !important}.min-vh-100{min-height:100vh !important}.vw-100{width:100vw !important}.vh-100{height:100vh !important}.m-0{margin:0 !important}.mt-0,.my-0{margin-top:0 !important}.mr-0,.mx-0{margin-right:0 !important}.mb-0,.my-0{margin-bottom:0 !important}.ml-0,.mx-0{margin-left:0 !important}.m-1{margin:.25rem !important}.mt-1,.my-1{margin-top:.25rem !important}.mr-1,.mx-1{margin-right:.25rem !important}.mb-1,.my-1{margin-bottom:.25rem !important}.ml-1,.mx-1{margin-left:.25rem !important}.m-2{margin:.5rem !important}.mt-2,.my-2{margin-top:.5rem !important}.mr-2,.mx-2{margin-right:.5rem !important}.mb-2,.my-2{margin-bottom:.5rem !important}.ml-2,.mx-2{margin-left:.5rem !important}.m-3{margin:1rem !important}.mt-3,.my-3{margin-top:1rem !important}.mr-3,.mx-3{margin-right:1rem !important}.mb-3,.my-3{margin-bottom:1rem !important}.ml-3,.mx-3{margin-left:1rem !important}.m-4{margin:1.5rem !important}.mt-4,.my-4{margin-top:1.5rem !important}.mr-4,.mx-4{margin-right:1.5rem !important}.mb-4,.my-4{margin-bottom:1.5rem !important}.ml-4,.mx-4{margin-left:1.5rem !important}.m-5{margin:3rem !important}.mt-5,.my-5{margin-top:3rem !important}.mr-5,.mx-5{margin-right:3rem !important}.mb-5,.my-5{margin-bottom:3rem !important}.ml-5,.mx-5{margin-left:3rem !important}.p-0{padding:0 !important}.pt-0,.py-0{padding-top:0 !important}.pr-0,.px-0{padding-right:0 !important}.pb-0,.py-0{padding-bottom:0 !important}.pl-0,.px-0{padding-left:0 !important}.p-1{padding:.25rem !important}.pt-1,.py-1{padding-top:.25rem !important}.pr-1,.px-1{padding-right:.25rem !important}.pb-1,.py-1{padding-bottom:.25rem !important}.pl-1,.px-1{padding-left:.25rem !important}.p-2{padding:.5rem !important}.pt-2,.py-2{padding-top:.5rem !important}.pr-2,.px-2{padding-right:.5rem !important}.pb-2,.py-2{padding-bottom:.5rem !important}.pl-2,.px-2{padding-left:.5rem !important}.p-3{padding:1rem !important}.pt-3,.py-3{padding-top:1rem !important}.pr-3,.px-3{padding-right:1rem !important}.pb-3,.py-3{padding-bottom:1rem !important}.pl-3,.px-3{padding-left:1rem !important}.p-4{padding:1.5rem !important}.pt-4,.py-4{padding-top:1.5rem !important}.pr-4,.px-4{padding-right:1.5rem !important}.pb-4,.py-4{padding-bottom:1.5rem !important}.pl-4,.px-4{padding-left:1.5rem !important}.p-5{padding:3rem !important}.pt-5,.py-5{padding-top:3rem !important}.pr-5,.px-5{padding-right:3rem !important}.pb-5,.py-5{padding-bottom:3rem !important}.pl-5,.px-5{padding-left:3rem !important}.m-n1{margin:-.25rem !important}.mt-n1,.my-n1{margin-top:-.25rem !important}.mr-n1,.mx-n1{margin-right:-.25rem !important}.mb-n1,.my-n1{margin-bottom:-.25rem !important}.ml-n1,.mx-n1{margin-left:-.25rem !important}.m-n2{margin:-.5rem !important}.mt-n2,.my-n2{margin-top:-.5rem !important}.mr-n2,.mx-n2{margin-right:-.5rem !important}.mb-n2,.my-n2{margin-bottom:-.5rem !important}.ml-n2,.mx-n2{margin-left:-.5rem !important}.m-n3{margin:-1rem !important}.mt-n3,.my-n3{margin-top:-1rem !important}.mr-n3,.mx-n3{margin-right:-1rem !important}.mb-n3,.my-n3{margin-bottom:-1rem !important}.ml-n3,.mx-n3{margin-left:-1rem !important}.m-n4{margin:-1.5rem !important}.mt-n4,.my-n4{margin-top:-1.5rem !important}.mr-n4,.mx-n4{margin-right:-1.5rem !important}.mb-n4,.my-n4{margin-bottom:-1.5rem !important}.ml-n4,.mx-n4{margin-left:-1.5rem !important}.m-n5{margin:-3rem !important}.mt-n5,.my-n5{margin-top:-3rem !important}.mr-n5,.mx-n5{margin-right:-3rem !important}.mb-n5,.my-n5{margin-bottom:-3rem !important}.ml-n5,.mx-n5{margin-left:-3rem !important}.m-auto{margin:auto !important}.mt-auto,.my-auto{margin-top:auto !important}.mr-auto,.mx-auto{margin-right:auto !important}.mb-auto,.my-auto{margin-bottom:auto !important}.ml-auto,.mx-auto{margin-left:auto !important}@media (min-width: 576px){.m-sm-0{margin:0 !important}.mt-sm-0,.my-sm-0{margin-top:0 !important}.mr-sm-0,.mx-sm-0{margin-right:0 !important}.mb-sm-0,.my-sm-0{margin-bottom:0 !important}.ml-sm-0,.mx-sm-0{margin-left:0 !important}.m-sm-1{margin:.25rem !important}.mt-sm-1,.my-sm-1{margin-top:.25rem !important}.mr-sm-1,.mx-sm-1{margin-right:.25rem !important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem !important}.ml-sm-1,.mx-sm-1{margin-left:.25rem !important}.m-sm-2{margin:.5rem !important}.mt-sm-2,.my-sm-2{margin-top:.5rem !important}.mr-sm-2,.mx-sm-2{margin-right:.5rem !important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem !important}.ml-sm-2,.mx-sm-2{margin-left:.5rem !important}.m-sm-3{margin:1rem !important}.mt-sm-3,.my-sm-3{margin-top:1rem !important}.mr-sm-3,.mx-sm-3{margin-right:1rem !important}.mb-sm-3,.my-sm-3{margin-bottom:1rem !important}.ml-sm-3,.mx-sm-3{margin-left:1rem !important}.m-sm-4{margin:1.5rem !important}.mt-sm-4,.my-sm-4{margin-top:1.5rem !important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem !important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem !important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem !important}.m-sm-5{margin:3rem !important}.mt-sm-5,.my-sm-5{margin-top:3rem !important}.mr-sm-5,.mx-sm-5{margin-right:3rem !important}.mb-sm-5,.my-sm-5{margin-bottom:3rem !important}.ml-sm-5,.mx-sm-5{margin-left:3rem !important}.p-sm-0{padding:0 !important}.pt-sm-0,.py-sm-0{padding-top:0 !important}.pr-sm-0,.px-sm-0{padding-right:0 !important}.pb-sm-0,.py-sm-0{padding-bottom:0 !important}.pl-sm-0,.px-sm-0{padding-left:0 !important}.p-sm-1{padding:.25rem !important}.pt-sm-1,.py-sm-1{padding-top:.25rem !important}.pr-sm-1,.px-sm-1{padding-right:.25rem !important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem !important}.pl-sm-1,.px-sm-1{padding-left:.25rem !important}.p-sm-2{padding:.5rem !important}.pt-sm-2,.py-sm-2{padding-top:.5rem !important}.pr-sm-2,.px-sm-2{padding-right:.5rem !important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem !important}.pl-sm-2,.px-sm-2{padding-left:.5rem !important}.p-sm-3{padding:1rem !important}.pt-sm-3,.py-sm-3{padding-top:1rem !important}.pr-sm-3,.px-sm-3{padding-right:1rem !important}.pb-sm-3,.py-sm-3{padding-bottom:1rem !important}.pl-sm-3,.px-sm-3{padding-left:1rem !important}.p-sm-4{padding:1.5rem !important}.pt-sm-4,.py-sm-4{padding-top:1.5rem !important}.pr-sm-4,.px-sm-4{padding-right:1.5rem !important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem !important}.pl-sm-4,.px-sm-4{padding-left:1.5rem !important}.p-sm-5{padding:3rem !important}.pt-sm-5,.py-sm-5{padding-top:3rem !important}.pr-sm-5,.px-sm-5{padding-right:3rem !important}.pb-sm-5,.py-sm-5{padding-bottom:3rem !important}.pl-sm-5,.px-sm-5{padding-left:3rem !important}.m-sm-n1{margin:-.25rem !important}.mt-sm-n1,.my-sm-n1{margin-top:-.25rem !important}.mr-sm-n1,.mx-sm-n1{margin-right:-.25rem !important}.mb-sm-n1,.my-sm-n1{margin-bottom:-.25rem !important}.ml-sm-n1,.mx-sm-n1{margin-left:-.25rem !important}.m-sm-n2{margin:-.5rem !important}.mt-sm-n2,.my-sm-n2{margin-top:-.5rem !important}.mr-sm-n2,.mx-sm-n2{margin-right:-.5rem !important}.mb-sm-n2,.my-sm-n2{margin-bottom:-.5rem !important}.ml-sm-n2,.mx-sm-n2{margin-left:-.5rem !important}.m-sm-n3{margin:-1rem !important}.mt-sm-n3,.my-sm-n3{margin-top:-1rem !important}.mr-sm-n3,.mx-sm-n3{margin-right:-1rem !important}.mb-sm-n3,.my-sm-n3{margin-bottom:-1rem !important}.ml-sm-n3,.mx-sm-n3{margin-left:-1rem !important}.m-sm-n4{margin:-1.5rem !important}.mt-sm-n4,.my-sm-n4{margin-top:-1.5rem !important}.mr-sm-n4,.mx-sm-n4{margin-right:-1.5rem !important}.mb-sm-n4,.my-sm-n4{margin-bottom:-1.5rem !important}.ml-sm-n4,.mx-sm-n4{margin-left:-1.5rem !important}.m-sm-n5{margin:-3rem !important}.mt-sm-n5,.my-sm-n5{margin-top:-3rem !important}.mr-sm-n5,.mx-sm-n5{margin-right:-3rem !important}.mb-sm-n5,.my-sm-n5{margin-bottom:-3rem !important}.ml-sm-n5,.mx-sm-n5{margin-left:-3rem !important}.m-sm-auto{margin:auto !important}.mt-sm-auto,.my-sm-auto{margin-top:auto !important}.mr-sm-auto,.mx-sm-auto{margin-right:auto !important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto !important}.ml-sm-auto,.mx-sm-auto{margin-left:auto !important}}@media (min-width: 768px){.m-md-0{margin:0 !important}.mt-md-0,.my-md-0{margin-top:0 !important}.mr-md-0,.mx-md-0{margin-right:0 !important}.mb-md-0,.my-md-0{margin-bottom:0 !important}.ml-md-0,.mx-md-0{margin-left:0 !important}.m-md-1{margin:.25rem !important}.mt-md-1,.my-md-1{margin-top:.25rem !important}.mr-md-1,.mx-md-1{margin-right:.25rem !important}.mb-md-1,.my-md-1{margin-bottom:.25rem !important}.ml-md-1,.mx-md-1{margin-left:.25rem !important}.m-md-2{margin:.5rem !important}.mt-md-2,.my-md-2{margin-top:.5rem !important}.mr-md-2,.mx-md-2{margin-right:.5rem !important}.mb-md-2,.my-md-2{margin-bottom:.5rem !important}.ml-md-2,.mx-md-2{margin-left:.5rem !important}.m-md-3{margin:1rem !important}.mt-md-3,.my-md-3{margin-top:1rem !important}.mr-md-3,.mx-md-3{margin-right:1rem !important}.mb-md-3,.my-md-3{margin-bottom:1rem !important}.ml-md-3,.mx-md-3{margin-left:1rem !important}.m-md-4{margin:1.5rem !important}.mt-md-4,.my-md-4{margin-top:1.5rem !important}.mr-md-4,.mx-md-4{margin-right:1.5rem !important}.mb-md-4,.my-md-4{margin-bottom:1.5rem !important}.ml-md-4,.mx-md-4{margin-left:1.5rem !important}.m-md-5{margin:3rem !important}.mt-md-5,.my-md-5{margin-top:3rem !important}.mr-md-5,.mx-md-5{margin-right:3rem !important}.mb-md-5,.my-md-5{margin-bottom:3rem !important}.ml-md-5,.mx-md-5{margin-left:3rem !important}.p-md-0{padding:0 !important}.pt-md-0,.py-md-0{padding-top:0 !important}.pr-md-0,.px-md-0{padding-right:0 !important}.pb-md-0,.py-md-0{padding-bottom:0 !important}.pl-md-0,.px-md-0{padding-left:0 !important}.p-md-1{padding:.25rem !important}.pt-md-1,.py-md-1{padding-top:.25rem !important}.pr-md-1,.px-md-1{padding-right:.25rem !important}.pb-md-1,.py-md-1{padding-bottom:.25rem !important}.pl-md-1,.px-md-1{padding-left:.25rem !important}.p-md-2{padding:.5rem !important}.pt-md-2,.py-md-2{padding-top:.5rem !important}.pr-md-2,.px-md-2{padding-right:.5rem !important}.pb-md-2,.py-md-2{padding-bottom:.5rem !important}.pl-md-2,.px-md-2{padding-left:.5rem !important}.p-md-3{padding:1rem !important}.pt-md-3,.py-md-3{padding-top:1rem !important}.pr-md-3,.px-md-3{padding-right:1rem !important}.pb-md-3,.py-md-3{padding-bottom:1rem !important}.pl-md-3,.px-md-3{padding-left:1rem !important}.p-md-4{padding:1.5rem !important}.pt-md-4,.py-md-4{padding-top:1.5rem !important}.pr-md-4,.px-md-4{padding-right:1.5rem !important}.pb-md-4,.py-md-4{padding-bottom:1.5rem !important}.pl-md-4,.px-md-4{padding-left:1.5rem !important}.p-md-5{padding:3rem !important}.pt-md-5,.py-md-5{padding-top:3rem !important}.pr-md-5,.px-md-5{padding-right:3rem !important}.pb-md-5,.py-md-5{padding-bottom:3rem !important}.pl-md-5,.px-md-5{padding-left:3rem !important}.m-md-n1{margin:-.25rem !important}.mt-md-n1,.my-md-n1{margin-top:-.25rem !important}.mr-md-n1,.mx-md-n1{margin-right:-.25rem !important}.mb-md-n1,.my-md-n1{margin-bottom:-.25rem !important}.ml-md-n1,.mx-md-n1{margin-left:-.25rem !important}.m-md-n2{margin:-.5rem !important}.mt-md-n2,.my-md-n2{margin-top:-.5rem !important}.mr-md-n2,.mx-md-n2{margin-right:-.5rem !important}.mb-md-n2,.my-md-n2{margin-bottom:-.5rem !important}.ml-md-n2,.mx-md-n2{margin-left:-.5rem !important}.m-md-n3{margin:-1rem !important}.mt-md-n3,.my-md-n3{margin-top:-1rem !important}.mr-md-n3,.mx-md-n3{margin-right:-1rem !important}.mb-md-n3,.my-md-n3{margin-bottom:-1rem !important}.ml-md-n3,.mx-md-n3{margin-left:-1rem !important}.m-md-n4{margin:-1.5rem !important}.mt-md-n4,.my-md-n4{margin-top:-1.5rem !important}.mr-md-n4,.mx-md-n4{margin-right:-1.5rem !important}.mb-md-n4,.my-md-n4{margin-bottom:-1.5rem !important}.ml-md-n4,.mx-md-n4{margin-left:-1.5rem !important}.m-md-n5{margin:-3rem !important}.mt-md-n5,.my-md-n5{margin-top:-3rem !important}.mr-md-n5,.mx-md-n5{margin-right:-3rem !important}.mb-md-n5,.my-md-n5{margin-bottom:-3rem !important}.ml-md-n5,.mx-md-n5{margin-left:-3rem !important}.m-md-auto{margin:auto !important}.mt-md-auto,.my-md-auto{margin-top:auto !important}.mr-md-auto,.mx-md-auto{margin-right:auto !important}.mb-md-auto,.my-md-auto{margin-bottom:auto !important}.ml-md-auto,.mx-md-auto{margin-left:auto !important}}@media (min-width: 992px){.m-lg-0{margin:0 !important}.mt-lg-0,.my-lg-0{margin-top:0 !important}.mr-lg-0,.mx-lg-0{margin-right:0 !important}.mb-lg-0,.my-lg-0{margin-bottom:0 !important}.ml-lg-0,.mx-lg-0{margin-left:0 !important}.m-lg-1{margin:.25rem !important}.mt-lg-1,.my-lg-1{margin-top:.25rem !important}.mr-lg-1,.mx-lg-1{margin-right:.25rem !important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem !important}.ml-lg-1,.mx-lg-1{margin-left:.25rem !important}.m-lg-2{margin:.5rem !important}.mt-lg-2,.my-lg-2{margin-top:.5rem !important}.mr-lg-2,.mx-lg-2{margin-right:.5rem !important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem !important}.ml-lg-2,.mx-lg-2{margin-left:.5rem !important}.m-lg-3{margin:1rem !important}.mt-lg-3,.my-lg-3{margin-top:1rem !important}.mr-lg-3,.mx-lg-3{margin-right:1rem !important}.mb-lg-3,.my-lg-3{margin-bottom:1rem !important}.ml-lg-3,.mx-lg-3{margin-left:1rem !important}.m-lg-4{margin:1.5rem !important}.mt-lg-4,.my-lg-4{margin-top:1.5rem !important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem !important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem !important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem !important}.m-lg-5{margin:3rem !important}.mt-lg-5,.my-lg-5{margin-top:3rem !important}.mr-lg-5,.mx-lg-5{margin-right:3rem !important}.mb-lg-5,.my-lg-5{margin-bottom:3rem !important}.ml-lg-5,.mx-lg-5{margin-left:3rem !important}.p-lg-0{padding:0 !important}.pt-lg-0,.py-lg-0{padding-top:0 !important}.pr-lg-0,.px-lg-0{padding-right:0 !important}.pb-lg-0,.py-lg-0{padding-bottom:0 !important}.pl-lg-0,.px-lg-0{padding-left:0 !important}.p-lg-1{padding:.25rem !important}.pt-lg-1,.py-lg-1{padding-top:.25rem !important}.pr-lg-1,.px-lg-1{padding-right:.25rem !important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem !important}.pl-lg-1,.px-lg-1{padding-left:.25rem !important}.p-lg-2{padding:.5rem !important}.pt-lg-2,.py-lg-2{padding-top:.5rem !important}.pr-lg-2,.px-lg-2{padding-right:.5rem !important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem !important}.pl-lg-2,.px-lg-2{padding-left:.5rem !important}.p-lg-3{padding:1rem !important}.pt-lg-3,.py-lg-3{padding-top:1rem !important}.pr-lg-3,.px-lg-3{padding-right:1rem !important}.pb-lg-3,.py-lg-3{padding-bottom:1rem !important}.pl-lg-3,.px-lg-3{padding-left:1rem !important}.p-lg-4{padding:1.5rem !important}.pt-lg-4,.py-lg-4{padding-top:1.5rem !important}.pr-lg-4,.px-lg-4{padding-right:1.5rem !important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem !important}.pl-lg-4,.px-lg-4{padding-left:1.5rem !important}.p-lg-5{padding:3rem !important}.pt-lg-5,.py-lg-5{padding-top:3rem !important}.pr-lg-5,.px-lg-5{padding-right:3rem !important}.pb-lg-5,.py-lg-5{padding-bottom:3rem !important}.pl-lg-5,.px-lg-5{padding-left:3rem !important}.m-lg-n1{margin:-.25rem !important}.mt-lg-n1,.my-lg-n1{margin-top:-.25rem !important}.mr-lg-n1,.mx-lg-n1{margin-right:-.25rem !important}.mb-lg-n1,.my-lg-n1{margin-bottom:-.25rem !important}.ml-lg-n1,.mx-lg-n1{margin-left:-.25rem !important}.m-lg-n2{margin:-.5rem !important}.mt-lg-n2,.my-lg-n2{margin-top:-.5rem !important}.mr-lg-n2,.mx-lg-n2{margin-right:-.5rem !important}.mb-lg-n2,.my-lg-n2{margin-bottom:-.5rem !important}.ml-lg-n2,.mx-lg-n2{margin-left:-.5rem !important}.m-lg-n3{margin:-1rem !important}.mt-lg-n3,.my-lg-n3{margin-top:-1rem !important}.mr-lg-n3,.mx-lg-n3{margin-right:-1rem !important}.mb-lg-n3,.my-lg-n3{margin-bottom:-1rem !important}.ml-lg-n3,.mx-lg-n3{margin-left:-1rem !important}.m-lg-n4{margin:-1.5rem !important}.mt-lg-n4,.my-lg-n4{margin-top:-1.5rem !important}.mr-lg-n4,.mx-lg-n4{margin-right:-1.5rem !important}.mb-lg-n4,.my-lg-n4{margin-bottom:-1.5rem !important}.ml-lg-n4,.mx-lg-n4{margin-left:-1.5rem !important}.m-lg-n5{margin:-3rem !important}.mt-lg-n5,.my-lg-n5{margin-top:-3rem !important}.mr-lg-n5,.mx-lg-n5{margin-right:-3rem !important}.mb-lg-n5,.my-lg-n5{margin-bottom:-3rem !important}.ml-lg-n5,.mx-lg-n5{margin-left:-3rem !important}.m-lg-auto{margin:auto !important}.mt-lg-auto,.my-lg-auto{margin-top:auto !important}.mr-lg-auto,.mx-lg-auto{margin-right:auto !important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto !important}.ml-lg-auto,.mx-lg-auto{margin-left:auto !important}}@media (min-width: 1200px){.m-xl-0{margin:0 !important}.mt-xl-0,.my-xl-0{margin-top:0 !important}.mr-xl-0,.mx-xl-0{margin-right:0 !important}.mb-xl-0,.my-xl-0{margin-bottom:0 !important}.ml-xl-0,.mx-xl-0{margin-left:0 !important}.m-xl-1{margin:.25rem !important}.mt-xl-1,.my-xl-1{margin-top:.25rem !important}.mr-xl-1,.mx-xl-1{margin-right:.25rem !important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem !important}.ml-xl-1,.mx-xl-1{margin-left:.25rem !important}.m-xl-2{margin:.5rem !important}.mt-xl-2,.my-xl-2{margin-top:.5rem !important}.mr-xl-2,.mx-xl-2{margin-right:.5rem !important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem !important}.ml-xl-2,.mx-xl-2{margin-left:.5rem !important}.m-xl-3{margin:1rem !important}.mt-xl-3,.my-xl-3{margin-top:1rem !important}.mr-xl-3,.mx-xl-3{margin-right:1rem !important}.mb-xl-3,.my-xl-3{margin-bottom:1rem !important}.ml-xl-3,.mx-xl-3{margin-left:1rem !important}.m-xl-4{margin:1.5rem !important}.mt-xl-4,.my-xl-4{margin-top:1.5rem !important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem !important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem !important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem !important}.m-xl-5{margin:3rem !important}.mt-xl-5,.my-xl-5{margin-top:3rem !important}.mr-xl-5,.mx-xl-5{margin-right:3rem !important}.mb-xl-5,.my-xl-5{margin-bottom:3rem !important}.ml-xl-5,.mx-xl-5{margin-left:3rem !important}.p-xl-0{padding:0 !important}.pt-xl-0,.py-xl-0{padding-top:0 !important}.pr-xl-0,.px-xl-0{padding-right:0 !important}.pb-xl-0,.py-xl-0{padding-bottom:0 !important}.pl-xl-0,.px-xl-0{padding-left:0 !important}.p-xl-1{padding:.25rem !important}.pt-xl-1,.py-xl-1{padding-top:.25rem !important}.pr-xl-1,.px-xl-1{padding-right:.25rem !important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem !important}.pl-xl-1,.px-xl-1{padding-left:.25rem !important}.p-xl-2{padding:.5rem !important}.pt-xl-2,.py-xl-2{padding-top:.5rem !important}.pr-xl-2,.px-xl-2{padding-right:.5rem !important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem !important}.pl-xl-2,.px-xl-2{padding-left:.5rem !important}.p-xl-3{padding:1rem !important}.pt-xl-3,.py-xl-3{padding-top:1rem !important}.pr-xl-3,.px-xl-3{padding-right:1rem !important}.pb-xl-3,.py-xl-3{padding-bottom:1rem !important}.pl-xl-3,.px-xl-3{padding-left:1rem !important}.p-xl-4{padding:1.5rem !important}.pt-xl-4,.py-xl-4{padding-top:1.5rem !important}.pr-xl-4,.px-xl-4{padding-right:1.5rem !important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem !important}.pl-xl-4,.px-xl-4{padding-left:1.5rem !important}.p-xl-5{padding:3rem !important}.pt-xl-5,.py-xl-5{padding-top:3rem !important}.pr-xl-5,.px-xl-5{padding-right:3rem !important}.pb-xl-5,.py-xl-5{padding-bottom:3rem !important}.pl-xl-5,.px-xl-5{padding-left:3rem !important}.m-xl-n1{margin:-.25rem !important}.mt-xl-n1,.my-xl-n1{margin-top:-.25rem !important}.mr-xl-n1,.mx-xl-n1{margin-right:-.25rem !important}.mb-xl-n1,.my-xl-n1{margin-bottom:-.25rem !important}.ml-xl-n1,.mx-xl-n1{margin-left:-.25rem !important}.m-xl-n2{margin:-.5rem !important}.mt-xl-n2,.my-xl-n2{margin-top:-.5rem !important}.mr-xl-n2,.mx-xl-n2{margin-right:-.5rem !important}.mb-xl-n2,.my-xl-n2{margin-bottom:-.5rem !important}.ml-xl-n2,.mx-xl-n2{margin-left:-.5rem !important}.m-xl-n3{margin:-1rem !important}.mt-xl-n3,.my-xl-n3{margin-top:-1rem !important}.mr-xl-n3,.mx-xl-n3{margin-right:-1rem !important}.mb-xl-n3,.my-xl-n3{margin-bottom:-1rem !important}.ml-xl-n3,.mx-xl-n3{margin-left:-1rem !important}.m-xl-n4{margin:-1.5rem !important}.mt-xl-n4,.my-xl-n4{margin-top:-1.5rem !important}.mr-xl-n4,.mx-xl-n4{margin-right:-1.5rem !important}.mb-xl-n4,.my-xl-n4{margin-bottom:-1.5rem !important}.ml-xl-n4,.mx-xl-n4{margin-left:-1.5rem !important}.m-xl-n5{margin:-3rem !important}.mt-xl-n5,.my-xl-n5{margin-top:-3rem !important}.mr-xl-n5,.mx-xl-n5{margin-right:-3rem !important}.mb-xl-n5,.my-xl-n5{margin-bottom:-3rem !important}.ml-xl-n5,.mx-xl-n5{margin-left:-3rem !important}.m-xl-auto{margin:auto !important}.mt-xl-auto,.my-xl-auto{margin-top:auto !important}.mr-xl-auto,.mx-xl-auto{margin-right:auto !important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto !important}.ml-xl-auto,.mx-xl-auto{margin-left:auto !important}}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:"";background-color:rgba(0,0,0,0)}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace !important}.text-justify{text-align:justify !important}.text-wrap{white-space:normal !important}.text-nowrap{white-space:nowrap !important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left !important}.text-right{text-align:right !important}.text-center{text-align:center !important}@media (min-width: 576px){.text-sm-left{text-align:left !important}.text-sm-right{text-align:right !important}.text-sm-center{text-align:center !important}}@media (min-width: 768px){.text-md-left{text-align:left !important}.text-md-right{text-align:right !important}.text-md-center{text-align:center !important}}@media (min-width: 992px){.text-lg-left{text-align:left !important}.text-lg-right{text-align:right !important}.text-lg-center{text-align:center !important}}@media (min-width: 1200px){.text-xl-left{text-align:left !important}.text-xl-right{text-align:right !important}.text-xl-center{text-align:center !important}}.text-lowercase{text-transform:lowercase !important}.text-uppercase{text-transform:uppercase !important}.text-capitalize{text-transform:capitalize !important}.font-weight-light{font-weight:300 !important}.font-weight-lighter{font-weight:lighter !important}.font-weight-normal{font-weight:400 !important}.font-weight-bold{font-weight:700 !important}.font-weight-bolder{font-weight:bolder !important}.font-italic{font-style:italic !important}.text-white{color:#fff !important}.text-default{color:#dee2e6 !important}a.text-default:hover,a.text-default:focus{color:#b2bcc5 !important}.text-primary{color:#007bff !important}a.text-primary:hover,a.text-primary:focus{color:#0056b3 !important}.text-secondary{color:#6c757d !important}a.text-secondary:hover,a.text-secondary:focus{color:#494f54 !important}.text-success{color:#28a745 !important}a.text-success:hover,a.text-success:focus{color:#19692c !important}.text-info{color:#17a2b8 !important}a.text-info:hover,a.text-info:focus{color:#0f6674 !important}.text-warning{color:#ffc107 !important}a.text-warning:hover,a.text-warning:focus{color:#ba8b00 !important}.text-danger{color:#dc3545 !important}a.text-danger:hover,a.text-danger:focus{color:#a71d2a !important}.text-light{color:#f8f9fa !important}a.text-light:hover,a.text-light:focus{color:#cbd3da !important}.text-dark{color:#343a40 !important}a.text-dark:hover,a.text-dark:focus{color:#121416 !important}.text-body{color:#212529 !important}.text-muted,.help-text,.help-block{color:#6c757d !important}.text-black-50{color:rgba(0,0,0,0.5) !important}.text-white-50{color:rgba(255,255,255,0.5) !important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.text-decoration-none{text-decoration:none !important}.text-break{word-break:break-word !important;word-wrap:break-word !important}.text-reset{color:inherit !important}.visible{visibility:visible !important}.invisible{visibility:hidden !important}@media print{*,*::before,*::after{text-shadow:none !important;box-shadow:none !important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap !important}pre,blockquote{border:1px solid #adb5bd;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px !important}.container{min-width:992px !important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #dee2e6 !important}.table-dark{color:inherit}.table-dark th,.table-dark td,.table-dark thead th,.table-dark tbody+tbody{border-color:#dee2e6}.table .thead-dark th{color:inherit;border-color:#dee2e6}}.table th[align=left]{text-align:left}.table th[align=right]{text-align:right}.table th[align=center]{text-align:center}.well{display:block;background-color:rgba(0,0,0,0.03);color:#212529;padding:1.25rem;border-radius:.25rem}.well-lg{padding:1.5rem;border-radius:.3rem}.well-sm{padding:0.5rem;border-radius:.2rem}.draggable .well{background-color:#f7f7f7}.dropdown-menu>li.active>a{color:#fff;text-decoration:none;background-color:#007bff}.navbar:not(.fixed-bottom):not(.navbar-fixed-bottom):not(.navbar-fixed-bottom){margin-bottom:20px}ul.nav.navbar-nav{flex:1;-webkit-flex:1}ul.nav.navbar-nav.navbar-right{flex:unset;-webkit-flex:unset;display:flex;display:-webkit-flex;justify-content:flex-end;-webkit-justify-content:flex-end}.navbar.navbar-default{background-color:#f8f9fa !important}.navbar.navbar-inverse{background-color:#343a40 !important}.navbar-toggle>.icon-bar{display:none}@media (max-width: 575.98px){.navbar-header{width:100%}.navbar-header .navbar-toggle{float:right}}.nav-tabs>li.active>a{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-pills>li.active>a{color:#fff;background-color:#007bff}.nav-stacked{flex-direction:column;-webkit-flex-direction:column}.progress-bar-default{background-color:#dee2e6;color:#000}.progress-bar-primary{background-color:#007bff;color:#fff}.progress-bar-secondary{background-color:#6c757d;color:#fff}.progress-bar-success{background-color:#28a745;color:#fff}.progress-bar-info{background-color:#17a2b8;color:#fff}.progress-bar-warning{background-color:#ffc107;color:#000}.progress-bar-danger{background-color:#dc3545;color:#fff}.progress-bar-light{background-color:#f8f9fa;color:#000}.progress-bar-dark{background-color:#343a40;color:#fff}@font-face{font-family:'Glyphicons Halflings';src:url("fonts/bootstrap/glyphicons-halflings-regular.eot");src:url("fonts/bootstrap/glyphicons-halflings-regular.eot?#iefix") format("embedded-opentype"),url("fonts/bootstrap/glyphicons-halflings-regular.woff2") format("woff2"),url("fonts/bootstrap/glyphicons-halflings-regular.woff") format("woff"),url("fonts/bootstrap/glyphicons-halflings-regular.ttf") format("truetype"),url("fonts/bootstrap/glyphicons-halflings-regular.svg#glyphicons_halflingsregular") format("svg")}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}.form-group{margin-bottom:1rem}.shiny-input-checkboxgroup .checkbox-inline,.shiny-input-checkboxgroup .radio-inline,.shiny-input-radiogroup .checkbox-inline,.shiny-input-radiogroup .radio-inline{padding-left:0;margin-right:.75rem}.shiny-input-checkboxgroup .checkbox-inline label>input,.shiny-input-checkboxgroup .radio-inline label>input,.shiny-input-radiogroup .checkbox-inline label>input,.shiny-input-radiogroup .radio-inline label>input{margin-top:0;margin-right:.3125rem;margin-bottom:0}.input-daterange .input-group-addon.input-group-prepend.input-group-append{padding:inherit;line-height:inherit;text-shadow:inherit;border-width:0}.input-daterange .input-group-addon.input-group-prepend.input-group-append .input-group-text{border-radius:0}pre.shiny-code{padding:0.5rem}h1,h2,h3{margin-top:1.5rem}h4,h5,h6{margin-top:1rem}@media (min-width: 576px){.nav:not(.nav-hidden){display:flex !important;display:-webkit-flex !important}.nav:not(.nav-hidden):not(.nav-stacked):not(.flex-column){float:none !important}.nav:not(.nav-hidden):not(.nav-stacked):not(.flex-column)>.bslib-nav-spacer{margin-left:auto !important}.nav:not(.nav-hidden):not(.nav-stacked):not(.flex-column)>.form-inline{margin-top:auto;margin-bottom:auto}.nav.nav-stacked:not(.nav-hidden){flex-direction:column;-webkit-flex-direction:column;height:100%}.nav.nav-stacked:not(.nav-hidden)>.bslib-nav-spacer{margin-top:auto !important}}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/css-precompiled/5/bootstrap.min.css
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/css-precompiled/5/bootstrap.min.css	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/css-precompiled/5/bootstrap.min.css	(revision 3762)
@@ -0,0 +1,6 @@
+/*!
+   * Bootstrap  v5.2.2 (https://getbootstrap.com/)
+   * Copyright 2011-2022 The Bootstrap Authors
+   * Copyright 2011-2022 Twitter, Inc.
+   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+   */:root{--bs-blue: #0d6efd;--bs-indigo: #6610f2;--bs-purple: #6f42c1;--bs-pink: #d63384;--bs-red: #dc3545;--bs-orange: #fd7e14;--bs-yellow: #ffc107;--bs-green: #198754;--bs-teal: #20c997;--bs-cyan: #0dcaf0;--bs-black: #000;--bs-white: #fff;--bs-gray: #6c757d;--bs-gray-dark: #343a40;--bs-gray-100: #f8f9fa;--bs-gray-200: #e9ecef;--bs-gray-300: #dee2e6;--bs-gray-400: #ced4da;--bs-gray-500: #adb5bd;--bs-gray-600: #6c757d;--bs-gray-700: #495057;--bs-gray-800: #343a40;--bs-gray-900: #212529;--bs-default: #dee2e6;--bs-primary: #0d6efd;--bs-secondary: #6c757d;--bs-success: #198754;--bs-info: #0dcaf0;--bs-warning: #ffc107;--bs-danger: #dc3545;--bs-light: #f8f9fa;--bs-dark: #212529;--bs-default-rgb: 222,226,230;--bs-primary-rgb: 13,110,253;--bs-secondary-rgb: 108,117,125;--bs-success-rgb: 25,135,84;--bs-info-rgb: 13,202,240;--bs-warning-rgb: 255,193,7;--bs-danger-rgb: 220,53,69;--bs-light-rgb: 248,249,250;--bs-dark-rgb: 33,37,41;--bs-white-rgb: 255,255,255;--bs-black-rgb: 0,0,0;--bs-body-color-rgb: 33,37,41;--bs-body-bg-rgb: 255,255,255;--bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--bs-gradient: linear-gradient(180deg, rgba(255,255,255,0.15), rgba(255,255,255,0));--bs-body-font-family: var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight: 400;--bs-body-line-height: 1.5;--bs-body-color: #212529;--bs-body-bg: #fff;--bs-border-width: 1px;--bs-border-style: solid;--bs-border-color: #dee2e6;--bs-border-color-translucent: rgba(0,0,0,0.175);--bs-border-radius: .375rem;--bs-border-radius-sm: .25rem;--bs-border-radius-lg: .5rem;--bs-border-radius-xl: 1rem;--bs-border-radius-2xl: 2rem;--bs-border-radius-pill: 50rem;--bs-link-color: #0d6efd;--bs-link-hover-color: #0a58ca;--bs-code-color: #000;--bs-highlight-bg: #fff3cd}*,*::before,*::after{box-sizing:border-box}@media (prefers-reduced-motion: no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}hr{margin:1rem 0;color:inherit;border:0;border-top:1px solid;opacity:.25}h6,.h6,h5,.h5,h4,.h4,h3,.h3,h2,.h2,h1,.h1{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}h1,.h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width: 1200px){h1,.h1{font-size:2.5rem}}h2,.h2{font-size:calc(1.325rem + .9vw)}@media (min-width: 1200px){h2,.h2{font-size:2rem}}h3,.h3{font-size:calc(1.3rem + .6vw)}@media (min-width: 1200px){h3,.h3{font-size:1.75rem}}h4,.h4{font-size:calc(1.275rem + .3vw)}@media (min-width: 1200px){h4,.h4{font-size:1.5rem}}h5,.h5{font-size:1.25rem}h6,.h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title]{text-decoration:underline dotted;-webkit-text-decoration:underline dotted;-moz-text-decoration:underline dotted;-ms-text-decoration:underline dotted;-o-text-decoration:underline dotted;cursor:help;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem;padding:.625rem 1.25rem;border-left:.25rem solid #e9ecef}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}b,strong{font-weight:bolder}small,.small{font-size:.875em}mark,.mark{padding:.1875em;background-color:var(--bs-highlight-bg)}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:var(--bs-link-color);text-decoration:underline;-webkit-text-decoration:underline;-moz-text-decoration:underline;-ms-text-decoration:underline;-o-text-decoration:underline}a:hover{color:var(--bs-link-hover-color)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}pre,code,kbd,samp{font-family:var(--bs-font-monospace);font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em;color:#000;background-color:#f6f6f6;padding:.5rem;border:1px solid #dee2e6;border-radius:.375rem}pre code{background-color:transparent;font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:var(--bs-code-color);background-color:#f6f6f6;border-radius:.375rem;padding:.125rem .25rem;word-wrap:break-word}a>code{color:inherit}kbd{padding:.1875rem .375rem;font-size:.875em;color:var(--bs-body-bg);background-color:var(--bs-body-color);border-radius:.25rem}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}thead,tbody,tfoot,tr,td,th{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role="button"]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type="date"]):not([type="datetime-local"]):not([type="month"]):not([type="week"]):not([type="time"])::-webkit-calendar-picker-indicator{display:none !important}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button:not(:disabled),[type="button"]:not(:disabled),[type="reset"]:not(:disabled),[type="submit"]:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width: 1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-text,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type="search"]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none !important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-6{font-size:2.5rem}}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:#6c757d}.blockquote-footer::before{content:"\2014\00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid var(--bs-border-color);border-radius:.375rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:.875em;color:#6c757d}.container,.container-fluid,.container-xxl,.container-xl,.container-lg,.container-md,.container-sm{--bs-gutter-x: 1.5rem;--bs-gutter-y: 0;width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-right:auto;margin-left:auto}@media (min-width: 576px){.container-sm,.container{max-width:540px}}@media (min-width: 768px){.container-md,.container-sm,.container{max-width:720px}}@media (min-width: 992px){.container-lg,.container-md,.container-sm,.container{max-width:960px}}@media (min-width: 1200px){.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1140px}}@media (min-width: 1400px){.container-xxl,.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1320px}}.row{--bs-gutter-x: 1.5rem;--bs-gutter-y: 0;display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;margin-top:calc(-1 * var(--bs-gutter-y));margin-right:calc(-.5 * var(--bs-gutter-x));margin-left:calc(-.5 * var(--bs-gutter-x))}.row>*{flex-shrink:0;-webkit-flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%;-webkit-flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:33.33333%}.row-cols-4>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:16.66667%}.col-auto{flex:0 0 auto;-webkit-flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;-webkit-flex:0 0 auto;width:8.33333%}.col-2{flex:0 0 auto;-webkit-flex:0 0 auto;width:16.66667%}.col-3{flex:0 0 auto;-webkit-flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;-webkit-flex:0 0 auto;width:33.33333%}.col-5{flex:0 0 auto;-webkit-flex:0 0 auto;width:41.66667%}.col-6{flex:0 0 auto;-webkit-flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;-webkit-flex:0 0 auto;width:58.33333%}.col-8{flex:0 0 auto;-webkit-flex:0 0 auto;width:66.66667%}.col-9{flex:0 0 auto;-webkit-flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;-webkit-flex:0 0 auto;width:83.33333%}.col-11{flex:0 0 auto;-webkit-flex:0 0 auto;width:91.66667%}.col-12{flex:0 0 auto;-webkit-flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333%}.offset-2{margin-left:16.66667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333%}.offset-5{margin-left:41.66667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333%}.offset-8{margin-left:66.66667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333%}.offset-11{margin-left:91.66667%}.g-0,.gx-0{--bs-gutter-x: 0}.g-0,.gy-0{--bs-gutter-y: 0}.g-1,.gx-1{--bs-gutter-x: .25rem}.g-1,.gy-1{--bs-gutter-y: .25rem}.g-2,.gx-2{--bs-gutter-x: .5rem}.g-2,.gy-2{--bs-gutter-y: .5rem}.g-3,.gx-3{--bs-gutter-x: 1rem}.g-3,.gy-3{--bs-gutter-y: 1rem}.g-4,.gx-4{--bs-gutter-x: 1.5rem}.g-4,.gy-4{--bs-gutter-y: 1.5rem}.g-5,.gx-5{--bs-gutter-x: 3rem}.g-5,.gy-5{--bs-gutter-y: 3rem}@media (min-width: 576px){.col-sm{flex:1 0 0%;-webkit-flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:33.33333%}.row-cols-sm-4>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:16.66667%}.col-sm-auto{flex:0 0 auto;-webkit-flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;-webkit-flex:0 0 auto;width:8.33333%}.col-sm-2{flex:0 0 auto;-webkit-flex:0 0 auto;width:16.66667%}.col-sm-3{flex:0 0 auto;-webkit-flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;-webkit-flex:0 0 auto;width:33.33333%}.col-sm-5{flex:0 0 auto;-webkit-flex:0 0 auto;width:41.66667%}.col-sm-6{flex:0 0 auto;-webkit-flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;-webkit-flex:0 0 auto;width:58.33333%}.col-sm-8{flex:0 0 auto;-webkit-flex:0 0 auto;width:66.66667%}.col-sm-9{flex:0 0 auto;-webkit-flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;-webkit-flex:0 0 auto;width:83.33333%}.col-sm-11{flex:0 0 auto;-webkit-flex:0 0 auto;width:91.66667%}.col-sm-12{flex:0 0 auto;-webkit-flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333%}.offset-sm-2{margin-left:16.66667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333%}.offset-sm-5{margin-left:41.66667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333%}.offset-sm-8{margin-left:66.66667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333%}.offset-sm-11{margin-left:91.66667%}.g-sm-0,.gx-sm-0{--bs-gutter-x: 0}.g-sm-0,.gy-sm-0{--bs-gutter-y: 0}.g-sm-1,.gx-sm-1{--bs-gutter-x: .25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y: .25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x: .5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y: .5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x: 1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y: 1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x: 1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y: 1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x: 3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y: 3rem}}@media (min-width: 768px){.col-md{flex:1 0 0%;-webkit-flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:33.33333%}.row-cols-md-4>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:16.66667%}.col-md-auto{flex:0 0 auto;-webkit-flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;-webkit-flex:0 0 auto;width:8.33333%}.col-md-2{flex:0 0 auto;-webkit-flex:0 0 auto;width:16.66667%}.col-md-3{flex:0 0 auto;-webkit-flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;-webkit-flex:0 0 auto;width:33.33333%}.col-md-5{flex:0 0 auto;-webkit-flex:0 0 auto;width:41.66667%}.col-md-6{flex:0 0 auto;-webkit-flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;-webkit-flex:0 0 auto;width:58.33333%}.col-md-8{flex:0 0 auto;-webkit-flex:0 0 auto;width:66.66667%}.col-md-9{flex:0 0 auto;-webkit-flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;-webkit-flex:0 0 auto;width:83.33333%}.col-md-11{flex:0 0 auto;-webkit-flex:0 0 auto;width:91.66667%}.col-md-12{flex:0 0 auto;-webkit-flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333%}.offset-md-2{margin-left:16.66667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333%}.offset-md-5{margin-left:41.66667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333%}.offset-md-8{margin-left:66.66667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333%}.offset-md-11{margin-left:91.66667%}.g-md-0,.gx-md-0{--bs-gutter-x: 0}.g-md-0,.gy-md-0{--bs-gutter-y: 0}.g-md-1,.gx-md-1{--bs-gutter-x: .25rem}.g-md-1,.gy-md-1{--bs-gutter-y: .25rem}.g-md-2,.gx-md-2{--bs-gutter-x: .5rem}.g-md-2,.gy-md-2{--bs-gutter-y: .5rem}.g-md-3,.gx-md-3{--bs-gutter-x: 1rem}.g-md-3,.gy-md-3{--bs-gutter-y: 1rem}.g-md-4,.gx-md-4{--bs-gutter-x: 1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y: 1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x: 3rem}.g-md-5,.gy-md-5{--bs-gutter-y: 3rem}}@media (min-width: 992px){.col-lg{flex:1 0 0%;-webkit-flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:33.33333%}.row-cols-lg-4>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:16.66667%}.col-lg-auto{flex:0 0 auto;-webkit-flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;-webkit-flex:0 0 auto;width:8.33333%}.col-lg-2{flex:0 0 auto;-webkit-flex:0 0 auto;width:16.66667%}.col-lg-3{flex:0 0 auto;-webkit-flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;-webkit-flex:0 0 auto;width:33.33333%}.col-lg-5{flex:0 0 auto;-webkit-flex:0 0 auto;width:41.66667%}.col-lg-6{flex:0 0 auto;-webkit-flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;-webkit-flex:0 0 auto;width:58.33333%}.col-lg-8{flex:0 0 auto;-webkit-flex:0 0 auto;width:66.66667%}.col-lg-9{flex:0 0 auto;-webkit-flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;-webkit-flex:0 0 auto;width:83.33333%}.col-lg-11{flex:0 0 auto;-webkit-flex:0 0 auto;width:91.66667%}.col-lg-12{flex:0 0 auto;-webkit-flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333%}.offset-lg-2{margin-left:16.66667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333%}.offset-lg-5{margin-left:41.66667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333%}.offset-lg-8{margin-left:66.66667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333%}.offset-lg-11{margin-left:91.66667%}.g-lg-0,.gx-lg-0{--bs-gutter-x: 0}.g-lg-0,.gy-lg-0{--bs-gutter-y: 0}.g-lg-1,.gx-lg-1{--bs-gutter-x: .25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y: .25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x: .5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y: .5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x: 1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y: 1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x: 1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y: 1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x: 3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y: 3rem}}@media (min-width: 1200px){.col-xl{flex:1 0 0%;-webkit-flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:33.33333%}.row-cols-xl-4>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:16.66667%}.col-xl-auto{flex:0 0 auto;-webkit-flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;-webkit-flex:0 0 auto;width:8.33333%}.col-xl-2{flex:0 0 auto;-webkit-flex:0 0 auto;width:16.66667%}.col-xl-3{flex:0 0 auto;-webkit-flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;-webkit-flex:0 0 auto;width:33.33333%}.col-xl-5{flex:0 0 auto;-webkit-flex:0 0 auto;width:41.66667%}.col-xl-6{flex:0 0 auto;-webkit-flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;-webkit-flex:0 0 auto;width:58.33333%}.col-xl-8{flex:0 0 auto;-webkit-flex:0 0 auto;width:66.66667%}.col-xl-9{flex:0 0 auto;-webkit-flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;-webkit-flex:0 0 auto;width:83.33333%}.col-xl-11{flex:0 0 auto;-webkit-flex:0 0 auto;width:91.66667%}.col-xl-12{flex:0 0 auto;-webkit-flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333%}.offset-xl-2{margin-left:16.66667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333%}.offset-xl-5{margin-left:41.66667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333%}.offset-xl-8{margin-left:66.66667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333%}.offset-xl-11{margin-left:91.66667%}.g-xl-0,.gx-xl-0{--bs-gutter-x: 0}.g-xl-0,.gy-xl-0{--bs-gutter-y: 0}.g-xl-1,.gx-xl-1{--bs-gutter-x: .25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y: .25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x: .5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y: .5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x: 1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y: 1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x: 1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y: 1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x: 3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y: 3rem}}@media (min-width: 1400px){.col-xxl{flex:1 0 0%;-webkit-flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:33.33333%}.row-cols-xxl-4>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:16.66667%}.col-xxl-auto{flex:0 0 auto;-webkit-flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;-webkit-flex:0 0 auto;width:8.33333%}.col-xxl-2{flex:0 0 auto;-webkit-flex:0 0 auto;width:16.66667%}.col-xxl-3{flex:0 0 auto;-webkit-flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;-webkit-flex:0 0 auto;width:33.33333%}.col-xxl-5{flex:0 0 auto;-webkit-flex:0 0 auto;width:41.66667%}.col-xxl-6{flex:0 0 auto;-webkit-flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;-webkit-flex:0 0 auto;width:58.33333%}.col-xxl-8{flex:0 0 auto;-webkit-flex:0 0 auto;width:66.66667%}.col-xxl-9{flex:0 0 auto;-webkit-flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;-webkit-flex:0 0 auto;width:83.33333%}.col-xxl-11{flex:0 0 auto;-webkit-flex:0 0 auto;width:91.66667%}.col-xxl-12{flex:0 0 auto;-webkit-flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333%}.offset-xxl-2{margin-left:16.66667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333%}.offset-xxl-5{margin-left:41.66667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333%}.offset-xxl-8{margin-left:66.66667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333%}.offset-xxl-11{margin-left:91.66667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x: 0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y: 0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x: .25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y: .25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x: .5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y: .5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x: 1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y: 1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x: 1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y: 1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x: 3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y: 3rem}}.table{--bs-table-color: var(--bs-body-color);--bs-table-bg: rgba(0,0,0,0);--bs-table-border-color: var(--bs-border-color);--bs-table-accent-bg: rgba(0,0,0,0);--bs-table-striped-color: var(--bs-body-color);--bs-table-striped-bg: rgba(0,0,0,0.05);--bs-table-active-color: var(--bs-body-color);--bs-table-active-bg: rgba(0,0,0,0.1);--bs-table-hover-color: var(--bs-body-color);--bs-table-hover-bg: rgba(0,0,0,0.075);width:100%;margin-bottom:1rem;color:var(--bs-table-color);vertical-align:top;border-color:var(--bs-table-border-color)}.table>:not(caption)>*>*{padding:.5rem .5rem;background-color:var(--bs-table-bg);border-bottom-width:1px;box-shadow:inset 0 0 0 9999px var(--bs-table-accent-bg)}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table-group-divider{border-top:2px solid currentcolor}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem .25rem}.table-bordered>:not(caption)>*{border-width:1px 0}.table-bordered>:not(caption)>*>*{border-width:0 1px}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child){border-top-width:0}.table-striped>tbody>tr:nth-of-type(odd)>*{--bs-table-accent-bg: var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}.table-striped-columns>:not(caption)>tr>:nth-child(even){--bs-table-accent-bg: var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}.table-active{--bs-table-accent-bg: var(--bs-table-active-bg);color:var(--bs-table-active-color)}.table-hover>tbody>tr:hover>*{--bs-table-accent-bg: var(--bs-table-hover-bg);color:var(--bs-table-hover-color)}.table-primary{--bs-table-color: #000;--bs-table-bg: #cfe2ff;--bs-table-border-color: #bacbe6;--bs-table-striped-bg: #c5d7f2;--bs-table-striped-color: #000;--bs-table-active-bg: #bacbe6;--bs-table-active-color: #000;--bs-table-hover-bg: #bfd1ec;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-secondary{--bs-table-color: #000;--bs-table-bg: #e2e3e5;--bs-table-border-color: #cbccce;--bs-table-striped-bg: #d7d8da;--bs-table-striped-color: #000;--bs-table-active-bg: #cbccce;--bs-table-active-color: #000;--bs-table-hover-bg: #d1d2d4;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-success{--bs-table-color: #000;--bs-table-bg: #d1e7dd;--bs-table-border-color: #bcd0c7;--bs-table-striped-bg: #c7dbd2;--bs-table-striped-color: #000;--bs-table-active-bg: #bcd0c7;--bs-table-active-color: #000;--bs-table-hover-bg: #c1d6cc;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-info{--bs-table-color: #000;--bs-table-bg: #cff4fc;--bs-table-border-color: #badce3;--bs-table-striped-bg: #c5e8ef;--bs-table-striped-color: #000;--bs-table-active-bg: #badce3;--bs-table-active-color: #000;--bs-table-hover-bg: #bfe2e9;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-warning{--bs-table-color: #000;--bs-table-bg: #fff3cd;--bs-table-border-color: #e6dbb9;--bs-table-striped-bg: #f2e7c3;--bs-table-striped-color: #000;--bs-table-active-bg: #e6dbb9;--bs-table-active-color: #000;--bs-table-hover-bg: #ece1be;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-danger{--bs-table-color: #000;--bs-table-bg: #f8d7da;--bs-table-border-color: #dfc2c4;--bs-table-striped-bg: #eccccf;--bs-table-striped-color: #000;--bs-table-active-bg: #dfc2c4;--bs-table-active-color: #000;--bs-table-hover-bg: #e5c7ca;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-light{--bs-table-color: #000;--bs-table-bg: #f8f9fa;--bs-table-border-color: #dfe0e1;--bs-table-striped-bg: #ecedee;--bs-table-striped-color: #000;--bs-table-active-bg: #dfe0e1;--bs-table-active-color: #000;--bs-table-hover-bg: #e5e6e7;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-dark{--bs-table-color: #fff;--bs-table-bg: #212529;--bs-table-border-color: #373b3e;--bs-table-striped-bg: #2c3034;--bs-table-striped-color: #fff;--bs-table-active-bg: #373b3e;--bs-table-active-color: #fff;--bs-table-hover-bg: #323539;--bs-table-hover-color: #fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width: 575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label,.shiny-input-container .control-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem}.form-text,.help-text,.help-block{margin-top:.25rem;font-size:.875em;color:#6c757d}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;border-radius:.375rem;transition:border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-control{transition:none}}.form-control[type="file"]{overflow:hidden}.form-control[type="file"]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:#212529;background-color:#fff;border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,0.25)}.form-control::-webkit-date-and-time-value{height:1.5em}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled{background-color:#e9ecef;opacity:1}.form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#dde0e3}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext:focus{outline:0}.form-control-plaintext.form-control-sm,.form-control-plaintext.form-control-lg{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;border-radius:.25rem}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-.25rem -.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;border-radius:.5rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-.5rem -1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + .75rem + 2px)}textarea.form-control-sm{min-height:calc(1.5em + .5rem + 2px)}textarea.form-control-lg{min-height:calc(1.5em + 1rem + 2px)}.form-control-color{width:3rem;height:calc(1.5em + .75rem + 2px);padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{border:0 !important;border-radius:.375rem}.form-control-color::-webkit-color-swatch{border-radius:.375rem}.form-control-color.form-control-sm{height:calc(1.5em + .5rem + 2px)}.form-control-color.form-control-lg{height:calc(1.5em + 1rem + 2px)}.form-select{display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;-moz-padding-start:calc(.75rem - 3px);font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:1px solid #ced4da;border-radius:.375rem;transition:border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none}@media (prefers-reduced-motion: reduce){.form-select{transition:none}}.form-select:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,0.25)}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{background-color:#e9ecef}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #212529}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem;border-radius:.25rem}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem;border-radius:.5rem}.form-check,.shiny-input-container .checkbox,.shiny-input-container .radio{display:block;min-height:1.5rem;padding-left:0;margin-bottom:.125rem}.form-check .form-check-input,.form-check .shiny-input-container .checkbox input,.form-check .shiny-input-container .radio input,.shiny-input-container .checkbox .form-check-input,.shiny-input-container .checkbox .shiny-input-container .checkbox input,.shiny-input-container .checkbox .shiny-input-container .radio input,.shiny-input-container .radio .form-check-input,.shiny-input-container .radio .shiny-input-container .checkbox input,.shiny-input-container .radio .shiny-input-container .radio input{float:left;margin-left:0}.form-check-reverse{padding-right:0;padding-left:0;text-align:right}.form-check-reverse .form-check-input{float:right;margin-right:0;margin-left:0}.form-check-input,.shiny-input-container .checkbox input,.shiny-input-container .checkbox-inline input,.shiny-input-container .radio input,.shiny-input-container .radio-inline input{width:1em;height:1em;margin-top:.25em;vertical-align:top;background-color:#fff;background-repeat:no-repeat;background-position:center;background-size:contain;border:1px solid rgba(0,0,0,0.25);appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;print-color-adjust:exact}.form-check-input[type="checkbox"],.shiny-input-container .checkbox input[type="checkbox"],.shiny-input-container .checkbox-inline input[type="checkbox"],.shiny-input-container .radio input[type="checkbox"],.shiny-input-container .radio-inline input[type="checkbox"]{border-radius:.25em}.form-check-input[type="radio"],.shiny-input-container .checkbox input[type="radio"],.shiny-input-container .checkbox-inline input[type="radio"],.shiny-input-container .radio input[type="radio"],.shiny-input-container .radio-inline input[type="radio"]{border-radius:50%}.form-check-input:active,.shiny-input-container .checkbox input:active,.shiny-input-container .checkbox-inline input:active,.shiny-input-container .radio input:active,.shiny-input-container .radio-inline input:active{filter:brightness(90%)}.form-check-input:focus,.shiny-input-container .checkbox input:focus,.shiny-input-container .checkbox-inline input:focus,.shiny-input-container .radio input:focus,.shiny-input-container .radio-inline input:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,0.25)}.form-check-input:checked,.shiny-input-container .checkbox input:checked,.shiny-input-container .checkbox-inline input:checked,.shiny-input-container .radio input:checked,.shiny-input-container .radio-inline input:checked{background-color:#0d6efd;border-color:#0d6efd}.form-check-input[type="checkbox"]:checked,.shiny-input-container .checkbox input[type="checkbox"]:checked,.shiny-input-container .checkbox-inline input[type="checkbox"]:checked,.shiny-input-container .radio input[type="checkbox"]:checked,.shiny-input-container .radio-inline input[type="checkbox"]:checked{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e")}.form-check-input[type="radio"]:checked,.shiny-input-container .checkbox input[type="radio"]:checked,.shiny-input-container .checkbox-inline input[type="radio"]:checked,.shiny-input-container .radio input[type="radio"]:checked,.shiny-input-container .radio-inline input[type="radio"]:checked{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type="checkbox"]:indeterminate,.shiny-input-container .checkbox input[type="checkbox"]:indeterminate,.shiny-input-container .checkbox-inline input[type="checkbox"]:indeterminate,.shiny-input-container .radio input[type="checkbox"]:indeterminate,.shiny-input-container .radio-inline input[type="checkbox"]:indeterminate{background-color:#0d6efd;border-color:#0d6efd;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled,.shiny-input-container .checkbox input:disabled,.shiny-input-container .checkbox-inline input:disabled,.shiny-input-container .radio input:disabled,.shiny-input-container .radio-inline input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input[disabled]~.form-check-label,.form-check-input[disabled]~span,.form-check-input:disabled~.form-check-label,.form-check-input:disabled~span,.shiny-input-container .checkbox input[disabled]~.form-check-label,.shiny-input-container .checkbox input[disabled]~span,.shiny-input-container .checkbox input:disabled~.form-check-label,.shiny-input-container .checkbox input:disabled~span,.shiny-input-container .checkbox-inline input[disabled]~.form-check-label,.shiny-input-container .checkbox-inline input[disabled]~span,.shiny-input-container .checkbox-inline input:disabled~.form-check-label,.shiny-input-container .checkbox-inline input:disabled~span,.shiny-input-container .radio input[disabled]~.form-check-label,.shiny-input-container .radio input[disabled]~span,.shiny-input-container .radio input:disabled~.form-check-label,.shiny-input-container .radio input:disabled~span,.shiny-input-container .radio-inline input[disabled]~.form-check-label,.shiny-input-container .radio-inline input[disabled]~span,.shiny-input-container .radio-inline input:disabled~.form-check-label,.shiny-input-container .radio-inline input:disabled~span{cursor:default;opacity:.5}.form-check-label,.shiny-input-container .checkbox label,.shiny-input-container .checkbox-inline label,.shiny-input-container .radio label,.shiny-input-container .radio-inline label{cursor:pointer}.form-switch{padding-left:2.5em}.form-switch .form-check-input{width:2em;margin-left:-2.5em;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280,0,0,0.25%29'/%3e%3c/svg%3e");background-position:left center;border-radius:2em;transition:background-position 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-switch.form-check-reverse{padding-right:2.5em;padding-left:0}.form-switch.form-check-reverse .form-check-input{margin-right:-2.5em;margin-left:0}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.btn-check[disabled]+.btn,.btn-check:disabled+.btn{pointer-events:none;filter:none;opacity:.65}.form-range{width:100%;height:1.5rem;padding:0;background-color:transparent;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,0.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,0.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#0d6efd;border:0;border-radius:1rem;transition:background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none}@media (prefers-reduced-motion: reduce){.form-range::-webkit-slider-thumb{transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#b6d4fe}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#0d6efd;border:0;border-radius:1rem;transition:background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none}@media (prefers-reduced-motion: reduce){.form-range::-moz-range-thumb{transition:none}}.form-range::-moz-range-thumb:active{background-color:#b6d4fe}.form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.form-range:disabled::-moz-range-thumb{background-color:#adb5bd}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-control-plaintext,.form-floating>.form-select{height:calc(3.5rem + 2px);line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;width:100%;height:100%;padding:1rem .75rem;overflow:hidden;text-align:start;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;border:1px solid transparent;transform-origin:0 0;transition:opacity 0.1s ease-in-out,transform 0.1s ease-in-out}@media (prefers-reduced-motion: reduce){.form-floating>label{transition:none}}.form-floating>.form-control,.form-floating>.form-control-plaintext{padding:1rem .75rem}.form-floating>.form-control::placeholder,.form-floating>.form-control-plaintext::placeholder{color:transparent}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown),.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:-webkit-autofill,.form-floating>.form-control-plaintext:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-control-plaintext~label,.form-floating>.form-select~label{opacity:.65;transform:scale(0.85) translateY(-0.5rem) translateX(0.15rem)}.form-floating>.form-control:-webkit-autofill~label{opacity:.65;transform:scale(0.85) translateY(-0.5rem) translateX(0.15rem)}.form-floating>.form-control-plaintext~label{border-width:1px 0}.input-group{position:relative;display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;align-items:stretch;-webkit-align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-select,.input-group>.form-floating{position:relative;flex:1 1 auto;-webkit-flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-select:focus,.input-group>.form-floating:focus-within{z-index:5}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:5}.input-group-text{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.375rem}.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text,.input-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;border-radius:.5rem}.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text,.input-group-sm>.btn{padding:.25rem .5rem;font-size:.875rem;border-radius:.25rem}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n + 3),.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select{border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>:nth-last-child(n + 3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),.input-group.has-validation>.dropdown-toggle:nth-last-child(n + 4),.input-group.has-validation>.form-floating:nth-last-child(n + 3)>.form-control,.input-group.has-validation>.form-floating:nth-last-child(n + 3)>.form-select{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.form-floating:not(:first-child)>.form-control,.input-group>.form-floating:not(:first-child)>.form-select{border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#198754}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:rgba(25,135,84,0.9);border-radius:.375rem}.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip,.is-valid~.valid-feedback,.is-valid~.valid-tooltip{display:block}.was-validated .form-control:valid,.form-control.is-valid{border-color:#198754;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .form-control:valid:focus,.form-control.is-valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem rgba(25,135,84,0.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.was-validated .form-select:valid,.form-select.is-valid{border-color:#198754}.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select[size="1"]:valid:not([multiple]),.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid[size="1"]:not([multiple]){padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .form-select:valid:focus,.form-select.is-valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem rgba(25,135,84,0.25)}.was-validated .form-control-color:valid,.form-control-color.is-valid{width:calc(3rem + calc(1.5em + .75rem))}.was-validated .form-check-input:valid,.form-check-input.is-valid{border-color:#198754}.was-validated .form-check-input:valid:checked,.form-check-input.is-valid:checked{background-color:#198754}.was-validated .form-check-input:valid:focus,.form-check-input.is-valid:focus{box-shadow:0 0 0 .25rem rgba(25,135,84,0.25)}.was-validated .form-check-input:valid~.form-check-label,.form-check-input.is-valid~.form-check-label{color:#198754}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.was-validated .input-group>.form-control:not(:focus):valid,.input-group>.form-control.is-valid:not(:focus),.was-validated .input-group>.form-select:not(:focus):valid,.input-group>.form-select.is-valid:not(:focus),.was-validated .input-group>.form-floating:not(:focus-within):valid,.input-group>.form-floating.is-valid:not(:focus-within){z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:rgba(220,53,69,0.9);border-radius:.375rem}.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip,.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip{display:block}.was-validated .form-control:invalid,.form-control.is-invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem rgba(220,53,69,0.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.was-validated .form-select:invalid,.form-select.is-invalid{border-color:#dc3545}.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select[size="1"]:invalid:not([multiple]),.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid[size="1"]:not([multiple]){padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .form-select:invalid:focus,.form-select.is-invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem rgba(220,53,69,0.25)}.was-validated .form-control-color:invalid,.form-control-color.is-invalid{width:calc(3rem + calc(1.5em + .75rem))}.was-validated .form-check-input:invalid,.form-check-input.is-invalid{border-color:#dc3545}.was-validated .form-check-input:invalid:checked,.form-check-input.is-invalid:checked{background-color:#dc3545}.was-validated .form-check-input:invalid:focus,.form-check-input.is-invalid:focus{box-shadow:0 0 0 .25rem rgba(220,53,69,0.25)}.was-validated .form-check-input:invalid~.form-check-label,.form-check-input.is-invalid~.form-check-label{color:#dc3545}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.was-validated .input-group>.form-control:not(:focus):invalid,.input-group>.form-control.is-invalid:not(:focus),.was-validated .input-group>.form-select:not(:focus):invalid,.input-group>.form-select.is-invalid:not(:focus),.was-validated .input-group>.form-floating:not(:focus-within):invalid,.input-group>.form-floating.is-invalid:not(:focus-within){z-index:4}.btn{--bs-btn-padding-x: .75rem;--bs-btn-padding-y: .375rem;--bs-btn-font-family: ;--bs-btn-font-size:1rem;--bs-btn-font-weight: 400;--bs-btn-line-height: 1.5;--bs-btn-color: #212529;--bs-btn-bg: transparent;--bs-btn-border-width: 1px;--bs-btn-border-color: transparent;--bs-btn-border-radius: .375rem;--bs-btn-hover-border-color: transparent;--bs-btn-box-shadow: inset 0 1px 0 rgba(255,255,255,0.15),0 1px 1px rgba(0,0,0,0.075);--bs-btn-disabled-opacity: .65;--bs-btn-focus-box-shadow: 0 0 0 .25rem rgba(var(--bs-btn-focus-shadow-rgb), .5);display:inline-block;padding:var(--bs-btn-padding-y) var(--bs-btn-padding-x);font-family:var(--bs-btn-font-family);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);color:var(--bs-btn-color);text-align:center;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;vertical-align:middle;cursor:pointer;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);border-radius:var(--bs-btn-border-radius);background-color:var(--bs-btn-bg);transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.btn{transition:none}}.btn:hover{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color)}.btn-check+.btn:hover{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color)}.btn:focus-visible{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:focus-visible+.btn{border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:checked+.btn,:not(.btn-check)+.btn:active,.btn:first-child:active,.btn.active,.btn.show,.btn.in{color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color)}.btn-check:checked+.btn:focus-visible,:not(.btn-check)+.btn:active:focus-visible,.btn:first-child:active:focus-visible,.btn.active:focus-visible,.btn.show:focus-visible,.btn.in:focus-visible{box-shadow:var(--bs-btn-focus-box-shadow)}.btn:disabled,.btn.disabled,fieldset:disabled .btn{color:var(--bs-btn-disabled-color);pointer-events:none;background-color:var(--bs-btn-disabled-bg);border-color:var(--bs-btn-disabled-border-color);opacity:var(--bs-btn-disabled-opacity)}.btn-default{--bs-btn-color: #000;--bs-btn-bg: #dee2e6;--bs-btn-border-color: #dee2e6;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #e3e6ea;--bs-btn-hover-border-color: #e1e5e9;--bs-btn-focus-shadow-rgb: 189,192,196;--bs-btn-active-color: #000;--bs-btn-active-bg: #e5e8eb;--bs-btn-active-border-color: #e1e5e9;--bs-btn-active-shadow: inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #dee2e6;--bs-btn-disabled-border-color: #dee2e6}.btn-primary{--bs-btn-color: #fff;--bs-btn-bg: #0d6efd;--bs-btn-border-color: #0d6efd;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #0b5ed7;--bs-btn-hover-border-color: #0a58ca;--bs-btn-focus-shadow-rgb: 49,132,253;--bs-btn-active-color: #fff;--bs-btn-active-bg: #0a58ca;--bs-btn-active-border-color: #0a53be;--bs-btn-active-shadow: inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #0d6efd;--bs-btn-disabled-border-color: #0d6efd}.btn-secondary{--bs-btn-color: #fff;--bs-btn-bg: #6c757d;--bs-btn-border-color: #6c757d;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #5c636a;--bs-btn-hover-border-color: #565e64;--bs-btn-focus-shadow-rgb: 130,138,145;--bs-btn-active-color: #fff;--bs-btn-active-bg: #565e64;--bs-btn-active-border-color: #51585e;--bs-btn-active-shadow: inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #6c757d;--bs-btn-disabled-border-color: #6c757d}.btn-success{--bs-btn-color: #fff;--bs-btn-bg: #198754;--bs-btn-border-color: #198754;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #157347;--bs-btn-hover-border-color: #146c43;--bs-btn-focus-shadow-rgb: 60,153,110;--bs-btn-active-color: #fff;--bs-btn-active-bg: #146c43;--bs-btn-active-border-color: #13653f;--bs-btn-active-shadow: inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #198754;--bs-btn-disabled-border-color: #198754}.btn-info{--bs-btn-color: #000;--bs-btn-bg: #0dcaf0;--bs-btn-border-color: #0dcaf0;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #31d2f2;--bs-btn-hover-border-color: #25cff2;--bs-btn-focus-shadow-rgb: 11,172,204;--bs-btn-active-color: #000;--bs-btn-active-bg: #3dd5f3;--bs-btn-active-border-color: #25cff2;--bs-btn-active-shadow: inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #0dcaf0;--bs-btn-disabled-border-color: #0dcaf0}.btn-warning{--bs-btn-color: #000;--bs-btn-bg: #ffc107;--bs-btn-border-color: #ffc107;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ffca2c;--bs-btn-hover-border-color: #ffc720;--bs-btn-focus-shadow-rgb: 217,164,6;--bs-btn-active-color: #000;--bs-btn-active-bg: #ffcd39;--bs-btn-active-border-color: #ffc720;--bs-btn-active-shadow: inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #ffc107;--bs-btn-disabled-border-color: #ffc107}.btn-danger{--bs-btn-color: #fff;--bs-btn-bg: #dc3545;--bs-btn-border-color: #dc3545;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #bb2d3b;--bs-btn-hover-border-color: #b02a37;--bs-btn-focus-shadow-rgb: 225,83,97;--bs-btn-active-color: #fff;--bs-btn-active-bg: #b02a37;--bs-btn-active-border-color: #a52834;--bs-btn-active-shadow: inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #dc3545;--bs-btn-disabled-border-color: #dc3545}.btn-light{--bs-btn-color: #000;--bs-btn-bg: #f8f9fa;--bs-btn-border-color: #f8f9fa;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #d3d4d5;--bs-btn-hover-border-color: #c6c7c8;--bs-btn-focus-shadow-rgb: 211,212,213;--bs-btn-active-color: #000;--bs-btn-active-bg: #c6c7c8;--bs-btn-active-border-color: #babbbc;--bs-btn-active-shadow: inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #f8f9fa;--bs-btn-disabled-border-color: #f8f9fa}.btn-dark{--bs-btn-color: #fff;--bs-btn-bg: #212529;--bs-btn-border-color: #212529;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #424649;--bs-btn-hover-border-color: #373b3e;--bs-btn-focus-shadow-rgb: 66,70,73;--bs-btn-active-color: #fff;--bs-btn-active-bg: #4d5154;--bs-btn-active-border-color: #373b3e;--bs-btn-active-shadow: inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #212529;--bs-btn-disabled-border-color: #212529}.btn-outline-default{--bs-btn-color: #dee2e6;--bs-btn-border-color: #dee2e6;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #dee2e6;--bs-btn-hover-border-color: #dee2e6;--bs-btn-focus-shadow-rgb: 222,226,230;--bs-btn-active-color: #000;--bs-btn-active-bg: #dee2e6;--bs-btn-active-border-color: #dee2e6;--bs-btn-active-shadow: inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color: #dee2e6;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #dee2e6;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-primary{--bs-btn-color: #0d6efd;--bs-btn-border-color: #0d6efd;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #0d6efd;--bs-btn-hover-border-color: #0d6efd;--bs-btn-focus-shadow-rgb: 13,110,253;--bs-btn-active-color: #fff;--bs-btn-active-bg: #0d6efd;--bs-btn-active-border-color: #0d6efd;--bs-btn-active-shadow: inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color: #0d6efd;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #0d6efd;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-secondary{--bs-btn-color: #6c757d;--bs-btn-border-color: #6c757d;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #6c757d;--bs-btn-hover-border-color: #6c757d;--bs-btn-focus-shadow-rgb: 108,117,125;--bs-btn-active-color: #fff;--bs-btn-active-bg: #6c757d;--bs-btn-active-border-color: #6c757d;--bs-btn-active-shadow: inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color: #6c757d;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #6c757d;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-success{--bs-btn-color: #198754;--bs-btn-border-color: #198754;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #198754;--bs-btn-hover-border-color: #198754;--bs-btn-focus-shadow-rgb: 25,135,84;--bs-btn-active-color: #fff;--bs-btn-active-bg: #198754;--bs-btn-active-border-color: #198754;--bs-btn-active-shadow: inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color: #198754;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #198754;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-info{--bs-btn-color: #0dcaf0;--bs-btn-border-color: #0dcaf0;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #0dcaf0;--bs-btn-hover-border-color: #0dcaf0;--bs-btn-focus-shadow-rgb: 13,202,240;--bs-btn-active-color: #000;--bs-btn-active-bg: #0dcaf0;--bs-btn-active-border-color: #0dcaf0;--bs-btn-active-shadow: inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color: #0dcaf0;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #0dcaf0;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-warning{--bs-btn-color: #ffc107;--bs-btn-border-color: #ffc107;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ffc107;--bs-btn-hover-border-color: #ffc107;--bs-btn-focus-shadow-rgb: 255,193,7;--bs-btn-active-color: #000;--bs-btn-active-bg: #ffc107;--bs-btn-active-border-color: #ffc107;--bs-btn-active-shadow: inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color: #ffc107;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #ffc107;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-danger{--bs-btn-color: #dc3545;--bs-btn-border-color: #dc3545;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #dc3545;--bs-btn-hover-border-color: #dc3545;--bs-btn-focus-shadow-rgb: 220,53,69;--bs-btn-active-color: #fff;--bs-btn-active-bg: #dc3545;--bs-btn-active-border-color: #dc3545;--bs-btn-active-shadow: inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color: #dc3545;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #dc3545;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-light{--bs-btn-color: #f8f9fa;--bs-btn-border-color: #f8f9fa;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #f8f9fa;--bs-btn-hover-border-color: #f8f9fa;--bs-btn-focus-shadow-rgb: 248,249,250;--bs-btn-active-color: #000;--bs-btn-active-bg: #f8f9fa;--bs-btn-active-border-color: #f8f9fa;--bs-btn-active-shadow: inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color: #f8f9fa;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #f8f9fa;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-dark{--bs-btn-color: #212529;--bs-btn-border-color: #212529;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #212529;--bs-btn-hover-border-color: #212529;--bs-btn-focus-shadow-rgb: 33,37,41;--bs-btn-active-color: #fff;--bs-btn-active-bg: #212529;--bs-btn-active-border-color: #212529;--bs-btn-active-shadow: inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color: #212529;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #212529;--bs-btn-bg: transparent;--bs-gradient: none}.btn-link{--bs-btn-font-weight: 400;--bs-btn-color: var(--bs-link-color);--bs-btn-bg: transparent;--bs-btn-border-color: transparent;--bs-btn-hover-color: var(--bs-link-hover-color);--bs-btn-hover-border-color: transparent;--bs-btn-active-color: var(--bs-link-hover-color);--bs-btn-active-border-color: transparent;--bs-btn-disabled-color: #6c757d;--bs-btn-disabled-border-color: transparent;--bs-btn-box-shadow: none;--bs-btn-focus-shadow-rgb: 49,132,253;text-decoration:underline;-webkit-text-decoration:underline;-moz-text-decoration:underline;-ms-text-decoration:underline;-o-text-decoration:underline}.btn-link:focus-visible{color:var(--bs-btn-color)}.btn-link:hover{color:var(--bs-btn-hover-color)}.btn-lg,.btn-group-lg>.btn{--bs-btn-padding-y: .5rem;--bs-btn-padding-x: 1rem;--bs-btn-font-size:1.25rem;--bs-btn-border-radius: .5rem}.btn-sm,.btn-group-sm>.btn{--bs-btn-padding-y: .25rem;--bs-btn-padding-x: .5rem;--bs-btn-font-size:.875rem;--bs-btn-border-radius: .25rem}.fade{transition:opacity 0.15s linear}@media (prefers-reduced-motion: reduce){.fade{transition:none}}.fade:not(.show):not(.in){opacity:0}.collapse:not(.show):not(.in){display:none}.collapsing{height:0;overflow:hidden;transition:height 0.35s ease}@media (prefers-reduced-motion: reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width 0.35s ease}@media (prefers-reduced-motion: reduce){.collapsing.collapse-horizontal{transition:none}}.dropup,.dropend,.dropdown,.dropstart,.dropup-center,.dropdown-center{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{--bs-dropdown-zindex: 1000;--bs-dropdown-min-width: 10rem;--bs-dropdown-padding-x: 0;--bs-dropdown-padding-y: .5rem;--bs-dropdown-spacer: .125rem;--bs-dropdown-font-size:1rem;--bs-dropdown-color: #212529;--bs-dropdown-bg: #fff;--bs-dropdown-border-color: var(--bs-border-color-translucent);--bs-dropdown-border-radius: .375rem;--bs-dropdown-border-width: 1px;--bs-dropdown-inner-border-radius: calc(.375rem - 1px);--bs-dropdown-divider-bg: var(--bs-border-color-translucent);--bs-dropdown-divider-margin-y: .5rem;--bs-dropdown-box-shadow: 0 0.5rem 1rem rgba(0,0,0,0.15);--bs-dropdown-link-color: #212529;--bs-dropdown-link-hover-color: #1e2125;--bs-dropdown-link-hover-bg: #e9ecef;--bs-dropdown-link-active-color: #fff;--bs-dropdown-link-active-bg: #0d6efd;--bs-dropdown-link-disabled-color: #adb5bd;--bs-dropdown-item-padding-x: 1rem;--bs-dropdown-item-padding-y: .25rem;--bs-dropdown-header-color: #6c757d;--bs-dropdown-header-padding-x: 1rem;--bs-dropdown-header-padding-y: .5rem;position:absolute;z-index:var(--bs-dropdown-zindex);display:none;min-width:var(--bs-dropdown-min-width);padding:var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);margin:0;font-size:var(--bs-dropdown-font-size);color:var(--bs-dropdown-color);text-align:left;list-style:none;background-color:var(--bs-dropdown-bg);background-clip:padding-box;border:var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color);border-radius:var(--bs-dropdown-border-radius)}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:var(--bs-dropdown-spacer)}.dropdown-menu-start{--bs-position: start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position: end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media (min-width: 576px){.dropdown-menu-sm-start{--bs-position: start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position: end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 768px){.dropdown-menu-md-start{--bs-position: start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position: end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 992px){.dropdown-menu-lg-start{--bs-position: start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position: end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 1200px){.dropdown-menu-xl-start{--bs-position: start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position: end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 1400px){.dropdown-menu-xxl-start{--bs-position: start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position: end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--bs-dropdown-spacer)}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:var(--bs-dropdown-spacer)}.dropend .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropend .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-toggle::after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:var(--bs-dropdown-spacer)}.dropstart .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle::after{display:none}.dropstart .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropstart .dropdown-toggle:empty::after{margin-left:0}.dropstart .dropdown-toggle::before{vertical-align:0}.dropdown-divider,.dropdown-menu>li.divider{height:0;margin:var(--bs-dropdown-divider-margin-y) 0;overflow:hidden;border-top:1px solid var(--bs-dropdown-divider-bg);opacity:1}.dropdown-item,.dropdown-menu>li>a{display:block;width:100%;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);clear:both;font-weight:400;color:var(--bs-dropdown-link-color);text-align:inherit;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:hover,.dropdown-menu>li>a:hover,.dropdown-item:focus,.dropdown-menu>li>a:focus{color:var(--bs-dropdown-link-hover-color);background-color:var(--bs-dropdown-link-hover-bg)}.dropdown-item.active,.dropdown-menu>li>a.active,.dropdown-item:active,.dropdown-menu>li>a:active{color:var(--bs-dropdown-link-active-color);text-decoration:none;background-color:var(--bs-dropdown-link-active-bg)}.dropdown-item.disabled,.dropdown-menu>li>a.disabled,.dropdown-item:disabled,.dropdown-menu>li>a:disabled{color:var(--bs-dropdown-link-disabled-color);pointer-events:none;background-color:transparent}.dropdown-menu.show,.dropdown-menu.in{display:block}.dropdown-header{display:block;padding:var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);margin-bottom:0;font-size:.875rem;color:var(--bs-dropdown-header-color);white-space:nowrap}.dropdown-item-text{display:block;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);color:var(--bs-dropdown-link-color)}.dropdown-menu-dark{--bs-dropdown-color: #dee2e6;--bs-dropdown-bg: #343a40;--bs-dropdown-border-color: var(--bs-border-color-translucent);--bs-dropdown-box-shadow: ;--bs-dropdown-link-color: #dee2e6;--bs-dropdown-link-hover-color: #fff;--bs-dropdown-divider-bg: var(--bs-border-color-translucent);--bs-dropdown-link-hover-bg: rgba(255,255,255,0.15);--bs-dropdown-link-active-color: #fff;--bs-dropdown-link-active-bg: #0d6efd;--bs-dropdown-link-disabled-color: #adb5bd;--bs-dropdown-header-color: #adb5bd}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;flex:1 1 auto;-webkit-flex:1 1 auto}.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn:hover,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:1}.btn-toolbar{display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;justify-content:flex-start;-webkit-justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group{border-radius:.375rem}.btn-group>:not(.btn-check:first-child)+.btn,.btn-group>.btn-group:not(:first-child){margin-left:-1px}.btn-group>.btn:not(:last-child):not(.dropdown-toggle),.btn-group>.btn.dropdown-toggle-split:first-child,.btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:nth-child(n + 3),.btn-group>:not(.btn-check)+.btn,.btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after,.dropend .dropdown-toggle-split::after{margin-left:0}.dropstart .dropdown-toggle-split::before{margin-right:0}.btn-sm+.dropdown-toggle-split,.btn-group-sm>.btn+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-lg+.dropdown-toggle-split,.btn-group-lg>.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;-webkit-flex-direction:column;align-items:flex-start;-webkit-align-items:flex-start;justify-content:center;-webkit-justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),.btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn~.btn,.btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{--bs-nav-link-padding-x: 1rem;--bs-nav-link-padding-y: .5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color: var(--bs-link-color);--bs-nav-link-hover-color: var(--bs-link-hover-color);--bs-nav-link-disabled-color: #6c757d;display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link,.nav-tabs>li>a,.nav-pills>li>a,ul.nav.navbar-nav>li>a{display:block;padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.nav-link,.nav-tabs>li>a,.nav-pills>li>a,ul.nav.navbar-nav>li>a{transition:none}}.nav-link:hover,.nav-tabs>li>a:hover,.nav-pills>li>a:hover,ul.nav.navbar-nav>li>a:hover,.nav-link:focus,.nav-tabs>li>a:focus,.nav-pills>li>a:focus,ul.nav.navbar-nav>li>a:focus{color:var(--bs-nav-link-hover-color)}.nav-link.disabled,.nav-tabs>li>a.disabled,.nav-pills>li>a.disabled,ul.nav.navbar-nav>li>a.disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}.nav-tabs{--bs-nav-tabs-border-width: 1px;--bs-nav-tabs-border-color: #dee2e6;--bs-nav-tabs-border-radius: .375rem;--bs-nav-tabs-link-hover-border-color: #e9ecef #e9ecef #dee2e6;--bs-nav-tabs-link-active-color: #495057;--bs-nav-tabs-link-active-bg: #fff;--bs-nav-tabs-link-active-border-color: #dee2e6 #dee2e6 #fff;border-bottom:var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color)}.nav-tabs .nav-link,.nav-tabs>li>a,.nav-tabs .nav-pills>li>a,.nav-tabs ul.nav.navbar-nav>li>a{margin-bottom:calc(-1 * var(--bs-nav-tabs-border-width));background:none;border:var(--bs-nav-tabs-border-width) solid transparent;border-top-left-radius:var(--bs-nav-tabs-border-radius);border-top-right-radius:var(--bs-nav-tabs-border-radius)}.nav-tabs .nav-link:hover,.nav-tabs>li>a:hover,.nav-tabs .nav-pills>li>a:hover,.nav-tabs ul.nav.navbar-nav>li>a:hover,.nav-tabs .nav-link:focus,.nav-tabs>li>a:focus,.nav-tabs .nav-pills>li>a:focus,.nav-tabs ul.nav.navbar-nav>li>a:focus{isolation:isolate;border-color:var(--bs-nav-tabs-link-hover-border-color)}.nav-tabs .nav-link.disabled,.nav-tabs>li>a.disabled,.nav-tabs .nav-pills>li>a.disabled,.nav-tabs ul.nav.navbar-nav>li>a.disabled,.nav-tabs .nav-link:disabled,.nav-tabs>li>a:disabled,.nav-tabs .nav-pills>li>a:disabled,.nav-tabs ul.nav.navbar-nav>li>a:disabled{color:var(--bs-nav-link-disabled-color);background-color:transparent;border-color:transparent}.nav-tabs .nav-link.active,.nav-tabs>li>a.active,.nav-tabs .nav-pills>li>a.active,.nav-tabs ul.nav.navbar-nav>li>a.active,.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-item.in .nav-link,.nav-tabs .nav-item.show .nav-tabs>li>a,.nav-tabs .nav-item.in .nav-tabs>li>a,.nav-tabs .nav-item.show .nav-pills>li>a,.nav-tabs .nav-item.in .nav-pills>li>a,.nav-tabs>li.show .nav-link,.nav-tabs>li.in .nav-link,.nav-tabs>li.show .nav-tabs>li>a,.nav-tabs>li.in .nav-tabs>li>a,.nav-tabs>li.show .nav-pills>li>a,.nav-tabs>li.in .nav-pills>li>a,.nav-tabs .nav-pills>li.show .nav-link,.nav-tabs .nav-pills>li.in .nav-link,.nav-tabs .nav-pills>li.show .nav-tabs>li>a,.nav-tabs .nav-pills>li.in .nav-tabs>li>a,.nav-tabs .nav-pills>li.show .nav-pills>li>a,.nav-tabs .nav-pills>li.in .nav-pills>li>a,.nav-tabs .nav-item.show ul.nav.navbar-nav>li>a,.nav-tabs .nav-item.in ul.nav.navbar-nav>li>a,.nav-tabs>li.show ul.nav.navbar-nav>li>a,.nav-tabs>li.in ul.nav.navbar-nav>li>a,.nav-tabs .nav-pills>li.show ul.nav.navbar-nav>li>a,.nav-tabs .nav-pills>li.in ul.nav.navbar-nav>li>a,.nav-tabs ul.nav.navbar-nav>li.show:not(.dropdown) .nav-link,.nav-tabs ul.nav.navbar-nav>li.in:not(.dropdown) .nav-link,.nav-tabs ul.nav.navbar-nav>li.show:not(.dropdown) .nav-tabs>li>a,.nav-tabs ul.nav.navbar-nav>li.in:not(.dropdown) .nav-tabs>li>a,.nav-tabs ul.nav.navbar-nav>li.show:not(.dropdown) .nav-pills>li>a,.nav-tabs ul.nav.navbar-nav>li.in:not(.dropdown) .nav-pills>li>a,.nav-tabs ul.nav.navbar-nav>li.show:not(.dropdown) ul.nav.navbar-nav>li>a,.nav-tabs ul.nav.navbar-nav>li.in:not(.dropdown) ul.nav.navbar-nav>li>a{color:var(--bs-nav-tabs-link-active-color);background-color:var(--bs-nav-tabs-link-active-bg);border-color:var(--bs-nav-tabs-link-active-border-color)}.nav-tabs .dropdown-menu{margin-top:calc(-1 * var(--bs-nav-tabs-border-width));border-top-left-radius:0;border-top-right-radius:0}.nav-pills{--bs-nav-pills-border-radius: .375rem;--bs-nav-pills-link-active-color: #fff;--bs-nav-pills-link-active-bg: #0d6efd}.nav-pills .nav-link,.nav-pills .nav-tabs>li>a,.nav-pills>li>a,.nav-pills ul.nav.navbar-nav>li>a{background:none;border:0;border-radius:var(--bs-nav-pills-border-radius)}.nav-pills .nav-link:disabled,.nav-pills .nav-tabs>li>a:disabled,.nav-pills>li>a:disabled,.nav-pills ul.nav.navbar-nav>li>a:disabled{color:var(--bs-nav-link-disabled-color);background-color:transparent;border-color:transparent}.nav-pills .nav-link.active,.nav-pills .nav-tabs>li>a.active,.nav-pills>li>a.active,.nav-pills ul.nav.navbar-nav>li>a.active,.nav-pills .show>.nav-link,.nav-pills .in>.nav-link,.nav-pills .nav-tabs>li.show>a,.nav-pills .nav-tabs>li.in>a,.nav-pills>li.show>a,.nav-pills>li.in>a,.nav-pills ul.nav.navbar-nav>li.show>a,.nav-pills ul.nav.navbar-nav>li.in>a{color:var(--bs-nav-pills-link-active-color);background-color:var(--bs-nav-pills-link-active-bg)}.nav-fill>.nav-link,.nav-tabs>li.nav-fill>a,.nav-pills>li.nav-fill>a,ul.nav.navbar-nav>li.nav-fill>a,.nav-fill .nav-item,.nav-fill .nav-tabs>li,.nav-fill .nav-pills>li,.nav-fill ul.nav.navbar-nav>li:not(.dropdown){flex:1 1 auto;-webkit-flex:1 1 auto;text-align:center}.nav-justified>.nav-link,.nav-tabs>li.nav-justified>a,.nav-pills>li.nav-justified>a,ul.nav.navbar-nav>li.nav-justified>a,.nav-justified .nav-item,.nav-justified .nav-tabs>li,.nav-justified .nav-pills>li,.nav-justified ul.nav.navbar-nav>li:not(.dropdown){flex-basis:0;-webkit-flex-basis:0;flex-grow:1;-webkit-flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-fill .nav-tabs>li .nav-link,.nav-fill .nav-tabs>li>a,.nav-fill .nav-pills>li .nav-link,.nav-fill .nav-pills>li>a,.nav-fill .nav-item ul.nav.navbar-nav>li>a,.nav-fill .nav-tabs>li ul.nav.navbar-nav>li>a,.nav-fill .nav-pills>li ul.nav.navbar-nav>li>a,.nav-fill ul.nav.navbar-nav>li:not(.dropdown) .nav-link,.nav-fill ul.nav.navbar-nav>li:not(.dropdown) .nav-tabs>li>a,.nav-fill ul.nav.navbar-nav>li:not(.dropdown) .nav-pills>li>a,.nav-fill ul.nav.navbar-nav>li:not(.dropdown) ul.nav.navbar-nav>li>a,.nav-justified .nav-item .nav-link,.nav-justified .nav-tabs>li .nav-link,.nav-justified .nav-tabs>li>a,.nav-justified .nav-pills>li .nav-link,.nav-justified .nav-pills>li>a,.nav-justified .nav-item ul.nav.navbar-nav>li>a,.nav-justified .nav-tabs>li ul.nav.navbar-nav>li>a,.nav-justified .nav-pills>li ul.nav.navbar-nav>li>a,.nav-justified ul.nav.navbar-nav>li:not(.dropdown) .nav-link,.nav-justified ul.nav.navbar-nav>li:not(.dropdown) .nav-tabs>li>a,.nav-justified ul.nav.navbar-nav>li:not(.dropdown) .nav-pills>li>a,.nav-justified ul.nav.navbar-nav>li:not(.dropdown) ul.nav.navbar-nav>li>a{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{--bs-navbar-padding-x: 0;--bs-navbar-padding-y: .5rem;--bs-navbar-color: rgba(0,0,0,0.55);--bs-navbar-hover-color: rgba(0,0,0,0.7);--bs-navbar-disabled-color: rgba(0,0,0,0.3);--bs-navbar-active-color: rgba(0,0,0,0.9);--bs-navbar-brand-padding-y: .3125rem;--bs-navbar-brand-margin-end: 1rem;--bs-navbar-brand-font-size: 1.25rem;--bs-navbar-brand-color: rgba(0,0,0,0.9);--bs-navbar-brand-hover-color: rgba(0,0,0,0.9);--bs-navbar-nav-link-padding-x: .5rem;--bs-navbar-toggler-padding-y: .25rem;--bs-navbar-toggler-padding-x: .75rem;--bs-navbar-toggler-font-size: 1.25rem;--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280,0,0,0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");--bs-navbar-toggler-border-color: rgba(0,0,0,0.1);--bs-navbar-toggler-border-radius: .375rem;--bs-navbar-toggler-focus-width: .25rem;--bs-navbar-toggler-transition: box-shadow 0.15s ease-in-out;position:relative;display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between;padding:var(--bs-navbar-padding-y) var(--bs-navbar-padding-x)}.navbar>.container,.navbar>.container-fluid,.navbar>.container-sm,.navbar>.container-md,.navbar>.container-lg,.navbar>.container-xl,.navbar>.container-xxl{display:flex;display:-webkit-flex;flex-wrap:inherit;-webkit-flex-wrap:inherit;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between}.navbar-brand{padding-top:var(--bs-navbar-brand-padding-y);padding-bottom:var(--bs-navbar-brand-padding-y);margin-right:var(--bs-navbar-brand-margin-end);font-size:var(--bs-navbar-brand-font-size);color:var(--bs-navbar-brand-color);text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;white-space:nowrap}.navbar-brand:hover,.navbar-brand:focus{color:var(--bs-navbar-brand-hover-color)}.navbar-nav{--bs-nav-link-padding-x: 0;--bs-nav-link-padding-y: .5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color: var(--bs-navbar-color);--bs-nav-link-hover-color: var(--bs-navbar-hover-color);--bs-nav-link-disabled-color: var(--bs-navbar-disabled-color);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .show>.nav-link,.navbar-nav .in>.nav-link,.navbar-nav .nav-tabs>li.show>a,.navbar-nav .nav-tabs>li.in>a,.navbar-nav .nav-pills>li.show>a,.navbar-nav .nav-pills>li.in>a,ul.nav.navbar-nav>li.show>a,ul.nav.navbar-nav>li.in>a,.navbar-nav .active>.nav-link,.navbar-nav .nav-tabs>li.active>a,.navbar-nav .nav-pills>li.active>a,ul.nav.navbar-nav>li.active>a,.navbar-nav .nav-link.active,.navbar-nav .nav-tabs>li>a.active,.navbar-nav .nav-pills>li>a.active,ul.nav.navbar-nav>li>a.active{color:var(--bs-navbar-active-color)}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-navbar-color)}.navbar-text a,.navbar-text a:hover,.navbar-text a:focus{color:var(--bs-navbar-active-color)}.navbar-collapse{flex-basis:100%;-webkit-flex-basis:100%;flex-grow:1;-webkit-flex-grow:1;align-items:center;-webkit-align-items:center}.navbar-toggler,.navbar-toggle{padding:var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);font-size:var(--bs-navbar-toggler-font-size);line-height:1;color:var(--bs-navbar-color);background-color:transparent;border:var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);border-radius:var(--bs-navbar-toggler-border-radius);transition:var(--bs-navbar-toggler-transition)}@media (prefers-reduced-motion: reduce){.navbar-toggler,.navbar-toggle{transition:none}}.navbar-toggler:hover,.navbar-toggle:hover{text-decoration:none}.navbar-toggler:focus,.navbar-toggle:focus{text-decoration:none;outline:0;box-shadow:0 0 0 var(--bs-navbar-toggler-focus-width)}.navbar-toggler-icon,.navbar-toggle>.icon-bar:last-child{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-image:var(--bs-navbar-toggler-icon-bg);background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height, 75vh);overflow-y:auto}@media (min-width: 576px){.navbar-expand-sm,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl){flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-sm .navbar-nav,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl) .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl) .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link,.navbar-expand-sm .navbar-nav .nav-tabs>li>a,.navbar-expand-sm .navbar-nav .nav-pills>li>a,.navbar-expand-sm ul.nav.navbar-nav>li>a,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl) .navbar-nav .nav-link,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl) .navbar-nav .nav-tabs>li>a,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl) .navbar-nav .nav-pills>li>a,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl) ul.nav.navbar-nav>li>a{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-sm .navbar-nav-scroll,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl) .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl) .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-sm .navbar-toggler,.navbar-expand-sm .navbar-toggle,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl) .navbar-toggler,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl) .navbar-toggle{display:none}.navbar-expand-sm .offcanvas,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl) .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:transparent !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-sm .offcanvas .offcanvas-header,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl) .offcanvas .offcanvas-header{display:none}.navbar-expand-sm .offcanvas .offcanvas-body,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl) .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media (min-width: 768px){.navbar-expand-md{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link,.navbar-expand-md .navbar-nav .nav-tabs>li>a,.navbar-expand-md .navbar-nav .nav-pills>li>a,.navbar-expand-md ul.nav.navbar-nav>li>a{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-md .navbar-toggler,.navbar-expand-md .navbar-toggle{display:none}.navbar-expand-md .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:transparent !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-md .offcanvas .offcanvas-header{display:none}.navbar-expand-md .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media (min-width: 992px){.navbar-expand-lg{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link,.navbar-expand-lg .navbar-nav .nav-tabs>li>a,.navbar-expand-lg .navbar-nav .nav-pills>li>a,.navbar-expand-lg ul.nav.navbar-nav>li>a{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-lg .navbar-toggler,.navbar-expand-lg .navbar-toggle{display:none}.navbar-expand-lg .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:transparent !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-lg .offcanvas .offcanvas-header{display:none}.navbar-expand-lg .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media (min-width: 1200px){.navbar-expand-xl{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link,.navbar-expand-xl .navbar-nav .nav-tabs>li>a,.navbar-expand-xl .navbar-nav .nav-pills>li>a,.navbar-expand-xl ul.nav.navbar-nav>li>a{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-xl .navbar-toggler,.navbar-expand-xl .navbar-toggle{display:none}.navbar-expand-xl .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:transparent !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-xl .offcanvas .offcanvas-header{display:none}.navbar-expand-xl .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media (min-width: 1400px){.navbar-expand-xxl{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link,.navbar-expand-xxl .navbar-nav .nav-tabs>li>a,.navbar-expand-xxl .navbar-nav .nav-pills>li>a,.navbar-expand-xxl ul.nav.navbar-nav>li>a{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-xxl .navbar-toggler,.navbar-expand-xxl .navbar-toggle{display:none}.navbar-expand-xxl .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:transparent !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-xxl .offcanvas .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link,.navbar-expand .navbar-nav .nav-tabs>li>a,.navbar-expand .navbar-nav .nav-pills>li>a,.navbar-expand ul.nav.navbar-nav>li>a{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand .navbar-toggler,.navbar-expand .navbar-toggle{display:none}.navbar-expand .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:transparent !important;border:0 !important;transform:none !important;transition:none}.navbar-expand .offcanvas .offcanvas-header{display:none}.navbar-expand .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}.navbar-light,.navbar.navbar-default{background-color:#f8f9fa}.navbar-dark,.navbar.navbar-inverse{background-color:#212529;--bs-navbar-color: rgba(255,255,255,0.55);--bs-navbar-hover-color: rgba(255,255,255,0.75);--bs-navbar-disabled-color: rgba(255,255,255,0.25);--bs-navbar-active-color: #fff;--bs-navbar-brand-color: #fff;--bs-navbar-brand-hover-color: #fff;--bs-navbar-toggler-border-color: rgba(255,255,255,0.1);--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255,255,255,0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.card,.well{--bs-card-spacer-y: 1rem;--bs-card-spacer-x: 1rem;--bs-card-title-spacer-y: .5rem;--bs-card-border-width: 1px;--bs-card-border-color: var(--bs-border-color-translucent);--bs-card-border-radius: .375rem;--bs-card-box-shadow: ;--bs-card-inner-border-radius: calc(.375rem - 1px);--bs-card-cap-padding-y: .5rem;--bs-card-cap-padding-x: 1rem;--bs-card-cap-bg: rgba(0,0,0,0.03);--bs-card-cap-color: ;--bs-card-height: ;--bs-card-color: ;--bs-card-bg: #fff;--bs-card-img-overlay-padding: 1rem;--bs-card-group-margin: .75rem;position:relative;display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;min-width:0;height:var(--bs-card-height);word-wrap:break-word;background-color:var(--bs-card-bg);background-clip:border-box;border:var(--bs-card-border-width) solid var(--bs-card-border-color);border-radius:var(--bs-card-border-radius)}.card>hr,.well>hr{margin-right:0;margin-left:0}.card>.list-group,.well>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child,.well>.list-group:first-child{border-top-width:0;border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card>.list-group:last-child,.well>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card>.card-header+.list-group,.well>.card-header+.list-group,.card>.list-group+.card-footer,.well>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;-webkit-flex:1 1 auto;padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x);color:var(--bs-card-color)}.card-title{margin-bottom:var(--bs-card-title-spacer-y)}.card-subtitle{margin-top:calc(-.5 * var(--bs-card-title-spacer-y));margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:var(--bs-card-spacer-x)}.card-header{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);margin-bottom:0;color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-bottom:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-header:first-child{border-radius:var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0}.card-footer{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-top:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-footer:last-child{border-radius:0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius)}.card-header-tabs{margin-right:calc(-.5 * var(--bs-card-cap-padding-x));margin-bottom:calc(-1 * var(--bs-card-cap-padding-y));margin-left:calc(-.5 * var(--bs-card-cap-padding-x));border-bottom:0}.card-header-tabs .nav-link.active,.card-header-tabs .nav-tabs>li>a.active,.card-header-tabs .nav-pills>li>a.active,.card-header-tabs ul.nav.navbar-nav>li>a.active{background-color:var(--bs-card-bg);border-bottom-color:var(--bs-card-bg)}.card-header-pills{margin-right:calc(-.5 * var(--bs-card-cap-padding-x));margin-left:calc(-.5 * var(--bs-card-cap-padding-x))}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:var(--bs-card-img-overlay-padding);border-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-top,.card-img-bottom{width:100%}.card-img,.card-img-top{border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom{border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card-group>.card,.card-group>.well{margin-bottom:var(--bs-card-group-margin)}@media (min-width: 576px){.card-group{display:flex;display:-webkit-flex;flex-flow:row wrap;-webkit-flex-flow:row wrap}.card-group>.card,.card-group>.well{flex:1 0 0%;-webkit-flex:1 0 0%;margin-bottom:0}.card-group>.card+.card,.card-group>.well+.card,.card-group>.card+.well,.card-group>.well+.well{margin-left:0;border-left:0}.card-group>.card:not(:last-child),.card-group>.well:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-img-top,.card-group>.well:not(:last-child) .card-img-top,.card-group>.card:not(:last-child) .card-header,.card-group>.well:not(:last-child) .card-header{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-img-bottom,.card-group>.well:not(:last-child) .card-img-bottom,.card-group>.card:not(:last-child) .card-footer,.card-group>.well:not(:last-child) .card-footer{border-bottom-right-radius:0}.card-group>.card:not(:first-child),.card-group>.well:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-img-top,.card-group>.well:not(:first-child) .card-img-top,.card-group>.card:not(:first-child) .card-header,.card-group>.well:not(:first-child) .card-header{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-img-bottom,.card-group>.well:not(:first-child) .card-img-bottom,.card-group>.card:not(:first-child) .card-footer,.card-group>.well:not(:first-child) .card-footer{border-bottom-left-radius:0}}.accordion{--bs-accordion-color: #212529;--bs-accordion-bg: #fff;--bs-accordion-transition: color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out,border-radius 0.15s ease;--bs-accordion-border-color: var(--bs-border-color);--bs-accordion-border-width: 1px;--bs-accordion-border-radius: .375rem;--bs-accordion-inner-border-radius: calc(.375rem - 1px);--bs-accordion-btn-padding-x: 1.25rem;--bs-accordion-btn-padding-y: 1rem;--bs-accordion-btn-color: #212529;--bs-accordion-btn-bg: var(--bs-accordion-bg);--bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-icon-width: 1.25rem;--bs-accordion-btn-icon-transform: rotate(-180deg);--bs-accordion-btn-icon-transition: transform 0.2s ease-in-out;--bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230c63e4'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-focus-border-color: #86b7fe;--bs-accordion-btn-focus-box-shadow: 0 0 0 .25rem rgba(13,110,253,0.25);--bs-accordion-body-padding-x: 1.25rem;--bs-accordion-body-padding-y: 1rem;--bs-accordion-active-color: #0c63e4;--bs-accordion-active-bg: #e7f1ff}.accordion-button{position:relative;display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;width:100%;padding:var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x);font-size:1rem;color:var(--bs-accordion-btn-color);text-align:left;background-color:var(--bs-accordion-btn-bg);border:0;border-radius:0;overflow-anchor:none;transition:var(--bs-accordion-transition)}@media (prefers-reduced-motion: reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:var(--bs-accordion-active-color);background-color:var(--bs-accordion-active-bg);box-shadow:inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color)}.accordion-button:not(.collapsed)::after{background-image:var(--bs-accordion-btn-active-icon);transform:var(--bs-accordion-btn-icon-transform)}.accordion-button::after{flex-shrink:0;-webkit-flex-shrink:0;width:var(--bs-accordion-btn-icon-width);height:var(--bs-accordion-btn-icon-width);margin-left:auto;content:"";background-image:var(--bs-accordion-btn-icon);background-repeat:no-repeat;background-size:var(--bs-accordion-btn-icon-width);transition:var(--bs-accordion-btn-icon-transition)}@media (prefers-reduced-motion: reduce){.accordion-button::after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:var(--bs-accordion-btn-focus-border-color);outline:0;box-shadow:var(--bs-accordion-btn-focus-box-shadow)}.accordion-header{margin-bottom:0}.accordion-item{color:var(--bs-accordion-color);background-color:var(--bs-accordion-bg);border:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}.accordion-item:first-of-type{border-top-left-radius:var(--bs-accordion-border-radius);border-top-right-radius:var(--bs-accordion-border-radius)}.accordion-item:first-of-type .accordion-button{border-top-left-radius:var(--bs-accordion-inner-border-radius);border-top-right-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:var(--bs-accordion-inner-border-radius);border-bottom-left-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-body{padding:var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x)}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button,.accordion-flush .accordion-item .accordion-button.collapsed{border-radius:0}.breadcrumb{--bs-breadcrumb-padding-x: 0;--bs-breadcrumb-padding-y: 0;--bs-breadcrumb-margin-bottom: 1rem;--bs-breadcrumb-bg: ;--bs-breadcrumb-border-radius: ;--bs-breadcrumb-divider-color: #6c757d;--bs-breadcrumb-item-padding-x: .5rem;--bs-breadcrumb-item-active-color: #6c757d;display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;padding:var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);margin-bottom:var(--bs-breadcrumb-margin-bottom);font-size:var(--bs-breadcrumb-font-size);list-style:none;background-color:var(--bs-breadcrumb-bg);border-radius:var(--bs-breadcrumb-border-radius)}.breadcrumb-item+.breadcrumb-item{padding-left:var(--bs-breadcrumb-item-padding-x)}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:var(--bs-breadcrumb-item-padding-x);color:var(--bs-breadcrumb-divider-color);content:var(--bs-breadcrumb-divider, "/") /* rtl: var(--bs-breadcrumb-divider, "/") */}.breadcrumb-item.active{color:var(--bs-breadcrumb-item-active-color)}.pagination{--bs-pagination-padding-x: .75rem;--bs-pagination-padding-y: .375rem;--bs-pagination-font-size:1rem;--bs-pagination-color: var(--bs-link-color);--bs-pagination-bg: #fff;--bs-pagination-border-width: 1px;--bs-pagination-border-color: #dee2e6;--bs-pagination-border-radius: .375rem;--bs-pagination-hover-color: var(--bs-link-hover-color);--bs-pagination-hover-bg: #e9ecef;--bs-pagination-hover-border-color: #dee2e6;--bs-pagination-focus-color: var(--bs-link-hover-color);--bs-pagination-focus-bg: #e9ecef;--bs-pagination-focus-box-shadow: 0 0 0 .25rem rgba(13,110,253,0.25);--bs-pagination-active-color: #fff;--bs-pagination-active-bg: #0d6efd;--bs-pagination-active-border-color: #0d6efd;--bs-pagination-disabled-color: #6c757d;--bs-pagination-disabled-bg: #fff;--bs-pagination-disabled-border-color: #dee2e6;display:flex;display:-webkit-flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;padding:var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);font-size:var(--bs-pagination-font-size);color:var(--bs-pagination-color);text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;background-color:var(--bs-pagination-bg);border:var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:var(--bs-pagination-hover-color);background-color:var(--bs-pagination-hover-bg);border-color:var(--bs-pagination-hover-border-color)}.page-link:focus{z-index:3;color:var(--bs-pagination-focus-color);background-color:var(--bs-pagination-focus-bg);outline:0;box-shadow:var(--bs-pagination-focus-box-shadow)}.page-link.active,.active>.page-link{z-index:3;color:var(--bs-pagination-active-color);background-color:var(--bs-pagination-active-bg);border-color:var(--bs-pagination-active-border-color)}.page-link.disabled,.disabled>.page-link{color:var(--bs-pagination-disabled-color);pointer-events:none;background-color:var(--bs-pagination-disabled-bg);border-color:var(--bs-pagination-disabled-border-color)}.page-item:not(:first-child) .page-link{margin-left:-1px}.page-item:first-child .page-link{border-top-left-radius:var(--bs-pagination-border-radius);border-bottom-left-radius:var(--bs-pagination-border-radius)}.page-item:last-child .page-link{border-top-right-radius:var(--bs-pagination-border-radius);border-bottom-right-radius:var(--bs-pagination-border-radius)}.pagination-lg{--bs-pagination-padding-x: 1.5rem;--bs-pagination-padding-y: .75rem;--bs-pagination-font-size:1.25rem;--bs-pagination-border-radius: .5rem}.pagination-sm{--bs-pagination-padding-x: .5rem;--bs-pagination-padding-y: .25rem;--bs-pagination-font-size:.875rem;--bs-pagination-border-radius: .25rem}.badge{--bs-badge-padding-x: .65em;--bs-badge-padding-y: .35em;--bs-badge-font-size:.75em;--bs-badge-font-weight: 700;--bs-badge-color: #fff;--bs-badge-border-radius: .375rem;display:inline-block;padding:var(--bs-badge-padding-y) var(--bs-badge-padding-x);font-size:var(--bs-badge-font-size);font-weight:var(--bs-badge-font-weight);line-height:1;color:var(--bs-badge-color);text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:var(--bs-badge-border-radius)}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{--bs-alert-bg: transparent;--bs-alert-padding-x: 1rem;--bs-alert-padding-y: 1rem;--bs-alert-margin-bottom: 1rem;--bs-alert-color: inherit;--bs-alert-border-color: transparent;--bs-alert-border: 1px solid var(--bs-alert-border-color);--bs-alert-border-radius: .375rem;position:relative;padding:var(--bs-alert-padding-y) var(--bs-alert-padding-x);margin-bottom:var(--bs-alert-margin-bottom);color:var(--bs-alert-color);background-color:var(--bs-alert-bg);border:var(--bs-alert-border);border-radius:var(--bs-alert-border-radius)}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-default{--bs-alert-color: #595a5c;--bs-alert-bg: #f8f9fa;--bs-alert-border-color: #f5f6f8}.alert-default .alert-link{color:#47484a}.alert-primary{--bs-alert-color: #084298;--bs-alert-bg: #cfe2ff;--bs-alert-border-color: #b6d4fe}.alert-primary .alert-link{color:#06357a}.alert-secondary{--bs-alert-color: #41464b;--bs-alert-bg: #e2e3e5;--bs-alert-border-color: #d3d6d8}.alert-secondary .alert-link{color:#34383c}.alert-success{--bs-alert-color: #0f5132;--bs-alert-bg: #d1e7dd;--bs-alert-border-color: #badbcc}.alert-success .alert-link{color:#0c4128}.alert-info{--bs-alert-color: #055160;--bs-alert-bg: #cff4fc;--bs-alert-border-color: #b6effb}.alert-info .alert-link{color:#04414d}.alert-warning{--bs-alert-color: #664d03;--bs-alert-bg: #fff3cd;--bs-alert-border-color: #ffecb5}.alert-warning .alert-link{color:#523e02}.alert-danger{--bs-alert-color: #842029;--bs-alert-bg: #f8d7da;--bs-alert-border-color: #f5c2c7}.alert-danger .alert-link{color:#6a1a21}.alert-light{--bs-alert-color: #636464;--bs-alert-bg: #fefefe;--bs-alert-border-color: #fdfdfe}.alert-light .alert-link{color:#4f5050}.alert-dark{--bs-alert-color: #141619;--bs-alert-bg: #d3d3d4;--bs-alert-border-color: #bcbebf}.alert-dark .alert-link{color:#101214}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress{--bs-progress-height: 1rem;--bs-progress-font-size:.75rem;--bs-progress-bg: #e9ecef;--bs-progress-border-radius: .375rem;--bs-progress-box-shadow: inset 0 1px 2px rgba(0,0,0,0.075);--bs-progress-bar-color: #fff;--bs-progress-bar-bg: #0d6efd;--bs-progress-bar-transition: width 0.6s ease;display:flex;display:-webkit-flex;height:var(--bs-progress-height);overflow:hidden;font-size:var(--bs-progress-font-size);background-color:var(--bs-progress-bg);border-radius:var(--bs-progress-border-radius)}.progress-bar{display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;justify-content:center;-webkit-justify-content:center;overflow:hidden;color:var(--bs-progress-bar-color);text-align:center;white-space:nowrap;background-color:var(--bs-progress-bar-bg);transition:var(--bs-progress-bar-transition)}@media (prefers-reduced-motion: reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-size:var(--bs-progress-height) var(--bs-progress-height)}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion: reduce){.progress-bar-animated{animation:none}}.list-group{--bs-list-group-color: #212529;--bs-list-group-bg: #fff;--bs-list-group-border-color: rgba(0,0,0,0.125);--bs-list-group-border-width: 1px;--bs-list-group-border-radius: .375rem;--bs-list-group-item-padding-x: 1rem;--bs-list-group-item-padding-y: .5rem;--bs-list-group-action-color: #495057;--bs-list-group-action-hover-color: #495057;--bs-list-group-action-hover-bg: #f8f9fa;--bs-list-group-action-active-color: #212529;--bs-list-group-action-active-bg: #e9ecef;--bs-list-group-disabled-color: #6c757d;--bs-list-group-disabled-bg: #fff;--bs-list-group-active-color: #fff;--bs-list-group-active-bg: #0d6efd;--bs-list-group-active-border-color: #0d6efd;display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;padding-left:0;margin-bottom:0;border-radius:var(--bs-list-group-border-radius)}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>.list-group-item::before{content:counters(section, ".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:var(--bs-list-group-action-color);text-align:inherit}.list-group-item-action:hover,.list-group-item-action:focus{z-index:1;color:var(--bs-list-group-action-hover-color);text-decoration:none;background-color:var(--bs-list-group-action-hover-bg)}.list-group-item-action:active{color:var(--bs-list-group-action-active-color);background-color:var(--bs-list-group-action-active-bg)}.list-group-item{position:relative;display:block;padding:var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);color:var(--bs-list-group-color);text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;background-color:var(--bs-list-group-bg);border:var(--bs-list-group-border-width) solid var(--bs-list-group-border-color)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:var(--bs-list-group-disabled-color);pointer-events:none;background-color:var(--bs-list-group-disabled-bg)}.list-group-item.active{z-index:2;color:var(--bs-list-group-active-color);background-color:var(--bs-list-group-active-bg);border-color:var(--bs-list-group-active-border-color)}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:calc(-1 * var(--bs-list-group-border-width));border-top-width:var(--bs-list-group-border-width)}.list-group-horizontal{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}@media (min-width: 576px){.list-group-horizontal-sm{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width: 768px){.list-group-horizontal-md{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width: 992px){.list-group-horizontal-lg{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width: 1200px){.list-group-horizontal-xl{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width: 1400px){.list-group-horizontal-xxl{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 var(--bs-list-group-border-width)}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-default{color:#595a5c;background-color:#f8f9fa}.list-group-item-default.list-group-item-action:hover,.list-group-item-default.list-group-item-action:focus{color:#595a5c;background-color:#dfe0e1}.list-group-item-default.list-group-item-action.active{color:#fff;background-color:#595a5c;border-color:#595a5c}.list-group-item-primary{color:#084298;background-color:#cfe2ff}.list-group-item-primary.list-group-item-action:hover,.list-group-item-primary.list-group-item-action:focus{color:#084298;background-color:#bacbe6}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#084298;border-color:#084298}.list-group-item-secondary{color:#41464b;background-color:#e2e3e5}.list-group-item-secondary.list-group-item-action:hover,.list-group-item-secondary.list-group-item-action:focus{color:#41464b;background-color:#cbccce}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#41464b;border-color:#41464b}.list-group-item-success{color:#0f5132;background-color:#d1e7dd}.list-group-item-success.list-group-item-action:hover,.list-group-item-success.list-group-item-action:focus{color:#0f5132;background-color:#bcd0c7}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#0f5132;border-color:#0f5132}.list-group-item-info{color:#055160;background-color:#cff4fc}.list-group-item-info.list-group-item-action:hover,.list-group-item-info.list-group-item-action:focus{color:#055160;background-color:#badce3}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#055160;border-color:#055160}.list-group-item-warning{color:#664d03;background-color:#fff3cd}.list-group-item-warning.list-group-item-action:hover,.list-group-item-warning.list-group-item-action:focus{color:#664d03;background-color:#e6dbb9}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#664d03;border-color:#664d03}.list-group-item-danger{color:#842029;background-color:#f8d7da}.list-group-item-danger.list-group-item-action:hover,.list-group-item-danger.list-group-item-action:focus{color:#842029;background-color:#dfc2c4}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#842029;border-color:#842029}.list-group-item-light{color:#636464;background-color:#fefefe}.list-group-item-light.list-group-item-action:hover,.list-group-item-light.list-group-item-action:focus{color:#636464;background-color:#e5e5e5}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#636464;border-color:#636464}.list-group-item-dark{color:#141619;background-color:#d3d3d4}.list-group-item-dark.list-group-item-action:hover,.list-group-item-dark.list-group-item-action:focus{color:#141619;background-color:#bebebf}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#141619;border-color:#141619}.btn-close{box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:#000;background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat;border:0;border-radius:.375rem;opacity:.5}.btn-close:hover{color:#000;text-decoration:none;opacity:.75}.btn-close:focus{outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,0.25);opacity:1}.btn-close:disabled,.btn-close.disabled{pointer-events:none;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;opacity:.25}.btn-close-white{filter:invert(1) grayscale(100%) brightness(200%)}.toast{--bs-toast-zindex: 1090;--bs-toast-padding-x: .75rem;--bs-toast-padding-y: .5rem;--bs-toast-spacing: 1.5rem;--bs-toast-max-width: 350px;--bs-toast-font-size:.875rem;--bs-toast-color: ;--bs-toast-bg: rgba(255,255,255,0.85);--bs-toast-border-width: 1px;--bs-toast-border-color: var(--bs-border-color-translucent);--bs-toast-border-radius: .375rem;--bs-toast-box-shadow: 0 0.5rem 1rem rgba(0,0,0,0.15);--bs-toast-header-color: #6c757d;--bs-toast-header-bg: rgba(255,255,255,0.85);--bs-toast-header-border-color: rgba(0,0,0,0.05);width:var(--bs-toast-max-width);max-width:100%;font-size:var(--bs-toast-font-size);color:var(--bs-toast-color);pointer-events:auto;background-color:var(--bs-toast-bg);background-clip:padding-box;border:var(--bs-toast-border-width) solid var(--bs-toast-border-color);box-shadow:var(--bs-toast-box-shadow);border-radius:var(--bs-toast-border-radius)}.toast.showing{opacity:0}.toast:not(.show):not(.in){display:none}.toast-container{--bs-toast-zindex: 1090;position:absolute;z-index:var(--bs-toast-zindex);width:max-content;width:-webkit-max-content;width:-moz-max-content;width:-ms-max-content;width:-o-max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:var(--bs-toast-spacing)}.toast-header{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;padding:var(--bs-toast-padding-y) var(--bs-toast-padding-x);color:var(--bs-toast-header-color);background-color:var(--bs-toast-header-bg);background-clip:padding-box;border-bottom:var(--bs-toast-border-width) solid var(--bs-toast-header-border-color);border-top-left-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));border-top-right-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width))}.toast-header .btn-close{margin-right:calc(-.5 * var(--bs-toast-padding-x));margin-left:var(--bs-toast-padding-x)}.toast-body{padding:var(--bs-toast-padding-x);word-wrap:break-word}.modal{--bs-modal-zindex: 1055;--bs-modal-width: 500px;--bs-modal-padding: 1rem;--bs-modal-margin: .5rem;--bs-modal-color: ;--bs-modal-bg: #fff;--bs-modal-border-color: var(--bs-border-color-translucent);--bs-modal-border-width: 1px;--bs-modal-border-radius: .5rem;--bs-modal-box-shadow: 0 0.125rem 0.25rem rgba(0,0,0,0.075);--bs-modal-inner-border-radius: calc(.5rem - 1px);--bs-modal-header-padding-x: 1rem;--bs-modal-header-padding-y: 1rem;--bs-modal-header-padding: 1rem 1rem;--bs-modal-header-border-color: var(--bs-border-color);--bs-modal-header-border-width: 1px;--bs-modal-title-line-height: 1.5;--bs-modal-footer-gap: .5rem;--bs-modal-footer-bg: ;--bs-modal-footer-border-color: var(--bs-border-color);--bs-modal-footer-border-width: 1px;position:fixed;top:0;left:0;z-index:var(--bs-modal-zindex);display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:var(--bs-modal-margin);pointer-events:none}.modal.fade .modal-dialog{transition:transform 0.3s ease-out;transform:translate(0, -50px)}@media (prefers-reduced-motion: reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog,.modal.in .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - var(--bs-modal-margin) * 2)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;min-height:calc(100% - var(--bs-modal-margin) * 2)}.modal-content{position:relative;display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;width:100%;color:var(--bs-modal-color);pointer-events:auto;background-color:var(--bs-modal-bg);background-clip:padding-box;border:var(--bs-modal-border-width) solid var(--bs-modal-border-color);border-radius:var(--bs-modal-border-radius);outline:0}.modal-backdrop{--bs-backdrop-zindex: 1050;--bs-backdrop-bg: #000;--bs-backdrop-opacity: .5;position:fixed;top:0;left:0;z-index:var(--bs-backdrop-zindex);width:100vw;height:100vh;background-color:var(--bs-backdrop-bg)}.modal-backdrop.fade{opacity:0}.modal-backdrop.show,.modal-backdrop.in{opacity:var(--bs-backdrop-opacity)}.modal-header{display:flex;display:-webkit-flex;flex-shrink:0;-webkit-flex-shrink:0;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between;padding:var(--bs-modal-header-padding);border-bottom:var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color);border-top-left-radius:var(--bs-modal-inner-border-radius);border-top-right-radius:var(--bs-modal-inner-border-radius)}.modal-header .btn-close{padding:calc(var(--bs-modal-header-padding-y) * .5) calc(var(--bs-modal-header-padding-x) * .5);margin:calc(-.5 * var(--bs-modal-header-padding-y)) calc(-.5 * var(--bs-modal-header-padding-x)) calc(-.5 * var(--bs-modal-header-padding-y)) auto}.modal-title{margin-bottom:0;line-height:var(--bs-modal-title-line-height)}.modal-body{position:relative;flex:1 1 auto;-webkit-flex:1 1 auto;padding:var(--bs-modal-padding)}.modal-footer{display:flex;display:-webkit-flex;flex-shrink:0;-webkit-flex-shrink:0;flex-wrap:wrap;-webkit-flex-wrap:wrap;align-items:center;-webkit-align-items:center;justify-content:flex-end;-webkit-justify-content:flex-end;padding:calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap) * .5);background-color:var(--bs-modal-footer-bg);border-top:var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color);border-bottom-right-radius:var(--bs-modal-inner-border-radius);border-bottom-left-radius:var(--bs-modal-inner-border-radius)}.modal-footer>*{margin:calc(var(--bs-modal-footer-gap) * .5)}@media (min-width: 576px){.modal{--bs-modal-margin: 1.75rem;--bs-modal-box-shadow: 0 0.5rem 1rem rgba(0,0,0,0.15)}.modal-dialog{max-width:var(--bs-modal-width);margin-right:auto;margin-left:auto}.modal-sm{--bs-modal-width: 300px}}@media (min-width: 992px){.modal-lg,.modal-xl{--bs-modal-width: 800px}}@media (min-width: 1200px){.modal-xl{--bs-modal-width: 1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-header,.modal-fullscreen .modal-footer{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}@media (max-width: 575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-header,.modal-fullscreen-sm-down .modal-footer{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}}@media (max-width: 767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-header,.modal-fullscreen-md-down .modal-footer{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}}@media (max-width: 991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-header,.modal-fullscreen-lg-down .modal-footer{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}}@media (max-width: 1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-header,.modal-fullscreen-xl-down .modal-footer{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}}@media (max-width: 1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-header,.modal-fullscreen-xxl-down .modal-footer{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}}.tooltip{--bs-tooltip-zindex: 1080;--bs-tooltip-max-width: 200px;--bs-tooltip-padding-x: .5rem;--bs-tooltip-padding-y: .25rem;--bs-tooltip-margin: ;--bs-tooltip-font-size:.875rem;--bs-tooltip-color: #fff;--bs-tooltip-bg: #000;--bs-tooltip-border-radius: .375rem;--bs-tooltip-opacity: .9;--bs-tooltip-arrow-width: .8rem;--bs-tooltip-arrow-height: .4rem;z-index:var(--bs-tooltip-zindex);display:block;padding:var(--bs-tooltip-arrow-height);margin:var(--bs-tooltip-margin);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-tooltip-font-size);word-wrap:break-word;opacity:0}.tooltip.show,.tooltip.in{opacity:var(--bs-tooltip-opacity)}.tooltip .tooltip-arrow{display:block;width:var(--bs-tooltip-arrow-width);height:var(--bs-tooltip-arrow-height)}.tooltip .tooltip-arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-top .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^="top"] .tooltip-arrow{bottom:0}.bs-tooltip-top .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^="top"] .tooltip-arrow::before{top:-1px;border-width:var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-top-color:var(--bs-tooltip-bg)}.bs-tooltip-end .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^="right"] .tooltip-arrow{left:0;width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-end .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^="right"] .tooltip-arrow::before{right:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-right-color:var(--bs-tooltip-bg)}.bs-tooltip-bottom .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^="bottom"] .tooltip-arrow{top:0}.bs-tooltip-bottom .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^="bottom"] .tooltip-arrow::before{bottom:-1px;border-width:0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-bottom-color:var(--bs-tooltip-bg)}.bs-tooltip-start .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^="left"] .tooltip-arrow{right:0;width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-start .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^="left"] .tooltip-arrow::before{left:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) 0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-left-color:var(--bs-tooltip-bg)}.tooltip-inner{max-width:var(--bs-tooltip-max-width);padding:var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);color:var(--bs-tooltip-color);text-align:center;background-color:var(--bs-tooltip-bg);border-radius:var(--bs-tooltip-border-radius)}.popover{--bs-popover-zindex: 1070;--bs-popover-max-width: 276px;--bs-popover-font-size:.875rem;--bs-popover-bg: #fff;--bs-popover-border-width: 1px;--bs-popover-border-color: var(--bs-border-color-translucent);--bs-popover-border-radius: .5rem;--bs-popover-inner-border-radius: calc(.5rem - 1px);--bs-popover-box-shadow: 0 0.5rem 1rem rgba(0,0,0,0.15);--bs-popover-header-padding-x: 1rem;--bs-popover-header-padding-y: .5rem;--bs-popover-header-font-size:1rem;--bs-popover-header-color: ;--bs-popover-header-bg: #f0f0f0;--bs-popover-body-padding-x: 1rem;--bs-popover-body-padding-y: 1rem;--bs-popover-body-color: #212529;--bs-popover-arrow-width: 1rem;--bs-popover-arrow-height: .5rem;--bs-popover-arrow-border: var(--bs-popover-border-color);z-index:var(--bs-popover-zindex);display:block;max-width:var(--bs-popover-max-width);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-popover-font-size);word-wrap:break-word;background-color:var(--bs-popover-bg);background-clip:padding-box;border:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-radius:var(--bs-popover-border-radius)}.popover .popover-arrow{display:block;width:var(--bs-popover-arrow-width);height:var(--bs-popover-arrow-height)}.popover .popover-arrow::before,.popover .popover-arrow::after{position:absolute;display:block;content:"";border-color:transparent;border-style:solid;border-width:0}.bs-popover-top>.popover-arrow,.bs-popover-auto[data-popper-placement^="top"]>.popover-arrow{bottom:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-top>.popover-arrow::before,.bs-popover-auto[data-popper-placement^="top"]>.popover-arrow::before,.bs-popover-top>.popover-arrow::after,.bs-popover-auto[data-popper-placement^="top"]>.popover-arrow::after{border-width:var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0}.bs-popover-top>.popover-arrow::before,.bs-popover-auto[data-popper-placement^="top"]>.popover-arrow::before{bottom:0;border-top-color:var(--bs-popover-arrow-border)}.bs-popover-top>.popover-arrow::after,.bs-popover-auto[data-popper-placement^="top"]>.popover-arrow::after{bottom:var(--bs-popover-border-width);border-top-color:var(--bs-popover-bg)}.bs-popover-end>.popover-arrow,.bs-popover-auto[data-popper-placement^="right"]>.popover-arrow{left:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-end>.popover-arrow::before,.bs-popover-auto[data-popper-placement^="right"]>.popover-arrow::before,.bs-popover-end>.popover-arrow::after,.bs-popover-auto[data-popper-placement^="right"]>.popover-arrow::after{border-width:calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0}.bs-popover-end>.popover-arrow::before,.bs-popover-auto[data-popper-placement^="right"]>.popover-arrow::before{left:0;border-right-color:var(--bs-popover-arrow-border)}.bs-popover-end>.popover-arrow::after,.bs-popover-auto[data-popper-placement^="right"]>.popover-arrow::after{left:var(--bs-popover-border-width);border-right-color:var(--bs-popover-bg)}.bs-popover-bottom>.popover-arrow,.bs-popover-auto[data-popper-placement^="bottom"]>.popover-arrow{top:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-bottom>.popover-arrow::before,.bs-popover-auto[data-popper-placement^="bottom"]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::after,.bs-popover-auto[data-popper-placement^="bottom"]>.popover-arrow::after{border-width:0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height)}.bs-popover-bottom>.popover-arrow::before,.bs-popover-auto[data-popper-placement^="bottom"]>.popover-arrow::before{top:0;border-bottom-color:var(--bs-popover-arrow-border)}.bs-popover-bottom>.popover-arrow::after,.bs-popover-auto[data-popper-placement^="bottom"]>.popover-arrow::after{top:var(--bs-popover-border-width);border-bottom-color:var(--bs-popover-bg)}.bs-popover-bottom .popover-header::before,.bs-popover-auto[data-popper-placement^="bottom"] .popover-header::before{position:absolute;top:0;left:50%;display:block;width:var(--bs-popover-arrow-width);margin-left:calc(-.5 * var(--bs-popover-arrow-width));content:"";border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-header-bg)}.bs-popover-start>.popover-arrow,.bs-popover-auto[data-popper-placement^="left"]>.popover-arrow{right:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-start>.popover-arrow::before,.bs-popover-auto[data-popper-placement^="left"]>.popover-arrow::before,.bs-popover-start>.popover-arrow::after,.bs-popover-auto[data-popper-placement^="left"]>.popover-arrow::after{border-width:calc(var(--bs-popover-arrow-width) * .5) 0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height)}.bs-popover-start>.popover-arrow::before,.bs-popover-auto[data-popper-placement^="left"]>.popover-arrow::before{right:0;border-left-color:var(--bs-popover-arrow-border)}.bs-popover-start>.popover-arrow::after,.bs-popover-auto[data-popper-placement^="left"]>.popover-arrow::after{right:var(--bs-popover-border-width);border-left-color:var(--bs-popover-bg)}.popover-header{padding:var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x);margin-bottom:0;font-size:var(--bs-popover-header-font-size);color:var(--bs-popover-header-color);background-color:var(--bs-popover-header-bg);border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-top-left-radius:var(--bs-popover-inner-border-radius);border-top-right-radius:var(--bs-popover-inner-border-radius)}.popover-header:empty{display:none}.popover-body{padding:var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x);color:var(--bs-popover-body-color)}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y;-webkit-touch-action:pan-y;-moz-touch-action:pan-y;-ms-touch-action:pan-y;-o-touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;backface-visibility:hidden;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;-o-backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion: reduce){.carousel-item{transition:none}}.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}.carousel-item-next:not(.carousel-item-start),.active.carousel-item-end{transform:translateX(100%)}.carousel-item-prev:not(.carousel-item-end),.active.carousel-item-start{transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item.active,.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end{z-index:1;opacity:1}.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion: reduce){.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{transition:none}}.carousel-control-prev,.carousel-control-next{position:absolute;top:0;bottom:0;z-index:1;display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;justify-content:center;-webkit-justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:none;border:0;opacity:.5;transition:opacity 0.15s ease}@media (prefers-reduced-motion: reduce){.carousel-control-prev,.carousel-control-next{transition:none}}.carousel-control-prev:hover,.carousel-control-prev:focus,.carousel-control-next:hover,.carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;display:-webkit-flex;justify-content:center;-webkit-justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%;list-style:none}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;-webkit-flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity 0.6s ease}@media (prefers-reduced-motion: reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-prev-icon,.carousel-dark .carousel-control-next-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}.spinner-grow,.spinner-border{display:inline-block;width:var(--bs-spinner-width);height:var(--bs-spinner-height);vertical-align:var(--bs-spinner-vertical-align);border-radius:50%;animation:var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name)}@keyframes spinner-border{to{transform:rotate(360deg) /* rtl:ignore */}}.spinner-border{--bs-spinner-width: 2rem;--bs-spinner-height: 2rem;--bs-spinner-vertical-align: -.125em;--bs-spinner-border-width: .25em;--bs-spinner-animation-speed: .75s;--bs-spinner-animation-name: spinner-border;border:var(--bs-spinner-border-width) solid currentcolor;border-right-color:transparent}.spinner-border-sm{--bs-spinner-width: 1rem;--bs-spinner-height: 1rem;--bs-spinner-border-width: .2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{--bs-spinner-width: 2rem;--bs-spinner-height: 2rem;--bs-spinner-vertical-align: -.125em;--bs-spinner-animation-speed: .75s;--bs-spinner-animation-name: spinner-grow;background-color:currentcolor;opacity:0}.spinner-grow-sm{--bs-spinner-width: 1rem;--bs-spinner-height: 1rem}@media (prefers-reduced-motion: reduce){.spinner-border,.spinner-grow{--bs-spinner-animation-speed: 1.5s}}.offcanvas,.offcanvas-xxl,.offcanvas-xl,.offcanvas-lg,.offcanvas-md,.offcanvas-sm{--bs-offcanvas-zindex: 1045;--bs-offcanvas-width: 400px;--bs-offcanvas-height: 30vh;--bs-offcanvas-padding-x: 1rem;--bs-offcanvas-padding-y: 1rem;--bs-offcanvas-color: ;--bs-offcanvas-bg: #fff;--bs-offcanvas-border-width: 1px;--bs-offcanvas-border-color: var(--bs-border-color-translucent);--bs-offcanvas-box-shadow: 0 0.125rem 0.25rem rgba(0,0,0,0.075)}@media (max-width: 575.98px){.offcanvas-sm{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}}@media (max-width: 575.98px) and (prefers-reduced-motion: reduce){.offcanvas-sm{transition:none}}@media (max-width: 575.98px){.offcanvas-sm.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-sm.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-sm.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-sm.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-sm.showing,.offcanvas-sm.show:not(.hiding),.offcanvas-sm.in:not(.hiding){transform:none}.offcanvas-sm.showing,.offcanvas-sm.hiding,.offcanvas-sm.show,.offcanvas-sm.in{visibility:visible}}@media (min-width: 576px){.offcanvas-sm{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:transparent !important}.offcanvas-sm .offcanvas-header{display:none}.offcanvas-sm .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible;background-color:transparent !important}}@media (max-width: 767.98px){.offcanvas-md{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}}@media (max-width: 767.98px) and (prefers-reduced-motion: reduce){.offcanvas-md{transition:none}}@media (max-width: 767.98px){.offcanvas-md.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-md.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-md.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-md.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-md.showing,.offcanvas-md.show:not(.hiding),.offcanvas-md.in:not(.hiding){transform:none}.offcanvas-md.showing,.offcanvas-md.hiding,.offcanvas-md.show,.offcanvas-md.in{visibility:visible}}@media (min-width: 768px){.offcanvas-md{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:transparent !important}.offcanvas-md .offcanvas-header{display:none}.offcanvas-md .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible;background-color:transparent !important}}@media (max-width: 991.98px){.offcanvas-lg{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}}@media (max-width: 991.98px) and (prefers-reduced-motion: reduce){.offcanvas-lg{transition:none}}@media (max-width: 991.98px){.offcanvas-lg.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-lg.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-lg.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-lg.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-lg.showing,.offcanvas-lg.show:not(.hiding),.offcanvas-lg.in:not(.hiding){transform:none}.offcanvas-lg.showing,.offcanvas-lg.hiding,.offcanvas-lg.show,.offcanvas-lg.in{visibility:visible}}@media (min-width: 992px){.offcanvas-lg{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:transparent !important}.offcanvas-lg .offcanvas-header{display:none}.offcanvas-lg .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible;background-color:transparent !important}}@media (max-width: 1199.98px){.offcanvas-xl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}}@media (max-width: 1199.98px) and (prefers-reduced-motion: reduce){.offcanvas-xl{transition:none}}@media (max-width: 1199.98px){.offcanvas-xl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-xl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-xl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xl.showing,.offcanvas-xl.show:not(.hiding),.offcanvas-xl.in:not(.hiding){transform:none}.offcanvas-xl.showing,.offcanvas-xl.hiding,.offcanvas-xl.show,.offcanvas-xl.in{visibility:visible}}@media (min-width: 1200px){.offcanvas-xl{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:transparent !important}.offcanvas-xl .offcanvas-header{display:none}.offcanvas-xl .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible;background-color:transparent !important}}@media (max-width: 1399.98px){.offcanvas-xxl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}}@media (max-width: 1399.98px) and (prefers-reduced-motion: reduce){.offcanvas-xxl{transition:none}}@media (max-width: 1399.98px){.offcanvas-xxl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-xxl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-xxl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xxl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xxl.showing,.offcanvas-xxl.show:not(.hiding),.offcanvas-xxl.in:not(.hiding){transform:none}.offcanvas-xxl.showing,.offcanvas-xxl.hiding,.offcanvas-xxl.show,.offcanvas-xxl.in{visibility:visible}}@media (min-width: 1400px){.offcanvas-xxl{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:transparent !important}.offcanvas-xxl .offcanvas-header{display:none}.offcanvas-xxl .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible;background-color:transparent !important}}.offcanvas{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}@media (prefers-reduced-motion: reduce){.offcanvas{transition:none}}.offcanvas.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas.showing,.offcanvas.show:not(.hiding),.offcanvas.in:not(.hiding){transform:none}.offcanvas.showing,.offcanvas.hiding,.offcanvas.show,.offcanvas.in{visibility:visible}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show,.offcanvas-backdrop.in{opacity:.5}.offcanvas-header{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x)}.offcanvas-header .btn-close{padding:calc(var(--bs-offcanvas-padding-y) * .5) calc(var(--bs-offcanvas-padding-x) * .5);margin-top:calc(-.5 * var(--bs-offcanvas-padding-y));margin-right:calc(-.5 * var(--bs-offcanvas-padding-x));margin-bottom:calc(-.5 * var(--bs-offcanvas-padding-y))}.offcanvas-title{margin-bottom:0;line-height:1.5}.offcanvas-body{flex-grow:1;-webkit-flex-grow:1;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);overflow-y:auto}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentcolor;opacity:.5}.placeholder.btn::before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{animation:placeholder-glow 2s ease-in-out infinite}@keyframes placeholder-glow{50%{opacity:.2}}.placeholder-wave{mask-image:linear-gradient(130deg, #000 55%, rgba(0,0,0,0.8) 75%, #000 95%);-webkit-mask-image:linear-gradient(130deg, #000 55%, rgba(0,0,0,0.8) 75%, #000 95%);mask-size:200% 100%;-webkit-mask-size:200% 100%;animation:placeholder-wave 2s linear infinite}@keyframes placeholder-wave{100%{mask-position:-200% 0%;-webkit-mask-position:-200% 0%}}.clearfix::after{display:block;clear:both;content:""}.text-bg-default{color:#000 !important;background-color:RGBA(222,226,230, var(--bs-bg-opacity, 1)) !important}.text-bg-primary{color:#fff !important;background-color:RGBA(13,110,253, var(--bs-bg-opacity, 1)) !important}.text-bg-secondary{color:#fff !important;background-color:RGBA(108,117,125, var(--bs-bg-opacity, 1)) !important}.text-bg-success{color:#fff !important;background-color:RGBA(25,135,84, var(--bs-bg-opacity, 1)) !important}.text-bg-info{color:#000 !important;background-color:RGBA(13,202,240, var(--bs-bg-opacity, 1)) !important}.text-bg-warning{color:#000 !important;background-color:RGBA(255,193,7, var(--bs-bg-opacity, 1)) !important}.text-bg-danger{color:#fff !important;background-color:RGBA(220,53,69, var(--bs-bg-opacity, 1)) !important}.text-bg-light{color:#000 !important;background-color:RGBA(248,249,250, var(--bs-bg-opacity, 1)) !important}.text-bg-dark{color:#fff !important;background-color:RGBA(33,37,41, var(--bs-bg-opacity, 1)) !important}.link-default{color:#dee2e6 !important}.link-default:hover,.link-default:focus{color:#e5e8eb !important}.link-primary{color:#0d6efd !important}.link-primary:hover,.link-primary:focus{color:#0a58ca !important}.link-secondary{color:#6c757d !important}.link-secondary:hover,.link-secondary:focus{color:#565e64 !important}.link-success{color:#198754 !important}.link-success:hover,.link-success:focus{color:#146c43 !important}.link-info{color:#0dcaf0 !important}.link-info:hover,.link-info:focus{color:#3dd5f3 !important}.link-warning{color:#ffc107 !important}.link-warning:hover,.link-warning:focus{color:#ffcd39 !important}.link-danger{color:#dc3545 !important}.link-danger:hover,.link-danger:focus{color:#b02a37 !important}.link-light{color:#f8f9fa !important}.link-light:hover,.link-light:focus{color:#f9fafb !important}.link-dark{color:#212529 !important}.link-dark:hover,.link-dark:focus{color:#1a1e21 !important}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio: 100%}.ratio-4x3{--bs-aspect-ratio: calc(3 / 4 * 100%)}.ratio-16x9{--bs-aspect-ratio: calc(9 / 16 * 100%)}.ratio-21x9{--bs-aspect-ratio: calc(9 / 21 * 100%)}.fixed-top,.navbar-fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom,.navbar-fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top,.navbar-sticky-top{position:sticky;top:0;z-index:1020}.sticky-bottom{position:sticky;bottom:0;z-index:1020}@media (min-width: 576px){.sticky-sm-top{position:sticky;top:0;z-index:1020}.sticky-sm-bottom{position:sticky;bottom:0;z-index:1020}}@media (min-width: 768px){.sticky-md-top{position:sticky;top:0;z-index:1020}.sticky-md-bottom{position:sticky;bottom:0;z-index:1020}}@media (min-width: 992px){.sticky-lg-top{position:sticky;top:0;z-index:1020}.sticky-lg-bottom{position:sticky;bottom:0;z-index:1020}}@media (min-width: 1200px){.sticky-xl-top{position:sticky;top:0;z-index:1020}.sticky-xl-bottom{position:sticky;bottom:0;z-index:1020}}@media (min-width: 1400px){.sticky-xxl-top{position:sticky;top:0;z-index:1020}.sticky-xxl-bottom{position:sticky;bottom:0;z-index:1020}}.hstack{display:flex;display:-webkit-flex;flex-direction:row;-webkit-flex-direction:row;align-items:center;-webkit-align-items:center;align-self:stretch;-webkit-align-self:stretch}.vstack{display:flex;display:-webkit-flex;flex:1 1 auto;-webkit-flex:1 1 auto;flex-direction:column;-webkit-flex-direction:column;align-self:stretch;-webkit-align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border:0 !important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;-webkit-align-self:stretch;width:1px;min-height:1em;background-color:currentcolor;opacity:.25}.align-baseline{vertical-align:baseline !important}.align-top{vertical-align:top !important}.align-middle{vertical-align:middle !important}.align-bottom{vertical-align:bottom !important}.align-text-bottom{vertical-align:text-bottom !important}.align-text-top{vertical-align:text-top !important}.float-start,.float-left{float:left !important}.float-end,.float-right{float:right !important}.float-none{float:none !important}.opacity-0{opacity:0 !important}.opacity-25{opacity:.25 !important}.opacity-50{opacity:.5 !important}.opacity-75{opacity:.75 !important}.opacity-100{opacity:1 !important}.overflow-auto{overflow:auto !important}.overflow-hidden{overflow:hidden !important}.overflow-visible{overflow:visible !important}.overflow-scroll{overflow:scroll !important}.d-inline{display:inline !important}.d-inline-block{display:inline-block !important}.d-block{display:block !important}.d-grid{display:grid !important}.d-table{display:table !important}.d-table-row{display:table-row !important}.d-table-cell{display:table-cell !important}.d-flex{display:flex !important}.d-inline-flex{display:inline-flex !important}.d-none{display:none !important}.shadow{box-shadow:0 0.5rem 1rem rgba(0,0,0,0.15) !important}.shadow-sm{box-shadow:0 0.125rem 0.25rem rgba(0,0,0,0.075) !important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,0.175) !important}.shadow-none{box-shadow:none !important}.position-static{position:static !important}.position-relative{position:relative !important}.position-absolute{position:absolute !important}.position-fixed{position:fixed !important}.position-sticky{position:sticky !important}.top-0{top:0 !important}.top-50{top:50% !important}.top-100{top:100% !important}.bottom-0{bottom:0 !important}.bottom-50{bottom:50% !important}.bottom-100{bottom:100% !important}.start-0{left:0 !important}.start-50{left:50% !important}.start-100{left:100% !important}.end-0{right:0 !important}.end-50{right:50% !important}.end-100{right:100% !important}.translate-middle{transform:translate(-50%, -50%) !important}.translate-middle-x{transform:translateX(-50%) !important}.translate-middle-y{transform:translateY(-50%) !important}.border{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-0{border:0 !important}.border-top{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-top-0{border-top:0 !important}.border-end{border-right:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-end-0{border-right:0 !important}.border-bottom{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-bottom-0{border-bottom:0 !important}.border-start{border-left:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-start-0{border-left:0 !important}.border-default{--bs-border-opacity: 1;border-color:rgba(var(--bs-default-rgb), var(--bs-border-opacity)) !important}.border-primary{--bs-border-opacity: 1;border-color:rgba(var(--bs-primary-rgb), var(--bs-border-opacity)) !important}.border-secondary{--bs-border-opacity: 1;border-color:rgba(var(--bs-secondary-rgb), var(--bs-border-opacity)) !important}.border-success{--bs-border-opacity: 1;border-color:rgba(var(--bs-success-rgb), var(--bs-border-opacity)) !important}.border-info{--bs-border-opacity: 1;border-color:rgba(var(--bs-info-rgb), var(--bs-border-opacity)) !important}.border-warning{--bs-border-opacity: 1;border-color:rgba(var(--bs-warning-rgb), var(--bs-border-opacity)) !important}.border-danger{--bs-border-opacity: 1;border-color:rgba(var(--bs-danger-rgb), var(--bs-border-opacity)) !important}.border-light{--bs-border-opacity: 1;border-color:rgba(var(--bs-light-rgb), var(--bs-border-opacity)) !important}.border-dark{--bs-border-opacity: 1;border-color:rgba(var(--bs-dark-rgb), var(--bs-border-opacity)) !important}.border-white{--bs-border-opacity: 1;border-color:rgba(var(--bs-white-rgb), var(--bs-border-opacity)) !important}.border-1{--bs-border-width: 1px}.border-2{--bs-border-width: 2px}.border-3{--bs-border-width: 3px}.border-4{--bs-border-width: 4px}.border-5{--bs-border-width: 5px}.border-opacity-10{--bs-border-opacity: .1}.border-opacity-25{--bs-border-opacity: .25}.border-opacity-50{--bs-border-opacity: .5}.border-opacity-75{--bs-border-opacity: .75}.border-opacity-100{--bs-border-opacity: 1}.w-25{width:25% !important}.w-50{width:50% !important}.w-75{width:75% !important}.w-100{width:100% !important}.w-auto{width:auto !important}.mw-100{max-width:100% !important}.vw-100{width:100vw !important}.min-vw-100{min-width:100vw !important}.h-25{height:25% !important}.h-50{height:50% !important}.h-75{height:75% !important}.h-100{height:100% !important}.h-auto{height:auto !important}.mh-100{max-height:100% !important}.vh-100{height:100vh !important}.min-vh-100{min-height:100vh !important}.flex-fill{flex:1 1 auto !important}.flex-row{flex-direction:row !important}.flex-column{flex-direction:column !important}.flex-row-reverse{flex-direction:row-reverse !important}.flex-column-reverse{flex-direction:column-reverse !important}.flex-grow-0{flex-grow:0 !important}.flex-grow-1{flex-grow:1 !important}.flex-shrink-0{flex-shrink:0 !important}.flex-shrink-1{flex-shrink:1 !important}.flex-wrap{flex-wrap:wrap !important}.flex-nowrap{flex-wrap:nowrap !important}.flex-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-start{justify-content:flex-start !important}.justify-content-end{justify-content:flex-end !important}.justify-content-center{justify-content:center !important}.justify-content-between{justify-content:space-between !important}.justify-content-around{justify-content:space-around !important}.justify-content-evenly{justify-content:space-evenly !important}.align-items-start{align-items:flex-start !important}.align-items-end{align-items:flex-end !important}.align-items-center{align-items:center !important}.align-items-baseline{align-items:baseline !important}.align-items-stretch{align-items:stretch !important}.align-content-start{align-content:flex-start !important}.align-content-end{align-content:flex-end !important}.align-content-center{align-content:center !important}.align-content-between{align-content:space-between !important}.align-content-around{align-content:space-around !important}.align-content-stretch{align-content:stretch !important}.align-self-auto{align-self:auto !important}.align-self-start{align-self:flex-start !important}.align-self-end{align-self:flex-end !important}.align-self-center{align-self:center !important}.align-self-baseline{align-self:baseline !important}.align-self-stretch{align-self:stretch !important}.order-first{order:-1 !important}.order-0{order:0 !important}.order-1{order:1 !important}.order-2{order:2 !important}.order-3{order:3 !important}.order-4{order:4 !important}.order-5{order:5 !important}.order-last{order:6 !important}.m-0{margin:0 !important}.m-1{margin:.25rem !important}.m-2{margin:.5rem !important}.m-3{margin:1rem !important}.m-4{margin:1.5rem !important}.m-5{margin:3rem !important}.m-auto{margin:auto !important}.mx-0{margin-right:0 !important;margin-left:0 !important}.mx-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-3{margin-right:1rem !important;margin-left:1rem !important}.mx-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-5{margin-right:3rem !important;margin-left:3rem !important}.mx-auto{margin-right:auto !important;margin-left:auto !important}.my-0{margin-top:0 !important;margin-bottom:0 !important}.my-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-0{margin-top:0 !important}.mt-1{margin-top:.25rem !important}.mt-2{margin-top:.5rem !important}.mt-3{margin-top:1rem !important}.mt-4{margin-top:1.5rem !important}.mt-5{margin-top:3rem !important}.mt-auto{margin-top:auto !important}.me-0{margin-right:0 !important}.me-1{margin-right:.25rem !important}.me-2{margin-right:.5rem !important}.me-3{margin-right:1rem !important}.me-4{margin-right:1.5rem !important}.me-5{margin-right:3rem !important}.me-auto{margin-right:auto !important}.mb-0{margin-bottom:0 !important}.mb-1{margin-bottom:.25rem !important}.mb-2{margin-bottom:.5rem !important}.mb-3{margin-bottom:1rem !important}.mb-4{margin-bottom:1.5rem !important}.mb-5{margin-bottom:3rem !important}.mb-auto{margin-bottom:auto !important}.ms-0{margin-left:0 !important}.ms-1{margin-left:.25rem !important}.ms-2{margin-left:.5rem !important}.ms-3{margin-left:1rem !important}.ms-4{margin-left:1.5rem !important}.ms-5{margin-left:3rem !important}.ms-auto{margin-left:auto !important}.p-0{padding:0 !important}.p-1{padding:.25rem !important}.p-2{padding:.5rem !important}.p-3{padding:1rem !important}.p-4{padding:1.5rem !important}.p-5{padding:3rem !important}.px-0{padding-right:0 !important;padding-left:0 !important}.px-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-3{padding-right:1rem !important;padding-left:1rem !important}.px-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-5{padding-right:3rem !important;padding-left:3rem !important}.py-0{padding-top:0 !important;padding-bottom:0 !important}.py-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-0{padding-top:0 !important}.pt-1{padding-top:.25rem !important}.pt-2{padding-top:.5rem !important}.pt-3{padding-top:1rem !important}.pt-4{padding-top:1.5rem !important}.pt-5{padding-top:3rem !important}.pe-0{padding-right:0 !important}.pe-1{padding-right:.25rem !important}.pe-2{padding-right:.5rem !important}.pe-3{padding-right:1rem !important}.pe-4{padding-right:1.5rem !important}.pe-5{padding-right:3rem !important}.pb-0{padding-bottom:0 !important}.pb-1{padding-bottom:.25rem !important}.pb-2{padding-bottom:.5rem !important}.pb-3{padding-bottom:1rem !important}.pb-4{padding-bottom:1.5rem !important}.pb-5{padding-bottom:3rem !important}.ps-0{padding-left:0 !important}.ps-1{padding-left:.25rem !important}.ps-2{padding-left:.5rem !important}.ps-3{padding-left:1rem !important}.ps-4{padding-left:1.5rem !important}.ps-5{padding-left:3rem !important}.gap-0{gap:0 !important}.gap-1{gap:.25rem !important}.gap-2{gap:.5rem !important}.gap-3{gap:1rem !important}.gap-4{gap:1.5rem !important}.gap-5{gap:3rem !important}.font-monospace{font-family:var(--bs-font-monospace) !important}.fs-1{font-size:calc(1.375rem + 1.5vw) !important}.fs-2{font-size:calc(1.325rem + .9vw) !important}.fs-3{font-size:calc(1.3rem + .6vw) !important}.fs-4{font-size:calc(1.275rem + .3vw) !important}.fs-5{font-size:1.25rem !important}.fs-6{font-size:1rem !important}.fst-italic{font-style:italic !important}.fst-normal{font-style:normal !important}.fw-light{font-weight:300 !important}.fw-lighter{font-weight:lighter !important}.fw-normal{font-weight:400 !important}.fw-bold{font-weight:700 !important}.fw-semibold{font-weight:600 !important}.fw-bolder{font-weight:bolder !important}.lh-1{line-height:1 !important}.lh-sm{line-height:1.25 !important}.lh-base{line-height:1.5 !important}.lh-lg{line-height:2 !important}.text-start{text-align:left !important}.text-end{text-align:right !important}.text-center{text-align:center !important}.text-decoration-none{text-decoration:none !important}.text-decoration-underline{text-decoration:underline !important}.text-decoration-line-through{text-decoration:line-through !important}.text-lowercase{text-transform:lowercase !important}.text-uppercase{text-transform:uppercase !important}.text-capitalize{text-transform:capitalize !important}.text-wrap{white-space:normal !important}.text-nowrap{white-space:nowrap !important}.text-break{word-wrap:break-word !important;word-break:break-word !important}.text-default{--bs-text-opacity: 1;color:rgba(var(--bs-default-rgb), var(--bs-text-opacity)) !important}.text-primary{--bs-text-opacity: 1;color:rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important}.text-secondary{--bs-text-opacity: 1;color:rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important}.text-success{--bs-text-opacity: 1;color:rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important}.text-info{--bs-text-opacity: 1;color:rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important}.text-warning{--bs-text-opacity: 1;color:rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important}.text-danger{--bs-text-opacity: 1;color:rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important}.text-light{--bs-text-opacity: 1;color:rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important}.text-dark{--bs-text-opacity: 1;color:rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important}.text-black{--bs-text-opacity: 1;color:rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important}.text-white{--bs-text-opacity: 1;color:rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important}.text-body{--bs-text-opacity: 1;color:rgba(var(--bs-body-color-rgb), var(--bs-text-opacity)) !important}.text-muted,.help-text,.help-block{--bs-text-opacity: 1;color:#6c757d !important}.text-black-50{--bs-text-opacity: 1;color:rgba(0,0,0,0.5) !important}.text-white-50{--bs-text-opacity: 1;color:rgba(255,255,255,0.5) !important}.text-reset{--bs-text-opacity: 1;color:inherit !important}.text-opacity-25{--bs-text-opacity: .25}.text-opacity-50{--bs-text-opacity: .5}.text-opacity-75{--bs-text-opacity: .75}.text-opacity-100{--bs-text-opacity: 1}.bg-default{--bs-bg-opacity: 1;background-color:rgba(var(--bs-default-rgb), var(--bs-bg-opacity)) !important}.bg-primary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important}.bg-secondary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important}.bg-success{--bs-bg-opacity: 1;background-color:rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important}.bg-info{--bs-bg-opacity: 1;background-color:rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important}.bg-warning{--bs-bg-opacity: 1;background-color:rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important}.bg-danger{--bs-bg-opacity: 1;background-color:rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important}.bg-light{--bs-bg-opacity: 1;background-color:rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important}.bg-dark{--bs-bg-opacity: 1;background-color:rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important}.bg-black{--bs-bg-opacity: 1;background-color:rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important}.bg-white{--bs-bg-opacity: 1;background-color:rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important}.bg-body{--bs-bg-opacity: 1;background-color:rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important}.bg-transparent{--bs-bg-opacity: 1;background-color:rgba(0,0,0,0) !important}.bg-opacity-10{--bs-bg-opacity: .1}.bg-opacity-25{--bs-bg-opacity: .25}.bg-opacity-50{--bs-bg-opacity: .5}.bg-opacity-75{--bs-bg-opacity: .75}.bg-opacity-100{--bs-bg-opacity: 1}.bg-gradient{background-image:var(--bs-gradient) !important}.user-select-all{user-select:all !important}.user-select-auto{user-select:auto !important}.user-select-none{user-select:none !important}.pe-none{pointer-events:none !important}.pe-auto{pointer-events:auto !important}.rounded{border-radius:var(--bs-border-radius) !important}.rounded-0{border-radius:0 !important}.rounded-1{border-radius:var(--bs-border-radius-sm) !important}.rounded-2{border-radius:var(--bs-border-radius) !important}.rounded-3{border-radius:var(--bs-border-radius-lg) !important}.rounded-4{border-radius:var(--bs-border-radius-xl) !important}.rounded-5{border-radius:var(--bs-border-radius-2xl) !important}.rounded-circle{border-radius:50% !important}.rounded-pill{border-radius:var(--bs-border-radius-pill) !important}.rounded-top{border-top-left-radius:var(--bs-border-radius) !important;border-top-right-radius:var(--bs-border-radius) !important}.rounded-end{border-top-right-radius:var(--bs-border-radius) !important;border-bottom-right-radius:var(--bs-border-radius) !important}.rounded-bottom{border-bottom-right-radius:var(--bs-border-radius) !important;border-bottom-left-radius:var(--bs-border-radius) !important}.rounded-start{border-bottom-left-radius:var(--bs-border-radius) !important;border-top-left-radius:var(--bs-border-radius) !important}.visible{visibility:visible !important}.invisible{visibility:hidden !important}@media (min-width: 576px){.float-sm-start{float:left !important}.float-sm-end{float:right !important}.float-sm-none{float:none !important}.d-sm-inline{display:inline !important}.d-sm-inline-block{display:inline-block !important}.d-sm-block{display:block !important}.d-sm-grid{display:grid !important}.d-sm-table{display:table !important}.d-sm-table-row{display:table-row !important}.d-sm-table-cell{display:table-cell !important}.d-sm-flex{display:flex !important}.d-sm-inline-flex{display:inline-flex !important}.d-sm-none{display:none !important}.flex-sm-fill{flex:1 1 auto !important}.flex-sm-row{flex-direction:row !important}.flex-sm-column{flex-direction:column !important}.flex-sm-row-reverse{flex-direction:row-reverse !important}.flex-sm-column-reverse{flex-direction:column-reverse !important}.flex-sm-grow-0{flex-grow:0 !important}.flex-sm-grow-1{flex-grow:1 !important}.flex-sm-shrink-0{flex-shrink:0 !important}.flex-sm-shrink-1{flex-shrink:1 !important}.flex-sm-wrap{flex-wrap:wrap !important}.flex-sm-nowrap{flex-wrap:nowrap !important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-sm-start{justify-content:flex-start !important}.justify-content-sm-end{justify-content:flex-end !important}.justify-content-sm-center{justify-content:center !important}.justify-content-sm-between{justify-content:space-between !important}.justify-content-sm-around{justify-content:space-around !important}.justify-content-sm-evenly{justify-content:space-evenly !important}.align-items-sm-start{align-items:flex-start !important}.align-items-sm-end{align-items:flex-end !important}.align-items-sm-center{align-items:center !important}.align-items-sm-baseline{align-items:baseline !important}.align-items-sm-stretch{align-items:stretch !important}.align-content-sm-start{align-content:flex-start !important}.align-content-sm-end{align-content:flex-end !important}.align-content-sm-center{align-content:center !important}.align-content-sm-between{align-content:space-between !important}.align-content-sm-around{align-content:space-around !important}.align-content-sm-stretch{align-content:stretch !important}.align-self-sm-auto{align-self:auto !important}.align-self-sm-start{align-self:flex-start !important}.align-self-sm-end{align-self:flex-end !important}.align-self-sm-center{align-self:center !important}.align-self-sm-baseline{align-self:baseline !important}.align-self-sm-stretch{align-self:stretch !important}.order-sm-first{order:-1 !important}.order-sm-0{order:0 !important}.order-sm-1{order:1 !important}.order-sm-2{order:2 !important}.order-sm-3{order:3 !important}.order-sm-4{order:4 !important}.order-sm-5{order:5 !important}.order-sm-last{order:6 !important}.m-sm-0{margin:0 !important}.m-sm-1{margin:.25rem !important}.m-sm-2{margin:.5rem !important}.m-sm-3{margin:1rem !important}.m-sm-4{margin:1.5rem !important}.m-sm-5{margin:3rem !important}.m-sm-auto{margin:auto !important}.mx-sm-0{margin-right:0 !important;margin-left:0 !important}.mx-sm-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-sm-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-sm-3{margin-right:1rem !important;margin-left:1rem !important}.mx-sm-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-sm-5{margin-right:3rem !important;margin-left:3rem !important}.mx-sm-auto{margin-right:auto !important;margin-left:auto !important}.my-sm-0{margin-top:0 !important;margin-bottom:0 !important}.my-sm-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-sm-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-sm-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-sm-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-sm-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-sm-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-sm-0{margin-top:0 !important}.mt-sm-1{margin-top:.25rem !important}.mt-sm-2{margin-top:.5rem !important}.mt-sm-3{margin-top:1rem !important}.mt-sm-4{margin-top:1.5rem !important}.mt-sm-5{margin-top:3rem !important}.mt-sm-auto{margin-top:auto !important}.me-sm-0{margin-right:0 !important}.me-sm-1{margin-right:.25rem !important}.me-sm-2{margin-right:.5rem !important}.me-sm-3{margin-right:1rem !important}.me-sm-4{margin-right:1.5rem !important}.me-sm-5{margin-right:3rem !important}.me-sm-auto{margin-right:auto !important}.mb-sm-0{margin-bottom:0 !important}.mb-sm-1{margin-bottom:.25rem !important}.mb-sm-2{margin-bottom:.5rem !important}.mb-sm-3{margin-bottom:1rem !important}.mb-sm-4{margin-bottom:1.5rem !important}.mb-sm-5{margin-bottom:3rem !important}.mb-sm-auto{margin-bottom:auto !important}.ms-sm-0{margin-left:0 !important}.ms-sm-1{margin-left:.25rem !important}.ms-sm-2{margin-left:.5rem !important}.ms-sm-3{margin-left:1rem !important}.ms-sm-4{margin-left:1.5rem !important}.ms-sm-5{margin-left:3rem !important}.ms-sm-auto{margin-left:auto !important}.p-sm-0{padding:0 !important}.p-sm-1{padding:.25rem !important}.p-sm-2{padding:.5rem !important}.p-sm-3{padding:1rem !important}.p-sm-4{padding:1.5rem !important}.p-sm-5{padding:3rem !important}.px-sm-0{padding-right:0 !important;padding-left:0 !important}.px-sm-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-sm-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-sm-3{padding-right:1rem !important;padding-left:1rem !important}.px-sm-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-sm-5{padding-right:3rem !important;padding-left:3rem !important}.py-sm-0{padding-top:0 !important;padding-bottom:0 !important}.py-sm-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-sm-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-sm-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-sm-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-sm-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-sm-0{padding-top:0 !important}.pt-sm-1{padding-top:.25rem !important}.pt-sm-2{padding-top:.5rem !important}.pt-sm-3{padding-top:1rem !important}.pt-sm-4{padding-top:1.5rem !important}.pt-sm-5{padding-top:3rem !important}.pe-sm-0{padding-right:0 !important}.pe-sm-1{padding-right:.25rem !important}.pe-sm-2{padding-right:.5rem !important}.pe-sm-3{padding-right:1rem !important}.pe-sm-4{padding-right:1.5rem !important}.pe-sm-5{padding-right:3rem !important}.pb-sm-0{padding-bottom:0 !important}.pb-sm-1{padding-bottom:.25rem !important}.pb-sm-2{padding-bottom:.5rem !important}.pb-sm-3{padding-bottom:1rem !important}.pb-sm-4{padding-bottom:1.5rem !important}.pb-sm-5{padding-bottom:3rem !important}.ps-sm-0{padding-left:0 !important}.ps-sm-1{padding-left:.25rem !important}.ps-sm-2{padding-left:.5rem !important}.ps-sm-3{padding-left:1rem !important}.ps-sm-4{padding-left:1.5rem !important}.ps-sm-5{padding-left:3rem !important}.gap-sm-0{gap:0 !important}.gap-sm-1{gap:.25rem !important}.gap-sm-2{gap:.5rem !important}.gap-sm-3{gap:1rem !important}.gap-sm-4{gap:1.5rem !important}.gap-sm-5{gap:3rem !important}.text-sm-start{text-align:left !important}.text-sm-end{text-align:right !important}.text-sm-center{text-align:center !important}}@media (min-width: 768px){.float-md-start{float:left !important}.float-md-end{float:right !important}.float-md-none{float:none !important}.d-md-inline{display:inline !important}.d-md-inline-block{display:inline-block !important}.d-md-block{display:block !important}.d-md-grid{display:grid !important}.d-md-table{display:table !important}.d-md-table-row{display:table-row !important}.d-md-table-cell{display:table-cell !important}.d-md-flex{display:flex !important}.d-md-inline-flex{display:inline-flex !important}.d-md-none{display:none !important}.flex-md-fill{flex:1 1 auto !important}.flex-md-row{flex-direction:row !important}.flex-md-column{flex-direction:column !important}.flex-md-row-reverse{flex-direction:row-reverse !important}.flex-md-column-reverse{flex-direction:column-reverse !important}.flex-md-grow-0{flex-grow:0 !important}.flex-md-grow-1{flex-grow:1 !important}.flex-md-shrink-0{flex-shrink:0 !important}.flex-md-shrink-1{flex-shrink:1 !important}.flex-md-wrap{flex-wrap:wrap !important}.flex-md-nowrap{flex-wrap:nowrap !important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-md-start{justify-content:flex-start !important}.justify-content-md-end{justify-content:flex-end !important}.justify-content-md-center{justify-content:center !important}.justify-content-md-between{justify-content:space-between !important}.justify-content-md-around{justify-content:space-around !important}.justify-content-md-evenly{justify-content:space-evenly !important}.align-items-md-start{align-items:flex-start !important}.align-items-md-end{align-items:flex-end !important}.align-items-md-center{align-items:center !important}.align-items-md-baseline{align-items:baseline !important}.align-items-md-stretch{align-items:stretch !important}.align-content-md-start{align-content:flex-start !important}.align-content-md-end{align-content:flex-end !important}.align-content-md-center{align-content:center !important}.align-content-md-between{align-content:space-between !important}.align-content-md-around{align-content:space-around !important}.align-content-md-stretch{align-content:stretch !important}.align-self-md-auto{align-self:auto !important}.align-self-md-start{align-self:flex-start !important}.align-self-md-end{align-self:flex-end !important}.align-self-md-center{align-self:center !important}.align-self-md-baseline{align-self:baseline !important}.align-self-md-stretch{align-self:stretch !important}.order-md-first{order:-1 !important}.order-md-0{order:0 !important}.order-md-1{order:1 !important}.order-md-2{order:2 !important}.order-md-3{order:3 !important}.order-md-4{order:4 !important}.order-md-5{order:5 !important}.order-md-last{order:6 !important}.m-md-0{margin:0 !important}.m-md-1{margin:.25rem !important}.m-md-2{margin:.5rem !important}.m-md-3{margin:1rem !important}.m-md-4{margin:1.5rem !important}.m-md-5{margin:3rem !important}.m-md-auto{margin:auto !important}.mx-md-0{margin-right:0 !important;margin-left:0 !important}.mx-md-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-md-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-md-3{margin-right:1rem !important;margin-left:1rem !important}.mx-md-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-md-5{margin-right:3rem !important;margin-left:3rem !important}.mx-md-auto{margin-right:auto !important;margin-left:auto !important}.my-md-0{margin-top:0 !important;margin-bottom:0 !important}.my-md-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-md-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-md-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-md-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-md-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-md-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-md-0{margin-top:0 !important}.mt-md-1{margin-top:.25rem !important}.mt-md-2{margin-top:.5rem !important}.mt-md-3{margin-top:1rem !important}.mt-md-4{margin-top:1.5rem !important}.mt-md-5{margin-top:3rem !important}.mt-md-auto{margin-top:auto !important}.me-md-0{margin-right:0 !important}.me-md-1{margin-right:.25rem !important}.me-md-2{margin-right:.5rem !important}.me-md-3{margin-right:1rem !important}.me-md-4{margin-right:1.5rem !important}.me-md-5{margin-right:3rem !important}.me-md-auto{margin-right:auto !important}.mb-md-0{margin-bottom:0 !important}.mb-md-1{margin-bottom:.25rem !important}.mb-md-2{margin-bottom:.5rem !important}.mb-md-3{margin-bottom:1rem !important}.mb-md-4{margin-bottom:1.5rem !important}.mb-md-5{margin-bottom:3rem !important}.mb-md-auto{margin-bottom:auto !important}.ms-md-0{margin-left:0 !important}.ms-md-1{margin-left:.25rem !important}.ms-md-2{margin-left:.5rem !important}.ms-md-3{margin-left:1rem !important}.ms-md-4{margin-left:1.5rem !important}.ms-md-5{margin-left:3rem !important}.ms-md-auto{margin-left:auto !important}.p-md-0{padding:0 !important}.p-md-1{padding:.25rem !important}.p-md-2{padding:.5rem !important}.p-md-3{padding:1rem !important}.p-md-4{padding:1.5rem !important}.p-md-5{padding:3rem !important}.px-md-0{padding-right:0 !important;padding-left:0 !important}.px-md-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-md-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-md-3{padding-right:1rem !important;padding-left:1rem !important}.px-md-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-md-5{padding-right:3rem !important;padding-left:3rem !important}.py-md-0{padding-top:0 !important;padding-bottom:0 !important}.py-md-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-md-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-md-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-md-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-md-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-md-0{padding-top:0 !important}.pt-md-1{padding-top:.25rem !important}.pt-md-2{padding-top:.5rem !important}.pt-md-3{padding-top:1rem !important}.pt-md-4{padding-top:1.5rem !important}.pt-md-5{padding-top:3rem !important}.pe-md-0{padding-right:0 !important}.pe-md-1{padding-right:.25rem !important}.pe-md-2{padding-right:.5rem !important}.pe-md-3{padding-right:1rem !important}.pe-md-4{padding-right:1.5rem !important}.pe-md-5{padding-right:3rem !important}.pb-md-0{padding-bottom:0 !important}.pb-md-1{padding-bottom:.25rem !important}.pb-md-2{padding-bottom:.5rem !important}.pb-md-3{padding-bottom:1rem !important}.pb-md-4{padding-bottom:1.5rem !important}.pb-md-5{padding-bottom:3rem !important}.ps-md-0{padding-left:0 !important}.ps-md-1{padding-left:.25rem !important}.ps-md-2{padding-left:.5rem !important}.ps-md-3{padding-left:1rem !important}.ps-md-4{padding-left:1.5rem !important}.ps-md-5{padding-left:3rem !important}.gap-md-0{gap:0 !important}.gap-md-1{gap:.25rem !important}.gap-md-2{gap:.5rem !important}.gap-md-3{gap:1rem !important}.gap-md-4{gap:1.5rem !important}.gap-md-5{gap:3rem !important}.text-md-start{text-align:left !important}.text-md-end{text-align:right !important}.text-md-center{text-align:center !important}}@media (min-width: 992px){.float-lg-start{float:left !important}.float-lg-end{float:right !important}.float-lg-none{float:none !important}.d-lg-inline{display:inline !important}.d-lg-inline-block{display:inline-block !important}.d-lg-block{display:block !important}.d-lg-grid{display:grid !important}.d-lg-table{display:table !important}.d-lg-table-row{display:table-row !important}.d-lg-table-cell{display:table-cell !important}.d-lg-flex{display:flex !important}.d-lg-inline-flex{display:inline-flex !important}.d-lg-none{display:none !important}.flex-lg-fill{flex:1 1 auto !important}.flex-lg-row{flex-direction:row !important}.flex-lg-column{flex-direction:column !important}.flex-lg-row-reverse{flex-direction:row-reverse !important}.flex-lg-column-reverse{flex-direction:column-reverse !important}.flex-lg-grow-0{flex-grow:0 !important}.flex-lg-grow-1{flex-grow:1 !important}.flex-lg-shrink-0{flex-shrink:0 !important}.flex-lg-shrink-1{flex-shrink:1 !important}.flex-lg-wrap{flex-wrap:wrap !important}.flex-lg-nowrap{flex-wrap:nowrap !important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-lg-start{justify-content:flex-start !important}.justify-content-lg-end{justify-content:flex-end !important}.justify-content-lg-center{justify-content:center !important}.justify-content-lg-between{justify-content:space-between !important}.justify-content-lg-around{justify-content:space-around !important}.justify-content-lg-evenly{justify-content:space-evenly !important}.align-items-lg-start{align-items:flex-start !important}.align-items-lg-end{align-items:flex-end !important}.align-items-lg-center{align-items:center !important}.align-items-lg-baseline{align-items:baseline !important}.align-items-lg-stretch{align-items:stretch !important}.align-content-lg-start{align-content:flex-start !important}.align-content-lg-end{align-content:flex-end !important}.align-content-lg-center{align-content:center !important}.align-content-lg-between{align-content:space-between !important}.align-content-lg-around{align-content:space-around !important}.align-content-lg-stretch{align-content:stretch !important}.align-self-lg-auto{align-self:auto !important}.align-self-lg-start{align-self:flex-start !important}.align-self-lg-end{align-self:flex-end !important}.align-self-lg-center{align-self:center !important}.align-self-lg-baseline{align-self:baseline !important}.align-self-lg-stretch{align-self:stretch !important}.order-lg-first{order:-1 !important}.order-lg-0{order:0 !important}.order-lg-1{order:1 !important}.order-lg-2{order:2 !important}.order-lg-3{order:3 !important}.order-lg-4{order:4 !important}.order-lg-5{order:5 !important}.order-lg-last{order:6 !important}.m-lg-0{margin:0 !important}.m-lg-1{margin:.25rem !important}.m-lg-2{margin:.5rem !important}.m-lg-3{margin:1rem !important}.m-lg-4{margin:1.5rem !important}.m-lg-5{margin:3rem !important}.m-lg-auto{margin:auto !important}.mx-lg-0{margin-right:0 !important;margin-left:0 !important}.mx-lg-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-lg-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-lg-3{margin-right:1rem !important;margin-left:1rem !important}.mx-lg-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-lg-5{margin-right:3rem !important;margin-left:3rem !important}.mx-lg-auto{margin-right:auto !important;margin-left:auto !important}.my-lg-0{margin-top:0 !important;margin-bottom:0 !important}.my-lg-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-lg-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-lg-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-lg-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-lg-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-lg-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-lg-0{margin-top:0 !important}.mt-lg-1{margin-top:.25rem !important}.mt-lg-2{margin-top:.5rem !important}.mt-lg-3{margin-top:1rem !important}.mt-lg-4{margin-top:1.5rem !important}.mt-lg-5{margin-top:3rem !important}.mt-lg-auto{margin-top:auto !important}.me-lg-0{margin-right:0 !important}.me-lg-1{margin-right:.25rem !important}.me-lg-2{margin-right:.5rem !important}.me-lg-3{margin-right:1rem !important}.me-lg-4{margin-right:1.5rem !important}.me-lg-5{margin-right:3rem !important}.me-lg-auto{margin-right:auto !important}.mb-lg-0{margin-bottom:0 !important}.mb-lg-1{margin-bottom:.25rem !important}.mb-lg-2{margin-bottom:.5rem !important}.mb-lg-3{margin-bottom:1rem !important}.mb-lg-4{margin-bottom:1.5rem !important}.mb-lg-5{margin-bottom:3rem !important}.mb-lg-auto{margin-bottom:auto !important}.ms-lg-0{margin-left:0 !important}.ms-lg-1{margin-left:.25rem !important}.ms-lg-2{margin-left:.5rem !important}.ms-lg-3{margin-left:1rem !important}.ms-lg-4{margin-left:1.5rem !important}.ms-lg-5{margin-left:3rem !important}.ms-lg-auto{margin-left:auto !important}.p-lg-0{padding:0 !important}.p-lg-1{padding:.25rem !important}.p-lg-2{padding:.5rem !important}.p-lg-3{padding:1rem !important}.p-lg-4{padding:1.5rem !important}.p-lg-5{padding:3rem !important}.px-lg-0{padding-right:0 !important;padding-left:0 !important}.px-lg-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-lg-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-lg-3{padding-right:1rem !important;padding-left:1rem !important}.px-lg-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-lg-5{padding-right:3rem !important;padding-left:3rem !important}.py-lg-0{padding-top:0 !important;padding-bottom:0 !important}.py-lg-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-lg-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-lg-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-lg-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-lg-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-lg-0{padding-top:0 !important}.pt-lg-1{padding-top:.25rem !important}.pt-lg-2{padding-top:.5rem !important}.pt-lg-3{padding-top:1rem !important}.pt-lg-4{padding-top:1.5rem !important}.pt-lg-5{padding-top:3rem !important}.pe-lg-0{padding-right:0 !important}.pe-lg-1{padding-right:.25rem !important}.pe-lg-2{padding-right:.5rem !important}.pe-lg-3{padding-right:1rem !important}.pe-lg-4{padding-right:1.5rem !important}.pe-lg-5{padding-right:3rem !important}.pb-lg-0{padding-bottom:0 !important}.pb-lg-1{padding-bottom:.25rem !important}.pb-lg-2{padding-bottom:.5rem !important}.pb-lg-3{padding-bottom:1rem !important}.pb-lg-4{padding-bottom:1.5rem !important}.pb-lg-5{padding-bottom:3rem !important}.ps-lg-0{padding-left:0 !important}.ps-lg-1{padding-left:.25rem !important}.ps-lg-2{padding-left:.5rem !important}.ps-lg-3{padding-left:1rem !important}.ps-lg-4{padding-left:1.5rem !important}.ps-lg-5{padding-left:3rem !important}.gap-lg-0{gap:0 !important}.gap-lg-1{gap:.25rem !important}.gap-lg-2{gap:.5rem !important}.gap-lg-3{gap:1rem !important}.gap-lg-4{gap:1.5rem !important}.gap-lg-5{gap:3rem !important}.text-lg-start{text-align:left !important}.text-lg-end{text-align:right !important}.text-lg-center{text-align:center !important}}@media (min-width: 1200px){.float-xl-start{float:left !important}.float-xl-end{float:right !important}.float-xl-none{float:none !important}.d-xl-inline{display:inline !important}.d-xl-inline-block{display:inline-block !important}.d-xl-block{display:block !important}.d-xl-grid{display:grid !important}.d-xl-table{display:table !important}.d-xl-table-row{display:table-row !important}.d-xl-table-cell{display:table-cell !important}.d-xl-flex{display:flex !important}.d-xl-inline-flex{display:inline-flex !important}.d-xl-none{display:none !important}.flex-xl-fill{flex:1 1 auto !important}.flex-xl-row{flex-direction:row !important}.flex-xl-column{flex-direction:column !important}.flex-xl-row-reverse{flex-direction:row-reverse !important}.flex-xl-column-reverse{flex-direction:column-reverse !important}.flex-xl-grow-0{flex-grow:0 !important}.flex-xl-grow-1{flex-grow:1 !important}.flex-xl-shrink-0{flex-shrink:0 !important}.flex-xl-shrink-1{flex-shrink:1 !important}.flex-xl-wrap{flex-wrap:wrap !important}.flex-xl-nowrap{flex-wrap:nowrap !important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-xl-start{justify-content:flex-start !important}.justify-content-xl-end{justify-content:flex-end !important}.justify-content-xl-center{justify-content:center !important}.justify-content-xl-between{justify-content:space-between !important}.justify-content-xl-around{justify-content:space-around !important}.justify-content-xl-evenly{justify-content:space-evenly !important}.align-items-xl-start{align-items:flex-start !important}.align-items-xl-end{align-items:flex-end !important}.align-items-xl-center{align-items:center !important}.align-items-xl-baseline{align-items:baseline !important}.align-items-xl-stretch{align-items:stretch !important}.align-content-xl-start{align-content:flex-start !important}.align-content-xl-end{align-content:flex-end !important}.align-content-xl-center{align-content:center !important}.align-content-xl-between{align-content:space-between !important}.align-content-xl-around{align-content:space-around !important}.align-content-xl-stretch{align-content:stretch !important}.align-self-xl-auto{align-self:auto !important}.align-self-xl-start{align-self:flex-start !important}.align-self-xl-end{align-self:flex-end !important}.align-self-xl-center{align-self:center !important}.align-self-xl-baseline{align-self:baseline !important}.align-self-xl-stretch{align-self:stretch !important}.order-xl-first{order:-1 !important}.order-xl-0{order:0 !important}.order-xl-1{order:1 !important}.order-xl-2{order:2 !important}.order-xl-3{order:3 !important}.order-xl-4{order:4 !important}.order-xl-5{order:5 !important}.order-xl-last{order:6 !important}.m-xl-0{margin:0 !important}.m-xl-1{margin:.25rem !important}.m-xl-2{margin:.5rem !important}.m-xl-3{margin:1rem !important}.m-xl-4{margin:1.5rem !important}.m-xl-5{margin:3rem !important}.m-xl-auto{margin:auto !important}.mx-xl-0{margin-right:0 !important;margin-left:0 !important}.mx-xl-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-xl-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-xl-3{margin-right:1rem !important;margin-left:1rem !important}.mx-xl-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-xl-5{margin-right:3rem !important;margin-left:3rem !important}.mx-xl-auto{margin-right:auto !important;margin-left:auto !important}.my-xl-0{margin-top:0 !important;margin-bottom:0 !important}.my-xl-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-xl-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-xl-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-xl-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-xl-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-xl-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-xl-0{margin-top:0 !important}.mt-xl-1{margin-top:.25rem !important}.mt-xl-2{margin-top:.5rem !important}.mt-xl-3{margin-top:1rem !important}.mt-xl-4{margin-top:1.5rem !important}.mt-xl-5{margin-top:3rem !important}.mt-xl-auto{margin-top:auto !important}.me-xl-0{margin-right:0 !important}.me-xl-1{margin-right:.25rem !important}.me-xl-2{margin-right:.5rem !important}.me-xl-3{margin-right:1rem !important}.me-xl-4{margin-right:1.5rem !important}.me-xl-5{margin-right:3rem !important}.me-xl-auto{margin-right:auto !important}.mb-xl-0{margin-bottom:0 !important}.mb-xl-1{margin-bottom:.25rem !important}.mb-xl-2{margin-bottom:.5rem !important}.mb-xl-3{margin-bottom:1rem !important}.mb-xl-4{margin-bottom:1.5rem !important}.mb-xl-5{margin-bottom:3rem !important}.mb-xl-auto{margin-bottom:auto !important}.ms-xl-0{margin-left:0 !important}.ms-xl-1{margin-left:.25rem !important}.ms-xl-2{margin-left:.5rem !important}.ms-xl-3{margin-left:1rem !important}.ms-xl-4{margin-left:1.5rem !important}.ms-xl-5{margin-left:3rem !important}.ms-xl-auto{margin-left:auto !important}.p-xl-0{padding:0 !important}.p-xl-1{padding:.25rem !important}.p-xl-2{padding:.5rem !important}.p-xl-3{padding:1rem !important}.p-xl-4{padding:1.5rem !important}.p-xl-5{padding:3rem !important}.px-xl-0{padding-right:0 !important;padding-left:0 !important}.px-xl-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-xl-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-xl-3{padding-right:1rem !important;padding-left:1rem !important}.px-xl-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-xl-5{padding-right:3rem !important;padding-left:3rem !important}.py-xl-0{padding-top:0 !important;padding-bottom:0 !important}.py-xl-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-xl-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-xl-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-xl-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-xl-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-xl-0{padding-top:0 !important}.pt-xl-1{padding-top:.25rem !important}.pt-xl-2{padding-top:.5rem !important}.pt-xl-3{padding-top:1rem !important}.pt-xl-4{padding-top:1.5rem !important}.pt-xl-5{padding-top:3rem !important}.pe-xl-0{padding-right:0 !important}.pe-xl-1{padding-right:.25rem !important}.pe-xl-2{padding-right:.5rem !important}.pe-xl-3{padding-right:1rem !important}.pe-xl-4{padding-right:1.5rem !important}.pe-xl-5{padding-right:3rem !important}.pb-xl-0{padding-bottom:0 !important}.pb-xl-1{padding-bottom:.25rem !important}.pb-xl-2{padding-bottom:.5rem !important}.pb-xl-3{padding-bottom:1rem !important}.pb-xl-4{padding-bottom:1.5rem !important}.pb-xl-5{padding-bottom:3rem !important}.ps-xl-0{padding-left:0 !important}.ps-xl-1{padding-left:.25rem !important}.ps-xl-2{padding-left:.5rem !important}.ps-xl-3{padding-left:1rem !important}.ps-xl-4{padding-left:1.5rem !important}.ps-xl-5{padding-left:3rem !important}.gap-xl-0{gap:0 !important}.gap-xl-1{gap:.25rem !important}.gap-xl-2{gap:.5rem !important}.gap-xl-3{gap:1rem !important}.gap-xl-4{gap:1.5rem !important}.gap-xl-5{gap:3rem !important}.text-xl-start{text-align:left !important}.text-xl-end{text-align:right !important}.text-xl-center{text-align:center !important}}@media (min-width: 1400px){.float-xxl-start{float:left !important}.float-xxl-end{float:right !important}.float-xxl-none{float:none !important}.d-xxl-inline{display:inline !important}.d-xxl-inline-block{display:inline-block !important}.d-xxl-block{display:block !important}.d-xxl-grid{display:grid !important}.d-xxl-table{display:table !important}.d-xxl-table-row{display:table-row !important}.d-xxl-table-cell{display:table-cell !important}.d-xxl-flex{display:flex !important}.d-xxl-inline-flex{display:inline-flex !important}.d-xxl-none{display:none !important}.flex-xxl-fill{flex:1 1 auto !important}.flex-xxl-row{flex-direction:row !important}.flex-xxl-column{flex-direction:column !important}.flex-xxl-row-reverse{flex-direction:row-reverse !important}.flex-xxl-column-reverse{flex-direction:column-reverse !important}.flex-xxl-grow-0{flex-grow:0 !important}.flex-xxl-grow-1{flex-grow:1 !important}.flex-xxl-shrink-0{flex-shrink:0 !important}.flex-xxl-shrink-1{flex-shrink:1 !important}.flex-xxl-wrap{flex-wrap:wrap !important}.flex-xxl-nowrap{flex-wrap:nowrap !important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-xxl-start{justify-content:flex-start !important}.justify-content-xxl-end{justify-content:flex-end !important}.justify-content-xxl-center{justify-content:center !important}.justify-content-xxl-between{justify-content:space-between !important}.justify-content-xxl-around{justify-content:space-around !important}.justify-content-xxl-evenly{justify-content:space-evenly !important}.align-items-xxl-start{align-items:flex-start !important}.align-items-xxl-end{align-items:flex-end !important}.align-items-xxl-center{align-items:center !important}.align-items-xxl-baseline{align-items:baseline !important}.align-items-xxl-stretch{align-items:stretch !important}.align-content-xxl-start{align-content:flex-start !important}.align-content-xxl-end{align-content:flex-end !important}.align-content-xxl-center{align-content:center !important}.align-content-xxl-between{align-content:space-between !important}.align-content-xxl-around{align-content:space-around !important}.align-content-xxl-stretch{align-content:stretch !important}.align-self-xxl-auto{align-self:auto !important}.align-self-xxl-start{align-self:flex-start !important}.align-self-xxl-end{align-self:flex-end !important}.align-self-xxl-center{align-self:center !important}.align-self-xxl-baseline{align-self:baseline !important}.align-self-xxl-stretch{align-self:stretch !important}.order-xxl-first{order:-1 !important}.order-xxl-0{order:0 !important}.order-xxl-1{order:1 !important}.order-xxl-2{order:2 !important}.order-xxl-3{order:3 !important}.order-xxl-4{order:4 !important}.order-xxl-5{order:5 !important}.order-xxl-last{order:6 !important}.m-xxl-0{margin:0 !important}.m-xxl-1{margin:.25rem !important}.m-xxl-2{margin:.5rem !important}.m-xxl-3{margin:1rem !important}.m-xxl-4{margin:1.5rem !important}.m-xxl-5{margin:3rem !important}.m-xxl-auto{margin:auto !important}.mx-xxl-0{margin-right:0 !important;margin-left:0 !important}.mx-xxl-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-xxl-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-xxl-3{margin-right:1rem !important;margin-left:1rem !important}.mx-xxl-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-xxl-5{margin-right:3rem !important;margin-left:3rem !important}.mx-xxl-auto{margin-right:auto !important;margin-left:auto !important}.my-xxl-0{margin-top:0 !important;margin-bottom:0 !important}.my-xxl-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-xxl-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-xxl-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-xxl-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-xxl-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-xxl-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-xxl-0{margin-top:0 !important}.mt-xxl-1{margin-top:.25rem !important}.mt-xxl-2{margin-top:.5rem !important}.mt-xxl-3{margin-top:1rem !important}.mt-xxl-4{margin-top:1.5rem !important}.mt-xxl-5{margin-top:3rem !important}.mt-xxl-auto{margin-top:auto !important}.me-xxl-0{margin-right:0 !important}.me-xxl-1{margin-right:.25rem !important}.me-xxl-2{margin-right:.5rem !important}.me-xxl-3{margin-right:1rem !important}.me-xxl-4{margin-right:1.5rem !important}.me-xxl-5{margin-right:3rem !important}.me-xxl-auto{margin-right:auto !important}.mb-xxl-0{margin-bottom:0 !important}.mb-xxl-1{margin-bottom:.25rem !important}.mb-xxl-2{margin-bottom:.5rem !important}.mb-xxl-3{margin-bottom:1rem !important}.mb-xxl-4{margin-bottom:1.5rem !important}.mb-xxl-5{margin-bottom:3rem !important}.mb-xxl-auto{margin-bottom:auto !important}.ms-xxl-0{margin-left:0 !important}.ms-xxl-1{margin-left:.25rem !important}.ms-xxl-2{margin-left:.5rem !important}.ms-xxl-3{margin-left:1rem !important}.ms-xxl-4{margin-left:1.5rem !important}.ms-xxl-5{margin-left:3rem !important}.ms-xxl-auto{margin-left:auto !important}.p-xxl-0{padding:0 !important}.p-xxl-1{padding:.25rem !important}.p-xxl-2{padding:.5rem !important}.p-xxl-3{padding:1rem !important}.p-xxl-4{padding:1.5rem !important}.p-xxl-5{padding:3rem !important}.px-xxl-0{padding-right:0 !important;padding-left:0 !important}.px-xxl-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-xxl-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-xxl-3{padding-right:1rem !important;padding-left:1rem !important}.px-xxl-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-xxl-5{padding-right:3rem !important;padding-left:3rem !important}.py-xxl-0{padding-top:0 !important;padding-bottom:0 !important}.py-xxl-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-xxl-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-xxl-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-xxl-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-xxl-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-xxl-0{padding-top:0 !important}.pt-xxl-1{padding-top:.25rem !important}.pt-xxl-2{padding-top:.5rem !important}.pt-xxl-3{padding-top:1rem !important}.pt-xxl-4{padding-top:1.5rem !important}.pt-xxl-5{padding-top:3rem !important}.pe-xxl-0{padding-right:0 !important}.pe-xxl-1{padding-right:.25rem !important}.pe-xxl-2{padding-right:.5rem !important}.pe-xxl-3{padding-right:1rem !important}.pe-xxl-4{padding-right:1.5rem !important}.pe-xxl-5{padding-right:3rem !important}.pb-xxl-0{padding-bottom:0 !important}.pb-xxl-1{padding-bottom:.25rem !important}.pb-xxl-2{padding-bottom:.5rem !important}.pb-xxl-3{padding-bottom:1rem !important}.pb-xxl-4{padding-bottom:1.5rem !important}.pb-xxl-5{padding-bottom:3rem !important}.ps-xxl-0{padding-left:0 !important}.ps-xxl-1{padding-left:.25rem !important}.ps-xxl-2{padding-left:.5rem !important}.ps-xxl-3{padding-left:1rem !important}.ps-xxl-4{padding-left:1.5rem !important}.ps-xxl-5{padding-left:3rem !important}.gap-xxl-0{gap:0 !important}.gap-xxl-1{gap:.25rem !important}.gap-xxl-2{gap:.5rem !important}.gap-xxl-3{gap:1rem !important}.gap-xxl-4{gap:1.5rem !important}.gap-xxl-5{gap:3rem !important}.text-xxl-start{text-align:left !important}.text-xxl-end{text-align:right !important}.text-xxl-center{text-align:center !important}}.bg-default{color:#000}.bg-primary{color:#fff}.bg-secondary{color:#fff}.bg-success{color:#fff}.bg-info{color:#000}.bg-warning{color:#000}.bg-danger{color:#fff}.bg-light{color:#000}.bg-dark{color:#fff}@media (min-width: 1200px){.fs-1{font-size:2.5rem !important}.fs-2{font-size:2rem !important}.fs-3{font-size:1.75rem !important}.fs-4{font-size:1.5rem !important}}@media print{.d-print-inline{display:inline !important}.d-print-inline-block{display:inline-block !important}.d-print-block{display:block !important}.d-print-grid{display:grid !important}.d-print-table{display:table !important}.d-print-table-row{display:table-row !important}.d-print-table-cell{display:table-cell !important}.d-print-flex{display:flex !important}.d-print-inline-flex{display:inline-flex !important}.d-print-none{display:none !important}}.table th[align=left]{text-align:left}.table th[align=right]{text-align:right}.table th[align=center]{text-align:center}.well{display:block;background-color:rgba(0,0,0,0.03);color:#212529;padding:1rem;border-radius:.375rem}.well-lg{padding:1.5rem;border-radius:.5rem}.well-sm{padding:0.5rem;border-radius:.25rem}.draggable .well{background-color:#f7f7f7}.dropdown-menu>li.active>a{color:#fff;text-decoration:none;background-color:#0d6efd}.navbar:not(.fixed-bottom):not(.navbar-fixed-bottom):not(.navbar-fixed-bottom){margin-bottom:20px}ul.nav.navbar-nav{flex:1;-webkit-flex:1}ul.nav.navbar-nav.navbar-right{flex:unset;-webkit-flex:unset;display:flex;display:-webkit-flex;justify-content:flex-end;-webkit-justify-content:flex-end}.navbar.navbar-default{background-color:#f8f9fa !important}.navbar.navbar-inverse{background-color:#212529 !important}.navbar-toggle>.icon-bar{display:none}@media (max-width: 575.98px){.navbar-header{width:100%}.navbar-header .navbar-toggle{float:right}}.nav-tabs>li.active>a{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-pills>li.active>a{color:#fff;background-color:#0d6efd}.nav-stacked{flex-direction:column;-webkit-flex-direction:column}.progress-bar-default{background-color:#dee2e6;color:#000}.progress-bar-primary{background-color:#0d6efd;color:#fff}.progress-bar-secondary{background-color:#6c757d;color:#fff}.progress-bar-success{background-color:#198754;color:#fff}.progress-bar-info{background-color:#0dcaf0;color:#000}.progress-bar-warning{background-color:#ffc107;color:#000}.progress-bar-danger{background-color:#dc3545;color:#fff}.progress-bar-light{background-color:#f8f9fa;color:#000}.progress-bar-dark{background-color:#212529;color:#fff}@font-face{font-family:'Glyphicons Halflings';src:url("fonts/bootstrap/glyphicons-halflings-regular.eot");src:url("fonts/bootstrap/glyphicons-halflings-regular.eot?#iefix") format("embedded-opentype"),url("fonts/bootstrap/glyphicons-halflings-regular.woff2") format("woff2"),url("fonts/bootstrap/glyphicons-halflings-regular.woff") format("woff"),url("fonts/bootstrap/glyphicons-halflings-regular.ttf") format("truetype"),url("fonts/bootstrap/glyphicons-halflings-regular.svg#glyphicons_halflingsregular") format("svg")}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}.form-group{margin-bottom:1rem}.input-daterange .input-group-addon.input-group-prepend.input-group-append{padding:inherit;line-height:inherit;text-shadow:inherit;border-width:0}.input-daterange .input-group-addon.input-group-prepend.input-group-append .input-group-text{border-radius:0}pre.shiny-code{padding:0.5rem}h1,.h1,h2,.h2,h3,.h3{margin-top:1.5rem}h4,.h4,h5,.h5,h6,.h6{margin-top:1rem}.card,.well{margin-bottom:1rem}.card .card-body+.card-body,.well .card-body+.card-body{padding-top:0}.card .card-body,.well .card-body{overflow:auto}.card .card-body p,.well .card-body p,.card .card-body h1,.well .card-body h1,.card .card-body .h1,.well .card-body .h1,.card .card-body h2,.well .card-body h2,.card .card-body .h2,.well .card-body .h2,.card .card-body h3,.well .card-body h3,.card .card-body .h3,.well .card-body .h3,.card .card-body h4,.well .card-body h4,.card .card-body .h4,.well .card-body .h4,.card .card-body h5,.well .card-body h5,.card .card-body .h5,.well .card-body .h5,.card .card-body h6,.well .card-body h6,.card .card-body .h6,.well .card-body .h6{margin-top:0}.card .card-body p:last-child,.well .card-body p:last-child,.card .card-body h1:last-child,.well .card-body h1:last-child,.card .card-body .h1:last-child,.well .card-body .h1:last-child,.card .card-body h2:last-child,.well .card-body h2:last-child,.card .card-body .h2:last-child,.well .card-body .h2:last-child,.card .card-body h3:last-child,.well .card-body h3:last-child,.card .card-body .h3:last-child,.well .card-body .h3:last-child,.card .card-body h4:last-child,.well .card-body h4:last-child,.card .card-body .h4:last-child,.well .card-body .h4:last-child,.card .card-body h5:last-child,.well .card-body h5:last-child,.card .card-body .h5:last-child,.well .card-body .h5:last-child,.card .card-body h6:last-child,.well .card-body h6:last-child,.card .card-body .h6:last-child,.well .card-body .h6:last-child{margin-bottom:0}.card .card-body,.well .card-body{max-height:var(--bslib-card-body-max-height, none)}.card.bslib-full-screen>.card-body,.bslib-full-screen.well>.card-body{max-height:var(--bslib-card-body-max-height-full-screen, none)}.card .card-header .form-group,.well .card-header .form-group{margin-bottom:0}.card .card-header .selectize-control,.well .card-header .selectize-control{margin-bottom:0}.card .card-header .selectize-control .item,.well .card-header .selectize-control .item{margin-right:1.15rem}.card .card-footer,.well .card-footer{margin-top:auto}.card .bslib-card-title,.well .bslib-card-title{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center}.card .bslib-card-title .nav,.well .bslib-card-title .nav{margin-left:auto}.card .tab-content>.tab-pane.html-fill-container,.well .tab-content>.tab-pane.html-fill-container{display:none}.card .tab-content>.active.html-fill-container,.well .tab-content>.active.html-fill-container{display:flex}.card .tab-content.html-fill-container,.well .tab-content.html-fill-container{padding:0}.bslib-full-screen{position:fixed;inset:3.5rem 1rem 1rem;height:auto !important;width:auto !important;z-index:1070}.bslib-full-screen-enter{display:none;position:absolute;bottom:1px;right:3px;margin:0.5rem;padding:0.55rem !important;font-size:.8rem;cursor:pointer;opacity:.6;color:rgba(var(--bs-body-bg-rgb), 1);z-index:1070}.bslib-full-screen-enter:hover{opacity:1}.card:hover:not(.bslib-full-screen) .bslib-full-screen-enter,.well:hover:not(.bslib-full-screen) .bslib-full-screen-enter{display:block}@media (max-width: 575.98px){.bslib-full-screen-enter{display:none !important}}.bslib-full-screen-exit{position:relative;top:1.35rem;font-size:0.9rem;cursor:pointer;text-decoration:none;display:flex;float:right;margin-right:2.15rem;align-items:center;color:rgba(var(--bs-body-bg-rgb), 0.8)}.bslib-full-screen-exit:hover{color:rgba(var(--bs-body-bg-rgb), 1)}.bslib-full-screen-exit svg{margin-left:0.5rem;font-size:1.5rem}#bslib-full-screen-overlay{position:fixed;inset:0;background-color:rgba(var(--bs-body-color-rgb), 0.6);z-index:1069}.bslib-value-box .value-box-grid{grid-template-columns:var(--bslib-value-box-widths)}.bslib-value-box .value-box-showcase{align-items:center;justify-content:center;margin-top:auto;margin-bottom:auto;padding:1rem;max-height:var(--bslib-value-box-max-height)}.bslib-value-box .value-box-showcase .bi,.bslib-value-box .value-box-showcase .fa{opacity:.85}.bslib-value-box .value-box-showcase .bi{font-size:5rem}.bslib-value-box .value-box-showcase .fa{font-size:4rem}.bslib-value-box .value-box-showcase.showcase-top-right{align-items:end;padding-left:0;padding-bottom:0}.bslib-value-box .value-box-area{justify-content:center;padding:1.5rem 1rem;font-size:.9rem;font-weight:500}.bslib-value-box .value-box-area *{color:inherit;margin-bottom:0;margin-top:0}.bslib-value-box .value-box-area.border-start{border-color:rgba(222,226,230,0.3) !important}.bslib-value-box.bslib-full-screen .value-box-grid{grid-template-columns:var(--bslib-value-box-widths-full-screen)}.bslib-value-box.bslib-full-screen .value-box-showcase{max-height:var(--bslib-value-box-max-height-full-screen)}.bslib-value-box:not(.bslib-full-screen) .value-box-showcase.showcase-top-right{margin-top:0}@media (max-width: 575.98px){.bslib-value-box .value-box-grid{grid-template-columns:var(--bslib-value-box-widths) !important}}.bslib-column-wrap{display:grid !important;gap:1rem;height:var(--bslib-column-wrap-height)}.bslib-column-wrap .card,.bslib-column-wrap .well{margin-bottom:0}@media (max-width: 575.98px){.bslib-column-wrap{grid-template-columns:1fr !important;height:var(--bslib-column-wrap-height-mobile)}}@media (min-width: 576px){.nav:not(.nav-hidden){display:flex !important;display:-webkit-flex !important}.nav:not(.nav-hidden):not(.nav-stacked):not(.flex-column){float:none !important}.nav:not(.nav-hidden):not(.nav-stacked):not(.flex-column)>.bslib-nav-spacer{margin-left:auto !important}.nav:not(.nav-hidden):not(.nav-stacked):not(.flex-column)>.form-inline{margin-top:auto;margin-bottom:auto}.nav.nav-stacked:not(.nav-hidden){flex-direction:column;-webkit-flex-direction:column;height:100%}.nav.nav-stacked:not(.nav-hidden)>.bslib-nav-spacer{margin-top:auto !important}}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zAkw.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zAkw.woff
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rAkw.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rAkw.woff
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsiH0B4gaVQ.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsiH0B4gaVQ.woff
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdo.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdo.woff
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtr6Ew9.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtr6Ew9.woff
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/4iCv6KVjbNBYlgoCxCvjsGyL.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/4iCv6KVjbNBYlgoCxCvjsGyL.woff
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/pe03MImSLYBIv1o4X1M8cc9iB_5p.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/pe03MImSLYBIv1o4X1M8cc9iB_5p.woff
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/XRXI3I6Li01BKofiOc5wtlZ2di8HDLshRTA.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/XRXI3I6Li01BKofiOc5wtlZ2di8HDLshRTA.woff
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdo.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdo.woff
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/CSR64z1Qlv-GDxkbKVQ_fOAKSw.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/CSR64z1Qlv-GDxkbKVQ_fOAKSw.woff
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCuM70w9.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCuM70w9.woff
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/XRXI3I6Li01BKofiOc5wtlZ2di8HDFwmRTA.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/XRXI3I6Li01BKofiOc5wtlZ2di8HDFwmRTA.woff
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuI6fMZs.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuI6fMZs.woff
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/CSR64z1Qlv-GDxkbKVQ_TOQ.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/CSR64z1Qlv-GDxkbKVQ_TOQ.woff
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/4iCs6KVjbNBYlgo6ew.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/4iCs6KVjbNBYlgo6ew.woff
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/S6u8w4BMUTPHjxswWA.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/S6u8w4BMUTPHjxswWA.woff
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1y4k.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1y4k.woff
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0RkyFjaVQ.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0RkyFjaVQ.woff
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/4iCs6KVjbNBYlgoKfw7w.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/4iCs6KVjbNBYlgoKfw7w.woff
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/CSR54z1Qlv-GDxkbKVQ_dFsvWNRevw.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/CSR54z1Qlv-GDxkbKVQ_dFsvWNRevw.woff
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuFuYMZs.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuFuYMZs.woff
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/S6u9w4BMUTPHh7USSwiPHw.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/S6u9w4BMUTPHh7USSwiPHw.woff
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsiH0C4k.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsiH0C4k.woff
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/S6u9w4BMUTPHh6UVSwiPHw.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/S6u9w4BMUTPHh6UVSwiPHw.woff
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/1Ptxg8zYS_SKggPN4iEgvnHyvveLxVvaorCIPrc.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/1Ptxg8zYS_SKggPN4iEgvnHyvveLxVvaorCIPrc.woff
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7j.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7j.woff
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/QGYpz_kZZAGCONcK2A4bGOj8mNhL.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/QGYpz_kZZAGCONcK2A4bGOj8mNhL.woff
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk5hkWVAexg.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk5hkWVAexg.woff
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/CSR54z1Qlv-GDxkbKVQ_dFsvaNA.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/CSR54z1Qlv-GDxkbKVQ_dFsvaNA.woff
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0RkyFjWVAexg.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0RkyFjWVAexg.woff
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/KFOlCnqEu92Fr1MmEU9vAA.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/KFOlCnqEu92Fr1MmEU9vAA.woff
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/4iCv6KVjbNBYlgoCxCvTtA.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/4iCv6KVjbNBYlgoCxCvTtA.woff
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/S6u8w4BMUTPHjxsAXC-s.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/S6u8w4BMUTPHjxsAXC-s.woff
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/KFOlCnqEu92Fr1MmEU9fBBc-.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/KFOlCnqEu92Fr1MmEU9fBBc-.woff
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/1Ptxg8zYS_SKggPN4iEgvnHyvveLxVs9pbCIPrc.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/1Ptxg8zYS_SKggPN4iEgvnHyvveLxVs9pbCIPrc.woff
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3aPA.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3aPA.woff
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/KFOmCnqEu92Fr1Mu4mxM.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/KFOmCnqEu92Fr1Mu4mxM.woff
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/KFOlCnqEu92Fr1MmWUlvAA.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/KFOlCnqEu92Fr1MmWUlvAA.woff
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/KFOlCnqEu92Fr1MmWUlfBBc-.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/KFOlCnqEu92Fr1MmWUlfBBc-.woff
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/q5uGsou0JOdh94bfvQlr.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/q5uGsou0JOdh94bfvQlr.woff
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtZ6Ew9.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtZ6Ew9.woff
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/XRXI3I6Li01BKofiOc5wtlZ2di8HDGUmRTA.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/XRXI3I6Li01BKofiOc5wtlZ2di8HDGUmRTA.woff
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk8ZkaVQ.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk8ZkaVQ.woff
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/KFOmCnqEu92Fr1Me5g.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/KFOmCnqEu92Fr1Me5g.woff
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/KFOlCnqEu92Fr1MmSU5vAA.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/KFOlCnqEu92Fr1MmSU5vAA.woff
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/S6u9w4BMUTPHh7USeww.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/S6u9w4BMUTPHh7USeww.woff
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/KFOlCnqEu92Fr1MmSU5fBBc-.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/KFOlCnqEu92Fr1MmSU5fBBc-.woff
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/S6u9w4BMUTPHh6UVeww.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/S6u9w4BMUTPHh6UVeww.woff
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/S6uyw4BMUTPHvxo.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/S6uyw4BMUTPHvxo.woff
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0C4k.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0C4k.woff
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuLyfMZs.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuLyfMZs.woff
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B4gaVQ.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B4gaVQ.woff
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPa7j.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPa7j.woff
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk8ZkWVAexg.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk8ZkWVAexg.woff
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vAkw.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vAkw.woff
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk5hkaVQ.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk5hkaVQ.woff
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/S6uyw4BMUTPHjx4wWA.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/S6uyw4BMUTPHjx4wWA.woff
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/pe0qMImSLYBIv1o4X1M8cfe5.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/pe0qMImSLYBIv1o4X1M8cfe5.woff
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDQ.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDQ.woff
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1x4gaVQ.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1x4gaVQ.woff
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/bs3compat/_dropdown_compat.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/bs3compat/_dropdown_compat.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/bs3compat/_dropdown_compat.scss	(revision 3762)
@@ -0,0 +1,23 @@
+// # DROPDOWNS
+//
+// In bs3, dropdown menus are .dropdown-menu>li.active>a
+// In bs4, dropdown menus are .dropdown-menu>.dropdown-item.active
+//
+// Also, bs3 dropdowns within tabs/pills are interfered with in bs4 by
+// selectors like `.bs-tabs li>a`, making menu items look like tabs.
+
+.dropdown-menu>li>a {
+  @extend .dropdown-item;
+}
+.dropdown-menu>li.active>a {
+  // This @extend works, but it litters `.dropdown-menu>li.active>a` all over
+  // the bootstrap.css output because it's such a common class. Instead, we
+  // copy these few properties from from _dropdown.scss.
+  // @extend .active;
+  color: $dropdown-link-active-color;
+  text-decoration: none;
+  @include gradient-bg($dropdown-link-active-bg);
+}
+.dropdown-menu>li.divider {
+  @extend .dropdown-divider;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/bs3compat/_glyphicons.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/bs3compat/_glyphicons.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/bs3compat/_glyphicons.scss	(revision 3762)
@@ -0,0 +1,313 @@
+// This file is auto-generated by tools/glyphicons.R
+// Consider making edits there before editing this file.
+$bootstrap-sass-asset-helper: false;
+$icon-font-name: 'glyphicons-halflings-regular';
+$icon-font-svg-id: 'glyphicons_halflingsregular';
+$icon-font-path: 'fonts/bootstrap/';
+//
+// Glyphicons for Bootstrap
+//
+// Since icons are fonts, they can be placed anywhere text is placed and are
+// thus automatically sized to match the surrounding child. To use, create an
+// inline element with the appropriate classes, like so:
+//
+// <a href="#"><span class="glyphicon glyphicon-star"></span> Star</a>
+
+@at-root {
+  // Import the fonts
+  @font-face {
+    font-family: 'Glyphicons Halflings';
+    src: url(if($bootstrap-sass-asset-helper, twbs-font-path('#{$icon-font-path}#{$icon-font-name}.eot'), '#{$icon-font-path}#{$icon-font-name}.eot'));
+    src: url(if($bootstrap-sass-asset-helper, twbs-font-path('#{$icon-font-path}#{$icon-font-name}.eot?#iefix'), '#{$icon-font-path}#{$icon-font-name}.eot?#iefix')) format('embedded-opentype'),
+         url(if($bootstrap-sass-asset-helper, twbs-font-path('#{$icon-font-path}#{$icon-font-name}.woff2'), '#{$icon-font-path}#{$icon-font-name}.woff2')) format('woff2'),
+         url(if($bootstrap-sass-asset-helper, twbs-font-path('#{$icon-font-path}#{$icon-font-name}.woff'), '#{$icon-font-path}#{$icon-font-name}.woff')) format('woff'),
+         url(if($bootstrap-sass-asset-helper, twbs-font-path('#{$icon-font-path}#{$icon-font-name}.ttf'), '#{$icon-font-path}#{$icon-font-name}.ttf')) format('truetype'),
+         url(if($bootstrap-sass-asset-helper, twbs-font-path('#{$icon-font-path}#{$icon-font-name}.svg##{$icon-font-svg-id}'), '#{$icon-font-path}#{$icon-font-name}.svg##{$icon-font-svg-id}')) format('svg');
+  }
+}
+
+// Catchall baseclass
+.glyphicon {
+  position: relative;
+  top: 1px;
+  display: inline-block;
+  font-family: 'Glyphicons Halflings';
+  font-style: normal;
+  font-weight: normal;
+  line-height: 1;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+
+// Individual icons
+.glyphicon-asterisk               { &:before { content: "\2a"; } }
+.glyphicon-plus                   { &:before { content: "\2b"; } }
+.glyphicon-euro,
+.glyphicon-eur                    { &:before { content: "\20ac"; } }
+.glyphicon-minus                  { &:before { content: "\2212"; } }
+.glyphicon-cloud                  { &:before { content: "\2601"; } }
+.glyphicon-envelope               { &:before { content: "\2709"; } }
+.glyphicon-pencil                 { &:before { content: "\270f"; } }
+.glyphicon-glass                  { &:before { content: "\e001"; } }
+.glyphicon-music                  { &:before { content: "\e002"; } }
+.glyphicon-search                 { &:before { content: "\e003"; } }
+.glyphicon-heart                  { &:before { content: "\e005"; } }
+.glyphicon-star                   { &:before { content: "\e006"; } }
+.glyphicon-star-empty             { &:before { content: "\e007"; } }
+.glyphicon-user                   { &:before { content: "\e008"; } }
+.glyphicon-film                   { &:before { content: "\e009"; } }
+.glyphicon-th-large               { &:before { content: "\e010"; } }
+.glyphicon-th                     { &:before { content: "\e011"; } }
+.glyphicon-th-list                { &:before { content: "\e012"; } }
+.glyphicon-ok                     { &:before { content: "\e013"; } }
+.glyphicon-remove                 { &:before { content: "\e014"; } }
+.glyphicon-zoom-in                { &:before { content: "\e015"; } }
+.glyphicon-zoom-out               { &:before { content: "\e016"; } }
+.glyphicon-off                    { &:before { content: "\e017"; } }
+.glyphicon-signal                 { &:before { content: "\e018"; } }
+.glyphicon-cog                    { &:before { content: "\e019"; } }
+.glyphicon-trash                  { &:before { content: "\e020"; } }
+.glyphicon-home                   { &:before { content: "\e021"; } }
+.glyphicon-file                   { &:before { content: "\e022"; } }
+.glyphicon-time                   { &:before { content: "\e023"; } }
+.glyphicon-road                   { &:before { content: "\e024"; } }
+.glyphicon-download-alt           { &:before { content: "\e025"; } }
+.glyphicon-download               { &:before { content: "\e026"; } }
+.glyphicon-upload                 { &:before { content: "\e027"; } }
+.glyphicon-inbox                  { &:before { content: "\e028"; } }
+.glyphicon-play-circle            { &:before { content: "\e029"; } }
+.glyphicon-repeat                 { &:before { content: "\e030"; } }
+.glyphicon-refresh                { &:before { content: "\e031"; } }
+.glyphicon-list-alt               { &:before { content: "\e032"; } }
+.glyphicon-lock                   { &:before { content: "\e033"; } }
+.glyphicon-flag                   { &:before { content: "\e034"; } }
+.glyphicon-headphones             { &:before { content: "\e035"; } }
+.glyphicon-volume-off             { &:before { content: "\e036"; } }
+.glyphicon-volume-down            { &:before { content: "\e037"; } }
+.glyphicon-volume-up              { &:before { content: "\e038"; } }
+.glyphicon-qrcode                 { &:before { content: "\e039"; } }
+.glyphicon-barcode                { &:before { content: "\e040"; } }
+.glyphicon-tag                    { &:before { content: "\e041"; } }
+.glyphicon-tags                   { &:before { content: "\e042"; } }
+.glyphicon-book                   { &:before { content: "\e043"; } }
+.glyphicon-bookmark               { &:before { content: "\e044"; } }
+.glyphicon-print                  { &:before { content: "\e045"; } }
+.glyphicon-camera                 { &:before { content: "\e046"; } }
+.glyphicon-font                   { &:before { content: "\e047"; } }
+.glyphicon-bold                   { &:before { content: "\e048"; } }
+.glyphicon-italic                 { &:before { content: "\e049"; } }
+.glyphicon-text-height            { &:before { content: "\e050"; } }
+.glyphicon-text-width             { &:before { content: "\e051"; } }
+.glyphicon-align-left             { &:before { content: "\e052"; } }
+.glyphicon-align-center           { &:before { content: "\e053"; } }
+.glyphicon-align-right            { &:before { content: "\e054"; } }
+.glyphicon-align-justify          { &:before { content: "\e055"; } }
+.glyphicon-list                   { &:before { content: "\e056"; } }
+.glyphicon-indent-left            { &:before { content: "\e057"; } }
+.glyphicon-indent-right           { &:before { content: "\e058"; } }
+.glyphicon-facetime-video         { &:before { content: "\e059"; } }
+.glyphicon-picture                { &:before { content: "\e060"; } }
+.glyphicon-map-marker             { &:before { content: "\e062"; } }
+.glyphicon-adjust                 { &:before { content: "\e063"; } }
+.glyphicon-tint                   { &:before { content: "\e064"; } }
+.glyphicon-edit                   { &:before { content: "\e065"; } }
+.glyphicon-share                  { &:before { content: "\e066"; } }
+.glyphicon-check                  { &:before { content: "\e067"; } }
+.glyphicon-move                   { &:before { content: "\e068"; } }
+.glyphicon-step-backward          { &:before { content: "\e069"; } }
+.glyphicon-fast-backward          { &:before { content: "\e070"; } }
+.glyphicon-backward               { &:before { content: "\e071"; } }
+.glyphicon-play                   { &:before { content: "\e072"; } }
+.glyphicon-pause                  { &:before { content: "\e073"; } }
+.glyphicon-stop                   { &:before { content: "\e074"; } }
+.glyphicon-forward                { &:before { content: "\e075"; } }
+.glyphicon-fast-forward           { &:before { content: "\e076"; } }
+.glyphicon-step-forward           { &:before { content: "\e077"; } }
+.glyphicon-eject                  { &:before { content: "\e078"; } }
+.glyphicon-chevron-left           { &:before { content: "\e079"; } }
+.glyphicon-chevron-right          { &:before { content: "\e080"; } }
+.glyphicon-plus-sign              { &:before { content: "\e081"; } }
+.glyphicon-minus-sign             { &:before { content: "\e082"; } }
+.glyphicon-remove-sign            { &:before { content: "\e083"; } }
+.glyphicon-ok-sign                { &:before { content: "\e084"; } }
+.glyphicon-question-sign          { &:before { content: "\e085"; } }
+.glyphicon-info-sign              { &:before { content: "\e086"; } }
+.glyphicon-screenshot             { &:before { content: "\e087"; } }
+.glyphicon-remove-circle          { &:before { content: "\e088"; } }
+.glyphicon-ok-circle              { &:before { content: "\e089"; } }
+.glyphicon-ban-circle             { &:before { content: "\e090"; } }
+.glyphicon-arrow-left             { &:before { content: "\e091"; } }
+.glyphicon-arrow-right            { &:before { content: "\e092"; } }
+.glyphicon-arrow-up               { &:before { content: "\e093"; } }
+.glyphicon-arrow-down             { &:before { content: "\e094"; } }
+.glyphicon-share-alt              { &:before { content: "\e095"; } }
+.glyphicon-resize-full            { &:before { content: "\e096"; } }
+.glyphicon-resize-small           { &:before { content: "\e097"; } }
+.glyphicon-exclamation-sign       { &:before { content: "\e101"; } }
+.glyphicon-gift                   { &:before { content: "\e102"; } }
+.glyphicon-leaf                   { &:before { content: "\e103"; } }
+.glyphicon-fire                   { &:before { content: "\e104"; } }
+.glyphicon-eye-open               { &:before { content: "\e105"; } }
+.glyphicon-eye-close              { &:before { content: "\e106"; } }
+.glyphicon-warning-sign           { &:before { content: "\e107"; } }
+.glyphicon-plane                  { &:before { content: "\e108"; } }
+.glyphicon-calendar               { &:before { content: "\e109"; } }
+.glyphicon-random                 { &:before { content: "\e110"; } }
+.glyphicon-comment                { &:before { content: "\e111"; } }
+.glyphicon-magnet                 { &:before { content: "\e112"; } }
+.glyphicon-chevron-up             { &:before { content: "\e113"; } }
+.glyphicon-chevron-down           { &:before { content: "\e114"; } }
+.glyphicon-retweet                { &:before { content: "\e115"; } }
+.glyphicon-shopping-cart          { &:before { content: "\e116"; } }
+.glyphicon-folder-close           { &:before { content: "\e117"; } }
+.glyphicon-folder-open            { &:before { content: "\e118"; } }
+.glyphicon-resize-vertical        { &:before { content: "\e119"; } }
+.glyphicon-resize-horizontal      { &:before { content: "\e120"; } }
+.glyphicon-hdd                    { &:before { content: "\e121"; } }
+.glyphicon-bullhorn               { &:before { content: "\e122"; } }
+.glyphicon-bell                   { &:before { content: "\e123"; } }
+.glyphicon-certificate            { &:before { content: "\e124"; } }
+.glyphicon-thumbs-up              { &:before { content: "\e125"; } }
+.glyphicon-thumbs-down            { &:before { content: "\e126"; } }
+.glyphicon-hand-right             { &:before { content: "\e127"; } }
+.glyphicon-hand-left              { &:before { content: "\e128"; } }
+.glyphicon-hand-up                { &:before { content: "\e129"; } }
+.glyphicon-hand-down              { &:before { content: "\e130"; } }
+.glyphicon-circle-arrow-right     { &:before { content: "\e131"; } }
+.glyphicon-circle-arrow-left      { &:before { content: "\e132"; } }
+.glyphicon-circle-arrow-up        { &:before { content: "\e133"; } }
+.glyphicon-circle-arrow-down      { &:before { content: "\e134"; } }
+.glyphicon-globe                  { &:before { content: "\e135"; } }
+.glyphicon-wrench                 { &:before { content: "\e136"; } }
+.glyphicon-tasks                  { &:before { content: "\e137"; } }
+.glyphicon-filter                 { &:before { content: "\e138"; } }
+.glyphicon-briefcase              { &:before { content: "\e139"; } }
+.glyphicon-fullscreen             { &:before { content: "\e140"; } }
+.glyphicon-dashboard              { &:before { content: "\e141"; } }
+.glyphicon-paperclip              { &:before { content: "\e142"; } }
+.glyphicon-heart-empty            { &:before { content: "\e143"; } }
+.glyphicon-link                   { &:before { content: "\e144"; } }
+.glyphicon-phone                  { &:before { content: "\e145"; } }
+.glyphicon-pushpin                { &:before { content: "\e146"; } }
+.glyphicon-usd                    { &:before { content: "\e148"; } }
+.glyphicon-gbp                    { &:before { content: "\e149"; } }
+.glyphicon-sort                   { &:before { content: "\e150"; } }
+.glyphicon-sort-by-alphabet       { &:before { content: "\e151"; } }
+.glyphicon-sort-by-alphabet-alt   { &:before { content: "\e152"; } }
+.glyphicon-sort-by-order          { &:before { content: "\e153"; } }
+.glyphicon-sort-by-order-alt      { &:before { content: "\e154"; } }
+.glyphicon-sort-by-attributes     { &:before { content: "\e155"; } }
+.glyphicon-sort-by-attributes-alt { &:before { content: "\e156"; } }
+.glyphicon-unchecked              { &:before { content: "\e157"; } }
+.glyphicon-expand                 { &:before { content: "\e158"; } }
+.glyphicon-collapse-down          { &:before { content: "\e159"; } }
+.glyphicon-collapse-up            { &:before { content: "\e160"; } }
+.glyphicon-log-in                 { &:before { content: "\e161"; } }
+.glyphicon-flash                  { &:before { content: "\e162"; } }
+.glyphicon-log-out                { &:before { content: "\e163"; } }
+.glyphicon-new-window             { &:before { content: "\e164"; } }
+.glyphicon-record                 { &:before { content: "\e165"; } }
+.glyphicon-save                   { &:before { content: "\e166"; } }
+.glyphicon-open                   { &:before { content: "\e167"; } }
+.glyphicon-saved                  { &:before { content: "\e168"; } }
+.glyphicon-import                 { &:before { content: "\e169"; } }
+.glyphicon-export                 { &:before { content: "\e170"; } }
+.glyphicon-send                   { &:before { content: "\e171"; } }
+.glyphicon-floppy-disk            { &:before { content: "\e172"; } }
+.glyphicon-floppy-saved           { &:before { content: "\e173"; } }
+.glyphicon-floppy-remove          { &:before { content: "\e174"; } }
+.glyphicon-floppy-save            { &:before { content: "\e175"; } }
+.glyphicon-floppy-open            { &:before { content: "\e176"; } }
+.glyphicon-credit-card            { &:before { content: "\e177"; } }
+.glyphicon-transfer               { &:before { content: "\e178"; } }
+.glyphicon-cutlery                { &:before { content: "\e179"; } }
+.glyphicon-header                 { &:before { content: "\e180"; } }
+.glyphicon-compressed             { &:before { content: "\e181"; } }
+.glyphicon-earphone               { &:before { content: "\e182"; } }
+.glyphicon-phone-alt              { &:before { content: "\e183"; } }
+.glyphicon-tower                  { &:before { content: "\e184"; } }
+.glyphicon-stats                  { &:before { content: "\e185"; } }
+.glyphicon-sd-video               { &:before { content: "\e186"; } }
+.glyphicon-hd-video               { &:before { content: "\e187"; } }
+.glyphicon-subtitles              { &:before { content: "\e188"; } }
+.glyphicon-sound-stereo           { &:before { content: "\e189"; } }
+.glyphicon-sound-dolby            { &:before { content: "\e190"; } }
+.glyphicon-sound-5-1              { &:before { content: "\e191"; } }
+.glyphicon-sound-6-1              { &:before { content: "\e192"; } }
+.glyphicon-sound-7-1              { &:before { content: "\e193"; } }
+.glyphicon-copyright-mark         { &:before { content: "\e194"; } }
+.glyphicon-registration-mark      { &:before { content: "\e195"; } }
+.glyphicon-cloud-download         { &:before { content: "\e197"; } }
+.glyphicon-cloud-upload           { &:before { content: "\e198"; } }
+.glyphicon-tree-conifer           { &:before { content: "\e199"; } }
+.glyphicon-tree-deciduous         { &:before { content: "\e200"; } }
+.glyphicon-cd                     { &:before { content: "\e201"; } }
+.glyphicon-save-file              { &:before { content: "\e202"; } }
+.glyphicon-open-file              { &:before { content: "\e203"; } }
+.glyphicon-level-up               { &:before { content: "\e204"; } }
+.glyphicon-copy                   { &:before { content: "\e205"; } }
+.glyphicon-paste                  { &:before { content: "\e206"; } }
+// The following 2 Glyphicons are omitted for the time being because
+// they currently use Unicode codepoints that are outside the
+// Basic Multilingual Plane (BMP). Older buggy versions of WebKit can't handle
+// non-BMP codepoints in CSS string escapes, and thus can't display these two icons.
+// Notably, the bug affects some older versions of the Android Browser.
+// More info: https://github.com/twbs/bootstrap/issues/10106
+// .glyphicon-door                   { &:before { content: "\1f6aa"; } }
+// .glyphicon-key                    { &:before { content: "\1f511"; } }
+.glyphicon-alert                  { &:before { content: "\e209"; } }
+.glyphicon-equalizer              { &:before { content: "\e210"; } }
+.glyphicon-king                   { &:before { content: "\e211"; } }
+.glyphicon-queen                  { &:before { content: "\e212"; } }
+.glyphicon-pawn                   { &:before { content: "\e213"; } }
+.glyphicon-bishop                 { &:before { content: "\e214"; } }
+.glyphicon-knight                 { &:before { content: "\e215"; } }
+.glyphicon-baby-formula           { &:before { content: "\e216"; } }
+.glyphicon-tent                   { &:before { content: "\26fa"; } }
+.glyphicon-blackboard             { &:before { content: "\e218"; } }
+.glyphicon-bed                    { &:before { content: "\e219"; } }
+.glyphicon-apple                  { &:before { content: "\f8ff"; } }
+.glyphicon-erase                  { &:before { content: "\e221"; } }
+.glyphicon-hourglass              { &:before { content: "\231b"; } }
+.glyphicon-lamp                   { &:before { content: "\e223"; } }
+.glyphicon-duplicate              { &:before { content: "\e224"; } }
+.glyphicon-piggy-bank             { &:before { content: "\e225"; } }
+.glyphicon-scissors               { &:before { content: "\e226"; } }
+.glyphicon-bitcoin                { &:before { content: "\e227"; } }
+.glyphicon-btc                    { &:before { content: "\e227"; } }
+.glyphicon-xbt                    { &:before { content: "\e227"; } }
+.glyphicon-yen                    { &:before { content: "\00a5"; } }
+.glyphicon-jpy                    { &:before { content: "\00a5"; } }
+.glyphicon-ruble                  { &:before { content: "\20bd"; } }
+.glyphicon-rub                    { &:before { content: "\20bd"; } }
+.glyphicon-scale                  { &:before { content: "\e230"; } }
+.glyphicon-ice-lolly              { &:before { content: "\e231"; } }
+.glyphicon-ice-lolly-tasted       { &:before { content: "\e232"; } }
+.glyphicon-education              { &:before { content: "\e233"; } }
+.glyphicon-option-horizontal      { &:before { content: "\e234"; } }
+.glyphicon-option-vertical        { &:before { content: "\e235"; } }
+.glyphicon-menu-hamburger         { &:before { content: "\e236"; } }
+.glyphicon-modal-window           { &:before { content: "\e237"; } }
+.glyphicon-oil                    { &:before { content: "\e238"; } }
+.glyphicon-grain                  { &:before { content: "\e239"; } }
+.glyphicon-sunglasses             { &:before { content: "\e240"; } }
+.glyphicon-text-size              { &:before { content: "\e241"; } }
+.glyphicon-text-color             { &:before { content: "\e242"; } }
+.glyphicon-text-background        { &:before { content: "\e243"; } }
+.glyphicon-object-align-top       { &:before { content: "\e244"; } }
+.glyphicon-object-align-bottom    { &:before { content: "\e245"; } }
+.glyphicon-object-align-horizontal{ &:before { content: "\e246"; } }
+.glyphicon-object-align-left      { &:before { content: "\e247"; } }
+.glyphicon-object-align-vertical  { &:before { content: "\e248"; } }
+.glyphicon-object-align-right     { &:before { content: "\e249"; } }
+.glyphicon-triangle-right         { &:before { content: "\e250"; } }
+.glyphicon-triangle-left          { &:before { content: "\e251"; } }
+.glyphicon-triangle-bottom        { &:before { content: "\e252"; } }
+.glyphicon-triangle-top           { &:before { content: "\e253"; } }
+.glyphicon-console                { &:before { content: "\e254"; } }
+.glyphicon-superscript            { &:before { content: "\e255"; } }
+.glyphicon-subscript              { &:before { content: "\e256"; } }
+.glyphicon-menu-left              { &:before { content: "\e257"; } }
+.glyphicon-menu-right             { &:before { content: "\e258"; } }
+.glyphicon-menu-down              { &:before { content: "\e259"; } }
+.glyphicon-menu-up                { &:before { content: "\e260"; } }
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/bs3compat/_shiny_misc.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/bs3compat/_shiny_misc.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/bs3compat/_shiny_misc.scss	(revision 3762)
@@ -0,0 +1,16 @@
+// For code inside of showcase mode
+// TODO: this should probably ported to shiny itself
+// if and when shiny-showcase.css is ported to sass
+pre.shiny-code {
+  padding: 0.5 * $spacer;
+}
+
+// BS5 changed float-left -> float-start
+@if $bootstrap-version != 4 {
+  .float-left {
+    @extend .float-start;
+  }
+  .float-right {
+    @extend .float-end;
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/bs3compat/_wells.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/bs3compat/_wells.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/bs3compat/_wells.scss	(revision 3762)
@@ -0,0 +1,25 @@
+// Derives from BS3 SASS, but modified to inherit from BS4 vars
+// https://github.com/rstudio/bslib/blob/04925e1/inst/node_modules/bootstrap-sass/assets/stylesheets/bootstrap/_wells.scss#L1
+.well {
+  @extend .card;
+  display: block;
+  background-color: $well-bg;
+  color: $well-color;
+  padding: $card-spacer-x;
+  @include border-radius($border-radius)
+}
+
+// Sizes
+.well-lg {
+  padding: 1.5 * $spacer;
+  @include border-radius($border-radius-lg);
+}
+.well-sm {
+  padding: 0.5 * $spacer;
+  @include border-radius($border-radius-sm);
+}
+
+// For wellPanel() inside absolutePanel()
+.draggable .well {
+  background-color: opaque($body-bg, $well-bg);
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/bs3compat/_defaults.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/bs3compat/_defaults.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/bs3compat/_defaults.scss	(revision 3762)
@@ -0,0 +1,2 @@
+// BS3 had .navbar { margin-bottom: 20px; }
+$navbar-margin-bottom: 20px !default;
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/bs3compat/_nav_compat.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/bs3compat/_nav_compat.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/bs3compat/_nav_compat.scss	(revision 3762)
@@ -0,0 +1,38 @@
+// Fix tab selector borders in bs3.
+.nav-tabs>li,
+.nav-pills>li {
+  @extend .nav-item;
+}
+.nav-tabs>li>a,
+.nav-pills>li>a {
+  @extend .nav-link;
+}
+
+// Active tab/pill.
+//
+// bs3 uses .nav>li.active>a, bs4 uses .nav>li>a.active or .nav>li.show>a.
+//
+// My original approach to this was making .nav>li.active @extend .show, but
+// after a lot of trial and error I could not get it to fully work.
+.nav-tabs>li.active>a {
+  color: $nav-tabs-link-active-color;
+  background-color: $nav-tabs-link-active-bg;
+  border-color: $nav-tabs-link-active-border-color;
+}
+.nav-pills>li.active>a {
+  color: $nav-pills-link-active-color;
+  background-color: $nav-pills-link-active-bg;
+}
+
+// Support vertical pills
+.nav-stacked {
+  // Don't extend the .flex-column utility, it uses !important
+  // @extend .flex-column;
+  flex-direction: column;
+  -webkit-flex-direction: column;
+}
+
+
+.in {
+  @extend .show;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/bs3compat/_progress_compat.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/bs3compat/_progress_compat.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/bs3compat/_progress_compat.scss	(revision 3762)
@@ -0,0 +1,6 @@
+@each $color, $value in $theme-colors {
+  .progress-bar-#{$color} {
+    background-color: $value;
+    color: color-contrast($value);
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/bs3compat/_declarations.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/bs3compat/_declarations.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/bs3compat/_declarations.scss	(revision 3762)
@@ -0,0 +1,4 @@
+// Cards are white by default, but we want a smarter default for .well
+// that it appears gray by default
+$well-bg: $card-cap-bg !default;
+$well-color: $body-color !default;
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/bs3compat/_shiny_input.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/bs3compat/_shiny_input.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/bs3compat/_shiny_input.scss	(revision 3762)
@@ -0,0 +1,48 @@
+// Dropped in BS5, but this seems pretty fundamental?
+$form-group-margin-bottom: 1rem !default;
+.form-group {
+  margin-bottom: $form-group-margin-bottom;
+}
+
+// The @extends here add a lot of bloat to version=4 (& it's not entirely correct)
+// Instead of fixing, consider this deprecated, and for BS5, we'll modify
+// their selectors directly to accomodate shiny
+@if $bootstrap-version == 4 {
+  .shiny-input-checkboxgroup, .shiny-input-radiogroup {
+    // TODO: this is pretty expensive!
+    .checkbox, .radio {
+      @extend .form-check;
+      label {
+        @extend .form-check-label;
+      }
+      label > input {
+        @extend .form-check-input;
+      }
+    }
+
+  // Since these inline classes don't have a proper div container
+  // (they're labels), we borrow just the styling we need from
+  // .form-check-inline
+  // https://github.com/rstudio/bs4/blob/7aadd19/inst/node_modules/bootstrap/scss/_forms.scss#L227-L240
+    .checkbox-inline, .radio-inline {
+      padding-left: 0;
+      margin-right: $form-check-inline-margin-x;
+
+      label > input {
+        margin-top: 0;
+        margin-right: $form-check-inline-input-margin-x;
+        margin-bottom: 0;
+      }
+    }
+  }
+}
+
+.input-daterange .input-group-addon.input-group-prepend.input-group-append {
+  padding: inherit;
+  line-height: inherit;
+  text-shadow: inherit;
+  border-width: 0;
+  .input-group-text {
+    border-radius: 0;
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/bs3compat/_rules.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/bs3compat/_rules.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/bs3compat/_rules.scss	(revision 3762)
@@ -0,0 +1,13 @@
+@import "wells";
+@import "help_text";
+@import "dropdown_compat";
+@import "navbar_compat";
+@import "nav_compat";
+@import "progress_compat";
+
+@import "glyphicons";
+
+@import "shiny_input";
+@import "shiny_misc";
+
+@import "headers";
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/bs3compat/_headers.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/bs3compat/_headers.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/bs3compat/_headers.scss	(revision 3762)
@@ -0,0 +1,10 @@
+// BS3 -> BS4 saw a removal of margin-top on headers,
+// which is a pretty jarring change, expecially for Rmd
+// https://github.com/twbs/bootstrap/blob/f17f882d/dist/css/bootstrap.css#L1219-L1250
+// https://github.com/twbs/bootstrap/blob/4de4874e/scss/_reboot.scss#L82-L89
+h1, h2, h3 {
+  margin-top: 1.5 * $spacer;
+}
+h4, h5, h6 {
+  margin-top: $spacer;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/bs3compat/_help_text.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/bs3compat/_help_text.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/bs3compat/_help_text.scss	(revision 3762)
@@ -0,0 +1,3 @@
+.help-text, .help-block {
+  @extend .form-text; @extend .text-muted;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/bs3compat/_navbar_compat.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/bs3compat/_navbar_compat.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/bs3compat/_navbar_compat.scss	(revision 3762)
@@ -0,0 +1,85 @@
+// bs4 navbars require .navbar-expand[-sm|-md|-lg|-xl], but bs3 navbars
+// don't have them. This selector matches .navbar without .navbar-expand
+// and defaults it to .navbar-expand-sm.
+.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl) {
+  @extend .navbar-expand-sm;
+}
+
+.navbar:not(.fixed-bottom):not(.navbar-fixed-bottom) {
+  margin-bottom: $navbar-margin-bottom;
+}
+
+// Map BS3 navbar positioning to general utilities
+.navbar-fixed-top {
+  @extend .fixed-top;
+}
+.navbar-fixed-bottom {
+  @extend .fixed-bottom;
+}
+.navbar-sticky-top {
+  @extend .sticky-top;
+}
+
+ul.nav.navbar-nav {
+  flex: 1;
+  -webkit-flex: 1;
+  &.navbar-right {
+    flex: unset;
+    -webkit-flex: unset;
+    display: flex;
+    display: -webkit-flex;
+    justify-content: flex-end;
+    -webkit-justify-content: flex-end;
+  }
+}
+
+ul.nav.navbar-nav>li:not(.dropdown) {
+  @extend .nav-item;
+}
+ul.nav.navbar-nav>li>a {
+  @extend .nav-link;
+}
+
+// BS3 .navbar-default -> BS4 .navbar-light
+.navbar.navbar-default {
+  // Sets a variety of fg colors which are configurable via $navbar-light-* options
+  @extend .navbar-light;
+  // To make it easier for end users to set the navbar bg color,
+  // we've introduced this variable
+  background-color: $navbar-light-bg !important;
+}
+
+// BS3 .navbar-inverse -> BS4 .navbar-dark
+.navbar.navbar-inverse {
+  // Sets a variety of fg colors which are configurable via $navbar-dark-* options
+  @extend .navbar-dark;
+  // See comments above for $navbar-light-bg
+  background-color: $navbar-dark-bg !important;
+}
+
+// Implement bs3 navbar toggler; used in Rmd websites, i.e.
+// https://github.com/rstudio/rmarkdown-website/blob/453e1802b32b5baf1c8a67f80947adcc53e49b7f/_navbar.html
+.navbar-toggle {
+  @extend .navbar-toggler;
+}
+.navbar-toggle {
+  > .icon-bar {
+    display: none;
+    &:last-child {
+      @extend .navbar-toggler-icon;
+    }
+  }
+}
+
+// Make sure navbar-toggle floats right when navbar is collapsed
+// https://github.com/rstudio/bslib/issues/289
+// In BS4, media-breakpoint-down() does the _next_ breakpoint (xs->sm)
+// In BS5+, it takes the breakpoint (sm) verbatim
+@include media-breakpoint-down(if($bootstrap-version==4, xs, sm)) {
+  .navbar-header {
+    width: 100%;
+    .navbar-toggle {
+      float: right;
+    }
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/nav-spacer/nav-spacer.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/nav-spacer/nav-spacer.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/nav-spacer/nav-spacer.scss	(revision 3762)
@@ -0,0 +1,41 @@
+/* CSS behind nav_spacer() */
+@mixin nav-spacer() {
+  .nav:not(.nav-hidden) {
+    /* Make sure nav container is flexbox (they aren't in BS3) */
+    display: flex !important;
+    display: -webkit-flex !important;
+    // Logic for horizontal nav (e.g., navs_tab(), etc)
+    &:not(.nav-stacked):not(.flex-column) {
+      float: none !important;
+      > .bslib-nav-spacer {
+        margin-left: auto !important;
+      }
+      /* .form-inline doesn't vertically align in BS3? */
+      > .form-inline {
+        margin-top: auto;
+        margin-bottom: auto;
+      }
+    }
+    // Logic for vertical nav (e.g., navs_pill_list())
+    &.nav-stacked {
+      flex-direction: column;
+      -webkit-flex-direction: column;
+      height: 100%;
+      > .bslib-nav-spacer {
+        margin-top: auto !important;
+      }
+    }
+  }
+}
+
+/* BS4+ uses this mixin for configurable breakpoints */
+@if mixin-exists("media-breakpoint-up") {
+  @include media-breakpoint-up(sm) {
+    @include nav-spacer();
+  }
+} @else {
+  /* BS3 default navbar breakpoint */
+  @media (min-width: 768px) {
+    @include nav-spacer();
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/R/sysdata.rdx
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/R/sysdata.rdx
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/R/bslib.rdx
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/R/bslib.rdx
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/R/bslib
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/R/bslib	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/R/bslib	(revision 3762)
@@ -0,0 +1,27 @@
+#  File share/R/nspackloader.R
+#  Part of the R package, https://www.R-project.org
+#
+#  Copyright (C) 1995-2012 The R Core Team
+#
+#  This program is free software; you can redistribute it and/or modify
+#  it under the terms of the GNU General Public License as published by
+#  the Free Software Foundation; either version 2 of the License, or
+#  (at your option) any later version.
+#
+#  This program is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#  GNU General Public License for more details.
+#
+#  A copy of the GNU General Public License is available at
+#  https://www.r-project.org/Licenses/
+
+local({
+    info <- loadingNamespaceInfo()
+    pkg <- info$pkgname
+    ns <- .getNamespace(as.name(pkg))
+    if (is.null(ns))
+        stop("cannot find namespace environment for ", pkg, domain = NA);
+    dbbase <- file.path(info$libname, pkg, "R", pkg)
+    lazyLoad(dbbase, ns, filter = function(n) n != ".__NAMESPACE__.")
+})
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/R/sysdata.rdb
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/R/sysdata.rdb
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/R/bslib.rdb
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/R/bslib.rdb
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/rmarkdown/templates/legacy/skeleton/skeleton.Rmd
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/rmarkdown/templates/legacy/skeleton/skeleton.Rmd	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/rmarkdown/templates/legacy/skeleton/skeleton.Rmd	(revision 3762)
@@ -0,0 +1,49 @@
+---
+title: "Legacy theming with bslib and thematic"
+output: 
+  html_document:
+    code_folding: show
+    theme:
+      bg: "#202123"
+      fg: "#B8BCC2"
+      primary: "#EA80FC"
+      base_font:
+        google: Prompt
+      heading_font:
+        google: Proza Libre
+      version: 3
+---
+
+```{r setup, include=FALSE}
+if (requireNamespace("thematic")) 
+  thematic::thematic_rmd(font = "auto")
+```
+
+## R Markdown
+
+This is an R Markdown document themed with [`{bslib}` package](https://rstudio.github.io/bslib/). `{bslib}` makes it easy to customize the main colors and fonts of a `html_document`, [`flexdashboard::flex_dashboard`](https://flexdashboard-pkg.netlify.app/articles/articles/theme.html), [shiny::fluidPage()](https://shiny.rstudio.com/reference/shiny/latest/fluidPage.html), or more generally any website that uses [Bootstrap](https://getbootstrap.com/) for styling. The `theme` parameter in the yaml front-matter of this Rmd document describes a [`bslib::bs_theme()`](https://rstudio.github.io/bslib/reference/bs_theme.html) object. This particular example uses Bootstrap 3 (`version: 3`), which is primarily for 'legacy' documents that would break with Bootstrap 4 or above.
+
+## Themed Plots {.tabset .tabset-pills}
+
+When running this document with [`{thematic}`](https://rstudio.github.io/thematic/) installed, the `thematic::thematic_rmd(font = "auto")` effectively translates `theme` (CSS) settings to new global theming defaults for `{ggplot2}`, `{lattice}`, and `{base}` R graphics:
+
+### ggplot2
+
+```{r}
+library(ggplot2)
+
+ggplot(mpg, aes(displ, hwy)) +
+  geom_point() + geom_smooth()
+```
+
+### lattice
+
+```{r}
+lattice::show.settings()
+```
+
+### base
+
+```{r}
+plot(pressure, col = thematic::thematic_get_option("accent"))
+```
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/rmarkdown/templates/new/skeleton/skeleton.Rmd
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/rmarkdown/templates/new/skeleton/skeleton.Rmd	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/rmarkdown/templates/new/skeleton/skeleton.Rmd	(revision 3762)
@@ -0,0 +1,51 @@
+---
+title: "Theming with bslib and thematic"
+output: 
+  html_document:
+    code_folding: show
+    theme:
+      bg: "#202123"
+      fg: "#B8BCC2"
+      primary: "#EA80FC"
+      secondary: "#00DAC6"
+      base_font:
+        google: Prompt
+      heading_font:
+        google: Proza Libre
+---
+
+```{r setup, include=FALSE}
+if (requireNamespace("thematic")) 
+  thematic::thematic_rmd(font = "auto")
+```
+
+## R Markdown
+
+This is an R Markdown document themed with [`{bslib}` package](https://rstudio.github.io/bslib/). `{bslib}` makes it easy to customize the main colors and fonts of a `html_document`, [`flexdashboard::flex_dashboard`](https://flexdashboard-pkg.netlify.app/articles/articles/theme.html), [shiny::fluidPage()](https://shiny.rstudio.com/reference/shiny/latest/fluidPage.html), or more generally any website that uses [Bootstrap](https://getbootstrap.com/) for styling. The `theme` parameter in the yaml front-matter of this Rmd document describes a [`bslib::bs_theme()`](https://rstudio.github.io/bslib/reference/bs_theme.html) object, which provides access to 100s of [theming options](https://rstudio.github.io/bslib/articles/bs5-variables.html) (via its `...` argument) in addition to the main options demonstrated here (e.g., `bg`, `fg`, `primary`, etc).
+
+This particular example uses `{bslib}`'s default [Bootstrap version (which, at the time of writing, is Bootstrap 5)](https://rstudio.github.io/bslib/articles/bslib.html#versions). However, if reproducibility is important, it's recommended that you "lock-in" the version by adding `version: 5` to the `theme` definition.
+
+## Themed Plots {.tabset .tabset-pills}
+
+When running this document with [`{thematic}`](https://rstudio.github.io/thematic/) installed, the `thematic::thematic_rmd(font = "auto")` effectively translates `theme` (CSS) settings to new global theming defaults for `{ggplot2}`, `{lattice}`, and `{base}` R graphics:
+
+### ggplot2
+
+```{r}
+library(ggplot2)
+
+ggplot(mpg, aes(displ, hwy)) +
+  geom_point() + geom_smooth()
+```
+
+### lattice
+
+```{r}
+lattice::show.settings()
+```
+
+### base
+
+```{r}
+plot(pressure, col = thematic::thematic_get_option("accent"))
+```
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/rmarkdown/templates/new/template.yaml
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/rmarkdown/templates/new/template.yaml	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/rmarkdown/templates/new/template.yaml	(revision 3762)
@@ -0,0 +1,3 @@
+name: Custom theming
+description: A themed HTML document with {bslib}
+create_dir: false
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/rmarkdown/templates/real-time/skeleton/skeleton.Rmd
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/rmarkdown/templates/real-time/skeleton/skeleton.Rmd	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/rmarkdown/templates/real-time/skeleton/skeleton.Rmd	(revision 3762)
@@ -0,0 +1,60 @@
+---
+title: "Real-time theming with bslib and thematic"
+runtime: shiny
+output: 
+  html_document:
+    code_folding: show
+    theme:
+      color-contrast-warnings: false
+      bg: "#202123"
+      fg: "#B8BCC2"
+      primary: "#EA80FC"
+      secondary: "#00DAC6"
+      base_font:
+        google: Prompt
+      heading_font:
+        google: Proza Libre
+---
+
+```{r setup, include=FALSE}
+bslib::bs_themer()
+if (requireNamespace("thematic")) 
+  thematic::thematic_rmd(font = "auto")
+```
+
+## R Markdown
+
+This is an R Markdown document themed with [`{bslib}` package](https://rstudio.github.io/bslib/). `{bslib}` makes it easy to customize the main colors and fonts of a `html_document`, [`flexdashboard::flex_dashboard`](https://flexdashboard-pkg.netlify.app/articles/articles/theme.html), [shiny::fluidPage()](https://shiny.rstudio.com/reference/shiny/latest/fluidPage.html), or more generally any website that uses [Bootstrap](https://getbootstrap.com/) for styling. The `theme` parameter in the yaml front-matter of this Rmd document describes a [`bslib::bs_theme()`](https://rstudio.github.io/bslib/reference/bs_theme.html) object, which provides access to 100s of [theming options](https://rstudio.github.io/bslib/articles/bs4-variables.html) (via its `...` argument) in addition to the main options demonstrated here (e.g., `bg`, `fg`, `primary`, etc).
+
+This document also uses [`runtime: shiny`](https://shiny.rstudio.com/articles/interactive-docs.html) to call [`bslib::bs_themer()`](https://rstudio.github.io/bslib/reference/run_with_themer.html) which overlays a "real-time" theming widget for interactively customizing main theme settings.
+
+## Themed Plots {.tabset .tabset-pills}
+
+When running this document with [`{thematic}`](https://rstudio.github.io/thematic/) installed, the `thematic::thematic_rmd(font = "auto")` effectively translates `theme` (CSS) settings to new global theming defaults for `{ggplot2}`, `{lattice}`, and `{base}` R graphics:
+
+### ggplot2
+
+```{r, message = FALSE}
+library(ggplot2)
+
+renderPlot({
+  ggplot(mpg, aes(displ, hwy)) +
+    geom_point() + geom_smooth()
+})
+```
+
+### lattice
+
+```{r}
+renderPlot({
+  lattice::show.settings()
+})
+```
+
+### base
+
+```{r}
+renderPlot({
+  plot(pressure, col = thematic::thematic_get_option("accent"))
+})
+```
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/rmarkdown/templates/real-time/template.yaml
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/rmarkdown/templates/real-time/template.yaml	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/rmarkdown/templates/real-time/template.yaml	(revision 3762)
@@ -0,0 +1,3 @@
+name: Real-time theming
+description: Theme a HTML document with bslib in real-time
+create_dir: false
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/html/R.css
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/html/R.css	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/html/R.css	(revision 3762)
@@ -0,0 +1,130 @@
+@media screen {
+    .container {
+	padding-right: 10px;
+	padding-left: 10px;
+	margin-right: auto;
+	margin-left: auto;
+	max-width: 900px;
+    }
+}
+
+.rimage img { /* from knitr - for examples and demos */
+    width: 96%;
+    margin-left: 2%;
+} 	
+
+.katex { font-size: 1.1em; }
+
+code {
+    color: inherit;
+    background: inherit;
+}
+
+body {
+    line-height: 1.4;
+    background: white;
+    color: black;
+}
+
+a:link {
+    background: white;
+    color: blue;
+}
+
+a:visited {
+    background: white;
+    color: rgb(50%, 0%, 50%);
+}
+
+h1 {
+    background: white;
+    color: rgb(55%, 55%, 55%);
+    font-family: monospace;
+    font-size: 1.4em; /* x-large; */
+    text-align: center;
+}
+
+h2 {
+    background: white;
+    color: rgb(40%, 40%, 40%);
+    font-family: monospace;
+    font-size: 1.2em; /* large; */
+    text-align: center;
+}
+
+h3 {
+    background: white;
+    color: rgb(40%, 40%, 40%);
+    font-family: monospace;
+    font-size: 1.2em; /* large; */
+}
+
+h4 {
+    background: white;
+    color: rgb(40%, 40%, 40%);
+    font-family: monospace;
+    font-style: italic;
+    font-size: 1.2em; /* large; */
+}
+
+h5 {
+    background: white;
+    color: rgb(40%, 40%, 40%);
+    font-family: monospace;
+}
+
+h6 {
+    background: white;
+    color: rgb(40%, 40%, 40%);
+    font-family: monospace;
+    font-style: italic;
+}
+
+img.toplogo {
+    width: 4em;
+    vertical-align: middle;
+}
+
+img.arrow {
+    width: 30px;
+    height: 30px;
+    border: 0;
+}
+
+span.acronym {
+    font-size: small;
+}
+
+span.env {
+    font-family: monospace;
+}
+
+span.file {
+    font-family: monospace;
+}
+
+span.option{
+    font-family: monospace;
+}
+
+span.pkg {
+    font-weight: bold;
+}
+
+span.samp{
+    font-family: monospace;
+}
+
+div.vignettes a:hover {
+    background: rgb(85%, 85%, 85%);
+}
+
+tr {
+    vertical-align: top;
+}
+
+span.rlang {
+    font-family: Courier New, Courier;
+    color: #666666;
+}
+
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/html/00Index.html
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/html/00Index.html	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/html/00Index.html	(revision 3762)
@@ -0,0 +1,168 @@
+<!DOCTYPE html>
+<html>
+<head><title>R: Custom 'Bootstrap' 'Sass' Themes for 'shiny' and 'rmarkdown'</title>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
+<link rel="stylesheet" type="text/css" href="R.css" />
+</head><body><div class="container">
+<h1> Custom 'Bootstrap' 'Sass' Themes for 'shiny' and 'rmarkdown'
+<img class="toplogo" src="../../../doc/html/Rlogo.svg" alt="[R logo]" />
+</h1>
+<hr/>
+<div style="text-align: center;">
+<a href="../../../doc/html/packages.html"><img class="arrow" src="../../../doc/html/left.jpg" alt="[Up]" /></a>
+<a href="../../../doc/html/index.html"><img class="arrow" src="../../../doc/html/up.jpg" alt="[Top]" /></a>
+</div><h2>Documentation for package &lsquo;bslib&rsquo; version 0.4.2</h2>
+
+<ul><li><a href="../DESCRIPTION">DESCRIPTION file</a>.</li>
+<li><a href="../NEWS">Package NEWS</a>.</li>
+</ul>
+
+<h2>Help Pages</h2>
+
+
+<table style="width: 100%;">
+<tr><td style="width: 25%;"><a href="card_body.html">as.card_item</a></td>
+<td>Card items</td></tr>
+<tr><td style="width: 25%;"><a href="bootswatch_themes.html">bootswatch_themes</a></td>
+<td>Obtain a list of all available bootswatch themes.</td></tr>
+<tr><td style="width: 25%;"><a href="bs_bundle.html">bs_add_functions</a></td>
+<td>Add low-level theming customizations</td></tr>
+<tr><td style="width: 25%;"><a href="bs_bundle.html">bs_add_mixins</a></td>
+<td>Add low-level theming customizations</td></tr>
+<tr><td style="width: 25%;"><a href="bs_bundle.html">bs_add_rules</a></td>
+<td>Add low-level theming customizations</td></tr>
+<tr><td style="width: 25%;"><a href="bs_bundle.html">bs_add_variables</a></td>
+<td>Add low-level theming customizations</td></tr>
+<tr><td style="width: 25%;"><a href="bs_bundle.html">bs_bundle</a></td>
+<td>Add low-level theming customizations</td></tr>
+<tr><td style="width: 25%;"><a href="bs_current_theme.html">bs_current_theme</a></td>
+<td>Obtain the currently active theme at render time</td></tr>
+<tr><td style="width: 25%;"><a href="bs_dependency.html">bs_dependency</a></td>
+<td>Themeable HTML components</td></tr>
+<tr><td style="width: 25%;"><a href="bs_dependency.html">bs_dependency_defer</a></td>
+<td>Themeable HTML components</td></tr>
+<tr><td style="width: 25%;"><a href="bs_get_variables.html">bs_get_contrast</a></td>
+<td>Retrieve Sass variable values from the current theme</td></tr>
+<tr><td style="width: 25%;"><a href="bs_get_variables.html">bs_get_variables</a></td>
+<td>Retrieve Sass variable values from the current theme</td></tr>
+<tr><td style="width: 25%;"><a href="bs_global_theme.html">bs_global_add_rules</a></td>
+<td>Global theming</td></tr>
+<tr><td style="width: 25%;"><a href="bs_global_theme.html">bs_global_add_variables</a></td>
+<td>Global theming</td></tr>
+<tr><td style="width: 25%;"><a href="bs_global_theme.html">bs_global_bundle</a></td>
+<td>Global theming</td></tr>
+<tr><td style="width: 25%;"><a href="bs_global_theme.html">bs_global_clear</a></td>
+<td>Global theming</td></tr>
+<tr><td style="width: 25%;"><a href="bs_global_theme.html">bs_global_get</a></td>
+<td>Global theming</td></tr>
+<tr><td style="width: 25%;"><a href="bs_global_theme.html">bs_global_set</a></td>
+<td>Global theming</td></tr>
+<tr><td style="width: 25%;"><a href="bs_global_theme.html">bs_global_theme</a></td>
+<td>Global theming</td></tr>
+<tr><td style="width: 25%;"><a href="bs_global_theme.html">bs_global_theme_update</a></td>
+<td>Global theming</td></tr>
+<tr><td style="width: 25%;"><a href="bs_remove.html">bs_remove</a></td>
+<td>Remove or retrieve Sass code from a theme</td></tr>
+<tr><td style="width: 25%;"><a href="bs_remove.html">bs_retrieve</a></td>
+<td>Remove or retrieve Sass code from a theme</td></tr>
+<tr><td style="width: 25%;"><a href="bs_theme.html">bs_theme</a></td>
+<td>Create a Bootstrap theme</td></tr>
+<tr><td style="width: 25%;"><a href="run_with_themer.html">bs_themer</a></td>
+<td>Theme customization UI</td></tr>
+<tr><td style="width: 25%;"><a href="bs_theme_dependencies.html">bs_theme_dependencies</a></td>
+<td>Compile Bootstrap Sass with (optional) theming</td></tr>
+<tr><td style="width: 25%;"><a href="bs_theme_preview.html">bs_theme_preview</a></td>
+<td>Preview the currently set theme</td></tr>
+<tr><td style="width: 25%;"><a href="bs_theme.html">bs_theme_update</a></td>
+<td>Create a Bootstrap theme</td></tr>
+<tr><td style="width: 25%;"><a href="card.html">card</a></td>
+<td>A Bootstrap card component</td></tr>
+<tr><td style="width: 25%;"><a href="card_body.html">card_body</a></td>
+<td>Card items</td></tr>
+<tr><td style="width: 25%;"><a href="card_body.html">card_body_fill</a></td>
+<td>Card items</td></tr>
+<tr><td style="width: 25%;"><a href="card_body.html">card_footer</a></td>
+<td>Card items</td></tr>
+<tr><td style="width: 25%;"><a href="card_body.html">card_header</a></td>
+<td>Card items</td></tr>
+<tr><td style="width: 25%;"><a href="card_body.html">card_image</a></td>
+<td>Card items</td></tr>
+<tr><td style="width: 25%;"><a href="card_body.html">card_title</a></td>
+<td>Card items</td></tr>
+<tr><td style="width: 25%;"><a href="font_face.html">font_collection</a></td>
+<td>Helpers for importing web fonts</td></tr>
+<tr><td style="width: 25%;"><a href="font_face.html">font_face</a></td>
+<td>Helpers for importing web fonts</td></tr>
+<tr><td style="width: 25%;"><a href="font_face.html">font_google</a></td>
+<td>Helpers for importing web fonts</td></tr>
+<tr><td style="width: 25%;"><a href="font_face.html">font_link</a></td>
+<td>Helpers for importing web fonts</td></tr>
+<tr><td style="width: 25%;"><a href="card_body.html">is.card_item</a></td>
+<td>Card items</td></tr>
+<tr><td style="width: 25%;"><a href="bs_theme.html">is_bs_theme</a></td>
+<td>Create a Bootstrap theme</td></tr>
+<tr><td style="width: 25%;"><a href="layout_column_wrap.html">layout_column_wrap</a></td>
+<td>A grid-like, column-first, layout</td></tr>
+<tr><td style="width: 25%;"><a href="nav.html">nav</a></td>
+<td>Navigation items</td></tr>
+<tr><td style="width: 25%;"><a href="navs.html">navs_bar</a></td>
+<td>Navigation containers</td></tr>
+<tr><td style="width: 25%;"><a href="navs.html">navs_hidden</a></td>
+<td>Navigation containers</td></tr>
+<tr><td style="width: 25%;"><a href="navs.html">navs_pill</a></td>
+<td>Navigation containers</td></tr>
+<tr><td style="width: 25%;"><a href="navs.html">navs_pill_card</a></td>
+<td>Navigation containers</td></tr>
+<tr><td style="width: 25%;"><a href="navs.html">navs_pill_list</a></td>
+<td>Navigation containers</td></tr>
+<tr><td style="width: 25%;"><a href="navs.html">navs_tab</a></td>
+<td>Navigation containers</td></tr>
+<tr><td style="width: 25%;"><a href="navs.html">navs_tab_card</a></td>
+<td>Navigation containers</td></tr>
+<tr><td style="width: 25%;"><a href="nav.html">nav_content</a></td>
+<td>Navigation items</td></tr>
+<tr><td style="width: 25%;"><a href="nav_select.html">nav_hide</a></td>
+<td>Dynamically update nav containers</td></tr>
+<tr><td style="width: 25%;"><a href="nav_select.html">nav_insert</a></td>
+<td>Dynamically update nav containers</td></tr>
+<tr><td style="width: 25%;"><a href="nav.html">nav_item</a></td>
+<td>Navigation items</td></tr>
+<tr><td style="width: 25%;"><a href="nav.html">nav_menu</a></td>
+<td>Navigation items</td></tr>
+<tr><td style="width: 25%;"><a href="nav_select.html">nav_remove</a></td>
+<td>Dynamically update nav containers</td></tr>
+<tr><td style="width: 25%;"><a href="nav_select.html">nav_select</a></td>
+<td>Dynamically update nav containers</td></tr>
+<tr><td style="width: 25%;"><a href="nav_select.html">nav_show</a></td>
+<td>Dynamically update nav containers</td></tr>
+<tr><td style="width: 25%;"><a href="nav.html">nav_spacer</a></td>
+<td>Navigation items</td></tr>
+<tr><td style="width: 25%;"><a href="page.html">page</a></td>
+<td>Create a Bootstrap page</td></tr>
+<tr><td style="width: 25%;"><a href="page.html">page_fill</a></td>
+<td>Create a Bootstrap page</td></tr>
+<tr><td style="width: 25%;"><a href="page.html">page_fixed</a></td>
+<td>Create a Bootstrap page</td></tr>
+<tr><td style="width: 25%;"><a href="page.html">page_fluid</a></td>
+<td>Create a Bootstrap page</td></tr>
+<tr><td style="width: 25%;"><a href="page.html">page_navbar</a></td>
+<td>Create a Bootstrap page</td></tr>
+<tr><td style="width: 25%;"><a href="run_with_themer.html">run_with_themer</a></td>
+<td>Theme customization UI</td></tr>
+<tr><td style="width: 25%;"><a href="value_box.html">showcase_left_center</a></td>
+<td>Value box</td></tr>
+<tr><td style="width: 25%;"><a href="value_box.html">showcase_top_right</a></td>
+<td>Value box</td></tr>
+<tr><td style="width: 25%;"><a href="theme_bootswatch.html">theme_bootswatch</a></td>
+<td>Obtain a theme's Bootswatch theme name</td></tr>
+<tr><td style="width: 25%;"><a href="theme_version.html">theme_version</a></td>
+<td>Obtain a theme's Bootstrap version</td></tr>
+<tr><td style="width: 25%;"><a href="value_box.html">value_box</a></td>
+<td>Value box</td></tr>
+<tr><td style="width: 25%;"><a href="versions.html">versions</a></td>
+<td>Available Bootstrap versions</td></tr>
+<tr><td style="width: 25%;"><a href="versions.html">version_default</a></td>
+<td>Available Bootstrap versions</td></tr>
+</table>
+</div></body></html>
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/themer-demo/deploy.R
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/themer-demo/deploy.R	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/themer-demo/deploy.R	(revision 3762)
@@ -0,0 +1,4 @@
+rsconnect::deployApp(
+  rprojroot::find_package_root_file("inst/themer-demo/deploy"),
+  appName = "themer-demo", account = "testing-apps"
+)
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/themer-demo/app.R
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/themer-demo/app.R	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/themer-demo/app.R	(revision 3762)
@@ -0,0 +1,333 @@
+library(shiny)
+library(ggplot2)
+library(bslib)
+library(rlang)
+library(curl)
+
+# enlarged auto fonts
+if (is_installed("thematic")) {
+  thematic::thematic_shiny(
+    font = thematic::font_spec("auto", scale = 2, update = TRUE)
+  )
+}
+
+# Source in ggplot2 examples
+source("global.R")
+
+theme <- bs_global_get()
+if ("3" %in% theme_version(theme)) {
+  warning("This example app requires Bootstrap 4 or higher", call. = FALSE)
+}
+
+rounded <- isTRUE(as.logical(bs_get_variables(theme %||% bslib::bs_theme(), "enable-rounded")))
+pill <- function(...) {
+  shiny::tabPanel(..., class = "p-3 border", class = if (rounded) "rounded")
+}
+tab <- function(...) {
+  shiny::tabPanel(..., class = "p-3 border border-top-0", class = if (rounded) "rounded-bottom")
+}
+gradient <- function(theme_color = "primary") {
+  bg_color <- paste0("bg-", theme_color)
+  bgg_color <- if ("4" %in% theme_version(theme)) {
+    paste0("bg-gradient-", theme_color)
+  } else {
+    paste(bg_color, "bg-gradient")
+  }
+  bg_div <- function(color_class, ...) {
+    display_classes <- paste(
+      paste0(".", strsplit(color_class, "\\s+")[[1]]),
+      collapse = " "
+    )
+    div(
+      class = "p-3", class = color_class,
+      display_classes, ...
+    )
+  }
+  fluidRow(
+    column(6, bg_div(bg_color)),
+    column(6, bg_div(bgg_color))
+  )
+}
+
+theme_colors <- c("primary", "secondary", "default", "success", "info", "warning", "danger", "dark")
+gradients <- lapply(theme_colors, gradient)
+
+progressBar <- div(
+  class="progress",
+  div(
+    class="progress-bar w-25",
+    role="progressbar",
+    "aria-valuenow"="25",
+    "aria-valuemin"="0",
+    "aria-valuemax"="100"
+  )
+)
+
+shinyApp(
+  navbarPage(
+    theme = theme,
+    title = "Theme demo",
+    collapsible = TRUE,
+    id = "navbar",
+    tabPanel(
+      "Inputs",
+      tabsetPanel(
+        type = "pills", id = "inputs",
+        pill(
+          "inputPanel()",
+          inputPanel(
+            sliderInput("slider", "sliderInput()", min = 0, max = 100, value = c(30, 70), step = 20),
+            selectInput("selectize", "selectizeInput()", choices = state.abb),
+            selectInput("selectizeMulti", "selectizeInput(multiple=T)", choices = state.abb, multiple = TRUE),
+            dateInput("date", "dateInput()", value = "2020-12-24"),
+            dateRangeInput("dateRange", "dateRangeInput()", start = "2020-12-24", end = "2020-12-31")
+          ),
+          br(),
+          textOutput("inputPanelOutputHeader"),
+          verbatimTextOutput("inputPanelOutput"),
+          br(),
+          tags$p("Here are some", tags$code("actionButton()"), "s demonstrating different theme (i.e., accent) colors"),
+          tags$div(
+            class = "d-flex justify-content-center",
+            actionButton("primary", "Primary", icon("product-hunt"), class = "btn-primary m-2"),
+            actionButton("secondary", "Secondary (default)", class = "m-2"),
+            actionButton("success", "Success", icon("check"), class = "btn-success m-2"),
+            actionButton("info", "Info", icon("info"),  class = "btn-info m-2"),
+            actionButton("warning", "warning", icon("exclamation"), class = "btn-warning m-2"),
+            actionButton(
+              "danger", "Danger",
+              icon(if (packageVersion("fontawesome") >= "0.3") "triangle-exclamation" else "exclamation-triangle"),
+              class = "btn-danger m-2"
+            ),
+            actionButton("dark", "Dark", icon("moon"), class = "btn-dark m-2"),
+            actionButton("light", "Light", icon("sun"), class = "btn-light m-2")
+          )
+        ),
+        pill(
+          "wellPanel()",
+          wellPanel(
+            fluidRow(
+              column(
+                6,
+                selectInput("select", "selectInput()", choices = state.abb, selectize = FALSE),
+                selectInput("selectMulti", "selectInput(multiple=T)", choices = state.abb, multiple = TRUE, selectize = FALSE),
+                textInput("text", "textInput()", placeholder = "Enter some text"),
+                numericInput("numeric", "numericInput()", value = 0)
+              ),
+              column(
+                6,
+                passwordInput("password", "passwordInput()", "secret"),
+                textAreaInput("textArea", "textAreaInput()", placeholder = "A text area"),
+                checkboxInput("check", "checkboxInput()", value = TRUE),
+                checkboxGroupInput("checkGroup", "checkboxGroupInput()", choices = c("A", "B")),
+                radioButtons("radioButtons", "radioButtons()", choices = c("A", "B"))
+              )
+            )
+          ),
+          br(),
+          textOutput("wellPanelOutputHeader"),
+          br(),
+          verbatimTextOutput("wellPanelOutput")
+        )
+      )
+    ),
+    tabPanel(
+      "Plots",
+      uiOutput("thematic_needed"),
+      plotOutput("plot"),
+      selectizeInput(
+        "plot_example", "Choose an example",
+        selected = "GeomSmooth",
+        choices = list(
+          ggplot2 = names(ggplot2_examples),
+          lattice = names(lattice_examples),
+          base = names(base_examples)
+        )
+      )
+    ),
+    tabPanel(
+      "Tables",
+      DT::dataTableOutput("DT")
+    ),
+    tabPanel(
+      "Notifications",
+      tabsetPanel(
+        id = "otherNav",
+        tab(
+          "Messages",
+          br(),
+          actionButton("showProgress", "Progress", style = "margin: 1rem"),
+          actionButton("showModal", "Modals", style = "margin: 1rem"),
+          lapply(c("default", "message", "warning", "error"), function(x) {
+            X <- tools::toTitleCase(x)
+            class <- switch(x, message = "btn-info", warning = "btn-warning", error = "btn-danger")
+            actionButton(
+              paste0("show", X), paste(X, "notification"),
+              class = class, style = "margin: 1rem"
+            )
+          })
+        ),
+        tab(
+          "Uploads & Downloads",
+          br(),
+          fileInput("file", "fileInput()"),
+          downloadButton("downloadButton", "downloadButton()", style = "margin: 1rem"),
+          downloadLink("downloadLink", "downloadLink()", style = "margin: 1rem")
+        )
+      )
+    ),
+    tabPanel(
+      "Fonts",
+      h1("Heading font:", class = "text-primary"),
+      hr(class = "bg-primary", style = "height: 5px"),
+      h1("Heading 1"),
+      h2("Heading 2"),
+      h3("Heading 3"),
+      h4("Heading 4"),
+      h5("Heading 5"),
+      h1("Base font:", class = "text-primary"),
+      hr(class = "bg-primary", style = "height: 5px"),
+      tags$p("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."),
+      h1("Code font:", class = "text-primary"),
+      hr(class = "bg-primary", style = "height: 5px"),
+      tags$pre(
+        class = "shiny-text-output",
+        style = "white-space: pre-wrap",
+        "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
+      )
+    ),
+    tabPanel(
+      "Options",
+      if ("4" %in% theme_version(theme)) {
+        p(
+          "Background color gradients are disabled by default.",
+          "Enable them to see the difference here.",
+          "If enabled, gradients automatically apply buttons and progress bars, ",
+          "but you may also add to a .bg-gradient-* modified class to arbitrary elements."
+        )
+      } else {
+        markdown(
+          "`{bslib}` 'extends' Bootstrap's [`background-color` utility classes](https://getbootstrap.com/docs/5.0/utilities/background/) to also sets the foreground `color` to a sensible contrasting color (i.e., no additional `text-*` classes are needed)."
+        )
+      },
+      !!!gradients,
+      br(),
+      tags$p(
+        "With the default settings, enabling of box shadows adds a very subtle and
+              barely noticable inner box-shadow to most input widgets. The difference is
+              a little more obvious in a progress bar:"
+      ),
+      progressBar,
+      br(),
+      tags$p(
+        "Rounded corners are enabled by default and apply to numerous components (e.g., ",
+        code("tabsetPanel()"), ",", code("wellPanel()"), ", and ", code("actionButton()"), "):",
+        actionButton("showProgress2", "Show progress")
+      ),
+      br(),
+      tags$p(
+        "Smooth transitions are enabled by default, but if you disable them, progress updating",
+        "in ", code("fileInput()"), "and ", code("Progress"), " will appear more staggered",
+        "(e.g., click button above)."
+      )
+    )
+  ),
+  function(input, output, session) {
+
+    output$DT <- DT::renderDataTable({
+      DT::datatable(mtcars, style = "bootstrap4")
+    })
+
+    output$inputPanelOutputHeader <- renderText({
+      "Below are the values bound to each input widget above"
+    })
+
+    output$inputPanelOutput <- renderPrint({
+      str(list(
+        sliderInput = input$slider,
+        selectizeInput = input$selectize,
+        selectizeMultiInput = input$selectizeMulti,
+        dateInput = input$date,
+        dateRangeInput = input$dateRange
+      ))
+    })
+
+    output$wellPanelOutputHeader <- renderText({
+      "Below are the values bound to each input widget above"
+    })
+
+    output$wellPanelOutput <- renderPrint({
+      str(list(
+        selectInput = input$select,
+        selectMultiInput = input$selectMulti,
+        textInput = input$text,
+        numericInput = input$numeric,
+        passwordInput = input$password,
+        textAreaInput = input$textArea,
+        checkInput = input$check,
+        checkGroupInput = input$checkGroup,
+        radioButtonsInput = input$radioButtons
+      ))
+    })
+
+    observeEvent(input$showModal, {
+      showModal(modalDialog(
+        title = "Somewhat important message",
+        "This is a somewhat important message.",
+        easyClose = TRUE,
+        footer = modalButton("Close")
+      ))
+    })
+
+    fake_progress <- function(style = "notification") {
+      withProgress(
+        message = 'Calculation in progress',
+        detail = 'This may take a while...',
+        value = 0,
+        style = style,
+        {
+          for (i in 1:15) {
+            incProgress(1/15)
+            Sys.sleep(0.25)
+          }
+        })
+    }
+
+    observeEvent(input$showProgress, {
+      fake_progress()
+      # TODO: old progress styling could be improved
+      #fake_progress("old")
+    })
+
+    observeEvent(input$showProgress2, {
+      p <- Progress$new()
+      p$set(
+        message = 'Calculation in progress',
+        detail = 'This may take a while...',
+        value = 0.5
+      )
+    })
+
+    lapply(c("default", "message", "warning", "error"), function(x) {
+      X <- tools::toTitleCase(x)
+      observeEvent(input[[paste0("show", X)]], {
+        showNotification(paste(X, "notification styling"), type = x)
+      })
+    })
+
+    output$plot <- renderPlot({
+      ggplot2_examples[[input$plot_example]] %||%
+        eval(lattice_examples[[input$plot_example]]) %||%
+        eval(base_examples[[input$plot_example]])
+    })
+
+    output$thematic_needed <- renderUI({
+      if (bslib:::is_installed("thematic")) return(NULL)
+
+      htmltools::HTML(
+        "<span class=\"bg-warning\">&nbsp;!! Install the <a href='https://rstudio.github.io/thematic/'><code>thematic</code></a> package to enable auto-theming of static R plots !!&nbsp;</span>"
+      )
+    })
+
+  }
+)
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/themer-demo/global.R
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/themer-demo/global.R	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/themer-demo/global.R	(revision 3762)
@@ -0,0 +1,125 @@
+library(ggplot2)
+library(lattice)
+
+
+ids <- factor(c("1.1", "2.1", "1.2", "2.2", "1.3", "2.3"))
+values <- data.frame(
+  id = ids,
+  value = c(3, 3.1, 3.1, 3.2, 3.15, 3.5)
+)
+positions <- data.frame(
+  id = rep(ids, each = 4),
+  x = c(2, 1, 1.1, 2.2, 1, 0, 0.3, 1.1, 2.2, 1.1, 1.2, 2.5, 1.1, 0.3,
+        0.5, 1.2, 2.5, 1.2, 1.3, 2.7, 1.2, 0.5, 0.6, 1.3),
+  y = c(-0.5, 0, 1, 0.5, 0, 0.5, 1.5, 1, 0.5, 1, 2.1, 1.7, 1, 1.5,
+        2.2, 2.1, 1.7, 2.1, 3.2, 2.8, 2.1, 2.2, 3.3, 3.2)
+)
+huron <- data.frame(year = 1875:1972, level = as.vector(LakeHuron))
+
+ggplot2_examples <- list(
+  GeomPointColor = {
+    ggplot(mtcars, aes(wt, mpg, color = cyl)) + geom_point()
+  },
+  GeomAbline = {
+    ggplot(mtcars, aes(mpg, wt)) +
+      geom_point() +
+      geom_hline(aes(yintercept = wt), data.frame(cyl = c(4, 6, 8), wt = c(2.28, 3.11, 4.00))) +
+      facet_wrap(~ cyl)
+  },
+  GeomBar = ggplot(mpg, aes(class)) + geom_bar(aes(weight = displ)),
+  GeomBin2d = ggplot(diamonds, aes(x, y)) + xlim(4, 10) + ylim(4, 10) + geom_bin2d(),
+  GeomBox  = ggplot(mpg, aes(class, hwy)) + geom_boxplot(),
+  GeomContour = ggplot(faithfuld, aes(waiting, eruptions, z = density)) + geom_contour(),
+  GeomContourRaster =  ggplot(faithfuld, aes(waiting, eruptions, z = density)) + geom_raster(aes(fill = density)) + geom_contour(),
+  GeomCount = ggplot(mpg, aes(cty, hwy)) + geom_count(),
+  GeomDensity = ggplot(diamonds, aes(carat)) + geom_density(),
+  GeomDensityColor = ggplot(diamonds, aes(depth, fill = cut, colour = cut)) + geom_density(alpha = 0.1),
+  GeomDotPlot = ggplot(mtcars, aes(x = mpg)) + geom_dotplot(),
+  GeomError = {
+    ggplot(data.frame(
+      trt = factor(c(1, 1, 2, 2)),
+      resp = c(1, 5, 3, 4),
+      group = factor(c(1, 2, 1, 2)),
+      se = c(0.1, 0.3, 0.3, 0.2)
+    ), aes(resp, trt, colour = group)) + geom_point() +
+      geom_errorbarh(aes(xmax = resp + se, xmin = resp - se))
+  },
+  GeomHex = ggplot(diamonds, aes(carat, price)) + geom_hex(binwidth = c(.1, 500)),
+  GeomHistogram = ggplot(diamonds, aes(price, fill = cut)) + geom_histogram(binwidth = 500),
+  GeomJitter = ggplot(mpg, aes(cyl, hwy)) + geom_jitter(width = 0.25),
+  GeomErrorbar = ggplot(data.frame(
+    trt = factor(c(1, 1, 2, 2)),
+    resp = c(1, 5, 3, 4),
+    group = factor(c(1, 2, 1, 2)),
+    upper = c(1.1, 5.3, 3.3, 4.2),
+    lower = c(0.8, 4.6, 2.4, 3.6)
+  ), aes(trt, resp, fill = group)) +
+    geom_col(position = position_dodge(width = 0.9)) +
+    geom_errorbar(aes(ymin = lower, ymax = upper), position = position_dodge(width = 0.9), width = 0.25),
+  GeomPolygon = ggplot(values) +
+    geom_map(aes(map_id = id), map = positions) +
+    expand_limits(positions),
+  GeomPolygon2 = ggplot(values, aes(fill = value)) +
+    geom_map(aes(map_id = id), map = positions) +
+    expand_limits(positions),
+  GeomLine = ggplot(economics_long, aes(date, value01, group = variable)) + geom_line(),
+  GeomLine2 = ggplot(economics_long, aes(date, value01, colour = variable)) + geom_line(),
+  GeomPoint = ggplot(diamonds, aes(carat, price)) + geom_point(alpha = 1/50),
+  GeomPoint2 = ggplot(mtcars, aes(wt, mpg, color = factor(cyl), shape = factor(cyl))) + geom_point(),
+  GeomQuantile = ggplot(mpg, aes(displ, 1 / hwy)) + geom_point() + geom_quantile(),
+  GeomRibbon = ggplot(huron, aes(year)) +
+    geom_ribbon(aes(ymin = level - 1, ymax = level + 1), fill = "grey70") +
+    geom_line(aes(y = level)),
+  GeomRug = ggplot(mtcars, aes(wt, mpg)) + geom_point() + geom_rug(),
+  GeomRug2 = ggplot(mtcars, aes(wt, mpg)) + geom_point() + geom_rug(outside = TRUE) + coord_cartesian(clip = "off"),
+  GeomCurve = {
+    df <- data.frame(x1 = 2.62, x2 = 3.57, y1 = 21.0, y2 = 15.0)
+    ggplot(mtcars, aes(wt, mpg)) +
+      geom_point() +
+      geom_curve(aes(x = x1, y = y1, xend = x2, yend = y2, colour = "curve"), data = df) +
+      geom_segment(aes(x = x1, y = y1, xend = x2, yend = y2, colour = "segment"), data = df) +
+      geom_curve(aes(x = x1, y = y1, xend = x2, yend = y2), data = df, curvature = -0.2)
+  },
+  GeomSmooth = ggplot(diamonds[sample(nrow(diamonds), 1000), ], aes(carat, price)) +
+    geom_point(alpha = 0.2) +
+    geom_smooth() +
+    facet_wrap(~cut) + ggtitle("Diamond price by carat and cut"),
+  GeomSmooth2 = ggplot(mpg, aes(displ, hwy, colour = class)) +
+    geom_point() +
+    geom_smooth(se = FALSE, method = lm),
+  GeomSpoke = {
+    df <- expand.grid(x = 1:10, y=1:10)
+    df$angle <- runif(100, 0, 2*pi)
+    df$speed <- runif(100, 0, sqrt(0.1 * df$x))
+
+    ggplot(df, aes(x, y)) +
+      geom_point() +
+      geom_spoke(aes(angle = angle), radius = 0.5)
+  },
+  GeomText = ggplot(mtcars, aes(wt, mpg, label = rownames(mtcars))) + geom_text(),
+  GeomLabel = ggplot(mtcars, aes(wt, mpg, label = rownames(mtcars))) + geom_label(),
+  GeomTile = ggplot(data.frame(
+    x = rep(c(2, 5, 7, 9, 12), 2),
+    y = rep(c(1, 2), each = 5),
+    z = factor(rep(1:5, each = 2)),
+    w = rep(diff(c(0, 4, 6, 8, 10, 14)), 2)
+  ), aes(x, y, width = w)) + geom_tile(aes(fill = z)),
+  GeomViolin = ggplot(mtcars, aes(factor(cyl), mpg)) + geom_violin()
+)
+
+lattice_examples <- list(
+  settings = quote(show.settings()),
+  densityplot = quote(densityplot(~mpg, data=mtcars,
+                                  group=factor(mtcars$am, levels=c(0, 1),
+                                               labels=c("Automatic", "Manual")),
+                                  main="MPG Distribution by Transmission Type",
+                                  xlab="Miles per Gallon",
+                                  auto.key=TRUE))
+)
+
+base_examples <- list(
+  scatterplot = quote(plot(iris$Sepal.Length, iris$Sepal.Width,
+                           col = iris$Species,
+                           main = "Sepal Length vs Width in Iris")),
+  hist = quote(hist(iris$Sepal.Length))
+)
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/fonts/bootstrap/glyphicons-halflings-regular.eot
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/fonts/bootstrap/glyphicons-halflings-regular.eot
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/fonts/bootstrap/glyphicons-halflings-regular.ttf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/fonts/bootstrap/glyphicons-halflings-regular.ttf
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/fonts/bootstrap/glyphicons-halflings-regular.svg
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/fonts/bootstrap/glyphicons-halflings-regular.svg	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/fonts/bootstrap/glyphicons-halflings-regular.svg	(revision 3762)
@@ -0,0 +1,288 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata></metadata>
+<defs>
+<font id="glyphicons_halflingsregular" horiz-adv-x="1200" >
+<font-face units-per-em="1200" ascent="960" descent="-240" />
+<missing-glyph horiz-adv-x="500" />
+<glyph horiz-adv-x="0" />
+<glyph horiz-adv-x="400" />
+<glyph unicode=" " />
+<glyph unicode="*" d="M600 1100q15 0 34 -1.5t30 -3.5l11 -1q10 -2 17.5 -10.5t7.5 -18.5v-224l158 158q7 7 18 8t19 -6l106 -106q7 -8 6 -19t-8 -18l-158 -158h224q10 0 18.5 -7.5t10.5 -17.5q6 -41 6 -75q0 -15 -1.5 -34t-3.5 -30l-1 -11q-2 -10 -10.5 -17.5t-18.5 -7.5h-224l158 -158 q7 -7 8 -18t-6 -19l-106 -106q-8 -7 -19 -6t-18 8l-158 158v-224q0 -10 -7.5 -18.5t-17.5 -10.5q-41 -6 -75 -6q-15 0 -34 1.5t-30 3.5l-11 1q-10 2 -17.5 10.5t-7.5 18.5v224l-158 -158q-7 -7 -18 -8t-19 6l-106 106q-7 8 -6 19t8 18l158 158h-224q-10 0 -18.5 7.5 t-10.5 17.5q-6 41 -6 75q0 15 1.5 34t3.5 30l1 11q2 10 10.5 17.5t18.5 7.5h224l-158 158q-7 7 -8 18t6 19l106 106q8 7 19 6t18 -8l158 -158v224q0 10 7.5 18.5t17.5 10.5q41 6 75 6z" />
+<glyph unicode="+" d="M450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-350h350q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-350v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v350h-350q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5 h350v350q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xa0;" />
+<glyph unicode="&#xa5;" d="M825 1100h250q10 0 12.5 -5t-5.5 -13l-364 -364q-6 -6 -11 -18h268q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-100h275q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-174q0 -11 -7.5 -18.5t-18.5 -7.5h-148q-11 0 -18.5 7.5t-7.5 18.5v174 h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h125v100h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h118q-5 12 -11 18l-364 364q-8 8 -5.5 13t12.5 5h250q25 0 43 -18l164 -164q8 -8 18 -8t18 8l164 164q18 18 43 18z" />
+<glyph unicode="&#x2000;" horiz-adv-x="650" />
+<glyph unicode="&#x2001;" horiz-adv-x="1300" />
+<glyph unicode="&#x2002;" horiz-adv-x="650" />
+<glyph unicode="&#x2003;" horiz-adv-x="1300" />
+<glyph unicode="&#x2004;" horiz-adv-x="433" />
+<glyph unicode="&#x2005;" horiz-adv-x="325" />
+<glyph unicode="&#x2006;" horiz-adv-x="216" />
+<glyph unicode="&#x2007;" horiz-adv-x="216" />
+<glyph unicode="&#x2008;" horiz-adv-x="162" />
+<glyph unicode="&#x2009;" horiz-adv-x="260" />
+<glyph unicode="&#x200a;" horiz-adv-x="72" />
+<glyph unicode="&#x202f;" horiz-adv-x="260" />
+<glyph unicode="&#x205f;" horiz-adv-x="325" />
+<glyph unicode="&#x20ac;" d="M744 1198q242 0 354 -189q60 -104 66 -209h-181q0 45 -17.5 82.5t-43.5 61.5t-58 40.5t-60.5 24t-51.5 7.5q-19 0 -40.5 -5.5t-49.5 -20.5t-53 -38t-49 -62.5t-39 -89.5h379l-100 -100h-300q-6 -50 -6 -100h406l-100 -100h-300q9 -74 33 -132t52.5 -91t61.5 -54.5t59 -29 t47 -7.5q22 0 50.5 7.5t60.5 24.5t58 41t43.5 61t17.5 80h174q-30 -171 -128 -278q-107 -117 -274 -117q-206 0 -324 158q-36 48 -69 133t-45 204h-217l100 100h112q1 47 6 100h-218l100 100h134q20 87 51 153.5t62 103.5q117 141 297 141z" />
+<glyph unicode="&#x20bd;" d="M428 1200h350q67 0 120 -13t86 -31t57 -49.5t35 -56.5t17 -64.5t6.5 -60.5t0.5 -57v-16.5v-16.5q0 -36 -0.5 -57t-6.5 -61t-17 -65t-35 -57t-57 -50.5t-86 -31.5t-120 -13h-178l-2 -100h288q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-138v-175q0 -11 -5.5 -18 t-15.5 -7h-149q-10 0 -17.5 7.5t-7.5 17.5v175h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v100h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v475q0 10 7.5 17.5t17.5 7.5zM600 1000v-300h203q64 0 86.5 33t22.5 119q0 84 -22.5 116t-86.5 32h-203z" />
+<glyph unicode="&#x2212;" d="M250 700h800q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#x231b;" d="M1000 1200v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-50v-100q0 -91 -49.5 -165.5t-130.5 -109.5q81 -35 130.5 -109.5t49.5 -165.5v-150h50q21 0 35.5 -14.5t14.5 -35.5v-150h-800v150q0 21 14.5 35.5t35.5 14.5h50v150q0 91 49.5 165.5t130.5 109.5q-81 35 -130.5 109.5 t-49.5 165.5v100h-50q-21 0 -35.5 14.5t-14.5 35.5v150h800zM400 1000v-100q0 -60 32.5 -109.5t87.5 -73.5q28 -12 44 -37t16 -55t-16 -55t-44 -37q-55 -24 -87.5 -73.5t-32.5 -109.5v-150h400v150q0 60 -32.5 109.5t-87.5 73.5q-28 12 -44 37t-16 55t16 55t44 37 q55 24 87.5 73.5t32.5 109.5v100h-400z" />
+<glyph unicode="&#x25fc;" horiz-adv-x="500" d="M0 0z" />
+<glyph unicode="&#x2601;" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -206.5q0 -121 -85 -207.5t-205 -86.5h-750q-79 0 -135.5 57t-56.5 137q0 69 42.5 122.5t108.5 67.5q-2 12 -2 37q0 153 108 260.5t260 107.5z" />
+<glyph unicode="&#x26fa;" d="M774 1193.5q16 -9.5 20.5 -27t-5.5 -33.5l-136 -187l467 -746h30q20 0 35 -18.5t15 -39.5v-42h-1200v42q0 21 15 39.5t35 18.5h30l468 746l-135 183q-10 16 -5.5 34t20.5 28t34 5.5t28 -20.5l111 -148l112 150q9 16 27 20.5t34 -5zM600 200h377l-182 112l-195 534v-646z " />
+<glyph unicode="&#x2709;" d="M25 1100h1150q10 0 12.5 -5t-5.5 -13l-564 -567q-8 -8 -18 -8t-18 8l-564 567q-8 8 -5.5 13t12.5 5zM18 882l264 -264q8 -8 8 -18t-8 -18l-264 -264q-8 -8 -13 -5.5t-5 12.5v550q0 10 5 12.5t13 -5.5zM918 618l264 264q8 8 13 5.5t5 -12.5v-550q0 -10 -5 -12.5t-13 5.5 l-264 264q-8 8 -8 18t8 18zM818 482l364 -364q8 -8 5.5 -13t-12.5 -5h-1150q-10 0 -12.5 5t5.5 13l364 364q8 8 18 8t18 -8l164 -164q8 -8 18 -8t18 8l164 164q8 8 18 8t18 -8z" />
+<glyph unicode="&#x270f;" d="M1011 1210q19 0 33 -13l153 -153q13 -14 13 -33t-13 -33l-99 -92l-214 214l95 96q13 14 32 14zM1013 800l-615 -614l-214 214l614 614zM317 96l-333 -112l110 335z" />
+<glyph unicode="&#xe001;" d="M700 650v-550h250q21 0 35.5 -14.5t14.5 -35.5v-50h-800v50q0 21 14.5 35.5t35.5 14.5h250v550l-500 550h1200z" />
+<glyph unicode="&#xe002;" d="M368 1017l645 163q39 15 63 0t24 -49v-831q0 -55 -41.5 -95.5t-111.5 -63.5q-79 -25 -147 -4.5t-86 75t25.5 111.5t122.5 82q72 24 138 8v521l-600 -155v-606q0 -42 -44 -90t-109 -69q-79 -26 -147 -5.5t-86 75.5t25.5 111.5t122.5 82.5q72 24 138 7v639q0 38 14.5 59 t53.5 34z" />
+<glyph unicode="&#xe003;" d="M500 1191q100 0 191 -39t156.5 -104.5t104.5 -156.5t39 -191l-1 -2l1 -5q0 -141 -78 -262l275 -274q23 -26 22.5 -44.5t-22.5 -42.5l-59 -58q-26 -20 -46.5 -20t-39.5 20l-275 274q-119 -77 -261 -77l-5 1l-2 -1q-100 0 -191 39t-156.5 104.5t-104.5 156.5t-39 191 t39 191t104.5 156.5t156.5 104.5t191 39zM500 1022q-88 0 -162 -43t-117 -117t-43 -162t43 -162t117 -117t162 -43t162 43t117 117t43 162t-43 162t-117 117t-162 43z" />
+<glyph unicode="&#xe005;" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104z" />
+<glyph unicode="&#xe006;" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429z" />
+<glyph unicode="&#xe007;" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429zM477 700h-240l197 -142l-74 -226 l193 139l195 -140l-74 229l192 140h-234l-78 211z" />
+<glyph unicode="&#xe008;" d="M600 1200q124 0 212 -88t88 -212v-250q0 -46 -31 -98t-69 -52v-75q0 -10 6 -21.5t15 -17.5l358 -230q9 -5 15 -16.5t6 -21.5v-93q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v93q0 10 6 21.5t15 16.5l358 230q9 6 15 17.5t6 21.5v75q-38 0 -69 52 t-31 98v250q0 124 88 212t212 88z" />
+<glyph unicode="&#xe009;" d="M25 1100h1150q10 0 17.5 -7.5t7.5 -17.5v-1050q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v1050q0 10 7.5 17.5t17.5 7.5zM100 1000v-100h100v100h-100zM875 1000h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5t17.5 -7.5h550 q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM1000 1000v-100h100v100h-100zM100 800v-100h100v100h-100zM1000 800v-100h100v100h-100zM100 600v-100h100v100h-100zM1000 600v-100h100v100h-100zM875 500h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5 t17.5 -7.5h550q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM100 400v-100h100v100h-100zM1000 400v-100h100v100h-100zM100 200v-100h100v100h-100zM1000 200v-100h100v100h-100z" />
+<glyph unicode="&#xe010;" d="M50 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM50 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe011;" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM850 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 700h200q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h200 q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5 t35.5 14.5z" />
+<glyph unicode="&#xe012;" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h700q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe013;" d="M465 477l571 571q8 8 18 8t17 -8l177 -177q8 -7 8 -17t-8 -18l-783 -784q-7 -8 -17.5 -8t-17.5 8l-384 384q-8 8 -8 18t8 17l177 177q7 8 17 8t18 -8l171 -171q7 -7 18 -7t18 7z" />
+<glyph unicode="&#xe014;" d="M904 1083l178 -179q8 -8 8 -18.5t-8 -17.5l-267 -268l267 -268q8 -7 8 -17.5t-8 -18.5l-178 -178q-8 -8 -18.5 -8t-17.5 8l-268 267l-268 -267q-7 -8 -17.5 -8t-18.5 8l-178 178q-8 8 -8 18.5t8 17.5l267 268l-267 268q-8 7 -8 17.5t8 18.5l178 178q8 8 18.5 8t17.5 -8 l268 -267l268 268q7 7 17.5 7t18.5 -7z" />
+<glyph unicode="&#xe015;" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM425 900h150q10 0 17.5 -7.5t7.5 -17.5v-75h75q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5 t-17.5 -7.5h-75v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-75q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v75q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe016;" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM325 800h350q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-350q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe017;" d="M550 1200h100q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM800 975v166q167 -62 272 -209.5t105 -331.5q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5 t-184.5 123t-123 184.5t-45.5 224q0 184 105 331.5t272 209.5v-166q-103 -55 -165 -155t-62 -220q0 -116 57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5q0 120 -62 220t-165 155z" />
+<glyph unicode="&#xe018;" d="M1025 1200h150q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM725 800h150q10 0 17.5 -7.5t7.5 -17.5v-750q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v750 q0 10 7.5 17.5t17.5 7.5zM425 500h150q10 0 17.5 -7.5t7.5 -17.5v-450q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v450q0 10 7.5 17.5t17.5 7.5zM125 300h150q10 0 17.5 -7.5t7.5 -17.5v-250q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5 v250q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe019;" d="M600 1174q33 0 74 -5l38 -152l5 -1q49 -14 94 -39l5 -2l134 80q61 -48 104 -105l-80 -134l3 -5q25 -44 39 -93l1 -6l152 -38q5 -43 5 -73q0 -34 -5 -74l-152 -38l-1 -6q-15 -49 -39 -93l-3 -5l80 -134q-48 -61 -104 -105l-134 81l-5 -3q-44 -25 -94 -39l-5 -2l-38 -151 q-43 -5 -74 -5q-33 0 -74 5l-38 151l-5 2q-49 14 -94 39l-5 3l-134 -81q-60 48 -104 105l80 134l-3 5q-25 45 -38 93l-2 6l-151 38q-6 42 -6 74q0 33 6 73l151 38l2 6q13 48 38 93l3 5l-80 134q47 61 105 105l133 -80l5 2q45 25 94 39l5 1l38 152q43 5 74 5zM600 815 q-89 0 -152 -63t-63 -151.5t63 -151.5t152 -63t152 63t63 151.5t-63 151.5t-152 63z" />
+<glyph unicode="&#xe020;" d="M500 1300h300q41 0 70.5 -29.5t29.5 -70.5v-100h275q10 0 17.5 -7.5t7.5 -17.5v-75h-1100v75q0 10 7.5 17.5t17.5 7.5h275v100q0 41 29.5 70.5t70.5 29.5zM500 1200v-100h300v100h-300zM1100 900v-800q0 -41 -29.5 -70.5t-70.5 -29.5h-700q-41 0 -70.5 29.5t-29.5 70.5 v800h900zM300 800v-700h100v700h-100zM500 800v-700h100v700h-100zM700 800v-700h100v700h-100zM900 800v-700h100v700h-100z" />
+<glyph unicode="&#xe021;" d="M18 618l620 608q8 7 18.5 7t17.5 -7l608 -608q8 -8 5.5 -13t-12.5 -5h-175v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v375h-300v-375q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v575h-175q-10 0 -12.5 5t5.5 13z" />
+<glyph unicode="&#xe022;" d="M600 1200v-400q0 -41 29.5 -70.5t70.5 -29.5h300v-650q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5h450zM1000 800h-250q-21 0 -35.5 14.5t-14.5 35.5v250z" />
+<glyph unicode="&#xe023;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h50q10 0 17.5 -7.5t7.5 -17.5v-275h175q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe024;" d="M1300 0h-538l-41 400h-242l-41 -400h-538l431 1200h209l-21 -300h162l-20 300h208zM515 800l-27 -300h224l-27 300h-170z" />
+<glyph unicode="&#xe025;" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-450h191q20 0 25.5 -11.5t-7.5 -27.5l-327 -400q-13 -16 -32 -16t-32 16l-327 400q-13 16 -7.5 27.5t25.5 11.5h191v450q0 21 14.5 35.5t35.5 14.5zM1125 400h50q10 0 17.5 -7.5t7.5 -17.5v-350q0 -10 -7.5 -17.5t-17.5 -7.5 h-1050q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h50q10 0 17.5 -7.5t7.5 -17.5v-175h900v175q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe026;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -275q-13 -16 -32 -16t-32 16l-223 275q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z " />
+<glyph unicode="&#xe027;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM632 914l223 -275q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5l223 275q13 16 32 16 t32 -16z" />
+<glyph unicode="&#xe028;" d="M225 1200h750q10 0 19.5 -7t12.5 -17l186 -652q7 -24 7 -49v-425q0 -12 -4 -27t-9 -17q-12 -6 -37 -6h-1100q-12 0 -27 4t-17 8q-6 13 -6 38l1 425q0 25 7 49l185 652q3 10 12.5 17t19.5 7zM878 1000h-556q-10 0 -19 -7t-11 -18l-87 -450q-2 -11 4 -18t16 -7h150 q10 0 19.5 -7t11.5 -17l38 -152q2 -10 11.5 -17t19.5 -7h250q10 0 19.5 7t11.5 17l38 152q2 10 11.5 17t19.5 7h150q10 0 16 7t4 18l-87 450q-2 11 -11 18t-19 7z" />
+<glyph unicode="&#xe029;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM540 820l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" />
+<glyph unicode="&#xe030;" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-362q0 -10 -7.5 -17.5t-17.5 -7.5h-362q-11 0 -13 5.5t5 12.5l133 133q-109 76 -238 76q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5h150q0 -117 -45.5 -224 t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117z" />
+<glyph unicode="&#xe031;" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-361q0 -11 -7.5 -18.5t-18.5 -7.5h-361q-11 0 -13 5.5t5 12.5l134 134q-110 75 -239 75q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5h-150q0 117 45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117zM1027 600h150 q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5q-192 0 -348 118l-134 -134q-7 -8 -12.5 -5.5t-5.5 12.5v360q0 11 7.5 18.5t18.5 7.5h360q10 0 12.5 -5.5t-5.5 -12.5l-133 -133q110 -76 240 -76q116 0 214.5 57t155.5 155.5t57 214.5z" />
+<glyph unicode="&#xe032;" d="M125 1200h1050q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-1050q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM1075 1000h-850q-10 0 -17.5 -7.5t-7.5 -17.5v-850q0 -10 7.5 -17.5t17.5 -7.5h850q10 0 17.5 7.5t7.5 17.5v850 q0 10 -7.5 17.5t-17.5 7.5zM325 900h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 900h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 700h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 700h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 500h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 500h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 300h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 300h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe033;" d="M900 800v200q0 83 -58.5 141.5t-141.5 58.5h-300q-82 0 -141 -59t-59 -141v-200h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h900q41 0 70.5 29.5t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5h-100zM400 800v150q0 21 15 35.5t35 14.5h200 q20 0 35 -14.5t15 -35.5v-150h-300z" />
+<glyph unicode="&#xe034;" d="M125 1100h50q10 0 17.5 -7.5t7.5 -17.5v-1075h-100v1075q0 10 7.5 17.5t17.5 7.5zM1075 1052q4 0 9 -2q16 -6 16 -23v-421q0 -6 -3 -12q-33 -59 -66.5 -99t-65.5 -58t-56.5 -24.5t-52.5 -6.5q-26 0 -57.5 6.5t-52.5 13.5t-60 21q-41 15 -63 22.5t-57.5 15t-65.5 7.5 q-85 0 -160 -57q-7 -5 -15 -5q-6 0 -11 3q-14 7 -14 22v438q22 55 82 98.5t119 46.5q23 2 43 0.5t43 -7t32.5 -8.5t38 -13t32.5 -11q41 -14 63.5 -21t57 -14t63.5 -7q103 0 183 87q7 8 18 8z" />
+<glyph unicode="&#xe035;" d="M600 1175q116 0 227 -49.5t192.5 -131t131 -192.5t49.5 -227v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v300q0 127 -70.5 231.5t-184.5 161.5t-245 57t-245 -57t-184.5 -161.5t-70.5 -231.5v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50 q-10 0 -17.5 7.5t-7.5 17.5v300q0 116 49.5 227t131 192.5t192.5 131t227 49.5zM220 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460q0 8 6 14t14 6zM820 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460 q0 8 6 14t14 6z" />
+<glyph unicode="&#xe036;" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM900 668l120 120q7 7 17 7t17 -7l34 -34q7 -7 7 -17t-7 -17l-120 -120l120 -120q7 -7 7 -17 t-7 -17l-34 -34q-7 -7 -17 -7t-17 7l-120 119l-120 -119q-7 -7 -17 -7t-17 7l-34 34q-7 7 -7 17t7 17l119 120l-119 120q-7 7 -7 17t7 17l34 34q7 8 17 8t17 -8z" />
+<glyph unicode="&#xe037;" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6 l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238q-6 8 -4.5 18t9.5 17l29 22q7 5 15 5z" />
+<glyph unicode="&#xe038;" d="M967 1004h3q11 -1 17 -10q135 -179 135 -396q0 -105 -34 -206.5t-98 -185.5q-7 -9 -17 -10h-3q-9 0 -16 6l-42 34q-8 6 -9 16t5 18q111 150 111 328q0 90 -29.5 176t-84.5 157q-6 9 -5 19t10 16l42 33q7 5 15 5zM321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5 t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238 q-6 8 -4.5 18.5t9.5 16.5l29 22q7 5 15 5z" />
+<glyph unicode="&#xe039;" d="M500 900h100v-100h-100v-100h-400v-100h-100v600h500v-300zM1200 700h-200v-100h200v-200h-300v300h-200v300h-100v200h600v-500zM100 1100v-300h300v300h-300zM800 1100v-300h300v300h-300zM300 900h-100v100h100v-100zM1000 900h-100v100h100v-100zM300 500h200v-500 h-500v500h200v100h100v-100zM800 300h200v-100h-100v-100h-200v100h-100v100h100v200h-200v100h300v-300zM100 400v-300h300v300h-300zM300 200h-100v100h100v-100zM1200 200h-100v100h100v-100zM700 0h-100v100h100v-100zM1200 0h-300v100h300v-100z" />
+<glyph unicode="&#xe040;" d="M100 200h-100v1000h100v-1000zM300 200h-100v1000h100v-1000zM700 200h-200v1000h200v-1000zM900 200h-100v1000h100v-1000zM1200 200h-200v1000h200v-1000zM400 0h-300v100h300v-100zM600 0h-100v91h100v-91zM800 0h-100v91h100v-91zM1100 0h-200v91h200v-91z" />
+<glyph unicode="&#xe041;" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" />
+<glyph unicode="&#xe042;" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM800 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-56 56l424 426l-700 700h150zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5 t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" />
+<glyph unicode="&#xe043;" d="M300 1200h825q75 0 75 -75v-900q0 -25 -18 -43l-64 -64q-8 -8 -13 -5.5t-5 12.5v950q0 10 -7.5 17.5t-17.5 7.5h-700q-25 0 -43 -18l-64 -64q-8 -8 -5.5 -13t12.5 -5h700q10 0 17.5 -7.5t7.5 -17.5v-950q0 -10 -7.5 -17.5t-17.5 -7.5h-850q-10 0 -17.5 7.5t-7.5 17.5v975 q0 25 18 43l139 139q18 18 43 18z" />
+<glyph unicode="&#xe044;" d="M250 1200h800q21 0 35.5 -14.5t14.5 -35.5v-1150l-450 444l-450 -445v1151q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe045;" d="M822 1200h-444q-11 0 -19 -7.5t-9 -17.5l-78 -301q-7 -24 7 -45l57 -108q6 -9 17.5 -15t21.5 -6h450q10 0 21.5 6t17.5 15l62 108q14 21 7 45l-83 301q-1 10 -9 17.5t-19 7.5zM1175 800h-150q-10 0 -21 -6.5t-15 -15.5l-78 -156q-4 -9 -15 -15.5t-21 -6.5h-550 q-10 0 -21 6.5t-15 15.5l-78 156q-4 9 -15 15.5t-21 6.5h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-650q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h750q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5 t7.5 17.5v650q0 10 -7.5 17.5t-17.5 7.5zM850 200h-500q-10 0 -19.5 -7t-11.5 -17l-38 -152q-2 -10 3.5 -17t15.5 -7h600q10 0 15.5 7t3.5 17l-38 152q-2 10 -11.5 17t-19.5 7z" />
+<glyph unicode="&#xe046;" d="M500 1100h200q56 0 102.5 -20.5t72.5 -50t44 -59t25 -50.5l6 -20h150q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5h150q2 8 6.5 21.5t24 48t45 61t72 48t102.5 21.5zM900 800v-100 h100v100h-100zM600 730q-95 0 -162.5 -67.5t-67.5 -162.5t67.5 -162.5t162.5 -67.5t162.5 67.5t67.5 162.5t-67.5 162.5t-162.5 67.5zM600 603q43 0 73 -30t30 -73t-30 -73t-73 -30t-73 30t-30 73t30 73t73 30z" />
+<glyph unicode="&#xe047;" d="M681 1199l385 -998q20 -50 60 -92q18 -19 36.5 -29.5t27.5 -11.5l10 -2v-66h-417v66q53 0 75 43.5t5 88.5l-82 222h-391q-58 -145 -92 -234q-11 -34 -6.5 -57t25.5 -37t46 -20t55 -6v-66h-365v66q56 24 84 52q12 12 25 30.5t20 31.5l7 13l399 1006h93zM416 521h340 l-162 457z" />
+<glyph unicode="&#xe048;" d="M753 641q5 -1 14.5 -4.5t36 -15.5t50.5 -26.5t53.5 -40t50.5 -54.5t35.5 -70t14.5 -87q0 -67 -27.5 -125.5t-71.5 -97.5t-98.5 -66.5t-108.5 -40.5t-102 -13h-500v89q41 7 70.5 32.5t29.5 65.5v827q0 24 -0.5 34t-3.5 24t-8.5 19.5t-17 13.5t-28 12.5t-42.5 11.5v71 l471 -1q57 0 115.5 -20.5t108 -57t80.5 -94t31 -124.5q0 -51 -15.5 -96.5t-38 -74.5t-45 -50.5t-38.5 -30.5zM400 700h139q78 0 130.5 48.5t52.5 122.5q0 41 -8.5 70.5t-29.5 55.5t-62.5 39.5t-103.5 13.5h-118v-350zM400 200h216q80 0 121 50.5t41 130.5q0 90 -62.5 154.5 t-156.5 64.5h-159v-400z" />
+<glyph unicode="&#xe049;" d="M877 1200l2 -57q-83 -19 -116 -45.5t-40 -66.5l-132 -839q-9 -49 13 -69t96 -26v-97h-500v97q186 16 200 98l173 832q3 17 3 30t-1.5 22.5t-9 17.5t-13.5 12.5t-21.5 10t-26 8.5t-33.5 10q-13 3 -19 5v57h425z" />
+<glyph unicode="&#xe050;" d="M1300 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM175 1000h-75v-800h75l-125 -167l-125 167h75v800h-75l125 167z" />
+<glyph unicode="&#xe051;" d="M1100 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-650q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v650h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM1167 50l-167 -125v75h-800v-75l-167 125l167 125v-75h800v75z" />
+<glyph unicode="&#xe052;" d="M50 1100h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe053;" d="M250 1100h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM250 500h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe054;" d="M500 950v100q0 21 14.5 35.5t35.5 14.5h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5zM100 650v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000 q-21 0 -35.5 14.5t-14.5 35.5zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5zM0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5z" />
+<glyph unicode="&#xe055;" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe056;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 1100h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 800h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 500h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 500h800q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 200h800 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe057;" d="M400 0h-100v1100h100v-1100zM550 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM267 550l-167 -125v75h-200v100h200v75zM550 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe058;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM900 0h-100v1100h100v-1100zM50 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM1100 600h200v-100h-200v-75l-167 125l167 125v-75zM50 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe059;" d="M75 1000h750q31 0 53 -22t22 -53v-650q0 -31 -22 -53t-53 -22h-750q-31 0 -53 22t-22 53v650q0 31 22 53t53 22zM1200 300l-300 300l300 300v-600z" />
+<glyph unicode="&#xe060;" d="M44 1100h1112q18 0 31 -13t13 -31v-1012q0 -18 -13 -31t-31 -13h-1112q-18 0 -31 13t-13 31v1012q0 18 13 31t31 13zM100 1000v-737l247 182l298 -131l-74 156l293 318l236 -288v500h-1000zM342 884q56 0 95 -39t39 -94.5t-39 -95t-95 -39.5t-95 39.5t-39 95t39 94.5 t95 39z" />
+<glyph unicode="&#xe062;" d="M648 1169q117 0 216 -60t156.5 -161t57.5 -218q0 -115 -70 -258q-69 -109 -158 -225.5t-143 -179.5l-54 -62q-9 8 -25.5 24.5t-63.5 67.5t-91 103t-98.5 128t-95.5 148q-60 132 -60 249q0 88 34 169.5t91.5 142t137 96.5t166.5 36zM652.5 974q-91.5 0 -156.5 -65 t-65 -157t65 -156.5t156.5 -64.5t156.5 64.5t65 156.5t-65 157t-156.5 65z" />
+<glyph unicode="&#xe063;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 173v854q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57z" />
+<glyph unicode="&#xe064;" d="M554 1295q21 -72 57.5 -143.5t76 -130t83 -118t82.5 -117t70 -116t49.5 -126t18.5 -136.5q0 -71 -25.5 -135t-68.5 -111t-99 -82t-118.5 -54t-125.5 -23q-84 5 -161.5 34t-139.5 78.5t-99 125t-37 164.5q0 69 18 136.5t49.5 126.5t69.5 116.5t81.5 117.5t83.5 119 t76.5 131t58.5 143zM344 710q-23 -33 -43.5 -70.5t-40.5 -102.5t-17 -123q1 -37 14.5 -69.5t30 -52t41 -37t38.5 -24.5t33 -15q21 -7 32 -1t13 22l6 34q2 10 -2.5 22t-13.5 19q-5 4 -14 12t-29.5 40.5t-32.5 73.5q-26 89 6 271q2 11 -6 11q-8 1 -15 -10z" />
+<glyph unicode="&#xe065;" d="M1000 1013l108 115q2 1 5 2t13 2t20.5 -1t25 -9.5t28.5 -21.5q22 -22 27 -43t0 -32l-6 -10l-108 -115zM350 1100h400q50 0 105 -13l-187 -187h-368q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v182l200 200v-332 q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM1009 803l-362 -362l-161 -50l55 170l355 355z" />
+<glyph unicode="&#xe066;" d="M350 1100h361q-164 -146 -216 -200h-195q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5l200 153v-103q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M824 1073l339 -301q8 -7 8 -17.5t-8 -17.5l-340 -306q-7 -6 -12.5 -4t-6.5 11v203q-26 1 -54.5 0t-78.5 -7.5t-92 -17.5t-86 -35t-70 -57q10 59 33 108t51.5 81.5t65 58.5t68.5 40.5t67 24.5t56 13.5t40 4.5v210q1 10 6.5 12.5t13.5 -4.5z" />
+<glyph unicode="&#xe067;" d="M350 1100h350q60 0 127 -23l-178 -177h-349q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v69l200 200v-219q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M643 639l395 395q7 7 17.5 7t17.5 -7l101 -101q7 -7 7 -17.5t-7 -17.5l-531 -532q-7 -7 -17.5 -7t-17.5 7l-248 248q-7 7 -7 17.5t7 17.5l101 101q7 7 17.5 7t17.5 -7l111 -111q8 -7 18 -7t18 7z" />
+<glyph unicode="&#xe068;" d="M318 918l264 264q8 8 18 8t18 -8l260 -264q7 -8 4.5 -13t-12.5 -5h-170v-200h200v173q0 10 5 12t13 -5l264 -260q8 -7 8 -17.5t-8 -17.5l-264 -265q-8 -7 -13 -5t-5 12v173h-200v-200h170q10 0 12.5 -5t-4.5 -13l-260 -264q-8 -8 -18 -8t-18 8l-264 264q-8 8 -5.5 13 t12.5 5h175v200h-200v-173q0 -10 -5 -12t-13 5l-264 265q-8 7 -8 17.5t8 17.5l264 260q8 7 13 5t5 -12v-173h200v200h-175q-10 0 -12.5 5t5.5 13z" />
+<glyph unicode="&#xe069;" d="M250 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe070;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5 t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe071;" d="M1200 1050v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-492 480q-15 14 -15 35t15 35l492 480q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25z" />
+<glyph unicode="&#xe072;" d="M243 1074l814 -498q18 -11 18 -26t-18 -26l-814 -498q-18 -11 -30.5 -4t-12.5 28v1000q0 21 12.5 28t30.5 -4z" />
+<glyph unicode="&#xe073;" d="M250 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM650 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800 q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe074;" d="M1100 950v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5z" />
+<glyph unicode="&#xe075;" d="M500 612v438q0 21 10.5 25t25.5 -10l492 -480q15 -14 15 -35t-15 -35l-492 -480q-15 -14 -25.5 -10t-10.5 25v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10z" />
+<glyph unicode="&#xe076;" d="M1048 1102l100 1q20 0 35 -14.5t15 -35.5l5 -1000q0 -21 -14.5 -35.5t-35.5 -14.5l-100 -1q-21 0 -35.5 14.5t-14.5 35.5l-2 437l-463 -454q-14 -15 -24.5 -10.5t-10.5 25.5l-2 437l-462 -455q-15 -14 -25.5 -9.5t-10.5 24.5l-5 1000q0 21 10.5 25.5t25.5 -10.5l466 -450 l-2 438q0 20 10.5 24.5t25.5 -9.5l466 -451l-2 438q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe077;" d="M850 1100h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10l464 -453v438q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe078;" d="M686 1081l501 -540q15 -15 10.5 -26t-26.5 -11h-1042q-22 0 -26.5 11t10.5 26l501 540q15 15 36 15t36 -15zM150 400h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe079;" d="M885 900l-352 -353l352 -353l-197 -198l-552 552l552 550z" />
+<glyph unicode="&#xe080;" d="M1064 547l-551 -551l-198 198l353 353l-353 353l198 198z" />
+<glyph unicode="&#xe081;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM650 900h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-150 q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5h150v-150q0 -21 14.5 -35.5t35.5 -14.5h100q21 0 35.5 14.5t14.5 35.5v150h150q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-150v150q0 21 -14.5 35.5t-35.5 14.5z" />
+<glyph unicode="&#xe082;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM850 700h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5 t35.5 -14.5h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5z" />
+<glyph unicode="&#xe083;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM741.5 913q-12.5 0 -21.5 -9l-120 -120l-120 120q-9 9 -21.5 9 t-21.5 -9l-141 -141q-9 -9 -9 -21.5t9 -21.5l120 -120l-120 -120q-9 -9 -9 -21.5t9 -21.5l141 -141q9 -9 21.5 -9t21.5 9l120 120l120 -120q9 -9 21.5 -9t21.5 9l141 141q9 9 9 21.5t-9 21.5l-120 120l120 120q9 9 9 21.5t-9 21.5l-141 141q-9 9 -21.5 9z" />
+<glyph unicode="&#xe084;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM546 623l-84 85q-7 7 -17.5 7t-18.5 -7l-139 -139q-7 -8 -7 -18t7 -18 l242 -241q7 -8 17.5 -8t17.5 8l375 375q7 7 7 17.5t-7 18.5l-139 139q-7 7 -17.5 7t-17.5 -7z" />
+<glyph unicode="&#xe085;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM588 941q-29 0 -59 -5.5t-63 -20.5t-58 -38.5t-41.5 -63t-16.5 -89.5 q0 -25 20 -25h131q30 -5 35 11q6 20 20.5 28t45.5 8q20 0 31.5 -10.5t11.5 -28.5q0 -23 -7 -34t-26 -18q-1 0 -13.5 -4t-19.5 -7.5t-20 -10.5t-22 -17t-18.5 -24t-15.5 -35t-8 -46q-1 -8 5.5 -16.5t20.5 -8.5h173q7 0 22 8t35 28t37.5 48t29.5 74t12 100q0 47 -17 83 t-42.5 57t-59.5 34.5t-64 18t-59 4.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="&#xe086;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM675 1000h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5 t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5zM675 700h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h75v-200h-75q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h350q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5 t-17.5 7.5h-75v275q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="&#xe087;" d="M525 1200h150q10 0 17.5 -7.5t7.5 -17.5v-194q103 -27 178.5 -102.5t102.5 -178.5h194q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-194q-27 -103 -102.5 -178.5t-178.5 -102.5v-194q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v194 q-103 27 -178.5 102.5t-102.5 178.5h-194q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h194q27 103 102.5 178.5t178.5 102.5v194q0 10 7.5 17.5t17.5 7.5zM700 893v-168q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v168q-68 -23 -119 -74 t-74 -119h168q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-168q23 -68 74 -119t119 -74v168q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-168q68 23 119 74t74 119h-168q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h168 q-23 68 -74 119t-119 74z" />
+<glyph unicode="&#xe088;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM759 823l64 -64q7 -7 7 -17.5t-7 -17.5l-124 -124l124 -124q7 -7 7 -17.5t-7 -17.5l-64 -64q-7 -7 -17.5 -7t-17.5 7l-124 124l-124 -124q-7 -7 -17.5 -7t-17.5 7l-64 64 q-7 7 -7 17.5t7 17.5l124 124l-124 124q-7 7 -7 17.5t7 17.5l64 64q7 7 17.5 7t17.5 -7l124 -124l124 124q7 7 17.5 7t17.5 -7z" />
+<glyph unicode="&#xe089;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM782 788l106 -106q7 -7 7 -17.5t-7 -17.5l-320 -321q-8 -7 -18 -7t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l197 197q7 7 17.5 7t17.5 -7z" />
+<glyph unicode="&#xe090;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5q0 -120 65 -225 l587 587q-105 65 -225 65zM965 819l-584 -584q104 -62 219 -62q116 0 214.5 57t155.5 155.5t57 214.5q0 115 -62 219z" />
+<glyph unicode="&#xe091;" d="M39 582l522 427q16 13 27.5 8t11.5 -26v-291h550q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-550v-291q0 -21 -11.5 -26t-27.5 8l-522 427q-16 13 -16 32t16 32z" />
+<glyph unicode="&#xe092;" d="M639 1009l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291h-550q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h550v291q0 21 11.5 26t27.5 -8z" />
+<glyph unicode="&#xe093;" d="M682 1161l427 -522q13 -16 8 -27.5t-26 -11.5h-291v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v550h-291q-21 0 -26 11.5t8 27.5l427 522q13 16 32 16t32 -16z" />
+<glyph unicode="&#xe094;" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-550h291q21 0 26 -11.5t-8 -27.5l-427 -522q-13 -16 -32 -16t-32 16l-427 522q-13 16 -8 27.5t26 11.5h291v550q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe095;" d="M639 1109l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291q-94 -2 -182 -20t-170.5 -52t-147 -92.5t-100.5 -135.5q5 105 27 193.5t67.5 167t113 135t167 91.5t225.5 42v262q0 21 11.5 26t27.5 -8z" />
+<glyph unicode="&#xe096;" d="M850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5zM350 0h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249 q8 7 18 7t18 -7l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5z" />
+<glyph unicode="&#xe097;" d="M1014 1120l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249q8 7 18 7t18 -7zM250 600h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5z" />
+<glyph unicode="&#xe101;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM704 900h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5 t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="&#xe102;" d="M260 1200q9 0 19 -2t15 -4l5 -2q22 -10 44 -23l196 -118q21 -13 36 -24q29 -21 37 -12q11 13 49 35l196 118q22 13 45 23q17 7 38 7q23 0 47 -16.5t37 -33.5l13 -16q14 -21 18 -45l25 -123l8 -44q1 -9 8.5 -14.5t17.5 -5.5h61q10 0 17.5 -7.5t7.5 -17.5v-50 q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 -7.5t-7.5 -17.5v-175h-400v300h-200v-300h-400v175q0 10 -7.5 17.5t-17.5 7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5h61q11 0 18 3t7 8q0 4 9 52l25 128q5 25 19 45q2 3 5 7t13.5 15t21.5 19.5t26.5 15.5 t29.5 7zM915 1079l-166 -162q-7 -7 -5 -12t12 -5h219q10 0 15 7t2 17l-51 149q-3 10 -11 12t-15 -6zM463 917l-177 157q-8 7 -16 5t-11 -12l-51 -143q-3 -10 2 -17t15 -7h231q11 0 12.5 5t-5.5 12zM500 0h-375q-10 0 -17.5 7.5t-7.5 17.5v375h400v-400zM1100 400v-375 q0 -10 -7.5 -17.5t-17.5 -7.5h-375v400h400z" />
+<glyph unicode="&#xe103;" d="M1165 1190q8 3 21 -6.5t13 -17.5q-2 -178 -24.5 -323.5t-55.5 -245.5t-87 -174.5t-102.5 -118.5t-118 -68.5t-118.5 -33t-120 -4.5t-105 9.5t-90 16.5q-61 12 -78 11q-4 1 -12.5 0t-34 -14.5t-52.5 -40.5l-153 -153q-26 -24 -37 -14.5t-11 43.5q0 64 42 102q8 8 50.5 45 t66.5 58q19 17 35 47t13 61q-9 55 -10 102.5t7 111t37 130t78 129.5q39 51 80 88t89.5 63.5t94.5 45t113.5 36t129 31t157.5 37t182 47.5zM1116 1098q-8 9 -22.5 -3t-45.5 -50q-38 -47 -119 -103.5t-142 -89.5l-62 -33q-56 -30 -102 -57t-104 -68t-102.5 -80.5t-85.5 -91 t-64 -104.5q-24 -56 -31 -86t2 -32t31.5 17.5t55.5 59.5q25 30 94 75.5t125.5 77.5t147.5 81q70 37 118.5 69t102 79.5t99 111t86.5 148.5q22 50 24 60t-6 19z" />
+<glyph unicode="&#xe104;" d="M653 1231q-39 -67 -54.5 -131t-10.5 -114.5t24.5 -96.5t47.5 -80t63.5 -62.5t68.5 -46.5t65 -30q-4 7 -17.5 35t-18.5 39.5t-17 39.5t-17 43t-13 42t-9.5 44.5t-2 42t4 43t13.5 39t23 38.5q96 -42 165 -107.5t105 -138t52 -156t13 -159t-19 -149.5q-13 -55 -44 -106.5 t-68 -87t-78.5 -64.5t-72.5 -45t-53 -22q-72 -22 -127 -11q-31 6 -13 19q6 3 17 7q13 5 32.5 21t41 44t38.5 63.5t21.5 81.5t-6.5 94.5t-50 107t-104 115.5q10 -104 -0.5 -189t-37 -140.5t-65 -93t-84 -52t-93.5 -11t-95 24.5q-80 36 -131.5 114t-53.5 171q-2 23 0 49.5 t4.5 52.5t13.5 56t27.5 60t46 64.5t69.5 68.5q-8 -53 -5 -102.5t17.5 -90t34 -68.5t44.5 -39t49 -2q31 13 38.5 36t-4.5 55t-29 64.5t-36 75t-26 75.5q-15 85 2 161.5t53.5 128.5t85.5 92.5t93.5 61t81.5 25.5z" />
+<glyph unicode="&#xe105;" d="M600 1094q82 0 160.5 -22.5t140 -59t116.5 -82.5t94.5 -95t68 -95t42.5 -82.5t14 -57.5t-14 -57.5t-43 -82.5t-68.5 -95t-94.5 -95t-116.5 -82.5t-140 -59t-159.5 -22.5t-159.5 22.5t-140 59t-116.5 82.5t-94.5 95t-68.5 95t-43 82.5t-14 57.5t14 57.5t42.5 82.5t68 95 t94.5 95t116.5 82.5t140 59t160.5 22.5zM888 829q-15 15 -18 12t5 -22q25 -57 25 -119q0 -124 -88 -212t-212 -88t-212 88t-88 212q0 59 23 114q8 19 4.5 22t-17.5 -12q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q22 -36 47 -71t70 -82t92.5 -81t113 -58.5t133.5 -24.5 t133.5 24t113 58.5t92.5 81.5t70 81.5t47 70.5q11 18 9 42.5t-14 41.5q-90 117 -163 189zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l35 34q14 15 12.5 33.5t-16.5 33.5q-44 44 -89 117q-11 18 -28 20t-32 -12z" />
+<glyph unicode="&#xe106;" d="M592 0h-148l31 120q-91 20 -175.5 68.5t-143.5 106.5t-103.5 119t-66.5 110t-22 76q0 21 14 57.5t42.5 82.5t68 95t94.5 95t116.5 82.5t140 59t160.5 22.5q61 0 126 -15l32 121h148zM944 770l47 181q108 -85 176.5 -192t68.5 -159q0 -26 -19.5 -71t-59.5 -102t-93 -112 t-129 -104.5t-158 -75.5l46 173q77 49 136 117t97 131q11 18 9 42.5t-14 41.5q-54 70 -107 130zM310 824q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q18 -30 39 -60t57 -70.5t74 -73t90 -61t105 -41.5l41 154q-107 18 -178.5 101.5t-71.5 193.5q0 59 23 114q8 19 4.5 22 t-17.5 -12zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l12 11l22 86l-3 4q-44 44 -89 117q-11 18 -28 20t-32 -12z" />
+<glyph unicode="&#xe107;" d="M-90 100l642 1066q20 31 48 28.5t48 -35.5l642 -1056q21 -32 7.5 -67.5t-50.5 -35.5h-1294q-37 0 -50.5 34t7.5 66zM155 200h345v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h345l-445 723zM496 700h208q20 0 32 -14.5t8 -34.5l-58 -252 q-4 -20 -21.5 -34.5t-37.5 -14.5h-54q-20 0 -37.5 14.5t-21.5 34.5l-58 252q-4 20 8 34.5t32 14.5z" />
+<glyph unicode="&#xe108;" d="M650 1200q62 0 106 -44t44 -106v-339l363 -325q15 -14 26 -38.5t11 -44.5v-41q0 -20 -12 -26.5t-29 5.5l-359 249v-263q100 -93 100 -113v-64q0 -21 -13 -29t-32 1l-205 128l-205 -128q-19 -9 -32 -1t-13 29v64q0 20 100 113v263l-359 -249q-17 -12 -29 -5.5t-12 26.5v41 q0 20 11 44.5t26 38.5l363 325v339q0 62 44 106t106 44z" />
+<glyph unicode="&#xe109;" d="M850 1200h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-150h-1100v150q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-50h500v50q0 21 14.5 35.5t35.5 14.5zM1100 800v-750q0 -21 -14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v750h1100zM100 600v-100h100v100h-100zM300 600v-100h100v100h-100zM500 600v-100h100v100h-100zM700 600v-100h100v100h-100zM900 600v-100h100v100h-100zM100 400v-100h100v100h-100zM300 400v-100h100v100h-100zM500 400 v-100h100v100h-100zM700 400v-100h100v100h-100zM900 400v-100h100v100h-100zM100 200v-100h100v100h-100zM300 200v-100h100v100h-100zM500 200v-100h100v100h-100zM700 200v-100h100v100h-100zM900 200v-100h100v100h-100z" />
+<glyph unicode="&#xe110;" d="M1135 1165l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-159l-600 -600h-291q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h209l600 600h241v150q0 21 10.5 25t24.5 -10zM522 819l-141 -141l-122 122h-209q-21 0 -35.5 14.5 t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h291zM1135 565l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-241l-181 181l141 141l122 -122h159v150q0 21 10.5 25t24.5 -10z" />
+<glyph unicode="&#xe111;" d="M100 1100h1000q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-596l-304 -300v300h-100q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5z" />
+<glyph unicode="&#xe112;" d="M150 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM850 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM1100 800v-300q0 -41 -3 -77.5t-15 -89.5t-32 -96t-58 -89t-89 -77t-129 -51t-174 -20t-174 20 t-129 51t-89 77t-58 89t-32 96t-15 89.5t-3 77.5v300h300v-250v-27v-42.5t1.5 -41t5 -38t10 -35t16.5 -30t25.5 -24.5t35 -19t46.5 -12t60 -4t60 4.5t46.5 12.5t35 19.5t25 25.5t17 30.5t10 35t5 38t2 40.5t-0.5 42v25v250h300z" />
+<glyph unicode="&#xe113;" d="M1100 411l-198 -199l-353 353l-353 -353l-197 199l551 551z" />
+<glyph unicode="&#xe114;" d="M1101 789l-550 -551l-551 551l198 199l353 -353l353 353z" />
+<glyph unicode="&#xe115;" d="M404 1000h746q21 0 35.5 -14.5t14.5 -35.5v-551h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v401h-381zM135 984l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-400h385l215 -200h-750q-21 0 -35.5 14.5 t-14.5 35.5v550h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
+<glyph unicode="&#xe116;" d="M56 1200h94q17 0 31 -11t18 -27l38 -162h896q24 0 39 -18.5t10 -42.5l-100 -475q-5 -21 -27 -42.5t-55 -21.5h-633l48 -200h535q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-50q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-300v-50 q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-31q-18 0 -32.5 10t-20.5 19l-5 10l-201 961h-54q-20 0 -35 14.5t-15 35.5t15 35.5t35 14.5z" />
+<glyph unicode="&#xe117;" d="M1200 1000v-100h-1200v100h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500zM0 800h1200v-800h-1200v800z" />
+<glyph unicode="&#xe118;" d="M200 800l-200 -400v600h200q0 41 29.5 70.5t70.5 29.5h300q42 0 71 -29.5t29 -70.5h500v-200h-1000zM1500 700l-300 -700h-1200l300 700h1200z" />
+<glyph unicode="&#xe119;" d="M635 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-601h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v601h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
+<glyph unicode="&#xe120;" d="M936 864l249 -229q14 -15 14 -35.5t-14 -35.5l-249 -229q-15 -15 -25.5 -10.5t-10.5 24.5v151h-600v-151q0 -20 -10.5 -24.5t-25.5 10.5l-249 229q-14 15 -14 35.5t14 35.5l249 229q15 15 25.5 10.5t10.5 -25.5v-149h600v149q0 21 10.5 25.5t25.5 -10.5z" />
+<glyph unicode="&#xe121;" d="M1169 400l-172 732q-5 23 -23 45.5t-38 22.5h-672q-20 0 -38 -20t-23 -41l-172 -739h1138zM1100 300h-1000q-41 0 -70.5 -29.5t-29.5 -70.5v-100q0 -41 29.5 -70.5t70.5 -29.5h1000q41 0 70.5 29.5t29.5 70.5v100q0 41 -29.5 70.5t-70.5 29.5zM800 100v100h100v-100h-100 zM1000 100v100h100v-100h-100z" />
+<glyph unicode="&#xe122;" d="M1150 1100q21 0 35.5 -14.5t14.5 -35.5v-850q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v850q0 21 14.5 35.5t35.5 14.5zM1000 200l-675 200h-38l47 -276q3 -16 -5.5 -20t-29.5 -4h-7h-84q-20 0 -34.5 14t-18.5 35q-55 337 -55 351v250v6q0 16 1 23.5t6.5 14 t17.5 6.5h200l675 250v-850zM0 750v-250q-4 0 -11 0.5t-24 6t-30 15t-24 30t-11 48.5v50q0 26 10.5 46t25 30t29 16t25.5 7z" />
+<glyph unicode="&#xe123;" d="M553 1200h94q20 0 29 -10.5t3 -29.5l-18 -37q83 -19 144 -82.5t76 -140.5l63 -327l118 -173h17q19 0 33 -14.5t14 -35t-13 -40.5t-31 -27q-8 -4 -23 -9.5t-65 -19.5t-103 -25t-132.5 -20t-158.5 -9q-57 0 -115 5t-104 12t-88.5 15.5t-73.5 17.5t-54.5 16t-35.5 12l-11 4 q-18 8 -31 28t-13 40.5t14 35t33 14.5h17l118 173l63 327q15 77 76 140t144 83l-18 32q-6 19 3.5 32t28.5 13zM498 110q50 -6 102 -6q53 0 102 6q-12 -49 -39.5 -79.5t-62.5 -30.5t-63 30.5t-39 79.5z" />
+<glyph unicode="&#xe124;" d="M800 946l224 78l-78 -224l234 -45l-180 -155l180 -155l-234 -45l78 -224l-224 78l-45 -234l-155 180l-155 -180l-45 234l-224 -78l78 224l-234 45l180 155l-180 155l234 45l-78 224l224 -78l45 234l155 -180l155 180z" />
+<glyph unicode="&#xe125;" d="M650 1200h50q40 0 70 -40.5t30 -84.5v-150l-28 -125h328q40 0 70 -40.5t30 -84.5v-100q0 -45 -29 -74l-238 -344q-16 -24 -38 -40.5t-45 -16.5h-250q-7 0 -42 25t-66 50l-31 25h-61q-45 0 -72.5 18t-27.5 57v400q0 36 20 63l145 196l96 198q13 28 37.5 48t51.5 20z M650 1100l-100 -212l-150 -213v-375h100l136 -100h214l250 375v125h-450l50 225v175h-50zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe126;" d="M600 1100h250q23 0 45 -16.5t38 -40.5l238 -344q29 -29 29 -74v-100q0 -44 -30 -84.5t-70 -40.5h-328q28 -118 28 -125v-150q0 -44 -30 -84.5t-70 -40.5h-50q-27 0 -51.5 20t-37.5 48l-96 198l-145 196q-20 27 -20 63v400q0 39 27.5 57t72.5 18h61q124 100 139 100z M50 1000h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM636 1000l-136 -100h-100v-375l150 -213l100 -212h50v175l-50 225h450v125l-250 375h-214z" />
+<glyph unicode="&#xe127;" d="M356 873l363 230q31 16 53 -6l110 -112q13 -13 13.5 -32t-11.5 -34l-84 -121h302q84 0 138 -38t54 -110t-55 -111t-139 -39h-106l-131 -339q-6 -21 -19.5 -41t-28.5 -20h-342q-7 0 -90 81t-83 94v525q0 17 14 35.5t28 28.5zM400 792v-503l100 -89h293l131 339 q6 21 19.5 41t28.5 20h203q21 0 30.5 25t0.5 50t-31 25h-456h-7h-6h-5.5t-6 0.5t-5 1.5t-5 2t-4 2.5t-4 4t-2.5 4.5q-12 25 5 47l146 183l-86 83zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500 q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe128;" d="M475 1103l366 -230q2 -1 6 -3.5t14 -10.5t18 -16.5t14.5 -20t6.5 -22.5v-525q0 -13 -86 -94t-93 -81h-342q-15 0 -28.5 20t-19.5 41l-131 339h-106q-85 0 -139.5 39t-54.5 111t54 110t138 38h302l-85 121q-11 15 -10.5 34t13.5 32l110 112q22 22 53 6zM370 945l146 -183 q17 -22 5 -47q-2 -2 -3.5 -4.5t-4 -4t-4 -2.5t-5 -2t-5 -1.5t-6 -0.5h-6h-6.5h-6h-475v-100h221q15 0 29 -20t20 -41l130 -339h294l106 89v503l-342 236zM1050 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5 v500q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe129;" d="M550 1294q72 0 111 -55t39 -139v-106l339 -131q21 -6 41 -19.5t20 -28.5v-342q0 -7 -81 -90t-94 -83h-525q-17 0 -35.5 14t-28.5 28l-9 14l-230 363q-16 31 6 53l112 110q13 13 32 13.5t34 -11.5l121 -84v302q0 84 38 138t110 54zM600 972v203q0 21 -25 30.5t-50 0.5 t-25 -31v-456v-7v-6v-5.5t-0.5 -6t-1.5 -5t-2 -5t-2.5 -4t-4 -4t-4.5 -2.5q-25 -12 -47 5l-183 146l-83 -86l236 -339h503l89 100v293l-339 131q-21 6 -41 19.5t-20 28.5zM450 200h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe130;" d="M350 1100h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5zM600 306v-106q0 -84 -39 -139t-111 -55t-110 54t-38 138v302l-121 -84q-15 -12 -34 -11.5t-32 13.5l-112 110 q-22 22 -6 53l230 363q1 2 3.5 6t10.5 13.5t16.5 17t20 13.5t22.5 6h525q13 0 94 -83t81 -90v-342q0 -15 -20 -28.5t-41 -19.5zM308 900l-236 -339l83 -86l183 146q22 17 47 5q2 -1 4.5 -2.5t4 -4t2.5 -4t2 -5t1.5 -5t0.5 -6v-5.5v-6v-7v-456q0 -22 25 -31t50 0.5t25 30.5 v203q0 15 20 28.5t41 19.5l339 131v293l-89 100h-503z" />
+<glyph unicode="&#xe131;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM914 632l-275 223q-16 13 -27.5 8t-11.5 -26v-137h-275 q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h275v-137q0 -21 11.5 -26t27.5 8l275 223q16 13 16 32t-16 32z" />
+<glyph unicode="&#xe132;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM561 855l-275 -223q-16 -13 -16 -32t16 -32l275 -223q16 -13 27.5 -8 t11.5 26v137h275q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5h-275v137q0 21 -11.5 26t-27.5 -8z" />
+<glyph unicode="&#xe133;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM855 639l-223 275q-13 16 -32 16t-32 -16l-223 -275q-13 -16 -8 -27.5 t26 -11.5h137v-275q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v275h137q21 0 26 11.5t-8 27.5z" />
+<glyph unicode="&#xe134;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM675 900h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-275h-137q-21 0 -26 -11.5 t8 -27.5l223 -275q13 -16 32 -16t32 16l223 275q13 16 8 27.5t-26 11.5h-137v275q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="&#xe135;" d="M600 1176q116 0 222.5 -46t184 -123.5t123.5 -184t46 -222.5t-46 -222.5t-123.5 -184t-184 -123.5t-222.5 -46t-222.5 46t-184 123.5t-123.5 184t-46 222.5t46 222.5t123.5 184t184 123.5t222.5 46zM627 1101q-15 -12 -36.5 -20.5t-35.5 -12t-43 -8t-39 -6.5 q-15 -3 -45.5 0t-45.5 -2q-20 -7 -51.5 -26.5t-34.5 -34.5q-3 -11 6.5 -22.5t8.5 -18.5q-3 -34 -27.5 -91t-29.5 -79q-9 -34 5 -93t8 -87q0 -9 17 -44.5t16 -59.5q12 0 23 -5t23.5 -15t19.5 -14q16 -8 33 -15t40.5 -15t34.5 -12q21 -9 52.5 -32t60 -38t57.5 -11 q7 -15 -3 -34t-22.5 -40t-9.5 -38q13 -21 23 -34.5t27.5 -27.5t36.5 -18q0 -7 -3.5 -16t-3.5 -14t5 -17q104 -2 221 112q30 29 46.5 47t34.5 49t21 63q-13 8 -37 8.5t-36 7.5q-15 7 -49.5 15t-51.5 19q-18 0 -41 -0.5t-43 -1.5t-42 -6.5t-38 -16.5q-51 -35 -66 -12 q-4 1 -3.5 25.5t0.5 25.5q-6 13 -26.5 17.5t-24.5 6.5q1 15 -0.5 30.5t-7 28t-18.5 11.5t-31 -21q-23 -25 -42 4q-19 28 -8 58q6 16 22 22q6 -1 26 -1.5t33.5 -4t19.5 -13.5q7 -12 18 -24t21.5 -20.5t20 -15t15.5 -10.5l5 -3q2 12 7.5 30.5t8 34.5t-0.5 32q-3 18 3.5 29 t18 22.5t15.5 24.5q6 14 10.5 35t8 31t15.5 22.5t34 22.5q-6 18 10 36q8 0 24 -1.5t24.5 -1.5t20 4.5t20.5 15.5q-10 23 -31 42.5t-37.5 29.5t-49 27t-43.5 23q0 1 2 8t3 11.5t1.5 10.5t-1 9.5t-4.5 4.5q31 -13 58.5 -14.5t38.5 2.5l12 5q5 28 -9.5 46t-36.5 24t-50 15 t-41 20q-18 -4 -37 0zM613 994q0 -17 8 -42t17 -45t9 -23q-8 1 -39.5 5.5t-52.5 10t-37 16.5q3 11 16 29.5t16 25.5q10 -10 19 -10t14 6t13.5 14.5t16.5 12.5z" />
+<glyph unicode="&#xe136;" d="M756 1157q164 92 306 -9l-259 -138l145 -232l251 126q6 -89 -34 -156.5t-117 -110.5q-60 -34 -127 -39.5t-126 16.5l-596 -596q-15 -16 -36.5 -16t-36.5 16l-111 110q-15 15 -15 36.5t15 37.5l600 599q-34 101 5.5 201.5t135.5 154.5z" />
+<glyph unicode="&#xe137;" horiz-adv-x="1220" d="M100 1196h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 1096h-200v-100h200v100zM100 796h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 696h-500v-100h500v100zM100 396h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 296h-300v-100h300v100z " />
+<glyph unicode="&#xe138;" d="M150 1200h900q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM700 500v-300l-200 -200v500l-350 500h900z" />
+<glyph unicode="&#xe139;" d="M500 1200h200q41 0 70.5 -29.5t29.5 -70.5v-100h300q41 0 70.5 -29.5t29.5 -70.5v-400h-500v100h-200v-100h-500v400q0 41 29.5 70.5t70.5 29.5h300v100q0 41 29.5 70.5t70.5 29.5zM500 1100v-100h200v100h-200zM1200 400v-200q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v200h1200z" />
+<glyph unicode="&#xe140;" d="M50 1200h300q21 0 25 -10.5t-10 -24.5l-94 -94l199 -199q7 -8 7 -18t-7 -18l-106 -106q-8 -7 -18 -7t-18 7l-199 199l-94 -94q-14 -14 -24.5 -10t-10.5 25v300q0 21 14.5 35.5t35.5 14.5zM850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-199 -199q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l199 199l-94 94q-14 14 -10 24.5t25 10.5zM364 470l106 -106q7 -8 7 -18t-7 -18l-199 -199l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l199 199 q8 7 18 7t18 -7zM1071 271l94 94q14 14 24.5 10t10.5 -25v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -25 10.5t10 24.5l94 94l-199 199q-7 8 -7 18t7 18l106 106q8 7 18 7t18 -7z" />
+<glyph unicode="&#xe141;" d="M596 1192q121 0 231.5 -47.5t190 -127t127 -190t47.5 -231.5t-47.5 -231.5t-127 -190.5t-190 -127t-231.5 -47t-231.5 47t-190.5 127t-127 190.5t-47 231.5t47 231.5t127 190t190.5 127t231.5 47.5zM596 1010q-112 0 -207.5 -55.5t-151 -151t-55.5 -207.5t55.5 -207.5 t151 -151t207.5 -55.5t207.5 55.5t151 151t55.5 207.5t-55.5 207.5t-151 151t-207.5 55.5zM454.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38.5 -16.5t-38.5 16.5t-16 39t16 38.5t38.5 16zM754.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38 -16.5q-14 0 -29 10l-55 -145 q17 -23 17 -51q0 -36 -25.5 -61.5t-61.5 -25.5t-61.5 25.5t-25.5 61.5q0 32 20.5 56.5t51.5 29.5l122 126l1 1q-9 14 -9 28q0 23 16 39t38.5 16zM345.5 709q22.5 0 38.5 -16t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16zM854.5 709q22.5 0 38.5 -16 t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16z" />
+<glyph unicode="&#xe142;" d="M546 173l469 470q91 91 99 192q7 98 -52 175.5t-154 94.5q-22 4 -47 4q-34 0 -66.5 -10t-56.5 -23t-55.5 -38t-48 -41.5t-48.5 -47.5q-376 -375 -391 -390q-30 -27 -45 -41.5t-37.5 -41t-32 -46.5t-16 -47.5t-1.5 -56.5q9 -62 53.5 -95t99.5 -33q74 0 125 51l548 548 q36 36 20 75q-7 16 -21.5 26t-32.5 10q-26 0 -50 -23q-13 -12 -39 -38l-341 -338q-15 -15 -35.5 -15.5t-34.5 13.5t-14 34.5t14 34.5q327 333 361 367q35 35 67.5 51.5t78.5 16.5q14 0 29 -1q44 -8 74.5 -35.5t43.5 -68.5q14 -47 2 -96.5t-47 -84.5q-12 -11 -32 -32 t-79.5 -81t-114.5 -115t-124.5 -123.5t-123 -119.5t-96.5 -89t-57 -45q-56 -27 -120 -27q-70 0 -129 32t-93 89q-48 78 -35 173t81 163l511 511q71 72 111 96q91 55 198 55q80 0 152 -33q78 -36 129.5 -103t66.5 -154q17 -93 -11 -183.5t-94 -156.5l-482 -476 q-15 -15 -36 -16t-37 14t-17.5 34t14.5 35z" />
+<glyph unicode="&#xe143;" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104zM896 972q-33 0 -64.5 -19t-56.5 -46t-47.5 -53.5t-43.5 -45.5t-37.5 -19t-36 19t-40 45.5t-43 53.5t-54 46t-65.5 19q-67 0 -122.5 -55.5t-55.5 -132.5q0 -23 13.5 -51t46 -65t57.5 -63t76 -75l22 -22q15 -14 44 -44t50.5 -51t46 -44t41 -35t23 -12 t23.5 12t42.5 36t46 44t52.5 52t44 43q4 4 12 13q43 41 63.5 62t52 55t46 55t26 46t11.5 44q0 79 -53 133.5t-120 54.5z" />
+<glyph unicode="&#xe144;" d="M776.5 1214q93.5 0 159.5 -66l141 -141q66 -66 66 -160q0 -42 -28 -95.5t-62 -87.5l-29 -29q-31 53 -77 99l-18 18l95 95l-247 248l-389 -389l212 -212l-105 -106l-19 18l-141 141q-66 66 -66 159t66 159l283 283q65 66 158.5 66zM600 706l105 105q10 -8 19 -17l141 -141 q66 -66 66 -159t-66 -159l-283 -283q-66 -66 -159 -66t-159 66l-141 141q-66 66 -66 159.5t66 159.5l55 55q29 -55 75 -102l18 -17l-95 -95l247 -248l389 389z" />
+<glyph unicode="&#xe145;" d="M603 1200q85 0 162 -15t127 -38t79 -48t29 -46v-953q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-41 0 -70.5 29.5t-29.5 70.5v953q0 21 30 46.5t81 48t129 37.5t163 15zM300 1000v-700h600v700h-600zM600 254q-43 0 -73.5 -30.5t-30.5 -73.5t30.5 -73.5t73.5 -30.5t73.5 30.5 t30.5 73.5t-30.5 73.5t-73.5 30.5z" />
+<glyph unicode="&#xe146;" d="M902 1185l283 -282q15 -15 15 -36t-14.5 -35.5t-35.5 -14.5t-35 15l-36 35l-279 -267v-300l-212 210l-308 -307l-280 -203l203 280l307 308l-210 212h300l267 279l-35 36q-15 14 -15 35t14.5 35.5t35.5 14.5t35 -15z" />
+<glyph unicode="&#xe148;" d="M700 1248v-78q38 -5 72.5 -14.5t75.5 -31.5t71 -53.5t52 -84t24 -118.5h-159q-4 36 -10.5 59t-21 45t-40 35.5t-64.5 20.5v-307l64 -13q34 -7 64 -16.5t70 -32t67.5 -52.5t47.5 -80t20 -112q0 -139 -89 -224t-244 -97v-77h-100v79q-150 16 -237 103q-40 40 -52.5 93.5 t-15.5 139.5h139q5 -77 48.5 -126t117.5 -65v335l-27 8q-46 14 -79 26.5t-72 36t-63 52t-40 72.5t-16 98q0 70 25 126t67.5 92t94.5 57t110 27v77h100zM600 754v274q-29 -4 -50 -11t-42 -21.5t-31.5 -41.5t-10.5 -65q0 -29 7 -50.5t16.5 -34t28.5 -22.5t31.5 -14t37.5 -10 q9 -3 13 -4zM700 547v-310q22 2 42.5 6.5t45 15.5t41.5 27t29 42t12 59.5t-12.5 59.5t-38 44.5t-53 31t-66.5 24.5z" />
+<glyph unicode="&#xe149;" d="M561 1197q84 0 160.5 -40t123.5 -109.5t47 -147.5h-153q0 40 -19.5 71.5t-49.5 48.5t-59.5 26t-55.5 9q-37 0 -79 -14.5t-62 -35.5q-41 -44 -41 -101q0 -26 13.5 -63t26.5 -61t37 -66q6 -9 9 -14h241v-100h-197q8 -50 -2.5 -115t-31.5 -95q-45 -62 -99 -112 q34 10 83 17.5t71 7.5q32 1 102 -16t104 -17q83 0 136 30l50 -147q-31 -19 -58 -30.5t-55 -15.5t-42 -4.5t-46 -0.5q-23 0 -76 17t-111 32.5t-96 11.5q-39 -3 -82 -16t-67 -25l-23 -11l-55 145q4 3 16 11t15.5 10.5t13 9t15.5 12t14.5 14t17.5 18.5q48 55 54 126.5 t-30 142.5h-221v100h166q-23 47 -44 104q-7 20 -12 41.5t-6 55.5t6 66.5t29.5 70.5t58.5 71q97 88 263 88z" />
+<glyph unicode="&#xe150;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM935 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-900h-200v900h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
+<glyph unicode="&#xe151;" d="M1000 700h-100v100h-100v-100h-100v500h300v-500zM400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM801 1100v-200h100v200h-100zM1000 350l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150z " />
+<glyph unicode="&#xe152;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 1050l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150zM1000 0h-100v100h-100v-100h-100v500h300v-500zM801 400v-200h100v200h-100z " />
+<glyph unicode="&#xe153;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 700h-100v400h-100v100h200v-500zM1100 0h-100v100h-200v400h300v-500zM901 400v-200h100v200h-100z" />
+<glyph unicode="&#xe154;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1100 700h-100v100h-200v400h300v-500zM901 1100v-200h100v200h-100zM1000 0h-100v400h-100v100h200v-500z" />
+<glyph unicode="&#xe155;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM900 1000h-200v200h200v-200zM1000 700h-300v200h300v-200zM1100 400h-400v200h400v-200zM1200 100h-500v200h500v-200z" />
+<glyph unicode="&#xe156;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1200 1000h-500v200h500v-200zM1100 700h-400v200h400v-200zM1000 400h-300v200h300v-200zM900 100h-200v200h200v-200z" />
+<glyph unicode="&#xe157;" d="M350 1100h400q162 0 256 -93.5t94 -256.5v-400q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5z" />
+<glyph unicode="&#xe158;" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-163 0 -256.5 92.5t-93.5 257.5v400q0 163 94 256.5t256 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM440 770l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" />
+<glyph unicode="&#xe159;" d="M350 1100h400q163 0 256.5 -94t93.5 -256v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 163 92.5 256.5t257.5 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM350 700h400q21 0 26.5 -12t-6.5 -28l-190 -253q-12 -17 -30 -17t-30 17l-190 253q-12 16 -6.5 28t26.5 12z" />
+<glyph unicode="&#xe160;" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -163 -92.5 -256.5t-257.5 -93.5h-400q-163 0 -256.5 94t-93.5 256v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM580 693l190 -253q12 -16 6.5 -28t-26.5 -12h-400q-21 0 -26.5 12t6.5 28l190 253q12 17 30 17t30 -17z" />
+<glyph unicode="&#xe161;" d="M550 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h450q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-450q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM338 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" />
+<glyph unicode="&#xe162;" d="M793 1182l9 -9q8 -10 5 -27q-3 -11 -79 -225.5t-78 -221.5l300 1q24 0 32.5 -17.5t-5.5 -35.5q-1 0 -133.5 -155t-267 -312.5t-138.5 -162.5q-12 -15 -26 -15h-9l-9 8q-9 11 -4 32q2 9 42 123.5t79 224.5l39 110h-302q-23 0 -31 19q-10 21 6 41q75 86 209.5 237.5 t228 257t98.5 111.5q9 16 25 16h9z" />
+<glyph unicode="&#xe163;" d="M350 1100h400q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-450q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h450q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400 q0 165 92.5 257.5t257.5 92.5zM938 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" />
+<glyph unicode="&#xe164;" d="M750 1200h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -10.5 -25t-24.5 10l-109 109l-312 -312q-15 -15 -35.5 -15t-35.5 15l-141 141q-15 15 -15 35.5t15 35.5l312 312l-109 109q-14 14 -10 24.5t25 10.5zM456 900h-156q-41 0 -70.5 -29.5t-29.5 -70.5v-500 q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v148l200 200v-298q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5h300z" />
+<glyph unicode="&#xe165;" d="M600 1186q119 0 227.5 -46.5t187 -125t125 -187t46.5 -227.5t-46.5 -227.5t-125 -187t-187 -125t-227.5 -46.5t-227.5 46.5t-187 125t-125 187t-46.5 227.5t46.5 227.5t125 187t187 125t227.5 46.5zM600 1022q-115 0 -212 -56.5t-153.5 -153.5t-56.5 -212t56.5 -212 t153.5 -153.5t212 -56.5t212 56.5t153.5 153.5t56.5 212t-56.5 212t-153.5 153.5t-212 56.5zM600 794q80 0 137 -57t57 -137t-57 -137t-137 -57t-137 57t-57 137t57 137t137 57z" />
+<glyph unicode="&#xe166;" d="M450 1200h200q21 0 35.5 -14.5t14.5 -35.5v-350h245q20 0 25 -11t-9 -26l-383 -426q-14 -15 -33.5 -15t-32.5 15l-379 426q-13 15 -8.5 26t25.5 11h250v350q0 21 14.5 35.5t35.5 14.5zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" />
+<glyph unicode="&#xe167;" d="M583 1182l378 -435q14 -15 9 -31t-26 -16h-244v-250q0 -20 -17 -35t-39 -15h-200q-20 0 -32 14.5t-12 35.5v250h-250q-20 0 -25.5 16.5t8.5 31.5l383 431q14 16 33.5 17t33.5 -14zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" />
+<glyph unicode="&#xe168;" d="M396 723l369 369q7 7 17.5 7t17.5 -7l139 -139q7 -8 7 -18.5t-7 -17.5l-525 -525q-7 -8 -17.5 -8t-17.5 8l-292 291q-7 8 -7 18t7 18l139 139q8 7 18.5 7t17.5 -7zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50 h-100z" />
+<glyph unicode="&#xe169;" d="M135 1023l142 142q14 14 35 14t35 -14l77 -77l-212 -212l-77 76q-14 15 -14 36t14 35zM655 855l210 210q14 14 24.5 10t10.5 -25l-2 -599q-1 -20 -15.5 -35t-35.5 -15l-597 -1q-21 0 -25 10.5t10 24.5l208 208l-154 155l212 212zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5 v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" />
+<glyph unicode="&#xe170;" d="M350 1200l599 -2q20 -1 35 -15.5t15 -35.5l1 -597q0 -21 -10.5 -25t-24.5 10l-208 208l-155 -154l-212 212l155 154l-210 210q-14 14 -10 24.5t25 10.5zM524 512l-76 -77q-15 -14 -36 -14t-35 14l-142 142q-14 14 -14 35t14 35l77 77zM50 300h1000q21 0 35.5 -14.5 t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" />
+<glyph unicode="&#xe171;" d="M1200 103l-483 276l-314 -399v423h-399l1196 796v-1096zM483 424v-230l683 953z" />
+<glyph unicode="&#xe172;" d="M1100 1000v-850q0 -21 -14.5 -35.5t-35.5 -14.5h-150v400h-700v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200z" />
+<glyph unicode="&#xe173;" d="M1100 1000l-2 -149l-299 -299l-95 95q-9 9 -21.5 9t-21.5 -9l-149 -147h-312v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1132 638l106 -106q7 -7 7 -17.5t-7 -17.5l-420 -421q-8 -7 -18 -7 t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l297 297q7 7 17.5 7t17.5 -7z" />
+<glyph unicode="&#xe174;" d="M1100 1000v-269l-103 -103l-134 134q-15 15 -33.5 16.5t-34.5 -12.5l-266 -266h-329v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1202 572l70 -70q15 -15 15 -35.5t-15 -35.5l-131 -131 l131 -131q15 -15 15 -35.5t-15 -35.5l-70 -70q-15 -15 -35.5 -15t-35.5 15l-131 131l-131 -131q-15 -15 -35.5 -15t-35.5 15l-70 70q-15 15 -15 35.5t15 35.5l131 131l-131 131q-15 15 -15 35.5t15 35.5l70 70q15 15 35.5 15t35.5 -15l131 -131l131 131q15 15 35.5 15 t35.5 -15z" />
+<glyph unicode="&#xe175;" d="M1100 1000v-300h-350q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-500v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM850 600h100q21 0 35.5 -14.5t14.5 -35.5v-250h150q21 0 25 -10.5t-10 -24.5 l-230 -230q-14 -14 -35 -14t-35 14l-230 230q-14 14 -10 24.5t25 10.5h150v250q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe176;" d="M1100 1000v-400l-165 165q-14 15 -35 15t-35 -15l-263 -265h-402v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM935 565l230 -229q14 -15 10 -25.5t-25 -10.5h-150v-250q0 -20 -14.5 -35 t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35v250h-150q-21 0 -25 10.5t10 25.5l230 229q14 15 35 15t35 -15z" />
+<glyph unicode="&#xe177;" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-150h-1200v150q0 21 14.5 35.5t35.5 14.5zM1200 800v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v550h1200zM100 500v-200h400v200h-400z" />
+<glyph unicode="&#xe178;" d="M935 1165l248 -230q14 -14 14 -35t-14 -35l-248 -230q-14 -14 -24.5 -10t-10.5 25v150h-400v200h400v150q0 21 10.5 25t24.5 -10zM200 800h-50q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v-200zM400 800h-100v200h100v-200zM18 435l247 230 q14 14 24.5 10t10.5 -25v-150h400v-200h-400v-150q0 -21 -10.5 -25t-24.5 10l-247 230q-15 14 -15 35t15 35zM900 300h-100v200h100v-200zM1000 500h51q20 0 34.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-34.5 -14.5h-51v200z" />
+<glyph unicode="&#xe179;" d="M862 1073l276 116q25 18 43.5 8t18.5 -41v-1106q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v397q-4 1 -11 5t-24 17.5t-30 29t-24 42t-11 56.5v359q0 31 18.5 65t43.5 52zM550 1200q22 0 34.5 -12.5t14.5 -24.5l1 -13v-450q0 -28 -10.5 -59.5 t-25 -56t-29 -45t-25.5 -31.5l-10 -11v-447q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v447q-4 4 -11 11.5t-24 30.5t-30 46t-24 55t-11 60v450q0 2 0.5 5.5t4 12t8.5 15t14.5 12t22.5 5.5q20 0 32.5 -12.5t14.5 -24.5l3 -13v-350h100v350v5.5t2.5 12 t7 15t15 12t25.5 5.5q23 0 35.5 -12.5t13.5 -24.5l1 -13v-350h100v350q0 2 0.5 5.5t3 12t7 15t15 12t24.5 5.5z" />
+<glyph unicode="&#xe180;" d="M1200 1100v-56q-4 0 -11 -0.5t-24 -3t-30 -7.5t-24 -15t-11 -24v-888q0 -22 25 -34.5t50 -13.5l25 -2v-56h-400v56q75 0 87.5 6.5t12.5 43.5v394h-500v-394q0 -37 12.5 -43.5t87.5 -6.5v-56h-400v56q4 0 11 0.5t24 3t30 7.5t24 15t11 24v888q0 22 -25 34.5t-50 13.5 l-25 2v56h400v-56q-75 0 -87.5 -6.5t-12.5 -43.5v-394h500v394q0 37 -12.5 43.5t-87.5 6.5v56h400z" />
+<glyph unicode="&#xe181;" d="M675 1000h375q21 0 35.5 -14.5t14.5 -35.5v-150h-105l-295 -98v98l-200 200h-400l100 100h375zM100 900h300q41 0 70.5 -29.5t29.5 -70.5v-500q0 -41 -29.5 -70.5t-70.5 -29.5h-300q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5zM100 800v-200h300v200 h-300zM1100 535l-400 -133v163l400 133v-163zM100 500v-200h300v200h-300zM1100 398v-248q0 -21 -14.5 -35.5t-35.5 -14.5h-375l-100 -100h-375l-100 100h400l200 200h105z" />
+<glyph unicode="&#xe182;" d="M17 1007l162 162q17 17 40 14t37 -22l139 -194q14 -20 11 -44.5t-20 -41.5l-119 -118q102 -142 228 -268t267 -227l119 118q17 17 42.5 19t44.5 -12l192 -136q19 -14 22.5 -37.5t-13.5 -40.5l-163 -162q-3 -1 -9.5 -1t-29.5 2t-47.5 6t-62.5 14.5t-77.5 26.5t-90 42.5 t-101.5 60t-111 83t-119 108.5q-74 74 -133.5 150.5t-94.5 138.5t-60 119.5t-34.5 100t-15 74.5t-4.5 48z" />
+<glyph unicode="&#xe183;" d="M600 1100q92 0 175 -10.5t141.5 -27t108.5 -36.5t81.5 -40t53.5 -37t31 -27l9 -10v-200q0 -21 -14.5 -33t-34.5 -9l-202 34q-20 3 -34.5 20t-14.5 38v146q-141 24 -300 24t-300 -24v-146q0 -21 -14.5 -38t-34.5 -20l-202 -34q-20 -3 -34.5 9t-14.5 33v200q3 4 9.5 10.5 t31 26t54 37.5t80.5 39.5t109 37.5t141 26.5t175 10.5zM600 795q56 0 97 -9.5t60 -23.5t30 -28t12 -24l1 -10v-50l365 -303q14 -15 24.5 -40t10.5 -45v-212q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v212q0 20 10.5 45t24.5 40l365 303v50 q0 4 1 10.5t12 23t30 29t60 22.5t97 10z" />
+<glyph unicode="&#xe184;" d="M1100 700l-200 -200h-600l-200 200v500h200v-200h200v200h200v-200h200v200h200v-500zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5 t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe185;" d="M700 1100h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-1000h300v1000q0 41 -29.5 70.5t-70.5 29.5zM1100 800h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-700h300v700q0 41 -29.5 70.5t-70.5 29.5zM400 0h-300v400q0 41 29.5 70.5t70.5 29.5h100q41 0 70.5 -29.5t29.5 -70.5v-400z " />
+<glyph unicode="&#xe186;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" />
+<glyph unicode="&#xe187;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 300h-100v200h-100v-200h-100v500h100v-200h100v200h100v-500zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" />
+<glyph unicode="&#xe188;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-300h200v-100h-300v500h300v-100zM900 700h-200v-300h200v-100h-300v500h300v-100z" />
+<glyph unicode="&#xe189;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 400l-300 150l300 150v-300zM900 550l-300 -150v300z" />
+<glyph unicode="&#xe190;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM900 300h-700v500h700v-500zM800 700h-130q-38 0 -66.5 -43t-28.5 -108t27 -107t68 -42h130v300zM300 700v-300 h130q41 0 68 42t27 107t-28.5 108t-66.5 43h-130z" />
+<glyph unicode="&#xe191;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 300h-100v400h-100v100h200v-500z M700 300h-100v100h100v-100z" />
+<glyph unicode="&#xe192;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM300 700h200v-400h-300v500h100v-100zM900 300h-100v400h-100v100h200v-500zM300 600v-200h100v200h-100z M700 300h-100v100h100v-100z" />
+<glyph unicode="&#xe193;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 500l-199 -200h-100v50l199 200v150h-200v100h300v-300zM900 300h-100v400h-100v100h200v-500zM701 300h-100 v100h100v-100z" />
+<glyph unicode="&#xe194;" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700h-300v-200h300v-100h-300l-100 100v200l100 100h300v-100z" />
+<glyph unicode="&#xe195;" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700v-100l-50 -50l100 -100v-50h-100l-100 100h-150v-100h-100v400h300zM500 700v-100h200v100h-200z" />
+<glyph unicode="&#xe197;" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -207t-85 -207t-205 -86.5h-128v250q0 21 -14.5 35.5t-35.5 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-250h-222q-80 0 -136 57.5t-56 136.5q0 69 43 122.5t108 67.5q-2 19 -2 37q0 100 49 185 t134 134t185 49zM525 500h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -244q-13 -16 -32 -16t-32 16l-223 244q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe198;" d="M502 1089q110 0 201 -59.5t135 -156.5q43 15 89 15q121 0 206 -86.5t86 -206.5q0 -99 -60 -181t-150 -110l-378 360q-13 16 -31.5 16t-31.5 -16l-381 -365h-9q-79 0 -135.5 57.5t-56.5 136.5q0 69 43 122.5t108 67.5q-2 19 -2 38q0 100 49 184.5t133.5 134t184.5 49.5z M632 467l223 -228q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5q199 204 223 228q19 19 31.5 19t32.5 -19z" />
+<glyph unicode="&#xe199;" d="M700 100v100h400l-270 300h170l-270 300h170l-300 333l-300 -333h170l-270 -300h170l-270 -300h400v-100h-50q-21 0 -35.5 -14.5t-14.5 -35.5v-50h400v50q0 21 -14.5 35.5t-35.5 14.5h-50z" />
+<glyph unicode="&#xe200;" d="M600 1179q94 0 167.5 -56.5t99.5 -145.5q89 -6 150.5 -71.5t61.5 -155.5q0 -61 -29.5 -112.5t-79.5 -82.5q9 -29 9 -55q0 -74 -52.5 -126.5t-126.5 -52.5q-55 0 -100 30v-251q21 0 35.5 -14.5t14.5 -35.5v-50h-300v50q0 21 14.5 35.5t35.5 14.5v251q-45 -30 -100 -30 q-74 0 -126.5 52.5t-52.5 126.5q0 18 4 38q-47 21 -75.5 65t-28.5 97q0 74 52.5 126.5t126.5 52.5q5 0 23 -2q0 2 -1 10t-1 13q0 116 81.5 197.5t197.5 81.5z" />
+<glyph unicode="&#xe201;" d="M1010 1010q111 -111 150.5 -260.5t0 -299t-150.5 -260.5q-83 -83 -191.5 -126.5t-218.5 -43.5t-218.5 43.5t-191.5 126.5q-111 111 -150.5 260.5t0 299t150.5 260.5q83 83 191.5 126.5t218.5 43.5t218.5 -43.5t191.5 -126.5zM476 1065q-4 0 -8 -1q-121 -34 -209.5 -122.5 t-122.5 -209.5q-4 -12 2.5 -23t18.5 -14l36 -9q3 -1 7 -1q23 0 29 22q27 96 98 166q70 71 166 98q11 3 17.5 13.5t3.5 22.5l-9 35q-3 13 -14 19q-7 4 -15 4zM512 920q-4 0 -9 -2q-80 -24 -138.5 -82.5t-82.5 -138.5q-4 -13 2 -24t19 -14l34 -9q4 -1 8 -1q22 0 28 21 q18 58 58.5 98.5t97.5 58.5q12 3 18 13.5t3 21.5l-9 35q-3 12 -14 19q-7 4 -15 4zM719.5 719.5q-49.5 49.5 -119.5 49.5t-119.5 -49.5t-49.5 -119.5t49.5 -119.5t119.5 -49.5t119.5 49.5t49.5 119.5t-49.5 119.5zM855 551q-22 0 -28 -21q-18 -58 -58.5 -98.5t-98.5 -57.5 q-11 -4 -17 -14.5t-3 -21.5l9 -35q3 -12 14 -19q7 -4 15 -4q4 0 9 2q80 24 138.5 82.5t82.5 138.5q4 13 -2.5 24t-18.5 14l-34 9q-4 1 -8 1zM1000 515q-23 0 -29 -22q-27 -96 -98 -166q-70 -71 -166 -98q-11 -3 -17.5 -13.5t-3.5 -22.5l9 -35q3 -13 14 -19q7 -4 15 -4 q4 0 8 1q121 34 209.5 122.5t122.5 209.5q4 12 -2.5 23t-18.5 14l-36 9q-3 1 -7 1z" />
+<glyph unicode="&#xe202;" d="M700 800h300v-380h-180v200h-340v-200h-380v755q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM700 300h162l-212 -212l-212 212h162v200h100v-200zM520 0h-395q-10 0 -17.5 7.5t-7.5 17.5v395zM1000 220v-195q0 -10 -7.5 -17.5t-17.5 -7.5h-195z" />
+<glyph unicode="&#xe203;" d="M700 800h300v-520l-350 350l-550 -550v1095q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM862 200h-162v-200h-100v200h-162l212 212zM480 0h-355q-10 0 -17.5 7.5t-7.5 17.5v55h380v-80zM1000 80v-55q0 -10 -7.5 -17.5t-17.5 -7.5h-155v80h180z" />
+<glyph unicode="&#xe204;" d="M1162 800h-162v-200h100l100 -100h-300v300h-162l212 212zM200 800h200q27 0 40 -2t29.5 -10.5t23.5 -30t7 -57.5h300v-100h-600l-200 -350v450h100q0 36 7 57.5t23.5 30t29.5 10.5t40 2zM800 400h240l-240 -400h-800l300 500h500v-100z" />
+<glyph unicode="&#xe205;" d="M650 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM1000 850v150q41 0 70.5 -29.5t29.5 -70.5v-800 q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-1 0 -20 4l246 246l-326 326v324q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM412 250l-212 -212v162h-200v100h200v162z" />
+<glyph unicode="&#xe206;" d="M450 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM800 850v150q41 0 70.5 -29.5t29.5 -70.5v-500 h-200v-300h200q0 -36 -7 -57.5t-23.5 -30t-29.5 -10.5t-40 -2h-600q-41 0 -70.5 29.5t-29.5 70.5v800q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM1212 250l-212 -212v162h-200v100h200v162z" />
+<glyph unicode="&#xe209;" d="M658 1197l637 -1104q23 -38 7 -65.5t-60 -27.5h-1276q-44 0 -60 27.5t7 65.5l637 1104q22 39 54 39t54 -39zM704 800h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM500 300v-100h200 v100h-200z" />
+<glyph unicode="&#xe210;" d="M425 1100h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM825 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM25 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5zM425 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5 v150q0 10 7.5 17.5t17.5 7.5zM25 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe211;" d="M700 1200h100v-200h-100v-100h350q62 0 86.5 -39.5t-3.5 -94.5l-66 -132q-41 -83 -81 -134h-772q-40 51 -81 134l-66 132q-28 55 -3.5 94.5t86.5 39.5h350v100h-100v200h100v100h200v-100zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100 h-950l138 100h-13q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe212;" d="M600 1300q40 0 68.5 -29.5t28.5 -70.5h-194q0 41 28.5 70.5t68.5 29.5zM443 1100h314q18 -37 18 -75q0 -8 -3 -25h328q41 0 44.5 -16.5t-30.5 -38.5l-175 -145h-678l-178 145q-34 22 -29 38.5t46 16.5h328q-3 17 -3 25q0 38 18 75zM250 700h700q21 0 35.5 -14.5 t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-150v-200l275 -200h-950l275 200v200h-150q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe213;" d="M600 1181q75 0 128 -53t53 -128t-53 -128t-128 -53t-128 53t-53 128t53 128t128 53zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13 l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe214;" d="M600 1300q47 0 92.5 -53.5t71 -123t25.5 -123.5q0 -78 -55.5 -133.5t-133.5 -55.5t-133.5 55.5t-55.5 133.5q0 62 34 143l144 -143l111 111l-163 163q34 26 63 26zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45 zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe215;" d="M600 1200l300 -161v-139h-300q0 -57 18.5 -108t50 -91.5t63 -72t70 -67.5t57.5 -61h-530q-60 83 -90.5 177.5t-30.5 178.5t33 164.5t87.5 139.5t126 96.5t145.5 41.5v-98zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100 h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe216;" d="M600 1300q41 0 70.5 -29.5t29.5 -70.5v-78q46 -26 73 -72t27 -100v-50h-400v50q0 54 27 100t73 72v78q0 41 29.5 70.5t70.5 29.5zM400 800h400q54 0 100 -27t72 -73h-172v-100h200v-100h-200v-100h200v-100h-200v-100h200q0 -83 -58.5 -141.5t-141.5 -58.5h-400 q-83 0 -141.5 58.5t-58.5 141.5v400q0 83 58.5 141.5t141.5 58.5z" />
+<glyph unicode="&#xe218;" d="M150 1100h900q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM125 400h950q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-283l224 -224q13 -13 13 -31.5t-13 -32 t-31.5 -13.5t-31.5 13l-88 88h-524l-87 -88q-13 -13 -32 -13t-32 13.5t-13 32t13 31.5l224 224h-289q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM541 300l-100 -100h324l-100 100h-124z" />
+<glyph unicode="&#xe219;" d="M200 1100h800q83 0 141.5 -58.5t58.5 -141.5v-200h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100v200q0 83 58.5 141.5t141.5 58.5zM100 600h1000q41 0 70.5 -29.5 t29.5 -70.5v-300h-1200v300q0 41 29.5 70.5t70.5 29.5zM300 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200zM1100 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200z" />
+<glyph unicode="&#xe221;" d="M480 1165l682 -683q31 -31 31 -75.5t-31 -75.5l-131 -131h-481l-517 518q-32 31 -32 75.5t32 75.5l295 296q31 31 75.5 31t76.5 -31zM108 794l342 -342l303 304l-341 341zM250 100h800q21 0 35.5 -14.5t14.5 -35.5v-50h-900v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe223;" d="M1057 647l-189 506q-8 19 -27.5 33t-40.5 14h-400q-21 0 -40.5 -14t-27.5 -33l-189 -506q-8 -19 1.5 -33t30.5 -14h625v-150q0 -21 14.5 -35.5t35.5 -14.5t35.5 14.5t14.5 35.5v150h125q21 0 30.5 14t1.5 33zM897 0h-595v50q0 21 14.5 35.5t35.5 14.5h50v50 q0 21 14.5 35.5t35.5 14.5h48v300h200v-300h47q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-50z" />
+<glyph unicode="&#xe224;" d="M900 800h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-375v591l-300 300v84q0 10 7.5 17.5t17.5 7.5h375v-400zM1200 900h-200v200zM400 600h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-650q-10 0 -17.5 7.5t-7.5 17.5v950q0 10 7.5 17.5t17.5 7.5h375v-400zM700 700h-200v200z " />
+<glyph unicode="&#xe225;" d="M484 1095h195q75 0 146 -32.5t124 -86t89.5 -122.5t48.5 -142q18 -14 35 -20q31 -10 64.5 6.5t43.5 48.5q10 34 -15 71q-19 27 -9 43q5 8 12.5 11t19 -1t23.5 -16q41 -44 39 -105q-3 -63 -46 -106.5t-104 -43.5h-62q-7 -55 -35 -117t-56 -100l-39 -234q-3 -20 -20 -34.5 t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l12 70q-49 -14 -91 -14h-195q-24 0 -65 8l-11 -64q-3 -20 -20 -34.5t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l26 157q-84 74 -128 175l-159 53q-19 7 -33 26t-14 40v50q0 21 14.5 35.5t35.5 14.5h124q11 87 56 166l-111 95 q-16 14 -12.5 23.5t24.5 9.5h203q116 101 250 101zM675 1000h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h250q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="&#xe226;" d="M641 900l423 247q19 8 42 2.5t37 -21.5l32 -38q14 -15 12.5 -36t-17.5 -34l-139 -120h-390zM50 1100h106q67 0 103 -17t66 -71l102 -212h823q21 0 35.5 -14.5t14.5 -35.5v-50q0 -21 -14 -40t-33 -26l-737 -132q-23 -4 -40 6t-26 25q-42 67 -100 67h-300q-62 0 -106 44 t-44 106v200q0 62 44 106t106 44zM173 928h-80q-19 0 -28 -14t-9 -35v-56q0 -51 42 -51h134q16 0 21.5 8t5.5 24q0 11 -16 45t-27 51q-18 28 -43 28zM550 727q-32 0 -54.5 -22.5t-22.5 -54.5t22.5 -54.5t54.5 -22.5t54.5 22.5t22.5 54.5t-22.5 54.5t-54.5 22.5zM130 389 l152 130q18 19 34 24t31 -3.5t24.5 -17.5t25.5 -28q28 -35 50.5 -51t48.5 -13l63 5l48 -179q13 -61 -3.5 -97.5t-67.5 -79.5l-80 -69q-47 -40 -109 -35.5t-103 51.5l-130 151q-40 47 -35.5 109.5t51.5 102.5zM380 377l-102 -88q-31 -27 2 -65l37 -43q13 -15 27.5 -19.5 t31.5 6.5l61 53q19 16 14 49q-2 20 -12 56t-17 45q-11 12 -19 14t-23 -8z" />
+<glyph unicode="&#xe227;" d="M625 1200h150q10 0 17.5 -7.5t7.5 -17.5v-109q79 -33 131 -87.5t53 -128.5q1 -46 -15 -84.5t-39 -61t-46 -38t-39 -21.5l-17 -6q6 0 15 -1.5t35 -9t50 -17.5t53 -30t50 -45t35.5 -64t14.5 -84q0 -59 -11.5 -105.5t-28.5 -76.5t-44 -51t-49.5 -31.5t-54.5 -16t-49.5 -6.5 t-43.5 -1v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-100v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-175q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v600h-75q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5h175v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h100v75q0 10 7.5 17.5t17.5 7.5zM400 900v-200h263q28 0 48.5 10.5t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-263zM400 500v-200h363q28 0 48.5 10.5 t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-363z" />
+<glyph unicode="&#xe230;" d="M212 1198h780q86 0 147 -61t61 -147v-416q0 -51 -18 -142.5t-36 -157.5l-18 -66q-29 -87 -93.5 -146.5t-146.5 -59.5h-572q-82 0 -147 59t-93 147q-8 28 -20 73t-32 143.5t-20 149.5v416q0 86 61 147t147 61zM600 1045q-70 0 -132.5 -11.5t-105.5 -30.5t-78.5 -41.5 t-57 -45t-36 -41t-20.5 -30.5l-6 -12l156 -243h560l156 243q-2 5 -6 12.5t-20 29.5t-36.5 42t-57 44.5t-79 42t-105 29.5t-132.5 12zM762 703h-157l195 261z" />
+<glyph unicode="&#xe231;" d="M475 1300h150q103 0 189 -86t86 -189v-500q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" />
+<glyph unicode="&#xe232;" d="M475 1300h96q0 -150 89.5 -239.5t239.5 -89.5v-446q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" />
+<glyph unicode="&#xe233;" d="M1294 767l-638 -283l-378 170l-78 -60v-224l100 -150v-199l-150 148l-150 -149v200l100 150v250q0 4 -0.5 10.5t0 9.5t1 8t3 8t6.5 6l47 40l-147 65l642 283zM1000 380l-350 -166l-350 166v147l350 -165l350 165v-147z" />
+<glyph unicode="&#xe234;" d="M250 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM650 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM1050 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" />
+<glyph unicode="&#xe235;" d="M550 1100q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 700q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 300q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" />
+<glyph unicode="&#xe236;" d="M125 1100h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM125 700h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM125 300h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe237;" d="M350 1200h500q162 0 256 -93.5t94 -256.5v-500q0 -165 -93.5 -257.5t-256.5 -92.5h-500q-165 0 -257.5 92.5t-92.5 257.5v500q0 165 92.5 257.5t257.5 92.5zM900 1000h-600q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h600q41 0 70.5 29.5 t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5zM350 900h500q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-500q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 14.5 35.5t35.5 14.5zM400 800v-200h400v200h-400z" />
+<glyph unicode="&#xe238;" d="M150 1100h1000q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe239;" d="M650 1187q87 -67 118.5 -156t0 -178t-118.5 -155q-87 66 -118.5 155t0 178t118.5 156zM300 800q124 0 212 -88t88 -212q-124 0 -212 88t-88 212zM1000 800q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM300 500q124 0 212 -88t88 -212q-124 0 -212 88t-88 212z M1000 500q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM700 199v-144q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v142q40 -4 43 -4q17 0 57 6z" />
+<glyph unicode="&#xe240;" d="M745 878l69 19q25 6 45 -12l298 -295q11 -11 15 -26.5t-2 -30.5q-5 -14 -18 -23.5t-28 -9.5h-8q1 0 1 -13q0 -29 -2 -56t-8.5 -62t-20 -63t-33 -53t-51 -39t-72.5 -14h-146q-184 0 -184 288q0 24 10 47q-20 4 -62 4t-63 -4q11 -24 11 -47q0 -288 -184 -288h-142 q-48 0 -84.5 21t-56 51t-32 71.5t-16 75t-3.5 68.5q0 13 2 13h-7q-15 0 -27.5 9.5t-18.5 23.5q-6 15 -2 30.5t15 25.5l298 296q20 18 46 11l76 -19q20 -5 30.5 -22.5t5.5 -37.5t-22.5 -31t-37.5 -5l-51 12l-182 -193h891l-182 193l-44 -12q-20 -5 -37.5 6t-22.5 31t6 37.5 t31 22.5z" />
+<glyph unicode="&#xe241;" d="M1200 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM500 450h-25q0 15 -4 24.5t-9 14.5t-17 7.5t-20 3t-25 0.5h-100v-425q0 -11 12.5 -17.5t25.5 -7.5h12v-50h-200v50q50 0 50 25v425h-100q-17 0 -25 -0.5t-20 -3t-17 -7.5t-9 -14.5t-4 -24.5h-25v150h500v-150z" />
+<glyph unicode="&#xe242;" d="M1000 300v50q-25 0 -55 32q-14 14 -25 31t-16 27l-4 11l-289 747h-69l-300 -754q-18 -35 -39 -56q-9 -9 -24.5 -18.5t-26.5 -14.5l-11 -5v-50h273v50q-49 0 -78.5 21.5t-11.5 67.5l69 176h293l61 -166q13 -34 -3.5 -66.5t-55.5 -32.5v-50h312zM412 691l134 342l121 -342 h-255zM1100 150v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5z" />
+<glyph unicode="&#xe243;" d="M50 1200h1100q21 0 35.5 -14.5t14.5 -35.5v-1100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5zM611 1118h-70q-13 0 -18 -12l-299 -753q-17 -32 -35 -51q-18 -18 -56 -34q-12 -5 -12 -18v-50q0 -8 5.5 -14t14.5 -6 h273q8 0 14 6t6 14v50q0 8 -6 14t-14 6q-55 0 -71 23q-10 14 0 39l63 163h266l57 -153q11 -31 -6 -55q-12 -17 -36 -17q-8 0 -14 -6t-6 -14v-50q0 -8 6 -14t14 -6h313q8 0 14 6t6 14v50q0 7 -5.5 13t-13.5 7q-17 0 -42 25q-25 27 -40 63h-1l-288 748q-5 12 -19 12zM639 611 h-197l103 264z" />
+<glyph unicode="&#xe244;" d="M1200 1100h-1200v100h1200v-100zM50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 1000h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM700 900v-300h300v300h-300z" />
+<glyph unicode="&#xe245;" d="M50 1200h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 700h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM700 600v-300h300v300h-300zM1200 0h-1200v100h1200v-100z" />
+<glyph unicode="&#xe246;" d="M50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-350h100v150q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-150h100v-100h-100v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v150h-100v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM700 700v-300h300v300h-300z" />
+<glyph unicode="&#xe247;" d="M100 0h-100v1200h100v-1200zM250 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM300 1000v-300h300v300h-300zM250 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe248;" d="M600 1100h150q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-100h450q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h350v100h-150q-21 0 -35.5 14.5 t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h150v100h100v-100zM400 1000v-300h300v300h-300z" />
+<glyph unicode="&#xe249;" d="M1200 0h-100v1200h100v-1200zM550 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM600 1000v-300h300v300h-300zM50 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe250;" d="M865 565l-494 -494q-23 -23 -41 -23q-14 0 -22 13.5t-8 38.5v1000q0 25 8 38.5t22 13.5q18 0 41 -23l494 -494q14 -14 14 -35t-14 -35z" />
+<glyph unicode="&#xe251;" d="M335 635l494 494q29 29 50 20.5t21 -49.5v-1000q0 -41 -21 -49.5t-50 20.5l-494 494q-14 14 -14 35t14 35z" />
+<glyph unicode="&#xe252;" d="M100 900h1000q41 0 49.5 -21t-20.5 -50l-494 -494q-14 -14 -35 -14t-35 14l-494 494q-29 29 -20.5 50t49.5 21z" />
+<glyph unicode="&#xe253;" d="M635 865l494 -494q29 -29 20.5 -50t-49.5 -21h-1000q-41 0 -49.5 21t20.5 50l494 494q14 14 35 14t35 -14z" />
+<glyph unicode="&#xe254;" d="M700 741v-182l-692 -323v221l413 193l-413 193v221zM1200 0h-800v200h800v-200z" />
+<glyph unicode="&#xe255;" d="M1200 900h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300zM0 700h50q0 21 4 37t9.5 26.5t18 17.5t22 11t28.5 5.5t31 2t37 0.5h100v-550q0 -22 -25 -34.5t-50 -13.5l-25 -2v-100h400v100q-4 0 -11 0.5t-24 3t-30 7t-24 15t-11 24.5v550h100q25 0 37 -0.5t31 -2 t28.5 -5.5t22 -11t18 -17.5t9.5 -26.5t4 -37h50v300h-800v-300z" />
+<glyph unicode="&#xe256;" d="M800 700h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-100v-550q0 -22 25 -34.5t50 -14.5l25 -1v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v550h-100q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h800v-300zM1100 200h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300z" />
+<glyph unicode="&#xe257;" d="M701 1098h160q16 0 21 -11t-7 -23l-464 -464l464 -464q12 -12 7 -23t-21 -11h-160q-13 0 -23 9l-471 471q-7 8 -7 18t7 18l471 471q10 9 23 9z" />
+<glyph unicode="&#xe258;" d="M339 1098h160q13 0 23 -9l471 -471q7 -8 7 -18t-7 -18l-471 -471q-10 -9 -23 -9h-160q-16 0 -21 11t7 23l464 464l-464 464q-12 12 -7 23t21 11z" />
+<glyph unicode="&#xe259;" d="M1087 882q11 -5 11 -21v-160q0 -13 -9 -23l-471 -471q-8 -7 -18 -7t-18 7l-471 471q-9 10 -9 23v160q0 16 11 21t23 -7l464 -464l464 464q12 12 23 7z" />
+<glyph unicode="&#xe260;" d="M618 993l471 -471q9 -10 9 -23v-160q0 -16 -11 -21t-23 7l-464 464l-464 -464q-12 -12 -23 -7t-11 21v160q0 13 9 23l471 471q8 7 18 7t18 -7z" />
+<glyph unicode="&#xf8ff;" d="M1000 1200q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM450 1000h100q21 0 40 -14t26 -33l79 -194q5 1 16 3q34 6 54 9.5t60 7t65.5 1t61 -10t56.5 -23t42.5 -42t29 -64t5 -92t-19.5 -121.5q-1 -7 -3 -19.5t-11 -50t-20.5 -73t-32.5 -81.5t-46.5 -83t-64 -70 t-82.5 -50q-13 -5 -42 -5t-65.5 2.5t-47.5 2.5q-14 0 -49.5 -3.5t-63 -3.5t-43.5 7q-57 25 -104.5 78.5t-75 111.5t-46.5 112t-26 90l-7 35q-15 63 -18 115t4.5 88.5t26 64t39.5 43.5t52 25.5t58.5 13t62.5 2t59.5 -4.5t55.5 -8l-147 192q-12 18 -5.5 30t27.5 12z" />
+<glyph unicode="&#x1f511;" d="M250 1200h600q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-500l-255 -178q-19 -9 -32 -1t-13 29v650h-150q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM400 1100v-100h300v100h-300z" />
+<glyph unicode="&#x1f6aa;" d="M250 1200h750q39 0 69.5 -40.5t30.5 -84.5v-933l-700 -117v950l600 125h-700v-1000h-100v1025q0 23 15.5 49t34.5 26zM500 525v-100l100 20v100z" />
+</font>
+</defs></svg> 
\ No newline at end of file
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/fonts/bootstrap/glyphicons-halflings-regular.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/fonts/bootstrap/glyphicons-halflings-regular.woff
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/fonts/bootstrap/glyphicons-halflings-regular.woff2
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/fonts/bootstrap/glyphicons-halflings-regular.woff2
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/javascripts/bootstrap.js
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/javascripts/bootstrap.js	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/javascripts/bootstrap.js	(revision 3762)
@@ -0,0 +1,2580 @@
+/*!
+ * Bootstrap v3.4.1 (https://getbootstrap.com/)
+ * Copyright 2011-2019 Twitter, Inc.
+ * Licensed under the MIT license
+ */
+
+if (typeof jQuery === 'undefined') {
+  throw new Error('Bootstrap\'s JavaScript requires jQuery')
+}
+
++function ($) {
+  'use strict';
+  var version = $.fn.jquery.split(' ')[0].split('.')
+  if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] > 3)) {
+    throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4')
+  }
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: transition.js v3.4.1
+ * https://getbootstrap.com/docs/3.4/javascript/#transitions
+ * ========================================================================
+ * Copyright 2011-2019 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // CSS TRANSITION SUPPORT (Shoutout: https://modernizr.com/)
+  // ============================================================
+
+  function transitionEnd() {
+    var el = document.createElement('bootstrap')
+
+    var transEndEventNames = {
+      WebkitTransition : 'webkitTransitionEnd',
+      MozTransition    : 'transitionend',
+      OTransition      : 'oTransitionEnd otransitionend',
+      transition       : 'transitionend'
+    }
+
+    for (var name in transEndEventNames) {
+      if (el.style[name] !== undefined) {
+        return { end: transEndEventNames[name] }
+      }
+    }
+
+    return false // explicit for ie8 (  ._.)
+  }
+
+  // https://blog.alexmaccaw.com/css-transitions
+  $.fn.emulateTransitionEnd = function (duration) {
+    var called = false
+    var $el = this
+    $(this).one('bsTransitionEnd', function () { called = true })
+    var callback = function () { if (!called) $($el).trigger($.support.transition.end) }
+    setTimeout(callback, duration)
+    return this
+  }
+
+  $(function () {
+    $.support.transition = transitionEnd()
+
+    if (!$.support.transition) return
+
+    $.event.special.bsTransitionEnd = {
+      bindType: $.support.transition.end,
+      delegateType: $.support.transition.end,
+      handle: function (e) {
+        if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)
+      }
+    }
+  })
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: alert.js v3.4.1
+ * https://getbootstrap.com/docs/3.4/javascript/#alerts
+ * ========================================================================
+ * Copyright 2011-2019 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // ALERT CLASS DEFINITION
+  // ======================
+
+  var dismiss = '[data-dismiss="alert"]'
+  var Alert   = function (el) {
+    $(el).on('click', dismiss, this.close)
+  }
+
+  Alert.VERSION = '3.4.1'
+
+  Alert.TRANSITION_DURATION = 150
+
+  Alert.prototype.close = function (e) {
+    var $this    = $(this)
+    var selector = $this.attr('data-target')
+
+    if (!selector) {
+      selector = $this.attr('href')
+      selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
+    }
+
+    selector    = selector === '#' ? [] : selector
+    var $parent = $(document).find(selector)
+
+    if (e) e.preventDefault()
+
+    if (!$parent.length) {
+      $parent = $this.closest('.alert')
+    }
+
+    $parent.trigger(e = $.Event('close.bs.alert'))
+
+    if (e.isDefaultPrevented()) return
+
+    $parent.removeClass('in')
+
+    function removeElement() {
+      // detach from parent, fire event then clean up data
+      $parent.detach().trigger('closed.bs.alert').remove()
+    }
+
+    $.support.transition && $parent.hasClass('fade') ?
+      $parent
+        .one('bsTransitionEnd', removeElement)
+        .emulateTransitionEnd(Alert.TRANSITION_DURATION) :
+      removeElement()
+  }
+
+
+  // ALERT PLUGIN DEFINITION
+  // =======================
+
+  function Plugin(option) {
+    return this.each(function () {
+      var $this = $(this)
+      var data  = $this.data('bs.alert')
+
+      if (!data) $this.data('bs.alert', (data = new Alert(this)))
+      if (typeof option == 'string') data[option].call($this)
+    })
+  }
+
+  var old = $.fn.alert
+
+  $.fn.alert             = Plugin
+  $.fn.alert.Constructor = Alert
+
+
+  // ALERT NO CONFLICT
+  // =================
+
+  $.fn.alert.noConflict = function () {
+    $.fn.alert = old
+    return this
+  }
+
+
+  // ALERT DATA-API
+  // ==============
+
+  $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: button.js v3.4.1
+ * https://getbootstrap.com/docs/3.4/javascript/#buttons
+ * ========================================================================
+ * Copyright 2011-2019 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // BUTTON PUBLIC CLASS DEFINITION
+  // ==============================
+
+  var Button = function (element, options) {
+    this.$element  = $(element)
+    this.options   = $.extend({}, Button.DEFAULTS, options)
+    this.isLoading = false
+  }
+
+  Button.VERSION  = '3.4.1'
+
+  Button.DEFAULTS = {
+    loadingText: 'loading...'
+  }
+
+  Button.prototype.setState = function (state) {
+    var d    = 'disabled'
+    var $el  = this.$element
+    var val  = $el.is('input') ? 'val' : 'html'
+    var data = $el.data()
+
+    state += 'Text'
+
+    if (data.resetText == null) $el.data('resetText', $el[val]())
+
+    // push to event loop to allow forms to submit
+    setTimeout($.proxy(function () {
+      $el[val](data[state] == null ? this.options[state] : data[state])
+
+      if (state == 'loadingText') {
+        this.isLoading = true
+        $el.addClass(d).attr(d, d).prop(d, true)
+      } else if (this.isLoading) {
+        this.isLoading = false
+        $el.removeClass(d).removeAttr(d).prop(d, false)
+      }
+    }, this), 0)
+  }
+
+  Button.prototype.toggle = function () {
+    var changed = true
+    var $parent = this.$element.closest('[data-toggle="buttons"]')
+
+    if ($parent.length) {
+      var $input = this.$element.find('input')
+      if ($input.prop('type') == 'radio') {
+        if ($input.prop('checked')) changed = false
+        $parent.find('.active').removeClass('active')
+        this.$element.addClass('active')
+      } else if ($input.prop('type') == 'checkbox') {
+        if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false
+        this.$element.toggleClass('active')
+      }
+      $input.prop('checked', this.$element.hasClass('active'))
+      if (changed) $input.trigger('change')
+    } else {
+      this.$element.attr('aria-pressed', !this.$element.hasClass('active'))
+      this.$element.toggleClass('active')
+    }
+  }
+
+
+  // BUTTON PLUGIN DEFINITION
+  // ========================
+
+  function Plugin(option) {
+    return this.each(function () {
+      var $this   = $(this)
+      var data    = $this.data('bs.button')
+      var options = typeof option == 'object' && option
+
+      if (!data) $this.data('bs.button', (data = new Button(this, options)))
+
+      if (option == 'toggle') data.toggle()
+      else if (option) data.setState(option)
+    })
+  }
+
+  var old = $.fn.button
+
+  $.fn.button             = Plugin
+  $.fn.button.Constructor = Button
+
+
+  // BUTTON NO CONFLICT
+  // ==================
+
+  $.fn.button.noConflict = function () {
+    $.fn.button = old
+    return this
+  }
+
+
+  // BUTTON DATA-API
+  // ===============
+
+  $(document)
+    .on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) {
+      var $btn = $(e.target).closest('.btn')
+      Plugin.call($btn, 'toggle')
+      if (!($(e.target).is('input[type="radio"], input[type="checkbox"]'))) {
+        // Prevent double click on radios, and the double selections (so cancellation) on checkboxes
+        e.preventDefault()
+        // The target component still receive the focus
+        if ($btn.is('input,button')) $btn.trigger('focus')
+        else $btn.find('input:visible,button:visible').first().trigger('focus')
+      }
+    })
+    .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) {
+      $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))
+    })
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: carousel.js v3.4.1
+ * https://getbootstrap.com/docs/3.4/javascript/#carousel
+ * ========================================================================
+ * Copyright 2011-2019 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // CAROUSEL CLASS DEFINITION
+  // =========================
+
+  var Carousel = function (element, options) {
+    this.$element    = $(element)
+    this.$indicators = this.$element.find('.carousel-indicators')
+    this.options     = options
+    this.paused      = null
+    this.sliding     = null
+    this.interval    = null
+    this.$active     = null
+    this.$items      = null
+
+    this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))
+
+    this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element
+      .on('mouseenter.bs.carousel', $.proxy(this.pause, this))
+      .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))
+  }
+
+  Carousel.VERSION  = '3.4.1'
+
+  Carousel.TRANSITION_DURATION = 600
+
+  Carousel.DEFAULTS = {
+    interval: 5000,
+    pause: 'hover',
+    wrap: true,
+    keyboard: true
+  }
+
+  Carousel.prototype.keydown = function (e) {
+    if (/input|textarea/i.test(e.target.tagName)) return
+    switch (e.which) {
+      case 37: this.prev(); break
+      case 39: this.next(); break
+      default: return
+    }
+
+    e.preventDefault()
+  }
+
+  Carousel.prototype.cycle = function (e) {
+    e || (this.paused = false)
+
+    this.interval && clearInterval(this.interval)
+
+    this.options.interval
+      && !this.paused
+      && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
+
+    return this
+  }
+
+  Carousel.prototype.getItemIndex = function (item) {
+    this.$items = item.parent().children('.item')
+    return this.$items.index(item || this.$active)
+  }
+
+  Carousel.prototype.getItemForDirection = function (direction, active) {
+    var activeIndex = this.getItemIndex(active)
+    var willWrap = (direction == 'prev' && activeIndex === 0)
+                || (direction == 'next' && activeIndex == (this.$items.length - 1))
+    if (willWrap && !this.options.wrap) return active
+    var delta = direction == 'prev' ? -1 : 1
+    var itemIndex = (activeIndex + delta) % this.$items.length
+    return this.$items.eq(itemIndex)
+  }
+
+  Carousel.prototype.to = function (pos) {
+    var that        = this
+    var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))
+
+    if (pos > (this.$items.length - 1) || pos < 0) return
+
+    if (this.sliding)       return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid"
+    if (activeIndex == pos) return this.pause().cycle()
+
+    return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos))
+  }
+
+  Carousel.prototype.pause = function (e) {
+    e || (this.paused = true)
+
+    if (this.$element.find('.next, .prev').length && $.support.transition) {
+      this.$element.trigger($.support.transition.end)
+      this.cycle(true)
+    }
+
+    this.interval = clearInterval(this.interval)
+
+    return this
+  }
+
+  Carousel.prototype.next = function () {
+    if (this.sliding) return
+    return this.slide('next')
+  }
+
+  Carousel.prototype.prev = function () {
+    if (this.sliding) return
+    return this.slide('prev')
+  }
+
+  Carousel.prototype.slide = function (type, next) {
+    var $active   = this.$element.find('.item.active')
+    var $next     = next || this.getItemForDirection(type, $active)
+    var isCycling = this.interval
+    var direction = type == 'next' ? 'left' : 'right'
+    var that      = this
+
+    if ($next.hasClass('active')) return (this.sliding = false)
+
+    var relatedTarget = $next[0]
+    var slideEvent = $.Event('slide.bs.carousel', {
+      relatedTarget: relatedTarget,
+      direction: direction
+    })
+    this.$element.trigger(slideEvent)
+    if (slideEvent.isDefaultPrevented()) return
+
+    this.sliding = true
+
+    isCycling && this.pause()
+
+    if (this.$indicators.length) {
+      this.$indicators.find('.active').removeClass('active')
+      var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])
+      $nextIndicator && $nextIndicator.addClass('active')
+    }
+
+    var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid"
+    if ($.support.transition && this.$element.hasClass('slide')) {
+      $next.addClass(type)
+      if (typeof $next === 'object' && $next.length) {
+        $next[0].offsetWidth // force reflow
+      }
+      $active.addClass(direction)
+      $next.addClass(direction)
+      $active
+        .one('bsTransitionEnd', function () {
+          $next.removeClass([type, direction].join(' ')).addClass('active')
+          $active.removeClass(['active', direction].join(' '))
+          that.sliding = false
+          setTimeout(function () {
+            that.$element.trigger(slidEvent)
+          }, 0)
+        })
+        .emulateTransitionEnd(Carousel.TRANSITION_DURATION)
+    } else {
+      $active.removeClass('active')
+      $next.addClass('active')
+      this.sliding = false
+      this.$element.trigger(slidEvent)
+    }
+
+    isCycling && this.cycle()
+
+    return this
+  }
+
+
+  // CAROUSEL PLUGIN DEFINITION
+  // ==========================
+
+  function Plugin(option) {
+    return this.each(function () {
+      var $this   = $(this)
+      var data    = $this.data('bs.carousel')
+      var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)
+      var action  = typeof option == 'string' ? option : options.slide
+
+      if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))
+      if (typeof option == 'number') data.to(option)
+      else if (action) data[action]()
+      else if (options.interval) data.pause().cycle()
+    })
+  }
+
+  var old = $.fn.carousel
+
+  $.fn.carousel             = Plugin
+  $.fn.carousel.Constructor = Carousel
+
+
+  // CAROUSEL NO CONFLICT
+  // ====================
+
+  $.fn.carousel.noConflict = function () {
+    $.fn.carousel = old
+    return this
+  }
+
+
+  // CAROUSEL DATA-API
+  // =================
+
+  var clickHandler = function (e) {
+    var $this   = $(this)
+    var href    = $this.attr('href')
+    if (href) {
+      href = href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7
+    }
+
+    var target  = $this.attr('data-target') || href
+    var $target = $(document).find(target)
+
+    if (!$target.hasClass('carousel')) return
+
+    var options = $.extend({}, $target.data(), $this.data())
+    var slideIndex = $this.attr('data-slide-to')
+    if (slideIndex) options.interval = false
+
+    Plugin.call($target, options)
+
+    if (slideIndex) {
+      $target.data('bs.carousel').to(slideIndex)
+    }
+
+    e.preventDefault()
+  }
+
+  $(document)
+    .on('click.bs.carousel.data-api', '[data-slide]', clickHandler)
+    .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)
+
+  $(window).on('load', function () {
+    $('[data-ride="carousel"]').each(function () {
+      var $carousel = $(this)
+      Plugin.call($carousel, $carousel.data())
+    })
+  })
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: collapse.js v3.4.1
+ * https://getbootstrap.com/docs/3.4/javascript/#collapse
+ * ========================================================================
+ * Copyright 2011-2019 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+/* jshint latedef: false */
+
++function ($) {
+  'use strict';
+
+  // COLLAPSE PUBLIC CLASS DEFINITION
+  // ================================
+
+  var Collapse = function (element, options) {
+    this.$element      = $(element)
+    this.options       = $.extend({}, Collapse.DEFAULTS, options)
+    this.$trigger      = $('[data-toggle="collapse"][href="#' + element.id + '"],' +
+                           '[data-toggle="collapse"][data-target="#' + element.id + '"]')
+    this.transitioning = null
+
+    if (this.options.parent) {
+      this.$parent = this.getParent()
+    } else {
+      this.addAriaAndCollapsedClass(this.$element, this.$trigger)
+    }
+
+    if (this.options.toggle) this.toggle()
+  }
+
+  Collapse.VERSION  = '3.4.1'
+
+  Collapse.TRANSITION_DURATION = 350
+
+  Collapse.DEFAULTS = {
+    toggle: true
+  }
+
+  Collapse.prototype.dimension = function () {
+    var hasWidth = this.$element.hasClass('width')
+    return hasWidth ? 'width' : 'height'
+  }
+
+  Collapse.prototype.show = function () {
+    if (this.transitioning || this.$element.hasClass('in')) return
+
+    var activesData
+    var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')
+
+    if (actives && actives.length) {
+      activesData = actives.data('bs.collapse')
+      if (activesData && activesData.transitioning) return
+    }
+
+    var startEvent = $.Event('show.bs.collapse')
+    this.$element.trigger(startEvent)
+    if (startEvent.isDefaultPrevented()) return
+
+    if (actives && actives.length) {
+      Plugin.call(actives, 'hide')
+      activesData || actives.data('bs.collapse', null)
+    }
+
+    var dimension = this.dimension()
+
+    this.$element
+      .removeClass('collapse')
+      .addClass('collapsing')[dimension](0)
+      .attr('aria-expanded', true)
+
+    this.$trigger
+      .removeClass('collapsed')
+      .attr('aria-expanded', true)
+
+    this.transitioning = 1
+
+    var complete = function () {
+      this.$element
+        .removeClass('collapsing')
+        .addClass('collapse in')[dimension]('')
+      this.transitioning = 0
+      this.$element
+        .trigger('shown.bs.collapse')
+    }
+
+    if (!$.support.transition) return complete.call(this)
+
+    var scrollSize = $.camelCase(['scroll', dimension].join('-'))
+
+    this.$element
+      .one('bsTransitionEnd', $.proxy(complete, this))
+      .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])
+  }
+
+  Collapse.prototype.hide = function () {
+    if (this.transitioning || !this.$element.hasClass('in')) return
+
+    var startEvent = $.Event('hide.bs.collapse')
+    this.$element.trigger(startEvent)
+    if (startEvent.isDefaultPrevented()) return
+
+    var dimension = this.dimension()
+
+    this.$element[dimension](this.$element[dimension]())[0].offsetHeight
+
+    this.$element
+      .addClass('collapsing')
+      .removeClass('collapse in')
+      .attr('aria-expanded', false)
+
+    this.$trigger
+      .addClass('collapsed')
+      .attr('aria-expanded', false)
+
+    this.transitioning = 1
+
+    var complete = function () {
+      this.transitioning = 0
+      this.$element
+        .removeClass('collapsing')
+        .addClass('collapse')
+        .trigger('hidden.bs.collapse')
+    }
+
+    if (!$.support.transition) return complete.call(this)
+
+    this.$element
+      [dimension](0)
+      .one('bsTransitionEnd', $.proxy(complete, this))
+      .emulateTransitionEnd(Collapse.TRANSITION_DURATION)
+  }
+
+  Collapse.prototype.toggle = function () {
+    this[this.$element.hasClass('in') ? 'hide' : 'show']()
+  }
+
+  Collapse.prototype.getParent = function () {
+    return $(document).find(this.options.parent)
+      .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]')
+      .each($.proxy(function (i, element) {
+        var $element = $(element)
+        this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)
+      }, this))
+      .end()
+  }
+
+  Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {
+    var isOpen = $element.hasClass('in')
+
+    $element.attr('aria-expanded', isOpen)
+    $trigger
+      .toggleClass('collapsed', !isOpen)
+      .attr('aria-expanded', isOpen)
+  }
+
+  function getTargetFromTrigger($trigger) {
+    var href
+    var target = $trigger.attr('data-target')
+      || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7
+
+    return $(document).find(target)
+  }
+
+
+  // COLLAPSE PLUGIN DEFINITION
+  // ==========================
+
+  function Plugin(option) {
+    return this.each(function () {
+      var $this   = $(this)
+      var data    = $this.data('bs.collapse')
+      var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)
+
+      if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false
+      if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))
+      if (typeof option == 'string') data[option]()
+    })
+  }
+
+  var old = $.fn.collapse
+
+  $.fn.collapse             = Plugin
+  $.fn.collapse.Constructor = Collapse
+
+
+  // COLLAPSE NO CONFLICT
+  // ====================
+
+  $.fn.collapse.noConflict = function () {
+    $.fn.collapse = old
+    return this
+  }
+
+
+  // COLLAPSE DATA-API
+  // =================
+
+  $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) {
+    var $this   = $(this)
+
+    if (!$this.attr('data-target')) e.preventDefault()
+
+    var $target = getTargetFromTrigger($this)
+    var data    = $target.data('bs.collapse')
+    var option  = data ? 'toggle' : $this.data()
+
+    Plugin.call($target, option)
+  })
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: dropdown.js v3.4.1
+ * https://getbootstrap.com/docs/3.4/javascript/#dropdowns
+ * ========================================================================
+ * Copyright 2011-2019 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // DROPDOWN CLASS DEFINITION
+  // =========================
+
+  var backdrop = '.dropdown-backdrop'
+  var toggle   = '[data-toggle="dropdown"]'
+  var Dropdown = function (element) {
+    $(element).on('click.bs.dropdown', this.toggle)
+  }
+
+  Dropdown.VERSION = '3.4.1'
+
+  function getParent($this) {
+    var selector = $this.attr('data-target')
+
+    if (!selector) {
+      selector = $this.attr('href')
+      selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
+    }
+
+    var $parent = selector !== '#' ? $(document).find(selector) : null
+
+    return $parent && $parent.length ? $parent : $this.parent()
+  }
+
+  function clearMenus(e) {
+    if (e && e.which === 3) return
+    $(backdrop).remove()
+    $(toggle).each(function () {
+      var $this         = $(this)
+      var $parent       = getParent($this)
+      var relatedTarget = { relatedTarget: this }
+
+      if (!$parent.hasClass('open')) return
+
+      if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return
+
+      $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))
+
+      if (e.isDefaultPrevented()) return
+
+      $this.attr('aria-expanded', 'false')
+      $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget))
+    })
+  }
+
+  Dropdown.prototype.toggle = function (e) {
+    var $this = $(this)
+
+    if ($this.is('.disabled, :disabled')) return
+
+    var $parent  = getParent($this)
+    var isActive = $parent.hasClass('open')
+
+    clearMenus()
+
+    if (!isActive) {
+      if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {
+        // if mobile we use a backdrop because click events don't delegate
+        $(document.createElement('div'))
+          .addClass('dropdown-backdrop')
+          .insertAfter($(this))
+          .on('click', clearMenus)
+      }
+
+      var relatedTarget = { relatedTarget: this }
+      $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))
+
+      if (e.isDefaultPrevented()) return
+
+      $this
+        .trigger('focus')
+        .attr('aria-expanded', 'true')
+
+      $parent
+        .toggleClass('open')
+        .trigger($.Event('shown.bs.dropdown', relatedTarget))
+    }
+
+    return false
+  }
+
+  Dropdown.prototype.keydown = function (e) {
+    if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return
+
+    var $this = $(this)
+
+    e.preventDefault()
+    e.stopPropagation()
+
+    if ($this.is('.disabled, :disabled')) return
+
+    var $parent  = getParent($this)
+    var isActive = $parent.hasClass('open')
+
+    if (!isActive && e.which != 27 || isActive && e.which == 27) {
+      if (e.which == 27) $parent.find(toggle).trigger('focus')
+      return $this.trigger('click')
+    }
+
+    var desc = ' li:not(.disabled):visible a'
+    var $items = $parent.find('.dropdown-menu' + desc)
+
+    if (!$items.length) return
+
+    var index = $items.index(e.target)
+
+    if (e.which == 38 && index > 0)                 index--         // up
+    if (e.which == 40 && index < $items.length - 1) index++         // down
+    if (!~index)                                    index = 0
+
+    $items.eq(index).trigger('focus')
+  }
+
+
+  // DROPDOWN PLUGIN DEFINITION
+  // ==========================
+
+  function Plugin(option) {
+    return this.each(function () {
+      var $this = $(this)
+      var data  = $this.data('bs.dropdown')
+
+      if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))
+      if (typeof option == 'string') data[option].call($this)
+    })
+  }
+
+  var old = $.fn.dropdown
+
+  $.fn.dropdown             = Plugin
+  $.fn.dropdown.Constructor = Dropdown
+
+
+  // DROPDOWN NO CONFLICT
+  // ====================
+
+  $.fn.dropdown.noConflict = function () {
+    $.fn.dropdown = old
+    return this
+  }
+
+
+  // APPLY TO STANDARD DROPDOWN ELEMENTS
+  // ===================================
+
+  $(document)
+    .on('click.bs.dropdown.data-api', clearMenus)
+    .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
+    .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)
+    .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)
+    .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown)
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: modal.js v3.4.1
+ * https://getbootstrap.com/docs/3.4/javascript/#modals
+ * ========================================================================
+ * Copyright 2011-2019 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // MODAL CLASS DEFINITION
+  // ======================
+
+  var Modal = function (element, options) {
+    this.options = options
+    this.$body = $(document.body)
+    this.$element = $(element)
+    this.$dialog = this.$element.find('.modal-dialog')
+    this.$backdrop = null
+    this.isShown = null
+    this.originalBodyPad = null
+    this.scrollbarWidth = 0
+    this.ignoreBackdropClick = false
+    this.fixedContent = '.navbar-fixed-top, .navbar-fixed-bottom'
+
+    if (this.options.remote) {
+      this.$element
+        .find('.modal-content')
+        .load(this.options.remote, $.proxy(function () {
+          this.$element.trigger('loaded.bs.modal')
+        }, this))
+    }
+  }
+
+  Modal.VERSION = '3.4.1'
+
+  Modal.TRANSITION_DURATION = 300
+  Modal.BACKDROP_TRANSITION_DURATION = 150
+
+  Modal.DEFAULTS = {
+    backdrop: true,
+    keyboard: true,
+    show: true
+  }
+
+  Modal.prototype.toggle = function (_relatedTarget) {
+    return this.isShown ? this.hide() : this.show(_relatedTarget)
+  }
+
+  Modal.prototype.show = function (_relatedTarget) {
+    var that = this
+    var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })
+
+    this.$element.trigger(e)
+
+    if (this.isShown || e.isDefaultPrevented()) return
+
+    this.isShown = true
+
+    this.checkScrollbar()
+    this.setScrollbar()
+    this.$body.addClass('modal-open')
+
+    this.escape()
+    this.resize()
+
+    this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this))
+
+    this.$dialog.on('mousedown.dismiss.bs.modal', function () {
+      that.$element.one('mouseup.dismiss.bs.modal', function (e) {
+        if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true
+      })
+    })
+
+    this.backdrop(function () {
+      var transition = $.support.transition && that.$element.hasClass('fade')
+
+      if (!that.$element.parent().length) {
+        that.$element.appendTo(that.$body) // don't move modals dom position
+      }
+
+      that.$element
+        .show()
+        .scrollTop(0)
+
+      that.adjustDialog()
+
+      if (transition) {
+        that.$element[0].offsetWidth // force reflow
+      }
+
+      that.$element.addClass('in')
+
+      that.enforceFocus()
+
+      var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })
+
+      transition ?
+        that.$dialog // wait for modal to slide in
+          .one('bsTransitionEnd', function () {
+            that.$element.trigger('focus').trigger(e)
+          })
+          .emulateTransitionEnd(Modal.TRANSITION_DURATION) :
+        that.$element.trigger('focus').trigger(e)
+    })
+  }
+
+  Modal.prototype.hide = function (e) {
+    if (e) e.preventDefault()
+
+    e = $.Event('hide.bs.modal')
+
+    this.$element.trigger(e)
+
+    if (!this.isShown || e.isDefaultPrevented()) return
+
+    this.isShown = false
+
+    this.escape()
+    this.resize()
+
+    $(document).off('focusin.bs.modal')
+
+    this.$element
+      .removeClass('in')
+      .off('click.dismiss.bs.modal')
+      .off('mouseup.dismiss.bs.modal')
+
+    this.$dialog.off('mousedown.dismiss.bs.modal')
+
+    $.support.transition && this.$element.hasClass('fade') ?
+      this.$element
+        .one('bsTransitionEnd', $.proxy(this.hideModal, this))
+        .emulateTransitionEnd(Modal.TRANSITION_DURATION) :
+      this.hideModal()
+  }
+
+  Modal.prototype.enforceFocus = function () {
+    $(document)
+      .off('focusin.bs.modal') // guard against infinite focus loop
+      .on('focusin.bs.modal', $.proxy(function (e) {
+        if (document !== e.target &&
+          this.$element[0] !== e.target &&
+          !this.$element.has(e.target).length) {
+          this.$element.trigger('focus')
+        }
+      }, this))
+  }
+
+  Modal.prototype.escape = function () {
+    if (this.isShown && this.options.keyboard) {
+      this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {
+        e.which == 27 && this.hide()
+      }, this))
+    } else if (!this.isShown) {
+      this.$element.off('keydown.dismiss.bs.modal')
+    }
+  }
+
+  Modal.prototype.resize = function () {
+    if (this.isShown) {
+      $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))
+    } else {
+      $(window).off('resize.bs.modal')
+    }
+  }
+
+  Modal.prototype.hideModal = function () {
+    var that = this
+    this.$element.hide()
+    this.backdrop(function () {
+      that.$body.removeClass('modal-open')
+      that.resetAdjustments()
+      that.resetScrollbar()
+      that.$element.trigger('hidden.bs.modal')
+    })
+  }
+
+  Modal.prototype.removeBackdrop = function () {
+    this.$backdrop && this.$backdrop.remove()
+    this.$backdrop = null
+  }
+
+  Modal.prototype.backdrop = function (callback) {
+    var that = this
+    var animate = this.$element.hasClass('fade') ? 'fade' : ''
+
+    if (this.isShown && this.options.backdrop) {
+      var doAnimate = $.support.transition && animate
+
+      this.$backdrop = $(document.createElement('div'))
+        .addClass('modal-backdrop ' + animate)
+        .appendTo(this.$body)
+
+      this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {
+        if (this.ignoreBackdropClick) {
+          this.ignoreBackdropClick = false
+          return
+        }
+        if (e.target !== e.currentTarget) return
+        this.options.backdrop == 'static'
+          ? this.$element[0].focus()
+          : this.hide()
+      }, this))
+
+      if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
+
+      this.$backdrop.addClass('in')
+
+      if (!callback) return
+
+      doAnimate ?
+        this.$backdrop
+          .one('bsTransitionEnd', callback)
+          .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :
+        callback()
+
+    } else if (!this.isShown && this.$backdrop) {
+      this.$backdrop.removeClass('in')
+
+      var callbackRemove = function () {
+        that.removeBackdrop()
+        callback && callback()
+      }
+      $.support.transition && this.$element.hasClass('fade') ?
+        this.$backdrop
+          .one('bsTransitionEnd', callbackRemove)
+          .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :
+        callbackRemove()
+
+    } else if (callback) {
+      callback()
+    }
+  }
+
+  // these following methods are used to handle overflowing modals
+
+  Modal.prototype.handleUpdate = function () {
+    this.adjustDialog()
+  }
+
+  Modal.prototype.adjustDialog = function () {
+    var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight
+
+    this.$element.css({
+      paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',
+      paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''
+    })
+  }
+
+  Modal.prototype.resetAdjustments = function () {
+    this.$element.css({
+      paddingLeft: '',
+      paddingRight: ''
+    })
+  }
+
+  Modal.prototype.checkScrollbar = function () {
+    var fullWindowWidth = window.innerWidth
+    if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8
+      var documentElementRect = document.documentElement.getBoundingClientRect()
+      fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)
+    }
+    this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth
+    this.scrollbarWidth = this.measureScrollbar()
+  }
+
+  Modal.prototype.setScrollbar = function () {
+    var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)
+    this.originalBodyPad = document.body.style.paddingRight || ''
+    var scrollbarWidth = this.scrollbarWidth
+    if (this.bodyIsOverflowing) {
+      this.$body.css('padding-right', bodyPad + scrollbarWidth)
+      $(this.fixedContent).each(function (index, element) {
+        var actualPadding = element.style.paddingRight
+        var calculatedPadding = $(element).css('padding-right')
+        $(element)
+          .data('padding-right', actualPadding)
+          .css('padding-right', parseFloat(calculatedPadding) + scrollbarWidth + 'px')
+      })
+    }
+  }
+
+  Modal.prototype.resetScrollbar = function () {
+    this.$body.css('padding-right', this.originalBodyPad)
+    $(this.fixedContent).each(function (index, element) {
+      var padding = $(element).data('padding-right')
+      $(element).removeData('padding-right')
+      element.style.paddingRight = padding ? padding : ''
+    })
+  }
+
+  Modal.prototype.measureScrollbar = function () { // thx walsh
+    var scrollDiv = document.createElement('div')
+    scrollDiv.className = 'modal-scrollbar-measure'
+    this.$body.append(scrollDiv)
+    var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth
+    this.$body[0].removeChild(scrollDiv)
+    return scrollbarWidth
+  }
+
+
+  // MODAL PLUGIN DEFINITION
+  // =======================
+
+  function Plugin(option, _relatedTarget) {
+    return this.each(function () {
+      var $this = $(this)
+      var data = $this.data('bs.modal')
+      var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)
+
+      if (!data) $this.data('bs.modal', (data = new Modal(this, options)))
+      if (typeof option == 'string') data[option](_relatedTarget)
+      else if (options.show) data.show(_relatedTarget)
+    })
+  }
+
+  var old = $.fn.modal
+
+  $.fn.modal = Plugin
+  $.fn.modal.Constructor = Modal
+
+
+  // MODAL NO CONFLICT
+  // =================
+
+  $.fn.modal.noConflict = function () {
+    $.fn.modal = old
+    return this
+  }
+
+
+  // MODAL DATA-API
+  // ==============
+
+  $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) {
+    var $this = $(this)
+    var href = $this.attr('href')
+    var target = $this.attr('data-target') ||
+      (href && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7
+
+    var $target = $(document).find(target)
+    var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())
+
+    if ($this.is('a')) e.preventDefault()
+
+    $target.one('show.bs.modal', function (showEvent) {
+      if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown
+      $target.one('hidden.bs.modal', function () {
+        $this.is(':visible') && $this.trigger('focus')
+      })
+    })
+    Plugin.call($target, option, this)
+  })
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: tooltip.js v3.4.1
+ * https://getbootstrap.com/docs/3.4/javascript/#tooltip
+ * Inspired by the original jQuery.tipsy by Jason Frame
+ * ========================================================================
+ * Copyright 2011-2019 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
++function ($) {
+  'use strict';
+
+  var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn']
+
+  var uriAttrs = [
+    'background',
+    'cite',
+    'href',
+    'itemtype',
+    'longdesc',
+    'poster',
+    'src',
+    'xlink:href'
+  ]
+
+  var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i
+
+  var DefaultWhitelist = {
+    // Global attributes allowed on any supplied element below.
+    '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],
+    a: ['target', 'href', 'title', 'rel'],
+    area: [],
+    b: [],
+    br: [],
+    col: [],
+    code: [],
+    div: [],
+    em: [],
+    hr: [],
+    h1: [],
+    h2: [],
+    h3: [],
+    h4: [],
+    h5: [],
+    h6: [],
+    i: [],
+    img: ['src', 'alt', 'title', 'width', 'height'],
+    li: [],
+    ol: [],
+    p: [],
+    pre: [],
+    s: [],
+    small: [],
+    span: [],
+    sub: [],
+    sup: [],
+    strong: [],
+    u: [],
+    ul: []
+  }
+
+  /**
+   * A pattern that recognizes a commonly useful subset of URLs that are safe.
+   *
+   * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
+   */
+  var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi
+
+  /**
+   * A pattern that matches safe data URLs. Only matches image, video and audio types.
+   *
+   * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
+   */
+  var DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i
+
+  function allowedAttribute(attr, allowedAttributeList) {
+    var attrName = attr.nodeName.toLowerCase()
+
+    if ($.inArray(attrName, allowedAttributeList) !== -1) {
+      if ($.inArray(attrName, uriAttrs) !== -1) {
+        return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN))
+      }
+
+      return true
+    }
+
+    var regExp = $(allowedAttributeList).filter(function (index, value) {
+      return value instanceof RegExp
+    })
+
+    // Check if a regular expression validates the attribute.
+    for (var i = 0, l = regExp.length; i < l; i++) {
+      if (attrName.match(regExp[i])) {
+        return true
+      }
+    }
+
+    return false
+  }
+
+  function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {
+    if (unsafeHtml.length === 0) {
+      return unsafeHtml
+    }
+
+    if (sanitizeFn && typeof sanitizeFn === 'function') {
+      return sanitizeFn(unsafeHtml)
+    }
+
+    // IE 8 and below don't support createHTMLDocument
+    if (!document.implementation || !document.implementation.createHTMLDocument) {
+      return unsafeHtml
+    }
+
+    var createdDocument = document.implementation.createHTMLDocument('sanitization')
+    createdDocument.body.innerHTML = unsafeHtml
+
+    var whitelistKeys = $.map(whiteList, function (el, i) { return i })
+    var elements = $(createdDocument.body).find('*')
+
+    for (var i = 0, len = elements.length; i < len; i++) {
+      var el = elements[i]
+      var elName = el.nodeName.toLowerCase()
+
+      if ($.inArray(elName, whitelistKeys) === -1) {
+        el.parentNode.removeChild(el)
+
+        continue
+      }
+
+      var attributeList = $.map(el.attributes, function (el) { return el })
+      var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || [])
+
+      for (var j = 0, len2 = attributeList.length; j < len2; j++) {
+        if (!allowedAttribute(attributeList[j], whitelistedAttributes)) {
+          el.removeAttribute(attributeList[j].nodeName)
+        }
+      }
+    }
+
+    return createdDocument.body.innerHTML
+  }
+
+  // TOOLTIP PUBLIC CLASS DEFINITION
+  // ===============================
+
+  var Tooltip = function (element, options) {
+    this.type       = null
+    this.options    = null
+    this.enabled    = null
+    this.timeout    = null
+    this.hoverState = null
+    this.$element   = null
+    this.inState    = null
+
+    this.init('tooltip', element, options)
+  }
+
+  Tooltip.VERSION  = '3.4.1'
+
+  Tooltip.TRANSITION_DURATION = 150
+
+  Tooltip.DEFAULTS = {
+    animation: true,
+    placement: 'top',
+    selector: false,
+    template: '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',
+    trigger: 'hover focus',
+    title: '',
+    delay: 0,
+    html: false,
+    container: false,
+    viewport: {
+      selector: 'body',
+      padding: 0
+    },
+    sanitize : true,
+    sanitizeFn : null,
+    whiteList : DefaultWhitelist
+  }
+
+  Tooltip.prototype.init = function (type, element, options) {
+    this.enabled   = true
+    this.type      = type
+    this.$element  = $(element)
+    this.options   = this.getOptions(options)
+    this.$viewport = this.options.viewport && $(document).find($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport))
+    this.inState   = { click: false, hover: false, focus: false }
+
+    if (this.$element[0] instanceof document.constructor && !this.options.selector) {
+      throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')
+    }
+
+    var triggers = this.options.trigger.split(' ')
+
+    for (var i = triggers.length; i--;) {
+      var trigger = triggers[i]
+
+      if (trigger == 'click') {
+        this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
+      } else if (trigger != 'manual') {
+        var eventIn  = trigger == 'hover' ? 'mouseenter' : 'focusin'
+        var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'
+
+        this.$element.on(eventIn  + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
+        this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
+      }
+    }
+
+    this.options.selector ?
+      (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :
+      this.fixTitle()
+  }
+
+  Tooltip.prototype.getDefaults = function () {
+    return Tooltip.DEFAULTS
+  }
+
+  Tooltip.prototype.getOptions = function (options) {
+    var dataAttributes = this.$element.data()
+
+    for (var dataAttr in dataAttributes) {
+      if (dataAttributes.hasOwnProperty(dataAttr) && $.inArray(dataAttr, DISALLOWED_ATTRIBUTES) !== -1) {
+        delete dataAttributes[dataAttr]
+      }
+    }
+
+    options = $.extend({}, this.getDefaults(), dataAttributes, options)
+
+    if (options.delay && typeof options.delay == 'number') {
+      options.delay = {
+        show: options.delay,
+        hide: options.delay
+      }
+    }
+
+    if (options.sanitize) {
+      options.template = sanitizeHtml(options.template, options.whiteList, options.sanitizeFn)
+    }
+
+    return options
+  }
+
+  Tooltip.prototype.getDelegateOptions = function () {
+    var options  = {}
+    var defaults = this.getDefaults()
+
+    this._options && $.each(this._options, function (key, value) {
+      if (defaults[key] != value) options[key] = value
+    })
+
+    return options
+  }
+
+  Tooltip.prototype.enter = function (obj) {
+    var self = obj instanceof this.constructor ?
+      obj : $(obj.currentTarget).data('bs.' + this.type)
+
+    if (!self) {
+      self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
+      $(obj.currentTarget).data('bs.' + this.type, self)
+    }
+
+    if (obj instanceof $.Event) {
+      self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true
+    }
+
+    if (self.tip().hasClass('in') || self.hoverState == 'in') {
+      self.hoverState = 'in'
+      return
+    }
+
+    clearTimeout(self.timeout)
+
+    self.hoverState = 'in'
+
+    if (!self.options.delay || !self.options.delay.show) return self.show()
+
+    self.timeout = setTimeout(function () {
+      if (self.hoverState == 'in') self.show()
+    }, self.options.delay.show)
+  }
+
+  Tooltip.prototype.isInStateTrue = function () {
+    for (var key in this.inState) {
+      if (this.inState[key]) return true
+    }
+
+    return false
+  }
+
+  Tooltip.prototype.leave = function (obj) {
+    var self = obj instanceof this.constructor ?
+      obj : $(obj.currentTarget).data('bs.' + this.type)
+
+    if (!self) {
+      self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
+      $(obj.currentTarget).data('bs.' + this.type, self)
+    }
+
+    if (obj instanceof $.Event) {
+      self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false
+    }
+
+    if (self.isInStateTrue()) return
+
+    clearTimeout(self.timeout)
+
+    self.hoverState = 'out'
+
+    if (!self.options.delay || !self.options.delay.hide) return self.hide()
+
+    self.timeout = setTimeout(function () {
+      if (self.hoverState == 'out') self.hide()
+    }, self.options.delay.hide)
+  }
+
+  Tooltip.prototype.show = function () {
+    var e = $.Event('show.bs.' + this.type)
+
+    if (this.hasContent() && this.enabled) {
+      this.$element.trigger(e)
+
+      var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])
+      if (e.isDefaultPrevented() || !inDom) return
+      var that = this
+
+      var $tip = this.tip()
+
+      var tipId = this.getUID(this.type)
+
+      this.setContent()
+      $tip.attr('id', tipId)
+      this.$element.attr('aria-describedby', tipId)
+
+      if (this.options.animation) $tip.addClass('fade')
+
+      var placement = typeof this.options.placement == 'function' ?
+        this.options.placement.call(this, $tip[0], this.$element[0]) :
+        this.options.placement
+
+      var autoToken = /\s?auto?\s?/i
+      var autoPlace = autoToken.test(placement)
+      if (autoPlace) placement = placement.replace(autoToken, '') || 'top'
+
+      $tip
+        .detach()
+        .css({ top: 0, left: 0, display: 'block' })
+        .addClass(placement)
+        .data('bs.' + this.type, this)
+
+      this.options.container ? $tip.appendTo($(document).find(this.options.container)) : $tip.insertAfter(this.$element)
+      this.$element.trigger('inserted.bs.' + this.type)
+
+      var pos          = this.getPosition()
+      var actualWidth  = $tip[0].offsetWidth
+      var actualHeight = $tip[0].offsetHeight
+
+      if (autoPlace) {
+        var orgPlacement = placement
+        var viewportDim = this.getPosition(this.$viewport)
+
+        placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top'    :
+                    placement == 'top'    && pos.top    - actualHeight < viewportDim.top    ? 'bottom' :
+                    placement == 'right'  && pos.right  + actualWidth  > viewportDim.width  ? 'left'   :
+                    placement == 'left'   && pos.left   - actualWidth  < viewportDim.left   ? 'right'  :
+                    placement
+
+        $tip
+          .removeClass(orgPlacement)
+          .addClass(placement)
+      }
+
+      var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)
+
+      this.applyPlacement(calculatedOffset, placement)
+
+      var complete = function () {
+        var prevHoverState = that.hoverState
+        that.$element.trigger('shown.bs.' + that.type)
+        that.hoverState = null
+
+        if (prevHoverState == 'out') that.leave(that)
+      }
+
+      $.support.transition && this.$tip.hasClass('fade') ?
+        $tip
+          .one('bsTransitionEnd', complete)
+          .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :
+        complete()
+    }
+  }
+
+  Tooltip.prototype.applyPlacement = function (offset, placement) {
+    var $tip   = this.tip()
+    var width  = $tip[0].offsetWidth
+    var height = $tip[0].offsetHeight
+
+    // manually read margins because getBoundingClientRect includes difference
+    var marginTop = parseInt($tip.css('margin-top'), 10)
+    var marginLeft = parseInt($tip.css('margin-left'), 10)
+
+    // we must check for NaN for ie 8/9
+    if (isNaN(marginTop))  marginTop  = 0
+    if (isNaN(marginLeft)) marginLeft = 0
+
+    offset.top  += marginTop
+    offset.left += marginLeft
+
+    // $.fn.offset doesn't round pixel values
+    // so we use setOffset directly with our own function B-0
+    $.offset.setOffset($tip[0], $.extend({
+      using: function (props) {
+        $tip.css({
+          top: Math.round(props.top),
+          left: Math.round(props.left)
+        })
+      }
+    }, offset), 0)
+
+    $tip.addClass('in')
+
+    // check to see if placing tip in new offset caused the tip to resize itself
+    var actualWidth  = $tip[0].offsetWidth
+    var actualHeight = $tip[0].offsetHeight
+
+    if (placement == 'top' && actualHeight != height) {
+      offset.top = offset.top + height - actualHeight
+    }
+
+    var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)
+
+    if (delta.left) offset.left += delta.left
+    else offset.top += delta.top
+
+    var isVertical          = /top|bottom/.test(placement)
+    var arrowDelta          = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight
+    var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'
+
+    $tip.offset(offset)
+    this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)
+  }
+
+  Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) {
+    this.arrow()
+      .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')
+      .css(isVertical ? 'top' : 'left', '')
+  }
+
+  Tooltip.prototype.setContent = function () {
+    var $tip  = this.tip()
+    var title = this.getTitle()
+
+    if (this.options.html) {
+      if (this.options.sanitize) {
+        title = sanitizeHtml(title, this.options.whiteList, this.options.sanitizeFn)
+      }
+
+      $tip.find('.tooltip-inner').html(title)
+    } else {
+      $tip.find('.tooltip-inner').text(title)
+    }
+
+    $tip.removeClass('fade in top bottom left right')
+  }
+
+  Tooltip.prototype.hide = function (callback) {
+    var that = this
+    var $tip = $(this.$tip)
+    var e    = $.Event('hide.bs.' + this.type)
+
+    function complete() {
+      if (that.hoverState != 'in') $tip.detach()
+      if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary.
+        that.$element
+          .removeAttr('aria-describedby')
+          .trigger('hidden.bs.' + that.type)
+      }
+      callback && callback()
+    }
+
+    this.$element.trigger(e)
+
+    if (e.isDefaultPrevented()) return
+
+    $tip.removeClass('in')
+
+    $.support.transition && $tip.hasClass('fade') ?
+      $tip
+        .one('bsTransitionEnd', complete)
+        .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :
+      complete()
+
+    this.hoverState = null
+
+    return this
+  }
+
+  Tooltip.prototype.fixTitle = function () {
+    var $e = this.$element
+    if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') {
+      $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')
+    }
+  }
+
+  Tooltip.prototype.hasContent = function () {
+    return this.getTitle()
+  }
+
+  Tooltip.prototype.getPosition = function ($element) {
+    $element   = $element || this.$element
+
+    var el     = $element[0]
+    var isBody = el.tagName == 'BODY'
+
+    var elRect    = el.getBoundingClientRect()
+    if (elRect.width == null) {
+      // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093
+      elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })
+    }
+    var isSvg = window.SVGElement && el instanceof window.SVGElement
+    // Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3.
+    // See https://github.com/twbs/bootstrap/issues/20280
+    var elOffset  = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset())
+    var scroll    = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }
+    var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null
+
+    return $.extend({}, elRect, scroll, outerDims, elOffset)
+  }
+
+  Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {
+    return placement == 'bottom' ? { top: pos.top + pos.height,   left: pos.left + pos.width / 2 - actualWidth / 2 } :
+           placement == 'top'    ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :
+           placement == 'left'   ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :
+        /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }
+
+  }
+
+  Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {
+    var delta = { top: 0, left: 0 }
+    if (!this.$viewport) return delta
+
+    var viewportPadding = this.options.viewport && this.options.viewport.padding || 0
+    var viewportDimensions = this.getPosition(this.$viewport)
+
+    if (/right|left/.test(placement)) {
+      var topEdgeOffset    = pos.top - viewportPadding - viewportDimensions.scroll
+      var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight
+      if (topEdgeOffset < viewportDimensions.top) { // top overflow
+        delta.top = viewportDimensions.top - topEdgeOffset
+      } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow
+        delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset
+      }
+    } else {
+      var leftEdgeOffset  = pos.left - viewportPadding
+      var rightEdgeOffset = pos.left + viewportPadding + actualWidth
+      if (leftEdgeOffset < viewportDimensions.left) { // left overflow
+        delta.left = viewportDimensions.left - leftEdgeOffset
+      } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow
+        delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset
+      }
+    }
+
+    return delta
+  }
+
+  Tooltip.prototype.getTitle = function () {
+    var title
+    var $e = this.$element
+    var o  = this.options
+
+    title = $e.attr('data-original-title')
+      || (typeof o.title == 'function' ? o.title.call($e[0]) :  o.title)
+
+    return title
+  }
+
+  Tooltip.prototype.getUID = function (prefix) {
+    do prefix += ~~(Math.random() * 1000000)
+    while (document.getElementById(prefix))
+    return prefix
+  }
+
+  Tooltip.prototype.tip = function () {
+    if (!this.$tip) {
+      this.$tip = $(this.options.template)
+      if (this.$tip.length != 1) {
+        throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!')
+      }
+    }
+    return this.$tip
+  }
+
+  Tooltip.prototype.arrow = function () {
+    return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))
+  }
+
+  Tooltip.prototype.enable = function () {
+    this.enabled = true
+  }
+
+  Tooltip.prototype.disable = function () {
+    this.enabled = false
+  }
+
+  Tooltip.prototype.toggleEnabled = function () {
+    this.enabled = !this.enabled
+  }
+
+  Tooltip.prototype.toggle = function (e) {
+    var self = this
+    if (e) {
+      self = $(e.currentTarget).data('bs.' + this.type)
+      if (!self) {
+        self = new this.constructor(e.currentTarget, this.getDelegateOptions())
+        $(e.currentTarget).data('bs.' + this.type, self)
+      }
+    }
+
+    if (e) {
+      self.inState.click = !self.inState.click
+      if (self.isInStateTrue()) self.enter(self)
+      else self.leave(self)
+    } else {
+      self.tip().hasClass('in') ? self.leave(self) : self.enter(self)
+    }
+  }
+
+  Tooltip.prototype.destroy = function () {
+    var that = this
+    clearTimeout(this.timeout)
+    this.hide(function () {
+      that.$element.off('.' + that.type).removeData('bs.' + that.type)
+      if (that.$tip) {
+        that.$tip.detach()
+      }
+      that.$tip = null
+      that.$arrow = null
+      that.$viewport = null
+      that.$element = null
+    })
+  }
+
+  Tooltip.prototype.sanitizeHtml = function (unsafeHtml) {
+    return sanitizeHtml(unsafeHtml, this.options.whiteList, this.options.sanitizeFn)
+  }
+
+  // TOOLTIP PLUGIN DEFINITION
+  // =========================
+
+  function Plugin(option) {
+    return this.each(function () {
+      var $this   = $(this)
+      var data    = $this.data('bs.tooltip')
+      var options = typeof option == 'object' && option
+
+      if (!data && /destroy|hide/.test(option)) return
+      if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))
+      if (typeof option == 'string') data[option]()
+    })
+  }
+
+  var old = $.fn.tooltip
+
+  $.fn.tooltip             = Plugin
+  $.fn.tooltip.Constructor = Tooltip
+
+
+  // TOOLTIP NO CONFLICT
+  // ===================
+
+  $.fn.tooltip.noConflict = function () {
+    $.fn.tooltip = old
+    return this
+  }
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: popover.js v3.4.1
+ * https://getbootstrap.com/docs/3.4/javascript/#popovers
+ * ========================================================================
+ * Copyright 2011-2019 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // POPOVER PUBLIC CLASS DEFINITION
+  // ===============================
+
+  var Popover = function (element, options) {
+    this.init('popover', element, options)
+  }
+
+  if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')
+
+  Popover.VERSION  = '3.4.1'
+
+  Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {
+    placement: 'right',
+    trigger: 'click',
+    content: '',
+    template: '<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
+  })
+
+
+  // NOTE: POPOVER EXTENDS tooltip.js
+  // ================================
+
+  Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)
+
+  Popover.prototype.constructor = Popover
+
+  Popover.prototype.getDefaults = function () {
+    return Popover.DEFAULTS
+  }
+
+  Popover.prototype.setContent = function () {
+    var $tip    = this.tip()
+    var title   = this.getTitle()
+    var content = this.getContent()
+
+    if (this.options.html) {
+      var typeContent = typeof content
+
+      if (this.options.sanitize) {
+        title = this.sanitizeHtml(title)
+
+        if (typeContent === 'string') {
+          content = this.sanitizeHtml(content)
+        }
+      }
+
+      $tip.find('.popover-title').html(title)
+      $tip.find('.popover-content').children().detach().end()[
+        typeContent === 'string' ? 'html' : 'append'
+      ](content)
+    } else {
+      $tip.find('.popover-title').text(title)
+      $tip.find('.popover-content').children().detach().end().text(content)
+    }
+
+    $tip.removeClass('fade top bottom left right in')
+
+    // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do
+    // this manually by checking the contents.
+    if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()
+  }
+
+  Popover.prototype.hasContent = function () {
+    return this.getTitle() || this.getContent()
+  }
+
+  Popover.prototype.getContent = function () {
+    var $e = this.$element
+    var o  = this.options
+
+    return $e.attr('data-content')
+      || (typeof o.content == 'function' ?
+        o.content.call($e[0]) :
+        o.content)
+  }
+
+  Popover.prototype.arrow = function () {
+    return (this.$arrow = this.$arrow || this.tip().find('.arrow'))
+  }
+
+
+  // POPOVER PLUGIN DEFINITION
+  // =========================
+
+  function Plugin(option) {
+    return this.each(function () {
+      var $this   = $(this)
+      var data    = $this.data('bs.popover')
+      var options = typeof option == 'object' && option
+
+      if (!data && /destroy|hide/.test(option)) return
+      if (!data) $this.data('bs.popover', (data = new Popover(this, options)))
+      if (typeof option == 'string') data[option]()
+    })
+  }
+
+  var old = $.fn.popover
+
+  $.fn.popover             = Plugin
+  $.fn.popover.Constructor = Popover
+
+
+  // POPOVER NO CONFLICT
+  // ===================
+
+  $.fn.popover.noConflict = function () {
+    $.fn.popover = old
+    return this
+  }
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: scrollspy.js v3.4.1
+ * https://getbootstrap.com/docs/3.4/javascript/#scrollspy
+ * ========================================================================
+ * Copyright 2011-2019 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // SCROLLSPY CLASS DEFINITION
+  // ==========================
+
+  function ScrollSpy(element, options) {
+    this.$body          = $(document.body)
+    this.$scrollElement = $(element).is(document.body) ? $(window) : $(element)
+    this.options        = $.extend({}, ScrollSpy.DEFAULTS, options)
+    this.selector       = (this.options.target || '') + ' .nav li > a'
+    this.offsets        = []
+    this.targets        = []
+    this.activeTarget   = null
+    this.scrollHeight   = 0
+
+    this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this))
+    this.refresh()
+    this.process()
+  }
+
+  ScrollSpy.VERSION  = '3.4.1'
+
+  ScrollSpy.DEFAULTS = {
+    offset: 10
+  }
+
+  ScrollSpy.prototype.getScrollHeight = function () {
+    return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)
+  }
+
+  ScrollSpy.prototype.refresh = function () {
+    var that          = this
+    var offsetMethod  = 'offset'
+    var offsetBase    = 0
+
+    this.offsets      = []
+    this.targets      = []
+    this.scrollHeight = this.getScrollHeight()
+
+    if (!$.isWindow(this.$scrollElement[0])) {
+      offsetMethod = 'position'
+      offsetBase   = this.$scrollElement.scrollTop()
+    }
+
+    this.$body
+      .find(this.selector)
+      .map(function () {
+        var $el   = $(this)
+        var href  = $el.data('target') || $el.attr('href')
+        var $href = /^#./.test(href) && $(href)
+
+        return ($href
+          && $href.length
+          && $href.is(':visible')
+          && [[$href[offsetMethod]().top + offsetBase, href]]) || null
+      })
+      .sort(function (a, b) { return a[0] - b[0] })
+      .each(function () {
+        that.offsets.push(this[0])
+        that.targets.push(this[1])
+      })
+  }
+
+  ScrollSpy.prototype.process = function () {
+    var scrollTop    = this.$scrollElement.scrollTop() + this.options.offset
+    var scrollHeight = this.getScrollHeight()
+    var maxScroll    = this.options.offset + scrollHeight - this.$scrollElement.height()
+    var offsets      = this.offsets
+    var targets      = this.targets
+    var activeTarget = this.activeTarget
+    var i
+
+    if (this.scrollHeight != scrollHeight) {
+      this.refresh()
+    }
+
+    if (scrollTop >= maxScroll) {
+      return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)
+    }
+
+    if (activeTarget && scrollTop < offsets[0]) {
+      this.activeTarget = null
+      return this.clear()
+    }
+
+    for (i = offsets.length; i--;) {
+      activeTarget != targets[i]
+        && scrollTop >= offsets[i]
+        && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1])
+        && this.activate(targets[i])
+    }
+  }
+
+  ScrollSpy.prototype.activate = function (target) {
+    this.activeTarget = target
+
+    this.clear()
+
+    var selector = this.selector +
+      '[data-target="' + target + '"],' +
+      this.selector + '[href="' + target + '"]'
+
+    var active = $(selector)
+      .parents('li')
+      .addClass('active')
+
+    if (active.parent('.dropdown-menu').length) {
+      active = active
+        .closest('li.dropdown')
+        .addClass('active')
+    }
+
+    active.trigger('activate.bs.scrollspy')
+  }
+
+  ScrollSpy.prototype.clear = function () {
+    $(this.selector)
+      .parentsUntil(this.options.target, '.active')
+      .removeClass('active')
+  }
+
+
+  // SCROLLSPY PLUGIN DEFINITION
+  // ===========================
+
+  function Plugin(option) {
+    return this.each(function () {
+      var $this   = $(this)
+      var data    = $this.data('bs.scrollspy')
+      var options = typeof option == 'object' && option
+
+      if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))
+      if (typeof option == 'string') data[option]()
+    })
+  }
+
+  var old = $.fn.scrollspy
+
+  $.fn.scrollspy             = Plugin
+  $.fn.scrollspy.Constructor = ScrollSpy
+
+
+  // SCROLLSPY NO CONFLICT
+  // =====================
+
+  $.fn.scrollspy.noConflict = function () {
+    $.fn.scrollspy = old
+    return this
+  }
+
+
+  // SCROLLSPY DATA-API
+  // ==================
+
+  $(window).on('load.bs.scrollspy.data-api', function () {
+    $('[data-spy="scroll"]').each(function () {
+      var $spy = $(this)
+      Plugin.call($spy, $spy.data())
+    })
+  })
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: tab.js v3.4.1
+ * https://getbootstrap.com/docs/3.4/javascript/#tabs
+ * ========================================================================
+ * Copyright 2011-2019 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // TAB CLASS DEFINITION
+  // ====================
+
+  var Tab = function (element) {
+    // jscs:disable requireDollarBeforejQueryAssignment
+    this.element = $(element)
+    // jscs:enable requireDollarBeforejQueryAssignment
+  }
+
+  Tab.VERSION = '3.4.1'
+
+  Tab.TRANSITION_DURATION = 150
+
+  Tab.prototype.show = function () {
+    var $this    = this.element
+    var $ul      = $this.closest('ul:not(.dropdown-menu)')
+    var selector = $this.data('target')
+
+    if (!selector) {
+      selector = $this.attr('href')
+      selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
+    }
+
+    if ($this.parent('li').hasClass('active')) return
+
+    var $previous = $ul.find('.active:last a')
+    var hideEvent = $.Event('hide.bs.tab', {
+      relatedTarget: $this[0]
+    })
+    var showEvent = $.Event('show.bs.tab', {
+      relatedTarget: $previous[0]
+    })
+
+    $previous.trigger(hideEvent)
+    $this.trigger(showEvent)
+
+    if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return
+
+    var $target = $(document).find(selector)
+
+    this.activate($this.closest('li'), $ul)
+    this.activate($target, $target.parent(), function () {
+      $previous.trigger({
+        type: 'hidden.bs.tab',
+        relatedTarget: $this[0]
+      })
+      $this.trigger({
+        type: 'shown.bs.tab',
+        relatedTarget: $previous[0]
+      })
+    })
+  }
+
+  Tab.prototype.activate = function (element, container, callback) {
+    var $active    = container.find('> .active')
+    var transition = callback
+      && $.support.transition
+      && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length)
+
+    function next() {
+      $active
+        .removeClass('active')
+        .find('> .dropdown-menu > .active')
+        .removeClass('active')
+        .end()
+        .find('[data-toggle="tab"]')
+        .attr('aria-expanded', false)
+
+      element
+        .addClass('active')
+        .find('[data-toggle="tab"]')
+        .attr('aria-expanded', true)
+
+      if (transition) {
+        element[0].offsetWidth // reflow for transition
+        element.addClass('in')
+      } else {
+        element.removeClass('fade')
+      }
+
+      if (element.parent('.dropdown-menu').length) {
+        element
+          .closest('li.dropdown')
+          .addClass('active')
+          .end()
+          .find('[data-toggle="tab"]')
+          .attr('aria-expanded', true)
+      }
+
+      callback && callback()
+    }
+
+    $active.length && transition ?
+      $active
+        .one('bsTransitionEnd', next)
+        .emulateTransitionEnd(Tab.TRANSITION_DURATION) :
+      next()
+
+    $active.removeClass('in')
+  }
+
+
+  // TAB PLUGIN DEFINITION
+  // =====================
+
+  function Plugin(option) {
+    return this.each(function () {
+      var $this = $(this)
+      var data  = $this.data('bs.tab')
+
+      if (!data) $this.data('bs.tab', (data = new Tab(this)))
+      if (typeof option == 'string') data[option]()
+    })
+  }
+
+  var old = $.fn.tab
+
+  $.fn.tab             = Plugin
+  $.fn.tab.Constructor = Tab
+
+
+  // TAB NO CONFLICT
+  // ===============
+
+  $.fn.tab.noConflict = function () {
+    $.fn.tab = old
+    return this
+  }
+
+
+  // TAB DATA-API
+  // ============
+
+  var clickHandler = function (e) {
+    e.preventDefault()
+    Plugin.call($(this), 'show')
+  }
+
+  $(document)
+    .on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler)
+    .on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler)
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: affix.js v3.4.1
+ * https://getbootstrap.com/docs/3.4/javascript/#affix
+ * ========================================================================
+ * Copyright 2011-2019 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // AFFIX CLASS DEFINITION
+  // ======================
+
+  var Affix = function (element, options) {
+    this.options = $.extend({}, Affix.DEFAULTS, options)
+
+    var target = this.options.target === Affix.DEFAULTS.target ? $(this.options.target) : $(document).find(this.options.target)
+
+    this.$target = target
+      .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))
+      .on('click.bs.affix.data-api',  $.proxy(this.checkPositionWithEventLoop, this))
+
+    this.$element     = $(element)
+    this.affixed      = null
+    this.unpin        = null
+    this.pinnedOffset = null
+
+    this.checkPosition()
+  }
+
+  Affix.VERSION  = '3.4.1'
+
+  Affix.RESET    = 'affix affix-top affix-bottom'
+
+  Affix.DEFAULTS = {
+    offset: 0,
+    target: window
+  }
+
+  Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) {
+    var scrollTop    = this.$target.scrollTop()
+    var position     = this.$element.offset()
+    var targetHeight = this.$target.height()
+
+    if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false
+
+    if (this.affixed == 'bottom') {
+      if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom'
+      return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom'
+    }
+
+    var initializing   = this.affixed == null
+    var colliderTop    = initializing ? scrollTop : position.top
+    var colliderHeight = initializing ? targetHeight : height
+
+    if (offsetTop != null && scrollTop <= offsetTop) return 'top'
+    if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom'
+
+    return false
+  }
+
+  Affix.prototype.getPinnedOffset = function () {
+    if (this.pinnedOffset) return this.pinnedOffset
+    this.$element.removeClass(Affix.RESET).addClass('affix')
+    var scrollTop = this.$target.scrollTop()
+    var position  = this.$element.offset()
+    return (this.pinnedOffset = position.top - scrollTop)
+  }
+
+  Affix.prototype.checkPositionWithEventLoop = function () {
+    setTimeout($.proxy(this.checkPosition, this), 1)
+  }
+
+  Affix.prototype.checkPosition = function () {
+    if (!this.$element.is(':visible')) return
+
+    var height       = this.$element.height()
+    var offset       = this.options.offset
+    var offsetTop    = offset.top
+    var offsetBottom = offset.bottom
+    var scrollHeight = Math.max($(document).height(), $(document.body).height())
+
+    if (typeof offset != 'object')         offsetBottom = offsetTop = offset
+    if (typeof offsetTop == 'function')    offsetTop    = offset.top(this.$element)
+    if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)
+
+    var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom)
+
+    if (this.affixed != affix) {
+      if (this.unpin != null) this.$element.css('top', '')
+
+      var affixType = 'affix' + (affix ? '-' + affix : '')
+      var e         = $.Event(affixType + '.bs.affix')
+
+      this.$element.trigger(e)
+
+      if (e.isDefaultPrevented()) return
+
+      this.affixed = affix
+      this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null
+
+      this.$element
+        .removeClass(Affix.RESET)
+        .addClass(affixType)
+        .trigger(affixType.replace('affix', 'affixed') + '.bs.affix')
+    }
+
+    if (affix == 'bottom') {
+      this.$element.offset({
+        top: scrollHeight - height - offsetBottom
+      })
+    }
+  }
+
+
+  // AFFIX PLUGIN DEFINITION
+  // =======================
+
+  function Plugin(option) {
+    return this.each(function () {
+      var $this   = $(this)
+      var data    = $this.data('bs.affix')
+      var options = typeof option == 'object' && option
+
+      if (!data) $this.data('bs.affix', (data = new Affix(this, options)))
+      if (typeof option == 'string') data[option]()
+    })
+  }
+
+  var old = $.fn.affix
+
+  $.fn.affix             = Plugin
+  $.fn.affix.Constructor = Affix
+
+
+  // AFFIX NO CONFLICT
+  // =================
+
+  $.fn.affix.noConflict = function () {
+    $.fn.affix = old
+    return this
+  }
+
+
+  // AFFIX DATA-API
+  // ==============
+
+  $(window).on('load', function () {
+    $('[data-spy="affix"]').each(function () {
+      var $spy = $(this)
+      var data = $spy.data()
+
+      data.offset = data.offset || {}
+
+      if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom
+      if (data.offsetTop    != null) data.offset.top    = data.offsetTop
+
+      Plugin.call($spy, data)
+    })
+  })
+
+}(jQuery);
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/javascripts/bootstrap.min.js
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/javascripts/bootstrap.min.js	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/javascripts/bootstrap.min.js	(revision 3762)
@@ -0,0 +1,6 @@
+/*!
+ * Bootstrap v3.4.1 (https://getbootstrap.com/)
+ * Copyright 2011-2019 Twitter, Inc.
+ * Licensed under the MIT license
+ */
+if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");!function(t){"use strict";var e=jQuery.fn.jquery.split(" ")[0].split(".");if(e[0]<2&&e[1]<9||1==e[0]&&9==e[1]&&e[2]<1||3<e[0])throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4")}(),function(n){"use strict";n.fn.emulateTransitionEnd=function(t){var e=!1,i=this;n(this).one("bsTransitionEnd",function(){e=!0});return setTimeout(function(){e||n(i).trigger(n.support.transition.end)},t),this},n(function(){n.support.transition=function o(){var t=document.createElement("bootstrap"),e={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var i in e)if(t.style[i]!==undefined)return{end:e[i]};return!1}(),n.support.transition&&(n.event.special.bsTransitionEnd={bindType:n.support.transition.end,delegateType:n.support.transition.end,handle:function(t){if(n(t.target).is(this))return t.handleObj.handler.apply(this,arguments)}})})}(jQuery),function(s){"use strict";var e='[data-dismiss="alert"]',a=function(t){s(t).on("click",e,this.close)};a.VERSION="3.4.1",a.TRANSITION_DURATION=150,a.prototype.close=function(t){var e=s(this),i=e.attr("data-target");i||(i=(i=e.attr("href"))&&i.replace(/.*(?=#[^\s]*$)/,"")),i="#"===i?[]:i;var o=s(document).find(i);function n(){o.detach().trigger("closed.bs.alert").remove()}t&&t.preventDefault(),o.length||(o=e.closest(".alert")),o.trigger(t=s.Event("close.bs.alert")),t.isDefaultPrevented()||(o.removeClass("in"),s.support.transition&&o.hasClass("fade")?o.one("bsTransitionEnd",n).emulateTransitionEnd(a.TRANSITION_DURATION):n())};var t=s.fn.alert;s.fn.alert=function o(i){return this.each(function(){var t=s(this),e=t.data("bs.alert");e||t.data("bs.alert",e=new a(this)),"string"==typeof i&&e[i].call(t)})},s.fn.alert.Constructor=a,s.fn.alert.noConflict=function(){return s.fn.alert=t,this},s(document).on("click.bs.alert.data-api",e,a.prototype.close)}(jQuery),function(s){"use strict";var n=function(t,e){this.$element=s(t),this.options=s.extend({},n.DEFAULTS,e),this.isLoading=!1};function i(o){return this.each(function(){var t=s(this),e=t.data("bs.button"),i="object"==typeof o&&o;e||t.data("bs.button",e=new n(this,i)),"toggle"==o?e.toggle():o&&e.setState(o)})}n.VERSION="3.4.1",n.DEFAULTS={loadingText:"loading..."},n.prototype.setState=function(t){var e="disabled",i=this.$element,o=i.is("input")?"val":"html",n=i.data();t+="Text",null==n.resetText&&i.data("resetText",i[o]()),setTimeout(s.proxy(function(){i[o](null==n[t]?this.options[t]:n[t]),"loadingText"==t?(this.isLoading=!0,i.addClass(e).attr(e,e).prop(e,!0)):this.isLoading&&(this.isLoading=!1,i.removeClass(e).removeAttr(e).prop(e,!1))},this),0)},n.prototype.toggle=function(){var t=!0,e=this.$element.closest('[data-toggle="buttons"]');if(e.length){var i=this.$element.find("input");"radio"==i.prop("type")?(i.prop("checked")&&(t=!1),e.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==i.prop("type")&&(i.prop("checked")!==this.$element.hasClass("active")&&(t=!1),this.$element.toggleClass("active")),i.prop("checked",this.$element.hasClass("active")),t&&i.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var t=s.fn.button;s.fn.button=i,s.fn.button.Constructor=n,s.fn.button.noConflict=function(){return s.fn.button=t,this},s(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(t){var e=s(t.target).closest(".btn");i.call(e,"toggle"),s(t.target).is('input[type="radio"], input[type="checkbox"]')||(t.preventDefault(),e.is("input,button")?e.trigger("focus"):e.find("input:visible,button:visible").first().trigger("focus"))}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(t){s(t.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(t.type))})}(jQuery),function(p){"use strict";var c=function(t,e){this.$element=p(t),this.$indicators=this.$element.find(".carousel-indicators"),this.options=e,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",p.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",p.proxy(this.pause,this)).on("mouseleave.bs.carousel",p.proxy(this.cycle,this))};function r(n){return this.each(function(){var t=p(this),e=t.data("bs.carousel"),i=p.extend({},c.DEFAULTS,t.data(),"object"==typeof n&&n),o="string"==typeof n?n:i.slide;e||t.data("bs.carousel",e=new c(this,i)),"number"==typeof n?e.to(n):o?e[o]():i.interval&&e.pause().cycle()})}c.VERSION="3.4.1",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(t){if(!/input|textarea/i.test(t.target.tagName)){switch(t.which){case 37:this.prev();break;case 39:this.next();break;default:return}t.preventDefault()}},c.prototype.cycle=function(t){return t||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(p.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(t){return this.$items=t.parent().children(".item"),this.$items.index(t||this.$active)},c.prototype.getItemForDirection=function(t,e){var i=this.getItemIndex(e);if(("prev"==t&&0===i||"next"==t&&i==this.$items.length-1)&&!this.options.wrap)return e;var o=(i+("prev"==t?-1:1))%this.$items.length;return this.$items.eq(o)},c.prototype.to=function(t){var e=this,i=this.getItemIndex(this.$active=this.$element.find(".item.active"));if(!(t>this.$items.length-1||t<0))return this.sliding?this.$element.one("slid.bs.carousel",function(){e.to(t)}):i==t?this.pause().cycle():this.slide(i<t?"next":"prev",this.$items.eq(t))},c.prototype.pause=function(t){return t||(this.paused=!0),this.$element.find(".next, .prev").length&&p.support.transition&&(this.$element.trigger(p.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){if(!this.sliding)return this.slide("next")},c.prototype.prev=function(){if(!this.sliding)return this.slide("prev")},c.prototype.slide=function(t,e){var i=this.$element.find(".item.active"),o=e||this.getItemForDirection(t,i),n=this.interval,s="next"==t?"left":"right",a=this;if(o.hasClass("active"))return this.sliding=!1;var r=o[0],l=p.Event("slide.bs.carousel",{relatedTarget:r,direction:s});if(this.$element.trigger(l),!l.isDefaultPrevented()){if(this.sliding=!0,n&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var h=p(this.$indicators.children()[this.getItemIndex(o)]);h&&h.addClass("active")}var d=p.Event("slid.bs.carousel",{relatedTarget:r,direction:s});return p.support.transition&&this.$element.hasClass("slide")?(o.addClass(t),"object"==typeof o&&o.length&&o[0].offsetWidth,i.addClass(s),o.addClass(s),i.one("bsTransitionEnd",function(){o.removeClass([t,s].join(" ")).addClass("active"),i.removeClass(["active",s].join(" ")),a.sliding=!1,setTimeout(function(){a.$element.trigger(d)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(i.removeClass("active"),o.addClass("active"),this.sliding=!1,this.$element.trigger(d)),n&&this.cycle(),this}};var t=p.fn.carousel;p.fn.carousel=r,p.fn.carousel.Constructor=c,p.fn.carousel.noConflict=function(){return p.fn.carousel=t,this};var e=function(t){var e=p(this),i=e.attr("href");i&&(i=i.replace(/.*(?=#[^\s]+$)/,""));var o=e.attr("data-target")||i,n=p(document).find(o);if(n.hasClass("carousel")){var s=p.extend({},n.data(),e.data()),a=e.attr("data-slide-to");a&&(s.interval=!1),r.call(n,s),a&&n.data("bs.carousel").to(a),t.preventDefault()}};p(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),p(window).on("load",function(){p('[data-ride="carousel"]').each(function(){var t=p(this);r.call(t,t.data())})})}(jQuery),function(a){"use strict";var r=function(t,e){this.$element=a(t),this.options=a.extend({},r.DEFAULTS,e),this.$trigger=a('[data-toggle="collapse"][href="#'+t.id+'"],[data-toggle="collapse"][data-target="#'+t.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};function n(t){var e,i=t.attr("data-target")||(e=t.attr("href"))&&e.replace(/.*(?=#[^\s]+$)/,"");return a(document).find(i)}function l(o){return this.each(function(){var t=a(this),e=t.data("bs.collapse"),i=a.extend({},r.DEFAULTS,t.data(),"object"==typeof o&&o);!e&&i.toggle&&/show|hide/.test(o)&&(i.toggle=!1),e||t.data("bs.collapse",e=new r(this,i)),"string"==typeof o&&e[o]()})}r.VERSION="3.4.1",r.TRANSITION_DURATION=350,r.DEFAULTS={toggle:!0},r.prototype.dimension=function(){return this.$element.hasClass("width")?"width":"height"},r.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var t,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(t=e.data("bs.collapse"))&&t.transitioning)){var i=a.Event("show.bs.collapse");if(this.$element.trigger(i),!i.isDefaultPrevented()){e&&e.length&&(l.call(e,"hide"),t||e.data("bs.collapse",null));var o=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[o](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var n=function(){this.$element.removeClass("collapsing").addClass("collapse in")[o](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return n.call(this);var s=a.camelCase(["scroll",o].join("-"));this.$element.one("bsTransitionEnd",a.proxy(n,this)).emulateTransitionEnd(r.TRANSITION_DURATION)[o](this.$element[0][s])}}}},r.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var t=a.Event("hide.bs.collapse");if(this.$element.trigger(t),!t.isDefaultPrevented()){var e=this.dimension();this.$element[e](this.$element[e]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var i=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};if(!a.support.transition)return i.call(this);this.$element[e](0).one("bsTransitionEnd",a.proxy(i,this)).emulateTransitionEnd(r.TRANSITION_DURATION)}}},r.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},r.prototype.getParent=function(){return a(document).find(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(t,e){var i=a(e);this.addAriaAndCollapsedClass(n(i),i)},this)).end()},r.prototype.addAriaAndCollapsedClass=function(t,e){var i=t.hasClass("in");t.attr("aria-expanded",i),e.toggleClass("collapsed",!i).attr("aria-expanded",i)};var t=a.fn.collapse;a.fn.collapse=l,a.fn.collapse.Constructor=r,a.fn.collapse.noConflict=function(){return a.fn.collapse=t,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(t){var e=a(this);e.attr("data-target")||t.preventDefault();var i=n(e),o=i.data("bs.collapse")?"toggle":e.data();l.call(i,o)})}(jQuery),function(a){"use strict";var r='[data-toggle="dropdown"]',o=function(t){a(t).on("click.bs.dropdown",this.toggle)};function l(t){var e=t.attr("data-target");e||(e=(e=t.attr("href"))&&/#[A-Za-z]/.test(e)&&e.replace(/.*(?=#[^\s]*$)/,""));var i="#"!==e?a(document).find(e):null;return i&&i.length?i:t.parent()}function s(o){o&&3===o.which||(a(".dropdown-backdrop").remove(),a(r).each(function(){var t=a(this),e=l(t),i={relatedTarget:this};e.hasClass("open")&&(o&&"click"==o.type&&/input|textarea/i.test(o.target.tagName)&&a.contains(e[0],o.target)||(e.trigger(o=a.Event("hide.bs.dropdown",i)),o.isDefaultPrevented()||(t.attr("aria-expanded","false"),e.removeClass("open").trigger(a.Event("hidden.bs.dropdown",i)))))}))}o.VERSION="3.4.1",o.prototype.toggle=function(t){var e=a(this);if(!e.is(".disabled, :disabled")){var i=l(e),o=i.hasClass("open");if(s(),!o){"ontouchstart"in document.documentElement&&!i.closest(".navbar-nav").length&&a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click",s);var n={relatedTarget:this};if(i.trigger(t=a.Event("show.bs.dropdown",n)),t.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),i.toggleClass("open").trigger(a.Event("shown.bs.dropdown",n))}return!1}},o.prototype.keydown=function(t){if(/(38|40|27|32)/.test(t.which)&&!/input|textarea/i.test(t.target.tagName)){var e=a(this);if(t.preventDefault(),t.stopPropagation(),!e.is(".disabled, :disabled")){var i=l(e),o=i.hasClass("open");if(!o&&27!=t.which||o&&27==t.which)return 27==t.which&&i.find(r).trigger("focus"),e.trigger("click");var n=i.find(".dropdown-menu li:not(.disabled):visible a");if(n.length){var s=n.index(t.target);38==t.which&&0<s&&s--,40==t.which&&s<n.length-1&&s++,~s||(s=0),n.eq(s).trigger("focus")}}}};var t=a.fn.dropdown;a.fn.dropdown=function e(i){return this.each(function(){var t=a(this),e=t.data("bs.dropdown");e||t.data("bs.dropdown",e=new o(this)),"string"==typeof i&&e[i].call(t)})},a.fn.dropdown.Constructor=o,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=t,this},a(document).on("click.bs.dropdown.data-api",s).on("click.bs.dropdown.data-api",".dropdown form",function(t){t.stopPropagation()}).on("click.bs.dropdown.data-api",r,o.prototype.toggle).on("keydown.bs.dropdown.data-api",r,o.prototype.keydown).on("keydown.bs.dropdown.data-api",".dropdown-menu",o.prototype.keydown)}(jQuery),function(a){"use strict";var s=function(t,e){this.options=e,this.$body=a(document.body),this.$element=a(t),this.$dialog=this.$element.find(".modal-dialog"),this.$backdrop=null,this.isShown=null,this.originalBodyPad=null,this.scrollbarWidth=0,this.ignoreBackdropClick=!1,this.fixedContent=".navbar-fixed-top, .navbar-fixed-bottom",this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,a.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};function r(o,n){return this.each(function(){var t=a(this),e=t.data("bs.modal"),i=a.extend({},s.DEFAULTS,t.data(),"object"==typeof o&&o);e||t.data("bs.modal",e=new s(this,i)),"string"==typeof o?e[o](n):i.show&&e.show(n)})}s.VERSION="3.4.1",s.TRANSITION_DURATION=300,s.BACKDROP_TRANSITION_DURATION=150,s.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},s.prototype.toggle=function(t){return this.isShown?this.hide():this.show(t)},s.prototype.show=function(i){var o=this,t=a.Event("show.bs.modal",{relatedTarget:i});this.$element.trigger(t),this.isShown||t.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.setScrollbar(),this.$body.addClass("modal-open"),this.escape(),this.resize(),this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.$dialog.on("mousedown.dismiss.bs.modal",function(){o.$element.one("mouseup.dismiss.bs.modal",function(t){a(t.target).is(o.$element)&&(o.ignoreBackdropClick=!0)})}),this.backdrop(function(){var t=a.support.transition&&o.$element.hasClass("fade");o.$element.parent().length||o.$element.appendTo(o.$body),o.$element.show().scrollTop(0),o.adjustDialog(),t&&o.$element[0].offsetWidth,o.$element.addClass("in"),o.enforceFocus();var e=a.Event("shown.bs.modal",{relatedTarget:i});t?o.$dialog.one("bsTransitionEnd",function(){o.$element.trigger("focus").trigger(e)}).emulateTransitionEnd(s.TRANSITION_DURATION):o.$element.trigger("focus").trigger(e)}))},s.prototype.hide=function(t){t&&t.preventDefault(),t=a.Event("hide.bs.modal"),this.$element.trigger(t),this.isShown&&!t.isDefaultPrevented()&&(this.isShown=!1,this.escape(),this.resize(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").off("click.dismiss.bs.modal").off("mouseup.dismiss.bs.modal"),this.$dialog.off("mousedown.dismiss.bs.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",a.proxy(this.hideModal,this)).emulateTransitionEnd(s.TRANSITION_DURATION):this.hideModal())},s.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(t){document===t.target||this.$element[0]===t.target||this.$element.has(t.target).length||this.$element.trigger("focus")},this))},s.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keydown.dismiss.bs.modal",a.proxy(function(t){27==t.which&&this.hide()},this)):this.isShown||this.$element.off("keydown.dismiss.bs.modal")},s.prototype.resize=function(){this.isShown?a(window).on("resize.bs.modal",a.proxy(this.handleUpdate,this)):a(window).off("resize.bs.modal")},s.prototype.hideModal=function(){var t=this;this.$element.hide(),this.backdrop(function(){t.$body.removeClass("modal-open"),t.resetAdjustments(),t.resetScrollbar(),t.$element.trigger("hidden.bs.modal")})},s.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},s.prototype.backdrop=function(t){var e=this,i=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var o=a.support.transition&&i;if(this.$backdrop=a(document.createElement("div")).addClass("modal-backdrop "+i).appendTo(this.$body),this.$element.on("click.dismiss.bs.modal",a.proxy(function(t){this.ignoreBackdropClick?this.ignoreBackdropClick=!1:t.target===t.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus():this.hide())},this)),o&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!t)return;o?this.$backdrop.one("bsTransitionEnd",t).emulateTransitionEnd(s.BACKDROP_TRANSITION_DURATION):t()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var n=function(){e.removeBackdrop(),t&&t()};a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",n).emulateTransitionEnd(s.BACKDROP_TRANSITION_DURATION):n()}else t&&t()},s.prototype.handleUpdate=function(){this.adjustDialog()},s.prototype.adjustDialog=function(){var t=this.$element[0].scrollHeight>document.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&t?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!t?this.scrollbarWidth:""})},s.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},s.prototype.checkScrollbar=function(){var t=window.innerWidth;if(!t){var e=document.documentElement.getBoundingClientRect();t=e.right-Math.abs(e.left)}this.bodyIsOverflowing=document.body.clientWidth<t,this.scrollbarWidth=this.measureScrollbar()},s.prototype.setScrollbar=function(){var t=parseInt(this.$body.css("padding-right")||0,10);this.originalBodyPad=document.body.style.paddingRight||"";var n=this.scrollbarWidth;this.bodyIsOverflowing&&(this.$body.css("padding-right",t+n),a(this.fixedContent).each(function(t,e){var i=e.style.paddingRight,o=a(e).css("padding-right");a(e).data("padding-right",i).css("padding-right",parseFloat(o)+n+"px")}))},s.prototype.resetScrollbar=function(){this.$body.css("padding-right",this.originalBodyPad),a(this.fixedContent).each(function(t,e){var i=a(e).data("padding-right");a(e).removeData("padding-right"),e.style.paddingRight=i||""})},s.prototype.measureScrollbar=function(){var t=document.createElement("div");t.className="modal-scrollbar-measure",this.$body.append(t);var e=t.offsetWidth-t.clientWidth;return this.$body[0].removeChild(t),e};var t=a.fn.modal;a.fn.modal=r,a.fn.modal.Constructor=s,a.fn.modal.noConflict=function(){return a.fn.modal=t,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(t){var e=a(this),i=e.attr("href"),o=e.attr("data-target")||i&&i.replace(/.*(?=#[^\s]+$)/,""),n=a(document).find(o),s=n.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(i)&&i},n.data(),e.data());e.is("a")&&t.preventDefault(),n.one("show.bs.modal",function(t){t.isDefaultPrevented()||n.one("hidden.bs.modal",function(){e.is(":visible")&&e.trigger("focus")})}),r.call(n,s,this)})}(jQuery),function(g){"use strict";var o=["sanitize","whiteList","sanitizeFn"],a=["background","cite","href","itemtype","longdesc","poster","src","xlink:href"],t={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},r=/^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi,l=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i;function u(t,e){var i=t.nodeName.toLowerCase();if(-1!==g.inArray(i,e))return-1===g.inArray(i,a)||Boolean(t.nodeValue.match(r)||t.nodeValue.match(l));for(var o=g(e).filter(function(t,e){return e instanceof RegExp}),n=0,s=o.length;n<s;n++)if(i.match(o[n]))return!0;return!1}function n(t,e,i){if(0===t.length)return t;if(i&&"function"==typeof i)return i(t);if(!document.implementation||!document.implementation.createHTMLDocument)return t;var o=document.implementation.createHTMLDocument("sanitization");o.body.innerHTML=t;for(var n=g.map(e,function(t,e){return e}),s=g(o.body).find("*"),a=0,r=s.length;a<r;a++){var l=s[a],h=l.nodeName.toLowerCase();if(-1!==g.inArray(h,n))for(var d=g.map(l.attributes,function(t){return t}),p=[].concat(e["*"]||[],e[h]||[]),c=0,f=d.length;c<f;c++)u(d[c],p)||l.removeAttribute(d[c].nodeName);else l.parentNode.removeChild(l)}return o.body.innerHTML}var m=function(t,e){this.type=null,this.options=null,this.enabled=null,this.timeout=null,this.hoverState=null,this.$element=null,this.inState=null,this.init("tooltip",t,e)};m.VERSION="3.4.1",m.TRANSITION_DURATION=150,m.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0},sanitize:!0,sanitizeFn:null,whiteList:t},m.prototype.init=function(t,e,i){if(this.enabled=!0,this.type=t,this.$element=g(e),this.options=this.getOptions(i),this.$viewport=this.options.viewport&&g(document).find(g.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var o=this.options.trigger.split(" "),n=o.length;n--;){var s=o[n];if("click"==s)this.$element.on("click."+this.type,this.options.selector,g.proxy(this.toggle,this));else if("manual"!=s){var a="hover"==s?"mouseenter":"focusin",r="hover"==s?"mouseleave":"focusout";this.$element.on(a+"."+this.type,this.options.selector,g.proxy(this.enter,this)),this.$element.on(r+"."+this.type,this.options.selector,g.proxy(this.leave,this))}}this.options.selector?this._options=g.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},m.prototype.getDefaults=function(){return m.DEFAULTS},m.prototype.getOptions=function(t){var e=this.$element.data();for(var i in e)e.hasOwnProperty(i)&&-1!==g.inArray(i,o)&&delete e[i];return(t=g.extend({},this.getDefaults(),e,t)).delay&&"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),t.sanitize&&(t.template=n(t.template,t.whiteList,t.sanitizeFn)),t},m.prototype.getDelegateOptions=function(){var i={},o=this.getDefaults();return this._options&&g.each(this._options,function(t,e){o[t]!=e&&(i[t]=e)}),i},m.prototype.enter=function(t){var e=t instanceof this.constructor?t:g(t.currentTarget).data("bs."+this.type);if(e||(e=new this.constructor(t.currentTarget,this.getDelegateOptions()),g(t.currentTarget).data("bs."+this.type,e)),t instanceof g.Event&&(e.inState["focusin"==t.type?"focus":"hover"]=!0),e.tip().hasClass("in")||"in"==e.hoverState)e.hoverState="in";else{if(clearTimeout(e.timeout),e.hoverState="in",!e.options.delay||!e.options.delay.show)return e.show();e.timeout=setTimeout(function(){"in"==e.hoverState&&e.show()},e.options.delay.show)}},m.prototype.isInStateTrue=function(){for(var t in this.inState)if(this.inState[t])return!0;return!1},m.prototype.leave=function(t){var e=t instanceof this.constructor?t:g(t.currentTarget).data("bs."+this.type);if(e||(e=new this.constructor(t.currentTarget,this.getDelegateOptions()),g(t.currentTarget).data("bs."+this.type,e)),t instanceof g.Event&&(e.inState["focusout"==t.type?"focus":"hover"]=!1),!e.isInStateTrue()){if(clearTimeout(e.timeout),e.hoverState="out",!e.options.delay||!e.options.delay.hide)return e.hide();e.timeout=setTimeout(function(){"out"==e.hoverState&&e.hide()},e.options.delay.hide)}},m.prototype.show=function(){var t=g.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(t);var e=g.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(t.isDefaultPrevented()||!e)return;var i=this,o=this.tip(),n=this.getUID(this.type);this.setContent(),o.attr("id",n),this.$element.attr("aria-describedby",n),this.options.animation&&o.addClass("fade");var s="function"==typeof this.options.placement?this.options.placement.call(this,o[0],this.$element[0]):this.options.placement,a=/\s?auto?\s?/i,r=a.test(s);r&&(s=s.replace(a,"")||"top"),o.detach().css({top:0,left:0,display:"block"}).addClass(s).data("bs."+this.type,this),this.options.container?o.appendTo(g(document).find(this.options.container)):o.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var l=this.getPosition(),h=o[0].offsetWidth,d=o[0].offsetHeight;if(r){var p=s,c=this.getPosition(this.$viewport);s="bottom"==s&&l.bottom+d>c.bottom?"top":"top"==s&&l.top-d<c.top?"bottom":"right"==s&&l.right+h>c.width?"left":"left"==s&&l.left-h<c.left?"right":s,o.removeClass(p).addClass(s)}var f=this.getCalculatedOffset(s,l,h,d);this.applyPlacement(f,s);var u=function(){var t=i.hoverState;i.$element.trigger("shown.bs."+i.type),i.hoverState=null,"out"==t&&i.leave(i)};g.support.transition&&this.$tip.hasClass("fade")?o.one("bsTransitionEnd",u).emulateTransitionEnd(m.TRANSITION_DURATION):u()}},m.prototype.applyPlacement=function(t,e){var i=this.tip(),o=i[0].offsetWidth,n=i[0].offsetHeight,s=parseInt(i.css("margin-top"),10),a=parseInt(i.css("margin-left"),10);isNaN(s)&&(s=0),isNaN(a)&&(a=0),t.top+=s,t.left+=a,g.offset.setOffset(i[0],g.extend({using:function(t){i.css({top:Math.round(t.top),left:Math.round(t.left)})}},t),0),i.addClass("in");var r=i[0].offsetWidth,l=i[0].offsetHeight;"top"==e&&l!=n&&(t.top=t.top+n-l);var h=this.getViewportAdjustedDelta(e,t,r,l);h.left?t.left+=h.left:t.top+=h.top;var d=/top|bottom/.test(e),p=d?2*h.left-o+r:2*h.top-n+l,c=d?"offsetWidth":"offsetHeight";i.offset(t),this.replaceArrow(p,i[0][c],d)},m.prototype.replaceArrow=function(t,e,i){this.arrow().css(i?"left":"top",50*(1-t/e)+"%").css(i?"top":"left","")},m.prototype.setContent=function(){var t=this.tip(),e=this.getTitle();this.options.html?(this.options.sanitize&&(e=n(e,this.options.whiteList,this.options.sanitizeFn)),t.find(".tooltip-inner").html(e)):t.find(".tooltip-inner").text(e),t.removeClass("fade in top bottom left right")},m.prototype.hide=function(t){var e=this,i=g(this.$tip),o=g.Event("hide.bs."+this.type);function n(){"in"!=e.hoverState&&i.detach(),e.$element&&e.$element.removeAttr("aria-describedby").trigger("hidden.bs."+e.type),t&&t()}if(this.$element.trigger(o),!o.isDefaultPrevented())return i.removeClass("in"),g.support.transition&&i.hasClass("fade")?i.one("bsTransitionEnd",n).emulateTransitionEnd(m.TRANSITION_DURATION):n(),this.hoverState=null,this},m.prototype.fixTitle=function(){var t=this.$element;(t.attr("title")||"string"!=typeof t.attr("data-original-title"))&&t.attr("data-original-title",t.attr("title")||"").attr("title","")},m.prototype.hasContent=function(){return this.getTitle()},m.prototype.getPosition=function(t){var e=(t=t||this.$element)[0],i="BODY"==e.tagName,o=e.getBoundingClientRect();null==o.width&&(o=g.extend({},o,{width:o.right-o.left,height:o.bottom-o.top}));var n=window.SVGElement&&e instanceof window.SVGElement,s=i?{top:0,left:0}:n?null:t.offset(),a={scroll:i?document.documentElement.scrollTop||document.body.scrollTop:t.scrollTop()},r=i?{width:g(window).width(),height:g(window).height()}:null;return g.extend({},o,a,r,s)},m.prototype.getCalculatedOffset=function(t,e,i,o){return"bottom"==t?{top:e.top+e.height,left:e.left+e.width/2-i/2}:"top"==t?{top:e.top-o,left:e.left+e.width/2-i/2}:"left"==t?{top:e.top+e.height/2-o/2,left:e.left-i}:{top:e.top+e.height/2-o/2,left:e.left+e.width}},m.prototype.getViewportAdjustedDelta=function(t,e,i,o){var n={top:0,left:0};if(!this.$viewport)return n;var s=this.options.viewport&&this.options.viewport.padding||0,a=this.getPosition(this.$viewport);if(/right|left/.test(t)){var r=e.top-s-a.scroll,l=e.top+s-a.scroll+o;r<a.top?n.top=a.top-r:l>a.top+a.height&&(n.top=a.top+a.height-l)}else{var h=e.left-s,d=e.left+s+i;h<a.left?n.left=a.left-h:d>a.right&&(n.left=a.left+a.width-d)}return n},m.prototype.getTitle=function(){var t=this.$element,e=this.options;return t.attr("data-original-title")||("function"==typeof e.title?e.title.call(t[0]):e.title)},m.prototype.getUID=function(t){for(;t+=~~(1e6*Math.random()),document.getElementById(t););return t},m.prototype.tip=function(){if(!this.$tip&&(this.$tip=g(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},m.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},m.prototype.enable=function(){this.enabled=!0},m.prototype.disable=function(){this.enabled=!1},m.prototype.toggleEnabled=function(){this.enabled=!this.enabled},m.prototype.toggle=function(t){var e=this;t&&((e=g(t.currentTarget).data("bs."+this.type))||(e=new this.constructor(t.currentTarget,this.getDelegateOptions()),g(t.currentTarget).data("bs."+this.type,e))),t?(e.inState.click=!e.inState.click,e.isInStateTrue()?e.enter(e):e.leave(e)):e.tip().hasClass("in")?e.leave(e):e.enter(e)},m.prototype.destroy=function(){var t=this;clearTimeout(this.timeout),this.hide(function(){t.$element.off("."+t.type).removeData("bs."+t.type),t.$tip&&t.$tip.detach(),t.$tip=null,t.$arrow=null,t.$viewport=null,t.$element=null})},m.prototype.sanitizeHtml=function(t){return n(t,this.options.whiteList,this.options.sanitizeFn)};var e=g.fn.tooltip;g.fn.tooltip=function i(o){return this.each(function(){var t=g(this),e=t.data("bs.tooltip"),i="object"==typeof o&&o;!e&&/destroy|hide/.test(o)||(e||t.data("bs.tooltip",e=new m(this,i)),"string"==typeof o&&e[o]())})},g.fn.tooltip.Constructor=m,g.fn.tooltip.noConflict=function(){return g.fn.tooltip=e,this}}(jQuery),function(n){"use strict";var s=function(t,e){this.init("popover",t,e)};if(!n.fn.tooltip)throw new Error("Popover requires tooltip.js");s.VERSION="3.4.1",s.DEFAULTS=n.extend({},n.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),((s.prototype=n.extend({},n.fn.tooltip.Constructor.prototype)).constructor=s).prototype.getDefaults=function(){return s.DEFAULTS},s.prototype.setContent=function(){var t=this.tip(),e=this.getTitle(),i=this.getContent();if(this.options.html){var o=typeof i;this.options.sanitize&&(e=this.sanitizeHtml(e),"string"===o&&(i=this.sanitizeHtml(i))),t.find(".popover-title").html(e),t.find(".popover-content").children().detach().end()["string"===o?"html":"append"](i)}else t.find(".popover-title").text(e),t.find(".popover-content").children().detach().end().text(i);t.removeClass("fade top bottom left right in"),t.find(".popover-title").html()||t.find(".popover-title").hide()},s.prototype.hasContent=function(){return this.getTitle()||this.getContent()},s.prototype.getContent=function(){var t=this.$element,e=this.options;return t.attr("data-content")||("function"==typeof e.content?e.content.call(t[0]):e.content)},s.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var t=n.fn.popover;n.fn.popover=function e(o){return this.each(function(){var t=n(this),e=t.data("bs.popover"),i="object"==typeof o&&o;!e&&/destroy|hide/.test(o)||(e||t.data("bs.popover",e=new s(this,i)),"string"==typeof o&&e[o]())})},n.fn.popover.Constructor=s,n.fn.popover.noConflict=function(){return n.fn.popover=t,this}}(jQuery),function(s){"use strict";function n(t,e){this.$body=s(document.body),this.$scrollElement=s(t).is(document.body)?s(window):s(t),this.options=s.extend({},n.DEFAULTS,e),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",s.proxy(this.process,this)),this.refresh(),this.process()}function e(o){return this.each(function(){var t=s(this),e=t.data("bs.scrollspy"),i="object"==typeof o&&o;e||t.data("bs.scrollspy",e=new n(this,i)),"string"==typeof o&&e[o]()})}n.VERSION="3.4.1",n.DEFAULTS={offset:10},n.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},n.prototype.refresh=function(){var t=this,o="offset",n=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),s.isWindow(this.$scrollElement[0])||(o="position",n=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var t=s(this),e=t.data("target")||t.attr("href"),i=/^#./.test(e)&&s(e);return i&&i.length&&i.is(":visible")&&[[i[o]().top+n,e]]||null}).sort(function(t,e){return t[0]-e[0]}).each(function(){t.offsets.push(this[0]),t.targets.push(this[1])})},n.prototype.process=function(){var t,e=this.$scrollElement.scrollTop()+this.options.offset,i=this.getScrollHeight(),o=this.options.offset+i-this.$scrollElement.height(),n=this.offsets,s=this.targets,a=this.activeTarget;if(this.scrollHeight!=i&&this.refresh(),o<=e)return a!=(t=s[s.length-1])&&this.activate(t);if(a&&e<n[0])return this.activeTarget=null,this.clear();for(t=n.length;t--;)a!=s[t]&&e>=n[t]&&(n[t+1]===undefined||e<n[t+1])&&this.activate(s[t])},n.prototype.activate=function(t){this.activeTarget=t,this.clear();var e=this.selector+'[data-target="'+t+'"],'+this.selector+'[href="'+t+'"]',i=s(e).parents("li").addClass("active");i.parent(".dropdown-menu").length&&(i=i.closest("li.dropdown").addClass("active")),i.trigger("activate.bs.scrollspy")},n.prototype.clear=function(){s(this.selector).parentsUntil(this.options.target,".active").removeClass("active")};var t=s.fn.scrollspy;s.fn.scrollspy=e,s.fn.scrollspy.Constructor=n,s.fn.scrollspy.noConflict=function(){return s.fn.scrollspy=t,this},s(window).on("load.bs.scrollspy.data-api",function(){s('[data-spy="scroll"]').each(function(){var t=s(this);e.call(t,t.data())})})}(jQuery),function(r){"use strict";var a=function(t){this.element=r(t)};function e(i){return this.each(function(){var t=r(this),e=t.data("bs.tab");e||t.data("bs.tab",e=new a(this)),"string"==typeof i&&e[i]()})}a.VERSION="3.4.1",a.TRANSITION_DURATION=150,a.prototype.show=function(){var t=this.element,e=t.closest("ul:not(.dropdown-menu)"),i=t.data("target");if(i||(i=(i=t.attr("href"))&&i.replace(/.*(?=#[^\s]*$)/,"")),!t.parent("li").hasClass("active")){var o=e.find(".active:last a"),n=r.Event("hide.bs.tab",{relatedTarget:t[0]}),s=r.Event("show.bs.tab",{relatedTarget:o[0]});if(o.trigger(n),t.trigger(s),!s.isDefaultPrevented()&&!n.isDefaultPrevented()){var a=r(document).find(i);this.activate(t.closest("li"),e),this.activate(a,a.parent(),function(){o.trigger({type:"hidden.bs.tab",relatedTarget:t[0]}),t.trigger({type:"shown.bs.tab",relatedTarget:o[0]})})}}},a.prototype.activate=function(t,e,i){var o=e.find("> .active"),n=i&&r.support.transition&&(o.length&&o.hasClass("fade")||!!e.find("> .fade").length);function s(){o.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),t.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),n?(t[0].offsetWidth,t.addClass("in")):t.removeClass("fade"),t.parent(".dropdown-menu").length&&t.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),i&&i()}o.length&&n?o.one("bsTransitionEnd",s).emulateTransitionEnd(a.TRANSITION_DURATION):s(),o.removeClass("in")};var t=r.fn.tab;r.fn.tab=e,r.fn.tab.Constructor=a,r.fn.tab.noConflict=function(){return r.fn.tab=t,this};var i=function(t){t.preventDefault(),e.call(r(this),"show")};r(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',i).on("click.bs.tab.data-api",'[data-toggle="pill"]',i)}(jQuery),function(l){"use strict";var h=function(t,e){this.options=l.extend({},h.DEFAULTS,e);var i=this.options.target===h.DEFAULTS.target?l(this.options.target):l(document).find(this.options.target);this.$target=i.on("scroll.bs.affix.data-api",l.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",l.proxy(this.checkPositionWithEventLoop,this)),this.$element=l(t),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};function i(o){return this.each(function(){var t=l(this),e=t.data("bs.affix"),i="object"==typeof o&&o;e||t.data("bs.affix",e=new h(this,i)),"string"==typeof o&&e[o]()})}h.VERSION="3.4.1",h.RESET="affix affix-top affix-bottom",h.DEFAULTS={offset:0,target:window},h.prototype.getState=function(t,e,i,o){var n=this.$target.scrollTop(),s=this.$element.offset(),a=this.$target.height();if(null!=i&&"top"==this.affixed)return n<i&&"top";if("bottom"==this.affixed)return null!=i?!(n+this.unpin<=s.top)&&"bottom":!(n+a<=t-o)&&"bottom";var r=null==this.affixed,l=r?n:s.top;return null!=i&&n<=i?"top":null!=o&&t-o<=l+(r?a:e)&&"bottom"},h.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(h.RESET).addClass("affix");var t=this.$target.scrollTop(),e=this.$element.offset();return this.pinnedOffset=e.top-t},h.prototype.checkPositionWithEventLoop=function(){setTimeout(l.proxy(this.checkPosition,this),1)},h.prototype.checkPosition=function(){if(this.$element.is(":visible")){var t=this.$element.height(),e=this.options.offset,i=e.top,o=e.bottom,n=Math.max(l(document).height(),l(document.body).height());"object"!=typeof e&&(o=i=e),"function"==typeof i&&(i=e.top(this.$element)),"function"==typeof o&&(o=e.bottom(this.$element));var s=this.getState(n,t,i,o);if(this.affixed!=s){null!=this.unpin&&this.$element.css("top","");var a="affix"+(s?"-"+s:""),r=l.Event(a+".bs.affix");if(this.$element.trigger(r),r.isDefaultPrevented())return;this.affixed=s,this.unpin="bottom"==s?this.getPinnedOffset():null,this.$element.removeClass(h.RESET).addClass(a).trigger(a.replace("affix","affixed")+".bs.affix")}"bottom"==s&&this.$element.offset({top:n-t-o})}};var t=l.fn.affix;l.fn.affix=i,l.fn.affix.Constructor=h,l.fn.affix.noConflict=function(){return l.fn.affix=t,this},l(window).on("load",function(){l('[data-spy="affix"]').each(function(){var t=l(this),e=t.data();e.offset=e.offset||{},null!=e.offsetBottom&&(e.offset.bottom=e.offsetBottom),null!=e.offsetTop&&(e.offset.top=e.offsetTop),i.call(t,e)})})}(jQuery);
\ No newline at end of file
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/javascripts/bootstrap/button.js
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/javascripts/bootstrap/button.js	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/javascripts/bootstrap/button.js	(revision 3762)
@@ -0,0 +1,125 @@
+/* ========================================================================
+ * Bootstrap: button.js v3.4.1
+ * https://getbootstrap.com/docs/3.4/javascript/#buttons
+ * ========================================================================
+ * Copyright 2011-2019 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // BUTTON PUBLIC CLASS DEFINITION
+  // ==============================
+
+  var Button = function (element, options) {
+    this.$element  = $(element)
+    this.options   = $.extend({}, Button.DEFAULTS, options)
+    this.isLoading = false
+  }
+
+  Button.VERSION  = '3.4.1'
+
+  Button.DEFAULTS = {
+    loadingText: 'loading...'
+  }
+
+  Button.prototype.setState = function (state) {
+    var d    = 'disabled'
+    var $el  = this.$element
+    var val  = $el.is('input') ? 'val' : 'html'
+    var data = $el.data()
+
+    state += 'Text'
+
+    if (data.resetText == null) $el.data('resetText', $el[val]())
+
+    // push to event loop to allow forms to submit
+    setTimeout($.proxy(function () {
+      $el[val](data[state] == null ? this.options[state] : data[state])
+
+      if (state == 'loadingText') {
+        this.isLoading = true
+        $el.addClass(d).attr(d, d).prop(d, true)
+      } else if (this.isLoading) {
+        this.isLoading = false
+        $el.removeClass(d).removeAttr(d).prop(d, false)
+      }
+    }, this), 0)
+  }
+
+  Button.prototype.toggle = function () {
+    var changed = true
+    var $parent = this.$element.closest('[data-toggle="buttons"]')
+
+    if ($parent.length) {
+      var $input = this.$element.find('input')
+      if ($input.prop('type') == 'radio') {
+        if ($input.prop('checked')) changed = false
+        $parent.find('.active').removeClass('active')
+        this.$element.addClass('active')
+      } else if ($input.prop('type') == 'checkbox') {
+        if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false
+        this.$element.toggleClass('active')
+      }
+      $input.prop('checked', this.$element.hasClass('active'))
+      if (changed) $input.trigger('change')
+    } else {
+      this.$element.attr('aria-pressed', !this.$element.hasClass('active'))
+      this.$element.toggleClass('active')
+    }
+  }
+
+
+  // BUTTON PLUGIN DEFINITION
+  // ========================
+
+  function Plugin(option) {
+    return this.each(function () {
+      var $this   = $(this)
+      var data    = $this.data('bs.button')
+      var options = typeof option == 'object' && option
+
+      if (!data) $this.data('bs.button', (data = new Button(this, options)))
+
+      if (option == 'toggle') data.toggle()
+      else if (option) data.setState(option)
+    })
+  }
+
+  var old = $.fn.button
+
+  $.fn.button             = Plugin
+  $.fn.button.Constructor = Button
+
+
+  // BUTTON NO CONFLICT
+  // ==================
+
+  $.fn.button.noConflict = function () {
+    $.fn.button = old
+    return this
+  }
+
+
+  // BUTTON DATA-API
+  // ===============
+
+  $(document)
+    .on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) {
+      var $btn = $(e.target).closest('.btn')
+      Plugin.call($btn, 'toggle')
+      if (!($(e.target).is('input[type="radio"], input[type="checkbox"]'))) {
+        // Prevent double click on radios, and the double selections (so cancellation) on checkboxes
+        e.preventDefault()
+        // The target component still receive the focus
+        if ($btn.is('input,button')) $btn.trigger('focus')
+        else $btn.find('input:visible,button:visible').first().trigger('focus')
+      }
+    })
+    .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) {
+      $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))
+    })
+
+}(jQuery);
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/javascripts/bootstrap/dropdown.js
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/javascripts/bootstrap/dropdown.js	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/javascripts/bootstrap/dropdown.js	(revision 3762)
@@ -0,0 +1,165 @@
+/* ========================================================================
+ * Bootstrap: dropdown.js v3.4.1
+ * https://getbootstrap.com/docs/3.4/javascript/#dropdowns
+ * ========================================================================
+ * Copyright 2011-2019 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // DROPDOWN CLASS DEFINITION
+  // =========================
+
+  var backdrop = '.dropdown-backdrop'
+  var toggle   = '[data-toggle="dropdown"]'
+  var Dropdown = function (element) {
+    $(element).on('click.bs.dropdown', this.toggle)
+  }
+
+  Dropdown.VERSION = '3.4.1'
+
+  function getParent($this) {
+    var selector = $this.attr('data-target')
+
+    if (!selector) {
+      selector = $this.attr('href')
+      selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
+    }
+
+    var $parent = selector !== '#' ? $(document).find(selector) : null
+
+    return $parent && $parent.length ? $parent : $this.parent()
+  }
+
+  function clearMenus(e) {
+    if (e && e.which === 3) return
+    $(backdrop).remove()
+    $(toggle).each(function () {
+      var $this         = $(this)
+      var $parent       = getParent($this)
+      var relatedTarget = { relatedTarget: this }
+
+      if (!$parent.hasClass('open')) return
+
+      if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return
+
+      $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))
+
+      if (e.isDefaultPrevented()) return
+
+      $this.attr('aria-expanded', 'false')
+      $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget))
+    })
+  }
+
+  Dropdown.prototype.toggle = function (e) {
+    var $this = $(this)
+
+    if ($this.is('.disabled, :disabled')) return
+
+    var $parent  = getParent($this)
+    var isActive = $parent.hasClass('open')
+
+    clearMenus()
+
+    if (!isActive) {
+      if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {
+        // if mobile we use a backdrop because click events don't delegate
+        $(document.createElement('div'))
+          .addClass('dropdown-backdrop')
+          .insertAfter($(this))
+          .on('click', clearMenus)
+      }
+
+      var relatedTarget = { relatedTarget: this }
+      $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))
+
+      if (e.isDefaultPrevented()) return
+
+      $this
+        .trigger('focus')
+        .attr('aria-expanded', 'true')
+
+      $parent
+        .toggleClass('open')
+        .trigger($.Event('shown.bs.dropdown', relatedTarget))
+    }
+
+    return false
+  }
+
+  Dropdown.prototype.keydown = function (e) {
+    if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return
+
+    var $this = $(this)
+
+    e.preventDefault()
+    e.stopPropagation()
+
+    if ($this.is('.disabled, :disabled')) return
+
+    var $parent  = getParent($this)
+    var isActive = $parent.hasClass('open')
+
+    if (!isActive && e.which != 27 || isActive && e.which == 27) {
+      if (e.which == 27) $parent.find(toggle).trigger('focus')
+      return $this.trigger('click')
+    }
+
+    var desc = ' li:not(.disabled):visible a'
+    var $items = $parent.find('.dropdown-menu' + desc)
+
+    if (!$items.length) return
+
+    var index = $items.index(e.target)
+
+    if (e.which == 38 && index > 0)                 index--         // up
+    if (e.which == 40 && index < $items.length - 1) index++         // down
+    if (!~index)                                    index = 0
+
+    $items.eq(index).trigger('focus')
+  }
+
+
+  // DROPDOWN PLUGIN DEFINITION
+  // ==========================
+
+  function Plugin(option) {
+    return this.each(function () {
+      var $this = $(this)
+      var data  = $this.data('bs.dropdown')
+
+      if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))
+      if (typeof option == 'string') data[option].call($this)
+    })
+  }
+
+  var old = $.fn.dropdown
+
+  $.fn.dropdown             = Plugin
+  $.fn.dropdown.Constructor = Dropdown
+
+
+  // DROPDOWN NO CONFLICT
+  // ====================
+
+  $.fn.dropdown.noConflict = function () {
+    $.fn.dropdown = old
+    return this
+  }
+
+
+  // APPLY TO STANDARD DROPDOWN ELEMENTS
+  // ===================================
+
+  $(document)
+    .on('click.bs.dropdown.data-api', clearMenus)
+    .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
+    .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)
+    .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)
+    .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown)
+
+}(jQuery);
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/javascripts/bootstrap/modal.js
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/javascripts/bootstrap/modal.js	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/javascripts/bootstrap/modal.js	(revision 3762)
@@ -0,0 +1,358 @@
+/* ========================================================================
+ * Bootstrap: modal.js v3.4.1
+ * https://getbootstrap.com/docs/3.4/javascript/#modals
+ * ========================================================================
+ * Copyright 2011-2019 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // MODAL CLASS DEFINITION
+  // ======================
+
+  var Modal = function (element, options) {
+    this.options = options
+    this.$body = $(document.body)
+    this.$element = $(element)
+    this.$dialog = this.$element.find('.modal-dialog')
+    this.$backdrop = null
+    this.isShown = null
+    this.originalBodyPad = null
+    this.scrollbarWidth = 0
+    this.ignoreBackdropClick = false
+    this.fixedContent = '.navbar-fixed-top, .navbar-fixed-bottom'
+
+    if (this.options.remote) {
+      this.$element
+        .find('.modal-content')
+        .load(this.options.remote, $.proxy(function () {
+          this.$element.trigger('loaded.bs.modal')
+        }, this))
+    }
+  }
+
+  Modal.VERSION = '3.4.1'
+
+  Modal.TRANSITION_DURATION = 300
+  Modal.BACKDROP_TRANSITION_DURATION = 150
+
+  Modal.DEFAULTS = {
+    backdrop: true,
+    keyboard: true,
+    show: true
+  }
+
+  Modal.prototype.toggle = function (_relatedTarget) {
+    return this.isShown ? this.hide() : this.show(_relatedTarget)
+  }
+
+  Modal.prototype.show = function (_relatedTarget) {
+    var that = this
+    var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })
+
+    this.$element.trigger(e)
+
+    if (this.isShown || e.isDefaultPrevented()) return
+
+    this.isShown = true
+
+    this.checkScrollbar()
+    this.setScrollbar()
+    this.$body.addClass('modal-open')
+
+    this.escape()
+    this.resize()
+
+    this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this))
+
+    this.$dialog.on('mousedown.dismiss.bs.modal', function () {
+      that.$element.one('mouseup.dismiss.bs.modal', function (e) {
+        if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true
+      })
+    })
+
+    this.backdrop(function () {
+      var transition = $.support.transition && that.$element.hasClass('fade')
+
+      if (!that.$element.parent().length) {
+        that.$element.appendTo(that.$body) // don't move modals dom position
+      }
+
+      that.$element
+        .show()
+        .scrollTop(0)
+
+      that.adjustDialog()
+
+      if (transition) {
+        that.$element[0].offsetWidth // force reflow
+      }
+
+      that.$element.addClass('in')
+
+      that.enforceFocus()
+
+      var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })
+
+      transition ?
+        that.$dialog // wait for modal to slide in
+          .one('bsTransitionEnd', function () {
+            that.$element.trigger('focus').trigger(e)
+          })
+          .emulateTransitionEnd(Modal.TRANSITION_DURATION) :
+        that.$element.trigger('focus').trigger(e)
+    })
+  }
+
+  Modal.prototype.hide = function (e) {
+    if (e) e.preventDefault()
+
+    e = $.Event('hide.bs.modal')
+
+    this.$element.trigger(e)
+
+    if (!this.isShown || e.isDefaultPrevented()) return
+
+    this.isShown = false
+
+    this.escape()
+    this.resize()
+
+    $(document).off('focusin.bs.modal')
+
+    this.$element
+      .removeClass('in')
+      .off('click.dismiss.bs.modal')
+      .off('mouseup.dismiss.bs.modal')
+
+    this.$dialog.off('mousedown.dismiss.bs.modal')
+
+    $.support.transition && this.$element.hasClass('fade') ?
+      this.$element
+        .one('bsTransitionEnd', $.proxy(this.hideModal, this))
+        .emulateTransitionEnd(Modal.TRANSITION_DURATION) :
+      this.hideModal()
+  }
+
+  Modal.prototype.enforceFocus = function () {
+    $(document)
+      .off('focusin.bs.modal') // guard against infinite focus loop
+      .on('focusin.bs.modal', $.proxy(function (e) {
+        if (document !== e.target &&
+          this.$element[0] !== e.target &&
+          !this.$element.has(e.target).length) {
+          this.$element.trigger('focus')
+        }
+      }, this))
+  }
+
+  Modal.prototype.escape = function () {
+    if (this.isShown && this.options.keyboard) {
+      this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {
+        e.which == 27 && this.hide()
+      }, this))
+    } else if (!this.isShown) {
+      this.$element.off('keydown.dismiss.bs.modal')
+    }
+  }
+
+  Modal.prototype.resize = function () {
+    if (this.isShown) {
+      $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))
+    } else {
+      $(window).off('resize.bs.modal')
+    }
+  }
+
+  Modal.prototype.hideModal = function () {
+    var that = this
+    this.$element.hide()
+    this.backdrop(function () {
+      that.$body.removeClass('modal-open')
+      that.resetAdjustments()
+      that.resetScrollbar()
+      that.$element.trigger('hidden.bs.modal')
+    })
+  }
+
+  Modal.prototype.removeBackdrop = function () {
+    this.$backdrop && this.$backdrop.remove()
+    this.$backdrop = null
+  }
+
+  Modal.prototype.backdrop = function (callback) {
+    var that = this
+    var animate = this.$element.hasClass('fade') ? 'fade' : ''
+
+    if (this.isShown && this.options.backdrop) {
+      var doAnimate = $.support.transition && animate
+
+      this.$backdrop = $(document.createElement('div'))
+        .addClass('modal-backdrop ' + animate)
+        .appendTo(this.$body)
+
+      this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {
+        if (this.ignoreBackdropClick) {
+          this.ignoreBackdropClick = false
+          return
+        }
+        if (e.target !== e.currentTarget) return
+        this.options.backdrop == 'static'
+          ? this.$element[0].focus()
+          : this.hide()
+      }, this))
+
+      if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
+
+      this.$backdrop.addClass('in')
+
+      if (!callback) return
+
+      doAnimate ?
+        this.$backdrop
+          .one('bsTransitionEnd', callback)
+          .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :
+        callback()
+
+    } else if (!this.isShown && this.$backdrop) {
+      this.$backdrop.removeClass('in')
+
+      var callbackRemove = function () {
+        that.removeBackdrop()
+        callback && callback()
+      }
+      $.support.transition && this.$element.hasClass('fade') ?
+        this.$backdrop
+          .one('bsTransitionEnd', callbackRemove)
+          .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :
+        callbackRemove()
+
+    } else if (callback) {
+      callback()
+    }
+  }
+
+  // these following methods are used to handle overflowing modals
+
+  Modal.prototype.handleUpdate = function () {
+    this.adjustDialog()
+  }
+
+  Modal.prototype.adjustDialog = function () {
+    var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight
+
+    this.$element.css({
+      paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',
+      paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''
+    })
+  }
+
+  Modal.prototype.resetAdjustments = function () {
+    this.$element.css({
+      paddingLeft: '',
+      paddingRight: ''
+    })
+  }
+
+  Modal.prototype.checkScrollbar = function () {
+    var fullWindowWidth = window.innerWidth
+    if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8
+      var documentElementRect = document.documentElement.getBoundingClientRect()
+      fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)
+    }
+    this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth
+    this.scrollbarWidth = this.measureScrollbar()
+  }
+
+  Modal.prototype.setScrollbar = function () {
+    var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)
+    this.originalBodyPad = document.body.style.paddingRight || ''
+    var scrollbarWidth = this.scrollbarWidth
+    if (this.bodyIsOverflowing) {
+      this.$body.css('padding-right', bodyPad + scrollbarWidth)
+      $(this.fixedContent).each(function (index, element) {
+        var actualPadding = element.style.paddingRight
+        var calculatedPadding = $(element).css('padding-right')
+        $(element)
+          .data('padding-right', actualPadding)
+          .css('padding-right', parseFloat(calculatedPadding) + scrollbarWidth + 'px')
+      })
+    }
+  }
+
+  Modal.prototype.resetScrollbar = function () {
+    this.$body.css('padding-right', this.originalBodyPad)
+    $(this.fixedContent).each(function (index, element) {
+      var padding = $(element).data('padding-right')
+      $(element).removeData('padding-right')
+      element.style.paddingRight = padding ? padding : ''
+    })
+  }
+
+  Modal.prototype.measureScrollbar = function () { // thx walsh
+    var scrollDiv = document.createElement('div')
+    scrollDiv.className = 'modal-scrollbar-measure'
+    this.$body.append(scrollDiv)
+    var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth
+    this.$body[0].removeChild(scrollDiv)
+    return scrollbarWidth
+  }
+
+
+  // MODAL PLUGIN DEFINITION
+  // =======================
+
+  function Plugin(option, _relatedTarget) {
+    return this.each(function () {
+      var $this = $(this)
+      var data = $this.data('bs.modal')
+      var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)
+
+      if (!data) $this.data('bs.modal', (data = new Modal(this, options)))
+      if (typeof option == 'string') data[option](_relatedTarget)
+      else if (options.show) data.show(_relatedTarget)
+    })
+  }
+
+  var old = $.fn.modal
+
+  $.fn.modal = Plugin
+  $.fn.modal.Constructor = Modal
+
+
+  // MODAL NO CONFLICT
+  // =================
+
+  $.fn.modal.noConflict = function () {
+    $.fn.modal = old
+    return this
+  }
+
+
+  // MODAL DATA-API
+  // ==============
+
+  $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) {
+    var $this = $(this)
+    var href = $this.attr('href')
+    var target = $this.attr('data-target') ||
+      (href && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7
+
+    var $target = $(document).find(target)
+    var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())
+
+    if ($this.is('a')) e.preventDefault()
+
+    $target.one('show.bs.modal', function (showEvent) {
+      if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown
+      $target.one('hidden.bs.modal', function () {
+        $this.is(':visible') && $this.trigger('focus')
+      })
+    })
+    Plugin.call($target, option, this)
+  })
+
+}(jQuery);
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/javascripts/bootstrap/affix.js
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/javascripts/bootstrap/affix.js	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/javascripts/bootstrap/affix.js	(revision 3762)
@@ -0,0 +1,164 @@
+/* ========================================================================
+ * Bootstrap: affix.js v3.4.1
+ * https://getbootstrap.com/docs/3.4/javascript/#affix
+ * ========================================================================
+ * Copyright 2011-2019 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // AFFIX CLASS DEFINITION
+  // ======================
+
+  var Affix = function (element, options) {
+    this.options = $.extend({}, Affix.DEFAULTS, options)
+
+    var target = this.options.target === Affix.DEFAULTS.target ? $(this.options.target) : $(document).find(this.options.target)
+
+    this.$target = target
+      .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))
+      .on('click.bs.affix.data-api',  $.proxy(this.checkPositionWithEventLoop, this))
+
+    this.$element     = $(element)
+    this.affixed      = null
+    this.unpin        = null
+    this.pinnedOffset = null
+
+    this.checkPosition()
+  }
+
+  Affix.VERSION  = '3.4.1'
+
+  Affix.RESET    = 'affix affix-top affix-bottom'
+
+  Affix.DEFAULTS = {
+    offset: 0,
+    target: window
+  }
+
+  Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) {
+    var scrollTop    = this.$target.scrollTop()
+    var position     = this.$element.offset()
+    var targetHeight = this.$target.height()
+
+    if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false
+
+    if (this.affixed == 'bottom') {
+      if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom'
+      return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom'
+    }
+
+    var initializing   = this.affixed == null
+    var colliderTop    = initializing ? scrollTop : position.top
+    var colliderHeight = initializing ? targetHeight : height
+
+    if (offsetTop != null && scrollTop <= offsetTop) return 'top'
+    if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom'
+
+    return false
+  }
+
+  Affix.prototype.getPinnedOffset = function () {
+    if (this.pinnedOffset) return this.pinnedOffset
+    this.$element.removeClass(Affix.RESET).addClass('affix')
+    var scrollTop = this.$target.scrollTop()
+    var position  = this.$element.offset()
+    return (this.pinnedOffset = position.top - scrollTop)
+  }
+
+  Affix.prototype.checkPositionWithEventLoop = function () {
+    setTimeout($.proxy(this.checkPosition, this), 1)
+  }
+
+  Affix.prototype.checkPosition = function () {
+    if (!this.$element.is(':visible')) return
+
+    var height       = this.$element.height()
+    var offset       = this.options.offset
+    var offsetTop    = offset.top
+    var offsetBottom = offset.bottom
+    var scrollHeight = Math.max($(document).height(), $(document.body).height())
+
+    if (typeof offset != 'object')         offsetBottom = offsetTop = offset
+    if (typeof offsetTop == 'function')    offsetTop    = offset.top(this.$element)
+    if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)
+
+    var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom)
+
+    if (this.affixed != affix) {
+      if (this.unpin != null) this.$element.css('top', '')
+
+      var affixType = 'affix' + (affix ? '-' + affix : '')
+      var e         = $.Event(affixType + '.bs.affix')
+
+      this.$element.trigger(e)
+
+      if (e.isDefaultPrevented()) return
+
+      this.affixed = affix
+      this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null
+
+      this.$element
+        .removeClass(Affix.RESET)
+        .addClass(affixType)
+        .trigger(affixType.replace('affix', 'affixed') + '.bs.affix')
+    }
+
+    if (affix == 'bottom') {
+      this.$element.offset({
+        top: scrollHeight - height - offsetBottom
+      })
+    }
+  }
+
+
+  // AFFIX PLUGIN DEFINITION
+  // =======================
+
+  function Plugin(option) {
+    return this.each(function () {
+      var $this   = $(this)
+      var data    = $this.data('bs.affix')
+      var options = typeof option == 'object' && option
+
+      if (!data) $this.data('bs.affix', (data = new Affix(this, options)))
+      if (typeof option == 'string') data[option]()
+    })
+  }
+
+  var old = $.fn.affix
+
+  $.fn.affix             = Plugin
+  $.fn.affix.Constructor = Affix
+
+
+  // AFFIX NO CONFLICT
+  // =================
+
+  $.fn.affix.noConflict = function () {
+    $.fn.affix = old
+    return this
+  }
+
+
+  // AFFIX DATA-API
+  // ==============
+
+  $(window).on('load', function () {
+    $('[data-spy="affix"]').each(function () {
+      var $spy = $(this)
+      var data = $spy.data()
+
+      data.offset = data.offset || {}
+
+      if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom
+      if (data.offsetTop    != null) data.offset.top    = data.offsetTop
+
+      Plugin.call($spy, data)
+    })
+  })
+
+}(jQuery);
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/javascripts/bootstrap/carousel.js
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/javascripts/bootstrap/carousel.js	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/javascripts/bootstrap/carousel.js	(revision 3762)
@@ -0,0 +1,246 @@
+/* ========================================================================
+ * Bootstrap: carousel.js v3.4.1
+ * https://getbootstrap.com/docs/3.4/javascript/#carousel
+ * ========================================================================
+ * Copyright 2011-2019 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // CAROUSEL CLASS DEFINITION
+  // =========================
+
+  var Carousel = function (element, options) {
+    this.$element    = $(element)
+    this.$indicators = this.$element.find('.carousel-indicators')
+    this.options     = options
+    this.paused      = null
+    this.sliding     = null
+    this.interval    = null
+    this.$active     = null
+    this.$items      = null
+
+    this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))
+
+    this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element
+      .on('mouseenter.bs.carousel', $.proxy(this.pause, this))
+      .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))
+  }
+
+  Carousel.VERSION  = '3.4.1'
+
+  Carousel.TRANSITION_DURATION = 600
+
+  Carousel.DEFAULTS = {
+    interval: 5000,
+    pause: 'hover',
+    wrap: true,
+    keyboard: true
+  }
+
+  Carousel.prototype.keydown = function (e) {
+    if (/input|textarea/i.test(e.target.tagName)) return
+    switch (e.which) {
+      case 37: this.prev(); break
+      case 39: this.next(); break
+      default: return
+    }
+
+    e.preventDefault()
+  }
+
+  Carousel.prototype.cycle = function (e) {
+    e || (this.paused = false)
+
+    this.interval && clearInterval(this.interval)
+
+    this.options.interval
+      && !this.paused
+      && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
+
+    return this
+  }
+
+  Carousel.prototype.getItemIndex = function (item) {
+    this.$items = item.parent().children('.item')
+    return this.$items.index(item || this.$active)
+  }
+
+  Carousel.prototype.getItemForDirection = function (direction, active) {
+    var activeIndex = this.getItemIndex(active)
+    var willWrap = (direction == 'prev' && activeIndex === 0)
+                || (direction == 'next' && activeIndex == (this.$items.length - 1))
+    if (willWrap && !this.options.wrap) return active
+    var delta = direction == 'prev' ? -1 : 1
+    var itemIndex = (activeIndex + delta) % this.$items.length
+    return this.$items.eq(itemIndex)
+  }
+
+  Carousel.prototype.to = function (pos) {
+    var that        = this
+    var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))
+
+    if (pos > (this.$items.length - 1) || pos < 0) return
+
+    if (this.sliding)       return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid"
+    if (activeIndex == pos) return this.pause().cycle()
+
+    return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos))
+  }
+
+  Carousel.prototype.pause = function (e) {
+    e || (this.paused = true)
+
+    if (this.$element.find('.next, .prev').length && $.support.transition) {
+      this.$element.trigger($.support.transition.end)
+      this.cycle(true)
+    }
+
+    this.interval = clearInterval(this.interval)
+
+    return this
+  }
+
+  Carousel.prototype.next = function () {
+    if (this.sliding) return
+    return this.slide('next')
+  }
+
+  Carousel.prototype.prev = function () {
+    if (this.sliding) return
+    return this.slide('prev')
+  }
+
+  Carousel.prototype.slide = function (type, next) {
+    var $active   = this.$element.find('.item.active')
+    var $next     = next || this.getItemForDirection(type, $active)
+    var isCycling = this.interval
+    var direction = type == 'next' ? 'left' : 'right'
+    var that      = this
+
+    if ($next.hasClass('active')) return (this.sliding = false)
+
+    var relatedTarget = $next[0]
+    var slideEvent = $.Event('slide.bs.carousel', {
+      relatedTarget: relatedTarget,
+      direction: direction
+    })
+    this.$element.trigger(slideEvent)
+    if (slideEvent.isDefaultPrevented()) return
+
+    this.sliding = true
+
+    isCycling && this.pause()
+
+    if (this.$indicators.length) {
+      this.$indicators.find('.active').removeClass('active')
+      var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])
+      $nextIndicator && $nextIndicator.addClass('active')
+    }
+
+    var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid"
+    if ($.support.transition && this.$element.hasClass('slide')) {
+      $next.addClass(type)
+      if (typeof $next === 'object' && $next.length) {
+        $next[0].offsetWidth // force reflow
+      }
+      $active.addClass(direction)
+      $next.addClass(direction)
+      $active
+        .one('bsTransitionEnd', function () {
+          $next.removeClass([type, direction].join(' ')).addClass('active')
+          $active.removeClass(['active', direction].join(' '))
+          that.sliding = false
+          setTimeout(function () {
+            that.$element.trigger(slidEvent)
+          }, 0)
+        })
+        .emulateTransitionEnd(Carousel.TRANSITION_DURATION)
+    } else {
+      $active.removeClass('active')
+      $next.addClass('active')
+      this.sliding = false
+      this.$element.trigger(slidEvent)
+    }
+
+    isCycling && this.cycle()
+
+    return this
+  }
+
+
+  // CAROUSEL PLUGIN DEFINITION
+  // ==========================
+
+  function Plugin(option) {
+    return this.each(function () {
+      var $this   = $(this)
+      var data    = $this.data('bs.carousel')
+      var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)
+      var action  = typeof option == 'string' ? option : options.slide
+
+      if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))
+      if (typeof option == 'number') data.to(option)
+      else if (action) data[action]()
+      else if (options.interval) data.pause().cycle()
+    })
+  }
+
+  var old = $.fn.carousel
+
+  $.fn.carousel             = Plugin
+  $.fn.carousel.Constructor = Carousel
+
+
+  // CAROUSEL NO CONFLICT
+  // ====================
+
+  $.fn.carousel.noConflict = function () {
+    $.fn.carousel = old
+    return this
+  }
+
+
+  // CAROUSEL DATA-API
+  // =================
+
+  var clickHandler = function (e) {
+    var $this   = $(this)
+    var href    = $this.attr('href')
+    if (href) {
+      href = href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7
+    }
+
+    var target  = $this.attr('data-target') || href
+    var $target = $(document).find(target)
+
+    if (!$target.hasClass('carousel')) return
+
+    var options = $.extend({}, $target.data(), $this.data())
+    var slideIndex = $this.attr('data-slide-to')
+    if (slideIndex) options.interval = false
+
+    Plugin.call($target, options)
+
+    if (slideIndex) {
+      $target.data('bs.carousel').to(slideIndex)
+    }
+
+    e.preventDefault()
+  }
+
+  $(document)
+    .on('click.bs.carousel.data-api', '[data-slide]', clickHandler)
+    .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)
+
+  $(window).on('load', function () {
+    $('[data-ride="carousel"]').each(function () {
+      var $carousel = $(this)
+      Plugin.call($carousel, $carousel.data())
+    })
+  })
+
+}(jQuery);
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/javascripts/bootstrap/collapse.js
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/javascripts/bootstrap/collapse.js	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/javascripts/bootstrap/collapse.js	(revision 3762)
@@ -0,0 +1,212 @@
+/* ========================================================================
+ * Bootstrap: collapse.js v3.4.1
+ * https://getbootstrap.com/docs/3.4/javascript/#collapse
+ * ========================================================================
+ * Copyright 2011-2019 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+/* jshint latedef: false */
+
++function ($) {
+  'use strict';
+
+  // COLLAPSE PUBLIC CLASS DEFINITION
+  // ================================
+
+  var Collapse = function (element, options) {
+    this.$element      = $(element)
+    this.options       = $.extend({}, Collapse.DEFAULTS, options)
+    this.$trigger      = $('[data-toggle="collapse"][href="#' + element.id + '"],' +
+                           '[data-toggle="collapse"][data-target="#' + element.id + '"]')
+    this.transitioning = null
+
+    if (this.options.parent) {
+      this.$parent = this.getParent()
+    } else {
+      this.addAriaAndCollapsedClass(this.$element, this.$trigger)
+    }
+
+    if (this.options.toggle) this.toggle()
+  }
+
+  Collapse.VERSION  = '3.4.1'
+
+  Collapse.TRANSITION_DURATION = 350
+
+  Collapse.DEFAULTS = {
+    toggle: true
+  }
+
+  Collapse.prototype.dimension = function () {
+    var hasWidth = this.$element.hasClass('width')
+    return hasWidth ? 'width' : 'height'
+  }
+
+  Collapse.prototype.show = function () {
+    if (this.transitioning || this.$element.hasClass('in')) return
+
+    var activesData
+    var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')
+
+    if (actives && actives.length) {
+      activesData = actives.data('bs.collapse')
+      if (activesData && activesData.transitioning) return
+    }
+
+    var startEvent = $.Event('show.bs.collapse')
+    this.$element.trigger(startEvent)
+    if (startEvent.isDefaultPrevented()) return
+
+    if (actives && actives.length) {
+      Plugin.call(actives, 'hide')
+      activesData || actives.data('bs.collapse', null)
+    }
+
+    var dimension = this.dimension()
+
+    this.$element
+      .removeClass('collapse')
+      .addClass('collapsing')[dimension](0)
+      .attr('aria-expanded', true)
+
+    this.$trigger
+      .removeClass('collapsed')
+      .attr('aria-expanded', true)
+
+    this.transitioning = 1
+
+    var complete = function () {
+      this.$element
+        .removeClass('collapsing')
+        .addClass('collapse in')[dimension]('')
+      this.transitioning = 0
+      this.$element
+        .trigger('shown.bs.collapse')
+    }
+
+    if (!$.support.transition) return complete.call(this)
+
+    var scrollSize = $.camelCase(['scroll', dimension].join('-'))
+
+    this.$element
+      .one('bsTransitionEnd', $.proxy(complete, this))
+      .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])
+  }
+
+  Collapse.prototype.hide = function () {
+    if (this.transitioning || !this.$element.hasClass('in')) return
+
+    var startEvent = $.Event('hide.bs.collapse')
+    this.$element.trigger(startEvent)
+    if (startEvent.isDefaultPrevented()) return
+
+    var dimension = this.dimension()
+
+    this.$element[dimension](this.$element[dimension]())[0].offsetHeight
+
+    this.$element
+      .addClass('collapsing')
+      .removeClass('collapse in')
+      .attr('aria-expanded', false)
+
+    this.$trigger
+      .addClass('collapsed')
+      .attr('aria-expanded', false)
+
+    this.transitioning = 1
+
+    var complete = function () {
+      this.transitioning = 0
+      this.$element
+        .removeClass('collapsing')
+        .addClass('collapse')
+        .trigger('hidden.bs.collapse')
+    }
+
+    if (!$.support.transition) return complete.call(this)
+
+    this.$element
+      [dimension](0)
+      .one('bsTransitionEnd', $.proxy(complete, this))
+      .emulateTransitionEnd(Collapse.TRANSITION_DURATION)
+  }
+
+  Collapse.prototype.toggle = function () {
+    this[this.$element.hasClass('in') ? 'hide' : 'show']()
+  }
+
+  Collapse.prototype.getParent = function () {
+    return $(document).find(this.options.parent)
+      .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]')
+      .each($.proxy(function (i, element) {
+        var $element = $(element)
+        this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)
+      }, this))
+      .end()
+  }
+
+  Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {
+    var isOpen = $element.hasClass('in')
+
+    $element.attr('aria-expanded', isOpen)
+    $trigger
+      .toggleClass('collapsed', !isOpen)
+      .attr('aria-expanded', isOpen)
+  }
+
+  function getTargetFromTrigger($trigger) {
+    var href
+    var target = $trigger.attr('data-target')
+      || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7
+
+    return $(document).find(target)
+  }
+
+
+  // COLLAPSE PLUGIN DEFINITION
+  // ==========================
+
+  function Plugin(option) {
+    return this.each(function () {
+      var $this   = $(this)
+      var data    = $this.data('bs.collapse')
+      var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)
+
+      if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false
+      if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))
+      if (typeof option == 'string') data[option]()
+    })
+  }
+
+  var old = $.fn.collapse
+
+  $.fn.collapse             = Plugin
+  $.fn.collapse.Constructor = Collapse
+
+
+  // COLLAPSE NO CONFLICT
+  // ====================
+
+  $.fn.collapse.noConflict = function () {
+    $.fn.collapse = old
+    return this
+  }
+
+
+  // COLLAPSE DATA-API
+  // =================
+
+  $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) {
+    var $this   = $(this)
+
+    if (!$this.attr('data-target')) e.preventDefault()
+
+    var $target = getTargetFromTrigger($this)
+    var data    = $target.data('bs.collapse')
+    var option  = data ? 'toggle' : $this.data()
+
+    Plugin.call($target, option)
+  })
+
+}(jQuery);
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/javascripts/bootstrap/tab.js
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/javascripts/bootstrap/tab.js	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/javascripts/bootstrap/tab.js	(revision 3762)
@@ -0,0 +1,155 @@
+/* ========================================================================
+ * Bootstrap: tab.js v3.4.1
+ * https://getbootstrap.com/docs/3.4/javascript/#tabs
+ * ========================================================================
+ * Copyright 2011-2019 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // TAB CLASS DEFINITION
+  // ====================
+
+  var Tab = function (element) {
+    // jscs:disable requireDollarBeforejQueryAssignment
+    this.element = $(element)
+    // jscs:enable requireDollarBeforejQueryAssignment
+  }
+
+  Tab.VERSION = '3.4.1'
+
+  Tab.TRANSITION_DURATION = 150
+
+  Tab.prototype.show = function () {
+    var $this    = this.element
+    var $ul      = $this.closest('ul:not(.dropdown-menu)')
+    var selector = $this.data('target')
+
+    if (!selector) {
+      selector = $this.attr('href')
+      selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
+    }
+
+    if ($this.parent('li').hasClass('active')) return
+
+    var $previous = $ul.find('.active:last a')
+    var hideEvent = $.Event('hide.bs.tab', {
+      relatedTarget: $this[0]
+    })
+    var showEvent = $.Event('show.bs.tab', {
+      relatedTarget: $previous[0]
+    })
+
+    $previous.trigger(hideEvent)
+    $this.trigger(showEvent)
+
+    if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return
+
+    var $target = $(document).find(selector)
+
+    this.activate($this.closest('li'), $ul)
+    this.activate($target, $target.parent(), function () {
+      $previous.trigger({
+        type: 'hidden.bs.tab',
+        relatedTarget: $this[0]
+      })
+      $this.trigger({
+        type: 'shown.bs.tab',
+        relatedTarget: $previous[0]
+      })
+    })
+  }
+
+  Tab.prototype.activate = function (element, container, callback) {
+    var $active    = container.find('> .active')
+    var transition = callback
+      && $.support.transition
+      && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length)
+
+    function next() {
+      $active
+        .removeClass('active')
+        .find('> .dropdown-menu > .active')
+        .removeClass('active')
+        .end()
+        .find('[data-toggle="tab"]')
+        .attr('aria-expanded', false)
+
+      element
+        .addClass('active')
+        .find('[data-toggle="tab"]')
+        .attr('aria-expanded', true)
+
+      if (transition) {
+        element[0].offsetWidth // reflow for transition
+        element.addClass('in')
+      } else {
+        element.removeClass('fade')
+      }
+
+      if (element.parent('.dropdown-menu').length) {
+        element
+          .closest('li.dropdown')
+          .addClass('active')
+          .end()
+          .find('[data-toggle="tab"]')
+          .attr('aria-expanded', true)
+      }
+
+      callback && callback()
+    }
+
+    $active.length && transition ?
+      $active
+        .one('bsTransitionEnd', next)
+        .emulateTransitionEnd(Tab.TRANSITION_DURATION) :
+      next()
+
+    $active.removeClass('in')
+  }
+
+
+  // TAB PLUGIN DEFINITION
+  // =====================
+
+  function Plugin(option) {
+    return this.each(function () {
+      var $this = $(this)
+      var data  = $this.data('bs.tab')
+
+      if (!data) $this.data('bs.tab', (data = new Tab(this)))
+      if (typeof option == 'string') data[option]()
+    })
+  }
+
+  var old = $.fn.tab
+
+  $.fn.tab             = Plugin
+  $.fn.tab.Constructor = Tab
+
+
+  // TAB NO CONFLICT
+  // ===============
+
+  $.fn.tab.noConflict = function () {
+    $.fn.tab = old
+    return this
+  }
+
+
+  // TAB DATA-API
+  // ============
+
+  var clickHandler = function (e) {
+    e.preventDefault()
+    Plugin.call($(this), 'show')
+  }
+
+  $(document)
+    .on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler)
+    .on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler)
+
+}(jQuery);
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/javascripts/bootstrap/alert.js
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/javascripts/bootstrap/alert.js	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/javascripts/bootstrap/alert.js	(revision 3762)
@@ -0,0 +1,95 @@
+/* ========================================================================
+ * Bootstrap: alert.js v3.4.1
+ * https://getbootstrap.com/docs/3.4/javascript/#alerts
+ * ========================================================================
+ * Copyright 2011-2019 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // ALERT CLASS DEFINITION
+  // ======================
+
+  var dismiss = '[data-dismiss="alert"]'
+  var Alert   = function (el) {
+    $(el).on('click', dismiss, this.close)
+  }
+
+  Alert.VERSION = '3.4.1'
+
+  Alert.TRANSITION_DURATION = 150
+
+  Alert.prototype.close = function (e) {
+    var $this    = $(this)
+    var selector = $this.attr('data-target')
+
+    if (!selector) {
+      selector = $this.attr('href')
+      selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
+    }
+
+    selector    = selector === '#' ? [] : selector
+    var $parent = $(document).find(selector)
+
+    if (e) e.preventDefault()
+
+    if (!$parent.length) {
+      $parent = $this.closest('.alert')
+    }
+
+    $parent.trigger(e = $.Event('close.bs.alert'))
+
+    if (e.isDefaultPrevented()) return
+
+    $parent.removeClass('in')
+
+    function removeElement() {
+      // detach from parent, fire event then clean up data
+      $parent.detach().trigger('closed.bs.alert').remove()
+    }
+
+    $.support.transition && $parent.hasClass('fade') ?
+      $parent
+        .one('bsTransitionEnd', removeElement)
+        .emulateTransitionEnd(Alert.TRANSITION_DURATION) :
+      removeElement()
+  }
+
+
+  // ALERT PLUGIN DEFINITION
+  // =======================
+
+  function Plugin(option) {
+    return this.each(function () {
+      var $this = $(this)
+      var data  = $this.data('bs.alert')
+
+      if (!data) $this.data('bs.alert', (data = new Alert(this)))
+      if (typeof option == 'string') data[option].call($this)
+    })
+  }
+
+  var old = $.fn.alert
+
+  $.fn.alert             = Plugin
+  $.fn.alert.Constructor = Alert
+
+
+  // ALERT NO CONFLICT
+  // =================
+
+  $.fn.alert.noConflict = function () {
+    $.fn.alert = old
+    return this
+  }
+
+
+  // ALERT DATA-API
+  // ==============
+
+  $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)
+
+}(jQuery);
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/javascripts/bootstrap/popover.js
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/javascripts/bootstrap/popover.js	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/javascripts/bootstrap/popover.js	(revision 3762)
@@ -0,0 +1,123 @@
+/* ========================================================================
+ * Bootstrap: popover.js v3.4.1
+ * https://getbootstrap.com/docs/3.4/javascript/#popovers
+ * ========================================================================
+ * Copyright 2011-2019 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // POPOVER PUBLIC CLASS DEFINITION
+  // ===============================
+
+  var Popover = function (element, options) {
+    this.init('popover', element, options)
+  }
+
+  if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')
+
+  Popover.VERSION  = '3.4.1'
+
+  Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {
+    placement: 'right',
+    trigger: 'click',
+    content: '',
+    template: '<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
+  })
+
+
+  // NOTE: POPOVER EXTENDS tooltip.js
+  // ================================
+
+  Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)
+
+  Popover.prototype.constructor = Popover
+
+  Popover.prototype.getDefaults = function () {
+    return Popover.DEFAULTS
+  }
+
+  Popover.prototype.setContent = function () {
+    var $tip    = this.tip()
+    var title   = this.getTitle()
+    var content = this.getContent()
+
+    if (this.options.html) {
+      var typeContent = typeof content
+
+      if (this.options.sanitize) {
+        title = this.sanitizeHtml(title)
+
+        if (typeContent === 'string') {
+          content = this.sanitizeHtml(content)
+        }
+      }
+
+      $tip.find('.popover-title').html(title)
+      $tip.find('.popover-content').children().detach().end()[
+        typeContent === 'string' ? 'html' : 'append'
+      ](content)
+    } else {
+      $tip.find('.popover-title').text(title)
+      $tip.find('.popover-content').children().detach().end().text(content)
+    }
+
+    $tip.removeClass('fade top bottom left right in')
+
+    // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do
+    // this manually by checking the contents.
+    if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()
+  }
+
+  Popover.prototype.hasContent = function () {
+    return this.getTitle() || this.getContent()
+  }
+
+  Popover.prototype.getContent = function () {
+    var $e = this.$element
+    var o  = this.options
+
+    return $e.attr('data-content')
+      || (typeof o.content == 'function' ?
+        o.content.call($e[0]) :
+        o.content)
+  }
+
+  Popover.prototype.arrow = function () {
+    return (this.$arrow = this.$arrow || this.tip().find('.arrow'))
+  }
+
+
+  // POPOVER PLUGIN DEFINITION
+  // =========================
+
+  function Plugin(option) {
+    return this.each(function () {
+      var $this   = $(this)
+      var data    = $this.data('bs.popover')
+      var options = typeof option == 'object' && option
+
+      if (!data && /destroy|hide/.test(option)) return
+      if (!data) $this.data('bs.popover', (data = new Popover(this, options)))
+      if (typeof option == 'string') data[option]()
+    })
+  }
+
+  var old = $.fn.popover
+
+  $.fn.popover             = Plugin
+  $.fn.popover.Constructor = Popover
+
+
+  // POPOVER NO CONFLICT
+  // ===================
+
+  $.fn.popover.noConflict = function () {
+    $.fn.popover = old
+    return this
+  }
+
+}(jQuery);
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/javascripts/bootstrap/scrollspy.js
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/javascripts/bootstrap/scrollspy.js	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/javascripts/bootstrap/scrollspy.js	(revision 3762)
@@ -0,0 +1,172 @@
+/* ========================================================================
+ * Bootstrap: scrollspy.js v3.4.1
+ * https://getbootstrap.com/docs/3.4/javascript/#scrollspy
+ * ========================================================================
+ * Copyright 2011-2019 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // SCROLLSPY CLASS DEFINITION
+  // ==========================
+
+  function ScrollSpy(element, options) {
+    this.$body          = $(document.body)
+    this.$scrollElement = $(element).is(document.body) ? $(window) : $(element)
+    this.options        = $.extend({}, ScrollSpy.DEFAULTS, options)
+    this.selector       = (this.options.target || '') + ' .nav li > a'
+    this.offsets        = []
+    this.targets        = []
+    this.activeTarget   = null
+    this.scrollHeight   = 0
+
+    this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this))
+    this.refresh()
+    this.process()
+  }
+
+  ScrollSpy.VERSION  = '3.4.1'
+
+  ScrollSpy.DEFAULTS = {
+    offset: 10
+  }
+
+  ScrollSpy.prototype.getScrollHeight = function () {
+    return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)
+  }
+
+  ScrollSpy.prototype.refresh = function () {
+    var that          = this
+    var offsetMethod  = 'offset'
+    var offsetBase    = 0
+
+    this.offsets      = []
+    this.targets      = []
+    this.scrollHeight = this.getScrollHeight()
+
+    if (!$.isWindow(this.$scrollElement[0])) {
+      offsetMethod = 'position'
+      offsetBase   = this.$scrollElement.scrollTop()
+    }
+
+    this.$body
+      .find(this.selector)
+      .map(function () {
+        var $el   = $(this)
+        var href  = $el.data('target') || $el.attr('href')
+        var $href = /^#./.test(href) && $(href)
+
+        return ($href
+          && $href.length
+          && $href.is(':visible')
+          && [[$href[offsetMethod]().top + offsetBase, href]]) || null
+      })
+      .sort(function (a, b) { return a[0] - b[0] })
+      .each(function () {
+        that.offsets.push(this[0])
+        that.targets.push(this[1])
+      })
+  }
+
+  ScrollSpy.prototype.process = function () {
+    var scrollTop    = this.$scrollElement.scrollTop() + this.options.offset
+    var scrollHeight = this.getScrollHeight()
+    var maxScroll    = this.options.offset + scrollHeight - this.$scrollElement.height()
+    var offsets      = this.offsets
+    var targets      = this.targets
+    var activeTarget = this.activeTarget
+    var i
+
+    if (this.scrollHeight != scrollHeight) {
+      this.refresh()
+    }
+
+    if (scrollTop >= maxScroll) {
+      return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)
+    }
+
+    if (activeTarget && scrollTop < offsets[0]) {
+      this.activeTarget = null
+      return this.clear()
+    }
+
+    for (i = offsets.length; i--;) {
+      activeTarget != targets[i]
+        && scrollTop >= offsets[i]
+        && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1])
+        && this.activate(targets[i])
+    }
+  }
+
+  ScrollSpy.prototype.activate = function (target) {
+    this.activeTarget = target
+
+    this.clear()
+
+    var selector = this.selector +
+      '[data-target="' + target + '"],' +
+      this.selector + '[href="' + target + '"]'
+
+    var active = $(selector)
+      .parents('li')
+      .addClass('active')
+
+    if (active.parent('.dropdown-menu').length) {
+      active = active
+        .closest('li.dropdown')
+        .addClass('active')
+    }
+
+    active.trigger('activate.bs.scrollspy')
+  }
+
+  ScrollSpy.prototype.clear = function () {
+    $(this.selector)
+      .parentsUntil(this.options.target, '.active')
+      .removeClass('active')
+  }
+
+
+  // SCROLLSPY PLUGIN DEFINITION
+  // ===========================
+
+  function Plugin(option) {
+    return this.each(function () {
+      var $this   = $(this)
+      var data    = $this.data('bs.scrollspy')
+      var options = typeof option == 'object' && option
+
+      if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))
+      if (typeof option == 'string') data[option]()
+    })
+  }
+
+  var old = $.fn.scrollspy
+
+  $.fn.scrollspy             = Plugin
+  $.fn.scrollspy.Constructor = ScrollSpy
+
+
+  // SCROLLSPY NO CONFLICT
+  // =====================
+
+  $.fn.scrollspy.noConflict = function () {
+    $.fn.scrollspy = old
+    return this
+  }
+
+
+  // SCROLLSPY DATA-API
+  // ==================
+
+  $(window).on('load.bs.scrollspy.data-api', function () {
+    $('[data-spy="scroll"]').each(function () {
+      var $spy = $(this)
+      Plugin.call($spy, $spy.data())
+    })
+  })
+
+}(jQuery);
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/javascripts/bootstrap/tooltip.js
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/javascripts/bootstrap/tooltip.js	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/javascripts/bootstrap/tooltip.js	(revision 3762)
@@ -0,0 +1,677 @@
+/* ========================================================================
+ * Bootstrap: tooltip.js v3.4.1
+ * https://getbootstrap.com/docs/3.4/javascript/#tooltip
+ * Inspired by the original jQuery.tipsy by Jason Frame
+ * ========================================================================
+ * Copyright 2011-2019 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
++function ($) {
+  'use strict';
+
+  var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn']
+
+  var uriAttrs = [
+    'background',
+    'cite',
+    'href',
+    'itemtype',
+    'longdesc',
+    'poster',
+    'src',
+    'xlink:href'
+  ]
+
+  var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i
+
+  var DefaultWhitelist = {
+    // Global attributes allowed on any supplied element below.
+    '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],
+    a: ['target', 'href', 'title', 'rel'],
+    area: [],
+    b: [],
+    br: [],
+    col: [],
+    code: [],
+    div: [],
+    em: [],
+    hr: [],
+    h1: [],
+    h2: [],
+    h3: [],
+    h4: [],
+    h5: [],
+    h6: [],
+    i: [],
+    img: ['src', 'alt', 'title', 'width', 'height'],
+    li: [],
+    ol: [],
+    p: [],
+    pre: [],
+    s: [],
+    small: [],
+    span: [],
+    sub: [],
+    sup: [],
+    strong: [],
+    u: [],
+    ul: []
+  }
+
+  /**
+   * A pattern that recognizes a commonly useful subset of URLs that are safe.
+   *
+   * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
+   */
+  var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi
+
+  /**
+   * A pattern that matches safe data URLs. Only matches image, video and audio types.
+   *
+   * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
+   */
+  var DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i
+
+  function allowedAttribute(attr, allowedAttributeList) {
+    var attrName = attr.nodeName.toLowerCase()
+
+    if ($.inArray(attrName, allowedAttributeList) !== -1) {
+      if ($.inArray(attrName, uriAttrs) !== -1) {
+        return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN))
+      }
+
+      return true
+    }
+
+    var regExp = $(allowedAttributeList).filter(function (index, value) {
+      return value instanceof RegExp
+    })
+
+    // Check if a regular expression validates the attribute.
+    for (var i = 0, l = regExp.length; i < l; i++) {
+      if (attrName.match(regExp[i])) {
+        return true
+      }
+    }
+
+    return false
+  }
+
+  function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {
+    if (unsafeHtml.length === 0) {
+      return unsafeHtml
+    }
+
+    if (sanitizeFn && typeof sanitizeFn === 'function') {
+      return sanitizeFn(unsafeHtml)
+    }
+
+    // IE 8 and below don't support createHTMLDocument
+    if (!document.implementation || !document.implementation.createHTMLDocument) {
+      return unsafeHtml
+    }
+
+    var createdDocument = document.implementation.createHTMLDocument('sanitization')
+    createdDocument.body.innerHTML = unsafeHtml
+
+    var whitelistKeys = $.map(whiteList, function (el, i) { return i })
+    var elements = $(createdDocument.body).find('*')
+
+    for (var i = 0, len = elements.length; i < len; i++) {
+      var el = elements[i]
+      var elName = el.nodeName.toLowerCase()
+
+      if ($.inArray(elName, whitelistKeys) === -1) {
+        el.parentNode.removeChild(el)
+
+        continue
+      }
+
+      var attributeList = $.map(el.attributes, function (el) { return el })
+      var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || [])
+
+      for (var j = 0, len2 = attributeList.length; j < len2; j++) {
+        if (!allowedAttribute(attributeList[j], whitelistedAttributes)) {
+          el.removeAttribute(attributeList[j].nodeName)
+        }
+      }
+    }
+
+    return createdDocument.body.innerHTML
+  }
+
+  // TOOLTIP PUBLIC CLASS DEFINITION
+  // ===============================
+
+  var Tooltip = function (element, options) {
+    this.type       = null
+    this.options    = null
+    this.enabled    = null
+    this.timeout    = null
+    this.hoverState = null
+    this.$element   = null
+    this.inState    = null
+
+    this.init('tooltip', element, options)
+  }
+
+  Tooltip.VERSION  = '3.4.1'
+
+  Tooltip.TRANSITION_DURATION = 150
+
+  Tooltip.DEFAULTS = {
+    animation: true,
+    placement: 'top',
+    selector: false,
+    template: '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',
+    trigger: 'hover focus',
+    title: '',
+    delay: 0,
+    html: false,
+    container: false,
+    viewport: {
+      selector: 'body',
+      padding: 0
+    },
+    sanitize : true,
+    sanitizeFn : null,
+    whiteList : DefaultWhitelist
+  }
+
+  Tooltip.prototype.init = function (type, element, options) {
+    this.enabled   = true
+    this.type      = type
+    this.$element  = $(element)
+    this.options   = this.getOptions(options)
+    this.$viewport = this.options.viewport && $(document).find($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport))
+    this.inState   = { click: false, hover: false, focus: false }
+
+    if (this.$element[0] instanceof document.constructor && !this.options.selector) {
+      throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')
+    }
+
+    var triggers = this.options.trigger.split(' ')
+
+    for (var i = triggers.length; i--;) {
+      var trigger = triggers[i]
+
+      if (trigger == 'click') {
+        this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
+      } else if (trigger != 'manual') {
+        var eventIn  = trigger == 'hover' ? 'mouseenter' : 'focusin'
+        var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'
+
+        this.$element.on(eventIn  + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
+        this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
+      }
+    }
+
+    this.options.selector ?
+      (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :
+      this.fixTitle()
+  }
+
+  Tooltip.prototype.getDefaults = function () {
+    return Tooltip.DEFAULTS
+  }
+
+  Tooltip.prototype.getOptions = function (options) {
+    var dataAttributes = this.$element.data()
+
+    for (var dataAttr in dataAttributes) {
+      if (dataAttributes.hasOwnProperty(dataAttr) && $.inArray(dataAttr, DISALLOWED_ATTRIBUTES) !== -1) {
+        delete dataAttributes[dataAttr]
+      }
+    }
+
+    options = $.extend({}, this.getDefaults(), dataAttributes, options)
+
+    if (options.delay && typeof options.delay == 'number') {
+      options.delay = {
+        show: options.delay,
+        hide: options.delay
+      }
+    }
+
+    if (options.sanitize) {
+      options.template = sanitizeHtml(options.template, options.whiteList, options.sanitizeFn)
+    }
+
+    return options
+  }
+
+  Tooltip.prototype.getDelegateOptions = function () {
+    var options  = {}
+    var defaults = this.getDefaults()
+
+    this._options && $.each(this._options, function (key, value) {
+      if (defaults[key] != value) options[key] = value
+    })
+
+    return options
+  }
+
+  Tooltip.prototype.enter = function (obj) {
+    var self = obj instanceof this.constructor ?
+      obj : $(obj.currentTarget).data('bs.' + this.type)
+
+    if (!self) {
+      self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
+      $(obj.currentTarget).data('bs.' + this.type, self)
+    }
+
+    if (obj instanceof $.Event) {
+      self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true
+    }
+
+    if (self.tip().hasClass('in') || self.hoverState == 'in') {
+      self.hoverState = 'in'
+      return
+    }
+
+    clearTimeout(self.timeout)
+
+    self.hoverState = 'in'
+
+    if (!self.options.delay || !self.options.delay.show) return self.show()
+
+    self.timeout = setTimeout(function () {
+      if (self.hoverState == 'in') self.show()
+    }, self.options.delay.show)
+  }
+
+  Tooltip.prototype.isInStateTrue = function () {
+    for (var key in this.inState) {
+      if (this.inState[key]) return true
+    }
+
+    return false
+  }
+
+  Tooltip.prototype.leave = function (obj) {
+    var self = obj instanceof this.constructor ?
+      obj : $(obj.currentTarget).data('bs.' + this.type)
+
+    if (!self) {
+      self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
+      $(obj.currentTarget).data('bs.' + this.type, self)
+    }
+
+    if (obj instanceof $.Event) {
+      self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false
+    }
+
+    if (self.isInStateTrue()) return
+
+    clearTimeout(self.timeout)
+
+    self.hoverState = 'out'
+
+    if (!self.options.delay || !self.options.delay.hide) return self.hide()
+
+    self.timeout = setTimeout(function () {
+      if (self.hoverState == 'out') self.hide()
+    }, self.options.delay.hide)
+  }
+
+  Tooltip.prototype.show = function () {
+    var e = $.Event('show.bs.' + this.type)
+
+    if (this.hasContent() && this.enabled) {
+      this.$element.trigger(e)
+
+      var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])
+      if (e.isDefaultPrevented() || !inDom) return
+      var that = this
+
+      var $tip = this.tip()
+
+      var tipId = this.getUID(this.type)
+
+      this.setContent()
+      $tip.attr('id', tipId)
+      this.$element.attr('aria-describedby', tipId)
+
+      if (this.options.animation) $tip.addClass('fade')
+
+      var placement = typeof this.options.placement == 'function' ?
+        this.options.placement.call(this, $tip[0], this.$element[0]) :
+        this.options.placement
+
+      var autoToken = /\s?auto?\s?/i
+      var autoPlace = autoToken.test(placement)
+      if (autoPlace) placement = placement.replace(autoToken, '') || 'top'
+
+      $tip
+        .detach()
+        .css({ top: 0, left: 0, display: 'block' })
+        .addClass(placement)
+        .data('bs.' + this.type, this)
+
+      this.options.container ? $tip.appendTo($(document).find(this.options.container)) : $tip.insertAfter(this.$element)
+      this.$element.trigger('inserted.bs.' + this.type)
+
+      var pos          = this.getPosition()
+      var actualWidth  = $tip[0].offsetWidth
+      var actualHeight = $tip[0].offsetHeight
+
+      if (autoPlace) {
+        var orgPlacement = placement
+        var viewportDim = this.getPosition(this.$viewport)
+
+        placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top'    :
+                    placement == 'top'    && pos.top    - actualHeight < viewportDim.top    ? 'bottom' :
+                    placement == 'right'  && pos.right  + actualWidth  > viewportDim.width  ? 'left'   :
+                    placement == 'left'   && pos.left   - actualWidth  < viewportDim.left   ? 'right'  :
+                    placement
+
+        $tip
+          .removeClass(orgPlacement)
+          .addClass(placement)
+      }
+
+      var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)
+
+      this.applyPlacement(calculatedOffset, placement)
+
+      var complete = function () {
+        var prevHoverState = that.hoverState
+        that.$element.trigger('shown.bs.' + that.type)
+        that.hoverState = null
+
+        if (prevHoverState == 'out') that.leave(that)
+      }
+
+      $.support.transition && this.$tip.hasClass('fade') ?
+        $tip
+          .one('bsTransitionEnd', complete)
+          .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :
+        complete()
+    }
+  }
+
+  Tooltip.prototype.applyPlacement = function (offset, placement) {
+    var $tip   = this.tip()
+    var width  = $tip[0].offsetWidth
+    var height = $tip[0].offsetHeight
+
+    // manually read margins because getBoundingClientRect includes difference
+    var marginTop = parseInt($tip.css('margin-top'), 10)
+    var marginLeft = parseInt($tip.css('margin-left'), 10)
+
+    // we must check for NaN for ie 8/9
+    if (isNaN(marginTop))  marginTop  = 0
+    if (isNaN(marginLeft)) marginLeft = 0
+
+    offset.top  += marginTop
+    offset.left += marginLeft
+
+    // $.fn.offset doesn't round pixel values
+    // so we use setOffset directly with our own function B-0
+    $.offset.setOffset($tip[0], $.extend({
+      using: function (props) {
+        $tip.css({
+          top: Math.round(props.top),
+          left: Math.round(props.left)
+        })
+      }
+    }, offset), 0)
+
+    $tip.addClass('in')
+
+    // check to see if placing tip in new offset caused the tip to resize itself
+    var actualWidth  = $tip[0].offsetWidth
+    var actualHeight = $tip[0].offsetHeight
+
+    if (placement == 'top' && actualHeight != height) {
+      offset.top = offset.top + height - actualHeight
+    }
+
+    var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)
+
+    if (delta.left) offset.left += delta.left
+    else offset.top += delta.top
+
+    var isVertical          = /top|bottom/.test(placement)
+    var arrowDelta          = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight
+    var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'
+
+    $tip.offset(offset)
+    this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)
+  }
+
+  Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) {
+    this.arrow()
+      .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')
+      .css(isVertical ? 'top' : 'left', '')
+  }
+
+  Tooltip.prototype.setContent = function () {
+    var $tip  = this.tip()
+    var title = this.getTitle()
+
+    if (this.options.html) {
+      if (this.options.sanitize) {
+        title = sanitizeHtml(title, this.options.whiteList, this.options.sanitizeFn)
+      }
+
+      $tip.find('.tooltip-inner').html(title)
+    } else {
+      $tip.find('.tooltip-inner').text(title)
+    }
+
+    $tip.removeClass('fade in top bottom left right')
+  }
+
+  Tooltip.prototype.hide = function (callback) {
+    var that = this
+    var $tip = $(this.$tip)
+    var e    = $.Event('hide.bs.' + this.type)
+
+    function complete() {
+      if (that.hoverState != 'in') $tip.detach()
+      if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary.
+        that.$element
+          .removeAttr('aria-describedby')
+          .trigger('hidden.bs.' + that.type)
+      }
+      callback && callback()
+    }
+
+    this.$element.trigger(e)
+
+    if (e.isDefaultPrevented()) return
+
+    $tip.removeClass('in')
+
+    $.support.transition && $tip.hasClass('fade') ?
+      $tip
+        .one('bsTransitionEnd', complete)
+        .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :
+      complete()
+
+    this.hoverState = null
+
+    return this
+  }
+
+  Tooltip.prototype.fixTitle = function () {
+    var $e = this.$element
+    if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') {
+      $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')
+    }
+  }
+
+  Tooltip.prototype.hasContent = function () {
+    return this.getTitle()
+  }
+
+  Tooltip.prototype.getPosition = function ($element) {
+    $element   = $element || this.$element
+
+    var el     = $element[0]
+    var isBody = el.tagName == 'BODY'
+
+    var elRect    = el.getBoundingClientRect()
+    if (elRect.width == null) {
+      // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093
+      elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })
+    }
+    var isSvg = window.SVGElement && el instanceof window.SVGElement
+    // Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3.
+    // See https://github.com/twbs/bootstrap/issues/20280
+    var elOffset  = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset())
+    var scroll    = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }
+    var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null
+
+    return $.extend({}, elRect, scroll, outerDims, elOffset)
+  }
+
+  Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {
+    return placement == 'bottom' ? { top: pos.top + pos.height,   left: pos.left + pos.width / 2 - actualWidth / 2 } :
+           placement == 'top'    ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :
+           placement == 'left'   ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :
+        /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }
+
+  }
+
+  Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {
+    var delta = { top: 0, left: 0 }
+    if (!this.$viewport) return delta
+
+    var viewportPadding = this.options.viewport && this.options.viewport.padding || 0
+    var viewportDimensions = this.getPosition(this.$viewport)
+
+    if (/right|left/.test(placement)) {
+      var topEdgeOffset    = pos.top - viewportPadding - viewportDimensions.scroll
+      var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight
+      if (topEdgeOffset < viewportDimensions.top) { // top overflow
+        delta.top = viewportDimensions.top - topEdgeOffset
+      } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow
+        delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset
+      }
+    } else {
+      var leftEdgeOffset  = pos.left - viewportPadding
+      var rightEdgeOffset = pos.left + viewportPadding + actualWidth
+      if (leftEdgeOffset < viewportDimensions.left) { // left overflow
+        delta.left = viewportDimensions.left - leftEdgeOffset
+      } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow
+        delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset
+      }
+    }
+
+    return delta
+  }
+
+  Tooltip.prototype.getTitle = function () {
+    var title
+    var $e = this.$element
+    var o  = this.options
+
+    title = $e.attr('data-original-title')
+      || (typeof o.title == 'function' ? o.title.call($e[0]) :  o.title)
+
+    return title
+  }
+
+  Tooltip.prototype.getUID = function (prefix) {
+    do prefix += ~~(Math.random() * 1000000)
+    while (document.getElementById(prefix))
+    return prefix
+  }
+
+  Tooltip.prototype.tip = function () {
+    if (!this.$tip) {
+      this.$tip = $(this.options.template)
+      if (this.$tip.length != 1) {
+        throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!')
+      }
+    }
+    return this.$tip
+  }
+
+  Tooltip.prototype.arrow = function () {
+    return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))
+  }
+
+  Tooltip.prototype.enable = function () {
+    this.enabled = true
+  }
+
+  Tooltip.prototype.disable = function () {
+    this.enabled = false
+  }
+
+  Tooltip.prototype.toggleEnabled = function () {
+    this.enabled = !this.enabled
+  }
+
+  Tooltip.prototype.toggle = function (e) {
+    var self = this
+    if (e) {
+      self = $(e.currentTarget).data('bs.' + this.type)
+      if (!self) {
+        self = new this.constructor(e.currentTarget, this.getDelegateOptions())
+        $(e.currentTarget).data('bs.' + this.type, self)
+      }
+    }
+
+    if (e) {
+      self.inState.click = !self.inState.click
+      if (self.isInStateTrue()) self.enter(self)
+      else self.leave(self)
+    } else {
+      self.tip().hasClass('in') ? self.leave(self) : self.enter(self)
+    }
+  }
+
+  Tooltip.prototype.destroy = function () {
+    var that = this
+    clearTimeout(this.timeout)
+    this.hide(function () {
+      that.$element.off('.' + that.type).removeData('bs.' + that.type)
+      if (that.$tip) {
+        that.$tip.detach()
+      }
+      that.$tip = null
+      that.$arrow = null
+      that.$viewport = null
+      that.$element = null
+    })
+  }
+
+  Tooltip.prototype.sanitizeHtml = function (unsafeHtml) {
+    return sanitizeHtml(unsafeHtml, this.options.whiteList, this.options.sanitizeFn)
+  }
+
+  // TOOLTIP PLUGIN DEFINITION
+  // =========================
+
+  function Plugin(option) {
+    return this.each(function () {
+      var $this   = $(this)
+      var data    = $this.data('bs.tooltip')
+      var options = typeof option == 'object' && option
+
+      if (!data && /destroy|hide/.test(option)) return
+      if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))
+      if (typeof option == 'string') data[option]()
+    })
+  }
+
+  var old = $.fn.tooltip
+
+  $.fn.tooltip             = Plugin
+  $.fn.tooltip.Constructor = Tooltip
+
+
+  // TOOLTIP NO CONFLICT
+  // ===================
+
+  $.fn.tooltip.noConflict = function () {
+    $.fn.tooltip = old
+    return this
+  }
+
+}(jQuery);
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/javascripts/bootstrap/transition.js
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/javascripts/bootstrap/transition.js	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/javascripts/bootstrap/transition.js	(revision 3762)
@@ -0,0 +1,59 @@
+/* ========================================================================
+ * Bootstrap: transition.js v3.4.1
+ * https://getbootstrap.com/docs/3.4/javascript/#transitions
+ * ========================================================================
+ * Copyright 2011-2019 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // CSS TRANSITION SUPPORT (Shoutout: https://modernizr.com/)
+  // ============================================================
+
+  function transitionEnd() {
+    var el = document.createElement('bootstrap')
+
+    var transEndEventNames = {
+      WebkitTransition : 'webkitTransitionEnd',
+      MozTransition    : 'transitionend',
+      OTransition      : 'oTransitionEnd otransitionend',
+      transition       : 'transitionend'
+    }
+
+    for (var name in transEndEventNames) {
+      if (el.style[name] !== undefined) {
+        return { end: transEndEventNames[name] }
+      }
+    }
+
+    return false // explicit for ie8 (  ._.)
+  }
+
+  // https://blog.alexmaccaw.com/css-transitions
+  $.fn.emulateTransitionEnd = function (duration) {
+    var called = false
+    var $el = this
+    $(this).one('bsTransitionEnd', function () { called = true })
+    var callback = function () { if (!called) $($el).trigger($.support.transition.end) }
+    setTimeout(callback, duration)
+    return this
+  }
+
+  $(function () {
+    $.support.transition = transitionEnd()
+
+    if (!$.support.transition) return
+
+    $.event.special.bsTransitionEnd = {
+      bindType: $.support.transition.end,
+      delegateType: $.support.transition.end,
+      handle: function (e) {
+        if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)
+      }
+    }
+  })
+
+}(jQuery);
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/javascripts/bootstrap-sprockets.js
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/javascripts/bootstrap-sprockets.js	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/javascripts/bootstrap-sprockets.js	(revision 3762)
@@ -0,0 +1,12 @@
+//= require ./bootstrap/affix
+//= require ./bootstrap/alert
+//= require ./bootstrap/button
+//= require ./bootstrap/carousel
+//= require ./bootstrap/collapse
+//= require ./bootstrap/dropdown
+//= require ./bootstrap/modal
+//= require ./bootstrap/scrollspy
+//= require ./bootstrap/tab
+//= require ./bootstrap/transition
+//= require ./bootstrap/tooltip
+//= require ./bootstrap/popover
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_grid.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_grid.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_grid.scss	(revision 3762)
@@ -0,0 +1,94 @@
+//
+// Grid system
+// --------------------------------------------------
+
+
+// Container widths
+//
+// Set the container width, and override it for fixed navbars in media queries.
+
+.container {
+  @include container-fixed;
+
+  @media (min-width: $screen-sm-min) {
+    width: $container-sm;
+  }
+  @media (min-width: $screen-md-min) {
+    width: $container-md;
+  }
+  @media (min-width: $screen-lg-min) {
+    width: $container-lg;
+  }
+}
+
+
+// Fluid container
+//
+// Utilizes the mixin meant for fixed width containers, but without any defined
+// width for fluid, full width layouts.
+
+.container-fluid {
+  @include container-fixed;
+}
+
+
+// Row
+//
+// Rows contain and clear the floats of your columns.
+
+.row {
+  @include make-row;
+}
+
+.row-no-gutters {
+  margin-right: 0;
+  margin-left: 0;
+
+  [class*="col-"] {
+    padding-right: 0;
+    padding-left: 0;
+  }
+}
+
+
+// Columns
+//
+// Common styles for small and large grid columns
+
+@include make-grid-columns;
+
+
+// Extra small grid
+//
+// Columns, offsets, pushes, and pulls for extra small devices like
+// smartphones.
+
+@include make-grid(xs);
+
+
+// Small grid
+//
+// Columns, offsets, pushes, and pulls for the small device range, from phones
+// to tablets.
+
+@media (min-width: $screen-sm-min) {
+  @include make-grid(sm);
+}
+
+
+// Medium grid
+//
+// Columns, offsets, pushes, and pulls for the desktop device range.
+
+@media (min-width: $screen-md-min) {
+  @include make-grid(md);
+}
+
+
+// Large grid
+//
+// Columns, offsets, pushes, and pulls for the large desktop device range.
+
+@media (min-width: $screen-lg-min) {
+  @include make-grid(lg);
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_forms.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_forms.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_forms.scss	(revision 3762)
@@ -0,0 +1,607 @@
+//
+// Forms
+// --------------------------------------------------
+
+
+// Normalize non-controls
+//
+// Restyle and baseline non-control form elements.
+
+fieldset {
+  // Chrome and Firefox set a `min-width: min-content;` on fieldsets,
+  // so we reset that to ensure it behaves more like a standard block element.
+  // See https://github.com/twbs/bootstrap/issues/12359.
+  min-width: 0;
+  padding: 0;
+  margin: 0;
+  border: 0;
+}
+
+legend {
+  display: block;
+  width: 100%;
+  padding: 0;
+  margin-bottom: $line-height-computed;
+  font-size: ($font-size-base * 1.5);
+  line-height: inherit;
+  color: $legend-color;
+  border: 0;
+  border-bottom: 1px solid $legend-border-color;
+}
+
+label {
+  display: inline-block;
+  max-width: 100%; // Force IE8 to wrap long content (see https://github.com/twbs/bootstrap/issues/13141)
+  margin-bottom: 5px;
+  font-weight: 700;
+}
+
+
+// Normalize form controls
+//
+// While most of our form styles require extra classes, some basic normalization
+// is required to ensure optimum display with or without those classes to better
+// address browser inconsistencies.
+
+input[type="search"] {
+  // Override content-box in Normalize (* isn't specific enough)
+  @include box-sizing(border-box);
+
+  // Search inputs in iOS
+  //
+  // This overrides the extra rounded corners on search inputs in iOS so that our
+  // `.form-control` class can properly style them. Note that this cannot simply
+  // be added to `.form-control` as it's not specific enough. For details, see
+  // https://github.com/twbs/bootstrap/issues/11586.
+  -webkit-appearance: none;
+  appearance: none;
+}
+
+// Position radios and checkboxes better
+input[type="radio"],
+input[type="checkbox"] {
+  margin: 4px 0 0;
+  margin-top: 1px \9; // IE8-9
+  line-height: normal;
+
+  // Apply same disabled cursor tweak as for inputs
+  // Some special care is needed because <label>s don't inherit their parent's `cursor`.
+  //
+  // Note: Neither radios nor checkboxes can be readonly.
+  &[disabled],
+  &.disabled,
+  fieldset[disabled] & {
+    cursor: $cursor-disabled;
+  }
+}
+
+input[type="file"] {
+  display: block;
+}
+
+// Make range inputs behave like textual form controls
+input[type="range"] {
+  display: block;
+  width: 100%;
+}
+
+// Make multiple select elements height not fixed
+select[multiple],
+select[size] {
+  height: auto;
+}
+
+// Focus for file, radio, and checkbox
+input[type="file"]:focus,
+input[type="radio"]:focus,
+input[type="checkbox"]:focus {
+  @include tab-focus;
+}
+
+// Adjust output element
+output {
+  display: block;
+  padding-top: ($padding-base-vertical + 1);
+  font-size: $font-size-base;
+  line-height: $line-height-base;
+  color: $input-color;
+}
+
+
+// Common form controls
+//
+// Shared size and type resets for form controls. Apply `.form-control` to any
+// of the following form controls:
+//
+// select
+// textarea
+// input[type="text"]
+// input[type="password"]
+// input[type="datetime"]
+// input[type="datetime-local"]
+// input[type="date"]
+// input[type="month"]
+// input[type="time"]
+// input[type="week"]
+// input[type="number"]
+// input[type="email"]
+// input[type="url"]
+// input[type="search"]
+// input[type="tel"]
+// input[type="color"]
+
+.form-control {
+  display: block;
+  width: 100%;
+  height: $input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border)
+  padding: $padding-base-vertical $padding-base-horizontal;
+  font-size: $font-size-base;
+  line-height: $line-height-base;
+  color: $input-color;
+  background-color: $input-bg;
+  background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214
+  border: 1px solid $input-border;
+  border-radius: $input-border-radius; // Note: This has no effect on <select>s in some browsers, due to the limited stylability of <select>s in CSS.
+  @include box-shadow(inset 0 1px 1px rgba(0, 0, 0, .075));
+  @include transition(border-color ease-in-out .15s, box-shadow ease-in-out .15s);
+
+  // Customize the `:focus` state to imitate native WebKit styles.
+  @include form-control-focus;
+
+  // Placeholder
+  @include placeholder;
+
+  // Unstyle the caret on `<select>`s in IE10+.
+  &::-ms-expand {
+    background-color: transparent;
+    border: 0;
+  }
+
+  // Disabled and read-only inputs
+  //
+  // HTML5 says that controls under a fieldset > legend:first-child won't be
+  // disabled if the fieldset is disabled. Due to implementation difficulty, we
+  // don't honor that edge case; we style them as disabled anyway.
+  &[disabled],
+  &[readonly],
+  fieldset[disabled] & {
+    background-color: $input-bg-disabled;
+    opacity: 1; // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655
+  }
+
+  &[disabled],
+  fieldset[disabled] & {
+    cursor: $cursor-disabled;
+  }
+
+  // [converter] extracted textarea& to textarea.form-control
+}
+
+// Reset height for `textarea`s
+textarea.form-control {
+  height: auto;
+}
+
+
+// Special styles for iOS temporal inputs
+//
+// In Mobile Safari, setting `display: block` on temporal inputs causes the
+// text within the input to become vertically misaligned. As a workaround, we
+// set a pixel line-height that matches the given height of the input, but only
+// for Safari. See https://bugs.webkit.org/show_bug.cgi?id=139848
+//
+// Note that as of 9.3, iOS doesn't support `week`.
+
+@media screen and (-webkit-min-device-pixel-ratio: 0) {
+  input[type="date"],
+  input[type="time"],
+  input[type="datetime-local"],
+  input[type="month"] {
+    &.form-control {
+      line-height: $input-height-base;
+    }
+
+    &.input-sm,
+    .input-group-sm & {
+      line-height: $input-height-small;
+    }
+
+    &.input-lg,
+    .input-group-lg & {
+      line-height: $input-height-large;
+    }
+  }
+}
+
+
+// Form groups
+//
+// Designed to help with the organization and spacing of vertical forms. For
+// horizontal forms, use the predefined grid classes.
+
+.form-group {
+  margin-bottom: $form-group-margin-bottom;
+}
+
+
+// Checkboxes and radios
+//
+// Indent the labels to position radios/checkboxes as hanging controls.
+
+.radio,
+.checkbox {
+  position: relative;
+  display: block;
+  margin-top: 10px;
+  margin-bottom: 10px;
+
+  // These are used on elements with <label> descendants
+  &.disabled,
+  fieldset[disabled] & {
+    label {
+      cursor: $cursor-disabled;
+    }
+  }
+
+  label {
+    min-height: $line-height-computed; // Ensure the input doesn't jump when there is no text
+    padding-left: 20px;
+    margin-bottom: 0;
+    font-weight: 400;
+    cursor: pointer;
+  }
+}
+.radio input[type="radio"],
+.radio-inline input[type="radio"],
+.checkbox input[type="checkbox"],
+.checkbox-inline input[type="checkbox"] {
+  position: absolute;
+  margin-top: 4px \9;
+  margin-left: -20px;
+}
+
+.radio + .radio,
+.checkbox + .checkbox {
+  margin-top: -5px; // Move up sibling radios or checkboxes for tighter spacing
+}
+
+// Radios and checkboxes on same line
+.radio-inline,
+.checkbox-inline {
+  position: relative;
+  display: inline-block;
+  padding-left: 20px;
+  margin-bottom: 0;
+  font-weight: 400;
+  vertical-align: middle;
+  cursor: pointer;
+
+  // These are used directly on <label>s
+  &.disabled,
+  fieldset[disabled] & {
+    cursor: $cursor-disabled;
+  }
+}
+.radio-inline + .radio-inline,
+.checkbox-inline + .checkbox-inline {
+  margin-top: 0;
+  margin-left: 10px; // space out consecutive inline controls
+}
+
+
+// Static form control text
+//
+// Apply class to a `p` element to make any string of text align with labels in
+// a horizontal form layout.
+
+.form-control-static {
+  min-height: ($line-height-computed + $font-size-base);
+  // Size it appropriately next to real form controls
+  padding-top: ($padding-base-vertical + 1);
+  padding-bottom: ($padding-base-vertical + 1);
+  // Remove default margin from `p`
+  margin-bottom: 0;
+
+  &.input-lg,
+  &.input-sm {
+    padding-right: 0;
+    padding-left: 0;
+  }
+}
+
+
+// Form control sizing
+//
+// Build on `.form-control` with modifier classes to decrease or increase the
+// height and font-size of form controls.
+//
+// The `.form-group-* form-control` variations are sadly duplicated to avoid the
+// issue documented in https://github.com/twbs/bootstrap/issues/15074.
+
+@include input-size('.input-sm', $input-height-small, $padding-small-vertical, $padding-small-horizontal, $font-size-small, $line-height-small, $input-border-radius-small);
+.form-group-sm {
+  .form-control {
+    height: $input-height-small;
+    padding: $padding-small-vertical $padding-small-horizontal;
+    font-size: $font-size-small;
+    line-height: $line-height-small;
+    border-radius: $input-border-radius-small;
+  }
+  select.form-control {
+    height: $input-height-small;
+    line-height: $input-height-small;
+  }
+  textarea.form-control,
+  select[multiple].form-control {
+    height: auto;
+  }
+  .form-control-static {
+    height: $input-height-small;
+    min-height: ($line-height-computed + $font-size-small);
+    padding: ($padding-small-vertical + 1) $padding-small-horizontal;
+    font-size: $font-size-small;
+    line-height: $line-height-small;
+  }
+}
+
+@include input-size('.input-lg', $input-height-large, $padding-large-vertical, $padding-large-horizontal, $font-size-large, $line-height-large, $input-border-radius-large);
+.form-group-lg {
+  .form-control {
+    height: $input-height-large;
+    padding: $padding-large-vertical $padding-large-horizontal;
+    font-size: $font-size-large;
+    line-height: $line-height-large;
+    border-radius: $input-border-radius-large;
+  }
+  select.form-control {
+    height: $input-height-large;
+    line-height: $input-height-large;
+  }
+  textarea.form-control,
+  select[multiple].form-control {
+    height: auto;
+  }
+  .form-control-static {
+    height: $input-height-large;
+    min-height: ($line-height-computed + $font-size-large);
+    padding: ($padding-large-vertical + 1) $padding-large-horizontal;
+    font-size: $font-size-large;
+    line-height: $line-height-large;
+  }
+}
+
+
+// Form control feedback states
+//
+// Apply contextual and semantic states to individual form controls.
+
+.has-feedback {
+  // Enable absolute positioning
+  position: relative;
+
+  // Ensure icons don't overlap text
+  .form-control {
+    padding-right: ($input-height-base * 1.25);
+  }
+}
+// Feedback icon (requires .glyphicon classes)
+.form-control-feedback {
+  position: absolute;
+  top: 0;
+  right: 0;
+  z-index: 2; // Ensure icon is above input groups
+  display: block;
+  width: $input-height-base;
+  height: $input-height-base;
+  line-height: $input-height-base;
+  text-align: center;
+  pointer-events: none;
+}
+.input-lg + .form-control-feedback,
+.input-group-lg + .form-control-feedback,
+.form-group-lg .form-control + .form-control-feedback {
+  width: $input-height-large;
+  height: $input-height-large;
+  line-height: $input-height-large;
+}
+.input-sm + .form-control-feedback,
+.input-group-sm + .form-control-feedback,
+.form-group-sm .form-control + .form-control-feedback {
+  width: $input-height-small;
+  height: $input-height-small;
+  line-height: $input-height-small;
+}
+
+// Feedback states
+.has-success {
+  @include form-control-validation($state-success-text, $state-success-text, $state-success-bg);
+}
+.has-warning {
+  @include form-control-validation($state-warning-text, $state-warning-text, $state-warning-bg);
+}
+.has-error {
+  @include form-control-validation($state-danger-text, $state-danger-text, $state-danger-bg);
+}
+
+// Reposition feedback icon if input has visible label above
+.has-feedback label {
+
+  & ~ .form-control-feedback {
+    top: ($line-height-computed + 5); // Height of the `label` and its margin
+  }
+  &.sr-only ~ .form-control-feedback {
+    top: 0;
+  }
+}
+
+
+// Help text
+//
+// Apply to any element you wish to create light text for placement immediately
+// below a form control. Use for general help, formatting, or instructional text.
+
+.help-block {
+  display: block; // account for any element using help-block
+  margin-top: 5px;
+  margin-bottom: 10px;
+  color: lighten($text-color, 25%); // lighten the text some for contrast
+}
+
+
+// Inline forms
+//
+// Make forms appear inline(-block) by adding the `.form-inline` class. Inline
+// forms begin stacked on extra small (mobile) devices and then go inline when
+// viewports reach <768px.
+//
+// Requires wrapping inputs and labels with `.form-group` for proper display of
+// default HTML form controls and our custom form controls (e.g., input groups).
+//
+// Heads up! This is mixin-ed into `.navbar-form` in navbars.less.
+
+// [converter] extracted from `.form-inline` for libsass compatibility
+@mixin form-inline {
+
+  // Kick in the inline
+  @media (min-width: $screen-sm-min) {
+    // Inline-block all the things for "inline"
+    .form-group {
+      display: inline-block;
+      margin-bottom: 0;
+      vertical-align: middle;
+    }
+
+    // In navbar-form, allow folks to *not* use `.form-group`
+    .form-control {
+      display: inline-block;
+      width: auto; // Prevent labels from stacking above inputs in `.form-group`
+      vertical-align: middle;
+    }
+
+    // Make static controls behave like regular ones
+    .form-control-static {
+      display: inline-block;
+    }
+
+    .input-group {
+      display: inline-table;
+      vertical-align: middle;
+
+      .input-group-addon,
+      .input-group-btn,
+      .form-control {
+        width: auto;
+      }
+    }
+
+    // Input groups need that 100% width though
+    .input-group > .form-control {
+      width: 100%;
+    }
+
+    .control-label {
+      margin-bottom: 0;
+      vertical-align: middle;
+    }
+
+    // Remove default margin on radios/checkboxes that were used for stacking, and
+    // then undo the floating of radios and checkboxes to match.
+    .radio,
+    .checkbox {
+      display: inline-block;
+      margin-top: 0;
+      margin-bottom: 0;
+      vertical-align: middle;
+
+      label {
+        padding-left: 0;
+      }
+    }
+    .radio input[type="radio"],
+    .checkbox input[type="checkbox"] {
+      position: relative;
+      margin-left: 0;
+    }
+
+    // Re-override the feedback icon.
+    .has-feedback .form-control-feedback {
+      top: 0;
+    }
+  }
+}
+// [converter] extracted as `@mixin form-inline` for libsass compatibility
+.form-inline {
+  @include form-inline;
+}
+
+
+
+// Horizontal forms
+//
+// Horizontal forms are built on grid classes and allow you to create forms with
+// labels on the left and inputs on the right.
+
+.form-horizontal {
+
+  // Consistent vertical alignment of radios and checkboxes
+  //
+  // Labels also get some reset styles, but that is scoped to a media query below.
+  .radio,
+  .checkbox,
+  .radio-inline,
+  .checkbox-inline {
+    padding-top: ($padding-base-vertical + 1); // Default padding plus a border
+    margin-top: 0;
+    margin-bottom: 0;
+  }
+  // Account for padding we're adding to ensure the alignment and of help text
+  // and other content below items
+  .radio,
+  .checkbox {
+    min-height: ($line-height-computed + ($padding-base-vertical + 1));
+  }
+
+  // Make form groups behave like rows
+  .form-group {
+    @include make-row;
+  }
+
+  // Reset spacing and right align labels, but scope to media queries so that
+  // labels on narrow viewports stack the same as a default form example.
+  @media (min-width: $screen-sm-min) {
+    .control-label {
+      padding-top: ($padding-base-vertical + 1); // Default padding plus a border
+      margin-bottom: 0;
+      text-align: right;
+    }
+  }
+
+  // Validation states
+  //
+  // Reposition the icon because it's now within a grid column and columns have
+  // `position: relative;` on them. Also accounts for the grid gutter padding.
+  .has-feedback .form-control-feedback {
+    right: floor(($grid-gutter-width / 2));
+  }
+
+  // Form group sizes
+  //
+  // Quick utility class for applying `.input-lg` and `.input-sm` styles to the
+  // inputs and labels within a `.form-group`.
+  .form-group-lg {
+    @media (min-width: $screen-sm-min) {
+      .control-label {
+        padding-top: ($padding-large-vertical + 1);
+        font-size: $font-size-large;
+      }
+    }
+  }
+  .form-group-sm {
+    @media (min-width: $screen-sm-min) {
+      .control-label {
+        padding-top: ($padding-small-vertical + 1);
+        font-size: $font-size-small;
+      }
+    }
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_pagination.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_pagination.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_pagination.scss	(revision 3762)
@@ -0,0 +1,86 @@
+//
+// Pagination (multiple pages)
+// --------------------------------------------------
+.pagination {
+  display: inline-block;
+  padding-left: 0;
+  margin: $line-height-computed 0;
+  border-radius: $border-radius-base;
+
+  > li {
+    display: inline; // Remove list-style and block-level defaults
+    > a,
+    > span {
+      position: relative;
+      float: left; // Collapse white-space
+      padding: $padding-base-vertical $padding-base-horizontal;
+      margin-left: -1px;
+      line-height: $line-height-base;
+      color: $pagination-color;
+      text-decoration: none;
+      background-color: $pagination-bg;
+      border: 1px solid $pagination-border;
+
+      &:hover,
+      &:focus {
+        z-index: 2;
+        color: $pagination-hover-color;
+        background-color: $pagination-hover-bg;
+        border-color: $pagination-hover-border;
+      }
+    }
+    &:first-child {
+      > a,
+      > span {
+        margin-left: 0;
+        @include border-left-radius($border-radius-base);
+      }
+    }
+    &:last-child {
+      > a,
+      > span {
+        @include border-right-radius($border-radius-base);
+      }
+    }
+  }
+
+  > .active > a,
+  > .active > span {
+    &,
+    &:hover,
+    &:focus {
+      z-index: 3;
+      color: $pagination-active-color;
+      cursor: default;
+      background-color: $pagination-active-bg;
+      border-color: $pagination-active-border;
+    }
+  }
+
+  > .disabled {
+    > span,
+    > span:hover,
+    > span:focus,
+    > a,
+    > a:hover,
+    > a:focus {
+      color: $pagination-disabled-color;
+      cursor: $cursor-disabled;
+      background-color: $pagination-disabled-bg;
+      border-color: $pagination-disabled-border;
+    }
+  }
+}
+
+// Sizing
+// --------------------------------------------------
+
+// Large
+.pagination-lg {
+  @include pagination-size($padding-large-vertical, $padding-large-horizontal, $font-size-large, $line-height-large, $border-radius-large);
+}
+
+// Small
+.pagination-sm {
+  @include pagination-size($padding-small-vertical, $padding-small-horizontal, $font-size-small, $line-height-small, $border-radius-small);
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_alerts.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_alerts.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_alerts.scss	(revision 3762)
@@ -0,0 +1,73 @@
+//
+// Alerts
+// --------------------------------------------------
+
+
+// Base styles
+// -------------------------
+
+.alert {
+  padding: $alert-padding;
+  margin-bottom: $line-height-computed;
+  border: 1px solid transparent;
+  border-radius: $alert-border-radius;
+
+  // Headings for larger alerts
+  h4 {
+    margin-top: 0;
+    color: inherit; // Specified for the h4 to prevent conflicts of changing $headings-color
+  }
+
+  // Provide class for links that match alerts
+  .alert-link {
+    font-weight: $alert-link-font-weight;
+  }
+
+  // Improve alignment and spacing of inner content
+  > p,
+  > ul {
+    margin-bottom: 0;
+  }
+
+  > p + p {
+    margin-top: 5px;
+  }
+}
+
+// Dismissible alerts
+//
+// Expand the right padding and account for the close button's positioning.
+
+// The misspelled .alert-dismissable was deprecated in 3.2.0.
+.alert-dismissable,
+.alert-dismissible {
+  padding-right: ($alert-padding + 20);
+
+  // Adjust close link position
+  .close {
+    position: relative;
+    top: -2px;
+    right: -21px;
+    color: inherit;
+  }
+}
+
+// Alternate styles
+//
+// Generate contextual modifier classes for colorizing the alert.
+
+.alert-success {
+  @include alert-variant($alert-success-bg, $alert-success-border, $alert-success-text);
+}
+
+.alert-info {
+  @include alert-variant($alert-info-bg, $alert-info-border, $alert-info-text);
+}
+
+.alert-warning {
+  @include alert-variant($alert-warning-bg, $alert-warning-border, $alert-warning-text);
+}
+
+.alert-danger {
+  @include alert-variant($alert-danger-bg, $alert-danger-border, $alert-danger-text);
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_print.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_print.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_print.scss	(revision 3762)
@@ -0,0 +1,99 @@
+/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
+
+// ==========================================================================
+// Print styles.
+// Inlined to avoid the additional HTTP request: h5bp.com/r
+// ==========================================================================
+
+@media print {
+  *,
+  *:before,
+  *:after {
+    color: #000 !important; // Black prints faster: h5bp.com/s
+    text-shadow: none !important;
+    background: transparent !important;
+    box-shadow: none !important;
+  }
+
+  a,
+  a:visited {
+    text-decoration: underline;
+  }
+
+  a[href]:after {
+    content: " (" attr(href) ")";
+  }
+
+  abbr[title]:after {
+    content: " (" attr(title) ")";
+  }
+
+  // Don't show links that are fragment identifiers,
+  // or use the `javascript:` pseudo protocol
+  a[href^="#"]:after,
+  a[href^="javascript:"]:after {
+    content: "";
+  }
+
+  pre,
+  blockquote {
+    border: 1px solid #999;
+    page-break-inside: avoid;
+  }
+
+  thead {
+    display: table-header-group; // h5bp.com/t
+  }
+
+  tr,
+  img {
+    page-break-inside: avoid;
+  }
+
+  img {
+    max-width: 100% !important;
+  }
+
+  p,
+  h2,
+  h3 {
+    orphans: 3;
+    widows: 3;
+  }
+
+  h2,
+  h3 {
+    page-break-after: avoid;
+  }
+
+  // Bootstrap specific changes start
+
+  // Bootstrap components
+  .navbar {
+    display: none;
+  }
+  .btn,
+  .dropup > .btn {
+    > .caret {
+      border-top-color: #000 !important;
+    }
+  }
+  .label {
+    border: 1px solid #000;
+  }
+
+  .table {
+    border-collapse: collapse !important;
+
+    td,
+    th {
+      background-color: #fff !important;
+    }
+  }
+  .table-bordered {
+    th,
+    td {
+      border: 1px solid #ddd !important;
+    }
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_buttons.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_buttons.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_buttons.scss	(revision 3762)
@@ -0,0 +1,168 @@
+//
+// Buttons
+// --------------------------------------------------
+
+
+// Base styles
+// --------------------------------------------------
+
+.btn {
+  display: inline-block;
+  margin-bottom: 0; // For input.btn
+  font-weight: $btn-font-weight;
+  text-align: center;
+  white-space: nowrap;
+  vertical-align: middle;
+  touch-action: manipulation;
+  cursor: pointer;
+  background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214
+  border: 1px solid transparent;
+  @include button-size($padding-base-vertical, $padding-base-horizontal, $font-size-base, $line-height-base, $btn-border-radius-base);
+  @include user-select(none);
+
+  &,
+  &:active,
+  &.active {
+    &:focus,
+    &.focus {
+      @include tab-focus;
+    }
+  }
+
+  &:hover,
+  &:focus,
+  &.focus {
+    color: $btn-default-color;
+    text-decoration: none;
+  }
+
+  &:active,
+  &.active {
+    background-image: none;
+    outline: 0;
+    @include box-shadow(inset 0 3px 5px rgba(0, 0, 0, .125));
+  }
+
+  &.disabled,
+  &[disabled],
+  fieldset[disabled] & {
+    cursor: $cursor-disabled;
+    @include opacity(.65);
+    @include box-shadow(none);
+  }
+
+  // [converter] extracted a& to a.btn
+}
+
+a.btn {
+  &.disabled,
+  fieldset[disabled] & {
+    pointer-events: none; // Future-proof disabling of clicks on `<a>` elements
+  }
+}
+
+
+// Alternate buttons
+// --------------------------------------------------
+
+.btn-default {
+  @include button-variant($btn-default-color, $btn-default-bg, $btn-default-border);
+}
+.btn-primary {
+  @include button-variant($btn-primary-color, $btn-primary-bg, $btn-primary-border);
+}
+// Success appears as green
+.btn-success {
+  @include button-variant($btn-success-color, $btn-success-bg, $btn-success-border);
+}
+// Info appears as blue-green
+.btn-info {
+  @include button-variant($btn-info-color, $btn-info-bg, $btn-info-border);
+}
+// Warning appears as orange
+.btn-warning {
+  @include button-variant($btn-warning-color, $btn-warning-bg, $btn-warning-border);
+}
+// Danger and error appear as red
+.btn-danger {
+  @include button-variant($btn-danger-color, $btn-danger-bg, $btn-danger-border);
+}
+
+
+// Link buttons
+// -------------------------
+
+// Make a button look and behave like a link
+.btn-link {
+  font-weight: 400;
+  color: $link-color;
+  border-radius: 0;
+
+  &,
+  &:active,
+  &.active,
+  &[disabled],
+  fieldset[disabled] & {
+    background-color: transparent;
+    @include box-shadow(none);
+  }
+  &,
+  &:hover,
+  &:focus,
+  &:active {
+    border-color: transparent;
+  }
+  &:hover,
+  &:focus {
+    color: $link-hover-color;
+    text-decoration: $link-hover-decoration;
+    background-color: transparent;
+  }
+  &[disabled],
+  fieldset[disabled] & {
+    &:hover,
+    &:focus {
+      color: $btn-link-disabled-color;
+      text-decoration: none;
+    }
+  }
+}
+
+
+// Button Sizes
+// --------------------------------------------------
+
+.btn-lg {
+  // line-height: ensure even-numbered height of button next to large input
+  @include button-size($padding-large-vertical, $padding-large-horizontal, $font-size-large, $line-height-large, $btn-border-radius-large);
+}
+.btn-sm {
+  // line-height: ensure proper height of button next to small input
+  @include button-size($padding-small-vertical, $padding-small-horizontal, $font-size-small, $line-height-small, $btn-border-radius-small);
+}
+.btn-xs {
+  @include button-size($padding-xs-vertical, $padding-xs-horizontal, $font-size-small, $line-height-small, $btn-border-radius-small);
+}
+
+
+// Block button
+// --------------------------------------------------
+
+.btn-block {
+  display: block;
+  width: 100%;
+}
+
+// Vertically space out multiple block buttons
+.btn-block + .btn-block {
+  margin-top: 5px;
+}
+
+// Specificity overrides
+input[type="submit"],
+input[type="reset"],
+input[type="button"] {
+  &.btn-block {
+    width: 100%;
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_theme.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_theme.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_theme.scss	(revision 3762)
@@ -0,0 +1,295 @@
+/*!
+ * Bootstrap v3.4.1 (https://getbootstrap.com/)
+ * Copyright 2011-2019 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */
+
+//
+// Load core variables and mixins
+// --------------------------------------------------
+
+@import "variables";
+@import "mixins";
+
+
+//
+// Buttons
+// --------------------------------------------------
+
+// Common styles
+.btn-default,
+.btn-primary,
+.btn-success,
+.btn-info,
+.btn-warning,
+.btn-danger {
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, .2);
+  $shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);
+  @include box-shadow($shadow);
+
+  // Reset the shadow
+  &:active,
+  &.active {
+    @include box-shadow(inset 0 3px 5px rgba(0, 0, 0, .125));
+  }
+
+  &.disabled,
+  &[disabled],
+  fieldset[disabled] & {
+    @include box-shadow(none);
+  }
+
+  .badge {
+    text-shadow: none;
+  }
+}
+
+// Mixin for generating new styles
+@mixin btn-styles($btn-color: #555) {
+  @include gradient-vertical($start-color: $btn-color, $end-color: darken($btn-color, 12%));
+  @include reset-filter; // Disable gradients for IE9 because filter bleeds through rounded corners; see https://github.com/twbs/bootstrap/issues/10620
+  background-repeat: repeat-x;
+  border-color: darken($btn-color, 14%);
+
+  &:hover,
+  &:focus  {
+    background-color: darken($btn-color, 12%);
+    background-position: 0 -15px;
+  }
+
+  &:active,
+  &.active {
+    background-color: darken($btn-color, 12%);
+    border-color: darken($btn-color, 14%);
+  }
+
+  &.disabled,
+  &[disabled],
+  fieldset[disabled] & {
+    &,
+    &:hover,
+    &:focus,
+    &.focus,
+    &:active,
+    &.active {
+      background-color: darken($btn-color, 12%);
+      background-image: none;
+    }
+  }
+}
+
+// Common styles
+.btn {
+  // Remove the gradient for the pressed/active state
+  &:active,
+  &.active {
+    background-image: none;
+  }
+}
+
+// Apply the mixin to the buttons
+.btn-default {
+  @include btn-styles($btn-default-bg);
+  text-shadow: 0 1px 0 #fff;
+  border-color: #ccc;
+}
+.btn-primary { @include btn-styles($btn-primary-bg); }
+.btn-success { @include btn-styles($btn-success-bg); }
+.btn-info    { @include btn-styles($btn-info-bg); }
+.btn-warning { @include btn-styles($btn-warning-bg); }
+.btn-danger  { @include btn-styles($btn-danger-bg); }
+
+
+//
+// Images
+// --------------------------------------------------
+
+.thumbnail,
+.img-thumbnail {
+  @include box-shadow(0 1px 2px rgba(0, 0, 0, .075));
+}
+
+
+//
+// Dropdowns
+// --------------------------------------------------
+
+.dropdown-menu > li > a:hover,
+.dropdown-menu > li > a:focus {
+  @include gradient-vertical($start-color: $dropdown-link-hover-bg, $end-color: darken($dropdown-link-hover-bg, 5%));
+  background-color: darken($dropdown-link-hover-bg, 5%);
+}
+.dropdown-menu > .active > a,
+.dropdown-menu > .active > a:hover,
+.dropdown-menu > .active > a:focus {
+  @include gradient-vertical($start-color: $dropdown-link-active-bg, $end-color: darken($dropdown-link-active-bg, 5%));
+  background-color: darken($dropdown-link-active-bg, 5%);
+}
+
+
+//
+// Navbar
+// --------------------------------------------------
+
+// Default navbar
+.navbar-default {
+  @include gradient-vertical($start-color: lighten($navbar-default-bg, 10%), $end-color: $navbar-default-bg);
+  @include reset-filter; // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered
+  border-radius: $navbar-border-radius;
+  $shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);
+  @include box-shadow($shadow);
+
+  .navbar-nav > .open > a,
+  .navbar-nav > .active > a {
+    @include gradient-vertical($start-color: darken($navbar-default-link-active-bg, 5%), $end-color: darken($navbar-default-link-active-bg, 2%));
+    @include box-shadow(inset 0 3px 9px rgba(0, 0, 0, .075));
+  }
+}
+.navbar-brand,
+.navbar-nav > li > a {
+  text-shadow: 0 1px 0 rgba(255, 255, 255, .25);
+}
+
+// Inverted navbar
+.navbar-inverse {
+  @include gradient-vertical($start-color: lighten($navbar-inverse-bg, 10%), $end-color: $navbar-inverse-bg);
+  @include reset-filter; // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered; see https://github.com/twbs/bootstrap/issues/10257
+  border-radius: $navbar-border-radius;
+  .navbar-nav > .open > a,
+  .navbar-nav > .active > a {
+    @include gradient-vertical($start-color: $navbar-inverse-link-active-bg, $end-color: lighten($navbar-inverse-link-active-bg, 2.5%));
+    @include box-shadow(inset 0 3px 9px rgba(0, 0, 0, .25));
+  }
+
+  .navbar-brand,
+  .navbar-nav > li > a {
+    text-shadow: 0 -1px 0 rgba(0, 0, 0, .25);
+  }
+}
+
+// Undo rounded corners in static and fixed navbars
+.navbar-static-top,
+.navbar-fixed-top,
+.navbar-fixed-bottom {
+  border-radius: 0;
+}
+
+// Fix active state of dropdown items in collapsed mode
+@media (max-width: $grid-float-breakpoint-max) {
+  .navbar .navbar-nav .open .dropdown-menu > .active > a {
+    &,
+    &:hover,
+    &:focus {
+      color: #fff;
+      @include gradient-vertical($start-color: $dropdown-link-active-bg, $end-color: darken($dropdown-link-active-bg, 5%));
+    }
+  }
+}
+
+
+//
+// Alerts
+// --------------------------------------------------
+
+// Common styles
+.alert {
+  text-shadow: 0 1px 0 rgba(255, 255, 255, .2);
+  $shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);
+  @include box-shadow($shadow);
+}
+
+// Mixin for generating new styles
+@mixin alert-styles($color) {
+  @include gradient-vertical($start-color: $color, $end-color: darken($color, 7.5%));
+  border-color: darken($color, 15%);
+}
+
+// Apply the mixin to the alerts
+.alert-success    { @include alert-styles($alert-success-bg); }
+.alert-info       { @include alert-styles($alert-info-bg); }
+.alert-warning    { @include alert-styles($alert-warning-bg); }
+.alert-danger     { @include alert-styles($alert-danger-bg); }
+
+
+//
+// Progress bars
+// --------------------------------------------------
+
+// Give the progress background some depth
+.progress {
+  @include gradient-vertical($start-color: darken($progress-bg, 4%), $end-color: $progress-bg)
+}
+
+// Mixin for generating new styles
+@mixin progress-bar-styles($color) {
+  @include gradient-vertical($start-color: $color, $end-color: darken($color, 10%));
+}
+
+// Apply the mixin to the progress bars
+.progress-bar            { @include progress-bar-styles($progress-bar-bg); }
+.progress-bar-success    { @include progress-bar-styles($progress-bar-success-bg); }
+.progress-bar-info       { @include progress-bar-styles($progress-bar-info-bg); }
+.progress-bar-warning    { @include progress-bar-styles($progress-bar-warning-bg); }
+.progress-bar-danger     { @include progress-bar-styles($progress-bar-danger-bg); }
+
+// Reset the striped class because our mixins don't do multiple gradients and
+// the above custom styles override the new `.progress-bar-striped` in v3.2.0.
+.progress-bar-striped {
+  @include gradient-striped;
+}
+
+
+//
+// List groups
+// --------------------------------------------------
+
+.list-group {
+  border-radius: $border-radius-base;
+  @include box-shadow(0 1px 2px rgba(0, 0, 0, .075));
+}
+.list-group-item.active,
+.list-group-item.active:hover,
+.list-group-item.active:focus {
+  text-shadow: 0 -1px 0 darken($list-group-active-bg, 10%);
+  @include gradient-vertical($start-color: $list-group-active-bg, $end-color: darken($list-group-active-bg, 7.5%));
+  border-color: darken($list-group-active-border, 7.5%);
+
+  .badge {
+    text-shadow: none;
+  }
+}
+
+
+//
+// Panels
+// --------------------------------------------------
+
+// Common styles
+.panel {
+  @include box-shadow(0 1px 2px rgba(0, 0, 0, .05));
+}
+
+// Mixin for generating new styles
+@mixin panel-heading-styles($color) {
+  @include gradient-vertical($start-color: $color, $end-color: darken($color, 5%));
+}
+
+// Apply the mixin to the panel headings only
+.panel-default > .panel-heading   { @include panel-heading-styles($panel-default-heading-bg); }
+.panel-primary > .panel-heading   { @include panel-heading-styles($panel-primary-heading-bg); }
+.panel-success > .panel-heading   { @include panel-heading-styles($panel-success-heading-bg); }
+.panel-info > .panel-heading      { @include panel-heading-styles($panel-info-heading-bg); }
+.panel-warning > .panel-heading   { @include panel-heading-styles($panel-warning-heading-bg); }
+.panel-danger > .panel-heading    { @include panel-heading-styles($panel-danger-heading-bg); }
+
+
+//
+// Wells
+// --------------------------------------------------
+
+.well {
+  @include gradient-vertical($start-color: darken($well-bg, 5%), $end-color: $well-bg);
+  border-color: darken($well-bg, 10%);
+  $shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);
+  @include box-shadow($shadow);
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_list-group.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_list-group.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_list-group.scss	(revision 3762)
@@ -0,0 +1,128 @@
+//
+// List groups
+// --------------------------------------------------
+
+
+// Base class
+//
+// Easily usable on <ul>, <ol>, or <div>.
+
+.list-group {
+  // No need to set list-style: none; since .list-group-item is block level
+  padding-left: 0; // reset padding because ul and ol
+  margin-bottom: 20px;
+}
+
+
+// Individual list items
+//
+// Use on `li`s or `div`s within the `.list-group` parent.
+
+.list-group-item {
+  position: relative;
+  display: block;
+  padding: 10px 15px;
+  // Place the border on the list items and negative margin up for better styling
+  margin-bottom: -1px;
+  background-color: $list-group-bg;
+  border: 1px solid $list-group-border;
+
+  // Round the first and last items
+  &:first-child {
+    @include border-top-radius($list-group-border-radius);
+  }
+  &:last-child {
+    margin-bottom: 0;
+    @include border-bottom-radius($list-group-border-radius);
+  }
+
+  // Disabled state
+  &.disabled,
+  &.disabled:hover,
+  &.disabled:focus {
+    color: $list-group-disabled-color;
+    cursor: $cursor-disabled;
+    background-color: $list-group-disabled-bg;
+
+    // Force color to inherit for custom content
+    .list-group-item-heading {
+      color: inherit;
+    }
+    .list-group-item-text {
+      color: $list-group-disabled-text-color;
+    }
+  }
+
+  // Active class on item itself, not parent
+  &.active,
+  &.active:hover,
+  &.active:focus {
+    z-index: 2; // Place active items above their siblings for proper border styling
+    color: $list-group-active-color;
+    background-color: $list-group-active-bg;
+    border-color: $list-group-active-border;
+
+    // Force color to inherit for custom content
+    .list-group-item-heading,
+    .list-group-item-heading > small,
+    .list-group-item-heading > .small {
+      color: inherit;
+    }
+    .list-group-item-text {
+      color: $list-group-active-text-color;
+    }
+  }
+}
+
+
+// Interactive list items
+//
+// Use anchor or button elements instead of `li`s or `div`s to create interactive items.
+// Includes an extra `.active` modifier class for showing selected items.
+
+a.list-group-item,
+button.list-group-item {
+  color: $list-group-link-color;
+
+  .list-group-item-heading {
+    color: $list-group-link-heading-color;
+  }
+
+  // Hover state
+  &:hover,
+  &:focus {
+    color: $list-group-link-hover-color;
+    text-decoration: none;
+    background-color: $list-group-hover-bg;
+  }
+}
+
+button.list-group-item {
+  width: 100%;
+  text-align: left;
+}
+
+
+// Contextual variants
+//
+// Add modifier classes to change text and background color on individual items.
+// Organizationally, this must come after the `:hover` states.
+
+@include list-group-item-variant(success, $state-success-bg, $state-success-text);
+@include list-group-item-variant(info, $state-info-bg, $state-info-text);
+@include list-group-item-variant(warning, $state-warning-bg, $state-warning-text);
+@include list-group-item-variant(danger, $state-danger-bg, $state-danger-text);
+
+
+// Custom content options
+//
+// Extra classes for creating well-formatted content within `.list-group-item`s.
+
+.list-group-item-heading {
+  margin-top: 0;
+  margin-bottom: 5px;
+}
+.list-group-item-text {
+  margin-bottom: 0;
+  line-height: 1.3;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_mixins.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_mixins.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_mixins.scss	(revision 3762)
@@ -0,0 +1,40 @@
+// Mixins
+// --------------------------------------------------
+
+// Utilities
+@import "mixins/hide-text";
+@import "mixins/opacity";
+@import "mixins/image";
+@import "mixins/labels";
+@import "mixins/reset-filter";
+@import "mixins/resize";
+@import "mixins/responsive-visibility";
+@import "mixins/size";
+@import "mixins/tab-focus";
+@import "mixins/reset-text";
+@import "mixins/text-emphasis";
+@import "mixins/text-overflow";
+@import "mixins/vendor-prefixes";
+
+// Components
+@import "mixins/alerts";
+@import "mixins/buttons";
+@import "mixins/panels";
+@import "mixins/pagination";
+@import "mixins/list-group";
+@import "mixins/nav-divider";
+@import "mixins/forms";
+@import "mixins/progress-bar";
+@import "mixins/table-row";
+
+// Skins
+@import "mixins/background-variant";
+@import "mixins/border-radius";
+@import "mixins/gradients";
+
+// Layout
+@import "mixins/clearfix";
+@import "mixins/center-block";
+@import "mixins/nav-vertical-align";
+@import "mixins/grid-framework";
+@import "mixins/grid";
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_navs.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_navs.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_navs.scss	(revision 3762)
@@ -0,0 +1,242 @@
+//
+// Navs
+// --------------------------------------------------
+
+
+// Base class
+// --------------------------------------------------
+
+.nav {
+  padding-left: 0; // Override default ul/ol
+  margin-bottom: 0;
+  list-style: none;
+  @include clearfix;
+
+  > li {
+    position: relative;
+    display: block;
+
+    > a {
+      position: relative;
+      display: block;
+      padding: $nav-link-padding;
+      &:hover,
+      &:focus {
+        text-decoration: none;
+        background-color: $nav-link-hover-bg;
+      }
+    }
+
+    // Disabled state sets text to gray and nukes hover/tab effects
+    &.disabled > a {
+      color: $nav-disabled-link-color;
+
+      &:hover,
+      &:focus {
+        color: $nav-disabled-link-hover-color;
+        text-decoration: none;
+        cursor: $cursor-disabled;
+        background-color: transparent;
+      }
+    }
+  }
+
+  // Open dropdowns
+  .open > a {
+    &,
+    &:hover,
+    &:focus {
+      background-color: $nav-link-hover-bg;
+      border-color: $link-color;
+    }
+  }
+
+  // Nav dividers (deprecated with v3.0.1)
+  //
+  // This should have been removed in v3 with the dropping of `.nav-list`, but
+  // we missed it. We don't currently support this anywhere, but in the interest
+  // of maintaining backward compatibility in case you use it, it's deprecated.
+  .nav-divider {
+    @include nav-divider;
+  }
+
+  // Prevent IE8 from misplacing imgs
+  //
+  // See https://github.com/h5bp/html5-boilerplate/issues/984#issuecomment-3985989
+  > li > a > img {
+    max-width: none;
+  }
+}
+
+
+// Tabs
+// -------------------------
+
+// Give the tabs something to sit on
+.nav-tabs {
+  border-bottom: 1px solid $nav-tabs-border-color;
+  > li {
+    float: left;
+    // Make the list-items overlay the bottom border
+    margin-bottom: -1px;
+
+    // Actual tabs (as links)
+    > a {
+      margin-right: 2px;
+      line-height: $line-height-base;
+      border: 1px solid transparent;
+      border-radius: $border-radius-base $border-radius-base 0 0;
+      &:hover {
+        border-color: $nav-tabs-link-hover-border-color $nav-tabs-link-hover-border-color $nav-tabs-border-color;
+      }
+    }
+
+    // Active state, and its :hover to override normal :hover
+    &.active > a {
+      &,
+      &:hover,
+      &:focus {
+        color: $nav-tabs-active-link-hover-color;
+        cursor: default;
+        background-color: $nav-tabs-active-link-hover-bg;
+        border: 1px solid $nav-tabs-active-link-hover-border-color;
+        border-bottom-color: transparent;
+      }
+    }
+  }
+  // pulling this in mainly for less shorthand
+  &.nav-justified {
+    @extend .nav-justified;
+    @extend .nav-tabs-justified;
+  }
+}
+
+
+// Pills
+// -------------------------
+.nav-pills {
+  > li {
+    float: left;
+
+    // Links rendered as pills
+    > a {
+      border-radius: $nav-pills-border-radius;
+    }
+    + li {
+      margin-left: 2px;
+    }
+
+    // Active state
+    &.active > a {
+      &,
+      &:hover,
+      &:focus {
+        color: $nav-pills-active-link-hover-color;
+        background-color: $nav-pills-active-link-hover-bg;
+      }
+    }
+  }
+}
+
+
+// Stacked pills
+.nav-stacked {
+  > li {
+    float: none;
+    + li {
+      margin-top: 2px;
+      margin-left: 0; // no need for this gap between nav items
+    }
+  }
+}
+
+
+// Nav variations
+// --------------------------------------------------
+
+// Justified nav links
+// -------------------------
+
+.nav-justified {
+  width: 100%;
+
+  > li {
+    float: none;
+    > a {
+      margin-bottom: 5px;
+      text-align: center;
+    }
+  }
+
+  > .dropdown .dropdown-menu {
+    top: auto;
+    left: auto;
+  }
+
+  @media (min-width: $screen-sm-min) {
+    > li {
+      display: table-cell;
+      width: 1%;
+      > a {
+        margin-bottom: 0;
+      }
+    }
+  }
+}
+
+// Move borders to anchors instead of bottom of list
+//
+// Mixin for adding on top the shared `.nav-justified` styles for our tabs
+.nav-tabs-justified {
+  border-bottom: 0;
+
+  > li > a {
+    // Override margin from .nav-tabs
+    margin-right: 0;
+    border-radius: $border-radius-base;
+  }
+
+  > .active > a,
+  > .active > a:hover,
+  > .active > a:focus {
+    border: 1px solid $nav-tabs-justified-link-border-color;
+  }
+
+  @media (min-width: $screen-sm-min) {
+    > li > a {
+      border-bottom: 1px solid $nav-tabs-justified-link-border-color;
+      border-radius: $border-radius-base $border-radius-base 0 0;
+    }
+    > .active > a,
+    > .active > a:hover,
+    > .active > a:focus {
+      border-bottom-color: $nav-tabs-justified-active-link-border-color;
+    }
+  }
+}
+
+
+// Tabbable tabs
+// -------------------------
+
+// Hide tabbable panes to start, show them when `.active`
+.tab-content {
+  > .tab-pane {
+    display: none;
+  }
+  > .active {
+    display: block;
+  }
+}
+
+
+// Dropdowns
+// -------------------------
+
+// Specific dropdowns
+.nav-tabs .dropdown-menu {
+  // make dropdown border overlap tab border
+  margin-top: -1px;
+  // Remove the top rounded corners here since there is a hard edge above the menu
+  @include border-top-radius(0);
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_responsive-embed.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_responsive-embed.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_responsive-embed.scss	(revision 3762)
@@ -0,0 +1,35 @@
+// Embeds responsive
+//
+// Credit: Nicolas Gallagher and SUIT CSS.
+
+.embed-responsive {
+  position: relative;
+  display: block;
+  height: 0;
+  padding: 0;
+  overflow: hidden;
+
+  .embed-responsive-item,
+  iframe,
+  embed,
+  object,
+  video {
+    position: absolute;
+    top: 0;
+    bottom: 0;
+    left: 0;
+    width: 100%;
+    height: 100%;
+    border: 0;
+  }
+}
+
+// Modifier class for 16:9 aspect ratio
+.embed-responsive-16by9 {
+  padding-bottom: 56.25%;
+}
+
+// Modifier class for 4:3 aspect ratio
+.embed-responsive-4by3 {
+  padding-bottom: 75%;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_tables.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_tables.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_tables.scss	(revision 3762)
@@ -0,0 +1,234 @@
+//
+// Tables
+// --------------------------------------------------
+
+
+table {
+  background-color: $table-bg;
+
+  // Table cell sizing
+  //
+  // Reset default table behavior
+
+  col[class*="col-"] {
+    position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)
+    display: table-column;
+    float: none;
+  }
+
+  td,
+  th {
+    &[class*="col-"] {
+      position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)
+      display: table-cell;
+      float: none;
+    }
+  }
+}
+
+caption {
+  padding-top: $table-cell-padding;
+  padding-bottom: $table-cell-padding;
+  color: $text-muted;
+  text-align: left;
+}
+
+th {
+  text-align: left;
+}
+
+
+// Baseline styles
+
+.table {
+  width: 100%;
+  max-width: 100%;
+  margin-bottom: $line-height-computed;
+  // Cells
+  > thead,
+  > tbody,
+  > tfoot {
+    > tr {
+      > th,
+      > td {
+        padding: $table-cell-padding;
+        line-height: $line-height-base;
+        vertical-align: top;
+        border-top: 1px solid $table-border-color;
+      }
+    }
+  }
+  // Bottom align for column headings
+  > thead > tr > th {
+    vertical-align: bottom;
+    border-bottom: 2px solid $table-border-color;
+  }
+  // Remove top border from thead by default
+  > caption + thead,
+  > colgroup + thead,
+  > thead:first-child {
+    > tr:first-child {
+      > th,
+      > td {
+        border-top: 0;
+      }
+    }
+  }
+  // Account for multiple tbody instances
+  > tbody + tbody {
+    border-top: 2px solid $table-border-color;
+  }
+
+  // Nesting
+  .table {
+    background-color: $body-bg;
+  }
+}
+
+
+// Condensed table w/ half padding
+
+.table-condensed {
+  > thead,
+  > tbody,
+  > tfoot {
+    > tr {
+      > th,
+      > td {
+        padding: $table-condensed-cell-padding;
+      }
+    }
+  }
+}
+
+
+// Bordered version
+//
+// Add borders all around the table and between all the columns.
+
+.table-bordered {
+  border: 1px solid $table-border-color;
+  > thead,
+  > tbody,
+  > tfoot {
+    > tr {
+      > th,
+      > td {
+        border: 1px solid $table-border-color;
+      }
+    }
+  }
+  > thead > tr {
+    > th,
+    > td {
+      border-bottom-width: 2px;
+    }
+  }
+}
+
+
+// Zebra-striping
+//
+// Default zebra-stripe styles (alternating gray and transparent backgrounds)
+
+.table-striped {
+  > tbody > tr:nth-of-type(odd) {
+    background-color: $table-bg-accent;
+  }
+}
+
+
+// Hover effect
+//
+// Placed here since it has to come after the potential zebra striping
+
+.table-hover {
+  > tbody > tr:hover {
+    background-color: $table-bg-hover;
+  }
+}
+
+
+// Table backgrounds
+//
+// Exact selectors below required to override `.table-striped` and prevent
+// inheritance to nested tables.
+
+// Generate the contextual variants
+@include table-row-variant('active', $table-bg-active);
+@include table-row-variant('success', $state-success-bg);
+@include table-row-variant('info', $state-info-bg);
+@include table-row-variant('warning', $state-warning-bg);
+@include table-row-variant('danger', $state-danger-bg);
+
+
+// Responsive tables
+//
+// Wrap your tables in `.table-responsive` and we'll make them mobile friendly
+// by enabling horizontal scrolling. Only applies <768px. Everything above that
+// will display normally.
+
+.table-responsive {
+  min-height: .01%; // Workaround for IE9 bug (see https://github.com/twbs/bootstrap/issues/14837)
+  overflow-x: auto;
+
+  @media screen and (max-width: $screen-xs-max) {
+    width: 100%;
+    margin-bottom: ($line-height-computed * .75);
+    overflow-y: hidden;
+    -ms-overflow-style: -ms-autohiding-scrollbar;
+    border: 1px solid $table-border-color;
+
+    // Tighten up spacing
+    > .table {
+      margin-bottom: 0;
+
+      // Ensure the content doesn't wrap
+      > thead,
+      > tbody,
+      > tfoot {
+        > tr {
+          > th,
+          > td {
+            white-space: nowrap;
+          }
+        }
+      }
+    }
+
+    // Special overrides for the bordered tables
+    > .table-bordered {
+      border: 0;
+
+      // Nuke the appropriate borders so that the parent can handle them
+      > thead,
+      > tbody,
+      > tfoot {
+        > tr {
+          > th:first-child,
+          > td:first-child {
+            border-left: 0;
+          }
+          > th:last-child,
+          > td:last-child {
+            border-right: 0;
+          }
+        }
+      }
+
+      // Only nuke the last row's bottom-border in `tbody` and `tfoot` since
+      // chances are there will be only one `tr` in a `thead` and that would
+      // remove the border altogether.
+      > tbody,
+      > tfoot {
+        > tr:last-child {
+          > th,
+          > td {
+            border-bottom: 0;
+          }
+        }
+      }
+
+    }
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_input-groups.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_input-groups.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_input-groups.scss	(revision 3762)
@@ -0,0 +1,171 @@
+//
+// Input groups
+// --------------------------------------------------
+
+// Base styles
+// -------------------------
+.input-group {
+  position: relative; // For dropdowns
+  display: table;
+  border-collapse: separate; // prevent input groups from inheriting border styles from table cells when placed within a table
+
+  // Undo padding and float of grid classes
+  &[class*="col-"] {
+    float: none;
+    padding-right: 0;
+    padding-left: 0;
+  }
+
+  .form-control {
+    // Ensure that the input is always above the *appended* addon button for
+    // proper border colors.
+    position: relative;
+    z-index: 2;
+
+    // IE9 fubars the placeholder attribute in text inputs and the arrows on
+    // select elements in input groups. To fix it, we float the input. Details:
+    // https://github.com/twbs/bootstrap/issues/11561#issuecomment-28936855
+    float: left;
+
+    width: 100%;
+    margin-bottom: 0;
+
+    &:focus {
+      z-index: 3;
+    }
+  }
+}
+
+// Sizing options
+//
+// Remix the default form control sizing classes into new ones for easier
+// manipulation.
+
+.input-group-lg > .form-control,
+.input-group-lg > .input-group-addon,
+.input-group-lg > .input-group-btn > .btn {
+  @extend .input-lg;
+}
+.input-group-sm > .form-control,
+.input-group-sm > .input-group-addon,
+.input-group-sm > .input-group-btn > .btn {
+  @extend .input-sm;
+}
+
+
+// Display as table-cell
+// -------------------------
+.input-group-addon,
+.input-group-btn,
+.input-group .form-control {
+  display: table-cell;
+
+  &:not(:first-child):not(:last-child) {
+    border-radius: 0;
+  }
+}
+// Addon and addon wrapper for buttons
+.input-group-addon,
+.input-group-btn {
+  width: 1%;
+  white-space: nowrap;
+  vertical-align: middle; // Match the inputs
+}
+
+// Text input groups
+// -------------------------
+.input-group-addon {
+  padding: $padding-base-vertical $padding-base-horizontal;
+  font-size: $font-size-base;
+  font-weight: 400;
+  line-height: 1;
+  color: $input-color;
+  text-align: center;
+  background-color: $input-group-addon-bg;
+  border: 1px solid $input-group-addon-border-color;
+  border-radius: $input-border-radius;
+
+  // Sizing
+  &.input-sm {
+    padding: $padding-small-vertical $padding-small-horizontal;
+    font-size: $font-size-small;
+    border-radius: $input-border-radius-small;
+  }
+  &.input-lg {
+    padding: $padding-large-vertical $padding-large-horizontal;
+    font-size: $font-size-large;
+    border-radius: $input-border-radius-large;
+  }
+
+  // Nuke default margins from checkboxes and radios to vertically center within.
+  input[type="radio"],
+  input[type="checkbox"] {
+    margin-top: 0;
+  }
+}
+
+// Reset rounded corners
+.input-group .form-control:first-child,
+.input-group-addon:first-child,
+.input-group-btn:first-child > .btn,
+.input-group-btn:first-child > .btn-group > .btn,
+.input-group-btn:first-child > .dropdown-toggle,
+.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
+.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
+  @include border-right-radius(0);
+}
+.input-group-addon:first-child {
+  border-right: 0;
+}
+.input-group .form-control:last-child,
+.input-group-addon:last-child,
+.input-group-btn:last-child > .btn,
+.input-group-btn:last-child > .btn-group > .btn,
+.input-group-btn:last-child > .dropdown-toggle,
+.input-group-btn:first-child > .btn:not(:first-child),
+.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
+  @include border-left-radius(0);
+}
+.input-group-addon:last-child {
+  border-left: 0;
+}
+
+// Button input groups
+// -------------------------
+.input-group-btn {
+  position: relative;
+  // Jankily prevent input button groups from wrapping with `white-space` and
+  // `font-size` in combination with `inline-block` on buttons.
+  font-size: 0;
+  white-space: nowrap;
+
+  // Negative margin for spacing, position for bringing hovered/focused/actived
+  // element above the siblings.
+  > .btn {
+    position: relative;
+    + .btn {
+      margin-left: -1px;
+    }
+    // Bring the "active" button to the front
+    &:hover,
+    &:focus,
+    &:active {
+      z-index: 2;
+    }
+  }
+
+  // Negative margin to only have a 1px border between the two
+  &:first-child {
+    > .btn,
+    > .btn-group {
+      margin-right: -1px;
+    }
+  }
+  &:last-child {
+    > .btn,
+    > .btn-group {
+      z-index: 2;
+      margin-left: -1px;
+    }
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_carousel.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_carousel.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_carousel.scss	(revision 3762)
@@ -0,0 +1,271 @@
+//
+// Carousel
+// --------------------------------------------------
+
+
+// Wrapper for the slide container and indicators
+.carousel {
+  position: relative;
+}
+
+.carousel-inner {
+  position: relative;
+  width: 100%;
+  overflow: hidden;
+
+  > .item {
+    position: relative;
+    display: none;
+    @include transition(.6s ease-in-out left);
+
+    // Account for jankitude on images
+    > img,
+    > a > img {
+      @include img-responsive;
+      line-height: 1;
+    }
+
+    // WebKit CSS3 transforms for supported devices
+    @media all and (transform-3d), (-webkit-transform-3d) {
+      @include transition-transform(0.6s ease-in-out);
+      @include backface-visibility(hidden);
+      @include perspective(1000px);
+
+      &.next,
+      &.active.right {
+        @include translate3d(100%, 0, 0);
+        left: 0;
+      }
+      &.prev,
+      &.active.left {
+        @include translate3d(-100%, 0, 0);
+        left: 0;
+      }
+      &.next.left,
+      &.prev.right,
+      &.active {
+        @include translate3d(0, 0, 0);
+        left: 0;
+      }
+    }
+  }
+
+  > .active,
+  > .next,
+  > .prev {
+    display: block;
+  }
+
+  > .active {
+    left: 0;
+  }
+
+  > .next,
+  > .prev {
+    position: absolute;
+    top: 0;
+    width: 100%;
+  }
+
+  > .next {
+    left: 100%;
+  }
+  > .prev {
+    left: -100%;
+  }
+  > .next.left,
+  > .prev.right {
+    left: 0;
+  }
+
+  > .active.left {
+    left: -100%;
+  }
+  > .active.right {
+    left: 100%;
+  }
+
+}
+
+// Left/right controls for nav
+// ---------------------------
+
+.carousel-control {
+  position: absolute;
+  top: 0;
+  bottom: 0;
+  left: 0;
+  width: $carousel-control-width;
+  font-size: $carousel-control-font-size;
+  color: $carousel-control-color;
+  text-align: center;
+  text-shadow: $carousel-text-shadow;
+  background-color: rgba(0, 0, 0, 0); // Fix IE9 click-thru bug
+  @include opacity($carousel-control-opacity);
+  // We can't have this transition here because WebKit cancels the carousel
+  // animation if you trip this while in the middle of another animation.
+
+  // Set gradients for backgrounds
+  &.left {
+    @include gradient-horizontal($start-color: rgba(0, 0, 0, .5), $end-color: rgba(0, 0, 0, .0001));
+  }
+  &.right {
+    right: 0;
+    left: auto;
+    @include gradient-horizontal($start-color: rgba(0, 0, 0, .0001), $end-color: rgba(0, 0, 0, .5));
+  }
+
+  // Hover/focus state
+  &:hover,
+  &:focus {
+    color: $carousel-control-color;
+    text-decoration: none;
+    outline: 0;
+    @include opacity(.9);
+  }
+
+  // Toggles
+  .icon-prev,
+  .icon-next,
+  .glyphicon-chevron-left,
+  .glyphicon-chevron-right {
+    position: absolute;
+    top: 50%;
+    z-index: 5;
+    display: inline-block;
+    margin-top: -10px;
+  }
+  .icon-prev,
+  .glyphicon-chevron-left {
+    left: 50%;
+    margin-left: -10px;
+  }
+  .icon-next,
+  .glyphicon-chevron-right {
+    right: 50%;
+    margin-right: -10px;
+  }
+  .icon-prev,
+  .icon-next {
+    width: 20px;
+    height: 20px;
+    font-family: serif;
+    line-height: 1;
+  }
+
+  .icon-prev {
+    &:before {
+      content: "\2039";// SINGLE LEFT-POINTING ANGLE QUOTATION MARK (U+2039)
+    }
+  }
+  .icon-next {
+    &:before {
+      content: "\203a";// SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (U+203A)
+    }
+  }
+}
+
+// Optional indicator pips
+//
+// Add an unordered list with the following class and add a list item for each
+// slide your carousel holds.
+
+.carousel-indicators {
+  position: absolute;
+  bottom: 10px;
+  left: 50%;
+  z-index: 15;
+  width: 60%;
+  padding-left: 0;
+  margin-left: -30%;
+  text-align: center;
+  list-style: none;
+
+  li {
+    display: inline-block;
+    width: 10px;
+    height: 10px;
+    margin: 1px;
+    text-indent: -999px;
+    cursor: pointer;
+    // IE8-9 hack for event handling
+    //
+    // Internet Explorer 8-9 does not support clicks on elements without a set
+    // `background-color`. We cannot use `filter` since that's not viewed as a
+    // background color by the browser. Thus, a hack is needed.
+    // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Internet_Explorer
+    //
+    // For IE8, we set solid black as it doesn't support `rgba()`. For IE9, we
+    // set alpha transparency for the best results possible.
+    background-color: #000 \9; // IE8
+    background-color: rgba(0, 0, 0, 0); // IE9
+
+    border: 1px solid $carousel-indicator-border-color;
+    border-radius: 10px;
+  }
+
+  .active {
+    width: 12px;
+    height: 12px;
+    margin: 0;
+    background-color: $carousel-indicator-active-bg;
+  }
+}
+
+// Optional captions
+// -----------------------------
+// Hidden by default for smaller viewports
+.carousel-caption {
+  position: absolute;
+  right: 15%;
+  bottom: 20px;
+  left: 15%;
+  z-index: 10;
+  padding-top: 20px;
+  padding-bottom: 20px;
+  color: $carousel-caption-color;
+  text-align: center;
+  text-shadow: $carousel-text-shadow;
+
+  & .btn {
+    text-shadow: none; // No shadow for button elements in carousel-caption
+  }
+}
+
+
+// Scale up controls for tablets and up
+@media screen and (min-width: $screen-sm-min) {
+
+  // Scale up the controls a smidge
+  .carousel-control {
+    .glyphicon-chevron-left,
+    .glyphicon-chevron-right,
+    .icon-prev,
+    .icon-next {
+      width: ($carousel-control-font-size * 1.5);
+      height: ($carousel-control-font-size * 1.5);
+      margin-top: ($carousel-control-font-size / -2);
+      font-size: ($carousel-control-font-size * 1.5);
+    }
+    .glyphicon-chevron-left,
+    .icon-prev {
+      margin-left: ($carousel-control-font-size / -2);
+    }
+    .glyphicon-chevron-right,
+    .icon-next {
+      margin-right: ($carousel-control-font-size / -2);
+    }
+  }
+
+  // Show and left align the captions
+  .carousel-caption {
+    right: 20%;
+    left: 20%;
+    padding-bottom: 30px;
+  }
+
+  // Move up the indicators
+  .carousel-indicators {
+    bottom: 20px;
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_popovers.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_popovers.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_popovers.scss	(revision 3762)
@@ -0,0 +1,126 @@
+//
+// Popovers
+// --------------------------------------------------
+
+
+.popover {
+  position: absolute;
+  top: 0;
+  left: 0;
+  z-index: $zindex-popover;
+  display: none;
+  max-width: $popover-max-width;
+  padding: 1px;
+  // Our parent element can be arbitrary since popovers are by default inserted as a sibling of their target element.
+  // So reset our font and text properties to avoid inheriting weird values.
+  @include reset-text;
+  font-size: $font-size-base;
+  background-color: $popover-bg;
+  background-clip: padding-box;
+  border: 1px solid $popover-fallback-border-color;
+  border: 1px solid $popover-border-color;
+  border-radius: $border-radius-large;
+  @include box-shadow(0 5px 10px rgba(0, 0, 0, .2));
+
+  // Offset the popover to account for the popover arrow
+  &.top { margin-top: -$popover-arrow-width; }
+  &.right { margin-left: $popover-arrow-width; }
+  &.bottom { margin-top: $popover-arrow-width; }
+  &.left { margin-left: -$popover-arrow-width; }
+
+  // Arrows
+  // .arrow is outer, .arrow:after is inner
+  > .arrow {
+    border-width: $popover-arrow-outer-width;
+
+    &,
+    &:after {
+      position: absolute;
+      display: block;
+      width: 0;
+      height: 0;
+      border-color: transparent;
+      border-style: solid;
+    }
+
+    &:after {
+      content: "";
+      border-width: $popover-arrow-width;
+    }
+  }
+
+  &.top > .arrow {
+    bottom: -$popover-arrow-outer-width;
+    left: 50%;
+    margin-left: -$popover-arrow-outer-width;
+    border-top-color: $popover-arrow-outer-fallback-color; // IE8 fallback
+    border-top-color: $popover-arrow-outer-color;
+    border-bottom-width: 0;
+    &:after {
+      bottom: 1px;
+      margin-left: -$popover-arrow-width;
+      content: " ";
+      border-top-color: $popover-arrow-color;
+      border-bottom-width: 0;
+    }
+  }
+  &.right > .arrow {
+    top: 50%;
+    left: -$popover-arrow-outer-width;
+    margin-top: -$popover-arrow-outer-width;
+    border-right-color: $popover-arrow-outer-fallback-color; // IE8 fallback
+    border-right-color: $popover-arrow-outer-color;
+    border-left-width: 0;
+    &:after {
+      bottom: -$popover-arrow-width;
+      left: 1px;
+      content: " ";
+      border-right-color: $popover-arrow-color;
+      border-left-width: 0;
+    }
+  }
+  &.bottom > .arrow {
+    top: -$popover-arrow-outer-width;
+    left: 50%;
+    margin-left: -$popover-arrow-outer-width;
+    border-top-width: 0;
+    border-bottom-color: $popover-arrow-outer-fallback-color; // IE8 fallback
+    border-bottom-color: $popover-arrow-outer-color;
+    &:after {
+      top: 1px;
+      margin-left: -$popover-arrow-width;
+      content: " ";
+      border-top-width: 0;
+      border-bottom-color: $popover-arrow-color;
+    }
+  }
+
+  &.left > .arrow {
+    top: 50%;
+    right: -$popover-arrow-outer-width;
+    margin-top: -$popover-arrow-outer-width;
+    border-right-width: 0;
+    border-left-color: $popover-arrow-outer-fallback-color; // IE8 fallback
+    border-left-color: $popover-arrow-outer-color;
+    &:after {
+      right: 1px;
+      bottom: -$popover-arrow-width;
+      content: " ";
+      border-right-width: 0;
+      border-left-color: $popover-arrow-color;
+    }
+  }
+}
+
+.popover-title {
+  padding: 8px 14px;
+  margin: 0; // reset heading margin
+  font-size: $font-size-base;
+  background-color: $popover-title-bg;
+  border-bottom: 1px solid darken($popover-title-bg, 5%);
+  border-radius: ($border-radius-large - 1) ($border-radius-large - 1) 0 0;
+}
+
+.popover-content {
+  padding: 9px 14px;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_jumbotron.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_jumbotron.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_jumbotron.scss	(revision 3762)
@@ -0,0 +1,54 @@
+//
+// Jumbotron
+// --------------------------------------------------
+
+
+.jumbotron {
+  padding-top: $jumbotron-padding;
+  padding-bottom: $jumbotron-padding;
+  margin-bottom: $jumbotron-padding;
+  color: $jumbotron-color;
+  background-color: $jumbotron-bg;
+
+  h1,
+  .h1 {
+    color: $jumbotron-heading-color;
+  }
+
+  p {
+    margin-bottom: ($jumbotron-padding / 2);
+    font-size: $jumbotron-font-size;
+    font-weight: 200;
+  }
+
+  > hr {
+    border-top-color: darken($jumbotron-bg, 10%);
+  }
+
+  .container &,
+  .container-fluid & {
+    padding-right: ($grid-gutter-width / 2);
+    padding-left: ($grid-gutter-width / 2);
+    border-radius: $border-radius-large; // Only round corners at higher resolutions if contained in a container
+  }
+
+  .container {
+    max-width: 100%;
+  }
+
+  @media screen and (min-width: $screen-sm-min) {
+    padding-top: ($jumbotron-padding * 1.6);
+    padding-bottom: ($jumbotron-padding * 1.6);
+
+    .container &,
+    .container-fluid & {
+      padding-right: ($jumbotron-padding * 2);
+      padding-left: ($jumbotron-padding * 2);
+    }
+
+    h1,
+    .h1 {
+      font-size: $jumbotron-heading-font-size;
+    }
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_type.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_type.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_type.scss	(revision 3762)
@@ -0,0 +1,298 @@
+//
+// Typography
+// --------------------------------------------------
+
+
+// Headings
+// -------------------------
+
+h1, h2, h3, h4, h5, h6,
+.h1, .h2, .h3, .h4, .h5, .h6 {
+  font-family: $headings-font-family;
+  font-weight: $headings-font-weight;
+  line-height: $headings-line-height;
+  color: $headings-color;
+
+  small,
+  .small {
+    font-weight: 400;
+    line-height: 1;
+    color: $headings-small-color;
+  }
+}
+
+h1, .h1,
+h2, .h2,
+h3, .h3 {
+  margin-top: $line-height-computed;
+  margin-bottom: ($line-height-computed / 2);
+
+  small,
+  .small {
+    font-size: 65%;
+  }
+}
+h4, .h4,
+h5, .h5,
+h6, .h6 {
+  margin-top: ($line-height-computed / 2);
+  margin-bottom: ($line-height-computed / 2);
+
+  small,
+  .small {
+    font-size: 75%;
+  }
+}
+
+h1, .h1 { font-size: $font-size-h1; }
+h2, .h2 { font-size: $font-size-h2; }
+h3, .h3 { font-size: $font-size-h3; }
+h4, .h4 { font-size: $font-size-h4; }
+h5, .h5 { font-size: $font-size-h5; }
+h6, .h6 { font-size: $font-size-h6; }
+
+
+// Body text
+// -------------------------
+
+p {
+  margin: 0 0 ($line-height-computed / 2);
+}
+
+.lead {
+  margin-bottom: $line-height-computed;
+  font-size: floor(($font-size-base * 1.15));
+  font-weight: 300;
+  line-height: 1.4;
+
+  @media (min-width: $screen-sm-min) {
+    font-size: ($font-size-base * 1.5);
+  }
+}
+
+
+// Emphasis & misc
+// -------------------------
+
+// Ex: (12px small font / 14px base font) * 100% = about 85%
+small,
+.small {
+  font-size: floor((100% * $font-size-small / $font-size-base));
+}
+
+mark,
+.mark {
+  padding: .2em;
+  background-color: $state-warning-bg;
+}
+
+// Alignment
+.text-left           { text-align: left; }
+.text-right          { text-align: right; }
+.text-center         { text-align: center; }
+.text-justify        { text-align: justify; }
+.text-nowrap         { white-space: nowrap; }
+
+// Transformation
+.text-lowercase      { text-transform: lowercase; }
+.text-uppercase      { text-transform: uppercase; }
+.text-capitalize     { text-transform: capitalize; }
+
+// Contextual colors
+.text-muted {
+  color: $text-muted;
+}
+
+@include text-emphasis-variant('.text-primary', $brand-primary);
+
+@include text-emphasis-variant('.text-success', $state-success-text);
+
+@include text-emphasis-variant('.text-info', $state-info-text);
+
+@include text-emphasis-variant('.text-warning', $state-warning-text);
+
+@include text-emphasis-variant('.text-danger', $state-danger-text);
+
+// Contextual backgrounds
+// For now we'll leave these alongside the text classes until v4 when we can
+// safely shift things around (per SemVer rules).
+.bg-primary {
+  // Given the contrast here, this is the only class to have its color inverted
+  // automatically.
+  color: #fff;
+}
+@include bg-variant('.bg-primary', $brand-primary);
+
+@include bg-variant('.bg-success', $state-success-bg);
+
+@include bg-variant('.bg-info', $state-info-bg);
+
+@include bg-variant('.bg-warning', $state-warning-bg);
+
+@include bg-variant('.bg-danger', $state-danger-bg);
+
+
+// Page header
+// -------------------------
+
+.page-header {
+  padding-bottom: (($line-height-computed / 2) - 1);
+  margin: ($line-height-computed * 2) 0 $line-height-computed;
+  border-bottom: 1px solid $page-header-border-color;
+}
+
+
+// Lists
+// -------------------------
+
+// Unordered and Ordered lists
+ul,
+ol {
+  margin-top: 0;
+  margin-bottom: ($line-height-computed / 2);
+  ul,
+  ol {
+    margin-bottom: 0;
+  }
+}
+
+// List options
+
+// [converter] extracted from `.list-unstyled` for libsass compatibility
+@mixin list-unstyled {
+  padding-left: 0;
+  list-style: none;
+}
+// [converter] extracted as `@mixin list-unstyled` for libsass compatibility
+.list-unstyled {
+  @include list-unstyled;
+}
+
+
+// Inline turns list items into inline-block
+.list-inline {
+  @include list-unstyled;
+  margin-left: -5px;
+
+  > li {
+    display: inline-block;
+    padding-right: 5px;
+    padding-left: 5px;
+  }
+}
+
+// Description Lists
+dl {
+  margin-top: 0; // Remove browser default
+  margin-bottom: $line-height-computed;
+}
+dt,
+dd {
+  line-height: $line-height-base;
+}
+dt {
+  font-weight: 700;
+}
+dd {
+  margin-left: 0; // Undo browser default
+}
+
+// Horizontal description lists
+//
+// Defaults to being stacked without any of the below styles applied, until the
+// grid breakpoint is reached (default of ~768px).
+
+.dl-horizontal {
+  dd {
+    @include clearfix; // Clear the floated `dt` if an empty `dd` is present
+  }
+
+  @media (min-width: $dl-horizontal-breakpoint) {
+    dt {
+      float: left;
+      width: ($dl-horizontal-offset - 20);
+      clear: left;
+      text-align: right;
+      @include text-overflow;
+    }
+    dd {
+      margin-left: $dl-horizontal-offset;
+    }
+  }
+}
+
+
+// Misc
+// -------------------------
+
+// Abbreviations and acronyms
+// Add data-* attribute to help out our tooltip plugin, per https://github.com/twbs/bootstrap/issues/5257
+abbr[title],
+abbr[data-original-title] {
+  cursor: help;
+}
+
+.initialism {
+  font-size: 90%;
+  @extend .text-uppercase;
+}
+
+// Blockquotes
+blockquote {
+  padding: ($line-height-computed / 2) $line-height-computed;
+  margin: 0 0 $line-height-computed;
+  font-size: $blockquote-font-size;
+  border-left: 5px solid $blockquote-border-color;
+
+  p,
+  ul,
+  ol {
+    &:last-child {
+      margin-bottom: 0;
+    }
+  }
+
+  // Note: Deprecated small and .small as of v3.1.0
+  // Context: https://github.com/twbs/bootstrap/issues/11660
+  footer,
+  small,
+  .small {
+    display: block;
+    font-size: 80%; // back to default font-size
+    line-height: $line-height-base;
+    color: $blockquote-small-color;
+
+    &:before {
+      content: "\2014 \00A0"; // em dash, nbsp
+    }
+  }
+}
+
+// Opposite alignment of blockquote
+//
+// Heads up: `blockquote.pull-right` has been deprecated as of v3.1.0.
+.blockquote-reverse,
+blockquote.pull-right {
+  padding-right: 15px;
+  padding-left: 0;
+  text-align: right;
+  border-right: 5px solid $blockquote-border-color;
+  border-left: 0;
+
+  // Account for citation
+  footer,
+  small,
+  .small {
+    &:before { content: ""; }
+    &:after {
+      content: "\00A0 \2014"; // nbsp, em dash
+    }
+  }
+}
+
+// Addresses
+address {
+  margin-bottom: $line-height-computed;
+  font-style: normal;
+  line-height: $line-height-base;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_badges.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_badges.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_badges.scss	(revision 3762)
@@ -0,0 +1,68 @@
+//
+// Badges
+// --------------------------------------------------
+
+
+// Base class
+.badge {
+  display: inline-block;
+  min-width: 10px;
+  padding: 3px 7px;
+  font-size: $font-size-small;
+  font-weight: $badge-font-weight;
+  line-height: $badge-line-height;
+  color: $badge-color;
+  text-align: center;
+  white-space: nowrap;
+  vertical-align: middle;
+  background-color: $badge-bg;
+  border-radius: $badge-border-radius;
+
+  // Empty badges collapse automatically (not available in IE8)
+  &:empty {
+    display: none;
+  }
+
+  // Quick fix for badges in buttons
+  .btn & {
+    position: relative;
+    top: -1px;
+  }
+
+  .btn-xs &,
+  .btn-group-xs > .btn & {
+    top: 0;
+    padding: 1px 5px;
+  }
+
+  // [converter] extracted a& to a.badge
+
+  // Account for badges in navs
+  .list-group-item.active > &,
+  .nav-pills > .active > a > & {
+    color: $badge-active-color;
+    background-color: $badge-active-bg;
+  }
+
+  .list-group-item > & {
+    float: right;
+  }
+
+  .list-group-item > & + & {
+    margin-right: 5px;
+  }
+
+  .nav-pills > li > a > & {
+    margin-left: 3px;
+  }
+}
+
+// Hover state, but only for links
+a.badge {
+  &:hover,
+  &:focus {
+    color: $badge-link-hover-color;
+    text-decoration: none;
+    cursor: pointer;
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_wells.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_wells.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_wells.scss	(revision 3762)
@@ -0,0 +1,29 @@
+//
+// Wells
+// --------------------------------------------------
+
+
+// Base class
+.well {
+  min-height: 20px;
+  padding: 19px;
+  margin-bottom: 20px;
+  background-color: $well-bg;
+  border: 1px solid $well-border;
+  border-radius: $border-radius-base;
+  @include box-shadow(inset 0 1px 1px rgba(0, 0, 0, .05));
+  blockquote {
+    border-color: #ddd;
+    border-color: rgba(0, 0, 0, .15);
+  }
+}
+
+// Sizes
+.well-lg {
+  padding: 24px;
+  border-radius: $border-radius-large;
+}
+.well-sm {
+  padding: 9px;
+  border-radius: $border-radius-small;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_button-groups.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_button-groups.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_button-groups.scss	(revision 3762)
@@ -0,0 +1,244 @@
+//
+// Button groups
+// --------------------------------------------------
+
+// Make the div behave like a button
+.btn-group,
+.btn-group-vertical {
+  position: relative;
+  display: inline-block;
+  vertical-align: middle; // match .btn alignment given font-size hack above
+  > .btn {
+    position: relative;
+    float: left;
+    // Bring the "active" button to the front
+    &:hover,
+    &:focus,
+    &:active,
+    &.active {
+      z-index: 2;
+    }
+  }
+}
+
+// Prevent double borders when buttons are next to each other
+.btn-group {
+  .btn + .btn,
+  .btn + .btn-group,
+  .btn-group + .btn,
+  .btn-group + .btn-group {
+    margin-left: -1px;
+  }
+}
+
+// Optional: Group multiple button groups together for a toolbar
+.btn-toolbar {
+  margin-left: -5px; // Offset the first child's margin
+  @include clearfix;
+
+  .btn,
+  .btn-group,
+  .input-group {
+    float: left;
+  }
+  > .btn,
+  > .btn-group,
+  > .input-group {
+    margin-left: 5px;
+  }
+}
+
+.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
+  border-radius: 0;
+}
+
+// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match
+.btn-group > .btn:first-child {
+  margin-left: 0;
+  &:not(:last-child):not(.dropdown-toggle) {
+    @include border-right-radius(0);
+  }
+}
+// Need .dropdown-toggle since :last-child doesn't apply, given that a .dropdown-menu is used immediately after it
+.btn-group > .btn:last-child:not(:first-child),
+.btn-group > .dropdown-toggle:not(:first-child) {
+  @include border-left-radius(0);
+}
+
+// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group)
+.btn-group > .btn-group {
+  float: left;
+}
+.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
+  border-radius: 0;
+}
+.btn-group > .btn-group:first-child:not(:last-child) {
+  > .btn:last-child,
+  > .dropdown-toggle {
+    @include border-right-radius(0);
+  }
+}
+.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {
+  @include border-left-radius(0);
+}
+
+// On active and open, don't show outline
+.btn-group .dropdown-toggle:active,
+.btn-group.open .dropdown-toggle {
+  outline: 0;
+}
+
+
+// Sizing
+//
+// Remix the default button sizing classes into new ones for easier manipulation.
+
+.btn-group-xs > .btn { @extend .btn-xs; }
+.btn-group-sm > .btn { @extend .btn-sm; }
+.btn-group-lg > .btn { @extend .btn-lg; }
+
+
+// Split button dropdowns
+// ----------------------
+
+// Give the line between buttons some depth
+.btn-group > .btn + .dropdown-toggle {
+  padding-right: 8px;
+  padding-left: 8px;
+}
+.btn-group > .btn-lg + .dropdown-toggle {
+  padding-right: 12px;
+  padding-left: 12px;
+}
+
+// The clickable button for toggling the menu
+// Remove the gradient and set the same inset shadow as the :active state
+.btn-group.open .dropdown-toggle {
+  @include box-shadow(inset 0 3px 5px rgba(0, 0, 0, .125));
+
+  // Show no shadow for `.btn-link` since it has no other button styles.
+  &.btn-link {
+    @include box-shadow(none);
+  }
+}
+
+
+// Reposition the caret
+.btn .caret {
+  margin-left: 0;
+}
+// Carets in other button sizes
+.btn-lg .caret {
+  border-width: $caret-width-large $caret-width-large 0;
+  border-bottom-width: 0;
+}
+// Upside down carets for .dropup
+.dropup .btn-lg .caret {
+  border-width: 0 $caret-width-large $caret-width-large;
+}
+
+
+// Vertical button groups
+// ----------------------
+
+.btn-group-vertical {
+  > .btn,
+  > .btn-group,
+  > .btn-group > .btn {
+    display: block;
+    float: none;
+    width: 100%;
+    max-width: 100%;
+  }
+
+  // Clear floats so dropdown menus can be properly placed
+  > .btn-group {
+    @include clearfix;
+    > .btn {
+      float: none;
+    }
+  }
+
+  > .btn + .btn,
+  > .btn + .btn-group,
+  > .btn-group + .btn,
+  > .btn-group + .btn-group {
+    margin-top: -1px;
+    margin-left: 0;
+  }
+}
+
+.btn-group-vertical > .btn {
+  &:not(:first-child):not(:last-child) {
+    border-radius: 0;
+  }
+  &:first-child:not(:last-child) {
+    @include border-top-radius($btn-border-radius-base);
+    @include border-bottom-radius(0);
+  }
+  &:last-child:not(:first-child) {
+    @include border-top-radius(0);
+    @include border-bottom-radius($btn-border-radius-base);
+  }
+}
+.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
+  border-radius: 0;
+}
+.btn-group-vertical > .btn-group:first-child:not(:last-child) {
+  > .btn:last-child,
+  > .dropdown-toggle {
+    @include border-bottom-radius(0);
+  }
+}
+.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
+  @include border-top-radius(0);
+}
+
+
+// Justified button groups
+// ----------------------
+
+.btn-group-justified {
+  display: table;
+  width: 100%;
+  table-layout: fixed;
+  border-collapse: separate;
+  > .btn,
+  > .btn-group {
+    display: table-cell;
+    float: none;
+    width: 1%;
+  }
+  > .btn-group .btn {
+    width: 100%;
+  }
+
+  > .btn-group .dropdown-menu {
+    left: auto;
+  }
+}
+
+
+// Checkbox and radio options
+//
+// In order to support the browser's form validation feedback, powered by the
+// `required` attribute, we have to "hide" the inputs via `clip`. We cannot use
+// `display: none;` or `visibility: hidden;` as that also hides the popover.
+// Simply visually hiding the inputs via `opacity` would leave them clickable in
+// certain cases which is prevented by using `clip` and `pointer-events`.
+// This way, we ensure a DOM element is visible to position the popover from.
+//
+// See https://github.com/twbs/bootstrap/pull/12794 and
+// https://github.com/twbs/bootstrap/pull/14559 for more information.
+
+[data-toggle="buttons"] {
+  > .btn,
+  > .btn-group > .btn {
+    input[type="radio"],
+    input[type="checkbox"] {
+      position: absolute;
+      clip: rect(0, 0, 0, 0);
+      pointer-events: none;
+    }
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_breadcrumbs.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_breadcrumbs.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_breadcrumbs.scss	(revision 3762)
@@ -0,0 +1,28 @@
+//
+// Breadcrumbs
+// --------------------------------------------------
+
+
+.breadcrumb {
+  padding: $breadcrumb-padding-vertical $breadcrumb-padding-horizontal;
+  margin-bottom: $line-height-computed;
+  list-style: none;
+  background-color: $breadcrumb-bg;
+  border-radius: $border-radius-base;
+
+  > li {
+    display: inline-block;
+
+    + li:before {
+      padding: 0 5px;
+      color: $breadcrumb-color;
+      // [converter] Workaround for https://github.com/sass/libsass/issues/1115
+      $nbsp: "\00a0";
+      content: "#{$breadcrumb-separator}#{$nbsp}"; // Unicode space added since inline-block means non-collapsing white-space
+    }
+  }
+
+  > .active {
+    color: $breadcrumb-active-color;
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_progress-bars.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_progress-bars.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_progress-bars.scss	(revision 3762)
@@ -0,0 +1,87 @@
+//
+// Progress bars
+// --------------------------------------------------
+
+
+// Bar animations
+// -------------------------
+
+// WebKit
+@-webkit-keyframes progress-bar-stripes {
+  from  { background-position: 40px 0; }
+  to    { background-position: 0 0; }
+}
+
+// Spec and IE10+
+@keyframes progress-bar-stripes {
+  from  { background-position: 40px 0; }
+  to    { background-position: 0 0; }
+}
+
+
+// Bar itself
+// -------------------------
+
+// Outer container
+.progress {
+  height: $line-height-computed;
+  margin-bottom: $line-height-computed;
+  overflow: hidden;
+  background-color: $progress-bg;
+  border-radius: $progress-border-radius;
+  @include box-shadow(inset 0 1px 2px rgba(0, 0, 0, .1));
+}
+
+// Bar of progress
+.progress-bar {
+  float: left;
+  width: 0%;
+  height: 100%;
+  font-size: $font-size-small;
+  line-height: $line-height-computed;
+  color: $progress-bar-color;
+  text-align: center;
+  background-color: $progress-bar-bg;
+  @include box-shadow(inset 0 -1px 0 rgba(0, 0, 0, .15));
+  @include transition(width .6s ease);
+}
+
+// Striped bars
+//
+// `.progress-striped .progress-bar` is deprecated as of v3.2.0 in favor of the
+// `.progress-bar-striped` class, which you just add to an existing
+// `.progress-bar`.
+.progress-striped .progress-bar,
+.progress-bar-striped {
+  @include gradient-striped;
+  background-size: 40px 40px;
+}
+
+// Call animation for the active one
+//
+// `.progress.active .progress-bar` is deprecated as of v3.2.0 in favor of the
+// `.progress-bar.active` approach.
+.progress.active .progress-bar,
+.progress-bar.active {
+  @include animation(progress-bar-stripes 2s linear infinite);
+}
+
+
+// Variations
+// -------------------------
+
+.progress-bar-success {
+  @include progress-bar-variant($progress-bar-success-bg);
+}
+
+.progress-bar-info {
+  @include progress-bar-variant($progress-bar-info-bg);
+}
+
+.progress-bar-warning {
+  @include progress-bar-variant($progress-bar-warning-bg);
+}
+
+.progress-bar-danger {
+  @include progress-bar-variant($progress-bar-danger-bg);
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_tooltip.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_tooltip.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_tooltip.scss	(revision 3762)
@@ -0,0 +1,112 @@
+//
+// Tooltips
+// --------------------------------------------------
+
+
+// Base class
+.tooltip {
+  position: absolute;
+  z-index: $zindex-tooltip;
+  display: block;
+  // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.
+  // So reset our font and text properties to avoid inheriting weird values.
+  @include reset-text;
+  font-size: $font-size-small;
+
+  @include opacity(0);
+
+  &.in { @include opacity($tooltip-opacity); }
+  &.top {
+    padding: $tooltip-arrow-width 0;
+    margin-top: -3px;
+  }
+  &.right {
+    padding: 0 $tooltip-arrow-width;
+    margin-left: 3px;
+  }
+  &.bottom {
+    padding: $tooltip-arrow-width 0;
+    margin-top: 3px;
+  }
+  &.left {
+    padding: 0 $tooltip-arrow-width;
+    margin-left: -3px;
+  }
+
+  // Note: Deprecated .top-left, .top-right, .bottom-left, and .bottom-right as of v3.3.1
+  &.top .tooltip-arrow {
+    bottom: 0;
+    left: 50%;
+    margin-left: -$tooltip-arrow-width;
+    border-width: $tooltip-arrow-width $tooltip-arrow-width 0;
+    border-top-color: $tooltip-arrow-color;
+  }
+  &.top-left .tooltip-arrow {
+    right: $tooltip-arrow-width;
+    bottom: 0;
+    margin-bottom: -$tooltip-arrow-width;
+    border-width: $tooltip-arrow-width $tooltip-arrow-width 0;
+    border-top-color: $tooltip-arrow-color;
+  }
+  &.top-right .tooltip-arrow {
+    bottom: 0;
+    left: $tooltip-arrow-width;
+    margin-bottom: -$tooltip-arrow-width;
+    border-width: $tooltip-arrow-width $tooltip-arrow-width 0;
+    border-top-color: $tooltip-arrow-color;
+  }
+  &.right .tooltip-arrow {
+    top: 50%;
+    left: 0;
+    margin-top: -$tooltip-arrow-width;
+    border-width: $tooltip-arrow-width $tooltip-arrow-width $tooltip-arrow-width 0;
+    border-right-color: $tooltip-arrow-color;
+  }
+  &.left .tooltip-arrow {
+    top: 50%;
+    right: 0;
+    margin-top: -$tooltip-arrow-width;
+    border-width: $tooltip-arrow-width 0 $tooltip-arrow-width $tooltip-arrow-width;
+    border-left-color: $tooltip-arrow-color;
+  }
+  &.bottom .tooltip-arrow {
+    top: 0;
+    left: 50%;
+    margin-left: -$tooltip-arrow-width;
+    border-width: 0 $tooltip-arrow-width $tooltip-arrow-width;
+    border-bottom-color: $tooltip-arrow-color;
+  }
+  &.bottom-left .tooltip-arrow {
+    top: 0;
+    right: $tooltip-arrow-width;
+    margin-top: -$tooltip-arrow-width;
+    border-width: 0 $tooltip-arrow-width $tooltip-arrow-width;
+    border-bottom-color: $tooltip-arrow-color;
+  }
+  &.bottom-right .tooltip-arrow {
+    top: 0;
+    left: $tooltip-arrow-width;
+    margin-top: -$tooltip-arrow-width;
+    border-width: 0 $tooltip-arrow-width $tooltip-arrow-width;
+    border-bottom-color: $tooltip-arrow-color;
+  }
+}
+
+// Wrapper for the tooltip content
+.tooltip-inner {
+  max-width: $tooltip-max-width;
+  padding: 3px 8px;
+  color: $tooltip-color;
+  text-align: center;
+  background-color: $tooltip-bg;
+  border-radius: $border-radius-base;
+}
+
+// Arrows
+.tooltip-arrow {
+  position: absolute;
+  width: 0;
+  height: 0;
+  border-color: transparent;
+  border-style: solid;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_pager.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_pager.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_pager.scss	(revision 3762)
@@ -0,0 +1,54 @@
+//
+// Pager pagination
+// --------------------------------------------------
+
+
+.pager {
+  padding-left: 0;
+  margin: $line-height-computed 0;
+  text-align: center;
+  list-style: none;
+  @include clearfix;
+  li {
+    display: inline;
+    > a,
+    > span {
+      display: inline-block;
+      padding: 5px 14px;
+      background-color: $pager-bg;
+      border: 1px solid $pager-border;
+      border-radius: $pager-border-radius;
+    }
+
+    > a:hover,
+    > a:focus {
+      text-decoration: none;
+      background-color: $pager-hover-bg;
+    }
+  }
+
+  .next {
+    > a,
+    > span {
+      float: right;
+    }
+  }
+
+  .previous {
+    > a,
+    > span {
+      float: left;
+    }
+  }
+
+  .disabled {
+    > a,
+    > a:hover,
+    > a:focus,
+    > span {
+      color: $pager-disabled-color;
+      cursor: $cursor-disabled;
+      background-color: $pager-bg;
+    }
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_normalize.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_normalize.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_normalize.scss	(revision 3762)
@@ -0,0 +1,427 @@
+/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
+
+//
+// 1. Set default font family to sans-serif.
+// 2. Prevent iOS and IE text size adjust after device orientation change,
+//    without disabling user zoom.
+//
+
+html {
+  font-family: sans-serif; // 1
+  -ms-text-size-adjust: 100%; // 2
+  -webkit-text-size-adjust: 100%; // 2
+}
+
+//
+// Remove default margin.
+//
+
+body {
+  margin: 0;
+}
+
+// HTML5 display definitions
+// ==========================================================================
+
+//
+// Correct `block` display not defined for any HTML5 element in IE 8/9.
+// Correct `block` display not defined for `details` or `summary` in IE 10/11
+// and Firefox.
+// Correct `block` display not defined for `main` in IE 11.
+//
+
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+main,
+menu,
+nav,
+section,
+summary {
+  display: block;
+}
+
+//
+// 1. Correct `inline-block` display not defined in IE 8/9.
+// 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
+//
+
+audio,
+canvas,
+progress,
+video {
+  display: inline-block; // 1
+  vertical-align: baseline; // 2
+}
+
+//
+// Prevent modern browsers from displaying `audio` without controls.
+// Remove excess height in iOS 5 devices.
+//
+
+audio:not([controls]) {
+  display: none;
+  height: 0;
+}
+
+//
+// Address `[hidden]` styling not present in IE 8/9/10.
+// Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.
+//
+
+[hidden],
+template {
+  display: none;
+}
+
+// Links
+// ==========================================================================
+
+//
+// Remove the gray background color from active links in IE 10.
+//
+
+a {
+  background-color: transparent;
+}
+
+//
+// Improve readability of focused elements when they are also in an
+// active/hover state.
+//
+
+a:active,
+a:hover {
+  outline: 0;
+}
+
+// Text-level semantics
+// ==========================================================================
+
+//
+// 1. Remove the bottom border in Chrome 57- and Firefox 39-.
+// 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
+//
+
+abbr[title] {
+  border-bottom: none; // 1
+  text-decoration: underline; // 2
+  text-decoration: underline dotted; // 2
+}
+
+//
+// Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
+//
+
+b,
+strong {
+  font-weight: bold;
+}
+
+//
+// Address styling not present in Safari and Chrome.
+//
+
+dfn {
+  font-style: italic;
+}
+
+//
+// Address variable `h1` font-size and margin within `section` and `article`
+// contexts in Firefox 4+, Safari, and Chrome.
+//
+
+h1 {
+  font-size: 2em;
+  margin: 0.67em 0;
+}
+
+//
+// Address styling not present in IE 8/9.
+//
+
+mark {
+  background: #ff0;
+  color: #000;
+}
+
+//
+// Address inconsistent and variable font size in all browsers.
+//
+
+small {
+  font-size: 80%;
+}
+
+//
+// Prevent `sub` and `sup` affecting `line-height` in all browsers.
+//
+
+sub,
+sup {
+  font-size: 75%;
+  line-height: 0;
+  position: relative;
+  vertical-align: baseline;
+}
+
+sup {
+  top: -0.5em;
+}
+
+sub {
+  bottom: -0.25em;
+}
+
+// Embedded content
+// ==========================================================================
+
+//
+// Remove border when inside `a` element in IE 8/9/10.
+//
+
+img {
+  border: 0;
+}
+
+//
+// Correct overflow not hidden in IE 9/10/11.
+//
+
+svg:not(:root) {
+  overflow: hidden;
+}
+
+// Grouping content
+// ==========================================================================
+
+//
+// Address margin not present in IE 8/9 and Safari.
+//
+
+figure {
+  margin: 1em 40px;
+}
+
+//
+// Address differences between Firefox and other browsers.
+//
+
+hr {
+  box-sizing: content-box;
+  height: 0;
+}
+
+//
+// Contain overflow in all browsers.
+//
+
+pre {
+  overflow: auto;
+}
+
+//
+// Address odd `em`-unit font size rendering in all browsers.
+//
+
+code,
+kbd,
+pre,
+samp {
+  font-family: monospace, monospace;
+  font-size: 1em;
+}
+
+// Forms
+// ==========================================================================
+
+//
+// Known limitation: by default, Chrome and Safari on OS X allow very limited
+// styling of `select`, unless a `border` property is set.
+//
+
+//
+// 1. Correct color not being inherited.
+//    Known issue: affects color of disabled elements.
+// 2. Correct font properties not being inherited.
+// 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
+//
+
+button,
+input,
+optgroup,
+select,
+textarea {
+  color: inherit; // 1
+  font: inherit; // 2
+  margin: 0; // 3
+}
+
+//
+// Address `overflow` set to `hidden` in IE 8/9/10/11.
+//
+
+button {
+  overflow: visible;
+}
+
+//
+// Address inconsistent `text-transform` inheritance for `button` and `select`.
+// All other form control elements do not inherit `text-transform` values.
+// Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
+// Correct `select` style inheritance in Firefox.
+//
+
+button,
+select {
+  text-transform: none;
+}
+
+//
+// 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
+//    and `video` controls.
+// 2. Correct inability to style clickable `input` types in iOS.
+// 3. Improve usability and consistency of cursor style between image-type
+//    `input` and others.
+//
+
+button,
+html input[type="button"], // 1
+input[type="reset"],
+input[type="submit"] {
+  -webkit-appearance: button; // 2
+  cursor: pointer; // 3
+}
+
+//
+// Re-set default cursor for disabled elements.
+//
+
+button[disabled],
+html input[disabled] {
+  cursor: default;
+}
+
+//
+// Remove inner padding and border in Firefox 4+.
+//
+
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+  border: 0;
+  padding: 0;
+}
+
+//
+// Address Firefox 4+ setting `line-height` on `input` using `!important` in
+// the UA stylesheet.
+//
+
+input {
+  line-height: normal;
+}
+
+//
+// It's recommended that you don't attempt to style these elements.
+// Firefox's implementation doesn't respect box-sizing, padding, or width.
+//
+// 1. Address box sizing set to `content-box` in IE 8/9/10.
+// 2. Remove excess padding in IE 8/9/10.
+//
+
+input[type="checkbox"],
+input[type="radio"] {
+  box-sizing: border-box; // 1
+  padding: 0; // 2
+}
+
+//
+// Fix the cursor style for Chrome's increment/decrement buttons. For certain
+// `font-size` values of the `input`, it causes the cursor style of the
+// decrement button to change from `default` to `text`.
+//
+
+input[type="number"]::-webkit-inner-spin-button,
+input[type="number"]::-webkit-outer-spin-button {
+  height: auto;
+}
+
+//
+// 1. Address `appearance` set to `searchfield` in Safari and Chrome.
+// 2. Address `box-sizing` set to `border-box` in Safari and Chrome.
+//
+
+input[type="search"] {
+  -webkit-appearance: textfield; // 1
+  box-sizing: content-box; //2
+}
+
+//
+// Remove inner padding and search cancel button in Safari and Chrome on OS X.
+// Safari (but not Chrome) clips the cancel button when the search input has
+// padding (and `textfield` appearance).
+//
+
+input[type="search"]::-webkit-search-cancel-button,
+input[type="search"]::-webkit-search-decoration {
+  -webkit-appearance: none;
+}
+
+//
+// Define consistent border, margin, and padding.
+//
+
+fieldset {
+  border: 1px solid #c0c0c0;
+  margin: 0 2px;
+  padding: 0.35em 0.625em 0.75em;
+}
+
+//
+// 1. Correct `color` not being inherited in IE 8/9/10/11.
+// 2. Remove padding so people aren't caught out if they zero out fieldsets.
+//
+
+legend {
+  border: 0; // 1
+  padding: 0; // 2
+}
+
+//
+// Remove default vertical scrollbar in IE 8/9/10/11.
+//
+
+textarea {
+  overflow: auto;
+}
+
+//
+// Don't inherit the `font-weight` (applied by a rule above).
+// NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
+//
+
+optgroup {
+  font-weight: bold;
+}
+
+// Tables
+// ==========================================================================
+
+//
+// Remove most spacing between table cells.
+//
+
+table {
+  border-collapse: collapse;
+  border-spacing: 0;
+}
+
+td,
+th {
+  padding: 0;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_component-animations.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_component-animations.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_component-animations.scss	(revision 3762)
@@ -0,0 +1,38 @@
+//
+// Component animations
+// --------------------------------------------------
+
+// Heads up!
+//
+// We don't use the `.opacity()` mixin here since it causes a bug with text
+// fields in IE7-8. Source: https://github.com/twbs/bootstrap/pull/3552.
+
+.fade {
+  opacity: 0;
+  @include transition(opacity .15s linear);
+
+  &.in {
+    opacity: 1;
+  }
+}
+
+.collapse {
+  display: none;
+
+  &.in      { display: block; }
+  // [converter] extracted tr&.in to tr.collapse.in
+  // [converter] extracted tbody&.in to tbody.collapse.in
+}
+
+tr.collapse.in    { display: table-row; }
+
+tbody.collapse.in { display: table-row-group; }
+
+.collapsing {
+  position: relative;
+  height: 0;
+  overflow: hidden;
+  @include transition-property(height, visibility);
+  @include transition-duration(.35s);
+  @include transition-timing-function(ease);
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_labels.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_labels.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_labels.scss	(revision 3762)
@@ -0,0 +1,66 @@
+//
+// Labels
+// --------------------------------------------------
+
+.label {
+  display: inline;
+  padding: .2em .6em .3em;
+  font-size: 75%;
+  font-weight: 700;
+  line-height: 1;
+  color: $label-color;
+  text-align: center;
+  white-space: nowrap;
+  vertical-align: baseline;
+  border-radius: .25em;
+
+  // [converter] extracted a& to a.label
+
+  // Empty labels collapse automatically (not available in IE8)
+  &:empty {
+    display: none;
+  }
+
+  // Quick fix for labels in buttons
+  .btn & {
+    position: relative;
+    top: -1px;
+  }
+}
+
+// Add hover effects, but only for links
+a.label {
+  &:hover,
+  &:focus {
+    color: $label-link-hover-color;
+    text-decoration: none;
+    cursor: pointer;
+  }
+}
+
+// Colors
+// Contextual variations (linked labels get darker on :hover)
+
+.label-default {
+  @include label-variant($label-default-bg);
+}
+
+.label-primary {
+  @include label-variant($label-primary-bg);
+}
+
+.label-success {
+  @include label-variant($label-success-bg);
+}
+
+.label-info {
+  @include label-variant($label-info-bg);
+}
+
+.label-warning {
+  @include label-variant($label-warning-bg);
+}
+
+.label-danger {
+  @include label-variant($label-danger-bg);
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_close.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_close.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_close.scss	(revision 3762)
@@ -0,0 +1,37 @@
+//
+// Close icons
+// --------------------------------------------------
+
+
+.close {
+  float: right;
+  font-size: ($font-size-base * 1.5);
+  font-weight: $close-font-weight;
+  line-height: 1;
+  color: $close-color;
+  text-shadow: $close-text-shadow;
+  @include opacity(.2);
+
+  &:hover,
+  &:focus {
+    color: $close-color;
+    text-decoration: none;
+    cursor: pointer;
+    @include opacity(.5);
+  }
+
+  // [converter] extracted button& to button.close
+}
+
+// Additional properties for button version
+// iOS requires the button element instead of an anchor tag.
+// If you want the anchor version, it requires `href="#"`.
+// See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile
+button.close {
+  padding: 0;
+  cursor: pointer;
+  background: transparent;
+  border: 0;
+  -webkit-appearance: none;
+  appearance: none;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_responsive-utilities.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_responsive-utilities.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_responsive-utilities.scss	(revision 3762)
@@ -0,0 +1,179 @@
+//
+// Responsive: Utility classes
+// --------------------------------------------------
+
+
+// IE10 in Windows (Phone) 8
+//
+// Support for responsive views via media queries is kind of borked in IE10, for
+// Surface/desktop in split view and for Windows Phone 8. This particular fix
+// must be accompanied by a snippet of JavaScript to sniff the user agent and
+// apply some conditional CSS to *only* the Surface/desktop Windows 8. Look at
+// our Getting Started page for more information on this bug.
+//
+// For more information, see the following:
+//
+// Issue: https://github.com/twbs/bootstrap/issues/10497
+// Docs: https://getbootstrap.com/docs/3.4/getting-started/#support-ie10-width
+// Source: https://timkadlec.com/2013/01/windows-phone-8-and-device-width/
+// Source: https://timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design/
+
+@at-root {
+  @-ms-viewport {
+    width: device-width;
+  }
+}
+
+
+// Visibility utilities
+// Note: Deprecated .visible-xs, .visible-sm, .visible-md, and .visible-lg as of v3.2.0
+
+@include responsive-invisibility('.visible-xs');
+@include responsive-invisibility('.visible-sm');
+@include responsive-invisibility('.visible-md');
+@include responsive-invisibility('.visible-lg');
+
+.visible-xs-block,
+.visible-xs-inline,
+.visible-xs-inline-block,
+.visible-sm-block,
+.visible-sm-inline,
+.visible-sm-inline-block,
+.visible-md-block,
+.visible-md-inline,
+.visible-md-inline-block,
+.visible-lg-block,
+.visible-lg-inline,
+.visible-lg-inline-block {
+  display: none !important;
+}
+
+@media (max-width: $screen-xs-max) {
+  @include responsive-visibility('.visible-xs');
+}
+.visible-xs-block {
+  @media (max-width: $screen-xs-max) {
+    display: block !important;
+  }
+}
+.visible-xs-inline {
+  @media (max-width: $screen-xs-max) {
+    display: inline !important;
+  }
+}
+.visible-xs-inline-block {
+  @media (max-width: $screen-xs-max) {
+    display: inline-block !important;
+  }
+}
+
+@media (min-width: $screen-sm-min) and (max-width: $screen-sm-max) {
+  @include responsive-visibility('.visible-sm');
+}
+.visible-sm-block {
+  @media (min-width: $screen-sm-min) and (max-width: $screen-sm-max) {
+    display: block !important;
+  }
+}
+.visible-sm-inline {
+  @media (min-width: $screen-sm-min) and (max-width: $screen-sm-max) {
+    display: inline !important;
+  }
+}
+.visible-sm-inline-block {
+  @media (min-width: $screen-sm-min) and (max-width: $screen-sm-max) {
+    display: inline-block !important;
+  }
+}
+
+@media (min-width: $screen-md-min) and (max-width: $screen-md-max) {
+  @include responsive-visibility('.visible-md');
+}
+.visible-md-block {
+  @media (min-width: $screen-md-min) and (max-width: $screen-md-max) {
+    display: block !important;
+  }
+}
+.visible-md-inline {
+  @media (min-width: $screen-md-min) and (max-width: $screen-md-max) {
+    display: inline !important;
+  }
+}
+.visible-md-inline-block {
+  @media (min-width: $screen-md-min) and (max-width: $screen-md-max) {
+    display: inline-block !important;
+  }
+}
+
+@media (min-width: $screen-lg-min) {
+  @include responsive-visibility('.visible-lg');
+}
+.visible-lg-block {
+  @media (min-width: $screen-lg-min) {
+    display: block !important;
+  }
+}
+.visible-lg-inline {
+  @media (min-width: $screen-lg-min) {
+    display: inline !important;
+  }
+}
+.visible-lg-inline-block {
+  @media (min-width: $screen-lg-min) {
+    display: inline-block !important;
+  }
+}
+
+@media (max-width: $screen-xs-max) {
+  @include responsive-invisibility('.hidden-xs');
+}
+
+@media (min-width: $screen-sm-min) and (max-width: $screen-sm-max) {
+  @include responsive-invisibility('.hidden-sm');
+}
+
+@media (min-width: $screen-md-min) and (max-width: $screen-md-max) {
+  @include responsive-invisibility('.hidden-md');
+}
+
+@media (min-width: $screen-lg-min) {
+  @include responsive-invisibility('.hidden-lg');
+}
+
+
+// Print utilities
+//
+// Media queries are placed on the inside to be mixin-friendly.
+
+// Note: Deprecated .visible-print as of v3.2.0
+
+@include responsive-invisibility('.visible-print');
+
+@media print {
+  @include responsive-visibility('.visible-print');
+}
+.visible-print-block {
+  display: none !important;
+
+  @media print {
+    display: block !important;
+  }
+}
+.visible-print-inline {
+  display: none !important;
+
+  @media print {
+    display: inline !important;
+  }
+}
+.visible-print-inline-block {
+  display: none !important;
+
+  @media print {
+    display: inline-block !important;
+  }
+}
+
+@media print {
+  @include responsive-invisibility('.hidden-print');
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_thumbnails.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_thumbnails.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_thumbnails.scss	(revision 3762)
@@ -0,0 +1,38 @@
+//
+// Thumbnails
+// --------------------------------------------------
+
+
+// Mixin and adjust the regular image class
+.thumbnail {
+  display: block;
+  padding: $thumbnail-padding;
+  margin-bottom: $line-height-computed;
+  line-height: $line-height-base;
+  background-color: $thumbnail-bg;
+  border: 1px solid $thumbnail-border;
+  border-radius: $thumbnail-border-radius;
+  @include transition(border .2s ease-in-out);
+
+  > img,
+  a > img {
+    @include img-responsive;
+    margin-right: auto;
+    margin-left: auto;
+  }
+
+  // [converter] extracted a&:hover, a&:focus, a&.active to a.thumbnail:hover, a.thumbnail:focus, a.thumbnail.active
+
+  // Image captions
+  .caption {
+    padding: $thumbnail-caption-padding;
+    color: $thumbnail-caption-color;
+  }
+}
+
+// Add a hover state for linked versions only
+a.thumbnail:hover,
+a.thumbnail:focus,
+a.thumbnail.active {
+  border-color: $link-color;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_variables.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_variables.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_variables.scss	(revision 3762)
@@ -0,0 +1,887 @@
+$bootstrap-sass-asset-helper: false !default;
+//
+// Variables
+// --------------------------------------------------
+
+
+//== Colors
+//
+//## Gray and brand colors for use across Bootstrap.
+
+$gray-base:              #000 !default;
+$gray-darker:            lighten($gray-base, 13.5%) !default; // #222
+$gray-dark:              lighten($gray-base, 20%) !default;   // #333
+$gray:                   lighten($gray-base, 33.5%) !default; // #555
+$gray-light:             lighten($gray-base, 46.7%) !default; // #777
+$gray-lighter:           lighten($gray-base, 93.5%) !default; // #eee
+
+$brand-primary:         darken(#428bca, 6.5%) !default; // #337ab7
+$brand-success:         #5cb85c !default;
+$brand-info:            #5bc0de !default;
+$brand-warning:         #f0ad4e !default;
+$brand-danger:          #d9534f !default;
+
+
+//== Scaffolding
+//
+//## Settings for some of the most global styles.
+
+//** Background color for `<body>`.
+$body-bg:               #fff !default;
+//** Global text color on `<body>`.
+$text-color:            $gray-dark !default;
+
+// BS3 source uses a lot of darken()/lighten() which doesn't work well
+// for both dark/light themes, so here we override their meaning to be
+// * darken(): pull $color towards $gray-base by $percent
+// * lighten(): pull $color towards $white by $percent
+// (note that bs3_base_theme_colors() sets $white to be the bg color)
+$white: $body-bg !default;
+@function darken($color, $percent) {
+    @return mix($gray-base, $color, $percent);
+}
+@function lighten($color, $percent) {
+    @return mix($white, $color, $percent);
+}
+
+//** Global textual link color.
+$link-color:            $brand-primary !default;
+//** Link hover color set via `darken()` function.
+$link-hover-color:      darken($link-color, 15%) !default;
+//** Link hover decoration.
+$link-hover-decoration: underline !default;
+
+
+//== Typography
+//
+//## Font, line-height, and color for body text, headings, and more.
+
+$font-family-sans-serif:  "Helvetica Neue", Helvetica, Arial, sans-serif !default;
+$font-family-serif:       Georgia, "Times New Roman", Times, serif !default;
+//** Default monospace fonts for `<code>`, `<kbd>`, and `<pre>`.
+$font-family-monospace:   Menlo, Monaco, Consolas, "Courier New", monospace !default;
+$font-family-base:        $font-family-sans-serif !default;
+
+$font-size-base:          14px !default;
+$font-size-large:         ceil(($font-size-base * 1.25)) !default; // ~18px
+$font-size-small:         ceil(($font-size-base * .85)) !default; // ~12px
+
+$font-size-h1:            floor(($font-size-base * 2.6)) !default; // ~36px
+$font-size-h2:            floor(($font-size-base * 2.15)) !default; // ~30px
+$font-size-h3:            ceil(($font-size-base * 1.7)) !default; // ~24px
+$font-size-h4:            ceil(($font-size-base * 1.25)) !default; // ~18px
+$font-size-h5:            $font-size-base !default;
+$font-size-h6:            ceil(($font-size-base * .85)) !default; // ~12px
+
+//** Unit-less `line-height` for use in components like buttons.
+$line-height-base:        1.428571429 !default; // 20/14
+//** Computed "line-height" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.
+$line-height-computed:    floor(($font-size-base * $line-height-base)) !default; // ~20px
+
+//** By default, this inherits from the `<body>`.
+$headings-font-family:    inherit !default;
+$headings-font-weight:    500 !default;
+$headings-line-height:    1.1 !default;
+$headings-color:          inherit !default;
+
+
+//== Iconography
+//
+//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.
+
+//** Load fonts from this directory.
+
+// [converter] If $bootstrap-sass-asset-helper if used, provide path relative to the assets load path.
+// [converter] This is because some asset helpers, such as Sprockets, do not work with file-relative paths.
+$icon-font-path: if($bootstrap-sass-asset-helper, "bootstrap/", "../fonts/bootstrap/") !default;
+
+//** File name for all font files.
+$icon-font-name:          "glyphicons-halflings-regular" !default;
+//** Element ID within SVG icon file.
+$icon-font-svg-id:        "glyphicons_halflingsregular" !default;
+
+
+//== Components
+//
+//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).
+
+$padding-base-vertical:     6px !default;
+$padding-base-horizontal:   12px !default;
+
+$padding-large-vertical:    10px !default;
+$padding-large-horizontal:  16px !default;
+
+$padding-small-vertical:    5px !default;
+$padding-small-horizontal:  10px !default;
+
+$padding-xs-vertical:       1px !default;
+$padding-xs-horizontal:     5px !default;
+
+$line-height-large:         1.3333333 !default; // extra decimals for Win 8.1 Chrome
+$line-height-small:         1.5 !default;
+
+$border-radius-base:        4px !default;
+$border-radius-large:       6px !default;
+$border-radius-small:       3px !default;
+
+//** Global background color for active items (e.g., navs or dropdowns).
+$component-active-bg:       $brand-primary !default;
+//** Global color for active items (e.g., navs or dropdowns).
+$component-active-color:    color-contrast($component-active-bg) !default;
+
+//** Width of the `border` for generating carets that indicate dropdowns.
+$caret-width-base:          4px !default;
+//** Carets increase slightly in size for larger components.
+$caret-width-large:         5px !default;
+
+
+//== Tables
+//
+//## Customizes the `.table` component with basic values, each used across all table variations.
+
+//** Padding for `<th>`s and `<td>`s.
+$table-cell-padding:            8px !default;
+//** Padding for cells in `.table-condensed`.
+$table-condensed-cell-padding:  5px !default;
+
+//** Default background color used for all tables.
+$table-bg:                      transparent !default;
+//** Background color used for `.table-striped`.
+$table-bg-accent:               #f9f9f9 !default;
+//** Background color used for `.table-hover`.
+$table-bg-hover:                #f5f5f5 !default;
+$table-bg-active:               $table-bg-hover !default;
+
+//** Border color for table and cell borders.
+$table-border-color:            #ddd !default;
+
+
+//== Buttons
+//
+//## For each of Bootstrap's buttons, define text, background and border color.
+
+$btn-font-weight:                normal !default;
+
+$btn-default-color:              #333 !default;
+$btn-default-bg:                 #fff !default;
+$btn-default-border:             #ccc !default;
+
+$btn-primary-color:              #fff !default;
+$btn-primary-bg:                 $brand-primary !default;
+$btn-primary-border:             darken($btn-primary-bg, 5%) !default;
+
+$btn-success-color:              #fff !default;
+$btn-success-bg:                 $brand-success !default;
+$btn-success-border:             darken($btn-success-bg, 5%) !default;
+
+$btn-info-color:                 #fff !default;
+$btn-info-bg:                    $brand-info !default;
+$btn-info-border:                darken($btn-info-bg, 5%) !default;
+
+$btn-warning-color:              #fff !default;
+$btn-warning-bg:                 $brand-warning !default;
+$btn-warning-border:             darken($btn-warning-bg, 5%) !default;
+
+$btn-danger-color:               #fff !default;
+$btn-danger-bg:                  $brand-danger !default;
+$btn-danger-border:              darken($btn-danger-bg, 5%) !default;
+
+$btn-link-disabled-color:        $gray-light !default;
+
+// Allows for customizing button radius independently from global border radius
+$btn-border-radius-base:         $border-radius-base !default;
+$btn-border-radius-large:        $border-radius-large !default;
+$btn-border-radius-small:        $border-radius-small !default;
+
+
+//== Forms
+//
+//##
+
+//** `<input>` background color
+$input-bg:                       #fff !default;
+//** `<input disabled>` background color
+$input-bg-disabled:              $gray-lighter !default;
+
+//** Text color for `<input>`s
+$input-color:                    $gray !default;
+//** `<input>` border color
+$input-border:                   #ccc !default;
+
+// TODO: Rename `$input-border-radius` to `$input-border-radius-base` in v4
+//** Default `.form-control` border radius
+// This has no effect on `<select>`s in some browsers, due to the limited stylability of `<select>`s in CSS.
+$input-border-radius:            $border-radius-base !default;
+//** Large `.form-control` border radius
+$input-border-radius-large:      $border-radius-large !default;
+//** Small `.form-control` border radius
+$input-border-radius-small:      $border-radius-small !default;
+
+//** Border color for inputs on focus
+$input-border-focus:             rgba($component-active-bg, .25) !default;
+
+//** Placeholder text color
+$input-color-placeholder:        #999 !default;
+
+//** Default `.form-control` height
+$input-height-base:              ($line-height-computed + ($padding-base-vertical * 2) + 2) !default;
+//** Large `.form-control` height
+$input-height-large:             (ceil($font-size-large * $line-height-large) + ($padding-large-vertical * 2) + 2) !default;
+//** Small `.form-control` height
+$input-height-small:             (floor($font-size-small * $line-height-small) + ($padding-small-vertical * 2) + 2) !default;
+
+//** `.form-group` margin
+$form-group-margin-bottom:       15px !default;
+
+$legend-color:                   $gray-dark !default;
+$legend-border-color:            #e5e5e5 !default;
+
+//** Background color for textual input addons
+$input-group-addon-bg:           $gray-lighter !default;
+//** Border color for textual input addons
+$input-group-addon-border-color: $input-border !default;
+
+//** Disabled cursor for form controls and buttons.
+$cursor-disabled:                not-allowed !default;
+
+
+//== Dropdowns
+//
+//## Dropdown menu container and contents.
+
+//** Background for the dropdown menu.
+$dropdown-bg:                    #fff !default;
+//** Dropdown menu `border-color`.
+$dropdown-border:                rgba($gray-base, .15) !default;
+//** Dropdown menu `border-color` **for IE8**.
+$dropdown-fallback-border:       #ccc !default;
+//** Divider color for between dropdown items.
+$dropdown-divider-bg:            #e5e5e5 !default;
+
+//** Dropdown link text color.
+$dropdown-link-color:            $gray-dark !default;
+//** Hover color for dropdown links.
+$dropdown-link-hover-color:      darken($gray-dark, 5%) !default;
+//** Hover background for dropdown links.
+$dropdown-link-hover-bg:         #f5f5f5 !default;
+
+//** Active dropdown menu item background color.
+$dropdown-link-active-bg:        $component-active-bg !default;
+//** Active dropdown menu item text color.
+$dropdown-link-active-color:     color-contrast($dropdown-link-active-bg, $component-active-color) !default;
+
+//** Disabled dropdown menu item background color.
+$dropdown-link-disabled-color:   $gray-light !default;
+
+//** Text color for headers within dropdown menus.
+$dropdown-header-color:          $gray-light !default;
+
+//** Deprecated `$dropdown-caret-color` as of v3.1.0
+$dropdown-caret-color:           #000 !default;
+
+
+//-- Z-index master list
+//
+// Warning: Avoid customizing these values. They're used for a bird's eye view
+// of components dependent on the z-axis and are designed to all work together.
+//
+// Note: These variables are not generated into the Customizer.
+
+$zindex-navbar:            1000 !default;
+$zindex-dropdown:          1000 !default;
+$zindex-popover:           1060 !default;
+$zindex-tooltip:           1070 !default;
+$zindex-navbar-fixed:      1030 !default;
+$zindex-modal-background:  1040 !default;
+$zindex-modal:             1050 !default;
+
+
+//== Media queries breakpoints
+//
+//## Define the breakpoints at which your layout will change, adapting to different screen sizes.
+
+// Extra small screen / phone
+//** Deprecated `$screen-xs` as of v3.0.1
+$screen-xs:                  480px !default;
+//** Deprecated `$screen-xs-min` as of v3.2.0
+$screen-xs-min:              $screen-xs !default;
+//** Deprecated `$screen-phone` as of v3.0.1
+$screen-phone:               $screen-xs-min !default;
+
+// Small screen / tablet
+//** Deprecated `$screen-sm` as of v3.0.1
+$screen-sm:                  768px !default;
+$screen-sm-min:              $screen-sm !default;
+//** Deprecated `$screen-tablet` as of v3.0.1
+$screen-tablet:              $screen-sm-min !default;
+
+// Medium screen / desktop
+//** Deprecated `$screen-md` as of v3.0.1
+$screen-md:                  992px !default;
+$screen-md-min:              $screen-md !default;
+//** Deprecated `$screen-desktop` as of v3.0.1
+$screen-desktop:             $screen-md-min !default;
+
+// Large screen / wide desktop
+//** Deprecated `$screen-lg` as of v3.0.1
+$screen-lg:                  1200px !default;
+$screen-lg-min:              $screen-lg !default;
+//** Deprecated `$screen-lg-desktop` as of v3.0.1
+$screen-lg-desktop:          $screen-lg-min !default;
+
+// So media queries don't overlap when required, provide a maximum
+$screen-xs-max:              ($screen-sm-min - 1) !default;
+$screen-sm-max:              ($screen-md-min - 1) !default;
+$screen-md-max:              ($screen-lg-min - 1) !default;
+
+
+//== Grid system
+//
+//## Define your custom responsive grid.
+
+//** Number of columns in the grid.
+$grid-columns:              12 !default;
+//** Padding between columns. Gets divided in half for the left and right.
+$grid-gutter-width:         30px !default;
+// Navbar collapse
+//** Point at which the navbar becomes uncollapsed.
+$grid-float-breakpoint:     $screen-sm-min !default;
+//** Point at which the navbar begins collapsing.
+$grid-float-breakpoint-max: ($grid-float-breakpoint - 1) !default;
+
+
+//== Container sizes
+//
+//## Define the maximum width of `.container` for different screen sizes.
+
+// Small screen / tablet
+$container-tablet:             (720px + $grid-gutter-width) !default;
+//** For `$screen-sm-min` and up.
+$container-sm:                 $container-tablet !default;
+
+// Medium screen / desktop
+$container-desktop:            (940px + $grid-gutter-width) !default;
+//** For `$screen-md-min` and up.
+$container-md:                 $container-desktop !default;
+
+// Large screen / wide desktop
+$container-large-desktop:      (1140px + $grid-gutter-width) !default;
+//** For `$screen-lg-min` and up.
+$container-lg:                 $container-large-desktop !default;
+
+
+//== Navbar
+//
+//##
+
+// Basics of a navbar
+$navbar-height:                    50px !default;
+$navbar-margin-bottom:             $line-height-computed !default;
+$navbar-border-radius:             $border-radius-base !default;
+$navbar-padding-horizontal:        floor(($grid-gutter-width / 2)) !default;
+$navbar-padding-vertical:          (($navbar-height - $line-height-computed) / 2) !default;
+$navbar-collapse-max-height:       340px !default;
+
+$navbar-default-color:             #777 !default;
+$navbar-default-bg:                #f8f8f8 !default;
+$navbar-default-border:            darken($navbar-default-bg, 6.5%) !default;
+
+// Navbar links
+$navbar-default-link-color:                #777 !default;
+$navbar-default-link-hover-color:          #333 !default;
+$navbar-default-link-hover-bg:             transparent !default;
+$navbar-default-link-active-color:         #555 !default;
+$navbar-default-link-active-bg:            darken($navbar-default-bg, 6.5%) !default;
+$navbar-default-link-disabled-color:       #ccc !default;
+$navbar-default-link-disabled-bg:          transparent !default;
+
+// Navbar brand label
+$navbar-default-brand-color:               $navbar-default-link-color !default;
+$navbar-default-brand-hover-color:         darken($navbar-default-brand-color, 10%) !default;
+$navbar-default-brand-hover-bg:            transparent !default;
+
+// Navbar toggle
+$navbar-default-toggle-hover-bg:           #ddd !default;
+$navbar-default-toggle-icon-bar-bg:        #888 !default;
+$navbar-default-toggle-border-color:       #ddd !default;
+
+
+//=== Inverted navbar
+// Reset inverted navbar basics
+$navbar-inverse-color:                      lighten($gray-light, 15%) !default;
+$navbar-inverse-bg:                         #222 !default;
+$navbar-inverse-border:                     darken($navbar-inverse-bg, 10%) !default;
+
+// Inverted navbar links
+$navbar-inverse-link-color:                 lighten($gray-light, 15%) !default;
+$navbar-inverse-link-hover-color:           #fff !default;
+$navbar-inverse-link-hover-bg:              transparent !default;
+$navbar-inverse-link-active-color:          $navbar-inverse-link-hover-color !default;
+$navbar-inverse-link-active-bg:             darken($navbar-inverse-bg, 10%) !default;
+$navbar-inverse-link-disabled-color:        #444 !default;
+$navbar-inverse-link-disabled-bg:           transparent !default;
+
+// Inverted navbar brand label
+$navbar-inverse-brand-color:                $navbar-inverse-link-color !default;
+$navbar-inverse-brand-hover-color:          #fff !default;
+$navbar-inverse-brand-hover-bg:             transparent !default;
+
+// Inverted navbar toggle
+$navbar-inverse-toggle-hover-bg:            #333 !default;
+$navbar-inverse-toggle-icon-bar-bg:         #fff !default;
+$navbar-inverse-toggle-border-color:        #333 !default;
+
+
+//== Navs
+//
+//##
+
+//=== Shared nav styles
+$nav-link-padding:                          10px 15px !default;
+$nav-link-hover-bg:                         $gray-lighter !default;
+
+$nav-disabled-link-color:                   $gray-light !default;
+$nav-disabled-link-hover-color:             $gray-light !default;
+
+//== Tabs
+$nav-tabs-border-color:                     #ddd !default;
+
+$nav-tabs-link-hover-border-color:          $gray-lighter !default;
+
+$nav-tabs-active-link-hover-bg:             $body-bg !default;
+$nav-tabs-active-link-hover-color:          color-contrast($nav-tabs-active-link-hover-bg, $gray) !default;
+$nav-tabs-active-link-hover-border-color:   #ddd !default;
+
+$nav-tabs-justified-link-border-color:            #ddd !default;
+$nav-tabs-justified-active-link-border-color:     $body-bg !default;
+
+//== Pills
+$nav-pills-border-radius:                   $border-radius-base !default;
+$nav-pills-active-link-hover-bg:            $component-active-bg !default;
+$nav-pills-active-link-hover-color:         color-contrast($nav-pills-active-link-hover-bg, $component-active-color) !default;
+
+
+//== Pagination
+//
+//##
+
+$pagination-color:                     $link-color !default;
+$pagination-bg:                        #fff !default;
+$pagination-border:                    #ddd !default;
+
+$pagination-hover-color:               $link-hover-color !default;
+$pagination-hover-bg:                  $gray-lighter !default;
+$pagination-hover-border:              #ddd !default;
+
+$pagination-active-color:              #fff !default;
+$pagination-active-bg:                 $brand-primary !default;
+$pagination-active-border:             $brand-primary !default;
+
+$pagination-disabled-color:            $gray-light !default;
+$pagination-disabled-bg:               #fff !default;
+$pagination-disabled-border:           #ddd !default;
+
+
+//== Pager
+//
+//##
+
+$pager-bg:                             $pagination-bg !default;
+$pager-border:                         $pagination-border !default;
+$pager-border-radius:                  15px !default;
+
+$pager-hover-bg:                       $pagination-hover-bg !default;
+
+$pager-active-bg:                      $pagination-active-bg !default;
+$pager-active-color:                   $pagination-active-color !default;
+
+$pager-disabled-color:                 $pagination-disabled-color !default;
+
+
+//== Jumbotron
+//
+//##
+
+$jumbotron-padding:              30px !default;
+$jumbotron-color:                inherit !default;
+$jumbotron-bg:                   $gray-lighter !default;
+$jumbotron-heading-color:        inherit !default;
+$jumbotron-font-size:            ceil(($font-size-base * 1.5)) !default;
+$jumbotron-heading-font-size:    ceil(($font-size-base * 4.5)) !default;
+
+
+//== Form states and alerts
+//
+//## Define colors for form feedback states and, by default, alerts.
+
+$state-success-text:             mix($gray-base, $brand-success, 33%) !default;
+$state-success-bg:               mix($body-bg, $brand-success, 80%) !default;
+$state-success-border:           darken(adjust-hue($state-success-bg, -10), 5%) !default;
+
+$state-info-text:                mix($gray-base, $brand-info, 35%) !default;
+$state-info-bg:                  mix($body-bg, $brand-info, 80%) !default;
+$state-info-border:              darken(adjust-hue($state-info-bg, -10), 7%) !default;
+
+$state-warning-text:             mix($gray-base, $brand-warning, 40%) !default;
+$state-warning-bg:               mix($body-bg, $brand-warning, 80%) !default;
+$state-warning-border:           darken(adjust-hue($state-warning-bg, -10), 5%) !default;
+
+$state-danger-text:              mix($gray-base, $brand-danger, 20%) !default;
+$state-danger-bg:                mix($body-bg, $brand-danger, 80%) !default;
+$state-danger-border:            darken(adjust-hue($state-danger-bg, -10), 5%) !default;
+
+
+//== Tooltips
+//
+//##
+
+//** Tooltip max width
+$tooltip-max-width:           200px !default;
+//** Tooltip text color
+$tooltip-color:               #fff !default;
+//** Tooltip background color
+$tooltip-bg:                  #000 !default;
+$tooltip-opacity:             .9 !default;
+
+//** Tooltip arrow width
+$tooltip-arrow-width:         5px !default;
+//** Tooltip arrow color
+$tooltip-arrow-color:         $tooltip-bg !default;
+
+
+//== Popovers
+//
+//##
+
+//** Popover body background color
+$popover-bg:                          #fff !default;
+//** Popover maximum width
+$popover-max-width:                   276px !default;
+//** Popover border color
+$popover-border-color:                rgba($gray-base, .2) !default;
+//** Popover fallback border color
+$popover-fallback-border-color:       #ccc !default;
+
+//** Popover title background color
+$popover-title-bg:                    darken($popover-bg, 3%) !default;
+
+//** Popover arrow width
+$popover-arrow-width:                 10px !default;
+//** Popover arrow color
+$popover-arrow-color:                 $popover-bg !default;
+
+//** Popover outer arrow width
+$popover-arrow-outer-width:           ($popover-arrow-width + 1) !default;
+//** Popover outer arrow color
+$popover-arrow-outer-color:           fade_in($popover-border-color, 0.05) !default;
+//** Popover outer arrow fallback color
+$popover-arrow-outer-fallback-color:  darken($popover-fallback-border-color, 20%) !default;
+
+
+//== Labels
+//
+//##
+
+//** Default label background color
+$label-default-bg:            $gray-light !default;
+//** Primary label background color
+$label-primary-bg:            $brand-primary !default;
+//** Success label background color
+$label-success-bg:            $brand-success !default;
+//** Info label background color
+$label-info-bg:               $brand-info !default;
+//** Warning label background color
+$label-warning-bg:            $brand-warning !default;
+//** Danger label background color
+$label-danger-bg:             $brand-danger !default;
+
+//** Default label text color
+$label-color:                 #fff !default;
+//** Default text color of a linked label
+$label-link-hover-color:      #fff !default;
+
+
+//== Modals
+//
+//##
+
+//** Padding applied to the modal body
+$modal-inner-padding:         15px !default;
+
+//** Padding applied to the modal title
+$modal-title-padding:         15px !default;
+//** Modal title line-height
+$modal-title-line-height:     $line-height-base !default;
+
+//** Background color of modal content area
+$modal-content-bg:                             #fff !default;
+//** Modal content border color
+$modal-content-border-color:                   rgba($gray-base, .2) !default;
+//** Modal content border color **for IE8**
+$modal-content-fallback-border-color:          #999 !default;
+
+//** Modal backdrop background color
+$modal-backdrop-bg:           #000 !default;
+//** Modal backdrop opacity
+$modal-backdrop-opacity:      .5 !default;
+//** Modal header border color
+$modal-header-border-color:   #e5e5e5 !default;
+//** Modal footer border color
+$modal-footer-border-color:   $modal-header-border-color !default;
+
+$modal-lg:                    900px !default;
+$modal-md:                    600px !default;
+$modal-sm:                    300px !default;
+
+
+//== Alerts
+//
+//## Define alert colors, border radius, and padding.
+
+$alert-padding:               15px !default;
+$alert-border-radius:         $border-radius-base !default;
+$alert-link-font-weight:      bold !default;
+
+$alert-success-bg:            $state-success-bg !default;
+$alert-success-text:          $state-success-text !default;
+$alert-success-border:        $state-success-border !default;
+
+$alert-info-bg:               $state-info-bg !default;
+$alert-info-text:             $state-info-text !default;
+$alert-info-border:           $state-info-border !default;
+
+$alert-warning-bg:            $state-warning-bg !default;
+$alert-warning-text:          $state-warning-text !default;
+$alert-warning-border:        $state-warning-border !default;
+
+$alert-danger-bg:             $state-danger-bg !default;
+$alert-danger-text:           $state-danger-text !default;
+$alert-danger-border:         $state-danger-border !default;
+
+
+//== Progress bars
+//
+//##
+
+//** Background color of the whole progress component
+$progress-bg:                 #f5f5f5 !default;
+//** Progress bar text color
+$progress-bar-color:          #fff !default;
+//** Variable for setting rounded corners on progress bar.
+$progress-border-radius:      $border-radius-base !default;
+
+//** Default progress bar color
+$progress-bar-bg:             $brand-primary !default;
+//** Success progress bar color
+$progress-bar-success-bg:     $brand-success !default;
+//** Warning progress bar color
+$progress-bar-warning-bg:     $brand-warning !default;
+//** Danger progress bar color
+$progress-bar-danger-bg:      $brand-danger !default;
+//** Info progress bar color
+$progress-bar-info-bg:        $brand-info !default;
+
+
+//== List group
+//
+//##
+
+//** Background color on `.list-group-item`
+$list-group-bg:                 #fff !default;
+//** `.list-group-item` border color
+$list-group-border:             #ddd !default;
+//** List group border radius
+$list-group-border-radius:      $border-radius-base !default;
+
+//** Background color of single list items on hover
+$list-group-hover-bg:           #f5f5f5 !default;
+//** Background color of active list items
+$list-group-active-bg:          $component-active-bg !default;
+//** Text color of active list items
+$list-group-active-color:       color-contrast($list-group-active-bg, $component-active-color) !default;
+//** Border color of active list elements
+$list-group-active-border:      $list-group-active-bg !default;
+//** Text color for content within active list items
+$list-group-active-text-color:  lighten($list-group-active-bg, 40%) !default;
+
+//** Text color of disabled list items
+$list-group-disabled-color:      $gray-light !default;
+//** Background color of disabled list items
+$list-group-disabled-bg:         $gray-lighter !default;
+//** Text color for content within disabled list items
+$list-group-disabled-text-color: $list-group-disabled-color !default;
+
+$list-group-link-color:         #555 !default;
+$list-group-link-hover-color:   $list-group-link-color !default;
+$list-group-link-heading-color: #333 !default;
+
+
+//== Panels
+//
+//##
+
+$panel-bg:                    #fff !default;
+$panel-body-padding:          15px !default;
+$panel-heading-padding:       10px 15px !default;
+$panel-footer-padding:        $panel-heading-padding !default;
+$panel-border-radius:         $border-radius-base !default;
+
+//** Border color for elements within panels
+$panel-inner-border:          #ddd !default;
+$panel-footer-bg:             #f5f5f5 !default;
+
+$panel-default-text:          $gray-dark !default;
+$panel-default-border:        #ddd !default;
+$panel-default-heading-bg:    #f5f5f5 !default;
+
+$panel-primary-text:          #fff !default;
+$panel-primary-border:        $brand-primary !default;
+$panel-primary-heading-bg:    $brand-primary !default;
+
+$panel-success-text:          $state-success-text !default;
+$panel-success-border:        $state-success-border !default;
+$panel-success-heading-bg:    $state-success-bg !default;
+
+$panel-info-text:             $state-info-text !default;
+$panel-info-border:           $state-info-border !default;
+$panel-info-heading-bg:       $state-info-bg !default;
+
+$panel-warning-text:          $state-warning-text !default;
+$panel-warning-border:        $state-warning-border !default;
+$panel-warning-heading-bg:    $state-warning-bg !default;
+
+$panel-danger-text:           $state-danger-text !default;
+$panel-danger-border:         $state-danger-border !default;
+$panel-danger-heading-bg:     $state-danger-bg !default;
+
+
+//== Thumbnails
+//
+//##
+
+//** Padding around the thumbnail image
+$thumbnail-padding:           4px !default;
+//** Thumbnail background color
+$thumbnail-bg:                $body-bg !default;
+//** Thumbnail border color
+$thumbnail-border:            #ddd !default;
+//** Thumbnail border radius
+$thumbnail-border-radius:     $border-radius-base !default;
+
+//** Custom text color for thumbnail captions
+$thumbnail-caption-color:     $text-color !default;
+//** Padding around the thumbnail caption
+$thumbnail-caption-padding:   9px !default;
+
+
+//== Wells
+//
+//##
+
+$well-bg:                     #f5f5f5 !default;
+$well-border:                 darken($well-bg, 7%) !default;
+
+
+//== Badges
+//
+//##
+
+$badge-color:                 #fff !default;
+//** Linked badge text color on hover
+$badge-link-hover-color:      #fff !default;
+$badge-bg:                    $gray-light !default;
+
+//** Badge text color in active nav link
+$badge-active-color:          $link-color !default;
+//** Badge background color in active nav link
+$badge-active-bg:             #fff !default;
+
+$badge-font-weight:           bold !default;
+$badge-line-height:           1 !default;
+$badge-border-radius:         10px !default;
+
+
+//== Breadcrumbs
+//
+//##
+
+$breadcrumb-padding-vertical:   8px !default;
+$breadcrumb-padding-horizontal: 15px !default;
+//** Breadcrumb background color
+$breadcrumb-bg:                 #f5f5f5 !default;
+//** Breadcrumb text color
+$breadcrumb-color:              #ccc !default;
+//** Text color of current page in the breadcrumb
+$breadcrumb-active-color:       $gray-light !default;
+//** Textual separator for between breadcrumb elements
+$breadcrumb-separator:          "/" !default;
+
+
+//== Carousel
+//
+//##
+
+$carousel-text-shadow:                        0 1px 2px rgba($gray-base, .6) !default;
+
+$carousel-control-color:                      #fff !default;
+$carousel-control-width:                      15% !default;
+$carousel-control-opacity:                    .5 !default;
+$carousel-control-font-size:                  20px !default;
+
+$carousel-indicator-active-bg:                #fff !default;
+$carousel-indicator-border-color:             #fff !default;
+
+$carousel-caption-color:                      #fff !default;
+
+
+//== Close
+//
+//##
+
+$close-font-weight:           bold !default;
+$close-color:                 #000 !default;
+$close-text-shadow:           0 1px 0 #fff !default;
+
+
+//== Code
+//
+//##
+
+$code-color:                  inherit !default;
+$code-bg:                     #f5f5f5 !default;
+
+$kbd-color:                   #fff !default;
+$kbd-bg:                      #333 !default;
+
+$pre-bg:                      #f5f5f5 !default;
+$pre-color:                   $gray-dark !default;
+$pre-border-color:            #ccc !default;
+$pre-scrollable-max-height:   340px !default;
+
+
+//== Type
+//
+//##
+
+//** Horizontal offset for forms and lists.
+$component-offset-horizontal: 180px !default;
+//** Text muted color
+$text-muted:                  $gray-light !default;
+//** Abbreviations and acronyms border color
+$abbr-border-color:           $gray-light !default;
+//** Headings small color
+$headings-small-color:        $gray-light !default;
+//** Blockquote small color
+$blockquote-small-color:      $gray-light !default;
+//** Blockquote font size
+$blockquote-font-size:        ($font-size-base * 1.25) !default;
+//** Blockquote border color
+$blockquote-border-color:     $gray-lighter !default;
+//** Page header border color
+$page-header-border-color:    $gray-lighter !default;
+//** Width of horizontal description list titles
+$dl-horizontal-offset:        $component-offset-horizontal !default;
+//** Point at which .dl-horizontal becomes horizontal
+$dl-horizontal-breakpoint:    $grid-float-breakpoint !default;
+//** Horizontal line color.
+$hr-border:                   $gray-lighter !default;
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_navbar.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_navbar.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_navbar.scss	(revision 3762)
@@ -0,0 +1,656 @@
+//
+// Navbars
+// --------------------------------------------------
+
+
+// Wrapper and base class
+//
+// Provide a static navbar from which we expand to create full-width, fixed, and
+// other navbar variations.
+
+.navbar {
+  position: relative;
+  min-height: $navbar-height; // Ensure a navbar always shows (e.g., without a .navbar-brand in collapsed mode)
+  margin-bottom: $navbar-margin-bottom;
+  border: 1px solid transparent;
+
+  // Prevent floats from breaking the navbar
+  @include clearfix;
+
+  @media (min-width: $grid-float-breakpoint) {
+    border-radius: $navbar-border-radius;
+  }
+}
+
+
+// Navbar heading
+//
+// Groups `.navbar-brand` and `.navbar-toggle` into a single component for easy
+// styling of responsive aspects.
+
+.navbar-header {
+  @include clearfix;
+
+  @media (min-width: $grid-float-breakpoint) {
+    float: left;
+  }
+}
+
+
+// Navbar collapse (body)
+//
+// Group your navbar content into this for easy collapsing and expanding across
+// various device sizes. By default, this content is collapsed when <768px, but
+// will expand past that for a horizontal display.
+//
+// To start (on mobile devices) the navbar links, forms, and buttons are stacked
+// vertically and include a `max-height` to overflow in case you have too much
+// content for the user's viewport.
+
+.navbar-collapse {
+  padding-right: $navbar-padding-horizontal;
+  padding-left: $navbar-padding-horizontal;
+  overflow-x: visible;
+  border-top: 1px solid transparent;
+  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);
+  @include clearfix;
+  -webkit-overflow-scrolling: touch;
+
+  &.in {
+    overflow-y: auto;
+  }
+
+  @media (min-width: $grid-float-breakpoint) {
+    width: auto;
+    border-top: 0;
+    box-shadow: none;
+
+    &.collapse {
+      display: block !important;
+      height: auto !important;
+      padding-bottom: 0; // Override default setting
+      overflow: visible !important;
+    }
+
+    &.in {
+      overflow-y: visible;
+    }
+
+    // Undo the collapse side padding for navbars with containers to ensure
+    // alignment of right-aligned contents.
+    .navbar-fixed-top &,
+    .navbar-static-top &,
+    .navbar-fixed-bottom & {
+      padding-right: 0;
+      padding-left: 0;
+    }
+  }
+}
+
+.navbar-fixed-top,
+.navbar-fixed-bottom {
+  .navbar-collapse {
+    max-height: $navbar-collapse-max-height;
+
+    @media (max-device-width: $screen-xs-min) and (orientation: landscape) {
+      max-height: 200px;
+    }
+  }
+
+  // Fix the top/bottom navbars when screen real estate supports it
+  position: fixed;
+  right: 0;
+  left: 0;
+  z-index: $zindex-navbar-fixed;
+
+  // Undo the rounded corners
+  @media (min-width: $grid-float-breakpoint) {
+    border-radius: 0;
+  }
+}
+
+.navbar-fixed-top {
+  top: 0;
+  border-width: 0 0 1px;
+}
+.navbar-fixed-bottom {
+  bottom: 0;
+  margin-bottom: 0; // override .navbar defaults
+  border-width: 1px 0 0;
+}
+
+
+// Both navbar header and collapse
+//
+// When a container is present, change the behavior of the header and collapse.
+
+.container,
+.container-fluid {
+  > .navbar-header,
+  > .navbar-collapse {
+    margin-right: -$navbar-padding-horizontal;
+    margin-left: -$navbar-padding-horizontal;
+
+    @media (min-width: $grid-float-breakpoint) {
+      margin-right: 0;
+      margin-left: 0;
+    }
+  }
+}
+
+
+//
+// Navbar alignment options
+//
+// Display the navbar across the entirety of the page or fixed it to the top or
+// bottom of the page.
+
+// Static top (unfixed, but 100% wide) navbar
+.navbar-static-top {
+  z-index: $zindex-navbar;
+  border-width: 0 0 1px;
+
+  @media (min-width: $grid-float-breakpoint) {
+    border-radius: 0;
+  }
+}
+
+
+// Brand/project name
+
+.navbar-brand {
+  float: left;
+  height: $navbar-height;
+  padding: $navbar-padding-vertical $navbar-padding-horizontal;
+  font-size: $font-size-large;
+  line-height: $line-height-computed;
+
+  &:hover,
+  &:focus {
+    text-decoration: none;
+  }
+
+  > img {
+    display: block;
+  }
+
+  @media (min-width: $grid-float-breakpoint) {
+    .navbar > .container &,
+    .navbar > .container-fluid & {
+      margin-left: -$navbar-padding-horizontal;
+    }
+  }
+}
+
+
+// Navbar toggle
+//
+// Custom button for toggling the `.navbar-collapse`, powered by the collapse
+// JavaScript plugin.
+
+.navbar-toggle {
+  position: relative;
+  float: right;
+  padding: 9px 10px;
+  margin-right: $navbar-padding-horizontal;
+  @include navbar-vertical-align(34px);
+  background-color: transparent;
+  background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214
+  border: 1px solid transparent;
+  border-radius: $border-radius-base;
+
+  // We remove the `outline` here, but later compensate by attaching `:hover`
+  // styles to `:focus`.
+  &:focus {
+    outline: 0;
+  }
+
+  // Bars
+  .icon-bar {
+    display: block;
+    width: 22px;
+    height: 2px;
+    border-radius: 1px;
+  }
+  .icon-bar + .icon-bar {
+    margin-top: 4px;
+  }
+
+  @media (min-width: $grid-float-breakpoint) {
+    display: none;
+  }
+}
+
+
+// Navbar nav links
+//
+// Builds on top of the `.nav` components with its own modifier class to make
+// the nav the full height of the horizontal nav (above 768px).
+
+.navbar-nav {
+  margin: ($navbar-padding-vertical / 2) (-$navbar-padding-horizontal);
+
+  > li > a {
+    padding-top: 10px;
+    padding-bottom: 10px;
+    line-height: $line-height-computed;
+  }
+
+  @media (max-width: $grid-float-breakpoint-max) {
+    // Dropdowns get custom display when collapsed
+    .open .dropdown-menu {
+      position: static;
+      float: none;
+      width: auto;
+      margin-top: 0;
+      background-color: transparent;
+      border: 0;
+      box-shadow: none;
+      > li > a,
+      .dropdown-header {
+        padding: 5px 15px 5px 25px;
+      }
+      > li > a {
+        line-height: $line-height-computed;
+        &:hover,
+        &:focus {
+          background-image: none;
+        }
+      }
+    }
+  }
+
+  // Uncollapse the nav
+  @media (min-width: $grid-float-breakpoint) {
+    float: left;
+    margin: 0;
+
+    > li {
+      float: left;
+      > a {
+        padding-top: $navbar-padding-vertical;
+        padding-bottom: $navbar-padding-vertical;
+      }
+    }
+  }
+}
+
+
+// Navbar form
+//
+// Extension of the `.form-inline` with some extra flavor for optimum display in
+// our navbars.
+
+.navbar-form {
+  padding: 10px $navbar-padding-horizontal;
+  margin-right: -$navbar-padding-horizontal;
+  margin-left: -$navbar-padding-horizontal;
+  border-top: 1px solid transparent;
+  border-bottom: 1px solid transparent;
+  $shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);
+  @include box-shadow($shadow);
+
+  // Mixin behavior for optimum display
+  @include form-inline;
+
+  .form-group {
+    @media (max-width: $grid-float-breakpoint-max) {
+      margin-bottom: 5px;
+
+      &:last-child {
+        margin-bottom: 0;
+      }
+    }
+  }
+
+  // Vertically center in expanded, horizontal navbar
+  @include navbar-vertical-align($input-height-base);
+
+  // Undo 100% width for pull classes
+  @media (min-width: $grid-float-breakpoint) {
+    width: auto;
+    padding-top: 0;
+    padding-bottom: 0;
+    margin-right: 0;
+    margin-left: 0;
+    border: 0;
+    @include box-shadow(none);
+  }
+}
+
+
+// Dropdown menus
+
+// Menu position and menu carets
+.navbar-nav > li > .dropdown-menu {
+  margin-top: 0;
+  @include border-top-radius(0);
+}
+// Menu position and menu caret support for dropups via extra dropup class
+.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
+  margin-bottom: 0;
+  @include border-top-radius($navbar-border-radius);
+  @include border-bottom-radius(0);
+}
+
+
+// Buttons in navbars
+//
+// Vertically center a button within a navbar (when *not* in a form).
+
+.navbar-btn {
+  @include navbar-vertical-align($input-height-base);
+
+  &.btn-sm {
+    @include navbar-vertical-align($input-height-small);
+  }
+  &.btn-xs {
+    @include navbar-vertical-align(22);
+  }
+}
+
+
+// Text in navbars
+//
+// Add a class to make any element properly align itself vertically within the navbars.
+
+.navbar-text {
+  @include navbar-vertical-align($line-height-computed);
+
+  @media (min-width: $grid-float-breakpoint) {
+    float: left;
+    margin-right: $navbar-padding-horizontal;
+    margin-left: $navbar-padding-horizontal;
+  }
+}
+
+
+// Component alignment
+//
+// Repurpose the pull utilities as their own navbar utilities to avoid specificity
+// issues with parents and chaining. Only do this when the navbar is uncollapsed
+// though so that navbar contents properly stack and align in mobile.
+//
+// Declared after the navbar components to ensure more specificity on the margins.
+
+@media (min-width: $grid-float-breakpoint) {
+  .navbar-left {
+    float: left !important;
+  }
+  .navbar-right {
+    float: right !important;
+  margin-right: -$navbar-padding-horizontal;
+
+    ~ .navbar-right {
+      margin-right: 0;
+    }
+  }
+}
+
+
+// Alternate navbars
+// --------------------------------------------------
+
+// Default navbar
+.navbar-default {
+  background-color: $navbar-default-bg;
+  border-color: $navbar-default-border;
+
+  .navbar-brand {
+    color: $navbar-default-brand-color;
+    &:hover,
+    &:focus {
+      color: $navbar-default-brand-hover-color;
+      background-color: $navbar-default-brand-hover-bg;
+    }
+  }
+
+  .navbar-text {
+    color: $navbar-default-color;
+  }
+
+  .navbar-nav {
+    > li > a {
+      color: $navbar-default-link-color;
+
+      &:hover,
+      &:focus {
+        color: $navbar-default-link-hover-color;
+        background-color: $navbar-default-link-hover-bg;
+      }
+    }
+    > .active > a {
+      &,
+      &:hover,
+      &:focus {
+        color: $navbar-default-link-active-color;
+        background-color: $navbar-default-link-active-bg;
+      }
+    }
+    > .disabled > a {
+      &,
+      &:hover,
+      &:focus {
+        color: $navbar-default-link-disabled-color;
+        background-color: $navbar-default-link-disabled-bg;
+      }
+    }
+
+    // Dropdown menu items
+    // Remove background color from open dropdown
+    > .open > a {
+      &,
+      &:hover,
+      &:focus {
+        color: $navbar-default-link-active-color;
+        background-color: $navbar-default-link-active-bg;
+      }
+    }
+
+    @media (max-width: $grid-float-breakpoint-max) {
+      // Dropdowns get custom display when collapsed
+      .open .dropdown-menu {
+        > li > a {
+          color: $navbar-default-link-color;
+          &:hover,
+          &:focus {
+            color: $navbar-default-link-hover-color;
+            background-color: $navbar-default-link-hover-bg;
+          }
+        }
+        > .active > a {
+          &,
+          &:hover,
+          &:focus {
+            color: $navbar-default-link-active-color;
+            background-color: $navbar-default-link-active-bg;
+          }
+        }
+        > .disabled > a {
+          &,
+          &:hover,
+          &:focus {
+            color: $navbar-default-link-disabled-color;
+            background-color: $navbar-default-link-disabled-bg;
+          }
+        }
+      }
+    }
+  }
+
+  .navbar-toggle {
+    border-color: $navbar-default-toggle-border-color;
+    &:hover,
+    &:focus {
+      background-color: $navbar-default-toggle-hover-bg;
+    }
+    .icon-bar {
+      background-color: $navbar-default-toggle-icon-bar-bg;
+    }
+  }
+
+  .navbar-collapse,
+  .navbar-form {
+    border-color: $navbar-default-border;
+  }
+
+
+  // Links in navbars
+  //
+  // Add a class to ensure links outside the navbar nav are colored correctly.
+
+  .navbar-link {
+    color: $navbar-default-link-color;
+    &:hover {
+      color: $navbar-default-link-hover-color;
+    }
+  }
+
+  .btn-link {
+    color: $navbar-default-link-color;
+    &:hover,
+    &:focus {
+      color: $navbar-default-link-hover-color;
+    }
+    &[disabled],
+    fieldset[disabled] & {
+      &:hover,
+      &:focus {
+        color: $navbar-default-link-disabled-color;
+      }
+    }
+  }
+}
+
+// Inverse navbar
+
+.navbar-inverse {
+  background-color: $navbar-inverse-bg;
+  border-color: $navbar-inverse-border;
+
+  .navbar-brand {
+    color: $navbar-inverse-brand-color;
+    &:hover,
+    &:focus {
+      color: $navbar-inverse-brand-hover-color;
+      background-color: $navbar-inverse-brand-hover-bg;
+    }
+  }
+
+  .navbar-text {
+    color: $navbar-inverse-color;
+  }
+
+  .navbar-nav {
+    > li > a {
+      color: $navbar-inverse-link-color;
+
+      &:hover,
+      &:focus {
+        color: $navbar-inverse-link-hover-color;
+        background-color: $navbar-inverse-link-hover-bg;
+      }
+    }
+    > .active > a {
+      &,
+      &:hover,
+      &:focus {
+        color: $navbar-inverse-link-active-color;
+        background-color: $navbar-inverse-link-active-bg;
+      }
+    }
+    > .disabled > a {
+      &,
+      &:hover,
+      &:focus {
+        color: $navbar-inverse-link-disabled-color;
+        background-color: $navbar-inverse-link-disabled-bg;
+      }
+    }
+
+    // Dropdowns
+    > .open > a {
+      &,
+      &:hover,
+      &:focus {
+        color: $navbar-inverse-link-active-color;
+        background-color: $navbar-inverse-link-active-bg;
+      }
+    }
+
+    @media (max-width: $grid-float-breakpoint-max) {
+      // Dropdowns get custom display
+      .open .dropdown-menu {
+        > .dropdown-header {
+          border-color: $navbar-inverse-border;
+        }
+        .divider {
+          background-color: $navbar-inverse-border;
+        }
+        > li > a {
+          color: $navbar-inverse-link-color;
+          &:hover,
+          &:focus {
+            color: $navbar-inverse-link-hover-color;
+            background-color: $navbar-inverse-link-hover-bg;
+          }
+        }
+        > .active > a {
+          &,
+          &:hover,
+          &:focus {
+            color: $navbar-inverse-link-active-color;
+            background-color: $navbar-inverse-link-active-bg;
+          }
+        }
+        > .disabled > a {
+          &,
+          &:hover,
+          &:focus {
+            color: $navbar-inverse-link-disabled-color;
+            background-color: $navbar-inverse-link-disabled-bg;
+          }
+        }
+      }
+    }
+  }
+
+  // Darken the responsive nav toggle
+  .navbar-toggle {
+    border-color: $navbar-inverse-toggle-border-color;
+    &:hover,
+    &:focus {
+      background-color: $navbar-inverse-toggle-hover-bg;
+    }
+    .icon-bar {
+      background-color: $navbar-inverse-toggle-icon-bar-bg;
+    }
+  }
+
+  .navbar-collapse,
+  .navbar-form {
+    border-color: darken($navbar-inverse-bg, 7%);
+  }
+
+  .navbar-link {
+    color: $navbar-inverse-link-color;
+    &:hover {
+      color: $navbar-inverse-link-hover-color;
+    }
+  }
+
+  .btn-link {
+    color: $navbar-inverse-link-color;
+    &:hover,
+    &:focus {
+      color: $navbar-inverse-link-hover-color;
+    }
+    &[disabled],
+    fieldset[disabled] & {
+      &:hover,
+      &:focus {
+        color: $navbar-inverse-link-disabled-color;
+      }
+    }
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_code.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_code.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_code.scss	(revision 3762)
@@ -0,0 +1,69 @@
+//
+// Code (inline and block)
+// --------------------------------------------------
+
+
+// Inline and block code styles
+code,
+kbd,
+pre,
+samp {
+  font-family: $font-family-monospace;
+}
+
+// Inline code
+code {
+  padding: 2px 4px;
+  font-size: 90%;
+  color: $code-color;
+  background-color: $code-bg;
+  border-radius: $border-radius-base;
+}
+
+// User input typically entered via keyboard
+kbd {
+  padding: 2px 4px;
+  font-size: 90%;
+  color: $kbd-color;
+  background-color: $kbd-bg;
+  border-radius: $border-radius-small;
+  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);
+
+  kbd {
+    padding: 0;
+    font-size: 100%;
+    font-weight: 700;
+    box-shadow: none;
+  }
+}
+
+// Blocks of code
+pre {
+  display: block;
+  padding: (($line-height-computed - 1) / 2);
+  margin: 0 0 ($line-height-computed / 2);
+  font-size: ($font-size-base - 1); // 14px to 13px
+  line-height: $line-height-base;
+  color: $pre-color;
+  word-break: break-all;
+  word-wrap: break-word;
+  background-color: $pre-bg;
+  border: 1px solid $pre-border-color;
+  border-radius: $border-radius-base;
+
+  // Account for some code outputs that place code tags in pre tags
+  code {
+    padding: 0;
+    font-size: inherit;
+    color: inherit;
+    white-space: pre-wrap;
+    background-color: transparent;
+    border-radius: 0;
+  }
+}
+
+// Enable scrollable blocks of code
+.pre-scrollable {
+  max-height: $pre-scrollable-max-height;
+  overflow-y: scroll;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_utilities.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_utilities.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_utilities.scss	(revision 3762)
@@ -0,0 +1,55 @@
+//
+// Utility classes
+// --------------------------------------------------
+
+
+// Floats
+// -------------------------
+
+.clearfix {
+  @include clearfix;
+}
+.center-block {
+  @include center-block;
+}
+.pull-right {
+  float: right !important;
+}
+.pull-left {
+  float: left !important;
+}
+
+
+// Toggling content
+// -------------------------
+
+// Note: Deprecated .hide in favor of .hidden or .sr-only (as appropriate) in v3.0.1
+.hide {
+  display: none !important;
+}
+.show {
+  display: block !important;
+}
+.invisible {
+  visibility: hidden;
+}
+.text-hide {
+  @include text-hide;
+}
+
+
+// Hide from screenreaders and browsers
+//
+// Credit: HTML5 Boilerplate
+
+.hidden {
+  display: none !important;
+}
+
+
+// For Affix plugin
+// -------------------------
+
+.affix {
+  position: fixed;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_modals.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_modals.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_modals.scss	(revision 3762)
@@ -0,0 +1,150 @@
+//
+// Modals
+// --------------------------------------------------
+
+// .modal-open      - body class for killing the scroll
+// .modal           - container to scroll within
+// .modal-dialog    - positioning shell for the actual modal
+// .modal-content   - actual modal w/ bg and corners and shit
+
+// Kill the scroll on the body
+.modal-open {
+  overflow: hidden;
+}
+
+// Container that the modal scrolls within
+.modal {
+  position: fixed;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  z-index: $zindex-modal;
+  display: none;
+  overflow: hidden;
+  -webkit-overflow-scrolling: touch;
+
+  // Prevent Chrome on Windows from adding a focus outline. For details, see
+  // https://github.com/twbs/bootstrap/pull/10951.
+  outline: 0;
+
+  // When fading in the modal, animate it to slide down
+  &.fade .modal-dialog {
+    @include translate(0, -25%);
+    @include transition-transform(0.3s ease-out);
+  }
+  &.in .modal-dialog { @include translate(0, 0); }
+}
+.modal-open .modal {
+  overflow-x: hidden;
+  overflow-y: auto;
+}
+
+// Shell div to position the modal with bottom padding
+.modal-dialog {
+  position: relative;
+  width: auto;
+  margin: 10px;
+}
+
+// Actual modal
+.modal-content {
+  position: relative;
+  background-color: $modal-content-bg;
+  background-clip: padding-box;
+  border: 1px solid $modal-content-fallback-border-color; //old browsers fallback (ie8 etc)
+  border: 1px solid $modal-content-border-color;
+  border-radius: $border-radius-large;
+  @include box-shadow(0 3px 9px rgba(0, 0, 0, .5));
+  // Remove focus outline from opened modal
+  outline: 0;
+}
+
+// Modal background
+.modal-backdrop {
+  position: fixed;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  z-index: $zindex-modal-background;
+  background-color: $modal-backdrop-bg;
+  // Fade for backdrop
+  &.fade { @include opacity(0); }
+  &.in { @include opacity($modal-backdrop-opacity); }
+}
+
+// Modal header
+// Top section of the modal w/ title and dismiss
+.modal-header {
+  padding: $modal-title-padding;
+  border-bottom: 1px solid $modal-header-border-color;
+  @include clearfix;
+}
+// Close icon
+.modal-header .close {
+  margin-top: -2px;
+}
+
+// Title text within header
+.modal-title {
+  margin: 0;
+  line-height: $modal-title-line-height;
+}
+
+// Modal body
+// Where all modal content resides (sibling of .modal-header and .modal-footer)
+.modal-body {
+  position: relative;
+  padding: $modal-inner-padding;
+}
+
+// Footer (for actions)
+.modal-footer {
+  padding: $modal-inner-padding;
+  text-align: right; // right align buttons
+  border-top: 1px solid $modal-footer-border-color;
+  @include clearfix; // clear it in case folks use .pull-* classes on buttons
+
+  // Properly space out buttons
+  .btn + .btn {
+    margin-bottom: 0; // account for input[type="submit"] which gets the bottom margin like all other inputs
+    margin-left: 5px;
+  }
+  // but override that for button groups
+  .btn-group .btn + .btn {
+    margin-left: -1px;
+  }
+  // and override it for block buttons as well
+  .btn-block + .btn-block {
+    margin-left: 0;
+  }
+}
+
+// Measure scrollbar width for padding body during modal show/hide
+.modal-scrollbar-measure {
+  position: absolute;
+  top: -9999px;
+  width: 50px;
+  height: 50px;
+  overflow: scroll;
+}
+
+// Scale up the modal
+@media (min-width: $screen-sm-min) {
+  // Automatically set modal's width for larger viewports
+  .modal-dialog {
+    width: $modal-md;
+    margin: 30px auto;
+  }
+  .modal-content {
+    @include box-shadow(0 5px 15px rgba(0, 0, 0, .5));
+  }
+
+  // Modal sizes
+  .modal-sm { width: $modal-sm; }
+}
+
+@media (min-width: $screen-md-min) {
+  .modal-lg { width: $modal-lg; }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_glyphicons.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_glyphicons.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_glyphicons.scss	(revision 3762)
@@ -0,0 +1,307 @@
+//
+// Glyphicons for Bootstrap
+//
+// Since icons are fonts, they can be placed anywhere text is placed and are
+// thus automatically sized to match the surrounding child. To use, create an
+// inline element with the appropriate classes, like so:
+//
+// <a href="#"><span class="glyphicon glyphicon-star"></span> Star</a>
+
+@at-root {
+  // Import the fonts
+  @font-face {
+    font-family: "Glyphicons Halflings";
+    src: url(if($bootstrap-sass-asset-helper, twbs-font-path("#{$icon-font-path}#{$icon-font-name}.eot"), "#{$icon-font-path}#{$icon-font-name}.eot"));
+    src: url(if($bootstrap-sass-asset-helper, twbs-font-path("#{$icon-font-path}#{$icon-font-name}.eot?#iefix"), "#{$icon-font-path}#{$icon-font-name}.eot?#iefix")) format("embedded-opentype"),
+         url(if($bootstrap-sass-asset-helper, twbs-font-path("#{$icon-font-path}#{$icon-font-name}.woff2"), "#{$icon-font-path}#{$icon-font-name}.woff2")) format("woff2"),
+         url(if($bootstrap-sass-asset-helper, twbs-font-path("#{$icon-font-path}#{$icon-font-name}.woff"), "#{$icon-font-path}#{$icon-font-name}.woff")) format("woff"),
+         url(if($bootstrap-sass-asset-helper, twbs-font-path("#{$icon-font-path}#{$icon-font-name}.ttf"), "#{$icon-font-path}#{$icon-font-name}.ttf")) format("truetype"),
+         url(if($bootstrap-sass-asset-helper, twbs-font-path("#{$icon-font-path}#{$icon-font-name}.svg##{$icon-font-svg-id}"), "#{$icon-font-path}#{$icon-font-name}.svg##{$icon-font-svg-id}")) format("svg");
+  }
+}
+
+// Catchall baseclass
+.glyphicon {
+  position: relative;
+  top: 1px;
+  display: inline-block;
+  font-family: "Glyphicons Halflings";
+  font-style: normal;
+  font-weight: 400;
+  line-height: 1;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+
+// Individual icons
+.glyphicon-asterisk               { &:before { content: "\002a"; } }
+.glyphicon-plus                   { &:before { content: "\002b"; } }
+.glyphicon-euro,
+.glyphicon-eur                    { &:before { content: "\20ac"; } }
+.glyphicon-minus                  { &:before { content: "\2212"; } }
+.glyphicon-cloud                  { &:before { content: "\2601"; } }
+.glyphicon-envelope               { &:before { content: "\2709"; } }
+.glyphicon-pencil                 { &:before { content: "\270f"; } }
+.glyphicon-glass                  { &:before { content: "\e001"; } }
+.glyphicon-music                  { &:before { content: "\e002"; } }
+.glyphicon-search                 { &:before { content: "\e003"; } }
+.glyphicon-heart                  { &:before { content: "\e005"; } }
+.glyphicon-star                   { &:before { content: "\e006"; } }
+.glyphicon-star-empty             { &:before { content: "\e007"; } }
+.glyphicon-user                   { &:before { content: "\e008"; } }
+.glyphicon-film                   { &:before { content: "\e009"; } }
+.glyphicon-th-large               { &:before { content: "\e010"; } }
+.glyphicon-th                     { &:before { content: "\e011"; } }
+.glyphicon-th-list                { &:before { content: "\e012"; } }
+.glyphicon-ok                     { &:before { content: "\e013"; } }
+.glyphicon-remove                 { &:before { content: "\e014"; } }
+.glyphicon-zoom-in                { &:before { content: "\e015"; } }
+.glyphicon-zoom-out               { &:before { content: "\e016"; } }
+.glyphicon-off                    { &:before { content: "\e017"; } }
+.glyphicon-signal                 { &:before { content: "\e018"; } }
+.glyphicon-cog                    { &:before { content: "\e019"; } }
+.glyphicon-trash                  { &:before { content: "\e020"; } }
+.glyphicon-home                   { &:before { content: "\e021"; } }
+.glyphicon-file                   { &:before { content: "\e022"; } }
+.glyphicon-time                   { &:before { content: "\e023"; } }
+.glyphicon-road                   { &:before { content: "\e024"; } }
+.glyphicon-download-alt           { &:before { content: "\e025"; } }
+.glyphicon-download               { &:before { content: "\e026"; } }
+.glyphicon-upload                 { &:before { content: "\e027"; } }
+.glyphicon-inbox                  { &:before { content: "\e028"; } }
+.glyphicon-play-circle            { &:before { content: "\e029"; } }
+.glyphicon-repeat                 { &:before { content: "\e030"; } }
+.glyphicon-refresh                { &:before { content: "\e031"; } }
+.glyphicon-list-alt               { &:before { content: "\e032"; } }
+.glyphicon-lock                   { &:before { content: "\e033"; } }
+.glyphicon-flag                   { &:before { content: "\e034"; } }
+.glyphicon-headphones             { &:before { content: "\e035"; } }
+.glyphicon-volume-off             { &:before { content: "\e036"; } }
+.glyphicon-volume-down            { &:before { content: "\e037"; } }
+.glyphicon-volume-up              { &:before { content: "\e038"; } }
+.glyphicon-qrcode                 { &:before { content: "\e039"; } }
+.glyphicon-barcode                { &:before { content: "\e040"; } }
+.glyphicon-tag                    { &:before { content: "\e041"; } }
+.glyphicon-tags                   { &:before { content: "\e042"; } }
+.glyphicon-book                   { &:before { content: "\e043"; } }
+.glyphicon-bookmark               { &:before { content: "\e044"; } }
+.glyphicon-print                  { &:before { content: "\e045"; } }
+.glyphicon-camera                 { &:before { content: "\e046"; } }
+.glyphicon-font                   { &:before { content: "\e047"; } }
+.glyphicon-bold                   { &:before { content: "\e048"; } }
+.glyphicon-italic                 { &:before { content: "\e049"; } }
+.glyphicon-text-height            { &:before { content: "\e050"; } }
+.glyphicon-text-width             { &:before { content: "\e051"; } }
+.glyphicon-align-left             { &:before { content: "\e052"; } }
+.glyphicon-align-center           { &:before { content: "\e053"; } }
+.glyphicon-align-right            { &:before { content: "\e054"; } }
+.glyphicon-align-justify          { &:before { content: "\e055"; } }
+.glyphicon-list                   { &:before { content: "\e056"; } }
+.glyphicon-indent-left            { &:before { content: "\e057"; } }
+.glyphicon-indent-right           { &:before { content: "\e058"; } }
+.glyphicon-facetime-video         { &:before { content: "\e059"; } }
+.glyphicon-picture                { &:before { content: "\e060"; } }
+.glyphicon-map-marker             { &:before { content: "\e062"; } }
+.glyphicon-adjust                 { &:before { content: "\e063"; } }
+.glyphicon-tint                   { &:before { content: "\e064"; } }
+.glyphicon-edit                   { &:before { content: "\e065"; } }
+.glyphicon-share                  { &:before { content: "\e066"; } }
+.glyphicon-check                  { &:before { content: "\e067"; } }
+.glyphicon-move                   { &:before { content: "\e068"; } }
+.glyphicon-step-backward          { &:before { content: "\e069"; } }
+.glyphicon-fast-backward          { &:before { content: "\e070"; } }
+.glyphicon-backward               { &:before { content: "\e071"; } }
+.glyphicon-play                   { &:before { content: "\e072"; } }
+.glyphicon-pause                  { &:before { content: "\e073"; } }
+.glyphicon-stop                   { &:before { content: "\e074"; } }
+.glyphicon-forward                { &:before { content: "\e075"; } }
+.glyphicon-fast-forward           { &:before { content: "\e076"; } }
+.glyphicon-step-forward           { &:before { content: "\e077"; } }
+.glyphicon-eject                  { &:before { content: "\e078"; } }
+.glyphicon-chevron-left           { &:before { content: "\e079"; } }
+.glyphicon-chevron-right          { &:before { content: "\e080"; } }
+.glyphicon-plus-sign              { &:before { content: "\e081"; } }
+.glyphicon-minus-sign             { &:before { content: "\e082"; } }
+.glyphicon-remove-sign            { &:before { content: "\e083"; } }
+.glyphicon-ok-sign                { &:before { content: "\e084"; } }
+.glyphicon-question-sign          { &:before { content: "\e085"; } }
+.glyphicon-info-sign              { &:before { content: "\e086"; } }
+.glyphicon-screenshot             { &:before { content: "\e087"; } }
+.glyphicon-remove-circle          { &:before { content: "\e088"; } }
+.glyphicon-ok-circle              { &:before { content: "\e089"; } }
+.glyphicon-ban-circle             { &:before { content: "\e090"; } }
+.glyphicon-arrow-left             { &:before { content: "\e091"; } }
+.glyphicon-arrow-right            { &:before { content: "\e092"; } }
+.glyphicon-arrow-up               { &:before { content: "\e093"; } }
+.glyphicon-arrow-down             { &:before { content: "\e094"; } }
+.glyphicon-share-alt              { &:before { content: "\e095"; } }
+.glyphicon-resize-full            { &:before { content: "\e096"; } }
+.glyphicon-resize-small           { &:before { content: "\e097"; } }
+.glyphicon-exclamation-sign       { &:before { content: "\e101"; } }
+.glyphicon-gift                   { &:before { content: "\e102"; } }
+.glyphicon-leaf                   { &:before { content: "\e103"; } }
+.glyphicon-fire                   { &:before { content: "\e104"; } }
+.glyphicon-eye-open               { &:before { content: "\e105"; } }
+.glyphicon-eye-close              { &:before { content: "\e106"; } }
+.glyphicon-warning-sign           { &:before { content: "\e107"; } }
+.glyphicon-plane                  { &:before { content: "\e108"; } }
+.glyphicon-calendar               { &:before { content: "\e109"; } }
+.glyphicon-random                 { &:before { content: "\e110"; } }
+.glyphicon-comment                { &:before { content: "\e111"; } }
+.glyphicon-magnet                 { &:before { content: "\e112"; } }
+.glyphicon-chevron-up             { &:before { content: "\e113"; } }
+.glyphicon-chevron-down           { &:before { content: "\e114"; } }
+.glyphicon-retweet                { &:before { content: "\e115"; } }
+.glyphicon-shopping-cart          { &:before { content: "\e116"; } }
+.glyphicon-folder-close           { &:before { content: "\e117"; } }
+.glyphicon-folder-open            { &:before { content: "\e118"; } }
+.glyphicon-resize-vertical        { &:before { content: "\e119"; } }
+.glyphicon-resize-horizontal      { &:before { content: "\e120"; } }
+.glyphicon-hdd                    { &:before { content: "\e121"; } }
+.glyphicon-bullhorn               { &:before { content: "\e122"; } }
+.glyphicon-bell                   { &:before { content: "\e123"; } }
+.glyphicon-certificate            { &:before { content: "\e124"; } }
+.glyphicon-thumbs-up              { &:before { content: "\e125"; } }
+.glyphicon-thumbs-down            { &:before { content: "\e126"; } }
+.glyphicon-hand-right             { &:before { content: "\e127"; } }
+.glyphicon-hand-left              { &:before { content: "\e128"; } }
+.glyphicon-hand-up                { &:before { content: "\e129"; } }
+.glyphicon-hand-down              { &:before { content: "\e130"; } }
+.glyphicon-circle-arrow-right     { &:before { content: "\e131"; } }
+.glyphicon-circle-arrow-left      { &:before { content: "\e132"; } }
+.glyphicon-circle-arrow-up        { &:before { content: "\e133"; } }
+.glyphicon-circle-arrow-down      { &:before { content: "\e134"; } }
+.glyphicon-globe                  { &:before { content: "\e135"; } }
+.glyphicon-wrench                 { &:before { content: "\e136"; } }
+.glyphicon-tasks                  { &:before { content: "\e137"; } }
+.glyphicon-filter                 { &:before { content: "\e138"; } }
+.glyphicon-briefcase              { &:before { content: "\e139"; } }
+.glyphicon-fullscreen             { &:before { content: "\e140"; } }
+.glyphicon-dashboard              { &:before { content: "\e141"; } }
+.glyphicon-paperclip              { &:before { content: "\e142"; } }
+.glyphicon-heart-empty            { &:before { content: "\e143"; } }
+.glyphicon-link                   { &:before { content: "\e144"; } }
+.glyphicon-phone                  { &:before { content: "\e145"; } }
+.glyphicon-pushpin                { &:before { content: "\e146"; } }
+.glyphicon-usd                    { &:before { content: "\e148"; } }
+.glyphicon-gbp                    { &:before { content: "\e149"; } }
+.glyphicon-sort                   { &:before { content: "\e150"; } }
+.glyphicon-sort-by-alphabet       { &:before { content: "\e151"; } }
+.glyphicon-sort-by-alphabet-alt   { &:before { content: "\e152"; } }
+.glyphicon-sort-by-order          { &:before { content: "\e153"; } }
+.glyphicon-sort-by-order-alt      { &:before { content: "\e154"; } }
+.glyphicon-sort-by-attributes     { &:before { content: "\e155"; } }
+.glyphicon-sort-by-attributes-alt { &:before { content: "\e156"; } }
+.glyphicon-unchecked              { &:before { content: "\e157"; } }
+.glyphicon-expand                 { &:before { content: "\e158"; } }
+.glyphicon-collapse-down          { &:before { content: "\e159"; } }
+.glyphicon-collapse-up            { &:before { content: "\e160"; } }
+.glyphicon-log-in                 { &:before { content: "\e161"; } }
+.glyphicon-flash                  { &:before { content: "\e162"; } }
+.glyphicon-log-out                { &:before { content: "\e163"; } }
+.glyphicon-new-window             { &:before { content: "\e164"; } }
+.glyphicon-record                 { &:before { content: "\e165"; } }
+.glyphicon-save                   { &:before { content: "\e166"; } }
+.glyphicon-open                   { &:before { content: "\e167"; } }
+.glyphicon-saved                  { &:before { content: "\e168"; } }
+.glyphicon-import                 { &:before { content: "\e169"; } }
+.glyphicon-export                 { &:before { content: "\e170"; } }
+.glyphicon-send                   { &:before { content: "\e171"; } }
+.glyphicon-floppy-disk            { &:before { content: "\e172"; } }
+.glyphicon-floppy-saved           { &:before { content: "\e173"; } }
+.glyphicon-floppy-remove          { &:before { content: "\e174"; } }
+.glyphicon-floppy-save            { &:before { content: "\e175"; } }
+.glyphicon-floppy-open            { &:before { content: "\e176"; } }
+.glyphicon-credit-card            { &:before { content: "\e177"; } }
+.glyphicon-transfer               { &:before { content: "\e178"; } }
+.glyphicon-cutlery                { &:before { content: "\e179"; } }
+.glyphicon-header                 { &:before { content: "\e180"; } }
+.glyphicon-compressed             { &:before { content: "\e181"; } }
+.glyphicon-earphone               { &:before { content: "\e182"; } }
+.glyphicon-phone-alt              { &:before { content: "\e183"; } }
+.glyphicon-tower                  { &:before { content: "\e184"; } }
+.glyphicon-stats                  { &:before { content: "\e185"; } }
+.glyphicon-sd-video               { &:before { content: "\e186"; } }
+.glyphicon-hd-video               { &:before { content: "\e187"; } }
+.glyphicon-subtitles              { &:before { content: "\e188"; } }
+.glyphicon-sound-stereo           { &:before { content: "\e189"; } }
+.glyphicon-sound-dolby            { &:before { content: "\e190"; } }
+.glyphicon-sound-5-1              { &:before { content: "\e191"; } }
+.glyphicon-sound-6-1              { &:before { content: "\e192"; } }
+.glyphicon-sound-7-1              { &:before { content: "\e193"; } }
+.glyphicon-copyright-mark         { &:before { content: "\e194"; } }
+.glyphicon-registration-mark      { &:before { content: "\e195"; } }
+.glyphicon-cloud-download         { &:before { content: "\e197"; } }
+.glyphicon-cloud-upload           { &:before { content: "\e198"; } }
+.glyphicon-tree-conifer           { &:before { content: "\e199"; } }
+.glyphicon-tree-deciduous         { &:before { content: "\e200"; } }
+.glyphicon-cd                     { &:before { content: "\e201"; } }
+.glyphicon-save-file              { &:before { content: "\e202"; } }
+.glyphicon-open-file              { &:before { content: "\e203"; } }
+.glyphicon-level-up               { &:before { content: "\e204"; } }
+.glyphicon-copy                   { &:before { content: "\e205"; } }
+.glyphicon-paste                  { &:before { content: "\e206"; } }
+// The following 2 Glyphicons are omitted for the time being because
+// they currently use Unicode codepoints that are outside the
+// Basic Multilingual Plane (BMP). Older buggy versions of WebKit can't handle
+// non-BMP codepoints in CSS string escapes, and thus can't display these two icons.
+// Notably, the bug affects some older versions of the Android Browser.
+// More info: https://github.com/twbs/bootstrap/issues/10106
+// .glyphicon-door                   { &:before { content: "\1f6aa"; } }
+// .glyphicon-key                    { &:before { content: "\1f511"; } }
+.glyphicon-alert                  { &:before { content: "\e209"; } }
+.glyphicon-equalizer              { &:before { content: "\e210"; } }
+.glyphicon-king                   { &:before { content: "\e211"; } }
+.glyphicon-queen                  { &:before { content: "\e212"; } }
+.glyphicon-pawn                   { &:before { content: "\e213"; } }
+.glyphicon-bishop                 { &:before { content: "\e214"; } }
+.glyphicon-knight                 { &:before { content: "\e215"; } }
+.glyphicon-baby-formula           { &:before { content: "\e216"; } }
+.glyphicon-tent                   { &:before { content: "\26fa"; } }
+.glyphicon-blackboard             { &:before { content: "\e218"; } }
+.glyphicon-bed                    { &:before { content: "\e219"; } }
+.glyphicon-apple                  { &:before { content: "\f8ff"; } }
+.glyphicon-erase                  { &:before { content: "\e221"; } }
+.glyphicon-hourglass              { &:before { content: "\231b"; } }
+.glyphicon-lamp                   { &:before { content: "\e223"; } }
+.glyphicon-duplicate              { &:before { content: "\e224"; } }
+.glyphicon-piggy-bank             { &:before { content: "\e225"; } }
+.glyphicon-scissors               { &:before { content: "\e226"; } }
+.glyphicon-bitcoin                { &:before { content: "\e227"; } }
+.glyphicon-btc                    { &:before { content: "\e227"; } }
+.glyphicon-xbt                    { &:before { content: "\e227"; } }
+.glyphicon-yen                    { &:before { content: "\00a5"; } }
+.glyphicon-jpy                    { &:before { content: "\00a5"; } }
+.glyphicon-ruble                  { &:before { content: "\20bd"; } }
+.glyphicon-rub                    { &:before { content: "\20bd"; } }
+.glyphicon-scale                  { &:before { content: "\e230"; } }
+.glyphicon-ice-lolly              { &:before { content: "\e231"; } }
+.glyphicon-ice-lolly-tasted       { &:before { content: "\e232"; } }
+.glyphicon-education              { &:before { content: "\e233"; } }
+.glyphicon-option-horizontal      { &:before { content: "\e234"; } }
+.glyphicon-option-vertical        { &:before { content: "\e235"; } }
+.glyphicon-menu-hamburger         { &:before { content: "\e236"; } }
+.glyphicon-modal-window           { &:before { content: "\e237"; } }
+.glyphicon-oil                    { &:before { content: "\e238"; } }
+.glyphicon-grain                  { &:before { content: "\e239"; } }
+.glyphicon-sunglasses             { &:before { content: "\e240"; } }
+.glyphicon-text-size              { &:before { content: "\e241"; } }
+.glyphicon-text-color             { &:before { content: "\e242"; } }
+.glyphicon-text-background        { &:before { content: "\e243"; } }
+.glyphicon-object-align-top       { &:before { content: "\e244"; } }
+.glyphicon-object-align-bottom    { &:before { content: "\e245"; } }
+.glyphicon-object-align-horizontal{ &:before { content: "\e246"; } }
+.glyphicon-object-align-left      { &:before { content: "\e247"; } }
+.glyphicon-object-align-vertical  { &:before { content: "\e248"; } }
+.glyphicon-object-align-right     { &:before { content: "\e249"; } }
+.glyphicon-triangle-right         { &:before { content: "\e250"; } }
+.glyphicon-triangle-left          { &:before { content: "\e251"; } }
+.glyphicon-triangle-bottom        { &:before { content: "\e252"; } }
+.glyphicon-triangle-top           { &:before { content: "\e253"; } }
+.glyphicon-console                { &:before { content: "\e254"; } }
+.glyphicon-superscript            { &:before { content: "\e255"; } }
+.glyphicon-subscript              { &:before { content: "\e256"; } }
+.glyphicon-menu-left              { &:before { content: "\e257"; } }
+.glyphicon-menu-right             { &:before { content: "\e258"; } }
+.glyphicon-menu-down              { &:before { content: "\e259"; } }
+.glyphicon-menu-up                { &:before { content: "\e260"; } }
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_scaffolding.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_scaffolding.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_scaffolding.scss	(revision 3762)
@@ -0,0 +1,161 @@
+//
+// Scaffolding
+// --------------------------------------------------
+
+
+// Reset the box-sizing
+//
+// Heads up! This reset may cause conflicts with some third-party widgets.
+// For recommendations on resolving such conflicts, see
+// https://getbootstrap.com/docs/3.4/getting-started/#third-box-sizing
+* {
+  @include box-sizing(border-box);
+}
+*:before,
+*:after {
+  @include box-sizing(border-box);
+}
+
+
+// Body reset
+
+html {
+  font-size: 10px;
+  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+}
+
+body {
+  font-family: $font-family-base;
+  font-size: $font-size-base;
+  line-height: $line-height-base;
+  color: $text-color;
+  background-color: $body-bg;
+}
+
+// Reset fonts for relevant elements
+input,
+button,
+select,
+textarea {
+  font-family: inherit;
+  font-size: inherit;
+  line-height: inherit;
+}
+
+
+// Links
+
+a {
+  color: $link-color;
+  text-decoration: none;
+
+  &:hover,
+  &:focus {
+    color: $link-hover-color;
+    text-decoration: $link-hover-decoration;
+  }
+
+  &:focus {
+    @include tab-focus;
+  }
+}
+
+
+// Figures
+//
+// We reset this here because previously Normalize had no `figure` margins. This
+// ensures we don't break anyone's use of the element.
+
+figure {
+  margin: 0;
+}
+
+
+// Images
+
+img {
+  vertical-align: middle;
+}
+
+// Responsive images (ensure images don't scale beyond their parents)
+.img-responsive {
+  @include img-responsive;
+}
+
+// Rounded corners
+.img-rounded {
+  border-radius: $border-radius-large;
+}
+
+// Image thumbnails
+//
+// Heads up! This is mixin-ed into thumbnails.less for `.thumbnail`.
+.img-thumbnail {
+  padding: $thumbnail-padding;
+  line-height: $line-height-base;
+  background-color: $thumbnail-bg;
+  border: 1px solid $thumbnail-border;
+  border-radius: $thumbnail-border-radius;
+  @include transition(all .2s ease-in-out);
+
+  // Keep them at most 100% wide
+  @include img-responsive(inline-block);
+}
+
+// Perfect circle
+.img-circle {
+  border-radius: 50%; // set radius in percents
+}
+
+
+// Horizontal rules
+
+hr {
+  margin-top: $line-height-computed;
+  margin-bottom: $line-height-computed;
+  border: 0;
+  border-top: 1px solid $hr-border;
+}
+
+
+// Only display content to screen readers
+//
+// See: https://a11yproject.com/posts/how-to-hide-content
+
+.sr-only {
+  position: absolute;
+  width: 1px;
+  height: 1px;
+  padding: 0;
+  margin: -1px;
+  overflow: hidden;
+  clip: rect(0, 0, 0, 0);
+  border: 0;
+}
+
+// Use in conjunction with .sr-only to only display content when it's focused.
+// Useful for "Skip to main content" links; see https://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1
+// Credit: HTML5 Boilerplate
+
+.sr-only-focusable {
+  &:active,
+  &:focus {
+    position: static;
+    width: auto;
+    height: auto;
+    margin: 0;
+    overflow: visible;
+    clip: auto;
+  }
+}
+
+
+// iOS "clickable elements" fix for role="button"
+//
+// Fixes "clickability" issue (and more generally, the firing of events such as focus as well)
+// for traditionally non-focusable elements with role="button"
+// see https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile
+
+[role="button"] {
+  cursor: pointer;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_media.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_media.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_media.scss	(revision 3762)
@@ -0,0 +1,66 @@
+.media {
+  // Proper spacing between instances of .media
+  margin-top: 15px;
+
+  &:first-child {
+    margin-top: 0;
+  }
+}
+
+.media,
+.media-body {
+  overflow: hidden;
+  zoom: 1;
+}
+
+.media-body {
+  width: 10000px;
+}
+
+.media-object {
+  display: block;
+
+  // Fix collapse in webkit from max-width: 100% and display: table-cell.
+  &.img-thumbnail {
+    max-width: none;
+  }
+}
+
+.media-right,
+.media > .pull-right {
+  padding-left: 10px;
+}
+
+.media-left,
+.media > .pull-left {
+  padding-right: 10px;
+}
+
+.media-left,
+.media-right,
+.media-body {
+  display: table-cell;
+  vertical-align: top;
+}
+
+.media-middle {
+  vertical-align: middle;
+}
+
+.media-bottom {
+  vertical-align: bottom;
+}
+
+// Reset margins on headings for tighter default spacing
+.media-heading {
+  margin-top: 0;
+  margin-bottom: 5px;
+}
+
+// Media list variation
+//
+// Undo default ul/ol styles
+.media-list {
+  padding-left: 0;
+  list-style: none;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_dropdowns.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_dropdowns.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_dropdowns.scss	(revision 3762)
@@ -0,0 +1,213 @@
+//
+// Dropdown menus
+// --------------------------------------------------
+
+
+// Dropdown arrow/caret
+.caret {
+  display: inline-block;
+  width: 0;
+  height: 0;
+  margin-left: 2px;
+  vertical-align: middle;
+  border-top: $caret-width-base dashed;
+  border-top: $caret-width-base solid \9; // IE8
+  border-right: $caret-width-base solid transparent;
+  border-left: $caret-width-base solid transparent;
+}
+
+// The dropdown wrapper (div)
+.dropup,
+.dropdown {
+  position: relative;
+}
+
+// Prevent the focus on the dropdown toggle when closing dropdowns
+.dropdown-toggle:focus {
+  outline: 0;
+}
+
+// The dropdown menu (ul)
+.dropdown-menu {
+  position: absolute;
+  top: 100%;
+  left: 0;
+  z-index: $zindex-dropdown;
+  display: none; // none by default, but block on "open" of the menu
+  float: left;
+  min-width: 160px;
+  padding: 5px 0;
+  margin: 2px 0 0; // override default ul
+  font-size: $font-size-base;
+  text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer)
+  list-style: none;
+  background-color: $dropdown-bg;
+  background-clip: padding-box;
+  border: 1px solid $dropdown-fallback-border; // IE8 fallback
+  border: 1px solid $dropdown-border;
+  border-radius: $border-radius-base;
+  @include box-shadow(0 6px 12px rgba(0, 0, 0, .175));
+
+  // Aligns the dropdown menu to right
+  //
+  // Deprecated as of 3.1.0 in favor of `.dropdown-menu-[dir]`
+  &.pull-right {
+    right: 0;
+    left: auto;
+  }
+
+  // Dividers (basically an hr) within the dropdown
+  .divider {
+    @include nav-divider($dropdown-divider-bg);
+  }
+
+  // Links within the dropdown menu
+  > li > a {
+    display: block;
+    padding: 3px 20px;
+    clear: both;
+    font-weight: 400;
+    line-height: $line-height-base;
+    color: $dropdown-link-color;
+    white-space: nowrap; // prevent links from randomly breaking onto new lines
+
+    &:hover,
+    &:focus {
+      color: $dropdown-link-hover-color;
+      text-decoration: none;
+      background-color: $dropdown-link-hover-bg;
+    }
+  }
+}
+
+// Active state
+.dropdown-menu > .active > a {
+  &,
+  &:hover,
+  &:focus {
+    color: $dropdown-link-active-color;
+    text-decoration: none;
+    background-color: $dropdown-link-active-bg;
+    outline: 0;
+  }
+}
+
+// Disabled state
+//
+// Gray out text and ensure the hover/focus state remains gray
+
+.dropdown-menu > .disabled > a {
+  &,
+  &:hover,
+  &:focus {
+    color: $dropdown-link-disabled-color;
+  }
+
+  // Nuke hover/focus effects
+  &:hover,
+  &:focus {
+    text-decoration: none;
+    cursor: $cursor-disabled;
+    background-color: transparent;
+    background-image: none; // Remove CSS gradient
+    @include reset-filter;
+  }
+}
+
+// Open state for the dropdown
+.open {
+  // Show the menu
+  > .dropdown-menu {
+    display: block;
+  }
+
+  // Remove the outline when :focus is triggered
+  > a {
+    outline: 0;
+  }
+}
+
+// Menu positioning
+//
+// Add extra class to `.dropdown-menu` to flip the alignment of the dropdown
+// menu with the parent.
+.dropdown-menu-right {
+  right: 0;
+  left: auto; // Reset the default from `.dropdown-menu`
+}
+// With v3, we enabled auto-flipping if you have a dropdown within a right
+// aligned nav component. To enable the undoing of that, we provide an override
+// to restore the default dropdown menu alignment.
+//
+// This is only for left-aligning a dropdown menu within a `.navbar-right` or
+// `.pull-right` nav component.
+.dropdown-menu-left {
+  right: auto;
+  left: 0;
+}
+
+// Dropdown section headers
+.dropdown-header {
+  display: block;
+  padding: 3px 20px;
+  font-size: $font-size-small;
+  line-height: $line-height-base;
+  color: $dropdown-header-color;
+  white-space: nowrap; // as with > li > a
+}
+
+// Backdrop to catch body clicks on mobile, etc.
+.dropdown-backdrop {
+  position: fixed;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  z-index: ($zindex-dropdown - 10);
+}
+
+// Right aligned dropdowns
+.pull-right > .dropdown-menu {
+  right: 0;
+  left: auto;
+}
+
+// Allow for dropdowns to go bottom up (aka, dropup-menu)
+//
+// Just add .dropup after the standard .dropdown class and you're set, bro.
+// TODO: abstract this so that the navbar fixed styles are not placed here?
+
+.dropup,
+.navbar-fixed-bottom .dropdown {
+  // Reverse the caret
+  .caret {
+    content: "";
+    border-top: 0;
+    border-bottom: $caret-width-base dashed;
+    border-bottom: $caret-width-base solid \9; // IE8
+  }
+  // Different positioning for bottom up menu
+  .dropdown-menu {
+    top: auto;
+    bottom: 100%;
+    margin-bottom: 2px;
+  }
+}
+
+
+// Component alignment
+//
+// Reiterate per navbar.less and the modified component alignment there.
+
+@media (min-width: $grid-float-breakpoint) {
+  .navbar-right {
+    .dropdown-menu {
+      right: 0; left: auto;
+    }
+    // Necessary for overrides of the default right aligned menu.
+    // Will remove come v4 in all likelihood.
+    .dropdown-menu-left {
+      left: 0; right: auto;
+    }
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_panels.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_panels.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs3/assets/stylesheets/bootstrap/_panels.scss	(revision 3762)
@@ -0,0 +1,271 @@
+//
+// Panels
+// --------------------------------------------------
+
+
+// Base class
+.panel {
+  margin-bottom: $line-height-computed;
+  background-color: $panel-bg;
+  border: 1px solid transparent;
+  border-radius: $panel-border-radius;
+  @include box-shadow(0 1px 1px rgba(0, 0, 0, .05));
+}
+
+// Panel contents
+.panel-body {
+  padding: $panel-body-padding;
+  @include clearfix;
+}
+
+// Optional heading
+.panel-heading {
+  padding: $panel-heading-padding;
+  border-bottom: 1px solid transparent;
+  @include border-top-radius(($panel-border-radius - 1));
+
+  > .dropdown .dropdown-toggle {
+    color: inherit;
+  }
+}
+
+// Within heading, strip any `h*` tag of its default margins for spacing.
+.panel-title {
+  margin-top: 0;
+  margin-bottom: 0;
+  font-size: ceil(($font-size-base * 1.125));
+  color: inherit;
+
+  > a,
+  > small,
+  > .small,
+  > small > a,
+  > .small > a {
+    color: inherit;
+  }
+}
+
+// Optional footer (stays gray in every modifier class)
+.panel-footer {
+  padding: $panel-footer-padding;
+  background-color: $panel-footer-bg;
+  border-top: 1px solid $panel-inner-border;
+  @include border-bottom-radius(($panel-border-radius - 1));
+}
+
+
+// List groups in panels
+//
+// By default, space out list group content from panel headings to account for
+// any kind of custom content between the two.
+
+.panel {
+  > .list-group,
+  > .panel-collapse > .list-group {
+    margin-bottom: 0;
+
+    .list-group-item {
+      border-width: 1px 0;
+      border-radius: 0;
+    }
+
+    // Add border top radius for first one
+    &:first-child {
+      .list-group-item:first-child {
+        border-top: 0;
+        @include border-top-radius(($panel-border-radius - 1));
+      }
+    }
+
+    // Add border bottom radius for last one
+    &:last-child {
+      .list-group-item:last-child {
+        border-bottom: 0;
+        @include border-bottom-radius(($panel-border-radius - 1));
+      }
+    }
+  }
+  > .panel-heading + .panel-collapse > .list-group {
+    .list-group-item:first-child {
+      @include border-top-radius(0);
+    }
+  }
+}
+// Collapse space between when there's no additional content.
+.panel-heading + .list-group {
+  .list-group-item:first-child {
+    border-top-width: 0;
+  }
+}
+.list-group + .panel-footer {
+  border-top-width: 0;
+}
+
+// Tables in panels
+//
+// Place a non-bordered `.table` within a panel (not within a `.panel-body`) and
+// watch it go full width.
+
+.panel {
+  > .table,
+  > .table-responsive > .table,
+  > .panel-collapse > .table {
+    margin-bottom: 0;
+
+    caption {
+      padding-right: $panel-body-padding;
+      padding-left: $panel-body-padding;
+    }
+  }
+  // Add border top radius for first one
+  > .table:first-child,
+  > .table-responsive:first-child > .table:first-child {
+    @include border-top-radius(($panel-border-radius - 1));
+
+    > thead:first-child,
+    > tbody:first-child {
+      > tr:first-child {
+        border-top-left-radius: ($panel-border-radius - 1);
+        border-top-right-radius: ($panel-border-radius - 1);
+
+        td:first-child,
+        th:first-child {
+          border-top-left-radius: ($panel-border-radius - 1);
+        }
+        td:last-child,
+        th:last-child {
+          border-top-right-radius: ($panel-border-radius - 1);
+        }
+      }
+    }
+  }
+  // Add border bottom radius for last one
+  > .table:last-child,
+  > .table-responsive:last-child > .table:last-child {
+    @include border-bottom-radius(($panel-border-radius - 1));
+
+    > tbody:last-child,
+    > tfoot:last-child {
+      > tr:last-child {
+        border-bottom-right-radius: ($panel-border-radius - 1);
+        border-bottom-left-radius: ($panel-border-radius - 1);
+
+        td:first-child,
+        th:first-child {
+          border-bottom-left-radius: ($panel-border-radius - 1);
+        }
+        td:last-child,
+        th:last-child {
+          border-bottom-right-radius: ($panel-border-radius - 1);
+        }
+      }
+    }
+  }
+  > .panel-body + .table,
+  > .panel-body + .table-responsive,
+  > .table + .panel-body,
+  > .table-responsive + .panel-body {
+    border-top: 1px solid $table-border-color;
+  }
+  > .table > tbody:first-child > tr:first-child th,
+  > .table > tbody:first-child > tr:first-child td {
+    border-top: 0;
+  }
+  > .table-bordered,
+  > .table-responsive > .table-bordered {
+    border: 0;
+    > thead,
+    > tbody,
+    > tfoot {
+      > tr {
+        > th:first-child,
+        > td:first-child {
+          border-left: 0;
+        }
+        > th:last-child,
+        > td:last-child {
+          border-right: 0;
+        }
+      }
+    }
+    > thead,
+    > tbody {
+      > tr:first-child {
+        > td,
+        > th {
+          border-bottom: 0;
+        }
+      }
+    }
+    > tbody,
+    > tfoot {
+      > tr:last-child {
+        > td,
+        > th {
+          border-bottom: 0;
+        }
+      }
+    }
+  }
+  > .table-responsive {
+    margin-bottom: 0;
+    border: 0;
+  }
+}
+
+
+// Collapsible panels (aka, accordion)
+//
+// Wrap a series of panels in `.panel-group` to turn them into an accordion with
+// the help of our collapse JavaScript plugin.
+
+.panel-group {
+  margin-bottom: $line-height-computed;
+
+  // Tighten up margin so it's only between panels
+  .panel {
+    margin-bottom: 0;
+    border-radius: $panel-border-radius;
+
+    + .panel {
+      margin-top: 5px;
+    }
+  }
+
+  .panel-heading {
+    border-bottom: 0;
+
+    + .panel-collapse > .panel-body,
+    + .panel-collapse > .list-group {
+      border-top: 1px solid $panel-inner-border;
+    }
+  }
+
+  .panel-footer {
+    border-top: 0;
+    + .panel-collapse .panel-body {
+      border-bottom: 1px solid $panel-inner-border;
+    }
+  }
+}
+
+
+// Contextual variations
+.panel-default {
+  @include panel-variant($panel-default-border, $panel-default-text, $panel-default-heading-bg, $panel-default-border);
+}
+.panel-primary {
+  @include panel-variant($panel-primary-border, $panel-primary-text, $panel-primary-heading-bg, $panel-primary-border);
+}
+.panel-success {
+  @include panel-variant($panel-success-border, $panel-success-text, $panel-success-heading-bg, $panel-success-border);
+}
+.panel-info {
+  @include panel-variant($panel-info-border, $panel-info-text, $panel-info-heading-bg, $panel-info-border);
+}
+.panel-warning {
+  @include panel-variant($panel-warning-border, $panel-warning-text, $panel-warning-heading-bg, $panel-warning-border);
+}
+.panel-danger {
+  @include panel-variant($panel-danger-border, $panel-danger-text, $panel-danger-heading-bg, $panel-danger-border);
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/bootstrap-grid.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/bootstrap-grid.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/bootstrap-grid.scss	(revision 3762)
@@ -0,0 +1,30 @@
+/*!
+ * Bootstrap Grid v4.6.0 (https://getbootstrap.com/)
+ * Copyright 2011-2021 The Bootstrap Authors
+ * Copyright 2011-2021 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ */
+
+html {
+  box-sizing: border-box;
+  -ms-overflow-style: scrollbar;
+}
+
+*,
+*::before,
+*::after {
+  box-sizing: inherit;
+}
+
+@import "functions";
+@import "variables";
+
+@import "mixins/deprecate";
+@import "mixins/breakpoints";
+@import "mixins/grid-framework";
+@import "mixins/grid";
+
+@import "grid";
+@import "utilities/display";
+@import "utilities/flex";
+@import "utilities/spacing";
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_spinners.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_spinners.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_spinners.scss	(revision 3762)
@@ -0,0 +1,69 @@
+//
+// Rotating border
+//
+
+@keyframes spinner-border {
+  to { transform: rotate(360deg); }
+}
+
+.spinner-border {
+  display: inline-block;
+  width: $spinner-width;
+  height: $spinner-height;
+  vertical-align: text-bottom;
+  border: $spinner-border-width solid currentColor;
+  border-right-color: transparent;
+  // stylelint-disable-next-line property-disallowed-list
+  border-radius: 50%;
+  animation: .75s linear infinite spinner-border;
+}
+
+.spinner-border-sm {
+  width: $spinner-width-sm;
+  height: $spinner-height-sm;
+  border-width: $spinner-border-width-sm;
+}
+
+//
+// Growing circle
+//
+
+@keyframes spinner-grow {
+  0% {
+    transform: scale(0);
+  }
+  50% {
+    opacity: 1;
+    transform: none;
+  }
+}
+
+.spinner-grow {
+  display: inline-block;
+  width: $spinner-width;
+  height: $spinner-height;
+  vertical-align: text-bottom;
+  background-color: currentColor;
+  // stylelint-disable-next-line property-disallowed-list
+  border-radius: 50%;
+  opacity: 0;
+  animation: .75s linear infinite spinner-grow;
+}
+
+.spinner-grow-sm {
+  width: $spinner-width-sm;
+  height: $spinner-height-sm;
+}
+
+@if $enable-prefers-reduced-motion-media-query {
+  @media (prefers-reduced-motion: reduce) {
+    .spinner-border,
+    .spinner-grow {
+      animation-duration: 1.5s;
+      -webkit-animation-duration: 1.5s;
+      -moz-animation-duration: 1.5s;
+      -ms-animation-duration: 1.5s;
+      -o-animation-duration: 1.5s;
+    }
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_close.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_close.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_close.scss	(revision 3762)
@@ -0,0 +1,40 @@
+.close {
+  float: right;
+  @include font-size($close-font-size);
+  font-weight: $close-font-weight;
+  line-height: 1;
+  color: $close-color;
+  text-shadow: $close-text-shadow;
+  opacity: .5;
+
+  // Override <a>'s hover style
+  @include hover() {
+    color: $close-color;
+    text-decoration: none;
+  }
+
+  &:not(:disabled):not(.disabled) {
+    @include hover-focus() {
+      opacity: .75;
+    }
+  }
+}
+
+// Additional properties for button version
+// iOS requires the button element instead of an anchor tag.
+// If you want the anchor version, it requires `href="#"`.
+// See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile
+
+// stylelint-disable-next-line selector-no-qualifying-type
+button.close {
+  padding: 0;
+  background-color: transparent;
+  border: 0;
+}
+
+// Future-proof disabling of clicks on `<a>` elements
+
+// stylelint-disable-next-line selector-no-qualifying-type
+a.close.disabled {
+  pointer-events: none;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_list-group.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_list-group.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_list-group.scss	(revision 3762)
@@ -0,0 +1,161 @@
+// Base class
+//
+// Easily usable on <ul>, <ol>, or <div>.
+
+.list-group {
+  display: flex;
+  display: -webkit-flex;
+  flex-direction: column;
+  -webkit-flex-direction: column;
+
+  // No need to set list-style: none; since .list-group-item is block level
+  padding-left: 0; // reset padding because ul and ol
+  margin-bottom: 0;
+  @include border-radius($list-group-border-radius);
+}
+
+
+// Interactive list items
+//
+// Use anchor or button elements instead of `li`s or `div`s to create interactive
+// list items. Includes an extra `.active` modifier class for selected items.
+
+.list-group-item-action {
+  width: 100%; // For `<button>`s (anchors become 100% by default though)
+  color: $list-group-action-color;
+  text-align: inherit; // For `<button>`s (anchors inherit)
+
+  // Hover state
+  @include hover-focus() {
+    z-index: 1; // Place hover/focus items above their siblings for proper border styling
+    color: $list-group-action-hover-color;
+    text-decoration: none;
+    background-color: $list-group-hover-bg;
+  }
+
+  &:active {
+    color: $list-group-action-active-color;
+    background-color: $list-group-action-active-bg;
+  }
+}
+
+
+// Individual list items
+//
+// Use on `li`s or `div`s within the `.list-group` parent.
+
+.list-group-item {
+  position: relative;
+  display: block;
+  padding: $list-group-item-padding-y $list-group-item-padding-x;
+  color: $list-group-color;
+  text-decoration: if($link-decoration == none, null, none);
+  -webkit-text-decoration: if($link-decoration == none, null, none);
+  -moz-text-decoration: if($link-decoration == none, null, none);
+  -ms-text-decoration: if($link-decoration == none, null, none);
+  -o-text-decoration: if($link-decoration == none, null, none);
+  background-color: $list-group-bg;
+  border: $list-group-border-width solid $list-group-border-color;
+
+  &:first-child {
+    @include border-top-radius(inherit);
+  }
+
+  &:last-child {
+    @include border-bottom-radius(inherit);
+  }
+
+  &.disabled,
+  &:disabled {
+    color: $list-group-disabled-color;
+    pointer-events: none;
+    background-color: $list-group-disabled-bg;
+  }
+
+  // Include both here for `<a>`s and `<button>`s
+  &.active {
+    z-index: 2; // Place active items above their siblings for proper border styling
+    color: $list-group-active-color;
+    background-color: $list-group-active-bg;
+    border-color: $list-group-active-border-color;
+  }
+
+  & + & {
+    border-top-width: 0;
+
+    &.active {
+      margin-top: -$list-group-border-width;
+      border-top-width: $list-group-border-width;
+    }
+  }
+}
+
+
+// Horizontal
+//
+// Change the layout of list group items from vertical (default) to horizontal.
+
+@each $breakpoint in map-keys($grid-breakpoints) {
+  @include media-breakpoint-up($breakpoint) {
+    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
+
+    .list-group-horizontal#{$infix} {
+      flex-direction: row;
+      -webkit-flex-direction: row;
+
+      > .list-group-item {
+        &:first-child {
+          @include border-bottom-left-radius($list-group-border-radius);
+          @include border-top-right-radius(0);
+        }
+
+        &:last-child {
+          @include border-top-right-radius($list-group-border-radius);
+          @include border-bottom-left-radius(0);
+        }
+
+        &.active {
+          margin-top: 0;
+        }
+
+        + .list-group-item {
+          border-top-width: $list-group-border-width;
+          border-left-width: 0;
+
+          &.active {
+            margin-left: -$list-group-border-width;
+            border-left-width: $list-group-border-width;
+          }
+        }
+      }
+    }
+  }
+}
+
+
+// Flush list items
+//
+// Remove borders and border-radius to keep list group items edge-to-edge. Most
+// useful within other components (e.g., cards).
+
+.list-group-flush {
+  @include border-radius(0);
+
+  > .list-group-item {
+    border-width: 0 0 $list-group-border-width;
+
+    &:last-child {
+      border-bottom-width: 0;
+    }
+  }
+}
+
+
+// Contextual variants
+//
+// Add modifier classes to change text and background color on individual items.
+// Organizationally, this must come after the `:hover` states.
+
+@each $color, $value in $theme-colors {
+  @include list-group-item-variant($color, theme-color-level($color, -9), theme-color-level($color, 6));
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_breadcrumb.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_breadcrumb.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_breadcrumb.scss	(revision 3762)
@@ -0,0 +1,44 @@
+.breadcrumb {
+  display: flex;
+  display: -webkit-flex;
+  flex-wrap: wrap;
+  -webkit-flex-wrap: wrap;
+  padding: $breadcrumb-padding-y $breadcrumb-padding-x;
+  margin-bottom: $breadcrumb-margin-bottom;
+  @include font-size($breadcrumb-font-size);
+  list-style: none;
+  background-color: $breadcrumb-bg;
+  @include border-radius($breadcrumb-border-radius);
+}
+
+.breadcrumb-item {
+  // The separator between breadcrumbs (by default, a forward-slash: "/")
+  + .breadcrumb-item {
+    padding-left: $breadcrumb-item-padding;
+
+    &::before {
+      float: left; // Suppress inline spacings and underlining of the separator
+      padding-right: $breadcrumb-item-padding;
+      color: $breadcrumb-divider-color;
+      content: escape-svg($breadcrumb-divider);
+    }
+  }
+
+  // IE9-11 hack to properly handle hyperlink underlines for breadcrumbs built
+  // without `<ul>`s. The `::before` pseudo-element generates an element
+  // *within* the .breadcrumb-item and thereby inherits the `text-decoration`.
+  //
+  // To trick IE into suppressing the underline, we give the pseudo-element an
+  // underline and then immediately remove it.
+  + .breadcrumb-item:hover::before {
+    text-decoration: underline;
+  }
+  // stylelint-disable-next-line no-duplicate-selectors
+  + .breadcrumb-item:hover::before {
+    text-decoration: none;
+  }
+
+  &.active {
+    color: $breadcrumb-active-color;
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_mixins.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_mixins.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_mixins.scss	(revision 3762)
@@ -0,0 +1,47 @@
+// Toggles
+//
+// Used in conjunction with global variables to enable certain theme features.
+
+// Vendor
+@import "vendor/rfs";
+
+// Deprecate
+@import "mixins/deprecate";
+
+// Utilities
+@import "mixins/breakpoints";
+@import "mixins/hover";
+@import "mixins/image";
+@import "mixins/badge";
+@import "mixins/resize";
+@import "mixins/screen-reader";
+@import "mixins/size";
+@import "mixins/reset-text";
+@import "mixins/text-emphasis";
+@import "mixins/text-hide";
+@import "mixins/text-truncate";
+@import "mixins/visibility";
+
+// Components
+@import "mixins/alert";
+@import "mixins/buttons";
+@import "mixins/caret";
+@import "mixins/pagination";
+@import "mixins/lists";
+@import "mixins/list-group";
+@import "mixins/nav-divider";
+@import "mixins/forms";
+@import "mixins/table-row";
+
+// Skins
+@import "mixins/background-variant";
+@import "mixins/border-radius";
+@import "mixins/box-shadow";
+@import "mixins/gradients";
+@import "mixins/transition";
+
+// Layout
+@import "mixins/clearfix";
+@import "mixins/grid-framework";
+@import "mixins/grid";
+@import "mixins/float";
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_variables.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_variables.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_variables.scss	(revision 3762)
@@ -0,0 +1,1223 @@
+// Variables
+//
+// Variables should follow the `$component-state-property-size` formula for
+// consistent naming. Ex: $nav-link-disabled-color and $modal-content-box-shadow-xs.
+
+// Color system
+//
+// Sets colors used throughout app
+
+$white:    #fff !default;
+$gray-100: #f8f9fa !default;
+$gray-200: #e9ecef !default;
+$gray-300: #dee2e6 !default;
+$gray-400: #ced4da !default;
+$gray-500: #adb5bd !default;
+$gray-600: #6c757d !default;
+$gray-700: #495057 !default;
+$gray-800: #343a40 !default;
+$gray-900: #212529 !default;
+$black:    #000 !default;
+
+$grays: () !default;
+$grays: map-merge(
+  (
+    "100": $gray-100,
+    "200": $gray-200,
+    "300": $gray-300,
+    "400": $gray-400,
+    "500": $gray-500,
+    "600": $gray-600,
+    "700": $gray-700,
+    "800": $gray-800,
+    "900": $gray-900
+  ),
+  $grays
+);
+
+$blue:    #007bff !default;
+$indigo:  #6610f2 !default;
+$purple:  #6f42c1 !default;
+$pink:    #e83e8c !default;
+$red:     #dc3545 !default;
+$orange:  #fd7e14 !default;
+$yellow:  #ffc107 !default;
+$green:   #28a745 !default;
+$teal:    #20c997 !default;
+$cyan:    #17a2b8 !default;
+
+$colors: () !default;
+$colors: map-merge(
+  (
+    "blue":       $blue,
+    "indigo":     $indigo,
+    "purple":     $purple,
+    "pink":       $pink,
+    "red":        $red,
+    "orange":     $orange,
+    "yellow":     $yellow,
+    "green":      $green,
+    "teal":       $teal,
+    "cyan":       $cyan,
+    "white":      $white,
+    "gray":       $gray-600,
+    "gray-dark":  $gray-800
+  ),
+  $colors
+);
+
+// Semantically, $secondary is closest to BS3's 'default' theme color;
+// so use that if specified. Otherwise, use a light instead of dark gray
+// default color for $default since that's closer to bootstrap 3's default
+$default: if(variable-exists("secondary"), $secondary, $gray-300) !default;
+
+$primary:       $blue !default;
+$secondary:     $gray-600 !default;
+$success:       $green !default;
+$info:          $cyan !default;
+$warning:       $yellow !default;
+$danger:        $red !default;
+$light:         $gray-100 !default;
+$dark:          $gray-800 !default;
+
+$theme-colors: () !default;
+$theme-colors: map-merge(
+  (
+    // default needs to be 1st so that .btn-default comes before .btn-primary
+    // & therefore has lower priority.
+    "default":    $default,
+    "primary":    $primary,
+    "secondary":  $secondary,
+    "success":    $success,
+    "info":       $info,
+    "warning":    $warning,
+    "danger":     $danger,
+    "light":      $light,
+    "dark":       $dark
+  ),
+  $theme-colors
+);
+
+// Set a specific jump point for requesting color jumps
+$theme-color-interval:      8% !default;
+
+// The contrast ratio to reach against white, to determine if color changes from "light" to "dark". Acceptable values for WCAG 2.0 are 3, 4.5 and 7.
+// See https://www.w3.org/TR/WCAG20/#visual-audio-contrast-contrast
+$min-contrast-ratio:   3 !default;
+
+// Customize the light and dark text constrasting colors for use in (BS5's) color-contrast() function.
+$color-contrast-dark:      $black !default;
+$color-contrast-light:     $white !default;
+
+// Characters which are escaped by the escape-svg function
+$escaped-characters: (
+  ("<", "%3c"),
+  (">", "%3e"),
+  ("#", "%23"),
+  ("(", "%28"),
+  (")", "%29"),
+) !default;
+
+
+// Options
+//
+// Quickly modify global styling by enabling or disabling optional features.
+
+$enable-caret:                                true !default;
+$enable-rounded:                              true !default;
+$enable-shadows:                              false !default;
+$enable-gradients:                            false !default;
+$enable-transitions:                          true !default;
+$enable-prefers-reduced-motion-media-query:   true !default;
+$enable-hover-media-query:                    false !default; // Deprecated, no longer affects any compiled CSS
+$enable-grid-classes:                         true !default;
+$enable-pointer-cursor-for-buttons:           true !default;
+$enable-print-styles:                         true !default;
+$enable-responsive-font-sizes:                false !default;
+$enable-validation-icons:                     true !default;
+$enable-deprecation-messages:                 true !default;
+
+
+// Spacing
+//
+// Control the default styling of most Bootstrap elements by modifying these
+// variables. Mostly focused on spacing.
+// You can add more entries to the $spacers map, should you need more variation.
+
+$spacer: 1rem !default;
+$spacers: () !default;
+$spacers: map-merge(
+  (
+    0: 0,
+    1: ($spacer * .25),
+    2: ($spacer * .5),
+    3: $spacer,
+    4: ($spacer * 1.5),
+    5: ($spacer * 3)
+  ),
+  $spacers
+);
+
+// This variable affects the `.h-*` and `.w-*` classes.
+$sizes: () !default;
+$sizes: map-merge(
+  (
+    25: 25%,
+    50: 50%,
+    75: 75%,
+    100: 100%,
+    auto: auto
+  ),
+  $sizes
+);
+
+
+// Body
+//
+// Settings for the `<body>` element.
+
+$body-bg:                   $white !default;
+$body-color:                $gray-900 !default;
+
+
+// Links
+//
+// Style anchor elements.
+
+$link-color:                              theme-color("primary") !default;
+$link-decoration:                         none !default;
+$link-hover-color:                        darken($link-color, 15%) !default;
+$link-hover-decoration:                   underline !default;
+// Darken percentage for links with `.text-*` class (e.g. `.text-success`)
+$emphasized-link-hover-darken-percentage: 15% !default;
+
+// Paragraphs
+//
+// Style p element.
+
+$paragraph-margin-bottom:   1rem !default;
+
+
+// Grid breakpoints
+//
+// Define the minimum dimensions at which your layout will change,
+// adapting to different screen sizes, for use in media queries.
+
+$grid-breakpoints: (
+  xs: 0,
+  sm: 576px,
+  md: 768px,
+  lg: 992px,
+  xl: 1200px
+) !default;
+
+@include _assert-ascending($grid-breakpoints, "$grid-breakpoints");
+@include _assert-starts-at-zero($grid-breakpoints, "$grid-breakpoints");
+
+
+// Grid containers
+//
+// Define the maximum width of `.container` for different screen sizes.
+
+$container-max-widths: (
+  sm: 540px,
+  md: 720px,
+  lg: 960px,
+  xl: 1140px
+) !default;
+
+@include _assert-ascending($container-max-widths, "$container-max-widths");
+
+
+// Grid columns
+//
+// Set the number of columns and specify the width of the gutters.
+
+$grid-columns:                12 !default;
+$grid-gutter-width:           30px !default;
+$grid-row-columns:            6 !default;
+
+
+// Components
+//
+// Define common padding and border radius sizes and more.
+
+$line-height-lg:              1.5 !default;
+$line-height-sm:              1.5 !default;
+
+$border-width:                1px !default;
+$border-color:                $gray-300 !default;
+
+$border-radius:               .25rem !default;
+$border-radius-lg:            .3rem !default;
+$border-radius-sm:            .2rem !default;
+
+$rounded-pill:                50rem !default;
+
+$box-shadow-sm:               0 .125rem .25rem rgba($black, .075) !default;
+$box-shadow:                  0 .5rem 1rem rgba($black, .15) !default;
+$box-shadow-lg:               0 1rem 3rem rgba($black, .175) !default;
+
+
+$component-active-bg:         theme-color("primary") !default;
+$component-active-color:      color-contrast($component-active-bg) !default;
+
+$caret-width:                 .3em !default;
+$caret-vertical-align:        $caret-width * .85 !default;
+$caret-spacing:               $caret-width * .85 !default;
+
+$transition-base:             all .2s ease-in-out !default;
+$transition-fade:             opacity .15s linear !default;
+$transition-collapse:         height .35s ease !default;
+
+$embed-responsive-aspect-ratios: () !default;
+$embed-responsive-aspect-ratios: join(
+  (
+    (21 9),
+    (16 9),
+    (4 3),
+    (1 1),
+  ),
+  $embed-responsive-aspect-ratios
+);
+
+// Typography
+//
+// Font, line-height, and color for body text, headings, and more.
+
+// stylelint-disable value-keyword-case
+$font-family-sans-serif:      -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji" !default;
+$font-family-monospace:       SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace !default;
+$font-family-base:            $font-family-sans-serif !default;
+// stylelint-enable value-keyword-case
+
+$font-size-base:              1rem !default; // Assumes the browser default, typically `16px`
+$font-size-lg:                $font-size-base * 1.25 !default;
+$font-size-sm:                $font-size-base * .875 !default;
+
+$font-weight-lighter:         lighter !default;
+$font-weight-light:           300 !default;
+$font-weight-normal:          400 !default;
+$font-weight-bold:            700 !default;
+$font-weight-bolder:          bolder !default;
+
+$font-weight-base:            $font-weight-normal !default;
+$line-height-base:            1.5 !default;
+
+$h1-font-size:                $font-size-base * 2.5 !default;
+$h2-font-size:                $font-size-base * 2 !default;
+$h3-font-size:                $font-size-base * 1.75 !default;
+$h4-font-size:                $font-size-base * 1.5 !default;
+$h5-font-size:                $font-size-base * 1.25 !default;
+$h6-font-size:                $font-size-base !default;
+
+$headings-margin-bottom:      $spacer / 2 !default;
+$headings-font-family:        null !default;
+$headings-font-weight:        500 !default;
+$headings-line-height:        1.2 !default;
+$headings-color:              null !default;
+
+$display1-size:               6rem !default;
+$display2-size:               5.5rem !default;
+$display3-size:               4.5rem !default;
+$display4-size:               3.5rem !default;
+
+$display1-weight:             300 !default;
+$display2-weight:             300 !default;
+$display3-weight:             300 !default;
+$display4-weight:             300 !default;
+$display-line-height:         $headings-line-height !default;
+
+$lead-font-size:              $font-size-base * 1.25 !default;
+$lead-font-weight:            300 !default;
+
+$small-font-size:             80% !default;
+
+$text-muted:                  $gray-600 !default;
+
+$blockquote-small-color:      $gray-600 !default;
+$blockquote-small-font-size:  $small-font-size !default;
+$blockquote-font-size:        $font-size-base * 1.25 !default;
+$blockquote-border-width:     $spacer / 4 !default;
+$blockquote-border-color:     $gray-200 !default;
+
+
+$hr-border-color:             rgba($black, .1) !default;
+$hr-border-width:             $border-width !default;
+
+$mark-padding:                .2em !default;
+
+$dt-font-weight:              $font-weight-bold !default;
+
+$kbd-box-shadow:              inset 0 -.1rem 0 rgba($black, .25) !default;
+$nested-kbd-font-weight:      $font-weight-bold !default;
+
+$list-inline-padding:         .5rem !default;
+
+$mark-bg:                     #fcf8e3 !default;
+
+$hr-margin-y:                 $spacer !default;
+
+
+// Tables
+//
+// Customizes the `.table` component with basic values, each used across all table variations.
+
+$table-cell-padding:          .75rem !default;
+$table-cell-padding-sm:       .3rem !default;
+
+$table-color:                 $body-color !default;
+$table-bg:                    null !default;
+$table-accent-bg:             rgba($black, .05) !default;
+$table-hover-color:           $table-color !default;
+$table-hover-bg:              rgba($black, .075) !default;
+$table-active-bg:             $table-hover-bg !default;
+
+$table-border-width:          $border-width !default;
+$table-border-color:          $border-color !default;
+
+$table-head-bg:               $gray-200 !default;
+$table-head-color:            $gray-700 !default;
+$table-th-font-weight:        null !default;
+
+$table-dark-color:            $white !default;
+$table-dark-bg:               $gray-800 !default;
+$table-dark-accent-bg:        rgba($white, .05) !default;
+$table-dark-hover-color:      $table-dark-color !default;
+$table-dark-hover-bg:         rgba($white, .075) !default;
+$table-dark-border-color:     lighten($table-dark-bg, 7.5%) !default;
+
+$table-striped-order:         odd !default;
+
+$table-caption-color:         $text-muted !default;
+
+$table-bg-level:              -9 !default;
+$table-border-level:          -6 !default;
+
+
+// Buttons + Forms
+//
+// Shared variables that are reassigned to `$input-` and `$btn-` specific variables.
+
+$input-btn-padding-y:         .375rem !default;
+$input-btn-padding-x:         .75rem !default;
+$input-btn-font-family:       null !default;
+$input-btn-font-size:         $font-size-base !default;
+$input-btn-line-height:       $line-height-base !default;
+
+$input-btn-focus-width:       .2rem !default;
+$input-btn-focus-color:       rgba($component-active-bg, .25) !default;
+$input-btn-focus-box-shadow:  0 0 0 $input-btn-focus-width $input-btn-focus-color !default;
+
+$input-btn-padding-y-sm:      .25rem !default;
+$input-btn-padding-x-sm:      .5rem !default;
+$input-btn-font-size-sm:      $font-size-sm !default;
+$input-btn-line-height-sm:    $line-height-sm !default;
+
+$input-btn-padding-y-lg:      .5rem !default;
+$input-btn-padding-x-lg:      1rem !default;
+$input-btn-font-size-lg:      $font-size-lg !default;
+$input-btn-line-height-lg:    $line-height-lg !default;
+
+$input-btn-border-width:      $border-width !default;
+
+
+// Buttons
+//
+// For each of Bootstrap's buttons, define text, background, and border color.
+
+$btn-padding-y:               $input-btn-padding-y !default;
+$btn-padding-x:               $input-btn-padding-x !default;
+$btn-font-family:             $input-btn-font-family !default;
+$btn-font-size:               $input-btn-font-size !default;
+$btn-line-height:             $input-btn-line-height !default;
+$btn-white-space:             null !default; // Set to `nowrap` to prevent text wrapping
+
+$btn-padding-y-sm:            $input-btn-padding-y-sm !default;
+$btn-padding-x-sm:            $input-btn-padding-x-sm !default;
+$btn-font-size-sm:            $input-btn-font-size-sm !default;
+$btn-line-height-sm:          $input-btn-line-height-sm !default;
+
+$btn-padding-y-lg:            $input-btn-padding-y-lg !default;
+$btn-padding-x-lg:            $input-btn-padding-x-lg !default;
+$btn-font-size-lg:            $input-btn-font-size-lg !default;
+$btn-line-height-lg:          $input-btn-line-height-lg !default;
+
+$btn-border-width:            $input-btn-border-width !default;
+
+$btn-font-weight:             $font-weight-normal !default;
+$btn-box-shadow:              inset 0 1px 0 rgba($white, .15), 0 1px 1px rgba($black, .075) !default;
+$btn-focus-width:             $input-btn-focus-width !default;
+$btn-focus-box-shadow:        $input-btn-focus-box-shadow !default;
+$btn-disabled-opacity:        .65 !default;
+$btn-active-box-shadow:       inset 0 3px 5px rgba($black, .125) !default;
+
+$btn-link-disabled-color:     $gray-600 !default;
+
+$btn-block-spacing-y:         .5rem !default;
+
+// Allows for customizing button radius independently from global border radius
+$btn-border-radius:           $border-radius !default;
+$btn-border-radius-lg:        $border-radius-lg !default;
+$btn-border-radius-sm:        $border-radius-sm !default;
+
+$btn-transition:              color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;
+
+
+// Forms
+//
+// Settings related to input forms
+
+$label-margin-bottom:                   .5rem !default;
+
+$input-padding-y:                       $input-btn-padding-y !default;
+$input-padding-x:                       $input-btn-padding-x !default;
+$input-font-family:                     $input-btn-font-family !default;
+$input-font-size:                       $input-btn-font-size !default;
+$input-font-weight:                     $font-weight-base !default;
+$input-line-height:                     $input-btn-line-height !default;
+
+$input-padding-y-sm:                    $input-btn-padding-y-sm !default;
+$input-padding-x-sm:                    $input-btn-padding-x-sm !default;
+$input-font-size-sm:                    $input-btn-font-size-sm !default;
+$input-line-height-sm:                  $input-btn-line-height-sm !default;
+
+$input-padding-y-lg:                    $input-btn-padding-y-lg !default;
+$input-padding-x-lg:                    $input-btn-padding-x-lg !default;
+$input-font-size-lg:                    $input-btn-font-size-lg !default;
+$input-line-height-lg:                  $input-btn-line-height-lg !default;
+
+$input-bg:                              $white !default;
+$input-disabled-bg:                     $gray-200 !default;
+
+$input-color:                           $gray-700 !default;
+$input-border-color:                    $gray-400 !default;
+$input-border-width:                    $input-btn-border-width !default;
+$input-box-shadow:                      inset 0 1px 1px rgba($black, .075) !default;
+
+$input-border-radius:                   $border-radius !default;
+$input-border-radius-lg:                $border-radius-lg !default;
+$input-border-radius-sm:                $border-radius-sm !default;
+
+$input-focus-bg:                        $input-bg !default;
+$input-focus-border-color:              lighten($component-active-bg, 25%) !default;
+$input-focus-color:                     $input-color !default;
+$input-focus-width:                     $input-btn-focus-width !default;
+$input-focus-box-shadow:                $input-btn-focus-box-shadow !default;
+
+$input-placeholder-color:               $gray-600 !default;
+$input-plaintext-color:                 $body-color !default;
+
+$input-height-border:                   $input-border-width * 2 !default;
+
+$input-height-inner:                    add($input-line-height * 1em, $input-padding-y * 2) !default;
+$input-height-inner-half:               add($input-line-height * .5em, $input-padding-y) !default;
+$input-height-inner-quarter:            add($input-line-height * .25em, $input-padding-y / 2) !default;
+
+$input-height:                          add($input-line-height * 1em, add($input-padding-y * 2, $input-height-border, false)) !default;
+$input-height-sm:                       add($input-line-height-sm * 1em, add($input-padding-y-sm * 2, $input-height-border, false)) !default;
+$input-height-lg:                       add($input-line-height-lg * 1em, add($input-padding-y-lg * 2, $input-height-border, false)) !default;
+
+$input-transition:                      border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;
+
+$form-text-margin-top:                  .25rem !default;
+
+$form-check-input-gutter:               1.25rem !default;
+$form-check-input-margin-y:             .3rem !default;
+$form-check-input-margin-x:             .25rem !default;
+
+$form-check-inline-margin-x:            .75rem !default;
+$form-check-inline-input-margin-x:      .3125rem !default;
+
+$form-grid-gutter-width:                10px !default;
+$form-group-margin-bottom:              1rem !default;
+
+$input-group-addon-color:               $input-color !default;
+$input-group-addon-bg:                  $gray-200 !default;
+$input-group-addon-border-color:        $input-border-color !default;
+
+$custom-forms-transition:               background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;
+
+$custom-control-gutter:                 .5rem !default;
+$custom-control-spacer-x:               1rem !default;
+$custom-control-cursor:                 null !default;
+
+$custom-control-indicator-size:         1rem !default;
+$custom-control-indicator-bg:           $input-bg !default;
+
+$custom-control-indicator-bg-size:      50% 50% !default;
+$custom-control-indicator-box-shadow:   $input-box-shadow !default;
+$custom-control-indicator-border-color: $gray-500 !default;
+$custom-control-indicator-border-width: $input-border-width !default;
+
+$custom-control-label-color:            null !default;
+
+$custom-control-indicator-disabled-bg:          $input-disabled-bg !default;
+$custom-control-label-disabled-color:           $gray-600 !default;
+
+
+$custom-control-indicator-checked-bg:           $component-active-bg !default;
+$custom-control-indicator-checked-color:        color-contrast($custom-control-indicator-checked-bg, $component-active-color) !default;
+$custom-control-indicator-checked-disabled-bg:  rgba(theme-color("primary"), .5) !default;
+$custom-control-indicator-checked-box-shadow:   null !default;
+$custom-control-indicator-checked-border-color: $custom-control-indicator-checked-bg !default;
+
+$custom-control-indicator-focus-box-shadow:     $input-focus-box-shadow !default;
+$custom-control-indicator-focus-border-color:   $input-focus-border-color !default;
+
+
+$custom-control-indicator-active-bg:            lighten($component-active-bg, 35%) !default;
+$custom-control-indicator-active-color:         color-contrast($custom-control-indicator-active-bg, $component-active-color) !default;
+$custom-control-indicator-active-box-shadow:    null !default;
+$custom-control-indicator-active-border-color:  $custom-control-indicator-active-bg !default;
+
+$custom-checkbox-indicator-border-radius:       $border-radius !default;
+$custom-checkbox-indicator-icon-checked:        url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'><path fill='#{$custom-control-indicator-checked-color}' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/></svg>") !default;
+
+$custom-checkbox-indicator-indeterminate-bg:           $component-active-bg !default;
+$custom-checkbox-indicator-indeterminate-color:        color-contrast($custom-checkbox-indicator-indeterminate-bg, $custom-control-indicator-checked-color) !default;
+$custom-checkbox-indicator-icon-indeterminate:         url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'><path stroke='#{$custom-checkbox-indicator-indeterminate-color}' d='M0 2h4'/></svg>") !default;
+$custom-checkbox-indicator-indeterminate-box-shadow:   null !default;
+$custom-checkbox-indicator-indeterminate-border-color: $custom-checkbox-indicator-indeterminate-bg !default;
+
+$custom-radio-indicator-border-radius:          50% !default;
+$custom-radio-indicator-icon-checked:           url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'><circle r='3' fill='#{$custom-control-indicator-checked-color}'/></svg>") !default;
+
+$custom-switch-width:                           $custom-control-indicator-size * 1.75 !default;
+$custom-switch-indicator-border-radius:         $custom-control-indicator-size / 2 !default;
+$custom-switch-indicator-size:                  subtract($custom-control-indicator-size, $custom-control-indicator-border-width * 4) !default;
+
+$custom-select-padding-y:           $input-padding-y !default;
+$custom-select-padding-x:           $input-padding-x !default;
+$custom-select-font-family:         $input-font-family !default;
+$custom-select-font-size:           $input-font-size !default;
+$custom-select-height:              $input-height !default;
+$custom-select-indicator-padding:   1rem !default; // Extra padding to account for the presence of the background-image based indicator
+$custom-select-font-weight:         $input-font-weight !default;
+$custom-select-line-height:         $input-line-height !default;
+$custom-select-color:               $input-color !default;
+$custom-select-disabled-color:      $gray-600 !default;
+$custom-select-bg:                  $input-bg !default;
+$custom-select-disabled-bg:         $gray-200 !default;
+$custom-select-bg-size:             8px 10px !default; // In pixels because image dimensions
+$custom-select-indicator-color:     $gray-800 !default;
+$custom-select-indicator:           url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'><path fill='#{$custom-select-indicator-color}' d='M2 0L0 2h4zm0 5L0 3h4z'/></svg>") !default;
+$custom-select-background:          escape-svg($custom-select-indicator) right $custom-select-padding-x center / $custom-select-bg-size no-repeat !default; // Used so we can have multiple background elements (e.g., arrow and feedback icon)
+
+$custom-select-feedback-icon-padding-right: add(1em * .75, (2 * $custom-select-padding-y * .75) + $custom-select-padding-x + $custom-select-indicator-padding) !default;
+$custom-select-feedback-icon-position:      center right ($custom-select-padding-x + $custom-select-indicator-padding) !default;
+$custom-select-feedback-icon-size:          $input-height-inner-half $input-height-inner-half !default;
+
+$custom-select-border-width:        $input-border-width !default;
+$custom-select-border-color:        $input-border-color !default;
+$custom-select-border-radius:       $border-radius !default;
+$custom-select-box-shadow:          inset 0 1px 2px rgba($black, .075) !default;
+
+$custom-select-focus-border-color:  $input-focus-border-color !default;
+$custom-select-focus-width:         $input-focus-width !default;
+$custom-select-focus-box-shadow:    0 0 0 $custom-select-focus-width $input-btn-focus-color !default;
+
+$custom-select-padding-y-sm:        $input-padding-y-sm !default;
+$custom-select-padding-x-sm:        $input-padding-x-sm !default;
+$custom-select-font-size-sm:        $input-font-size-sm !default;
+$custom-select-height-sm:           $input-height-sm !default;
+
+$custom-select-padding-y-lg:        $input-padding-y-lg !default;
+$custom-select-padding-x-lg:        $input-padding-x-lg !default;
+$custom-select-font-size-lg:        $input-font-size-lg !default;
+$custom-select-height-lg:           $input-height-lg !default;
+
+$custom-range-track-width:          100% !default;
+$custom-range-track-height:         .5rem !default;
+$custom-range-track-cursor:         pointer !default;
+$custom-range-track-bg:             $gray-300 !default;
+$custom-range-track-border-radius:  1rem !default;
+$custom-range-track-box-shadow:     inset 0 .25rem .25rem rgba($black, .1) !default;
+
+$custom-range-thumb-width:                   1rem !default;
+$custom-range-thumb-height:                  $custom-range-thumb-width !default;
+$custom-range-thumb-bg:                      $component-active-bg !default;
+$custom-range-thumb-border:                  0 !default;
+$custom-range-thumb-border-radius:           1rem !default;
+$custom-range-thumb-box-shadow:              0 .1rem .25rem rgba($black, .1) !default;
+$custom-range-thumb-focus-box-shadow:        0 0 0 1px $body-bg, $input-focus-box-shadow !default;
+$custom-range-thumb-focus-box-shadow-width:  $input-focus-width !default; // For focus box shadow issue in IE/Edge
+$custom-range-thumb-active-bg:               lighten($component-active-bg, 35%) !default;
+$custom-range-thumb-disabled-bg:             $gray-500 !default;
+
+$custom-file-height:                $input-height !default;
+$custom-file-height-inner:          $input-height-inner !default;
+$custom-file-focus-border-color:    $input-focus-border-color !default;
+$custom-file-focus-box-shadow:      $input-focus-box-shadow !default;
+$custom-file-disabled-bg:           $input-disabled-bg !default;
+
+$custom-file-padding-y:             $input-padding-y !default;
+$custom-file-padding-x:             $input-padding-x !default;
+$custom-file-line-height:           $input-line-height !default;
+$custom-file-font-family:           $input-font-family !default;
+$custom-file-font-weight:           $input-font-weight !default;
+$custom-file-color:                 $input-color !default;
+$custom-file-bg:                    $input-bg !default;
+$custom-file-border-width:          $input-border-width !default;
+$custom-file-border-color:          $input-border-color !default;
+$custom-file-border-radius:         $input-border-radius !default;
+$custom-file-box-shadow:            $input-box-shadow !default;
+$custom-file-button-color:          $custom-file-color !default;
+$custom-file-button-bg:             $input-group-addon-bg !default;
+$custom-file-text: (
+  en: "Browse"
+) !default;
+
+
+// Form validation
+//
+// Control how feedback for form inputs looks
+
+$form-feedback-margin-top:          $form-text-margin-top !default;
+$form-feedback-font-size:           $small-font-size !default;
+$form-feedback-valid-color:         theme-color("success") !default;
+$form-feedback-invalid-color:       theme-color("danger") !default;
+
+$form-feedback-icon-valid-color:    $form-feedback-valid-color !default;
+$form-feedback-icon-valid:          url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'><path fill='#{$form-feedback-icon-valid-color}' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/></svg>") !default;
+$form-feedback-icon-invalid-color:  $form-feedback-invalid-color !default;
+$form-feedback-icon-invalid:        url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='#{$form-feedback-icon-invalid-color}' viewBox='0 0 12 12'><circle cx='6' cy='6' r='4.5'/><path stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/><circle cx='6' cy='8.2' r='.6' fill='#{$form-feedback-icon-invalid-color}' stroke='none'/></svg>") !default;
+
+$form-validation-states: () !default;
+$form-validation-states: map-merge(
+  (
+    "valid": (
+      "color": $form-feedback-valid-color,
+      "icon": $form-feedback-icon-valid
+    ),
+    "invalid": (
+      "color": $form-feedback-invalid-color,
+      "icon": $form-feedback-icon-invalid
+    ),
+  ),
+  $form-validation-states
+);
+
+// Z-index master list
+//
+// Warning: Avoid customizing these values. They're used for a bird's eye view
+// of components dependent on the z-axis and are designed to all work together.
+
+$zindex-dropdown:                   1000 !default;
+$zindex-sticky:                     1020 !default;
+$zindex-fixed:                      1030 !default;
+$zindex-modal-backdrop:             1040 !default;
+$zindex-modal:                      1050 !default;
+$zindex-popover:                    1060 !default;
+$zindex-tooltip:                    1070 !default;
+
+
+// Navs
+//
+// General navigation component settings
+
+$nav-link-padding-y:                .5rem !default;
+$nav-link-padding-x:                1rem !default;
+$nav-link-disabled-color:           $gray-600 !default;
+
+$nav-tabs-border-color:             $gray-300 !default;
+$nav-tabs-border-width:             $border-width !default;
+$nav-tabs-border-radius:            $border-radius !default;
+$nav-tabs-link-hover-border-color:  $gray-200 $gray-200 $nav-tabs-border-color !default;
+$nav-tabs-link-active-color:        $gray-700 !default;
+$nav-tabs-link-active-bg:           $body-bg !default;
+$nav-tabs-link-active-border-color: $gray-300 $gray-300 $nav-tabs-link-active-bg !default;
+
+$nav-pills-border-radius:           $border-radius !default;
+$nav-pills-link-active-bg:          $component-active-bg !default;
+$nav-pills-link-active-color:       color-contrast($nav-pills-link-active-bg, $component-active-color) !default;
+
+$nav-divider-color:                 $gray-200 !default;
+$nav-divider-margin-y:              $spacer / 2 !default;
+
+
+// Navbar
+//
+// Navigation bar settings
+
+$navbar-padding-y:                  $spacer / 2 !default;
+$navbar-padding-x:                  $spacer !default;
+
+$navbar-nav-link-padding-x:         .5rem !default;
+
+$navbar-brand-font-size:            $font-size-lg !default;
+// Compute the navbar-brand padding-y so the navbar-brand will have the same height as navbar-text and nav-link
+$nav-link-height:                   $font-size-base * $line-height-base + $nav-link-padding-y * 2 !default;
+$navbar-brand-height:               $navbar-brand-font-size * $line-height-base !default;
+$navbar-brand-padding-y:            ($nav-link-height - $navbar-brand-height) / 2 !default;
+
+$navbar-toggler-padding-y:          .25rem !default;
+$navbar-toggler-padding-x:          .75rem !default;
+$navbar-toggler-font-size:          $font-size-lg !default;
+$navbar-toggler-border-radius:      $btn-border-radius !default;
+
+$navbar-nav-scroll-max-height:      75vh !default;
+
+
+$navbar-bg:                         null !default;  // Background color for any navbarPage()
+$navbar-dark-bg:                    if($navbar-bg, $navbar-bg, $dark) !default;  // Background color for navbarPage(inverse = TRUE)
+$navbar-light-bg:                   if($navbar-bg, $navbar-bg, $light) !default;  // Background color for navbarPage(inverse = FALSE)
+
+$navbar-dark-contrast:              color-contrast($navbar-dark-bg) !default; // Deepest contrasting color for navbarPage(inverse = TRUE). Defaults to $white or $black based on luminance of $navbar-dark-bg
+$navbar-light-contrast:             color-contrast($navbar-light-bg) !default; // Deepest contrasting color for navbarPage(inverse = FALSE). Defaults to $white or $black based on luminance of $navbar-light-bg
+
+$navbar-dark-color:                 rgba($navbar-dark-contrast, .5) !default;
+$navbar-dark-hover-color:           rgba($navbar-dark-contrast, .75) !default;
+$navbar-dark-active-color:          $navbar-dark-contrast !default;
+$navbar-dark-disabled-color:        rgba($navbar-dark-contrast, .25) !default;
+$navbar-dark-toggler-icon-bg:       url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'><path stroke='#{$navbar-dark-color}' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/></svg>") !default;
+$navbar-dark-toggler-border-color:  rgba($navbar-dark-contrast, .1) !default;
+
+$navbar-light-color:                rgba($navbar-light-contrast, .5) !default;
+$navbar-light-hover-color:          rgba($navbar-light-contrast, .75) !default;
+$navbar-light-active-color:         $navbar-light-contrast !default;
+$navbar-light-disabled-color:       rgba($navbar-light-contrast, .25) !default;
+$navbar-light-toggler-icon-bg:      url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'><path stroke='#{$navbar-light-color}' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/></svg>") !default;
+$navbar-light-toggler-border-color: rgba($navbar-light-contrast, .1) !default;
+
+$navbar-light-brand-color:                $navbar-light-active-color !default;
+$navbar-light-brand-hover-color:          $navbar-light-active-color !default;
+$navbar-dark-brand-color:                 $navbar-dark-active-color !default;
+$navbar-dark-brand-hover-color:           $navbar-dark-active-color !default;
+
+
+// Dropdowns
+//
+// Dropdown menu container and contents.
+
+$dropdown-min-width:                10rem !default;
+$dropdown-padding-x:                0 !default;
+$dropdown-padding-y:                .5rem !default;
+$dropdown-spacer:                   .125rem !default;
+$dropdown-font-size:                $font-size-base !default;
+$dropdown-color:                    $body-color !default;
+$dropdown-bg:                       $white !default;
+$dropdown-border-color:             rgba($black, .15) !default;
+$dropdown-border-radius:            $border-radius !default;
+$dropdown-border-width:             $border-width !default;
+$dropdown-inner-border-radius:      subtract($dropdown-border-radius, $dropdown-border-width) !default;
+$dropdown-divider-bg:               $gray-200 !default;
+$dropdown-divider-margin-y:         $nav-divider-margin-y !default;
+$dropdown-box-shadow:               0 .5rem 1rem rgba($black, .175) !default;
+
+$dropdown-link-color:               $gray-900 !default;
+$dropdown-link-hover-color:         darken($gray-900, 5%) !default;
+$dropdown-link-hover-bg:            $gray-200 !default;
+
+$dropdown-link-active-bg:           $component-active-bg !default;
+$dropdown-link-active-color:        color-contrast($dropdown-link-active-bg, $component-active-color) !default;
+
+$dropdown-link-disabled-color:      $gray-500 !default;
+
+$dropdown-item-padding-y:           .25rem !default;
+$dropdown-item-padding-x:           1.5rem !default;
+
+$dropdown-header-color:             $gray-600 !default;
+$dropdown-header-padding:           $dropdown-padding-y $dropdown-item-padding-x !default;
+
+
+// Pagination
+//
+// Styles for components with multiple pages to be clicked through
+
+$pagination-padding-y:              .5rem !default;
+$pagination-padding-x:              .75rem !default;
+$pagination-padding-y-sm:           .25rem !default;
+$pagination-padding-x-sm:           .5rem !default;
+$pagination-padding-y-lg:           .75rem !default;
+$pagination-padding-x-lg:           1.5rem !default;
+$pagination-line-height:            1.25 !default;
+
+$pagination-color:                  $link-color !default;
+$pagination-bg:                     $white !default;
+$pagination-border-width:           $border-width !default;
+$pagination-border-color:           $gray-300 !default;
+
+$pagination-focus-box-shadow:       $input-btn-focus-box-shadow !default;
+$pagination-focus-outline:          0 !default;
+
+$pagination-hover-color:            $link-hover-color !default;
+$pagination-hover-bg:               $gray-200 !default;
+$pagination-hover-border-color:     $gray-300 !default;
+
+$pagination-active-bg:              $component-active-bg !default;
+$pagination-active-color:           color-contrast($pagination-active-bg, $component-active-color) !default;
+$pagination-active-border-color:    $pagination-active-bg !default;
+
+$pagination-disabled-color:         $gray-600 !default;
+$pagination-disabled-bg:            $white !default;
+$pagination-disabled-border-color:  $gray-300 !default;
+
+$pagination-border-radius-sm:       $border-radius-sm !default;
+$pagination-border-radius-lg:       $border-radius-lg !default;
+
+// Jumbotron
+//
+// Styles for jumbotron component "for calling extra attention to featured content or information."
+
+$jumbotron-padding:                 2rem !default;
+$jumbotron-color:                   null !default;
+$jumbotron-bg:                      $gray-200 !default;
+
+
+// Cards
+//
+// Individual cards for displaying grouped information
+
+$card-spacer-y:                     .75rem !default;
+$card-spacer-x:                     1.25rem !default;
+$card-border-width:                 $border-width !default;
+$card-border-radius:                $border-radius !default;
+$card-border-color:                 rgba($black, .125) !default;
+$card-inner-border-radius:          subtract($card-border-radius, $card-border-width) !default;
+$card-cap-bg:                       rgba($black, .03) !default;
+$card-cap-color:                    null !default;
+$card-height:                       null !default;
+$card-color:                        null !default;
+$card-bg:                           $white !default;
+
+$card-img-overlay-padding:          1.25rem !default;
+
+$card-group-margin:                 $grid-gutter-width / 2 !default;
+$card-deck-margin:                  $card-group-margin !default;
+
+$card-columns-count:                3 !default;
+$card-columns-gap:                  1.25rem !default;
+$card-columns-margin:               $card-spacer-y !default;
+
+
+// Tooltips
+//
+// Popups with info for hovering/clicking
+
+$tooltip-font-size:                 $font-size-sm !default;
+$tooltip-max-width:                 200px !default;
+$tooltip-color:                     $white !default;
+$tooltip-bg:                        $black !default;
+$tooltip-border-radius:             $border-radius !default;
+$tooltip-opacity:                   .9 !default;
+$tooltip-padding-y:                 .25rem !default;
+$tooltip-padding-x:                 .5rem !default;
+$tooltip-margin:                    0 !default;
+
+$tooltip-arrow-width:               .8rem !default;
+$tooltip-arrow-height:              .4rem !default;
+$tooltip-arrow-color:               $tooltip-bg !default;
+
+// Form tooltips must come after regular tooltips
+$form-feedback-tooltip-padding-y:     $tooltip-padding-y !default;
+$form-feedback-tooltip-padding-x:     $tooltip-padding-x !default;
+$form-feedback-tooltip-font-size:     $tooltip-font-size !default;
+$form-feedback-tooltip-line-height:   $line-height-base !default;
+$form-feedback-tooltip-opacity:       $tooltip-opacity !default;
+$form-feedback-tooltip-border-radius: $tooltip-border-radius !default;
+
+
+// Popovers
+//
+// Popper.js popover/tooltip styling
+
+$popover-font-size:                 $font-size-sm !default;
+$popover-bg:                        $white !default;
+$popover-max-width:                 276px !default;
+$popover-border-width:              $border-width !default;
+$popover-border-color:              rgba($black, .2) !default;
+$popover-border-radius:             $border-radius-lg !default;
+$popover-inner-border-radius:       subtract($popover-border-radius, $popover-border-width) !default;
+$popover-box-shadow:                0 .25rem .5rem rgba($black, .2) !default;
+
+$popover-header-bg:                 darken($popover-bg, 3%) !default;
+$popover-header-color:              $headings-color !default;
+$popover-header-padding-y:          .5rem !default;
+$popover-header-padding-x:          .75rem !default;
+
+$popover-body-color:                $body-color !default;
+$popover-body-padding-y:            $popover-header-padding-y !default;
+$popover-body-padding-x:            $popover-header-padding-x !default;
+
+$popover-arrow-width:               1rem !default;
+$popover-arrow-height:              .5rem !default;
+$popover-arrow-color:               $popover-bg !default;
+
+$popover-arrow-outer-color:         fade-in($popover-border-color, .05) !default;
+
+
+// Toasts
+//
+// "Lightweight notifications designed to mimic the push notifications"
+
+$toast-max-width:                   350px !default;
+$toast-padding-x:                   .75rem !default;
+$toast-padding-y:                   .25rem !default;
+$toast-font-size:                   .875rem !default;
+$toast-color:                       null !default;
+$toast-background-color:            rgba($white, .85) !default;
+$toast-border-width:                1px !default;
+$toast-border-color:                rgba(0, 0, 0, .1) !default;
+$toast-border-radius:               .25rem !default;
+$toast-box-shadow:                  0 .25rem .75rem rgba($black, .1) !default;
+
+$toast-header-color:                $gray-600 !default;
+$toast-header-background-color:     rgba($white, .85) !default;
+$toast-header-border-color:         rgba(0, 0, 0, .05) !default;
+
+
+// Badges
+//
+// "Small count and labeling component."
+
+$badge-font-size:                   75% !default;
+$badge-font-weight:                 $font-weight-bold !default;
+$badge-padding-y:                   .25em !default;
+$badge-padding-x:                   .4em !default;
+$badge-border-radius:               $border-radius !default;
+
+$badge-transition:                  $btn-transition !default;
+$badge-focus-width:                 $input-btn-focus-width !default;
+
+$badge-pill-padding-x:              .6em !default;
+// Use a higher than normal value to ensure completely rounded edges when
+// customizing padding or font-size on labels.
+$badge-pill-border-radius:          10rem !default;
+
+
+// Modals
+//
+// Screen-filling popup dialogs that typically require the user to dismiss
+
+// Padding applied to the modal body
+$modal-inner-padding:               1rem !default;
+
+// Margin between elements in footer, must be lower than or equal to 2 * $modal-inner-padding
+$modal-footer-margin-between:       .5rem !default;
+
+$modal-dialog-margin:               .5rem !default;
+$modal-dialog-margin-y-sm-up:       1.75rem !default;
+
+$modal-title-line-height:           $line-height-base !default;
+
+$modal-content-color:               null !default;
+$modal-content-bg:                  $white !default;
+$modal-content-border-color:        rgba($black, .2) !default;
+$modal-content-border-width:        $border-width !default;
+$modal-content-border-radius:       $border-radius-lg !default;
+$modal-content-inner-border-radius: subtract($modal-content-border-radius, $modal-content-border-width) !default;
+$modal-content-box-shadow-xs:       0 .25rem .5rem rgba($black, .5) !default;
+$modal-content-box-shadow-sm-up:    0 .5rem 1rem rgba($black, .5) !default;
+
+$modal-backdrop-bg:                 $black !default;
+$modal-backdrop-opacity:            .5 !default;
+$modal-header-border-color:         $border-color !default;
+$modal-footer-border-color:         $modal-header-border-color !default;
+$modal-header-border-width:         $modal-content-border-width !default;
+$modal-footer-border-width:         $modal-header-border-width !default;
+$modal-header-padding-y:            1rem !default;
+$modal-header-padding-x:            1rem !default;
+$modal-header-padding:              $modal-header-padding-y $modal-header-padding-x !default; // Keep this for backwards compatibility
+
+$modal-xl:                          1140px !default;
+$modal-lg:                          800px !default;
+$modal-md:                          500px !default;
+$modal-sm:                          300px !default;
+
+$modal-fade-transform:              translate(0, -50px) !default;
+$modal-show-transform:              none !default;
+$modal-transition:                  transform .3s ease-out !default;
+$modal-scale-transform:             scale(1.02) !default;
+
+
+// Alerts
+//
+// Define alert colors, border radius, and padding.
+
+$alert-padding-y:                   .75rem !default;
+$alert-padding-x:                   1.25rem !default;
+$alert-margin-bottom:               1rem !default;
+$alert-border-radius:               $border-radius !default;
+$alert-link-font-weight:            $font-weight-bold !default;
+$alert-border-width:                $border-width !default;
+
+$alert-bg-level:                    -10 !default;
+$alert-border-level:                -9 !default;
+$alert-color-level:                 6 !default;
+
+
+// Progress bars
+//
+// Basic bars for displaying progress of some process
+
+$progress-height:                   1rem !default;
+$progress-font-size:                $font-size-base * .75 !default;
+$progress-bg:                       $gray-200 !default;
+$progress-border-radius:            $border-radius !default;
+$progress-box-shadow:               inset 0 .1rem .1rem rgba($black, .1) !default;
+$progress-bar-color:                $white !default;
+$progress-bar-bg:                   theme-color("primary") !default;
+$progress-bar-animation-timing:     1s linear infinite !default;
+$progress-bar-transition:           width .6s ease !default;
+
+
+// List group
+//
+// Basic unordered lists
+
+$list-group-color:                  null !default;
+$list-group-bg:                     $white !default;
+$list-group-border-color:           rgba($black, .125) !default;
+$list-group-border-width:           $border-width !default;
+$list-group-border-radius:          $border-radius !default;
+
+$list-group-item-padding-y:         .75rem !default;
+$list-group-item-padding-x:         1.25rem !default;
+
+$list-group-hover-bg:               $gray-100 !default;
+$list-group-active-bg:              $component-active-bg !default;
+$list-group-active-color:           color-contrast($list-group-active-bg, $component-active-color) !default;
+$list-group-active-border-color:    $list-group-active-bg !default;
+
+$list-group-disabled-color:         $gray-600 !default;
+$list-group-disabled-bg:            $list-group-bg !default;
+
+$list-group-action-color:           $gray-700 !default;
+$list-group-action-hover-color:     $list-group-action-color !default;
+
+$list-group-action-active-color:    $body-color !default;
+$list-group-action-active-bg:       $gray-200 !default;
+
+
+// Image thumbnails
+//
+// Styles for small preview images
+
+$thumbnail-padding:                 .25rem !default;
+$thumbnail-bg:                      $body-bg !default;
+$thumbnail-border-width:            $border-width !default;
+$thumbnail-border-color:            $gray-300 !default;
+$thumbnail-border-radius:           $border-radius !default;
+$thumbnail-box-shadow:              0 1px 2px rgba($black, .075) !default;
+
+
+// Figures
+//
+// Caption settings for figures
+
+$figure-caption-font-size:          90% !default;
+$figure-caption-color:              $gray-600 !default;
+
+
+// Breadcrumbs
+//
+// Navigation history information widgets
+
+$breadcrumb-font-size:              null !default;
+
+$breadcrumb-padding-y:              .75rem !default;
+$breadcrumb-padding-x:              1rem !default;
+$breadcrumb-item-padding:           .5rem !default;
+
+$breadcrumb-margin-bottom:          1rem !default;
+
+$breadcrumb-bg:                     $gray-200 !default;
+$breadcrumb-divider-color:          $gray-600 !default;
+$breadcrumb-active-color:           $gray-600 !default;
+$breadcrumb-divider:                quote("/") !default;
+
+$breadcrumb-border-radius:          $border-radius !default;
+
+
+// Carousel
+//
+// Rotating set of items
+
+$carousel-control-color:             $white !default;
+$carousel-control-width:             15% !default;
+$carousel-control-opacity:           .5 !default;
+$carousel-control-hover-opacity:     .9 !default;
+$carousel-control-transition:        opacity .15s ease !default;
+
+$carousel-indicator-width:           30px !default;
+$carousel-indicator-height:          3px !default;
+$carousel-indicator-hit-area-height: 10px !default;
+$carousel-indicator-spacer:          3px !default;
+$carousel-indicator-active-bg:       $white !default;
+$carousel-indicator-transition:      opacity .6s ease !default;
+
+$carousel-caption-width:             70% !default;
+$carousel-caption-color:             $white !default;
+
+$carousel-control-icon-width:        20px !default;
+
+$carousel-control-prev-icon-bg:      url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' fill='#{$carousel-control-color}' width='8' height='8' viewBox='0 0 8 8'><path d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/></svg>") !default;
+$carousel-control-next-icon-bg:      url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' fill='#{$carousel-control-color}' width='8' height='8' viewBox='0 0 8 8'><path d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/></svg>") !default;
+
+$carousel-transition-duration:       .6s !default;
+$carousel-transition:                transform $carousel-transition-duration ease-in-out !default; // Define transform transition first if using multiple transitions (e.g., `transform 2s ease, opacity .5s ease-out`)
+
+
+// Spinners
+//
+// Spinning widgets to display ongoing process
+
+$spinner-width:         2rem !default;
+$spinner-height:        $spinner-width !default;
+$spinner-border-width:  .25em !default;
+
+$spinner-width-sm:        1rem !default;
+$spinner-height-sm:       $spinner-width-sm !default;
+$spinner-border-width-sm: .2em !default;
+
+
+// Close
+//
+// Buttons for closing a dialog
+
+$close-font-size:                   $font-size-base * 1.5 !default;
+$close-font-weight:                 $font-weight-bold !default;
+$close-color:                       $black !default;
+$close-text-shadow:                 0 1px 0 $white !default;
+
+
+// Code
+//
+// How monospaced code environments look
+
+$code-font-size:                    87.5% !default;
+// Amount intentionally matches mixture amount of shiny::inputPanel()
+// https://github.com/rstudio/shiny/blob/4eeb4a1/inst/www/shared/shiny_scss/bootstrap.scss#L25
+$code-bg:                           mix($body-bg, $body-color, 96%) !default;
+$code-color:                        color-contrast($code-bg) !default;
+
+
+$kbd-padding-y:                     .2rem !default;
+$kbd-padding-x:                     .4rem !default;
+$kbd-font-size:                     $code-font-size !default;
+$kbd-color:                         $white !default;
+$kbd-bg:                            $gray-900 !default;
+
+$pre-bg:                            $code-bg !default;
+$pre-color:                         color-contrast($pre-bg) !default;
+$pre-border:                        $border-width solid $border-color !default;
+$pre-scrollable-max-height:         340px !default;
+
+
+// Utilities
+//
+// Misc general CSS settings
+
+$displays: none, inline, inline-block, block, table, table-row, table-cell, flex, inline-flex !default;
+$overflows: auto, hidden !default;
+$positions: static, relative, absolute, fixed, sticky !default;
+$user-selects: all, auto, none !default;
+
+
+// Printing
+//
+// Control how page looks when using browser print dialog
+
+$print-page-size:                   a3 !default;
+$print-body-min-width:              map-get($grid-breakpoints, "lg") !default;
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_card.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_card.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_card.scss	(revision 3762)
@@ -0,0 +1,296 @@
+//
+// Base styles
+//
+
+.card {
+  position: relative;
+  display: flex;
+  display: -webkit-flex;
+  flex-direction: column;
+  -webkit-flex-direction: column;
+  min-width: 0; // See https://github.com/twbs/bootstrap/pull/22740#issuecomment-305868106
+  height: $card-height;
+  word-wrap: break-word;
+  background-color: $card-bg;
+  background-clip: border-box;
+  border: $card-border-width solid $card-border-color;
+  @include border-radius($card-border-radius);
+
+  > hr {
+    margin-right: 0;
+    margin-left: 0;
+  }
+
+  > .list-group {
+    border-top: inherit;
+    border-bottom: inherit;
+
+    &:first-child {
+      border-top-width: 0;
+      @include border-top-radius($card-inner-border-radius);
+    }
+
+    &:last-child  {
+      border-bottom-width: 0;
+      @include border-bottom-radius($card-inner-border-radius);
+    }
+  }
+
+  // Due to specificity of the above selector (`.card > .list-group`), we must
+  // use a child selector here to prevent double borders.
+  > .card-header + .list-group,
+  > .list-group + .card-footer {
+    border-top: 0;
+  }
+}
+
+.card-body {
+  // Enable `flex-grow: 1` for decks and groups so that card blocks take up
+  // as much space as possible, ensuring footers are aligned to the bottom.
+  flex: 1 1 auto;
+  -webkit-flex: 1 1 auto;
+  // Workaround for the image size bug in IE
+  // See: https://github.com/twbs/bootstrap/pull/28855
+  min-height: 1px;
+  padding: $card-spacer-x;
+  color: $card-color;
+}
+
+.card-title {
+  margin-bottom: $card-spacer-y;
+}
+
+.card-subtitle {
+  margin-top: -$card-spacer-y / 2;
+  margin-bottom: 0;
+}
+
+.card-text:last-child {
+  margin-bottom: 0;
+}
+
+.card-link {
+  @include hover() {
+    text-decoration: none;
+  }
+
+  + .card-link {
+    margin-left: $card-spacer-x;
+  }
+}
+
+//
+// Optional textual caps
+//
+
+.card-header {
+  padding: $card-spacer-y $card-spacer-x;
+  margin-bottom: 0; // Removes the default margin-bottom of <hN>
+  color: $card-cap-color;
+  background-color: $card-cap-bg;
+  border-bottom: $card-border-width solid $card-border-color;
+
+  &:first-child {
+    @include border-radius($card-inner-border-radius $card-inner-border-radius 0 0);
+  }
+}
+
+.card-footer {
+  padding: $card-spacer-y $card-spacer-x;
+  color: $card-cap-color;
+  background-color: $card-cap-bg;
+  border-top: $card-border-width solid $card-border-color;
+
+  &:last-child {
+    @include border-radius(0 0 $card-inner-border-radius $card-inner-border-radius);
+  }
+}
+
+
+//
+// Header navs
+//
+
+.card-header-tabs {
+  margin-right: -$card-spacer-x / 2;
+  margin-bottom: -$card-spacer-y;
+  margin-left: -$card-spacer-x / 2;
+  border-bottom: 0;
+}
+
+.card-header-pills {
+  margin-right: -$card-spacer-x / 2;
+  margin-left: -$card-spacer-x / 2;
+}
+
+// Card image
+.card-img-overlay {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  padding: $card-img-overlay-padding;
+  @include border-radius($card-inner-border-radius);
+}
+
+.card-img,
+.card-img-top,
+.card-img-bottom {
+  flex-shrink: 0; // For IE: https://github.com/twbs/bootstrap/issues/29396
+  -webkit-flex-shrink: 0; // For IE: https://github.com/twbs/bootstrap/issues/29396
+  width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch
+}
+
+.card-img,
+.card-img-top {
+  @include border-top-radius($card-inner-border-radius);
+}
+
+.card-img,
+.card-img-bottom {
+  @include border-bottom-radius($card-inner-border-radius);
+}
+
+
+// Card deck
+
+.card-deck {
+  .card {
+    margin-bottom: $card-deck-margin;
+  }
+
+  @include media-breakpoint-up(sm) {
+    display: flex;
+    display: -webkit-flex;
+    flex-flow: row wrap;
+    -webkit-flex-flow: row wrap;
+    margin-right: -$card-deck-margin;
+    margin-left: -$card-deck-margin;
+
+    .card {
+      // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4
+      flex: 1 0 0%;
+      -webkit-flex: 1 0 0%;
+      margin-right: $card-deck-margin;
+      margin-bottom: 0; // Override the default
+      margin-left: $card-deck-margin;
+    }
+  }
+}
+
+
+//
+// Card groups
+//
+
+.card-group {
+  // The child selector allows nested `.card` within `.card-group`
+  // to display properly.
+  > .card {
+    margin-bottom: $card-group-margin;
+  }
+
+  @include media-breakpoint-up(sm) {
+    display: flex;
+    display: -webkit-flex;
+    flex-flow: row wrap;
+    -webkit-flex-flow: row wrap;
+    // The child selector allows nested `.card` within `.card-group`
+    // to display properly.
+    > .card {
+      // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4
+      flex: 1 0 0%;
+      -webkit-flex: 1 0 0%;
+      margin-bottom: 0;
+
+      + .card {
+        margin-left: 0;
+        border-left: 0;
+      }
+
+      // Handle rounded corners
+      @if $enable-rounded {
+        &:not(:last-child) {
+          @include border-right-radius(0);
+
+          .card-img-top,
+          .card-header {
+            // stylelint-disable-next-line property-disallowed-list
+            border-top-right-radius: 0;
+          }
+          .card-img-bottom,
+          .card-footer {
+            // stylelint-disable-next-line property-disallowed-list
+            border-bottom-right-radius: 0;
+          }
+        }
+
+        &:not(:first-child) {
+          @include border-left-radius(0);
+
+          .card-img-top,
+          .card-header {
+            // stylelint-disable-next-line property-disallowed-list
+            border-top-left-radius: 0;
+          }
+          .card-img-bottom,
+          .card-footer {
+            // stylelint-disable-next-line property-disallowed-list
+            border-bottom-left-radius: 0;
+          }
+        }
+      }
+    }
+  }
+}
+
+
+//
+// Columns
+//
+
+.card-columns {
+  .card {
+    margin-bottom: $card-columns-margin;
+  }
+
+  @include media-breakpoint-up(sm) {
+    column-count: $card-columns-count;
+    column-gap: $card-columns-gap;
+    orphans: 1;
+    widows: 1;
+
+    .card {
+      display: inline-block; // Don't let them vertically span multiple columns
+      width: 100%; // Don't let their width change
+    }
+  }
+}
+
+
+//
+// Accordion
+//
+
+.accordion {
+  overflow-anchor: none;
+
+  > .card {
+    overflow: hidden;
+
+    &:not(:last-of-type) {
+      border-bottom: 0;
+      @include border-bottom-radius(0);
+    }
+
+    &:not(:first-of-type) {
+      @include border-top-radius(0);
+    }
+
+    > .card-header {
+      @include border-radius(0);
+      margin-bottom: -$card-border-width;
+    }
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_tables.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_tables.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_tables.scss	(revision 3762)
@@ -0,0 +1,185 @@
+//
+// Basic Bootstrap table
+//
+
+.table {
+  width: 100%;
+  margin-bottom: $spacer;
+  color: $table-color;
+  background-color: $table-bg; // Reset for nesting within parents with `background-color`.
+
+  th,
+  td {
+    padding: $table-cell-padding;
+    vertical-align: top;
+    border-top: $table-border-width solid $table-border-color;
+  }
+
+  thead th {
+    vertical-align: bottom;
+    border-bottom: (2 * $table-border-width) solid $table-border-color;
+  }
+
+  tbody + tbody {
+    border-top: (2 * $table-border-width) solid $table-border-color;
+  }
+}
+
+
+//
+// Condensed table w/ half padding
+//
+
+.table-sm {
+  th,
+  td {
+    padding: $table-cell-padding-sm;
+  }
+}
+
+
+// Border versions
+//
+// Add or remove borders all around the table and between all the columns.
+
+.table-bordered {
+  border: $table-border-width solid $table-border-color;
+
+  th,
+  td {
+    border: $table-border-width solid $table-border-color;
+  }
+
+  thead {
+    th,
+    td {
+      border-bottom-width: 2 * $table-border-width;
+    }
+  }
+}
+
+.table-borderless {
+  th,
+  td,
+  thead th,
+  tbody + tbody {
+    border: 0;
+  }
+}
+
+// Zebra-striping
+//
+// Default zebra-stripe styles (alternating gray and transparent backgrounds)
+
+.table-striped {
+  tbody tr:nth-of-type(#{$table-striped-order}) {
+    background-color: $table-accent-bg;
+  }
+}
+
+
+// Hover effect
+//
+// Placed here since it has to come after the potential zebra striping
+
+.table-hover {
+  tbody tr {
+    @include hover() {
+      color: $table-hover-color;
+      background-color: $table-hover-bg;
+    }
+  }
+}
+
+
+// Table backgrounds
+//
+// Exact selectors below required to override `.table-striped` and prevent
+// inheritance to nested tables.
+
+@each $color, $value in $theme-colors {
+  @include table-row-variant($color, theme-color-level($color, $table-bg-level), theme-color-level($color, $table-border-level));
+}
+
+@include table-row-variant(active, $table-active-bg);
+
+
+// Dark styles
+//
+// Same table markup, but inverted color scheme: dark background and light text.
+
+// stylelint-disable-next-line no-duplicate-selectors
+.table {
+  .thead-dark {
+    th {
+      color: $table-dark-color;
+      background-color: $table-dark-bg;
+      border-color: $table-dark-border-color;
+    }
+  }
+
+  .thead-light {
+    th {
+      color: $table-head-color;
+      background-color: $table-head-bg;
+      border-color: $table-border-color;
+    }
+  }
+}
+
+.table-dark {
+  color: $table-dark-color;
+  background-color: $table-dark-bg;
+
+  th,
+  td,
+  thead th {
+    border-color: $table-dark-border-color;
+  }
+
+  &.table-bordered {
+    border: 0;
+  }
+
+  &.table-striped {
+    tbody tr:nth-of-type(#{$table-striped-order}) {
+      background-color: $table-dark-accent-bg;
+    }
+  }
+
+  &.table-hover {
+    tbody tr {
+      @include hover() {
+        color: $table-dark-hover-color;
+        background-color: $table-dark-hover-bg;
+      }
+    }
+  }
+}
+
+
+// Responsive tables
+//
+// Generate series of `.table-responsive-*` classes for configuring the screen
+// size of where your table will overflow.
+
+.table-responsive {
+  @each $breakpoint in map-keys($grid-breakpoints) {
+    $next: breakpoint-next($breakpoint, $grid-breakpoints);
+    $infix: breakpoint-infix($next, $grid-breakpoints);
+
+    &#{$infix} {
+      @include media-breakpoint-down($breakpoint) {
+        display: block;
+        width: 100%;
+        overflow-x: auto;
+        -webkit-overflow-scrolling: touch;
+
+        // Prevent double border on horizontal scroll due to use of `display: block;`
+        > .table-bordered {
+          border: 0;
+        }
+      }
+    }
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_utilities.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_utilities.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_utilities.scss	(revision 3762)
@@ -0,0 +1,18 @@
+@import "utilities/align";
+@import "utilities/background";
+@import "utilities/borders";
+@import "utilities/clearfix";
+@import "utilities/display";
+@import "utilities/embed";
+@import "utilities/flex";
+@import "utilities/float";
+@import "utilities/interactions";
+@import "utilities/overflow";
+@import "utilities/position";
+@import "utilities/screenreaders";
+@import "utilities/shadows";
+@import "utilities/sizing";
+@import "utilities/spacing";
+@import "utilities/stretched-link";
+@import "utilities/text";
+@import "utilities/visibility";
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_carousel.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_carousel.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_carousel.scss	(revision 3762)
@@ -0,0 +1,211 @@
+// Notes on the classes:
+//
+// 1. .carousel.pointer-event should ideally be pan-y (to allow for users to scroll vertically)
+//    even when their scroll action started on a carousel, but for compatibility (with Firefox)
+//    we're preventing all actions instead
+// 2. The .carousel-item-left and .carousel-item-right is used to indicate where
+//    the active slide is heading.
+// 3. .active.carousel-item is the current slide.
+// 4. .active.carousel-item-left and .active.carousel-item-right is the current
+//    slide in its in-transition state. Only one of these occurs at a time.
+// 5. .carousel-item-next.carousel-item-left and .carousel-item-prev.carousel-item-right
+//    is the upcoming slide in transition.
+
+.carousel {
+  position: relative;
+}
+
+.carousel.pointer-event {
+  touch-action: pan-y;
+  -webkit-touch-action: pan-y;
+  -moz-touch-action: pan-y;
+  -ms-touch-action: pan-y;
+  -o-touch-action: pan-y;
+}
+
+.carousel-inner {
+  position: relative;
+  width: 100%;
+  overflow: hidden;
+  @include clearfix();
+}
+
+.carousel-item {
+  position: relative;
+  display: none;
+  float: left;
+  width: 100%;
+  margin-right: -100%;
+  backface-visibility: hidden;
+  -webkit-backface-visibility: hidden;
+  -moz-backface-visibility: hidden;
+  -ms-backface-visibility: hidden;
+  -o-backface-visibility: hidden;
+  @include transition($carousel-transition);
+}
+
+.carousel-item.active,
+.carousel-item-next,
+.carousel-item-prev {
+  display: block;
+}
+
+.carousel-item-next:not(.carousel-item-left),
+.active.carousel-item-right {
+  transform: translateX(100%);
+}
+
+.carousel-item-prev:not(.carousel-item-right),
+.active.carousel-item-left {
+  transform: translateX(-100%);
+}
+
+
+//
+// Alternate transitions
+//
+
+.carousel-fade {
+  .carousel-item {
+    opacity: 0;
+    transition-property: opacity;
+    transform: none;
+  }
+
+  .carousel-item.active,
+  .carousel-item-next.carousel-item-left,
+  .carousel-item-prev.carousel-item-right {
+    z-index: 1;
+    opacity: 1;
+  }
+
+  .active.carousel-item-left,
+  .active.carousel-item-right {
+    z-index: 0;
+    opacity: 0;
+    @include transition(opacity 0s $carousel-transition-duration);
+  }
+}
+
+
+//
+// Left/right controls for nav
+//
+
+.carousel-control-prev,
+.carousel-control-next {
+  position: absolute;
+  top: 0;
+  bottom: 0;
+  z-index: 1;
+  // Use flex for alignment (1-3)
+  display: flex; // 1. allow flex styles
+  display: -webkit-flex; // 1. allow flex styles
+  align-items: center; // 2. vertically center contents
+  -webkit-align-items: center; // 2. vertically center contents
+  justify-content: center; // 3. horizontally center contents
+  -webkit-justify-content: center; // 3. horizontally center contents
+  width: $carousel-control-width;
+  color: $carousel-control-color;
+  text-align: center;
+  opacity: $carousel-control-opacity;
+  @include transition($carousel-control-transition);
+
+  // Hover/focus state
+  @include hover-focus() {
+    color: $carousel-control-color;
+    text-decoration: none;
+    outline: 0;
+    opacity: $carousel-control-hover-opacity;
+  }
+}
+.carousel-control-prev {
+  left: 0;
+  @if $enable-gradients {
+    background-image: linear-gradient(90deg, rgba($black, .25), rgba($black, .001));
+  }
+}
+.carousel-control-next {
+  right: 0;
+  @if $enable-gradients {
+    background-image: linear-gradient(270deg, rgba($black, .25), rgba($black, .001));
+  }
+}
+
+// Icons for within
+.carousel-control-prev-icon,
+.carousel-control-next-icon {
+  display: inline-block;
+  width: $carousel-control-icon-width;
+  height: $carousel-control-icon-width;
+  background: 50% / 100% 100% no-repeat;
+}
+.carousel-control-prev-icon {
+  background-image: escape-svg($carousel-control-prev-icon-bg);
+}
+.carousel-control-next-icon {
+  background-image: escape-svg($carousel-control-next-icon-bg);
+}
+
+
+// Optional indicator pips
+//
+// Add an ordered list with the following class and add a list item for each
+// slide your carousel holds.
+
+.carousel-indicators {
+  position: absolute;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  z-index: 15;
+  display: flex;
+  display: -webkit-flex;
+  justify-content: center;
+  -webkit-justify-content: center;
+  padding-left: 0; // override <ol> default
+  // Use the .carousel-control's width as margin so we don't overlay those
+  margin-right: $carousel-control-width;
+  margin-left: $carousel-control-width;
+  list-style: none;
+
+  li {
+    box-sizing: content-box;
+    flex: 0 1 auto;
+    -webkit-flex: 0 1 auto;
+    width: $carousel-indicator-width;
+    height: $carousel-indicator-height;
+    margin-right: $carousel-indicator-spacer;
+    margin-left: $carousel-indicator-spacer;
+    text-indent: -999px;
+    cursor: pointer;
+    background-color: $carousel-indicator-active-bg;
+    background-clip: padding-box;
+    // Use transparent borders to increase the hit area by 10px on top and bottom.
+    border-top: $carousel-indicator-hit-area-height solid transparent;
+    border-bottom: $carousel-indicator-hit-area-height solid transparent;
+    opacity: .5;
+    @include transition($carousel-indicator-transition);
+  }
+
+  .active {
+    opacity: 1;
+  }
+}
+
+
+// Optional captions
+//
+//
+
+.carousel-caption {
+  position: absolute;
+  right: (100% - $carousel-caption-width) / 2;
+  bottom: 20px;
+  left: (100% - $carousel-caption-width) / 2;
+  z-index: 10;
+  padding-top: 20px;
+  padding-bottom: 20px;
+  color: $carousel-caption-color;
+  text-align: center;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_toasts.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_toasts.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_toasts.scss	(revision 3762)
@@ -0,0 +1,49 @@
+.toast {
+  // Prevents from shrinking in IE11, when in a flex container
+  // See https://github.com/twbs/bootstrap/issues/28341
+  flex-basis: $toast-max-width;
+  -webkit-flex-basis: $toast-max-width;
+  max-width: $toast-max-width;
+  @include font-size($toast-font-size);
+  color: $toast-color;
+  background-color: $toast-background-color;
+  background-clip: padding-box;
+  border: $toast-border-width solid $toast-border-color;
+  box-shadow: $toast-box-shadow;
+  opacity: 0;
+  @include border-radius($toast-border-radius);
+
+  &:not(:last-child) {
+    margin-bottom: $toast-padding-x;
+  }
+
+  &.showing {
+    opacity: 1;
+  }
+
+  &.show {
+    display: block;
+    opacity: 1;
+  }
+
+  &.hide {
+    display: none;
+  }
+}
+
+.toast-header {
+  display: flex;
+  display: -webkit-flex;
+  align-items: center;
+  -webkit-align-items: center;
+  padding: $toast-padding-y $toast-padding-x;
+  color: $toast-header-color;
+  background-color: $toast-header-background-color;
+  background-clip: padding-box;
+  border-bottom: $toast-border-width solid $toast-header-border-color;
+  @include border-top-radius(subtract($toast-border-radius, $toast-border-width));
+}
+
+.toast-body {
+  padding: $toast-padding-x; // apply to both vertical and horizontal
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_transitions.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_transitions.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_transitions.scss	(revision 3762)
@@ -0,0 +1,20 @@
+.fade {
+  @include transition($transition-fade);
+
+  &:not(.show) {
+    opacity: 0;
+  }
+}
+
+.collapse {
+  &:not(.show) {
+    display: none;
+  }
+}
+
+.collapsing {
+  position: relative;
+  height: 0;
+  overflow: hidden;
+  @include transition($transition-collapse);
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_media.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_media.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_media.scss	(revision 3762)
@@ -0,0 +1,11 @@
+.media {
+  display: flex;
+  display: -webkit-flex;
+  align-items: flex-start;
+  -webkit-align-items: flex-start;
+}
+
+.media-body {
+  flex: 1;
+  -webkit-flex: 1;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_type.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_type.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_type.scss	(revision 3762)
@@ -0,0 +1,125 @@
+// stylelint-disable selector-list-comma-newline-after
+
+//
+// Headings
+//
+
+h1, h2, h3, h4, h5, h6,
+.h1, .h2, .h3, .h4, .h5, .h6 {
+  margin-bottom: $headings-margin-bottom;
+  font-family: $headings-font-family;
+  font-weight: $headings-font-weight;
+  line-height: $headings-line-height;
+  color: $headings-color;
+}
+
+h1, .h1 { @include font-size($h1-font-size); }
+h2, .h2 { @include font-size($h2-font-size); }
+h3, .h3 { @include font-size($h3-font-size); }
+h4, .h4 { @include font-size($h4-font-size); }
+h5, .h5 { @include font-size($h5-font-size); }
+h6, .h6 { @include font-size($h6-font-size); }
+
+.lead {
+  @include font-size($lead-font-size);
+  font-weight: $lead-font-weight;
+}
+
+// Type display classes
+.display-1 {
+  @include font-size($display1-size);
+  font-weight: $display1-weight;
+  line-height: $display-line-height;
+}
+.display-2 {
+  @include font-size($display2-size);
+  font-weight: $display2-weight;
+  line-height: $display-line-height;
+}
+.display-3 {
+  @include font-size($display3-size);
+  font-weight: $display3-weight;
+  line-height: $display-line-height;
+}
+.display-4 {
+  @include font-size($display4-size);
+  font-weight: $display4-weight;
+  line-height: $display-line-height;
+}
+
+
+//
+// Horizontal rules
+//
+
+hr {
+  margin-top: $hr-margin-y;
+  margin-bottom: $hr-margin-y;
+  border: 0;
+  border-top: $hr-border-width solid $hr-border-color;
+}
+
+
+//
+// Emphasis
+//
+
+small,
+.small {
+  @include font-size($small-font-size);
+  font-weight: $font-weight-normal;
+}
+
+mark,
+.mark {
+  padding: $mark-padding;
+  background-color: $mark-bg;
+}
+
+
+//
+// Lists
+//
+
+.list-unstyled {
+  @include list-unstyled();
+}
+
+// Inline turns list items into inline-block
+.list-inline {
+  @include list-unstyled();
+}
+.list-inline-item {
+  display: inline-block;
+
+  &:not(:last-child) {
+    margin-right: $list-inline-padding;
+  }
+}
+
+
+//
+// Misc
+//
+
+// Builds on `abbr`
+.initialism {
+  @include font-size(90%);
+  text-transform: uppercase;
+}
+
+// Blockquotes
+.blockquote {
+  margin-bottom: $spacer;
+  @include font-size($blockquote-font-size);
+}
+
+.blockquote-footer {
+  display: block;
+  @include font-size($blockquote-small-font-size);
+  color: $blockquote-small-color;
+
+  &::before {
+    content: "\2014\00A0"; // em dash, nbsp
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_nav.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_nav.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_nav.scss	(revision 3762)
@@ -0,0 +1,129 @@
+// Base class
+//
+// Kickstart any navigation component with a set of style resets. Works with
+// `<nav>`s, `<ul>`s or `<ol>`s.
+
+.nav {
+  display: flex;
+  display: -webkit-flex;
+  flex-wrap: wrap;
+  -webkit-flex-wrap: wrap;
+  padding-left: 0;
+  margin-bottom: 0;
+  list-style: none;
+}
+
+.nav-link {
+  display: block;
+  padding: $nav-link-padding-y $nav-link-padding-x;
+  text-decoration: if($link-decoration == none, null, none);
+  -webkit-text-decoration: if($link-decoration == none, null, none);
+  -moz-text-decoration: if($link-decoration == none, null, none);
+  -ms-text-decoration: if($link-decoration == none, null, none);
+  -o-text-decoration: if($link-decoration == none, null, none);
+
+  @include hover-focus() {
+    text-decoration: none;
+  }
+
+  // Disabled state lightens text
+  &.disabled {
+    color: $nav-link-disabled-color;
+    pointer-events: none;
+    cursor: default;
+  }
+}
+
+//
+// Tabs
+//
+
+.nav-tabs {
+  border-bottom: $nav-tabs-border-width solid $nav-tabs-border-color;
+
+  .nav-link {
+    margin-bottom: -$nav-tabs-border-width;
+    border: $nav-tabs-border-width solid transparent;
+    @include border-top-radius($nav-tabs-border-radius);
+
+    @include hover-focus() {
+      border-color: $nav-tabs-link-hover-border-color;
+    }
+
+    &.disabled {
+      color: $nav-link-disabled-color;
+      background-color: transparent;
+      border-color: transparent;
+    }
+  }
+
+  .nav-link.active,
+  .nav-item.show .nav-link {
+    color: $nav-tabs-link-active-color;
+    background-color: $nav-tabs-link-active-bg;
+    border-color: $nav-tabs-link-active-border-color;
+  }
+
+  .dropdown-menu {
+    // Make dropdown border overlap tab border
+    margin-top: -$nav-tabs-border-width;
+    // Remove the top rounded corners here since there is a hard edge above the menu
+    @include border-top-radius(0);
+  }
+}
+
+
+//
+// Pills
+//
+
+.nav-pills {
+  .nav-link {
+    @include border-radius($nav-pills-border-radius);
+  }
+
+  .nav-link.active,
+  .show > .nav-link {
+    color: $nav-pills-link-active-color;
+    background-color: $nav-pills-link-active-bg;
+  }
+}
+
+
+//
+// Justified variants
+//
+
+.nav-fill {
+  > .nav-link,
+  .nav-item {
+    flex: 1 1 auto;
+    -webkit-flex: 1 1 auto;
+    text-align: center;
+  }
+}
+
+.nav-justified {
+  > .nav-link,
+  .nav-item {
+    flex-basis: 0;
+    -webkit-flex-basis: 0;
+    flex-grow: 1;
+    -webkit-flex-grow: 1;
+    text-align: center;
+  }
+}
+
+
+// Tabbable tabs
+//
+// Hide tabbable panes to start, show them when `.active`
+
+.tab-content {
+  > .tab-pane {
+    display: none;
+  }
+  > .active {
+    display: block;
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_forms.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_forms.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_forms.scss	(revision 3762)
@@ -0,0 +1,370 @@
+// stylelint-disable selector-no-qualifying-type
+
+//
+// Textual form controls
+//
+
+.form-control {
+  display: block;
+  width: 100%;
+  height: $input-height;
+  padding: $input-padding-y $input-padding-x;
+  font-family: $input-font-family;
+  @include font-size($input-font-size);
+  font-weight: $input-font-weight;
+  line-height: $input-line-height;
+  color: $input-color;
+  background-color: $input-bg;
+  background-clip: padding-box;
+  border: $input-border-width solid $input-border-color;
+
+  // Note: This has no effect on <select>s in some browsers, due to the limited stylability of `<select>`s in CSS.
+  @include border-radius($input-border-radius, 0);
+
+  @include box-shadow($input-box-shadow);
+  @include transition($input-transition);
+
+  // Unstyle the caret on `<select>`s in IE10+.
+  &::-ms-expand {
+    background-color: transparent;
+    border: 0;
+  }
+
+  // Remove select outline from select box in FF
+  &:-moz-focusring {
+    color: transparent;
+    text-shadow: 0 0 0 $input-color;
+  }
+
+  // Customize the `:focus` state to imitate native WebKit styles.
+  @include form-control-focus($ignore-warning: true);
+
+  // Placeholder
+  &::placeholder {
+    color: $input-placeholder-color;
+    // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526.
+    opacity: 1;
+  }
+
+  // Disabled and read-only inputs
+  //
+  // HTML5 says that controls under a fieldset > legend:first-child won't be
+  // disabled if the fieldset is disabled. Due to implementation difficulty, we
+  // don't honor that edge case; we style them as disabled anyway.
+  &:disabled,
+  &[readonly] {
+    background-color: $input-disabled-bg;
+    // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655.
+    opacity: 1;
+  }
+}
+
+input[type="date"],
+input[type="time"],
+input[type="datetime-local"],
+input[type="month"] {
+  &.form-control {
+    appearance: none; // Fix appearance for date inputs in Safari
+    -webkit-appearance: none; // Fix appearance for date inputs in Safari
+    -moz-appearance: none; // Fix appearance for date inputs in Safari
+    -ms-appearance: none; // Fix appearance for date inputs in Safari
+    -o-appearance: none; // Fix appearance for date inputs in Safari
+  }
+}
+
+select.form-control {
+  &:focus::-ms-value {
+    // Suppress the nested default white text on blue background highlight given to
+    // the selected option text when the (still closed) <select> receives focus
+    // in IE and (under certain conditions) Edge, as it looks bad and cannot be made to
+    // match the appearance of the native widget.
+    // See https://github.com/twbs/bootstrap/issues/19398.
+    color: $input-color;
+    background-color: $input-bg;
+  }
+}
+
+// Make file inputs better match text inputs by forcing them to new lines.
+.form-control-file,
+.form-control-range {
+  display: block;
+  width: 100%;
+}
+
+
+//
+// Labels
+//
+
+// For use with horizontal and inline forms, when you need the label (or legend)
+// text to align with the form controls.
+.col-form-label {
+  padding-top: add($input-padding-y, $input-border-width);
+  padding-bottom: add($input-padding-y, $input-border-width);
+  margin-bottom: 0; // Override the `<label>/<legend>` default
+  @include font-size(inherit); // Override the `<legend>` default
+  line-height: $input-line-height;
+}
+
+.col-form-label-lg {
+  padding-top: add($input-padding-y-lg, $input-border-width);
+  padding-bottom: add($input-padding-y-lg, $input-border-width);
+  @include font-size($input-font-size-lg);
+  line-height: $input-line-height-lg;
+}
+
+.col-form-label-sm {
+  padding-top: add($input-padding-y-sm, $input-border-width);
+  padding-bottom: add($input-padding-y-sm, $input-border-width);
+  @include font-size($input-font-size-sm);
+  line-height: $input-line-height-sm;
+}
+
+
+// Readonly controls as plain text
+//
+// Apply class to a readonly input to make it appear like regular plain
+// text (without any border, background color, focus indicator)
+
+.form-control-plaintext {
+  display: block;
+  width: 100%;
+  padding: $input-padding-y 0;
+  margin-bottom: 0; // match inputs if this class comes on inputs with default margins
+  @include font-size($input-font-size);
+  line-height: $input-line-height;
+  color: $input-plaintext-color;
+  background-color: transparent;
+  border: solid transparent;
+  border-width: $input-border-width 0;
+
+  &.form-control-sm,
+  &.form-control-lg {
+    padding-right: 0;
+    padding-left: 0;
+  }
+}
+
+
+// Form control sizing
+//
+// Build on `.form-control` with modifier classes to decrease or increase the
+// height and font-size of form controls.
+//
+// Repeated in `_input_group.scss` to avoid Sass extend issues.
+
+.form-control-sm {
+  height: $input-height-sm;
+  padding: $input-padding-y-sm $input-padding-x-sm;
+  @include font-size($input-font-size-sm);
+  line-height: $input-line-height-sm;
+  @include border-radius($input-border-radius-sm);
+}
+
+.form-control-lg {
+  height: $input-height-lg;
+  padding: $input-padding-y-lg $input-padding-x-lg;
+  @include font-size($input-font-size-lg);
+  line-height: $input-line-height-lg;
+  @include border-radius($input-border-radius-lg);
+}
+
+// stylelint-disable-next-line no-duplicate-selectors
+select.form-control {
+  &[size],
+  &[multiple] {
+    height: auto;
+  }
+}
+
+textarea.form-control {
+  height: auto;
+}
+
+// Form groups
+//
+// Designed to help with the organization and spacing of vertical forms. For
+// horizontal forms, use the predefined grid classes.
+
+.form-group {
+  margin-bottom: $form-group-margin-bottom;
+}
+
+.form-text {
+  display: block;
+  margin-top: $form-text-margin-top;
+}
+
+
+// Form grid
+//
+// Special replacement for our grid system's `.row` for tighter form layouts.
+
+.form-row {
+  display: flex;
+  display: -webkit-flex;
+  flex-wrap: wrap;
+  -webkit-flex-wrap: wrap;
+  margin-right: -$form-grid-gutter-width / 2;
+  margin-left: -$form-grid-gutter-width / 2;
+
+  > .col,
+  > [class*="col-"] {
+    padding-right: $form-grid-gutter-width / 2;
+    padding-left: $form-grid-gutter-width / 2;
+  }
+}
+
+
+// Checkboxes and radios
+//
+// Indent the labels to position radios/checkboxes as hanging controls.
+
+.form-check {
+  position: relative;
+  display: block;
+  padding-left: $form-check-input-gutter;
+}
+
+.form-check-input {
+  position: absolute;
+  margin-top: $form-check-input-margin-y;
+  margin-left: -$form-check-input-gutter;
+
+  // Use [disabled] and :disabled for workaround https://github.com/twbs/bootstrap/issues/28247
+  &[disabled] ~ .form-check-label,
+  &:disabled ~ .form-check-label {
+    color: $text-muted;
+  }
+}
+
+.form-check-label {
+  margin-bottom: 0; // Override default `<label>` bottom margin
+}
+
+.form-check-inline {
+  display: inline-flex;
+  align-items: center;
+  -webkit-align-items: center;
+  padding-left: 0; // Override base .form-check
+  margin-right: $form-check-inline-margin-x;
+
+  // Undo .form-check-input defaults and add some `margin-right`.
+  .form-check-input {
+    position: static;
+    margin-top: 0;
+    margin-right: $form-check-inline-input-margin-x;
+    margin-left: 0;
+  }
+}
+
+
+// Form validation
+//
+// Provide feedback to users when form field values are valid or invalid. Works
+// primarily for client-side validation via scoped `:invalid` and `:valid`
+// pseudo-classes but also includes `.is-invalid` and `.is-valid` classes for
+// server side validation.
+
+@each $state, $data in $form-validation-states {
+  @include form-validation-state($state, map-get($data, color), map-get($data, icon));
+}
+
+// Inline forms
+//
+// Make forms appear inline(-block) by adding the `.form-inline` class. Inline
+// forms begin stacked on extra small (mobile) devices and then go inline when
+// viewports reach <768px.
+//
+// Requires wrapping inputs and labels with `.form-group` for proper display of
+// default HTML form controls and our custom form controls (e.g., input groups).
+
+.form-inline {
+  display: flex;
+  display: -webkit-flex;
+  flex-flow: row wrap;
+  -webkit-flex-flow: row wrap;
+  align-items: center; // Prevent shorter elements from growing to same height as others (e.g., small buttons growing to normal sized button height)
+  -webkit-align-items: center; // Prevent shorter elements from growing to same height as others (e.g., small buttons growing to normal sized button height)
+
+  // Because we use flex, the initial sizing of checkboxes is collapsed and
+  // doesn't occupy the full-width (which is what we want for xs grid tier),
+  // so we force that here.
+  .form-check {
+    width: 100%;
+  }
+
+  // Kick in the inline
+  @include media-breakpoint-up(sm) {
+    label {
+      display: flex;
+      display: -webkit-flex;
+      align-items: center;
+      -webkit-align-items: center;
+      justify-content: center;
+      -webkit-justify-content: center;
+      margin-bottom: 0;
+    }
+
+    // Inline-block all the things for "inline"
+    .form-group {
+      display: flex;
+      display: -webkit-flex;
+      flex: 0 0 auto;
+      -webkit-flex: 0 0 auto;
+      flex-flow: row wrap;
+      -webkit-flex-flow: row wrap;
+      align-items: center;
+      -webkit-align-items: center;
+      margin-bottom: 0;
+    }
+
+    // Allow folks to *not* use `.form-group`
+    .form-control {
+      display: inline-block;
+      width: auto; // Prevent labels from stacking above inputs in `.form-group`
+      vertical-align: middle;
+    }
+
+    // Make static controls behave like regular ones
+    .form-control-plaintext {
+      display: inline-block;
+    }
+
+    .input-group,
+    .custom-select {
+      width: auto;
+    }
+
+    // Remove default margin on radios/checkboxes that were used for stacking, and
+    // then undo the floating of radios and checkboxes to match.
+    .form-check {
+      display: flex;
+      display: -webkit-flex;
+      align-items: center;
+      -webkit-align-items: center;
+      justify-content: center;
+      -webkit-justify-content: center;
+      width: auto;
+      padding-left: 0;
+    }
+    .form-check-input {
+      position: relative;
+      flex-shrink: 0;
+      -webkit-flex-shrink: 0;
+      margin-top: 0;
+      margin-right: $form-check-input-margin-x;
+      margin-left: 0;
+    }
+
+    .custom-control {
+      align-items: center;
+      -webkit-align-items: center;
+      justify-content: center;
+      -webkit-justify-content: center;
+    }
+    .custom-control-label {
+      margin-bottom: 0;
+    }
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_reboot.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_reboot.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_reboot.scss	(revision 3762)
@@ -0,0 +1,503 @@
+// stylelint-disable declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix
+
+// Reboot
+//
+// Normalization of HTML elements, manually forked from Normalize.css to remove
+// styles targeting irrelevant browsers while applying new styles.
+//
+// Normalize is licensed MIT. https://github.com/necolas/normalize.css
+
+
+// Document
+//
+// 1. Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.
+// 2. Change the default font family in all browsers.
+// 3. Correct the line height in all browsers.
+// 4. Prevent adjustments of font size after orientation changes in IE on Windows Phone and in iOS.
+// 5. Change the default tap highlight to be completely transparent in iOS.
+
+*,
+*::before,
+*::after {
+  box-sizing: border-box; // 1
+}
+
+html {
+  font-family: sans-serif; // 2
+  line-height: 1.15; // 3
+  -webkit-text-size-adjust: 100%; // 4
+  -webkit-tap-highlight-color: rgba($black, 0); // 5
+}
+
+// Shim for "new" HTML5 structural elements to display correctly (IE10, older browsers)
+// TODO: remove in v5
+// stylelint-disable-next-line selector-list-comma-newline-after
+article, aside, figcaption, figure, footer, header, hgroup, main, nav, section {
+  display: block;
+}
+
+// Body
+//
+// 1. Remove the margin in all browsers.
+// 2. As a best practice, apply a default `background-color`.
+// 3. Set an explicit initial text-align value so that we can later use
+//    the `inherit` value on things like `<th>` elements.
+
+body {
+  margin: 0; // 1
+  font-family: $font-family-base;
+  @include font-size($font-size-base);
+  font-weight: $font-weight-base;
+  line-height: $line-height-base;
+  color: $body-color;
+  text-align: left; // 3
+  background-color: $body-bg; // 2
+}
+
+// Future-proof rule: in browsers that support :focus-visible, suppress the focus outline
+// on elements that programmatically receive focus but wouldn't normally show a visible
+// focus outline. In general, this would mean that the outline is only applied if the
+// interaction that led to the element receiving programmatic focus was a keyboard interaction,
+// or the browser has somehow determined that the user is primarily a keyboard user and/or
+// wants focus outlines to always be presented.
+//
+// See https://developer.mozilla.org/en-US/docs/Web/CSS/:focus-visible
+// and https://developer.paciellogroup.com/blog/2018/03/focus-visible-and-backwards-compatibility/
+[tabindex="-1"]:focus:not(:focus-visible) {
+  outline: 0 !important;
+}
+
+
+// Content grouping
+//
+// 1. Add the correct box sizing in Firefox.
+// 2. Show the overflow in Edge and IE.
+
+hr {
+  box-sizing: content-box; // 1
+  height: 0; // 1
+  overflow: visible; // 2
+}
+
+
+//
+// Typography
+//
+
+// Remove top margins from headings
+//
+// By default, `<h1>`-`<h6>` all receive top and bottom margins. We nuke the top
+// margin for easier control within type scales as it avoids margin collapsing.
+// stylelint-disable-next-line selector-list-comma-newline-after
+h1, h2, h3, h4, h5, h6 {
+  margin-top: 0;
+  margin-bottom: $headings-margin-bottom;
+}
+
+// Reset margins on paragraphs
+//
+// Similarly, the top margin on `<p>`s get reset. However, we also reset the
+// bottom margin to use `rem` units instead of `em`.
+p {
+  margin-top: 0;
+  margin-bottom: $paragraph-margin-bottom;
+}
+
+// Abbreviations
+//
+// 1. Duplicate behavior to the data-* attribute for our tooltip plugin
+// 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
+// 3. Add explicit cursor to indicate changed behavior.
+// 4. Remove the bottom border in Firefox 39-.
+// 5. Prevent the text-decoration to be skipped.
+
+abbr[title],
+abbr[data-original-title] { // 1
+  text-decoration: underline; // 2
+  text-decoration: underline dotted; // 2
+  -webkit-text-decoration: underline dotted; // 2
+  -moz-text-decoration: underline dotted; // 2
+  -ms-text-decoration: underline dotted; // 2
+  -o-text-decoration: underline dotted; // 2
+  cursor: help; // 3
+  border-bottom: 0; // 4
+  text-decoration-skip-ink: none; // 5
+}
+
+address {
+  margin-bottom: 1rem;
+  font-style: normal;
+  line-height: inherit;
+}
+
+ol,
+ul,
+dl {
+  margin-top: 0;
+  margin-bottom: 1rem;
+}
+
+ol ol,
+ul ul,
+ol ul,
+ul ol {
+  margin-bottom: 0;
+}
+
+dt {
+  font-weight: $dt-font-weight;
+}
+
+dd {
+  margin-bottom: .5rem;
+  margin-left: 0; // Undo browser default
+}
+
+blockquote {
+  margin: 0 0 1rem;
+  padding: ($blockquote-font-size / 2) $blockquote-font-size;
+  border-left: $blockquote-border-width solid $blockquote-border-color;
+  p, ul, ol {
+    &:last-child {
+      margin-bottom: 0;
+    }
+  }
+}
+
+b,
+strong {
+  font-weight: $font-weight-bolder; // Add the correct font weight in Chrome, Edge, and Safari
+}
+
+small {
+  @include font-size(80%); // Add the correct font size in all browsers
+}
+
+//
+// Prevent `sub` and `sup` elements from affecting the line height in
+// all browsers.
+//
+
+sub,
+sup {
+  position: relative;
+  @include font-size(75%);
+  line-height: 0;
+  vertical-align: baseline;
+}
+
+sub { bottom: -.25em; }
+sup { top: -.5em; }
+
+
+//
+// Links
+//
+
+a {
+  color: $link-color;
+  text-decoration: $link-decoration;
+  -webkit-text-decoration: $link-decoration;
+  -moz-text-decoration: $link-decoration;
+  -ms-text-decoration: $link-decoration;
+  -o-text-decoration: $link-decoration;
+  background-color: transparent; // Remove the gray background on active links in IE 10.
+
+  @include hover() {
+    color: $link-hover-color;
+    text-decoration: $link-hover-decoration;
+    -webkit-text-decoration: $link-hover-decoration;
+    -moz-text-decoration: $link-hover-decoration;
+    -ms-text-decoration: $link-hover-decoration;
+    -o-text-decoration: $link-hover-decoration;
+  }
+}
+
+// And undo these styles for placeholder links/named anchors (without href).
+// It would be more straightforward to just use a[href] in previous block, but that
+// causes specificity issues in many other styles that are too complex to fix.
+// See https://github.com/twbs/bootstrap/issues/19402
+
+a:not([href]):not([class]) {
+  color: inherit;
+  text-decoration: none;
+
+  @include hover() {
+    color: inherit;
+    text-decoration: none;
+  }
+}
+
+
+//
+// Code
+//
+
+pre,
+code,
+kbd,
+samp {
+  font-family: $font-family-monospace;
+  @include font-size(1em); // Correct the odd `em` font sizing in all browsers.
+}
+
+pre {
+  // Remove browser default top margin
+  margin-top: 0;
+  // Reset browser default of `1em` to use `rem`s
+  margin-bottom: 1rem;
+  // Don't allow content to break outside
+  overflow: auto;
+  // Disable auto-hiding scrollbar in IE & legacy Edge to avoid overlap,
+  // making it impossible to interact with the content
+  -ms-overflow-style: scrollbar;
+}
+
+
+//
+// Figures
+//
+
+figure {
+  // Apply a consistent margin strategy (matches our type styles).
+  margin: 0 0 1rem;
+}
+
+
+//
+// Images and content
+//
+
+img {
+  vertical-align: middle;
+  border-style: none; // Remove the border on images inside links in IE 10-.
+}
+
+svg {
+  // Workaround for the SVG overflow bug in IE10/11 is still required.
+  // See https://github.com/twbs/bootstrap/issues/26878
+  overflow: hidden;
+  vertical-align: middle;
+}
+
+
+//
+// Tables
+//
+
+table {
+  border-collapse: collapse; // Prevent double borders
+}
+
+caption {
+  padding-top: $table-cell-padding;
+  padding-bottom: $table-cell-padding;
+  color: $table-caption-color;
+  text-align: left;
+  caption-side: bottom;
+}
+
+// 1. Removes font-weight bold by inheriting
+// 2. Matches default `<td>` alignment by inheriting `text-align`.
+// 3. Fix alignment for Safari
+
+th {
+  font-weight: $table-th-font-weight; // 1
+  text-align: inherit; // 2
+  text-align: -webkit-match-parent; // 3
+}
+
+
+//
+// Forms
+//
+
+label {
+  // Allow labels to use `margin` for spacing.
+  display: inline-block;
+  margin-bottom: $label-margin-bottom;
+}
+
+// Remove the default `border-radius` that macOS Chrome adds.
+//
+// Details at https://github.com/twbs/bootstrap/issues/24093
+button {
+  // stylelint-disable-next-line property-disallowed-list
+  border-radius: 0;
+}
+
+// Explicitly remove focus outline in Chromium when it shouldn't be
+// visible (e.g. as result of mouse click or touch tap). It already
+// should be doing this automatically, but seems to currently be
+// confused and applies its very visible two-tone outline anyway.
+
+button:focus:not(:focus-visible) {
+  outline: 0;
+}
+
+input,
+button,
+select,
+optgroup,
+textarea {
+  margin: 0; // Remove the margin in Firefox and Safari
+  font-family: inherit;
+  @include font-size(inherit);
+  line-height: inherit;
+}
+
+button,
+input {
+  overflow: visible; // Show the overflow in Edge
+}
+
+button,
+select {
+  text-transform: none; // Remove the inheritance of text transform in Firefox
+}
+
+// Set the cursor for non-`<button>` buttons
+//
+// Details at https://github.com/twbs/bootstrap/pull/30562
+[role="button"] {
+  cursor: pointer;
+}
+
+// Remove the inheritance of word-wrap in Safari.
+//
+// Details at https://github.com/twbs/bootstrap/issues/24990
+select {
+  word-wrap: normal;
+}
+
+
+// 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`
+//    controls in Android 4.
+// 2. Correct the inability to style clickable types in iOS and Safari.
+button,
+[type="button"], // 1
+[type="reset"],
+[type="submit"] {
+  -webkit-appearance: button; // 2
+}
+
+// Opinionated: add "hand" cursor to non-disabled button elements.
+@if $enable-pointer-cursor-for-buttons {
+  button,
+  [type="button"],
+  [type="reset"],
+  [type="submit"] {
+    &:not(:disabled) {
+      cursor: pointer;
+    }
+  }
+}
+
+// Remove inner border and padding from Firefox, but don't restore the outline like Normalize.
+button::-moz-focus-inner,
+[type="button"]::-moz-focus-inner,
+[type="reset"]::-moz-focus-inner,
+[type="submit"]::-moz-focus-inner {
+  padding: 0;
+  border-style: none;
+}
+
+input[type="radio"],
+input[type="checkbox"] {
+  box-sizing: border-box; // 1. Add the correct box sizing in IE 10-
+  padding: 0; // 2. Remove the padding in IE 10-
+}
+
+
+textarea {
+  overflow: auto; // Remove the default vertical scrollbar in IE.
+  // Textareas should really only resize vertically so they don't break their (horizontal) containers.
+  resize: vertical;
+}
+
+fieldset {
+  // Browsers set a default `min-width: min-content;` on fieldsets,
+  // unlike e.g. `<div>`s, which have `min-width: 0;` by default.
+  // So we reset that to ensure fieldsets behave more like a standard block element.
+  // See https://github.com/twbs/bootstrap/issues/12359
+  // and https://html.spec.whatwg.org/multipage/#the-fieldset-and-legend-elements
+  min-width: 0;
+  // Reset the default outline behavior of fieldsets so they don't affect page layout.
+  padding: 0;
+  margin: 0;
+  border: 0;
+}
+
+// 1. Correct the text wrapping in Edge and IE.
+// 2. Correct the color inheritance from `fieldset` elements in IE.
+legend {
+  display: block;
+  width: 100%;
+  max-width: 100%; // 1
+  padding: 0;
+  margin-bottom: .5rem;
+  @include font-size(1.5rem);
+  line-height: inherit;
+  color: inherit; // 2
+  white-space: normal; // 1
+}
+
+progress {
+  vertical-align: baseline; // Add the correct vertical alignment in Chrome, Firefox, and Opera.
+}
+
+// Correct the cursor style of increment and decrement buttons in Chrome.
+[type="number"]::-webkit-inner-spin-button,
+[type="number"]::-webkit-outer-spin-button {
+  height: auto;
+}
+
+[type="search"] {
+  // This overrides the extra rounded corners on search inputs in iOS so that our
+  // `.form-control` class can properly style them. Note that this cannot simply
+  // be added to `.form-control` as it's not specific enough. For details, see
+  // https://github.com/twbs/bootstrap/issues/11586.
+  outline-offset: -2px; // 2. Correct the outline style in Safari.
+  -webkit-appearance: none;
+}
+
+//
+// Remove the inner padding in Chrome and Safari on macOS.
+//
+
+[type="search"]::-webkit-search-decoration {
+  -webkit-appearance: none;
+}
+
+//
+// 1. Correct the inability to style clickable types in iOS and Safari.
+// 2. Change font properties to `inherit` in Safari.
+//
+
+::-webkit-file-upload-button {
+  font: inherit; // 2
+  -webkit-appearance: button; // 1
+}
+
+//
+// Correct element displays
+//
+
+output {
+  display: inline-block;
+}
+
+summary {
+  display: list-item; // Add the correct display in all browsers
+  cursor: pointer;
+}
+
+template {
+  display: none; // Add the correct display in IE
+}
+
+// Always hide an element with the `hidden` HTML attribute (from PureCSS).
+// Needed for proper display in IE 10-.
+[hidden] {
+  display: none !important;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_popover.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_popover.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_popover.scss	(revision 3762)
@@ -0,0 +1,170 @@
+.popover {
+  position: absolute;
+  top: 0;
+  left: 0;
+  z-index: $zindex-popover;
+  display: block;
+  max-width: $popover-max-width;
+  // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.
+  // So reset our font and text properties to avoid inheriting weird values.
+  @include reset-text();
+  @include font-size($popover-font-size);
+  // Allow breaking very long words so they don't overflow the popover's bounds
+  word-wrap: break-word;
+  background-color: $popover-bg;
+  background-clip: padding-box;
+  border: $popover-border-width solid $popover-border-color;
+  @include border-radius($popover-border-radius);
+  @include box-shadow($popover-box-shadow);
+
+  .arrow {
+    position: absolute;
+    display: block;
+    width: $popover-arrow-width;
+    height: $popover-arrow-height;
+    margin: 0 $popover-border-radius;
+
+    &::before,
+    &::after {
+      position: absolute;
+      display: block;
+      content: "";
+      border-color: transparent;
+      border-style: solid;
+    }
+  }
+}
+
+.bs-popover-top {
+  margin-bottom: $popover-arrow-height;
+
+  > .arrow {
+    bottom: subtract(-$popover-arrow-height, $popover-border-width);
+
+    &::before {
+      bottom: 0;
+      border-width: $popover-arrow-height ($popover-arrow-width / 2) 0;
+      border-top-color: $popover-arrow-outer-color;
+    }
+
+    &::after {
+      bottom: $popover-border-width;
+      border-width: $popover-arrow-height ($popover-arrow-width / 2) 0;
+      border-top-color: $popover-arrow-color;
+    }
+  }
+}
+
+.bs-popover-right {
+  margin-left: $popover-arrow-height;
+
+  > .arrow {
+    left: subtract(-$popover-arrow-height, $popover-border-width);
+    width: $popover-arrow-height;
+    height: $popover-arrow-width;
+    margin: $popover-border-radius 0; // make sure the arrow does not touch the popover's rounded corners
+
+    &::before {
+      left: 0;
+      border-width: ($popover-arrow-width / 2) $popover-arrow-height ($popover-arrow-width / 2) 0;
+      border-right-color: $popover-arrow-outer-color;
+    }
+
+    &::after {
+      left: $popover-border-width;
+      border-width: ($popover-arrow-width / 2) $popover-arrow-height ($popover-arrow-width / 2) 0;
+      border-right-color: $popover-arrow-color;
+    }
+  }
+}
+
+.bs-popover-bottom {
+  margin-top: $popover-arrow-height;
+
+  > .arrow {
+    top: subtract(-$popover-arrow-height, $popover-border-width);
+
+    &::before {
+      top: 0;
+      border-width: 0 ($popover-arrow-width / 2) $popover-arrow-height ($popover-arrow-width / 2);
+      border-bottom-color: $popover-arrow-outer-color;
+    }
+
+    &::after {
+      top: $popover-border-width;
+      border-width: 0 ($popover-arrow-width / 2) $popover-arrow-height ($popover-arrow-width / 2);
+      border-bottom-color: $popover-arrow-color;
+    }
+  }
+
+  // This will remove the popover-header's border just below the arrow
+  .popover-header::before {
+    position: absolute;
+    top: 0;
+    left: 50%;
+    display: block;
+    width: $popover-arrow-width;
+    margin-left: -$popover-arrow-width / 2;
+    content: "";
+    border-bottom: $popover-border-width solid $popover-header-bg;
+  }
+}
+
+.bs-popover-left {
+  margin-right: $popover-arrow-height;
+
+  > .arrow {
+    right: subtract(-$popover-arrow-height, $popover-border-width);
+    width: $popover-arrow-height;
+    height: $popover-arrow-width;
+    margin: $popover-border-radius 0; // make sure the arrow does not touch the popover's rounded corners
+
+    &::before {
+      right: 0;
+      border-width: ($popover-arrow-width / 2) 0 ($popover-arrow-width / 2) $popover-arrow-height;
+      border-left-color: $popover-arrow-outer-color;
+    }
+
+    &::after {
+      right: $popover-border-width;
+      border-width: ($popover-arrow-width / 2) 0 ($popover-arrow-width / 2) $popover-arrow-height;
+      border-left-color: $popover-arrow-color;
+    }
+  }
+}
+
+.bs-popover-auto {
+  &[x-placement^="top"] {
+    @extend .bs-popover-top;
+  }
+  &[x-placement^="right"] {
+    @extend .bs-popover-right;
+  }
+  &[x-placement^="bottom"] {
+    @extend .bs-popover-bottom;
+  }
+  &[x-placement^="left"] {
+    @extend .bs-popover-left;
+  }
+}
+
+
+// Offset the popover to account for the popover arrow
+.popover-header {
+  padding: $popover-header-padding-y $popover-header-padding-x;
+  margin-bottom: 0; // Reset the default from Reboot
+  @include font-size($font-size-base);
+  color: $popover-header-color;
+  background-color: $popover-header-bg;
+  border-bottom: $popover-border-width solid darken($popover-header-bg, 5%);
+  @include border-top-radius($popover-inner-border-radius);
+
+  &:empty {
+    display: none;
+  }
+}
+
+.popover-body {
+  padding: $popover-body-padding-y $popover-body-padding-x;
+  color: $popover-body-color;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_dropdown.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_dropdown.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_dropdown.scss	(revision 3762)
@@ -0,0 +1,196 @@
+// The dropdown wrapper (`<div>`)
+.dropup,
+.dropright,
+.dropdown,
+.dropleft {
+  position: relative;
+}
+
+.dropdown-toggle {
+  white-space: nowrap;
+
+  // Generate the caret automatically
+  @include caret();
+}
+
+// The dropdown menu
+.dropdown-menu {
+  position: absolute;
+  top: 100%;
+  left: 0;
+  z-index: $zindex-dropdown;
+  display: none; // none by default, but block on "open" of the menu
+  float: left;
+  min-width: $dropdown-min-width;
+  padding: $dropdown-padding-y $dropdown-padding-x;
+  margin: $dropdown-spacer 0 0; // override default ul
+  @include font-size($dropdown-font-size);
+  color: $dropdown-color;
+  text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer)
+  list-style: none;
+  background-color: $dropdown-bg;
+  background-clip: padding-box;
+  border: $dropdown-border-width solid $dropdown-border-color;
+  @include border-radius($dropdown-border-radius);
+  @include box-shadow($dropdown-box-shadow);
+}
+
+@each $breakpoint in map-keys($grid-breakpoints) {
+  @include media-breakpoint-up($breakpoint) {
+    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
+
+    .dropdown-menu#{$infix}-left {
+      right: auto;
+      left: 0;
+    }
+
+    .dropdown-menu#{$infix}-right {
+      right: 0;
+      left: auto;
+    }
+  }
+}
+
+// Allow for dropdowns to go bottom up (aka, dropup-menu)
+// Just add .dropup after the standard .dropdown class and you're set.
+.dropup {
+  .dropdown-menu {
+    top: auto;
+    bottom: 100%;
+    margin-top: 0;
+    margin-bottom: $dropdown-spacer;
+  }
+
+  .dropdown-toggle {
+    @include caret(up);
+  }
+}
+
+.dropright {
+  .dropdown-menu {
+    top: 0;
+    right: auto;
+    left: 100%;
+    margin-top: 0;
+    margin-left: $dropdown-spacer;
+  }
+
+  .dropdown-toggle {
+    @include caret(right);
+    &::after {
+      vertical-align: 0;
+    }
+  }
+}
+
+.dropleft {
+  .dropdown-menu {
+    top: 0;
+    right: 100%;
+    left: auto;
+    margin-top: 0;
+    margin-right: $dropdown-spacer;
+  }
+
+  .dropdown-toggle {
+    @include caret(left);
+    &::before {
+      vertical-align: 0;
+    }
+  }
+}
+
+// When Popper is enabled, reset the basic dropdown position
+// stylelint-disable-next-line no-duplicate-selectors
+.dropdown-menu {
+  &[x-placement^="top"],
+  &[x-placement^="right"],
+  &[x-placement^="bottom"],
+  &[x-placement^="left"] {
+    right: auto;
+    bottom: auto;
+  }
+}
+
+// Dividers (basically an `<hr>`) within the dropdown
+.dropdown-divider {
+  @include nav-divider($dropdown-divider-bg, $dropdown-divider-margin-y, true);
+}
+
+// Links, buttons, and more within the dropdown menu
+//
+// `<button>`-specific styles are denoted with `// For <button>s`
+.dropdown-item {
+  display: block;
+  width: 100%; // For `<button>`s
+  padding: $dropdown-item-padding-y $dropdown-item-padding-x;
+  clear: both;
+  font-weight: $font-weight-normal;
+  color: $dropdown-link-color;
+  text-align: inherit; // For `<button>`s
+  text-decoration: if($link-decoration == none, null, none);
+  -webkit-text-decoration: if($link-decoration == none, null, none);
+  -moz-text-decoration: if($link-decoration == none, null, none);
+  -ms-text-decoration: if($link-decoration == none, null, none);
+  -o-text-decoration: if($link-decoration == none, null, none);
+  white-space: nowrap; // prevent links from randomly breaking onto new lines
+  background-color: transparent; // For `<button>`s
+  border: 0; // For `<button>`s
+
+  // Prevent dropdown overflow if there's no padding
+  // See https://github.com/twbs/bootstrap/pull/27703
+  @if $dropdown-padding-y == 0 {
+    &:first-child {
+      @include border-top-radius($dropdown-inner-border-radius);
+    }
+
+    &:last-child {
+      @include border-bottom-radius($dropdown-inner-border-radius);
+    }
+  }
+
+  @include hover-focus() {
+    color: $dropdown-link-hover-color;
+    text-decoration: none;
+    @include gradient-bg($dropdown-link-hover-bg);
+  }
+
+  &.active,
+  &:active {
+    color: $dropdown-link-active-color;
+    text-decoration: none;
+    @include gradient-bg($dropdown-link-active-bg);
+  }
+
+  &.disabled,
+  &:disabled {
+    color: $dropdown-link-disabled-color;
+    pointer-events: none;
+    background-color: transparent;
+    // Remove CSS gradients if they're enabled
+    @if $enable-gradients {
+      background-image: none;
+    }
+  }
+}
+
+.dropdown-menu.show {
+  display: block;
+}
+
+// Dropdown section headers
+.dropdown-header {
+  display: block;
+  padding: $dropdown-header-padding;
+  margin-bottom: 0; // for use with heading elements
+  @include font-size($font-size-sm);
+  color: $dropdown-header-color;
+  white-space: nowrap; // as with > li > a
+}
+
+// Dropdown text
+.dropdown-item-text {
+  display: block;
+  padding: $dropdown-item-padding-y $dropdown-item-padding-x;
+  color: $dropdown-link-color;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_print.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_print.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_print.scss	(revision 3762)
@@ -0,0 +1,141 @@
+// stylelint-disable declaration-no-important, selector-no-qualifying-type
+
+// Source: https://github.com/h5bp/main.css/blob/master/src/_print.css
+
+// ==========================================================================
+// Print styles.
+// Inlined to avoid the additional HTTP request:
+// https://www.phpied.com/delay-loading-your-print-css/
+// ==========================================================================
+
+@if $enable-print-styles {
+  @media print {
+    *,
+    *::before,
+    *::after {
+      // Bootstrap specific; comment out `color` and `background`
+      //color: $black !important; // Black prints faster
+      text-shadow: none !important;
+      //background: transparent !important;
+      box-shadow: none !important;
+    }
+
+    a {
+      &:not(.btn) {
+        text-decoration: underline;
+      }
+    }
+
+    // Bootstrap specific; comment the following selector out
+    //a[href]::after {
+    //  content: " (" attr(href) ")";
+    //}
+
+    abbr[title]::after {
+      content: " (" attr(title) ")";
+    }
+
+    // Bootstrap specific; comment the following selector out
+    //
+    // Don't show links that are fragment identifiers,
+    // or use the `javascript:` pseudo protocol
+    //
+
+    //a[href^="#"]::after,
+    //a[href^="javascript:"]::after {
+    // content: "";
+    //}
+
+    pre {
+      white-space: pre-wrap !important;
+    }
+    pre,
+    blockquote {
+      border: $border-width solid $gray-500; // Bootstrap custom code; using `$border-width` instead of 1px
+      page-break-inside: avoid;
+    }
+
+    //
+    // Printing Tables:
+    // https://web.archive.org/web/20180815150934/http://css-discuss.incutio.com/wiki/Printing_Tables
+    //
+
+    thead {
+      display: table-header-group;
+    }
+
+    tr,
+    img {
+      page-break-inside: avoid;
+    }
+
+    p,
+    h2,
+    h3 {
+      orphans: 3;
+      widows: 3;
+    }
+
+    h2,
+    h3 {
+      page-break-after: avoid;
+    }
+
+    // Bootstrap specific changes start
+
+    // Specify a size and min-width to make printing closer across browsers.
+    // We don't set margin here because it breaks `size` in Chrome. We also
+    // don't use `!important` on `size` as it breaks in Chrome.
+    @page {
+      size: $print-page-size;
+    }
+    body {
+      min-width: $print-body-min-width !important;
+    }
+    .container {
+      min-width: $print-body-min-width !important;
+    }
+
+    // Bootstrap components
+    .navbar {
+      display: none;
+    }
+    .badge {
+      border: $border-width solid $black;
+    }
+
+    .table {
+      border-collapse: collapse !important;
+
+      td,
+      th {
+        background-color: $white !important;
+      }
+    }
+
+    .table-bordered {
+      th,
+      td {
+        border: 1px solid $gray-300 !important;
+      }
+    }
+
+    .table-dark {
+      color: inherit;
+
+      th,
+      td,
+      thead th,
+      tbody + tbody {
+        border-color: $table-border-color;
+      }
+    }
+
+    .table .thead-dark th {
+      color: inherit;
+      border-color: $table-border-color;
+    }
+
+    // Bootstrap specific changes end
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_custom-forms.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_custom-forms.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_custom-forms.scss	(revision 3762)
@@ -0,0 +1,547 @@
+// Embedded icons from Open Iconic.
+// Released under MIT and copyright 2014 Waybury.
+// https://useiconic.com/open
+
+
+// Checkboxes and radios
+//
+// Base class takes care of all the key behavioral aspects.
+
+.custom-control {
+  position: relative;
+  z-index: 1;
+  display: block;
+  min-height: $font-size-base * $line-height-base;
+  padding-left: $custom-control-gutter + $custom-control-indicator-size;
+  color-adjust: exact; // Keep themed appearance for print
+  -webkit-print-color-adjust: exact; // Keep themed appearance for print
+}
+
+.custom-control-inline {
+  display: inline-flex;
+  margin-right: $custom-control-spacer-x;
+}
+
+.custom-control-input {
+  position: absolute;
+  left: 0;
+  z-index: -1; // Put the input behind the label so it doesn't overlay text
+  width: $custom-control-indicator-size;
+  height: ($font-size-base * $line-height-base + $custom-control-indicator-size) / 2;
+  opacity: 0;
+
+  &:checked ~ .custom-control-label::before {
+    color: $custom-control-indicator-checked-color;
+    border-color: $custom-control-indicator-checked-border-color;
+    @include gradient-bg($custom-control-indicator-checked-bg);
+    @include box-shadow($custom-control-indicator-checked-box-shadow);
+  }
+
+  &:focus ~ .custom-control-label::before {
+    // the mixin is not used here to make sure there is feedback
+    @if $enable-shadows {
+      box-shadow: $input-box-shadow, $custom-control-indicator-focus-box-shadow;
+    } @else {
+      box-shadow: $custom-control-indicator-focus-box-shadow;
+    }
+  }
+
+  &:focus:not(:checked) ~ .custom-control-label::before {
+    border-color: $custom-control-indicator-focus-border-color;
+  }
+
+  &:not(:disabled):active ~ .custom-control-label::before {
+    color: $custom-control-indicator-active-color;
+    background-color: $custom-control-indicator-active-bg;
+    border-color: $custom-control-indicator-active-border-color;
+    @include box-shadow($custom-control-indicator-active-box-shadow);
+  }
+
+  // Use [disabled] and :disabled to work around https://github.com/twbs/bootstrap/issues/28247
+  &[disabled],
+  &:disabled {
+    ~ .custom-control-label {
+      color: $custom-control-label-disabled-color;
+
+      &::before {
+        background-color: $custom-control-indicator-disabled-bg;
+      }
+    }
+  }
+}
+
+// Custom control indicators
+//
+// Build the custom controls out of pseudo-elements.
+
+.custom-control-label {
+  position: relative;
+  margin-bottom: 0;
+  color: $custom-control-label-color;
+  vertical-align: top;
+  cursor: $custom-control-cursor;
+
+  // Background-color and (when enabled) gradient
+  &::before {
+    position: absolute;
+    top: ($font-size-base * $line-height-base - $custom-control-indicator-size) / 2;
+    left: -($custom-control-gutter + $custom-control-indicator-size);
+    display: block;
+    width: $custom-control-indicator-size;
+    height: $custom-control-indicator-size;
+    pointer-events: none;
+    content: "";
+    background-color: $custom-control-indicator-bg;
+    border: $custom-control-indicator-border-color solid $custom-control-indicator-border-width;
+    @include box-shadow($custom-control-indicator-box-shadow);
+  }
+
+  // Foreground (icon)
+  &::after {
+    position: absolute;
+    top: ($font-size-base * $line-height-base - $custom-control-indicator-size) / 2;
+    left: -($custom-control-gutter + $custom-control-indicator-size);
+    display: block;
+    width: $custom-control-indicator-size;
+    height: $custom-control-indicator-size;
+    content: "";
+    background: 50% / #{$custom-control-indicator-bg-size} no-repeat;
+  }
+}
+
+
+// Checkboxes
+//
+// Tweak just a few things for checkboxes.
+
+.custom-checkbox {
+  .custom-control-label::before {
+    @include border-radius($custom-checkbox-indicator-border-radius);
+  }
+
+  .custom-control-input:checked ~ .custom-control-label {
+    &::after {
+      background-image: escape-svg($custom-checkbox-indicator-icon-checked);
+    }
+  }
+
+  .custom-control-input:indeterminate ~ .custom-control-label {
+    &::before {
+      border-color: $custom-checkbox-indicator-indeterminate-border-color;
+      @include gradient-bg($custom-checkbox-indicator-indeterminate-bg);
+      @include box-shadow($custom-checkbox-indicator-indeterminate-box-shadow);
+    }
+    &::after {
+      background-image: escape-svg($custom-checkbox-indicator-icon-indeterminate);
+    }
+  }
+
+  .custom-control-input:disabled {
+    &:checked ~ .custom-control-label::before {
+      @include gradient-bg($custom-control-indicator-checked-disabled-bg);
+    }
+    &:indeterminate ~ .custom-control-label::before {
+      @include gradient-bg($custom-control-indicator-checked-disabled-bg);
+    }
+  }
+}
+
+// Radios
+//
+// Tweak just a few things for radios.
+
+.custom-radio {
+  .custom-control-label::before {
+    // stylelint-disable-next-line property-disallowed-list
+    border-radius: $custom-radio-indicator-border-radius;
+  }
+
+  .custom-control-input:checked ~ .custom-control-label {
+    &::after {
+      background-image: escape-svg($custom-radio-indicator-icon-checked);
+    }
+  }
+
+  .custom-control-input:disabled {
+    &:checked ~ .custom-control-label::before {
+      @include gradient-bg($custom-control-indicator-checked-disabled-bg);
+    }
+  }
+}
+
+
+// switches
+//
+// Tweak a few things for switches
+
+.custom-switch {
+  padding-left: $custom-switch-width + $custom-control-gutter;
+
+  .custom-control-label {
+    &::before {
+      left: -($custom-switch-width + $custom-control-gutter);
+      width: $custom-switch-width;
+      pointer-events: all;
+      // stylelint-disable-next-line property-disallowed-list
+      border-radius: $custom-switch-indicator-border-radius;
+    }
+
+    &::after {
+      top: add(($font-size-base * $line-height-base - $custom-control-indicator-size) / 2, $custom-control-indicator-border-width * 2);
+      left: add(-($custom-switch-width + $custom-control-gutter), $custom-control-indicator-border-width * 2);
+      width: $custom-switch-indicator-size;
+      height: $custom-switch-indicator-size;
+      background-color: $custom-control-indicator-border-color;
+      // stylelint-disable-next-line property-disallowed-list
+      border-radius: $custom-switch-indicator-border-radius;
+      @include transition(transform .15s ease-in-out, $custom-forms-transition);
+    }
+  }
+
+  .custom-control-input:checked ~ .custom-control-label {
+    &::after {
+      background-color: $custom-control-indicator-bg;
+      transform: translateX($custom-switch-width - $custom-control-indicator-size);
+    }
+  }
+
+  .custom-control-input:disabled {
+    &:checked ~ .custom-control-label::before {
+      @include gradient-bg($custom-control-indicator-checked-disabled-bg);
+    }
+  }
+}
+
+
+// Select
+//
+// Replaces the browser default select with a custom one, mostly pulled from
+// https://primer.github.io/.
+//
+
+.custom-select {
+  display: inline-block;
+  width: 100%;
+  height: $custom-select-height;
+  padding: $custom-select-padding-y ($custom-select-padding-x + $custom-select-indicator-padding) $custom-select-padding-y $custom-select-padding-x;
+  font-family: $custom-select-font-family;
+  @include font-size($custom-select-font-size);
+  font-weight: $custom-select-font-weight;
+  line-height: $custom-select-line-height;
+  color: $custom-select-color;
+  vertical-align: middle;
+  background: $custom-select-bg $custom-select-background;
+  border: $custom-select-border-width solid $custom-select-border-color;
+  @include border-radius($custom-select-border-radius, 0);
+  @include box-shadow($custom-select-box-shadow);
+  appearance: none;
+  -webkit-appearance: none;
+  -moz-appearance: none;
+  -ms-appearance: none;
+  -o-appearance: none;
+
+  &:focus {
+    border-color: $custom-select-focus-border-color;
+    outline: 0;
+    @if $enable-shadows {
+      @include box-shadow($custom-select-box-shadow, $custom-select-focus-box-shadow);
+    } @else {
+      // Avoid using mixin so we can pass custom focus shadow properly
+      box-shadow: $custom-select-focus-box-shadow;
+    }
+
+    &::-ms-value {
+      // For visual consistency with other platforms/browsers,
+      // suppress the default white text on blue background highlight given to
+      // the selected option text when the (still closed) <select> receives focus
+      // in IE and (under certain conditions) Edge.
+      // See https://github.com/twbs/bootstrap/issues/19398.
+      color: $input-color;
+      background-color: $input-bg;
+    }
+  }
+
+  &[multiple],
+  &[size]:not([size="1"]) {
+    height: auto;
+    padding-right: $custom-select-padding-x;
+    background-image: none;
+  }
+
+  &:disabled {
+    color: $custom-select-disabled-color;
+    background-color: $custom-select-disabled-bg;
+  }
+
+  // Hides the default caret in IE11
+  &::-ms-expand {
+    display: none;
+  }
+
+  // Remove outline from select box in FF
+  &:-moz-focusring {
+    color: transparent;
+    text-shadow: 0 0 0 $custom-select-color;
+  }
+}
+
+.custom-select-sm {
+  height: $custom-select-height-sm;
+  padding-top: $custom-select-padding-y-sm;
+  padding-bottom: $custom-select-padding-y-sm;
+  padding-left: $custom-select-padding-x-sm;
+  @include font-size($custom-select-font-size-sm);
+}
+
+.custom-select-lg {
+  height: $custom-select-height-lg;
+  padding-top: $custom-select-padding-y-lg;
+  padding-bottom: $custom-select-padding-y-lg;
+  padding-left: $custom-select-padding-x-lg;
+  @include font-size($custom-select-font-size-lg);
+}
+
+
+// File
+//
+// Custom file input.
+
+.custom-file {
+  position: relative;
+  display: inline-block;
+  width: 100%;
+  height: $custom-file-height;
+  margin-bottom: 0;
+}
+
+.custom-file-input {
+  position: relative;
+  z-index: 2;
+  width: 100%;
+  height: $custom-file-height;
+  margin: 0;
+  overflow: hidden;
+  opacity: 0;
+
+  &:focus ~ .custom-file-label {
+    border-color: $custom-file-focus-border-color;
+    box-shadow: $custom-file-focus-box-shadow;
+  }
+
+  // Use [disabled] and :disabled to work around https://github.com/twbs/bootstrap/issues/28247
+  &[disabled] ~ .custom-file-label,
+  &:disabled ~ .custom-file-label {
+    background-color: $custom-file-disabled-bg;
+  }
+
+  @each $lang, $value in $custom-file-text {
+    &:lang(#{$lang}) ~ .custom-file-label::after {
+      content: $value;
+    }
+  }
+
+  ~ .custom-file-label[data-browse]::after {
+    content: attr(data-browse);
+  }
+}
+
+.custom-file-label {
+  position: absolute;
+  top: 0;
+  right: 0;
+  left: 0;
+  z-index: 1;
+  height: $custom-file-height;
+  padding: $custom-file-padding-y $custom-file-padding-x;
+  overflow: hidden;
+  font-family: $custom-file-font-family;
+  font-weight: $custom-file-font-weight;
+  line-height: $custom-file-line-height;
+  color: $custom-file-color;
+  background-color: $custom-file-bg;
+  border: $custom-file-border-width solid $custom-file-border-color;
+  @include border-radius($custom-file-border-radius);
+  @include box-shadow($custom-file-box-shadow);
+
+  &::after {
+    position: absolute;
+    top: 0;
+    right: 0;
+    bottom: 0;
+    z-index: 3;
+    display: block;
+    height: $custom-file-height-inner;
+    padding: $custom-file-padding-y $custom-file-padding-x;
+    line-height: $custom-file-line-height;
+    color: $custom-file-button-color;
+    content: "Browse";
+    @include gradient-bg($custom-file-button-bg);
+    border-left: inherit;
+    @include border-radius(0 $custom-file-border-radius $custom-file-border-radius 0);
+  }
+}
+
+// Range
+//
+// Style range inputs the same across browsers. Vendor-specific rules for pseudo
+// elements cannot be mixed. As such, there are no shared styles for focus or
+// active states on prefixed selectors.
+
+.custom-range {
+  width: 100%;
+  height: add($custom-range-thumb-height, $custom-range-thumb-focus-box-shadow-width * 2);
+  padding: 0; // Need to reset padding
+  background-color: transparent;
+  appearance: none;
+  -webkit-appearance: none;
+  -moz-appearance: none;
+  -ms-appearance: none;
+  -o-appearance: none;
+
+  &:focus {
+    outline: 0;
+
+    // Pseudo-elements must be split across multiple rulesets to have an effect.
+    // No box-shadow() mixin for focus accessibility.
+    &::-webkit-slider-thumb { box-shadow: $custom-range-thumb-focus-box-shadow; }
+    &::-moz-range-thumb     { box-shadow: $custom-range-thumb-focus-box-shadow; }
+    &::-ms-thumb            { box-shadow: $custom-range-thumb-focus-box-shadow; }
+  }
+
+  &::-moz-focus-outer {
+    border: 0;
+  }
+
+  &::-webkit-slider-thumb {
+    width: $custom-range-thumb-width;
+    height: $custom-range-thumb-height;
+    margin-top: ($custom-range-track-height - $custom-range-thumb-height) / 2; // Webkit specific
+    @include gradient-bg($custom-range-thumb-bg);
+    border: $custom-range-thumb-border;
+    @include border-radius($custom-range-thumb-border-radius);
+    @include box-shadow($custom-range-thumb-box-shadow);
+    @include transition($custom-forms-transition);
+    appearance: none;
+    -webkit-appearance: none;
+    -moz-appearance: none;
+    -ms-appearance: none;
+    -o-appearance: none;
+
+    &:active {
+      @include gradient-bg($custom-range-thumb-active-bg);
+    }
+  }
+
+  &::-webkit-slider-runnable-track {
+    width: $custom-range-track-width;
+    height: $custom-range-track-height;
+    color: transparent; // Why?
+    cursor: $custom-range-track-cursor;
+    background-color: $custom-range-track-bg;
+    border-color: transparent;
+    @include border-radius($custom-range-track-border-radius);
+    @include box-shadow($custom-range-track-box-shadow);
+  }
+
+  &::-moz-range-thumb {
+    width: $custom-range-thumb-width;
+    height: $custom-range-thumb-height;
+    @include gradient-bg($custom-range-thumb-bg);
+    border: $custom-range-thumb-border;
+    @include border-radius($custom-range-thumb-border-radius);
+    @include box-shadow($custom-range-thumb-box-shadow);
+    @include transition($custom-forms-transition);
+    appearance: none;
+    -webkit-appearance: none;
+    -moz-appearance: none;
+    -ms-appearance: none;
+    -o-appearance: none;
+
+    &:active {
+      @include gradient-bg($custom-range-thumb-active-bg);
+    }
+  }
+
+  &::-moz-range-track {
+    width: $custom-range-track-width;
+    height: $custom-range-track-height;
+    color: transparent;
+    cursor: $custom-range-track-cursor;
+    background-color: $custom-range-track-bg;
+    border-color: transparent; // Firefox specific?
+    @include border-radius($custom-range-track-border-radius);
+    @include box-shadow($custom-range-track-box-shadow);
+  }
+
+  &::-ms-thumb {
+    width: $custom-range-thumb-width;
+    height: $custom-range-thumb-height;
+    margin-top: 0; // Edge specific
+    margin-right: $custom-range-thumb-focus-box-shadow-width; // Workaround that overflowed box-shadow is hidden.
+    margin-left: $custom-range-thumb-focus-box-shadow-width;  // Workaround that overflowed box-shadow is hidden.
+    @include gradient-bg($custom-range-thumb-bg);
+    border: $custom-range-thumb-border;
+    @include border-radius($custom-range-thumb-border-radius);
+    @include box-shadow($custom-range-thumb-box-shadow);
+    @include transition($custom-forms-transition);
+    appearance: none;
+    -webkit-appearance: none;
+    -moz-appearance: none;
+    -ms-appearance: none;
+    -o-appearance: none;
+
+    &:active {
+      @include gradient-bg($custom-range-thumb-active-bg);
+    }
+  }
+
+  &::-ms-track {
+    width: $custom-range-track-width;
+    height: $custom-range-track-height;
+    color: transparent;
+    cursor: $custom-range-track-cursor;
+    background-color: transparent;
+    border-color: transparent;
+    border-width: $custom-range-thumb-height / 2;
+    @include box-shadow($custom-range-track-box-shadow);
+  }
+
+  &::-ms-fill-lower {
+    background-color: $custom-range-track-bg;
+    @include border-radius($custom-range-track-border-radius);
+  }
+
+  &::-ms-fill-upper {
+    margin-right: 15px; // arbitrary?
+    background-color: $custom-range-track-bg;
+    @include border-radius($custom-range-track-border-radius);
+  }
+
+  &:disabled {
+    &::-webkit-slider-thumb {
+      background-color: $custom-range-thumb-disabled-bg;
+    }
+
+    &::-webkit-slider-runnable-track {
+      cursor: default;
+    }
+
+    &::-moz-range-thumb {
+      background-color: $custom-range-thumb-disabled-bg;
+    }
+
+    &::-moz-range-track {
+      cursor: default;
+    }
+
+    &::-ms-thumb {
+      background-color: $custom-range-thumb-disabled-bg;
+    }
+  }
+}
+
+.custom-control-label::before,
+.custom-file-label,
+.custom-select {
+  @include transition($custom-forms-transition);
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_buttons.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_buttons.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_buttons.scss	(revision 3762)
@@ -0,0 +1,162 @@
+// stylelint-disable selector-no-qualifying-type
+
+//
+// Base styles
+//
+
+.btn {
+  display: inline-block;
+  font-family: $btn-font-family;
+  font-weight: $btn-font-weight;
+  color: $body-color;
+  text-align: center;
+  text-decoration: if($link-decoration == none, null, none);
+  -webkit-text-decoration: if($link-decoration == none, null, none);
+  -moz-text-decoration: if($link-decoration == none, null, none);
+  -ms-text-decoration: if($link-decoration == none, null, none);
+  -o-text-decoration: if($link-decoration == none, null, none);
+  white-space: $btn-white-space;
+  vertical-align: middle;
+  user-select: none;
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  -o-user-select: none;
+  background-color: transparent;
+  border: $btn-border-width solid transparent;
+  @include button-size($btn-padding-y, $btn-padding-x, $btn-font-size, $btn-line-height, $btn-border-radius);
+  @include transition($btn-transition);
+
+  @include hover() {
+    color: $body-color;
+    text-decoration: none;
+  }
+
+  &:focus,
+  &.focus {
+    outline: 0;
+    box-shadow: $btn-focus-box-shadow;
+  }
+
+  // Disabled comes first so active can properly restyle
+  &.disabled,
+  &:disabled {
+    opacity: $btn-disabled-opacity;
+    @include box-shadow(none);
+  }
+
+  &:not(:disabled):not(.disabled) {
+    cursor: if($enable-pointer-cursor-for-buttons, pointer, null);
+
+    &:active,
+    &.active {
+      @include box-shadow($btn-active-box-shadow);
+
+      &:focus {
+        @include box-shadow($btn-focus-box-shadow, $btn-active-box-shadow);
+      }
+    }
+  }
+}
+
+// Future-proof disabling of clicks on `<a>` elements
+a.btn.disabled,
+fieldset:disabled a.btn {
+  pointer-events: none;
+}
+
+
+//
+// Alternate buttons
+//
+
+@each $color, $value in $theme-colors {
+  .btn-#{$color} {
+    @include button-variant($value, $value);
+  }
+}
+
+@each $color, $value in $theme-colors {
+  .btn-outline-#{$color} {
+    @include button-outline-variant($value);
+  }
+}
+
+
+//
+// Link buttons
+//
+
+// Make a button look and behave like a link
+.btn-link {
+  font-weight: $font-weight-normal;
+  color: $link-color;
+  text-decoration: $link-decoration;
+  -webkit-text-decoration: $link-decoration;
+  -moz-text-decoration: $link-decoration;
+  -ms-text-decoration: $link-decoration;
+  -o-text-decoration: $link-decoration;
+
+  @include hover() {
+    color: $link-hover-color;
+    text-decoration: $link-hover-decoration;
+    -webkit-text-decoration: $link-hover-decoration;
+    -moz-text-decoration: $link-hover-decoration;
+    -ms-text-decoration: $link-hover-decoration;
+    -o-text-decoration: $link-hover-decoration;
+  }
+
+  &:focus,
+  &.focus {
+    text-decoration: $link-hover-decoration;
+    -webkit-text-decoration: $link-hover-decoration;
+    -moz-text-decoration: $link-hover-decoration;
+    -ms-text-decoration: $link-hover-decoration;
+    -o-text-decoration: $link-hover-decoration;
+  }
+
+  &:disabled,
+  &.disabled {
+    color: $btn-link-disabled-color;
+    pointer-events: none;
+  }
+
+  // No need for an active state here
+}
+
+
+//
+// Button Sizes
+//
+
+.btn-lg {
+  @include button-size($btn-padding-y-lg, $btn-padding-x-lg, $btn-font-size-lg, $btn-line-height-lg, $btn-border-radius-lg);
+}
+
+.btn-sm {
+  @include button-size($btn-padding-y-sm, $btn-padding-x-sm, $btn-font-size-sm, $btn-line-height-sm, $btn-border-radius-sm);
+}
+
+
+//
+// Block button
+//
+
+.btn-block {
+  display: block;
+  width: 100%;
+
+  // Vertically space out multiple block buttons
+  + .btn-block {
+    margin-top: $btn-block-spacing-y;
+  }
+}
+
+// Specificity overrides
+input[type="submit"],
+input[type="reset"],
+input[type="button"] {
+  &.btn-block {
+    width: 100%;
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_deprecated.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_deprecated.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_deprecated.scss	(revision 3762)
@@ -0,0 +1,29 @@
+/////////////////////////////////////////////////////////////////
+// bslib's version=4 leverages BS5's color-contrast() instead of
+// color-yiq(), but it's in case someone happens to use it in their
+// own Sass, we define it, and throw deprecation warnings if used
+/////////////////////////////////////////////////////////////////
+
+@if variable-exists("yiq-contrasted-threshold") or
+    variable-exists("yiq-text-dark") or
+    variable-exists("yiq-text-light") {
+  @warn "color-yiq() is deprecated, use color-contrast() instead"
+}
+$yiq-contrasted-threshold: 150 !default;
+$yiq-text-dark:  black !default;
+$yiq-text-light:  white !default;
+@function color-yiq($color, $dark: $yiq-text-dark, $light: $yiq-text-light) {
+  @warn "color-yiq() is deprecated. Use color-contrast() instead.";
+
+  $r: red($color);
+  $g: green($color);
+  $b: blue($color);
+
+  $yiq: (($r * 299) + ($g * 587) + ($b * 114)) / 1000;
+
+  @if ($yiq >= $yiq-contrasted-threshold) {
+    @return $dark;
+  } @else {
+    @return $light;
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_badge.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_badge.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_badge.scss	(revision 3762)
@@ -0,0 +1,54 @@
+// Base class
+//
+// Requires one of the contextual, color modifier classes for `color` and
+// `background-color`.
+
+.badge {
+  display: inline-block;
+  padding: $badge-padding-y $badge-padding-x;
+  @include font-size($badge-font-size);
+  font-weight: $badge-font-weight;
+  line-height: 1;
+  text-align: center;
+  white-space: nowrap;
+  vertical-align: baseline;
+  @include border-radius($badge-border-radius);
+  @include transition($badge-transition);
+
+  @at-root a#{&} {
+    @include hover-focus() {
+      text-decoration: none;
+    }
+  }
+
+  // Empty badges collapse automatically
+  &:empty {
+    display: none;
+  }
+}
+
+// Quick fix for badges in buttons
+.btn .badge {
+  position: relative;
+  top: -1px;
+}
+
+// Pill badges
+//
+// Make them extra rounded with a modifier to replace v3's badges.
+
+.badge-pill {
+  padding-right: $badge-pill-padding-x;
+  padding-left: $badge-pill-padding-x;
+  @include border-radius($badge-pill-border-radius);
+}
+
+// Colors
+//
+// Contextual variations (linked badges get darker on :hover).
+
+@each $color, $value in $theme-colors {
+  .badge-#{$color} {
+    @include badge-variant($value);
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_progress.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_progress.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_progress.scss	(revision 3762)
@@ -0,0 +1,51 @@
+// Disable animation if transitions are disabled
+@if $enable-transitions {
+  @keyframes progress-bar-stripes {
+    from { background-position: $progress-height 0; }
+    to { background-position: 0 0; }
+  }
+}
+
+.progress {
+  display: flex;
+  display: -webkit-flex;
+  height: $progress-height;
+  overflow: hidden; // force rounded corners by cropping it
+  line-height: 0;
+  @include font-size($progress-font-size);
+  background-color: $progress-bg;
+  @include border-radius($progress-border-radius);
+  @include box-shadow($progress-box-shadow);
+}
+
+.progress-bar {
+  display: flex;
+  display: -webkit-flex;
+  flex-direction: column;
+  -webkit-flex-direction: column;
+  justify-content: center;
+  -webkit-justify-content: center;
+  overflow: hidden;
+  color: $progress-bar-color;
+  text-align: center;
+  white-space: nowrap;
+  background-color: $progress-bar-bg;
+  @include transition($progress-bar-transition);
+}
+
+.progress-bar-striped {
+  @include gradient-striped();
+  background-size: $progress-height $progress-height;
+}
+
+@if $enable-transitions {
+  .progress-bar-animated {
+    animation: $progress-bar-animation-timing progress-bar-stripes;
+
+    @if $enable-prefers-reduced-motion-media-query {
+      @media (prefers-reduced-motion: reduce) {
+        animation: none;
+      }
+    }
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_images.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_images.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_images.scss	(revision 3762)
@@ -0,0 +1,42 @@
+// Responsive images (ensure images don't scale beyond their parents)
+//
+// This is purposefully opt-in via an explicit class rather than being the default for all `<img>`s.
+// We previously tried the "images are responsive by default" approach in Bootstrap v2,
+// and abandoned it in Bootstrap v3 because it breaks lots of third-party widgets (including Google Maps)
+// which weren't expecting the images within themselves to be involuntarily resized.
+// See also https://github.com/twbs/bootstrap/issues/18178
+.img-fluid {
+  @include img-fluid();
+}
+
+
+// Image thumbnails
+.img-thumbnail {
+  padding: $thumbnail-padding;
+  background-color: $thumbnail-bg;
+  border: $thumbnail-border-width solid $thumbnail-border-color;
+  @include border-radius($thumbnail-border-radius);
+  @include box-shadow($thumbnail-box-shadow);
+
+  // Keep them at most 100% wide
+  @include img-fluid();
+}
+
+//
+// Figures
+//
+
+.figure {
+  // Ensures the caption's text aligns with the image.
+  display: inline-block;
+}
+
+.figure-img {
+  margin-bottom: $spacer / 2;
+  line-height: 1;
+}
+
+.figure-caption {
+  @include font-size($figure-caption-font-size);
+  color: $figure-caption-color;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_button-group.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_button-group.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_button-group.scss	(revision 3762)
@@ -0,0 +1,170 @@
+// stylelint-disable selector-no-qualifying-type
+
+// Make the div behave like a button
+.btn-group,
+.btn-group-vertical {
+  position: relative;
+  display: inline-flex;
+  vertical-align: middle; // match .btn alignment given font-size hack above
+
+  > .btn {
+    position: relative;
+    flex: 1 1 auto;
+    -webkit-flex: 1 1 auto;
+
+    // Bring the hover, focused, and "active" buttons to the front to overlay
+    // the borders properly
+    @include hover() {
+      z-index: 1;
+    }
+    &:focus,
+    &:active,
+    &.active {
+      z-index: 1;
+    }
+  }
+}
+
+// Optional: Group multiple button groups together for a toolbar
+.btn-toolbar {
+  display: flex;
+  display: -webkit-flex;
+  flex-wrap: wrap;
+  -webkit-flex-wrap: wrap;
+  justify-content: flex-start;
+  -webkit-justify-content: flex-start;
+
+  .input-group {
+    width: auto;
+  }
+}
+
+.btn-group {
+  // Prevent double borders when buttons are next to each other
+  > .btn:not(:first-child),
+  > .btn-group:not(:first-child) {
+    margin-left: -$btn-border-width;
+  }
+
+  // Reset rounded corners
+  > .btn:not(:last-child):not(.dropdown-toggle),
+  > .btn-group:not(:last-child) > .btn {
+    @include border-right-radius(0);
+  }
+
+  > .btn:not(:first-child),
+  > .btn-group:not(:first-child) > .btn {
+    @include border-left-radius(0);
+  }
+}
+
+// Sizing
+//
+// Remix the default button sizing classes into new ones for easier manipulation.
+
+.btn-group-sm > .btn { @extend .btn-sm; }
+.btn-group-lg > .btn { @extend .btn-lg; }
+
+
+//
+// Split button dropdowns
+//
+
+.dropdown-toggle-split {
+  padding-right: $btn-padding-x * .75;
+  padding-left: $btn-padding-x * .75;
+
+  &::after,
+  .dropup &::after,
+  .dropright &::after {
+    margin-left: 0;
+  }
+
+  .dropleft &::before {
+    margin-right: 0;
+  }
+}
+
+.btn-sm + .dropdown-toggle-split {
+  padding-right: $btn-padding-x-sm * .75;
+  padding-left: $btn-padding-x-sm * .75;
+}
+
+.btn-lg + .dropdown-toggle-split {
+  padding-right: $btn-padding-x-lg * .75;
+  padding-left: $btn-padding-x-lg * .75;
+}
+
+
+// The clickable button for toggling the menu
+// Set the same inset shadow as the :active state
+.btn-group.show .dropdown-toggle {
+  @include box-shadow($btn-active-box-shadow);
+
+  // Show no shadow for `.btn-link` since it has no other button styles.
+  &.btn-link {
+    @include box-shadow(none);
+  }
+}
+
+
+//
+// Vertical button groups
+//
+
+.btn-group-vertical {
+  flex-direction: column;
+  -webkit-flex-direction: column;
+  align-items: flex-start;
+  -webkit-align-items: flex-start;
+  justify-content: center;
+  -webkit-justify-content: center;
+
+  > .btn,
+  > .btn-group {
+    width: 100%;
+  }
+
+  > .btn:not(:first-child),
+  > .btn-group:not(:first-child) {
+    margin-top: -$btn-border-width;
+  }
+
+  // Reset rounded corners
+  > .btn:not(:last-child):not(.dropdown-toggle),
+  > .btn-group:not(:last-child) > .btn {
+    @include border-bottom-radius(0);
+  }
+
+  > .btn:not(:first-child),
+  > .btn-group:not(:first-child) > .btn {
+    @include border-top-radius(0);
+  }
+}
+
+
+// Checkbox and radio options
+//
+// In order to support the browser's form validation feedback, powered by the
+// `required` attribute, we have to "hide" the inputs via `clip`. We cannot use
+// `display: none;` or `visibility: hidden;` as that also hides the popover.
+// Simply visually hiding the inputs via `opacity` would leave them clickable in
+// certain cases which is prevented by using `clip` and `pointer-events`.
+// This way, we ensure a DOM element is visible to position the popover from.
+//
+// See https://github.com/twbs/bootstrap/pull/12794 and
+// https://github.com/twbs/bootstrap/pull/14559 for more information.
+
+.btn-group-toggle {
+  > .btn,
+  > .btn-group > .btn {
+    margin-bottom: 0; // Override default `<label>` value
+
+    input[type="radio"],
+    input[type="checkbox"] {
+      position: absolute;
+      clip: rect(0, 0, 0, 0);
+      pointer-events: none;
+    }
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/bootstrap-reboot.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/bootstrap-reboot.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/bootstrap-reboot.scss	(revision 3762)
@@ -0,0 +1,12 @@
+/*!
+ * Bootstrap Reboot v4.6.0 (https://getbootstrap.com/)
+ * Copyright 2011-2021 The Bootstrap Authors
+ * Copyright 2011-2021 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
+ */
+
+@import "functions";
+@import "variables";
+@import "mixins";
+@import "reboot";
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_alert.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_alert.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_alert.scss	(revision 3762)
@@ -0,0 +1,52 @@
+//
+// Base styles
+//
+
+.alert {
+  position: relative;
+  padding: $alert-padding-y $alert-padding-x;
+  margin-bottom: $alert-margin-bottom;
+  border: $alert-border-width solid transparent;
+  @include border-radius($alert-border-radius);
+}
+
+// Headings for larger alerts
+.alert-heading {
+  // Specified to prevent conflicts of changing $headings-color
+  color: inherit;
+}
+
+// Provide class for links that match alerts
+.alert-link {
+  font-weight: $alert-link-font-weight;
+}
+
+
+// Dismissible alerts
+//
+// Expand the right padding and account for the close button's positioning.
+
+.alert-dismissible {
+  padding-right: $close-font-size + $alert-padding-x * 2;
+
+  // Adjust close link position
+  .close {
+    position: absolute;
+    top: 0;
+    right: 0;
+    z-index: 2;
+    padding: $alert-padding-y $alert-padding-x;
+    color: inherit;
+  }
+}
+
+
+// Alternate styles
+//
+// Generate contextual modifier classes for colorizing the alert.
+
+@each $color, $value in $theme-colors {
+  .alert-#{$color} {
+    @include alert-variant(theme-color-level($color, $alert-bg-level), theme-color-level($color, $alert-border-level), theme-color-level($color, $alert-color-level));
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_functions.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_functions.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_functions.scss	(revision 3762)
@@ -0,0 +1,130 @@
+// Bootstrap functions
+//
+// Utility mixins and functions for evaluating source code across our variables, maps, and mixins.
+
+// Ascending
+// Used to evaluate Sass maps like our grid breakpoints.
+@mixin _assert-ascending($map, $map-name) {
+  $prev-key: null;
+  $prev-num: null;
+  @each $key, $num in $map {
+    @if $prev-num == null or unit($num) == "%" or unit($prev-num) == "%" {
+      // Do nothing
+    } @else if not comparable($prev-num, $num) {
+      @warn "Potentially invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} whose unit makes it incomparable to #{$prev-num}, the value of the previous key '#{$prev-key}' !";
+    } @else if $prev-num >= $num {
+      @warn "Invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} which isn't greater than #{$prev-num}, the value of the previous key '#{$prev-key}' !";
+    }
+    $prev-key: $key;
+    $prev-num: $num;
+  }
+}
+
+// Starts at zero
+// Used to ensure the min-width of the lowest breakpoint starts at 0.
+@mixin _assert-starts-at-zero($map, $map-name: "$grid-breakpoints") {
+  @if length($map) > 0 {
+    $values: map-values($map);
+    $first-value: nth($values, 1);
+    @if $first-value != 0 {
+      @warn "First breakpoint in #{$map-name} must start at 0, but starts at #{$first-value}.";
+    }
+  }
+}
+
+// Replace `$search` with `$replace` in `$string`
+// Used on our SVG icon backgrounds for custom forms.
+//
+// @author Hugo Giraudel
+// @param {String} $string - Initial string
+// @param {String} $search - Substring to replace
+// @param {String} $replace ('') - New value
+// @return {String} - Updated string
+@function str-replace($string, $search, $replace: "") {
+  $index: str-index($string, $search);
+
+  @if $index {
+    @return str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace);
+  }
+
+  @return $string;
+}
+
+// See https://codepen.io/kevinweber/pen/dXWoRw
+//
+// Requires the use of quotes around data URIs.
+
+@function escape-svg($string) {
+  @if str-index($string, "data:image/svg+xml") {
+    @each $char, $encoded in $escaped-characters {
+      // Do not escape the url brackets
+      @if str-index($string, "url(") == 1 {
+        $string: url("#{str-replace(str-slice($string, 6, -3), $char, $encoded)}");
+      } @else {
+        $string: str-replace($string, $char, $encoded);
+      }
+    }
+  }
+
+  @return $string;
+}
+
+
+// Retrieve color Sass maps
+@function color($key: "blue") {
+  @return map-get($colors, $key);
+}
+
+@function theme-color($key: "primary") {
+  @return map-get($theme-colors, $key);
+}
+
+@function gray($key: "100") {
+  @return map-get($grays, $key);
+}
+
+// Request a theme color level
+@function theme-color-level($color-name: "primary", $level: 0) {
+  $color: theme-color($color-name);
+  $color-base: if($level > 0, $black, $white);
+  $level: abs($level);
+
+  @return mix($color-base, $color, $level * $theme-color-interval);
+}
+
+// Return valid calc
+@function add($value1, $value2, $return-calc: true) {
+  @if $value1 == null {
+    @return $value2;
+  }
+
+  @if $value2 == null {
+    @return $value1;
+  }
+
+  @if type-of($value1) == number and type-of($value2) == number and comparable($value1, $value2) {
+    @return $value1 + $value2;
+  }
+
+  @return if($return-calc == true, calc(#{$value1} + #{$value2}), $value1 + unquote(" + ") + $value2);
+}
+
+@function subtract($value1, $value2, $return-calc: true) {
+  @if $value1 == null and $value2 == null {
+    @return null;
+  }
+
+  @if $value1 == null {
+    @return -$value2;
+  }
+
+  @if $value2 == null {
+    @return $value1;
+  }
+
+  @if type-of($value1) == number and type-of($value2) == number and comparable($value1, $value2) {
+    @return $value1 - $value2;
+  }
+
+  @return if($return-calc == true, calc(#{$value1} - #{$value2}), $value1 + unquote(" - ") + $value2);
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_navbar.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_navbar.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_navbar.scss	(revision 3762)
@@ -0,0 +1,353 @@
+// Contents
+//
+// Navbar
+// Navbar brand
+// Navbar nav
+// Navbar text
+// Navbar divider
+// Responsive navbar
+// Navbar position
+// Navbar themes
+
+
+// Navbar
+//
+// Provide a static navbar from which we expand to create full-width, fixed, and
+// other navbar variations.
+
+.navbar {
+  position: relative;
+  display: flex;
+  display: -webkit-flex;
+  flex-wrap: wrap; // allow us to do the line break for collapsing content
+  -webkit-flex-wrap: wrap; // allow us to do the line break for collapsing content
+  align-items: center;
+  -webkit-align-items: center;
+  justify-content: space-between; // space out brand from logo
+  -webkit-justify-content: space-between; // space out brand from logo
+  padding: $navbar-padding-y $navbar-padding-x;
+
+  // Because flex properties aren't inherited, we need to redeclare these first
+  // few properties so that content nested within behave properly.
+  %container-flex-properties {
+    display: flex;
+    display: -webkit-flex;
+    flex-wrap: wrap;
+    -webkit-flex-wrap: wrap;
+    align-items: center;
+    -webkit-align-items: center;
+    justify-content: space-between;
+    -webkit-justify-content: space-between;
+  }
+
+  .container,
+  .container-fluid {
+    @extend %container-flex-properties;
+  }
+
+  @each $breakpoint, $container-max-width in $container-max-widths {
+    > .container#{breakpoint-infix($breakpoint, $container-max-widths)} {
+      @extend %container-flex-properties;
+    }
+  }
+}
+
+
+// Navbar brand
+//
+// Used for brand, project, or site names.
+
+.navbar-brand {
+  display: inline-block;
+  padding-top: $navbar-brand-padding-y;
+  padding-bottom: $navbar-brand-padding-y;
+  margin-right: $navbar-padding-x;
+  @include font-size($navbar-brand-font-size);
+  line-height: inherit;
+  white-space: nowrap;
+
+  @include hover-focus() {
+    text-decoration: none;
+  }
+}
+
+
+// Navbar nav
+//
+// Custom navbar navigation (doesn't require `.nav`, but does make use of `.nav-link`).
+
+.navbar-nav {
+  display: flex;
+  display: -webkit-flex;
+  flex-direction: column; // cannot use `inherit` to get the `.navbar`s value
+  -webkit-flex-direction: column; // cannot use `inherit` to get the `.navbar`s value
+  padding-left: 0;
+  margin-bottom: 0;
+  list-style: none;
+
+  .nav-link {
+    padding-right: 0;
+    padding-left: 0;
+  }
+
+  .dropdown-menu {
+    position: static;
+    float: none;
+  }
+}
+
+
+// Navbar text
+//
+//
+
+.navbar-text {
+  display: inline-block;
+  padding-top: $nav-link-padding-y;
+  padding-bottom: $nav-link-padding-y;
+}
+
+
+// Responsive navbar
+//
+// Custom styles for responsive collapsing and toggling of navbar contents.
+// Powered by the collapse Bootstrap JavaScript plugin.
+
+// When collapsed, prevent the toggleable navbar contents from appearing in
+// the default flexbox row orientation. Requires the use of `flex-wrap: wrap`
+// on the `.navbar` parent.
+.navbar-collapse {
+  flex-basis: 100%;
+  -webkit-flex-basis: 100%;
+  flex-grow: 1;
+  -webkit-flex-grow: 1;
+  // For always expanded or extra full navbars, ensure content aligns itself
+  // properly vertically. Can be easily overridden with flex utilities.
+  align-items: center;
+  -webkit-align-items: center;
+}
+
+// Button for toggling the navbar when in its collapsed state
+.navbar-toggler {
+  padding: $navbar-toggler-padding-y $navbar-toggler-padding-x;
+  @include font-size($navbar-toggler-font-size);
+  line-height: 1;
+  background-color: transparent; // remove default button style
+  border: $border-width solid transparent; // remove default button style
+  @include border-radius($navbar-toggler-border-radius);
+
+  @include hover-focus() {
+    text-decoration: none;
+  }
+}
+
+// Keep as a separate element so folks can easily override it with another icon
+// or image file as needed.
+.navbar-toggler-icon {
+  display: inline-block;
+  width: 1.5em;
+  height: 1.5em;
+  vertical-align: middle;
+  content: "";
+  background: 50% / 100% 100% no-repeat;
+}
+
+.navbar-nav-scroll {
+  max-height: $navbar-nav-scroll-max-height;
+  overflow-y: auto;
+}
+
+// Generate series of `.navbar-expand-*` responsive classes for configuring
+// where your navbar collapses.
+.navbar-expand {
+  @each $breakpoint in map-keys($grid-breakpoints) {
+    $next: breakpoint-next($breakpoint, $grid-breakpoints);
+    $infix: breakpoint-infix($next, $grid-breakpoints);
+
+    &#{$infix} {
+      @include media-breakpoint-down($breakpoint) {
+        %container-navbar-expand-#{$breakpoint} {
+          padding-right: 0;
+          padding-left: 0;
+        }
+
+        > .container,
+        > .container-fluid {
+          @extend %container-navbar-expand-#{$breakpoint};
+        }
+
+        @each $size, $container-max-width in $container-max-widths {
+          > .container#{breakpoint-infix($size, $container-max-widths)} {
+            @extend %container-navbar-expand-#{$breakpoint};
+          }
+        }
+      }
+
+      @include media-breakpoint-up($next) {
+        flex-flow: row nowrap;
+        -webkit-flex-flow: row nowrap;
+        justify-content: flex-start;
+        -webkit-justify-content: flex-start;
+
+        .navbar-nav {
+          flex-direction: row;
+          -webkit-flex-direction: row;
+
+          .dropdown-menu {
+            position: absolute;
+          }
+
+          .nav-link {
+            padding-right: $navbar-nav-link-padding-x;
+            padding-left: $navbar-nav-link-padding-x;
+          }
+        }
+
+        // For nesting containers, have to redeclare for alignment purposes
+        %container-nesting-#{$breakpoint} {
+          flex-wrap: nowrap;
+          -webkit-flex-wrap: nowrap;
+        }
+
+        > .container,
+        > .container-fluid {
+          @extend %container-nesting-#{$breakpoint};
+        }
+
+        @each $size, $container-max-width in $container-max-widths {
+          > .container#{breakpoint-infix($size, $container-max-widths)} {
+            @extend %container-nesting-#{$breakpoint};
+          }
+        }
+
+        .navbar-nav-scroll {
+          overflow: visible;
+        }
+
+        .navbar-collapse {
+          display: flex !important; // stylelint-disable-line declaration-no-important
+          display: -webkit-flex !important; // stylelint-disable-line declaration-no-important
+
+          // Changes flex-bases to auto because of an IE10 bug
+          flex-basis: auto;
+          -webkit-flex-basis: auto;
+        }
+
+        .navbar-toggler {
+          display: none;
+        }
+      }
+    }
+  }
+}
+
+
+// Navbar themes
+//
+// Styles for switching between navbars with light or dark background.
+
+// Dark links against a light background
+.navbar-light {
+  background-color: $navbar-light-bg; // not !important so .bg-* utilities can still override
+  .navbar-brand {
+    color: $navbar-light-brand-color;
+
+    @include hover-focus() {
+      color: $navbar-light-brand-hover-color;
+    }
+  }
+
+  .navbar-nav {
+    .nav-link {
+      color: $navbar-light-color;
+
+      @include hover-focus() {
+        color: $navbar-light-hover-color;
+      }
+
+      &.disabled {
+        color: $navbar-light-disabled-color;
+      }
+    }
+
+    .show > .nav-link,
+    .active > .nav-link,
+    .nav-link.show,
+    .nav-link.active {
+      color: $navbar-light-active-color;
+    }
+  }
+
+  .navbar-toggler {
+    color: $navbar-light-color;
+    border-color: $navbar-light-toggler-border-color;
+  }
+
+  .navbar-toggler-icon {
+    background-image: escape-svg($navbar-light-toggler-icon-bg);
+  }
+
+  .navbar-text {
+    color: $navbar-light-color;
+    a {
+      color: $navbar-light-active-color;
+
+      @include hover-focus() {
+        color: $navbar-light-active-color;
+      }
+    }
+  }
+}
+
+// White links against a dark background
+.navbar-dark {
+  background-color: $navbar-dark-bg; // not !important so .bg-* utilities can still override
+  .navbar-brand {
+    color: $navbar-dark-brand-color;
+
+    @include hover-focus() {
+      color: $navbar-dark-brand-hover-color;
+    }
+  }
+
+  .navbar-nav {
+    .nav-link {
+      color: $navbar-dark-color;
+
+      @include hover-focus() {
+        color: $navbar-dark-hover-color;
+      }
+
+      &.disabled {
+        color: $navbar-dark-disabled-color;
+      }
+    }
+
+    .show > .nav-link,
+    .active > .nav-link,
+    .nav-link.show,
+    .nav-link.active {
+      color: $navbar-dark-active-color;
+    }
+  }
+
+  .navbar-toggler {
+    color: $navbar-dark-color;
+    border-color: $navbar-dark-toggler-border-color;
+  }
+
+  .navbar-toggler-icon {
+    background-image: escape-svg($navbar-dark-toggler-icon-bg);
+  }
+
+  .navbar-text {
+    color: $navbar-dark-color;
+    a {
+      color: $navbar-dark-active-color;
+
+      @include hover-focus() {
+        color: $navbar-dark-active-color;
+      }
+    }
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_code.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_code.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_code.scss	(revision 3762)
@@ -0,0 +1,57 @@
+// Inline code
+code {
+  @include font-size($code-font-size);
+  color: $code-color;
+  background-color: $code-bg;
+  @include border-radius($border-radius);
+  padding: $spacer/8 $spacer/4;
+  word-wrap: break-word;
+
+  // Streamline the style when inside anchors to avoid broken underline and more
+  a > & {
+    color: inherit;
+  }
+}
+
+// User input typically entered via keyboard
+kbd {
+  padding: $kbd-padding-y $kbd-padding-x;
+  @include font-size($kbd-font-size);
+  color: $kbd-color;
+  background-color: $kbd-bg;
+  @include border-radius($border-radius-sm);
+  @include box-shadow($kbd-box-shadow);
+
+  kbd {
+    padding: 0;
+    @include font-size(100%);
+    font-weight: $nested-kbd-font-weight;
+    @include box-shadow(none);
+  }
+}
+
+// Blocks of code
+pre {
+  display: block;
+  @include font-size($code-font-size);
+  color: $pre-color;
+  background-color: $pre-bg;
+  padding: $spacer / 2;
+  border: $pre-border;
+  @include border-radius($border-radius);
+
+  // Account for some code outputs that place code tags in pre tags
+  code {
+    background-color: transparent;
+    @include font-size(inherit);
+    color: inherit;
+    word-break: normal;
+    padding: 0;
+  }
+}
+
+// Enable scrollable blocks of code
+.pre-scrollable {
+  max-height: $pre-scrollable-max-height;
+  overflow-y: scroll;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/bootstrap.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/bootstrap.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/bootstrap.scss	(revision 3762)
@@ -0,0 +1,44 @@
+/*!
+ * Bootstrap v4.6.0 (https://getbootstrap.com/)
+ * Copyright 2011-2021 The Bootstrap Authors
+ * Copyright 2011-2021 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ */
+
+@import "functions";
+@import "variables";
+@import "mixins";
+@import "root";
+@import "reboot";
+@import "type";
+@import "images";
+@import "code";
+@import "grid";
+@import "tables";
+@import "forms";
+@import "buttons";
+@import "transitions";
+@import "dropdown";
+@import "button-group";
+@import "input-group";
+@import "custom-forms";
+@import "nav";
+@import "navbar";
+@import "card";
+@import "breadcrumb";
+@import "pagination";
+@import "badge";
+@import "jumbotron";
+@import "alert";
+@import "progress";
+@import "media";
+@import "list-group";
+@import "close";
+@import "toasts";
+@import "modal";
+@import "tooltip";
+@import "popover";
+@import "carousel";
+@import "spinners";
+@import "utilities";
+@import "print";
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_jumbotron.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_jumbotron.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_jumbotron.scss	(revision 3762)
@@ -0,0 +1,17 @@
+.jumbotron {
+  padding: $jumbotron-padding ($jumbotron-padding / 2);
+  margin-bottom: $jumbotron-padding;
+  color: $jumbotron-color;
+  background-color: $jumbotron-bg;
+  @include border-radius($border-radius-lg);
+
+  @include media-breakpoint-up(sm) {
+    padding: ($jumbotron-padding * 2) $jumbotron-padding;
+  }
+}
+
+.jumbotron-fluid {
+  padding-right: 0;
+  padding-left: 0;
+  @include border-radius(0);
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_root.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_root.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_root.scss	(revision 3762)
@@ -0,0 +1,19 @@
+:root {
+  // Custom variable values only support SassScript inside `#{}`.
+  @each $color, $value in $colors {
+    --#{$color}: #{$value};
+  }
+
+  @each $color, $value in $theme-colors {
+    --#{$color}: #{$value};
+  }
+
+  @each $bp, $value in $grid-breakpoints {
+    --breakpoint-#{$bp}: #{$value};
+  }
+
+  // Use `inspect` for lists so that quoted items keep the quotes.
+  // See https://github.com/sass/sass/issues/2383#issuecomment-336349172
+  --font-family-sans-serif: #{inspect($font-family-sans-serif)};
+  --font-family-monospace: #{inspect($font-family-monospace)};
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_grid.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_grid.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_grid.scss	(revision 3762)
@@ -0,0 +1,73 @@
+// Container widths
+//
+// Set the container width, and override it for fixed navbars in media queries.
+
+@if $enable-grid-classes {
+  // Single container class with breakpoint max-widths
+  .container,
+  // 100% wide container at all breakpoints
+  .container-fluid {
+    @include make-container();
+  }
+
+  // Responsive containers that are 100% wide until a breakpoint
+  @each $breakpoint, $container-max-width in $container-max-widths {
+    .container-#{$breakpoint} {
+      @extend .container-fluid;
+    }
+
+    @include media-breakpoint-up($breakpoint, $grid-breakpoints) {
+      %responsive-container-#{$breakpoint} {
+        max-width: $container-max-width;
+      }
+
+      // Extend each breakpoint which is smaller or equal to the current breakpoint
+      $extend-breakpoint: true;
+
+      @each $name, $width in $grid-breakpoints {
+        @if ($extend-breakpoint) {
+          .container#{breakpoint-infix($name, $grid-breakpoints)} {
+            @extend %responsive-container-#{$breakpoint};
+          }
+
+          // Once the current breakpoint is reached, stop extending
+          @if ($breakpoint == $name) {
+            $extend-breakpoint: false;
+          }
+        }
+      }
+    }
+  }
+}
+
+
+// Row
+//
+// Rows contain your columns.
+
+@if $enable-grid-classes {
+  .row {
+    @include make-row();
+  }
+
+  // Remove the negative margin from default .row, then the horizontal padding
+  // from all immediate children columns (to prevent runaway style inheritance).
+  .no-gutters {
+    margin-right: 0;
+    margin-left: 0;
+
+    > .col,
+    > [class*="col-"] {
+      padding-right: 0;
+      padding-left: 0;
+    }
+  }
+}
+
+// Columns
+//
+// Common styles for small and large grid columns
+
+@if $enable-grid-classes {
+  @include make-grid-columns();
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_input-group.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_input-group.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_input-group.scss	(revision 3762)
@@ -0,0 +1,217 @@
+// stylelint-disable selector-no-qualifying-type
+
+//
+// Base styles
+//
+
+.input-group {
+  position: relative;
+  display: flex;
+  display: -webkit-flex;
+  flex-wrap: wrap; // For form validation feedback
+  -webkit-flex-wrap: wrap; // For form validation feedback
+  align-items: stretch;
+  -webkit-align-items: stretch;
+  width: 100%;
+
+  > .form-control,
+  > .form-control-plaintext,
+  > .custom-select,
+  > .custom-file {
+    position: relative; // For focus state's z-index
+    flex: 1 1 auto;
+    -webkit-flex: 1 1 auto;
+    width: 1%;
+    min-width: 0; // https://stackoverflow.com/questions/36247140/why-dont-flex-items-shrink-past-content-size
+    margin-bottom: 0;
+
+    + .form-control,
+    + .custom-select,
+    + .custom-file {
+      margin-left: -$input-border-width;
+    }
+  }
+
+  // Bring the "active" form control to the top of surrounding elements
+  > .form-control:focus,
+  > .custom-select:focus,
+  > .custom-file .custom-file-input:focus ~ .custom-file-label {
+    z-index: 3;
+  }
+
+  // Bring the custom file input above the label
+  > .custom-file .custom-file-input:focus {
+    z-index: 4;
+  }
+
+  > .form-control,
+  > .custom-select {
+    &:not(:first-child) { @include border-left-radius(0); }
+  }
+
+  // Custom file inputs have more complex markup, thus requiring different
+  // border-radius overrides.
+  > .custom-file {
+    display: flex;
+    display: -webkit-flex;
+    align-items: center;
+    -webkit-align-items: center;
+
+    &:not(:last-child) .custom-file-label,
+    &:not(:first-child) .custom-file-label { @include border-left-radius(0); }
+  }
+
+  &:not(.has-validation) {
+    > .form-control:not(:last-child),
+    > .custom-select:not(:last-child),
+    > .custom-file:not(:last-child) .custom-file-label::after {
+      @include border-right-radius(0);
+    }
+  }
+
+  &.has-validation {
+    > .form-control:nth-last-child(n + 3),
+    > .custom-select:nth-last-child(n + 3),
+    > .custom-file:nth-last-child(n + 3) .custom-file-label::after {
+      @include border-right-radius(0);
+    }
+  }
+}
+
+
+// Prepend and append
+//
+// While it requires one extra layer of HTML for each, dedicated prepend and
+// append elements allow us to 1) be less clever, 2) simplify our selectors, and
+// 3) support HTML5 form validation.
+
+.input-group-prepend,
+.input-group-append {
+  display: flex;
+  display: -webkit-flex;
+
+  // Ensure buttons are always above inputs for more visually pleasing borders.
+  // This isn't needed for `.input-group-text` since it shares the same border-color
+  // as our inputs.
+  .btn {
+    position: relative;
+    z-index: 2;
+
+    &:focus {
+      z-index: 3;
+    }
+  }
+
+  .btn + .btn,
+  .btn + .input-group-text,
+  .input-group-text + .input-group-text,
+  .input-group-text + .btn {
+    margin-left: -$input-border-width;
+  }
+}
+
+.input-group-prepend { margin-right: -$input-border-width; }
+.input-group-append { margin-left: -$input-border-width; }
+
+
+// Textual addons
+//
+// Serves as a catch-all element for any text or radio/checkbox input you wish
+// to prepend or append to an input.
+
+.input-group-text {
+  display: flex;
+  display: -webkit-flex;
+  align-items: center;
+  -webkit-align-items: center;
+  padding: $input-padding-y $input-padding-x;
+  margin-bottom: 0; // Allow use of <label> elements by overriding our default margin-bottom
+  @include font-size($input-font-size); // Match inputs
+  font-weight: $font-weight-normal;
+  line-height: $input-line-height;
+  color: $input-group-addon-color;
+  text-align: center;
+  white-space: nowrap;
+  background-color: $input-group-addon-bg;
+  border: $input-border-width solid $input-group-addon-border-color;
+  @include border-radius($input-border-radius);
+
+  // Nuke default margins from checkboxes and radios to vertically center within.
+  input[type="radio"],
+  input[type="checkbox"] {
+    margin-top: 0;
+  }
+}
+
+
+// Sizing
+//
+// Remix the default form control sizing classes into new ones for easier
+// manipulation.
+
+.input-group-lg > .form-control:not(textarea),
+.input-group-lg > .custom-select {
+  height: $input-height-lg;
+}
+
+.input-group-lg > .form-control,
+.input-group-lg > .custom-select,
+.input-group-lg > .input-group-prepend > .input-group-text,
+.input-group-lg > .input-group-append > .input-group-text,
+.input-group-lg > .input-group-prepend > .btn,
+.input-group-lg > .input-group-append > .btn {
+  padding: $input-padding-y-lg $input-padding-x-lg;
+  @include font-size($input-font-size-lg);
+  line-height: $input-line-height-lg;
+  @include border-radius($input-border-radius-lg);
+}
+
+.input-group-sm > .form-control:not(textarea),
+.input-group-sm > .custom-select {
+  height: $input-height-sm;
+}
+
+.input-group-sm > .form-control,
+.input-group-sm > .custom-select,
+.input-group-sm > .input-group-prepend > .input-group-text,
+.input-group-sm > .input-group-append > .input-group-text,
+.input-group-sm > .input-group-prepend > .btn,
+.input-group-sm > .input-group-append > .btn {
+  padding: $input-padding-y-sm $input-padding-x-sm;
+  @include font-size($input-font-size-sm);
+  line-height: $input-line-height-sm;
+  @include border-radius($input-border-radius-sm);
+}
+
+.input-group-lg > .custom-select,
+.input-group-sm > .custom-select {
+  padding-right: $custom-select-padding-x + $custom-select-indicator-padding;
+}
+
+
+// Prepend and append rounded corners
+//
+// These rulesets must come after the sizing ones to properly override sm and lg
+// border-radius values when extending. They're more specific than we'd like
+// with the `.input-group >` part, but without it, we cannot override the sizing.
+
+
+.input-group > .input-group-prepend > .btn,
+.input-group > .input-group-prepend > .input-group-text,
+.input-group:not(.has-validation) > .input-group-append:not(:last-child) > .btn,
+.input-group:not(.has-validation) > .input-group-append:not(:last-child) > .input-group-text,
+.input-group.has-validation > .input-group-append:nth-last-child(n + 3) > .btn,
+.input-group.has-validation > .input-group-append:nth-last-child(n + 3) > .input-group-text,
+.input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle),
+.input-group > .input-group-append:last-child > .input-group-text:not(:last-child) {
+  @include border-right-radius(0);
+}
+
+.input-group > .input-group-append > .btn,
+.input-group > .input-group-append > .input-group-text,
+.input-group > .input-group-prepend:not(:first-child) > .btn,
+.input-group > .input-group-prepend:not(:first-child) > .input-group-text,
+.input-group > .input-group-prepend:first-child > .btn:not(:first-child),
+.input-group > .input-group-prepend:first-child > .input-group-text:not(:first-child) {
+  @include border-left-radius(0);
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_pagination.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_pagination.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_pagination.scss	(revision 3762)
@@ -0,0 +1,79 @@
+.pagination {
+  display: flex;
+  display: -webkit-flex;
+  @include list-unstyled();
+  @include border-radius();
+}
+
+.page-link {
+  position: relative;
+  display: block;
+  padding: $pagination-padding-y $pagination-padding-x;
+  margin-left: -$pagination-border-width;
+  line-height: $pagination-line-height;
+  color: $pagination-color;
+  text-decoration: if($link-decoration == none, null, none);
+  -webkit-text-decoration: if($link-decoration == none, null, none);
+  -moz-text-decoration: if($link-decoration == none, null, none);
+  -ms-text-decoration: if($link-decoration == none, null, none);
+  -o-text-decoration: if($link-decoration == none, null, none);
+  background-color: $pagination-bg;
+  border: $pagination-border-width solid $pagination-border-color;
+
+  &:hover {
+    z-index: 2;
+    color: $pagination-hover-color;
+    text-decoration: none;
+    background-color: $pagination-hover-bg;
+    border-color: $pagination-hover-border-color;
+  }
+
+  &:focus {
+    z-index: 3;
+    outline: $pagination-focus-outline;
+    box-shadow: $pagination-focus-box-shadow;
+  }
+}
+
+.page-item {
+  &:first-child {
+    .page-link {
+      margin-left: 0;
+      @include border-left-radius($border-radius);
+    }
+  }
+  &:last-child {
+    .page-link {
+      @include border-right-radius($border-radius);
+    }
+  }
+
+  &.active .page-link {
+    z-index: 3;
+    color: $pagination-active-color;
+    background-color: $pagination-active-bg;
+    border-color: $pagination-active-border-color;
+  }
+
+  &.disabled .page-link {
+    color: $pagination-disabled-color;
+    pointer-events: none;
+    // Opinionated: remove the "hand" cursor set previously for .page-link
+    cursor: auto;
+    background-color: $pagination-disabled-bg;
+    border-color: $pagination-disabled-border-color;
+  }
+}
+
+
+//
+// Sizing
+//
+
+.pagination-lg {
+  @include pagination-size($pagination-padding-y-lg, $pagination-padding-x-lg, $font-size-lg, $line-height-lg, $pagination-border-radius-lg);
+}
+
+.pagination-sm {
+  @include pagination-size($pagination-padding-y-sm, $pagination-padding-x-sm, $font-size-sm, $line-height-sm, $pagination-border-radius-sm);
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_tooltip.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_tooltip.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_tooltip.scss	(revision 3762)
@@ -0,0 +1,115 @@
+// Base class
+.tooltip {
+  position: absolute;
+  z-index: $zindex-tooltip;
+  display: block;
+  margin: $tooltip-margin;
+  // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.
+  // So reset our font and text properties to avoid inheriting weird values.
+  @include reset-text();
+  @include font-size($tooltip-font-size);
+  // Allow breaking very long words so they don't overflow the tooltip's bounds
+  word-wrap: break-word;
+  opacity: 0;
+
+  &.show { opacity: $tooltip-opacity; }
+
+  .arrow {
+    position: absolute;
+    display: block;
+    width: $tooltip-arrow-width;
+    height: $tooltip-arrow-height;
+
+    &::before {
+      position: absolute;
+      content: "";
+      border-color: transparent;
+      border-style: solid;
+    }
+  }
+}
+
+.bs-tooltip-top {
+  padding: $tooltip-arrow-height 0;
+
+  .arrow {
+    bottom: 0;
+
+    &::before {
+      top: 0;
+      border-width: $tooltip-arrow-height ($tooltip-arrow-width / 2) 0;
+      border-top-color: $tooltip-arrow-color;
+    }
+  }
+}
+
+.bs-tooltip-right {
+  padding: 0 $tooltip-arrow-height;
+
+  .arrow {
+    left: 0;
+    width: $tooltip-arrow-height;
+    height: $tooltip-arrow-width;
+
+    &::before {
+      right: 0;
+      border-width: ($tooltip-arrow-width / 2) $tooltip-arrow-height ($tooltip-arrow-width / 2) 0;
+      border-right-color: $tooltip-arrow-color;
+    }
+  }
+}
+
+.bs-tooltip-bottom {
+  padding: $tooltip-arrow-height 0;
+
+  .arrow {
+    top: 0;
+
+    &::before {
+      bottom: 0;
+      border-width: 0 ($tooltip-arrow-width / 2) $tooltip-arrow-height;
+      border-bottom-color: $tooltip-arrow-color;
+    }
+  }
+}
+
+.bs-tooltip-left {
+  padding: 0 $tooltip-arrow-height;
+
+  .arrow {
+    right: 0;
+    width: $tooltip-arrow-height;
+    height: $tooltip-arrow-width;
+
+    &::before {
+      left: 0;
+      border-width: ($tooltip-arrow-width / 2) 0 ($tooltip-arrow-width / 2) $tooltip-arrow-height;
+      border-left-color: $tooltip-arrow-color;
+    }
+  }
+}
+
+.bs-tooltip-auto {
+  &[x-placement^="top"] {
+    @extend .bs-tooltip-top;
+  }
+  &[x-placement^="right"] {
+    @extend .bs-tooltip-right;
+  }
+  &[x-placement^="bottom"] {
+    @extend .bs-tooltip-bottom;
+  }
+  &[x-placement^="left"] {
+    @extend .bs-tooltip-left;
+  }
+}
+
+// Wrapper for the tooltip content
+.tooltip-inner {
+  max-width: $tooltip-max-width;
+  padding: $tooltip-padding-y $tooltip-padding-x;
+  color: $tooltip-color;
+  text-align: center;
+  background-color: $tooltip-bg;
+  @include border-radius($tooltip-border-radius);
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_modal.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_modal.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/scss/_modal.scss	(revision 3762)
@@ -0,0 +1,264 @@
+// .modal-open      - body class for killing the scroll
+// .modal           - container to scroll within
+// .modal-dialog    - positioning shell for the actual modal
+// .modal-content   - actual modal w/ bg and corners and stuff
+
+
+.modal-open {
+  // Kill the scroll on the body
+  overflow: hidden;
+
+  .modal {
+    overflow-x: hidden;
+    overflow-y: auto;
+  }
+}
+
+// Container that the modal scrolls within
+.modal {
+  position: fixed;
+  top: 0;
+  left: 0;
+  z-index: $zindex-modal;
+  display: none;
+  width: 100%;
+  height: 100%;
+  overflow: hidden;
+  // Prevent Chrome on Windows from adding a focus outline. For details, see
+  // https://github.com/twbs/bootstrap/pull/10951.
+  outline: 0;
+  // We deliberately don't use `-webkit-overflow-scrolling: touch;` due to a
+  // gnarly iOS Safari bug: https://bugs.webkit.org/show_bug.cgi?id=158342
+  // See also https://github.com/twbs/bootstrap/issues/17695
+}
+
+// Shell div to position the modal with bottom padding
+.modal-dialog {
+  position: relative;
+  width: auto;
+  margin: $modal-dialog-margin;
+  // allow clicks to pass through for custom click handling to close modal
+  pointer-events: none;
+
+  // When fading in the modal, animate it to slide down
+  .modal.fade & {
+    @include transition($modal-transition);
+    transform: $modal-fade-transform;
+  }
+  .modal.show & {
+    transform: $modal-show-transform;
+  }
+
+  // When trying to close, animate focus to scale
+  .modal.modal-static & {
+    transform: $modal-scale-transform;
+  }
+}
+
+.modal-dialog-scrollable {
+  display: flex; // IE10/11
+  display: -webkit-flex; // IE10/11
+  max-height: subtract(100%, $modal-dialog-margin * 2);
+
+  .modal-content {
+    max-height: subtract(100vh, $modal-dialog-margin * 2); // IE10/11
+    overflow: hidden;
+  }
+
+  .modal-header,
+  .modal-footer {
+    flex-shrink: 0;
+    -webkit-flex-shrink: 0;
+  }
+
+  .modal-body {
+    overflow-y: auto;
+  }
+}
+
+.modal-dialog-centered {
+  display: flex;
+  display: -webkit-flex;
+  align-items: center;
+  -webkit-align-items: center;
+  min-height: subtract(100%, $modal-dialog-margin * 2);
+
+  // Ensure `modal-dialog-centered` extends the full height of the view (IE10/11)
+  &::before {
+    display: block; // IE10
+    height: subtract(100vh, $modal-dialog-margin * 2);
+    height: min-content; // Reset height to 0 except on IE
+    height: -webkit-min-content; // Reset height to 0 except on IE
+    height: -moz-min-content; // Reset height to 0 except on IE
+    height: -ms-min-content; // Reset height to 0 except on IE
+    height: -o-min-content; // Reset height to 0 except on IE
+    content: "";
+  }
+
+  // Ensure `.modal-body` shows scrollbar (IE10/11)
+  &.modal-dialog-scrollable {
+    flex-direction: column;
+    -webkit-flex-direction: column;
+    justify-content: center;
+    -webkit-justify-content: center;
+    height: 100%;
+
+    .modal-content {
+      max-height: none;
+    }
+
+    &::before {
+      content: none;
+    }
+  }
+}
+
+// Actual modal
+.modal-content {
+  position: relative;
+  display: flex;
+  display: -webkit-flex;
+  flex-direction: column;
+  -webkit-flex-direction: column;
+  width: 100%; // Ensure `.modal-content` extends the full width of the parent `.modal-dialog`
+  // counteract the pointer-events: none; in the .modal-dialog
+  color: $modal-content-color;
+  pointer-events: auto;
+  background-color: $modal-content-bg;
+  background-clip: padding-box;
+  border: $modal-content-border-width solid $modal-content-border-color;
+  @include border-radius($modal-content-border-radius);
+  @include box-shadow($modal-content-box-shadow-xs);
+  // Remove focus outline from opened modal
+  outline: 0;
+}
+
+// Modal background
+.modal-backdrop {
+  position: fixed;
+  top: 0;
+  left: 0;
+  z-index: $zindex-modal-backdrop;
+  width: 100vw;
+  height: 100vh;
+  background-color: $modal-backdrop-bg;
+
+  // Fade for backdrop
+  &.fade { opacity: 0; }
+  &.show { opacity: $modal-backdrop-opacity; }
+}
+
+// Modal header
+// Top section of the modal w/ title and dismiss
+.modal-header {
+  display: flex;
+  display: -webkit-flex;
+  align-items: flex-start; // so the close btn always stays on the upper right corner
+  -webkit-align-items: flex-start; // so the close btn always stays on the upper right corner
+  justify-content: space-between; // Put modal header elements (title and dismiss) on opposite ends
+  -webkit-justify-content: space-between; // Put modal header elements (title and dismiss) on opposite ends
+  padding: $modal-header-padding;
+  border-bottom: $modal-header-border-width solid $modal-header-border-color;
+  @include border-top-radius($modal-content-inner-border-radius);
+
+  .close {
+    padding: $modal-header-padding;
+    // auto on the left force icon to the right even when there is no .modal-title
+    margin: (-$modal-header-padding-y) (-$modal-header-padding-x) (-$modal-header-padding-y) auto;
+  }
+}
+
+// Title text within header
+.modal-title {
+  margin-bottom: 0;
+  line-height: $modal-title-line-height;
+}
+
+// Modal body
+// Where all modal content resides (sibling of .modal-header and .modal-footer)
+.modal-body {
+  position: relative;
+  // Enable `flex-grow: 1` so that the body take up as much space as possible
+  // when there should be a fixed height on `.modal-dialog`.
+  flex: 1 1 auto;
+  -webkit-flex: 1 1 auto;
+  padding: $modal-inner-padding;
+}
+
+// Footer (for actions)
+.modal-footer {
+  display: flex;
+  display: -webkit-flex;
+  flex-wrap: wrap;
+  -webkit-flex-wrap: wrap;
+  align-items: center; // vertically center
+  -webkit-align-items: center; // vertically center
+  justify-content: flex-end; // Right align buttons with flex property because text-align doesn't work on flex items
+  -webkit-justify-content: flex-end; // Right align buttons with flex property because text-align doesn't work on flex items
+  padding: $modal-inner-padding - $modal-footer-margin-between / 2;
+  border-top: $modal-footer-border-width solid $modal-footer-border-color;
+  @include border-bottom-radius($modal-content-inner-border-radius);
+
+  // Place margin between footer elements
+  // This solution is far from ideal because of the universal selector usage,
+  // but is needed to fix https://github.com/twbs/bootstrap/issues/24800
+  > * {
+    margin: $modal-footer-margin-between / 2;
+  }
+}
+
+// Measure scrollbar width for padding body during modal show/hide
+.modal-scrollbar-measure {
+  position: absolute;
+  top: -9999px;
+  width: 50px;
+  height: 50px;
+  overflow: scroll;
+}
+
+// Scale up the modal
+@include media-breakpoint-up(sm) {
+  // Automatically set modal's width for larger viewports
+  .modal-dialog {
+    max-width: $modal-md;
+    margin: $modal-dialog-margin-y-sm-up auto;
+  }
+
+  .modal-dialog-scrollable {
+    max-height: subtract(100%, $modal-dialog-margin-y-sm-up * 2);
+
+    .modal-content {
+      max-height: subtract(100vh, $modal-dialog-margin-y-sm-up * 2);
+    }
+  }
+
+  .modal-dialog-centered {
+    min-height: subtract(100%, $modal-dialog-margin-y-sm-up * 2);
+
+    &::before {
+      height: subtract(100vh, $modal-dialog-margin-y-sm-up * 2);
+      height: min-content;
+      height: -webkit-min-content;
+      height: -moz-min-content;
+      height: -ms-min-content;
+      height: -o-min-content;
+    }
+  }
+
+  .modal-content {
+    @include box-shadow($modal-content-box-shadow-sm-up);
+  }
+
+  .modal-sm { max-width: $modal-sm; }
+}
+
+@include media-breakpoint-up(lg) {
+  .modal-lg,
+  .modal-xl {
+    max-width: $modal-lg;
+  }
+}
+
+@include media-breakpoint-up(xl) {
+  .modal-xl { max-width: $modal-xl; }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/README.md
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/README.md	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/README.md	(revision 3762)
@@ -0,0 +1,209 @@
+<p align="center">
+  <a href="https://getbootstrap.com/">
+    <img src="https://getbootstrap.com/docs/4.6/assets/brand/bootstrap-solid.svg" alt="Bootstrap logo" width="72" height="72">
+  </a>
+</p>
+
+<h3 align="center">Bootstrap</h3>
+
+<p align="center">
+  Sleek, intuitive, and powerful front-end framework for faster and easier web development.
+  <br>
+  <a href="https://getbootstrap.com/docs/4.6/"><strong>Explore Bootstrap docs »</strong></a>
+  <br>
+  <br>
+  <a href="https://github.com/twbs/bootstrap/issues/new?template=bug_report.md">Report bug</a>
+  ·
+  <a href="https://github.com/twbs/bootstrap/issues/new?template=feature_request.md">Request feature</a>
+  ·
+  <a href="https://themes.getbootstrap.com/">Themes</a>
+  ·
+  <a href="https://blog.getbootstrap.com/">Blog</a>
+</p>
+
+
+## Table of contents
+
+- [Quick start](#quick-start)
+- [Status](#status)
+- [What's included](#whats-included)
+- [Bugs and feature requests](#bugs-and-feature-requests)
+- [Documentation](#documentation)
+- [Contributing](#contributing)
+- [Community](#community)
+- [Versioning](#versioning)
+- [Creators](#creators)
+- [Thanks](#thanks)
+- [Copyright and license](#copyright-and-license)
+
+
+## Quick start
+
+Several quick start options are available:
+
+- [Download the latest release.](https://github.com/twbs/bootstrap/archive/v4.6.0.zip)
+- Clone the repo: `git clone https://github.com/twbs/bootstrap.git`
+- Install with [npm](https://www.npmjs.com/): `npm install bootstrap`
+- Install with [yarn](https://yarnpkg.com/): `yarn add bootstrap@4.6.0`
+- Install with [Composer](https://getcomposer.org/): `composer require twbs/bootstrap:4.6.0`
+- Install with [NuGet](https://www.nuget.org/): CSS: `Install-Package bootstrap` Sass: `Install-Package bootstrap.sass`
+
+Read the [Getting started page](https://getbootstrap.com/docs/4.6/getting-started/introduction/) for information on the framework contents, templates and examples, and more.
+
+
+## Status
+
+[![Slack](https://bootstrap-slack.herokuapp.com/badge.svg)](https://bootstrap-slack.herokuapp.com/)
+[![Build Status](https://github.com/twbs/bootstrap/workflows/JS%20Tests/badge.svg?branch=v4-dev)](https://github.com/twbs/bootstrap/actions?query=workflow%3AJS+Tests+branch%3Av4-dev)
+[![npm version](https://img.shields.io/npm/v/bootstrap)](https://www.npmjs.com/package/bootstrap)
+[![Gem version](https://img.shields.io/gem/v/bootstrap)](https://rubygems.org/gems/bootstrap)
+[![Meteor Atmosphere](https://img.shields.io/badge/meteor-twbs%3Abootstrap-blue)](https://atmospherejs.com/twbs/bootstrap)
+[![Packagist Prerelease](https://img.shields.io/packagist/vpre/twbs/bootstrap)](https://packagist.org/packages/twbs/bootstrap)
+[![NuGet](https://img.shields.io/nuget/vpre/bootstrap)](https://www.nuget.org/packages/bootstrap/absoluteLatest)
+[![peerDependencies Status](https://img.shields.io/david/peer/twbs/bootstrap)](https://david-dm.org/twbs/bootstrap?type=peer)
+[![devDependency Status](https://img.shields.io/david/dev/twbs/bootstrap)](https://david-dm.org/twbs/bootstrap?type=dev)
+[![Coverage Status](https://img.shields.io/coveralls/github/twbs/bootstrap/v4-dev)](https://coveralls.io/github/twbs/bootstrap?branch=v4-dev)
+[![CSS gzip size](https://img.badgesize.io/twbs/bootstrap/v4-dev/dist/css/bootstrap.min.css?compression=gzip&label=CSS%20gzip%20size)](https://github.com/twbs/bootstrap/blob/v4-dev/dist/css/bootstrap.min.css)
+[![JS gzip size](https://img.badgesize.io/twbs/bootstrap/v4-dev/dist/js/bootstrap.min.js?compression=gzip&label=JS%20gzip%20size)](https://github.com/twbs/bootstrap/blob/v4-dev/dist/js/bootstrap.min.js)
+[![BrowserStack Status](https://www.browserstack.com/automate/badge.svg?badge_key=SkxZcStBeExEdVJqQ2hWYnlWckpkNmNEY213SFp6WHFETWk2bGFuY3pCbz0tLXhqbHJsVlZhQnRBdEpod3NLSDMzaHc9PQ==--3d0b75245708616eb93113221beece33e680b229)](https://www.browserstack.com/automate/public-build/SkxZcStBeExEdVJqQ2hWYnlWckpkNmNEY213SFp6WHFETWk2bGFuY3pCbz0tLXhqbHJsVlZhQnRBdEpod3NLSDMzaHc9PQ==--3d0b75245708616eb93113221beece33e680b229)
+[![Backers on Open Collective](https://img.shields.io/opencollective/backers/bootstrap)](#backers)
+[![Sponsors on Open Collective](https://img.shields.io/opencollective/sponsors/bootstrap)](#sponsors)
+
+
+## What's included
+
+Within the download you'll find the following directories and files, logically grouping common assets and providing both compiled and minified variations. You'll see something like this:
+
+```text
+bootstrap/
+└── dist/
+    ├── css/
+    │   ├── bootstrap-grid.css
+    │   ├── bootstrap-grid.css.map
+    │   ├── bootstrap-grid.min.css
+    │   ├── bootstrap-grid.min.css.map
+    │   ├── bootstrap-reboot.css
+    │   ├── bootstrap-reboot.css.map
+    │   ├── bootstrap-reboot.min.css
+    │   ├── bootstrap-reboot.min.css.map
+    │   ├── bootstrap.css
+    │   ├── bootstrap.css.map
+    │   ├── bootstrap.min.css
+    │   └── bootstrap.min.css.map
+    └── js/
+        ├── bootstrap.bundle.js
+        ├── bootstrap.bundle.js.map
+        ├── bootstrap.bundle.min.js
+        ├── bootstrap.bundle.min.js.map
+        ├── bootstrap.js
+        ├── bootstrap.js.map
+        ├── bootstrap.min.js
+        └── bootstrap.min.js.map
+```
+
+We provide compiled CSS and JS (`bootstrap.*`), as well as compiled and minified CSS and JS (`bootstrap.min.*`). [source maps](https://developers.google.com/web/tools/chrome-devtools/javascript/source-maps) (`bootstrap.*.map`) are available for use with certain browsers' developer tools. Bundled JS files (`bootstrap.bundle.js` and minified `bootstrap.bundle.min.js`) include [Popper](https://popper.js.org/), but not [jQuery](https://jquery.com/).
+
+
+## Bugs and feature requests
+
+Have a bug or a feature request? Please first read the [issue guidelines](https://github.com/twbs/bootstrap/blob/v4-dev/.github/CONTRIBUTING.md#using-the-issue-tracker) and search for existing and closed issues. If your problem or idea is not addressed yet, [please open a new issue](https://github.com/twbs/bootstrap/issues/new).
+
+
+## Documentation
+
+Bootstrap's documentation, included in this repo in the root directory, is built with [Hugo](https://gohugo.io/) and publicly hosted on GitHub Pages at <https://getbootstrap.com/>. The docs may also be run locally.
+
+Documentation search is powered by [Algolia's DocSearch](https://community.algolia.com/docsearch/). Working on our search? Be sure to set `debug: true` in `site/assets/js/search.js`.
+
+### Running documentation locally
+
+1. Run `npm install` to install the Node.js dependencies, including Hugo (the site builder).
+2. Run `npm run test` (or a specific npm script) to rebuild distributed CSS and JavaScript files, as well as our docs assets.
+3. Run `npm start` to compile CSS and JavaScript files, generate our docs, and watch for changes.
+4. Open `http://localhost:9001/` in your browser, and voilà.
+
+Learn more about using Hugo by reading its [documentation](https://gohugo.io/documentation/).
+
+### Documentation for previous releases
+
+You can find all our previous releases docs on <https://getbootstrap.com/docs/versions/>.
+
+[Previous releases](https://github.com/twbs/bootstrap/releases) and their documentation are also available for download.
+
+
+## Contributing
+
+Please read through our [contributing guidelines](https://github.com/twbs/bootstrap/blob/v4-dev/.github/CONTRIBUTING.md). Included are directions for opening issues, coding standards, and notes on development.
+
+Moreover, if your pull request contains JavaScript patches or features, you must include [relevant unit tests](https://github.com/twbs/bootstrap/tree/v4-dev/js/tests). All HTML and CSS should conform to the [Code Guide](https://github.com/mdo/code-guide), maintained by [Mark Otto](https://github.com/mdo).
+
+Editor preferences are available in the [editor config](https://github.com/twbs/bootstrap/blob/v4-dev/.editorconfig) for easy use in common text editors. Read more and download plugins at <https://editorconfig.org/>.
+
+
+## Community
+
+Get updates on Bootstrap's development and chat with the project maintainers and community members.
+
+- Follow [@getbootstrap on Twitter](https://twitter.com/getbootstrap).
+- Read and subscribe to [The Official Bootstrap Blog](https://blog.getbootstrap.com/).
+- Join [the official Slack room](https://bootstrap-slack.herokuapp.com/).
+- Chat with fellow Bootstrappers in IRC. On the `irc.freenode.net` server, in the `##bootstrap` channel.
+- Implementation help may be found at Stack Overflow (tagged [`bootstrap-4`](https://stackoverflow.com/questions/tagged/bootstrap-4)).
+- Developers should use the keyword `bootstrap` on packages which modify or add to the functionality of Bootstrap when distributing through [npm](https://www.npmjs.com/browse/keyword/bootstrap) or similar delivery mechanisms for maximum discoverability.
+
+
+## Versioning
+
+For transparency into our release cycle and in striving to maintain backward compatibility, Bootstrap is maintained under [the Semantic Versioning guidelines](https://semver.org/). Sometimes we screw up, but we adhere to those rules whenever possible.
+
+See [the Releases section of our GitHub project](https://github.com/twbs/bootstrap/releases) for changelogs for each release version of Bootstrap. Release announcement posts on [the official Bootstrap blog](https://blog.getbootstrap.com/) contain summaries of the most noteworthy changes made in each release.
+
+
+## Creators
+
+**Mark Otto**
+
+- <https://twitter.com/mdo>
+- <https://github.com/mdo>
+
+**Jacob Thornton**
+
+- <https://twitter.com/fat>
+- <https://github.com/fat>
+
+
+## Thanks
+
+<a href="https://www.browserstack.com/">
+  <img src="https://live.browserstack.com/images/opensource/browserstack-logo.svg" alt="BrowserStack Logo" width="192" height="42">
+</a>
+
+Thanks to [BrowserStack](https://www.browserstack.com/) for providing the infrastructure that allows us to test in real browsers!
+
+
+## Sponsors
+
+Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/bootstrap#sponsor)]
+
+[![](https://opencollective.com/bootstrap/sponsor/0/avatar.svg)](https://opencollective.com/bootstrap/sponsor/0/website)
+[![](https://opencollective.com/bootstrap/sponsor/1/avatar.svg)](https://opencollective.com/bootstrap/sponsor/1/website)
+[![](https://opencollective.com/bootstrap/sponsor/2/avatar.svg)](https://opencollective.com/bootstrap/sponsor/2/website)
+[![](https://opencollective.com/bootstrap/sponsor/3/avatar.svg)](https://opencollective.com/bootstrap/sponsor/3/website)
+[![](https://opencollective.com/bootstrap/sponsor/4/avatar.svg)](https://opencollective.com/bootstrap/sponsor/4/website)
+[![](https://opencollective.com/bootstrap/sponsor/5/avatar.svg)](https://opencollective.com/bootstrap/sponsor/5/website)
+[![](https://opencollective.com/bootstrap/sponsor/6/avatar.svg)](https://opencollective.com/bootstrap/sponsor/6/website)
+[![](https://opencollective.com/bootstrap/sponsor/7/avatar.svg)](https://opencollective.com/bootstrap/sponsor/7/website)
+[![](https://opencollective.com/bootstrap/sponsor/8/avatar.svg)](https://opencollective.com/bootstrap/sponsor/8/website)
+[![](https://opencollective.com/bootstrap/sponsor/9/avatar.svg)](https://opencollective.com/bootstrap/sponsor/9/website)
+
+
+## Backers
+
+Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/bootstrap#backer)]
+
+[![Backers](https://opencollective.com/bootstrap/backers.svg?width=890)](https://opencollective.com/bootstrap#backers)
+
+
+## Copyright and license
+
+Code and documentation copyright 2011-2021 the [Bootstrap Authors](https://github.com/twbs/bootstrap/graphs/contributors) and [Twitter, Inc.](https://twitter.com) Code released under the [MIT License](https://github.com/twbs/bootstrap/blob/main/LICENSE). Docs released under [Creative Commons](https://creativecommons.org/licenses/by/3.0/).
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/LICENSE
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/LICENSE	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/LICENSE	(revision 3762)
@@ -0,0 +1,22 @@
+The MIT License (MIT)
+
+Copyright (c) 2011-2021 Twitter, Inc.
+Copyright (c) 2011-2021 The Bootstrap Authors
+
+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.
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/dist/js/bootstrap.bundle.min.js.map
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/dist/js/bootstrap.bundle.min.js.map	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/dist/js/bootstrap.bundle.min.js.map	(revision 3762)
@@ -0,0 +1 @@
+{"version":3,"sources":["../../js/src/util.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/carousel.js","../../js/src/collapse.js","../../node_modules/popper.js/dist/esm/popper.js","../../js/src/dropdown.js","../../js/src/modal.js","../../js/src/tools/sanitizer.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/toast.js"],"names":["transitionEndEmulator","duration","_this","this","called","$","one","Util","TRANSITION_END","setTimeout","triggerTransitionEnd","getUID","prefix","Math","random","document","getElementById","getSelectorFromElement","element","selector","getAttribute","hrefAttr","trim","querySelector","_","getTransitionDurationFromElement","transitionDuration","css","transitionDelay","floatTransitionDuration","parseFloat","floatTransitionDelay","split","reflow","offsetHeight","trigger","supportsTransitionEnd","Boolean","isElement","obj","nodeType","typeCheckConfig","componentName","config","configTypes","property","Object","prototype","hasOwnProperty","call","expectedTypes","value","valueType","toString","match","toLowerCase","RegExp","test","Error","toUpperCase","findShadowRoot","documentElement","attachShadow","getRootNode","root","ShadowRoot","parentNode","jQueryDetection","TypeError","version","fn","jquery","emulateTransitionEnd","event","special","bindType","delegateType","handle","target","is","handleObj","handler","apply","arguments","NAME","JQUERY_NO_CONFLICT","Alert","_element","close","rootElement","_getRootElement","_triggerCloseEvent","isDefaultPrevented","_removeElement","dispose","removeData","parent","closest","closeEvent","Event","removeClass","hasClass","_destroyElement","detach","remove","_jQueryInterface","each","$element","data","_handleDismiss","alertInstance","preventDefault","on","Constructor","noConflict","Button","shouldAvoidTriggerChange","toggle","triggerChangeEvent","addAriaPressed","input","type","checked","classList","contains","activeElement","focus","hasAttribute","setAttribute","toggleClass","avoidTriggerChange","button","initialButton","inputBtn","tagName","window","buttons","slice","querySelectorAll","i","len","length","add","EVENT_KEY","Default","interval","keyboard","slide","pause","wrap","touch","DefaultType","PointerType","TOUCH","PEN","Carousel","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","touchStartX","touchDeltaX","_config","_getConfig","_indicatorsElement","_touchSupported","navigator","maxTouchPoints","_pointerEvent","PointerEvent","MSPointerEvent","_addEventListeners","next","_slide","nextWhenVisible","hidden","prev","cycle","clearInterval","_updateInterval","setInterval","visibilityState","bind","to","index","activeIndex","_getItemIndex","direction","off","_extends","_handleSwipe","absDeltax","abs","_this2","_keydown","_addTouchEventListeners","_this3","start","originalEvent","pointerType","clientX","touches","end","clearTimeout","e","move","which","indexOf","_getItemByDirection","isNextDirection","isPrevDirection","lastItemIndex","itemIndex","_triggerSlideEvent","relatedTarget","eventDirectionName","targetIndex","fromIndex","slideEvent","from","_setActiveIndicatorElement","indicators","nextIndicator","children","addClass","elementInterval","parseInt","defaultInterval","directionalClassName","orderClassName","_this4","activeElementIndex","nextElement","nextElementIndex","isCycling","slidEvent","CLASS_NAME_ACTIVE","action","ride","_dataApiClickHandler","slideIndex","carousels","$carousel","Collapse","_isTransitioning","_triggerArray","id","toggleList","elem","filterElement","filter","foundElem","_selector","push","_parent","_getParent","_addAriaAndCollapsedClass","hide","show","actives","activesData","not","startEvent","dimension","_getDimension","style","attr","setTransitioning","scrollSize","CLASS_NAME_COLLAPSE","getBoundingClientRect","triggerArrayLength","isTransitioning","_getTargetFromElement","triggerArray","isOpen","currentTarget","$trigger","selectors","$target","isBrowser","timeoutDuration","longerTimeoutBrowsers","userAgent","debounce","Promise","resolve","then","scheduled","isFunction","functionToCheck","getStyleComputedProperty","ownerDocument","defaultView","getComputedStyle","getParentNode","nodeName","host","getScrollParent","body","_getStyleComputedProp","overflow","overflowX","overflowY","getReferenceNode","reference","referenceNode","isIE11","MSInputMethodContext","documentMode","isIE10","isIE","getOffsetParent","noOffsetParent","offsetParent","nextElementSibling","getRoot","node","findCommonOffsetParent","element1","element2","order","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","range","createRange","setStart","setEnd","commonAncestorContainer","firstElementChild","element1root","getScroll","side","undefined","upperSide","html","scrollingElement","includeScroll","rect","subtract","scrollTop","scrollLeft","modifier","top","bottom","left","right","getBordersSize","styles","axis","sideA","sideB","getSize","computedStyle","max","getWindowSizes","height","width","classCallCheck","instance","createClass","defineProperties","props","descriptor","enumerable","configurable","writable","defineProperty","key","protoProps","staticProps","assign","source","getClientRect","offsets","result","sizes","clientWidth","clientHeight","horizScrollbar","offsetWidth","vertScrollbar","getOffsetRectRelativeToArbitraryNode","fixedPosition","isHTML","childrenRect","parentRect","scrollParent","borderTopWidth","borderLeftWidth","marginTop","marginLeft","getViewportOffsetRectRelativeToArtbitraryNode","excludeScroll","relativeOffset","innerWidth","innerHeight","offset","isFixed","getFixedPositionOffsetParent","parentElement","el","getBoundaries","popper","padding","boundariesElement","boundaries","boundariesNode","_getWindowSizes","isPaddingNumber","getArea","_ref","computeAutoPlacement","placement","refRect","rects","sortedAreas","keys","map","area","sort","a","b","filteredAreas","_ref2","computedPlacement","variation","getReferenceOffsets","state","commonOffsetParent","getOuterSizes","x","marginBottom","y","marginRight","getOppositePlacement","hash","replace","matched","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","find","arr","check","Array","runModifiers","modifiers","ends","prop","findIndex","cur","forEach","console","warn","enabled","update","isDestroyed","arrowStyles","attributes","flipped","options","positionFixed","flip","originalPlacement","position","isCreated","onUpdate","onCreate","isModifierEnabled","modifierName","some","name","getSupportedPropertyName","prefixes","upperProp","charAt","toCheck","destroy","removeAttribute","willChange","disableEventListeners","removeOnDestroy","removeChild","getWindow","setupEventListeners","updateBound","addEventListener","passive","scrollElement","attachToScrollParents","callback","scrollParents","isBody","eventsEnabled","enableEventListeners","scheduleUpdate","cancelAnimationFrame","removeEventListener","isNumeric","n","isNaN","isFinite","setStyles","unit","isFirefox","isModifierRequired","requestingName","requestedName","requesting","isRequired","_requesting","requested","placements","validPlacements","clockwise","counter","concat","reverse","BEHAVIORS","parseOffset","basePlacement","useHeight","fragments","frag","divider","search","splitRegex","ops","op","mergeWithPrevious","reduce","str","toValue","index2","Defaults","shift","shiftvariation","_data$offsets","isVertical","shiftOffsets","preventOverflow","transformProp","popperStyles","transform","priority","primary","escapeWithReference","secondary","min","keepTogether","floor","opSide","arrow","_data$offsets$arrow","arrowElement","sideCapitalized","altSide","arrowElementSize","center","popperMarginSide","popperBorderSide","sideValue","round","placementOpposite","flipOrder","behavior","step","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariationByRef","flipVariations","flippedVariationByContent","flipVariationsByContent","flippedVariation","getOppositeVariation","inner","subtractLength","bound","computeStyle","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","shouldRound","noRound","v","referenceWidth","popperWidth","isVariation","horizontalToInteger","verticalToInteger","getRoundedOffsets","devicePixelRatio","prefixedProperty","invertTop","invertLeft","x-placement","applyStyle","onLoad","modifierOptions","Popper","requestAnimationFrame","Utils","global","PopperUtils","REGEXP_KEYDOWN","ARROW_UP_KEYCODE","boundary","display","popperConfig","Dropdown","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","disabled","isActive","_clearMenus","usePopper","showEvent","_getParentFromElement","referenceElement","_getPopperConfig","noop","hideEvent","stopPropagation","constructor","_getPlacement","$parentDropdown","_getOffset","toggles","context","clickEvent","dropdownMenu","_dataApiKeydownHandler","items","item","EVENT_CLICK_DATA_API","backdrop","Modal","_dialog","_backdrop","_isShown","_isBodyOverflowing","_ignoreBackdropClick","_scrollbarWidth","_checkScrollbar","_setScrollbar","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","transition","_hideModal","htmlElement","handleUpdate","_triggerBackdropTransition","hideEventPrevented","isModalOverflowing","scrollHeight","modalTransitionDuration","modalBody","ELEMENT_NODE","appendChild","_enforceFocus","shownEvent","transitionComplete","_this5","has","_this6","_this7","_this8","_resetAdjustments","_resetScrollbar","_removeBackdrop","_this9","animate","createElement","className","appendTo","backdropTransitionDuration","callbackRemove","paddingLeft","paddingRight","_getScrollbarWidth","_this10","fixedContent","stickyContent","actualPadding","calculatedPadding","actualMargin","calculatedMargin","elements","margin","scrollDiv","scrollbarWidth","_this11","uriAttrs","DefaultWhitelist","*","br","col","code","div","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","p","pre","s","small","span","sub","sup","strong","u","ul","SAFE_URL_PATTERN","DATA_URL_PATTERN","sanitizeHtml","unsafeHtml","whiteList","sanitizeFn","createdDocument","DOMParser","parseFromString","whitelistKeys","_loop","elName","attributeList","whitelistedAttributes","allowedAttributeList","attrName","nodeValue","regExp","attrRegex","allowedAttribute","innerHTML","BSCLS_PREFIX_REGEX","DISALLOWED_ATTRIBUTES","animation","template","title","delay","container","fallbackPlacement","customClass","sanitize","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","HIDE","HIDDEN","SHOW","SHOWN","INSERTED","CLICK","FOCUSIN","FOCUSOUT","MOUSEENTER","MOUSELEAVE","Tooltip","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","enable","disable","toggleEnabled","dataKey","DATA_KEY","_getDelegateConfig","click","_isWithActiveTrigger","_enter","_leave","getTipElement","_hideModalHandler","isWithContent","shadowRoot","isInTheDom","tipId","setContent","attachment","_getAttachment","addAttachmentClass","_getContainer","complete","_fixTransition","prevHoverState","_cleanTipClass","getTitle","CLASS_PREFIX","setElementContent","CLASS_NAME_FADE","content","text","empty","append","_handlePopperPlacementChange","eventIn","eventOut","_fixTitle","titleType","dataAttributes","dataAttr","$tip","tabClass","join","popperData","initConfigAnimation","Popover","_getContent","method","ScrollSpy","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","_process","refresh","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targetSelector","targetBCR","pageYOffset","_getOffsetHeight","maxScroll","_activate","_clear","queries","$link","parents","SELECTOR_NAV_LINKS","scrollSpys","$spy","Tab","previous","listElement","itemSelector","makeArray","hiddenEvent","active","_transitionComplete","dropdownChild","dropdownElement","dropdownToggleList","$this","autohide","Toast","_clearTimeout","_close"],"mappings":";;;;;wxBA0CA,SAASA,EAAsBC,GAAU,IAAAC,EAAAC,KACnCC,GAAS,EAYb,OAVAC,EAAAA,QAAEF,MAAMG,IAAIC,EAAKC,gBAAgB,WAC/BJ,GAAS,KAGXK,YAAW,WACJL,GACHG,EAAKG,qBAAqBR,KAE3BD,GAEIE,SAcHI,EAAO,CACXC,eAAgB,kBAEhBG,OAHW,SAGJC,GACL,GACEA,MA1DU,IA0DGC,KAAKC,gBACXC,SAASC,eAAeJ,IAEjC,OAAOA,GAGTK,uBAXW,SAWYC,GACrB,IAAIC,EAAWD,EAAQE,aAAa,eAEpC,IAAKD,GAAyB,MAAbA,EAAkB,CACjC,IAAME,EAAWH,EAAQE,aAAa,QACtCD,EAAWE,GAAyB,MAAbA,EAAmBA,EAASC,OAAS,GAG9D,IACE,OAAOP,SAASQ,cAAcJ,GAAYA,EAAW,KACrD,MAAOK,GACP,OAAO,OAIXC,iCA1BW,SA0BsBP,GAC/B,IAAKA,EACH,OAAO,EAIT,IAAIQ,EAAqBrB,EAAAA,QAAEa,GAASS,IAAI,uBACpCC,EAAkBvB,EAAAA,QAAEa,GAASS,IAAI,oBAE/BE,EAA0BC,WAAWJ,GACrCK,EAAuBD,WAAWF,GAGxC,OAAKC,GAA4BE,GAKjCL,EAAqBA,EAAmBM,MAAM,KAAK,GACnDJ,EAAkBA,EAAgBI,MAAM,KAAK,GAjGjB,KAmGpBF,WAAWJ,GAAsBI,WAAWF,KAP3C,GAUXK,OAlDW,SAkDJf,GACL,OAAOA,EAAQgB,cAGjBxB,qBAtDW,SAsDUQ,GACnBb,EAAAA,QAAEa,GAASiB,QA7GQ,kBAgHrBC,sBA1DW,WA2DT,OAAOC,QAjHY,kBAoHrBC,UA9DW,SA8DDC,GACR,OAAQA,EAAI,IAAMA,GAAKC,UAGzBC,gBAlEW,SAkEKC,EAAeC,EAAQC,GACrC,IAAK,IAAMC,KAAYD,EACrB,GAAIE,OAAOC,UAAUC,eAAeC,KAAKL,EAAaC,GAAW,CAC/D,IAAMK,EAAgBN,EAAYC,GAC5BM,EAAQR,EAAOE,GACfO,EAAYD,GAAS5C,EAAK+B,UAAUa,GACxC,UAxHI,QADEZ,EAyHaY,IAxHQ,oBAARZ,EACzB,GAAUA,EAGL,GAAGc,SAASJ,KAAKV,GAAKe,MAAM,eAAe,GAAGC,cAsH/C,IAAK,IAAIC,OAAON,GAAeO,KAAKL,GAClC,MAAM,IAAIM,MACLhB,EAAciB,cAAdjB,aACQG,EADX,oBACuCO,EADpCV,wBAEmBQ,EAFtB,MA7HZ,IAAgBX,GAqIdqB,eApFW,SAoFI1C,GACb,IAAKH,SAAS8C,gBAAgBC,aAC5B,OAAO,KAIT,GAAmC,mBAAxB5C,EAAQ6C,YAA4B,CAC7C,IAAMC,EAAO9C,EAAQ6C,cACrB,OAAOC,aAAgBC,WAAaD,EAAO,KAG7C,OAAI9C,aAAmB+C,WACd/C,EAIJA,EAAQgD,WAIN3D,EAAKqD,eAAe1C,EAAQgD,YAH1B,MAMXC,gBA3GW,WA4GT,GAAiB,oBAAN9D,EAAAA,QACT,MAAM,IAAI+D,UAAU,kGAGtB,IAAMC,EAAUhE,EAAAA,QAAEiE,GAAGC,OAAOvC,MAAM,KAAK,GAAGA,MAAM,KAOhD,GAAIqC,EAAQ,GALI,GAKYA,EAAQ,GAJnB,GAFA,IAMoCA,EAAQ,IAJ5C,IAI+DA,EAAQ,IAAmBA,EAAQ,GAHlG,GAGmHA,EAAQ,IAF3H,EAGf,MAAM,IAAIX,MAAM,iFAKtBnD,EAAK4D,kBAvIH9D,EAAAA,QAAEiE,GAAGE,qBAAuBxE,EAC5BK,EAAAA,QAAEoE,MAAMC,QAAQnE,EAAKC,gBA/Bd,CACLmE,SAfmB,gBAgBnBC,aAhBmB,gBAiBnBC,OAHK,SAGEJ,GACL,GAAIpE,EAAAA,QAAEoE,EAAMK,QAAQC,GAAG5E,MACrB,OAAOsE,EAAMO,UAAUC,QAAQC,MAAM/E,KAAMgF,aClBnD,IAAMC,EAAO,QAKPC,EAAqBhF,EAAAA,QAAEiE,GAAGc,GAkB1BE,EAAAA,WACJ,SAAAA,EAAYpE,GACVf,KAAKoF,SAAWrE,6BAWlBsE,MAAA,SAAMtE,GACJ,IAAIuE,EAActF,KAAKoF,SACnBrE,IACFuE,EAActF,KAAKuF,gBAAgBxE,IAGjBf,KAAKwF,mBAAmBF,GAE5BG,sBAIhBzF,KAAK0F,eAAeJ,MAGtBK,QAAA,WACEzF,EAAAA,QAAE0F,WAAW5F,KAAKoF,SAlDL,YAmDbpF,KAAKoF,SAAW,QAKlBG,gBAAA,SAAgBxE,GACd,IAAMC,EAAWZ,EAAKU,uBAAuBC,GACzC8E,GAAS,EAUb,OARI7E,IACF6E,EAASjF,SAASQ,cAAcJ,IAG7B6E,IACHA,EAAS3F,EAAAA,QAAEa,GAAS+E,QAAX,UAA2C,IAG/CD,KAGTL,mBAAA,SAAmBzE,GACjB,IAAMgF,EAAa7F,EAAAA,QAAE8F,MAjER,kBAoEb,OADA9F,EAAAA,QAAEa,GAASiB,QAAQ+D,GACZA,KAGTL,eAAA,SAAe3E,GAAS,IAAAhB,EAAAC,KAGtB,GAFAE,EAAAA,QAAEa,GAASkF,YAlES,QAoEf/F,EAAAA,QAAEa,GAASmF,SArEI,QAqEpB,CAKA,IAAM3E,EAAqBnB,EAAKkB,iCAAiCP,GAEjEb,EAAAA,QAAEa,GACCZ,IAAIC,EAAKC,gBAAgB,SAAAiE,GAAK,OAAIvE,EAAKoG,gBAAgBpF,EAASuD,MAChED,qBAAqB9C,QARtBvB,KAAKmG,gBAAgBpF,MAWzBoF,gBAAA,SAAgBpF,GACdb,EAAAA,QAAEa,GACCqF,SACApE,QAxFW,mBAyFXqE,YAKEC,iBAAP,SAAwB9D,GACtB,OAAOxC,KAAKuG,MAAK,WACf,IAAMC,EAAWtG,EAAAA,QAAEF,MACfyG,EAAOD,EAASC,KAzGT,YA2GNA,IACHA,EAAO,IAAItB,EAAMnF,MACjBwG,EAASC,KA7GA,WA6GeA,IAGX,UAAXjE,GACFiE,EAAKjE,GAAQxC,YAKZ0G,eAAP,SAAsBC,GACpB,OAAO,SAAUrC,GACXA,GACFA,EAAMsC,iBAGRD,EAActB,MAAMrF,gDA/FtB,MA9BY,cAsBVmF,GAkHNjF,EAAAA,QAAEU,UAAUiG,GA9Hc,0BAJD,yBAqIvB1B,EAAMuB,eAAe,IAAIvB,IAS3BjF,EAAAA,QAAEiE,GAAGc,GAAQE,EAAMmB,iBACnBpG,EAAAA,QAAEiE,GAAGc,GAAM6B,YAAc3B,EACzBjF,EAAAA,QAAEiE,GAAGc,GAAM8B,WAAa,WAEtB,OADA7G,EAAAA,QAAEiE,GAAGc,GAAQC,EACNC,EAAMmB,kBC1Jf,IAKMpB,EAAqBhF,EAAAA,QAAEiE,GAAF,OAyBrB6C,EAAAA,WACJ,SAAAA,EAAYjG,GACVf,KAAKoF,SAAWrE,EAChBf,KAAKiH,0BAA2B,6BAWlCC,OAAA,WACE,IAAIC,GAAqB,EACrBC,GAAiB,EACf9B,EAAcpF,EAAAA,QAAEF,KAAKoF,UAAUU,QAnCX,2BAmC0C,GAEpE,GAAIR,EAAa,CACf,IAAM+B,EAAQrH,KAAKoF,SAAShE,cAnCX,8BAqCjB,GAAIiG,EAAO,CACT,GAAmB,UAAfA,EAAMC,KACR,GAAID,EAAME,SAAWvH,KAAKoF,SAASoC,UAAUC,SA/C7B,UAgDdN,GAAqB,MAChB,CACL,IAAMO,EAAgBpC,EAAYlE,cAzCtB,WA2CRsG,GACFxH,EAAAA,QAAEwH,GAAezB,YArDL,UA0DdkB,IAEiB,aAAfE,EAAMC,MAAsC,UAAfD,EAAMC,OACrCD,EAAME,SAAWvH,KAAKoF,SAASoC,UAAUC,SA7D3B,WAgEXzH,KAAKiH,0BACR/G,EAAAA,QAAEmH,GAAOrF,QAAQ,WAIrBqF,EAAMM,QACNP,GAAiB,GAIfpH,KAAKoF,SAASwC,aAAa,aAAe5H,KAAKoF,SAASoC,UAAUC,SAAS,cAC3EL,GACFpH,KAAKoF,SAASyC,aAAa,gBAAiB7H,KAAKoF,SAASoC,UAAUC,SA5ElD,WA+EhBN,GACFjH,EAAAA,QAAEF,KAAKoF,UAAU0C,YAhFC,cAqFxBnC,QAAA,WACEzF,EAAAA,QAAE0F,WAAW5F,KAAKoF,SA3FL,aA4FbpF,KAAKoF,SAAW,QAKXkB,iBAAP,SAAwB9D,EAAQuF,GAC9B,OAAO/H,KAAKuG,MAAK,WACf,IAAMC,EAAWtG,EAAAA,QAAEF,MACfyG,EAAOD,EAASC,KApGT,aAsGNA,IACHA,EAAO,IAAIO,EAAOhH,MAClBwG,EAASC,KAxGA,YAwGeA,IAG1BA,EAAKQ,yBAA2Bc,EAEjB,WAAXvF,GACFiE,EAAKjE,iDAzET,MAtCY,cA6BVwE,GA8FN9G,EAAAA,QAAEU,UACCiG,GA1GuB,2BARU,2BAkHqB,SAAAvC,GACrD,IAAI0D,EAAS1D,EAAMK,OACbsD,EAAgBD,EAMtB,GAJK9H,EAAAA,QAAE8H,GAAQ9B,SAzHO,SA0HpB8B,EAAS9H,EAAAA,QAAE8H,GAAQlC,QAjHD,QAiH0B,KAGzCkC,GAAUA,EAAOJ,aAAa,aAAeI,EAAOR,UAAUC,SAAS,YAC1EnD,EAAMsC,qBACD,CACL,IAAMsB,EAAWF,EAAO5G,cAzHP,8BA2HjB,GAAI8G,IAAaA,EAASN,aAAa,aAAeM,EAASV,UAAUC,SAAS,aAEhF,YADAnD,EAAMsC,iBAIsB,UAA1BqB,EAAcE,SAA0C,UAAnBH,EAAOG,SAC9CnB,EAAOV,iBAAiBxD,KAAK5C,EAAAA,QAAE8H,GAAS,SAAoC,UAA1BC,EAAcE,aAIrEtB,GAhI+B,mDATE,2BAyI0B,SAAAvC,GAC1D,IAAM0D,EAAS9H,EAAAA,QAAEoE,EAAMK,QAAQmB,QApIX,QAoIoC,GACxD5F,EAAAA,QAAE8H,GAAQF,YA7IW,QA6ImB,eAAexE,KAAKgB,EAAMgD,UAGtEpH,EAAAA,QAAEkI,QAAQvB,GAnIe,2BAmIS,WAKhC,IADA,IAAIwB,EAAU,GAAGC,MAAMxF,KAAKlC,SAAS2H,iBA/ID,iCAgJ3BC,EAAI,EAAGC,EAAMJ,EAAQK,OAAQF,EAAIC,EAAKD,IAAK,CAClD,IAAMR,EAASK,EAAQG,GACjBnB,EAAQW,EAAO5G,cAjJF,8BAkJfiG,EAAME,SAAWF,EAAMO,aAAa,WACtCI,EAAOR,UAAUmB,IA3JG,UA6JpBX,EAAOR,UAAUnB,OA7JG,UAmKxB,IAAK,IAAImC,EAAI,EAAGC,GADhBJ,EAAU,GAAGC,MAAMxF,KAAKlC,SAAS2H,iBA5JN,4BA6JGG,OAAQF,EAAIC,EAAKD,IAAK,CAClD,IAAMR,EAASK,EAAQG,GACqB,SAAxCR,EAAO/G,aAAa,gBACtB+G,EAAOR,UAAUmB,IAtKG,UAwKpBX,EAAOR,UAAUnB,OAxKG,cAmL1BnG,EAAAA,QAAEiE,GAAF,OAAa6C,EAAOV,iBACpBpG,EAAAA,QAAEiE,GAAF,OAAW2C,YAAcE,EACzB9G,EAAAA,QAAEiE,GAAF,OAAW4C,WAAa,WAEtB,OADA7G,EAAAA,QAAEiE,GAAF,OAAae,EACN8B,EAAOV,kBC7LhB,IAAMrB,EAAO,WAGP2D,EAAS,eAET1D,EAAqBhF,EAAAA,QAAEiE,GAAGc,GAM1B4D,EAAU,CACdC,SAAU,IACVC,UAAU,EACVC,OAAO,EACPC,MAAO,QACPC,MAAM,EACNC,OAAO,GAGHC,EAAc,CAClBN,SAAU,mBACVC,SAAU,UACVC,MAAO,mBACPC,MAAO,mBACPC,KAAM,UACNC,MAAO,WAwCHE,EAAc,CAClBC,MAAO,QACPC,IAAK,OAQDC,EAAAA,WACJ,SAAAA,EAAYzI,EAASyB,GACnBxC,KAAKyJ,OAAS,KACdzJ,KAAK0J,UAAY,KACjB1J,KAAK2J,eAAiB,KACtB3J,KAAK4J,WAAY,EACjB5J,KAAK6J,YAAa,EAClB7J,KAAK8J,aAAe,KACpB9J,KAAK+J,YAAc,EACnB/J,KAAKgK,YAAc,EAEnBhK,KAAKiK,QAAUjK,KAAKkK,WAAW1H,GAC/BxC,KAAKoF,SAAWrE,EAChBf,KAAKmK,mBAAqBnK,KAAKoF,SAAShE,cA3BhB,wBA4BxBpB,KAAKoK,gBAAkB,iBAAkBxJ,SAAS8C,iBAAmB2G,UAAUC,eAAiB,EAChGtK,KAAKuK,cAAgBrI,QAAQkG,OAAOoC,cAAgBpC,OAAOqC,gBAE3DzK,KAAK0K,gDAePC,KAAA,WACO3K,KAAK6J,YACR7J,KAAK4K,OAjFY,WAqFrBC,gBAAA,WACE,IAAMrE,EAAWtG,EAAAA,QAAEF,KAAKoF,WAGnBxE,SAASkK,QACXtE,EAAS5B,GAAG,aAA8C,WAA/B4B,EAAShF,IAAI,eACzCxB,KAAK2K,UAITI,KAAA,WACO/K,KAAK6J,YACR7J,KAAK4K,OAhGY,WAoGrB3B,MAAA,SAAM3E,GACCA,IACHtE,KAAK4J,WAAY,GAGf5J,KAAKoF,SAAShE,cA1EK,8CA2ErBhB,EAAKG,qBAAqBP,KAAKoF,UAC/BpF,KAAKgL,OAAM,IAGbC,cAAcjL,KAAK0J,WACnB1J,KAAK0J,UAAY,QAGnBsB,MAAA,SAAM1G,GACCA,IACHtE,KAAK4J,WAAY,GAGf5J,KAAK0J,YACPuB,cAAcjL,KAAK0J,WACnB1J,KAAK0J,UAAY,MAGf1J,KAAKiK,QAAQnB,WAAa9I,KAAK4J,YACjC5J,KAAKkL,kBAELlL,KAAK0J,UAAYyB,aACdvK,SAASwK,gBAAkBpL,KAAK6K,gBAAkB7K,KAAK2K,MAAMU,KAAKrL,MACnEA,KAAKiK,QAAQnB,cAKnBwC,GAAA,SAAGC,GAAO,IAAAxL,EAAAC,KACRA,KAAK2J,eAAiB3J,KAAKoF,SAAShE,cA3GX,yBA6GzB,IAAMoK,EAAcxL,KAAKyL,cAAczL,KAAK2J,gBAE5C,KAAI4B,EAAQvL,KAAKyJ,OAAOf,OAAS,GAAK6C,EAAQ,GAI9C,GAAIvL,KAAK6J,WACP3J,EAAAA,QAAEF,KAAKoF,UAAUjF,IA3IP,oBA2IuB,WAAA,OAAMJ,EAAKuL,GAAGC,UADjD,CAKA,GAAIC,IAAgBD,EAGlB,OAFAvL,KAAKiJ,aACLjJ,KAAKgL,QAIP,IAAMU,EAAYH,EAAQC,EA3JP,OACA,OA8JnBxL,KAAK4K,OAAOc,EAAW1L,KAAKyJ,OAAO8B,QAGrC5F,QAAA,WACEzF,EAAAA,QAAEF,KAAKoF,UAAUuG,IAAI/C,GACrB1I,EAAAA,QAAE0F,WAAW5F,KAAKoF,SA/LL,eAiMbpF,KAAKyJ,OAAS,KACdzJ,KAAKiK,QAAU,KACfjK,KAAKoF,SAAW,KAChBpF,KAAK0J,UAAY,KACjB1J,KAAK4J,UAAY,KACjB5J,KAAK6J,WAAa,KAClB7J,KAAK2J,eAAiB,KACtB3J,KAAKmK,mBAAqB,QAK5BD,WAAA,SAAW1H,GAMT,OALAA,EAAMoJ,EAAA,GACD/C,EACArG,GAELpC,EAAKkC,gBAAgB2C,EAAMzC,EAAQ4G,GAC5B5G,KAGTqJ,aAAA,WACE,IAAMC,EAAYpL,KAAKqL,IAAI/L,KAAKgK,aAEhC,KAAI8B,GAlNgB,IAkNpB,CAIA,IAAMJ,EAAYI,EAAY9L,KAAKgK,YAEnChK,KAAKgK,YAAc,EAGf0B,EAAY,GACd1L,KAAK+K,OAIHW,EAAY,GACd1L,KAAK2K,WAITD,mBAAA,WAAqB,IAAAsB,EAAAhM,KACfA,KAAKiK,QAAQlB,UACf7I,EAAAA,QAAEF,KAAKoF,UAAUyB,GA5MJ,uBA4MsB,SAAAvC,GAAK,OAAI0H,EAAKC,SAAS3H,MAGjC,UAAvBtE,KAAKiK,QAAQhB,OACf/I,EAAAA,QAAEF,KAAKoF,UACJyB,GAhNa,0BAgNQ,SAAAvC,GAAK,OAAI0H,EAAK/C,MAAM3E,MACzCuC,GAhNa,0BAgNQ,SAAAvC,GAAK,OAAI0H,EAAKhB,MAAM1G,MAG1CtE,KAAKiK,QAAQd,OACfnJ,KAAKkM,6BAITA,wBAAA,WAA0B,IAAAC,EAAAnM,KACxB,GAAKA,KAAKoK,gBAAV,CAIA,IAAMgC,EAAQ,SAAA9H,GACR6H,EAAK5B,eAAiBlB,EAAY/E,EAAM+H,cAAcC,YAAY9I,eACpE2I,EAAKpC,YAAczF,EAAM+H,cAAcE,QAC7BJ,EAAK5B,gBACf4B,EAAKpC,YAAczF,EAAM+H,cAAcG,QAAQ,GAAGD,UAahDE,EAAM,SAAAnI,GACN6H,EAAK5B,eAAiBlB,EAAY/E,EAAM+H,cAAcC,YAAY9I,iBACpE2I,EAAKnC,YAAc1F,EAAM+H,cAAcE,QAAUJ,EAAKpC,aAGxDoC,EAAKN,eACsB,UAAvBM,EAAKlC,QAAQhB,QASfkD,EAAKlD,QACDkD,EAAKrC,cACP4C,aAAaP,EAAKrC,cAGpBqC,EAAKrC,aAAexJ,YAAW,SAAAgE,GAAK,OAAI6H,EAAKnB,MAAM1G,KAhS5B,IAgS6D6H,EAAKlC,QAAQnB,YAIrG5I,EAAAA,QAAEF,KAAKoF,SAASmD,iBAhPM,uBAiPnB1B,GAjQe,yBAiQM,SAAA8F,GAAC,OAAIA,EAAE/F,oBAE3B5G,KAAKuK,eACPrK,EAAAA,QAAEF,KAAKoF,UAAUyB,GAtQA,2BAsQsB,SAAAvC,GAAK,OAAI8H,EAAM9H,MACtDpE,EAAAA,QAAEF,KAAKoF,UAAUyB,GAtQF,yBAsQsB,SAAAvC,GAAK,OAAImI,EAAInI,MAElDtE,KAAKoF,SAASoC,UAAUmB,IA5PG,mBA8P3BzI,EAAAA,QAAEF,KAAKoF,UAAUyB,GA9QD,0BA8QsB,SAAAvC,GAAK,OAAI8H,EAAM9H,MACrDpE,EAAAA,QAAEF,KAAKoF,UAAUyB,GA9QF,yBA8QsB,SAAAvC,GAAK,OA3C/B,SAAAA,GAEPA,EAAM+H,cAAcG,SAAWlI,EAAM+H,cAAcG,QAAQ9D,OAAS,EACtEyD,EAAKnC,YAAc,EAEnBmC,EAAKnC,YAAc1F,EAAM+H,cAAcG,QAAQ,GAAGD,QAAUJ,EAAKpC,YAsCrB6C,CAAKtI,MACnDpE,EAAAA,QAAEF,KAAKoF,UAAUyB,GA9QH,wBA8QsB,SAAAvC,GAAK,OAAImI,EAAInI,WAIrD2H,SAAA,SAAS3H,GACP,IAAI,kBAAkBhB,KAAKgB,EAAMK,OAAOwD,SAIxC,OAAQ7D,EAAMuI,OACZ,KA3TqB,GA4TnBvI,EAAMsC,iBACN5G,KAAK+K,OACL,MACF,KA9TsB,GA+TpBzG,EAAMsC,iBACN5G,KAAK2K,WAMXc,cAAA,SAAc1K,GAIZ,OAHAf,KAAKyJ,OAAS1I,GAAWA,EAAQgD,WAC/B,GAAGuE,MAAMxF,KAAK/B,EAAQgD,WAAWwE,iBApRjB,mBAqRhB,GACKvI,KAAKyJ,OAAOqD,QAAQ/L,MAG7BgM,oBAAA,SAAoBrB,EAAWhE,GAC7B,IAAMsF,EAxTa,SAwTKtB,EAClBuB,EAxTa,SAwTKvB,EAClBF,EAAcxL,KAAKyL,cAAc/D,GACjCwF,EAAgBlN,KAAKyJ,OAAOf,OAAS,EAI3C,IAHsBuE,GAAmC,IAAhBzB,GACjBwB,GAAmBxB,IAAgB0B,KAErClN,KAAKiK,QAAQf,KACjC,OAAOxB,EAGT,IACMyF,GAAa3B,GAnUA,SAkULE,GAAgC,EAAI,IACR1L,KAAKyJ,OAAOf,OAEtD,OAAsB,IAAfyE,EACLnN,KAAKyJ,OAAOzJ,KAAKyJ,OAAOf,OAAS,GAAK1I,KAAKyJ,OAAO0D,MAGtDC,mBAAA,SAAmBC,EAAeC,GAChC,IAAMC,EAAcvN,KAAKyL,cAAc4B,GACjCG,EAAYxN,KAAKyL,cAAczL,KAAKoF,SAAShE,cA/S1B,0BAgTnBqM,EAAavN,EAAAA,QAAE8F,MAxUR,oBAwU2B,CACtCqH,cAAAA,EACA3B,UAAW4B,EACXI,KAAMF,EACNlC,GAAIiC,IAKN,OAFArN,EAAAA,QAAEF,KAAKoF,UAAUpD,QAAQyL,GAElBA,KAGTE,2BAAA,SAA2B5M,GACzB,GAAIf,KAAKmK,mBAAoB,CAC3B,IAAMyD,EAAa,GAAGtF,MAAMxF,KAAK9C,KAAKmK,mBAAmB5B,iBA/TvC,YAgUlBrI,EAAAA,QAAE0N,GAAY3H,YAxUM,UA0UpB,IAAM4H,EAAgB7N,KAAKmK,mBAAmB2D,SAC5C9N,KAAKyL,cAAc1K,IAGjB8M,GACF3N,EAAAA,QAAE2N,GAAeE,SA/UC,cAoVxB7C,gBAAA,WACE,IAAMnK,EAAUf,KAAK2J,gBAAkB3J,KAAKoF,SAAShE,cA5U5B,yBA8UzB,GAAKL,EAAL,CAIA,IAAMiN,EAAkBC,SAASlN,EAAQE,aAAa,iBAAkB,IAEpE+M,GACFhO,KAAKiK,QAAQiE,gBAAkBlO,KAAKiK,QAAQiE,iBAAmBlO,KAAKiK,QAAQnB,SAC5E9I,KAAKiK,QAAQnB,SAAWkF,GAExBhO,KAAKiK,QAAQnB,SAAW9I,KAAKiK,QAAQiE,iBAAmBlO,KAAKiK,QAAQnB,aAIzE8B,OAAA,SAAOc,EAAW3K,GAAS,IAQrBoN,EACAC,EACAd,EAVqBe,EAAArO,KACnB0H,EAAgB1H,KAAKoF,SAAShE,cA7VX,yBA8VnBkN,EAAqBtO,KAAKyL,cAAc/D,GACxC6G,EAAcxN,GAAW2G,GAC7B1H,KAAK+M,oBAAoBrB,EAAWhE,GAChC8G,EAAmBxO,KAAKyL,cAAc8C,GACtCE,EAAYvM,QAAQlC,KAAK0J,WAgB/B,GA/YmB,SAqYfgC,GACFyC,EA/WkB,qBAgXlBC,EA/WkB,qBAgXlBd,EAtYiB,SAwYjBa,EApXmB,sBAqXnBC,EAlXkB,qBAmXlBd,EAzYkB,SA4YhBiB,GAAerO,EAAAA,QAAEqO,GAAarI,SA3XZ,UA4XpBlG,KAAK6J,YAAa,OAKpB,IADmB7J,KAAKoN,mBAAmBmB,EAAajB,GACzC7H,sBAIViC,GAAkB6G,EAAvB,CAKAvO,KAAK6J,YAAa,EAEd4E,GACFzO,KAAKiJ,QAGPjJ,KAAK2N,2BAA2BY,GAChCvO,KAAK2J,eAAiB4E,EAEtB,IAAMG,EAAYxO,EAAAA,QAAE8F,MAjaR,mBAia0B,CACpCqH,cAAekB,EACf7C,UAAW4B,EACXI,KAAMY,EACNhD,GAAIkD,IAGN,GAAItO,EAAAA,QAAEF,KAAKoF,UAAUc,SAzZA,SAyZ4B,CAC/ChG,EAAAA,QAAEqO,GAAaR,SAASK,GAExBhO,EAAK0B,OAAOyM,GAEZrO,EAAAA,QAAEwH,GAAeqG,SAASI,GAC1BjO,EAAAA,QAAEqO,GAAaR,SAASI,GAExB,IAAM5M,EAAqBnB,EAAKkB,iCAAiCoG,GAEjExH,EAAAA,QAAEwH,GACCvH,IAAIC,EAAKC,gBAAgB,WACxBH,EAAAA,QAAEqO,GACCtI,YAAekI,EADlB,IAC0CC,GACvCL,SAxaa,UA0ahB7N,EAAAA,QAAEwH,GAAezB,YAAe0I,UAAqBP,EAArD,IAAuED,GAEvEE,EAAKxE,YAAa,EAElBvJ,YAAW,WAAA,OAAMJ,EAAAA,QAAEmO,EAAKjJ,UAAUpD,QAAQ0M,KAAY,MAEvDrK,qBAAqB9C,QAExBrB,EAAAA,QAAEwH,GAAezB,YAlbG,UAmbpB/F,EAAAA,QAAEqO,GAAaR,SAnbK,UAqbpB/N,KAAK6J,YAAa,EAClB3J,EAAAA,QAAEF,KAAKoF,UAAUpD,QAAQ0M,GAGvBD,GACFzO,KAAKgL,YAMF1E,iBAAP,SAAwB9D,GACtB,OAAOxC,KAAKuG,MAAK,WACf,IAAIE,EAAOvG,EAAAA,QAAEF,MAAMyG,KAjfR,eAkfPwD,EAAO2B,EAAA,GACN/C,EACA3I,EAAAA,QAAEF,MAAMyG,QAGS,iBAAXjE,IACTyH,EAAO2B,EAAA,GACF3B,EACAzH,IAIP,IAAMoM,EAA2B,iBAAXpM,EAAsBA,EAASyH,EAAQjB,MAO7D,GALKvC,IACHA,EAAO,IAAI+C,EAASxJ,KAAMiK,GAC1B/J,EAAAA,QAAEF,MAAMyG,KAlgBC,cAkgBcA,IAGH,iBAAXjE,EACTiE,EAAK6E,GAAG9I,QACH,GAAsB,iBAAXoM,EAAqB,CACrC,GAA4B,oBAAjBnI,EAAKmI,GACd,MAAM,IAAI3K,UAAJ,oBAAkC2K,EAAlC,KAGRnI,EAAKmI,UACI3E,EAAQnB,UAAYmB,EAAQ4E,OACrCpI,EAAKwC,QACLxC,EAAKuE,eAKJ8D,qBAAP,SAA4BxK,GAC1B,IAAMtD,EAAWZ,EAAKU,uBAAuBd,MAE7C,GAAKgB,EAAL,CAIA,IAAM2D,EAASzE,EAAAA,QAAEc,GAAU,GAE3B,GAAK2D,GAAWzE,EAAAA,QAAEyE,GAAQuB,SA/eF,YA+exB,CAIA,IAAM1D,EAAMoJ,EAAA,GACP1L,EAAAA,QAAEyE,GAAQ8B,OACVvG,EAAAA,QAAEF,MAAMyG,QAEPsI,EAAa/O,KAAKiB,aAAa,iBAEjC8N,IACFvM,EAAOsG,UAAW,GAGpBU,EAASlD,iBAAiBxD,KAAK5C,EAAAA,QAAEyE,GAASnC,GAEtCuM,GACF7O,EAAAA,QAAEyE,GAAQ8B,KA9iBC,eA8iBc6E,GAAGyD,GAG9BzK,EAAMsC,4DAhdN,MAlGY,wCAsGZ,OAAOiC,QA3BLW,GAifNtJ,EAAAA,QAAEU,UAAUiG,GA/gBc,6BAiBE,gCA8f8B2C,EAASsF,sBAEnE5O,EAAAA,QAAEkI,QAAQvB,GAlhBe,6BAkhBS,WAEhC,IADA,IAAMmI,EAAY,GAAG1G,MAAMxF,KAAKlC,SAAS2H,iBAhgBhB,2BAigBhBC,EAAI,EAAGC,EAAMuG,EAAUtG,OAAQF,EAAIC,EAAKD,IAAK,CACpD,IAAMyG,EAAY/O,EAAAA,QAAE8O,EAAUxG,IAC9BgB,EAASlD,iBAAiBxD,KAAKmM,EAAWA,EAAUxI,YAUxDvG,EAAAA,QAAEiE,GAAGc,GAAQuE,EAASlD,iBACtBpG,EAAAA,QAAEiE,GAAGc,GAAM6B,YAAc0C,EACzBtJ,EAAAA,QAAEiE,GAAGc,GAAM8B,WAAa,WAEtB,OADA7G,EAAAA,QAAEiE,GAAGc,GAAQC,EACNsE,EAASlD,kBCjlBlB,IAAMrB,EAAO,WAKPC,EAAqBhF,EAAAA,QAAEiE,GAAGc,GAE1B4D,EAAU,CACd3B,QAAQ,EACRrB,OAAQ,IAGJuD,EAAc,CAClBlC,OAAQ,UACRrB,OAAQ,oBA0BJqJ,EAAAA,WACJ,SAAAA,EAAYnO,EAASyB,GACnBxC,KAAKmP,kBAAmB,EACxBnP,KAAKoF,SAAWrE,EAChBf,KAAKiK,QAAUjK,KAAKkK,WAAW1H,GAC/BxC,KAAKoP,cAAgB,GAAG9G,MAAMxF,KAAKlC,SAAS2H,iBAC1C,mCAAmCxH,EAAQsO,GAA3C,6CAC0CtO,EAAQsO,GADlD,OAKF,IADA,IAAMC,EAAa,GAAGhH,MAAMxF,KAAKlC,SAAS2H,iBAlBjB,6BAmBhBC,EAAI,EAAGC,EAAM6G,EAAW5G,OAAQF,EAAIC,EAAKD,IAAK,CACrD,IAAM+G,EAAOD,EAAW9G,GAClBxH,EAAWZ,EAAKU,uBAAuByO,GACvCC,EAAgB,GAAGlH,MAAMxF,KAAKlC,SAAS2H,iBAAiBvH,IAC3DyO,QAAO,SAAAC,GAAS,OAAIA,IAAc3O,KAEpB,OAAbC,GAAqBwO,EAAc9G,OAAS,IAC9C1I,KAAK2P,UAAY3O,EACjBhB,KAAKoP,cAAcQ,KAAKL,IAI5BvP,KAAK6P,QAAU7P,KAAKiK,QAAQpE,OAAS7F,KAAK8P,aAAe,KAEpD9P,KAAKiK,QAAQpE,QAChB7F,KAAK+P,0BAA0B/P,KAAKoF,SAAUpF,KAAKoP,eAGjDpP,KAAKiK,QAAQ/C,QACflH,KAAKkH,oCAgBTA,OAAA,WACMhH,EAAAA,QAAEF,KAAKoF,UAAUc,SAhED,QAiElBlG,KAAKgQ,OAELhQ,KAAKiQ,UAITA,KAAA,WAAO,IAMDC,EACAC,EAPCpQ,EAAAC,KACL,IAAIA,KAAKmP,mBACPjP,EAAAA,QAAEF,KAAKoF,UAAUc,SAzEC,UAgFhBlG,KAAK6P,SAUgB,KATvBK,EAAU,GAAG5H,MAAMxF,KAAK9C,KAAK6P,QAAQtH,iBAzElB,uBA0EhBkH,QAAO,SAAAF,GACN,MAAmC,iBAAxBxP,EAAKkK,QAAQpE,OACf0J,EAAKtO,aAAa,iBAAmBlB,EAAKkK,QAAQpE,OAGpD0J,EAAK/H,UAAUC,SAtFJ,gBAyFViB,SACVwH,EAAU,QAIVA,IACFC,EAAcjQ,EAAAA,QAAEgQ,GAASE,IAAIpQ,KAAK2P,WAAWlJ,KArHlC,iBAsHQ0J,EAAYhB,mBAFjC,CAOA,IAAMkB,EAAanQ,EAAAA,QAAE8F,MA5GT,oBA8GZ,GADA9F,EAAAA,QAAEF,KAAKoF,UAAUpD,QAAQqO,IACrBA,EAAW5K,qBAAf,CAIIyK,IACFhB,EAAS5I,iBAAiBxD,KAAK5C,EAAAA,QAAEgQ,GAASE,IAAIpQ,KAAK2P,WAAY,QAC1DQ,GACHjQ,EAAAA,QAAEgQ,GAASzJ,KApIF,cAoIiB,OAI9B,IAAM6J,EAAYtQ,KAAKuQ,gBAEvBrQ,EAAAA,QAAEF,KAAKoF,UACJa,YArHqB,YAsHrB8H,SArHuB,cAuH1B/N,KAAKoF,SAASoL,MAAMF,GAAa,EAE7BtQ,KAAKoP,cAAc1G,QACrBxI,EAAAA,QAAEF,KAAKoP,eACJnJ,YA1HoB,aA2HpBwK,KAAK,iBAAiB,GAG3BzQ,KAAK0Q,kBAAiB,GAEtB,IAaMC,EAAU,UADaL,EAAU,GAAG9M,cAAgB8M,EAAUhI,MAAM,IAEpE/G,EAAqBnB,EAAKkB,iCAAiCtB,KAAKoF,UAEtElF,EAAAA,QAAEF,KAAKoF,UACJjF,IAAIC,EAAKC,gBAjBK,WACfH,EAAAA,QAAEH,EAAKqF,UACJa,YAnIqB,cAoIrB8H,SAAY6C,iBAEf7Q,EAAKqF,SAASoL,MAAMF,GAAa,GAEjCvQ,EAAK2Q,kBAAiB,GAEtBxQ,EAAAA,QAAEH,EAAKqF,UAAUpD,QAjJN,wBA0JVqC,qBAAqB9C,GAExBvB,KAAKoF,SAASoL,MAAMF,GAAgBtQ,KAAKoF,SAASuL,GAAlD,UAGFX,KAAA,WAAO,IAAAhE,EAAAhM,KACL,IAAIA,KAAKmP,kBACNjP,EAAAA,QAAEF,KAAKoF,UAAUc,SA5JA,QA2JpB,CAKA,IAAMmK,EAAanQ,EAAAA,QAAE8F,MApKT,oBAsKZ,GADA9F,EAAAA,QAAEF,KAAKoF,UAAUpD,QAAQqO,IACrBA,EAAW5K,qBAAf,CAIA,IAAM6K,EAAYtQ,KAAKuQ,gBAEvBvQ,KAAKoF,SAASoL,MAAMF,GAAgBtQ,KAAKoF,SAASyL,wBAAwBP,GAA1E,KAEAlQ,EAAK0B,OAAO9B,KAAKoF,UAEjBlF,EAAAA,QAAEF,KAAKoF,UACJ2I,SA3KuB,cA4KvB9H,YAAe2K,iBAElB,IAAME,EAAqB9Q,KAAKoP,cAAc1G,OAC9C,GAAIoI,EAAqB,EACvB,IAAK,IAAItI,EAAI,EAAGA,EAAIsI,EAAoBtI,IAAK,CAC3C,IAAMxG,EAAUhC,KAAKoP,cAAc5G,GAC7BxH,EAAWZ,EAAKU,uBAAuBkB,GAE7C,GAAiB,OAAbhB,EACYd,EAAAA,QAAE,GAAGoI,MAAMxF,KAAKlC,SAAS2H,iBAAiBvH,KAC7CkF,SAxLG,SAyLZhG,EAAAA,QAAE8B,GAAS+L,SAtLM,aAuLd0C,KAAK,iBAAiB,GAMjCzQ,KAAK0Q,kBAAiB,GAUtB1Q,KAAKoF,SAASoL,MAAMF,GAAa,GACjC,IAAM/O,EAAqBnB,EAAKkB,iCAAiCtB,KAAKoF,UAEtElF,EAAAA,QAAEF,KAAKoF,UACJjF,IAAIC,EAAKC,gBAZK,WACf2L,EAAK0E,kBAAiB,GACtBxQ,EAAAA,QAAE8L,EAAK5G,UACJa,YAnMqB,cAoMrB8H,SArMmB,YAsMnB/L,QA1MS,yBAkNXqC,qBAAqB9C,QAG1BmP,iBAAA,SAAiBK,GACf/Q,KAAKmP,iBAAmB4B,KAG1BpL,QAAA,WACEzF,EAAAA,QAAE0F,WAAW5F,KAAKoF,SA5OL,eA8ObpF,KAAKiK,QAAU,KACfjK,KAAK6P,QAAU,KACf7P,KAAKoF,SAAW,KAChBpF,KAAKoP,cAAgB,KACrBpP,KAAKmP,iBAAmB,QAK1BjF,WAAA,SAAW1H,GAOT,OANAA,EAAMoJ,EAAA,GACD/C,EACArG,IAEE0E,OAAShF,QAAQM,EAAO0E,QAC/B9G,EAAKkC,gBAAgB2C,EAAMzC,EAAQ4G,GAC5B5G,KAGT+N,cAAA,WAEE,OADiBrQ,EAAAA,QAAEF,KAAKoF,UAAUc,SAxOd,SAAA,QACC,YA2OvB4J,WAAA,WAAa,IACPjK,EADOsG,EAAAnM,KAGPI,EAAK+B,UAAUnC,KAAKiK,QAAQpE,SAC9BA,EAAS7F,KAAKiK,QAAQpE,OAGoB,oBAA/B7F,KAAKiK,QAAQpE,OAAOzB,SAC7ByB,EAAS7F,KAAKiK,QAAQpE,OAAO,KAG/BA,EAASjF,SAASQ,cAAcpB,KAAKiK,QAAQpE,QAG/C,IAAM7E,EAAQ,yCAA4ChB,KAAKiK,QAAQpE,OAAzD,KACRiI,EAAW,GAAGxF,MAAMxF,KAAK+C,EAAO0C,iBAAiBvH,IASvD,OAPAd,EAAAA,QAAE4N,GAAUvH,MAAK,SAACiC,EAAGzH,GACnBoL,EAAK4D,0BACHb,EAAS8B,sBAAsBjQ,GAC/B,CAACA,OAIE8E,KAGTkK,0BAAA,SAA0BhP,EAASkQ,GACjC,IAAMC,EAAShR,EAAAA,QAAEa,GAASmF,SA7QN,QA+QhB+K,EAAavI,QACfxI,EAAAA,QAAE+Q,GACCnJ,YA9QoB,aA8QeoJ,GACnCT,KAAK,gBAAiBS,MAMtBF,sBAAP,SAA6BjQ,GAC3B,IAAMC,EAAWZ,EAAKU,uBAAuBC,GAC7C,OAAOC,EAAWJ,SAASQ,cAAcJ,GAAY,QAGhDsF,iBAAP,SAAwB9D,GACtB,OAAOxC,KAAKuG,MAAK,WACf,IAAMC,EAAWtG,EAAAA,QAAEF,MACfyG,EAAOD,EAASC,KArTT,eAsTLwD,EAAO2B,EAAA,GACR/C,EACArC,EAASC,OACU,iBAAXjE,GAAuBA,EAASA,EAAS,IAYtD,IATKiE,GAAQwD,EAAQ/C,QAA4B,iBAAX1E,GAAuB,YAAYc,KAAKd,KAC5EyH,EAAQ/C,QAAS,GAGdT,IACHA,EAAO,IAAIyI,EAASlP,KAAMiK,GAC1BzD,EAASC,KAlUA,cAkUeA,IAGJ,iBAAXjE,EAAqB,CAC9B,GAA4B,oBAAjBiE,EAAKjE,GACd,MAAM,IAAIyB,UAAJ,oBAAkCzB,EAAlC,KAGRiE,EAAKjE,kDA/PT,MA5EY,wCAgFZ,OAAOqG,QAzCLqG,GAgTNhP,EAAAA,QAAEU,UAAUiG,GAnUc,6BAWG,4BAwT8B,SAAUvC,GAE/B,MAAhCA,EAAM6M,cAAchJ,SACtB7D,EAAMsC,iBAGR,IAAMwK,EAAWlR,EAAAA,QAAEF,MACbgB,EAAWZ,EAAKU,uBAAuBd,MACvCqR,EAAY,GAAG/I,MAAMxF,KAAKlC,SAAS2H,iBAAiBvH,IAE1Dd,EAAAA,QAAEmR,GAAW9K,MAAK,WAChB,IAAM+K,EAAUpR,EAAAA,QAAEF,MAEZwC,EADO8O,EAAQ7K,KAlWR,eAmWS,SAAW2K,EAAS3K,OAC1CyI,EAAS5I,iBAAiBxD,KAAKwO,EAAS9O,SAU5CtC,EAAAA,QAAEiE,GAAGc,GAAQiK,EAAS5I,iBACtBpG,EAAAA,QAAEiE,GAAGc,GAAM6B,YAAcoI,EACzBhP,EAAAA,QAAEiE,GAAGc,GAAM8B,WAAa,WAEtB,OADA7G,EAAAA,QAAEiE,GAAGc,GAAQC,EACNgK,EAAS5I,kBC5WlB,IAAIiL,EAA8B,oBAAXnJ,QAA8C,oBAAbxH,UAAiD,oBAAdyJ,UAEvFmH,EAAkB,WAEpB,IADA,IAAIC,EAAwB,CAAC,OAAQ,UAAW,WACvCjJ,EAAI,EAAGA,EAAIiJ,EAAsB/I,OAAQF,GAAK,EACrD,GAAI+I,GAAalH,UAAUqH,UAAU5E,QAAQ2E,EAAsBjJ,KAAO,EACxE,OAAO,EAGX,OAAO,EAPa,GAqCtB,IAWImJ,EAXqBJ,GAAanJ,OAAOwJ,QA3B7C,SAA2BzN,GACzB,IAAIlE,GAAS,EACb,OAAO,WACDA,IAGJA,GAAS,EACTmI,OAAOwJ,QAAQC,UAAUC,MAAK,WAC5B7R,GAAS,EACTkE,UAKN,SAAsBA,GACpB,IAAI4N,GAAY,EAChB,OAAO,WACAA,IACHA,GAAY,EACZzR,YAAW,WACTyR,GAAY,EACZ5N,MACCqN,MAyBT,SAASQ,EAAWC,GAElB,OAAOA,GAA8D,sBADvD,GACoB/O,SAASJ,KAAKmP,GAUlD,SAASC,EAAyBnR,EAAS2B,GACzC,GAAyB,IAArB3B,EAAQsB,SACV,MAAO,GAGT,IACIb,EADST,EAAQoR,cAAcC,YAClBC,iBAAiBtR,EAAS,MAC3C,OAAO2B,EAAWlB,EAAIkB,GAAYlB,EAUpC,SAAS8Q,EAAcvR,GACrB,MAAyB,SAArBA,EAAQwR,SACHxR,EAEFA,EAAQgD,YAAchD,EAAQyR,KAUvC,SAASC,EAAgB1R,GAEvB,IAAKA,EACH,OAAOH,SAAS8R,KAGlB,OAAQ3R,EAAQwR,UACd,IAAK,OACL,IAAK,OACH,OAAOxR,EAAQoR,cAAcO,KAC/B,IAAK,YACH,OAAO3R,EAAQ2R,KAKnB,IAAIC,EAAwBT,EAAyBnR,GACjD6R,EAAWD,EAAsBC,SACjCC,EAAYF,EAAsBE,UAClCC,EAAYH,EAAsBG,UAEtC,MAAI,wBAAwBxP,KAAKsP,EAAWE,EAAYD,GAC/C9R,EAGF0R,EAAgBH,EAAcvR,IAUvC,SAASgS,EAAiBC,GACxB,OAAOA,GAAaA,EAAUC,cAAgBD,EAAUC,cAAgBD,EAG1E,IAAIE,EAAS3B,MAAgBnJ,OAAO+K,uBAAwBvS,SAASwS,cACjEC,EAAS9B,GAAa,UAAUjO,KAAK+G,UAAUqH,WASnD,SAAS4B,EAAKpP,GACZ,OAAgB,KAAZA,EACKgP,EAEO,KAAZhP,EACKmP,EAEFH,GAAUG,EAUnB,SAASE,EAAgBxS,GACvB,IAAKA,EACH,OAAOH,SAAS8C,gBAQlB,IALA,IAAI8P,EAAiBF,EAAK,IAAM1S,SAAS8R,KAAO,KAG5Ce,EAAe1S,EAAQ0S,cAAgB,KAEpCA,IAAiBD,GAAkBzS,EAAQ2S,oBAChDD,GAAgB1S,EAAUA,EAAQ2S,oBAAoBD,aAGxD,IAAIlB,EAAWkB,GAAgBA,EAAalB,SAE5C,OAAKA,GAAyB,SAAbA,GAAoC,SAAbA,GAMsB,IAA1D,CAAC,KAAM,KAAM,SAASzF,QAAQ2G,EAAalB,WAA2E,WAAvDL,EAAyBuB,EAAc,YACjGF,EAAgBE,GAGlBA,EATE1S,EAAUA,EAAQoR,cAAczO,gBAAkB9C,SAAS8C,gBA4BtE,SAASiQ,EAAQC,GACf,OAAwB,OAApBA,EAAK7P,WACA4P,EAAQC,EAAK7P,YAGf6P,EAWT,SAASC,EAAuBC,EAAUC,GAExC,KAAKD,GAAaA,EAASzR,UAAa0R,GAAaA,EAAS1R,UAC5D,OAAOzB,SAAS8C,gBAIlB,IAAIsQ,EAAQF,EAASG,wBAAwBF,GAAYG,KAAKC,4BAC1D/H,EAAQ4H,EAAQF,EAAWC,EAC3BtH,EAAMuH,EAAQD,EAAWD,EAGzBM,EAAQxT,SAASyT,cACrBD,EAAME,SAASlI,EAAO,GACtBgI,EAAMG,OAAO9H,EAAK,GAClB,IA/CyB1L,EACrBwR,EA8CAiC,EAA0BJ,EAAMI,wBAIpC,GAAIV,IAAaU,GAA2BT,IAAaS,GAA2BpI,EAAM3E,SAASgF,GACjG,MAjDe,UAFb8F,GADqBxR,EAoDDyT,GAnDDjC,WAKH,SAAbA,GAAuBgB,EAAgBxS,EAAQ0T,qBAAuB1T,EAkDpEwS,EAAgBiB,GAHdA,EAOX,IAAIE,EAAef,EAAQG,GAC3B,OAAIY,EAAalC,KACRqB,EAAuBa,EAAalC,KAAMuB,GAE1CF,EAAuBC,EAAUH,EAAQI,GAAUvB,MAY9D,SAASmC,EAAU5T,GACjB,IAAI6T,EAAO5P,UAAU0D,OAAS,QAAsBmM,IAAjB7P,UAAU,GAAmBA,UAAU,GAAK,MAE3E8P,EAAqB,QAATF,EAAiB,YAAc,aAC3CrC,EAAWxR,EAAQwR,SAEvB,GAAiB,SAAbA,GAAoC,SAAbA,EAAqB,CAC9C,IAAIwC,EAAOhU,EAAQoR,cAAczO,gBAC7BsR,EAAmBjU,EAAQoR,cAAc6C,kBAAoBD,EACjE,OAAOC,EAAiBF,GAG1B,OAAO/T,EAAQ+T,GAYjB,SAASG,EAAcC,EAAMnU,GAC3B,IAAIoU,EAAWnQ,UAAU0D,OAAS,QAAsBmM,IAAjB7P,UAAU,IAAmBA,UAAU,GAE1EoQ,EAAYT,EAAU5T,EAAS,OAC/BsU,EAAaV,EAAU5T,EAAS,QAChCuU,EAAWH,GAAY,EAAI,EAK/B,OAJAD,EAAKK,KAAOH,EAAYE,EACxBJ,EAAKM,QAAUJ,EAAYE,EAC3BJ,EAAKO,MAAQJ,EAAaC,EAC1BJ,EAAKQ,OAASL,EAAaC,EACpBJ,EAaT,SAASS,EAAeC,EAAQC,GAC9B,IAAIC,EAAiB,MAATD,EAAe,OAAS,MAChCE,EAAkB,SAAVD,EAAmB,QAAU,SAEzC,OAAOnU,WAAWiU,EAAO,SAAWE,EAAQ,UAAYnU,WAAWiU,EAAO,SAAWG,EAAQ,UAG/F,SAASC,EAAQH,EAAMnD,EAAMqC,EAAMkB,GACjC,OAAOvV,KAAKwV,IAAIxD,EAAK,SAAWmD,GAAOnD,EAAK,SAAWmD,GAAOd,EAAK,SAAWc,GAAOd,EAAK,SAAWc,GAAOd,EAAK,SAAWc,GAAOvC,EAAK,IAAMrF,SAAS8G,EAAK,SAAWc,IAAS5H,SAASgI,EAAc,UAAqB,WAATJ,EAAoB,MAAQ,UAAY5H,SAASgI,EAAc,UAAqB,WAATJ,EAAoB,SAAW,WAAa,GAG5U,SAASM,EAAevV,GACtB,IAAI8R,EAAO9R,EAAS8R,KAChBqC,EAAOnU,EAAS8C,gBAChBuS,EAAgB3C,EAAK,KAAOjB,iBAAiB0C,GAEjD,MAAO,CACLqB,OAAQJ,EAAQ,SAAUtD,EAAMqC,EAAMkB,GACtCI,MAAOL,EAAQ,QAAStD,EAAMqC,EAAMkB,IAIxC,IAAIK,EAAiB,SAAUC,EAAUzP,GACvC,KAAMyP,aAAoBzP,GACxB,MAAM,IAAI7C,UAAU,sCAIpBuS,EAAc,WAChB,SAASC,EAAiB9R,EAAQ+R,GAChC,IAAK,IAAIlO,EAAI,EAAGA,EAAIkO,EAAMhO,OAAQF,IAAK,CACrC,IAAImO,EAAaD,EAAMlO,GACvBmO,EAAWC,WAAaD,EAAWC,aAAc,EACjDD,EAAWE,cAAe,EACtB,UAAWF,IAAYA,EAAWG,UAAW,GACjDnU,OAAOoU,eAAepS,EAAQgS,EAAWK,IAAKL,IAIlD,OAAO,SAAU7P,EAAamQ,EAAYC,GAGxC,OAFID,GAAYR,EAAiB3P,EAAYlE,UAAWqU,GACpDC,GAAaT,EAAiB3P,EAAaoQ,GACxCpQ,GAdO,GAsBdiQ,EAAiB,SAAU3U,EAAK4U,EAAKhU,GAYvC,OAXIgU,KAAO5U,EACTO,OAAOoU,eAAe3U,EAAK4U,EAAK,CAC9BhU,MAAOA,EACP4T,YAAY,EACZC,cAAc,EACdC,UAAU,IAGZ1U,EAAI4U,GAAOhU,EAGNZ,GAGLwJ,EAAWjJ,OAAOwU,QAAU,SAAUxS,GACxC,IAAK,IAAI6D,EAAI,EAAGA,EAAIxD,UAAU0D,OAAQF,IAAK,CACzC,IAAI4O,EAASpS,UAAUwD,GAEvB,IAAK,IAAIwO,KAAOI,EACVzU,OAAOC,UAAUC,eAAeC,KAAKsU,EAAQJ,KAC/CrS,EAAOqS,GAAOI,EAAOJ,IAK3B,OAAOrS,GAUT,SAAS0S,EAAcC,GACrB,OAAO1L,EAAS,GAAI0L,EAAS,CAC3B5B,MAAO4B,EAAQ7B,KAAO6B,EAAQjB,MAC9Bb,OAAQ8B,EAAQ/B,IAAM+B,EAAQlB,SAWlC,SAASvF,EAAsB9P,GAC7B,IAAImU,EAAO,GAKX,IACE,GAAI5B,EAAK,IAAK,CACZ4B,EAAOnU,EAAQ8P,wBACf,IAAIuE,EAAYT,EAAU5T,EAAS,OAC/BsU,EAAaV,EAAU5T,EAAS,QACpCmU,EAAKK,KAAOH,EACZF,EAAKO,MAAQJ,EACbH,EAAKM,QAAUJ,EACfF,EAAKQ,OAASL,OAEdH,EAAOnU,EAAQ8P,wBAEjB,MAAOlE,IAET,IAAI4K,EAAS,CACX9B,KAAMP,EAAKO,KACXF,IAAKL,EAAKK,IACVc,MAAOnB,EAAKQ,MAAQR,EAAKO,KACzBW,OAAQlB,EAAKM,OAASN,EAAKK,KAIzBiC,EAA6B,SAArBzW,EAAQwR,SAAsB4D,EAAepV,EAAQoR,eAAiB,GAC9EkE,EAAQmB,EAAMnB,OAAStV,EAAQ0W,aAAeF,EAAOlB,MACrDD,EAASoB,EAAMpB,QAAUrV,EAAQ2W,cAAgBH,EAAOnB,OAExDuB,EAAiB5W,EAAQ6W,YAAcvB,EACvCwB,EAAgB9W,EAAQgB,aAAeqU,EAI3C,GAAIuB,GAAkBE,EAAe,CACnC,IAAIjC,EAAS1D,EAAyBnR,GACtC4W,GAAkBhC,EAAeC,EAAQ,KACzCiC,GAAiBlC,EAAeC,EAAQ,KAExC2B,EAAOlB,OAASsB,EAChBJ,EAAOnB,QAAUyB,EAGnB,OAAOR,EAAcE,GAGvB,SAASO,EAAqChK,EAAUjI,GACtD,IAAIkS,EAAgB/S,UAAU0D,OAAS,QAAsBmM,IAAjB7P,UAAU,IAAmBA,UAAU,GAE/EqO,EAASC,EAAK,IACd0E,EAA6B,SAApBnS,EAAO0M,SAChB0F,EAAepH,EAAsB/C,GACrCoK,EAAarH,EAAsBhL,GACnCsS,EAAe1F,EAAgB3E,GAE/B8H,EAAS1D,EAAyBrM,GAClCuS,EAAiBzW,WAAWiU,EAAOwC,gBACnCC,EAAkB1W,WAAWiU,EAAOyC,iBAGpCN,GAAiBC,IACnBE,EAAW3C,IAAM7U,KAAKwV,IAAIgC,EAAW3C,IAAK,GAC1C2C,EAAWzC,KAAO/U,KAAKwV,IAAIgC,EAAWzC,KAAM,IAE9C,IAAI6B,EAAUD,EAAc,CAC1B9B,IAAK0C,EAAa1C,IAAM2C,EAAW3C,IAAM6C,EACzC3C,KAAMwC,EAAaxC,KAAOyC,EAAWzC,KAAO4C,EAC5ChC,MAAO4B,EAAa5B,MACpBD,OAAQ6B,EAAa7B,SASvB,GAPAkB,EAAQgB,UAAY,EACpBhB,EAAQiB,WAAa,GAMhBlF,GAAU2E,EAAQ,CACrB,IAAIM,EAAY3W,WAAWiU,EAAO0C,WAC9BC,EAAa5W,WAAWiU,EAAO2C,YAEnCjB,EAAQ/B,KAAO6C,EAAiBE,EAChChB,EAAQ9B,QAAU4C,EAAiBE,EACnChB,EAAQ7B,MAAQ4C,EAAkBE,EAClCjB,EAAQ5B,OAAS2C,EAAkBE,EAGnCjB,EAAQgB,UAAYA,EACpBhB,EAAQiB,WAAaA,EAOvB,OAJIlF,IAAW0E,EAAgBlS,EAAO4B,SAAS0Q,GAAgBtS,IAAWsS,GAA0C,SAA1BA,EAAa5F,YACrG+E,EAAUrC,EAAcqC,EAASzR,IAG5ByR,EAGT,SAASkB,EAA8CzX,GACrD,IAAI0X,EAAgBzT,UAAU0D,OAAS,QAAsBmM,IAAjB7P,UAAU,IAAmBA,UAAU,GAE/E+P,EAAOhU,EAAQoR,cAAczO,gBAC7BgV,EAAiBZ,EAAqC/W,EAASgU,GAC/DsB,EAAQ3V,KAAKwV,IAAInB,EAAK0C,YAAarP,OAAOuQ,YAAc,GACxDvC,EAAS1V,KAAKwV,IAAInB,EAAK2C,aAActP,OAAOwQ,aAAe,GAE3DxD,EAAaqD,EAAkC,EAAlB9D,EAAUI,GACvCM,EAAcoD,EAA0C,EAA1B9D,EAAUI,EAAM,QAE9C8D,EAAS,CACXtD,IAAKH,EAAYsD,EAAenD,IAAMmD,EAAeJ,UACrD7C,KAAMJ,EAAaqD,EAAejD,KAAOiD,EAAeH,WACxDlC,MAAOA,EACPD,OAAQA,GAGV,OAAOiB,EAAcwB,GAWvB,SAASC,EAAQ/X,GACf,IAAIwR,EAAWxR,EAAQwR,SACvB,GAAiB,SAAbA,GAAoC,SAAbA,EACzB,OAAO,EAET,GAAsD,UAAlDL,EAAyBnR,EAAS,YACpC,OAAO,EAET,IAAIgD,EAAauO,EAAcvR,GAC/B,QAAKgD,GAGE+U,EAAQ/U,GAWjB,SAASgV,GAA6BhY,GAEpC,IAAKA,IAAYA,EAAQiY,eAAiB1F,IACxC,OAAO1S,SAAS8C,gBAGlB,IADA,IAAIuV,EAAKlY,EAAQiY,cACVC,GAAoD,SAA9C/G,EAAyB+G,EAAI,cACxCA,EAAKA,EAAGD,cAEV,OAAOC,GAAMrY,SAAS8C,gBAcxB,SAASwV,GAAcC,EAAQnG,EAAWoG,EAASC,GACjD,IAAItB,EAAgB/S,UAAU0D,OAAS,QAAsBmM,IAAjB7P,UAAU,IAAmBA,UAAU,GAI/EsU,EAAa,CAAE/D,IAAK,EAAGE,KAAM,GAC7BhC,EAAesE,EAAgBgB,GAA6BI,GAAUtF,EAAuBsF,EAAQpG,EAAiBC,IAG1H,GAA0B,aAAtBqG,EACFC,EAAad,EAA8C/E,EAAcsE,OACpE,CAEL,IAAIwB,OAAiB,EACK,iBAAtBF,EAE8B,UADhCE,EAAiB9G,EAAgBH,EAAcU,KAC5BT,WACjBgH,EAAiBJ,EAAOhH,cAAczO,iBAGxC6V,EAD+B,WAAtBF,EACQF,EAAOhH,cAAczO,gBAErB2V,EAGnB,IAAI/B,EAAUQ,EAAqCyB,EAAgB9F,EAAcsE,GAGjF,GAAgC,SAA5BwB,EAAehH,UAAwBuG,EAAQrF,GAWjD6F,EAAahC,MAXmD,CAChE,IAAIkC,EAAkBrD,EAAegD,EAAOhH,eACxCiE,EAASoD,EAAgBpD,OACzBC,EAAQmD,EAAgBnD,MAE5BiD,EAAW/D,KAAO+B,EAAQ/B,IAAM+B,EAAQgB,UACxCgB,EAAW9D,OAASY,EAASkB,EAAQ/B,IACrC+D,EAAW7D,MAAQ6B,EAAQ7B,KAAO6B,EAAQiB,WAC1Ce,EAAW5D,MAAQW,EAAQiB,EAAQ7B,MASvC,IAAIgE,EAAqC,iBADzCL,EAAUA,GAAW,GAOrB,OALAE,EAAW7D,MAAQgE,EAAkBL,EAAUA,EAAQ3D,MAAQ,EAC/D6D,EAAW/D,KAAOkE,EAAkBL,EAAUA,EAAQ7D,KAAO,EAC7D+D,EAAW5D,OAAS+D,EAAkBL,EAAUA,EAAQ1D,OAAS,EACjE4D,EAAW9D,QAAUiE,EAAkBL,EAAUA,EAAQ5D,QAAU,EAE5D8D,EAGT,SAASI,GAAQC,GAIf,OAHYA,EAAKtD,MACJsD,EAAKvD,OAcpB,SAASwD,GAAqBC,EAAWC,EAASX,EAAQnG,EAAWqG,GACnE,IAAID,EAAUpU,UAAU0D,OAAS,QAAsBmM,IAAjB7P,UAAU,GAAmBA,UAAU,GAAK,EAElF,IAAmC,IAA/B6U,EAAU/M,QAAQ,QACpB,OAAO+M,EAGT,IAAIP,EAAaJ,GAAcC,EAAQnG,EAAWoG,EAASC,GAEvDU,EAAQ,CACVxE,IAAK,CACHc,MAAOiD,EAAWjD,MAClBD,OAAQ0D,EAAQvE,IAAM+D,EAAW/D,KAEnCG,MAAO,CACLW,MAAOiD,EAAW5D,MAAQoE,EAAQpE,MAClCU,OAAQkD,EAAWlD,QAErBZ,OAAQ,CACNa,MAAOiD,EAAWjD,MAClBD,OAAQkD,EAAW9D,OAASsE,EAAQtE,QAEtCC,KAAM,CACJY,MAAOyD,EAAQrE,KAAO6D,EAAW7D,KACjCW,OAAQkD,EAAWlD,SAInB4D,EAAcrX,OAAOsX,KAAKF,GAAOG,KAAI,SAAUlD,GACjD,OAAOpL,EAAS,CACdoL,IAAKA,GACJ+C,EAAM/C,GAAM,CACbmD,KAAMT,GAAQK,EAAM/C,SAErBoD,MAAK,SAAUC,EAAGC,GACnB,OAAOA,EAAEH,KAAOE,EAAEF,QAGhBI,EAAgBP,EAAYvK,QAAO,SAAU+K,GAC/C,IAAInE,EAAQmE,EAAMnE,MACdD,EAASoE,EAAMpE,OACnB,OAAOC,GAAS8C,EAAO1B,aAAerB,GAAU+C,EAAOzB,gBAGrD+C,EAAoBF,EAAc7R,OAAS,EAAI6R,EAAc,GAAGvD,IAAMgD,EAAY,GAAGhD,IAErF0D,EAAYb,EAAUhY,MAAM,KAAK,GAErC,OAAO4Y,GAAqBC,EAAY,IAAMA,EAAY,IAa5D,SAASC,GAAoBC,EAAOzB,EAAQnG,GAC1C,IAAI+E,EAAgB/S,UAAU0D,OAAS,QAAsBmM,IAAjB7P,UAAU,GAAmBA,UAAU,GAAK,KAEpF6V,EAAqB9C,EAAgBgB,GAA6BI,GAAUtF,EAAuBsF,EAAQpG,EAAiBC,IAChI,OAAO8E,EAAqC9E,EAAW6H,EAAoB9C,GAU7E,SAAS+C,GAAc/Z,GACrB,IACI6U,EADS7U,EAAQoR,cAAcC,YACfC,iBAAiBtR,GACjCga,EAAIpZ,WAAWiU,EAAO0C,WAAa,GAAK3W,WAAWiU,EAAOoF,cAAgB,GAC1EC,EAAItZ,WAAWiU,EAAO2C,YAAc,GAAK5W,WAAWiU,EAAOsF,aAAe,GAK9E,MAJa,CACX7E,MAAOtV,EAAQ6W,YAAcqD,EAC7B7E,OAAQrV,EAAQgB,aAAegZ,GAYnC,SAASI,GAAqBtB,GAC5B,IAAIuB,EAAO,CAAE3F,KAAM,QAASC,MAAO,OAAQF,OAAQ,MAAOD,IAAK,UAC/D,OAAOsE,EAAUwB,QAAQ,0BAA0B,SAAUC,GAC3D,OAAOF,EAAKE,MAchB,SAASC,GAAiBpC,EAAQqC,EAAkB3B,GAClDA,EAAYA,EAAUhY,MAAM,KAAK,GAGjC,IAAI4Z,EAAaX,GAAc3B,GAG3BuC,EAAgB,CAClBrF,MAAOoF,EAAWpF,MAClBD,OAAQqF,EAAWrF,QAIjBuF,GAAoD,IAA1C,CAAC,QAAS,QAAQ7O,QAAQ+M,GACpC+B,EAAWD,EAAU,MAAQ,OAC7BE,EAAgBF,EAAU,OAAS,MACnCG,EAAcH,EAAU,SAAW,QACnCI,EAAwBJ,EAAqB,QAAX,SAStC,OAPAD,EAAcE,GAAYJ,EAAiBI,GAAYJ,EAAiBM,GAAe,EAAIL,EAAWK,GAAe,EAEnHJ,EAAcG,GADZhC,IAAcgC,EACeL,EAAiBK,GAAiBJ,EAAWM,GAE7CP,EAAiBL,GAAqBU,IAGhEH,EAYT,SAASM,GAAKC,EAAKC,GAEjB,OAAIC,MAAMvZ,UAAUoZ,KACXC,EAAID,KAAKE,GAIXD,EAAIxM,OAAOyM,GAAO,GAqC3B,SAASE,GAAaC,EAAW5V,EAAM6V,GAoBrC,YAnB8BzH,IAATyH,EAAqBD,EAAYA,EAAU/T,MAAM,EA1BxE,SAAmB2T,EAAKM,EAAMvZ,GAE5B,GAAImZ,MAAMvZ,UAAU4Z,UAClB,OAAOP,EAAIO,WAAU,SAAUC,GAC7B,OAAOA,EAAIF,KAAUvZ,KAKzB,IAAIG,EAAQ6Y,GAAKC,GAAK,SAAU7Z,GAC9B,OAAOA,EAAIma,KAAUvZ,KAEvB,OAAOiZ,EAAInP,QAAQ3J,GAcsDqZ,CAAUH,EAAW,OAAQC,KAEvFI,SAAQ,SAAUpH,GAC3BA,EAAmB,UAErBqH,QAAQC,KAAK,yDAEf,IAAIzY,EAAKmR,EAAmB,UAAKA,EAASnR,GACtCmR,EAASuH,SAAW7K,EAAW7N,KAIjCsC,EAAK6Q,QAAQ6B,OAAS9B,EAAc5Q,EAAK6Q,QAAQ6B,QACjD1S,EAAK6Q,QAAQtE,UAAYqE,EAAc5Q,EAAK6Q,QAAQtE,WAEpDvM,EAAOtC,EAAGsC,EAAM6O,OAIb7O,EAUT,SAASqW,KAEP,IAAI9c,KAAK4a,MAAMmC,YAAf,CAIA,IAAItW,EAAO,CACT8P,SAAUvW,KACV4V,OAAQ,GACRoH,YAAa,GACbC,WAAY,GACZC,SAAS,EACT5F,QAAS,IAIX7Q,EAAK6Q,QAAQtE,UAAY2H,GAAoB3a,KAAK4a,MAAO5a,KAAKmZ,OAAQnZ,KAAKgT,UAAWhT,KAAKmd,QAAQC,eAKnG3W,EAAKoT,UAAYD,GAAqB5Z,KAAKmd,QAAQtD,UAAWpT,EAAK6Q,QAAQtE,UAAWhT,KAAKmZ,OAAQnZ,KAAKgT,UAAWhT,KAAKmd,QAAQd,UAAUgB,KAAKhE,kBAAmBrZ,KAAKmd,QAAQd,UAAUgB,KAAKjE,SAG9L3S,EAAK6W,kBAAoB7W,EAAKoT,UAE9BpT,EAAK2W,cAAgBpd,KAAKmd,QAAQC,cAGlC3W,EAAK6Q,QAAQ6B,OAASoC,GAAiBvb,KAAKmZ,OAAQ1S,EAAK6Q,QAAQtE,UAAWvM,EAAKoT,WAEjFpT,EAAK6Q,QAAQ6B,OAAOoE,SAAWvd,KAAKmd,QAAQC,cAAgB,QAAU,WAGtE3W,EAAO2V,GAAapc,KAAKqc,UAAW5V,GAI/BzG,KAAK4a,MAAM4C,UAIdxd,KAAKmd,QAAQM,SAAShX,IAHtBzG,KAAK4a,MAAM4C,WAAY,EACvBxd,KAAKmd,QAAQO,SAASjX,KAY1B,SAASkX,GAAkBtB,EAAWuB,GACpC,OAAOvB,EAAUwB,MAAK,SAAUlE,GAC9B,IAAImE,EAAOnE,EAAKmE,KAEhB,OADcnE,EAAKkD,SACDiB,IAASF,KAW/B,SAASG,GAAyBrb,GAIhC,IAHA,IAAIsb,EAAW,EAAC,EAAO,KAAM,SAAU,MAAO,KAC1CC,EAAYvb,EAASwb,OAAO,GAAG1a,cAAgBd,EAAS4F,MAAM,GAEzDE,EAAI,EAAGA,EAAIwV,EAAStV,OAAQF,IAAK,CACxC,IAAI/H,EAASud,EAASxV,GAClB2V,EAAU1d,EAAS,GAAKA,EAASwd,EAAYvb,EACjD,GAA4C,oBAAjC9B,SAAS8R,KAAKlC,MAAM2N,GAC7B,OAAOA,EAGX,OAAO,KAQT,SAASC,KAsBP,OArBApe,KAAK4a,MAAMmC,aAAc,EAGrBY,GAAkB3d,KAAKqc,UAAW,gBACpCrc,KAAKmZ,OAAOkF,gBAAgB,eAC5Bre,KAAKmZ,OAAO3I,MAAM+M,SAAW,GAC7Bvd,KAAKmZ,OAAO3I,MAAM+E,IAAM,GACxBvV,KAAKmZ,OAAO3I,MAAMiF,KAAO,GACzBzV,KAAKmZ,OAAO3I,MAAMkF,MAAQ,GAC1B1V,KAAKmZ,OAAO3I,MAAMgF,OAAS,GAC3BxV,KAAKmZ,OAAO3I,MAAM8N,WAAa,GAC/Bte,KAAKmZ,OAAO3I,MAAMuN,GAAyB,cAAgB,IAG7D/d,KAAKue,wBAIDve,KAAKmd,QAAQqB,iBACfxe,KAAKmZ,OAAOpV,WAAW0a,YAAYze,KAAKmZ,QAEnCnZ,KAQT,SAAS0e,GAAU3d,GACjB,IAAIoR,EAAgBpR,EAAQoR,cAC5B,OAAOA,EAAgBA,EAAcC,YAAchK,OAoBrD,SAASuW,GAAoB3L,EAAWmK,EAASvC,EAAOgE,GAEtDhE,EAAMgE,YAAcA,EACpBF,GAAU1L,GAAW6L,iBAAiB,SAAUjE,EAAMgE,YAAa,CAAEE,SAAS,IAG9E,IAAIC,EAAgBtM,EAAgBO,GAKpC,OA5BF,SAASgM,EAAsB7G,EAAc7T,EAAO2a,EAAUC,GAC5D,IAAIC,EAAmC,SAA1BhH,EAAa5F,SACtB5N,EAASwa,EAAShH,EAAahG,cAAcC,YAAc+F,EAC/DxT,EAAOka,iBAAiBva,EAAO2a,EAAU,CAAEH,SAAS,IAE/CK,GACHH,EAAsBvM,EAAgB9N,EAAOZ,YAAaO,EAAO2a,EAAUC,GAE7EA,EAActP,KAAKjL,GAgBnBqa,CAAsBD,EAAe,SAAUnE,EAAMgE,YAAahE,EAAMsE,eACxEtE,EAAMmE,cAAgBA,EACtBnE,EAAMwE,eAAgB,EAEfxE,EAST,SAASyE,KACFrf,KAAK4a,MAAMwE,gBACdpf,KAAK4a,MAAQ+D,GAAoB3e,KAAKgT,UAAWhT,KAAKmd,QAASnd,KAAK4a,MAAO5a,KAAKsf,iBAkCpF,SAASf,KAxBT,IAA8BvL,EAAW4H,EAyBnC5a,KAAK4a,MAAMwE,gBACbG,qBAAqBvf,KAAKsf,gBAC1Btf,KAAK4a,OA3BqB5H,EA2BQhT,KAAKgT,UA3BF4H,EA2Ba5a,KAAK4a,MAzBzD8D,GAAU1L,GAAWwM,oBAAoB,SAAU5E,EAAMgE,aAGzDhE,EAAMsE,cAAcxC,SAAQ,SAAU/X,GACpCA,EAAO6a,oBAAoB,SAAU5E,EAAMgE,gBAI7ChE,EAAMgE,YAAc,KACpBhE,EAAMsE,cAAgB,GACtBtE,EAAMmE,cAAgB,KACtBnE,EAAMwE,eAAgB,EACfxE,IAwBT,SAAS6E,GAAUC,GACjB,MAAa,KAANA,IAAaC,MAAMhe,WAAW+d,KAAOE,SAASF,GAWvD,SAASG,GAAU9e,EAAS6U,GAC1BjT,OAAOsX,KAAKrE,GAAQ8G,SAAQ,SAAUH,GACpC,IAAIuD,EAAO,IAEkE,IAAzE,CAAC,QAAS,SAAU,MAAO,QAAS,SAAU,QAAQhT,QAAQyP,IAAgBkD,GAAU7J,EAAO2G,MACjGuD,EAAO,MAET/e,EAAQyP,MAAM+L,GAAQ3G,EAAO2G,GAAQuD,KAgIzC,IAAIC,GAAYxO,GAAa,WAAWjO,KAAK+G,UAAUqH,WA8GvD,SAASsO,GAAmB3D,EAAW4D,EAAgBC,GACrD,IAAIC,EAAanE,GAAKK,GAAW,SAAU1C,GAEzC,OADWA,EAAKmE,OACAmC,KAGdG,IAAeD,GAAc9D,EAAUwB,MAAK,SAAUvI,GACxD,OAAOA,EAASwI,OAASoC,GAAiB5K,EAASuH,SAAWvH,EAAStB,MAAQmM,EAAWnM,SAG5F,IAAKoM,EAAY,CACf,IAAIC,EAAc,IAAMJ,EAAiB,IACrCK,EAAY,IAAMJ,EAAgB,IACtCvD,QAAQC,KAAK0D,EAAY,4BAA8BD,EAAc,4DAA8DA,EAAc,KAEnJ,OAAOD,EAoIT,IAAIG,GAAa,CAAC,aAAc,OAAQ,WAAY,YAAa,MAAO,UAAW,cAAe,QAAS,YAAa,aAAc,SAAU,eAAgB,WAAY,OAAQ,cAGhLC,GAAkBD,GAAWjY,MAAM,GAYvC,SAASmY,GAAU5G,GACjB,IAAI6G,EAAU1b,UAAU0D,OAAS,QAAsBmM,IAAjB7P,UAAU,IAAmBA,UAAU,GAEzEuG,EAAQiV,GAAgB1T,QAAQ+M,GAChCoC,EAAMuE,GAAgBlY,MAAMiD,EAAQ,GAAGoV,OAAOH,GAAgBlY,MAAM,EAAGiD,IAC3E,OAAOmV,EAAUzE,EAAI2E,UAAY3E,EAGnC,IAAI4E,GACI,OADJA,GAES,YAFTA,GAGgB,mBAiMpB,SAASC,GAAYjI,EAAQ6C,EAAeF,EAAkBuF,GAC5D,IAAIzJ,EAAU,CAAC,EAAG,GAKd0J,GAA0D,IAA9C,CAAC,QAAS,QAAQlU,QAAQiU,GAItCE,EAAYpI,EAAOhX,MAAM,WAAWqY,KAAI,SAAUgH,GACpD,OAAOA,EAAK/f,UAKVggB,EAAUF,EAAUnU,QAAQkP,GAAKiF,GAAW,SAAUC,GACxD,OAAgC,IAAzBA,EAAKE,OAAO,YAGjBH,EAAUE,KAAiD,IAArCF,EAAUE,GAASrU,QAAQ,MACnD6P,QAAQC,KAAK,gFAKf,IAAIyE,EAAa,cACbC,GAAmB,IAAbH,EAAiB,CAACF,EAAU3Y,MAAM,EAAG6Y,GAASR,OAAO,CAACM,EAAUE,GAAStf,MAAMwf,GAAY,KAAM,CAACJ,EAAUE,GAAStf,MAAMwf,GAAY,IAAIV,OAAOM,EAAU3Y,MAAM6Y,EAAU,KAAO,CAACF,GAqC9L,OAlCAK,EAAMA,EAAIpH,KAAI,SAAUqH,EAAIhW,GAE1B,IAAIuQ,GAAyB,IAAVvQ,GAAeyV,EAAYA,GAAa,SAAW,QAClEQ,GAAoB,EACxB,OAAOD,EAGNE,QAAO,SAAUpH,EAAGC,GACnB,MAAwB,KAApBD,EAAEA,EAAE3R,OAAS,KAAwC,IAA3B,CAAC,IAAK,KAAKoE,QAAQwN,IAC/CD,EAAEA,EAAE3R,OAAS,GAAK4R,EAClBkH,GAAoB,EACbnH,GACEmH,GACTnH,EAAEA,EAAE3R,OAAS,IAAM4R,EACnBkH,GAAoB,EACbnH,GAEAA,EAAEsG,OAAOrG,KAEjB,IAEFJ,KAAI,SAAUwH,GACb,OAxGN,SAAiBA,EAAK5F,EAAaJ,EAAeF,GAEhD,IAAI3Z,EAAQ6f,EAAIve,MAAM,6BAClBH,GAASnB,EAAM,GACfie,EAAOje,EAAM,GAGjB,IAAKmB,EACH,OAAO0e,EAGT,GAA0B,IAAtB5B,EAAKhT,QAAQ,KAAY,CAC3B,IAAI/L,OAAU,EACd,OAAQ+e,GACN,IAAK,KACH/e,EAAU2a,EACV,MACF,IAAK,IACL,IAAK,KACL,QACE3a,EAAUya,EAId,OADWnE,EAActW,GACb+a,GAAe,IAAM9Y,EAC5B,GAAa,OAAT8c,GAA0B,OAATA,EAQ1B,OALa,OAATA,EACKpf,KAAKwV,IAAItV,SAAS8C,gBAAgBgU,aAActP,OAAOwQ,aAAe,GAEtElY,KAAKwV,IAAItV,SAAS8C,gBAAgB+T,YAAarP,OAAOuQ,YAAc,IAE/D,IAAM3V,EAIpB,OAAOA,EAmEE2e,CAAQD,EAAK5F,EAAaJ,EAAeF,UAKhDkB,SAAQ,SAAU6E,EAAIhW,GACxBgW,EAAG7E,SAAQ,SAAUwE,EAAMU,GACrBnC,GAAUyB,KACZ5J,EAAQ/L,IAAU2V,GAA2B,MAAnBK,EAAGK,EAAS,IAAc,EAAI,UAIvDtK,EA2OT,IAkWIuK,GAAW,CAKbhI,UAAW,SAMXuD,eAAe,EAMfgC,eAAe,EAOfZ,iBAAiB,EAQjBd,SAAU,aAUVD,SAAU,aAOVpB,UAnZc,CASdyF,MAAO,CAEL9N,MAAO,IAEP6I,SAAS,EAET1Y,GA9HJ,SAAesC,GACb,IAAIoT,EAAYpT,EAAKoT,UACjBkH,EAAgBlH,EAAUhY,MAAM,KAAK,GACrCkgB,EAAiBlI,EAAUhY,MAAM,KAAK,GAG1C,GAAIkgB,EAAgB,CAClB,IAAIC,EAAgBvb,EAAK6Q,QACrBtE,EAAYgP,EAAchP,UAC1BmG,EAAS6I,EAAc7I,OAEvB8I,GAA2D,IAA9C,CAAC,SAAU,OAAOnV,QAAQiU,GACvCnM,EAAOqN,EAAa,OAAS,MAC7BnG,EAAcmG,EAAa,QAAU,SAErCC,EAAe,CACjB9V,MAAO2K,EAAe,GAAInC,EAAM5B,EAAU4B,IAC1CnI,IAAKsK,EAAe,GAAInC,EAAM5B,EAAU4B,GAAQ5B,EAAU8I,GAAe3C,EAAO2C,KAGlFrV,EAAK6Q,QAAQ6B,OAASvN,EAAS,GAAIuN,EAAQ+I,EAAaH,IAG1D,OAAOtb,IAgJPoS,OAAQ,CAEN7E,MAAO,IAEP6I,SAAS,EAET1Y,GA7RJ,SAAgBsC,EAAMkT,GACpB,IAAId,EAASc,EAAKd,OACdgB,EAAYpT,EAAKoT,UACjBmI,EAAgBvb,EAAK6Q,QACrB6B,EAAS6I,EAAc7I,OACvBnG,EAAYgP,EAAchP,UAE1B+N,EAAgBlH,EAAUhY,MAAM,KAAK,GAErCyV,OAAU,EAsBd,OApBEA,EADEmI,IAAW5G,GACH,EAAEA,EAAQ,GAEViI,GAAYjI,EAAQM,EAAQnG,EAAW+N,GAG7B,SAAlBA,GACF5H,EAAO5D,KAAO+B,EAAQ,GACtB6B,EAAO1D,MAAQ6B,EAAQ,IACI,UAAlByJ,GACT5H,EAAO5D,KAAO+B,EAAQ,GACtB6B,EAAO1D,MAAQ6B,EAAQ,IACI,QAAlByJ,GACT5H,EAAO1D,MAAQ6B,EAAQ,GACvB6B,EAAO5D,KAAO+B,EAAQ,IACK,WAAlByJ,IACT5H,EAAO1D,MAAQ6B,EAAQ,GACvB6B,EAAO5D,KAAO+B,EAAQ,IAGxB7Q,EAAK0S,OAASA,EACP1S,GAkQLoS,OAAQ,GAoBVsJ,gBAAiB,CAEfnO,MAAO,IAEP6I,SAAS,EAET1Y,GAlRJ,SAAyBsC,EAAM0W,GAC7B,IAAI9D,EAAoB8D,EAAQ9D,mBAAqB9F,EAAgB9M,EAAK8P,SAAS4C,QAK/E1S,EAAK8P,SAASvD,YAAcqG,IAC9BA,EAAoB9F,EAAgB8F,IAMtC,IAAI+I,EAAgBrE,GAAyB,aACzCsE,EAAe5b,EAAK8P,SAAS4C,OAAO3I,MACpC+E,EAAM8M,EAAa9M,IACnBE,EAAO4M,EAAa5M,KACpB6M,EAAYD,EAAaD,GAE7BC,EAAa9M,IAAM,GACnB8M,EAAa5M,KAAO,GACpB4M,EAAaD,GAAiB,GAE9B,IAAI9I,EAAaJ,GAAczS,EAAK8P,SAAS4C,OAAQ1S,EAAK8P,SAASvD,UAAWmK,EAAQ/D,QAASC,EAAmB5S,EAAK2W,eAIvHiF,EAAa9M,IAAMA,EACnB8M,EAAa5M,KAAOA,EACpB4M,EAAaD,GAAiBE,EAE9BnF,EAAQ7D,WAAaA,EAErB,IAAItF,EAAQmJ,EAAQoF,SAChBpJ,EAAS1S,EAAK6Q,QAAQ6B,OAEtB+C,EAAQ,CACVsG,QAAS,SAAiB3I,GACxB,IAAI7W,EAAQmW,EAAOU,GAInB,OAHIV,EAAOU,GAAaP,EAAWO,KAAesD,EAAQsF,sBACxDzf,EAAQtC,KAAKwV,IAAIiD,EAAOU,GAAYP,EAAWO,KAE1C9C,EAAe,GAAI8C,EAAW7W,IAEvC0f,UAAW,SAAmB7I,GAC5B,IAAI+B,EAAyB,UAAd/B,EAAwB,OAAS,MAC5C7W,EAAQmW,EAAOyC,GAInB,OAHIzC,EAAOU,GAAaP,EAAWO,KAAesD,EAAQsF,sBACxDzf,EAAQtC,KAAKiiB,IAAIxJ,EAAOyC,GAAWtC,EAAWO,IAA4B,UAAdA,EAAwBV,EAAO9C,MAAQ8C,EAAO/C,UAErGW,EAAe,GAAI6E,EAAU5Y,KAWxC,OAPAgR,EAAM0I,SAAQ,SAAU7C,GACtB,IAAIjF,GAA+C,IAAxC,CAAC,OAAQ,OAAO9H,QAAQ+M,GAAoB,UAAY,YACnEV,EAASvN,EAAS,GAAIuN,EAAQ+C,EAAMtH,GAAMiF,OAG5CpT,EAAK6Q,QAAQ6B,OAASA,EAEf1S,GA2NL8b,SAAU,CAAC,OAAQ,QAAS,MAAO,UAOnCnJ,QAAS,EAMTC,kBAAmB,gBAYrBuJ,aAAc,CAEZ5O,MAAO,IAEP6I,SAAS,EAET1Y,GAlgBJ,SAAsBsC,GACpB,IAAIub,EAAgBvb,EAAK6Q,QACrB6B,EAAS6I,EAAc7I,OACvBnG,EAAYgP,EAAchP,UAE1B6G,EAAYpT,EAAKoT,UAAUhY,MAAM,KAAK,GACtCghB,EAAQniB,KAAKmiB,MACbZ,GAAuD,IAA1C,CAAC,MAAO,UAAUnV,QAAQ+M,GACvCjF,EAAOqN,EAAa,QAAU,SAC9Ba,EAASb,EAAa,OAAS,MAC/BnG,EAAcmG,EAAa,QAAU,SASzC,OAPI9I,EAAOvE,GAAQiO,EAAM7P,EAAU8P,MACjCrc,EAAK6Q,QAAQ6B,OAAO2J,GAAUD,EAAM7P,EAAU8P,IAAW3J,EAAO2C,IAE9D3C,EAAO2J,GAAUD,EAAM7P,EAAU4B,MACnCnO,EAAK6Q,QAAQ6B,OAAO2J,GAAUD,EAAM7P,EAAU4B,KAGzCnO,IA4fPsc,MAAO,CAEL/O,MAAO,IAEP6I,SAAS,EAET1Y,GApxBJ,SAAesC,EAAM0W,GACnB,IAAI6F,EAGJ,IAAKhD,GAAmBvZ,EAAK8P,SAAS8F,UAAW,QAAS,gBACxD,OAAO5V,EAGT,IAAIwc,EAAe9F,EAAQpc,QAG3B,GAA4B,iBAAjBkiB,GAIT,KAHAA,EAAexc,EAAK8P,SAAS4C,OAAO/X,cAAc6hB,IAIhD,OAAOxc,OAKT,IAAKA,EAAK8P,SAAS4C,OAAO1R,SAASwb,GAEjC,OADAtG,QAAQC,KAAK,iEACNnW,EAIX,IAAIoT,EAAYpT,EAAKoT,UAAUhY,MAAM,KAAK,GACtCmgB,EAAgBvb,EAAK6Q,QACrB6B,EAAS6I,EAAc7I,OACvBnG,EAAYgP,EAAchP,UAE1BiP,GAAuD,IAA1C,CAAC,OAAQ,SAASnV,QAAQ+M,GAEvCpR,EAAMwZ,EAAa,SAAW,QAC9BiB,EAAkBjB,EAAa,MAAQ,OACvCrN,EAAOsO,EAAgB9f,cACvB+f,EAAUlB,EAAa,OAAS,MAChCa,EAASb,EAAa,SAAW,QACjCmB,EAAmBtI,GAAcmI,GAAcxa,GAQ/CuK,EAAU8P,GAAUM,EAAmBjK,EAAOvE,KAChDnO,EAAK6Q,QAAQ6B,OAAOvE,IAASuE,EAAOvE,IAAS5B,EAAU8P,GAAUM,IAG/DpQ,EAAU4B,GAAQwO,EAAmBjK,EAAO2J,KAC9Crc,EAAK6Q,QAAQ6B,OAAOvE,IAAS5B,EAAU4B,GAAQwO,EAAmBjK,EAAO2J,IAE3Erc,EAAK6Q,QAAQ6B,OAAS9B,EAAc5Q,EAAK6Q,QAAQ6B,QAGjD,IAAIkK,EAASrQ,EAAU4B,GAAQ5B,EAAUvK,GAAO,EAAI2a,EAAmB,EAInE5hB,EAAM0Q,EAAyBzL,EAAK8P,SAAS4C,QAC7CmK,EAAmB3hB,WAAWH,EAAI,SAAW0hB,IAC7CK,EAAmB5hB,WAAWH,EAAI,SAAW0hB,EAAkB,UAC/DM,EAAYH,EAAS5c,EAAK6Q,QAAQ6B,OAAOvE,GAAQ0O,EAAmBC,EAQxE,OALAC,EAAY9iB,KAAKwV,IAAIxV,KAAKiiB,IAAIxJ,EAAO1Q,GAAO2a,EAAkBI,GAAY,GAE1E/c,EAAKwc,aAAeA,EACpBxc,EAAK6Q,QAAQyL,OAAmChM,EAA1BiM,EAAsB,GAAwCpO,EAAMlU,KAAK+iB,MAAMD,IAAazM,EAAeiM,EAAqBG,EAAS,IAAKH,GAE7Jvc,GA8sBL1F,QAAS,aAcXsc,KAAM,CAEJrJ,MAAO,IAEP6I,SAAS,EAET1Y,GA5oBJ,SAAcsC,EAAM0W,GAElB,GAAIQ,GAAkBlX,EAAK8P,SAAS8F,UAAW,SAC7C,OAAO5V,EAGT,GAAIA,EAAKyW,SAAWzW,EAAKoT,YAAcpT,EAAK6W,kBAE1C,OAAO7W,EAGT,IAAI6S,EAAaJ,GAAczS,EAAK8P,SAAS4C,OAAQ1S,EAAK8P,SAASvD,UAAWmK,EAAQ/D,QAAS+D,EAAQ9D,kBAAmB5S,EAAK2W,eAE3HvD,EAAYpT,EAAKoT,UAAUhY,MAAM,KAAK,GACtC6hB,EAAoBvI,GAAqBtB,GACzCa,EAAYjU,EAAKoT,UAAUhY,MAAM,KAAK,IAAM,GAE5C8hB,EAAY,GAEhB,OAAQxG,EAAQyG,UACd,KAAK/C,GACH8C,EAAY,CAAC9J,EAAW6J,GACxB,MACF,KAAK7C,GACH8C,EAAYlD,GAAU5G,GACtB,MACF,KAAKgH,GACH8C,EAAYlD,GAAU5G,GAAW,GACjC,MACF,QACE8J,EAAYxG,EAAQyG,SAyDxB,OAtDAD,EAAUjH,SAAQ,SAAUmH,EAAMtY,GAChC,GAAIsO,IAAcgK,GAAQF,EAAUjb,SAAW6C,EAAQ,EACrD,OAAO9E,EAGToT,EAAYpT,EAAKoT,UAAUhY,MAAM,KAAK,GACtC6hB,EAAoBvI,GAAqBtB,GAEzC,IAAI6B,EAAgBjV,EAAK6Q,QAAQ6B,OAC7B2K,EAAard,EAAK6Q,QAAQtE,UAG1B6P,EAAQniB,KAAKmiB,MACbkB,EAA4B,SAAdlK,GAAwBgJ,EAAMnH,EAAchG,OAASmN,EAAMiB,EAAWrO,OAAuB,UAAdoE,GAAyBgJ,EAAMnH,EAAcjG,MAAQoN,EAAMiB,EAAWpO,QAAwB,QAAdmE,GAAuBgJ,EAAMnH,EAAclG,QAAUqN,EAAMiB,EAAWvO,MAAsB,WAAdsE,GAA0BgJ,EAAMnH,EAAcnG,KAAOsN,EAAMiB,EAAWtO,QAEjUwO,EAAgBnB,EAAMnH,EAAcjG,MAAQoN,EAAMvJ,EAAW7D,MAC7DwO,EAAiBpB,EAAMnH,EAAchG,OAASmN,EAAMvJ,EAAW5D,OAC/DwO,EAAerB,EAAMnH,EAAcnG,KAAOsN,EAAMvJ,EAAW/D,KAC3D4O,EAAkBtB,EAAMnH,EAAclG,QAAUqN,EAAMvJ,EAAW9D,QAEjE4O,EAAoC,SAAdvK,GAAwBmK,GAA+B,UAAdnK,GAAyBoK,GAAgC,QAAdpK,GAAuBqK,GAA8B,WAAdrK,GAA0BsK,EAG3KlC,GAAuD,IAA1C,CAAC,MAAO,UAAUnV,QAAQ+M,GAGvCwK,IAA0BlH,EAAQmH,iBAAmBrC,GAA4B,UAAdvH,GAAyBsJ,GAAiB/B,GAA4B,QAAdvH,GAAuBuJ,IAAmBhC,GAA4B,UAAdvH,GAAyBwJ,IAAiBjC,GAA4B,QAAdvH,GAAuByJ,GAGlQI,IAA8BpH,EAAQqH,0BAA4BvC,GAA4B,UAAdvH,GAAyBuJ,GAAkBhC,GAA4B,QAAdvH,GAAuBsJ,IAAkB/B,GAA4B,UAAdvH,GAAyByJ,IAAoBlC,GAA4B,QAAdvH,GAAuBwJ,GAElRO,EAAmBJ,GAAyBE,GAE5CR,GAAeK,GAAuBK,KAExChe,EAAKyW,SAAU,GAEX6G,GAAeK,KACjBvK,EAAY8J,EAAUpY,EAAQ,IAG5BkZ,IACF/J,EAvJR,SAA8BA,GAC5B,MAAkB,QAAdA,EACK,QACgB,UAAdA,EACF,MAEFA,EAiJWgK,CAAqBhK,IAGnCjU,EAAKoT,UAAYA,GAAaa,EAAY,IAAMA,EAAY,IAI5DjU,EAAK6Q,QAAQ6B,OAASvN,EAAS,GAAInF,EAAK6Q,QAAQ6B,OAAQoC,GAAiB9U,EAAK8P,SAAS4C,OAAQ1S,EAAK6Q,QAAQtE,UAAWvM,EAAKoT,YAE5HpT,EAAO2V,GAAa3V,EAAK8P,SAAS8F,UAAW5V,EAAM,YAGhDA,GA4jBLmd,SAAU,OAKVxK,QAAS,EAOTC,kBAAmB,WAQnBiL,gBAAgB,EAQhBE,yBAAyB,GAU3BG,MAAO,CAEL3Q,MAAO,IAEP6I,SAAS,EAET1Y,GArQJ,SAAesC,GACb,IAAIoT,EAAYpT,EAAKoT,UACjBkH,EAAgBlH,EAAUhY,MAAM,KAAK,GACrCmgB,EAAgBvb,EAAK6Q,QACrB6B,EAAS6I,EAAc7I,OACvBnG,EAAYgP,EAAchP,UAE1B2I,GAAwD,IAA9C,CAAC,OAAQ,SAAS7O,QAAQiU,GAEpC6D,GAA6D,IAA5C,CAAC,MAAO,QAAQ9X,QAAQiU,GAO7C,OALA5H,EAAOwC,EAAU,OAAS,OAAS3I,EAAU+N,IAAkB6D,EAAiBzL,EAAOwC,EAAU,QAAU,UAAY,GAEvHlV,EAAKoT,UAAYsB,GAAqBtB,GACtCpT,EAAK6Q,QAAQ6B,OAAS9B,EAAc8B,GAE7B1S,IAkQPuJ,KAAM,CAEJgE,MAAO,IAEP6I,SAAS,EAET1Y,GA9TJ,SAAcsC,GACZ,IAAKuZ,GAAmBvZ,EAAK8P,SAAS8F,UAAW,OAAQ,mBACvD,OAAO5V,EAGT,IAAIqT,EAAUrT,EAAK6Q,QAAQtE,UACvB6R,EAAQ7I,GAAKvV,EAAK8P,SAAS8F,WAAW,SAAU/G,GAClD,MAAyB,oBAAlBA,EAASwI,QACfxE,WAEH,GAAIQ,EAAQtE,OAASqP,EAAMtP,KAAOuE,EAAQrE,KAAOoP,EAAMnP,OAASoE,EAAQvE,IAAMsP,EAAMrP,QAAUsE,EAAQpE,MAAQmP,EAAMpP,KAAM,CAExH,IAAkB,IAAdhP,EAAKuJ,KACP,OAAOvJ,EAGTA,EAAKuJ,MAAO,EACZvJ,EAAKwW,WAAW,uBAAyB,OACpC,CAEL,IAAkB,IAAdxW,EAAKuJ,KACP,OAAOvJ,EAGTA,EAAKuJ,MAAO,EACZvJ,EAAKwW,WAAW,wBAAyB,EAG3C,OAAOxW,IAoTPqe,aAAc,CAEZ9Q,MAAO,IAEP6I,SAAS,EAET1Y,GAtgCJ,SAAsBsC,EAAM0W,GAC1B,IAAIpC,EAAIoC,EAAQpC,EACZE,EAAIkC,EAAQlC,EACZ9B,EAAS1S,EAAK6Q,QAAQ6B,OAItB4L,EAA8B/I,GAAKvV,EAAK8P,SAAS8F,WAAW,SAAU/G,GACxE,MAAyB,eAAlBA,EAASwI,QACfkH,qBACiCnQ,IAAhCkQ,GACFpI,QAAQC,KAAK,iIAEf,IAAIoI,OAAkDnQ,IAAhCkQ,EAA4CA,EAA8B5H,EAAQ6H,gBAEpGvR,EAAeF,EAAgB9M,EAAK8P,SAAS4C,QAC7C8L,EAAmBpU,EAAsB4C,GAGzCmC,EAAS,CACX2H,SAAUpE,EAAOoE,UAGfjG,EA9DN,SAA2B7Q,EAAMye,GAC/B,IAAIlD,EAAgBvb,EAAK6Q,QACrB6B,EAAS6I,EAAc7I,OACvBnG,EAAYgP,EAAchP,UAC1ByQ,EAAQ/iB,KAAK+iB,MACbZ,EAAQniB,KAAKmiB,MAEbsC,EAAU,SAAiBC,GAC7B,OAAOA,GAGLC,EAAiB5B,EAAMzQ,EAAUqD,OACjCiP,EAAc7B,EAAMtK,EAAO9C,OAE3B4L,GAA4D,IAA/C,CAAC,OAAQ,SAASnV,QAAQrG,EAAKoT,WAC5C0L,GAA+C,IAAjC9e,EAAKoT,UAAU/M,QAAQ,KAIrC0Y,EAAuBN,EAAwBjD,GAAcsD,GAH3CF,EAAiB,GAAMC,EAAc,EAGuC7B,EAAQZ,EAAjEsC,EACrCM,EAAqBP,EAAwBzB,EAAV0B,EAEvC,MAAO,CACL1P,KAAM+P,EANWH,EAAiB,GAAM,GAAKC,EAAc,GAAM,IAMtBC,GAAeL,EAAc/L,EAAO1D,KAAO,EAAI0D,EAAO1D,MACjGF,IAAKkQ,EAAkBtM,EAAO5D,KAC9BC,OAAQiQ,EAAkBtM,EAAO3D,QACjCE,MAAO8P,EAAoBrM,EAAOzD,QAoCtBgQ,CAAkBjf,EAAM2B,OAAOud,iBAAmB,IAAM5F,IAElEjK,EAAc,WAANiF,EAAiB,MAAQ,SACjChF,EAAc,UAANkF,EAAgB,OAAS,QAKjC2K,EAAmB7H,GAAyB,aAW5CtI,OAAO,EACPF,OAAM,EAqBV,GAhBIA,EAJU,WAAVO,EAG4B,SAA1BrC,EAAalB,UACRkB,EAAaiE,aAAeJ,EAAQ9B,QAEpCyP,EAAiB7O,OAASkB,EAAQ9B,OAGrC8B,EAAQ/B,IAIZE,EAFU,UAAVM,EAC4B,SAA1BtC,EAAalB,UACPkB,EAAagE,YAAcH,EAAQ5B,OAEnCuP,EAAiB5O,MAAQiB,EAAQ5B,MAGpC4B,EAAQ7B,KAEbuP,GAAmBY,EACrBhQ,EAAOgQ,GAAoB,eAAiBnQ,EAAO,OAASF,EAAM,SAClEK,EAAOE,GAAS,EAChBF,EAAOG,GAAS,EAChBH,EAAO0I,WAAa,gBACf,CAEL,IAAIuH,EAAsB,WAAV/P,GAAsB,EAAI,EACtCgQ,EAAuB,UAAV/P,GAAqB,EAAI,EAC1CH,EAAOE,GAASP,EAAMsQ,EACtBjQ,EAAOG,GAASN,EAAOqQ,EACvBlQ,EAAO0I,WAAaxI,EAAQ,KAAOC,EAIrC,IAAIkH,EAAa,CACf8I,cAAetf,EAAKoT,WAQtB,OAJApT,EAAKwW,WAAarR,EAAS,GAAIqR,EAAYxW,EAAKwW,YAChDxW,EAAKmP,OAAShK,EAAS,GAAIgK,EAAQnP,EAAKmP,QACxCnP,EAAKuW,YAAcpR,EAAS,GAAInF,EAAK6Q,QAAQyL,MAAOtc,EAAKuW,aAElDvW,GAo7BLue,iBAAiB,EAMjBjK,EAAG,SAMHE,EAAG,SAkBL+K,WAAY,CAEVhS,MAAO,IAEP6I,SAAS,EAET1Y,GAzpCJ,SAAoBsC,GApBpB,IAAuB1F,EAASkc,EAoC9B,OAXA4C,GAAUpZ,EAAK8P,SAAS4C,OAAQ1S,EAAKmP,QAzBhB7U,EA6BP0F,EAAK8P,SAAS4C,OA7BE8D,EA6BMxW,EAAKwW,WA5BzCta,OAAOsX,KAAKgD,GAAYP,SAAQ,SAAUH,IAE1B,IADFU,EAAWV,GAErBxb,EAAQ8G,aAAa0U,EAAMU,EAAWV,IAEtCxb,EAAQsd,gBAAgB9B,MA0BxB9V,EAAKwc,cAAgBtgB,OAAOsX,KAAKxT,EAAKuW,aAAatU,QACrDmX,GAAUpZ,EAAKwc,aAAcxc,EAAKuW,aAG7BvW,GA2oCLwf,OA9nCJ,SAA0BjT,EAAWmG,EAAQgE,EAAS+I,EAAiBtL,GAErE,IAAIY,EAAmBb,GAAoBC,EAAOzB,EAAQnG,EAAWmK,EAAQC,eAKzEvD,EAAYD,GAAqBuD,EAAQtD,UAAW2B,EAAkBrC,EAAQnG,EAAWmK,EAAQd,UAAUgB,KAAKhE,kBAAmB8D,EAAQd,UAAUgB,KAAKjE,SAQ9J,OANAD,EAAOtR,aAAa,cAAegS,GAInCgG,GAAU1G,EAAQ,CAAEoE,SAAUJ,EAAQC,cAAgB,QAAU,aAEzDD,GAsnCL6H,qBAAiBnQ,KAuGjBsR,GAAS,WASX,SAASA,EAAOnT,EAAWmG,GACzB,IAAIpZ,EAAQC,KAERmd,EAAUnY,UAAU0D,OAAS,QAAsBmM,IAAjB7P,UAAU,GAAmBA,UAAU,GAAK,GAClFsR,EAAetW,KAAMmmB,GAErBnmB,KAAKsf,eAAiB,WACpB,OAAO8G,sBAAsBrmB,EAAM+c,SAIrC9c,KAAK8c,OAASnL,EAAS3R,KAAK8c,OAAOzR,KAAKrL,OAGxCA,KAAKmd,QAAUvR,EAAS,GAAIua,EAAOtE,SAAU1E,GAG7Cnd,KAAK4a,MAAQ,CACXmC,aAAa,EACbS,WAAW,EACX0B,cAAe,IAIjBlf,KAAKgT,UAAYA,GAAaA,EAAU5O,OAAS4O,EAAU,GAAKA,EAChEhT,KAAKmZ,OAASA,GAAUA,EAAO/U,OAAS+U,EAAO,GAAKA,EAGpDnZ,KAAKmd,QAAQd,UAAY,GACzB1Z,OAAOsX,KAAKrO,EAAS,GAAIua,EAAOtE,SAASxF,UAAWc,EAAQd,YAAYK,SAAQ,SAAUoB,GACxF/d,EAAMod,QAAQd,UAAUyB,GAAQlS,EAAS,GAAIua,EAAOtE,SAASxF,UAAUyB,IAAS,GAAIX,EAAQd,UAAYc,EAAQd,UAAUyB,GAAQ,OAIpI9d,KAAKqc,UAAY1Z,OAAOsX,KAAKja,KAAKmd,QAAQd,WAAWnC,KAAI,SAAU4D,GACjE,OAAOlS,EAAS,CACdkS,KAAMA,GACL/d,EAAMod,QAAQd,UAAUyB,OAG5B1D,MAAK,SAAUC,EAAGC,GACjB,OAAOD,EAAErG,MAAQsG,EAAEtG,SAOrBhU,KAAKqc,UAAUK,SAAQ,SAAUwJ,GAC3BA,EAAgBrJ,SAAW7K,EAAWkU,EAAgBD,SACxDC,EAAgBD,OAAOlmB,EAAMiT,UAAWjT,EAAMoZ,OAAQpZ,EAAMod,QAAS+I,EAAiBnmB,EAAM6a,UAKhG5a,KAAK8c,SAEL,IAAIsC,EAAgBpf,KAAKmd,QAAQiC,cAC7BA,GAEFpf,KAAKqf,uBAGPrf,KAAK4a,MAAMwE,cAAgBA,EAqD7B,OA9CA5I,EAAY2P,EAAQ,CAAC,CACnBnP,IAAK,SACLhU,MAAO,WACL,OAAO8Z,GAAOha,KAAK9C,QAEpB,CACDgX,IAAK,UACLhU,MAAO,WACL,OAAOob,GAAQtb,KAAK9C,QAErB,CACDgX,IAAK,uBACLhU,MAAO,WACL,OAAOqc,GAAqBvc,KAAK9C,QAElC,CACDgX,IAAK,wBACLhU,MAAO,WACL,OAAOub,GAAsBzb,KAAK9C,UA4B/BmmB,EA7HI,GAqJbA,GAAOE,OAA2B,oBAAXje,OAAyBA,OAASke,QAAQC,YACjEJ,GAAO5F,WAAaA,GACpB4F,GAAOtE,SAAWA,GCniFlB,IAAM5c,GAAO,WAKPC,GAAqBhF,EAAAA,QAAEiE,GAAGc,IAO1BuhB,GAAiB,IAAInjB,OAAUojB,YAgC/B5d,GAAU,CACdgQ,OAAQ,EACRwE,MAAM,EACNqJ,SAAU,eACV1T,UAAW,SACX2T,QAAS,UACTC,aAAc,MAGVxd,GAAc,CAClByP,OAAQ,2BACRwE,KAAM,UACNqJ,SAAU,mBACV1T,UAAW,mBACX2T,QAAS,SACTC,aAAc,iBASVC,GAAAA,WACJ,SAAAA,EAAY9lB,EAASyB,GACnBxC,KAAKoF,SAAWrE,EAChBf,KAAK8mB,QAAU,KACf9mB,KAAKiK,QAAUjK,KAAKkK,WAAW1H,GAC/BxC,KAAK+mB,MAAQ/mB,KAAKgnB,kBAClBhnB,KAAKinB,UAAYjnB,KAAKknB,gBAEtBlnB,KAAK0K,gDAmBPxD,OAAA,WACE,IAAIlH,KAAKoF,SAAS+hB,WAAYjnB,EAAAA,QAAEF,KAAKoF,UAAUc,SAzEvB,YAyExB,CAIA,IAAMkhB,EAAWlnB,EAAAA,QAAEF,KAAK+mB,OAAO7gB,SA5EX,QA8EpB2gB,EAASQ,cAELD,GAIJpnB,KAAKiQ,MAAK,OAGZA,KAAA,SAAKqX,GACH,QADsB,IAAnBA,IAAAA,GAAY,KACXtnB,KAAKoF,SAAS+hB,UAAYjnB,EAAAA,QAAEF,KAAKoF,UAAUc,SAzFvB,aAyFwDhG,EAAAA,QAAEF,KAAK+mB,OAAO7gB,SAxF1E,SAwFpB,CAIA,IAAMmH,EAAgB,CACpBA,cAAerN,KAAKoF,UAEhBmiB,EAAYrnB,EAAAA,QAAE8F,MAvGR,mBAuG0BqH,GAChCxH,EAASghB,EAASW,sBAAsBxnB,KAAKoF,UAInD,GAFAlF,EAAAA,QAAE2F,GAAQ7D,QAAQulB,IAEdA,EAAU9hB,qBAAd,CAKA,IAAKzF,KAAKinB,WAAaK,EAAW,CAKhC,GAAsB,oBAAXnB,GACT,MAAM,IAAIliB,UAAU,gEAGtB,IAAIwjB,EAAmBznB,KAAKoF,SAEG,WAA3BpF,KAAKiK,QAAQ+I,UACfyU,EAAmB5hB,EACVzF,EAAK+B,UAAUnC,KAAKiK,QAAQ+I,aACrCyU,EAAmBznB,KAAKiK,QAAQ+I,UAGa,oBAAlChT,KAAKiK,QAAQ+I,UAAU5O,SAChCqjB,EAAmBznB,KAAKiK,QAAQ+I,UAAU,KAOhB,iBAA1BhT,KAAKiK,QAAQyc,UACfxmB,EAAAA,QAAE2F,GAAQkI,SA9HiB,mBAiI7B/N,KAAK8mB,QAAU,IAAIX,GAAOsB,EAAkBznB,KAAK+mB,MAAO/mB,KAAK0nB,oBAO3D,iBAAkB9mB,SAAS8C,iBACuB,IAAlDxD,EAAAA,QAAE2F,GAAQC,QApIU,eAoImB4C,QACzCxI,EAAAA,QAAEU,SAAS8R,MAAM5E,WAAWjH,GAAG,YAAa,KAAM3G,EAAAA,QAAEynB,MAGtD3nB,KAAKoF,SAASuC,QACd3H,KAAKoF,SAASyC,aAAa,iBAAiB,GAE5C3H,EAAAA,QAAEF,KAAK+mB,OAAOjf,YArJM,QAsJpB5H,EAAAA,QAAE2F,GACCiC,YAvJiB,QAwJjB9F,QAAQ9B,EAAAA,QAAE8F,MA/JA,oBA+JmBqH,SAGlC2C,KAAA,WACE,IAAIhQ,KAAKoF,SAAS+hB,WAAYjnB,EAAAA,QAAEF,KAAKoF,UAAUc,SA7JvB,aA6JyDhG,EAAAA,QAAEF,KAAK+mB,OAAO7gB,SA5J3E,QA4JpB,CAIA,IAAMmH,EAAgB,CACpBA,cAAerN,KAAKoF,UAEhBwiB,EAAY1nB,EAAAA,QAAE8F,MA7KR,mBA6K0BqH,GAChCxH,EAASghB,EAASW,sBAAsBxnB,KAAKoF,UAEnDlF,EAAAA,QAAE2F,GAAQ7D,QAAQ4lB,GAEdA,EAAUniB,uBAIVzF,KAAK8mB,SACP9mB,KAAK8mB,QAAQ1I,UAGfle,EAAAA,QAAEF,KAAK+mB,OAAOjf,YAhLM,QAiLpB5H,EAAAA,QAAE2F,GACCiC,YAlLiB,QAmLjB9F,QAAQ9B,EAAAA,QAAE8F,MA5LC,qBA4LmBqH,SAGnC1H,QAAA,WACEzF,EAAAA,QAAE0F,WAAW5F,KAAKoF,SA7ML,eA8MblF,EAAAA,QAAEF,KAAKoF,UAAUuG,IA7MN,gBA8MX3L,KAAKoF,SAAW,KAChBpF,KAAK+mB,MAAQ,KACQ,OAAjB/mB,KAAK8mB,UACP9mB,KAAK8mB,QAAQ1I,UACbpe,KAAK8mB,QAAU,SAInBhK,OAAA,WACE9c,KAAKinB,UAAYjnB,KAAKknB,gBACD,OAAjBlnB,KAAK8mB,SACP9mB,KAAK8mB,QAAQxH,oBAMjB5U,mBAAA,WAAqB,IAAA3K,EAAAC,KACnBE,EAAAA,QAAEF,KAAKoF,UAAUyB,GAjNJ,qBAiNoB,SAAAvC,GAC/BA,EAAMsC,iBACNtC,EAAMujB,kBACN9nB,EAAKmH,eAITgD,WAAA,SAAW1H,GAaT,OAZAA,EAAMoJ,EAAA,GACD5L,KAAK8nB,YAAYjf,QACjB3I,EAAAA,QAAEF,KAAKoF,UAAUqB,OACjBjE,GAGLpC,EAAKkC,gBACH2C,GACAzC,EACAxC,KAAK8nB,YAAY1e,aAGZ5G,KAGTwkB,gBAAA,WACE,IAAKhnB,KAAK+mB,MAAO,CACf,IAAMlhB,EAASghB,EAASW,sBAAsBxnB,KAAKoF,UAE/CS,IACF7F,KAAK+mB,MAAQlhB,EAAOzE,cA9NN,mBAkOlB,OAAOpB,KAAK+mB,SAGdgB,cAAA,WACE,IAAMC,EAAkB9nB,EAAAA,QAAEF,KAAKoF,SAASrB,YACpC8V,EAjOiB,eAgPrB,OAZImO,EAAgB9hB,SAlPE,UAmPpB2T,EAAY3Z,EAAAA,QAAEF,KAAK+mB,OAAO7gB,SAhPH,uBAUJ,UADH,YA0OP8hB,EAAgB9hB,SArPF,aAsPvB2T,EAvOkB,cAwOTmO,EAAgB9hB,SAtPH,YAuPtB2T,EAxOiB,aAyOR3Z,EAAAA,QAAEF,KAAK+mB,OAAO7gB,SAvPA,yBAwPvB2T,EA5OsB,cA+OjBA,KAGTqN,cAAA,WACE,OAAOhnB,EAAAA,QAAEF,KAAKoF,UAAUU,QAAQ,WAAW4C,OAAS,KAGtDuf,WAAA,WAAa,IAAAjc,EAAAhM,KACL6Y,EAAS,GAef,MAbmC,mBAAxB7Y,KAAKiK,QAAQ4O,OACtBA,EAAO1U,GAAK,SAAAsC,GAMV,OALAA,EAAK6Q,QAAL1L,EAAA,GACKnF,EAAK6Q,QACJtL,EAAK/B,QAAQ4O,OAAOpS,EAAK6Q,QAAStL,EAAK5G,WAAa,IAGnDqB,GAGToS,EAAOA,OAAS7Y,KAAKiK,QAAQ4O,OAGxBA,KAGT6O,iBAAA,WACE,IAAMd,EAAe,CACnB/M,UAAW7Z,KAAK+nB,gBAChB1L,UAAW,CACTxD,OAAQ7Y,KAAKioB,aACb5K,KAAM,CACJR,QAAS7c,KAAKiK,QAAQoT,MAExB8E,gBAAiB,CACf9I,kBAAmBrZ,KAAKiK,QAAQyc,YAYtC,MAN6B,WAAzB1mB,KAAKiK,QAAQ0c,UACfC,EAAavK,UAAU2J,WAAa,CAClCnJ,SAAS,IAIbjR,EAAA,GACKgb,EACA5mB,KAAKiK,QAAQ2c,iBAMbtgB,iBAAP,SAAwB9D,GACtB,OAAOxC,KAAKuG,MAAK,WACf,IAAIE,EAAOvG,EAAAA,QAAEF,MAAMyG,KA9UR,eAsVX,GALKA,IACHA,EAAO,IAAIogB,EAAS7mB,KAHY,iBAAXwC,EAAsBA,EAAS,MAIpDtC,EAAAA,QAAEF,MAAMyG,KAnVC,cAmVcA,IAGH,iBAAXjE,EAAqB,CAC9B,GAA4B,oBAAjBiE,EAAKjE,GACd,MAAM,IAAIyB,UAAJ,oBAAkCzB,EAAlC,KAGRiE,EAAKjE,YAKJ6kB,YAAP,SAAmB/iB,GACjB,IAAIA,GAxVyB,IAwVfA,EAAMuI,QACH,UAAfvI,EAAMgD,MA5VQ,IA4VYhD,EAAMuI,OAMlC,IAFA,IAAMqb,EAAU,GAAG5f,MAAMxF,KAAKlC,SAAS2H,iBAzUd,6BA2UhBC,EAAI,EAAGC,EAAMyf,EAAQxf,OAAQF,EAAIC,EAAKD,IAAK,CAClD,IAAM3C,EAASghB,EAASW,sBAAsBU,EAAQ1f,IAChD2f,EAAUjoB,EAAAA,QAAEgoB,EAAQ1f,IAAI/B,KA1WnB,eA2WL4G,EAAgB,CACpBA,cAAe6a,EAAQ1f,IAOzB,GAJIlE,GAAwB,UAAfA,EAAMgD,OACjB+F,EAAc+a,WAAa9jB,GAGxB6jB,EAAL,CAIA,IAAME,EAAeF,EAAQpB,MAC7B,GAAK7mB,EAAAA,QAAE2F,GAAQK,SAlWG,WAsWd5B,IAAyB,UAAfA,EAAMgD,MAChB,kBAAkBhE,KAAKgB,EAAMK,OAAOwD,UAA2B,UAAf7D,EAAMgD,MAvX5C,IAuXgEhD,EAAMuI,QAChF3M,EAAAA,QAAEuH,SAAS5B,EAAQvB,EAAMK,SAF7B,CAMA,IAAMijB,EAAY1nB,EAAAA,QAAE8F,MAtXV,mBAsX4BqH,GACtCnN,EAAAA,QAAE2F,GAAQ7D,QAAQ4lB,GACdA,EAAUniB,uBAMV,iBAAkB7E,SAAS8C,iBAC7BxD,EAAAA,QAAEU,SAAS8R,MAAM5E,WAAWnC,IAAI,YAAa,KAAMzL,EAAAA,QAAEynB,MAGvDO,EAAQ1f,GAAGX,aAAa,gBAAiB,SAErCsgB,EAAQrB,SACVqB,EAAQrB,QAAQ1I,UAGlBle,EAAAA,QAAEmoB,GAAcpiB,YA9XE,QA+XlB/F,EAAAA,QAAE2F,GACCI,YAhYe,QAiYfjE,QAAQ9B,EAAAA,QAAE8F,MA1YD,qBA0YqBqH,WAI9Bma,sBAAP,SAA6BzmB,GAC3B,IAAI8E,EACE7E,EAAWZ,EAAKU,uBAAuBC,GAM7C,OAJIC,IACF6E,EAASjF,SAASQ,cAAcJ,IAG3B6E,GAAU9E,EAAQgD,cAIpBukB,uBAAP,SAA8BhkB,GAQ5B,KAAI,kBAAkBhB,KAAKgB,EAAMK,OAAOwD,SA1atB,KA2ahB7D,EAAMuI,OA5aW,KA4agBvI,EAAMuI,QAxalB,KAyapBvI,EAAMuI,OA1aY,KA0aoBvI,EAAMuI,OAC3C3M,EAAAA,QAAEoE,EAAMK,QAAQmB,QAnZF,kBAmZyB4C,SAAW8d,GAAeljB,KAAKgB,EAAMuI,UAI5E7M,KAAKmnB,WAAYjnB,EAAAA,QAAEF,MAAMkG,SAjaL,YAiaxB,CAIA,IAAML,EAASghB,EAASW,sBAAsBxnB,MACxConB,EAAWlnB,EAAAA,QAAE2F,GAAQK,SAraP,QAuapB,GAAKkhB,GAzbc,KAybF9iB,EAAMuI,MAAvB,CAOA,GAHAvI,EAAMsC,iBACNtC,EAAMujB,mBAEDT,GAhcc,KAgcD9iB,EAAMuI,OA/bN,KA+bkCvI,EAAMuI,MAMxD,OAtciB,KAicbvI,EAAMuI,OACR3M,EAAAA,QAAE2F,EAAOzE,cAzaY,6BAyayBY,QAAQ,cAGxD9B,EAAAA,QAAEF,MAAMgC,QAAQ,SAIlB,IAAMumB,EAAQ,GAAGjgB,MAAMxF,KAAK+C,EAAO0C,iBA5aR,gEA6axBkH,QAAO,SAAA+Y,GAAI,OAAItoB,EAAAA,QAAEsoB,GAAM5jB,GAAG,eAE7B,GAAqB,IAAjB2jB,EAAM7f,OAAV,CAIA,IAAI6C,EAAQgd,EAAMzb,QAAQxI,EAAMK,QA7cX,KA+cjBL,EAAMuI,OAA8BtB,EAAQ,GAC9CA,IA/cqB,KAkdnBjH,EAAMuI,OAAgCtB,EAAQgd,EAAM7f,OAAS,GAC/D6C,IAGEA,EAAQ,IACVA,EAAQ,GAGVgd,EAAMhd,GAAO5D,oDAlZb,MAjFY,wCAqFZ,OAAOkB,uCAIP,OAAOO,SAtBLyd,GA0aN3mB,EAAAA,QAAEU,UACCiG,GA3dyB,+BAWC,2BAgduBggB,GAASyB,wBAC1DzhB,GA5dyB,+BAaN,iBA+cuBggB,GAASyB,wBACnDzhB,GAAM4hB,wDAAgD5B,GAASQ,aAC/DxgB,GA/duB,6BAYG,4BAmdqB,SAAUvC,GACxDA,EAAMsC,iBACNtC,EAAMujB,kBACNhB,GAASvgB,iBAAiBxD,KAAK5C,EAAAA,QAAEF,MAAO,aAEzC6G,GApeuB,6BAaE,kBAudqB,SAAA8F,GAC7CA,EAAEkb,qBASN3nB,EAAAA,QAAEiE,GAAGc,IAAQ4hB,GAASvgB,iBACtBpG,EAAAA,QAAEiE,GAAGc,IAAM6B,YAAc+f,GACzB3mB,EAAAA,QAAEiE,GAAGc,IAAM8B,WAAa,WAEtB,OADA7G,EAAAA,QAAEiE,GAAGc,IAAQC,GACN2hB,GAASvgB,kBCtgBlB,IAKMpB,GAAqBhF,EAAAA,QAAEiE,GAAF,MAGrB0E,GAAU,CACd6f,UAAU,EACV3f,UAAU,EACVpB,OAAO,EACPsI,MAAM,GAGF7G,GAAc,CAClBsf,SAAU,mBACV3f,SAAU,UACVpB,MAAO,UACPsI,KAAM,WAqCF0Y,GAAAA,WACJ,SAAAA,EAAY5nB,EAASyB,GACnBxC,KAAKiK,QAAUjK,KAAKkK,WAAW1H,GAC/BxC,KAAKoF,SAAWrE,EAChBf,KAAK4oB,QAAU7nB,EAAQK,cAjBH,iBAkBpBpB,KAAK6oB,UAAY,KACjB7oB,KAAK8oB,UAAW,EAChB9oB,KAAK+oB,oBAAqB,EAC1B/oB,KAAKgpB,sBAAuB,EAC5BhpB,KAAKmP,kBAAmB,EACxBnP,KAAKipB,gBAAkB,6BAezB/hB,OAAA,SAAOmG,GACL,OAAOrN,KAAK8oB,SAAW9oB,KAAKgQ,OAAShQ,KAAKiQ,KAAK5C,MAGjD4C,KAAA,SAAK5C,GAAe,IAAAtN,EAAAC,KAClB,IAAIA,KAAK8oB,WAAY9oB,KAAKmP,iBAA1B,CAIIjP,EAAAA,QAAEF,KAAKoF,UAAUc,SAnDD,UAoDlBlG,KAAKmP,kBAAmB,GAG1B,IAAMoY,EAAYrnB,EAAAA,QAAE8F,MArER,gBAqE0B,CACpCqH,cAAAA,IAGFnN,EAAAA,QAAEF,KAAKoF,UAAUpD,QAAQulB,GAErBvnB,KAAK8oB,UAAYvB,EAAU9hB,uBAI/BzF,KAAK8oB,UAAW,EAEhB9oB,KAAKkpB,kBACLlpB,KAAKmpB,gBAELnpB,KAAKopB,gBAELppB,KAAKqpB,kBACLrpB,KAAKspB,kBAELppB,EAAAA,QAAEF,KAAKoF,UAAUyB,GArFI,yBAiBK,0BAuExB,SAAAvC,GAAK,OAAIvE,EAAKiQ,KAAK1L,MAGrBpE,EAAAA,QAAEF,KAAK4oB,SAAS/hB,GAxFS,8BAwFmB,WAC1C3G,EAAAA,QAAEH,EAAKqF,UAAUjF,IA1FI,4BA0FuB,SAAAmE,GACtCpE,EAAAA,QAAEoE,EAAMK,QAAQC,GAAG7E,EAAKqF,YAC1BrF,EAAKipB,sBAAuB,SAKlChpB,KAAKupB,eAAc,WAAA,OAAMxpB,EAAKypB,aAAanc,WAG7C2C,KAAA,SAAK1L,GAAO,IAAA0H,EAAAhM,KAKV,GAJIsE,GACFA,EAAMsC,iBAGH5G,KAAK8oB,WAAY9oB,KAAKmP,iBAA3B,CAIA,IAAMyY,EAAY1nB,EAAAA,QAAE8F,MAtHR,iBA0HZ,GAFA9F,EAAAA,QAAEF,KAAKoF,UAAUpD,QAAQ4lB,GAEpB5nB,KAAK8oB,WAAYlB,EAAUniB,qBAAhC,CAIAzF,KAAK8oB,UAAW,EAChB,IAAMW,EAAavpB,EAAAA,QAAEF,KAAKoF,UAAUc,SA9GhB,QA8HpB,GAdIujB,IACFzpB,KAAKmP,kBAAmB,GAG1BnP,KAAKqpB,kBACLrpB,KAAKspB,kBAELppB,EAAAA,QAAEU,UAAU+K,IAnIG,oBAqIfzL,EAAAA,QAAEF,KAAKoF,UAAUa,YAxHG,QA0HpB/F,EAAAA,QAAEF,KAAKoF,UAAUuG,IArII,0BAsIrBzL,EAAAA,QAAEF,KAAK4oB,SAASjd,IAnIS,8BAqIrB8d,EAAY,CACd,IAAMloB,EAAqBnB,EAAKkB,iCAAiCtB,KAAKoF,UAEtElF,EAAAA,QAAEF,KAAKoF,UACJjF,IAAIC,EAAKC,gBAAgB,SAAAiE,GAAK,OAAI0H,EAAK0d,WAAWplB,MAClDD,qBAAqB9C,QAExBvB,KAAK0pB,kBAIT/jB,QAAA,WACE,CAACyC,OAAQpI,KAAKoF,SAAUpF,KAAK4oB,SAC1BlM,SAAQ,SAAAiN,GAAW,OAAIzpB,EAAAA,QAAEypB,GAAahe,IA/K9B,gBAsLXzL,EAAAA,QAAEU,UAAU+K,IA9JG,oBAgKfzL,EAAAA,QAAE0F,WAAW5F,KAAKoF,SAzLL,YA2LbpF,KAAKiK,QAAU,KACfjK,KAAKoF,SAAW,KAChBpF,KAAK4oB,QAAU,KACf5oB,KAAK6oB,UAAY,KACjB7oB,KAAK8oB,SAAW,KAChB9oB,KAAK+oB,mBAAqB,KAC1B/oB,KAAKgpB,qBAAuB,KAC5BhpB,KAAKmP,iBAAmB,KACxBnP,KAAKipB,gBAAkB,QAGzBW,aAAA,WACE5pB,KAAKopB,mBAKPlf,WAAA,SAAW1H,GAMT,OALAA,EAAMoJ,EAAA,GACD/C,GACArG,GAELpC,EAAKkC,gBAnNI,QAmNkBE,EAAQ4G,IAC5B5G,KAGTqnB,2BAAA,WAA6B,IAAA1d,EAAAnM,KACrB8pB,EAAqB5pB,EAAAA,QAAE8F,MAjMP,0BAoMtB,GADA9F,EAAAA,QAAEF,KAAKoF,UAAUpD,QAAQ8nB,IACrBA,EAAmBrkB,qBAAvB,CAIA,IAAMskB,EAAqB/pB,KAAKoF,SAAS4kB,aAAeppB,SAAS8C,gBAAgBgU,aAE5EqS,IACH/pB,KAAKoF,SAASoL,MAAMsC,UAAY,UAGlC9S,KAAKoF,SAASoC,UAAUmB,IA5LF,gBA8LtB,IAAMshB,EAA0B7pB,EAAKkB,iCAAiCtB,KAAK4oB,SAC3E1oB,EAAAA,QAAEF,KAAKoF,UAAUuG,IAAIvL,EAAKC,gBAE1BH,EAAAA,QAAEF,KAAKoF,UAAUjF,IAAIC,EAAKC,gBAAgB,WACxC8L,EAAK/G,SAASoC,UAAUnB,OAlMJ,gBAmMf0jB,GACH7pB,EAAAA,QAAEiM,EAAK/G,UAAUjF,IAAIC,EAAKC,gBAAgB,WACxC8L,EAAK/G,SAASoL,MAAMsC,UAAY,MAE/BzO,qBAAqB8H,EAAK/G,SAAU6kB,MAGxC5lB,qBAAqB4lB,GACxBjqB,KAAKoF,SAASuC,YAGhB6hB,aAAA,SAAanc,GAAe,IAAAgB,EAAArO,KACpBypB,EAAavpB,EAAAA,QAAEF,KAAKoF,UAAUc,SAjNhB,QAkNdgkB,EAAYlqB,KAAK4oB,QAAU5oB,KAAK4oB,QAAQxnB,cA7MtB,eA6M2D,KAE9EpB,KAAKoF,SAASrB,YACf/D,KAAKoF,SAASrB,WAAW1B,WAAa6R,KAAKiW,cAE7CvpB,SAAS8R,KAAK0X,YAAYpqB,KAAKoF,UAGjCpF,KAAKoF,SAASoL,MAAMmW,QAAU,QAC9B3mB,KAAKoF,SAASiZ,gBAAgB,eAC9Bre,KAAKoF,SAASyC,aAAa,cAAc,GACzC7H,KAAKoF,SAASyC,aAAa,OAAQ,UAE/B3H,EAAAA,QAAEF,KAAK4oB,SAAS1iB,SAnOM,4BAmO6BgkB,EACrDA,EAAU9U,UAAY,EAEtBpV,KAAKoF,SAASgQ,UAAY,EAGxBqU,GACFrpB,EAAK0B,OAAO9B,KAAKoF,UAGnBlF,EAAAA,QAAEF,KAAKoF,UAAU2I,SAxOG,QA0OhB/N,KAAKiK,QAAQtC,OACf3H,KAAKqqB,gBAGP,IAAMC,EAAapqB,EAAAA,QAAE8F,MA5PR,iBA4P2B,CACtCqH,cAAAA,IAGIkd,EAAqB,WACrBlc,EAAKpE,QAAQtC,OACf0G,EAAKjJ,SAASuC,QAGhB0G,EAAKc,kBAAmB,EACxBjP,EAAAA,QAAEmO,EAAKjJ,UAAUpD,QAAQsoB,IAG3B,GAAIb,EAAY,CACd,IAAMloB,EAAqBnB,EAAKkB,iCAAiCtB,KAAK4oB,SAEtE1oB,EAAAA,QAAEF,KAAK4oB,SACJzoB,IAAIC,EAAKC,eAAgBkqB,GACzBlmB,qBAAqB9C,QAExBgpB,OAIJF,cAAA,WAAgB,IAAAG,EAAAxqB,KACdE,EAAAA,QAAEU,UACC+K,IArRY,oBAsRZ9E,GAtRY,oBAsRM,SAAAvC,GACb1D,WAAa0D,EAAMK,QACnB6lB,EAAKplB,WAAad,EAAMK,QACsB,IAA9CzE,EAAAA,QAAEsqB,EAAKplB,UAAUqlB,IAAInmB,EAAMK,QAAQ+D,QACrC8hB,EAAKplB,SAASuC,cAKtB0hB,gBAAA,WAAkB,IAAAqB,EAAA1qB,KACZA,KAAK8oB,SACP5oB,EAAAA,QAAEF,KAAKoF,UAAUyB,GA9RI,4BA8RsB,SAAAvC,GACrComB,EAAKzgB,QAAQlB,UAvTF,KAuTczE,EAAMuI,OACjCvI,EAAMsC,iBACN8jB,EAAK1a,QACK0a,EAAKzgB,QAAQlB,UA1TV,KA0TsBzE,EAAMuI,OACzC6d,EAAKb,gCAGC7pB,KAAK8oB,UACf5oB,EAAAA,QAAEF,KAAKoF,UAAUuG,IAvSI,+BA2SzB2d,gBAAA,WAAkB,IAAAqB,EAAA3qB,KACZA,KAAK8oB,SACP5oB,EAAAA,QAAEkI,QAAQvB,GA/SE,mBA+Se,SAAAvC,GAAK,OAAIqmB,EAAKf,aAAatlB,MAEtDpE,EAAAA,QAAEkI,QAAQuD,IAjTE,sBAqThB+d,WAAA,WAAa,IAAAkB,EAAA5qB,KACXA,KAAKoF,SAASoL,MAAMmW,QAAU,OAC9B3mB,KAAKoF,SAASyC,aAAa,eAAe,GAC1C7H,KAAKoF,SAASiZ,gBAAgB,cAC9Bre,KAAKoF,SAASiZ,gBAAgB,QAC9Bre,KAAKmP,kBAAmB,EACxBnP,KAAKupB,eAAc,WACjBrpB,EAAAA,QAAEU,SAAS8R,MAAMzM,YAlTC,cAmTlB2kB,EAAKC,oBACLD,EAAKE,kBACL5qB,EAAAA,QAAE0qB,EAAKxlB,UAAUpD,QAnUL,yBAuUhB+oB,gBAAA,WACM/qB,KAAK6oB,YACP3oB,EAAAA,QAAEF,KAAK6oB,WAAWxiB,SAClBrG,KAAK6oB,UAAY,SAIrBU,cAAA,SAActK,GAAU,IAAA+L,EAAAhrB,KAChBirB,EAAU/qB,EAAAA,QAAEF,KAAKoF,UAAUc,SAhUb,QAAA,OAiUA,GAEpB,GAAIlG,KAAK8oB,UAAY9oB,KAAKiK,QAAQye,SAAU,CAiC1C,GAhCA1oB,KAAK6oB,UAAYjoB,SAASsqB,cAAc,OACxClrB,KAAK6oB,UAAUsC,UAvUO,iBAyUlBF,GACFjrB,KAAK6oB,UAAUrhB,UAAUmB,IAAIsiB,GAG/B/qB,EAAAA,QAAEF,KAAK6oB,WAAWuC,SAASxqB,SAAS8R,MAEpCxS,EAAAA,QAAEF,KAAKoF,UAAUyB,GAvVE,0BAuVsB,SAAAvC,GACnC0mB,EAAKhC,qBACPgC,EAAKhC,sBAAuB,EAI1B1kB,EAAMK,SAAWL,EAAM6M,gBAIG,WAA1B6Z,EAAK/gB,QAAQye,SACfsC,EAAKnB,6BAELmB,EAAKhb,WAILib,GACF7qB,EAAK0B,OAAO9B,KAAK6oB,WAGnB3oB,EAAAA,QAAEF,KAAK6oB,WAAW9a,SAjWA,SAmWbkR,EACH,OAGF,IAAKgM,EAEH,YADAhM,IAIF,IAAMoM,EAA6BjrB,EAAKkB,iCAAiCtB,KAAK6oB,WAE9E3oB,EAAAA,QAAEF,KAAK6oB,WACJ1oB,IAAIC,EAAKC,eAAgB4e,GACzB5a,qBAAqBgnB,QACnB,IAAKrrB,KAAK8oB,UAAY9oB,KAAK6oB,UAAW,CAC3C3oB,EAAAA,QAAEF,KAAK6oB,WAAW5iB,YAlXA,QAoXlB,IAAMqlB,EAAiB,WACrBN,EAAKD,kBACD9L,GACFA,KAIJ,GAAI/e,EAAAA,QAAEF,KAAKoF,UAAUc,SA5XH,QA4X8B,CAC9C,IAAMmlB,EAA6BjrB,EAAKkB,iCAAiCtB,KAAK6oB,WAE9E3oB,EAAAA,QAAEF,KAAK6oB,WACJ1oB,IAAIC,EAAKC,eAAgBirB,GACzBjnB,qBAAqBgnB,QAExBC,SAEOrM,GACTA,OASJmK,cAAA,WACE,IAAMW,EAAqB/pB,KAAKoF,SAAS4kB,aAAeppB,SAAS8C,gBAAgBgU,cAE5E1X,KAAK+oB,oBAAsBgB,IAC9B/pB,KAAKoF,SAASoL,MAAM+a,YAAiBvrB,KAAKipB,gBAA1C,MAGEjpB,KAAK+oB,qBAAuBgB,IAC9B/pB,KAAKoF,SAASoL,MAAMgb,aAAkBxrB,KAAKipB,gBAA3C,SAIJ4B,kBAAA,WACE7qB,KAAKoF,SAASoL,MAAM+a,YAAc,GAClCvrB,KAAKoF,SAASoL,MAAMgb,aAAe,MAGrCtC,gBAAA,WACE,IAAMhU,EAAOtU,SAAS8R,KAAK7B,wBAC3B7Q,KAAK+oB,mBAAqBroB,KAAK+iB,MAAMvO,EAAKO,KAAOP,EAAKQ,OAAStN,OAAOuQ,WACtE3Y,KAAKipB,gBAAkBjpB,KAAKyrB,wBAG9BtC,cAAA,WAAgB,IAAAuC,EAAA1rB,KACd,GAAIA,KAAK+oB,mBAAoB,CAG3B,IAAM4C,EAAe,GAAGrjB,MAAMxF,KAAKlC,SAAS2H,iBAlanB,sDAmanBqjB,EAAgB,GAAGtjB,MAAMxF,KAAKlC,SAAS2H,iBAlanB,gBAqa1BrI,EAAAA,QAAEyrB,GAAcplB,MAAK,SAACgF,EAAOxK,GAC3B,IAAM8qB,EAAgB9qB,EAAQyP,MAAMgb,aAC9BM,EAAoB5rB,EAAAA,QAAEa,GAASS,IAAI,iBACzCtB,EAAAA,QAAEa,GACC0F,KAAK,gBAAiBolB,GACtBrqB,IAAI,gBAAoBG,WAAWmqB,GAAqBJ,EAAKzC,gBAFhE,SAMF/oB,EAAAA,QAAE0rB,GAAerlB,MAAK,SAACgF,EAAOxK,GAC5B,IAAMgrB,EAAehrB,EAAQyP,MAAM0K,YAC7B8Q,EAAmB9rB,EAAAA,QAAEa,GAASS,IAAI,gBACxCtB,EAAAA,QAAEa,GACC0F,KAAK,eAAgBslB,GACrBvqB,IAAI,eAAmBG,WAAWqqB,GAAoBN,EAAKzC,gBAF9D,SAMF,IAAM4C,EAAgBjrB,SAAS8R,KAAKlC,MAAMgb,aACpCM,EAAoB5rB,EAAAA,QAAEU,SAAS8R,MAAMlR,IAAI,iBAC/CtB,EAAAA,QAAEU,SAAS8R,MACRjM,KAAK,gBAAiBolB,GACtBrqB,IAAI,gBAAoBG,WAAWmqB,GAAqB9rB,KAAKipB,gBAFhE,MAKF/oB,EAAAA,QAAEU,SAAS8R,MAAM3E,SAxcG,iBA2ctB+c,gBAAA,WAEE,IAAMa,EAAe,GAAGrjB,MAAMxF,KAAKlC,SAAS2H,iBApcjB,sDAqc3BrI,EAAAA,QAAEyrB,GAAcplB,MAAK,SAACgF,EAAOxK,GAC3B,IAAMqY,EAAUlZ,EAAAA,QAAEa,GAAS0F,KAAK,iBAChCvG,EAAAA,QAAEa,GAAS6E,WAAW,iBACtB7E,EAAQyP,MAAMgb,aAAepS,GAAoB,MAInD,IAAM6S,EAAW,GAAG3jB,MAAMxF,KAAKlC,SAAS2H,iBA3cZ,gBA4c5BrI,EAAAA,QAAE+rB,GAAU1lB,MAAK,SAACgF,EAAOxK,GACvB,IAAMmrB,EAAShsB,EAAAA,QAAEa,GAAS0F,KAAK,gBACT,oBAAXylB,GACThsB,EAAAA,QAAEa,GAASS,IAAI,eAAgB0qB,GAAQtmB,WAAW,mBAKtD,IAAMwT,EAAUlZ,EAAAA,QAAEU,SAAS8R,MAAMjM,KAAK,iBACtCvG,EAAAA,QAAEU,SAAS8R,MAAM9M,WAAW,iBAC5BhF,SAAS8R,KAAKlC,MAAMgb,aAAepS,GAAoB,MAGzDqS,mBAAA,WACE,IAAMU,EAAYvrB,SAASsqB,cAAc,OACzCiB,EAAUhB,UAvewB,0BAwelCvqB,SAAS8R,KAAK0X,YAAY+B,GAC1B,IAAMC,EAAiBD,EAAUtb,wBAAwBwF,MAAQ8V,EAAU1U,YAE3E,OADA7W,SAAS8R,KAAK+L,YAAY0N,GACnBC,KAKF9lB,iBAAP,SAAwB9D,EAAQ6K,GAC9B,OAAOrN,KAAKuG,MAAK,WACf,IAAIE,EAAOvG,EAAAA,QAAEF,MAAMyG,KAphBR,YAqhBLwD,EAAO2B,EAAA,GACR/C,GACA3I,EAAAA,QAAEF,MAAMyG,OACW,iBAAXjE,GAAuBA,EAASA,EAAS,IAQtD,GALKiE,IACHA,EAAO,IAAIkiB,EAAM3oB,KAAMiK,GACvB/J,EAAAA,QAAEF,MAAMyG,KA7hBC,WA6hBcA,IAGH,iBAAXjE,EAAqB,CAC9B,GAA4B,oBAAjBiE,EAAKjE,GACd,MAAM,IAAIyB,UAAJ,oBAAkCzB,EAAlC,KAGRiE,EAAKjE,GAAQ6K,QACJpD,EAAQgG,MACjBxJ,EAAKwJ,KAAK5C,+CAjed,MAvEY,wCA2EZ,OAAOxE,SApBL8f,GA6fNzoB,EAAAA,QAAEU,UAAUiG,GAphBc,0BAYG,yBAwgB8B,SAAUvC,GAAO,IACtEK,EADsE0nB,EAAArsB,KAEpEgB,EAAWZ,EAAKU,uBAAuBd,MAEzCgB,IACF2D,EAAS/D,SAASQ,cAAcJ,IAGlC,IAAMwB,EAAStC,EAAAA,QAAEyE,GAAQ8B,KA3jBV,YA4jBb,SADamF,EAAA,GAER1L,EAAAA,QAAEyE,GAAQ8B,OACVvG,EAAAA,QAAEF,MAAMyG,QAGM,MAAjBzG,KAAKmI,SAAoC,SAAjBnI,KAAKmI,SAC/B7D,EAAMsC,iBAGR,IAAM0K,EAAUpR,EAAAA,QAAEyE,GAAQxE,IA9iBZ,iBA8iB4B,SAAAonB,GACpCA,EAAU9hB,sBAKd6L,EAAQnR,IArjBM,mBAqjBY,WACpBD,EAAAA,QAAEmsB,GAAMznB,GAAG,aACbynB,EAAK1kB,cAKXghB,GAAMriB,iBAAiBxD,KAAK5C,EAAAA,QAAEyE,GAASnC,EAAQxC,SASjDE,EAAAA,QAAEiE,GAAF,MAAawkB,GAAMriB,iBACnBpG,EAAAA,QAAEiE,GAAF,MAAW2C,YAAc6hB,GACzBzoB,EAAAA,QAAEiE,GAAF,MAAW4C,WAAa,WAEtB,OADA7G,EAAAA,QAAEiE,GAAF,MAAae,GACNyjB,GAAMriB,kBC1mBf,IAAMgmB,GAAW,CACf,aACA,OACA,OACA,WACA,WACA,SACA,MACA,cAKWC,GAAmB,CAE9BC,IAAK,CAAC,QAAS,MAAO,KAAM,OAAQ,OAJP,kBAK7BnS,EAAG,CAAC,SAAU,OAAQ,QAAS,OAC/BF,KAAM,GACNG,EAAG,GACHmS,GAAI,GACJC,IAAK,GACLC,KAAM,GACNC,IAAK,GACLC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJ5kB,EAAG,GACH6kB,IAAK,CAAC,MAAO,SAAU,MAAO,QAAS,QAAS,UAChDC,GAAI,GACJC,GAAI,GACJC,EAAG,GACHC,IAAK,GACLC,EAAG,GACHC,MAAO,GACPC,KAAM,GACNC,IAAK,GACLC,IAAK,GACLC,OAAQ,GACRC,EAAG,GACHC,GAAI,IAQAC,GAAmB,8DAOnBC,GAAmB,qIAyBlB,SAASC,GAAaC,EAAYC,EAAWC,GAClD,GAA0B,IAAtBF,EAAW3lB,OACb,OAAO2lB,EAGT,GAAIE,GAAoC,mBAAfA,EACvB,OAAOA,EAAWF,GAQpB,IALA,IACMG,GADY,IAAIpmB,OAAOqmB,WACKC,gBAAgBL,EAAY,aACxDM,EAAgBhsB,OAAOsX,KAAKqU,GAC5BrC,EAAW,GAAG3jB,MAAMxF,KAAK0rB,EAAgB9b,KAAKnK,iBAAiB,MAZPqmB,EAAA,SAcrDpmB,EAAOC,GACd,IAAMwQ,EAAKgT,EAASzjB,GACdqmB,EAAS5V,EAAG1G,SAASnP,cAE3B,IAA0D,IAAtDurB,EAAc7hB,QAAQmM,EAAG1G,SAASnP,eAGpC,OAFA6V,EAAGlV,WAAW0a,YAAYxF,GAE1B,WAGF,IAAM6V,EAAgB,GAAGxmB,MAAMxF,KAAKmW,EAAGgE,YACjC8R,EAAwB,GAAGpO,OAAO2N,EAAU,MAAQ,GAAIA,EAAUO,IAAW,IAEnFC,EAAcpS,SAAQ,SAAAjM,IAlD1B,SAA0BA,EAAMue,GAC9B,IAAMC,EAAWxe,EAAK8B,SAASnP,cAE/B,IAAgD,IAA5C4rB,EAAqBliB,QAAQmiB,GAC/B,OAAoC,IAAhC3C,GAASxf,QAAQmiB,IACZ/sB,QAAQuO,EAAKye,UAAU/rB,MAAM+qB,KAAqBzd,EAAKye,UAAU/rB,MAAMgrB,KASlF,IAHA,IAAMgB,EAASH,EAAqBvf,QAAO,SAAA2f,GAAS,OAAIA,aAAqB/rB,UAGpEmF,EAAI,EAAGC,EAAM0mB,EAAOzmB,OAAQF,EAAIC,EAAKD,IAC5C,GAAIymB,EAAS9rB,MAAMgsB,EAAO3mB,IACxB,OAAO,EAIX,OAAO,GA+BE6mB,CAAiB5e,EAAMse,IAC1B9V,EAAGoF,gBAAgB5N,EAAK8B,cAfrB/J,EAAI,EAAGC,EAAMwjB,EAASvjB,OAAQF,EAAIC,EAAKD,IAAKomB,EAA5CpmB,GAoBT,OAAOgmB,EAAgB9b,KAAK4c,UCxG9B,IAAMrqB,GAAO,UAIPC,GAAqBhF,EAAAA,QAAEiE,GAAGc,IAE1BsqB,GAAqB,IAAIlsB,OAAJ,wBAAyC,KAC9DmsB,GAAwB,CAAC,WAAY,YAAa,cAElDpmB,GAAc,CAClBqmB,UAAW,UACXC,SAAU,SACVC,MAAO,4BACP3tB,QAAS,SACT4tB,MAAO,kBACP7a,KAAM,UACN/T,SAAU,mBACV6Y,UAAW,oBACXhB,OAAQ,2BACRgX,UAAW,2BACXC,kBAAmB,iBACnBpJ,SAAU,mBACVqJ,YAAa,oBACbC,SAAU,UACVzB,WAAY,kBACZD,UAAW,SACX1H,aAAc,iBAGVqJ,GAAgB,CACpBC,KAAM,OACNC,IAAK,MACLC,MAAO,QACPC,OAAQ,SACRC,KAAM,QAGFznB,GAAU,CACd4mB,WAAW,EACXC,SAAU,uGAGV1tB,QAAS,cACT2tB,MAAO,GACPC,MAAO,EACP7a,MAAM,EACN/T,UAAU,EACV6Y,UAAW,MACXhB,OAAQ,EACRgX,WAAW,EACXC,kBAAmB,OACnBpJ,SAAU,eACVqJ,YAAa,GACbC,UAAU,EACVzB,WAAY,KACZD,UAAW/B,GACX3F,aAAc,MAMV5gB,GAAQ,CACZuqB,KAAI,kBACJC,OAAM,oBACNC,KAAI,kBACJC,MAAK,mBACLC,SAAQ,sBACRC,MAAK,mBACLC,QAAO,qBACPC,SAAQ,sBACRC,WAAU,wBACVC,WAAU,yBAoBNC,GAAAA,WACJ,SAAAA,EAAYlwB,EAASyB,GACnB,GAAsB,oBAAX2jB,GACT,MAAM,IAAIliB,UAAU,+DAItBjE,KAAKkxB,YAAa,EAClBlxB,KAAKmxB,SAAW,EAChBnxB,KAAKoxB,YAAc,GACnBpxB,KAAKqxB,eAAiB,GACtBrxB,KAAK8mB,QAAU,KAGf9mB,KAAKe,QAAUA,EACff,KAAKwC,OAASxC,KAAKkK,WAAW1H,GAC9BxC,KAAKsxB,IAAM,KAEXtxB,KAAKuxB,2CAmCPC,OAAA,WACExxB,KAAKkxB,YAAa,KAGpBO,QAAA,WACEzxB,KAAKkxB,YAAa,KAGpBQ,cAAA,WACE1xB,KAAKkxB,YAAclxB,KAAKkxB,cAG1BhqB,OAAA,SAAO5C,GACL,GAAKtE,KAAKkxB,WAIV,GAAI5sB,EAAO,CACT,IAAMqtB,EAAU3xB,KAAK8nB,YAAY8J,SAC7BzJ,EAAUjoB,EAAAA,QAAEoE,EAAM6M,eAAe1K,KAAKkrB,GAErCxJ,IACHA,EAAU,IAAInoB,KAAK8nB,YACjBxjB,EAAM6M,cACNnR,KAAK6xB,sBAEP3xB,EAAAA,QAAEoE,EAAM6M,eAAe1K,KAAKkrB,EAASxJ,IAGvCA,EAAQkJ,eAAeS,OAAS3J,EAAQkJ,eAAeS,MAEnD3J,EAAQ4J,uBACV5J,EAAQ6J,OAAO,KAAM7J,GAErBA,EAAQ8J,OAAO,KAAM9J,OAElB,CACL,GAAIjoB,EAAAA,QAAEF,KAAKkyB,iBAAiBhsB,SA1GV,QA4GhB,YADAlG,KAAKiyB,OAAO,KAAMjyB,MAIpBA,KAAKgyB,OAAO,KAAMhyB,UAItB2F,QAAA,WACE+G,aAAa1M,KAAKmxB,UAElBjxB,EAAAA,QAAE0F,WAAW5F,KAAKe,QAASf,KAAK8nB,YAAY8J,UAE5C1xB,EAAAA,QAAEF,KAAKe,SAAS4K,IAAI3L,KAAK8nB,YAAYlf,WACrC1I,EAAAA,QAAEF,KAAKe,SAAS+E,QAAQ,UAAU6F,IAAI,gBAAiB3L,KAAKmyB,mBAExDnyB,KAAKsxB,KACPpxB,EAAAA,QAAEF,KAAKsxB,KAAKjrB,SAGdrG,KAAKkxB,WAAa,KAClBlxB,KAAKmxB,SAAW,KAChBnxB,KAAKoxB,YAAc,KACnBpxB,KAAKqxB,eAAiB,KAClBrxB,KAAK8mB,SACP9mB,KAAK8mB,QAAQ1I,UAGfpe,KAAK8mB,QAAU,KACf9mB,KAAKe,QAAU,KACff,KAAKwC,OAAS,KACdxC,KAAKsxB,IAAM,QAGbrhB,KAAA,WAAO,IAAAlQ,EAAAC,KACL,GAAuC,SAAnCE,EAAAA,QAAEF,KAAKe,SAASS,IAAI,WACtB,MAAM,IAAI+B,MAAM,uCAGlB,IAAMgkB,EAAYrnB,EAAAA,QAAE8F,MAAMhG,KAAK8nB,YAAY9hB,MAAMyqB,MACjD,GAAIzwB,KAAKoyB,iBAAmBpyB,KAAKkxB,WAAY,CAC3ChxB,EAAAA,QAAEF,KAAKe,SAASiB,QAAQulB,GAExB,IAAM8K,EAAajyB,EAAKqD,eAAezD,KAAKe,SACtCuxB,EAAapyB,EAAAA,QAAEuH,SACJ,OAAf4qB,EAAsBA,EAAaryB,KAAKe,QAAQoR,cAAczO,gBAC9D1D,KAAKe,SAGP,GAAIwmB,EAAU9hB,uBAAyB6sB,EACrC,OAGF,IAAMhB,EAAMtxB,KAAKkyB,gBACXK,EAAQnyB,EAAKI,OAAOR,KAAK8nB,YAAY7iB,MAE3CqsB,EAAIzpB,aAAa,KAAM0qB,GACvBvyB,KAAKe,QAAQ8G,aAAa,mBAAoB0qB,GAE9CvyB,KAAKwyB,aAEDxyB,KAAKwC,OAAOitB,WACdvvB,EAAAA,QAAEoxB,GAAKvjB,SA1KS,QA6KlB,IAAM8L,EAA6C,mBAA1B7Z,KAAKwC,OAAOqX,UACnC7Z,KAAKwC,OAAOqX,UAAU/W,KAAK9C,KAAMsxB,EAAKtxB,KAAKe,SAC3Cf,KAAKwC,OAAOqX,UAER4Y,EAAazyB,KAAK0yB,eAAe7Y,GACvC7Z,KAAK2yB,mBAAmBF,GAExB,IAAM5C,EAAY7vB,KAAK4yB,gBACvB1yB,EAAAA,QAAEoxB,GAAK7qB,KAAKzG,KAAK8nB,YAAY8J,SAAU5xB,MAElCE,EAAAA,QAAEuH,SAASzH,KAAKe,QAAQoR,cAAczO,gBAAiB1D,KAAKsxB,MAC/DpxB,EAAAA,QAAEoxB,GAAKlG,SAASyE,GAGlB3vB,EAAAA,QAAEF,KAAKe,SAASiB,QAAQhC,KAAK8nB,YAAY9hB,MAAM2qB,UAE/C3wB,KAAK8mB,QAAU,IAAIX,GAAOnmB,KAAKe,QAASuwB,EAAKtxB,KAAK0nB,iBAAiB+K,IAEnEvyB,EAAAA,QAAEoxB,GAAKvjB,SA9LW,QA+LlB7N,EAAAA,QAAEoxB,GAAKvjB,SAAS/N,KAAKwC,OAAOutB,aAMxB,iBAAkBnvB,SAAS8C,iBAC7BxD,EAAAA,QAAEU,SAAS8R,MAAM5E,WAAWjH,GAAG,YAAa,KAAM3G,EAAAA,QAAEynB,MAGtD,IAAMkL,EAAW,WACX9yB,EAAKyC,OAAOitB,WACd1vB,EAAK+yB,iBAGP,IAAMC,EAAiBhzB,EAAKqxB,YAC5BrxB,EAAKqxB,YAAc,KAEnBlxB,EAAAA,QAAEH,EAAKgB,SAASiB,QAAQjC,EAAK+nB,YAAY9hB,MAAM0qB,OAjO/B,QAmOZqC,GACFhzB,EAAKkyB,OAAO,KAAMlyB,IAItB,GAAIG,EAAAA,QAAEF,KAAKsxB,KAAKprB,SAzNE,QAyNyB,CACzC,IAAM3E,EAAqBnB,EAAKkB,iCAAiCtB,KAAKsxB,KAEtEpxB,EAAAA,QAAEF,KAAKsxB,KACJnxB,IAAIC,EAAKC,eAAgBwyB,GACzBxuB,qBAAqB9C,QAExBsxB,QAKN7iB,KAAA,SAAKiP,GAAU,IAAAjT,EAAAhM,KACPsxB,EAAMtxB,KAAKkyB,gBACXtK,EAAY1nB,EAAAA,QAAE8F,MAAMhG,KAAK8nB,YAAY9hB,MAAMuqB,MAC3CsC,EAAW,WAxPI,SAyPf7mB,EAAKolB,aAAoCE,EAAIvtB,YAC/CutB,EAAIvtB,WAAW0a,YAAY6S,GAG7BtlB,EAAKgnB,iBACLhnB,EAAKjL,QAAQsd,gBAAgB,oBAC7Bne,EAAAA,QAAE8L,EAAKjL,SAASiB,QAAQgK,EAAK8b,YAAY9hB,MAAMwqB,QAC1B,OAAjBxkB,EAAK8a,SACP9a,EAAK8a,QAAQ1I,UAGXa,GACFA,KAMJ,GAFA/e,EAAAA,QAAEF,KAAKe,SAASiB,QAAQ4lB,IAEpBA,EAAUniB,qBAAd,CAgBA,GAZAvF,EAAAA,QAAEoxB,GAAKrrB,YA9Pa,QAkQhB,iBAAkBrF,SAAS8C,iBAC7BxD,EAAAA,QAAEU,SAAS8R,MAAM5E,WAAWnC,IAAI,YAAa,KAAMzL,EAAAA,QAAEynB,MAGvD3nB,KAAKqxB,eAAL,OAAqC,EACrCrxB,KAAKqxB,eAAL,OAAqC,EACrCrxB,KAAKqxB,eAAL,OAAqC,EAEjCnxB,EAAAA,QAAEF,KAAKsxB,KAAKprB,SA3QI,QA2QuB,CACzC,IAAM3E,EAAqBnB,EAAKkB,iCAAiCgwB,GAEjEpxB,EAAAA,QAAEoxB,GACCnxB,IAAIC,EAAKC,eAAgBwyB,GACzBxuB,qBAAqB9C,QAExBsxB,IAGF7yB,KAAKoxB,YAAc,OAGrBtU,OAAA,WACuB,OAAjB9c,KAAK8mB,SACP9mB,KAAK8mB,QAAQxH,oBAMjB8S,cAAA,WACE,OAAOlwB,QAAQlC,KAAKizB,eAGtBN,mBAAA,SAAmBF,GACjBvyB,EAAAA,QAAEF,KAAKkyB,iBAAiBnkB,SAAYmlB,cAAgBT,MAGtDP,cAAA,WAEE,OADAlyB,KAAKsxB,IAAMtxB,KAAKsxB,KAAOpxB,EAAAA,QAAEF,KAAKwC,OAAOktB,UAAU,GACxC1vB,KAAKsxB,OAGdkB,WAAA,WACE,IAAMlB,EAAMtxB,KAAKkyB,gBACjBlyB,KAAKmzB,kBAAkBjzB,EAAAA,QAAEoxB,EAAI/oB,iBA5SF,mBA4S6CvI,KAAKizB,YAC7E/yB,EAAAA,QAAEoxB,GAAKrrB,YAAemtB,gBAGxBD,kBAAA,SAAkB3sB,EAAU6sB,GACH,iBAAZA,IAAyBA,EAAQhxB,WAAYgxB,EAAQjvB,OAa5DpE,KAAKwC,OAAOuS,MACV/U,KAAKwC,OAAOwtB,WACdqD,EAAUjF,GAAaiF,EAASrzB,KAAKwC,OAAO8rB,UAAWtuB,KAAKwC,OAAO+rB,aAGrE/nB,EAASuO,KAAKse,IAEd7sB,EAAS8sB,KAAKD,GAlBVrzB,KAAKwC,OAAOuS,KACT7U,EAAAA,QAAEmzB,GAASxtB,SAASjB,GAAG4B,IAC1BA,EAAS+sB,QAAQC,OAAOH,GAG1B7sB,EAAS8sB,KAAKpzB,EAAAA,QAAEmzB,GAASC,WAiB/BL,SAAA,WACE,IAAItD,EAAQ3vB,KAAKe,QAAQE,aAAa,uBAQtC,OANK0uB,IACHA,EAAqC,mBAAtB3vB,KAAKwC,OAAOmtB,MACzB3vB,KAAKwC,OAAOmtB,MAAM7sB,KAAK9C,KAAKe,SAC5Bf,KAAKwC,OAAOmtB,OAGTA,KAKTjI,iBAAA,SAAiB+K,GAAY,IAAAtmB,EAAAnM,KAuB3B,OAAA4L,EAAA,GAtBwB,CACtBiO,UAAW4Y,EACXpW,UAAW,CACTxD,OAAQ7Y,KAAKioB,aACb5K,KAAM,CACJuG,SAAU5jB,KAAKwC,OAAOstB,mBAExB/M,MAAO,CACLhiB,QA/Va,UAiWfohB,gBAAiB,CACf9I,kBAAmBrZ,KAAKwC,OAAOkkB,WAGnChJ,SAAU,SAAAjX,GACJA,EAAK6W,oBAAsB7W,EAAKoT,WAClC1N,EAAKsnB,6BAA6BhtB,IAGtCgX,SAAU,SAAAhX,GAAI,OAAI0F,EAAKsnB,6BAA6BhtB,KAKjDzG,KAAKwC,OAAOokB,iBAInBqB,WAAA,WAAa,IAAA5Z,EAAArO,KACL6Y,EAAS,GAef,MAbkC,mBAAvB7Y,KAAKwC,OAAOqW,OACrBA,EAAO1U,GAAK,SAAAsC,GAMV,OALAA,EAAK6Q,QAAL1L,EAAA,GACKnF,EAAK6Q,QACJjJ,EAAK7L,OAAOqW,OAAOpS,EAAK6Q,QAASjJ,EAAKtN,UAAY,IAGjD0F,GAGToS,EAAOA,OAAS7Y,KAAKwC,OAAOqW,OAGvBA,KAGT+Z,cAAA,WACE,OAA8B,IAA1B5yB,KAAKwC,OAAOqtB,UACPjvB,SAAS8R,KAGdtS,EAAK+B,UAAUnC,KAAKwC,OAAOqtB,WACtB3vB,EAAAA,QAAEF,KAAKwC,OAAOqtB,WAGhB3vB,EAAAA,QAAEU,UAAUob,KAAKhc,KAAKwC,OAAOqtB,cAGtC6C,eAAA,SAAe7Y,GACb,OAAOoW,GAAcpW,EAAUrW,kBAGjC+tB,cAAA,WAAgB,IAAA/G,EAAAxqB,KACGA,KAAKwC,OAAOR,QAAQH,MAAM,KAElC6a,SAAQ,SAAA1a,GACf,GAAgB,UAAZA,EACF9B,EAAAA,QAAEsqB,EAAKzpB,SAAS8F,GACd2jB,EAAK1C,YAAY9hB,MAAM4qB,MACvBpG,EAAKhoB,OAAOxB,UACZ,SAAAsD,GAAK,OAAIkmB,EAAKtjB,OAAO5C,WAElB,GA3ZU,WA2ZNtC,EAA4B,CACrC,IAAM0xB,EA/ZQ,UA+ZE1xB,EACdwoB,EAAK1C,YAAY9hB,MAAM+qB,WACvBvG,EAAK1C,YAAY9hB,MAAM6qB,QACnB8C,EAlaQ,UAkaG3xB,EACfwoB,EAAK1C,YAAY9hB,MAAMgrB,WACvBxG,EAAK1C,YAAY9hB,MAAM8qB,SAEzB5wB,EAAAA,QAAEsqB,EAAKzpB,SACJ8F,GAAG6sB,EAASlJ,EAAKhoB,OAAOxB,UAAU,SAAAsD,GAAK,OAAIkmB,EAAKwH,OAAO1tB,MACvDuC,GAAG8sB,EAAUnJ,EAAKhoB,OAAOxB,UAAU,SAAAsD,GAAK,OAAIkmB,EAAKyH,OAAO3tB,UAI/DtE,KAAKmyB,kBAAoB,WACnB3H,EAAKzpB,SACPypB,EAAKxa,QAIT9P,EAAAA,QAAEF,KAAKe,SAAS+E,QAAQ,UAAUe,GAAG,gBAAiB7G,KAAKmyB,mBAEvDnyB,KAAKwC,OAAOxB,SACdhB,KAAKwC,OAALoJ,EAAA,GACK5L,KAAKwC,OADV,CAEER,QAAS,SACThB,SAAU,KAGZhB,KAAK4zB,eAITA,UAAA,WACE,IAAMC,SAAmB7zB,KAAKe,QAAQE,aAAa,wBAE/CjB,KAAKe,QAAQE,aAAa,UAA0B,WAAd4yB,KACxC7zB,KAAKe,QAAQ8G,aACX,sBACA7H,KAAKe,QAAQE,aAAa,UAAY,IAGxCjB,KAAKe,QAAQ8G,aAAa,QAAS,QAIvCmqB,OAAA,SAAO1tB,EAAO6jB,GACZ,IAAMwJ,EAAU3xB,KAAK8nB,YAAY8J,UACjCzJ,EAAUA,GAAWjoB,EAAAA,QAAEoE,EAAM6M,eAAe1K,KAAKkrB,MAG/CxJ,EAAU,IAAInoB,KAAK8nB,YACjBxjB,EAAM6M,cACNnR,KAAK6xB,sBAEP3xB,EAAAA,QAAEoE,EAAM6M,eAAe1K,KAAKkrB,EAASxJ,IAGnC7jB,IACF6jB,EAAQkJ,eACS,YAAf/sB,EAAMgD,KAzdQ,QADA,UA2dZ,GAGFpH,EAAAA,QAAEioB,EAAQ+J,iBAAiBhsB,SAneX,SAjBC,SAofuCiiB,EAAQiJ,YAClEjJ,EAAQiJ,YArfW,QAyfrB1kB,aAAayb,EAAQgJ,UAErBhJ,EAAQiJ,YA3fa,OA6fhBjJ,EAAQ3lB,OAAOotB,OAAUzH,EAAQ3lB,OAAOotB,MAAM3f,KAKnDkY,EAAQgJ,SAAW7wB,YAAW,WAlgBT,SAmgBf6nB,EAAQiJ,aACVjJ,EAAQlY,SAETkY,EAAQ3lB,OAAOotB,MAAM3f,MARtBkY,EAAQlY,WAWZgiB,OAAA,SAAO3tB,EAAO6jB,GACZ,IAAMwJ,EAAU3xB,KAAK8nB,YAAY8J,UACjCzJ,EAAUA,GAAWjoB,EAAAA,QAAEoE,EAAM6M,eAAe1K,KAAKkrB,MAG/CxJ,EAAU,IAAInoB,KAAK8nB,YACjBxjB,EAAM6M,cACNnR,KAAK6xB,sBAEP3xB,EAAAA,QAAEoE,EAAM6M,eAAe1K,KAAKkrB,EAASxJ,IAGnC7jB,IACF6jB,EAAQkJ,eACS,aAAf/sB,EAAMgD,KAhgBQ,QADA,UAkgBZ,GAGF6gB,EAAQ4J,yBAIZrlB,aAAayb,EAAQgJ,UAErBhJ,EAAQiJ,YAhiBY,MAkiBfjJ,EAAQ3lB,OAAOotB,OAAUzH,EAAQ3lB,OAAOotB,MAAM5f,KAKnDmY,EAAQgJ,SAAW7wB,YAAW,WAviBV,QAwiBd6nB,EAAQiJ,aACVjJ,EAAQnY,SAETmY,EAAQ3lB,OAAOotB,MAAM5f,MARtBmY,EAAQnY,WAWZ+hB,qBAAA,WACE,IAAK,IAAM/vB,KAAWhC,KAAKqxB,eACzB,GAAIrxB,KAAKqxB,eAAervB,GACtB,OAAO,EAIX,OAAO,KAGTkI,WAAA,SAAW1H,GACT,IAAMsxB,EAAiB5zB,EAAAA,QAAEF,KAAKe,SAAS0F,OAwCvC,OAtCA9D,OAAOsX,KAAK6Z,GACTpX,SAAQ,SAAAqX,IAC0C,IAA7CvE,GAAsB1iB,QAAQinB,WACzBD,EAAeC,MAUA,iBAN5BvxB,EAAMoJ,EAAA,GACD5L,KAAK8nB,YAAYjf,QACjBirB,EACmB,iBAAXtxB,GAAuBA,EAASA,EAAS,KAGpCotB,QAChBptB,EAAOotB,MAAQ,CACb3f,KAAMzN,EAAOotB,MACb5f,KAAMxN,EAAOotB,QAIW,iBAAjBptB,EAAOmtB,QAChBntB,EAAOmtB,MAAQntB,EAAOmtB,MAAMzsB,YAGA,iBAAnBV,EAAO6wB,UAChB7wB,EAAO6wB,QAAU7wB,EAAO6wB,QAAQnwB,YAGlC9C,EAAKkC,gBACH2C,GACAzC,EACAxC,KAAK8nB,YAAY1e,aAGf5G,EAAOwtB,WACTxtB,EAAOktB,SAAWtB,GAAa5rB,EAAOktB,SAAUltB,EAAO8rB,UAAW9rB,EAAO+rB,aAGpE/rB,KAGTqvB,mBAAA,WACE,IAAMrvB,EAAS,GAEf,GAAIxC,KAAKwC,OACP,IAAK,IAAMwU,KAAOhX,KAAKwC,OACjBxC,KAAK8nB,YAAYjf,QAAQmO,KAAShX,KAAKwC,OAAOwU,KAChDxU,EAAOwU,GAAOhX,KAAKwC,OAAOwU,IAKhC,OAAOxU,KAGTwwB,eAAA,WACE,IAAMgB,EAAO9zB,EAAAA,QAAEF,KAAKkyB,iBACd+B,EAAWD,EAAKvjB,KAAK,SAAStN,MAAMosB,IACzB,OAAb0E,GAAqBA,EAASvrB,QAChCsrB,EAAK/tB,YAAYguB,EAASC,KAAK,QAInCT,6BAAA,SAA6BU,GAC3Bn0B,KAAKsxB,IAAM6C,EAAW5d,SAAS4C,OAC/BnZ,KAAKgzB,iBACLhzB,KAAK2yB,mBAAmB3yB,KAAK0yB,eAAeyB,EAAWta,eAGzDiZ,eAAA,WACE,IAAMxB,EAAMtxB,KAAKkyB,gBACXkC,EAAsBp0B,KAAKwC,OAAOitB,UAEA,OAApC6B,EAAIrwB,aAAa,iBAIrBf,EAAAA,QAAEoxB,GAAKrrB,YAznBa,QA0nBpBjG,KAAKwC,OAAOitB,WAAY,EACxBzvB,KAAKgQ,OACLhQ,KAAKiQ,OACLjQ,KAAKwC,OAAOitB,UAAY2E,MAKnB9tB,iBAAP,SAAwB9D,GACtB,OAAOxC,KAAKuG,MAAK,WACf,IAAMC,EAAWtG,EAAAA,QAAEF,MACfyG,EAAOD,EAASC,KA9sBT,cA+sBLwD,EAA4B,iBAAXzH,GAAuBA,EAE9C,IAAKiE,IAAQ,eAAenD,KAAKd,MAI5BiE,IACHA,EAAO,IAAIwqB,EAAQjxB,KAAMiK,GACzBzD,EAASC,KAvtBA,aAutBeA,IAGJ,iBAAXjE,GAAqB,CAC9B,GAA4B,oBAAjBiE,EAAKjE,GACd,MAAM,IAAIyB,UAAJ,oBAAkCzB,EAAlC,KAGRiE,EAAKjE,kDA7mBT,MAnHY,wCAuHZ,OAAOqG,gCAIP,OAAO5D,oCAIP,MA9Ha,2CAkIb,OAAOe,qCAIP,MArIW,kDAyIX,OAAOoD,SAhDL6nB,GAipBN/wB,EAAAA,QAAEiE,GAAGc,IAAQgsB,GAAQ3qB,iBACrBpG,EAAAA,QAAEiE,GAAGc,IAAM6B,YAAcmqB,GACzB/wB,EAAAA,QAAEiE,GAAGc,IAAM8B,WAAa,WAEtB,OADA7G,EAAAA,QAAEiE,GAAGc,IAAQC,GACN+rB,GAAQ3qB,kBCtvBjB,IAAMrB,GAAO,UAIPC,GAAqBhF,EAAAA,QAAEiE,GAAGc,IAE1BsqB,GAAqB,IAAIlsB,OAAJ,wBAAyC,KAE9DwF,GAAO+C,EAAA,GACRqlB,GAAQpoB,QADA,CAEXgR,UAAW,QACX7X,QAAS,QACTqxB,QAAS,GACT3D,SAAU,wIAMNtmB,GAAWwC,EAAA,GACZqlB,GAAQ7nB,YADI,CAEfiqB,QAAS,8BASLrtB,GAAQ,CACZuqB,KAAI,kBACJC,OAAM,oBACNC,KAAI,kBACJC,MAAK,mBACLC,SAAQ,sBACRC,MAAK,mBACLC,QAAO,qBACPC,SAAQ,sBACRC,WAAU,wBACVC,WAAU,yBASNqD,GAAAA,SAAAA,+KAiCJjC,cAAA,WACE,OAAOpyB,KAAKizB,YAAcjzB,KAAKs0B,iBAGjC3B,mBAAA,SAAmBF,GACjBvyB,EAAAA,QAAEF,KAAKkyB,iBAAiBnkB,SAAYmlB,cAAgBT,MAGtDP,cAAA,WAEE,OADAlyB,KAAKsxB,IAAMtxB,KAAKsxB,KAAOpxB,EAAAA,QAAEF,KAAKwC,OAAOktB,UAAU,GACxC1vB,KAAKsxB,OAGdkB,WAAA,WACE,IAAMwB,EAAO9zB,EAAAA,QAAEF,KAAKkyB,iBAGpBlyB,KAAKmzB,kBAAkBa,EAAKhY,KAxET,mBAwE+Bhc,KAAKizB,YACvD,IAAII,EAAUrzB,KAAKs0B,cACI,mBAAZjB,IACTA,EAAUA,EAAQvwB,KAAK9C,KAAKe,UAG9Bf,KAAKmzB,kBAAkBa,EAAKhY,KA7EP,iBA6E+BqX,GAEpDW,EAAK/tB,YAAemtB,gBAKtBkB,YAAA,WACE,OAAOt0B,KAAKe,QAAQE,aAAa,iBAC/BjB,KAAKwC,OAAO6wB,WAGhBL,eAAA,WACE,IAAMgB,EAAO9zB,EAAAA,QAAEF,KAAKkyB,iBACd+B,EAAWD,EAAKvjB,KAAK,SAAStN,MAAMosB,IACzB,OAAb0E,GAAqBA,EAASvrB,OAAS,GACzCsrB,EAAK/tB,YAAYguB,EAASC,KAAK,QAM5B5tB,iBAAP,SAAwB9D,GACtB,OAAOxC,KAAKuG,MAAK,WACf,IAAIE,EAAOvG,EAAAA,QAAEF,MAAMyG,KA/HR,cAgILwD,EAA4B,iBAAXzH,EAAsBA,EAAS,KAEtD,IAAKiE,IAAQ,eAAenD,KAAKd,MAI5BiE,IACHA,EAAO,IAAI4tB,EAAQr0B,KAAMiK,GACzB/J,EAAAA,QAAEF,MAAMyG,KAxIC,aAwIcA,IAGH,iBAAXjE,GAAqB,CAC9B,GAA4B,oBAAjBiE,EAAKjE,GACd,MAAM,IAAIyB,UAAJ,oBAAkCzB,EAAlC,KAGRiE,EAAKjE,kDA7FT,MApDY,wCAwDZ,OAAOqG,gCAIP,OAAO5D,oCAIP,MA/Da,2CAmEb,OAAOe,qCAIP,MAtEW,kDA0EX,OAAOoD,SA5BLirB,CAAgBpD,IA6GtB/wB,EAAAA,QAAEiE,GAAGc,IAAQovB,GAAQ/tB,iBACrBpG,EAAAA,QAAEiE,GAAGc,IAAM6B,YAAcutB,GACzBn0B,EAAAA,QAAEiE,GAAGc,IAAM8B,WAAa,WAEtB,OADA7G,EAAAA,QAAEiE,GAAGc,IAAQC,GACNmvB,GAAQ/tB,kBClKjB,IAAMrB,GAAO,YAKPC,GAAqBhF,EAAAA,QAAEiE,GAAGc,IAE1B4D,GAAU,CACdgQ,OAAQ,GACR0b,OAAQ,OACR5vB,OAAQ,IAGJyE,GAAc,CAClByP,OAAQ,SACR0b,OAAQ,SACR5vB,OAAQ,oBA4BJ6vB,GAAAA,WACJ,SAAAA,EAAYzzB,EAASyB,GAAQ,IAAAzC,EAAAC,KAC3BA,KAAKoF,SAAWrE,EAChBf,KAAKy0B,eAAqC,SAApB1zB,EAAQoH,QAAqBC,OAASrH,EAC5Df,KAAKiK,QAAUjK,KAAKkK,WAAW1H,GAC/BxC,KAAK2P,UAAe3P,KAAKiK,QAAQtF,OAAb3E,cACKA,KAAKiK,QAAQtF,OADrB,qBAEQ3E,KAAKiK,QAAQtF,OAFrB,kBAGjB3E,KAAK00B,SAAW,GAChB10B,KAAK20B,SAAW,GAChB30B,KAAK40B,cAAgB,KACrB50B,KAAK60B,cAAgB,EAErB30B,EAAAA,QAAEF,KAAKy0B,gBAAgB5tB,GArCT,uBAqC0B,SAAAvC,GAAK,OAAIvE,EAAK+0B,SAASxwB,MAE/DtE,KAAK+0B,UACL/0B,KAAK80B,sCAePC,QAAA,WAAU,IAAA/oB,EAAAhM,KACFg1B,EAAah1B,KAAKy0B,iBAAmBz0B,KAAKy0B,eAAersB,OAzC7C,SACE,WA2Cd6sB,EAAuC,SAAxBj1B,KAAKiK,QAAQsqB,OAChCS,EAAah1B,KAAKiK,QAAQsqB,OAEtBW,EA9Cc,aA8CDD,EACjBj1B,KAAKm1B,gBAAkB,EAEzBn1B,KAAK00B,SAAW,GAChB10B,KAAK20B,SAAW,GAEhB30B,KAAK60B,cAAgB70B,KAAKo1B,mBAEV,GAAG9sB,MAAMxF,KAAKlC,SAAS2H,iBAAiBvI,KAAK2P,YAG1DuK,KAAI,SAAAnZ,GACH,IAAI4D,EACE0wB,EAAiBj1B,EAAKU,uBAAuBC,GAMnD,GAJIs0B,IACF1wB,EAAS/D,SAASQ,cAAci0B,IAG9B1wB,EAAQ,CACV,IAAM2wB,EAAY3wB,EAAOkM,wBACzB,GAAIykB,EAAUjf,OAASif,EAAUlf,OAE/B,MAAO,CACLlW,EAAAA,QAAEyE,GAAQswB,KAAgB1f,IAAM2f,EAChCG,GAKN,OAAO,QAER5lB,QAAO,SAAA+Y,GAAI,OAAIA,KACfpO,MAAK,SAACC,EAAGC,GAAJ,OAAUD,EAAE,GAAKC,EAAE,MACxBoC,SAAQ,SAAA8L,GACPxc,EAAK0oB,SAAS9kB,KAAK4Y,EAAK,IACxBxc,EAAK2oB,SAAS/kB,KAAK4Y,EAAK,UAI9B7iB,QAAA,WACEzF,EAAAA,QAAE0F,WAAW5F,KAAKoF,SAzHL,gBA0HblF,EAAAA,QAAEF,KAAKy0B,gBAAgB9oB,IAzHZ,iBA2HX3L,KAAKoF,SAAW,KAChBpF,KAAKy0B,eAAiB,KACtBz0B,KAAKiK,QAAU,KACfjK,KAAK2P,UAAY,KACjB3P,KAAK00B,SAAW,KAChB10B,KAAK20B,SAAW,KAChB30B,KAAK40B,cAAgB,KACrB50B,KAAK60B,cAAgB,QAKvB3qB,WAAA,SAAW1H,GAMT,GAA6B,iBAL7BA,EAAMoJ,EAAA,GACD/C,GACmB,iBAAXrG,GAAuBA,EAASA,EAAS,KAGpCmC,QAAuBvE,EAAK+B,UAAUK,EAAOmC,QAAS,CACtE,IAAI0K,EAAKnP,EAAAA,QAAEsC,EAAOmC,QAAQ8L,KAAK,MAC1BpB,IACHA,EAAKjP,EAAKI,OAAOyE,IACjB/E,EAAAA,QAAEsC,EAAOmC,QAAQ8L,KAAK,KAAMpB,IAG9B7M,EAAOmC,OAAP,IAAoB0K,EAKtB,OAFAjP,EAAKkC,gBAAgB2C,GAAMzC,EAAQ4G,IAE5B5G,KAGT2yB,cAAA,WACE,OAAOn1B,KAAKy0B,iBAAmBrsB,OAC7BpI,KAAKy0B,eAAec,YAAcv1B,KAAKy0B,eAAerf,aAG1DggB,iBAAA,WACE,OAAOp1B,KAAKy0B,eAAezK,cAAgBtpB,KAAKwV,IAC9CtV,SAAS8R,KAAKsX,aACdppB,SAAS8C,gBAAgBsmB,iBAI7BwL,iBAAA,WACE,OAAOx1B,KAAKy0B,iBAAmBrsB,OAC7BA,OAAOwQ,YAAc5Y,KAAKy0B,eAAe5jB,wBAAwBuF,UAGrE0e,SAAA,WACE,IAAM1f,EAAYpV,KAAKm1B,gBAAkBn1B,KAAKiK,QAAQ4O,OAChDmR,EAAehqB,KAAKo1B,mBACpBK,EAAYz1B,KAAKiK,QAAQ4O,OAASmR,EAAehqB,KAAKw1B,mBAM5D,GAJIx1B,KAAK60B,gBAAkB7K,GACzBhqB,KAAK+0B,UAGH3f,GAAaqgB,EAAjB,CACE,IAAM9wB,EAAS3E,KAAK20B,SAAS30B,KAAK20B,SAASjsB,OAAS,GAEhD1I,KAAK40B,gBAAkBjwB,GACzB3E,KAAK01B,UAAU/wB,OAJnB,CAUA,GAAI3E,KAAK40B,eAAiBxf,EAAYpV,KAAK00B,SAAS,IAAM10B,KAAK00B,SAAS,GAAK,EAG3E,OAFA10B,KAAK40B,cAAgB,UACrB50B,KAAK21B,SAIP,IAAK,IAAIntB,EAAIxI,KAAK00B,SAAShsB,OAAQF,KAAM,CAChBxI,KAAK40B,gBAAkB50B,KAAK20B,SAASnsB,IACxD4M,GAAapV,KAAK00B,SAASlsB,KACM,oBAAzBxI,KAAK00B,SAASlsB,EAAI,IACtB4M,EAAYpV,KAAK00B,SAASlsB,EAAI,KAGpCxI,KAAK01B,UAAU11B,KAAK20B,SAASnsB,SAKnCktB,UAAA,SAAU/wB,GACR3E,KAAK40B,cAAgBjwB,EAErB3E,KAAK21B,SAEL,IAAMC,EAAU51B,KAAK2P,UAClB9N,MAAM,KACNqY,KAAI,SAAAlZ,GAAQ,OAAOA,EAAP,iBAAgC2D,EAAhC,MAA4C3D,EAA5C,UAA8D2D,EAA9D,QAETkxB,EAAQ31B,EAAAA,QAAE,GAAGoI,MAAMxF,KAAKlC,SAAS2H,iBAAiBqtB,EAAQ1B,KAAK,QAEjE2B,EAAM3vB,SAzMmB,kBA0M3B2vB,EAAM/vB,QAlMc,aAmMjBkW,KAjMwB,oBAkMxBjO,SA3MiB,UA4MpB8nB,EAAM9nB,SA5Mc,YA+MpB8nB,EAAM9nB,SA/Mc,UAkNpB8nB,EAAMC,QA/MoB,qBAgNvB/qB,KAAQgrB,+BACRhoB,SApNiB,UAsNpB8nB,EAAMC,QAnNoB,qBAoNvB/qB,KAlNkB,aAmNlB+C,SApNkB,aAqNlBC,SAzNiB,WA4NtB7N,EAAAA,QAAEF,KAAKy0B,gBAAgBzyB,QAjOP,wBAiO+B,CAC7CqL,cAAe1I,OAInBgxB,OAAA,WACE,GAAGrtB,MAAMxF,KAAKlC,SAAS2H,iBAAiBvI,KAAK2P,YAC1CF,QAAO,SAAAmE,GAAI,OAAIA,EAAKpM,UAAUC,SAnOX,aAoOnBiV,SAAQ,SAAA9I,GAAI,OAAIA,EAAKpM,UAAUnB,OApOZ,gBAyOjBC,iBAAP,SAAwB9D,GACtB,OAAOxC,KAAKuG,MAAK,WACf,IAAIE,EAAOvG,EAAAA,QAAEF,MAAMyG,KAjQR,gBAyQX,GALKA,IACHA,EAAO,IAAI+tB,EAAUx0B,KAHW,iBAAXwC,GAAuBA,GAI5CtC,EAAAA,QAAEF,MAAMyG,KAtQC,eAsQcA,IAGH,iBAAXjE,EAAqB,CAC9B,GAA4B,oBAAjBiE,EAAKjE,GACd,MAAM,IAAIyB,UAAJ,oBAAkCzB,EAAlC,KAGRiE,EAAKjE,kDA9MT,MAjEY,wCAqEZ,OAAOqG,SA1BL2rB,GAgPNt0B,EAAAA,QAAEkI,QAAQvB,GAvQe,8BAuQS,WAIhC,IAHA,IAAMmvB,EAAa,GAAG1tB,MAAMxF,KAAKlC,SAAS2H,iBAnQlB,wBAsQfC,EAFgBwtB,EAAWttB,OAELF,KAAM,CACnC,IAAMytB,EAAO/1B,EAAAA,QAAE81B,EAAWxtB,IAC1BgsB,GAAUluB,iBAAiBxD,KAAKmzB,EAAMA,EAAKxvB,YAU/CvG,EAAAA,QAAEiE,GAAGc,IAAQuvB,GAAUluB,iBACvBpG,EAAAA,QAAEiE,GAAGc,IAAM6B,YAAc0tB,GACzBt0B,EAAAA,QAAEiE,GAAGc,IAAM8B,WAAa,WAEtB,OADA7G,EAAAA,QAAEiE,GAAGc,IAAQC,GACNsvB,GAAUluB,kBChTnB,IAKMpB,GAAqBhF,EAAAA,QAAEiE,GAAF,IA4BrB+xB,GAAAA,WACJ,SAAAA,EAAYn1B,GACVf,KAAKoF,SAAWrE,6BAWlBkP,KAAA,WAAO,IAAAlQ,EAAAC,KACL,KAAIA,KAAKoF,SAASrB,YACd/D,KAAKoF,SAASrB,WAAW1B,WAAa6R,KAAKiW,cAC3CjqB,EAAAA,QAAEF,KAAKoF,UAAUc,SAnCC,WAoClBhG,EAAAA,QAAEF,KAAKoF,UAAUc,SAnCG,aAgCxB,CAOA,IAAIvB,EACAwxB,EACEC,EAAcl2B,EAAAA,QAAEF,KAAKoF,UAAUU,QApCT,qBAoC0C,GAChE9E,EAAWZ,EAAKU,uBAAuBd,KAAKoF,UAElD,GAAIgxB,EAAa,CACf,IAAMC,EAAwC,OAAzBD,EAAY7jB,UAA8C,OAAzB6jB,EAAY7jB,SAtC7C,iBADH,UAyClB4jB,GADAA,EAAWj2B,EAAAA,QAAEo2B,UAAUp2B,EAAAA,QAAEk2B,GAAapa,KAAKqa,KACvBF,EAASztB,OAAS,GAGxC,IAAMkf,EAAY1nB,EAAAA,QAAE8F,MA1DR,cA0D0B,CACpCqH,cAAerN,KAAKoF,WAGhBmiB,EAAYrnB,EAAAA,QAAE8F,MA5DR,cA4D0B,CACpCqH,cAAe8oB,IASjB,GANIA,GACFj2B,EAAAA,QAAEi2B,GAAUn0B,QAAQ4lB,GAGtB1nB,EAAAA,QAAEF,KAAKoF,UAAUpD,QAAQulB,IAErBA,EAAU9hB,uBACVmiB,EAAUniB,qBADd,CAKIzE,IACF2D,EAAS/D,SAASQ,cAAcJ,IAGlChB,KAAK01B,UACH11B,KAAKoF,SACLgxB,GAGF,IAAMvD,EAAW,WACf,IAAM0D,EAAcr2B,EAAAA,QAAE8F,MAtFV,gBAsF8B,CACxCqH,cAAetN,EAAKqF,WAGhBklB,EAAapqB,EAAAA,QAAE8F,MAxFV,eAwF6B,CACtCqH,cAAe8oB,IAGjBj2B,EAAAA,QAAEi2B,GAAUn0B,QAAQu0B,GACpBr2B,EAAAA,QAAEH,EAAKqF,UAAUpD,QAAQsoB,IAGvB3lB,EACF3E,KAAK01B,UAAU/wB,EAAQA,EAAOZ,WAAY8uB,GAE1CA,SAIJltB,QAAA,WACEzF,EAAAA,QAAE0F,WAAW5F,KAAKoF,SAhHL,UAiHbpF,KAAKoF,SAAW,QAKlBswB,UAAA,SAAU30B,EAAS8uB,EAAW5Q,GAAU,IAAAjT,EAAAhM,KAKhCw2B,IAJiB3G,GAAqC,OAAvBA,EAAUtd,UAA4C,OAAvBsd,EAAUtd,SAE5ErS,EAAAA,QAAE2vB,GAAW/hB,SAtGK,WAqGlB5N,EAAAA,QAAE2vB,GAAW7T,KApGQ,mBAuGO,GACxBjL,EAAkBkO,GAAauX,GAAUt2B,EAAAA,QAAEs2B,GAAQtwB,SA9GrC,QA+Gd2sB,EAAW,WAAA,OAAM7mB,EAAKyqB,oBAC1B11B,EACAy1B,EACAvX,IAGF,GAAIuX,GAAUzlB,EAAiB,CAC7B,IAAMxP,EAAqBnB,EAAKkB,iCAAiCk1B,GAEjEt2B,EAAAA,QAAEs2B,GACCvwB,YAxHe,QAyHf9F,IAAIC,EAAKC,eAAgBwyB,GACzBxuB,qBAAqB9C,QAExBsxB,OAIJ4D,oBAAA,SAAoB11B,EAASy1B,EAAQvX,GACnC,GAAIuX,EAAQ,CACVt2B,EAAAA,QAAEs2B,GAAQvwB,YArIU,UAuIpB,IAAMywB,EAAgBx2B,EAAAA,QAAEs2B,EAAOzyB,YAAYiY,KA5HV,4BA8H/B,GAEE0a,GACFx2B,EAAAA,QAAEw2B,GAAezwB,YA5IC,UA+IgB,QAAhCuwB,EAAOv1B,aAAa,SACtBu1B,EAAO3uB,aAAa,iBAAiB,GAIzC3H,EAAAA,QAAEa,GAASgN,SApJW,UAqJe,QAAjChN,EAAQE,aAAa,SACvBF,EAAQ8G,aAAa,iBAAiB,GAGxCzH,EAAK0B,OAAOf,GAERA,EAAQyG,UAAUC,SAzJF,SA0JlB1G,EAAQyG,UAAUmB,IAzJA,QA4JpB,IAAI9C,EAAS9E,EAAQgD,WAKrB,GAJI8B,GAA8B,OAApBA,EAAO0M,WACnB1M,EAASA,EAAO9B,YAGd8B,GAAU3F,EAAAA,QAAE2F,GAAQK,SArKK,iBAqK+B,CAC1D,IAAMywB,EAAkBz2B,EAAAA,QAAEa,GAAS+E,QAhKf,aAgK0C,GAE9D,GAAI6wB,EAAiB,CACnB,IAAMC,EAAqB,GAAGtuB,MAAMxF,KAAK6zB,EAAgBpuB,iBA9JhC,qBAgKzBrI,EAAAA,QAAE02B,GAAoB7oB,SA1KJ,UA6KpBhN,EAAQ8G,aAAa,iBAAiB,GAGpCoX,GACFA,OAMG3Y,iBAAP,SAAwB9D,GACtB,OAAOxC,KAAKuG,MAAK,WACf,IAAMswB,EAAQ32B,EAAAA,QAAEF,MACZyG,EAAOowB,EAAMpwB,KAtMN,UA6MX,GALKA,IACHA,EAAO,IAAIyvB,EAAIl2B,MACf62B,EAAMpwB,KA1MG,SA0MYA,IAGD,iBAAXjE,EAAqB,CAC9B,GAA4B,oBAAjBiE,EAAKjE,GACd,MAAM,IAAIyB,UAAJ,oBAAkCzB,EAAlC,KAGRiE,EAAKjE,kDA3KT,MAxCY,cAgCV0zB,GA+LNh2B,EAAAA,QAAEU,UACCiG,GAtNuB,wBAYG,mEA0MqB,SAAUvC,GACxDA,EAAMsC,iBACNsvB,GAAI5vB,iBAAiBxD,KAAK5C,EAAAA,QAAEF,MAAO,WASvCE,EAAAA,QAAEiE,GAAF,IAAa+xB,GAAI5vB,iBACjBpG,EAAAA,QAAEiE,GAAF,IAAW2C,YAAcovB,GACzBh2B,EAAAA,QAAEiE,GAAF,IAAW4C,WAAa,WAEtB,OADA7G,EAAAA,QAAEiE,GAAF,IAAae,GACNgxB,GAAI5vB,kBChPb,IAIMpB,GAAqBhF,EAAAA,QAAEiE,GAAF,MAarBiF,GAAc,CAClBqmB,UAAW,UACXqH,SAAU,UACVlH,MAAO,UAGH/mB,GAAU,CACd4mB,WAAW,EACXqH,UAAU,EACVlH,MAAO,KAWHmH,GAAAA,WACJ,SAAAA,EAAYh2B,EAASyB,GACnBxC,KAAKoF,SAAWrE,EAChBf,KAAKiK,QAAUjK,KAAKkK,WAAW1H,GAC/BxC,KAAKmxB,SAAW,KAChBnxB,KAAKuxB,2CAmBPthB,KAAA,WAAO,IAAAlQ,EAAAC,KACCunB,EAAYrnB,EAAAA,QAAE8F,MArDR,iBAwDZ,GADA9F,EAAAA,QAAEF,KAAKoF,UAAUpD,QAAQulB,IACrBA,EAAU9hB,qBAAd,CAIAzF,KAAKg3B,gBAEDh3B,KAAKiK,QAAQwlB,WACfzvB,KAAKoF,SAASoC,UAAUmB,IA5DN,QA+DpB,IAAMkqB,EAAW,WACf9yB,EAAKqF,SAASoC,UAAUnB,OA7DH,WA8DrBtG,EAAKqF,SAASoC,UAAUmB,IA/DN,QAiElBzI,EAAAA,QAAEH,EAAKqF,UAAUpD,QArEN,kBAuEPjC,EAAKkK,QAAQ6sB,WACf/2B,EAAKoxB,SAAW7wB,YAAW,WACzBP,EAAKiQ,SACJjQ,EAAKkK,QAAQ2lB,SAOpB,GAHA5vB,KAAKoF,SAASoC,UAAUnB,OA3EJ,QA4EpBjG,EAAK0B,OAAO9B,KAAKoF,UACjBpF,KAAKoF,SAASoC,UAAUmB,IA3ED,WA4EnB3I,KAAKiK,QAAQwlB,UAAW,CAC1B,IAAMluB,EAAqBnB,EAAKkB,iCAAiCtB,KAAKoF,UAEtElF,EAAAA,QAAEF,KAAKoF,UACJjF,IAAIC,EAAKC,eAAgBwyB,GACzBxuB,qBAAqB9C,QAExBsxB,QAIJ7iB,KAAA,WACE,GAAKhQ,KAAKoF,SAASoC,UAAUC,SAzFT,QAyFpB,CAIA,IAAMmgB,EAAY1nB,EAAAA,QAAE8F,MApGR,iBAsGZ9F,EAAAA,QAAEF,KAAKoF,UAAUpD,QAAQ4lB,GACrBA,EAAUniB,sBAIdzF,KAAKi3B,aAGPtxB,QAAA,WACE3F,KAAKg3B,gBAEDh3B,KAAKoF,SAASoC,UAAUC,SA1GR,SA2GlBzH,KAAKoF,SAASoC,UAAUnB,OA3GN,QA8GpBnG,EAAAA,QAAEF,KAAKoF,UAAUuG,IAtHI,0BAwHrBzL,EAAAA,QAAE0F,WAAW5F,KAAKoF,SA5HL,YA6HbpF,KAAKoF,SAAW,KAChBpF,KAAKiK,QAAU,QAKjBC,WAAA,SAAW1H,GAaT,OAZAA,EAAMoJ,EAAA,GACD/C,GACA3I,EAAAA,QAAEF,KAAKoF,UAAUqB,OACE,iBAAXjE,GAAuBA,EAASA,EAAS,IAGtDpC,EAAKkC,gBA5II,QA8IPE,EACAxC,KAAK8nB,YAAY1e,aAGZ5G,KAGT+uB,cAAA,WAAgB,IAAAvlB,EAAAhM,KACdE,EAAAA,QAAEF,KAAKoF,UAAUyB,GAhJI,yBAuBK,0BAyHsC,WAAA,OAAMmF,EAAKgE,aAG7EinB,OAAA,WAAS,IAAA9qB,EAAAnM,KACD6yB,EAAW,WACf1mB,EAAK/G,SAASoC,UAAUmB,IA9IN,QA+IlBzI,EAAAA,QAAEiM,EAAK/G,UAAUpD,QApJL,oBAwJd,GADAhC,KAAKoF,SAASoC,UAAUnB,OAjJJ,QAkJhBrG,KAAKiK,QAAQwlB,UAAW,CAC1B,IAAMluB,EAAqBnB,EAAKkB,iCAAiCtB,KAAKoF,UAEtElF,EAAAA,QAAEF,KAAKoF,UACJjF,IAAIC,EAAKC,eAAgBwyB,GACzBxuB,qBAAqB9C,QAExBsxB,OAIJmE,cAAA,WACEtqB,aAAa1M,KAAKmxB,UAClBnxB,KAAKmxB,SAAW,QAKX7qB,iBAAP,SAAwB9D,GACtB,OAAOxC,KAAKuG,MAAK,WACf,IAAMC,EAAWtG,EAAAA,QAAEF,MACfyG,EAAOD,EAASC,KAnLT,YA2LX,GALKA,IACHA,EAAO,IAAIswB,EAAM/2B,KAHe,iBAAXwC,GAAuBA,GAI5CgE,EAASC,KAxLA,WAwLeA,IAGJ,iBAAXjE,EAAqB,CAC9B,GAA4B,oBAAjBiE,EAAKjE,GACd,MAAM,IAAIyB,UAAJ,oBAAkCzB,EAAlC,KAGRiE,EAAKjE,GAAQxC,mDAlJjB,MA/CY,4CAmDZ,OAAOoJ,mCAIP,OAAOP,SAnBLkuB,GAyKN72B,EAAAA,QAAEiE,GAAF,MAAa4yB,GAAMzwB,iBACnBpG,EAAAA,QAAEiE,GAAF,MAAW2C,YAAciwB,GACzB72B,EAAAA,QAAEiE,GAAF,MAAW4C,WAAa,WAEtB,OADA7G,EAAAA,QAAEiE,GAAF,MAAae,GACN6xB,GAAMzwB","sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.0): util.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\n\n/**\n * ------------------------------------------------------------------------\n * Private TransitionEnd Helpers\n * ------------------------------------------------------------------------\n */\n\nconst TRANSITION_END = 'transitionend'\nconst MAX_UID = 1000000\nconst MILLISECONDS_MULTIPLIER = 1000\n\n// Shoutout AngusCroll (https://goo.gl/pxwQGp)\nfunction toType(obj) {\n  if (obj === null || typeof obj === 'undefined') {\n    return `${obj}`\n  }\n\n  return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\nfunction getSpecialTransitionEndEvent() {\n  return {\n    bindType: TRANSITION_END,\n    delegateType: TRANSITION_END,\n    handle(event) {\n      if ($(event.target).is(this)) {\n        return event.handleObj.handler.apply(this, arguments) // eslint-disable-line prefer-rest-params\n      }\n\n      return undefined\n    }\n  }\n}\n\nfunction transitionEndEmulator(duration) {\n  let called = false\n\n  $(this).one(Util.TRANSITION_END, () => {\n    called = true\n  })\n\n  setTimeout(() => {\n    if (!called) {\n      Util.triggerTransitionEnd(this)\n    }\n  }, duration)\n\n  return this\n}\n\nfunction setTransitionEndSupport() {\n  $.fn.emulateTransitionEnd = transitionEndEmulator\n  $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent()\n}\n\n/**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\nconst Util = {\n  TRANSITION_END: 'bsTransitionEnd',\n\n  getUID(prefix) {\n    do {\n      prefix += ~~(Math.random() * MAX_UID) // \"~~\" acts like a faster Math.floor() here\n    } while (document.getElementById(prefix))\n\n    return prefix\n  },\n\n  getSelectorFromElement(element) {\n    let selector = element.getAttribute('data-target')\n\n    if (!selector || selector === '#') {\n      const hrefAttr = element.getAttribute('href')\n      selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : ''\n    }\n\n    try {\n      return document.querySelector(selector) ? selector : null\n    } catch (_) {\n      return null\n    }\n  },\n\n  getTransitionDurationFromElement(element) {\n    if (!element) {\n      return 0\n    }\n\n    // Get transition-duration of the element\n    let transitionDuration = $(element).css('transition-duration')\n    let transitionDelay = $(element).css('transition-delay')\n\n    const floatTransitionDuration = parseFloat(transitionDuration)\n    const floatTransitionDelay = parseFloat(transitionDelay)\n\n    // Return 0 if element or transition duration is not found\n    if (!floatTransitionDuration && !floatTransitionDelay) {\n      return 0\n    }\n\n    // If multiple durations are defined, take the first\n    transitionDuration = transitionDuration.split(',')[0]\n    transitionDelay = transitionDelay.split(',')[0]\n\n    return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n  },\n\n  reflow(element) {\n    return element.offsetHeight\n  },\n\n  triggerTransitionEnd(element) {\n    $(element).trigger(TRANSITION_END)\n  },\n\n  supportsTransitionEnd() {\n    return Boolean(TRANSITION_END)\n  },\n\n  isElement(obj) {\n    return (obj[0] || obj).nodeType\n  },\n\n  typeCheckConfig(componentName, config, configTypes) {\n    for (const property in configTypes) {\n      if (Object.prototype.hasOwnProperty.call(configTypes, property)) {\n        const expectedTypes = configTypes[property]\n        const value = config[property]\n        const valueType = value && Util.isElement(value) ?\n          'element' : toType(value)\n\n        if (!new RegExp(expectedTypes).test(valueType)) {\n          throw new Error(\n            `${componentName.toUpperCase()}: ` +\n            `Option \"${property}\" provided type \"${valueType}\" ` +\n            `but expected type \"${expectedTypes}\".`)\n        }\n      }\n    }\n  },\n\n  findShadowRoot(element) {\n    if (!document.documentElement.attachShadow) {\n      return null\n    }\n\n    // Can find the shadow root otherwise it'll return the document\n    if (typeof element.getRootNode === 'function') {\n      const root = element.getRootNode()\n      return root instanceof ShadowRoot ? root : null\n    }\n\n    if (element instanceof ShadowRoot) {\n      return element\n    }\n\n    // when we don't find a shadow root\n    if (!element.parentNode) {\n      return null\n    }\n\n    return Util.findShadowRoot(element.parentNode)\n  },\n\n  jQueryDetection() {\n    if (typeof $ === 'undefined') {\n      throw new TypeError('Bootstrap\\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\\'s JavaScript.')\n    }\n\n    const version = $.fn.jquery.split(' ')[0].split('.')\n    const minMajor = 1\n    const ltMajor = 2\n    const minMinor = 9\n    const minPatch = 1\n    const maxMajor = 4\n\n    if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {\n      throw new Error('Bootstrap\\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0')\n    }\n  }\n}\n\nUtil.jQueryDetection()\nsetTransitionEndSupport()\n\nexport default Util\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.0): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'alert'\nconst VERSION = '4.6.0'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst SELECTOR_DISMISS = '[data-dismiss=\"alert\"]'\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_ALERT = 'alert'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Alert {\n  constructor(element) {\n    this._element = element\n  }\n\n  // Getters\n\n  static get VERSION() {\n    return VERSION\n  }\n\n  // Public\n\n  close(element) {\n    let rootElement = this._element\n    if (element) {\n      rootElement = this._getRootElement(element)\n    }\n\n    const customEvent = this._triggerCloseEvent(rootElement)\n\n    if (customEvent.isDefaultPrevented()) {\n      return\n    }\n\n    this._removeElement(rootElement)\n  }\n\n  dispose() {\n    $.removeData(this._element, DATA_KEY)\n    this._element = null\n  }\n\n  // Private\n\n  _getRootElement(element) {\n    const selector = Util.getSelectorFromElement(element)\n    let parent = false\n\n    if (selector) {\n      parent = document.querySelector(selector)\n    }\n\n    if (!parent) {\n      parent = $(element).closest(`.${CLASS_NAME_ALERT}`)[0]\n    }\n\n    return parent\n  }\n\n  _triggerCloseEvent(element) {\n    const closeEvent = $.Event(EVENT_CLOSE)\n\n    $(element).trigger(closeEvent)\n    return closeEvent\n  }\n\n  _removeElement(element) {\n    $(element).removeClass(CLASS_NAME_SHOW)\n\n    if (!$(element).hasClass(CLASS_NAME_FADE)) {\n      this._destroyElement(element)\n      return\n    }\n\n    const transitionDuration = Util.getTransitionDurationFromElement(element)\n\n    $(element)\n      .one(Util.TRANSITION_END, event => this._destroyElement(element, event))\n      .emulateTransitionEnd(transitionDuration)\n  }\n\n  _destroyElement(element) {\n    $(element)\n      .detach()\n      .trigger(EVENT_CLOSED)\n      .remove()\n  }\n\n  // Static\n\n  static _jQueryInterface(config) {\n    return this.each(function () {\n      const $element = $(this)\n      let data = $element.data(DATA_KEY)\n\n      if (!data) {\n        data = new Alert(this)\n        $element.data(DATA_KEY, data)\n      }\n\n      if (config === 'close') {\n        data[config](this)\n      }\n    })\n  }\n\n  static _handleDismiss(alertInstance) {\n    return function (event) {\n      if (event) {\n        event.preventDefault()\n      }\n\n      alertInstance.close(this)\n    }\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document).on(\n  EVENT_CLICK_DATA_API,\n  SELECTOR_DISMISS,\n  Alert._handleDismiss(new Alert())\n)\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Alert._jQueryInterface\n$.fn[NAME].Constructor = Alert\n$.fn[NAME].noConflict = () => {\n  $.fn[NAME] = JQUERY_NO_CONFLICT\n  return Alert._jQueryInterface\n}\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.0): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'button'\nconst VERSION = '4.6.0'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_BUTTON = 'btn'\nconst CLASS_NAME_FOCUS = 'focus'\n\nconst SELECTOR_DATA_TOGGLE_CARROT = '[data-toggle^=\"button\"]'\nconst SELECTOR_DATA_TOGGLES = '[data-toggle=\"buttons\"]'\nconst SELECTOR_DATA_TOGGLE = '[data-toggle=\"button\"]'\nconst SELECTOR_DATA_TOGGLES_BUTTONS = '[data-toggle=\"buttons\"] .btn'\nconst SELECTOR_INPUT = 'input:not([type=\"hidden\"])'\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_BUTTON = '.btn'\n\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_FOCUS_BLUR_DATA_API = `focus${EVENT_KEY}${DATA_API_KEY} ` +\n                          `blur${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Button {\n  constructor(element) {\n    this._element = element\n    this.shouldAvoidTriggerChange = false\n  }\n\n  // Getters\n\n  static get VERSION() {\n    return VERSION\n  }\n\n  // Public\n\n  toggle() {\n    let triggerChangeEvent = true\n    let addAriaPressed = true\n    const rootElement = $(this._element).closest(SELECTOR_DATA_TOGGLES)[0]\n\n    if (rootElement) {\n      const input = this._element.querySelector(SELECTOR_INPUT)\n\n      if (input) {\n        if (input.type === 'radio') {\n          if (input.checked && this._element.classList.contains(CLASS_NAME_ACTIVE)) {\n            triggerChangeEvent = false\n          } else {\n            const activeElement = rootElement.querySelector(SELECTOR_ACTIVE)\n\n            if (activeElement) {\n              $(activeElement).removeClass(CLASS_NAME_ACTIVE)\n            }\n          }\n        }\n\n        if (triggerChangeEvent) {\n          // if it's not a radio button or checkbox don't add a pointless/invalid checked property to the input\n          if (input.type === 'checkbox' || input.type === 'radio') {\n            input.checked = !this._element.classList.contains(CLASS_NAME_ACTIVE)\n          }\n\n          if (!this.shouldAvoidTriggerChange) {\n            $(input).trigger('change')\n          }\n        }\n\n        input.focus()\n        addAriaPressed = false\n      }\n    }\n\n    if (!(this._element.hasAttribute('disabled') || this._element.classList.contains('disabled'))) {\n      if (addAriaPressed) {\n        this._element.setAttribute('aria-pressed', !this._element.classList.contains(CLASS_NAME_ACTIVE))\n      }\n\n      if (triggerChangeEvent) {\n        $(this._element).toggleClass(CLASS_NAME_ACTIVE)\n      }\n    }\n  }\n\n  dispose() {\n    $.removeData(this._element, DATA_KEY)\n    this._element = null\n  }\n\n  // Static\n\n  static _jQueryInterface(config, avoidTriggerChange) {\n    return this.each(function () {\n      const $element = $(this)\n      let data = $element.data(DATA_KEY)\n\n      if (!data) {\n        data = new Button(this)\n        $element.data(DATA_KEY, data)\n      }\n\n      data.shouldAvoidTriggerChange = avoidTriggerChange\n\n      if (config === 'toggle') {\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document)\n  .on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, event => {\n    let button = event.target\n    const initialButton = button\n\n    if (!$(button).hasClass(CLASS_NAME_BUTTON)) {\n      button = $(button).closest(SELECTOR_BUTTON)[0]\n    }\n\n    if (!button || button.hasAttribute('disabled') || button.classList.contains('disabled')) {\n      event.preventDefault() // work around Firefox bug #1540995\n    } else {\n      const inputBtn = button.querySelector(SELECTOR_INPUT)\n\n      if (inputBtn && (inputBtn.hasAttribute('disabled') || inputBtn.classList.contains('disabled'))) {\n        event.preventDefault() // work around Firefox bug #1540995\n        return\n      }\n\n      if (initialButton.tagName === 'INPUT' || button.tagName !== 'LABEL') {\n        Button._jQueryInterface.call($(button), 'toggle', initialButton.tagName === 'INPUT')\n      }\n    }\n  })\n  .on(EVENT_FOCUS_BLUR_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, event => {\n    const button = $(event.target).closest(SELECTOR_BUTTON)[0]\n    $(button).toggleClass(CLASS_NAME_FOCUS, /^focus(in)?$/.test(event.type))\n  })\n\n$(window).on(EVENT_LOAD_DATA_API, () => {\n  // ensure correct active class is set to match the controls' actual values/states\n\n  // find all checkboxes/readio buttons inside data-toggle groups\n  let buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLES_BUTTONS))\n  for (let i = 0, len = buttons.length; i < len; i++) {\n    const button = buttons[i]\n    const input = button.querySelector(SELECTOR_INPUT)\n    if (input.checked || input.hasAttribute('checked')) {\n      button.classList.add(CLASS_NAME_ACTIVE)\n    } else {\n      button.classList.remove(CLASS_NAME_ACTIVE)\n    }\n  }\n\n  // find all button toggles\n  buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE))\n  for (let i = 0, len = buttons.length; i < len; i++) {\n    const button = buttons[i]\n    if (button.getAttribute('aria-pressed') === 'true') {\n      button.classList.add(CLASS_NAME_ACTIVE)\n    } else {\n      button.classList.remove(CLASS_NAME_ACTIVE)\n    }\n  }\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Button._jQueryInterface\n$.fn[NAME].Constructor = Button\n$.fn[NAME].noConflict = () => {\n  $.fn[NAME] = JQUERY_NO_CONFLICT\n  return Button._jQueryInterface\n}\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.0): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'carousel'\nconst VERSION = '4.6.0'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst ARROW_LEFT_KEYCODE = 37 // KeyboardEvent.which value for left arrow key\nconst ARROW_RIGHT_KEYCODE = 39 // KeyboardEvent.which value for right arrow key\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n  interval: 5000,\n  keyboard: true,\n  slide: false,\n  pause: 'hover',\n  wrap: true,\n  touch: true\n}\n\nconst DefaultType = {\n  interval: '(number|boolean)',\n  keyboard: 'boolean',\n  slide: '(boolean|string)',\n  pause: '(string|boolean)',\n  wrap: 'boolean',\n  touch: 'boolean'\n}\n\nconst DIRECTION_NEXT = 'next'\nconst DIRECTION_PREV = 'prev'\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\nconst EVENT_SLID = `slid${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_CAROUSEL = 'carousel'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_SLIDE = 'slide'\nconst CLASS_NAME_RIGHT = 'carousel-item-right'\nconst CLASS_NAME_LEFT = 'carousel-item-left'\nconst CLASS_NAME_NEXT = 'carousel-item-next'\nconst CLASS_NAME_PREV = 'carousel-item-prev'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\n\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ACTIVE_ITEM = '.active.carousel-item'\nconst SELECTOR_ITEM = '.carousel-item'\nconst SELECTOR_ITEM_IMG = '.carousel-item img'\nconst SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_DATA_SLIDE = '[data-slide], [data-slide-to]'\nconst SELECTOR_DATA_RIDE = '[data-ride=\"carousel\"]'\n\nconst PointerType = {\n  TOUCH: 'touch',\n  PEN: 'pen'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\nclass Carousel {\n  constructor(element, config) {\n    this._items = null\n    this._interval = null\n    this._activeElement = null\n    this._isPaused = false\n    this._isSliding = false\n    this.touchTimeout = null\n    this.touchStartX = 0\n    this.touchDeltaX = 0\n\n    this._config = this._getConfig(config)\n    this._element = element\n    this._indicatorsElement = this._element.querySelector(SELECTOR_INDICATORS)\n    this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n    this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent)\n\n    this._addEventListeners()\n  }\n\n  // Getters\n\n  static get VERSION() {\n    return VERSION\n  }\n\n  static get Default() {\n    return Default\n  }\n\n  // Public\n\n  next() {\n    if (!this._isSliding) {\n      this._slide(DIRECTION_NEXT)\n    }\n  }\n\n  nextWhenVisible() {\n    const $element = $(this._element)\n    // Don't call next when the page isn't visible\n    // or the carousel or its parent isn't visible\n    if (!document.hidden &&\n      ($element.is(':visible') && $element.css('visibility') !== 'hidden')) {\n      this.next()\n    }\n  }\n\n  prev() {\n    if (!this._isSliding) {\n      this._slide(DIRECTION_PREV)\n    }\n  }\n\n  pause(event) {\n    if (!event) {\n      this._isPaused = true\n    }\n\n    if (this._element.querySelector(SELECTOR_NEXT_PREV)) {\n      Util.triggerTransitionEnd(this._element)\n      this.cycle(true)\n    }\n\n    clearInterval(this._interval)\n    this._interval = null\n  }\n\n  cycle(event) {\n    if (!event) {\n      this._isPaused = false\n    }\n\n    if (this._interval) {\n      clearInterval(this._interval)\n      this._interval = null\n    }\n\n    if (this._config.interval && !this._isPaused) {\n      this._updateInterval()\n\n      this._interval = setInterval(\n        (document.visibilityState ? this.nextWhenVisible : this.next).bind(this),\n        this._config.interval\n      )\n    }\n  }\n\n  to(index) {\n    this._activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM)\n\n    const activeIndex = this._getItemIndex(this._activeElement)\n\n    if (index > this._items.length - 1 || index < 0) {\n      return\n    }\n\n    if (this._isSliding) {\n      $(this._element).one(EVENT_SLID, () => this.to(index))\n      return\n    }\n\n    if (activeIndex === index) {\n      this.pause()\n      this.cycle()\n      return\n    }\n\n    const direction = index > activeIndex ?\n      DIRECTION_NEXT :\n      DIRECTION_PREV\n\n    this._slide(direction, this._items[index])\n  }\n\n  dispose() {\n    $(this._element).off(EVENT_KEY)\n    $.removeData(this._element, DATA_KEY)\n\n    this._items = null\n    this._config = null\n    this._element = null\n    this._interval = null\n    this._isPaused = null\n    this._isSliding = null\n    this._activeElement = null\n    this._indicatorsElement = null\n  }\n\n  // Private\n\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...config\n    }\n    Util.typeCheckConfig(NAME, config, DefaultType)\n    return config\n  }\n\n  _handleSwipe() {\n    const absDeltax = Math.abs(this.touchDeltaX)\n\n    if (absDeltax <= SWIPE_THRESHOLD) {\n      return\n    }\n\n    const direction = absDeltax / this.touchDeltaX\n\n    this.touchDeltaX = 0\n\n    // swipe left\n    if (direction > 0) {\n      this.prev()\n    }\n\n    // swipe right\n    if (direction < 0) {\n      this.next()\n    }\n  }\n\n  _addEventListeners() {\n    if (this._config.keyboard) {\n      $(this._element).on(EVENT_KEYDOWN, event => this._keydown(event))\n    }\n\n    if (this._config.pause === 'hover') {\n      $(this._element)\n        .on(EVENT_MOUSEENTER, event => this.pause(event))\n        .on(EVENT_MOUSELEAVE, event => this.cycle(event))\n    }\n\n    if (this._config.touch) {\n      this._addTouchEventListeners()\n    }\n  }\n\n  _addTouchEventListeners() {\n    if (!this._touchSupported) {\n      return\n    }\n\n    const start = event => {\n      if (this._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n        this.touchStartX = event.originalEvent.clientX\n      } else if (!this._pointerEvent) {\n        this.touchStartX = event.originalEvent.touches[0].clientX\n      }\n    }\n\n    const move = event => {\n      // ensure swiping with one touch and not pinching\n      if (event.originalEvent.touches && event.originalEvent.touches.length > 1) {\n        this.touchDeltaX = 0\n      } else {\n        this.touchDeltaX = event.originalEvent.touches[0].clientX - this.touchStartX\n      }\n    }\n\n    const end = event => {\n      if (this._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n        this.touchDeltaX = event.originalEvent.clientX - this.touchStartX\n      }\n\n      this._handleSwipe()\n      if (this._config.pause === 'hover') {\n        // If it's a touch-enabled device, mouseenter/leave are fired as\n        // part of the mouse compatibility events on first tap - the carousel\n        // would stop cycling until user tapped out of it;\n        // here, we listen for touchend, explicitly pause the carousel\n        // (as if it's the second time we tap on it, mouseenter compat event\n        // is NOT fired) and after a timeout (to allow for mouse compatibility\n        // events to fire) we explicitly restart cycling\n\n        this.pause()\n        if (this.touchTimeout) {\n          clearTimeout(this.touchTimeout)\n        }\n\n        this.touchTimeout = setTimeout(event => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n      }\n    }\n\n    $(this._element.querySelectorAll(SELECTOR_ITEM_IMG))\n      .on(EVENT_DRAG_START, e => e.preventDefault())\n\n    if (this._pointerEvent) {\n      $(this._element).on(EVENT_POINTERDOWN, event => start(event))\n      $(this._element).on(EVENT_POINTERUP, event => end(event))\n\n      this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n    } else {\n      $(this._element).on(EVENT_TOUCHSTART, event => start(event))\n      $(this._element).on(EVENT_TOUCHMOVE, event => move(event))\n      $(this._element).on(EVENT_TOUCHEND, event => end(event))\n    }\n  }\n\n  _keydown(event) {\n    if (/input|textarea/i.test(event.target.tagName)) {\n      return\n    }\n\n    switch (event.which) {\n      case ARROW_LEFT_KEYCODE:\n        event.preventDefault()\n        this.prev()\n        break\n      case ARROW_RIGHT_KEYCODE:\n        event.preventDefault()\n        this.next()\n        break\n      default:\n    }\n  }\n\n  _getItemIndex(element) {\n    this._items = element && element.parentNode ?\n      [].slice.call(element.parentNode.querySelectorAll(SELECTOR_ITEM)) :\n      []\n    return this._items.indexOf(element)\n  }\n\n  _getItemByDirection(direction, activeElement) {\n    const isNextDirection = direction === DIRECTION_NEXT\n    const isPrevDirection = direction === DIRECTION_PREV\n    const activeIndex = this._getItemIndex(activeElement)\n    const lastItemIndex = this._items.length - 1\n    const isGoingToWrap = isPrevDirection && activeIndex === 0 ||\n                            isNextDirection && activeIndex === lastItemIndex\n\n    if (isGoingToWrap && !this._config.wrap) {\n      return activeElement\n    }\n\n    const delta = direction === DIRECTION_PREV ? -1 : 1\n    const itemIndex = (activeIndex + delta) % this._items.length\n\n    return itemIndex === -1 ?\n      this._items[this._items.length - 1] : this._items[itemIndex]\n  }\n\n  _triggerSlideEvent(relatedTarget, eventDirectionName) {\n    const targetIndex = this._getItemIndex(relatedTarget)\n    const fromIndex = this._getItemIndex(this._element.querySelector(SELECTOR_ACTIVE_ITEM))\n    const slideEvent = $.Event(EVENT_SLIDE, {\n      relatedTarget,\n      direction: eventDirectionName,\n      from: fromIndex,\n      to: targetIndex\n    })\n\n    $(this._element).trigger(slideEvent)\n\n    return slideEvent\n  }\n\n  _setActiveIndicatorElement(element) {\n    if (this._indicatorsElement) {\n      const indicators = [].slice.call(this._indicatorsElement.querySelectorAll(SELECTOR_ACTIVE))\n      $(indicators).removeClass(CLASS_NAME_ACTIVE)\n\n      const nextIndicator = this._indicatorsElement.children[\n        this._getItemIndex(element)\n      ]\n\n      if (nextIndicator) {\n        $(nextIndicator).addClass(CLASS_NAME_ACTIVE)\n      }\n    }\n  }\n\n  _updateInterval() {\n    const element = this._activeElement || this._element.querySelector(SELECTOR_ACTIVE_ITEM)\n\n    if (!element) {\n      return\n    }\n\n    const elementInterval = parseInt(element.getAttribute('data-interval'), 10)\n\n    if (elementInterval) {\n      this._config.defaultInterval = this._config.defaultInterval || this._config.interval\n      this._config.interval = elementInterval\n    } else {\n      this._config.interval = this._config.defaultInterval || this._config.interval\n    }\n  }\n\n  _slide(direction, element) {\n    const activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM)\n    const activeElementIndex = this._getItemIndex(activeElement)\n    const nextElement = element || activeElement &&\n      this._getItemByDirection(direction, activeElement)\n    const nextElementIndex = this._getItemIndex(nextElement)\n    const isCycling = Boolean(this._interval)\n\n    let directionalClassName\n    let orderClassName\n    let eventDirectionName\n\n    if (direction === DIRECTION_NEXT) {\n      directionalClassName = CLASS_NAME_LEFT\n      orderClassName = CLASS_NAME_NEXT\n      eventDirectionName = DIRECTION_LEFT\n    } else {\n      directionalClassName = CLASS_NAME_RIGHT\n      orderClassName = CLASS_NAME_PREV\n      eventDirectionName = DIRECTION_RIGHT\n    }\n\n    if (nextElement && $(nextElement).hasClass(CLASS_NAME_ACTIVE)) {\n      this._isSliding = false\n      return\n    }\n\n    const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName)\n    if (slideEvent.isDefaultPrevented()) {\n      return\n    }\n\n    if (!activeElement || !nextElement) {\n      // Some weirdness is happening, so we bail\n      return\n    }\n\n    this._isSliding = true\n\n    if (isCycling) {\n      this.pause()\n    }\n\n    this._setActiveIndicatorElement(nextElement)\n    this._activeElement = nextElement\n\n    const slidEvent = $.Event(EVENT_SLID, {\n      relatedTarget: nextElement,\n      direction: eventDirectionName,\n      from: activeElementIndex,\n      to: nextElementIndex\n    })\n\n    if ($(this._element).hasClass(CLASS_NAME_SLIDE)) {\n      $(nextElement).addClass(orderClassName)\n\n      Util.reflow(nextElement)\n\n      $(activeElement).addClass(directionalClassName)\n      $(nextElement).addClass(directionalClassName)\n\n      const transitionDuration = Util.getTransitionDurationFromElement(activeElement)\n\n      $(activeElement)\n        .one(Util.TRANSITION_END, () => {\n          $(nextElement)\n            .removeClass(`${directionalClassName} ${orderClassName}`)\n            .addClass(CLASS_NAME_ACTIVE)\n\n          $(activeElement).removeClass(`${CLASS_NAME_ACTIVE} ${orderClassName} ${directionalClassName}`)\n\n          this._isSliding = false\n\n          setTimeout(() => $(this._element).trigger(slidEvent), 0)\n        })\n        .emulateTransitionEnd(transitionDuration)\n    } else {\n      $(activeElement).removeClass(CLASS_NAME_ACTIVE)\n      $(nextElement).addClass(CLASS_NAME_ACTIVE)\n\n      this._isSliding = false\n      $(this._element).trigger(slidEvent)\n    }\n\n    if (isCycling) {\n      this.cycle()\n    }\n  }\n\n  // Static\n\n  static _jQueryInterface(config) {\n    return this.each(function () {\n      let data = $(this).data(DATA_KEY)\n      let _config = {\n        ...Default,\n        ...$(this).data()\n      }\n\n      if (typeof config === 'object') {\n        _config = {\n          ..._config,\n          ...config\n        }\n      }\n\n      const action = typeof config === 'string' ? config : _config.slide\n\n      if (!data) {\n        data = new Carousel(this, _config)\n        $(this).data(DATA_KEY, data)\n      }\n\n      if (typeof config === 'number') {\n        data.to(config)\n      } else if (typeof action === 'string') {\n        if (typeof data[action] === 'undefined') {\n          throw new TypeError(`No method named \"${action}\"`)\n        }\n\n        data[action]()\n      } else if (_config.interval && _config.ride) {\n        data.pause()\n        data.cycle()\n      }\n    })\n  }\n\n  static _dataApiClickHandler(event) {\n    const selector = Util.getSelectorFromElement(this)\n\n    if (!selector) {\n      return\n    }\n\n    const target = $(selector)[0]\n\n    if (!target || !$(target).hasClass(CLASS_NAME_CAROUSEL)) {\n      return\n    }\n\n    const config = {\n      ...$(target).data(),\n      ...$(this).data()\n    }\n    const slideIndex = this.getAttribute('data-slide-to')\n\n    if (slideIndex) {\n      config.interval = false\n    }\n\n    Carousel._jQueryInterface.call($(target), config)\n\n    if (slideIndex) {\n      $(target).data(DATA_KEY).to(slideIndex)\n    }\n\n    event.preventDefault()\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, Carousel._dataApiClickHandler)\n\n$(window).on(EVENT_LOAD_DATA_API, () => {\n  const carousels = [].slice.call(document.querySelectorAll(SELECTOR_DATA_RIDE))\n  for (let i = 0, len = carousels.length; i < len; i++) {\n    const $carousel = $(carousels[i])\n    Carousel._jQueryInterface.call($carousel, $carousel.data())\n  }\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Carousel._jQueryInterface\n$.fn[NAME].Constructor = Carousel\n$.fn[NAME].noConflict = () => {\n  $.fn[NAME] = JQUERY_NO_CONFLICT\n  return Carousel._jQueryInterface\n}\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.0): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'collapse'\nconst VERSION = '4.6.0'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst Default = {\n  toggle: true,\n  parent: ''\n}\n\nconst DefaultType = {\n  toggle: 'boolean',\n  parent: '(string|element)'\n}\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\n\nconst DIMENSION_WIDTH = 'width'\nconst DIMENSION_HEIGHT = 'height'\n\nconst SELECTOR_ACTIVES = '.show, .collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-toggle=\"collapse\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Collapse {\n  constructor(element, config) {\n    this._isTransitioning = false\n    this._element = element\n    this._config = this._getConfig(config)\n    this._triggerArray = [].slice.call(document.querySelectorAll(\n      `[data-toggle=\"collapse\"][href=\"#${element.id}\"],` +\n      `[data-toggle=\"collapse\"][data-target=\"#${element.id}\"]`\n    ))\n\n    const toggleList = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE))\n    for (let i = 0, len = toggleList.length; i < len; i++) {\n      const elem = toggleList[i]\n      const selector = Util.getSelectorFromElement(elem)\n      const filterElement = [].slice.call(document.querySelectorAll(selector))\n        .filter(foundElem => foundElem === element)\n\n      if (selector !== null && filterElement.length > 0) {\n        this._selector = selector\n        this._triggerArray.push(elem)\n      }\n    }\n\n    this._parent = this._config.parent ? this._getParent() : null\n\n    if (!this._config.parent) {\n      this._addAriaAndCollapsedClass(this._element, this._triggerArray)\n    }\n\n    if (this._config.toggle) {\n      this.toggle()\n    }\n  }\n\n  // Getters\n\n  static get VERSION() {\n    return VERSION\n  }\n\n  static get Default() {\n    return Default\n  }\n\n  // Public\n\n  toggle() {\n    if ($(this._element).hasClass(CLASS_NAME_SHOW)) {\n      this.hide()\n    } else {\n      this.show()\n    }\n  }\n\n  show() {\n    if (this._isTransitioning ||\n      $(this._element).hasClass(CLASS_NAME_SHOW)) {\n      return\n    }\n\n    let actives\n    let activesData\n\n    if (this._parent) {\n      actives = [].slice.call(this._parent.querySelectorAll(SELECTOR_ACTIVES))\n        .filter(elem => {\n          if (typeof this._config.parent === 'string') {\n            return elem.getAttribute('data-parent') === this._config.parent\n          }\n\n          return elem.classList.contains(CLASS_NAME_COLLAPSE)\n        })\n\n      if (actives.length === 0) {\n        actives = null\n      }\n    }\n\n    if (actives) {\n      activesData = $(actives).not(this._selector).data(DATA_KEY)\n      if (activesData && activesData._isTransitioning) {\n        return\n      }\n    }\n\n    const startEvent = $.Event(EVENT_SHOW)\n    $(this._element).trigger(startEvent)\n    if (startEvent.isDefaultPrevented()) {\n      return\n    }\n\n    if (actives) {\n      Collapse._jQueryInterface.call($(actives).not(this._selector), 'hide')\n      if (!activesData) {\n        $(actives).data(DATA_KEY, null)\n      }\n    }\n\n    const dimension = this._getDimension()\n\n    $(this._element)\n      .removeClass(CLASS_NAME_COLLAPSE)\n      .addClass(CLASS_NAME_COLLAPSING)\n\n    this._element.style[dimension] = 0\n\n    if (this._triggerArray.length) {\n      $(this._triggerArray)\n        .removeClass(CLASS_NAME_COLLAPSED)\n        .attr('aria-expanded', true)\n    }\n\n    this.setTransitioning(true)\n\n    const complete = () => {\n      $(this._element)\n        .removeClass(CLASS_NAME_COLLAPSING)\n        .addClass(`${CLASS_NAME_COLLAPSE} ${CLASS_NAME_SHOW}`)\n\n      this._element.style[dimension] = ''\n\n      this.setTransitioning(false)\n\n      $(this._element).trigger(EVENT_SHOWN)\n    }\n\n    const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n    const scrollSize = `scroll${capitalizedDimension}`\n    const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n    $(this._element)\n      .one(Util.TRANSITION_END, complete)\n      .emulateTransitionEnd(transitionDuration)\n\n    this._element.style[dimension] = `${this._element[scrollSize]}px`\n  }\n\n  hide() {\n    if (this._isTransitioning ||\n      !$(this._element).hasClass(CLASS_NAME_SHOW)) {\n      return\n    }\n\n    const startEvent = $.Event(EVENT_HIDE)\n    $(this._element).trigger(startEvent)\n    if (startEvent.isDefaultPrevented()) {\n      return\n    }\n\n    const dimension = this._getDimension()\n\n    this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n    Util.reflow(this._element)\n\n    $(this._element)\n      .addClass(CLASS_NAME_COLLAPSING)\n      .removeClass(`${CLASS_NAME_COLLAPSE} ${CLASS_NAME_SHOW}`)\n\n    const triggerArrayLength = this._triggerArray.length\n    if (triggerArrayLength > 0) {\n      for (let i = 0; i < triggerArrayLength; i++) {\n        const trigger = this._triggerArray[i]\n        const selector = Util.getSelectorFromElement(trigger)\n\n        if (selector !== null) {\n          const $elem = $([].slice.call(document.querySelectorAll(selector)))\n          if (!$elem.hasClass(CLASS_NAME_SHOW)) {\n            $(trigger).addClass(CLASS_NAME_COLLAPSED)\n              .attr('aria-expanded', false)\n          }\n        }\n      }\n    }\n\n    this.setTransitioning(true)\n\n    const complete = () => {\n      this.setTransitioning(false)\n      $(this._element)\n        .removeClass(CLASS_NAME_COLLAPSING)\n        .addClass(CLASS_NAME_COLLAPSE)\n        .trigger(EVENT_HIDDEN)\n    }\n\n    this._element.style[dimension] = ''\n    const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n    $(this._element)\n      .one(Util.TRANSITION_END, complete)\n      .emulateTransitionEnd(transitionDuration)\n  }\n\n  setTransitioning(isTransitioning) {\n    this._isTransitioning = isTransitioning\n  }\n\n  dispose() {\n    $.removeData(this._element, DATA_KEY)\n\n    this._config = null\n    this._parent = null\n    this._element = null\n    this._triggerArray = null\n    this._isTransitioning = null\n  }\n\n  // Private\n\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...config\n    }\n    config.toggle = Boolean(config.toggle) // Coerce string values\n    Util.typeCheckConfig(NAME, config, DefaultType)\n    return config\n  }\n\n  _getDimension() {\n    const hasWidth = $(this._element).hasClass(DIMENSION_WIDTH)\n    return hasWidth ? DIMENSION_WIDTH : DIMENSION_HEIGHT\n  }\n\n  _getParent() {\n    let parent\n\n    if (Util.isElement(this._config.parent)) {\n      parent = this._config.parent\n\n      // It's a jQuery object\n      if (typeof this._config.parent.jquery !== 'undefined') {\n        parent = this._config.parent[0]\n      }\n    } else {\n      parent = document.querySelector(this._config.parent)\n    }\n\n    const selector = `[data-toggle=\"collapse\"][data-parent=\"${this._config.parent}\"]`\n    const children = [].slice.call(parent.querySelectorAll(selector))\n\n    $(children).each((i, element) => {\n      this._addAriaAndCollapsedClass(\n        Collapse._getTargetFromElement(element),\n        [element]\n      )\n    })\n\n    return parent\n  }\n\n  _addAriaAndCollapsedClass(element, triggerArray) {\n    const isOpen = $(element).hasClass(CLASS_NAME_SHOW)\n\n    if (triggerArray.length) {\n      $(triggerArray)\n        .toggleClass(CLASS_NAME_COLLAPSED, !isOpen)\n        .attr('aria-expanded', isOpen)\n    }\n  }\n\n  // Static\n\n  static _getTargetFromElement(element) {\n    const selector = Util.getSelectorFromElement(element)\n    return selector ? document.querySelector(selector) : null\n  }\n\n  static _jQueryInterface(config) {\n    return this.each(function () {\n      const $element = $(this)\n      let data = $element.data(DATA_KEY)\n      const _config = {\n        ...Default,\n        ...$element.data(),\n        ...(typeof config === 'object' && config ? config : {})\n      }\n\n      if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {\n        _config.toggle = false\n      }\n\n      if (!data) {\n        data = new Collapse(this, _config)\n        $element.data(DATA_KEY, data)\n      }\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n  if (event.currentTarget.tagName === 'A') {\n    event.preventDefault()\n  }\n\n  const $trigger = $(this)\n  const selector = Util.getSelectorFromElement(this)\n  const selectors = [].slice.call(document.querySelectorAll(selector))\n\n  $(selectors).each(function () {\n    const $target = $(this)\n    const data = $target.data(DATA_KEY)\n    const config = data ? 'toggle' : $trigger.data()\n    Collapse._jQueryInterface.call($target, config)\n  })\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Collapse._jQueryInterface\n$.fn[NAME].Constructor = Collapse\n$.fn[NAME].noConflict = () => {\n  $.fn[NAME] = JQUERY_NO_CONFLICT\n  return Collapse._jQueryInterface\n}\n\nexport default Collapse\n","/**!\n * @fileOverview Kickass library to create and place poppers near their reference elements.\n * @version 1.16.1\n * @license\n * Copyright (c) 2016 Federico Zivolo and contributors\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && typeof navigator !== 'undefined';\n\nvar timeoutDuration = function () {\n  var longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\n  for (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n    if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n      return 1;\n    }\n  }\n  return 0;\n}();\n\nfunction microtaskDebounce(fn) {\n  var called = false;\n  return function () {\n    if (called) {\n      return;\n    }\n    called = true;\n    window.Promise.resolve().then(function () {\n      called = false;\n      fn();\n    });\n  };\n}\n\nfunction taskDebounce(fn) {\n  var scheduled = false;\n  return function () {\n    if (!scheduled) {\n      scheduled = true;\n      setTimeout(function () {\n        scheduled = false;\n        fn();\n      }, timeoutDuration);\n    }\n  };\n}\n\nvar supportsMicroTasks = isBrowser && window.Promise;\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nvar debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;\n\n/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nfunction isFunction(functionToCheck) {\n  var getType = {};\n  return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n}\n\n/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nfunction getStyleComputedProperty(element, property) {\n  if (element.nodeType !== 1) {\n    return [];\n  }\n  // NOTE: 1 DOM access here\n  var window = element.ownerDocument.defaultView;\n  var css = window.getComputedStyle(element, null);\n  return property ? css[property] : css;\n}\n\n/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nfunction getParentNode(element) {\n  if (element.nodeName === 'HTML') {\n    return element;\n  }\n  return element.parentNode || element.host;\n}\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nfunction getScrollParent(element) {\n  // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n  if (!element) {\n    return document.body;\n  }\n\n  switch (element.nodeName) {\n    case 'HTML':\n    case 'BODY':\n      return element.ownerDocument.body;\n    case '#document':\n      return element.body;\n  }\n\n  // Firefox want us to check `-x` and `-y` variations as well\n\n  var _getStyleComputedProp = getStyleComputedProperty(element),\n      overflow = _getStyleComputedProp.overflow,\n      overflowX = _getStyleComputedProp.overflowX,\n      overflowY = _getStyleComputedProp.overflowY;\n\n  if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n    return element;\n  }\n\n  return getScrollParent(getParentNode(element));\n}\n\n/**\n * Returns the reference node of the reference object, or the reference object itself.\n * @method\n * @memberof Popper.Utils\n * @param {Element|Object} reference - the reference element (the popper will be relative to this)\n * @returns {Element} parent\n */\nfunction getReferenceNode(reference) {\n  return reference && reference.referenceNode ? reference.referenceNode : reference;\n}\n\nvar isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nvar isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n\n/**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\nfunction isIE(version) {\n  if (version === 11) {\n    return isIE11;\n  }\n  if (version === 10) {\n    return isIE10;\n  }\n  return isIE11 || isIE10;\n}\n\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nfunction getOffsetParent(element) {\n  if (!element) {\n    return document.documentElement;\n  }\n\n  var noOffsetParent = isIE(10) ? document.body : null;\n\n  // NOTE: 1 DOM access here\n  var offsetParent = element.offsetParent || null;\n  // Skip hidden elements which don't have an offsetParent\n  while (offsetParent === noOffsetParent && element.nextElementSibling) {\n    offsetParent = (element = element.nextElementSibling).offsetParent;\n  }\n\n  var nodeName = offsetParent && offsetParent.nodeName;\n\n  if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n    return element ? element.ownerDocument.documentElement : document.documentElement;\n  }\n\n  // .offsetParent will return the closest TH, TD or TABLE in case\n  // no offsetParent is present, I hate this job...\n  if (['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') {\n    return getOffsetParent(offsetParent);\n  }\n\n  return offsetParent;\n}\n\nfunction isOffsetContainer(element) {\n  var nodeName = element.nodeName;\n\n  if (nodeName === 'BODY') {\n    return false;\n  }\n  return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element;\n}\n\n/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nfunction getRoot(node) {\n  if (node.parentNode !== null) {\n    return getRoot(node.parentNode);\n  }\n\n  return node;\n}\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nfunction findCommonOffsetParent(element1, element2) {\n  // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n  if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n    return document.documentElement;\n  }\n\n  // Here we make sure to give as \"start\" the element that comes first in the DOM\n  var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;\n  var start = order ? element1 : element2;\n  var end = order ? element2 : element1;\n\n  // Get common ancestor container\n  var range = document.createRange();\n  range.setStart(start, 0);\n  range.setEnd(end, 0);\n  var commonAncestorContainer = range.commonAncestorContainer;\n\n  // Both nodes are inside #document\n\n  if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) {\n    if (isOffsetContainer(commonAncestorContainer)) {\n      return commonAncestorContainer;\n    }\n\n    return getOffsetParent(commonAncestorContainer);\n  }\n\n  // one of the nodes is inside shadowDOM, find which one\n  var element1root = getRoot(element1);\n  if (element1root.host) {\n    return findCommonOffsetParent(element1root.host, element2);\n  } else {\n    return findCommonOffsetParent(element1, getRoot(element2).host);\n  }\n}\n\n/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nfunction getScroll(element) {\n  var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';\n\n  var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n  var nodeName = element.nodeName;\n\n  if (nodeName === 'BODY' || nodeName === 'HTML') {\n    var html = element.ownerDocument.documentElement;\n    var scrollingElement = element.ownerDocument.scrollingElement || html;\n    return scrollingElement[upperSide];\n  }\n\n  return element[upperSide];\n}\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nfunction includeScroll(rect, element) {\n  var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n  var scrollTop = getScroll(element, 'top');\n  var scrollLeft = getScroll(element, 'left');\n  var modifier = subtract ? -1 : 1;\n  rect.top += scrollTop * modifier;\n  rect.bottom += scrollTop * modifier;\n  rect.left += scrollLeft * modifier;\n  rect.right += scrollLeft * modifier;\n  return rect;\n}\n\n/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nfunction getBordersSize(styles, axis) {\n  var sideA = axis === 'x' ? 'Left' : 'Top';\n  var sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n  return parseFloat(styles['border' + sideA + 'Width']) + parseFloat(styles['border' + sideB + 'Width']);\n}\n\nfunction getSize(axis, body, html, computedStyle) {\n  return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE(10) ? parseInt(html['offset' + axis]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')]) : 0);\n}\n\nfunction getWindowSizes(document) {\n  var body = document.body;\n  var html = document.documentElement;\n  var computedStyle = isIE(10) && getComputedStyle(html);\n\n  return {\n    height: getSize('Height', body, html, computedStyle),\n    width: getSize('Width', body, html, computedStyle)\n  };\n}\n\nvar classCallCheck = function (instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n};\n\nvar createClass = function () {\n  function defineProperties(target, props) {\n    for (var i = 0; i < props.length; i++) {\n      var descriptor = props[i];\n      descriptor.enumerable = descriptor.enumerable || false;\n      descriptor.configurable = true;\n      if (\"value\" in descriptor) descriptor.writable = true;\n      Object.defineProperty(target, descriptor.key, descriptor);\n    }\n  }\n\n  return function (Constructor, protoProps, staticProps) {\n    if (protoProps) defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) defineProperties(Constructor, staticProps);\n    return Constructor;\n  };\n}();\n\n\n\n\n\nvar defineProperty = function (obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n};\n\nvar _extends = Object.assign || function (target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i];\n\n    for (var key in source) {\n      if (Object.prototype.hasOwnProperty.call(source, key)) {\n        target[key] = source[key];\n      }\n    }\n  }\n\n  return target;\n};\n\n/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nfunction getClientRect(offsets) {\n  return _extends({}, offsets, {\n    right: offsets.left + offsets.width,\n    bottom: offsets.top + offsets.height\n  });\n}\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nfunction getBoundingClientRect(element) {\n  var rect = {};\n\n  // IE10 10 FIX: Please, don't ask, the element isn't\n  // considered in DOM in some circumstances...\n  // This isn't reproducible in IE10 compatibility mode of IE11\n  try {\n    if (isIE(10)) {\n      rect = element.getBoundingClientRect();\n      var scrollTop = getScroll(element, 'top');\n      var scrollLeft = getScroll(element, 'left');\n      rect.top += scrollTop;\n      rect.left += scrollLeft;\n      rect.bottom += scrollTop;\n      rect.right += scrollLeft;\n    } else {\n      rect = element.getBoundingClientRect();\n    }\n  } catch (e) {}\n\n  var result = {\n    left: rect.left,\n    top: rect.top,\n    width: rect.right - rect.left,\n    height: rect.bottom - rect.top\n  };\n\n  // subtract scrollbar size from sizes\n  var sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n  var width = sizes.width || element.clientWidth || result.width;\n  var height = sizes.height || element.clientHeight || result.height;\n\n  var horizScrollbar = element.offsetWidth - width;\n  var vertScrollbar = element.offsetHeight - height;\n\n  // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n  // we make this check conditional for performance reasons\n  if (horizScrollbar || vertScrollbar) {\n    var styles = getStyleComputedProperty(element);\n    horizScrollbar -= getBordersSize(styles, 'x');\n    vertScrollbar -= getBordersSize(styles, 'y');\n\n    result.width -= horizScrollbar;\n    result.height -= vertScrollbar;\n  }\n\n  return getClientRect(result);\n}\n\nfunction getOffsetRectRelativeToArbitraryNode(children, parent) {\n  var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n  var isIE10 = isIE(10);\n  var isHTML = parent.nodeName === 'HTML';\n  var childrenRect = getBoundingClientRect(children);\n  var parentRect = getBoundingClientRect(parent);\n  var scrollParent = getScrollParent(children);\n\n  var styles = getStyleComputedProperty(parent);\n  var borderTopWidth = parseFloat(styles.borderTopWidth);\n  var borderLeftWidth = parseFloat(styles.borderLeftWidth);\n\n  // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n  if (fixedPosition && isHTML) {\n    parentRect.top = Math.max(parentRect.top, 0);\n    parentRect.left = Math.max(parentRect.left, 0);\n  }\n  var offsets = getClientRect({\n    top: childrenRect.top - parentRect.top - borderTopWidth,\n    left: childrenRect.left - parentRect.left - borderLeftWidth,\n    width: childrenRect.width,\n    height: childrenRect.height\n  });\n  offsets.marginTop = 0;\n  offsets.marginLeft = 0;\n\n  // Subtract margins of documentElement in case it's being used as parent\n  // we do this only on HTML because it's the only element that behaves\n  // differently when margins are applied to it. The margins are included in\n  // the box of the documentElement, in the other cases not.\n  if (!isIE10 && isHTML) {\n    var marginTop = parseFloat(styles.marginTop);\n    var marginLeft = parseFloat(styles.marginLeft);\n\n    offsets.top -= borderTopWidth - marginTop;\n    offsets.bottom -= borderTopWidth - marginTop;\n    offsets.left -= borderLeftWidth - marginLeft;\n    offsets.right -= borderLeftWidth - marginLeft;\n\n    // Attach marginTop and marginLeft because in some circumstances we may need them\n    offsets.marginTop = marginTop;\n    offsets.marginLeft = marginLeft;\n  }\n\n  if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') {\n    offsets = includeScroll(offsets, parent);\n  }\n\n  return offsets;\n}\n\nfunction getViewportOffsetRectRelativeToArtbitraryNode(element) {\n  var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n  var html = element.ownerDocument.documentElement;\n  var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n  var width = Math.max(html.clientWidth, window.innerWidth || 0);\n  var height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n  var scrollTop = !excludeScroll ? getScroll(html) : 0;\n  var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n\n  var offset = {\n    top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n    left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n    width: width,\n    height: height\n  };\n\n  return getClientRect(offset);\n}\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nfunction isFixed(element) {\n  var nodeName = element.nodeName;\n  if (nodeName === 'BODY' || nodeName === 'HTML') {\n    return false;\n  }\n  if (getStyleComputedProperty(element, 'position') === 'fixed') {\n    return true;\n  }\n  var parentNode = getParentNode(element);\n  if (!parentNode) {\n    return false;\n  }\n  return isFixed(parentNode);\n}\n\n/**\n * Finds the first parent of an element that has a transformed property defined\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} first transformed parent or documentElement\n */\n\nfunction getFixedPositionOffsetParent(element) {\n  // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n  if (!element || !element.parentElement || isIE()) {\n    return document.documentElement;\n  }\n  var el = element.parentElement;\n  while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n    el = el.parentElement;\n  }\n  return el || document.documentElement;\n}\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @param {Boolean} fixedPosition - Is in fixed position mode\n * @returns {Object} Coordinates of the boundaries\n */\nfunction getBoundaries(popper, reference, padding, boundariesElement) {\n  var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n  // NOTE: 1 DOM access here\n\n  var boundaries = { top: 0, left: 0 };\n  var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n\n  // Handle viewport case\n  if (boundariesElement === 'viewport') {\n    boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n  } else {\n    // Handle other cases based on DOM element used as boundaries\n    var boundariesNode = void 0;\n    if (boundariesElement === 'scrollParent') {\n      boundariesNode = getScrollParent(getParentNode(reference));\n      if (boundariesNode.nodeName === 'BODY') {\n        boundariesNode = popper.ownerDocument.documentElement;\n      }\n    } else if (boundariesElement === 'window') {\n      boundariesNode = popper.ownerDocument.documentElement;\n    } else {\n      boundariesNode = boundariesElement;\n    }\n\n    var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition);\n\n    // In case of HTML, we need a different computation\n    if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n      var _getWindowSizes = getWindowSizes(popper.ownerDocument),\n          height = _getWindowSizes.height,\n          width = _getWindowSizes.width;\n\n      boundaries.top += offsets.top - offsets.marginTop;\n      boundaries.bottom = height + offsets.top;\n      boundaries.left += offsets.left - offsets.marginLeft;\n      boundaries.right = width + offsets.left;\n    } else {\n      // for all the other DOM elements, this one is good\n      boundaries = offsets;\n    }\n  }\n\n  // Add paddings\n  padding = padding || 0;\n  var isPaddingNumber = typeof padding === 'number';\n  boundaries.left += isPaddingNumber ? padding : padding.left || 0;\n  boundaries.top += isPaddingNumber ? padding : padding.top || 0;\n  boundaries.right -= isPaddingNumber ? padding : padding.right || 0;\n  boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0;\n\n  return boundaries;\n}\n\nfunction getArea(_ref) {\n  var width = _ref.width,\n      height = _ref.height;\n\n  return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) {\n  var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n\n  if (placement.indexOf('auto') === -1) {\n    return placement;\n  }\n\n  var boundaries = getBoundaries(popper, reference, padding, boundariesElement);\n\n  var rects = {\n    top: {\n      width: boundaries.width,\n      height: refRect.top - boundaries.top\n    },\n    right: {\n      width: boundaries.right - refRect.right,\n      height: boundaries.height\n    },\n    bottom: {\n      width: boundaries.width,\n      height: boundaries.bottom - refRect.bottom\n    },\n    left: {\n      width: refRect.left - boundaries.left,\n      height: boundaries.height\n    }\n  };\n\n  var sortedAreas = Object.keys(rects).map(function (key) {\n    return _extends({\n      key: key\n    }, rects[key], {\n      area: getArea(rects[key])\n    });\n  }).sort(function (a, b) {\n    return b.area - a.area;\n  });\n\n  var filteredAreas = sortedAreas.filter(function (_ref2) {\n    var width = _ref2.width,\n        height = _ref2.height;\n    return width >= popper.clientWidth && height >= popper.clientHeight;\n  });\n\n  var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;\n\n  var variation = placement.split('-')[1];\n\n  return computedPlacement + (variation ? '-' + variation : '');\n}\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nfunction getReferenceOffsets(state, popper, reference) {\n  var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n  var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n  return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\n\n/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nfunction getOuterSizes(element) {\n  var window = element.ownerDocument.defaultView;\n  var styles = window.getComputedStyle(element);\n  var x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n  var y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\n  var result = {\n    width: element.offsetWidth + y,\n    height: element.offsetHeight + x\n  };\n  return result;\n}\n\n/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nfunction getOppositePlacement(placement) {\n  var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n  return placement.replace(/left|right|bottom|top/g, function (matched) {\n    return hash[matched];\n  });\n}\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nfunction getPopperOffsets(popper, referenceOffsets, placement) {\n  placement = placement.split('-')[0];\n\n  // Get popper node sizes\n  var popperRect = getOuterSizes(popper);\n\n  // Add position, width and height to our offsets object\n  var popperOffsets = {\n    width: popperRect.width,\n    height: popperRect.height\n  };\n\n  // depending by the popper placement we have to compute its offsets slightly differently\n  var isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n  var mainSide = isHoriz ? 'top' : 'left';\n  var secondarySide = isHoriz ? 'left' : 'top';\n  var measurement = isHoriz ? 'height' : 'width';\n  var secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n  popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;\n  if (placement === secondarySide) {\n    popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n  } else {\n    popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)];\n  }\n\n  return popperOffsets;\n}\n\n/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction find(arr, check) {\n  // use native find if supported\n  if (Array.prototype.find) {\n    return arr.find(check);\n  }\n\n  // use `filter` to obtain the same behavior of `find`\n  return arr.filter(check)[0];\n}\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction findIndex(arr, prop, value) {\n  // use native findIndex if supported\n  if (Array.prototype.findIndex) {\n    return arr.findIndex(function (cur) {\n      return cur[prop] === value;\n    });\n  }\n\n  // use `find` + `indexOf` if `findIndex` isn't supported\n  var match = find(arr, function (obj) {\n    return obj[prop] === value;\n  });\n  return arr.indexOf(match);\n}\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nfunction runModifiers(modifiers, data, ends) {\n  var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n  modifiersToRun.forEach(function (modifier) {\n    if (modifier['function']) {\n      // eslint-disable-line dot-notation\n      console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n    }\n    var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n    if (modifier.enabled && isFunction(fn)) {\n      // Add properties to offsets to make them a complete clientRect object\n      // we do this before each modifier to make sure the previous one doesn't\n      // mess with these values\n      data.offsets.popper = getClientRect(data.offsets.popper);\n      data.offsets.reference = getClientRect(data.offsets.reference);\n\n      data = fn(data, modifier);\n    }\n  });\n\n  return data;\n}\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.<br />\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nfunction update() {\n  // if popper is destroyed, don't perform any further update\n  if (this.state.isDestroyed) {\n    return;\n  }\n\n  var data = {\n    instance: this,\n    styles: {},\n    arrowStyles: {},\n    attributes: {},\n    flipped: false,\n    offsets: {}\n  };\n\n  // compute reference element offsets\n  data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed);\n\n  // compute auto placement, store placement inside the data object,\n  // modifiers will be able to edit `placement` if needed\n  // and refer to originalPlacement to know the original value\n  data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding);\n\n  // store the computed placement inside `originalPlacement`\n  data.originalPlacement = data.placement;\n\n  data.positionFixed = this.options.positionFixed;\n\n  // compute the popper offsets\n  data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);\n\n  data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute';\n\n  // run the modifiers\n  data = runModifiers(this.modifiers, data);\n\n  // the first `update` will call `onCreate` callback\n  // the other ones will call `onUpdate` callback\n  if (!this.state.isCreated) {\n    this.state.isCreated = true;\n    this.options.onCreate(data);\n  } else {\n    this.options.onUpdate(data);\n  }\n}\n\n/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nfunction isModifierEnabled(modifiers, modifierName) {\n  return modifiers.some(function (_ref) {\n    var name = _ref.name,\n        enabled = _ref.enabled;\n    return enabled && name === modifierName;\n  });\n}\n\n/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nfunction getSupportedPropertyName(property) {\n  var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n  var upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n  for (var i = 0; i < prefixes.length; i++) {\n    var prefix = prefixes[i];\n    var toCheck = prefix ? '' + prefix + upperProp : property;\n    if (typeof document.body.style[toCheck] !== 'undefined') {\n      return toCheck;\n    }\n  }\n  return null;\n}\n\n/**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\nfunction destroy() {\n  this.state.isDestroyed = true;\n\n  // touch DOM only if `applyStyle` modifier is enabled\n  if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n    this.popper.removeAttribute('x-placement');\n    this.popper.style.position = '';\n    this.popper.style.top = '';\n    this.popper.style.left = '';\n    this.popper.style.right = '';\n    this.popper.style.bottom = '';\n    this.popper.style.willChange = '';\n    this.popper.style[getSupportedPropertyName('transform')] = '';\n  }\n\n  this.disableEventListeners();\n\n  // remove the popper if user explicitly asked for the deletion on destroy\n  // do not use `remove` because IE11 doesn't support it\n  if (this.options.removeOnDestroy) {\n    this.popper.parentNode.removeChild(this.popper);\n  }\n  return this;\n}\n\n/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nfunction getWindow(element) {\n  var ownerDocument = element.ownerDocument;\n  return ownerDocument ? ownerDocument.defaultView : window;\n}\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n  var isBody = scrollParent.nodeName === 'BODY';\n  var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n  target.addEventListener(event, callback, { passive: true });\n\n  if (!isBody) {\n    attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);\n  }\n  scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction setupEventListeners(reference, options, state, updateBound) {\n  // Resize event listener on window\n  state.updateBound = updateBound;\n  getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n  // Scroll event listener on scroll parents\n  var scrollElement = getScrollParent(reference);\n  attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);\n  state.scrollElement = scrollElement;\n  state.eventsEnabled = true;\n\n  return state;\n}\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nfunction enableEventListeners() {\n  if (!this.state.eventsEnabled) {\n    this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);\n  }\n}\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction removeEventListeners(reference, state) {\n  // Remove resize event listener on window\n  getWindow(reference).removeEventListener('resize', state.updateBound);\n\n  // Remove scroll event listener on scroll parents\n  state.scrollParents.forEach(function (target) {\n    target.removeEventListener('scroll', state.updateBound);\n  });\n\n  // Reset state\n  state.updateBound = null;\n  state.scrollParents = [];\n  state.scrollElement = null;\n  state.eventsEnabled = false;\n  return state;\n}\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger `onUpdate` callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nfunction disableEventListeners() {\n  if (this.state.eventsEnabled) {\n    cancelAnimationFrame(this.scheduleUpdate);\n    this.state = removeEventListeners(this.reference, this.state);\n  }\n}\n\n/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nfunction isNumeric(n) {\n  return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setStyles(element, styles) {\n  Object.keys(styles).forEach(function (prop) {\n    var unit = '';\n    // add unit if the value is numeric and is one of the following\n    if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {\n      unit = 'px';\n    }\n    element.style[prop] = styles[prop] + unit;\n  });\n}\n\n/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setAttributes(element, attributes) {\n  Object.keys(attributes).forEach(function (prop) {\n    var value = attributes[prop];\n    if (value !== false) {\n      element.setAttribute(prop, attributes[prop]);\n    } else {\n      element.removeAttribute(prop);\n    }\n  });\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nfunction applyStyle(data) {\n  // any property present in `data.styles` will be applied to the popper,\n  // in this way we can make the 3rd party modifiers add custom styles to it\n  // Be aware, modifiers could override the properties defined in the previous\n  // lines of this modifier!\n  setStyles(data.instance.popper, data.styles);\n\n  // any property present in `data.attributes` will be applied to the popper,\n  // they will be set as HTML attributes of the element\n  setAttributes(data.instance.popper, data.attributes);\n\n  // if arrowElement is defined and arrowStyles has some properties\n  if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n    setStyles(data.arrowElement, data.arrowStyles);\n  }\n\n  return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper\n * @param {Object} options - Popper.js options\n */\nfunction applyStyleOnLoad(reference, popper, options, modifierOptions, state) {\n  // compute reference element offsets\n  var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);\n\n  // compute auto placement, store placement inside the data object,\n  // modifiers will be able to edit `placement` if needed\n  // and refer to originalPlacement to know the original value\n  var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);\n\n  popper.setAttribute('x-placement', placement);\n\n  // Apply `position` to popper before anything else because\n  // without the position applied we can't guarantee correct computations\n  setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });\n\n  return options;\n}\n\n/**\n * @function\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Boolean} shouldRound - If the offsets should be rounded at all\n * @returns {Object} The popper's position offsets rounded\n *\n * The tale of pixel-perfect positioning. It's still not 100% perfect, but as\n * good as it can be within reason.\n * Discussion here: https://github.com/FezVrasta/popper.js/pull/715\n *\n * Low DPI screens cause a popper to be blurry if not using full pixels (Safari\n * as well on High DPI screens).\n *\n * Firefox prefers no rounding for positioning and does not have blurriness on\n * high DPI screens.\n *\n * Only horizontal placement and left/right values need to be considered.\n */\nfunction getRoundedOffsets(data, shouldRound) {\n  var _data$offsets = data.offsets,\n      popper = _data$offsets.popper,\n      reference = _data$offsets.reference;\n  var round = Math.round,\n      floor = Math.floor;\n\n  var noRound = function noRound(v) {\n    return v;\n  };\n\n  var referenceWidth = round(reference.width);\n  var popperWidth = round(popper.width);\n\n  var isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\n  var isVariation = data.placement.indexOf('-') !== -1;\n  var sameWidthParity = referenceWidth % 2 === popperWidth % 2;\n  var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;\n\n  var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor;\n  var verticalToInteger = !shouldRound ? noRound : round;\n\n  return {\n    left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left),\n    top: verticalToInteger(popper.top),\n    bottom: verticalToInteger(popper.bottom),\n    right: horizontalToInteger(popper.right)\n  };\n}\n\nvar isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeStyle(data, options) {\n  var x = options.x,\n      y = options.y;\n  var popper = data.offsets.popper;\n\n  // Remove this legacy support in Popper.js v2\n\n  var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) {\n    return modifier.name === 'applyStyle';\n  }).gpuAcceleration;\n  if (legacyGpuAccelerationOption !== undefined) {\n    console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');\n  }\n  var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration;\n\n  var offsetParent = getOffsetParent(data.instance.popper);\n  var offsetParentRect = getBoundingClientRect(offsetParent);\n\n  // Styles\n  var styles = {\n    position: popper.position\n  };\n\n  var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox);\n\n  var sideA = x === 'bottom' ? 'top' : 'bottom';\n  var sideB = y === 'right' ? 'left' : 'right';\n\n  // if gpuAcceleration is set to `true` and transform is supported,\n  //  we use `translate3d` to apply the position to the popper we\n  // automatically use the supported prefixed version if needed\n  var prefixedProperty = getSupportedPropertyName('transform');\n\n  // now, let's make a step back and look at this code closely (wtf?)\n  // If the content of the popper grows once it's been positioned, it\n  // may happen that the popper gets misplaced because of the new content\n  // overflowing its reference element\n  // To avoid this problem, we provide two options (x and y), which allow\n  // the consumer to define the offset origin.\n  // If we position a popper on top of a reference element, we can set\n  // `x` to `top` to make the popper grow towards its top instead of\n  // its bottom.\n  var left = void 0,\n      top = void 0;\n  if (sideA === 'bottom') {\n    // when offsetParent is <html> the positioning is relative to the bottom of the screen (excluding the scrollbar)\n    // and not the bottom of the html element\n    if (offsetParent.nodeName === 'HTML') {\n      top = -offsetParent.clientHeight + offsets.bottom;\n    } else {\n      top = -offsetParentRect.height + offsets.bottom;\n    }\n  } else {\n    top = offsets.top;\n  }\n  if (sideB === 'right') {\n    if (offsetParent.nodeName === 'HTML') {\n      left = -offsetParent.clientWidth + offsets.right;\n    } else {\n      left = -offsetParentRect.width + offsets.right;\n    }\n  } else {\n    left = offsets.left;\n  }\n  if (gpuAcceleration && prefixedProperty) {\n    styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)';\n    styles[sideA] = 0;\n    styles[sideB] = 0;\n    styles.willChange = 'transform';\n  } else {\n    // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n    var invertTop = sideA === 'bottom' ? -1 : 1;\n    var invertLeft = sideB === 'right' ? -1 : 1;\n    styles[sideA] = top * invertTop;\n    styles[sideB] = left * invertLeft;\n    styles.willChange = sideA + ', ' + sideB;\n  }\n\n  // Attributes\n  var attributes = {\n    'x-placement': data.placement\n  };\n\n  // Update `data` attributes, styles and arrowStyles\n  data.attributes = _extends({}, attributes, data.attributes);\n  data.styles = _extends({}, styles, data.styles);\n  data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);\n\n  return data;\n}\n\n/**\n * Helper used to know if the given modifier depends from another one.<br />\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nfunction isModifierRequired(modifiers, requestingName, requestedName) {\n  var requesting = find(modifiers, function (_ref) {\n    var name = _ref.name;\n    return name === requestingName;\n  });\n\n  var isRequired = !!requesting && modifiers.some(function (modifier) {\n    return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order;\n  });\n\n  if (!isRequired) {\n    var _requesting = '`' + requestingName + '`';\n    var requested = '`' + requestedName + '`';\n    console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!');\n  }\n  return isRequired;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction arrow(data, options) {\n  var _data$offsets$arrow;\n\n  // arrow depends on keepTogether in order to work\n  if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n    return data;\n  }\n\n  var arrowElement = options.element;\n\n  // if arrowElement is a string, suppose it's a CSS selector\n  if (typeof arrowElement === 'string') {\n    arrowElement = data.instance.popper.querySelector(arrowElement);\n\n    // if arrowElement is not found, don't run the modifier\n    if (!arrowElement) {\n      return data;\n    }\n  } else {\n    // if the arrowElement isn't a query selector we must check that the\n    // provided DOM node is child of its popper node\n    if (!data.instance.popper.contains(arrowElement)) {\n      console.warn('WARNING: `arrow.element` must be child of its popper element!');\n      return data;\n    }\n  }\n\n  var placement = data.placement.split('-')[0];\n  var _data$offsets = data.offsets,\n      popper = _data$offsets.popper,\n      reference = _data$offsets.reference;\n\n  var isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n  var len = isVertical ? 'height' : 'width';\n  var sideCapitalized = isVertical ? 'Top' : 'Left';\n  var side = sideCapitalized.toLowerCase();\n  var altSide = isVertical ? 'left' : 'top';\n  var opSide = isVertical ? 'bottom' : 'right';\n  var arrowElementSize = getOuterSizes(arrowElement)[len];\n\n  //\n  // extends keepTogether behavior making sure the popper and its\n  // reference have enough pixels in conjunction\n  //\n\n  // top/left side\n  if (reference[opSide] - arrowElementSize < popper[side]) {\n    data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);\n  }\n  // bottom/right side\n  if (reference[side] + arrowElementSize > popper[opSide]) {\n    data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];\n  }\n  data.offsets.popper = getClientRect(data.offsets.popper);\n\n  // compute center of the popper\n  var center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n  // Compute the sideValue using the updated popper offsets\n  // take popper margin in account because we don't have this info available\n  var css = getStyleComputedProperty(data.instance.popper);\n  var popperMarginSide = parseFloat(css['margin' + sideCapitalized]);\n  var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width']);\n  var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n  // prevent arrowElement from being placed not contiguously to its popper\n  sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n  data.arrowElement = arrowElement;\n  data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow);\n\n  return data;\n}\n\n/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nfunction getOppositeVariation(variation) {\n  if (variation === 'end') {\n    return 'start';\n  } else if (variation === 'start') {\n    return 'end';\n  }\n  return variation;\n}\n\n/**\n * List of accepted placements to use as values of the `placement` option.<br />\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.<br />\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-end` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nvar placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];\n\n// Get rid of `auto` `auto-start` and `auto-end`\nvar validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nfunction clockwise(placement) {\n  var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n  var index = validPlacements.indexOf(placement);\n  var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index));\n  return counter ? arr.reverse() : arr;\n}\n\nvar BEHAVIORS = {\n  FLIP: 'flip',\n  CLOCKWISE: 'clockwise',\n  COUNTERCLOCKWISE: 'counterclockwise'\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction flip(data, options) {\n  // if `inner` modifier is enabled, we can't use the `flip` modifier\n  if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n    return data;\n  }\n\n  if (data.flipped && data.placement === data.originalPlacement) {\n    // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n    return data;\n  }\n\n  var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed);\n\n  var placement = data.placement.split('-')[0];\n  var placementOpposite = getOppositePlacement(placement);\n  var variation = data.placement.split('-')[1] || '';\n\n  var flipOrder = [];\n\n  switch (options.behavior) {\n    case BEHAVIORS.FLIP:\n      flipOrder = [placement, placementOpposite];\n      break;\n    case BEHAVIORS.CLOCKWISE:\n      flipOrder = clockwise(placement);\n      break;\n    case BEHAVIORS.COUNTERCLOCKWISE:\n      flipOrder = clockwise(placement, true);\n      break;\n    default:\n      flipOrder = options.behavior;\n  }\n\n  flipOrder.forEach(function (step, index) {\n    if (placement !== step || flipOrder.length === index + 1) {\n      return data;\n    }\n\n    placement = data.placement.split('-')[0];\n    placementOpposite = getOppositePlacement(placement);\n\n    var popperOffsets = data.offsets.popper;\n    var refOffsets = data.offsets.reference;\n\n    // using floor because the reference offsets may contain decimals we are not going to consider here\n    var floor = Math.floor;\n    var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom);\n\n    var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n    var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n    var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n    var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n    var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom;\n\n    // flip the variation if required\n    var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n\n    // flips variation if reference element overflows boundaries\n    var flippedVariationByRef = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom);\n\n    // flips variation if popper content overflows boundaries\n    var flippedVariationByContent = !!options.flipVariationsByContent && (isVertical && variation === 'start' && overflowsRight || isVertical && variation === 'end' && overflowsLeft || !isVertical && variation === 'start' && overflowsBottom || !isVertical && variation === 'end' && overflowsTop);\n\n    var flippedVariation = flippedVariationByRef || flippedVariationByContent;\n\n    if (overlapsRef || overflowsBoundaries || flippedVariation) {\n      // this boolean to detect any flip loop\n      data.flipped = true;\n\n      if (overlapsRef || overflowsBoundaries) {\n        placement = flipOrder[index + 1];\n      }\n\n      if (flippedVariation) {\n        variation = getOppositeVariation(variation);\n      }\n\n      data.placement = placement + (variation ? '-' + variation : '');\n\n      // this object contains `position`, we want to preserve it along with\n      // any additional property we may add in the future\n      data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));\n\n      data = runModifiers(data.instance.modifiers, data, 'flip');\n    }\n  });\n  return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction keepTogether(data) {\n  var _data$offsets = data.offsets,\n      popper = _data$offsets.popper,\n      reference = _data$offsets.reference;\n\n  var placement = data.placement.split('-')[0];\n  var floor = Math.floor;\n  var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n  var side = isVertical ? 'right' : 'bottom';\n  var opSide = isVertical ? 'left' : 'top';\n  var measurement = isVertical ? 'width' : 'height';\n\n  if (popper[side] < floor(reference[opSide])) {\n    data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement];\n  }\n  if (popper[opSide] > floor(reference[side])) {\n    data.offsets.popper[opSide] = floor(reference[side]);\n  }\n\n  return data;\n}\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nfunction toValue(str, measurement, popperOffsets, referenceOffsets) {\n  // separate value from unit\n  var split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n  var value = +split[1];\n  var unit = split[2];\n\n  // If it's not a number it's an operator, I guess\n  if (!value) {\n    return str;\n  }\n\n  if (unit.indexOf('%') === 0) {\n    var element = void 0;\n    switch (unit) {\n      case '%p':\n        element = popperOffsets;\n        break;\n      case '%':\n      case '%r':\n      default:\n        element = referenceOffsets;\n    }\n\n    var rect = getClientRect(element);\n    return rect[measurement] / 100 * value;\n  } else if (unit === 'vh' || unit === 'vw') {\n    // if is a vh or vw, we calculate the size based on the viewport\n    var size = void 0;\n    if (unit === 'vh') {\n      size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n    } else {\n      size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n    }\n    return size / 100 * value;\n  } else {\n    // if is an explicit pixel unit, we get rid of the unit and keep the value\n    // if is an implicit unit, it's px, and we return just the value\n    return value;\n  }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nfunction parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {\n  var offsets = [0, 0];\n\n  // Use height if placement is left or right and index is 0 otherwise use width\n  // in this way the first offset will use an axis and the second one\n  // will use the other one\n  var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n  // Split the offset string to obtain a list of values and operands\n  // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n  var fragments = offset.split(/(\\+|\\-)/).map(function (frag) {\n    return frag.trim();\n  });\n\n  // Detect if the offset string contains a pair of values or a single one\n  // they could be separated by comma or space\n  var divider = fragments.indexOf(find(fragments, function (frag) {\n    return frag.search(/,|\\s/) !== -1;\n  }));\n\n  if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n    console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');\n  }\n\n  // If divider is found, we divide the list of values and operands to divide\n  // them by ofset X and Y.\n  var splitRegex = /\\s*,\\s*|\\s+/;\n  var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments];\n\n  // Convert the values with units to absolute pixels to allow our computations\n  ops = ops.map(function (op, index) {\n    // Most of the units rely on the orientation of the popper\n    var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width';\n    var mergeWithPrevious = false;\n    return op\n    // This aggregates any `+` or `-` sign that aren't considered operators\n    // e.g.: 10 + +5 => [10, +, +5]\n    .reduce(function (a, b) {\n      if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n        a[a.length - 1] = b;\n        mergeWithPrevious = true;\n        return a;\n      } else if (mergeWithPrevious) {\n        a[a.length - 1] += b;\n        mergeWithPrevious = false;\n        return a;\n      } else {\n        return a.concat(b);\n      }\n    }, [])\n    // Here we convert the string values into number values (in px)\n    .map(function (str) {\n      return toValue(str, measurement, popperOffsets, referenceOffsets);\n    });\n  });\n\n  // Loop trough the offsets arrays and execute the operations\n  ops.forEach(function (op, index) {\n    op.forEach(function (frag, index2) {\n      if (isNumeric(frag)) {\n        offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n      }\n    });\n  });\n  return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nfunction offset(data, _ref) {\n  var offset = _ref.offset;\n  var placement = data.placement,\n      _data$offsets = data.offsets,\n      popper = _data$offsets.popper,\n      reference = _data$offsets.reference;\n\n  var basePlacement = placement.split('-')[0];\n\n  var offsets = void 0;\n  if (isNumeric(+offset)) {\n    offsets = [+offset, 0];\n  } else {\n    offsets = parseOffset(offset, popper, reference, basePlacement);\n  }\n\n  if (basePlacement === 'left') {\n    popper.top += offsets[0];\n    popper.left -= offsets[1];\n  } else if (basePlacement === 'right') {\n    popper.top += offsets[0];\n    popper.left += offsets[1];\n  } else if (basePlacement === 'top') {\n    popper.left += offsets[0];\n    popper.top -= offsets[1];\n  } else if (basePlacement === 'bottom') {\n    popper.left += offsets[0];\n    popper.top += offsets[1];\n  }\n\n  data.popper = popper;\n  return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction preventOverflow(data, options) {\n  var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper);\n\n  // If offsetParent is the reference element, we really want to\n  // go one step up and use the next offsetParent as reference to\n  // avoid to make this modifier completely useless and look like broken\n  if (data.instance.reference === boundariesElement) {\n    boundariesElement = getOffsetParent(boundariesElement);\n  }\n\n  // NOTE: DOM access here\n  // resets the popper's position so that the document size can be calculated excluding\n  // the size of the popper element itself\n  var transformProp = getSupportedPropertyName('transform');\n  var popperStyles = data.instance.popper.style; // assignment to help minification\n  var top = popperStyles.top,\n      left = popperStyles.left,\n      transform = popperStyles[transformProp];\n\n  popperStyles.top = '';\n  popperStyles.left = '';\n  popperStyles[transformProp] = '';\n\n  var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed);\n\n  // NOTE: DOM access here\n  // restores the original style properties after the offsets have been computed\n  popperStyles.top = top;\n  popperStyles.left = left;\n  popperStyles[transformProp] = transform;\n\n  options.boundaries = boundaries;\n\n  var order = options.priority;\n  var popper = data.offsets.popper;\n\n  var check = {\n    primary: function primary(placement) {\n      var value = popper[placement];\n      if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {\n        value = Math.max(popper[placement], boundaries[placement]);\n      }\n      return defineProperty({}, placement, value);\n    },\n    secondary: function secondary(placement) {\n      var mainSide = placement === 'right' ? 'left' : 'top';\n      var value = popper[mainSide];\n      if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {\n        value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));\n      }\n      return defineProperty({}, mainSide, value);\n    }\n  };\n\n  order.forEach(function (placement) {\n    var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n    popper = _extends({}, popper, check[side](placement));\n  });\n\n  data.offsets.popper = popper;\n\n  return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction shift(data) {\n  var placement = data.placement;\n  var basePlacement = placement.split('-')[0];\n  var shiftvariation = placement.split('-')[1];\n\n  // if shift shiftvariation is specified, run the modifier\n  if (shiftvariation) {\n    var _data$offsets = data.offsets,\n        reference = _data$offsets.reference,\n        popper = _data$offsets.popper;\n\n    var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n    var side = isVertical ? 'left' : 'top';\n    var measurement = isVertical ? 'width' : 'height';\n\n    var shiftOffsets = {\n      start: defineProperty({}, side, reference[side]),\n      end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])\n    };\n\n    data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);\n  }\n\n  return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction hide(data) {\n  if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n    return data;\n  }\n\n  var refRect = data.offsets.reference;\n  var bound = find(data.instance.modifiers, function (modifier) {\n    return modifier.name === 'preventOverflow';\n  }).boundaries;\n\n  if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) {\n    // Avoid unnecessary DOM access if visibility hasn't changed\n    if (data.hide === true) {\n      return data;\n    }\n\n    data.hide = true;\n    data.attributes['x-out-of-boundaries'] = '';\n  } else {\n    // Avoid unnecessary DOM access if visibility hasn't changed\n    if (data.hide === false) {\n      return data;\n    }\n\n    data.hide = false;\n    data.attributes['x-out-of-boundaries'] = false;\n  }\n\n  return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction inner(data) {\n  var placement = data.placement;\n  var basePlacement = placement.split('-')[0];\n  var _data$offsets = data.offsets,\n      popper = _data$offsets.popper,\n      reference = _data$offsets.reference;\n\n  var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n  var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n  popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n  data.placement = getOppositePlacement(placement);\n  data.offsets.popper = getClientRect(popper);\n\n  return data;\n}\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.<br />\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.<br />\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nvar modifiers = {\n  /**\n   * Modifier used to shift the popper on the start or end of its reference\n   * element.<br />\n   * It will read the variation of the `placement` property.<br />\n   * It can be one either `-end` or `-start`.\n   * @memberof modifiers\n   * @inner\n   */\n  shift: {\n    /** @prop {number} order=100 - Index used to define the order of execution */\n    order: 100,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: shift\n  },\n\n  /**\n   * The `offset` modifier can shift your popper on both its axis.\n   *\n   * It accepts the following units:\n   * - `px` or unit-less, interpreted as pixels\n   * - `%` or `%r`, percentage relative to the length of the reference element\n   * - `%p`, percentage relative to the length of the popper element\n   * - `vw`, CSS viewport width unit\n   * - `vh`, CSS viewport height unit\n   *\n   * For length is intended the main axis relative to the placement of the popper.<br />\n   * This means that if the placement is `top` or `bottom`, the length will be the\n   * `width`. In case of `left` or `right`, it will be the `height`.\n   *\n   * You can provide a single value (as `Number` or `String`), or a pair of values\n   * as `String` divided by a comma or one (or more) white spaces.<br />\n   * The latter is a deprecated method because it leads to confusion and will be\n   * removed in v2.<br />\n   * Additionally, it accepts additions and subtractions between different units.\n   * Note that multiplications and divisions aren't supported.\n   *\n   * Valid examples are:\n   * ```\n   * 10\n   * '10%'\n   * '10, 10'\n   * '10%, 10'\n   * '10 + 10%'\n   * '10 - 5vh + 3%'\n   * '-10px + 5vh, 5px - 6%'\n   * ```\n   * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n   * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n   * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\n   *\n   * @memberof modifiers\n   * @inner\n   */\n  offset: {\n    /** @prop {number} order=200 - Index used to define the order of execution */\n    order: 200,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: offset,\n    /** @prop {Number|String} offset=0\n     * The offset value as described in the modifier description\n     */\n    offset: 0\n  },\n\n  /**\n   * Modifier used to prevent the popper from being positioned outside the boundary.\n   *\n   * A scenario exists where the reference itself is not within the boundaries.<br />\n   * We can say it has \"escaped the boundaries\" — or just \"escaped\".<br />\n   * In this case we need to decide whether the popper should either:\n   *\n   * - detach from the reference and remain \"trapped\" in the boundaries, or\n   * - if it should ignore the boundary and \"escape with its reference\"\n   *\n   * When `escapeWithReference` is set to`true` and reference is completely\n   * outside its boundaries, the popper will overflow (or completely leave)\n   * the boundaries in order to remain attached to the edge of the reference.\n   *\n   * @memberof modifiers\n   * @inner\n   */\n  preventOverflow: {\n    /** @prop {number} order=300 - Index used to define the order of execution */\n    order: 300,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: preventOverflow,\n    /**\n     * @prop {Array} [priority=['left','right','top','bottom']]\n     * Popper will try to prevent overflow following these priorities by default,\n     * then, it could overflow on the left and on top of the `boundariesElement`\n     */\n    priority: ['left', 'right', 'top', 'bottom'],\n    /**\n     * @prop {number} padding=5\n     * Amount of pixel used to define a minimum distance between the boundaries\n     * and the popper. This makes sure the popper always has a little padding\n     * between the edges of its container\n     */\n    padding: 5,\n    /**\n     * @prop {String|HTMLElement} boundariesElement='scrollParent'\n     * Boundaries used by the modifier. Can be `scrollParent`, `window`,\n     * `viewport` or any DOM element.\n     */\n    boundariesElement: 'scrollParent'\n  },\n\n  /**\n   * Modifier used to make sure the reference and its popper stay near each other\n   * without leaving any gap between the two. Especially useful when the arrow is\n   * enabled and you want to ensure that it points to its reference element.\n   * It cares only about the first axis. You can still have poppers with margin\n   * between the popper and its reference element.\n   * @memberof modifiers\n   * @inner\n   */\n  keepTogether: {\n    /** @prop {number} order=400 - Index used to define the order of execution */\n    order: 400,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: keepTogether\n  },\n\n  /**\n   * This modifier is used to move the `arrowElement` of the popper to make\n   * sure it is positioned between the reference element and its popper element.\n   * It will read the outer size of the `arrowElement` node to detect how many\n   * pixels of conjunction are needed.\n   *\n   * It has no effect if no `arrowElement` is provided.\n   * @memberof modifiers\n   * @inner\n   */\n  arrow: {\n    /** @prop {number} order=500 - Index used to define the order of execution */\n    order: 500,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: arrow,\n    /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n    element: '[x-arrow]'\n  },\n\n  /**\n   * Modifier used to flip the popper's placement when it starts to overlap its\n   * reference element.\n   *\n   * Requires the `preventOverflow` modifier before it in order to work.\n   *\n   * **NOTE:** this modifier will interrupt the current update cycle and will\n   * restart it if it detects the need to flip the placement.\n   * @memberof modifiers\n   * @inner\n   */\n  flip: {\n    /** @prop {number} order=600 - Index used to define the order of execution */\n    order: 600,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: flip,\n    /**\n     * @prop {String|Array} behavior='flip'\n     * The behavior used to change the popper's placement. It can be one of\n     * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n     * placements (with optional variations)\n     */\n    behavior: 'flip',\n    /**\n     * @prop {number} padding=5\n     * The popper will flip if it hits the edges of the `boundariesElement`\n     */\n    padding: 5,\n    /**\n     * @prop {String|HTMLElement} boundariesElement='viewport'\n     * The element which will define the boundaries of the popper position.\n     * The popper will never be placed outside of the defined boundaries\n     * (except if `keepTogether` is enabled)\n     */\n    boundariesElement: 'viewport',\n    /**\n     * @prop {Boolean} flipVariations=false\n     * The popper will switch placement variation between `-start` and `-end` when\n     * the reference element overlaps its boundaries.\n     *\n     * The original placement should have a set variation.\n     */\n    flipVariations: false,\n    /**\n     * @prop {Boolean} flipVariationsByContent=false\n     * The popper will switch placement variation between `-start` and `-end` when\n     * the popper element overlaps its reference boundaries.\n     *\n     * The original placement should have a set variation.\n     */\n    flipVariationsByContent: false\n  },\n\n  /**\n   * Modifier used to make the popper flow toward the inner of the reference element.\n   * By default, when this modifier is disabled, the popper will be placed outside\n   * the reference element.\n   * @memberof modifiers\n   * @inner\n   */\n  inner: {\n    /** @prop {number} order=700 - Index used to define the order of execution */\n    order: 700,\n    /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n    enabled: false,\n    /** @prop {ModifierFn} */\n    fn: inner\n  },\n\n  /**\n   * Modifier used to hide the popper when its reference element is outside of the\n   * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n   * be used to hide with a CSS selector the popper when its reference is\n   * out of boundaries.\n   *\n   * Requires the `preventOverflow` modifier before it in order to work.\n   * @memberof modifiers\n   * @inner\n   */\n  hide: {\n    /** @prop {number} order=800 - Index used to define the order of execution */\n    order: 800,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: hide\n  },\n\n  /**\n   * Computes the style that will be applied to the popper element to gets\n   * properly positioned.\n   *\n   * Note that this modifier will not touch the DOM, it just prepares the styles\n   * so that `applyStyle` modifier can apply it. This separation is useful\n   * in case you need to replace `applyStyle` with a custom implementation.\n   *\n   * This modifier has `850` as `order` value to maintain backward compatibility\n   * with previous versions of Popper.js. Expect the modifiers ordering method\n   * to change in future major versions of the library.\n   *\n   * @memberof modifiers\n   * @inner\n   */\n  computeStyle: {\n    /** @prop {number} order=850 - Index used to define the order of execution */\n    order: 850,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: computeStyle,\n    /**\n     * @prop {Boolean} gpuAcceleration=true\n     * If true, it uses the CSS 3D transformation to position the popper.\n     * Otherwise, it will use the `top` and `left` properties\n     */\n    gpuAcceleration: true,\n    /**\n     * @prop {string} [x='bottom']\n     * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n     * Change this if your popper should grow in a direction different from `bottom`\n     */\n    x: 'bottom',\n    /**\n     * @prop {string} [x='left']\n     * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n     * Change this if your popper should grow in a direction different from `right`\n     */\n    y: 'right'\n  },\n\n  /**\n   * Applies the computed styles to the popper element.\n   *\n   * All the DOM manipulations are limited to this modifier. This is useful in case\n   * you want to integrate Popper.js inside a framework or view library and you\n   * want to delegate all the DOM manipulations to it.\n   *\n   * Note that if you disable this modifier, you must make sure the popper element\n   * has its position set to `absolute` before Popper.js can do its work!\n   *\n   * Just disable this modifier and define your own to achieve the desired effect.\n   *\n   * @memberof modifiers\n   * @inner\n   */\n  applyStyle: {\n    /** @prop {number} order=900 - Index used to define the order of execution */\n    order: 900,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: applyStyle,\n    /** @prop {Function} */\n    onLoad: applyStyleOnLoad,\n    /**\n     * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n     * @prop {Boolean} gpuAcceleration=true\n     * If true, it uses the CSS 3D transformation to position the popper.\n     * Otherwise, it will use the `top` and `left` properties\n     */\n    gpuAcceleration: undefined\n  }\n};\n\n/**\n * The `dataObject` is an object containing all the information used by Popper.js.\n * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n\n/**\n * Default options provided to Popper.js constructor.<br />\n * These can be overridden using the `options` argument of Popper.js.<br />\n * To override an option, simply pass an object with the same\n * structure of the `options` object, as the 3rd argument. For example:\n * ```\n * new Popper(ref, pop, {\n *   modifiers: {\n *     preventOverflow: { enabled: false }\n *   }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nvar Defaults = {\n  /**\n   * Popper's placement.\n   * @prop {Popper.placements} placement='bottom'\n   */\n  placement: 'bottom',\n\n  /**\n   * Set this to true if you want popper to position it self in 'fixed' mode\n   * @prop {Boolean} positionFixed=false\n   */\n  positionFixed: false,\n\n  /**\n   * Whether events (resize, scroll) are initially enabled.\n   * @prop {Boolean} eventsEnabled=true\n   */\n  eventsEnabled: true,\n\n  /**\n   * Set to true if you want to automatically remove the popper when\n   * you call the `destroy` method.\n   * @prop {Boolean} removeOnDestroy=false\n   */\n  removeOnDestroy: false,\n\n  /**\n   * Callback called when the popper is created.<br />\n   * By default, it is set to no-op.<br />\n   * Access Popper.js instance with `data.instance`.\n   * @prop {onCreate}\n   */\n  onCreate: function onCreate() {},\n\n  /**\n   * Callback called when the popper is updated. This callback is not called\n   * on the initialization/creation of the popper, but only on subsequent\n   * updates.<br />\n   * By default, it is set to no-op.<br />\n   * Access Popper.js instance with `data.instance`.\n   * @prop {onUpdate}\n   */\n  onUpdate: function onUpdate() {},\n\n  /**\n   * List of modifiers used to modify the offsets before they are applied to the popper.\n   * They provide most of the functionalities of Popper.js.\n   * @prop {modifiers}\n   */\n  modifiers: modifiers\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n\n// Utils\n// Methods\nvar Popper = function () {\n  /**\n   * Creates a new Popper.js instance.\n   * @class Popper\n   * @param {Element|referenceObject} reference - The reference element used to position the popper\n   * @param {Element} popper - The HTML / XML element used as the popper\n   * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n   * @return {Object} instance - The generated Popper.js instance\n   */\n  function Popper(reference, popper) {\n    var _this = this;\n\n    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    classCallCheck(this, Popper);\n\n    this.scheduleUpdate = function () {\n      return requestAnimationFrame(_this.update);\n    };\n\n    // make update() debounced, so that it only runs at most once-per-tick\n    this.update = debounce(this.update.bind(this));\n\n    // with {} we create a new object with the options inside it\n    this.options = _extends({}, Popper.Defaults, options);\n\n    // init state\n    this.state = {\n      isDestroyed: false,\n      isCreated: false,\n      scrollParents: []\n    };\n\n    // get reference and popper elements (allow jQuery wrappers)\n    this.reference = reference && reference.jquery ? reference[0] : reference;\n    this.popper = popper && popper.jquery ? popper[0] : popper;\n\n    // Deep merge modifiers options\n    this.options.modifiers = {};\n    Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) {\n      _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {});\n    });\n\n    // Refactoring modifiers' list (Object => Array)\n    this.modifiers = Object.keys(this.options.modifiers).map(function (name) {\n      return _extends({\n        name: name\n      }, _this.options.modifiers[name]);\n    })\n    // sort the modifiers by order\n    .sort(function (a, b) {\n      return a.order - b.order;\n    });\n\n    // modifiers have the ability to execute arbitrary code when Popper.js get inited\n    // such code is executed in the same order of its modifier\n    // they could add new properties to their options configuration\n    // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n    this.modifiers.forEach(function (modifierOptions) {\n      if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n        modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state);\n      }\n    });\n\n    // fire the first update to position the popper in the right place\n    this.update();\n\n    var eventsEnabled = this.options.eventsEnabled;\n    if (eventsEnabled) {\n      // setup event listeners, they will take care of update the position in specific situations\n      this.enableEventListeners();\n    }\n\n    this.state.eventsEnabled = eventsEnabled;\n  }\n\n  // We can't use class properties because they don't get listed in the\n  // class prototype and break stuff like Sinon stubs\n\n\n  createClass(Popper, [{\n    key: 'update',\n    value: function update$$1() {\n      return update.call(this);\n    }\n  }, {\n    key: 'destroy',\n    value: function destroy$$1() {\n      return destroy.call(this);\n    }\n  }, {\n    key: 'enableEventListeners',\n    value: function enableEventListeners$$1() {\n      return enableEventListeners.call(this);\n    }\n  }, {\n    key: 'disableEventListeners',\n    value: function disableEventListeners$$1() {\n      return disableEventListeners.call(this);\n    }\n\n    /**\n     * Schedules an update. It will run on the next UI update available.\n     * @method scheduleUpdate\n     * @memberof Popper\n     */\n\n\n    /**\n     * Collection of utilities useful when writing custom modifiers.\n     * Starting from version 1.7, this method is available only if you\n     * include `popper-utils.js` before `popper.js`.\n     *\n     * **DEPRECATION**: This way to access PopperUtils is deprecated\n     * and will be removed in v2! Use the PopperUtils module directly instead.\n     * Due to the high instability of the methods contained in Utils, we can't\n     * guarantee them to follow semver. Use them at your own risk!\n     * @static\n     * @private\n     * @type {Object}\n     * @deprecated since version 1.8\n     * @member Utils\n     * @memberof Popper\n     */\n\n  }]);\n  return Popper;\n}();\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.<br />\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10.\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n\n\nPopper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\nPopper.placements = placements;\nPopper.Defaults = Defaults;\n\nexport default Popper;\n//# sourceMappingURL=popper.js.map\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.0): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Popper from 'popper.js'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'dropdown'\nconst VERSION = '4.6.0'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst ESCAPE_KEYCODE = 27 // KeyboardEvent.which value for Escape (Esc) key\nconst SPACE_KEYCODE = 32 // KeyboardEvent.which value for space key\nconst TAB_KEYCODE = 9 // KeyboardEvent.which value for tab key\nconst ARROW_UP_KEYCODE = 38 // KeyboardEvent.which value for up arrow key\nconst ARROW_DOWN_KEYCODE = 40 // KeyboardEvent.which value for down arrow key\nconst RIGHT_MOUSE_BUTTON_WHICH = 3 // MouseEvent.which value for the right button (assuming a right-handed mouse)\nconst REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEYCODE}|${ARROW_DOWN_KEYCODE}|${ESCAPE_KEYCODE}`)\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK = `click${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DISABLED = 'disabled'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_DROPUP = 'dropup'\nconst CLASS_NAME_DROPRIGHT = 'dropright'\nconst CLASS_NAME_DROPLEFT = 'dropleft'\nconst CLASS_NAME_MENURIGHT = 'dropdown-menu-right'\nconst CLASS_NAME_POSITION_STATIC = 'position-static'\n\nconst SELECTOR_DATA_TOGGLE = '[data-toggle=\"dropdown\"]'\nconst SELECTOR_FORM_CHILD = '.dropdown form'\nconst SELECTOR_MENU = '.dropdown-menu'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n\nconst PLACEMENT_TOP = 'top-start'\nconst PLACEMENT_TOPEND = 'top-end'\nconst PLACEMENT_BOTTOM = 'bottom-start'\nconst PLACEMENT_BOTTOMEND = 'bottom-end'\nconst PLACEMENT_RIGHT = 'right-start'\nconst PLACEMENT_LEFT = 'left-start'\n\nconst Default = {\n  offset: 0,\n  flip: true,\n  boundary: 'scrollParent',\n  reference: 'toggle',\n  display: 'dynamic',\n  popperConfig: null\n}\n\nconst DefaultType = {\n  offset: '(number|string|function)',\n  flip: 'boolean',\n  boundary: '(string|element)',\n  reference: '(string|element)',\n  display: 'string',\n  popperConfig: '(null|object)'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Dropdown {\n  constructor(element, config) {\n    this._element = element\n    this._popper = null\n    this._config = this._getConfig(config)\n    this._menu = this._getMenuElement()\n    this._inNavbar = this._detectNavbar()\n\n    this._addEventListeners()\n  }\n\n  // Getters\n\n  static get VERSION() {\n    return VERSION\n  }\n\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  // Public\n\n  toggle() {\n    if (this._element.disabled || $(this._element).hasClass(CLASS_NAME_DISABLED)) {\n      return\n    }\n\n    const isActive = $(this._menu).hasClass(CLASS_NAME_SHOW)\n\n    Dropdown._clearMenus()\n\n    if (isActive) {\n      return\n    }\n\n    this.show(true)\n  }\n\n  show(usePopper = false) {\n    if (this._element.disabled || $(this._element).hasClass(CLASS_NAME_DISABLED) || $(this._menu).hasClass(CLASS_NAME_SHOW)) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n    const showEvent = $.Event(EVENT_SHOW, relatedTarget)\n    const parent = Dropdown._getParentFromElement(this._element)\n\n    $(parent).trigger(showEvent)\n\n    if (showEvent.isDefaultPrevented()) {\n      return\n    }\n\n    // Totally disable Popper for Dropdowns in Navbar\n    if (!this._inNavbar && usePopper) {\n      /**\n       * Check for Popper dependency\n       * Popper - https://popper.js.org\n       */\n      if (typeof Popper === 'undefined') {\n        throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)')\n      }\n\n      let referenceElement = this._element\n\n      if (this._config.reference === 'parent') {\n        referenceElement = parent\n      } else if (Util.isElement(this._config.reference)) {\n        referenceElement = this._config.reference\n\n        // Check if it's jQuery element\n        if (typeof this._config.reference.jquery !== 'undefined') {\n          referenceElement = this._config.reference[0]\n        }\n      }\n\n      // If boundary is not `scrollParent`, then set position to `static`\n      // to allow the menu to \"escape\" the scroll parent's boundaries\n      // https://github.com/twbs/bootstrap/issues/24251\n      if (this._config.boundary !== 'scrollParent') {\n        $(parent).addClass(CLASS_NAME_POSITION_STATIC)\n      }\n\n      this._popper = new Popper(referenceElement, this._menu, this._getPopperConfig())\n    }\n\n    // If this is a touch-enabled device we add extra\n    // empty mouseover listeners to the body's immediate children;\n    // only needed because of broken event delegation on iOS\n    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n    if ('ontouchstart' in document.documentElement &&\n        $(parent).closest(SELECTOR_NAVBAR_NAV).length === 0) {\n      $(document.body).children().on('mouseover', null, $.noop)\n    }\n\n    this._element.focus()\n    this._element.setAttribute('aria-expanded', true)\n\n    $(this._menu).toggleClass(CLASS_NAME_SHOW)\n    $(parent)\n      .toggleClass(CLASS_NAME_SHOW)\n      .trigger($.Event(EVENT_SHOWN, relatedTarget))\n  }\n\n  hide() {\n    if (this._element.disabled || $(this._element).hasClass(CLASS_NAME_DISABLED) || !$(this._menu).hasClass(CLASS_NAME_SHOW)) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n    const hideEvent = $.Event(EVENT_HIDE, relatedTarget)\n    const parent = Dropdown._getParentFromElement(this._element)\n\n    $(parent).trigger(hideEvent)\n\n    if (hideEvent.isDefaultPrevented()) {\n      return\n    }\n\n    if (this._popper) {\n      this._popper.destroy()\n    }\n\n    $(this._menu).toggleClass(CLASS_NAME_SHOW)\n    $(parent)\n      .toggleClass(CLASS_NAME_SHOW)\n      .trigger($.Event(EVENT_HIDDEN, relatedTarget))\n  }\n\n  dispose() {\n    $.removeData(this._element, DATA_KEY)\n    $(this._element).off(EVENT_KEY)\n    this._element = null\n    this._menu = null\n    if (this._popper !== null) {\n      this._popper.destroy()\n      this._popper = null\n    }\n  }\n\n  update() {\n    this._inNavbar = this._detectNavbar()\n    if (this._popper !== null) {\n      this._popper.scheduleUpdate()\n    }\n  }\n\n  // Private\n\n  _addEventListeners() {\n    $(this._element).on(EVENT_CLICK, event => {\n      event.preventDefault()\n      event.stopPropagation()\n      this.toggle()\n    })\n  }\n\n  _getConfig(config) {\n    config = {\n      ...this.constructor.Default,\n      ...$(this._element).data(),\n      ...config\n    }\n\n    Util.typeCheckConfig(\n      NAME,\n      config,\n      this.constructor.DefaultType\n    )\n\n    return config\n  }\n\n  _getMenuElement() {\n    if (!this._menu) {\n      const parent = Dropdown._getParentFromElement(this._element)\n\n      if (parent) {\n        this._menu = parent.querySelector(SELECTOR_MENU)\n      }\n    }\n\n    return this._menu\n  }\n\n  _getPlacement() {\n    const $parentDropdown = $(this._element.parentNode)\n    let placement = PLACEMENT_BOTTOM\n\n    // Handle dropup\n    if ($parentDropdown.hasClass(CLASS_NAME_DROPUP)) {\n      placement = $(this._menu).hasClass(CLASS_NAME_MENURIGHT) ?\n        PLACEMENT_TOPEND :\n        PLACEMENT_TOP\n    } else if ($parentDropdown.hasClass(CLASS_NAME_DROPRIGHT)) {\n      placement = PLACEMENT_RIGHT\n    } else if ($parentDropdown.hasClass(CLASS_NAME_DROPLEFT)) {\n      placement = PLACEMENT_LEFT\n    } else if ($(this._menu).hasClass(CLASS_NAME_MENURIGHT)) {\n      placement = PLACEMENT_BOTTOMEND\n    }\n\n    return placement\n  }\n\n  _detectNavbar() {\n    return $(this._element).closest('.navbar').length > 0\n  }\n\n  _getOffset() {\n    const offset = {}\n\n    if (typeof this._config.offset === 'function') {\n      offset.fn = data => {\n        data.offsets = {\n          ...data.offsets,\n          ...(this._config.offset(data.offsets, this._element) || {})\n        }\n\n        return data\n      }\n    } else {\n      offset.offset = this._config.offset\n    }\n\n    return offset\n  }\n\n  _getPopperConfig() {\n    const popperConfig = {\n      placement: this._getPlacement(),\n      modifiers: {\n        offset: this._getOffset(),\n        flip: {\n          enabled: this._config.flip\n        },\n        preventOverflow: {\n          boundariesElement: this._config.boundary\n        }\n      }\n    }\n\n    // Disable Popper if we have a static display\n    if (this._config.display === 'static') {\n      popperConfig.modifiers.applyStyle = {\n        enabled: false\n      }\n    }\n\n    return {\n      ...popperConfig,\n      ...this._config.popperConfig\n    }\n  }\n\n  // Static\n\n  static _jQueryInterface(config) {\n    return this.each(function () {\n      let data = $(this).data(DATA_KEY)\n      const _config = typeof config === 'object' ? config : null\n\n      if (!data) {\n        data = new Dropdown(this, _config)\n        $(this).data(DATA_KEY, data)\n      }\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config]()\n      }\n    })\n  }\n\n  static _clearMenus(event) {\n    if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH ||\n      event.type === 'keyup' && event.which !== TAB_KEYCODE)) {\n      return\n    }\n\n    const toggles = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE))\n\n    for (let i = 0, len = toggles.length; i < len; i++) {\n      const parent = Dropdown._getParentFromElement(toggles[i])\n      const context = $(toggles[i]).data(DATA_KEY)\n      const relatedTarget = {\n        relatedTarget: toggles[i]\n      }\n\n      if (event && event.type === 'click') {\n        relatedTarget.clickEvent = event\n      }\n\n      if (!context) {\n        continue\n      }\n\n      const dropdownMenu = context._menu\n      if (!$(parent).hasClass(CLASS_NAME_SHOW)) {\n        continue\n      }\n\n      if (event && (event.type === 'click' &&\n          /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) &&\n          $.contains(parent, event.target)) {\n        continue\n      }\n\n      const hideEvent = $.Event(EVENT_HIDE, relatedTarget)\n      $(parent).trigger(hideEvent)\n      if (hideEvent.isDefaultPrevented()) {\n        continue\n      }\n\n      // If this is a touch-enabled device we remove the extra\n      // empty mouseover listeners we added for iOS support\n      if ('ontouchstart' in document.documentElement) {\n        $(document.body).children().off('mouseover', null, $.noop)\n      }\n\n      toggles[i].setAttribute('aria-expanded', 'false')\n\n      if (context._popper) {\n        context._popper.destroy()\n      }\n\n      $(dropdownMenu).removeClass(CLASS_NAME_SHOW)\n      $(parent)\n        .removeClass(CLASS_NAME_SHOW)\n        .trigger($.Event(EVENT_HIDDEN, relatedTarget))\n    }\n  }\n\n  static _getParentFromElement(element) {\n    let parent\n    const selector = Util.getSelectorFromElement(element)\n\n    if (selector) {\n      parent = document.querySelector(selector)\n    }\n\n    return parent || element.parentNode\n  }\n\n  // eslint-disable-next-line complexity\n  static _dataApiKeydownHandler(event) {\n    // If not input/textarea:\n    //  - And not a key in REGEXP_KEYDOWN => not a dropdown command\n    // If input/textarea:\n    //  - If space key => not a dropdown command\n    //  - If key is other than escape\n    //    - If key is not up or down => not a dropdown command\n    //    - If trigger inside the menu => not a dropdown command\n    if (/input|textarea/i.test(event.target.tagName) ?\n      event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE &&\n      (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE ||\n        $(event.target).closest(SELECTOR_MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {\n      return\n    }\n\n    if (this.disabled || $(this).hasClass(CLASS_NAME_DISABLED)) {\n      return\n    }\n\n    const parent = Dropdown._getParentFromElement(this)\n    const isActive = $(parent).hasClass(CLASS_NAME_SHOW)\n\n    if (!isActive && event.which === ESCAPE_KEYCODE) {\n      return\n    }\n\n    event.preventDefault()\n    event.stopPropagation()\n\n    if (!isActive || (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {\n      if (event.which === ESCAPE_KEYCODE) {\n        $(parent.querySelector(SELECTOR_DATA_TOGGLE)).trigger('focus')\n      }\n\n      $(this).trigger('click')\n      return\n    }\n\n    const items = [].slice.call(parent.querySelectorAll(SELECTOR_VISIBLE_ITEMS))\n      .filter(item => $(item).is(':visible'))\n\n    if (items.length === 0) {\n      return\n    }\n\n    let index = items.indexOf(event.target)\n\n    if (event.which === ARROW_UP_KEYCODE && index > 0) { // Up\n      index--\n    }\n\n    if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) { // Down\n      index++\n    }\n\n    if (index < 0) {\n      index = 0\n    }\n\n    items[index].focus()\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document)\n  .on(EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown._dataApiKeydownHandler)\n  .on(EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown._dataApiKeydownHandler)\n  .on(`${EVENT_CLICK_DATA_API} ${EVENT_KEYUP_DATA_API}`, Dropdown._clearMenus)\n  .on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n    event.preventDefault()\n    event.stopPropagation()\n    Dropdown._jQueryInterface.call($(this), 'toggle')\n  })\n  .on(EVENT_CLICK_DATA_API, SELECTOR_FORM_CHILD, e => {\n    e.stopPropagation()\n  })\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Dropdown._jQueryInterface\n$.fn[NAME].Constructor = Dropdown\n$.fn[NAME].noConflict = () => {\n  $.fn[NAME] = JQUERY_NO_CONFLICT\n  return Dropdown._jQueryInterface\n}\n\nexport default Dropdown\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.0): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'modal'\nconst VERSION = '4.6.0'\nconst DATA_KEY = 'bs.modal'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst ESCAPE_KEYCODE = 27 // KeyboardEvent.which value for Escape (Esc) key\n\nconst Default = {\n  backdrop: true,\n  keyboard: true,\n  focus: true,\n  show: true\n}\n\nconst DefaultType = {\n  backdrop: '(boolean|string)',\n  keyboard: 'boolean',\n  focus: 'boolean',\n  show: 'boolean'\n}\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEUP_DISMISS = `mouseup.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SCROLLABLE = 'modal-dialog-scrollable'\nconst CLASS_NAME_SCROLLBAR_MEASURER = 'modal-scrollbar-measure'\nconst CLASS_NAME_BACKDROP = 'modal-backdrop'\nconst CLASS_NAME_OPEN = 'modal-open'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_STATIC = 'modal-static'\n\nconst SELECTOR_DIALOG = '.modal-dialog'\nconst SELECTOR_MODAL_BODY = '.modal-body'\nconst SELECTOR_DATA_TOGGLE = '[data-toggle=\"modal\"]'\nconst SELECTOR_DATA_DISMISS = '[data-dismiss=\"modal\"]'\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Modal {\n  constructor(element, config) {\n    this._config = this._getConfig(config)\n    this._element = element\n    this._dialog = element.querySelector(SELECTOR_DIALOG)\n    this._backdrop = null\n    this._isShown = false\n    this._isBodyOverflowing = false\n    this._ignoreBackdropClick = false\n    this._isTransitioning = false\n    this._scrollbarWidth = 0\n  }\n\n  // Getters\n\n  static get VERSION() {\n    return VERSION\n  }\n\n  static get Default() {\n    return Default\n  }\n\n  // Public\n\n  toggle(relatedTarget) {\n    return this._isShown ? this.hide() : this.show(relatedTarget)\n  }\n\n  show(relatedTarget) {\n    if (this._isShown || this._isTransitioning) {\n      return\n    }\n\n    if ($(this._element).hasClass(CLASS_NAME_FADE)) {\n      this._isTransitioning = true\n    }\n\n    const showEvent = $.Event(EVENT_SHOW, {\n      relatedTarget\n    })\n\n    $(this._element).trigger(showEvent)\n\n    if (this._isShown || showEvent.isDefaultPrevented()) {\n      return\n    }\n\n    this._isShown = true\n\n    this._checkScrollbar()\n    this._setScrollbar()\n\n    this._adjustDialog()\n\n    this._setEscapeEvent()\n    this._setResizeEvent()\n\n    $(this._element).on(\n      EVENT_CLICK_DISMISS,\n      SELECTOR_DATA_DISMISS,\n      event => this.hide(event)\n    )\n\n    $(this._dialog).on(EVENT_MOUSEDOWN_DISMISS, () => {\n      $(this._element).one(EVENT_MOUSEUP_DISMISS, event => {\n        if ($(event.target).is(this._element)) {\n          this._ignoreBackdropClick = true\n        }\n      })\n    })\n\n    this._showBackdrop(() => this._showElement(relatedTarget))\n  }\n\n  hide(event) {\n    if (event) {\n      event.preventDefault()\n    }\n\n    if (!this._isShown || this._isTransitioning) {\n      return\n    }\n\n    const hideEvent = $.Event(EVENT_HIDE)\n\n    $(this._element).trigger(hideEvent)\n\n    if (!this._isShown || hideEvent.isDefaultPrevented()) {\n      return\n    }\n\n    this._isShown = false\n    const transition = $(this._element).hasClass(CLASS_NAME_FADE)\n\n    if (transition) {\n      this._isTransitioning = true\n    }\n\n    this._setEscapeEvent()\n    this._setResizeEvent()\n\n    $(document).off(EVENT_FOCUSIN)\n\n    $(this._element).removeClass(CLASS_NAME_SHOW)\n\n    $(this._element).off(EVENT_CLICK_DISMISS)\n    $(this._dialog).off(EVENT_MOUSEDOWN_DISMISS)\n\n    if (transition) {\n      const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n      $(this._element)\n        .one(Util.TRANSITION_END, event => this._hideModal(event))\n        .emulateTransitionEnd(transitionDuration)\n    } else {\n      this._hideModal()\n    }\n  }\n\n  dispose() {\n    [window, this._element, this._dialog]\n      .forEach(htmlElement => $(htmlElement).off(EVENT_KEY))\n\n    /**\n     * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API`\n     * Do not move `document` in `htmlElements` array\n     * It will remove `EVENT_CLICK_DATA_API` event that should remain\n     */\n    $(document).off(EVENT_FOCUSIN)\n\n    $.removeData(this._element, DATA_KEY)\n\n    this._config = null\n    this._element = null\n    this._dialog = null\n    this._backdrop = null\n    this._isShown = null\n    this._isBodyOverflowing = null\n    this._ignoreBackdropClick = null\n    this._isTransitioning = null\n    this._scrollbarWidth = null\n  }\n\n  handleUpdate() {\n    this._adjustDialog()\n  }\n\n  // Private\n\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...config\n    }\n    Util.typeCheckConfig(NAME, config, DefaultType)\n    return config\n  }\n\n  _triggerBackdropTransition() {\n    const hideEventPrevented = $.Event(EVENT_HIDE_PREVENTED)\n\n    $(this._element).trigger(hideEventPrevented)\n    if (hideEventPrevented.isDefaultPrevented()) {\n      return\n    }\n\n    const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n\n    if (!isModalOverflowing) {\n      this._element.style.overflowY = 'hidden'\n    }\n\n    this._element.classList.add(CLASS_NAME_STATIC)\n\n    const modalTransitionDuration = Util.getTransitionDurationFromElement(this._dialog)\n    $(this._element).off(Util.TRANSITION_END)\n\n    $(this._element).one(Util.TRANSITION_END, () => {\n      this._element.classList.remove(CLASS_NAME_STATIC)\n      if (!isModalOverflowing) {\n        $(this._element).one(Util.TRANSITION_END, () => {\n          this._element.style.overflowY = ''\n        })\n          .emulateTransitionEnd(this._element, modalTransitionDuration)\n      }\n    })\n      .emulateTransitionEnd(modalTransitionDuration)\n    this._element.focus()\n  }\n\n  _showElement(relatedTarget) {\n    const transition = $(this._element).hasClass(CLASS_NAME_FADE)\n    const modalBody = this._dialog ? this._dialog.querySelector(SELECTOR_MODAL_BODY) : null\n\n    if (!this._element.parentNode ||\n        this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n      // Don't move modal's DOM position\n      document.body.appendChild(this._element)\n    }\n\n    this._element.style.display = 'block'\n    this._element.removeAttribute('aria-hidden')\n    this._element.setAttribute('aria-modal', true)\n    this._element.setAttribute('role', 'dialog')\n\n    if ($(this._dialog).hasClass(CLASS_NAME_SCROLLABLE) && modalBody) {\n      modalBody.scrollTop = 0\n    } else {\n      this._element.scrollTop = 0\n    }\n\n    if (transition) {\n      Util.reflow(this._element)\n    }\n\n    $(this._element).addClass(CLASS_NAME_SHOW)\n\n    if (this._config.focus) {\n      this._enforceFocus()\n    }\n\n    const shownEvent = $.Event(EVENT_SHOWN, {\n      relatedTarget\n    })\n\n    const transitionComplete = () => {\n      if (this._config.focus) {\n        this._element.focus()\n      }\n\n      this._isTransitioning = false\n      $(this._element).trigger(shownEvent)\n    }\n\n    if (transition) {\n      const transitionDuration = Util.getTransitionDurationFromElement(this._dialog)\n\n      $(this._dialog)\n        .one(Util.TRANSITION_END, transitionComplete)\n        .emulateTransitionEnd(transitionDuration)\n    } else {\n      transitionComplete()\n    }\n  }\n\n  _enforceFocus() {\n    $(document)\n      .off(EVENT_FOCUSIN) // Guard against infinite focus loop\n      .on(EVENT_FOCUSIN, event => {\n        if (document !== event.target &&\n            this._element !== event.target &&\n            $(this._element).has(event.target).length === 0) {\n          this._element.focus()\n        }\n      })\n  }\n\n  _setEscapeEvent() {\n    if (this._isShown) {\n      $(this._element).on(EVENT_KEYDOWN_DISMISS, event => {\n        if (this._config.keyboard && event.which === ESCAPE_KEYCODE) {\n          event.preventDefault()\n          this.hide()\n        } else if (!this._config.keyboard && event.which === ESCAPE_KEYCODE) {\n          this._triggerBackdropTransition()\n        }\n      })\n    } else if (!this._isShown) {\n      $(this._element).off(EVENT_KEYDOWN_DISMISS)\n    }\n  }\n\n  _setResizeEvent() {\n    if (this._isShown) {\n      $(window).on(EVENT_RESIZE, event => this.handleUpdate(event))\n    } else {\n      $(window).off(EVENT_RESIZE)\n    }\n  }\n\n  _hideModal() {\n    this._element.style.display = 'none'\n    this._element.setAttribute('aria-hidden', true)\n    this._element.removeAttribute('aria-modal')\n    this._element.removeAttribute('role')\n    this._isTransitioning = false\n    this._showBackdrop(() => {\n      $(document.body).removeClass(CLASS_NAME_OPEN)\n      this._resetAdjustments()\n      this._resetScrollbar()\n      $(this._element).trigger(EVENT_HIDDEN)\n    })\n  }\n\n  _removeBackdrop() {\n    if (this._backdrop) {\n      $(this._backdrop).remove()\n      this._backdrop = null\n    }\n  }\n\n  _showBackdrop(callback) {\n    const animate = $(this._element).hasClass(CLASS_NAME_FADE) ?\n      CLASS_NAME_FADE : ''\n\n    if (this._isShown && this._config.backdrop) {\n      this._backdrop = document.createElement('div')\n      this._backdrop.className = CLASS_NAME_BACKDROP\n\n      if (animate) {\n        this._backdrop.classList.add(animate)\n      }\n\n      $(this._backdrop).appendTo(document.body)\n\n      $(this._element).on(EVENT_CLICK_DISMISS, event => {\n        if (this._ignoreBackdropClick) {\n          this._ignoreBackdropClick = false\n          return\n        }\n\n        if (event.target !== event.currentTarget) {\n          return\n        }\n\n        if (this._config.backdrop === 'static') {\n          this._triggerBackdropTransition()\n        } else {\n          this.hide()\n        }\n      })\n\n      if (animate) {\n        Util.reflow(this._backdrop)\n      }\n\n      $(this._backdrop).addClass(CLASS_NAME_SHOW)\n\n      if (!callback) {\n        return\n      }\n\n      if (!animate) {\n        callback()\n        return\n      }\n\n      const backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop)\n\n      $(this._backdrop)\n        .one(Util.TRANSITION_END, callback)\n        .emulateTransitionEnd(backdropTransitionDuration)\n    } else if (!this._isShown && this._backdrop) {\n      $(this._backdrop).removeClass(CLASS_NAME_SHOW)\n\n      const callbackRemove = () => {\n        this._removeBackdrop()\n        if (callback) {\n          callback()\n        }\n      }\n\n      if ($(this._element).hasClass(CLASS_NAME_FADE)) {\n        const backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop)\n\n        $(this._backdrop)\n          .one(Util.TRANSITION_END, callbackRemove)\n          .emulateTransitionEnd(backdropTransitionDuration)\n      } else {\n        callbackRemove()\n      }\n    } else if (callback) {\n      callback()\n    }\n  }\n\n  // ----------------------------------------------------------------------\n  // the following methods are used to handle overflowing modals\n  // todo (fat): these should probably be refactored out of modal.js\n  // ----------------------------------------------------------------------\n\n  _adjustDialog() {\n    const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n\n    if (!this._isBodyOverflowing && isModalOverflowing) {\n      this._element.style.paddingLeft = `${this._scrollbarWidth}px`\n    }\n\n    if (this._isBodyOverflowing && !isModalOverflowing) {\n      this._element.style.paddingRight = `${this._scrollbarWidth}px`\n    }\n  }\n\n  _resetAdjustments() {\n    this._element.style.paddingLeft = ''\n    this._element.style.paddingRight = ''\n  }\n\n  _checkScrollbar() {\n    const rect = document.body.getBoundingClientRect()\n    this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth\n    this._scrollbarWidth = this._getScrollbarWidth()\n  }\n\n  _setScrollbar() {\n    if (this._isBodyOverflowing) {\n      // Note: DOMNode.style.paddingRight returns the actual value or '' if not set\n      //   while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set\n      const fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT))\n      const stickyContent = [].slice.call(document.querySelectorAll(SELECTOR_STICKY_CONTENT))\n\n      // Adjust fixed content padding\n      $(fixedContent).each((index, element) => {\n        const actualPadding = element.style.paddingRight\n        const calculatedPadding = $(element).css('padding-right')\n        $(element)\n          .data('padding-right', actualPadding)\n          .css('padding-right', `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`)\n      })\n\n      // Adjust sticky content margin\n      $(stickyContent).each((index, element) => {\n        const actualMargin = element.style.marginRight\n        const calculatedMargin = $(element).css('margin-right')\n        $(element)\n          .data('margin-right', actualMargin)\n          .css('margin-right', `${parseFloat(calculatedMargin) - this._scrollbarWidth}px`)\n      })\n\n      // Adjust body padding\n      const actualPadding = document.body.style.paddingRight\n      const calculatedPadding = $(document.body).css('padding-right')\n      $(document.body)\n        .data('padding-right', actualPadding)\n        .css('padding-right', `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`)\n    }\n\n    $(document.body).addClass(CLASS_NAME_OPEN)\n  }\n\n  _resetScrollbar() {\n    // Restore fixed content padding\n    const fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT))\n    $(fixedContent).each((index, element) => {\n      const padding = $(element).data('padding-right')\n      $(element).removeData('padding-right')\n      element.style.paddingRight = padding ? padding : ''\n    })\n\n    // Restore sticky content\n    const elements = [].slice.call(document.querySelectorAll(`${SELECTOR_STICKY_CONTENT}`))\n    $(elements).each((index, element) => {\n      const margin = $(element).data('margin-right')\n      if (typeof margin !== 'undefined') {\n        $(element).css('margin-right', margin).removeData('margin-right')\n      }\n    })\n\n    // Restore body padding\n    const padding = $(document.body).data('padding-right')\n    $(document.body).removeData('padding-right')\n    document.body.style.paddingRight = padding ? padding : ''\n  }\n\n  _getScrollbarWidth() { // thx d.walsh\n    const scrollDiv = document.createElement('div')\n    scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER\n    document.body.appendChild(scrollDiv)\n    const scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth\n    document.body.removeChild(scrollDiv)\n    return scrollbarWidth\n  }\n\n  // Static\n\n  static _jQueryInterface(config, relatedTarget) {\n    return this.each(function () {\n      let data = $(this).data(DATA_KEY)\n      const _config = {\n        ...Default,\n        ...$(this).data(),\n        ...(typeof config === 'object' && config ? config : {})\n      }\n\n      if (!data) {\n        data = new Modal(this, _config)\n        $(this).data(DATA_KEY, data)\n      }\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config](relatedTarget)\n      } else if (_config.show) {\n        data.show(relatedTarget)\n      }\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  let target\n  const selector = Util.getSelectorFromElement(this)\n\n  if (selector) {\n    target = document.querySelector(selector)\n  }\n\n  const config = $(target).data(DATA_KEY) ?\n    'toggle' : {\n      ...$(target).data(),\n      ...$(this).data()\n    }\n\n  if (this.tagName === 'A' || this.tagName === 'AREA') {\n    event.preventDefault()\n  }\n\n  const $target = $(target).one(EVENT_SHOW, showEvent => {\n    if (showEvent.isDefaultPrevented()) {\n      // Only register focus restorer if modal will actually get shown\n      return\n    }\n\n    $target.one(EVENT_HIDDEN, () => {\n      if ($(this).is(':visible')) {\n        this.focus()\n      }\n    })\n  })\n\n  Modal._jQueryInterface.call($(target), config, this)\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Modal._jQueryInterface\n$.fn[NAME].Constructor = Modal\n$.fn[NAME].noConflict = () => {\n  $.fn[NAME] = JQUERY_NO_CONFLICT\n  return Modal._jQueryInterface\n}\n\nexport default Modal\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.0): tools/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst uriAttrs = [\n  'background',\n  'cite',\n  'href',\n  'itemtype',\n  'longdesc',\n  'poster',\n  'src',\n  'xlink:href'\n]\n\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\nexport const DefaultWhitelist = {\n  // Global attributes allowed on any supplied element below.\n  '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n  a: ['target', 'href', 'title', 'rel'],\n  area: [],\n  b: [],\n  br: [],\n  col: [],\n  code: [],\n  div: [],\n  em: [],\n  hr: [],\n  h1: [],\n  h2: [],\n  h3: [],\n  h4: [],\n  h5: [],\n  h6: [],\n  i: [],\n  img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n  li: [],\n  ol: [],\n  p: [],\n  pre: [],\n  s: [],\n  small: [],\n  span: [],\n  sub: [],\n  sup: [],\n  strong: [],\n  u: [],\n  ul: []\n}\n\n/**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/gi\n\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i\n\nfunction allowedAttribute(attr, allowedAttributeList) {\n  const attrName = attr.nodeName.toLowerCase()\n\n  if (allowedAttributeList.indexOf(attrName) !== -1) {\n    if (uriAttrs.indexOf(attrName) !== -1) {\n      return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN))\n    }\n\n    return true\n  }\n\n  const regExp = allowedAttributeList.filter(attrRegex => attrRegex instanceof RegExp)\n\n  // Check if a regular expression validates the attribute.\n  for (let i = 0, len = regExp.length; i < len; i++) {\n    if (attrName.match(regExp[i])) {\n      return true\n    }\n  }\n\n  return false\n}\n\nexport function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {\n  if (unsafeHtml.length === 0) {\n    return unsafeHtml\n  }\n\n  if (sanitizeFn && typeof sanitizeFn === 'function') {\n    return sanitizeFn(unsafeHtml)\n  }\n\n  const domParser = new window.DOMParser()\n  const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n  const whitelistKeys = Object.keys(whiteList)\n  const elements = [].slice.call(createdDocument.body.querySelectorAll('*'))\n\n  for (let i = 0, len = elements.length; i < len; i++) {\n    const el = elements[i]\n    const elName = el.nodeName.toLowerCase()\n\n    if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) {\n      el.parentNode.removeChild(el)\n\n      continue\n    }\n\n    const attributeList = [].slice.call(el.attributes)\n    const whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || [])\n\n    attributeList.forEach(attr => {\n      if (!allowedAttribute(attr, whitelistedAttributes)) {\n        el.removeAttribute(attr.nodeName)\n      }\n    })\n  }\n\n  return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.0): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  DefaultWhitelist,\n  sanitizeHtml\n} from './tools/sanitizer'\nimport $ from 'jquery'\nimport Popper from 'popper.js'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tooltip'\nconst VERSION = '4.6.0'\nconst DATA_KEY = 'bs.tooltip'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst CLASS_PREFIX = 'bs-tooltip'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\nconst DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn']\n\nconst DefaultType = {\n  animation: 'boolean',\n  template: 'string',\n  title: '(string|element|function)',\n  trigger: 'string',\n  delay: '(number|object)',\n  html: 'boolean',\n  selector: '(string|boolean)',\n  placement: '(string|function)',\n  offset: '(number|string|function)',\n  container: '(string|element|boolean)',\n  fallbackPlacement: '(string|array)',\n  boundary: '(string|element)',\n  customClass: '(string|function)',\n  sanitize: 'boolean',\n  sanitizeFn: '(null|function)',\n  whiteList: 'object',\n  popperConfig: '(null|object)'\n}\n\nconst AttachmentMap = {\n  AUTO: 'auto',\n  TOP: 'top',\n  RIGHT: 'right',\n  BOTTOM: 'bottom',\n  LEFT: 'left'\n}\n\nconst Default = {\n  animation: true,\n  template: '<div class=\"tooltip\" role=\"tooltip\">' +\n                    '<div class=\"arrow\"></div>' +\n                    '<div class=\"tooltip-inner\"></div></div>',\n  trigger: 'hover focus',\n  title: '',\n  delay: 0,\n  html: false,\n  selector: false,\n  placement: 'top',\n  offset: 0,\n  container: false,\n  fallbackPlacement: 'flip',\n  boundary: 'scrollParent',\n  customClass: '',\n  sanitize: true,\n  sanitizeFn: null,\n  whiteList: DefaultWhitelist,\n  popperConfig: null\n}\n\nconst HOVER_STATE_SHOW = 'show'\nconst HOVER_STATE_OUT = 'out'\n\nconst Event = {\n  HIDE: `hide${EVENT_KEY}`,\n  HIDDEN: `hidden${EVENT_KEY}`,\n  SHOW: `show${EVENT_KEY}`,\n  SHOWN: `shown${EVENT_KEY}`,\n  INSERTED: `inserted${EVENT_KEY}`,\n  CLICK: `click${EVENT_KEY}`,\n  FOCUSIN: `focusin${EVENT_KEY}`,\n  FOCUSOUT: `focusout${EVENT_KEY}`,\n  MOUSEENTER: `mouseenter${EVENT_KEY}`,\n  MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\nconst SELECTOR_ARROW = '.arrow'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tooltip {\n  constructor(element, config) {\n    if (typeof Popper === 'undefined') {\n      throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)')\n    }\n\n    // private\n    this._isEnabled = true\n    this._timeout = 0\n    this._hoverState = ''\n    this._activeTrigger = {}\n    this._popper = null\n\n    // Protected\n    this.element = element\n    this.config = this._getConfig(config)\n    this.tip = null\n\n    this._setListeners()\n  }\n\n  // Getters\n\n  static get VERSION() {\n    return VERSION\n  }\n\n  static get Default() {\n    return Default\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  static get DATA_KEY() {\n    return DATA_KEY\n  }\n\n  static get Event() {\n    return Event\n  }\n\n  static get EVENT_KEY() {\n    return EVENT_KEY\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  // Public\n\n  enable() {\n    this._isEnabled = true\n  }\n\n  disable() {\n    this._isEnabled = false\n  }\n\n  toggleEnabled() {\n    this._isEnabled = !this._isEnabled\n  }\n\n  toggle(event) {\n    if (!this._isEnabled) {\n      return\n    }\n\n    if (event) {\n      const dataKey = this.constructor.DATA_KEY\n      let context = $(event.currentTarget).data(dataKey)\n\n      if (!context) {\n        context = new this.constructor(\n          event.currentTarget,\n          this._getDelegateConfig()\n        )\n        $(event.currentTarget).data(dataKey, context)\n      }\n\n      context._activeTrigger.click = !context._activeTrigger.click\n\n      if (context._isWithActiveTrigger()) {\n        context._enter(null, context)\n      } else {\n        context._leave(null, context)\n      }\n    } else {\n      if ($(this.getTipElement()).hasClass(CLASS_NAME_SHOW)) {\n        this._leave(null, this)\n        return\n      }\n\n      this._enter(null, this)\n    }\n  }\n\n  dispose() {\n    clearTimeout(this._timeout)\n\n    $.removeData(this.element, this.constructor.DATA_KEY)\n\n    $(this.element).off(this.constructor.EVENT_KEY)\n    $(this.element).closest('.modal').off('hide.bs.modal', this._hideModalHandler)\n\n    if (this.tip) {\n      $(this.tip).remove()\n    }\n\n    this._isEnabled = null\n    this._timeout = null\n    this._hoverState = null\n    this._activeTrigger = null\n    if (this._popper) {\n      this._popper.destroy()\n    }\n\n    this._popper = null\n    this.element = null\n    this.config = null\n    this.tip = null\n  }\n\n  show() {\n    if ($(this.element).css('display') === 'none') {\n      throw new Error('Please use show on visible elements')\n    }\n\n    const showEvent = $.Event(this.constructor.Event.SHOW)\n    if (this.isWithContent() && this._isEnabled) {\n      $(this.element).trigger(showEvent)\n\n      const shadowRoot = Util.findShadowRoot(this.element)\n      const isInTheDom = $.contains(\n        shadowRoot !== null ? shadowRoot : this.element.ownerDocument.documentElement,\n        this.element\n      )\n\n      if (showEvent.isDefaultPrevented() || !isInTheDom) {\n        return\n      }\n\n      const tip = this.getTipElement()\n      const tipId = Util.getUID(this.constructor.NAME)\n\n      tip.setAttribute('id', tipId)\n      this.element.setAttribute('aria-describedby', tipId)\n\n      this.setContent()\n\n      if (this.config.animation) {\n        $(tip).addClass(CLASS_NAME_FADE)\n      }\n\n      const placement = typeof this.config.placement === 'function' ?\n        this.config.placement.call(this, tip, this.element) :\n        this.config.placement\n\n      const attachment = this._getAttachment(placement)\n      this.addAttachmentClass(attachment)\n\n      const container = this._getContainer()\n      $(tip).data(this.constructor.DATA_KEY, this)\n\n      if (!$.contains(this.element.ownerDocument.documentElement, this.tip)) {\n        $(tip).appendTo(container)\n      }\n\n      $(this.element).trigger(this.constructor.Event.INSERTED)\n\n      this._popper = new Popper(this.element, tip, this._getPopperConfig(attachment))\n\n      $(tip).addClass(CLASS_NAME_SHOW)\n      $(tip).addClass(this.config.customClass)\n\n      // If this is a touch-enabled device we add extra\n      // empty mouseover listeners to the body's immediate children;\n      // only needed because of broken event delegation on iOS\n      // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n      if ('ontouchstart' in document.documentElement) {\n        $(document.body).children().on('mouseover', null, $.noop)\n      }\n\n      const complete = () => {\n        if (this.config.animation) {\n          this._fixTransition()\n        }\n\n        const prevHoverState = this._hoverState\n        this._hoverState = null\n\n        $(this.element).trigger(this.constructor.Event.SHOWN)\n\n        if (prevHoverState === HOVER_STATE_OUT) {\n          this._leave(null, this)\n        }\n      }\n\n      if ($(this.tip).hasClass(CLASS_NAME_FADE)) {\n        const transitionDuration = Util.getTransitionDurationFromElement(this.tip)\n\n        $(this.tip)\n          .one(Util.TRANSITION_END, complete)\n          .emulateTransitionEnd(transitionDuration)\n      } else {\n        complete()\n      }\n    }\n  }\n\n  hide(callback) {\n    const tip = this.getTipElement()\n    const hideEvent = $.Event(this.constructor.Event.HIDE)\n    const complete = () => {\n      if (this._hoverState !== HOVER_STATE_SHOW && tip.parentNode) {\n        tip.parentNode.removeChild(tip)\n      }\n\n      this._cleanTipClass()\n      this.element.removeAttribute('aria-describedby')\n      $(this.element).trigger(this.constructor.Event.HIDDEN)\n      if (this._popper !== null) {\n        this._popper.destroy()\n      }\n\n      if (callback) {\n        callback()\n      }\n    }\n\n    $(this.element).trigger(hideEvent)\n\n    if (hideEvent.isDefaultPrevented()) {\n      return\n    }\n\n    $(tip).removeClass(CLASS_NAME_SHOW)\n\n    // If this is a touch-enabled device we remove the extra\n    // empty mouseover listeners we added for iOS support\n    if ('ontouchstart' in document.documentElement) {\n      $(document.body).children().off('mouseover', null, $.noop)\n    }\n\n    this._activeTrigger[TRIGGER_CLICK] = false\n    this._activeTrigger[TRIGGER_FOCUS] = false\n    this._activeTrigger[TRIGGER_HOVER] = false\n\n    if ($(this.tip).hasClass(CLASS_NAME_FADE)) {\n      const transitionDuration = Util.getTransitionDurationFromElement(tip)\n\n      $(tip)\n        .one(Util.TRANSITION_END, complete)\n        .emulateTransitionEnd(transitionDuration)\n    } else {\n      complete()\n    }\n\n    this._hoverState = ''\n  }\n\n  update() {\n    if (this._popper !== null) {\n      this._popper.scheduleUpdate()\n    }\n  }\n\n  // Protected\n\n  isWithContent() {\n    return Boolean(this.getTitle())\n  }\n\n  addAttachmentClass(attachment) {\n    $(this.getTipElement()).addClass(`${CLASS_PREFIX}-${attachment}`)\n  }\n\n  getTipElement() {\n    this.tip = this.tip || $(this.config.template)[0]\n    return this.tip\n  }\n\n  setContent() {\n    const tip = this.getTipElement()\n    this.setElementContent($(tip.querySelectorAll(SELECTOR_TOOLTIP_INNER)), this.getTitle())\n    $(tip).removeClass(`${CLASS_NAME_FADE} ${CLASS_NAME_SHOW}`)\n  }\n\n  setElementContent($element, content) {\n    if (typeof content === 'object' && (content.nodeType || content.jquery)) {\n      // Content is a DOM node or a jQuery\n      if (this.config.html) {\n        if (!$(content).parent().is($element)) {\n          $element.empty().append(content)\n        }\n      } else {\n        $element.text($(content).text())\n      }\n\n      return\n    }\n\n    if (this.config.html) {\n      if (this.config.sanitize) {\n        content = sanitizeHtml(content, this.config.whiteList, this.config.sanitizeFn)\n      }\n\n      $element.html(content)\n    } else {\n      $element.text(content)\n    }\n  }\n\n  getTitle() {\n    let title = this.element.getAttribute('data-original-title')\n\n    if (!title) {\n      title = typeof this.config.title === 'function' ?\n        this.config.title.call(this.element) :\n        this.config.title\n    }\n\n    return title\n  }\n\n  // Private\n\n  _getPopperConfig(attachment) {\n    const defaultBsConfig = {\n      placement: attachment,\n      modifiers: {\n        offset: this._getOffset(),\n        flip: {\n          behavior: this.config.fallbackPlacement\n        },\n        arrow: {\n          element: SELECTOR_ARROW\n        },\n        preventOverflow: {\n          boundariesElement: this.config.boundary\n        }\n      },\n      onCreate: data => {\n        if (data.originalPlacement !== data.placement) {\n          this._handlePopperPlacementChange(data)\n        }\n      },\n      onUpdate: data => this._handlePopperPlacementChange(data)\n    }\n\n    return {\n      ...defaultBsConfig,\n      ...this.config.popperConfig\n    }\n  }\n\n  _getOffset() {\n    const offset = {}\n\n    if (typeof this.config.offset === 'function') {\n      offset.fn = data => {\n        data.offsets = {\n          ...data.offsets,\n          ...(this.config.offset(data.offsets, this.element) || {})\n        }\n\n        return data\n      }\n    } else {\n      offset.offset = this.config.offset\n    }\n\n    return offset\n  }\n\n  _getContainer() {\n    if (this.config.container === false) {\n      return document.body\n    }\n\n    if (Util.isElement(this.config.container)) {\n      return $(this.config.container)\n    }\n\n    return $(document).find(this.config.container)\n  }\n\n  _getAttachment(placement) {\n    return AttachmentMap[placement.toUpperCase()]\n  }\n\n  _setListeners() {\n    const triggers = this.config.trigger.split(' ')\n\n    triggers.forEach(trigger => {\n      if (trigger === 'click') {\n        $(this.element).on(\n          this.constructor.Event.CLICK,\n          this.config.selector,\n          event => this.toggle(event)\n        )\n      } else if (trigger !== TRIGGER_MANUAL) {\n        const eventIn = trigger === TRIGGER_HOVER ?\n          this.constructor.Event.MOUSEENTER :\n          this.constructor.Event.FOCUSIN\n        const eventOut = trigger === TRIGGER_HOVER ?\n          this.constructor.Event.MOUSELEAVE :\n          this.constructor.Event.FOCUSOUT\n\n        $(this.element)\n          .on(eventIn, this.config.selector, event => this._enter(event))\n          .on(eventOut, this.config.selector, event => this._leave(event))\n      }\n    })\n\n    this._hideModalHandler = () => {\n      if (this.element) {\n        this.hide()\n      }\n    }\n\n    $(this.element).closest('.modal').on('hide.bs.modal', this._hideModalHandler)\n\n    if (this.config.selector) {\n      this.config = {\n        ...this.config,\n        trigger: 'manual',\n        selector: ''\n      }\n    } else {\n      this._fixTitle()\n    }\n  }\n\n  _fixTitle() {\n    const titleType = typeof this.element.getAttribute('data-original-title')\n\n    if (this.element.getAttribute('title') || titleType !== 'string') {\n      this.element.setAttribute(\n        'data-original-title',\n        this.element.getAttribute('title') || ''\n      )\n\n      this.element.setAttribute('title', '')\n    }\n  }\n\n  _enter(event, context) {\n    const dataKey = this.constructor.DATA_KEY\n    context = context || $(event.currentTarget).data(dataKey)\n\n    if (!context) {\n      context = new this.constructor(\n        event.currentTarget,\n        this._getDelegateConfig()\n      )\n      $(event.currentTarget).data(dataKey, context)\n    }\n\n    if (event) {\n      context._activeTrigger[\n        event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER\n      ] = true\n    }\n\n    if ($(context.getTipElement()).hasClass(CLASS_NAME_SHOW) || context._hoverState === HOVER_STATE_SHOW) {\n      context._hoverState = HOVER_STATE_SHOW\n      return\n    }\n\n    clearTimeout(context._timeout)\n\n    context._hoverState = HOVER_STATE_SHOW\n\n    if (!context.config.delay || !context.config.delay.show) {\n      context.show()\n      return\n    }\n\n    context._timeout = setTimeout(() => {\n      if (context._hoverState === HOVER_STATE_SHOW) {\n        context.show()\n      }\n    }, context.config.delay.show)\n  }\n\n  _leave(event, context) {\n    const dataKey = this.constructor.DATA_KEY\n    context = context || $(event.currentTarget).data(dataKey)\n\n    if (!context) {\n      context = new this.constructor(\n        event.currentTarget,\n        this._getDelegateConfig()\n      )\n      $(event.currentTarget).data(dataKey, context)\n    }\n\n    if (event) {\n      context._activeTrigger[\n        event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER\n      ] = false\n    }\n\n    if (context._isWithActiveTrigger()) {\n      return\n    }\n\n    clearTimeout(context._timeout)\n\n    context._hoverState = HOVER_STATE_OUT\n\n    if (!context.config.delay || !context.config.delay.hide) {\n      context.hide()\n      return\n    }\n\n    context._timeout = setTimeout(() => {\n      if (context._hoverState === HOVER_STATE_OUT) {\n        context.hide()\n      }\n    }, context.config.delay.hide)\n  }\n\n  _isWithActiveTrigger() {\n    for (const trigger in this._activeTrigger) {\n      if (this._activeTrigger[trigger]) {\n        return true\n      }\n    }\n\n    return false\n  }\n\n  _getConfig(config) {\n    const dataAttributes = $(this.element).data()\n\n    Object.keys(dataAttributes)\n      .forEach(dataAttr => {\n        if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) {\n          delete dataAttributes[dataAttr]\n        }\n      })\n\n    config = {\n      ...this.constructor.Default,\n      ...dataAttributes,\n      ...(typeof config === 'object' && config ? config : {})\n    }\n\n    if (typeof config.delay === 'number') {\n      config.delay = {\n        show: config.delay,\n        hide: config.delay\n      }\n    }\n\n    if (typeof config.title === 'number') {\n      config.title = config.title.toString()\n    }\n\n    if (typeof config.content === 'number') {\n      config.content = config.content.toString()\n    }\n\n    Util.typeCheckConfig(\n      NAME,\n      config,\n      this.constructor.DefaultType\n    )\n\n    if (config.sanitize) {\n      config.template = sanitizeHtml(config.template, config.whiteList, config.sanitizeFn)\n    }\n\n    return config\n  }\n\n  _getDelegateConfig() {\n    const config = {}\n\n    if (this.config) {\n      for (const key in this.config) {\n        if (this.constructor.Default[key] !== this.config[key]) {\n          config[key] = this.config[key]\n        }\n      }\n    }\n\n    return config\n  }\n\n  _cleanTipClass() {\n    const $tip = $(this.getTipElement())\n    const tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX)\n    if (tabClass !== null && tabClass.length) {\n      $tip.removeClass(tabClass.join(''))\n    }\n  }\n\n  _handlePopperPlacementChange(popperData) {\n    this.tip = popperData.instance.popper\n    this._cleanTipClass()\n    this.addAttachmentClass(this._getAttachment(popperData.placement))\n  }\n\n  _fixTransition() {\n    const tip = this.getTipElement()\n    const initConfigAnimation = this.config.animation\n\n    if (tip.getAttribute('x-placement') !== null) {\n      return\n    }\n\n    $(tip).removeClass(CLASS_NAME_FADE)\n    this.config.animation = false\n    this.hide()\n    this.show()\n    this.config.animation = initConfigAnimation\n  }\n\n  // Static\n\n  static _jQueryInterface(config) {\n    return this.each(function () {\n      const $element = $(this)\n      let data = $element.data(DATA_KEY)\n      const _config = typeof config === 'object' && config\n\n      if (!data && /dispose|hide/.test(config)) {\n        return\n      }\n\n      if (!data) {\n        data = new Tooltip(this, _config)\n        $element.data(DATA_KEY, data)\n      }\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Tooltip._jQueryInterface\n$.fn[NAME].Constructor = Tooltip\n$.fn[NAME].noConflict = () => {\n  $.fn[NAME] = JQUERY_NO_CONFLICT\n  return Tooltip._jQueryInterface\n}\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.0): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Tooltip from './tooltip'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'popover'\nconst VERSION = '4.6.0'\nconst DATA_KEY = 'bs.popover'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst CLASS_PREFIX = 'bs-popover'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\n\nconst Default = {\n  ...Tooltip.Default,\n  placement: 'right',\n  trigger: 'click',\n  content: '',\n  template: '<div class=\"popover\" role=\"tooltip\">' +\n              '<div class=\"arrow\"></div>' +\n              '<h3 class=\"popover-header\"></h3>' +\n              '<div class=\"popover-body\"></div></div>'\n}\n\nconst DefaultType = {\n  ...Tooltip.DefaultType,\n  content: '(string|element|function)'\n}\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\n\nconst Event = {\n  HIDE: `hide${EVENT_KEY}`,\n  HIDDEN: `hidden${EVENT_KEY}`,\n  SHOW: `show${EVENT_KEY}`,\n  SHOWN: `shown${EVENT_KEY}`,\n  INSERTED: `inserted${EVENT_KEY}`,\n  CLICK: `click${EVENT_KEY}`,\n  FOCUSIN: `focusin${EVENT_KEY}`,\n  FOCUSOUT: `focusout${EVENT_KEY}`,\n  MOUSEENTER: `mouseenter${EVENT_KEY}`,\n  MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Popover extends Tooltip {\n  // Getters\n\n  static get VERSION() {\n    return VERSION\n  }\n\n  static get Default() {\n    return Default\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  static get DATA_KEY() {\n    return DATA_KEY\n  }\n\n  static get Event() {\n    return Event\n  }\n\n  static get EVENT_KEY() {\n    return EVENT_KEY\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  // Overrides\n\n  isWithContent() {\n    return this.getTitle() || this._getContent()\n  }\n\n  addAttachmentClass(attachment) {\n    $(this.getTipElement()).addClass(`${CLASS_PREFIX}-${attachment}`)\n  }\n\n  getTipElement() {\n    this.tip = this.tip || $(this.config.template)[0]\n    return this.tip\n  }\n\n  setContent() {\n    const $tip = $(this.getTipElement())\n\n    // We use append for html objects to maintain js events\n    this.setElementContent($tip.find(SELECTOR_TITLE), this.getTitle())\n    let content = this._getContent()\n    if (typeof content === 'function') {\n      content = content.call(this.element)\n    }\n\n    this.setElementContent($tip.find(SELECTOR_CONTENT), content)\n\n    $tip.removeClass(`${CLASS_NAME_FADE} ${CLASS_NAME_SHOW}`)\n  }\n\n  // Private\n\n  _getContent() {\n    return this.element.getAttribute('data-content') ||\n      this.config.content\n  }\n\n  _cleanTipClass() {\n    const $tip = $(this.getTipElement())\n    const tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX)\n    if (tabClass !== null && tabClass.length > 0) {\n      $tip.removeClass(tabClass.join(''))\n    }\n  }\n\n  // Static\n\n  static _jQueryInterface(config) {\n    return this.each(function () {\n      let data = $(this).data(DATA_KEY)\n      const _config = typeof config === 'object' ? config : null\n\n      if (!data && /dispose|hide/.test(config)) {\n        return\n      }\n\n      if (!data) {\n        data = new Popover(this, _config)\n        $(this).data(DATA_KEY, data)\n      }\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Popover._jQueryInterface\n$.fn[NAME].Constructor = Popover\n$.fn[NAME].noConflict = () => {\n  $.fn[NAME] = JQUERY_NO_CONFLICT\n  return Popover._jQueryInterface\n}\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.0): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'scrollspy'\nconst VERSION = '4.6.0'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst Default = {\n  offset: 10,\n  method: 'auto',\n  target: ''\n}\n\nconst DefaultType = {\n  offset: 'number',\n  method: 'string',\n  target: '(string|element)'\n}\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_SCROLL = `scroll${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_SPY = '[data-spy=\"scroll\"]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_DROPDOWN_ITEMS = '.dropdown-item'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\n\nconst METHOD_OFFSET = 'offset'\nconst METHOD_POSITION = 'position'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass ScrollSpy {\n  constructor(element, config) {\n    this._element = element\n    this._scrollElement = element.tagName === 'BODY' ? window : element\n    this._config = this._getConfig(config)\n    this._selector = `${this._config.target} ${SELECTOR_NAV_LINKS},` +\n                          `${this._config.target} ${SELECTOR_LIST_ITEMS},` +\n                          `${this._config.target} ${SELECTOR_DROPDOWN_ITEMS}`\n    this._offsets = []\n    this._targets = []\n    this._activeTarget = null\n    this._scrollHeight = 0\n\n    $(this._scrollElement).on(EVENT_SCROLL, event => this._process(event))\n\n    this.refresh()\n    this._process()\n  }\n\n  // Getters\n\n  static get VERSION() {\n    return VERSION\n  }\n\n  static get Default() {\n    return Default\n  }\n\n  // Public\n\n  refresh() {\n    const autoMethod = this._scrollElement === this._scrollElement.window ?\n      METHOD_OFFSET : METHOD_POSITION\n\n    const offsetMethod = this._config.method === 'auto' ?\n      autoMethod : this._config.method\n\n    const offsetBase = offsetMethod === METHOD_POSITION ?\n      this._getScrollTop() : 0\n\n    this._offsets = []\n    this._targets = []\n\n    this._scrollHeight = this._getScrollHeight()\n\n    const targets = [].slice.call(document.querySelectorAll(this._selector))\n\n    targets\n      .map(element => {\n        let target\n        const targetSelector = Util.getSelectorFromElement(element)\n\n        if (targetSelector) {\n          target = document.querySelector(targetSelector)\n        }\n\n        if (target) {\n          const targetBCR = target.getBoundingClientRect()\n          if (targetBCR.width || targetBCR.height) {\n            // TODO (fat): remove sketch reliance on jQuery position/offset\n            return [\n              $(target)[offsetMethod]().top + offsetBase,\n              targetSelector\n            ]\n          }\n        }\n\n        return null\n      })\n      .filter(item => item)\n      .sort((a, b) => a[0] - b[0])\n      .forEach(item => {\n        this._offsets.push(item[0])\n        this._targets.push(item[1])\n      })\n  }\n\n  dispose() {\n    $.removeData(this._element, DATA_KEY)\n    $(this._scrollElement).off(EVENT_KEY)\n\n    this._element = null\n    this._scrollElement = null\n    this._config = null\n    this._selector = null\n    this._offsets = null\n    this._targets = null\n    this._activeTarget = null\n    this._scrollHeight = null\n  }\n\n  // Private\n\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...(typeof config === 'object' && config ? config : {})\n    }\n\n    if (typeof config.target !== 'string' && Util.isElement(config.target)) {\n      let id = $(config.target).attr('id')\n      if (!id) {\n        id = Util.getUID(NAME)\n        $(config.target).attr('id', id)\n      }\n\n      config.target = `#${id}`\n    }\n\n    Util.typeCheckConfig(NAME, config, DefaultType)\n\n    return config\n  }\n\n  _getScrollTop() {\n    return this._scrollElement === window ?\n      this._scrollElement.pageYOffset : this._scrollElement.scrollTop\n  }\n\n  _getScrollHeight() {\n    return this._scrollElement.scrollHeight || Math.max(\n      document.body.scrollHeight,\n      document.documentElement.scrollHeight\n    )\n  }\n\n  _getOffsetHeight() {\n    return this._scrollElement === window ?\n      window.innerHeight : this._scrollElement.getBoundingClientRect().height\n  }\n\n  _process() {\n    const scrollTop = this._getScrollTop() + this._config.offset\n    const scrollHeight = this._getScrollHeight()\n    const maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight()\n\n    if (this._scrollHeight !== scrollHeight) {\n      this.refresh()\n    }\n\n    if (scrollTop >= maxScroll) {\n      const target = this._targets[this._targets.length - 1]\n\n      if (this._activeTarget !== target) {\n        this._activate(target)\n      }\n\n      return\n    }\n\n    if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n      this._activeTarget = null\n      this._clear()\n      return\n    }\n\n    for (let i = this._offsets.length; i--;) {\n      const isActiveTarget = this._activeTarget !== this._targets[i] &&\n          scrollTop >= this._offsets[i] &&\n          (typeof this._offsets[i + 1] === 'undefined' ||\n              scrollTop < this._offsets[i + 1])\n\n      if (isActiveTarget) {\n        this._activate(this._targets[i])\n      }\n    }\n  }\n\n  _activate(target) {\n    this._activeTarget = target\n\n    this._clear()\n\n    const queries = this._selector\n      .split(',')\n      .map(selector => `${selector}[data-target=\"${target}\"],${selector}[href=\"${target}\"]`)\n\n    const $link = $([].slice.call(document.querySelectorAll(queries.join(','))))\n\n    if ($link.hasClass(CLASS_NAME_DROPDOWN_ITEM)) {\n      $link.closest(SELECTOR_DROPDOWN)\n        .find(SELECTOR_DROPDOWN_TOGGLE)\n        .addClass(CLASS_NAME_ACTIVE)\n      $link.addClass(CLASS_NAME_ACTIVE)\n    } else {\n      // Set triggered link as active\n      $link.addClass(CLASS_NAME_ACTIVE)\n      // Set triggered links parents as active\n      // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n      $link.parents(SELECTOR_NAV_LIST_GROUP)\n        .prev(`${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`)\n        .addClass(CLASS_NAME_ACTIVE)\n      // Handle special case when .nav-link is inside .nav-item\n      $link.parents(SELECTOR_NAV_LIST_GROUP)\n        .prev(SELECTOR_NAV_ITEMS)\n        .children(SELECTOR_NAV_LINKS)\n        .addClass(CLASS_NAME_ACTIVE)\n    }\n\n    $(this._scrollElement).trigger(EVENT_ACTIVATE, {\n      relatedTarget: target\n    })\n  }\n\n  _clear() {\n    [].slice.call(document.querySelectorAll(this._selector))\n      .filter(node => node.classList.contains(CLASS_NAME_ACTIVE))\n      .forEach(node => node.classList.remove(CLASS_NAME_ACTIVE))\n  }\n\n  // Static\n\n  static _jQueryInterface(config) {\n    return this.each(function () {\n      let data = $(this).data(DATA_KEY)\n      const _config = typeof config === 'object' && config\n\n      if (!data) {\n        data = new ScrollSpy(this, _config)\n        $(this).data(DATA_KEY, data)\n      }\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(window).on(EVENT_LOAD_DATA_API, () => {\n  const scrollSpys = [].slice.call(document.querySelectorAll(SELECTOR_DATA_SPY))\n  const scrollSpysLength = scrollSpys.length\n\n  for (let i = scrollSpysLength; i--;) {\n    const $spy = $(scrollSpys[i])\n    ScrollSpy._jQueryInterface.call($spy, $spy.data())\n  }\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = ScrollSpy._jQueryInterface\n$.fn[NAME].Constructor = ScrollSpy\n$.fn[NAME].noConflict = () => {\n  $.fn[NAME] = JQUERY_NO_CONFLICT\n  return ScrollSpy._jQueryInterface\n}\n\nexport default ScrollSpy\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.0): tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tab'\nconst VERSION = '4.6.0'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_DISABLED = 'disabled'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ACTIVE_UL = '> li > .active'\nconst SELECTOR_DATA_TOGGLE = '[data-toggle=\"tab\"], [data-toggle=\"pill\"], [data-toggle=\"list\"]'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\nconst SELECTOR_DROPDOWN_ACTIVE_CHILD = '> .dropdown-menu .active'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tab {\n  constructor(element) {\n    this._element = element\n  }\n\n  // Getters\n\n  static get VERSION() {\n    return VERSION\n  }\n\n  // Public\n\n  show() {\n    if (this._element.parentNode &&\n        this._element.parentNode.nodeType === Node.ELEMENT_NODE &&\n        $(this._element).hasClass(CLASS_NAME_ACTIVE) ||\n        $(this._element).hasClass(CLASS_NAME_DISABLED)) {\n      return\n    }\n\n    let target\n    let previous\n    const listElement = $(this._element).closest(SELECTOR_NAV_LIST_GROUP)[0]\n    const selector = Util.getSelectorFromElement(this._element)\n\n    if (listElement) {\n      const itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE\n      previous = $.makeArray($(listElement).find(itemSelector))\n      previous = previous[previous.length - 1]\n    }\n\n    const hideEvent = $.Event(EVENT_HIDE, {\n      relatedTarget: this._element\n    })\n\n    const showEvent = $.Event(EVENT_SHOW, {\n      relatedTarget: previous\n    })\n\n    if (previous) {\n      $(previous).trigger(hideEvent)\n    }\n\n    $(this._element).trigger(showEvent)\n\n    if (showEvent.isDefaultPrevented() ||\n        hideEvent.isDefaultPrevented()) {\n      return\n    }\n\n    if (selector) {\n      target = document.querySelector(selector)\n    }\n\n    this._activate(\n      this._element,\n      listElement\n    )\n\n    const complete = () => {\n      const hiddenEvent = $.Event(EVENT_HIDDEN, {\n        relatedTarget: this._element\n      })\n\n      const shownEvent = $.Event(EVENT_SHOWN, {\n        relatedTarget: previous\n      })\n\n      $(previous).trigger(hiddenEvent)\n      $(this._element).trigger(shownEvent)\n    }\n\n    if (target) {\n      this._activate(target, target.parentNode, complete)\n    } else {\n      complete()\n    }\n  }\n\n  dispose() {\n    $.removeData(this._element, DATA_KEY)\n    this._element = null\n  }\n\n  // Private\n\n  _activate(element, container, callback) {\n    const activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ?\n      $(container).find(SELECTOR_ACTIVE_UL) :\n      $(container).children(SELECTOR_ACTIVE)\n\n    const active = activeElements[0]\n    const isTransitioning = callback && (active && $(active).hasClass(CLASS_NAME_FADE))\n    const complete = () => this._transitionComplete(\n      element,\n      active,\n      callback\n    )\n\n    if (active && isTransitioning) {\n      const transitionDuration = Util.getTransitionDurationFromElement(active)\n\n      $(active)\n        .removeClass(CLASS_NAME_SHOW)\n        .one(Util.TRANSITION_END, complete)\n        .emulateTransitionEnd(transitionDuration)\n    } else {\n      complete()\n    }\n  }\n\n  _transitionComplete(element, active, callback) {\n    if (active) {\n      $(active).removeClass(CLASS_NAME_ACTIVE)\n\n      const dropdownChild = $(active.parentNode).find(\n        SELECTOR_DROPDOWN_ACTIVE_CHILD\n      )[0]\n\n      if (dropdownChild) {\n        $(dropdownChild).removeClass(CLASS_NAME_ACTIVE)\n      }\n\n      if (active.getAttribute('role') === 'tab') {\n        active.setAttribute('aria-selected', false)\n      }\n    }\n\n    $(element).addClass(CLASS_NAME_ACTIVE)\n    if (element.getAttribute('role') === 'tab') {\n      element.setAttribute('aria-selected', true)\n    }\n\n    Util.reflow(element)\n\n    if (element.classList.contains(CLASS_NAME_FADE)) {\n      element.classList.add(CLASS_NAME_SHOW)\n    }\n\n    let parent = element.parentNode\n    if (parent && parent.nodeName === 'LI') {\n      parent = parent.parentNode\n    }\n\n    if (parent && $(parent).hasClass(CLASS_NAME_DROPDOWN_MENU)) {\n      const dropdownElement = $(element).closest(SELECTOR_DROPDOWN)[0]\n\n      if (dropdownElement) {\n        const dropdownToggleList = [].slice.call(dropdownElement.querySelectorAll(SELECTOR_DROPDOWN_TOGGLE))\n\n        $(dropdownToggleList).addClass(CLASS_NAME_ACTIVE)\n      }\n\n      element.setAttribute('aria-expanded', true)\n    }\n\n    if (callback) {\n      callback()\n    }\n  }\n\n  // Static\n\n  static _jQueryInterface(config) {\n    return this.each(function () {\n      const $this = $(this)\n      let data = $this.data(DATA_KEY)\n\n      if (!data) {\n        data = new Tab(this)\n        $this.data(DATA_KEY, data)\n      }\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document)\n  .on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n    event.preventDefault()\n    Tab._jQueryInterface.call($(this), 'show')\n  })\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Tab._jQueryInterface\n$.fn[NAME].Constructor = Tab\n$.fn[NAME].noConflict = () => {\n  $.fn[NAME] = JQUERY_NO_CONFLICT\n  return Tab._jQueryInterface\n}\n\nexport default Tab\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.0): toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'toast'\nconst VERSION = '4.6.0'\nconst DATA_KEY = 'bs.toast'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_HIDE = 'hide'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\n\nconst DefaultType = {\n  animation: 'boolean',\n  autohide: 'boolean',\n  delay: 'number'\n}\n\nconst Default = {\n  animation: true,\n  autohide: true,\n  delay: 500\n}\n\nconst SELECTOR_DATA_DISMISS = '[data-dismiss=\"toast\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Toast {\n  constructor(element, config) {\n    this._element = element\n    this._config = this._getConfig(config)\n    this._timeout = null\n    this._setListeners()\n  }\n\n  // Getters\n\n  static get VERSION() {\n    return VERSION\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get Default() {\n    return Default\n  }\n\n  // Public\n\n  show() {\n    const showEvent = $.Event(EVENT_SHOW)\n\n    $(this._element).trigger(showEvent)\n    if (showEvent.isDefaultPrevented()) {\n      return\n    }\n\n    this._clearTimeout()\n\n    if (this._config.animation) {\n      this._element.classList.add(CLASS_NAME_FADE)\n    }\n\n    const complete = () => {\n      this._element.classList.remove(CLASS_NAME_SHOWING)\n      this._element.classList.add(CLASS_NAME_SHOW)\n\n      $(this._element).trigger(EVENT_SHOWN)\n\n      if (this._config.autohide) {\n        this._timeout = setTimeout(() => {\n          this.hide()\n        }, this._config.delay)\n      }\n    }\n\n    this._element.classList.remove(CLASS_NAME_HIDE)\n    Util.reflow(this._element)\n    this._element.classList.add(CLASS_NAME_SHOWING)\n    if (this._config.animation) {\n      const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n      $(this._element)\n        .one(Util.TRANSITION_END, complete)\n        .emulateTransitionEnd(transitionDuration)\n    } else {\n      complete()\n    }\n  }\n\n  hide() {\n    if (!this._element.classList.contains(CLASS_NAME_SHOW)) {\n      return\n    }\n\n    const hideEvent = $.Event(EVENT_HIDE)\n\n    $(this._element).trigger(hideEvent)\n    if (hideEvent.isDefaultPrevented()) {\n      return\n    }\n\n    this._close()\n  }\n\n  dispose() {\n    this._clearTimeout()\n\n    if (this._element.classList.contains(CLASS_NAME_SHOW)) {\n      this._element.classList.remove(CLASS_NAME_SHOW)\n    }\n\n    $(this._element).off(EVENT_CLICK_DISMISS)\n\n    $.removeData(this._element, DATA_KEY)\n    this._element = null\n    this._config = null\n  }\n\n  // Private\n\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...$(this._element).data(),\n      ...(typeof config === 'object' && config ? config : {})\n    }\n\n    Util.typeCheckConfig(\n      NAME,\n      config,\n      this.constructor.DefaultType\n    )\n\n    return config\n  }\n\n  _setListeners() {\n    $(this._element).on(EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, () => this.hide())\n  }\n\n  _close() {\n    const complete = () => {\n      this._element.classList.add(CLASS_NAME_HIDE)\n      $(this._element).trigger(EVENT_HIDDEN)\n    }\n\n    this._element.classList.remove(CLASS_NAME_SHOW)\n    if (this._config.animation) {\n      const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n      $(this._element)\n        .one(Util.TRANSITION_END, complete)\n        .emulateTransitionEnd(transitionDuration)\n    } else {\n      complete()\n    }\n  }\n\n  _clearTimeout() {\n    clearTimeout(this._timeout)\n    this._timeout = null\n  }\n\n  // Static\n\n  static _jQueryInterface(config) {\n    return this.each(function () {\n      const $element = $(this)\n      let data = $element.data(DATA_KEY)\n      const _config = typeof config === 'object' && config\n\n      if (!data) {\n        data = new Toast(this, _config)\n        $element.data(DATA_KEY, data)\n      }\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config](this)\n      }\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Toast._jQueryInterface\n$.fn[NAME].Constructor = Toast\n$.fn[NAME].noConflict = () => {\n  $.fn[NAME] = JQUERY_NO_CONFLICT\n  return Toast._jQueryInterface\n}\n\nexport default Toast\n"]}
\ No newline at end of file
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/dist/js/bootstrap.bundle.min.js
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/dist/js/bootstrap.bundle.min.js	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/dist/js/bootstrap.bundle.min.js	(revision 3762)
@@ -0,0 +1,7 @@
+/*!
+  * Bootstrap v4.6.0 (https://getbootstrap.com/)
+  * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
+  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+  */
+!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("jquery")):"function"==typeof define&&define.amd?define(["exports","jquery"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).bootstrap={},t.jQuery)}(this,(function(t,e){"use strict";function n(t){return t&&"object"==typeof t&&"default"in t?t:{default:t}}var i=n(e);function o(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function r(t,e,n){return e&&o(t.prototype,e),n&&o(t,n),t}function a(){return(a=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])}return t}).apply(this,arguments)}function s(t){var e=this,n=!1;return i.default(this).one(l.TRANSITION_END,(function(){n=!0})),setTimeout((function(){n||l.triggerTransitionEnd(e)}),t),this}var l={TRANSITION_END:"bsTransitionEnd",getUID:function(t){do{t+=~~(1e6*Math.random())}while(document.getElementById(t));return t},getSelectorFromElement:function(t){var e=t.getAttribute("data-target");if(!e||"#"===e){var n=t.getAttribute("href");e=n&&"#"!==n?n.trim():""}try{return document.querySelector(e)?e:null}catch(t){return null}},getTransitionDurationFromElement:function(t){if(!t)return 0;var e=i.default(t).css("transition-duration"),n=i.default(t).css("transition-delay"),o=parseFloat(e),r=parseFloat(n);return o||r?(e=e.split(",")[0],n=n.split(",")[0],1e3*(parseFloat(e)+parseFloat(n))):0},reflow:function(t){return t.offsetHeight},triggerTransitionEnd:function(t){i.default(t).trigger("transitionend")},supportsTransitionEnd:function(){return Boolean("transitionend")},isElement:function(t){return(t[0]||t).nodeType},typeCheckConfig:function(t,e,n){for(var i in n)if(Object.prototype.hasOwnProperty.call(n,i)){var o=n[i],r=e[i],a=r&&l.isElement(r)?"element":null===(s=r)||"undefined"==typeof s?""+s:{}.toString.call(s).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(o).test(a))throw new Error(t.toUpperCase()+': Option "'+i+'" provided type "'+a+'" but expected type "'+o+'".')}var s},findShadowRoot:function(t){if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){var e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?l.findShadowRoot(t.parentNode):null},jQueryDetection:function(){if("undefined"==typeof i.default)throw new TypeError("Bootstrap's JavaScript requires jQuery. jQuery must be included before Bootstrap's JavaScript.");var t=i.default.fn.jquery.split(" ")[0].split(".");if(t[0]<2&&t[1]<9||1===t[0]&&9===t[1]&&t[2]<1||t[0]>=4)throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0")}};l.jQueryDetection(),i.default.fn.emulateTransitionEnd=s,i.default.event.special[l.TRANSITION_END]={bindType:"transitionend",delegateType:"transitionend",handle:function(t){if(i.default(t.target).is(this))return t.handleObj.handler.apply(this,arguments)}};var u="alert",f=i.default.fn[u],d=function(){function t(t){this._element=t}var e=t.prototype;return e.close=function(t){var e=this._element;t&&(e=this._getRootElement(t)),this._triggerCloseEvent(e).isDefaultPrevented()||this._removeElement(e)},e.dispose=function(){i.default.removeData(this._element,"bs.alert"),this._element=null},e._getRootElement=function(t){var e=l.getSelectorFromElement(t),n=!1;return e&&(n=document.querySelector(e)),n||(n=i.default(t).closest(".alert")[0]),n},e._triggerCloseEvent=function(t){var e=i.default.Event("close.bs.alert");return i.default(t).trigger(e),e},e._removeElement=function(t){var e=this;if(i.default(t).removeClass("show"),i.default(t).hasClass("fade")){var n=l.getTransitionDurationFromElement(t);i.default(t).one(l.TRANSITION_END,(function(n){return e._destroyElement(t,n)})).emulateTransitionEnd(n)}else this._destroyElement(t)},e._destroyElement=function(t){i.default(t).detach().trigger("closed.bs.alert").remove()},t._jQueryInterface=function(e){return this.each((function(){var n=i.default(this),o=n.data("bs.alert");o||(o=new t(this),n.data("bs.alert",o)),"close"===e&&o[e](this)}))},t._handleDismiss=function(t){return function(e){e&&e.preventDefault(),t.close(this)}},r(t,null,[{key:"VERSION",get:function(){return"4.6.0"}}]),t}();i.default(document).on("click.bs.alert.data-api",'[data-dismiss="alert"]',d._handleDismiss(new d)),i.default.fn[u]=d._jQueryInterface,i.default.fn[u].Constructor=d,i.default.fn[u].noConflict=function(){return i.default.fn[u]=f,d._jQueryInterface};var c=i.default.fn.button,h=function(){function t(t){this._element=t,this.shouldAvoidTriggerChange=!1}var e=t.prototype;return e.toggle=function(){var t=!0,e=!0,n=i.default(this._element).closest('[data-toggle="buttons"]')[0];if(n){var o=this._element.querySelector('input:not([type="hidden"])');if(o){if("radio"===o.type)if(o.checked&&this._element.classList.contains("active"))t=!1;else{var r=n.querySelector(".active");r&&i.default(r).removeClass("active")}t&&("checkbox"!==o.type&&"radio"!==o.type||(o.checked=!this._element.classList.contains("active")),this.shouldAvoidTriggerChange||i.default(o).trigger("change")),o.focus(),e=!1}}this._element.hasAttribute("disabled")||this._element.classList.contains("disabled")||(e&&this._element.setAttribute("aria-pressed",!this._element.classList.contains("active")),t&&i.default(this._element).toggleClass("active"))},e.dispose=function(){i.default.removeData(this._element,"bs.button"),this._element=null},t._jQueryInterface=function(e,n){return this.each((function(){var o=i.default(this),r=o.data("bs.button");r||(r=new t(this),o.data("bs.button",r)),r.shouldAvoidTriggerChange=n,"toggle"===e&&r[e]()}))},r(t,null,[{key:"VERSION",get:function(){return"4.6.0"}}]),t}();i.default(document).on("click.bs.button.data-api",'[data-toggle^="button"]',(function(t){var e=t.target,n=e;if(i.default(e).hasClass("btn")||(e=i.default(e).closest(".btn")[0]),!e||e.hasAttribute("disabled")||e.classList.contains("disabled"))t.preventDefault();else{var o=e.querySelector('input:not([type="hidden"])');if(o&&(o.hasAttribute("disabled")||o.classList.contains("disabled")))return void t.preventDefault();"INPUT"!==n.tagName&&"LABEL"===e.tagName||h._jQueryInterface.call(i.default(e),"toggle","INPUT"===n.tagName)}})).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',(function(t){var e=i.default(t.target).closest(".btn")[0];i.default(e).toggleClass("focus",/^focus(in)?$/.test(t.type))})),i.default(window).on("load.bs.button.data-api",(function(){for(var t=[].slice.call(document.querySelectorAll('[data-toggle="buttons"] .btn')),e=0,n=t.length;e<n;e++){var i=t[e],o=i.querySelector('input:not([type="hidden"])');o.checked||o.hasAttribute("checked")?i.classList.add("active"):i.classList.remove("active")}for(var r=0,a=(t=[].slice.call(document.querySelectorAll('[data-toggle="button"]'))).length;r<a;r++){var s=t[r];"true"===s.getAttribute("aria-pressed")?s.classList.add("active"):s.classList.remove("active")}})),i.default.fn.button=h._jQueryInterface,i.default.fn.button.Constructor=h,i.default.fn.button.noConflict=function(){return i.default.fn.button=c,h._jQueryInterface};var p="carousel",m=".bs.carousel",g=i.default.fn[p],v={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0,touch:!0},_={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean",touch:"boolean"},b={TOUCH:"touch",PEN:"pen"},y=function(){function t(t,e){this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this.touchStartX=0,this.touchDeltaX=0,this._config=this._getConfig(e),this._element=t,this._indicatorsElement=this._element.querySelector(".carousel-indicators"),this._touchSupported="ontouchstart"in document.documentElement||navigator.maxTouchPoints>0,this._pointerEvent=Boolean(window.PointerEvent||window.MSPointerEvent),this._addEventListeners()}var e=t.prototype;return e.next=function(){this._isSliding||this._slide("next")},e.nextWhenVisible=function(){var t=i.default(this._element);!document.hidden&&t.is(":visible")&&"hidden"!==t.css("visibility")&&this.next()},e.prev=function(){this._isSliding||this._slide("prev")},e.pause=function(t){t||(this._isPaused=!0),this._element.querySelector(".carousel-item-next, .carousel-item-prev")&&(l.triggerTransitionEnd(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null},e.cycle=function(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config.interval&&!this._isPaused&&(this._updateInterval(),this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))},e.to=function(t){var e=this;this._activeElement=this._element.querySelector(".active.carousel-item");var n=this._getItemIndex(this._activeElement);if(!(t>this._items.length-1||t<0))if(this._isSliding)i.default(this._element).one("slid.bs.carousel",(function(){return e.to(t)}));else{if(n===t)return this.pause(),void this.cycle();var o=t>n?"next":"prev";this._slide(o,this._items[t])}},e.dispose=function(){i.default(this._element).off(m),i.default.removeData(this._element,"bs.carousel"),this._items=null,this._config=null,this._element=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null},e._getConfig=function(t){return t=a({},v,t),l.typeCheckConfig(p,t,_),t},e._handleSwipe=function(){var t=Math.abs(this.touchDeltaX);if(!(t<=40)){var e=t/this.touchDeltaX;this.touchDeltaX=0,e>0&&this.prev(),e<0&&this.next()}},e._addEventListeners=function(){var t=this;this._config.keyboard&&i.default(this._element).on("keydown.bs.carousel",(function(e){return t._keydown(e)})),"hover"===this._config.pause&&i.default(this._element).on("mouseenter.bs.carousel",(function(e){return t.pause(e)})).on("mouseleave.bs.carousel",(function(e){return t.cycle(e)})),this._config.touch&&this._addTouchEventListeners()},e._addTouchEventListeners=function(){var t=this;if(this._touchSupported){var e=function(e){t._pointerEvent&&b[e.originalEvent.pointerType.toUpperCase()]?t.touchStartX=e.originalEvent.clientX:t._pointerEvent||(t.touchStartX=e.originalEvent.touches[0].clientX)},n=function(e){t._pointerEvent&&b[e.originalEvent.pointerType.toUpperCase()]&&(t.touchDeltaX=e.originalEvent.clientX-t.touchStartX),t._handleSwipe(),"hover"===t._config.pause&&(t.pause(),t.touchTimeout&&clearTimeout(t.touchTimeout),t.touchTimeout=setTimeout((function(e){return t.cycle(e)}),500+t._config.interval))};i.default(this._element.querySelectorAll(".carousel-item img")).on("dragstart.bs.carousel",(function(t){return t.preventDefault()})),this._pointerEvent?(i.default(this._element).on("pointerdown.bs.carousel",(function(t){return e(t)})),i.default(this._element).on("pointerup.bs.carousel",(function(t){return n(t)})),this._element.classList.add("pointer-event")):(i.default(this._element).on("touchstart.bs.carousel",(function(t){return e(t)})),i.default(this._element).on("touchmove.bs.carousel",(function(e){return function(e){e.originalEvent.touches&&e.originalEvent.touches.length>1?t.touchDeltaX=0:t.touchDeltaX=e.originalEvent.touches[0].clientX-t.touchStartX}(e)})),i.default(this._element).on("touchend.bs.carousel",(function(t){return n(t)})))}},e._keydown=function(t){if(!/input|textarea/i.test(t.target.tagName))switch(t.which){case 37:t.preventDefault(),this.prev();break;case 39:t.preventDefault(),this.next()}},e._getItemIndex=function(t){return this._items=t&&t.parentNode?[].slice.call(t.parentNode.querySelectorAll(".carousel-item")):[],this._items.indexOf(t)},e._getItemByDirection=function(t,e){var n="next"===t,i="prev"===t,o=this._getItemIndex(e),r=this._items.length-1;if((i&&0===o||n&&o===r)&&!this._config.wrap)return e;var a=(o+("prev"===t?-1:1))%this._items.length;return-1===a?this._items[this._items.length-1]:this._items[a]},e._triggerSlideEvent=function(t,e){var n=this._getItemIndex(t),o=this._getItemIndex(this._element.querySelector(".active.carousel-item")),r=i.default.Event("slide.bs.carousel",{relatedTarget:t,direction:e,from:o,to:n});return i.default(this._element).trigger(r),r},e._setActiveIndicatorElement=function(t){if(this._indicatorsElement){var e=[].slice.call(this._indicatorsElement.querySelectorAll(".active"));i.default(e).removeClass("active");var n=this._indicatorsElement.children[this._getItemIndex(t)];n&&i.default(n).addClass("active")}},e._updateInterval=function(){var t=this._activeElement||this._element.querySelector(".active.carousel-item");if(t){var e=parseInt(t.getAttribute("data-interval"),10);e?(this._config.defaultInterval=this._config.defaultInterval||this._config.interval,this._config.interval=e):this._config.interval=this._config.defaultInterval||this._config.interval}},e._slide=function(t,e){var n,o,r,a=this,s=this._element.querySelector(".active.carousel-item"),u=this._getItemIndex(s),f=e||s&&this._getItemByDirection(t,s),d=this._getItemIndex(f),c=Boolean(this._interval);if("next"===t?(n="carousel-item-left",o="carousel-item-next",r="left"):(n="carousel-item-right",o="carousel-item-prev",r="right"),f&&i.default(f).hasClass("active"))this._isSliding=!1;else if(!this._triggerSlideEvent(f,r).isDefaultPrevented()&&s&&f){this._isSliding=!0,c&&this.pause(),this._setActiveIndicatorElement(f),this._activeElement=f;var h=i.default.Event("slid.bs.carousel",{relatedTarget:f,direction:r,from:u,to:d});if(i.default(this._element).hasClass("slide")){i.default(f).addClass(o),l.reflow(f),i.default(s).addClass(n),i.default(f).addClass(n);var p=l.getTransitionDurationFromElement(s);i.default(s).one(l.TRANSITION_END,(function(){i.default(f).removeClass(n+" "+o).addClass("active"),i.default(s).removeClass("active "+o+" "+n),a._isSliding=!1,setTimeout((function(){return i.default(a._element).trigger(h)}),0)})).emulateTransitionEnd(p)}else i.default(s).removeClass("active"),i.default(f).addClass("active"),this._isSliding=!1,i.default(this._element).trigger(h);c&&this.cycle()}},t._jQueryInterface=function(e){return this.each((function(){var n=i.default(this).data("bs.carousel"),o=a({},v,i.default(this).data());"object"==typeof e&&(o=a({},o,e));var r="string"==typeof e?e:o.slide;if(n||(n=new t(this,o),i.default(this).data("bs.carousel",n)),"number"==typeof e)n.to(e);else if("string"==typeof r){if("undefined"==typeof n[r])throw new TypeError('No method named "'+r+'"');n[r]()}else o.interval&&o.ride&&(n.pause(),n.cycle())}))},t._dataApiClickHandler=function(e){var n=l.getSelectorFromElement(this);if(n){var o=i.default(n)[0];if(o&&i.default(o).hasClass("carousel")){var r=a({},i.default(o).data(),i.default(this).data()),s=this.getAttribute("data-slide-to");s&&(r.interval=!1),t._jQueryInterface.call(i.default(o),r),s&&i.default(o).data("bs.carousel").to(s),e.preventDefault()}}},r(t,null,[{key:"VERSION",get:function(){return"4.6.0"}},{key:"Default",get:function(){return v}}]),t}();i.default(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",y._dataApiClickHandler),i.default(window).on("load.bs.carousel.data-api",(function(){for(var t=[].slice.call(document.querySelectorAll('[data-ride="carousel"]')),e=0,n=t.length;e<n;e++){var o=i.default(t[e]);y._jQueryInterface.call(o,o.data())}})),i.default.fn[p]=y._jQueryInterface,i.default.fn[p].Constructor=y,i.default.fn[p].noConflict=function(){return i.default.fn[p]=g,y._jQueryInterface};var w="collapse",E=i.default.fn[w],T={toggle:!0,parent:""},C={toggle:"boolean",parent:"(string|element)"},S=function(){function t(t,e){this._isTransitioning=!1,this._element=t,this._config=this._getConfig(e),this._triggerArray=[].slice.call(document.querySelectorAll('[data-toggle="collapse"][href="#'+t.id+'"],[data-toggle="collapse"][data-target="#'+t.id+'"]'));for(var n=[].slice.call(document.querySelectorAll('[data-toggle="collapse"]')),i=0,o=n.length;i<o;i++){var r=n[i],a=l.getSelectorFromElement(r),s=[].slice.call(document.querySelectorAll(a)).filter((function(e){return e===t}));null!==a&&s.length>0&&(this._selector=a,this._triggerArray.push(r))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}var e=t.prototype;return e.toggle=function(){i.default(this._element).hasClass("show")?this.hide():this.show()},e.show=function(){var e,n,o=this;if(!this._isTransitioning&&!i.default(this._element).hasClass("show")&&(this._parent&&0===(e=[].slice.call(this._parent.querySelectorAll(".show, .collapsing")).filter((function(t){return"string"==typeof o._config.parent?t.getAttribute("data-parent")===o._config.parent:t.classList.contains("collapse")}))).length&&(e=null),!(e&&(n=i.default(e).not(this._selector).data("bs.collapse"))&&n._isTransitioning))){var r=i.default.Event("show.bs.collapse");if(i.default(this._element).trigger(r),!r.isDefaultPrevented()){e&&(t._jQueryInterface.call(i.default(e).not(this._selector),"hide"),n||i.default(e).data("bs.collapse",null));var a=this._getDimension();i.default(this._element).removeClass("collapse").addClass("collapsing"),this._element.style[a]=0,this._triggerArray.length&&i.default(this._triggerArray).removeClass("collapsed").attr("aria-expanded",!0),this.setTransitioning(!0);var s="scroll"+(a[0].toUpperCase()+a.slice(1)),u=l.getTransitionDurationFromElement(this._element);i.default(this._element).one(l.TRANSITION_END,(function(){i.default(o._element).removeClass("collapsing").addClass("collapse show"),o._element.style[a]="",o.setTransitioning(!1),i.default(o._element).trigger("shown.bs.collapse")})).emulateTransitionEnd(u),this._element.style[a]=this._element[s]+"px"}}},e.hide=function(){var t=this;if(!this._isTransitioning&&i.default(this._element).hasClass("show")){var e=i.default.Event("hide.bs.collapse");if(i.default(this._element).trigger(e),!e.isDefaultPrevented()){var n=this._getDimension();this._element.style[n]=this._element.getBoundingClientRect()[n]+"px",l.reflow(this._element),i.default(this._element).addClass("collapsing").removeClass("collapse show");var o=this._triggerArray.length;if(o>0)for(var r=0;r<o;r++){var a=this._triggerArray[r],s=l.getSelectorFromElement(a);if(null!==s)i.default([].slice.call(document.querySelectorAll(s))).hasClass("show")||i.default(a).addClass("collapsed").attr("aria-expanded",!1)}this.setTransitioning(!0);this._element.style[n]="";var u=l.getTransitionDurationFromElement(this._element);i.default(this._element).one(l.TRANSITION_END,(function(){t.setTransitioning(!1),i.default(t._element).removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")})).emulateTransitionEnd(u)}}},e.setTransitioning=function(t){this._isTransitioning=t},e.dispose=function(){i.default.removeData(this._element,"bs.collapse"),this._config=null,this._parent=null,this._element=null,this._triggerArray=null,this._isTransitioning=null},e._getConfig=function(t){return(t=a({},T,t)).toggle=Boolean(t.toggle),l.typeCheckConfig(w,t,C),t},e._getDimension=function(){return i.default(this._element).hasClass("width")?"width":"height"},e._getParent=function(){var e,n=this;l.isElement(this._config.parent)?(e=this._config.parent,"undefined"!=typeof this._config.parent.jquery&&(e=this._config.parent[0])):e=document.querySelector(this._config.parent);var o='[data-toggle="collapse"][data-parent="'+this._config.parent+'"]',r=[].slice.call(e.querySelectorAll(o));return i.default(r).each((function(e,i){n._addAriaAndCollapsedClass(t._getTargetFromElement(i),[i])})),e},e._addAriaAndCollapsedClass=function(t,e){var n=i.default(t).hasClass("show");e.length&&i.default(e).toggleClass("collapsed",!n).attr("aria-expanded",n)},t._getTargetFromElement=function(t){var e=l.getSelectorFromElement(t);return e?document.querySelector(e):null},t._jQueryInterface=function(e){return this.each((function(){var n=i.default(this),o=n.data("bs.collapse"),r=a({},T,n.data(),"object"==typeof e&&e?e:{});if(!o&&r.toggle&&"string"==typeof e&&/show|hide/.test(e)&&(r.toggle=!1),o||(o=new t(this,r),n.data("bs.collapse",o)),"string"==typeof e){if("undefined"==typeof o[e])throw new TypeError('No method named "'+e+'"');o[e]()}}))},r(t,null,[{key:"VERSION",get:function(){return"4.6.0"}},{key:"Default",get:function(){return T}}]),t}();i.default(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',(function(t){"A"===t.currentTarget.tagName&&t.preventDefault();var e=i.default(this),n=l.getSelectorFromElement(this),o=[].slice.call(document.querySelectorAll(n));i.default(o).each((function(){var t=i.default(this),n=t.data("bs.collapse")?"toggle":e.data();S._jQueryInterface.call(t,n)}))})),i.default.fn[w]=S._jQueryInterface,i.default.fn[w].Constructor=S,i.default.fn[w].noConflict=function(){return i.default.fn[w]=E,S._jQueryInterface};var N="undefined"!=typeof window&&"undefined"!=typeof document&&"undefined"!=typeof navigator,D=function(){for(var t=["Edge","Trident","Firefox"],e=0;e<t.length;e+=1)if(N&&navigator.userAgent.indexOf(t[e])>=0)return 1;return 0}();var k=N&&window.Promise?function(t){var e=!1;return function(){e||(e=!0,window.Promise.resolve().then((function(){e=!1,t()})))}}:function(t){var e=!1;return function(){e||(e=!0,setTimeout((function(){e=!1,t()}),D))}};function A(t){return t&&"[object Function]"==={}.toString.call(t)}function I(t,e){if(1!==t.nodeType)return[];var n=t.ownerDocument.defaultView.getComputedStyle(t,null);return e?n[e]:n}function O(t){return"HTML"===t.nodeName?t:t.parentNode||t.host}function x(t){if(!t)return document.body;switch(t.nodeName){case"HTML":case"BODY":return t.ownerDocument.body;case"#document":return t.body}var e=I(t),n=e.overflow,i=e.overflowX,o=e.overflowY;return/(auto|scroll|overlay)/.test(n+o+i)?t:x(O(t))}function j(t){return t&&t.referenceNode?t.referenceNode:t}var L=N&&!(!window.MSInputMethodContext||!document.documentMode),P=N&&/MSIE 10/.test(navigator.userAgent);function F(t){return 11===t?L:10===t?P:L||P}function R(t){if(!t)return document.documentElement;for(var e=F(10)?document.body:null,n=t.offsetParent||null;n===e&&t.nextElementSibling;)n=(t=t.nextElementSibling).offsetParent;var i=n&&n.nodeName;return i&&"BODY"!==i&&"HTML"!==i?-1!==["TH","TD","TABLE"].indexOf(n.nodeName)&&"static"===I(n,"position")?R(n):n:t?t.ownerDocument.documentElement:document.documentElement}function H(t){return null!==t.parentNode?H(t.parentNode):t}function M(t,e){if(!(t&&t.nodeType&&e&&e.nodeType))return document.documentElement;var n=t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING,i=n?t:e,o=n?e:t,r=document.createRange();r.setStart(i,0),r.setEnd(o,0);var a,s,l=r.commonAncestorContainer;if(t!==l&&e!==l||i.contains(o))return"BODY"===(s=(a=l).nodeName)||"HTML"!==s&&R(a.firstElementChild)!==a?R(l):l;var u=H(t);return u.host?M(u.host,e):M(t,H(e).host)}function q(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"top",n="top"===e?"scrollTop":"scrollLeft",i=t.nodeName;if("BODY"===i||"HTML"===i){var o=t.ownerDocument.documentElement,r=t.ownerDocument.scrollingElement||o;return r[n]}return t[n]}function B(t,e){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=q(e,"top"),o=q(e,"left"),r=n?-1:1;return t.top+=i*r,t.bottom+=i*r,t.left+=o*r,t.right+=o*r,t}function Q(t,e){var n="x"===e?"Left":"Top",i="Left"===n?"Right":"Bottom";return parseFloat(t["border"+n+"Width"])+parseFloat(t["border"+i+"Width"])}function W(t,e,n,i){return Math.max(e["offset"+t],e["scroll"+t],n["client"+t],n["offset"+t],n["scroll"+t],F(10)?parseInt(n["offset"+t])+parseInt(i["margin"+("Height"===t?"Top":"Left")])+parseInt(i["margin"+("Height"===t?"Bottom":"Right")]):0)}function U(t){var e=t.body,n=t.documentElement,i=F(10)&&getComputedStyle(n);return{height:W("Height",e,n,i),width:W("Width",e,n,i)}}var V=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},Y=function(){function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,n,i){return n&&t(e.prototype,n),i&&t(e,i),e}}(),z=function(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t},X=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])}return t};function K(t){return X({},t,{right:t.left+t.width,bottom:t.top+t.height})}function G(t){var e={};try{if(F(10)){e=t.getBoundingClientRect();var n=q(t,"top"),i=q(t,"left");e.top+=n,e.left+=i,e.bottom+=n,e.right+=i}else e=t.getBoundingClientRect()}catch(t){}var o={left:e.left,top:e.top,width:e.right-e.left,height:e.bottom-e.top},r="HTML"===t.nodeName?U(t.ownerDocument):{},a=r.width||t.clientWidth||o.width,s=r.height||t.clientHeight||o.height,l=t.offsetWidth-a,u=t.offsetHeight-s;if(l||u){var f=I(t);l-=Q(f,"x"),u-=Q(f,"y"),o.width-=l,o.height-=u}return K(o)}function $(t,e){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=F(10),o="HTML"===e.nodeName,r=G(t),a=G(e),s=x(t),l=I(e),u=parseFloat(l.borderTopWidth),f=parseFloat(l.borderLeftWidth);n&&o&&(a.top=Math.max(a.top,0),a.left=Math.max(a.left,0));var d=K({top:r.top-a.top-u,left:r.left-a.left-f,width:r.width,height:r.height});if(d.marginTop=0,d.marginLeft=0,!i&&o){var c=parseFloat(l.marginTop),h=parseFloat(l.marginLeft);d.top-=u-c,d.bottom-=u-c,d.left-=f-h,d.right-=f-h,d.marginTop=c,d.marginLeft=h}return(i&&!n?e.contains(s):e===s&&"BODY"!==s.nodeName)&&(d=B(d,e)),d}function J(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=t.ownerDocument.documentElement,i=$(t,n),o=Math.max(n.clientWidth,window.innerWidth||0),r=Math.max(n.clientHeight,window.innerHeight||0),a=e?0:q(n),s=e?0:q(n,"left"),l={top:a-i.top+i.marginTop,left:s-i.left+i.marginLeft,width:o,height:r};return K(l)}function Z(t){var e=t.nodeName;if("BODY"===e||"HTML"===e)return!1;if("fixed"===I(t,"position"))return!0;var n=O(t);return!!n&&Z(n)}function tt(t){if(!t||!t.parentElement||F())return document.documentElement;for(var e=t.parentElement;e&&"none"===I(e,"transform");)e=e.parentElement;return e||document.documentElement}function et(t,e,n,i){var o=arguments.length>4&&void 0!==arguments[4]&&arguments[4],r={top:0,left:0},a=o?tt(t):M(t,j(e));if("viewport"===i)r=J(a,o);else{var s=void 0;"scrollParent"===i?"BODY"===(s=x(O(e))).nodeName&&(s=t.ownerDocument.documentElement):s="window"===i?t.ownerDocument.documentElement:i;var l=$(s,a,o);if("HTML"!==s.nodeName||Z(a))r=l;else{var u=U(t.ownerDocument),f=u.height,d=u.width;r.top+=l.top-l.marginTop,r.bottom=f+l.top,r.left+=l.left-l.marginLeft,r.right=d+l.left}}var c="number"==typeof(n=n||0);return r.left+=c?n:n.left||0,r.top+=c?n:n.top||0,r.right-=c?n:n.right||0,r.bottom-=c?n:n.bottom||0,r}function nt(t){return t.width*t.height}function it(t,e,n,i,o){var r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0;if(-1===t.indexOf("auto"))return t;var a=et(n,i,r,o),s={top:{width:a.width,height:e.top-a.top},right:{width:a.right-e.right,height:a.height},bottom:{width:a.width,height:a.bottom-e.bottom},left:{width:e.left-a.left,height:a.height}},l=Object.keys(s).map((function(t){return X({key:t},s[t],{area:nt(s[t])})})).sort((function(t,e){return e.area-t.area})),u=l.filter((function(t){var e=t.width,i=t.height;return e>=n.clientWidth&&i>=n.clientHeight})),f=u.length>0?u[0].key:l[0].key,d=t.split("-")[1];return f+(d?"-"+d:"")}function ot(t,e,n){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,o=i?tt(e):M(e,j(n));return $(n,o,i)}function rt(t){var e=t.ownerDocument.defaultView.getComputedStyle(t),n=parseFloat(e.marginTop||0)+parseFloat(e.marginBottom||0),i=parseFloat(e.marginLeft||0)+parseFloat(e.marginRight||0);return{width:t.offsetWidth+i,height:t.offsetHeight+n}}function at(t){var e={left:"right",right:"left",bottom:"top",top:"bottom"};return t.replace(/left|right|bottom|top/g,(function(t){return e[t]}))}function st(t,e,n){n=n.split("-")[0];var i=rt(t),o={width:i.width,height:i.height},r=-1!==["right","left"].indexOf(n),a=r?"top":"left",s=r?"left":"top",l=r?"height":"width",u=r?"width":"height";return o[a]=e[a]+e[l]/2-i[l]/2,o[s]=n===s?e[s]-i[u]:e[at(s)],o}function lt(t,e){return Array.prototype.find?t.find(e):t.filter(e)[0]}function ut(t,e,n){return(void 0===n?t:t.slice(0,function(t,e,n){if(Array.prototype.findIndex)return t.findIndex((function(t){return t[e]===n}));var i=lt(t,(function(t){return t[e]===n}));return t.indexOf(i)}(t,"name",n))).forEach((function(t){t.function&&console.warn("`modifier.function` is deprecated, use `modifier.fn`!");var n=t.function||t.fn;t.enabled&&A(n)&&(e.offsets.popper=K(e.offsets.popper),e.offsets.reference=K(e.offsets.reference),e=n(e,t))})),e}function ft(){if(!this.state.isDestroyed){var t={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};t.offsets.reference=ot(this.state,this.popper,this.reference,this.options.positionFixed),t.placement=it(this.options.placement,t.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),t.originalPlacement=t.placement,t.positionFixed=this.options.positionFixed,t.offsets.popper=st(this.popper,t.offsets.reference,t.placement),t.offsets.popper.position=this.options.positionFixed?"fixed":"absolute",t=ut(this.modifiers,t),this.state.isCreated?this.options.onUpdate(t):(this.state.isCreated=!0,this.options.onCreate(t))}}function dt(t,e){return t.some((function(t){var n=t.name;return t.enabled&&n===e}))}function ct(t){for(var e=[!1,"ms","Webkit","Moz","O"],n=t.charAt(0).toUpperCase()+t.slice(1),i=0;i<e.length;i++){var o=e[i],r=o?""+o+n:t;if("undefined"!=typeof document.body.style[r])return r}return null}function ht(){return this.state.isDestroyed=!0,dt(this.modifiers,"applyStyle")&&(this.popper.removeAttribute("x-placement"),this.popper.style.position="",this.popper.style.top="",this.popper.style.left="",this.popper.style.right="",this.popper.style.bottom="",this.popper.style.willChange="",this.popper.style[ct("transform")]=""),this.disableEventListeners(),this.options.removeOnDestroy&&this.popper.parentNode.removeChild(this.popper),this}function pt(t){var e=t.ownerDocument;return e?e.defaultView:window}function mt(t,e,n,i){n.updateBound=i,pt(t).addEventListener("resize",n.updateBound,{passive:!0});var o=x(t);return function t(e,n,i,o){var r="BODY"===e.nodeName,a=r?e.ownerDocument.defaultView:e;a.addEventListener(n,i,{passive:!0}),r||t(x(a.parentNode),n,i,o),o.push(a)}(o,"scroll",n.updateBound,n.scrollParents),n.scrollElement=o,n.eventsEnabled=!0,n}function gt(){this.state.eventsEnabled||(this.state=mt(this.reference,this.options,this.state,this.scheduleUpdate))}function vt(){var t,e;this.state.eventsEnabled&&(cancelAnimationFrame(this.scheduleUpdate),this.state=(t=this.reference,e=this.state,pt(t).removeEventListener("resize",e.updateBound),e.scrollParents.forEach((function(t){t.removeEventListener("scroll",e.updateBound)})),e.updateBound=null,e.scrollParents=[],e.scrollElement=null,e.eventsEnabled=!1,e))}function _t(t){return""!==t&&!isNaN(parseFloat(t))&&isFinite(t)}function bt(t,e){Object.keys(e).forEach((function(n){var i="";-1!==["width","height","top","right","bottom","left"].indexOf(n)&&_t(e[n])&&(i="px"),t.style[n]=e[n]+i}))}var yt=N&&/Firefox/i.test(navigator.userAgent);function wt(t,e,n){var i=lt(t,(function(t){return t.name===e})),o=!!i&&t.some((function(t){return t.name===n&&t.enabled&&t.order<i.order}));if(!o){var r="`"+e+"`",a="`"+n+"`";console.warn(a+" modifier is required by "+r+" modifier in order to work, be sure to include it before "+r+"!")}return o}var Et=["auto-start","auto","auto-end","top-start","top","top-end","right-start","right","right-end","bottom-end","bottom","bottom-start","left-end","left","left-start"],Tt=Et.slice(3);function Ct(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=Tt.indexOf(t),i=Tt.slice(n+1).concat(Tt.slice(0,n));return e?i.reverse():i}var St="flip",Nt="clockwise",Dt="counterclockwise";function kt(t,e,n,i){var o=[0,0],r=-1!==["right","left"].indexOf(i),a=t.split(/(\+|\-)/).map((function(t){return t.trim()})),s=a.indexOf(lt(a,(function(t){return-1!==t.search(/,|\s/)})));a[s]&&-1===a[s].indexOf(",")&&console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");var l=/\s*,\s*|\s+/,u=-1!==s?[a.slice(0,s).concat([a[s].split(l)[0]]),[a[s].split(l)[1]].concat(a.slice(s+1))]:[a];return(u=u.map((function(t,i){var o=(1===i?!r:r)?"height":"width",a=!1;return t.reduce((function(t,e){return""===t[t.length-1]&&-1!==["+","-"].indexOf(e)?(t[t.length-1]=e,a=!0,t):a?(t[t.length-1]+=e,a=!1,t):t.concat(e)}),[]).map((function(t){return function(t,e,n,i){var o=t.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),r=+o[1],a=o[2];if(!r)return t;if(0===a.indexOf("%")){var s=void 0;switch(a){case"%p":s=n;break;case"%":case"%r":default:s=i}return K(s)[e]/100*r}if("vh"===a||"vw"===a)return("vh"===a?Math.max(document.documentElement.clientHeight,window.innerHeight||0):Math.max(document.documentElement.clientWidth,window.innerWidth||0))/100*r;return r}(t,o,e,n)}))}))).forEach((function(t,e){t.forEach((function(n,i){_t(n)&&(o[e]+=n*("-"===t[i-1]?-1:1))}))})),o}var At={placement:"bottom",positionFixed:!1,eventsEnabled:!0,removeOnDestroy:!1,onCreate:function(){},onUpdate:function(){},modifiers:{shift:{order:100,enabled:!0,fn:function(t){var e=t.placement,n=e.split("-")[0],i=e.split("-")[1];if(i){var o=t.offsets,r=o.reference,a=o.popper,s=-1!==["bottom","top"].indexOf(n),l=s?"left":"top",u=s?"width":"height",f={start:z({},l,r[l]),end:z({},l,r[l]+r[u]-a[u])};t.offsets.popper=X({},a,f[i])}return t}},offset:{order:200,enabled:!0,fn:function(t,e){var n=e.offset,i=t.placement,o=t.offsets,r=o.popper,a=o.reference,s=i.split("-")[0],l=void 0;return l=_t(+n)?[+n,0]:kt(n,r,a,s),"left"===s?(r.top+=l[0],r.left-=l[1]):"right"===s?(r.top+=l[0],r.left+=l[1]):"top"===s?(r.left+=l[0],r.top-=l[1]):"bottom"===s&&(r.left+=l[0],r.top+=l[1]),t.popper=r,t},offset:0},preventOverflow:{order:300,enabled:!0,fn:function(t,e){var n=e.boundariesElement||R(t.instance.popper);t.instance.reference===n&&(n=R(n));var i=ct("transform"),o=t.instance.popper.style,r=o.top,a=o.left,s=o[i];o.top="",o.left="",o[i]="";var l=et(t.instance.popper,t.instance.reference,e.padding,n,t.positionFixed);o.top=r,o.left=a,o[i]=s,e.boundaries=l;var u=e.priority,f=t.offsets.popper,d={primary:function(t){var n=f[t];return f[t]<l[t]&&!e.escapeWithReference&&(n=Math.max(f[t],l[t])),z({},t,n)},secondary:function(t){var n="right"===t?"left":"top",i=f[n];return f[t]>l[t]&&!e.escapeWithReference&&(i=Math.min(f[n],l[t]-("right"===t?f.width:f.height))),z({},n,i)}};return u.forEach((function(t){var e=-1!==["left","top"].indexOf(t)?"primary":"secondary";f=X({},f,d[e](t))})),t.offsets.popper=f,t},priority:["left","right","top","bottom"],padding:5,boundariesElement:"scrollParent"},keepTogether:{order:400,enabled:!0,fn:function(t){var e=t.offsets,n=e.popper,i=e.reference,o=t.placement.split("-")[0],r=Math.floor,a=-1!==["top","bottom"].indexOf(o),s=a?"right":"bottom",l=a?"left":"top",u=a?"width":"height";return n[s]<r(i[l])&&(t.offsets.popper[l]=r(i[l])-n[u]),n[l]>r(i[s])&&(t.offsets.popper[l]=r(i[s])),t}},arrow:{order:500,enabled:!0,fn:function(t,e){var n;if(!wt(t.instance.modifiers,"arrow","keepTogether"))return t;var i=e.element;if("string"==typeof i){if(!(i=t.instance.popper.querySelector(i)))return t}else if(!t.instance.popper.contains(i))return console.warn("WARNING: `arrow.element` must be child of its popper element!"),t;var o=t.placement.split("-")[0],r=t.offsets,a=r.popper,s=r.reference,l=-1!==["left","right"].indexOf(o),u=l?"height":"width",f=l?"Top":"Left",d=f.toLowerCase(),c=l?"left":"top",h=l?"bottom":"right",p=rt(i)[u];s[h]-p<a[d]&&(t.offsets.popper[d]-=a[d]-(s[h]-p)),s[d]+p>a[h]&&(t.offsets.popper[d]+=s[d]+p-a[h]),t.offsets.popper=K(t.offsets.popper);var m=s[d]+s[u]/2-p/2,g=I(t.instance.popper),v=parseFloat(g["margin"+f]),_=parseFloat(g["border"+f+"Width"]),b=m-t.offsets.popper[d]-v-_;return b=Math.max(Math.min(a[u]-p,b),0),t.arrowElement=i,t.offsets.arrow=(z(n={},d,Math.round(b)),z(n,c,""),n),t},element:"[x-arrow]"},flip:{order:600,enabled:!0,fn:function(t,e){if(dt(t.instance.modifiers,"inner"))return t;if(t.flipped&&t.placement===t.originalPlacement)return t;var n=et(t.instance.popper,t.instance.reference,e.padding,e.boundariesElement,t.positionFixed),i=t.placement.split("-")[0],o=at(i),r=t.placement.split("-")[1]||"",a=[];switch(e.behavior){case St:a=[i,o];break;case Nt:a=Ct(i);break;case Dt:a=Ct(i,!0);break;default:a=e.behavior}return a.forEach((function(s,l){if(i!==s||a.length===l+1)return t;i=t.placement.split("-")[0],o=at(i);var u=t.offsets.popper,f=t.offsets.reference,d=Math.floor,c="left"===i&&d(u.right)>d(f.left)||"right"===i&&d(u.left)<d(f.right)||"top"===i&&d(u.bottom)>d(f.top)||"bottom"===i&&d(u.top)<d(f.bottom),h=d(u.left)<d(n.left),p=d(u.right)>d(n.right),m=d(u.top)<d(n.top),g=d(u.bottom)>d(n.bottom),v="left"===i&&h||"right"===i&&p||"top"===i&&m||"bottom"===i&&g,_=-1!==["top","bottom"].indexOf(i),b=!!e.flipVariations&&(_&&"start"===r&&h||_&&"end"===r&&p||!_&&"start"===r&&m||!_&&"end"===r&&g),y=!!e.flipVariationsByContent&&(_&&"start"===r&&p||_&&"end"===r&&h||!_&&"start"===r&&g||!_&&"end"===r&&m),w=b||y;(c||v||w)&&(t.flipped=!0,(c||v)&&(i=a[l+1]),w&&(r=function(t){return"end"===t?"start":"start"===t?"end":t}(r)),t.placement=i+(r?"-"+r:""),t.offsets.popper=X({},t.offsets.popper,st(t.instance.popper,t.offsets.reference,t.placement)),t=ut(t.instance.modifiers,t,"flip"))})),t},behavior:"flip",padding:5,boundariesElement:"viewport",flipVariations:!1,flipVariationsByContent:!1},inner:{order:700,enabled:!1,fn:function(t){var e=t.placement,n=e.split("-")[0],i=t.offsets,o=i.popper,r=i.reference,a=-1!==["left","right"].indexOf(n),s=-1===["top","left"].indexOf(n);return o[a?"left":"top"]=r[n]-(s?o[a?"width":"height"]:0),t.placement=at(e),t.offsets.popper=K(o),t}},hide:{order:800,enabled:!0,fn:function(t){if(!wt(t.instance.modifiers,"hide","preventOverflow"))return t;var e=t.offsets.reference,n=lt(t.instance.modifiers,(function(t){return"preventOverflow"===t.name})).boundaries;if(e.bottom<n.top||e.left>n.right||e.top>n.bottom||e.right<n.left){if(!0===t.hide)return t;t.hide=!0,t.attributes["x-out-of-boundaries"]=""}else{if(!1===t.hide)return t;t.hide=!1,t.attributes["x-out-of-boundaries"]=!1}return t}},computeStyle:{order:850,enabled:!0,fn:function(t,e){var n=e.x,i=e.y,o=t.offsets.popper,r=lt(t.instance.modifiers,(function(t){return"applyStyle"===t.name})).gpuAcceleration;void 0!==r&&console.warn("WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!");var a=void 0!==r?r:e.gpuAcceleration,s=R(t.instance.popper),l=G(s),u={position:o.position},f=function(t,e){var n=t.offsets,i=n.popper,o=n.reference,r=Math.round,a=Math.floor,s=function(t){return t},l=r(o.width),u=r(i.width),f=-1!==["left","right"].indexOf(t.placement),d=-1!==t.placement.indexOf("-"),c=e?f||d||l%2==u%2?r:a:s,h=e?r:s;return{left:c(l%2==1&&u%2==1&&!d&&e?i.left-1:i.left),top:h(i.top),bottom:h(i.bottom),right:c(i.right)}}(t,window.devicePixelRatio<2||!yt),d="bottom"===n?"top":"bottom",c="right"===i?"left":"right",h=ct("transform"),p=void 0,m=void 0;if(m="bottom"===d?"HTML"===s.nodeName?-s.clientHeight+f.bottom:-l.height+f.bottom:f.top,p="right"===c?"HTML"===s.nodeName?-s.clientWidth+f.right:-l.width+f.right:f.left,a&&h)u[h]="translate3d("+p+"px, "+m+"px, 0)",u[d]=0,u[c]=0,u.willChange="transform";else{var g="bottom"===d?-1:1,v="right"===c?-1:1;u[d]=m*g,u[c]=p*v,u.willChange=d+", "+c}var _={"x-placement":t.placement};return t.attributes=X({},_,t.attributes),t.styles=X({},u,t.styles),t.arrowStyles=X({},t.offsets.arrow,t.arrowStyles),t},gpuAcceleration:!0,x:"bottom",y:"right"},applyStyle:{order:900,enabled:!0,fn:function(t){var e,n;return bt(t.instance.popper,t.styles),e=t.instance.popper,n=t.attributes,Object.keys(n).forEach((function(t){!1!==n[t]?e.setAttribute(t,n[t]):e.removeAttribute(t)})),t.arrowElement&&Object.keys(t.arrowStyles).length&&bt(t.arrowElement,t.arrowStyles),t},onLoad:function(t,e,n,i,o){var r=ot(o,e,t,n.positionFixed),a=it(n.placement,r,e,t,n.modifiers.flip.boundariesElement,n.modifiers.flip.padding);return e.setAttribute("x-placement",a),bt(e,{position:n.positionFixed?"fixed":"absolute"}),n},gpuAcceleration:void 0}}},It=function(){function t(e,n){var i=this,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};V(this,t),this.scheduleUpdate=function(){return requestAnimationFrame(i.update)},this.update=k(this.update.bind(this)),this.options=X({},t.Defaults,o),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=e&&e.jquery?e[0]:e,this.popper=n&&n.jquery?n[0]:n,this.options.modifiers={},Object.keys(X({},t.Defaults.modifiers,o.modifiers)).forEach((function(e){i.options.modifiers[e]=X({},t.Defaults.modifiers[e]||{},o.modifiers?o.modifiers[e]:{})})),this.modifiers=Object.keys(this.options.modifiers).map((function(t){return X({name:t},i.options.modifiers[t])})).sort((function(t,e){return t.order-e.order})),this.modifiers.forEach((function(t){t.enabled&&A(t.onLoad)&&t.onLoad(i.reference,i.popper,i.options,t,i.state)})),this.update();var r=this.options.eventsEnabled;r&&this.enableEventListeners(),this.state.eventsEnabled=r}return Y(t,[{key:"update",value:function(){return ft.call(this)}},{key:"destroy",value:function(){return ht.call(this)}},{key:"enableEventListeners",value:function(){return gt.call(this)}},{key:"disableEventListeners",value:function(){return vt.call(this)}}]),t}();It.Utils=("undefined"!=typeof window?window:global).PopperUtils,It.placements=Et,It.Defaults=At;var Ot="dropdown",xt=i.default.fn[Ot],jt=new RegExp("38|40|27"),Lt={offset:0,flip:!0,boundary:"scrollParent",reference:"toggle",display:"dynamic",popperConfig:null},Pt={offset:"(number|string|function)",flip:"boolean",boundary:"(string|element)",reference:"(string|element)",display:"string",popperConfig:"(null|object)"},Ft=function(){function t(t,e){this._element=t,this._popper=null,this._config=this._getConfig(e),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar(),this._addEventListeners()}var e=t.prototype;return e.toggle=function(){if(!this._element.disabled&&!i.default(this._element).hasClass("disabled")){var e=i.default(this._menu).hasClass("show");t._clearMenus(),e||this.show(!0)}},e.show=function(e){if(void 0===e&&(e=!1),!(this._element.disabled||i.default(this._element).hasClass("disabled")||i.default(this._menu).hasClass("show"))){var n={relatedTarget:this._element},o=i.default.Event("show.bs.dropdown",n),r=t._getParentFromElement(this._element);if(i.default(r).trigger(o),!o.isDefaultPrevented()){if(!this._inNavbar&&e){if("undefined"==typeof It)throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");var a=this._element;"parent"===this._config.reference?a=r:l.isElement(this._config.reference)&&(a=this._config.reference,"undefined"!=typeof this._config.reference.jquery&&(a=this._config.reference[0])),"scrollParent"!==this._config.boundary&&i.default(r).addClass("position-static"),this._popper=new It(a,this._menu,this._getPopperConfig())}"ontouchstart"in document.documentElement&&0===i.default(r).closest(".navbar-nav").length&&i.default(document.body).children().on("mouseover",null,i.default.noop),this._element.focus(),this._element.setAttribute("aria-expanded",!0),i.default(this._menu).toggleClass("show"),i.default(r).toggleClass("show").trigger(i.default.Event("shown.bs.dropdown",n))}}},e.hide=function(){if(!this._element.disabled&&!i.default(this._element).hasClass("disabled")&&i.default(this._menu).hasClass("show")){var e={relatedTarget:this._element},n=i.default.Event("hide.bs.dropdown",e),o=t._getParentFromElement(this._element);i.default(o).trigger(n),n.isDefaultPrevented()||(this._popper&&this._popper.destroy(),i.default(this._menu).toggleClass("show"),i.default(o).toggleClass("show").trigger(i.default.Event("hidden.bs.dropdown",e)))}},e.dispose=function(){i.default.removeData(this._element,"bs.dropdown"),i.default(this._element).off(".bs.dropdown"),this._element=null,this._menu=null,null!==this._popper&&(this._popper.destroy(),this._popper=null)},e.update=function(){this._inNavbar=this._detectNavbar(),null!==this._popper&&this._popper.scheduleUpdate()},e._addEventListeners=function(){var t=this;i.default(this._element).on("click.bs.dropdown",(function(e){e.preventDefault(),e.stopPropagation(),t.toggle()}))},e._getConfig=function(t){return t=a({},this.constructor.Default,i.default(this._element).data(),t),l.typeCheckConfig(Ot,t,this.constructor.DefaultType),t},e._getMenuElement=function(){if(!this._menu){var e=t._getParentFromElement(this._element);e&&(this._menu=e.querySelector(".dropdown-menu"))}return this._menu},e._getPlacement=function(){var t=i.default(this._element.parentNode),e="bottom-start";return t.hasClass("dropup")?e=i.default(this._menu).hasClass("dropdown-menu-right")?"top-end":"top-start":t.hasClass("dropright")?e="right-start":t.hasClass("dropleft")?e="left-start":i.default(this._menu).hasClass("dropdown-menu-right")&&(e="bottom-end"),e},e._detectNavbar=function(){return i.default(this._element).closest(".navbar").length>0},e._getOffset=function(){var t=this,e={};return"function"==typeof this._config.offset?e.fn=function(e){return e.offsets=a({},e.offsets,t._config.offset(e.offsets,t._element)||{}),e}:e.offset=this._config.offset,e},e._getPopperConfig=function(){var t={placement:this._getPlacement(),modifiers:{offset:this._getOffset(),flip:{enabled:this._config.flip},preventOverflow:{boundariesElement:this._config.boundary}}};return"static"===this._config.display&&(t.modifiers.applyStyle={enabled:!1}),a({},t,this._config.popperConfig)},t._jQueryInterface=function(e){return this.each((function(){var n=i.default(this).data("bs.dropdown");if(n||(n=new t(this,"object"==typeof e?e:null),i.default(this).data("bs.dropdown",n)),"string"==typeof e){if("undefined"==typeof n[e])throw new TypeError('No method named "'+e+'"');n[e]()}}))},t._clearMenus=function(e){if(!e||3!==e.which&&("keyup"!==e.type||9===e.which))for(var n=[].slice.call(document.querySelectorAll('[data-toggle="dropdown"]')),o=0,r=n.length;o<r;o++){var a=t._getParentFromElement(n[o]),s=i.default(n[o]).data("bs.dropdown"),l={relatedTarget:n[o]};if(e&&"click"===e.type&&(l.clickEvent=e),s){var u=s._menu;if(i.default(a).hasClass("show")&&!(e&&("click"===e.type&&/input|textarea/i.test(e.target.tagName)||"keyup"===e.type&&9===e.which)&&i.default.contains(a,e.target))){var f=i.default.Event("hide.bs.dropdown",l);i.default(a).trigger(f),f.isDefaultPrevented()||("ontouchstart"in document.documentElement&&i.default(document.body).children().off("mouseover",null,i.default.noop),n[o].setAttribute("aria-expanded","false"),s._popper&&s._popper.destroy(),i.default(u).removeClass("show"),i.default(a).removeClass("show").trigger(i.default.Event("hidden.bs.dropdown",l)))}}}},t._getParentFromElement=function(t){var e,n=l.getSelectorFromElement(t);return n&&(e=document.querySelector(n)),e||t.parentNode},t._dataApiKeydownHandler=function(e){if(!(/input|textarea/i.test(e.target.tagName)?32===e.which||27!==e.which&&(40!==e.which&&38!==e.which||i.default(e.target).closest(".dropdown-menu").length):!jt.test(e.which))&&!this.disabled&&!i.default(this).hasClass("disabled")){var n=t._getParentFromElement(this),o=i.default(n).hasClass("show");if(o||27!==e.which){if(e.preventDefault(),e.stopPropagation(),!o||27===e.which||32===e.which)return 27===e.which&&i.default(n.querySelector('[data-toggle="dropdown"]')).trigger("focus"),void i.default(this).trigger("click");var r=[].slice.call(n.querySelectorAll(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)")).filter((function(t){return i.default(t).is(":visible")}));if(0!==r.length){var a=r.indexOf(e.target);38===e.which&&a>0&&a--,40===e.which&&a<r.length-1&&a++,a<0&&(a=0),r[a].focus()}}}},r(t,null,[{key:"VERSION",get:function(){return"4.6.0"}},{key:"Default",get:function(){return Lt}},{key:"DefaultType",get:function(){return Pt}}]),t}();i.default(document).on("keydown.bs.dropdown.data-api",'[data-toggle="dropdown"]',Ft._dataApiKeydownHandler).on("keydown.bs.dropdown.data-api",".dropdown-menu",Ft._dataApiKeydownHandler).on("click.bs.dropdown.data-api keyup.bs.dropdown.data-api",Ft._clearMenus).on("click.bs.dropdown.data-api",'[data-toggle="dropdown"]',(function(t){t.preventDefault(),t.stopPropagation(),Ft._jQueryInterface.call(i.default(this),"toggle")})).on("click.bs.dropdown.data-api",".dropdown form",(function(t){t.stopPropagation()})),i.default.fn[Ot]=Ft._jQueryInterface,i.default.fn[Ot].Constructor=Ft,i.default.fn[Ot].noConflict=function(){return i.default.fn[Ot]=xt,Ft._jQueryInterface};var Rt=i.default.fn.modal,Ht={backdrop:!0,keyboard:!0,focus:!0,show:!0},Mt={backdrop:"(boolean|string)",keyboard:"boolean",focus:"boolean",show:"boolean"},qt=function(){function t(t,e){this._config=this._getConfig(e),this._element=t,this._dialog=t.querySelector(".modal-dialog"),this._backdrop=null,this._isShown=!1,this._isBodyOverflowing=!1,this._ignoreBackdropClick=!1,this._isTransitioning=!1,this._scrollbarWidth=0}var e=t.prototype;return e.toggle=function(t){return this._isShown?this.hide():this.show(t)},e.show=function(t){var e=this;if(!this._isShown&&!this._isTransitioning){i.default(this._element).hasClass("fade")&&(this._isTransitioning=!0);var n=i.default.Event("show.bs.modal",{relatedTarget:t});i.default(this._element).trigger(n),this._isShown||n.isDefaultPrevented()||(this._isShown=!0,this._checkScrollbar(),this._setScrollbar(),this._adjustDialog(),this._setEscapeEvent(),this._setResizeEvent(),i.default(this._element).on("click.dismiss.bs.modal",'[data-dismiss="modal"]',(function(t){return e.hide(t)})),i.default(this._dialog).on("mousedown.dismiss.bs.modal",(function(){i.default(e._element).one("mouseup.dismiss.bs.modal",(function(t){i.default(t.target).is(e._element)&&(e._ignoreBackdropClick=!0)}))})),this._showBackdrop((function(){return e._showElement(t)})))}},e.hide=function(t){var e=this;if(t&&t.preventDefault(),this._isShown&&!this._isTransitioning){var n=i.default.Event("hide.bs.modal");if(i.default(this._element).trigger(n),this._isShown&&!n.isDefaultPrevented()){this._isShown=!1;var o=i.default(this._element).hasClass("fade");if(o&&(this._isTransitioning=!0),this._setEscapeEvent(),this._setResizeEvent(),i.default(document).off("focusin.bs.modal"),i.default(this._element).removeClass("show"),i.default(this._element).off("click.dismiss.bs.modal"),i.default(this._dialog).off("mousedown.dismiss.bs.modal"),o){var r=l.getTransitionDurationFromElement(this._element);i.default(this._element).one(l.TRANSITION_END,(function(t){return e._hideModal(t)})).emulateTransitionEnd(r)}else this._hideModal()}}},e.dispose=function(){[window,this._element,this._dialog].forEach((function(t){return i.default(t).off(".bs.modal")})),i.default(document).off("focusin.bs.modal"),i.default.removeData(this._element,"bs.modal"),this._config=null,this._element=null,this._dialog=null,this._backdrop=null,this._isShown=null,this._isBodyOverflowing=null,this._ignoreBackdropClick=null,this._isTransitioning=null,this._scrollbarWidth=null},e.handleUpdate=function(){this._adjustDialog()},e._getConfig=function(t){return t=a({},Ht,t),l.typeCheckConfig("modal",t,Mt),t},e._triggerBackdropTransition=function(){var t=this,e=i.default.Event("hidePrevented.bs.modal");if(i.default(this._element).trigger(e),!e.isDefaultPrevented()){var n=this._element.scrollHeight>document.documentElement.clientHeight;n||(this._element.style.overflowY="hidden"),this._element.classList.add("modal-static");var o=l.getTransitionDurationFromElement(this._dialog);i.default(this._element).off(l.TRANSITION_END),i.default(this._element).one(l.TRANSITION_END,(function(){t._element.classList.remove("modal-static"),n||i.default(t._element).one(l.TRANSITION_END,(function(){t._element.style.overflowY=""})).emulateTransitionEnd(t._element,o)})).emulateTransitionEnd(o),this._element.focus()}},e._showElement=function(t){var e=this,n=i.default(this._element).hasClass("fade"),o=this._dialog?this._dialog.querySelector(".modal-body"):null;this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.appendChild(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),i.default(this._dialog).hasClass("modal-dialog-scrollable")&&o?o.scrollTop=0:this._element.scrollTop=0,n&&l.reflow(this._element),i.default(this._element).addClass("show"),this._config.focus&&this._enforceFocus();var r=i.default.Event("shown.bs.modal",{relatedTarget:t}),a=function(){e._config.focus&&e._element.focus(),e._isTransitioning=!1,i.default(e._element).trigger(r)};if(n){var s=l.getTransitionDurationFromElement(this._dialog);i.default(this._dialog).one(l.TRANSITION_END,a).emulateTransitionEnd(s)}else a()},e._enforceFocus=function(){var t=this;i.default(document).off("focusin.bs.modal").on("focusin.bs.modal",(function(e){document!==e.target&&t._element!==e.target&&0===i.default(t._element).has(e.target).length&&t._element.focus()}))},e._setEscapeEvent=function(){var t=this;this._isShown?i.default(this._element).on("keydown.dismiss.bs.modal",(function(e){t._config.keyboard&&27===e.which?(e.preventDefault(),t.hide()):t._config.keyboard||27!==e.which||t._triggerBackdropTransition()})):this._isShown||i.default(this._element).off("keydown.dismiss.bs.modal")},e._setResizeEvent=function(){var t=this;this._isShown?i.default(window).on("resize.bs.modal",(function(e){return t.handleUpdate(e)})):i.default(window).off("resize.bs.modal")},e._hideModal=function(){var t=this;this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._showBackdrop((function(){i.default(document.body).removeClass("modal-open"),t._resetAdjustments(),t._resetScrollbar(),i.default(t._element).trigger("hidden.bs.modal")}))},e._removeBackdrop=function(){this._backdrop&&(i.default(this._backdrop).remove(),this._backdrop=null)},e._showBackdrop=function(t){var e=this,n=i.default(this._element).hasClass("fade")?"fade":"";if(this._isShown&&this._config.backdrop){if(this._backdrop=document.createElement("div"),this._backdrop.className="modal-backdrop",n&&this._backdrop.classList.add(n),i.default(this._backdrop).appendTo(document.body),i.default(this._element).on("click.dismiss.bs.modal",(function(t){e._ignoreBackdropClick?e._ignoreBackdropClick=!1:t.target===t.currentTarget&&("static"===e._config.backdrop?e._triggerBackdropTransition():e.hide())})),n&&l.reflow(this._backdrop),i.default(this._backdrop).addClass("show"),!t)return;if(!n)return void t();var o=l.getTransitionDurationFromElement(this._backdrop);i.default(this._backdrop).one(l.TRANSITION_END,t).emulateTransitionEnd(o)}else if(!this._isShown&&this._backdrop){i.default(this._backdrop).removeClass("show");var r=function(){e._removeBackdrop(),t&&t()};if(i.default(this._element).hasClass("fade")){var a=l.getTransitionDurationFromElement(this._backdrop);i.default(this._backdrop).one(l.TRANSITION_END,r).emulateTransitionEnd(a)}else r()}else t&&t()},e._adjustDialog=function(){var t=this._element.scrollHeight>document.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},e._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},e._checkScrollbar=function(){var t=document.body.getBoundingClientRect();this._isBodyOverflowing=Math.round(t.left+t.right)<window.innerWidth,this._scrollbarWidth=this._getScrollbarWidth()},e._setScrollbar=function(){var t=this;if(this._isBodyOverflowing){var e=[].slice.call(document.querySelectorAll(".fixed-top, .fixed-bottom, .is-fixed, .sticky-top")),n=[].slice.call(document.querySelectorAll(".sticky-top"));i.default(e).each((function(e,n){var o=n.style.paddingRight,r=i.default(n).css("padding-right");i.default(n).data("padding-right",o).css("padding-right",parseFloat(r)+t._scrollbarWidth+"px")})),i.default(n).each((function(e,n){var o=n.style.marginRight,r=i.default(n).css("margin-right");i.default(n).data("margin-right",o).css("margin-right",parseFloat(r)-t._scrollbarWidth+"px")}));var o=document.body.style.paddingRight,r=i.default(document.body).css("padding-right");i.default(document.body).data("padding-right",o).css("padding-right",parseFloat(r)+this._scrollbarWidth+"px")}i.default(document.body).addClass("modal-open")},e._resetScrollbar=function(){var t=[].slice.call(document.querySelectorAll(".fixed-top, .fixed-bottom, .is-fixed, .sticky-top"));i.default(t).each((function(t,e){var n=i.default(e).data("padding-right");i.default(e).removeData("padding-right"),e.style.paddingRight=n||""}));var e=[].slice.call(document.querySelectorAll(".sticky-top"));i.default(e).each((function(t,e){var n=i.default(e).data("margin-right");"undefined"!=typeof n&&i.default(e).css("margin-right",n).removeData("margin-right")}));var n=i.default(document.body).data("padding-right");i.default(document.body).removeData("padding-right"),document.body.style.paddingRight=n||""},e._getScrollbarWidth=function(){var t=document.createElement("div");t.className="modal-scrollbar-measure",document.body.appendChild(t);var e=t.getBoundingClientRect().width-t.clientWidth;return document.body.removeChild(t),e},t._jQueryInterface=function(e,n){return this.each((function(){var o=i.default(this).data("bs.modal"),r=a({},Ht,i.default(this).data(),"object"==typeof e&&e?e:{});if(o||(o=new t(this,r),i.default(this).data("bs.modal",o)),"string"==typeof e){if("undefined"==typeof o[e])throw new TypeError('No method named "'+e+'"');o[e](n)}else r.show&&o.show(n)}))},r(t,null,[{key:"VERSION",get:function(){return"4.6.0"}},{key:"Default",get:function(){return Ht}}]),t}();i.default(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',(function(t){var e,n=this,o=l.getSelectorFromElement(this);o&&(e=document.querySelector(o));var r=i.default(e).data("bs.modal")?"toggle":a({},i.default(e).data(),i.default(this).data());"A"!==this.tagName&&"AREA"!==this.tagName||t.preventDefault();var s=i.default(e).one("show.bs.modal",(function(t){t.isDefaultPrevented()||s.one("hidden.bs.modal",(function(){i.default(n).is(":visible")&&n.focus()}))}));qt._jQueryInterface.call(i.default(e),r,this)})),i.default.fn.modal=qt._jQueryInterface,i.default.fn.modal.Constructor=qt,i.default.fn.modal.noConflict=function(){return i.default.fn.modal=Rt,qt._jQueryInterface};var Bt=["background","cite","href","itemtype","longdesc","poster","src","xlink:href"],Qt={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},Wt=/^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/gi,Ut=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i;function Vt(t,e,n){if(0===t.length)return t;if(n&&"function"==typeof n)return n(t);for(var i=(new window.DOMParser).parseFromString(t,"text/html"),o=Object.keys(e),r=[].slice.call(i.body.querySelectorAll("*")),a=function(t,n){var i=r[t],a=i.nodeName.toLowerCase();if(-1===o.indexOf(i.nodeName.toLowerCase()))return i.parentNode.removeChild(i),"continue";var s=[].slice.call(i.attributes),l=[].concat(e["*"]||[],e[a]||[]);s.forEach((function(t){(function(t,e){var n=t.nodeName.toLowerCase();if(-1!==e.indexOf(n))return-1===Bt.indexOf(n)||Boolean(t.nodeValue.match(Wt)||t.nodeValue.match(Ut));for(var i=e.filter((function(t){return t instanceof RegExp})),o=0,r=i.length;o<r;o++)if(n.match(i[o]))return!0;return!1})(t,l)||i.removeAttribute(t.nodeName)}))},s=0,l=r.length;s<l;s++)a(s);return i.body.innerHTML}var Yt="tooltip",zt=i.default.fn[Yt],Xt=new RegExp("(^|\\s)bs-tooltip\\S+","g"),Kt=["sanitize","whiteList","sanitizeFn"],Gt={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(number|string|function)",container:"(string|element|boolean)",fallbackPlacement:"(string|array)",boundary:"(string|element)",customClass:"(string|function)",sanitize:"boolean",sanitizeFn:"(null|function)",whiteList:"object",popperConfig:"(null|object)"},$t={AUTO:"auto",TOP:"top",RIGHT:"right",BOTTOM:"bottom",LEFT:"left"},Jt={animation:!0,template:'<div class="tooltip" role="tooltip"><div class="arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent",customClass:"",sanitize:!0,sanitizeFn:null,whiteList:Qt,popperConfig:null},Zt={HIDE:"hide.bs.tooltip",HIDDEN:"hidden.bs.tooltip",SHOW:"show.bs.tooltip",SHOWN:"shown.bs.tooltip",INSERTED:"inserted.bs.tooltip",CLICK:"click.bs.tooltip",FOCUSIN:"focusin.bs.tooltip",FOCUSOUT:"focusout.bs.tooltip",MOUSEENTER:"mouseenter.bs.tooltip",MOUSELEAVE:"mouseleave.bs.tooltip"},te=function(){function t(t,e){if("undefined"==typeof It)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}var e=t.prototype;return e.enable=function(){this._isEnabled=!0},e.disable=function(){this._isEnabled=!1},e.toggleEnabled=function(){this._isEnabled=!this._isEnabled},e.toggle=function(t){if(this._isEnabled)if(t){var e=this.constructor.DATA_KEY,n=i.default(t.currentTarget).data(e);n||(n=new this.constructor(t.currentTarget,this._getDelegateConfig()),i.default(t.currentTarget).data(e,n)),n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(i.default(this.getTipElement()).hasClass("show"))return void this._leave(null,this);this._enter(null,this)}},e.dispose=function(){clearTimeout(this._timeout),i.default.removeData(this.element,this.constructor.DATA_KEY),i.default(this.element).off(this.constructor.EVENT_KEY),i.default(this.element).closest(".modal").off("hide.bs.modal",this._hideModalHandler),this.tip&&i.default(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},e.show=function(){var t=this;if("none"===i.default(this.element).css("display"))throw new Error("Please use show on visible elements");var e=i.default.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){i.default(this.element).trigger(e);var n=l.findShadowRoot(this.element),o=i.default.contains(null!==n?n:this.element.ownerDocument.documentElement,this.element);if(e.isDefaultPrevented()||!o)return;var r=this.getTipElement(),a=l.getUID(this.constructor.NAME);r.setAttribute("id",a),this.element.setAttribute("aria-describedby",a),this.setContent(),this.config.animation&&i.default(r).addClass("fade");var s="function"==typeof this.config.placement?this.config.placement.call(this,r,this.element):this.config.placement,u=this._getAttachment(s);this.addAttachmentClass(u);var f=this._getContainer();i.default(r).data(this.constructor.DATA_KEY,this),i.default.contains(this.element.ownerDocument.documentElement,this.tip)||i.default(r).appendTo(f),i.default(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new It(this.element,r,this._getPopperConfig(u)),i.default(r).addClass("show"),i.default(r).addClass(this.config.customClass),"ontouchstart"in document.documentElement&&i.default(document.body).children().on("mouseover",null,i.default.noop);var d=function(){t.config.animation&&t._fixTransition();var e=t._hoverState;t._hoverState=null,i.default(t.element).trigger(t.constructor.Event.SHOWN),"out"===e&&t._leave(null,t)};if(i.default(this.tip).hasClass("fade")){var c=l.getTransitionDurationFromElement(this.tip);i.default(this.tip).one(l.TRANSITION_END,d).emulateTransitionEnd(c)}else d()}},e.hide=function(t){var e=this,n=this.getTipElement(),o=i.default.Event(this.constructor.Event.HIDE),r=function(){"show"!==e._hoverState&&n.parentNode&&n.parentNode.removeChild(n),e._cleanTipClass(),e.element.removeAttribute("aria-describedby"),i.default(e.element).trigger(e.constructor.Event.HIDDEN),null!==e._popper&&e._popper.destroy(),t&&t()};if(i.default(this.element).trigger(o),!o.isDefaultPrevented()){if(i.default(n).removeClass("show"),"ontouchstart"in document.documentElement&&i.default(document.body).children().off("mouseover",null,i.default.noop),this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1,i.default(this.tip).hasClass("fade")){var a=l.getTransitionDurationFromElement(n);i.default(n).one(l.TRANSITION_END,r).emulateTransitionEnd(a)}else r();this._hoverState=""}},e.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},e.isWithContent=function(){return Boolean(this.getTitle())},e.addAttachmentClass=function(t){i.default(this.getTipElement()).addClass("bs-tooltip-"+t)},e.getTipElement=function(){return this.tip=this.tip||i.default(this.config.template)[0],this.tip},e.setContent=function(){var t=this.getTipElement();this.setElementContent(i.default(t.querySelectorAll(".tooltip-inner")),this.getTitle()),i.default(t).removeClass("fade show")},e.setElementContent=function(t,e){"object"!=typeof e||!e.nodeType&&!e.jquery?this.config.html?(this.config.sanitize&&(e=Vt(e,this.config.whiteList,this.config.sanitizeFn)),t.html(e)):t.text(e):this.config.html?i.default(e).parent().is(t)||t.empty().append(e):t.text(i.default(e).text())},e.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},e._getPopperConfig=function(t){var e=this;return a({},{placement:t,modifiers:{offset:this._getOffset(),flip:{behavior:this.config.fallbackPlacement},arrow:{element:".arrow"},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){return e._handlePopperPlacementChange(t)}},this.config.popperConfig)},e._getOffset=function(){var t=this,e={};return"function"==typeof this.config.offset?e.fn=function(e){return e.offsets=a({},e.offsets,t.config.offset(e.offsets,t.element)||{}),e}:e.offset=this.config.offset,e},e._getContainer=function(){return!1===this.config.container?document.body:l.isElement(this.config.container)?i.default(this.config.container):i.default(document).find(this.config.container)},e._getAttachment=function(t){return $t[t.toUpperCase()]},e._setListeners=function(){var t=this;this.config.trigger.split(" ").forEach((function(e){if("click"===e)i.default(t.element).on(t.constructor.Event.CLICK,t.config.selector,(function(e){return t.toggle(e)}));else if("manual"!==e){var n="hover"===e?t.constructor.Event.MOUSEENTER:t.constructor.Event.FOCUSIN,o="hover"===e?t.constructor.Event.MOUSELEAVE:t.constructor.Event.FOCUSOUT;i.default(t.element).on(n,t.config.selector,(function(e){return t._enter(e)})).on(o,t.config.selector,(function(e){return t._leave(e)}))}})),this._hideModalHandler=function(){t.element&&t.hide()},i.default(this.element).closest(".modal").on("hide.bs.modal",this._hideModalHandler),this.config.selector?this.config=a({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},e._fixTitle=function(){var t=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||"string"!==t)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},e._enter=function(t,e){var n=this.constructor.DATA_KEY;(e=e||i.default(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),i.default(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusin"===t.type?"focus":"hover"]=!0),i.default(e.getTipElement()).hasClass("show")||"show"===e._hoverState?e._hoverState="show":(clearTimeout(e._timeout),e._hoverState="show",e.config.delay&&e.config.delay.show?e._timeout=setTimeout((function(){"show"===e._hoverState&&e.show()}),e.config.delay.show):e.show())},e._leave=function(t,e){var n=this.constructor.DATA_KEY;(e=e||i.default(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),i.default(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusout"===t.type?"focus":"hover"]=!1),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState="out",e.config.delay&&e.config.delay.hide?e._timeout=setTimeout((function(){"out"===e._hoverState&&e.hide()}),e.config.delay.hide):e.hide())},e._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},e._getConfig=function(t){var e=i.default(this.element).data();return Object.keys(e).forEach((function(t){-1!==Kt.indexOf(t)&&delete e[t]})),"number"==typeof(t=a({},this.constructor.Default,e,"object"==typeof t&&t?t:{})).delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),l.typeCheckConfig(Yt,t,this.constructor.DefaultType),t.sanitize&&(t.template=Vt(t.template,t.whiteList,t.sanitizeFn)),t},e._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},e._cleanTipClass=function(){var t=i.default(this.getTipElement()),e=t.attr("class").match(Xt);null!==e&&e.length&&t.removeClass(e.join(""))},e._handlePopperPlacementChange=function(t){this.tip=t.instance.popper,this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},e._fixTransition=function(){var t=this.getTipElement(),e=this.config.animation;null===t.getAttribute("x-placement")&&(i.default(t).removeClass("fade"),this.config.animation=!1,this.hide(),this.show(),this.config.animation=e)},t._jQueryInterface=function(e){return this.each((function(){var n=i.default(this),o=n.data("bs.tooltip"),r="object"==typeof e&&e;if((o||!/dispose|hide/.test(e))&&(o||(o=new t(this,r),n.data("bs.tooltip",o)),"string"==typeof e)){if("undefined"==typeof o[e])throw new TypeError('No method named "'+e+'"');o[e]()}}))},r(t,null,[{key:"VERSION",get:function(){return"4.6.0"}},{key:"Default",get:function(){return Jt}},{key:"NAME",get:function(){return Yt}},{key:"DATA_KEY",get:function(){return"bs.tooltip"}},{key:"Event",get:function(){return Zt}},{key:"EVENT_KEY",get:function(){return".bs.tooltip"}},{key:"DefaultType",get:function(){return Gt}}]),t}();i.default.fn[Yt]=te._jQueryInterface,i.default.fn[Yt].Constructor=te,i.default.fn[Yt].noConflict=function(){return i.default.fn[Yt]=zt,te._jQueryInterface};var ee="popover",ne=i.default.fn[ee],ie=new RegExp("(^|\\s)bs-popover\\S+","g"),oe=a({},te.Default,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>'}),re=a({},te.DefaultType,{content:"(string|element|function)"}),ae={HIDE:"hide.bs.popover",HIDDEN:"hidden.bs.popover",SHOW:"show.bs.popover",SHOWN:"shown.bs.popover",INSERTED:"inserted.bs.popover",CLICK:"click.bs.popover",FOCUSIN:"focusin.bs.popover",FOCUSOUT:"focusout.bs.popover",MOUSEENTER:"mouseenter.bs.popover",MOUSELEAVE:"mouseleave.bs.popover"},se=function(t){var e,n;function o(){return t.apply(this,arguments)||this}n=t,(e=o).prototype=Object.create(n.prototype),e.prototype.constructor=e,e.__proto__=n;var a=o.prototype;return a.isWithContent=function(){return this.getTitle()||this._getContent()},a.addAttachmentClass=function(t){i.default(this.getTipElement()).addClass("bs-popover-"+t)},a.getTipElement=function(){return this.tip=this.tip||i.default(this.config.template)[0],this.tip},a.setContent=function(){var t=i.default(this.getTipElement());this.setElementContent(t.find(".popover-header"),this.getTitle());var e=this._getContent();"function"==typeof e&&(e=e.call(this.element)),this.setElementContent(t.find(".popover-body"),e),t.removeClass("fade show")},a._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},a._cleanTipClass=function(){var t=i.default(this.getTipElement()),e=t.attr("class").match(ie);null!==e&&e.length>0&&t.removeClass(e.join(""))},o._jQueryInterface=function(t){return this.each((function(){var e=i.default(this).data("bs.popover"),n="object"==typeof t?t:null;if((e||!/dispose|hide/.test(t))&&(e||(e=new o(this,n),i.default(this).data("bs.popover",e)),"string"==typeof t)){if("undefined"==typeof e[t])throw new TypeError('No method named "'+t+'"');e[t]()}}))},r(o,null,[{key:"VERSION",get:function(){return"4.6.0"}},{key:"Default",get:function(){return oe}},{key:"NAME",get:function(){return ee}},{key:"DATA_KEY",get:function(){return"bs.popover"}},{key:"Event",get:function(){return ae}},{key:"EVENT_KEY",get:function(){return".bs.popover"}},{key:"DefaultType",get:function(){return re}}]),o}(te);i.default.fn[ee]=se._jQueryInterface,i.default.fn[ee].Constructor=se,i.default.fn[ee].noConflict=function(){return i.default.fn[ee]=ne,se._jQueryInterface};var le="scrollspy",ue=i.default.fn[le],fe={offset:10,method:"auto",target:""},de={offset:"number",method:"string",target:"(string|element)"},ce=function(){function t(t,e){var n=this;this._element=t,this._scrollElement="BODY"===t.tagName?window:t,this._config=this._getConfig(e),this._selector=this._config.target+" .nav-link,"+this._config.target+" .list-group-item,"+this._config.target+" .dropdown-item",this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,i.default(this._scrollElement).on("scroll.bs.scrollspy",(function(t){return n._process(t)})),this.refresh(),this._process()}var e=t.prototype;return e.refresh=function(){var t=this,e=this._scrollElement===this._scrollElement.window?"offset":"position",n="auto"===this._config.method?e:this._config.method,o="position"===n?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),[].slice.call(document.querySelectorAll(this._selector)).map((function(t){var e,r=l.getSelectorFromElement(t);if(r&&(e=document.querySelector(r)),e){var a=e.getBoundingClientRect();if(a.width||a.height)return[i.default(e)[n]().top+o,r]}return null})).filter((function(t){return t})).sort((function(t,e){return t[0]-e[0]})).forEach((function(e){t._offsets.push(e[0]),t._targets.push(e[1])}))},e.dispose=function(){i.default.removeData(this._element,"bs.scrollspy"),i.default(this._scrollElement).off(".bs.scrollspy"),this._element=null,this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},e._getConfig=function(t){if("string"!=typeof(t=a({},fe,"object"==typeof t&&t?t:{})).target&&l.isElement(t.target)){var e=i.default(t.target).attr("id");e||(e=l.getUID(le),i.default(t.target).attr("id",e)),t.target="#"+e}return l.typeCheckConfig(le,t,de),t},e._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},e._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},e._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},e._process=function(){var t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),n=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=n){var i=this._targets[this._targets.length-1];this._activeTarget!==i&&this._activate(i)}else{if(this._activeTarget&&t<this._offsets[0]&&this._offsets[0]>0)return this._activeTarget=null,void this._clear();for(var o=this._offsets.length;o--;){this._activeTarget!==this._targets[o]&&t>=this._offsets[o]&&("undefined"==typeof this._offsets[o+1]||t<this._offsets[o+1])&&this._activate(this._targets[o])}}},e._activate=function(t){this._activeTarget=t,this._clear();var e=this._selector.split(",").map((function(e){return e+'[data-target="'+t+'"],'+e+'[href="'+t+'"]'})),n=i.default([].slice.call(document.querySelectorAll(e.join(","))));n.hasClass("dropdown-item")?(n.closest(".dropdown").find(".dropdown-toggle").addClass("active"),n.addClass("active")):(n.addClass("active"),n.parents(".nav, .list-group").prev(".nav-link, .list-group-item").addClass("active"),n.parents(".nav, .list-group").prev(".nav-item").children(".nav-link").addClass("active")),i.default(this._scrollElement).trigger("activate.bs.scrollspy",{relatedTarget:t})},e._clear=function(){[].slice.call(document.querySelectorAll(this._selector)).filter((function(t){return t.classList.contains("active")})).forEach((function(t){return t.classList.remove("active")}))},t._jQueryInterface=function(e){return this.each((function(){var n=i.default(this).data("bs.scrollspy");if(n||(n=new t(this,"object"==typeof e&&e),i.default(this).data("bs.scrollspy",n)),"string"==typeof e){if("undefined"==typeof n[e])throw new TypeError('No method named "'+e+'"');n[e]()}}))},r(t,null,[{key:"VERSION",get:function(){return"4.6.0"}},{key:"Default",get:function(){return fe}}]),t}();i.default(window).on("load.bs.scrollspy.data-api",(function(){for(var t=[].slice.call(document.querySelectorAll('[data-spy="scroll"]')),e=t.length;e--;){var n=i.default(t[e]);ce._jQueryInterface.call(n,n.data())}})),i.default.fn[le]=ce._jQueryInterface,i.default.fn[le].Constructor=ce,i.default.fn[le].noConflict=function(){return i.default.fn[le]=ue,ce._jQueryInterface};var he=i.default.fn.tab,pe=function(){function t(t){this._element=t}var e=t.prototype;return e.show=function(){var t=this;if(!(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&i.default(this._element).hasClass("active")||i.default(this._element).hasClass("disabled"))){var e,n,o=i.default(this._element).closest(".nav, .list-group")[0],r=l.getSelectorFromElement(this._element);if(o){var a="UL"===o.nodeName||"OL"===o.nodeName?"> li > .active":".active";n=(n=i.default.makeArray(i.default(o).find(a)))[n.length-1]}var s=i.default.Event("hide.bs.tab",{relatedTarget:this._element}),u=i.default.Event("show.bs.tab",{relatedTarget:n});if(n&&i.default(n).trigger(s),i.default(this._element).trigger(u),!u.isDefaultPrevented()&&!s.isDefaultPrevented()){r&&(e=document.querySelector(r)),this._activate(this._element,o);var f=function(){var e=i.default.Event("hidden.bs.tab",{relatedTarget:t._element}),o=i.default.Event("shown.bs.tab",{relatedTarget:n});i.default(n).trigger(e),i.default(t._element).trigger(o)};e?this._activate(e,e.parentNode,f):f()}}},e.dispose=function(){i.default.removeData(this._element,"bs.tab"),this._element=null},e._activate=function(t,e,n){var o=this,r=(!e||"UL"!==e.nodeName&&"OL"!==e.nodeName?i.default(e).children(".active"):i.default(e).find("> li > .active"))[0],a=n&&r&&i.default(r).hasClass("fade"),s=function(){return o._transitionComplete(t,r,n)};if(r&&a){var u=l.getTransitionDurationFromElement(r);i.default(r).removeClass("show").one(l.TRANSITION_END,s).emulateTransitionEnd(u)}else s()},e._transitionComplete=function(t,e,n){if(e){i.default(e).removeClass("active");var o=i.default(e.parentNode).find("> .dropdown-menu .active")[0];o&&i.default(o).removeClass("active"),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!1)}i.default(t).addClass("active"),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!0),l.reflow(t),t.classList.contains("fade")&&t.classList.add("show");var r=t.parentNode;if(r&&"LI"===r.nodeName&&(r=r.parentNode),r&&i.default(r).hasClass("dropdown-menu")){var a=i.default(t).closest(".dropdown")[0];if(a){var s=[].slice.call(a.querySelectorAll(".dropdown-toggle"));i.default(s).addClass("active")}t.setAttribute("aria-expanded",!0)}n&&n()},t._jQueryInterface=function(e){return this.each((function(){var n=i.default(this),o=n.data("bs.tab");if(o||(o=new t(this),n.data("bs.tab",o)),"string"==typeof e){if("undefined"==typeof o[e])throw new TypeError('No method named "'+e+'"');o[e]()}}))},r(t,null,[{key:"VERSION",get:function(){return"4.6.0"}}]),t}();i.default(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',(function(t){t.preventDefault(),pe._jQueryInterface.call(i.default(this),"show")})),i.default.fn.tab=pe._jQueryInterface,i.default.fn.tab.Constructor=pe,i.default.fn.tab.noConflict=function(){return i.default.fn.tab=he,pe._jQueryInterface};var me=i.default.fn.toast,ge={animation:"boolean",autohide:"boolean",delay:"number"},ve={animation:!0,autohide:!0,delay:500},_e=function(){function t(t,e){this._element=t,this._config=this._getConfig(e),this._timeout=null,this._setListeners()}var e=t.prototype;return e.show=function(){var t=this,e=i.default.Event("show.bs.toast");if(i.default(this._element).trigger(e),!e.isDefaultPrevented()){this._clearTimeout(),this._config.animation&&this._element.classList.add("fade");var n=function(){t._element.classList.remove("showing"),t._element.classList.add("show"),i.default(t._element).trigger("shown.bs.toast"),t._config.autohide&&(t._timeout=setTimeout((function(){t.hide()}),t._config.delay))};if(this._element.classList.remove("hide"),l.reflow(this._element),this._element.classList.add("showing"),this._config.animation){var o=l.getTransitionDurationFromElement(this._element);i.default(this._element).one(l.TRANSITION_END,n).emulateTransitionEnd(o)}else n()}},e.hide=function(){if(this._element.classList.contains("show")){var t=i.default.Event("hide.bs.toast");i.default(this._element).trigger(t),t.isDefaultPrevented()||this._close()}},e.dispose=function(){this._clearTimeout(),this._element.classList.contains("show")&&this._element.classList.remove("show"),i.default(this._element).off("click.dismiss.bs.toast"),i.default.removeData(this._element,"bs.toast"),this._element=null,this._config=null},e._getConfig=function(t){return t=a({},ve,i.default(this._element).data(),"object"==typeof t&&t?t:{}),l.typeCheckConfig("toast",t,this.constructor.DefaultType),t},e._setListeners=function(){var t=this;i.default(this._element).on("click.dismiss.bs.toast",'[data-dismiss="toast"]',(function(){return t.hide()}))},e._close=function(){var t=this,e=function(){t._element.classList.add("hide"),i.default(t._element).trigger("hidden.bs.toast")};if(this._element.classList.remove("show"),this._config.animation){var n=l.getTransitionDurationFromElement(this._element);i.default(this._element).one(l.TRANSITION_END,e).emulateTransitionEnd(n)}else e()},e._clearTimeout=function(){clearTimeout(this._timeout),this._timeout=null},t._jQueryInterface=function(e){return this.each((function(){var n=i.default(this),o=n.data("bs.toast");if(o||(o=new t(this,"object"==typeof e&&e),n.data("bs.toast",o)),"string"==typeof e){if("undefined"==typeof o[e])throw new TypeError('No method named "'+e+'"');o[e](this)}}))},r(t,null,[{key:"VERSION",get:function(){return"4.6.0"}},{key:"DefaultType",get:function(){return ge}},{key:"Default",get:function(){return ve}}]),t}();i.default.fn.toast=_e._jQueryInterface,i.default.fn.toast.Constructor=_e,i.default.fn.toast.noConflict=function(){return i.default.fn.toast=me,_e._jQueryInterface},t.Alert=d,t.Button=h,t.Carousel=y,t.Collapse=S,t.Dropdown=Ft,t.Modal=qt,t.Popover=se,t.Scrollspy=ce,t.Tab=pe,t.Toast=_e,t.Tooltip=te,t.Util=l,Object.defineProperty(t,"__esModule",{value:!0})}));
+//# sourceMappingURL=bootstrap.bundle.min.js.map
\ No newline at end of file
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/package.json
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/package.json	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs4/package.json	(revision 3762)
@@ -0,0 +1,108 @@
+{
+  "name": "bootstrap",
+  "description": "The most popular front-end framework for developing responsive, mobile first projects on the web.",
+  "version": "4.6.0",
+  "config": {
+    "version_short": "4.6"
+  },
+  "keywords": ["css", "sass", "mobile-first", "responsive", "front-end", "framework", "web"],
+  "homepage": "https://getbootstrap.com/",
+  "author": "The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)",
+  "contributors": "Twitter, Inc.",
+  "scripts": {
+    "start": "npm-run-all --parallel watch docs-serve",
+    "bundlewatch": "bundlewatch --config .bundlewatch.config.json",
+    "css": "npm-run-all css-compile css-prefix css-minify",
+    "css-compile": "node-sass --output-style expanded --source-map true --source-map-contents true --precision 6 scss/ -o dist/css/",
+    "css-lint": "npm-run-all --continue-on-error --parallel css-lint-*",
+    "css-lint-stylelint": "stylelint \"**/*.{css,scss}\" --cache --cache-location .cache/.stylelintcache --rd",
+    "css-lint-vars": "fusv scss/ site/assets/scss/",
+    "css-minify": "cleancss -O1 --format breakWith=lf --source-map --source-map-inline-sources --output dist/css/bootstrap.min.css dist/css/bootstrap.css && cleancss -O1 --format breakWith=lf --source-map --source-map-inline-sources --output dist/css/bootstrap-grid.min.css dist/css/bootstrap-grid.css && cleancss -O1 --format breakWith=lf --source-map --source-map-inline-sources --output dist/css/bootstrap-reboot.min.css dist/css/bootstrap-reboot.css",
+    "css-prefix": "npm-run-all --parallel css-prefix-*",
+    "css-prefix-main": "postcss --config build/postcss.config.js --replace \"dist/css/*.css\" \"!dist/css/*.min.css\"",
+    "css-prefix-examples": "postcss --config build/postcss.config.js --replace \"site/content/**/*.css\"",
+    "js": "npm-run-all js-compile js-minify",
+    "js-compile": "npm-run-all --parallel js-compile-*",
+    "js-compile-standalone": "rollup --environment BUNDLE:false --config build/rollup.config.js --sourcemap",
+    "js-compile-bundle": "rollup --environment BUNDLE:true --config build/rollup.config.js --sourcemap",
+    "js-compile-plugins": "node build/build-plugins.js",
+    "js-compile-plugins-coverage": "cross-env NODE_ENV=test node build/build-plugins.js",
+    "js-lint": "eslint --cache --cache-location .cache/.eslintcache --report-unused-disable-directives .",
+    "js-minify": "npm-run-all --parallel js-minify-*",
+    "js-minify-standalone": "terser --compress typeofs=false --mangle --comments \"/^!/\" --source-map \"content=dist/js/bootstrap.js.map,includeSources,url=bootstrap.min.js.map\" --output dist/js/bootstrap.min.js dist/js/bootstrap.js",
+    "js-minify-bundle": "terser --compress typeofs=false --mangle --comments \"/^!/\" --source-map \"content=dist/js/bootstrap.bundle.js.map,includeSources,url=bootstrap.bundle.min.js.map\" --output dist/js/bootstrap.bundle.min.js dist/js/bootstrap.bundle.js",
+    "js-test": "npm-run-all --parallel js-test-karma* --serial js-test-integration",
+    "js-test-karma": "karma start js/tests/karma.conf.js",
+    "js-test-karma-old": "cross-env USE_OLD_JQUERY=true npm run js-test-karma",
+    "js-test-karma-bundle": "cross-env BUNDLE=true npm run js-test-karma",
+    "js-test-karma-bundle-old": "cross-env BUNDLE=true USE_OLD_JQUERY=true npm run js-test-karma",
+    "js-test-integration": "rollup --config js/tests/integration/rollup.bundle.js",
+    "js-test-cloud": "cross-env BROWSERSTACK=true npm run js-test-karma",
+    "lint": "npm-run-all --parallel js-lint css-lint lockfile-lint",
+    "docs": "npm-run-all docs-build docs-lint",
+    "docs-build": "hugo --cleanDestinationDir",
+    "docs-compile": "npm run docs-build",
+    "docs-linkinator": "linkinator _gh_pages --recurse --silent --skip \"^(?!http://localhost)\"",
+    "docs-vnu": "node build/vnu-jar.js",
+    "docs-lint": "npm-run-all --parallel docs-vnu docs-linkinator",
+    "docs-serve": "hugo server --port 9001 --disableFastRender",
+    "docs-serve-only": "npx sirv-cli _gh_pages --port 9001",
+    "lockfile-lint": "lockfile-lint --allowed-hosts npm --allowed-schemes https: --empty-hostname false --type npm --path package-lock.json",
+    "update-deps": "ncu -u -x \"jquery,karma-browserstack-launcher,sinon,terser\" && npm update && echo Manually update site/assets/js/vendor",
+    "release": "npm-run-all dist release-sri docs-build release-zip*",
+    "release-sri": "node build/generate-sri.js",
+    "release-version": "node build/change-version.js",
+    "release-zip": "cross-env-shell \"rm -rf bootstrap-$npm_package_version-dist && cp -r dist/ bootstrap-$npm_package_version-dist && zip -r9 bootstrap-$npm_package_version-dist.zip bootstrap-$npm_package_version-dist && rm -rf bootstrap-$npm_package_version-dist\"",
+    "release-zip-examples": "node build/zip-examples.js",
+    "dist": "npm-run-all --parallel css js",
+    "test": "npm-run-all lint dist js-test docs-build docs-lint",
+    "netlify": "cross-env-shell HUGO_BASEURL=$DEPLOY_PRIME_URL npm-run-all dist release-sri docs-build",
+    "watch": "npm-run-all --parallel watch-*",
+    "watch-css-main": "nodemon --watch scss/ --ext scss --exec \"npm-run-all css-lint css-compile css-prefix\"",
+    "watch-css-docs": "nodemon --watch site/assets/scss/ --ext scss --exec \"npm run css-lint\"",
+    "watch-js-main": "nodemon --watch js/src/ --ext js --exec \"npm-run-all js-lint js-compile\"",
+    "watch-js-docs": "nodemon --watch site/assets/js/ --ext js --exec \"npm run js-lint\""
+  },
+  "style": "dist/css/bootstrap.css",
+  "sass": "scss/bootstrap.scss",
+  "main": "dist/js/bootstrap.js",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/twbs/bootstrap.git"
+  },
+  "bugs": {
+    "url": "https://github.com/twbs/bootstrap/issues"
+  },
+  "license": "MIT",
+  "funding": {
+    "type": "opencollective",
+    "url": "https://opencollective.com/bootstrap"
+  },
+  "dependencies": {},
+  "peerDependencies": {
+    "jquery": "1.9.1 - 3",
+    "popper.js": "^1.16.1"
+  },
+  "files": ["dist/{css,js}/*.{css,js,map}", "js/{src,dist}/**/*.{js,map}", "scss/**/*.scss"],
+  "hugo-bin": {
+    "buildTags": "extended"
+  },
+  "jspm": {
+    "registry": "npm",
+    "main": "js/bootstrap",
+    "directories": {
+      "lib": "dist"
+    },
+    "shim": {
+      "js/bootstrap": {
+        "deps": ["jquery", "popper.js"],
+        "exports": "$"
+      }
+    },
+    "dependencies": {},
+    "peerDependencies": {
+      "jquery": "1.9.1 - 3",
+      "popper.js": "^1.16.1"
+    }
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/LICENSE
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/LICENSE	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/LICENSE	(revision 3762)
@@ -0,0 +1,22 @@
+The MIT License (MIT)
+
+Copyright (c) 2011-2022 Twitter, Inc.
+Copyright (c) 2011-2022 The Bootstrap Authors
+
+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.
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/dist/js/bootstrap.bundle.min.js.map
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/dist/js/bootstrap.bundle.min.js.map	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/dist/js/bootstrap.bundle.min.js.map	(revision 3762)
@@ -0,0 +1 @@
+{"version":3,"names":["TRANSITION_END","getSelector","element","selector","getAttribute","hrefAttribute","includes","startsWith","split","trim","getSelectorFromElement","document","querySelector","getElementFromSelector","triggerTransitionEnd","dispatchEvent","Event","isElement","object","jquery","nodeType","getElement","length","isVisible","getClientRects","elementIsVisible","getComputedStyle","getPropertyValue","closedDetails","closest","summary","parentNode","isDisabled","Node","ELEMENT_NODE","classList","contains","disabled","hasAttribute","findShadowRoot","documentElement","attachShadow","getRootNode","root","ShadowRoot","noop","reflow","offsetHeight","getjQuery","window","jQuery","body","DOMContentLoadedCallbacks","isRTL","dir","defineJQueryPlugin","plugin","callback","$","name","NAME","JQUERY_NO_CONFLICT","fn","jQueryInterface","Constructor","noConflict","readyState","addEventListener","push","execute","executeAfterTransition","transitionElement","waitForTransition","emulatedDuration","transitionDuration","transitionDelay","floatTransitionDuration","Number","parseFloat","floatTransitionDelay","getTransitionDurationFromElement","called","handler","target","removeEventListener","setTimeout","getNextActiveElement","list","activeElement","shouldGetNext","isCycleAllowed","listLength","index","indexOf","Math","max","min","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","nativeEvents","Set","makeEventUid","uid","getElementEvents","findHandler","events","callable","delegationSelector","Object","values","find","event","normalizeParameters","originalTypeEvent","delegationFunction","isDelegated","typeEvent","getTypeEvent","has","addHandler","oneOff","wrapFunction","relatedTarget","delegateTarget","call","this","handlers","previousFunction","replace","domElements","querySelectorAll","domElement","hydrateObj","EventHandler","off","type","apply","bootstrapDelegationHandler","bootstrapHandler","removeHandler","Boolean","removeNamespacedHandlers","namespace","storeElementEvent","handlerKey","keys","on","one","inNamespace","isNamespace","elementEvent","slice","keyHandlers","trigger","args","jQueryEvent","bubbles","nativeDispatch","defaultPrevented","isPropagationStopped","isImmediatePropagationStopped","isDefaultPrevented","evt","cancelable","preventDefault","obj","meta","key","value","entries","_unused","defineProperty","configurable","get","elementMap","Map","Data","set","instance","instanceMap","size","console","error","Array","from","remove","delete","normalizeData","toString","JSON","parse","decodeURIComponent","normalizeDataKey","chr","toLowerCase","Manipulator","setDataAttribute","setAttribute","removeDataAttribute","removeAttribute","getDataAttributes","attributes","bsKeys","dataset","filter","pureKey","charAt","getDataAttribute","Config","Default","DefaultType","Error","_getConfig","config","_mergeConfigObj","_configAfterMerge","_typeCheckConfig","jsonConfig","constructor","configTypes","property","expectedTypes","valueType","prototype","match","RegExp","test","TypeError","toUpperCase","BaseComponent","super","_element","_config","DATA_KEY","dispose","EVENT_KEY","propertyName","getOwnPropertyNames","_queueCallback","isAnimated","static","getInstance","VERSION","enableDismissTrigger","component","method","clickEvent","tagName","getOrCreateInstance","Alert","close","_destroyElement","each","data","undefined","SELECTOR_DATA_TOGGLE","Button","toggle","button","SelectorEngine","concat","Element","findOne","children","child","matches","parents","ancestor","prev","previous","previousElementSibling","next","nextElementSibling","focusableChildren","focusables","map","join","el","endCallback","leftCallback","rightCallback","Swipe","isSupported","_deltaX","_supportPointerEvents","PointerEvent","_initEvents","_start","_eventIsPointerPenTouch","clientX","touches","_end","_handleSwipe","_move","absDeltaX","abs","direction","add","pointerType","navigator","maxTouchPoints","ORDER_NEXT","ORDER_PREV","DIRECTION_LEFT","DIRECTION_RIGHT","EVENT_SLID","CLASS_NAME_CAROUSEL","CLASS_NAME_ACTIVE","KEY_TO_DIRECTION","ArrowLeft","ArrowRight","interval","keyboard","pause","ride","touch","wrap","Carousel","_interval","_activeElement","_isSliding","touchTimeout","_swipeHelper","_indicatorsElement","_addEventListeners","cycle","_slide","nextWhenVisible","hidden","_clearInterval","_updateInterval","setInterval","_maybeEnableCycle","to","items","_getItems","activeIndex","_getItemIndex","_getActive","order","defaultInterval","_keydown","_addTouchEventListeners","img","swipeConfig","_directionToOrder","clearTimeout","_setActiveIndicatorElement","activeIndicator","newActiveIndicator","elementInterval","parseInt","isNext","nextElement","nextElementIndex","triggerEvent","eventName","_orderToDirection","isCycling","directionalClassName","orderClassName","_isAnimated","SELECTOR_ACTIVE","clearInterval","carousel","slideIndex","carousels","CLASS_NAME_SHOW","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","parent","Collapse","_isTransitioning","_triggerArray","toggleList","elem","filterElement","foundElement","_initializeChildren","_addAriaAndCollapsedClass","_isShown","hide","show","activeChildren","_getFirstLevelChildren","activeInstance","dimension","_getDimension","style","scrollSize","getBoundingClientRect","selected","triggerArray","isOpen","selectorElements","top","bottom","right","left","auto","basePlacements","start","end","clippingParents","viewport","popper","reference","variationPlacements","reduce","acc","placement","placements","beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite","modifierPhases","getNodeName","nodeName","getWindow","node","ownerDocument","defaultView","isHTMLElement","HTMLElement","isShadowRoot","applyStyles$1","enabled","phase","_ref","state","elements","forEach","styles","assign","effect","_ref2","initialStyles","position","options","strategy","margin","arrow","hasOwnProperty","attribute","requires","getBasePlacement","round","getUAString","uaData","userAgentData","brands","item","brand","version","userAgent","isLayoutViewport","includeScale","isFixedStrategy","clientRect","scaleX","scaleY","offsetWidth","width","height","visualViewport","addVisualOffsets","x","offsetLeft","y","offsetTop","getLayoutRect","rootNode","isSameNode","host","isTableElement","getDocumentElement","getParentNode","assignedSlot","getTrueOffsetParent","offsetParent","getOffsetParent","isFirefox","currentNode","css","transform","perspective","contain","willChange","getContainingBlock","getMainAxisFromPlacement","within","mathMax","mathMin","mergePaddingObject","paddingObject","expandToHashMap","hashMap","arrow$1","_state$modifiersData$","arrowElement","popperOffsets","modifiersData","basePlacement","axis","len","padding","rects","toPaddingObject","arrowRect","minProp","maxProp","endDiff","startDiff","arrowOffsetParent","clientSize","clientHeight","clientWidth","centerToReference","center","offset","axisProp","centerOffset","_options$element","requiresIfExists","getVariation","unsetSides","mapToStyles","_Object$assign2","popperRect","variation","offsets","gpuAcceleration","adaptive","roundOffsets","isFixed","_offsets$x","_offsets$y","_ref3","hasX","hasY","sideX","sideY","win","heightProp","widthProp","_Object$assign","commonStyles","_ref4","dpr","devicePixelRatio","roundOffsetsByDPR","computeStyles$1","_ref5","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","passive","eventListeners","_options$scroll","scroll","_options$resize","resize","scrollParents","scrollParent","update","hash","getOppositePlacement","matched","getOppositeVariationPlacement","getWindowScroll","scrollLeft","pageXOffset","scrollTop","pageYOffset","getWindowScrollBarX","isScrollParent","_getComputedStyle","overflow","overflowX","overflowY","getScrollParent","listScrollParents","_element$ownerDocumen","isBody","updatedList","rectToClientRect","rect","getClientRectFromMixedType","clippingParent","html","layoutViewport","getViewportRect","clientTop","clientLeft","getInnerBoundingClientRect","winScroll","scrollWidth","scrollHeight","getDocumentRect","computeOffsets","commonX","commonY","mainAxis","detectOverflow","_options","_options$placement","_options$strategy","_options$boundary","boundary","_options$rootBoundary","rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","altContext","clippingClientRect","mainClippingParents","clipperElement","getClippingParents","firstClippingParent","clippingRect","accRect","getClippingRect","contextElement","referenceClientRect","popperClientRect","elementClientRect","overflowOffsets","offsetData","multiply","computeAutoPlacement","flipVariations","_options$allowedAutoP","allowedAutoPlacements","allPlacements","allowedPlacements","overflows","sort","a","b","flip$1","_skip","_options$mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","specifiedFallbackPlacements","fallbackPlacements","_options$flipVariatio","preferredPlacement","oppositePlacement","getExpandedFallbackPlacements","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","i","_basePlacement","isStartVariation","isVertical","mainVariationSide","altVariationSide","checks","every","check","_loop","_i","fittingPlacement","reset","getSideOffsets","preventedOffsets","isAnySideFullyClipped","some","side","hide$1","preventOverflow","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","offset$1","_options$offset","invertDistance","skidding","distance","distanceAndSkiddingToXY","_data$state$placement","popperOffsets$1","preventOverflow$1","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","tetherOffsetValue","normalizedTetherOffsetValue","offsetModifierState","_offsetModifierState$","mainSide","altSide","additive","minLen","maxLen","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","clientOffset","offsetModifierValue","tetherMax","preventedOffset","_offsetModifierState$2","_mainSide","_altSide","_offset","_len","_min","_max","isOriginSide","_offsetModifierValue","_tetherMin","_tetherMax","_preventedOffset","v","withinMaxClamp","getCompositeRect","elementOrVirtualElement","isOffsetParentAnElement","offsetParentIsScaled","isElementScaled","modifiers","visited","result","modifier","dep","depModifier","DEFAULT_OPTIONS","areValidElements","arguments","_key","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","pending","orderedModifiers","effectCleanupFns","isDestroyed","setOptions","setOptionsAction","cleanupModifierEffects","merged","orderModifiers","current","existing","m","_ref3$options","cleanupFn","forceUpdate","_state$elements","_state$orderedModifie","_state$orderedModifie2","Promise","resolve","then","destroy","onFirstUpdate","createPopper","computeStyles","applyStyles","flip","ARROW_UP_KEY","ARROW_DOWN_KEY","EVENT_CLICK_DATA_API","EVENT_KEYDOWN_DATA_API","SELECTOR_DATA_TOGGLE_SHOWN","SELECTOR_MENU","PLACEMENT_TOP","PLACEMENT_TOPEND","PLACEMENT_BOTTOM","PLACEMENT_BOTTOMEND","PLACEMENT_RIGHT","PLACEMENT_LEFT","autoClose","display","popperConfig","Dropdown","_popper","_parent","_menu","_inNavbar","_detectNavbar","_createPopper","focus","_completeHide","Popper","referenceElement","_getPopperConfig","_getPlacement","parentDropdown","isEnd","_getOffset","popperData","defaultBsPopperConfig","_selectMenuItem","openToggles","context","composedPath","isMenuTarget","isInput","isEscapeEvent","isUpOrDownEvent","getToggleButton","stopPropagation","dataApiKeydownHandler","clearMenus","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","PROPERTY_PADDING","PROPERTY_MARGIN","ScrollBarHelper","getWidth","documentWidth","innerWidth","_disableOverFlow","_setElementAttributes","calculatedValue","_resetElementAttributes","isOverflowing","_saveInitialAttribute","styleProperty","scrollbarWidth","_applyManipulationCallback","setProperty","actualValue","removeProperty","callBack","sel","EVENT_MOUSEDOWN","className","clickCallback","rootElement","Backdrop","_isAppended","_append","_getElement","_emulateAnimation","backdrop","createElement","append","TAB_NAV_BACKWARD","autofocus","trapElement","FocusTrap","_isActive","_lastTabNavDirection","activate","_handleFocusin","_handleKeydown","deactivate","shiftKey","EVENT_HIDDEN","EVENT_SHOW","CLASS_NAME_OPEN","CLASS_NAME_STATIC","Modal","_dialog","_backdrop","_initializeBackDrop","_focustrap","_initializeFocusTrap","_scrollBar","_adjustDialog","_showElement","_hideModal","htmlElement","handleUpdate","modalBody","_triggerBackdropTransition","event2","_resetAdjustments","isModalOverflowing","initialOverflowY","isBodyOverflowing","paddingLeft","paddingRight","showEvent","alreadyOpen","CLASS_NAME_SHOWING","CLASS_NAME_HIDING","OPEN_SELECTOR","EVENT_HIDE_PREVENTED","Offcanvas","blur","uriAttributes","SAFE_URL_PATTERN","DATA_URL_PATTERN","allowedAttribute","allowedAttributeList","attributeName","nodeValue","attributeRegex","regex","DefaultAllowlist","area","br","col","code","div","em","hr","h1","h2","h3","h4","h5","h6","li","ol","p","pre","s","small","span","sub","sup","strong","u","ul","allowList","content","extraClass","sanitize","sanitizeFn","template","DefaultContentType","entry","TemplateFactory","getContent","_resolvePossibleFunction","hasContent","changeContent","_checkContent","toHtml","templateWrapper","innerHTML","_maybeSanitize","text","_setContent","arg","templateElement","_putElementInTemplate","textContent","unsafeHtml","sanitizeFunction","createdDocument","DOMParser","parseFromString","elementName","attributeList","allowedAttributes","sanitizeHtml","DISALLOWED_ATTRIBUTES","CLASS_NAME_FADE","SELECTOR_MODAL","EVENT_MODAL_HIDE","TRIGGER_HOVER","TRIGGER_FOCUS","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","animation","container","customClass","delay","title","Tooltip","_isEnabled","_timeout","_isHovered","_activeTrigger","_templateFactory","_newContent","tip","_setListeners","_fixTitle","enable","disable","toggleEnabled","click","_leave","_enter","_hideModalHandler","_disposePopper","_isWithContent","isInTheDom","_getTipElement","_isWithActiveTrigger","_getTitle","_createTipElement","_getContentForTemplate","_getTemplateFactory","tipId","prefix","floor","random","getElementById","getUID","setContent","_initializeOnDelegatedTarget","_getDelegateConfig","attachment","triggers","eventIn","eventOut","_setTimeout","timeout","dataAttributes","dataAttribute","Popover","_getContent","EVENT_CLICK","SELECTOR_TARGET_LINKS","rootMargin","smoothScroll","threshold","ScrollSpy","_targetLinks","_observableSections","_rootElement","_activeTarget","_observer","_previousScrollData","visibleEntryTop","parentScrollTop","refresh","_initializeTargetsAndObservables","_maybeEnableSmoothScroll","disconnect","_getNewObserver","section","observe","observableSection","scrollTo","behavior","IntersectionObserver","_observerCallback","targetElement","id","_process","userScrollsDown","isIntersecting","_clearActiveClass","entryIsLowerThanPrevious","targetLinks","anchor","_activateParents","listGroup","activeNodes","spy","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","SELECTOR_INNER_ELEM","Tab","_setInitialAttributes","_getChildren","innerElem","_elemIsActive","active","_getActiveElem","hideEvent","_deactivate","_activate","relatedElem","_toggleDropDown","nextActiveElement","preventScroll","_setAttributeIfNotExists","_setInitialAttributesOnChild","_getInnerElement","isActive","outerElem","_getOuterElement","_setInitialAttributesOnTargetPanel","open","CLASS_NAME_HIDE","autohide","Toast","_hasMouseInteraction","_hasKeyboardInteraction","_clearTimeout","_maybeScheduleHide","isShown","_onInteraction","isInteracting"],"sources":["../../js/src/util/index.js","../../js/src/dom/event-handler.js","../../js/src/dom/data.js","../../js/src/dom/manipulator.js","../../js/src/util/config.js","../../js/src/base-component.js","../../js/src/util/component-functions.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/dom/selector-engine.js","../../js/src/util/swipe.js","../../js/src/carousel.js","../../js/src/collapse.js","../../node_modules/@popperjs/core/lib/enums.js","../../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../../node_modules/@popperjs/core/lib/utils/math.js","../../node_modules/@popperjs/core/lib/utils/userAgent.js","../../node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","../../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../../node_modules/@popperjs/core/lib/dom-utils/contains.js","../../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../../node_modules/@popperjs/core/lib/utils/within.js","../../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../../node_modules/@popperjs/core/lib/modifiers/arrow.js","../../node_modules/@popperjs/core/lib/utils/getVariation.js","../../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../../node_modules/@popperjs/core/lib/utils/computeOffsets.js","../../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../../node_modules/@popperjs/core/lib/modifiers/flip.js","../../node_modules/@popperjs/core/lib/modifiers/hide.js","../../node_modules/@popperjs/core/lib/modifiers/offset.js","../../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../../node_modules/@popperjs/core/lib/utils/getAltAxis.js","../../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../../node_modules/@popperjs/core/lib/utils/orderModifiers.js","../../node_modules/@popperjs/core/lib/createPopper.js","../../node_modules/@popperjs/core/lib/utils/debounce.js","../../node_modules/@popperjs/core/lib/utils/mergeByName.js","../../node_modules/@popperjs/core/lib/popper-lite.js","../../node_modules/@popperjs/core/lib/popper.js","../../js/src/dropdown.js","../../js/src/util/scrollbar.js","../../js/src/util/backdrop.js","../../js/src/util/focustrap.js","../../js/src/modal.js","../../js/src/offcanvas.js","../../js/src/util/sanitizer.js","../../js/src/util/template-factory.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/toast.js","../../js/index.umd.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.2): util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1_000_000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n// Shout-out Angus Croll (https://goo.gl/pxwQGp)\nconst toType = object => {\n  if (object === null || object === undefined) {\n    return `${object}`\n  }\n\n  return Object.prototype.toString.call(object).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * Public Util API\n */\n\nconst getUID = prefix => {\n  do {\n    prefix += Math.floor(Math.random() * MAX_UID)\n  } while (document.getElementById(prefix))\n\n  return prefix\n}\n\nconst getSelector = element => {\n  let selector = element.getAttribute('data-bs-target')\n\n  if (!selector || selector === '#') {\n    let hrefAttribute = element.getAttribute('href')\n\n    // The only valid content that could double as a selector are IDs or classes,\n    // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n    // `document.querySelector` will rightfully complain it is invalid.\n    // See https://github.com/twbs/bootstrap/issues/32273\n    if (!hrefAttribute || (!hrefAttribute.includes('#') && !hrefAttribute.startsWith('.'))) {\n      return null\n    }\n\n    // Just in case some CMS puts out a full URL with the anchor appended\n    if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {\n      hrefAttribute = `#${hrefAttribute.split('#')[1]}`\n    }\n\n    selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null\n  }\n\n  return selector\n}\n\nconst getSelectorFromElement = element => {\n  const selector = getSelector(element)\n\n  if (selector) {\n    return document.querySelector(selector) ? selector : null\n  }\n\n  return null\n}\n\nconst getElementFromSelector = element => {\n  const selector = getSelector(element)\n\n  return selector ? document.querySelector(selector) : null\n}\n\nconst getTransitionDurationFromElement = element => {\n  if (!element) {\n    return 0\n  }\n\n  // Get transition-duration of the element\n  let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n  const floatTransitionDuration = Number.parseFloat(transitionDuration)\n  const floatTransitionDelay = Number.parseFloat(transitionDelay)\n\n  // Return 0 if element or transition duration is not found\n  if (!floatTransitionDuration && !floatTransitionDelay) {\n    return 0\n  }\n\n  // If multiple durations are defined, take the first\n  transitionDuration = transitionDuration.split(',')[0]\n  transitionDelay = transitionDelay.split(',')[0]\n\n  return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n  element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = object => {\n  if (!object || typeof object !== 'object') {\n    return false\n  }\n\n  if (typeof object.jquery !== 'undefined') {\n    object = object[0]\n  }\n\n  return typeof object.nodeType !== 'undefined'\n}\n\nconst getElement = object => {\n  // it's a jQuery object or a node element\n  if (isElement(object)) {\n    return object.jquery ? object[0] : object\n  }\n\n  if (typeof object === 'string' && object.length > 0) {\n    return document.querySelector(object)\n  }\n\n  return null\n}\n\nconst isVisible = element => {\n  if (!isElement(element) || element.getClientRects().length === 0) {\n    return false\n  }\n\n  const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible'\n  // Handle `details` element as its content may falsie appear visible when it is closed\n  const closedDetails = element.closest('details:not([open])')\n\n  if (!closedDetails) {\n    return elementIsVisible\n  }\n\n  if (closedDetails !== element) {\n    const summary = element.closest('summary')\n    if (summary && summary.parentNode !== closedDetails) {\n      return false\n    }\n\n    if (summary === null) {\n      return false\n    }\n  }\n\n  return elementIsVisible\n}\n\nconst isDisabled = element => {\n  if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n    return true\n  }\n\n  if (element.classList.contains('disabled')) {\n    return true\n  }\n\n  if (typeof element.disabled !== 'undefined') {\n    return element.disabled\n  }\n\n  return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'\n}\n\nconst findShadowRoot = element => {\n  if (!document.documentElement.attachShadow) {\n    return null\n  }\n\n  // Can find the shadow root otherwise it'll return the document\n  if (typeof element.getRootNode === 'function') {\n    const root = element.getRootNode()\n    return root instanceof ShadowRoot ? root : null\n  }\n\n  if (element instanceof ShadowRoot) {\n    return element\n  }\n\n  // when we don't find a shadow root\n  if (!element.parentNode) {\n    return null\n  }\n\n  return findShadowRoot(element.parentNode)\n}\n\nconst noop = () => {}\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n  element.offsetHeight // eslint-disable-line no-unused-expressions\n}\n\nconst getjQuery = () => {\n  if (window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n    return window.jQuery\n  }\n\n  return null\n}\n\nconst DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n  if (document.readyState === 'loading') {\n    // add listener on the first call when the document is in loading state\n    if (!DOMContentLoadedCallbacks.length) {\n      document.addEventListener('DOMContentLoaded', () => {\n        for (const callback of DOMContentLoadedCallbacks) {\n          callback()\n        }\n      })\n    }\n\n    DOMContentLoadedCallbacks.push(callback)\n  } else {\n    callback()\n  }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = plugin => {\n  onDOMContentLoaded(() => {\n    const $ = getjQuery()\n    /* istanbul ignore if */\n    if ($) {\n      const name = plugin.NAME\n      const JQUERY_NO_CONFLICT = $.fn[name]\n      $.fn[name] = plugin.jQueryInterface\n      $.fn[name].Constructor = plugin\n      $.fn[name].noConflict = () => {\n        $.fn[name] = JQUERY_NO_CONFLICT\n        return plugin.jQueryInterface\n      }\n    }\n  })\n}\n\nconst execute = callback => {\n  if (typeof callback === 'function') {\n    callback()\n  }\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n  if (!waitForTransition) {\n    execute(callback)\n    return\n  }\n\n  const durationPadding = 5\n  const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n  let called = false\n\n  const handler = ({ target }) => {\n    if (target !== transitionElement) {\n      return\n    }\n\n    called = true\n    transitionElement.removeEventListener(TRANSITION_END, handler)\n    execute(callback)\n  }\n\n  transitionElement.addEventListener(TRANSITION_END, handler)\n  setTimeout(() => {\n    if (!called) {\n      triggerTransitionEnd(transitionElement)\n    }\n  }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list    The list of elements\n * @param activeElement   The active element\n * @param shouldGetNext   Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n  const listLength = list.length\n  let index = list.indexOf(activeElement)\n\n  // if the element does not exist in the list return an element\n  // depending on the direction and if cycle is allowed\n  if (index === -1) {\n    return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0]\n  }\n\n  index += shouldGetNext ? 1 : -1\n\n  if (isCycleAllowed) {\n    index = (index + listLength) % listLength\n  }\n\n  return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n  defineJQueryPlugin,\n  execute,\n  executeAfterTransition,\n  findShadowRoot,\n  getElement,\n  getElementFromSelector,\n  getjQuery,\n  getNextActiveElement,\n  getSelectorFromElement,\n  getTransitionDurationFromElement,\n  getUID,\n  isDisabled,\n  isElement,\n  isRTL,\n  isVisible,\n  noop,\n  onDOMContentLoaded,\n  reflow,\n  triggerTransitionEnd,\n  toType\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.2): dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery } from '../util/index'\n\n/**\n * Constants\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/\nconst stripNameRegex = /\\..*/\nconst stripUidRegex = /::\\d+$/\nconst eventRegistry = {} // Events storage\nlet uidEvent = 1\nconst customEvents = {\n  mouseenter: 'mouseover',\n  mouseleave: 'mouseout'\n}\n\nconst nativeEvents = new Set([\n  'click',\n  'dblclick',\n  'mouseup',\n  'mousedown',\n  'contextmenu',\n  'mousewheel',\n  'DOMMouseScroll',\n  'mouseover',\n  'mouseout',\n  'mousemove',\n  'selectstart',\n  'selectend',\n  'keydown',\n  'keypress',\n  'keyup',\n  'orientationchange',\n  'touchstart',\n  'touchmove',\n  'touchend',\n  'touchcancel',\n  'pointerdown',\n  'pointermove',\n  'pointerup',\n  'pointerleave',\n  'pointercancel',\n  'gesturestart',\n  'gesturechange',\n  'gestureend',\n  'focus',\n  'blur',\n  'change',\n  'reset',\n  'select',\n  'submit',\n  'focusin',\n  'focusout',\n  'load',\n  'unload',\n  'beforeunload',\n  'resize',\n  'move',\n  'DOMContentLoaded',\n  'readystatechange',\n  'error',\n  'abort',\n  'scroll'\n])\n\n/**\n * Private methods\n */\n\nfunction makeEventUid(element, uid) {\n  return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n}\n\nfunction getElementEvents(element) {\n  const uid = makeEventUid(element)\n\n  element.uidEvent = uid\n  eventRegistry[uid] = eventRegistry[uid] || {}\n\n  return eventRegistry[uid]\n}\n\nfunction bootstrapHandler(element, fn) {\n  return function handler(event) {\n    hydrateObj(event, { delegateTarget: element })\n\n    if (handler.oneOff) {\n      EventHandler.off(element, event.type, fn)\n    }\n\n    return fn.apply(element, [event])\n  }\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n  return function handler(event) {\n    const domElements = element.querySelectorAll(selector)\n\n    for (let { target } = event; target && target !== this; target = target.parentNode) {\n      for (const domElement of domElements) {\n        if (domElement !== target) {\n          continue\n        }\n\n        hydrateObj(event, { delegateTarget: target })\n\n        if (handler.oneOff) {\n          EventHandler.off(element, event.type, selector, fn)\n        }\n\n        return fn.apply(target, [event])\n      }\n    }\n  }\n}\n\nfunction findHandler(events, callable, delegationSelector = null) {\n  return Object.values(events)\n    .find(event => event.callable === callable && event.delegationSelector === delegationSelector)\n}\n\nfunction normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n  const isDelegated = typeof handler === 'string'\n  // todo: tooltip passes `false` instead of selector, so we need to check\n  const callable = isDelegated ? delegationFunction : (handler || delegationFunction)\n  let typeEvent = getTypeEvent(originalTypeEvent)\n\n  if (!nativeEvents.has(typeEvent)) {\n    typeEvent = originalTypeEvent\n  }\n\n  return [isDelegated, callable, typeEvent]\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n  if (typeof originalTypeEvent !== 'string' || !element) {\n    return\n  }\n\n  let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n\n  // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n  // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n  if (originalTypeEvent in customEvents) {\n    const wrapFunction = fn => {\n      return function (event) {\n        if (!event.relatedTarget || (event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget))) {\n          return fn.call(this, event)\n        }\n      }\n    }\n\n    callable = wrapFunction(callable)\n  }\n\n  const events = getElementEvents(element)\n  const handlers = events[typeEvent] || (events[typeEvent] = {})\n  const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null)\n\n  if (previousFunction) {\n    previousFunction.oneOff = previousFunction.oneOff && oneOff\n\n    return\n  }\n\n  const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''))\n  const fn = isDelegated ?\n    bootstrapDelegationHandler(element, handler, callable) :\n    bootstrapHandler(element, callable)\n\n  fn.delegationSelector = isDelegated ? handler : null\n  fn.callable = callable\n  fn.oneOff = oneOff\n  fn.uidEvent = uid\n  handlers[uid] = fn\n\n  element.addEventListener(typeEvent, fn, isDelegated)\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n  const fn = findHandler(events[typeEvent], handler, delegationSelector)\n\n  if (!fn) {\n    return\n  }\n\n  element.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\n  delete events[typeEvent][fn.uidEvent]\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n  const storeElementEvent = events[typeEvent] || {}\n\n  for (const handlerKey of Object.keys(storeElementEvent)) {\n    if (handlerKey.includes(namespace)) {\n      const event = storeElementEvent[handlerKey]\n      removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n    }\n  }\n}\n\nfunction getTypeEvent(event) {\n  // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n  event = event.replace(stripNameRegex, '')\n  return customEvents[event] || event\n}\n\nconst EventHandler = {\n  on(element, event, handler, delegationFunction) {\n    addHandler(element, event, handler, delegationFunction, false)\n  },\n\n  one(element, event, handler, delegationFunction) {\n    addHandler(element, event, handler, delegationFunction, true)\n  },\n\n  off(element, originalTypeEvent, handler, delegationFunction) {\n    if (typeof originalTypeEvent !== 'string' || !element) {\n      return\n    }\n\n    const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n    const inNamespace = typeEvent !== originalTypeEvent\n    const events = getElementEvents(element)\n    const storeElementEvent = events[typeEvent] || {}\n    const isNamespace = originalTypeEvent.startsWith('.')\n\n    if (typeof callable !== 'undefined') {\n      // Simplest case: handler is passed, remove that listener ONLY.\n      if (!Object.keys(storeElementEvent).length) {\n        return\n      }\n\n      removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null)\n      return\n    }\n\n    if (isNamespace) {\n      for (const elementEvent of Object.keys(events)) {\n        removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\n      }\n    }\n\n    for (const keyHandlers of Object.keys(storeElementEvent)) {\n      const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n      if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n        const event = storeElementEvent[keyHandlers]\n        removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n      }\n    }\n  },\n\n  trigger(element, event, args) {\n    if (typeof event !== 'string' || !element) {\n      return null\n    }\n\n    const $ = getjQuery()\n    const typeEvent = getTypeEvent(event)\n    const inNamespace = event !== typeEvent\n\n    let jQueryEvent = null\n    let bubbles = true\n    let nativeDispatch = true\n    let defaultPrevented = false\n\n    if (inNamespace && $) {\n      jQueryEvent = $.Event(event, args)\n\n      $(element).trigger(jQueryEvent)\n      bubbles = !jQueryEvent.isPropagationStopped()\n      nativeDispatch = !jQueryEvent.isImmediatePropagationStopped()\n      defaultPrevented = jQueryEvent.isDefaultPrevented()\n    }\n\n    let evt = new Event(event, { bubbles, cancelable: true })\n    evt = hydrateObj(evt, args)\n\n    if (defaultPrevented) {\n      evt.preventDefault()\n    }\n\n    if (nativeDispatch) {\n      element.dispatchEvent(evt)\n    }\n\n    if (evt.defaultPrevented && jQueryEvent) {\n      jQueryEvent.preventDefault()\n    }\n\n    return evt\n  }\n}\n\nfunction hydrateObj(obj, meta) {\n  for (const [key, value] of Object.entries(meta || {})) {\n    try {\n      obj[key] = value\n    } catch {\n      Object.defineProperty(obj, key, {\n        configurable: true,\n        get() {\n          return value\n        }\n      })\n    }\n  }\n\n  return obj\n}\n\nexport default EventHandler\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.2): dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\n\nconst elementMap = new Map()\n\nexport default {\n  set(element, key, instance) {\n    if (!elementMap.has(element)) {\n      elementMap.set(element, new Map())\n    }\n\n    const instanceMap = elementMap.get(element)\n\n    // make it clear we only want one instance per element\n    // can be removed later when multiple key/instances are fine to be used\n    if (!instanceMap.has(key) && instanceMap.size !== 0) {\n      // eslint-disable-next-line no-console\n      console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`)\n      return\n    }\n\n    instanceMap.set(key, instance)\n  },\n\n  get(element, key) {\n    if (elementMap.has(element)) {\n      return elementMap.get(element).get(key) || null\n    }\n\n    return null\n  },\n\n  remove(element, key) {\n    if (!elementMap.has(element)) {\n      return\n    }\n\n    const instanceMap = elementMap.get(element)\n\n    instanceMap.delete(key)\n\n    // free up element references if there are no instances left for an element\n    if (instanceMap.size === 0) {\n      elementMap.delete(element)\n    }\n  }\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.2): dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(value) {\n  if (value === 'true') {\n    return true\n  }\n\n  if (value === 'false') {\n    return false\n  }\n\n  if (value === Number(value).toString()) {\n    return Number(value)\n  }\n\n  if (value === '' || value === 'null') {\n    return null\n  }\n\n  if (typeof value !== 'string') {\n    return value\n  }\n\n  try {\n    return JSON.parse(decodeURIComponent(value))\n  } catch {\n    return value\n  }\n}\n\nfunction normalizeDataKey(key) {\n  return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)\n}\n\nconst Manipulator = {\n  setDataAttribute(element, key, value) {\n    element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value)\n  },\n\n  removeDataAttribute(element, key) {\n    element.removeAttribute(`data-bs-${normalizeDataKey(key)}`)\n  },\n\n  getDataAttributes(element) {\n    if (!element) {\n      return {}\n    }\n\n    const attributes = {}\n    const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig'))\n\n    for (const key of bsKeys) {\n      let pureKey = key.replace(/^bs/, '')\n      pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length)\n      attributes[pureKey] = normalizeData(element.dataset[key])\n    }\n\n    return attributes\n  },\n\n  getDataAttribute(element, key) {\n    return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`))\n  }\n}\n\nexport default Manipulator\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.2): util/config.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { isElement, toType } from './index'\nimport Manipulator from '../dom/manipulator'\n\n/**\n * Class definition\n */\n\nclass Config {\n  // Getters\n  static get Default() {\n    return {}\n  }\n\n  static get DefaultType() {\n    return {}\n  }\n\n  static get NAME() {\n    throw new Error('You have to implement the static method \"NAME\", for each component!')\n  }\n\n  _getConfig(config) {\n    config = this._mergeConfigObj(config)\n    config = this._configAfterMerge(config)\n    this._typeCheckConfig(config)\n    return config\n  }\n\n  _configAfterMerge(config) {\n    return config\n  }\n\n  _mergeConfigObj(config, element) {\n    const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {} // try to parse\n\n    return {\n      ...this.constructor.Default,\n      ...(typeof jsonConfig === 'object' ? jsonConfig : {}),\n      ...(isElement(element) ? Manipulator.getDataAttributes(element) : {}),\n      ...(typeof config === 'object' ? config : {})\n    }\n  }\n\n  _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {\n    for (const property of Object.keys(configTypes)) {\n      const expectedTypes = configTypes[property]\n      const value = config[property]\n      const valueType = isElement(value) ? 'element' : toType(value)\n\n      if (!new RegExp(expectedTypes).test(valueType)) {\n        throw new TypeError(\n          `${this.constructor.NAME.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n        )\n      }\n    }\n  }\n}\n\nexport default Config\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.2): base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data'\nimport { executeAfterTransition, getElement } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Config from './util/config'\n\n/**\n * Constants\n */\n\nconst VERSION = '5.2.2'\n\n/**\n * Class definition\n */\n\nclass BaseComponent extends Config {\n  constructor(element, config) {\n    super()\n\n    element = getElement(element)\n    if (!element) {\n      return\n    }\n\n    this._element = element\n    this._config = this._getConfig(config)\n\n    Data.set(this._element, this.constructor.DATA_KEY, this)\n  }\n\n  // Public\n  dispose() {\n    Data.remove(this._element, this.constructor.DATA_KEY)\n    EventHandler.off(this._element, this.constructor.EVENT_KEY)\n\n    for (const propertyName of Object.getOwnPropertyNames(this)) {\n      this[propertyName] = null\n    }\n  }\n\n  _queueCallback(callback, element, isAnimated = true) {\n    executeAfterTransition(callback, element, isAnimated)\n  }\n\n  _getConfig(config) {\n    config = this._mergeConfigObj(config, this._element)\n    config = this._configAfterMerge(config)\n    this._typeCheckConfig(config)\n    return config\n  }\n\n  // Static\n  static getInstance(element) {\n    return Data.get(getElement(element), this.DATA_KEY)\n  }\n\n  static getOrCreateInstance(element, config = {}) {\n    return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null)\n  }\n\n  static get VERSION() {\n    return VERSION\n  }\n\n  static get DATA_KEY() {\n    return `bs.${this.NAME}`\n  }\n\n  static get EVENT_KEY() {\n    return `.${this.DATA_KEY}`\n  }\n\n  static eventName(name) {\n    return `${name}${this.EVENT_KEY}`\n  }\n}\n\nexport default BaseComponent\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.2): util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport { getElementFromSelector, isDisabled } from './index'\n\nconst enableDismissTrigger = (component, method = 'hide') => {\n  const clickEvent = `click.dismiss${component.EVENT_KEY}`\n  const name = component.NAME\n\n  EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n    if (['A', 'AREA'].includes(this.tagName)) {\n      event.preventDefault()\n    }\n\n    if (isDisabled(this)) {\n      return\n    }\n\n    const target = getElementFromSelector(this) || this.closest(`.${name}`)\n    const instance = component.getOrCreateInstance(target)\n\n    // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n    instance[method]()\n  })\n}\n\nexport {\n  enableDismissTrigger\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.2): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\nimport { enableDismissTrigger } from './util/component-functions'\n\n/**\n * Constants\n */\n\nconst NAME = 'alert'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\n/**\n * Class definition\n */\n\nclass Alert extends BaseComponent {\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  close() {\n    const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE)\n\n    if (closeEvent.defaultPrevented) {\n      return\n    }\n\n    this._element.classList.remove(CLASS_NAME_SHOW)\n\n    const isAnimated = this._element.classList.contains(CLASS_NAME_FADE)\n    this._queueCallback(() => this._destroyElement(), this._element, isAnimated)\n  }\n\n  // Private\n  _destroyElement() {\n    this._element.remove()\n    EventHandler.trigger(this._element, EVENT_CLOSED)\n    this.dispose()\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Alert.getOrCreateInstance(this)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config](this)\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Alert, 'close')\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Alert)\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.2): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\n\n/**\n * Constants\n */\n\nconst NAME = 'button'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"button\"]'\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\n/**\n * Class definition\n */\n\nclass Button extends BaseComponent {\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n    this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE))\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Button.getOrCreateInstance(this)\n\n      if (config === 'toggle') {\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => {\n  event.preventDefault()\n\n  const button = event.target.closest(SELECTOR_DATA_TOGGLE)\n  const data = Button.getOrCreateInstance(button)\n\n  data.toggle()\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Button)\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.2): dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { isDisabled, isVisible } from '../util/index'\n\n/**\n * Constants\n */\n\nconst SelectorEngine = {\n  find(selector, element = document.documentElement) {\n    return [].concat(...Element.prototype.querySelectorAll.call(element, selector))\n  },\n\n  findOne(selector, element = document.documentElement) {\n    return Element.prototype.querySelector.call(element, selector)\n  },\n\n  children(element, selector) {\n    return [].concat(...element.children).filter(child => child.matches(selector))\n  },\n\n  parents(element, selector) {\n    const parents = []\n    let ancestor = element.parentNode.closest(selector)\n\n    while (ancestor) {\n      parents.push(ancestor)\n      ancestor = ancestor.parentNode.closest(selector)\n    }\n\n    return parents\n  },\n\n  prev(element, selector) {\n    let previous = element.previousElementSibling\n\n    while (previous) {\n      if (previous.matches(selector)) {\n        return [previous]\n      }\n\n      previous = previous.previousElementSibling\n    }\n\n    return []\n  },\n  // TODO: this is now unused; remove later along with prev()\n  next(element, selector) {\n    let next = element.nextElementSibling\n\n    while (next) {\n      if (next.matches(selector)) {\n        return [next]\n      }\n\n      next = next.nextElementSibling\n    }\n\n    return []\n  },\n\n  focusableChildren(element) {\n    const focusables = [\n      'a',\n      'button',\n      'input',\n      'textarea',\n      'select',\n      'details',\n      '[tabindex]',\n      '[contenteditable=\"true\"]'\n    ].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(',')\n\n    return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el))\n  }\n}\n\nexport default SelectorEngine\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.2): util/swipe.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Config from './config'\nimport EventHandler from '../dom/event-handler'\nimport { execute } from './index'\n\n/**\n * Constants\n */\n\nconst NAME = 'swipe'\nconst EVENT_KEY = '.bs.swipe'\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst POINTER_TYPE_TOUCH = 'touch'\nconst POINTER_TYPE_PEN = 'pen'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n  endCallback: null,\n  leftCallback: null,\n  rightCallback: null\n}\n\nconst DefaultType = {\n  endCallback: '(function|null)',\n  leftCallback: '(function|null)',\n  rightCallback: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Swipe extends Config {\n  constructor(element, config) {\n    super()\n    this._element = element\n\n    if (!element || !Swipe.isSupported()) {\n      return\n    }\n\n    this._config = this._getConfig(config)\n    this._deltaX = 0\n    this._supportPointerEvents = Boolean(window.PointerEvent)\n    this._initEvents()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  dispose() {\n    EventHandler.off(this._element, EVENT_KEY)\n  }\n\n  // Private\n  _start(event) {\n    if (!this._supportPointerEvents) {\n      this._deltaX = event.touches[0].clientX\n\n      return\n    }\n\n    if (this._eventIsPointerPenTouch(event)) {\n      this._deltaX = event.clientX\n    }\n  }\n\n  _end(event) {\n    if (this._eventIsPointerPenTouch(event)) {\n      this._deltaX = event.clientX - this._deltaX\n    }\n\n    this._handleSwipe()\n    execute(this._config.endCallback)\n  }\n\n  _move(event) {\n    this._deltaX = event.touches && event.touches.length > 1 ?\n      0 :\n      event.touches[0].clientX - this._deltaX\n  }\n\n  _handleSwipe() {\n    const absDeltaX = Math.abs(this._deltaX)\n\n    if (absDeltaX <= SWIPE_THRESHOLD) {\n      return\n    }\n\n    const direction = absDeltaX / this._deltaX\n\n    this._deltaX = 0\n\n    if (!direction) {\n      return\n    }\n\n    execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback)\n  }\n\n  _initEvents() {\n    if (this._supportPointerEvents) {\n      EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event))\n      EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event))\n\n      this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n    } else {\n      EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event))\n      EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event))\n      EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event))\n    }\n  }\n\n  _eventIsPointerPenTouch(event) {\n    return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)\n  }\n\n  // Static\n  static isSupported() {\n    return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n  }\n}\n\nexport default Swipe\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.2): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  defineJQueryPlugin,\n  getElementFromSelector,\n  getNextActiveElement,\n  isRTL,\n  isVisible,\n  reflow,\n  triggerTransitionEnd\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport Swipe from './util/swipe'\nimport BaseComponent from './base-component'\n\n/**\n * Constants\n */\n\nconst NAME = 'carousel'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\n\nconst ORDER_NEXT = 'next'\nconst ORDER_PREV = 'prev'\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\nconst EVENT_SLID = `slid${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_CAROUSEL = 'carousel'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_SLIDE = 'slide'\nconst CLASS_NAME_END = 'carousel-item-end'\nconst CLASS_NAME_START = 'carousel-item-start'\nconst CLASS_NAME_NEXT = 'carousel-item-next'\nconst CLASS_NAME_PREV = 'carousel-item-prev'\n\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ITEM = '.carousel-item'\nconst SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM\nconst SELECTOR_ITEM_IMG = '.carousel-item img'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]'\n\nconst KEY_TO_DIRECTION = {\n  [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\n  [ARROW_RIGHT_KEY]: DIRECTION_LEFT\n}\n\nconst Default = {\n  interval: 5000,\n  keyboard: true,\n  pause: 'hover',\n  ride: false,\n  touch: true,\n  wrap: true\n}\n\nconst DefaultType = {\n  interval: '(number|boolean)', // TODO:v6 remove boolean support\n  keyboard: 'boolean',\n  pause: '(string|boolean)',\n  ride: '(boolean|string)',\n  touch: 'boolean',\n  wrap: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Carousel extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._interval = null\n    this._activeElement = null\n    this._isSliding = false\n    this.touchTimeout = null\n    this._swipeHelper = null\n\n    this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n    this._addEventListeners()\n\n    if (this._config.ride === CLASS_NAME_CAROUSEL) {\n      this.cycle()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  next() {\n    this._slide(ORDER_NEXT)\n  }\n\n  nextWhenVisible() {\n    // FIXME TODO use `document.visibilityState`\n    // Don't call next when the page isn't visible\n    // or the carousel or its parent isn't visible\n    if (!document.hidden && isVisible(this._element)) {\n      this.next()\n    }\n  }\n\n  prev() {\n    this._slide(ORDER_PREV)\n  }\n\n  pause() {\n    if (this._isSliding) {\n      triggerTransitionEnd(this._element)\n    }\n\n    this._clearInterval()\n  }\n\n  cycle() {\n    this._clearInterval()\n    this._updateInterval()\n\n    this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval)\n  }\n\n  _maybeEnableCycle() {\n    if (!this._config.ride) {\n      return\n    }\n\n    if (this._isSliding) {\n      EventHandler.one(this._element, EVENT_SLID, () => this.cycle())\n      return\n    }\n\n    this.cycle()\n  }\n\n  to(index) {\n    const items = this._getItems()\n    if (index > items.length - 1 || index < 0) {\n      return\n    }\n\n    if (this._isSliding) {\n      EventHandler.one(this._element, EVENT_SLID, () => this.to(index))\n      return\n    }\n\n    const activeIndex = this._getItemIndex(this._getActive())\n    if (activeIndex === index) {\n      return\n    }\n\n    const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV\n\n    this._slide(order, items[index])\n  }\n\n  dispose() {\n    if (this._swipeHelper) {\n      this._swipeHelper.dispose()\n    }\n\n    super.dispose()\n  }\n\n  // Private\n  _configAfterMerge(config) {\n    config.defaultInterval = config.interval\n    return config\n  }\n\n  _addEventListeners() {\n    if (this._config.keyboard) {\n      EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n    }\n\n    if (this._config.pause === 'hover') {\n      EventHandler.on(this._element, EVENT_MOUSEENTER, () => this.pause())\n      EventHandler.on(this._element, EVENT_MOUSELEAVE, () => this._maybeEnableCycle())\n    }\n\n    if (this._config.touch && Swipe.isSupported()) {\n      this._addTouchEventListeners()\n    }\n  }\n\n  _addTouchEventListeners() {\n    for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) {\n      EventHandler.on(img, EVENT_DRAG_START, event => event.preventDefault())\n    }\n\n    const endCallBack = () => {\n      if (this._config.pause !== 'hover') {\n        return\n      }\n\n      // If it's a touch-enabled device, mouseenter/leave are fired as\n      // part of the mouse compatibility events on first tap - the carousel\n      // would stop cycling until user tapped out of it;\n      // here, we listen for touchend, explicitly pause the carousel\n      // (as if it's the second time we tap on it, mouseenter compat event\n      // is NOT fired) and after a timeout (to allow for mouse compatibility\n      // events to fire) we explicitly restart cycling\n\n      this.pause()\n      if (this.touchTimeout) {\n        clearTimeout(this.touchTimeout)\n      }\n\n      this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n    }\n\n    const swipeConfig = {\n      leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)),\n      rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)),\n      endCallback: endCallBack\n    }\n\n    this._swipeHelper = new Swipe(this._element, swipeConfig)\n  }\n\n  _keydown(event) {\n    if (/input|textarea/i.test(event.target.tagName)) {\n      return\n    }\n\n    const direction = KEY_TO_DIRECTION[event.key]\n    if (direction) {\n      event.preventDefault()\n      this._slide(this._directionToOrder(direction))\n    }\n  }\n\n  _getItemIndex(element) {\n    return this._getItems().indexOf(element)\n  }\n\n  _setActiveIndicatorElement(index) {\n    if (!this._indicatorsElement) {\n      return\n    }\n\n    const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement)\n\n    activeIndicator.classList.remove(CLASS_NAME_ACTIVE)\n    activeIndicator.removeAttribute('aria-current')\n\n    const newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to=\"${index}\"]`, this._indicatorsElement)\n\n    if (newActiveIndicator) {\n      newActiveIndicator.classList.add(CLASS_NAME_ACTIVE)\n      newActiveIndicator.setAttribute('aria-current', 'true')\n    }\n  }\n\n  _updateInterval() {\n    const element = this._activeElement || this._getActive()\n\n    if (!element) {\n      return\n    }\n\n    const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10)\n\n    this._config.interval = elementInterval || this._config.defaultInterval\n  }\n\n  _slide(order, element = null) {\n    if (this._isSliding) {\n      return\n    }\n\n    const activeElement = this._getActive()\n    const isNext = order === ORDER_NEXT\n    const nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap)\n\n    if (nextElement === activeElement) {\n      return\n    }\n\n    const nextElementIndex = this._getItemIndex(nextElement)\n\n    const triggerEvent = eventName => {\n      return EventHandler.trigger(this._element, eventName, {\n        relatedTarget: nextElement,\n        direction: this._orderToDirection(order),\n        from: this._getItemIndex(activeElement),\n        to: nextElementIndex\n      })\n    }\n\n    const slideEvent = triggerEvent(EVENT_SLIDE)\n\n    if (slideEvent.defaultPrevented) {\n      return\n    }\n\n    if (!activeElement || !nextElement) {\n      // Some weirdness is happening, so we bail\n      // todo: change tests that use empty divs to avoid this check\n      return\n    }\n\n    const isCycling = Boolean(this._interval)\n    this.pause()\n\n    this._isSliding = true\n\n    this._setActiveIndicatorElement(nextElementIndex)\n    this._activeElement = nextElement\n\n    const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END\n    const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV\n\n    nextElement.classList.add(orderClassName)\n\n    reflow(nextElement)\n\n    activeElement.classList.add(directionalClassName)\n    nextElement.classList.add(directionalClassName)\n\n    const completeCallBack = () => {\n      nextElement.classList.remove(directionalClassName, orderClassName)\n      nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n      activeElement.classList.remove(CLASS_NAME_ACTIVE, orderClassName, directionalClassName)\n\n      this._isSliding = false\n\n      triggerEvent(EVENT_SLID)\n    }\n\n    this._queueCallback(completeCallBack, activeElement, this._isAnimated())\n\n    if (isCycling) {\n      this.cycle()\n    }\n  }\n\n  _isAnimated() {\n    return this._element.classList.contains(CLASS_NAME_SLIDE)\n  }\n\n  _getActive() {\n    return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n  }\n\n  _getItems() {\n    return SelectorEngine.find(SELECTOR_ITEM, this._element)\n  }\n\n  _clearInterval() {\n    if (this._interval) {\n      clearInterval(this._interval)\n      this._interval = null\n    }\n  }\n\n  _directionToOrder(direction) {\n    if (isRTL()) {\n      return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT\n    }\n\n    return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV\n  }\n\n  _orderToDirection(order) {\n    if (isRTL()) {\n      return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT\n    }\n\n    return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Carousel.getOrCreateInstance(this, config)\n\n      if (typeof config === 'number') {\n        data.to(config)\n        return\n      }\n\n      if (typeof config === 'string') {\n        if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, function (event) {\n  const target = getElementFromSelector(this)\n\n  if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n    return\n  }\n\n  event.preventDefault()\n\n  const carousel = Carousel.getOrCreateInstance(target)\n  const slideIndex = this.getAttribute('data-bs-slide-to')\n\n  if (slideIndex) {\n    carousel.to(slideIndex)\n    carousel._maybeEnableCycle()\n    return\n  }\n\n  if (Manipulator.getDataAttribute(this, 'slide') === 'next') {\n    carousel.next()\n    carousel._maybeEnableCycle()\n    return\n  }\n\n  carousel.prev()\n  carousel._maybeEnableCycle()\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE)\n\n  for (const carousel of carousels) {\n    Carousel.getOrCreateInstance(carousel)\n  }\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Carousel)\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.2): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  defineJQueryPlugin,\n  getElement,\n  getElementFromSelector,\n  getSelectorFromElement,\n  reflow\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * Constants\n */\n\nconst NAME = 'collapse'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\nconst CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`\nconst CLASS_NAME_HORIZONTAL = 'collapse-horizontal'\n\nconst WIDTH = 'width'\nconst HEIGHT = 'height'\n\nconst SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]'\n\nconst Default = {\n  parent: null,\n  toggle: true\n}\n\nconst DefaultType = {\n  parent: '(null|element)',\n  toggle: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Collapse extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._isTransitioning = false\n    this._triggerArray = []\n\n    const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n    for (const elem of toggleList) {\n      const selector = getSelectorFromElement(elem)\n      const filterElement = SelectorEngine.find(selector)\n        .filter(foundElement => foundElement === this._element)\n\n      if (selector !== null && filterElement.length) {\n        this._triggerArray.push(elem)\n      }\n    }\n\n    this._initializeChildren()\n\n    if (!this._config.parent) {\n      this._addAriaAndCollapsedClass(this._triggerArray, this._isShown())\n    }\n\n    if (this._config.toggle) {\n      this.toggle()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    if (this._isShown()) {\n      this.hide()\n    } else {\n      this.show()\n    }\n  }\n\n  show() {\n    if (this._isTransitioning || this._isShown()) {\n      return\n    }\n\n    let activeChildren = []\n\n    // find active children\n    if (this._config.parent) {\n      activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES)\n        .filter(element => element !== this._element)\n        .map(element => Collapse.getOrCreateInstance(element, { toggle: false }))\n    }\n\n    if (activeChildren.length && activeChildren[0]._isTransitioning) {\n      return\n    }\n\n    const startEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n    if (startEvent.defaultPrevented) {\n      return\n    }\n\n    for (const activeInstance of activeChildren) {\n      activeInstance.hide()\n    }\n\n    const dimension = this._getDimension()\n\n    this._element.classList.remove(CLASS_NAME_COLLAPSE)\n    this._element.classList.add(CLASS_NAME_COLLAPSING)\n\n    this._element.style[dimension] = 0\n\n    this._addAriaAndCollapsedClass(this._triggerArray, true)\n    this._isTransitioning = true\n\n    const complete = () => {\n      this._isTransitioning = false\n\n      this._element.classList.remove(CLASS_NAME_COLLAPSING)\n      this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n      this._element.style[dimension] = ''\n\n      EventHandler.trigger(this._element, EVENT_SHOWN)\n    }\n\n    const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n    const scrollSize = `scroll${capitalizedDimension}`\n\n    this._queueCallback(complete, this._element, true)\n    this._element.style[dimension] = `${this._element[scrollSize]}px`\n  }\n\n  hide() {\n    if (this._isTransitioning || !this._isShown()) {\n      return\n    }\n\n    const startEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n    if (startEvent.defaultPrevented) {\n      return\n    }\n\n    const dimension = this._getDimension()\n\n    this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n    reflow(this._element)\n\n    this._element.classList.add(CLASS_NAME_COLLAPSING)\n    this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n    for (const trigger of this._triggerArray) {\n      const element = getElementFromSelector(trigger)\n\n      if (element && !this._isShown(element)) {\n        this._addAriaAndCollapsedClass([trigger], false)\n      }\n    }\n\n    this._isTransitioning = true\n\n    const complete = () => {\n      this._isTransitioning = false\n      this._element.classList.remove(CLASS_NAME_COLLAPSING)\n      this._element.classList.add(CLASS_NAME_COLLAPSE)\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._element.style[dimension] = ''\n\n    this._queueCallback(complete, this._element, true)\n  }\n\n  _isShown(element = this._element) {\n    return element.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  // Private\n  _configAfterMerge(config) {\n    config.toggle = Boolean(config.toggle) // Coerce string values\n    config.parent = getElement(config.parent)\n    return config\n  }\n\n  _getDimension() {\n    return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT\n  }\n\n  _initializeChildren() {\n    if (!this._config.parent) {\n      return\n    }\n\n    const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE)\n\n    for (const element of children) {\n      const selected = getElementFromSelector(element)\n\n      if (selected) {\n        this._addAriaAndCollapsedClass([element], this._isShown(selected))\n      }\n    }\n  }\n\n  _getFirstLevelChildren(selector) {\n    const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent)\n    // remove children if greater depth\n    return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element))\n  }\n\n  _addAriaAndCollapsedClass(triggerArray, isOpen) {\n    if (!triggerArray.length) {\n      return\n    }\n\n    for (const element of triggerArray) {\n      element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen)\n      element.setAttribute('aria-expanded', isOpen)\n    }\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    const _config = {}\n    if (typeof config === 'string' && /show|hide/.test(config)) {\n      _config.toggle = false\n    }\n\n    return this.each(function () {\n      const data = Collapse.getOrCreateInstance(this, _config)\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n  if (event.target.tagName === 'A' || (event.delegateTarget && event.delegateTarget.tagName === 'A')) {\n    event.preventDefault()\n  }\n\n  const selector = getSelectorFromElement(this)\n  const selectorElements = SelectorEngine.find(selector)\n\n  for (const element of selectorElements) {\n    Collapse.getOrCreateInstance(element, { toggle: false }).toggle()\n  }\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Collapse)\n\nexport default Collapse\n","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n  return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n  return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","export default function getNodeName(element) {\n  return element ? (element.nodeName || '').toLowerCase() : null;\n}","export default function getWindow(node) {\n  if (node == null) {\n    return window;\n  }\n\n  if (node.toString() !== '[object Window]') {\n    var ownerDocument = node.ownerDocument;\n    return ownerDocument ? ownerDocument.defaultView || window : window;\n  }\n\n  return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n  var OwnElement = getWindow(node).Element;\n  return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n  var OwnElement = getWindow(node).HTMLElement;\n  return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n  // IE 11 has no ShadowRoot\n  if (typeof ShadowRoot === 'undefined') {\n    return false;\n  }\n\n  var OwnElement = getWindow(node).ShadowRoot;\n  return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n  var state = _ref.state;\n  Object.keys(state.elements).forEach(function (name) {\n    var style = state.styles[name] || {};\n    var attributes = state.attributes[name] || {};\n    var element = state.elements[name]; // arrow is optional + virtual elements\n\n    if (!isHTMLElement(element) || !getNodeName(element)) {\n      return;\n    } // Flow doesn't support to extend this property, but it's the most\n    // effective way to apply styles to an HTMLElement\n    // $FlowFixMe[cannot-write]\n\n\n    Object.assign(element.style, style);\n    Object.keys(attributes).forEach(function (name) {\n      var value = attributes[name];\n\n      if (value === false) {\n        element.removeAttribute(name);\n      } else {\n        element.setAttribute(name, value === true ? '' : value);\n      }\n    });\n  });\n}\n\nfunction effect(_ref2) {\n  var state = _ref2.state;\n  var initialStyles = {\n    popper: {\n      position: state.options.strategy,\n      left: '0',\n      top: '0',\n      margin: '0'\n    },\n    arrow: {\n      position: 'absolute'\n    },\n    reference: {}\n  };\n  Object.assign(state.elements.popper.style, initialStyles.popper);\n  state.styles = initialStyles;\n\n  if (state.elements.arrow) {\n    Object.assign(state.elements.arrow.style, initialStyles.arrow);\n  }\n\n  return function () {\n    Object.keys(state.elements).forEach(function (name) {\n      var element = state.elements[name];\n      var attributes = state.attributes[name] || {};\n      var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n      var style = styleProperties.reduce(function (style, property) {\n        style[property] = '';\n        return style;\n      }, {}); // arrow is optional + virtual elements\n\n      if (!isHTMLElement(element) || !getNodeName(element)) {\n        return;\n      }\n\n      Object.assign(element.style, style);\n      Object.keys(attributes).forEach(function (attribute) {\n        element.removeAttribute(attribute);\n      });\n    });\n  };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'applyStyles',\n  enabled: true,\n  phase: 'write',\n  fn: applyStyles,\n  effect: effect,\n  requires: ['computeStyles']\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n  return placement.split('-')[0];\n}","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n  var uaData = navigator.userAgentData;\n\n  if (uaData != null && uaData.brands) {\n    return uaData.brands.map(function (item) {\n      return item.brand + \"/\" + item.version;\n    }).join(' ');\n  }\n\n  return navigator.userAgent;\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n  return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n  if (includeScale === void 0) {\n    includeScale = false;\n  }\n\n  if (isFixedStrategy === void 0) {\n    isFixedStrategy = false;\n  }\n\n  var clientRect = element.getBoundingClientRect();\n  var scaleX = 1;\n  var scaleY = 1;\n\n  if (includeScale && isHTMLElement(element)) {\n    scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n    scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n  }\n\n  var _ref = isElement(element) ? getWindow(element) : window,\n      visualViewport = _ref.visualViewport;\n\n  var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n  var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n  var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n  var width = clientRect.width / scaleX;\n  var height = clientRect.height / scaleY;\n  return {\n    width: width,\n    height: height,\n    top: y,\n    right: x + width,\n    bottom: y + height,\n    left: x,\n    x: x,\n    y: y\n  };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n  var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n  // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n  var width = element.offsetWidth;\n  var height = element.offsetHeight;\n\n  if (Math.abs(clientRect.width - width) <= 1) {\n    width = clientRect.width;\n  }\n\n  if (Math.abs(clientRect.height - height) <= 1) {\n    height = clientRect.height;\n  }\n\n  return {\n    x: element.offsetLeft,\n    y: element.offsetTop,\n    width: width,\n    height: height\n  };\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n  var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n  if (parent.contains(child)) {\n    return true;\n  } // then fallback to custom implementation with Shadow DOM support\n  else if (rootNode && isShadowRoot(rootNode)) {\n      var next = child;\n\n      do {\n        if (next && parent.isSameNode(next)) {\n          return true;\n        } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n        next = next.parentNode || next.host;\n      } while (next);\n    } // Give up, the result is false\n\n\n  return false;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n  return getWindow(element).getComputedStyle(element);\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n  return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n  // $FlowFixMe[incompatible-return]: assume body is always available\n  return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n  element.document) || window.document).documentElement;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n  if (getNodeName(element) === 'html') {\n    return element;\n  }\n\n  return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n    // $FlowFixMe[incompatible-return]\n    // $FlowFixMe[prop-missing]\n    element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n    element.parentNode || ( // DOM Element detected\n    isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n    // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n    getDocumentElement(element) // fallback\n\n  );\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n  if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n  getComputedStyle(element).position === 'fixed') {\n    return null;\n  }\n\n  return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n  var isFirefox = /firefox/i.test(getUAString());\n  var isIE = /Trident/i.test(getUAString());\n\n  if (isIE && isHTMLElement(element)) {\n    // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n    var elementCss = getComputedStyle(element);\n\n    if (elementCss.position === 'fixed') {\n      return null;\n    }\n  }\n\n  var currentNode = getParentNode(element);\n\n  if (isShadowRoot(currentNode)) {\n    currentNode = currentNode.host;\n  }\n\n  while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n    var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n    // create a containing block.\n    // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n    if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n      return currentNode;\n    } else {\n      currentNode = currentNode.parentNode;\n    }\n  }\n\n  return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n  var window = getWindow(element);\n  var offsetParent = getTrueOffsetParent(element);\n\n  while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n    offsetParent = getTrueOffsetParent(offsetParent);\n  }\n\n  if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n    return window;\n  }\n\n  return offsetParent || getContainingBlock(element) || window;\n}","export default function getMainAxisFromPlacement(placement) {\n  return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n  return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n  var v = within(min, value, max);\n  return v > max ? max : v;\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n  return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function getFreshSideObject() {\n  return {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0\n  };\n}","export default function expandToHashMap(value, keys) {\n  return keys.reduce(function (hashMap, key) {\n    hashMap[key] = value;\n    return hashMap;\n  }, {});\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n  padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n    placement: state.placement\n  })) : padding;\n  return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n  var _state$modifiersData$;\n\n  var state = _ref.state,\n      name = _ref.name,\n      options = _ref.options;\n  var arrowElement = state.elements.arrow;\n  var popperOffsets = state.modifiersData.popperOffsets;\n  var basePlacement = getBasePlacement(state.placement);\n  var axis = getMainAxisFromPlacement(basePlacement);\n  var isVertical = [left, right].indexOf(basePlacement) >= 0;\n  var len = isVertical ? 'height' : 'width';\n\n  if (!arrowElement || !popperOffsets) {\n    return;\n  }\n\n  var paddingObject = toPaddingObject(options.padding, state);\n  var arrowRect = getLayoutRect(arrowElement);\n  var minProp = axis === 'y' ? top : left;\n  var maxProp = axis === 'y' ? bottom : right;\n  var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n  var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n  var arrowOffsetParent = getOffsetParent(arrowElement);\n  var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n  var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n  // outside of the popper bounds\n\n  var min = paddingObject[minProp];\n  var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n  var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n  var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n  var axisProp = axis;\n  state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n  var state = _ref2.state,\n      options = _ref2.options;\n  var _options$element = options.element,\n      arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n  if (arrowElement == null) {\n    return;\n  } // CSS selector\n\n\n  if (typeof arrowElement === 'string') {\n    arrowElement = state.elements.popper.querySelector(arrowElement);\n\n    if (!arrowElement) {\n      return;\n    }\n  }\n\n  if (process.env.NODE_ENV !== \"production\") {\n    if (!isHTMLElement(arrowElement)) {\n      console.error(['Popper: \"arrow\" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' '));\n    }\n  }\n\n  if (!contains(state.elements.popper, arrowElement)) {\n    if (process.env.NODE_ENV !== \"production\") {\n      console.error(['Popper: \"arrow\" modifier\\'s `element` must be a child of the popper', 'element.'].join(' '));\n    }\n\n    return;\n  }\n\n  state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'arrow',\n  enabled: true,\n  phase: 'main',\n  fn: arrow,\n  effect: effect,\n  requires: ['popperOffsets'],\n  requiresIfExists: ['preventOverflow']\n};","export default function getVariation(placement) {\n  return placement.split('-')[1];\n}","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n  top: 'auto',\n  right: 'auto',\n  bottom: 'auto',\n  left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref) {\n  var x = _ref.x,\n      y = _ref.y;\n  var win = window;\n  var dpr = win.devicePixelRatio || 1;\n  return {\n    x: round(x * dpr) / dpr || 0,\n    y: round(y * dpr) / dpr || 0\n  };\n}\n\nexport function mapToStyles(_ref2) {\n  var _Object$assign2;\n\n  var popper = _ref2.popper,\n      popperRect = _ref2.popperRect,\n      placement = _ref2.placement,\n      variation = _ref2.variation,\n      offsets = _ref2.offsets,\n      position = _ref2.position,\n      gpuAcceleration = _ref2.gpuAcceleration,\n      adaptive = _ref2.adaptive,\n      roundOffsets = _ref2.roundOffsets,\n      isFixed = _ref2.isFixed;\n  var _offsets$x = offsets.x,\n      x = _offsets$x === void 0 ? 0 : _offsets$x,\n      _offsets$y = offsets.y,\n      y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n  var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n    x: x,\n    y: y\n  }) : {\n    x: x,\n    y: y\n  };\n\n  x = _ref3.x;\n  y = _ref3.y;\n  var hasX = offsets.hasOwnProperty('x');\n  var hasY = offsets.hasOwnProperty('y');\n  var sideX = left;\n  var sideY = top;\n  var win = window;\n\n  if (adaptive) {\n    var offsetParent = getOffsetParent(popper);\n    var heightProp = 'clientHeight';\n    var widthProp = 'clientWidth';\n\n    if (offsetParent === getWindow(popper)) {\n      offsetParent = getDocumentElement(popper);\n\n      if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n        heightProp = 'scrollHeight';\n        widthProp = 'scrollWidth';\n      }\n    } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n    offsetParent = offsetParent;\n\n    if (placement === top || (placement === left || placement === right) && variation === end) {\n      sideY = bottom;\n      var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n      offsetParent[heightProp];\n      y -= offsetY - popperRect.height;\n      y *= gpuAcceleration ? 1 : -1;\n    }\n\n    if (placement === left || (placement === top || placement === bottom) && variation === end) {\n      sideX = right;\n      var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n      offsetParent[widthProp];\n      x -= offsetX - popperRect.width;\n      x *= gpuAcceleration ? 1 : -1;\n    }\n  }\n\n  var commonStyles = Object.assign({\n    position: position\n  }, adaptive && unsetSides);\n\n  var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n    x: x,\n    y: y\n  }) : {\n    x: x,\n    y: y\n  };\n\n  x = _ref4.x;\n  y = _ref4.y;\n\n  if (gpuAcceleration) {\n    var _Object$assign;\n\n    return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n  }\n\n  return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n  var state = _ref5.state,\n      options = _ref5.options;\n  var _options$gpuAccelerat = options.gpuAcceleration,\n      gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n      _options$adaptive = options.adaptive,\n      adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n      _options$roundOffsets = options.roundOffsets,\n      roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n\n  if (process.env.NODE_ENV !== \"production\") {\n    var transitionProperty = getComputedStyle(state.elements.popper).transitionProperty || '';\n\n    if (adaptive && ['transform', 'top', 'right', 'bottom', 'left'].some(function (property) {\n      return transitionProperty.indexOf(property) >= 0;\n    })) {\n      console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: \"transform\", \"top\", \"right\", \"bottom\", \"left\".', '\\n\\n', 'Disable the \"computeStyles\" modifier\\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\\n\\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' '));\n    }\n  }\n\n  var commonStyles = {\n    placement: getBasePlacement(state.placement),\n    variation: getVariation(state.placement),\n    popper: state.elements.popper,\n    popperRect: state.rects.popper,\n    gpuAcceleration: gpuAcceleration,\n    isFixed: state.options.strategy === 'fixed'\n  };\n\n  if (state.modifiersData.popperOffsets != null) {\n    state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n      offsets: state.modifiersData.popperOffsets,\n      position: state.options.strategy,\n      adaptive: adaptive,\n      roundOffsets: roundOffsets\n    })));\n  }\n\n  if (state.modifiersData.arrow != null) {\n    state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n      offsets: state.modifiersData.arrow,\n      position: 'absolute',\n      adaptive: false,\n      roundOffsets: roundOffsets\n    })));\n  }\n\n  state.attributes.popper = Object.assign({}, state.attributes.popper, {\n    'data-popper-placement': state.placement\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'computeStyles',\n  enabled: true,\n  phase: 'beforeWrite',\n  fn: computeStyles,\n  data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n  passive: true\n};\n\nfunction effect(_ref) {\n  var state = _ref.state,\n      instance = _ref.instance,\n      options = _ref.options;\n  var _options$scroll = options.scroll,\n      scroll = _options$scroll === void 0 ? true : _options$scroll,\n      _options$resize = options.resize,\n      resize = _options$resize === void 0 ? true : _options$resize;\n  var window = getWindow(state.elements.popper);\n  var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n  if (scroll) {\n    scrollParents.forEach(function (scrollParent) {\n      scrollParent.addEventListener('scroll', instance.update, passive);\n    });\n  }\n\n  if (resize) {\n    window.addEventListener('resize', instance.update, passive);\n  }\n\n  return function () {\n    if (scroll) {\n      scrollParents.forEach(function (scrollParent) {\n        scrollParent.removeEventListener('scroll', instance.update, passive);\n      });\n    }\n\n    if (resize) {\n      window.removeEventListener('resize', instance.update, passive);\n    }\n  };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'eventListeners',\n  enabled: true,\n  phase: 'write',\n  fn: function fn() {},\n  effect: effect,\n  data: {}\n};","var hash = {\n  left: 'right',\n  right: 'left',\n  bottom: 'top',\n  top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n  return placement.replace(/left|right|bottom|top/g, function (matched) {\n    return hash[matched];\n  });\n}","var hash = {\n  start: 'end',\n  end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n  return placement.replace(/start|end/g, function (matched) {\n    return hash[matched];\n  });\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n  var win = getWindow(node);\n  var scrollLeft = win.pageXOffset;\n  var scrollTop = win.pageYOffset;\n  return {\n    scrollLeft: scrollLeft,\n    scrollTop: scrollTop\n  };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n  // If <html> has a CSS width greater than the viewport, then this will be\n  // incorrect for RTL.\n  // Popper 1 is broken in this case and never had a bug report so let's assume\n  // it's not an issue. I don't think anyone ever specifies width on <html>\n  // anyway.\n  // Browsers where the left scrollbar doesn't cause an issue report `0` for\n  // this (e.g. Edge 2019, IE11, Safari)\n  return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n  // Firefox wants us to check `-x` and `-y` variations as well\n  var _getComputedStyle = getComputedStyle(element),\n      overflow = _getComputedStyle.overflow,\n      overflowX = _getComputedStyle.overflowX,\n      overflowY = _getComputedStyle.overflowY;\n\n  return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n  if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n    // $FlowFixMe[incompatible-return]: assume body is always available\n    return node.ownerDocument.body;\n  }\n\n  if (isHTMLElement(node) && isScrollParent(node)) {\n    return node;\n  }\n\n  return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n  var _element$ownerDocumen;\n\n  if (list === void 0) {\n    list = [];\n  }\n\n  var scrollParent = getScrollParent(element);\n  var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n  var win = getWindow(scrollParent);\n  var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n  var updatedList = list.concat(target);\n  return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n  updatedList.concat(listScrollParents(getParentNode(target)));\n}","export default function rectToClientRect(rect) {\n  return Object.assign({}, rect, {\n    left: rect.x,\n    top: rect.y,\n    right: rect.x + rect.width,\n    bottom: rect.y + rect.height\n  });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n  var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n  rect.top = rect.top + element.clientTop;\n  rect.left = rect.left + element.clientLeft;\n  rect.bottom = rect.top + element.clientHeight;\n  rect.right = rect.left + element.clientWidth;\n  rect.width = element.clientWidth;\n  rect.height = element.clientHeight;\n  rect.x = rect.left;\n  rect.y = rect.top;\n  return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n  return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n  var clippingParents = listScrollParents(getParentNode(element));\n  var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n  var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n  if (!isElement(clipperElement)) {\n    return [];\n  } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n  return clippingParents.filter(function (clippingParent) {\n    return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n  });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n  var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n  var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n  var firstClippingParent = clippingParents[0];\n  var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n    var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n    accRect.top = max(rect.top, accRect.top);\n    accRect.right = min(rect.right, accRect.right);\n    accRect.bottom = min(rect.bottom, accRect.bottom);\n    accRect.left = max(rect.left, accRect.left);\n    return accRect;\n  }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n  clippingRect.width = clippingRect.right - clippingRect.left;\n  clippingRect.height = clippingRect.bottom - clippingRect.top;\n  clippingRect.x = clippingRect.left;\n  clippingRect.y = clippingRect.top;\n  return clippingRect;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n  var win = getWindow(element);\n  var html = getDocumentElement(element);\n  var visualViewport = win.visualViewport;\n  var width = html.clientWidth;\n  var height = html.clientHeight;\n  var x = 0;\n  var y = 0;\n\n  if (visualViewport) {\n    width = visualViewport.width;\n    height = visualViewport.height;\n    var layoutViewport = isLayoutViewport();\n\n    if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n      x = visualViewport.offsetLeft;\n      y = visualViewport.offsetTop;\n    }\n  }\n\n  return {\n    width: width,\n    height: height,\n    x: x + getWindowScrollBarX(element),\n    y: y\n  };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n  var _element$ownerDocumen;\n\n  var html = getDocumentElement(element);\n  var winScroll = getWindowScroll(element);\n  var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n  var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n  var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n  var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n  var y = -winScroll.scrollTop;\n\n  if (getComputedStyle(body || html).direction === 'rtl') {\n    x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n  }\n\n  return {\n    width: width,\n    height: height,\n    x: x,\n    y: y\n  };\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n  var reference = _ref.reference,\n      element = _ref.element,\n      placement = _ref.placement;\n  var basePlacement = placement ? getBasePlacement(placement) : null;\n  var variation = placement ? getVariation(placement) : null;\n  var commonX = reference.x + reference.width / 2 - element.width / 2;\n  var commonY = reference.y + reference.height / 2 - element.height / 2;\n  var offsets;\n\n  switch (basePlacement) {\n    case top:\n      offsets = {\n        x: commonX,\n        y: reference.y - element.height\n      };\n      break;\n\n    case bottom:\n      offsets = {\n        x: commonX,\n        y: reference.y + reference.height\n      };\n      break;\n\n    case right:\n      offsets = {\n        x: reference.x + reference.width,\n        y: commonY\n      };\n      break;\n\n    case left:\n      offsets = {\n        x: reference.x - element.width,\n        y: commonY\n      };\n      break;\n\n    default:\n      offsets = {\n        x: reference.x,\n        y: reference.y\n      };\n  }\n\n  var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n  if (mainAxis != null) {\n    var len = mainAxis === 'y' ? 'height' : 'width';\n\n    switch (variation) {\n      case start:\n        offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n        break;\n\n      case end:\n        offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n        break;\n\n      default:\n    }\n  }\n\n  return offsets;\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  var _options = options,\n      _options$placement = _options.placement,\n      placement = _options$placement === void 0 ? state.placement : _options$placement,\n      _options$strategy = _options.strategy,\n      strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n      _options$boundary = _options.boundary,\n      boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n      _options$rootBoundary = _options.rootBoundary,\n      rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n      _options$elementConte = _options.elementContext,\n      elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n      _options$altBoundary = _options.altBoundary,\n      altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n      _options$padding = _options.padding,\n      padding = _options$padding === void 0 ? 0 : _options$padding;\n  var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n  var altContext = elementContext === popper ? reference : popper;\n  var popperRect = state.rects.popper;\n  var element = state.elements[altBoundary ? altContext : elementContext];\n  var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n  var referenceClientRect = getBoundingClientRect(state.elements.reference);\n  var popperOffsets = computeOffsets({\n    reference: referenceClientRect,\n    element: popperRect,\n    strategy: 'absolute',\n    placement: placement\n  });\n  var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n  var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n  // 0 or negative = within the clipping rect\n\n  var overflowOffsets = {\n    top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n    bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n    left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n    right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n  };\n  var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n  if (elementContext === popper && offsetData) {\n    var offset = offsetData[placement];\n    Object.keys(overflowOffsets).forEach(function (key) {\n      var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n      var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n      overflowOffsets[key] += offset[axis] * multiply;\n    });\n  }\n\n  return overflowOffsets;\n}","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  var _options = options,\n      placement = _options.placement,\n      boundary = _options.boundary,\n      rootBoundary = _options.rootBoundary,\n      padding = _options.padding,\n      flipVariations = _options.flipVariations,\n      _options$allowedAutoP = _options.allowedAutoPlacements,\n      allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n  var variation = getVariation(placement);\n  var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n    return getVariation(placement) === variation;\n  }) : basePlacements;\n  var allowedPlacements = placements.filter(function (placement) {\n    return allowedAutoPlacements.indexOf(placement) >= 0;\n  });\n\n  if (allowedPlacements.length === 0) {\n    allowedPlacements = placements;\n\n    if (process.env.NODE_ENV !== \"production\") {\n      console.error(['Popper: The `allowedAutoPlacements` option did not allow any', 'placements. Ensure the `placement` option matches the variation', 'of the allowed placements.', 'For example, \"auto\" cannot be used to allow \"bottom-start\".', 'Use \"auto-start\" instead.'].join(' '));\n    }\n  } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n  var overflows = allowedPlacements.reduce(function (acc, placement) {\n    acc[placement] = detectOverflow(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      padding: padding\n    })[getBasePlacement(placement)];\n    return acc;\n  }, {});\n  return Object.keys(overflows).sort(function (a, b) {\n    return overflows[a] - overflows[b];\n  });\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n  if (getBasePlacement(placement) === auto) {\n    return [];\n  }\n\n  var oppositePlacement = getOppositePlacement(placement);\n  return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n  var state = _ref.state,\n      options = _ref.options,\n      name = _ref.name;\n\n  if (state.modifiersData[name]._skip) {\n    return;\n  }\n\n  var _options$mainAxis = options.mainAxis,\n      checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n      _options$altAxis = options.altAxis,\n      checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n      specifiedFallbackPlacements = options.fallbackPlacements,\n      padding = options.padding,\n      boundary = options.boundary,\n      rootBoundary = options.rootBoundary,\n      altBoundary = options.altBoundary,\n      _options$flipVariatio = options.flipVariations,\n      flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n      allowedAutoPlacements = options.allowedAutoPlacements;\n  var preferredPlacement = state.options.placement;\n  var basePlacement = getBasePlacement(preferredPlacement);\n  var isBasePlacement = basePlacement === preferredPlacement;\n  var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n  var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n    return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      padding: padding,\n      flipVariations: flipVariations,\n      allowedAutoPlacements: allowedAutoPlacements\n    }) : placement);\n  }, []);\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var checksMap = new Map();\n  var makeFallbackChecks = true;\n  var firstFittingPlacement = placements[0];\n\n  for (var i = 0; i < placements.length; i++) {\n    var placement = placements[i];\n\n    var _basePlacement = getBasePlacement(placement);\n\n    var isStartVariation = getVariation(placement) === start;\n    var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n    var len = isVertical ? 'width' : 'height';\n    var overflow = detectOverflow(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      altBoundary: altBoundary,\n      padding: padding\n    });\n    var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n    if (referenceRect[len] > popperRect[len]) {\n      mainVariationSide = getOppositePlacement(mainVariationSide);\n    }\n\n    var altVariationSide = getOppositePlacement(mainVariationSide);\n    var checks = [];\n\n    if (checkMainAxis) {\n      checks.push(overflow[_basePlacement] <= 0);\n    }\n\n    if (checkAltAxis) {\n      checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n    }\n\n    if (checks.every(function (check) {\n      return check;\n    })) {\n      firstFittingPlacement = placement;\n      makeFallbackChecks = false;\n      break;\n    }\n\n    checksMap.set(placement, checks);\n  }\n\n  if (makeFallbackChecks) {\n    // `2` may be desired in some cases – research later\n    var numberOfChecks = flipVariations ? 3 : 1;\n\n    var _loop = function _loop(_i) {\n      var fittingPlacement = placements.find(function (placement) {\n        var checks = checksMap.get(placement);\n\n        if (checks) {\n          return checks.slice(0, _i).every(function (check) {\n            return check;\n          });\n        }\n      });\n\n      if (fittingPlacement) {\n        firstFittingPlacement = fittingPlacement;\n        return \"break\";\n      }\n    };\n\n    for (var _i = numberOfChecks; _i > 0; _i--) {\n      var _ret = _loop(_i);\n\n      if (_ret === \"break\") break;\n    }\n  }\n\n  if (state.placement !== firstFittingPlacement) {\n    state.modifiersData[name]._skip = true;\n    state.placement = firstFittingPlacement;\n    state.reset = true;\n  }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'flip',\n  enabled: true,\n  phase: 'main',\n  fn: flip,\n  requiresIfExists: ['offset'],\n  data: {\n    _skip: false\n  }\n};","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n  if (preventedOffsets === void 0) {\n    preventedOffsets = {\n      x: 0,\n      y: 0\n    };\n  }\n\n  return {\n    top: overflow.top - rect.height - preventedOffsets.y,\n    right: overflow.right - rect.width + preventedOffsets.x,\n    bottom: overflow.bottom - rect.height + preventedOffsets.y,\n    left: overflow.left - rect.width - preventedOffsets.x\n  };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n  return [top, right, bottom, left].some(function (side) {\n    return overflow[side] >= 0;\n  });\n}\n\nfunction hide(_ref) {\n  var state = _ref.state,\n      name = _ref.name;\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var preventedOffsets = state.modifiersData.preventOverflow;\n  var referenceOverflow = detectOverflow(state, {\n    elementContext: 'reference'\n  });\n  var popperAltOverflow = detectOverflow(state, {\n    altBoundary: true\n  });\n  var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n  var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n  var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n  var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n  state.modifiersData[name] = {\n    referenceClippingOffsets: referenceClippingOffsets,\n    popperEscapeOffsets: popperEscapeOffsets,\n    isReferenceHidden: isReferenceHidden,\n    hasPopperEscaped: hasPopperEscaped\n  };\n  state.attributes.popper = Object.assign({}, state.attributes.popper, {\n    'data-popper-reference-hidden': isReferenceHidden,\n    'data-popper-escaped': hasPopperEscaped\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'hide',\n  enabled: true,\n  phase: 'main',\n  requiresIfExists: ['preventOverflow'],\n  fn: hide\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n  var basePlacement = getBasePlacement(placement);\n  var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n  var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n    placement: placement\n  })) : offset,\n      skidding = _ref[0],\n      distance = _ref[1];\n\n  skidding = skidding || 0;\n  distance = (distance || 0) * invertDistance;\n  return [left, right].indexOf(basePlacement) >= 0 ? {\n    x: distance,\n    y: skidding\n  } : {\n    x: skidding,\n    y: distance\n  };\n}\n\nfunction offset(_ref2) {\n  var state = _ref2.state,\n      options = _ref2.options,\n      name = _ref2.name;\n  var _options$offset = options.offset,\n      offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n  var data = placements.reduce(function (acc, placement) {\n    acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n    return acc;\n  }, {});\n  var _data$state$placement = data[state.placement],\n      x = _data$state$placement.x,\n      y = _data$state$placement.y;\n\n  if (state.modifiersData.popperOffsets != null) {\n    state.modifiersData.popperOffsets.x += x;\n    state.modifiersData.popperOffsets.y += y;\n  }\n\n  state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'offset',\n  enabled: true,\n  phase: 'main',\n  requires: ['popperOffsets'],\n  fn: offset\n};","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n  var state = _ref.state,\n      name = _ref.name;\n  // Offsets are the actual position the popper needs to have to be\n  // properly positioned near its reference element\n  // This is the most basic placement, and will be adjusted by\n  // the modifiers in the next step\n  state.modifiersData[name] = computeOffsets({\n    reference: state.rects.reference,\n    element: state.rects.popper,\n    strategy: 'absolute',\n    placement: state.placement\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'popperOffsets',\n  enabled: true,\n  phase: 'read',\n  fn: popperOffsets,\n  data: {}\n};","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n  var state = _ref.state,\n      options = _ref.options,\n      name = _ref.name;\n  var _options$mainAxis = options.mainAxis,\n      checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n      _options$altAxis = options.altAxis,\n      checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n      boundary = options.boundary,\n      rootBoundary = options.rootBoundary,\n      altBoundary = options.altBoundary,\n      padding = options.padding,\n      _options$tether = options.tether,\n      tether = _options$tether === void 0 ? true : _options$tether,\n      _options$tetherOffset = options.tetherOffset,\n      tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n  var overflow = detectOverflow(state, {\n    boundary: boundary,\n    rootBoundary: rootBoundary,\n    padding: padding,\n    altBoundary: altBoundary\n  });\n  var basePlacement = getBasePlacement(state.placement);\n  var variation = getVariation(state.placement);\n  var isBasePlacement = !variation;\n  var mainAxis = getMainAxisFromPlacement(basePlacement);\n  var altAxis = getAltAxis(mainAxis);\n  var popperOffsets = state.modifiersData.popperOffsets;\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n    placement: state.placement\n  })) : tetherOffset;\n  var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n    mainAxis: tetherOffsetValue,\n    altAxis: tetherOffsetValue\n  } : Object.assign({\n    mainAxis: 0,\n    altAxis: 0\n  }, tetherOffsetValue);\n  var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n  var data = {\n    x: 0,\n    y: 0\n  };\n\n  if (!popperOffsets) {\n    return;\n  }\n\n  if (checkMainAxis) {\n    var _offsetModifierState$;\n\n    var mainSide = mainAxis === 'y' ? top : left;\n    var altSide = mainAxis === 'y' ? bottom : right;\n    var len = mainAxis === 'y' ? 'height' : 'width';\n    var offset = popperOffsets[mainAxis];\n    var min = offset + overflow[mainSide];\n    var max = offset - overflow[altSide];\n    var additive = tether ? -popperRect[len] / 2 : 0;\n    var minLen = variation === start ? referenceRect[len] : popperRect[len];\n    var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n    // outside the reference bounds\n\n    var arrowElement = state.elements.arrow;\n    var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n      width: 0,\n      height: 0\n    };\n    var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n    var arrowPaddingMin = arrowPaddingObject[mainSide];\n    var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n    // to include its full size in the calculation. If the reference is small\n    // and near the edge of a boundary, the popper can overflow even if the\n    // reference is not overflowing as well (e.g. virtual elements with no\n    // width or height)\n\n    var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n    var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n    var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n    var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n    var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n    var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n    var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n    var tetherMax = offset + maxOffset - offsetModifierValue;\n    var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n    popperOffsets[mainAxis] = preventedOffset;\n    data[mainAxis] = preventedOffset - offset;\n  }\n\n  if (checkAltAxis) {\n    var _offsetModifierState$2;\n\n    var _mainSide = mainAxis === 'x' ? top : left;\n\n    var _altSide = mainAxis === 'x' ? bottom : right;\n\n    var _offset = popperOffsets[altAxis];\n\n    var _len = altAxis === 'y' ? 'height' : 'width';\n\n    var _min = _offset + overflow[_mainSide];\n\n    var _max = _offset - overflow[_altSide];\n\n    var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n    var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n    var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n    var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n    var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n    popperOffsets[altAxis] = _preventedOffset;\n    data[altAxis] = _preventedOffset - _offset;\n  }\n\n  state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'preventOverflow',\n  enabled: true,\n  phase: 'main',\n  fn: preventOverflow,\n  requiresIfExists: ['offset']\n};","export default function getAltAxis(axis) {\n  return axis === 'x' ? 'y' : 'x';\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n  var rect = element.getBoundingClientRect();\n  var scaleX = round(rect.width) / element.offsetWidth || 1;\n  var scaleY = round(rect.height) / element.offsetHeight || 1;\n  return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n  if (isFixed === void 0) {\n    isFixed = false;\n  }\n\n  var isOffsetParentAnElement = isHTMLElement(offsetParent);\n  var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n  var documentElement = getDocumentElement(offsetParent);\n  var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n  var scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  var offsets = {\n    x: 0,\n    y: 0\n  };\n\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n    isScrollParent(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n\n    if (isHTMLElement(offsetParent)) {\n      offsets = getBoundingClientRect(offsetParent, true);\n      offsets.x += offsetParent.clientLeft;\n      offsets.y += offsetParent.clientTop;\n    } else if (documentElement) {\n      offsets.x = getWindowScrollBarX(documentElement);\n    }\n  }\n\n  return {\n    x: rect.left + scroll.scrollLeft - offsets.x,\n    y: rect.top + scroll.scrollTop - offsets.y,\n    width: rect.width,\n    height: rect.height\n  };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n  if (node === getWindow(node) || !isHTMLElement(node)) {\n    return getWindowScroll(node);\n  } else {\n    return getHTMLElementScroll(node);\n  }\n}","export default function getHTMLElementScroll(element) {\n  return {\n    scrollLeft: element.scrollLeft,\n    scrollTop: element.scrollTop\n  };\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n  var map = new Map();\n  var visited = new Set();\n  var result = [];\n  modifiers.forEach(function (modifier) {\n    map.set(modifier.name, modifier);\n  }); // On visiting object, check for its dependencies and visit them recursively\n\n  function sort(modifier) {\n    visited.add(modifier.name);\n    var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n    requires.forEach(function (dep) {\n      if (!visited.has(dep)) {\n        var depModifier = map.get(dep);\n\n        if (depModifier) {\n          sort(depModifier);\n        }\n      }\n    });\n    result.push(modifier);\n  }\n\n  modifiers.forEach(function (modifier) {\n    if (!visited.has(modifier.name)) {\n      // check for visited object\n      sort(modifier);\n    }\n  });\n  return result;\n}\n\nexport default function orderModifiers(modifiers) {\n  // order based on dependencies\n  var orderedModifiers = order(modifiers); // order based on phase\n\n  return modifierPhases.reduce(function (acc, phase) {\n    return acc.concat(orderedModifiers.filter(function (modifier) {\n      return modifier.phase === phase;\n    }));\n  }, []);\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport getComputedStyle from \"./dom-utils/getComputedStyle.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport validateModifiers from \"./utils/validateModifiers.js\";\nimport uniqueBy from \"./utils/uniqueBy.js\";\nimport getBasePlacement from \"./utils/getBasePlacement.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nimport { auto } from \"./enums.js\";\nvar INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.';\nvar INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.';\nvar DEFAULT_OPTIONS = {\n  placement: 'bottom',\n  modifiers: [],\n  strategy: 'absolute'\n};\n\nfunction areValidElements() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  return !args.some(function (element) {\n    return !(element && typeof element.getBoundingClientRect === 'function');\n  });\n}\n\nexport function popperGenerator(generatorOptions) {\n  if (generatorOptions === void 0) {\n    generatorOptions = {};\n  }\n\n  var _generatorOptions = generatorOptions,\n      _generatorOptions$def = _generatorOptions.defaultModifiers,\n      defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n      _generatorOptions$def2 = _generatorOptions.defaultOptions,\n      defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n  return function createPopper(reference, popper, options) {\n    if (options === void 0) {\n      options = defaultOptions;\n    }\n\n    var state = {\n      placement: 'bottom',\n      orderedModifiers: [],\n      options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n      modifiersData: {},\n      elements: {\n        reference: reference,\n        popper: popper\n      },\n      attributes: {},\n      styles: {}\n    };\n    var effectCleanupFns = [];\n    var isDestroyed = false;\n    var instance = {\n      state: state,\n      setOptions: function setOptions(setOptionsAction) {\n        var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n        cleanupModifierEffects();\n        state.options = Object.assign({}, defaultOptions, state.options, options);\n        state.scrollParents = {\n          reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n          popper: listScrollParents(popper)\n        }; // Orders the modifiers based on their dependencies and `phase`\n        // properties\n\n        var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n        state.orderedModifiers = orderedModifiers.filter(function (m) {\n          return m.enabled;\n        }); // Validate the provided modifiers so that the consumer will get warned\n        // if one of the modifiers is invalid for any reason\n\n        if (process.env.NODE_ENV !== \"production\") {\n          var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function (_ref) {\n            var name = _ref.name;\n            return name;\n          });\n          validateModifiers(modifiers);\n\n          if (getBasePlacement(state.options.placement) === auto) {\n            var flipModifier = state.orderedModifiers.find(function (_ref2) {\n              var name = _ref2.name;\n              return name === 'flip';\n            });\n\n            if (!flipModifier) {\n              console.error(['Popper: \"auto\" placements require the \"flip\" modifier be', 'present and enabled to work.'].join(' '));\n            }\n          }\n\n          var _getComputedStyle = getComputedStyle(popper),\n              marginTop = _getComputedStyle.marginTop,\n              marginRight = _getComputedStyle.marginRight,\n              marginBottom = _getComputedStyle.marginBottom,\n              marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can\n          // cause bugs with positioning, so we'll warn the consumer\n\n\n          if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) {\n            return parseFloat(margin);\n          })) {\n            console.warn(['Popper: CSS \"margin\" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' '));\n          }\n        }\n\n        runModifierEffects();\n        return instance.update();\n      },\n      // Sync update – it will always be executed, even if not necessary. This\n      // is useful for low frequency updates where sync behavior simplifies the\n      // logic.\n      // For high frequency updates (e.g. `resize` and `scroll` events), always\n      // prefer the async Popper#update method\n      forceUpdate: function forceUpdate() {\n        if (isDestroyed) {\n          return;\n        }\n\n        var _state$elements = state.elements,\n            reference = _state$elements.reference,\n            popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n        // anymore\n\n        if (!areValidElements(reference, popper)) {\n          if (process.env.NODE_ENV !== \"production\") {\n            console.error(INVALID_ELEMENT_ERROR);\n          }\n\n          return;\n        } // Store the reference and popper rects to be read by modifiers\n\n\n        state.rects = {\n          reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n          popper: getLayoutRect(popper)\n        }; // Modifiers have the ability to reset the current update cycle. The\n        // most common use case for this is the `flip` modifier changing the\n        // placement, which then needs to re-run all the modifiers, because the\n        // logic was previously ran for the previous placement and is therefore\n        // stale/incorrect\n\n        state.reset = false;\n        state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n        // is filled with the initial data specified by the modifier. This means\n        // it doesn't persist and is fresh on each update.\n        // To ensure persistent data, use `${name}#persistent`\n\n        state.orderedModifiers.forEach(function (modifier) {\n          return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n        });\n        var __debug_loops__ = 0;\n\n        for (var index = 0; index < state.orderedModifiers.length; index++) {\n          if (process.env.NODE_ENV !== \"production\") {\n            __debug_loops__ += 1;\n\n            if (__debug_loops__ > 100) {\n              console.error(INFINITE_LOOP_ERROR);\n              break;\n            }\n          }\n\n          if (state.reset === true) {\n            state.reset = false;\n            index = -1;\n            continue;\n          }\n\n          var _state$orderedModifie = state.orderedModifiers[index],\n              fn = _state$orderedModifie.fn,\n              _state$orderedModifie2 = _state$orderedModifie.options,\n              _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n              name = _state$orderedModifie.name;\n\n          if (typeof fn === 'function') {\n            state = fn({\n              state: state,\n              options: _options,\n              name: name,\n              instance: instance\n            }) || state;\n          }\n        }\n      },\n      // Async and optimistically optimized update – it will not be executed if\n      // not necessary (debounced to run at most once-per-tick)\n      update: debounce(function () {\n        return new Promise(function (resolve) {\n          instance.forceUpdate();\n          resolve(state);\n        });\n      }),\n      destroy: function destroy() {\n        cleanupModifierEffects();\n        isDestroyed = true;\n      }\n    };\n\n    if (!areValidElements(reference, popper)) {\n      if (process.env.NODE_ENV !== \"production\") {\n        console.error(INVALID_ELEMENT_ERROR);\n      }\n\n      return instance;\n    }\n\n    instance.setOptions(options).then(function (state) {\n      if (!isDestroyed && options.onFirstUpdate) {\n        options.onFirstUpdate(state);\n      }\n    }); // Modifiers have the ability to execute arbitrary code before the first\n    // update cycle runs. They will be executed in the same order as the update\n    // cycle. This is useful when a modifier adds some persistent data that\n    // other modifiers need to use, but the modifier is run after the dependent\n    // one.\n\n    function runModifierEffects() {\n      state.orderedModifiers.forEach(function (_ref3) {\n        var name = _ref3.name,\n            _ref3$options = _ref3.options,\n            options = _ref3$options === void 0 ? {} : _ref3$options,\n            effect = _ref3.effect;\n\n        if (typeof effect === 'function') {\n          var cleanupFn = effect({\n            state: state,\n            name: name,\n            instance: instance,\n            options: options\n          });\n\n          var noopFn = function noopFn() {};\n\n          effectCleanupFns.push(cleanupFn || noopFn);\n        }\n      });\n    }\n\n    function cleanupModifierEffects() {\n      effectCleanupFns.forEach(function (fn) {\n        return fn();\n      });\n      effectCleanupFns = [];\n    }\n\n    return instance;\n  };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","export default function debounce(fn) {\n  var pending;\n  return function () {\n    if (!pending) {\n      pending = new Promise(function (resolve) {\n        Promise.resolve().then(function () {\n          pending = undefined;\n          resolve(fn());\n        });\n      });\n    }\n\n    return pending;\n  };\n}","export default function mergeByName(modifiers) {\n  var merged = modifiers.reduce(function (merged, current) {\n    var existing = merged[current.name];\n    merged[current.name] = existing ? Object.assign({}, existing, current, {\n      options: Object.assign({}, existing.options, current.options),\n      data: Object.assign({}, existing.data, current.data)\n    }) : current;\n    return merged;\n  }, {}); // IE11 does not support Object.values\n\n  return Object.keys(merged).map(function (key) {\n    return merged[key];\n  });\n}","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles];\nvar createPopper = /*#__PURE__*/popperGenerator({\n  defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow };","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n  defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.2): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\nimport {\n  defineJQueryPlugin,\n  getElement,\n  getNextActiveElement,\n  isDisabled,\n  isElement,\n  isRTL,\n  isVisible,\n  noop\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * Constants\n */\n\nconst NAME = 'dropdown'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst RIGHT_MOUSE_BUTTON = 2 // MouseEvent.button value for the secondary button, usually the right button\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_DROPUP = 'dropup'\nconst CLASS_NAME_DROPEND = 'dropend'\nconst CLASS_NAME_DROPSTART = 'dropstart'\nconst CLASS_NAME_DROPUP_CENTER = 'dropup-center'\nconst CLASS_NAME_DROPDOWN_CENTER = 'dropdown-center'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dropdown\"]:not(.disabled):not(:disabled)'\nconst SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE}.${CLASS_NAME_SHOW}`\nconst SELECTOR_MENU = '.dropdown-menu'\nconst SELECTOR_NAVBAR = '.navbar'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n\nconst PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start'\nconst PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end'\nconst PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start'\nconst PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end'\nconst PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start'\nconst PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start'\nconst PLACEMENT_TOPCENTER = 'top'\nconst PLACEMENT_BOTTOMCENTER = 'bottom'\n\nconst Default = {\n  autoClose: true,\n  boundary: 'clippingParents',\n  display: 'dynamic',\n  offset: [0, 2],\n  popperConfig: null,\n  reference: 'toggle'\n}\n\nconst DefaultType = {\n  autoClose: '(boolean|string)',\n  boundary: '(string|element)',\n  display: 'string',\n  offset: '(array|string|function)',\n  popperConfig: '(null|object|function)',\n  reference: '(string|element|object)'\n}\n\n/**\n * Class definition\n */\n\nclass Dropdown extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._popper = null\n    this._parent = this._element.parentNode // dropdown wrapper\n    // todo: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.2/forms/input-group/\n    this._menu = SelectorEngine.next(this._element, SELECTOR_MENU)[0] ||\n      SelectorEngine.prev(this._element, SELECTOR_MENU)[0] ||\n      SelectorEngine.findOne(SELECTOR_MENU, this._parent)\n    this._inNavbar = this._detectNavbar()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    return this._isShown() ? this.hide() : this.show()\n  }\n\n  show() {\n    if (isDisabled(this._element) || this._isShown()) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, relatedTarget)\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._createPopper()\n\n    // If this is a touch-enabled device we add extra\n    // empty mouseover listeners to the body's immediate children;\n    // only needed because of broken event delegation on iOS\n    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n    if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.on(element, 'mouseover', noop)\n      }\n    }\n\n    this._element.focus()\n    this._element.setAttribute('aria-expanded', true)\n\n    this._menu.classList.add(CLASS_NAME_SHOW)\n    this._element.classList.add(CLASS_NAME_SHOW)\n    EventHandler.trigger(this._element, EVENT_SHOWN, relatedTarget)\n  }\n\n  hide() {\n    if (isDisabled(this._element) || !this._isShown()) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n\n    this._completeHide(relatedTarget)\n  }\n\n  dispose() {\n    if (this._popper) {\n      this._popper.destroy()\n    }\n\n    super.dispose()\n  }\n\n  update() {\n    this._inNavbar = this._detectNavbar()\n    if (this._popper) {\n      this._popper.update()\n    }\n  }\n\n  // Private\n  _completeHide(relatedTarget) {\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE, relatedTarget)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    // If this is a touch-enabled device we remove the extra\n    // empty mouseover listeners we added for iOS support\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.off(element, 'mouseover', noop)\n      }\n    }\n\n    if (this._popper) {\n      this._popper.destroy()\n    }\n\n    this._menu.classList.remove(CLASS_NAME_SHOW)\n    this._element.classList.remove(CLASS_NAME_SHOW)\n    this._element.setAttribute('aria-expanded', 'false')\n    Manipulator.removeDataAttribute(this._menu, 'popper')\n    EventHandler.trigger(this._element, EVENT_HIDDEN, relatedTarget)\n  }\n\n  _getConfig(config) {\n    config = super._getConfig(config)\n\n    if (typeof config.reference === 'object' && !isElement(config.reference) &&\n      typeof config.reference.getBoundingClientRect !== 'function'\n    ) {\n      // Popper virtual elements require a getBoundingClientRect method\n      throw new TypeError(`${NAME.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`)\n    }\n\n    return config\n  }\n\n  _createPopper() {\n    if (typeof Popper === 'undefined') {\n      throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)')\n    }\n\n    let referenceElement = this._element\n\n    if (this._config.reference === 'parent') {\n      referenceElement = this._parent\n    } else if (isElement(this._config.reference)) {\n      referenceElement = getElement(this._config.reference)\n    } else if (typeof this._config.reference === 'object') {\n      referenceElement = this._config.reference\n    }\n\n    const popperConfig = this._getPopperConfig()\n    this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig)\n  }\n\n  _isShown() {\n    return this._menu.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _getPlacement() {\n    const parentDropdown = this._parent\n\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {\n      return PLACEMENT_RIGHT\n    }\n\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {\n      return PLACEMENT_LEFT\n    }\n\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) {\n      return PLACEMENT_TOPCENTER\n    }\n\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPDOWN_CENTER)) {\n      return PLACEMENT_BOTTOMCENTER\n    }\n\n    // We need to trim the value because custom properties can also include spaces\n    const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end'\n\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n      return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP\n    }\n\n    return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM\n  }\n\n  _detectNavbar() {\n    return this._element.closest(SELECTOR_NAVBAR) !== null\n  }\n\n  _getOffset() {\n    const { offset } = this._config\n\n    if (typeof offset === 'string') {\n      return offset.split(',').map(value => Number.parseInt(value, 10))\n    }\n\n    if (typeof offset === 'function') {\n      return popperData => offset(popperData, this._element)\n    }\n\n    return offset\n  }\n\n  _getPopperConfig() {\n    const defaultBsPopperConfig = {\n      placement: this._getPlacement(),\n      modifiers: [{\n        name: 'preventOverflow',\n        options: {\n          boundary: this._config.boundary\n        }\n      },\n      {\n        name: 'offset',\n        options: {\n          offset: this._getOffset()\n        }\n      }]\n    }\n\n    // Disable Popper if we have a static display or Dropdown is in Navbar\n    if (this._inNavbar || this._config.display === 'static') {\n      Manipulator.setDataAttribute(this._menu, 'popper', 'static') // todo:v6 remove\n      defaultBsPopperConfig.modifiers = [{\n        name: 'applyStyles',\n        enabled: false\n      }]\n    }\n\n    return {\n      ...defaultBsPopperConfig,\n      ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n    }\n  }\n\n  _selectMenuItem({ key, target }) {\n    const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(element => isVisible(element))\n\n    if (!items.length) {\n      return\n    }\n\n    // if target isn't included in items (e.g. when expanding the dropdown)\n    // allow cycling to get the last item in case key equals ARROW_UP_KEY\n    getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus()\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Dropdown.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config]()\n    })\n  }\n\n  static clearMenus(event) {\n    if (event.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY)) {\n      return\n    }\n\n    const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN)\n\n    for (const toggle of openToggles) {\n      const context = Dropdown.getInstance(toggle)\n      if (!context || context._config.autoClose === false) {\n        continue\n      }\n\n      const composedPath = event.composedPath()\n      const isMenuTarget = composedPath.includes(context._menu)\n      if (\n        composedPath.includes(context._element) ||\n        (context._config.autoClose === 'inside' && !isMenuTarget) ||\n        (context._config.autoClose === 'outside' && isMenuTarget)\n      ) {\n        continue\n      }\n\n      // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu\n      if (context._menu.contains(event.target) && ((event.type === 'keyup' && event.key === TAB_KEY) || /input|select|option|textarea|form/i.test(event.target.tagName))) {\n        continue\n      }\n\n      const relatedTarget = { relatedTarget: context._element }\n\n      if (event.type === 'click') {\n        relatedTarget.clickEvent = event\n      }\n\n      context._completeHide(relatedTarget)\n    }\n  }\n\n  static dataApiKeydownHandler(event) {\n    // If not an UP | DOWN | ESCAPE key => not a dropdown command\n    // If input/textarea && if key is other than ESCAPE => not a dropdown command\n\n    const isInput = /input|textarea/i.test(event.target.tagName)\n    const isEscapeEvent = event.key === ESCAPE_KEY\n    const isUpOrDownEvent = [ARROW_UP_KEY, ARROW_DOWN_KEY].includes(event.key)\n\n    if (!isUpOrDownEvent && !isEscapeEvent) {\n      return\n    }\n\n    if (isInput && !isEscapeEvent) {\n      return\n    }\n\n    event.preventDefault()\n\n    // todo: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.2/forms/input-group/\n    const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE) ?\n      this :\n      (SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0] ||\n        SelectorEngine.next(this, SELECTOR_DATA_TOGGLE)[0] ||\n        SelectorEngine.findOne(SELECTOR_DATA_TOGGLE, event.delegateTarget.parentNode))\n\n    const instance = Dropdown.getOrCreateInstance(getToggleButton)\n\n    if (isUpOrDownEvent) {\n      event.stopPropagation()\n      instance.show()\n      instance._selectMenuItem(event)\n      return\n    }\n\n    if (instance._isShown()) { // else is escape and we check if it is shown\n      event.stopPropagation()\n      instance.hide()\n      getToggleButton.focus()\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_CLICK_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  event.preventDefault()\n  Dropdown.getOrCreateInstance(this).toggle()\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Dropdown)\n\nexport default Dropdown\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.2): util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport SelectorEngine from '../dom/selector-engine'\nimport Manipulator from '../dom/manipulator'\nimport { isElement } from './index'\n\n/**\n * Constants\n */\n\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\nconst PROPERTY_PADDING = 'padding-right'\nconst PROPERTY_MARGIN = 'margin-right'\n\n/**\n * Class definition\n */\n\nclass ScrollBarHelper {\n  constructor() {\n    this._element = document.body\n  }\n\n  // Public\n  getWidth() {\n    // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n    const documentWidth = document.documentElement.clientWidth\n    return Math.abs(window.innerWidth - documentWidth)\n  }\n\n  hide() {\n    const width = this.getWidth()\n    this._disableOverFlow()\n    // give padding to element to balance the hidden scrollbar width\n    this._setElementAttributes(this._element, PROPERTY_PADDING, calculatedValue => calculatedValue + width)\n    // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\n    this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, calculatedValue => calculatedValue + width)\n    this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, calculatedValue => calculatedValue - width)\n  }\n\n  reset() {\n    this._resetElementAttributes(this._element, 'overflow')\n    this._resetElementAttributes(this._element, PROPERTY_PADDING)\n    this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING)\n    this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN)\n  }\n\n  isOverflowing() {\n    return this.getWidth() > 0\n  }\n\n  // Private\n  _disableOverFlow() {\n    this._saveInitialAttribute(this._element, 'overflow')\n    this._element.style.overflow = 'hidden'\n  }\n\n  _setElementAttributes(selector, styleProperty, callback) {\n    const scrollbarWidth = this.getWidth()\n    const manipulationCallBack = element => {\n      if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\n        return\n      }\n\n      this._saveInitialAttribute(element, styleProperty)\n      const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty)\n      element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`)\n    }\n\n    this._applyManipulationCallback(selector, manipulationCallBack)\n  }\n\n  _saveInitialAttribute(element, styleProperty) {\n    const actualValue = element.style.getPropertyValue(styleProperty)\n    if (actualValue) {\n      Manipulator.setDataAttribute(element, styleProperty, actualValue)\n    }\n  }\n\n  _resetElementAttributes(selector, styleProperty) {\n    const manipulationCallBack = element => {\n      const value = Manipulator.getDataAttribute(element, styleProperty)\n      // We only want to remove the property if the value is `null`; the value can also be zero\n      if (value === null) {\n        element.style.removeProperty(styleProperty)\n        return\n      }\n\n      Manipulator.removeDataAttribute(element, styleProperty)\n      element.style.setProperty(styleProperty, value)\n    }\n\n    this._applyManipulationCallback(selector, manipulationCallBack)\n  }\n\n  _applyManipulationCallback(selector, callBack) {\n    if (isElement(selector)) {\n      callBack(selector)\n      return\n    }\n\n    for (const sel of SelectorEngine.find(selector, this._element)) {\n      callBack(sel)\n    }\n  }\n}\n\nexport default ScrollBarHelper\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.2): util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport { execute, executeAfterTransition, getElement, reflow } from './index'\nimport Config from './config'\n\n/**\n * Constants\n */\n\nconst NAME = 'backdrop'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst EVENT_MOUSEDOWN = `mousedown.bs.${NAME}`\n\nconst Default = {\n  className: 'modal-backdrop',\n  clickCallback: null,\n  isAnimated: false,\n  isVisible: true, // if false, we use the backdrop helper without adding any element to the dom\n  rootElement: 'body' // give the choice to place backdrop under different elements\n}\n\nconst DefaultType = {\n  className: 'string',\n  clickCallback: '(function|null)',\n  isAnimated: 'boolean',\n  isVisible: 'boolean',\n  rootElement: '(element|string)'\n}\n\n/**\n * Class definition\n */\n\nclass Backdrop extends Config {\n  constructor(config) {\n    super()\n    this._config = this._getConfig(config)\n    this._isAppended = false\n    this._element = null\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  show(callback) {\n    if (!this._config.isVisible) {\n      execute(callback)\n      return\n    }\n\n    this._append()\n\n    const element = this._getElement()\n    if (this._config.isAnimated) {\n      reflow(element)\n    }\n\n    element.classList.add(CLASS_NAME_SHOW)\n\n    this._emulateAnimation(() => {\n      execute(callback)\n    })\n  }\n\n  hide(callback) {\n    if (!this._config.isVisible) {\n      execute(callback)\n      return\n    }\n\n    this._getElement().classList.remove(CLASS_NAME_SHOW)\n\n    this._emulateAnimation(() => {\n      this.dispose()\n      execute(callback)\n    })\n  }\n\n  dispose() {\n    if (!this._isAppended) {\n      return\n    }\n\n    EventHandler.off(this._element, EVENT_MOUSEDOWN)\n\n    this._element.remove()\n    this._isAppended = false\n  }\n\n  // Private\n  _getElement() {\n    if (!this._element) {\n      const backdrop = document.createElement('div')\n      backdrop.className = this._config.className\n      if (this._config.isAnimated) {\n        backdrop.classList.add(CLASS_NAME_FADE)\n      }\n\n      this._element = backdrop\n    }\n\n    return this._element\n  }\n\n  _configAfterMerge(config) {\n    // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n    config.rootElement = getElement(config.rootElement)\n    return config\n  }\n\n  _append() {\n    if (this._isAppended) {\n      return\n    }\n\n    const element = this._getElement()\n    this._config.rootElement.append(element)\n\n    EventHandler.on(element, EVENT_MOUSEDOWN, () => {\n      execute(this._config.clickCallback)\n    })\n\n    this._isAppended = true\n  }\n\n  _emulateAnimation(callback) {\n    executeAfterTransition(callback, this._getElement(), this._config.isAnimated)\n  }\n}\n\nexport default Backdrop\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.2): util/focustrap.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport SelectorEngine from '../dom/selector-engine'\nimport Config from './config'\n\n/**\n * Constants\n */\n\nconst NAME = 'focustrap'\nconst DATA_KEY = 'bs.focustrap'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY}`\n\nconst TAB_KEY = 'Tab'\nconst TAB_NAV_FORWARD = 'forward'\nconst TAB_NAV_BACKWARD = 'backward'\n\nconst Default = {\n  autofocus: true,\n  trapElement: null // The element to trap focus inside of\n}\n\nconst DefaultType = {\n  autofocus: 'boolean',\n  trapElement: 'element'\n}\n\n/**\n * Class definition\n */\n\nclass FocusTrap extends Config {\n  constructor(config) {\n    super()\n    this._config = this._getConfig(config)\n    this._isActive = false\n    this._lastTabNavDirection = null\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  activate() {\n    if (this._isActive) {\n      return\n    }\n\n    if (this._config.autofocus) {\n      this._config.trapElement.focus()\n    }\n\n    EventHandler.off(document, EVENT_KEY) // guard against infinite focus loop\n    EventHandler.on(document, EVENT_FOCUSIN, event => this._handleFocusin(event))\n    EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event))\n\n    this._isActive = true\n  }\n\n  deactivate() {\n    if (!this._isActive) {\n      return\n    }\n\n    this._isActive = false\n    EventHandler.off(document, EVENT_KEY)\n  }\n\n  // Private\n  _handleFocusin(event) {\n    const { trapElement } = this._config\n\n    if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) {\n      return\n    }\n\n    const elements = SelectorEngine.focusableChildren(trapElement)\n\n    if (elements.length === 0) {\n      trapElement.focus()\n    } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {\n      elements[elements.length - 1].focus()\n    } else {\n      elements[0].focus()\n    }\n  }\n\n  _handleKeydown(event) {\n    if (event.key !== TAB_KEY) {\n      return\n    }\n\n    this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD\n  }\n}\n\nexport default FocusTrap\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.2): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin, getElementFromSelector, isRTL, isVisible, reflow } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport SelectorEngine from './dom/selector-engine'\nimport ScrollBarHelper from './util/scrollbar'\nimport BaseComponent from './base-component'\nimport Backdrop from './util/backdrop'\nimport FocusTrap from './util/focustrap'\nimport { enableDismissTrigger } from './util/component-functions'\n\n/**\n * Constants\n */\n\nconst NAME = 'modal'\nconst DATA_KEY = 'bs.modal'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst ESCAPE_KEY = 'Escape'\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_OPEN = 'modal-open'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_STATIC = 'modal-static'\n\nconst OPEN_SELECTOR = '.modal.show'\nconst SELECTOR_DIALOG = '.modal-dialog'\nconst SELECTOR_MODAL_BODY = '.modal-body'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"modal\"]'\n\nconst Default = {\n  backdrop: true,\n  focus: true,\n  keyboard: true\n}\n\nconst DefaultType = {\n  backdrop: '(boolean|string)',\n  focus: 'boolean',\n  keyboard: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Modal extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element)\n    this._backdrop = this._initializeBackDrop()\n    this._focustrap = this._initializeFocusTrap()\n    this._isShown = false\n    this._isTransitioning = false\n    this._scrollBar = new ScrollBarHelper()\n\n    this._addEventListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle(relatedTarget) {\n    return this._isShown ? this.hide() : this.show(relatedTarget)\n  }\n\n  show(relatedTarget) {\n    if (this._isShown || this._isTransitioning) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n      relatedTarget\n    })\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._isShown = true\n    this._isTransitioning = true\n\n    this._scrollBar.hide()\n\n    document.body.classList.add(CLASS_NAME_OPEN)\n\n    this._adjustDialog()\n\n    this._backdrop.show(() => this._showElement(relatedTarget))\n  }\n\n  hide() {\n    if (!this._isShown || this._isTransitioning) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._isShown = false\n    this._isTransitioning = true\n    this._focustrap.deactivate()\n\n    this._element.classList.remove(CLASS_NAME_SHOW)\n\n    this._queueCallback(() => this._hideModal(), this._element, this._isAnimated())\n  }\n\n  dispose() {\n    for (const htmlElement of [window, this._dialog]) {\n      EventHandler.off(htmlElement, EVENT_KEY)\n    }\n\n    this._backdrop.dispose()\n    this._focustrap.deactivate()\n    super.dispose()\n  }\n\n  handleUpdate() {\n    this._adjustDialog()\n  }\n\n  // Private\n  _initializeBackDrop() {\n    return new Backdrop({\n      isVisible: Boolean(this._config.backdrop), // 'static' option will be translated to true, and booleans will keep their value,\n      isAnimated: this._isAnimated()\n    })\n  }\n\n  _initializeFocusTrap() {\n    return new FocusTrap({\n      trapElement: this._element\n    })\n  }\n\n  _showElement(relatedTarget) {\n    // try to append dynamic modal\n    if (!document.body.contains(this._element)) {\n      document.body.append(this._element)\n    }\n\n    this._element.style.display = 'block'\n    this._element.removeAttribute('aria-hidden')\n    this._element.setAttribute('aria-modal', true)\n    this._element.setAttribute('role', 'dialog')\n    this._element.scrollTop = 0\n\n    const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog)\n    if (modalBody) {\n      modalBody.scrollTop = 0\n    }\n\n    reflow(this._element)\n\n    this._element.classList.add(CLASS_NAME_SHOW)\n\n    const transitionComplete = () => {\n      if (this._config.focus) {\n        this._focustrap.activate()\n      }\n\n      this._isTransitioning = false\n      EventHandler.trigger(this._element, EVENT_SHOWN, {\n        relatedTarget\n      })\n    }\n\n    this._queueCallback(transitionComplete, this._dialog, this._isAnimated())\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n      if (event.key !== ESCAPE_KEY) {\n        return\n      }\n\n      if (this._config.keyboard) {\n        event.preventDefault()\n        this.hide()\n        return\n      }\n\n      this._triggerBackdropTransition()\n    })\n\n    EventHandler.on(window, EVENT_RESIZE, () => {\n      if (this._isShown && !this._isTransitioning) {\n        this._adjustDialog()\n      }\n    })\n\n    EventHandler.on(this._element, EVENT_MOUSEDOWN_DISMISS, event => {\n      // a bad trick to segregate clicks that may start inside dialog but end outside, and avoid listen to scrollbar clicks\n      EventHandler.one(this._element, EVENT_CLICK_DISMISS, event2 => {\n        if (this._element !== event.target || this._element !== event2.target) {\n          return\n        }\n\n        if (this._config.backdrop === 'static') {\n          this._triggerBackdropTransition()\n          return\n        }\n\n        if (this._config.backdrop) {\n          this.hide()\n        }\n      })\n    })\n  }\n\n  _hideModal() {\n    this._element.style.display = 'none'\n    this._element.setAttribute('aria-hidden', true)\n    this._element.removeAttribute('aria-modal')\n    this._element.removeAttribute('role')\n    this._isTransitioning = false\n\n    this._backdrop.hide(() => {\n      document.body.classList.remove(CLASS_NAME_OPEN)\n      this._resetAdjustments()\n      this._scrollBar.reset()\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    })\n  }\n\n  _isAnimated() {\n    return this._element.classList.contains(CLASS_NAME_FADE)\n  }\n\n  _triggerBackdropTransition() {\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n    const initialOverflowY = this._element.style.overflowY\n    // return if the following background transition hasn't yet completed\n    if (initialOverflowY === 'hidden' || this._element.classList.contains(CLASS_NAME_STATIC)) {\n      return\n    }\n\n    if (!isModalOverflowing) {\n      this._element.style.overflowY = 'hidden'\n    }\n\n    this._element.classList.add(CLASS_NAME_STATIC)\n    this._queueCallback(() => {\n      this._element.classList.remove(CLASS_NAME_STATIC)\n      this._queueCallback(() => {\n        this._element.style.overflowY = initialOverflowY\n      }, this._dialog)\n    }, this._dialog)\n\n    this._element.focus()\n  }\n\n  /**\n   * The following methods are used to handle overflowing modals\n   */\n\n  _adjustDialog() {\n    const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n    const scrollbarWidth = this._scrollBar.getWidth()\n    const isBodyOverflowing = scrollbarWidth > 0\n\n    if (isBodyOverflowing && !isModalOverflowing) {\n      const property = isRTL() ? 'paddingLeft' : 'paddingRight'\n      this._element.style[property] = `${scrollbarWidth}px`\n    }\n\n    if (!isBodyOverflowing && isModalOverflowing) {\n      const property = isRTL() ? 'paddingRight' : 'paddingLeft'\n      this._element.style[property] = `${scrollbarWidth}px`\n    }\n  }\n\n  _resetAdjustments() {\n    this._element.style.paddingLeft = ''\n    this._element.style.paddingRight = ''\n  }\n\n  // Static\n  static jQueryInterface(config, relatedTarget) {\n    return this.each(function () {\n      const data = Modal.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config](relatedTarget)\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  const target = getElementFromSelector(this)\n\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  EventHandler.one(target, EVENT_SHOW, showEvent => {\n    if (showEvent.defaultPrevented) {\n      // only register focus restorer if modal will actually get shown\n      return\n    }\n\n    EventHandler.one(target, EVENT_HIDDEN, () => {\n      if (isVisible(this)) {\n        this.focus()\n      }\n    })\n  })\n\n  // avoid conflict when clicking modal toggler while another one is open\n  const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)\n  if (alreadyOpen) {\n    Modal.getInstance(alreadyOpen).hide()\n  }\n\n  const data = Modal.getOrCreateInstance(target)\n\n  data.toggle(this)\n})\n\nenableDismissTrigger(Modal)\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Modal)\n\nexport default Modal\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.2): offcanvas.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  defineJQueryPlugin,\n  getElementFromSelector,\n  isDisabled,\n  isVisible\n} from './util/index'\nimport ScrollBarHelper from './util/scrollbar'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\nimport SelectorEngine from './dom/selector-engine'\nimport Backdrop from './util/backdrop'\nimport FocusTrap from './util/focustrap'\nimport { enableDismissTrigger } from './util/component-functions'\n\n/**\n * Constants\n */\n\nconst NAME = 'offcanvas'\nconst DATA_KEY = 'bs.offcanvas'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst ESCAPE_KEY = 'Escape'\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\nconst CLASS_NAME_HIDING = 'hiding'\nconst CLASS_NAME_BACKDROP = 'offcanvas-backdrop'\nconst OPEN_SELECTOR = '.offcanvas.show'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"offcanvas\"]'\n\nconst Default = {\n  backdrop: true,\n  keyboard: true,\n  scroll: false\n}\n\nconst DefaultType = {\n  backdrop: '(boolean|string)',\n  keyboard: 'boolean',\n  scroll: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Offcanvas extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._isShown = false\n    this._backdrop = this._initializeBackDrop()\n    this._focustrap = this._initializeFocusTrap()\n    this._addEventListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle(relatedTarget) {\n    return this._isShown ? this.hide() : this.show(relatedTarget)\n  }\n\n  show(relatedTarget) {\n    if (this._isShown) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, { relatedTarget })\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._isShown = true\n    this._backdrop.show()\n\n    if (!this._config.scroll) {\n      new ScrollBarHelper().hide()\n    }\n\n    this._element.setAttribute('aria-modal', true)\n    this._element.setAttribute('role', 'dialog')\n    this._element.classList.add(CLASS_NAME_SHOWING)\n\n    const completeCallBack = () => {\n      if (!this._config.scroll || this._config.backdrop) {\n        this._focustrap.activate()\n      }\n\n      this._element.classList.add(CLASS_NAME_SHOW)\n      this._element.classList.remove(CLASS_NAME_SHOWING)\n      EventHandler.trigger(this._element, EVENT_SHOWN, { relatedTarget })\n    }\n\n    this._queueCallback(completeCallBack, this._element, true)\n  }\n\n  hide() {\n    if (!this._isShown) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._focustrap.deactivate()\n    this._element.blur()\n    this._isShown = false\n    this._element.classList.add(CLASS_NAME_HIDING)\n    this._backdrop.hide()\n\n    const completeCallback = () => {\n      this._element.classList.remove(CLASS_NAME_SHOW, CLASS_NAME_HIDING)\n      this._element.removeAttribute('aria-modal')\n      this._element.removeAttribute('role')\n\n      if (!this._config.scroll) {\n        new ScrollBarHelper().reset()\n      }\n\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._queueCallback(completeCallback, this._element, true)\n  }\n\n  dispose() {\n    this._backdrop.dispose()\n    this._focustrap.deactivate()\n    super.dispose()\n  }\n\n  // Private\n  _initializeBackDrop() {\n    const clickCallback = () => {\n      if (this._config.backdrop === 'static') {\n        EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n        return\n      }\n\n      this.hide()\n    }\n\n    // 'static' option will be translated to true, and booleans will keep their value\n    const isVisible = Boolean(this._config.backdrop)\n\n    return new Backdrop({\n      className: CLASS_NAME_BACKDROP,\n      isVisible,\n      isAnimated: true,\n      rootElement: this._element.parentNode,\n      clickCallback: isVisible ? clickCallback : null\n    })\n  }\n\n  _initializeFocusTrap() {\n    return new FocusTrap({\n      trapElement: this._element\n    })\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n      if (event.key !== ESCAPE_KEY) {\n        return\n      }\n\n      if (!this._config.keyboard) {\n        EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n        return\n      }\n\n      this.hide()\n    })\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Offcanvas.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config](this)\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  const target = getElementFromSelector(this)\n\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  if (isDisabled(this)) {\n    return\n  }\n\n  EventHandler.one(target, EVENT_HIDDEN, () => {\n    // focus on trigger when it is closed\n    if (isVisible(this)) {\n      this.focus()\n    }\n  })\n\n  // avoid conflict when clicking a toggler of an offcanvas, while another is open\n  const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)\n  if (alreadyOpen && alreadyOpen !== target) {\n    Offcanvas.getInstance(alreadyOpen).hide()\n  }\n\n  const data = Offcanvas.getOrCreateInstance(target)\n  data.toggle(this)\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const selector of SelectorEngine.find(OPEN_SELECTOR)) {\n    Offcanvas.getOrCreateInstance(selector).show()\n  }\n})\n\nEventHandler.on(window, EVENT_RESIZE, () => {\n  for (const element of SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')) {\n    if (getComputedStyle(element).position !== 'fixed') {\n      Offcanvas.getOrCreateInstance(element).hide()\n    }\n  }\n})\n\nenableDismissTrigger(Offcanvas)\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Offcanvas)\n\nexport default Offcanvas\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.2): util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst uriAttributes = new Set([\n  'background',\n  'cite',\n  'href',\n  'itemtype',\n  'longdesc',\n  'poster',\n  'src',\n  'xlink:href'\n])\n\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\n/**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i\n\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i\n\nconst allowedAttribute = (attribute, allowedAttributeList) => {\n  const attributeName = attribute.nodeName.toLowerCase()\n\n  if (allowedAttributeList.includes(attributeName)) {\n    if (uriAttributes.has(attributeName)) {\n      return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue) || DATA_URL_PATTERN.test(attribute.nodeValue))\n    }\n\n    return true\n  }\n\n  // Check if a regular expression validates the attribute.\n  return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp)\n    .some(regex => regex.test(attributeName))\n}\n\nexport const DefaultAllowlist = {\n  // Global attributes allowed on any supplied element below.\n  '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n  a: ['target', 'href', 'title', 'rel'],\n  area: [],\n  b: [],\n  br: [],\n  col: [],\n  code: [],\n  div: [],\n  em: [],\n  hr: [],\n  h1: [],\n  h2: [],\n  h3: [],\n  h4: [],\n  h5: [],\n  h6: [],\n  i: [],\n  img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n  li: [],\n  ol: [],\n  p: [],\n  pre: [],\n  s: [],\n  small: [],\n  span: [],\n  sub: [],\n  sup: [],\n  strong: [],\n  u: [],\n  ul: []\n}\n\nexport function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {\n  if (!unsafeHtml.length) {\n    return unsafeHtml\n  }\n\n  if (sanitizeFunction && typeof sanitizeFunction === 'function') {\n    return sanitizeFunction(unsafeHtml)\n  }\n\n  const domParser = new window.DOMParser()\n  const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n  const elements = [].concat(...createdDocument.body.querySelectorAll('*'))\n\n  for (const element of elements) {\n    const elementName = element.nodeName.toLowerCase()\n\n    if (!Object.keys(allowList).includes(elementName)) {\n      element.remove()\n\n      continue\n    }\n\n    const attributeList = [].concat(...element.attributes)\n    const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || [])\n\n    for (const attribute of attributeList) {\n      if (!allowedAttribute(attribute, allowedAttributes)) {\n        element.removeAttribute(attribute.nodeName)\n      }\n    }\n  }\n\n  return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.2): util/template-factory.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { DefaultAllowlist, sanitizeHtml } from './sanitizer'\nimport { getElement, isElement } from '../util/index'\nimport SelectorEngine from '../dom/selector-engine'\nimport Config from './config'\n\n/**\n * Constants\n */\n\nconst NAME = 'TemplateFactory'\n\nconst Default = {\n  allowList: DefaultAllowlist,\n  content: {}, // { selector : text ,  selector2 : text2 , }\n  extraClass: '',\n  html: false,\n  sanitize: true,\n  sanitizeFn: null,\n  template: '<div></div>'\n}\n\nconst DefaultType = {\n  allowList: 'object',\n  content: 'object',\n  extraClass: '(string|function)',\n  html: 'boolean',\n  sanitize: 'boolean',\n  sanitizeFn: '(null|function)',\n  template: 'string'\n}\n\nconst DefaultContentType = {\n  entry: '(string|element|function|null)',\n  selector: '(string|element)'\n}\n\n/**\n * Class definition\n */\n\nclass TemplateFactory extends Config {\n  constructor(config) {\n    super()\n    this._config = this._getConfig(config)\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  getContent() {\n    return Object.values(this._config.content)\n      .map(config => this._resolvePossibleFunction(config))\n      .filter(Boolean)\n  }\n\n  hasContent() {\n    return this.getContent().length > 0\n  }\n\n  changeContent(content) {\n    this._checkContent(content)\n    this._config.content = { ...this._config.content, ...content }\n    return this\n  }\n\n  toHtml() {\n    const templateWrapper = document.createElement('div')\n    templateWrapper.innerHTML = this._maybeSanitize(this._config.template)\n\n    for (const [selector, text] of Object.entries(this._config.content)) {\n      this._setContent(templateWrapper, text, selector)\n    }\n\n    const template = templateWrapper.children[0]\n    const extraClass = this._resolvePossibleFunction(this._config.extraClass)\n\n    if (extraClass) {\n      template.classList.add(...extraClass.split(' '))\n    }\n\n    return template\n  }\n\n  // Private\n  _typeCheckConfig(config) {\n    super._typeCheckConfig(config)\n    this._checkContent(config.content)\n  }\n\n  _checkContent(arg) {\n    for (const [selector, content] of Object.entries(arg)) {\n      super._typeCheckConfig({ selector, entry: content }, DefaultContentType)\n    }\n  }\n\n  _setContent(template, content, selector) {\n    const templateElement = SelectorEngine.findOne(selector, template)\n\n    if (!templateElement) {\n      return\n    }\n\n    content = this._resolvePossibleFunction(content)\n\n    if (!content) {\n      templateElement.remove()\n      return\n    }\n\n    if (isElement(content)) {\n      this._putElementInTemplate(getElement(content), templateElement)\n      return\n    }\n\n    if (this._config.html) {\n      templateElement.innerHTML = this._maybeSanitize(content)\n      return\n    }\n\n    templateElement.textContent = content\n  }\n\n  _maybeSanitize(arg) {\n    return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg\n  }\n\n  _resolvePossibleFunction(arg) {\n    return typeof arg === 'function' ? arg(this) : arg\n  }\n\n  _putElementInTemplate(element, templateElement) {\n    if (this._config.html) {\n      templateElement.innerHTML = ''\n      templateElement.append(element)\n      return\n    }\n\n    templateElement.textContent = element.textContent\n  }\n}\n\nexport default TemplateFactory\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.2): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\nimport { defineJQueryPlugin, findShadowRoot, getElement, getUID, isRTL, noop } from './util/index'\nimport { DefaultAllowlist } from './util/sanitizer'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport BaseComponent from './base-component'\nimport TemplateFactory from './util/template-factory'\n\n/**\n * Constants\n */\n\nconst NAME = 'tooltip'\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn'])\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_MODAL = 'modal'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\nconst SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`\n\nconst EVENT_MODAL_HIDE = 'hide.bs.modal'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\nconst EVENT_HIDE = 'hide'\nconst EVENT_HIDDEN = 'hidden'\nconst EVENT_SHOW = 'show'\nconst EVENT_SHOWN = 'shown'\nconst EVENT_INSERTED = 'inserted'\nconst EVENT_CLICK = 'click'\nconst EVENT_FOCUSIN = 'focusin'\nconst EVENT_FOCUSOUT = 'focusout'\nconst EVENT_MOUSEENTER = 'mouseenter'\nconst EVENT_MOUSELEAVE = 'mouseleave'\n\nconst AttachmentMap = {\n  AUTO: 'auto',\n  TOP: 'top',\n  RIGHT: isRTL() ? 'left' : 'right',\n  BOTTOM: 'bottom',\n  LEFT: isRTL() ? 'right' : 'left'\n}\n\nconst Default = {\n  allowList: DefaultAllowlist,\n  animation: true,\n  boundary: 'clippingParents',\n  container: false,\n  customClass: '',\n  delay: 0,\n  fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n  html: false,\n  offset: [0, 0],\n  placement: 'top',\n  popperConfig: null,\n  sanitize: true,\n  sanitizeFn: null,\n  selector: false,\n  template: '<div class=\"tooltip\" role=\"tooltip\">' +\n            '<div class=\"tooltip-arrow\"></div>' +\n            '<div class=\"tooltip-inner\"></div>' +\n            '</div>',\n  title: '',\n  trigger: 'hover focus'\n}\n\nconst DefaultType = {\n  allowList: 'object',\n  animation: 'boolean',\n  boundary: '(string|element)',\n  container: '(string|element|boolean)',\n  customClass: '(string|function)',\n  delay: '(number|object)',\n  fallbackPlacements: 'array',\n  html: 'boolean',\n  offset: '(array|string|function)',\n  placement: '(string|function)',\n  popperConfig: '(null|object|function)',\n  sanitize: 'boolean',\n  sanitizeFn: '(null|function)',\n  selector: '(string|boolean)',\n  template: 'string',\n  title: '(string|element|function)',\n  trigger: 'string'\n}\n\n/**\n * Class definition\n */\n\nclass Tooltip extends BaseComponent {\n  constructor(element, config) {\n    if (typeof Popper === 'undefined') {\n      throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)')\n    }\n\n    super(element, config)\n\n    // Private\n    this._isEnabled = true\n    this._timeout = 0\n    this._isHovered = null\n    this._activeTrigger = {}\n    this._popper = null\n    this._templateFactory = null\n    this._newContent = null\n\n    // Protected\n    this.tip = null\n\n    this._setListeners()\n\n    if (!this._config.selector) {\n      this._fixTitle()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  enable() {\n    this._isEnabled = true\n  }\n\n  disable() {\n    this._isEnabled = false\n  }\n\n  toggleEnabled() {\n    this._isEnabled = !this._isEnabled\n  }\n\n  toggle() {\n    if (!this._isEnabled) {\n      return\n    }\n\n    this._activeTrigger.click = !this._activeTrigger.click\n    if (this._isShown()) {\n      this._leave()\n      return\n    }\n\n    this._enter()\n  }\n\n  dispose() {\n    clearTimeout(this._timeout)\n\n    EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n\n    if (this.tip) {\n      this.tip.remove()\n    }\n\n    if (this._element.getAttribute('data-bs-original-title')) {\n      this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title'))\n    }\n\n    this._disposePopper()\n    super.dispose()\n  }\n\n  show() {\n    if (this._element.style.display === 'none') {\n      throw new Error('Please use show on visible elements')\n    }\n\n    if (!(this._isWithContent() && this._isEnabled)) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW))\n    const shadowRoot = findShadowRoot(this._element)\n    const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element)\n\n    if (showEvent.defaultPrevented || !isInTheDom) {\n      return\n    }\n\n    // todo v6 remove this OR make it optional\n    if (this.tip) {\n      this.tip.remove()\n      this.tip = null\n    }\n\n    const tip = this._getTipElement()\n\n    this._element.setAttribute('aria-describedby', tip.getAttribute('id'))\n\n    const { container } = this._config\n\n    if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n      container.append(tip)\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED))\n    }\n\n    if (this._popper) {\n      this._popper.update()\n    } else {\n      this._popper = this._createPopper(tip)\n    }\n\n    tip.classList.add(CLASS_NAME_SHOW)\n\n    // If this is a touch-enabled device we add extra\n    // empty mouseover listeners to the body's immediate children;\n    // only needed because of broken event delegation on iOS\n    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.on(element, 'mouseover', noop)\n      }\n    }\n\n    const complete = () => {\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN))\n\n      if (this._isHovered === false) {\n        this._leave()\n      }\n\n      this._isHovered = false\n    }\n\n    this._queueCallback(complete, this.tip, this._isAnimated())\n  }\n\n  hide() {\n    if (!this._isShown()) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE))\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    const tip = this._getTipElement()\n    tip.classList.remove(CLASS_NAME_SHOW)\n\n    // If this is a touch-enabled device we remove the extra\n    // empty mouseover listeners we added for iOS support\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.off(element, 'mouseover', noop)\n      }\n    }\n\n    this._activeTrigger[TRIGGER_CLICK] = false\n    this._activeTrigger[TRIGGER_FOCUS] = false\n    this._activeTrigger[TRIGGER_HOVER] = false\n    this._isHovered = null // it is a trick to support manual triggering\n\n    const complete = () => {\n      if (this._isWithActiveTrigger()) {\n        return\n      }\n\n      if (!this._isHovered) {\n        tip.remove()\n      }\n\n      this._element.removeAttribute('aria-describedby')\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN))\n\n      this._disposePopper()\n    }\n\n    this._queueCallback(complete, this.tip, this._isAnimated())\n  }\n\n  update() {\n    if (this._popper) {\n      this._popper.update()\n    }\n  }\n\n  // Protected\n  _isWithContent() {\n    return Boolean(this._getTitle())\n  }\n\n  _getTipElement() {\n    if (!this.tip) {\n      this.tip = this._createTipElement(this._newContent || this._getContentForTemplate())\n    }\n\n    return this.tip\n  }\n\n  _createTipElement(content) {\n    const tip = this._getTemplateFactory(content).toHtml()\n\n    // todo: remove this check on v6\n    if (!tip) {\n      return null\n    }\n\n    tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n    // todo: on v6 the following can be achieved with CSS only\n    tip.classList.add(`bs-${this.constructor.NAME}-auto`)\n\n    const tipId = getUID(this.constructor.NAME).toString()\n\n    tip.setAttribute('id', tipId)\n\n    if (this._isAnimated()) {\n      tip.classList.add(CLASS_NAME_FADE)\n    }\n\n    return tip\n  }\n\n  setContent(content) {\n    this._newContent = content\n    if (this._isShown()) {\n      this._disposePopper()\n      this.show()\n    }\n  }\n\n  _getTemplateFactory(content) {\n    if (this._templateFactory) {\n      this._templateFactory.changeContent(content)\n    } else {\n      this._templateFactory = new TemplateFactory({\n        ...this._config,\n        // the `content` var has to be after `this._config`\n        // to override config.content in case of popover\n        content,\n        extraClass: this._resolvePossibleFunction(this._config.customClass)\n      })\n    }\n\n    return this._templateFactory\n  }\n\n  _getContentForTemplate() {\n    return {\n      [SELECTOR_TOOLTIP_INNER]: this._getTitle()\n    }\n  }\n\n  _getTitle() {\n    return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title')\n  }\n\n  // Private\n  _initializeOnDelegatedTarget(event) {\n    return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig())\n  }\n\n  _isAnimated() {\n    return this._config.animation || (this.tip && this.tip.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _isShown() {\n    return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _createPopper(tip) {\n    const placement = typeof this._config.placement === 'function' ?\n      this._config.placement.call(this, tip, this._element) :\n      this._config.placement\n    const attachment = AttachmentMap[placement.toUpperCase()]\n    return Popper.createPopper(this._element, tip, this._getPopperConfig(attachment))\n  }\n\n  _getOffset() {\n    const { offset } = this._config\n\n    if (typeof offset === 'string') {\n      return offset.split(',').map(value => Number.parseInt(value, 10))\n    }\n\n    if (typeof offset === 'function') {\n      return popperData => offset(popperData, this._element)\n    }\n\n    return offset\n  }\n\n  _resolvePossibleFunction(arg) {\n    return typeof arg === 'function' ? arg.call(this._element) : arg\n  }\n\n  _getPopperConfig(attachment) {\n    const defaultBsPopperConfig = {\n      placement: attachment,\n      modifiers: [\n        {\n          name: 'flip',\n          options: {\n            fallbackPlacements: this._config.fallbackPlacements\n          }\n        },\n        {\n          name: 'offset',\n          options: {\n            offset: this._getOffset()\n          }\n        },\n        {\n          name: 'preventOverflow',\n          options: {\n            boundary: this._config.boundary\n          }\n        },\n        {\n          name: 'arrow',\n          options: {\n            element: `.${this.constructor.NAME}-arrow`\n          }\n        },\n        {\n          name: 'preSetPlacement',\n          enabled: true,\n          phase: 'beforeMain',\n          fn: data => {\n            // Pre-set Popper's placement attribute in order to read the arrow sizes properly.\n            // Otherwise, Popper mixes up the width and height dimensions since the initial arrow style is for top placement\n            this._getTipElement().setAttribute('data-popper-placement', data.state.placement)\n          }\n        }\n      ]\n    }\n\n    return {\n      ...defaultBsPopperConfig,\n      ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n    }\n  }\n\n  _setListeners() {\n    const triggers = this._config.trigger.split(' ')\n\n    for (const trigger of triggers) {\n      if (trigger === 'click') {\n        EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK), this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event)\n          context.toggle()\n        })\n      } else if (trigger !== TRIGGER_MANUAL) {\n        const eventIn = trigger === TRIGGER_HOVER ?\n          this.constructor.eventName(EVENT_MOUSEENTER) :\n          this.constructor.eventName(EVENT_FOCUSIN)\n        const eventOut = trigger === TRIGGER_HOVER ?\n          this.constructor.eventName(EVENT_MOUSELEAVE) :\n          this.constructor.eventName(EVENT_FOCUSOUT)\n\n        EventHandler.on(this._element, eventIn, this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event)\n          context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true\n          context._enter()\n        })\n        EventHandler.on(this._element, eventOut, this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event)\n          context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] =\n            context._element.contains(event.relatedTarget)\n\n          context._leave()\n        })\n      }\n    }\n\n    this._hideModalHandler = () => {\n      if (this._element) {\n        this.hide()\n      }\n    }\n\n    EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n  }\n\n  _fixTitle() {\n    const title = this._element.getAttribute('title')\n\n    if (!title) {\n      return\n    }\n\n    if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) {\n      this._element.setAttribute('aria-label', title)\n    }\n\n    this._element.setAttribute('data-bs-original-title', title) // DO NOT USE IT. Is only for backwards compatibility\n    this._element.removeAttribute('title')\n  }\n\n  _enter() {\n    if (this._isShown() || this._isHovered) {\n      this._isHovered = true\n      return\n    }\n\n    this._isHovered = true\n\n    this._setTimeout(() => {\n      if (this._isHovered) {\n        this.show()\n      }\n    }, this._config.delay.show)\n  }\n\n  _leave() {\n    if (this._isWithActiveTrigger()) {\n      return\n    }\n\n    this._isHovered = false\n\n    this._setTimeout(() => {\n      if (!this._isHovered) {\n        this.hide()\n      }\n    }, this._config.delay.hide)\n  }\n\n  _setTimeout(handler, timeout) {\n    clearTimeout(this._timeout)\n    this._timeout = setTimeout(handler, timeout)\n  }\n\n  _isWithActiveTrigger() {\n    return Object.values(this._activeTrigger).includes(true)\n  }\n\n  _getConfig(config) {\n    const dataAttributes = Manipulator.getDataAttributes(this._element)\n\n    for (const dataAttribute of Object.keys(dataAttributes)) {\n      if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) {\n        delete dataAttributes[dataAttribute]\n      }\n    }\n\n    config = {\n      ...dataAttributes,\n      ...(typeof config === 'object' && config ? config : {})\n    }\n    config = this._mergeConfigObj(config)\n    config = this._configAfterMerge(config)\n    this._typeCheckConfig(config)\n    return config\n  }\n\n  _configAfterMerge(config) {\n    config.container = config.container === false ? document.body : getElement(config.container)\n\n    if (typeof config.delay === 'number') {\n      config.delay = {\n        show: config.delay,\n        hide: config.delay\n      }\n    }\n\n    if (typeof config.title === 'number') {\n      config.title = config.title.toString()\n    }\n\n    if (typeof config.content === 'number') {\n      config.content = config.content.toString()\n    }\n\n    return config\n  }\n\n  _getDelegateConfig() {\n    const config = {}\n\n    for (const key in this._config) {\n      if (this.constructor.Default[key] !== this._config[key]) {\n        config[key] = this._config[key]\n      }\n    }\n\n    config.selector = false\n    config.trigger = 'manual'\n\n    // In the future can be replaced with:\n    // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n    // `Object.fromEntries(keysWithDifferentValues)`\n    return config\n  }\n\n  _disposePopper() {\n    if (this._popper) {\n      this._popper.destroy()\n      this._popper = null\n    }\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Tooltip.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config]()\n    })\n  }\n}\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Tooltip)\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.2): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport Tooltip from './tooltip'\n\n/**\n * Constants\n */\n\nconst NAME = 'popover'\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\n\nconst Default = {\n  ...Tooltip.Default,\n  content: '',\n  offset: [0, 8],\n  placement: 'right',\n  template: '<div class=\"popover\" role=\"tooltip\">' +\n    '<div class=\"popover-arrow\"></div>' +\n    '<h3 class=\"popover-header\"></h3>' +\n    '<div class=\"popover-body\"></div>' +\n    '</div>',\n  trigger: 'click'\n}\n\nconst DefaultType = {\n  ...Tooltip.DefaultType,\n  content: '(null|string|element|function)'\n}\n\n/**\n * Class definition\n */\n\nclass Popover extends Tooltip {\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Overrides\n  _isWithContent() {\n    return this._getTitle() || this._getContent()\n  }\n\n  // Private\n  _getContentForTemplate() {\n    return {\n      [SELECTOR_TITLE]: this._getTitle(),\n      [SELECTOR_CONTENT]: this._getContent()\n    }\n  }\n\n  _getContent() {\n    return this._resolvePossibleFunction(this._config.content)\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Popover.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config]()\n    })\n  }\n}\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Popover)\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.2): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin, getElement, isDisabled, isVisible } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * Constants\n */\n\nconst NAME = 'scrollspy'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_CLICK = `click${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]'\nconst SELECTOR_TARGET_LINKS = '[href]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\n\nconst Default = {\n  offset: null, // TODO: v6 @deprecated, keep it for backwards compatibility reasons\n  rootMargin: '0px 0px -25%',\n  smoothScroll: false,\n  target: null,\n  threshold: [0.1, 0.5, 1]\n}\n\nconst DefaultType = {\n  offset: '(number|null)', // TODO v6 @deprecated, keep it for backwards compatibility reasons\n  rootMargin: 'string',\n  smoothScroll: 'boolean',\n  target: 'element',\n  threshold: 'array'\n}\n\n/**\n * Class definition\n */\n\nclass ScrollSpy extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    // this._element is the observablesContainer and config.target the menu links wrapper\n    this._targetLinks = new Map()\n    this._observableSections = new Map()\n    this._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element\n    this._activeTarget = null\n    this._observer = null\n    this._previousScrollData = {\n      visibleEntryTop: 0,\n      parentScrollTop: 0\n    }\n    this.refresh() // initialize\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  refresh() {\n    this._initializeTargetsAndObservables()\n    this._maybeEnableSmoothScroll()\n\n    if (this._observer) {\n      this._observer.disconnect()\n    } else {\n      this._observer = this._getNewObserver()\n    }\n\n    for (const section of this._observableSections.values()) {\n      this._observer.observe(section)\n    }\n  }\n\n  dispose() {\n    this._observer.disconnect()\n    super.dispose()\n  }\n\n  // Private\n  _configAfterMerge(config) {\n    // TODO: on v6 target should be given explicitly & remove the {target: 'ss-target'} case\n    config.target = getElement(config.target) || document.body\n\n    // TODO: v6 Only for backwards compatibility reasons. Use rootMargin only\n    config.rootMargin = config.offset ? `${config.offset}px 0px -30%` : config.rootMargin\n\n    if (typeof config.threshold === 'string') {\n      config.threshold = config.threshold.split(',').map(value => Number.parseFloat(value))\n    }\n\n    return config\n  }\n\n  _maybeEnableSmoothScroll() {\n    if (!this._config.smoothScroll) {\n      return\n    }\n\n    // unregister any previous listeners\n    EventHandler.off(this._config.target, EVENT_CLICK)\n\n    EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => {\n      const observableSection = this._observableSections.get(event.target.hash)\n      if (observableSection) {\n        event.preventDefault()\n        const root = this._rootElement || window\n        const height = observableSection.offsetTop - this._element.offsetTop\n        if (root.scrollTo) {\n          root.scrollTo({ top: height, behavior: 'smooth' })\n          return\n        }\n\n        // Chrome 60 doesn't support `scrollTo`\n        root.scrollTop = height\n      }\n    })\n  }\n\n  _getNewObserver() {\n    const options = {\n      root: this._rootElement,\n      threshold: this._config.threshold,\n      rootMargin: this._config.rootMargin\n    }\n\n    return new IntersectionObserver(entries => this._observerCallback(entries), options)\n  }\n\n  // The logic of selection\n  _observerCallback(entries) {\n    const targetElement = entry => this._targetLinks.get(`#${entry.target.id}`)\n    const activate = entry => {\n      this._previousScrollData.visibleEntryTop = entry.target.offsetTop\n      this._process(targetElement(entry))\n    }\n\n    const parentScrollTop = (this._rootElement || document.documentElement).scrollTop\n    const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop\n    this._previousScrollData.parentScrollTop = parentScrollTop\n\n    for (const entry of entries) {\n      if (!entry.isIntersecting) {\n        this._activeTarget = null\n        this._clearActiveClass(targetElement(entry))\n\n        continue\n      }\n\n      const entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop\n      // if we are scrolling down, pick the bigger offsetTop\n      if (userScrollsDown && entryIsLowerThanPrevious) {\n        activate(entry)\n        // if parent isn't scrolled, let's keep the first visible item, breaking the iteration\n        if (!parentScrollTop) {\n          return\n        }\n\n        continue\n      }\n\n      // if we are scrolling up, pick the smallest offsetTop\n      if (!userScrollsDown && !entryIsLowerThanPrevious) {\n        activate(entry)\n      }\n    }\n  }\n\n  _initializeTargetsAndObservables() {\n    this._targetLinks = new Map()\n    this._observableSections = new Map()\n\n    const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target)\n\n    for (const anchor of targetLinks) {\n      // ensure that the anchor has an id and is not disabled\n      if (!anchor.hash || isDisabled(anchor)) {\n        continue\n      }\n\n      const observableSection = SelectorEngine.findOne(anchor.hash, this._element)\n\n      // ensure that the observableSection exists & is visible\n      if (isVisible(observableSection)) {\n        this._targetLinks.set(anchor.hash, anchor)\n        this._observableSections.set(anchor.hash, observableSection)\n      }\n    }\n  }\n\n  _process(target) {\n    if (this._activeTarget === target) {\n      return\n    }\n\n    this._clearActiveClass(this._config.target)\n    this._activeTarget = target\n    target.classList.add(CLASS_NAME_ACTIVE)\n    this._activateParents(target)\n\n    EventHandler.trigger(this._element, EVENT_ACTIVATE, { relatedTarget: target })\n  }\n\n  _activateParents(target) {\n    // Activate dropdown parents\n    if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n      SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE, target.closest(SELECTOR_DROPDOWN))\n        .classList.add(CLASS_NAME_ACTIVE)\n      return\n    }\n\n    for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) {\n      // Set triggered links parents as active\n      // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n      for (const item of SelectorEngine.prev(listGroup, SELECTOR_LINK_ITEMS)) {\n        item.classList.add(CLASS_NAME_ACTIVE)\n      }\n    }\n  }\n\n  _clearActiveClass(parent) {\n    parent.classList.remove(CLASS_NAME_ACTIVE)\n\n    const activeNodes = SelectorEngine.find(`${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE}`, parent)\n    for (const node of activeNodes) {\n      node.classList.remove(CLASS_NAME_ACTIVE)\n    }\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = ScrollSpy.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config]()\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const spy of SelectorEngine.find(SELECTOR_DATA_SPY)) {\n    ScrollSpy.getOrCreateInstance(spy)\n  }\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(ScrollSpy)\n\nexport default ScrollSpy\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.2): tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin, getElementFromSelector, getNextActiveElement, isDisabled } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * Constants\n */\n\nconst NAME = 'tab'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}`\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_DROPDOWN = 'dropdown'\n\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\nconst SELECTOR_DROPDOWN_MENU = '.dropdown-menu'\nconst NOT_SELECTOR_DROPDOWN_TOGGLE = ':not(.dropdown-toggle)'\n\nconst SELECTOR_TAB_PANEL = '.list-group, .nav, [role=\"tablist\"]'\nconst SELECTOR_OUTER = '.nav-item, .list-group-item'\nconst SELECTOR_INNER = `.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-group-item${NOT_SELECTOR_DROPDOWN_TOGGLE}, [role=\"tab\"]${NOT_SELECTOR_DROPDOWN_TOGGLE}`\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]' // todo:v6: could be only `tab`\nconst SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`\n\nconst SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle=\"tab\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"pill\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"list\"]`\n\n/**\n * Class definition\n */\n\nclass Tab extends BaseComponent {\n  constructor(element) {\n    super(element)\n    this._parent = this._element.closest(SELECTOR_TAB_PANEL)\n\n    if (!this._parent) {\n      return\n      // todo: should Throw exception on v6\n      // throw new TypeError(`${element.outerHTML} has not a valid parent ${SELECTOR_INNER_ELEM}`)\n    }\n\n    // Set up initial aria attributes\n    this._setInitialAttributes(this._parent, this._getChildren())\n\n    EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n  }\n\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  show() { // Shows this elem and deactivate the active sibling if exists\n    const innerElem = this._element\n    if (this._elemIsActive(innerElem)) {\n      return\n    }\n\n    // Search for active tab on same parent to deactivate it\n    const active = this._getActiveElem()\n\n    const hideEvent = active ?\n      EventHandler.trigger(active, EVENT_HIDE, { relatedTarget: innerElem }) :\n      null\n\n    const showEvent = EventHandler.trigger(innerElem, EVENT_SHOW, { relatedTarget: active })\n\n    if (showEvent.defaultPrevented || (hideEvent && hideEvent.defaultPrevented)) {\n      return\n    }\n\n    this._deactivate(active, innerElem)\n    this._activate(innerElem, active)\n  }\n\n  // Private\n  _activate(element, relatedElem) {\n    if (!element) {\n      return\n    }\n\n    element.classList.add(CLASS_NAME_ACTIVE)\n\n    this._activate(getElementFromSelector(element)) // Search and activate/show the proper section\n\n    const complete = () => {\n      if (element.getAttribute('role') !== 'tab') {\n        element.classList.add(CLASS_NAME_SHOW)\n        return\n      }\n\n      element.removeAttribute('tabindex')\n      element.setAttribute('aria-selected', true)\n      this._toggleDropDown(element, true)\n      EventHandler.trigger(element, EVENT_SHOWN, {\n        relatedTarget: relatedElem\n      })\n    }\n\n    this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _deactivate(element, relatedElem) {\n    if (!element) {\n      return\n    }\n\n    element.classList.remove(CLASS_NAME_ACTIVE)\n    element.blur()\n\n    this._deactivate(getElementFromSelector(element)) // Search and deactivate the shown section too\n\n    const complete = () => {\n      if (element.getAttribute('role') !== 'tab') {\n        element.classList.remove(CLASS_NAME_SHOW)\n        return\n      }\n\n      element.setAttribute('aria-selected', false)\n      element.setAttribute('tabindex', '-1')\n      this._toggleDropDown(element, false)\n      EventHandler.trigger(element, EVENT_HIDDEN, { relatedTarget: relatedElem })\n    }\n\n    this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _keydown(event) {\n    if (!([ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY].includes(event.key))) {\n      return\n    }\n\n    event.stopPropagation()// stopPropagation/preventDefault both added to support up/down keys without scrolling the page\n    event.preventDefault()\n    const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key)\n    const nextActiveElement = getNextActiveElement(this._getChildren().filter(element => !isDisabled(element)), event.target, isNext, true)\n\n    if (nextActiveElement) {\n      nextActiveElement.focus({ preventScroll: true })\n      Tab.getOrCreateInstance(nextActiveElement).show()\n    }\n  }\n\n  _getChildren() { // collection of inner elements\n    return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent)\n  }\n\n  _getActiveElem() {\n    return this._getChildren().find(child => this._elemIsActive(child)) || null\n  }\n\n  _setInitialAttributes(parent, children) {\n    this._setAttributeIfNotExists(parent, 'role', 'tablist')\n\n    for (const child of children) {\n      this._setInitialAttributesOnChild(child)\n    }\n  }\n\n  _setInitialAttributesOnChild(child) {\n    child = this._getInnerElement(child)\n    const isActive = this._elemIsActive(child)\n    const outerElem = this._getOuterElement(child)\n    child.setAttribute('aria-selected', isActive)\n\n    if (outerElem !== child) {\n      this._setAttributeIfNotExists(outerElem, 'role', 'presentation')\n    }\n\n    if (!isActive) {\n      child.setAttribute('tabindex', '-1')\n    }\n\n    this._setAttributeIfNotExists(child, 'role', 'tab')\n\n    // set attributes to the related panel too\n    this._setInitialAttributesOnTargetPanel(child)\n  }\n\n  _setInitialAttributesOnTargetPanel(child) {\n    const target = getElementFromSelector(child)\n\n    if (!target) {\n      return\n    }\n\n    this._setAttributeIfNotExists(target, 'role', 'tabpanel')\n\n    if (child.id) {\n      this._setAttributeIfNotExists(target, 'aria-labelledby', `#${child.id}`)\n    }\n  }\n\n  _toggleDropDown(element, open) {\n    const outerElem = this._getOuterElement(element)\n    if (!outerElem.classList.contains(CLASS_DROPDOWN)) {\n      return\n    }\n\n    const toggle = (selector, className) => {\n      const element = SelectorEngine.findOne(selector, outerElem)\n      if (element) {\n        element.classList.toggle(className, open)\n      }\n    }\n\n    toggle(SELECTOR_DROPDOWN_TOGGLE, CLASS_NAME_ACTIVE)\n    toggle(SELECTOR_DROPDOWN_MENU, CLASS_NAME_SHOW)\n    outerElem.setAttribute('aria-expanded', open)\n  }\n\n  _setAttributeIfNotExists(element, attribute, value) {\n    if (!element.hasAttribute(attribute)) {\n      element.setAttribute(attribute, value)\n    }\n  }\n\n  _elemIsActive(elem) {\n    return elem.classList.contains(CLASS_NAME_ACTIVE)\n  }\n\n  // Try to get the inner element (usually the .nav-link)\n  _getInnerElement(elem) {\n    return elem.matches(SELECTOR_INNER_ELEM) ? elem : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem)\n  }\n\n  // Try to get the outer element (usually the .nav-item)\n  _getOuterElement(elem) {\n    return elem.closest(SELECTOR_OUTER) || elem\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Tab.getOrCreateInstance(this)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config]()\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  if (isDisabled(this)) {\n    return\n  }\n\n  Tab.getOrCreateInstance(this).show()\n})\n\n/**\n * Initialize on focus\n */\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)) {\n    Tab.getOrCreateInstance(element)\n  }\n})\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Tab)\n\nexport default Tab\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.2): toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin, reflow } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\nimport { enableDismissTrigger } from './util/component-functions'\n\n/**\n * Constants\n */\n\nconst NAME = 'toast'\nconst DATA_KEY = 'bs.toast'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`\nconst EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_FOCUSOUT = `focusout${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_HIDE = 'hide' // @deprecated - kept here only for backwards compatibility\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\n\nconst DefaultType = {\n  animation: 'boolean',\n  autohide: 'boolean',\n  delay: 'number'\n}\n\nconst Default = {\n  animation: true,\n  autohide: true,\n  delay: 5000\n}\n\n/**\n * Class definition\n */\n\nclass Toast extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._timeout = null\n    this._hasMouseInteraction = false\n    this._hasKeyboardInteraction = false\n    this._setListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  show() {\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._clearTimeout()\n\n    if (this._config.animation) {\n      this._element.classList.add(CLASS_NAME_FADE)\n    }\n\n    const complete = () => {\n      this._element.classList.remove(CLASS_NAME_SHOWING)\n      EventHandler.trigger(this._element, EVENT_SHOWN)\n\n      this._maybeScheduleHide()\n    }\n\n    this._element.classList.remove(CLASS_NAME_HIDE) // @deprecated\n    reflow(this._element)\n    this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING)\n\n    this._queueCallback(complete, this._element, this._config.animation)\n  }\n\n  hide() {\n    if (!this.isShown()) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    const complete = () => {\n      this._element.classList.add(CLASS_NAME_HIDE) // @deprecated\n      this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW)\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._element.classList.add(CLASS_NAME_SHOWING)\n    this._queueCallback(complete, this._element, this._config.animation)\n  }\n\n  dispose() {\n    this._clearTimeout()\n\n    if (this.isShown()) {\n      this._element.classList.remove(CLASS_NAME_SHOW)\n    }\n\n    super.dispose()\n  }\n\n  isShown() {\n    return this._element.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  // Private\n\n  _maybeScheduleHide() {\n    if (!this._config.autohide) {\n      return\n    }\n\n    if (this._hasMouseInteraction || this._hasKeyboardInteraction) {\n      return\n    }\n\n    this._timeout = setTimeout(() => {\n      this.hide()\n    }, this._config.delay)\n  }\n\n  _onInteraction(event, isInteracting) {\n    switch (event.type) {\n      case 'mouseover':\n      case 'mouseout': {\n        this._hasMouseInteraction = isInteracting\n        break\n      }\n\n      case 'focusin':\n      case 'focusout': {\n        this._hasKeyboardInteraction = isInteracting\n        break\n      }\n\n      default: {\n        break\n      }\n    }\n\n    if (isInteracting) {\n      this._clearTimeout()\n      return\n    }\n\n    const nextElement = event.relatedTarget\n    if (this._element === nextElement || this._element.contains(nextElement)) {\n      return\n    }\n\n    this._maybeScheduleHide()\n  }\n\n  _setListeners() {\n    EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true))\n    EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false))\n    EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true))\n    EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false))\n  }\n\n  _clearTimeout() {\n    clearTimeout(this._timeout)\n    this._timeout = null\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Toast.getOrCreateInstance(this, config)\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config](this)\n      }\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Toast)\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Toast)\n\nexport default Toast\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.2): index.umd.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Alert from './src/alert'\nimport Button from './src/button'\nimport Carousel from './src/carousel'\nimport Collapse from './src/collapse'\nimport Dropdown from './src/dropdown'\nimport Modal from './src/modal'\nimport Offcanvas from './src/offcanvas'\nimport Popover from './src/popover'\nimport ScrollSpy from './src/scrollspy'\nimport Tab from './src/tab'\nimport Toast from './src/toast'\nimport Tooltip from './src/tooltip'\n\nexport default {\n  Alert,\n  Button,\n  Carousel,\n  Collapse,\n  Dropdown,\n  Modal,\n  Offcanvas,\n  Popover,\n  ScrollSpy,\n  Tab,\n  Toast,\n  Tooltip\n}\n"],"mappings":";;;;;0OAOA,MAEMA,EAAiB,gBAuBjBC,EAAcC,IAClB,IAAIC,EAAWD,EAAQE,aAAa,kBAEpC,IAAKD,GAAyB,MAAbA,EAAkB,CACjC,IAAIE,EAAgBH,EAAQE,aAAa,QAMzC,IAAKC,IAAmBA,EAAcC,SAAS,OAASD,EAAcE,WAAW,KAC/E,OAAO,KAILF,EAAcC,SAAS,OAASD,EAAcE,WAAW,OAC3DF,EAAiB,IAAGA,EAAcG,MAAM,KAAK,MAG/CL,EAAWE,GAAmC,MAAlBA,EAAwBA,EAAcI,OAAS,IAC5E,CAED,OAAON,CAAP,EAGIO,EAAyBR,IAC7B,MAAMC,EAAWF,EAAYC,GAE7B,OAAIC,GACKQ,SAASC,cAAcT,GAAYA,EAGrC,IAAP,EAGIU,EAAyBX,IAC7B,MAAMC,EAAWF,EAAYC,GAE7B,OAAOC,EAAWQ,SAASC,cAAcT,GAAY,IAArD,EA0BIW,EAAuBZ,IAC3BA,EAAQa,cAAc,IAAIC,MAAMhB,GAAhC,EAGIiB,EAAYC,MACXA,GAA4B,iBAAXA,UAIO,IAAlBA,EAAOC,SAChBD,EAASA,EAAO,SAGgB,IAApBA,EAAOE,UAGjBC,EAAaH,GAEbD,EAAUC,GACLA,EAAOC,OAASD,EAAO,GAAKA,EAGf,iBAAXA,GAAuBA,EAAOI,OAAS,EACzCX,SAASC,cAAcM,GAGzB,KAGHK,EAAYrB,IAChB,IAAKe,EAAUf,IAAgD,IAApCA,EAAQsB,iBAAiBF,OAClD,OAAO,EAGT,MAAMG,EAAgF,YAA7DC,iBAAiBxB,GAASyB,iBAAiB,cAE9DC,EAAgB1B,EAAQ2B,QAAQ,uBAEtC,IAAKD,EACH,OAAOH,EAGT,GAAIG,IAAkB1B,EAAS,CAC7B,MAAM4B,EAAU5B,EAAQ2B,QAAQ,WAChC,GAAIC,GAAWA,EAAQC,aAAeH,EACpC,OAAO,EAGT,GAAgB,OAAZE,EACF,OAAO,CAEV,CAED,OAAOL,CAAP,EAGIO,EAAa9B,IACZA,GAAWA,EAAQkB,WAAaa,KAAKC,gBAItChC,EAAQiC,UAAUC,SAAS,mBAIC,IAArBlC,EAAQmC,SACVnC,EAAQmC,SAGVnC,EAAQoC,aAAa,aAAoD,UAArCpC,EAAQE,aAAa,aAG5DmC,EAAiBrC,IACrB,IAAKS,SAAS6B,gBAAgBC,aAC5B,OAAO,KAIT,GAAmC,mBAAxBvC,EAAQwC,YAA4B,CAC7C,MAAMC,EAAOzC,EAAQwC,cACrB,OAAOC,aAAgBC,WAAaD,EAAO,IAC5C,CAED,OAAIzC,aAAmB0C,WACd1C,EAIJA,EAAQ6B,WAINQ,EAAerC,EAAQ6B,YAHrB,IAGT,EAGIc,EAAO,OAUPC,EAAS5C,IACbA,EAAQ6C,YAAR,EAGIC,EAAY,IACZC,OAAOC,SAAWvC,SAASwC,KAAKb,aAAa,qBACxCW,OAAOC,OAGT,KAGHE,EAA4B,GAmB5BC,EAAQ,IAAuC,QAAjC1C,SAAS6B,gBAAgBc,IAEvCC,EAAqBC,IAnBAC,QAoBN,KACjB,MAAMC,EAAIV,IAEV,GAAIU,EAAG,CACL,MAAMC,EAAOH,EAAOI,KACdC,EAAqBH,EAAEI,GAAGH,GAChCD,EAAEI,GAAGH,GAAQH,EAAOO,gBACpBL,EAAEI,GAAGH,GAAMK,YAAcR,EACzBE,EAAEI,GAAGH,GAAMM,WAAa,KACtBP,EAAEI,GAAGH,GAAQE,EACNL,EAAOO,gBAEjB,GA/ByB,YAAxBpD,SAASuD,YAENd,EAA0B9B,QAC7BX,SAASwD,iBAAiB,oBAAoB,KAC5C,IAAK,MAAMV,KAAYL,EACrBK,GACD,IAILL,EAA0BgB,KAAKX,IAE/BA,GAOF,EAgBIY,EAAUZ,IACU,mBAAbA,GACTA,GACD,EAGGa,EAAyB,CAACb,EAAUc,EAAmBC,GAAoB,KAC/E,IAAKA,EAEH,YADAH,EAAQZ,GAIV,MACMgB,EA/LiCvE,KACvC,IAAKA,EACH,OAAO,EAIT,IAAIwE,mBAAEA,EAAFC,gBAAsBA,GAAoB1B,OAAOvB,iBAAiBxB,GAEtE,MAAM0E,EAA0BC,OAAOC,WAAWJ,GAC5CK,EAAuBF,OAAOC,WAAWH,GAG/C,OAAKC,GAA4BG,GAKjCL,EAAqBA,EAAmBlE,MAAM,KAAK,GACnDmE,EAAkBA,EAAgBnE,MAAM,KAAK,GAnFf,KAqFtBqE,OAAOC,WAAWJ,GAAsBG,OAAOC,WAAWH,KAPzD,CAOT,EA2KyBK,CAAiCT,GADlC,EAGxB,IAAIU,GAAS,EAEb,MAAMC,EAAU,EAAGC,aACbA,IAAWZ,IAIfU,GAAS,EACTV,EAAkBa,oBAAoBpF,EAAgBkF,GACtDb,EAAQZ,GAAR,EAGFc,EAAkBJ,iBAAiBnE,EAAgBkF,GACnDG,YAAW,KACJJ,GACHnE,EAAqByD,EACtB,GACAE,EAJH,EAgBIa,EAAuB,CAACC,EAAMC,EAAeC,EAAeC,KAChE,MAAMC,EAAaJ,EAAKjE,OACxB,IAAIsE,EAAQL,EAAKM,QAAQL,GAIzB,OAAe,IAAXI,GACMH,GAAiBC,EAAiBH,EAAKI,EAAa,GAAKJ,EAAK,IAGxEK,GAASH,EAAgB,GAAK,EAE1BC,IACFE,GAASA,EAAQD,GAAcA,GAG1BJ,EAAKO,KAAKC,IAAI,EAAGD,KAAKE,IAAIJ,EAAOD,EAAa,KAArD,EC1SIM,EAAiB,qBACjBC,EAAiB,OACjBC,EAAgB,SAChBC,EAAgB,GACtB,IAAIC,EAAW,EACf,MAAMC,EAAe,CACnBC,WAAY,YACZC,WAAY,YAGRC,EAAe,IAAIC,IAAI,CAC3B,QACA,WACA,UACA,YACA,cACA,aACA,iBACA,YACA,WACA,YACA,cACA,YACA,UACA,WACA,QACA,oBACA,aACA,YACA,WACA,cACA,cACA,cACA,YACA,eACA,gBACA,eACA,gBACA,aACA,QACA,OACA,SACA,QACA,SACA,SACA,UACA,WACA,OACA,SACA,eACA,SACA,OACA,mBACA,mBACA,QACA,QACA,WAOF,SAASC,EAAazG,EAAS0G,GAC7B,OAAQA,GAAQ,GAAEA,MAAQP,OAAiBnG,EAAQmG,UAAYA,GAChE,CAED,SAASQ,EAAiB3G,GACxB,MAAM0G,EAAMD,EAAazG,GAKzB,OAHAA,EAAQmG,SAAWO,EACnBR,EAAcQ,GAAOR,EAAcQ,IAAQ,GAEpCR,EAAcQ,EACtB,CAoCD,SAASE,EAAYC,EAAQC,EAAUC,EAAqB,MAC1D,OAAOC,OAAOC,OAAOJ,GAClBK,MAAKC,GAASA,EAAML,WAAaA,GAAYK,EAAMJ,qBAAuBA,GAC9E,CAED,SAASK,EAAoBC,EAAmBrC,EAASsC,GACvD,MAAMC,EAAiC,iBAAZvC,EAErB8B,EAAWS,EAAcD,EAAsBtC,GAAWsC,EAChE,IAAIE,EAAYC,EAAaJ,GAM7B,OAJKd,EAAamB,IAAIF,KACpBA,EAAYH,GAGP,CAACE,EAAaT,EAAUU,EAChC,CAED,SAASG,EAAW3H,EAASqH,EAAmBrC,EAASsC,EAAoBM,GAC3E,GAAiC,iBAAtBP,IAAmCrH,EAC5C,OAGF,IAAKuH,EAAaT,EAAUU,GAAaJ,EAAoBC,EAAmBrC,EAASsC,GAIzF,GAAID,KAAqBjB,EAAc,CACrC,MAAMyB,EAAejE,GACZ,SAAUuD,GACf,IAAKA,EAAMW,eAAkBX,EAAMW,gBAAkBX,EAAMY,iBAAmBZ,EAAMY,eAAe7F,SAASiF,EAAMW,eAChH,OAAOlE,EAAGoE,KAAKC,KAAMd,E,EAK3BL,EAAWe,EAAaf,EACzB,CAED,MAAMD,EAASF,EAAiB3G,GAC1BkI,EAAWrB,EAAOW,KAAeX,EAAOW,GAAa,IACrDW,EAAmBvB,EAAYsB,EAAUpB,EAAUS,EAAcvC,EAAU,MAEjF,GAAImD,EAGF,YAFAA,EAAiBP,OAASO,EAAiBP,QAAUA,GAKvD,MAAMlB,EAAMD,EAAaK,EAAUO,EAAkBe,QAAQrC,EAAgB,KACvEnC,EAAK2D,EAxEb,SAAoCvH,EAASC,EAAU2D,GACrD,OAAO,SAASoB,EAAQmC,GACtB,MAAMkB,EAAcrI,EAAQsI,iBAAiBrI,GAE7C,IAAK,IAAIgF,OAAEA,GAAWkC,EAAOlC,GAAUA,IAAWgD,KAAMhD,EAASA,EAAOpD,WACtE,IAAK,MAAM0G,KAAcF,EACvB,GAAIE,IAAetD,EAUnB,OANAuD,EAAWrB,EAAO,CAAEY,eAAgB9C,IAEhCD,EAAQ4C,QACVa,EAAaC,IAAI1I,EAASmH,EAAMwB,KAAM1I,EAAU2D,GAG3CA,EAAGgF,MAAM3D,EAAQ,CAACkC,G,CAIhC,CAqDG0B,CAA2B7I,EAASgF,EAAS8B,GArFjD,SAA0B9G,EAAS4D,GACjC,OAAO,SAASoB,EAAQmC,GAOtB,OANAqB,EAAWrB,EAAO,CAAEY,eAAgB/H,IAEhCgF,EAAQ4C,QACVa,EAAaC,IAAI1I,EAASmH,EAAMwB,KAAM/E,GAGjCA,EAAGgF,MAAM5I,EAAS,CAACmH,G,CAE7B,CA4EG2B,CAAiB9I,EAAS8G,GAE5BlD,EAAGmD,mBAAqBQ,EAAcvC,EAAU,KAChDpB,EAAGkD,SAAWA,EACdlD,EAAGgE,OAASA,EACZhE,EAAGuC,SAAWO,EACdwB,EAASxB,GAAO9C,EAEhB5D,EAAQiE,iBAAiBuD,EAAW5D,EAAI2D,EACzC,CAED,SAASwB,EAAc/I,EAAS6G,EAAQW,EAAWxC,EAAS+B,GAC1D,MAAMnD,EAAKgD,EAAYC,EAAOW,GAAYxC,EAAS+B,GAE9CnD,IAIL5D,EAAQkF,oBAAoBsC,EAAW5D,EAAIoF,QAAQjC,WAC5CF,EAAOW,GAAW5D,EAAGuC,UAC7B,CAED,SAAS8C,EAAyBjJ,EAAS6G,EAAQW,EAAW0B,GAC5D,MAAMC,EAAoBtC,EAAOW,IAAc,GAE/C,IAAK,MAAM4B,KAAcpC,OAAOqC,KAAKF,GACnC,GAAIC,EAAWhJ,SAAS8I,GAAY,CAClC,MAAM/B,EAAQgC,EAAkBC,GAChCL,EAAc/I,EAAS6G,EAAQW,EAAWL,EAAML,SAAUK,EAAMJ,mBACjE,CAEJ,CAED,SAASU,EAAaN,GAGpB,OADAA,EAAQA,EAAMiB,QAAQpC,EAAgB,IAC/BI,EAAae,IAAUA,CAC/B,CAED,MAAMsB,EAAe,CACnBa,GAAGtJ,EAASmH,EAAOnC,EAASsC,GAC1BK,EAAW3H,EAASmH,EAAOnC,EAASsC,GAAoB,E,EAG1DiC,IAAIvJ,EAASmH,EAAOnC,EAASsC,GAC3BK,EAAW3H,EAASmH,EAAOnC,EAASsC,GAAoB,E,EAG1DoB,IAAI1I,EAASqH,EAAmBrC,EAASsC,GACvC,GAAiC,iBAAtBD,IAAmCrH,EAC5C,OAGF,MAAOuH,EAAaT,EAAUU,GAAaJ,EAAoBC,EAAmBrC,EAASsC,GACrFkC,EAAchC,IAAcH,EAC5BR,EAASF,EAAiB3G,GAC1BmJ,EAAoBtC,EAAOW,IAAc,GACzCiC,EAAcpC,EAAkBhH,WAAW,KAEjD,QAAwB,IAAbyG,EAAX,CAUA,GAAI2C,EACF,IAAK,MAAMC,KAAgB1C,OAAOqC,KAAKxC,GACrCoC,EAAyBjJ,EAAS6G,EAAQ6C,EAAcrC,EAAkBsC,MAAM,IAIpF,IAAK,MAAMC,KAAe5C,OAAOqC,KAAKF,GAAoB,CACxD,MAAMC,EAAaQ,EAAYxB,QAAQnC,EAAe,IAEtD,IAAKuD,GAAenC,EAAkBjH,SAASgJ,GAAa,CAC1D,MAAMjC,EAAQgC,EAAkBS,GAChCb,EAAc/I,EAAS6G,EAAQW,EAAWL,EAAML,SAAUK,EAAMJ,mBACjE,CACF,CAfA,KARD,CAEE,IAAKC,OAAOqC,KAAKF,GAAmB/H,OAClC,OAGF2H,EAAc/I,EAAS6G,EAAQW,EAAWV,EAAUS,EAAcvC,EAAU,KAE7E,C,EAkBH6E,QAAQ7J,EAASmH,EAAO2C,GACtB,GAAqB,iBAAV3C,IAAuBnH,EAChC,OAAO,KAGT,MAAMwD,EAAIV,IAIV,IAAIiH,EAAc,KACdC,GAAU,EACVC,GAAiB,EACjBC,GAAmB,EALH/C,IADFM,EAAaN,IAQZ3D,IACjBuG,EAAcvG,EAAE1C,MAAMqG,EAAO2C,GAE7BtG,EAAExD,GAAS6J,QAAQE,GACnBC,GAAWD,EAAYI,uBACvBF,GAAkBF,EAAYK,gCAC9BF,EAAmBH,EAAYM,sBAGjC,IAAIC,EAAM,IAAIxJ,MAAMqG,EAAO,CAAE6C,UAASO,YAAY,IAelD,OAdAD,EAAM9B,EAAW8B,EAAKR,GAElBI,GACFI,EAAIE,iBAGFP,GACFjK,EAAQa,cAAcyJ,GAGpBA,EAAIJ,kBAAoBH,GAC1BA,EAAYS,iBAGPF,CACR,GAGH,SAAS9B,EAAWiC,EAAKC,GACvB,IAAK,MAAOC,EAAKC,KAAU5D,OAAO6D,QAAQH,GAAQ,IAChD,IACED,EAAIE,GAAOC,CAQZ,CAPC,MAAME,GACN9D,OAAO+D,eAAeN,EAAKE,EAAK,CAC9BK,cAAc,EACdC,IAAG,IACML,GAGZ,CAGH,OAAOH,CACR,CClTD,MAAMS,EAAa,IAAIC,IAEvBC,EAAe,CACbC,IAAIrL,EAAS2K,EAAKW,GACXJ,EAAWxD,IAAI1H,IAClBkL,EAAWG,IAAIrL,EAAS,IAAImL,KAG9B,MAAMI,EAAcL,EAAWD,IAAIjL,GAI9BuL,EAAY7D,IAAIiD,IAA6B,IAArBY,EAAYC,KAMzCD,EAAYF,IAAIV,EAAKW,GAJnBG,QAAQC,MAAO,+EAA8EC,MAAMC,KAAKL,EAAYlC,QAAQ,M,EAOhI4B,IAAG,CAACjL,EAAS2K,IACPO,EAAWxD,IAAI1H,IACVkL,EAAWD,IAAIjL,GAASiL,IAAIN,IAG9B,KAGTkB,OAAO7L,EAAS2K,GACd,IAAKO,EAAWxD,IAAI1H,GAClB,OAGF,MAAMuL,EAAcL,EAAWD,IAAIjL,GAEnCuL,EAAYO,OAAOnB,GAGM,IAArBY,EAAYC,MACdN,EAAWY,OAAO9L,EAErB,GC9CH,SAAS+L,EAAcnB,GACrB,GAAc,SAAVA,EACF,OAAO,EAGT,GAAc,UAAVA,EACF,OAAO,EAGT,GAAIA,IAAUjG,OAAOiG,GAAOoB,WAC1B,OAAOrH,OAAOiG,GAGhB,GAAc,KAAVA,GAA0B,SAAVA,EAClB,OAAO,KAGT,GAAqB,iBAAVA,EACT,OAAOA,EAGT,IACE,OAAOqB,KAAKC,MAAMC,mBAAmBvB,GAGtC,CAFC,MAAME,GACN,OAAOF,CACR,CACF,CAED,SAASwB,EAAiBzB,GACxB,OAAOA,EAAIvC,QAAQ,UAAUiE,GAAQ,IAAGA,EAAIC,iBAC7C,CAED,MAAMC,EAAc,CAClBC,iBAAiBxM,EAAS2K,EAAKC,GAC7B5K,EAAQyM,aAAc,WAAUL,EAAiBzB,KAAQC,E,EAG3D8B,oBAAoB1M,EAAS2K,GAC3B3K,EAAQ2M,gBAAiB,WAAUP,EAAiBzB,K,EAGtDiC,kBAAkB5M,GAChB,IAAKA,EACH,MAAO,GAGT,MAAM6M,EAAa,GACbC,EAAS9F,OAAOqC,KAAKrJ,EAAQ+M,SAASC,QAAOrC,GAAOA,EAAItK,WAAW,QAAUsK,EAAItK,WAAW,cAElG,IAAK,MAAMsK,KAAOmC,EAAQ,CACxB,IAAIG,EAAUtC,EAAIvC,QAAQ,MAAO,IACjC6E,EAAUA,EAAQC,OAAO,GAAGZ,cAAgBW,EAAQtD,MAAM,EAAGsD,EAAQ7L,QACrEyL,EAAWI,GAAWlB,EAAc/L,EAAQ+M,QAAQpC,GACrD,CAED,OAAOkC,C,EAGTM,iBAAgB,CAACnN,EAAS2K,IACjBoB,EAAc/L,EAAQE,aAAc,WAAUkM,EAAiBzB,QCpD1E,MAAMyC,EAEOC,qBACT,MAAO,EACR,CAEUC,yBACT,MAAO,EACR,CAEU5J,kBACT,MAAM,IAAI6J,MAAM,sEACjB,CAEDC,WAAWC,GAIT,OAHAA,EAASxF,KAAKyF,gBAAgBD,GAC9BA,EAASxF,KAAK0F,kBAAkBF,GAChCxF,KAAK2F,iBAAiBH,GACfA,CACR,CAEDE,kBAAkBF,GAChB,OAAOA,CACR,CAEDC,gBAAgBD,EAAQzN,GACtB,MAAM6N,EAAa9M,EAAUf,GAAWuM,EAAYY,iBAAiBnN,EAAS,UAAY,GAE1F,MAAO,IACFiI,KAAK6F,YAAYT,WACM,iBAAfQ,EAA0BA,EAAa,MAC9C9M,EAAUf,GAAWuM,EAAYK,kBAAkB5M,GAAW,MAC5C,iBAAXyN,EAAsBA,EAAS,GAE7C,CAEDG,iBAAiBH,EAAQM,EAAc9F,KAAK6F,YAAYR,aACtD,IAAK,MAAMU,KAAYhH,OAAOqC,KAAK0E,GAAc,CAC/C,MAAME,EAAgBF,EAAYC,GAC5BpD,EAAQ6C,EAAOO,GACfE,EAAYnN,EAAU6J,GAAS,UJzCrC5J,OADSA,EI0C+C4J,GJxClD,GAAE5J,IAGLgG,OAAOmH,UAAUnC,SAAShE,KAAKhH,GAAQoN,MAAM,eAAe,GAAG9B,cIuClE,IAAK,IAAI+B,OAAOJ,GAAeK,KAAKJ,GAClC,MAAM,IAAIK,UACP,GAAEtG,KAAK6F,YAAYpK,KAAK8K,0BAA0BR,qBAA4BE,yBAAiCD,MAGrH,CJjDUjN,KIkDZ,ECxCH,MAAMyN,UAAsBrB,EAC1BU,YAAY9N,EAASyN,GACnBiB,SAEA1O,EAAUmB,EAAWnB,MAKrBiI,KAAK0G,SAAW3O,EAChBiI,KAAK2G,QAAU3G,KAAKuF,WAAWC,GAE/BrC,EAAKC,IAAIpD,KAAK0G,SAAU1G,KAAK6F,YAAYe,SAAU5G,MACpD,CAGD6G,UACE1D,EAAKS,OAAO5D,KAAK0G,SAAU1G,KAAK6F,YAAYe,UAC5CpG,EAAaC,IAAIT,KAAK0G,SAAU1G,KAAK6F,YAAYiB,WAEjD,IAAK,MAAMC,KAAgBhI,OAAOiI,oBAAoBhH,MACpDA,KAAK+G,GAAgB,IAExB,CAEDE,eAAe3L,EAAUvD,EAASmP,GAAa,GAC7C/K,EAAuBb,EAAUvD,EAASmP,EAC3C,CAED3B,WAAWC,GAIT,OAHAA,EAASxF,KAAKyF,gBAAgBD,EAAQxF,KAAK0G,UAC3ClB,EAASxF,KAAK0F,kBAAkBF,GAChCxF,KAAK2F,iBAAiBH,GACfA,CACR,CAGiB2B,mBAACpP,GACjB,OAAOoL,EAAKH,IAAI9J,EAAWnB,GAAUiI,KAAK4G,SAC3C,CAEyBO,2BAACpP,EAASyN,EAAS,IAC3C,OAAOxF,KAAKoH,YAAYrP,IAAY,IAAIiI,KAAKjI,EAA2B,iBAAXyN,EAAsBA,EAAS,KAC7F,CAEU6B,qBACT,MApDY,OAqDb,CAEUT,sBACT,MAAQ,MAAK5G,KAAKvE,MACnB,CAEUqL,uBACT,MAAQ,IAAG9G,KAAK4G,UACjB,CAEeO,iBAAC3L,GACf,MAAQ,GAAEA,IAAOwE,KAAK8G,WACvB,ECvEH,MAAMQ,EAAuB,CAACC,EAAWC,EAAS,UAChD,MAAMC,EAAc,gBAAeF,EAAUT,YACvCtL,EAAO+L,EAAU9L,KAEvB+E,EAAaa,GAAG7I,SAAUiP,EAAa,qBAAoBjM,OAAU,SAAU0D,GAK7E,GAJI,CAAC,IAAK,QAAQ/G,SAAS6H,KAAK0H,UAC9BxI,EAAMqD,iBAGJ1I,EAAWmG,MACb,OAGF,MAAMhD,EAAStE,EAAuBsH,OAASA,KAAKtG,QAAS,IAAG8B,KAC/C+L,EAAUI,oBAAoB3K,GAGtCwK,I,GAbX,ECeF,MAAMI,UAAcpB,EAEP/K,kBACT,MAhBS,OAiBV,CAGDoM,QAGE,GAFmBrH,EAAaoB,QAAQ5B,KAAK0G,SAjB5B,kBAmBFzE,iBACb,OAGFjC,KAAK0G,SAAS1M,UAAU4J,OApBJ,QAsBpB,MAAMsD,EAAalH,KAAK0G,SAAS1M,UAAUC,SAvBvB,QAwBpB+F,KAAKiH,gBAAe,IAAMjH,KAAK8H,mBAAmB9H,KAAK0G,SAAUQ,EAClE,CAGDY,kBACE9H,KAAK0G,SAAS9C,SACdpD,EAAaoB,QAAQ5B,KAAK0G,SA/BR,mBAgClB1G,KAAK6G,SACN,CAGqBM,uBAAC3B,GACrB,OAAOxF,KAAK+H,MAAK,WACf,MAAMC,EAAOJ,EAAMD,oBAAoB3H,MAEvC,GAAsB,iBAAXwF,EAAX,CAIA,QAAqByC,IAAjBD,EAAKxC,IAAyBA,EAAOpN,WAAW,MAAmB,gBAAXoN,EAC1D,MAAM,IAAIc,UAAW,oBAAmBd,MAG1CwC,EAAKxC,GAAQxF,KANZ,CAOF,GACF,EAOHsH,EAAqBM,EAAO,SAM5BxM,EAAmBwM,GCrEnB,MAMMM,EAAuB,4BAO7B,MAAMC,UAAe3B,EAER/K,kBACT,MAhBS,QAiBV,CAGD2M,SAEEpI,KAAK0G,SAASlC,aAAa,eAAgBxE,KAAK0G,SAAS1M,UAAUoO,OAjB7C,UAkBvB,CAGqBjB,uBAAC3B,GACrB,OAAOxF,KAAK+H,MAAK,WACf,MAAMC,EAAOG,EAAOR,oBAAoB3H,MAEzB,WAAXwF,GACFwC,EAAKxC,IAER,GACF,EAOHhF,EAAaa,GAAG7I,SAlCc,2BAkCkB0P,GAAsBhJ,IACpEA,EAAMqD,iBAEN,MAAM8F,EAASnJ,EAAMlC,OAAOtD,QAAQwO,GACvBC,EAAOR,oBAAoBU,GAEnCD,QAAL,IAOFhN,EAAmB+M,GCxDnB,MAAMG,EAAiB,CACrBrJ,KAAI,CAACjH,EAAUD,EAAUS,SAAS6B,kBACzB,GAAGkO,UAAUC,QAAQtC,UAAU7F,iBAAiBN,KAAKhI,EAASC,IAGvEyQ,QAAO,CAACzQ,EAAUD,EAAUS,SAAS6B,kBAC5BmO,QAAQtC,UAAUzN,cAAcsH,KAAKhI,EAASC,GAGvD0Q,SAAQ,CAAC3Q,EAASC,IACT,GAAGuQ,UAAUxQ,EAAQ2Q,UAAU3D,QAAO4D,GAASA,EAAMC,QAAQ5Q,KAGtE6Q,QAAQ9Q,EAASC,GACf,MAAM6Q,EAAU,GAChB,IAAIC,EAAW/Q,EAAQ6B,WAAWF,QAAQ1B,GAE1C,KAAO8Q,GACLD,EAAQ5M,KAAK6M,GACbA,EAAWA,EAASlP,WAAWF,QAAQ1B,GAGzC,OAAO6Q,C,EAGTE,KAAKhR,EAASC,GACZ,IAAIgR,EAAWjR,EAAQkR,uBAEvB,KAAOD,GAAU,CACf,GAAIA,EAASJ,QAAQ5Q,GACnB,MAAO,CAACgR,GAGVA,EAAWA,EAASC,sBACrB,CAED,MAAO,E,EAGTC,KAAKnR,EAASC,GACZ,IAAIkR,EAAOnR,EAAQoR,mBAEnB,KAAOD,GAAM,CACX,GAAIA,EAAKN,QAAQ5Q,GACf,MAAO,CAACkR,GAGVA,EAAOA,EAAKC,kBACb,CAED,MAAO,E,EAGTC,kBAAkBrR,GAChB,MAAMsR,EAAa,CACjB,IACA,SACA,QACA,WACA,SACA,UACA,aACA,4BACAC,KAAItR,GAAa,GAAEA,2BAAiCuR,KAAK,KAE3D,OAAOvJ,KAAKf,KAAKoK,EAAYtR,GAASgN,QAAOyE,IAAO3P,EAAW2P,IAAOpQ,EAAUoQ,IACjF,GCpDGpE,EAAU,CACdqE,YAAa,KACbC,aAAc,KACdC,cAAe,MAGXtE,EAAc,CAClBoE,YAAa,kBACbC,aAAc,kBACdC,cAAe,mBAOjB,MAAMC,UAAczE,EAClBU,YAAY9N,EAASyN,GACnBiB,QACAzG,KAAK0G,SAAW3O,EAEXA,GAAY6R,EAAMC,gBAIvB7J,KAAK2G,QAAU3G,KAAKuF,WAAWC,GAC/BxF,KAAK8J,QAAU,EACf9J,KAAK+J,sBAAwBhJ,QAAQjG,OAAOkP,cAC5ChK,KAAKiK,cACN,CAGU7E,qBACT,OAAOA,CACR,CAEUC,yBACT,OAAOA,CACR,CAEU5J,kBACT,MArDS,OAsDV,CAGDoL,UACErG,EAAaC,IAAIT,KAAK0G,SAzDR,YA0Df,CAGDwD,OAAOhL,GACAc,KAAK+J,sBAMN/J,KAAKmK,wBAAwBjL,KAC/Bc,KAAK8J,QAAU5K,EAAMkL,SANrBpK,KAAK8J,QAAU5K,EAAMmL,QAAQ,GAAGD,OAQnC,CAEDE,KAAKpL,GACCc,KAAKmK,wBAAwBjL,KAC/Bc,KAAK8J,QAAU5K,EAAMkL,QAAUpK,KAAK8J,SAGtC9J,KAAKuK,eACLrO,EAAQ8D,KAAK2G,QAAQ8C,YACtB,CAEDe,MAAMtL,GACJc,KAAK8J,QAAU5K,EAAMmL,SAAWnL,EAAMmL,QAAQlR,OAAS,EACrD,EACA+F,EAAMmL,QAAQ,GAAGD,QAAUpK,KAAK8J,OACnC,CAEDS,eACE,MAAME,EAAY9M,KAAK+M,IAAI1K,KAAK8J,SAEhC,GAAIW,GAlFgB,GAmFlB,OAGF,MAAME,EAAYF,EAAYzK,KAAK8J,QAEnC9J,KAAK8J,QAAU,EAEVa,GAILzO,EAAQyO,EAAY,EAAI3K,KAAK2G,QAAQgD,cAAgB3J,KAAK2G,QAAQ+C,aACnE,CAEDO,cACMjK,KAAK+J,uBACPvJ,EAAaa,GAAGrB,KAAK0G,SAxGA,wBAwG6BxH,GAASc,KAAKkK,OAAOhL,KACvEsB,EAAaa,GAAGrB,KAAK0G,SAxGF,sBAwG6BxH,GAASc,KAAKsK,KAAKpL,KAEnEc,KAAK0G,SAAS1M,UAAU4Q,IAvGG,mBAyG3BpK,EAAaa,GAAGrB,KAAK0G,SAhHD,uBAgH6BxH,GAASc,KAAKkK,OAAOhL,KACtEsB,EAAaa,GAAGrB,KAAK0G,SAhHF,sBAgH6BxH,GAASc,KAAKwK,MAAMtL,KACpEsB,EAAaa,GAAGrB,KAAK0G,SAhHH,qBAgH6BxH,GAASc,KAAKsK,KAAKpL,KAErE,CAEDiL,wBAAwBjL,GACtB,OAAOc,KAAK+J,wBAjHS,QAiHiB7K,EAAM2L,aAlHrB,UAkHyD3L,EAAM2L,YACvF,CAGiB1D,qBAChB,MAAO,iBAAkB3O,SAAS6B,iBAAmByQ,UAAUC,eAAiB,CACjF,ECpHH,MASMC,EAAa,OACbC,EAAa,OACbC,EAAiB,OACjBC,GAAkB,QAGlBC,GAAc,mBAQdC,GAAsB,WACtBC,GAAoB,SAepBC,GAAmB,CACvBC,UAAkBL,GAClBM,WAAmBP,GAGf9F,GAAU,CACdsG,SAAU,IACVC,UAAU,EACVC,MAAO,QACPC,MAAM,EACNC,OAAO,EACPC,MAAM,GAGF1G,GAAc,CAClBqG,SAAU,mBACVC,SAAU,UACVC,MAAO,mBACPC,KAAM,mBACNC,MAAO,UACPC,KAAM,WAOR,MAAMC,WAAiBxF,EACrBX,YAAY9N,EAASyN,GACnBiB,MAAM1O,EAASyN,GAEfxF,KAAKiM,UAAY,KACjBjM,KAAKkM,eAAiB,KACtBlM,KAAKmM,YAAa,EAClBnM,KAAKoM,aAAe,KACpBpM,KAAKqM,aAAe,KAEpBrM,KAAKsM,mBAAqBhE,EAAeG,QAzCjB,uBAyC8CzI,KAAK0G,UAC3E1G,KAAKuM,qBAEDvM,KAAK2G,QAAQkF,OAASR,IACxBrL,KAAKwM,OAER,CAGUpH,qBACT,OAAOA,EACR,CAEUC,yBACT,OAAOA,EACR,CAEU5J,kBACT,MA9FS,UA+FV,CAGDyN,OACElJ,KAAKyM,OAAOzB,EACb,CAED0B,mBAIOlU,SAASmU,QAAUvT,EAAU4G,KAAK0G,WACrC1G,KAAKkJ,MAER,CAEDH,OACE/I,KAAKyM,OAAOxB,EACb,CAEDW,QACM5L,KAAKmM,YACPxT,EAAqBqH,KAAK0G,UAG5B1G,KAAK4M,gBACN,CAEDJ,QACExM,KAAK4M,iBACL5M,KAAK6M,kBAEL7M,KAAKiM,UAAYa,aAAY,IAAM9M,KAAK0M,mBAAmB1M,KAAK2G,QAAQ+E,SACzE,CAEDqB,oBACO/M,KAAK2G,QAAQkF,OAId7L,KAAKmM,WACP3L,EAAac,IAAItB,KAAK0G,SAAU0E,IAAY,IAAMpL,KAAKwM,UAIzDxM,KAAKwM,QACN,CAEDQ,GAAGvP,GACD,MAAMwP,EAAQjN,KAAKkN,YACnB,GAAIzP,EAAQwP,EAAM9T,OAAS,GAAKsE,EAAQ,EACtC,OAGF,GAAIuC,KAAKmM,WAEP,YADA3L,EAAac,IAAItB,KAAK0G,SAAU0E,IAAY,IAAMpL,KAAKgN,GAAGvP,KAI5D,MAAM0P,EAAcnN,KAAKoN,cAAcpN,KAAKqN,cAC5C,GAAIF,IAAgB1P,EAClB,OAGF,MAAM6P,EAAQ7P,EAAQ0P,EAAcnC,EAAaC,EAEjDjL,KAAKyM,OAAOa,EAAOL,EAAMxP,GAC1B,CAEDoJ,UACM7G,KAAKqM,cACPrM,KAAKqM,aAAaxF,UAGpBJ,MAAMI,SACP,CAGDnB,kBAAkBF,GAEhB,OADAA,EAAO+H,gBAAkB/H,EAAOkG,SACzBlG,CACR,CAED+G,qBACMvM,KAAK2G,QAAQgF,UACfnL,EAAaa,GAAGrB,KAAK0G,SApKJ,uBAoK6BxH,GAASc,KAAKwN,SAAStO,KAG5C,UAAvBc,KAAK2G,QAAQiF,QACfpL,EAAaa,GAAGrB,KAAK0G,SAvKD,0BAuK6B,IAAM1G,KAAK4L,UAC5DpL,EAAaa,GAAGrB,KAAK0G,SAvKD,0BAuK6B,IAAM1G,KAAK+M,uBAG1D/M,KAAK2G,QAAQmF,OAASlC,EAAMC,eAC9B7J,KAAKyN,yBAER,CAEDA,0BACE,IAAK,MAAMC,KAAOpF,EAAerJ,KAhKX,qBAgKmCe,KAAK0G,UAC5DlG,EAAaa,GAAGqM,EAhLI,yBAgLmBxO,GAASA,EAAMqD,mBAGxD,MAqBMoL,EAAc,CAClBjE,aAAc,IAAM1J,KAAKyM,OAAOzM,KAAK4N,kBAAkB1C,IACvDvB,cAAe,IAAM3J,KAAKyM,OAAOzM,KAAK4N,kBAAkBzC,KACxD1B,YAxBkB,KACS,UAAvBzJ,KAAK2G,QAAQiF,QAYjB5L,KAAK4L,QACD5L,KAAKoM,cACPyB,aAAa7N,KAAKoM,cAGpBpM,KAAKoM,aAAelP,YAAW,IAAM8C,KAAK+M,qBAjNjB,IAiN+D/M,KAAK2G,QAAQ+E,UAArG,GASF1L,KAAKqM,aAAe,IAAIzC,EAAM5J,KAAK0G,SAAUiH,EAC9C,CAEDH,SAAStO,GACP,GAAI,kBAAkBmH,KAAKnH,EAAMlC,OAAO0K,SACtC,OAGF,MAAMiD,EAAYY,GAAiBrM,EAAMwD,KACrCiI,IACFzL,EAAMqD,iBACNvC,KAAKyM,OAAOzM,KAAK4N,kBAAkBjD,IAEtC,CAEDyC,cAAcrV,GACZ,OAAOiI,KAAKkN,YAAYxP,QAAQ3F,EACjC,CAED+V,2BAA2BrQ,GACzB,IAAKuC,KAAKsM,mBACR,OAGF,MAAMyB,EAAkBzF,EAAeG,QA1NnB,UA0N4CzI,KAAKsM,oBAErEyB,EAAgB/T,UAAU4J,OAAO0H,IACjCyC,EAAgBrJ,gBAAgB,gBAEhC,MAAMsJ,EAAqB1F,EAAeG,QAAS,sBAAqBhL,MAAWuC,KAAKsM,oBAEpF0B,IACFA,EAAmBhU,UAAU4Q,IAAIU,IACjC0C,EAAmBxJ,aAAa,eAAgB,QAEnD,CAEDqI,kBACE,MAAM9U,EAAUiI,KAAKkM,gBAAkBlM,KAAKqN,aAE5C,IAAKtV,EACH,OAGF,MAAMkW,EAAkBvR,OAAOwR,SAASnW,EAAQE,aAAa,oBAAqB,IAElF+H,KAAK2G,QAAQ+E,SAAWuC,GAAmBjO,KAAK2G,QAAQ4G,eACzD,CAEDd,OAAOa,EAAOvV,EAAU,MACtB,GAAIiI,KAAKmM,WACP,OAGF,MAAM9O,EAAgB2C,KAAKqN,aACrBc,EAASb,IAAUtC,EACnBoD,EAAcrW,GAAWoF,EAAqB6C,KAAKkN,YAAa7P,EAAe8Q,EAAQnO,KAAK2G,QAAQoF,MAE1G,GAAIqC,IAAgB/Q,EAClB,OAGF,MAAMgR,EAAmBrO,KAAKoN,cAAcgB,GAEtCE,EAAeC,GACZ/N,EAAaoB,QAAQ5B,KAAK0G,SAAU6H,EAAW,CACpD1O,cAAeuO,EACfzD,UAAW3K,KAAKwO,kBAAkBlB,GAClC3J,KAAM3D,KAAKoN,cAAc/P,GACzB2P,GAAIqB,IAMR,GAFmBC,EA5RF,qBA8RFrM,iBACb,OAGF,IAAK5E,IAAkB+Q,EAGrB,OAGF,MAAMK,EAAY1N,QAAQf,KAAKiM,WAC/BjM,KAAK4L,QAEL5L,KAAKmM,YAAa,EAElBnM,KAAK8N,2BAA2BO,GAChCrO,KAAKkM,eAAiBkC,EAEtB,MAAMM,EAAuBP,EAnSR,sBADF,oBAqSbQ,EAAiBR,EAnSH,qBACA,qBAoSpBC,EAAYpU,UAAU4Q,IAAI+D,GAE1BhU,EAAOyT,GAEP/Q,EAAcrD,UAAU4Q,IAAI8D,GAC5BN,EAAYpU,UAAU4Q,IAAI8D,GAa1B1O,KAAKiH,gBAXoB,KACvBmH,EAAYpU,UAAU4J,OAAO8K,EAAsBC,GACnDP,EAAYpU,UAAU4Q,IAAIU,IAE1BjO,EAAcrD,UAAU4J,OAAO0H,GAAmBqD,EAAgBD,GAElE1O,KAAKmM,YAAa,EAElBmC,EAAalD,GAAb,GAGoC/N,EAAe2C,KAAK4O,eAEtDH,GACFzO,KAAKwM,OAER,CAEDoC,cACE,OAAO5O,KAAK0G,SAAS1M,UAAUC,SAlUV,QAmUtB,CAEDoT,aACE,OAAO/E,EAAeG,QA9TGoG,wBA8T2B7O,KAAK0G,SAC1D,CAEDwG,YACE,OAAO5E,EAAerJ,KAnUJ,iBAmUwBe,KAAK0G,SAChD,CAEDkG,iBACM5M,KAAKiM,YACP6C,cAAc9O,KAAKiM,WACnBjM,KAAKiM,UAAY,KAEpB,CAED2B,kBAAkBjD,GAChB,OAAIzP,IACKyP,IAAcO,EAAiBD,EAAaD,EAG9CL,IAAcO,EAAiBF,EAAaC,CACpD,CAEDuD,kBAAkBlB,GAChB,OAAIpS,IACKoS,IAAUrC,EAAaC,EAAiBC,GAG1CmC,IAAUrC,EAAaE,GAAkBD,CACjD,CAGqB/D,uBAAC3B,GACrB,OAAOxF,KAAK+H,MAAK,WACf,MAAMC,EAAOgE,GAASrE,oBAAoB3H,KAAMwF,GAEhD,GAAsB,iBAAXA,GAKX,GAAsB,iBAAXA,EAAqB,CAC9B,QAAqByC,IAAjBD,EAAKxC,IAAyBA,EAAOpN,WAAW,MAAmB,gBAAXoN,EAC1D,MAAM,IAAIc,UAAW,oBAAmBd,MAG1CwC,EAAKxC,IACN,OAVCwC,EAAKgF,GAAGxH,EAWX,GACF,EAOHhF,EAAaa,GAAG7I,SAjYc,6BAeF,uCAkXyC,SAAU0G,GAC7E,MAAMlC,EAAStE,EAAuBsH,MAEtC,IAAKhD,IAAWA,EAAOhD,UAAUC,SAASoR,IACxC,OAGFnM,EAAMqD,iBAEN,MAAMwM,EAAW/C,GAASrE,oBAAoB3K,GACxCgS,EAAahP,KAAK/H,aAAa,oBAErC,OAAI+W,GACFD,EAAS/B,GAAGgC,QACZD,EAAShC,qBAIyC,SAAhDzI,EAAYY,iBAAiBlF,KAAM,UACrC+O,EAAS7F,YACT6F,EAAShC,sBAIXgC,EAAShG,YACTgG,EAAShC,oBACV,IAEDvM,EAAaa,GAAGvG,OA9Za,6BA8ZgB,KAC3C,MAAMmU,EAAY3G,EAAerJ,KA9YR,6BAgZzB,IAAK,MAAM8P,KAAYE,EACrBjD,GAASrE,oBAAoBoH,EAC9B,IAOH3T,EAAmB4Q,IClcnB,MAWMkD,GAAkB,OAClBC,GAAsB,WACtBC,GAAwB,aASxBlH,GAAuB,8BAEvB9C,GAAU,CACdiK,OAAQ,KACRjH,QAAQ,GAGJ/C,GAAc,CAClBgK,OAAQ,iBACRjH,OAAQ,WAOV,MAAMkH,WAAiB9I,EACrBX,YAAY9N,EAASyN,GACnBiB,MAAM1O,EAASyN,GAEfxF,KAAKuP,kBAAmB,EACxBvP,KAAKwP,cAAgB,GAErB,MAAMC,EAAanH,EAAerJ,KAAKiJ,IAEvC,IAAK,MAAMwH,KAAQD,EAAY,CAC7B,MAAMzX,EAAWO,EAAuBmX,GAClCC,EAAgBrH,EAAerJ,KAAKjH,GACvC+M,QAAO6K,GAAgBA,IAAiB5P,KAAK0G,WAE/B,OAAb1O,GAAqB2X,EAAcxW,QACrC6G,KAAKwP,cAAcvT,KAAKyT,EAE3B,CAED1P,KAAK6P,sBAEA7P,KAAK2G,QAAQ0I,QAChBrP,KAAK8P,0BAA0B9P,KAAKwP,cAAexP,KAAK+P,YAGtD/P,KAAK2G,QAAQyB,QACfpI,KAAKoI,QAER,CAGUhD,qBACT,OAAOA,EACR,CAEUC,yBACT,OAAOA,EACR,CAEU5J,kBACT,MA9ES,UA+EV,CAGD2M,SACMpI,KAAK+P,WACP/P,KAAKgQ,OAELhQ,KAAKiQ,MAER,CAEDA,OACE,GAAIjQ,KAAKuP,kBAAoBvP,KAAK+P,WAChC,OAGF,IAAIG,EAAiB,GASrB,GANIlQ,KAAK2G,QAAQ0I,SACfa,EAAiBlQ,KAAKmQ,uBA9EH,wCA+EhBpL,QAAOhN,GAAWA,IAAYiI,KAAK0G,WACnC4C,KAAIvR,GAAWuX,GAAS3H,oBAAoB5P,EAAS,CAAEqQ,QAAQ,OAGhE8H,EAAe/W,QAAU+W,EAAe,GAAGX,iBAC7C,OAIF,GADmB/O,EAAaoB,QAAQ5B,KAAK0G,SAvG7B,oBAwGDzE,iBACb,OAGF,IAAK,MAAMmO,KAAkBF,EAC3BE,EAAeJ,OAGjB,MAAMK,EAAYrQ,KAAKsQ,gBAEvBtQ,KAAK0G,SAAS1M,UAAU4J,OAAOuL,IAC/BnP,KAAK0G,SAAS1M,UAAU4Q,IAAIwE,IAE5BpP,KAAK0G,SAAS6J,MAAMF,GAAa,EAEjCrQ,KAAK8P,0BAA0B9P,KAAKwP,eAAe,GACnDxP,KAAKuP,kBAAmB,EAExB,MAYMiB,EAAc,SADSH,EAAU,GAAG9J,cAAgB8J,EAAU3O,MAAM,KAG1E1B,KAAKiH,gBAdY,KACfjH,KAAKuP,kBAAmB,EAExBvP,KAAK0G,SAAS1M,UAAU4J,OAAOwL,IAC/BpP,KAAK0G,SAAS1M,UAAU4Q,IAAIuE,GAAqBD,IAEjDlP,KAAK0G,SAAS6J,MAAMF,GAAa,GAEjC7P,EAAaoB,QAAQ5B,KAAK0G,SAjIX,oBAiIf,GAM4B1G,KAAK0G,UAAU,GAC7C1G,KAAK0G,SAAS6J,MAAMF,GAAc,GAAErQ,KAAK0G,SAAS8J,MACnD,CAEDR,OACE,GAAIhQ,KAAKuP,mBAAqBvP,KAAK+P,WACjC,OAIF,GADmBvP,EAAaoB,QAAQ5B,KAAK0G,SA/I7B,oBAgJDzE,iBACb,OAGF,MAAMoO,EAAYrQ,KAAKsQ,gBAEvBtQ,KAAK0G,SAAS6J,MAAMF,GAAc,GAAErQ,KAAK0G,SAAS+J,wBAAwBJ,OAE1E1V,EAAOqF,KAAK0G,UAEZ1G,KAAK0G,SAAS1M,UAAU4Q,IAAIwE,IAC5BpP,KAAK0G,SAAS1M,UAAU4J,OAAOuL,GAAqBD,IAEpD,IAAK,MAAMtN,KAAW5B,KAAKwP,cAAe,CACxC,MAAMzX,EAAUW,EAAuBkJ,GAEnC7J,IAAYiI,KAAK+P,SAAShY,IAC5BiI,KAAK8P,0BAA0B,CAAClO,IAAU,EAE7C,CAED5B,KAAKuP,kBAAmB,EASxBvP,KAAK0G,SAAS6J,MAAMF,GAAa,GAEjCrQ,KAAKiH,gBATY,KACfjH,KAAKuP,kBAAmB,EACxBvP,KAAK0G,SAAS1M,UAAU4J,OAAOwL,IAC/BpP,KAAK0G,SAAS1M,UAAU4Q,IAAIuE,IAC5B3O,EAAaoB,QAAQ5B,KAAK0G,SA1KV,qBA0KhB,GAK4B1G,KAAK0G,UAAU,EAC9C,CAEDqJ,SAAShY,EAAUiI,KAAK0G,UACtB,OAAO3O,EAAQiC,UAAUC,SAASiV,GACnC,CAGDxJ,kBAAkBF,GAGhB,OAFAA,EAAO4C,OAASrH,QAAQyE,EAAO4C,QAC/B5C,EAAO6J,OAASnW,EAAWsM,EAAO6J,QAC3B7J,CACR,CAED8K,gBACE,OAAOtQ,KAAK0G,SAAS1M,UAAUC,SAtLL,uBAEhB,QACC,QAoLZ,CAED4V,sBACE,IAAK7P,KAAK2G,QAAQ0I,OAChB,OAGF,MAAM3G,EAAW1I,KAAKmQ,uBAAuBjI,IAE7C,IAAK,MAAMnQ,KAAW2Q,EAAU,CAC9B,MAAMgI,EAAWhY,EAAuBX,GAEpC2Y,GACF1Q,KAAK8P,0BAA0B,CAAC/X,GAAUiI,KAAK+P,SAASW,GAE3D,CACF,CAEDP,uBAAuBnY,GACrB,MAAM0Q,EAAWJ,EAAerJ,KA3MA,6BA2MiCe,KAAK2G,QAAQ0I,QAE9E,OAAO/G,EAAerJ,KAAKjH,EAAUgI,KAAK2G,QAAQ0I,QAAQtK,QAAOhN,IAAY2Q,EAASvQ,SAASJ,IAChG,CAED+X,0BAA0Ba,EAAcC,GACtC,GAAKD,EAAaxX,OAIlB,IAAK,MAAMpB,KAAW4Y,EACpB5Y,EAAQiC,UAAUoO,OAvNK,aAuNyBwI,GAChD7Y,EAAQyM,aAAa,gBAAiBoM,EAEzC,CAGqBzJ,uBAAC3B,GACrB,MAAMmB,EAAU,GAKhB,MAJsB,iBAAXnB,GAAuB,YAAYa,KAAKb,KACjDmB,EAAQyB,QAAS,GAGZpI,KAAK+H,MAAK,WACf,MAAMC,EAAOsH,GAAS3H,oBAAoB3H,KAAM2G,GAEhD,GAAsB,iBAAXnB,EAAqB,CAC9B,QAA4B,IAAjBwC,EAAKxC,GACd,MAAM,IAAIc,UAAW,oBAAmBd,MAG1CwC,EAAKxC,IACN,CACF,GACF,EAOHhF,EAAaa,GAAG7I,SA1Pc,6BA0PkB0P,IAAsB,SAAUhJ,IAEjD,MAAzBA,EAAMlC,OAAO0K,SAAoBxI,EAAMY,gBAAmD,MAAjCZ,EAAMY,eAAe4H,UAChFxI,EAAMqD,iBAGR,MAAMvK,EAAWO,EAAuByH,MAClC6Q,EAAmBvI,EAAerJ,KAAKjH,GAE7C,IAAK,MAAMD,KAAW8Y,EACpBvB,GAAS3H,oBAAoB5P,EAAS,CAAEqQ,QAAQ,IAASA,QAE5D,IAMDhN,EAAmBkU,IC3SZ,IAAIwB,GAAM,MACNC,GAAS,SACTC,GAAQ,QACRC,GAAO,OACPC,GAAO,OACPC,GAAiB,CAACL,GAAKC,GAAQC,GAAOC,IACtCG,GAAQ,QACRC,GAAM,MACNC,GAAkB,kBAClBC,GAAW,WACXC,GAAS,SACTC,GAAY,YACZC,GAAmCP,GAAeQ,QAAO,SAAUC,EAAKC,GACjF,OAAOD,EAAIrJ,OAAO,CAACsJ,EAAY,IAAMT,GAAOS,EAAY,IAAMR,IAChE,GAAG,IACQS,GAA0B,GAAGvJ,OAAO4I,GAAgB,CAACD,KAAOS,QAAO,SAAUC,EAAKC,GAC3F,OAAOD,EAAIrJ,OAAO,CAACsJ,EAAWA,EAAY,IAAMT,GAAOS,EAAY,IAAMR,IAC3E,GAAG,IAEQU,GAAa,aACbC,GAAO,OACPC,GAAY,YAEZC,GAAa,aACbC,GAAO,OACPC,GAAY,YAEZC,GAAc,cACdC,GAAQ,QACRC,GAAa,aACbC,GAAiB,CAACT,GAAYC,GAAMC,GAAWC,GAAYC,GAAMC,GAAWC,GAAaC,GAAOC,IC9B5F,SAASE,GAAY1a,GAClC,OAAOA,GAAWA,EAAQ2a,UAAY,IAAIrO,cAAgB,IAC5D,CCFe,SAASsO,GAAUC,GAChC,GAAY,MAARA,EACF,OAAO9X,OAGT,GAAwB,oBAApB8X,EAAK7O,WAAkC,CACzC,IAAI8O,EAAgBD,EAAKC,cACzB,OAAOA,GAAgBA,EAAcC,aAAwBhY,MACjE,CAEE,OAAO8X,CACT,CCTA,SAAS9Z,GAAU8Z,GAEjB,OAAOA,aADUD,GAAUC,GAAMpK,SACIoK,aAAgBpK,OACvD,CAEA,SAASuK,GAAcH,GAErB,OAAOA,aADUD,GAAUC,GAAMI,aACIJ,aAAgBI,WACvD,CAEA,SAASC,GAAaL,GAEpB,MAA0B,oBAAfnY,aAKJmY,aADUD,GAAUC,GAAMnY,YACImY,aAAgBnY,WACvD,CCwDA,MAAAyY,GAAe,CACb1X,KAAM,cACN2X,SAAS,EACTC,MAAO,QACPzX,GA5EF,SAAqB0X,GACnB,IAAIC,EAAQD,EAAKC,MACjBvU,OAAOqC,KAAKkS,EAAMC,UAAUC,SAAQ,SAAUhY,GAC5C,IAAI+U,EAAQ+C,EAAMG,OAAOjY,IAAS,GAC9BoJ,EAAa0O,EAAM1O,WAAWpJ,IAAS,GACvCzD,EAAUub,EAAMC,SAAS/X,GAExBuX,GAAchb,IAAa0a,GAAY1a,KAO5CgH,OAAO2U,OAAO3b,EAAQwY,MAAOA,GAC7BxR,OAAOqC,KAAKwD,GAAY4O,SAAQ,SAAUhY,GACxC,IAAImH,EAAQiC,EAAWpJ,IAET,IAAVmH,EACF5K,EAAQ2M,gBAAgBlJ,GAExBzD,EAAQyM,aAAahJ,GAAgB,IAAVmH,EAAiB,GAAKA,EAEzD,IACA,GACA,EAoDEgR,OAlDF,SAAgBC,GACd,IAAIN,EAAQM,EAAMN,MACdO,EAAgB,CAClBrC,OAAQ,CACNsC,SAAUR,EAAMS,QAAQC,SACxB/C,KAAM,IACNH,IAAK,IACLmD,OAAQ,KAEVC,MAAO,CACLJ,SAAU,YAEZrC,UAAW,IASb,OAPA1S,OAAO2U,OAAOJ,EAAMC,SAAS/B,OAAOjB,MAAOsD,EAAcrC,QACzD8B,EAAMG,OAASI,EAEXP,EAAMC,SAASW,OACjBnV,OAAO2U,OAAOJ,EAAMC,SAASW,MAAM3D,MAAOsD,EAAcK,OAGnD,WACLnV,OAAOqC,KAAKkS,EAAMC,UAAUC,SAAQ,SAAUhY,GAC5C,IAAIzD,EAAUub,EAAMC,SAAS/X,GACzBoJ,EAAa0O,EAAM1O,WAAWpJ,IAAS,GAGvC+U,EAFkBxR,OAAOqC,KAAKkS,EAAMG,OAAOU,eAAe3Y,GAAQ8X,EAAMG,OAAOjY,GAAQqY,EAAcrY,IAE7EmW,QAAO,SAAUpB,EAAOxK,GAElD,OADAwK,EAAMxK,GAAY,GACXwK,CACf,GAAS,IAEEwC,GAAchb,IAAa0a,GAAY1a,KAI5CgH,OAAO2U,OAAO3b,EAAQwY,MAAOA,GAC7BxR,OAAOqC,KAAKwD,GAAY4O,SAAQ,SAAUY,GACxCrc,EAAQ2M,gBAAgB0P,EAChC,IACA,GACA,CACA,EASEC,SAAU,CAAC,kBCjFE,SAASC,GAAiBzC,GACvC,OAAOA,EAAUxZ,MAAM,KAAK,EAC9B,CCHO,IAAIuF,GAAMD,KAAKC,IACXC,GAAMF,KAAKE,IACX0W,GAAQ5W,KAAK4W,MCFT,SAASC,KACtB,IAAIC,EAAS3J,UAAU4J,cAEvB,OAAc,MAAVD,GAAkBA,EAAOE,OACpBF,EAAOE,OAAOrL,KAAI,SAAUsL,GACjC,OAAOA,EAAKC,MAAQ,IAAMD,EAAKE,OACrC,IAAOvL,KAAK,KAGHuB,UAAUiK,SACnB,CCTe,SAASC,KACtB,OAAQ,iCAAiC3O,KAAKmO,KAChD,CCCe,SAAS/D,GAAsB1Y,EAASkd,EAAcC,QAC9C,IAAjBD,IACFA,GAAe,QAGO,IAApBC,IACFA,GAAkB,GAGpB,IAAIC,EAAapd,EAAQ0Y,wBACrB2E,EAAS,EACTC,EAAS,EAETJ,GAAgBlC,GAAchb,KAChCqd,EAASrd,EAAQud,YAAc,GAAIf,GAAMY,EAAWI,OAASxd,EAAQud,aAAmB,EACxFD,EAAStd,EAAQ6C,aAAe,GAAI2Z,GAAMY,EAAWK,QAAUzd,EAAQ6C,cAAoB,GAG7F,IACI6a,GADO3c,GAAUf,GAAW4a,GAAU5a,GAAW+C,QAC3B2a,eAEtBC,GAAoBV,MAAsBE,EAC1CS,GAAKR,EAAWlE,MAAQyE,GAAoBD,EAAiBA,EAAeG,WAAa,IAAMR,EAC/FS,GAAKV,EAAWrE,KAAO4E,GAAoBD,EAAiBA,EAAeK,UAAY,IAAMT,EAC7FE,EAAQJ,EAAWI,MAAQH,EAC3BI,EAASL,EAAWK,OAASH,EACjC,MAAO,CACLE,MAAOA,EACPC,OAAQA,EACR1E,IAAK+E,EACL7E,MAAO2E,EAAIJ,EACXxE,OAAQ8E,EAAIL,EACZvE,KAAM0E,EACNA,EAAGA,EACHE,EAAGA,EAEP,CCrCe,SAASE,GAAche,GACpC,IAAIod,EAAa1E,GAAsB1Y,GAGnCwd,EAAQxd,EAAQud,YAChBE,EAASzd,EAAQ6C,aAUrB,OARI+C,KAAK+M,IAAIyK,EAAWI,MAAQA,IAAU,IACxCA,EAAQJ,EAAWI,OAGjB5X,KAAK+M,IAAIyK,EAAWK,OAASA,IAAW,IAC1CA,EAASL,EAAWK,QAGf,CACLG,EAAG5d,EAAQ6d,WACXC,EAAG9d,EAAQ+d,UACXP,MAAOA,EACPC,OAAQA,EAEZ,CCvBe,SAASvb,GAASoV,EAAQ1G,GACvC,IAAIqN,EAAWrN,EAAMpO,aAAeoO,EAAMpO,cAE1C,GAAI8U,EAAOpV,SAAS0O,GAClB,OAAO,EAEJ,GAAIqN,GAAY/C,GAAa+C,GAAW,CACzC,IAAI9M,EAAOP,EAEX,EAAG,CACD,GAAIO,GAAQmG,EAAO4G,WAAW/M,GAC5B,OAAO,EAITA,EAAOA,EAAKtP,YAAcsP,EAAKgN,IACvC,OAAehN,EACf,CAGE,OAAO,CACT,CCrBe,SAAS3P,GAAiBxB,GACvC,OAAO4a,GAAU5a,GAASwB,iBAAiBxB,EAC7C,CCFe,SAASoe,GAAepe,GACrC,MAAO,CAAC,QAAS,KAAM,MAAM2F,QAAQ+U,GAAY1a,KAAa,CAChE,CCFe,SAASqe,GAAmBre,GAEzC,QAASe,GAAUf,GAAWA,EAAQ8a,cACtC9a,EAAQS,WAAasC,OAAOtC,UAAU6B,eACxC,CCFe,SAASgc,GAActe,GACpC,MAA6B,SAAzB0a,GAAY1a,GACPA,EAMPA,EAAQue,cACRve,EAAQ6B,aACRqZ,GAAalb,GAAWA,EAAQme,KAAO,OAEvCE,GAAmBre,EAGvB,CCVA,SAASwe,GAAoBxe,GAC3B,OAAKgb,GAAchb,IACoB,UAAvCwB,GAAiBxB,GAAS+b,SAInB/b,EAAQye,aAHN,IAIX,CAwCe,SAASC,GAAgB1e,GAItC,IAHA,IAAI+C,EAAS6X,GAAU5a,GACnBye,EAAeD,GAAoBxe,GAEhCye,GAAgBL,GAAeK,IAA6D,WAA5Cjd,GAAiBid,GAAc1C,UACpF0C,EAAeD,GAAoBC,GAGrC,OAAIA,IAA+C,SAA9B/D,GAAY+D,IAA0D,SAA9B/D,GAAY+D,IAAwE,WAA5Cjd,GAAiBid,GAAc1C,UAC3HhZ,EAGF0b,GAhDT,SAA4Bze,GAC1B,IAAI2e,EAAY,WAAWrQ,KAAKmO,MAGhC,GAFW,WAAWnO,KAAKmO,OAEfzB,GAAchb,IAII,UAFXwB,GAAiBxB,GAEnB+b,SACb,OAAO,KAIX,IAAI6C,EAAcN,GAActe,GAMhC,IAJIkb,GAAa0D,KACfA,EAAcA,EAAYT,MAGrBnD,GAAc4D,IAAgB,CAAC,OAAQ,QAAQjZ,QAAQ+U,GAAYkE,IAAgB,GAAG,CAC3F,IAAIC,EAAMrd,GAAiBod,GAI3B,GAAsB,SAAlBC,EAAIC,WAA4C,SAApBD,EAAIE,aAA0C,UAAhBF,EAAIG,UAAiF,IAA1D,CAAC,YAAa,eAAerZ,QAAQkZ,EAAII,aAAsBN,GAAgC,WAAnBE,EAAII,YAA2BN,GAAaE,EAAI7R,QAAyB,SAAf6R,EAAI7R,OACjO,OAAO4R,EAEPA,EAAcA,EAAY/c,UAEhC,CAEE,OAAO,IACT,CAgByBqd,CAAmBlf,IAAY+C,CACxD,CCpEe,SAASoc,GAAyBrF,GAC/C,MAAO,CAAC,MAAO,UAAUnU,QAAQmU,IAAc,EAAI,IAAM,GAC3D,CCDO,SAASsF,GAAOtZ,EAAK8E,EAAO/E,GACjC,OAAOwZ,GAAQvZ,EAAKwZ,GAAQ1U,EAAO/E,GACrC,CCFe,SAAS0Z,GAAmBC,GACzC,OAAOxY,OAAO2U,OAAO,GCDd,CACL5C,IAAK,EACLE,MAAO,EACPD,OAAQ,EACRE,KAAM,GDHuCsG,EACjD,CEHe,SAASC,GAAgB7U,EAAOvB,GAC7C,OAAOA,EAAKuQ,QAAO,SAAU8F,EAAS/U,GAEpC,OADA+U,EAAQ/U,GAAOC,EACR8U,CACX,GAAK,GACL,CCuFA,MAAAC,GAAe,CACblc,KAAM,QACN2X,SAAS,EACTC,MAAO,OACPzX,GA9EF,SAAe0X,GACb,IAAIsE,EAEArE,EAAQD,EAAKC,MACb9X,EAAO6X,EAAK7X,KACZuY,EAAUV,EAAKU,QACf6D,EAAetE,EAAMC,SAASW,MAC9B2D,EAAgBvE,EAAMwE,cAAcD,cACpCE,EAAgBzD,GAAiBhB,EAAMzB,WACvCmG,EAAOd,GAAyBa,GAEhCE,EADa,CAAChH,GAAMD,IAAOtT,QAAQqa,IAAkB,EAClC,SAAW,QAElC,GAAKH,GAAiBC,EAAtB,CAIA,IAAIN,EAxBgB,SAAyBW,EAAS5E,GAItD,OAAOgE,GAAsC,iBAH7CY,EAA6B,mBAAZA,EAAyBA,EAAQnZ,OAAO2U,OAAO,GAAIJ,EAAM6E,MAAO,CAC/EtG,UAAWyB,EAAMzB,aACbqG,GACkDA,EAAUV,GAAgBU,EAAS/G,IAC7F,CAmBsBiH,CAAgBrE,EAAQmE,QAAS5E,GACjD+E,EAAYtC,GAAc6B,GAC1BU,EAAmB,MAATN,EAAelH,GAAMG,GAC/BsH,EAAmB,MAATP,EAAejH,GAASC,GAClCwH,EAAUlF,EAAM6E,MAAM1G,UAAUwG,GAAO3E,EAAM6E,MAAM1G,UAAUuG,GAAQH,EAAcG,GAAQ1E,EAAM6E,MAAM3G,OAAOyG,GAC9GQ,EAAYZ,EAAcG,GAAQ1E,EAAM6E,MAAM1G,UAAUuG,GACxDU,EAAoBjC,GAAgBmB,GACpCe,EAAaD,EAA6B,MAATV,EAAeU,EAAkBE,cAAgB,EAAIF,EAAkBG,aAAe,EAAI,EAC3HC,EAAoBN,EAAU,EAAIC,EAAY,EAG9C5a,EAAM0Z,EAAce,GACpB1a,EAAM+a,EAAaN,EAAUJ,GAAOV,EAAcgB,GAClDQ,EAASJ,EAAa,EAAIN,EAAUJ,GAAO,EAAIa,EAC/CE,EAAS7B,GAAOtZ,EAAKkb,EAAQnb,GAE7Bqb,EAAWjB,EACf1E,EAAMwE,cAActc,KAASmc,EAAwB,IAA0BsB,GAAYD,EAAQrB,EAAsBuB,aAAeF,EAASD,EAAQpB,EAnB3J,CAoBA,EA4CEhE,OA1CF,SAAgBC,GACd,IAAIN,EAAQM,EAAMN,MAEd6F,EADUvF,EAAMG,QACWhc,QAC3B6f,OAAoC,IAArBuB,EAA8B,sBAAwBA,EAErD,MAAhBvB,IAKwB,iBAAjBA,IACTA,EAAetE,EAAMC,SAAS/B,OAAO/Y,cAAcmf,MAahD3d,GAASqZ,EAAMC,SAAS/B,OAAQoG,KAQrCtE,EAAMC,SAASW,MAAQ0D,EACzB,EASEvD,SAAU,CAAC,iBACX+E,iBAAkB,CAAC,oBCnGN,SAASC,GAAaxH,GACnC,OAAOA,EAAUxZ,MAAM,KAAK,EAC9B,CCOA,IAAIihB,GAAa,CACfxI,IAAK,OACLE,MAAO,OACPD,OAAQ,OACRE,KAAM,QAgBD,SAASsI,GAAY3F,GAC1B,IAAI4F,EAEAhI,EAASoC,EAAMpC,OACfiI,EAAa7F,EAAM6F,WACnB5H,EAAY+B,EAAM/B,UAClB6H,EAAY9F,EAAM8F,UAClBC,EAAU/F,EAAM+F,QAChB7F,EAAWF,EAAME,SACjB8F,EAAkBhG,EAAMgG,gBACxBC,EAAWjG,EAAMiG,SACjBC,EAAelG,EAAMkG,aACrBC,EAAUnG,EAAMmG,QAChBC,EAAaL,EAAQhE,EACrBA,OAAmB,IAAfqE,EAAwB,EAAIA,EAChCC,EAAaN,EAAQ9D,EACrBA,OAAmB,IAAfoE,EAAwB,EAAIA,EAEhCC,EAAgC,mBAAjBJ,EAA8BA,EAAa,CAC5DnE,EAAGA,EACHE,EAAGA,IACA,CACHF,EAAGA,EACHE,EAAGA,GAGLF,EAAIuE,EAAMvE,EACVE,EAAIqE,EAAMrE,EACV,IAAIsE,EAAOR,EAAQxF,eAAe,KAC9BiG,EAAOT,EAAQxF,eAAe,KAC9BkG,EAAQpJ,GACRqJ,EAAQxJ,GACRyJ,EAAMzf,OAEV,GAAI+e,EAAU,CACZ,IAAIrD,EAAeC,GAAgBjF,GAC/BgJ,EAAa,eACbC,EAAY,cAEZjE,IAAiB7D,GAAUnB,IAGmB,WAA5CjY,GAFJid,EAAeJ,GAAmB5E,IAECsC,UAAsC,aAAbA,IAC1D0G,EAAa,eACbC,EAAY,gBAOZ5I,IAAcf,KAAQe,IAAcZ,IAAQY,IAAcb,KAAU0I,IAAcrI,MACpFiJ,EAAQvJ,GAGR8E,IAFckE,GAAWvD,IAAiB+D,GAAOA,EAAI9E,eAAiB8E,EAAI9E,eAAeD,OACzFgB,EAAagE,IACEf,EAAWjE,OAC1BK,GAAK+D,EAAkB,GAAK,GAG1B/H,IAAcZ,KAASY,IAAcf,IAAOe,IAAcd,IAAW2I,IAAcrI,MACrFgJ,EAAQrJ,GAGR2E,IAFcoE,GAAWvD,IAAiB+D,GAAOA,EAAI9E,eAAiB8E,EAAI9E,eAAeF,MACzFiB,EAAaiE,IACEhB,EAAWlE,MAC1BI,GAAKiE,EAAkB,GAAK,EAElC,CAEE,IAgBMc,EAhBFC,EAAe5b,OAAO2U,OAAO,CAC/BI,SAAUA,GACT+F,GAAYP,IAEXsB,GAAyB,IAAjBd,EAnFd,SAA2BzG,GACzB,IAAIsC,EAAItC,EAAKsC,EACTE,EAAIxC,EAAKwC,EAETgF,EADM/f,OACIggB,kBAAoB,EAClC,MAAO,CACLnF,EAAGpB,GAAMoB,EAAIkF,GAAOA,GAAO,EAC3BhF,EAAGtB,GAAMsB,EAAIgF,GAAOA,GAAO,EAE/B,CA0EsCE,CAAkB,CACpDpF,EAAGA,EACHE,EAAGA,IACA,CACHF,EAAGA,EACHE,EAAGA,GAML,OAHAF,EAAIiF,EAAMjF,EACVE,EAAI+E,EAAM/E,EAEN+D,EAGK7a,OAAO2U,OAAO,GAAIiH,IAAeD,EAAiB,IAAmBJ,GAASF,EAAO,IAAM,GAAIM,EAAeL,GAASF,EAAO,IAAM,GAAIO,EAAe7D,WAAa0D,EAAIO,kBAAoB,IAAM,EAAI,aAAenF,EAAI,OAASE,EAAI,MAAQ,eAAiBF,EAAI,OAASE,EAAI,SAAU6E,IAG5R3b,OAAO2U,OAAO,GAAIiH,IAAenB,EAAkB,IAAoBc,GAASF,EAAOvE,EAAI,KAAO,GAAI2D,EAAgBa,GAASF,EAAOxE,EAAI,KAAO,GAAI6D,EAAgB3C,UAAY,GAAI2C,GAC9L,CAuDA,MAAAwB,GAAe,CACbxf,KAAM,gBACN2X,SAAS,EACTC,MAAO,cACPzX,GAzDF,SAAuBsf,GACrB,IAAI3H,EAAQ2H,EAAM3H,MACdS,EAAUkH,EAAMlH,QAChBmH,EAAwBnH,EAAQ6F,gBAChCA,OAA4C,IAA1BsB,GAA0CA,EAC5DC,EAAoBpH,EAAQ8F,SAC5BA,OAAiC,IAAtBsB,GAAsCA,EACjDC,EAAwBrH,EAAQ+F,aAChCA,OAAyC,IAA1BsB,GAA0CA,EAYzDT,EAAe,CACjB9I,UAAWyC,GAAiBhB,EAAMzB,WAClC6H,UAAWL,GAAa/F,EAAMzB,WAC9BL,OAAQ8B,EAAMC,SAAS/B,OACvBiI,WAAYnG,EAAM6E,MAAM3G,OACxBoI,gBAAiBA,EACjBG,QAAoC,UAA3BzG,EAAMS,QAAQC,UAGgB,MAArCV,EAAMwE,cAAcD,gBACtBvE,EAAMG,OAAOjC,OAASzS,OAAO2U,OAAO,GAAIJ,EAAMG,OAAOjC,OAAQ+H,GAAYxa,OAAO2U,OAAO,GAAIiH,EAAc,CACvGhB,QAASrG,EAAMwE,cAAcD,cAC7B/D,SAAUR,EAAMS,QAAQC,SACxB6F,SAAUA,EACVC,aAAcA,OAIe,MAA7BxG,EAAMwE,cAAc5D,QACtBZ,EAAMG,OAAOS,MAAQnV,OAAO2U,OAAO,GAAIJ,EAAMG,OAAOS,MAAOqF,GAAYxa,OAAO2U,OAAO,GAAIiH,EAAc,CACrGhB,QAASrG,EAAMwE,cAAc5D,MAC7BJ,SAAU,WACV+F,UAAU,EACVC,aAAcA,OAIlBxG,EAAM1O,WAAW4M,OAASzS,OAAO2U,OAAO,GAAIJ,EAAM1O,WAAW4M,OAAQ,CACnE,wBAAyB8B,EAAMzB,WAEnC,EAQE7J,KAAM,ICjLR,IAAIqT,GAAU,CACZA,SAAS,GAsCX,MAAAC,GAAe,CACb9f,KAAM,iBACN2X,SAAS,EACTC,MAAO,QACPzX,GAAI,WAAc,EAClBgY,OAxCF,SAAgBN,GACd,IAAIC,EAAQD,EAAKC,MACbjQ,EAAWgQ,EAAKhQ,SAChB0Q,EAAUV,EAAKU,QACfwH,EAAkBxH,EAAQyH,OAC1BA,OAA6B,IAApBD,GAAoCA,EAC7CE,EAAkB1H,EAAQ2H,OAC1BA,OAA6B,IAApBD,GAAoCA,EAC7C3gB,EAAS6X,GAAUW,EAAMC,SAAS/B,QAClCmK,EAAgB,GAAGpT,OAAO+K,EAAMqI,cAAclK,UAAW6B,EAAMqI,cAAcnK,QAYjF,OAVIgK,GACFG,EAAcnI,SAAQ,SAAUoI,GAC9BA,EAAa5f,iBAAiB,SAAUqH,EAASwY,OAAQR,GAC/D,IAGMK,GACF5gB,EAAOkB,iBAAiB,SAAUqH,EAASwY,OAAQR,IAG9C,WACDG,GACFG,EAAcnI,SAAQ,SAAUoI,GAC9BA,EAAa3e,oBAAoB,SAAUoG,EAASwY,OAAQR,GACpE,IAGQK,GACF5gB,EAAOmC,oBAAoB,SAAUoG,EAASwY,OAAQR,GAE5D,CACA,EASErT,KAAM,IC/CR,IAAI8T,GAAO,CACT7K,KAAM,QACND,MAAO,OACPD,OAAQ,MACRD,IAAK,UAEQ,SAASiL,GAAqBlK,GAC3C,OAAOA,EAAU1R,QAAQ,0BAA0B,SAAU6b,GAC3D,OAAOF,GAAKE,EAChB,GACA,CCVA,IAAIF,GAAO,CACT1K,MAAO,MACPC,IAAK,SAEQ,SAAS4K,GAA8BpK,GACpD,OAAOA,EAAU1R,QAAQ,cAAc,SAAU6b,GAC/C,OAAOF,GAAKE,EAChB,GACA,CCPe,SAASE,GAAgBtJ,GACtC,IAAI2H,EAAM5H,GAAUC,GAGpB,MAAO,CACLuJ,WAHe5B,EAAI6B,YAInBC,UAHc9B,EAAI+B,YAKtB,CCNe,SAASC,GAAoBxkB,GAQ1C,OAAO0Y,GAAsB2F,GAAmBre,IAAUkZ,KAAOiL,GAAgBnkB,GAASokB,UAC5F,CCXe,SAASK,GAAezkB,GAErC,IAAI0kB,EAAoBljB,GAAiBxB,GACrC2kB,EAAWD,EAAkBC,SAC7BC,EAAYF,EAAkBE,UAC9BC,EAAYH,EAAkBG,UAElC,MAAO,6BAA6BvW,KAAKqW,EAAWE,EAAYD,EAClE,CCLe,SAASE,GAAgBjK,GACtC,MAAI,CAAC,OAAQ,OAAQ,aAAalV,QAAQ+U,GAAYG,KAAU,EAEvDA,EAAKC,cAAc7X,KAGxB+X,GAAcH,IAAS4J,GAAe5J,GACjCA,EAGFiK,GAAgBxG,GAAczD,GACvC,CCJe,SAASkK,GAAkB/kB,EAASqF,GACjD,IAAI2f,OAES,IAAT3f,IACFA,EAAO,IAGT,IAAIwe,EAAeiB,GAAgB9kB,GAC/BilB,EAASpB,KAAqE,OAAlDmB,EAAwBhlB,EAAQ8a,oBAAyB,EAASkK,EAAsB/hB,MACpHuf,EAAM5H,GAAUiJ,GAChB5e,EAASggB,EAAS,CAACzC,GAAKhS,OAAOgS,EAAI9E,gBAAkB,GAAI+G,GAAeZ,GAAgBA,EAAe,IAAMA,EAC7GqB,EAAc7f,EAAKmL,OAAOvL,GAC9B,OAAOggB,EAASC,EAChBA,EAAY1U,OAAOuU,GAAkBzG,GAAcrZ,IACrD,CCzBe,SAASkgB,GAAiBC,GACvC,OAAOpe,OAAO2U,OAAO,GAAIyJ,EAAM,CAC7BlM,KAAMkM,EAAKxH,EACX7E,IAAKqM,EAAKtH,EACV7E,MAAOmM,EAAKxH,EAAIwH,EAAK5H,MACrBxE,OAAQoM,EAAKtH,EAAIsH,EAAK3H,QAE1B,CCqBA,SAAS4H,GAA2BrlB,EAASslB,EAAgBrJ,GAC3D,OAAOqJ,IAAmB9L,GAAW2L,GCzBxB,SAAyBnlB,EAASic,GAC/C,IAAIuG,EAAM5H,GAAU5a,GAChBulB,EAAOlH,GAAmBre,GAC1B0d,EAAiB8E,EAAI9E,eACrBF,EAAQ+H,EAAKzE,YACbrD,EAAS8H,EAAK1E,aACdjD,EAAI,EACJE,EAAI,EAER,GAAIJ,EAAgB,CAClBF,EAAQE,EAAeF,MACvBC,EAASC,EAAeD,OACxB,IAAI+H,EAAiBvI,MAEjBuI,IAAmBA,GAA+B,UAAbvJ,KACvC2B,EAAIF,EAAeG,WACnBC,EAAIJ,EAAeK,UAEzB,CAEE,MAAO,CACLP,MAAOA,EACPC,OAAQA,EACRG,EAAGA,EAAI4G,GAAoBxkB,GAC3B8d,EAAGA,EAEP,CDDwD2H,CAAgBzlB,EAASic,IAAalb,GAAUukB,GAdxG,SAAoCtlB,EAASic,GAC3C,IAAImJ,EAAO1M,GAAsB1Y,GAAS,EAAoB,UAAbic,GASjD,OARAmJ,EAAKrM,IAAMqM,EAAKrM,IAAM/Y,EAAQ0lB,UAC9BN,EAAKlM,KAAOkM,EAAKlM,KAAOlZ,EAAQ2lB,WAChCP,EAAKpM,OAASoM,EAAKrM,IAAM/Y,EAAQ6gB,aACjCuE,EAAKnM,MAAQmM,EAAKlM,KAAOlZ,EAAQ8gB,YACjCsE,EAAK5H,MAAQxd,EAAQ8gB,YACrBsE,EAAK3H,OAASzd,EAAQ6gB,aACtBuE,EAAKxH,EAAIwH,EAAKlM,KACdkM,EAAKtH,EAAIsH,EAAKrM,IACPqM,CACT,CAG0HQ,CAA2BN,EAAgBrJ,GAAYkJ,GEtBlK,SAAyBnlB,GACtC,IAAIglB,EAEAO,EAAOlH,GAAmBre,GAC1B6lB,EAAY1B,GAAgBnkB,GAC5BiD,EAA0D,OAAlD+hB,EAAwBhlB,EAAQ8a,oBAAyB,EAASkK,EAAsB/hB,KAChGua,EAAQ3X,GAAI0f,EAAKO,YAAaP,EAAKzE,YAAa7d,EAAOA,EAAK6iB,YAAc,EAAG7iB,EAAOA,EAAK6d,YAAc,GACvGrD,EAAS5X,GAAI0f,EAAKQ,aAAcR,EAAK1E,aAAc5d,EAAOA,EAAK8iB,aAAe,EAAG9iB,EAAOA,EAAK4d,aAAe,GAC5GjD,GAAKiI,EAAUzB,WAAaI,GAAoBxkB,GAChD8d,GAAK+H,EAAUvB,UAMnB,MAJiD,QAA7C9iB,GAAiByB,GAAQsiB,GAAM3S,YACjCgL,GAAK/X,GAAI0f,EAAKzE,YAAa7d,EAAOA,EAAK6d,YAAc,GAAKtD,GAGrD,CACLA,MAAOA,EACPC,OAAQA,EACRG,EAAGA,EACHE,EAAGA,EAEP,CFCkMkI,CAAgB3H,GAAmBre,IACrO,CG1Be,SAASimB,GAAe3K,GACrC,IAOIsG,EAPAlI,EAAY4B,EAAK5B,UACjB1Z,EAAUsb,EAAKtb,QACf8Z,EAAYwB,EAAKxB,UACjBkG,EAAgBlG,EAAYyC,GAAiBzC,GAAa,KAC1D6H,EAAY7H,EAAYwH,GAAaxH,GAAa,KAClDoM,EAAUxM,EAAUkE,EAAIlE,EAAU8D,MAAQ,EAAIxd,EAAQwd,MAAQ,EAC9D2I,EAAUzM,EAAUoE,EAAIpE,EAAU+D,OAAS,EAAIzd,EAAQyd,OAAS,EAGpE,OAAQuC,GACN,KAAKjH,GACH6I,EAAU,CACRhE,EAAGsI,EACHpI,EAAGpE,EAAUoE,EAAI9d,EAAQyd,QAE3B,MAEF,KAAKzE,GACH4I,EAAU,CACRhE,EAAGsI,EACHpI,EAAGpE,EAAUoE,EAAIpE,EAAU+D,QAE7B,MAEF,KAAKxE,GACH2I,EAAU,CACRhE,EAAGlE,EAAUkE,EAAIlE,EAAU8D,MAC3BM,EAAGqI,GAEL,MAEF,KAAKjN,GACH0I,EAAU,CACRhE,EAAGlE,EAAUkE,EAAI5d,EAAQwd,MACzBM,EAAGqI,GAEL,MAEF,QACEvE,EAAU,CACRhE,EAAGlE,EAAUkE,EACbE,EAAGpE,EAAUoE,GAInB,IAAIsI,EAAWpG,EAAgBb,GAAyBa,GAAiB,KAEzE,GAAgB,MAAZoG,EAAkB,CACpB,IAAIlG,EAAmB,MAAbkG,EAAmB,SAAW,QAExC,OAAQzE,GACN,KAAKtI,GACHuI,EAAQwE,GAAYxE,EAAQwE,IAAa1M,EAAUwG,GAAO,EAAIlgB,EAAQkgB,GAAO,GAC7E,MAEF,KAAK5G,GACHsI,EAAQwE,GAAYxE,EAAQwE,IAAa1M,EAAUwG,GAAO,EAAIlgB,EAAQkgB,GAAO,GAKrF,CAEE,OAAO0B,CACT,CC3De,SAASyE,GAAe9K,EAAOS,QAC5B,IAAZA,IACFA,EAAU,IAGZ,IAAIsK,EAAWtK,EACXuK,EAAqBD,EAASxM,UAC9BA,OAAmC,IAAvByM,EAAgChL,EAAMzB,UAAYyM,EAC9DC,EAAoBF,EAASrK,SAC7BA,OAAiC,IAAtBuK,EAA+BjL,EAAMU,SAAWuK,EAC3DC,EAAoBH,EAASI,SAC7BA,OAAiC,IAAtBD,EAA+BlN,GAAkBkN,EAC5DE,EAAwBL,EAASM,aACjCA,OAAyC,IAA1BD,EAAmCnN,GAAWmN,EAC7DE,EAAwBP,EAASQ,eACjCA,OAA2C,IAA1BD,EAAmCpN,GAASoN,EAC7DE,EAAuBT,EAASU,YAChCA,OAAuC,IAAzBD,GAA0CA,EACxDE,EAAmBX,EAASnG,QAC5BA,OAA+B,IAArB8G,EAA8B,EAAIA,EAC5CzH,EAAgBD,GAAsC,iBAAZY,EAAuBA,EAAUV,GAAgBU,EAAS/G,KACpG8N,EAAaJ,IAAmBrN,GAASC,GAAYD,GACrDiI,EAAanG,EAAM6E,MAAM3G,OACzBzZ,EAAUub,EAAMC,SAASwL,EAAcE,EAAaJ,GACpDK,EJkBS,SAAyBnnB,EAAS0mB,EAAUE,EAAc3K,GACvE,IAAImL,EAAmC,oBAAbV,EAlB5B,SAA4B1mB,GAC1B,IAAIuZ,EAAkBwL,GAAkBzG,GAActe,IAElDqnB,EADoB,CAAC,WAAY,SAAS1hB,QAAQnE,GAAiBxB,GAAS+b,WAAa,GACnDf,GAAchb,GAAW0e,GAAgB1e,GAAWA,EAE9F,OAAKe,GAAUsmB,GAKR9N,EAAgBvM,QAAO,SAAUsY,GACtC,OAAOvkB,GAAUukB,IAAmBpjB,GAASojB,EAAgB+B,IAAmD,SAAhC3M,GAAY4K,EAChG,IANW,EAOX,CAK6DgC,CAAmBtnB,GAAW,GAAGwQ,OAAOkW,GAC/FnN,EAAkB,GAAG/I,OAAO4W,EAAqB,CAACR,IAClDW,EAAsBhO,EAAgB,GACtCiO,EAAejO,EAAgBK,QAAO,SAAU6N,EAASnC,GAC3D,IAAIF,EAAOC,GAA2BrlB,EAASslB,EAAgBrJ,GAK/D,OAJAwL,EAAQ1O,IAAMlT,GAAIuf,EAAKrM,IAAK0O,EAAQ1O,KACpC0O,EAAQxO,MAAQnT,GAAIsf,EAAKnM,MAAOwO,EAAQxO,OACxCwO,EAAQzO,OAASlT,GAAIsf,EAAKpM,OAAQyO,EAAQzO,QAC1CyO,EAAQvO,KAAOrT,GAAIuf,EAAKlM,KAAMuO,EAAQvO,MAC/BuO,CACX,GAAKpC,GAA2BrlB,EAASunB,EAAqBtL,IAK5D,OAJAuL,EAAahK,MAAQgK,EAAavO,MAAQuO,EAAatO,KACvDsO,EAAa/J,OAAS+J,EAAaxO,OAASwO,EAAazO,IACzDyO,EAAa5J,EAAI4J,EAAatO,KAC9BsO,EAAa1J,EAAI0J,EAAazO,IACvByO,CACT,CInC2BE,CAAgB3mB,GAAUf,GAAWA,EAAUA,EAAQ2nB,gBAAkBtJ,GAAmB9C,EAAMC,SAAS/B,QAASiN,EAAUE,EAAc3K,GACjK2L,EAAsBlP,GAAsB6C,EAAMC,SAAS9B,WAC3DoG,EAAgBmG,GAAe,CACjCvM,UAAWkO,EACX5nB,QAAS0hB,EACTzF,SAAU,WACVnC,UAAWA,IAET+N,EAAmB1C,GAAiBne,OAAO2U,OAAO,GAAI+F,EAAY5B,IAClEgI,EAAoBhB,IAAmBrN,GAASoO,EAAmBD,EAGnEG,EAAkB,CACpBhP,IAAKoO,EAAmBpO,IAAM+O,EAAkB/O,IAAMyG,EAAczG,IACpEC,OAAQ8O,EAAkB9O,OAASmO,EAAmBnO,OAASwG,EAAcxG,OAC7EE,KAAMiO,EAAmBjO,KAAO4O,EAAkB5O,KAAOsG,EAActG,KACvED,MAAO6O,EAAkB7O,MAAQkO,EAAmBlO,MAAQuG,EAAcvG,OAExE+O,EAAazM,EAAMwE,cAAckB,OAErC,GAAI6F,IAAmBrN,IAAUuO,EAAY,CAC3C,IAAI/G,EAAS+G,EAAWlO,GACxB9S,OAAOqC,KAAK0e,GAAiBtM,SAAQ,SAAU9Q,GAC7C,IAAIsd,EAAW,CAAChP,GAAOD,IAAQrT,QAAQgF,IAAQ,EAAI,GAAK,EACpDsV,EAAO,CAAClH,GAAKC,IAAQrT,QAAQgF,IAAQ,EAAI,IAAM,IACnDod,EAAgBpd,IAAQsW,EAAOhB,GAAQgI,CAC7C,GACA,CAEE,OAAOF,CACT,CC5De,SAASG,GAAqB3M,EAAOS,QAClC,IAAZA,IACFA,EAAU,IAGZ,IAAIsK,EAAWtK,EACXlC,EAAYwM,EAASxM,UACrB4M,EAAWJ,EAASI,SACpBE,EAAeN,EAASM,aACxBzG,EAAUmG,EAASnG,QACnBgI,EAAiB7B,EAAS6B,eAC1BC,EAAwB9B,EAAS+B,sBACjCA,OAAkD,IAA1BD,EAAmCE,GAAgBF,EAC3EzG,EAAYL,GAAaxH,GACzBC,EAAa4H,EAAYwG,EAAiBxO,GAAsBA,GAAoB3M,QAAO,SAAU8M,GACvG,OAAOwH,GAAaxH,KAAe6H,CACvC,IAAOvI,GACDmP,EAAoBxO,EAAW/M,QAAO,SAAU8M,GAClD,OAAOuO,EAAsB1iB,QAAQmU,IAAc,CACvD,IAEmC,IAA7ByO,EAAkBnnB,SACpBmnB,EAAoBxO,GAQtB,IAAIyO,EAAYD,EAAkB3O,QAAO,SAAUC,EAAKC,GAOtD,OANAD,EAAIC,GAAauM,GAAe9K,EAAO,CACrCzB,UAAWA,EACX4M,SAAUA,EACVE,aAAcA,EACdzG,QAASA,IACR5D,GAAiBzC,IACbD,CACX,GAAK,IACH,OAAO7S,OAAOqC,KAAKmf,GAAWC,MAAK,SAAUC,EAAGC,GAC9C,OAAOH,EAAUE,GAAKF,EAAUG,EACpC,GACA,CC2FA,MAAAC,GAAe,CACbnlB,KAAM,OACN2X,SAAS,EACTC,MAAO,OACPzX,GA5HF,SAAc0X,GACZ,IAAIC,EAAQD,EAAKC,MACbS,EAAUV,EAAKU,QACfvY,EAAO6X,EAAK7X,KAEhB,IAAI8X,EAAMwE,cAActc,GAAMolB,MAA9B,CAoCA,IAhCA,IAAIC,EAAoB9M,EAAQoK,SAC5B2C,OAAsC,IAAtBD,GAAsCA,EACtDE,EAAmBhN,EAAQiN,QAC3BC,OAAoC,IAArBF,GAAqCA,EACpDG,EAA8BnN,EAAQoN,mBACtCjJ,EAAUnE,EAAQmE,QAClBuG,EAAW1K,EAAQ0K,SACnBE,EAAe5K,EAAQ4K,aACvBI,EAAchL,EAAQgL,YACtBqC,EAAwBrN,EAAQmM,eAChCA,OAA2C,IAA1BkB,GAA0CA,EAC3DhB,EAAwBrM,EAAQqM,sBAChCiB,EAAqB/N,EAAMS,QAAQlC,UACnCkG,EAAgBzD,GAAiB+M,GAEjCF,EAAqBD,IADHnJ,IAAkBsJ,GACqCnB,EAjC/E,SAAuCrO,GACrC,GAAIyC,GAAiBzC,KAAeX,GAClC,MAAO,GAGT,IAAIoQ,EAAoBvF,GAAqBlK,GAC7C,MAAO,CAACoK,GAA8BpK,GAAYyP,EAAmBrF,GAA8BqF,GACrG,CA0B6IC,CAA8BF,GAA3E,CAACtF,GAAqBsF,KAChHvP,EAAa,CAACuP,GAAoB9Y,OAAO4Y,GAAoBxP,QAAO,SAAUC,EAAKC,GACrF,OAAOD,EAAIrJ,OAAO+L,GAAiBzC,KAAeX,GAAO+O,GAAqB3M,EAAO,CACnFzB,UAAWA,EACX4M,SAAUA,EACVE,aAAcA,EACdzG,QAASA,EACTgI,eAAgBA,EAChBE,sBAAuBA,IACpBvO,EACT,GAAK,IACC2P,EAAgBlO,EAAM6E,MAAM1G,UAC5BgI,EAAanG,EAAM6E,MAAM3G,OACzBiQ,EAAY,IAAIve,IAChBwe,GAAqB,EACrBC,EAAwB7P,EAAW,GAE9B8P,EAAI,EAAGA,EAAI9P,EAAW3Y,OAAQyoB,IAAK,CAC1C,IAAI/P,EAAYC,EAAW8P,GAEvBC,EAAiBvN,GAAiBzC,GAElCiQ,EAAmBzI,GAAaxH,KAAeT,GAC/C2Q,EAAa,CAACjR,GAAKC,IAAQrT,QAAQmkB,IAAmB,EACtD5J,EAAM8J,EAAa,QAAU,SAC7BrF,EAAW0B,GAAe9K,EAAO,CACnCzB,UAAWA,EACX4M,SAAUA,EACVE,aAAcA,EACdI,YAAaA,EACb7G,QAASA,IAEP8J,EAAoBD,EAAaD,EAAmB9Q,GAAQC,GAAO6Q,EAAmB/Q,GAASD,GAE/F0Q,EAAcvJ,GAAOwB,EAAWxB,KAClC+J,EAAoBjG,GAAqBiG,IAG3C,IAAIC,EAAmBlG,GAAqBiG,GACxCE,EAAS,GAUb,GARIpB,GACFoB,EAAOjmB,KAAKygB,EAASmF,IAAmB,GAGtCZ,GACFiB,EAAOjmB,KAAKygB,EAASsF,IAAsB,EAAGtF,EAASuF,IAAqB,GAG1EC,EAAOC,OAAM,SAAUC,GACzB,OAAOA,CACb,IAAQ,CACFT,EAAwB9P,EACxB6P,GAAqB,EACrB,KACN,CAEID,EAAUre,IAAIyO,EAAWqQ,EAC7B,CAEE,GAAIR,EAqBF,IAnBA,IAEIW,EAAQ,SAAeC,GACzB,IAAIC,EAAmBzQ,EAAW7S,MAAK,SAAU4S,GAC/C,IAAIqQ,EAAST,EAAUze,IAAI6O,GAE3B,GAAIqQ,EACF,OAAOA,EAAOxgB,MAAM,EAAG4gB,GAAIH,OAAM,SAAUC,GACzC,OAAOA,CACnB,GAEA,IAEM,GAAIG,EAEF,OADAZ,EAAwBY,EACjB,OAEf,EAEaD,EAnBYpC,EAAiB,EAAI,EAmBZoC,EAAK,GAGpB,UAFFD,EAAMC,GADmBA,KAOpChP,EAAMzB,YAAc8P,IACtBrO,EAAMwE,cAActc,GAAMolB,OAAQ,EAClCtN,EAAMzB,UAAY8P,EAClBrO,EAAMkP,OAAQ,EA5GlB,CA8GA,EAQEpJ,iBAAkB,CAAC,UACnBpR,KAAM,CACJ4Y,OAAO,IC7IX,SAAS6B,GAAe/F,EAAUS,EAAMuF,GAQtC,YAPyB,IAArBA,IACFA,EAAmB,CACjB/M,EAAG,EACHE,EAAG,IAIA,CACL/E,IAAK4L,EAAS5L,IAAMqM,EAAK3H,OAASkN,EAAiB7M,EACnD7E,MAAO0L,EAAS1L,MAAQmM,EAAK5H,MAAQmN,EAAiB/M,EACtD5E,OAAQ2L,EAAS3L,OAASoM,EAAK3H,OAASkN,EAAiB7M,EACzD5E,KAAMyL,EAASzL,KAAOkM,EAAK5H,MAAQmN,EAAiB/M,EAExD,CAEA,SAASgN,GAAsBjG,GAC7B,MAAO,CAAC5L,GAAKE,GAAOD,GAAQE,IAAM2R,MAAK,SAAUC,GAC/C,OAAOnG,EAASmG,IAAS,CAC7B,GACA,CA+BA,MAAAC,GAAe,CACbtnB,KAAM,OACN2X,SAAS,EACTC,MAAO,OACPgG,iBAAkB,CAAC,mBACnBzd,GAlCF,SAAc0X,GACZ,IAAIC,EAAQD,EAAKC,MACb9X,EAAO6X,EAAK7X,KACZgmB,EAAgBlO,EAAM6E,MAAM1G,UAC5BgI,EAAanG,EAAM6E,MAAM3G,OACzBkR,EAAmBpP,EAAMwE,cAAciL,gBACvCC,EAAoB5E,GAAe9K,EAAO,CAC5CuL,eAAgB,cAEdoE,EAAoB7E,GAAe9K,EAAO,CAC5CyL,aAAa,IAEXmE,EAA2BT,GAAeO,EAAmBxB,GAC7D2B,EAAsBV,GAAeQ,EAAmBxJ,EAAYiJ,GACpEU,EAAoBT,GAAsBO,GAC1CG,EAAmBV,GAAsBQ,GAC7C7P,EAAMwE,cAActc,GAAQ,CAC1B0nB,yBAA0BA,EAC1BC,oBAAqBA,EACrBC,kBAAmBA,EACnBC,iBAAkBA,GAEpB/P,EAAM1O,WAAW4M,OAASzS,OAAO2U,OAAO,GAAIJ,EAAM1O,WAAW4M,OAAQ,CACnE,+BAAgC4R,EAChC,sBAAuBC,GAE3B,GCJAC,GAAe,CACb9nB,KAAM,SACN2X,SAAS,EACTC,MAAO,OACPiB,SAAU,CAAC,iBACX1Y,GA5BF,SAAgBiY,GACd,IAAIN,EAAQM,EAAMN,MACdS,EAAUH,EAAMG,QAChBvY,EAAOoY,EAAMpY,KACb+nB,EAAkBxP,EAAQiF,OAC1BA,OAA6B,IAApBuK,EAA6B,CAAC,EAAG,GAAKA,EAC/Cvb,EAAO8J,GAAWH,QAAO,SAAUC,EAAKC,GAE1C,OADAD,EAAIC,GA5BD,SAAiCA,EAAWsG,EAAOa,GACxD,IAAIjB,EAAgBzD,GAAiBzC,GACjC2R,EAAiB,CAACvS,GAAMH,IAAKpT,QAAQqa,IAAkB,GAAK,EAAI,EAEhE1E,EAAyB,mBAAX2F,EAAwBA,EAAOja,OAAO2U,OAAO,GAAIyE,EAAO,CACxEtG,UAAWA,KACPmH,EACFyK,EAAWpQ,EAAK,GAChBqQ,EAAWrQ,EAAK,GAIpB,OAFAoQ,EAAWA,GAAY,EACvBC,GAAYA,GAAY,GAAKF,EACtB,CAACvS,GAAMD,IAAOtT,QAAQqa,IAAkB,EAAI,CACjDpC,EAAG+N,EACH7N,EAAG4N,GACD,CACF9N,EAAG8N,EACH5N,EAAG6N,EAEP,CASqBC,CAAwB9R,EAAWyB,EAAM6E,MAAOa,GAC1DpH,CACX,GAAK,IACCgS,EAAwB5b,EAAKsL,EAAMzB,WACnC8D,EAAIiO,EAAsBjO,EAC1BE,EAAI+N,EAAsB/N,EAEW,MAArCvC,EAAMwE,cAAcD,gBACtBvE,EAAMwE,cAAcD,cAAclC,GAAKA,EACvCrC,EAAMwE,cAAcD,cAAchC,GAAKA,GAGzCvC,EAAMwE,cAActc,GAAQwM,CAC9B,GC1BA6b,GAAe,CACbroB,KAAM,gBACN2X,SAAS,EACTC,MAAO,OACPzX,GApBF,SAAuB0X,GACrB,IAAIC,EAAQD,EAAKC,MACb9X,EAAO6X,EAAK7X,KAKhB8X,EAAMwE,cAActc,GAAQwiB,GAAe,CACzCvM,UAAW6B,EAAM6E,MAAM1G,UACvB1Z,QAASub,EAAM6E,MAAM3G,OACrBwC,SAAU,WACVnC,UAAWyB,EAAMzB,WAErB,EAQE7J,KAAM,ICgHR8b,GAAe,CACbtoB,KAAM,kBACN2X,SAAS,EACTC,MAAO,OACPzX,GA/HF,SAAyB0X,GACvB,IAAIC,EAAQD,EAAKC,MACbS,EAAUV,EAAKU,QACfvY,EAAO6X,EAAK7X,KACZqlB,EAAoB9M,EAAQoK,SAC5B2C,OAAsC,IAAtBD,GAAsCA,EACtDE,EAAmBhN,EAAQiN,QAC3BC,OAAoC,IAArBF,GAAsCA,EACrDtC,EAAW1K,EAAQ0K,SACnBE,EAAe5K,EAAQ4K,aACvBI,EAAchL,EAAQgL,YACtB7G,EAAUnE,EAAQmE,QAClB6L,EAAkBhQ,EAAQiQ,OAC1BA,OAA6B,IAApBD,GAAoCA,EAC7CE,EAAwBlQ,EAAQmQ,aAChCA,OAAyC,IAA1BD,EAAmC,EAAIA,EACtDvH,EAAW0B,GAAe9K,EAAO,CACnCmL,SAAUA,EACVE,aAAcA,EACdzG,QAASA,EACT6G,YAAaA,IAEXhH,EAAgBzD,GAAiBhB,EAAMzB,WACvC6H,EAAYL,GAAa/F,EAAMzB,WAC/BsS,GAAmBzK,EACnByE,EAAWjH,GAAyBa,GACpCiJ,ECrCY,MDqCS7C,ECrCH,IAAM,IDsCxBtG,EAAgBvE,EAAMwE,cAAcD,cACpC2J,EAAgBlO,EAAM6E,MAAM1G,UAC5BgI,EAAanG,EAAM6E,MAAM3G,OACzB4S,EAA4C,mBAAjBF,EAA8BA,EAAanlB,OAAO2U,OAAO,GAAIJ,EAAM6E,MAAO,CACvGtG,UAAWyB,EAAMzB,aACbqS,EACFG,EAA2D,iBAAtBD,EAAiC,CACxEjG,SAAUiG,EACVpD,QAASoD,GACPrlB,OAAO2U,OAAO,CAChByK,SAAU,EACV6C,QAAS,GACRoD,GACCE,EAAsBhR,EAAMwE,cAAckB,OAAS1F,EAAMwE,cAAckB,OAAO1F,EAAMzB,WAAa,KACjG7J,EAAO,CACT2N,EAAG,EACHE,EAAG,GAGL,GAAKgC,EAAL,CAIA,GAAIiJ,EAAe,CACjB,IAAIyD,EAEAC,EAAwB,MAAbrG,EAAmBrN,GAAMG,GACpCwT,EAAuB,MAAbtG,EAAmBpN,GAASC,GACtCiH,EAAmB,MAAbkG,EAAmB,SAAW,QACpCnF,EAASnB,EAAcsG,GACvBtgB,EAAMmb,EAAS0D,EAAS8H,GACxB5mB,EAAMob,EAAS0D,EAAS+H,GACxBC,EAAWV,GAAUvK,EAAWxB,GAAO,EAAI,EAC3C0M,EAASjL,IAActI,GAAQoQ,EAAcvJ,GAAOwB,EAAWxB,GAC/D2M,EAASlL,IAActI,IAASqI,EAAWxB,IAAQuJ,EAAcvJ,GAGjEL,EAAetE,EAAMC,SAASW,MAC9BmE,EAAY2L,GAAUpM,EAAe7B,GAAc6B,GAAgB,CACrErC,MAAO,EACPC,OAAQ,GAENqP,EAAqBvR,EAAMwE,cAAc,oBAAsBxE,EAAMwE,cAAc,oBAAoBI,QxBhFtG,CACLpH,IAAK,EACLE,MAAO,EACPD,OAAQ,EACRE,KAAM,GwB6EF6T,EAAkBD,EAAmBL,GACrCO,EAAkBF,EAAmBJ,GAMrCO,EAAW7N,GAAO,EAAGqK,EAAcvJ,GAAMI,EAAUJ,IACnDgN,EAAYd,EAAkB3C,EAAcvJ,GAAO,EAAIyM,EAAWM,EAAWF,EAAkBT,EAA4BlG,SAAWwG,EAASK,EAAWF,EAAkBT,EAA4BlG,SACxM+G,EAAYf,GAAmB3C,EAAcvJ,GAAO,EAAIyM,EAAWM,EAAWD,EAAkBV,EAA4BlG,SAAWyG,EAASI,EAAWD,EAAkBV,EAA4BlG,SACzMzF,EAAoBpF,EAAMC,SAASW,OAASuC,GAAgBnD,EAAMC,SAASW,OAC3EiR,EAAezM,EAAiC,MAAbyF,EAAmBzF,EAAkB+E,WAAa,EAAI/E,EAAkBgF,YAAc,EAAI,EAC7H0H,EAAwH,OAAjGb,EAA+C,MAAvBD,OAA8B,EAASA,EAAoBnG,IAAqBoG,EAAwB,EAEvJc,EAAYrM,EAASkM,EAAYE,EACjCE,EAAkBnO,GAAO6M,EAAS3M,GAAQxZ,EAF9Bmb,EAASiM,EAAYG,EAAsBD,GAEKtnB,EAAKmb,EAAQgL,EAAS5M,GAAQxZ,EAAKynB,GAAaznB,GAChHia,EAAcsG,GAAYmH,EAC1Btd,EAAKmW,GAAYmH,EAAkBtM,CACvC,CAEE,GAAIiI,EAAc,CAChB,IAAIsE,EAEAC,EAAyB,MAAbrH,EAAmBrN,GAAMG,GAErCwU,GAAwB,MAAbtH,EAAmBpN,GAASC,GAEvC0U,GAAU7N,EAAcmJ,GAExB2E,GAAmB,MAAZ3E,EAAkB,SAAW,QAEpC4E,GAAOF,GAAUhJ,EAAS8I,GAE1BK,GAAOH,GAAUhJ,EAAS+I,IAE1BK,IAAuD,IAAxC,CAAChV,GAAKG,IAAMvT,QAAQqa,GAEnCgO,GAAyH,OAAjGR,EAAgD,MAAvBjB,OAA8B,EAASA,EAAoBtD,IAAoBuE,EAAyB,EAEzJS,GAAaF,GAAeF,GAAOF,GAAUlE,EAAcmE,IAAQlM,EAAWkM,IAAQI,GAAuB1B,EAA4BrD,QAEzIiF,GAAaH,GAAeJ,GAAUlE,EAAcmE,IAAQlM,EAAWkM,IAAQI,GAAuB1B,EAA4BrD,QAAU6E,GAE5IK,GAAmBlC,GAAU8B,G1BzH9B,SAAwBjoB,EAAK8E,EAAO/E,GACzC,IAAIuoB,EAAIhP,GAAOtZ,EAAK8E,EAAO/E,GAC3B,OAAOuoB,EAAIvoB,EAAMA,EAAMuoB,CACzB,C0BsHoDC,CAAeJ,GAAYN,GAASO,IAAc9O,GAAO6M,EAASgC,GAAaJ,GAAMF,GAAS1B,EAASiC,GAAaJ,IAEpKhO,EAAcmJ,GAAWkF,GACzBle,EAAKgZ,GAAWkF,GAAmBR,EACvC,CAEEpS,EAAMwE,cAActc,GAAQwM,CAvE9B,CAwEA,EAQEoR,iBAAkB,CAAC,WE1HN,SAASiN,GAAiBC,EAAyB9P,EAAcuD,QAC9D,IAAZA,IACFA,GAAU,GAGZ,ICnBoCnH,ECJO7a,EFuBvCwuB,EAA0BxT,GAAcyD,GACxCgQ,EAAuBzT,GAAcyD,IAf3C,SAAyBze,GACvB,IAAIolB,EAAOplB,EAAQ0Y,wBACf2E,EAASb,GAAM4I,EAAK5H,OAASxd,EAAQud,aAAe,EACpDD,EAASd,GAAM4I,EAAK3H,QAAUzd,EAAQ6C,cAAgB,EAC1D,OAAkB,IAAXwa,GAA2B,IAAXC,CACzB,CAU4DoR,CAAgBjQ,GACtEnc,EAAkB+b,GAAmBI,GACrC2G,EAAO1M,GAAsB6V,EAAyBE,EAAsBzM,GAC5EyB,EAAS,CACXW,WAAY,EACZE,UAAW,GAET1C,EAAU,CACZhE,EAAG,EACHE,EAAG,GAkBL,OAfI0Q,IAA4BA,IAA4BxM,MACxB,SAA9BtH,GAAY+D,IAChBgG,GAAeniB,MACbmhB,GCnCgC5I,EDmCT4D,KClCd7D,GAAUC,IAAUG,GAAcH,GCJxC,CACLuJ,YAFyCpkB,EDQb6a,GCNRuJ,WACpBE,UAAWtkB,EAAQskB,WDGZH,GAAgBtJ,IDoCnBG,GAAcyD,KAChBmD,EAAUlJ,GAAsB+F,GAAc,IACtCb,GAAKa,EAAakH,WAC1B/D,EAAQ9D,GAAKW,EAAaiH,WACjBpjB,IACTsf,EAAQhE,EAAI4G,GAAoBliB,KAI7B,CACLsb,EAAGwH,EAAKlM,KAAOuK,EAAOW,WAAaxC,EAAQhE,EAC3CE,EAAGsH,EAAKrM,IAAM0K,EAAOa,UAAY1C,EAAQ9D,EACzCN,MAAO4H,EAAK5H,MACZC,OAAQ2H,EAAK3H,OAEjB,CGvDA,SAASlI,GAAMoZ,GACb,IAAIpd,EAAM,IAAIpG,IACVyjB,EAAU,IAAIpoB,IACdqoB,EAAS,GAKb,SAASpG,EAAKqG,GACZF,EAAQ/b,IAAIic,EAASrrB,MACN,GAAG+M,OAAOse,EAASxS,UAAY,GAAIwS,EAASzN,kBAAoB,IACtE5F,SAAQ,SAAUsT,GACzB,IAAKH,EAAQlnB,IAAIqnB,GAAM,CACrB,IAAIC,EAAczd,EAAItG,IAAI8jB,GAEtBC,GACFvG,EAAKuG,EAEf,CACA,IACIH,EAAO3qB,KAAK4qB,EAChB,CAQE,OAzBAH,EAAUlT,SAAQ,SAAUqT,GAC1Bvd,EAAIlG,IAAIyjB,EAASrrB,KAAMqrB,EAC3B,IAiBEH,EAAUlT,SAAQ,SAAUqT,GACrBF,EAAQlnB,IAAIonB,EAASrrB,OAExBglB,EAAKqG,EAEX,IACSD,CACT,CChBA,IAAII,GAAkB,CACpBnV,UAAW,SACX6U,UAAW,GACX1S,SAAU,YAGZ,SAASiT,KACP,IAAK,IAAItB,EAAOuB,UAAU/tB,OAAQ0I,EAAO,IAAI6B,MAAMiiB,GAAOwB,EAAO,EAAGA,EAAOxB,EAAMwB,IAC/EtlB,EAAKslB,GAAQD,UAAUC,GAGzB,OAAQtlB,EAAK+gB,MAAK,SAAU7qB,GAC1B,QAASA,GAAoD,mBAAlCA,EAAQ0Y,sBACvC,GACA,CAEO,SAAS2W,GAAgBC,QACL,IAArBA,IACFA,EAAmB,IAGrB,IAAIC,EAAoBD,EACpBE,EAAwBD,EAAkBE,iBAC1CA,OAA6C,IAA1BD,EAAmC,GAAKA,EAC3DE,EAAyBH,EAAkBI,eAC3CA,OAA4C,IAA3BD,EAAoCT,GAAkBS,EAC3E,OAAO,SAAsBhW,EAAWD,EAAQuC,QAC9B,IAAZA,IACFA,EAAU2T,GAGZ,IC/C6B/rB,EAC3BgsB,ED8CErU,EAAQ,CACVzB,UAAW,SACX+V,iBAAkB,GAClB7T,QAAShV,OAAO2U,OAAO,GAAIsT,GAAiBU,GAC5C5P,cAAe,GACfvE,SAAU,CACR9B,UAAWA,EACXD,OAAQA,GAEV5M,WAAY,GACZ6O,OAAQ,IAENoU,EAAmB,GACnBC,GAAc,EACdzkB,EAAW,CACbiQ,MAAOA,EACPyU,WAAY,SAAoBC,GAC9B,IAAIjU,EAAsC,mBAArBiU,EAAkCA,EAAiB1U,EAAMS,SAAWiU,EACzFC,IACA3U,EAAMS,QAAUhV,OAAO2U,OAAO,GAAIgU,EAAgBpU,EAAMS,QAASA,GACjET,EAAMqI,cAAgB,CACpBlK,UAAW3Y,GAAU2Y,GAAaqL,GAAkBrL,GAAaA,EAAUiO,eAAiB5C,GAAkBrL,EAAUiO,gBAAkB,GAC1IlO,OAAQsL,GAAkBtL,IAI5B,IEzE4BkV,EAC9BwB,EFwEMN,EDvCG,SAAwBlB,GAErC,IAAIkB,EAAmBta,GAAMoZ,GAE7B,OAAOlU,GAAeb,QAAO,SAAUC,EAAKwB,GAC1C,OAAOxB,EAAIrJ,OAAOqf,EAAiB7iB,QAAO,SAAU8hB,GAClD,OAAOA,EAASzT,QAAUA,CAChC,IACA,GAAK,GACL,CC8B+B+U,EEzEKzB,EFyEsB,GAAGne,OAAOif,EAAkBlU,EAAMS,QAAQ2S,WExE9FwB,EAASxB,EAAU/U,QAAO,SAAUuW,EAAQE,GAC9C,IAAIC,EAAWH,EAAOE,EAAQ5sB,MAK9B,OAJA0sB,EAAOE,EAAQ5sB,MAAQ6sB,EAAWtpB,OAAO2U,OAAO,GAAI2U,EAAUD,EAAS,CACrErU,QAAShV,OAAO2U,OAAO,GAAI2U,EAAStU,QAASqU,EAAQrU,SACrD/L,KAAMjJ,OAAO2U,OAAO,GAAI2U,EAASrgB,KAAMogB,EAAQpgB,QAC5CogB,EACEF,CACX,GAAK,IAEInpB,OAAOqC,KAAK8mB,GAAQ5e,KAAI,SAAU5G,GACvC,OAAOwlB,EAAOxlB,EAClB,MFsGQ,OAvCA4Q,EAAMsU,iBAAmBA,EAAiB7iB,QAAO,SAAUujB,GACzD,OAAOA,EAAEnV,OACnB,IAoJMG,EAAMsU,iBAAiBpU,SAAQ,SAAU0G,GACvC,IAAI1e,EAAO0e,EAAM1e,KACb+sB,EAAgBrO,EAAMnG,QACtBA,OAA4B,IAAlBwU,EAA2B,GAAKA,EAC1C5U,EAASuG,EAAMvG,OAEnB,GAAsB,mBAAXA,EAAuB,CAChC,IAAI6U,EAAY7U,EAAO,CACrBL,MAAOA,EACP9X,KAAMA,EACN6H,SAAUA,EACV0Q,QAASA,IAKX8T,EAAiB5rB,KAAKusB,GAFT,WAAkB,EAGzC,CACA,IAjIenlB,EAASwY,QACxB,EAMM4M,YAAa,WACX,IAAIX,EAAJ,CAIA,IAAIY,EAAkBpV,EAAMC,SACxB9B,EAAYiX,EAAgBjX,UAC5BD,EAASkX,EAAgBlX,OAG7B,GAAKyV,GAAiBxV,EAAWD,GAAjC,CASA8B,EAAM6E,MAAQ,CACZ1G,UAAW4U,GAAiB5U,EAAWgF,GAAgBjF,GAAoC,UAA3B8B,EAAMS,QAAQC,UAC9ExC,OAAQuE,GAAcvE,IAOxB8B,EAAMkP,OAAQ,EACdlP,EAAMzB,UAAYyB,EAAMS,QAAQlC,UAKhCyB,EAAMsU,iBAAiBpU,SAAQ,SAAUqT,GACvC,OAAOvT,EAAMwE,cAAc+O,EAASrrB,MAAQuD,OAAO2U,OAAO,GAAImT,EAAS7e,KACjF,IAGQ,IAAK,IAAIvK,EAAQ,EAAGA,EAAQ6V,EAAMsU,iBAAiBzuB,OAAQsE,IAUzD,IAAoB,IAAhB6V,EAAMkP,MAAV,CAMA,IAAImG,EAAwBrV,EAAMsU,iBAAiBnqB,GAC/C9B,EAAKgtB,EAAsBhtB,GAC3BitB,EAAyBD,EAAsB5U,QAC/CsK,OAAsC,IAA3BuK,EAAoC,GAAKA,EACpDptB,EAAOmtB,EAAsBntB,KAEf,mBAAPG,IACT2X,EAAQ3X,EAAG,CACT2X,MAAOA,EACPS,QAASsK,EACT7iB,KAAMA,EACN6H,SAAUA,KACNiQ,EAdlB,MAHYA,EAAMkP,OAAQ,EACd/kB,GAAS,CAnCrB,CAbA,CAmEA,EAGMoe,QClM2BlgB,EDkMV,WACf,OAAO,IAAIktB,SAAQ,SAAUC,GAC3BzlB,EAASolB,cACTK,EAAQxV,EAClB,GACA,ECrMS,WAUL,OATKqU,IACHA,EAAU,IAAIkB,SAAQ,SAAUC,GAC9BD,QAAQC,UAAUC,MAAK,WACrBpB,OAAU1f,EACV6gB,EAAQntB,IAClB,GACA,KAGWgsB,CACX,GD2LMqB,QAAS,WACPf,IACAH,GAAc,CACtB,GAGI,IAAKb,GAAiBxV,EAAWD,GAK/B,OAAOnO,EAmCT,SAAS4kB,IACPJ,EAAiBrU,SAAQ,SAAU7X,GACjC,OAAOA,GACf,IACMksB,EAAmB,EACzB,CAEI,OAvCAxkB,EAAS0kB,WAAWhU,GAASgV,MAAK,SAAUzV,IACrCwU,GAAe/T,EAAQkV,eAC1BlV,EAAQkV,cAAc3V,EAE9B,IAmCWjQ,CACX,CACA,CACO,IAAI6lB,GAA4B9B,KG1PnC8B,GAA4B9B,GAAgB,CAC9CI,iBAFqB,CAAClM,GAAgBzD,GAAesR,GAAeC,MCMlEF,GAA4B9B,GAAgB,CAC9CI,iBAFqB,CAAClM,GAAgBzD,GAAesR,GAAeC,GAAapQ,GAAQqQ,GAAMtG,GAAiB7O,GAAOlE,M,+lBCiBnHvU,GAAO,WAOP6tB,GAAe,UACfC,GAAiB,YAOjBC,GAAwB,6BACxBC,GAA0B,+BAG1Bva,GAAkB,OAOlBhH,GAAuB,4DACvBwhB,GAA8B,GAAExhB,UAChCyhB,GAAgB,iBAKhBC,GAAgB1uB,IAAU,UAAY,YACtC2uB,GAAmB3uB,IAAU,YAAc,UAC3C4uB,GAAmB5uB,IAAU,aAAe,eAC5C6uB,GAAsB7uB,IAAU,eAAiB,aACjD8uB,GAAkB9uB,IAAU,aAAe,cAC3C+uB,GAAiB/uB,IAAU,cAAgB,aAI3CkK,GAAU,CACd8kB,WAAW,EACXzL,SAAU,kBACV0L,QAAS,UACTnR,OAAQ,CAAC,EAAG,GACZoR,aAAc,KACd3Y,UAAW,UAGPpM,GAAc,CAClB6kB,UAAW,mBACXzL,SAAU,mBACV0L,QAAS,SACTnR,OAAQ,0BACRoR,aAAc,yBACd3Y,UAAW,2BAOb,MAAM4Y,WAAiB7jB,EACrBX,YAAY9N,EAASyN,GACnBiB,MAAM1O,EAASyN,GAEfxF,KAAKsqB,QAAU,KACftqB,KAAKuqB,QAAUvqB,KAAK0G,SAAS9M,WAE7BoG,KAAKwqB,MAAQliB,EAAeY,KAAKlJ,KAAK0G,SAAUijB,IAAe,IAC7DrhB,EAAeS,KAAK/I,KAAK0G,SAAUijB,IAAe,IAClDrhB,EAAeG,QAAQkhB,GAAe3pB,KAAKuqB,SAC7CvqB,KAAKyqB,UAAYzqB,KAAK0qB,eACvB,CAGUtlB,qBACT,OAAOA,EACR,CAEUC,yBACT,OAAOA,EACR,CAEU5J,kBACT,OAAOA,EACR,CAGD2M,SACE,OAAOpI,KAAK+P,WAAa/P,KAAKgQ,OAAShQ,KAAKiQ,MAC7C,CAEDA,OACE,GAAIpW,EAAWmG,KAAK0G,WAAa1G,KAAK+P,WACpC,OAGF,MAAMlQ,EAAgB,CACpBA,cAAeG,KAAK0G,UAKtB,IAFkBlG,EAAaoB,QAAQ5B,KAAK0G,SA3F5B,mBA2FkD7G,GAEpDoC,iBAAd,CAUA,GANAjC,KAAK2qB,gBAMD,iBAAkBnyB,SAAS6B,kBAAoB2F,KAAKuqB,QAAQ7wB,QAtFxC,eAuFtB,IAAK,MAAM3B,IAAW,GAAGwQ,UAAU/P,SAASwC,KAAK0N,UAC/ClI,EAAaa,GAAGtJ,EAAS,YAAa2C,GAI1CsF,KAAK0G,SAASkkB,QACd5qB,KAAK0G,SAASlC,aAAa,iBAAiB,GAE5CxE,KAAKwqB,MAAMxwB,UAAU4Q,IAAIsE,IACzBlP,KAAK0G,SAAS1M,UAAU4Q,IAAIsE,IAC5B1O,EAAaoB,QAAQ5B,KAAK0G,SAjHT,oBAiHgC7G,EAnBhD,CAoBF,CAEDmQ,OACE,GAAInW,EAAWmG,KAAK0G,YAAc1G,KAAK+P,WACrC,OAGF,MAAMlQ,EAAgB,CACpBA,cAAeG,KAAK0G,UAGtB1G,KAAK6qB,cAAchrB,EACpB,CAEDgH,UACM7G,KAAKsqB,SACPtqB,KAAKsqB,QAAQtB,UAGfviB,MAAMI,SACP,CAEDgV,SACE7b,KAAKyqB,UAAYzqB,KAAK0qB,gBAClB1qB,KAAKsqB,SACPtqB,KAAKsqB,QAAQzO,QAEhB,CAGDgP,cAAchrB,GAEZ,IADkBW,EAAaoB,QAAQ5B,KAAK0G,SApJ5B,mBAoJkD7G,GACpDoC,iBAAd,CAMA,GAAI,iBAAkBzJ,SAAS6B,gBAC7B,IAAK,MAAMtC,IAAW,GAAGwQ,UAAU/P,SAASwC,KAAK0N,UAC/ClI,EAAaC,IAAI1I,EAAS,YAAa2C,GAIvCsF,KAAKsqB,SACPtqB,KAAKsqB,QAAQtB,UAGfhpB,KAAKwqB,MAAMxwB,UAAU4J,OAAOsL,IAC5BlP,KAAK0G,SAAS1M,UAAU4J,OAAOsL,IAC/BlP,KAAK0G,SAASlC,aAAa,gBAAiB,SAC5CF,EAAYG,oBAAoBzE,KAAKwqB,MAAO,UAC5ChqB,EAAaoB,QAAQ5B,KAAK0G,SAxKR,qBAwKgC7G,EAlBjD,CAmBF,CAED0F,WAAWC,GAGT,GAAgC,iBAFhCA,EAASiB,MAAMlB,WAAWC,IAERiM,YAA2B3Y,EAAU0M,EAAOiM,YACV,mBAA3CjM,EAAOiM,UAAUhB,sBAGxB,MAAM,IAAInK,UAAW,GAAE7K,GAAK8K,+GAG9B,OAAOf,CACR,CAEDmlB,gBACE,QAAsB,IAAXG,GACT,MAAM,IAAIxkB,UAAU,gEAGtB,IAAIykB,EAAmB/qB,KAAK0G,SAEG,WAA3B1G,KAAK2G,QAAQ8K,UACfsZ,EAAmB/qB,KAAKuqB,QACfzxB,EAAUkH,KAAK2G,QAAQ8K,WAChCsZ,EAAmB7xB,EAAW8G,KAAK2G,QAAQ8K,WACA,iBAA3BzR,KAAK2G,QAAQ8K,YAC7BsZ,EAAmB/qB,KAAK2G,QAAQ8K,WAGlC,MAAM2Y,EAAepqB,KAAKgrB,mBAC1BhrB,KAAKsqB,QAAUQ,GAAoBC,EAAkB/qB,KAAKwqB,MAAOJ,EAClE,CAEDra,WACE,OAAO/P,KAAKwqB,MAAMxwB,UAAUC,SAASiV,GACtC,CAED+b,gBACE,MAAMC,EAAiBlrB,KAAKuqB,QAE5B,GAAIW,EAAelxB,UAAUC,SAzMN,WA0MrB,OAAO+vB,GAGT,GAAIkB,EAAelxB,UAAUC,SA5MJ,aA6MvB,OAAOgwB,GAGT,GAAIiB,EAAelxB,UAAUC,SA/MA,iBAgN3B,MAhMsB,MAmMxB,GAAIixB,EAAelxB,UAAUC,SAlNE,mBAmN7B,MAnMyB,SAuM3B,MAAMkxB,EAAkF,QAA1E5xB,iBAAiByG,KAAKwqB,OAAOhxB,iBAAiB,iBAAiBlB,OAE7E,OAAI4yB,EAAelxB,UAAUC,SA7NP,UA8NbkxB,EAAQtB,GAAmBD,GAG7BuB,EAAQpB,GAAsBD,EACtC,CAEDY,gBACE,OAAkD,OAA3C1qB,KAAK0G,SAAShN,QA5ND,UA6NrB,CAED0xB,aACE,MAAMpS,OAAEA,GAAWhZ,KAAK2G,QAExB,MAAsB,iBAAXqS,EACFA,EAAO3gB,MAAM,KAAKiR,KAAI3G,GAASjG,OAAOwR,SAASvL,EAAO,MAGzC,mBAAXqW,EACFqS,GAAcrS,EAAOqS,EAAYrrB,KAAK0G,UAGxCsS,CACR,CAEDgS,mBACE,MAAMM,EAAwB,CAC5BzZ,UAAW7R,KAAKirB,gBAChBvE,UAAW,CAAC,CACVlrB,KAAM,kBACNuY,QAAS,CACP0K,SAAUze,KAAK2G,QAAQ8X,WAG3B,CACEjjB,KAAM,SACNuY,QAAS,CACPiF,OAAQhZ,KAAKorB,iBAcnB,OARIprB,KAAKyqB,WAAsC,WAAzBzqB,KAAK2G,QAAQwjB,WACjC7lB,EAAYC,iBAAiBvE,KAAKwqB,MAAO,SAAU,UACnDc,EAAsB5E,UAAY,CAAC,CACjClrB,KAAM,cACN2X,SAAS,KAIN,IACFmY,KACsC,mBAA9BtrB,KAAK2G,QAAQyjB,aAA8BpqB,KAAK2G,QAAQyjB,aAAakB,GAAyBtrB,KAAK2G,QAAQyjB,aAEzH,CAEDmB,iBAAgB7oB,IAAEA,EAAF1F,OAAOA,IACrB,MAAMiQ,EAAQ3E,EAAerJ,KA5QF,8DA4Q+Be,KAAKwqB,OAAOzlB,QAAOhN,GAAWqB,EAAUrB,KAE7FkV,EAAM9T,QAMXgE,EAAqB8P,EAAOjQ,EAAQ0F,IAAQ6mB,IAAiBtc,EAAM9U,SAAS6E,IAAS4tB,OACtF,CAGqBzjB,uBAAC3B,GACrB,OAAOxF,KAAK+H,MAAK,WACf,MAAMC,EAAOqiB,GAAS1iB,oBAAoB3H,KAAMwF,GAEhD,GAAsB,iBAAXA,EAAX,CAIA,QAA4B,IAAjBwC,EAAKxC,GACd,MAAM,IAAIc,UAAW,oBAAmBd,MAG1CwC,EAAKxC,IANJ,CAOF,GACF,CAEgB2B,kBAACjI,GAChB,GA/TuB,IA+TnBA,EAAMmJ,QAAiD,UAAfnJ,EAAMwB,MAlUtC,QAkU0DxB,EAAMwD,IAC1E,OAGF,MAAM8oB,EAAcljB,EAAerJ,KAAKyqB,IAExC,IAAK,MAAMthB,KAAUojB,EAAa,CAChC,MAAMC,EAAUpB,GAASjjB,YAAYgB,GACrC,IAAKqjB,IAAyC,IAA9BA,EAAQ9kB,QAAQujB,UAC9B,SAGF,MAAMwB,EAAexsB,EAAMwsB,eACrBC,EAAeD,EAAavzB,SAASszB,EAAQjB,OACnD,GACEkB,EAAavzB,SAASszB,EAAQ/kB,WACC,WAA9B+kB,EAAQ9kB,QAAQujB,YAA2ByB,GACb,YAA9BF,EAAQ9kB,QAAQujB,WAA2ByB,EAE5C,SAIF,GAAIF,EAAQjB,MAAMvwB,SAASiF,EAAMlC,UAA4B,UAAfkC,EAAMwB,MAzV1C,QAyV8DxB,EAAMwD,KAAoB,qCAAqC2D,KAAKnH,EAAMlC,OAAO0K,UACvJ,SAGF,MAAM7H,EAAgB,CAAEA,cAAe4rB,EAAQ/kB,UAE5B,UAAfxH,EAAMwB,OACRb,EAAc4H,WAAavI,GAG7BusB,EAAQZ,cAAchrB,EACvB,CACF,CAE2BsH,6BAACjI,GAI3B,MAAM0sB,EAAU,kBAAkBvlB,KAAKnH,EAAMlC,OAAO0K,SAC9CmkB,EA7WS,WA6WO3sB,EAAMwD,IACtBopB,EAAkB,CAACxC,GAAcC,IAAgBpxB,SAAS+G,EAAMwD,KAEtE,IAAKopB,IAAoBD,EACvB,OAGF,GAAID,IAAYC,EACd,OAGF3sB,EAAMqD,iBAGN,MAAMwpB,EAAkB/rB,KAAK4I,QAAQV,IACnClI,KACCsI,EAAeS,KAAK/I,KAAMkI,IAAsB,IAC/CI,EAAeY,KAAKlJ,KAAMkI,IAAsB,IAChDI,EAAeG,QAAQP,GAAsBhJ,EAAMY,eAAelG,YAEhEyJ,EAAWgnB,GAAS1iB,oBAAoBokB,GAE9C,GAAID,EAIF,OAHA5sB,EAAM8sB,kBACN3oB,EAAS4M,YACT5M,EAASkoB,gBAAgBrsB,GAIvBmE,EAAS0M,aACX7Q,EAAM8sB,kBACN3oB,EAAS2M,OACT+b,EAAgBnB,QAEnB,EAOHpqB,EAAaa,GAAG7I,SAAUixB,GAAwBvhB,GAAsBmiB,GAAS4B,uBACjFzrB,EAAaa,GAAG7I,SAAUixB,GAAwBE,GAAeU,GAAS4B,uBAC1EzrB,EAAaa,GAAG7I,SAAUgxB,GAAsBa,GAAS6B,YACzD1rB,EAAaa,GAAG7I,SA7Yc,6BA6YkB6xB,GAAS6B,YACzD1rB,EAAaa,GAAG7I,SAAUgxB,GAAsBthB,IAAsB,SAAUhJ,GAC9EA,EAAMqD,iBACN8nB,GAAS1iB,oBAAoB3H,MAAMoI,QACpC,IAMDhN,EAAmBivB,ICpbnB,MAAM8B,GAAyB,oDACzBC,GAA0B,cAC1BC,GAAmB,gBACnBC,GAAkB,eAMxB,MAAMC,GACJ1mB,cACE7F,KAAK0G,SAAWlO,SAASwC,IAC1B,CAGDwxB,WAEE,MAAMC,EAAgBj0B,SAAS6B,gBAAgBwe,YAC/C,OAAOlb,KAAK+M,IAAI5P,OAAO4xB,WAAaD,EACrC,CAEDzc,OACE,MAAMuF,EAAQvV,KAAKwsB,WACnBxsB,KAAK2sB,mBAEL3sB,KAAK4sB,sBAAsB5sB,KAAK0G,SAAU2lB,IAAkBQ,GAAmBA,EAAkBtX,IAEjGvV,KAAK4sB,sBAAsBT,GAAwBE,IAAkBQ,GAAmBA,EAAkBtX,IAC1GvV,KAAK4sB,sBAAsBR,GAAyBE,IAAiBO,GAAmBA,EAAkBtX,GAC3G,CAEDiN,QACExiB,KAAK8sB,wBAAwB9sB,KAAK0G,SAAU,YAC5C1G,KAAK8sB,wBAAwB9sB,KAAK0G,SAAU2lB,IAC5CrsB,KAAK8sB,wBAAwBX,GAAwBE,IACrDrsB,KAAK8sB,wBAAwBV,GAAyBE,GACvD,CAEDS,gBACE,OAAO/sB,KAAKwsB,WAAa,CAC1B,CAGDG,mBACE3sB,KAAKgtB,sBAAsBhtB,KAAK0G,SAAU,YAC1C1G,KAAK0G,SAAS6J,MAAMmM,SAAW,QAChC,CAEDkQ,sBAAsB50B,EAAUi1B,EAAe3xB,GAC7C,MAAM4xB,EAAiBltB,KAAKwsB,WAW5BxsB,KAAKmtB,2BAA2Bn1B,GAVHD,IAC3B,GAAIA,IAAYiI,KAAK0G,UAAY5L,OAAO4xB,WAAa30B,EAAQ8gB,YAAcqU,EACzE,OAGFltB,KAAKgtB,sBAAsBj1B,EAASk1B,GACpC,MAAMJ,EAAkB/xB,OAAOvB,iBAAiBxB,GAASyB,iBAAiByzB,GAC1El1B,EAAQwY,MAAM6c,YAAYH,EAAgB,GAAE3xB,EAASoB,OAAOC,WAAWkwB,QAAvE,GAIH,CAEDG,sBAAsBj1B,EAASk1B,GAC7B,MAAMI,EAAct1B,EAAQwY,MAAM/W,iBAAiByzB,GAC/CI,GACF/oB,EAAYC,iBAAiBxM,EAASk1B,EAAeI,EAExD,CAEDP,wBAAwB90B,EAAUi1B,GAahCjtB,KAAKmtB,2BAA2Bn1B,GAZHD,IAC3B,MAAM4K,EAAQ2B,EAAYY,iBAAiBnN,EAASk1B,GAEtC,OAAVtqB,GAKJ2B,EAAYG,oBAAoB1M,EAASk1B,GACzCl1B,EAAQwY,MAAM6c,YAAYH,EAAetqB,IALvC5K,EAAQwY,MAAM+c,eAAeL,EAK/B,GAIH,CAEDE,2BAA2Bn1B,EAAUu1B,GACnC,GAAIz0B,EAAUd,GACZu1B,EAASv1B,QAIX,IAAK,MAAMw1B,KAAOllB,EAAerJ,KAAKjH,EAAUgI,KAAK0G,UACnD6mB,EAASC,EAEZ,EC/FH,MAEMte,GAAkB,OAClBue,GAAmB,wBAEnBroB,GAAU,CACdsoB,UAAW,iBACXC,cAAe,KACfzmB,YAAY,EACZ9N,WAAW,EACXw0B,YAAa,QAGTvoB,GAAc,CAClBqoB,UAAW,SACXC,cAAe,kBACfzmB,WAAY,UACZ9N,UAAW,UACXw0B,YAAa,oBAOf,MAAMC,WAAiB1oB,EACrBU,YAAYL,GACViB,QACAzG,KAAK2G,QAAU3G,KAAKuF,WAAWC,GAC/BxF,KAAK8tB,aAAc,EACnB9tB,KAAK0G,SAAW,IACjB,CAGUtB,qBACT,OAAOA,EACR,CAEUC,yBACT,OAAOA,EACR,CAEU5J,kBACT,MA3CS,UA4CV,CAGDwU,KAAK3U,GACH,IAAK0E,KAAK2G,QAAQvN,UAEhB,YADA8C,EAAQZ,GAIV0E,KAAK+tB,UAEL,MAAMh2B,EAAUiI,KAAKguB,cACjBhuB,KAAK2G,QAAQO,YACfvM,EAAO5C,GAGTA,EAAQiC,UAAU4Q,IAAIsE,IAEtBlP,KAAKiuB,mBAAkB,KACrB/xB,EAAQZ,EAAR,GAEH,CAED0U,KAAK1U,GACE0E,KAAK2G,QAAQvN,WAKlB4G,KAAKguB,cAAch0B,UAAU4J,OAAOsL,IAEpClP,KAAKiuB,mBAAkB,KACrBjuB,KAAK6G,UACL3K,EAAQZ,EAAR,KARAY,EAAQZ,EAUX,CAEDuL,UACO7G,KAAK8tB,cAIVttB,EAAaC,IAAIT,KAAK0G,SAAU+mB,IAEhCztB,KAAK0G,SAAS9C,SACd5D,KAAK8tB,aAAc,EACpB,CAGDE,cACE,IAAKhuB,KAAK0G,SAAU,CAClB,MAAMwnB,EAAW11B,SAAS21B,cAAc,OACxCD,EAASR,UAAY1tB,KAAK2G,QAAQ+mB,UAC9B1tB,KAAK2G,QAAQO,YACfgnB,EAASl0B,UAAU4Q,IAjGH,QAoGlB5K,KAAK0G,SAAWwnB,CACjB,CAED,OAAOluB,KAAK0G,QACb,CAEDhB,kBAAkBF,GAGhB,OADAA,EAAOooB,YAAc10B,EAAWsM,EAAOooB,aAChCpoB,CACR,CAEDuoB,UACE,GAAI/tB,KAAK8tB,YACP,OAGF,MAAM/1B,EAAUiI,KAAKguB,cACrBhuB,KAAK2G,QAAQinB,YAAYQ,OAAOr2B,GAEhCyI,EAAaa,GAAGtJ,EAAS01B,IAAiB,KACxCvxB,EAAQ8D,KAAK2G,QAAQgnB,cAArB,IAGF3tB,KAAK8tB,aAAc,CACpB,CAEDG,kBAAkB3yB,GAChBa,EAAuBb,EAAU0E,KAAKguB,cAAehuB,KAAK2G,QAAQO,WACnE,EClIH,MAEMJ,GAAa,gBAMbunB,GAAmB,WAEnBjpB,GAAU,CACdkpB,WAAW,EACXC,YAAa,MAGTlpB,GAAc,CAClBipB,UAAW,UACXC,YAAa,WAOf,MAAMC,WAAkBrpB,EACtBU,YAAYL,GACViB,QACAzG,KAAK2G,QAAU3G,KAAKuF,WAAWC,GAC/BxF,KAAKyuB,WAAY,EACjBzuB,KAAK0uB,qBAAuB,IAC7B,CAGUtpB,qBACT,OAAOA,EACR,CAEUC,yBACT,OAAOA,EACR,CAEU5J,kBACT,MA1CS,WA2CV,CAGDkzB,WACM3uB,KAAKyuB,YAILzuB,KAAK2G,QAAQ2nB,WACftuB,KAAK2G,QAAQ4nB,YAAY3D,QAG3BpqB,EAAaC,IAAIjI,SAAUsO,IAC3BtG,EAAaa,GAAG7I,SArDG,wBAqDsB0G,GAASc,KAAK4uB,eAAe1vB,KACtEsB,EAAaa,GAAG7I,SArDO,4BAqDsB0G,GAASc,KAAK6uB,eAAe3vB,KAE1Ec,KAAKyuB,WAAY,EAClB,CAEDK,aACO9uB,KAAKyuB,YAIVzuB,KAAKyuB,WAAY,EACjBjuB,EAAaC,IAAIjI,SAAUsO,IAC5B,CAGD8nB,eAAe1vB,GACb,MAAMqvB,YAAEA,GAAgBvuB,KAAK2G,QAE7B,GAAIzH,EAAMlC,SAAWxE,UAAY0G,EAAMlC,SAAWuxB,GAAeA,EAAYt0B,SAASiF,EAAMlC,QAC1F,OAGF,MAAMuW,EAAWjL,EAAec,kBAAkBmlB,GAE1B,IAApBhb,EAASpa,OACXo1B,EAAY3D,QACH5qB,KAAK0uB,uBAAyBL,GACvC9a,EAASA,EAASpa,OAAS,GAAGyxB,QAE9BrX,EAAS,GAAGqX,OAEf,CAEDiE,eAAe3vB,GApFD,QAqFRA,EAAMwD,MAIV1C,KAAK0uB,qBAAuBxvB,EAAM6vB,SAAWV,GAxFzB,UAyFrB,EC3FH,MAQMW,GAAgB,kBAChBC,GAAc,gBAQdC,GAAkB,aAElBhgB,GAAkB,OAClBigB,GAAoB,eAOpB/pB,GAAU,CACd8oB,UAAU,EACVtD,OAAO,EACPjf,UAAU,GAGNtG,GAAc,CAClB6oB,SAAU,mBACVtD,MAAO,UACPjf,SAAU,WAOZ,MAAMyjB,WAAc5oB,EAClBX,YAAY9N,EAASyN,GACnBiB,MAAM1O,EAASyN,GAEfxF,KAAKqvB,QAAU/mB,EAAeG,QAxBV,gBAwBmCzI,KAAK0G,UAC5D1G,KAAKsvB,UAAYtvB,KAAKuvB,sBACtBvvB,KAAKwvB,WAAaxvB,KAAKyvB,uBACvBzvB,KAAK+P,UAAW,EAChB/P,KAAKuP,kBAAmB,EACxBvP,KAAK0vB,WAAa,IAAInD,GAEtBvsB,KAAKuM,oBACN,CAGUnH,qBACT,OAAOA,EACR,CAEUC,yBACT,OAAOA,EACR,CAEU5J,kBACT,MAnES,OAoEV,CAGD2M,OAAOvI,GACL,OAAOG,KAAK+P,SAAW/P,KAAKgQ,OAAShQ,KAAKiQ,KAAKpQ,EAChD,CAEDoQ,KAAKpQ,GACCG,KAAK+P,UAAY/P,KAAKuP,kBAIR/O,EAAaoB,QAAQ5B,KAAK0G,SAAUuoB,GAAY,CAChEpvB,kBAGYoC,mBAIdjC,KAAK+P,UAAW,EAChB/P,KAAKuP,kBAAmB,EAExBvP,KAAK0vB,WAAW1f,OAEhBxX,SAASwC,KAAKhB,UAAU4Q,IAAIskB,IAE5BlvB,KAAK2vB,gBAEL3vB,KAAKsvB,UAAUrf,MAAK,IAAMjQ,KAAK4vB,aAAa/vB,KAC7C,CAEDmQ,OACOhQ,KAAK+P,WAAY/P,KAAKuP,mBAIT/O,EAAaoB,QAAQ5B,KAAK0G,SAnG5B,iBAqGFzE,mBAIdjC,KAAK+P,UAAW,EAChB/P,KAAKuP,kBAAmB,EACxBvP,KAAKwvB,WAAWV,aAEhB9uB,KAAK0G,SAAS1M,UAAU4J,OAAOsL,IAE/BlP,KAAKiH,gBAAe,IAAMjH,KAAK6vB,cAAc7vB,KAAK0G,SAAU1G,KAAK4O,gBAClE,CAED/H,UACE,IAAK,MAAMipB,IAAe,CAACh1B,OAAQkF,KAAKqvB,SACtC7uB,EAAaC,IAAIqvB,EAxHJ,aA2Hf9vB,KAAKsvB,UAAUzoB,UACf7G,KAAKwvB,WAAWV,aAChBroB,MAAMI,SACP,CAEDkpB,eACE/vB,KAAK2vB,eACN,CAGDJ,sBACE,OAAO,IAAI1B,GAAS,CAClBz0B,UAAW2H,QAAQf,KAAK2G,QAAQunB,UAChChnB,WAAYlH,KAAK4O,eAEpB,CAED6gB,uBACE,OAAO,IAAIjB,GAAU,CACnBD,YAAavuB,KAAK0G,UAErB,CAEDkpB,aAAa/vB,GAENrH,SAASwC,KAAKf,SAAS+F,KAAK0G,WAC/BlO,SAASwC,KAAKozB,OAAOpuB,KAAK0G,UAG5B1G,KAAK0G,SAAS6J,MAAM4Z,QAAU,QAC9BnqB,KAAK0G,SAAShC,gBAAgB,eAC9B1E,KAAK0G,SAASlC,aAAa,cAAc,GACzCxE,KAAK0G,SAASlC,aAAa,OAAQ,UACnCxE,KAAK0G,SAAS2V,UAAY,EAE1B,MAAM2T,EAAY1nB,EAAeG,QAxIT,cAwIsCzI,KAAKqvB,SAC/DW,IACFA,EAAU3T,UAAY,GAGxB1hB,EAAOqF,KAAK0G,UAEZ1G,KAAK0G,SAAS1M,UAAU4Q,IAAIsE,IAa5BlP,KAAKiH,gBAXsB,KACrBjH,KAAK2G,QAAQikB,OACf5qB,KAAKwvB,WAAWb,WAGlB3uB,KAAKuP,kBAAmB,EACxB/O,EAAaoB,QAAQ5B,KAAK0G,SArKX,iBAqKkC,CAC/C7G,iBADF,GAKsCG,KAAKqvB,QAASrvB,KAAK4O,cAC5D,CAEDrC,qBACE/L,EAAaa,GAAGrB,KAAK0G,SA1KM,4BA0K2BxH,IACpD,GArLa,WAqLTA,EAAMwD,IAIV,OAAI1C,KAAK2G,QAAQgF,UACfzM,EAAMqD,sBACNvC,KAAKgQ,aAIPhQ,KAAKiwB,4BAAL,IAGFzvB,EAAaa,GAAGvG,OA3LE,mBA2LoB,KAChCkF,KAAK+P,WAAa/P,KAAKuP,kBACzBvP,KAAK2vB,eACN,IAGHnvB,EAAaa,GAAGrB,KAAK0G,SA/LQ,8BA+L2BxH,IAEtDsB,EAAac,IAAItB,KAAK0G,SAlMC,0BAkM8BwpB,IAC/ClwB,KAAK0G,WAAaxH,EAAMlC,QAAUgD,KAAK0G,WAAawpB,EAAOlzB,SAIjC,WAA1BgD,KAAK2G,QAAQunB,SAKbluB,KAAK2G,QAAQunB,UACfluB,KAAKgQ,OALLhQ,KAAKiwB,6BAMN,GAZH,GAeH,CAEDJ,aACE7vB,KAAK0G,SAAS6J,MAAM4Z,QAAU,OAC9BnqB,KAAK0G,SAASlC,aAAa,eAAe,GAC1CxE,KAAK0G,SAAShC,gBAAgB,cAC9B1E,KAAK0G,SAAShC,gBAAgB,QAC9B1E,KAAKuP,kBAAmB,EAExBvP,KAAKsvB,UAAUtf,MAAK,KAClBxX,SAASwC,KAAKhB,UAAU4J,OAAOsrB,IAC/BlvB,KAAKmwB,oBACLnwB,KAAK0vB,WAAWlN,QAChBhiB,EAAaoB,QAAQ5B,KAAK0G,SAAUsoB,GAApC,GAEH,CAEDpgB,cACE,OAAO5O,KAAK0G,SAAS1M,UAAUC,SA7NX,OA8NrB,CAEDg2B,6BAEE,GADkBzvB,EAAaoB,QAAQ5B,KAAK0G,SA5OlB,0BA6OZzE,iBACZ,OAGF,MAAMmuB,EAAqBpwB,KAAK0G,SAASoX,aAAetlB,SAAS6B,gBAAgBue,aAC3EyX,EAAmBrwB,KAAK0G,SAAS6J,MAAMqM,UAEpB,WAArByT,GAAiCrwB,KAAK0G,SAAS1M,UAAUC,SAASk1B,MAIjEiB,IACHpwB,KAAK0G,SAAS6J,MAAMqM,UAAY,UAGlC5c,KAAK0G,SAAS1M,UAAU4Q,IAAIukB,IAC5BnvB,KAAKiH,gBAAe,KAClBjH,KAAK0G,SAAS1M,UAAU4J,OAAOurB,IAC/BnvB,KAAKiH,gBAAe,KAClBjH,KAAK0G,SAAS6J,MAAMqM,UAAYyT,CAAhC,GACCrwB,KAAKqvB,QAFR,GAGCrvB,KAAKqvB,SAERrvB,KAAK0G,SAASkkB,QACf,CAMD+E,gBACE,MAAMS,EAAqBpwB,KAAK0G,SAASoX,aAAetlB,SAAS6B,gBAAgBue,aAC3EsU,EAAiBltB,KAAK0vB,WAAWlD,WACjC8D,EAAoBpD,EAAiB,EAE3C,GAAIoD,IAAsBF,EAAoB,CAC5C,MAAMrqB,EAAW7K,IAAU,cAAgB,eAC3C8E,KAAK0G,SAAS6J,MAAMxK,GAAa,GAAEmnB,KACpC,CAED,IAAKoD,GAAqBF,EAAoB,CAC5C,MAAMrqB,EAAW7K,IAAU,eAAiB,cAC5C8E,KAAK0G,SAAS6J,MAAMxK,GAAa,GAAEmnB,KACpC,CACF,CAEDiD,oBACEnwB,KAAK0G,SAAS6J,MAAMggB,YAAc,GAClCvwB,KAAK0G,SAAS6J,MAAMigB,aAAe,EACpC,CAGqBrpB,uBAAC3B,EAAQ3F,GAC7B,OAAOG,KAAK+H,MAAK,WACf,MAAMC,EAAOonB,GAAMznB,oBAAoB3H,KAAMwF,GAE7C,GAAsB,iBAAXA,EAAX,CAIA,QAA4B,IAAjBwC,EAAKxC,GACd,MAAM,IAAIc,UAAW,oBAAmBd,MAG1CwC,EAAKxC,GAAQ3F,EANZ,CAOF,GACF,EAOHW,EAAaa,GAAG7I,SA9Sc,0BAUD,4BAoSyC,SAAU0G,GAC9E,MAAMlC,EAAStE,EAAuBsH,MAElC,CAAC,IAAK,QAAQ7H,SAAS6H,KAAK0H,UAC9BxI,EAAMqD,iBAGR/B,EAAac,IAAItE,EAAQiyB,IAAYwB,IAC/BA,EAAUxuB,kBAKdzB,EAAac,IAAItE,EAAQgyB,IAAc,KACjC51B,EAAU4G,OACZA,KAAK4qB,OACN,GAHH,IAQF,MAAM8F,EAAcpoB,EAAeG,QA5Tf,eA6ThBioB,GACFtB,GAAMhoB,YAAYspB,GAAa1gB,OAGpBof,GAAMznB,oBAAoB3K,GAElCoL,OAAOpI,KACb,IAEDsH,EAAqB8nB,IAMrBh0B,EAAmBg0B,IC7VnB,MAOMlgB,GAAkB,OAClByhB,GAAqB,UACrBC,GAAoB,SAEpBC,GAAgB,kBAKhBC,GAAwB,6BACxB9B,GAAgB,sBAOhB5pB,GAAU,CACd8oB,UAAU,EACVviB,UAAU,EACV6P,QAAQ,GAGJnW,GAAc,CAClB6oB,SAAU,mBACVviB,SAAU,UACV6P,OAAQ,WAOV,MAAMuV,WAAkBvqB,EACtBX,YAAY9N,EAASyN,GACnBiB,MAAM1O,EAASyN,GAEfxF,KAAK+P,UAAW,EAChB/P,KAAKsvB,UAAYtvB,KAAKuvB,sBACtBvvB,KAAKwvB,WAAaxvB,KAAKyvB,uBACvBzvB,KAAKuM,oBACN,CAGUnH,qBACT,OAAOA,EACR,CAEUC,yBACT,OAAOA,EACR,CAEU5J,kBACT,MA5DS,WA6DV,CAGD2M,OAAOvI,GACL,OAAOG,KAAK+P,SAAW/P,KAAKgQ,OAAShQ,KAAKiQ,KAAKpQ,EAChD,CAEDoQ,KAAKpQ,GACCG,KAAK+P,UAISvP,EAAaoB,QAAQ5B,KAAK0G,SA5D5B,oBA4DkD,CAAE7G,kBAEtDoC,mBAIdjC,KAAK+P,UAAW,EAChB/P,KAAKsvB,UAAUrf,OAEVjQ,KAAK2G,QAAQ6U,SAChB,IAAI+Q,IAAkBvc,OAGxBhQ,KAAK0G,SAASlC,aAAa,cAAc,GACzCxE,KAAK0G,SAASlC,aAAa,OAAQ,UACnCxE,KAAK0G,SAAS1M,UAAU4Q,IAAI+lB,IAY5B3wB,KAAKiH,gBAVoB,KAClBjH,KAAK2G,QAAQ6U,SAAUxb,KAAK2G,QAAQunB,UACvCluB,KAAKwvB,WAAWb,WAGlB3uB,KAAK0G,SAAS1M,UAAU4Q,IAAIsE,IAC5BlP,KAAK0G,SAAS1M,UAAU4J,OAAO+sB,IAC/BnwB,EAAaoB,QAAQ5B,KAAK0G,SAnFX,qBAmFkC,CAAE7G,iBAAnD,GAGoCG,KAAK0G,UAAU,GACtD,CAEDsJ,OACOhQ,KAAK+P,WAIQvP,EAAaoB,QAAQ5B,KAAK0G,SA7F5B,qBA+FFzE,mBAIdjC,KAAKwvB,WAAWV,aAChB9uB,KAAK0G,SAASsqB,OACdhxB,KAAK+P,UAAW,EAChB/P,KAAK0G,SAAS1M,UAAU4Q,IAAIgmB,IAC5B5wB,KAAKsvB,UAAUtf,OAcfhQ,KAAKiH,gBAZoB,KACvBjH,KAAK0G,SAAS1M,UAAU4J,OAAOsL,GAAiB0hB,IAChD5wB,KAAK0G,SAAShC,gBAAgB,cAC9B1E,KAAK0G,SAAShC,gBAAgB,QAEzB1E,KAAK2G,QAAQ6U,SAChB,IAAI+Q,IAAkB/J,QAGxBhiB,EAAaoB,QAAQ5B,KAAK0G,SAAUsoB,GAApC,GAGoChvB,KAAK0G,UAAU,IACtD,CAEDG,UACE7G,KAAKsvB,UAAUzoB,UACf7G,KAAKwvB,WAAWV,aAChBroB,MAAMI,SACP,CAGD0oB,sBACE,MAUMn2B,EAAY2H,QAAQf,KAAK2G,QAAQunB,UAEvC,OAAO,IAAIL,GAAS,CAClBH,UAlJsB,qBAmJtBt0B,YACA8N,YAAY,EACZ0mB,YAAa5tB,KAAK0G,SAAS9M,WAC3B+zB,cAAev0B,EAjBK,KACU,WAA1B4G,KAAK2G,QAAQunB,SAKjBluB,KAAKgQ,OAJHxP,EAAaoB,QAAQ5B,KAAK0G,SAAUoqB,GAItC,EAW2C,MAE9C,CAEDrB,uBACE,OAAO,IAAIjB,GAAU,CACnBD,YAAavuB,KAAK0G,UAErB,CAED6F,qBACE/L,EAAaa,GAAGrB,KAAK0G,SAvJM,gCAuJ2BxH,IAtKvC,WAuKTA,EAAMwD,MAIL1C,KAAK2G,QAAQgF,SAKlB3L,KAAKgQ,OAJHxP,EAAaoB,QAAQ5B,KAAK0G,SAAUoqB,IAItC,GAEH,CAGqB3pB,uBAAC3B,GACrB,OAAOxF,KAAK+H,MAAK,WACf,MAAMC,EAAO+oB,GAAUppB,oBAAoB3H,KAAMwF,GAEjD,GAAsB,iBAAXA,EAAX,CAIA,QAAqByC,IAAjBD,EAAKxC,IAAyBA,EAAOpN,WAAW,MAAmB,gBAAXoN,EAC1D,MAAM,IAAIc,UAAW,oBAAmBd,MAG1CwC,EAAKxC,GAAQxF,KANZ,CAOF,GACF,EAOHQ,EAAaa,GAAG7I,SA5Lc,8BAGD,gCAyLyC,SAAU0G,GAC9E,MAAMlC,EAAStE,EAAuBsH,MAMtC,GAJI,CAAC,IAAK,QAAQ7H,SAAS6H,KAAK0H,UAC9BxI,EAAMqD,iBAGJ1I,EAAWmG,MACb,OAGFQ,EAAac,IAAItE,EAAQgyB,IAAc,KAEjC51B,EAAU4G,OACZA,KAAK4qB,OACN,IAIH,MAAM8F,EAAcpoB,EAAeG,QAAQooB,IACvCH,GAAeA,IAAgB1zB,GACjC+zB,GAAU3pB,YAAYspB,GAAa1gB,OAGxB+gB,GAAUppB,oBAAoB3K,GACtCoL,OAAOpI,KACb,IAEDQ,EAAaa,GAAGvG,OAvOa,8BAuOgB,KAC3C,IAAK,MAAM9C,KAAYsQ,EAAerJ,KAAK4xB,IACzCE,GAAUppB,oBAAoB3P,GAAUiY,MACzC,IAGHzP,EAAaa,GAAGvG,OA/NM,uBA+NgB,KACpC,IAAK,MAAM/C,KAAWuQ,EAAerJ,KAAK,gDACG,UAAvC1F,iBAAiBxB,GAAS+b,UAC5Bid,GAAUppB,oBAAoB5P,GAASiY,MAE1C,IAGH1I,EAAqBypB,IAMrB31B,EAAmB21B,ICjRnB,MAAME,GAAgB,IAAI1yB,IAAI,CAC5B,aACA,OACA,OACA,WACA,WACA,SACA,MACA,eAUI2yB,GAAmB,iEAOnBC,GAAmB,qIAEnBC,GAAmB,CAAChd,EAAWid,KACnC,MAAMC,EAAgBld,EAAU1B,SAASrO,cAEzC,OAAIgtB,EAAqBl5B,SAASm5B,IAC5BL,GAAcxxB,IAAI6xB,IACbvwB,QAAQmwB,GAAiB7qB,KAAK+N,EAAUmd,YAAcJ,GAAiB9qB,KAAK+N,EAAUmd,YAO1FF,EAAqBtsB,QAAOysB,GAAkBA,aAA0BprB,SAC5Ewc,MAAK6O,GAASA,EAAMprB,KAAKirB,IAD5B,EAIWI,GAAmB,CAE9B,IAAK,CAAC,QAAS,MAAO,KAAM,OAAQ,OAlCP,kBAmC7BjR,EAAG,CAAC,SAAU,OAAQ,QAAS,OAC/BkR,KAAM,GACNjR,EAAG,GACHkR,GAAI,GACJC,IAAK,GACLC,KAAM,GACNC,IAAK,GACLC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJ3Q,EAAG,GACHlU,IAAK,CAAC,MAAO,SAAU,MAAO,QAAS,QAAS,UAChD8kB,GAAI,GACJC,GAAI,GACJC,EAAG,GACHC,IAAK,GACLC,EAAG,GACHC,MAAO,GACPC,KAAM,GACNC,IAAK,GACLC,IAAK,GACLC,OAAQ,GACRC,EAAG,GACHC,GAAI,IC/DA/tB,GAAU,CACdguB,UAAW1B,GACX2B,QAAS,GACTC,WAAY,GACZhW,MAAM,EACNiW,UAAU,EACVC,WAAY,KACZC,SAAU,eAGNpuB,GAAc,CAClB+tB,UAAW,SACXC,QAAS,SACTC,WAAY,oBACZhW,KAAM,UACNiW,SAAU,UACVC,WAAY,kBACZC,SAAU,UAGNC,GAAqB,CACzBC,MAAO,iCACP37B,SAAU,oBAOZ,MAAM47B,WAAwBzuB,EAC5BU,YAAYL,GACViB,QACAzG,KAAK2G,QAAU3G,KAAKuF,WAAWC,EAChC,CAGUJ,qBACT,OAAOA,EACR,CAEUC,yBACT,OAAOA,EACR,CAEU5J,kBACT,MA/CS,iBAgDV,CAGDo4B,aACE,OAAO90B,OAAOC,OAAOgB,KAAK2G,QAAQ0sB,SAC/B/pB,KAAI9D,GAAUxF,KAAK8zB,yBAAyBtuB,KAC5CT,OAAOhE,QACX,CAEDgzB,aACE,OAAO/zB,KAAK6zB,aAAa16B,OAAS,CACnC,CAED66B,cAAcX,GAGZ,OAFArzB,KAAKi0B,cAAcZ,GACnBrzB,KAAK2G,QAAQ0sB,QAAU,IAAKrzB,KAAK2G,QAAQ0sB,WAAYA,GAC9CrzB,IACR,CAEDk0B,SACE,MAAMC,EAAkB37B,SAAS21B,cAAc,OAC/CgG,EAAgBC,UAAYp0B,KAAKq0B,eAAer0B,KAAK2G,QAAQ8sB,UAE7D,IAAK,MAAOz7B,EAAUs8B,KAASv1B,OAAO6D,QAAQ5C,KAAK2G,QAAQ0sB,SACzDrzB,KAAKu0B,YAAYJ,EAAiBG,EAAMt8B,GAG1C,MAAMy7B,EAAWU,EAAgBzrB,SAAS,GACpC4qB,EAAatzB,KAAK8zB,yBAAyB9zB,KAAK2G,QAAQ2sB,YAM9D,OAJIA,GACFG,EAASz5B,UAAU4Q,OAAO0oB,EAAWj7B,MAAM,MAGtCo7B,CACR,CAGD9tB,iBAAiBH,GACfiB,MAAMd,iBAAiBH,GACvBxF,KAAKi0B,cAAczuB,EAAO6tB,QAC3B,CAEDY,cAAcO,GACZ,IAAK,MAAOx8B,EAAUq7B,KAAYt0B,OAAO6D,QAAQ4xB,GAC/C/tB,MAAMd,iBAAiB,CAAE3N,WAAU27B,MAAON,GAAWK,GAExD,CAEDa,YAAYd,EAAUJ,EAASr7B,GAC7B,MAAMy8B,EAAkBnsB,EAAeG,QAAQzQ,EAAUy7B,GAEpDgB,KAILpB,EAAUrzB,KAAK8zB,yBAAyBT,IAOpCv6B,EAAUu6B,GACZrzB,KAAK00B,sBAAsBx7B,EAAWm6B,GAAUoB,GAI9Cz0B,KAAK2G,QAAQ2W,KACfmX,EAAgBL,UAAYp0B,KAAKq0B,eAAehB,GAIlDoB,EAAgBE,YAActB,EAd5BoB,EAAgB7wB,SAenB,CAEDywB,eAAeG,GACb,OAAOx0B,KAAK2G,QAAQ4sB,SDzDjB,SAAsBqB,EAAYxB,EAAWyB,GAClD,IAAKD,EAAWz7B,OACd,OAAOy7B,EAGT,GAAIC,GAAgD,mBAArBA,EAC7B,OAAOA,EAAiBD,GAG1B,MACME,GADY,IAAIh6B,OAAOi6B,WACKC,gBAAgBJ,EAAY,aACxDrhB,EAAW,GAAGhL,UAAUusB,EAAgB95B,KAAKqF,iBAAiB,MAEpE,IAAK,MAAMtI,KAAWwb,EAAU,CAC9B,MAAM0hB,EAAcl9B,EAAQ2a,SAASrO,cAErC,IAAKtF,OAAOqC,KAAKgyB,GAAWj7B,SAAS88B,GAAc,CACjDl9B,EAAQ6L,SAER,QACD,CAED,MAAMsxB,EAAgB,GAAG3sB,UAAUxQ,EAAQ6M,YACrCuwB,EAAoB,GAAG5sB,OAAO6qB,EAAU,MAAQ,GAAIA,EAAU6B,IAAgB,IAEpF,IAAK,MAAM7gB,KAAa8gB,EACjB9D,GAAiBhd,EAAW+gB,IAC/Bp9B,EAAQ2M,gBAAgB0P,EAAU1B,SAGvC,CAED,OAAOoiB,EAAgB95B,KAAKo5B,SAC7B,CCwBkCgB,CAAaZ,EAAKx0B,KAAK2G,QAAQysB,UAAWpzB,KAAK2G,QAAQ6sB,YAAcgB,CACrG,CAEDV,yBAAyBU,GACvB,MAAsB,mBAARA,EAAqBA,EAAIx0B,MAAQw0B,CAChD,CAEDE,sBAAsB38B,EAAS08B,GAC7B,GAAIz0B,KAAK2G,QAAQ2W,KAGf,OAFAmX,EAAgBL,UAAY,QAC5BK,EAAgBrG,OAAOr2B,GAIzB08B,EAAgBE,YAAc58B,EAAQ48B,WACvC,ECzIH,MACMU,GAAwB,IAAI92B,IAAI,CAAC,WAAY,YAAa,eAE1D+2B,GAAkB,OAElBpmB,GAAkB,OAGlBqmB,GAAkB,SAElBC,GAAmB,gBAEnBC,GAAgB,QAChBC,GAAgB,QAehBC,GAAgB,CACpBC,KAAM,OACNC,IAAK,MACLC,MAAO56B,IAAU,OAAS,QAC1B66B,OAAQ,SACRC,KAAM96B,IAAU,QAAU,QAGtBkK,GAAU,CACdguB,UAAW1B,GACXuE,WAAW,EACXxX,SAAU,kBACVyX,WAAW,EACXC,YAAa,GACbC,MAAO,EACPjV,mBAAoB,CAAC,MAAO,QAAS,SAAU,QAC/C7D,MAAM,EACNtE,OAAQ,CAAC,EAAG,GACZnH,UAAW,MACXuY,aAAc,KACdmJ,UAAU,EACVC,WAAY,KACZx7B,UAAU,EACVy7B,SAAU,+GAIV4C,MAAO,GACPz0B,QAAS,eAGLyD,GAAc,CAClB+tB,UAAW,SACX6C,UAAW,UACXxX,SAAU,mBACVyX,UAAW,2BACXC,YAAa,oBACbC,MAAO,kBACPjV,mBAAoB,QACpB7D,KAAM,UACNtE,OAAQ,0BACRnH,UAAW,oBACXuY,aAAc,yBACdmJ,SAAU,UACVC,WAAY,kBACZx7B,SAAU,mBACVy7B,SAAU,SACV4C,MAAO,4BACPz0B,QAAS,UAOX,MAAM00B,WAAgB9vB,EACpBX,YAAY9N,EAASyN,GACnB,QAAsB,IAAXslB,GACT,MAAM,IAAIxkB,UAAU,+DAGtBG,MAAM1O,EAASyN,GAGfxF,KAAKu2B,YAAa,EAClBv2B,KAAKw2B,SAAW,EAChBx2B,KAAKy2B,WAAa,KAClBz2B,KAAK02B,eAAiB,GACtB12B,KAAKsqB,QAAU,KACftqB,KAAK22B,iBAAmB,KACxB32B,KAAK42B,YAAc,KAGnB52B,KAAK62B,IAAM,KAEX72B,KAAK82B,gBAEA92B,KAAK2G,QAAQ3O,UAChBgI,KAAK+2B,WAER,CAGU3xB,qBACT,OAAOA,EACR,CAEUC,yBACT,OAAOA,EACR,CAEU5J,kBACT,MAxHS,SAyHV,CAGDu7B,SACEh3B,KAAKu2B,YAAa,CACnB,CAEDU,UACEj3B,KAAKu2B,YAAa,CACnB,CAEDW,gBACEl3B,KAAKu2B,YAAcv2B,KAAKu2B,UACzB,CAEDnuB,SACOpI,KAAKu2B,aAIVv2B,KAAK02B,eAAeS,OAASn3B,KAAK02B,eAAeS,MAC7Cn3B,KAAK+P,WACP/P,KAAKo3B,SAIPp3B,KAAKq3B,SACN,CAEDxwB,UACEgH,aAAa7N,KAAKw2B,UAElBh2B,EAAaC,IAAIT,KAAK0G,SAAShN,QAAQ67B,IAAiBC,GAAkBx1B,KAAKs3B,mBAE3Et3B,KAAK62B,KACP72B,KAAK62B,IAAIjzB,SAGP5D,KAAK0G,SAASzO,aAAa,2BAC7B+H,KAAK0G,SAASlC,aAAa,QAASxE,KAAK0G,SAASzO,aAAa,2BAGjE+H,KAAKu3B,iBACL9wB,MAAMI,SACP,CAEDoJ,OACE,GAAoC,SAAhCjQ,KAAK0G,SAAS6J,MAAM4Z,QACtB,MAAM,IAAI7kB,MAAM,uCAGlB,IAAMtF,KAAKw3B,mBAAoBx3B,KAAKu2B,WAClC,OAGF,MAAM9F,EAAYjwB,EAAaoB,QAAQ5B,KAAK0G,SAAU1G,KAAK6F,YAAY0I,UA7JxD,SA+JTkpB,GADar9B,EAAe4F,KAAK0G,WACL1G,KAAK0G,SAASmM,cAAcxY,iBAAiBJ,SAAS+F,KAAK0G,UAE7F,GAAI+pB,EAAUxuB,mBAAqBw1B,EACjC,OAIEz3B,KAAK62B,MACP72B,KAAK62B,IAAIjzB,SACT5D,KAAK62B,IAAM,MAGb,MAAMA,EAAM72B,KAAK03B,iBAEjB13B,KAAK0G,SAASlC,aAAa,mBAAoBqyB,EAAI5+B,aAAa,OAEhE,MAAMi+B,UAAEA,GAAcl2B,KAAK2G,QAmB3B,GAjBK3G,KAAK0G,SAASmM,cAAcxY,gBAAgBJ,SAAS+F,KAAK62B,OAC7DX,EAAU9H,OAAOyI,GACjBr2B,EAAaoB,QAAQ5B,KAAK0G,SAAU1G,KAAK6F,YAAY0I,UAjLpC,cAoLfvO,KAAKsqB,QACPtqB,KAAKsqB,QAAQzO,SAEb7b,KAAKsqB,QAAUtqB,KAAK2qB,cAAckM,GAGpCA,EAAI78B,UAAU4Q,IAAIsE,IAMd,iBAAkB1W,SAAS6B,gBAC7B,IAAK,MAAMtC,IAAW,GAAGwQ,UAAU/P,SAASwC,KAAK0N,UAC/ClI,EAAaa,GAAGtJ,EAAS,YAAa2C,GAc1CsF,KAAKiH,gBAVY,KACfzG,EAAaoB,QAAQ5B,KAAK0G,SAAU1G,KAAK6F,YAAY0I,UAxMvC,WA0MU,IAApBvO,KAAKy2B,YACPz2B,KAAKo3B,SAGPp3B,KAAKy2B,YAAa,CAAlB,GAG4Bz2B,KAAK62B,IAAK72B,KAAK4O,cAC9C,CAEDoB,OACE,IAAKhQ,KAAK+P,WACR,OAIF,GADkBvP,EAAaoB,QAAQ5B,KAAK0G,SAAU1G,KAAK6F,YAAY0I,UA5NxD,SA6NDtM,iBACZ,OAGF,MAAM40B,EAAM72B,KAAK03B,iBAKjB,GAJAb,EAAI78B,UAAU4J,OAAOsL,IAIjB,iBAAkB1W,SAAS6B,gBAC7B,IAAK,MAAMtC,IAAW,GAAGwQ,UAAU/P,SAASwC,KAAK0N,UAC/ClI,EAAaC,IAAI1I,EAAS,YAAa2C,GAI3CsF,KAAK02B,eAAL,OAAqC,EACrC12B,KAAK02B,eAAL,OAAqC,EACrC12B,KAAK02B,eAAL,OAAqC,EACrC12B,KAAKy2B,WAAa,KAiBlBz2B,KAAKiH,gBAfY,KACXjH,KAAK23B,yBAIJ33B,KAAKy2B,YACRI,EAAIjzB,SAGN5D,KAAK0G,SAAShC,gBAAgB,oBAC9BlE,EAAaoB,QAAQ5B,KAAK0G,SAAU1G,KAAK6F,YAAY0I,UA1PtC,WA4PfvO,KAAKu3B,iBAAL,GAG4Bv3B,KAAK62B,IAAK72B,KAAK4O,cAC9C,CAEDiN,SACM7b,KAAKsqB,SACPtqB,KAAKsqB,QAAQzO,QAEhB,CAGD2b,iBACE,OAAOz2B,QAAQf,KAAK43B,YACrB,CAEDF,iBAKE,OAJK13B,KAAK62B,MACR72B,KAAK62B,IAAM72B,KAAK63B,kBAAkB73B,KAAK42B,aAAe52B,KAAK83B,2BAGtD93B,KAAK62B,GACb,CAEDgB,kBAAkBxE,GAChB,MAAMwD,EAAM72B,KAAK+3B,oBAAoB1E,GAASa,SAG9C,IAAK2C,EACH,OAAO,KAGTA,EAAI78B,UAAU4J,OAAO0xB,GAAiBpmB,IAEtC2nB,EAAI78B,UAAU4Q,IAAK,MAAK5K,KAAK6F,YAAYpK,aAEzC,MAAMu8B,E5E9SKC,KACb,GACEA,GAAUt6B,KAAKu6B,MAnBH,IAmBSv6B,KAAKw6B,gBACnB3/B,SAAS4/B,eAAeH,IAEjC,OAAOA,CAAP,E4EySgBI,CAAOr4B,KAAK6F,YAAYpK,MAAMsI,WAQ5C,OANA8yB,EAAIryB,aAAa,KAAMwzB,GAEnBh4B,KAAK4O,eACPioB,EAAI78B,UAAU4Q,IAAI0qB,IAGbuB,CACR,CAEDyB,WAAWjF,GACTrzB,KAAK42B,YAAcvD,EACfrzB,KAAK+P,aACP/P,KAAKu3B,iBACLv3B,KAAKiQ,OAER,CAED8nB,oBAAoB1E,GAalB,OAZIrzB,KAAK22B,iBACP32B,KAAK22B,iBAAiB3C,cAAcX,GAEpCrzB,KAAK22B,iBAAmB,IAAI/C,GAAgB,IACvC5zB,KAAK2G,QAGR0sB,UACAC,WAAYtzB,KAAK8zB,yBAAyB9zB,KAAK2G,QAAQwvB,eAIpDn2B,KAAK22B,gBACb,CAEDmB,yBACE,MAAO,CACL,iBAA0B93B,KAAK43B,YAElC,CAEDA,YACE,OAAO53B,KAAK8zB,yBAAyB9zB,KAAK2G,QAAQ0vB,QAAUr2B,KAAK0G,SAASzO,aAAa,yBACxF,CAGDsgC,6BAA6Br5B,GAC3B,OAAOc,KAAK6F,YAAY8B,oBAAoBzI,EAAMY,eAAgBE,KAAKw4B,qBACxE,CAED5pB,cACE,OAAO5O,KAAK2G,QAAQsvB,WAAcj2B,KAAK62B,KAAO72B,KAAK62B,IAAI78B,UAAUC,SAASq7B,GAC3E,CAEDvlB,WACE,OAAO/P,KAAK62B,KAAO72B,KAAK62B,IAAI78B,UAAUC,SAASiV,GAChD,CAEDyb,cAAckM,GACZ,MAAMhlB,EAA8C,mBAA3B7R,KAAK2G,QAAQkL,UACpC7R,KAAK2G,QAAQkL,UAAU9R,KAAKC,KAAM62B,EAAK72B,KAAK0G,UAC5C1G,KAAK2G,QAAQkL,UACT4mB,EAAa9C,GAAc9jB,EAAUtL,eAC3C,OAAOukB,GAAoB9qB,KAAK0G,SAAUmwB,EAAK72B,KAAKgrB,iBAAiByN,GACtE,CAEDrN,aACE,MAAMpS,OAAEA,GAAWhZ,KAAK2G,QAExB,MAAsB,iBAAXqS,EACFA,EAAO3gB,MAAM,KAAKiR,KAAI3G,GAASjG,OAAOwR,SAASvL,EAAO,MAGzC,mBAAXqW,EACFqS,GAAcrS,EAAOqS,EAAYrrB,KAAK0G,UAGxCsS,CACR,CAED8a,yBAAyBU,GACvB,MAAsB,mBAARA,EAAqBA,EAAIz0B,KAAKC,KAAK0G,UAAY8tB,CAC9D,CAEDxJ,iBAAiByN,GACf,MAAMnN,EAAwB,CAC5BzZ,UAAW4mB,EACX/R,UAAW,CACT,CACElrB,KAAM,OACNuY,QAAS,CACPoN,mBAAoBnhB,KAAK2G,QAAQwa,qBAGrC,CACE3lB,KAAM,SACNuY,QAAS,CACPiF,OAAQhZ,KAAKorB,eAGjB,CACE5vB,KAAM,kBACNuY,QAAS,CACP0K,SAAUze,KAAK2G,QAAQ8X,WAG3B,CACEjjB,KAAM,QACNuY,QAAS,CACPhc,QAAU,IAAGiI,KAAK6F,YAAYpK,eAGlC,CACED,KAAM,kBACN2X,SAAS,EACTC,MAAO,aACPzX,GAAIqM,IAGFhI,KAAK03B,iBAAiBlzB,aAAa,wBAAyBwD,EAAKsL,MAAMzB,UAAvE,KAMR,MAAO,IACFyZ,KACsC,mBAA9BtrB,KAAK2G,QAAQyjB,aAA8BpqB,KAAK2G,QAAQyjB,aAAakB,GAAyBtrB,KAAK2G,QAAQyjB,aAEzH,CAED0M,gBACE,MAAM4B,EAAW14B,KAAK2G,QAAQ/E,QAAQvJ,MAAM,KAE5C,IAAK,MAAMuJ,KAAW82B,EACpB,GAAgB,UAAZ92B,EACFpB,EAAaa,GAAGrB,KAAK0G,SAAU1G,KAAK6F,YAAY0I,UArapC,SAqa4DvO,KAAK2G,QAAQ3O,UAAUkH,IAC7Ec,KAAKu4B,6BAA6Br5B,GAC1CkJ,QAAR,SAEG,GAhbU,WAgbNxG,EAA4B,CACrC,MAAM+2B,EAAU/2B,IAAY6zB,GAC1Bz1B,KAAK6F,YAAY0I,UAxaF,cAyafvO,KAAK6F,YAAY0I,UA3aL,WA4aRqqB,EAAWh3B,IAAY6zB,GAC3Bz1B,KAAK6F,YAAY0I,UA1aF,cA2afvO,KAAK6F,YAAY0I,UA7aJ,YA+af/N,EAAaa,GAAGrB,KAAK0G,SAAUiyB,EAAS34B,KAAK2G,QAAQ3O,UAAUkH,IAC7D,MAAMusB,EAAUzrB,KAAKu4B,6BAA6Br5B,GAClDusB,EAAQiL,eAA8B,YAAfx3B,EAAMwB,KAAqBg1B,GAAgBD,KAAiB,EACnFhK,EAAQ4L,QAAR,IAEF72B,EAAaa,GAAGrB,KAAK0G,SAAUkyB,EAAU54B,KAAK2G,QAAQ3O,UAAUkH,IAC9D,MAAMusB,EAAUzrB,KAAKu4B,6BAA6Br5B,GAClDusB,EAAQiL,eAA8B,aAAfx3B,EAAMwB,KAAsBg1B,GAAgBD,IACjEhK,EAAQ/kB,SAASzM,SAASiF,EAAMW,eAElC4rB,EAAQ2L,QAAR,GAEH,CAGHp3B,KAAKs3B,kBAAoB,KACnBt3B,KAAK0G,UACP1G,KAAKgQ,MACN,EAGHxP,EAAaa,GAAGrB,KAAK0G,SAAShN,QAAQ67B,IAAiBC,GAAkBx1B,KAAKs3B,kBAC/E,CAEDP,YACE,MAAMV,EAAQr2B,KAAK0G,SAASzO,aAAa,SAEpCo+B,IAIAr2B,KAAK0G,SAASzO,aAAa,eAAkB+H,KAAK0G,SAASiuB,YAAYr8B,QAC1E0H,KAAK0G,SAASlC,aAAa,aAAc6xB,GAG3Cr2B,KAAK0G,SAASlC,aAAa,yBAA0B6xB,GACrDr2B,KAAK0G,SAAShC,gBAAgB,SAC/B,CAED2yB,SACMr3B,KAAK+P,YAAc/P,KAAKy2B,WAC1Bz2B,KAAKy2B,YAAa,GAIpBz2B,KAAKy2B,YAAa,EAElBz2B,KAAK64B,aAAY,KACX74B,KAAKy2B,YACPz2B,KAAKiQ,MACN,GACAjQ,KAAK2G,QAAQyvB,MAAMnmB,MACvB,CAEDmnB,SACMp3B,KAAK23B,yBAIT33B,KAAKy2B,YAAa,EAElBz2B,KAAK64B,aAAY,KACV74B,KAAKy2B,YACRz2B,KAAKgQ,MACN,GACAhQ,KAAK2G,QAAQyvB,MAAMpmB,MACvB,CAED6oB,YAAY97B,EAAS+7B,GACnBjrB,aAAa7N,KAAKw2B,UAClBx2B,KAAKw2B,SAAWt5B,WAAWH,EAAS+7B,EACrC,CAEDnB,uBACE,OAAO54B,OAAOC,OAAOgB,KAAK02B,gBAAgBv+B,UAAS,EACpD,CAEDoN,WAAWC,GACT,MAAMuzB,EAAiBz0B,EAAYK,kBAAkB3E,KAAK0G,UAE1D,IAAK,MAAMsyB,KAAiBj6B,OAAOqC,KAAK23B,GAClC1D,GAAsB51B,IAAIu5B,WACrBD,EAAeC,GAW1B,OAPAxzB,EAAS,IACJuzB,KACmB,iBAAXvzB,GAAuBA,EAASA,EAAS,IAEtDA,EAASxF,KAAKyF,gBAAgBD,GAC9BA,EAASxF,KAAK0F,kBAAkBF,GAChCxF,KAAK2F,iBAAiBH,GACfA,CACR,CAEDE,kBAAkBF,GAkBhB,OAjBAA,EAAO0wB,WAAiC,IAArB1wB,EAAO0wB,UAAsB19B,SAASwC,KAAO9B,EAAWsM,EAAO0wB,WAEtD,iBAAjB1wB,EAAO4wB,QAChB5wB,EAAO4wB,MAAQ,CACbnmB,KAAMzK,EAAO4wB,MACbpmB,KAAMxK,EAAO4wB,QAIW,iBAAjB5wB,EAAO6wB,QAChB7wB,EAAO6wB,MAAQ7wB,EAAO6wB,MAAMtyB,YAGA,iBAAnByB,EAAO6tB,UAChB7tB,EAAO6tB,QAAU7tB,EAAO6tB,QAAQtvB,YAG3ByB,CACR,CAEDgzB,qBACE,MAAMhzB,EAAS,GAEf,IAAK,MAAM9C,KAAO1C,KAAK2G,QACjB3G,KAAK6F,YAAYT,QAAQ1C,KAAS1C,KAAK2G,QAAQjE,KACjD8C,EAAO9C,GAAO1C,KAAK2G,QAAQjE,IAU/B,OANA8C,EAAOxN,UAAW,EAClBwN,EAAO5D,QAAU,SAKV4D,CACR,CAED+xB,iBACMv3B,KAAKsqB,UACPtqB,KAAKsqB,QAAQtB,UACbhpB,KAAKsqB,QAAU,KAElB,CAGqBnjB,uBAAC3B,GACrB,OAAOxF,KAAK+H,MAAK,WACf,MAAMC,EAAOsuB,GAAQ3uB,oBAAoB3H,KAAMwF,GAE/C,GAAsB,iBAAXA,EAAX,CAIA,QAA4B,IAAjBwC,EAAKxC,GACd,MAAM,IAAIc,UAAW,oBAAmBd,MAG1CwC,EAAKxC,IANJ,CAOF,GACF,EAOHpK,EAAmBk7B,IChnBnB,MAKMlxB,GAAU,IACXkxB,GAAQlxB,QACXiuB,QAAS,GACTra,OAAQ,CAAC,EAAG,GACZnH,UAAW,QACX4hB,SAAU,8IAKV7xB,QAAS,SAGLyD,GAAc,IACfixB,GAAQjxB,YACXguB,QAAS,kCAOX,MAAM4F,WAAgB3C,GAETlxB,qBACT,OAAOA,EACR,CAEUC,yBACT,OAAOA,EACR,CAEU5J,kBACT,MAtCS,SAuCV,CAGD+7B,iBACE,OAAOx3B,KAAK43B,aAAe53B,KAAKk5B,aACjC,CAGDpB,yBACE,MAAO,CACL,kBAAkB93B,KAAK43B,YACvB,gBAAoB53B,KAAKk5B,cAE5B,CAEDA,cACE,OAAOl5B,KAAK8zB,yBAAyB9zB,KAAK2G,QAAQ0sB,QACnD,CAGqBlsB,uBAAC3B,GACrB,OAAOxF,KAAK+H,MAAK,WACf,MAAMC,EAAOixB,GAAQtxB,oBAAoB3H,KAAMwF,GAE/C,GAAsB,iBAAXA,EAAX,CAIA,QAA4B,IAAjBwC,EAAKxC,GACd,MAAM,IAAIc,UAAW,oBAAmBd,MAG1CwC,EAAKxC,IANJ,CAOF,GACF,EAOHpK,EAAmB69B,IC9EnB,MAMME,GAAe,qBAIf7tB,GAAoB,SAGpB8tB,GAAwB,SASxBh0B,GAAU,CACd4T,OAAQ,KACRqgB,WAAY,eACZC,cAAc,EACdt8B,OAAQ,KACRu8B,UAAW,CAAC,GAAK,GAAK,IAGlBl0B,GAAc,CAClB2T,OAAQ,gBACRqgB,WAAY,SACZC,aAAc,UACdt8B,OAAQ,UACRu8B,UAAW,SAOb,MAAMC,WAAkBhzB,EACtBX,YAAY9N,EAASyN,GACnBiB,MAAM1O,EAASyN,GAGfxF,KAAKy5B,aAAe,IAAIv2B,IACxBlD,KAAK05B,oBAAsB,IAAIx2B,IAC/BlD,KAAK25B,aAA6D,YAA9CpgC,iBAAiByG,KAAK0G,UAAUkW,UAA0B,KAAO5c,KAAK0G,SAC1F1G,KAAK45B,cAAgB,KACrB55B,KAAK65B,UAAY,KACjB75B,KAAK85B,oBAAsB,CACzBC,gBAAiB,EACjBC,gBAAiB,GAEnBh6B,KAAKi6B,SACN,CAGU70B,qBACT,OAAOA,EACR,CAEUC,yBACT,OAAOA,EACR,CAEU5J,kBACT,MArES,WAsEV,CAGDw+B,UACEj6B,KAAKk6B,mCACLl6B,KAAKm6B,2BAEDn6B,KAAK65B,UACP75B,KAAK65B,UAAUO,aAEfp6B,KAAK65B,UAAY75B,KAAKq6B,kBAGxB,IAAK,MAAMC,KAAWt6B,KAAK05B,oBAAoB16B,SAC7CgB,KAAK65B,UAAUU,QAAQD,EAE1B,CAEDzzB,UACE7G,KAAK65B,UAAUO,aACf3zB,MAAMI,SACP,CAGDnB,kBAAkBF,GAWhB,OATAA,EAAOxI,OAAS9D,EAAWsM,EAAOxI,SAAWxE,SAASwC,KAGtDwK,EAAO6zB,WAAa7zB,EAAOwT,OAAU,GAAExT,EAAOwT,oBAAsBxT,EAAO6zB,WAE3C,iBAArB7zB,EAAO+zB,YAChB/zB,EAAO+zB,UAAY/zB,EAAO+zB,UAAUlhC,MAAM,KAAKiR,KAAI3G,GAASjG,OAAOC,WAAWgG,MAGzE6C,CACR,CAED20B,2BACOn6B,KAAK2G,QAAQ2yB,eAKlB94B,EAAaC,IAAIT,KAAK2G,QAAQ3J,OAAQm8B,IAEtC34B,EAAaa,GAAGrB,KAAK2G,QAAQ3J,OAAQm8B,GAAaC,IAAuBl6B,IACvE,MAAMs7B,EAAoBx6B,KAAK05B,oBAAoB12B,IAAI9D,EAAMlC,OAAO8e,MACpE,GAAI0e,EAAmB,CACrBt7B,EAAMqD,iBACN,MAAM/H,EAAOwF,KAAK25B,cAAgB7+B,OAC5B0a,EAASglB,EAAkB1kB,UAAY9V,KAAK0G,SAASoP,UAC3D,GAAItb,EAAKigC,SAEP,YADAjgC,EAAKigC,SAAS,CAAE3pB,IAAK0E,EAAQklB,SAAU,WAKzClgC,EAAK6hB,UAAY7G,CAClB,KAEJ,CAED6kB,kBACE,MAAMtmB,EAAU,CACdvZ,KAAMwF,KAAK25B,aACXJ,UAAWv5B,KAAK2G,QAAQ4yB,UACxBF,WAAYr5B,KAAK2G,QAAQ0yB,YAG3B,OAAO,IAAIsB,sBAAqB/3B,GAAW5C,KAAK46B,kBAAkBh4B,IAAUmR,EAC7E,CAGD6mB,kBAAkBh4B,GAChB,MAAMi4B,EAAgBlH,GAAS3zB,KAAKy5B,aAAaz2B,IAAK,IAAG2wB,EAAM32B,OAAO89B,MAChEnM,EAAWgF,IACf3zB,KAAK85B,oBAAoBC,gBAAkBpG,EAAM32B,OAAO8Y,UACxD9V,KAAK+6B,SAASF,EAAclH,GAA5B,EAGIqG,GAAmBh6B,KAAK25B,cAAgBnhC,SAAS6B,iBAAiBgiB,UAClE2e,EAAkBhB,GAAmBh6B,KAAK85B,oBAAoBE,gBACpEh6B,KAAK85B,oBAAoBE,gBAAkBA,EAE3C,IAAK,MAAMrG,KAAS/wB,EAAS,CAC3B,IAAK+wB,EAAMsH,eAAgB,CACzBj7B,KAAK45B,cAAgB,KACrB55B,KAAKk7B,kBAAkBL,EAAclH,IAErC,QACD,CAED,MAAMwH,EAA2BxH,EAAM32B,OAAO8Y,WAAa9V,KAAK85B,oBAAoBC,gBAEpF,GAAIiB,GAAmBG,GAGrB,GAFAxM,EAASgF,IAEJqG,EACH,YAOCgB,GAAoBG,GACvBxM,EAASgF,EAEZ,CACF,CAEDuG,mCACEl6B,KAAKy5B,aAAe,IAAIv2B,IACxBlD,KAAK05B,oBAAsB,IAAIx2B,IAE/B,MAAMk4B,EAAc9yB,EAAerJ,KAAKm6B,GAAuBp5B,KAAK2G,QAAQ3J,QAE5E,IAAK,MAAMq+B,KAAUD,EAAa,CAEhC,IAAKC,EAAOvf,MAAQjiB,EAAWwhC,GAC7B,SAGF,MAAMb,EAAoBlyB,EAAeG,QAAQ4yB,EAAOvf,KAAM9b,KAAK0G,UAG/DtN,EAAUohC,KACZx6B,KAAKy5B,aAAar2B,IAAIi4B,EAAOvf,KAAMuf,GACnCr7B,KAAK05B,oBAAoBt2B,IAAIi4B,EAAOvf,KAAM0e,GAE7C,CACF,CAEDO,SAAS/9B,GACHgD,KAAK45B,gBAAkB58B,IAI3BgD,KAAKk7B,kBAAkBl7B,KAAK2G,QAAQ3J,QACpCgD,KAAK45B,cAAgB58B,EACrBA,EAAOhD,UAAU4Q,IAAIU,IACrBtL,KAAKs7B,iBAAiBt+B,GAEtBwD,EAAaoB,QAAQ5B,KAAK0G,SAjNN,wBAiNgC,CAAE7G,cAAe7C,IACtE,CAEDs+B,iBAAiBt+B,GAEf,GAAIA,EAAOhD,UAAUC,SAlNQ,iBAmN3BqO,EAAeG,QAxMY,mBAwMsBzL,EAAOtD,QAzMpC,cA0MjBM,UAAU4Q,IAAIU,SAInB,IAAK,MAAMiwB,KAAajzB,EAAeO,QAAQ7L,EAnNnB,qBAsN1B,IAAK,MAAM4X,KAAQtM,EAAeS,KAAKwyB,EAlNhB,sDAmNrB3mB,EAAK5a,UAAU4Q,IAAIU,GAGxB,CAED4vB,kBAAkB7rB,GAChBA,EAAOrV,UAAU4J,OAAO0H,IAExB,MAAMkwB,EAAclzB,EAAerJ,KAAM,gBAAgDoQ,GACzF,IAAK,MAAMuD,KAAQ4oB,EACjB5oB,EAAK5Y,UAAU4J,OAAO0H,GAEzB,CAGqBnE,uBAAC3B,GACrB,OAAOxF,KAAK+H,MAAK,WACf,MAAMC,EAAOwxB,GAAU7xB,oBAAoB3H,KAAMwF,GAEjD,GAAsB,iBAAXA,EAAX,CAIA,QAAqByC,IAAjBD,EAAKxC,IAAyBA,EAAOpN,WAAW,MAAmB,gBAAXoN,EAC1D,MAAM,IAAIc,UAAW,oBAAmBd,MAG1CwC,EAAKxC,IANJ,CAOF,GACF,EAOHhF,EAAaa,GAAGvG,OAlQa,8BAkQgB,KAC3C,IAAK,MAAM2gC,KAAOnzB,EAAerJ,KA9PT,0BA+PtBu6B,GAAU7xB,oBAAoB8zB,EAC/B,IAOHrgC,EAAmBo+B,ICnRnB,MAYMkC,GAAiB,YACjBC,GAAkB,aAClBrS,GAAe,UACfC,GAAiB,YAEjBje,GAAoB,SACpBgqB,GAAkB,OAClBpmB,GAAkB,OAUlBhH,GAAuB,2EACvB0zB,GAAuB,gHAAqB1zB,KAQlD,MAAM2zB,WAAYr1B,EAChBX,YAAY9N,GACV0O,MAAM1O,GACNiI,KAAKuqB,QAAUvqB,KAAK0G,SAAShN,QAfN,uCAiBlBsG,KAAKuqB,UAOVvqB,KAAK87B,sBAAsB97B,KAAKuqB,QAASvqB,KAAK+7B,gBAE9Cv7B,EAAaa,GAAGrB,KAAK0G,SA3CF,kBA2C2BxH,GAASc,KAAKwN,SAAStO,KACtE,CAGUzD,kBACT,MAzDS,KA0DV,CAGDwU,OACE,MAAM+rB,EAAYh8B,KAAK0G,SACvB,GAAI1G,KAAKi8B,cAAcD,GACrB,OAIF,MAAME,EAASl8B,KAAKm8B,iBAEdC,EAAYF,EAChB17B,EAAaoB,QAAQs6B,EAnEP,cAmE2B,CAAEr8B,cAAem8B,IAC1D,KAEgBx7B,EAAaoB,QAAQo6B,EApEvB,cAoE8C,CAAEn8B,cAAeq8B,IAEjEj6B,kBAAqBm6B,GAAaA,EAAUn6B,mBAI1DjC,KAAKq8B,YAAYH,EAAQF,GACzBh8B,KAAKs8B,UAAUN,EAAWE,GAC3B,CAGDI,UAAUvkC,EAASwkC,GACZxkC,IAILA,EAAQiC,UAAU4Q,IAAIU,IAEtBtL,KAAKs8B,UAAU5jC,EAAuBX,IAgBtCiI,KAAKiH,gBAdY,KACsB,QAAjClP,EAAQE,aAAa,SAKzBF,EAAQ2M,gBAAgB,YACxB3M,EAAQyM,aAAa,iBAAiB,GACtCxE,KAAKw8B,gBAAgBzkC,GAAS,GAC9ByI,EAAaoB,QAAQ7J,EAhGN,eAgG4B,CACzC8H,cAAe08B,KARfxkC,EAAQiC,UAAU4Q,IAAIsE,GAOxB,GAK4BnX,EAASA,EAAQiC,UAAUC,SAASq7B,KACnE,CAED+G,YAAYtkC,EAASwkC,GACdxkC,IAILA,EAAQiC,UAAU4J,OAAO0H,IACzBvT,EAAQi5B,OAERhxB,KAAKq8B,YAAY3jC,EAAuBX,IAcxCiI,KAAKiH,gBAZY,KACsB,QAAjClP,EAAQE,aAAa,SAKzBF,EAAQyM,aAAa,iBAAiB,GACtCzM,EAAQyM,aAAa,WAAY,MACjCxE,KAAKw8B,gBAAgBzkC,GAAS,GAC9ByI,EAAaoB,QAAQ7J,EA7HL,gBA6H4B,CAAE8H,cAAe08B,KAP3DxkC,EAAQiC,UAAU4J,OAAOsL,GAO3B,GAG4BnX,EAASA,EAAQiC,UAAUC,SAASq7B,KACnE,CAED9nB,SAAStO,GACP,IAAM,CAACw8B,GAAgBC,GAAiBrS,GAAcC,IAAgBpxB,SAAS+G,EAAMwD,KACnF,OAGFxD,EAAM8sB,kBACN9sB,EAAMqD,iBACN,MAAM4L,EAAS,CAACwtB,GAAiBpS,IAAgBpxB,SAAS+G,EAAMwD,KAC1D+5B,EAAoBt/B,EAAqB6C,KAAK+7B,eAAeh3B,QAAOhN,IAAY8B,EAAW9B,KAAWmH,EAAMlC,OAAQmR,GAAQ,GAE9HsuB,IACFA,EAAkB7R,MAAM,CAAE8R,eAAe,IACzCb,GAAIl0B,oBAAoB80B,GAAmBxsB,OAE9C,CAED8rB,eACE,OAAOzzB,EAAerJ,KAAK28B,GAAqB57B,KAAKuqB,QACtD,CAED4R,iBACE,OAAOn8B,KAAK+7B,eAAe98B,MAAK0J,GAAS3I,KAAKi8B,cAActzB,MAAW,IACxE,CAEDmzB,sBAAsBzsB,EAAQ3G,GAC5B1I,KAAK28B,yBAAyBttB,EAAQ,OAAQ,WAE9C,IAAK,MAAM1G,KAASD,EAClB1I,KAAK48B,6BAA6Bj0B,EAErC,CAEDi0B,6BAA6Bj0B,GAC3BA,EAAQ3I,KAAK68B,iBAAiBl0B,GAC9B,MAAMm0B,EAAW98B,KAAKi8B,cAActzB,GAC9Bo0B,EAAY/8B,KAAKg9B,iBAAiBr0B,GACxCA,EAAMnE,aAAa,gBAAiBs4B,GAEhCC,IAAcp0B,GAChB3I,KAAK28B,yBAAyBI,EAAW,OAAQ,gBAG9CD,GACHn0B,EAAMnE,aAAa,WAAY,MAGjCxE,KAAK28B,yBAAyBh0B,EAAO,OAAQ,OAG7C3I,KAAKi9B,mCAAmCt0B,EACzC,CAEDs0B,mCAAmCt0B,GACjC,MAAM3L,EAAStE,EAAuBiQ,GAEjC3L,IAILgD,KAAK28B,yBAAyB3/B,EAAQ,OAAQ,YAE1C2L,EAAMmyB,IACR96B,KAAK28B,yBAAyB3/B,EAAQ,kBAAoB,IAAG2L,EAAMmyB,MAEtE,CAED0B,gBAAgBzkC,EAASmlC,GACvB,MAAMH,EAAY/8B,KAAKg9B,iBAAiBjlC,GACxC,IAAKglC,EAAU/iC,UAAUC,SAxLN,YAyLjB,OAGF,MAAMmO,EAAS,CAACpQ,EAAU01B,KACxB,MAAM31B,EAAUuQ,EAAeG,QAAQzQ,EAAU+kC,GAC7ChlC,GACFA,EAAQiC,UAAUoO,OAAOslB,EAAWwP,EACrC,EAGH90B,EAjM6B,mBAiMIkD,IACjClD,EAjM2B,iBAiMI8G,IAC/B6tB,EAAUv4B,aAAa,gBAAiB04B,EACzC,CAEDP,yBAAyB5kC,EAASqc,EAAWzR,GACtC5K,EAAQoC,aAAaia,IACxBrc,EAAQyM,aAAa4P,EAAWzR,EAEnC,CAEDs5B,cAAcvsB,GACZ,OAAOA,EAAK1V,UAAUC,SAASqR,GAChC,CAGDuxB,iBAAiBntB,GACf,OAAOA,EAAK9G,QAAQgzB,IAAuBlsB,EAAOpH,EAAeG,QAAQmzB,GAAqBlsB,EAC/F,CAGDstB,iBAAiBttB,GACf,OAAOA,EAAKhW,QAlNO,gCAkNoBgW,CACxC,CAGqBvI,uBAAC3B,GACrB,OAAOxF,KAAK+H,MAAK,WACf,MAAMC,EAAO6zB,GAAIl0B,oBAAoB3H,MAErC,GAAsB,iBAAXwF,EAAX,CAIA,QAAqByC,IAAjBD,EAAKxC,IAAyBA,EAAOpN,WAAW,MAAmB,gBAAXoN,EAC1D,MAAM,IAAIc,UAAW,oBAAmBd,MAG1CwC,EAAKxC,IANJ,CAOF,GACF,EAOHhF,EAAaa,GAAG7I,SA9Pc,eA8PkB0P,IAAsB,SAAUhJ,GAC1E,CAAC,IAAK,QAAQ/G,SAAS6H,KAAK0H,UAC9BxI,EAAMqD,iBAGJ1I,EAAWmG,OAIf67B,GAAIl0B,oBAAoB3H,MAAMiQ,MAC/B,IAKDzP,EAAaa,GAAGvG,OA3Qa,eA2QgB,KAC3C,IAAK,MAAM/C,KAAWuQ,EAAerJ,KAtPF,iGAuPjC48B,GAAIl0B,oBAAoB5P,EACzB,IAMHqD,EAAmBygC,IC9RnB,MAcMsB,GAAkB,OAClBjuB,GAAkB,OAClByhB,GAAqB,UAErBtrB,GAAc,CAClB4wB,UAAW,UACXmH,SAAU,UACVhH,MAAO,UAGHhxB,GAAU,CACd6wB,WAAW,EACXmH,UAAU,EACVhH,MAAO,KAOT,MAAMiH,WAAc72B,EAClBX,YAAY9N,EAASyN,GACnBiB,MAAM1O,EAASyN,GAEfxF,KAAKw2B,SAAW,KAChBx2B,KAAKs9B,sBAAuB,EAC5Bt9B,KAAKu9B,yBAA0B,EAC/Bv9B,KAAK82B,eACN,CAGU1xB,qBACT,OAAOA,EACR,CAEUC,yBACT,OAAOA,EACR,CAEU5J,kBACT,MAtDS,OAuDV,CAGDwU,OACoBzP,EAAaoB,QAAQ5B,KAAK0G,SAjD5B,iBAmDFzE,mBAIdjC,KAAKw9B,gBAEDx9B,KAAK2G,QAAQsvB,WACfj2B,KAAK0G,SAAS1M,UAAU4Q,IAvDN,QAiEpB5K,KAAK0G,SAAS1M,UAAU4J,OAAOu5B,IAC/BxiC,EAAOqF,KAAK0G,UACZ1G,KAAK0G,SAAS1M,UAAU4Q,IAAIsE,GAAiByhB,IAE7C3wB,KAAKiH,gBAXY,KACfjH,KAAK0G,SAAS1M,UAAU4J,OAAO+sB,IAC/BnwB,EAAaoB,QAAQ5B,KAAK0G,SA9DX,kBAgEf1G,KAAKy9B,oBAAL,GAO4Bz9B,KAAK0G,SAAU1G,KAAK2G,QAAQsvB,WAC3D,CAEDjmB,OACOhQ,KAAK09B,YAIQl9B,EAAaoB,QAAQ5B,KAAK0G,SAlF5B,iBAoFFzE,mBAUdjC,KAAK0G,SAAS1M,UAAU4Q,IAAI+lB,IAC5B3wB,KAAKiH,gBAPY,KACfjH,KAAK0G,SAAS1M,UAAU4Q,IAAIuyB,IAC5Bn9B,KAAK0G,SAAS1M,UAAU4J,OAAO+sB,GAAoBzhB,IACnD1O,EAAaoB,QAAQ5B,KAAK0G,SA1FV,kBA0FhB,GAI4B1G,KAAK0G,SAAU1G,KAAK2G,QAAQsvB,YAC3D,CAEDpvB,UACE7G,KAAKw9B,gBAEDx9B,KAAK09B,WACP19B,KAAK0G,SAAS1M,UAAU4J,OAAOsL,IAGjCzI,MAAMI,SACP,CAED62B,UACE,OAAO19B,KAAK0G,SAAS1M,UAAUC,SAASiV,GACzC,CAIDuuB,qBACOz9B,KAAK2G,QAAQy2B,WAIdp9B,KAAKs9B,sBAAwBt9B,KAAKu9B,0BAItCv9B,KAAKw2B,SAAWt5B,YAAW,KACzB8C,KAAKgQ,MAAL,GACChQ,KAAK2G,QAAQyvB,QACjB,CAEDuH,eAAez+B,EAAO0+B,GACpB,OAAQ1+B,EAAMwB,MACZ,IAAK,YACL,IAAK,WACHV,KAAKs9B,qBAAuBM,EAC5B,MAGF,IAAK,UACL,IAAK,WACH59B,KAAKu9B,wBAA0BK,EASnC,GAAIA,EAEF,YADA59B,KAAKw9B,gBAIP,MAAMpvB,EAAclP,EAAMW,cACtBG,KAAK0G,WAAa0H,GAAepO,KAAK0G,SAASzM,SAASmU,IAI5DpO,KAAKy9B,oBACN,CAED3G,gBACEt2B,EAAaa,GAAGrB,KAAK0G,SArKA,sBAqK2BxH,GAASc,KAAK29B,eAAez+B,GAAO,KACpFsB,EAAaa,GAAGrB,KAAK0G,SArKD,qBAqK2BxH,GAASc,KAAK29B,eAAez+B,GAAO,KACnFsB,EAAaa,GAAGrB,KAAK0G,SArKF,oBAqK2BxH,GAASc,KAAK29B,eAAez+B,GAAO,KAClFsB,EAAaa,GAAGrB,KAAK0G,SArKD,qBAqK2BxH,GAASc,KAAK29B,eAAez+B,GAAO,IACpF,CAEDs+B,gBACE3vB,aAAa7N,KAAKw2B,UAClBx2B,KAAKw2B,SAAW,IACjB,CAGqBrvB,uBAAC3B,GACrB,OAAOxF,KAAK+H,MAAK,WACf,MAAMC,EAAOq1B,GAAM11B,oBAAoB3H,KAAMwF,GAE7C,GAAsB,iBAAXA,EAAqB,CAC9B,QAA4B,IAAjBwC,EAAKxC,GACd,MAAM,IAAIc,UAAW,oBAAmBd,MAG1CwC,EAAKxC,GAAQxF,KACd,CACF,GACF,E,OAOHsH,EAAqB+1B,IAMrBjiC,EAAmBiiC,IC1MJ,CACbz1B,QACAO,SACA6D,YACAsD,YACA+a,YACA+E,SACA2B,aACAkI,WACAO,aACAqC,OACAwB,SACA/G,W"}
\ No newline at end of file
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/dist/js/bootstrap.bundle.min.js
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/dist/js/bootstrap.bundle.min.js	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/dist/js/bootstrap.bundle.min.js	(revision 3762)
@@ -0,0 +1,7 @@
+/*!
+  * Bootstrap v5.2.2 (https://getbootstrap.com/)
+  * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
+  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+  */
+!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).bootstrap=e()}(this,(function(){"use strict";const t="transitionend",e=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let i=t.getAttribute("href");if(!i||!i.includes("#")&&!i.startsWith("."))return null;i.includes("#")&&!i.startsWith("#")&&(i=`#${i.split("#")[1]}`),e=i&&"#"!==i?i.trim():null}return e},i=t=>{const i=e(t);return i&&document.querySelector(i)?i:null},n=t=>{const i=e(t);return i?document.querySelector(i):null},s=e=>{e.dispatchEvent(new Event(t))},o=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),r=t=>o(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(t):null,a=t=>{if(!o(t)||0===t.getClientRects().length)return!1;const e="visible"===getComputedStyle(t).getPropertyValue("visibility"),i=t.closest("details:not([open])");if(!i)return e;if(i!==t){const e=t.closest("summary");if(e&&e.parentNode!==i)return!1;if(null===e)return!1}return e},l=t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")),c=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?c(t.parentNode):null},h=()=>{},d=t=>{t.offsetHeight},u=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,f=[],p=()=>"rtl"===document.documentElement.dir,g=t=>{var e;e=()=>{const e=u();if(e){const i=t.NAME,n=e.fn[i];e.fn[i]=t.jQueryInterface,e.fn[i].Constructor=t,e.fn[i].noConflict=()=>(e.fn[i]=n,t.jQueryInterface)}},"loading"===document.readyState?(f.length||document.addEventListener("DOMContentLoaded",(()=>{for(const t of f)t()})),f.push(e)):e()},m=t=>{"function"==typeof t&&t()},_=(e,i,n=!0)=>{if(!n)return void m(e);const o=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:i}=window.getComputedStyle(t);const n=Number.parseFloat(e),s=Number.parseFloat(i);return n||s?(e=e.split(",")[0],i=i.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(i))):0})(i)+5;let r=!1;const a=({target:n})=>{n===i&&(r=!0,i.removeEventListener(t,a),m(e))};i.addEventListener(t,a),setTimeout((()=>{r||s(i)}),o)},b=(t,e,i,n)=>{const s=t.length;let o=t.indexOf(e);return-1===o?!i&&n?t[s-1]:t[0]:(o+=i?1:-1,n&&(o=(o+s)%s),t[Math.max(0,Math.min(o,s-1))])},v=/[^.]*(?=\..*)\.|.*/,y=/\..*/,w=/::\d+$/,A={};let E=1;const T={mouseenter:"mouseover",mouseleave:"mouseout"},C=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function O(t,e){return e&&`${e}::${E++}`||t.uidEvent||E++}function x(t){const e=O(t);return t.uidEvent=e,A[e]=A[e]||{},A[e]}function k(t,e,i=null){return Object.values(t).find((t=>t.callable===e&&t.delegationSelector===i))}function L(t,e,i){const n="string"==typeof e,s=n?i:e||i;let o=N(t);return C.has(o)||(o=t),[n,s,o]}function D(t,e,i,n,s){if("string"!=typeof e||!t)return;let[o,r,a]=L(e,i,n);if(e in T){const t=t=>function(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};r=t(r)}const l=x(t),c=l[a]||(l[a]={}),h=k(c,r,o?i:null);if(h)return void(h.oneOff=h.oneOff&&s);const d=O(r,e.replace(v,"")),u=o?function(t,e,i){return function n(s){const o=t.querySelectorAll(e);for(let{target:r}=s;r&&r!==this;r=r.parentNode)for(const a of o)if(a===r)return j(s,{delegateTarget:r}),n.oneOff&&P.off(t,s.type,e,i),i.apply(r,[s])}}(t,i,r):function(t,e){return function i(n){return j(n,{delegateTarget:t}),i.oneOff&&P.off(t,n.type,e),e.apply(t,[n])}}(t,r);u.delegationSelector=o?i:null,u.callable=r,u.oneOff=s,u.uidEvent=d,c[d]=u,t.addEventListener(a,u,o)}function S(t,e,i,n,s){const o=k(e[i],n,s);o&&(t.removeEventListener(i,o,Boolean(s)),delete e[i][o.uidEvent])}function I(t,e,i,n){const s=e[i]||{};for(const o of Object.keys(s))if(o.includes(n)){const n=s[o];S(t,e,i,n.callable,n.delegationSelector)}}function N(t){return t=t.replace(y,""),T[t]||t}const P={on(t,e,i,n){D(t,e,i,n,!1)},one(t,e,i,n){D(t,e,i,n,!0)},off(t,e,i,n){if("string"!=typeof e||!t)return;const[s,o,r]=L(e,i,n),a=r!==e,l=x(t),c=l[r]||{},h=e.startsWith(".");if(void 0===o){if(h)for(const i of Object.keys(l))I(t,l,i,e.slice(1));for(const i of Object.keys(c)){const n=i.replace(w,"");if(!a||e.includes(n)){const e=c[i];S(t,l,r,e.callable,e.delegationSelector)}}}else{if(!Object.keys(c).length)return;S(t,l,r,o,s?i:null)}},trigger(t,e,i){if("string"!=typeof e||!t)return null;const n=u();let s=null,o=!0,r=!0,a=!1;e!==N(e)&&n&&(s=n.Event(e,i),n(t).trigger(s),o=!s.isPropagationStopped(),r=!s.isImmediatePropagationStopped(),a=s.isDefaultPrevented());let l=new Event(e,{bubbles:o,cancelable:!0});return l=j(l,i),a&&l.preventDefault(),r&&t.dispatchEvent(l),l.defaultPrevented&&s&&s.preventDefault(),l}};function j(t,e){for(const[i,n]of Object.entries(e||{}))try{t[i]=n}catch(e){Object.defineProperty(t,i,{configurable:!0,get:()=>n})}return t}const M=new Map,H={set(t,e,i){M.has(t)||M.set(t,new Map);const n=M.get(t);n.has(e)||0===n.size?n.set(e,i):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(n.keys())[0]}.`)},get:(t,e)=>M.has(t)&&M.get(t).get(e)||null,remove(t,e){if(!M.has(t))return;const i=M.get(t);i.delete(e),0===i.size&&M.delete(t)}};function $(t){if("true"===t)return!0;if("false"===t)return!1;if(t===Number(t).toString())return Number(t);if(""===t||"null"===t)return null;if("string"!=typeof t)return t;try{return JSON.parse(decodeURIComponent(t))}catch(e){return t}}function W(t){return t.replace(/[A-Z]/g,(t=>`-${t.toLowerCase()}`))}const B={setDataAttribute(t,e,i){t.setAttribute(`data-bs-${W(e)}`,i)},removeDataAttribute(t,e){t.removeAttribute(`data-bs-${W(e)}`)},getDataAttributes(t){if(!t)return{};const e={},i=Object.keys(t.dataset).filter((t=>t.startsWith("bs")&&!t.startsWith("bsConfig")));for(const n of i){let i=n.replace(/^bs/,"");i=i.charAt(0).toLowerCase()+i.slice(1,i.length),e[i]=$(t.dataset[n])}return e},getDataAttribute:(t,e)=>$(t.getAttribute(`data-bs-${W(e)}`))};class F{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,e){const i=o(e)?B.getDataAttribute(e,"config"):{};return{...this.constructor.Default,..."object"==typeof i?i:{},...o(e)?B.getDataAttributes(e):{},..."object"==typeof t?t:{}}}_typeCheckConfig(t,e=this.constructor.DefaultType){for(const n of Object.keys(e)){const s=e[n],r=t[n],a=o(r)?"element":null==(i=r)?`${i}`:Object.prototype.toString.call(i).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(s).test(a))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${a}" but expected type "${s}".`)}var i}}class z extends F{constructor(t,e){super(),(t=r(t))&&(this._element=t,this._config=this._getConfig(e),H.set(this._element,this.constructor.DATA_KEY,this))}dispose(){H.remove(this._element,this.constructor.DATA_KEY),P.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e,i=!0){_(t,e,i)}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return H.get(r(t),this.DATA_KEY)}static getOrCreateInstance(t,e={}){return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.2.2"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(t){return`${t}${this.EVENT_KEY}`}}const q=(t,e="hide")=>{const i=`click.dismiss${t.EVENT_KEY}`,s=t.NAME;P.on(document,i,`[data-bs-dismiss="${s}"]`,(function(i){if(["A","AREA"].includes(this.tagName)&&i.preventDefault(),l(this))return;const o=n(this)||this.closest(`.${s}`);t.getOrCreateInstance(o)[e]()}))};class R extends z{static get NAME(){return"alert"}close(){if(P.trigger(this._element,"close.bs.alert").defaultPrevented)return;this._element.classList.remove("show");const t=this._element.classList.contains("fade");this._queueCallback((()=>this._destroyElement()),this._element,t)}_destroyElement(){this._element.remove(),P.trigger(this._element,"closed.bs.alert"),this.dispose()}static jQueryInterface(t){return this.each((function(){const e=R.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}q(R,"close"),g(R);const V='[data-bs-toggle="button"]';class K extends z{static get NAME(){return"button"}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(t){return this.each((function(){const e=K.getOrCreateInstance(this);"toggle"===t&&e[t]()}))}}P.on(document,"click.bs.button.data-api",V,(t=>{t.preventDefault();const e=t.target.closest(V);K.getOrCreateInstance(e).toggle()})),g(K);const Q={find:(t,e=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(e,t)),findOne:(t,e=document.documentElement)=>Element.prototype.querySelector.call(e,t),children:(t,e)=>[].concat(...t.children).filter((t=>t.matches(e))),parents(t,e){const i=[];let n=t.parentNode.closest(e);for(;n;)i.push(n),n=n.parentNode.closest(e);return i},prev(t,e){let i=t.previousElementSibling;for(;i;){if(i.matches(e))return[i];i=i.previousElementSibling}return[]},next(t,e){let i=t.nextElementSibling;for(;i;){if(i.matches(e))return[i];i=i.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((t=>`${t}:not([tabindex^="-"])`)).join(",");return this.find(e,t).filter((t=>!l(t)&&a(t)))}},X={endCallback:null,leftCallback:null,rightCallback:null},Y={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"};class U extends F{constructor(t,e){super(),this._element=t,t&&U.isSupported()&&(this._config=this._getConfig(e),this._deltaX=0,this._supportPointerEvents=Boolean(window.PointerEvent),this._initEvents())}static get Default(){return X}static get DefaultType(){return Y}static get NAME(){return"swipe"}dispose(){P.off(this._element,".bs.swipe")}_start(t){this._supportPointerEvents?this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX):this._deltaX=t.touches[0].clientX}_end(t){this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX-this._deltaX),this._handleSwipe(),m(this._config.endCallback)}_move(t){this._deltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this._deltaX}_handleSwipe(){const t=Math.abs(this._deltaX);if(t<=40)return;const e=t/this._deltaX;this._deltaX=0,e&&m(e>0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?(P.on(this._element,"pointerdown.bs.swipe",(t=>this._start(t))),P.on(this._element,"pointerup.bs.swipe",(t=>this._end(t))),this._element.classList.add("pointer-event")):(P.on(this._element,"touchstart.bs.swipe",(t=>this._start(t))),P.on(this._element,"touchmove.bs.swipe",(t=>this._move(t))),P.on(this._element,"touchend.bs.swipe",(t=>this._end(t))))}_eventIsPointerPenTouch(t){return this._supportPointerEvents&&("pen"===t.pointerType||"touch"===t.pointerType)}static isSupported(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}const G="next",J="prev",Z="left",tt="right",et="slid.bs.carousel",it="carousel",nt="active",st={ArrowLeft:tt,ArrowRight:Z},ot={interval:5e3,keyboard:!0,pause:"hover",ride:!1,touch:!0,wrap:!0},rt={interval:"(number|boolean)",keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"};class at extends z{constructor(t,e){super(t,e),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=Q.findOne(".carousel-indicators",this._element),this._addEventListeners(),this._config.ride===it&&this.cycle()}static get Default(){return ot}static get DefaultType(){return rt}static get NAME(){return"carousel"}next(){this._slide(G)}nextWhenVisible(){!document.hidden&&a(this._element)&&this.next()}prev(){this._slide(J)}pause(){this._isSliding&&s(this._element),this._clearInterval()}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval((()=>this.nextWhenVisible()),this._config.interval)}_maybeEnableCycle(){this._config.ride&&(this._isSliding?P.one(this._element,et,(()=>this.cycle())):this.cycle())}to(t){const e=this._getItems();if(t>e.length-1||t<0)return;if(this._isSliding)return void P.one(this._element,et,(()=>this.to(t)));const i=this._getItemIndex(this._getActive());if(i===t)return;const n=t>i?G:J;this._slide(n,e[t])}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_configAfterMerge(t){return t.defaultInterval=t.interval,t}_addEventListeners(){this._config.keyboard&&P.on(this._element,"keydown.bs.carousel",(t=>this._keydown(t))),"hover"===this._config.pause&&(P.on(this._element,"mouseenter.bs.carousel",(()=>this.pause())),P.on(this._element,"mouseleave.bs.carousel",(()=>this._maybeEnableCycle()))),this._config.touch&&U.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(const t of Q.find(".carousel-item img",this._element))P.on(t,"dragstart.bs.carousel",(t=>t.preventDefault()));const t={leftCallback:()=>this._slide(this._directionToOrder(Z)),rightCallback:()=>this._slide(this._directionToOrder(tt)),endCallback:()=>{"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout((()=>this._maybeEnableCycle()),500+this._config.interval))}};this._swipeHelper=new U(this._element,t)}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const e=st[t.key];e&&(t.preventDefault(),this._slide(this._directionToOrder(e)))}_getItemIndex(t){return this._getItems().indexOf(t)}_setActiveIndicatorElement(t){if(!this._indicatorsElement)return;const e=Q.findOne(".active",this._indicatorsElement);e.classList.remove(nt),e.removeAttribute("aria-current");const i=Q.findOne(`[data-bs-slide-to="${t}"]`,this._indicatorsElement);i&&(i.classList.add(nt),i.setAttribute("aria-current","true"))}_updateInterval(){const t=this._activeElement||this._getActive();if(!t)return;const e=Number.parseInt(t.getAttribute("data-bs-interval"),10);this._config.interval=e||this._config.defaultInterval}_slide(t,e=null){if(this._isSliding)return;const i=this._getActive(),n=t===G,s=e||b(this._getItems(),i,n,this._config.wrap);if(s===i)return;const o=this._getItemIndex(s),r=e=>P.trigger(this._element,e,{relatedTarget:s,direction:this._orderToDirection(t),from:this._getItemIndex(i),to:o});if(r("slide.bs.carousel").defaultPrevented)return;if(!i||!s)return;const a=Boolean(this._interval);this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(o),this._activeElement=s;const l=n?"carousel-item-start":"carousel-item-end",c=n?"carousel-item-next":"carousel-item-prev";s.classList.add(c),d(s),i.classList.add(l),s.classList.add(l),this._queueCallback((()=>{s.classList.remove(l,c),s.classList.add(nt),i.classList.remove(nt,c,l),this._isSliding=!1,r(et)}),i,this._isAnimated()),a&&this.cycle()}_isAnimated(){return this._element.classList.contains("slide")}_getActive(){return Q.findOne(".active.carousel-item",this._element)}_getItems(){return Q.find(".carousel-item",this._element)}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=null)}_directionToOrder(t){return p()?t===Z?J:G:t===Z?G:J}_orderToDirection(t){return p()?t===J?Z:tt:t===J?tt:Z}static jQueryInterface(t){return this.each((function(){const e=at.getOrCreateInstance(this,t);if("number"!=typeof t){if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}else e.to(t)}))}}P.on(document,"click.bs.carousel.data-api","[data-bs-slide], [data-bs-slide-to]",(function(t){const e=n(this);if(!e||!e.classList.contains(it))return;t.preventDefault();const i=at.getOrCreateInstance(e),s=this.getAttribute("data-bs-slide-to");return s?(i.to(s),void i._maybeEnableCycle()):"next"===B.getDataAttribute(this,"slide")?(i.next(),void i._maybeEnableCycle()):(i.prev(),void i._maybeEnableCycle())})),P.on(window,"load.bs.carousel.data-api",(()=>{const t=Q.find('[data-bs-ride="carousel"]');for(const e of t)at.getOrCreateInstance(e)})),g(at);const lt="show",ct="collapse",ht="collapsing",dt='[data-bs-toggle="collapse"]',ut={parent:null,toggle:!0},ft={parent:"(null|element)",toggle:"boolean"};class pt extends z{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const n=Q.find(dt);for(const t of n){const e=i(t),n=Q.find(e).filter((t=>t===this._element));null!==e&&n.length&&this._triggerArray.push(t)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return ut}static get DefaultType(){return ft}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((t=>t!==this._element)).map((t=>pt.getOrCreateInstance(t,{toggle:!1})))),t.length&&t[0]._isTransitioning)return;if(P.trigger(this._element,"show.bs.collapse").defaultPrevented)return;for(const e of t)e.hide();const e=this._getDimension();this._element.classList.remove(ct),this._element.classList.add(ht),this._element.style[e]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const i=`scroll${e[0].toUpperCase()+e.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(ht),this._element.classList.add(ct,lt),this._element.style[e]="",P.trigger(this._element,"shown.bs.collapse")}),this._element,!0),this._element.style[e]=`${this._element[i]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(P.trigger(this._element,"hide.bs.collapse").defaultPrevented)return;const t=this._getDimension();this._element.style[t]=`${this._element.getBoundingClientRect()[t]}px`,d(this._element),this._element.classList.add(ht),this._element.classList.remove(ct,lt);for(const t of this._triggerArray){const e=n(t);e&&!this._isShown(e)&&this._addAriaAndCollapsedClass([t],!1)}this._isTransitioning=!0,this._element.style[t]="",this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(ht),this._element.classList.add(ct),P.trigger(this._element,"hidden.bs.collapse")}),this._element,!0)}_isShown(t=this._element){return t.classList.contains(lt)}_configAfterMerge(t){return t.toggle=Boolean(t.toggle),t.parent=r(t.parent),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(dt);for(const e of t){const t=n(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))}}_getFirstLevelChildren(t){const e=Q.find(":scope .collapse .collapse",this._config.parent);return Q.find(t,this._config.parent).filter((t=>!e.includes(t)))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const i of t)i.classList.toggle("collapsed",!e),i.setAttribute("aria-expanded",e)}static jQueryInterface(t){const e={};return"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1),this.each((function(){const i=pt.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t]()}}))}}P.on(document,"click.bs.collapse.data-api",dt,(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();const e=i(this),n=Q.find(e);for(const t of n)pt.getOrCreateInstance(t,{toggle:!1}).toggle()})),g(pt);var gt="top",mt="bottom",_t="right",bt="left",vt="auto",yt=[gt,mt,_t,bt],wt="start",At="end",Et="clippingParents",Tt="viewport",Ct="popper",Ot="reference",xt=yt.reduce((function(t,e){return t.concat([e+"-"+wt,e+"-"+At])}),[]),kt=[].concat(yt,[vt]).reduce((function(t,e){return t.concat([e,e+"-"+wt,e+"-"+At])}),[]),Lt="beforeRead",Dt="read",St="afterRead",It="beforeMain",Nt="main",Pt="afterMain",jt="beforeWrite",Mt="write",Ht="afterWrite",$t=[Lt,Dt,St,It,Nt,Pt,jt,Mt,Ht];function Wt(t){return t?(t.nodeName||"").toLowerCase():null}function Bt(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function Ft(t){return t instanceof Bt(t).Element||t instanceof Element}function zt(t){return t instanceof Bt(t).HTMLElement||t instanceof HTMLElement}function qt(t){return"undefined"!=typeof ShadowRoot&&(t instanceof Bt(t).ShadowRoot||t instanceof ShadowRoot)}const Rt={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach((function(t){var i=e.styles[t]||{},n=e.attributes[t]||{},s=e.elements[t];zt(s)&&Wt(s)&&(Object.assign(s.style,i),Object.keys(n).forEach((function(t){var e=n[t];!1===e?s.removeAttribute(t):s.setAttribute(t,!0===e?"":e)})))}))},effect:function(t){var e=t.state,i={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,i.popper),e.styles=i,e.elements.arrow&&Object.assign(e.elements.arrow.style,i.arrow),function(){Object.keys(e.elements).forEach((function(t){var n=e.elements[t],s=e.attributes[t]||{},o=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:i[t]).reduce((function(t,e){return t[e]="",t}),{});zt(n)&&Wt(n)&&(Object.assign(n.style,o),Object.keys(s).forEach((function(t){n.removeAttribute(t)})))}))}},requires:["computeStyles"]};function Vt(t){return t.split("-")[0]}var Kt=Math.max,Qt=Math.min,Xt=Math.round;function Yt(){var t=navigator.userAgentData;return null!=t&&t.brands?t.brands.map((function(t){return t.brand+"/"+t.version})).join(" "):navigator.userAgent}function Ut(){return!/^((?!chrome|android).)*safari/i.test(Yt())}function Gt(t,e,i){void 0===e&&(e=!1),void 0===i&&(i=!1);var n=t.getBoundingClientRect(),s=1,o=1;e&&zt(t)&&(s=t.offsetWidth>0&&Xt(n.width)/t.offsetWidth||1,o=t.offsetHeight>0&&Xt(n.height)/t.offsetHeight||1);var r=(Ft(t)?Bt(t):window).visualViewport,a=!Ut()&&i,l=(n.left+(a&&r?r.offsetLeft:0))/s,c=(n.top+(a&&r?r.offsetTop:0))/o,h=n.width/s,d=n.height/o;return{width:h,height:d,top:c,right:l+h,bottom:c+d,left:l,x:l,y:c}}function Jt(t){var e=Gt(t),i=t.offsetWidth,n=t.offsetHeight;return Math.abs(e.width-i)<=1&&(i=e.width),Math.abs(e.height-n)<=1&&(n=e.height),{x:t.offsetLeft,y:t.offsetTop,width:i,height:n}}function Zt(t,e){var i=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(i&&qt(i)){var n=e;do{if(n&&t.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function te(t){return Bt(t).getComputedStyle(t)}function ee(t){return["table","td","th"].indexOf(Wt(t))>=0}function ie(t){return((Ft(t)?t.ownerDocument:t.document)||window.document).documentElement}function ne(t){return"html"===Wt(t)?t:t.assignedSlot||t.parentNode||(qt(t)?t.host:null)||ie(t)}function se(t){return zt(t)&&"fixed"!==te(t).position?t.offsetParent:null}function oe(t){for(var e=Bt(t),i=se(t);i&&ee(i)&&"static"===te(i).position;)i=se(i);return i&&("html"===Wt(i)||"body"===Wt(i)&&"static"===te(i).position)?e:i||function(t){var e=/firefox/i.test(Yt());if(/Trident/i.test(Yt())&&zt(t)&&"fixed"===te(t).position)return null;var i=ne(t);for(qt(i)&&(i=i.host);zt(i)&&["html","body"].indexOf(Wt(i))<0;){var n=te(i);if("none"!==n.transform||"none"!==n.perspective||"paint"===n.contain||-1!==["transform","perspective"].indexOf(n.willChange)||e&&"filter"===n.willChange||e&&n.filter&&"none"!==n.filter)return i;i=i.parentNode}return null}(t)||e}function re(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function ae(t,e,i){return Kt(t,Qt(e,i))}function le(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function ce(t,e){return e.reduce((function(e,i){return e[i]=t,e}),{})}const he={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,i=t.state,n=t.name,s=t.options,o=i.elements.arrow,r=i.modifiersData.popperOffsets,a=Vt(i.placement),l=re(a),c=[bt,_t].indexOf(a)>=0?"height":"width";if(o&&r){var h=function(t,e){return le("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:ce(t,yt))}(s.padding,i),d=Jt(o),u="y"===l?gt:bt,f="y"===l?mt:_t,p=i.rects.reference[c]+i.rects.reference[l]-r[l]-i.rects.popper[c],g=r[l]-i.rects.reference[l],m=oe(o),_=m?"y"===l?m.clientHeight||0:m.clientWidth||0:0,b=p/2-g/2,v=h[u],y=_-d[c]-h[f],w=_/2-d[c]/2+b,A=ae(v,w,y),E=l;i.modifiersData[n]=((e={})[E]=A,e.centerOffset=A-w,e)}},effect:function(t){var e=t.state,i=t.options.element,n=void 0===i?"[data-popper-arrow]":i;null!=n&&("string"!=typeof n||(n=e.elements.popper.querySelector(n)))&&Zt(e.elements.popper,n)&&(e.elements.arrow=n)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function de(t){return t.split("-")[1]}var ue={top:"auto",right:"auto",bottom:"auto",left:"auto"};function fe(t){var e,i=t.popper,n=t.popperRect,s=t.placement,o=t.variation,r=t.offsets,a=t.position,l=t.gpuAcceleration,c=t.adaptive,h=t.roundOffsets,d=t.isFixed,u=r.x,f=void 0===u?0:u,p=r.y,g=void 0===p?0:p,m="function"==typeof h?h({x:f,y:g}):{x:f,y:g};f=m.x,g=m.y;var _=r.hasOwnProperty("x"),b=r.hasOwnProperty("y"),v=bt,y=gt,w=window;if(c){var A=oe(i),E="clientHeight",T="clientWidth";A===Bt(i)&&"static"!==te(A=ie(i)).position&&"absolute"===a&&(E="scrollHeight",T="scrollWidth"),(s===gt||(s===bt||s===_t)&&o===At)&&(y=mt,g-=(d&&A===w&&w.visualViewport?w.visualViewport.height:A[E])-n.height,g*=l?1:-1),s!==bt&&(s!==gt&&s!==mt||o!==At)||(v=_t,f-=(d&&A===w&&w.visualViewport?w.visualViewport.width:A[T])-n.width,f*=l?1:-1)}var C,O=Object.assign({position:a},c&&ue),x=!0===h?function(t){var e=t.x,i=t.y,n=window.devicePixelRatio||1;return{x:Xt(e*n)/n||0,y:Xt(i*n)/n||0}}({x:f,y:g}):{x:f,y:g};return f=x.x,g=x.y,l?Object.assign({},O,((C={})[y]=b?"0":"",C[v]=_?"0":"",C.transform=(w.devicePixelRatio||1)<=1?"translate("+f+"px, "+g+"px)":"translate3d("+f+"px, "+g+"px, 0)",C)):Object.assign({},O,((e={})[y]=b?g+"px":"",e[v]=_?f+"px":"",e.transform="",e))}const pe={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,i=t.options,n=i.gpuAcceleration,s=void 0===n||n,o=i.adaptive,r=void 0===o||o,a=i.roundOffsets,l=void 0===a||a,c={placement:Vt(e.placement),variation:de(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:s,isFixed:"fixed"===e.options.strategy};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,fe(Object.assign({},c,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:r,roundOffsets:l})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,fe(Object.assign({},c,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}};var ge={passive:!0};const me={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,i=t.instance,n=t.options,s=n.scroll,o=void 0===s||s,r=n.resize,a=void 0===r||r,l=Bt(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return o&&c.forEach((function(t){t.addEventListener("scroll",i.update,ge)})),a&&l.addEventListener("resize",i.update,ge),function(){o&&c.forEach((function(t){t.removeEventListener("scroll",i.update,ge)})),a&&l.removeEventListener("resize",i.update,ge)}},data:{}};var _e={left:"right",right:"left",bottom:"top",top:"bottom"};function be(t){return t.replace(/left|right|bottom|top/g,(function(t){return _e[t]}))}var ve={start:"end",end:"start"};function ye(t){return t.replace(/start|end/g,(function(t){return ve[t]}))}function we(t){var e=Bt(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function Ae(t){return Gt(ie(t)).left+we(t).scrollLeft}function Ee(t){var e=te(t),i=e.overflow,n=e.overflowX,s=e.overflowY;return/auto|scroll|overlay|hidden/.test(i+s+n)}function Te(t){return["html","body","#document"].indexOf(Wt(t))>=0?t.ownerDocument.body:zt(t)&&Ee(t)?t:Te(ne(t))}function Ce(t,e){var i;void 0===e&&(e=[]);var n=Te(t),s=n===(null==(i=t.ownerDocument)?void 0:i.body),o=Bt(n),r=s?[o].concat(o.visualViewport||[],Ee(n)?n:[]):n,a=e.concat(r);return s?a:a.concat(Ce(ne(r)))}function Oe(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function xe(t,e,i){return e===Tt?Oe(function(t,e){var i=Bt(t),n=ie(t),s=i.visualViewport,o=n.clientWidth,r=n.clientHeight,a=0,l=0;if(s){o=s.width,r=s.height;var c=Ut();(c||!c&&"fixed"===e)&&(a=s.offsetLeft,l=s.offsetTop)}return{width:o,height:r,x:a+Ae(t),y:l}}(t,i)):Ft(e)?function(t,e){var i=Gt(t,!1,"fixed"===e);return i.top=i.top+t.clientTop,i.left=i.left+t.clientLeft,i.bottom=i.top+t.clientHeight,i.right=i.left+t.clientWidth,i.width=t.clientWidth,i.height=t.clientHeight,i.x=i.left,i.y=i.top,i}(e,i):Oe(function(t){var e,i=ie(t),n=we(t),s=null==(e=t.ownerDocument)?void 0:e.body,o=Kt(i.scrollWidth,i.clientWidth,s?s.scrollWidth:0,s?s.clientWidth:0),r=Kt(i.scrollHeight,i.clientHeight,s?s.scrollHeight:0,s?s.clientHeight:0),a=-n.scrollLeft+Ae(t),l=-n.scrollTop;return"rtl"===te(s||i).direction&&(a+=Kt(i.clientWidth,s?s.clientWidth:0)-o),{width:o,height:r,x:a,y:l}}(ie(t)))}function ke(t){var e,i=t.reference,n=t.element,s=t.placement,o=s?Vt(s):null,r=s?de(s):null,a=i.x+i.width/2-n.width/2,l=i.y+i.height/2-n.height/2;switch(o){case gt:e={x:a,y:i.y-n.height};break;case mt:e={x:a,y:i.y+i.height};break;case _t:e={x:i.x+i.width,y:l};break;case bt:e={x:i.x-n.width,y:l};break;default:e={x:i.x,y:i.y}}var c=o?re(o):null;if(null!=c){var h="y"===c?"height":"width";switch(r){case wt:e[c]=e[c]-(i[h]/2-n[h]/2);break;case At:e[c]=e[c]+(i[h]/2-n[h]/2)}}return e}function Le(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=void 0===n?t.placement:n,o=i.strategy,r=void 0===o?t.strategy:o,a=i.boundary,l=void 0===a?Et:a,c=i.rootBoundary,h=void 0===c?Tt:c,d=i.elementContext,u=void 0===d?Ct:d,f=i.altBoundary,p=void 0!==f&&f,g=i.padding,m=void 0===g?0:g,_=le("number"!=typeof m?m:ce(m,yt)),b=u===Ct?Ot:Ct,v=t.rects.popper,y=t.elements[p?b:u],w=function(t,e,i,n){var s="clippingParents"===e?function(t){var e=Ce(ne(t)),i=["absolute","fixed"].indexOf(te(t).position)>=0&&zt(t)?oe(t):t;return Ft(i)?e.filter((function(t){return Ft(t)&&Zt(t,i)&&"body"!==Wt(t)})):[]}(t):[].concat(e),o=[].concat(s,[i]),r=o[0],a=o.reduce((function(e,i){var s=xe(t,i,n);return e.top=Kt(s.top,e.top),e.right=Qt(s.right,e.right),e.bottom=Qt(s.bottom,e.bottom),e.left=Kt(s.left,e.left),e}),xe(t,r,n));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}(Ft(y)?y:y.contextElement||ie(t.elements.popper),l,h,r),A=Gt(t.elements.reference),E=ke({reference:A,element:v,strategy:"absolute",placement:s}),T=Oe(Object.assign({},v,E)),C=u===Ct?T:A,O={top:w.top-C.top+_.top,bottom:C.bottom-w.bottom+_.bottom,left:w.left-C.left+_.left,right:C.right-w.right+_.right},x=t.modifiersData.offset;if(u===Ct&&x){var k=x[s];Object.keys(O).forEach((function(t){var e=[_t,mt].indexOf(t)>=0?1:-1,i=[gt,mt].indexOf(t)>=0?"y":"x";O[t]+=k[i]*e}))}return O}function De(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=i.boundary,o=i.rootBoundary,r=i.padding,a=i.flipVariations,l=i.allowedAutoPlacements,c=void 0===l?kt:l,h=de(n),d=h?a?xt:xt.filter((function(t){return de(t)===h})):yt,u=d.filter((function(t){return c.indexOf(t)>=0}));0===u.length&&(u=d);var f=u.reduce((function(e,i){return e[i]=Le(t,{placement:i,boundary:s,rootBoundary:o,padding:r})[Vt(i)],e}),{});return Object.keys(f).sort((function(t,e){return f[t]-f[e]}))}const Se={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name;if(!e.modifiersData[n]._skip){for(var s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0===r||r,l=i.fallbackPlacements,c=i.padding,h=i.boundary,d=i.rootBoundary,u=i.altBoundary,f=i.flipVariations,p=void 0===f||f,g=i.allowedAutoPlacements,m=e.options.placement,_=Vt(m),b=l||(_!==m&&p?function(t){if(Vt(t)===vt)return[];var e=be(t);return[ye(t),e,ye(e)]}(m):[be(m)]),v=[m].concat(b).reduce((function(t,i){return t.concat(Vt(i)===vt?De(e,{placement:i,boundary:h,rootBoundary:d,padding:c,flipVariations:p,allowedAutoPlacements:g}):i)}),[]),y=e.rects.reference,w=e.rects.popper,A=new Map,E=!0,T=v[0],C=0;C<v.length;C++){var O=v[C],x=Vt(O),k=de(O)===wt,L=[gt,mt].indexOf(x)>=0,D=L?"width":"height",S=Le(e,{placement:O,boundary:h,rootBoundary:d,altBoundary:u,padding:c}),I=L?k?_t:bt:k?mt:gt;y[D]>w[D]&&(I=be(I));var N=be(I),P=[];if(o&&P.push(S[x]<=0),a&&P.push(S[I]<=0,S[N]<=0),P.every((function(t){return t}))){T=O,E=!1;break}A.set(O,P)}if(E)for(var j=function(t){var e=v.find((function(e){var i=A.get(e);if(i)return i.slice(0,t).every((function(t){return t}))}));if(e)return T=e,"break"},M=p?3:1;M>0&&"break"!==j(M);M--);e.placement!==T&&(e.modifiersData[n]._skip=!0,e.placement=T,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function Ie(t,e,i){return void 0===i&&(i={x:0,y:0}),{top:t.top-e.height-i.y,right:t.right-e.width+i.x,bottom:t.bottom-e.height+i.y,left:t.left-e.width-i.x}}function Ne(t){return[gt,_t,mt,bt].some((function(e){return t[e]>=0}))}const Pe={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,i=t.name,n=e.rects.reference,s=e.rects.popper,o=e.modifiersData.preventOverflow,r=Le(e,{elementContext:"reference"}),a=Le(e,{altBoundary:!0}),l=Ie(r,n),c=Ie(a,s,o),h=Ne(l),d=Ne(c);e.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:h,hasPopperEscaped:d},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":h,"data-popper-escaped":d})}},je={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.offset,o=void 0===s?[0,0]:s,r=kt.reduce((function(t,i){return t[i]=function(t,e,i){var n=Vt(t),s=[bt,gt].indexOf(n)>=0?-1:1,o="function"==typeof i?i(Object.assign({},e,{placement:t})):i,r=o[0],a=o[1];return r=r||0,a=(a||0)*s,[bt,_t].indexOf(n)>=0?{x:a,y:r}:{x:r,y:a}}(i,e.rects,o),t}),{}),a=r[e.placement],l=a.x,c=a.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=l,e.modifiersData.popperOffsets.y+=c),e.modifiersData[n]=r}},Me={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,i=t.name;e.modifiersData[i]=ke({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})},data:{}},He={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0!==r&&r,l=i.boundary,c=i.rootBoundary,h=i.altBoundary,d=i.padding,u=i.tether,f=void 0===u||u,p=i.tetherOffset,g=void 0===p?0:p,m=Le(e,{boundary:l,rootBoundary:c,padding:d,altBoundary:h}),_=Vt(e.placement),b=de(e.placement),v=!b,y=re(_),w="x"===y?"y":"x",A=e.modifiersData.popperOffsets,E=e.rects.reference,T=e.rects.popper,C="function"==typeof g?g(Object.assign({},e.rects,{placement:e.placement})):g,O="number"==typeof C?{mainAxis:C,altAxis:C}:Object.assign({mainAxis:0,altAxis:0},C),x=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,k={x:0,y:0};if(A){if(o){var L,D="y"===y?gt:bt,S="y"===y?mt:_t,I="y"===y?"height":"width",N=A[y],P=N+m[D],j=N-m[S],M=f?-T[I]/2:0,H=b===wt?E[I]:T[I],$=b===wt?-T[I]:-E[I],W=e.elements.arrow,B=f&&W?Jt(W):{width:0,height:0},F=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},z=F[D],q=F[S],R=ae(0,E[I],B[I]),V=v?E[I]/2-M-R-z-O.mainAxis:H-R-z-O.mainAxis,K=v?-E[I]/2+M+R+q+O.mainAxis:$+R+q+O.mainAxis,Q=e.elements.arrow&&oe(e.elements.arrow),X=Q?"y"===y?Q.clientTop||0:Q.clientLeft||0:0,Y=null!=(L=null==x?void 0:x[y])?L:0,U=N+K-Y,G=ae(f?Qt(P,N+V-Y-X):P,N,f?Kt(j,U):j);A[y]=G,k[y]=G-N}if(a){var J,Z="x"===y?gt:bt,tt="x"===y?mt:_t,et=A[w],it="y"===w?"height":"width",nt=et+m[Z],st=et-m[tt],ot=-1!==[gt,bt].indexOf(_),rt=null!=(J=null==x?void 0:x[w])?J:0,at=ot?nt:et-E[it]-T[it]-rt+O.altAxis,lt=ot?et+E[it]+T[it]-rt-O.altAxis:st,ct=f&&ot?function(t,e,i){var n=ae(t,e,i);return n>i?i:n}(at,et,lt):ae(f?at:nt,et,f?lt:st);A[w]=ct,k[w]=ct-et}e.modifiersData[n]=k}},requiresIfExists:["offset"]};function $e(t,e,i){void 0===i&&(i=!1);var n,s,o=zt(e),r=zt(e)&&function(t){var e=t.getBoundingClientRect(),i=Xt(e.width)/t.offsetWidth||1,n=Xt(e.height)/t.offsetHeight||1;return 1!==i||1!==n}(e),a=ie(e),l=Gt(t,r,i),c={scrollLeft:0,scrollTop:0},h={x:0,y:0};return(o||!o&&!i)&&(("body"!==Wt(e)||Ee(a))&&(c=(n=e)!==Bt(n)&&zt(n)?{scrollLeft:(s=n).scrollLeft,scrollTop:s.scrollTop}:we(n)),zt(e)?((h=Gt(e,!0)).x+=e.clientLeft,h.y+=e.clientTop):a&&(h.x=Ae(a))),{x:l.left+c.scrollLeft-h.x,y:l.top+c.scrollTop-h.y,width:l.width,height:l.height}}function We(t){var e=new Map,i=new Set,n=[];function s(t){i.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach((function(t){if(!i.has(t)){var n=e.get(t);n&&s(n)}})),n.push(t)}return t.forEach((function(t){e.set(t.name,t)})),t.forEach((function(t){i.has(t.name)||s(t)})),n}var Be={placement:"bottom",modifiers:[],strategy:"absolute"};function Fe(){for(var t=arguments.length,e=new Array(t),i=0;i<t;i++)e[i]=arguments[i];return!e.some((function(t){return!(t&&"function"==typeof t.getBoundingClientRect)}))}function ze(t){void 0===t&&(t={});var e=t,i=e.defaultModifiers,n=void 0===i?[]:i,s=e.defaultOptions,o=void 0===s?Be:s;return function(t,e,i){void 0===i&&(i=o);var s,r,a={placement:"bottom",orderedModifiers:[],options:Object.assign({},Be,o),modifiersData:{},elements:{reference:t,popper:e},attributes:{},styles:{}},l=[],c=!1,h={state:a,setOptions:function(i){var s="function"==typeof i?i(a.options):i;d(),a.options=Object.assign({},o,a.options,s),a.scrollParents={reference:Ft(t)?Ce(t):t.contextElement?Ce(t.contextElement):[],popper:Ce(e)};var r,c,u=function(t){var e=We(t);return $t.reduce((function(t,i){return t.concat(e.filter((function(t){return t.phase===i})))}),[])}((r=[].concat(n,a.options.modifiers),c=r.reduce((function(t,e){var i=t[e.name];return t[e.name]=i?Object.assign({},i,e,{options:Object.assign({},i.options,e.options),data:Object.assign({},i.data,e.data)}):e,t}),{}),Object.keys(c).map((function(t){return c[t]}))));return a.orderedModifiers=u.filter((function(t){return t.enabled})),a.orderedModifiers.forEach((function(t){var e=t.name,i=t.options,n=void 0===i?{}:i,s=t.effect;if("function"==typeof s){var o=s({state:a,name:e,instance:h,options:n});l.push(o||function(){})}})),h.update()},forceUpdate:function(){if(!c){var t=a.elements,e=t.reference,i=t.popper;if(Fe(e,i)){a.rects={reference:$e(e,oe(i),"fixed"===a.options.strategy),popper:Jt(i)},a.reset=!1,a.placement=a.options.placement,a.orderedModifiers.forEach((function(t){return a.modifiersData[t.name]=Object.assign({},t.data)}));for(var n=0;n<a.orderedModifiers.length;n++)if(!0!==a.reset){var s=a.orderedModifiers[n],o=s.fn,r=s.options,l=void 0===r?{}:r,d=s.name;"function"==typeof o&&(a=o({state:a,options:l,name:d,instance:h})||a)}else a.reset=!1,n=-1}}},update:(s=function(){return new Promise((function(t){h.forceUpdate(),t(a)}))},function(){return r||(r=new Promise((function(t){Promise.resolve().then((function(){r=void 0,t(s())}))}))),r}),destroy:function(){d(),c=!0}};if(!Fe(t,e))return h;function d(){l.forEach((function(t){return t()})),l=[]}return h.setOptions(i).then((function(t){!c&&i.onFirstUpdate&&i.onFirstUpdate(t)})),h}}var qe=ze(),Re=ze({defaultModifiers:[me,Me,pe,Rt]}),Ve=ze({defaultModifiers:[me,Me,pe,Rt,je,Se,He,he,Pe]});const Ke=Object.freeze(Object.defineProperty({__proto__:null,popperGenerator:ze,detectOverflow:Le,createPopperBase:qe,createPopper:Ve,createPopperLite:Re,top:gt,bottom:mt,right:_t,left:bt,auto:vt,basePlacements:yt,start:wt,end:At,clippingParents:Et,viewport:Tt,popper:Ct,reference:Ot,variationPlacements:xt,placements:kt,beforeRead:Lt,read:Dt,afterRead:St,beforeMain:It,main:Nt,afterMain:Pt,beforeWrite:jt,write:Mt,afterWrite:Ht,modifierPhases:$t,applyStyles:Rt,arrow:he,computeStyles:pe,eventListeners:me,flip:Se,hide:Pe,offset:je,popperOffsets:Me,preventOverflow:He},Symbol.toStringTag,{value:"Module"})),Qe="dropdown",Xe="ArrowUp",Ye="ArrowDown",Ue="click.bs.dropdown.data-api",Ge="keydown.bs.dropdown.data-api",Je="show",Ze='[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)',ti=`${Ze}.show`,ei=".dropdown-menu",ii=p()?"top-end":"top-start",ni=p()?"top-start":"top-end",si=p()?"bottom-end":"bottom-start",oi=p()?"bottom-start":"bottom-end",ri=p()?"left-start":"right-start",ai=p()?"right-start":"left-start",li={autoClose:!0,boundary:"clippingParents",display:"dynamic",offset:[0,2],popperConfig:null,reference:"toggle"},ci={autoClose:"(boolean|string)",boundary:"(string|element)",display:"string",offset:"(array|string|function)",popperConfig:"(null|object|function)",reference:"(string|element|object)"};class hi extends z{constructor(t,e){super(t,e),this._popper=null,this._parent=this._element.parentNode,this._menu=Q.next(this._element,ei)[0]||Q.prev(this._element,ei)[0]||Q.findOne(ei,this._parent),this._inNavbar=this._detectNavbar()}static get Default(){return li}static get DefaultType(){return ci}static get NAME(){return Qe}toggle(){return this._isShown()?this.hide():this.show()}show(){if(l(this._element)||this._isShown())return;const t={relatedTarget:this._element};if(!P.trigger(this._element,"show.bs.dropdown",t).defaultPrevented){if(this._createPopper(),"ontouchstart"in document.documentElement&&!this._parent.closest(".navbar-nav"))for(const t of[].concat(...document.body.children))P.on(t,"mouseover",h);this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.add(Je),this._element.classList.add(Je),P.trigger(this._element,"shown.bs.dropdown",t)}}hide(){if(l(this._element)||!this._isShown())return;const t={relatedTarget:this._element};this._completeHide(t)}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_completeHide(t){if(!P.trigger(this._element,"hide.bs.dropdown",t).defaultPrevented){if("ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))P.off(t,"mouseover",h);this._popper&&this._popper.destroy(),this._menu.classList.remove(Je),this._element.classList.remove(Je),this._element.setAttribute("aria-expanded","false"),B.removeDataAttribute(this._menu,"popper"),P.trigger(this._element,"hidden.bs.dropdown",t)}}_getConfig(t){if("object"==typeof(t=super._getConfig(t)).reference&&!o(t.reference)&&"function"!=typeof t.reference.getBoundingClientRect)throw new TypeError(`${Qe.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);return t}_createPopper(){if(void 0===Ke)throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");let t=this._element;"parent"===this._config.reference?t=this._parent:o(this._config.reference)?t=r(this._config.reference):"object"==typeof this._config.reference&&(t=this._config.reference);const e=this._getPopperConfig();this._popper=Ve(t,this._menu,e)}_isShown(){return this._menu.classList.contains(Je)}_getPlacement(){const t=this._parent;if(t.classList.contains("dropend"))return ri;if(t.classList.contains("dropstart"))return ai;if(t.classList.contains("dropup-center"))return"top";if(t.classList.contains("dropdown-center"))return"bottom";const e="end"===getComputedStyle(this._menu).getPropertyValue("--bs-position").trim();return t.classList.contains("dropup")?e?ni:ii:e?oi:si}_detectNavbar(){return null!==this._element.closest(".navbar")}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return(this._inNavbar||"static"===this._config.display)&&(B.setDataAttribute(this._menu,"popper","static"),t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,..."function"==typeof this._config.popperConfig?this._config.popperConfig(t):this._config.popperConfig}}_selectMenuItem({key:t,target:e}){const i=Q.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter((t=>a(t)));i.length&&b(i,e,t===Ye,!i.includes(e)).focus()}static jQueryInterface(t){return this.each((function(){const e=hi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}static clearMenus(t){if(2===t.button||"keyup"===t.type&&"Tab"!==t.key)return;const e=Q.find(ti);for(const i of e){const e=hi.getInstance(i);if(!e||!1===e._config.autoClose)continue;const n=t.composedPath(),s=n.includes(e._menu);if(n.includes(e._element)||"inside"===e._config.autoClose&&!s||"outside"===e._config.autoClose&&s)continue;if(e._menu.contains(t.target)&&("keyup"===t.type&&"Tab"===t.key||/input|select|option|textarea|form/i.test(t.target.tagName)))continue;const o={relatedTarget:e._element};"click"===t.type&&(o.clickEvent=t),e._completeHide(o)}}static dataApiKeydownHandler(t){const e=/input|textarea/i.test(t.target.tagName),i="Escape"===t.key,n=[Xe,Ye].includes(t.key);if(!n&&!i)return;if(e&&!i)return;t.preventDefault();const s=this.matches(Ze)?this:Q.prev(this,Ze)[0]||Q.next(this,Ze)[0]||Q.findOne(Ze,t.delegateTarget.parentNode),o=hi.getOrCreateInstance(s);if(n)return t.stopPropagation(),o.show(),void o._selectMenuItem(t);o._isShown()&&(t.stopPropagation(),o.hide(),s.focus())}}P.on(document,Ge,Ze,hi.dataApiKeydownHandler),P.on(document,Ge,ei,hi.dataApiKeydownHandler),P.on(document,Ue,hi.clearMenus),P.on(document,"keyup.bs.dropdown.data-api",hi.clearMenus),P.on(document,Ue,Ze,(function(t){t.preventDefault(),hi.getOrCreateInstance(this).toggle()})),g(hi);const di=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",ui=".sticky-top",fi="padding-right",pi="margin-right";class gi{constructor(){this._element=document.body}getWidth(){const t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}hide(){const t=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,fi,(e=>e+t)),this._setElementAttributes(di,fi,(e=>e+t)),this._setElementAttributes(ui,pi,(e=>e-t))}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,fi),this._resetElementAttributes(di,fi),this._resetElementAttributes(ui,pi)}isOverflowing(){return this.getWidth()>0}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(t,e,i){const n=this.getWidth();this._applyManipulationCallback(t,(t=>{if(t!==this._element&&window.innerWidth>t.clientWidth+n)return;this._saveInitialAttribute(t,e);const s=window.getComputedStyle(t).getPropertyValue(e);t.style.setProperty(e,`${i(Number.parseFloat(s))}px`)}))}_saveInitialAttribute(t,e){const i=t.style.getPropertyValue(e);i&&B.setDataAttribute(t,e,i)}_resetElementAttributes(t,e){this._applyManipulationCallback(t,(t=>{const i=B.getDataAttribute(t,e);null!==i?(B.removeDataAttribute(t,e),t.style.setProperty(e,i)):t.style.removeProperty(e)}))}_applyManipulationCallback(t,e){if(o(t))e(t);else for(const i of Q.find(t,this._element))e(i)}}const mi="show",_i="mousedown.bs.backdrop",bi={className:"modal-backdrop",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:"body"},vi={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"};class yi extends F{constructor(t){super(),this._config=this._getConfig(t),this._isAppended=!1,this._element=null}static get Default(){return bi}static get DefaultType(){return vi}static get NAME(){return"backdrop"}show(t){if(!this._config.isVisible)return void m(t);this._append();const e=this._getElement();this._config.isAnimated&&d(e),e.classList.add(mi),this._emulateAnimation((()=>{m(t)}))}hide(t){this._config.isVisible?(this._getElement().classList.remove(mi),this._emulateAnimation((()=>{this.dispose(),m(t)}))):m(t)}dispose(){this._isAppended&&(P.off(this._element,_i),this._element.remove(),this._isAppended=!1)}_getElement(){if(!this._element){const t=document.createElement("div");t.className=this._config.className,this._config.isAnimated&&t.classList.add("fade"),this._element=t}return this._element}_configAfterMerge(t){return t.rootElement=r(t.rootElement),t}_append(){if(this._isAppended)return;const t=this._getElement();this._config.rootElement.append(t),P.on(t,_i,(()=>{m(this._config.clickCallback)})),this._isAppended=!0}_emulateAnimation(t){_(t,this._getElement(),this._config.isAnimated)}}const wi=".bs.focustrap",Ai="backward",Ei={autofocus:!0,trapElement:null},Ti={autofocus:"boolean",trapElement:"element"};class Ci extends F{constructor(t){super(),this._config=this._getConfig(t),this._isActive=!1,this._lastTabNavDirection=null}static get Default(){return Ei}static get DefaultType(){return Ti}static get NAME(){return"focustrap"}activate(){this._isActive||(this._config.autofocus&&this._config.trapElement.focus(),P.off(document,wi),P.on(document,"focusin.bs.focustrap",(t=>this._handleFocusin(t))),P.on(document,"keydown.tab.bs.focustrap",(t=>this._handleKeydown(t))),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,P.off(document,wi))}_handleFocusin(t){const{trapElement:e}=this._config;if(t.target===document||t.target===e||e.contains(t.target))return;const i=Q.focusableChildren(e);0===i.length?e.focus():this._lastTabNavDirection===Ai?i[i.length-1].focus():i[0].focus()}_handleKeydown(t){"Tab"===t.key&&(this._lastTabNavDirection=t.shiftKey?Ai:"forward")}}const Oi="hidden.bs.modal",xi="show.bs.modal",ki="modal-open",Li="show",Di="modal-static",Si={backdrop:!0,focus:!0,keyboard:!0},Ii={backdrop:"(boolean|string)",focus:"boolean",keyboard:"boolean"};class Ni extends z{constructor(t,e){super(t,e),this._dialog=Q.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new gi,this._addEventListeners()}static get Default(){return Si}static get DefaultType(){return Ii}static get NAME(){return"modal"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||P.trigger(this._element,xi,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(ki),this._adjustDialog(),this._backdrop.show((()=>this._showElement(t))))}hide(){this._isShown&&!this._isTransitioning&&(P.trigger(this._element,"hide.bs.modal").defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove(Li),this._queueCallback((()=>this._hideModal()),this._element,this._isAnimated())))}dispose(){for(const t of[window,this._dialog])P.off(t,".bs.modal");this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new yi({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new Ci({trapElement:this._element})}_showElement(t){document.body.contains(this._element)||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0;const e=Q.findOne(".modal-body",this._dialog);e&&(e.scrollTop=0),d(this._element),this._element.classList.add(Li),this._queueCallback((()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,P.trigger(this._element,"shown.bs.modal",{relatedTarget:t})}),this._dialog,this._isAnimated())}_addEventListeners(){P.on(this._element,"keydown.dismiss.bs.modal",(t=>{if("Escape"===t.key)return this._config.keyboard?(t.preventDefault(),void this.hide()):void this._triggerBackdropTransition()})),P.on(window,"resize.bs.modal",(()=>{this._isShown&&!this._isTransitioning&&this._adjustDialog()})),P.on(this._element,"mousedown.dismiss.bs.modal",(t=>{P.one(this._element,"click.dismiss.bs.modal",(e=>{this._element===t.target&&this._element===e.target&&("static"!==this._config.backdrop?this._config.backdrop&&this.hide():this._triggerBackdropTransition())}))}))}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide((()=>{document.body.classList.remove(ki),this._resetAdjustments(),this._scrollBar.reset(),P.trigger(this._element,Oi)}))}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(P.trigger(this._element,"hidePrevented.bs.modal").defaultPrevented)return;const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._element.style.overflowY;"hidden"===e||this._element.classList.contains(Di)||(t||(this._element.style.overflowY="hidden"),this._element.classList.add(Di),this._queueCallback((()=>{this._element.classList.remove(Di),this._queueCallback((()=>{this._element.style.overflowY=e}),this._dialog)}),this._dialog),this._element.focus())}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._scrollBar.getWidth(),i=e>0;if(i&&!t){const t=p()?"paddingLeft":"paddingRight";this._element.style[t]=`${e}px`}if(!i&&t){const t=p()?"paddingRight":"paddingLeft";this._element.style[t]=`${e}px`}}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(t,e){return this.each((function(){const i=Ni.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t](e)}}))}}P.on(document,"click.bs.modal.data-api",'[data-bs-toggle="modal"]',(function(t){const e=n(this);["A","AREA"].includes(this.tagName)&&t.preventDefault(),P.one(e,xi,(t=>{t.defaultPrevented||P.one(e,Oi,(()=>{a(this)&&this.focus()}))}));const i=Q.findOne(".modal.show");i&&Ni.getInstance(i).hide(),Ni.getOrCreateInstance(e).toggle(this)})),q(Ni),g(Ni);const Pi="show",ji="showing",Mi="hiding",Hi=".offcanvas.show",$i="hidePrevented.bs.offcanvas",Wi="hidden.bs.offcanvas",Bi={backdrop:!0,keyboard:!0,scroll:!1},Fi={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class zi extends z{constructor(t,e){super(t,e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return Bi}static get DefaultType(){return Fi}static get NAME(){return"offcanvas"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||P.trigger(this._element,"show.bs.offcanvas",{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._backdrop.show(),this._config.scroll||(new gi).hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(ji),this._queueCallback((()=>{this._config.scroll&&!this._config.backdrop||this._focustrap.activate(),this._element.classList.add(Pi),this._element.classList.remove(ji),P.trigger(this._element,"shown.bs.offcanvas",{relatedTarget:t})}),this._element,!0))}hide(){this._isShown&&(P.trigger(this._element,"hide.bs.offcanvas").defaultPrevented||(this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add(Mi),this._backdrop.hide(),this._queueCallback((()=>{this._element.classList.remove(Pi,Mi),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._config.scroll||(new gi).reset(),P.trigger(this._element,Wi)}),this._element,!0)))}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){const t=Boolean(this._config.backdrop);return new yi({className:"offcanvas-backdrop",isVisible:t,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:t?()=>{"static"!==this._config.backdrop?this.hide():P.trigger(this._element,$i)}:null})}_initializeFocusTrap(){return new Ci({trapElement:this._element})}_addEventListeners(){P.on(this._element,"keydown.dismiss.bs.offcanvas",(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():P.trigger(this._element,$i))}))}static jQueryInterface(t){return this.each((function(){const e=zi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}P.on(document,"click.bs.offcanvas.data-api",'[data-bs-toggle="offcanvas"]',(function(t){const e=n(this);if(["A","AREA"].includes(this.tagName)&&t.preventDefault(),l(this))return;P.one(e,Wi,(()=>{a(this)&&this.focus()}));const i=Q.findOne(Hi);i&&i!==e&&zi.getInstance(i).hide(),zi.getOrCreateInstance(e).toggle(this)})),P.on(window,"load.bs.offcanvas.data-api",(()=>{for(const t of Q.find(Hi))zi.getOrCreateInstance(t).show()})),P.on(window,"resize.bs.offcanvas",(()=>{for(const t of Q.find("[aria-modal][class*=show][class*=offcanvas-]"))"fixed"!==getComputedStyle(t).position&&zi.getOrCreateInstance(t).hide()})),q(zi),g(zi);const qi=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),Ri=/^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i,Vi=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i,Ki=(t,e)=>{const i=t.nodeName.toLowerCase();return e.includes(i)?!qi.has(i)||Boolean(Ri.test(t.nodeValue)||Vi.test(t.nodeValue)):e.filter((t=>t instanceof RegExp)).some((t=>t.test(i)))},Qi={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},Xi={allowList:Qi,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"<div></div>"},Yi={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},Ui={entry:"(string|element|function|null)",selector:"(string|element)"};class Gi extends F{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return Xi}static get DefaultType(){return Yi}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map((t=>this._resolvePossibleFunction(t))).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(t){return this._checkContent(t),this._config.content={...this._config.content,...t},this}toHtml(){const t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(const[e,i]of Object.entries(this._config.content))this._setContent(t,i,e);const e=t.children[0],i=this._resolvePossibleFunction(this._config.extraClass);return i&&e.classList.add(...i.split(" ")),e}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[e,i]of Object.entries(t))super._typeCheckConfig({selector:e,entry:i},Ui)}_setContent(t,e,i){const n=Q.findOne(i,t);n&&((e=this._resolvePossibleFunction(e))?o(e)?this._putElementInTemplate(r(e),n):this._config.html?n.innerHTML=this._maybeSanitize(e):n.textContent=e:n.remove())}_maybeSanitize(t){return this._config.sanitize?function(t,e,i){if(!t.length)return t;if(i&&"function"==typeof i)return i(t);const n=(new window.DOMParser).parseFromString(t,"text/html"),s=[].concat(...n.body.querySelectorAll("*"));for(const t of s){const i=t.nodeName.toLowerCase();if(!Object.keys(e).includes(i)){t.remove();continue}const n=[].concat(...t.attributes),s=[].concat(e["*"]||[],e[i]||[]);for(const e of n)Ki(e,s)||t.removeAttribute(e.nodeName)}return n.body.innerHTML}(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return"function"==typeof t?t(this):t}_putElementInTemplate(t,e){if(this._config.html)return e.innerHTML="",void e.append(t);e.textContent=t.textContent}}const Ji=new Set(["sanitize","allowList","sanitizeFn"]),Zi="fade",tn="show",en=".modal",nn="hide.bs.modal",sn="hover",on="focus",rn={AUTO:"auto",TOP:"top",RIGHT:p()?"left":"right",BOTTOM:"bottom",LEFT:p()?"right":"left"},an={allowList:Qi,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,0],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',title:"",trigger:"hover focus"},ln={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class cn extends z{constructor(t,e){if(void 0===Ke)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t,e),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return an}static get DefaultType(){return ln}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),P.off(this._element.closest(en),nn,this._hideModalHandler),this.tip&&this.tip.remove(),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const t=P.trigger(this._element,this.constructor.eventName("show")),e=(c(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!e)return;this.tip&&(this.tip.remove(),this.tip=null);const i=this._getTipElement();this._element.setAttribute("aria-describedby",i.getAttribute("id"));const{container:n}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(n.append(i),P.trigger(this._element,this.constructor.eventName("inserted"))),this._popper?this._popper.update():this._popper=this._createPopper(i),i.classList.add(tn),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))P.on(t,"mouseover",h);this._queueCallback((()=>{P.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(!this._isShown())return;if(P.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented)return;const t=this._getTipElement();if(t.classList.remove(tn),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))P.off(t,"mouseover",h);this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1,this._isHovered=null,this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||t.remove(),this._element.removeAttribute("aria-describedby"),P.trigger(this._element,this.constructor.eventName("hidden")),this._disposePopper())}),this.tip,this._isAnimated())}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){const e=this._getTemplateFactory(t).toHtml();if(!e)return null;e.classList.remove(Zi,tn),e.classList.add(`bs-${this.constructor.NAME}-auto`);const i=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME).toString();return e.setAttribute("id",i),this._isAnimated()&&e.classList.add(Zi),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new Gi({...this._config,content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{".tooltip-inner":this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(Zi)}_isShown(){return this.tip&&this.tip.classList.contains(tn)}_createPopper(t){const e="function"==typeof this._config.placement?this._config.placement.call(this,t,this._element):this._config.placement,i=rn[e.toUpperCase()];return Ve(this._element,t,this._getPopperConfig(i))}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_resolvePossibleFunction(t){return"function"==typeof t?t.call(this._element):t}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:t=>{this._getTipElement().setAttribute("data-popper-placement",t.state.placement)}}]};return{...e,..."function"==typeof this._config.popperConfig?this._config.popperConfig(e):this._config.popperConfig}}_setListeners(){const t=this._config.trigger.split(" ");for(const e of t)if("click"===e)P.on(this._element,this.constructor.eventName("click"),this._config.selector,(t=>{this._initializeOnDelegatedTarget(t).toggle()}));else if("manual"!==e){const t=e===sn?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),i=e===sn?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");P.on(this._element,t,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusin"===t.type?on:sn]=!0,e._enter()})),P.on(this._element,i,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusout"===t.type?on:sn]=e._element.contains(t.relatedTarget),e._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},P.on(this._element.closest(en),nn,this._hideModalHandler)}_fixTitle(){const t=this._element.getAttribute("title");t&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",t),this._element.setAttribute("data-bs-original-title",t),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((()=>{this._isHovered&&this.show()}),this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((()=>{this._isHovered||this.hide()}),this._config.delay.hide))}_setTimeout(t,e){clearTimeout(this._timeout),this._timeout=setTimeout(t,e)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){const e=B.getDataAttributes(this._element);for(const t of Object.keys(e))Ji.has(t)&&delete e[t];return t={...e,..."object"==typeof t&&t?t:{}},t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=!1===t.container?document.body:r(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),t}_getDelegateConfig(){const t={};for(const e in this._config)this.constructor.Default[e]!==this._config[e]&&(t[e]=this._config[e]);return t.selector=!1,t.trigger="manual",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null)}static jQueryInterface(t){return this.each((function(){const e=cn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}g(cn);const hn={...cn.Default,content:"",offset:[0,8],placement:"right",template:'<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>',trigger:"click"},dn={...cn.DefaultType,content:"(null|string|element|function)"};class un extends cn{static get Default(){return hn}static get DefaultType(){return dn}static get NAME(){return"popover"}_isWithContent(){return this._getTitle()||this._getContent()}_getContentForTemplate(){return{".popover-header":this._getTitle(),".popover-body":this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}static jQueryInterface(t){return this.each((function(){const e=un.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}g(un);const fn="click.bs.scrollspy",pn="active",gn="[href]",mn={offset:null,rootMargin:"0px 0px -25%",smoothScroll:!1,target:null,threshold:[.1,.5,1]},_n={offset:"(number|null)",rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"};class bn extends z{constructor(t,e){super(t,e),this._targetLinks=new Map,this._observableSections=new Map,this._rootElement="visible"===getComputedStyle(this._element).overflowY?null:this._element,this._activeTarget=null,this._observer=null,this._previousScrollData={visibleEntryTop:0,parentScrollTop:0},this.refresh()}static get Default(){return mn}static get DefaultType(){return _n}static get NAME(){return"scrollspy"}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();for(const t of this._observableSections.values())this._observer.observe(t)}dispose(){this._observer.disconnect(),super.dispose()}_configAfterMerge(t){return t.target=r(t.target)||document.body,t.rootMargin=t.offset?`${t.offset}px 0px -30%`:t.rootMargin,"string"==typeof t.threshold&&(t.threshold=t.threshold.split(",").map((t=>Number.parseFloat(t)))),t}_maybeEnableSmoothScroll(){this._config.smoothScroll&&(P.off(this._config.target,fn),P.on(this._config.target,fn,gn,(t=>{const e=this._observableSections.get(t.target.hash);if(e){t.preventDefault();const i=this._rootElement||window,n=e.offsetTop-this._element.offsetTop;if(i.scrollTo)return void i.scrollTo({top:n,behavior:"smooth"});i.scrollTop=n}})))}_getNewObserver(){const t={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver((t=>this._observerCallback(t)),t)}_observerCallback(t){const e=t=>this._targetLinks.get(`#${t.target.id}`),i=t=>{this._previousScrollData.visibleEntryTop=t.target.offsetTop,this._process(e(t))},n=(this._rootElement||document.documentElement).scrollTop,s=n>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=n;for(const o of t){if(!o.isIntersecting){this._activeTarget=null,this._clearActiveClass(e(o));continue}const t=o.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(s&&t){if(i(o),!n)return}else s||t||i(o)}}_initializeTargetsAndObservables(){this._targetLinks=new Map,this._observableSections=new Map;const t=Q.find(gn,this._config.target);for(const e of t){if(!e.hash||l(e))continue;const t=Q.findOne(e.hash,this._element);a(t)&&(this._targetLinks.set(e.hash,e),this._observableSections.set(e.hash,t))}}_process(t){this._activeTarget!==t&&(this._clearActiveClass(this._config.target),this._activeTarget=t,t.classList.add(pn),this._activateParents(t),P.trigger(this._element,"activate.bs.scrollspy",{relatedTarget:t}))}_activateParents(t){if(t.classList.contains("dropdown-item"))Q.findOne(".dropdown-toggle",t.closest(".dropdown")).classList.add(pn);else for(const e of Q.parents(t,".nav, .list-group"))for(const t of Q.prev(e,".nav-link, .nav-item > .nav-link, .list-group-item"))t.classList.add(pn)}_clearActiveClass(t){t.classList.remove(pn);const e=Q.find("[href].active",t);for(const t of e)t.classList.remove(pn)}static jQueryInterface(t){return this.each((function(){const e=bn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}P.on(window,"load.bs.scrollspy.data-api",(()=>{for(const t of Q.find('[data-bs-spy="scroll"]'))bn.getOrCreateInstance(t)})),g(bn);const vn="ArrowLeft",yn="ArrowRight",wn="ArrowUp",An="ArrowDown",En="active",Tn="fade",Cn="show",On='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',xn=`.nav-link:not(.dropdown-toggle), .list-group-item:not(.dropdown-toggle), [role="tab"]:not(.dropdown-toggle), ${On}`;class kn extends z{constructor(t){super(t),this._parent=this._element.closest('.list-group, .nav, [role="tablist"]'),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),P.on(this._element,"keydown.bs.tab",(t=>this._keydown(t))))}static get NAME(){return"tab"}show(){const t=this._element;if(this._elemIsActive(t))return;const e=this._getActiveElem(),i=e?P.trigger(e,"hide.bs.tab",{relatedTarget:t}):null;P.trigger(t,"show.bs.tab",{relatedTarget:e}).defaultPrevented||i&&i.defaultPrevented||(this._deactivate(e,t),this._activate(t,e))}_activate(t,e){t&&(t.classList.add(En),this._activate(n(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.removeAttribute("tabindex"),t.setAttribute("aria-selected",!0),this._toggleDropDown(t,!0),P.trigger(t,"shown.bs.tab",{relatedTarget:e})):t.classList.add(Cn)}),t,t.classList.contains(Tn)))}_deactivate(t,e){t&&(t.classList.remove(En),t.blur(),this._deactivate(n(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.setAttribute("aria-selected",!1),t.setAttribute("tabindex","-1"),this._toggleDropDown(t,!1),P.trigger(t,"hidden.bs.tab",{relatedTarget:e})):t.classList.remove(Cn)}),t,t.classList.contains(Tn)))}_keydown(t){if(![vn,yn,wn,An].includes(t.key))return;t.stopPropagation(),t.preventDefault();const e=[yn,An].includes(t.key),i=b(this._getChildren().filter((t=>!l(t))),t.target,e,!0);i&&(i.focus({preventScroll:!0}),kn.getOrCreateInstance(i).show())}_getChildren(){return Q.find(xn,this._parent)}_getActiveElem(){return this._getChildren().find((t=>this._elemIsActive(t)))||null}_setInitialAttributes(t,e){this._setAttributeIfNotExists(t,"role","tablist");for(const t of e)this._setInitialAttributesOnChild(t)}_setInitialAttributesOnChild(t){t=this._getInnerElement(t);const e=this._elemIsActive(t),i=this._getOuterElement(t);t.setAttribute("aria-selected",e),i!==t&&this._setAttributeIfNotExists(i,"role","presentation"),e||t.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(t,"role","tab"),this._setInitialAttributesOnTargetPanel(t)}_setInitialAttributesOnTargetPanel(t){const e=n(t);e&&(this._setAttributeIfNotExists(e,"role","tabpanel"),t.id&&this._setAttributeIfNotExists(e,"aria-labelledby",`#${t.id}`))}_toggleDropDown(t,e){const i=this._getOuterElement(t);if(!i.classList.contains("dropdown"))return;const n=(t,n)=>{const s=Q.findOne(t,i);s&&s.classList.toggle(n,e)};n(".dropdown-toggle",En),n(".dropdown-menu",Cn),i.setAttribute("aria-expanded",e)}_setAttributeIfNotExists(t,e,i){t.hasAttribute(e)||t.setAttribute(e,i)}_elemIsActive(t){return t.classList.contains(En)}_getInnerElement(t){return t.matches(xn)?t:Q.findOne(xn,t)}_getOuterElement(t){return t.closest(".nav-item, .list-group-item")||t}static jQueryInterface(t){return this.each((function(){const e=kn.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}P.on(document,"click.bs.tab",On,(function(t){["A","AREA"].includes(this.tagName)&&t.preventDefault(),l(this)||kn.getOrCreateInstance(this).show()})),P.on(window,"load.bs.tab",(()=>{for(const t of Q.find('.active[data-bs-toggle="tab"], .active[data-bs-toggle="pill"], .active[data-bs-toggle="list"]'))kn.getOrCreateInstance(t)})),g(kn);const Ln="hide",Dn="show",Sn="showing",In={animation:"boolean",autohide:"boolean",delay:"number"},Nn={animation:!0,autohide:!0,delay:5e3};class Pn extends z{constructor(t,e){super(t,e),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return Nn}static get DefaultType(){return In}static get NAME(){return"toast"}show(){P.trigger(this._element,"show.bs.toast").defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove(Ln),d(this._element),this._element.classList.add(Dn,Sn),this._queueCallback((()=>{this._element.classList.remove(Sn),P.trigger(this._element,"shown.bs.toast"),this._maybeScheduleHide()}),this._element,this._config.animation))}hide(){this.isShown()&&(P.trigger(this._element,"hide.bs.toast").defaultPrevented||(this._element.classList.add(Sn),this._queueCallback((()=>{this._element.classList.add(Ln),this._element.classList.remove(Sn,Dn),P.trigger(this._element,"hidden.bs.toast")}),this._element,this._config.animation)))}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(Dn),super.dispose()}isShown(){return this._element.classList.contains(Dn)}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout((()=>{this.hide()}),this._config.delay)))}_onInteraction(t,e){switch(t.type){case"mouseover":case"mouseout":this._hasMouseInteraction=e;break;case"focusin":case"focusout":this._hasKeyboardInteraction=e}if(e)return void this._clearTimeout();const i=t.relatedTarget;this._element===i||this._element.contains(i)||this._maybeScheduleHide()}_setListeners(){P.on(this._element,"mouseover.bs.toast",(t=>this._onInteraction(t,!0))),P.on(this._element,"mouseout.bs.toast",(t=>this._onInteraction(t,!1))),P.on(this._element,"focusin.bs.toast",(t=>this._onInteraction(t,!0))),P.on(this._element,"focusout.bs.toast",(t=>this._onInteraction(t,!1)))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each((function(){const e=Pn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}return q(Pn),g(Pn),{Alert:R,Button:K,Carousel:at,Collapse:pt,Dropdown:hi,Modal:Ni,Offcanvas:zi,Popover:un,ScrollSpy:bn,Tab:kn,Toast:Pn,Tooltip:cn}}));
+//# sourceMappingURL=bootstrap.bundle.min.js.map
\ No newline at end of file
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/package.json
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/package.json	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/package.json	(revision 3762)
@@ -0,0 +1,116 @@
+{
+  "name": "bootstrap",
+  "description": "The most popular front-end framework for developing responsive, mobile first projects on the web.",
+  "version": "5.2.2",
+  "config": {
+    "version_short": "5.2"
+  },
+  "keywords": ["css", "sass", "mobile-first", "responsive", "front-end", "framework", "web"],
+  "homepage": "https://getbootstrap.com/",
+  "author": "The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)",
+  "contributors": "Twitter, Inc.",
+  "license": "MIT",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/twbs/bootstrap.git"
+  },
+  "bugs": {
+    "url": "https://github.com/twbs/bootstrap/issues"
+  },
+  "funding": [
+    {
+      "type": "github",
+      "url": "https://github.com/sponsors/twbs"
+    },
+    {
+      "type": "opencollective",
+      "url": "https://opencollective.com/bootstrap"
+    }
+  ],
+  "main": "dist/js/bootstrap.js",
+  "module": "dist/js/bootstrap.esm.js",
+  "sass": "scss/bootstrap.scss",
+  "style": "dist/css/bootstrap.css",
+  "scripts": {
+    "start": "npm-run-all --parallel watch docs-serve",
+    "bundlewatch": "bundlewatch --config .bundlewatch.config.json",
+    "css": "npm-run-all css-compile css-prefix css-rtl css-minify",
+    "css-compile": "sass --style expanded --source-map --embed-sources --no-error-css scss/:dist/css/",
+    "css-rtl": "cross-env NODE_ENV=RTL postcss --config build/postcss.config.js --dir \"dist/css\" --ext \".rtl.css\" \"dist/css/*.css\" \"!dist/css/*.min.css\" \"!dist/css/*.rtl.css\"",
+    "css-lint": "npm-run-all --aggregate-output --continue-on-error --parallel css-lint-*",
+    "css-lint-stylelint": "stylelint \"**/*.{css,scss}\" --cache --cache-location .cache/.stylelintcache --rd",
+    "css-lint-vars": "fusv scss/ site/assets/scss/",
+    "css-minify": "npm-run-all --aggregate-output --parallel css-minify-*",
+    "css-minify-main": "cleancss -O1 --format breakWith=lf --with-rebase --source-map --source-map-inline-sources --output dist/css/ --batch --batch-suffix \".min\" \"dist/css/*.css\" \"!dist/css/*.min.css\" \"!dist/css/*rtl*.css\"",
+    "css-minify-rtl": "cleancss -O1 --format breakWith=lf --with-rebase --source-map --source-map-inline-sources --output dist/css/ --batch --batch-suffix \".min\" \"dist/css/*rtl.css\" \"!dist/css/*.min.css\"",
+    "css-prefix": "npm-run-all --aggregate-output --parallel css-prefix-*",
+    "css-prefix-main": "postcss --config build/postcss.config.js --replace \"dist/css/*.css\" \"!dist/css/*.rtl*.css\" \"!dist/css/*.min.css\"",
+    "css-prefix-examples": "postcss --config build/postcss.config.js --replace \"site/content/**/*.css\"",
+    "css-prefix-examples-rtl": "cross-env-shell NODE_ENV=RTL postcss --config build/postcss.config.js --dir \"site/content/docs/$npm_package_config_version_short/examples/\" --ext \".rtl.css\" --base \"site/content/docs/$npm_package_config_version_short/examples/\" \"site/content/docs/$npm_package_config_version_short/examples/{blog,carousel,dashboard,cheatsheet}/*.css\" \"!site/content/docs/$npm_package_config_version_short/examples/{blog,carousel,dashboard,cheatsheet}/*.rtl.css\"",
+    "js": "npm-run-all js-compile js-minify",
+    "js-compile": "npm-run-all --aggregate-output --parallel js-compile-*",
+    "js-compile-standalone": "rollup --environment BUNDLE:false --config build/rollup.config.js --sourcemap",
+    "js-compile-standalone-esm": "rollup --environment ESM:true,BUNDLE:false --config build/rollup.config.js --sourcemap",
+    "js-compile-bundle": "rollup --environment BUNDLE:true --config build/rollup.config.js --sourcemap",
+    "js-compile-plugins": "node build/build-plugins.js",
+    "js-lint": "eslint --cache --cache-location .cache/.eslintcache --report-unused-disable-directives --ext .html,.js .",
+    "js-minify": "npm-run-all --aggregate-output --parallel js-minify-*",
+    "js-minify-standalone": "terser --compress passes=2 --mangle --comments \"/^!/\" --source-map \"content=dist/js/bootstrap.js.map,includeSources,url=bootstrap.min.js.map\" --output dist/js/bootstrap.min.js dist/js/bootstrap.js",
+    "js-minify-standalone-esm": "terser --compress passes=2 --mangle --comments \"/^!/\" --source-map \"content=dist/js/bootstrap.esm.js.map,includeSources,url=bootstrap.esm.min.js.map\" --output dist/js/bootstrap.esm.min.js dist/js/bootstrap.esm.js",
+    "js-minify-bundle": "terser --compress passes=2 --mangle --comments \"/^!/\" --source-map \"content=dist/js/bootstrap.bundle.js.map,includeSources,url=bootstrap.bundle.min.js.map\" --output dist/js/bootstrap.bundle.min.js dist/js/bootstrap.bundle.js",
+    "js-test": "npm-run-all --aggregate-output --parallel js-test-karma js-test-jquery js-test-integration-*",
+    "js-debug": "cross-env DEBUG=true npm run js-test-karma",
+    "js-test-karma": "karma start js/tests/karma.conf.js",
+    "js-test-integration-bundle": "rollup --config js/tests/integration/rollup.bundle.js",
+    "js-test-integration-modularity": "rollup --config js/tests/integration/rollup.bundle-modularity.js",
+    "js-test-cloud": "cross-env BROWSERSTACK=true npm run js-test-karma",
+    "js-test-jquery": "cross-env JQUERY=true npm run js-test-karma",
+    "lint": "npm-run-all --aggregate-output --continue-on-error --parallel js-lint css-lint lockfile-lint",
+    "docs": "npm-run-all docs-build docs-lint",
+    "docs-build": "hugo --cleanDestinationDir",
+    "docs-compile": "npm run docs-build",
+    "docs-vnu": "node build/vnu-jar.js",
+    "docs-lint": "npm run docs-vnu",
+    "docs-serve": "hugo server --port 9001 --disableFastRender",
+    "docs-serve-only": "npx sirv-cli _site --port 9001",
+    "lockfile-lint": "lockfile-lint --allowed-hosts npm --allowed-schemes https: --empty-hostname false --type npm --path package-lock.json",
+    "update-deps": "ncu -u -x globby,karma-browserstack-launcher,karma-rollup-preprocessor && echo Manually update site/assets/js/vendor",
+    "release": "npm-run-all dist release-sri docs-build release-zip*",
+    "release-sri": "node build/generate-sri.js",
+    "release-version": "node build/change-version.js",
+    "release-zip": "cross-env-shell \"rm -rf bootstrap-$npm_package_version-dist && cp -r dist/ bootstrap-$npm_package_version-dist && zip -r9 bootstrap-$npm_package_version-dist.zip bootstrap-$npm_package_version-dist && rm -rf bootstrap-$npm_package_version-dist\"",
+    "release-zip-examples": "node build/zip-examples.js",
+    "dist": "npm-run-all --aggregate-output --parallel css js",
+    "test": "npm-run-all lint dist js-test docs-build docs-lint",
+    "netlify": "cross-env-shell HUGO_BASEURL=$DEPLOY_PRIME_URL npm-run-all dist release-sri docs-build",
+    "watch": "npm-run-all --parallel watch-*",
+    "watch-css-main": "nodemon --watch scss/ --ext scss --exec \"npm-run-all css-lint css-compile css-prefix\"",
+    "watch-css-dist": "nodemon --watch dist/css/ --ext css --ignore \"dist/css/*.rtl.*\" --exec \"npm run css-rtl\"",
+    "watch-css-docs": "nodemon --watch site/assets/scss/ --ext scss --exec \"npm run css-lint\"",
+    "watch-js-main": "nodemon --watch js/src/ --ext js --exec \"npm-run-all js-lint js-compile\"",
+    "watch-js-docs": "nodemon --watch site/assets/js/ --ext js --exec \"npm run js-lint\""
+  },
+  "peerDependencies": {
+    "@popperjs/core": "^2.11.6"
+  },
+  "files": ["dist/{css,js}/*.{css,js,map}", "js/{src,dist}/**/*.{js,map}", "scss/**/*.scss"],
+  "hugo-bin": {
+    "buildTags": "extended"
+  },
+  "jspm": {
+    "registry": "npm",
+    "main": "js/bootstrap",
+    "directories": {
+      "lib": "dist"
+    },
+    "shim": {
+      "js/bootstrap": {
+        "deps": "@popperjs/core"
+      }
+    },
+    "dependencies": {},
+    "peerDependencies": {
+      "@popperjs/core": "^2.11.6"
+    }
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_resize.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_resize.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_resize.scss	(revision 3762)
@@ -0,0 +1,6 @@
+// Resize anything
+
+@mixin resizable($direction) {
+  overflow: auto; // Per CSS3 UI, `resize` only applies when `overflow` isn't `visible`
+  resize: $direction; // Options: horizontal, vertical, both
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_visually-hidden.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_visually-hidden.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_visually-hidden.scss	(revision 3762)
@@ -0,0 +1,29 @@
+// stylelint-disable declaration-no-important
+
+// Hide content visually while keeping it accessible to assistive technologies
+//
+// See: https://www.a11yproject.com/posts/2013-01-11-how-to-hide-content/
+// See: https://kittygiraudel.com/2016/10/13/css-hide-and-seek/
+
+@mixin visually-hidden() {
+  position: absolute !important;
+  width: 1px !important;
+  height: 1px !important;
+  padding: 0 !important;
+  margin: -1px !important; // Fix for https://github.com/twbs/bootstrap/issues/25686
+  overflow: hidden !important;
+  clip: rect(0, 0, 0, 0) !important;
+  white-space: nowrap !important;
+  border: 0 !important;
+}
+
+// Use to only display content when it's focused, or one of its child elements is focused
+// (i.e. when focus is within the element/container that the class was applied to)
+//
+// Useful for "Skip to main content" links; see https://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1
+
+@mixin visually-hidden-focusable() {
+  &:not(:focus):not(:focus-within) {
+    @include visually-hidden();
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_border-radius.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_border-radius.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_border-radius.scss	(revision 3762)
@@ -0,0 +1,78 @@
+// stylelint-disable property-disallowed-list
+// Single side border-radius
+
+// Helper function to replace negative values with 0
+@function valid-radius($radius) {
+  $return: ();
+  @each $value in $radius {
+    @if type-of($value) == number {
+      $return: append($return, max($value, 0));
+    } @else {
+      $return: append($return, $value);
+    }
+  }
+  @return $return;
+}
+
+// scss-docs-start border-radius-mixins
+@mixin border-radius($radius: $border-radius, $fallback-border-radius: false) {
+  @if $enable-rounded {
+    border-radius: valid-radius($radius);
+  }
+  @else if $fallback-border-radius != false {
+    border-radius: $fallback-border-radius;
+  }
+}
+
+@mixin border-top-radius($radius: $border-radius) {
+  @if $enable-rounded {
+    border-top-left-radius: valid-radius($radius);
+    border-top-right-radius: valid-radius($radius);
+  }
+}
+
+@mixin border-end-radius($radius: $border-radius) {
+  @if $enable-rounded {
+    border-top-right-radius: valid-radius($radius);
+    border-bottom-right-radius: valid-radius($radius);
+  }
+}
+
+@mixin border-bottom-radius($radius: $border-radius) {
+  @if $enable-rounded {
+    border-bottom-right-radius: valid-radius($radius);
+    border-bottom-left-radius: valid-radius($radius);
+  }
+}
+
+@mixin border-start-radius($radius: $border-radius) {
+  @if $enable-rounded {
+    border-top-left-radius: valid-radius($radius);
+    border-bottom-left-radius: valid-radius($radius);
+  }
+}
+
+@mixin border-top-start-radius($radius: $border-radius) {
+  @if $enable-rounded {
+    border-top-left-radius: valid-radius($radius);
+  }
+}
+
+@mixin border-top-end-radius($radius: $border-radius) {
+  @if $enable-rounded {
+    border-top-right-radius: valid-radius($radius);
+  }
+}
+
+@mixin border-bottom-end-radius($radius: $border-radius) {
+  @if $enable-rounded {
+    border-bottom-right-radius: valid-radius($radius);
+  }
+}
+
+@mixin border-bottom-start-radius($radius: $border-radius) {
+  @if $enable-rounded {
+    border-bottom-left-radius: valid-radius($radius);
+  }
+}
+// scss-docs-end border-radius-mixins
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_reset-text.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_reset-text.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_reset-text.scss	(revision 3762)
@@ -0,0 +1,17 @@
+@mixin reset-text {
+  font-family: $font-family-base;
+  // We deliberately do NOT reset font-size or overflow-wrap / word-wrap.
+  font-style: normal;
+  font-weight: $font-weight-normal;
+  line-height: $line-height-base;
+  text-align: left; // Fallback for where `start` is not supported
+  text-align: start;
+  text-decoration: none;
+  text-shadow: none;
+  text-transform: none;
+  letter-spacing: normal;
+  word-break: normal;
+  white-space: normal;
+  word-spacing: normal;
+  line-break: auto;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_banner.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_banner.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_banner.scss	(revision 3762)
@@ -0,0 +1,9 @@
+@mixin bsBanner($file) {
+  /*!
+   * Bootstrap #{$file} v5.2.2 (https://getbootstrap.com/)
+   * Copyright 2011-2022 The Bootstrap Authors
+   * Copyright 2011-2022 Twitter, Inc.
+   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+   */
+}
+
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_list-group.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_list-group.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_list-group.scss	(revision 3762)
@@ -0,0 +1,24 @@
+// List Groups
+
+// scss-docs-start list-group-mixin
+@mixin list-group-item-variant($state, $background, $color) {
+  .list-group-item-#{$state} {
+    color: $color;
+    background-color: $background;
+
+    &.list-group-item-action {
+      &:hover,
+      &:focus {
+        color: $color;
+        background-color: shade-color($background, 10%);
+      }
+
+      &.active {
+        color: $white;
+        background-color: $color;
+        border-color: $color;
+      }
+    }
+  }
+}
+// scss-docs-end list-group-mixin
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_alert.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_alert.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_alert.scss	(revision 3762)
@@ -0,0 +1,15 @@
+// scss-docs-start alert-variant-mixin
+@mixin alert-variant($background, $border, $color) {
+  --#{$prefix}alert-color: #{$color};
+  --#{$prefix}alert-bg: #{$background};
+  --#{$prefix}alert-border-color: #{$border};
+
+  @if $enable-gradients {
+    background-image: var(--#{$prefix}gradient);
+  }
+
+  .alert-link {
+    color: shade-color($color, 20%);
+  }
+}
+// scss-docs-end alert-variant-mixin
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_text-truncate.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_text-truncate.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_text-truncate.scss	(revision 3762)
@@ -0,0 +1,8 @@
+// Text truncate
+// Requires inline-block or block for proper styling
+
+@mixin text-truncate() {
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_box-shadow.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_box-shadow.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_box-shadow.scss	(revision 3762)
@@ -0,0 +1,18 @@
+@mixin box-shadow($shadow...) {
+  @if $enable-shadows {
+    $result: ();
+
+    @each $value in $shadow {
+      @if $value != null {
+        $result: append($result, $value, "comma");
+      }
+      @if $value == none and length($shadow) > 1 {
+        @warn "The keyword 'none' must be used as a single argument.";
+      }
+    }
+
+    @if (length($result) > 0) {
+      box-shadow: $result;
+    }
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_utilities.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_utilities.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_utilities.scss	(revision 3762)
@@ -0,0 +1,97 @@
+// Utility generator
+// Used to generate utilities & print utilities
+@mixin generate-utility($utility, $infix, $is-rfs-media-query: false) {
+  $values: map-get($utility, values);
+
+  // If the values are a list or string, convert it into a map
+  @if type-of($values) == "string" or type-of(nth($values, 1)) != "list" {
+    $values: zip($values, $values);
+  }
+
+  @each $key, $value in $values {
+    $properties: map-get($utility, property);
+
+    // Multiple properties are possible, for example with vertical or horizontal margins or paddings
+    @if type-of($properties) == "string" {
+      $properties: append((), $properties);
+    }
+
+    // Use custom class if present
+    $property-class: if(map-has-key($utility, class), map-get($utility, class), nth($properties, 1));
+    $property-class: if($property-class == null, "", $property-class);
+
+    // Use custom CSS variable name if present, otherwise default to `class`
+    $css-variable-name: if(map-has-key($utility, css-variable-name), map-get($utility, css-variable-name), map-get($utility, class));
+
+    // State params to generate pseudo-classes
+    $state: if(map-has-key($utility, state), map-get($utility, state), ());
+
+    $infix: if($property-class == "" and str-slice($infix, 1, 1) == "-", str-slice($infix, 2), $infix);
+
+    // Don't prefix if value key is null (e.g. with shadow class)
+    $property-class-modifier: if($key, if($property-class == "" and $infix == "", "", "-") + $key, "");
+
+    @if map-get($utility, rfs) {
+      // Inside the media query
+      @if $is-rfs-media-query {
+        $val: rfs-value($value);
+
+        // Do not render anything if fluid and non fluid values are the same
+        $value: if($val == rfs-fluid-value($value), null, $val);
+      }
+      @else {
+        $value: rfs-fluid-value($value);
+      }
+    }
+
+    $is-css-var: map-get($utility, css-var);
+    $is-local-vars: map-get($utility, local-vars);
+    $is-rtl: map-get($utility, rtl);
+
+    @if $value != null {
+      @if $is-rtl == false {
+        /* rtl:begin:remove */
+      }
+
+      @if $is-css-var {
+        .#{$property-class + $infix + $property-class-modifier} {
+          --#{$prefix}#{$css-variable-name}: #{$value};
+        }
+
+        @each $pseudo in $state {
+          .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {
+            --#{$prefix}#{$css-variable-name}: #{$value};
+          }
+        }
+      } @else {
+        .#{$property-class + $infix + $property-class-modifier} {
+          @each $property in $properties {
+            @if $is-local-vars {
+              @each $local-var, $variable in $is-local-vars {
+                --#{$prefix}#{$local-var}: #{$variable};
+              }
+            }
+            #{$property}: $value if($enable-important-utilities, !important, null);
+          }
+        }
+
+        @each $pseudo in $state {
+          .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {
+            @each $property in $properties {
+              @if $is-local-vars {
+                @each $local-var, $variable in $is-local-vars {
+                  --#{$prefix}#{$local-var}: #{$variable};
+                }
+              }
+              #{$property}: $value if($enable-important-utilities, !important, null);
+            }
+          }
+        }
+      }
+
+      @if $is-rtl == false {
+        /* rtl:end:remove */
+      }
+    }
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_table-variants.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_table-variants.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_table-variants.scss	(revision 3762)
@@ -0,0 +1,24 @@
+// scss-docs-start table-variant
+@mixin table-variant($state, $background) {
+  .table-#{$state} {
+    $color: color-contrast(opaque($body-bg, $background));
+    $hover-bg: mix($color, $background, percentage($table-hover-bg-factor));
+    $striped-bg: mix($color, $background, percentage($table-striped-bg-factor));
+    $active-bg: mix($color, $background, percentage($table-active-bg-factor));
+    $table-border-color: mix($color, $background, percentage($table-border-factor));
+
+    --#{$prefix}table-color: #{$color};
+    --#{$prefix}table-bg: #{$background};
+    --#{$prefix}table-border-color: #{$table-border-color};
+    --#{$prefix}table-striped-bg: #{$striped-bg};
+    --#{$prefix}table-striped-color: #{color-contrast($striped-bg)};
+    --#{$prefix}table-active-bg: #{$active-bg};
+    --#{$prefix}table-active-color: #{color-contrast($active-bg)};
+    --#{$prefix}table-hover-bg: #{$hover-bg};
+    --#{$prefix}table-hover-color: #{color-contrast($hover-bg)};
+
+    color: var(--#{$prefix}table-color);
+    border-color: var(--#{$prefix}table-border-color);
+  }
+}
+// scss-docs-end table-variant
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_color-scheme.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_color-scheme.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_color-scheme.scss	(revision 3762)
@@ -0,0 +1,7 @@
+// scss-docs-start mixin-color-scheme
+@mixin color-scheme($name) {
+  @media (prefers-color-scheme: #{$name}) {
+    @content;
+  }
+}
+// scss-docs-end mixin-color-scheme
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_gradients.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_gradients.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_gradients.scss	(revision 3762)
@@ -0,0 +1,47 @@
+// Gradients
+
+// scss-docs-start gradient-bg-mixin
+@mixin gradient-bg($color: null) {
+  background-color: $color;
+
+  @if $enable-gradients {
+    background-image: var(--#{$prefix}gradient);
+  }
+}
+// scss-docs-end gradient-bg-mixin
+
+// scss-docs-start gradient-mixins
+// Horizontal gradient, from left to right
+//
+// Creates two color stops, start and end, by specifying a color and position for each color stop.
+@mixin gradient-x($start-color: $gray-700, $end-color: $gray-800, $start-percent: 0%, $end-percent: 100%) {
+  background-image: linear-gradient(to right, $start-color $start-percent, $end-color $end-percent);
+}
+
+// Vertical gradient, from top to bottom
+//
+// Creates two color stops, start and end, by specifying a color and position for each color stop.
+@mixin gradient-y($start-color: $gray-700, $end-color: $gray-800, $start-percent: null, $end-percent: null) {
+  background-image: linear-gradient(to bottom, $start-color $start-percent, $end-color $end-percent);
+}
+
+@mixin gradient-directional($start-color: $gray-700, $end-color: $gray-800, $deg: 45deg) {
+  background-image: linear-gradient($deg, $start-color, $end-color);
+}
+
+@mixin gradient-x-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {
+  background-image: linear-gradient(to right, $start-color, $mid-color $color-stop, $end-color);
+}
+
+@mixin gradient-y-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {
+  background-image: linear-gradient($start-color, $mid-color $color-stop, $end-color);
+}
+
+@mixin gradient-radial($inner-color: $gray-700, $outer-color: $gray-800) {
+  background-image: radial-gradient(circle, $inner-color, $outer-color);
+}
+
+@mixin gradient-striped($color: rgba($white, .15), $angle: 45deg) {
+  background-image: linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);
+}
+// scss-docs-end gradient-mixins
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_breakpoints.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_breakpoints.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_breakpoints.scss	(revision 3762)
@@ -0,0 +1,127 @@
+// Breakpoint viewport sizes and media queries.
+//
+// Breakpoints are defined as a map of (name: minimum width), order from small to large:
+//
+//    (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px)
+//
+// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.
+
+// Name of the next breakpoint, or null for the last breakpoint.
+//
+//    >> breakpoint-next(sm)
+//    md
+//    >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))
+//    md
+//    >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl xxl))
+//    md
+@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {
+  $n: index($breakpoint-names, $name);
+  @if not $n {
+    @error "breakpoint `#{$name}` not found in `#{$breakpoints}`";
+  }
+  @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);
+}
+
+// Minimum breakpoint width. Null for the smallest (first) breakpoint.
+//
+//    >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))
+//    576px
+@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {
+  $min: map-get($breakpoints, $name);
+  @return if($min != 0, $min, null);
+}
+
+// Maximum breakpoint width.
+// The maximum value is reduced by 0.02px to work around the limitations of
+// `min-` and `max-` prefixes and viewports with fractional widths.
+// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max
+// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.
+// See https://bugs.webkit.org/show_bug.cgi?id=178261
+//
+//    >> breakpoint-max(md, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))
+//    767.98px
+@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {
+  $max: map-get($breakpoints, $name);
+  @return if($max and $max > 0, $max - .02, null);
+}
+
+// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.
+// Useful for making responsive utilities.
+//
+//    >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))
+//    ""  (Returns a blank string)
+//    >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))
+//    "-sm"
+@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {
+  @return if(breakpoint-min($name, $breakpoints) == null, "", "-#{$name}");
+}
+
+// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.
+// Makes the @content apply to the given breakpoint and wider.
+@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {
+  $min: breakpoint-min($name, $breakpoints);
+  @if $min {
+    @media (min-width: $min) {
+      @content;
+    }
+  } @else {
+    @content;
+  }
+}
+
+// Media of at most the maximum breakpoint width. No query for the largest breakpoint.
+// Makes the @content apply to the given breakpoint and narrower.
+@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {
+  $max: breakpoint-max($name, $breakpoints);
+  @if $max {
+    @media (max-width: $max) {
+      @content;
+    }
+  } @else {
+    @content;
+  }
+}
+
+// Media that spans multiple breakpoint widths.
+// Makes the @content apply between the min and max breakpoints
+@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {
+  $min: breakpoint-min($lower, $breakpoints);
+  $max: breakpoint-max($upper, $breakpoints);
+
+  @if $min != null and $max != null {
+    @media (min-width: $min) and (max-width: $max) {
+      @content;
+    }
+  } @else if $max == null {
+    @include media-breakpoint-up($lower, $breakpoints) {
+      @content;
+    }
+  } @else if $min == null {
+    @include media-breakpoint-down($upper, $breakpoints) {
+      @content;
+    }
+  }
+}
+
+// Media between the breakpoint's minimum and maximum widths.
+// No minimum for the smallest breakpoint, and no maximum for the largest one.
+// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.
+@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {
+  $min:  breakpoint-min($name, $breakpoints);
+  $next: breakpoint-next($name, $breakpoints);
+  $max:  breakpoint-max($next, $breakpoints);
+
+  @if $min != null and $max != null {
+    @media (min-width: $min) and (max-width: $max) {
+      @content;
+    }
+  } @else if $max == null {
+    @include media-breakpoint-up($name, $breakpoints) {
+      @content;
+    }
+  } @else if $min == null {
+    @include media-breakpoint-down($next, $breakpoints) {
+      @content;
+    }
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_container.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_container.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_container.scss	(revision 3762)
@@ -0,0 +1,11 @@
+// Container mixins
+
+@mixin make-container($gutter: $container-padding-x) {
+  --#{$prefix}gutter-x: #{$gutter};
+  --#{$prefix}gutter-y: 0;
+  width: 100%;
+  padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list
+  padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list
+  margin-right: auto;
+  margin-left: auto;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_image.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_image.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_image.scss	(revision 3762)
@@ -0,0 +1,16 @@
+// Image Mixins
+// - Responsive image
+// - Retina image
+
+
+// Responsive image
+//
+// Keep images from scaling beyond the width of their parents.
+
+@mixin img-fluid {
+  // Part 1: Set a maximum relative to the parent
+  max-width: 100%;
+  // Part 2: Override the height to auto, otherwise images will be stretched
+  // when setting a width and height attribute on the img element.
+  height: auto;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_backdrop.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_backdrop.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_backdrop.scss	(revision 3762)
@@ -0,0 +1,14 @@
+// Shared between modals and offcanvases
+@mixin overlay-backdrop($zindex, $backdrop-bg, $backdrop-opacity) {
+  position: fixed;
+  top: 0;
+  left: 0;
+  z-index: $zindex;
+  width: 100vw;
+  height: 100vh;
+  background-color: $backdrop-bg;
+
+  // Fade for backdrop
+  &.fade { opacity: 0; }
+  &.show { opacity: $backdrop-opacity; }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_grid.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_grid.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_grid.scss	(revision 3762)
@@ -0,0 +1,159 @@
+// Grid system
+//
+// Generate semantic grid columns with these mixins.
+
+@mixin make-row($gutter: $grid-gutter-width) {
+  --#{$prefix}gutter-x: #{$gutter};
+  --#{$prefix}gutter-y: 0;
+  display: flex;
+  display: -webkit-flex;
+  flex-wrap: wrap;
+  -webkit-flex-wrap: wrap;
+  // TODO: Revisit calc order after https://github.com/react-bootstrap/react-bootstrap/issues/6039 is fixed
+  margin-top: calc(-1 * var(--#{$prefix}gutter-y)); // stylelint-disable-line function-disallowed-list
+  margin-right: calc(-.5 * var(--#{$prefix}gutter-x)); // stylelint-disable-line function-disallowed-list
+  margin-left: calc(-.5 * var(--#{$prefix}gutter-x)); // stylelint-disable-line function-disallowed-list
+}
+
+@mixin make-col-ready() {
+  // Add box sizing if only the grid is loaded
+  box-sizing: if(variable-exists(include-column-box-sizing) and $include-column-box-sizing, border-box, null);
+  // Prevent columns from becoming too narrow when at smaller grid tiers by
+  // always setting `width: 100%;`. This works because we set the width
+  // later on to override this initial width.
+  flex-shrink: 0;
+  -webkit-flex-shrink: 0;
+  width: 100%;
+  max-width: 100%; // Prevent `.col-auto`, `.col` (& responsive variants) from breaking out the grid
+  padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list
+  padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list
+  margin-top: var(--#{$prefix}gutter-y);
+}
+
+@mixin make-col($size: false, $columns: $grid-columns) {
+  @if $size {
+    flex: 0 0 auto;
+    -webkit-flex: 0 0 auto;
+    width: percentage(divide($size, $columns));
+
+  } @else {
+    flex: 1 1 0;
+    -webkit-flex: 1 1 0;
+    max-width: 100%;
+  }
+}
+
+@mixin make-col-auto() {
+  flex: 0 0 auto;
+  -webkit-flex: 0 0 auto;
+  width: auto;
+}
+
+@mixin make-col-offset($size, $columns: $grid-columns) {
+  $num: divide($size, $columns);
+  margin-left: if($num == 0, 0, percentage($num));
+}
+
+// Row columns
+//
+// Specify on a parent element(e.g., .row) to force immediate children into NN
+// number of columns. Supports wrapping to new lines, but does not do a Masonry
+// style grid.
+@mixin row-cols($count) {
+  > * {
+    flex: 0 0 auto;
+    -webkit-flex: 0 0 auto;
+    width: divide(100%, $count);
+  }
+}
+
+// Framework grid generation
+//
+// Used only by Bootstrap to generate the correct number of grid classes given
+// any value of `$grid-columns`.
+
+@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {
+  @each $breakpoint in map-keys($breakpoints) {
+    $infix: breakpoint-infix($breakpoint, $breakpoints);
+
+    @include media-breakpoint-up($breakpoint, $breakpoints) {
+      // Provide basic `.col-{bp}` classes for equal-width flexbox columns
+      .col#{$infix} {
+        flex: 1 0 0%; // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4
+        -webkit-flex: 1 0 0%; // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4
+      }
+
+      .row-cols#{$infix}-auto > * {
+        @include make-col-auto();
+      }
+
+      @if $grid-row-columns > 0 {
+        @for $i from 1 through $grid-row-columns {
+          .row-cols#{$infix}-#{$i} {
+            @include row-cols($i);
+          }
+        }
+      }
+
+      .col#{$infix}-auto {
+        @include make-col-auto();
+      }
+
+      @if $columns > 0 {
+        @for $i from 1 through $columns {
+          .col#{$infix}-#{$i} {
+            @include make-col($i, $columns);
+          }
+        }
+
+        // `$columns - 1` because offsetting by the width of an entire row isn't possible
+        @for $i from 0 through ($columns - 1) {
+          @if not ($infix == "" and $i == 0) { // Avoid emitting useless .offset-0
+            .offset#{$infix}-#{$i} {
+              @include make-col-offset($i, $columns);
+            }
+          }
+        }
+      }
+
+      // Gutters
+      //
+      // Make use of `.g-*`, `.gx-*` or `.gy-*` utilities to change spacing between the columns.
+      @each $key, $value in $gutters {
+        .g#{$infix}-#{$key},
+        .gx#{$infix}-#{$key} {
+          --#{$prefix}gutter-x: #{$value};
+        }
+
+        .g#{$infix}-#{$key},
+        .gy#{$infix}-#{$key} {
+          --#{$prefix}gutter-y: #{$value};
+        }
+      }
+    }
+  }
+}
+
+@mixin make-cssgrid($columns: $grid-columns, $breakpoints: $grid-breakpoints) {
+  @each $breakpoint in map-keys($breakpoints) {
+    $infix: breakpoint-infix($breakpoint, $breakpoints);
+
+    @include media-breakpoint-up($breakpoint, $breakpoints) {
+      @if $columns > 0 {
+        @for $i from 1 through $columns {
+          .g-col#{$infix}-#{$i} {
+            grid-column: auto / span $i;
+          }
+        }
+
+        // Start with `1` because `0` is and invalid value.
+        // Ends with `$columns - 1` because offsetting by the width of an entire row isn't possible.
+        @for $i from 1 through ($columns - 1) {
+          .g-start#{$infix}-#{$i} {
+            grid-column-start: $i;
+          }
+        }
+      }
+    }
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_forms.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_forms.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_forms.scss	(revision 3762)
@@ -0,0 +1,152 @@
+// This mixin uses an `if()` technique to be compatible with Dart Sass
+// See https://github.com/sass/sass/issues/1873#issuecomment-152293725 for more details
+
+// scss-docs-start form-validation-mixins
+@mixin form-validation-state-selector($state) {
+  @if ($state == "valid" or $state == "invalid") {
+    .was-validated #{if(&, "&", "")}:#{$state},
+    #{if(&, "&", "")}.is-#{$state} {
+      @content;
+    }
+  } @else {
+    #{if(&, "&", "")}.is-#{$state} {
+      @content;
+    }
+  }
+}
+
+@mixin form-validation-state(
+  $state,
+  $color,
+  $icon,
+  $tooltip-color: color-contrast($color),
+  $tooltip-bg-color: rgba($color, $form-feedback-tooltip-opacity),
+  $focus-box-shadow: 0 0 $input-btn-focus-blur $input-focus-width rgba($color, $input-btn-focus-color-opacity)
+) {
+  .#{$state}-feedback {
+    display: none;
+    width: 100%;
+    margin-top: $form-feedback-margin-top;
+    @include font-size($form-feedback-font-size);
+    font-style: $form-feedback-font-style;
+    color: $color;
+  }
+
+  .#{$state}-tooltip {
+    position: absolute;
+    top: 100%;
+    z-index: 5;
+    display: none;
+    max-width: 100%; // Contain to parent when possible
+    padding: $form-feedback-tooltip-padding-y $form-feedback-tooltip-padding-x;
+    margin-top: .1rem;
+    @include font-size($form-feedback-tooltip-font-size);
+    line-height: $form-feedback-tooltip-line-height;
+    color: $tooltip-color;
+    background-color: $tooltip-bg-color;
+    @include border-radius($form-feedback-tooltip-border-radius);
+  }
+
+  @include form-validation-state-selector($state) {
+    ~ .#{$state}-feedback,
+    ~ .#{$state}-tooltip {
+      display: block;
+    }
+  }
+
+  .form-control {
+    @include form-validation-state-selector($state) {
+      border-color: $color;
+
+      @if $enable-validation-icons {
+        padding-right: $input-height-inner;
+        background-image: escape-svg($icon);
+        background-repeat: no-repeat;
+        background-position: right $input-height-inner-quarter center;
+        background-size: $input-height-inner-half $input-height-inner-half;
+      }
+
+      &:focus {
+        border-color: $color;
+        box-shadow: $focus-box-shadow;
+      }
+    }
+  }
+
+  // stylelint-disable-next-line selector-no-qualifying-type
+  textarea.form-control {
+    @include form-validation-state-selector($state) {
+      @if $enable-validation-icons {
+        padding-right: $input-height-inner;
+        background-position: top $input-height-inner-quarter right $input-height-inner-quarter;
+      }
+    }
+  }
+
+  .form-select {
+    @include form-validation-state-selector($state) {
+      border-color: $color;
+
+      @if $enable-validation-icons {
+        &:not([multiple]):not([size]),
+        &:not([multiple])[size="1"] {
+          padding-right: $form-select-feedback-icon-padding-end;
+          background-image: escape-svg($form-select-indicator), escape-svg($icon);
+          background-position: $form-select-bg-position, $form-select-feedback-icon-position;
+          background-size: $form-select-bg-size, $form-select-feedback-icon-size;
+        }
+      }
+
+      &:focus {
+        border-color: $color;
+        box-shadow: $focus-box-shadow;
+      }
+    }
+  }
+
+  .form-control-color {
+    @include form-validation-state-selector($state) {
+      @if $enable-validation-icons {
+        width: add($form-color-width, $input-height-inner);
+      }
+    }
+  }
+
+  .form-check-input {
+    @include form-validation-state-selector($state) {
+      border-color: $color;
+
+      &:checked {
+        background-color: $color;
+      }
+
+      &:focus {
+        box-shadow: $focus-box-shadow;
+      }
+
+      ~ .form-check-label {
+        color: $color;
+      }
+    }
+  }
+  .form-check-inline .form-check-input {
+    ~ .#{$state}-feedback {
+      margin-left: .5em;
+    }
+  }
+
+  .input-group {
+    > .form-control:not(:focus),
+    > .form-select:not(:focus),
+    > .form-floating:not(:focus-within) {
+      @include form-validation-state-selector($state) {
+        @if $state == "valid" {
+          z-index: 3;
+        } @else if $state == "invalid" {
+          z-index: 4;
+        }
+      }
+    }
+  }
+}
+// scss-docs-end form-validation-mixins
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_pagination.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_pagination.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_pagination.scss	(revision 3762)
@@ -0,0 +1,10 @@
+// Pagination
+
+// scss-docs-start pagination-mixin
+@mixin pagination-size($padding-y, $padding-x, $font-size, $border-radius) {
+  --#{$prefix}pagination-padding-x: #{$padding-x};
+  --#{$prefix}pagination-padding-y: #{$padding-y};
+  @include rfs($font-size, --#{$prefix}pagination-font-size);
+  --#{$prefix}pagination-border-radius: #{$border-radius};
+}
+// scss-docs-end pagination-mixin
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_transition.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_transition.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_transition.scss	(revision 3762)
@@ -0,0 +1,26 @@
+// stylelint-disable property-disallowed-list
+@mixin transition($transition...) {
+  @if length($transition) == 0 {
+    $transition: $transition-base;
+  }
+
+  @if length($transition) > 1 {
+    @each $value in $transition {
+      @if $value == null or $value == none {
+        @warn "The keyword 'none' or 'null' must be used as a single argument.";
+      }
+    }
+  }
+
+  @if $enable-transitions {
+    @if nth($transition, 1) != null {
+      transition: $transition;
+    }
+
+    @if $enable-reduced-motion and nth($transition, 1) != null and nth($transition, 1) != none {
+      @media (prefers-reduced-motion: reduce) {
+        transition: none;
+      }
+    }
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_deprecate.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_deprecate.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_deprecate.scss	(revision 3762)
@@ -0,0 +1,10 @@
+// Deprecate mixin
+//
+// This mixin can be used to deprecate mixins or functions.
+// `$enable-deprecation-messages` is a global variable, `$ignore-warning` is a variable that can be passed to
+// some deprecated mixins to suppress the warning (for example if the mixin is still be used in the current version of Bootstrap)
+@mixin deprecate($name, $deprecate-version, $remove-version, $ignore-warning: false) {
+  @if ($enable-deprecation-messages != false and $ignore-warning != true) {
+    @warn "#{$name} has been deprecated as of #{$deprecate-version}. It will be removed entirely in #{$remove-version}.";
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_clearfix.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_clearfix.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_clearfix.scss	(revision 3762)
@@ -0,0 +1,9 @@
+// scss-docs-start clearfix
+@mixin clearfix() {
+  &::after {
+    display: block;
+    clear: both;
+    content: "";
+  }
+}
+// scss-docs-end clearfix
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_lists.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_lists.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_lists.scss	(revision 3762)
@@ -0,0 +1,7 @@
+// Lists
+
+// Unstyled keeps list items block level, just removes default browser padding and list-style
+@mixin list-unstyled {
+  padding-left: 0;
+  list-style: none;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_buttons.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_buttons.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_buttons.scss	(revision 3762)
@@ -0,0 +1,71 @@
+// Button variants
+//
+// Easily pump out default styles, as well as :hover, :focus, :active,
+// and disabled options for all buttons
+
+// scss-docs-start btn-variant-mixin
+@mixin button-variant(
+  $background,
+  $border,
+  $color: color-contrast($background),
+  $hover-background: if($color == $color-contrast-light, shade-color($background, $btn-hover-bg-shade-amount), tint-color($background, $btn-hover-bg-tint-amount)),
+  $hover-border: if($color == $color-contrast-light, shade-color($border, $btn-hover-border-shade-amount), tint-color($border, $btn-hover-border-tint-amount)),
+  $hover-color: color-contrast($hover-background),
+  $active-background: if($color == $color-contrast-light, shade-color($background, $btn-active-bg-shade-amount), tint-color($background, $btn-active-bg-tint-amount)),
+  $active-border: if($color == $color-contrast-light, shade-color($border, $btn-active-border-shade-amount), tint-color($border, $btn-active-border-tint-amount)),
+  $active-color: color-contrast($active-background),
+  $disabled-background: $background,
+  $disabled-border: $border,
+  $disabled-color: color-contrast($disabled-background)
+) {
+  --#{$prefix}btn-color: #{$color};
+  --#{$prefix}btn-bg: #{$background};
+  --#{$prefix}btn-border-color: #{$border};
+  --#{$prefix}btn-hover-color: #{$hover-color};
+  --#{$prefix}btn-hover-bg: #{$hover-background};
+  --#{$prefix}btn-hover-border-color: #{$hover-border};
+  --#{$prefix}btn-focus-shadow-rgb: #{to-rgb(mix($color, $border, 15%))};
+  --#{$prefix}btn-active-color: #{$active-color};
+  --#{$prefix}btn-active-bg: #{$active-background};
+  --#{$prefix}btn-active-border-color: #{$active-border};
+  --#{$prefix}btn-active-shadow: #{$btn-active-box-shadow};
+  --#{$prefix}btn-disabled-color: #{$disabled-color};
+  --#{$prefix}btn-disabled-bg: #{$disabled-background};
+  --#{$prefix}btn-disabled-border-color: #{$disabled-border};
+}
+// scss-docs-end btn-variant-mixin
+
+// scss-docs-start btn-outline-variant-mixin
+@mixin button-outline-variant(
+  $color,
+  $color-hover: color-contrast($color),
+  $active-background: $color,
+  $active-border: $color,
+  $active-color: color-contrast($active-background)
+) {
+  --#{$prefix}btn-color: #{$color};
+  --#{$prefix}btn-border-color: #{$color};
+  --#{$prefix}btn-hover-color: #{$color-hover};
+  --#{$prefix}btn-hover-bg: #{$active-background};
+  --#{$prefix}btn-hover-border-color: #{$active-border};
+  --#{$prefix}btn-focus-shadow-rgb: #{to-rgb($color)};
+  --#{$prefix}btn-active-color: #{$active-color};
+  --#{$prefix}btn-active-bg: #{$active-background};
+  --#{$prefix}btn-active-border-color: #{$active-border};
+  --#{$prefix}btn-active-shadow: #{$btn-active-box-shadow};
+  --#{$prefix}btn-disabled-color: #{$color};
+  --#{$prefix}btn-disabled-bg: transparent;
+  --#{$prefix}btn-disabled-border-color: #{$color};
+  --#{$prefix}btn-bg: transparent;
+  --#{$prefix}gradient: none;
+}
+// scss-docs-end btn-outline-variant-mixin
+
+// scss-docs-start btn-size-mixin
+@mixin button-size($padding-y, $padding-x, $font-size, $border-radius) {
+  --#{$prefix}btn-padding-y: #{$padding-y};
+  --#{$prefix}btn-padding-x: #{$padding-x};
+  @include rfs($font-size, --#{$prefix}btn-font-size);
+  --#{$prefix}btn-border-radius: #{$border-radius};
+}
+// scss-docs-end btn-size-mixin
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_caret.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_caret.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/mixins/_caret.scss	(revision 3762)
@@ -0,0 +1,64 @@
+// scss-docs-start caret-mixins
+@mixin caret-down {
+  border-top: $caret-width solid;
+  border-right: $caret-width solid transparent;
+  border-bottom: 0;
+  border-left: $caret-width solid transparent;
+}
+
+@mixin caret-up {
+  border-top: 0;
+  border-right: $caret-width solid transparent;
+  border-bottom: $caret-width solid;
+  border-left: $caret-width solid transparent;
+}
+
+@mixin caret-end {
+  border-top: $caret-width solid transparent;
+  border-right: 0;
+  border-bottom: $caret-width solid transparent;
+  border-left: $caret-width solid;
+}
+
+@mixin caret-start {
+  border-top: $caret-width solid transparent;
+  border-right: $caret-width solid;
+  border-bottom: $caret-width solid transparent;
+}
+
+@mixin caret($direction: down) {
+  @if $enable-caret {
+    &::after {
+      display: inline-block;
+      margin-left: $caret-spacing;
+      vertical-align: $caret-vertical-align;
+      content: "";
+      @if $direction == down {
+        @include caret-down();
+      } @else if $direction == up {
+        @include caret-up();
+      } @else if $direction == end {
+        @include caret-end();
+      }
+    }
+
+    @if $direction == start {
+      &::after {
+        display: none;
+      }
+
+      &::before {
+        display: inline-block;
+        margin-right: $caret-spacing;
+        vertical-align: $caret-vertical-align;
+        content: "";
+        @include caret-start();
+      }
+    }
+
+    &:empty::after {
+      margin-left: 0;
+    }
+  }
+}
+// scss-docs-end caret-mixins
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_buttons.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_buttons.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_buttons.scss	(revision 3762)
@@ -0,0 +1,227 @@
+//
+// Base styles
+//
+
+.btn {
+  // scss-docs-start btn-css-vars
+  --#{$prefix}btn-padding-x: #{$btn-padding-x};
+  --#{$prefix}btn-padding-y: #{$btn-padding-y};
+  --#{$prefix}btn-font-family: #{$btn-font-family};
+  @include rfs($btn-font-size, --#{$prefix}btn-font-size);
+  --#{$prefix}btn-font-weight: #{$btn-font-weight};
+  --#{$prefix}btn-line-height: #{$btn-line-height};
+  --#{$prefix}btn-color: #{$body-color};
+  --#{$prefix}btn-bg: transparent;
+  --#{$prefix}btn-border-width: #{$btn-border-width};
+  --#{$prefix}btn-border-color: transparent;
+  --#{$prefix}btn-border-radius: #{$btn-border-radius};
+  --#{$prefix}btn-hover-border-color: transparent;
+  --#{$prefix}btn-box-shadow: #{$btn-box-shadow};
+  --#{$prefix}btn-disabled-opacity: #{$btn-disabled-opacity};
+  --#{$prefix}btn-focus-box-shadow: 0 0 0 #{$btn-focus-width} rgba(var(--#{$prefix}btn-focus-shadow-rgb), .5);
+  // scss-docs-end btn-css-vars
+
+  display: inline-block;
+  padding: var(--#{$prefix}btn-padding-y) var(--#{$prefix}btn-padding-x);
+  font-family: var(--#{$prefix}btn-font-family);
+  @include font-size(var(--#{$prefix}btn-font-size));
+  font-weight: var(--#{$prefix}btn-font-weight);
+  line-height: var(--#{$prefix}btn-line-height);
+  color: var(--#{$prefix}btn-color);
+  text-align: center;
+  text-decoration: if($link-decoration == none, null, none);
+  -webkit-text-decoration: if($link-decoration == none, null, none);
+  -moz-text-decoration: if($link-decoration == none, null, none);
+  -ms-text-decoration: if($link-decoration == none, null, none);
+  -o-text-decoration: if($link-decoration == none, null, none);
+  white-space: $btn-white-space;
+  vertical-align: middle;
+  cursor: if($enable-button-pointers, pointer, null);
+  user-select: none;
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  -o-user-select: none;
+  border: var(--#{$prefix}btn-border-width) solid var(--#{$prefix}btn-border-color);
+  @include border-radius(var(--#{$prefix}btn-border-radius));
+  @include gradient-bg(var(--#{$prefix}btn-bg));
+  @include box-shadow(var(--#{$prefix}btn-box-shadow));
+  @include transition($btn-transition);
+
+  &:hover {
+    color: var(--#{$prefix}btn-hover-color);
+    text-decoration: if($link-hover-decoration == underline, none, null);
+    -webkit-text-decoration: if($link-hover-decoration == underline, none, null);
+    -moz-text-decoration: if($link-hover-decoration == underline, none, null);
+    -ms-text-decoration: if($link-hover-decoration == underline, none, null);
+    -o-text-decoration: if($link-hover-decoration == underline, none, null);
+    background-color: var(--#{$prefix}btn-hover-bg);
+    border-color: var(--#{$prefix}btn-hover-border-color);
+  }
+
+  .btn-check + &:hover {
+    // override for the checkbox/radio buttons
+    color: var(--#{$prefix}btn-color);
+    background-color: var(--#{$prefix}btn-bg);
+    border-color: var(--#{$prefix}btn-border-color);
+  }
+
+  &:focus-visible {
+    color: var(--#{$prefix}btn-hover-color);
+    @include gradient-bg(var(--#{$prefix}btn-hover-bg));
+    border-color: var(--#{$prefix}btn-hover-border-color);
+    outline: 0;
+    // Avoid using mixin so we can pass custom focus shadow properly
+    @if $enable-shadows {
+      box-shadow: var(--#{$prefix}btn-box-shadow), var(--#{$prefix}btn-focus-box-shadow);
+    } @else {
+      box-shadow: var(--#{$prefix}btn-focus-box-shadow);
+    }
+  }
+
+  .btn-check:focus-visible + & {
+    border-color: var(--#{$prefix}btn-hover-border-color);
+    outline: 0;
+    // Avoid using mixin so we can pass custom focus shadow properly
+    @if $enable-shadows {
+      box-shadow: var(--#{$prefix}btn-box-shadow), var(--#{$prefix}btn-focus-box-shadow);
+    } @else {
+      box-shadow: var(--#{$prefix}btn-focus-box-shadow);
+    }
+  }
+
+  .btn-check:checked + &,
+  :not(.btn-check) + &:active,
+  &:first-child:active,
+  &.active,
+  &.show {
+    color: var(--#{$prefix}btn-active-color);
+    background-color: var(--#{$prefix}btn-active-bg);
+    // Remove CSS gradients if they're enabled
+    background-image: if($enable-gradients, none, null);
+    border-color: var(--#{$prefix}btn-active-border-color);
+    @include box-shadow(var(--#{$prefix}btn-active-shadow));
+
+    &:focus-visible {
+      // Avoid using mixin so we can pass custom focus shadow properly
+      @if $enable-shadows {
+        box-shadow: var(--#{$prefix}btn-active-shadow), var(--#{$prefix}btn-focus-box-shadow);
+      } @else {
+        box-shadow: var(--#{$prefix}btn-focus-box-shadow);
+      }
+    }
+  }
+
+  &:disabled,
+  &.disabled,
+  fieldset:disabled & {
+    color: var(--#{$prefix}btn-disabled-color);
+    pointer-events: none;
+    background-color: var(--#{$prefix}btn-disabled-bg);
+    background-image: if($enable-gradients, none, null);
+    border-color: var(--#{$prefix}btn-disabled-border-color);
+    opacity: var(--#{$prefix}btn-disabled-opacity);
+    @include box-shadow(none);
+  }
+}
+
+
+//
+// Alternate buttons
+//
+
+// scss-docs-start btn-variant-loops
+@each $color, $value in $theme-colors {
+  .btn-#{$color} {
+    @if $color == "light" {
+      @include button-variant(
+        $value,
+        $value,
+        $hover-background: shade-color($value, $btn-hover-bg-shade-amount),
+        $hover-border: shade-color($value, $btn-hover-border-shade-amount),
+        $active-background: shade-color($value, $btn-active-bg-shade-amount),
+        $active-border: shade-color($value, $btn-active-border-shade-amount)
+      );
+    } @else if $color == "dark" {
+      @include button-variant(
+        $value,
+        $value,
+        $hover-background: tint-color($value, $btn-hover-bg-tint-amount),
+        $hover-border: tint-color($value, $btn-hover-border-tint-amount),
+        $active-background: tint-color($value, $btn-active-bg-tint-amount),
+        $active-border: tint-color($value, $btn-active-border-tint-amount)
+      );
+    } @else {
+      @include button-variant($value, $value);
+    }
+  }
+}
+
+@each $color, $value in $theme-colors {
+  .btn-outline-#{$color} {
+    @include button-outline-variant($value);
+  }
+}
+// scss-docs-end btn-variant-loops
+
+
+//
+// Link buttons
+//
+
+// Make a button look and behave like a link
+.btn-link {
+  --#{$prefix}btn-font-weight: #{$font-weight-normal};
+  --#{$prefix}btn-color: #{$btn-link-color};
+  --#{$prefix}btn-bg: transparent;
+  --#{$prefix}btn-border-color: transparent;
+  --#{$prefix}btn-hover-color: #{$btn-link-hover-color};
+  --#{$prefix}btn-hover-border-color: transparent;
+  --#{$prefix}btn-active-color: #{$btn-link-hover-color};
+  --#{$prefix}btn-active-border-color: transparent;
+  --#{$prefix}btn-disabled-color: #{$btn-link-disabled-color};
+  --#{$prefix}btn-disabled-border-color: transparent;
+  --#{$prefix}btn-box-shadow: none;
+  --#{$prefix}btn-focus-shadow-rgb: #{to-rgb(mix(color-contrast($primary), $primary, 15%))};
+
+  text-decoration: $link-decoration;
+  -webkit-text-decoration: $link-decoration;
+  -moz-text-decoration: $link-decoration;
+  -ms-text-decoration: $link-decoration;
+  -o-text-decoration: $link-decoration;
+  @if $enable-gradients {
+    background-image: none;
+  }
+
+  &:hover,
+  &:focus-visible {
+    text-decoration: $link-hover-decoration;
+    -webkit-text-decoration: $link-hover-decoration;
+    -moz-text-decoration: $link-hover-decoration;
+    -ms-text-decoration: $link-hover-decoration;
+    -o-text-decoration: $link-hover-decoration;
+  }
+
+  &:focus-visible {
+    color: var(--#{$prefix}btn-color);
+  }
+
+  &:hover {
+    color: var(--#{$prefix}btn-hover-color);
+  }
+
+  // No need for an active state here
+}
+
+
+//
+// Button Sizes
+//
+
+.btn-lg {
+  @include button-size($btn-padding-y-lg, $btn-padding-x-lg, $btn-font-size-lg, $btn-border-radius-lg);
+}
+
+.btn-sm {
+  @include button-size($btn-padding-y-sm, $btn-padding-x-sm, $btn-font-size-sm, $btn-border-radius-sm);
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_accordion.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_accordion.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_accordion.scss	(revision 3762)
@@ -0,0 +1,152 @@
+//
+// Base styles
+//
+
+.accordion {
+  // scss-docs-start accordion-css-vars
+  --#{$prefix}accordion-color: #{$accordion-color};
+  --#{$prefix}accordion-bg: #{$accordion-bg};
+  --#{$prefix}accordion-transition: #{$accordion-transition};
+  --#{$prefix}accordion-border-color: #{$accordion-border-color};
+  --#{$prefix}accordion-border-width: #{$accordion-border-width};
+  --#{$prefix}accordion-border-radius: #{$accordion-border-radius};
+  --#{$prefix}accordion-inner-border-radius: #{$accordion-inner-border-radius};
+  --#{$prefix}accordion-btn-padding-x: #{$accordion-button-padding-x};
+  --#{$prefix}accordion-btn-padding-y: #{$accordion-button-padding-y};
+  --#{$prefix}accordion-btn-color: #{$accordion-button-color};
+  --#{$prefix}accordion-btn-bg: #{$accordion-button-bg};
+  --#{$prefix}accordion-btn-icon: #{escape-svg($accordion-button-icon)};
+  --#{$prefix}accordion-btn-icon-width: #{$accordion-icon-width};
+  --#{$prefix}accordion-btn-icon-transform: #{$accordion-icon-transform};
+  --#{$prefix}accordion-btn-icon-transition: #{$accordion-icon-transition};
+  --#{$prefix}accordion-btn-active-icon: #{escape-svg($accordion-button-active-icon)};
+  --#{$prefix}accordion-btn-focus-border-color: #{$accordion-button-focus-border-color};
+  --#{$prefix}accordion-btn-focus-box-shadow: #{$accordion-button-focus-box-shadow};
+  --#{$prefix}accordion-body-padding-x: #{$accordion-body-padding-x};
+  --#{$prefix}accordion-body-padding-y: #{$accordion-body-padding-y};
+  --#{$prefix}accordion-active-color: #{$accordion-button-active-color};
+  --#{$prefix}accordion-active-bg: #{$accordion-button-active-bg};
+  // scss-docs-end accordion-css-vars
+}
+
+.accordion-button {
+  position: relative;
+  display: flex;
+  display: -webkit-flex;
+  align-items: center;
+  -webkit-align-items: center;
+  width: 100%;
+  padding: var(--#{$prefix}accordion-btn-padding-y) var(--#{$prefix}accordion-btn-padding-x);
+  @include font-size($font-size-base);
+  color: var(--#{$prefix}accordion-btn-color);
+  text-align: left; // Reset button style
+  background-color: var(--#{$prefix}accordion-btn-bg);
+  border: 0;
+  @include border-radius(0);
+  overflow-anchor: none;
+  @include transition(var(--#{$prefix}accordion-transition));
+
+  &:not(.collapsed) {
+    color: var(--#{$prefix}accordion-active-color);
+    background-color: var(--#{$prefix}accordion-active-bg);
+    box-shadow: inset 0 calc(-1 * var(--#{$prefix}accordion-border-width)) 0 var(--#{$prefix}accordion-border-color); // stylelint-disable-line function-disallowed-list
+
+    &::after {
+      background-image: var(--#{$prefix}accordion-btn-active-icon);
+      transform: var(--#{$prefix}accordion-btn-icon-transform);
+    }
+  }
+
+  // Accordion icon
+  &::after {
+    flex-shrink: 0;
+    -webkit-flex-shrink: 0;
+    width: var(--#{$prefix}accordion-btn-icon-width);
+    height: var(--#{$prefix}accordion-btn-icon-width);
+    margin-left: auto;
+    content: "";
+    background-image: var(--#{$prefix}accordion-btn-icon);
+    background-repeat: no-repeat;
+    background-size: var(--#{$prefix}accordion-btn-icon-width);
+    @include transition(var(--#{$prefix}accordion-btn-icon-transition));
+  }
+
+  &:hover {
+    z-index: 2;
+  }
+
+  &:focus {
+    z-index: 3;
+    border-color: var(--#{$prefix}accordion-btn-focus-border-color);
+    outline: 0;
+    box-shadow: var(--#{$prefix}accordion-btn-focus-box-shadow);
+  }
+}
+
+.accordion-header {
+  margin-bottom: 0;
+}
+
+.accordion-item {
+  color: var(--#{$prefix}accordion-color);
+  background-color: var(--#{$prefix}accordion-bg);
+  border: var(--#{$prefix}accordion-border-width) solid var(--#{$prefix}accordion-border-color);
+
+  &:first-of-type {
+    @include border-top-radius(var(--#{$prefix}accordion-border-radius));
+
+    .accordion-button {
+      @include border-top-radius(var(--#{$prefix}accordion-inner-border-radius));
+    }
+  }
+
+  &:not(:first-of-type) {
+    border-top: 0;
+  }
+
+  // Only set a border-radius on the last item if the accordion is collapsed
+  &:last-of-type {
+    @include border-bottom-radius(var(--#{$prefix}accordion-border-radius));
+
+    .accordion-button {
+      &.collapsed {
+        @include border-bottom-radius(var(--#{$prefix}accordion-inner-border-radius));
+      }
+    }
+
+    .accordion-collapse {
+      @include border-bottom-radius(var(--#{$prefix}accordion-border-radius));
+    }
+  }
+}
+
+.accordion-body {
+  padding: var(--#{$prefix}accordion-body-padding-y) var(--#{$prefix}accordion-body-padding-x);
+}
+
+
+// Flush accordion items
+//
+// Remove borders and border-radius to keep accordion items edge-to-edge.
+
+.accordion-flush {
+  .accordion-collapse {
+    border-width: 0;
+  }
+
+  .accordion-item {
+    border-right: 0;
+    border-left: 0;
+    @include border-radius(0);
+
+    &:first-child { border-top: 0; }
+    &:last-child { border-bottom: 0; }
+
+    .accordion-button {
+      &,
+      &.collapsed {
+        @include border-radius(0);
+      }
+    }
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_badge.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_badge.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_badge.scss	(revision 3762)
@@ -0,0 +1,38 @@
+// Base class
+//
+// Requires one of the contextual, color modifier classes for `color` and
+// `background-color`.
+
+.badge {
+  // scss-docs-start badge-css-vars
+  --#{$prefix}badge-padding-x: #{$badge-padding-x};
+  --#{$prefix}badge-padding-y: #{$badge-padding-y};
+  @include rfs($badge-font-size, --#{$prefix}badge-font-size);
+  --#{$prefix}badge-font-weight: #{$badge-font-weight};
+  --#{$prefix}badge-color: #{$badge-color};
+  --#{$prefix}badge-border-radius: #{$badge-border-radius};
+  // scss-docs-end badge-css-vars
+
+  display: inline-block;
+  padding: var(--#{$prefix}badge-padding-y) var(--#{$prefix}badge-padding-x);
+  @include font-size(var(--#{$prefix}badge-font-size));
+  font-weight: var(--#{$prefix}badge-font-weight);
+  line-height: 1;
+  color: var(--#{$prefix}badge-color);
+  text-align: center;
+  white-space: nowrap;
+  vertical-align: baseline;
+  @include border-radius(var(--#{$prefix}badge-border-radius));
+  @include gradient-bg();
+
+  // Empty badges collapse automatically
+  &:empty {
+    display: none;
+  }
+}
+
+// Quick fix for badges in buttons
+.btn .badge {
+  position: relative;
+  top: -1px;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_progress.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_progress.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_progress.scss	(revision 3762)
@@ -0,0 +1,63 @@
+// Disable animation if transitions are disabled
+
+// scss-docs-start progress-keyframes
+@if $enable-transitions {
+  @keyframes progress-bar-stripes {
+    0% { background-position-x: $progress-height; }
+  }
+}
+// scss-docs-end progress-keyframes
+
+.progress {
+  // scss-docs-start progress-css-vars
+  --#{$prefix}progress-height: #{$progress-height};
+  @include rfs($progress-font-size, --#{$prefix}progress-font-size);
+  --#{$prefix}progress-bg: #{$progress-bg};
+  --#{$prefix}progress-border-radius: #{$progress-border-radius};
+  --#{$prefix}progress-box-shadow: #{$progress-box-shadow};
+  --#{$prefix}progress-bar-color: #{$progress-bar-color};
+  --#{$prefix}progress-bar-bg: #{$progress-bar-bg};
+  --#{$prefix}progress-bar-transition: #{$progress-bar-transition};
+  // scss-docs-end progress-css-vars
+
+  display: flex;
+  display: -webkit-flex;
+  height: var(--#{$prefix}progress-height);
+  overflow: hidden; // force rounded corners by cropping it
+  @include font-size(var(--#{$prefix}progress-font-size));
+  background-color: var(--#{$prefix}progress-bg);
+  @include border-radius(var(--#{$prefix}progress-border-radius));
+  @include box-shadow(var(--#{$prefix}progress-box-shadow));
+}
+
+.progress-bar {
+  display: flex;
+  display: -webkit-flex;
+  flex-direction: column;
+  -webkit-flex-direction: column;
+  justify-content: center;
+  -webkit-justify-content: center;
+  overflow: hidden;
+  color: var(--#{$prefix}progress-bar-color);
+  text-align: center;
+  white-space: nowrap;
+  background-color: var(--#{$prefix}progress-bar-bg);
+  @include transition(var(--#{$prefix}progress-bar-transition));
+}
+
+.progress-bar-striped {
+  @include gradient-striped();
+  background-size: var(--#{$prefix}progress-height) var(--#{$prefix}progress-height);
+}
+
+@if $enable-transitions {
+  .progress-bar-animated {
+    animation: $progress-bar-animation-timing progress-bar-stripes;
+
+    @if $enable-reduced-motion {
+      @media (prefers-reduced-motion: reduce) {
+        animation: none;
+      }
+    }
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_images.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_images.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_images.scss	(revision 3762)
@@ -0,0 +1,42 @@
+// Responsive images (ensure images don't scale beyond their parents)
+//
+// This is purposefully opt-in via an explicit class rather than being the default for all `<img>`s.
+// We previously tried the "images are responsive by default" approach in Bootstrap v2,
+// and abandoned it in Bootstrap v3 because it breaks lots of third-party widgets (including Google Maps)
+// which weren't expecting the images within themselves to be involuntarily resized.
+// See also https://github.com/twbs/bootstrap/issues/18178
+.img-fluid {
+  @include img-fluid();
+}
+
+
+// Image thumbnails
+.img-thumbnail {
+  padding: $thumbnail-padding;
+  background-color: $thumbnail-bg;
+  border: $thumbnail-border-width solid $thumbnail-border-color;
+  @include border-radius($thumbnail-border-radius);
+  @include box-shadow($thumbnail-box-shadow);
+
+  // Keep them at most 100% wide
+  @include img-fluid();
+}
+
+//
+// Figures
+//
+
+.figure {
+  // Ensures the caption's text aligns with the image.
+  display: inline-block;
+}
+
+.figure-img {
+  margin-bottom: $spacer * .5;
+  line-height: 1;
+}
+
+.figure-caption {
+  @include font-size($figure-caption-font-size);
+  color: $figure-caption-color;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_button-group.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_button-group.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_button-group.scss	(revision 3762)
@@ -0,0 +1,149 @@
+// Make the div behave like a button
+.btn-group,
+.btn-group-vertical {
+  position: relative;
+  display: inline-flex;
+  vertical-align: middle; // match .btn alignment given font-size hack above
+
+  > .btn {
+    position: relative;
+    flex: 1 1 auto;
+    -webkit-flex: 1 1 auto;
+  }
+
+  // Bring the hover, focused, and "active" buttons to the front to overlay
+  // the borders properly
+  > .btn-check:checked + .btn,
+  > .btn-check:focus + .btn,
+  > .btn:hover,
+  > .btn:focus,
+  > .btn:active,
+  > .btn.active {
+    z-index: 1;
+  }
+}
+
+// Optional: Group multiple button groups together for a toolbar
+.btn-toolbar {
+  display: flex;
+  display: -webkit-flex;
+  flex-wrap: wrap;
+  -webkit-flex-wrap: wrap;
+  justify-content: flex-start;
+  -webkit-justify-content: flex-start;
+
+  .input-group {
+    width: auto;
+  }
+}
+
+.btn-group {
+  @include border-radius($btn-border-radius);
+
+  // Prevent double borders when buttons are next to each other
+  > :not(.btn-check:first-child) + .btn,
+  > .btn-group:not(:first-child) {
+    margin-left: -$btn-border-width;
+  }
+
+  // Reset rounded corners
+  > .btn:not(:last-child):not(.dropdown-toggle),
+  > .btn.dropdown-toggle-split:first-child,
+  > .btn-group:not(:last-child) > .btn {
+    @include border-end-radius(0);
+  }
+
+  // The left radius should be 0 if the button is:
+  // - the "third or more" child
+  // - the second child and the previous element isn't `.btn-check` (making it the first child visually)
+  // - part of a btn-group which isn't the first child
+  > .btn:nth-child(n + 3),
+  > :not(.btn-check) + .btn,
+  > .btn-group:not(:first-child) > .btn {
+    @include border-start-radius(0);
+  }
+}
+
+// Sizing
+//
+// Remix the default button sizing classes into new ones for easier manipulation.
+
+.btn-group-sm > .btn { @extend .btn-sm; }
+.btn-group-lg > .btn { @extend .btn-lg; }
+
+
+//
+// Split button dropdowns
+//
+
+.dropdown-toggle-split {
+  padding-right: $btn-padding-x * .75;
+  padding-left: $btn-padding-x * .75;
+
+  &::after,
+  .dropup &::after,
+  .dropend &::after {
+    margin-left: 0;
+  }
+
+  .dropstart &::before {
+    margin-right: 0;
+  }
+}
+
+.btn-sm + .dropdown-toggle-split {
+  padding-right: $btn-padding-x-sm * .75;
+  padding-left: $btn-padding-x-sm * .75;
+}
+
+.btn-lg + .dropdown-toggle-split {
+  padding-right: $btn-padding-x-lg * .75;
+  padding-left: $btn-padding-x-lg * .75;
+}
+
+
+// The clickable button for toggling the menu
+// Set the same inset shadow as the :active state
+.btn-group.show .dropdown-toggle {
+  @include box-shadow($btn-active-box-shadow);
+
+  // Show no shadow for `.btn-link` since it has no other button styles.
+  &.btn-link {
+    @include box-shadow(none);
+  }
+}
+
+
+//
+// Vertical button groups
+//
+
+.btn-group-vertical {
+  flex-direction: column;
+  -webkit-flex-direction: column;
+  align-items: flex-start;
+  -webkit-align-items: flex-start;
+  justify-content: center;
+  -webkit-justify-content: center;
+
+  > .btn,
+  > .btn-group {
+    width: 100%;
+  }
+
+  > .btn:not(:first-child),
+  > .btn-group:not(:first-child) {
+    margin-top: -$btn-border-width;
+  }
+
+  // Reset rounded corners
+  > .btn:not(:last-child):not(.dropdown-toggle),
+  > .btn-group:not(:last-child) > .btn {
+    @include border-bottom-radius(0);
+  }
+
+  > .btn ~ .btn,
+  > .btn-group:not(:first-child) > .btn {
+    @include border-top-radius(0);
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_placeholders.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_placeholders.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_placeholders.scss	(revision 3762)
@@ -0,0 +1,54 @@
+.placeholder {
+  display: inline-block;
+  min-height: 1em;
+  vertical-align: middle;
+  cursor: wait;
+  background-color: currentcolor;
+  opacity: $placeholder-opacity-max;
+
+  &.btn::before {
+    display: inline-block;
+    content: "";
+  }
+}
+
+// Sizing
+.placeholder-xs {
+  min-height: .6em;
+}
+
+.placeholder-sm {
+  min-height: .8em;
+}
+
+.placeholder-lg {
+  min-height: 1.2em;
+}
+
+// Animation
+.placeholder-glow {
+  .placeholder {
+    animation: placeholder-glow 2s ease-in-out infinite;
+  }
+}
+
+@keyframes placeholder-glow {
+  50% {
+    opacity: $placeholder-opacity-min;
+  }
+}
+
+.placeholder-wave {
+  mask-image: linear-gradient(130deg, $black 55%, rgba(0, 0, 0, (1 - $placeholder-opacity-min)) 75%, $black 95%);
+  -webkit-mask-image: linear-gradient(130deg, $black 55%, rgba(0, 0, 0, (1 - $placeholder-opacity-min)) 75%, $black 95%);
+  mask-size: 200% 100%;
+  -webkit-mask-size: 200% 100%;
+  animation: placeholder-wave 2s linear infinite;
+}
+
+@keyframes placeholder-wave {
+  100% {
+    mask-position: -200% 0%;
+    -webkit-mask-position: -200% 0%;
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/bootstrap-reboot.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/bootstrap-reboot.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/bootstrap-reboot.scss	(revision 3762)
@@ -0,0 +1,9 @@
+@import "mixins/banner";
+@include bsBanner(Reboot);
+
+@import "functions";
+@import "variables";
+@import "maps";
+@import "mixins";
+@import "root";
+@import "reboot";
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_offcanvas.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_offcanvas.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_offcanvas.scss	(revision 3762)
@@ -0,0 +1,152 @@
+// stylelint-disable function-disallowed-list
+
+%offcanvas-css-vars {
+  // scss-docs-start offcanvas-css-vars
+  --#{$prefix}offcanvas-zindex: #{$zindex-offcanvas};
+  --#{$prefix}offcanvas-width: #{$offcanvas-horizontal-width};
+  --#{$prefix}offcanvas-height: #{$offcanvas-vertical-height};
+  --#{$prefix}offcanvas-padding-x: #{$offcanvas-padding-x};
+  --#{$prefix}offcanvas-padding-y: #{$offcanvas-padding-y};
+  --#{$prefix}offcanvas-color: #{$offcanvas-color};
+  --#{$prefix}offcanvas-bg: #{$offcanvas-bg-color};
+  --#{$prefix}offcanvas-border-width: #{$offcanvas-border-width};
+  --#{$prefix}offcanvas-border-color: #{$offcanvas-border-color};
+  --#{$prefix}offcanvas-box-shadow: #{$offcanvas-box-shadow};
+  // scss-docs-end offcanvas-css-vars
+}
+
+@each $breakpoint in map-keys($grid-breakpoints) {
+  $next: breakpoint-next($breakpoint, $grid-breakpoints);
+  $infix: breakpoint-infix($next, $grid-breakpoints);
+
+  .offcanvas#{$infix} {
+    @extend %offcanvas-css-vars;
+  }
+}
+
+@each $breakpoint in map-keys($grid-breakpoints) {
+  $next: breakpoint-next($breakpoint, $grid-breakpoints);
+  $infix: breakpoint-infix($next, $grid-breakpoints);
+
+  .offcanvas#{$infix} {
+    @include media-breakpoint-down($next) {
+      position: fixed;
+      bottom: 0;
+      z-index: var(--#{$prefix}offcanvas-zindex);
+      display: flex;
+      display: -webkit-flex;
+      flex-direction: column;
+      -webkit-flex-direction: column;
+      max-width: 100%;
+      color: var(--#{$prefix}offcanvas-color);
+      visibility: hidden;
+      background-color: var(--#{$prefix}offcanvas-bg);
+      background-clip: padding-box;
+      outline: 0;
+      @include box-shadow(var(--#{$prefix}offcanvas-box-shadow));
+      @include transition(transform $offcanvas-transition-duration ease-in-out);
+
+      &.offcanvas-start {
+        top: 0;
+        left: 0;
+        width: var(--#{$prefix}offcanvas-width);
+        border-right: var(--#{$prefix}offcanvas-border-width) solid var(--#{$prefix}offcanvas-border-color);
+        transform: translateX(-100%);
+      }
+
+      &.offcanvas-end {
+        top: 0;
+        right: 0;
+        width: var(--#{$prefix}offcanvas-width);
+        border-left: var(--#{$prefix}offcanvas-border-width) solid var(--#{$prefix}offcanvas-border-color);
+        transform: translateX(100%);
+      }
+
+      &.offcanvas-top {
+        top: 0;
+        right: 0;
+        left: 0;
+        height: var(--#{$prefix}offcanvas-height);
+        max-height: 100%;
+        border-bottom: var(--#{$prefix}offcanvas-border-width) solid var(--#{$prefix}offcanvas-border-color);
+        transform: translateY(-100%);
+      }
+
+      &.offcanvas-bottom {
+        right: 0;
+        left: 0;
+        height: var(--#{$prefix}offcanvas-height);
+        max-height: 100%;
+        border-top: var(--#{$prefix}offcanvas-border-width) solid var(--#{$prefix}offcanvas-border-color);
+        transform: translateY(100%);
+      }
+
+      &.showing,
+      &.show:not(.hiding) {
+        transform: none;
+      }
+
+      &.showing,
+      &.hiding,
+      &.show {
+        visibility: visible;
+      }
+    }
+
+    @if not ($infix == "") {
+      @include media-breakpoint-up($next) {
+        --#{$prefix}offcanvas-height: auto;
+        --#{$prefix}offcanvas-border-width: 0;
+        background-color: transparent !important; // stylelint-disable-line declaration-no-important
+
+        .offcanvas-header {
+          display: none;
+        }
+
+        .offcanvas-body {
+          display: flex;
+          display: -webkit-flex;
+          flex-grow: 0;
+          -webkit-flex-grow: 0;
+          padding: 0;
+          overflow-y: visible;
+          // Reset `background-color` in case `.bg-*` classes are used in offcanvas
+          background-color: transparent !important; // stylelint-disable-line declaration-no-important
+        }
+      }
+    }
+  }
+}
+
+.offcanvas-backdrop {
+  @include overlay-backdrop($zindex-offcanvas-backdrop, $offcanvas-backdrop-bg, $offcanvas-backdrop-opacity);
+}
+
+.offcanvas-header {
+  display: flex;
+  display: -webkit-flex;
+  align-items: center;
+  -webkit-align-items: center;
+  justify-content: space-between;
+  -webkit-justify-content: space-between;
+  padding: var(--#{$prefix}offcanvas-padding-y) var(--#{$prefix}offcanvas-padding-x);
+
+  .btn-close {
+    padding: calc(var(--#{$prefix}offcanvas-padding-y) * .5) calc(var(--#{$prefix}offcanvas-padding-x) * .5);
+    margin-top: calc(-.5 * var(--#{$prefix}offcanvas-padding-y));
+    margin-right: calc(-.5 * var(--#{$prefix}offcanvas-padding-x));
+    margin-bottom: calc(-.5 * var(--#{$prefix}offcanvas-padding-y));
+  }
+}
+
+.offcanvas-title {
+  margin-bottom: 0;
+  line-height: $offcanvas-title-line-height;
+}
+
+.offcanvas-body {
+  flex-grow: 1;
+  -webkit-flex-grow: 1;
+  padding: var(--#{$prefix}offcanvas-padding-y) var(--#{$prefix}offcanvas-padding-x);
+  overflow-y: auto;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_alert.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_alert.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_alert.scss	(revision 3762)
@@ -0,0 +1,71 @@
+//
+// Base styles
+//
+
+.alert {
+  // scss-docs-start alert-css-vars
+  --#{$prefix}alert-bg: transparent;
+  --#{$prefix}alert-padding-x: #{$alert-padding-x};
+  --#{$prefix}alert-padding-y: #{$alert-padding-y};
+  --#{$prefix}alert-margin-bottom: #{$alert-margin-bottom};
+  --#{$prefix}alert-color: inherit;
+  --#{$prefix}alert-border-color: transparent;
+  --#{$prefix}alert-border: #{$alert-border-width} solid var(--#{$prefix}alert-border-color);
+  --#{$prefix}alert-border-radius: #{$alert-border-radius};
+  // scss-docs-end alert-css-vars
+
+  position: relative;
+  padding: var(--#{$prefix}alert-padding-y) var(--#{$prefix}alert-padding-x);
+  margin-bottom: var(--#{$prefix}alert-margin-bottom);
+  color: var(--#{$prefix}alert-color);
+  background-color: var(--#{$prefix}alert-bg);
+  border: var(--#{$prefix}alert-border);
+  @include border-radius(var(--#{$prefix}alert-border-radius));
+}
+
+// Headings for larger alerts
+.alert-heading {
+  // Specified to prevent conflicts of changing $headings-color
+  color: inherit;
+}
+
+// Provide class for links that match alerts
+.alert-link {
+  font-weight: $alert-link-font-weight;
+}
+
+
+// Dismissible alerts
+//
+// Expand the right padding and account for the close button's positioning.
+
+.alert-dismissible {
+  padding-right: $alert-dismissible-padding-r;
+
+  // Adjust close link position
+  .btn-close {
+    position: absolute;
+    top: 0;
+    right: 0;
+    z-index: $stretched-link-z-index + 1;
+    padding: $alert-padding-y * 1.25 $alert-padding-x;
+  }
+}
+
+
+// scss-docs-start alert-modifiers
+// Generate contextual modifier classes for colorizing the alert.
+
+@each $state, $value in $theme-colors {
+  $alert-background: shift-color($value, $alert-bg-scale);
+  $alert-border: shift-color($value, $alert-border-scale);
+  $alert-color: shift-color($value, $alert-color-scale);
+
+  @if (contrast-ratio($alert-background, $alert-color) < $min-contrast-ratio) {
+    $alert-color: mix($value, color-contrast($alert-background), abs($alert-color-scale));
+  }
+  .alert-#{$state} {
+    @include alert-variant($alert-background, $alert-border, $alert-color);
+  }
+}
+// scss-docs-end alert-modifiers
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_functions.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_functions.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_functions.scss	(revision 3762)
@@ -0,0 +1,302 @@
+// Bootstrap functions
+//
+// Utility mixins and functions for evaluating source code across our variables, maps, and mixins.
+
+// Ascending
+// Used to evaluate Sass maps like our grid breakpoints.
+@mixin _assert-ascending($map, $map-name) {
+  $prev-key: null;
+  $prev-num: null;
+  @each $key, $num in $map {
+    @if $prev-num == null or unit($num) == "%" or unit($prev-num) == "%" {
+      // Do nothing
+    } @else if not comparable($prev-num, $num) {
+      @warn "Potentially invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} whose unit makes it incomparable to #{$prev-num}, the value of the previous key '#{$prev-key}' !";
+    } @else if $prev-num >= $num {
+      @warn "Invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} which isn't greater than #{$prev-num}, the value of the previous key '#{$prev-key}' !";
+    }
+    $prev-key: $key;
+    $prev-num: $num;
+  }
+}
+
+// Starts at zero
+// Used to ensure the min-width of the lowest breakpoint starts at 0.
+@mixin _assert-starts-at-zero($map, $map-name: "$grid-breakpoints") {
+  @if length($map) > 0 {
+    $values: map-values($map);
+    $first-value: nth($values, 1);
+    @if $first-value != 0 {
+      @warn "First breakpoint in #{$map-name} must start at 0, but starts at #{$first-value}.";
+    }
+  }
+}
+
+// Colors
+@function to-rgb($value) {
+  @return red($value), green($value), blue($value);
+}
+
+// stylelint-disable scss/dollar-variable-pattern
+@function rgba-css-var($identifier, $target) {
+  @if $identifier == "body" and $target == "bg" {
+    @return rgba(var(--#{$prefix}#{$identifier}-bg-rgb), var(--#{$prefix}#{$target}-opacity));
+  } @if $identifier == "body" and $target == "text" {
+    @return rgba(var(--#{$prefix}#{$identifier}-color-rgb), var(--#{$prefix}#{$target}-opacity));
+  } @else {
+    @return rgba(var(--#{$prefix}#{$identifier}-rgb), var(--#{$prefix}#{$target}-opacity));
+  }
+}
+
+@function map-loop($map, $func, $args...) {
+  $_map: ();
+
+  @each $key, $value in $map {
+    // allow to pass the $key and $value of the map as an function argument
+    $_args: ();
+    @each $arg in $args {
+      $_args: append($_args, if($arg == "$key", $key, if($arg == "$value", $value, $arg)));
+    }
+
+    $_map: map-merge($_map, ($key: call(get-function($func), $_args...)));
+  }
+
+  @return $_map;
+}
+// stylelint-enable scss/dollar-variable-pattern
+
+@function varify($list) {
+  $result: null;
+  @each $entry in $list {
+    $result: append($result, var(--#{$prefix}#{$entry}), space);
+  }
+  @return $result;
+}
+
+// Internal Bootstrap function to turn maps into its negative variant.
+// It prefixes the keys with `n` and makes the value negative.
+@function negativify-map($map) {
+  $result: ();
+  @each $key, $value in $map {
+    @if $key != 0 {
+      $result: map-merge($result, ("n" + $key: (-$value)));
+    }
+  }
+  @return $result;
+}
+
+// Get multiple keys from a sass map
+@function map-get-multiple($map, $values) {
+  $result: ();
+  @each $key, $value in $map {
+    @if (index($values, $key) != null) {
+      $result: map-merge($result, ($key: $value));
+    }
+  }
+  @return $result;
+}
+
+// Merge multiple maps
+@function map-merge-multiple($maps...) {
+  $merged-maps: ();
+
+  @each $map in $maps {
+    $merged-maps: map-merge($merged-maps, $map);
+  }
+  @return $merged-maps;
+}
+
+// Replace `$search` with `$replace` in `$string`
+// Used on our SVG icon backgrounds for custom forms.
+//
+// @author Kitty Giraudel
+// @param {String} $string - Initial string
+// @param {String} $search - Substring to replace
+// @param {String} $replace ('') - New value
+// @return {String} - Updated string
+@function str-replace($string, $search, $replace: "") {
+  $index: str-index($string, $search);
+
+  @if $index {
+    @return str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace);
+  }
+
+  @return $string;
+}
+
+// See https://codepen.io/kevinweber/pen/dXWoRw
+//
+// Requires the use of quotes around data URIs.
+
+@function escape-svg($string) {
+  @if str-index($string, "data:image/svg+xml") {
+    @each $char, $encoded in $escaped-characters {
+      // Do not escape the url brackets
+      @if str-index($string, "url(") == 1 {
+        $string: url("#{str-replace(str-slice($string, 6, -3), $char, $encoded)}");
+      } @else {
+        $string: str-replace($string, $char, $encoded);
+      }
+    }
+  }
+
+  @return $string;
+}
+
+// Color contrast
+// See https://github.com/twbs/bootstrap/pull/30168
+
+// A list of pre-calculated numbers of pow(divide((divide($value, 255) + .055), 1.055), 2.4). (from 0 to 255)
+// stylelint-disable-next-line scss/dollar-variable-default, scss/dollar-variable-pattern
+$_luminance-list: .0008 .001 .0011 .0013 .0015 .0017 .002 .0022 .0025 .0027 .003 .0033 .0037 .004 .0044 .0048 .0052 .0056 .006 .0065 .007 .0075 .008 .0086 .0091 .0097 .0103 .011 .0116 .0123 .013 .0137 .0144 .0152 .016 .0168 .0176 .0185 .0194 .0203 .0212 .0222 .0232 .0242 .0252 .0262 .0273 .0284 .0296 .0307 .0319 .0331 .0343 .0356 .0369 .0382 .0395 .0409 .0423 .0437 .0452 .0467 .0482 .0497 .0513 .0529 .0545 .0561 .0578 .0595 .0612 .063 .0648 .0666 .0685 .0704 .0723 .0742 .0762 .0782 .0802 .0823 .0844 .0865 .0887 .0908 .0931 .0953 .0976 .0999 .1022 .1046 .107 .1095 .1119 .1144 .117 .1195 .1221 .1248 .1274 .1301 .1329 .1356 .1384 .1413 .1441 .147 .15 .1529 .1559 .159 .162 .1651 .1683 .1714 .1746 .1779 .1812 .1845 .1878 .1912 .1946 .1981 .2016 .2051 .2086 .2122 .2159 .2195 .2232 .227 .2307 .2346 .2384 .2423 .2462 .2502 .2542 .2582 .2623 .2664 .2705 .2747 .2789 .2831 .2874 .2918 .2961 .3005 .305 .3095 .314 .3185 .3231 .3278 .3325 .3372 .3419 .3467 .3515 .3564 .3613 .3663 .3712 .3763 .3813 .3864 .3916 .3968 .402 .4072 .4125 .4179 .4233 .4287 .4342 .4397 .4452 .4508 .4564 .4621 .4678 .4735 .4793 .4851 .491 .4969 .5029 .5089 .5149 .521 .5271 .5333 .5395 .5457 .552 .5583 .5647 .5711 .5776 .5841 .5906 .5972 .6038 .6105 .6172 .624 .6308 .6376 .6445 .6514 .6584 .6654 .6724 .6795 .6867 .6939 .7011 .7084 .7157 .7231 .7305 .7379 .7454 .7529 .7605 .7682 .7758 .7835 .7913 .7991 .807 .8148 .8228 .8308 .8388 .8469 .855 .8632 .8714 .8796 .8879 .8963 .9047 .9131 .9216 .9301 .9387 .9473 .956 .9647 .9734 .9823 .9911 1;
+
+@function color-contrast($background, $color-contrast-dark: $color-contrast-dark, $color-contrast-light: $color-contrast-light, $min-contrast-ratio: $min-contrast-ratio) {
+  $foregrounds: $color-contrast-light, $color-contrast-dark, $white, $black;
+  $max-ratio: 0;
+  $max-ratio-color: null;
+
+  @each $color in $foregrounds {
+    $contrast-ratio: contrast-ratio($background, $color);
+    @if $contrast-ratio > $min-contrast-ratio {
+      @return $color;
+    } @else if $contrast-ratio > $max-ratio {
+      $max-ratio: $contrast-ratio;
+      $max-ratio-color: $color;
+    }
+  }
+
+  @warn "Found no color leading to #{$min-contrast-ratio}:1 contrast ratio against #{$background}...";
+
+  @return $max-ratio-color;
+}
+
+@function contrast-ratio($background, $foreground: $color-contrast-light) {
+  $l1: luminance($background);
+  $l2: luminance(opaque($background, $foreground));
+
+  @return if($l1 > $l2, divide($l1 + .05, $l2 + .05), divide($l2 + .05, $l1 + .05));
+}
+
+// Return WCAG2.1 relative luminance
+// See https://www.w3.org/TR/WCAG/#dfn-relative-luminance
+// See https://www.w3.org/TR/WCAG/#dfn-contrast-ratio
+@function luminance($color) {
+  $rgb: (
+    "r": red($color),
+    "g": green($color),
+    "b": blue($color)
+  );
+
+  @each $name, $value in $rgb {
+    $value: if(divide($value, 255) < .03928, divide(divide($value, 255), 12.92), nth($_luminance-list, $value + 1));
+    $rgb: map-merge($rgb, ($name: $value));
+  }
+
+  @return (map-get($rgb, "r") * .2126) + (map-get($rgb, "g") * .7152) + (map-get($rgb, "b") * .0722);
+}
+
+// Return opaque color
+// opaque(#fff, rgba(0, 0, 0, .5)) => #808080
+@function opaque($background, $foreground) {
+  @return mix(rgba($foreground, 1), $background, opacity($foreground) * 100);
+}
+
+// scss-docs-start color-functions
+// Tint a color: mix a color with white
+@function tint-color($color, $weight) {
+  @return mix(white, $color, $weight);
+}
+
+// Shade a color: mix a color with black
+@function shade-color($color, $weight) {
+  @return mix(black, $color, $weight);
+}
+
+// Shade the color if the weight is positive, else tint it
+@function shift-color($color, $weight) {
+  @return if($weight > 0, shade-color($color, $weight), tint-color($color, -$weight));
+}
+// scss-docs-end color-functions
+
+// Return valid calc
+@function add($value1, $value2, $return-calc: true) {
+  @if $value1 == null {
+    @return $value2;
+  }
+
+  @if $value2 == null {
+    @return $value1;
+  }
+
+  @if type-of($value1) == number and type-of($value2) == number and comparable($value1, $value2) {
+    @return $value1 + $value2;
+  }
+
+  @return if($return-calc == true, calc(#{$value1} + #{$value2}), $value1 + unquote(" + ") + $value2);
+}
+
+@function subtract($value1, $value2, $return-calc: true) {
+  @if $value1 == null and $value2 == null {
+    @return null;
+  }
+
+  @if $value1 == null {
+    @return -$value2;
+  }
+
+  @if $value2 == null {
+    @return $value1;
+  }
+
+  @if type-of($value1) == number and type-of($value2) == number and comparable($value1, $value2) {
+    @return $value1 - $value2;
+  }
+
+  @if type-of($value2) != number {
+    $value2: unquote("(") + $value2 + unquote(")");
+  }
+
+  @return if($return-calc == true, calc(#{$value1} - #{$value2}), $value1 + unquote(" - ") + $value2);
+}
+
+@function divide($dividend, $divisor, $precision: 10) {
+  $sign: if($dividend > 0 and $divisor > 0 or $dividend < 0 and $divisor < 0, 1, -1);
+  $dividend: abs($dividend);
+  $divisor: abs($divisor);
+  @if $dividend == 0 {
+    @return 0;
+  }
+  @if $divisor == 0 {
+    @error "Cannot divide by 0";
+  }
+  $remainder: $dividend;
+  $result: 0;
+  $factor: 10;
+  @while ($remainder > 0 and $precision >= 0) {
+    $quotient: 0;
+    @while ($remainder >= $divisor) {
+      $remainder: $remainder - $divisor;
+      $quotient: $quotient + 1;
+    }
+    $result: $result * 10 + $quotient;
+    $factor: $factor * .1;
+    $remainder: $remainder * 10;
+    $precision: $precision - 1;
+    @if ($precision < 0 and $remainder >= $divisor * 5) {
+      $result: $result + 1;
+    }
+  }
+  $result: $result * $factor * $sign;
+  $dividend-unit: unit($dividend);
+  $divisor-unit: unit($divisor);
+  $unit-map: (
+    "px": 1px,
+    "rem": 1rem,
+    "em": 1em,
+    "%": 1%
+  );
+  @if ($dividend-unit != $divisor-unit and map-has-key($unit-map, $dividend-unit)) {
+    $result: $result * map-get($unit-map, $dividend-unit);
+  }
+  @return $result;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_navbar.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_navbar.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_navbar.scss	(revision 3762)
@@ -0,0 +1,310 @@
+// Navbar
+//
+// Provide a static navbar from which we expand to create full-width, fixed, and
+// other navbar variations.
+
+.navbar {
+  // scss-docs-start navbar-css-vars
+  --#{$prefix}navbar-padding-x: #{if($navbar-padding-x == null, 0, $navbar-padding-x)};
+  --#{$prefix}navbar-padding-y: #{$navbar-padding-y};
+  --#{$prefix}navbar-color: #{$navbar-light-color};
+  --#{$prefix}navbar-hover-color: #{$navbar-light-hover-color};
+  --#{$prefix}navbar-disabled-color: #{$navbar-light-disabled-color};
+  --#{$prefix}navbar-active-color: #{$navbar-light-active-color};
+  --#{$prefix}navbar-brand-padding-y: #{$navbar-brand-padding-y};
+  --#{$prefix}navbar-brand-margin-end: #{$navbar-brand-margin-end};
+  --#{$prefix}navbar-brand-font-size: #{$navbar-brand-font-size};
+  --#{$prefix}navbar-brand-color: #{$navbar-light-brand-color};
+  --#{$prefix}navbar-brand-hover-color: #{$navbar-light-brand-hover-color};
+  --#{$prefix}navbar-nav-link-padding-x: #{$navbar-nav-link-padding-x};
+  --#{$prefix}navbar-toggler-padding-y: #{$navbar-toggler-padding-y};
+  --#{$prefix}navbar-toggler-padding-x: #{$navbar-toggler-padding-x};
+  --#{$prefix}navbar-toggler-font-size: #{$navbar-toggler-font-size};
+  --#{$prefix}navbar-toggler-icon-bg: #{escape-svg($navbar-light-toggler-icon-bg)};
+  --#{$prefix}navbar-toggler-border-color: #{$navbar-light-toggler-border-color};
+  --#{$prefix}navbar-toggler-border-radius: #{$navbar-toggler-border-radius};
+  --#{$prefix}navbar-toggler-focus-width: #{$navbar-toggler-focus-width};
+  --#{$prefix}navbar-toggler-transition: #{$navbar-toggler-transition};
+  // scss-docs-end navbar-css-vars
+
+  position: relative;
+  display: flex;
+  display: -webkit-flex;
+  flex-wrap: wrap; // allow us to do the line break for collapsing content
+  -webkit-flex-wrap: wrap; // allow us to do the line break for collapsing content
+  align-items: center;
+  -webkit-align-items: center;
+  justify-content: space-between; // space out brand from logo
+  -webkit-justify-content: space-between; // space out brand from logo
+  padding: var(--#{$prefix}navbar-padding-y) var(--#{$prefix}navbar-padding-x);
+  @include gradient-bg();
+
+  // Because flex properties aren't inherited, we need to redeclare these first
+  // few properties so that content nested within behave properly.
+  // The `flex-wrap` property is inherited to simplify the expanded navbars
+  %container-flex-properties {
+    display: flex;
+    display: -webkit-flex;
+    flex-wrap: inherit;
+    -webkit-flex-wrap: inherit;
+    align-items: center;
+    -webkit-align-items: center;
+    justify-content: space-between;
+    -webkit-justify-content: space-between;
+  }
+
+  > .container,
+  > .container-fluid {
+    @extend %container-flex-properties;
+  }
+
+  @each $breakpoint, $container-max-width in $container-max-widths {
+    > .container#{breakpoint-infix($breakpoint, $container-max-widths)} {
+      @extend %container-flex-properties;
+    }
+  }
+}
+
+
+// Navbar brand
+//
+// Used for brand, project, or site names.
+
+.navbar-brand {
+  padding-top: var(--#{$prefix}navbar-brand-padding-y);
+  padding-bottom: var(--#{$prefix}navbar-brand-padding-y);
+  margin-right: var(--#{$prefix}navbar-brand-margin-end);
+  @include font-size(var(--#{$prefix}navbar-brand-font-size));
+  color: var(--#{$prefix}navbar-brand-color);
+  text-decoration: if($link-decoration == none, null, none);
+  -webkit-text-decoration: if($link-decoration == none, null, none);
+  -moz-text-decoration: if($link-decoration == none, null, none);
+  -ms-text-decoration: if($link-decoration == none, null, none);
+  -o-text-decoration: if($link-decoration == none, null, none);
+  white-space: nowrap;
+
+  &:hover,
+  &:focus {
+    color: var(--#{$prefix}navbar-brand-hover-color);
+    text-decoration: if($link-hover-decoration == underline, none, null);
+    -webkit-text-decoration: if($link-hover-decoration == underline, none, null);
+    -moz-text-decoration: if($link-hover-decoration == underline, none, null);
+    -ms-text-decoration: if($link-hover-decoration == underline, none, null);
+    -o-text-decoration: if($link-hover-decoration == underline, none, null);
+  }
+}
+
+
+// Navbar nav
+//
+// Custom navbar navigation (doesn't require `.nav`, but does make use of `.nav-link`).
+
+.navbar-nav {
+  // scss-docs-start navbar-nav-css-vars
+  --#{$prefix}nav-link-padding-x: 0;
+  --#{$prefix}nav-link-padding-y: #{$nav-link-padding-y};
+  @include rfs($nav-link-font-size, --#{$prefix}nav-link-font-size);
+  --#{$prefix}nav-link-font-weight: #{$nav-link-font-weight};
+  --#{$prefix}nav-link-color: var(--#{$prefix}navbar-color);
+  --#{$prefix}nav-link-hover-color: var(--#{$prefix}navbar-hover-color);
+  --#{$prefix}nav-link-disabled-color: var(--#{$prefix}navbar-disabled-color);
+  // scss-docs-end navbar-nav-css-vars
+
+  display: flex;
+  display: -webkit-flex;
+  flex-direction: column; // cannot use `inherit` to get the `.navbar`s value
+  -webkit-flex-direction: column; // cannot use `inherit` to get the `.navbar`s value
+  padding-left: 0;
+  margin-bottom: 0;
+  list-style: none;
+
+  .show > .nav-link,
+  .active > .nav-link,
+  .nav-link.active {
+    color: var(--#{$prefix}navbar-active-color);
+  }
+
+  .dropdown-menu {
+    position: static;
+  }
+}
+
+
+// Navbar text
+//
+//
+
+.navbar-text {
+  padding-top: $nav-link-padding-y;
+  padding-bottom: $nav-link-padding-y;
+  color: var(--#{$prefix}navbar-color);
+
+  a,
+  a:hover,
+  a:focus  {
+    color: var(--#{$prefix}navbar-active-color);
+  }
+}
+
+
+// Responsive navbar
+//
+// Custom styles for responsive collapsing and toggling of navbar contents.
+// Powered by the collapse Bootstrap JavaScript plugin.
+
+// When collapsed, prevent the toggleable navbar contents from appearing in
+// the default flexbox row orientation. Requires the use of `flex-wrap: wrap`
+// on the `.navbar` parent.
+.navbar-collapse {
+  flex-basis: 100%;
+  -webkit-flex-basis: 100%;
+  flex-grow: 1;
+  -webkit-flex-grow: 1;
+  // For always expanded or extra full navbars, ensure content aligns itself
+  // properly vertically. Can be easily overridden with flex utilities.
+  align-items: center;
+  -webkit-align-items: center;
+}
+
+// Button for toggling the navbar when in its collapsed state
+.navbar-toggler {
+  padding: var(--#{$prefix}navbar-toggler-padding-y) var(--#{$prefix}navbar-toggler-padding-x);
+  @include font-size(var(--#{$prefix}navbar-toggler-font-size));
+  line-height: 1;
+  color: var(--#{$prefix}navbar-color);
+  background-color: transparent; // remove default button style
+  border: var(--#{$prefix}border-width) solid var(--#{$prefix}navbar-toggler-border-color); // remove default button style
+  @include border-radius(var(--#{$prefix}navbar-toggler-border-radius));
+  @include transition(var(--#{$prefix}navbar-toggler-transition));
+
+  &:hover {
+    text-decoration: none;
+  }
+
+  &:focus {
+    text-decoration: none;
+    outline: 0;
+    box-shadow: 0 0 0 var(--#{$prefix}navbar-toggler-focus-width);
+  }
+}
+
+// Keep as a separate element so folks can easily override it with another icon
+// or image file as needed.
+.navbar-toggler-icon {
+  display: inline-block;
+  width: 1.5em;
+  height: 1.5em;
+  vertical-align: middle;
+  background-image: var(--#{$prefix}navbar-toggler-icon-bg);
+  background-repeat: no-repeat;
+  background-position: center;
+  background-size: 100%;
+}
+
+.navbar-nav-scroll {
+  max-height: var(--#{$prefix}scroll-height, 75vh);
+  overflow-y: auto;
+}
+
+// scss-docs-start navbar-expand-loop
+// Generate series of `.navbar-expand-*` responsive classes for configuring
+// where your navbar collapses.
+.navbar-expand {
+  @each $breakpoint in map-keys($grid-breakpoints) {
+    $next: breakpoint-next($breakpoint, $grid-breakpoints);
+    $infix: breakpoint-infix($next, $grid-breakpoints);
+
+    // stylelint-disable-next-line scss/selector-no-union-class-name
+    &#{$infix} {
+      @include media-breakpoint-up($next) {
+        flex-wrap: nowrap;
+        -webkit-flex-wrap: nowrap;
+        justify-content: flex-start;
+        -webkit-justify-content: flex-start;
+
+        .navbar-nav {
+          flex-direction: row;
+          -webkit-flex-direction: row;
+
+          .dropdown-menu {
+            position: absolute;
+          }
+
+          .nav-link {
+            padding-right: var(--#{$prefix}navbar-nav-link-padding-x);
+            padding-left: var(--#{$prefix}navbar-nav-link-padding-x);
+          }
+        }
+
+        .navbar-nav-scroll {
+          overflow: visible;
+        }
+
+        .navbar-collapse {
+          display: flex !important; // stylelint-disable-line declaration-no-important
+          display: -webkit-flex !important; // stylelint-disable-line declaration-no-important
+          flex-basis: auto;
+          -webkit-flex-basis: auto;
+        }
+
+        .navbar-toggler {
+          display: none;
+        }
+
+        .offcanvas {
+          // stylelint-disable declaration-no-important
+          position: static;
+          z-index: auto;
+          flex-grow: 1;
+          -webkit-flex-grow: 1;
+          width: auto !important;
+          height: auto !important;
+          visibility: visible !important;
+          background-color: transparent !important;
+          border: 0 !important;
+          transform: none !important;
+          @include box-shadow(none);
+          @include transition(none);
+          // stylelint-enable declaration-no-important
+
+          .offcanvas-header {
+            display: none;
+          }
+
+          .offcanvas-body {
+            display: flex;
+            display: -webkit-flex;
+            flex-grow: 0;
+            -webkit-flex-grow: 0;
+            padding: 0;
+            overflow-y: visible;
+          }
+        }
+      }
+    }
+  }
+}
+// scss-docs-end navbar-expand-loop
+
+// Navbar themes
+//
+// Styles for switching between navbars with light or dark background.
+
+.navbar-light {
+  background-color: $navbar-light-bg; // not !important so .bg-* utilities can still override
+  @include deprecate("`.navbar-light`", "v5.2.0", "v6.0.0", true);
+}
+
+.navbar-dark {
+  background-color: $navbar-dark-bg; // not !important so .bg-* utilities can still override
+  // scss-docs-start navbar-dark-css-vars
+  --#{$prefix}navbar-color: #{$navbar-dark-color};
+  --#{$prefix}navbar-hover-color: #{$navbar-dark-hover-color};
+  --#{$prefix}navbar-disabled-color: #{$navbar-dark-disabled-color};
+  --#{$prefix}navbar-active-color: #{$navbar-dark-active-color};
+  --#{$prefix}navbar-brand-color: #{$navbar-dark-brand-color};
+  --#{$prefix}navbar-brand-hover-color: #{$navbar-dark-brand-hover-color};
+  --#{$prefix}navbar-toggler-border-color: #{$navbar-dark-toggler-border-color};
+  --#{$prefix}navbar-toggler-icon-bg: #{escape-svg($navbar-dark-toggler-icon-bg)};
+  // scss-docs-end navbar-dark-css-vars
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/forms/_form-select.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/forms/_form-select.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/forms/_form-select.scss	(revision 3762)
@@ -0,0 +1,75 @@
+// Select
+//
+// Replaces the browser default select with a custom one, mostly pulled from
+// https://primer.github.io/.
+
+.form-select {
+  display: block;
+  width: 100%;
+  padding: $form-select-padding-y $form-select-indicator-padding $form-select-padding-y $form-select-padding-x;
+  -moz-padding-start: subtract($form-select-padding-x, 3px); // See https://github.com/twbs/bootstrap/issues/32636
+  font-family: $form-select-font-family;
+  @include font-size($form-select-font-size);
+  font-weight: $form-select-font-weight;
+  line-height: $form-select-line-height;
+  color: $form-select-color;
+  background-color: $form-select-bg;
+  background-image: escape-svg($form-select-indicator);
+  background-repeat: no-repeat;
+  background-position: $form-select-bg-position;
+  background-size: $form-select-bg-size;
+  border: $form-select-border-width solid $form-select-border-color;
+  @include border-radius($form-select-border-radius, 0);
+  @include box-shadow($form-select-box-shadow);
+  @include transition($form-select-transition);
+  appearance: none;
+  -webkit-appearance: none;
+  -moz-appearance: none;
+  -ms-appearance: none;
+  -o-appearance: none;
+
+  &:focus {
+    border-color: $form-select-focus-border-color;
+    outline: 0;
+    @if $enable-shadows {
+      @include box-shadow($form-select-box-shadow, $form-select-focus-box-shadow);
+    } @else {
+      // Avoid using mixin so we can pass custom focus shadow properly
+      box-shadow: $form-select-focus-box-shadow;
+    }
+  }
+
+  &[multiple],
+  &[size]:not([size="1"]) {
+    padding-right: $form-select-padding-x;
+    background-image: none;
+  }
+
+  &:disabled {
+    color: $form-select-disabled-color;
+    background-color: $form-select-disabled-bg;
+    border-color: $form-select-disabled-border-color;
+  }
+
+  // Remove outline from select box in FF
+  &:-moz-focusring {
+    color: transparent;
+    text-shadow: 0 0 0 $form-select-color;
+  }
+}
+
+.form-select-sm {
+  padding-top: $form-select-padding-y-sm;
+  padding-bottom: $form-select-padding-y-sm;
+  padding-left: $form-select-padding-x-sm;
+  @include font-size($form-select-font-size-sm);
+  @include border-radius($form-select-border-radius-sm);
+}
+
+.form-select-lg {
+  padding-top: $form-select-padding-y-lg;
+  padding-bottom: $form-select-padding-y-lg;
+  padding-left: $form-select-padding-x-lg;
+  @include font-size($form-select-font-size-lg);
+  @include border-radius($form-select-border-radius-lg);
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/forms/_form-control.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/forms/_form-control.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/forms/_form-control.scss	(revision 3762)
@@ -0,0 +1,198 @@
+//
+// General form controls (plus a few specific high-level interventions)
+//
+
+.form-control {
+  display: block;
+  width: 100%;
+  padding: $input-padding-y $input-padding-x;
+  font-family: $input-font-family;
+  @include font-size($input-font-size);
+  font-weight: $input-font-weight;
+  line-height: $input-line-height;
+  color: $input-color;
+  background-color: $input-bg;
+  background-clip: padding-box;
+  border: $input-border-width solid $input-border-color;
+  appearance: none; // Fix appearance for date inputs in Safari
+  -webkit-appearance: none; // Fix appearance for date inputs in Safari
+  -moz-appearance: none; // Fix appearance for date inputs in Safari
+  -ms-appearance: none; // Fix appearance for date inputs in Safari
+  -o-appearance: none; // Fix appearance for date inputs in Safari
+
+  // Note: This has no effect on <select>s in some browsers, due to the limited stylability of `<select>`s in CSS.
+  @include border-radius($input-border-radius, 0);
+
+  @include box-shadow($input-box-shadow);
+  @include transition($input-transition);
+
+  &[type="file"] {
+    overflow: hidden; // prevent pseudo element button overlap
+
+    &:not(:disabled):not([readonly]) {
+      cursor: pointer;
+    }
+  }
+
+  // Customize the `:focus` state to imitate native WebKit styles.
+  &:focus {
+    color: $input-focus-color;
+    background-color: $input-focus-bg;
+    border-color: $input-focus-border-color;
+    outline: 0;
+    @if $enable-shadows {
+      @include box-shadow($input-box-shadow, $input-focus-box-shadow);
+    } @else {
+      // Avoid using mixin so we can pass custom focus shadow properly
+      box-shadow: $input-focus-box-shadow;
+    }
+  }
+
+  // Add some height to date inputs on iOS
+  // https://github.com/twbs/bootstrap/issues/23307
+  // TODO: we can remove this workaround once https://bugs.webkit.org/show_bug.cgi?id=198959 is resolved
+  &::-webkit-date-and-time-value {
+    // Multiply line-height by 1em if it has no unit
+    height: if(unit($input-line-height) == "", $input-line-height * 1em, $input-line-height);
+  }
+
+  // Placeholder
+  &::placeholder {
+    color: $input-placeholder-color;
+    // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526.
+    opacity: 1;
+  }
+
+  // Disabled inputs
+  //
+  // HTML5 says that controls under a fieldset > legend:first-child won't be
+  // disabled if the fieldset is disabled. Due to implementation difficulty, we
+  // don't honor that edge case; we style them as disabled anyway.
+  &:disabled {
+    color: $input-disabled-color;
+    background-color: $input-disabled-bg;
+    border-color: $input-disabled-border-color;
+    // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655.
+    opacity: 1;
+  }
+
+  // File input buttons theming
+  &::file-selector-button {
+    padding: $input-padding-y $input-padding-x;
+    margin: (-$input-padding-y) (-$input-padding-x);
+    margin-inline-end: $input-padding-x;
+    color: $form-file-button-color;
+    @include gradient-bg($form-file-button-bg);
+    pointer-events: none;
+    border-color: inherit;
+    border-style: solid;
+    border-width: 0;
+    border-inline-end-width: $input-border-width;
+    border-radius: 0; // stylelint-disable-line property-disallowed-list
+    @include transition($btn-transition);
+  }
+
+  &:hover:not(:disabled):not([readonly])::file-selector-button {
+    background-color: $form-file-button-hover-bg;
+  }
+}
+
+// Readonly controls as plain text
+//
+// Apply class to a readonly input to make it appear like regular plain
+// text (without any border, background color, focus indicator)
+
+.form-control-plaintext {
+  display: block;
+  width: 100%;
+  padding: $input-padding-y 0;
+  margin-bottom: 0; // match inputs if this class comes on inputs with default margins
+  line-height: $input-line-height;
+  color: $input-plaintext-color;
+  background-color: transparent;
+  border: solid transparent;
+  border-width: $input-border-width 0;
+
+  &:focus {
+    outline: 0;
+  }
+
+  &.form-control-sm,
+  &.form-control-lg {
+    padding-right: 0;
+    padding-left: 0;
+  }
+}
+
+// Form control sizing
+//
+// Build on `.form-control` with modifier classes to decrease or increase the
+// height and font-size of form controls.
+//
+// Repeated in `_input_group.scss` to avoid Sass extend issues.
+
+.form-control-sm {
+  min-height: $input-height-sm;
+  padding: $input-padding-y-sm $input-padding-x-sm;
+  @include font-size($input-font-size-sm);
+  @include border-radius($input-border-radius-sm);
+
+  &::file-selector-button {
+    padding: $input-padding-y-sm $input-padding-x-sm;
+    margin: (-$input-padding-y-sm) (-$input-padding-x-sm);
+    margin-inline-end: $input-padding-x-sm;
+  }
+}
+
+.form-control-lg {
+  min-height: $input-height-lg;
+  padding: $input-padding-y-lg $input-padding-x-lg;
+  @include font-size($input-font-size-lg);
+  @include border-radius($input-border-radius-lg);
+
+  &::file-selector-button {
+    padding: $input-padding-y-lg $input-padding-x-lg;
+    margin: (-$input-padding-y-lg) (-$input-padding-x-lg);
+    margin-inline-end: $input-padding-x-lg;
+  }
+}
+
+// Make sure textareas don't shrink too much when resized
+// https://github.com/twbs/bootstrap/pull/29124
+// stylelint-disable selector-no-qualifying-type
+textarea {
+  &.form-control {
+    min-height: $input-height;
+  }
+
+  &.form-control-sm {
+    min-height: $input-height-sm;
+  }
+
+  &.form-control-lg {
+    min-height: $input-height-lg;
+  }
+}
+// stylelint-enable selector-no-qualifying-type
+
+.form-control-color {
+  width: $form-color-width;
+  height: $input-height;
+  padding: $input-padding-y;
+
+  &:not(:disabled):not([readonly]) {
+    cursor: pointer;
+  }
+
+  &::-moz-color-swatch {
+    border: 0 !important; // stylelint-disable-line declaration-no-important
+    @include border-radius($input-border-radius);
+  }
+
+  &::-webkit-color-swatch {
+    @include border-radius($input-border-radius);
+  }
+
+  &.form-control-sm { height: $input-height-sm; }
+  &.form-control-lg { height: $input-height-lg; }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/forms/_labels.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/forms/_labels.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/forms/_labels.scss	(revision 3762)
@@ -0,0 +1,36 @@
+//
+// Labels
+//
+
+.form-label, .shiny-input-container .control-label {
+  margin-bottom: $form-label-margin-bottom;
+  @include font-size($form-label-font-size);
+  font-style: $form-label-font-style;
+  font-weight: $form-label-font-weight;
+  color: $form-label-color;
+}
+
+// For use with horizontal and inline forms, when you need the label (or legend)
+// text to align with the form controls.
+.col-form-label {
+  padding-top: add($input-padding-y, $input-border-width);
+  padding-bottom: add($input-padding-y, $input-border-width);
+  margin-bottom: 0; // Override the `<legend>` default
+  @include font-size(inherit); // Override the `<legend>` default
+  font-style: $form-label-font-style;
+  font-weight: $form-label-font-weight;
+  line-height: $input-line-height;
+  color: $form-label-color;
+}
+
+.col-form-label-lg {
+  padding-top: add($input-padding-y-lg, $input-border-width);
+  padding-bottom: add($input-padding-y-lg, $input-border-width);
+  @include font-size($input-font-size-lg);
+}
+
+.col-form-label-sm {
+  padding-top: add($input-padding-y-sm, $input-border-width);
+  padding-bottom: add($input-padding-y-sm, $input-border-width);
+  @include font-size($input-font-size-sm);
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/forms/_floating-labels.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/forms/_floating-labels.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/forms/_floating-labels.scss	(revision 3762)
@@ -0,0 +1,75 @@
+.form-floating {
+  position: relative;
+
+  > .form-control,
+  > .form-control-plaintext,
+  > .form-select {
+    height: $form-floating-height;
+    line-height: $form-floating-line-height;
+  }
+
+  > label {
+    position: absolute;
+    top: 0;
+    left: 0;
+    width: 100%;
+    height: 100%; // allow textareas
+    padding: $form-floating-padding-y $form-floating-padding-x;
+    overflow: hidden;
+    text-align: start;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+    pointer-events: none;
+    border: $input-border-width solid transparent; // Required for aligning label's text with the input as it affects inner box model
+    transform-origin: 0 0;
+    @include transition($form-floating-transition);
+  }
+
+  > .form-control,
+  > .form-control-plaintext {
+    padding: $form-floating-padding-y $form-floating-padding-x;
+
+    &::placeholder {
+      color: transparent;
+    }
+
+    &:focus,
+    &:not(:placeholder-shown) {
+      padding-top: $form-floating-input-padding-t;
+      padding-bottom: $form-floating-input-padding-b;
+    }
+    // Duplicated because `:-webkit-autofill` invalidates other selectors when grouped
+    &:-webkit-autofill {
+      padding-top: $form-floating-input-padding-t;
+      padding-bottom: $form-floating-input-padding-b;
+    }
+  }
+
+  > .form-select {
+    padding-top: $form-floating-input-padding-t;
+    padding-bottom: $form-floating-input-padding-b;
+  }
+
+  > .form-control:focus,
+  > .form-control:not(:placeholder-shown),
+  > .form-control-plaintext,
+  > .form-select {
+    ~ label {
+      opacity: $form-floating-label-opacity;
+      transform: $form-floating-label-transform;
+    }
+  }
+  // Duplicated because `:-webkit-autofill` invalidates other selectors when grouped
+  > .form-control:-webkit-autofill {
+    ~ label {
+      opacity: $form-floating-label-opacity;
+      transform: $form-floating-label-transform;
+    }
+  }
+
+  > .form-control-plaintext {
+    ~ label {
+      border-width: $input-border-width 0; // Required to properly position label text - as explained above
+    }
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/forms/_form-text.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/forms/_form-text.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/forms/_form-text.scss	(revision 3762)
@@ -0,0 +1,11 @@
+//
+// Form text
+//
+
+.form-text {
+  margin-top: $form-text-margin-top;
+  @include font-size($form-text-font-size);
+  font-style: $form-text-font-style;
+  font-weight: $form-text-font-weight;
+  color: $form-text-color;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/forms/_input-group.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/forms/_input-group.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/forms/_input-group.scss	(revision 3762)
@@ -0,0 +1,138 @@
+//
+// Base styles
+//
+
+.input-group {
+  position: relative;
+  display: flex;
+  display: -webkit-flex;
+  flex-wrap: wrap; // For form validation feedback
+  -webkit-flex-wrap: wrap; // For form validation feedback
+  align-items: stretch;
+  -webkit-align-items: stretch;
+  width: 100%;
+
+  > .form-control,
+  > .form-select,
+  > .form-floating {
+    position: relative; // For focus state's z-index
+    flex: 1 1 auto;
+    -webkit-flex: 1 1 auto;
+    width: 1%;
+    min-width: 0; // https://stackoverflow.com/questions/36247140/why-dont-flex-items-shrink-past-content-size
+  }
+
+  // Bring the "active" form control to the top of surrounding elements
+  > .form-control:focus,
+  > .form-select:focus,
+  > .form-floating:focus-within {
+    z-index: 5;
+  }
+
+  // Ensure buttons are always above inputs for more visually pleasing borders.
+  // This isn't needed for `.input-group-text` since it shares the same border-color
+  // as our inputs.
+  .btn {
+    position: relative;
+    z-index: 2;
+
+    &:focus {
+      z-index: 5;
+    }
+  }
+}
+
+
+// Textual addons
+//
+// Serves as a catch-all element for any text or radio/checkbox input you wish
+// to prepend or append to an input.
+
+.input-group-text {
+  display: flex;
+  display: -webkit-flex;
+  align-items: center;
+  -webkit-align-items: center;
+  padding: $input-group-addon-padding-y $input-group-addon-padding-x;
+  @include font-size($input-font-size); // Match inputs
+  font-weight: $input-group-addon-font-weight;
+  line-height: $input-line-height;
+  color: $input-group-addon-color;
+  text-align: center;
+  white-space: nowrap;
+  background-color: $input-group-addon-bg;
+  border: $input-border-width solid $input-group-addon-border-color;
+  @include border-radius($input-border-radius);
+}
+
+
+// Sizing
+//
+// Remix the default form control sizing classes into new ones for easier
+// manipulation.
+
+.input-group-lg > .form-control,
+.input-group-lg > .form-select,
+.input-group-lg > .input-group-text,
+.input-group-lg > .btn {
+  padding: $input-padding-y-lg $input-padding-x-lg;
+  @include font-size($input-font-size-lg);
+  @include border-radius($input-border-radius-lg);
+}
+
+.input-group-sm > .form-control,
+.input-group-sm > .form-select,
+.input-group-sm > .input-group-text,
+.input-group-sm > .btn {
+  padding: $input-padding-y-sm $input-padding-x-sm;
+  @include font-size($input-font-size-sm);
+  @include border-radius($input-border-radius-sm);
+}
+
+.input-group-lg > .form-select,
+.input-group-sm > .form-select {
+  padding-right: $form-select-padding-x + $form-select-indicator-padding;
+}
+
+
+// Rounded corners
+//
+// These rulesets must come after the sizing ones to properly override sm and lg
+// border-radius values when extending. They're more specific than we'd like
+// with the `.input-group >` part, but without it, we cannot override the sizing.
+
+// stylelint-disable-next-line no-duplicate-selectors
+.input-group {
+  &:not(.has-validation) {
+    > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),
+    > .dropdown-toggle:nth-last-child(n + 3),
+    > .form-floating:not(:last-child) > .form-control,
+    > .form-floating:not(:last-child) > .form-select {
+      @include border-end-radius(0);
+    }
+  }
+
+  &.has-validation {
+    > :nth-last-child(n + 3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),
+    > .dropdown-toggle:nth-last-child(n + 4),
+    > .form-floating:nth-last-child(n + 3) > .form-control,
+    > .form-floating:nth-last-child(n + 3) > .form-select {
+      @include border-end-radius(0);
+    }
+  }
+
+  $validation-messages: "";
+  @each $state in map-keys($form-validation-states) {
+    $validation-messages: $validation-messages + ":not(." + unquote($state) + "-tooltip)" + ":not(." + unquote($state) + "-feedback)";
+  }
+
+  > :not(:first-child):not(.dropdown-menu)#{$validation-messages} {
+    margin-left: -$input-border-width;
+    @include border-start-radius(0);
+  }
+
+  > .form-floating:not(:first-child) > .form-control,
+  > .form-floating:not(:first-child) > .form-select {
+    @include border-start-radius(0);
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/forms/_validation.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/forms/_validation.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/forms/_validation.scss	(revision 3762)
@@ -0,0 +1,12 @@
+// Form validation
+//
+// Provide feedback to users when form field values are valid or invalid. Works
+// primarily for client-side validation via scoped `:invalid` and `:valid`
+// pseudo-classes but also includes `.is-invalid` and `.is-valid` classes for
+// server-side validation.
+
+// scss-docs-start form-validation-states-loop
+@each $state, $data in $form-validation-states {
+  @include form-validation-state($state, $data...);
+}
+// scss-docs-end form-validation-states-loop
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/forms/_form-range.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/forms/_form-range.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/forms/_form-range.scss	(revision 3762)
@@ -0,0 +1,103 @@
+// Range
+//
+// Style range inputs the same across browsers. Vendor-specific rules for pseudo
+// elements cannot be mixed. As such, there are no shared styles for focus or
+// active states on prefixed selectors.
+
+.form-range {
+  width: 100%;
+  height: add($form-range-thumb-height, $form-range-thumb-focus-box-shadow-width * 2);
+  padding: 0; // Need to reset padding
+  background-color: transparent;
+  appearance: none;
+  -webkit-appearance: none;
+  -moz-appearance: none;
+  -ms-appearance: none;
+  -o-appearance: none;
+
+  &:focus {
+    outline: 0;
+
+    // Pseudo-elements must be split across multiple rulesets to have an effect.
+    // No box-shadow() mixin for focus accessibility.
+    &::-webkit-slider-thumb { box-shadow: $form-range-thumb-focus-box-shadow; }
+    &::-moz-range-thumb     { box-shadow: $form-range-thumb-focus-box-shadow; }
+  }
+
+  &::-moz-focus-outer {
+    border: 0;
+  }
+
+  &::-webkit-slider-thumb {
+    width: $form-range-thumb-width;
+    height: $form-range-thumb-height;
+    margin-top: ($form-range-track-height - $form-range-thumb-height) * .5; // Webkit specific
+    @include gradient-bg($form-range-thumb-bg);
+    border: $form-range-thumb-border;
+    @include border-radius($form-range-thumb-border-radius);
+    @include box-shadow($form-range-thumb-box-shadow);
+    @include transition($form-range-thumb-transition);
+    appearance: none;
+    -webkit-appearance: none;
+    -moz-appearance: none;
+    -ms-appearance: none;
+    -o-appearance: none;
+
+    &:active {
+      @include gradient-bg($form-range-thumb-active-bg);
+    }
+  }
+
+  &::-webkit-slider-runnable-track {
+    width: $form-range-track-width;
+    height: $form-range-track-height;
+    color: transparent; // Why?
+    cursor: $form-range-track-cursor;
+    background-color: $form-range-track-bg;
+    border-color: transparent;
+    @include border-radius($form-range-track-border-radius);
+    @include box-shadow($form-range-track-box-shadow);
+  }
+
+  &::-moz-range-thumb {
+    width: $form-range-thumb-width;
+    height: $form-range-thumb-height;
+    @include gradient-bg($form-range-thumb-bg);
+    border: $form-range-thumb-border;
+    @include border-radius($form-range-thumb-border-radius);
+    @include box-shadow($form-range-thumb-box-shadow);
+    @include transition($form-range-thumb-transition);
+    appearance: none;
+    -webkit-appearance: none;
+    -moz-appearance: none;
+    -ms-appearance: none;
+    -o-appearance: none;
+
+    &:active {
+      @include gradient-bg($form-range-thumb-active-bg);
+    }
+  }
+
+  &::-moz-range-track {
+    width: $form-range-track-width;
+    height: $form-range-track-height;
+    color: transparent;
+    cursor: $form-range-track-cursor;
+    background-color: $form-range-track-bg;
+    border-color: transparent; // Firefox specific?
+    @include border-radius($form-range-track-border-radius);
+    @include box-shadow($form-range-track-box-shadow);
+  }
+
+  &:disabled {
+    pointer-events: none;
+
+    &::-webkit-slider-thumb {
+      background-color: $form-range-thumb-disabled-bg;
+    }
+
+    &::-moz-range-thumb {
+      background-color: $form-range-thumb-disabled-bg;
+    }
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/forms/_form-check.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/forms/_form-check.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/forms/_form-check.scss	(revision 3762)
@@ -0,0 +1,179 @@
+//
+// Check/radio
+//
+
+.form-check, #{$shiny-check}, #{$shiny-radio} {
+  display: block;
+  min-height: $form-check-min-height;
+  padding-left: $form-check-padding-start;
+  margin-bottom: $form-check-margin-bottom;
+
+  .form-check-input, #{$shiny-check} input, #{$shiny-radio} input {
+    float: left;
+    margin-left: $form-check-padding-start * -1;
+  }
+}
+
+.form-check-reverse {
+  padding-right: $form-check-padding-start;
+  padding-left: 0;
+  text-align: right;
+
+  .form-check-input {
+    float: right;
+    margin-right: $form-check-padding-start * -1;
+    margin-left: 0;
+  }
+}
+
+#{$form-check-input-selector} {
+  width: $form-check-input-width;
+  height: $form-check-input-width;
+  margin-top: ($line-height-base - $form-check-input-width) * .5; // line-height minus check height
+  vertical-align: top;
+  background-color: $form-check-input-bg;
+  background-repeat: no-repeat;
+  background-position: center;
+  background-size: contain;
+  border: $form-check-input-border;
+  appearance: none;
+  -webkit-appearance: none;
+  -moz-appearance: none;
+  -ms-appearance: none;
+  -o-appearance: none;
+  print-color-adjust: exact; // Keep themed appearance for print
+  @include transition($form-check-transition);
+
+  &[type="checkbox"] {
+    @include border-radius($form-check-input-border-radius);
+  }
+
+  &[type="radio"] {
+    // stylelint-disable-next-line property-disallowed-list
+    border-radius: $form-check-radio-border-radius;
+  }
+
+  &:active {
+    filter: $form-check-input-active-filter;
+  }
+
+  &:focus {
+    border-color: $form-check-input-focus-border;
+    outline: 0;
+    box-shadow: $form-check-input-focus-box-shadow;
+  }
+
+  &:checked {
+    background-color: $form-check-input-checked-bg-color;
+    border-color: $form-check-input-checked-border-color;
+
+    &[type="checkbox"] {
+      @if $enable-gradients {
+        background-image: escape-svg($form-check-input-checked-bg-image), var(--#{$prefix}gradient);
+      } @else {
+        background-image: escape-svg($form-check-input-checked-bg-image);
+      }
+    }
+
+    &[type="radio"] {
+      @if $enable-gradients {
+        background-image: escape-svg($form-check-radio-checked-bg-image), var(--#{$prefix}gradient);
+      } @else {
+        background-image: escape-svg($form-check-radio-checked-bg-image);
+      }
+    }
+  }
+
+  &[type="checkbox"]:indeterminate {
+    background-color: $form-check-input-indeterminate-bg-color;
+    border-color: $form-check-input-indeterminate-border-color;
+
+    @if $enable-gradients {
+      background-image: escape-svg($form-check-input-indeterminate-bg-image), var(--#{$prefix}gradient);
+    } @else {
+      background-image: escape-svg($form-check-input-indeterminate-bg-image);
+    }
+  }
+
+  &:disabled {
+    pointer-events: none;
+    filter: none;
+    opacity: $form-check-input-disabled-opacity;
+  }
+
+  // Use disabled attribute in addition of :disabled pseudo-class
+  // See: https://github.com/twbs/bootstrap/issues/28247
+  &[disabled],
+  &:disabled {
+    ~ .form-check-label, ~ span {
+      cursor: default;
+      opacity: $form-check-label-disabled-opacity;
+    }
+  }
+}
+
+#{$form-check-label-selector} {
+  color: $form-check-label-color;
+  cursor: $form-check-label-cursor;
+}
+
+//
+// Switch
+//
+
+.form-switch {
+  padding-left: $form-switch-padding-start;
+
+  .form-check-input {
+    width: $form-switch-width;
+    margin-left: $form-switch-padding-start * -1;
+    background-image: escape-svg($form-switch-bg-image);
+    background-position: left center;
+    @include border-radius($form-switch-border-radius);
+    @include transition($form-switch-transition);
+
+    &:focus {
+      background-image: escape-svg($form-switch-focus-bg-image);
+    }
+
+    &:checked {
+      background-position: $form-switch-checked-bg-position;
+
+      @if $enable-gradients {
+        background-image: escape-svg($form-switch-checked-bg-image), var(--#{$prefix}gradient);
+      } @else {
+        background-image: escape-svg($form-switch-checked-bg-image);
+      }
+    }
+  }
+
+  &.form-check-reverse {
+    padding-right: $form-switch-padding-start;
+    padding-left: 0;
+
+    .form-check-input {
+      margin-right: $form-switch-padding-start * -1;
+      margin-left: 0;
+    }
+  }
+}
+
+.form-check-inline {
+  display: inline-block;
+  margin-right: $form-check-inline-margin-end;
+}
+
+.btn-check {
+  position: absolute;
+  clip: rect(0, 0, 0, 0);
+  pointer-events: none;
+
+  &[disabled],
+  &:disabled {
+    + .btn {
+      pointer-events: none;
+      filter: none;
+      opacity: $form-check-btn-check-disabled-opacity;
+    }
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/bootstrap.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/bootstrap.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/bootstrap.scss	(revision 3762)
@@ -0,0 +1,51 @@
+@import "mixins/banner";
+@include bsBanner("");
+
+
+// scss-docs-start import-stack
+// Configuration
+@import "functions";
+@import "variables";
+@import "maps";
+@import "mixins";
+@import "utilities";
+
+// Layout & components
+@import "root";
+@import "reboot";
+@import "type";
+@import "images";
+@import "containers";
+@import "grid";
+@import "tables";
+@import "forms";
+@import "buttons";
+@import "transitions";
+@import "dropdown";
+@import "button-group";
+@import "nav";
+@import "navbar";
+@import "card";
+@import "accordion";
+@import "breadcrumb";
+@import "pagination";
+@import "badge";
+@import "alert";
+@import "progress";
+@import "list-group";
+@import "close";
+@import "toasts";
+@import "modal";
+@import "tooltip";
+@import "popover";
+@import "carousel";
+@import "spinners";
+@import "offcanvas";
+@import "placeholders";
+
+// Helpers
+@import "helpers";
+
+// Utilities
+@import "utilities/api";
+// scss-docs-end import-stack
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_root.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_root.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_root.scss	(revision 3762)
@@ -0,0 +1,73 @@
+:root {
+  // Note: Custom variable values only support SassScript inside `#{}`.
+
+  // Colors
+  //
+  // Generate palettes for full colors, grays, and theme colors.
+
+  @each $color, $value in $colors {
+    --#{$prefix}#{$color}: #{$value};
+  }
+
+  @each $color, $value in $grays {
+    --#{$prefix}gray-#{$color}: #{$value};
+  }
+
+  @each $color, $value in $theme-colors {
+    --#{$prefix}#{$color}: #{$value};
+  }
+
+  @each $color, $value in $theme-colors-rgb {
+    --#{$prefix}#{$color}-rgb: #{$value};
+  }
+
+  --#{$prefix}white-rgb: #{to-rgb($white)};
+  --#{$prefix}black-rgb: #{to-rgb($black)};
+  --#{$prefix}body-color-rgb: #{to-rgb($body-color)};
+  --#{$prefix}body-bg-rgb: #{to-rgb($body-bg)};
+
+  // Fonts
+
+  // Note: Use `inspect` for lists so that quoted items keep the quotes.
+  // See https://github.com/sass/sass/issues/2383#issuecomment-336349172
+  --#{$prefix}font-sans-serif: #{inspect($font-family-sans-serif)};
+  --#{$prefix}font-monospace: #{inspect($font-family-monospace)};
+  --#{$prefix}gradient: #{$gradient};
+
+  // Root and body
+  // scss-docs-start root-body-variables
+  @if $font-size-root != null {
+    --#{$prefix}root-font-size: #{$font-size-root};
+  }
+  --#{$prefix}body-font-family: #{$font-family-base};
+  @include rfs($font-size-base, --#{$prefix}body-font-size);
+  --#{$prefix}body-font-weight: #{$font-weight-base};
+  --#{$prefix}body-line-height: #{$line-height-base};
+  --#{$prefix}body-color: #{$body-color};
+  @if $body-text-align != null {
+    --#{$prefix}body-text-align: #{$body-text-align};
+  }
+  --#{$prefix}body-bg: #{$body-bg};
+  // scss-docs-end root-body-variables
+
+  // scss-docs-start root-border-var
+  --#{$prefix}border-width: #{$border-width};
+  --#{$prefix}border-style: #{$border-style};
+  --#{$prefix}border-color: #{$border-color};
+  --#{$prefix}border-color-translucent: #{$border-color-translucent};
+
+  --#{$prefix}border-radius: #{$border-radius};
+  --#{$prefix}border-radius-sm: #{$border-radius-sm};
+  --#{$prefix}border-radius-lg: #{$border-radius-lg};
+  --#{$prefix}border-radius-xl: #{$border-radius-xl};
+  --#{$prefix}border-radius-2xl: #{$border-radius-2xl};
+  --#{$prefix}border-radius-pill: #{$border-radius-pill};
+  // scss-docs-end root-border-var
+
+  --#{$prefix}link-color: #{$link-color};
+  --#{$prefix}link-hover-color: #{$link-hover-color};
+
+  --#{$prefix}code-color: #{$code-color};
+
+  --#{$prefix}highlight-bg: #{$mark-bg};
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_grid.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_grid.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_grid.scss	(revision 3762)
@@ -0,0 +1,33 @@
+// Row
+//
+// Rows contain your columns.
+
+@if $enable-grid-classes {
+  .row {
+    @include make-row();
+
+    > * {
+      @include make-col-ready();
+    }
+  }
+}
+
+@if $enable-cssgrid {
+  .grid {
+    display: grid;
+    grid-template-rows: repeat(var(--#{$prefix}rows, 1), 1fr);
+    grid-template-columns: repeat(var(--#{$prefix}columns, #{$grid-columns}), 1fr);
+    gap: var(--#{$prefix}gap, #{$grid-gutter-width});
+
+    @include make-cssgrid();
+  }
+}
+
+
+// Columns
+//
+// Common styles for small and large grid columns
+
+@if $enable-grid-classes {
+  @include make-grid-columns();
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_pagination.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_pagination.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_pagination.scss	(revision 3762)
@@ -0,0 +1,118 @@
+.pagination {
+  // scss-docs-start pagination-css-vars
+  --#{$prefix}pagination-padding-x: #{$pagination-padding-x};
+  --#{$prefix}pagination-padding-y: #{$pagination-padding-y};
+  @include rfs($pagination-font-size, --#{$prefix}pagination-font-size);
+  --#{$prefix}pagination-color: #{$pagination-color};
+  --#{$prefix}pagination-bg: #{$pagination-bg};
+  --#{$prefix}pagination-border-width: #{$pagination-border-width};
+  --#{$prefix}pagination-border-color: #{$pagination-border-color};
+  --#{$prefix}pagination-border-radius: #{$pagination-border-radius};
+  --#{$prefix}pagination-hover-color: #{$pagination-hover-color};
+  --#{$prefix}pagination-hover-bg: #{$pagination-hover-bg};
+  --#{$prefix}pagination-hover-border-color: #{$pagination-hover-border-color};
+  --#{$prefix}pagination-focus-color: #{$pagination-focus-color};
+  --#{$prefix}pagination-focus-bg: #{$pagination-focus-bg};
+  --#{$prefix}pagination-focus-box-shadow: #{$pagination-focus-box-shadow};
+  --#{$prefix}pagination-active-color: #{$pagination-active-color};
+  --#{$prefix}pagination-active-bg: #{$pagination-active-bg};
+  --#{$prefix}pagination-active-border-color: #{$pagination-active-border-color};
+  --#{$prefix}pagination-disabled-color: #{$pagination-disabled-color};
+  --#{$prefix}pagination-disabled-bg: #{$pagination-disabled-bg};
+  --#{$prefix}pagination-disabled-border-color: #{$pagination-disabled-border-color};
+  // scss-docs-end pagination-css-vars
+
+  display: flex;
+  display: -webkit-flex;
+  @include list-unstyled();
+}
+
+.page-link {
+  position: relative;
+  display: block;
+  padding: var(--#{$prefix}pagination-padding-y) var(--#{$prefix}pagination-padding-x);
+  @include font-size(var(--#{$prefix}pagination-font-size));
+  color: var(--#{$prefix}pagination-color);
+  text-decoration: if($link-decoration == none, null, none);
+  -webkit-text-decoration: if($link-decoration == none, null, none);
+  -moz-text-decoration: if($link-decoration == none, null, none);
+  -ms-text-decoration: if($link-decoration == none, null, none);
+  -o-text-decoration: if($link-decoration == none, null, none);
+  background-color: var(--#{$prefix}pagination-bg);
+  border: var(--#{$prefix}pagination-border-width) solid var(--#{$prefix}pagination-border-color);
+  @include transition($pagination-transition);
+
+  &:hover {
+    z-index: 2;
+    color: var(--#{$prefix}pagination-hover-color);
+    text-decoration: if($link-hover-decoration == underline, none, null);
+    -webkit-text-decoration: if($link-hover-decoration == underline, none, null);
+    -moz-text-decoration: if($link-hover-decoration == underline, none, null);
+    -ms-text-decoration: if($link-hover-decoration == underline, none, null);
+    -o-text-decoration: if($link-hover-decoration == underline, none, null);
+    background-color: var(--#{$prefix}pagination-hover-bg);
+    border-color: var(--#{$prefix}pagination-hover-border-color);
+  }
+
+  &:focus {
+    z-index: 3;
+    color: var(--#{$prefix}pagination-focus-color);
+    background-color: var(--#{$prefix}pagination-focus-bg);
+    outline: $pagination-focus-outline;
+    box-shadow: var(--#{$prefix}pagination-focus-box-shadow);
+  }
+
+  &.active,
+  .active > & {
+    z-index: 3;
+    color: var(--#{$prefix}pagination-active-color);
+    @include gradient-bg(var(--#{$prefix}pagination-active-bg));
+    border-color: var(--#{$prefix}pagination-active-border-color);
+  }
+
+  &.disabled,
+  .disabled > & {
+    color: var(--#{$prefix}pagination-disabled-color);
+    pointer-events: none;
+    background-color: var(--#{$prefix}pagination-disabled-bg);
+    border-color: var(--#{$prefix}pagination-disabled-border-color);
+  }
+}
+
+.page-item {
+  &:not(:first-child) .page-link {
+    margin-left: $pagination-margin-start;
+  }
+
+  @if $pagination-margin-start == ($pagination-border-width * -1) {
+    &:first-child {
+      .page-link {
+        @include border-start-radius(var(--#{$prefix}pagination-border-radius));
+      }
+    }
+
+    &:last-child {
+      .page-link {
+        @include border-end-radius(var(--#{$prefix}pagination-border-radius));
+      }
+    }
+  } @else {
+    // Add border-radius to all pageLinks in case they have left margin
+    .page-link {
+      @include border-radius(var(--#{$prefix}pagination-border-radius));
+    }
+  }
+}
+
+
+//
+// Sizing
+//
+
+.pagination-lg {
+  @include pagination-size($pagination-padding-y-lg, $pagination-padding-x-lg, $font-size-lg, $pagination-border-radius-lg);
+}
+
+.pagination-sm {
+  @include pagination-size($pagination-padding-y-sm, $pagination-padding-x-sm, $font-size-sm, $pagination-border-radius-sm);
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_tooltip.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_tooltip.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_tooltip.scss	(revision 3762)
@@ -0,0 +1,120 @@
+// Base class
+.tooltip {
+  // scss-docs-start tooltip-css-vars
+  --#{$prefix}tooltip-zindex: #{$zindex-tooltip};
+  --#{$prefix}tooltip-max-width: #{$tooltip-max-width};
+  --#{$prefix}tooltip-padding-x: #{$tooltip-padding-x};
+  --#{$prefix}tooltip-padding-y: #{$tooltip-padding-y};
+  --#{$prefix}tooltip-margin: #{$tooltip-margin};
+  @include rfs($tooltip-font-size, --#{$prefix}tooltip-font-size);
+  --#{$prefix}tooltip-color: #{$tooltip-color};
+  --#{$prefix}tooltip-bg: #{$tooltip-bg};
+  --#{$prefix}tooltip-border-radius: #{$tooltip-border-radius};
+  --#{$prefix}tooltip-opacity: #{$tooltip-opacity};
+  --#{$prefix}tooltip-arrow-width: #{$tooltip-arrow-width};
+  --#{$prefix}tooltip-arrow-height: #{$tooltip-arrow-height};
+  // scss-docs-end tooltip-css-vars
+
+  z-index: var(--#{$prefix}tooltip-zindex);
+  display: block;
+  padding: var(--#{$prefix}tooltip-arrow-height);
+  margin: var(--#{$prefix}tooltip-margin);
+  @include deprecate("`$tooltip-margin`", "v5", "v5.x", true);
+  // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.
+  // So reset our font and text properties to avoid inheriting weird values.
+  @include reset-text();
+  @include font-size(var(--#{$prefix}tooltip-font-size));
+  // Allow breaking very long words so they don't overflow the tooltip's bounds
+  word-wrap: break-word;
+  opacity: 0;
+
+  &.show { opacity: var(--#{$prefix}tooltip-opacity); }
+
+  .tooltip-arrow {
+    display: block;
+    width: var(--#{$prefix}tooltip-arrow-width);
+    height: var(--#{$prefix}tooltip-arrow-height);
+
+    &::before {
+      position: absolute;
+      content: "";
+      border-color: transparent;
+      border-style: solid;
+    }
+  }
+}
+
+.bs-tooltip-top .tooltip-arrow {
+  bottom: 0;
+
+  &::before {
+    top: -1px;
+    border-width: var(--#{$prefix}tooltip-arrow-height) calc(var(--#{$prefix}tooltip-arrow-width) * .5) 0; // stylelint-disable-line function-disallowed-list
+    border-top-color: var(--#{$prefix}tooltip-bg);
+  }
+}
+
+/* rtl:begin:ignore */
+.bs-tooltip-end .tooltip-arrow {
+  left: 0;
+  width: var(--#{$prefix}tooltip-arrow-height);
+  height: var(--#{$prefix}tooltip-arrow-width);
+
+  &::before {
+    right: -1px;
+    border-width: calc(var(--#{$prefix}tooltip-arrow-width) * .5) var(--#{$prefix}tooltip-arrow-height) calc(var(--#{$prefix}tooltip-arrow-width) * .5) 0; // stylelint-disable-line function-disallowed-list
+    border-right-color: var(--#{$prefix}tooltip-bg);
+  }
+}
+
+/* rtl:end:ignore */
+
+.bs-tooltip-bottom .tooltip-arrow {
+  top: 0;
+
+  &::before {
+    bottom: -1px;
+    border-width: 0 calc(var(--#{$prefix}tooltip-arrow-width) * .5) var(--#{$prefix}tooltip-arrow-height); // stylelint-disable-line function-disallowed-list
+    border-bottom-color: var(--#{$prefix}tooltip-bg);
+  }
+}
+
+/* rtl:begin:ignore */
+.bs-tooltip-start .tooltip-arrow {
+  right: 0;
+  width: var(--#{$prefix}tooltip-arrow-height);
+  height: var(--#{$prefix}tooltip-arrow-width);
+
+  &::before {
+    left: -1px;
+    border-width: calc(var(--#{$prefix}tooltip-arrow-width) * .5) 0 calc(var(--#{$prefix}tooltip-arrow-width) * .5) var(--#{$prefix}tooltip-arrow-height); // stylelint-disable-line function-disallowed-list
+    border-left-color: var(--#{$prefix}tooltip-bg);
+  }
+}
+
+/* rtl:end:ignore */
+
+.bs-tooltip-auto {
+  &[data-popper-placement^="top"] {
+    @extend .bs-tooltip-top;
+  }
+  &[data-popper-placement^="right"] {
+    @extend .bs-tooltip-end;
+  }
+  &[data-popper-placement^="bottom"] {
+    @extend .bs-tooltip-bottom;
+  }
+  &[data-popper-placement^="left"] {
+    @extend .bs-tooltip-start;
+  }
+}
+
+// Wrapper for the tooltip content
+.tooltip-inner {
+  max-width: var(--#{$prefix}tooltip-max-width);
+  padding: var(--#{$prefix}tooltip-padding-y) var(--#{$prefix}tooltip-padding-x);
+  color: var(--#{$prefix}tooltip-color);
+  text-align: center;
+  background-color: var(--#{$prefix}tooltip-bg);
+  @include border-radius(var(--#{$prefix}tooltip-border-radius));
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_modal.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_modal.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_modal.scss	(revision 3762)
@@ -0,0 +1,251 @@
+// stylelint-disable function-disallowed-list
+
+// .modal-open      - body class for killing the scroll
+// .modal           - container to scroll within
+// .modal-dialog    - positioning shell for the actual modal
+// .modal-content   - actual modal w/ bg and corners and stuff
+
+
+// Container that the modal scrolls within
+.modal {
+  // scss-docs-start modal-css-vars
+  --#{$prefix}modal-zindex: #{$zindex-modal};
+  --#{$prefix}modal-width: #{$modal-md};
+  --#{$prefix}modal-padding: #{$modal-inner-padding};
+  --#{$prefix}modal-margin: #{$modal-dialog-margin};
+  --#{$prefix}modal-color: #{$modal-content-color};
+  --#{$prefix}modal-bg: #{$modal-content-bg};
+  --#{$prefix}modal-border-color: #{$modal-content-border-color};
+  --#{$prefix}modal-border-width: #{$modal-content-border-width};
+  --#{$prefix}modal-border-radius: #{$modal-content-border-radius};
+  --#{$prefix}modal-box-shadow: #{$modal-content-box-shadow-xs};
+  --#{$prefix}modal-inner-border-radius: #{$modal-content-inner-border-radius};
+  --#{$prefix}modal-header-padding-x: #{$modal-header-padding-x};
+  --#{$prefix}modal-header-padding-y: #{$modal-header-padding-y};
+  --#{$prefix}modal-header-padding: #{$modal-header-padding}; // Todo in v6: Split this padding into x and y
+  --#{$prefix}modal-header-border-color: #{$modal-header-border-color};
+  --#{$prefix}modal-header-border-width: #{$modal-header-border-width};
+  --#{$prefix}modal-title-line-height: #{$modal-title-line-height};
+  --#{$prefix}modal-footer-gap: #{$modal-footer-margin-between};
+  --#{$prefix}modal-footer-bg: #{$modal-footer-bg};
+  --#{$prefix}modal-footer-border-color: #{$modal-footer-border-color};
+  --#{$prefix}modal-footer-border-width: #{$modal-footer-border-width};
+  // scss-docs-end modal-css-vars
+
+  position: fixed;
+  top: 0;
+  left: 0;
+  z-index: var(--#{$prefix}modal-zindex);
+  display: none;
+  width: 100%;
+  height: 100%;
+  overflow-x: hidden;
+  overflow-y: auto;
+  // Prevent Chrome on Windows from adding a focus outline. For details, see
+  // https://github.com/twbs/bootstrap/pull/10951.
+  outline: 0;
+  // We deliberately don't use `-webkit-overflow-scrolling: touch;` due to a
+  // gnarly iOS Safari bug: https://bugs.webkit.org/show_bug.cgi?id=158342
+  // See also https://github.com/twbs/bootstrap/issues/17695
+}
+
+// Shell div to position the modal with bottom padding
+.modal-dialog {
+  position: relative;
+  width: auto;
+  margin: var(--#{$prefix}modal-margin);
+  // allow clicks to pass through for custom click handling to close modal
+  pointer-events: none;
+
+  // When fading in the modal, animate it to slide down
+  .modal.fade & {
+    @include transition($modal-transition);
+    transform: $modal-fade-transform;
+  }
+  .modal.show & {
+    transform: $modal-show-transform;
+  }
+
+  // When trying to close, animate focus to scale
+  .modal.modal-static & {
+    transform: $modal-scale-transform;
+  }
+}
+
+.modal-dialog-scrollable {
+  height: calc(100% - var(--#{$prefix}modal-margin) * 2);
+
+  .modal-content {
+    max-height: 100%;
+    overflow: hidden;
+  }
+
+  .modal-body {
+    overflow-y: auto;
+  }
+}
+
+.modal-dialog-centered {
+  display: flex;
+  display: -webkit-flex;
+  align-items: center;
+  -webkit-align-items: center;
+  min-height: calc(100% - var(--#{$prefix}modal-margin) * 2);
+}
+
+// Actual modal
+.modal-content {
+  position: relative;
+  display: flex;
+  display: -webkit-flex;
+  flex-direction: column;
+  -webkit-flex-direction: column;
+  width: 100%; // Ensure `.modal-content` extends the full width of the parent `.modal-dialog`
+  // counteract the pointer-events: none; in the .modal-dialog
+  color: var(--#{$prefix}modal-color);
+  pointer-events: auto;
+  background-color: var(--#{$prefix}modal-bg);
+  background-clip: padding-box;
+  border: var(--#{$prefix}modal-border-width) solid var(--#{$prefix}modal-border-color);
+  @include border-radius(var(--#{$prefix}modal-border-radius));
+  @include box-shadow(var(--#{$prefix}modal-box-shadow));
+  // Remove focus outline from opened modal
+  outline: 0;
+}
+
+// Modal background
+.modal-backdrop {
+  // scss-docs-start modal-backdrop-css-vars
+  --#{$prefix}backdrop-zindex: #{$zindex-modal-backdrop};
+  --#{$prefix}backdrop-bg: #{$modal-backdrop-bg};
+  --#{$prefix}backdrop-opacity: #{$modal-backdrop-opacity};
+  // scss-docs-end modal-backdrop-css-vars
+
+  @include overlay-backdrop(var(--#{$prefix}backdrop-zindex), var(--#{$prefix}backdrop-bg), var(--#{$prefix}backdrop-opacity));
+}
+
+// Modal header
+// Top section of the modal w/ title and dismiss
+.modal-header {
+  display: flex;
+  display: -webkit-flex;
+  flex-shrink: 0;
+  -webkit-flex-shrink: 0;
+  align-items: center;
+  -webkit-align-items: center;
+  justify-content: space-between; // Put modal header elements (title and dismiss) on opposite ends
+  -webkit-justify-content: space-between; // Put modal header elements (title and dismiss) on opposite ends
+  padding: var(--#{$prefix}modal-header-padding);
+  border-bottom: var(--#{$prefix}modal-header-border-width) solid var(--#{$prefix}modal-header-border-color);
+  @include border-top-radius(var(--#{$prefix}modal-inner-border-radius));
+
+  .btn-close {
+    padding: calc(var(--#{$prefix}modal-header-padding-y) * .5) calc(var(--#{$prefix}modal-header-padding-x) * .5);
+    margin: calc(-.5 * var(--#{$prefix}modal-header-padding-y)) calc(-.5 * var(--#{$prefix}modal-header-padding-x)) calc(-.5 * var(--#{$prefix}modal-header-padding-y)) auto;
+  }
+}
+
+// Title text within header
+.modal-title {
+  margin-bottom: 0;
+  line-height: var(--#{$prefix}modal-title-line-height);
+}
+
+// Modal body
+// Where all modal content resides (sibling of .modal-header and .modal-footer)
+.modal-body {
+  position: relative;
+  // Enable `flex-grow: 1` so that the body take up as much space as possible
+  // when there should be a fixed height on `.modal-dialog`.
+  flex: 1 1 auto;
+  -webkit-flex: 1 1 auto;
+  padding: var(--#{$prefix}modal-padding);
+}
+
+// Footer (for actions)
+.modal-footer {
+  display: flex;
+  display: -webkit-flex;
+  flex-shrink: 0;
+  -webkit-flex-shrink: 0;
+  flex-wrap: wrap;
+  -webkit-flex-wrap: wrap;
+  align-items: center; // vertically center
+  -webkit-align-items: center; // vertically center
+  justify-content: flex-end; // Right align buttons with flex property because text-align doesn't work on flex items
+  -webkit-justify-content: flex-end; // Right align buttons with flex property because text-align doesn't work on flex items
+  padding: calc(var(--#{$prefix}modal-padding) - var(--#{$prefix}modal-footer-gap) * .5);
+  background-color: var(--#{$prefix}modal-footer-bg);
+  border-top: var(--#{$prefix}modal-footer-border-width) solid var(--#{$prefix}modal-footer-border-color);
+  @include border-bottom-radius(var(--#{$prefix}modal-inner-border-radius));
+
+  // Place margin between footer elements
+  // This solution is far from ideal because of the universal selector usage,
+  // but is needed to fix https://github.com/twbs/bootstrap/issues/24800
+  > * {
+    margin: calc(var(--#{$prefix}modal-footer-gap) * .5); // Todo in v6: replace with gap on parent class
+  }
+}
+
+// Scale up the modal
+@include media-breakpoint-up(sm) {
+  .modal {
+    --#{$prefix}modal-margin: #{$modal-dialog-margin-y-sm-up};
+    --#{$prefix}modal-box-shadow: #{$modal-content-box-shadow-sm-up};
+  }
+
+  // Automatically set modal's width for larger viewports
+  .modal-dialog {
+    max-width: var(--#{$prefix}modal-width);
+    margin-right: auto;
+    margin-left: auto;
+  }
+
+  .modal-sm {
+    --#{$prefix}modal-width: #{$modal-sm};
+  }
+}
+
+@include media-breakpoint-up(lg) {
+  .modal-lg,
+  .modal-xl {
+    --#{$prefix}modal-width: #{$modal-lg};
+  }
+}
+
+@include media-breakpoint-up(xl) {
+  .modal-xl {
+    --#{$prefix}modal-width: #{$modal-xl};
+  }
+}
+
+// scss-docs-start modal-fullscreen-loop
+@each $breakpoint in map-keys($grid-breakpoints) {
+  $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
+  $postfix: if($infix != "", $infix + "-down", "");
+
+  @include media-breakpoint-down($breakpoint) {
+    .modal-fullscreen#{$postfix} {
+      width: 100vw;
+      max-width: none;
+      height: 100%;
+      margin: 0;
+
+      .modal-content {
+        height: 100%;
+        border: 0;
+        @include border-radius(0);
+      }
+
+      .modal-header,
+      .modal-footer {
+        @include border-radius(0);
+      }
+
+      .modal-body {
+        overflow-y: auto;
+      }
+    }
+  }
+}
+// scss-docs-end modal-fullscreen-loop
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_maps.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_maps.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_maps.scss	(revision 3762)
@@ -0,0 +1,54 @@
+// Re-assigned maps
+//
+// Placed here so that others can override the default Sass maps and see automatic updates to utilities and more.
+
+// scss-docs-start theme-colors-rgb
+$theme-colors-rgb: map-loop($theme-colors, to-rgb, "$value") !default;
+// scss-docs-end theme-colors-rgb
+
+// Utilities maps
+//
+// Extends the default `$theme-colors` maps to help create our utilities.
+
+// Come v6, we'll de-dupe these variables. Until then, for backward compatibility, we keep them to reassign.
+// scss-docs-start utilities-colors
+$utilities-colors: $theme-colors-rgb !default;
+// scss-docs-end utilities-colors
+
+// scss-docs-start utilities-text-colors
+$utilities-text: map-merge(
+  $utilities-colors,
+  (
+    "black": to-rgb($black),
+    "white": to-rgb($white),
+    "body": to-rgb($body-color)
+  )
+) !default;
+$utilities-text-colors: map-loop($utilities-text, rgba-css-var, "$key", "text") !default;
+// scss-docs-end utilities-text-colors
+
+// scss-docs-start utilities-bg-colors
+$utilities-bg: map-merge(
+  $utilities-colors,
+  (
+    "black": to-rgb($black),
+    "white": to-rgb($white),
+    "body": to-rgb($body-bg)
+  )
+) !default;
+$utilities-bg-colors: map-loop($utilities-bg, rgba-css-var, "$key", "bg") !default;
+// scss-docs-end utilities-bg-colors
+
+// scss-docs-start utilities-border-colors
+$utilities-border: map-merge(
+  $utilities-colors,
+  (
+    "white": to-rgb($white)
+  )
+) !default;
+$utilities-border-colors: map-loop($utilities-border, rgba-css-var, "$key", "border") !default;
+// scss-docs-end utilities-border-colors
+
+$negative-spacers: if($enable-negative-margins, negativify-map($spacers), null) !default;
+
+$gutters: $spacers !default;
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_spinners.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_spinners.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_spinners.scss	(revision 3762)
@@ -0,0 +1,85 @@
+//
+// Rotating border
+//
+
+.spinner-grow,
+.spinner-border {
+  display: inline-block;
+  width: var(--#{$prefix}spinner-width);
+  height: var(--#{$prefix}spinner-height);
+  vertical-align: var(--#{$prefix}spinner-vertical-align);
+  // stylelint-disable-next-line property-disallowed-list
+  border-radius: 50%;
+  animation: var(--#{$prefix}spinner-animation-speed) linear infinite var(--#{$prefix}spinner-animation-name);
+}
+
+// scss-docs-start spinner-border-keyframes
+@keyframes spinner-border {
+  to { transform: rotate(360deg) #{"/* rtl:ignore */"}; }
+}
+// scss-docs-end spinner-border-keyframes
+
+.spinner-border {
+  // scss-docs-start spinner-border-css-vars
+  --#{$prefix}spinner-width: #{$spinner-width};
+  --#{$prefix}spinner-height: #{$spinner-height};
+  --#{$prefix}spinner-vertical-align: #{$spinner-vertical-align};
+  --#{$prefix}spinner-border-width: #{$spinner-border-width};
+  --#{$prefix}spinner-animation-speed: #{$spinner-animation-speed};
+  --#{$prefix}spinner-animation-name: spinner-border;
+  // scss-docs-end spinner-border-css-vars
+
+  border: var(--#{$prefix}spinner-border-width) solid currentcolor;
+  border-right-color: transparent;
+}
+
+.spinner-border-sm {
+  // scss-docs-start spinner-border-sm-css-vars
+  --#{$prefix}spinner-width: #{$spinner-width-sm};
+  --#{$prefix}spinner-height: #{$spinner-height-sm};
+  --#{$prefix}spinner-border-width: #{$spinner-border-width-sm};
+  // scss-docs-end spinner-border-sm-css-vars
+}
+
+//
+// Growing circle
+//
+
+// scss-docs-start spinner-grow-keyframes
+@keyframes spinner-grow {
+  0% {
+    transform: scale(0);
+  }
+  50% {
+    opacity: 1;
+    transform: none;
+  }
+}
+// scss-docs-end spinner-grow-keyframes
+
+.spinner-grow {
+  // scss-docs-start spinner-grow-css-vars
+  --#{$prefix}spinner-width: #{$spinner-width};
+  --#{$prefix}spinner-height: #{$spinner-height};
+  --#{$prefix}spinner-vertical-align: #{$spinner-vertical-align};
+  --#{$prefix}spinner-animation-speed: #{$spinner-animation-speed};
+  --#{$prefix}spinner-animation-name: spinner-grow;
+  // scss-docs-end spinner-grow-css-vars
+
+  background-color: currentcolor;
+  opacity: 0;
+}
+
+.spinner-grow-sm {
+  --#{$prefix}spinner-width: #{$spinner-width-sm};
+  --#{$prefix}spinner-height: #{$spinner-height-sm};
+}
+
+@if $enable-reduced-motion {
+  @media (prefers-reduced-motion: reduce) {
+    .spinner-border,
+    .spinner-grow {
+      --#{$prefix}spinner-animation-speed: #{$spinner-animation-speed * 2};
+    }
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/bootstrap-grid.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/bootstrap-grid.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/bootstrap-grid.scss	(revision 3762)
@@ -0,0 +1,64 @@
+@import "mixins/banner";
+@include bsBanner(Grid);
+
+$include-column-box-sizing: true !default;
+
+@import "functions";
+@import "variables";
+@import "maps";
+
+@import "mixins/lists";
+@import "mixins/breakpoints";
+@import "mixins/container";
+@import "mixins/grid";
+@import "mixins/utilities";
+
+@import "vendor/rfs";
+
+@import "root";
+
+@import "containers";
+@import "grid";
+
+@import "utilities";
+// Only use the utilities we need
+// stylelint-disable-next-line scss/dollar-variable-default
+$utilities: map-get-multiple(
+  $utilities,
+  (
+    "display",
+    "order",
+    "flex",
+    "flex-direction",
+    "flex-grow",
+    "flex-shrink",
+    "flex-wrap",
+    "justify-content",
+    "align-items",
+    "align-content",
+    "align-self",
+    "margin",
+    "margin-x",
+    "margin-y",
+    "margin-top",
+    "margin-end",
+    "margin-bottom",
+    "margin-start",
+    "negative-margin",
+    "negative-margin-x",
+    "negative-margin-y",
+    "negative-margin-top",
+    "negative-margin-end",
+    "negative-margin-bottom",
+    "negative-margin-start",
+    "padding",
+    "padding-x",
+    "padding-y",
+    "padding-top",
+    "padding-end",
+    "padding-bottom",
+    "padding-start",
+  )
+);
+
+@import "utilities/api";
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_helpers.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_helpers.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_helpers.scss	(revision 3762)
@@ -0,0 +1,10 @@
+@import "helpers/clearfix";
+@import "helpers/color-bg";
+@import "helpers/colored-links";
+@import "helpers/ratio";
+@import "helpers/position";
+@import "helpers/stacks";
+@import "helpers/visually-hidden";
+@import "helpers/stretched-link";
+@import "helpers/text-truncation";
+@import "helpers/vr";
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/utilities/_api.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/utilities/_api.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/utilities/_api.scss	(revision 3762)
@@ -0,0 +1,54 @@
+// Loop over each breakpoint
+@each $breakpoint in map-keys($grid-breakpoints) {
+
+  // Generate media query if needed
+  @include media-breakpoint-up($breakpoint) {
+    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
+
+    // Loop over each utility property
+    @each $key, $utility in $utilities {
+      // The utility can be disabled with `false`, thus check if the utility is a map first
+      // Only proceed if responsive media queries are enabled or if it's the base media query
+      @if type-of($utility) == "map" and (map-get($utility, responsive) or $infix == "") {
+        @include generate-utility($utility, $infix);
+      }
+    }
+  }
+}
+
+// Add fg contrasts for each bg utility class
+@each $key, $val in $utilities-colors {
+  .bg-#{$key} {
+    color: color-contrast(rgb(nth($val, 1), nth($val, 2), nth($val, 3)));
+  }
+}
+
+// RFS rescaling
+@media (min-width: $rfs-mq-value) {
+  @each $breakpoint in map-keys($grid-breakpoints) {
+    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
+
+    @if (map-get($grid-breakpoints, $breakpoint) < $rfs-breakpoint) {
+      // Loop over each utility property
+      @each $key, $utility in $utilities {
+        // The utility can be disabled with `false`, thus check if the utility is a map first
+        // Only proceed if responsive media queries are enabled or if it's the base media query
+        @if type-of($utility) == "map" and map-get($utility, rfs) and (map-get($utility, responsive) or $infix == "") {
+          @include generate-utility($utility, $infix, true);
+        }
+      }
+    }
+  }
+}
+
+
+// Print utilities
+@media print {
+  @each $key, $utility in $utilities {
+    // The utility can be disabled with `false`, thus check if the utility is a map first
+    // Then check if the utility needs print styles
+    @if type-of($utility) == "map" and map-get($utility, print) == true {
+      @include generate-utility($utility, "-print");
+    }
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_list-group.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_list-group.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_list-group.scss	(revision 3762)
@@ -0,0 +1,199 @@
+// Base class
+//
+// Easily usable on <ul>, <ol>, or <div>.
+
+.list-group {
+  // scss-docs-start list-group-css-vars
+  --#{$prefix}list-group-color: #{$list-group-color};
+  --#{$prefix}list-group-bg: #{$list-group-bg};
+  --#{$prefix}list-group-border-color: #{$list-group-border-color};
+  --#{$prefix}list-group-border-width: #{$list-group-border-width};
+  --#{$prefix}list-group-border-radius: #{$list-group-border-radius};
+  --#{$prefix}list-group-item-padding-x: #{$list-group-item-padding-x};
+  --#{$prefix}list-group-item-padding-y: #{$list-group-item-padding-y};
+  --#{$prefix}list-group-action-color: #{$list-group-action-color};
+  --#{$prefix}list-group-action-hover-color: #{$list-group-action-hover-color};
+  --#{$prefix}list-group-action-hover-bg: #{$list-group-hover-bg};
+  --#{$prefix}list-group-action-active-color: #{$list-group-action-active-color};
+  --#{$prefix}list-group-action-active-bg: #{$list-group-action-active-bg};
+  --#{$prefix}list-group-disabled-color: #{$list-group-disabled-color};
+  --#{$prefix}list-group-disabled-bg: #{$list-group-disabled-bg};
+  --#{$prefix}list-group-active-color: #{$list-group-active-color};
+  --#{$prefix}list-group-active-bg: #{$list-group-active-bg};
+  --#{$prefix}list-group-active-border-color: #{$list-group-active-border-color};
+  // scss-docs-end list-group-css-vars
+
+  display: flex;
+  display: -webkit-flex;
+  flex-direction: column;
+  -webkit-flex-direction: column;
+
+  // No need to set list-style: none; since .list-group-item is block level
+  padding-left: 0; // reset padding because ul and ol
+  margin-bottom: 0;
+  @include border-radius(var(--#{$prefix}list-group-border-radius));
+}
+
+.list-group-numbered {
+  list-style-type: none;
+  counter-reset: section;
+
+  > .list-group-item::before {
+    // Increments only this instance of the section counter
+    content: counters(section, ".") ". ";
+    counter-increment: section;
+  }
+}
+
+// Interactive list items
+//
+// Use anchor or button elements instead of `li`s or `div`s to create interactive
+// list items. Includes an extra `.active` modifier class for selected items.
+
+.list-group-item-action {
+  width: 100%; // For `<button>`s (anchors become 100% by default though)
+  color: var(--#{$prefix}list-group-action-color);
+  text-align: inherit; // For `<button>`s (anchors inherit)
+
+  // Hover state
+  &:hover,
+  &:focus {
+    z-index: 1; // Place hover/focus items above their siblings for proper border styling
+    color: var(--#{$prefix}list-group-action-hover-color);
+    text-decoration: none;
+    background-color: var(--#{$prefix}list-group-action-hover-bg);
+  }
+
+  &:active {
+    color: var(--#{$prefix}list-group-action-active-color);
+    background-color: var(--#{$prefix}list-group-action-active-bg);
+  }
+}
+
+// Individual list items
+//
+// Use on `li`s or `div`s within the `.list-group` parent.
+
+.list-group-item {
+  position: relative;
+  display: block;
+  padding: var(--#{$prefix}list-group-item-padding-y) var(--#{$prefix}list-group-item-padding-x);
+  color: var(--#{$prefix}list-group-color);
+  text-decoration: if($link-decoration == none, null, none);
+  -webkit-text-decoration: if($link-decoration == none, null, none);
+  -moz-text-decoration: if($link-decoration == none, null, none);
+  -ms-text-decoration: if($link-decoration == none, null, none);
+  -o-text-decoration: if($link-decoration == none, null, none);
+  background-color: var(--#{$prefix}list-group-bg);
+  border: var(--#{$prefix}list-group-border-width) solid var(--#{$prefix}list-group-border-color);
+
+  &:first-child {
+    @include border-top-radius(inherit);
+  }
+
+  &:last-child {
+    @include border-bottom-radius(inherit);
+  }
+
+  &.disabled,
+  &:disabled {
+    color: var(--#{$prefix}list-group-disabled-color);
+    pointer-events: none;
+    background-color: var(--#{$prefix}list-group-disabled-bg);
+  }
+
+  // Include both here for `<a>`s and `<button>`s
+  &.active {
+    z-index: 2; // Place active items above their siblings for proper border styling
+    color: var(--#{$prefix}list-group-active-color);
+    background-color: var(--#{$prefix}list-group-active-bg);
+    border-color: var(--#{$prefix}list-group-active-border-color);
+  }
+
+  // stylelint-disable-next-line scss/selector-no-redundant-nesting-selector
+  & + .list-group-item {
+    border-top-width: 0;
+
+    &.active {
+      margin-top: calc(-1 * var(--#{$prefix}list-group-border-width)); // stylelint-disable-line function-disallowed-list
+      border-top-width: var(--#{$prefix}list-group-border-width);
+    }
+  }
+}
+
+// Horizontal
+//
+// Change the layout of list group items from vertical (default) to horizontal.
+
+@each $breakpoint in map-keys($grid-breakpoints) {
+  @include media-breakpoint-up($breakpoint) {
+    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
+
+    .list-group-horizontal#{$infix} {
+      flex-direction: row;
+      -webkit-flex-direction: row;
+
+      > .list-group-item {
+        &:first-child:not(:last-child) {
+          @include border-bottom-start-radius(var(--#{$prefix}list-group-border-radius));
+          @include border-top-end-radius(0);
+        }
+
+        &:last-child:not(:first-child) {
+          @include border-top-end-radius(var(--#{$prefix}list-group-border-radius));
+          @include border-bottom-start-radius(0);
+        }
+
+        &.active {
+          margin-top: 0;
+        }
+
+        + .list-group-item {
+          border-top-width: var(--#{$prefix}list-group-border-width);
+          border-left-width: 0;
+
+          &.active {
+            margin-left: calc(-1 * var(--#{$prefix}list-group-border-width)); // stylelint-disable-line function-disallowed-list
+            border-left-width: var(--#{$prefix}list-group-border-width);
+          }
+        }
+      }
+    }
+  }
+}
+
+
+// Flush list items
+//
+// Remove borders and border-radius to keep list group items edge-to-edge. Most
+// useful within other components (e.g., cards).
+
+.list-group-flush {
+  @include border-radius(0);
+
+  > .list-group-item {
+    border-width: 0 0 var(--#{$prefix}list-group-border-width);
+
+    &:last-child {
+      border-bottom-width: 0;
+    }
+  }
+}
+
+
+// scss-docs-start list-group-modifiers
+// List group contextual variants
+//
+// Add modifier classes to change text and background color on individual items.
+// Organizationally, this must come after the `:hover` states.
+
+@each $state, $value in $theme-colors {
+  $list-group-variant-bg: shift-color($value, $list-group-item-bg-scale);
+  $list-group-variant-color: shift-color($value, $list-group-item-color-scale);
+  @if (contrast-ratio($list-group-variant-bg, $list-group-variant-color) < $min-contrast-ratio) {
+    $list-group-variant-color: mix($value, color-contrast($list-group-variant-bg), abs($list-group-item-color-scale));
+  }
+
+  @include list-group-item-variant($state, $list-group-variant-bg, $list-group-variant-color);
+}
+// scss-docs-end list-group-modifiers
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_close.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_close.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_close.scss	(revision 3762)
@@ -0,0 +1,44 @@
+// Transparent background and border properties included for button version.
+// iOS requires the button element instead of an anchor tag.
+// If you want the anchor version, it requires `href="#"`.
+// See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile
+
+.btn-close {
+  box-sizing: content-box;
+  width: $btn-close-width;
+  height: $btn-close-height;
+  padding: $btn-close-padding-y $btn-close-padding-x;
+  color: $btn-close-color;
+  background: transparent escape-svg($btn-close-bg) center / $btn-close-width auto no-repeat; // include transparent for button elements
+  border: 0; // for button elements
+  @include border-radius();
+  opacity: $btn-close-opacity;
+
+  // Override <a>'s hover style
+  &:hover {
+    color: $btn-close-color;
+    text-decoration: none;
+    opacity: $btn-close-hover-opacity;
+  }
+
+  &:focus {
+    outline: 0;
+    box-shadow: $btn-close-focus-shadow;
+    opacity: $btn-close-focus-opacity;
+  }
+
+  &:disabled,
+  &.disabled {
+    pointer-events: none;
+    user-select: none;
+    -webkit-user-select: none;
+    -moz-user-select: none;
+    -ms-user-select: none;
+    -o-user-select: none;
+    opacity: $btn-close-disabled-opacity;
+  }
+}
+
+.btn-close-white {
+  filter: $btn-close-white-filter;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_containers.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_containers.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_containers.scss	(revision 3762)
@@ -0,0 +1,41 @@
+// Container widths
+//
+// Set the container width, and override it for fixed navbars in media queries.
+
+@if $enable-container-classes {
+  // Single container class with breakpoint max-widths
+  .container,
+  // 100% wide container at all breakpoints
+  .container-fluid {
+    @include make-container();
+  }
+
+  // Responsive containers that are 100% wide until a breakpoint
+  @each $breakpoint, $container-max-width in $container-max-widths {
+    .container-#{$breakpoint} {
+      @extend .container-fluid;
+    }
+
+    @include media-breakpoint-up($breakpoint, $grid-breakpoints) {
+      %responsive-container-#{$breakpoint} {
+        max-width: $container-max-width;
+      }
+
+      // Extend each breakpoint which is smaller or equal to the current breakpoint
+      $extend-breakpoint: true;
+
+      @each $name, $width in $grid-breakpoints {
+        @if ($extend-breakpoint) {
+          .container#{breakpoint-infix($name, $grid-breakpoints)} {
+            @extend %responsive-container-#{$breakpoint};
+          }
+
+          // Once the current breakpoint is reached, stop extending
+          @if ($breakpoint == $name) {
+            $extend-breakpoint: false;
+          }
+        }
+      }
+    }
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_breadcrumb.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_breadcrumb.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_breadcrumb.scss	(revision 3762)
@@ -0,0 +1,42 @@
+.breadcrumb {
+  // scss-docs-start breadcrumb-css-vars
+  --#{$prefix}breadcrumb-padding-x: #{$breadcrumb-padding-x};
+  --#{$prefix}breadcrumb-padding-y: #{$breadcrumb-padding-y};
+  --#{$prefix}breadcrumb-margin-bottom: #{$breadcrumb-margin-bottom};
+  @include rfs($breadcrumb-font-size, --#{$prefix}breadcrumb-font-size);
+  --#{$prefix}breadcrumb-bg: #{$breadcrumb-bg};
+  --#{$prefix}breadcrumb-border-radius: #{$breadcrumb-border-radius};
+  --#{$prefix}breadcrumb-divider-color: #{$breadcrumb-divider-color};
+  --#{$prefix}breadcrumb-item-padding-x: #{$breadcrumb-item-padding-x};
+  --#{$prefix}breadcrumb-item-active-color: #{$breadcrumb-active-color};
+  // scss-docs-end breadcrumb-css-vars
+
+  display: flex;
+  display: -webkit-flex;
+  flex-wrap: wrap;
+  -webkit-flex-wrap: wrap;
+  padding: var(--#{$prefix}breadcrumb-padding-y) var(--#{$prefix}breadcrumb-padding-x);
+  margin-bottom: var(--#{$prefix}breadcrumb-margin-bottom);
+  @include font-size(var(--#{$prefix}breadcrumb-font-size));
+  list-style: none;
+  background-color: var(--#{$prefix}breadcrumb-bg);
+  @include border-radius(var(--#{$prefix}breadcrumb-border-radius));
+}
+
+.breadcrumb-item {
+  // The separator between breadcrumbs (by default, a forward-slash: "/")
+  + .breadcrumb-item {
+    padding-left: var(--#{$prefix}breadcrumb-item-padding-x);
+
+    &::before {
+      float: left; // Suppress inline spacings and underlining of the separator
+      padding-right: var(--#{$prefix}breadcrumb-item-padding-x);
+      color: var(--#{$prefix}breadcrumb-divider-color);
+      content: var(--#{$prefix}breadcrumb-divider, escape-svg($breadcrumb-divider)) #{"/* rtl:"} var(--#{$prefix}breadcrumb-divider, escape-svg($breadcrumb-divider-flipped)) #{"*/"};
+    }
+  }
+
+  &.active {
+    color: var(--#{$prefix}breadcrumb-item-active-color);
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_mixins.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_mixins.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_mixins.scss	(revision 3762)
@@ -0,0 +1,43 @@
+// Toggles
+//
+// Used in conjunction with global variables to enable certain theme features.
+
+// Vendor
+@import "vendor/rfs";
+
+// Deprecate
+@import "mixins/deprecate";
+
+// Helpers
+@import "mixins/breakpoints";
+@import "mixins/color-scheme";
+@import "mixins/image";
+@import "mixins/resize";
+@import "mixins/visually-hidden";
+@import "mixins/reset-text";
+@import "mixins/text-truncate";
+
+// Utilities
+@import "mixins/utilities";
+
+// Components
+@import "mixins/alert";
+@import "mixins/backdrop";
+@import "mixins/buttons";
+@import "mixins/caret";
+@import "mixins/pagination";
+@import "mixins/lists";
+@import "mixins/list-group";
+@import "mixins/forms";
+@import "mixins/table-variants";
+
+// Skins
+@import "mixins/border-radius";
+@import "mixins/box-shadow";
+@import "mixins/gradients";
+@import "mixins/transition";
+
+// Layout
+@import "mixins/clearfix";
+@import "mixins/container";
+@import "mixins/grid";
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_variables.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_variables.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_variables.scss	(revision 3762)
@@ -0,0 +1,1656 @@
+// Variables
+//
+// Variables should follow the `$component-state-property-size` formula for
+// consistent naming. Ex: $nav-link-disabled-color and $modal-content-box-shadow-xs.
+
+// Color system
+
+// scss-docs-start gray-color-variables
+$white:    #fff !default;
+$gray-100: #f8f9fa !default;
+$gray-200: #e9ecef !default;
+$gray-300: #dee2e6 !default;
+$gray-400: #ced4da !default;
+$gray-500: #adb5bd !default;
+$gray-600: #6c757d !default;
+$gray-700: #495057 !default;
+$gray-800: #343a40 !default;
+$gray-900: #212529 !default;
+$black:    #000 !default;
+// scss-docs-end gray-color-variables
+
+// fusv-disable
+// scss-docs-start gray-colors-map
+$grays: (
+  "100": $gray-100,
+  "200": $gray-200,
+  "300": $gray-300,
+  "400": $gray-400,
+  "500": $gray-500,
+  "600": $gray-600,
+  "700": $gray-700,
+  "800": $gray-800,
+  "900": $gray-900
+) !default;
+// scss-docs-end gray-colors-map
+// fusv-enable
+
+// scss-docs-start color-variables
+$blue:    #0d6efd !default;
+$indigo:  #6610f2 !default;
+$purple:  #6f42c1 !default;
+$pink:    #d63384 !default;
+$red:     #dc3545 !default;
+$orange:  #fd7e14 !default;
+$yellow:  #ffc107 !default;
+$green:   #198754 !default;
+$teal:    #20c997 !default;
+$cyan:    #0dcaf0 !default;
+// scss-docs-end color-variables
+
+// scss-docs-start colors-map
+$colors: (
+  "blue":       $blue,
+  "indigo":     $indigo,
+  "purple":     $purple,
+  "pink":       $pink,
+  "red":        $red,
+  "orange":     $orange,
+  "yellow":     $yellow,
+  "green":      $green,
+  "teal":       $teal,
+  "cyan":       $cyan,
+  "black":      $black,
+  "white":      $white,
+  "gray":       $gray-600,
+  "gray-dark":  $gray-800
+) !default;
+// scss-docs-end colors-map
+
+// The contrast ratio to reach against white, to determine if color changes from "light" to "dark". Acceptable values for WCAG 2.0 are 3, 4.5 and 7.
+// See https://www.w3.org/TR/WCAG20/#visual-audio-contrast-contrast
+$min-contrast-ratio:   4.5 !default;
+
+// Customize the light and dark text colors for use in our color contrast function.
+$color-contrast-dark:      $black !default;
+$color-contrast-light:     $white !default;
+
+// fusv-disable
+$blue-100: tint-color($blue, 80%) !default;
+$blue-200: tint-color($blue, 60%) !default;
+$blue-300: tint-color($blue, 40%) !default;
+$blue-400: tint-color($blue, 20%) !default;
+$blue-500: $blue !default;
+$blue-600: shade-color($blue, 20%) !default;
+$blue-700: shade-color($blue, 40%) !default;
+$blue-800: shade-color($blue, 60%) !default;
+$blue-900: shade-color($blue, 80%) !default;
+
+$indigo-100: tint-color($indigo, 80%) !default;
+$indigo-200: tint-color($indigo, 60%) !default;
+$indigo-300: tint-color($indigo, 40%) !default;
+$indigo-400: tint-color($indigo, 20%) !default;
+$indigo-500: $indigo !default;
+$indigo-600: shade-color($indigo, 20%) !default;
+$indigo-700: shade-color($indigo, 40%) !default;
+$indigo-800: shade-color($indigo, 60%) !default;
+$indigo-900: shade-color($indigo, 80%) !default;
+
+$purple-100: tint-color($purple, 80%) !default;
+$purple-200: tint-color($purple, 60%) !default;
+$purple-300: tint-color($purple, 40%) !default;
+$purple-400: tint-color($purple, 20%) !default;
+$purple-500: $purple !default;
+$purple-600: shade-color($purple, 20%) !default;
+$purple-700: shade-color($purple, 40%) !default;
+$purple-800: shade-color($purple, 60%) !default;
+$purple-900: shade-color($purple, 80%) !default;
+
+$pink-100: tint-color($pink, 80%) !default;
+$pink-200: tint-color($pink, 60%) !default;
+$pink-300: tint-color($pink, 40%) !default;
+$pink-400: tint-color($pink, 20%) !default;
+$pink-500: $pink !default;
+$pink-600: shade-color($pink, 20%) !default;
+$pink-700: shade-color($pink, 40%) !default;
+$pink-800: shade-color($pink, 60%) !default;
+$pink-900: shade-color($pink, 80%) !default;
+
+$red-100: tint-color($red, 80%) !default;
+$red-200: tint-color($red, 60%) !default;
+$red-300: tint-color($red, 40%) !default;
+$red-400: tint-color($red, 20%) !default;
+$red-500: $red !default;
+$red-600: shade-color($red, 20%) !default;
+$red-700: shade-color($red, 40%) !default;
+$red-800: shade-color($red, 60%) !default;
+$red-900: shade-color($red, 80%) !default;
+
+$orange-100: tint-color($orange, 80%) !default;
+$orange-200: tint-color($orange, 60%) !default;
+$orange-300: tint-color($orange, 40%) !default;
+$orange-400: tint-color($orange, 20%) !default;
+$orange-500: $orange !default;
+$orange-600: shade-color($orange, 20%) !default;
+$orange-700: shade-color($orange, 40%) !default;
+$orange-800: shade-color($orange, 60%) !default;
+$orange-900: shade-color($orange, 80%) !default;
+
+$yellow-100: tint-color($yellow, 80%) !default;
+$yellow-200: tint-color($yellow, 60%) !default;
+$yellow-300: tint-color($yellow, 40%) !default;
+$yellow-400: tint-color($yellow, 20%) !default;
+$yellow-500: $yellow !default;
+$yellow-600: shade-color($yellow, 20%) !default;
+$yellow-700: shade-color($yellow, 40%) !default;
+$yellow-800: shade-color($yellow, 60%) !default;
+$yellow-900: shade-color($yellow, 80%) !default;
+
+$green-100: tint-color($green, 80%) !default;
+$green-200: tint-color($green, 60%) !default;
+$green-300: tint-color($green, 40%) !default;
+$green-400: tint-color($green, 20%) !default;
+$green-500: $green !default;
+$green-600: shade-color($green, 20%) !default;
+$green-700: shade-color($green, 40%) !default;
+$green-800: shade-color($green, 60%) !default;
+$green-900: shade-color($green, 80%) !default;
+
+$teal-100: tint-color($teal, 80%) !default;
+$teal-200: tint-color($teal, 60%) !default;
+$teal-300: tint-color($teal, 40%) !default;
+$teal-400: tint-color($teal, 20%) !default;
+$teal-500: $teal !default;
+$teal-600: shade-color($teal, 20%) !default;
+$teal-700: shade-color($teal, 40%) !default;
+$teal-800: shade-color($teal, 60%) !default;
+$teal-900: shade-color($teal, 80%) !default;
+
+$cyan-100: tint-color($cyan, 80%) !default;
+$cyan-200: tint-color($cyan, 60%) !default;
+$cyan-300: tint-color($cyan, 40%) !default;
+$cyan-400: tint-color($cyan, 20%) !default;
+$cyan-500: $cyan !default;
+$cyan-600: shade-color($cyan, 20%) !default;
+$cyan-700: shade-color($cyan, 40%) !default;
+$cyan-800: shade-color($cyan, 60%) !default;
+$cyan-900: shade-color($cyan, 80%) !default;
+
+$blues: (
+  "blue-100": $blue-100,
+  "blue-200": $blue-200,
+  "blue-300": $blue-300,
+  "blue-400": $blue-400,
+  "blue-500": $blue-500,
+  "blue-600": $blue-600,
+  "blue-700": $blue-700,
+  "blue-800": $blue-800,
+  "blue-900": $blue-900
+) !default;
+
+$indigos: (
+  "indigo-100": $indigo-100,
+  "indigo-200": $indigo-200,
+  "indigo-300": $indigo-300,
+  "indigo-400": $indigo-400,
+  "indigo-500": $indigo-500,
+  "indigo-600": $indigo-600,
+  "indigo-700": $indigo-700,
+  "indigo-800": $indigo-800,
+  "indigo-900": $indigo-900
+) !default;
+
+$purples: (
+  "purple-100": $purple-100,
+  "purple-200": $purple-200,
+  "purple-300": $purple-300,
+  "purple-400": $purple-400,
+  "purple-500": $purple-500,
+  "purple-600": $purple-600,
+  "purple-700": $purple-700,
+  "purple-800": $purple-800,
+  "purple-900": $purple-900
+) !default;
+
+$pinks: (
+  "pink-100": $pink-100,
+  "pink-200": $pink-200,
+  "pink-300": $pink-300,
+  "pink-400": $pink-400,
+  "pink-500": $pink-500,
+  "pink-600": $pink-600,
+  "pink-700": $pink-700,
+  "pink-800": $pink-800,
+  "pink-900": $pink-900
+) !default;
+
+$reds: (
+  "red-100": $red-100,
+  "red-200": $red-200,
+  "red-300": $red-300,
+  "red-400": $red-400,
+  "red-500": $red-500,
+  "red-600": $red-600,
+  "red-700": $red-700,
+  "red-800": $red-800,
+  "red-900": $red-900
+) !default;
+
+$oranges: (
+  "orange-100": $orange-100,
+  "orange-200": $orange-200,
+  "orange-300": $orange-300,
+  "orange-400": $orange-400,
+  "orange-500": $orange-500,
+  "orange-600": $orange-600,
+  "orange-700": $orange-700,
+  "orange-800": $orange-800,
+  "orange-900": $orange-900
+) !default;
+
+$yellows: (
+  "yellow-100": $yellow-100,
+  "yellow-200": $yellow-200,
+  "yellow-300": $yellow-300,
+  "yellow-400": $yellow-400,
+  "yellow-500": $yellow-500,
+  "yellow-600": $yellow-600,
+  "yellow-700": $yellow-700,
+  "yellow-800": $yellow-800,
+  "yellow-900": $yellow-900
+) !default;
+
+$greens: (
+  "green-100": $green-100,
+  "green-200": $green-200,
+  "green-300": $green-300,
+  "green-400": $green-400,
+  "green-500": $green-500,
+  "green-600": $green-600,
+  "green-700": $green-700,
+  "green-800": $green-800,
+  "green-900": $green-900
+) !default;
+
+$teals: (
+  "teal-100": $teal-100,
+  "teal-200": $teal-200,
+  "teal-300": $teal-300,
+  "teal-400": $teal-400,
+  "teal-500": $teal-500,
+  "teal-600": $teal-600,
+  "teal-700": $teal-700,
+  "teal-800": $teal-800,
+  "teal-900": $teal-900
+) !default;
+
+$cyans: (
+  "cyan-100": $cyan-100,
+  "cyan-200": $cyan-200,
+  "cyan-300": $cyan-300,
+  "cyan-400": $cyan-400,
+  "cyan-500": $cyan-500,
+  "cyan-600": $cyan-600,
+  "cyan-700": $cyan-700,
+  "cyan-800": $cyan-800,
+  "cyan-900": $cyan-900
+) !default;
+// fusv-enable
+
+// Semantically, $secondary is closest to BS3's 'default' theme color;
+// so use that if specified. Otherwise, use a light instead of dark gray
+// default color for $default since that's closer to bootstrap 3's default
+$default: if(variable-exists("secondary"), $secondary, $gray-300) !default;
+
+// scss-docs-start theme-color-variables
+$primary:       $blue !default;
+$secondary:     $gray-600 !default;
+$success:       $green !default;
+$info:          $cyan !default;
+$warning:       $yellow !default;
+$danger:        $red !default;
+$light:         $gray-100 !default;
+$dark:          $gray-900 !default;
+// scss-docs-end theme-color-variables
+
+// scss-docs-start theme-colors-map
+$theme-colors: (
+  // default needs to be 1st so that .btn-default comes before .btn-primary
+  // & therefore has lower priority.
+  "default":    $default,
+  "primary":    $primary,
+  "secondary":  $secondary,
+  "success":    $success,
+  "info":       $info,
+  "warning":    $warning,
+  "danger":     $danger,
+  "light":      $light,
+  "dark":       $dark
+) !default;
+// scss-docs-end theme-colors-map
+
+// Characters which are escaped by the escape-svg function
+$escaped-characters: (
+  ("<", "%3c"),
+  (">", "%3e"),
+  ("#", "%23"),
+  ("(", "%28"),
+  (")", "%29"),
+) !default;
+
+// Options
+//
+// Quickly modify global styling by enabling or disabling optional features.
+
+$enable-caret:                true !default;
+$enable-rounded:              true !default;
+$enable-shadows:              false !default;
+$enable-gradients:            false !default;
+$enable-transitions:          true !default;
+$enable-reduced-motion:       true !default;
+$enable-smooth-scroll:        true !default;
+$enable-grid-classes:         true !default;
+$enable-container-classes:    true !default;
+$enable-cssgrid:              false !default;
+$enable-button-pointers:      true !default;
+$enable-rfs:                  true !default;
+$enable-validation-icons:     true !default;
+$enable-negative-margins:     false !default;
+$enable-deprecation-messages: true !default;
+$enable-important-utilities:  true !default;
+
+// Prefix for :root CSS variables
+
+$variable-prefix:             bs- !default; // Deprecated in v5.2.0 for the shorter `$prefix`
+$prefix:                      $variable-prefix !default;
+
+// Gradient
+//
+// The gradient which is added to components if `$enable-gradients` is `true`
+// This gradient is also added to elements with `.bg-gradient`
+// scss-docs-start variable-gradient
+$gradient: linear-gradient(180deg, rgba($white, .15), rgba($white, 0)) !default;
+// scss-docs-end variable-gradient
+
+// Spacing
+//
+// Control the default styling of most Bootstrap elements by modifying these
+// variables. Mostly focused on spacing.
+// You can add more entries to the $spacers map, should you need more variation.
+
+// scss-docs-start spacer-variables-maps
+$spacer: 1rem !default;
+$spacers: (
+  0: 0,
+  1: $spacer * .25,
+  2: $spacer * .5,
+  3: $spacer,
+  4: $spacer * 1.5,
+  5: $spacer * 3,
+) !default;
+// scss-docs-end spacer-variables-maps
+
+// Position
+//
+// Define the edge positioning anchors of the position utilities.
+
+// scss-docs-start position-map
+$position-values: (
+  0: 0,
+  50: 50%,
+  100: 100%
+) !default;
+// scss-docs-end position-map
+
+// Body
+//
+// Settings for the `<body>` element.
+
+$body-bg:                   $white !default;
+$body-color:                $gray-900 !default;
+$body-text-align:           null !default;
+
+// Links
+//
+// Style anchor elements.
+
+$link-color:                              $primary !default;
+$link-decoration:                         underline !default;
+$link-shade-percentage:                   20% !default;
+$link-hover-color:                        shift-color($link-color, $link-shade-percentage) !default;
+$link-hover-decoration:                   null !default;
+
+$stretched-link-pseudo-element:           after !default;
+$stretched-link-z-index:                  1 !default;
+
+// Paragraphs
+//
+// Style p element.
+
+$paragraph-margin-bottom:   1rem !default;
+
+
+// Grid breakpoints
+//
+// Define the minimum dimensions at which your layout will change,
+// adapting to different screen sizes, for use in media queries.
+
+// scss-docs-start grid-breakpoints
+$grid-breakpoints: (
+  xs: 0,
+  sm: 576px,
+  md: 768px,
+  lg: 992px,
+  xl: 1200px,
+  xxl: 1400px
+) !default;
+// scss-docs-end grid-breakpoints
+
+@include _assert-ascending($grid-breakpoints, "$grid-breakpoints");
+@include _assert-starts-at-zero($grid-breakpoints, "$grid-breakpoints");
+
+
+// Grid containers
+//
+// Define the maximum width of `.container` for different screen sizes.
+
+// scss-docs-start container-max-widths
+$container-max-widths: (
+  sm: 540px,
+  md: 720px,
+  lg: 960px,
+  xl: 1140px,
+  xxl: 1320px
+) !default;
+// scss-docs-end container-max-widths
+
+@include _assert-ascending($container-max-widths, "$container-max-widths");
+
+
+// Grid columns
+//
+// Set the number of columns and specify the width of the gutters.
+
+$grid-columns:                12 !default;
+$grid-gutter-width:           1.5rem !default;
+$grid-row-columns:            6 !default;
+
+// Container padding
+
+$container-padding-x: $grid-gutter-width !default;
+
+
+// Components
+//
+// Define common padding and border radius sizes and more.
+
+// scss-docs-start border-variables
+$border-width:                1px !default;
+$border-widths: (
+  1: 1px,
+  2: 2px,
+  3: 3px,
+  4: 4px,
+  5: 5px
+) !default;
+
+$border-style:                solid !default;
+$border-color:                $gray-300 !default;
+$border-color-translucent:    rgba($black, .175) !default;
+// scss-docs-end border-variables
+
+// scss-docs-start border-radius-variables
+$border-radius:               .375rem !default;
+$border-radius-sm:            .25rem !default;
+$border-radius-lg:            .5rem !default;
+$border-radius-xl:            1rem !default;
+$border-radius-2xl:           2rem !default;
+$border-radius-pill:          50rem !default;
+// scss-docs-end border-radius-variables
+
+// scss-docs-start box-shadow-variables
+$box-shadow:                  0 .5rem 1rem rgba($black, .15) !default;
+$box-shadow-sm:               0 .125rem .25rem rgba($black, .075) !default;
+$box-shadow-lg:               0 1rem 3rem rgba($black, .175) !default;
+$box-shadow-inset:            inset 0 1px 2px rgba($black, .075) !default;
+// scss-docs-end box-shadow-variables
+
+
+$component-active-bg:         $primary !default;
+$component-active-color:      color-contrast($component-active-bg, $white) !default;
+
+// scss-docs-start caret-variables
+$caret-width:                 .3em !default;
+$caret-vertical-align:        $caret-width * .85 !default;
+$caret-spacing:               $caret-width * .85 !default;
+// scss-docs-end caret-variables
+
+$transition-base:             all .2s ease-in-out !default;
+$transition-fade:             opacity .15s linear !default;
+// scss-docs-start collapse-transition
+$transition-collapse:         height .35s ease !default;
+$transition-collapse-width:   width .35s ease !default;
+// scss-docs-end collapse-transition
+
+// stylelint-disable function-disallowed-list
+// scss-docs-start aspect-ratios
+$aspect-ratios: (
+  "1x1": 100%,
+  "4x3": calc(3 / 4 * 100%),
+  "16x9": calc(9 / 16 * 100%),
+  "21x9": calc(9 / 21 * 100%)
+) !default;
+// scss-docs-end aspect-ratios
+// stylelint-enable function-disallowed-list
+
+// Typography
+//
+// Font, line-height, and color for body text, headings, and more.
+
+// scss-docs-start font-variables
+// stylelint-disable value-keyword-case
+$font-family-sans-serif:      system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji" !default;
+$font-family-monospace:       SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace !default;
+// stylelint-enable value-keyword-case
+$font-family-base:            var(--#{$prefix}font-sans-serif) !default;
+$font-family-code:            var(--#{$prefix}font-monospace) !default;
+
+// $font-size-root affects the value of `rem`, which is used for as well font sizes, paddings, and margins
+// $font-size-base affects the font size of the body text
+$font-size-root:              null !default;
+$font-size-base:              1rem !default; // Assumes the browser default, typically `16px`
+$font-size-sm:                $font-size-base * .875 !default;
+$font-size-lg:                $font-size-base * 1.25 !default;
+
+$font-weight-lighter:         lighter !default;
+$font-weight-light:           300 !default;
+$font-weight-normal:          400 !default;
+$font-weight-semibold:        600 !default;
+$font-weight-bold:            700 !default;
+$font-weight-bolder:          bolder !default;
+
+$font-weight-base:            $font-weight-normal !default;
+
+$line-height-base:            1.5 !default;
+$line-height-sm:              1.25 !default;
+$line-height-lg:              2 !default;
+
+$h1-font-size:                $font-size-base * 2.5 !default;
+$h2-font-size:                $font-size-base * 2 !default;
+$h3-font-size:                $font-size-base * 1.75 !default;
+$h4-font-size:                $font-size-base * 1.5 !default;
+$h5-font-size:                $font-size-base * 1.25 !default;
+$h6-font-size:                $font-size-base !default;
+// scss-docs-end font-variables
+
+// scss-docs-start font-sizes
+$font-sizes: (
+  1: $h1-font-size,
+  2: $h2-font-size,
+  3: $h3-font-size,
+  4: $h4-font-size,
+  5: $h5-font-size,
+  6: $h6-font-size
+) !default;
+// scss-docs-end font-sizes
+
+// scss-docs-start headings-variables
+$headings-margin-bottom:      $spacer * .5 !default;
+$headings-font-family:        null !default;
+$headings-font-style:         null !default;
+$headings-font-weight:        500 !default;
+$headings-line-height:        1.2 !default;
+$headings-color:              null !default;
+// scss-docs-end headings-variables
+
+// scss-docs-start display-headings
+$display-font-sizes: (
+  1: 5rem,
+  2: 4.5rem,
+  3: 4rem,
+  4: 3.5rem,
+  5: 3rem,
+  6: 2.5rem
+) !default;
+
+$display-font-family: null !default;
+$display-font-style:  null !default;
+$display-font-weight: 300 !default;
+$display-line-height: $headings-line-height !default;
+// scss-docs-end display-headings
+
+// scss-docs-start type-variables
+$lead-font-size:              $font-size-base * 1.25 !default;
+$lead-font-weight:            300 !default;
+
+$small-font-size:             .875em !default;
+
+$sub-sup-font-size:           .75em !default;
+
+$text-muted:                  $gray-600 !default;
+
+$initialism-font-size:        $small-font-size !default;
+
+$blockquote-margin-y:         $spacer !default;
+$blockquote-font-size:        $font-size-base * 1.25 !default;
+$blockquote-footer-color:     $gray-600 !default;
+$blockquote-footer-font-size: $small-font-size !default;
+$blockquote-border-width:     $spacer / 4 !default;
+$blockquote-border-color:     $gray-200 !default;
+
+$hr-margin-y:                 $spacer !default;
+$hr-color:                    inherit !default;
+
+// fusv-disable
+$hr-bg-color:                 null !default; // Deprecated in v5.2.0
+$hr-height:                   null !default; // Deprecated in v5.2.0
+// fusv-enable
+
+$hr-border-color:             null !default; // Allows for inherited colors
+$hr-border-width:             $border-width !default;
+$hr-opacity:                  .25 !default;
+
+$legend-margin-bottom:        .5rem !default;
+$legend-font-size:            1.5rem !default;
+$legend-font-weight:          null !default;
+
+$dt-font-weight:              $font-weight-bold !default;
+
+$list-inline-padding:         .5rem !default;
+
+$mark-padding:                .1875em !default;
+$mark-bg:                     $yellow-100 !default;
+// scss-docs-end type-variables
+
+
+// Tables
+//
+// Customizes the `.table` component with basic values, each used across all table variations.
+
+// scss-docs-start table-variables
+$table-cell-padding-y:        .5rem !default;
+$table-cell-padding-x:        .5rem !default;
+$table-cell-padding-y-sm:     .25rem !default;
+$table-cell-padding-x-sm:     .25rem !default;
+
+$table-cell-vertical-align:   top !default;
+
+$table-color:                 var(--#{$prefix}body-color) !default;
+$table-bg:                    transparent !default;
+$table-accent-bg:             transparent !default;
+
+$table-th-font-weight:        null !default;
+
+$table-striped-color:         $table-color !default;
+$table-striped-bg-factor:     .05 !default;
+$table-striped-bg:            rgba($black, $table-striped-bg-factor) !default;
+
+$table-active-color:          $table-color !default;
+$table-active-bg-factor:      .1 !default;
+$table-active-bg:             rgba($black, $table-active-bg-factor) !default;
+
+$table-hover-color:           $table-color !default;
+$table-hover-bg-factor:       .075 !default;
+$table-hover-bg:              rgba($black, $table-hover-bg-factor) !default;
+
+$table-border-factor:         .1 !default;
+$table-border-width:          $border-width !default;
+$table-border-color:          var(--#{$prefix}border-color) !default;
+
+$table-striped-order:         odd !default;
+$table-striped-columns-order: even !default;
+
+$table-group-separator-color: currentcolor !default;
+
+$table-caption-color:         $text-muted !default;
+
+$table-bg-scale:              -80% !default;
+// scss-docs-end table-variables
+
+// scss-docs-start table-loop
+$table-variants: (
+  "primary":    shift-color($primary, $table-bg-scale),
+  "secondary":  shift-color($secondary, $table-bg-scale),
+  "success":    shift-color($success, $table-bg-scale),
+  "info":       shift-color($info, $table-bg-scale),
+  "warning":    shift-color($warning, $table-bg-scale),
+  "danger":     shift-color($danger, $table-bg-scale),
+  "light":      $light,
+  "dark":       $dark,
+) !default;
+// scss-docs-end table-loop
+
+
+// Buttons + Forms
+//
+// Shared variables that are reassigned to `$input-` and `$btn-` specific variables.
+
+// scss-docs-start input-btn-variables
+$input-btn-padding-y:         .375rem !default;
+$input-btn-padding-x:         .75rem !default;
+$input-btn-font-family:       null !default;
+$input-btn-font-size:         $font-size-base !default;
+$input-btn-line-height:       $line-height-base !default;
+
+$input-btn-focus-width:         .25rem !default;
+$input-btn-focus-color-opacity: .25 !default;
+$input-btn-focus-color:         rgba($component-active-bg, $input-btn-focus-color-opacity) !default;
+$input-btn-focus-blur:          0 !default;
+$input-btn-focus-box-shadow:    0 0 $input-btn-focus-blur $input-btn-focus-width $input-btn-focus-color !default;
+
+$input-btn-padding-y-sm:      .25rem !default;
+$input-btn-padding-x-sm:      .5rem !default;
+$input-btn-font-size-sm:      $font-size-sm !default;
+
+$input-btn-padding-y-lg:      .5rem !default;
+$input-btn-padding-x-lg:      1rem !default;
+$input-btn-font-size-lg:      $font-size-lg !default;
+
+$input-btn-border-width:      $border-width !default;
+// scss-docs-end input-btn-variables
+
+
+// Buttons
+//
+// For each of Bootstrap's buttons, define text, background, and border color.
+
+// scss-docs-start btn-variables
+$btn-padding-y:               $input-btn-padding-y !default;
+$btn-padding-x:               $input-btn-padding-x !default;
+$btn-font-family:             $input-btn-font-family !default;
+$btn-font-size:               $input-btn-font-size !default;
+$btn-line-height:             $input-btn-line-height !default;
+$btn-white-space:             null !default; // Set to `nowrap` to prevent text wrapping
+
+$btn-padding-y-sm:            $input-btn-padding-y-sm !default;
+$btn-padding-x-sm:            $input-btn-padding-x-sm !default;
+$btn-font-size-sm:            $input-btn-font-size-sm !default;
+
+$btn-padding-y-lg:            $input-btn-padding-y-lg !default;
+$btn-padding-x-lg:            $input-btn-padding-x-lg !default;
+$btn-font-size-lg:            $input-btn-font-size-lg !default;
+
+$btn-border-width:            $input-btn-border-width !default;
+
+$btn-font-weight:             $font-weight-normal !default;
+$btn-box-shadow:              inset 0 1px 0 rgba($white, .15), 0 1px 1px rgba($black, .075) !default;
+$btn-focus-width:             $input-btn-focus-width !default;
+$btn-focus-box-shadow:        $input-btn-focus-box-shadow !default;
+$btn-disabled-opacity:        .65 !default;
+$btn-active-box-shadow:       inset 0 3px 5px rgba($black, .125) !default;
+
+$btn-link-color:              var(--#{$prefix}link-color) !default;
+$btn-link-hover-color:        var(--#{$prefix}link-hover-color) !default;
+$btn-link-disabled-color:     $gray-600 !default;
+
+// Allows for customizing button radius independently from global border radius
+$btn-border-radius:           $border-radius !default;
+$btn-border-radius-sm:        $border-radius-sm !default;
+$btn-border-radius-lg:        $border-radius-lg !default;
+
+$btn-transition:              color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;
+
+$btn-hover-bg-shade-amount:       15% !default;
+$btn-hover-bg-tint-amount:        15% !default;
+$btn-hover-border-shade-amount:   20% !default;
+$btn-hover-border-tint-amount:    10% !default;
+$btn-active-bg-shade-amount:      20% !default;
+$btn-active-bg-tint-amount:       20% !default;
+$btn-active-border-shade-amount:  25% !default;
+$btn-active-border-tint-amount:   10% !default;
+// scss-docs-end btn-variables
+
+
+// Forms
+
+// scss-docs-start form-text-variables
+$form-text-margin-top:                  .25rem !default;
+$form-text-font-size:                   $small-font-size !default;
+$form-text-font-style:                  null !default;
+$form-text-font-weight:                 null !default;
+$form-text-color:                       $text-muted !default;
+// scss-docs-end form-text-variables
+
+// scss-docs-start form-label-variables
+$form-label-margin-bottom:              .5rem !default;
+$form-label-font-size:                  null !default;
+$form-label-font-style:                 null !default;
+$form-label-font-weight:                null !default;
+$form-label-color:                      null !default;
+// scss-docs-end form-label-variables
+
+// scss-docs-start form-input-variables
+$input-padding-y:                       $input-btn-padding-y !default;
+$input-padding-x:                       $input-btn-padding-x !default;
+$input-font-family:                     $input-btn-font-family !default;
+$input-font-size:                       $input-btn-font-size !default;
+$input-font-weight:                     $font-weight-base !default;
+$input-line-height:                     $input-btn-line-height !default;
+
+$input-padding-y-sm:                    $input-btn-padding-y-sm !default;
+$input-padding-x-sm:                    $input-btn-padding-x-sm !default;
+$input-font-size-sm:                    $input-btn-font-size-sm !default;
+
+$input-padding-y-lg:                    $input-btn-padding-y-lg !default;
+$input-padding-x-lg:                    $input-btn-padding-x-lg !default;
+$input-font-size-lg:                    $input-btn-font-size-lg !default;
+
+$input-bg:                              $body-bg !default;
+$input-disabled-color:                  null !default;
+$input-disabled-bg:                     $gray-200 !default;
+$input-disabled-border-color:           null !default;
+
+$input-color:                           $body-color !default;
+$input-border-color:                    $gray-400 !default;
+$input-border-width:                    $input-btn-border-width !default;
+$input-box-shadow:                      $box-shadow-inset !default;
+
+$input-border-radius:                   $border-radius !default;
+$input-border-radius-sm:                $border-radius-sm !default;
+$input-border-radius-lg:                $border-radius-lg !default;
+
+$input-focus-bg:                        $input-bg !default;
+$input-focus-border-color:              tint-color($component-active-bg, 50%) !default;
+$input-focus-color:                     $input-color !default;
+$input-focus-width:                     $input-btn-focus-width !default;
+$input-focus-box-shadow:                $input-btn-focus-box-shadow !default;
+
+$input-placeholder-color:               $gray-600 !default;
+$input-plaintext-color:                 $body-color !default;
+
+$input-height-border:                   $input-border-width * 2 !default;
+
+$input-height-inner:                    add($input-line-height * 1em, $input-padding-y * 2) !default;
+$input-height-inner-half:               add($input-line-height * .5em, $input-padding-y) !default;
+$input-height-inner-quarter:            add($input-line-height * .25em, $input-padding-y * .5) !default;
+
+$input-height:                          add($input-line-height * 1em, add($input-padding-y * 2, $input-height-border, false)) !default;
+$input-height-sm:                       add($input-line-height * 1em, add($input-padding-y-sm * 2, $input-height-border, false)) !default;
+$input-height-lg:                       add($input-line-height * 1em, add($input-padding-y-lg * 2, $input-height-border, false)) !default;
+
+$input-transition:                      border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;
+
+$form-color-width:                      3rem !default;
+// scss-docs-end form-input-variables
+
+// scss-docs-start form-check-variables
+$form-check-input-width:                  1em !default;
+$form-check-min-height:                   $font-size-base * $line-height-base !default;
+$form-check-padding-start:                0 !default;
+$form-check-margin-bottom:                .125rem !default;
+$form-check-label-color:                  null !default;
+$form-check-label-cursor:                 pointer !default;
+$form-check-transition:                   null !default;
+
+$form-check-input-active-filter:          brightness(90%) !default;
+
+$form-check-input-bg:                     $input-bg !default;
+$form-check-input-border:                 1px solid rgba($black, .25) !default;
+$form-check-input-border-radius:          .25em !default;
+$form-check-radio-border-radius:          50% !default;
+$form-check-input-focus-border:           $input-focus-border-color !default;
+$form-check-input-focus-box-shadow:       $input-btn-focus-box-shadow !default;
+
+$form-check-input-checked-bg-color:       $component-active-bg !default;
+$form-check-input-checked-color:          color-contrast($form-check-input-checked-bg-color, $component-active-color) !default;
+$form-check-input-checked-border-color:   $form-check-input-checked-bg-color !default;
+$form-check-input-checked-bg-image:       url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path fill='none' stroke='#{$form-check-input-checked-color}' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/></svg>") !default;
+$form-check-radio-checked-bg-image:       url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='2' fill='#{$form-check-input-checked-color}'/></svg>") !default;
+
+$form-check-input-indeterminate-bg-color:       $component-active-bg !default;
+$form-check-input-indeterminate-color:          color-contrast($form-check-input-indeterminate-bg-color, $component-active-color) !default;
+$form-check-input-indeterminate-border-color:   $form-check-input-indeterminate-bg-color !default;
+$form-check-input-indeterminate-bg-image:       url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path fill='none' stroke='#{$form-check-input-indeterminate-color}' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/></svg>") !default;
+
+$form-check-input-disabled-opacity:        .5 !default;
+$form-check-label-disabled-opacity:        $form-check-input-disabled-opacity !default;
+$form-check-btn-check-disabled-opacity:    $btn-disabled-opacity !default;
+
+$form-check-inline-margin-end:    1rem !default;
+// scss-docs-end form-check-variables
+
+// scss-docs-start form-switch-variables
+$form-switch-color:               rgba($black, .25) !default;
+$form-switch-width:               2em !default;
+$form-switch-padding-start:       $form-switch-width + .5em !default;
+$form-switch-bg-image:            url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='3' fill='#{$form-switch-color}'/></svg>") !default;
+$form-switch-border-radius:       $form-switch-width !default;
+$form-switch-transition:          background-position .15s ease-in-out !default;
+
+$form-switch-focus-color:         $input-focus-border-color !default;
+$form-switch-focus-bg-image:      url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='3' fill='#{$form-switch-focus-color}'/></svg>") !default;
+
+$form-switch-checked-color:       $component-active-color !default;
+$form-switch-checked-bg-image:    url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='3' fill='#{$form-switch-checked-color}'/></svg>") !default;
+$form-switch-checked-bg-position: right center !default;
+// scss-docs-end form-switch-variables
+
+// scss-docs-start input-group-variables
+$input-group-addon-padding-y:           $input-padding-y !default;
+$input-group-addon-padding-x:           $input-padding-x !default;
+$input-group-addon-font-weight:         $input-font-weight !default;
+$input-group-addon-bg:                  $gray-200 !default;
+$input-group-addon-color:               color-contrast($input-group-addon-bg, $input-color) !default;
+$input-group-addon-border-color:        $input-border-color !default;
+// scss-docs-end input-group-variables
+
+// scss-docs-start form-select-variables
+$form-select-padding-y:             $input-padding-y !default;
+$form-select-padding-x:             $input-padding-x !default;
+$form-select-font-family:           $input-font-family !default;
+$form-select-font-size:             $input-font-size !default;
+$form-select-indicator-padding:     $form-select-padding-x * 3 !default; // Extra padding for background-image
+$form-select-font-weight:           $input-font-weight !default;
+$form-select-line-height:           $input-line-height !default;
+$form-select-bg:                    $input-bg !default;
+$form-select-color:                 color-contrast($form-select-bg, $input-color) !default;
+$form-select-disabled-color:        null !default;
+$form-select-disabled-bg:           $gray-200 !default;
+$form-select-disabled-border-color: $input-disabled-border-color !default;
+$form-select-bg-position:           right $form-select-padding-x center !default;
+$form-select-bg-size:               16px 12px !default; // In pixels because image dimensions
+$form-select-indicator-color:       $gray-800 !default;
+$form-select-indicator:             url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path fill='none' stroke='#{$form-select-indicator-color}' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/></svg>") !default;
+
+$form-select-feedback-icon-padding-end: $form-select-padding-x * 2.5 + $form-select-indicator-padding !default;
+$form-select-feedback-icon-position:    center right $form-select-indicator-padding !default;
+$form-select-feedback-icon-size:        $input-height-inner-half $input-height-inner-half !default;
+
+$form-select-border-width:        $input-border-width !default;
+$form-select-border-color:        $input-border-color !default;
+$form-select-border-radius:       $input-border-radius !default;
+$form-select-box-shadow:          $box-shadow-inset !default;
+
+$form-select-focus-border-color:  $input-focus-border-color !default;
+$form-select-focus-width:         $input-focus-width !default;
+$form-select-focus-box-shadow:    0 0 0 $form-select-focus-width $input-btn-focus-color !default;
+
+$form-select-padding-y-sm:        $input-padding-y-sm !default;
+$form-select-padding-x-sm:        $input-padding-x-sm !default;
+$form-select-font-size-sm:        $input-font-size-sm !default;
+$form-select-border-radius-sm:    $input-border-radius-sm !default;
+
+$form-select-padding-y-lg:        $input-padding-y-lg !default;
+$form-select-padding-x-lg:        $input-padding-x-lg !default;
+$form-select-font-size-lg:        $input-font-size-lg !default;
+$form-select-border-radius-lg:    $input-border-radius-lg !default;
+
+$form-select-transition:          $input-transition !default;
+// scss-docs-end form-select-variables
+
+// scss-docs-start form-range-variables
+$form-range-track-width:          100% !default;
+$form-range-track-height:         .5rem !default;
+$form-range-track-cursor:         pointer !default;
+$form-range-track-bg:             $gray-300 !default;
+$form-range-track-border-radius:  1rem !default;
+$form-range-track-box-shadow:     $box-shadow-inset !default;
+
+$form-range-thumb-width:                   1rem !default;
+$form-range-thumb-height:                  $form-range-thumb-width !default;
+$form-range-thumb-bg:                      $component-active-bg !default;
+$form-range-thumb-border:                  0 !default;
+$form-range-thumb-border-radius:           1rem !default;
+$form-range-thumb-box-shadow:              0 .1rem .25rem rgba($black, .1) !default;
+$form-range-thumb-focus-box-shadow:        0 0 0 1px $body-bg, $input-focus-box-shadow !default;
+$form-range-thumb-focus-box-shadow-width:  $input-focus-width !default; // For focus box shadow issue in Edge
+$form-range-thumb-active-bg:               tint-color($component-active-bg, 70%) !default;
+$form-range-thumb-disabled-bg:             $gray-500 !default;
+$form-range-thumb-transition:              background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;
+// scss-docs-end form-range-variables
+
+// scss-docs-start form-file-variables
+$form-file-button-bg:             $input-group-addon-bg !default;
+$form-file-button-color:          color-contrast($form-file-button-bg, $input-color) !default;
+$form-file-button-hover-bg:       shade-color($form-file-button-bg, 5%) !default;
+// scss-docs-end form-file-variables
+
+// scss-docs-start form-floating-variables
+$form-floating-height:            add(3.5rem, $input-height-border) !default;
+$form-floating-line-height:       1.25 !default;
+$form-floating-padding-x:         $input-padding-x !default;
+$form-floating-padding-y:         1rem !default;
+$form-floating-input-padding-t:   1.625rem !default;
+$form-floating-input-padding-b:   .625rem !default;
+$form-floating-label-opacity:     .65 !default;
+$form-floating-label-transform:   scale(.85) translateY(-.5rem) translateX(.15rem) !default;
+$form-floating-transition:        opacity .1s ease-in-out, transform .1s ease-in-out !default;
+// scss-docs-end form-floating-variables
+
+// Form validation
+
+// scss-docs-start form-feedback-variables
+$form-feedback-margin-top:          $form-text-margin-top !default;
+$form-feedback-font-size:           $form-text-font-size !default;
+$form-feedback-font-style:          $form-text-font-style !default;
+$form-feedback-valid-color:         $success !default;
+$form-feedback-invalid-color:       $danger !default;
+
+$form-feedback-icon-valid-color:    $form-feedback-valid-color !default;
+$form-feedback-icon-valid:          url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'><path fill='#{$form-feedback-icon-valid-color}' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/></svg>") !default;
+$form-feedback-icon-invalid-color:  $form-feedback-invalid-color !default;
+$form-feedback-icon-invalid:        url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='#{$form-feedback-icon-invalid-color}'><circle cx='6' cy='6' r='4.5'/><path stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/><circle cx='6' cy='8.2' r='.6' fill='#{$form-feedback-icon-invalid-color}' stroke='none'/></svg>") !default;
+// scss-docs-end form-feedback-variables
+
+// scss-docs-start form-validation-states
+$form-validation-states: (
+  "valid": (
+    "color": $form-feedback-valid-color,
+    "icon": $form-feedback-icon-valid
+  ),
+  "invalid": (
+    "color": $form-feedback-invalid-color,
+    "icon": $form-feedback-icon-invalid
+  )
+) !default;
+// scss-docs-end form-validation-states
+
+// Z-index master list
+//
+// Warning: Avoid customizing these values. They're used for a bird's eye view
+// of components dependent on the z-axis and are designed to all work together.
+
+// scss-docs-start zindex-stack
+$zindex-dropdown:                   1000 !default;
+$zindex-sticky:                     1020 !default;
+$zindex-fixed:                      1030 !default;
+$zindex-offcanvas-backdrop:         1040 !default;
+$zindex-offcanvas:                  1045 !default;
+$zindex-modal-backdrop:             1050 !default;
+$zindex-modal:                      1055 !default;
+$zindex-popover:                    1070 !default;
+$zindex-tooltip:                    1080 !default;
+$zindex-toast:                      1090 !default;
+// scss-docs-end zindex-stack
+
+
+// Navs
+
+// scss-docs-start nav-variables
+$nav-link-padding-y:                .5rem !default;
+$nav-link-padding-x:                1rem !default;
+$nav-link-font-size:                null !default;
+$nav-link-font-weight:              null !default;
+$nav-link-color:                    var(--#{$prefix}link-color) !default;
+$nav-link-hover-color:              var(--#{$prefix}link-hover-color) !default;
+$nav-link-transition:               color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out !default;
+$nav-link-disabled-color:           $gray-600 !default;
+
+$nav-tabs-border-color:             $gray-300 !default;
+$nav-tabs-border-width:             $border-width !default;
+$nav-tabs-border-radius:            $border-radius !default;
+$nav-tabs-link-hover-border-color:  $gray-200 $gray-200 $nav-tabs-border-color !default;
+$nav-tabs-link-active-color:        $gray-700 !default;
+$nav-tabs-link-active-bg:           $body-bg !default;
+$nav-tabs-link-active-border-color: $gray-300 $gray-300 $nav-tabs-link-active-bg !default;
+
+$nav-pills-border-radius:           $border-radius !default;
+$nav-pills-link-active-bg:          $component-active-bg !default;
+$nav-pills-link-active-color:       color-contrast($nav-pills-link-active-bg, $component-active-color) !default;
+// scss-docs-end nav-variables
+
+
+// Navbar
+
+// scss-docs-start navbar-variables
+$navbar-padding-y:                  $spacer * .5 !default;
+$navbar-padding-x:                  null !default;
+
+$navbar-nav-link-padding-x:         .5rem !default;
+
+$navbar-brand-font-size:            $font-size-lg !default;
+// Compute the navbar-brand padding-y so the navbar-brand will have the same height as navbar-text and nav-link
+$nav-link-height:                   $font-size-base * $line-height-base + $nav-link-padding-y * 2 !default;
+$navbar-brand-height:               $navbar-brand-font-size * $line-height-base !default;
+$navbar-brand-padding-y:            ($nav-link-height - $navbar-brand-height) * .5 !default;
+$navbar-brand-margin-end:           1rem !default;
+
+$navbar-toggler-padding-y:          .25rem !default;
+$navbar-toggler-padding-x:          .75rem !default;
+$navbar-toggler-font-size:          $font-size-lg !default;
+$navbar-toggler-border-radius:      $btn-border-radius !default;
+$navbar-toggler-focus-width:        $btn-focus-width !default;
+$navbar-toggler-transition:         box-shadow .15s ease-in-out !default;
+
+$navbar-bg: null !default; // Background color for any navbarPage()
+$navbar-dark-bg: if($navbar-bg, $navbar-bg, $dark) !default; // Background color for navbarPage(inverse = TRUE)
+$navbar-light-bg: if($navbar-bg, $navbar-bg, $light) !default; // Background color for navbarPage(inverse = FALSE)
+$navbar-dark-contrast: color-contrast($navbar-dark-bg) !default; // Deepest contrasting color for navbarPage(inverse = TRUE). Defaults to $white or $black based on luminance of $navbar-dark-bg
+$navbar-light-contrast: color-contrast($navbar-light-bg) !default; // Deepest contrasting color for navbarPage(inverse = FALSE). Defaults to $white or $black based on luminance of $navbar-light-bg
+
+$navbar-light-color:                rgba($navbar-light-contrast, .55) !default;
+$navbar-light-hover-color:          rgba($navbar-light-contrast, .7) !default;
+$navbar-light-active-color:         rgba($navbar-light-contrast, .9) !default;
+$navbar-light-disabled-color:       rgba($navbar-light-contrast, .3) !default;
+$navbar-light-toggler-icon-bg:      url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'><path stroke='#{$navbar-light-color}' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/></svg>") !default;
+$navbar-light-toggler-border-color: rgba($navbar-light-contrast, .1) !default;
+$navbar-light-brand-color:          $navbar-light-active-color !default;
+$navbar-light-brand-hover-color:    $navbar-light-active-color !default;
+// scss-docs-end navbar-variables
+
+// scss-docs-start navbar-dark-variables
+$navbar-dark-color:                 rgba($navbar-dark-contrast, .55) !default;
+$navbar-dark-hover-color:           rgba($navbar-dark-contrast, .75) !default;
+$navbar-dark-active-color:          $navbar-dark-contrast !default;
+$navbar-dark-disabled-color:        rgba($navbar-dark-contrast, .25) !default;
+$navbar-dark-toggler-icon-bg:       url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'><path stroke='#{$navbar-dark-color}' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/></svg>") !default;
+$navbar-dark-toggler-border-color:  rgba($navbar-dark-contrast, .1) !default;
+$navbar-dark-brand-color:           $navbar-dark-active-color !default;
+$navbar-dark-brand-hover-color:     $navbar-dark-active-color !default;
+// scss-docs-end navbar-dark-variables
+
+
+// Dropdowns
+//
+// Dropdown menu container and contents.
+
+// scss-docs-start dropdown-variables
+$dropdown-min-width:                10rem !default;
+$dropdown-padding-x:                0 !default;
+$dropdown-padding-y:                .5rem !default;
+$dropdown-spacer:                   .125rem !default;
+$dropdown-font-size:                $font-size-base !default;
+$dropdown-color:                    $body-color !default;
+$dropdown-bg:                       $white !default;
+$dropdown-border-color:             var(--#{$prefix}border-color-translucent) !default;
+$dropdown-border-radius:            $border-radius !default;
+$dropdown-border-width:             $border-width !default;
+$dropdown-inner-border-radius:      subtract($dropdown-border-radius, $dropdown-border-width) !default;
+$dropdown-divider-bg:               $dropdown-border-color !default;
+$dropdown-divider-margin-y:         $spacer * .5 !default;
+$dropdown-box-shadow:               $box-shadow !default;
+
+$dropdown-link-color:               $gray-900 !default;
+$dropdown-link-hover-color:         shade-color($dropdown-link-color, 10%) !default;
+$dropdown-link-hover-bg:            $gray-200 !default;
+
+$dropdown-link-active-bg:           $component-active-bg !default;
+$dropdown-link-active-color:        color-contrast($dropdown-link-active-bg, $component-active-color) !default;
+
+$dropdown-link-disabled-color:      $gray-500 !default;
+
+$dropdown-item-padding-y:           $spacer * .25 !default;
+$dropdown-item-padding-x:           $spacer !default;
+
+$dropdown-header-color:             $gray-600 !default;
+$dropdown-header-padding-x:         $dropdown-item-padding-x !default;
+$dropdown-header-padding-y:         $dropdown-padding-y !default;
+// fusv-disable
+$dropdown-header-padding:           $dropdown-header-padding-y $dropdown-header-padding-x !default; // Deprecated in v5.2.0
+// fusv-enable
+// scss-docs-end dropdown-variables
+
+// scss-docs-start dropdown-dark-variables
+$dropdown-dark-color:               $gray-300 !default;
+$dropdown-dark-bg:                  $gray-800 !default;
+$dropdown-dark-border-color:        $dropdown-border-color !default;
+$dropdown-dark-divider-bg:          $dropdown-divider-bg !default;
+$dropdown-dark-box-shadow:          null !default;
+$dropdown-dark-link-color:          $dropdown-dark-color !default;
+$dropdown-dark-link-hover-color:    $white !default;
+$dropdown-dark-link-hover-bg:       rgba($white, .15) !default;
+$dropdown-dark-link-active-color:   $dropdown-link-active-color !default;
+$dropdown-dark-link-active-bg:      $dropdown-link-active-bg !default;
+$dropdown-dark-link-disabled-color: $gray-500 !default;
+$dropdown-dark-header-color:        $gray-500 !default;
+// scss-docs-end dropdown-dark-variables
+
+
+// Pagination
+
+// scss-docs-start pagination-variables
+$pagination-padding-y:              .375rem !default;
+$pagination-padding-x:              .75rem !default;
+$pagination-padding-y-sm:           .25rem !default;
+$pagination-padding-x-sm:           .5rem !default;
+$pagination-padding-y-lg:           .75rem !default;
+$pagination-padding-x-lg:           1.5rem !default;
+
+$pagination-font-size:              $font-size-base !default;
+
+$pagination-color:                  var(--#{$prefix}link-color) !default;
+$pagination-bg:                     $white !default;
+$pagination-border-radius:          $border-radius !default;
+$pagination-border-width:           $border-width !default;
+$pagination-margin-start:           ($pagination-border-width * -1) !default;
+$pagination-border-color:           $gray-300 !default;
+
+$pagination-focus-color:            var(--#{$prefix}link-hover-color) !default;
+$pagination-focus-bg:               $gray-200 !default;
+$pagination-focus-box-shadow:       $input-btn-focus-box-shadow !default;
+$pagination-focus-outline:          0 !default;
+
+$pagination-hover-color:            var(--#{$prefix}link-hover-color) !default;
+$pagination-hover-bg:               $gray-200 !default;
+$pagination-hover-border-color:     $gray-300 !default;
+
+$pagination-active-color:           $component-active-color !default;
+$pagination-active-bg:              $component-active-bg !default;
+$pagination-active-border-color:    $pagination-active-bg !default;
+
+$pagination-disabled-color:         $gray-600 !default;
+$pagination-disabled-bg:            $white !default;
+$pagination-disabled-border-color:  $gray-300 !default;
+
+$pagination-transition:              color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;
+
+$pagination-border-radius-sm:       $border-radius-sm !default;
+$pagination-border-radius-lg:       $border-radius-lg !default;
+// scss-docs-end pagination-variables
+
+
+// Placeholders
+
+// scss-docs-start placeholders
+$placeholder-opacity-max:           .5 !default;
+$placeholder-opacity-min:           .2 !default;
+// scss-docs-end placeholders
+
+// Cards
+
+// scss-docs-start card-variables
+$card-spacer-y:                     $spacer !default;
+$card-spacer-x:                     $spacer !default;
+$card-title-spacer-y:               $spacer * .5 !default;
+$card-border-width:                 $border-width !default;
+$card-border-color:                 var(--#{$prefix}border-color-translucent) !default;
+$card-border-radius:                $border-radius !default;
+$card-box-shadow:                   null !default;
+$card-inner-border-radius:          subtract($card-border-radius, $card-border-width) !default;
+$card-cap-padding-y:                $card-spacer-y * .5 !default;
+$card-cap-padding-x:                $card-spacer-x !default;
+$card-cap-bg:                       rgba($black, .03) !default;
+$card-cap-color:                    null !default;
+$card-height:                       null !default;
+$card-color:                        null !default;
+$card-bg:                           $white !default;
+$card-img-overlay-padding:          $spacer !default;
+$card-group-margin:                 $grid-gutter-width * .5 !default;
+// scss-docs-end card-variables
+
+// Accordion
+
+// scss-docs-start accordion-variables
+$accordion-padding-y:                     1rem !default;
+$accordion-padding-x:                     1.25rem !default;
+$accordion-color:                         $body-color !default; // Sass variable because of $accordion-button-icon
+$accordion-bg:                            $body-bg !default;
+$accordion-border-width:                  $border-width !default;
+$accordion-border-color:                  var(--#{$prefix}border-color) !default;
+$accordion-border-radius:                 $border-radius !default;
+$accordion-inner-border-radius:           subtract($accordion-border-radius, $accordion-border-width) !default;
+
+$accordion-body-padding-y:                $accordion-padding-y !default;
+$accordion-body-padding-x:                $accordion-padding-x !default;
+
+$accordion-button-padding-y:              $accordion-padding-y !default;
+$accordion-button-padding-x:              $accordion-padding-x !default;
+$accordion-button-color:                  $accordion-color !default;
+$accordion-button-bg:                     var(--#{$prefix}accordion-bg) !default;
+$accordion-transition:                    $btn-transition, border-radius .15s ease !default;
+$accordion-button-active-bg:              tint-color($component-active-bg, 90%) !default;
+$accordion-button-active-color:           shade-color($primary, 10%) !default;
+
+$accordion-button-focus-border-color:     $input-focus-border-color !default;
+$accordion-button-focus-box-shadow:       $btn-focus-box-shadow !default;
+
+$accordion-icon-width:                    1.25rem !default;
+$accordion-icon-color:                    $accordion-button-color !default;
+$accordion-icon-active-color:             $accordion-button-active-color !default;
+$accordion-icon-transition:               transform .2s ease-in-out !default;
+$accordion-icon-transform:                rotate(-180deg) !default;
+
+$accordion-button-icon:         url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$accordion-icon-color}'><path fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/></svg>") !default;
+$accordion-button-active-icon:  url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$accordion-icon-active-color}'><path fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/></svg>") !default;
+// scss-docs-end accordion-variables
+
+// Tooltips
+
+// scss-docs-start tooltip-variables
+$tooltip-font-size:                 $font-size-sm !default;
+$tooltip-max-width:                 200px !default;
+$tooltip-color:                     $white !default;
+$tooltip-bg:                        $black !default;
+$tooltip-border-radius:             $border-radius !default;
+$tooltip-opacity:                   .9 !default;
+$tooltip-padding-y:                 $spacer * .25 !default;
+$tooltip-padding-x:                 $spacer * .5 !default;
+$tooltip-margin:                    null !default; // TODO: remove this in v6
+
+$tooltip-arrow-width:               .8rem !default;
+$tooltip-arrow-height:              .4rem !default;
+// fusv-disable
+$tooltip-arrow-color:               null !default; // Deprecated in Bootstrap 5.2.0 for CSS variables
+// fusv-enable
+// scss-docs-end tooltip-variables
+
+// Form tooltips must come after regular tooltips
+// scss-docs-start tooltip-feedback-variables
+$form-feedback-tooltip-padding-y:     $tooltip-padding-y !default;
+$form-feedback-tooltip-padding-x:     $tooltip-padding-x !default;
+$form-feedback-tooltip-font-size:     $tooltip-font-size !default;
+$form-feedback-tooltip-line-height:   null !default;
+$form-feedback-tooltip-opacity:       $tooltip-opacity !default;
+$form-feedback-tooltip-border-radius: $tooltip-border-radius !default;
+// scss-docs-end tooltip-feedback-variables
+
+
+// Popovers
+
+// scss-docs-start popover-variables
+$popover-font-size:                 $font-size-sm !default;
+$popover-bg:                        $white !default;
+$popover-max-width:                 276px !default;
+$popover-border-width:              $border-width !default;
+$popover-border-color:              var(--#{$prefix}border-color-translucent) !default;
+$popover-border-radius:             $border-radius-lg !default;
+$popover-inner-border-radius:       subtract($popover-border-radius, $popover-border-width) !default;
+$popover-box-shadow:                $box-shadow !default;
+
+$popover-header-font-size:          $font-size-base !default;
+$popover-header-bg:                 shade-color($popover-bg, 6%) !default;
+$popover-header-color:              $headings-color !default;
+$popover-header-padding-y:          .5rem !default;
+$popover-header-padding-x:          $spacer !default;
+
+$popover-body-color:                $body-color !default;
+$popover-body-padding-y:            $spacer !default;
+$popover-body-padding-x:            $spacer !default;
+
+$popover-arrow-width:               1rem !default;
+$popover-arrow-height:              .5rem !default;
+// scss-docs-end popover-variables
+
+// fusv-disable
+// Deprecated in Bootstrap 5.2.0 for CSS variables
+$popover-arrow-color:               $popover-bg !default;
+$popover-arrow-outer-color:         var(--#{$prefix}border-color-translucent) !default;
+// fusv-enable
+
+
+// Toasts
+
+// scss-docs-start toast-variables
+$toast-max-width:                   350px !default;
+$toast-padding-x:                   .75rem !default;
+$toast-padding-y:                   .5rem !default;
+$toast-font-size:                   .875rem !default;
+$toast-color:                       null !default;
+$toast-background-color:            rgba($white, .85) !default;
+$toast-border-width:                $border-width !default;
+$toast-border-color:                var(--#{$prefix}border-color-translucent) !default;
+$toast-border-radius:               $border-radius !default;
+$toast-box-shadow:                  $box-shadow !default;
+$toast-spacing:                     $container-padding-x !default;
+
+$toast-header-color:                $gray-600 !default;
+$toast-header-background-color:     rgba($white, .85) !default;
+$toast-header-border-color:         rgba($black, .05) !default;
+// scss-docs-end toast-variables
+
+
+// Badges
+
+// scss-docs-start badge-variables
+$badge-font-size:                   .75em !default;
+$badge-font-weight:                 $font-weight-bold !default;
+$badge-color:                       $white !default;
+$badge-padding-y:                   .35em !default;
+$badge-padding-x:                   .65em !default;
+$badge-border-radius:               $border-radius !default;
+// scss-docs-end badge-variables
+
+
+// Modals
+
+// scss-docs-start modal-variables
+$modal-inner-padding:               $spacer !default;
+
+$modal-footer-margin-between:       .5rem !default;
+
+$modal-dialog-margin:               .5rem !default;
+$modal-dialog-margin-y-sm-up:       1.75rem !default;
+
+$modal-title-line-height:           $line-height-base !default;
+
+$modal-content-color:               null !default;
+$modal-content-bg:                  $white !default;
+$modal-content-border-color:        var(--#{$prefix}border-color-translucent) !default;
+$modal-content-border-width:        $border-width !default;
+$modal-content-border-radius:       $border-radius-lg !default;
+$modal-content-inner-border-radius: subtract($modal-content-border-radius, $modal-content-border-width) !default;
+$modal-content-box-shadow-xs:       $box-shadow-sm !default;
+$modal-content-box-shadow-sm-up:    $box-shadow !default;
+
+$modal-backdrop-bg:                 $black !default;
+$modal-backdrop-opacity:            .5 !default;
+
+$modal-header-border-color:         var(--#{$prefix}border-color) !default;
+$modal-header-border-width:         $modal-content-border-width !default;
+$modal-header-padding-y:            $modal-inner-padding !default;
+$modal-header-padding-x:            $modal-inner-padding !default;
+$modal-header-padding:              $modal-header-padding-y $modal-header-padding-x !default; // Keep this for backwards compatibility
+
+$modal-footer-bg:                   null !default;
+$modal-footer-border-color:         $modal-header-border-color !default;
+$modal-footer-border-width:         $modal-header-border-width !default;
+
+$modal-sm:                          300px !default;
+$modal-md:                          500px !default;
+$modal-lg:                          800px !default;
+$modal-xl:                          1140px !default;
+
+$modal-fade-transform:              translate(0, -50px) !default;
+$modal-show-transform:              none !default;
+$modal-transition:                  transform .3s ease-out !default;
+$modal-scale-transform:             scale(1.02) !default;
+// scss-docs-end modal-variables
+
+
+// Alerts
+//
+// Define alert colors, border radius, and padding.
+
+// scss-docs-start alert-variables
+$alert-padding-y:               $spacer !default;
+$alert-padding-x:               $spacer !default;
+$alert-margin-bottom:           1rem !default;
+$alert-border-radius:           $border-radius !default;
+$alert-link-font-weight:        $font-weight-bold !default;
+$alert-border-width:            $border-width !default;
+$alert-bg-scale:                -80% !default;
+$alert-border-scale:            -70% !default;
+$alert-color-scale:             40% !default;
+$alert-dismissible-padding-r:   $alert-padding-x * 3 !default; // 3x covers width of x plus default padding on either side
+// scss-docs-end alert-variables
+
+
+// Progress bars
+
+// scss-docs-start progress-variables
+$progress-height:                   1rem !default;
+$progress-font-size:                $font-size-base * .75 !default;
+$progress-bg:                       $gray-200 !default;
+$progress-border-radius:            $border-radius !default;
+$progress-box-shadow:               $box-shadow-inset !default;
+$progress-bar-color:                $white !default;
+$progress-bar-bg:                   $primary !default;
+$progress-bar-animation-timing:     1s linear infinite !default;
+$progress-bar-transition:           width .6s ease !default;
+// scss-docs-end progress-variables
+
+
+// List group
+
+// scss-docs-start list-group-variables
+$list-group-color:                  $gray-900 !default;
+$list-group-bg:                     $white !default;
+$list-group-border-color:           rgba($black, .125) !default;
+$list-group-border-width:           $border-width !default;
+$list-group-border-radius:          $border-radius !default;
+
+$list-group-item-padding-y:         $spacer * .5 !default;
+$list-group-item-padding-x:         $spacer !default;
+$list-group-item-bg-scale:          -80% !default;
+$list-group-item-color-scale:       40% !default;
+
+$list-group-hover-bg:               $gray-100 !default;
+$list-group-active-bg:              $component-active-bg !default;
+$list-group-active-color:           color-contrast($list-group-active-bg, $component-active-color) !default;
+$list-group-active-border-color:    $list-group-active-bg !default;
+
+$list-group-disabled-color:         $gray-600 !default;
+$list-group-disabled-bg:            $list-group-bg !default;
+
+$list-group-action-color:           $gray-700 !default;
+$list-group-action-hover-color:     $list-group-action-color !default;
+
+$list-group-action-active-color:    $body-color !default;
+$list-group-action-active-bg:       $gray-200 !default;
+// scss-docs-end list-group-variables
+
+
+// Image thumbnails
+
+// scss-docs-start thumbnail-variables
+$thumbnail-padding:                 .25rem !default;
+$thumbnail-bg:                      $body-bg !default;
+$thumbnail-border-width:            $border-width !default;
+$thumbnail-border-color:            var(--#{$prefix}border-color) !default;
+$thumbnail-border-radius:           $border-radius !default;
+$thumbnail-box-shadow:              $box-shadow-sm !default;
+// scss-docs-end thumbnail-variables
+
+
+// Figures
+
+// scss-docs-start figure-variables
+$figure-caption-font-size:          $small-font-size !default;
+$figure-caption-color:              $gray-600 !default;
+// scss-docs-end figure-variables
+
+
+// Breadcrumbs
+
+// scss-docs-start breadcrumb-variables
+$breadcrumb-font-size:              null !default;
+$breadcrumb-padding-y:              0 !default;
+$breadcrumb-padding-x:              0 !default;
+$breadcrumb-item-padding-x:         .5rem !default;
+$breadcrumb-margin-bottom:          1rem !default;
+$breadcrumb-bg:                     null !default;
+$breadcrumb-divider-color:          $gray-600 !default;
+$breadcrumb-active-color:           $gray-600 !default;
+$breadcrumb-divider:                quote("/") !default;
+$breadcrumb-divider-flipped:        $breadcrumb-divider !default;
+$breadcrumb-border-radius:          null !default;
+// scss-docs-end breadcrumb-variables
+
+// Carousel
+
+// scss-docs-start carousel-variables
+$carousel-control-color:             $white !default;
+$carousel-control-width:             15% !default;
+$carousel-control-opacity:           .5 !default;
+$carousel-control-hover-opacity:     .9 !default;
+$carousel-control-transition:        opacity .15s ease !default;
+
+$carousel-indicator-width:           30px !default;
+$carousel-indicator-height:          3px !default;
+$carousel-indicator-hit-area-height: 10px !default;
+$carousel-indicator-spacer:          3px !default;
+$carousel-indicator-opacity:         .5 !default;
+$carousel-indicator-active-bg:       $white !default;
+$carousel-indicator-active-opacity:  1 !default;
+$carousel-indicator-transition:      opacity .6s ease !default;
+
+$carousel-caption-width:             70% !default;
+$carousel-caption-color:             $white !default;
+$carousel-caption-padding-y:         1.25rem !default;
+$carousel-caption-spacer:            1.25rem !default;
+
+$carousel-control-icon-width:        2rem !default;
+
+$carousel-control-prev-icon-bg:      url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$carousel-control-color}'><path d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/></svg>") !default;
+$carousel-control-next-icon-bg:      url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$carousel-control-color}'><path d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/></svg>") !default;
+
+$carousel-transition-duration:       .6s !default;
+$carousel-transition:                transform $carousel-transition-duration ease-in-out !default; // Define transform transition first if using multiple transitions (e.g., `transform 2s ease, opacity .5s ease-out`)
+// scss-docs-end carousel-variables
+
+// scss-docs-start carousel-dark-variables
+$carousel-dark-indicator-active-bg:  $black !default;
+$carousel-dark-caption-color:        $black !default;
+$carousel-dark-control-icon-filter:  invert(1) grayscale(100) !default;
+// scss-docs-end carousel-dark-variables
+
+
+// Spinners
+
+// scss-docs-start spinner-variables
+$spinner-width:           2rem !default;
+$spinner-height:          $spinner-width !default;
+$spinner-vertical-align:  -.125em !default;
+$spinner-border-width:    .25em !default;
+$spinner-animation-speed: .75s !default;
+
+$spinner-width-sm:        1rem !default;
+$spinner-height-sm:       $spinner-width-sm !default;
+$spinner-border-width-sm: .2em !default;
+// scss-docs-end spinner-variables
+
+
+// Close
+
+// scss-docs-start close-variables
+$btn-close-width:            1em !default;
+$btn-close-height:           $btn-close-width !default;
+$btn-close-padding-x:        .25em !default;
+$btn-close-padding-y:        $btn-close-padding-x !default;
+$btn-close-color:            $black !default;
+$btn-close-bg:               url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$btn-close-color}'><path d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/></svg>") !default;
+$btn-close-focus-shadow:     $input-btn-focus-box-shadow !default;
+$btn-close-opacity:          .5 !default;
+$btn-close-hover-opacity:    .75 !default;
+$btn-close-focus-opacity:    1 !default;
+$btn-close-disabled-opacity: .25 !default;
+$btn-close-white-filter:     invert(1) grayscale(100%) brightness(200%) !default;
+// scss-docs-end close-variables
+
+
+// Offcanvas
+
+// scss-docs-start offcanvas-variables
+$offcanvas-padding-y:               $modal-inner-padding !default;
+$offcanvas-padding-x:               $modal-inner-padding !default;
+$offcanvas-horizontal-width:        400px !default;
+$offcanvas-vertical-height:         30vh !default;
+$offcanvas-transition-duration:     .3s !default;
+$offcanvas-border-color:            $modal-content-border-color !default;
+$offcanvas-border-width:            $modal-content-border-width !default;
+$offcanvas-title-line-height:       $modal-title-line-height !default;
+$offcanvas-bg-color:                $modal-content-bg !default;
+$offcanvas-color:                   $modal-content-color !default;
+$offcanvas-box-shadow:              $modal-content-box-shadow-xs !default;
+$offcanvas-backdrop-bg:             $modal-backdrop-bg !default;
+$offcanvas-backdrop-opacity:        $modal-backdrop-opacity !default;
+// scss-docs-end offcanvas-variables
+
+// Code
+
+$code-font-size:                    $small-font-size !default;
+// Amount intentionally matches mixture amount of shiny::inputPanel()
+// https://github.com/rstudio/shiny/blob/4eeb4a1/inst/www/shared/shiny_scss/bootstrap.scss#L25
+$code-bg: mix($body-bg, $body-color, 96%) !default;
+$code-color: color-contrast($code-bg) !default;
+
+$kbd-padding-y:                     .1875rem !default;
+$kbd-padding-x:                     .375rem !default;
+$kbd-font-size:                     $code-font-size !default;
+$kbd-color:                         var(--#{$prefix}body-bg) !default;
+$kbd-bg:                            var(--#{$prefix}body-color) !default;
+$nested-kbd-font-weight:            null !default; // Deprecated in v5.2.0, removing in v6
+
+$pre-bg: $code-bg  !default;
+$pre-color: color-contrast($pre-bg) !default;
+$pre-border: $border-width solid $border-color  !default;
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_card.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_card.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_card.scss	(revision 3762)
@@ -0,0 +1,244 @@
+//
+// Base styles
+//
+
+.card {
+  // scss-docs-start card-css-vars
+  --#{$prefix}card-spacer-y: #{$card-spacer-y};
+  --#{$prefix}card-spacer-x: #{$card-spacer-x};
+  --#{$prefix}card-title-spacer-y: #{$card-title-spacer-y};
+  --#{$prefix}card-border-width: #{$card-border-width};
+  --#{$prefix}card-border-color: #{$card-border-color};
+  --#{$prefix}card-border-radius: #{$card-border-radius};
+  --#{$prefix}card-box-shadow: #{$card-box-shadow};
+  --#{$prefix}card-inner-border-radius: #{$card-inner-border-radius};
+  --#{$prefix}card-cap-padding-y: #{$card-cap-padding-y};
+  --#{$prefix}card-cap-padding-x: #{$card-cap-padding-x};
+  --#{$prefix}card-cap-bg: #{$card-cap-bg};
+  --#{$prefix}card-cap-color: #{$card-cap-color};
+  --#{$prefix}card-height: #{$card-height};
+  --#{$prefix}card-color: #{$card-color};
+  --#{$prefix}card-bg: #{$card-bg};
+  --#{$prefix}card-img-overlay-padding: #{$card-img-overlay-padding};
+  --#{$prefix}card-group-margin: #{$card-group-margin};
+  // scss-docs-end card-css-vars
+
+  position: relative;
+  display: flex;
+  display: -webkit-flex;
+  flex-direction: column;
+  -webkit-flex-direction: column;
+  min-width: 0; // See https://github.com/twbs/bootstrap/pull/22740#issuecomment-305868106
+  height: var(--#{$prefix}card-height);
+  word-wrap: break-word;
+  background-color: var(--#{$prefix}card-bg);
+  background-clip: border-box;
+  border: var(--#{$prefix}card-border-width) solid var(--#{$prefix}card-border-color);
+  @include border-radius(var(--#{$prefix}card-border-radius));
+  @include box-shadow(var(--#{$prefix}card-box-shadow));
+
+  > hr {
+    margin-right: 0;
+    margin-left: 0;
+  }
+
+  > .list-group {
+    border-top: inherit;
+    border-bottom: inherit;
+
+    &:first-child {
+      border-top-width: 0;
+      @include border-top-radius(var(--#{$prefix}card-inner-border-radius));
+    }
+
+    &:last-child  {
+      border-bottom-width: 0;
+      @include border-bottom-radius(var(--#{$prefix}card-inner-border-radius));
+    }
+  }
+
+  // Due to specificity of the above selector (`.card > .list-group`), we must
+  // use a child selector here to prevent double borders.
+  > .card-header + .list-group,
+  > .list-group + .card-footer {
+    border-top: 0;
+  }
+}
+
+.card-body {
+  // Enable `flex-grow: 1` for decks and groups so that card blocks take up
+  // as much space as possible, ensuring footers are aligned to the bottom.
+  flex: 1 1 auto;
+  -webkit-flex: 1 1 auto;
+  padding: var(--#{$prefix}card-spacer-y) var(--#{$prefix}card-spacer-x);
+  color: var(--#{$prefix}card-color);
+}
+
+.card-title {
+  margin-bottom: var(--#{$prefix}card-title-spacer-y);
+}
+
+.card-subtitle {
+  margin-top: calc(-.5 * var(--#{$prefix}card-title-spacer-y)); // stylelint-disable-line function-disallowed-list
+  margin-bottom: 0;
+}
+
+.card-text:last-child {
+  margin-bottom: 0;
+}
+
+.card-link {
+  &:hover {
+    text-decoration: if($link-hover-decoration == underline, none, null);
+    -webkit-text-decoration: if($link-hover-decoration == underline, none, null);
+    -moz-text-decoration: if($link-hover-decoration == underline, none, null);
+    -ms-text-decoration: if($link-hover-decoration == underline, none, null);
+    -o-text-decoration: if($link-hover-decoration == underline, none, null);
+  }
+
+  + .card-link {
+    margin-left: var(--#{$prefix}card-spacer-x);
+  }
+}
+
+//
+// Optional textual caps
+//
+
+.card-header {
+  padding: var(--#{$prefix}card-cap-padding-y) var(--#{$prefix}card-cap-padding-x);
+  margin-bottom: 0; // Removes the default margin-bottom of <hN>
+  color: var(--#{$prefix}card-cap-color);
+  background-color: var(--#{$prefix}card-cap-bg);
+  border-bottom: var(--#{$prefix}card-border-width) solid var(--#{$prefix}card-border-color);
+
+  &:first-child {
+    @include border-radius(var(--#{$prefix}card-inner-border-radius) var(--#{$prefix}card-inner-border-radius) 0 0);
+  }
+}
+
+.card-footer {
+  padding: var(--#{$prefix}card-cap-padding-y) var(--#{$prefix}card-cap-padding-x);
+  color: var(--#{$prefix}card-cap-color);
+  background-color: var(--#{$prefix}card-cap-bg);
+  border-top: var(--#{$prefix}card-border-width) solid var(--#{$prefix}card-border-color);
+
+  &:last-child {
+    @include border-radius(0 0 var(--#{$prefix}card-inner-border-radius) var(--#{$prefix}card-inner-border-radius));
+  }
+}
+
+
+//
+// Header navs
+//
+
+.card-header-tabs {
+  margin-right: calc(-.5 * var(--#{$prefix}card-cap-padding-x)); // stylelint-disable-line function-disallowed-list
+  margin-bottom: calc(-1 * var(--#{$prefix}card-cap-padding-y)); // stylelint-disable-line function-disallowed-list
+  margin-left: calc(-.5 * var(--#{$prefix}card-cap-padding-x)); // stylelint-disable-line function-disallowed-list
+  border-bottom: 0;
+
+  .nav-link.active {
+    background-color: var(--#{$prefix}card-bg);
+    border-bottom-color: var(--#{$prefix}card-bg);
+  }
+}
+
+.card-header-pills {
+  margin-right: calc(-.5 * var(--#{$prefix}card-cap-padding-x)); // stylelint-disable-line function-disallowed-list
+  margin-left: calc(-.5 * var(--#{$prefix}card-cap-padding-x)); // stylelint-disable-line function-disallowed-list
+}
+
+// Card image
+.card-img-overlay {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  padding: var(--#{$prefix}card-img-overlay-padding);
+  @include border-radius(var(--#{$prefix}card-inner-border-radius));
+}
+
+.card-img,
+.card-img-top,
+.card-img-bottom {
+  width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch
+}
+
+.card-img,
+.card-img-top {
+  @include border-top-radius(var(--#{$prefix}card-inner-border-radius));
+}
+
+.card-img,
+.card-img-bottom {
+  @include border-bottom-radius(var(--#{$prefix}card-inner-border-radius));
+}
+
+
+//
+// Card groups
+//
+
+.card-group {
+  // The child selector allows nested `.card` within `.card-group`
+  // to display properly.
+  > .card {
+    margin-bottom: var(--#{$prefix}card-group-margin);
+  }
+
+  @include media-breakpoint-up(sm) {
+    display: flex;
+    display: -webkit-flex;
+    flex-flow: row wrap;
+    -webkit-flex-flow: row wrap;
+    // The child selector allows nested `.card` within `.card-group`
+    // to display properly.
+    > .card {
+      // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4
+      flex: 1 0 0%;
+      -webkit-flex: 1 0 0%;
+      margin-bottom: 0;
+
+      + .card {
+        margin-left: 0;
+        border-left: 0;
+      }
+
+      // Handle rounded corners
+      @if $enable-rounded {
+        &:not(:last-child) {
+          @include border-end-radius(0);
+
+          .card-img-top,
+          .card-header {
+            // stylelint-disable-next-line property-disallowed-list
+            border-top-right-radius: 0;
+          }
+          .card-img-bottom,
+          .card-footer {
+            // stylelint-disable-next-line property-disallowed-list
+            border-bottom-right-radius: 0;
+          }
+        }
+
+        &:not(:first-child) {
+          @include border-start-radius(0);
+
+          .card-img-top,
+          .card-header {
+            // stylelint-disable-next-line property-disallowed-list
+            border-top-left-radius: 0;
+          }
+          .card-img-bottom,
+          .card-footer {
+            // stylelint-disable-next-line property-disallowed-list
+            border-bottom-left-radius: 0;
+          }
+        }
+      }
+    }
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_tables.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_tables.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_tables.scss	(revision 3762)
@@ -0,0 +1,164 @@
+//
+// Basic Bootstrap table
+//
+
+.table {
+  --#{$prefix}table-color: #{$table-color};
+  --#{$prefix}table-bg: #{$table-bg};
+  --#{$prefix}table-border-color: #{$table-border-color};
+  --#{$prefix}table-accent-bg: #{$table-accent-bg};
+  --#{$prefix}table-striped-color: #{$table-striped-color};
+  --#{$prefix}table-striped-bg: #{$table-striped-bg};
+  --#{$prefix}table-active-color: #{$table-active-color};
+  --#{$prefix}table-active-bg: #{$table-active-bg};
+  --#{$prefix}table-hover-color: #{$table-hover-color};
+  --#{$prefix}table-hover-bg: #{$table-hover-bg};
+
+  width: 100%;
+  margin-bottom: $spacer;
+  color: var(--#{$prefix}table-color);
+  vertical-align: $table-cell-vertical-align;
+  border-color: var(--#{$prefix}table-border-color);
+
+  // Target th & td
+  // We need the child combinator to prevent styles leaking to nested tables which doesn't have a `.table` class.
+  // We use the universal selectors here to simplify the selector (else we would need 6 different selectors).
+  // Another advantage is that this generates less code and makes the selector less specific making it easier to override.
+  // stylelint-disable-next-line selector-max-universal
+  > :not(caption) > * > * {
+    padding: $table-cell-padding-y $table-cell-padding-x;
+    background-color: var(--#{$prefix}table-bg);
+    border-bottom-width: $table-border-width;
+    box-shadow: inset 0 0 0 9999px var(--#{$prefix}table-accent-bg);
+  }
+
+  > tbody {
+    vertical-align: inherit;
+  }
+
+  > thead {
+    vertical-align: bottom;
+  }
+}
+
+.table-group-divider {
+  border-top: ($table-border-width * 2) solid $table-group-separator-color;
+}
+
+//
+// Change placement of captions with a class
+//
+
+.caption-top {
+  caption-side: top;
+}
+
+
+//
+// Condensed table w/ half padding
+//
+
+.table-sm {
+  // stylelint-disable-next-line selector-max-universal
+  > :not(caption) > * > * {
+    padding: $table-cell-padding-y-sm $table-cell-padding-x-sm;
+  }
+}
+
+
+// Border versions
+//
+// Add or remove borders all around the table and between all the columns.
+//
+// When borders are added on all sides of the cells, the corners can render odd when
+// these borders do not have the same color or if they are semi-transparent.
+// Therefor we add top and border bottoms to the `tr`s and left and right borders
+// to the `td`s or `th`s
+
+.table-bordered {
+  > :not(caption) > * {
+    border-width: $table-border-width 0;
+
+    // stylelint-disable-next-line selector-max-universal
+    > * {
+      border-width: 0 $table-border-width;
+    }
+  }
+}
+
+.table-borderless {
+  // stylelint-disable-next-line selector-max-universal
+  > :not(caption) > * > * {
+    border-bottom-width: 0;
+  }
+
+  > :not(:first-child) {
+    border-top-width: 0;
+  }
+}
+
+// Zebra-striping
+//
+// Default zebra-stripe styles (alternating gray and transparent backgrounds)
+
+// For rows
+.table-striped {
+  > tbody > tr:nth-of-type(#{$table-striped-order}) > * {
+    --#{$prefix}table-accent-bg: var(--#{$prefix}table-striped-bg);
+    color: var(--#{$prefix}table-striped-color);
+  }
+}
+
+// For columns
+.table-striped-columns {
+  > :not(caption) > tr > :nth-child(#{$table-striped-columns-order}) {
+    --#{$prefix}table-accent-bg: var(--#{$prefix}table-striped-bg);
+    color: var(--#{$prefix}table-striped-color);
+  }
+}
+
+// Active table
+//
+// The `.table-active` class can be added to highlight rows or cells
+
+.table-active {
+  --#{$prefix}table-accent-bg: var(--#{$prefix}table-active-bg);
+  color: var(--#{$prefix}table-active-color);
+}
+
+// Hover effect
+//
+// Placed here since it has to come after the potential zebra striping
+
+.table-hover {
+  > tbody > tr:hover > * {
+    --#{$prefix}table-accent-bg: var(--#{$prefix}table-hover-bg);
+    color: var(--#{$prefix}table-hover-color);
+  }
+}
+
+
+// Table variants
+//
+// Table variants set the table cell backgrounds, border colors
+// and the colors of the striped, hovered & active tables
+
+@each $color, $value in $table-variants {
+  @include table-variant($color, $value);
+}
+
+// Responsive tables
+//
+// Generate series of `.table-responsive-*` classes for configuring the screen
+// size of where your table will overflow.
+
+@each $breakpoint in map-keys($grid-breakpoints) {
+  $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
+
+  @include media-breakpoint-down($breakpoint) {
+    .table-responsive#{$infix} {
+      overflow-x: auto;
+      -webkit-overflow-scrolling: touch;
+    }
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_utilities.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_utilities.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_utilities.scss	(revision 3762)
@@ -0,0 +1,647 @@
+// Utilities
+
+$utilities: () !default;
+// stylelint-disable-next-line scss/dollar-variable-default
+$utilities: map-merge(
+  (
+    // scss-docs-start utils-vertical-align
+    "align": (
+      property: vertical-align,
+      class: align,
+      values: baseline top middle bottom text-bottom text-top
+    ),
+    // scss-docs-end utils-vertical-align
+    // scss-docs-start utils-float
+    "float": (
+      responsive: true,
+      property: float,
+      values: (
+        start: left,
+        end: right,
+        none: none,
+      )
+    ),
+    // scss-docs-end utils-float
+    // Opacity utilities
+    // scss-docs-start utils-opacity
+    "opacity": (
+      property: opacity,
+      values: (
+        0: 0,
+        25: .25,
+        50: .5,
+        75: .75,
+        100: 1,
+      )
+    ),
+    // scss-docs-end utils-opacity
+    // scss-docs-start utils-overflow
+    "overflow": (
+      property: overflow,
+      values: auto hidden visible scroll,
+    ),
+    // scss-docs-end utils-overflow
+    // scss-docs-start utils-display
+    "display": (
+      responsive: true,
+      print: true,
+      property: display,
+      class: d,
+      values: inline inline-block block grid table table-row table-cell flex inline-flex none
+    ),
+    // scss-docs-end utils-display
+    // scss-docs-start utils-shadow
+    "shadow": (
+      property: box-shadow,
+      class: shadow,
+      values: (
+        null: $box-shadow,
+        sm: $box-shadow-sm,
+        lg: $box-shadow-lg,
+        none: none,
+      )
+    ),
+    // scss-docs-end utils-shadow
+    // scss-docs-start utils-position
+    "position": (
+      property: position,
+      values: static relative absolute fixed sticky
+    ),
+    "top": (
+      property: top,
+      values: $position-values
+    ),
+    "bottom": (
+      property: bottom,
+      values: $position-values
+    ),
+    "start": (
+      property: left,
+      class: start,
+      values: $position-values
+    ),
+    "end": (
+      property: right,
+      class: end,
+      values: $position-values
+    ),
+    "translate-middle": (
+      property: transform,
+      class: translate-middle,
+      values: (
+        null: translate(-50%, -50%),
+        x: translateX(-50%),
+        y: translateY(-50%),
+      )
+    ),
+    // scss-docs-end utils-position
+    // scss-docs-start utils-borders
+    "border": (
+      property: border,
+      values: (
+        null: var(--#{$prefix}border-width) var(--#{$prefix}border-style) var(--#{$prefix}border-color),
+        0: 0,
+      )
+    ),
+    "border-top": (
+      property: border-top,
+      values: (
+        null: var(--#{$prefix}border-width) var(--#{$prefix}border-style) var(--#{$prefix}border-color),
+        0: 0,
+      )
+    ),
+    "border-end": (
+      property: border-right,
+      class: border-end,
+      values: (
+        null: var(--#{$prefix}border-width) var(--#{$prefix}border-style) var(--#{$prefix}border-color),
+        0: 0,
+      )
+    ),
+    "border-bottom": (
+      property: border-bottom,
+      values: (
+        null: var(--#{$prefix}border-width) var(--#{$prefix}border-style) var(--#{$prefix}border-color),
+        0: 0,
+      )
+    ),
+    "border-start": (
+      property: border-left,
+      class: border-start,
+      values: (
+        null: var(--#{$prefix}border-width) var(--#{$prefix}border-style) var(--#{$prefix}border-color),
+        0: 0,
+      )
+    ),
+    "border-color": (
+      property: border-color,
+      class: border,
+      local-vars: (
+        "border-opacity": 1
+      ),
+      values: $utilities-border-colors
+    ),
+    "border-width": (
+      css-var: true,
+      css-variable-name: border-width,
+      class: border,
+      values: $border-widths
+    ),
+    "border-opacity": (
+      css-var: true,
+      class: border-opacity,
+      values: (
+        10: .1,
+        25: .25,
+        50: .5,
+        75: .75,
+        100: 1
+      )
+    ),
+    // scss-docs-end utils-borders
+    // Sizing utilities
+    // scss-docs-start utils-sizing
+    "width": (
+      property: width,
+      class: w,
+      values: (
+        25: 25%,
+        50: 50%,
+        75: 75%,
+        100: 100%,
+        auto: auto
+      )
+    ),
+    "max-width": (
+      property: max-width,
+      class: mw,
+      values: (100: 100%)
+    ),
+    "viewport-width": (
+      property: width,
+      class: vw,
+      values: (100: 100vw)
+    ),
+    "min-viewport-width": (
+      property: min-width,
+      class: min-vw,
+      values: (100: 100vw)
+    ),
+    "height": (
+      property: height,
+      class: h,
+      values: (
+        25: 25%,
+        50: 50%,
+        75: 75%,
+        100: 100%,
+        auto: auto
+      )
+    ),
+    "max-height": (
+      property: max-height,
+      class: mh,
+      values: (100: 100%)
+    ),
+    "viewport-height": (
+      property: height,
+      class: vh,
+      values: (100: 100vh)
+    ),
+    "min-viewport-height": (
+      property: min-height,
+      class: min-vh,
+      values: (100: 100vh)
+    ),
+    // scss-docs-end utils-sizing
+    // Flex utilities
+    // scss-docs-start utils-flex
+    "flex": (
+      responsive: true,
+      property: flex,
+      values: (fill: 1 1 auto)
+    ),
+    "flex-direction": (
+      responsive: true,
+      property: flex-direction,
+      class: flex,
+      values: row column row-reverse column-reverse
+    ),
+    "flex-grow": (
+      responsive: true,
+      property: flex-grow,
+      class: flex,
+      values: (
+        grow-0: 0,
+        grow-1: 1,
+      )
+    ),
+    "flex-shrink": (
+      responsive: true,
+      property: flex-shrink,
+      class: flex,
+      values: (
+        shrink-0: 0,
+        shrink-1: 1,
+      )
+    ),
+    "flex-wrap": (
+      responsive: true,
+      property: flex-wrap,
+      class: flex,
+      values: wrap nowrap wrap-reverse
+    ),
+    "justify-content": (
+      responsive: true,
+      property: justify-content,
+      values: (
+        start: flex-start,
+        end: flex-end,
+        center: center,
+        between: space-between,
+        around: space-around,
+        evenly: space-evenly,
+      )
+    ),
+    "align-items": (
+      responsive: true,
+      property: align-items,
+      values: (
+        start: flex-start,
+        end: flex-end,
+        center: center,
+        baseline: baseline,
+        stretch: stretch,
+      )
+    ),
+    "align-content": (
+      responsive: true,
+      property: align-content,
+      values: (
+        start: flex-start,
+        end: flex-end,
+        center: center,
+        between: space-between,
+        around: space-around,
+        stretch: stretch,
+      )
+    ),
+    "align-self": (
+      responsive: true,
+      property: align-self,
+      values: (
+        auto: auto,
+        start: flex-start,
+        end: flex-end,
+        center: center,
+        baseline: baseline,
+        stretch: stretch,
+      )
+    ),
+    "order": (
+      responsive: true,
+      property: order,
+      values: (
+        first: -1,
+        0: 0,
+        1: 1,
+        2: 2,
+        3: 3,
+        4: 4,
+        5: 5,
+        last: 6,
+      ),
+    ),
+    // scss-docs-end utils-flex
+    // Margin utilities
+    // scss-docs-start utils-spacing
+    "margin": (
+      responsive: true,
+      property: margin,
+      class: m,
+      values: map-merge($spacers, (auto: auto))
+    ),
+    "margin-x": (
+      responsive: true,
+      property: margin-right margin-left,
+      class: mx,
+      values: map-merge($spacers, (auto: auto))
+    ),
+    "margin-y": (
+      responsive: true,
+      property: margin-top margin-bottom,
+      class: my,
+      values: map-merge($spacers, (auto: auto))
+    ),
+    "margin-top": (
+      responsive: true,
+      property: margin-top,
+      class: mt,
+      values: map-merge($spacers, (auto: auto))
+    ),
+    "margin-end": (
+      responsive: true,
+      property: margin-right,
+      class: me,
+      values: map-merge($spacers, (auto: auto))
+    ),
+    "margin-bottom": (
+      responsive: true,
+      property: margin-bottom,
+      class: mb,
+      values: map-merge($spacers, (auto: auto))
+    ),
+    "margin-start": (
+      responsive: true,
+      property: margin-left,
+      class: ms,
+      values: map-merge($spacers, (auto: auto))
+    ),
+    // Negative margin utilities
+    "negative-margin": (
+      responsive: true,
+      property: margin,
+      class: m,
+      values: $negative-spacers
+    ),
+    "negative-margin-x": (
+      responsive: true,
+      property: margin-right margin-left,
+      class: mx,
+      values: $negative-spacers
+    ),
+    "negative-margin-y": (
+      responsive: true,
+      property: margin-top margin-bottom,
+      class: my,
+      values: $negative-spacers
+    ),
+    "negative-margin-top": (
+      responsive: true,
+      property: margin-top,
+      class: mt,
+      values: $negative-spacers
+    ),
+    "negative-margin-end": (
+      responsive: true,
+      property: margin-right,
+      class: me,
+      values: $negative-spacers
+    ),
+    "negative-margin-bottom": (
+      responsive: true,
+      property: margin-bottom,
+      class: mb,
+      values: $negative-spacers
+    ),
+    "negative-margin-start": (
+      responsive: true,
+      property: margin-left,
+      class: ms,
+      values: $negative-spacers
+    ),
+    // Padding utilities
+    "padding": (
+      responsive: true,
+      property: padding,
+      class: p,
+      values: $spacers
+    ),
+    "padding-x": (
+      responsive: true,
+      property: padding-right padding-left,
+      class: px,
+      values: $spacers
+    ),
+    "padding-y": (
+      responsive: true,
+      property: padding-top padding-bottom,
+      class: py,
+      values: $spacers
+    ),
+    "padding-top": (
+      responsive: true,
+      property: padding-top,
+      class: pt,
+      values: $spacers
+    ),
+    "padding-end": (
+      responsive: true,
+      property: padding-right,
+      class: pe,
+      values: $spacers
+    ),
+    "padding-bottom": (
+      responsive: true,
+      property: padding-bottom,
+      class: pb,
+      values: $spacers
+    ),
+    "padding-start": (
+      responsive: true,
+      property: padding-left,
+      class: ps,
+      values: $spacers
+    ),
+    // Gap utility
+    "gap": (
+      responsive: true,
+      property: gap,
+      class: gap,
+      values: $spacers
+    ),
+    // scss-docs-end utils-spacing
+    // Text
+    // scss-docs-start utils-text
+    "font-family": (
+      property: font-family,
+      class: font,
+      values: (monospace: var(--#{$prefix}font-monospace))
+    ),
+    "font-size": (
+      rfs: true,
+      property: font-size,
+      class: fs,
+      values: $font-sizes
+    ),
+    "font-style": (
+      property: font-style,
+      class: fst,
+      values: italic normal
+    ),
+    "font-weight": (
+      property: font-weight,
+      class: fw,
+      values: (
+        light: $font-weight-light,
+        lighter: $font-weight-lighter,
+        normal: $font-weight-normal,
+        bold: $font-weight-bold,
+        semibold: $font-weight-semibold,
+        bolder: $font-weight-bolder
+      )
+    ),
+    "line-height": (
+      property: line-height,
+      class: lh,
+      values: (
+        1: 1,
+        sm: $line-height-sm,
+        base: $line-height-base,
+        lg: $line-height-lg,
+      )
+    ),
+    "text-align": (
+      responsive: true,
+      property: text-align,
+      class: text,
+      values: (
+        start: left,
+        end: right,
+        center: center,
+      )
+    ),
+    "text-decoration": (
+      property: text-decoration,
+      values: none underline line-through
+    ),
+    "text-transform": (
+      property: text-transform,
+      class: text,
+      values: lowercase uppercase capitalize
+    ),
+    "white-space": (
+      property: white-space,
+      class: text,
+      values: (
+        wrap: normal,
+        nowrap: nowrap,
+      )
+    ),
+    "word-wrap": (
+      property: word-wrap word-break,
+      class: text,
+      values: (break: break-word),
+      rtl: false
+    ),
+    // scss-docs-end utils-text
+    // scss-docs-start utils-color
+    "color": (
+      property: color,
+      class: text,
+      local-vars: (
+        "text-opacity": 1
+      ),
+      values: map-merge(
+        $utilities-text-colors,
+        (
+          "muted": $text-muted,
+          "black-50": rgba($black, .5), // deprecated
+          "white-50": rgba($white, .5), // deprecated
+          "reset": inherit,
+        )
+      )
+    ),
+    "text-opacity": (
+      css-var: true,
+      class: text-opacity,
+      values: (
+        25: .25,
+        50: .5,
+        75: .75,
+        100: 1
+      )
+    ),
+    // scss-docs-end utils-color
+    // scss-docs-start utils-bg-color
+    "background-color": (
+      property: background-color,
+      class: bg,
+      local-vars: (
+        "bg-opacity": 1
+      ),
+      values: map-merge(
+        $utilities-bg-colors,
+        (
+          "transparent": transparent
+        )
+      )
+    ),
+    "bg-opacity": (
+      css-var: true,
+      class: bg-opacity,
+      values: (
+        10: .1,
+        25: .25,
+        50: .5,
+        75: .75,
+        100: 1
+      )
+    ),
+    // scss-docs-end utils-bg-color
+    "gradient": (
+      property: background-image,
+      class: bg,
+      values: (gradient: var(--#{$prefix}gradient))
+    ),
+    // scss-docs-start utils-interaction
+    "user-select": (
+      property: user-select,
+      values: all auto none
+    ),
+    "pointer-events": (
+      property: pointer-events,
+      class: pe,
+      values: none auto,
+    ),
+    // scss-docs-end utils-interaction
+    // scss-docs-start utils-border-radius
+    "rounded": (
+      property: border-radius,
+      class: rounded,
+      values: (
+        null: var(--#{$prefix}border-radius),
+        0: 0,
+        1: var(--#{$prefix}border-radius-sm),
+        2: var(--#{$prefix}border-radius),
+        3: var(--#{$prefix}border-radius-lg),
+        4: var(--#{$prefix}border-radius-xl),
+        5: var(--#{$prefix}border-radius-2xl),
+        circle: 50%,
+        pill: var(--#{$prefix}border-radius-pill)
+      )
+    ),
+    "rounded-top": (
+      property: border-top-left-radius border-top-right-radius,
+      class: rounded-top,
+      values: (null: var(--#{$prefix}border-radius))
+    ),
+    "rounded-end": (
+      property: border-top-right-radius border-bottom-right-radius,
+      class: rounded-end,
+      values: (null: var(--#{$prefix}border-radius))
+    ),
+    "rounded-bottom": (
+      property: border-bottom-right-radius border-bottom-left-radius,
+      class: rounded-bottom,
+      values: (null: var(--#{$prefix}border-radius))
+    ),
+    "rounded-start": (
+      property: border-bottom-left-radius border-top-left-radius,
+      class: rounded-start,
+      values: (null: var(--#{$prefix}border-radius))
+    ),
+    // scss-docs-end utils-border-radius
+    // scss-docs-start utils-visibility
+    "visibility": (
+      property: visibility,
+      class: null,
+      values: (
+        visible: visible,
+        invisible: hidden,
+      )
+    )
+    // scss-docs-end utils-visibility
+  ),
+  $utilities
+);
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_toasts.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_toasts.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_toasts.scss	(revision 3762)
@@ -0,0 +1,79 @@
+.toast {
+  // scss-docs-start toast-css-vars
+  --#{$prefix}toast-zindex: #{$zindex-toast};
+  --#{$prefix}toast-padding-x: #{$toast-padding-x};
+  --#{$prefix}toast-padding-y: #{$toast-padding-y};
+  --#{$prefix}toast-spacing: #{$toast-spacing};
+  --#{$prefix}toast-max-width: #{$toast-max-width};
+  @include rfs($toast-font-size, --#{$prefix}toast-font-size);
+  --#{$prefix}toast-color: #{$toast-color};
+  --#{$prefix}toast-bg: #{$toast-background-color};
+  --#{$prefix}toast-border-width: #{$toast-border-width};
+  --#{$prefix}toast-border-color: #{$toast-border-color};
+  --#{$prefix}toast-border-radius: #{$toast-border-radius};
+  --#{$prefix}toast-box-shadow: #{$toast-box-shadow};
+  --#{$prefix}toast-header-color: #{$toast-header-color};
+  --#{$prefix}toast-header-bg: #{$toast-header-background-color};
+  --#{$prefix}toast-header-border-color: #{$toast-header-border-color};
+  // scss-docs-end toast-css-vars
+
+  width: var(--#{$prefix}toast-max-width);
+  max-width: 100%;
+  @include font-size(var(--#{$prefix}toast-font-size));
+  color: var(--#{$prefix}toast-color);
+  pointer-events: auto;
+  background-color: var(--#{$prefix}toast-bg);
+  background-clip: padding-box;
+  border: var(--#{$prefix}toast-border-width) solid var(--#{$prefix}toast-border-color);
+  box-shadow: var(--#{$prefix}toast-box-shadow);
+  @include border-radius(var(--#{$prefix}toast-border-radius));
+
+  &.showing {
+    opacity: 0;
+  }
+
+  &:not(.show) {
+    display: none;
+  }
+}
+
+.toast-container {
+  --#{$prefix}toast-zindex: #{$zindex-toast};
+
+  position: absolute;
+  z-index: var(--#{$prefix}toast-zindex);
+  width: max-content;
+  width: -webkit-max-content;
+  width: -moz-max-content;
+  width: -ms-max-content;
+  width: -o-max-content;
+  max-width: 100%;
+  pointer-events: none;
+
+  > :not(:last-child) {
+    margin-bottom: var(--#{$prefix}toast-spacing);
+  }
+}
+
+.toast-header {
+  display: flex;
+  display: -webkit-flex;
+  align-items: center;
+  -webkit-align-items: center;
+  padding: var(--#{$prefix}toast-padding-y) var(--#{$prefix}toast-padding-x);
+  color: var(--#{$prefix}toast-header-color);
+  background-color: var(--#{$prefix}toast-header-bg);
+  background-clip: padding-box;
+  border-bottom: var(--#{$prefix}toast-border-width) solid var(--#{$prefix}toast-header-border-color);
+  @include border-top-radius(calc(var(--#{$prefix}toast-border-radius) - var(--#{$prefix}toast-border-width)));
+
+  .btn-close {
+    margin-right: calc(-.5 * var(--#{$prefix}toast-padding-x)); // stylelint-disable-line function-disallowed-list
+    margin-left: var(--#{$prefix}toast-padding-x);
+  }
+}
+
+.toast-body {
+  padding: var(--#{$prefix}toast-padding-x);
+  word-wrap: break-word;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_carousel.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_carousel.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_carousel.scss	(revision 3762)
@@ -0,0 +1,243 @@
+// Notes on the classes:
+//
+// 1. .carousel.pointer-event should ideally be pan-y (to allow for users to scroll vertically)
+//    even when their scroll action started on a carousel, but for compatibility (with Firefox)
+//    we're preventing all actions instead
+// 2. The .carousel-item-start and .carousel-item-end is used to indicate where
+//    the active slide is heading.
+// 3. .active.carousel-item is the current slide.
+// 4. .active.carousel-item-start and .active.carousel-item-end is the current
+//    slide in its in-transition state. Only one of these occurs at a time.
+// 5. .carousel-item-next.carousel-item-start and .carousel-item-prev.carousel-item-end
+//    is the upcoming slide in transition.
+
+.carousel {
+  position: relative;
+}
+
+.carousel.pointer-event {
+  touch-action: pan-y;
+  -webkit-touch-action: pan-y;
+  -moz-touch-action: pan-y;
+  -ms-touch-action: pan-y;
+  -o-touch-action: pan-y;
+}
+
+.carousel-inner {
+  position: relative;
+  width: 100%;
+  overflow: hidden;
+  @include clearfix();
+}
+
+.carousel-item {
+  position: relative;
+  display: none;
+  float: left;
+  width: 100%;
+  margin-right: -100%;
+  backface-visibility: hidden;
+  -webkit-backface-visibility: hidden;
+  -moz-backface-visibility: hidden;
+  -ms-backface-visibility: hidden;
+  -o-backface-visibility: hidden;
+  @include transition($carousel-transition);
+}
+
+.carousel-item.active,
+.carousel-item-next,
+.carousel-item-prev {
+  display: block;
+}
+
+/* rtl:begin:ignore */
+.carousel-item-next:not(.carousel-item-start),
+.active.carousel-item-end {
+  transform: translateX(100%);
+}
+
+.carousel-item-prev:not(.carousel-item-end),
+.active.carousel-item-start {
+  transform: translateX(-100%);
+}
+
+/* rtl:end:ignore */
+
+
+//
+// Alternate transitions
+//
+
+.carousel-fade {
+  .carousel-item {
+    opacity: 0;
+    transition-property: opacity;
+    transform: none;
+  }
+
+  .carousel-item.active,
+  .carousel-item-next.carousel-item-start,
+  .carousel-item-prev.carousel-item-end {
+    z-index: 1;
+    opacity: 1;
+  }
+
+  .active.carousel-item-start,
+  .active.carousel-item-end {
+    z-index: 0;
+    opacity: 0;
+    @include transition(opacity 0s $carousel-transition-duration);
+  }
+}
+
+
+//
+// Left/right controls for nav
+//
+
+.carousel-control-prev,
+.carousel-control-next {
+  position: absolute;
+  top: 0;
+  bottom: 0;
+  z-index: 1;
+  // Use flex for alignment (1-3)
+  display: flex; // 1. allow flex styles
+  display: -webkit-flex; // 1. allow flex styles
+  align-items: center; // 2. vertically center contents
+  -webkit-align-items: center; // 2. vertically center contents
+  justify-content: center; // 3. horizontally center contents
+  -webkit-justify-content: center; // 3. horizontally center contents
+  width: $carousel-control-width;
+  padding: 0;
+  color: $carousel-control-color;
+  text-align: center;
+  background: none;
+  border: 0;
+  opacity: $carousel-control-opacity;
+  @include transition($carousel-control-transition);
+
+  // Hover/focus state
+  &:hover,
+  &:focus {
+    color: $carousel-control-color;
+    text-decoration: none;
+    outline: 0;
+    opacity: $carousel-control-hover-opacity;
+  }
+}
+.carousel-control-prev {
+  left: 0;
+  background-image: if($enable-gradients, linear-gradient(90deg, rgba($black, .25), rgba($black, .001)), null);
+}
+.carousel-control-next {
+  right: 0;
+  background-image: if($enable-gradients, linear-gradient(270deg, rgba($black, .25), rgba($black, .001)), null);
+}
+
+// Icons for within
+.carousel-control-prev-icon,
+.carousel-control-next-icon {
+  display: inline-block;
+  width: $carousel-control-icon-width;
+  height: $carousel-control-icon-width;
+  background-repeat: no-repeat;
+  background-position: 50%;
+  background-size: 100% 100%;
+}
+
+/* rtl:options: {
+  "autoRename": true,
+  "stringMap":[ {
+    "name"    : "prev-next",
+    "search"  : "prev",
+    "replace" : "next"
+  } ]
+} */
+.carousel-control-prev-icon {
+  background-image: escape-svg($carousel-control-prev-icon-bg);
+}
+.carousel-control-next-icon {
+  background-image: escape-svg($carousel-control-next-icon-bg);
+}
+
+// Optional indicator pips/controls
+//
+// Add a container (such as a list) with the following class and add an item (ideally a focusable control,
+// like a button) with data-bs-target for each slide your carousel holds.
+
+.carousel-indicators {
+  position: absolute;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  z-index: 2;
+  display: flex;
+  display: -webkit-flex;
+  justify-content: center;
+  -webkit-justify-content: center;
+  padding: 0;
+  // Use the .carousel-control's width as margin so we don't overlay those
+  margin-right: $carousel-control-width;
+  margin-bottom: 1rem;
+  margin-left: $carousel-control-width;
+  list-style: none;
+
+  [data-bs-target] {
+    box-sizing: content-box;
+    flex: 0 1 auto;
+    -webkit-flex: 0 1 auto;
+    width: $carousel-indicator-width;
+    height: $carousel-indicator-height;
+    padding: 0;
+    margin-right: $carousel-indicator-spacer;
+    margin-left: $carousel-indicator-spacer;
+    text-indent: -999px;
+    cursor: pointer;
+    background-color: $carousel-indicator-active-bg;
+    background-clip: padding-box;
+    border: 0;
+    // Use transparent borders to increase the hit area by 10px on top and bottom.
+    border-top: $carousel-indicator-hit-area-height solid transparent;
+    border-bottom: $carousel-indicator-hit-area-height solid transparent;
+    opacity: $carousel-indicator-opacity;
+    @include transition($carousel-indicator-transition);
+  }
+
+  .active {
+    opacity: $carousel-indicator-active-opacity;
+  }
+}
+
+
+// Optional captions
+//
+//
+
+.carousel-caption {
+  position: absolute;
+  right: (100% - $carousel-caption-width) * .5;
+  bottom: $carousel-caption-spacer;
+  left: (100% - $carousel-caption-width) * .5;
+  padding-top: $carousel-caption-padding-y;
+  padding-bottom: $carousel-caption-padding-y;
+  color: $carousel-caption-color;
+  text-align: center;
+}
+
+// Dark mode carousel
+
+.carousel-dark {
+  .carousel-control-prev-icon,
+  .carousel-control-next-icon {
+    filter: $carousel-dark-control-icon-filter;
+  }
+
+  .carousel-indicators [data-bs-target] {
+    background-color: $carousel-dark-indicator-active-bg;
+  }
+
+  .carousel-caption {
+    color: $carousel-dark-caption-color;
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_transitions.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_transitions.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_transitions.scss	(revision 3762)
@@ -0,0 +1,27 @@
+.fade {
+  @include transition($transition-fade);
+
+  &:not(.show) {
+    opacity: 0;
+  }
+}
+
+// scss-docs-start collapse-classes
+.collapse {
+  &:not(.show) {
+    display: none;
+  }
+}
+
+.collapsing {
+  height: 0;
+  overflow: hidden;
+  @include transition($transition-collapse);
+
+  &.collapse-horizontal {
+    width: 0;
+    height: auto;
+    @include transition($transition-collapse-width);
+  }
+}
+// scss-docs-end collapse-classes
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_type.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_type.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_type.scss	(revision 3762)
@@ -0,0 +1,106 @@
+//
+// Headings
+//
+.h1 {
+  @extend h1;
+}
+
+.h2 {
+  @extend h2;
+}
+
+.h3 {
+  @extend h3;
+}
+
+.h4 {
+  @extend h4;
+}
+
+.h5 {
+  @extend h5;
+}
+
+.h6 {
+  @extend h6;
+}
+
+
+.lead {
+  @include font-size($lead-font-size);
+  font-weight: $lead-font-weight;
+}
+
+// Type display classes
+@each $display, $font-size in $display-font-sizes {
+  .display-#{$display} {
+    @include font-size($font-size);
+    font-family: $display-font-family;
+    font-style: $display-font-style;
+    font-weight: $display-font-weight;
+    line-height: $display-line-height;
+  }
+}
+
+//
+// Emphasis
+//
+.small {
+  @extend small;
+}
+
+.mark {
+  @extend mark;
+}
+
+//
+// Lists
+//
+
+.list-unstyled {
+  @include list-unstyled();
+}
+
+// Inline turns list items into inline-block
+.list-inline {
+  @include list-unstyled();
+}
+.list-inline-item {
+  display: inline-block;
+
+  &:not(:last-child) {
+    margin-right: $list-inline-padding;
+  }
+}
+
+
+//
+// Misc
+//
+
+// Builds on `abbr`
+.initialism {
+  @include font-size($initialism-font-size);
+  text-transform: uppercase;
+}
+
+// Blockquotes
+.blockquote {
+  margin-bottom: $blockquote-margin-y;
+  @include font-size($blockquote-font-size);
+
+  > :last-child {
+    margin-bottom: 0;
+  }
+}
+
+.blockquote-footer {
+  margin-top: -$blockquote-margin-y;
+  margin-bottom: $blockquote-margin-y;
+  @include font-size($blockquote-footer-font-size);
+  color: $blockquote-footer-color;
+
+  &::before {
+    content: "\2014\00A0"; // em dash, nbsp
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_nav.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_nav.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_nav.scss	(revision 3762)
@@ -0,0 +1,185 @@
+// Base class
+//
+// Kickstart any navigation component with a set of style resets. Works with
+// `<nav>`s, `<ul>`s or `<ol>`s.
+
+.nav {
+  // scss-docs-start nav-css-vars
+  --#{$prefix}nav-link-padding-x: #{$nav-link-padding-x};
+  --#{$prefix}nav-link-padding-y: #{$nav-link-padding-y};
+  @include rfs($nav-link-font-size, --#{$prefix}nav-link-font-size);
+  --#{$prefix}nav-link-font-weight: #{$nav-link-font-weight};
+  --#{$prefix}nav-link-color: #{$nav-link-color};
+  --#{$prefix}nav-link-hover-color: #{$nav-link-hover-color};
+  --#{$prefix}nav-link-disabled-color: #{$nav-link-disabled-color};
+  // scss-docs-end nav-css-vars
+
+  display: flex;
+  display: -webkit-flex;
+  flex-wrap: wrap;
+  -webkit-flex-wrap: wrap;
+  padding-left: 0;
+  margin-bottom: 0;
+  list-style: none;
+}
+
+.nav-link {
+  display: block;
+  padding: var(--#{$prefix}nav-link-padding-y) var(--#{$prefix}nav-link-padding-x);
+  @include font-size(var(--#{$prefix}nav-link-font-size));
+  font-weight: var(--#{$prefix}nav-link-font-weight);
+  color: var(--#{$prefix}nav-link-color);
+  text-decoration: if($link-decoration == none, null, none);
+  -webkit-text-decoration: if($link-decoration == none, null, none);
+  -moz-text-decoration: if($link-decoration == none, null, none);
+  -ms-text-decoration: if($link-decoration == none, null, none);
+  -o-text-decoration: if($link-decoration == none, null, none);
+  @include transition($nav-link-transition);
+
+  &:hover,
+  &:focus {
+    color: var(--#{$prefix}nav-link-hover-color);
+    text-decoration: if($link-hover-decoration == underline, none, null);
+    -webkit-text-decoration: if($link-hover-decoration == underline, none, null);
+    -moz-text-decoration: if($link-hover-decoration == underline, none, null);
+    -ms-text-decoration: if($link-hover-decoration == underline, none, null);
+    -o-text-decoration: if($link-hover-decoration == underline, none, null);
+  }
+
+  // Disabled state lightens text
+  &.disabled {
+    color: var(--#{$prefix}nav-link-disabled-color);
+    pointer-events: none;
+    cursor: default;
+  }
+}
+
+//
+// Tabs
+//
+
+.nav-tabs {
+  // scss-docs-start nav-tabs-css-vars
+  --#{$prefix}nav-tabs-border-width: #{$nav-tabs-border-width};
+  --#{$prefix}nav-tabs-border-color: #{$nav-tabs-border-color};
+  --#{$prefix}nav-tabs-border-radius: #{$nav-tabs-border-radius};
+  --#{$prefix}nav-tabs-link-hover-border-color: #{$nav-tabs-link-hover-border-color};
+  --#{$prefix}nav-tabs-link-active-color: #{$nav-tabs-link-active-color};
+  --#{$prefix}nav-tabs-link-active-bg: #{$nav-tabs-link-active-bg};
+  --#{$prefix}nav-tabs-link-active-border-color: #{$nav-tabs-link-active-border-color};
+  // scss-docs-end nav-tabs-css-vars
+
+  border-bottom: var(--#{$prefix}nav-tabs-border-width) solid var(--#{$prefix}nav-tabs-border-color);
+
+  .nav-link {
+    margin-bottom: calc(-1 * var(--#{$prefix}nav-tabs-border-width)); // stylelint-disable-line function-disallowed-list
+    background: none;
+    border: var(--#{$prefix}nav-tabs-border-width) solid transparent;
+    @include border-top-radius(var(--#{$prefix}nav-tabs-border-radius));
+
+    &:hover,
+    &:focus {
+      // Prevents active .nav-link tab overlapping focus outline of previous/next .nav-link
+      isolation: isolate;
+      border-color: var(--#{$prefix}nav-tabs-link-hover-border-color);
+    }
+
+    &.disabled,
+    &:disabled {
+      color: var(--#{$prefix}nav-link-disabled-color);
+      background-color: transparent;
+      border-color: transparent;
+    }
+  }
+
+  .nav-link.active,
+  .nav-item.show .nav-link {
+    color: var(--#{$prefix}nav-tabs-link-active-color);
+    background-color: var(--#{$prefix}nav-tabs-link-active-bg);
+    border-color: var(--#{$prefix}nav-tabs-link-active-border-color);
+  }
+
+  .dropdown-menu {
+    // Make dropdown border overlap tab border
+    margin-top: calc(-1 * var(--#{$prefix}nav-tabs-border-width)); // stylelint-disable-line function-disallowed-list
+    // Remove the top rounded corners here since there is a hard edge above the menu
+    @include border-top-radius(0);
+  }
+}
+
+
+//
+// Pills
+//
+
+.nav-pills {
+  // scss-docs-start nav-pills-css-vars
+  --#{$prefix}nav-pills-border-radius: #{$nav-pills-border-radius};
+  --#{$prefix}nav-pills-link-active-color: #{$nav-pills-link-active-color};
+  --#{$prefix}nav-pills-link-active-bg: #{$nav-pills-link-active-bg};
+  // scss-docs-end nav-pills-css-vars
+
+  .nav-link {
+    background: none;
+    border: 0;
+    @include border-radius(var(--#{$prefix}nav-pills-border-radius));
+
+    &:disabled {
+      color: var(--#{$prefix}nav-link-disabled-color);
+      background-color: transparent;
+      border-color: transparent;
+    }
+  }
+
+  .nav-link.active,
+  .show > .nav-link {
+    color: var(--#{$prefix}nav-pills-link-active-color);
+    @include gradient-bg(var(--#{$prefix}nav-pills-link-active-bg));
+  }
+}
+
+
+//
+// Justified variants
+//
+
+.nav-fill {
+  > .nav-link,
+  .nav-item {
+    flex: 1 1 auto;
+    -webkit-flex: 1 1 auto;
+    text-align: center;
+  }
+}
+
+.nav-justified {
+  > .nav-link,
+  .nav-item {
+    flex-basis: 0;
+    -webkit-flex-basis: 0;
+    flex-grow: 1;
+    -webkit-flex-grow: 1;
+    text-align: center;
+  }
+}
+
+.nav-fill,
+.nav-justified {
+  .nav-item .nav-link {
+    width: 100%; // Make sure button will grow
+  }
+}
+
+
+// Tabbable tabs
+//
+// Hide tabbable panes to start, show them when `.active`
+
+.tab-content {
+  > .tab-pane {
+    display: none;
+  }
+  > .active {
+    display: block;
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/vendor/_rfs.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/vendor/_rfs.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/vendor/_rfs.scss	(revision 3762)
@@ -0,0 +1,354 @@
+// stylelint-disable property-blacklist, scss/dollar-variable-default
+
+// SCSS RFS mixin
+//
+// Automated responsive values for font sizes, paddings, margins and much more
+//
+// Licensed under MIT (https://github.com/twbs/rfs/blob/main/LICENSE)
+
+// Configuration
+
+// Base value
+$rfs-base-value: 1.25rem !default;
+$rfs-unit: rem !default;
+
+@if $rfs-unit != rem and $rfs-unit != px {
+  @error "`#{$rfs-unit}` is not a valid unit for $rfs-unit. Use `px` or `rem`.";
+}
+
+// Breakpoint at where values start decreasing if screen width is smaller
+$rfs-breakpoint: 1200px !default;
+$rfs-breakpoint-unit: px !default;
+
+@if $rfs-breakpoint-unit != px and $rfs-breakpoint-unit != em and $rfs-breakpoint-unit != rem {
+  @error "`#{$rfs-breakpoint-unit}` is not a valid unit for $rfs-breakpoint-unit. Use `px`, `em` or `rem`.";
+}
+
+// Resize values based on screen height and width
+$rfs-two-dimensional: false !default;
+
+// Factor of decrease
+$rfs-factor: 10 !default;
+
+@if type-of($rfs-factor) != number or $rfs-factor <= 1 {
+  @error "`#{$rfs-factor}` is not a valid  $rfs-factor, it must be greater than 1.";
+}
+
+// Mode. Possibilities: "min-media-query", "max-media-query"
+$rfs-mode: min-media-query !default;
+
+// Generate enable or disable classes. Possibilities: false, "enable" or "disable"
+$rfs-class: false !default;
+
+// 1 rem = $rfs-rem-value px
+$rfs-rem-value: 16 !default;
+
+// Safari iframe resize bug: https://github.com/twbs/rfs/issues/14
+$rfs-safari-iframe-resize-bug-fix: false !default;
+
+// Disable RFS by setting $enable-rfs to false
+$enable-rfs: true !default;
+
+// Cache $rfs-base-value unit
+$rfs-base-value-unit: unit($rfs-base-value);
+
+@function divide($dividend, $divisor, $precision: 10) {
+  $sign: if($dividend > 0 and $divisor > 0 or $dividend < 0 and $divisor < 0, 1, -1);
+  $dividend: abs($dividend);
+  $divisor: abs($divisor);
+  @if $dividend == 0 {
+    @return 0;
+  }
+  @if $divisor == 0 {
+    @error "Cannot divide by 0";
+  }
+  $remainder: $dividend;
+  $result: 0;
+  $factor: 10;
+  @while ($remainder > 0 and $precision >= 0) {
+    $quotient: 0;
+    @while ($remainder >= $divisor) {
+      $remainder: $remainder - $divisor;
+      $quotient: $quotient + 1;
+    }
+    $result: $result * 10 + $quotient;
+    $factor: $factor * .1;
+    $remainder: $remainder * 10;
+    $precision: $precision - 1;
+    @if ($precision < 0 and $remainder >= $divisor * 5) {
+      $result: $result + 1;
+    }
+  }
+  $result: $result * $factor * $sign;
+  $dividend-unit: unit($dividend);
+  $divisor-unit: unit($divisor);
+  $unit-map: (
+    "px": 1px,
+    "rem": 1rem,
+    "em": 1em,
+    "%": 1%
+  );
+  @if ($dividend-unit != $divisor-unit and map-has-key($unit-map, $dividend-unit)) {
+    $result: $result * map-get($unit-map, $dividend-unit);
+  }
+  @return $result;
+}
+
+// Remove px-unit from $rfs-base-value for calculations
+@if $rfs-base-value-unit == px {
+  $rfs-base-value: divide($rfs-base-value, $rfs-base-value * 0 + 1);
+}
+@else if $rfs-base-value-unit == rem {
+  $rfs-base-value: divide($rfs-base-value, divide($rfs-base-value * 0 + 1, $rfs-rem-value));
+}
+
+// Cache $rfs-breakpoint unit to prevent multiple calls
+$rfs-breakpoint-unit-cache: unit($rfs-breakpoint);
+
+// Remove unit from $rfs-breakpoint for calculations
+@if $rfs-breakpoint-unit-cache == px {
+  $rfs-breakpoint: divide($rfs-breakpoint, $rfs-breakpoint * 0 + 1);
+}
+@else if $rfs-breakpoint-unit-cache == rem or $rfs-breakpoint-unit-cache == "em" {
+  $rfs-breakpoint: divide($rfs-breakpoint, divide($rfs-breakpoint * 0 + 1, $rfs-rem-value));
+}
+
+// Calculate the media query value
+$rfs-mq-value: if($rfs-breakpoint-unit == px, #{$rfs-breakpoint}px, #{divide($rfs-breakpoint, $rfs-rem-value)}#{$rfs-breakpoint-unit});
+$rfs-mq-property-width: if($rfs-mode == max-media-query, max-width, min-width);
+$rfs-mq-property-height: if($rfs-mode == max-media-query, max-height, min-height);
+
+// Internal mixin used to determine which media query needs to be used
+@mixin _rfs-media-query {
+  @if $rfs-two-dimensional {
+    @if $rfs-mode == max-media-query {
+      @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}), (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {
+        @content;
+      }
+    }
+    @else {
+      @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) and (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {
+        @content;
+      }
+    }
+  }
+  @else {
+    @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) {
+      @content;
+    }
+  }
+}
+
+// Internal mixin that adds disable classes to the selector if needed.
+@mixin _rfs-rule {
+  @if $rfs-class == disable and $rfs-mode == max-media-query {
+    // Adding an extra class increases specificity, which prevents the media query to override the property
+    &,
+    .disable-rfs &,
+    &.disable-rfs {
+      @content;
+    }
+  }
+  @else if $rfs-class == enable and $rfs-mode == min-media-query {
+    .enable-rfs &,
+    &.enable-rfs {
+      @content;
+    }
+  }
+  @else {
+    @content;
+  }
+}
+
+// Internal mixin that adds enable classes to the selector if needed.
+@mixin _rfs-media-query-rule {
+
+  @if $rfs-class == enable {
+    @if $rfs-mode == min-media-query {
+      @content;
+    }
+
+    @include _rfs-media-query {
+      .enable-rfs &,
+      &.enable-rfs {
+        @content;
+      }
+    }
+  }
+  @else {
+    @if $rfs-class == disable and $rfs-mode == min-media-query {
+      .disable-rfs &,
+      &.disable-rfs {
+        @content;
+      }
+    }
+    @include _rfs-media-query {
+      @content;
+    }
+  }
+}
+
+// Helper function to get the formatted non-responsive value
+@function rfs-value($values) {
+  // Convert to list
+  $values: if(type-of($values) != list, ($values,), $values);
+
+  $val: '';
+
+  // Loop over each value and calculate value
+  @each $value in $values {
+    @if $value == 0 {
+      $val: $val + ' 0';
+    }
+    @else {
+      // Cache $value unit
+      $unit: if(type-of($value) == "number", unit($value), false);
+
+      @if $unit == px {
+        // Convert to rem if needed
+        $val: $val + ' ' + if($rfs-unit == rem, #{divide($value, $value * 0 + $rfs-rem-value)}rem, $value);
+      }
+      @else if $unit == rem {
+        // Convert to px if needed
+        $val: $val + ' ' + if($rfs-unit == px, #{divide($value, $value * 0 + 1) * $rfs-rem-value}px, $value);
+      }
+      @else {
+        // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value
+        $val: $val + ' ' + $value;
+      }
+    }
+  }
+
+  // Remove first space
+  @return unquote(str-slice($val, 2));
+}
+
+// Helper function to get the responsive value calculated by RFS
+@function rfs-fluid-value($values) {
+  // Convert to list
+  $values: if(type-of($values) != list, ($values,), $values);
+
+  $val: '';
+
+  // Loop over each value and calculate value
+  @each $value in $values {
+    @if $value == 0 {
+      $val: $val + ' 0';
+    }
+
+    @else {
+      // Cache $value unit
+      $unit: if(type-of($value) == "number", unit($value), false);
+
+      // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value
+      @if not $unit or $unit != px and $unit != rem {
+        $val: $val + ' ' + $value;
+      }
+
+      @else {
+        // Remove unit from $value for calculations
+        $value: divide($value, $value * 0 + if($unit == px, 1, divide(1, $rfs-rem-value)));
+
+        // Only add the media query if the value is greater than the minimum value
+        @if abs($value) <= $rfs-base-value or not $enable-rfs {
+          $val: $val + ' ' +  if($rfs-unit == rem, #{divide($value, $rfs-rem-value)}rem, #{$value}px);
+        }
+        @else {
+          // Calculate the minimum value
+          $value-min: $rfs-base-value + divide(abs($value) - $rfs-base-value, $rfs-factor);
+
+          // Calculate difference between $value and the minimum value
+          $value-diff: abs($value) - $value-min;
+
+          // Base value formatting
+          $min-width: if($rfs-unit == rem, #{divide($value-min, $rfs-rem-value)}rem, #{$value-min}px);
+
+          // Use negative value if needed
+          $min-width: if($value < 0, -$min-width, $min-width);
+
+          // Use `vmin` if two-dimensional is enabled
+          $variable-unit: if($rfs-two-dimensional, vmin, vw);
+
+          // Calculate the variable width between 0 and $rfs-breakpoint
+          $variable-width: #{divide($value-diff * 100, $rfs-breakpoint)}#{$variable-unit};
+
+          // Return the calculated value
+          $val: $val + ' calc(' + $min-width + if($value < 0, ' - ', ' + ') + $variable-width + ')';
+        }
+      }
+    }
+  }
+
+  // Remove first space
+  @return unquote(str-slice($val, 2));
+}
+
+// RFS mixin
+@mixin rfs($values, $property: font-size) {
+  @if $values != null {
+    $val: rfs-value($values);
+    $fluidVal: rfs-fluid-value($values);
+
+    // Do not print the media query if responsive & non-responsive values are the same
+    @if $val == $fluidVal {
+      #{$property}: $val;
+    }
+    @else {
+      @include _rfs-rule {
+        #{$property}: if($rfs-mode == max-media-query, $val, $fluidVal);
+
+        // Include safari iframe resize fix if needed
+        min-width: if($rfs-safari-iframe-resize-bug-fix, (0 * 1vw), null);
+      }
+
+      @include _rfs-media-query-rule {
+        #{$property}: if($rfs-mode == max-media-query, $fluidVal, $val);
+      }
+    }
+  }
+}
+
+// Shorthand helper mixins
+@mixin font-size($value) {
+  @include rfs($value);
+}
+
+@mixin padding($value) {
+  @include rfs($value, padding);
+}
+
+@mixin padding-top($value) {
+  @include rfs($value, padding-top);
+}
+
+@mixin padding-right($value) {
+  @include rfs($value, padding-right);
+}
+
+@mixin padding-bottom($value) {
+  @include rfs($value, padding-bottom);
+}
+
+@mixin padding-left($value) {
+  @include rfs($value, padding-left);
+}
+
+@mixin margin($value) {
+  @include rfs($value, margin);
+}
+
+@mixin margin-top($value) {
+  @include rfs($value, margin-top);
+}
+
+@mixin margin-right($value) {
+  @include rfs($value, margin-right);
+}
+
+@mixin margin-bottom($value) {
+  @include rfs($value, margin-bottom);
+}
+
+@mixin margin-left($value) {
+  @include rfs($value, margin-left);
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_forms.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_forms.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_forms.scss	(revision 3762)
@@ -0,0 +1,20 @@
+$shiny-check: ".shiny-input-container .checkbox";
+$shiny-check-inline: $shiny-check + "-inline";
+$shiny-radio: ".shiny-input-container .radio";
+$shiny-radio-inline: $shiny-radio + "-inline";
+$form-check-input-selector: ".form-check-input, " +
+  $shiny-check + " input, " + $shiny-check-inline + " input, " +
+  $shiny-radio + " input, " + $shiny-radio-inline + " input, ";
+$form-check-label-selector: ".form-check-label, " +
+  $shiny-check + " label, " + $shiny-check-inline + " label, " +
+  $shiny-radio + " label, " + $shiny-radio-inline + " label, ";
+
+@import "forms/labels";
+@import "forms/form-text";
+@import "forms/form-control";
+@import "forms/form-select";
+@import "forms/form-check";
+@import "forms/form-range";
+@import "forms/floating-labels";
+@import "forms/input-group";
+@import "forms/validation";
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/bootstrap-utilities.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/bootstrap-utilities.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/bootstrap-utilities.scss	(revision 3762)
@@ -0,0 +1,15 @@
+@import "mixins/banner";
+@include bsBanner(Utilities);
+
+// Configuration
+@import "functions";
+@import "variables";
+@import "maps";
+@import "mixins";
+@import "utilities";
+
+// Helpers
+@import "helpers";
+
+// Utilities
+@import "utilities/api";
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/helpers/_colored-links.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/helpers/_colored-links.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/helpers/_colored-links.scss	(revision 3762)
@@ -0,0 +1,12 @@
+@each $color, $value in $theme-colors {
+  .link-#{$color} {
+    color: $value !important; // stylelint-disable-line declaration-no-important
+
+    @if $link-shade-percentage != 0 {
+      &:hover,
+      &:focus {
+        color: if(color-contrast($value) == $color-contrast-light, shade-color($value, $link-shade-percentage), tint-color($value, $link-shade-percentage)) !important; // stylelint-disable-line declaration-no-important
+      }
+    }
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/helpers/_vr.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/helpers/_vr.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/helpers/_vr.scss	(revision 3762)
@@ -0,0 +1,9 @@
+.vr {
+  display: inline-block;
+  align-self: stretch;
+  -webkit-align-self: stretch;
+  width: 1px;
+  min-height: 1em;
+  background-color: currentcolor;
+  opacity: $hr-opacity;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/helpers/_stacks.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/helpers/_stacks.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/helpers/_stacks.scss	(revision 3762)
@@ -0,0 +1,23 @@
+// scss-docs-start stacks
+.hstack {
+  display: flex;
+  display: -webkit-flex;
+  flex-direction: row;
+  -webkit-flex-direction: row;
+  align-items: center;
+  -webkit-align-items: center;
+  align-self: stretch;
+  -webkit-align-self: stretch;
+}
+
+.vstack {
+  display: flex;
+  display: -webkit-flex;
+  flex: 1 1 auto;
+  -webkit-flex: 1 1 auto;
+  flex-direction: column;
+  -webkit-flex-direction: column;
+  align-self: stretch;
+  -webkit-align-self: stretch;
+}
+// scss-docs-end stacks
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/helpers/_text-truncation.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/helpers/_text-truncation.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/helpers/_text-truncation.scss	(revision 3762)
@@ -0,0 +1,7 @@
+//
+// Text truncation
+//
+
+.text-truncate {
+  @include text-truncate();
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/helpers/_clearfix.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/helpers/_clearfix.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/helpers/_clearfix.scss	(revision 3762)
@@ -0,0 +1,3 @@
+.clearfix {
+  @include clearfix();
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/helpers/_ratio.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/helpers/_ratio.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/helpers/_ratio.scss	(revision 3762)
@@ -0,0 +1,26 @@
+// Credit: Nicolas Gallagher and SUIT CSS.
+
+.ratio {
+  position: relative;
+  width: 100%;
+
+  &::before {
+    display: block;
+    padding-top: var(--#{$prefix}aspect-ratio);
+    content: "";
+  }
+
+  > * {
+    position: absolute;
+    top: 0;
+    left: 0;
+    width: 100%;
+    height: 100%;
+  }
+}
+
+@each $key, $ratio in $aspect-ratios {
+  .ratio-#{$key} {
+    --#{$prefix}aspect-ratio: #{$ratio};
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/helpers/_stretched-link.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/helpers/_stretched-link.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/helpers/_stretched-link.scss	(revision 3762)
@@ -0,0 +1,15 @@
+//
+// Stretched link
+//
+
+.stretched-link {
+  &::#{$stretched-link-pseudo-element} {
+    position: absolute;
+    top: 0;
+    right: 0;
+    bottom: 0;
+    left: 0;
+    z-index: $stretched-link-z-index;
+    content: "";
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/helpers/_visually-hidden.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/helpers/_visually-hidden.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/helpers/_visually-hidden.scss	(revision 3762)
@@ -0,0 +1,8 @@
+//
+// Visually hidden
+//
+
+.visually-hidden,
+.visually-hidden-focusable:not(:focus):not(:focus-within) {
+  @include visually-hidden();
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/helpers/_color-bg.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/helpers/_color-bg.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/helpers/_color-bg.scss	(revision 3762)
@@ -0,0 +1,10 @@
+// stylelint-disable function-name-case
+
+// All-caps `RGBA()` function used because of this Sass bug: https://github.com/sass/node-sass/issues/2251
+@each $color, $value in $theme-colors {
+  $color-rgb: to-rgb($value);
+  .text-bg-#{$color} {
+    color: color-contrast($value) if($enable-important-utilities, !important, null);
+    background-color: RGBA($color-rgb, var(--#{$prefix}bg-opacity, 1)) if($enable-important-utilities, !important, null);
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/helpers/_position.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/helpers/_position.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/helpers/_position.scss	(revision 3762)
@@ -0,0 +1,36 @@
+// Shorthand
+
+.fixed-top {
+  position: fixed;
+  top: 0;
+  right: 0;
+  left: 0;
+  z-index: $zindex-fixed;
+}
+
+.fixed-bottom {
+  position: fixed;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  z-index: $zindex-fixed;
+}
+
+// Responsive sticky top and bottom
+@each $breakpoint in map-keys($grid-breakpoints) {
+  @include media-breakpoint-up($breakpoint) {
+    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
+
+    .sticky#{$infix}-top {
+      position: sticky;
+      top: 0;
+      z-index: $zindex-sticky;
+    }
+
+    .sticky#{$infix}-bottom {
+      position: sticky;
+      bottom: 0;
+      z-index: $zindex-sticky;
+    }
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_reboot.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_reboot.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_reboot.scss	(revision 3762)
@@ -0,0 +1,637 @@
+// stylelint-disable declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix
+
+
+// Reboot
+//
+// Normalization of HTML elements, manually forked from Normalize.css to remove
+// styles targeting irrelevant browsers while applying new styles.
+//
+// Normalize is licensed MIT. https://github.com/necolas/normalize.css
+
+
+// Document
+//
+// Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.
+
+*,
+*::before,
+*::after {
+  box-sizing: border-box;
+}
+
+
+// Root
+//
+// Ability to the value of the root font sizes, affecting the value of `rem`.
+// null by default, thus nothing is generated.
+
+:root {
+  @if $font-size-root != null {
+    @include font-size(var(--#{$prefix}root-font-size));
+  }
+
+  @if $enable-smooth-scroll {
+    @media (prefers-reduced-motion: no-preference) {
+      scroll-behavior: smooth;
+    }
+  }
+}
+
+
+// Body
+//
+// 1. Remove the margin in all browsers.
+// 2. As a best practice, apply a default `background-color`.
+// 3. Prevent adjustments of font size after orientation changes in iOS.
+// 4. Change the default tap highlight to be completely transparent in iOS.
+
+// scss-docs-start reboot-body-rules
+body {
+  margin: 0; // 1
+  font-family: var(--#{$prefix}body-font-family);
+  @include font-size(var(--#{$prefix}body-font-size));
+  font-weight: var(--#{$prefix}body-font-weight);
+  line-height: var(--#{$prefix}body-line-height);
+  color: var(--#{$prefix}body-color);
+  text-align: var(--#{$prefix}body-text-align);
+  background-color: var(--#{$prefix}body-bg); // 2
+  -webkit-text-size-adjust: 100%; // 3
+  -webkit-tap-highlight-color: rgba($black, 0); // 4
+}
+// scss-docs-end reboot-body-rules
+
+
+// Content grouping
+//
+// 1. Reset Firefox's gray color
+
+hr {
+  margin: $hr-margin-y 0;
+  color: $hr-color; // 1
+  border: 0;
+  border-top: $hr-border-width solid $hr-border-color;
+  opacity: $hr-opacity;
+}
+
+
+// Typography
+//
+// 1. Remove top margins from headings
+//    By default, `<h1>`-`<h6>` all receive top and bottom margins. We nuke the top
+//    margin for easier control within type scales as it avoids margin collapsing.
+
+%heading {
+  margin-top: 0; // 1
+  margin-bottom: $headings-margin-bottom;
+  font-family: $headings-font-family;
+  font-style: $headings-font-style;
+  font-weight: $headings-font-weight;
+  line-height: $headings-line-height;
+  color: $headings-color;
+}
+
+h1 {
+  @extend %heading;
+  @include font-size($h1-font-size);
+}
+
+h2 {
+  @extend %heading;
+  @include font-size($h2-font-size);
+}
+
+h3 {
+  @extend %heading;
+  @include font-size($h3-font-size);
+}
+
+h4 {
+  @extend %heading;
+  @include font-size($h4-font-size);
+}
+
+h5 {
+  @extend %heading;
+  @include font-size($h5-font-size);
+}
+
+h6 {
+  @extend %heading;
+  @include font-size($h6-font-size);
+}
+
+
+// Reset margins on paragraphs
+//
+// Similarly, the top margin on `<p>`s get reset. However, we also reset the
+// bottom margin to use `rem` units instead of `em`.
+
+p {
+  margin-top: 0;
+  margin-bottom: $paragraph-margin-bottom;
+}
+
+
+// Abbreviations
+//
+// 1. Add the correct text decoration in Chrome, Edge, Opera, and Safari.
+// 2. Add explicit cursor to indicate changed behavior.
+// 3. Prevent the text-decoration to be skipped.
+
+abbr[title] {
+  text-decoration: underline dotted; // 1
+  -webkit-text-decoration: underline dotted; // 1
+  -moz-text-decoration: underline dotted; // 1
+  -ms-text-decoration: underline dotted; // 1
+  -o-text-decoration: underline dotted; // 1
+  cursor: help; // 2
+  text-decoration-skip-ink: none; // 3
+}
+
+
+// Address
+
+address {
+  margin-bottom: 1rem;
+  font-style: normal;
+  line-height: inherit;
+}
+
+
+// Lists
+
+ol,
+ul {
+  padding-left: 2rem;
+}
+
+ol,
+ul,
+dl {
+  margin-top: 0;
+  margin-bottom: 1rem;
+}
+
+ol ol,
+ul ul,
+ol ul,
+ul ol {
+  margin-bottom: 0;
+}
+
+dt {
+  font-weight: $dt-font-weight;
+}
+
+// 1. Undo browser default
+
+dd {
+  margin-bottom: .5rem;
+  margin-left: 0; // 1
+}
+
+
+// Blockquote
+
+blockquote {
+  margin: 0 0 1rem;
+  padding: ($blockquote-font-size / 2) $blockquote-font-size;
+  border-left: $blockquote-border-width solid $blockquote-border-color;
+  p, ul, ol {
+    &:last-child {
+      margin-bottom: 0;
+    }
+  }
+}
+
+
+// Strong
+//
+// Add the correct font weight in Chrome, Edge, and Safari
+
+b,
+strong {
+  font-weight: $font-weight-bolder;
+}
+
+
+// Small
+//
+// Add the correct font size in all browsers
+
+small {
+  @include font-size($small-font-size);
+}
+
+
+// Mark
+
+mark {
+  padding: $mark-padding;
+  background-color: var(--#{$prefix}highlight-bg);
+}
+
+
+// Sub and Sup
+//
+// Prevent `sub` and `sup` elements from affecting the line height in
+// all browsers.
+
+sub,
+sup {
+  position: relative;
+  @include font-size($sub-sup-font-size);
+  line-height: 0;
+  vertical-align: baseline;
+}
+
+sub { bottom: -.25em; }
+sup { top: -.5em; }
+
+
+// Links
+
+a {
+  color: var(--#{$prefix}link-color);
+  text-decoration: $link-decoration;
+  -webkit-text-decoration: $link-decoration;
+  -moz-text-decoration: $link-decoration;
+  -ms-text-decoration: $link-decoration;
+  -o-text-decoration: $link-decoration;
+
+  &:hover {
+    color: var(--#{$prefix}link-hover-color);
+    text-decoration: $link-hover-decoration;
+    -webkit-text-decoration: $link-hover-decoration;
+    -moz-text-decoration: $link-hover-decoration;
+    -ms-text-decoration: $link-hover-decoration;
+    -o-text-decoration: $link-hover-decoration;
+  }
+}
+
+// And undo these styles for placeholder links/named anchors (without href).
+// It would be more straightforward to just use a[href] in previous block, but that
+// causes specificity issues in many other styles that are too complex to fix.
+// See https://github.com/twbs/bootstrap/issues/19402
+
+a:not([href]):not([class]) {
+  &,
+  &:hover {
+    color: inherit;
+    text-decoration: none;
+  }
+}
+
+
+// Code
+
+pre,
+code,
+kbd,
+samp {
+  font-family: $font-family-code;
+  @include font-size(1em); // Correct the odd `em` font sizing in all browsers.
+}
+
+// 1. Remove browser default top margin
+// 2. Reset browser default of `1em` to use `rem`s
+// 3. Don't allow content to break outside
+
+pre {
+  display: block;
+  margin-top: 0; // 1
+  margin-bottom: 1rem; // 2
+  overflow: auto; // 3
+  @include font-size($code-font-size);
+  color: $pre-color;
+  background-color: $pre-bg;
+  padding: $spacer / 2;
+  border: $pre-border;
+  @include border-radius($border-radius);
+
+  // Account for some code outputs that place code tags in pre tags
+  code {
+    background-color: transparent;
+    @include font-size(inherit);
+    color: inherit;
+    word-break: normal;
+  }
+}
+
+code {
+  @include font-size($code-font-size);
+  color: var(--#{$prefix}code-color);
+  background-color: $code-bg;
+  @include border-radius($border-radius);
+  padding: $spacer/8 $spacer/4;
+  word-wrap: break-word;
+
+  // Streamline the style when inside anchors to avoid broken underline and more
+  a > & {
+    color: inherit;
+  }
+}
+
+kbd {
+  padding: $kbd-padding-y $kbd-padding-x;
+  @include font-size($kbd-font-size);
+  color: $kbd-color;
+  background-color: $kbd-bg;
+  @include border-radius($border-radius-sm);
+
+  kbd {
+    padding: 0;
+    @include font-size(1em);
+    font-weight: $nested-kbd-font-weight;
+  }
+}
+
+
+// Figures
+//
+// Apply a consistent margin strategy (matches our type styles).
+
+figure {
+  margin: 0 0 1rem;
+}
+
+
+// Images and content
+
+img,
+svg {
+  vertical-align: middle;
+}
+
+
+// Tables
+//
+// Prevent double borders
+
+table {
+  caption-side: bottom;
+  border-collapse: collapse;
+}
+
+caption {
+  padding-top: $table-cell-padding-y;
+  padding-bottom: $table-cell-padding-y;
+  color: $table-caption-color;
+  text-align: left;
+}
+
+// 1. Removes font-weight bold by inheriting
+// 2. Matches default `<td>` alignment by inheriting `text-align`.
+// 3. Fix alignment for Safari
+
+th {
+  font-weight: $table-th-font-weight; // 1
+  text-align: inherit; // 2
+  text-align: -webkit-match-parent; // 3
+}
+
+thead,
+tbody,
+tfoot,
+tr,
+td,
+th {
+  border-color: inherit;
+  border-style: solid;
+  border-width: 0;
+}
+
+
+// Forms
+//
+// 1. Allow labels to use `margin` for spacing.
+
+label {
+  display: inline-block; // 1
+}
+
+// Remove the default `border-radius` that macOS Chrome adds.
+// See https://github.com/twbs/bootstrap/issues/24093
+
+button {
+  // stylelint-disable-next-line property-disallowed-list
+  border-radius: 0;
+}
+
+// Explicitly remove focus outline in Chromium when it shouldn't be
+// visible (e.g. as result of mouse click or touch tap). It already
+// should be doing this automatically, but seems to currently be
+// confused and applies its very visible two-tone outline anyway.
+
+button:focus:not(:focus-visible) {
+  outline: 0;
+}
+
+// 1. Remove the margin in Firefox and Safari
+
+input,
+button,
+select,
+optgroup,
+textarea {
+  margin: 0; // 1
+  font-family: inherit;
+  @include font-size(inherit);
+  line-height: inherit;
+}
+
+// Remove the inheritance of text transform in Firefox
+button,
+select {
+  text-transform: none;
+}
+// Set the cursor for non-`<button>` buttons
+//
+// Details at https://github.com/twbs/bootstrap/pull/30562
+[role="button"] {
+  cursor: pointer;
+}
+
+select {
+  // Remove the inheritance of word-wrap in Safari.
+  // See https://github.com/twbs/bootstrap/issues/24990
+  word-wrap: normal;
+
+  // Undo the opacity change from Chrome
+  &:disabled {
+    opacity: 1;
+  }
+}
+
+// Remove the dropdown arrow only from text type inputs built with datalists in Chrome.
+// See https://stackoverflow.com/a/54997118
+
+[list]:not([type="date"]):not([type="datetime-local"]):not([type="month"]):not([type="week"]):not([type="time"])::-webkit-calendar-picker-indicator {
+  display: none !important;
+}
+
+// 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`
+//    controls in Android 4.
+// 2. Correct the inability to style clickable types in iOS and Safari.
+// 3. Opinionated: add "hand" cursor to non-disabled button elements.
+
+button,
+[type="button"], // 1
+[type="reset"],
+[type="submit"] {
+  -webkit-appearance: button; // 2
+
+  @if $enable-button-pointers {
+    &:not(:disabled) {
+      cursor: pointer; // 3
+    }
+  }
+}
+
+// Remove inner border and padding from Firefox, but don't restore the outline like Normalize.
+
+::-moz-focus-inner {
+  padding: 0;
+  border-style: none;
+}
+
+// 1. Textareas should really only resize vertically so they don't break their (horizontal) containers.
+
+textarea {
+  resize: vertical; // 1
+}
+
+// 1. Browsers set a default `min-width: min-content;` on fieldsets,
+//    unlike e.g. `<div>`s, which have `min-width: 0;` by default.
+//    So we reset that to ensure fieldsets behave more like a standard block element.
+//    See https://github.com/twbs/bootstrap/issues/12359
+//    and https://html.spec.whatwg.org/multipage/#the-fieldset-and-legend-elements
+// 2. Reset the default outline behavior of fieldsets so they don't affect page layout.
+
+fieldset {
+  min-width: 0; // 1
+  padding: 0; // 2
+  margin: 0; // 2
+  border: 0; // 2
+}
+
+// 1. By using `float: left`, the legend will behave like a block element.
+//    This way the border of a fieldset wraps around the legend if present.
+// 2. Fix wrapping bug.
+//    See https://github.com/twbs/bootstrap/issues/29712
+
+legend {
+  float: left; // 1
+  width: 100%;
+  padding: 0;
+  margin-bottom: $legend-margin-bottom;
+  @include font-size($legend-font-size);
+  font-weight: $legend-font-weight;
+  line-height: inherit;
+
+  + * {
+    clear: left; // 2
+  }
+}
+
+// Fix height of inputs with a type of datetime-local, date, month, week, or time
+// See https://github.com/twbs/bootstrap/issues/18842
+
+::-webkit-datetime-edit-fields-wrapper,
+::-webkit-datetime-edit-text,
+::-webkit-datetime-edit-minute,
+::-webkit-datetime-edit-hour-field,
+::-webkit-datetime-edit-day-field,
+::-webkit-datetime-edit-month-field,
+::-webkit-datetime-edit-year-field {
+  padding: 0;
+}
+
+::-webkit-inner-spin-button {
+  height: auto;
+}
+
+// 1. Correct the outline style in Safari.
+// 2. This overrides the extra rounded corners on search inputs in iOS so that our
+//    `.form-control` class can properly style them. Note that this cannot simply
+//    be added to `.form-control` as it's not specific enough. For details, see
+//    https://github.com/twbs/bootstrap/issues/11586.
+
+[type="search"] {
+  outline-offset: -2px; // 1
+  -webkit-appearance: textfield; // 2
+}
+
+// 1. A few input types should stay LTR
+// See https://rtlstyling.com/posts/rtl-styling#form-inputs
+// 2. RTL only output
+// See https://rtlcss.com/learn/usage-guide/control-directives/#raw
+
+/* rtl:raw:
+[type="tel"],
+[type="url"],
+[type="email"],
+[type="number"] {
+  direction: ltr;
+}
+*/
+
+// Remove the inner padding in Chrome and Safari on macOS.
+
+::-webkit-search-decoration {
+  -webkit-appearance: none;
+}
+
+// Remove padding around color pickers in webkit browsers
+
+::-webkit-color-swatch-wrapper {
+  padding: 0;
+}
+
+
+// 1. Inherit font family and line height for file input buttons
+// 2. Correct the inability to style clickable types in iOS and Safari.
+
+::file-selector-button {
+  font: inherit; // 1
+  -webkit-appearance: button; // 2
+}
+
+// Correct element displays
+
+output {
+  display: inline-block;
+}
+
+// Remove border from iframe
+
+iframe {
+  border: 0;
+}
+
+// Summary
+//
+// 1. Add the correct display in all browsers
+
+summary {
+  display: list-item; // 1
+  cursor: pointer;
+}
+
+
+// Progress
+//
+// Add the correct vertical alignment in Chrome, Firefox, and Opera.
+
+progress {
+  vertical-align: baseline;
+}
+
+
+// Hidden attribute
+//
+// Always hide an element with the `hidden` HTML attribute.
+
+[hidden] {
+  display: none !important;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_popover.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_popover.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_popover.scss	(revision 3762)
@@ -0,0 +1,196 @@
+.popover {
+  // scss-docs-start popover-css-vars
+  --#{$prefix}popover-zindex: #{$zindex-popover};
+  --#{$prefix}popover-max-width: #{$popover-max-width};
+  @include rfs($popover-font-size, --#{$prefix}popover-font-size);
+  --#{$prefix}popover-bg: #{$popover-bg};
+  --#{$prefix}popover-border-width: #{$popover-border-width};
+  --#{$prefix}popover-border-color: #{$popover-border-color};
+  --#{$prefix}popover-border-radius: #{$popover-border-radius};
+  --#{$prefix}popover-inner-border-radius: #{$popover-inner-border-radius};
+  --#{$prefix}popover-box-shadow: #{$popover-box-shadow};
+  --#{$prefix}popover-header-padding-x: #{$popover-header-padding-x};
+  --#{$prefix}popover-header-padding-y: #{$popover-header-padding-y};
+  @include rfs($popover-header-font-size, --#{$prefix}popover-header-font-size);
+  --#{$prefix}popover-header-color: #{$popover-header-color};
+  --#{$prefix}popover-header-bg: #{$popover-header-bg};
+  --#{$prefix}popover-body-padding-x: #{$popover-body-padding-x};
+  --#{$prefix}popover-body-padding-y: #{$popover-body-padding-y};
+  --#{$prefix}popover-body-color: #{$popover-body-color};
+  --#{$prefix}popover-arrow-width: #{$popover-arrow-width};
+  --#{$prefix}popover-arrow-height: #{$popover-arrow-height};
+  --#{$prefix}popover-arrow-border: var(--#{$prefix}popover-border-color);
+  // scss-docs-end popover-css-vars
+
+  z-index: var(--#{$prefix}popover-zindex);
+  display: block;
+  max-width: var(--#{$prefix}popover-max-width);
+  // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.
+  // So reset our font and text properties to avoid inheriting weird values.
+  @include reset-text();
+  @include font-size(var(--#{$prefix}popover-font-size));
+  // Allow breaking very long words so they don't overflow the popover's bounds
+  word-wrap: break-word;
+  background-color: var(--#{$prefix}popover-bg);
+  background-clip: padding-box;
+  border: var(--#{$prefix}popover-border-width) solid var(--#{$prefix}popover-border-color);
+  @include border-radius(var(--#{$prefix}popover-border-radius));
+  @include box-shadow(var(--#{$prefix}popover-box-shadow));
+
+  .popover-arrow {
+    display: block;
+    width: var(--#{$prefix}popover-arrow-width);
+    height: var(--#{$prefix}popover-arrow-height);
+
+    &::before,
+    &::after {
+      position: absolute;
+      display: block;
+      content: "";
+      border-color: transparent;
+      border-style: solid;
+      border-width: 0;
+    }
+  }
+}
+
+.bs-popover-top {
+  > .popover-arrow {
+    bottom: calc(-1 * (var(--#{$prefix}popover-arrow-height)) - var(--#{$prefix}popover-border-width)); // stylelint-disable-line function-disallowed-list
+
+    &::before,
+    &::after {
+      border-width: var(--#{$prefix}popover-arrow-height) calc(var(--#{$prefix}popover-arrow-width) * .5) 0; // stylelint-disable-line function-disallowed-list
+    }
+
+    &::before {
+      bottom: 0;
+      border-top-color: var(--#{$prefix}popover-arrow-border);
+    }
+
+    &::after {
+      bottom: var(--#{$prefix}popover-border-width);
+      border-top-color: var(--#{$prefix}popover-bg);
+    }
+  }
+}
+
+/* rtl:begin:ignore */
+.bs-popover-end {
+  > .popover-arrow {
+    left: calc(-1 * (var(--#{$prefix}popover-arrow-height)) - var(--#{$prefix}popover-border-width)); // stylelint-disable-line function-disallowed-list
+    width: var(--#{$prefix}popover-arrow-height);
+    height: var(--#{$prefix}popover-arrow-width);
+
+    &::before,
+    &::after {
+      border-width: calc(var(--#{$prefix}popover-arrow-width) * .5) var(--#{$prefix}popover-arrow-height) calc(var(--#{$prefix}popover-arrow-width) * .5) 0; // stylelint-disable-line function-disallowed-list
+    }
+
+    &::before {
+      left: 0;
+      border-right-color: var(--#{$prefix}popover-arrow-border);
+    }
+
+    &::after {
+      left: var(--#{$prefix}popover-border-width);
+      border-right-color: var(--#{$prefix}popover-bg);
+    }
+  }
+}
+
+/* rtl:end:ignore */
+
+.bs-popover-bottom {
+  > .popover-arrow {
+    top: calc(-1 * (var(--#{$prefix}popover-arrow-height)) - var(--#{$prefix}popover-border-width)); // stylelint-disable-line function-disallowed-list
+
+    &::before,
+    &::after {
+      border-width: 0 calc(var(--#{$prefix}popover-arrow-width) * .5) var(--#{$prefix}popover-arrow-height); // stylelint-disable-line function-disallowed-list
+    }
+
+    &::before {
+      top: 0;
+      border-bottom-color: var(--#{$prefix}popover-arrow-border);
+    }
+
+    &::after {
+      top: var(--#{$prefix}popover-border-width);
+      border-bottom-color: var(--#{$prefix}popover-bg);
+    }
+  }
+
+  // This will remove the popover-header's border just below the arrow
+  .popover-header::before {
+    position: absolute;
+    top: 0;
+    left: 50%;
+    display: block;
+    width: var(--#{$prefix}popover-arrow-width);
+    margin-left: calc(-.5 * var(--#{$prefix}popover-arrow-width)); // stylelint-disable-line function-disallowed-list
+    content: "";
+    border-bottom: var(--#{$prefix}popover-border-width) solid var(--#{$prefix}popover-header-bg);
+  }
+}
+
+/* rtl:begin:ignore */
+.bs-popover-start {
+  > .popover-arrow {
+    right: calc(-1 * (var(--#{$prefix}popover-arrow-height)) - var(--#{$prefix}popover-border-width)); // stylelint-disable-line function-disallowed-list
+    width: var(--#{$prefix}popover-arrow-height);
+    height: var(--#{$prefix}popover-arrow-width);
+
+    &::before,
+    &::after {
+      border-width: calc(var(--#{$prefix}popover-arrow-width) * .5) 0 calc(var(--#{$prefix}popover-arrow-width) * .5) var(--#{$prefix}popover-arrow-height); // stylelint-disable-line function-disallowed-list
+    }
+
+    &::before {
+      right: 0;
+      border-left-color: var(--#{$prefix}popover-arrow-border);
+    }
+
+    &::after {
+      right: var(--#{$prefix}popover-border-width);
+      border-left-color: var(--#{$prefix}popover-bg);
+    }
+  }
+}
+
+/* rtl:end:ignore */
+
+.bs-popover-auto {
+  &[data-popper-placement^="top"] {
+    @extend .bs-popover-top;
+  }
+  &[data-popper-placement^="right"] {
+    @extend .bs-popover-end;
+  }
+  &[data-popper-placement^="bottom"] {
+    @extend .bs-popover-bottom;
+  }
+  &[data-popper-placement^="left"] {
+    @extend .bs-popover-start;
+  }
+}
+
+// Offset the popover to account for the popover arrow
+.popover-header {
+  padding: var(--#{$prefix}popover-header-padding-y) var(--#{$prefix}popover-header-padding-x);
+  margin-bottom: 0; // Reset the default from Reboot
+  @include font-size(var(--#{$prefix}popover-header-font-size));
+  color: var(--#{$prefix}popover-header-color);
+  background-color: var(--#{$prefix}popover-header-bg);
+  border-bottom: var(--#{$prefix}popover-border-width) solid var(--#{$prefix}popover-border-color);
+  @include border-top-radius(var(--#{$prefix}popover-inner-border-radius));
+
+  &:empty {
+    display: none;
+  }
+}
+
+.popover-body {
+  padding: var(--#{$prefix}popover-body-padding-y) var(--#{$prefix}popover-body-padding-x);
+  color: var(--#{$prefix}popover-body-color);
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_dropdown.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_dropdown.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/scss/_dropdown.scss	(revision 3762)
@@ -0,0 +1,257 @@
+// The dropdown wrapper (`<div>`)
+.dropup,
+.dropend,
+.dropdown,
+.dropstart,
+.dropup-center,
+.dropdown-center {
+  position: relative;
+}
+
+.dropdown-toggle {
+  white-space: nowrap;
+
+  // Generate the caret automatically
+  @include caret();
+}
+
+// The dropdown menu
+.dropdown-menu {
+  // scss-docs-start dropdown-css-vars
+  --#{$prefix}dropdown-zindex: #{$zindex-dropdown};
+  --#{$prefix}dropdown-min-width: #{$dropdown-min-width};
+  --#{$prefix}dropdown-padding-x: #{$dropdown-padding-x};
+  --#{$prefix}dropdown-padding-y: #{$dropdown-padding-y};
+  --#{$prefix}dropdown-spacer: #{$dropdown-spacer};
+  @include rfs($dropdown-font-size, --#{$prefix}dropdown-font-size);
+  --#{$prefix}dropdown-color: #{$dropdown-color};
+  --#{$prefix}dropdown-bg: #{$dropdown-bg};
+  --#{$prefix}dropdown-border-color: #{$dropdown-border-color};
+  --#{$prefix}dropdown-border-radius: #{$dropdown-border-radius};
+  --#{$prefix}dropdown-border-width: #{$dropdown-border-width};
+  --#{$prefix}dropdown-inner-border-radius: #{$dropdown-inner-border-radius};
+  --#{$prefix}dropdown-divider-bg: #{$dropdown-divider-bg};
+  --#{$prefix}dropdown-divider-margin-y: #{$dropdown-divider-margin-y};
+  --#{$prefix}dropdown-box-shadow: #{$dropdown-box-shadow};
+  --#{$prefix}dropdown-link-color: #{$dropdown-link-color};
+  --#{$prefix}dropdown-link-hover-color: #{$dropdown-link-hover-color};
+  --#{$prefix}dropdown-link-hover-bg: #{$dropdown-link-hover-bg};
+  --#{$prefix}dropdown-link-active-color: #{$dropdown-link-active-color};
+  --#{$prefix}dropdown-link-active-bg: #{$dropdown-link-active-bg};
+  --#{$prefix}dropdown-link-disabled-color: #{$dropdown-link-disabled-color};
+  --#{$prefix}dropdown-item-padding-x: #{$dropdown-item-padding-x};
+  --#{$prefix}dropdown-item-padding-y: #{$dropdown-item-padding-y};
+  --#{$prefix}dropdown-header-color: #{$dropdown-header-color};
+  --#{$prefix}dropdown-header-padding-x: #{$dropdown-header-padding-x};
+  --#{$prefix}dropdown-header-padding-y: #{$dropdown-header-padding-y};
+  // scss-docs-end dropdown-css-vars
+
+  position: absolute;
+  z-index: var(--#{$prefix}dropdown-zindex);
+  display: none; // none by default, but block on "open" of the menu
+  min-width: var(--#{$prefix}dropdown-min-width);
+  padding: var(--#{$prefix}dropdown-padding-y) var(--#{$prefix}dropdown-padding-x);
+  margin: 0; // Override default margin of ul
+  @include font-size(var(--#{$prefix}dropdown-font-size));
+  color: var(--#{$prefix}dropdown-color);
+  text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer)
+  list-style: none;
+  background-color: var(--#{$prefix}dropdown-bg);
+  background-clip: padding-box;
+  border: var(--#{$prefix}dropdown-border-width) solid var(--#{$prefix}dropdown-border-color);
+  @include border-radius(var(--#{$prefix}dropdown-border-radius));
+  @include box-shadow(var(--#{$prefix}dropdown-box-shadow));
+
+  &[data-bs-popper] {
+    top: 100%;
+    left: 0;
+    margin-top: var(--#{$prefix}dropdown-spacer);
+  }
+
+  @if $dropdown-padding-y == 0 {
+    > .dropdown-item:first-child,
+    > li:first-child .dropdown-item {
+      @include border-top-radius(var(--#{$prefix}dropdown-inner-border-radius));
+    }
+    > .dropdown-item:last-child,
+    > li:last-child .dropdown-item {
+      @include border-bottom-radius(var(--#{$prefix}dropdown-inner-border-radius));
+    }
+
+  }
+}
+
+// scss-docs-start responsive-breakpoints
+// We deliberately hardcode the `bs-` prefix because we check
+// this custom property in JS to determine Popper's positioning
+
+@each $breakpoint in map-keys($grid-breakpoints) {
+  @include media-breakpoint-up($breakpoint) {
+    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
+
+    .dropdown-menu#{$infix}-start {
+      --bs-position: start;
+
+      &[data-bs-popper] {
+        right: auto;
+        left: 0;
+      }
+    }
+
+    .dropdown-menu#{$infix}-end {
+      --bs-position: end;
+
+      &[data-bs-popper] {
+        right: 0;
+        left: auto;
+      }
+    }
+  }
+}
+// scss-docs-end responsive-breakpoints
+
+// Allow for dropdowns to go bottom up (aka, dropup-menu)
+// Just add .dropup after the standard .dropdown class and you're set.
+.dropup {
+  .dropdown-menu[data-bs-popper] {
+    top: auto;
+    bottom: 100%;
+    margin-top: 0;
+    margin-bottom: var(--#{$prefix}dropdown-spacer);
+  }
+
+  .dropdown-toggle {
+    @include caret(up);
+  }
+}
+
+.dropend {
+  .dropdown-menu[data-bs-popper] {
+    top: 0;
+    right: auto;
+    left: 100%;
+    margin-top: 0;
+    margin-left: var(--#{$prefix}dropdown-spacer);
+  }
+
+  .dropdown-toggle {
+    @include caret(end);
+    &::after {
+      vertical-align: 0;
+    }
+  }
+}
+
+.dropstart {
+  .dropdown-menu[data-bs-popper] {
+    top: 0;
+    right: 100%;
+    left: auto;
+    margin-top: 0;
+    margin-right: var(--#{$prefix}dropdown-spacer);
+  }
+
+  .dropdown-toggle {
+    @include caret(start);
+    &::before {
+      vertical-align: 0;
+    }
+  }
+}
+
+
+// Dividers (basically an `<hr>`) within the dropdown
+.dropdown-divider {
+  height: 0;
+  margin: var(--#{$prefix}dropdown-divider-margin-y) 0;
+  overflow: hidden;
+  border-top: 1px solid var(--#{$prefix}dropdown-divider-bg);
+  opacity: 1; // Revisit in v6 to de-dupe styles that conflict with <hr> element
+}
+
+// Links, buttons, and more within the dropdown menu
+//
+// `<button>`-specific styles are denoted with `// For <button>s`
+.dropdown-item {
+  display: block;
+  width: 100%; // For `<button>`s
+  padding: var(--#{$prefix}dropdown-item-padding-y) var(--#{$prefix}dropdown-item-padding-x);
+  clear: both;
+  font-weight: $font-weight-normal;
+  color: var(--#{$prefix}dropdown-link-color);
+  text-align: inherit; // For `<button>`s
+  text-decoration: if($link-decoration == none, null, none);
+  -webkit-text-decoration: if($link-decoration == none, null, none);
+  -moz-text-decoration: if($link-decoration == none, null, none);
+  -ms-text-decoration: if($link-decoration == none, null, none);
+  -o-text-decoration: if($link-decoration == none, null, none);
+  white-space: nowrap; // prevent links from randomly breaking onto new lines
+  background-color: transparent; // For `<button>`s
+  border: 0; // For `<button>`s
+
+  &:hover,
+  &:focus {
+    color: var(--#{$prefix}dropdown-link-hover-color);
+    text-decoration: if($link-hover-decoration == underline, none, null);
+    -webkit-text-decoration: if($link-hover-decoration == underline, none, null);
+    -moz-text-decoration: if($link-hover-decoration == underline, none, null);
+    -ms-text-decoration: if($link-hover-decoration == underline, none, null);
+    -o-text-decoration: if($link-hover-decoration == underline, none, null);
+    @include gradient-bg(var(--#{$prefix}dropdown-link-hover-bg));
+  }
+
+  &.active,
+  &:active {
+    color: var(--#{$prefix}dropdown-link-active-color);
+    text-decoration: none;
+    @include gradient-bg(var(--#{$prefix}dropdown-link-active-bg));
+  }
+
+  &.disabled,
+  &:disabled {
+    color: var(--#{$prefix}dropdown-link-disabled-color);
+    pointer-events: none;
+    background-color: transparent;
+    // Remove CSS gradients if they're enabled
+    background-image: if($enable-gradients, none, null);
+  }
+}
+
+.dropdown-menu.show {
+  display: block;
+}
+
+// Dropdown section headers
+.dropdown-header {
+  display: block;
+  padding: var(--#{$prefix}dropdown-header-padding-y) var(--#{$prefix}dropdown-header-padding-x);
+  margin-bottom: 0; // for use with heading elements
+  @include font-size($font-size-sm);
+  color: var(--#{$prefix}dropdown-header-color);
+  white-space: nowrap; // as with > li > a
+}
+
+// Dropdown text
+.dropdown-item-text {
+  display: block;
+  padding: var(--#{$prefix}dropdown-item-padding-y) var(--#{$prefix}dropdown-item-padding-x);
+  color: var(--#{$prefix}dropdown-link-color);
+}
+
+// Dark dropdowns
+.dropdown-menu-dark {
+  // scss-docs-start dropdown-dark-css-vars
+  --#{$prefix}dropdown-color: #{$dropdown-dark-color};
+  --#{$prefix}dropdown-bg: #{$dropdown-dark-bg};
+  --#{$prefix}dropdown-border-color: #{$dropdown-dark-border-color};
+  --#{$prefix}dropdown-box-shadow: #{$dropdown-dark-box-shadow};
+  --#{$prefix}dropdown-link-color: #{$dropdown-dark-link-color};
+  --#{$prefix}dropdown-link-hover-color: #{$dropdown-dark-link-hover-color};
+  --#{$prefix}dropdown-divider-bg: #{$dropdown-dark-divider-bg};
+  --#{$prefix}dropdown-link-hover-bg: #{$dropdown-dark-link-hover-bg};
+  --#{$prefix}dropdown-link-active-color: #{$dropdown-dark-link-active-color};
+  --#{$prefix}dropdown-link-active-bg: #{$dropdown-dark-link-active-bg};
+  --#{$prefix}dropdown-link-disabled-color: #{$dropdown-dark-link-disabled-color};
+  --#{$prefix}dropdown-header-color: #{$dropdown-dark-header-color};
+  // scss-docs-end dropdown-dark-css-vars
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/README.md
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/README.md	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs5/README.md	(revision 3762)
@@ -0,0 +1,246 @@
+<p align="center">
+  <a href="https://getbootstrap.com/">
+    <img src="https://getbootstrap.com/docs/5.2/assets/brand/bootstrap-logo-shadow.png" alt="Bootstrap logo" width="200" height="165">
+  </a>
+</p>
+
+<h3 align="center">Bootstrap</h3>
+
+<p align="center">
+  Sleek, intuitive, and powerful front-end framework for faster and easier web development.
+  <br>
+  <a href="https://getbootstrap.com/docs/5.2/"><strong>Explore Bootstrap docs »</strong></a>
+  <br>
+  <br>
+  <a href="https://github.com/twbs/bootstrap/issues/new?assignees=-&labels=bug&template=bug_report.yml">Report bug</a>
+  ·
+  <a href="https://github.com/twbs/bootstrap/issues/new?assignees=&labels=feature&template=feature_request.yml">Request feature</a>
+  ·
+  <a href="https://themes.getbootstrap.com/">Themes</a>
+  ·
+  <a href="https://blog.getbootstrap.com/">Blog</a>
+</p>
+
+
+## Bootstrap 5
+
+Our default branch is for development of our Bootstrap 5 release. Head to the [`v4-dev` branch](https://github.com/twbs/bootstrap/tree/v4-dev) to view the readme, documentation, and source code for Bootstrap 4.
+
+
+## Table of contents
+
+- [Quick start](#quick-start)
+- [Status](#status)
+- [What's included](#whats-included)
+- [Bugs and feature requests](#bugs-and-feature-requests)
+- [Documentation](#documentation)
+- [Contributing](#contributing)
+- [Community](#community)
+- [Versioning](#versioning)
+- [Creators](#creators)
+- [Thanks](#thanks)
+- [Copyright and license](#copyright-and-license)
+
+
+## Quick start
+
+Several quick start options are available:
+
+- [Download the latest release](https://github.com/twbs/bootstrap/archive/v5.2.2.zip)
+- Clone the repo: `git clone https://github.com/twbs/bootstrap.git`
+- Install with [npm](https://www.npmjs.com/): `npm install bootstrap@v5.2.2`
+- Install with [yarn](https://yarnpkg.com/): `yarn add bootstrap@v5.2.2`
+- Install with [Composer](https://getcomposer.org/): `composer require twbs/bootstrap:5.2.2`
+- Install with [NuGet](https://www.nuget.org/): CSS: `Install-Package bootstrap` Sass: `Install-Package bootstrap.sass`
+
+Read the [Getting started page](https://getbootstrap.com/docs/5.2/getting-started/introduction/) for information on the framework contents, templates, examples, and more.
+
+
+## Status
+
+[![Build Status](https://img.shields.io/github/workflow/status/twbs/bootstrap/JS%20Tests/main?label=JS%20Tests&logo=github)](https://github.com/twbs/bootstrap/actions?query=workflow%3AJS+Tests+branch%3Amain)
+[![npm version](https://img.shields.io/npm/v/bootstrap)](https://www.npmjs.com/package/bootstrap)
+[![Gem version](https://img.shields.io/gem/v/bootstrap)](https://rubygems.org/gems/bootstrap)
+[![Meteor Atmosphere](https://img.shields.io/badge/meteor-twbs%3Abootstrap-blue)](https://atmospherejs.com/twbs/bootstrap)
+[![Packagist Prerelease](https://img.shields.io/packagist/vpre/twbs/bootstrap)](https://packagist.org/packages/twbs/bootstrap)
+[![NuGet](https://img.shields.io/nuget/vpre/bootstrap)](https://www.nuget.org/packages/bootstrap/absoluteLatest)
+[![Coverage Status](https://img.shields.io/coveralls/github/twbs/bootstrap/main)](https://coveralls.io/github/twbs/bootstrap?branch=main)
+[![CSS gzip size](https://img.badgesize.io/twbs/bootstrap/main/dist/css/bootstrap.min.css?compression=gzip&label=CSS%20gzip%20size)](https://github.com/twbs/bootstrap/blob/main/dist/css/bootstrap.min.css)
+[![CSS Brotli size](https://img.badgesize.io/twbs/bootstrap/main/dist/css/bootstrap.min.css?compression=brotli&label=CSS%20Brotli%20size)](https://github.com/twbs/bootstrap/blob/main/dist/css/bootstrap.min.css)
+[![JS gzip size](https://img.badgesize.io/twbs/bootstrap/main/dist/js/bootstrap.min.js?compression=gzip&label=JS%20gzip%20size)](https://github.com/twbs/bootstrap/blob/main/dist/js/bootstrap.min.js)
+[![JS Brotli size](https://img.badgesize.io/twbs/bootstrap/main/dist/js/bootstrap.min.js?compression=brotli&label=JS%20Brotli%20size)](https://github.com/twbs/bootstrap/blob/main/dist/js/bootstrap.min.js)
+[![BrowserStack Status](https://www.browserstack.com/automate/badge.svg?badge_key=SkxZcStBeExEdVJqQ2hWYnlWckpkNmNEY213SFp6WHFETWk2bGFuY3pCbz0tLXhqbHJsVlZhQnRBdEpod3NLSDMzaHc9PQ==--3d0b75245708616eb93113221beece33e680b229)](https://www.browserstack.com/automate/public-build/SkxZcStBeExEdVJqQ2hWYnlWckpkNmNEY213SFp6WHFETWk2bGFuY3pCbz0tLXhqbHJsVlZhQnRBdEpod3NLSDMzaHc9PQ==--3d0b75245708616eb93113221beece33e680b229)
+[![Backers on Open Collective](https://img.shields.io/opencollective/backers/bootstrap)](#backers)
+[![Sponsors on Open Collective](https://img.shields.io/opencollective/sponsors/bootstrap)](#sponsors)
+
+
+## What's included
+
+Within the download you'll find the following directories and files, logically grouping common assets and providing both compiled and minified variations.
+
+<details>
+  <summary>Download contents</summary>
+
+  ```text
+  bootstrap/
+  ├── css/
+  │   ├── bootstrap-grid.css
+  │   ├── bootstrap-grid.css.map
+  │   ├── bootstrap-grid.min.css
+  │   ├── bootstrap-grid.min.css.map
+  │   ├── bootstrap-grid.rtl.css
+  │   ├── bootstrap-grid.rtl.css.map
+  │   ├── bootstrap-grid.rtl.min.css
+  │   ├── bootstrap-grid.rtl.min.css.map
+  │   ├── bootstrap-reboot.css
+  │   ├── bootstrap-reboot.css.map
+  │   ├── bootstrap-reboot.min.css
+  │   ├── bootstrap-reboot.min.css.map
+  │   ├── bootstrap-reboot.rtl.css
+  │   ├── bootstrap-reboot.rtl.css.map
+  │   ├── bootstrap-reboot.rtl.min.css
+  │   ├── bootstrap-reboot.rtl.min.css.map
+  │   ├── bootstrap-utilities.css
+  │   ├── bootstrap-utilities.css.map
+  │   ├── bootstrap-utilities.min.css
+  │   ├── bootstrap-utilities.min.css.map
+  │   ├── bootstrap-utilities.rtl.css
+  │   ├── bootstrap-utilities.rtl.css.map
+  │   ├── bootstrap-utilities.rtl.min.css
+  │   ├── bootstrap-utilities.rtl.min.css.map
+  │   ├── bootstrap.css
+  │   ├── bootstrap.css.map
+  │   ├── bootstrap.min.css
+  │   ├── bootstrap.min.css.map
+  │   ├── bootstrap.rtl.css
+  │   ├── bootstrap.rtl.css.map
+  │   ├── bootstrap.rtl.min.css
+  │   └── bootstrap.rtl.min.css.map
+  └── js/
+      ├── bootstrap.bundle.js
+      ├── bootstrap.bundle.js.map
+      ├── bootstrap.bundle.min.js
+      ├── bootstrap.bundle.min.js.map
+      ├── bootstrap.esm.js
+      ├── bootstrap.esm.js.map
+      ├── bootstrap.esm.min.js
+      ├── bootstrap.esm.min.js.map
+      ├── bootstrap.js
+      ├── bootstrap.js.map
+      ├── bootstrap.min.js
+      └── bootstrap.min.js.map
+  ```
+</details>
+
+We provide compiled CSS and JS (`bootstrap.*`), as well as compiled and minified CSS and JS (`bootstrap.min.*`). [Source maps](https://developers.google.com/web/tools/chrome-devtools/javascript/source-maps) (`bootstrap.*.map`) are available for use with certain browsers' developer tools. Bundled JS files (`bootstrap.bundle.js` and minified `bootstrap.bundle.min.js`) include [Popper](https://popper.js.org/).
+
+
+## Bugs and feature requests
+
+Have a bug or a feature request? Please first read the [issue guidelines](https://github.com/twbs/bootstrap/blob/main/.github/CONTRIBUTING.md#using-the-issue-tracker) and search for existing and closed issues. If your problem or idea is not addressed yet, [please open a new issue](https://github.com/twbs/bootstrap/issues/new/choose).
+
+
+## Documentation
+
+Bootstrap's documentation, included in this repo in the root directory, is built with [Hugo](https://gohugo.io/) and publicly hosted on GitHub Pages at <https://getbootstrap.com/>. The docs may also be run locally.
+
+Documentation search is powered by [Algolia's DocSearch](https://docsearch.algolia.com/). Working on our search? Be sure to set `debug: true` in `site/assets/js/search.js`.
+
+### Running documentation locally
+
+1. Run `npm install` to install the Node.js dependencies, including Hugo (the site builder).
+2. Run `npm run test` (or a specific npm script) to rebuild distributed CSS and JavaScript files, as well as our docs assets.
+3. From the root `/bootstrap` directory, run `npm run docs-serve` in the command line.
+4. Open `http://localhost:9001/` in your browser, and voilà.
+
+Learn more about using Hugo by reading its [documentation](https://gohugo.io/documentation/).
+
+### Documentation for previous releases
+
+You can find all our previous releases docs on <https://getbootstrap.com/docs/versions/>.
+
+[Previous releases](https://github.com/twbs/bootstrap/releases) and their documentation are also available for download.
+
+
+## Contributing
+
+Please read through our [contributing guidelines](https://github.com/twbs/bootstrap/blob/main/.github/CONTRIBUTING.md). Included are directions for opening issues, coding standards, and notes on development.
+
+Moreover, if your pull request contains JavaScript patches or features, you must include [relevant unit tests](https://github.com/twbs/bootstrap/tree/main/js/tests). All HTML and CSS should conform to the [Code Guide](https://github.com/mdo/code-guide), maintained by [Mark Otto](https://github.com/mdo).
+
+Editor preferences are available in the [editor config](https://github.com/twbs/bootstrap/blob/main/.editorconfig) for easy use in common text editors. Read more and download plugins at <https://editorconfig.org/>.
+
+
+## Community
+
+Get updates on Bootstrap's development and chat with the project maintainers and community members.
+
+- Follow [@getbootstrap on Twitter](https://twitter.com/getbootstrap).
+- Read and subscribe to [The Official Bootstrap Blog](https://blog.getbootstrap.com/).
+- Ask and explore [our GitHub Discussions](https://github.com/twbs/bootstrap/discussions).
+- Chat with fellow Bootstrappers in IRC. On the `irc.libera.chat` server, in the `#bootstrap` channel.
+- Implementation help may be found at Stack Overflow (tagged [`bootstrap-5`](https://stackoverflow.com/questions/tagged/bootstrap-5)).
+- Developers should use the keyword `bootstrap` on packages which modify or add to the functionality of Bootstrap when distributing through [npm](https://www.npmjs.com/browse/keyword/bootstrap) or similar delivery mechanisms for maximum discoverability.
+
+
+## Versioning
+
+For transparency into our release cycle and in striving to maintain backward compatibility, Bootstrap is maintained under [the Semantic Versioning guidelines](https://semver.org/). Sometimes we screw up, but we adhere to those rules whenever possible.
+
+See [the Releases section of our GitHub project](https://github.com/twbs/bootstrap/releases) for changelogs for each release version of Bootstrap. Release announcement posts on [the official Bootstrap blog](https://blog.getbootstrap.com/) contain summaries of the most noteworthy changes made in each release.
+
+
+## Creators
+
+**Mark Otto**
+
+- <https://twitter.com/mdo>
+- <https://github.com/mdo>
+
+**Jacob Thornton**
+
+- <https://twitter.com/fat>
+- <https://github.com/fat>
+
+
+## Thanks
+
+<a href="https://www.browserstack.com/">
+  <img src="https://live.browserstack.com/images/opensource/browserstack-logo.svg" alt="BrowserStack" width="192" height="42">
+</a>
+
+Thanks to [BrowserStack](https://www.browserstack.com/) for providing the infrastructure that allows us to test in real browsers!
+
+<a href="https://www.netlify.com/">
+  <img src="https://www.netlify.com/v3/img/components/full-logo-light.svg" alt="Netlify" width="147" height="40">
+</a>
+
+Thanks to [Netlify](https://www.netlify.com/) for providing us with Deploy Previews!
+
+
+## Sponsors
+
+Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/bootstrap#sponsor)]
+
+[![OC sponsor 0](https://opencollective.com/bootstrap/sponsor/0/avatar.svg)](https://opencollective.com/bootstrap/sponsor/0/website)
+[![OC sponsor 1](https://opencollective.com/bootstrap/sponsor/1/avatar.svg)](https://opencollective.com/bootstrap/sponsor/1/website)
+[![OC sponsor 2](https://opencollective.com/bootstrap/sponsor/2/avatar.svg)](https://opencollective.com/bootstrap/sponsor/2/website)
+[![OC sponsor 3](https://opencollective.com/bootstrap/sponsor/3/avatar.svg)](https://opencollective.com/bootstrap/sponsor/3/website)
+[![OC sponsor 4](https://opencollective.com/bootstrap/sponsor/4/avatar.svg)](https://opencollective.com/bootstrap/sponsor/4/website)
+[![OC sponsor 5](https://opencollective.com/bootstrap/sponsor/5/avatar.svg)](https://opencollective.com/bootstrap/sponsor/5/website)
+[![OC sponsor 6](https://opencollective.com/bootstrap/sponsor/6/avatar.svg)](https://opencollective.com/bootstrap/sponsor/6/website)
+[![OC sponsor 7](https://opencollective.com/bootstrap/sponsor/7/avatar.svg)](https://opencollective.com/bootstrap/sponsor/7/website)
+[![OC sponsor 8](https://opencollective.com/bootstrap/sponsor/8/avatar.svg)](https://opencollective.com/bootstrap/sponsor/8/website)
+[![OC sponsor 9](https://opencollective.com/bootstrap/sponsor/9/avatar.svg)](https://opencollective.com/bootstrap/sponsor/9/website)
+
+
+## Backers
+
+Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/bootstrap#backer)]
+
+[![Backers](https://opencollective.com/bootstrap/backers.svg?width=890)](https://opencollective.com/bootstrap#backers)
+
+
+## Copyright and license
+
+Code and documentation copyright 2011–2022 the [Bootstrap Authors](https://github.com/twbs/bootstrap/graphs/contributors) and [Twitter, Inc.](https://twitter.com) Code released under the [MIT License](https://github.com/twbs/bootstrap/blob/main/LICENSE). Docs released under [Creative Commons](https://creativecommons.org/licenses/by/3.0/).
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/less/partials/alerts.less
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/less/partials/alerts.less	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/less/partials/alerts.less	(revision 3762)
@@ -0,0 +1,18 @@
+.alert-success {
+	color: @alert-success-color;
+}
+.alert-info {
+	color: @alert-info-color;
+}
+.alert-warning {
+  color: @alert-warning-color;
+  background-color: @alert-warning-bkg;
+}
+.alert-danger {
+  color: @alert-danger-color;
+}
+.alert-danger {
+  &:hover {
+  	color: @alert-danger-hover;
+  }
+}
\ No newline at end of file
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/less/partials/carousel.less
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/less/partials/carousel.less	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/less/partials/carousel.less	(revision 3762)
@@ -0,0 +1,53 @@
+.carousel-indicators li,
+.carousel-indicators li.active {
+  height: 18px;
+  width: 18px;
+  border-width: 2px;
+  position: relative;
+  box-shadow: 0px 0px 0px 1px #808080;
+}
+
+.carousel-indicators.active li {
+  background-color: rgba(100, 149, 253, 0.6);
+}
+
+.carousel-indicators.active li.active {
+  background-color: white;
+}
+
+.carousel-tablist-highlight {
+  display: block;
+  position: absolute;
+  outline: 2px solid transparent;
+  background-color: transparent;
+  box-shadow: 0px 0px 0px 1px transparent;
+}
+
+.carousel-tablist-highlight.focus {
+  outline: 2px solid #6495ED;
+  background-color: rgba(0, 0, 0, 0.4);
+}
+
+a.carousel-control:focus {
+  outline: 2px solid #6495ED;
+  background-image: linear-gradient(to right, transparent 0px, rgba(0, 0, 0, 0.5) 100%);
+  box-shadow: 0px 0px 0px 1px #000000;
+}
+
+.carousel-pause-button {
+  position: absolute;
+  top: -30em;
+  left: -300em;
+  display: block;
+}
+
+.carousel-pause-button.focus {
+  top: 0.5em;
+  left: 0.5em;
+}
+
+.carousel:hover .carousel-caption,
+.carousel.contrast .carousel-caption {
+  background-color: rgba(0, 0, 0, 0.5);
+  z-index: 10;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/less/partials/buttons.less
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/less/partials/buttons.less	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/less/partials/buttons.less	(revision 3762)
@@ -0,0 +1 @@
+.btn:focus { .outline(2px); }
\ No newline at end of file
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/less/partials/navigation.less
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/less/partials/navigation.less	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/less/partials/navigation.less	(revision 3762)
@@ -0,0 +1,4 @@
+.nav > li > a {
+  &:hover,
+  &:focus { .outline(1px); }
+}
\ No newline at end of file
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/less/partials/links.less
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/less/partials/links.less	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/less/partials/links.less	(revision 3762)
@@ -0,0 +1 @@
+a:focus { .outline(1px); }
\ No newline at end of file
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/less/partials/close.less
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/less/partials/close.less	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/less/partials/close.less	(revision 3762)
@@ -0,0 +1,6 @@
+.close {
+  &:hover,
+  &:focus {
+    .outline(1px);
+  }
+}
\ No newline at end of file
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/less/partials/divs.less
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/less/partials/divs.less	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/less/partials/divs.less	(revision 3762)
@@ -0,0 +1 @@
+div.active:focus { .outline(1px); }
\ No newline at end of file
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/less/partials/mixins.less
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/less/partials/mixins.less	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/less/partials/mixins.less	(revision 3762)
@@ -0,0 +1,3 @@
+.outline(@size) {
+  outline: @outline-default-style @size @outline-default-color;
+}
\ No newline at end of file
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/less/partials/variables.less
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/less/partials/variables.less	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/less/partials/variables.less	(revision 3762)
@@ -0,0 +1,21 @@
+//Set the variables for use in stylesheet
+
+// Colors
+@black:        #000;
+@green-dark:   #2d4821;
+@blue-dark:    #214c62;
+@red-dark:     #6c4a00;
+@red:          #d2322d;
+@yellow:       #f9f1c6;
+
+// Outline
+@outline-default-style:   dotted;
+@outline-default-color:   @black;
+
+// Alerts Colors
+@alert-success-color:   @green-dark;
+@alert-info-color:      @blue-dark;
+@alert-warning-color:   @red-dark;
+@alert-warning-bkg:     @yellow;
+@alert-danger-color:    @red;
+@alert-danger-hover:    darken(@red, 10%);
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/sass/bootstrap-accessibility.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/sass/bootstrap-accessibility.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/sass/bootstrap-accessibility.scss	(revision 3762)
@@ -0,0 +1,14 @@
+// Import Variables
+@import "partials/variables";
+
+// Import Mixins
+@import "partials/mixins";
+
+// Import Partials Styles
+@import "partials/buttons";
+@import "partials/divs";
+@import "partials/links";
+@import "partials/close";
+@import "partials/navigation";
+@import "partials/carousel";
+@import "partials/alerts";
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/sass/partials/_carousel.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/sass/partials/_carousel.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/sass/partials/_carousel.scss	(revision 3762)
@@ -0,0 +1,54 @@
+.carousel-indicators li,
+.carousel-indicators li.active {
+  height: 18px;
+  width: 18px;
+  border-width: 2px;
+  position: relative;
+  box-shadow: 0px 0px 0px 1px #808080;
+}
+
+.carousel-indicators.active li {
+  background-color: rgba(100, 149, 253, 0.6);
+}
+
+.carousel-indicators.active li.active {
+  background-color: white;
+}
+
+.carousel-tablist-highlight {
+  display: block;
+  position: absolute;
+  outline: 2px solid transparent;
+  background-color: transparent;
+  box-shadow: 0px 0px 0px 1px transparent;
+}
+
+.carousel-tablist-highlight.focus {
+  outline: 2px solid #6495ED;
+  background-color: rgba(0, 0, 0, 0.4);
+}
+
+a.carousel-control:focus {
+  outline: 2px solid #6495ED;
+  background-image: linear-gradient(to right, transparent 0px, rgba(0, 0, 0, 0.5) 100%);
+  box-shadow: 0px 0px 0px 1px #000000;
+}
+
+.carousel-pause-button {
+  position: absolute;
+  top: -30em;
+  left: -300em;
+  display: block;
+}
+
+.carousel-pause-button.focus {
+  top: 0.5em;
+  left: 0.5em;
+}
+
+
+.carousel:hover .carousel-caption,
+.carousel.contrast .carousel-caption {
+    background-color: rgba(0, 0, 0, 0.5);
+    z-index: 10;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/sass/partials/_buttons.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/sass/partials/_buttons.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/sass/partials/_buttons.scss	(revision 3762)
@@ -0,0 +1,8 @@
+.btn {
+  &:focus {
+	  @include mouse-outline(2px);
+  }
+  &:focus-visible {
+		@include keyboard-outline(2px);
+	}
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/sass/partials/_navigation.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/sass/partials/_navigation.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/sass/partials/_navigation.scss	(revision 3762)
@@ -0,0 +1,13 @@
+.nav {
+	> li {
+		> a {
+			&:hover,
+			&:focus {
+				@include mouse-outline(1px);
+			}
+			&:focus-visible {
+				@include keyboard-outline(1px);
+			}
+		}
+	}
+}
\ No newline at end of file
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/sass/partials/_links.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/sass/partials/_links.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/sass/partials/_links.scss	(revision 3762)
@@ -0,0 +1,8 @@
+a {
+  &:focus {
+	@include mouse-outline(1px);
+  }
+  &:focus-visible {
+    @include keyboard-outline(1px);
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/sass/partials/_close.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/sass/partials/_close.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/sass/partials/_close.scss	(revision 3762)
@@ -0,0 +1,9 @@
+.close {
+  &:hover,
+  &:focus {
+	@include mouse-outline(1px);
+  }
+  &:focus-visible {
+    @include keyboard-outline(1px);
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/sass/partials/_divs.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/sass/partials/_divs.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/sass/partials/_divs.scss	(revision 3762)
@@ -0,0 +1,8 @@
+div.active {
+	&:focus {
+		@include mouse-outline(1px);
+	}
+	&:focus-visible {
+		@include keyboard-outline(1px);
+	}
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/sass/partials/_mixins.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/sass/partials/_mixins.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/sass/partials/_mixins.scss	(revision 3762)
@@ -0,0 +1,6 @@
+@mixin mouse-outline($size) {
+	outline: $mouse-outline-style $size $mouse-outline-color;
+}
+@mixin keyboard-outline($size) {
+	outline: $keyboard-outline-style $size $keyboard-outline-color;
+}
\ No newline at end of file
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/sass/partials/_variables.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/sass/partials/_variables.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/sass/partials/_variables.scss	(revision 3762)
@@ -0,0 +1,25 @@
+//Set the variables for use in stylesheet
+
+// Colors
+$black: 		#000 !default;
+$green-dark: 	#2d4821 !default;
+$blue-dark: 	#214c62 !default;
+$red-dark: 		#6c4a00 !default;
+$red: 			#d2322d !default;
+$yellow: 		#f9f1c6 !default;
+
+// :focus/:hover outline styles
+$mouse-outline-style: 	none !default;
+$mouse-outline-color: 	$black !default;
+
+// :focus-visible outline styles
+$keyboard-outline-style: auto !default;
+$keyboard-outline-color: $mouse-outline-color !default;
+
+// Alerts Colors
+$alert-success-color: 			$green-dark !default;
+$alert-info-color: 				$blue-dark !default;
+$alert-warning-color: 			$red-dark !default;
+$alert-warning-bkg: 			$yellow !default;
+$alert-danger-color: 			$red !default;
+$alert-danger-hover: 			darken($red, 10%) !default;
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/sass/partials/_alerts.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/sass/partials/_alerts.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/sass/partials/_alerts.scss	(revision 3762)
@@ -0,0 +1,18 @@
+.alert-success {
+	color: $alert-success-color;
+}
+.alert-info {
+	color: $alert-info-color;
+}
+.alert-warning {
+  color: $alert-warning-color;
+  background-color: $alert-warning-bkg;
+}
+.alert-danger {
+  color: $alert-danger-color;
+}
+.alert-danger {
+  &:hover {
+  	color: $alert-danger-hover;
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/meteor/package.js
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/meteor/package.js	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/meteor/package.js	(revision 3762)
@@ -0,0 +1,16 @@
+Package.describe({
+  name: 'paypal:bootstrap-accessibility-plugin',
+  summary: 'Accessibility Plugin for Bootstrap 3',
+  git: 'https://github.com/paypal/bootstrap-accessibility-plugin.git',
+  version: '{{version}}'
+});
+
+Package.onUse(function(api) {
+  api.use('ecmascript');
+  api.use('jquery');
+  api.use('twbs:bootstrap');
+  api.addFiles([
+    'plugins/css/bootstrap-accessibility.css',
+    'plugins/js/bootstrap-accessibility.js'
+  ], 'client');
+});
\ No newline at end of file
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/js/functions.js
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/js/functions.js	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/js/functions.js	(revision 3762)
@@ -0,0 +1,111 @@
+
+  // GENERAL UTILITY FUNCTIONS
+  // ===============================
+  
+  var uniqueId = function(prefix) {
+      return (prefix || 'ui-id') + '-' + Math.floor((Math.random()*1000)+1)
+  }
+
+  
+  var removeMultiValAttributes = function (el, attr, val) {
+   var describedby = (el.attr( attr ) || "").split( /\s+/ )
+      , index = $.inArray(val, describedby)
+   if ( index !== -1 ) {
+     describedby.splice( index, 1 )
+   }
+   describedby = $.trim( describedby.join( " " ) )
+   if (describedby ) {
+     el.attr( attr, describedby )
+   } else {
+    el.removeAttr( attr )
+   }
+  }
+
+// selectors  Courtesy: https://github.com/jquery/jquery-ui/blob/master/ui/focusable.js and tabbable.js
+/*
+Copyright jQuery Foundation and other contributors, https://jquery.org/
+
+This software consists of voluntary contributions made by many
+individuals. For exact contribution history, see the revision history
+available at https://github.com/jquery/jquery-ui
+
+The following license applies to all parts of this software except as
+documented below:
+
+====
+
+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.
+
+====
+
+Copyright and related rights for sample code are waived via CC0. Sample
+code is defined as all source code contained within the demos directory.
+
+CC0: http://creativecommons.org/publicdomain/zero/1.0/
+
+====
+*/
+
+  var focusable = function ( element, isTabIndexNotNaN ) {
+    var map, mapName, img,
+    nodeName = element.nodeName.toLowerCase();
+    if ( "area" === nodeName ) {
+    map = element.parentNode;
+    mapName = map.name;
+    if ( !element.href || !mapName || map.nodeName.toLowerCase() !== "map" ) {
+    return false;
+    }
+    img = $( "img[usemap='#" + mapName + "']" )[ 0 ];
+    return !!img && visible( img );
+    }
+    return ( /input|select|textarea|button|object/.test( nodeName ) ?
+    !element.disabled :
+    "a" === nodeName ?
+    element.href || isTabIndexNotNaN :isTabIndexNotNaN) && visible( element ); // the element and all of its ancestors must be visible  
+  }
+  var visible = function ( element ) {
+    return $.expr.filters.visible( element ) &&
+      !$( element ).parents().addBack().filter(function() {
+        return $.css( this, "visibility" ) === "hidden";
+      }).length;
+  }
+
+  $.extend( $.expr[ ":" ], {
+    data: $.expr.createPseudo ?
+      $.expr.createPseudo(function( dataName ) {
+        return function( elem ) {
+          return !!$.data( elem, dataName );
+        };
+      }) :
+      // support: jQuery <1.8
+      function( elem, i, match ) {
+        return !!$.data( elem, match[ 3 ] );
+      },
+
+    focusable: function( element ) {
+      return focusable( element, !isNaN( $.attr( element, "tabindex" ) ) );
+    },
+
+    tabbable: function( element ) {
+      var tabIndex = $.attr( element, "tabindex" ),
+        isTabIndexNaN = isNaN( tabIndex );
+      return ( isTabIndexNaN || tabIndex >= 0 ) && focusable( element, !isTabIndexNaN );
+    }
+  });
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/js/dropdown.js
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/js/dropdown.js	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/js/dropdown.js	(revision 3762)
@@ -0,0 +1,53 @@
+  // DROPDOWN Extension
+  // ===============================
+
+  var toggle   = '[data-toggle=dropdown]'
+      , $par
+      , firstItem
+      , focusDelay = 200
+      , menus = $(toggle).parent().find('ul').attr('role','menu')
+      , lis = menus.find('li').attr('role','presentation')
+
+    // add menuitem role and tabIndex to dropdown links
+    lis.find('a').attr({'role':'menuitem', 'tabIndex':'-1'})
+    // add aria attributes to dropdown toggle
+    $(toggle).attr({ 'aria-haspopup':'true', 'aria-expanded': 'false'})
+
+    $(toggle).parent()
+      // Update aria-expanded when open
+      .on('shown.bs.dropdown',function(e){
+        $par = $(this)
+        var $toggle = $par.find(toggle)
+        $toggle.attr('aria-expanded','true')
+        $toggle.on('keydown.bs.dropdown', $.proxy(function (ev) {
+          setTimeout(function() {
+            firstItem = $('.dropdown-menu [role=menuitem]:visible', $par)[0]
+            try{ firstItem.focus()} catch(ex) {}
+          }, focusDelay)
+        }, this))
+
+      })
+      // Update aria-expanded when closed
+      .on('hidden.bs.dropdown',function(e){
+        $par = $(this)
+        var $toggle = $par.find(toggle)
+        $toggle.attr('aria-expanded','false')
+      })
+
+    // Close the dropdown if tabbed away from
+    $(document)
+      .on('focusout.dropdown.data-api', '.dropdown-menu', function(e){
+        var $this = $(this)
+          , that = this;
+        // since we're trying to close when appropriate,
+        // make sure the dropdown is open
+        if (!$this.parent().hasClass('open')) {
+          return;
+        }
+        setTimeout(function() {
+          if(!$.contains(that, document.activeElement)){
+            $this.parent().find('[data-toggle=dropdown]').dropdown('toggle')
+          }
+        }, 150)
+       })
+      .on('keydown.bs.dropdown.data-api', toggle + ', [role=menu]' , $.fn.dropdown.Constructor.prototype.keydown);
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/js/modal.js
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/js/modal.js	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/js/modal.js	(revision 3762)
@@ -0,0 +1,30 @@
+  // Modal Extension
+  // ===============================
+
+  $('.modal-dialog').attr( {'role' : 'document'})
+    var modalhide =   $.fn.modal.Constructor.prototype.hide
+    $.fn.modal.Constructor.prototype.hide = function(){
+       modalhide.apply(this, arguments)
+       $(document).off('keydown.bs.modal')
+    }
+
+    var modalfocus =   $.fn.modal.Constructor.prototype.enforceFocus
+    $.fn.modal.Constructor.prototype.enforceFocus = function(){
+      var $content = this.$element.find(".modal-content")
+      var focEls = $content.find(":tabbable")
+      , $lastEl = $(focEls[focEls.length-1])
+      , $firstEl = $(focEls[0])
+      $lastEl.on('keydown.bs.modal', $.proxy(function (ev) {
+        if(ev.keyCode === 9 && !(ev.shiftKey | ev.ctrlKey | ev.metaKey | ev.altKey)) { // TAB pressed
+          ev.preventDefault();
+          $firstEl.focus();
+        }
+      }, this))
+      $firstEl.on('keydown.bs.modal', $.proxy(function (ev) {
+          if(ev.keyCode === 9 && ev.shiftKey) { // SHIFT-TAB pressed
+            ev.preventDefault();
+            $lastEl.focus();
+          }
+      }, this))
+      modalfocus.apply(this, arguments)
+    }
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/js/carousel.js
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/js/carousel.js	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/js/carousel.js	(revision 3762)
@@ -0,0 +1,325 @@
+// Carousel Extension
+  // ===============================
+
+      $('.carousel').each(function (index) {
+
+        // This function positions a highlight box around the tabs in the tablist to use in focus styling
+
+        function setTablistHighlightBox() {
+
+          var $tab
+              , offset
+              , height
+              , width
+              , highlightBox = {}
+
+            highlightBox.top     = 0
+          highlightBox.left    = 32000
+          highlightBox.height  = 0
+          highlightBox.width   = 0
+
+          for (var i = 0; i < $tabs.length; i++) {
+            $tab = $tabs[i]
+            offset = $($tab).offset()
+            height = $($tab).height()
+            width  = $($tab).width()
+
+//            console.log(" Top: " + offset.top + " Left: " + offset.left + " Height: " + height + " Width: " + width)
+
+            if (highlightBox.top < offset.top) {
+              highlightBox.top    = Math.round(offset.top)
+            }
+
+            if (highlightBox.height < height) {
+              highlightBox.height = Math.round(height)
+            }
+
+            if (highlightBox.left > offset.left) {
+              highlightBox.left = Math.round(offset.left)
+            }
+
+            var w = (offset.left - highlightBox.left) + Math.round(width)
+
+            if (highlightBox.width < w) {
+              highlightBox.width = w
+            }
+
+          } // end for
+
+//          console.log("[HIGHLIGHT]  Top: " +  highlightBox.top + " Left: " +  highlightBox.left + " Height: " +  highlightBox.height + " Width: " +  highlightBox.width)
+
+          $tablistHighlight.style.top    = (highlightBox.top    - 2)  + 'px'
+          $tablistHighlight.style.left   = (highlightBox.left   - 2)  + 'px'
+          $tablistHighlight.style.height = (highlightBox.height + 7)  + 'px'
+          $tablistHighlight.style.width  = (highlightBox.width  + 8)  + 'px'
+
+        } // end function
+
+        var $this = $(this)
+          , $prev        = $this.find('[data-slide="prev"]')
+          , $next        = $this.find('[data-slide="next"]')
+          , $tablist    = $this.find('.carousel-indicators')
+          , $tabs       = $this.find('.carousel-indicators li')
+          , $tabpanels  = $this.find('.item')
+          , $tabpanel
+          , $tablistHighlight
+          , $pauseCarousel
+          , $complementaryLandmark
+          , $tab
+          , $is_paused = false
+          , offset
+          , height
+          , width
+          , i
+          , id_title  = 'id_title'
+          , id_desc   = 'id_desc'
+
+
+        $tablist.attr('role', 'tablist')
+
+        $tabs.focus(function() {
+          $this.carousel('pause')
+          $is_paused = true
+          $pauseCarousel.innerHTML = "Play Carousel"
+          $(this).parent().addClass('active');
+//          $(this).addClass('focus')
+          setTablistHighlightBox()
+          $($tablistHighlight).addClass('focus')
+          $(this).parents('.carousel').addClass('contrast')
+        })
+
+        $tabs.blur(function(event) {
+          $(this).parent().removeClass('active');
+//          $(this).removeClass('focus')
+          $($tablistHighlight).removeClass('focus')
+          $(this).parents('.carousel').removeClass('contrast')
+        })
+
+
+        for (i = 0; i < $tabpanels.length; i++) {
+          $tabpanel = $tabpanels[i]
+          $tabpanel.setAttribute('role', 'tabpanel')
+          $tabpanel.setAttribute('id', 'tabpanel-' + index + '-' + i)
+          $tabpanel.setAttribute('aria-labelledby', 'tab-' + index + '-' + i)
+        }
+
+        if (typeof $this.attr('role') !== 'string') {
+          $this.attr('role', 'complementary');
+          $this.attr('aria-labelledby', id_title);
+          $this.attr('aria-describedby', id_desc);
+          $this.prepend('<p  id="' + id_desc   + '" class="sr-only">A carousel is a rotating set of images, rotation stops on keyboard focus on carousel tab controls or hovering the mouse pointer over images.  Use the tabs or the previous and next buttons to change the displayed slide.</p>')
+          $this.prepend('<h2 id="' + id_title  + '" class="sr-only">Carousel content with ' + $tabpanels.length + ' slides.</h2>')
+        }
+
+
+        for (i = 0; i < $tabs.length; i++) {
+          $tab = $tabs[i]
+
+          $tab.setAttribute('role', 'tab')
+          $tab.setAttribute('id', 'tab-' + index + '-' + i)
+          $tab.setAttribute('aria-controls', 'tabpanel-' + index + '-' + i)
+
+          var tpId = '#tabpanel-' + index + '-' + i
+          var caption = $this.find(tpId).find('h1').text()
+
+          if ((typeof caption !== 'string') || (caption.length === 0)) caption = $this.find(tpId).text()
+          if ((typeof caption !== 'string') || (caption.length === 0)) caption = $this.find(tpId).find('h3').text()
+          if ((typeof caption !== 'string') || (caption.length === 0)) caption = $this.find(tpId).find('h4').text()
+          if ((typeof caption !== 'string') || (caption.length === 0)) caption = $this.find(tpId).find('h5').text()
+          if ((typeof caption !== 'string') || (caption.length === 0)) caption = $this.find(tpId).find('h6').text()
+          if ((typeof caption !== 'string') || (caption.length === 0)) caption = "no title";
+
+//          console.log("CAPTION: " + caption )
+
+          var tabName = document.createElement('span')
+          tabName.setAttribute('class', 'sr-only')
+          tabName.innerHTML='Slide ' + (i+1)
+          if (caption) tabName.innerHTML += ": " +  caption
+          $tab.appendChild(tabName)
+
+         }
+
+        // create div for focus styling of tablist
+        $tablistHighlight = document.createElement('div')
+        $tablistHighlight.className = 'carousel-tablist-highlight'
+        document.body.appendChild($tablistHighlight)
+
+        // create button for screen reader users to stop rotation of carousel
+
+        // create button for screen reader users to pause carousel for virtual mode review
+        $complementaryLandmark = document.createElement('aside')
+        $complementaryLandmark.setAttribute('class', 'carousel-aside-pause')
+        $complementaryLandmark.setAttribute('aria-label', 'carousel pause/play control')
+        $this.prepend($complementaryLandmark)
+
+        $pauseCarousel = document.createElement('button')
+        $pauseCarousel.className = "carousel-pause-button"
+        $pauseCarousel.innerHTML = "Pause Carousel"
+        $pauseCarousel.setAttribute('title', "Pause/Play carousel button can be used by screen reader users to stop carousel animations")
+        $($complementaryLandmark).append($pauseCarousel)
+
+        $($pauseCarousel).click(function() {
+          if ($is_paused) {
+            $pauseCarousel.innerHTML = "Pause Carousel"
+            $this.carousel('cycle')
+            $is_paused = false
+          }
+          else {
+            $pauseCarousel.innerHTML = "Play Carousel"
+            $this.carousel('pause')
+            $is_paused = true
+          }
+        })
+        $($pauseCarousel).focus(function() {
+          $(this).addClass('focus')
+        })
+
+        $($pauseCarousel).blur(function() {
+          $(this).removeClass('focus')
+        })
+
+        setTablistHighlightBox()
+
+        $( window ).resize(function() {
+          setTablistHighlightBox()
+        })
+
+        // Add space bar behavior to prev and next buttons for SR compatibility
+        $prev.attr('aria-label', 'Previous Slide')
+        $prev.keydown(function(e) {
+          var k = e.which || e.keyCode
+          if (/(13|32)/.test(k)) {
+            e.preventDefault()
+            e.stopPropagation()
+            $prev.trigger('click');
+          }
+        });
+
+        $prev.focus(function() {
+          $(this).parents('.carousel').addClass('contrast')
+        })
+
+        $prev.blur(function() {
+          $(this).parents('.carousel').removeClass('contrast')
+        })
+
+        $next.attr('aria-label', 'Next Slide')
+        $next.keydown(function(e) {
+          var k = e.which || e.keyCode
+          if (/(13|32)/.test(k)) {
+            e.preventDefault()
+            e.stopPropagation()
+            $next.trigger('click');
+          }
+        });
+
+        $next.focus(function() {
+          $(this).parents('.carousel').addClass('contrast')
+        })
+
+        $next.blur(function() {
+          $(this).parents('.carousel').removeClass('contrast')
+        })
+
+        $('.carousel-inner a').focus(function() {
+          $(this).parents('.carousel').addClass('contrast')
+        })
+
+         $('.carousel-inner a').blur(function() {
+          $(this).parents('.carousel').removeClass('contrast')
+        })
+
+        $tabs.each(function () {
+          var item = $(this)
+          if(item.hasClass('active')) {
+            item.attr({ 'aria-selected': 'true', 'tabindex' : '0' })
+          }else{
+            item.attr({ 'aria-selected': 'false', 'tabindex' : '-1' })
+          }
+        })
+      })
+
+      var slideCarousel = $.fn.carousel.Constructor.prototype.slide
+      $.fn.carousel.Constructor.prototype.slide = function (type, next) {
+        var $element = this.$element
+          , $active  = $element.find('[role=tabpanel].active')
+          , $next    = next || $active[type]()
+          , $tab
+          , $tab_count = $element.find('[role=tabpanel]').length
+          , $prev_side = $element.find('[data-slide="prev"]')
+          , $next_side = $element.find('[data-slide="next"]')
+          , $index      = 0
+          , $prev_index = $tab_count -1
+          , $next_index = 1
+          , $id
+
+        if ($next && $next.attr('id')) {
+          $id = $next.attr('id')
+          $index = $id.lastIndexOf("-")
+          if ($index >= 0) $index = parseInt($id.substring($index+1), 10)
+
+          $prev_index = $index - 1
+          if ($prev_index < 1) $prev_index = $tab_count - 1
+
+          $next_index = $index + 1
+          if ($next_index >= $tab_count) $next_index = 0
+        }
+
+        $prev_side.attr('aria-label', 'Show slide ' + ($prev_index+1) + ' of ' + $tab_count)
+        $next_side.attr('aria-label', 'Show slide ' + ($next_index+1) + ' of ' + $tab_count)
+
+
+        slideCarousel.apply(this, arguments)
+
+      $active
+        .one('bsTransitionEnd', function () {
+          var $tab
+
+          $tab = $element.find('li[aria-controls="' + $active.attr('id') + '"]')
+          if ($tab) $tab.attr({'aria-selected':false, 'tabIndex': '-1'})
+
+          $tab = $element.find('li[aria-controls="' + $next.attr('id') + '"]')
+          if ($tab) $tab.attr({'aria-selected': true, 'tabIndex': '0'})
+
+       })
+      }
+
+     var $this;
+     $.fn.carousel.Constructor.prototype.keydown = function (e) {
+
+     $this = $this || $(this)
+     if(this instanceof Node) $this = $(this)
+
+     function selectTab(index) {
+       if (index >= $tabs.length) return
+       if (index < 0) return
+
+       $carousel.carousel(index)
+       setTimeout(function () {
+            $tabs[index].focus()
+            // $this.prev().focus()
+       }, 150)
+     }
+
+     var $carousel = $(e.target).closest('.carousel')
+      , $tabs      = $carousel.find('[role=tab]')
+      , k = e.which || e.keyCode
+      , index
+
+      if (!/(37|38|39|40)/.test(k)) return
+
+      index = $tabs.index($tabs.filter('.active'))
+      if (k == 37 || k == 38) {                           //  Up
+        index--
+        selectTab(index);
+      }
+
+      if (k == 39 || k == 40) {                          // Down
+        index++
+        selectTab(index);
+      }
+
+      e.preventDefault()
+      e.stopPropagation()
+    }
+    $(document).on('keydown.carousel.data-api', 'li[role=tab]', $.fn.carousel.Constructor.prototype.keydown);
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/js/collapse.js
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/js/collapse.js	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/js/collapse.js	(revision 3762)
@@ -0,0 +1,100 @@
+
+  // Collapse Extension
+  // ===============================
+
+     var $colltabs =  $('[data-toggle="collapse"]')
+      $colltabs.each(function( index ) {
+        var colltab = $(this)
+        , collpanel = (colltab.attr('data-target')) ? $(colltab.attr('data-target')) : $(colltab.attr('href'))
+        , parent  = colltab.attr('data-parent')
+        , collparent = parent && $(parent)
+        , collid = colltab.attr('id') || uniqueId('ui-collapse')
+        , parentpanel = collpanel.parent() // panel containing title and panel body
+        , parentfirstchild = (collparent) ? collparent.find('.panel.panel-default:first-child') : null // first child of containing accordion
+        , hasopenpanel = (collparent) ? collparent.find('.panel-collapse.in').length > 0 : false // true, if collapse parent has any panels with class 'in'; otherwise, false
+
+          colltab.attr('id', collid)
+
+          if(collparent){
+            colltab.attr({ 'aria-controls': collpanel.attr('id'), 'role':'tab', 'aria-selected':'false', 'aria-expanded':'false' })
+            $(collparent).find('div:not(.collapse,.panel-body), h4').attr('role','presentation')
+            collparent.attr({ 'role' : 'tablist', 'aria-multiselectable' : 'true' })
+            collpanel.attr({ 'role':'tabpanel', 'aria-labelledby':collid })
+
+            if(!hasopenpanel && parentpanel.is(parentfirstchild)) {
+              colltab.attr({ 'tabindex':'0' })
+              collpanel.attr({ 'tabindex':'-1' })
+            }else if(collpanel.hasClass('in')){
+              colltab.attr({ 'aria-selected':'true', 'aria-expanded':'true', 'tabindex':'0' })
+              collpanel.attr({ 'tabindex':'0', 'aria-hidden':'false' })
+            }else{
+              colltab.attr({ 'tabindex':'-1' })
+              collpanel.attr({ 'tabindex':'-1', 'aria-hidden':'true' })
+            }
+          }
+      })
+
+    var collToggle = $.fn.collapse.Constructor.prototype.toggle
+    $.fn.collapse.Constructor.prototype.toggle = function(){
+        var prevTab = this.$parent && this.$parent.find('[aria-expanded="true"]') , href
+
+        if(prevTab){
+          var prevPanel = prevTab.attr('data-target') || (href = prevTab.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')
+          , $prevPanel = $(prevPanel)
+          , $curPanel = this.$element
+          , par = this.$parent
+          , curTab
+
+        if (this.$parent) curTab = this.$parent.find('[data-toggle=collapse][href="#' + this.$element.attr('id') + '"]')
+
+        collToggle.apply(this, arguments)
+
+        if ($.support.transition) {
+          this.$element.one($.support.transition.end, function(){
+
+              prevTab.attr({ 'aria-selected':'false','aria-expanded':'false', 'tabIndex':'-1' })
+              $prevPanel.attr({ 'aria-hidden' : 'true','tabIndex' : '-1'})
+
+              curTab.attr({ 'aria-selected':'true','aria-expanded':'true', 'tabIndex':'0' })
+
+              if($curPanel.hasClass('in')){
+                $curPanel.attr({ 'aria-hidden' : 'false','tabIndex' : '0' })
+              }else{
+                curTab.attr({ 'aria-selected':'false','aria-expanded':'false'})
+                $curPanel.attr({ 'aria-hidden' : 'true','tabIndex' : '-1' })
+              }
+          })
+        }
+      }else{
+        collToggle.apply(this, arguments)
+      }
+    }
+
+    $.fn.collapse.Constructor.prototype.keydown = function (e) {
+      var $this = $(this)
+      , $items
+      , $tablist = $this.closest('div[role=tablist] ')
+      , index
+      , k = e.which || e.keyCode
+
+      $this = $(this)
+      if (!/(32|37|38|39|40)/.test(k)) return
+      if(k==32) $this.click()
+
+      $items = $tablist.find('[role=tab]')
+      index = $items.index($items.filter(':focus'))
+
+      if (k == 38 || k == 37) index--                                        // up & left
+      if (k == 39 || k == 40) index++                        // down & right
+      if(index < 0) index = $items.length -1
+      if(index == $items.length) index = 0
+
+      $items.eq(index).focus()
+
+      e.preventDefault()
+      e.stopPropagation()
+
+    }
+
+    $(document).on('keydown.collapse.data-api','[data-toggle="collapse"]' ,  $.fn.collapse.Constructor.prototype.keydown);
+    
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/js/tab.js
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/js/tab.js	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/src/js/tab.js	(revision 3762)
@@ -0,0 +1,75 @@
+  // Tab Extension
+  // ===============================
+  
+  var $tablist = $('.nav-tabs, .nav-pills')
+        , $lis = $tablist.children('li')
+        , $tabs = $tablist.find('[data-toggle="tab"], [data-toggle="pill"]')
+
+    if($tabs){
+      $tablist.attr('role', 'tablist')
+      $lis.attr('role', 'presentation')
+      $tabs.attr('role', 'tab')
+    }
+
+    $tabs.each(function( index ) {
+      var tabpanel = $($(this).attr('href'))
+        , tab = $(this)
+        , tabid = tab.attr('id') || uniqueId('ui-tab')
+
+        tab.attr('id', tabid)
+
+      if(tab.parent().hasClass('active')){
+        tab.attr( { 'tabIndex' : '0', 'aria-selected' : 'true', 'aria-controls': tab.attr('href').substr(1) } )
+        tabpanel.attr({ 'role' : 'tabpanel', 'tabIndex' : '0', 'aria-hidden' : 'false', 'aria-labelledby':tabid })
+      }else{
+        tab.attr( { 'tabIndex' : '-1', 'aria-selected' : 'false', 'aria-controls': tab.attr('href').substr(1) } )
+        tabpanel.attr( { 'role' : 'tabpanel', 'tabIndex' : '-1', 'aria-hidden' : 'true', 'aria-labelledby':tabid } )
+      }
+    })
+
+    $.fn.tab.Constructor.prototype.keydown = function (e) {
+      var $this = $(this)
+      , $items
+      , $ul = $this.closest('ul[role=tablist] ')
+      , index
+      , k = e.which || e.keyCode
+
+      $this = $(this)
+      if (!/(37|38|39|40)/.test(k)) return
+
+      $items = $ul.find('[role=tab]:visible')
+      index = $items.index($items.filter(':focus'))
+
+      if (k == 38 || k == 37) index--                         // up & left
+      if (k == 39 || k == 40) index++                        // down & right
+
+
+      if(index < 0) index = $items.length -1
+      if(index == $items.length) index = 0
+
+      var nextTab = $items.eq(index)
+      if(nextTab.attr('role') ==='tab'){
+
+        nextTab.tab('show')      //Comment this line for dynamically loaded tabPabels, to save Ajax requests on arrow key navigation
+        .focus()
+      }
+      // nextTab.focus()
+
+      e.preventDefault()
+      e.stopPropagation()
+    }
+
+    $(document).on('keydown.tab.data-api','[data-toggle="tab"], [data-toggle="pill"]' , $.fn.tab.Constructor.prototype.keydown)
+
+   var tabactivate =    $.fn.tab.Constructor.prototype.activate;
+   $.fn.tab.Constructor.prototype.activate = function (element, container, callback) {
+      var $active = container.find('> .active')
+      $active.find('[data-toggle=tab], [data-toggle=pill]').attr({ 'tabIndex' : '-1','aria-selected' : false })
+      $active.filter('.tab-pane').attr({ 'aria-hidden' : true,'tabIndex' : '-1' })
+
+      tabactivate.apply(this, arguments)
+
+      element.addClass('active')
+      element.find('[data-toggle=tab], [data-toggle=pill]').attr({ 'tabIndex' : '0','aria-selected' : true })
+      element.filter('.tab-pane').attr({ 'aria-hidden' : false,'tabIndex' : '0' })
+   }
\ No newline at end of file
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/LICENSE.md
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/LICENSE.md	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/LICENSE.md	(revision 3762)
@@ -0,0 +1,27 @@
+Copyright (c) 2014, PayPal
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright notice, this
+  list of conditions and the following disclaimer in the documentation and/or
+  other materials provided with the distribution.
+
+* Neither the name of the PayPal 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.
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/plugins/css/bootstrap-accessibility.css
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/plugins/css/bootstrap-accessibility.css	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/plugins/css/bootstrap-accessibility.css	(revision 3762)
@@ -0,0 +1 @@
+.btn:focus{outline:dotted 2px #000}div.active:focus{outline:dotted 1px #000}a:focus{outline:dotted 1px #000}.close:hover,.close:focus{outline:dotted 1px #000}.nav>li>a:hover,.nav>li>a:focus{outline:dotted 1px #000}.carousel-indicators li,.carousel-indicators li.active{height:18px;width:18px;border-width:2px;position:relative;box-shadow:0px 0px 0px 1px #808080}.carousel-indicators.active li{background-color:rgba(100,149,253,0.6)}.carousel-indicators.active li.active{background-color:white}.carousel-tablist-highlight{display:block;position:absolute;outline:2px solid transparent;background-color:transparent;box-shadow:0px 0px 0px 1px transparent}.carousel-tablist-highlight.focus{outline:2px solid #6495ED;background-color:rgba(0,0,0,0.4)}a.carousel-control:focus{outline:2px solid #6495ED;background-image:linear-gradient(to right, transparent 0px, rgba(0,0,0,0.5) 100%);box-shadow:0px 0px 0px 1px #000000}.carousel-pause-button{position:absolute;top:-30em;left:-300em;display:block}.carousel-pause-button.focus{top:0.5em;left:0.5em}.carousel:hover .carousel-caption,.carousel.contrast .carousel-caption{background-color:rgba(0,0,0,0.5);z-index:10}.alert-success{color:#2d4821}.alert-info{color:#214c62}.alert-warning{color:#6c4a00;background-color:#f9f1c6}.alert-danger{color:#d2322d}.alert-danger:hover{color:#a82824}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/package.json
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/package.json	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-a11y-p/package.json	(revision 3762)
@@ -0,0 +1,26 @@
+{
+  "name": "bootstrap-accessibility-plugin",
+  "version": "1.0.6",
+  "description": "A plugin that provides accessibility features for Bootstrap3 components",
+  "main": "Gruntfile.js",
+  "homepage": "https://github.com/paypal/bootstrap-accessibility-plugin",
+  "author": "PayPal Accessibility Team",
+  "scripts": {
+    "test": "grunt test"
+  },
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/paypal/bootstrap-accessibility-plugin.git"
+  },
+  "licenses": [
+    {
+      "type": "BSD",
+      "url": "https://github.com/paypal/bootstrap-accessibility-plugin/blob/master/LICENSE.md"
+    }
+  ],
+  "bugs": {
+    "url": "https://github.com/paypal/bootstrap-accessibility-plugin/issues"
+  },
+  "keywords": ["bootstrap", "accessibility"],
+  "license": "BSD"
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-colorpicker/css/bootstrap-colorpicker.css.map
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-colorpicker/css/bootstrap-colorpicker.css.map	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-colorpicker/css/bootstrap-colorpicker.css.map	(revision 3762)
@@ -0,0 +1 @@
+{"version":3,"sources":["colorpicker.scss"],"names":[],"mappings":"AAiDA;EACE,mBAAmB;EACnB,cAAc;EACd,mBAAmB;EACnB,eAAe;EACf,iBAAiB;EACjB,iBAAiB;EACjB,0BAA0B;EAC1B,6BAA6B;EAC7B,qCA1DkB;EA4DlB,uBAAuB;EACvB,aAAuB;EACvB,mBAAmB;EACnB,gCAAwB;UAAxB,wBAAwB,EACzB;;AAED;;EAEE,2BAA2B,EAC5B;;AAED;EACE,mBAAmB,EACpB;;AAED;EACE,mBAAmB;EACnB,UAAU;EACV,QAAQ;EACR,YAAY;EACZ,gBAAgB;EAChB,cAAc,EACf;;AAED;EACE,mBAAmB;EACnB,UAAU;EACV,WAAW;EACX,YAAY;EACZ,UAAU;EACV,iBAAiB;EACjB,aAAa;EACb,mBAAmB;EACnB,iBAAiB;EACjB,iBAAiB;EACjB,yBAAiB;UAAjB,iBAAiB,EAClB;;AAED;;EAEE,YAAY;EACZ,eAAe;EACf,YAAY;EACZ,eAAe,EAChB;;AAED;EACE,YAAY;EACZ,eAAe,EAChB;;AAED;EACE,YAAY;EACZ,sBAAsB;EACtB,mCAAmC;EACnC,oCAAoC;EACpC,8BAA8B;EAC9B,wCArHkB;EAsHlB,mBAAmB;EACnB,UAAU;EACV,WAAW;EACX,WAAW,EACZ;;AAED;EACE,YAAY;EACZ,sBAAsB;EACtB,mCAAmC;EACnC,oCAAoC;EACpC,iCAAiC;EACjC,mBAAmB;EACnB,UAAU;EACV,WAAW;EACX,WAAW,EACZ;;AAED;EACE,aAAuB,EACxB;;AAED;EACE,eAAe,EAChB;;AAED;EACE,mBAAmB;EACnB,aA7I+B;EA8I/B,cA9I+B;EAYqD,YAAY;EAEiC,qBAAqB;EAE/D,0BAA0B;EAE/B,kBAAkB;EAEjB,WAAW;EAC9F,kLACe;EADf,qIACe;EAAoE,SAAS;EA0H5F,kBAAkB;EAClB,YAAY;EACZ,iDAvJkB;UAuJlB,yCAvJkB;EAwJlB,mBArJe,EAmKhB;EAtBD;IAWI,eAAe;IACf,YAAY;IACZ,WAAW;IACX,mBAAmB;IACnB,uBAAuB;IACvB,uDAA0B;YAA1B,+CAA0B;IAC1B,mBAAmB;IACnB,OAAO;IACP,QAAQ;IACR,sBAAsB,EACvB;;AAGH;;EAEE,mBAAmB;EACnB,YAzKmB;EA0KnB,cAvK+B;EAwK/B,YAAY;EACZ,mBAAmB;EACnB,iBA5Ke;EA6Kf,mBA7Ke,EA8KhB;;AAED;EACE,mBAAmB;EACnB,OAAO;EACP,QAAQ;EACR,YAAY;EACZ,aAAa,EACd;;AAED;;EAEE,iDA7LkB;UA6LlB,yCA7LkB,EA8LnB;;AAED;;EAEE,eAAe;EACf,YAAY;EACZ,qCAAgB;EAChB,qCAAsB;EACtB,mBAAmB;EACnB,OAAO;EACP,QAAQ;EACR,kBAAkB;EAClB,iBAAiB;EACjB,YAAY;EACZ,WAAW,EACZ;;AAED;EAtKqX,YAAY;EACgL,qBAAqB;EAC9M,0BAA0B;EAC/B,kBAAkB;EACjB,WAAW;EAC7X,mWAA2B;EAA3B,0LAA2B;EAAmV,SAAS,EAmKxX;;AAED;EA3ME,kRAEG;EACH,2BAJ6B;EAK7B,kCAAuC;EAyMvC,cAAc,EACf;;AAED;EACE,iBAvNmB;EAwNnB,kBAA0B;EAC1B,YAAY;EACZ,mBAAmB;EACnB,gBAAgB;EAChB,oBAAoB;EACpB,gBAAgB;EAChB,iDAhOkB;UAgOlB,yCAhOkB,EAuOnB;EAfD;IAWI,YAAY;IACZ,eAAe;IACf,YAAY,EACb;;AAGH;EACE,cArO+B;EAsO/B,YAzOmB;EA0OnB,kBAA0B;EAC1B,YAAY,EACb;;AAED;EACE,mBAAmB,EACpB;;AAED;EACE,sBAAsB;EACtB,gBAAgB;EAChB,yBAAyB;EACzB,aAAa;EACb,YAAY;EACZ,mBAAmB,EACpB;;AAED;EACE,YAAY;EACZ,mBAAmB;EACnB,YAAY;EACZ,aAAa;EACb,sBAAsB;EACtB,yBAAyB;EA3PzB,kRAEG;EACH,2BAJ6B;EAK7B,kCAAuC,EAyPxC;;AAED;EACE,mBAAmB;EACnB,sBAAsB;EACtB,YAAY;EACZ,cAAc;EACd,4BAA4B,EAC7B;;AAED;EACE,aA3Q+B;EA4Q/B,aAAa,EACd;;AAED;EACE,aAhR+B,EAiRhC;;AAED;EACE,YAAY;EACZ,iBAAiB,EAClB;;AAED;;EAEE,YAAY;EACZ,aA3R+B;EA4R/B,aA/RmB;EAgSnB,mBAAmB;EACnB,eAAe;EACf,gBAjSe;EAkSf,iBAAiB,EAClB;;AAED;;EAEE,mBAAmB;EACnB,eAAe;EACf,aAAa;EACb,QAAQ;EACR,YAAY;EACZ,aAAa;EACb,WAAW,EACZ;;AAED;EApRgU,YAAY;EAC+K,qBAAqB;EAC7M,0BAA0B;EAC/B,kBAAkB;EACjB,WAAW;EACxU,iWAA2B;EAA3B,2LAA2B;EAAgS,SAAS,EAiRrU;;AAED;EA/SE,kRAEG;EACH,2BAJ6B;EAK7B,kCAAuC,EA6SxC;;AAED;;;EAGE,cAAc;EACd,cAAc,EACf;;AAED;;;EAGE,cAAc;EACd,cAAc,EACf;;AAGD;;;EAGE,0BAAkB;KAAlB,uBAAkB;MAAlB,sBAAkB;UAAlB,kBAAkB,EACnB;;AAED;;;;;EAMI,eAAe,EAChB;;AAGH;;;;;EAMI,cAAc,EACf;;AAGH;EACE,sBAAsB,EACvB;;AAED;EACE,aAAa;EACb,YAAY;EACZ,eAAe;EACf,YAAY;EACZ,aAAa;EACb,sCAAgB;EAChB,OAAO;EACP,QAAQ;EACR,YAAY;EACZ,WAAW;EACX,mBAAmB,EACpB;;AAED;EACE,cAAc,EACf;;AAED,kBAAkB;AAElB;EApXE,kRAEG;EACH,2BAJ6B;EAK7B,kCAAuC,EAkXxC;;AAED;EACE,mBAAmB;EACnB,QAAQ;EACR,OAAO;EACP,YAAY;EACZ,aAAa,EACd;;AAED;EACE,yBAAiB;UAAjB,iBAAiB;EACjB,aAAa,EACd;;AAED;EACE,YAAY;EACZ,iBA5Ye,EA6YhB;;AAED;EACE,mBAAmB;EACnB,gBAAgB;EAChB,YAAY;EACZ,aApZmB;EAqZnB,YArZmB;EAsZnB,kBArZe;EAsZf,gBAtZe;EAuZf,eAAe;EACf,eAAe;EACf,iDA5ZkB;UA4ZlB,yCA5ZkB;EAQlB,kRAEG;EACH,2BAJ6B;EAK7B,kCAAuC,EAkZxC;;AAED;EACE,mBAAmB;EACnB,OAAO;EACP,QAAQ;EACR,YAAY;EACZ,aAAa,EACd;;AAGD;EACE,gBAAgB,EACjB;;AAGD;EAEI,kBA7aa,EA8ad;;AAHH;EAMI,gBAAgB,EACjB;;AAIH;EAEI,gBAAgB,EACjB;;AAHH;EAMI,kBA5ba,EA6bd;;AAPH;EAUI,kBAhca,EAicd;;AAGH;EACE,YAAY;EACZ,eAAe;EACf,YAAY,EACb;;AAGD;;;EAGE,eAAe;EACf,kBAAkB,EACnB","file":"bootstrap-colorpicker.css","sourcesContent":["$outline-color: rgba(0, 0, 0, 0.2);\n$box-shadow-outline: 0 0 0 1px $outline-color;\n$bar-size-short: 16px !default;\n$base-margin: 6px !default;\n$columns: 6 !default; // this affects the number of swatches per row and the width of the color picker, saturation, etc.\n$bar-size-large: ($bar-size-short * $columns) + ($base-margin * ($columns - 1));\n\n@mixin bgCheckerBox($size: 10px) {\n  background: linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, rgba(0, 0, 0, 0) 25%, rgba(0, 0, 0, 0) 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0),\n  linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, rgba(0, 0, 0, 0) 25%, rgba(0, 0, 0, 0) 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0),\n  rgb(255, 255, 255);\n  background-size: $size $size;\n  background-position: 0 0, $size/2 $size/2;\n}\n\n@mixin bgSaturation() {\n  background: -moz-linear-gradient(top, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 1) 100%),\n  -moz-linear-gradient(left, rgba(255, 255, 255, 1) 0%, rgba(255, 255, 255, 0) 100%); /* FF3.6+ */\n  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(0, 0, 0, 0)), color-stop(100%, rgba(0, 0, 0, 1))),\n  -webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255, 255, 255, 1)), color-stop(100%, rgba(255, 255, 255, 0))); /* Chrome,Safari4+ */\n  background: -webkit-linear-gradient(top, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 1) 100%),\n  -webkit-linear-gradient(left, rgba(255, 255, 255, 1) 0%, rgba(255, 255, 255, 0) 100%); /* Chrome10+,Safari5.1+ */\n  background: -o-linear-gradient(top, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 1) 100%),\n  -o-linear-gradient(left, rgba(255, 255, 255, 1) 0%, rgba(255, 255, 255, 0) 100%); /* Opera 11.10+ */\n  background: -ms-linear-gradient(top, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 1) 100%),\n  -ms-linear-gradient(left, rgba(255, 255, 255, 1) 0%, rgba(255, 255, 255, 0) 100%); /* IE10+ */\n  background: linear-gradient(to bottom, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 1) 100%),\n  linear-gradient(to right, rgba(255, 255, 255, 1) 0%, rgba(255, 255, 255, 0) 100%); /* W3C */\n}\n\n@mixin bgHueHorizontal() {\n  background: -moz-linear-gradient(right, rgb(255, 0, 0) 0%, rgb(255, 128, 0) 8%, rgb(255, 255, 0) 17%, rgb(128, 255, 0) 25%, rgb(0, 255, 0) 33%, rgb(0, 255, 128) 42%, rgb(0, 255, 255) 50%, rgb(0, 128, 255) 58%, rgb(0, 0, 255) 67%, rgb(128, 0, 255) 75%, rgb(255, 0, 255) 83%, rgb(255, 0, 128) 92%, rgb(255, 0, 0) 100%); /* FF3.6+ */\n  background: -webkit-gradient(linear, right top, left top, color-stop(0%, rgb(255, 0, 0)), color-stop(8%, rgb(255, 128, 0)), color-stop(17%, rgb(255, 255, 0)), color-stop(25%, rgb(128, 255, 0)), color-stop(33%, rgb(0, 255, 0)), color-stop(42%, rgb(0, 255, 128)), color-stop(50%, rgb(0, 255, 255)), color-stop(58%, rgb(0, 128, 255)), color-stop(67%, rgb(0, 0, 255)), color-stop(75%, rgb(128, 0, 255)), color-stop(83%, rgb(255, 0, 255)), color-stop(92%, rgb(255, 0, 128)), color-stop(100%, rgb(255, 0, 0))); /* Chrome,Safari4+ */\n  background: -webkit-linear-gradient(right, rgb(255, 0, 0) 0%, rgb(255, 128, 0) 8%, rgb(255, 255, 0) 17%, rgb(128, 255, 0) 25%, rgb(0, 255, 0) 33%, rgb(0, 255, 128) 42%, rgb(0, 255, 255) 50%, rgb(0, 128, 255) 58%, rgb(0, 0, 255) 67%, rgb(128, 0, 255) 75%, rgb(255, 0, 255) 83%, rgb(255, 0, 128) 92%, rgb(255, 0, 0) 100%); /* Chrome10+,Safari5.1+ */\n  background: -o-linear-gradient(right, rgb(255, 0, 0) 0%, rgb(255, 128, 0) 8%, rgb(255, 255, 0) 17%, rgb(128, 255, 0) 25%, rgb(0, 255, 0) 33%, rgb(0, 255, 128) 42%, rgb(0, 255, 255) 50%, rgb(0, 128, 255) 58%, rgb(0, 0, 255) 67%, rgb(128, 0, 255) 75%, rgb(255, 0, 255) 83%, rgb(255, 0, 128) 92%, rgb(255, 0, 0) 100%); /* Opera 11.10+ */\n  background: -ms-linear-gradient(right, rgb(255, 0, 0) 0%, rgb(255, 128, 0) 8%, rgb(255, 255, 0) 17%, rgb(128, 255, 0) 25%, rgb(0, 255, 0) 33%, rgb(0, 255, 128) 42%, rgb(0, 255, 255) 50%, rgb(0, 128, 255) 58%, rgb(0, 0, 255) 67%, rgb(128, 0, 255) 75%, rgb(255, 0, 255) 83%, rgb(255, 0, 128) 92%, rgb(255, 0, 0) 100%); /* IE10+ */\n  background: linear-gradient(to left, rgb(255, 0, 0) 0%, rgb(255, 128, 0) 8%, rgb(255, 255, 0) 17%, rgb(128, 255, 0) 25%, rgb(0, 255, 0) 33%, rgb(0, 255, 128) 42%, rgb(0, 255, 255) 50%, rgb(0, 128, 255) 58%, rgb(0, 0, 255) 67%, rgb(128, 0, 255) 75%, rgb(255, 0, 255) 83%, rgb(255, 0, 128) 92%, rgb(255, 0, 0) 100%); /* W3C */\n\n}\n\n@mixin bgHueVertical() {\n  background: -moz-linear-gradient(bottom, rgba(255, 0, 0, 1) 0%, rgba(255, 128, 0, 1) 8%, rgba(255, 255, 0, 1) 17%, rgba(128, 255, 0, 1) 25%, rgba(0, 255, 0, 1) 33%, rgba(0, 255, 128, 1) 42%, rgba(0, 255, 255, 1) 50%, rgba(0, 128, 255, 1) 58%, rgba(0, 0, 255, 1) 67%, rgba(128, 0, 255, 1) 75%, rgba(255, 0, 255, 1) 83%, rgba(255, 0, 128, 1) 92%, rgba(255, 0, 0, 1) 100%); /* FF3.6+ */\n  background: -webkit-gradient(linear, left bottom, left top, color-stop(0%, rgba(255, 0, 0, 1)), color-stop(8%, rgba(255, 128, 0, 1)), color-stop(17%, rgba(255, 255, 0, 1)), color-stop(25%, rgba(128, 255, 0, 1)), color-stop(33%, rgba(0, 255, 0, 1)), color-stop(42%, rgba(0, 255, 128, 1)), color-stop(50%, rgba(0, 255, 255, 1)), color-stop(58%, rgba(0, 128, 255, 1)), color-stop(67%, rgba(0, 0, 255, 1)), color-stop(75%, rgba(128, 0, 255, 1)), color-stop(83%, rgba(255, 0, 255, 1)), color-stop(92%, rgba(255, 0, 128, 1)), color-stop(100%, rgba(255, 0, 0, 1))); /* Chrome,Safari4+ */\n  background: -webkit-linear-gradient(bottom, rgba(255, 0, 0, 1) 0%, rgba(255, 128, 0, 1) 8%, rgba(255, 255, 0, 1) 17%, rgba(128, 255, 0, 1) 25%, rgba(0, 255, 0, 1) 33%, rgba(0, 255, 128, 1) 42%, rgba(0, 255, 255, 1) 50%, rgba(0, 128, 255, 1) 58%, rgba(0, 0, 255, 1) 67%, rgba(128, 0, 255, 1) 75%, rgba(255, 0, 255, 1) 83%, rgba(255, 0, 128, 1) 92%, rgba(255, 0, 0, 1) 100%); /* Chrome10+,Safari5.1+ */\n  background: -o-linear-gradient(bottom, rgba(255, 0, 0, 1) 0%, rgba(255, 128, 0, 1) 8%, rgba(255, 255, 0, 1) 17%, rgba(128, 255, 0, 1) 25%, rgba(0, 255, 0, 1) 33%, rgba(0, 255, 128, 1) 42%, rgba(0, 255, 255, 1) 50%, rgba(0, 128, 255, 1) 58%, rgba(0, 0, 255, 1) 67%, rgba(128, 0, 255, 1) 75%, rgba(255, 0, 255, 1) 83%, rgba(255, 0, 128, 1) 92%, rgba(255, 0, 0, 1) 100%); /* Opera 11.10+ */\n  background: -ms-linear-gradient(bottom, rgba(255, 0, 0, 1) 0%, rgba(255, 128, 0, 1) 8%, rgba(255, 255, 0, 1) 17%, rgba(128, 255, 0, 1) 25%, rgba(0, 255, 0, 1) 33%, rgba(0, 255, 128, 1) 42%, rgba(0, 255, 255, 1) 50%, rgba(0, 128, 255, 1) 58%, rgba(0, 0, 255, 1) 67%, rgba(128, 0, 255, 1) 75%, rgba(255, 0, 255, 1) 83%, rgba(255, 0, 128, 1) 92%, rgba(255, 0, 0, 1) 100%); /* IE10+ */\n  background: linear-gradient(to top, rgba(255, 0, 0, 1) 0%, rgba(255, 128, 0, 1) 8%, rgba(255, 255, 0, 1) 17%, rgba(128, 255, 0, 1) 25%, rgba(0, 255, 0, 1) 33%, rgba(0, 255, 128, 1) 42%, rgba(0, 255, 255, 1) 50%, rgba(0, 128, 255, 1) 58%, rgba(0, 0, 255, 1) 67%, rgba(128, 0, 255, 1) 75%, rgba(255, 0, 255, 1) 83%, rgba(255, 0, 128, 1) 92%, rgba(255, 0, 0, 1) 100%); /* W3C */\n}\n\n.colorpicker {\n  position: relative;\n  display: none;\n  font-size: inherit;\n  color: inherit;\n  text-align: left;\n  list-style: none;\n  background-color: #ffffff;\n  background-clip: padding-box;\n  border: 1px solid $outline-color;\n  //box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n  padding: .75rem .75rem;\n  width: ($bar-size-large + $base-margin + $bar-size-short);\n  border-radius: 4px;\n  box-sizing: content-box;\n}\n\n.colorpicker.colorpicker-disabled,\n.colorpicker.colorpicker-disabled * {\n  cursor: default !important;\n}\n\n.colorpicker div {\n  position: relative;\n}\n\n.colorpicker-popup {\n  position: absolute;\n  top: 100%;\n  left: 0;\n  float: left;\n  margin-top: 1px;\n  z-index: 1060;\n}\n\n.colorpicker-popup.colorpicker-bs-popover-content {\n  position: relative;\n  top: auto;\n  left: auto;\n  float: none;\n  margin: 0;\n  z-index: initial;\n  border: none;\n  padding: 0.25rem 0; // popover padding correction\n  border-radius: 0;\n  background: none;\n  box-shadow: none;\n}\n\n.colorpicker:before,\n.colorpicker:after {\n  content: \"\";\n  display: table;\n  clear: both;\n  line-height: 0;\n}\n\n.colorpicker-clear {\n  clear: both;\n  display: block;\n}\n\n.colorpicker:before {\n  content: '';\n  display: inline-block;\n  border-left: 7px solid transparent;\n  border-right: 7px solid transparent;\n  border-bottom: 7px solid #ccc;\n  border-bottom-color: $outline-color;\n  position: absolute;\n  top: -7px;\n  left: auto;\n  right: 6px;\n}\n\n.colorpicker:after {\n  content: '';\n  display: inline-block;\n  border-left: 6px solid transparent;\n  border-right: 6px solid transparent;\n  border-bottom: 6px solid #ffffff;\n  position: absolute;\n  top: -6px;\n  left: auto;\n  right: 7px;\n}\n\n.colorpicker.colorpicker-with-alpha {\n  width: ($bar-size-large + (($base-margin + $bar-size-short) * 2));\n}\n\n.colorpicker.colorpicker-with-alpha .colorpicker-alpha {\n  display: block;\n}\n\n.colorpicker-saturation {\n  position: relative;\n  width: $bar-size-large;\n  height: $bar-size-large;\n  @include bgSaturation();\n  cursor: crosshair;\n  float: left;\n  box-shadow: $box-shadow-outline;\n  margin-bottom: $base-margin;\n\n  .colorpicker-guide {\n    display: block;\n    height: 6px;\n    width: 6px;\n    border-radius: 6px;\n    border: 1px solid #000;\n    box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.8);\n    position: absolute;\n    top: 0;\n    left: 0;\n    margin: -3px 0 0 -3px;\n  }\n}\n\n.colorpicker-hue,\n.colorpicker-alpha {\n  position: relative;\n  width: $bar-size-short;\n  height: $bar-size-large;\n  float: left;\n  cursor: row-resize;\n  margin-left: $base-margin;\n  margin-bottom: $base-margin;\n}\n\n.colorpicker-alpha-color {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n}\n\n.colorpicker-hue,\n.colorpicker-alpha-color {\n  box-shadow: $box-shadow-outline;\n}\n\n.colorpicker-hue .colorpicker-guide,\n.colorpicker-alpha .colorpicker-guide {\n  display: block;\n  height: 4px;\n  background: rgba(255, 255, 255, 0.8);\n  border: 1px solid rgba(0, 0, 0, 0.4);\n  position: absolute;\n  top: 0;\n  left: 0;\n  margin-left: -2px;\n  margin-top: -2px;\n  right: -2px;\n  z-index: 1;\n}\n\n.colorpicker-hue {\n  @include bgHueVertical();\n}\n\n.colorpicker-alpha {\n  @include bgCheckerBox();\n  display: none;\n}\n\n.colorpicker-bar {\n  min-height: $bar-size-short;\n  margin: $base-margin 0 0 0;\n  clear: both;\n  text-align: center;\n  font-size: 10px;\n  line-height: normal;\n  max-width: 100%;\n  box-shadow: $box-shadow-outline;\n\n  &:before {\n    content: \"\";\n    display: table;\n    clear: both;\n  }\n}\n\n.colorpicker-bar.colorpicker-bar-horizontal {\n  height: $bar-size-large;\n  width: $bar-size-short;\n  margin: 0 0 $base-margin 0;\n  float: left;\n}\n\n.colorpicker-input-addon {\n  position: relative;\n}\n\n.colorpicker-input-addon i {\n  display: inline-block;\n  cursor: pointer;\n  vertical-align: text-top;\n  height: 16px;\n  width: 16px;\n  position: relative;\n}\n\n.colorpicker-input-addon:before {\n  content: \"\";\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  display: inline-block;\n  vertical-align: text-top;\n  @include bgCheckerBox();\n}\n\n.colorpicker.colorpicker-inline {\n  position: relative;\n  display: inline-block;\n  float: none;\n  z-index: auto;\n  vertical-align: text-bottom;\n}\n\n.colorpicker.colorpicker-horizontal {\n  width: $bar-size-large;\n  height: auto;\n}\n\n.colorpicker.colorpicker-horizontal .colorpicker-bar {\n  width: $bar-size-large;\n}\n\n.colorpicker.colorpicker-horizontal .colorpicker-saturation {\n  float: none;\n  margin-bottom: 0;\n}\n\n.colorpicker.colorpicker-horizontal .colorpicker-hue,\n.colorpicker.colorpicker-horizontal .colorpicker-alpha {\n  float: none;\n  width: $bar-size-large;\n  height: $bar-size-short;\n  cursor: col-resize;\n  margin-left: 0;\n  margin-top: $base-margin;\n  margin-bottom: 0;\n}\n\n.colorpicker.colorpicker-horizontal .colorpicker-hue .colorpicker-guide,\n.colorpicker.colorpicker-horizontal .colorpicker-alpha .colorpicker-guide {\n  position: absolute;\n  display: block;\n  bottom: -2px;\n  left: 0;\n  right: auto;\n  height: auto;\n  width: 4px;\n}\n\n.colorpicker.colorpicker-horizontal .colorpicker-hue {\n  @include bgHueHorizontal();\n}\n\n.colorpicker.colorpicker-horizontal .colorpicker-alpha {\n  @include bgCheckerBox();\n}\n\n.colorpicker-inline:before,\n.colorpicker-no-arrow:before,\n.colorpicker-popup.colorpicker-bs-popover-content:before {\n  content: none;\n  display: none;\n}\n\n.colorpicker-inline:after,\n.colorpicker-no-arrow:after,\n.colorpicker-popup.colorpicker-bs-popover-content:after {\n  content: none;\n  display: none;\n}\n\n\n.colorpicker-alpha,\n.colorpicker-saturation,\n.colorpicker-hue {\n  user-select: none;\n}\n\n.colorpicker,\n.colorpicker-alpha,\n.colorpicker-saturation,\n.colorpicker-hue,\n.colorpicker-bar {\n  &.colorpicker-visible {\n    display: block;\n  }\n}\n\n.colorpicker,\n.colorpicker-alpha,\n.colorpicker-saturation,\n.colorpicker-hue,\n.colorpicker-bar {\n  &.colorpicker-hidden {\n    display: none;\n  }\n}\n\n.colorpicker-inline.colorpicker-visible {\n  display: inline-block;\n}\n\n.colorpicker.colorpicker-disabled:after {\n  border: none;\n  content: '';\n  display: block;\n  width: 100%;\n  height: 100%;\n  background: rgba(233, 236, 239, 0.33);\n  top: 0;\n  left: 0;\n  right: auto;\n  z-index: 2;\n  position: absolute;\n}\n\n.colorpicker.colorpicker-disabled .colorpicker-guide {\n  display: none;\n}\n\n/** EXTENSIONS **/\n\n.colorpicker-preview {\n  @include bgCheckerBox();\n}\n\n.colorpicker-preview > div {\n  position: absolute;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n}\n\n.colorpicker-bar.colorpicker-swatches {\n  box-shadow: none;\n  height: auto;\n}\n\n.colorpicker-swatches--inner {\n  clear: both;\n  margin-top: -$base-margin;\n}\n\n.colorpicker-swatch {\n  position: relative;\n  cursor: pointer;\n  float: left;\n  height: $bar-size-short;\n  width: $bar-size-short;\n  margin-right: $base-margin;\n  margin-top: $base-margin;\n  margin-left: 0;\n  display: block;\n  box-shadow: $box-shadow-outline;\n  @include bgCheckerBox();\n}\n\n.colorpicker-swatch--inner {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n}\n\n// saturation + hue vertical (clear margin-right on nth column + 1)\n.colorpicker-swatch:nth-of-type(#{$columns + 1}n+0) {\n  margin-right: 0;\n}\n\n// saturation + hue + alpha vertical (clear margin-right on nth column + 2)\n.colorpicker-with-alpha {\n  .colorpicker-swatch:nth-of-type(#{$columns + 1}n+0) {\n    margin-right: $base-margin;\n  }\n\n  .colorpicker-swatch:nth-of-type(#{$columns + 2}n+0) {\n    margin-right: 0;\n  }\n}\n\n// horizontal mode (clear margin-right on nth column)\n.colorpicker-horizontal {\n  .colorpicker-swatch:nth-of-type(#{$columns}n+0) {\n    margin-right: 0;\n  }\n\n  .colorpicker-swatch:nth-of-type(#{$columns + 1}n+0) {\n    margin-right: $base-margin;\n  }\n\n  .colorpicker-swatch:nth-of-type(#{$columns + 2}n+0) {\n    margin-right: $base-margin;\n  }\n}\n\n.colorpicker-swatch:last-of-type:after {\n  content: \"\";\n  display: table;\n  clear: both;\n}\n\n// RTL writing mode support\n*[dir='rtl'] .colorpicker-element input,\n.colorpicker-element[dir='rtl'] input,\n.colorpicker-element input[dir='rtl'] {\n  direction: ltr;\n  text-align: right;\n}\n"]}
\ No newline at end of file
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-colorpicker/css/bootstrap-colorpicker.min.css.map
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-colorpicker/css/bootstrap-colorpicker.min.css.map	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-colorpicker/css/bootstrap-colorpicker.min.css.map	(revision 3762)
@@ -0,0 +1 @@
+{"version":3,"sources":["bootstrap-colorpicker.css","bootstrap-colorpicker.css"],"names":[],"mappings":"AAiDA,aACE,SAAA,SACA,QAAA,KACA,UAAA,QACA,MAAA,QACA,WAAA,KACA,WAAA,KACA,iBAAA,KACA,gBAAA,YACA,OAAA,IAAA,MAAA,eAEA,QAAA,OAAA,OACA,MAAA,MACA,cAAA,IACA,mBAAA,YAAA,WAAA,YAGF,kCCjDA,oCDmDE,OAAA,kBAGF,iBACE,SAAA,SAGF,mBACE,SAAA,SACA,IAAA,KACA,KAAA,EACA,MAAA,KACA,WAAA,IACA,QAAA,KAGF,kDACE,SAAA,SACA,IAAA,KACA,KAAA,KACA,MAAA,KACA,OAAA,EACA,QAAA,QACA,OAAA,KACA,QAAA,OAAA,EACA,cAAA,EACA,WAAA,IACA,mBAAA,KAAA,WAAA,KCjDF,mBDoDA,oBAEE,QAAA,GACA,QAAA,MACA,MAAA,KACA,YAAA,EAGF,mBACE,MAAA,KACA,QAAA,MAGF,oBACE,QAAA,GACA,QAAA,aACA,YAAA,IAAA,MAAA,YACA,aAAA,IAAA,MAAA,YACA,cAAA,IAAA,MAAA,KACA,oBAAA,eACA,SAAA,SACA,IAAA,KACA,KAAA,KACA,MAAA,IAGF,mBACE,QAAA,GACA,QAAA,aACA,YAAA,IAAA,MAAA,YACA,aAAA,IAAA,MAAA,YACA,cAAA,IAAA,MAAA,KACA,SAAA,SACA,IAAA,KACA,KAAA,KACA,MAAA,IAGF,oCACE,MAAA,MAGF,uDACE,QAAA,MAGF,wBACE,SAAA,SACA,MAAA,MACA,OAAA,MAzHA,WAAA,yEAAA,CAAA,gFAAA,WAAA,kDAAA,CAAA,0DA2HA,OAAA,UACA,MAAA,KACA,mBAAA,EAAA,EAAA,EAAA,IAAA,eAAA,WAAA,EAAA,EAAA,EAAA,IAAA,eACA,cAAA,IARF,2CAWI,QAAA,MACA,OAAA,IACA,MAAA,IACA,cAAA,IACA,OAAA,IAAA,MAAA,KACA,mBAAA,EAAA,EAAA,EAAA,IAAA,qBAAA,WAAA,EAAA,EAAA,EAAA,IAAA,qBACA,SAAA,SACA,IAAA,EACA,KAAA,EACA,OAAA,KAAA,EAAA,EAAA,KChDJ,mBDoDA,iBAEE,SAAA,SACA,MAAA,KACA,OAAA,MACA,MAAA,KACA,OAAA,WACA,YAAA,IACA,cAAA,IAGF,yBACE,SAAA,SACA,IAAA,EACA,KAAA,EACA,MAAA,KACA,OAAA,KCnDF,yBDsDA,iBAEE,mBAAA,EAAA,EAAA,EAAA,IAAA,eAAA,WAAA,EAAA,EAAA,EAAA,IAAA,eCnDF,sCDsDA,oCAEE,QAAA,MACA,OAAA,IACA,WAAA,qBACA,OAAA,IAAA,MAAA,eACA,SAAA,SACA,IAAA,EACA,KAAA,EACA,YAAA,KACA,WAAA,KACA,MAAA,KACA,QAAA,EAGF,iBAjKE,WAAA,2TAAA,WAAA,8JAqKF,mBA3ME,WAAA,6GAAA,CAAA,6GAAA,CAAA,KAGA,gBAAA,KAAA,KACA,oBAAA,EAAA,CAAA,CAAA,IAAA,IAyMA,QAAA,KAGF,iBACE,WAAA,KACA,OAAA,IAAA,EAAA,EAAA,EACA,MAAA,KACA,WAAA,OACA,UAAA,KACA,YAAA,OACA,UAAA,KACA,mBAAA,EAAA,EAAA,EAAA,IAAA,eAAA,WAAA,EAAA,EAAA,EAAA,IAAA,eARF,wBAWI,QAAA,GACA,QAAA,MACA,MAAA,KAIJ,4CACE,OAAA,MACA,MAAA,KACA,OAAA,EAAA,EAAA,IAAA,EACA,MAAA,KAGF,yBACE,SAAA,SAGF,2BACE,QAAA,aACA,OAAA,QACA,eAAA,SACA,OAAA,KACA,MAAA,KACA,SAAA,SAGF,gCACE,QAAA,GACA,SAAA,SACA,MAAA,KACA,OAAA,KACA,QAAA,aACA,eAAA,SA3PA,WAAA,6GAAA,CAAA,6GAAA,CAAA,KAGA,gBAAA,KAAA,KACA,oBAAA,EAAA,CAAA,CAAA,IAAA,IA2PF,gCACE,SAAA,SACA,QAAA,aACA,MAAA,KACA,QAAA,KACA,eAAA,YAGF,oCACE,MAAA,MACA,OAAA,KAGF,qDACE,MAAA,MAGF,4DACE,MAAA,KACA,cAAA,ECrDF,uDDwDA,qDAEE,MAAA,KACA,MAAA,MACA,OAAA,KACA,OAAA,WACA,YAAA,EACA,WAAA,IACA,cAAA,ECtDF,0EDyDA,wEAEE,SAAA,SACA,QAAA,MACA,OAAA,KACA,KAAA,EACA,MAAA,KACA,OAAA,KACA,MAAA,IAGF,qDA/QE,WAAA,yTAAA,WAAA,+JAmRF,uDA/SE,WAAA,6GAAA,CAAA,6GAAA,CAAA,KAGA,gBAAA,KAAA,KACA,oBAAA,EAAA,CAAA,CAAA,IAAA,IA+SF,2BCnDA,6BACA,yDDqDE,QAAA,KACA,QAAA,KAGF,0BCpDA,4BACA,wDDsDE,QAAA,KACA,QAAA,KAIF,mBCrDA,iBADA,wBDyDE,oBAAA,KAAA,iBAAA,KAAA,gBAAA,KAAA,YAAA,KCjDF,uCAGA,qCADA,qCADA,4CDmDA,iCAMI,QAAA,MCnDJ,sCAGA,oCADA,oCADA,2CDsDA,gCAMI,QAAA,KAIJ,wCACE,QAAA,aAGF,wCACE,OAAA,KACA,QAAA,GACA,QAAA,MACA,MAAA,KACA,OAAA,KACA,WAAA,sBACA,IAAA,EACA,KAAA,EACA,MAAA,KACA,QAAA,EACA,SAAA,SAGF,qDACE,QAAA,KAKF,qBApXE,WAAA,6GAAA,CAAA,6GAAA,CAAA,KAGA,gBAAA,KAAA,KACA,oBAAA,EAAA,CAAA,CAAA,IAAA,IAoXF,yBACE,SAAA,SACA,KAAA,EACA,IAAA,EACA,MAAA,KACA,OAAA,KAGF,sCACE,mBAAA,KAAA,WAAA,KACA,OAAA,KAGF,6BACE,MAAA,KACA,WAAA,KAGF,oBACE,SAAA,SACA,OAAA,QACA,MAAA,KACA,OAAA,KACA,MAAA,KACA,aAAA,IACA,WAAA,IACA,YAAA,EACA,QAAA,MACA,mBAAA,EAAA,EAAA,EAAA,IAAA,eAAA,WAAA,EAAA,EAAA,EAAA,IAAA,eApZA,WAAA,6GAAA,CAAA,6GAAA,CAAA,KAGA,gBAAA,KAAA,KACA,oBAAA,EAAA,CAAA,CAAA,IAAA,IAoZF,2BACE,SAAA,SACA,IAAA,EACA,KAAA,EACA,MAAA,KACA,OAAA,KAIF,sCACE,aAAA,EAIF,8DAEI,aAAA,IAFJ,8DAMI,aAAA,EAKJ,8DAEI,aAAA,EAFJ,8DAMI,aAAA,IANJ,8DAUI,aAAA,IAIJ,uCACE,QAAA,GACA,QAAA,MACA,MAAA,KCxEF,oCADA,oCD6EA,qCAGE,UAAA,IACA,WAAA","file":"bootstrap-colorpicker.min.css","sourcesContent":[".colorpicker {\n  position: relative;\n  display: none;\n  font-size: inherit;\n  color: inherit;\n  text-align: left;\n  list-style: none;\n  background-color: #ffffff;\n  background-clip: padding-box;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  padding: .75rem .75rem;\n  width: 148px;\n  border-radius: 4px;\n  -webkit-box-sizing: content-box;\n          box-sizing: content-box; }\n\n.colorpicker.colorpicker-disabled,\n.colorpicker.colorpicker-disabled * {\n  cursor: default !important; }\n\n.colorpicker div {\n  position: relative; }\n\n.colorpicker-popup {\n  position: absolute;\n  top: 100%;\n  left: 0;\n  float: left;\n  margin-top: 1px;\n  z-index: 1060; }\n\n.colorpicker-popup.colorpicker-bs-popover-content {\n  position: relative;\n  top: auto;\n  left: auto;\n  float: none;\n  margin: 0;\n  z-index: initial;\n  border: none;\n  padding: 0.25rem 0;\n  border-radius: 0;\n  background: none;\n  -webkit-box-shadow: none;\n          box-shadow: none; }\n\n.colorpicker:before,\n.colorpicker:after {\n  content: \"\";\n  display: table;\n  clear: both;\n  line-height: 0; }\n\n.colorpicker-clear {\n  clear: both;\n  display: block; }\n\n.colorpicker:before {\n  content: '';\n  display: inline-block;\n  border-left: 7px solid transparent;\n  border-right: 7px solid transparent;\n  border-bottom: 7px solid #ccc;\n  border-bottom-color: rgba(0, 0, 0, 0.2);\n  position: absolute;\n  top: -7px;\n  left: auto;\n  right: 6px; }\n\n.colorpicker:after {\n  content: '';\n  display: inline-block;\n  border-left: 6px solid transparent;\n  border-right: 6px solid transparent;\n  border-bottom: 6px solid #ffffff;\n  position: absolute;\n  top: -6px;\n  left: auto;\n  right: 7px; }\n\n.colorpicker.colorpicker-with-alpha {\n  width: 170px; }\n\n.colorpicker.colorpicker-with-alpha .colorpicker-alpha {\n  display: block; }\n\n.colorpicker-saturation {\n  position: relative;\n  width: 126px;\n  height: 126px;\n  /* FF3.6+ */\n  /* Chrome,Safari4+ */\n  /* Chrome10+,Safari5.1+ */\n  /* Opera 11.10+ */\n  /* IE10+ */\n  background: -webkit-gradient(linear, left top, left bottom, from(transparent), to(black)), -webkit-gradient(linear, left top, right top, from(white), to(rgba(255, 255, 255, 0)));\n  background: linear-gradient(to bottom, transparent 0%, black 100%), linear-gradient(to right, white 0%, rgba(255, 255, 255, 0) 100%);\n  /* W3C */\n  cursor: crosshair;\n  float: left;\n  -webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2);\n          box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2);\n  margin-bottom: 6px; }\n  .colorpicker-saturation .colorpicker-guide {\n    display: block;\n    height: 6px;\n    width: 6px;\n    border-radius: 6px;\n    border: 1px solid #000;\n    -webkit-box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.8);\n            box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.8);\n    position: absolute;\n    top: 0;\n    left: 0;\n    margin: -3px 0 0 -3px; }\n\n.colorpicker-hue,\n.colorpicker-alpha {\n  position: relative;\n  width: 16px;\n  height: 126px;\n  float: left;\n  cursor: row-resize;\n  margin-left: 6px;\n  margin-bottom: 6px; }\n\n.colorpicker-alpha-color {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%; }\n\n.colorpicker-hue,\n.colorpicker-alpha-color {\n  -webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2);\n          box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2); }\n\n.colorpicker-hue .colorpicker-guide,\n.colorpicker-alpha .colorpicker-guide {\n  display: block;\n  height: 4px;\n  background: rgba(255, 255, 255, 0.8);\n  border: 1px solid rgba(0, 0, 0, 0.4);\n  position: absolute;\n  top: 0;\n  left: 0;\n  margin-left: -2px;\n  margin-top: -2px;\n  right: -2px;\n  z-index: 1; }\n\n.colorpicker-hue {\n  /* FF3.6+ */\n  /* Chrome,Safari4+ */\n  /* Chrome10+,Safari5.1+ */\n  /* Opera 11.10+ */\n  /* IE10+ */\n  background: -webkit-gradient(linear, left bottom, left top, from(red), color-stop(8%, #ff8000), color-stop(17%, yellow), color-stop(25%, #80ff00), color-stop(33%, lime), color-stop(42%, #00ff80), color-stop(50%, cyan), color-stop(58%, #0080ff), color-stop(67%, blue), color-stop(75%, #8000ff), color-stop(83%, magenta), color-stop(92%, #ff0080), to(red));\n  background: linear-gradient(to top, red 0%, #ff8000 8%, yellow 17%, #80ff00 25%, lime 33%, #00ff80 42%, cyan 50%, #0080ff 58%, blue 67%, #8000ff 75%, magenta 83%, #ff0080 92%, red 100%);\n  /* W3C */ }\n\n.colorpicker-alpha {\n  background: linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), white;\n  background-size: 10px 10px;\n  background-position: 0 0, 5px 5px;\n  display: none; }\n\n.colorpicker-bar {\n  min-height: 16px;\n  margin: 6px 0 0 0;\n  clear: both;\n  text-align: center;\n  font-size: 10px;\n  line-height: normal;\n  max-width: 100%;\n  -webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2);\n          box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2); }\n  .colorpicker-bar:before {\n    content: \"\";\n    display: table;\n    clear: both; }\n\n.colorpicker-bar.colorpicker-bar-horizontal {\n  height: 126px;\n  width: 16px;\n  margin: 0 0 6px 0;\n  float: left; }\n\n.colorpicker-input-addon {\n  position: relative; }\n\n.colorpicker-input-addon i {\n  display: inline-block;\n  cursor: pointer;\n  vertical-align: text-top;\n  height: 16px;\n  width: 16px;\n  position: relative; }\n\n.colorpicker-input-addon:before {\n  content: \"\";\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  display: inline-block;\n  vertical-align: text-top;\n  background: linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), white;\n  background-size: 10px 10px;\n  background-position: 0 0, 5px 5px; }\n\n.colorpicker.colorpicker-inline {\n  position: relative;\n  display: inline-block;\n  float: none;\n  z-index: auto;\n  vertical-align: text-bottom; }\n\n.colorpicker.colorpicker-horizontal {\n  width: 126px;\n  height: auto; }\n\n.colorpicker.colorpicker-horizontal .colorpicker-bar {\n  width: 126px; }\n\n.colorpicker.colorpicker-horizontal .colorpicker-saturation {\n  float: none;\n  margin-bottom: 0; }\n\n.colorpicker.colorpicker-horizontal .colorpicker-hue,\n.colorpicker.colorpicker-horizontal .colorpicker-alpha {\n  float: none;\n  width: 126px;\n  height: 16px;\n  cursor: col-resize;\n  margin-left: 0;\n  margin-top: 6px;\n  margin-bottom: 0; }\n\n.colorpicker.colorpicker-horizontal .colorpicker-hue .colorpicker-guide,\n.colorpicker.colorpicker-horizontal .colorpicker-alpha .colorpicker-guide {\n  position: absolute;\n  display: block;\n  bottom: -2px;\n  left: 0;\n  right: auto;\n  height: auto;\n  width: 4px; }\n\n.colorpicker.colorpicker-horizontal .colorpicker-hue {\n  /* FF3.6+ */\n  /* Chrome,Safari4+ */\n  /* Chrome10+,Safari5.1+ */\n  /* Opera 11.10+ */\n  /* IE10+ */\n  background: -webkit-gradient(linear, right top, left top, from(red), color-stop(8%, #ff8000), color-stop(17%, yellow), color-stop(25%, #80ff00), color-stop(33%, lime), color-stop(42%, #00ff80), color-stop(50%, cyan), color-stop(58%, #0080ff), color-stop(67%, blue), color-stop(75%, #8000ff), color-stop(83%, magenta), color-stop(92%, #ff0080), to(red));\n  background: linear-gradient(to left, red 0%, #ff8000 8%, yellow 17%, #80ff00 25%, lime 33%, #00ff80 42%, cyan 50%, #0080ff 58%, blue 67%, #8000ff 75%, magenta 83%, #ff0080 92%, red 100%);\n  /* W3C */ }\n\n.colorpicker.colorpicker-horizontal .colorpicker-alpha {\n  background: linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), white;\n  background-size: 10px 10px;\n  background-position: 0 0, 5px 5px; }\n\n.colorpicker-inline:before,\n.colorpicker-no-arrow:before,\n.colorpicker-popup.colorpicker-bs-popover-content:before {\n  content: none;\n  display: none; }\n\n.colorpicker-inline:after,\n.colorpicker-no-arrow:after,\n.colorpicker-popup.colorpicker-bs-popover-content:after {\n  content: none;\n  display: none; }\n\n.colorpicker-alpha,\n.colorpicker-saturation,\n.colorpicker-hue {\n  -webkit-user-select: none;\n     -moz-user-select: none;\n      -ms-user-select: none;\n          user-select: none; }\n\n.colorpicker.colorpicker-visible,\n.colorpicker-alpha.colorpicker-visible,\n.colorpicker-saturation.colorpicker-visible,\n.colorpicker-hue.colorpicker-visible,\n.colorpicker-bar.colorpicker-visible {\n  display: block; }\n\n.colorpicker.colorpicker-hidden,\n.colorpicker-alpha.colorpicker-hidden,\n.colorpicker-saturation.colorpicker-hidden,\n.colorpicker-hue.colorpicker-hidden,\n.colorpicker-bar.colorpicker-hidden {\n  display: none; }\n\n.colorpicker-inline.colorpicker-visible {\n  display: inline-block; }\n\n.colorpicker.colorpicker-disabled:after {\n  border: none;\n  content: '';\n  display: block;\n  width: 100%;\n  height: 100%;\n  background: rgba(233, 236, 239, 0.33);\n  top: 0;\n  left: 0;\n  right: auto;\n  z-index: 2;\n  position: absolute; }\n\n.colorpicker.colorpicker-disabled .colorpicker-guide {\n  display: none; }\n\n/** EXTENSIONS **/\n.colorpicker-preview {\n  background: linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), white;\n  background-size: 10px 10px;\n  background-position: 0 0, 5px 5px; }\n\n.colorpicker-preview > div {\n  position: absolute;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%; }\n\n.colorpicker-bar.colorpicker-swatches {\n  -webkit-box-shadow: none;\n          box-shadow: none;\n  height: auto; }\n\n.colorpicker-swatches--inner {\n  clear: both;\n  margin-top: -6px; }\n\n.colorpicker-swatch {\n  position: relative;\n  cursor: pointer;\n  float: left;\n  height: 16px;\n  width: 16px;\n  margin-right: 6px;\n  margin-top: 6px;\n  margin-left: 0;\n  display: block;\n  -webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2);\n          box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2);\n  background: linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), white;\n  background-size: 10px 10px;\n  background-position: 0 0, 5px 5px; }\n\n.colorpicker-swatch--inner {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%; }\n\n.colorpicker-swatch:nth-of-type(7n+0) {\n  margin-right: 0; }\n\n.colorpicker-with-alpha .colorpicker-swatch:nth-of-type(7n+0) {\n  margin-right: 6px; }\n\n.colorpicker-with-alpha .colorpicker-swatch:nth-of-type(8n+0) {\n  margin-right: 0; }\n\n.colorpicker-horizontal .colorpicker-swatch:nth-of-type(6n+0) {\n  margin-right: 0; }\n\n.colorpicker-horizontal .colorpicker-swatch:nth-of-type(7n+0) {\n  margin-right: 6px; }\n\n.colorpicker-horizontal .colorpicker-swatch:nth-of-type(8n+0) {\n  margin-right: 6px; }\n\n.colorpicker-swatch:last-of-type:after {\n  content: \"\";\n  display: table;\n  clear: both; }\n\n*[dir='rtl'] .colorpicker-element input,\n.colorpicker-element[dir='rtl'] input,\n.colorpicker-element input[dir='rtl'] {\n  direction: ltr;\n  text-align: right; }\n\n/*# sourceMappingURL=bootstrap-colorpicker.css.map */\n",".colorpicker {\n  position: relative;\n  display: none;\n  font-size: inherit;\n  color: inherit;\n  text-align: left;\n  list-style: none;\n  background-color: #ffffff;\n  background-clip: padding-box;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  padding: .75rem .75rem;\n  width: 148px;\n  border-radius: 4px;\n  -webkit-box-sizing: content-box;\n          box-sizing: content-box; }\n\n.colorpicker.colorpicker-disabled,\n.colorpicker.colorpicker-disabled * {\n  cursor: default !important; }\n\n.colorpicker div {\n  position: relative; }\n\n.colorpicker-popup {\n  position: absolute;\n  top: 100%;\n  left: 0;\n  float: left;\n  margin-top: 1px;\n  z-index: 1060; }\n\n.colorpicker-popup.colorpicker-bs-popover-content {\n  position: relative;\n  top: auto;\n  left: auto;\n  float: none;\n  margin: 0;\n  z-index: initial;\n  border: none;\n  padding: 0.25rem 0;\n  border-radius: 0;\n  background: none;\n  -webkit-box-shadow: none;\n          box-shadow: none; }\n\n.colorpicker:before,\n.colorpicker:after {\n  content: \"\";\n  display: table;\n  clear: both;\n  line-height: 0; }\n\n.colorpicker-clear {\n  clear: both;\n  display: block; }\n\n.colorpicker:before {\n  content: '';\n  display: inline-block;\n  border-left: 7px solid transparent;\n  border-right: 7px solid transparent;\n  border-bottom: 7px solid #ccc;\n  border-bottom-color: rgba(0, 0, 0, 0.2);\n  position: absolute;\n  top: -7px;\n  left: auto;\n  right: 6px; }\n\n.colorpicker:after {\n  content: '';\n  display: inline-block;\n  border-left: 6px solid transparent;\n  border-right: 6px solid transparent;\n  border-bottom: 6px solid #ffffff;\n  position: absolute;\n  top: -6px;\n  left: auto;\n  right: 7px; }\n\n.colorpicker.colorpicker-with-alpha {\n  width: 170px; }\n\n.colorpicker.colorpicker-with-alpha .colorpicker-alpha {\n  display: block; }\n\n.colorpicker-saturation {\n  position: relative;\n  width: 126px;\n  height: 126px;\n  /* FF3.6+ */\n  /* Chrome,Safari4+ */\n  /* Chrome10+,Safari5.1+ */\n  /* Opera 11.10+ */\n  /* IE10+ */\n  background: -webkit-gradient(linear, left top, left bottom, from(transparent), to(black)), -webkit-gradient(linear, left top, right top, from(white), to(rgba(255, 255, 255, 0)));\n  background: linear-gradient(to bottom, transparent 0%, black 100%), linear-gradient(to right, white 0%, rgba(255, 255, 255, 0) 100%);\n  /* W3C */\n  cursor: crosshair;\n  float: left;\n  -webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2);\n          box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2);\n  margin-bottom: 6px; }\n  .colorpicker-saturation .colorpicker-guide {\n    display: block;\n    height: 6px;\n    width: 6px;\n    border-radius: 6px;\n    border: 1px solid #000;\n    -webkit-box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.8);\n            box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.8);\n    position: absolute;\n    top: 0;\n    left: 0;\n    margin: -3px 0 0 -3px; }\n\n.colorpicker-hue,\n.colorpicker-alpha {\n  position: relative;\n  width: 16px;\n  height: 126px;\n  float: left;\n  cursor: row-resize;\n  margin-left: 6px;\n  margin-bottom: 6px; }\n\n.colorpicker-alpha-color {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%; }\n\n.colorpicker-hue,\n.colorpicker-alpha-color {\n  -webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2);\n          box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2); }\n\n.colorpicker-hue .colorpicker-guide,\n.colorpicker-alpha .colorpicker-guide {\n  display: block;\n  height: 4px;\n  background: rgba(255, 255, 255, 0.8);\n  border: 1px solid rgba(0, 0, 0, 0.4);\n  position: absolute;\n  top: 0;\n  left: 0;\n  margin-left: -2px;\n  margin-top: -2px;\n  right: -2px;\n  z-index: 1; }\n\n.colorpicker-hue {\n  /* FF3.6+ */\n  /* Chrome,Safari4+ */\n  /* Chrome10+,Safari5.1+ */\n  /* Opera 11.10+ */\n  /* IE10+ */\n  background: -webkit-gradient(linear, left bottom, left top, from(red), color-stop(8%, #ff8000), color-stop(17%, yellow), color-stop(25%, #80ff00), color-stop(33%, lime), color-stop(42%, #00ff80), color-stop(50%, cyan), color-stop(58%, #0080ff), color-stop(67%, blue), color-stop(75%, #8000ff), color-stop(83%, magenta), color-stop(92%, #ff0080), to(red));\n  background: linear-gradient(to top, red 0%, #ff8000 8%, yellow 17%, #80ff00 25%, lime 33%, #00ff80 42%, cyan 50%, #0080ff 58%, blue 67%, #8000ff 75%, magenta 83%, #ff0080 92%, red 100%);\n  /* W3C */ }\n\n.colorpicker-alpha {\n  background: linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), white;\n  background-size: 10px 10px;\n  background-position: 0 0, 5px 5px;\n  display: none; }\n\n.colorpicker-bar {\n  min-height: 16px;\n  margin: 6px 0 0 0;\n  clear: both;\n  text-align: center;\n  font-size: 10px;\n  line-height: normal;\n  max-width: 100%;\n  -webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2);\n          box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2); }\n  .colorpicker-bar:before {\n    content: \"\";\n    display: table;\n    clear: both; }\n\n.colorpicker-bar.colorpicker-bar-horizontal {\n  height: 126px;\n  width: 16px;\n  margin: 0 0 6px 0;\n  float: left; }\n\n.colorpicker-input-addon {\n  position: relative; }\n\n.colorpicker-input-addon i {\n  display: inline-block;\n  cursor: pointer;\n  vertical-align: text-top;\n  height: 16px;\n  width: 16px;\n  position: relative; }\n\n.colorpicker-input-addon:before {\n  content: \"\";\n  position: absolute;\n  width: 16px;\n  height: 16px;\n  display: inline-block;\n  vertical-align: text-top;\n  background: linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), white;\n  background-size: 10px 10px;\n  background-position: 0 0, 5px 5px; }\n\n.colorpicker.colorpicker-inline {\n  position: relative;\n  display: inline-block;\n  float: none;\n  z-index: auto;\n  vertical-align: text-bottom; }\n\n.colorpicker.colorpicker-horizontal {\n  width: 126px;\n  height: auto; }\n\n.colorpicker.colorpicker-horizontal .colorpicker-bar {\n  width: 126px; }\n\n.colorpicker.colorpicker-horizontal .colorpicker-saturation {\n  float: none;\n  margin-bottom: 0; }\n\n.colorpicker.colorpicker-horizontal .colorpicker-hue,\n.colorpicker.colorpicker-horizontal .colorpicker-alpha {\n  float: none;\n  width: 126px;\n  height: 16px;\n  cursor: col-resize;\n  margin-left: 0;\n  margin-top: 6px;\n  margin-bottom: 0; }\n\n.colorpicker.colorpicker-horizontal .colorpicker-hue .colorpicker-guide,\n.colorpicker.colorpicker-horizontal .colorpicker-alpha .colorpicker-guide {\n  position: absolute;\n  display: block;\n  bottom: -2px;\n  left: 0;\n  right: auto;\n  height: auto;\n  width: 4px; }\n\n.colorpicker.colorpicker-horizontal .colorpicker-hue {\n  /* FF3.6+ */\n  /* Chrome,Safari4+ */\n  /* Chrome10+,Safari5.1+ */\n  /* Opera 11.10+ */\n  /* IE10+ */\n  background: -webkit-gradient(linear, right top, left top, from(red), color-stop(8%, #ff8000), color-stop(17%, yellow), color-stop(25%, #80ff00), color-stop(33%, lime), color-stop(42%, #00ff80), color-stop(50%, cyan), color-stop(58%, #0080ff), color-stop(67%, blue), color-stop(75%, #8000ff), color-stop(83%, magenta), color-stop(92%, #ff0080), to(red));\n  background: linear-gradient(to left, red 0%, #ff8000 8%, yellow 17%, #80ff00 25%, lime 33%, #00ff80 42%, cyan 50%, #0080ff 58%, blue 67%, #8000ff 75%, magenta 83%, #ff0080 92%, red 100%);\n  /* W3C */ }\n\n.colorpicker.colorpicker-horizontal .colorpicker-alpha {\n  background: linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), white;\n  background-size: 10px 10px;\n  background-position: 0 0, 5px 5px; }\n\n.colorpicker-inline:before,\n.colorpicker-no-arrow:before,\n.colorpicker-popup.colorpicker-bs-popover-content:before {\n  content: none;\n  display: none; }\n\n.colorpicker-inline:after,\n.colorpicker-no-arrow:after,\n.colorpicker-popup.colorpicker-bs-popover-content:after {\n  content: none;\n  display: none; }\n\n.colorpicker-alpha,\n.colorpicker-saturation,\n.colorpicker-hue {\n  -webkit-user-select: none;\n     -moz-user-select: none;\n      -ms-user-select: none;\n          user-select: none; }\n\n.colorpicker.colorpicker-visible,\n.colorpicker-alpha.colorpicker-visible,\n.colorpicker-saturation.colorpicker-visible,\n.colorpicker-hue.colorpicker-visible,\n.colorpicker-bar.colorpicker-visible {\n  display: block; }\n\n.colorpicker.colorpicker-hidden,\n.colorpicker-alpha.colorpicker-hidden,\n.colorpicker-saturation.colorpicker-hidden,\n.colorpicker-hue.colorpicker-hidden,\n.colorpicker-bar.colorpicker-hidden {\n  display: none; }\n\n.colorpicker-inline.colorpicker-visible {\n  display: inline-block; }\n\n.colorpicker.colorpicker-disabled:after {\n  border: none;\n  content: '';\n  display: block;\n  width: 100%;\n  height: 100%;\n  background: rgba(233, 236, 239, 0.33);\n  top: 0;\n  left: 0;\n  right: auto;\n  z-index: 2;\n  position: absolute; }\n\n.colorpicker.colorpicker-disabled .colorpicker-guide {\n  display: none; }\n\n/** EXTENSIONS **/\n.colorpicker-preview {\n  background: linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), white;\n  background-size: 10px 10px;\n  background-position: 0 0, 5px 5px; }\n\n.colorpicker-preview > div {\n  position: absolute;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%; }\n\n.colorpicker-bar.colorpicker-swatches {\n  -webkit-box-shadow: none;\n          box-shadow: none;\n  height: auto; }\n\n.colorpicker-swatches--inner {\n  clear: both;\n  margin-top: -6px; }\n\n.colorpicker-swatch {\n  position: relative;\n  cursor: pointer;\n  float: left;\n  height: 16px;\n  width: 16px;\n  margin-right: 6px;\n  margin-top: 6px;\n  margin-left: 0;\n  display: block;\n  -webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2);\n          box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2);\n  background: linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), white;\n  background-size: 10px 10px;\n  background-position: 0 0, 5px 5px; }\n\n.colorpicker-swatch--inner {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%; }\n\n.colorpicker-swatch:nth-of-type(7n+0) {\n  margin-right: 0; }\n\n.colorpicker-with-alpha .colorpicker-swatch:nth-of-type(7n+0) {\n  margin-right: 6px; }\n\n.colorpicker-with-alpha .colorpicker-swatch:nth-of-type(8n+0) {\n  margin-right: 0; }\n\n.colorpicker-horizontal .colorpicker-swatch:nth-of-type(6n+0) {\n  margin-right: 0; }\n\n.colorpicker-horizontal .colorpicker-swatch:nth-of-type(7n+0) {\n  margin-right: 6px; }\n\n.colorpicker-horizontal .colorpicker-swatch:nth-of-type(8n+0) {\n  margin-right: 6px; }\n\n.colorpicker-swatch:last-of-type:after {\n  content: \"\";\n  display: table;\n  clear: both; }\n\n*[dir='rtl'] .colorpicker-element input,\n.colorpicker-element[dir='rtl'] input,\n.colorpicker-element input[dir='rtl'] {\n  direction: ltr;\n  text-align: right; }\n\n/*# sourceMappingURL=bootstrap-colorpicker.css.map */\n"]}
\ No newline at end of file
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-colorpicker/css/bootstrap-colorpicker.css
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-colorpicker/css/bootstrap-colorpicker.css	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-colorpicker/css/bootstrap-colorpicker.css	(revision 3762)
@@ -0,0 +1,399 @@
+/*!
+ * Bootstrap Colorpicker - Bootstrap Colorpicker is a modular color picker plugin for Bootstrap 4.
+ * @package bootstrap-colorpicker
+ * @version v3.4.0
+ * @license MIT
+ * @link https://itsjavi.com/bootstrap-colorpicker/
+ * @link https://github.com/itsjavi/bootstrap-colorpicker.git
+ */
+.colorpicker {
+  position: relative;
+  display: none;
+  font-size: inherit;
+  color: inherit;
+  text-align: left;
+  list-style: none;
+  background-color: #ffffff;
+  background-clip: padding-box;
+  border: 1px solid rgba(0, 0, 0, 0.2);
+  padding: .75rem .75rem;
+  width: 148px;
+  border-radius: 4px;
+  -webkit-box-sizing: content-box;
+          box-sizing: content-box; }
+
+.colorpicker.colorpicker-disabled,
+.colorpicker.colorpicker-disabled * {
+  cursor: default !important; }
+
+.colorpicker div {
+  position: relative; }
+
+.colorpicker-popup {
+  position: absolute;
+  top: 100%;
+  left: 0;
+  float: left;
+  margin-top: 1px;
+  z-index: 1060; }
+
+.colorpicker-popup.colorpicker-bs-popover-content {
+  position: relative;
+  top: auto;
+  left: auto;
+  float: none;
+  margin: 0;
+  z-index: initial;
+  border: none;
+  padding: 0.25rem 0;
+  border-radius: 0;
+  background: none;
+  -webkit-box-shadow: none;
+          box-shadow: none; }
+
+.colorpicker:before,
+.colorpicker:after {
+  content: "";
+  display: table;
+  clear: both;
+  line-height: 0; }
+
+.colorpicker-clear {
+  clear: both;
+  display: block; }
+
+.colorpicker:before {
+  content: '';
+  display: inline-block;
+  border-left: 7px solid transparent;
+  border-right: 7px solid transparent;
+  border-bottom: 7px solid #ccc;
+  border-bottom-color: rgba(0, 0, 0, 0.2);
+  position: absolute;
+  top: -7px;
+  left: auto;
+  right: 6px; }
+
+.colorpicker:after {
+  content: '';
+  display: inline-block;
+  border-left: 6px solid transparent;
+  border-right: 6px solid transparent;
+  border-bottom: 6px solid #ffffff;
+  position: absolute;
+  top: -6px;
+  left: auto;
+  right: 7px; }
+
+.colorpicker.colorpicker-with-alpha {
+  width: 170px; }
+
+.colorpicker.colorpicker-with-alpha .colorpicker-alpha {
+  display: block; }
+
+.colorpicker-saturation {
+  position: relative;
+  width: 126px;
+  height: 126px;
+  /* FF3.6+ */
+  /* Chrome,Safari4+ */
+  /* Chrome10+,Safari5.1+ */
+  /* Opera 11.10+ */
+  /* IE10+ */
+  background: -webkit-gradient(linear, left top, left bottom, from(transparent), to(black)), -webkit-gradient(linear, left top, right top, from(white), to(rgba(255, 255, 255, 0)));
+  background: linear-gradient(to bottom, transparent 0%, black 100%), linear-gradient(to right, white 0%, rgba(255, 255, 255, 0) 100%);
+  /* W3C */
+  cursor: crosshair;
+  float: left;
+  -webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2);
+          box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2);
+  margin-bottom: 6px; }
+  .colorpicker-saturation .colorpicker-guide {
+    display: block;
+    height: 6px;
+    width: 6px;
+    border-radius: 6px;
+    border: 1px solid #000;
+    -webkit-box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.8);
+            box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.8);
+    position: absolute;
+    top: 0;
+    left: 0;
+    margin: -3px 0 0 -3px; }
+
+.colorpicker-hue,
+.colorpicker-alpha {
+  position: relative;
+  width: 16px;
+  height: 126px;
+  float: left;
+  cursor: row-resize;
+  margin-left: 6px;
+  margin-bottom: 6px; }
+
+.colorpicker-alpha-color {
+  position: absolute;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%; }
+
+.colorpicker-hue,
+.colorpicker-alpha-color {
+  -webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2);
+          box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2); }
+
+.colorpicker-hue .colorpicker-guide,
+.colorpicker-alpha .colorpicker-guide {
+  display: block;
+  height: 4px;
+  background: rgba(255, 255, 255, 0.8);
+  border: 1px solid rgba(0, 0, 0, 0.4);
+  position: absolute;
+  top: 0;
+  left: 0;
+  margin-left: -2px;
+  margin-top: -2px;
+  right: -2px;
+  z-index: 1; }
+
+.colorpicker-hue {
+  /* FF3.6+ */
+  /* Chrome,Safari4+ */
+  /* Chrome10+,Safari5.1+ */
+  /* Opera 11.10+ */
+  /* IE10+ */
+  background: -webkit-gradient(linear, left bottom, left top, from(red), color-stop(8%, #ff8000), color-stop(17%, yellow), color-stop(25%, #80ff00), color-stop(33%, lime), color-stop(42%, #00ff80), color-stop(50%, cyan), color-stop(58%, #0080ff), color-stop(67%, blue), color-stop(75%, #8000ff), color-stop(83%, magenta), color-stop(92%, #ff0080), to(red));
+  background: linear-gradient(to top, red 0%, #ff8000 8%, yellow 17%, #80ff00 25%, lime 33%, #00ff80 42%, cyan 50%, #0080ff 58%, blue 67%, #8000ff 75%, magenta 83%, #ff0080 92%, red 100%);
+  /* W3C */ }
+
+.colorpicker-alpha {
+  background: linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), white;
+  background-size: 10px 10px;
+  background-position: 0 0, 5px 5px;
+  display: none; }
+
+.colorpicker-bar {
+  min-height: 16px;
+  margin: 6px 0 0 0;
+  clear: both;
+  text-align: center;
+  font-size: 10px;
+  line-height: normal;
+  max-width: 100%;
+  -webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2);
+          box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2); }
+  .colorpicker-bar:before {
+    content: "";
+    display: table;
+    clear: both; }
+
+.colorpicker-bar.colorpicker-bar-horizontal {
+  height: 126px;
+  width: 16px;
+  margin: 0 0 6px 0;
+  float: left; }
+
+.colorpicker-input-addon {
+  position: relative; }
+
+.colorpicker-input-addon i {
+  display: inline-block;
+  cursor: pointer;
+  vertical-align: text-top;
+  height: 16px;
+  width: 16px;
+  position: relative; }
+
+.colorpicker-input-addon:before {
+  content: "";
+  position: absolute;
+  width: 16px;
+  height: 16px;
+  display: inline-block;
+  vertical-align: text-top;
+  background: linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), white;
+  background-size: 10px 10px;
+  background-position: 0 0, 5px 5px; }
+
+.colorpicker.colorpicker-inline {
+  position: relative;
+  display: inline-block;
+  float: none;
+  z-index: auto;
+  vertical-align: text-bottom; }
+
+.colorpicker.colorpicker-horizontal {
+  width: 126px;
+  height: auto; }
+
+.colorpicker.colorpicker-horizontal .colorpicker-bar {
+  width: 126px; }
+
+.colorpicker.colorpicker-horizontal .colorpicker-saturation {
+  float: none;
+  margin-bottom: 0; }
+
+.colorpicker.colorpicker-horizontal .colorpicker-hue,
+.colorpicker.colorpicker-horizontal .colorpicker-alpha {
+  float: none;
+  width: 126px;
+  height: 16px;
+  cursor: col-resize;
+  margin-left: 0;
+  margin-top: 6px;
+  margin-bottom: 0; }
+
+.colorpicker.colorpicker-horizontal .colorpicker-hue .colorpicker-guide,
+.colorpicker.colorpicker-horizontal .colorpicker-alpha .colorpicker-guide {
+  position: absolute;
+  display: block;
+  bottom: -2px;
+  left: 0;
+  right: auto;
+  height: auto;
+  width: 4px; }
+
+.colorpicker.colorpicker-horizontal .colorpicker-hue {
+  /* FF3.6+ */
+  /* Chrome,Safari4+ */
+  /* Chrome10+,Safari5.1+ */
+  /* Opera 11.10+ */
+  /* IE10+ */
+  background: -webkit-gradient(linear, right top, left top, from(red), color-stop(8%, #ff8000), color-stop(17%, yellow), color-stop(25%, #80ff00), color-stop(33%, lime), color-stop(42%, #00ff80), color-stop(50%, cyan), color-stop(58%, #0080ff), color-stop(67%, blue), color-stop(75%, #8000ff), color-stop(83%, magenta), color-stop(92%, #ff0080), to(red));
+  background: linear-gradient(to left, red 0%, #ff8000 8%, yellow 17%, #80ff00 25%, lime 33%, #00ff80 42%, cyan 50%, #0080ff 58%, blue 67%, #8000ff 75%, magenta 83%, #ff0080 92%, red 100%);
+  /* W3C */ }
+
+.colorpicker.colorpicker-horizontal .colorpicker-alpha {
+  background: linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), white;
+  background-size: 10px 10px;
+  background-position: 0 0, 5px 5px; }
+
+.colorpicker-inline:before,
+.colorpicker-no-arrow:before,
+.colorpicker-popup.colorpicker-bs-popover-content:before {
+  content: none;
+  display: none; }
+
+.colorpicker-inline:after,
+.colorpicker-no-arrow:after,
+.colorpicker-popup.colorpicker-bs-popover-content:after {
+  content: none;
+  display: none; }
+
+.colorpicker-alpha,
+.colorpicker-saturation,
+.colorpicker-hue {
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none; }
+
+.colorpicker.colorpicker-visible,
+.colorpicker-alpha.colorpicker-visible,
+.colorpicker-saturation.colorpicker-visible,
+.colorpicker-hue.colorpicker-visible,
+.colorpicker-bar.colorpicker-visible {
+  display: block; }
+
+.colorpicker.colorpicker-hidden,
+.colorpicker-alpha.colorpicker-hidden,
+.colorpicker-saturation.colorpicker-hidden,
+.colorpicker-hue.colorpicker-hidden,
+.colorpicker-bar.colorpicker-hidden {
+  display: none; }
+
+.colorpicker-inline.colorpicker-visible {
+  display: inline-block; }
+
+.colorpicker.colorpicker-disabled:after {
+  border: none;
+  content: '';
+  display: block;
+  width: 100%;
+  height: 100%;
+  background: rgba(233, 236, 239, 0.33);
+  top: 0;
+  left: 0;
+  right: auto;
+  z-index: 2;
+  position: absolute; }
+
+.colorpicker.colorpicker-disabled .colorpicker-guide {
+  display: none; }
+
+/** EXTENSIONS **/
+.colorpicker-preview {
+  background: linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), white;
+  background-size: 10px 10px;
+  background-position: 0 0, 5px 5px; }
+
+.colorpicker-preview > div {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 100%;
+  height: 100%; }
+
+.colorpicker-bar.colorpicker-swatches {
+  -webkit-box-shadow: none;
+          box-shadow: none;
+  height: auto; }
+
+.colorpicker-swatches--inner {
+  clear: both;
+  margin-top: -6px; }
+
+.colorpicker-swatch {
+  position: relative;
+  cursor: pointer;
+  float: left;
+  height: 16px;
+  width: 16px;
+  margin-right: 6px;
+  margin-top: 6px;
+  margin-left: 0;
+  display: block;
+  -webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2);
+          box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2);
+  background: linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), linear-gradient(45deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.1) 75%, rgba(0, 0, 0, 0.1) 0), white;
+  background-size: 10px 10px;
+  background-position: 0 0, 5px 5px; }
+
+.colorpicker-swatch--inner {
+  position: absolute;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%; }
+
+.colorpicker-swatch:nth-of-type(7n+0) {
+  margin-right: 0; }
+
+.colorpicker-with-alpha .colorpicker-swatch:nth-of-type(7n+0) {
+  margin-right: 6px; }
+
+.colorpicker-with-alpha .colorpicker-swatch:nth-of-type(8n+0) {
+  margin-right: 0; }
+
+.colorpicker-horizontal .colorpicker-swatch:nth-of-type(6n+0) {
+  margin-right: 0; }
+
+.colorpicker-horizontal .colorpicker-swatch:nth-of-type(7n+0) {
+  margin-right: 6px; }
+
+.colorpicker-horizontal .colorpicker-swatch:nth-of-type(8n+0) {
+  margin-right: 6px; }
+
+.colorpicker-swatch:last-of-type:after {
+  content: "";
+  display: table;
+  clear: both; }
+
+*[dir='rtl'] .colorpicker-element input,
+.colorpicker-element[dir='rtl'] input,
+.colorpicker-element input[dir='rtl'] {
+  direction: ltr;
+  text-align: right; }
+
+/*# sourceMappingURL=bootstrap-colorpicker.css.map */
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-colorpicker/css/bootstrap-colorpicker.min.css
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-colorpicker/css/bootstrap-colorpicker.min.css	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-colorpicker/css/bootstrap-colorpicker.min.css	(revision 3762)
@@ -0,0 +1,10 @@
+/*!
+ * Bootstrap Colorpicker - Bootstrap Colorpicker is a modular color picker plugin for Bootstrap 4.
+ * @package bootstrap-colorpicker
+ * @version v3.4.0
+ * @license MIT
+ * @link https://itsjavi.com/bootstrap-colorpicker/
+ * @link https://github.com/itsjavi/bootstrap-colorpicker.git
+ */
+.colorpicker{position:relative;display:none;font-size:inherit;color:inherit;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);padding:.75rem .75rem;width:148px;border-radius:4px;-webkit-box-sizing:content-box;box-sizing:content-box}.colorpicker.colorpicker-disabled,.colorpicker.colorpicker-disabled *{cursor:default!important}.colorpicker div{position:relative}.colorpicker-popup{position:absolute;top:100%;left:0;float:left;margin-top:1px;z-index:1060}.colorpicker-popup.colorpicker-bs-popover-content{position:relative;top:auto;left:auto;float:none;margin:0;z-index:initial;border:none;padding:.25rem 0;border-radius:0;background:0 0;-webkit-box-shadow:none;box-shadow:none}.colorpicker:after,.colorpicker:before{content:"";display:table;clear:both;line-height:0}.colorpicker-clear{clear:both;display:block}.colorpicker:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0,0,0,.2);position:absolute;top:-7px;left:auto;right:6px}.colorpicker:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;position:absolute;top:-6px;left:auto;right:7px}.colorpicker.colorpicker-with-alpha{width:170px}.colorpicker.colorpicker-with-alpha .colorpicker-alpha{display:block}.colorpicker-saturation{position:relative;width:126px;height:126px;background:-webkit-gradient(linear,left top,left bottom,from(transparent),to(black)),-webkit-gradient(linear,left top,right top,from(white),to(rgba(255,255,255,0)));background:linear-gradient(to bottom,transparent 0,#000 100%),linear-gradient(to right,#fff 0,rgba(255,255,255,0) 100%);cursor:crosshair;float:left;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.2);box-shadow:0 0 0 1px rgba(0,0,0,.2);margin-bottom:6px}.colorpicker-saturation .colorpicker-guide{display:block;height:6px;width:6px;border-radius:6px;border:1px solid #000;-webkit-box-shadow:0 0 0 1px rgba(255,255,255,.8);box-shadow:0 0 0 1px rgba(255,255,255,.8);position:absolute;top:0;left:0;margin:-3px 0 0 -3px}.colorpicker-alpha,.colorpicker-hue{position:relative;width:16px;height:126px;float:left;cursor:row-resize;margin-left:6px;margin-bottom:6px}.colorpicker-alpha-color{position:absolute;top:0;left:0;width:100%;height:100%}.colorpicker-alpha-color,.colorpicker-hue{-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.2);box-shadow:0 0 0 1px rgba(0,0,0,.2)}.colorpicker-alpha .colorpicker-guide,.colorpicker-hue .colorpicker-guide{display:block;height:4px;background:rgba(255,255,255,.8);border:1px solid rgba(0,0,0,.4);position:absolute;top:0;left:0;margin-left:-2px;margin-top:-2px;right:-2px;z-index:1}.colorpicker-hue{background:-webkit-gradient(linear,left bottom,left top,from(red),color-stop(8%,#ff8000),color-stop(17%,#ff0),color-stop(25%,#80ff00),color-stop(33%,#0f0),color-stop(42%,#00ff80),color-stop(50%,#0ff),color-stop(58%,#0080ff),color-stop(67%,#00f),color-stop(75%,#8000ff),color-stop(83%,#ff00ff),color-stop(92%,#ff0080),to(red));background:linear-gradient(to top,red 0,#ff8000 8%,#ff0 17%,#80ff00 25%,#0f0 33%,#00ff80 42%,#0ff 50%,#0080ff 58%,#00f 67%,#8000ff 75%,#ff00ff 83%,#ff0080 92%,red 100%)}.colorpicker-alpha{background:linear-gradient(45deg,rgba(0,0,0,.1) 25%,transparent 25%,transparent 75%,rgba(0,0,0,.1) 75%,rgba(0,0,0,.1) 0),linear-gradient(45deg,rgba(0,0,0,.1) 25%,transparent 25%,transparent 75%,rgba(0,0,0,.1) 75%,rgba(0,0,0,.1) 0),#fff;background-size:10px 10px;background-position:0 0,5px 5px;display:none}.colorpicker-bar{min-height:16px;margin:6px 0 0 0;clear:both;text-align:center;font-size:10px;line-height:normal;max-width:100%;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.2);box-shadow:0 0 0 1px rgba(0,0,0,.2)}.colorpicker-bar:before{content:"";display:table;clear:both}.colorpicker-bar.colorpicker-bar-horizontal{height:126px;width:16px;margin:0 0 6px 0;float:left}.colorpicker-input-addon{position:relative}.colorpicker-input-addon i{display:inline-block;cursor:pointer;vertical-align:text-top;height:16px;width:16px;position:relative}.colorpicker-input-addon:before{content:"";position:absolute;width:16px;height:16px;display:inline-block;vertical-align:text-top;background:linear-gradient(45deg,rgba(0,0,0,.1) 25%,transparent 25%,transparent 75%,rgba(0,0,0,.1) 75%,rgba(0,0,0,.1) 0),linear-gradient(45deg,rgba(0,0,0,.1) 25%,transparent 25%,transparent 75%,rgba(0,0,0,.1) 75%,rgba(0,0,0,.1) 0),#fff;background-size:10px 10px;background-position:0 0,5px 5px}.colorpicker.colorpicker-inline{position:relative;display:inline-block;float:none;z-index:auto;vertical-align:text-bottom}.colorpicker.colorpicker-horizontal{width:126px;height:auto}.colorpicker.colorpicker-horizontal .colorpicker-bar{width:126px}.colorpicker.colorpicker-horizontal .colorpicker-saturation{float:none;margin-bottom:0}.colorpicker.colorpicker-horizontal .colorpicker-alpha,.colorpicker.colorpicker-horizontal .colorpicker-hue{float:none;width:126px;height:16px;cursor:col-resize;margin-left:0;margin-top:6px;margin-bottom:0}.colorpicker.colorpicker-horizontal .colorpicker-alpha .colorpicker-guide,.colorpicker.colorpicker-horizontal .colorpicker-hue .colorpicker-guide{position:absolute;display:block;bottom:-2px;left:0;right:auto;height:auto;width:4px}.colorpicker.colorpicker-horizontal .colorpicker-hue{background:-webkit-gradient(linear,right top,left top,from(red),color-stop(8%,#ff8000),color-stop(17%,#ff0),color-stop(25%,#80ff00),color-stop(33%,#0f0),color-stop(42%,#00ff80),color-stop(50%,#0ff),color-stop(58%,#0080ff),color-stop(67%,#00f),color-stop(75%,#8000ff),color-stop(83%,#ff00ff),color-stop(92%,#ff0080),to(red));background:linear-gradient(to left,red 0,#ff8000 8%,#ff0 17%,#80ff00 25%,#0f0 33%,#00ff80 42%,#0ff 50%,#0080ff 58%,#00f 67%,#8000ff 75%,#ff00ff 83%,#ff0080 92%,red 100%)}.colorpicker.colorpicker-horizontal .colorpicker-alpha{background:linear-gradient(45deg,rgba(0,0,0,.1) 25%,transparent 25%,transparent 75%,rgba(0,0,0,.1) 75%,rgba(0,0,0,.1) 0),linear-gradient(45deg,rgba(0,0,0,.1) 25%,transparent 25%,transparent 75%,rgba(0,0,0,.1) 75%,rgba(0,0,0,.1) 0),#fff;background-size:10px 10px;background-position:0 0,5px 5px}.colorpicker-inline:before,.colorpicker-no-arrow:before,.colorpicker-popup.colorpicker-bs-popover-content:before{content:none;display:none}.colorpicker-inline:after,.colorpicker-no-arrow:after,.colorpicker-popup.colorpicker-bs-popover-content:after{content:none;display:none}.colorpicker-alpha,.colorpicker-hue,.colorpicker-saturation{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.colorpicker-alpha.colorpicker-visible,.colorpicker-bar.colorpicker-visible,.colorpicker-hue.colorpicker-visible,.colorpicker-saturation.colorpicker-visible,.colorpicker.colorpicker-visible{display:block}.colorpicker-alpha.colorpicker-hidden,.colorpicker-bar.colorpicker-hidden,.colorpicker-hue.colorpicker-hidden,.colorpicker-saturation.colorpicker-hidden,.colorpicker.colorpicker-hidden{display:none}.colorpicker-inline.colorpicker-visible{display:inline-block}.colorpicker.colorpicker-disabled:after{border:none;content:'';display:block;width:100%;height:100%;background:rgba(233,236,239,.33);top:0;left:0;right:auto;z-index:2;position:absolute}.colorpicker.colorpicker-disabled .colorpicker-guide{display:none}.colorpicker-preview{background:linear-gradient(45deg,rgba(0,0,0,.1) 25%,transparent 25%,transparent 75%,rgba(0,0,0,.1) 75%,rgba(0,0,0,.1) 0),linear-gradient(45deg,rgba(0,0,0,.1) 25%,transparent 25%,transparent 75%,rgba(0,0,0,.1) 75%,rgba(0,0,0,.1) 0),#fff;background-size:10px 10px;background-position:0 0,5px 5px}.colorpicker-preview>div{position:absolute;left:0;top:0;width:100%;height:100%}.colorpicker-bar.colorpicker-swatches{-webkit-box-shadow:none;box-shadow:none;height:auto}.colorpicker-swatches--inner{clear:both;margin-top:-6px}.colorpicker-swatch{position:relative;cursor:pointer;float:left;height:16px;width:16px;margin-right:6px;margin-top:6px;margin-left:0;display:block;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.2);box-shadow:0 0 0 1px rgba(0,0,0,.2);background:linear-gradient(45deg,rgba(0,0,0,.1) 25%,transparent 25%,transparent 75%,rgba(0,0,0,.1) 75%,rgba(0,0,0,.1) 0),linear-gradient(45deg,rgba(0,0,0,.1) 25%,transparent 25%,transparent 75%,rgba(0,0,0,.1) 75%,rgba(0,0,0,.1) 0),#fff;background-size:10px 10px;background-position:0 0,5px 5px}.colorpicker-swatch--inner{position:absolute;top:0;left:0;width:100%;height:100%}.colorpicker-swatch:nth-of-type(7n+0){margin-right:0}.colorpicker-with-alpha .colorpicker-swatch:nth-of-type(7n+0){margin-right:6px}.colorpicker-with-alpha .colorpicker-swatch:nth-of-type(8n+0){margin-right:0}.colorpicker-horizontal .colorpicker-swatch:nth-of-type(6n+0){margin-right:0}.colorpicker-horizontal .colorpicker-swatch:nth-of-type(7n+0){margin-right:6px}.colorpicker-horizontal .colorpicker-swatch:nth-of-type(8n+0){margin-right:6px}.colorpicker-swatch:last-of-type:after{content:"";display:table;clear:both}.colorpicker-element input[dir=rtl],.colorpicker-element[dir=rtl] input,[dir=rtl] .colorpicker-element input{direction:ltr;text-align:right}
+/*# sourceMappingURL=bootstrap-colorpicker.min.css.map */
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-colorpicker/README.md
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-colorpicker/README.md	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-colorpicker/README.md	(revision 3762)
@@ -0,0 +1,160 @@
+<a class="readme-logo" href="https://itsjavi.com/bootstrap-colorpicker">
+    <img alt="Logo by @reallinfo" src="logo.png" width="128px" />
+</a>
+
+# Bootstrap Colorpicker
+
+<!--version-->
+
+[Bootstrap Colorpicker](https://github.com/itsjavi/bootstrap-colorpicker/) is a modular color picker plugin for Bootstrap 4.
+
+[![Build Status](https://img.shields.io/travis/itsjavi/bootstrap-colorpicker/master.svg?style=flat-square)](https://travis-ci.org/itsjavi/bootstrap-colorpicker)
+[![npm](https://img.shields.io/npm/v/bootstrap-colorpicker.svg?style=flat-square)](https://www.npmjs.com/package/bootstrap-colorpicker)
+
+## Install
+You can get the latest version in many different ways:
+
+- Downloading the tarball from npm the registry: https://registry.npmjs.org/bootstrap-colorpicker/-/bootstrap-colorpicker-3.2.0.tgz  (you can change the version in the url to any released tag)
+- Cloning using Git: `git clone https://github.com/itsjavi/bootstrap-colorpicker.git`
+- Installing via NPM: `npm install bootstrap-colorpicker`
+- Installing via Yarn: `yarn add bootstrap-colorpicker`
+- Installing via Composer: `composer require itsjavi/bootstrap-colorpicker`
+
+Note that the `dist` files are only distributed via the NPM and Yarn installations.
+
+For the rest methods, you will need to generate the files initializing the project with `yarn install`
+and then building the code using `npm run build`.
+
+## Versions
+
+<table class="table table-bordered table-striped">
+  <thead>
+    <tr>
+        <th>Colorpicker version</th>
+        <th>Compatible Bootstrap version</th>
+        <th>Dependencies</th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr>
+        <td>
+          <a href="https://github.com/itsjavi/bootstrap-colorpicker/tree/v2.x">v2.x</a> <br>
+          <a href="https://itsjavi.com/bootstrap-colorpicker/v2">Documentation</a>
+        </td>
+        <td>Bootstrap 3 or 4</td>
+        <td>
+          <ul>
+            <li>jQuery >= 1.10</li>
+            <li>Bootstrap CSS (input addon)</li>
+          </ul>
+        </td>
+    </tr>
+    <tr>
+        <td>
+          <a href="https://github.com/itsjavi/bootstrap-colorpicker">v3.x</a> <br>
+          <a href="https://itsjavi.com/bootstrap-colorpicker">Documentation</a>
+        </td>
+        <td>Bootstrap 4 or without Bootstrap</td>
+        <td>
+          <ul>
+            <li>jQuery >= 2.1.0</li>
+            <li>Bootstrap CSS (input addon, popover)</li>
+            <li>Bootstrap JS Bundle (popover)</li>
+          </ul>
+        </td>
+    </tr>
+  </thead>
+</table>
+
+
+Note that the plugin may work without Bootstrap if your code is not using any of the mentioned Bootstrap
+dependencies.
+
+
+## Examples
+
+### With Bootstrap
+The Bootstrap JS dependency is optional and it is mainly needed for the popover support.
+No Bootstrap CSS is required for the plugin to work.
+
+```html
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="utf-8">
+  <link href="dist/css/bootstrap-colorpicker.css" rel="stylesheet">
+</head>
+<body>
+  <div class="demo">
+      <h1>Bootstrap Colorpicker Demo (with Bootstrap)</h1>
+      <input id="demo-input" type="text" value="rgb(255, 128, 0)" />
+  </div>
+  <script src="//code.jquery.com/jquery-3.4.1.js"></script>
+  <script src="//unpkg.com/bootstrap@4.3.1/dist/js/bootstrap.bundle.min.js"></script>
+  <script src="dist/js/bootstrap-colorpicker.js"></script>
+  <script>
+    $(function () {
+      // Basic instantiation:
+      $('#demo-input').colorpicker();
+      
+      // Example using an event, to change the color of the #demo div background:
+      $('#demo-input').on('colorpickerChange', function(event) {
+        $('#demo').css('background-color', event.color.toString());
+      });
+    });
+  </script>
+</body>
+```
+
+### Without Bootstrap
+
+To use the plugin without Bootstrap, the `popover` option should be set to `false` or `null` and, depending on your implementation,
+you will usually need to set inline to `true` and a `container` selector option.
+
+```html
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="utf-8">
+  <link href="dist/css/bootstrap-colorpicker.css" rel="stylesheet">
+</head>
+<body>
+  <div id="demo">
+      <h1>Bootstrap Colorpicker Demo (without Bootstrap)</h1>
+    <input type="text" value="rgb(255, 128, 0)" />
+  </div>
+  <script src="//code.jquery.com/jquery-3.4.1.js"></script>
+  <script src="dist/js/bootstrap-colorpicker.js"></script>
+  <script>
+    $(function() {
+      $('#demo').colorpicker({
+        popover: false,
+        inline: true,
+        container: '#demo'
+      });
+    });
+  </script>
+</body>
+```
+
+## Contributions
+* [Issues](https://github.com/itsjavi/bootstrap-colorpicker/issues)
+* [Pull Requests](https://github.com/itsjavi/bootstrap-colorpicker/pulls)
+* [Milestones](https://github.com/itsjavi/bootstrap-colorpicker/milestones)
+
+This project exists thanks to all the [people who contribute](https://github.com/itsjavi/bootstrap-colorpicker/graphs/contributors).
+
+Please read [CONTRIBUTING](https://github.com/itsjavi/bootstrap-colorpicker/blob/master/.github/CONTRIBUTING.md) 
+before sending a pull request or issue.
+
+## License
+The MIT License (MIT).
+Please see the [License File](https://github.com/itsjavi/bootstrap-colorpicker/blob/master/LICENSE) for more information.
+
+## Credits
+
+Written and maintained by [Javi Aguilar](https://itsjavi.com) and all other contributors.
+
+*Based on Stefan Petre's color picker (2013).*
+
+*Thanks to JetBrains for supporting this project.*
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-colorpicker/js/bootstrap-colorpicker.js.map
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-colorpicker/js/bootstrap-colorpicker.js.map	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-colorpicker/js/bootstrap-colorpicker.js.map	(revision 3762)
@@ -0,0 +1 @@
+{"version":3,"sources":["webpack://bootstrap-colorpicker/webpack/universalModuleDefinition","webpack://bootstrap-colorpicker/webpack/bootstrap","webpack://bootstrap-colorpicker/external {\"root\":\"jQuery\",\"commonjs2\":\"jquery\",\"commonjs\":\"jquery\",\"amd\":\"jquery\"}","webpack://bootstrap-colorpicker/./src/js/Extension.js","webpack://bootstrap-colorpicker/./src/js/ColorItem.js","webpack://bootstrap-colorpicker/./src/js/options.js","webpack://bootstrap-colorpicker/./src/js/extensions/Palette.js","webpack://bootstrap-colorpicker/./node_modules/color-name/index.js","webpack://bootstrap-colorpicker/./node_modules/color-convert/conversions.js","webpack://bootstrap-colorpicker/./src/js/plugin.js","webpack://bootstrap-colorpicker/./src/js/Colorpicker.js","webpack://bootstrap-colorpicker/./src/js/extensions/index.js","webpack://bootstrap-colorpicker/./src/js/extensions/Debugger.js","webpack://bootstrap-colorpicker/./src/js/extensions/Preview.js","webpack://bootstrap-colorpicker/./src/js/extensions/Swatches.js","webpack://bootstrap-colorpicker/./src/js/SliderHandler.js","webpack://bootstrap-colorpicker/./src/js/PopupHandler.js","webpack://bootstrap-colorpicker/./src/js/InputHandler.js","webpack://bootstrap-colorpicker/./node_modules/color/index.js","webpack://bootstrap-colorpicker/./node_modules/color-string/index.js","webpack://bootstrap-colorpicker/./node_modules/simple-swizzle/index.js","webpack://bootstrap-colorpicker/./node_modules/is-arrayish/index.js","webpack://bootstrap-colorpicker/./node_modules/color-convert/index.js","webpack://bootstrap-colorpicker/./node_modules/color-convert/route.js","webpack://bootstrap-colorpicker/./src/js/ColorHandler.js","webpack://bootstrap-colorpicker/./src/js/PickerHandler.js","webpack://bootstrap-colorpicker/./src/js/AddonHandler.js"],"names":["Extension","colorpicker","options","element","length","Error","on","$","proxy","onCreate","onDestroy","onUpdate","onChange","onInvalid","onShow","onHide","onEnable","onDisable","color","realColor","event","off","HSVAColor","h","s","v","a","isNaN","ColorItem","fn","args","arguments","_color","result","apply","QixColor","format","_original","disableHexInputFallback","replace","sanitizeFormat","valid","parse","_format","isHex","model","hue","saturation","value","alpha","hasAlpha","toObject","string","round","undefined","str","isValid","isDark","isLight","formula","hues","Array","isArray","colorFormulas","hasOwnProperty","colors","mainColor","forEach","levels","saturationv","push","Math","sanitizeString","e","String","match","toLowerCase","complementary","triad","tetrad","splitcomplement","sassVars","sliderSize","bar_size_short","columns","base_margin","customClass","fallbackColor","horizontal","inline","container","popover","animation","placement","fallbackPlacement","debug","input","addon","autoInputFallback","autoHexInputFallback","useHashPrefix","useAlpha","template","extensions","name","showText","sliders","selector","maxLeft","maxTop","callLeft","callTop","childSelector","slidersHorz","defaults","namesAsValues","Palette","extend","Object","keys","getLength","indexOf","toUpperCase","getValue","getName","defaultValue","plugin","Colorpicker","option","fnArgs","prototype","slice","call","isSingleElement","returnValue","$elements","each","$this","inst","data","isFunction","constructor","colorPickerIdCounter","root","self","colorHandler","pickerHandler","picker","id","lastEvent","alias","addClass","attr","disabled","inputHandler","InputHandler","ColorHandler","sliderHandler","SliderHandler","popupHandler","PopupHandler","PickerHandler","addonHandler","AddonHandler","init","trigger","bind","initExtensions","attach","update","isDisabled","disable","ext","registerExtension","ExtensionClass","config","unbind","removeClass","removeData","show","hide","toggle","val","ch","hasColor","equals","createColor","assureColor","enable","eventName","type","coreExtensions","Debugger","Preview","Swatches","eventCounter","hasInput","onChangeInput","logMessage","debugger","logArgs","log","elementInner","find","append","css","html","toRgbString","barTemplate","swatchTemplate","isEnabled","load","swatchContainer","isAliased","empty","$swatch","$sw","setValue","currentSlider","mousePointer","left","top","onMove","defaultOnMove","slider","cp","getFallbackColor","getClone","guideStyle","focus","sliderClasses","sliderName","join","pressed","moved","released","pageX","pageY","originalEvent","touches","target","zone","closest","is","parent","guide","get","offset","style","preventDefault","max","min","popoverTarget","popoverTip","clicking","hidding","showing","hasAddon","createPopover","reposition","document","onClickingInside","isOrIsInside","currentTarget","isClickingInside","_defaults","content","useGetInstance","window","bootstrap","Popover","getInstance","getTipElement","tip","fireShow","fireHide","isVisible","stopPropagation","isPopover","isHidden","hasClass","_initValue","onkeyup","onchange","map","item","getFormattedColor","prop","inputVal","getColorString","resolveColorDelegate","isInvalidColor","fallbackOnInvalid","isAlphaEnabled","fallback","console","warn","extResolvedColor","resolveColor","hasTransparency","_supportsAlphaBar","pickerParent","appendTo","remove","vertical","saturationGuide","hueGuide","alphaGuide","hsva","toHsvaRatio","getCloneHueOnly","toHexString","hexColor","alphaBg","colorStr","styles","icn","eq"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;QCVA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;AClFA,gD;;;;;;;ACAa;;;;;;;;AAEb;;;;;;;;AAEA;;;IAGMA,S;AACJ;;;;AAIA,qBAAYC,WAAZ,EAAuC;AAAA,QAAdC,OAAc,uEAAJ,EAAI;;AAAA;;AACrC;;;;AAIA,SAAKD,WAAL,GAAmBA,WAAnB;AACA;;;;;AAKA,SAAKC,OAAL,GAAeA,OAAf;;AAEA,QAAI,EAAE,KAAKD,WAAL,CAAiBE,OAAjB,IAA4B,KAAKF,WAAL,CAAiBE,OAAjB,CAAyBC,MAAvD,CAAJ,EAAoE;AAClE,YAAM,IAAIC,KAAJ,CAAU,kDAAV,CAAN;AACD;;AAED,SAAKJ,WAAL,CAAiBE,OAAjB,CAAyBG,EAAzB,CAA4B,mCAA5B,EAAiEC,iBAAEC,KAAF,CAAQ,KAAKC,QAAb,EAAuB,IAAvB,CAAjE;AACA,SAAKR,WAAL,CAAiBE,OAAjB,CAAyBG,EAAzB,CAA4B,oCAA5B,EAAkEC,iBAAEC,KAAF,CAAQ,KAAKE,SAAb,EAAwB,IAAxB,CAAlE;AACA,SAAKT,WAAL,CAAiBE,OAAjB,CAAyBG,EAAzB,CAA4B,mCAA5B,EAAiEC,iBAAEC,KAAF,CAAQ,KAAKG,QAAb,EAAuB,IAAvB,CAAjE;AACA,SAAKV,WAAL,CAAiBE,OAAjB,CAAyBG,EAAzB,CAA4B,mCAA5B,EAAiEC,iBAAEC,KAAF,CAAQ,KAAKI,QAAb,EAAuB,IAAvB,CAAjE;AACA,SAAKX,WAAL,CAAiBE,OAAjB,CAAyBG,EAAzB,CAA4B,oCAA5B,EAAkEC,iBAAEC,KAAF,CAAQ,KAAKK,SAAb,EAAwB,IAAxB,CAAlE;AACA,SAAKZ,WAAL,CAAiBE,OAAjB,CAAyBG,EAAzB,CAA4B,iCAA5B,EAA+DC,iBAAEC,KAAF,CAAQ,KAAKM,MAAb,EAAqB,IAArB,CAA/D;AACA,SAAKb,WAAL,CAAiBE,OAAjB,CAAyBG,EAAzB,CAA4B,iCAA5B,EAA+DC,iBAAEC,KAAF,CAAQ,KAAKO,MAAb,EAAqB,IAArB,CAA/D;AACA,SAAKd,WAAL,CAAiBE,OAAjB,CAAyBG,EAAzB,CAA4B,mCAA5B,EAAiEC,iBAAEC,KAAF,CAAQ,KAAKQ,QAAb,EAAuB,IAAvB,CAAjE;AACA,SAAKf,WAAL,CAAiBE,OAAjB,CAAyBG,EAAzB,CAA4B,oCAA5B,EAAkEC,iBAAEC,KAAF,CAAQ,KAAKS,SAAb,EAAwB,IAAxB,CAAlE;AACD;;AAED;;;;;;;;;;;;;iCASaC,K,EAAyB;AAAA,UAAlBC,SAAkB,uEAAN,IAAM;;AACpC,aAAO,KAAP;AACD;;AAED;;;;;;;;;6BAMSC,K,EAAO,CAEf;AADC;;;AAGF;;;;;;;;;8BAMUA,K,EAAO;AACf,WAAKnB,WAAL,CAAiBE,OAAjB,CAAyBkB,GAAzB,CAA6B,kBAA7B;AACD;;AAED;;;;;;;;;6BAMSD,K,EAAO,CAEf;AADC;;;AAGF;;;;;;;;;6BAMSA,K,EAAO,CAEf;AADC;;;AAGF;;;;;;;;;8BAMUA,K,EAAO,CAEhB;AADC;;;AAGF;;;;;;;;;2BAMOA,K,EAAO,CAEb;AADC;;;AAGF;;;;;;;;;2BAMOA,K,EAAO,CAEb;AADC;;;AAGF;;;;;;;;;8BAMUA,K,EAAO,CAEhB;AADC;;;AAGF;;;;;;;;;6BAMSA,K,EAAO;AACd;AACD;;;;;;kBAGYpB,S;;;;;;;;;;;;;;;qjBChJf;;;;;AAGA;;;;;;;;AAEA;;;;IAIMsB,S;AACJ;;;;;;AAMA,qBAAYC,CAAZ,EAAeC,CAAf,EAAkBC,CAAlB,EAAqBC,CAArB,EAAwB;AAAA;;AACtB,SAAKH,CAAL,GAASI,MAAMJ,CAAN,IAAW,CAAX,GAAeA,CAAxB;AACA,SAAKC,CAAL,GAASG,MAAMH,CAAN,IAAW,CAAX,GAAeA,CAAxB;AACA,SAAKC,CAAL,GAASE,MAAMF,CAAN,IAAW,CAAX,GAAeA,CAAxB;AACA,SAAKC,CAAL,GAASC,MAAMJ,CAAN,IAAW,CAAX,GAAeG,CAAxB;AACD;;;;+BAEU;AACT,aAAU,KAAKH,CAAf,UAAqB,KAAKC,CAA1B,WAAiC,KAAKC,CAAtC,WAA6C,KAAKC,CAAlD;AACD;;;;;;AAGH;;;;;IAGME,S;;;;;AAaJ;;;;;;;;;;;;;;wBAcIC,E,EAAa;AAAA,wCAANC,IAAM;AAANA,YAAM;AAAA;;AACf,UAAIC,UAAU3B,MAAV,KAAqB,CAAzB,EAA4B;AAC1B,eAAO,KAAK4B,MAAZ;AACD;;AAED,UAAIC,SAAS,KAAKD,MAAL,CAAYH,EAAZ,EAAgBK,KAAhB,CAAsB,KAAKF,MAA3B,EAAmCF,IAAnC,CAAb;;AAEA,UAAI,EAAEG,kBAAkBE,eAApB,CAAJ,EAAmC;AACjC;AACA,eAAOF,MAAP;AACD;;AAED,aAAO,IAAIL,SAAJ,CAAcK,MAAd,EAAsB,KAAKG,MAA3B,CAAP;AACD;;AAED;;;;;;;;;wBAMe;AACb,aAAO,KAAKC,SAAZ;AACD;;AAED;;;;;;;;;;AAlDA;;;;;;;wBAOuB;AACrB,aAAOf,SAAP;AACD;;;AA8CD,uBAA0E;AAAA,QAA9DJ,KAA8D,uEAAtD,IAAsD;AAAA,QAAhDkB,MAAgD,uEAAvC,IAAuC;AAAA,QAAjCE,uBAAiC,uEAAP,KAAO;;AAAA;;AACxE,SAAKC,OAAL,CAAarB,KAAb,EAAoBkB,MAApB,EAA4BE,uBAA5B;AACD;;AAED;;;;;;;;;;;;;;4BAUQpB,K,EAAuD;AAAA,UAAhDkB,MAAgD,uEAAvC,IAAuC;AAAA,UAAjCE,uBAAiC,uEAAP,KAAO;;AAC7DF,eAASR,UAAUY,cAAV,CAAyBJ,MAAzB,CAAT;;AAEA;;;;AAIA,WAAKC,SAAL,GAAiB;AACfnB,eAAOA,KADQ;AAEfkB,gBAAQA,MAFO;AAGfK,eAAO;AAHQ,OAAjB;AAKA;;;;AAIA,WAAKT,MAAL,GAAcJ,UAAUc,KAAV,CAAgBxB,KAAhB,EAAuBoB,uBAAvB,CAAd;;AAEA,UAAI,KAAKN,MAAL,KAAgB,IAApB,EAA0B;AACxB,aAAKA,MAAL,GAAc,sBAAd;AACA,aAAKK,SAAL,CAAeI,KAAf,GAAuB,KAAvB;AACA;AACD;;AAED;;;;AAIA,WAAKE,OAAL,GAAeP,SAASA,MAAT,GACZR,UAAUgB,KAAV,CAAgB1B,KAAhB,IAAyB,KAAzB,GAAiC,KAAKc,MAAL,CAAYa,KADhD;AAED;;AAED;;;;;;;;;;;;;;;AA6HA;;;;;8BAKU;AACR,aAAO,KAAKR,SAAL,CAAeI,KAAf,KAAyB,IAAhC;AACD;;AAED;;;;;;;;;;AAwDA;;;;;;gCAMYlB,C,EAAG;AACb,WAAKuB,GAAL,GAAY,CAAC,IAAIvB,CAAL,IAAU,GAAtB;AACD;;AAED;;;;;;;;;;AASA;;;;;;uCAMmBC,C,EAAG;AACpB,WAAKuB,UAAL,GAAmBvB,IAAI,GAAvB;AACD;;AAED;;;;;;;;;;AASA;;;;;;kCAMcC,C,EAAG;AACf,WAAKuB,KAAL,GAAc,CAAC,IAAIvB,CAAL,IAAU,GAAxB;AACD;;AAED;;;;;;;;;;AAUA;;;;;;kCAMcC,C,EAAG;AACf,WAAKuB,KAAL,GAAa,IAAIvB,CAAjB;AACD;;AAED;;;;;;;;;;AASA;;;;;oCAKgB;AACd,aAAO,KAAKqB,UAAL,KAAoB,CAA3B;AACD;;AAED;;;;;;;;oCAKgB;AACd,aAAO,KAAKE,KAAL,KAAe,CAAtB;AACD;;AAED;;;;;;;;sCAKkB;AAChB,aAAO,KAAKC,QAAL,MAAoB,KAAKD,KAAL,GAAa,CAAxC;AACD;;AAED;;;;;;;;+BAKW;AACT,aAAO,CAACtB,MAAM,KAAKsB,KAAX,CAAR;AACD;;AAED;;;;;;;;+BAKW;AACT,aAAO,IAAI3B,SAAJ,CAAc,KAAKwB,GAAnB,EAAwB,KAAKC,UAA7B,EAAyC,KAAKC,KAA9C,EAAqD,KAAKC,KAA1D,CAAP;AACD;;AAED;;;;;;;;6BAKS;AACP,aAAO,KAAKE,QAAL,EAAP;AACD;;AAED;;;;;;;;;;kCAOc;AACZ,aAAO,IAAI7B,SAAJ,CACL,KAAKwB,GAAL,GAAW,GADN,EAEL,KAAKC,UAAL,GAAkB,GAFb,EAGL,KAAKC,KAAL,GAAa,GAHR,EAIL,KAAKC,KAJA,CAAP;AAMD;;AAED;;;;;;;;;+BAMW;AACT,aAAO,KAAKG,MAAL,EAAP;AACD;;AAED;;;;;;;;;;6BAOsB;AAAA,UAAfhB,MAAe,uEAAN,IAAM;;AACpBA,eAASR,UAAUY,cAAV,CAAyBJ,SAASA,MAAT,GAAkB,KAAKA,MAAhD,CAAT;;AAEA,UAAI,CAACA,MAAL,EAAa;AACX,eAAO,KAAKJ,MAAL,CAAYqB,KAAZ,GAAoBD,MAApB,EAAP;AACD;;AAED,UAAI,KAAKpB,MAAL,CAAYI,MAAZ,MAAwBkB,SAA5B,EAAuC;AACrC,cAAM,IAAIjD,KAAJ,kCAAwC+B,MAAxC,QAAN;AACD;;AAED,UAAImB,MAAM,KAAKvB,MAAL,CAAYI,MAAZ,GAAV;;AAEA,aAAOmB,IAAIF,KAAJ,GAAYE,IAAIF,KAAJ,GAAYD,MAAZ,EAAZ,GAAmCG,GAA1C;AACD;;AAED;;;;;;;;;;;;2BASOrC,K,EAAO;AACZA,cAASA,iBAAiBU,SAAlB,GAA+BV,KAA/B,GAAuC,IAAIU,SAAJ,CAAcV,KAAd,CAA/C;;AAEA,UAAI,CAACA,MAAMsC,OAAN,EAAD,IAAoB,CAAC,KAAKA,OAAL,EAAzB,EAAyC;AACvC,eAAO,KAAP;AACD;;AAED,aACE,KAAKV,GAAL,KAAa5B,MAAM4B,GAAnB,IACA,KAAKC,UAAL,KAAoB7B,MAAM6B,UAD1B,IAEA,KAAKC,KAAL,KAAe9B,MAAM8B,KAFrB,IAGA,KAAKC,KAAL,KAAe/B,MAAM+B,KAJvB;AAMD;;AAED;;;;;;;;+BAKW;AACT,aAAO,IAAIrB,SAAJ,CAAc,KAAKI,MAAnB,EAA2B,KAAKI,MAAhC,CAAP;AACD;;AAED;;;;;;;;;sCAMkB;AAChB,aAAO,IAAIR,SAAJ,CAAc,CAAC,KAAKkB,GAAN,EAAW,GAAX,EAAgB,GAAhB,EAAqB,CAArB,CAAd,EAAuC,KAAKV,MAA5C,CAAP;AACD;;AAED;;;;;;;;qCAKiB;AACf,aAAO,IAAIR,SAAJ,CAAc,KAAKI,MAAL,CAAYiB,KAAZ,CAAkB,CAAlB,CAAd,EAAoC,KAAKb,MAAzC,CAAP;AACD;;AAED;;;;;;;;kCAKc;AACZ,aAAO,KAAKgB,MAAL,CAAY,KAAZ,CAAP;AACD;;AAED;;;;;;;;kCAKc;AACZ,aAAO,KAAKA,MAAL,CAAY,KAAZ,CAAP;AACD;;AAED;;;;;;;;kCAKc;AACZ,aAAO,KAAKA,MAAL,CAAY,KAAZ,CAAP;AACD;;AAED;;;;;;;;;6BAMS;AACP,aAAO,KAAKpB,MAAL,CAAYyB,MAAZ,EAAP;AACD;;AAED;;;;;;;;;8BAMU;AACR,aAAO,KAAKzB,MAAL,CAAY0B,OAAZ,EAAP;AACD;;AAED;;;;;;;;;;;;6BASSC,O,EAAS;AAChB,UAAIC,OAAO,EAAX;;AAEA,UAAIC,MAAMC,OAAN,CAAcH,OAAd,CAAJ,EAA4B;AAC1BC,eAAOD,OAAP;AACD,OAFD,MAEO,IAAI,CAAC/B,UAAUmC,aAAV,CAAwBC,cAAxB,CAAuCL,OAAvC,CAAL,EAAsD;AAC3D,cAAM,IAAItD,KAAJ,6CAAmDsD,OAAnD,SAAN;AACD,OAFM,MAEA;AACLC,eAAOhC,UAAUmC,aAAV,CAAwBJ,OAAxB,CAAP;AACD;;AAED,UAAIM,SAAS,EAAb;AAAA,UAAiBC,YAAY,KAAKlC,MAAlC;AAAA,UAA0CI,SAAS,KAAKA,MAAxD;;AAEAwB,WAAKO,OAAL,CAAa,UAAUrB,GAAV,EAAe;AAC1B,YAAIsB,SAAS,CACXtB,MAAO,CAACoB,UAAUpB,GAAV,KAAkBA,GAAnB,IAA0B,GAAjC,GAAwCoB,UAAUpB,GAAV,EAD7B,EAEXoB,UAAUG,WAAV,EAFW,EAGXH,UAAUlB,KAAV,EAHW,EAIXkB,UAAUjB,KAAV,EAJW,CAAb;;AAOAgB,eAAOK,IAAP,CAAY,IAAI1C,SAAJ,CAAcwC,MAAd,EAAsBhC,MAAtB,CAAZ;AACD,OATD;;AAWA,aAAO6B,MAAP;AACD;;;wBA5WS;AACR,aAAO,KAAKjC,MAAL,CAAYc,GAAZ,EAAP;AACD;;AAED;;;;;;;;AAsCA;;;;;sBAKQE,K,EAAO;AACb,WAAKhB,MAAL,GAAc,KAAKA,MAAL,CAAYc,GAAZ,CAAgBE,KAAhB,CAAd;AACD;;;wBAxCgB;AACf,aAAO,KAAKhB,MAAL,CAAYqC,WAAZ,EAAP;AACD;;AAED;;;;;;sBAqDerB,K,EAAO;AACpB,WAAKhB,MAAL,GAAc,KAAKA,MAAL,CAAYqC,WAAZ,CAAwBrB,KAAxB,CAAd;AACD;;;wBAlDW;AACV,aAAO,KAAKhB,MAAL,CAAYgB,KAAZ,EAAP;AACD;;AAED;;;;;;sBA+DUA,K,EAAO;AACf,WAAKhB,MAAL,GAAc,KAAKA,MAAL,CAAYgB,KAAZ,CAAkBA,KAAlB,CAAd;AACD;;;wBA5DW;AACV,UAAItB,IAAI,KAAKM,MAAL,CAAYiB,KAAZ,EAAR;;AAEA,aAAOtB,MAAMD,CAAN,IAAW,CAAX,GAAeA,CAAtB;AACD;;AAED;;;;;;sBAuEUsB,K,EAAO;AACf;AACA,WAAKhB,MAAL,GAAc,KAAKA,MAAL,CAAYiB,KAAZ,CAAkBsB,KAAKlB,KAAL,CAAWL,QAAQ,GAAnB,IAA0B,GAA5C,CAAd;AACD;;;wBArEY;AACX,aAAO,KAAKL,OAAL,GAAe,KAAKA,OAApB,GAA8B,KAAKX,MAAL,CAAYa,KAAjD;AACD,K;sBAoFUG,K,EAAO;AAChB,WAAKL,OAAL,GAAef,UAAUY,cAAV,CAAyBQ,KAAzB,CAAf;AACD;;;0BA/PY9B,K,EAAwC;AAAA,UAAjCoB,uBAAiC,uEAAP,KAAO;;AACnD,UAAIpB,iBAAiBiB,eAArB,EAA+B;AAC7B,eAAOjB,KAAP;AACD;;AAED,UAAIA,iBAAiBU,SAArB,EAAgC;AAC9B,eAAOV,MAAMc,MAAb;AACD;;AAED,UAAII,SAAS,IAAb;;AAEA,UAAIlB,iBAAiBI,SAArB,EAAgC;AAC9BJ,gBAAQ,CAACA,MAAMK,CAAP,EAAUL,MAAMM,CAAhB,EAAmBN,MAAMO,CAAzB,EAA4BE,MAAMT,MAAMQ,CAAZ,IAAiB,CAAjB,GAAqBR,MAAMQ,CAAvD,CAAR;AACD,OAFD,MAEO;AACLR,gBAAQU,UAAU4C,cAAV,CAAyBtD,KAAzB,CAAR;AACD;;AAED,UAAIA,UAAU,IAAd,EAAoB;AAClB,eAAO,IAAP;AACD;;AAED,UAAI2C,MAAMC,OAAN,CAAc5C,KAAd,CAAJ,EAA0B;AACxBkB,iBAAS,KAAT;AACD;;AAED,UAAIR,UAAUgB,KAAV,CAAgB1B,KAAhB,KAA2BA,MAAMd,MAAN,KAAiB,CAAjB,IAAsBc,MAAMd,MAAN,KAAiB,CAAlE,IAAwEkC,uBAA5E,EAAqG;AACnG,eAAO,IAAP;AACD;;AAED,UAAI;AACF,eAAO,qBAASpB,KAAT,EAAgBkB,MAAhB,CAAP;AACD,OAFD,CAEE,OAAOqC,CAAP,EAAU;AACV,eAAO,IAAP;AACD;AACF;;AAED;;;;;;;;;;;;mCASsBlB,G,EAAK;AACzB,UAAI,EAAE,OAAOA,GAAP,KAAe,QAAf,IAA2BA,eAAemB,MAA5C,CAAJ,EAAyD;AACvD,eAAOnB,GAAP;AACD;;AAED,UAAIA,IAAIoB,KAAJ,CAAU,iBAAV,CAAJ,EAAkC;AAChC,qBAAWpB,GAAX;AACD;;AAED,UAAIA,IAAIqB,WAAJ,OAAsB,aAA1B,EAAyC;AACvC,eAAO,WAAP;AACD;;AAED,aAAOrB,GAAP;AACD;;AAED;;;;;;;;;;;;;0BAUaA,G,EAAK;AAChB,UAAI,EAAE,OAAOA,GAAP,KAAe,QAAf,IAA2BA,eAAemB,MAA5C,CAAJ,EAAyD;AACvD,eAAO,KAAP;AACD;;AAED,aAAO,CAAC,CAACnB,IAAIoB,KAAJ,CAAU,mBAAV,CAAT;AACD;;AAED;;;;;;;;;;;;;;mCAWsBvC,M,EAAQ;AAC5B,cAAQA,MAAR;AACE,aAAK,KAAL;AACA,aAAK,MAAL;AACA,aAAK,MAAL;AACA,aAAK,MAAL;AACA,aAAK,MAAL;AACE,iBAAO,KAAP;AACF,aAAK,KAAL;AACA,aAAK,MAAL;AACA,aAAK,SAAL;AACA,aAAK,MAAL;AACE,iBAAO,KAAP;AACF,aAAK,KAAL;AACA,aAAK,MAAL;AACA,aAAK,KAAL;AACA,aAAK,MAAL;AACA,aAAK,KAAL,CAhBF,CAgBc;AACZ,aAAK,MAAL;AACE,iBAAO,KAAP;AACF;AACE,iBAAO,EAAP;AApBJ;AAsBD;;;;;;AA+XH;;;;;;;;AAMAR,UAAUmC,aAAV,GAA0B;AACxBc,iBAAe,CAAC,GAAD,CADS;AAExBC,SAAO,CAAC,CAAD,EAAI,GAAJ,EAAS,GAAT,CAFiB;AAGxBC,UAAQ,CAAC,CAAD,EAAI,EAAJ,EAAQ,GAAR,EAAa,GAAb,CAHgB;AAIxBC,mBAAiB,CAAC,CAAD,EAAI,EAAJ,EAAQ,GAAR;AAJO,CAA1B;;kBAOepD,S;QAGbN,S,GAAAA,S;QACAM,S,GAAAA,S;;;;;;;ACjpBW;AACb;;;;AAIA;;;;;AACA,IAAIqD,WAAW;AACb,oBAAkB,EADL;AAEb,iBAAe,CAFF;AAGb,aAAW;AAHE,CAAf;;AAMA,IAAIC,aAAcD,SAASE,cAAT,GAA0BF,SAASG,OAApC,GAAgDH,SAASI,WAAT,IAAwBJ,SAASG,OAAT,GAAmB,CAA3C,CAAjE;;AAEA;;;kBAGe;AACb;;;;;;AAMAE,eAAa,IAPA;AAQb;;;;;;AAMApE,SAAO,KAdM;AAeb;;;;;;;AAOAqE,iBAAe,KAtBF;AAuBb;;;;;;;;;;AAUAnD,UAAQ,MAjCK;AAkCb;;;;;;;;AAQAoD,cAAY,KA1CC;AA2Cb;;;;;;;;;AASAC,UAAQ,KApDK;AAqDb;;;;;;;;;;;AAWAC,aAAW,KAhEE;AAiEb;;;;;;;AAOAC,WAAS;AACPC,eAAW,IADJ;AAEPC,eAAW,QAFJ;AAGPC,uBAAmB;AAHZ,GAxEI;AA6Eb;;;;;AAKAC,SAAO,KAlFM;AAmFb;;;;;;AAMAC,SAAO,OAzFM;AA0Fb;;;;;;;AAOAC,SAAO,0BAjGM;AAkGb;;;;;;;;AAQAC,qBAAmB,IA1GN;AA2Gb;;;;;;;;;;;AAWAC,wBAAsB,IAtHT;AAuHb;;;;;;;;AAQAC,iBAAe,IA/HF;AAgIb;;;;;;;;;;;;AAYAC,YAAU,IA5IG;AA6Ib;;;;;;;;;;;;;;AAcAC,uWA3Ja;AAmKb;;;;;;;;;;;;;;;;;;;;;;;AAuBAC,cAAY,CACV;AACEC,UAAM,SADR;AAEEtG,aAAS;AACPuG,gBAAU;AADH;AAFX,GADU,CA1LC;AAkMb;;;;AAIAC,WAAS;AACP3D,gBAAY;AACV4D,gBAAU,yBADA;AAEVC,eAAS1B,UAFC;AAGV2B,cAAQ3B,UAHE;AAIV4B,gBAAU,oBAJA;AAKVC,eAAS;AALC,KADL;AAQPjE,SAAK;AACH6D,gBAAU,kBADP;AAEHC,eAAS,CAFN;AAGHC,cAAQ3B,UAHL;AAIH4B,gBAAU,KAJP;AAKHC,eAAS;AALN,KARE;AAeP9D,WAAO;AACL0D,gBAAU,oBADL;AAELK,qBAAe,0BAFV;AAGLJ,eAAS,CAHJ;AAILC,cAAQ3B,UAJH;AAKL4B,gBAAU,KALL;AAMLC,eAAS;AANJ;AAfA,GAtMI;AA8Nb;;;;AAIAE,eAAa;AACXlE,gBAAY;AACV4D,gBAAU,yBADA;AAEVC,eAAS1B,UAFC;AAGV2B,cAAQ3B,UAHE;AAIV4B,gBAAU,oBAJA;AAKVC,eAAS;AALC,KADD;AAQXjE,SAAK;AACH6D,gBAAU,kBADP;AAEHC,eAAS1B,UAFN;AAGH2B,cAAQ,CAHL;AAIHC,gBAAU,aAJP;AAKHC,eAAS;AALN,KARM;AAeX9D,WAAO;AACL0D,gBAAU,oBADL;AAELK,qBAAe,0BAFV;AAGLJ,eAAS1B,UAHJ;AAIL2B,cAAQ,CAJH;AAKLC,gBAAU,eALL;AAMLC,eAAS;AANJ;AAfI;AAlOA,C;;;;;;;;ACjBF;;;;;;;;;;AAEb;;;;AACA;;;;;;;;;;;;AAEA,IAAIG,WAAW;AACb;;;;;;;;;;;;;;;;;;;;;;AAsBAjD,UAAQ,IAvBK;AAwBb;;;;;;;AAOAkD,iBAAe;AA/BF,CAAf;;AAkCA;;;;;IAIMC,O;;;;;;;AAEJ;;;wBAGa;AACX,aAAO,KAAKlH,OAAL,CAAa+D,MAApB;AACD;;;AAED,mBAAYhE,WAAZ,EAAuC;AAAA,QAAdC,OAAc,uEAAJ,EAAI;;AAAA;;AAAA,kHAC/BD,WAD+B,EAClBM,iBAAE8G,MAAF,CAAS,IAAT,EAAe,EAAf,EAAmBH,QAAnB,EAA6BhH,OAA7B,CADkB;;AAGrC,QAAK,CAAC2D,MAAMC,OAAN,CAAc,MAAK5D,OAAL,CAAa+D,MAA3B,CAAF,IAA0C,QAAO,MAAK/D,OAAL,CAAa+D,MAApB,MAA+B,QAA7E,EAAwF;AACtF,YAAK/D,OAAL,CAAa+D,MAAb,GAAsB,IAAtB;AACD;AALoC;AAMtC;;AAED;;;;;;;gCAGY;AACV,UAAI,CAAC,KAAK/D,OAAL,CAAa+D,MAAlB,EAA0B;AACxB,eAAO,CAAP;AACD;;AAED,UAAIJ,MAAMC,OAAN,CAAc,KAAK5D,OAAL,CAAa+D,MAA3B,CAAJ,EAAwC;AACtC,eAAO,KAAK/D,OAAL,CAAa+D,MAAb,CAAoB7D,MAA3B;AACD;;AAED,UAAI,QAAO,KAAKF,OAAL,CAAa+D,MAApB,MAA+B,QAAnC,EAA6C;AAC3C,eAAOqD,OAAOC,IAAP,CAAY,KAAKrH,OAAL,CAAa+D,MAAzB,EAAiC7D,MAAxC;AACD;;AAED,aAAO,CAAP;AACD;;;iCAEYc,K,EAAyB;AAAA,UAAlBC,SAAkB,uEAAN,IAAM;;AACpC,UAAI,KAAKqG,SAAL,MAAoB,CAAxB,EAA2B;AACzB,eAAO,KAAP;AACD;;AAED;AACA,UAAI3D,MAAMC,OAAN,CAAc,KAAK5D,OAAL,CAAa+D,MAA3B,CAAJ,EAAwC;AACtC,YAAI,KAAK/D,OAAL,CAAa+D,MAAb,CAAoBwD,OAApB,CAA4BvG,KAA5B,KAAsC,CAA1C,EAA6C;AAC3C,iBAAOA,KAAP;AACD;AACD,YAAI,KAAKhB,OAAL,CAAa+D,MAAb,CAAoBwD,OAApB,CAA4BvG,MAAMwG,WAAN,EAA5B,KAAoD,CAAxD,EAA2D;AACzD,iBAAOxG,MAAMwG,WAAN,EAAP;AACD;AACD,YAAI,KAAKxH,OAAL,CAAa+D,MAAb,CAAoBwD,OAApB,CAA4BvG,MAAM0D,WAAN,EAA5B,KAAoD,CAAxD,EAA2D;AACzD,iBAAO1D,MAAM0D,WAAN,EAAP;AACD;AACD,eAAO,KAAP;AACD;;AAED,UAAI,QAAO,KAAK1E,OAAL,CAAa+D,MAApB,MAA+B,QAAnC,EAA6C;AAC3C,eAAO,KAAP;AACD;;AAED;AACA,UAAI,CAAC,KAAK/D,OAAL,CAAaiH,aAAd,IAA+BhG,SAAnC,EAA8C;AAC5C,eAAO,KAAKwG,QAAL,CAAczG,KAAd,EAAqB,KAArB,CAAP;AACD;AACD,aAAO,KAAK0G,OAAL,CAAa1G,KAAb,EAAoB,KAAK0G,OAAL,CAAa,MAAM1G,KAAnB,CAApB,CAAP;AACD;;AAED;;;;;;;;;;4BAOQ8B,K,EAA6B;AAAA,UAAtB6E,YAAsB,uEAAP,KAAO;;AACnC,UAAI,EAAE,OAAO7E,KAAP,KAAiB,QAAnB,KAAgC,CAAC,KAAK9C,OAAL,CAAa+D,MAAlD,EAA0D;AACxD,eAAO4D,YAAP;AACD;AACD,WAAK,IAAIrB,IAAT,IAAiB,KAAKtG,OAAL,CAAa+D,MAA9B,EAAsC;AACpC,YAAI,CAAC,KAAK/D,OAAL,CAAa+D,MAAb,CAAoBD,cAApB,CAAmCwC,IAAnC,CAAL,EAA+C;AAC7C;AACD;AACD,YAAI,KAAKtG,OAAL,CAAa+D,MAAb,CAAoBuC,IAApB,EAA0B5B,WAA1B,OAA4C5B,MAAM4B,WAAN,EAAhD,EAAqE;AACnE,iBAAO4B,IAAP;AACD;AACF;AACD,aAAOqB,YAAP;AACD;;AAED;;;;;;;;;;6BAOSrB,I,EAA4B;AAAA,UAAtBqB,YAAsB,uEAAP,KAAO;;AACnC,UAAI,EAAE,OAAOrB,IAAP,KAAgB,QAAlB,KAA+B,CAAC,KAAKtG,OAAL,CAAa+D,MAAjD,EAAyD;AACvD,eAAO4D,YAAP;AACD;AACD,UAAI,KAAK3H,OAAL,CAAa+D,MAAb,CAAoBD,cAApB,CAAmCwC,IAAnC,CAAJ,EAA8C;AAC5C,eAAO,KAAKtG,OAAL,CAAa+D,MAAb,CAAoBuC,IAApB,CAAP;AACD;AACD,aAAOqB,YAAP;AACD;;;;EAvGmB7H,mB;;kBA0GPoH,O;;;;;;;;ACrJH;;AAEZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACvJA;AACA,kBAAkB,mBAAO,CAAC,CAAY;;AAEtC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,OAAO,2BAA2B;AAClC,OAAO,2BAA2B;AAClC,OAAO,2BAA2B;AAClC,OAAO,2BAA2B;AAClC,QAAQ,4BAA4B;AACpC,OAAO,2BAA2B;AAClC,OAAO,2BAA2B;AAClC,OAAO,2BAA2B;AAClC,OAAO,6BAA6B;AACpC,WAAW,iCAAiC;AAC5C,UAAU,gCAAgC;AAC1C,WAAW,iCAAiC;AAC5C,OAAO,qCAAqC;AAC5C,SAAS,2CAA2C;AACpD,QAAQ;AACR;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qDAAqD,gBAAgB;AACrE,mDAAmD,cAAc;AACjE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA,EAAE;AACF;AACA,EAAE;AACF;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,EAAE;AACF;AACA,EAAE;AACF;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;;AAEA;;AAEA;AACA,gBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,uBAAuB;;AAEvB;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,OAAO,QAAQ;AAC/B,gBAAgB,OAAO,QAAQ;AAC/B,iBAAiB,OAAO,OAAO;AAC/B,iBAAiB,OAAO,OAAO;AAC/B,gBAAgB,QAAQ,OAAO;AAC/B,gBAAgB,QAAQ,OAAO;AAC/B;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,sEAAsE;;AAEtE;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,sBAAsB;AACtB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,+CAA+C,EAAE,UAAU,EAAE;AAC7D;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,aAAa,aAAa;AACzC;AACA,eAAe,aAAa,aAAa;AACzC;AACA,eAAe,aAAa,aAAa;AACzC;AACA,eAAe,aAAa,aAAa;AACzC;AACA,eAAe,aAAa,aAAa;AACzC;AACA,eAAe,aAAa;AAC5B;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;ACn2Ba;;;;AAEb;;;;AACA;;;;;;AAEA,IAAIU,SAAS,aAAb;;AAEAvH,iBAAEuH,MAAF,IAAYC,qBAAZ;;AAEA;AACAxH,iBAAEsB,EAAF,CAAKiG,MAAL,IAAe,UAAUE,MAAV,EAAkB;AAC/B,MAAIC,SAASpE,MAAMqE,SAAN,CAAgBC,KAAhB,CAAsBC,IAAtB,CAA2BrG,SAA3B,EAAsC,CAAtC,CAAb;AAAA,MACEsG,kBAAmB,KAAKjI,MAAL,KAAgB,CADrC;AAAA,MAEEkI,cAAc,IAFhB;;AAIA,MAAIC,YAAY,KAAKC,IAAL,CAAU,YAAY;AACpC,QAAIC,QAAQ,sBAAE,IAAF,CAAZ;AAAA,QACEC,OAAOD,MAAME,IAAN,CAAWb,MAAX,CADT;AAAA,QAEE5H,UAAY,QAAO8H,MAAP,yCAAOA,MAAP,OAAkB,QAAnB,GAA+BA,MAA/B,GAAwC,EAFrD;;AAIA;AACA,QAAI,CAACU,IAAL,EAAW;AACTA,aAAO,IAAIX,qBAAJ,CAAgB,IAAhB,EAAsB7H,OAAtB,CAAP;AACAuI,YAAME,IAAN,CAAWb,MAAX,EAAmBY,IAAnB;AACD;;AAED,QAAI,CAACL,eAAL,EAAsB;AACpB;AACD;;AAEDC,kBAAcG,KAAd;;AAEA,QAAI,OAAOT,MAAP,KAAkB,QAAtB,EAAgC;AAC9B,UAAIA,WAAW,aAAf,EAA8B;AAC5B;AACAM,sBAAcI,IAAd;AACD,OAHD,MAGO,IAAInI,iBAAEqI,UAAF,CAAaF,KAAKV,MAAL,CAAb,CAAJ,EAAgC;AACrC;AACAM,sBAAcI,KAAKV,MAAL,EAAa9F,KAAb,CAAmBwG,IAAnB,EAAyBT,MAAzB,CAAd;AACD,OAHM,MAGA;AACL;AACAK,sBAAcI,KAAKV,MAAL,CAAd;AACD;AACF;AACF,GA7Be,CAAhB;;AA+BA,SAAOK,kBAAkBC,WAAlB,GAAgCC,SAAvC;AACD,CArCD;;AAuCAhI,iBAAEsB,EAAF,CAAKiG,MAAL,EAAae,WAAb,GAA2Bd,qBAA3B,C;;;;;;;ACjDa;;;;;;;;AAEb;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;;;;;AAEA,IAAIe,uBAAuB,CAA3B;;AAEA,IAAIC,OAAQ,OAAOC,IAAP,KAAgB,WAAhB,GAA8BA,IAA9B,YAAZ,C,CAAwD;;AAExD;;;;IAGMjB,W;;;;;AAqBJ;;;;;wBAKY;AACV,aAAO,KAAKkB,YAAL,CAAkB/H,KAAzB;AACD;;AAED;;;;;;;;wBAKa;AACX,aAAO,KAAK+H,YAAL,CAAkB7G,MAAzB;AACD;;AAED;;;;;;;;wBAKa;AACX,aAAO,KAAK8G,aAAL,CAAmBC,MAA1B;AACD;;AAED;;;;;;;;;;AA/CA;;;;;;wBAMmB;AACjB,aAAOvH,mBAAP;AACD;;AAED;;;;;;;;;wBAMuB;AACrB,aAAO5B,mBAAP;AACD;;;AAmCD,uBAAYG,OAAZ,EAAqBD,OAArB,EAA8B;AAAA;;AAC5B4I,4BAAwB,CAAxB;AACA;;;;AAIA,SAAKM,EAAL,GAAUN,oBAAV;;AAEA;;;;;AAKA,SAAKO,SAAL,GAAiB;AACfC,aAAO,IADQ;AAEf7E,SAAG;AAFY,KAAjB;;AAKA;;;;;AAKA,SAAKtE,OAAL,GAAe,sBAAEA,OAAF,EACZoJ,QADY,CACH,qBADG,EAEZC,IAFY,CAEP,qBAFO,EAEgB,KAAKJ,EAFrB,CAAf;;AAIA;;;AAGA,SAAKlJ,OAAL,GAAeK,iBAAE8G,MAAF,CAAS,IAAT,EAAe,EAAf,EAAmBH,iBAAnB,EAA6BhH,OAA7B,EAAsC,KAAKC,OAAL,CAAawI,IAAb,EAAtC,CAAf;;AAEA;;;;AAIA,SAAKc,QAAL,GAAgB,KAAhB;;AAEA;;;;;AAKA,SAAKlD,UAAL,GAAkB,EAAlB;;AAEA;;;;AAIA,SAAKb,SAAL,GACE,KAAKxF,OAAL,CAAawF,SAAb,KAA2B,IAA3B,IACC,KAAKxF,OAAL,CAAawF,SAAb,KAA2B,IAA3B,IAAmC,KAAKxF,OAAL,CAAauF,MAAb,KAAwB,IAF7C,GAGb,KAAKtF,OAHQ,GAGE,KAAKD,OAAL,CAAawF,SAHhC;;AAKA,SAAKA,SAAL,GAAkB,KAAKA,SAAL,KAAmB,KAApB,GAA6B,sBAAE,KAAKA,SAAP,CAA7B,GAAiD,KAAlE;;AAEA;;;AAGA,SAAKgE,YAAL,GAAoB,IAAIC,sBAAJ,CAAiB,IAAjB,CAApB;AACA;;;AAGA,SAAKV,YAAL,GAAoB,IAAIW,sBAAJ,CAAiB,IAAjB,CAApB;AACA;;;AAGA,SAAKC,aAAL,GAAqB,IAAIC,uBAAJ,CAAkB,IAAlB,CAArB;AACA;;;AAGA,SAAKC,YAAL,GAAoB,IAAIC,sBAAJ,CAAiB,IAAjB,EAAuBjB,IAAvB,CAApB;AACA;;;AAGA,SAAKG,aAAL,GAAqB,IAAIe,uBAAJ,CAAkB,IAAlB,CAArB;AACA;;;AAGA,SAAKC,YAAL,GAAoB,IAAIC,sBAAJ,CAAiB,IAAjB,CAApB;;AAEA,SAAKC,IAAL;;AAEA;AACA,0BAAE7J,iBAAEC,KAAF,CAAQ,YAAY;AACpB;;;;;AAKA,WAAK6J,OAAL,CAAa,mBAAb;AACD,KAPC,EAOC,IAPD,CAAF;AAQD;;AAED;;;;;;;;2BAIO;AACL;AACA,WAAKH,YAAL,CAAkBI,IAAlB;;AAEA;AACA,WAAKZ,YAAL,CAAkBY,IAAlB;;AAEA;AACA,WAAKC,cAAL;;AAEA;AACA,WAAKtB,YAAL,CAAkBqB,IAAlB;;AAEA;AACA,WAAKpB,aAAL,CAAmBoB,IAAnB;;AAEA;AACA,WAAKT,aAAL,CAAmBS,IAAnB;AACA,WAAKP,YAAL,CAAkBO,IAAlB;;AAEA;AACA,WAAKpB,aAAL,CAAmBsB,MAAnB;;AAEA;AACA,WAAKC,MAAL;;AAEA,UAAI,KAAKf,YAAL,CAAkBgB,UAAlB,EAAJ,EAAoC;AAClC,aAAKC,OAAL;AACD;AACF;;AAED;;;;;;;qCAIiB;AAAA;;AACf,UAAI,CAAC9G,MAAMC,OAAN,CAAc,KAAK5D,OAAL,CAAaqG,UAA3B,CAAL,EAA6C;AAC3C,aAAKrG,OAAL,CAAaqG,UAAb,GAA0B,EAA1B;AACD;;AAED,UAAI,KAAKrG,OAAL,CAAa6F,KAAjB,EAAwB;AACtB,aAAK7F,OAAL,CAAaqG,UAAb,CAAwBjC,IAAxB,CAA6B,EAACkC,MAAM,UAAP,EAA7B;AACD;;AAED;AACA,WAAKtG,OAAL,CAAaqG,UAAb,CAAwBpC,OAAxB,CAAgC,UAACyG,GAAD,EAAS;AACvC,cAAKC,iBAAL,CAAuB9C,YAAYxB,UAAZ,CAAuBqE,IAAIpE,IAAJ,CAAS5B,WAAT,EAAvB,CAAvB,EAAuEgG,IAAI1K,OAAJ,IAAe,EAAtF;AACD,OAFD;AAGD;;AAED;;;;;;;;;;sCAOkB4K,c,EAA6B;AAAA,UAAbC,MAAa,uEAAJ,EAAI;;AAC7C,UAAIH,MAAM,IAAIE,cAAJ,CAAmB,IAAnB,EAAyBC,MAAzB,CAAV;;AAEA,WAAKxE,UAAL,CAAgBjC,IAAhB,CAAqBsG,GAArB;AACA,aAAOA,GAAP;AACD;;AAED;;;;;;;;8BAKU;AACR,UAAI1J,QAAQ,KAAKA,KAAjB;;AAEA,WAAK2I,aAAL,CAAmBmB,MAAnB;AACA,WAAKtB,YAAL,CAAkBsB,MAAlB;AACA,WAAKjB,YAAL,CAAkBiB,MAAlB;AACA,WAAK/B,YAAL,CAAkB+B,MAAlB;AACA,WAAKd,YAAL,CAAkBc,MAAlB;AACA,WAAK9B,aAAL,CAAmB8B,MAAnB;;AAEA,WAAK7K,OAAL,CACG8K,WADH,CACe,qBADf,EAEGC,UAFH,CAEc,aAFd,EAGGA,UAHH,CAGc,OAHd,EAIG7J,GAJH,CAIO,cAJP;;AAMA;;;;;AAKA,WAAKgJ,OAAL,CAAa,oBAAb,EAAmCnJ,KAAnC;AACD;;AAED;;;;;;;;;;yBAOKuD,C,EAAG;AACN,WAAKsF,YAAL,CAAkBoB,IAAlB,CAAuB1G,CAAvB;AACD;;AAED;;;;;;;;;yBAMKA,C,EAAG;AACN,WAAKsF,YAAL,CAAkBqB,IAAlB,CAAuB3G,CAAvB;AACD;;AAED;;;;;;;;;;2BAOOA,C,EAAG;AACR,WAAKsF,YAAL,CAAkBsB,MAAlB,CAAyB5G,CAAzB;AACD;;AAED;;;;;;;;;+BAM8B;AAAA,UAArBoD,YAAqB,uEAAN,IAAM;;AAC5B,UAAIyD,MAAM,KAAKrC,YAAL,CAAkB/H,KAA5B;;AAEAoK,YAAOA,eAAe1J,mBAAhB,GAA6B0J,GAA7B,GAAmCzD,YAAzC;;AAEA,UAAIyD,eAAe1J,mBAAnB,EAA8B;AAC5B,eAAO0J,IAAIlI,MAAJ,CAAW,KAAKhB,MAAhB,CAAP;AACD;;AAED,aAAOkJ,GAAP;AACD;;AAED;;;;;;;;;6BAMSA,G,EAAK;AACZ,UAAI,KAAKZ,UAAL,EAAJ,EAAuB;AACrB;AACD;AACD,UAAIa,KAAK,KAAKtC,YAAd;;AAEA,UACGsC,GAAGC,QAAH,MAAiB,CAAC,CAACF,GAAnB,IAA0BC,GAAGrK,KAAH,CAASuK,MAAT,CAAgBH,GAAhB,CAA3B,IACC,CAACC,GAAGC,QAAH,EAAD,IAAkB,CAACF,GAFtB,EAGE;AACA;AACA;AACD;;AAEDC,SAAGrK,KAAH,GAAWoK,MAAMC,GAAGG,WAAH,CAAeJ,GAAf,EAAoB,KAAKpL,OAAL,CAAagG,iBAAjC,EAAoD,KAAKhG,OAAL,CAAaiG,oBAAjE,CAAN,GAA+F,IAA1G;;AAEA;;;;;AAKA,WAAKkE,OAAL,CAAa,mBAAb,EAAkCkB,GAAGrK,KAArC,EAA4CoK,GAA5C;;AAEA;AACA,WAAKb,MAAL;AACD;;AAED;;;;;;;;6BAKS;AACP,UAAI,KAAKxB,YAAL,CAAkBuC,QAAlB,EAAJ,EAAkC;AAChC,aAAK9B,YAAL,CAAkBe,MAAlB;AACD,OAFD,MAEO;AACL,aAAKxB,YAAL,CAAkB0C,WAAlB;AACD;;AAED,WAAKzB,YAAL,CAAkBO,MAAlB;AACA,WAAKvB,aAAL,CAAmBuB,MAAnB;;AAEA;;;;;AAKA,WAAKJ,OAAL,CAAa,mBAAb;AACD;;AAED;;;;;;;;;6BAMS;AACP,WAAKX,YAAL,CAAkBkC,MAAlB;AACA,WAAKnC,QAAL,GAAgB,KAAhB;AACA,WAAKN,MAAL,CAAY8B,WAAZ,CAAwB,sBAAxB;;AAEA;;;;;AAKA,WAAKZ,OAAL,CAAa,mBAAb;AACA,aAAO,IAAP;AACD;;AAED;;;;;;;;;8BAMU;AACR,WAAKX,YAAL,CAAkBiB,OAAlB;AACA,WAAKlB,QAAL,GAAgB,IAAhB;AACA,WAAKN,MAAL,CAAYI,QAAZ,CAAqB,sBAArB;;AAEA;;;;;AAKA,WAAKc,OAAL,CAAa,oBAAb;AACA,aAAO,IAAP;AACD;;AAED;;;;;;;gCAIY;AACV,aAAO,CAAC,KAAKK,UAAL,EAAR;AACD;;AAED;;;;;;;iCAIa;AACX,aAAO,KAAKjB,QAAL,KAAkB,IAAzB;AACD;;AAED;;;;;;;;;;4BAOQoC,S,EAAuC;AAAA,UAA5B3K,KAA4B,uEAApB,IAAoB;AAAA,UAAd8B,KAAc,uEAAN,IAAM;;AAC7C,WAAK7C,OAAL,CAAakK,OAAb,CAAqB;AACnByB,cAAMD,SADa;AAEnB5L,qBAAa,IAFM;AAGnBiB,eAAOA,QAAQA,KAAR,GAAgB,KAAKA,KAHT;AAInB8B,eAAOA,QAAQA,KAAR,GAAgB,KAAK2E,QAAL;AAJJ,OAArB;AAMD;;;;;;AAGH;;;;;;;;AAMAI,YAAYxB,UAAZ,GAAyBwF,oBAAzB;;kBAEehE,W;;;;;;;;;;;;;;;ACrcf;;;;AACA;;;;AACA;;;;AACA;;;;;;QAGEiE,Q,GAAAA,kB;QAAUC,O,GAAAA,iB;QAASC,Q,GAAAA,kB;QAAU9E,O,GAAAA,iB;kBAGhB;AACb,cAAY4E,kBADC;AAEb,aAAWC,iBAFE;AAGb,cAAYC,kBAHC;AAIb,aAAW9E;AAJE,C;;;;;;;ACTF;;;;;;;;;;AAEb;;;;AACA;;;;;;;;;;;;AAEA;;;;;IAKM4E,Q;;;AACJ,oBAAY/L,WAAZ,EAAuC;AAAA,QAAdC,OAAc,uEAAJ,EAAI;;AAAA;;AAGrC;;;AAHqC,oHAC/BD,WAD+B,EAClBC,OADkB;;AAMrC,UAAKiM,YAAL,GAAoB,CAApB;AACA,QAAI,MAAKlM,WAAL,CAAiByJ,YAAjB,CAA8B0C,QAA9B,EAAJ,EAA8C;AAC5C,YAAKnM,WAAL,CAAiByJ,YAAjB,CAA8B1D,KAA9B,CAAoC1F,EAApC,CAAuC,wBAAvC,EAAiEC,iBAAEC,KAAF,CAAQ,MAAK6L,aAAb,QAAjE;AACD;AAToC;AAUtC;;AAED;;;;;;;;;wBAKIR,S,EAAoB;AAAA;;AAAA,wCAAN/J,IAAM;AAANA,YAAM;AAAA;;AACtB,WAAKqK,YAAL,IAAqB,CAArB;;AAEA,UAAIG,mBAAiB,KAAKH,YAAtB,sBAAmD,KAAKlM,WAAL,CAAiBmJ,EAApE,UAA2EyC,SAA3E,MAAJ;;AAEA,2BAAQ9F,KAAR,kBAAcuG,UAAd,SAA6BxK,IAA7B;;AAEA;;;;;;;;;;AAUA,WAAK7B,WAAL,CAAiBE,OAAjB,CAAyBkK,OAAzB,CAAiC;AAC/ByB,cAAM,kBADyB;AAE/B7L,qBAAa,KAAKA,WAFa;AAG/BiB,eAAO,KAAKA,KAHmB;AAI/B8B,eAAO,IAJwB;AAK/B+C,eAAO;AACLwG,oBAAU,IADL;AAELV,qBAAWA,SAFN;AAGLW,mBAAS1K,IAHJ;AAILwK,sBAAYA;AAJP;AALwB,OAAjC;AAYD;;;iCAEYpL,K,EAAyB;AAAA,UAAlBC,SAAkB,uEAAN,IAAM;;AACpC,WAAKsL,GAAL,CAAS,gBAAT,EAA2BvL,KAA3B,EAAkCC,SAAlC;AACA,aAAO,KAAP;AACD;;;6BAEQC,K,EAAO;AACd,WAAKqL,GAAL,CAAS,mBAAT;AACA,0HAAsBrL,KAAtB;AACD;;;8BAESA,K,EAAO;AACf,WAAKqL,GAAL,CAAS,oBAAT;AACA,WAAKN,YAAL,GAAoB,CAApB;;AAEA,UAAI,KAAKlM,WAAL,CAAiByJ,YAAjB,CAA8B0C,QAA9B,EAAJ,EAA8C;AAC5C,aAAKnM,WAAL,CAAiByJ,YAAjB,CAA8B1D,KAA9B,CAAoC3E,GAApC,CAAwC,kBAAxC;AACD;;AAED,2HAAuBD,KAAvB;AACD;;;6BAEQA,K,EAAO;AACd,WAAKqL,GAAL,CAAS,mBAAT;AACD;;AAED;;;;;;;kCAIcrL,K,EAAO;AACnB,WAAKqL,GAAL,CAAS,0BAAT,EAAqCrL,MAAM4B,KAA3C,EAAkD5B,MAAMF,KAAxD;AACD;;;6BAEQE,K,EAAO;AACd,WAAKqL,GAAL,CAAS,mBAAT,EAA8BrL,MAAM4B,KAApC,EAA2C5B,MAAMF,KAAjD;AACD;;;8BAESE,K,EAAO;AACf,WAAKqL,GAAL,CAAS,oBAAT,EAA+BrL,MAAM4B,KAArC,EAA4C5B,MAAMF,KAAlD;AACD;;;2BAEME,K,EAAO;AACZ,WAAKqL,GAAL,CAAS,iBAAT;AACA,WAAKN,YAAL,GAAoB,CAApB;AACD;;;2BAEM/K,K,EAAO;AACZ,WAAKqL,GAAL,CAAS,iBAAT;AACD;;;8BAESrL,K,EAAO;AACf,WAAKqL,GAAL,CAAS,oBAAT;AACD;;;6BAEQrL,K,EAAO;AACd,WAAKqL,GAAL,CAAS,mBAAT;AACD;;;;EAzGoBzM,mB;;kBA4GRgM,Q;;;;;;;;ACtHF;;;;;;;;;;AAEb;;;;AACA;;;;;;;;;;;;AAEA;;;;IAIMC,O;;;AACJ,mBAAYhM,WAAZ,EAAuC;AAAA,QAAdC,OAAc,uEAAJ,EAAI;;AAAA;;AAAA,kHAC/BD,WAD+B,EAClBM,iBAAE8G,MAAF,CAAS,IAAT,EAAe,EAAf,EACjB;AACEf,gBAAU,gEADZ;AAEEG,gBAAU,IAFZ;AAGErE,cAAQnC,YAAYmC;AAHtB,KADiB,EAMjBlC,OANiB,CADkB;;AAUrC,UAAKC,OAAL,GAAe,sBAAE,MAAKD,OAAL,CAAaoG,QAAf,CAAf;AACA,UAAKoG,YAAL,GAAoB,MAAKvM,OAAL,CAAawM,IAAb,CAAkB,KAAlB,CAApB;AAXqC;AAYtC;;;;6BAEQvL,K,EAAO;AACd,iHAAeA,KAAf;AACA,WAAKnB,WAAL,CAAiBkJ,MAAjB,CAAwByD,MAAxB,CAA+B,KAAKzM,OAApC;AACD;;;6BAEQiB,K,EAAO;AACd,iHAAeA,KAAf;;AAEA,UAAI,CAACA,MAAMF,KAAX,EAAkB;AAChB,aAAKwL,YAAL,CACGG,GADH,CACO,iBADP,EAC0B,IAD1B,EAEGA,GAFH,CAEO,OAFP,EAEgB,IAFhB,EAGGC,IAHH,CAGQ,EAHR;AAIA;AACD;;AAED,WAAKJ,YAAL,CACGG,GADH,CACO,iBADP,EAC0BzL,MAAMF,KAAN,CAAY6L,WAAZ,EAD1B;;AAGA,UAAI,KAAK7M,OAAL,CAAauG,QAAjB,EAA2B;AACzB,aAAKiG,YAAL,CACGI,IADH,CACQ1L,MAAMF,KAAN,CAAYkC,MAAZ,CAAmB,KAAKlD,OAAL,CAAakC,MAAb,IAAuB,KAAKnC,WAAL,CAAiBmC,MAA3D,CADR;;AAGA,YAAIhB,MAAMF,KAAN,CAAYuC,MAAZ,MAAyBrC,MAAMF,KAAN,CAAY+B,KAAZ,GAAoB,GAAjD,EAAuD;AACrD,eAAKyJ,YAAL,CAAkBG,GAAlB,CAAsB,OAAtB,EAA+B,OAA/B;AACD,SAFD,MAEO;AACL,eAAKH,YAAL,CAAkBG,GAAlB,CAAsB,OAAtB,EAA+B,OAA/B;AACD;AACF;AACF;;;;EA5CmB7M,mB;;kBA+CPiM,O;;;;;;;;ACxDF;;;;;;;;;;AAEb;;;;AACA;;;;;;;;;;;;AAEA,IAAI/E,WAAW;AACb8F,gKADa;AAIbC,kBAAgB;AAJH,CAAf;;AAOA;;;;;IAIMf,Q;;;AACJ,oBAAYjM,WAAZ,EAAuC;AAAA,QAAdC,OAAc,uEAAJ,EAAI;;AAAA;;AAAA,oHAC/BD,WAD+B,EAClBM,iBAAE8G,MAAF,CAAS,IAAT,EAAe,EAAf,EAAmBH,QAAnB,EAA6BhH,OAA7B,CADkB;;AAErC,UAAKC,OAAL,GAAe,IAAf;AAFqC;AAGtC;;;;gCAEW;AACV,aAAO,KAAKqH,SAAL,KAAmB,CAA1B;AACD;;;6BAEQpG,K,EAAO;AACd,mHAAeA,KAAf;;AAEA,UAAI,CAAC,KAAK8L,SAAL,EAAL,EAAuB;AACrB;AACD;;AAED,WAAK/M,OAAL,GAAe,sBAAE,KAAKD,OAAL,CAAa8M,WAAf,CAAf;AACA,WAAKG,IAAL;AACA,WAAKlN,WAAL,CAAiBkJ,MAAjB,CAAwByD,MAAxB,CAA+B,KAAKzM,OAApC;AACD;;;2BAEM;AAAA;;AACL,UAAIF,cAAc,KAAKA,WAAvB;AAAA,UACEmN,kBAAkB,KAAKjN,OAAL,CAAawM,IAAb,CAAkB,8BAAlB,CADpB;AAAA,UAEEU,YAAa,KAAKnN,OAAL,CAAaiH,aAAb,KAA+B,IAAhC,IAAyC,CAACtD,MAAMC,OAAN,CAAc,KAAKG,MAAnB,CAFxD;;AAIAmJ,sBAAgBE,KAAhB;;AAEA/M,uBAAEiI,IAAF,CAAO,KAAKvE,MAAZ,EAAoB,UAACuC,IAAD,EAAOxD,KAAP,EAAiB;AACnC,YAAIuK,UAAU,sBAAE,OAAKrN,OAAL,CAAa+M,cAAf,EACXzD,IADW,CACN,WADM,EACOhD,IADP,EAEXgD,IAFW,CAEN,YAFM,EAEQxG,KAFR,EAGXwG,IAHW,CAGN,OAHM,EAGG6D,YAAe7G,IAAf,UAAwBxD,KAAxB,GAAkCA,KAHrC,EAIX1C,EAJW,CAIR,8CAJQ,EAKV,UAAUmE,CAAV,EAAa;AACX,cAAI+I,MAAM,sBAAE,IAAF,CAAV;;AAEA;;AAEAvN,sBAAYwN,QAAZ,CAAqBJ,YAAYG,IAAIhE,IAAJ,CAAS,WAAT,CAAZ,GAAoCgE,IAAIhE,IAAJ,CAAS,YAAT,CAAzD;AACD,SAXS,CAAd;;AAcA+D,gBAAQZ,IAAR,CAAa,4BAAb,EACGE,GADH,CACO,kBADP,EAC2B7J,KAD3B;;AAGAoK,wBAAgBR,MAAhB,CAAuBW,OAAvB;AACD,OAnBD;;AAqBAH,sBAAgBR,MAAhB,CAAuB,sBAAE,mCAAF,CAAvB;AACD;;;;EAnDoBxF,iB;;kBAsDR8E,Q;;;;;;;;ACtEF;;;;;;;;AAEb;;;;;;;;AAEA;;;;IAIMpC,a;AACJ;;;AAGA,yBAAY7J,WAAZ,EAAyB;AAAA;;AACvB;;;AAGA,SAAKA,WAAL,GAAmBA,WAAnB;AACA;;;;AAIA,SAAKyN,aAAL,GAAqB,IAArB;AACA;;;;AAIA,SAAKC,YAAL,GAAoB;AAClBC,YAAM,CADY;AAElBC,WAAK;AAFa,KAApB;;AAKA;;;AAGA,SAAKC,MAAL,GAAcvN,iBAAEC,KAAF,CAAQ,KAAKuN,aAAb,EAA4B,IAA5B,CAAd;AACD;;AAED;;;;;;;;;;;kCAOcF,G,EAAKD,I,EAAM;AACvB,UAAI,CAAC,KAAKF,aAAV,EAAyB;AACvB;AACD;;AAED,UAAIM,SAAS,KAAKN,aAAlB;AAAA,UAAiCO,KAAK,KAAKhO,WAA3C;AAAA,UAAwDsL,KAAK0C,GAAGhF,YAAhE;;AAEA;AACA,UAAI/H,QAAQ,CAACqK,GAAGC,QAAH,EAAD,GAAiBD,GAAG2C,gBAAH,EAAjB,GAAyC3C,GAAGrK,KAAH,CAASiN,QAAT,EAArD;;AAEA;AACAH,aAAOI,UAAP,CAAkBR,IAAlB,GAAyBA,OAAO,IAAhC;AACAI,aAAOI,UAAP,CAAkBP,GAAlB,GAAwBA,MAAM,IAA9B;;AAEA;AACA,UAAIG,OAAOlH,QAAX,EAAqB;AACnB5F,cAAM8M,OAAOlH,QAAb,EAAuB8G,OAAOI,OAAOpH,OAArC;AACD;AACD,UAAIoH,OAAOjH,OAAX,EAAoB;AAClB7F,cAAM8M,OAAOjH,OAAb,EAAsB8G,MAAMG,OAAOnH,MAAnC;AACD;;AAED;AACAoH,SAAGR,QAAH,CAAYvM,KAAZ;AACA+M,SAAGlE,YAAH,CAAgBsE,KAAhB;AACD;;AAED;;;;;;2BAGO;AACL,UAAI3H,UAAU,KAAKzG,WAAL,CAAiBC,OAAjB,CAAyBsF,UAAzB,GAAsC,KAAKvF,WAAL,CACjDC,OADiD,CACzC+G,WADG,GACW,KAAKhH,WAAL,CAAiBC,OAAjB,CAAyBwG,OADlD;;AAGA,UAAI4H,gBAAgB,EAApB;;AAEA,WAAK,IAAIC,UAAT,IAAuB7H,OAAvB,EAAgC;AAC9B,YAAI,CAACA,QAAQ1C,cAAR,CAAuBuK,UAAvB,CAAL,EAAyC;AACvC;AACD;;AAEDD,sBAAchK,IAAd,CAAmBoC,QAAQ6H,UAAR,EAAoB5H,QAAvC;AACD;;AAED,WAAK1G,WAAL,CAAiBkJ,MAAjB,CAAwBwD,IAAxB,CAA6B2B,cAAcE,IAAd,CAAmB,IAAnB,CAA7B,EACGlO,EADH,CACM,8CADN,EACsDC,iBAAEC,KAAF,CAAQ,KAAKiO,OAAb,EAAsB,IAAtB,CADtD;AAED;;AAED;;;;;;6BAGS;AACP,4BAAE,KAAKxO,WAAL,CAAiBkJ,MAAnB,EAA2B9H,GAA3B,CAA+B;AAC7B,iCAAyBd,iBAAEC,KAAF,CAAQ,KAAKkO,KAAb,EAAoB,IAApB,CADI;AAE7B,iCAAyBnO,iBAAEC,KAAF,CAAQ,KAAKkO,KAAb,EAAoB,IAApB,CAFI;AAG7B,+BAAuBnO,iBAAEC,KAAF,CAAQ,KAAKmO,QAAb,EAAuB,IAAvB,CAHM;AAI7B,gCAAwBpO,iBAAEC,KAAF,CAAQ,KAAKmO,QAAb,EAAuB,IAAvB;AAJK,OAA/B;AAMD;;AAED;;;;;;;;;;4BAOQlK,C,EAAG;AACT,UAAI,KAAKxE,WAAL,CAAiByK,UAAjB,EAAJ,EAAmC;AACjC;AACD;AACD,WAAKzK,WAAL,CAAiBoJ,SAAjB,CAA2BC,KAA3B,GAAmC,SAAnC;AACA,WAAKrJ,WAAL,CAAiBoJ,SAAjB,CAA2B5E,CAA3B,GAA+BA,CAA/B;;AAEA,UAAI,CAACA,EAAEmK,KAAH,IAAY,CAACnK,EAAEoK,KAAf,IAAwBpK,EAAEqK,aAA1B,IAA2CrK,EAAEqK,aAAF,CAAgBC,OAA/D,EAAwE;AACtEtK,UAAEmK,KAAF,GAAUnK,EAAEqK,aAAF,CAAgBC,OAAhB,CAAwB,CAAxB,EAA2BH,KAArC;AACAnK,UAAEoK,KAAF,GAAUpK,EAAEqK,aAAF,CAAgBC,OAAhB,CAAwB,CAAxB,EAA2BF,KAArC;AACD;AACD;AACA;;AAEA,UAAIG,SAAS,sBAAEvK,EAAEuK,MAAJ,CAAb;;AAEA;AACA,UAAIC,OAAOD,OAAOE,OAAP,CAAe,KAAf,CAAX;;AAEA,UAAIxI,UAAU,KAAKzG,WAAL,CAAiBC,OAAjB,CAAyBsF,UAAzB,GAAsC,KAAKvF,WAAL,CACjDC,OADiD,CACzC+G,WADG,GACW,KAAKhH,WAAL,CAAiBC,OAAjB,CAAyBwG,OADlD;;AAGA,UAAIuI,KAAKE,EAAL,CAAQ,cAAR,CAAJ,EAA6B;AAC3B;AACD;;AAED,WAAKzB,aAAL,GAAqB,IAArB;;AAEA,WAAK,IAAIa,UAAT,IAAuB7H,OAAvB,EAAgC;AAC9B,YAAI,CAACA,QAAQ1C,cAAR,CAAuBuK,UAAvB,CAAL,EAAyC;AACvC;AACD;;AAED,YAAIP,SAAStH,QAAQ6H,UAAR,CAAb;;AAEA,YAAIU,KAAKE,EAAL,CAAQnB,OAAOrH,QAAf,CAAJ,EAA8B;AAC5B,eAAK+G,aAAL,GAAqBnN,iBAAE8G,MAAF,CAAS,EAAT,EAAa2G,MAAb,EAAqB,EAACxH,MAAM+H,UAAP,EAArB,CAArB;AACA;AACD,SAHD,MAGO,IAAIP,OAAOhH,aAAP,KAAyB1D,SAAzB,IAAsC2L,KAAKE,EAAL,CAAQnB,OAAOhH,aAAf,CAA1C,EAAyE;AAC9E,eAAK0G,aAAL,GAAqBnN,iBAAE8G,MAAF,CAAS,EAAT,EAAa2G,MAAb,EAAqB,EAACxH,MAAM+H,UAAP,EAArB,CAArB;AACAU,iBAAOA,KAAKG,MAAL,EAAP,CAF8E,CAExD;AACtB;AACD;AACF;;AAED,UAAIC,QAAQJ,KAAKtC,IAAL,CAAU,oBAAV,EAAgC2C,GAAhC,CAAoC,CAApC,CAAZ;;AAEA,UAAI,KAAK5B,aAAL,KAAuB,IAAvB,IAA+B2B,UAAU,IAA7C,EAAmD;AACjD;AACD;;AAED,UAAIE,SAASN,KAAKM,MAAL,EAAb;;AAEA;AACA,WAAK7B,aAAL,CAAmBU,UAAnB,GAAgCiB,MAAMG,KAAtC;AACA,WAAK9B,aAAL,CAAmBE,IAAnB,GAA0BnJ,EAAEmK,KAAF,GAAUW,OAAO3B,IAA3C;AACA,WAAKF,aAAL,CAAmBG,GAAnB,GAAyBpJ,EAAEoK,KAAF,GAAUU,OAAO1B,GAA1C;AACA,WAAKF,YAAL,GAAoB;AAClBC,cAAMnJ,EAAEmK,KADU;AAElBf,aAAKpJ,EAAEoK;AAFW,OAApB;;AAKA;AACA;;;;;;AAMA,4BAAE,KAAK5O,WAAL,CAAiBkJ,MAAnB,EAA2B7I,EAA3B,CAA8B;AAC5B,iCAAyBC,iBAAEC,KAAF,CAAQ,KAAKkO,KAAb,EAAoB,IAApB,CADG;AAE5B,iCAAyBnO,iBAAEC,KAAF,CAAQ,KAAKkO,KAAb,EAAoB,IAApB,CAFG;AAG5B,+BAAuBnO,iBAAEC,KAAF,CAAQ,KAAKmO,QAAb,EAAuB,IAAvB,CAHK;AAI5B,gCAAwBpO,iBAAEC,KAAF,CAAQ,KAAKmO,QAAb,EAAuB,IAAvB;AAJI,OAA9B,EAKGtE,OALH,CAKW,WALX;AAMD;;AAED;;;;;;;;;0BAMM5F,C,EAAG;AACP,WAAKxE,WAAL,CAAiBoJ,SAAjB,CAA2BC,KAA3B,GAAmC,OAAnC;AACA,WAAKrJ,WAAL,CAAiBoJ,SAAjB,CAA2B5E,CAA3B,GAA+BA,CAA/B;;AAEA,UAAI,CAACA,EAAEmK,KAAH,IAAY,CAACnK,EAAEoK,KAAf,IAAwBpK,EAAEqK,aAA1B,IAA2CrK,EAAEqK,aAAF,CAAgBC,OAA/D,EAAwE;AACtEtK,UAAEmK,KAAF,GAAUnK,EAAEqK,aAAF,CAAgBC,OAAhB,CAAwB,CAAxB,EAA2BH,KAArC;AACAnK,UAAEoK,KAAF,GAAUpK,EAAEqK,aAAF,CAAgBC,OAAhB,CAAwB,CAAxB,EAA2BF,KAArC;AACD;;AAED;AACApK,QAAEgL,cAAF,GAVO,CAUa;;AAEpB,UAAI7B,OAAOrJ,KAAKmL,GAAL,CACT,CADS,EAETnL,KAAKoL,GAAL,CACE,KAAKjC,aAAL,CAAmB9G,OADrB,EAEE,KAAK8G,aAAL,CAAmBE,IAAnB,IAA2B,CAACnJ,EAAEmK,KAAF,IAAW,KAAKjB,YAAL,CAAkBC,IAA9B,IAAsC,KAAKD,YAAL,CAAkBC,IAAnF,CAFF,CAFS,CAAX;;AAQA,UAAIC,MAAMtJ,KAAKmL,GAAL,CACR,CADQ,EAERnL,KAAKoL,GAAL,CACE,KAAKjC,aAAL,CAAmB7G,MADrB,EAEE,KAAK6G,aAAL,CAAmBG,GAAnB,IAA0B,CAACpJ,EAAEoK,KAAF,IAAW,KAAKlB,YAAL,CAAkBE,GAA9B,IAAqC,KAAKF,YAAL,CAAkBE,GAAjF,CAFF,CAFQ,CAAV;;AAQA,WAAKC,MAAL,CAAYD,GAAZ,EAAiBD,IAAjB;AACD;;AAED;;;;;;;;;6BAMSnJ,C,EAAG;AACV,WAAKxE,WAAL,CAAiBoJ,SAAjB,CAA2BC,KAA3B,GAAmC,UAAnC;AACA,WAAKrJ,WAAL,CAAiBoJ,SAAjB,CAA2B5E,CAA3B,GAA+BA,CAA/B;;AAEA;AACA;;AAEA,4BAAE,KAAKxE,WAAL,CAAiBkJ,MAAnB,EAA2B9H,GAA3B,CAA+B;AAC7B,iCAAyB,KAAKqN,KADD;AAE7B,iCAAyB,KAAKA,KAFD;AAG7B,+BAAuB,KAAKC,QAHC;AAI7B,gCAAwB,KAAKA;AAJA,OAA/B;AAMD;;;;;;kBAGY7E,a;;;;;;;;ACvPF;;;;;;;;AAEb;;;;AACA;;;;;;;;AAEA;;;;IAIME,Y;AACJ;;;;AAIA,wBAAY/J,WAAZ,EAAyB8I,IAAzB,EAA+B;AAAA;;AAC7B;;;AAGA,SAAKA,IAAL,GAAYA,IAAZ;AACA;;;AAGA,SAAK9I,WAAL,GAAmBA,WAAnB;AACA;;;AAGA,SAAK2P,aAAL,GAAqB,IAArB;AACA;;;AAGA,SAAKC,UAAL,GAAkB,IAAlB;;AAEA;;;;AAIA,SAAKC,QAAL,GAAgB,KAAhB;AACA;;;AAGA,SAAKC,OAAL,GAAe,KAAf;AACA;;;AAGA,SAAKC,OAAL,GAAe,KAAf;AACD;;AAED;;;;;;;;;;AAwCA;;;;2BAIO;AACL,UAAI/B,KAAK,KAAKhO,WAAd;;AAEA,UAAIgO,GAAG/N,OAAH,CAAWuF,MAAf,EAAuB;AACrBwI,WAAG9E,MAAH,CAAUI,QAAV,CAAmB,wCAAnB;AACA,eAFqB,CAEb;AACT;;AAED0E,SAAG9E,MAAH,CAAUI,QAAV,CAAmB,sCAAnB;;AAEA;AACA,UAAI,CAAC,KAAK6C,QAAN,IAAkB,CAAC,KAAK6D,QAA5B,EAAsC;AACpC;AACD;;AAED;AACA,UAAIhC,GAAG/N,OAAH,CAAWyF,OAAf,EAAwB;AACtB,aAAKuK,aAAL;AACD;;AAED;AACA,UAAI,KAAKD,QAAT,EAAmB;AACjB;AACA,YAAI,CAAC,KAAKhK,KAAL,CAAWuD,IAAX,CAAgB,UAAhB,CAAL,EAAkC;AAChC,eAAKvD,KAAL,CAAWuD,IAAX,CAAgB,UAAhB,EAA4B,CAA5B;AACD;;AAED,aAAKvD,KAAL,CAAW3F,EAAX,CAAc;AACZ,0DAAgDC,iBAAEC,KAAF,CAAQ,KAAK6K,MAAb,EAAqB,IAArB;AADpC,SAAd;;AAIA,aAAKpF,KAAL,CAAW3F,EAAX,CAAc;AACZ,+BAAqBC,iBAAEC,KAAF,CAAQ,KAAK2K,IAAb,EAAmB,IAAnB;AADT,SAAd;;AAIA,aAAKlF,KAAL,CAAW3F,EAAX,CAAc;AACZ,kCAAwBC,iBAAEC,KAAF,CAAQ,KAAK4K,IAAb,EAAmB,IAAnB;AADZ,SAAd;AAGD;;AAED;AACA,UAAI,KAAKgB,QAAL,IAAiB,CAAC,KAAK6D,QAA3B,EAAqC;AACnC,aAAKjK,KAAL,CAAW1F,EAAX,CAAc;AACZ,0DAAgDC,iBAAEC,KAAF,CAAQ,KAAK2K,IAAb,EAAmB,IAAnB,CADpC;AAEZ,+BAAqB5K,iBAAEC,KAAF,CAAQ,KAAK2K,IAAb,EAAmB,IAAnB;AAFT,SAAd;;AAKA,aAAKnF,KAAL,CAAW1F,EAAX,CAAc;AACZ,kCAAwBC,iBAAEC,KAAF,CAAQ,KAAK4K,IAAb,EAAmB,IAAnB;AADZ,SAAd;AAGD;;AAED;AACA,4BAAE,KAAKrC,IAAP,EAAazI,EAAb,CAAgB,oBAAhB,EAAsCC,iBAAEC,KAAF,CAAQ,KAAK2P,UAAb,EAAyB,IAAzB,CAAtC;AACD;;AAED;;;;;;6BAGS;AACP,UAAI,KAAK/D,QAAT,EAAmB;AACjB,aAAKpG,KAAL,CAAW3E,GAAX,CAAe;AACb,0DAAgDd,iBAAEC,KAAF,CAAQ,KAAK2K,IAAb,EAAmB,IAAnB,CADnC;AAEb,+BAAqB5K,iBAAEC,KAAF,CAAQ,KAAK2K,IAAb,EAAmB,IAAnB;AAFR,SAAf;AAIA,aAAKnF,KAAL,CAAW3E,GAAX,CAAe;AACb,kCAAwBd,iBAAEC,KAAF,CAAQ,KAAK4K,IAAb,EAAmB,IAAnB;AADX,SAAf;AAGD;;AAED,UAAI,KAAK6E,QAAT,EAAmB;AACjB,aAAKhK,KAAL,CAAW5E,GAAX,CAAe;AACb,0DAAgDd,iBAAEC,KAAF,CAAQ,KAAK6K,MAAb,EAAqB,IAArB;AADnC,SAAf;AAGA,aAAKpF,KAAL,CAAW5E,GAAX,CAAe;AACb,+BAAqBd,iBAAEC,KAAF,CAAQ,KAAK2K,IAAb,EAAmB,IAAnB;AADR,SAAf;AAGA,aAAKlF,KAAL,CAAW5E,GAAX,CAAe;AACb,kCAAwBd,iBAAEC,KAAF,CAAQ,KAAK4K,IAAb,EAAmB,IAAnB;AADX,SAAf;AAGD;;AAED,UAAI,KAAKwE,aAAT,EAAwB;AACtB,aAAKA,aAAL,CAAmBjK,OAAnB,CAA2B,SAA3B;AACD;;AAED,4BAAE,KAAKoD,IAAP,EAAa1H,GAAb,CAAiB,oBAAjB,EAAuCd,iBAAEC,KAAF,CAAQ,KAAK2P,UAAb,EAAyB,IAAzB,CAAvC;AACA,4BAAE,KAAKpH,IAAL,CAAUqH,QAAZ,EAAsB/O,GAAtB,CAA0B,8CAA1B,EAA0Ed,iBAAEC,KAAF,CAAQ,KAAK4K,IAAb,EAAmB,IAAnB,CAA1E;AACA,4BAAE,KAAKrC,IAAL,CAAUqH,QAAZ,EAAsB/O,GAAtB,CAA0B,8CAA1B,EAA0Ed,iBAAEC,KAAF,CAAQ,KAAK6P,gBAAb,EAA+B,IAA/B,CAA1E;AACD;;;qCAEgB5L,C,EAAG;AAClB,UAAI,CAACA,CAAL,EAAQ;AACN,eAAO,KAAP;AACD;;AAED,aACE,KAAK6L,YAAL,CAAkB,KAAKT,UAAvB,EAAmCpL,EAAE8L,aAArC,KACA,KAAKD,YAAL,CAAkB,KAAKT,UAAvB,EAAmCpL,EAAEuK,MAArC,CADA,IAEA,KAAKsB,YAAL,CAAkB,KAAKrQ,WAAL,CAAiBkJ,MAAnC,EAA2C1E,EAAE8L,aAA7C,CAFA,IAGA,KAAKD,YAAL,CAAkB,KAAKrQ,WAAL,CAAiBkJ,MAAnC,EAA2C1E,EAAEuK,MAA7C,CAJF;AAMD;;;iCAEYtJ,S,EAAWvF,O,EAAS;AAC/B,UAAI,CAACuF,SAAD,IAAc,CAACvF,OAAnB,EAA4B;AAC1B,eAAO,KAAP;AACD;;AAEDA,gBAAU,sBAAEA,OAAF,CAAV;;AAEA,aACEA,QAAQgP,EAAR,CAAWzJ,SAAX,KACAA,UAAUiH,IAAV,CAAexM,OAAf,EAAwBC,MAAxB,GAAiC,CAFnC;AAID;;;qCAEgBqE,C,EAAG;AAClB,WAAKqL,QAAL,GAAgB,KAAKU,gBAAL,CAAsB/L,CAAtB,CAAhB;AACD;;;oCAEe;AACd,UAAIwJ,KAAK,KAAKhO,WAAd;;AAEA,WAAK2P,aAAL,GAAqB,KAAKK,QAAL,GAAgB,KAAKhK,KAArB,GAA6B,KAAKD,KAAvD;;AAEAiI,SAAG9E,MAAH,CAAUI,QAAV,CAAmB,gCAAnB;;AAEA,WAAKqG,aAAL,CAAmBjK,OAAnB,CACEpF,iBAAE8G,MAAF,CACE,IADF,EAEE,EAFF,EAGEoJ,kBAAU9K,OAHZ,EAIEsI,GAAG/N,OAAH,CAAWyF,OAJb,EAKE,EAAC0E,SAAS,QAAV,EAAoBqG,SAASzC,GAAG9E,MAAhC,EAAwC2D,MAAM,IAA9C,EALF,CADF;;AAUA;AACA;AACA,UAAM6D,iBAAiBC,OAAOC,SAAP,IACrBD,OAAOC,SAAP,CAAiBC,OADI,IAErBF,OAAOC,SAAP,CAAiBC,OAAjB,CAAyBC,WAF3B;;AAIA,WAAKlB,UAAL,GAAkBc,iBAChB,sBAAEE,UAAUC,OAAV,CAAkBC,WAAlB,CAA8B,KAAKnB,aAAL,CAAmB,CAAnB,CAA9B,EAAqDoB,aAArD,EAAF,CADgB,GAEhB,sBAAE,KAAKpB,aAAL,CAAmBjK,OAAnB,CAA2B,eAA3B,EAA4CgD,IAA5C,CAAiD,YAAjD,EAA+DsI,GAAjE,CAFF;;AAIA,WAAKpB,UAAL,CAAgBtG,QAAhB,CAAyB,wBAAzB;;AAEA,WAAKqG,aAAL,CAAmBtP,EAAnB,CAAsB,kBAAtB,EAA0CC,iBAAEC,KAAF,CAAQ,KAAK0Q,QAAb,EAAuB,IAAvB,CAA1C;AACA,WAAKtB,aAAL,CAAmBtP,EAAnB,CAAsB,mBAAtB,EAA2CC,iBAAEC,KAAF,CAAQ,KAAK2Q,QAAb,EAAuB,IAAvB,CAA3C;AACD;;AAED;;;;;;;;;+BAMW1M,C,EAAG;AACZ,UAAI,KAAKmL,aAAL,IAAsB,KAAKwB,SAAL,EAA1B,EAA4C;AAC1C,aAAKxB,aAAL,CAAmBjK,OAAnB,CAA2B,QAA3B;AACD;AACF;;AAED;;;;;;;;;;2BAOOlB,C,EAAG;AACR,UAAI,KAAK2M,SAAL,EAAJ,EAAsB;AACpB,aAAKhG,IAAL,CAAU3G,CAAV;AACD,OAFD,MAEO;AACL,aAAK0G,IAAL,CAAU1G,CAAV;AACD;AACF;;AAED;;;;;;;;;yBAMKA,C,EAAG;AACN,UAAI,KAAK2M,SAAL,MAAoB,KAAKpB,OAAzB,IAAoC,KAAKD,OAA7C,EAAsD;AACpD;AACD;;AAED,WAAKC,OAAL,GAAe,IAAf;AACA,WAAKD,OAAL,GAAe,KAAf;AACA,WAAKD,QAAL,GAAgB,KAAhB;;AAEA,UAAI7B,KAAK,KAAKhO,WAAd;;AAEAgO,SAAG5E,SAAH,CAAaC,KAAb,GAAqB,MAArB;AACA2E,SAAG5E,SAAH,CAAa5E,CAAb,GAAiBA,CAAjB;;AAEA;AACA,UACGA,MAAM,CAAC,KAAK2H,QAAN,IAAkB,KAAKpG,KAAL,CAAWwD,IAAX,CAAgB,MAAhB,MAA4B,OAApD,CAAD,IACC/E,KAAKA,EAAEgL,cAFV,EAGE;AACAhL,UAAE4M,eAAF;AACA5M,UAAEgL,cAAF;AACD;;AAED;AACA,UAAI,KAAK6B,SAAT,EAAoB;AAClB,8BAAE,KAAKvI,IAAP,EAAazI,EAAb,CAAgB,oBAAhB,EAAsCC,iBAAEC,KAAF,CAAQ,KAAK2P,UAAb,EAAyB,IAAzB,CAAtC;AACD;;AAED;AACAlC,SAAG9E,MAAH,CAAUI,QAAV,CAAmB,qBAAnB,EAA0C0B,WAA1C,CAAsD,oBAAtD;;AAEA,UAAI,KAAK2E,aAAT,EAAwB;AACtB,aAAKA,aAAL,CAAmBjK,OAAnB,CAA2B,MAA3B;AACD,OAFD,MAEO;AACL,aAAKuL,QAAL;AACD;AACF;;;+BAEU;AACT,WAAKnB,OAAL,GAAe,KAAf;AACA,WAAKC,OAAL,GAAe,KAAf;;AAEA,UAAI,KAAKsB,SAAT,EAAoB;AAClB;AACA,8BAAE,KAAKvI,IAAL,CAAUqH,QAAZ,EAAsB9P,EAAtB,CAAyB,8CAAzB,EAAyEC,iBAAEC,KAAF,CAAQ,KAAK4K,IAAb,EAAmB,IAAnB,CAAzE;AACA,8BAAE,KAAKrC,IAAL,CAAUqH,QAAZ,EAAsB9P,EAAtB,CAAyB,8CAAzB,EAAyEC,iBAAEC,KAAF,CAAQ,KAAK6P,gBAAb,EAA+B,IAA/B,CAAzE;AACD;;AAED;;;;;AAKA,WAAKpQ,WAAL,CAAiBoK,OAAjB,CAAyB,iBAAzB;AACD;;AAED;;;;;;;;;;yBAOK5F,C,EAAG;AACN,UAAI,KAAK8M,QAAL,MAAmB,KAAKvB,OAAxB,IAAmC,KAAKD,OAA5C,EAAqD;AACnD;AACD;;AAED,UAAI9B,KAAK,KAAKhO,WAAd;AAAA,UAA2B6P,WAAY,KAAKA,QAAL,IAAiB,KAAKU,gBAAL,CAAsB/L,CAAtB,CAAxD;;AAEA,WAAKsL,OAAL,GAAe,IAAf;AACA,WAAKC,OAAL,GAAe,KAAf;AACA,WAAKF,QAAL,GAAgB,KAAhB;;AAEA7B,SAAG5E,SAAH,CAAaC,KAAb,GAAqB,MAArB;AACA2E,SAAG5E,SAAH,CAAa5E,CAAb,GAAiBA,CAAjB;;AAEA;;AAEA;AACA,UAAIqL,QAAJ,EAAc;AACZ,aAAKC,OAAL,GAAe,KAAf;AACA;AACD;;AAED,UAAI,KAAKH,aAAT,EAAwB;AACtB,aAAKA,aAAL,CAAmBjK,OAAnB,CAA2B,MAA3B;AACD,OAFD,MAEO;AACL,aAAKwL,QAAL;AACD;AACF;;;+BAEU;AACT,WAAKpB,OAAL,GAAe,KAAf;AACA,WAAKC,OAAL,GAAe,KAAf;;AAEA,UAAI/B,KAAK,KAAKhO,WAAd;;AAEA;AACAgO,SAAG9E,MAAH,CAAUI,QAAV,CAAmB,oBAAnB,EAAyC0B,WAAzC,CAAqD,qBAArD;;AAEA;AACA,4BAAE,KAAKlC,IAAP,EAAa1H,GAAb,CAAiB,oBAAjB,EAAuCd,iBAAEC,KAAF,CAAQ,KAAK2P,UAAb,EAAyB,IAAzB,CAAvC;AACA,4BAAE,KAAKpH,IAAL,CAAUqH,QAAZ,EAAsB/O,GAAtB,CAA0B,8CAA1B,EAA0Ed,iBAAEC,KAAF,CAAQ,KAAK4K,IAAb,EAAmB,IAAnB,CAA1E;AACA,4BAAE,KAAKrC,IAAL,CAAUqH,QAAZ,EAAsB/O,GAAtB,CAA0B,8CAA1B,EAA0Ed,iBAAEC,KAAF,CAAQ,KAAK6P,gBAAb,EAA+B,IAA/B,CAA1E;;AAEA;;;;;AAKApC,SAAG5D,OAAH,CAAW,iBAAX;AACD;;;4BAEO;AACN,UAAI,KAAK4F,QAAT,EAAmB;AACjB,eAAO,KAAKhK,KAAL,CAAWoI,KAAX,EAAP;AACD;AACD,UAAI,KAAKjC,QAAT,EAAmB;AACjB,eAAO,KAAKpG,KAAL,CAAWqI,KAAX,EAAP;AACD;AACD,aAAO,KAAP;AACD;;AAED;;;;;;;;;gCAMY;AACV,aAAO,KAAKpO,WAAL,CAAiBkJ,MAAjB,CAAwBqI,QAAxB,CAAiC,qBAAjC,KACL,CAAC,KAAKvR,WAAL,CAAiBkJ,MAAjB,CAAwBqI,QAAxB,CAAiC,oBAAjC,CADH;AAED;;AAED;;;;;;;;;+BAMW;AACT,aAAO,KAAKvR,WAAL,CAAiBkJ,MAAjB,CAAwBqI,QAAxB,CAAiC,oBAAjC,KACL,CAAC,KAAKvR,WAAL,CAAiBkJ,MAAjB,CAAwBqI,QAAxB,CAAiC,qBAAjC,CADH;AAED;;;wBAnXW;AACV,aAAO,KAAKvR,WAAL,CAAiByJ,YAAjB,CAA8B1D,KAArC;AACD;;AAED;;;;;;;wBAIe;AACb,aAAO,KAAK/F,WAAL,CAAiByJ,YAAjB,CAA8B0C,QAA9B,EAAP;AACD;;AAED;;;;;;;wBAIY;AACV,aAAO,KAAKnM,WAAL,CAAiBiK,YAAjB,CAA8BjE,KAArC;AACD;;AAED;;;;;;;wBAIe;AACb,aAAO,KAAKhG,WAAL,CAAiBiK,YAAjB,CAA8B+F,QAA9B,EAAP;AACD;;AAED;;;;;;;wBAIgB;AACd,aAAO,CAAC,KAAKhQ,WAAL,CAAiBC,OAAjB,CAAyBuF,MAA1B,IAAoC,CAAC,CAAC,KAAKoK,UAAlD;AACD;;;;;;kBAoVY7F,Y;;;;;;;;ACzaF;;;;;;;;AAEb;;;;AACA;;;;;;;;AAEA;;;;IAIML,Y;AACJ;;;AAGA,wBAAY1J,WAAZ,EAAyB;AAAA;;AACvB;;;AAGA,SAAKA,WAAL,GAAmBA,WAAnB;AACA;;;AAGA,SAAK+F,KAAL,GAAa,KAAK/F,WAAL,CAAiBE,OAAjB,CAAyBgP,EAAzB,CAA4B,OAA5B,IAAuC,KAAKlP,WAAL,CAAiBE,OAAxD,GAAmE,KAAKF,WAAL,CAAiBC,OAAjB,CAAyB8F,KAAzB,GAC9E,KAAK/F,WAAL,CAAiBE,OAAjB,CAAyBwM,IAAzB,CAA8B,KAAK1M,WAAL,CAAiBC,OAAjB,CAAyB8F,KAAvD,CAD8E,GACd,KADlE;;AAGA,QAAI,KAAKA,KAAL,IAAe,KAAKA,KAAL,CAAW5F,MAAX,KAAsB,CAAzC,EAA6C;AAC3C,WAAK4F,KAAL,GAAa,KAAb;AACD;;AAED,SAAKyL,UAAL;AACD;;;;2BAEM;AACL,UAAI,CAAC,KAAKrF,QAAL,EAAL,EAAsB;AACpB;AACD;AACD,WAAKpG,KAAL,CAAW1F,EAAX,CAAc;AACZ,6BAAqBC,iBAAEC,KAAF,CAAQ,KAAKkR,OAAb,EAAsB,IAAtB;AADT,OAAd;AAGA,WAAK1L,KAAL,CAAW1F,EAAX,CAAc;AACZ,8BAAsBC,iBAAEC,KAAF,CAAQ,KAAKmR,QAAb,EAAuB,IAAvB;AADV,OAAd;AAGD;;;6BAEQ;AACP,UAAI,CAAC,KAAKvF,QAAL,EAAL,EAAsB;AACpB;AACD;AACD,WAAKpG,KAAL,CAAW3E,GAAX,CAAe,cAAf;AACD;;;iCAEY;AACX,UAAI,CAAC,KAAK+K,QAAL,EAAL,EAAsB;AACpB;AACD;;AAED,UAAId,MAAM,EAAV;;AAEA;AACE;AACA,WAAKtF,KAAL,CAAWsF,GAAX,EAFF,EAGE,KAAKtF,KAAL,CAAW2C,IAAX,CAAgB,OAAhB,CAHF,EAIE,KAAK3C,KAAL,CAAWwD,IAAX,CAAgB,YAAhB,CAJF,EAKEoI,GALF,CAKM,UAACC,IAAD,EAAU;AACd,YAAIA,QAASvG,QAAQ,EAArB,EAA0B;AACxBA,gBAAMuG,IAAN;AACD;AACF,OATD;;AAWA,UAAIvG,eAAe1J,mBAAnB,EAA8B;AAC5B0J,cAAM,KAAKwG,iBAAL,CAAuBxG,IAAIlI,MAAJ,CAAW,KAAKnD,WAAL,CAAiBmC,MAA5B,CAAvB,CAAN;AACD,OAFD,MAEO,IAAI,EAAE,OAAOkJ,GAAP,KAAe,QAAf,IAA2BA,eAAe5G,MAA5C,CAAJ,EAAyD;AAC9D4G,cAAM,EAAN;AACD;;AAED,WAAKtF,KAAL,CAAW+L,IAAX,CAAgB,OAAhB,EAAyBzG,GAAzB;AACD;;AAED;;;;;;;;;+BAMW;AACT,UAAI,CAAC,KAAKc,QAAL,EAAL,EAAsB;AACpB,eAAO,KAAP;AACD;;AAED,aAAO,KAAKpG,KAAL,CAAWsF,GAAX,EAAP;AACD;;AAED;;;;;;;;;;;6BAQSA,G,EAAK;AACZ,UAAI,CAAC,KAAKc,QAAL,EAAL,EAAsB;AACpB;AACD;;AAED,UAAI4F,WAAW,KAAKhM,KAAL,CAAW+L,IAAX,CAAgB,OAAhB,CAAf;;AAEAzG,YAAMA,MAAMA,GAAN,GAAY,EAAlB;;AAEA,UAAIA,SAAS0G,WAAWA,QAAX,GAAsB,EAA/B,CAAJ,EAAwC;AACtC;AACA;AACD;;AAED,WAAKhM,KAAL,CAAW+L,IAAX,CAAgB,OAAhB,EAAyBzG,GAAzB;;AAEA;;;;;AAKA,WAAKtF,KAAL,CAAWqE,OAAX,CAAmB;AACjByB,cAAM,QADW;AAEjB7L,qBAAa,KAAKA,WAFD;AAGjBiB,eAAO,KAAKjB,WAAL,CAAiBiB,KAHP;AAIjB8B,eAAOsI;AAJU,OAAnB;AAMD;;AAED;;;;;;;;;;;wCAQ8B;AAAA,UAAZA,GAAY,uEAAN,IAAM;;AAC5BA,YAAMA,MAAMA,GAAN,GAAY,KAAKrL,WAAL,CAAiBgJ,YAAjB,CAA8BgJ,cAA9B,EAAlB;;AAEA,UAAI,CAAC3G,GAAL,EAAU;AACR,eAAO,EAAP;AACD;;AAEDA,YAAM,KAAKrL,WAAL,CAAiBgJ,YAAjB,CAA8BiJ,oBAA9B,CAAmD5G,GAAnD,EAAwD,KAAxD,CAAN;;AAEA,UAAI,KAAKrL,WAAL,CAAiBC,OAAjB,CAAyBkG,aAAzB,KAA2C,KAA/C,EAAsD;AACpDkF,cAAMA,IAAI/I,OAAJ,CAAY,KAAZ,EAAmB,EAAnB,CAAN;AACD;;AAED,aAAO+I,GAAP;AACD;;AAED;;;;;;;+BAIW;AACT,aAAQ,KAAKtF,KAAL,KAAe,KAAvB;AACD;;AAED;;;;;;;gCAIY;AACV,aAAO,KAAKoG,QAAL,MAAmB,CAAC,KAAK1B,UAAL,EAA3B;AACD;;AAED;;;;;;;iCAIa;AACX,aAAO,KAAK0B,QAAL,MAAoB,KAAKpG,KAAL,CAAW+L,IAAX,CAAgB,UAAhB,MAAgC,IAA3D;AACD;;AAED;;;;;;;;;8BAMU;AACR,UAAI,KAAK3F,QAAL,EAAJ,EAAqB;AACnB,aAAKpG,KAAL,CAAW+L,IAAX,CAAgB,UAAhB,EAA4B,IAA5B;AACD;AACF;;AAED;;;;;;;;;6BAMS;AACP,UAAI,KAAK3F,QAAL,EAAJ,EAAqB;AACnB,aAAKpG,KAAL,CAAW+L,IAAX,CAAgB,UAAhB,EAA4B,KAA5B;AACD;AACF;;AAED;;;;;;;;6BAKS;AACP,UAAI,CAAC,KAAK3F,QAAL,EAAL,EAAsB;AACpB;AACD;;AAED,UACG,KAAKnM,WAAL,CAAiBC,OAAjB,CAAyBgG,iBAAzB,KAA+C,KAAhD,IACA,KAAKjG,WAAL,CAAiBgJ,YAAjB,CAA8BkJ,cAA9B,EAFF,EAGE;AACA;AACA;AACD;;AAED,WAAK1E,QAAL,CAAc,KAAKqE,iBAAL,EAAd;AACD;;AAED;;;;;;;;;;6BAOSrN,C,EAAG;AACV,WAAKxE,WAAL,CAAiBoJ,SAAjB,CAA2BC,KAA3B,GAAmC,cAAnC;AACA,WAAKrJ,WAAL,CAAiBoJ,SAAjB,CAA2B5E,CAA3B,GAA+BA,CAA/B;;AAEA,UAAI6G,MAAM,KAAK3D,QAAL,EAAV;;AAEA,UAAI2D,QAAQ7G,EAAEzB,KAAd,EAAqB;AACnB,aAAK/C,WAAL,CAAiBwN,QAAjB,CAA0BnC,GAA1B;AACD;AACF;;AAED;;;;;;;;;;4BAOQ7G,C,EAAG;AACT,WAAKxE,WAAL,CAAiBoJ,SAAjB,CAA2BC,KAA3B,GAAmC,aAAnC;AACA,WAAKrJ,WAAL,CAAiBoJ,SAAjB,CAA2B5E,CAA3B,GAA+BA,CAA/B;;AAEA,UAAI6G,MAAM,KAAK3D,QAAL,EAAV;;AAEA,UAAI2D,QAAQ7G,EAAEzB,KAAd,EAAqB;AACnB,aAAK/C,WAAL,CAAiBwN,QAAjB,CAA0BnC,GAA1B;AACD;AACF;;;;;;kBAGY3B,Y;;;;;;;;AClQF;;AAEb,kBAAkB,mBAAO,CAAC,EAAc;AACxC,cAAc,mBAAO,CAAC,EAAe;;AAErC;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,mBAAmB;AACnB;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,aAAa,mBAAmB;AAChC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,aAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA,iBAAiB,cAAc;AAC/B;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA,qEAAqE,kCAAkC,EAAE;;AAEzG;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,gBAAgB,YAAY;AAC5B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;ACjeA;AACA,iBAAiB,mBAAO,CAAC,CAAY;AACrC,cAAc,mBAAO,CAAC,EAAgB;;AAEtC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,SAAS;AACT;;AAEA;AACA;AACA;AACA;;AAEA,yBAAyB,IAAI;AAC7B,wBAAwB,EAAE,WAAW,EAAE;AACvC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA,aAAa,OAAO;AACpB;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF,aAAa,OAAO;AACpB;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF,aAAa,OAAO;AACpB;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,EAAE;AACF;AACA;;AAEA,YAAY,OAAO;AACnB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;ACzOa;;AAEb,iBAAiB,mBAAO,CAAC,EAAa;;AAEtC;AACA;;AAEA;AACA;;AAEA,mCAAmC,SAAS;AAC5C;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;AC5Ba;;AAEb;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;ACTA,kBAAkB,mBAAO,CAAC,CAAe;AACzC,YAAY,mBAAO,CAAC,EAAS;;AAE7B;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,kCAAkC;AAClC;AACA;AACA,uCAAuC,SAAS;AAChD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,wDAAwD,uCAAuC;AAC/F,sDAAsD,qCAAqC;;AAE3F;AACA;;AAEA;AACA;;AAEA;AACA;AACA,EAAE;AACF,CAAC;;AAED;;;;;;;AC7EA,kBAAkB,mBAAO,CAAC,CAAe;;AAEzC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,qCAAqC,SAAS;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,yBAAyB;;AAEzB;;AAEA;AACA;AACA;;AAEA,yCAAyC,SAAS;AAClD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,qCAAqC,SAAS;AAC9C;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;;;;AC/Fa;;;;;;;;AAEb;;;;AACA;;;;;;;;AAEA;;;;IAIMC,Y;AACJ;;;AAGA,wBAAY3J,WAAZ,EAAyB;AAAA;;AACvB;;;AAGA,SAAKA,WAAL,GAAmBA,WAAnB;AACD;;AAED;;;;;;;2BAmDO;AACL;AACA,UAAI,KAAKA,WAAL,CAAiBC,OAAjB,CAAyBgB,KAA7B,EAAoC;AAClC,aAAKA,KAAL,GAAa,KAAKwK,WAAL,CAAiB,KAAKzL,WAAL,CAAiBC,OAAjB,CAAyBgB,KAA1C,CAAb;AACA;AACD;;AAED;AACA,UAAI,CAAC,KAAKA,KAAN,IAAe,CAAC,CAAC,KAAKjB,WAAL,CAAiByJ,YAAjB,CAA8B/B,QAA9B,EAArB,EAA+D;AAC7D,aAAKzG,KAAL,GAAa,KAAKwK,WAAL,CACX,KAAKzL,WAAL,CAAiByJ,YAAjB,CAA8B/B,QAA9B,EADW,EAC+B,KAAK1H,WAAL,CAAiBC,OAAjB,CAAyBgG,iBADxD,CAAb;AAGD;AACF;;;6BAEQ;AACP,WAAKjG,WAAL,CAAiBE,OAAjB,CAAyB+K,UAAzB,CAAoC,OAApC;AACD;;AAED;;;;;;;;;qCAMiB;AACf,UAAI,CAAC,KAAKM,QAAL,EAAL,EAAsB;AACpB,eAAO,EAAP;AACD;;AAED,aAAO,KAAKtK,KAAL,CAAWkC,MAAX,CAAkB,KAAKhB,MAAvB,CAAP;AACD;;AAED;;;;;;;;mCAKekJ,G,EAAK;AAClB,UAAIpK,QAAQoK,MAAM,KAAKI,WAAL,CAAiBJ,GAAjB,CAAN,GAA8B,IAA1C;;AAEA,WAAKpK,KAAL,GAAaA,QAAQA,KAAR,GAAgB,IAA7B;AACD;;AAED;;;;;;;;;;;;gCASYoK,G,EAA6D;AAAA,UAAxD8G,iBAAwD,uEAApC,IAAoC;AAAA,UAA9BjM,oBAA8B,uEAAP,KAAO;;AACvE,UAAI7D,0BAA0B,CAAC8P,iBAAD,IAAsB,CAACjM,oBAArD;;AAEA,UAAIjF,QAAQ,IAAIU,mBAAJ,CAAc,KAAKsQ,oBAAL,CAA0B5G,GAA1B,CAAd,EAA8C,KAAKlJ,MAAnD,EAA2DE,uBAA3D,CAAZ;;AAEA,UAAI,CAACpB,MAAMsC,OAAN,EAAL,EAAsB;AACpB,YAAI4O,iBAAJ,EAAuB;AACrBlR,kBAAQ,KAAKgN,gBAAL,EAAR;AACD;;AAED;;;;;AAKA,aAAKjO,WAAL,CAAiBoK,OAAjB,CAAyB,oBAAzB,EAA+CnJ,KAA/C,EAAsDoK,GAAtD;AACD;;AAED,UAAI,CAAC,KAAK+G,cAAL,EAAL,EAA4B;AAC1B;AACAnR,cAAM+B,KAAN,GAAc,CAAd;AACD;;AAED,aAAO/B,KAAP;AACD;;;uCAEkB;AACjB,UAAI,KAAKoR,QAAL,IAAkB,KAAKA,QAAL,KAAkB,KAAKpR,KAA7C,EAAqD;AACnD,eAAO,KAAKA,KAAZ;AACD;;AAED,UAAIoR,WAAW,KAAKJ,oBAAL,CAA0B,KAAKI,QAA/B,CAAf;;AAEA,UAAIpR,QAAQ,IAAIU,mBAAJ,CAAc0Q,QAAd,EAAwB,KAAKlQ,MAA7B,CAAZ;;AAEA,UAAI,CAAClB,MAAMsC,OAAN,EAAL,EAAsB;AACpB+O,gBAAQC,IAAR,CAAa,oFAAb;AACA,eAAO,KAAKtR,KAAL,GAAa,KAAKA,KAAlB,GAA0B,IAAIU,mBAAJ,CAAc,SAAd,EAAyB,KAAKQ,MAA9B,CAAjC;AACD;;AAED,aAAOlB,KAAP;AACD;;AAED;;;;;;kCAGc;AACZ,UAAI,CAAC,KAAKsK,QAAL,EAAL,EAAsB;AACpB,aAAKtK,KAAL,GAAa,KAAKgN,gBAAL,EAAb;AACD;;AAED,aAAO,KAAKhN,KAAZ;AACD;;AAED;;;;;;;;;;yCAOqBA,K,EAAyB;AAAA,UAAlBC,SAAkB,uEAAN,IAAM;;AAC5C,UAAIsR,mBAAmB,KAAvB;;AAEAlS,uBAAEiI,IAAF,CAAO,KAAKvI,WAAL,CAAiBsG,UAAxB,EAAoC,UAAUC,IAAV,EAAgBoE,GAAhB,EAAqB;AACvD,YAAI6H,qBAAqB,KAAzB,EAAgC;AAC9B;AACA;AACD;AACDA,2BAAmB7H,IAAI8H,YAAJ,CAAiBxR,KAAjB,EAAwBC,SAAxB,CAAnB;AACD,OAND;;AAQA,aAAOsR,mBAAmBA,gBAAnB,GAAsCvR,KAA7C;AACD;;AAED;;;;;;;qCAIiB;AACf,aAAO,CAAC,KAAKsK,QAAL,EAAD,IAAoB,CAAC,KAAKtK,KAAL,CAAWsC,OAAX,EAA5B;AACD;;AAED;;;;;;;qCAIiB;AACf,aAAQ,KAAKvD,WAAL,CAAiBC,OAAjB,CAAyBmG,QAAzB,KAAsC,KAA9C;AACD;;AAED;;;;;;;+BAIW;AACT,aAAO,KAAKnF,KAAL,YAAsBU,mBAA7B;AACD;;;wBAtMc;AACb,aAAO,KAAK3B,WAAL,CAAiBC,OAAjB,CAAyBqF,aAAzB,GACL,KAAKtF,WAAL,CAAiBC,OAAjB,CAAyBqF,aADpB,GACqC,KAAKiG,QAAL,KAAkB,KAAKtK,KAAvB,GAA+B,IAD3E;AAED;;AAED;;;;;;wBAGa;AACX,UAAI,KAAKjB,WAAL,CAAiBC,OAAjB,CAAyBkC,MAA7B,EAAqC;AACnC,eAAO,KAAKnC,WAAL,CAAiBC,OAAjB,CAAyBkC,MAAhC;AACD;;AAED,UAAI,KAAKoJ,QAAL,MAAmB,KAAKtK,KAAL,CAAWyR,eAAX,EAAnB,IAAmD,KAAKzR,KAAL,CAAWkB,MAAX,CAAkBuC,KAAlB,CAAwB,MAAxB,CAAvD,EAAwF;AACtF,eAAO,KAAK0N,cAAL,KAAwB,MAAxB,GAAiC,KAAxC;AACD;;AAED,UAAI,KAAK7G,QAAL,EAAJ,EAAqB;AACnB,eAAO,KAAKtK,KAAL,CAAWkB,MAAlB;AACD;;AAED,aAAO,KAAP;AACD;;AAED;;;;;;;;wBAKY;AACV,aAAO,KAAKnC,WAAL,CAAiBE,OAAjB,CAAyBwI,IAAzB,CAA8B,OAA9B,CAAP;AACD;;AAED;;;;;;;sBAMU3F,K,EAAO;AACf,WAAK/C,WAAL,CAAiBE,OAAjB,CAAyBwI,IAAzB,CAA8B,OAA9B,EAAuC3F,KAAvC;;AAEA,UAAKA,iBAAiBpB,mBAAlB,IAAiC,KAAK3B,WAAL,CAAiBC,OAAjB,CAAyBkC,MAAzB,KAAoC,MAAzE,EAAkF;AAChF;AACA,aAAKnC,WAAL,CAAiBC,OAAjB,CAAyBkC,MAAzB,GAAkC,KAAKlB,KAAL,CAAWkB,MAA7C;AACD;AACF;;;;;;kBA2JYwH,Y;;;;;;;;AChOF;;;;;;;;AAEb;;;;;;;;AAEA;;;;IAIMK,a;AACJ;;;AAGA,yBAAYhK,WAAZ,EAAyB;AAAA;;AACvB;;;AAGA,SAAKA,WAAL,GAAmBA,WAAnB;AACA;;;AAGA,SAAKkJ,MAAL,GAAc,IAAd;AACD;;;;2BAUM;AACL;;;AAGA,UAAIA,SAAS,KAAKA,MAAL,GAAc,sBAAE,KAAKjJ,OAAL,CAAaoG,QAAf,CAA3B;;AAEA,UAAI,KAAKpG,OAAL,CAAaoF,WAAjB,EAA8B;AAC5B6D,eAAOI,QAAP,CAAgB,KAAKrJ,OAAL,CAAaoF,WAA7B;AACD;;AAED,UAAI,KAAKpF,OAAL,CAAasF,UAAjB,EAA6B;AAC3B2D,eAAOI,QAAP,CAAgB,wBAAhB;AACD;;AAED,UAAI,KAAKqJ,iBAAL,EAAJ,EAA8B;AAC5B,aAAK1S,OAAL,CAAamG,QAAb,GAAwB,IAAxB;AACA8C,eAAOI,QAAP,CAAgB,wBAAhB;AACD,OAHD,MAGO;AACL,aAAKrJ,OAAL,CAAamG,QAAb,GAAwB,KAAxB;AACD;AACF;;;6BAEQ;AACP;AACA,UAAIwM,eAAe,KAAK5S,WAAL,CAAiByF,SAAjB,GAA6B,KAAKzF,WAAL,CAAiByF,SAA9C,GAA0D,IAA7E;;AAEA,UAAImN,YAAJ,EAAkB;AAChB,aAAK1J,MAAL,CAAY2J,QAAZ,CAAqBD,YAArB;AACD;AACF;;;6BAEQ;AACP,WAAK1J,MAAL,CAAY4J,MAAZ;AACD;;;wCAEmB;AAClB,aACE,CAAC,KAAK7S,OAAL,CAAamG,QAAb,IAA0B,KAAKpG,WAAL,CAAiBgJ,YAAjB,CAA8BuC,QAA9B,MAA4C,KAAKtK,KAAL,CAAWyR,eAAX,EAAvE,KACC,KAAKzS,OAAL,CAAamG,QAAb,KAA0B,KAD3B,KAEC,CAAC,KAAKnG,OAAL,CAAakC,MAAd,IAAyB,KAAKlC,OAAL,CAAakC,MAAb,IAAuB,CAAC,KAAKlC,OAAL,CAAakC,MAAb,CAAoBuC,KAApB,CAA0B,eAA1B,CAFlD,CADF;AAKD;;AAED;;;;;;6BAGS;AACP,UAAI,CAAC,KAAK1E,WAAL,CAAiBgJ,YAAjB,CAA8BuC,QAA9B,EAAL,EAA+C;AAC7C;AACD;;AAED,UAAIwH,WAAY,KAAK9S,OAAL,CAAasF,UAAb,KAA4B,IAA5C;AAAA,UACEwI,SAASgF,WAAW,KAAK9S,OAAL,CAAawG,OAAxB,GAAkC,KAAKxG,OAAL,CAAa+G,WAD1D;;AAGA,UAAIgM,kBAAkB,KAAK9J,MAAL,CAAYwD,IAAZ,CAAiB,4CAAjB,CAAtB;AAAA,UACEuG,WAAW,KAAK/J,MAAL,CAAYwD,IAAZ,CAAiB,qCAAjB,CADb;AAAA,UAEEwG,aAAa,KAAKhK,MAAL,CAAYwD,IAAZ,CAAiB,uCAAjB,CAFf;;AAIA,UAAIyG,OAAO,KAAKlS,KAAL,CAAWmS,WAAX,EAAX;;AAEA;AACA,UAAIH,SAAS9S,MAAb,EAAqB;AACnB8S,iBAASrG,GAAT,CAAamG,WAAW,KAAX,GAAmB,MAAhC,EAAwC,CAACA,WAAWhF,OAAOlL,GAAP,CAAW+D,MAAtB,GAA+BmH,OAAOlL,GAAP,CAAW8D,OAA3C,KAAuD,IAAIwM,KAAK7R,CAAhE,CAAxC;AACD;AACD,UAAI4R,WAAW/S,MAAf,EAAuB;AACrB+S,mBAAWtG,GAAX,CAAemG,WAAW,KAAX,GAAmB,MAAlC,EAA0C,CAACA,WAAWhF,OAAO/K,KAAP,CAAa4D,MAAxB,GAAiCmH,OAAO/K,KAAP,CAAa2D,OAA/C,KAA2D,IAAIwM,KAAK1R,CAApE,CAA1C;AACD;AACD,UAAIuR,gBAAgB7S,MAApB,EAA4B;AAC1B6S,wBAAgBpG,GAAhB,CAAoB;AAClB,iBAAOmB,OAAOjL,UAAP,CAAkB8D,MAAlB,GAA2BuM,KAAK3R,CAAL,GAASuM,OAAOjL,UAAP,CAAkB8D,MAD3C;AAElB,kBAAQuM,KAAK5R,CAAL,GAASwM,OAAOjL,UAAP,CAAkB6D;AAFjB,SAApB;AAID;;AAED;AACA,WAAKuC,MAAL,CAAYwD,IAAZ,CAAiB,yBAAjB,EACGE,GADH,CACO,iBADP,EAC0B,KAAK3L,KAAL,CAAWoS,eAAX,GAA6BC,WAA7B,EAD1B,EA7BO,CA8BgE;;AAEvE;AACA,UAAIC,WAAW,KAAKtS,KAAL,CAAWqS,WAAX,EAAf;;AAEA,UAAIE,UAAU,EAAd;;AAEA,UAAI,KAAKvT,OAAL,CAAasF,UAAjB,EAA6B;AAC3BiO,iDAAuCD,QAAvC;AACD,OAFD,MAEO;AACLC,kDAAwCD,QAAxC;AACD;;AAED,WAAKrK,MAAL,CAAYwD,IAAZ,CAAiB,0BAAjB,EAA6CE,GAA7C,CAAiD,YAAjD,EAA+D4G,OAA/D;AACD;;;wBAlGa;AACZ,aAAO,KAAKxT,WAAL,CAAiBC,OAAxB;AACD;;;wBAEW;AACV,aAAO,KAAKD,WAAL,CAAiBgJ,YAAjB,CAA8B/H,KAArC;AACD;;;;;;kBA+FY+I,a;;;;;;;;AC5HF;;AAEb;;;;;;;;;;;;;IAIME,Y;AACJ;;;AAGA,wBAAYlK,WAAZ,EAAyB;AAAA;;AACvB;;;AAGA,SAAKA,WAAL,GAAmBA,WAAnB;AACA;;;AAGA,SAAKgG,KAAL,GAAa,IAAb;AACD;;;;+BAEU;AACT,aAAO,CAAC,CAAC,KAAKA,KAAd;AACD;;;2BAEM;AACL;;;AAGA,WAAKA,KAAL,GAAa,KAAKhG,WAAL,CAAiBC,OAAjB,CAAyB+F,KAAzB,GACX,KAAKhG,WAAL,CAAiBE,OAAjB,CAAyBwM,IAAzB,CAA8B,KAAK1M,WAAL,CAAiBC,OAAjB,CAAyB+F,KAAvD,CADW,GACqD,IADlE;;AAGA,UAAI,KAAKA,KAAL,IAAe,KAAKA,KAAL,CAAW7F,MAAX,KAAsB,CAAzC,EAA6C;AAC3C;AACA,aAAK6F,KAAL,GAAa,IAAb;AACD;AACF;;;6BAEQ;AACP,UAAI,KAAKgK,QAAL,EAAJ,EAAqB;AACnB,aAAKhK,KAAL,CAAW5E,GAAX,CAAe,cAAf;AACD;AACF;;AAED;;;;;;6BAGS;AACP,UAAI,CAAC,KAAKpB,WAAL,CAAiBgJ,YAAjB,CAA8BuC,QAA9B,EAAD,IAA6C,CAAC,KAAKyE,QAAL,EAAlD,EAAmE;AACjE;AACD;;AAED,UAAIyD,WAAW,KAAKzT,WAAL,CAAiBgJ,YAAjB,CAA8BgJ,cAA9B,EAAf;;AAEA,UAAI0B,SAAS,EAAC,cAAcD,QAAf,EAAb;;AAEA,UAAIE,MAAM,KAAK3N,KAAL,CAAW0G,IAAX,CAAgB,GAAhB,EAAqBkH,EAArB,CAAwB,CAAxB,CAAV;;AAEA,UAAID,IAAIxT,MAAJ,GAAa,CAAjB,EAAoB;AAClBwT,YAAI/G,GAAJ,CAAQ8G,MAAR;AACD,OAFD,MAEO;AACL,aAAK1N,KAAL,CAAW4G,GAAX,CAAe8G,MAAf;AACD;AACF;;;;;;kBAGYxJ,Y","file":"bootstrap-colorpicker.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"jquery\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"bootstrap-colorpicker\", [\"jquery\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"bootstrap-colorpicker\"] = factory(require(\"jquery\"));\n\telse\n\t\troot[\"bootstrap-colorpicker\"] = factory(root[\"jQuery\"]);\n})(window, function(__WEBPACK_EXTERNAL_MODULE__0__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 7);\n","module.exports = __WEBPACK_EXTERNAL_MODULE__0__;","'use strict';\n\nimport $ from 'jquery';\n\n/**\n * Colorpicker extension class.\n */\nclass Extension {\n  /**\n   * @param {Colorpicker} colorpicker\n   * @param {Object} options\n   */\n  constructor(colorpicker, options = {}) {\n    /**\n     * The colorpicker instance\n     * @type {Colorpicker}\n     */\n    this.colorpicker = colorpicker;\n    /**\n     * Extension options\n     *\n     * @type {Object}\n     */\n    this.options = options;\n\n    if (!(this.colorpicker.element && this.colorpicker.element.length)) {\n      throw new Error('Extension: this.colorpicker.element is not valid');\n    }\n\n    this.colorpicker.element.on('colorpickerCreate.colorpicker-ext', $.proxy(this.onCreate, this));\n    this.colorpicker.element.on('colorpickerDestroy.colorpicker-ext', $.proxy(this.onDestroy, this));\n    this.colorpicker.element.on('colorpickerUpdate.colorpicker-ext', $.proxy(this.onUpdate, this));\n    this.colorpicker.element.on('colorpickerChange.colorpicker-ext', $.proxy(this.onChange, this));\n    this.colorpicker.element.on('colorpickerInvalid.colorpicker-ext', $.proxy(this.onInvalid, this));\n    this.colorpicker.element.on('colorpickerShow.colorpicker-ext', $.proxy(this.onShow, this));\n    this.colorpicker.element.on('colorpickerHide.colorpicker-ext', $.proxy(this.onHide, this));\n    this.colorpicker.element.on('colorpickerEnable.colorpicker-ext', $.proxy(this.onEnable, this));\n    this.colorpicker.element.on('colorpickerDisable.colorpicker-ext', $.proxy(this.onDisable, this));\n  }\n\n  /**\n   * Function called every time a new color needs to be created.\n   * Return false to skip this resolver and continue with other extensions' ones\n   * or return anything else to consider the color resolved.\n   *\n   * @param {ColorItem|String|*} color\n   * @param {boolean} realColor if true, the color should resolve into a real (not named) color code\n   * @return {ColorItem|String|*}\n   */\n  resolveColor(color, realColor = true) {\n    return false;\n  }\n\n  /**\n   * Method called after the colorpicker is created\n   *\n   * @listens Colorpicker#colorpickerCreate\n   * @param {Event} event\n   */\n  onCreate(event) {\n    // to be extended\n  }\n\n  /**\n   * Method called after the colorpicker is destroyed\n   *\n   * @listens Colorpicker#colorpickerDestroy\n   * @param {Event} event\n   */\n  onDestroy(event) {\n    this.colorpicker.element.off('.colorpicker-ext');\n  }\n\n  /**\n   * Method called after the colorpicker is updated\n   *\n   * @listens Colorpicker#colorpickerUpdate\n   * @param {Event} event\n   */\n  onUpdate(event) {\n    // to be extended\n  }\n\n  /**\n   * Method called after the colorpicker color is changed\n   *\n   * @listens Colorpicker#colorpickerChange\n   * @param {Event} event\n   */\n  onChange(event) {\n    // to be extended\n  }\n\n  /**\n   * Method called when the colorpicker color is invalid\n   *\n   * @listens Colorpicker#colorpickerInvalid\n   * @param {Event} event\n   */\n  onInvalid(event) {\n    // to be extended\n  }\n\n  /**\n   * Method called after the colorpicker is hidden\n   *\n   * @listens Colorpicker#colorpickerHide\n   * @param {Event} event\n   */\n  onHide(event) {\n    // to be extended\n  }\n\n  /**\n   * Method called after the colorpicker is shown\n   *\n   * @listens Colorpicker#colorpickerShow\n   * @param {Event} event\n   */\n  onShow(event) {\n    // to be extended\n  }\n\n  /**\n   * Method called after the colorpicker is disabled\n   *\n   * @listens Colorpicker#colorpickerDisable\n   * @param {Event} event\n   */\n  onDisable(event) {\n    // to be extended\n  }\n\n  /**\n   * Method called after the colorpicker is enabled\n   *\n   * @listens Colorpicker#colorpickerEnable\n   * @param {Event} event\n   */\n  onEnable(event) {\n    // to be extended\n  }\n}\n\nexport default Extension;\n","/**\n * Color manipulation class, specific for Bootstrap Colorpicker\n */\nimport QixColor from 'color';\n\n/**\n * HSVA color data class, containing the hue, saturation, value and alpha\n * information.\n */\nclass HSVAColor {\n  /**\n   * @param {number|int} h\n   * @param {number|int} s\n   * @param {number|int} v\n   * @param {number|int} a\n   */\n  constructor(h, s, v, a) {\n    this.h = isNaN(h) ? 0 : h;\n    this.s = isNaN(s) ? 0 : s;\n    this.v = isNaN(v) ? 0 : v;\n    this.a = isNaN(h) ? 1 : a;\n  }\n\n  toString() {\n    return `${this.h}, ${this.s}%, ${this.v}%, ${this.a}`;\n  }\n}\n\n/**\n * HSVA color manipulation\n */\nclass ColorItem {\n\n  /**\n   * Returns the HSVAColor class\n   *\n   * @static\n   * @example let colorData = new ColorItem.HSVAColor(360, 100, 100, 1);\n   * @returns {HSVAColor}\n   */\n  static get HSVAColor() {\n    return HSVAColor;\n  }\n\n  /**\n   * Applies a method of the QixColor API and returns a new Color object or\n   * the return value of the method call.\n   *\n   * If no argument is provided, the internal QixColor object is returned.\n   *\n   * @param {String} fn QixColor function name\n   * @param args QixColor function arguments\n   * @example let darkerColor = color.api('darken', 0.25);\n   * @example let luminosity = color.api('luminosity');\n   * @example color = color.api('negate');\n   * @example let qColor = color.api().negate();\n   * @returns {ColorItem|QixColor|*}\n   */\n  api(fn, ...args) {\n    if (arguments.length === 0) {\n      return this._color;\n    }\n\n    let result = this._color[fn].apply(this._color, args);\n\n    if (!(result instanceof QixColor)) {\n      // return result of the method call\n      return result;\n    }\n\n    return new ColorItem(result, this.format);\n  }\n\n  /**\n   * Returns the original ColorItem constructor data,\n   * plus a 'valid' flag to know if it's valid or not.\n   *\n   * @returns {{color: *, format: String, valid: boolean}}\n   */\n  get original() {\n    return this._original;\n  }\n\n  /**\n   * @param {ColorItem|HSVAColor|QixColor|String|*|null} color Color data\n   * @param {String|null} format Color model to convert to by default. Supported: 'rgb', 'hsl', 'hex'.\n   * @param {boolean} disableHexInputFallback Disable fixing hex3 format\n   */\n  constructor(color = null, format = null, disableHexInputFallback = false) {\n    this.replace(color, format, disableHexInputFallback);\n  }\n\n  /**\n   * Replaces the internal QixColor object with a new one.\n   * This also replaces the internal original color data.\n   *\n   * @param {ColorItem|HSVAColor|QixColor|String|*|null} color Color data to be parsed (if needed)\n   * @param {String|null} format Color model to convert to by default. Supported: 'rgb', 'hsl', 'hex'.\n   * @param {boolean} disableHexInputFallback Disable fixing hex3 format\n   * @example color.replace('rgb(255,0,0)', 'hsl');\n   * @example color.replace(hsvaColorData);\n   */\n  replace(color, format = null, disableHexInputFallback = false) {\n    format = ColorItem.sanitizeFormat(format);\n\n    /**\n     * @type {{color: *, format: String}}\n     * @private\n     */\n    this._original = {\n      color: color,\n      format: format,\n      valid: true\n    };\n    /**\n     * @type {QixColor}\n     * @private\n     */\n    this._color = ColorItem.parse(color, disableHexInputFallback);\n\n    if (this._color === null) {\n      this._color = QixColor();\n      this._original.valid = false;\n      return;\n    }\n\n    /**\n     * @type {*|string}\n     * @private\n     */\n    this._format = format ? format :\n      (ColorItem.isHex(color) ? 'hex' : this._color.model);\n  }\n\n  /**\n   * Parses the color returning a Qix Color object or null if cannot be\n   * parsed.\n   *\n   * @param {ColorItem|HSVAColor|QixColor|String|*|null} color Color data\n   * @param {boolean} disableHexInputFallback Disable fixing hex3 format\n   * @example let qColor = ColorItem.parse('rgb(255,0,0)');\n   * @static\n   * @returns {QixColor|null}\n   */\n  static parse(color, disableHexInputFallback = false) {\n    if (color instanceof QixColor) {\n      return color;\n    }\n\n    if (color instanceof ColorItem) {\n      return color._color;\n    }\n\n    let format = null;\n\n    if (color instanceof HSVAColor) {\n      color = [color.h, color.s, color.v, isNaN(color.a) ? 1 : color.a];\n    } else {\n      color = ColorItem.sanitizeString(color);\n    }\n\n    if (color === null) {\n      return null;\n    }\n\n    if (Array.isArray(color)) {\n      format = 'hsv';\n    }\n\n    if (ColorItem.isHex(color) && (color.length !== 6 && color.length !== 7) && disableHexInputFallback) {\n      return null;\n    }\n\n    try {\n      return QixColor(color, format);\n    } catch (e) {\n      return null;\n    }\n  }\n\n  /**\n   * Sanitizes a color string, adding missing hash to hexadecimal colors\n   * and converting 'transparent' to a color code.\n   *\n   * @param {String|*} str Color string\n   * @example let colorStr = ColorItem.sanitizeString('ffaa00');\n   * @static\n   * @returns {String|*}\n   */\n  static sanitizeString(str) {\n    if (!(typeof str === 'string' || str instanceof String)) {\n      return str;\n    }\n\n    if (str.match(/^[0-9a-f]{2,}$/i)) {\n      return `#${str}`;\n    }\n\n    if (str.toLowerCase() === 'transparent') {\n      return '#FFFFFF00';\n    }\n\n    return str;\n  }\n\n  /**\n   * Detects if a value is a string and a color in hexadecimal format (in any variant).\n   *\n   * @param {String} str\n   * @example ColorItem.isHex('rgba(0,0,0)'); // false\n   * @example ColorItem.isHex('ffaa00'); // true\n   * @example ColorItem.isHex('#ffaa00'); // true\n   * @static\n   * @returns {boolean}\n   */\n  static isHex(str) {\n    if (!(typeof str === 'string' || str instanceof String)) {\n      return false;\n    }\n\n    return !!str.match(/^#?[0-9a-f]{2,}$/i);\n  }\n\n  /**\n   * Sanitizes a color format to one supported by web browsers.\n   * Returns an empty string of the format can't be recognised.\n   *\n   * @param {String|*} format\n   * @example ColorItem.sanitizeFormat('rgba'); // 'rgb'\n   * @example ColorItem.isHex('hex8'); // 'hex'\n   * @example ColorItem.isHex('invalid'); // ''\n   * @static\n   * @returns {String} 'rgb', 'hsl', 'hex' or ''.\n   */\n  static sanitizeFormat(format) {\n    switch (format) {\n      case 'hex':\n      case 'hex3':\n      case 'hex4':\n      case 'hex6':\n      case 'hex8':\n        return 'hex';\n      case 'rgb':\n      case 'rgba':\n      case 'keyword':\n      case 'name':\n        return 'rgb';\n      case 'hsl':\n      case 'hsla':\n      case 'hsv':\n      case 'hsva':\n      case 'hwb': // HWB this is supported by Qix Color, but not by browsers\n      case 'hwba':\n        return 'hsl';\n      default :\n        return '';\n    }\n  }\n\n  /**\n   * Returns true if the color is valid, false if not.\n   *\n   * @returns {boolean}\n   */\n  isValid() {\n    return this._original.valid === true;\n  }\n\n  /**\n   * Hue value from 0 to 360\n   *\n   * @returns {int}\n   */\n  get hue() {\n    return this._color.hue();\n  }\n\n  /**\n   * Saturation value from 0 to 100\n   *\n   * @returns {int}\n   */\n  get saturation() {\n    return this._color.saturationv();\n  }\n\n  /**\n   * Value channel value from 0 to 100\n   *\n   * @returns {int}\n   */\n  get value() {\n    return this._color.value();\n  }\n\n  /**\n   * Alpha value from 0.0 to 1.0\n   *\n   * @returns {number}\n   */\n  get alpha() {\n    let a = this._color.alpha();\n\n    return isNaN(a) ? 1 : a;\n  }\n\n  /**\n   * Default color format to convert to when calling toString() or string()\n   *\n   * @returns {String} 'rgb', 'hsl', 'hex' or ''\n   */\n  get format() {\n    return this._format ? this._format : this._color.model;\n  }\n\n  /**\n   * Sets the hue value\n   *\n   * @param {int} value Integer from 0 to 360\n   */\n  set hue(value) {\n    this._color = this._color.hue(value);\n  }\n\n  /**\n   * Sets the hue ratio, where 1.0 is 0, 0.5 is 180 and 0.0 is 360.\n   *\n   * @ignore\n   * @param {number} h Ratio from 1.0 to 0.0\n   */\n  setHueRatio(h) {\n    this.hue = ((1 - h) * 360);\n  }\n\n  /**\n   * Sets the saturation value\n   *\n   * @param {int} value Integer from 0 to 100\n   */\n  set saturation(value) {\n    this._color = this._color.saturationv(value);\n  }\n\n  /**\n   * Sets the saturation ratio, where 1.0 is 100 and 0.0 is 0.\n   *\n   * @ignore\n   * @param {number} s Ratio from 0.0 to 1.0\n   */\n  setSaturationRatio(s) {\n    this.saturation = (s * 100);\n  }\n\n  /**\n   * Sets the 'value' channel value\n   *\n   * @param {int} value Integer from 0 to 100\n   */\n  set value(value) {\n    this._color = this._color.value(value);\n  }\n\n  /**\n   * Sets the value ratio, where 1.0 is 0 and 0.0 is 100.\n   *\n   * @ignore\n   * @param {number} v Ratio from 1.0 to 0.0\n   */\n  setValueRatio(v) {\n    this.value = ((1 - v) * 100);\n  }\n\n  /**\n   * Sets the alpha value. It will be rounded to 2 decimals.\n   *\n   * @param {int} value Float from 0.0 to 1.0\n   */\n  set alpha(value) {\n    // 2 decimals max\n    this._color = this._color.alpha(Math.round(value * 100) / 100);\n  }\n\n  /**\n   * Sets the alpha ratio, where 1.0 is 0.0 and 0.0 is 1.0.\n   *\n   * @ignore\n   * @param {number} a Ratio from 1.0 to 0.0\n   */\n  setAlphaRatio(a) {\n    this.alpha = 1 - a;\n  }\n\n  /**\n   * Sets the default color format\n   *\n   * @param {String} value Supported: 'rgb', 'hsl', 'hex'\n   */\n  set format(value) {\n    this._format = ColorItem.sanitizeFormat(value);\n  }\n\n  /**\n   * Returns true if the saturation value is zero, false otherwise\n   *\n   * @returns {boolean}\n   */\n  isDesaturated() {\n    return this.saturation === 0;\n  }\n\n  /**\n   * Returns true if the alpha value is zero, false otherwise\n   *\n   * @returns {boolean}\n   */\n  isTransparent() {\n    return this.alpha === 0;\n  }\n\n  /**\n   * Returns true if the alpha value is numeric and less than 1, false otherwise\n   *\n   * @returns {boolean}\n   */\n  hasTransparency() {\n    return this.hasAlpha() && (this.alpha < 1);\n  }\n\n  /**\n   * Returns true if the alpha value is numeric, false otherwise\n   *\n   * @returns {boolean}\n   */\n  hasAlpha() {\n    return !isNaN(this.alpha);\n  }\n\n  /**\n   * Returns a new HSVAColor object, based on the current color\n   *\n   * @returns {HSVAColor}\n   */\n  toObject() {\n    return new HSVAColor(this.hue, this.saturation, this.value, this.alpha);\n  }\n\n  /**\n   * Alias of toObject()\n   *\n   * @returns {HSVAColor}\n   */\n  toHsva() {\n    return this.toObject();\n  }\n\n  /**\n   * Returns a new HSVAColor object with the ratio values (from 0.0 to 1.0),\n   * based on the current color.\n   *\n   * @ignore\n   * @returns {HSVAColor}\n   */\n  toHsvaRatio() {\n    return new HSVAColor(\n      this.hue / 360,\n      this.saturation / 100,\n      this.value / 100,\n      this.alpha\n    );\n  }\n\n  /**\n   * Converts the current color to its string representation,\n   * using the internal format of this instance.\n   *\n   * @returns {String}\n   */\n  toString() {\n    return this.string();\n  }\n\n  /**\n   * Converts the current color to its string representation,\n   * using the given format.\n   *\n   * @param {String|null} format Format to convert to. If empty or null, the internal format will be used.\n   * @returns {String}\n   */\n  string(format = null) {\n    format = ColorItem.sanitizeFormat(format ? format : this.format);\n\n    if (!format) {\n      return this._color.round().string();\n    }\n\n    if (this._color[format] === undefined) {\n      throw new Error(`Unsupported color format: '${format}'`);\n    }\n\n    let str = this._color[format]();\n\n    return str.round ? str.round().string() : str;\n  }\n\n  /**\n   * Returns true if the given color values equals this one, false otherwise.\n   * The format is not compared.\n   * If any of the colors is invalid, the result will be false.\n   *\n   * @param {ColorItem|HSVAColor|QixColor|String|*|null} color Color data\n   *\n   * @returns {boolean}\n   */\n  equals(color) {\n    color = (color instanceof ColorItem) ? color : new ColorItem(color);\n\n    if (!color.isValid() || !this.isValid()) {\n      return false;\n    }\n\n    return (\n      this.hue === color.hue &&\n      this.saturation === color.saturation &&\n      this.value === color.value &&\n      this.alpha === color.alpha\n    );\n  }\n\n  /**\n   * Creates a copy of this instance\n   *\n   * @returns {ColorItem}\n   */\n  getClone() {\n    return new ColorItem(this._color, this.format);\n  }\n\n  /**\n   * Creates a copy of this instance, only copying the hue value,\n   * and setting the others to its max value.\n   *\n   * @returns {ColorItem}\n   */\n  getCloneHueOnly() {\n    return new ColorItem([this.hue, 100, 100, 1], this.format);\n  }\n\n  /**\n   * Creates a copy of this instance setting the alpha to the max.\n   *\n   * @returns {ColorItem}\n   */\n  getCloneOpaque() {\n    return new ColorItem(this._color.alpha(1), this.format);\n  }\n\n  /**\n   * Converts the color to a RGB string\n   *\n   * @returns {String}\n   */\n  toRgbString() {\n    return this.string('rgb');\n  }\n\n  /**\n   * Converts the color to a Hexadecimal string\n   *\n   * @returns {String}\n   */\n  toHexString() {\n    return this.string('hex');\n  }\n\n  /**\n   * Converts the color to a HSL string\n   *\n   * @returns {String}\n   */\n  toHslString() {\n    return this.string('hsl');\n  }\n\n  /**\n   * Returns true if the color is dark, false otherwhise.\n   * This is useful to decide a text color.\n   *\n   * @returns {boolean}\n   */\n  isDark() {\n    return this._color.isDark();\n  }\n\n  /**\n   * Returns true if the color is light, false otherwhise.\n   * This is useful to decide a text color.\n   *\n   * @returns {boolean}\n   */\n  isLight() {\n    return this._color.isLight();\n  }\n\n  /**\n   * Generates a list of colors using the given hue-based formula or the given array of hue values.\n   * Hue formulas can be extended using ColorItem.colorFormulas static property.\n   *\n   * @param {String|Number[]} formula Examples: 'complementary', 'triad', 'tetrad', 'splitcomplement', [180, 270]\n   * @example let colors = color.generate('triad');\n   * @example let colors = color.generate([45, 80, 112, 200]);\n   * @returns {ColorItem[]}\n   */\n  generate(formula) {\n    let hues = [];\n\n    if (Array.isArray(formula)) {\n      hues = formula;\n    } else if (!ColorItem.colorFormulas.hasOwnProperty(formula)) {\n      throw new Error(`No color formula found with the name '${formula}'.`);\n    } else {\n      hues = ColorItem.colorFormulas[formula];\n    }\n\n    let colors = [], mainColor = this._color, format = this.format;\n\n    hues.forEach(function (hue) {\n      let levels = [\n        hue ? ((mainColor.hue() + hue) % 360) : mainColor.hue(),\n        mainColor.saturationv(),\n        mainColor.value(),\n        mainColor.alpha()\n      ];\n\n      colors.push(new ColorItem(levels, format));\n    });\n\n    return colors;\n  }\n}\n\n/**\n * List of hue-based color formulas used by ColorItem.prototype.generate()\n *\n * @static\n * @type {{complementary: number[], triad: number[], tetrad: number[], splitcomplement: number[]}}\n */\nColorItem.colorFormulas = {\n  complementary: [180],\n  triad: [0, 120, 240],\n  tetrad: [0, 90, 180, 270],\n  splitcomplement: [0, 72, 216]\n};\n\nexport default ColorItem;\n\nexport {\n  HSVAColor,\n  ColorItem\n};\n","'use strict';\n/**\n * @module\n */\n\n// adjust these values accordingly to the sass vars\nlet sassVars = {\n  'bar_size_short': 16,\n  'base_margin': 6,\n  'columns': 6\n};\n\nlet sliderSize = (sassVars.bar_size_short * sassVars.columns) + (sassVars.base_margin * (sassVars.columns - 1));\n\n/**\n * Colorpicker default options\n */\nexport default {\n  /**\n   * Custom class to be added to the `.colorpicker-element` element\n   *\n   * @type {String|null}\n   * @default null\n   */\n  customClass: null,\n  /**\n   * Sets a initial color, ignoring the one from the element/input value or the data-color attribute.\n   *\n   * @type {(String|ColorItem|boolean)}\n   * @default false\n   */\n  color: false,\n  /**\n   * Fallback color to use when the given color is invalid.\n   * If false, the latest valid color will be used as a fallback.\n   *\n   * @type {String|ColorItem|boolean}\n   * @default false\n   */\n  fallbackColor: false,\n  /**\n   * Forces an specific color format. If 'auto', it will be automatically detected the first time only,\n   * but if null it will be always recalculated.\n   *\n   * Note that the ending 'a' of the format meaning \"alpha\" has currently no effect, meaning that rgb is the same as\n   * rgba excepting if the alpha channel is disabled (see useAlpha).\n   *\n   * @type {('rgb'|'hex'|'hsl'|'auto'|null)}\n   * @default 'auto'\n   */\n  format: 'auto',\n  /**\n   * Horizontal mode layout.\n   *\n   * If true, the hue and alpha channel bars will be rendered horizontally, above the saturation selector.\n   *\n   * @type {boolean}\n   * @default false\n   */\n  horizontal: false,\n  /**\n   * Forces to show the colorpicker as an inline element.\n   *\n   * Note that if there is no container specified, the inline element\n   * will be added to the body, so you may want to set the container option.\n   *\n   * @type {boolean}\n   * @default false\n   */\n  inline: false,\n  /**\n   * Container where the colorpicker is appended to in the DOM.\n   *\n   * If is a string (CSS selector), the colorpicker will be placed inside this container.\n   * If true, the `.colorpicker-element` element itself will be used as the container.\n   * If false, the document body is used as the container, unless it is a popover (in this case it is appended to the\n   * popover body instead).\n   *\n   * @type {String|boolean}\n   * @default false\n   */\n  container: false,\n  /**\n   * Bootstrap Popover options.\n   * The trigger, content and html options are always ignored.\n   *\n   * @type {boolean}\n   * @default Object\n   */\n  popover: {\n    animation: true,\n    placement: 'bottom',\n    fallbackPlacement: 'flip'\n  },\n  /**\n   * If true, loads the 'debugger' extension automatically, which logs the events in the console\n   * @type {boolean}\n   * @default false\n   */\n  debug: false,\n  /**\n   * Child CSS selector for the colorpicker input.\n   *\n   * @type {String}\n   * @default 'input'\n   */\n  input: 'input',\n  /**\n   * Child CSS selector for the colorpicker addon.\n   * If it exists, the child <i> element background will be changed on color change.\n   *\n   * @type {String}\n   * @default '.colorpicker-trigger, .colorpicker-input-addon'\n   */\n  addon: '.colorpicker-input-addon',\n  /**\n   * If true, the input content will be replaced always with a valid color,\n   * if false, the invalid color will be left in the input,\n   *   while the internal color object will still resolve into a valid one.\n   *\n   * @type {boolean}\n   * @default true\n   */\n  autoInputFallback: true,\n  /**\n   * If true, valid HEX3 colors will be converted to HEX6, even with\n   *    autoInputFallback set to false\n   * if false, HEX3 colors will not be converted to HEX6, when autoInputFallback is false\n   *    (this has been an issue, when using HEX6 colors with\n   *    autoInputFallback set to false, HEX3 colors were\n   *    automatically converting to HEX6)\n   *\n   * @type {boolean}\n   * @default false\n   */\n  autoHexInputFallback: true,\n  /**\n   * If true a hash will be prepended to hexadecimal colors.\n   * If false, the hash will be removed.\n   * This only affects the input values in hexadecimal format.\n   *\n   * @type {boolean}\n   * @default true\n   */\n  useHashPrefix: true,\n  /**\n   * If true, the alpha channel bar will be displayed no matter what.\n   *\n   * If false, it will be always hidden and alpha channel will be disabled also programmatically, meaning that\n   * the selected or typed color will be always opaque.\n   *\n   * If null, the alpha channel will be automatically disabled/enabled depending if the initial color format supports\n   * alpha or not.\n   *\n   * @type {boolean}\n   * @default true\n   */\n  useAlpha: true,\n  /**\n   * Colorpicker widget template\n   * @type {String}\n   * @example\n   * <!-- This is the default template: -->\n   * <div class=\"colorpicker\">\n   *   <div class=\"colorpicker-saturation\"><i class=\"colorpicker-guide\"></i></div>\n   *   <div class=\"colorpicker-hue\"><i class=\"colorpicker-guide\"></i></div>\n   *   <div class=\"colorpicker-alpha\">\n   *     <div class=\"colorpicker-alpha-color\"></div>\n   *     <i class=\"colorpicker-guide\"></i>\n   *   </div>\n   * </div>\n   */\n  template: `<div class=\"colorpicker\">\n      <div class=\"colorpicker-saturation\"><i class=\"colorpicker-guide\"></i></div>\n      <div class=\"colorpicker-hue\"><i class=\"colorpicker-guide\"></i></div>\n      <div class=\"colorpicker-alpha\">\n        <div class=\"colorpicker-alpha-color\"></div>\n        <i class=\"colorpicker-guide\"></i>\n      </div>\n    </div>`,\n  /**\n   *\n   * Associative object with the extension class name and its config.\n   * Colorpicker comes with many bundled extensions: debugger, palette, preview and swatches (a superset of palette).\n   *\n   * @type {Object[]}\n   * @example\n   *   extensions: [\n   *     {\n   *       name: 'swatches'\n   *       options: {\n   *         colors: {\n   *           'primary': '#337ab7',\n   *           'success': '#5cb85c',\n   *           'info': '#5bc0de',\n   *           'warning': '#f0ad4e',\n   *           'danger': '#d9534f'\n   *         },\n   *         namesAsValues: true\n   *       }\n   *     }\n   *   ]\n   */\n  extensions: [\n    {\n      name: 'preview',\n      options: {\n        showText: true\n      }\n    }\n  ],\n  /**\n   * Vertical sliders configuration\n   * @type {Object}\n   */\n  sliders: {\n    saturation: {\n      selector: '.colorpicker-saturation',\n      maxLeft: sliderSize,\n      maxTop: sliderSize,\n      callLeft: 'setSaturationRatio',\n      callTop: 'setValueRatio'\n    },\n    hue: {\n      selector: '.colorpicker-hue',\n      maxLeft: 0,\n      maxTop: sliderSize,\n      callLeft: false,\n      callTop: 'setHueRatio'\n    },\n    alpha: {\n      selector: '.colorpicker-alpha',\n      childSelector: '.colorpicker-alpha-color',\n      maxLeft: 0,\n      maxTop: sliderSize,\n      callLeft: false,\n      callTop: 'setAlphaRatio'\n    }\n  },\n  /**\n   * Horizontal sliders configuration\n   * @type {Object}\n   */\n  slidersHorz: {\n    saturation: {\n      selector: '.colorpicker-saturation',\n      maxLeft: sliderSize,\n      maxTop: sliderSize,\n      callLeft: 'setSaturationRatio',\n      callTop: 'setValueRatio'\n    },\n    hue: {\n      selector: '.colorpicker-hue',\n      maxLeft: sliderSize,\n      maxTop: 0,\n      callLeft: 'setHueRatio',\n      callTop: false\n    },\n    alpha: {\n      selector: '.colorpicker-alpha',\n      childSelector: '.colorpicker-alpha-color',\n      maxLeft: sliderSize,\n      maxTop: 0,\n      callLeft: 'setAlphaRatio',\n      callTop: false\n    }\n  }\n};\n","'use strict';\n\nimport Extension from 'Extension';\nimport $ from 'jquery';\n\nlet defaults = {\n  /**\n   * Key-value pairs defining a color alias and its CSS color representation.\n   *\n   * They can also be just an array of values. In that case, no special names are used, only the real colors.\n   *\n   * @type {Object|Array}\n   * @default null\n   * @example\n   *  {\n   *   'black': '#000000',\n   *   'white': '#ffffff',\n   *   'red': '#FF0000',\n   *   'default': '#777777',\n   *   'primary': '#337ab7',\n   *   'success': '#5cb85c',\n   *   'info': '#5bc0de',\n   *   'warning': '#f0ad4e',\n   *   'danger': '#d9534f'\n   *  }\n   *\n   * @example ['#f0ad4e', '#337ab7', '#5cb85c']\n   */\n  colors: null,\n  /**\n   * If true, when a color swatch is selected the name (alias) will be used as input value,\n   * otherwise the swatch real color value will be used.\n   *\n   * @type {boolean}\n   * @default true\n   */\n  namesAsValues: true\n};\n\n/**\n * Palette extension\n * @ignore\n */\nclass Palette extends Extension {\n\n  /**\n   * @returns {Object|Array}\n   */\n  get colors() {\n    return this.options.colors;\n  }\n\n  constructor(colorpicker, options = {}) {\n    super(colorpicker, $.extend(true, {}, defaults, options));\n\n    if ((!Array.isArray(this.options.colors)) && (typeof this.options.colors !== 'object')) {\n      this.options.colors = null;\n    }\n  }\n\n  /**\n   * @returns {int}\n   */\n  getLength() {\n    if (!this.options.colors) {\n      return 0;\n    }\n\n    if (Array.isArray(this.options.colors)) {\n      return this.options.colors.length;\n    }\n\n    if (typeof this.options.colors === 'object') {\n      return Object.keys(this.options.colors).length;\n    }\n\n    return 0;\n  }\n\n  resolveColor(color, realColor = true) {\n    if (this.getLength() <= 0) {\n      return false;\n    }\n\n    // Array of colors\n    if (Array.isArray(this.options.colors)) {\n      if (this.options.colors.indexOf(color) >= 0) {\n        return color;\n      }\n      if (this.options.colors.indexOf(color.toUpperCase()) >= 0) {\n        return color.toUpperCase();\n      }\n      if (this.options.colors.indexOf(color.toLowerCase()) >= 0) {\n        return color.toLowerCase();\n      }\n      return false;\n    }\n\n    if (typeof this.options.colors !== 'object') {\n      return false;\n    }\n\n    // Map of objects\n    if (!this.options.namesAsValues || realColor) {\n      return this.getValue(color, false);\n    }\n    return this.getName(color, this.getName('#' + color));\n  }\n\n  /**\n   * Given a color value, returns the corresponding color name or defaultValue.\n   *\n   * @param {String} value\n   * @param {*} defaultValue\n   * @returns {*}\n   */\n  getName(value, defaultValue = false) {\n    if (!(typeof value === 'string') || !this.options.colors) {\n      return defaultValue;\n    }\n    for (let name in this.options.colors) {\n      if (!this.options.colors.hasOwnProperty(name)) {\n        continue;\n      }\n      if (this.options.colors[name].toLowerCase() === value.toLowerCase()) {\n        return name;\n      }\n    }\n    return defaultValue;\n  }\n\n  /**\n   * Given a color name, returns the corresponding color value or defaultValue.\n   *\n   * @param {String} name\n   * @param {*} defaultValue\n   * @returns {*}\n   */\n  getValue(name, defaultValue = false) {\n    if (!(typeof name === 'string') || !this.options.colors) {\n      return defaultValue;\n    }\n    if (this.options.colors.hasOwnProperty(name)) {\n      return this.options.colors[name];\n    }\n    return defaultValue;\n  }\n}\n\nexport default Palette;\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","/* MIT license */\nvar cssKeywords = require('color-name');\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n//       values that give correct `typeof` results).\n//       do not use box values types (i.e. Number(), String(), etc.)\n\nvar reverseKeywords = {};\nfor (var key in cssKeywords) {\n\tif (cssKeywords.hasOwnProperty(key)) {\n\t\treverseKeywords[cssKeywords[key]] = key;\n\t}\n}\n\nvar convert = module.exports = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\n// hide .channels and .labels properties\nfor (var model in convert) {\n\tif (convert.hasOwnProperty(model)) {\n\t\tif (!('channels' in convert[model])) {\n\t\t\tthrow new Error('missing channels property: ' + model);\n\t\t}\n\n\t\tif (!('labels' in convert[model])) {\n\t\t\tthrow new Error('missing channel labels property: ' + model);\n\t\t}\n\n\t\tif (convert[model].labels.length !== convert[model].channels) {\n\t\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t\t}\n\n\t\tvar channels = convert[model].channels;\n\t\tvar labels = convert[model].labels;\n\t\tdelete convert[model].channels;\n\t\tdelete convert[model].labels;\n\t\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\t\tObject.defineProperty(convert[model], 'labels', {value: labels});\n\t}\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar min = Math.min(r, g, b);\n\tvar max = Math.max(r, g, b);\n\tvar delta = max - min;\n\tvar h;\n\tvar s;\n\tvar l;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tl = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tvar rdif;\n\tvar gdif;\n\tvar bdif;\n\tvar h;\n\tvar s;\n\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar v = Math.max(r, g, b);\n\tvar diff = v - Math.min(r, g, b);\n\tvar diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = s = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tvar r = rgb[0];\n\tvar g = rgb[1];\n\tvar b = rgb[2];\n\tvar h = convert.rgb.hsl(rgb)[0];\n\tvar w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar c;\n\tvar m;\n\tvar y;\n\tvar k;\n\n\tk = Math.min(1 - r, 1 - g, 1 - b);\n\tc = (1 - r - k) / (1 - k) || 0;\n\tm = (1 - g - k) / (1 - k) || 0;\n\ty = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\n/**\n * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n * */\nfunction comparativeDistance(x, y) {\n\treturn (\n\t\tMath.pow(x[0] - y[0], 2) +\n\t\tMath.pow(x[1] - y[1], 2) +\n\t\tMath.pow(x[2] - y[2], 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tvar reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tvar currentClosestDistance = Infinity;\n\tvar currentClosestKeyword;\n\n\tfor (var keyword in cssKeywords) {\n\t\tif (cssKeywords.hasOwnProperty(keyword)) {\n\t\t\tvar value = cssKeywords[keyword];\n\n\t\t\t// Compute comparative distance\n\t\t\tvar distance = comparativeDistance(rgb, value);\n\n\t\t\t// Check if its less, if so set as closest\n\t\t\tif (distance < currentClosestDistance) {\n\t\t\t\tcurrentClosestDistance = distance;\n\t\t\t\tcurrentClosestKeyword = keyword;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\n\t// assume sRGB\n\tr = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\n\n\tvar x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tvar y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tvar z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tvar xyz = convert.rgb.xyz(rgb);\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tvar h = hsl[0] / 360;\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar t1;\n\tvar t2;\n\tvar t3;\n\tvar rgb;\n\tvar val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tt1 = 2 * l - t2;\n\n\trgb = [0, 0, 0];\n\tfor (var i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tvar h = hsl[0];\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar smin = s;\n\tvar lmin = Math.max(l, 0.01);\n\tvar sv;\n\tvar v;\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tv = (l + s) / 2;\n\tsv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tvar h = hsv[0] / 60;\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar hi = Math.floor(h) % 6;\n\n\tvar f = h - Math.floor(h);\n\tvar p = 255 * v * (1 - s);\n\tvar q = 255 * v * (1 - (s * f));\n\tvar t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tvar h = hsv[0];\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar vmin = Math.max(v, 0.01);\n\tvar lmin;\n\tvar sl;\n\tvar l;\n\n\tl = (2 - s) * v;\n\tlmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tvar h = hwb[0] / 360;\n\tvar wh = hwb[1] / 100;\n\tvar bl = hwb[2] / 100;\n\tvar ratio = wh + bl;\n\tvar i;\n\tvar v;\n\tvar f;\n\tvar n;\n\n\t// wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\ti = Math.floor(6 * h);\n\tv = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tn = wh + f * (v - wh); // linear interpolation\n\n\tvar r;\n\tvar g;\n\tvar b;\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tvar c = cmyk[0] / 100;\n\tvar m = cmyk[1] / 100;\n\tvar y = cmyk[2] / 100;\n\tvar k = cmyk[3] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = 1 - Math.min(1, c * (1 - k) + k);\n\tg = 1 - Math.min(1, m * (1 - k) + k);\n\tb = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tvar x = xyz[0] / 100;\n\tvar y = xyz[1] / 100;\n\tvar z = xyz[2] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar x;\n\tvar y;\n\tvar z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tvar y2 = Math.pow(y, 3);\n\tvar x2 = Math.pow(x, 3);\n\tvar z2 = Math.pow(z, 3);\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar hr;\n\tvar h;\n\tvar c;\n\n\thr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tc = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tvar l = lch[0];\n\tvar c = lch[1];\n\tvar h = lch[2];\n\tvar a;\n\tvar b;\n\tvar hr;\n\n\thr = h / 360 * 2 * Math.PI;\n\ta = c * Math.cos(hr);\n\tb = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\tvar value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tvar ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\n\t// we use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tvar ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tvar color = args % 10;\n\n\t// handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tvar mult = (~~(args > 50) + 1) * 0.5;\n\tvar r = ((color & 1) * mult) * 255;\n\tvar g = (((color >> 1) & 1) * mult) * 255;\n\tvar b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// handle greyscale\n\tif (args >= 232) {\n\t\tvar c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tvar rem;\n\tvar r = Math.floor(args / 36) / 5 * 255;\n\tvar g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tvar b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tvar integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tvar match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tvar colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(function (char) {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tvar integer = parseInt(colorString, 16);\n\tvar r = (integer >> 16) & 0xFF;\n\tvar g = (integer >> 8) & 0xFF;\n\tvar b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar max = Math.max(Math.max(r, g), b);\n\tvar min = Math.min(Math.min(r, g), b);\n\tvar chroma = (max - min);\n\tvar grayscale;\n\tvar hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma + 4;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar c = 1;\n\tvar f = 0;\n\n\tif (l < 0.5) {\n\t\tc = 2.0 * s * l;\n\t} else {\n\t\tc = 2.0 * s * (1.0 - l);\n\t}\n\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\n\tvar c = s * v;\n\tvar f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tvar h = hcg[0] / 360;\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tvar pure = [0, 0, 0];\n\tvar hi = (h % 1) * 6;\n\tvar v = hi % 1;\n\tvar w = 1 - v;\n\tvar mg = 0;\n\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar v = c + g * (1.0 - c);\n\tvar f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar l = g * (1.0 - c) + 0.5 * c;\n\tvar s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\tvar v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tvar w = hwb[1] / 100;\n\tvar b = hwb[2] / 100;\n\tvar v = 1 - b;\n\tvar c = v - w;\n\tvar g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = convert.gray.hsv = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tvar val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tvar integer = (val << 16) + (val << 8) + val;\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tvar val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n","'use strict';\n\nimport Colorpicker from './Colorpicker';\nimport $ from 'jquery';\n\nlet plugin = 'colorpicker';\n\n$[plugin] = Colorpicker;\n\n// Colorpicker jQuery Plugin API\n$.fn[plugin] = function (option) {\n  let fnArgs = Array.prototype.slice.call(arguments, 1),\n    isSingleElement = (this.length === 1),\n    returnValue = null;\n\n  let $elements = this.each(function () {\n    let $this = $(this),\n      inst = $this.data(plugin),\n      options = ((typeof option === 'object') ? option : {});\n\n    // Create instance if does not exist\n    if (!inst) {\n      inst = new Colorpicker(this, options);\n      $this.data(plugin, inst);\n    }\n\n    if (!isSingleElement) {\n      return;\n    }\n\n    returnValue = $this;\n\n    if (typeof option === 'string') {\n      if (option === 'colorpicker') {\n        // Return colorpicker instance: e.g. .colorpicker('colorpicker')\n        returnValue = inst;\n      } else if ($.isFunction(inst[option])) {\n        // Return method call return value: e.g. .colorpicker('isEnabled')\n        returnValue = inst[option].apply(inst, fnArgs);\n      } else {\n        // Return property value: e.g. .colorpicker('element')\n        returnValue = inst[option];\n      }\n    }\n  });\n\n  return isSingleElement ? returnValue : $elements;\n};\n\n$.fn[plugin].constructor = Colorpicker;\n","'use strict';\n\nimport Extension from './Extension';\nimport defaults from './options';\nimport coreExtensions from 'extensions';\nimport $ from 'jquery';\nimport SliderHandler from './SliderHandler';\nimport PopupHandler from './PopupHandler';\nimport InputHandler from './InputHandler';\nimport ColorHandler from './ColorHandler';\nimport PickerHandler from './PickerHandler';\nimport AddonHandler from './AddonHandler';\nimport ColorItem from './ColorItem';\n\nlet colorPickerIdCounter = 0;\n\nlet root = (typeof self !== 'undefined' ? self : this); // window\n\n/**\n * Colorpicker widget class\n */\nclass Colorpicker {\n  /**\n   * Color class\n   *\n   * @static\n   * @type {Color}\n   */\n  static get Color() {\n    return ColorItem;\n  }\n\n  /**\n   * Extension class\n   *\n   * @static\n   * @type {Extension}\n   */\n  static get Extension() {\n    return Extension;\n  }\n\n  /**\n   * Internal color object\n   *\n   * @type {Color|null}\n   */\n  get color() {\n    return this.colorHandler.color;\n  }\n\n  /**\n   * Internal color format\n   *\n   * @type {String|null}\n   */\n  get format() {\n    return this.colorHandler.format;\n  }\n\n  /**\n   * Getter of the picker element\n   *\n   * @returns {jQuery|HTMLElement}\n   */\n  get picker() {\n    return this.pickerHandler.picker;\n  }\n\n  /**\n   * @fires Colorpicker#colorpickerCreate\n   * @param {Object|String} element\n   * @param {Object} options\n   * @constructor\n   */\n  constructor(element, options) {\n    colorPickerIdCounter += 1;\n    /**\n     * The colorpicker instance number\n     * @type {number}\n     */\n    this.id = colorPickerIdCounter;\n\n    /**\n     * Latest colorpicker event\n     *\n     * @type {{name: String, e: *}}\n     */\n    this.lastEvent = {\n      alias: null,\n      e: null\n    };\n\n    /**\n     * The element that the colorpicker is bound to\n     *\n     * @type {*|jQuery}\n     */\n    this.element = $(element)\n      .addClass('colorpicker-element')\n      .attr('data-colorpicker-id', this.id);\n\n    /**\n     * @type {defaults}\n     */\n    this.options = $.extend(true, {}, defaults, options, this.element.data());\n\n    /**\n     * @type {boolean}\n     * @private\n     */\n    this.disabled = false;\n\n    /**\n     * Extensions added to this instance\n     *\n     * @type {Extension[]}\n     */\n    this.extensions = [];\n\n    /**\n     * The element where the\n     * @type {*|jQuery}\n     */\n    this.container = (\n      this.options.container === true ||\n      (this.options.container !== true && this.options.inline === true)\n    ) ? this.element : this.options.container;\n\n    this.container = (this.container !== false) ? $(this.container) : false;\n\n    /**\n     * @type {InputHandler}\n     */\n    this.inputHandler = new InputHandler(this);\n    /**\n     * @type {ColorHandler}\n     */\n    this.colorHandler = new ColorHandler(this);\n    /**\n     * @type {SliderHandler}\n     */\n    this.sliderHandler = new SliderHandler(this);\n    /**\n     * @type {PopupHandler}\n     */\n    this.popupHandler = new PopupHandler(this, root);\n    /**\n     * @type {PickerHandler}\n     */\n    this.pickerHandler = new PickerHandler(this);\n    /**\n     * @type {AddonHandler}\n     */\n    this.addonHandler = new AddonHandler(this);\n\n    this.init();\n\n    // Emit a create event\n    $($.proxy(function () {\n      /**\n       * (Colorpicker) When the Colorpicker instance has been created and the DOM is ready.\n       *\n       * @event Colorpicker#colorpickerCreate\n       */\n      this.trigger('colorpickerCreate');\n    }, this));\n  }\n\n  /**\n   * Initializes the plugin\n   * @private\n   */\n  init() {\n    // Init addon\n    this.addonHandler.bind();\n\n    // Init input\n    this.inputHandler.bind();\n\n    // Init extensions (before initializing the color)\n    this.initExtensions();\n\n    // Init color\n    this.colorHandler.bind();\n\n    // Init picker\n    this.pickerHandler.bind();\n\n    // Init sliders and popup\n    this.sliderHandler.bind();\n    this.popupHandler.bind();\n\n    // Inject into the DOM (this may make it visible)\n    this.pickerHandler.attach();\n\n    // Update all components\n    this.update();\n\n    if (this.inputHandler.isDisabled()) {\n      this.disable();\n    }\n  }\n\n  /**\n   * Initializes the plugin extensions\n   * @private\n   */\n  initExtensions() {\n    if (!Array.isArray(this.options.extensions)) {\n      this.options.extensions = [];\n    }\n\n    if (this.options.debug) {\n      this.options.extensions.push({name: 'debugger'});\n    }\n\n    // Register and instantiate extensions\n    this.options.extensions.forEach((ext) => {\n      this.registerExtension(Colorpicker.extensions[ext.name.toLowerCase()], ext.options || {});\n    });\n  }\n\n  /**\n   * Creates and registers the given extension\n   *\n   * @param {Extension} ExtensionClass The extension class to instantiate\n   * @param {Object} [config] Extension configuration\n   * @returns {Extension}\n   */\n  registerExtension(ExtensionClass, config = {}) {\n    let ext = new ExtensionClass(this, config);\n\n    this.extensions.push(ext);\n    return ext;\n  }\n\n  /**\n   * Destroys the current instance\n   *\n   * @fires Colorpicker#colorpickerDestroy\n   */\n  destroy() {\n    let color = this.color;\n\n    this.sliderHandler.unbind();\n    this.inputHandler.unbind();\n    this.popupHandler.unbind();\n    this.colorHandler.unbind();\n    this.addonHandler.unbind();\n    this.pickerHandler.unbind();\n\n    this.element\n      .removeClass('colorpicker-element')\n      .removeData('colorpicker')\n      .removeData('color')\n      .off('.colorpicker');\n\n    /**\n     * (Colorpicker) When the instance is destroyed with all events unbound.\n     *\n     * @event Colorpicker#colorpickerDestroy\n     */\n    this.trigger('colorpickerDestroy', color);\n  }\n\n  /**\n   * Shows the colorpicker widget if hidden.\n   * If the colorpicker is disabled this call will be ignored.\n   *\n   * @fires Colorpicker#colorpickerShow\n   * @param {Event} [e]\n   */\n  show(e) {\n    this.popupHandler.show(e);\n  }\n\n  /**\n   * Hides the colorpicker widget.\n   *\n   * @fires Colorpicker#colorpickerHide\n   * @param {Event} [e]\n   */\n  hide(e) {\n    this.popupHandler.hide(e);\n  }\n\n  /**\n   * Toggles the colorpicker between visible and hidden.\n   *\n   * @fires Colorpicker#colorpickerShow\n   * @fires Colorpicker#colorpickerHide\n   * @param {Event} [e]\n   */\n  toggle(e) {\n    this.popupHandler.toggle(e);\n  }\n\n  /**\n   * Returns the current color value as string\n   *\n   * @param {String|*} [defaultValue]\n   * @returns {String|*}\n   */\n  getValue(defaultValue = null) {\n    let val = this.colorHandler.color;\n\n    val = (val instanceof ColorItem) ? val : defaultValue;\n\n    if (val instanceof ColorItem) {\n      return val.string(this.format);\n    }\n\n    return val;\n  }\n\n  /**\n   * Sets the color manually\n   *\n   * @fires Colorpicker#colorpickerChange\n   * @param {String|Color} val\n   */\n  setValue(val) {\n    if (this.isDisabled()) {\n      return;\n    }\n    let ch = this.colorHandler;\n\n    if (\n      (ch.hasColor() && !!val && ch.color.equals(val)) ||\n      (!ch.hasColor() && !val)\n    ) {\n      // same color or still empty\n      return;\n    }\n\n    ch.color = val ? ch.createColor(val, this.options.autoInputFallback, this.options.autoHexInputFallback) : null;\n\n    /**\n     * (Colorpicker) When the color is set programmatically with setValue().\n     *\n     * @event Colorpicker#colorpickerChange\n     */\n    this.trigger('colorpickerChange', ch.color, val);\n\n    // force update if color has changed to empty\n    this.update();\n  }\n\n  /**\n   * Updates the UI and the input color according to the internal color.\n   *\n   * @fires Colorpicker#colorpickerUpdate\n   */\n  update() {\n    if (this.colorHandler.hasColor()) {\n      this.inputHandler.update();\n    } else {\n      this.colorHandler.assureColor();\n    }\n\n    this.addonHandler.update();\n    this.pickerHandler.update();\n\n    /**\n     * (Colorpicker) Fired when the widget is updated.\n     *\n     * @event Colorpicker#colorpickerUpdate\n     */\n    this.trigger('colorpickerUpdate');\n  }\n\n  /**\n   * Enables the widget and the input if any\n   *\n   * @fires Colorpicker#colorpickerEnable\n   * @returns {boolean}\n   */\n  enable() {\n    this.inputHandler.enable();\n    this.disabled = false;\n    this.picker.removeClass('colorpicker-disabled');\n\n    /**\n     * (Colorpicker) When the widget has been enabled.\n     *\n     * @event Colorpicker#colorpickerEnable\n     */\n    this.trigger('colorpickerEnable');\n    return true;\n  }\n\n  /**\n   * Disables the widget and the input if any\n   *\n   * @fires Colorpicker#colorpickerDisable\n   * @returns {boolean}\n   */\n  disable() {\n    this.inputHandler.disable();\n    this.disabled = true;\n    this.picker.addClass('colorpicker-disabled');\n\n    /**\n     * (Colorpicker) When the widget has been disabled.\n     *\n     * @event Colorpicker#colorpickerDisable\n     */\n    this.trigger('colorpickerDisable');\n    return true;\n  }\n\n  /**\n   * Returns true if this instance is enabled\n   * @returns {boolean}\n   */\n  isEnabled() {\n    return !this.isDisabled();\n  }\n\n  /**\n   * Returns true if this instance is disabled\n   * @returns {boolean}\n   */\n  isDisabled() {\n    return this.disabled === true;\n  }\n\n  /**\n   * Triggers a Colorpicker event.\n   *\n   * @param eventName\n   * @param color\n   * @param value\n   */\n  trigger(eventName, color = null, value = null) {\n    this.element.trigger({\n      type: eventName,\n      colorpicker: this,\n      color: color ? color : this.color,\n      value: value ? value : this.getValue()\n    });\n  }\n}\n\n/**\n * Colorpicker extension classes, indexed by extension name\n *\n * @static\n * @type {Object} a map between the extension name and its class\n */\nColorpicker.extensions = coreExtensions;\n\nexport default Colorpicker;\n","import Debugger from './Debugger';\nimport Preview from './Preview';\nimport Swatches from './Swatches';\nimport Palette from './Palette';\n\nexport {\n  Debugger, Preview, Swatches, Palette\n};\n\nexport default {\n  'debugger': Debugger,\n  'preview': Preview,\n  'swatches': Swatches,\n  'palette': Palette\n};\n","'use strict';\n\nimport Extension from 'Extension';\nimport $ from 'jquery';\n\n/**\n * Debugger extension class\n * @alias DebuggerExtension\n * @ignore\n */\nclass Debugger extends Extension {\n  constructor(colorpicker, options = {}) {\n    super(colorpicker, options);\n\n    /**\n     * @type {number}\n     */\n    this.eventCounter = 0;\n    if (this.colorpicker.inputHandler.hasInput()) {\n      this.colorpicker.inputHandler.input.on('change.colorpicker-ext', $.proxy(this.onChangeInput, this));\n    }\n  }\n\n  /**\n   * @fires DebuggerExtension#colorpickerDebug\n   * @param {string} eventName\n   * @param {*} args\n   */\n  log(eventName, ...args) {\n    this.eventCounter += 1;\n\n    let logMessage = `#${this.eventCounter}: Colorpicker#${this.colorpicker.id} [${eventName}]`;\n\n    console.debug(logMessage, ...args);\n\n    /**\n     * Whenever the debugger logs an event, this other event is emitted.\n     *\n     * @event DebuggerExtension#colorpickerDebug\n     * @type {object} The event object\n     * @property {Colorpicker} colorpicker The Colorpicker instance\n     * @property {ColorItem} color The color instance\n     * @property {{debugger: DebuggerExtension, eventName: String, logArgs: Array, logMessage: String}} debug\n     *  The debug info\n     */\n    this.colorpicker.element.trigger({\n      type: 'colorpickerDebug',\n      colorpicker: this.colorpicker,\n      color: this.color,\n      value: null,\n      debug: {\n        debugger: this,\n        eventName: eventName,\n        logArgs: args,\n        logMessage: logMessage\n      }\n    });\n  }\n\n  resolveColor(color, realColor = true) {\n    this.log('resolveColor()', color, realColor);\n    return false;\n  }\n\n  onCreate(event) {\n    this.log('colorpickerCreate');\n    return super.onCreate(event);\n  }\n\n  onDestroy(event) {\n    this.log('colorpickerDestroy');\n    this.eventCounter = 0;\n\n    if (this.colorpicker.inputHandler.hasInput()) {\n      this.colorpicker.inputHandler.input.off('.colorpicker-ext');\n    }\n\n    return super.onDestroy(event);\n  }\n\n  onUpdate(event) {\n    this.log('colorpickerUpdate');\n  }\n\n  /**\n   * @listens Colorpicker#change\n   * @param {Event} event\n   */\n  onChangeInput(event) {\n    this.log('input:change.colorpicker', event.value, event.color);\n  }\n\n  onChange(event) {\n    this.log('colorpickerChange', event.value, event.color);\n  }\n\n  onInvalid(event) {\n    this.log('colorpickerInvalid', event.value, event.color);\n  }\n\n  onHide(event) {\n    this.log('colorpickerHide');\n    this.eventCounter = 0;\n  }\n\n  onShow(event) {\n    this.log('colorpickerShow');\n  }\n\n  onDisable(event) {\n    this.log('colorpickerDisable');\n  }\n\n  onEnable(event) {\n    this.log('colorpickerEnable');\n  }\n}\n\nexport default Debugger;\n","'use strict';\n\nimport Extension from 'Extension';\nimport $ from 'jquery';\n\n/**\n * Color preview extension\n * @ignore\n */\nclass Preview extends Extension {\n  constructor(colorpicker, options = {}) {\n    super(colorpicker, $.extend(true, {},\n      {\n        template: '<div class=\"colorpicker-bar colorpicker-preview\"><div /></div>',\n        showText: true,\n        format: colorpicker.format\n      },\n      options\n    ));\n\n    this.element = $(this.options.template);\n    this.elementInner = this.element.find('div');\n  }\n\n  onCreate(event) {\n    super.onCreate(event);\n    this.colorpicker.picker.append(this.element);\n  }\n\n  onUpdate(event) {\n    super.onUpdate(event);\n\n    if (!event.color) {\n      this.elementInner\n        .css('backgroundColor', null)\n        .css('color', null)\n        .html('');\n      return;\n    }\n\n    this.elementInner\n      .css('backgroundColor', event.color.toRgbString());\n\n    if (this.options.showText) {\n      this.elementInner\n        .html(event.color.string(this.options.format || this.colorpicker.format));\n\n      if (event.color.isDark() && (event.color.alpha > 0.5)) {\n        this.elementInner.css('color', 'white');\n      } else {\n        this.elementInner.css('color', 'black');\n      }\n    }\n  }\n}\n\nexport default Preview;\n","'use strict';\n\nimport Palette from './Palette';\nimport $ from 'jquery';\n\nlet defaults = {\n  barTemplate: `<div class=\"colorpicker-bar colorpicker-swatches\">\n                    <div class=\"colorpicker-swatches--inner\"></div>\n                </div>`,\n  swatchTemplate: '<i class=\"colorpicker-swatch\"><i class=\"colorpicker-swatch--inner\"></i></i>'\n};\n\n/**\n * Color swatches extension\n * @ignore\n */\nclass Swatches extends Palette {\n  constructor(colorpicker, options = {}) {\n    super(colorpicker, $.extend(true, {}, defaults, options));\n    this.element = null;\n  }\n\n  isEnabled() {\n    return this.getLength() > 0;\n  }\n\n  onCreate(event) {\n    super.onCreate(event);\n\n    if (!this.isEnabled()) {\n      return;\n    }\n\n    this.element = $(this.options.barTemplate);\n    this.load();\n    this.colorpicker.picker.append(this.element);\n  }\n\n  load() {\n    let colorpicker = this.colorpicker,\n      swatchContainer = this.element.find('.colorpicker-swatches--inner'),\n      isAliased = (this.options.namesAsValues === true) && !Array.isArray(this.colors);\n\n    swatchContainer.empty();\n\n    $.each(this.colors, (name, value) => {\n      let $swatch = $(this.options.swatchTemplate)\n        .attr('data-name', name)\n        .attr('data-value', value)\n        .attr('title', isAliased ? `${name}: ${value}` : value)\n        .on('mousedown.colorpicker touchstart.colorpicker',\n          function (e) {\n            let $sw = $(this);\n\n            // e.preventDefault();\n\n            colorpicker.setValue(isAliased ? $sw.attr('data-name') : $sw.attr('data-value'));\n          }\n        );\n\n      $swatch.find('.colorpicker-swatch--inner')\n        .css('background-color', value);\n\n      swatchContainer.append($swatch);\n    });\n\n    swatchContainer.append($('<i class=\"colorpicker-clear\"></i>'));\n  }\n}\n\nexport default Swatches;\n","'use strict';\n\nimport $ from 'jquery';\n\n/**\n * Class that handles all configured sliders on mouse or touch events.\n * @ignore\n */\nclass SliderHandler {\n  /**\n   * @param {Colorpicker} colorpicker\n   */\n  constructor(colorpicker) {\n    /**\n     * @type {Colorpicker}\n     */\n    this.colorpicker = colorpicker;\n    /**\n     * @type {*|String}\n     * @private\n     */\n    this.currentSlider = null;\n    /**\n     * @type {{left: number, top: number}}\n     * @private\n     */\n    this.mousePointer = {\n      left: 0,\n      top: 0\n    };\n\n    /**\n     * @type {Function}\n     */\n    this.onMove = $.proxy(this.defaultOnMove, this);\n  }\n\n  /**\n   * This function is called every time a slider guide is moved\n   * The scope of \"this\" is the SliderHandler object.\n   *\n   * @param {int} top\n   * @param {int} left\n   */\n  defaultOnMove(top, left) {\n    if (!this.currentSlider) {\n      return;\n    }\n\n    let slider = this.currentSlider, cp = this.colorpicker, ch = cp.colorHandler;\n\n    // Create a color object\n    let color = !ch.hasColor() ? ch.getFallbackColor() : ch.color.getClone();\n\n    // Adjust the guide position\n    slider.guideStyle.left = left + 'px';\n    slider.guideStyle.top = top + 'px';\n\n    // Adjust the color\n    if (slider.callLeft) {\n      color[slider.callLeft](left / slider.maxLeft);\n    }\n    if (slider.callTop) {\n      color[slider.callTop](top / slider.maxTop);\n    }\n\n    // Set the new color\n    cp.setValue(color);\n    cp.popupHandler.focus();\n  }\n\n  /**\n   * Binds the colorpicker sliders to the mouse/touch events\n   */\n  bind() {\n    let sliders = this.colorpicker.options.horizontal ? this.colorpicker\n      .options.slidersHorz : this.colorpicker.options.sliders;\n\n    let sliderClasses = [];\n\n    for (let sliderName in sliders) {\n      if (!sliders.hasOwnProperty(sliderName)) {\n        continue;\n      }\n\n      sliderClasses.push(sliders[sliderName].selector);\n    }\n\n    this.colorpicker.picker.find(sliderClasses.join(', '))\n      .on('mousedown.colorpicker touchstart.colorpicker', $.proxy(this.pressed, this));\n  }\n\n  /**\n   * Unbinds any event bound by this handler\n   */\n  unbind() {\n    $(this.colorpicker.picker).off({\n      'mousemove.colorpicker': $.proxy(this.moved, this),\n      'touchmove.colorpicker': $.proxy(this.moved, this),\n      'mouseup.colorpicker': $.proxy(this.released, this),\n      'touchend.colorpicker': $.proxy(this.released, this)\n    });\n  }\n\n  /**\n   * Function triggered when clicking in one of the color adjustment bars\n   *\n   * @private\n   * @fires Colorpicker#mousemove\n   * @param {Event} e\n   */\n  pressed(e) {\n    if (this.colorpicker.isDisabled()) {\n      return;\n    }\n    this.colorpicker.lastEvent.alias = 'pressed';\n    this.colorpicker.lastEvent.e = e;\n\n    if (!e.pageX && !e.pageY && e.originalEvent && e.originalEvent.touches) {\n      e.pageX = e.originalEvent.touches[0].pageX;\n      e.pageY = e.originalEvent.touches[0].pageY;\n    }\n    // e.stopPropagation();\n    // e.preventDefault();\n\n    let target = $(e.target);\n\n    // detect the slider and set the limits and callbacks\n    let zone = target.closest('div');\n\n    let sliders = this.colorpicker.options.horizontal ? this.colorpicker\n      .options.slidersHorz : this.colorpicker.options.sliders;\n\n    if (zone.is('.colorpicker')) {\n      return;\n    }\n\n    this.currentSlider = null;\n\n    for (let sliderName in sliders) {\n      if (!sliders.hasOwnProperty(sliderName)) {\n        continue;\n      }\n\n      let slider = sliders[sliderName];\n\n      if (zone.is(slider.selector)) {\n        this.currentSlider = $.extend({}, slider, {name: sliderName});\n        break;\n      } else if (slider.childSelector !== undefined && zone.is(slider.childSelector)) {\n        this.currentSlider = $.extend({}, slider, {name: sliderName});\n        zone = zone.parent(); // zone.parents(slider.selector).first() ?\n        break;\n      }\n    }\n\n    let guide = zone.find('.colorpicker-guide').get(0);\n\n    if (this.currentSlider === null || guide === null) {\n      return;\n    }\n\n    let offset = zone.offset();\n\n    // reference to guide's style\n    this.currentSlider.guideStyle = guide.style;\n    this.currentSlider.left = e.pageX - offset.left;\n    this.currentSlider.top = e.pageY - offset.top;\n    this.mousePointer = {\n      left: e.pageX,\n      top: e.pageY\n    };\n\n    // TODO: fix moving outside the picker makes the guides to keep moving. The event needs to be bound to the window.\n    /**\n     * (window.document) Triggered on mousedown for the document object,\n     * so the color adjustment guide is moved to the clicked position.\n     *\n     * @event Colorpicker#mousemove\n     */\n    $(this.colorpicker.picker).on({\n      'mousemove.colorpicker': $.proxy(this.moved, this),\n      'touchmove.colorpicker': $.proxy(this.moved, this),\n      'mouseup.colorpicker': $.proxy(this.released, this),\n      'touchend.colorpicker': $.proxy(this.released, this)\n    }).trigger('mousemove');\n  }\n\n  /**\n   * Function triggered when dragging a guide inside one of the color adjustment bars.\n   *\n   * @private\n   * @param {Event} e\n   */\n  moved(e) {\n    this.colorpicker.lastEvent.alias = 'moved';\n    this.colorpicker.lastEvent.e = e;\n\n    if (!e.pageX && !e.pageY && e.originalEvent && e.originalEvent.touches) {\n      e.pageX = e.originalEvent.touches[0].pageX;\n      e.pageY = e.originalEvent.touches[0].pageY;\n    }\n\n    // e.stopPropagation();\n    e.preventDefault(); // prevents scrolling on mobile\n\n    let left = Math.max(\n      0,\n      Math.min(\n        this.currentSlider.maxLeft,\n        this.currentSlider.left + ((e.pageX || this.mousePointer.left) - this.mousePointer.left)\n      )\n    );\n\n    let top = Math.max(\n      0,\n      Math.min(\n        this.currentSlider.maxTop,\n        this.currentSlider.top + ((e.pageY || this.mousePointer.top) - this.mousePointer.top)\n      )\n    );\n\n    this.onMove(top, left);\n  }\n\n  /**\n   * Function triggered when releasing the click in one of the color adjustment bars.\n   *\n   * @private\n   * @param {Event} e\n   */\n  released(e) {\n    this.colorpicker.lastEvent.alias = 'released';\n    this.colorpicker.lastEvent.e = e;\n\n    // e.stopPropagation();\n    // e.preventDefault();\n\n    $(this.colorpicker.picker).off({\n      'mousemove.colorpicker': this.moved,\n      'touchmove.colorpicker': this.moved,\n      'mouseup.colorpicker': this.released,\n      'touchend.colorpicker': this.released\n    });\n  }\n}\n\nexport default SliderHandler;\n","'use strict';\n\nimport $ from 'jquery';\nimport _defaults from './options';\n\n/**\n * Handles everything related to the UI of the colorpicker popup: show, hide, position,...\n * @ignore\n */\nclass PopupHandler {\n  /**\n   * @param {Colorpicker} colorpicker\n   * @param {Window} root\n   */\n  constructor(colorpicker, root) {\n    /**\n     * @type {Window}\n     */\n    this.root = root;\n    /**\n     * @type {Colorpicker}\n     */\n    this.colorpicker = colorpicker;\n    /**\n     * @type {jQuery}\n     */\n    this.popoverTarget = null;\n    /**\n     * @type {jQuery}\n     */\n    this.popoverTip = null;\n\n    /**\n     * If true, the latest click was inside the popover\n     * @type {boolean}\n     */\n    this.clicking = false;\n    /**\n     * @type {boolean}\n     */\n    this.hidding = false;\n    /**\n     * @type {boolean}\n     */\n    this.showing = false;\n  }\n\n  /**\n   * @private\n   * @returns {jQuery|false}\n   */\n  get input() {\n    return this.colorpicker.inputHandler.input;\n  }\n\n  /**\n   * @private\n   * @returns {boolean}\n   */\n  get hasInput() {\n    return this.colorpicker.inputHandler.hasInput();\n  }\n\n  /**\n   * @private\n   * @returns {jQuery|false}\n   */\n  get addon() {\n    return this.colorpicker.addonHandler.addon;\n  }\n\n  /**\n   * @private\n   * @returns {boolean}\n   */\n  get hasAddon() {\n    return this.colorpicker.addonHandler.hasAddon();\n  }\n\n  /**\n   * @private\n   * @returns {boolean}\n   */\n  get isPopover() {\n    return !this.colorpicker.options.inline && !!this.popoverTip;\n  }\n\n  /**\n   * Binds the different colorpicker elements to the focus/mouse/touch events so it reacts in order to show or\n   * hide the colorpicker popup accordingly. It also adds the proper classes.\n   */\n  bind() {\n    let cp = this.colorpicker;\n\n    if (cp.options.inline) {\n      cp.picker.addClass('colorpicker-inline colorpicker-visible');\n      return; // no need to bind show/hide events for inline elements\n    }\n\n    cp.picker.addClass('colorpicker-popup colorpicker-hidden');\n\n    // there is no input or addon\n    if (!this.hasInput && !this.hasAddon) {\n      return;\n    }\n\n    // create Bootstrap 4 popover\n    if (cp.options.popover) {\n      this.createPopover();\n    }\n\n    // bind addon show/hide events\n    if (this.hasAddon) {\n      // enable focus on addons\n      if (!this.addon.attr('tabindex')) {\n        this.addon.attr('tabindex', 0);\n      }\n\n      this.addon.on({\n        'mousedown.colorpicker touchstart.colorpicker': $.proxy(this.toggle, this)\n      });\n\n      this.addon.on({\n        'focus.colorpicker': $.proxy(this.show, this)\n      });\n\n      this.addon.on({\n        'focusout.colorpicker': $.proxy(this.hide, this)\n      });\n    }\n\n    // bind input show/hide events\n    if (this.hasInput && !this.hasAddon) {\n      this.input.on({\n        'mousedown.colorpicker touchstart.colorpicker': $.proxy(this.show, this),\n        'focus.colorpicker': $.proxy(this.show, this)\n      });\n\n      this.input.on({\n        'focusout.colorpicker': $.proxy(this.hide, this)\n      });\n    }\n\n    // reposition popup on window resize\n    $(this.root).on('resize.colorpicker', $.proxy(this.reposition, this));\n  }\n\n  /**\n   * Unbinds any event bound by this handler\n   */\n  unbind() {\n    if (this.hasInput) {\n      this.input.off({\n        'mousedown.colorpicker touchstart.colorpicker': $.proxy(this.show, this),\n        'focus.colorpicker': $.proxy(this.show, this)\n      });\n      this.input.off({\n        'focusout.colorpicker': $.proxy(this.hide, this)\n      });\n    }\n\n    if (this.hasAddon) {\n      this.addon.off({\n        'mousedown.colorpicker touchstart.colorpicker': $.proxy(this.toggle, this)\n      });\n      this.addon.off({\n        'focus.colorpicker': $.proxy(this.show, this)\n      });\n      this.addon.off({\n        'focusout.colorpicker': $.proxy(this.hide, this)\n      });\n    }\n\n    if (this.popoverTarget) {\n      this.popoverTarget.popover('dispose');\n    }\n\n    $(this.root).off('resize.colorpicker', $.proxy(this.reposition, this));\n    $(this.root.document).off('mousedown.colorpicker touchstart.colorpicker', $.proxy(this.hide, this));\n    $(this.root.document).off('mousedown.colorpicker touchstart.colorpicker', $.proxy(this.onClickingInside, this));\n  }\n\n  isClickingInside(e) {\n    if (!e) {\n      return false;\n    }\n\n    return (\n      this.isOrIsInside(this.popoverTip, e.currentTarget) ||\n      this.isOrIsInside(this.popoverTip, e.target) ||\n      this.isOrIsInside(this.colorpicker.picker, e.currentTarget) ||\n      this.isOrIsInside(this.colorpicker.picker, e.target)\n    );\n  }\n\n  isOrIsInside(container, element) {\n    if (!container || !element) {\n      return false;\n    }\n\n    element = $(element);\n\n    return (\n      element.is(container) ||\n      container.find(element).length > 0\n    );\n  }\n\n  onClickingInside(e) {\n    this.clicking = this.isClickingInside(e);\n  }\n\n  createPopover() {\n    let cp = this.colorpicker;\n\n    this.popoverTarget = this.hasAddon ? this.addon : this.input;\n\n    cp.picker.addClass('colorpicker-bs-popover-content');\n\n    this.popoverTarget.popover(\n      $.extend(\n        true,\n        {},\n        _defaults.popover,\n        cp.options.popover,\n        {trigger: 'manual', content: cp.picker, html: true}\n      )\n    );\n\n    /* Bootstrap 5 added an official method to get the popover instance */\n    /* global bootstrap */\n    const useGetInstance = window.bootstrap &&\n      window.bootstrap.Popover &&\n      window.bootstrap.Popover.getInstance;\n\n    this.popoverTip = useGetInstance ?\n      $(bootstrap.Popover.getInstance(this.popoverTarget[0]).getTipElement()) :\n      $(this.popoverTarget.popover('getTipElement').data('bs.popover').tip);\n\n    this.popoverTip.addClass('colorpicker-bs-popover');\n\n    this.popoverTarget.on('shown.bs.popover', $.proxy(this.fireShow, this));\n    this.popoverTarget.on('hidden.bs.popover', $.proxy(this.fireHide, this));\n  }\n\n  /**\n   * If the widget is not inside a container or inline, rearranges its position relative to its element offset.\n   *\n   * @param {Event} [e]\n   * @private\n   */\n  reposition(e) {\n    if (this.popoverTarget && this.isVisible()) {\n      this.popoverTarget.popover('update');\n    }\n  }\n\n  /**\n   * Toggles the colorpicker between visible or hidden\n   *\n   * @fires Colorpicker#colorpickerShow\n   * @fires Colorpicker#colorpickerHide\n   * @param {Event} [e]\n   */\n  toggle(e) {\n    if (this.isVisible()) {\n      this.hide(e);\n    } else {\n      this.show(e);\n    }\n  }\n\n  /**\n   * Shows the colorpicker widget if hidden.\n   *\n   * @fires Colorpicker#colorpickerShow\n   * @param {Event} [e]\n   */\n  show(e) {\n    if (this.isVisible() || this.showing || this.hidding) {\n      return;\n    }\n\n    this.showing = true;\n    this.hidding = false;\n    this.clicking = false;\n\n    let cp = this.colorpicker;\n\n    cp.lastEvent.alias = 'show';\n    cp.lastEvent.e = e;\n\n    // Prevent showing browser native HTML5 colorpicker\n    if (\n      (e && (!this.hasInput || this.input.attr('type') === 'color')) &&\n      (e && e.preventDefault)\n    ) {\n      e.stopPropagation();\n      e.preventDefault();\n    }\n\n    // If it's a popover, add event to the document to hide the picker when clicking outside of it\n    if (this.isPopover) {\n      $(this.root).on('resize.colorpicker', $.proxy(this.reposition, this));\n    }\n\n    // add visible class before popover is shown\n    cp.picker.addClass('colorpicker-visible').removeClass('colorpicker-hidden');\n\n    if (this.popoverTarget) {\n      this.popoverTarget.popover('show');\n    } else {\n      this.fireShow();\n    }\n  }\n\n  fireShow() {\n    this.hidding = false;\n    this.showing = false;\n\n    if (this.isPopover) {\n      // Add event to hide on outside click\n      $(this.root.document).on('mousedown.colorpicker touchstart.colorpicker', $.proxy(this.hide, this));\n      $(this.root.document).on('mousedown.colorpicker touchstart.colorpicker', $.proxy(this.onClickingInside, this));\n    }\n\n    /**\n     * (Colorpicker) When show() is called and the widget can be shown.\n     *\n     * @event Colorpicker#colorpickerShow\n     */\n    this.colorpicker.trigger('colorpickerShow');\n  }\n\n  /**\n   * Hides the colorpicker widget.\n   * Hide is prevented when it is triggered by an event whose target element has been clicked/touched.\n   *\n   * @fires Colorpicker#colorpickerHide\n   * @param {Event} [e]\n   */\n  hide(e) {\n    if (this.isHidden() || this.showing || this.hidding) {\n      return;\n    }\n\n    let cp = this.colorpicker, clicking = (this.clicking || this.isClickingInside(e));\n\n    this.hidding = true;\n    this.showing = false;\n    this.clicking = false;\n\n    cp.lastEvent.alias = 'hide';\n    cp.lastEvent.e = e;\n\n    // TODO: fix having to click twice outside when losing focus and last 2 clicks where inside the colorpicker\n\n    // Prevent hide if triggered by an event and an element inside the colorpicker has been clicked/touched\n    if (clicking) {\n      this.hidding = false;\n      return;\n    }\n\n    if (this.popoverTarget) {\n      this.popoverTarget.popover('hide');\n    } else {\n      this.fireHide();\n    }\n  }\n\n  fireHide() {\n    this.hidding = false;\n    this.showing = false;\n\n    let cp = this.colorpicker;\n\n    // add hidden class after popover is hidden\n    cp.picker.addClass('colorpicker-hidden').removeClass('colorpicker-visible');\n\n    // Unbind window and document events, since there is no need to keep them while the popup is hidden\n    $(this.root).off('resize.colorpicker', $.proxy(this.reposition, this));\n    $(this.root.document).off('mousedown.colorpicker touchstart.colorpicker', $.proxy(this.hide, this));\n    $(this.root.document).off('mousedown.colorpicker touchstart.colorpicker', $.proxy(this.onClickingInside, this));\n\n    /**\n     * (Colorpicker) When hide() is called and the widget can be hidden.\n     *\n     * @event Colorpicker#colorpickerHide\n     */\n    cp.trigger('colorpickerHide');\n  }\n\n  focus() {\n    if (this.hasAddon) {\n      return this.addon.focus();\n    }\n    if (this.hasInput) {\n      return this.input.focus();\n    }\n    return false;\n  }\n\n  /**\n   * Returns true if the colorpicker element has the colorpicker-visible class and not the colorpicker-hidden one.\n   * False otherwise.\n   *\n   * @returns {boolean}\n   */\n  isVisible() {\n    return this.colorpicker.picker.hasClass('colorpicker-visible') &&\n      !this.colorpicker.picker.hasClass('colorpicker-hidden');\n  }\n\n  /**\n   * Returns true if the colorpicker element has the colorpicker-hidden class and not the colorpicker-visible one.\n   * False otherwise.\n   *\n   * @returns {boolean}\n   */\n  isHidden() {\n    return this.colorpicker.picker.hasClass('colorpicker-hidden') &&\n      !this.colorpicker.picker.hasClass('colorpicker-visible');\n  }\n}\n\nexport default PopupHandler;\n","'use strict';\n\nimport $ from 'jquery';\nimport ColorItem from './ColorItem';\n\n/**\n * Handles everything related to the colorpicker input\n * @ignore\n */\nclass InputHandler {\n  /**\n   * @param {Colorpicker} colorpicker\n   */\n  constructor(colorpicker) {\n    /**\n     * @type {Colorpicker}\n     */\n    this.colorpicker = colorpicker;\n    /**\n     * @type {jQuery|false}\n     */\n    this.input = this.colorpicker.element.is('input') ? this.colorpicker.element : (this.colorpicker.options.input ?\n      this.colorpicker.element.find(this.colorpicker.options.input) : false);\n\n    if (this.input && (this.input.length === 0)) {\n      this.input = false;\n    }\n\n    this._initValue();\n  }\n\n  bind() {\n    if (!this.hasInput()) {\n      return;\n    }\n    this.input.on({\n      'keyup.colorpicker': $.proxy(this.onkeyup, this)\n    });\n    this.input.on({\n      'change.colorpicker': $.proxy(this.onchange, this)\n    });\n  }\n\n  unbind() {\n    if (!this.hasInput()) {\n      return;\n    }\n    this.input.off('.colorpicker');\n  }\n\n  _initValue() {\n    if (!this.hasInput()) {\n      return;\n    }\n\n    let val = '';\n\n    [\n      // candidates:\n      this.input.val(),\n      this.input.data('color'),\n      this.input.attr('data-color')\n    ].map((item) => {\n      if (item && (val === '')) {\n        val = item;\n      }\n    });\n\n    if (val instanceof ColorItem) {\n      val = this.getFormattedColor(val.string(this.colorpicker.format));\n    } else if (!(typeof val === 'string' || val instanceof String)) {\n      val = '';\n    }\n\n    this.input.prop('value', val);\n  }\n\n  /**\n   * Returns the color string from the input value.\n   * If there is no input the return value is false.\n   *\n   * @returns {String|boolean}\n   */\n  getValue() {\n    if (!this.hasInput()) {\n      return false;\n    }\n\n    return this.input.val();\n  }\n\n  /**\n   * If the input element is present, it updates the value with the current color object color string.\n   * If the value is changed, this method fires a \"change\" event on the input element.\n   *\n   * @param {String} val\n   *\n   * @fires Colorpicker#change\n   */\n  setValue(val) {\n    if (!this.hasInput()) {\n      return;\n    }\n\n    let inputVal = this.input.prop('value');\n\n    val = val ? val : '';\n\n    if (val === (inputVal ? inputVal : '')) {\n      // No need to set value or trigger any event if nothing changed\n      return;\n    }\n\n    this.input.prop('value', val);\n\n    /**\n     * (Input) Triggered on the input element when a new color is selected.\n     *\n     * @event Colorpicker#change\n     */\n    this.input.trigger({\n      type: 'change',\n      colorpicker: this.colorpicker,\n      color: this.colorpicker.color,\n      value: val\n    });\n  }\n\n  /**\n   * Returns the formatted color string, with the formatting options applied\n   * (e.g. useHashPrefix)\n   *\n   * @param {String|null} val\n   *\n   * @returns {String}\n   */\n  getFormattedColor(val = null) {\n    val = val ? val : this.colorpicker.colorHandler.getColorString();\n\n    if (!val) {\n      return '';\n    }\n\n    val = this.colorpicker.colorHandler.resolveColorDelegate(val, false);\n\n    if (this.colorpicker.options.useHashPrefix === false) {\n      val = val.replace(/^#/g, '');\n    }\n\n    return val;\n  }\n\n  /**\n   * Returns true if the widget has an associated input element, false otherwise\n   * @returns {boolean}\n   */\n  hasInput() {\n    return (this.input !== false);\n  }\n\n  /**\n   * Returns true if the input exists and is disabled\n   * @returns {boolean}\n   */\n  isEnabled() {\n    return this.hasInput() && !this.isDisabled();\n  }\n\n  /**\n   * Returns true if the input exists and is disabled\n   * @returns {boolean}\n   */\n  isDisabled() {\n    return this.hasInput() && (this.input.prop('disabled') === true);\n  }\n\n  /**\n   * Disables the input if any\n   *\n   * @fires Colorpicker#colorpickerDisable\n   * @returns {boolean}\n   */\n  disable() {\n    if (this.hasInput()) {\n      this.input.prop('disabled', true);\n    }\n  }\n\n  /**\n   * Enables the input if any\n   *\n   * @fires Colorpicker#colorpickerEnable\n   * @returns {boolean}\n   */\n  enable() {\n    if (this.hasInput()) {\n      this.input.prop('disabled', false);\n    }\n  }\n\n  /**\n   * Calls setValue with the current internal color value\n   *\n   * @fires Colorpicker#change\n   */\n  update() {\n    if (!this.hasInput()) {\n      return;\n    }\n\n    if (\n      (this.colorpicker.options.autoInputFallback === false) &&\n      this.colorpicker.colorHandler.isInvalidColor()\n    ) {\n      // prevent update if color is invalid, autoInputFallback is disabled and the last event is keyup.\n      return;\n    }\n\n    this.setValue(this.getFormattedColor());\n  }\n\n  /**\n   * Function triggered when the input has changed, so the colorpicker gets updated.\n   *\n   * @private\n   * @param {Event} e\n   * @returns {boolean}\n   */\n  onchange(e) {\n    this.colorpicker.lastEvent.alias = 'input.change';\n    this.colorpicker.lastEvent.e = e;\n\n    let val = this.getValue();\n\n    if (val !== e.value) {\n      this.colorpicker.setValue(val);\n    }\n  }\n\n  /**\n   * Function triggered after a keyboard key has been released.\n   *\n   * @private\n   * @param {Event} e\n   * @returns {boolean}\n   */\n  onkeyup(e) {\n    this.colorpicker.lastEvent.alias = 'input.keyup';\n    this.colorpicker.lastEvent.e = e;\n\n    let val = this.getValue();\n\n    if (val !== e.value) {\n      this.colorpicker.setValue(val);\n    }\n  }\n}\n\nexport default InputHandler;\n","'use strict';\n\nvar colorString = require('color-string');\nvar convert = require('color-convert');\n\nvar _slice = [].slice;\n\nvar skippedModels = [\n\t// to be honest, I don't really feel like keyword belongs in color convert, but eh.\n\t'keyword',\n\n\t// gray conflicts with some method names, and has its own method defined.\n\t'gray',\n\n\t// shouldn't really be in color-convert either...\n\t'hex'\n];\n\nvar hashedModelKeys = {};\nObject.keys(convert).forEach(function (model) {\n\thashedModelKeys[_slice.call(convert[model].labels).sort().join('')] = model;\n});\n\nvar limiters = {};\n\nfunction Color(obj, model) {\n\tif (!(this instanceof Color)) {\n\t\treturn new Color(obj, model);\n\t}\n\n\tif (model && model in skippedModels) {\n\t\tmodel = null;\n\t}\n\n\tif (model && !(model in convert)) {\n\t\tthrow new Error('Unknown model: ' + model);\n\t}\n\n\tvar i;\n\tvar channels;\n\n\tif (obj == null) { // eslint-disable-line no-eq-null,eqeqeq\n\t\tthis.model = 'rgb';\n\t\tthis.color = [0, 0, 0];\n\t\tthis.valpha = 1;\n\t} else if (obj instanceof Color) {\n\t\tthis.model = obj.model;\n\t\tthis.color = obj.color.slice();\n\t\tthis.valpha = obj.valpha;\n\t} else if (typeof obj === 'string') {\n\t\tvar result = colorString.get(obj);\n\t\tif (result === null) {\n\t\t\tthrow new Error('Unable to parse color from string: ' + obj);\n\t\t}\n\n\t\tthis.model = result.model;\n\t\tchannels = convert[this.model].channels;\n\t\tthis.color = result.value.slice(0, channels);\n\t\tthis.valpha = typeof result.value[channels] === 'number' ? result.value[channels] : 1;\n\t} else if (obj.length) {\n\t\tthis.model = model || 'rgb';\n\t\tchannels = convert[this.model].channels;\n\t\tvar newArr = _slice.call(obj, 0, channels);\n\t\tthis.color = zeroArray(newArr, channels);\n\t\tthis.valpha = typeof obj[channels] === 'number' ? obj[channels] : 1;\n\t} else if (typeof obj === 'number') {\n\t\t// this is always RGB - can be converted later on.\n\t\tobj &= 0xFFFFFF;\n\t\tthis.model = 'rgb';\n\t\tthis.color = [\n\t\t\t(obj >> 16) & 0xFF,\n\t\t\t(obj >> 8) & 0xFF,\n\t\t\tobj & 0xFF\n\t\t];\n\t\tthis.valpha = 1;\n\t} else {\n\t\tthis.valpha = 1;\n\n\t\tvar keys = Object.keys(obj);\n\t\tif ('alpha' in obj) {\n\t\t\tkeys.splice(keys.indexOf('alpha'), 1);\n\t\t\tthis.valpha = typeof obj.alpha === 'number' ? obj.alpha : 0;\n\t\t}\n\n\t\tvar hashedKeys = keys.sort().join('');\n\t\tif (!(hashedKeys in hashedModelKeys)) {\n\t\t\tthrow new Error('Unable to parse color from object: ' + JSON.stringify(obj));\n\t\t}\n\n\t\tthis.model = hashedModelKeys[hashedKeys];\n\n\t\tvar labels = convert[this.model].labels;\n\t\tvar color = [];\n\t\tfor (i = 0; i < labels.length; i++) {\n\t\t\tcolor.push(obj[labels[i]]);\n\t\t}\n\n\t\tthis.color = zeroArray(color);\n\t}\n\n\t// perform limitations (clamping, etc.)\n\tif (limiters[this.model]) {\n\t\tchannels = convert[this.model].channels;\n\t\tfor (i = 0; i < channels; i++) {\n\t\t\tvar limit = limiters[this.model][i];\n\t\t\tif (limit) {\n\t\t\t\tthis.color[i] = limit(this.color[i]);\n\t\t\t}\n\t\t}\n\t}\n\n\tthis.valpha = Math.max(0, Math.min(1, this.valpha));\n\n\tif (Object.freeze) {\n\t\tObject.freeze(this);\n\t}\n}\n\nColor.prototype = {\n\ttoString: function () {\n\t\treturn this.string();\n\t},\n\n\ttoJSON: function () {\n\t\treturn this[this.model]();\n\t},\n\n\tstring: function (places) {\n\t\tvar self = this.model in colorString.to ? this : this.rgb();\n\t\tself = self.round(typeof places === 'number' ? places : 1);\n\t\tvar args = self.valpha === 1 ? self.color : self.color.concat(this.valpha);\n\t\treturn colorString.to[self.model](args);\n\t},\n\n\tpercentString: function (places) {\n\t\tvar self = this.rgb().round(typeof places === 'number' ? places : 1);\n\t\tvar args = self.valpha === 1 ? self.color : self.color.concat(this.valpha);\n\t\treturn colorString.to.rgb.percent(args);\n\t},\n\n\tarray: function () {\n\t\treturn this.valpha === 1 ? this.color.slice() : this.color.concat(this.valpha);\n\t},\n\n\tobject: function () {\n\t\tvar result = {};\n\t\tvar channels = convert[this.model].channels;\n\t\tvar labels = convert[this.model].labels;\n\n\t\tfor (var i = 0; i < channels; i++) {\n\t\t\tresult[labels[i]] = this.color[i];\n\t\t}\n\n\t\tif (this.valpha !== 1) {\n\t\t\tresult.alpha = this.valpha;\n\t\t}\n\n\t\treturn result;\n\t},\n\n\tunitArray: function () {\n\t\tvar rgb = this.rgb().color;\n\t\trgb[0] /= 255;\n\t\trgb[1] /= 255;\n\t\trgb[2] /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.push(this.valpha);\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tunitObject: function () {\n\t\tvar rgb = this.rgb().object();\n\t\trgb.r /= 255;\n\t\trgb.g /= 255;\n\t\trgb.b /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.alpha = this.valpha;\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tround: function (places) {\n\t\tplaces = Math.max(places || 0, 0);\n\t\treturn new Color(this.color.map(roundToPlace(places)).concat(this.valpha), this.model);\n\t},\n\n\talpha: function (val) {\n\t\tif (arguments.length) {\n\t\t\treturn new Color(this.color.concat(Math.max(0, Math.min(1, val))), this.model);\n\t\t}\n\n\t\treturn this.valpha;\n\t},\n\n\t// rgb\n\tred: getset('rgb', 0, maxfn(255)),\n\tgreen: getset('rgb', 1, maxfn(255)),\n\tblue: getset('rgb', 2, maxfn(255)),\n\n\thue: getset(['hsl', 'hsv', 'hsl', 'hwb', 'hcg'], 0, function (val) { return ((val % 360) + 360) % 360; }), // eslint-disable-line brace-style\n\n\tsaturationl: getset('hsl', 1, maxfn(100)),\n\tlightness: getset('hsl', 2, maxfn(100)),\n\n\tsaturationv: getset('hsv', 1, maxfn(100)),\n\tvalue: getset('hsv', 2, maxfn(100)),\n\n\tchroma: getset('hcg', 1, maxfn(100)),\n\tgray: getset('hcg', 2, maxfn(100)),\n\n\twhite: getset('hwb', 1, maxfn(100)),\n\twblack: getset('hwb', 2, maxfn(100)),\n\n\tcyan: getset('cmyk', 0, maxfn(100)),\n\tmagenta: getset('cmyk', 1, maxfn(100)),\n\tyellow: getset('cmyk', 2, maxfn(100)),\n\tblack: getset('cmyk', 3, maxfn(100)),\n\n\tx: getset('xyz', 0, maxfn(100)),\n\ty: getset('xyz', 1, maxfn(100)),\n\tz: getset('xyz', 2, maxfn(100)),\n\n\tl: getset('lab', 0, maxfn(100)),\n\ta: getset('lab', 1),\n\tb: getset('lab', 2),\n\n\tkeyword: function (val) {\n\t\tif (arguments.length) {\n\t\t\treturn new Color(val);\n\t\t}\n\n\t\treturn convert[this.model].keyword(this.color);\n\t},\n\n\thex: function (val) {\n\t\tif (arguments.length) {\n\t\t\treturn new Color(val);\n\t\t}\n\n\t\treturn colorString.to.hex(this.rgb().round().color);\n\t},\n\n\trgbNumber: function () {\n\t\tvar rgb = this.rgb().color;\n\t\treturn ((rgb[0] & 0xFF) << 16) | ((rgb[1] & 0xFF) << 8) | (rgb[2] & 0xFF);\n\t},\n\n\tluminosity: function () {\n\t\t// http://www.w3.org/TR/WCAG20/#relativeluminancedef\n\t\tvar rgb = this.rgb().color;\n\n\t\tvar lum = [];\n\t\tfor (var i = 0; i < rgb.length; i++) {\n\t\t\tvar chan = rgb[i] / 255;\n\t\t\tlum[i] = (chan <= 0.03928) ? chan / 12.92 : Math.pow(((chan + 0.055) / 1.055), 2.4);\n\t\t}\n\n\t\treturn 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];\n\t},\n\n\tcontrast: function (color2) {\n\t\t// http://www.w3.org/TR/WCAG20/#contrast-ratiodef\n\t\tvar lum1 = this.luminosity();\n\t\tvar lum2 = color2.luminosity();\n\n\t\tif (lum1 > lum2) {\n\t\t\treturn (lum1 + 0.05) / (lum2 + 0.05);\n\t\t}\n\n\t\treturn (lum2 + 0.05) / (lum1 + 0.05);\n\t},\n\n\tlevel: function (color2) {\n\t\tvar contrastRatio = this.contrast(color2);\n\t\tif (contrastRatio >= 7.1) {\n\t\t\treturn 'AAA';\n\t\t}\n\n\t\treturn (contrastRatio >= 4.5) ? 'AA' : '';\n\t},\n\n\tisDark: function () {\n\t\t// YIQ equation from http://24ways.org/2010/calculating-color-contrast\n\t\tvar rgb = this.rgb().color;\n\t\tvar yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\n\t\treturn yiq < 128;\n\t},\n\n\tisLight: function () {\n\t\treturn !this.isDark();\n\t},\n\n\tnegate: function () {\n\t\tvar rgb = this.rgb();\n\t\tfor (var i = 0; i < 3; i++) {\n\t\t\trgb.color[i] = 255 - rgb.color[i];\n\t\t}\n\t\treturn rgb;\n\t},\n\n\tlighten: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[2] += hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdarken: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[2] -= hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tsaturate: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[1] += hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdesaturate: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[1] -= hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\twhiten: function (ratio) {\n\t\tvar hwb = this.hwb();\n\t\thwb.color[1] += hwb.color[1] * ratio;\n\t\treturn hwb;\n\t},\n\n\tblacken: function (ratio) {\n\t\tvar hwb = this.hwb();\n\t\thwb.color[2] += hwb.color[2] * ratio;\n\t\treturn hwb;\n\t},\n\n\tgrayscale: function () {\n\t\t// http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale\n\t\tvar rgb = this.rgb().color;\n\t\tvar val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\n\t\treturn Color.rgb(val, val, val);\n\t},\n\n\tfade: function (ratio) {\n\t\treturn this.alpha(this.valpha - (this.valpha * ratio));\n\t},\n\n\topaquer: function (ratio) {\n\t\treturn this.alpha(this.valpha + (this.valpha * ratio));\n\t},\n\n\trotate: function (degrees) {\n\t\tvar hsl = this.hsl();\n\t\tvar hue = hsl.color[0];\n\t\thue = (hue + degrees) % 360;\n\t\thue = hue < 0 ? 360 + hue : hue;\n\t\thsl.color[0] = hue;\n\t\treturn hsl;\n\t},\n\n\tmix: function (mixinColor, weight) {\n\t\t// ported from sass implementation in C\n\t\t// https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\n\t\tif (!mixinColor || !mixinColor.rgb) {\n\t\t\tthrow new Error('Argument to \"mix\" was not a Color instance, but rather an instance of ' + typeof mixinColor);\n\t\t}\n\t\tvar color1 = mixinColor.rgb();\n\t\tvar color2 = this.rgb();\n\t\tvar p = weight === undefined ? 0.5 : weight;\n\n\t\tvar w = 2 * p - 1;\n\t\tvar a = color1.alpha() - color2.alpha();\n\n\t\tvar w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n\t\tvar w2 = 1 - w1;\n\n\t\treturn Color.rgb(\n\t\t\t\tw1 * color1.red() + w2 * color2.red(),\n\t\t\t\tw1 * color1.green() + w2 * color2.green(),\n\t\t\t\tw1 * color1.blue() + w2 * color2.blue(),\n\t\t\t\tcolor1.alpha() * p + color2.alpha() * (1 - p));\n\t}\n};\n\n// model conversion methods and static constructors\nObject.keys(convert).forEach(function (model) {\n\tif (skippedModels.indexOf(model) !== -1) {\n\t\treturn;\n\t}\n\n\tvar channels = convert[model].channels;\n\n\t// conversion methods\n\tColor.prototype[model] = function () {\n\t\tif (this.model === model) {\n\t\t\treturn new Color(this);\n\t\t}\n\n\t\tif (arguments.length) {\n\t\t\treturn new Color(arguments, model);\n\t\t}\n\n\t\tvar newAlpha = typeof arguments[channels] === 'number' ? channels : this.valpha;\n\t\treturn new Color(assertArray(convert[this.model][model].raw(this.color)).concat(newAlpha), model);\n\t};\n\n\t// 'static' construction methods\n\tColor[model] = function (color) {\n\t\tif (typeof color === 'number') {\n\t\t\tcolor = zeroArray(_slice.call(arguments), channels);\n\t\t}\n\t\treturn new Color(color, model);\n\t};\n});\n\nfunction roundTo(num, places) {\n\treturn Number(num.toFixed(places));\n}\n\nfunction roundToPlace(places) {\n\treturn function (num) {\n\t\treturn roundTo(num, places);\n\t};\n}\n\nfunction getset(model, channel, modifier) {\n\tmodel = Array.isArray(model) ? model : [model];\n\n\tmodel.forEach(function (m) {\n\t\t(limiters[m] || (limiters[m] = []))[channel] = modifier;\n\t});\n\n\tmodel = model[0];\n\n\treturn function (val) {\n\t\tvar result;\n\n\t\tif (arguments.length) {\n\t\t\tif (modifier) {\n\t\t\t\tval = modifier(val);\n\t\t\t}\n\n\t\t\tresult = this[model]();\n\t\t\tresult.color[channel] = val;\n\t\t\treturn result;\n\t\t}\n\n\t\tresult = this[model]().color[channel];\n\t\tif (modifier) {\n\t\t\tresult = modifier(result);\n\t\t}\n\n\t\treturn result;\n\t};\n}\n\nfunction maxfn(max) {\n\treturn function (v) {\n\t\treturn Math.max(0, Math.min(max, v));\n\t};\n}\n\nfunction assertArray(val) {\n\treturn Array.isArray(val) ? val : [val];\n}\n\nfunction zeroArray(arr, length) {\n\tfor (var i = 0; i < length; i++) {\n\t\tif (typeof arr[i] !== 'number') {\n\t\t\tarr[i] = 0;\n\t\t}\n\t}\n\n\treturn arr;\n}\n\nmodule.exports = Color;\n","/* MIT license */\nvar colorNames = require('color-name');\nvar swizzle = require('simple-swizzle');\n\nvar reverseNames = {};\n\n// create a list of reverse color names\nfor (var name in colorNames) {\n\tif (colorNames.hasOwnProperty(name)) {\n\t\treverseNames[colorNames[name]] = name;\n\t}\n}\n\nvar cs = module.exports = {\n\tto: {},\n\tget: {}\n};\n\ncs.get = function (string) {\n\tvar prefix = string.substring(0, 3).toLowerCase();\n\tvar val;\n\tvar model;\n\tswitch (prefix) {\n\t\tcase 'hsl':\n\t\t\tval = cs.get.hsl(string);\n\t\t\tmodel = 'hsl';\n\t\t\tbreak;\n\t\tcase 'hwb':\n\t\t\tval = cs.get.hwb(string);\n\t\t\tmodel = 'hwb';\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tval = cs.get.rgb(string);\n\t\t\tmodel = 'rgb';\n\t\t\tbreak;\n\t}\n\n\tif (!val) {\n\t\treturn null;\n\t}\n\n\treturn {model: model, value: val};\n};\n\ncs.get.rgb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar abbr = /^#([a-f0-9]{3,4})$/i;\n\tvar hex = /^#([a-f0-9]{6})([a-f0-9]{2})?$/i;\n\tvar rgba = /^rgba?\\(\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/;\n\tvar per = /^rgba?\\(\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/;\n\tvar keyword = /(\\D+)/;\n\n\tvar rgb = [0, 0, 0, 1];\n\tvar match;\n\tvar i;\n\tvar hexAlpha;\n\n\tif (match = string.match(hex)) {\n\t\thexAlpha = match[2];\n\t\tmatch = match[1];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\t// https://jsperf.com/slice-vs-substr-vs-substring-methods-long-string/19\n\t\t\tvar i2 = i * 2;\n\t\t\trgb[i] = parseInt(match.slice(i2, i2 + 2), 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = Math.round((parseInt(hexAlpha, 16) / 255) * 100) / 100;\n\t\t}\n\t} else if (match = string.match(abbr)) {\n\t\tmatch = match[1];\n\t\thexAlpha = match[3];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i] + match[i], 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = Math.round((parseInt(hexAlpha + hexAlpha, 16) / 255) * 100) / 100;\n\t\t}\n\t} else if (match = string.match(rgba)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i + 1], 0);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\trgb[3] = parseFloat(match[4]);\n\t\t}\n\t} else if (match = string.match(per)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\trgb[3] = parseFloat(match[4]);\n\t\t}\n\t} else if (match = string.match(keyword)) {\n\t\tif (match[1] === 'transparent') {\n\t\t\treturn [0, 0, 0, 0];\n\t\t}\n\n\t\trgb = colorNames[match[1]];\n\n\t\tif (!rgb) {\n\t\t\treturn null;\n\t\t}\n\n\t\trgb[3] = 1;\n\n\t\treturn rgb;\n\t} else {\n\t\treturn null;\n\t}\n\n\tfor (i = 0; i < 3; i++) {\n\t\trgb[i] = clamp(rgb[i], 0, 255);\n\t}\n\trgb[3] = clamp(rgb[3], 0, 1);\n\n\treturn rgb;\n};\n\ncs.get.hsl = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar hsl = /^hsla?\\(\\s*([+-]?(?:\\d*\\.)?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/;\n\tvar match = string.match(hsl);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = (parseFloat(match[1]) + 360) % 360;\n\t\tvar s = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar l = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\n\t\treturn [h, s, l, a];\n\t}\n\n\treturn null;\n};\n\ncs.get.hwb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar hwb = /^hwb\\(\\s*([+-]?\\d*[\\.]?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/;\n\tvar match = string.match(hwb);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = ((parseFloat(match[1]) % 360) + 360) % 360;\n\t\tvar w = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar b = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\t\treturn [h, w, b, a];\n\t}\n\n\treturn null;\n};\n\ncs.to.hex = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn (\n\t\t'#' +\n\t\thexDouble(rgba[0]) +\n\t\thexDouble(rgba[1]) +\n\t\thexDouble(rgba[2]) +\n\t\t(rgba[3] < 1\n\t\t\t? (hexDouble(Math.round(rgba[3] * 255)))\n\t\t\t: '')\n\t);\n};\n\ncs.to.rgb = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ')'\n\t\t: 'rgba(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ', ' + rgba[3] + ')';\n};\n\ncs.to.rgb.percent = function () {\n\tvar rgba = swizzle(arguments);\n\n\tvar r = Math.round(rgba[0] / 255 * 100);\n\tvar g = Math.round(rgba[1] / 255 * 100);\n\tvar b = Math.round(rgba[2] / 255 * 100);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + r + '%, ' + g + '%, ' + b + '%)'\n\t\t: 'rgba(' + r + '%, ' + g + '%, ' + b + '%, ' + rgba[3] + ')';\n};\n\ncs.to.hsl = function () {\n\tvar hsla = swizzle(arguments);\n\treturn hsla.length < 4 || hsla[3] === 1\n\t\t? 'hsl(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%)'\n\t\t: 'hsla(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%, ' + hsla[3] + ')';\n};\n\n// hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax\n// (hwb have alpha optional & 1 is default value)\ncs.to.hwb = function () {\n\tvar hwba = swizzle(arguments);\n\n\tvar a = '';\n\tif (hwba.length >= 4 && hwba[3] !== 1) {\n\t\ta = ', ' + hwba[3];\n\t}\n\n\treturn 'hwb(' + hwba[0] + ', ' + hwba[1] + '%, ' + hwba[2] + '%' + a + ')';\n};\n\ncs.to.keyword = function (rgb) {\n\treturn reverseNames[rgb.slice(0, 3)];\n};\n\n// helpers\nfunction clamp(num, min, max) {\n\treturn Math.min(Math.max(min, num), max);\n}\n\nfunction hexDouble(num) {\n\tvar str = num.toString(16).toUpperCase();\n\treturn (str.length < 2) ? '0' + str : str;\n}\n","'use strict';\n\nvar isArrayish = require('is-arrayish');\n\nvar concat = Array.prototype.concat;\nvar slice = Array.prototype.slice;\n\nvar swizzle = module.exports = function swizzle(args) {\n\tvar results = [];\n\n\tfor (var i = 0, len = args.length; i < len; i++) {\n\t\tvar arg = args[i];\n\n\t\tif (isArrayish(arg)) {\n\t\t\t// http://jsperf.com/javascript-array-concat-vs-push/98\n\t\t\tresults = concat.call(results, slice.call(arg));\n\t\t} else {\n\t\t\tresults.push(arg);\n\t\t}\n\t}\n\n\treturn results;\n};\n\nswizzle.wrap = function (fn) {\n\treturn function () {\n\t\treturn fn(swizzle(arguments));\n\t};\n};\n","'use strict';\n\nmodule.exports = function isArrayish(obj) {\n\tif (!obj) {\n\t\treturn false;\n\t}\n\n\treturn obj instanceof Array || Array.isArray(obj) ||\n\t\t(obj.length >= 0 && obj.splice instanceof Function);\n};\n","var conversions = require('./conversions');\nvar route = require('./route');\n\nvar convert = {};\n\nvar models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\tvar result = fn(args);\n\n\t\t// we're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (var len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(function (fromModel) {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tvar routes = route(fromModel);\n\tvar routeModels = Object.keys(routes);\n\n\trouteModels.forEach(function (toModel) {\n\t\tvar fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n","var conversions = require('./conversions');\n\n/*\n\tthis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tvar graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tvar models = Object.keys(conversions);\n\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tvar graph = buildGraph();\n\tvar queue = [fromModel]; // unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tvar current = queue.pop();\n\t\tvar adjacents = Object.keys(conversions[current]);\n\n\t\tfor (var len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tvar adjacent = adjacents[i];\n\t\t\tvar node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tvar path = [graph[toModel].parent, toModel];\n\tvar fn = conversions[graph[toModel].parent][toModel];\n\n\tvar cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tvar graph = deriveBFS(fromModel);\n\tvar conversion = {};\n\n\tvar models = Object.keys(graph);\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tvar toModel = models[i];\n\t\tvar node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// no possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n","'use strict';\n\nimport $ from 'jquery';\nimport ColorItem from './ColorItem';\n\n/**\n * Handles everything related to the colorpicker color\n * @ignore\n */\nclass ColorHandler {\n  /**\n   * @param {Colorpicker} colorpicker\n   */\n  constructor(colorpicker) {\n    /**\n     * @type {Colorpicker}\n     */\n    this.colorpicker = colorpicker;\n  }\n\n  /**\n   * @returns {*|String|ColorItem}\n   */\n  get fallback() {\n    return this.colorpicker.options.fallbackColor ?\n      this.colorpicker.options.fallbackColor : (this.hasColor() ? this.color : null);\n  }\n\n  /**\n   * @returns {String|null}\n   */\n  get format() {\n    if (this.colorpicker.options.format) {\n      return this.colorpicker.options.format;\n    }\n\n    if (this.hasColor() && this.color.hasTransparency() && this.color.format.match(/^hex/)) {\n      return this.isAlphaEnabled() ? 'rgba' : 'hex';\n    }\n\n    if (this.hasColor()) {\n      return this.color.format;\n    }\n\n    return 'rgb';\n  }\n\n  /**\n   * Internal color getter\n   *\n   * @type {ColorItem|null}\n   */\n  get color() {\n    return this.colorpicker.element.data('color');\n  }\n\n  /**\n   * Internal color setter\n   *\n   * @ignore\n   * @param {ColorItem|null} value\n   */\n  set color(value) {\n    this.colorpicker.element.data('color', value);\n\n    if ((value instanceof ColorItem) && (this.colorpicker.options.format === 'auto')) {\n      // If format is 'auto', use the first parsed one from now on\n      this.colorpicker.options.format = this.color.format;\n    }\n  }\n\n  bind() {\n    // if the color option is set\n    if (this.colorpicker.options.color) {\n      this.color = this.createColor(this.colorpicker.options.color);\n      return;\n    }\n\n    // if element[color] is empty and the input has a value\n    if (!this.color && !!this.colorpicker.inputHandler.getValue()) {\n      this.color = this.createColor(\n        this.colorpicker.inputHandler.getValue(), this.colorpicker.options.autoInputFallback\n      );\n    }\n  }\n\n  unbind() {\n    this.colorpicker.element.removeData('color');\n  }\n\n  /**\n   * Returns the color string from the input value or the 'data-color' attribute of the input or element.\n   * If empty, it returns the defaultValue parameter.\n   *\n   * @returns {String|*}\n   */\n  getColorString() {\n    if (!this.hasColor()) {\n      return '';\n    }\n\n    return this.color.string(this.format);\n  }\n\n  /**\n   * Sets the color value\n   *\n   * @param {String|ColorItem} val\n   */\n  setColorString(val) {\n    let color = val ? this.createColor(val) : null;\n\n    this.color = color ? color : null;\n  }\n\n  /**\n   * Creates a new color using the widget instance options (fallbackColor, format).\n   *\n   * @fires Colorpicker#colorpickerInvalid\n   * @param {*} val\n   * @param {boolean} fallbackOnInvalid\n   * @param {boolean} autoHexInputFallback\n   * @returns {ColorItem}\n   */\n  createColor(val, fallbackOnInvalid = true, autoHexInputFallback = false) {\n    let disableHexInputFallback = !fallbackOnInvalid && !autoHexInputFallback;\n\n    let color = new ColorItem(this.resolveColorDelegate(val), this.format, disableHexInputFallback);\n\n    if (!color.isValid()) {\n      if (fallbackOnInvalid) {\n        color = this.getFallbackColor();\n      }\n\n      /**\n       * (Colorpicker) Fired when the color is invalid and the fallback color is going to be used.\n       *\n       * @event Colorpicker#colorpickerInvalid\n       */\n      this.colorpicker.trigger('colorpickerInvalid', color, val);\n    }\n\n    if (!this.isAlphaEnabled()) {\n      // Alpha is disabled\n      color.alpha = 1;\n    }\n\n    return color;\n  }\n\n  getFallbackColor() {\n    if (this.fallback && (this.fallback === this.color)) {\n      return this.color;\n    }\n\n    let fallback = this.resolveColorDelegate(this.fallback);\n\n    let color = new ColorItem(fallback, this.format);\n\n    if (!color.isValid()) {\n      console.warn('The fallback color is invalid. Falling back to the previous color or black if any.');\n      return this.color ? this.color : new ColorItem('#000000', this.format);\n    }\n\n    return color;\n  }\n\n  /**\n   * @returns {ColorItem}\n   */\n  assureColor() {\n    if (!this.hasColor()) {\n      this.color = this.getFallbackColor();\n    }\n\n    return this.color;\n  }\n\n  /**\n   * Delegates the color resolution to the colorpicker extensions.\n   *\n   * @param {String|*} color\n   * @param {boolean} realColor if true, the color should resolve into a real (not named) color code\n   * @returns {ColorItem|String|*|null}\n   */\n  resolveColorDelegate(color, realColor = true) {\n    let extResolvedColor = false;\n\n    $.each(this.colorpicker.extensions, function (name, ext) {\n      if (extResolvedColor !== false) {\n        // skip if resolved\n        return;\n      }\n      extResolvedColor = ext.resolveColor(color, realColor);\n    });\n\n    return extResolvedColor ? extResolvedColor : color;\n  }\n\n  /**\n   * Checks if there is a color object, that it is valid and it is not a fallback\n   * @returns {boolean}\n   */\n  isInvalidColor() {\n    return !this.hasColor() || !this.color.isValid();\n  }\n\n  /**\n   * Returns true if the useAlpha option is exactly true, false otherwise\n   * @returns {boolean}\n   */\n  isAlphaEnabled() {\n    return (this.colorpicker.options.useAlpha !== false);\n  }\n\n  /**\n   * Returns true if the current color object is an instance of Color, false otherwise.\n   * @returns {boolean}\n   */\n  hasColor() {\n    return this.color instanceof ColorItem;\n  }\n}\n\nexport default ColorHandler;\n","'use strict';\n\nimport $ from 'jquery';\n\n/**\n * Handles everything related to the colorpicker UI\n * @ignore\n */\nclass PickerHandler {\n  /**\n   * @param {Colorpicker} colorpicker\n   */\n  constructor(colorpicker) {\n    /**\n     * @type {Colorpicker}\n     */\n    this.colorpicker = colorpicker;\n    /**\n     * @type {jQuery}\n     */\n    this.picker = null;\n  }\n\n  get options() {\n    return this.colorpicker.options;\n  }\n\n  get color() {\n    return this.colorpicker.colorHandler.color;\n  }\n\n  bind() {\n    /**\n     * @type {jQuery|HTMLElement}\n     */\n    let picker = this.picker = $(this.options.template);\n\n    if (this.options.customClass) {\n      picker.addClass(this.options.customClass);\n    }\n\n    if (this.options.horizontal) {\n      picker.addClass('colorpicker-horizontal');\n    }\n\n    if (this._supportsAlphaBar()) {\n      this.options.useAlpha = true;\n      picker.addClass('colorpicker-with-alpha');\n    } else {\n      this.options.useAlpha = false;\n    }\n  }\n\n  attach() {\n    // Inject the colorpicker element into the DOM\n    let pickerParent = this.colorpicker.container ? this.colorpicker.container : null;\n\n    if (pickerParent) {\n      this.picker.appendTo(pickerParent);\n    }\n  }\n\n  unbind() {\n    this.picker.remove();\n  }\n\n  _supportsAlphaBar() {\n    return (\n      (this.options.useAlpha || (this.colorpicker.colorHandler.hasColor() && this.color.hasTransparency())) &&\n      (this.options.useAlpha !== false) &&\n      (!this.options.format || (this.options.format && !this.options.format.match(/^hex([36])?$/i)))\n    );\n  }\n\n  /**\n   * Changes the color adjustment bars using the current color object information.\n   */\n  update() {\n    if (!this.colorpicker.colorHandler.hasColor()) {\n      return;\n    }\n\n    let vertical = (this.options.horizontal !== true),\n      slider = vertical ? this.options.sliders : this.options.slidersHorz;\n\n    let saturationGuide = this.picker.find('.colorpicker-saturation .colorpicker-guide'),\n      hueGuide = this.picker.find('.colorpicker-hue .colorpicker-guide'),\n      alphaGuide = this.picker.find('.colorpicker-alpha .colorpicker-guide');\n\n    let hsva = this.color.toHsvaRatio();\n\n    // Set guides position\n    if (hueGuide.length) {\n      hueGuide.css(vertical ? 'top' : 'left', (vertical ? slider.hue.maxTop : slider.hue.maxLeft) * (1 - hsva.h));\n    }\n    if (alphaGuide.length) {\n      alphaGuide.css(vertical ? 'top' : 'left', (vertical ? slider.alpha.maxTop : slider.alpha.maxLeft) * (1 - hsva.a));\n    }\n    if (saturationGuide.length) {\n      saturationGuide.css({\n        'top': slider.saturation.maxTop - hsva.v * slider.saturation.maxTop,\n        'left': hsva.s * slider.saturation.maxLeft\n      });\n    }\n\n    // Set saturation hue background\n    this.picker.find('.colorpicker-saturation')\n      .css('backgroundColor', this.color.getCloneHueOnly().toHexString()); // we only need hue\n\n    // Set alpha color gradient\n    let hexColor = this.color.toHexString();\n\n    let alphaBg = '';\n\n    if (this.options.horizontal) {\n      alphaBg = `linear-gradient(to right, ${hexColor} 0%, transparent 100%)`;\n    } else {\n      alphaBg = `linear-gradient(to bottom, ${hexColor} 0%, transparent 100%)`;\n    }\n\n    this.picker.find('.colorpicker-alpha-color').css('background', alphaBg);\n  }\n}\n\nexport default PickerHandler;\n","'use strict';\n\n/**\n * Handles everything related to the colorpicker addon\n * @ignore\n */\nclass AddonHandler {\n  /**\n   * @param {Colorpicker} colorpicker\n   */\n  constructor(colorpicker) {\n    /**\n     * @type {Colorpicker}\n     */\n    this.colorpicker = colorpicker;\n    /**\n     * @type {jQuery}\n     */\n    this.addon = null;\n  }\n\n  hasAddon() {\n    return !!this.addon;\n  }\n\n  bind() {\n    /**\n     * @type {*|jQuery}\n     */\n    this.addon = this.colorpicker.options.addon ?\n      this.colorpicker.element.find(this.colorpicker.options.addon) : null;\n\n    if (this.addon && (this.addon.length === 0)) {\n      // not found\n      this.addon = null;\n    }\n  }\n\n  unbind() {\n    if (this.hasAddon()) {\n      this.addon.off('.colorpicker');\n    }\n  }\n\n  /**\n   * If the addon element is present, its background color is updated\n   */\n  update() {\n    if (!this.colorpicker.colorHandler.hasColor() || !this.hasAddon()) {\n      return;\n    }\n\n    let colorStr = this.colorpicker.colorHandler.getColorString();\n\n    let styles = {'background': colorStr};\n\n    let icn = this.addon.find('i').eq(0);\n\n    if (icn.length > 0) {\n      icn.css(styles);\n    } else {\n      this.addon.css(styles);\n    }\n  }\n}\n\nexport default AddonHandler;\n"],"sourceRoot":""}
\ No newline at end of file
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-colorpicker/js/bootstrap-colorpicker.min.js.map
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-colorpicker/js/bootstrap-colorpicker.min.js.map	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-colorpicker/js/bootstrap-colorpicker.min.js.map	(revision 3762)
@@ -0,0 +1 @@
+{"version":3,"sources":["webpack://bootstrap-colorpicker/webpack/universalModuleDefinition","webpack://bootstrap-colorpicker/webpack/bootstrap","webpack://bootstrap-colorpicker/external {\"root\":\"jQuery\",\"commonjs2\":\"jquery\",\"commonjs\":\"jquery\",\"amd\":\"jquery\"}","webpack://bootstrap-colorpicker/./src/js/Extension.js","webpack://bootstrap-colorpicker/./src/js/ColorItem.js","webpack://bootstrap-colorpicker/./src/js/options.js","webpack://bootstrap-colorpicker/./src/js/extensions/Palette.js","webpack://bootstrap-colorpicker/./node_modules/color-name/index.js","webpack://bootstrap-colorpicker/./node_modules/color-convert/conversions.js","webpack://bootstrap-colorpicker/./src/js/plugin.js","webpack://bootstrap-colorpicker/./src/js/Colorpicker.js","webpack://bootstrap-colorpicker/./src/js/extensions/index.js","webpack://bootstrap-colorpicker/./src/js/extensions/Debugger.js","webpack://bootstrap-colorpicker/./src/js/extensions/Preview.js","webpack://bootstrap-colorpicker/./src/js/extensions/Swatches.js","webpack://bootstrap-colorpicker/./src/js/SliderHandler.js","webpack://bootstrap-colorpicker/./src/js/PopupHandler.js","webpack://bootstrap-colorpicker/./src/js/InputHandler.js","webpack://bootstrap-colorpicker/./node_modules/color/index.js","webpack://bootstrap-colorpicker/./node_modules/color-string/index.js","webpack://bootstrap-colorpicker/./node_modules/simple-swizzle/index.js","webpack://bootstrap-colorpicker/./node_modules/is-arrayish/index.js","webpack://bootstrap-colorpicker/./node_modules/color-convert/index.js","webpack://bootstrap-colorpicker/./node_modules/color-convert/route.js","webpack://bootstrap-colorpicker/./src/js/ColorHandler.js","webpack://bootstrap-colorpicker/./src/js/PickerHandler.js","webpack://bootstrap-colorpicker/./src/js/AddonHandler.js"],"names":["webpackUniversalModuleDefinition","root","factory","exports","module","require","define","amd","window","__WEBPACK_EXTERNAL_MODULE__0__","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","getDefault","getModuleExports","object","property","prototype","hasOwnProperty","p","s","_jquery","Extension","colorpicker","options","arguments","length","undefined","_classCallCheck","this","element","Error","on","$","proxy","onCreate","onDestroy","onUpdate","onChange","onInvalid","onShow","onHide","onEnable","onDisable","color","realColor","event","off","_color","HSVAColor","h","v","a","isNaN","ColorItem","fn","_len","args","Array","_key","result","apply","QixColor","format","_original","disableHexInputFallback","replace","sanitizeFormat","valid","parse","_color2","default","_format","isHex","model","hue","saturation","alpha","hasAlpha","toObject","string","round","str","isValid","isDark","isLight","formula","hues","isArray","colorFormulas","colors","mainColor","forEach","levels","saturationv","push","Math","sanitizeString","e","String","match","toLowerCase","complementary","triad","tetrad","splitcomplement","sassVars","bar_size_short","base_margin","columns","sliderSize","customClass","fallbackColor","horizontal","inline","container","popover","animation","placement","fallbackPlacement","debug","input","addon","autoInputFallback","autoHexInputFallback","useHashPrefix","useAlpha","template","extensions","showText","sliders","selector","maxLeft","maxTop","callLeft","callTop","childSelector","slidersHorz","_Extension2","defaults","namesAsValues","Palette","_this","_possibleConstructorReturn","__proto__","getPrototypeOf","extend","_typeof","keys","getLength","indexOf","toUpperCase","getValue","getName","defaultValue","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","cssKeywords","reverseKeywords","convert","rgb","channels","labels","hsl","hsv","hwb","cmyk","xyz","lab","lch","hex","keyword","ansi16","ansi256","hcg","apple","g","b","min","max","delta","rdif","gdif","bdif","diff","diffc","w","y","k","comparativeDistance","x","pow","reversed","currentClosestDistance","Infinity","currentClosestKeyword","distance","z","t1","t2","t3","val","smin","lmin","sv","hi","floor","f","q","vmin","sl","wh","bl","ratio","y2","x2","z2","hr","atan2","PI","sqrt","cos","sin","ansi","mult","rem","integer","toString","substring","colorString","split","map","char","join","parseInt","chroma","grayscale","pure","mg","_Colorpicker","plugin","Colorpicker","option","fnArgs","slice","isSingleElement","returnValue","$elements","each","$this","_jquery2","inst","data","isFunction","constructor","_Extension","_options","_extensions","_SliderHandler","_PopupHandler","_InputHandler","_ColorHandler","_PickerHandler","_AddonHandler","_ColorItem","colorPickerIdCounter","self","colorHandler","pickerHandler","picker","id","lastEvent","alias","addClass","attr","disabled","inputHandler","InputHandler","ColorHandler","sliderHandler","SliderHandler","popupHandler","PopupHandler","PickerHandler","addonHandler","AddonHandler","init","trigger","initExtensions","attach","update","isDisabled","disable","ext","registerExtension","ExtensionClass","config","unbind","removeClass","removeData","show","hide","toggle","ch","hasColor","equals","createColor","assureColor","enable","eventName","type","coreExtensions","_Debugger","_Preview","_Swatches","_Palette","Debugger","Preview","Swatches","debugger","preview","swatches","palette","eventCounter","hasInput","onChangeInput","_console","logMessage","console","concat","logArgs","log","_get","elementInner","find","append","css","html","toRgbString","_Palette2","barTemplate","swatchTemplate","isEnabled","load","_this2","swatchContainer","isAliased","empty","$swatch","$sw","setValue","currentSlider","mousePointer","left","top","onMove","defaultOnMove","slider","cp","getFallbackColor","getClone","guideStyle","focus","sliderClasses","sliderName","pressed","mousemove.colorpicker","moved","touchmove.colorpicker","mouseup.colorpicker","released","touchend.colorpicker","pageX","pageY","originalEvent","touches","target","zone","closest","is","parent","guide","offset","style","preventDefault","popoverTarget","popoverTip","clicking","hidding","showing","hasAddon","createPopover","mousedown.colorpicker touchstart.colorpicker","focus.colorpicker","focusout.colorpicker","reposition","document","onClickingInside","isOrIsInside","currentTarget","isClickingInside","_defaults","content","useGetInstance","bootstrap","Popover","getInstance","getTipElement","tip","fireShow","fireHide","isVisible","stopPropagation","isPopover","isHidden","hasClass","_initValue","keyup.colorpicker","onkeyup","change.colorpicker","onchange","item","getFormattedColor","prop","inputVal","getColorString","resolveColorDelegate","isInvalidColor","_slice","skippedModels","hashedModelKeys","sort","limiters","Color","obj","valpha","newArr","zeroArray","splice","hashedKeys","JSON","stringify","limit","freeze","toJSON","places","to","percentString","percent","array","unitArray","unitObject","roundToPlace","getset","maxfn","saturationl","lightness","wblack","rgbNumber","luminosity","lum","chan","contrast","color2","lum1","lum2","level","contrastRatio","yiq","negate","lighten","darken","saturate","desaturate","whiten","blacken","fade","opaquer","rotate","degrees","mix","mixinColor","weight","color1","w1","w2","newAlpha","assertArray","raw","roundTo","num","Number","toFixed","channel","modifier","arr","colorNames","swizzle","reverseNames","cs","prefix","abbr","rgba","per","hexAlpha","i2","parseFloat","clamp","hexDouble","hsla","hwba","isArrayish","results","len","arg","wrap","Function","conversions","route","models","wrapRaw","wrappedFn","conversion","wrapRounded","fromModel","routes","routeModels","toModel","buildGraph","graph","deriveBFS","queue","current","pop","adjacents","adjacent","node","unshift","link","from","wrapConversion","path","cur","fallbackOnInvalid","isAlphaEnabled","fallback","warn","extResolvedColor","resolveColor","hasTransparency","_supportsAlphaBar","pickerParent","appendTo","remove","vertical","saturationGuide","hueGuide","alphaGuide","hsva","toHsvaRatio","getCloneHueOnly","toHexString","hexColor","alphaBg","colorStr","styles","background","icn","eq"],"mappings":"CAAA,SAAAA,iCAAAC,KAAAC,SACA,UAAAC,UAAA,iBAAAC,SAAA,SACAA,OAAAD,QAAAD,QAAAG,QAAA,gBACA,UAAAC,SAAA,YAAAA,OAAAC,IACAD,OAAA,mCAAAJ,cACA,UAAAC,UAAA,SACAA,QAAA,yBAAAD,QAAAG,QAAA,gBAEAJ,KAAA,yBAAAC,QAAAD,KAAA,YARA,CASCO,OAAA,SAAAC,gCACD,yBCTA,IAAAC,oBAGA,SAAAC,oBAAAC,UAGA,GAAAF,iBAAAE,UAAA,CACA,OAAAF,iBAAAE,UAAAT,QAGA,IAAAC,OAAAM,iBAAAE,WACAC,EAAAD,SACAE,EAAA,MACAX,YAIAY,QAAAH,UAAAI,KAAAZ,OAAAD,QAAAC,cAAAD,QAAAQ,qBAGAP,OAAAU,EAAA,KAGA,OAAAV,OAAAD,QAKAQ,oBAAAM,EAAAF,QAGAJ,oBAAAO,EAAAR,iBAGAC,oBAAAQ,EAAA,SAAAhB,QAAAiB,KAAAC,QACA,IAAAV,oBAAAW,EAAAnB,QAAAiB,MAAA,CACAG,OAAAC,eAAArB,QAAAiB,MAA0CK,WAAA,KAAAC,IAAAL,WAK1CV,oBAAAgB,EAAA,SAAAxB,SACA,UAAAyB,SAAA,aAAAA,OAAAC,YAAA,CACAN,OAAAC,eAAArB,QAAAyB,OAAAC,aAAwDC,MAAA,WAExDP,OAAAC,eAAArB,QAAA,cAAiD2B,MAAA,QAQjDnB,oBAAAoB,EAAA,SAAAD,MAAAE,MACA,GAAAA,KAAA,EAAAF,MAAAnB,oBAAAmB,OACA,GAAAE,KAAA,SAAAF,MACA,GAAAE,KAAA,UAAAF,QAAA,UAAAA,aAAAG,WAAA,OAAAH,MACA,IAAAI,GAAAX,OAAAY,OAAA,MACAxB,oBAAAgB,EAAAO,IACAX,OAAAC,eAAAU,GAAA,WAAyCT,WAAA,KAAAK,QACzC,GAAAE,KAAA,UAAAF,OAAA,iBAAAM,OAAAN,MAAAnB,oBAAAQ,EAAAe,GAAAE,IAAA,SAAAA,KAAgH,OAAAN,MAAAM,MAAqBC,KAAA,KAAAD,MACrI,OAAAF,IAIAvB,oBAAA2B,EAAA,SAAAlC,QACA,IAAAiB,OAAAjB,eAAA6B,WACA,SAAAM,aAA2B,OAAAnC,OAAA,YAC3B,SAAAoC,mBAAiC,OAAApC,QACjCO,oBAAAQ,EAAAE,OAAA,IAAAA,QACA,OAAAA,QAIAV,oBAAAW,EAAA,SAAAmB,OAAAC,UAAsD,OAAAnB,OAAAoB,UAAAC,eAAA5B,KAAAyB,OAAAC,WAGtD/B,oBAAAkC,EAAA,GAIA,OAAAlC,wCAAAmC,EAAA,8BClFA1C,OAAAD,QAAAM,8oBCEA,IAAAsC,QAAApC,oBAAA,sRAKMqC,qBAKJ,SAAAA,UAAYC,aAA2B,IAAdC,QAAcC,UAAAC,OAAA,GAAAD,UAAA,KAAAE,UAAAF,UAAA,MAAAG,gBAAAC,KAAAP,WAKrCO,KAAKN,YAAcA,YAMnBM,KAAKL,QAAUA,QAEf,KAAMK,KAAKN,YAAYO,SAAWD,KAAKN,YAAYO,QAAQJ,QAAS,CAClE,MAAM,IAAIK,MAAM,oDAGlBF,KAAKN,YAAYO,QAAQE,GAAG,oCAAqCC,iBAAEC,MAAML,KAAKM,SAAUN,OACxFA,KAAKN,YAAYO,QAAQE,GAAG,qCAAsCC,iBAAEC,MAAML,KAAKO,UAAWP,OAC1FA,KAAKN,YAAYO,QAAQE,GAAG,oCAAqCC,iBAAEC,MAAML,KAAKQ,SAAUR,OACxFA,KAAKN,YAAYO,QAAQE,GAAG,oCAAqCC,iBAAEC,MAAML,KAAKS,SAAUT,OACxFA,KAAKN,YAAYO,QAAQE,GAAG,qCAAsCC,iBAAEC,MAAML,KAAKU,UAAWV,OAC1FA,KAAKN,YAAYO,QAAQE,GAAG,kCAAmCC,iBAAEC,MAAML,KAAKW,OAAQX,OACpFA,KAAKN,YAAYO,QAAQE,GAAG,kCAAmCC,iBAAEC,MAAML,KAAKY,OAAQZ,OACpFA,KAAKN,YAAYO,QAAQE,GAAG,oCAAqCC,iBAAEC,MAAML,KAAKa,SAAUb,OACxFA,KAAKN,YAAYO,QAAQE,GAAG,qCAAsCC,iBAAEC,MAAML,KAAKc,UAAWd,+EAY/Ee,OAAyB,IAAlBC,UAAkBpB,UAAAC,OAAA,GAAAD,UAAA,KAAAE,UAAAF,UAAA,GAAN,KAC9B,OAAO,gDASAqB,oDAUCA,OACRjB,KAAKN,YAAYO,QAAQiB,IAAI,8DAStBD,kDAUAA,oDAUCA,8CAUHA,8CAUAA,oDAUGA,kDAUDA,gDAKIxB,ssBC7If,IAAA0B,OAAA/D,oBAAA,qRAMMgE,qBAOJ,SAAAA,UAAYC,EAAG9B,EAAG+B,EAAGC,GAAGxB,gBAAAC,KAAAoB,WACtBpB,KAAKqB,EAAIG,MAAMH,GAAK,EAAIA,EACxBrB,KAAKT,EAAIiC,MAAMjC,GAAK,EAAIA,EACxBS,KAAKsB,EAAIE,MAAMF,GAAK,EAAIA,EACxBtB,KAAKuB,EAAIC,MAAMH,GAAK,EAAIE,oEAIxB,OAAUvB,KAAKqB,EAAf,KAAqBrB,KAAKT,EAA1B,MAAiCS,KAAKsB,EAAtC,MAA6CtB,KAAKuB,8BAOhDE,2EA2BAC,IAAa,QAAAC,KAAA/B,UAAAC,OAAN+B,KAAMC,MAAAF,KAAA,EAAAA,KAAA,KAAAG,KAAA,EAAAA,KAAAH,KAAAG,OAAA,CAANF,KAAME,KAAA,GAAAlC,UAAAkC,MACf,GAAIlC,UAAUC,SAAW,EAAG,CAC1B,OAAOG,KAAKmB,OAGd,IAAIY,OAAS/B,KAAKmB,OAAOO,IAAIM,MAAMhC,KAAKmB,OAAQS,MAEhD,KAAMG,kBAAkBE,iBAAW,CAEjC,OAAOF,OAGT,OAAO,IAAIN,UAAUM,OAAQ/B,KAAKkC,6CAUlC,OAAOlC,KAAKmC,kDAvCZ,OAAOf,cA+CT,SAAAK,YAA0E,IAA9DV,MAA8DnB,UAAAC,OAAA,GAAAD,UAAA,KAAAE,UAAAF,UAAA,GAAtD,KAAsD,IAAhDsC,OAAgDtC,UAAAC,OAAA,GAAAD,UAAA,KAAAE,UAAAF,UAAA,GAAvC,KAAuC,IAAjCwC,wBAAiCxC,UAAAC,OAAA,GAAAD,UAAA,KAAAE,UAAAF,UAAA,GAAP,MAAOG,gBAAAC,KAAAyB,WACxEzB,KAAKqC,QAAQtB,MAAOmB,OAAQE,uFAatBrB,OAAuD,IAAhDmB,OAAgDtC,UAAAC,OAAA,GAAAD,UAAA,KAAAE,UAAAF,UAAA,GAAvC,KAAuC,IAAjCwC,wBAAiCxC,UAAAC,OAAA,GAAAD,UAAA,KAAAE,UAAAF,UAAA,GAAP,MACtDsC,OAAST,UAAUa,eAAeJ,QAMlClC,KAAKmC,WACHpB,MACAmB,OACAK,MAAO,MAMTvC,KAAKmB,OAASM,UAAUe,MAAMzB,MAAOqB,yBAErC,GAAIpC,KAAKmB,SAAW,KAAM,CACxBnB,KAAKmB,QAAS,EAAAsB,QAAAC,WACd1C,KAAKmC,UAAUI,MAAQ,MACvB,OAOFvC,KAAK2C,QAAUT,OAASA,OACrBT,UAAUmB,MAAM7B,OAAS,MAAQf,KAAKmB,OAAO0B,gDAsIhD,OAAO7C,KAAKmC,UAAUI,QAAU,qDAiEtBlB,GACVrB,KAAK8C,KAAQ,EAAIzB,GAAK,kEAkBL9B,GACjBS,KAAK+C,WAAcxD,EAAI,wDAkBX+B,GACZtB,KAAKzB,OAAU,EAAI+C,GAAK,wDAmBZC,GACZvB,KAAKgD,MAAQ,EAAIzB,wDAkBjB,OAAOvB,KAAK+C,aAAe,wDAS3B,OAAO/C,KAAKgD,QAAU,4DAStB,OAAOhD,KAAKiD,YAAejD,KAAKgD,MAAQ,8CASxC,OAAQxB,MAAMxB,KAAKgD,mDASnB,OAAO,IAAI5B,UAAUpB,KAAK8C,IAAK9C,KAAK+C,WAAY/C,KAAKzB,MAAOyB,KAAKgD,+CASjE,OAAOhD,KAAKkD,6DAWZ,OAAO,IAAI9B,UACTpB,KAAK8C,IAAM,IACX9C,KAAK+C,WAAa,IAClB/C,KAAKzB,MAAQ,IACbyB,KAAKgD,mDAWP,OAAOhD,KAAKmD,iDAUQ,IAAfjB,OAAetC,UAAAC,OAAA,GAAAD,UAAA,KAAAE,UAAAF,UAAA,GAAN,KACdsC,OAAST,UAAUa,eAAeJ,OAASA,OAASlC,KAAKkC,QAEzD,IAAKA,OAAQ,CACX,OAAOlC,KAAKmB,OAAOiC,QAAQD,SAG7B,GAAInD,KAAKmB,OAAOe,UAAYpC,UAAW,CACrC,MAAM,IAAII,MAAJ,8BAAwCgC,OAAxC,KAGR,IAAImB,IAAMrD,KAAKmB,OAAOe,UAEtB,OAAOmB,IAAID,MAAQC,IAAID,QAAQD,SAAWE,0CAYrCtC,OACLA,MAASA,iBAAiBU,UAAaV,MAAQ,IAAIU,UAAUV,OAE7D,IAAKA,MAAMuC,YAActD,KAAKsD,UAAW,CACvC,OAAO,MAGT,OACEtD,KAAK8C,MAAQ/B,MAAM+B,KACnB9C,KAAK+C,aAAehC,MAAMgC,YAC1B/C,KAAKzB,QAAUwC,MAAMxC,OACrByB,KAAKgD,QAAUjC,MAAMiC,kDAUvB,OAAO,IAAIvB,UAAUzB,KAAKmB,OAAQnB,KAAKkC,kEAUvC,OAAO,IAAIT,WAAWzB,KAAK8C,IAAK,IAAK,IAAK,GAAI9C,KAAKkC,gEASnD,OAAO,IAAIT,UAAUzB,KAAKmB,OAAO6B,MAAM,GAAIhD,KAAKkC,0DAShD,OAAOlC,KAAKmD,OAAO,yDASnB,OAAOnD,KAAKmD,OAAO,yDASnB,OAAOnD,KAAKmD,OAAO,+CAUnB,OAAOnD,KAAKmB,OAAOoC,mDAUnB,OAAOvD,KAAKmB,OAAOqC,oDAYZC,SACP,IAAIC,QAEJ,GAAI7B,MAAM8B,QAAQF,SAAU,CAC1BC,KAAOD,aACF,IAAKhC,UAAUmC,cAAcvE,eAAeoE,SAAU,CAC3D,MAAM,IAAIvD,MAAJ,yCAAmDuD,QAAnD,UACD,CACLC,KAAOjC,UAAUmC,cAAcH,SAGjC,IAAII,UAAaC,UAAY9D,KAAKmB,OAAQe,OAASlC,KAAKkC,OAExDwB,KAAKK,QAAQ,SAAUjB,KACrB,IAAIkB,QACFlB,KAAQgB,UAAUhB,MAAQA,KAAO,IAAOgB,UAAUhB,MAClDgB,UAAUG,cACVH,UAAUvF,QACVuF,UAAUd,SAGZa,OAAOK,KAAK,IAAIzC,UAAUuC,OAAQ9B,WAGpC,OAAO2B,uCA1WP,OAAO7D,KAAKmB,OAAO2B,wBA8CbvE,OACNyB,KAAKmB,OAASnB,KAAKmB,OAAO2B,IAAIvE,8CAtC9B,OAAOyB,KAAKmB,OAAO8C,gCAwDN1F,OACbyB,KAAKmB,OAASnB,KAAKmB,OAAO8C,YAAY1F,yCAhDtC,OAAOyB,KAAKmB,OAAO5C,0BAkEXA,OACRyB,KAAKmB,OAASnB,KAAKmB,OAAO5C,MAAMA,yCA1DhC,IAAIgD,EAAIvB,KAAKmB,OAAO6B,QAEpB,OAAOxB,MAAMD,GAAK,EAAIA,oBA0EdhD,OAERyB,KAAKmB,OAASnB,KAAKmB,OAAO6B,MAAMmB,KAAKf,MAAM7E,MAAQ,KAAO,wCAnE1D,OAAOyB,KAAK2C,QAAU3C,KAAK2C,QAAU3C,KAAKmB,OAAO0B,wBAqFxCtE,OACTyB,KAAK2C,QAAUlB,UAAUa,eAAe/D,6CA9P7BwC,OAAwC,IAAjCqB,wBAAiCxC,UAAAC,OAAA,GAAAD,UAAA,KAAAE,UAAAF,UAAA,GAAP,MAC5C,GAAImB,iBAAiBkB,gBAAU,CAC7B,OAAOlB,MAGT,GAAIA,iBAAiBU,UAAW,CAC9B,OAAOV,MAAMI,OAGf,IAAIe,OAAS,KAEb,GAAInB,iBAAiBK,UAAW,CAC9BL,OAASA,MAAMM,EAAGN,MAAMxB,EAAGwB,MAAMO,EAAGE,MAAMT,MAAMQ,GAAK,EAAIR,MAAMQ,OAC1D,CACLR,MAAQU,UAAU2C,eAAerD,OAGnC,GAAIA,QAAU,KAAM,CAClB,OAAO,KAGT,GAAIc,MAAM8B,QAAQ5C,OAAQ,CACxBmB,OAAS,MAGX,GAAIT,UAAUmB,MAAM7B,QAAWA,MAAMlB,SAAW,GAAKkB,MAAMlB,SAAW,GAAMuC,wBAAyB,CACnG,OAAO,KAGT,IACE,OAAO,EAAAK,QAAAC,SAAS3B,MAAOmB,QACvB,MAAOmC,GACP,OAAO,4DAaWhB,KACpB,YAAaA,MAAQ,UAAYA,eAAeiB,QAAS,CACvD,OAAOjB,IAGT,GAAIA,IAAIkB,MAAM,mBAAoB,CAChC,UAAWlB,IAGb,GAAIA,IAAImB,gBAAkB,cAAe,CACvC,MAAO,YAGT,OAAOnB,wCAaIA,KACX,YAAaA,MAAQ,UAAYA,eAAeiB,QAAS,CACvD,OAAO,MAGT,QAASjB,IAAIkB,MAAM,2EAcCrC,QACpB,OAAQA,QACN,IAAK,MACL,IAAK,OACL,IAAK,OACL,IAAK,OACL,IAAK,OACH,MAAO,MACT,IAAK,MACL,IAAK,OACL,IAAK,UACL,IAAK,OACH,MAAO,MACT,IAAK,MACL,IAAK,OACL,IAAK,MACL,IAAK,OACL,IAAK,MACL,IAAK,OACH,MAAO,MACT,QACE,MAAO,4BAuYfT,UAAUmC,eACRa,eAAgB,KAChBC,OAAQ,EAAG,IAAK,KAChBC,QAAS,EAAG,GAAI,IAAK,KACrBC,iBAAkB,EAAG,GAAI,sBAGZnD,kBAGbL,4BACAK,wIC3oBF,IAAIoD,UACFC,eAAkB,GAClBC,YAAe,EACfC,QAAW,GAGb,IAAIC,WAAcJ,SAASC,eAAiBD,SAASG,QAAYH,SAASE,aAAeF,SAASG,QAAU,oBAY1GE,YAAa,KAObnE,MAAO,MAQPoE,cAAe,MAWfjD,OAAQ,OASRkD,WAAY,MAUZC,OAAQ,MAYRC,UAAW,MAQXC,SACEC,UAAW,KACXC,UAAW,SACXC,kBAAmB,QAOrBC,MAAO,MAOPC,MAAO,QAQPC,MAAO,2BASPC,kBAAmB,KAYnBC,qBAAsB,KAStBC,cAAe,KAafC,SAAU,KAeVC,qWA+BAC,aAEItI,KAAM,UACN8B,SACEyG,SAAU,QAQhBC,SACEtD,YACEuD,SAAU,0BACVC,QAAStB,WACTuB,OAAQvB,WACRwB,SAAU,qBACVC,QAAS,iBAEX5D,KACEwD,SAAU,mBACVC,QAAS,EACTC,OAAQvB,WACRwB,SAAU,MACVC,QAAS,eAEX1D,OACEsD,SAAU,qBACVK,cAAe,2BACfJ,QAAS,EACTC,OAAQvB,WACRwB,SAAU,MACVC,QAAS,kBAObE,aACE7D,YACEuD,SAAU,0BACVC,QAAStB,WACTuB,OAAQvB,WACRwB,SAAU,qBACVC,QAAS,iBAEX5D,KACEwD,SAAU,mBACVC,QAAStB,WACTuB,OAAQ,EACRC,SAAU,cACVC,QAAS,OAEX1D,OACEsD,SAAU,qBACVK,cAAe,2BACfJ,QAAStB,WACTuB,OAAQ,EACRC,SAAU,gBACVC,QAAS,83BCtQf,IAAAG,YAAAzJ,oBAAA,uDACA,IAAAoC,QAAApC,oBAAA,26BAEA,IAAI0J,UAuBFjD,OAAQ,KAQRkD,cAAe,UAOXC,kHAMF,OAAOhH,KAAKL,QAAQkE,WAGtB,SAAAmD,QAAYtH,aAA2B,IAAdC,QAAcC,UAAAC,OAAA,GAAAD,UAAA,KAAAE,UAAAF,UAAA,MAAAG,gBAAAC,KAAAgH,SAAA,IAAAC,MAAAC,2BAAAlH,MAAAgH,QAAAG,WAAAnJ,OAAAoJ,eAAAJ,UAAAvJ,KAAAuC,KAC/BN,YAAaU,iBAAEiH,OAAO,QAAUP,SAAUnH,WAEhD,IAAMkC,MAAM8B,QAAQsD,MAAKtH,QAAQkE,SAAayD,QAAOL,MAAKtH,QAAQkE,UAAW,SAAW,CACtFoD,MAAKtH,QAAQkE,OAAS,KAJa,OAAAoD,wEAYrC,IAAKjH,KAAKL,QAAQkE,OAAQ,CACxB,OAAO,EAGT,GAAIhC,MAAM8B,QAAQ3D,KAAKL,QAAQkE,QAAS,CACtC,OAAO7D,KAAKL,QAAQkE,OAAOhE,OAG7B,GAAIyH,QAAOtH,KAAKL,QAAQkE,UAAW,SAAU,CAC3C,OAAO7F,OAAOuJ,KAAKvH,KAAKL,QAAQkE,QAAQhE,OAG1C,OAAO,oDAGIkB,OAAyB,IAAlBC,UAAkBpB,UAAAC,OAAA,GAAAD,UAAA,KAAAE,UAAAF,UAAA,GAAN,KAC9B,GAAII,KAAKwH,aAAe,EAAG,CACzB,OAAO,MAIT,GAAI3F,MAAM8B,QAAQ3D,KAAKL,QAAQkE,QAAS,CACtC,GAAI7D,KAAKL,QAAQkE,OAAO4D,QAAQ1G,QAAU,EAAG,CAC3C,OAAOA,MAET,GAAIf,KAAKL,QAAQkE,OAAO4D,QAAQ1G,MAAM2G,gBAAkB,EAAG,CACzD,OAAO3G,MAAM2G,cAEf,GAAI1H,KAAKL,QAAQkE,OAAO4D,QAAQ1G,MAAMyD,gBAAkB,EAAG,CACzD,OAAOzD,MAAMyD,cAEf,OAAO,MAGT,GAAI8C,QAAOtH,KAAKL,QAAQkE,UAAW,SAAU,CAC3C,OAAO,MAIT,IAAK7D,KAAKL,QAAQoH,eAAiB/F,UAAW,CAC5C,OAAOhB,KAAK2H,SAAS5G,MAAO,OAE9B,OAAOf,KAAK4H,QAAQ7G,MAAOf,KAAK4H,QAAQ,IAAM7G,gDAUxCxC,OAA6B,IAAtBsJ,aAAsBjI,UAAAC,OAAA,GAAAD,UAAA,KAAAE,UAAAF,UAAA,GAAP,MAC5B,YAAarB,QAAU,YAAcyB,KAAKL,QAAQkE,OAAQ,CACxD,OAAOgE,aAET,IAAK,IAAIhK,QAAQmC,KAAKL,QAAQkE,OAAQ,CACpC,IAAK7D,KAAKL,QAAQkE,OAAOxE,eAAexB,MAAO,CAC7C,SAEF,GAAImC,KAAKL,QAAQkE,OAAOhG,MAAM2G,gBAAkBjG,MAAMiG,cAAe,CACnE,OAAO3G,MAGX,OAAOgK,uDAUAhK,MAA4B,IAAtBgK,aAAsBjI,UAAAC,OAAA,GAAAD,UAAA,KAAAE,UAAAF,UAAA,GAAP,MAC5B,YAAa/B,OAAS,YAAcmC,KAAKL,QAAQkE,OAAQ,CACvD,OAAOgE,aAET,GAAI7H,KAAKL,QAAQkE,OAAOxE,eAAexB,MAAO,CAC5C,OAAOmC,KAAKL,QAAQkE,OAAOhG,MAE7B,OAAOgK,iCAtGWpI,qCA0GPuH,kGCnJfnK,OAAAD,SACAkL,WAAA,aACAC,cAAA,aACAC,MAAA,WACAC,YAAA,aACAC,OAAA,aACAC,OAAA,aACAC,QAAA,aACAC,OAAA,OACAC,gBAAA,aACAC,MAAA,SACAC,YAAA,YACAC,OAAA,WACAC,WAAA,aACAC,WAAA,YACAC,YAAA,WACAC,WAAA,YACAC,OAAA,YACAC,gBAAA,aACAC,UAAA,aACAC,SAAA,WACAC,MAAA,WACAC,UAAA,SACAC,UAAA,WACAC,eAAA,YACAC,UAAA,aACAC,WAAA,SACAC,UAAA,aACAC,WAAA,aACAC,aAAA,WACAC,gBAAA,WACAC,YAAA,WACAC,YAAA,YACAC,SAAA,SACAC,YAAA,aACAC,cAAA,aACAC,eAAA,WACAC,eAAA,UACAC,eAAA,UACAC,eAAA,WACAC,YAAA,WACAC,UAAA,YACAC,aAAA,WACAC,SAAA,aACAC,SAAA,aACAC,YAAA,YACAC,WAAA,WACAC,aAAA,aACAC,aAAA,WACAC,SAAA,WACAC,WAAA,aACAC,YAAA,aACAC,MAAA,WACAC,WAAA,YACAC,MAAA,aACAC,OAAA,SACAC,aAAA,YACAC,MAAA,aACAC,UAAA,aACAC,SAAA,aACAC,WAAA,WACAC,QAAA,UACAC,OAAA,aACAC,OAAA,aACAC,UAAA,aACAC,eAAA,aACAC,WAAA,WACAC,cAAA,aACAC,WAAA,aACAC,YAAA,aACAC,WAAA,aACAC,sBAAA,aACAC,WAAA,aACAC,YAAA,aACAC,WAAA,aACAC,WAAA,aACAC,aAAA,aACAC,eAAA,YACAC,cAAA,aACAC,gBAAA,aACAC,gBAAA,aACAC,gBAAA,aACAC,aAAA,aACAC,MAAA,SACAC,WAAA,WACAC,OAAA,aACAC,SAAA,WACAC,QAAA,SACAC,kBAAA,aACAC,YAAA,SACAC,cAAA,YACAC,cAAA,aACAC,gBAAA,YACAC,iBAAA,aACAC,mBAAA,WACAC,iBAAA,YACAC,iBAAA,YACAC,cAAA,WACAC,WAAA,aACAC,WAAA,aACAC,UAAA,aACAC,aAAA,aACAC,MAAA,SACAC,SAAA,aACAC,OAAA,WACAC,WAAA,YACAC,QAAA,WACAC,WAAA,UACAC,QAAA,aACAC,eAAA,aACAC,WAAA,aACAC,eAAA,aACAC,eAAA,aACAC,YAAA,aACAC,WAAA,aACAC,MAAA,YACAC,MAAA,aACAC,MAAA,aACAC,YAAA,aACAC,QAAA,WACAC,eAAA,YACAC,KAAA,SACAC,WAAA,aACAC,WAAA,YACAC,aAAA,WACAC,QAAA,aACAC,YAAA,YACAC,UAAA,WACAC,UAAA,aACAC,QAAA,WACAC,QAAA,aACAC,SAAA,aACAC,WAAA,YACAC,WAAA,aACAC,WAAA,aACAC,MAAA,aACAC,aAAA,WACAC,WAAA,YACAC,KAAA,aACAC,MAAA,WACAC,SAAA,aACAC,QAAA,WACAC,WAAA,YACAC,QAAA,aACAC,OAAA,aACAC,OAAA,aACAC,YAAA,aACAC,QAAA,WACAC,aAAA,2DCrJA,IAAAC,YAAkB9T,oBAAQ,GAM1B,IAAA+T,mBACA,QAAAtS,OAAAqS,YAAA,CACA,GAAAA,YAAA7R,eAAAR,KAAA,CACAsS,gBAAAD,YAAArS,WAIA,IAAAuS,QAAAvU,OAAAD,SACAyU,KAAOC,SAAA,EAAAC,OAAA,OACPC,KAAOF,SAAA,EAAAC,OAAA,OACPE,KAAOH,SAAA,EAAAC,OAAA,OACPG,KAAOJ,SAAA,EAAAC,OAAA,OACPI,MAAQL,SAAA,EAAAC,OAAA,QACRK,KAAON,SAAA,EAAAC,OAAA,OACPM,KAAOP,SAAA,EAAAC,OAAA,OACPO,KAAOR,SAAA,EAAAC,OAAA,OACPQ,KAAOT,SAAA,EAAAC,QAAA,QACPS,SAAWV,SAAA,EAAAC,QAAA,YACXU,QAAUX,SAAA,EAAAC,QAAA,WACVW,SAAWZ,SAAA,EAAAC,QAAA,YACXY,KAAOb,SAAA,EAAAC,QAAA,cACPa,OAASd,SAAA,EAAAC,QAAA,oBACTpG,MAAQmG,SAAA,EAAAC,QAAA,UAIR,QAAA1O,SAAAuO,QAAA,CACA,GAAAA,QAAA/R,eAAAwD,OAAA,CACA,kBAAAuO,QAAAvO,QAAA,CACA,UAAA3C,MAAA,8BAAA2C,OAGA,gBAAAuO,QAAAvO,QAAA,CACA,UAAA3C,MAAA,oCAAA2C,OAGA,GAAAuO,QAAAvO,OAAA0O,OAAA1R,SAAAuR,QAAAvO,OAAAyO,SAAA,CACA,UAAApR,MAAA,sCAAA2C,OAGA,IAAAyO,SAAAF,QAAAvO,OAAAyO,SACA,IAAAC,OAAAH,QAAAvO,OAAA0O,cACAH,QAAAvO,OAAAyO,gBACAF,QAAAvO,OAAA0O,OACAvT,OAAAC,eAAAmT,QAAAvO,OAAA,YAAqDtE,MAAA+S,WACrDtT,OAAAC,eAAAmT,QAAAvO,OAAA,UAAmDtE,MAAAgT,UAInDH,QAAAC,IAAAG,IAAA,SAAAH,KACA,IAAAjT,EAAAiT,IAAA,OACA,IAAAgB,EAAAhB,IAAA,OACA,IAAAiB,EAAAjB,IAAA,OACA,IAAAkB,IAAApO,KAAAoO,IAAAnU,EAAAiU,EAAAC,GACA,IAAAE,IAAArO,KAAAqO,IAAApU,EAAAiU,EAAAC,GACA,IAAAG,MAAAD,IAAAD,IACA,IAAAlR,EACA,IAAA9B,EACA,IAAAhC,EAEA,GAAAiV,MAAAD,IAAA,CACAlR,EAAA,OACE,GAAAjD,IAAAoU,IAAA,CACFnR,GAAAgR,EAAAC,GAAAG,WACE,GAAAJ,IAAAG,IAAA,CACFnR,EAAA,GAAAiR,EAAAlU,GAAAqU,WACE,GAAAH,IAAAE,IAAA,CACFnR,EAAA,GAAAjD,EAAAiU,GAAAI,MAGApR,EAAA8C,KAAAoO,IAAAlR,EAAA,QAEA,GAAAA,EAAA,GACAA,GAAA,IAGA9D,GAAAgV,IAAAC,KAAA,EAEA,GAAAA,MAAAD,IAAA,CACAhT,EAAA,OACE,GAAAhC,GAAA,IACFgC,EAAAkT,OAAAD,IAAAD,SACE,CACFhT,EAAAkT,OAAA,EAAAD,IAAAD,KAGA,OAAAlR,EAAA9B,EAAA,IAAAhC,EAAA,MAGA6T,QAAAC,IAAAI,IAAA,SAAAJ,KACA,IAAAqB,KACA,IAAAC,KACA,IAAAC,KACA,IAAAvR,EACA,IAAA9B,EAEA,IAAAnB,EAAAiT,IAAA,OACA,IAAAgB,EAAAhB,IAAA,OACA,IAAAiB,EAAAjB,IAAA,OACA,IAAA/P,EAAA6C,KAAAqO,IAAApU,EAAAiU,EAAAC,GACA,IAAAO,KAAAvR,EAAA6C,KAAAoO,IAAAnU,EAAAiU,EAAAC,GACA,IAAAQ,MAAA,SAAAnV,GACA,OAAA2D,EAAA3D,GAAA,EAAAkV,KAAA,KAGA,GAAAA,OAAA,GACAxR,EAAA9B,EAAA,MACE,CACFA,EAAAsT,KAAAvR,EACAoR,KAAAI,MAAA1U,GACAuU,KAAAG,MAAAT,GACAO,KAAAE,MAAAR,GAEA,GAAAlU,IAAAkD,EAAA,CACAD,EAAAuR,KAAAD,UACG,GAAAN,IAAA/Q,EAAA,CACHD,EAAA,IAAAqR,KAAAE,UACG,GAAAN,IAAAhR,EAAA,CACHD,EAAA,IAAAsR,KAAAD,KAEA,GAAArR,EAAA,GACAA,GAAA,OACG,GAAAA,EAAA,GACHA,GAAA,GAIA,OACAA,EAAA,IACA9B,EAAA,IACA+B,EAAA,MAIA8P,QAAAC,IAAAK,IAAA,SAAAL,KACA,IAAAjT,EAAAiT,IAAA,GACA,IAAAgB,EAAAhB,IAAA,GACA,IAAAiB,EAAAjB,IAAA,GACA,IAAAhQ,EAAA+P,QAAAC,IAAAG,IAAAH,KAAA,GACA,IAAA0B,EAAA,MAAA5O,KAAAoO,IAAAnU,EAAA+F,KAAAoO,IAAAF,EAAAC,IAEAA,EAAA,QAAAnO,KAAAqO,IAAApU,EAAA+F,KAAAqO,IAAAH,EAAAC,IAEA,OAAAjR,EAAA0R,EAAA,IAAAT,EAAA,MAGAlB,QAAAC,IAAAM,KAAA,SAAAN,KACA,IAAAjT,EAAAiT,IAAA,OACA,IAAAgB,EAAAhB,IAAA,OACA,IAAAiB,EAAAjB,IAAA,OACA,IAAA1T,EACA,IAAAD,EACA,IAAAsV,EACA,IAAAC,EAEAA,EAAA9O,KAAAoO,IAAA,EAAAnU,EAAA,EAAAiU,EAAA,EAAAC,GACA3U,GAAA,EAAAS,EAAA6U,IAAA,EAAAA,IAAA,EACAvV,GAAA,EAAA2U,EAAAY,IAAA,EAAAA,IAAA,EACAD,GAAA,EAAAV,EAAAW,IAAA,EAAAA,IAAA,EAEA,OAAAtV,EAAA,IAAAD,EAAA,IAAAsV,EAAA,IAAAC,EAAA,MAMA,SAAAC,oBAAAC,EAAAH,GACA,OACA7O,KAAAiP,IAAAD,EAAA,GAAAH,EAAA,MACA7O,KAAAiP,IAAAD,EAAA,GAAAH,EAAA,MACA7O,KAAAiP,IAAAD,EAAA,GAAAH,EAAA,MAIA5B,QAAAC,IAAAW,QAAA,SAAAX,KACA,IAAAgC,SAAAlC,gBAAAE,KACA,GAAAgC,SAAA,CACA,OAAAA,SAGA,IAAAC,uBAAAC,SACA,IAAAC,sBAEA,QAAAxB,WAAAd,YAAA,CACA,GAAAA,YAAA7R,eAAA2S,SAAA,CACA,IAAAzT,MAAA2S,YAAAc,SAGA,IAAAyB,SAAAP,oBAAA7B,IAAA9S,OAGA,GAAAkV,SAAAH,uBAAA,CACAA,uBAAAG,SACAD,sBAAAxB,UAKA,OAAAwB,uBAGApC,QAAAY,QAAAX,IAAA,SAAAW,SACA,OAAAd,YAAAc,UAGAZ,QAAAC,IAAAO,IAAA,SAAAP,KACA,IAAAjT,EAAAiT,IAAA,OACA,IAAAgB,EAAAhB,IAAA,OACA,IAAAiB,EAAAjB,IAAA,OAGAjT,IAAA,OAAA+F,KAAAiP,KAAAhV,EAAA,iBAAAA,EAAA,MACAiU,IAAA,OAAAlO,KAAAiP,KAAAf,EAAA,iBAAAA,EAAA,MACAC,IAAA,OAAAnO,KAAAiP,KAAAd,EAAA,iBAAAA,EAAA,MAEA,IAAAa,EAAA/U,EAAA,MAAAiU,EAAA,MAAAC,EAAA,MACA,IAAAU,EAAA5U,EAAA,MAAAiU,EAAA,MAAAC,EAAA,MACA,IAAAoB,EAAAtV,EAAA,MAAAiU,EAAA,MAAAC,EAAA,MAEA,OAAAa,EAAA,IAAAH,EAAA,IAAAU,EAAA,MAGAtC,QAAAC,IAAAQ,IAAA,SAAAR,KACA,IAAAO,IAAAR,QAAAC,IAAAO,IAAAP,KACA,IAAA8B,EAAAvB,IAAA,GACA,IAAAoB,EAAApB,IAAA,GACA,IAAA8B,EAAA9B,IAAA,GACA,IAAArU,EACA,IAAAgE,EACA,IAAA+Q,EAEAa,GAAA,OACAH,GAAA,IACAU,GAAA,QAEAP,IAAA,QAAAhP,KAAAiP,IAAAD,EAAA,WAAAA,EAAA,OACAH,IAAA,QAAA7O,KAAAiP,IAAAJ,EAAA,WAAAA,EAAA,OACAU,IAAA,QAAAvP,KAAAiP,IAAAM,EAAA,WAAAA,EAAA,OAEAnW,EAAA,IAAAyV,EAAA,GACAzR,EAAA,KAAA4R,EAAAH,GACAV,EAAA,KAAAU,EAAAU,GAEA,OAAAnW,EAAAgE,EAAA+Q,IAGAlB,QAAAI,IAAAH,IAAA,SAAAG,KACA,IAAAnQ,EAAAmQ,IAAA,OACA,IAAAjS,EAAAiS,IAAA,OACA,IAAAjU,EAAAiU,IAAA,OACA,IAAAmC,GACA,IAAAC,GACA,IAAAC,GACA,IAAAxC,IACA,IAAAyC,IAEA,GAAAvU,IAAA,GACAuU,IAAAvW,EAAA,IACA,OAAAuW,aAGA,GAAAvW,EAAA,IACAqW,GAAArW,GAAA,EAAAgC,OACE,CACFqU,GAAArW,EAAAgC,EAAAhC,EAAAgC,EAGAoU,GAAA,EAAApW,EAAAqW,GAEAvC,KAAA,OACA,QAAA/T,EAAA,EAAgBA,EAAA,EAAOA,IAAA,CACvBuW,GAAAxS,EAAA,MAAA/D,EAAA,GACA,GAAAuW,GAAA,GACAA,KAEA,GAAAA,GAAA,GACAA,KAGA,KAAAA,GAAA,GACAC,IAAAH,IAAAC,GAAAD,IAAA,EAAAE,QACG,KAAAA,GAAA,GACHC,IAAAF,QACG,KAAAC,GAAA,GACHC,IAAAH,IAAAC,GAAAD,KAAA,IAAAE,IAAA,MACG,CACHC,IAAAH,GAGAtC,IAAA/T,GAAAwW,IAAA,IAGA,OAAAzC,KAGAD,QAAAI,IAAAC,IAAA,SAAAD,KACA,IAAAnQ,EAAAmQ,IAAA,GACA,IAAAjS,EAAAiS,IAAA,OACA,IAAAjU,EAAAiU,IAAA,OACA,IAAAuC,KAAAxU,EACA,IAAAyU,KAAA7P,KAAAqO,IAAAjV,EAAA,KACA,IAAA0W,GACA,IAAA3S,EAEA/D,GAAA,EACAgC,GAAAhC,GAAA,EAAAA,EAAA,EAAAA,EACAwW,MAAAC,MAAA,EAAAA,KAAA,EAAAA,KACA1S,GAAA/D,EAAAgC,GAAA,EACA0U,GAAA1W,IAAA,IAAAwW,MAAAC,KAAAD,MAAA,EAAAxU,GAAAhC,EAAAgC,GAEA,OAAA8B,EAAA4S,GAAA,IAAA3S,EAAA,MAGA8P,QAAAK,IAAAJ,IAAA,SAAAI,KACA,IAAApQ,EAAAoQ,IAAA,MACA,IAAAlS,EAAAkS,IAAA,OACA,IAAAnQ,EAAAmQ,IAAA,OACA,IAAAyC,GAAA/P,KAAAgQ,MAAA9S,GAAA,EAEA,IAAA+S,EAAA/S,EAAA8C,KAAAgQ,MAAA9S,GACA,IAAA/B,EAAA,IAAAgC,GAAA,EAAA/B,GACA,IAAA8U,EAAA,IAAA/S,GAAA,EAAA/B,EAAA6U,GACA,IAAA5V,EAAA,IAAA8C,GAAA,EAAA/B,GAAA,EAAA6U,IACA9S,GAAA,IAEA,OAAA4S,IACA,OACA,OAAA5S,EAAA9C,EAAAc,GACA,OACA,OAAA+U,EAAA/S,EAAAhC,GACA,OACA,OAAAA,EAAAgC,EAAA9C,GACA,OACA,OAAAc,EAAA+U,EAAA/S,GACA,OACA,OAAA9C,EAAAc,EAAAgC,GACA,OACA,OAAAA,EAAAhC,EAAA+U,KAIAjD,QAAAK,IAAAD,IAAA,SAAAC,KACA,IAAApQ,EAAAoQ,IAAA,GACA,IAAAlS,EAAAkS,IAAA,OACA,IAAAnQ,EAAAmQ,IAAA,OACA,IAAA6C,KAAAnQ,KAAAqO,IAAAlR,EAAA,KACA,IAAA0S,KACA,IAAAO,GACA,IAAAhX,EAEAA,GAAA,EAAAgC,GAAA+B,EACA0S,MAAA,EAAAzU,GAAA+U,KACAC,GAAAhV,EAAA+U,KACAC,IAAAP,MAAA,EAAAA,KAAA,EAAAA,KACAO,OAAA,EACAhX,GAAA,EAEA,OAAA8D,EAAAkT,GAAA,IAAAhX,EAAA,MAIA6T,QAAAM,IAAAL,IAAA,SAAAK,KACA,IAAArQ,EAAAqQ,IAAA,OACA,IAAA8C,GAAA9C,IAAA,OACA,IAAA+C,GAAA/C,IAAA,OACA,IAAAgD,MAAAF,GAAAC,GACA,IAAAnX,EACA,IAAAgE,EACA,IAAA8S,EACA,IAAArV,EAGA,GAAA2V,MAAA,GACAF,IAAAE,MACAD,IAAAC,MAGApX,EAAA6G,KAAAgQ,MAAA,EAAA9S,GACAC,EAAA,EAAAmT,GACAL,EAAA,EAAA/S,EAAA/D,EAEA,IAAAA,EAAA,QACA8W,EAAA,EAAAA,EAGArV,EAAAyV,GAAAJ,GAAA9S,EAAAkT,IAEA,IAAApW,EACA,IAAAiU,EACA,IAAAC,EACA,OAAAhV,GACA,QACA,OACA,OAAAc,EAAAkD,EAAgB+Q,EAAAtT,EAAOuT,EAAAkC,GAAQ,MAC/B,OAAApW,EAAAW,EAAgBsT,EAAA/Q,EAAOgR,EAAAkC,GAAQ,MAC/B,OAAApW,EAAAoW,GAAiBnC,EAAA/Q,EAAOgR,EAAAvT,EAAO,MAC/B,OAAAX,EAAAoW,GAAiBnC,EAAAtT,EAAOuT,EAAAhR,EAAO,MAC/B,OAAAlD,EAAAW,EAAgBsT,EAAAmC,GAAQlC,EAAAhR,EAAO,MAC/B,OAAAlD,EAAAkD,EAAgB+Q,EAAAmC,GAAQlC,EAAAvT,EAAO,MAG/B,OAAAX,EAAA,IAAAiU,EAAA,IAAAC,EAAA,MAGAlB,QAAAO,KAAAN,IAAA,SAAAM,MACA,IAAAhU,EAAAgU,KAAA,OACA,IAAAjU,EAAAiU,KAAA,OACA,IAAAqB,EAAArB,KAAA,OACA,IAAAsB,EAAAtB,KAAA,OACA,IAAAvT,EACA,IAAAiU,EACA,IAAAC,EAEAlU,EAAA,EAAA+F,KAAAoO,IAAA,EAAA5U,GAAA,EAAAsV,MACAZ,EAAA,EAAAlO,KAAAoO,IAAA,EAAA7U,GAAA,EAAAuV,MACAX,EAAA,EAAAnO,KAAAoO,IAAA,EAAAS,GAAA,EAAAC,MAEA,OAAA7U,EAAA,IAAAiU,EAAA,IAAAC,EAAA,MAGAlB,QAAAQ,IAAAP,IAAA,SAAAO,KACA,IAAAuB,EAAAvB,IAAA,OACA,IAAAoB,EAAApB,IAAA,OACA,IAAA8B,EAAA9B,IAAA,OACA,IAAAxT,EACA,IAAAiU,EACA,IAAAC,EAEAlU,EAAA+U,EAAA,OAAAH,GAAA,OAAAU,GAAA,MACArB,EAAAc,GAAA,MAAAH,EAAA,OAAAU,EAAA,MACApB,EAAAa,EAAA,MAAAH,GAAA,KAAAU,EAAA,MAGAtV,IAAA,SACA,MAAA+F,KAAAiP,IAAAhV,EAAA,YACAA,EAAA,MAEAiU,IAAA,SACA,MAAAlO,KAAAiP,IAAAf,EAAA,YACAA,EAAA,MAEAC,IAAA,SACA,MAAAnO,KAAAiP,IAAAd,EAAA,YACAA,EAAA,MAEAlU,EAAA+F,KAAAoO,IAAApO,KAAAqO,IAAA,EAAApU,GAAA,GACAiU,EAAAlO,KAAAoO,IAAApO,KAAAqO,IAAA,EAAAH,GAAA,GACAC,EAAAnO,KAAAoO,IAAApO,KAAAqO,IAAA,EAAAF,GAAA,GAEA,OAAAlU,EAAA,IAAAiU,EAAA,IAAAC,EAAA,MAGAlB,QAAAQ,IAAAC,IAAA,SAAAD,KACA,IAAAuB,EAAAvB,IAAA,GACA,IAAAoB,EAAApB,IAAA,GACA,IAAA8B,EAAA9B,IAAA,GACA,IAAArU,EACA,IAAAgE,EACA,IAAA+Q,EAEAa,GAAA,OACAH,GAAA,IACAU,GAAA,QAEAP,IAAA,QAAAhP,KAAAiP,IAAAD,EAAA,WAAAA,EAAA,OACAH,IAAA,QAAA7O,KAAAiP,IAAAJ,EAAA,WAAAA,EAAA,OACAU,IAAA,QAAAvP,KAAAiP,IAAAM,EAAA,WAAAA,EAAA,OAEAnW,EAAA,IAAAyV,EAAA,GACAzR,EAAA,KAAA4R,EAAAH,GACAV,EAAA,KAAAU,EAAAU,GAEA,OAAAnW,EAAAgE,EAAA+Q,IAGAlB,QAAAS,IAAAD,IAAA,SAAAC,KACA,IAAAtU,EAAAsU,IAAA,GACA,IAAAtQ,EAAAsQ,IAAA,GACA,IAAAS,EAAAT,IAAA,GACA,IAAAsB,EACA,IAAAH,EACA,IAAAU,EAEAV,GAAAzV,EAAA,QACA4V,EAAA5R,EAAA,IAAAyR,EACAU,EAAAV,EAAAV,EAAA,IAEA,IAAAqC,GAAAxQ,KAAAiP,IAAAJ,EAAA,GACA,IAAA4B,GAAAzQ,KAAAiP,IAAAD,EAAA,GACA,IAAA0B,GAAA1Q,KAAAiP,IAAAM,EAAA,GACAV,EAAA2B,GAAA,QAAAA,IAAA3B,EAAA,cACAG,EAAAyB,GAAA,QAAAA,IAAAzB,EAAA,cACAO,EAAAmB,GAAA,QAAAA,IAAAnB,EAAA,cAEAP,GAAA,OACAH,GAAA,IACAU,GAAA,QAEA,OAAAP,EAAAH,EAAAU,IAGAtC,QAAAS,IAAAC,IAAA,SAAAD,KACA,IAAAtU,EAAAsU,IAAA,GACA,IAAAtQ,EAAAsQ,IAAA,GACA,IAAAS,EAAAT,IAAA,GACA,IAAAiD,GACA,IAAAzT,EACA,IAAA1D,EAEAmX,GAAA3Q,KAAA4Q,MAAAzC,EAAA/Q,GACAF,EAAAyT,GAAA,MAAA3Q,KAAA6Q,GAEA,GAAA3T,EAAA,GACAA,GAAA,IAGA1D,EAAAwG,KAAA8Q,KAAA1T,IAAA+Q,KAEA,OAAA/U,EAAAI,EAAA0D,IAGA+P,QAAAU,IAAAD,IAAA,SAAAC,KACA,IAAAvU,EAAAuU,IAAA,GACA,IAAAnU,EAAAmU,IAAA,GACA,IAAAzQ,EAAAyQ,IAAA,GACA,IAAAvQ,EACA,IAAA+Q,EACA,IAAAwC,GAEAA,GAAAzT,EAAA,MAAA8C,KAAA6Q,GACAzT,EAAA5D,EAAAwG,KAAA+Q,IAAAJ,IACAxC,EAAA3U,EAAAwG,KAAAgR,IAAAL,IAEA,OAAAvX,EAAAgE,EAAA+Q,IAGAlB,QAAAC,IAAAY,OAAA,SAAArQ,MACA,IAAAxD,EAAAwD,KAAA,GACA,IAAAyQ,EAAAzQ,KAAA,GACA,IAAA0Q,EAAA1Q,KAAA,GACA,IAAArD,MAAA,KAAAqB,oBAAA,GAAAwR,QAAAC,IAAAI,IAAA7P,MAAA,GAEArD,MAAA4F,KAAAf,MAAA7E,MAAA,IAEA,GAAAA,QAAA,GACA,UAGA,IAAA6W,KAAA,IACAjR,KAAAf,MAAAkP,EAAA,QACAnO,KAAAf,MAAAiP,EAAA,QACAlO,KAAAf,MAAAhF,EAAA,MAEA,GAAAG,QAAA,GACA6W,MAAA,GAGA,OAAAA,MAGAhE,QAAAK,IAAAQ,OAAA,SAAArQ,MAGA,OAAAwP,QAAAC,IAAAY,OAAAb,QAAAK,IAAAJ,IAAAzP,WAAA,KAGAwP,QAAAC,IAAAa,QAAA,SAAAtQ,MACA,IAAAxD,EAAAwD,KAAA,GACA,IAAAyQ,EAAAzQ,KAAA,GACA,IAAA0Q,EAAA1Q,KAAA,GAIA,GAAAxD,IAAAiU,OAAAC,EAAA,CACA,GAAAlU,EAAA,GACA,UAGA,GAAAA,EAAA,KACA,WAGA,OAAA+F,KAAAf,OAAAhF,EAAA,eAGA,IAAAgX,KAAA,GACA,GAAAjR,KAAAf,MAAAhF,EAAA,OACA,EAAA+F,KAAAf,MAAAiP,EAAA,OACAlO,KAAAf,MAAAkP,EAAA,OAEA,OAAA8C,MAGAhE,QAAAa,OAAAZ,IAAA,SAAAzP,MACA,IAAAb,MAAAa,KAAA,GAGA,GAAAb,QAAA,GAAAA,QAAA,GACA,GAAAa,KAAA,IACAb,OAAA,IAGAA,YAAA,SAEA,OAAAA,mBAGA,IAAAsU,SAAAzT,KAAA,UACA,IAAAxD,GAAA2C,MAAA,GAAAsU,KAAA,IACA,IAAAhD,GAAAtR,OAAA,KAAAsU,KAAA,IACA,IAAA/C,GAAAvR,OAAA,KAAAsU,KAAA,IAEA,OAAAjX,EAAAiU,EAAAC,IAGAlB,QAAAc,QAAAb,IAAA,SAAAzP,MAEA,GAAAA,MAAA,KACA,IAAAjE,GAAAiE,KAAA,UACA,OAAAjE,OAGAiE,MAAA,GAEA,IAAA0T,IACA,IAAAlX,EAAA+F,KAAAgQ,MAAAvS,KAAA,UACA,IAAAyQ,EAAAlO,KAAAgQ,OAAAmB,IAAA1T,KAAA,aACA,IAAA0Q,EAAAgD,IAAA,QAEA,OAAAlX,EAAAiU,EAAAC,IAGAlB,QAAAC,IAAAU,IAAA,SAAAnQ,MACA,IAAA2T,UAAApR,KAAAf,MAAAxB,KAAA,gBACAuC,KAAAf,MAAAxB,KAAA,cACAuC,KAAAf,MAAAxB,KAAA,SAEA,IAAAuB,OAAAoS,QAAAC,SAAA,IAAA9N,cACA,eAAA+N,UAAAtS,OAAAtD,QAAAsD,QAGAiO,QAAAW,IAAAV,IAAA,SAAAzP,MACA,IAAA2C,MAAA3C,KAAA4T,SAAA,IAAAjR,MAAA,4BACA,IAAAA,MAAA,CACA,cAGA,IAAAmR,YAAAnR,MAAA,GAEA,GAAAA,MAAA,GAAA1E,SAAA,GACA6V,wBAAAC,MAAA,IAAAC,IAAA,SAAAC,MACA,OAAAA,YACGC,KAAA,IAGH,IAAAP,QAAAQ,SAAAL,YAAA,IACA,IAAAtX,EAAAmX,SAAA,OACA,IAAAlD,EAAAkD,SAAA,MACA,IAAAjD,EAAAiD,QAAA,IAEA,OAAAnX,EAAAiU,EAAAC,IAGAlB,QAAAC,IAAAc,IAAA,SAAAd,KACA,IAAAjT,EAAAiT,IAAA,OACA,IAAAgB,EAAAhB,IAAA,OACA,IAAAiB,EAAAjB,IAAA,OACA,IAAAmB,IAAArO,KAAAqO,IAAArO,KAAAqO,IAAApU,EAAAiU,GAAAC,GACA,IAAAC,IAAApO,KAAAoO,IAAApO,KAAAoO,IAAAnU,EAAAiU,GAAAC,GACA,IAAA0D,OAAAxD,IAAAD,IACA,IAAA0D,UACA,IAAAnT,IAEA,GAAAkT,OAAA,GACAC,UAAA1D,KAAA,EAAAyD,YACE,CACFC,UAAA,EAGA,GAAAD,QAAA,GACAlT,IAAA,OAEA,GAAA0P,MAAApU,EAAA,CACA0E,KAAAuP,EAAAC,GAAA0D,OAAA,OAEA,GAAAxD,MAAAH,EAAA,CACAvP,IAAA,GAAAwP,EAAAlU,GAAA4X,WACE,CACFlT,IAAA,GAAA1E,EAAAiU,GAAA2D,OAAA,EAGAlT,KAAA,EACAA,KAAA,EAEA,OAAAA,IAAA,IAAAkT,OAAA,IAAAC,UAAA,MAGA7E,QAAAI,IAAAW,IAAA,SAAAX,KACA,IAAAjS,EAAAiS,IAAA,OACA,IAAAjU,EAAAiU,IAAA,OACA,IAAA7T,EAAA,EACA,IAAAyW,EAAA,EAEA,GAAA7W,EAAA,IACAI,EAAA,EAAA4B,EAAAhC,MACE,CACFI,EAAA,EAAA4B,GAAA,EAAAhC,GAGA,GAAAI,EAAA,GACAyW,GAAA7W,EAAA,GAAAI,IAAA,EAAAA,GAGA,OAAA6T,IAAA,GAAA7T,EAAA,IAAAyW,EAAA,MAGAhD,QAAAK,IAAAU,IAAA,SAAAV,KACA,IAAAlS,EAAAkS,IAAA,OACA,IAAAnQ,EAAAmQ,IAAA,OAEA,IAAA9T,EAAA4B,EAAA+B,EACA,IAAA8S,EAAA,EAEA,GAAAzW,EAAA,GACAyW,GAAA9S,EAAA3D,IAAA,EAAAA,GAGA,OAAA8T,IAAA,GAAA9T,EAAA,IAAAyW,EAAA,MAGAhD,QAAAe,IAAAd,IAAA,SAAAc,KACA,IAAA9Q,EAAA8Q,IAAA,OACA,IAAAxU,EAAAwU,IAAA,OACA,IAAAE,EAAAF,IAAA,OAEA,GAAAxU,IAAA,GACA,OAAA0U,EAAA,IAAAA,EAAA,IAAAA,EAAA,KAGA,IAAA6D,MAAA,OACA,IAAAhC,GAAA7S,EAAA,IACA,IAAAC,EAAA4S,GAAA,EACA,IAAAnB,EAAA,EAAAzR,EACA,IAAA6U,GAAA,EAEA,OAAAhS,KAAAgQ,MAAAD,KACA,OACAgC,KAAA,KAAeA,KAAA,GAAA5U,EAAa4U,KAAA,KAAa,MACzC,OACAA,KAAA,GAAAnD,EAAemD,KAAA,KAAaA,KAAA,KAAa,MACzC,OACAA,KAAA,KAAeA,KAAA,KAAaA,KAAA,GAAA5U,EAAa,MACzC,OACA4U,KAAA,KAAeA,KAAA,GAAAnD,EAAamD,KAAA,KAAa,MACzC,OACAA,KAAA,GAAA5U,EAAe4U,KAAA,KAAaA,KAAA,KAAa,MACzC,QACAA,KAAA,KAAeA,KAAA,KAAaA,KAAA,GAAAnD,EAG5BoD,IAAA,EAAAxY,GAAA0U,EAEA,QACA1U,EAAAuY,KAAA,GAAAC,IAAA,KACAxY,EAAAuY,KAAA,GAAAC,IAAA,KACAxY,EAAAuY,KAAA,GAAAC,IAAA,MAIA/E,QAAAe,IAAAV,IAAA,SAAAU,KACA,IAAAxU,EAAAwU,IAAA,OACA,IAAAE,EAAAF,IAAA,OAEA,IAAA7Q,EAAA3D,EAAA0U,GAAA,EAAA1U,GACA,IAAAyW,EAAA,EAEA,GAAA9S,EAAA,GACA8S,EAAAzW,EAAA2D,EAGA,OAAA6Q,IAAA,GAAAiC,EAAA,IAAA9S,EAAA,MAGA8P,QAAAe,IAAAX,IAAA,SAAAW,KACA,IAAAxU,EAAAwU,IAAA,OACA,IAAAE,EAAAF,IAAA,OAEA,IAAA5U,EAAA8U,GAAA,EAAA1U,GAAA,GAAAA,EACA,IAAA4B,EAAA,EAEA,GAAAhC,EAAA,GAAAA,EAAA,IACAgC,EAAA5B,GAAA,EAAAJ,QAEA,GAAAA,GAAA,IAAAA,EAAA,GACAgC,EAAA5B,GAAA,KAAAJ,IAGA,OAAA4U,IAAA,GAAA5S,EAAA,IAAAhC,EAAA,MAGA6T,QAAAe,IAAAT,IAAA,SAAAS,KACA,IAAAxU,EAAAwU,IAAA,OACA,IAAAE,EAAAF,IAAA,OACA,IAAA7Q,EAAA3D,EAAA0U,GAAA,EAAA1U,GACA,OAAAwU,IAAA,IAAA7Q,EAAA3D,GAAA,OAAA2D,GAAA,MAGA8P,QAAAM,IAAAS,IAAA,SAAAT,KACA,IAAAqB,EAAArB,IAAA,OACA,IAAAY,EAAAZ,IAAA,OACA,IAAApQ,EAAA,EAAAgR,EACA,IAAA3U,EAAA2D,EAAAyR,EACA,IAAAV,EAAA,EAEA,GAAA1U,EAAA,GACA0U,GAAA/Q,EAAA3D,IAAA,EAAAA,GAGA,OAAA+T,IAAA,GAAA/T,EAAA,IAAA0U,EAAA,MAGAjB,QAAAgB,MAAAf,IAAA,SAAAe,OACA,OAAAA,MAAA,aAAAA,MAAA,aAAAA,MAAA,eAGAhB,QAAAC,IAAAe,MAAA,SAAAf,KACA,OAAAA,IAAA,aAAAA,IAAA,aAAAA,IAAA,eAGAD,QAAAjG,KAAAkG,IAAA,SAAAzP,MACA,OAAAA,KAAA,WAAAA,KAAA,WAAAA,KAAA,aAGAwP,QAAAjG,KAAAqG,IAAAJ,QAAAjG,KAAAsG,IAAA,SAAA7P,MACA,WAAAA,KAAA,KAGAwP,QAAAjG,KAAAuG,IAAA,SAAAvG,MACA,aAAAA,KAAA,KAGAiG,QAAAjG,KAAAwG,KAAA,SAAAxG,MACA,aAAAA,KAAA,KAGAiG,QAAAjG,KAAA0G,IAAA,SAAA1G,MACA,OAAAA,KAAA,SAGAiG,QAAAjG,KAAA4G,IAAA,SAAA5G,MACA,IAAA2I,IAAA3P,KAAAf,MAAA+H,KAAA,gBACA,IAAAoK,SAAAzB,KAAA,KAAAA,KAAA,GAAAA,IAEA,IAAA3Q,OAAAoS,QAAAC,SAAA,IAAA9N,cACA,eAAA+N,UAAAtS,OAAAtD,QAAAsD,QAGAiO,QAAAC,IAAAlG,KAAA,SAAAkG,KACA,IAAAyC,KAAAzC,IAAA,GAAAA,IAAA,GAAAA,IAAA,MACA,OAAAyC,IAAA,4SCh2BA,IAAAsC,aAAAhZ,oBAAA,0DACA,IAAAoC,QAAApC,oBAAA,kIAEA,IAAIiZ,OAAS,cAEbjW,iBAAEiW,QAAUC,sBAGZlW,iBAAEsB,GAAG2U,QAAU,SAAUE,QACvB,IAAIC,OAAS3U,MAAMzC,UAAUqX,MAAMhZ,KAAKmC,UAAW,GACjD8W,gBAAmB1W,KAAKH,SAAW,EACnC8W,YAAc,KAEhB,IAAIC,UAAY5W,KAAK6W,KAAK,WACxB,IAAIC,OAAQ,EAAAC,SAAArU,SAAE1C,MACZgX,KAAOF,MAAMG,KAAKZ,QAClB1W,gBAAmB4W,SAAP,wBAAAjP,QAAOiP,WAAW,SAAYA,UAG5C,IAAKS,KAAM,CACTA,KAAO,IAAIV,sBAAYtW,KAAML,SAC7BmX,MAAMG,KAAKZ,OAAQW,MAGrB,IAAKN,gBAAiB,CACpB,OAGFC,YAAcG,MAEd,UAAWP,SAAW,SAAU,CAC9B,GAAIA,SAAW,cAAe,CAE5BI,YAAcK,UACT,GAAI5W,iBAAE8W,WAAWF,KAAKT,SAAU,CAErCI,YAAcK,KAAKT,QAAQvU,MAAMgV,KAAMR,YAClC,CAELG,YAAcK,KAAKT,YAKzB,OAAOG,gBAAkBC,YAAcC,WAGzCxW,iBAAEsB,GAAG2U,QAAQc,YAAcb,qoBC/C3B,IAAAc,WAAAha,oBAAA,sDACA,IAAAia,SAAAja,oBAAA,kDACA,IAAAka,YAAAla,oBAAA,wDACA,IAAAoC,QAAApC,oBAAA,gDACA,IAAAma,eAAAna,oBAAA,+DACA,IAAAoa,cAAApa,oBAAA,6DACA,IAAAqa,cAAAra,oBAAA,6DACA,IAAAsa,cAAAta,oBAAA,6DACA,IAAAua,eAAAva,oBAAA,+DACA,IAAAwa,cAAAxa,oBAAA,6DACA,IAAAya,WAAAza,oBAAA,wRAEA,IAAI0a,qBAAuB,EAE3B,IAAIpb,YAAeqb,OAAS,YAAcA,KAA9BjY,cAKNwW,iFA2BF,OAAOtW,KAAKgY,aAAajX,yCASzB,OAAOf,KAAKgY,aAAa9V,0CASzB,OAAOlC,KAAKiY,cAAcC,2CArC1B,OAAOzW,0DAUP,OAAOhC,wBAoCT,SAAA6W,YAAYrW,QAASN,SAASI,gBAAAC,KAAAsW,aAC5BwB,sBAAwB,EAKxB9X,KAAKmY,GAAKL,qBAOV9X,KAAKoY,WACHC,MAAO,KACPhU,EAAG,MAQLrE,KAAKC,SAAU,EAAA8W,SAAArU,SAAEzC,SACdqY,SAAS,uBACTC,KAAK,sBAAuBvY,KAAKmY,IAKpCnY,KAAKL,QAAUS,iBAAEiH,OAAO,QAAUP,kBAAUnH,QAASK,KAAKC,QAAQgX,QAMlEjX,KAAKwY,SAAW,MAOhBxY,KAAKmG,cAMLnG,KAAKsF,UACHtF,KAAKL,QAAQ2F,YAAc,MAC1BtF,KAAKL,QAAQ2F,YAAc,MAAQtF,KAAKL,QAAQ0F,SAAW,KAC1DrF,KAAKC,QAAUD,KAAKL,QAAQ2F,UAEhCtF,KAAKsF,UAAatF,KAAKsF,YAAc,OAAS,EAAAyR,SAAArU,SAAE1C,KAAKsF,WAAa,MAKlEtF,KAAKyY,aAAe,IAAIC,uBAAa1Y,MAIrCA,KAAKgY,aAAe,IAAIW,uBAAa3Y,MAIrCA,KAAK4Y,cAAgB,IAAIC,wBAAc7Y,MAIvCA,KAAK8Y,aAAe,IAAIC,uBAAa/Y,KAAMtD,MAI3CsD,KAAKiY,cAAgB,IAAIe,wBAAchZ,MAIvCA,KAAKiZ,aAAe,IAAIC,uBAAalZ,MAErCA,KAAKmZ,QAGL,EAAApC,SAAArU,SAAEtC,iBAAEC,MAAM,WAMRL,KAAKoZ,QAAQ,sBACZpZ,mEASHA,KAAKiZ,aAAana,OAGlBkB,KAAKyY,aAAa3Z,OAGlBkB,KAAKqZ,iBAGLrZ,KAAKgY,aAAalZ,OAGlBkB,KAAKiY,cAAcnZ,OAGnBkB,KAAK4Y,cAAc9Z,OACnBkB,KAAK8Y,aAAaha,OAGlBkB,KAAKiY,cAAcqB,SAGnBtZ,KAAKuZ,SAEL,GAAIvZ,KAAKyY,aAAae,aAAc,CAClCxZ,KAAKyZ,mEAQQ,IAAAxS,MAAAjH,KACf,IAAK6B,MAAM8B,QAAQ3D,KAAKL,QAAQwG,YAAa,CAC3CnG,KAAKL,QAAQwG,cAGf,GAAInG,KAAKL,QAAQgG,MAAO,CACtB3F,KAAKL,QAAQwG,WAAWjC,MAAMrG,KAAM,aAItCmC,KAAKL,QAAQwG,WAAWpC,QAAQ,SAAC2V,KAC/BzS,MAAK0S,kBAAkBrD,YAAYnQ,WAAWuT,IAAI7b,KAAK2G,eAAgBkV,IAAI/Z,2EAW7Dia,gBAA6B,IAAbC,OAAaja,UAAAC,OAAA,GAAAD,UAAA,KAAAE,UAAAF,UAAA,MAC7C,IAAI8Z,IAAM,IAAIE,eAAe5Z,KAAM6Z,QAEnC7Z,KAAKmG,WAAWjC,KAAKwV,KACrB,OAAOA,8CASP,IAAI3Y,MAAQf,KAAKe,MAEjBf,KAAK4Y,cAAckB,SACnB9Z,KAAKyY,aAAaqB,SAClB9Z,KAAK8Y,aAAagB,SAClB9Z,KAAKgY,aAAa8B,SAClB9Z,KAAKiZ,aAAaa,SAClB9Z,KAAKiY,cAAc6B,SAEnB9Z,KAAKC,QACF8Z,YAAY,uBACZC,WAAW,eACXA,WAAW,SACX9Y,IAAI,gBAOPlB,KAAKoZ,QAAQ,qBAAsBrY,yCAUhCsD,GACHrE,KAAK8Y,aAAamB,KAAK5V,qCASpBA,GACHrE,KAAK8Y,aAAaoB,KAAK7V,yCAUlBA,GACLrE,KAAK8Y,aAAaqB,OAAO9V,+CASG,IAArBwD,aAAqBjI,UAAAC,OAAA,GAAAD,UAAA,KAAAE,UAAAF,UAAA,GAAN,KACtB,IAAIkU,IAAM9T,KAAKgY,aAAajX,MAE5B+S,IAAOA,eAAerS,oBAAaqS,IAAMjM,aAEzC,GAAIiM,eAAerS,oBAAW,CAC5B,OAAOqS,IAAI3Q,OAAOnD,KAAKkC,QAGzB,OAAO4R,8CASAA,KACP,GAAI9T,KAAKwZ,aAAc,CACrB,OAEF,IAAIY,GAAKpa,KAAKgY,aAEd,GACGoC,GAAGC,cAAgBvG,KAAOsG,GAAGrZ,MAAMuZ,OAAOxG,OACzCsG,GAAGC,aAAevG,IACpB,CAEA,OAGFsG,GAAGrZ,MAAQ+S,IAAMsG,GAAGG,YAAYzG,IAAK9T,KAAKL,QAAQmG,kBAAmB9F,KAAKL,QAAQoG,sBAAwB,KAO1G/F,KAAKoZ,QAAQ,oBAAqBgB,GAAGrZ,MAAO+S,KAG5C9T,KAAKuZ,iDASL,GAAIvZ,KAAKgY,aAAaqC,WAAY,CAChCra,KAAKyY,aAAac,aACb,CACLvZ,KAAKgY,aAAawC,cAGpBxa,KAAKiZ,aAAaM,SAClBvZ,KAAKiY,cAAcsB,SAOnBvZ,KAAKoZ,QAAQ,6DAUbpZ,KAAKyY,aAAagC,SAClBza,KAAKwY,SAAW,MAChBxY,KAAKkY,OAAO6B,YAAY,wBAOxB/Z,KAAKoZ,QAAQ,qBACb,OAAO,+CAUPpZ,KAAKyY,aAAagB,UAClBzZ,KAAKwY,SAAW,KAChBxY,KAAKkY,OAAOI,SAAS,wBAOrBtY,KAAKoZ,QAAQ,sBACb,OAAO,mDAQP,OAAQpZ,KAAKwZ,6DAQb,OAAOxZ,KAAKwY,WAAa,6CAUnBkC,WAAuC,IAA5B3Z,MAA4BnB,UAAAC,OAAA,GAAAD,UAAA,KAAAE,UAAAF,UAAA,GAApB,KAAoB,IAAdrB,MAAcqB,UAAAC,OAAA,GAAAD,UAAA,KAAAE,UAAAF,UAAA,GAAN,KACvCI,KAAKC,QAAQmZ,SACXuB,KAAMD,UACNhb,YAAaM,KACbe,MAAOA,MAAQA,MAAQf,KAAKe,MAC5BxC,MAAOA,MAAQA,MAAQyB,KAAK2H,uCAWlC2O,YAAYnQ,WAAayU,qCAEVtE,2OCrcf,IAAAuE,UAAAzd,oBAAA,qDACA,IAAA0d,SAAA1d,oBAAA,mDACA,IAAA2d,UAAA3d,oBAAA,qDACA,IAAA4d,SAAA5d,oBAAA,4IAGE6d,oCAAUC,kCAASC,oCAAUnU,2CAI7BoU,SAAYH,mBACZI,QAAWH,kBACXI,SAAYH,mBACZI,QAAWvU,6iCCXb,IAAAH,YAAAzJ,oBAAA,uDACA,IAAAoC,QAAApC,oBAAA,+6BAOM6d,6DACJ,SAAAA,SAAYvb,aAA2B,IAAdC,QAAcC,UAAAC,OAAA,GAAAD,UAAA,KAAAE,UAAAF,UAAA,MAAAG,gBAAAC,KAAAib,UAAA,IAAAhU,MAAAC,2BAAAlH,MAAAib,SAAA9T,WAAAnJ,OAAAoJ,eAAA6T,WAAAxd,KAAAuC,KAC/BN,YAAaC,UAKnBsH,MAAKuU,aAAe,EACpB,GAAIvU,MAAKvH,YAAY+Y,aAAagD,WAAY,CAC5CxU,MAAKvH,YAAY+Y,aAAa7S,MAAMzF,GAAG,yBAA0BC,iBAAEC,MAAM4G,MAAKyU,cAAbzU,QAR9B,OAAAA,2DAiBnCyT,WAAoB,IAAAiB,SAAA,QAAAha,KAAA/B,UAAAC,OAAN+B,KAAMC,MAAAF,KAAA,EAAAA,KAAA,KAAAG,KAAA,EAAAA,KAAAH,KAAAG,OAAA,CAANF,KAAME,KAAA,GAAAlC,UAAAkC,MACtB9B,KAAKwb,cAAgB,EAErB,IAAII,eAAiB5b,KAAKwb,aAAtB,iBAAmDxb,KAAKN,YAAYyY,GAApE,KAA2EuC,UAA3E,KAEJiB,SAAAE,SAAQlW,MAAR3D,MAAA2Z,UAAcC,YAAdE,OAA6Bla,OAY7B5B,KAAKN,YAAYO,QAAQmZ,SACvBuB,KAAM,mBACNjb,YAAaM,KAAKN,YAClBqB,MAAOf,KAAKe,MACZxC,MAAO,KACPoH,OACEyV,SAAUpb,KACV0a,UACAqB,QAASna,KACTga,gEAKO7a,OAAyB,IAAlBC,UAAkBpB,UAAAC,OAAA,GAAAD,UAAA,KAAAE,UAAAF,UAAA,GAAN,KAC9BI,KAAKgc,IAAI,iBAAkBjb,MAAOC,WAClC,OAAO,gDAGAC,OACPjB,KAAKgc,IAAI,qBACT,OAAAC,KAAAhB,SAAA7b,UAAA+H,WAAAnJ,OAAAoJ,eAAA6T,SAAA7b,WAAA,WAAAY,MAAAvC,KAAAuC,KAAsBiB,mDAGdA,OACRjB,KAAKgc,IAAI,sBACThc,KAAKwb,aAAe,EAEpB,GAAIxb,KAAKN,YAAY+Y,aAAagD,WAAY,CAC5Czb,KAAKN,YAAY+Y,aAAa7S,MAAM1E,IAAI,oBAG1C,OAAA+a,KAAAhB,SAAA7b,UAAA+H,WAAAnJ,OAAAoJ,eAAA6T,SAAA7b,WAAA,YAAAY,MAAAvC,KAAAuC,KAAuBiB,iDAGhBA,OACPjB,KAAKgc,IAAI,yEAOG/a,OACZjB,KAAKgc,IAAI,2BAA4B/a,MAAM1C,MAAO0C,MAAMF,iDAGjDE,OACPjB,KAAKgc,IAAI,oBAAqB/a,MAAM1C,MAAO0C,MAAMF,mDAGzCE,OACRjB,KAAKgc,IAAI,qBAAsB/a,MAAM1C,MAAO0C,MAAMF,6CAG7CE,OACLjB,KAAKgc,IAAI,mBACThc,KAAKwb,aAAe,wCAGfva,OACLjB,KAAKgc,IAAI,+DAGD/a,OACRjB,KAAKgc,IAAI,gEAGF/a,OACPjB,KAAKgc,IAAI,0CAxGUvc,qCA4GRwb,kkCCpHf,IAAApU,YAAAzJ,oBAAA,uDACA,IAAAoC,QAAApC,oBAAA,+6BAMM8d,2DACJ,SAAAA,QAAYxb,aAA2B,IAAdC,QAAcC,UAAAC,OAAA,GAAAD,UAAA,KAAAE,UAAAF,UAAA,MAAAG,gBAAAC,KAAAkb,SAAA,IAAAjU,MAAAC,2BAAAlH,MAAAkb,QAAA/T,WAAAnJ,OAAAoJ,eAAA8T,UAAAzd,KAAAuC,KAC/BN,YAAaU,iBAAEiH,OAAO,SAExBnB,SAAU,iEACVE,SAAU,KACVlE,OAAQxC,YAAYwC,QAEtBvC,WAGFsH,MAAKhH,SAAU,EAAA8W,SAAArU,SAAEuE,MAAKtH,QAAQuG,UAC9Be,MAAKiV,aAAejV,MAAKhH,QAAQkc,KAAK,OAXD,OAAAlV,oEAc9BhG,OACPgb,KAAAf,QAAA9b,UAAA+H,WAAAnJ,OAAAoJ,eAAA8T,QAAA9b,WAAA,WAAAY,MAAAvC,KAAAuC,KAAeiB,OACfjB,KAAKN,YAAYwY,OAAOkE,OAAOpc,KAAKC,mDAG7BgB,OACPgb,KAAAf,QAAA9b,UAAA+H,WAAAnJ,OAAAoJ,eAAA8T,QAAA9b,WAAA,WAAAY,MAAAvC,KAAAuC,KAAeiB,OAEf,IAAKA,MAAMF,MAAO,CAChBf,KAAKkc,aACFG,IAAI,kBAAmB,MACvBA,IAAI,QAAS,MACbC,KAAK,IACR,OAGFtc,KAAKkc,aACFG,IAAI,kBAAmBpb,MAAMF,MAAMwb,eAEtC,GAAIvc,KAAKL,QAAQyG,SAAU,CACzBpG,KAAKkc,aACFI,KAAKrb,MAAMF,MAAMoC,OAAOnD,KAAKL,QAAQuC,QAAUlC,KAAKN,YAAYwC,SAEnE,GAAIjB,MAAMF,MAAMwC,UAAatC,MAAMF,MAAMiC,MAAQ,GAAM,CACrDhD,KAAKkc,aAAaG,IAAI,QAAS,aAC1B,CACLrc,KAAKkc,aAAaG,IAAI,QAAS,+BAzCjB5c,qCA+CPyb,ikCCtDf,IAAAsB,UAAApf,oBAAA,mDACA,IAAAoC,QAAApC,oBAAA,26BAEA,IAAI0J,UACF2V,8JAGAC,eAAgB,mFAOZvB,yDACJ,SAAAA,SAAYzb,aAA2B,IAAdC,QAAcC,UAAAC,OAAA,GAAAD,UAAA,KAAAE,UAAAF,UAAA,MAAAG,gBAAAC,KAAAmb,UAAA,IAAAlU,MAAAC,2BAAAlH,MAAAmb,SAAAhU,WAAAnJ,OAAAoJ,eAAA+T,WAAA1d,KAAAuC,KAC/BN,YAAaU,iBAAEiH,OAAO,QAAUP,SAAUnH,WAChDsH,MAAKhH,QAAU,KAFsB,OAAAgH,yEAMrC,OAAOjH,KAAKwH,YAAc,4CAGnBvG,OACPgb,KAAAd,SAAA/b,UAAA+H,WAAAnJ,OAAAoJ,eAAA+T,SAAA/b,WAAA,WAAAY,MAAAvC,KAAAuC,KAAeiB,OAEf,IAAKjB,KAAK2c,YAAa,CACrB,OAGF3c,KAAKC,SAAU,EAAA8W,SAAArU,SAAE1C,KAAKL,QAAQ8c,aAC9Bzc,KAAK4c,OACL5c,KAAKN,YAAYwY,OAAOkE,OAAOpc,KAAKC,6CAG/B,IAAA4c,OAAA7c,KACL,IAAIN,YAAcM,KAAKN,YACrBod,gBAAkB9c,KAAKC,QAAQkc,KAAK,gCACpCY,UAAa/c,KAAKL,QAAQoH,gBAAkB,OAAUlF,MAAM8B,QAAQ3D,KAAK6D,QAE3EiZ,gBAAgBE,QAEhB5c,iBAAEyW,KAAK7W,KAAK6D,OAAQ,SAAChG,KAAMU,OACzB,IAAI0e,SAAU,EAAAlG,SAAArU,SAAEma,OAAKld,QAAQ+c,gBAC1BnE,KAAK,YAAa1a,MAClB0a,KAAK,aAAcha,OACnBga,KAAK,QAASwE,UAAelf,KAAf,KAAwBU,MAAUA,OAChD4B,GAAG,+CACF,SAAUkE,GACR,IAAI6Y,KAAM,EAAAnG,SAAArU,SAAE1C,MAIZN,YAAYyd,SAASJ,UAAYG,IAAI3E,KAAK,aAAe2E,IAAI3E,KAAK,iBAIxE0E,QAAQd,KAAK,8BACVE,IAAI,mBAAoB9d,OAE3Bue,gBAAgBV,OAAOa,WAGzBH,gBAAgBV,QAAO,EAAArF,SAAArU,SAAE,2DAlDNsE,mCAsDRmU,upBCpEf,IAAA3b,QAAApC,oBAAA,sRAMMyb,yBAIJ,SAAAA,cAAYnZ,aAAaK,gBAAAC,KAAA6Y,eAIvB7Y,KAAKN,YAAcA,YAKnBM,KAAKod,cAAgB,KAKrBpd,KAAKqd,cACHC,KAAM,EACNC,IAAK,GAMPvd,KAAKwd,OAASpd,iBAAEC,MAAML,KAAKyd,cAAezd,oFAU9Bud,IAAKD,MACjB,IAAKtd,KAAKod,cAAe,CACvB,OAGF,IAAIM,OAAS1d,KAAKod,cAAeO,GAAK3d,KAAKN,YAAa0a,GAAKuD,GAAG3F,aAGhE,IAAIjX,OAASqZ,GAAGC,WAAaD,GAAGwD,mBAAqBxD,GAAGrZ,MAAM8c,WAG9DH,OAAOI,WAAWR,KAAOA,KAAO,KAChCI,OAAOI,WAAWP,IAAMA,IAAM,KAG9B,GAAIG,OAAOjX,SAAU,CACnB1F,MAAM2c,OAAOjX,UAAU6W,KAAOI,OAAOnX,SAEvC,GAAImX,OAAOhX,QAAS,CAClB3F,MAAM2c,OAAOhX,SAAS6W,IAAMG,OAAOlX,QAIrCmX,GAAGR,SAASpc,OACZ4c,GAAG7E,aAAaiF,4CAOhB,IAAI1X,QAAUrG,KAAKN,YAAYC,QAAQyF,WAAapF,KAAKN,YACtDC,QAAQiH,YAAc5G,KAAKN,YAAYC,QAAQ0G,QAElD,IAAI2X,iBAEJ,IAAK,IAAIC,cAAc5X,QAAS,CAC9B,IAAKA,QAAQhH,eAAe4e,YAAa,CACvC,SAGFD,cAAc9Z,KAAKmC,QAAQ4X,YAAY3X,UAGzCtG,KAAKN,YAAYwY,OAAOiE,KAAK6B,cAAclI,KAAK,OAC7C3V,GAAG,+CAAgDC,iBAAEC,MAAML,KAAKke,QAASle,gDAO5E,EAAA+W,SAAArU,SAAE1C,KAAKN,YAAYwY,QAAQhX,KACzBid,wBAAyB/d,iBAAEC,MAAML,KAAKoe,MAAOpe,MAC7Cqe,wBAAyBje,iBAAEC,MAAML,KAAKoe,MAAOpe,MAC7Cse,sBAAuBle,iBAAEC,MAAML,KAAKue,SAAUve,MAC9Cwe,uBAAwBpe,iBAAEC,MAAML,KAAKue,SAAUve,gDAW3CqE,GACN,GAAIrE,KAAKN,YAAY8Z,aAAc,CACjC,OAEFxZ,KAAKN,YAAY0Y,UAAUC,MAAQ,UACnCrY,KAAKN,YAAY0Y,UAAU/T,EAAIA,EAE/B,IAAKA,EAAEoa,QAAUpa,EAAEqa,OAASra,EAAEsa,eAAiBta,EAAEsa,cAAcC,QAAS,CACtEva,EAAEoa,MAAQpa,EAAEsa,cAAcC,QAAQ,GAAGH,MACrCpa,EAAEqa,MAAQra,EAAEsa,cAAcC,QAAQ,GAAGF,MAKvC,IAAIG,QAAS,EAAA9H,SAAArU,SAAE2B,EAAEwa,QAGjB,IAAIC,KAAOD,OAAOE,QAAQ,OAE1B,IAAI1Y,QAAUrG,KAAKN,YAAYC,QAAQyF,WAAapF,KAAKN,YACtDC,QAAQiH,YAAc5G,KAAKN,YAAYC,QAAQ0G,QAElD,GAAIyY,KAAKE,GAAG,gBAAiB,CAC3B,OAGFhf,KAAKod,cAAgB,KAErB,IAAK,IAAIa,cAAc5X,QAAS,CAC9B,IAAKA,QAAQhH,eAAe4e,YAAa,CACvC,SAGF,IAAIP,OAASrX,QAAQ4X,YAErB,GAAIa,KAAKE,GAAGtB,OAAOpX,UAAW,CAC5BtG,KAAKod,cAAgBhd,iBAAEiH,UAAWqW,QAAS7f,KAAMogB,aACjD,WACK,GAAIP,OAAO/W,gBAAkB7G,WAAagf,KAAKE,GAAGtB,OAAO/W,eAAgB,CAC9E3G,KAAKod,cAAgBhd,iBAAEiH,UAAWqW,QAAS7f,KAAMogB,aACjDa,KAAOA,KAAKG,SACZ,OAIJ,IAAIC,MAAQJ,KAAK3C,KAAK,sBAAsBhe,IAAI,GAEhD,GAAI6B,KAAKod,gBAAkB,MAAQ8B,QAAU,KAAM,CACjD,OAGF,IAAIC,OAASL,KAAKK,SAGlBnf,KAAKod,cAAcU,WAAaoB,MAAME,MACtCpf,KAAKod,cAAcE,KAAOjZ,EAAEoa,MAAQU,OAAO7B,KAC3Ctd,KAAKod,cAAcG,IAAMlZ,EAAEqa,MAAQS,OAAO5B,IAC1Cvd,KAAKqd,cACHC,KAAMjZ,EAAEoa,MACRlB,IAAKlZ,EAAEqa,QAUT,EAAA3H,SAAArU,SAAE1C,KAAKN,YAAYwY,QAAQ/X,IACzBge,wBAAyB/d,iBAAEC,MAAML,KAAKoe,MAAOpe,MAC7Cqe,wBAAyBje,iBAAEC,MAAML,KAAKoe,MAAOpe,MAC7Cse,sBAAuBle,iBAAEC,MAAML,KAAKue,SAAUve,MAC9Cwe,uBAAwBpe,iBAAEC,MAAML,KAAKue,SAAUve,QAC9CoZ,QAAQ,iDASP/U,GACJrE,KAAKN,YAAY0Y,UAAUC,MAAQ,QACnCrY,KAAKN,YAAY0Y,UAAU/T,EAAIA,EAE/B,IAAKA,EAAEoa,QAAUpa,EAAEqa,OAASra,EAAEsa,eAAiBta,EAAEsa,cAAcC,QAAS,CACtEva,EAAEoa,MAAQpa,EAAEsa,cAAcC,QAAQ,GAAGH,MACrCpa,EAAEqa,MAAQra,EAAEsa,cAAcC,QAAQ,GAAGF,MAIvCra,EAAEgb,iBAEF,IAAI/B,KAAOnZ,KAAKqO,IACd,EACArO,KAAKoO,IACHvS,KAAKod,cAAc7W,QACnBvG,KAAKod,cAAcE,OAASjZ,EAAEoa,OAASze,KAAKqd,aAAaC,MAAQtd,KAAKqd,aAAaC,QAIvF,IAAIC,IAAMpZ,KAAKqO,IACb,EACArO,KAAKoO,IACHvS,KAAKod,cAAc5W,OACnBxG,KAAKod,cAAcG,MAAQlZ,EAAEqa,OAAS1e,KAAKqd,aAAaE,KAAOvd,KAAKqd,aAAaE,OAIrFvd,KAAKwd,OAAOD,IAAKD,gDASVjZ,GACPrE,KAAKN,YAAY0Y,UAAUC,MAAQ,WACnCrY,KAAKN,YAAY0Y,UAAU/T,EAAIA,GAK/B,EAAA0S,SAAArU,SAAE1C,KAAKN,YAAYwY,QAAQhX,KACzBid,wBAAyBne,KAAKoe,MAC9BC,wBAAyBre,KAAKoe,MAC9BE,sBAAuBte,KAAKue,SAC5BC,uBAAwBxe,KAAKue,uDAKpB1F,4pBCrPf,IAAArZ,QAAApC,oBAAA,gDACA,IAAAia,SAAAja,oBAAA,wRAMM2b,wBAKJ,SAAAA,aAAYrZ,YAAahD,MAAMqD,gBAAAC,KAAA+Y,cAI7B/Y,KAAKtD,KAAOA,KAIZsD,KAAKN,YAAcA,YAInBM,KAAKsf,cAAgB,KAIrBtf,KAAKuf,WAAa,KAMlBvf,KAAKwf,SAAW,MAIhBxf,KAAKyf,QAAU,MAIfzf,KAAK0f,QAAU,mEAgDf,IAAI/B,GAAK3d,KAAKN,YAEd,GAAIie,GAAGhe,QAAQ0F,OAAQ,CACrBsY,GAAGzF,OAAOI,SAAS,0CACnB,OAGFqF,GAAGzF,OAAOI,SAAS,wCAGnB,IAAKtY,KAAKyb,WAAazb,KAAK2f,SAAU,CACpC,OAIF,GAAIhC,GAAGhe,QAAQ4F,QAAS,CACtBvF,KAAK4f,gBAIP,GAAI5f,KAAK2f,SAAU,CAEjB,IAAK3f,KAAK6F,MAAM0S,KAAK,YAAa,CAChCvY,KAAK6F,MAAM0S,KAAK,WAAY,GAG9BvY,KAAK6F,MAAM1F,IACT0f,+CAAgDzf,iBAAEC,MAAML,KAAKma,OAAQna,QAGvEA,KAAK6F,MAAM1F,IACT2f,oBAAqB1f,iBAAEC,MAAML,KAAKia,KAAMja,QAG1CA,KAAK6F,MAAM1F,IACT4f,uBAAwB3f,iBAAEC,MAAML,KAAKka,KAAMla,QAK/C,GAAIA,KAAKyb,WAAazb,KAAK2f,SAAU,CACnC3f,KAAK4F,MAAMzF,IACT0f,+CAAgDzf,iBAAEC,MAAML,KAAKia,KAAMja,MACnE8f,oBAAqB1f,iBAAEC,MAAML,KAAKia,KAAMja,QAG1CA,KAAK4F,MAAMzF,IACT4f,uBAAwB3f,iBAAEC,MAAML,KAAKka,KAAMla,SAK/C,EAAA+W,SAAArU,SAAE1C,KAAKtD,MAAMyD,GAAG,qBAAsBC,iBAAEC,MAAML,KAAKggB,WAAYhgB,+CAO/D,GAAIA,KAAKyb,SAAU,CACjBzb,KAAK4F,MAAM1E,KACT2e,+CAAgDzf,iBAAEC,MAAML,KAAKia,KAAMja,MACnE8f,oBAAqB1f,iBAAEC,MAAML,KAAKia,KAAMja,QAE1CA,KAAK4F,MAAM1E,KACT6e,uBAAwB3f,iBAAEC,MAAML,KAAKka,KAAMla,QAI/C,GAAIA,KAAK2f,SAAU,CACjB3f,KAAK6F,MAAM3E,KACT2e,+CAAgDzf,iBAAEC,MAAML,KAAKma,OAAQna,QAEvEA,KAAK6F,MAAM3E,KACT4e,oBAAqB1f,iBAAEC,MAAML,KAAKia,KAAMja,QAE1CA,KAAK6F,MAAM3E,KACT6e,uBAAwB3f,iBAAEC,MAAML,KAAKka,KAAMla,QAI/C,GAAIA,KAAKsf,cAAe,CACtBtf,KAAKsf,cAAc/Z,QAAQ,YAG7B,EAAAwR,SAAArU,SAAE1C,KAAKtD,MAAMwE,IAAI,qBAAsBd,iBAAEC,MAAML,KAAKggB,WAAYhgB,QAChE,EAAA+W,SAAArU,SAAE1C,KAAKtD,KAAKujB,UAAU/e,IAAI,+CAAgDd,iBAAEC,MAAML,KAAKka,KAAMla,QAC7F,EAAA+W,SAAArU,SAAE1C,KAAKtD,KAAKujB,UAAU/e,IAAI,+CAAgDd,iBAAEC,MAAML,KAAKkgB,iBAAkBlgB,iEAG1FqE,GACf,IAAKA,EAAG,CACN,OAAO,MAGT,OACErE,KAAKmgB,aAAangB,KAAKuf,WAAYlb,EAAE+b,gBACrCpgB,KAAKmgB,aAAangB,KAAKuf,WAAYlb,EAAEwa,SACrC7e,KAAKmgB,aAAangB,KAAKN,YAAYwY,OAAQ7T,EAAE+b,gBAC7CpgB,KAAKmgB,aAAangB,KAAKN,YAAYwY,OAAQ7T,EAAEwa,0DAIpCvZ,UAAWrF,SACtB,IAAKqF,YAAcrF,QAAS,CAC1B,OAAO,MAGTA,SAAU,EAAA8W,SAAArU,SAAEzC,SAEZ,OACEA,QAAQ+e,GAAG1Z,YACXA,UAAU6W,KAAKlc,SAASJ,OAAS,4DAIpBwE,GACfrE,KAAKwf,SAAWxf,KAAKqgB,iBAAiBhc,yDAItC,IAAIsZ,GAAK3d,KAAKN,YAEdM,KAAKsf,cAAgBtf,KAAK2f,SAAW3f,KAAK6F,MAAQ7F,KAAK4F,MAEvD+X,GAAGzF,OAAOI,SAAS,kCAEnBtY,KAAKsf,cAAc/Z,QACjBnF,iBAAEiH,OACA,QAEAiZ,kBAAU/a,QACVoY,GAAGhe,QAAQ4F,SACV6T,QAAS,SAAUmH,QAAS5C,GAAGzF,OAAQoE,KAAM,QAMlD,IAAMkE,eAAiBvjB,OAAOwjB,WAC5BxjB,OAAOwjB,UAAUC,SACjBzjB,OAAOwjB,UAAUC,QAAQC,YAE3B3gB,KAAKuf,WAAaiB,gBAChB,EAAAzJ,SAAArU,SAAE+d,UAAUC,QAAQC,YAAY3gB,KAAKsf,cAAc,IAAIsB,kBACvD,EAAA7J,SAAArU,SAAE1C,KAAKsf,cAAc/Z,QAAQ,iBAAiB0R,KAAK,cAAc4J,KAEnE7gB,KAAKuf,WAAWjH,SAAS,0BAEzBtY,KAAKsf,cAAcnf,GAAG,mBAAoBC,iBAAEC,MAAML,KAAK8gB,SAAU9gB,OACjEA,KAAKsf,cAAcnf,GAAG,oBAAqBC,iBAAEC,MAAML,KAAK+gB,SAAU/gB,qDASzDqE,GACT,GAAIrE,KAAKsf,eAAiBtf,KAAKghB,YAAa,CAC1ChhB,KAAKsf,cAAc/Z,QAAQ,iDAWxBlB,GACL,GAAIrE,KAAKghB,YAAa,CACpBhhB,KAAKka,KAAK7V,OACL,CACLrE,KAAKia,KAAK5V,sCAUTA,GACH,GAAIrE,KAAKghB,aAAehhB,KAAK0f,SAAW1f,KAAKyf,QAAS,CACpD,OAGFzf,KAAK0f,QAAU,KACf1f,KAAKyf,QAAU,MACfzf,KAAKwf,SAAW,MAEhB,IAAI7B,GAAK3d,KAAKN,YAEdie,GAAGvF,UAAUC,MAAQ,OACrBsF,GAAGvF,UAAU/T,EAAIA,EAGjB,GACGA,KAAOrE,KAAKyb,UAAYzb,KAAK4F,MAAM2S,KAAK,UAAY,UACpDlU,GAAKA,EAAEgb,eACR,CACAhb,EAAE4c,kBACF5c,EAAEgb,iBAIJ,GAAIrf,KAAKkhB,UAAW,EAClB,EAAAnK,SAAArU,SAAE1C,KAAKtD,MAAMyD,GAAG,qBAAsBC,iBAAEC,MAAML,KAAKggB,WAAYhgB,OAIjE2d,GAAGzF,OAAOI,SAAS,uBAAuByB,YAAY,sBAEtD,GAAI/Z,KAAKsf,cAAe,CACtBtf,KAAKsf,cAAc/Z,QAAQ,YACtB,CACLvF,KAAK8gB,wDAKP9gB,KAAKyf,QAAU,MACfzf,KAAK0f,QAAU,MAEf,GAAI1f,KAAKkhB,UAAW,EAElB,EAAAnK,SAAArU,SAAE1C,KAAKtD,KAAKujB,UAAU9f,GAAG,+CAAgDC,iBAAEC,MAAML,KAAKka,KAAMla,QAC5F,EAAA+W,SAAArU,SAAE1C,KAAKtD,KAAKujB,UAAU9f,GAAG,+CAAgDC,iBAAEC,MAAML,KAAKkgB,iBAAkBlgB,OAQ1GA,KAAKN,YAAY0Z,QAAQ,qDAUtB/U,GACH,GAAIrE,KAAKmhB,YAAcnhB,KAAK0f,SAAW1f,KAAKyf,QAAS,CACnD,OAGF,IAAI9B,GAAK3d,KAAKN,YAAa8f,SAAYxf,KAAKwf,UAAYxf,KAAKqgB,iBAAiBhc,GAE9ErE,KAAKyf,QAAU,KACfzf,KAAK0f,QAAU,MACf1f,KAAKwf,SAAW,MAEhB7B,GAAGvF,UAAUC,MAAQ,OACrBsF,GAAGvF,UAAU/T,EAAIA,EAKjB,GAAImb,SAAU,CACZxf,KAAKyf,QAAU,MACf,OAGF,GAAIzf,KAAKsf,cAAe,CACtBtf,KAAKsf,cAAc/Z,QAAQ,YACtB,CACLvF,KAAK+gB,wDAKP/gB,KAAKyf,QAAU,MACfzf,KAAK0f,QAAU,MAEf,IAAI/B,GAAK3d,KAAKN,YAGdie,GAAGzF,OAAOI,SAAS,sBAAsByB,YAAY,wBAGrD,EAAAhD,SAAArU,SAAE1C,KAAKtD,MAAMwE,IAAI,qBAAsBd,iBAAEC,MAAML,KAAKggB,WAAYhgB,QAChE,EAAA+W,SAAArU,SAAE1C,KAAKtD,KAAKujB,UAAU/e,IAAI,+CAAgDd,iBAAEC,MAAML,KAAKka,KAAMla,QAC7F,EAAA+W,SAAArU,SAAE1C,KAAKtD,KAAKujB,UAAU/e,IAAI,+CAAgDd,iBAAEC,MAAML,KAAKkgB,iBAAkBlgB,OAOzG2d,GAAGvE,QAAQ,yDAIX,GAAIpZ,KAAK2f,SAAU,CACjB,OAAO3f,KAAK6F,MAAMkY,QAEpB,GAAI/d,KAAKyb,SAAU,CACjB,OAAOzb,KAAK4F,MAAMmY,QAEpB,OAAO,oDAUP,OAAO/d,KAAKN,YAAYwY,OAAOkJ,SAAS,yBACrCphB,KAAKN,YAAYwY,OAAOkJ,SAAS,kEAUpC,OAAOphB,KAAKN,YAAYwY,OAAOkJ,SAAS,wBACrCphB,KAAKN,YAAYwY,OAAOkJ,SAAS,yDAjXpC,OAAOphB,KAAKN,YAAY+Y,aAAa7S,2CAQrC,OAAO5F,KAAKN,YAAY+Y,aAAagD,6CAQrC,OAAOzb,KAAKN,YAAYuZ,aAAapT,2CAQrC,OAAO7F,KAAKN,YAAYuZ,aAAa0G,iDAQrC,OAAQ3f,KAAKN,YAAYC,QAAQ0F,UAAYrF,KAAKuf,sDAqVvCxG,2pBCvaf,IAAAvZ,QAAApC,oBAAA,gDACA,IAAAya,WAAAza,oBAAA,4RAMMsb,wBAIJ,SAAAA,aAAYhZ,aAAaK,gBAAAC,KAAA0Y,cAIvB1Y,KAAKN,YAAcA,YAInBM,KAAK4F,MAAQ5F,KAAKN,YAAYO,QAAQ+e,GAAG,SAAWhf,KAAKN,YAAYO,QAAWD,KAAKN,YAAYC,QAAQiG,MACvG5F,KAAKN,YAAYO,QAAQkc,KAAKnc,KAAKN,YAAYC,QAAQiG,OAAS,MAElE,GAAI5F,KAAK4F,OAAU5F,KAAK4F,MAAM/F,SAAW,EAAI,CAC3CG,KAAK4F,MAAQ,MAGf5F,KAAKqhB,0EAIL,IAAKrhB,KAAKyb,WAAY,CACpB,OAEFzb,KAAK4F,MAAMzF,IACTmhB,oBAAqBlhB,iBAAEC,MAAML,KAAKuhB,QAASvhB,QAE7CA,KAAK4F,MAAMzF,IACTqhB,qBAAsBphB,iBAAEC,MAAML,KAAKyhB,SAAUzhB,gDAK/C,IAAKA,KAAKyb,WAAY,CACpB,OAEFzb,KAAK4F,MAAM1E,IAAI,gEAIf,IAAKlB,KAAKyb,WAAY,CACpB,OAGF,IAAI3H,IAAM,IAIR9T,KAAK4F,MAAMkO,MACX9T,KAAK4F,MAAMqR,KAAK,SAChBjX,KAAK4F,MAAM2S,KAAK,eAChB3C,IAAI,SAAC8L,MACL,GAAIA,MAAS5N,MAAQ,GAAK,CACxBA,IAAM4N,QAIV,GAAI5N,eAAerS,oBAAW,CAC5BqS,IAAM9T,KAAK2hB,kBAAkB7N,IAAI3Q,OAAOnD,KAAKN,YAAYwC,cACpD,YAAa4R,MAAQ,UAAYA,eAAexP,QAAS,CAC9DwP,IAAM,GAGR9T,KAAK4F,MAAMgc,KAAK,QAAS9N,iDAUzB,IAAK9T,KAAKyb,WAAY,CACpB,OAAO,MAGT,OAAOzb,KAAK4F,MAAMkO,gDAWXA,KACP,IAAK9T,KAAKyb,WAAY,CACpB,OAGF,IAAIoG,SAAW7hB,KAAK4F,MAAMgc,KAAK,SAE/B9N,IAAMA,IAAMA,IAAM,GAElB,GAAIA,OAAS+N,SAAWA,SAAW,IAAK,CAEtC,OAGF7hB,KAAK4F,MAAMgc,KAAK,QAAS9N,KAOzB9T,KAAK4F,MAAMwT,SACTuB,KAAM,SACNjb,YAAaM,KAAKN,YAClBqB,MAAOf,KAAKN,YAAYqB,MACxBxC,MAAOuV,oEAYmB,IAAZA,IAAYlU,UAAAC,OAAA,GAAAD,UAAA,KAAAE,UAAAF,UAAA,GAAN,KACtBkU,IAAMA,IAAMA,IAAM9T,KAAKN,YAAYsY,aAAa8J,iBAEhD,IAAKhO,IAAK,CACR,MAAO,GAGTA,IAAM9T,KAAKN,YAAYsY,aAAa+J,qBAAqBjO,IAAK,OAE9D,GAAI9T,KAAKN,YAAYC,QAAQqG,gBAAkB,MAAO,CACpD8N,IAAMA,IAAIzR,QAAQ,MAAO,IAG3B,OAAOyR,gDAQP,OAAQ9T,KAAK4F,QAAU,oDAQvB,OAAO5F,KAAKyb,aAAezb,KAAKwZ,6DAQhC,OAAOxZ,KAAKyb,YAAezb,KAAK4F,MAAMgc,KAAK,cAAgB,+CAU3D,GAAI5hB,KAAKyb,WAAY,CACnBzb,KAAK4F,MAAMgc,KAAK,WAAY,+CAW9B,GAAI5hB,KAAKyb,WAAY,CACnBzb,KAAK4F,MAAMgc,KAAK,WAAY,gDAU9B,IAAK5hB,KAAKyb,WAAY,CACpB,OAGF,GACGzb,KAAKN,YAAYC,QAAQmG,oBAAsB,OAChD9F,KAAKN,YAAYsY,aAAagK,iBAC9B,CAEA,OAGFhiB,KAAKmd,SAASnd,KAAK2hB,+DAUZtd,GACPrE,KAAKN,YAAY0Y,UAAUC,MAAQ,eACnCrY,KAAKN,YAAY0Y,UAAU/T,EAAIA,EAE/B,IAAIyP,IAAM9T,KAAK2H,WAEf,GAAImM,MAAQzP,EAAE9F,MAAO,CACnByB,KAAKN,YAAYyd,SAASrJ,8CAWtBzP,GACNrE,KAAKN,YAAY0Y,UAAUC,MAAQ,cACnCrY,KAAKN,YAAY0Y,UAAU/T,EAAIA,EAE/B,IAAIyP,IAAM9T,KAAK2H,WAEf,GAAImM,MAAQzP,EAAE9F,MAAO,CACnByB,KAAKN,YAAYyd,SAASrJ,iDAKjB4E,uGChQf,IAAAhD,YAAkBtY,oBAAQ,IAC1B,IAAAgU,QAAchU,oBAAQ,IAEtB,IAAA6kB,UAAAxL,MAEA,IAAAyL,eAEA,UAGA,OAGA,OAGA,IAAAC,mBACAnkB,OAAAuJ,KAAA6J,SAAArN,QAAA,SAAAlB,OACAsf,gBAAAF,OAAAxkB,KAAA2T,QAAAvO,OAAA0O,QAAA6Q,OAAAtM,KAAA,KAAAjT,QAGA,IAAAwf,YAEA,SAAAC,MAAAC,IAAA1f,OACA,KAAA7C,gBAAAsiB,OAAA,CACA,WAAAA,MAAAC,IAAA1f,OAGA,GAAAA,gBAAAqf,cAAA,CACArf,MAAA,KAGA,GAAAA,kBAAAuO,SAAA,CACA,UAAAlR,MAAA,kBAAA2C,OAGA,IAAAvF,EACA,IAAAgU,SAEA,GAAAiR,KAAA,MACAviB,KAAA6C,MAAA,MACA7C,KAAAe,OAAA,OACAf,KAAAwiB,OAAA,OACE,GAAAD,eAAAD,MAAA,CACFtiB,KAAA6C,MAAA0f,IAAA1f,MACA7C,KAAAe,MAAAwhB,IAAAxhB,MAAA0V,QACAzW,KAAAwiB,OAAAD,IAAAC,YACE,UAAAD,MAAA,UACF,IAAAxgB,OAAA2T,YAAAvX,IAAAokB,KACA,GAAAxgB,SAAA,MACA,UAAA7B,MAAA,sCAAAqiB,KAGAviB,KAAA6C,MAAAd,OAAAc,MACAyO,SAAAF,QAAApR,KAAA6C,OAAAyO,SACAtR,KAAAe,MAAAgB,OAAAxD,MAAAkY,MAAA,EAAAnF,UACAtR,KAAAwiB,cAAAzgB,OAAAxD,MAAA+S,YAAA,SAAAvP,OAAAxD,MAAA+S,UAAA,OACE,GAAAiR,IAAA1iB,OAAA,CACFG,KAAA6C,aAAA,MACAyO,SAAAF,QAAApR,KAAA6C,OAAAyO,SACA,IAAAmR,OAAAR,OAAAxkB,KAAA8kB,IAAA,EAAAjR,UACAtR,KAAAe,MAAA2hB,UAAAD,OAAAnR,UACAtR,KAAAwiB,cAAAD,IAAAjR,YAAA,SAAAiR,IAAAjR,UAAA,OACE,UAAAiR,MAAA,UAEFA,KAAA,SACAviB,KAAA6C,MAAA,MACA7C,KAAAe,OACAwhB,KAAA,OACAA,KAAA,MACAA,IAAA,KAEAviB,KAAAwiB,OAAA,MACE,CACFxiB,KAAAwiB,OAAA,EAEA,IAAAjb,KAAAvJ,OAAAuJ,KAAAgb,KACA,aAAAA,IAAA,CACAhb,KAAAob,OAAApb,KAAAE,QAAA,YACAzH,KAAAwiB,cAAAD,IAAAvf,QAAA,SAAAuf,IAAAvf,MAAA,EAGA,IAAA4f,WAAArb,KAAA6a,OAAAtM,KAAA,IACA,KAAA8M,cAAAT,iBAAA,CACA,UAAAjiB,MAAA,sCAAA2iB,KAAAC,UAAAP,MAGAviB,KAAA6C,MAAAsf,gBAAAS,YAEA,IAAArR,OAAAH,QAAApR,KAAA6C,OAAA0O,OACA,IAAAxQ,SACA,IAAAzD,EAAA,EAAaA,EAAAiU,OAAA1R,OAAmBvC,IAAA,CAChCyD,MAAAmD,KAAAqe,IAAAhR,OAAAjU,KAGA0C,KAAAe,MAAA2hB,UAAA3hB,OAIA,GAAAshB,SAAAriB,KAAA6C,OAAA,CACAyO,SAAAF,QAAApR,KAAA6C,OAAAyO,SACA,IAAAhU,EAAA,EAAaA,EAAAgU,SAAchU,IAAA,CAC3B,IAAAylB,MAAAV,SAAAriB,KAAA6C,OAAAvF,GACA,GAAAylB,MAAA,CACA/iB,KAAAe,MAAAzD,GAAAylB,MAAA/iB,KAAAe,MAAAzD,MAKA0C,KAAAwiB,OAAAre,KAAAqO,IAAA,EAAArO,KAAAoO,IAAA,EAAAvS,KAAAwiB,SAEA,GAAAxkB,OAAAglB,OAAA,CACAhlB,OAAAglB,OAAAhjB,OAIAsiB,MAAAljB,WACAoW,SAAA,WACA,OAAAxV,KAAAmD,UAGA8f,OAAA,WACA,OAAAjjB,UAAA6C,UAGAM,OAAA,SAAA+f,QACA,IAAAnL,KAAA/X,KAAA6C,SAAA6S,YAAAyN,GAAAnjB,UAAAqR,MACA0G,UAAA3U,aAAA8f,SAAA,SAAAA,OAAA,GACA,IAAAthB,KAAAmW,KAAAyK,SAAA,EAAAzK,KAAAhX,MAAAgX,KAAAhX,MAAA+a,OAAA9b,KAAAwiB,QACA,OAAA9M,YAAAyN,GAAApL,KAAAlV,OAAAjB,OAGAwhB,cAAA,SAAAF,QACA,IAAAnL,KAAA/X,KAAAqR,MAAAjO,aAAA8f,SAAA,SAAAA,OAAA,GACA,IAAAthB,KAAAmW,KAAAyK,SAAA,EAAAzK,KAAAhX,MAAAgX,KAAAhX,MAAA+a,OAAA9b,KAAAwiB,QACA,OAAA9M,YAAAyN,GAAA9R,IAAAgS,QAAAzhB,OAGA0hB,MAAA,WACA,OAAAtjB,KAAAwiB,SAAA,EAAAxiB,KAAAe,MAAA0V,QAAAzW,KAAAe,MAAA+a,OAAA9b,KAAAwiB,SAGAtjB,OAAA,WACA,IAAA6C,UACA,IAAAuP,SAAAF,QAAApR,KAAA6C,OAAAyO,SACA,IAAAC,OAAAH,QAAApR,KAAA6C,OAAA0O,OAEA,QAAAjU,EAAA,EAAiBA,EAAAgU,SAAchU,IAAA,CAC/ByE,OAAAwP,OAAAjU,IAAA0C,KAAAe,MAAAzD,GAGA,GAAA0C,KAAAwiB,SAAA,GACAzgB,OAAAiB,MAAAhD,KAAAwiB,OAGA,OAAAzgB,QAGAwhB,UAAA,WACA,IAAAlS,IAAArR,KAAAqR,MAAAtQ,MACAsQ,IAAA,QACAA,IAAA,QACAA,IAAA,QAEA,GAAArR,KAAAwiB,SAAA,GACAnR,IAAAnN,KAAAlE,KAAAwiB,QAGA,OAAAnR,KAGAmS,WAAA,WACA,IAAAnS,IAAArR,KAAAqR,MAAAnS,SACAmS,IAAAjT,GAAA,IACAiT,IAAAgB,GAAA,IACAhB,IAAAiB,GAAA,IAEA,GAAAtS,KAAAwiB,SAAA,GACAnR,IAAArO,MAAAhD,KAAAwiB,OAGA,OAAAnR,KAGAjO,MAAA,SAAA8f,QACAA,OAAA/e,KAAAqO,IAAA0Q,QAAA,KACA,WAAAZ,MAAAtiB,KAAAe,MAAA6U,IAAA6N,aAAAP,SAAApH,OAAA9b,KAAAwiB,QAAAxiB,KAAA6C,QAGAG,MAAA,SAAA8Q,KACA,GAAAlU,UAAAC,OAAA,CACA,WAAAyiB,MAAAtiB,KAAAe,MAAA+a,OAAA3X,KAAAqO,IAAA,EAAArO,KAAAoO,IAAA,EAAAuB,OAAA9T,KAAA6C,OAGA,OAAA7C,KAAAwiB,QAIAlT,IAAAoU,OAAA,QAAAC,MAAA,MACAvY,MAAAsY,OAAA,QAAAC,MAAA,MACApb,KAAAmb,OAAA,QAAAC,MAAA,MAEA7gB,IAAA4gB,QAAA,0CAAA5P,KAAqE,OAAAA,IAAA,eAErE8P,YAAAF,OAAA,QAAAC,MAAA,MACAE,UAAAH,OAAA,QAAAC,MAAA,MAEA1f,YAAAyf,OAAA,QAAAC,MAAA,MACAplB,MAAAmlB,OAAA,QAAAC,MAAA,MAEA3N,OAAA0N,OAAA,QAAAC,MAAA,MACAxY,KAAAuY,OAAA,QAAAC,MAAA,MAEA7S,MAAA4S,OAAA,QAAAC,MAAA,MACAG,OAAAJ,OAAA,QAAAC,MAAA,MAEAza,KAAAwa,OAAA,SAAAC,MAAA,MACAxW,QAAAuW,OAAA,SAAAC,MAAA,MACA3S,OAAA0S,OAAA,SAAAC,MAAA,MACAtb,MAAAqb,OAAA,SAAAC,MAAA,MAEAxQ,EAAAuQ,OAAA,QAAAC,MAAA,MACA3Q,EAAA0Q,OAAA,QAAAC,MAAA,MACAjQ,EAAAgQ,OAAA,QAAAC,MAAA,MAEApmB,EAAAmmB,OAAA,QAAAC,MAAA,MACApiB,EAAAmiB,OAAA,SACApR,EAAAoR,OAAA,SAEA1R,QAAA,SAAA8B,KACA,GAAAlU,UAAAC,OAAA,CACA,WAAAyiB,MAAAxO,KAGA,OAAA1C,QAAApR,KAAA6C,OAAAmP,QAAAhS,KAAAe,QAGAgR,IAAA,SAAA+B,KACA,GAAAlU,UAAAC,OAAA,CACA,WAAAyiB,MAAAxO,KAGA,OAAA4B,YAAAyN,GAAApR,IAAA/R,KAAAqR,MAAAjO,QAAArC,QAGAgjB,UAAA,WACA,IAAA1S,IAAArR,KAAAqR,MAAAtQ,MACA,OAAAsQ,IAAA,aAAAA,IAAA,WAAAA,IAAA,QAGA2S,WAAA,WAEA,IAAA3S,IAAArR,KAAAqR,MAAAtQ,MAEA,IAAAkjB,OACA,QAAA3mB,EAAA,EAAiBA,EAAA+T,IAAAxR,OAAgBvC,IAAA,CACjC,IAAA4mB,KAAA7S,IAAA/T,GAAA,IACA2mB,IAAA3mB,GAAA4mB,MAAA,OAAAA,KAAA,MAAA/f,KAAAiP,KAAA8Q,KAAA,iBAGA,YAAAD,IAAA,SAAAA,IAAA,SAAAA,IAAA,IAGAE,SAAA,SAAAC,QAEA,IAAAC,KAAArkB,KAAAgkB,aACA,IAAAM,KAAAF,OAAAJ,aAEA,GAAAK,KAAAC,KAAA,CACA,OAAAD,KAAA,MAAAC,KAAA,KAGA,OAAAA,KAAA,MAAAD,KAAA,MAGAE,MAAA,SAAAH,QACA,IAAAI,cAAAxkB,KAAAmkB,SAAAC,QACA,GAAAI,eAAA,KACA,YAGA,OAAAA,eAAA,aAGAjhB,OAAA,WAEA,IAAA8N,IAAArR,KAAAqR,MAAAtQ,MACA,IAAA0jB,KAAApT,IAAA,OAAAA,IAAA,OAAAA,IAAA,YACA,OAAAoT,IAAA,KAGAjhB,QAAA,WACA,OAAAxD,KAAAuD,UAGAmhB,OAAA,WACA,IAAArT,IAAArR,KAAAqR,MACA,QAAA/T,EAAA,EAAiBA,EAAA,EAAOA,IAAA,CACxB+T,IAAAtQ,MAAAzD,GAAA,IAAA+T,IAAAtQ,MAAAzD,GAEA,OAAA+T,KAGAsT,QAAA,SAAAjQ,OACA,IAAAlD,IAAAxR,KAAAwR,MACAA,IAAAzQ,MAAA,IAAAyQ,IAAAzQ,MAAA,GAAA2T,MACA,OAAAlD,KAGAoT,OAAA,SAAAlQ,OACA,IAAAlD,IAAAxR,KAAAwR,MACAA,IAAAzQ,MAAA,IAAAyQ,IAAAzQ,MAAA,GAAA2T,MACA,OAAAlD,KAGAqT,SAAA,SAAAnQ,OACA,IAAAlD,IAAAxR,KAAAwR,MACAA,IAAAzQ,MAAA,IAAAyQ,IAAAzQ,MAAA,GAAA2T,MACA,OAAAlD,KAGAsT,WAAA,SAAApQ,OACA,IAAAlD,IAAAxR,KAAAwR,MACAA,IAAAzQ,MAAA,IAAAyQ,IAAAzQ,MAAA,GAAA2T,MACA,OAAAlD,KAGAuT,OAAA,SAAArQ,OACA,IAAAhD,IAAA1R,KAAA0R,MACAA,IAAA3Q,MAAA,IAAA2Q,IAAA3Q,MAAA,GAAA2T,MACA,OAAAhD,KAGAsT,QAAA,SAAAtQ,OACA,IAAAhD,IAAA1R,KAAA0R,MACAA,IAAA3Q,MAAA,IAAA2Q,IAAA3Q,MAAA,GAAA2T,MACA,OAAAhD,KAGAuE,UAAA,WAEA,IAAA5E,IAAArR,KAAAqR,MAAAtQ,MACA,IAAA+S,IAAAzC,IAAA,MAAAA,IAAA,OAAAA,IAAA,OACA,OAAAiR,MAAAjR,IAAAyC,cAGAmR,KAAA,SAAAvQ,OACA,OAAA1U,KAAAgD,MAAAhD,KAAAwiB,OAAAxiB,KAAAwiB,OAAA9N,QAGAwQ,QAAA,SAAAxQ,OACA,OAAA1U,KAAAgD,MAAAhD,KAAAwiB,OAAAxiB,KAAAwiB,OAAA9N,QAGAyQ,OAAA,SAAAC,SACA,IAAA5T,IAAAxR,KAAAwR,MACA,IAAA1O,IAAA0O,IAAAzQ,MAAA,GACA+B,SAAAsiB,SAAA,IACAtiB,QAAA,MAAAA,QACA0O,IAAAzQ,MAAA,GAAA+B,IACA,OAAA0O,KAGA6T,IAAA,SAAAC,WAAAC,QAGA,IAAAD,wBAAAjU,IAAA,CACA,UAAAnR,MAAA,gFAAAolB,YAEA,IAAAE,OAAAF,WAAAjU,MACA,IAAA+S,OAAApkB,KAAAqR,MACA,IAAA/R,EAAAimB,SAAAzlB,UAAA,GAAAylB,OAEA,IAAAxS,EAAA,EAAAzT,EAAA,EACA,IAAAiC,EAAAikB,OAAAxiB,QAAAohB,OAAAphB,QAEA,IAAAyiB,KAAA1S,EAAAxR,KAAA,EAAAwR,KAAAxR,IAAA,EAAAwR,EAAAxR,IAAA,KACA,IAAAmkB,GAAA,EAAAD,GAEA,OAAAnD,MAAAjR,IACAoU,GAAAD,OAAAlW,MAAAoW,GAAAtB,OAAA9U,MACAmW,GAAAD,OAAApa,QAAAsa,GAAAtB,OAAAhZ,QACAqa,GAAAD,OAAAjd,OAAAmd,GAAAtB,OAAA7b,OACAid,OAAAxiB,QAAA1D,EAAA8kB,OAAAphB,SAAA,EAAA1D,MAKAtB,OAAAuJ,KAAA6J,SAAArN,QAAA,SAAAlB,OACA,GAAAqf,cAAAza,QAAA5E,UAAA,GACA,OAGA,IAAAyO,SAAAF,QAAAvO,OAAAyO,SAGAgR,MAAAljB,UAAAyD,OAAA,WACA,GAAA7C,KAAA6C,cAAA,CACA,WAAAyf,MAAAtiB,MAGA,GAAAJ,UAAAC,OAAA,CACA,WAAAyiB,MAAA1iB,UAAAiD,OAGA,IAAA8iB,gBAAA/lB,UAAA0R,YAAA,SAAAA,SAAAtR,KAAAwiB,OACA,WAAAF,MAAAsD,YAAAxU,QAAApR,KAAA6C,cAAAgjB,IAAA7lB,KAAAe,QAAA+a,OAAA6J,UAAA9iB,QAIAyf,MAAAzf,OAAA,SAAA9B,OACA,UAAAA,QAAA,UACAA,MAAA2hB,UAAAT,OAAAxkB,KAAAmC,WAAA0R,UAEA,WAAAgR,MAAAvhB,MAAA8B,UAIA,SAAAijB,QAAAC,IAAA7C,QACA,OAAA8C,OAAAD,IAAAE,QAAA/C,SAGA,SAAAO,aAAAP,QACA,gBAAA6C,KACA,OAAAD,QAAAC,IAAA7C,SAIA,SAAAQ,OAAA7gB,MAAAqjB,QAAAC,UACAtjB,MAAAhB,MAAA8B,QAAAd,qBAEAA,MAAAkB,QAAA,SAAArG,IACA2kB,SAAA3kB,KAAA2kB,SAAA3kB,QAAAwoB,SAAAC,WAGAtjB,YAAA,GAEA,gBAAAiR,KACA,IAAA/R,OAEA,GAAAnC,UAAAC,OAAA,CACA,GAAAsmB,SAAA,CACArS,IAAAqS,SAAArS,KAGA/R,OAAA/B,KAAA6C,SACAd,OAAAhB,MAAAmlB,SAAApS,IACA,OAAA/R,OAGAA,OAAA/B,KAAA6C,SAAA9B,MAAAmlB,SACA,GAAAC,SAAA,CACApkB,OAAAokB,SAAApkB,QAGA,OAAAA,QAIA,SAAA4hB,MAAAnR,KACA,gBAAAlR,GACA,OAAA6C,KAAAqO,IAAA,EAAArO,KAAAoO,IAAAC,IAAAlR,KAIA,SAAAskB,YAAA9R,KACA,OAAAjS,MAAA8B,QAAAmQ,eAGA,SAAA4O,UAAA0D,IAAAvmB,QACA,QAAAvC,EAAA,EAAgBA,EAAAuC,OAAYvC,IAAA,CAC5B,UAAA8oB,IAAA9oB,KAAA,UACA8oB,IAAA9oB,GAAA,GAIA,OAAA8oB,IAGAvpB,OAAAD,QAAA0lB,oDCheA,IAAA+D,WAAiBjpB,oBAAQ,GACzB,IAAAkpB,QAAclpB,oBAAQ,IAEtB,IAAAmpB,gBAGA,QAAA1oB,QAAAwoB,WAAA,CACA,GAAAA,WAAAhnB,eAAAxB,MAAA,CACA0oB,aAAAF,WAAAxoB,aAIA,IAAA2oB,GAAA3pB,OAAAD,SACAumB,MACAhlB,QAGAqoB,GAAAroB,IAAA,SAAAgF,QACA,IAAAsjB,OAAAtjB,OAAAsS,UAAA,KAAAjR,cACA,IAAAsP,IACA,IAAAjR,MACA,OAAA4jB,QACA,UACA3S,IAAA0S,GAAAroB,IAAAqT,IAAArO,QACAN,MAAA,MACA,MACA,UACAiR,IAAA0S,GAAAroB,IAAAuT,IAAAvO,QACAN,MAAA,MACA,MACA,QACAiR,IAAA0S,GAAAroB,IAAAkT,IAAAlO,QACAN,MAAA,MACA,MAGA,IAAAiR,IAAA,CACA,YAGA,OAASjR,MAAAtE,MAAAuV,MAGT0S,GAAAroB,IAAAkT,IAAA,SAAAlO,QACA,IAAAA,OAAA,CACA,YAGA,IAAAujB,KAAA,sBACA,IAAA3U,IAAA,kCACA,IAAA4U,KAAA,0FACA,IAAAC,IAAA,4GACA,IAAA5U,QAAA,QAEA,IAAAX,KAAA,SACA,IAAA9M,MACA,IAAAjH,EACA,IAAAupB,SAEA,GAAAtiB,MAAApB,OAAAoB,MAAAwN,KAAA,CACA8U,SAAAtiB,MAAA,GACAA,YAAA,GAEA,IAAAjH,EAAA,EAAaA,EAAA,EAAOA,IAAA,CAEpB,IAAAwpB,GAAAxpB,EAAA,EACA+T,IAAA/T,GAAAyY,SAAAxR,MAAAkS,MAAAqQ,MAAA,OAGA,GAAAD,SAAA,CACAxV,IAAA,GAAAlN,KAAAf,MAAA2S,SAAA8Q,SAAA,uBAEE,GAAAtiB,MAAApB,OAAAoB,MAAAmiB,MAAA,CACFniB,YAAA,GACAsiB,SAAAtiB,MAAA,GAEA,IAAAjH,EAAA,EAAaA,EAAA,EAAOA,IAAA,CACpB+T,IAAA/T,GAAAyY,SAAAxR,MAAAjH,GAAAiH,MAAAjH,GAAA,IAGA,GAAAupB,SAAA,CACAxV,IAAA,GAAAlN,KAAAf,MAAA2S,SAAA8Q,kBAAA,uBAEE,GAAAtiB,MAAApB,OAAAoB,MAAAoiB,MAAA,CACF,IAAArpB,EAAA,EAAaA,EAAA,EAAOA,IAAA,CACpB+T,IAAA/T,GAAAyY,SAAAxR,MAAAjH,EAAA,MAGA,GAAAiH,MAAA,IACA8M,IAAA,GAAA0V,WAAAxiB,MAAA,UAEE,GAAAA,MAAApB,OAAAoB,MAAAqiB,KAAA,CACF,IAAAtpB,EAAA,EAAaA,EAAA,EAAOA,IAAA,CACpB+T,IAAA/T,GAAA6G,KAAAf,MAAA2jB,WAAAxiB,MAAAjH,EAAA,UAGA,GAAAiH,MAAA,IACA8M,IAAA,GAAA0V,WAAAxiB,MAAA,UAEE,GAAAA,MAAApB,OAAAoB,MAAAyN,SAAA,CACF,GAAAzN,MAAA,oBACA,gBAGA8M,IAAAgV,WAAA9hB,MAAA,IAEA,IAAA8M,IAAA,CACA,YAGAA,IAAA,KAEA,OAAAA,QACE,CACF,YAGA,IAAA/T,EAAA,EAAYA,EAAA,EAAOA,IAAA,CACnB+T,IAAA/T,GAAA0pB,MAAA3V,IAAA/T,GAAA,OAEA+T,IAAA,GAAA2V,MAAA3V,IAAA,QAEA,OAAAA,KAGAmV,GAAAroB,IAAAqT,IAAA,SAAArO,QACA,IAAAA,OAAA,CACA,YAGA,IAAAqO,IAAA,sHACA,IAAAjN,MAAApB,OAAAoB,MAAAiN,KAEA,GAAAjN,MAAA,CACA,IAAAvB,MAAA+jB,WAAAxiB,MAAA,IACA,IAAAlD,GAAA0lB,WAAAxiB,MAAA,aACA,IAAAhF,EAAAynB,MAAAD,WAAAxiB,MAAA,WACA,IAAAhH,EAAAypB,MAAAD,WAAAxiB,MAAA,WACA,IAAAhD,EAAAylB,MAAAxlB,MAAAwB,OAAA,EAAAA,MAAA,KAEA,OAAA3B,EAAA9B,EAAAhC,EAAAgE,GAGA,aAGAilB,GAAAroB,IAAAuT,IAAA,SAAAvO,QACA,IAAAA,OAAA,CACA,YAGA,IAAAuO,IAAA,kHACA,IAAAnN,MAAApB,OAAAoB,MAAAmN,KAEA,GAAAnN,MAAA,CACA,IAAAvB,MAAA+jB,WAAAxiB,MAAA,IACA,IAAAlD,GAAA0lB,WAAAxiB,MAAA,iBACA,IAAAwO,EAAAiU,MAAAD,WAAAxiB,MAAA,WACA,IAAA+N,EAAA0U,MAAAD,WAAAxiB,MAAA,WACA,IAAAhD,EAAAylB,MAAAxlB,MAAAwB,OAAA,EAAAA,MAAA,KACA,OAAA3B,EAAA0R,EAAAT,EAAA/Q,GAGA,aAGAilB,GAAArD,GAAApR,IAAA,WACA,IAAA4U,KAAAL,QAAA1mB,WAEA,MACA,IACAqnB,UAAAN,KAAA,IACAM,UAAAN,KAAA,IACAM,UAAAN,KAAA,KACAA,KAAA,KACAM,UAAA9iB,KAAAf,MAAAujB,KAAA,SACA,KAIAH,GAAArD,GAAA9R,IAAA,WACA,IAAAsV,KAAAL,QAAA1mB,WAEA,OAAA+mB,KAAA9mB,OAAA,GAAA8mB,KAAA,OACA,OAAAxiB,KAAAf,MAAAujB,KAAA,SAAAxiB,KAAAf,MAAAujB,KAAA,SAAAxiB,KAAAf,MAAAujB,KAAA,QACA,QAAAxiB,KAAAf,MAAAujB,KAAA,SAAAxiB,KAAAf,MAAAujB,KAAA,SAAAxiB,KAAAf,MAAAujB,KAAA,SAAAA,KAAA,QAGAH,GAAArD,GAAA9R,IAAAgS,QAAA,WACA,IAAAsD,KAAAL,QAAA1mB,WAEA,IAAAxB,EAAA+F,KAAAf,MAAAujB,KAAA,YACA,IAAAtU,EAAAlO,KAAAf,MAAAujB,KAAA,YACA,IAAArU,EAAAnO,KAAAf,MAAAujB,KAAA,YAEA,OAAAA,KAAA9mB,OAAA,GAAA8mB,KAAA,OACA,OAAAvoB,EAAA,MAAAiU,EAAA,MAAAC,EAAA,KACA,QAAAlU,EAAA,MAAAiU,EAAA,MAAAC,EAAA,MAAAqU,KAAA,QAGAH,GAAArD,GAAA3R,IAAA,WACA,IAAA0V,KAAAZ,QAAA1mB,WACA,OAAAsnB,KAAArnB,OAAA,GAAAqnB,KAAA,OACA,OAAAA,KAAA,QAAAA,KAAA,SAAAA,KAAA,QACA,QAAAA,KAAA,QAAAA,KAAA,SAAAA,KAAA,SAAAA,KAAA,QAKAV,GAAArD,GAAAzR,IAAA,WACA,IAAAyV,KAAAb,QAAA1mB,WAEA,IAAA2B,EAAA,GACA,GAAA4lB,KAAAtnB,QAAA,GAAAsnB,KAAA,QACA5lB,EAAA,KAAA4lB,KAAA,GAGA,aAAAA,KAAA,QAAAA,KAAA,SAAAA,KAAA,OAAA5lB,EAAA,KAGAilB,GAAArD,GAAAnR,QAAA,SAAAX,KACA,OAAAkV,aAAAlV,IAAAoF,MAAA,OAIA,SAAAuQ,MAAAjB,IAAAxT,IAAAC,KACA,OAAArO,KAAAoO,IAAApO,KAAAqO,IAAAD,IAAAwT,KAAAvT,KAGA,SAAAyU,UAAAlB,KACA,IAAA1iB,IAAA0iB,IAAAvQ,SAAA,IAAA9N,cACA,OAAArE,IAAAxD,OAAA,MAAAwD,oECtOA,IAAA+jB,WAAiBhqB,oBAAQ,IAEzB,IAAA0e,OAAAja,MAAAzC,UAAA0c,OACA,IAAArF,MAAA5U,MAAAzC,UAAAqX,MAEA,IAAA6P,QAAAzpB,OAAAD,QAAA,SAAA0pB,QAAA1kB,MACA,IAAAylB,WAEA,QAAA/pB,EAAA,EAAAgqB,IAAA1lB,KAAA/B,OAAmCvC,EAAAgqB,IAAShqB,IAAA,CAC5C,IAAAiqB,IAAA3lB,KAAAtE,GAEA,GAAA8pB,WAAAG,KAAA,CAEAF,QAAAvL,OAAAre,KAAA4pB,QAAA5Q,MAAAhZ,KAAA8pB,UACG,CACHF,QAAAnjB,KAAAqjB,MAIA,OAAAF,SAGAf,QAAAkB,KAAA,SAAA9lB,IACA,kBACA,OAAAA,GAAA4kB,QAAA1mB,yECxBA/C,OAAAD,QAAA,SAAAwqB,WAAA7E,KACA,IAAAA,IAAA,CACA,aAGA,OAAAA,eAAA1gB,aAAA8B,QAAA4e,MACAA,IAAA1iB,QAAA,GAAA0iB,IAAAI,kBAAA8E,wDCRA,IAAAC,YAAkBtqB,oBAAQ,GAC1B,IAAAuqB,MAAYvqB,oBAAQ,IAEpB,IAAAgU,WAEA,IAAAwW,OAAA5pB,OAAAuJ,KAAAmgB,aAEA,SAAAG,QAAAnmB,IACA,IAAAomB,UAAA,SAAAlmB,MACA,GAAAA,OAAA9B,WAAA8B,OAAA,MACA,OAAAA,KAGA,GAAAhC,UAAAC,OAAA,GACA+B,KAAAC,MAAAzC,UAAAqX,MAAAhZ,KAAAmC,WAGA,OAAA8B,GAAAE,OAIA,kBAAAF,GAAA,CACAomB,UAAAC,WAAArmB,GAAAqmB,WAGA,OAAAD,UAGA,SAAAE,YAAAtmB,IACA,IAAAomB,UAAA,SAAAlmB,MACA,GAAAA,OAAA9B,WAAA8B,OAAA,MACA,OAAAA,KAGA,GAAAhC,UAAAC,OAAA,GACA+B,KAAAC,MAAAzC,UAAAqX,MAAAhZ,KAAAmC,WAGA,IAAAmC,OAAAL,GAAAE,MAKA,UAAAG,SAAA,UACA,QAAAulB,IAAAvlB,OAAAlC,OAAAvC,EAAA,EAAuCA,EAAAgqB,IAAShqB,IAAA,CAChDyE,OAAAzE,GAAA6G,KAAAf,MAAArB,OAAAzE,KAIA,OAAAyE,QAIA,kBAAAL,GAAA,CACAomB,UAAAC,WAAArmB,GAAAqmB,WAGA,OAAAD,UAGAF,OAAA7jB,QAAA,SAAAkkB,WACA7W,QAAA6W,cAEAjqB,OAAAC,eAAAmT,QAAA6W,WAAA,YAAwD1pB,MAAAmpB,YAAAO,WAAA3W,WACxDtT,OAAAC,eAAAmT,QAAA6W,WAAA,UAAsD1pB,MAAAmpB,YAAAO,WAAA1W,SAEtD,IAAA2W,OAAAP,MAAAM,WACA,IAAAE,YAAAnqB,OAAAuJ,KAAA2gB,QAEAC,YAAApkB,QAAA,SAAAqkB,SACA,IAAA1mB,GAAAwmB,OAAAE,SAEAhX,QAAA6W,WAAAG,SAAAJ,YAAAtmB,IACA0P,QAAA6W,WAAAG,SAAAvC,IAAAgC,QAAAnmB,QAIA7E,OAAAD,QAAAwU,sDC7EA,IAAAsW,YAAkBtqB,oBAAQ,GAa1B,SAAAirB,aACA,IAAAC,SAEA,IAAAV,OAAA5pB,OAAAuJ,KAAAmgB,aAEA,QAAAJ,IAAAM,OAAA/nB,OAAAvC,EAAA,EAAqCA,EAAAgqB,IAAShqB,IAAA,CAC9CgrB,MAAAV,OAAAtqB,KAGAmW,UAAA,EACAwL,OAAA,MAIA,OAAAqJ,MAIA,SAAAC,UAAAN,WACA,IAAAK,MAAAD,aACA,IAAAG,OAAAP,WAEAK,MAAAL,WAAAxU,SAAA,EAEA,MAAA+U,MAAA3oB,OAAA,CACA,IAAA4oB,QAAAD,MAAAE,MACA,IAAAC,UAAA3qB,OAAAuJ,KAAAmgB,YAAAe,UAEA,QAAAnB,IAAAqB,UAAA9oB,OAAAvC,EAAA,EAAyCA,EAAAgqB,IAAShqB,IAAA,CAClD,IAAAsrB,SAAAD,UAAArrB,GACA,IAAAurB,KAAAP,MAAAM,UAEA,GAAAC,KAAApV,YAAA,GACAoV,KAAApV,SAAA6U,MAAAG,SAAAhV,SAAA,EACAoV,KAAA5J,OAAAwJ,QACAD,MAAAM,QAAAF,YAKA,OAAAN,MAGA,SAAAS,KAAAC,KAAA7F,IACA,gBAAAvhB,MACA,OAAAuhB,GAAA6F,KAAApnB,QAIA,SAAAqnB,eAAAb,QAAAE,OACA,IAAAY,MAAAZ,MAAAF,SAAAnJ,OAAAmJ,SACA,IAAA1mB,GAAAgmB,YAAAY,MAAAF,SAAAnJ,QAAAmJ,SAEA,IAAAe,IAAAb,MAAAF,SAAAnJ,OACA,MAAAqJ,MAAAa,KAAAlK,OAAA,CACAiK,KAAAJ,QAAAR,MAAAa,KAAAlK,QACAvd,GAAAqnB,KAAArB,YAAAY,MAAAa,KAAAlK,QAAAkK,KAAAznB,IACAynB,IAAAb,MAAAa,KAAAlK,OAGAvd,GAAAqmB,WAAAmB,KACA,OAAAxnB,GAGA7E,OAAAD,QAAA,SAAAqrB,WACA,IAAAK,MAAAC,UAAAN,WACA,IAAAF,cAEA,IAAAH,OAAA5pB,OAAAuJ,KAAA+gB,OACA,QAAAhB,IAAAM,OAAA/nB,OAAAvC,EAAA,EAAqCA,EAAAgqB,IAAShqB,IAAA,CAC9C,IAAA8qB,QAAAR,OAAAtqB,GACA,IAAAurB,KAAAP,MAAAF,SAEA,GAAAS,KAAA5J,SAAA,MAEA,SAGA8I,WAAAK,SAAAa,eAAAb,QAAAE,OAGA,OAAAP,2nBC5FA,IAAAvoB,QAAApC,oBAAA,gDACA,IAAAya,WAAAza,oBAAA,4RAMMub,wBAIJ,SAAAA,aAAYjZ,aAAaK,gBAAAC,KAAA2Y,cAIvB3Y,KAAKN,YAAcA,yEAwDnB,GAAIM,KAAKN,YAAYC,QAAQoB,MAAO,CAClCf,KAAKe,MAAQf,KAAKua,YAAYva,KAAKN,YAAYC,QAAQoB,OACvD,OAIF,IAAKf,KAAKe,SAAWf,KAAKN,YAAY+Y,aAAa9Q,WAAY,CAC7D3H,KAAKe,MAAQf,KAAKua,YAChBva,KAAKN,YAAY+Y,aAAa9Q,WAAY3H,KAAKN,YAAYC,QAAQmG,4DAMvE9F,KAAKN,YAAYO,QAAQ+Z,WAAW,iEAUpC,IAAKha,KAAKqa,WAAY,CACpB,MAAO,GAGT,OAAOra,KAAKe,MAAMoC,OAAOnD,KAAKkC,8DAQjB4R,KACb,IAAI/S,MAAQ+S,IAAM9T,KAAKua,YAAYzG,KAAO,KAE1C9T,KAAKe,MAAQA,MAAQA,MAAQ,qDAYnB+S,KAA6D,IAAxDsV,kBAAwDxpB,UAAAC,OAAA,GAAAD,UAAA,KAAAE,UAAAF,UAAA,GAApC,KAAoC,IAA9BmG,qBAA8BnG,UAAAC,OAAA,GAAAD,UAAA,KAAAE,UAAAF,UAAA,GAAP,MAChE,IAAIwC,yBAA2BgnB,oBAAsBrjB,qBAErD,IAAIhF,MAAQ,IAAIU,oBAAUzB,KAAK+hB,qBAAqBjO,KAAM9T,KAAKkC,OAAQE,yBAEvE,IAAKrB,MAAMuC,UAAW,CACpB,GAAI8lB,kBAAmB,CACrBroB,MAAQf,KAAK4d,mBAQf5d,KAAKN,YAAY0Z,QAAQ,qBAAsBrY,MAAO+S,KAGxD,IAAK9T,KAAKqpB,iBAAkB,CAE1BtoB,MAAMiC,MAAQ,EAGhB,OAAOjC,kEAIP,GAAIf,KAAKspB,UAAatpB,KAAKspB,WAAatpB,KAAKe,MAAQ,CACnD,OAAOf,KAAKe,MAGd,IAAIuoB,SAAWtpB,KAAK+hB,qBAAqB/hB,KAAKspB,UAE9C,IAAIvoB,MAAQ,IAAIU,oBAAU6nB,SAAUtpB,KAAKkC,QAEzC,IAAKnB,MAAMuC,UAAW,CACpBuY,QAAQ0N,KAAK,sFACb,OAAOvpB,KAAKe,MAAQf,KAAKe,MAAQ,IAAIU,oBAAU,UAAWzB,KAAKkC,QAGjE,OAAOnB,wDAOP,IAAKf,KAAKqa,WAAY,CACpBra,KAAKe,MAAQf,KAAK4d,mBAGpB,OAAO5d,KAAKe,wEAUOA,OAAyB,IAAlBC,UAAkBpB,UAAAC,OAAA,GAAAD,UAAA,KAAAE,UAAAF,UAAA,GAAN,KACtC,IAAI4pB,iBAAmB,MAEvBppB,iBAAEyW,KAAK7W,KAAKN,YAAYyG,WAAY,SAAUtI,KAAM6b,KAClD,GAAI8P,mBAAqB,MAAO,CAE9B,OAEFA,iBAAmB9P,IAAI+P,aAAa1oB,MAAOC,aAG7C,OAAOwoB,iBAAmBA,iBAAmBzoB,8DAQ7C,OAAQf,KAAKqa,aAAera,KAAKe,MAAMuC,kEAQvC,OAAQtD,KAAKN,YAAYC,QAAQsG,WAAa,kDAQ9C,OAAOjG,KAAKe,iBAAiBU,yDApM7B,OAAOzB,KAAKN,YAAYC,QAAQwF,cAC9BnF,KAAKN,YAAYC,QAAQwF,cAAiBnF,KAAKqa,WAAara,KAAKe,MAAQ,wCAO3E,GAAIf,KAAKN,YAAYC,QAAQuC,OAAQ,CACnC,OAAOlC,KAAKN,YAAYC,QAAQuC,OAGlC,GAAIlC,KAAKqa,YAAcra,KAAKe,MAAM2oB,mBAAqB1pB,KAAKe,MAAMmB,OAAOqC,MAAM,QAAS,CACtF,OAAOvE,KAAKqpB,iBAAmB,OAAS,MAG1C,GAAIrpB,KAAKqa,WAAY,CACnB,OAAOra,KAAKe,MAAMmB,OAGpB,MAAO,wCASP,OAAOlC,KAAKN,YAAYO,QAAQgX,KAAK,2BAS7B1Y,OACRyB,KAAKN,YAAYO,QAAQgX,KAAK,QAAS1Y,OAEvC,GAAKA,iBAAiBkD,qBAAezB,KAAKN,YAAYC,QAAQuC,SAAW,OAAS,CAEhFlC,KAAKN,YAAYC,QAAQuC,OAASlC,KAAKe,MAAMmB,mDA6JpCyW,2pBC9Nf,IAAAnZ,QAAApC,oBAAA,sRAMM4b,yBAIJ,SAAAA,cAAYtZ,aAAaK,gBAAAC,KAAAgZ,eAIvBhZ,KAAKN,YAAcA,YAInBM,KAAKkY,OAAS,mEAed,IAAIA,OAASlY,KAAKkY,QAAS,EAAAnB,SAAArU,SAAE1C,KAAKL,QAAQuG,UAE1C,GAAIlG,KAAKL,QAAQuF,YAAa,CAC5BgT,OAAOI,SAAStY,KAAKL,QAAQuF,aAG/B,GAAIlF,KAAKL,QAAQyF,WAAY,CAC3B8S,OAAOI,SAAS,0BAGlB,GAAItY,KAAK2pB,oBAAqB,CAC5B3pB,KAAKL,QAAQsG,SAAW,KACxBiS,OAAOI,SAAS,8BACX,CACLtY,KAAKL,QAAQsG,SAAW,+CAM1B,IAAI2jB,aAAe5pB,KAAKN,YAAY4F,UAAYtF,KAAKN,YAAY4F,UAAY,KAE7E,GAAIskB,aAAc,CAChB5pB,KAAKkY,OAAO2R,SAASD,uDAKvB5pB,KAAKkY,OAAO4R,uEAIZ,OACG9pB,KAAKL,QAAQsG,UAAajG,KAAKN,YAAYsY,aAAaqC,YAAcra,KAAKe,MAAM2oB,oBACjF1pB,KAAKL,QAAQsG,WAAa,SACzBjG,KAAKL,QAAQuC,QAAWlC,KAAKL,QAAQuC,SAAWlC,KAAKL,QAAQuC,OAAOqC,MAAM,0DAQ9E,IAAKvE,KAAKN,YAAYsY,aAAaqC,WAAY,CAC7C,OAGF,IAAI0P,SAAY/pB,KAAKL,QAAQyF,aAAe,KAC1CsY,OAASqM,SAAW/pB,KAAKL,QAAQ0G,QAAUrG,KAAKL,QAAQiH,YAE1D,IAAIojB,gBAAkBhqB,KAAKkY,OAAOiE,KAAK,8CACrC8N,SAAWjqB,KAAKkY,OAAOiE,KAAK,uCAC5B+N,WAAalqB,KAAKkY,OAAOiE,KAAK,yCAEhC,IAAIgO,KAAOnqB,KAAKe,MAAMqpB,cAGtB,GAAIH,SAASpqB,OAAQ,CACnBoqB,SAAS5N,IAAI0N,SAAW,MAAQ,QAASA,SAAWrM,OAAO5a,IAAI0D,OAASkX,OAAO5a,IAAIyD,UAAY,EAAI4jB,KAAK9oB,IAE1G,GAAI6oB,WAAWrqB,OAAQ,CACrBqqB,WAAW7N,IAAI0N,SAAW,MAAQ,QAASA,SAAWrM,OAAO1a,MAAMwD,OAASkX,OAAO1a,MAAMuD,UAAY,EAAI4jB,KAAK5oB,IAEhH,GAAIyoB,gBAAgBnqB,OAAQ,CAC1BmqB,gBAAgB3N,KACdkB,IAAOG,OAAO3a,WAAWyD,OAAS2jB,KAAK7oB,EAAIoc,OAAO3a,WAAWyD,OAC7D8W,KAAQ6M,KAAK5qB,EAAIme,OAAO3a,WAAWwD,UAKvCvG,KAAKkY,OAAOiE,KAAK,2BACdE,IAAI,kBAAmBrc,KAAKe,MAAMspB,kBAAkBC,eAGvD,IAAIC,SAAWvqB,KAAKe,MAAMupB,cAE1B,IAAIE,QAAU,GAEd,GAAIxqB,KAAKL,QAAQyF,WAAY,CAC3BolB,qCAAuCD,SAAvC,6BACK,CACLC,sCAAwCD,SAAxC,yBAGFvqB,KAAKkY,OAAOiE,KAAK,4BAA4BE,IAAI,aAAcmO,6CAhG/D,OAAOxqB,KAAKN,YAAYC,0CAIxB,OAAOK,KAAKN,YAAYsY,aAAajX,kDAgG1BiY,gzBCtHTE,wBAIJ,SAAAA,aAAYxZ,aAAaK,gBAAAC,KAAAkZ,cAIvBlZ,KAAKN,YAAcA,YAInBM,KAAK6F,MAAQ,0EAIb,QAAS7F,KAAK6F,0CAOd7F,KAAK6F,MAAQ7F,KAAKN,YAAYC,QAAQkG,MACpC7F,KAAKN,YAAYO,QAAQkc,KAAKnc,KAAKN,YAAYC,QAAQkG,OAAS,KAElE,GAAI7F,KAAK6F,OAAU7F,KAAK6F,MAAMhG,SAAW,EAAI,CAE3CG,KAAK6F,MAAQ,8CAKf,GAAI7F,KAAK2f,WAAY,CACnB3f,KAAK6F,MAAM3E,IAAI,yDAQjB,IAAKlB,KAAKN,YAAYsY,aAAaqC,aAAera,KAAK2f,WAAY,CACjE,OAGF,IAAI8K,SAAWzqB,KAAKN,YAAYsY,aAAa8J,iBAE7C,IAAI4I,QAAUC,WAAcF,UAE5B,IAAIG,IAAM5qB,KAAK6F,MAAMsW,KAAK,KAAK0O,GAAG,GAElC,GAAID,IAAI/qB,OAAS,EAAG,CAClB+qB,IAAIvO,IAAIqO,YACH,CACL1qB,KAAK6F,MAAMwW,IAAIqO,oDAKNxR","file":"bootstrap-colorpicker.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"jquery\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"bootstrap-colorpicker\", [\"jquery\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"bootstrap-colorpicker\"] = factory(require(\"jquery\"));\n\telse\n\t\troot[\"bootstrap-colorpicker\"] = factory(root[\"jQuery\"]);\n})(window, function(__WEBPACK_EXTERNAL_MODULE__0__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 7);\n","module.exports = __WEBPACK_EXTERNAL_MODULE__0__;","'use strict';\n\nimport $ from 'jquery';\n\n/**\n * Colorpicker extension class.\n */\nclass Extension {\n  /**\n   * @param {Colorpicker} colorpicker\n   * @param {Object} options\n   */\n  constructor(colorpicker, options = {}) {\n    /**\n     * The colorpicker instance\n     * @type {Colorpicker}\n     */\n    this.colorpicker = colorpicker;\n    /**\n     * Extension options\n     *\n     * @type {Object}\n     */\n    this.options = options;\n\n    if (!(this.colorpicker.element && this.colorpicker.element.length)) {\n      throw new Error('Extension: this.colorpicker.element is not valid');\n    }\n\n    this.colorpicker.element.on('colorpickerCreate.colorpicker-ext', $.proxy(this.onCreate, this));\n    this.colorpicker.element.on('colorpickerDestroy.colorpicker-ext', $.proxy(this.onDestroy, this));\n    this.colorpicker.element.on('colorpickerUpdate.colorpicker-ext', $.proxy(this.onUpdate, this));\n    this.colorpicker.element.on('colorpickerChange.colorpicker-ext', $.proxy(this.onChange, this));\n    this.colorpicker.element.on('colorpickerInvalid.colorpicker-ext', $.proxy(this.onInvalid, this));\n    this.colorpicker.element.on('colorpickerShow.colorpicker-ext', $.proxy(this.onShow, this));\n    this.colorpicker.element.on('colorpickerHide.colorpicker-ext', $.proxy(this.onHide, this));\n    this.colorpicker.element.on('colorpickerEnable.colorpicker-ext', $.proxy(this.onEnable, this));\n    this.colorpicker.element.on('colorpickerDisable.colorpicker-ext', $.proxy(this.onDisable, this));\n  }\n\n  /**\n   * Function called every time a new color needs to be created.\n   * Return false to skip this resolver and continue with other extensions' ones\n   * or return anything else to consider the color resolved.\n   *\n   * @param {ColorItem|String|*} color\n   * @param {boolean} realColor if true, the color should resolve into a real (not named) color code\n   * @return {ColorItem|String|*}\n   */\n  resolveColor(color, realColor = true) {\n    return false;\n  }\n\n  /**\n   * Method called after the colorpicker is created\n   *\n   * @listens Colorpicker#colorpickerCreate\n   * @param {Event} event\n   */\n  onCreate(event) {\n    // to be extended\n  }\n\n  /**\n   * Method called after the colorpicker is destroyed\n   *\n   * @listens Colorpicker#colorpickerDestroy\n   * @param {Event} event\n   */\n  onDestroy(event) {\n    this.colorpicker.element.off('.colorpicker-ext');\n  }\n\n  /**\n   * Method called after the colorpicker is updated\n   *\n   * @listens Colorpicker#colorpickerUpdate\n   * @param {Event} event\n   */\n  onUpdate(event) {\n    // to be extended\n  }\n\n  /**\n   * Method called after the colorpicker color is changed\n   *\n   * @listens Colorpicker#colorpickerChange\n   * @param {Event} event\n   */\n  onChange(event) {\n    // to be extended\n  }\n\n  /**\n   * Method called when the colorpicker color is invalid\n   *\n   * @listens Colorpicker#colorpickerInvalid\n   * @param {Event} event\n   */\n  onInvalid(event) {\n    // to be extended\n  }\n\n  /**\n   * Method called after the colorpicker is hidden\n   *\n   * @listens Colorpicker#colorpickerHide\n   * @param {Event} event\n   */\n  onHide(event) {\n    // to be extended\n  }\n\n  /**\n   * Method called after the colorpicker is shown\n   *\n   * @listens Colorpicker#colorpickerShow\n   * @param {Event} event\n   */\n  onShow(event) {\n    // to be extended\n  }\n\n  /**\n   * Method called after the colorpicker is disabled\n   *\n   * @listens Colorpicker#colorpickerDisable\n   * @param {Event} event\n   */\n  onDisable(event) {\n    // to be extended\n  }\n\n  /**\n   * Method called after the colorpicker is enabled\n   *\n   * @listens Colorpicker#colorpickerEnable\n   * @param {Event} event\n   */\n  onEnable(event) {\n    // to be extended\n  }\n}\n\nexport default Extension;\n","/**\n * Color manipulation class, specific for Bootstrap Colorpicker\n */\nimport QixColor from 'color';\n\n/**\n * HSVA color data class, containing the hue, saturation, value and alpha\n * information.\n */\nclass HSVAColor {\n  /**\n   * @param {number|int} h\n   * @param {number|int} s\n   * @param {number|int} v\n   * @param {number|int} a\n   */\n  constructor(h, s, v, a) {\n    this.h = isNaN(h) ? 0 : h;\n    this.s = isNaN(s) ? 0 : s;\n    this.v = isNaN(v) ? 0 : v;\n    this.a = isNaN(h) ? 1 : a;\n  }\n\n  toString() {\n    return `${this.h}, ${this.s}%, ${this.v}%, ${this.a}`;\n  }\n}\n\n/**\n * HSVA color manipulation\n */\nclass ColorItem {\n\n  /**\n   * Returns the HSVAColor class\n   *\n   * @static\n   * @example let colorData = new ColorItem.HSVAColor(360, 100, 100, 1);\n   * @returns {HSVAColor}\n   */\n  static get HSVAColor() {\n    return HSVAColor;\n  }\n\n  /**\n   * Applies a method of the QixColor API and returns a new Color object or\n   * the return value of the method call.\n   *\n   * If no argument is provided, the internal QixColor object is returned.\n   *\n   * @param {String} fn QixColor function name\n   * @param args QixColor function arguments\n   * @example let darkerColor = color.api('darken', 0.25);\n   * @example let luminosity = color.api('luminosity');\n   * @example color = color.api('negate');\n   * @example let qColor = color.api().negate();\n   * @returns {ColorItem|QixColor|*}\n   */\n  api(fn, ...args) {\n    if (arguments.length === 0) {\n      return this._color;\n    }\n\n    let result = this._color[fn].apply(this._color, args);\n\n    if (!(result instanceof QixColor)) {\n      // return result of the method call\n      return result;\n    }\n\n    return new ColorItem(result, this.format);\n  }\n\n  /**\n   * Returns the original ColorItem constructor data,\n   * plus a 'valid' flag to know if it's valid or not.\n   *\n   * @returns {{color: *, format: String, valid: boolean}}\n   */\n  get original() {\n    return this._original;\n  }\n\n  /**\n   * @param {ColorItem|HSVAColor|QixColor|String|*|null} color Color data\n   * @param {String|null} format Color model to convert to by default. Supported: 'rgb', 'hsl', 'hex'.\n   * @param {boolean} disableHexInputFallback Disable fixing hex3 format\n   */\n  constructor(color = null, format = null, disableHexInputFallback = false) {\n    this.replace(color, format, disableHexInputFallback);\n  }\n\n  /**\n   * Replaces the internal QixColor object with a new one.\n   * This also replaces the internal original color data.\n   *\n   * @param {ColorItem|HSVAColor|QixColor|String|*|null} color Color data to be parsed (if needed)\n   * @param {String|null} format Color model to convert to by default. Supported: 'rgb', 'hsl', 'hex'.\n   * @param {boolean} disableHexInputFallback Disable fixing hex3 format\n   * @example color.replace('rgb(255,0,0)', 'hsl');\n   * @example color.replace(hsvaColorData);\n   */\n  replace(color, format = null, disableHexInputFallback = false) {\n    format = ColorItem.sanitizeFormat(format);\n\n    /**\n     * @type {{color: *, format: String}}\n     * @private\n     */\n    this._original = {\n      color: color,\n      format: format,\n      valid: true\n    };\n    /**\n     * @type {QixColor}\n     * @private\n     */\n    this._color = ColorItem.parse(color, disableHexInputFallback);\n\n    if (this._color === null) {\n      this._color = QixColor();\n      this._original.valid = false;\n      return;\n    }\n\n    /**\n     * @type {*|string}\n     * @private\n     */\n    this._format = format ? format :\n      (ColorItem.isHex(color) ? 'hex' : this._color.model);\n  }\n\n  /**\n   * Parses the color returning a Qix Color object or null if cannot be\n   * parsed.\n   *\n   * @param {ColorItem|HSVAColor|QixColor|String|*|null} color Color data\n   * @param {boolean} disableHexInputFallback Disable fixing hex3 format\n   * @example let qColor = ColorItem.parse('rgb(255,0,0)');\n   * @static\n   * @returns {QixColor|null}\n   */\n  static parse(color, disableHexInputFallback = false) {\n    if (color instanceof QixColor) {\n      return color;\n    }\n\n    if (color instanceof ColorItem) {\n      return color._color;\n    }\n\n    let format = null;\n\n    if (color instanceof HSVAColor) {\n      color = [color.h, color.s, color.v, isNaN(color.a) ? 1 : color.a];\n    } else {\n      color = ColorItem.sanitizeString(color);\n    }\n\n    if (color === null) {\n      return null;\n    }\n\n    if (Array.isArray(color)) {\n      format = 'hsv';\n    }\n\n    if (ColorItem.isHex(color) && (color.length !== 6 && color.length !== 7) && disableHexInputFallback) {\n      return null;\n    }\n\n    try {\n      return QixColor(color, format);\n    } catch (e) {\n      return null;\n    }\n  }\n\n  /**\n   * Sanitizes a color string, adding missing hash to hexadecimal colors\n   * and converting 'transparent' to a color code.\n   *\n   * @param {String|*} str Color string\n   * @example let colorStr = ColorItem.sanitizeString('ffaa00');\n   * @static\n   * @returns {String|*}\n   */\n  static sanitizeString(str) {\n    if (!(typeof str === 'string' || str instanceof String)) {\n      return str;\n    }\n\n    if (str.match(/^[0-9a-f]{2,}$/i)) {\n      return `#${str}`;\n    }\n\n    if (str.toLowerCase() === 'transparent') {\n      return '#FFFFFF00';\n    }\n\n    return str;\n  }\n\n  /**\n   * Detects if a value is a string and a color in hexadecimal format (in any variant).\n   *\n   * @param {String} str\n   * @example ColorItem.isHex('rgba(0,0,0)'); // false\n   * @example ColorItem.isHex('ffaa00'); // true\n   * @example ColorItem.isHex('#ffaa00'); // true\n   * @static\n   * @returns {boolean}\n   */\n  static isHex(str) {\n    if (!(typeof str === 'string' || str instanceof String)) {\n      return false;\n    }\n\n    return !!str.match(/^#?[0-9a-f]{2,}$/i);\n  }\n\n  /**\n   * Sanitizes a color format to one supported by web browsers.\n   * Returns an empty string of the format can't be recognised.\n   *\n   * @param {String|*} format\n   * @example ColorItem.sanitizeFormat('rgba'); // 'rgb'\n   * @example ColorItem.isHex('hex8'); // 'hex'\n   * @example ColorItem.isHex('invalid'); // ''\n   * @static\n   * @returns {String} 'rgb', 'hsl', 'hex' or ''.\n   */\n  static sanitizeFormat(format) {\n    switch (format) {\n      case 'hex':\n      case 'hex3':\n      case 'hex4':\n      case 'hex6':\n      case 'hex8':\n        return 'hex';\n      case 'rgb':\n      case 'rgba':\n      case 'keyword':\n      case 'name':\n        return 'rgb';\n      case 'hsl':\n      case 'hsla':\n      case 'hsv':\n      case 'hsva':\n      case 'hwb': // HWB this is supported by Qix Color, but not by browsers\n      case 'hwba':\n        return 'hsl';\n      default :\n        return '';\n    }\n  }\n\n  /**\n   * Returns true if the color is valid, false if not.\n   *\n   * @returns {boolean}\n   */\n  isValid() {\n    return this._original.valid === true;\n  }\n\n  /**\n   * Hue value from 0 to 360\n   *\n   * @returns {int}\n   */\n  get hue() {\n    return this._color.hue();\n  }\n\n  /**\n   * Saturation value from 0 to 100\n   *\n   * @returns {int}\n   */\n  get saturation() {\n    return this._color.saturationv();\n  }\n\n  /**\n   * Value channel value from 0 to 100\n   *\n   * @returns {int}\n   */\n  get value() {\n    return this._color.value();\n  }\n\n  /**\n   * Alpha value from 0.0 to 1.0\n   *\n   * @returns {number}\n   */\n  get alpha() {\n    let a = this._color.alpha();\n\n    return isNaN(a) ? 1 : a;\n  }\n\n  /**\n   * Default color format to convert to when calling toString() or string()\n   *\n   * @returns {String} 'rgb', 'hsl', 'hex' or ''\n   */\n  get format() {\n    return this._format ? this._format : this._color.model;\n  }\n\n  /**\n   * Sets the hue value\n   *\n   * @param {int} value Integer from 0 to 360\n   */\n  set hue(value) {\n    this._color = this._color.hue(value);\n  }\n\n  /**\n   * Sets the hue ratio, where 1.0 is 0, 0.5 is 180 and 0.0 is 360.\n   *\n   * @ignore\n   * @param {number} h Ratio from 1.0 to 0.0\n   */\n  setHueRatio(h) {\n    this.hue = ((1 - h) * 360);\n  }\n\n  /**\n   * Sets the saturation value\n   *\n   * @param {int} value Integer from 0 to 100\n   */\n  set saturation(value) {\n    this._color = this._color.saturationv(value);\n  }\n\n  /**\n   * Sets the saturation ratio, where 1.0 is 100 and 0.0 is 0.\n   *\n   * @ignore\n   * @param {number} s Ratio from 0.0 to 1.0\n   */\n  setSaturationRatio(s) {\n    this.saturation = (s * 100);\n  }\n\n  /**\n   * Sets the 'value' channel value\n   *\n   * @param {int} value Integer from 0 to 100\n   */\n  set value(value) {\n    this._color = this._color.value(value);\n  }\n\n  /**\n   * Sets the value ratio, where 1.0 is 0 and 0.0 is 100.\n   *\n   * @ignore\n   * @param {number} v Ratio from 1.0 to 0.0\n   */\n  setValueRatio(v) {\n    this.value = ((1 - v) * 100);\n  }\n\n  /**\n   * Sets the alpha value. It will be rounded to 2 decimals.\n   *\n   * @param {int} value Float from 0.0 to 1.0\n   */\n  set alpha(value) {\n    // 2 decimals max\n    this._color = this._color.alpha(Math.round(value * 100) / 100);\n  }\n\n  /**\n   * Sets the alpha ratio, where 1.0 is 0.0 and 0.0 is 1.0.\n   *\n   * @ignore\n   * @param {number} a Ratio from 1.0 to 0.0\n   */\n  setAlphaRatio(a) {\n    this.alpha = 1 - a;\n  }\n\n  /**\n   * Sets the default color format\n   *\n   * @param {String} value Supported: 'rgb', 'hsl', 'hex'\n   */\n  set format(value) {\n    this._format = ColorItem.sanitizeFormat(value);\n  }\n\n  /**\n   * Returns true if the saturation value is zero, false otherwise\n   *\n   * @returns {boolean}\n   */\n  isDesaturated() {\n    return this.saturation === 0;\n  }\n\n  /**\n   * Returns true if the alpha value is zero, false otherwise\n   *\n   * @returns {boolean}\n   */\n  isTransparent() {\n    return this.alpha === 0;\n  }\n\n  /**\n   * Returns true if the alpha value is numeric and less than 1, false otherwise\n   *\n   * @returns {boolean}\n   */\n  hasTransparency() {\n    return this.hasAlpha() && (this.alpha < 1);\n  }\n\n  /**\n   * Returns true if the alpha value is numeric, false otherwise\n   *\n   * @returns {boolean}\n   */\n  hasAlpha() {\n    return !isNaN(this.alpha);\n  }\n\n  /**\n   * Returns a new HSVAColor object, based on the current color\n   *\n   * @returns {HSVAColor}\n   */\n  toObject() {\n    return new HSVAColor(this.hue, this.saturation, this.value, this.alpha);\n  }\n\n  /**\n   * Alias of toObject()\n   *\n   * @returns {HSVAColor}\n   */\n  toHsva() {\n    return this.toObject();\n  }\n\n  /**\n   * Returns a new HSVAColor object with the ratio values (from 0.0 to 1.0),\n   * based on the current color.\n   *\n   * @ignore\n   * @returns {HSVAColor}\n   */\n  toHsvaRatio() {\n    return new HSVAColor(\n      this.hue / 360,\n      this.saturation / 100,\n      this.value / 100,\n      this.alpha\n    );\n  }\n\n  /**\n   * Converts the current color to its string representation,\n   * using the internal format of this instance.\n   *\n   * @returns {String}\n   */\n  toString() {\n    return this.string();\n  }\n\n  /**\n   * Converts the current color to its string representation,\n   * using the given format.\n   *\n   * @param {String|null} format Format to convert to. If empty or null, the internal format will be used.\n   * @returns {String}\n   */\n  string(format = null) {\n    format = ColorItem.sanitizeFormat(format ? format : this.format);\n\n    if (!format) {\n      return this._color.round().string();\n    }\n\n    if (this._color[format] === undefined) {\n      throw new Error(`Unsupported color format: '${format}'`);\n    }\n\n    let str = this._color[format]();\n\n    return str.round ? str.round().string() : str;\n  }\n\n  /**\n   * Returns true if the given color values equals this one, false otherwise.\n   * The format is not compared.\n   * If any of the colors is invalid, the result will be false.\n   *\n   * @param {ColorItem|HSVAColor|QixColor|String|*|null} color Color data\n   *\n   * @returns {boolean}\n   */\n  equals(color) {\n    color = (color instanceof ColorItem) ? color : new ColorItem(color);\n\n    if (!color.isValid() || !this.isValid()) {\n      return false;\n    }\n\n    return (\n      this.hue === color.hue &&\n      this.saturation === color.saturation &&\n      this.value === color.value &&\n      this.alpha === color.alpha\n    );\n  }\n\n  /**\n   * Creates a copy of this instance\n   *\n   * @returns {ColorItem}\n   */\n  getClone() {\n    return new ColorItem(this._color, this.format);\n  }\n\n  /**\n   * Creates a copy of this instance, only copying the hue value,\n   * and setting the others to its max value.\n   *\n   * @returns {ColorItem}\n   */\n  getCloneHueOnly() {\n    return new ColorItem([this.hue, 100, 100, 1], this.format);\n  }\n\n  /**\n   * Creates a copy of this instance setting the alpha to the max.\n   *\n   * @returns {ColorItem}\n   */\n  getCloneOpaque() {\n    return new ColorItem(this._color.alpha(1), this.format);\n  }\n\n  /**\n   * Converts the color to a RGB string\n   *\n   * @returns {String}\n   */\n  toRgbString() {\n    return this.string('rgb');\n  }\n\n  /**\n   * Converts the color to a Hexadecimal string\n   *\n   * @returns {String}\n   */\n  toHexString() {\n    return this.string('hex');\n  }\n\n  /**\n   * Converts the color to a HSL string\n   *\n   * @returns {String}\n   */\n  toHslString() {\n    return this.string('hsl');\n  }\n\n  /**\n   * Returns true if the color is dark, false otherwhise.\n   * This is useful to decide a text color.\n   *\n   * @returns {boolean}\n   */\n  isDark() {\n    return this._color.isDark();\n  }\n\n  /**\n   * Returns true if the color is light, false otherwhise.\n   * This is useful to decide a text color.\n   *\n   * @returns {boolean}\n   */\n  isLight() {\n    return this._color.isLight();\n  }\n\n  /**\n   * Generates a list of colors using the given hue-based formula or the given array of hue values.\n   * Hue formulas can be extended using ColorItem.colorFormulas static property.\n   *\n   * @param {String|Number[]} formula Examples: 'complementary', 'triad', 'tetrad', 'splitcomplement', [180, 270]\n   * @example let colors = color.generate('triad');\n   * @example let colors = color.generate([45, 80, 112, 200]);\n   * @returns {ColorItem[]}\n   */\n  generate(formula) {\n    let hues = [];\n\n    if (Array.isArray(formula)) {\n      hues = formula;\n    } else if (!ColorItem.colorFormulas.hasOwnProperty(formula)) {\n      throw new Error(`No color formula found with the name '${formula}'.`);\n    } else {\n      hues = ColorItem.colorFormulas[formula];\n    }\n\n    let colors = [], mainColor = this._color, format = this.format;\n\n    hues.forEach(function (hue) {\n      let levels = [\n        hue ? ((mainColor.hue() + hue) % 360) : mainColor.hue(),\n        mainColor.saturationv(),\n        mainColor.value(),\n        mainColor.alpha()\n      ];\n\n      colors.push(new ColorItem(levels, format));\n    });\n\n    return colors;\n  }\n}\n\n/**\n * List of hue-based color formulas used by ColorItem.prototype.generate()\n *\n * @static\n * @type {{complementary: number[], triad: number[], tetrad: number[], splitcomplement: number[]}}\n */\nColorItem.colorFormulas = {\n  complementary: [180],\n  triad: [0, 120, 240],\n  tetrad: [0, 90, 180, 270],\n  splitcomplement: [0, 72, 216]\n};\n\nexport default ColorItem;\n\nexport {\n  HSVAColor,\n  ColorItem\n};\n","'use strict';\n/**\n * @module\n */\n\n// adjust these values accordingly to the sass vars\nlet sassVars = {\n  'bar_size_short': 16,\n  'base_margin': 6,\n  'columns': 6\n};\n\nlet sliderSize = (sassVars.bar_size_short * sassVars.columns) + (sassVars.base_margin * (sassVars.columns - 1));\n\n/**\n * Colorpicker default options\n */\nexport default {\n  /**\n   * Custom class to be added to the `.colorpicker-element` element\n   *\n   * @type {String|null}\n   * @default null\n   */\n  customClass: null,\n  /**\n   * Sets a initial color, ignoring the one from the element/input value or the data-color attribute.\n   *\n   * @type {(String|ColorItem|boolean)}\n   * @default false\n   */\n  color: false,\n  /**\n   * Fallback color to use when the given color is invalid.\n   * If false, the latest valid color will be used as a fallback.\n   *\n   * @type {String|ColorItem|boolean}\n   * @default false\n   */\n  fallbackColor: false,\n  /**\n   * Forces an specific color format. If 'auto', it will be automatically detected the first time only,\n   * but if null it will be always recalculated.\n   *\n   * Note that the ending 'a' of the format meaning \"alpha\" has currently no effect, meaning that rgb is the same as\n   * rgba excepting if the alpha channel is disabled (see useAlpha).\n   *\n   * @type {('rgb'|'hex'|'hsl'|'auto'|null)}\n   * @default 'auto'\n   */\n  format: 'auto',\n  /**\n   * Horizontal mode layout.\n   *\n   * If true, the hue and alpha channel bars will be rendered horizontally, above the saturation selector.\n   *\n   * @type {boolean}\n   * @default false\n   */\n  horizontal: false,\n  /**\n   * Forces to show the colorpicker as an inline element.\n   *\n   * Note that if there is no container specified, the inline element\n   * will be added to the body, so you may want to set the container option.\n   *\n   * @type {boolean}\n   * @default false\n   */\n  inline: false,\n  /**\n   * Container where the colorpicker is appended to in the DOM.\n   *\n   * If is a string (CSS selector), the colorpicker will be placed inside this container.\n   * If true, the `.colorpicker-element` element itself will be used as the container.\n   * If false, the document body is used as the container, unless it is a popover (in this case it is appended to the\n   * popover body instead).\n   *\n   * @type {String|boolean}\n   * @default false\n   */\n  container: false,\n  /**\n   * Bootstrap Popover options.\n   * The trigger, content and html options are always ignored.\n   *\n   * @type {boolean}\n   * @default Object\n   */\n  popover: {\n    animation: true,\n    placement: 'bottom',\n    fallbackPlacement: 'flip'\n  },\n  /**\n   * If true, loads the 'debugger' extension automatically, which logs the events in the console\n   * @type {boolean}\n   * @default false\n   */\n  debug: false,\n  /**\n   * Child CSS selector for the colorpicker input.\n   *\n   * @type {String}\n   * @default 'input'\n   */\n  input: 'input',\n  /**\n   * Child CSS selector for the colorpicker addon.\n   * If it exists, the child <i> element background will be changed on color change.\n   *\n   * @type {String}\n   * @default '.colorpicker-trigger, .colorpicker-input-addon'\n   */\n  addon: '.colorpicker-input-addon',\n  /**\n   * If true, the input content will be replaced always with a valid color,\n   * if false, the invalid color will be left in the input,\n   *   while the internal color object will still resolve into a valid one.\n   *\n   * @type {boolean}\n   * @default true\n   */\n  autoInputFallback: true,\n  /**\n   * If true, valid HEX3 colors will be converted to HEX6, even with\n   *    autoInputFallback set to false\n   * if false, HEX3 colors will not be converted to HEX6, when autoInputFallback is false\n   *    (this has been an issue, when using HEX6 colors with\n   *    autoInputFallback set to false, HEX3 colors were\n   *    automatically converting to HEX6)\n   *\n   * @type {boolean}\n   * @default false\n   */\n  autoHexInputFallback: true,\n  /**\n   * If true a hash will be prepended to hexadecimal colors.\n   * If false, the hash will be removed.\n   * This only affects the input values in hexadecimal format.\n   *\n   * @type {boolean}\n   * @default true\n   */\n  useHashPrefix: true,\n  /**\n   * If true, the alpha channel bar will be displayed no matter what.\n   *\n   * If false, it will be always hidden and alpha channel will be disabled also programmatically, meaning that\n   * the selected or typed color will be always opaque.\n   *\n   * If null, the alpha channel will be automatically disabled/enabled depending if the initial color format supports\n   * alpha or not.\n   *\n   * @type {boolean}\n   * @default true\n   */\n  useAlpha: true,\n  /**\n   * Colorpicker widget template\n   * @type {String}\n   * @example\n   * <!-- This is the default template: -->\n   * <div class=\"colorpicker\">\n   *   <div class=\"colorpicker-saturation\"><i class=\"colorpicker-guide\"></i></div>\n   *   <div class=\"colorpicker-hue\"><i class=\"colorpicker-guide\"></i></div>\n   *   <div class=\"colorpicker-alpha\">\n   *     <div class=\"colorpicker-alpha-color\"></div>\n   *     <i class=\"colorpicker-guide\"></i>\n   *   </div>\n   * </div>\n   */\n  template: `<div class=\"colorpicker\">\n      <div class=\"colorpicker-saturation\"><i class=\"colorpicker-guide\"></i></div>\n      <div class=\"colorpicker-hue\"><i class=\"colorpicker-guide\"></i></div>\n      <div class=\"colorpicker-alpha\">\n        <div class=\"colorpicker-alpha-color\"></div>\n        <i class=\"colorpicker-guide\"></i>\n      </div>\n    </div>`,\n  /**\n   *\n   * Associative object with the extension class name and its config.\n   * Colorpicker comes with many bundled extensions: debugger, palette, preview and swatches (a superset of palette).\n   *\n   * @type {Object[]}\n   * @example\n   *   extensions: [\n   *     {\n   *       name: 'swatches'\n   *       options: {\n   *         colors: {\n   *           'primary': '#337ab7',\n   *           'success': '#5cb85c',\n   *           'info': '#5bc0de',\n   *           'warning': '#f0ad4e',\n   *           'danger': '#d9534f'\n   *         },\n   *         namesAsValues: true\n   *       }\n   *     }\n   *   ]\n   */\n  extensions: [\n    {\n      name: 'preview',\n      options: {\n        showText: true\n      }\n    }\n  ],\n  /**\n   * Vertical sliders configuration\n   * @type {Object}\n   */\n  sliders: {\n    saturation: {\n      selector: '.colorpicker-saturation',\n      maxLeft: sliderSize,\n      maxTop: sliderSize,\n      callLeft: 'setSaturationRatio',\n      callTop: 'setValueRatio'\n    },\n    hue: {\n      selector: '.colorpicker-hue',\n      maxLeft: 0,\n      maxTop: sliderSize,\n      callLeft: false,\n      callTop: 'setHueRatio'\n    },\n    alpha: {\n      selector: '.colorpicker-alpha',\n      childSelector: '.colorpicker-alpha-color',\n      maxLeft: 0,\n      maxTop: sliderSize,\n      callLeft: false,\n      callTop: 'setAlphaRatio'\n    }\n  },\n  /**\n   * Horizontal sliders configuration\n   * @type {Object}\n   */\n  slidersHorz: {\n    saturation: {\n      selector: '.colorpicker-saturation',\n      maxLeft: sliderSize,\n      maxTop: sliderSize,\n      callLeft: 'setSaturationRatio',\n      callTop: 'setValueRatio'\n    },\n    hue: {\n      selector: '.colorpicker-hue',\n      maxLeft: sliderSize,\n      maxTop: 0,\n      callLeft: 'setHueRatio',\n      callTop: false\n    },\n    alpha: {\n      selector: '.colorpicker-alpha',\n      childSelector: '.colorpicker-alpha-color',\n      maxLeft: sliderSize,\n      maxTop: 0,\n      callLeft: 'setAlphaRatio',\n      callTop: false\n    }\n  }\n};\n","'use strict';\n\nimport Extension from 'Extension';\nimport $ from 'jquery';\n\nlet defaults = {\n  /**\n   * Key-value pairs defining a color alias and its CSS color representation.\n   *\n   * They can also be just an array of values. In that case, no special names are used, only the real colors.\n   *\n   * @type {Object|Array}\n   * @default null\n   * @example\n   *  {\n   *   'black': '#000000',\n   *   'white': '#ffffff',\n   *   'red': '#FF0000',\n   *   'default': '#777777',\n   *   'primary': '#337ab7',\n   *   'success': '#5cb85c',\n   *   'info': '#5bc0de',\n   *   'warning': '#f0ad4e',\n   *   'danger': '#d9534f'\n   *  }\n   *\n   * @example ['#f0ad4e', '#337ab7', '#5cb85c']\n   */\n  colors: null,\n  /**\n   * If true, when a color swatch is selected the name (alias) will be used as input value,\n   * otherwise the swatch real color value will be used.\n   *\n   * @type {boolean}\n   * @default true\n   */\n  namesAsValues: true\n};\n\n/**\n * Palette extension\n * @ignore\n */\nclass Palette extends Extension {\n\n  /**\n   * @returns {Object|Array}\n   */\n  get colors() {\n    return this.options.colors;\n  }\n\n  constructor(colorpicker, options = {}) {\n    super(colorpicker, $.extend(true, {}, defaults, options));\n\n    if ((!Array.isArray(this.options.colors)) && (typeof this.options.colors !== 'object')) {\n      this.options.colors = null;\n    }\n  }\n\n  /**\n   * @returns {int}\n   */\n  getLength() {\n    if (!this.options.colors) {\n      return 0;\n    }\n\n    if (Array.isArray(this.options.colors)) {\n      return this.options.colors.length;\n    }\n\n    if (typeof this.options.colors === 'object') {\n      return Object.keys(this.options.colors).length;\n    }\n\n    return 0;\n  }\n\n  resolveColor(color, realColor = true) {\n    if (this.getLength() <= 0) {\n      return false;\n    }\n\n    // Array of colors\n    if (Array.isArray(this.options.colors)) {\n      if (this.options.colors.indexOf(color) >= 0) {\n        return color;\n      }\n      if (this.options.colors.indexOf(color.toUpperCase()) >= 0) {\n        return color.toUpperCase();\n      }\n      if (this.options.colors.indexOf(color.toLowerCase()) >= 0) {\n        return color.toLowerCase();\n      }\n      return false;\n    }\n\n    if (typeof this.options.colors !== 'object') {\n      return false;\n    }\n\n    // Map of objects\n    if (!this.options.namesAsValues || realColor) {\n      return this.getValue(color, false);\n    }\n    return this.getName(color, this.getName('#' + color));\n  }\n\n  /**\n   * Given a color value, returns the corresponding color name or defaultValue.\n   *\n   * @param {String} value\n   * @param {*} defaultValue\n   * @returns {*}\n   */\n  getName(value, defaultValue = false) {\n    if (!(typeof value === 'string') || !this.options.colors) {\n      return defaultValue;\n    }\n    for (let name in this.options.colors) {\n      if (!this.options.colors.hasOwnProperty(name)) {\n        continue;\n      }\n      if (this.options.colors[name].toLowerCase() === value.toLowerCase()) {\n        return name;\n      }\n    }\n    return defaultValue;\n  }\n\n  /**\n   * Given a color name, returns the corresponding color value or defaultValue.\n   *\n   * @param {String} name\n   * @param {*} defaultValue\n   * @returns {*}\n   */\n  getValue(name, defaultValue = false) {\n    if (!(typeof name === 'string') || !this.options.colors) {\n      return defaultValue;\n    }\n    if (this.options.colors.hasOwnProperty(name)) {\n      return this.options.colors[name];\n    }\n    return defaultValue;\n  }\n}\n\nexport default Palette;\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","/* MIT license */\nvar cssKeywords = require('color-name');\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n//       values that give correct `typeof` results).\n//       do not use box values types (i.e. Number(), String(), etc.)\n\nvar reverseKeywords = {};\nfor (var key in cssKeywords) {\n\tif (cssKeywords.hasOwnProperty(key)) {\n\t\treverseKeywords[cssKeywords[key]] = key;\n\t}\n}\n\nvar convert = module.exports = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\n// hide .channels and .labels properties\nfor (var model in convert) {\n\tif (convert.hasOwnProperty(model)) {\n\t\tif (!('channels' in convert[model])) {\n\t\t\tthrow new Error('missing channels property: ' + model);\n\t\t}\n\n\t\tif (!('labels' in convert[model])) {\n\t\t\tthrow new Error('missing channel labels property: ' + model);\n\t\t}\n\n\t\tif (convert[model].labels.length !== convert[model].channels) {\n\t\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t\t}\n\n\t\tvar channels = convert[model].channels;\n\t\tvar labels = convert[model].labels;\n\t\tdelete convert[model].channels;\n\t\tdelete convert[model].labels;\n\t\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\t\tObject.defineProperty(convert[model], 'labels', {value: labels});\n\t}\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar min = Math.min(r, g, b);\n\tvar max = Math.max(r, g, b);\n\tvar delta = max - min;\n\tvar h;\n\tvar s;\n\tvar l;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tl = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tvar rdif;\n\tvar gdif;\n\tvar bdif;\n\tvar h;\n\tvar s;\n\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar v = Math.max(r, g, b);\n\tvar diff = v - Math.min(r, g, b);\n\tvar diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = s = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tvar r = rgb[0];\n\tvar g = rgb[1];\n\tvar b = rgb[2];\n\tvar h = convert.rgb.hsl(rgb)[0];\n\tvar w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar c;\n\tvar m;\n\tvar y;\n\tvar k;\n\n\tk = Math.min(1 - r, 1 - g, 1 - b);\n\tc = (1 - r - k) / (1 - k) || 0;\n\tm = (1 - g - k) / (1 - k) || 0;\n\ty = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\n/**\n * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n * */\nfunction comparativeDistance(x, y) {\n\treturn (\n\t\tMath.pow(x[0] - y[0], 2) +\n\t\tMath.pow(x[1] - y[1], 2) +\n\t\tMath.pow(x[2] - y[2], 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tvar reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tvar currentClosestDistance = Infinity;\n\tvar currentClosestKeyword;\n\n\tfor (var keyword in cssKeywords) {\n\t\tif (cssKeywords.hasOwnProperty(keyword)) {\n\t\t\tvar value = cssKeywords[keyword];\n\n\t\t\t// Compute comparative distance\n\t\t\tvar distance = comparativeDistance(rgb, value);\n\n\t\t\t// Check if its less, if so set as closest\n\t\t\tif (distance < currentClosestDistance) {\n\t\t\t\tcurrentClosestDistance = distance;\n\t\t\t\tcurrentClosestKeyword = keyword;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\n\t// assume sRGB\n\tr = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\n\n\tvar x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tvar y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tvar z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tvar xyz = convert.rgb.xyz(rgb);\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tvar h = hsl[0] / 360;\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar t1;\n\tvar t2;\n\tvar t3;\n\tvar rgb;\n\tvar val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tt1 = 2 * l - t2;\n\n\trgb = [0, 0, 0];\n\tfor (var i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tvar h = hsl[0];\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar smin = s;\n\tvar lmin = Math.max(l, 0.01);\n\tvar sv;\n\tvar v;\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tv = (l + s) / 2;\n\tsv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tvar h = hsv[0] / 60;\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar hi = Math.floor(h) % 6;\n\n\tvar f = h - Math.floor(h);\n\tvar p = 255 * v * (1 - s);\n\tvar q = 255 * v * (1 - (s * f));\n\tvar t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tvar h = hsv[0];\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar vmin = Math.max(v, 0.01);\n\tvar lmin;\n\tvar sl;\n\tvar l;\n\n\tl = (2 - s) * v;\n\tlmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tvar h = hwb[0] / 360;\n\tvar wh = hwb[1] / 100;\n\tvar bl = hwb[2] / 100;\n\tvar ratio = wh + bl;\n\tvar i;\n\tvar v;\n\tvar f;\n\tvar n;\n\n\t// wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\ti = Math.floor(6 * h);\n\tv = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tn = wh + f * (v - wh); // linear interpolation\n\n\tvar r;\n\tvar g;\n\tvar b;\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tvar c = cmyk[0] / 100;\n\tvar m = cmyk[1] / 100;\n\tvar y = cmyk[2] / 100;\n\tvar k = cmyk[3] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = 1 - Math.min(1, c * (1 - k) + k);\n\tg = 1 - Math.min(1, m * (1 - k) + k);\n\tb = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tvar x = xyz[0] / 100;\n\tvar y = xyz[1] / 100;\n\tvar z = xyz[2] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar x;\n\tvar y;\n\tvar z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tvar y2 = Math.pow(y, 3);\n\tvar x2 = Math.pow(x, 3);\n\tvar z2 = Math.pow(z, 3);\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar hr;\n\tvar h;\n\tvar c;\n\n\thr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tc = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tvar l = lch[0];\n\tvar c = lch[1];\n\tvar h = lch[2];\n\tvar a;\n\tvar b;\n\tvar hr;\n\n\thr = h / 360 * 2 * Math.PI;\n\ta = c * Math.cos(hr);\n\tb = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\tvar value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tvar ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\n\t// we use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tvar ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tvar color = args % 10;\n\n\t// handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tvar mult = (~~(args > 50) + 1) * 0.5;\n\tvar r = ((color & 1) * mult) * 255;\n\tvar g = (((color >> 1) & 1) * mult) * 255;\n\tvar b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// handle greyscale\n\tif (args >= 232) {\n\t\tvar c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tvar rem;\n\tvar r = Math.floor(args / 36) / 5 * 255;\n\tvar g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tvar b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tvar integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tvar match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tvar colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(function (char) {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tvar integer = parseInt(colorString, 16);\n\tvar r = (integer >> 16) & 0xFF;\n\tvar g = (integer >> 8) & 0xFF;\n\tvar b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar max = Math.max(Math.max(r, g), b);\n\tvar min = Math.min(Math.min(r, g), b);\n\tvar chroma = (max - min);\n\tvar grayscale;\n\tvar hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma + 4;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar c = 1;\n\tvar f = 0;\n\n\tif (l < 0.5) {\n\t\tc = 2.0 * s * l;\n\t} else {\n\t\tc = 2.0 * s * (1.0 - l);\n\t}\n\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\n\tvar c = s * v;\n\tvar f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tvar h = hcg[0] / 360;\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tvar pure = [0, 0, 0];\n\tvar hi = (h % 1) * 6;\n\tvar v = hi % 1;\n\tvar w = 1 - v;\n\tvar mg = 0;\n\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar v = c + g * (1.0 - c);\n\tvar f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar l = g * (1.0 - c) + 0.5 * c;\n\tvar s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\tvar v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tvar w = hwb[1] / 100;\n\tvar b = hwb[2] / 100;\n\tvar v = 1 - b;\n\tvar c = v - w;\n\tvar g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = convert.gray.hsv = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tvar val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tvar integer = (val << 16) + (val << 8) + val;\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tvar val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n","'use strict';\n\nimport Colorpicker from './Colorpicker';\nimport $ from 'jquery';\n\nlet plugin = 'colorpicker';\n\n$[plugin] = Colorpicker;\n\n// Colorpicker jQuery Plugin API\n$.fn[plugin] = function (option) {\n  let fnArgs = Array.prototype.slice.call(arguments, 1),\n    isSingleElement = (this.length === 1),\n    returnValue = null;\n\n  let $elements = this.each(function () {\n    let $this = $(this),\n      inst = $this.data(plugin),\n      options = ((typeof option === 'object') ? option : {});\n\n    // Create instance if does not exist\n    if (!inst) {\n      inst = new Colorpicker(this, options);\n      $this.data(plugin, inst);\n    }\n\n    if (!isSingleElement) {\n      return;\n    }\n\n    returnValue = $this;\n\n    if (typeof option === 'string') {\n      if (option === 'colorpicker') {\n        // Return colorpicker instance: e.g. .colorpicker('colorpicker')\n        returnValue = inst;\n      } else if ($.isFunction(inst[option])) {\n        // Return method call return value: e.g. .colorpicker('isEnabled')\n        returnValue = inst[option].apply(inst, fnArgs);\n      } else {\n        // Return property value: e.g. .colorpicker('element')\n        returnValue = inst[option];\n      }\n    }\n  });\n\n  return isSingleElement ? returnValue : $elements;\n};\n\n$.fn[plugin].constructor = Colorpicker;\n","'use strict';\n\nimport Extension from './Extension';\nimport defaults from './options';\nimport coreExtensions from 'extensions';\nimport $ from 'jquery';\nimport SliderHandler from './SliderHandler';\nimport PopupHandler from './PopupHandler';\nimport InputHandler from './InputHandler';\nimport ColorHandler from './ColorHandler';\nimport PickerHandler from './PickerHandler';\nimport AddonHandler from './AddonHandler';\nimport ColorItem from './ColorItem';\n\nlet colorPickerIdCounter = 0;\n\nlet root = (typeof self !== 'undefined' ? self : this); // window\n\n/**\n * Colorpicker widget class\n */\nclass Colorpicker {\n  /**\n   * Color class\n   *\n   * @static\n   * @type {Color}\n   */\n  static get Color() {\n    return ColorItem;\n  }\n\n  /**\n   * Extension class\n   *\n   * @static\n   * @type {Extension}\n   */\n  static get Extension() {\n    return Extension;\n  }\n\n  /**\n   * Internal color object\n   *\n   * @type {Color|null}\n   */\n  get color() {\n    return this.colorHandler.color;\n  }\n\n  /**\n   * Internal color format\n   *\n   * @type {String|null}\n   */\n  get format() {\n    return this.colorHandler.format;\n  }\n\n  /**\n   * Getter of the picker element\n   *\n   * @returns {jQuery|HTMLElement}\n   */\n  get picker() {\n    return this.pickerHandler.picker;\n  }\n\n  /**\n   * @fires Colorpicker#colorpickerCreate\n   * @param {Object|String} element\n   * @param {Object} options\n   * @constructor\n   */\n  constructor(element, options) {\n    colorPickerIdCounter += 1;\n    /**\n     * The colorpicker instance number\n     * @type {number}\n     */\n    this.id = colorPickerIdCounter;\n\n    /**\n     * Latest colorpicker event\n     *\n     * @type {{name: String, e: *}}\n     */\n    this.lastEvent = {\n      alias: null,\n      e: null\n    };\n\n    /**\n     * The element that the colorpicker is bound to\n     *\n     * @type {*|jQuery}\n     */\n    this.element = $(element)\n      .addClass('colorpicker-element')\n      .attr('data-colorpicker-id', this.id);\n\n    /**\n     * @type {defaults}\n     */\n    this.options = $.extend(true, {}, defaults, options, this.element.data());\n\n    /**\n     * @type {boolean}\n     * @private\n     */\n    this.disabled = false;\n\n    /**\n     * Extensions added to this instance\n     *\n     * @type {Extension[]}\n     */\n    this.extensions = [];\n\n    /**\n     * The element where the\n     * @type {*|jQuery}\n     */\n    this.container = (\n      this.options.container === true ||\n      (this.options.container !== true && this.options.inline === true)\n    ) ? this.element : this.options.container;\n\n    this.container = (this.container !== false) ? $(this.container) : false;\n\n    /**\n     * @type {InputHandler}\n     */\n    this.inputHandler = new InputHandler(this);\n    /**\n     * @type {ColorHandler}\n     */\n    this.colorHandler = new ColorHandler(this);\n    /**\n     * @type {SliderHandler}\n     */\n    this.sliderHandler = new SliderHandler(this);\n    /**\n     * @type {PopupHandler}\n     */\n    this.popupHandler = new PopupHandler(this, root);\n    /**\n     * @type {PickerHandler}\n     */\n    this.pickerHandler = new PickerHandler(this);\n    /**\n     * @type {AddonHandler}\n     */\n    this.addonHandler = new AddonHandler(this);\n\n    this.init();\n\n    // Emit a create event\n    $($.proxy(function () {\n      /**\n       * (Colorpicker) When the Colorpicker instance has been created and the DOM is ready.\n       *\n       * @event Colorpicker#colorpickerCreate\n       */\n      this.trigger('colorpickerCreate');\n    }, this));\n  }\n\n  /**\n   * Initializes the plugin\n   * @private\n   */\n  init() {\n    // Init addon\n    this.addonHandler.bind();\n\n    // Init input\n    this.inputHandler.bind();\n\n    // Init extensions (before initializing the color)\n    this.initExtensions();\n\n    // Init color\n    this.colorHandler.bind();\n\n    // Init picker\n    this.pickerHandler.bind();\n\n    // Init sliders and popup\n    this.sliderHandler.bind();\n    this.popupHandler.bind();\n\n    // Inject into the DOM (this may make it visible)\n    this.pickerHandler.attach();\n\n    // Update all components\n    this.update();\n\n    if (this.inputHandler.isDisabled()) {\n      this.disable();\n    }\n  }\n\n  /**\n   * Initializes the plugin extensions\n   * @private\n   */\n  initExtensions() {\n    if (!Array.isArray(this.options.extensions)) {\n      this.options.extensions = [];\n    }\n\n    if (this.options.debug) {\n      this.options.extensions.push({name: 'debugger'});\n    }\n\n    // Register and instantiate extensions\n    this.options.extensions.forEach((ext) => {\n      this.registerExtension(Colorpicker.extensions[ext.name.toLowerCase()], ext.options || {});\n    });\n  }\n\n  /**\n   * Creates and registers the given extension\n   *\n   * @param {Extension} ExtensionClass The extension class to instantiate\n   * @param {Object} [config] Extension configuration\n   * @returns {Extension}\n   */\n  registerExtension(ExtensionClass, config = {}) {\n    let ext = new ExtensionClass(this, config);\n\n    this.extensions.push(ext);\n    return ext;\n  }\n\n  /**\n   * Destroys the current instance\n   *\n   * @fires Colorpicker#colorpickerDestroy\n   */\n  destroy() {\n    let color = this.color;\n\n    this.sliderHandler.unbind();\n    this.inputHandler.unbind();\n    this.popupHandler.unbind();\n    this.colorHandler.unbind();\n    this.addonHandler.unbind();\n    this.pickerHandler.unbind();\n\n    this.element\n      .removeClass('colorpicker-element')\n      .removeData('colorpicker')\n      .removeData('color')\n      .off('.colorpicker');\n\n    /**\n     * (Colorpicker) When the instance is destroyed with all events unbound.\n     *\n     * @event Colorpicker#colorpickerDestroy\n     */\n    this.trigger('colorpickerDestroy', color);\n  }\n\n  /**\n   * Shows the colorpicker widget if hidden.\n   * If the colorpicker is disabled this call will be ignored.\n   *\n   * @fires Colorpicker#colorpickerShow\n   * @param {Event} [e]\n   */\n  show(e) {\n    this.popupHandler.show(e);\n  }\n\n  /**\n   * Hides the colorpicker widget.\n   *\n   * @fires Colorpicker#colorpickerHide\n   * @param {Event} [e]\n   */\n  hide(e) {\n    this.popupHandler.hide(e);\n  }\n\n  /**\n   * Toggles the colorpicker between visible and hidden.\n   *\n   * @fires Colorpicker#colorpickerShow\n   * @fires Colorpicker#colorpickerHide\n   * @param {Event} [e]\n   */\n  toggle(e) {\n    this.popupHandler.toggle(e);\n  }\n\n  /**\n   * Returns the current color value as string\n   *\n   * @param {String|*} [defaultValue]\n   * @returns {String|*}\n   */\n  getValue(defaultValue = null) {\n    let val = this.colorHandler.color;\n\n    val = (val instanceof ColorItem) ? val : defaultValue;\n\n    if (val instanceof ColorItem) {\n      return val.string(this.format);\n    }\n\n    return val;\n  }\n\n  /**\n   * Sets the color manually\n   *\n   * @fires Colorpicker#colorpickerChange\n   * @param {String|Color} val\n   */\n  setValue(val) {\n    if (this.isDisabled()) {\n      return;\n    }\n    let ch = this.colorHandler;\n\n    if (\n      (ch.hasColor() && !!val && ch.color.equals(val)) ||\n      (!ch.hasColor() && !val)\n    ) {\n      // same color or still empty\n      return;\n    }\n\n    ch.color = val ? ch.createColor(val, this.options.autoInputFallback, this.options.autoHexInputFallback) : null;\n\n    /**\n     * (Colorpicker) When the color is set programmatically with setValue().\n     *\n     * @event Colorpicker#colorpickerChange\n     */\n    this.trigger('colorpickerChange', ch.color, val);\n\n    // force update if color has changed to empty\n    this.update();\n  }\n\n  /**\n   * Updates the UI and the input color according to the internal color.\n   *\n   * @fires Colorpicker#colorpickerUpdate\n   */\n  update() {\n    if (this.colorHandler.hasColor()) {\n      this.inputHandler.update();\n    } else {\n      this.colorHandler.assureColor();\n    }\n\n    this.addonHandler.update();\n    this.pickerHandler.update();\n\n    /**\n     * (Colorpicker) Fired when the widget is updated.\n     *\n     * @event Colorpicker#colorpickerUpdate\n     */\n    this.trigger('colorpickerUpdate');\n  }\n\n  /**\n   * Enables the widget and the input if any\n   *\n   * @fires Colorpicker#colorpickerEnable\n   * @returns {boolean}\n   */\n  enable() {\n    this.inputHandler.enable();\n    this.disabled = false;\n    this.picker.removeClass('colorpicker-disabled');\n\n    /**\n     * (Colorpicker) When the widget has been enabled.\n     *\n     * @event Colorpicker#colorpickerEnable\n     */\n    this.trigger('colorpickerEnable');\n    return true;\n  }\n\n  /**\n   * Disables the widget and the input if any\n   *\n   * @fires Colorpicker#colorpickerDisable\n   * @returns {boolean}\n   */\n  disable() {\n    this.inputHandler.disable();\n    this.disabled = true;\n    this.picker.addClass('colorpicker-disabled');\n\n    /**\n     * (Colorpicker) When the widget has been disabled.\n     *\n     * @event Colorpicker#colorpickerDisable\n     */\n    this.trigger('colorpickerDisable');\n    return true;\n  }\n\n  /**\n   * Returns true if this instance is enabled\n   * @returns {boolean}\n   */\n  isEnabled() {\n    return !this.isDisabled();\n  }\n\n  /**\n   * Returns true if this instance is disabled\n   * @returns {boolean}\n   */\n  isDisabled() {\n    return this.disabled === true;\n  }\n\n  /**\n   * Triggers a Colorpicker event.\n   *\n   * @param eventName\n   * @param color\n   * @param value\n   */\n  trigger(eventName, color = null, value = null) {\n    this.element.trigger({\n      type: eventName,\n      colorpicker: this,\n      color: color ? color : this.color,\n      value: value ? value : this.getValue()\n    });\n  }\n}\n\n/**\n * Colorpicker extension classes, indexed by extension name\n *\n * @static\n * @type {Object} a map between the extension name and its class\n */\nColorpicker.extensions = coreExtensions;\n\nexport default Colorpicker;\n","import Debugger from './Debugger';\nimport Preview from './Preview';\nimport Swatches from './Swatches';\nimport Palette from './Palette';\n\nexport {\n  Debugger, Preview, Swatches, Palette\n};\n\nexport default {\n  'debugger': Debugger,\n  'preview': Preview,\n  'swatches': Swatches,\n  'palette': Palette\n};\n","'use strict';\n\nimport Extension from 'Extension';\nimport $ from 'jquery';\n\n/**\n * Debugger extension class\n * @alias DebuggerExtension\n * @ignore\n */\nclass Debugger extends Extension {\n  constructor(colorpicker, options = {}) {\n    super(colorpicker, options);\n\n    /**\n     * @type {number}\n     */\n    this.eventCounter = 0;\n    if (this.colorpicker.inputHandler.hasInput()) {\n      this.colorpicker.inputHandler.input.on('change.colorpicker-ext', $.proxy(this.onChangeInput, this));\n    }\n  }\n\n  /**\n   * @fires DebuggerExtension#colorpickerDebug\n   * @param {string} eventName\n   * @param {*} args\n   */\n  log(eventName, ...args) {\n    this.eventCounter += 1;\n\n    let logMessage = `#${this.eventCounter}: Colorpicker#${this.colorpicker.id} [${eventName}]`;\n\n    console.debug(logMessage, ...args);\n\n    /**\n     * Whenever the debugger logs an event, this other event is emitted.\n     *\n     * @event DebuggerExtension#colorpickerDebug\n     * @type {object} The event object\n     * @property {Colorpicker} colorpicker The Colorpicker instance\n     * @property {ColorItem} color The color instance\n     * @property {{debugger: DebuggerExtension, eventName: String, logArgs: Array, logMessage: String}} debug\n     *  The debug info\n     */\n    this.colorpicker.element.trigger({\n      type: 'colorpickerDebug',\n      colorpicker: this.colorpicker,\n      color: this.color,\n      value: null,\n      debug: {\n        debugger: this,\n        eventName: eventName,\n        logArgs: args,\n        logMessage: logMessage\n      }\n    });\n  }\n\n  resolveColor(color, realColor = true) {\n    this.log('resolveColor()', color, realColor);\n    return false;\n  }\n\n  onCreate(event) {\n    this.log('colorpickerCreate');\n    return super.onCreate(event);\n  }\n\n  onDestroy(event) {\n    this.log('colorpickerDestroy');\n    this.eventCounter = 0;\n\n    if (this.colorpicker.inputHandler.hasInput()) {\n      this.colorpicker.inputHandler.input.off('.colorpicker-ext');\n    }\n\n    return super.onDestroy(event);\n  }\n\n  onUpdate(event) {\n    this.log('colorpickerUpdate');\n  }\n\n  /**\n   * @listens Colorpicker#change\n   * @param {Event} event\n   */\n  onChangeInput(event) {\n    this.log('input:change.colorpicker', event.value, event.color);\n  }\n\n  onChange(event) {\n    this.log('colorpickerChange', event.value, event.color);\n  }\n\n  onInvalid(event) {\n    this.log('colorpickerInvalid', event.value, event.color);\n  }\n\n  onHide(event) {\n    this.log('colorpickerHide');\n    this.eventCounter = 0;\n  }\n\n  onShow(event) {\n    this.log('colorpickerShow');\n  }\n\n  onDisable(event) {\n    this.log('colorpickerDisable');\n  }\n\n  onEnable(event) {\n    this.log('colorpickerEnable');\n  }\n}\n\nexport default Debugger;\n","'use strict';\n\nimport Extension from 'Extension';\nimport $ from 'jquery';\n\n/**\n * Color preview extension\n * @ignore\n */\nclass Preview extends Extension {\n  constructor(colorpicker, options = {}) {\n    super(colorpicker, $.extend(true, {},\n      {\n        template: '<div class=\"colorpicker-bar colorpicker-preview\"><div /></div>',\n        showText: true,\n        format: colorpicker.format\n      },\n      options\n    ));\n\n    this.element = $(this.options.template);\n    this.elementInner = this.element.find('div');\n  }\n\n  onCreate(event) {\n    super.onCreate(event);\n    this.colorpicker.picker.append(this.element);\n  }\n\n  onUpdate(event) {\n    super.onUpdate(event);\n\n    if (!event.color) {\n      this.elementInner\n        .css('backgroundColor', null)\n        .css('color', null)\n        .html('');\n      return;\n    }\n\n    this.elementInner\n      .css('backgroundColor', event.color.toRgbString());\n\n    if (this.options.showText) {\n      this.elementInner\n        .html(event.color.string(this.options.format || this.colorpicker.format));\n\n      if (event.color.isDark() && (event.color.alpha > 0.5)) {\n        this.elementInner.css('color', 'white');\n      } else {\n        this.elementInner.css('color', 'black');\n      }\n    }\n  }\n}\n\nexport default Preview;\n","'use strict';\n\nimport Palette from './Palette';\nimport $ from 'jquery';\n\nlet defaults = {\n  barTemplate: `<div class=\"colorpicker-bar colorpicker-swatches\">\n                    <div class=\"colorpicker-swatches--inner\"></div>\n                </div>`,\n  swatchTemplate: '<i class=\"colorpicker-swatch\"><i class=\"colorpicker-swatch--inner\"></i></i>'\n};\n\n/**\n * Color swatches extension\n * @ignore\n */\nclass Swatches extends Palette {\n  constructor(colorpicker, options = {}) {\n    super(colorpicker, $.extend(true, {}, defaults, options));\n    this.element = null;\n  }\n\n  isEnabled() {\n    return this.getLength() > 0;\n  }\n\n  onCreate(event) {\n    super.onCreate(event);\n\n    if (!this.isEnabled()) {\n      return;\n    }\n\n    this.element = $(this.options.barTemplate);\n    this.load();\n    this.colorpicker.picker.append(this.element);\n  }\n\n  load() {\n    let colorpicker = this.colorpicker,\n      swatchContainer = this.element.find('.colorpicker-swatches--inner'),\n      isAliased = (this.options.namesAsValues === true) && !Array.isArray(this.colors);\n\n    swatchContainer.empty();\n\n    $.each(this.colors, (name, value) => {\n      let $swatch = $(this.options.swatchTemplate)\n        .attr('data-name', name)\n        .attr('data-value', value)\n        .attr('title', isAliased ? `${name}: ${value}` : value)\n        .on('mousedown.colorpicker touchstart.colorpicker',\n          function (e) {\n            let $sw = $(this);\n\n            // e.preventDefault();\n\n            colorpicker.setValue(isAliased ? $sw.attr('data-name') : $sw.attr('data-value'));\n          }\n        );\n\n      $swatch.find('.colorpicker-swatch--inner')\n        .css('background-color', value);\n\n      swatchContainer.append($swatch);\n    });\n\n    swatchContainer.append($('<i class=\"colorpicker-clear\"></i>'));\n  }\n}\n\nexport default Swatches;\n","'use strict';\n\nimport $ from 'jquery';\n\n/**\n * Class that handles all configured sliders on mouse or touch events.\n * @ignore\n */\nclass SliderHandler {\n  /**\n   * @param {Colorpicker} colorpicker\n   */\n  constructor(colorpicker) {\n    /**\n     * @type {Colorpicker}\n     */\n    this.colorpicker = colorpicker;\n    /**\n     * @type {*|String}\n     * @private\n     */\n    this.currentSlider = null;\n    /**\n     * @type {{left: number, top: number}}\n     * @private\n     */\n    this.mousePointer = {\n      left: 0,\n      top: 0\n    };\n\n    /**\n     * @type {Function}\n     */\n    this.onMove = $.proxy(this.defaultOnMove, this);\n  }\n\n  /**\n   * This function is called every time a slider guide is moved\n   * The scope of \"this\" is the SliderHandler object.\n   *\n   * @param {int} top\n   * @param {int} left\n   */\n  defaultOnMove(top, left) {\n    if (!this.currentSlider) {\n      return;\n    }\n\n    let slider = this.currentSlider, cp = this.colorpicker, ch = cp.colorHandler;\n\n    // Create a color object\n    let color = !ch.hasColor() ? ch.getFallbackColor() : ch.color.getClone();\n\n    // Adjust the guide position\n    slider.guideStyle.left = left + 'px';\n    slider.guideStyle.top = top + 'px';\n\n    // Adjust the color\n    if (slider.callLeft) {\n      color[slider.callLeft](left / slider.maxLeft);\n    }\n    if (slider.callTop) {\n      color[slider.callTop](top / slider.maxTop);\n    }\n\n    // Set the new color\n    cp.setValue(color);\n    cp.popupHandler.focus();\n  }\n\n  /**\n   * Binds the colorpicker sliders to the mouse/touch events\n   */\n  bind() {\n    let sliders = this.colorpicker.options.horizontal ? this.colorpicker\n      .options.slidersHorz : this.colorpicker.options.sliders;\n\n    let sliderClasses = [];\n\n    for (let sliderName in sliders) {\n      if (!sliders.hasOwnProperty(sliderName)) {\n        continue;\n      }\n\n      sliderClasses.push(sliders[sliderName].selector);\n    }\n\n    this.colorpicker.picker.find(sliderClasses.join(', '))\n      .on('mousedown.colorpicker touchstart.colorpicker', $.proxy(this.pressed, this));\n  }\n\n  /**\n   * Unbinds any event bound by this handler\n   */\n  unbind() {\n    $(this.colorpicker.picker).off({\n      'mousemove.colorpicker': $.proxy(this.moved, this),\n      'touchmove.colorpicker': $.proxy(this.moved, this),\n      'mouseup.colorpicker': $.proxy(this.released, this),\n      'touchend.colorpicker': $.proxy(this.released, this)\n    });\n  }\n\n  /**\n   * Function triggered when clicking in one of the color adjustment bars\n   *\n   * @private\n   * @fires Colorpicker#mousemove\n   * @param {Event} e\n   */\n  pressed(e) {\n    if (this.colorpicker.isDisabled()) {\n      return;\n    }\n    this.colorpicker.lastEvent.alias = 'pressed';\n    this.colorpicker.lastEvent.e = e;\n\n    if (!e.pageX && !e.pageY && e.originalEvent && e.originalEvent.touches) {\n      e.pageX = e.originalEvent.touches[0].pageX;\n      e.pageY = e.originalEvent.touches[0].pageY;\n    }\n    // e.stopPropagation();\n    // e.preventDefault();\n\n    let target = $(e.target);\n\n    // detect the slider and set the limits and callbacks\n    let zone = target.closest('div');\n\n    let sliders = this.colorpicker.options.horizontal ? this.colorpicker\n      .options.slidersHorz : this.colorpicker.options.sliders;\n\n    if (zone.is('.colorpicker')) {\n      return;\n    }\n\n    this.currentSlider = null;\n\n    for (let sliderName in sliders) {\n      if (!sliders.hasOwnProperty(sliderName)) {\n        continue;\n      }\n\n      let slider = sliders[sliderName];\n\n      if (zone.is(slider.selector)) {\n        this.currentSlider = $.extend({}, slider, {name: sliderName});\n        break;\n      } else if (slider.childSelector !== undefined && zone.is(slider.childSelector)) {\n        this.currentSlider = $.extend({}, slider, {name: sliderName});\n        zone = zone.parent(); // zone.parents(slider.selector).first() ?\n        break;\n      }\n    }\n\n    let guide = zone.find('.colorpicker-guide').get(0);\n\n    if (this.currentSlider === null || guide === null) {\n      return;\n    }\n\n    let offset = zone.offset();\n\n    // reference to guide's style\n    this.currentSlider.guideStyle = guide.style;\n    this.currentSlider.left = e.pageX - offset.left;\n    this.currentSlider.top = e.pageY - offset.top;\n    this.mousePointer = {\n      left: e.pageX,\n      top: e.pageY\n    };\n\n    // TODO: fix moving outside the picker makes the guides to keep moving. The event needs to be bound to the window.\n    /**\n     * (window.document) Triggered on mousedown for the document object,\n     * so the color adjustment guide is moved to the clicked position.\n     *\n     * @event Colorpicker#mousemove\n     */\n    $(this.colorpicker.picker).on({\n      'mousemove.colorpicker': $.proxy(this.moved, this),\n      'touchmove.colorpicker': $.proxy(this.moved, this),\n      'mouseup.colorpicker': $.proxy(this.released, this),\n      'touchend.colorpicker': $.proxy(this.released, this)\n    }).trigger('mousemove');\n  }\n\n  /**\n   * Function triggered when dragging a guide inside one of the color adjustment bars.\n   *\n   * @private\n   * @param {Event} e\n   */\n  moved(e) {\n    this.colorpicker.lastEvent.alias = 'moved';\n    this.colorpicker.lastEvent.e = e;\n\n    if (!e.pageX && !e.pageY && e.originalEvent && e.originalEvent.touches) {\n      e.pageX = e.originalEvent.touches[0].pageX;\n      e.pageY = e.originalEvent.touches[0].pageY;\n    }\n\n    // e.stopPropagation();\n    e.preventDefault(); // prevents scrolling on mobile\n\n    let left = Math.max(\n      0,\n      Math.min(\n        this.currentSlider.maxLeft,\n        this.currentSlider.left + ((e.pageX || this.mousePointer.left) - this.mousePointer.left)\n      )\n    );\n\n    let top = Math.max(\n      0,\n      Math.min(\n        this.currentSlider.maxTop,\n        this.currentSlider.top + ((e.pageY || this.mousePointer.top) - this.mousePointer.top)\n      )\n    );\n\n    this.onMove(top, left);\n  }\n\n  /**\n   * Function triggered when releasing the click in one of the color adjustment bars.\n   *\n   * @private\n   * @param {Event} e\n   */\n  released(e) {\n    this.colorpicker.lastEvent.alias = 'released';\n    this.colorpicker.lastEvent.e = e;\n\n    // e.stopPropagation();\n    // e.preventDefault();\n\n    $(this.colorpicker.picker).off({\n      'mousemove.colorpicker': this.moved,\n      'touchmove.colorpicker': this.moved,\n      'mouseup.colorpicker': this.released,\n      'touchend.colorpicker': this.released\n    });\n  }\n}\n\nexport default SliderHandler;\n","'use strict';\n\nimport $ from 'jquery';\nimport _defaults from './options';\n\n/**\n * Handles everything related to the UI of the colorpicker popup: show, hide, position,...\n * @ignore\n */\nclass PopupHandler {\n  /**\n   * @param {Colorpicker} colorpicker\n   * @param {Window} root\n   */\n  constructor(colorpicker, root) {\n    /**\n     * @type {Window}\n     */\n    this.root = root;\n    /**\n     * @type {Colorpicker}\n     */\n    this.colorpicker = colorpicker;\n    /**\n     * @type {jQuery}\n     */\n    this.popoverTarget = null;\n    /**\n     * @type {jQuery}\n     */\n    this.popoverTip = null;\n\n    /**\n     * If true, the latest click was inside the popover\n     * @type {boolean}\n     */\n    this.clicking = false;\n    /**\n     * @type {boolean}\n     */\n    this.hidding = false;\n    /**\n     * @type {boolean}\n     */\n    this.showing = false;\n  }\n\n  /**\n   * @private\n   * @returns {jQuery|false}\n   */\n  get input() {\n    return this.colorpicker.inputHandler.input;\n  }\n\n  /**\n   * @private\n   * @returns {boolean}\n   */\n  get hasInput() {\n    return this.colorpicker.inputHandler.hasInput();\n  }\n\n  /**\n   * @private\n   * @returns {jQuery|false}\n   */\n  get addon() {\n    return this.colorpicker.addonHandler.addon;\n  }\n\n  /**\n   * @private\n   * @returns {boolean}\n   */\n  get hasAddon() {\n    return this.colorpicker.addonHandler.hasAddon();\n  }\n\n  /**\n   * @private\n   * @returns {boolean}\n   */\n  get isPopover() {\n    return !this.colorpicker.options.inline && !!this.popoverTip;\n  }\n\n  /**\n   * Binds the different colorpicker elements to the focus/mouse/touch events so it reacts in order to show or\n   * hide the colorpicker popup accordingly. It also adds the proper classes.\n   */\n  bind() {\n    let cp = this.colorpicker;\n\n    if (cp.options.inline) {\n      cp.picker.addClass('colorpicker-inline colorpicker-visible');\n      return; // no need to bind show/hide events for inline elements\n    }\n\n    cp.picker.addClass('colorpicker-popup colorpicker-hidden');\n\n    // there is no input or addon\n    if (!this.hasInput && !this.hasAddon) {\n      return;\n    }\n\n    // create Bootstrap 4 popover\n    if (cp.options.popover) {\n      this.createPopover();\n    }\n\n    // bind addon show/hide events\n    if (this.hasAddon) {\n      // enable focus on addons\n      if (!this.addon.attr('tabindex')) {\n        this.addon.attr('tabindex', 0);\n      }\n\n      this.addon.on({\n        'mousedown.colorpicker touchstart.colorpicker': $.proxy(this.toggle, this)\n      });\n\n      this.addon.on({\n        'focus.colorpicker': $.proxy(this.show, this)\n      });\n\n      this.addon.on({\n        'focusout.colorpicker': $.proxy(this.hide, this)\n      });\n    }\n\n    // bind input show/hide events\n    if (this.hasInput && !this.hasAddon) {\n      this.input.on({\n        'mousedown.colorpicker touchstart.colorpicker': $.proxy(this.show, this),\n        'focus.colorpicker': $.proxy(this.show, this)\n      });\n\n      this.input.on({\n        'focusout.colorpicker': $.proxy(this.hide, this)\n      });\n    }\n\n    // reposition popup on window resize\n    $(this.root).on('resize.colorpicker', $.proxy(this.reposition, this));\n  }\n\n  /**\n   * Unbinds any event bound by this handler\n   */\n  unbind() {\n    if (this.hasInput) {\n      this.input.off({\n        'mousedown.colorpicker touchstart.colorpicker': $.proxy(this.show, this),\n        'focus.colorpicker': $.proxy(this.show, this)\n      });\n      this.input.off({\n        'focusout.colorpicker': $.proxy(this.hide, this)\n      });\n    }\n\n    if (this.hasAddon) {\n      this.addon.off({\n        'mousedown.colorpicker touchstart.colorpicker': $.proxy(this.toggle, this)\n      });\n      this.addon.off({\n        'focus.colorpicker': $.proxy(this.show, this)\n      });\n      this.addon.off({\n        'focusout.colorpicker': $.proxy(this.hide, this)\n      });\n    }\n\n    if (this.popoverTarget) {\n      this.popoverTarget.popover('dispose');\n    }\n\n    $(this.root).off('resize.colorpicker', $.proxy(this.reposition, this));\n    $(this.root.document).off('mousedown.colorpicker touchstart.colorpicker', $.proxy(this.hide, this));\n    $(this.root.document).off('mousedown.colorpicker touchstart.colorpicker', $.proxy(this.onClickingInside, this));\n  }\n\n  isClickingInside(e) {\n    if (!e) {\n      return false;\n    }\n\n    return (\n      this.isOrIsInside(this.popoverTip, e.currentTarget) ||\n      this.isOrIsInside(this.popoverTip, e.target) ||\n      this.isOrIsInside(this.colorpicker.picker, e.currentTarget) ||\n      this.isOrIsInside(this.colorpicker.picker, e.target)\n    );\n  }\n\n  isOrIsInside(container, element) {\n    if (!container || !element) {\n      return false;\n    }\n\n    element = $(element);\n\n    return (\n      element.is(container) ||\n      container.find(element).length > 0\n    );\n  }\n\n  onClickingInside(e) {\n    this.clicking = this.isClickingInside(e);\n  }\n\n  createPopover() {\n    let cp = this.colorpicker;\n\n    this.popoverTarget = this.hasAddon ? this.addon : this.input;\n\n    cp.picker.addClass('colorpicker-bs-popover-content');\n\n    this.popoverTarget.popover(\n      $.extend(\n        true,\n        {},\n        _defaults.popover,\n        cp.options.popover,\n        {trigger: 'manual', content: cp.picker, html: true}\n      )\n    );\n\n    /* Bootstrap 5 added an official method to get the popover instance */\n    /* global bootstrap */\n    const useGetInstance = window.bootstrap &&\n      window.bootstrap.Popover &&\n      window.bootstrap.Popover.getInstance;\n\n    this.popoverTip = useGetInstance ?\n      $(bootstrap.Popover.getInstance(this.popoverTarget[0]).getTipElement()) :\n      $(this.popoverTarget.popover('getTipElement').data('bs.popover').tip);\n\n    this.popoverTip.addClass('colorpicker-bs-popover');\n\n    this.popoverTarget.on('shown.bs.popover', $.proxy(this.fireShow, this));\n    this.popoverTarget.on('hidden.bs.popover', $.proxy(this.fireHide, this));\n  }\n\n  /**\n   * If the widget is not inside a container or inline, rearranges its position relative to its element offset.\n   *\n   * @param {Event} [e]\n   * @private\n   */\n  reposition(e) {\n    if (this.popoverTarget && this.isVisible()) {\n      this.popoverTarget.popover('update');\n    }\n  }\n\n  /**\n   * Toggles the colorpicker between visible or hidden\n   *\n   * @fires Colorpicker#colorpickerShow\n   * @fires Colorpicker#colorpickerHide\n   * @param {Event} [e]\n   */\n  toggle(e) {\n    if (this.isVisible()) {\n      this.hide(e);\n    } else {\n      this.show(e);\n    }\n  }\n\n  /**\n   * Shows the colorpicker widget if hidden.\n   *\n   * @fires Colorpicker#colorpickerShow\n   * @param {Event} [e]\n   */\n  show(e) {\n    if (this.isVisible() || this.showing || this.hidding) {\n      return;\n    }\n\n    this.showing = true;\n    this.hidding = false;\n    this.clicking = false;\n\n    let cp = this.colorpicker;\n\n    cp.lastEvent.alias = 'show';\n    cp.lastEvent.e = e;\n\n    // Prevent showing browser native HTML5 colorpicker\n    if (\n      (e && (!this.hasInput || this.input.attr('type') === 'color')) &&\n      (e && e.preventDefault)\n    ) {\n      e.stopPropagation();\n      e.preventDefault();\n    }\n\n    // If it's a popover, add event to the document to hide the picker when clicking outside of it\n    if (this.isPopover) {\n      $(this.root).on('resize.colorpicker', $.proxy(this.reposition, this));\n    }\n\n    // add visible class before popover is shown\n    cp.picker.addClass('colorpicker-visible').removeClass('colorpicker-hidden');\n\n    if (this.popoverTarget) {\n      this.popoverTarget.popover('show');\n    } else {\n      this.fireShow();\n    }\n  }\n\n  fireShow() {\n    this.hidding = false;\n    this.showing = false;\n\n    if (this.isPopover) {\n      // Add event to hide on outside click\n      $(this.root.document).on('mousedown.colorpicker touchstart.colorpicker', $.proxy(this.hide, this));\n      $(this.root.document).on('mousedown.colorpicker touchstart.colorpicker', $.proxy(this.onClickingInside, this));\n    }\n\n    /**\n     * (Colorpicker) When show() is called and the widget can be shown.\n     *\n     * @event Colorpicker#colorpickerShow\n     */\n    this.colorpicker.trigger('colorpickerShow');\n  }\n\n  /**\n   * Hides the colorpicker widget.\n   * Hide is prevented when it is triggered by an event whose target element has been clicked/touched.\n   *\n   * @fires Colorpicker#colorpickerHide\n   * @param {Event} [e]\n   */\n  hide(e) {\n    if (this.isHidden() || this.showing || this.hidding) {\n      return;\n    }\n\n    let cp = this.colorpicker, clicking = (this.clicking || this.isClickingInside(e));\n\n    this.hidding = true;\n    this.showing = false;\n    this.clicking = false;\n\n    cp.lastEvent.alias = 'hide';\n    cp.lastEvent.e = e;\n\n    // TODO: fix having to click twice outside when losing focus and last 2 clicks where inside the colorpicker\n\n    // Prevent hide if triggered by an event and an element inside the colorpicker has been clicked/touched\n    if (clicking) {\n      this.hidding = false;\n      return;\n    }\n\n    if (this.popoverTarget) {\n      this.popoverTarget.popover('hide');\n    } else {\n      this.fireHide();\n    }\n  }\n\n  fireHide() {\n    this.hidding = false;\n    this.showing = false;\n\n    let cp = this.colorpicker;\n\n    // add hidden class after popover is hidden\n    cp.picker.addClass('colorpicker-hidden').removeClass('colorpicker-visible');\n\n    // Unbind window and document events, since there is no need to keep them while the popup is hidden\n    $(this.root).off('resize.colorpicker', $.proxy(this.reposition, this));\n    $(this.root.document).off('mousedown.colorpicker touchstart.colorpicker', $.proxy(this.hide, this));\n    $(this.root.document).off('mousedown.colorpicker touchstart.colorpicker', $.proxy(this.onClickingInside, this));\n\n    /**\n     * (Colorpicker) When hide() is called and the widget can be hidden.\n     *\n     * @event Colorpicker#colorpickerHide\n     */\n    cp.trigger('colorpickerHide');\n  }\n\n  focus() {\n    if (this.hasAddon) {\n      return this.addon.focus();\n    }\n    if (this.hasInput) {\n      return this.input.focus();\n    }\n    return false;\n  }\n\n  /**\n   * Returns true if the colorpicker element has the colorpicker-visible class and not the colorpicker-hidden one.\n   * False otherwise.\n   *\n   * @returns {boolean}\n   */\n  isVisible() {\n    return this.colorpicker.picker.hasClass('colorpicker-visible') &&\n      !this.colorpicker.picker.hasClass('colorpicker-hidden');\n  }\n\n  /**\n   * Returns true if the colorpicker element has the colorpicker-hidden class and not the colorpicker-visible one.\n   * False otherwise.\n   *\n   * @returns {boolean}\n   */\n  isHidden() {\n    return this.colorpicker.picker.hasClass('colorpicker-hidden') &&\n      !this.colorpicker.picker.hasClass('colorpicker-visible');\n  }\n}\n\nexport default PopupHandler;\n","'use strict';\n\nimport $ from 'jquery';\nimport ColorItem from './ColorItem';\n\n/**\n * Handles everything related to the colorpicker input\n * @ignore\n */\nclass InputHandler {\n  /**\n   * @param {Colorpicker} colorpicker\n   */\n  constructor(colorpicker) {\n    /**\n     * @type {Colorpicker}\n     */\n    this.colorpicker = colorpicker;\n    /**\n     * @type {jQuery|false}\n     */\n    this.input = this.colorpicker.element.is('input') ? this.colorpicker.element : (this.colorpicker.options.input ?\n      this.colorpicker.element.find(this.colorpicker.options.input) : false);\n\n    if (this.input && (this.input.length === 0)) {\n      this.input = false;\n    }\n\n    this._initValue();\n  }\n\n  bind() {\n    if (!this.hasInput()) {\n      return;\n    }\n    this.input.on({\n      'keyup.colorpicker': $.proxy(this.onkeyup, this)\n    });\n    this.input.on({\n      'change.colorpicker': $.proxy(this.onchange, this)\n    });\n  }\n\n  unbind() {\n    if (!this.hasInput()) {\n      return;\n    }\n    this.input.off('.colorpicker');\n  }\n\n  _initValue() {\n    if (!this.hasInput()) {\n      return;\n    }\n\n    let val = '';\n\n    [\n      // candidates:\n      this.input.val(),\n      this.input.data('color'),\n      this.input.attr('data-color')\n    ].map((item) => {\n      if (item && (val === '')) {\n        val = item;\n      }\n    });\n\n    if (val instanceof ColorItem) {\n      val = this.getFormattedColor(val.string(this.colorpicker.format));\n    } else if (!(typeof val === 'string' || val instanceof String)) {\n      val = '';\n    }\n\n    this.input.prop('value', val);\n  }\n\n  /**\n   * Returns the color string from the input value.\n   * If there is no input the return value is false.\n   *\n   * @returns {String|boolean}\n   */\n  getValue() {\n    if (!this.hasInput()) {\n      return false;\n    }\n\n    return this.input.val();\n  }\n\n  /**\n   * If the input element is present, it updates the value with the current color object color string.\n   * If the value is changed, this method fires a \"change\" event on the input element.\n   *\n   * @param {String} val\n   *\n   * @fires Colorpicker#change\n   */\n  setValue(val) {\n    if (!this.hasInput()) {\n      return;\n    }\n\n    let inputVal = this.input.prop('value');\n\n    val = val ? val : '';\n\n    if (val === (inputVal ? inputVal : '')) {\n      // No need to set value or trigger any event if nothing changed\n      return;\n    }\n\n    this.input.prop('value', val);\n\n    /**\n     * (Input) Triggered on the input element when a new color is selected.\n     *\n     * @event Colorpicker#change\n     */\n    this.input.trigger({\n      type: 'change',\n      colorpicker: this.colorpicker,\n      color: this.colorpicker.color,\n      value: val\n    });\n  }\n\n  /**\n   * Returns the formatted color string, with the formatting options applied\n   * (e.g. useHashPrefix)\n   *\n   * @param {String|null} val\n   *\n   * @returns {String}\n   */\n  getFormattedColor(val = null) {\n    val = val ? val : this.colorpicker.colorHandler.getColorString();\n\n    if (!val) {\n      return '';\n    }\n\n    val = this.colorpicker.colorHandler.resolveColorDelegate(val, false);\n\n    if (this.colorpicker.options.useHashPrefix === false) {\n      val = val.replace(/^#/g, '');\n    }\n\n    return val;\n  }\n\n  /**\n   * Returns true if the widget has an associated input element, false otherwise\n   * @returns {boolean}\n   */\n  hasInput() {\n    return (this.input !== false);\n  }\n\n  /**\n   * Returns true if the input exists and is disabled\n   * @returns {boolean}\n   */\n  isEnabled() {\n    return this.hasInput() && !this.isDisabled();\n  }\n\n  /**\n   * Returns true if the input exists and is disabled\n   * @returns {boolean}\n   */\n  isDisabled() {\n    return this.hasInput() && (this.input.prop('disabled') === true);\n  }\n\n  /**\n   * Disables the input if any\n   *\n   * @fires Colorpicker#colorpickerDisable\n   * @returns {boolean}\n   */\n  disable() {\n    if (this.hasInput()) {\n      this.input.prop('disabled', true);\n    }\n  }\n\n  /**\n   * Enables the input if any\n   *\n   * @fires Colorpicker#colorpickerEnable\n   * @returns {boolean}\n   */\n  enable() {\n    if (this.hasInput()) {\n      this.input.prop('disabled', false);\n    }\n  }\n\n  /**\n   * Calls setValue with the current internal color value\n   *\n   * @fires Colorpicker#change\n   */\n  update() {\n    if (!this.hasInput()) {\n      return;\n    }\n\n    if (\n      (this.colorpicker.options.autoInputFallback === false) &&\n      this.colorpicker.colorHandler.isInvalidColor()\n    ) {\n      // prevent update if color is invalid, autoInputFallback is disabled and the last event is keyup.\n      return;\n    }\n\n    this.setValue(this.getFormattedColor());\n  }\n\n  /**\n   * Function triggered when the input has changed, so the colorpicker gets updated.\n   *\n   * @private\n   * @param {Event} e\n   * @returns {boolean}\n   */\n  onchange(e) {\n    this.colorpicker.lastEvent.alias = 'input.change';\n    this.colorpicker.lastEvent.e = e;\n\n    let val = this.getValue();\n\n    if (val !== e.value) {\n      this.colorpicker.setValue(val);\n    }\n  }\n\n  /**\n   * Function triggered after a keyboard key has been released.\n   *\n   * @private\n   * @param {Event} e\n   * @returns {boolean}\n   */\n  onkeyup(e) {\n    this.colorpicker.lastEvent.alias = 'input.keyup';\n    this.colorpicker.lastEvent.e = e;\n\n    let val = this.getValue();\n\n    if (val !== e.value) {\n      this.colorpicker.setValue(val);\n    }\n  }\n}\n\nexport default InputHandler;\n","'use strict';\n\nvar colorString = require('color-string');\nvar convert = require('color-convert');\n\nvar _slice = [].slice;\n\nvar skippedModels = [\n\t// to be honest, I don't really feel like keyword belongs in color convert, but eh.\n\t'keyword',\n\n\t// gray conflicts with some method names, and has its own method defined.\n\t'gray',\n\n\t// shouldn't really be in color-convert either...\n\t'hex'\n];\n\nvar hashedModelKeys = {};\nObject.keys(convert).forEach(function (model) {\n\thashedModelKeys[_slice.call(convert[model].labels).sort().join('')] = model;\n});\n\nvar limiters = {};\n\nfunction Color(obj, model) {\n\tif (!(this instanceof Color)) {\n\t\treturn new Color(obj, model);\n\t}\n\n\tif (model && model in skippedModels) {\n\t\tmodel = null;\n\t}\n\n\tif (model && !(model in convert)) {\n\t\tthrow new Error('Unknown model: ' + model);\n\t}\n\n\tvar i;\n\tvar channels;\n\n\tif (obj == null) { // eslint-disable-line no-eq-null,eqeqeq\n\t\tthis.model = 'rgb';\n\t\tthis.color = [0, 0, 0];\n\t\tthis.valpha = 1;\n\t} else if (obj instanceof Color) {\n\t\tthis.model = obj.model;\n\t\tthis.color = obj.color.slice();\n\t\tthis.valpha = obj.valpha;\n\t} else if (typeof obj === 'string') {\n\t\tvar result = colorString.get(obj);\n\t\tif (result === null) {\n\t\t\tthrow new Error('Unable to parse color from string: ' + obj);\n\t\t}\n\n\t\tthis.model = result.model;\n\t\tchannels = convert[this.model].channels;\n\t\tthis.color = result.value.slice(0, channels);\n\t\tthis.valpha = typeof result.value[channels] === 'number' ? result.value[channels] : 1;\n\t} else if (obj.length) {\n\t\tthis.model = model || 'rgb';\n\t\tchannels = convert[this.model].channels;\n\t\tvar newArr = _slice.call(obj, 0, channels);\n\t\tthis.color = zeroArray(newArr, channels);\n\t\tthis.valpha = typeof obj[channels] === 'number' ? obj[channels] : 1;\n\t} else if (typeof obj === 'number') {\n\t\t// this is always RGB - can be converted later on.\n\t\tobj &= 0xFFFFFF;\n\t\tthis.model = 'rgb';\n\t\tthis.color = [\n\t\t\t(obj >> 16) & 0xFF,\n\t\t\t(obj >> 8) & 0xFF,\n\t\t\tobj & 0xFF\n\t\t];\n\t\tthis.valpha = 1;\n\t} else {\n\t\tthis.valpha = 1;\n\n\t\tvar keys = Object.keys(obj);\n\t\tif ('alpha' in obj) {\n\t\t\tkeys.splice(keys.indexOf('alpha'), 1);\n\t\t\tthis.valpha = typeof obj.alpha === 'number' ? obj.alpha : 0;\n\t\t}\n\n\t\tvar hashedKeys = keys.sort().join('');\n\t\tif (!(hashedKeys in hashedModelKeys)) {\n\t\t\tthrow new Error('Unable to parse color from object: ' + JSON.stringify(obj));\n\t\t}\n\n\t\tthis.model = hashedModelKeys[hashedKeys];\n\n\t\tvar labels = convert[this.model].labels;\n\t\tvar color = [];\n\t\tfor (i = 0; i < labels.length; i++) {\n\t\t\tcolor.push(obj[labels[i]]);\n\t\t}\n\n\t\tthis.color = zeroArray(color);\n\t}\n\n\t// perform limitations (clamping, etc.)\n\tif (limiters[this.model]) {\n\t\tchannels = convert[this.model].channels;\n\t\tfor (i = 0; i < channels; i++) {\n\t\t\tvar limit = limiters[this.model][i];\n\t\t\tif (limit) {\n\t\t\t\tthis.color[i] = limit(this.color[i]);\n\t\t\t}\n\t\t}\n\t}\n\n\tthis.valpha = Math.max(0, Math.min(1, this.valpha));\n\n\tif (Object.freeze) {\n\t\tObject.freeze(this);\n\t}\n}\n\nColor.prototype = {\n\ttoString: function () {\n\t\treturn this.string();\n\t},\n\n\ttoJSON: function () {\n\t\treturn this[this.model]();\n\t},\n\n\tstring: function (places) {\n\t\tvar self = this.model in colorString.to ? this : this.rgb();\n\t\tself = self.round(typeof places === 'number' ? places : 1);\n\t\tvar args = self.valpha === 1 ? self.color : self.color.concat(this.valpha);\n\t\treturn colorString.to[self.model](args);\n\t},\n\n\tpercentString: function (places) {\n\t\tvar self = this.rgb().round(typeof places === 'number' ? places : 1);\n\t\tvar args = self.valpha === 1 ? self.color : self.color.concat(this.valpha);\n\t\treturn colorString.to.rgb.percent(args);\n\t},\n\n\tarray: function () {\n\t\treturn this.valpha === 1 ? this.color.slice() : this.color.concat(this.valpha);\n\t},\n\n\tobject: function () {\n\t\tvar result = {};\n\t\tvar channels = convert[this.model].channels;\n\t\tvar labels = convert[this.model].labels;\n\n\t\tfor (var i = 0; i < channels; i++) {\n\t\t\tresult[labels[i]] = this.color[i];\n\t\t}\n\n\t\tif (this.valpha !== 1) {\n\t\t\tresult.alpha = this.valpha;\n\t\t}\n\n\t\treturn result;\n\t},\n\n\tunitArray: function () {\n\t\tvar rgb = this.rgb().color;\n\t\trgb[0] /= 255;\n\t\trgb[1] /= 255;\n\t\trgb[2] /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.push(this.valpha);\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tunitObject: function () {\n\t\tvar rgb = this.rgb().object();\n\t\trgb.r /= 255;\n\t\trgb.g /= 255;\n\t\trgb.b /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.alpha = this.valpha;\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tround: function (places) {\n\t\tplaces = Math.max(places || 0, 0);\n\t\treturn new Color(this.color.map(roundToPlace(places)).concat(this.valpha), this.model);\n\t},\n\n\talpha: function (val) {\n\t\tif (arguments.length) {\n\t\t\treturn new Color(this.color.concat(Math.max(0, Math.min(1, val))), this.model);\n\t\t}\n\n\t\treturn this.valpha;\n\t},\n\n\t// rgb\n\tred: getset('rgb', 0, maxfn(255)),\n\tgreen: getset('rgb', 1, maxfn(255)),\n\tblue: getset('rgb', 2, maxfn(255)),\n\n\thue: getset(['hsl', 'hsv', 'hsl', 'hwb', 'hcg'], 0, function (val) { return ((val % 360) + 360) % 360; }), // eslint-disable-line brace-style\n\n\tsaturationl: getset('hsl', 1, maxfn(100)),\n\tlightness: getset('hsl', 2, maxfn(100)),\n\n\tsaturationv: getset('hsv', 1, maxfn(100)),\n\tvalue: getset('hsv', 2, maxfn(100)),\n\n\tchroma: getset('hcg', 1, maxfn(100)),\n\tgray: getset('hcg', 2, maxfn(100)),\n\n\twhite: getset('hwb', 1, maxfn(100)),\n\twblack: getset('hwb', 2, maxfn(100)),\n\n\tcyan: getset('cmyk', 0, maxfn(100)),\n\tmagenta: getset('cmyk', 1, maxfn(100)),\n\tyellow: getset('cmyk', 2, maxfn(100)),\n\tblack: getset('cmyk', 3, maxfn(100)),\n\n\tx: getset('xyz', 0, maxfn(100)),\n\ty: getset('xyz', 1, maxfn(100)),\n\tz: getset('xyz', 2, maxfn(100)),\n\n\tl: getset('lab', 0, maxfn(100)),\n\ta: getset('lab', 1),\n\tb: getset('lab', 2),\n\n\tkeyword: function (val) {\n\t\tif (arguments.length) {\n\t\t\treturn new Color(val);\n\t\t}\n\n\t\treturn convert[this.model].keyword(this.color);\n\t},\n\n\thex: function (val) {\n\t\tif (arguments.length) {\n\t\t\treturn new Color(val);\n\t\t}\n\n\t\treturn colorString.to.hex(this.rgb().round().color);\n\t},\n\n\trgbNumber: function () {\n\t\tvar rgb = this.rgb().color;\n\t\treturn ((rgb[0] & 0xFF) << 16) | ((rgb[1] & 0xFF) << 8) | (rgb[2] & 0xFF);\n\t},\n\n\tluminosity: function () {\n\t\t// http://www.w3.org/TR/WCAG20/#relativeluminancedef\n\t\tvar rgb = this.rgb().color;\n\n\t\tvar lum = [];\n\t\tfor (var i = 0; i < rgb.length; i++) {\n\t\t\tvar chan = rgb[i] / 255;\n\t\t\tlum[i] = (chan <= 0.03928) ? chan / 12.92 : Math.pow(((chan + 0.055) / 1.055), 2.4);\n\t\t}\n\n\t\treturn 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];\n\t},\n\n\tcontrast: function (color2) {\n\t\t// http://www.w3.org/TR/WCAG20/#contrast-ratiodef\n\t\tvar lum1 = this.luminosity();\n\t\tvar lum2 = color2.luminosity();\n\n\t\tif (lum1 > lum2) {\n\t\t\treturn (lum1 + 0.05) / (lum2 + 0.05);\n\t\t}\n\n\t\treturn (lum2 + 0.05) / (lum1 + 0.05);\n\t},\n\n\tlevel: function (color2) {\n\t\tvar contrastRatio = this.contrast(color2);\n\t\tif (contrastRatio >= 7.1) {\n\t\t\treturn 'AAA';\n\t\t}\n\n\t\treturn (contrastRatio >= 4.5) ? 'AA' : '';\n\t},\n\n\tisDark: function () {\n\t\t// YIQ equation from http://24ways.org/2010/calculating-color-contrast\n\t\tvar rgb = this.rgb().color;\n\t\tvar yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\n\t\treturn yiq < 128;\n\t},\n\n\tisLight: function () {\n\t\treturn !this.isDark();\n\t},\n\n\tnegate: function () {\n\t\tvar rgb = this.rgb();\n\t\tfor (var i = 0; i < 3; i++) {\n\t\t\trgb.color[i] = 255 - rgb.color[i];\n\t\t}\n\t\treturn rgb;\n\t},\n\n\tlighten: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[2] += hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdarken: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[2] -= hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tsaturate: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[1] += hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdesaturate: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[1] -= hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\twhiten: function (ratio) {\n\t\tvar hwb = this.hwb();\n\t\thwb.color[1] += hwb.color[1] * ratio;\n\t\treturn hwb;\n\t},\n\n\tblacken: function (ratio) {\n\t\tvar hwb = this.hwb();\n\t\thwb.color[2] += hwb.color[2] * ratio;\n\t\treturn hwb;\n\t},\n\n\tgrayscale: function () {\n\t\t// http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale\n\t\tvar rgb = this.rgb().color;\n\t\tvar val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\n\t\treturn Color.rgb(val, val, val);\n\t},\n\n\tfade: function (ratio) {\n\t\treturn this.alpha(this.valpha - (this.valpha * ratio));\n\t},\n\n\topaquer: function (ratio) {\n\t\treturn this.alpha(this.valpha + (this.valpha * ratio));\n\t},\n\n\trotate: function (degrees) {\n\t\tvar hsl = this.hsl();\n\t\tvar hue = hsl.color[0];\n\t\thue = (hue + degrees) % 360;\n\t\thue = hue < 0 ? 360 + hue : hue;\n\t\thsl.color[0] = hue;\n\t\treturn hsl;\n\t},\n\n\tmix: function (mixinColor, weight) {\n\t\t// ported from sass implementation in C\n\t\t// https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\n\t\tif (!mixinColor || !mixinColor.rgb) {\n\t\t\tthrow new Error('Argument to \"mix\" was not a Color instance, but rather an instance of ' + typeof mixinColor);\n\t\t}\n\t\tvar color1 = mixinColor.rgb();\n\t\tvar color2 = this.rgb();\n\t\tvar p = weight === undefined ? 0.5 : weight;\n\n\t\tvar w = 2 * p - 1;\n\t\tvar a = color1.alpha() - color2.alpha();\n\n\t\tvar w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n\t\tvar w2 = 1 - w1;\n\n\t\treturn Color.rgb(\n\t\t\t\tw1 * color1.red() + w2 * color2.red(),\n\t\t\t\tw1 * color1.green() + w2 * color2.green(),\n\t\t\t\tw1 * color1.blue() + w2 * color2.blue(),\n\t\t\t\tcolor1.alpha() * p + color2.alpha() * (1 - p));\n\t}\n};\n\n// model conversion methods and static constructors\nObject.keys(convert).forEach(function (model) {\n\tif (skippedModels.indexOf(model) !== -1) {\n\t\treturn;\n\t}\n\n\tvar channels = convert[model].channels;\n\n\t// conversion methods\n\tColor.prototype[model] = function () {\n\t\tif (this.model === model) {\n\t\t\treturn new Color(this);\n\t\t}\n\n\t\tif (arguments.length) {\n\t\t\treturn new Color(arguments, model);\n\t\t}\n\n\t\tvar newAlpha = typeof arguments[channels] === 'number' ? channels : this.valpha;\n\t\treturn new Color(assertArray(convert[this.model][model].raw(this.color)).concat(newAlpha), model);\n\t};\n\n\t// 'static' construction methods\n\tColor[model] = function (color) {\n\t\tif (typeof color === 'number') {\n\t\t\tcolor = zeroArray(_slice.call(arguments), channels);\n\t\t}\n\t\treturn new Color(color, model);\n\t};\n});\n\nfunction roundTo(num, places) {\n\treturn Number(num.toFixed(places));\n}\n\nfunction roundToPlace(places) {\n\treturn function (num) {\n\t\treturn roundTo(num, places);\n\t};\n}\n\nfunction getset(model, channel, modifier) {\n\tmodel = Array.isArray(model) ? model : [model];\n\n\tmodel.forEach(function (m) {\n\t\t(limiters[m] || (limiters[m] = []))[channel] = modifier;\n\t});\n\n\tmodel = model[0];\n\n\treturn function (val) {\n\t\tvar result;\n\n\t\tif (arguments.length) {\n\t\t\tif (modifier) {\n\t\t\t\tval = modifier(val);\n\t\t\t}\n\n\t\t\tresult = this[model]();\n\t\t\tresult.color[channel] = val;\n\t\t\treturn result;\n\t\t}\n\n\t\tresult = this[model]().color[channel];\n\t\tif (modifier) {\n\t\t\tresult = modifier(result);\n\t\t}\n\n\t\treturn result;\n\t};\n}\n\nfunction maxfn(max) {\n\treturn function (v) {\n\t\treturn Math.max(0, Math.min(max, v));\n\t};\n}\n\nfunction assertArray(val) {\n\treturn Array.isArray(val) ? val : [val];\n}\n\nfunction zeroArray(arr, length) {\n\tfor (var i = 0; i < length; i++) {\n\t\tif (typeof arr[i] !== 'number') {\n\t\t\tarr[i] = 0;\n\t\t}\n\t}\n\n\treturn arr;\n}\n\nmodule.exports = Color;\n","/* MIT license */\nvar colorNames = require('color-name');\nvar swizzle = require('simple-swizzle');\n\nvar reverseNames = {};\n\n// create a list of reverse color names\nfor (var name in colorNames) {\n\tif (colorNames.hasOwnProperty(name)) {\n\t\treverseNames[colorNames[name]] = name;\n\t}\n}\n\nvar cs = module.exports = {\n\tto: {},\n\tget: {}\n};\n\ncs.get = function (string) {\n\tvar prefix = string.substring(0, 3).toLowerCase();\n\tvar val;\n\tvar model;\n\tswitch (prefix) {\n\t\tcase 'hsl':\n\t\t\tval = cs.get.hsl(string);\n\t\t\tmodel = 'hsl';\n\t\t\tbreak;\n\t\tcase 'hwb':\n\t\t\tval = cs.get.hwb(string);\n\t\t\tmodel = 'hwb';\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tval = cs.get.rgb(string);\n\t\t\tmodel = 'rgb';\n\t\t\tbreak;\n\t}\n\n\tif (!val) {\n\t\treturn null;\n\t}\n\n\treturn {model: model, value: val};\n};\n\ncs.get.rgb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar abbr = /^#([a-f0-9]{3,4})$/i;\n\tvar hex = /^#([a-f0-9]{6})([a-f0-9]{2})?$/i;\n\tvar rgba = /^rgba?\\(\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/;\n\tvar per = /^rgba?\\(\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/;\n\tvar keyword = /(\\D+)/;\n\n\tvar rgb = [0, 0, 0, 1];\n\tvar match;\n\tvar i;\n\tvar hexAlpha;\n\n\tif (match = string.match(hex)) {\n\t\thexAlpha = match[2];\n\t\tmatch = match[1];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\t// https://jsperf.com/slice-vs-substr-vs-substring-methods-long-string/19\n\t\t\tvar i2 = i * 2;\n\t\t\trgb[i] = parseInt(match.slice(i2, i2 + 2), 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = Math.round((parseInt(hexAlpha, 16) / 255) * 100) / 100;\n\t\t}\n\t} else if (match = string.match(abbr)) {\n\t\tmatch = match[1];\n\t\thexAlpha = match[3];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i] + match[i], 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = Math.round((parseInt(hexAlpha + hexAlpha, 16) / 255) * 100) / 100;\n\t\t}\n\t} else if (match = string.match(rgba)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i + 1], 0);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\trgb[3] = parseFloat(match[4]);\n\t\t}\n\t} else if (match = string.match(per)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\trgb[3] = parseFloat(match[4]);\n\t\t}\n\t} else if (match = string.match(keyword)) {\n\t\tif (match[1] === 'transparent') {\n\t\t\treturn [0, 0, 0, 0];\n\t\t}\n\n\t\trgb = colorNames[match[1]];\n\n\t\tif (!rgb) {\n\t\t\treturn null;\n\t\t}\n\n\t\trgb[3] = 1;\n\n\t\treturn rgb;\n\t} else {\n\t\treturn null;\n\t}\n\n\tfor (i = 0; i < 3; i++) {\n\t\trgb[i] = clamp(rgb[i], 0, 255);\n\t}\n\trgb[3] = clamp(rgb[3], 0, 1);\n\n\treturn rgb;\n};\n\ncs.get.hsl = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar hsl = /^hsla?\\(\\s*([+-]?(?:\\d*\\.)?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/;\n\tvar match = string.match(hsl);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = (parseFloat(match[1]) + 360) % 360;\n\t\tvar s = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar l = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\n\t\treturn [h, s, l, a];\n\t}\n\n\treturn null;\n};\n\ncs.get.hwb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar hwb = /^hwb\\(\\s*([+-]?\\d*[\\.]?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/;\n\tvar match = string.match(hwb);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = ((parseFloat(match[1]) % 360) + 360) % 360;\n\t\tvar w = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar b = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\t\treturn [h, w, b, a];\n\t}\n\n\treturn null;\n};\n\ncs.to.hex = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn (\n\t\t'#' +\n\t\thexDouble(rgba[0]) +\n\t\thexDouble(rgba[1]) +\n\t\thexDouble(rgba[2]) +\n\t\t(rgba[3] < 1\n\t\t\t? (hexDouble(Math.round(rgba[3] * 255)))\n\t\t\t: '')\n\t);\n};\n\ncs.to.rgb = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ')'\n\t\t: 'rgba(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ', ' + rgba[3] + ')';\n};\n\ncs.to.rgb.percent = function () {\n\tvar rgba = swizzle(arguments);\n\n\tvar r = Math.round(rgba[0] / 255 * 100);\n\tvar g = Math.round(rgba[1] / 255 * 100);\n\tvar b = Math.round(rgba[2] / 255 * 100);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + r + '%, ' + g + '%, ' + b + '%)'\n\t\t: 'rgba(' + r + '%, ' + g + '%, ' + b + '%, ' + rgba[3] + ')';\n};\n\ncs.to.hsl = function () {\n\tvar hsla = swizzle(arguments);\n\treturn hsla.length < 4 || hsla[3] === 1\n\t\t? 'hsl(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%)'\n\t\t: 'hsla(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%, ' + hsla[3] + ')';\n};\n\n// hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax\n// (hwb have alpha optional & 1 is default value)\ncs.to.hwb = function () {\n\tvar hwba = swizzle(arguments);\n\n\tvar a = '';\n\tif (hwba.length >= 4 && hwba[3] !== 1) {\n\t\ta = ', ' + hwba[3];\n\t}\n\n\treturn 'hwb(' + hwba[0] + ', ' + hwba[1] + '%, ' + hwba[2] + '%' + a + ')';\n};\n\ncs.to.keyword = function (rgb) {\n\treturn reverseNames[rgb.slice(0, 3)];\n};\n\n// helpers\nfunction clamp(num, min, max) {\n\treturn Math.min(Math.max(min, num), max);\n}\n\nfunction hexDouble(num) {\n\tvar str = num.toString(16).toUpperCase();\n\treturn (str.length < 2) ? '0' + str : str;\n}\n","'use strict';\n\nvar isArrayish = require('is-arrayish');\n\nvar concat = Array.prototype.concat;\nvar slice = Array.prototype.slice;\n\nvar swizzle = module.exports = function swizzle(args) {\n\tvar results = [];\n\n\tfor (var i = 0, len = args.length; i < len; i++) {\n\t\tvar arg = args[i];\n\n\t\tif (isArrayish(arg)) {\n\t\t\t// http://jsperf.com/javascript-array-concat-vs-push/98\n\t\t\tresults = concat.call(results, slice.call(arg));\n\t\t} else {\n\t\t\tresults.push(arg);\n\t\t}\n\t}\n\n\treturn results;\n};\n\nswizzle.wrap = function (fn) {\n\treturn function () {\n\t\treturn fn(swizzle(arguments));\n\t};\n};\n","'use strict';\n\nmodule.exports = function isArrayish(obj) {\n\tif (!obj) {\n\t\treturn false;\n\t}\n\n\treturn obj instanceof Array || Array.isArray(obj) ||\n\t\t(obj.length >= 0 && obj.splice instanceof Function);\n};\n","var conversions = require('./conversions');\nvar route = require('./route');\n\nvar convert = {};\n\nvar models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\tvar result = fn(args);\n\n\t\t// we're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (var len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(function (fromModel) {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tvar routes = route(fromModel);\n\tvar routeModels = Object.keys(routes);\n\n\trouteModels.forEach(function (toModel) {\n\t\tvar fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n","var conversions = require('./conversions');\n\n/*\n\tthis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tvar graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tvar models = Object.keys(conversions);\n\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tvar graph = buildGraph();\n\tvar queue = [fromModel]; // unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tvar current = queue.pop();\n\t\tvar adjacents = Object.keys(conversions[current]);\n\n\t\tfor (var len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tvar adjacent = adjacents[i];\n\t\t\tvar node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tvar path = [graph[toModel].parent, toModel];\n\tvar fn = conversions[graph[toModel].parent][toModel];\n\n\tvar cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tvar graph = deriveBFS(fromModel);\n\tvar conversion = {};\n\n\tvar models = Object.keys(graph);\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tvar toModel = models[i];\n\t\tvar node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// no possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n","'use strict';\n\nimport $ from 'jquery';\nimport ColorItem from './ColorItem';\n\n/**\n * Handles everything related to the colorpicker color\n * @ignore\n */\nclass ColorHandler {\n  /**\n   * @param {Colorpicker} colorpicker\n   */\n  constructor(colorpicker) {\n    /**\n     * @type {Colorpicker}\n     */\n    this.colorpicker = colorpicker;\n  }\n\n  /**\n   * @returns {*|String|ColorItem}\n   */\n  get fallback() {\n    return this.colorpicker.options.fallbackColor ?\n      this.colorpicker.options.fallbackColor : (this.hasColor() ? this.color : null);\n  }\n\n  /**\n   * @returns {String|null}\n   */\n  get format() {\n    if (this.colorpicker.options.format) {\n      return this.colorpicker.options.format;\n    }\n\n    if (this.hasColor() && this.color.hasTransparency() && this.color.format.match(/^hex/)) {\n      return this.isAlphaEnabled() ? 'rgba' : 'hex';\n    }\n\n    if (this.hasColor()) {\n      return this.color.format;\n    }\n\n    return 'rgb';\n  }\n\n  /**\n   * Internal color getter\n   *\n   * @type {ColorItem|null}\n   */\n  get color() {\n    return this.colorpicker.element.data('color');\n  }\n\n  /**\n   * Internal color setter\n   *\n   * @ignore\n   * @param {ColorItem|null} value\n   */\n  set color(value) {\n    this.colorpicker.element.data('color', value);\n\n    if ((value instanceof ColorItem) && (this.colorpicker.options.format === 'auto')) {\n      // If format is 'auto', use the first parsed one from now on\n      this.colorpicker.options.format = this.color.format;\n    }\n  }\n\n  bind() {\n    // if the color option is set\n    if (this.colorpicker.options.color) {\n      this.color = this.createColor(this.colorpicker.options.color);\n      return;\n    }\n\n    // if element[color] is empty and the input has a value\n    if (!this.color && !!this.colorpicker.inputHandler.getValue()) {\n      this.color = this.createColor(\n        this.colorpicker.inputHandler.getValue(), this.colorpicker.options.autoInputFallback\n      );\n    }\n  }\n\n  unbind() {\n    this.colorpicker.element.removeData('color');\n  }\n\n  /**\n   * Returns the color string from the input value or the 'data-color' attribute of the input or element.\n   * If empty, it returns the defaultValue parameter.\n   *\n   * @returns {String|*}\n   */\n  getColorString() {\n    if (!this.hasColor()) {\n      return '';\n    }\n\n    return this.color.string(this.format);\n  }\n\n  /**\n   * Sets the color value\n   *\n   * @param {String|ColorItem} val\n   */\n  setColorString(val) {\n    let color = val ? this.createColor(val) : null;\n\n    this.color = color ? color : null;\n  }\n\n  /**\n   * Creates a new color using the widget instance options (fallbackColor, format).\n   *\n   * @fires Colorpicker#colorpickerInvalid\n   * @param {*} val\n   * @param {boolean} fallbackOnInvalid\n   * @param {boolean} autoHexInputFallback\n   * @returns {ColorItem}\n   */\n  createColor(val, fallbackOnInvalid = true, autoHexInputFallback = false) {\n    let disableHexInputFallback = !fallbackOnInvalid && !autoHexInputFallback;\n\n    let color = new ColorItem(this.resolveColorDelegate(val), this.format, disableHexInputFallback);\n\n    if (!color.isValid()) {\n      if (fallbackOnInvalid) {\n        color = this.getFallbackColor();\n      }\n\n      /**\n       * (Colorpicker) Fired when the color is invalid and the fallback color is going to be used.\n       *\n       * @event Colorpicker#colorpickerInvalid\n       */\n      this.colorpicker.trigger('colorpickerInvalid', color, val);\n    }\n\n    if (!this.isAlphaEnabled()) {\n      // Alpha is disabled\n      color.alpha = 1;\n    }\n\n    return color;\n  }\n\n  getFallbackColor() {\n    if (this.fallback && (this.fallback === this.color)) {\n      return this.color;\n    }\n\n    let fallback = this.resolveColorDelegate(this.fallback);\n\n    let color = new ColorItem(fallback, this.format);\n\n    if (!color.isValid()) {\n      console.warn('The fallback color is invalid. Falling back to the previous color or black if any.');\n      return this.color ? this.color : new ColorItem('#000000', this.format);\n    }\n\n    return color;\n  }\n\n  /**\n   * @returns {ColorItem}\n   */\n  assureColor() {\n    if (!this.hasColor()) {\n      this.color = this.getFallbackColor();\n    }\n\n    return this.color;\n  }\n\n  /**\n   * Delegates the color resolution to the colorpicker extensions.\n   *\n   * @param {String|*} color\n   * @param {boolean} realColor if true, the color should resolve into a real (not named) color code\n   * @returns {ColorItem|String|*|null}\n   */\n  resolveColorDelegate(color, realColor = true) {\n    let extResolvedColor = false;\n\n    $.each(this.colorpicker.extensions, function (name, ext) {\n      if (extResolvedColor !== false) {\n        // skip if resolved\n        return;\n      }\n      extResolvedColor = ext.resolveColor(color, realColor);\n    });\n\n    return extResolvedColor ? extResolvedColor : color;\n  }\n\n  /**\n   * Checks if there is a color object, that it is valid and it is not a fallback\n   * @returns {boolean}\n   */\n  isInvalidColor() {\n    return !this.hasColor() || !this.color.isValid();\n  }\n\n  /**\n   * Returns true if the useAlpha option is exactly true, false otherwise\n   * @returns {boolean}\n   */\n  isAlphaEnabled() {\n    return (this.colorpicker.options.useAlpha !== false);\n  }\n\n  /**\n   * Returns true if the current color object is an instance of Color, false otherwise.\n   * @returns {boolean}\n   */\n  hasColor() {\n    return this.color instanceof ColorItem;\n  }\n}\n\nexport default ColorHandler;\n","'use strict';\n\nimport $ from 'jquery';\n\n/**\n * Handles everything related to the colorpicker UI\n * @ignore\n */\nclass PickerHandler {\n  /**\n   * @param {Colorpicker} colorpicker\n   */\n  constructor(colorpicker) {\n    /**\n     * @type {Colorpicker}\n     */\n    this.colorpicker = colorpicker;\n    /**\n     * @type {jQuery}\n     */\n    this.picker = null;\n  }\n\n  get options() {\n    return this.colorpicker.options;\n  }\n\n  get color() {\n    return this.colorpicker.colorHandler.color;\n  }\n\n  bind() {\n    /**\n     * @type {jQuery|HTMLElement}\n     */\n    let picker = this.picker = $(this.options.template);\n\n    if (this.options.customClass) {\n      picker.addClass(this.options.customClass);\n    }\n\n    if (this.options.horizontal) {\n      picker.addClass('colorpicker-horizontal');\n    }\n\n    if (this._supportsAlphaBar()) {\n      this.options.useAlpha = true;\n      picker.addClass('colorpicker-with-alpha');\n    } else {\n      this.options.useAlpha = false;\n    }\n  }\n\n  attach() {\n    // Inject the colorpicker element into the DOM\n    let pickerParent = this.colorpicker.container ? this.colorpicker.container : null;\n\n    if (pickerParent) {\n      this.picker.appendTo(pickerParent);\n    }\n  }\n\n  unbind() {\n    this.picker.remove();\n  }\n\n  _supportsAlphaBar() {\n    return (\n      (this.options.useAlpha || (this.colorpicker.colorHandler.hasColor() && this.color.hasTransparency())) &&\n      (this.options.useAlpha !== false) &&\n      (!this.options.format || (this.options.format && !this.options.format.match(/^hex([36])?$/i)))\n    );\n  }\n\n  /**\n   * Changes the color adjustment bars using the current color object information.\n   */\n  update() {\n    if (!this.colorpicker.colorHandler.hasColor()) {\n      return;\n    }\n\n    let vertical = (this.options.horizontal !== true),\n      slider = vertical ? this.options.sliders : this.options.slidersHorz;\n\n    let saturationGuide = this.picker.find('.colorpicker-saturation .colorpicker-guide'),\n      hueGuide = this.picker.find('.colorpicker-hue .colorpicker-guide'),\n      alphaGuide = this.picker.find('.colorpicker-alpha .colorpicker-guide');\n\n    let hsva = this.color.toHsvaRatio();\n\n    // Set guides position\n    if (hueGuide.length) {\n      hueGuide.css(vertical ? 'top' : 'left', (vertical ? slider.hue.maxTop : slider.hue.maxLeft) * (1 - hsva.h));\n    }\n    if (alphaGuide.length) {\n      alphaGuide.css(vertical ? 'top' : 'left', (vertical ? slider.alpha.maxTop : slider.alpha.maxLeft) * (1 - hsva.a));\n    }\n    if (saturationGuide.length) {\n      saturationGuide.css({\n        'top': slider.saturation.maxTop - hsva.v * slider.saturation.maxTop,\n        'left': hsva.s * slider.saturation.maxLeft\n      });\n    }\n\n    // Set saturation hue background\n    this.picker.find('.colorpicker-saturation')\n      .css('backgroundColor', this.color.getCloneHueOnly().toHexString()); // we only need hue\n\n    // Set alpha color gradient\n    let hexColor = this.color.toHexString();\n\n    let alphaBg = '';\n\n    if (this.options.horizontal) {\n      alphaBg = `linear-gradient(to right, ${hexColor} 0%, transparent 100%)`;\n    } else {\n      alphaBg = `linear-gradient(to bottom, ${hexColor} 0%, transparent 100%)`;\n    }\n\n    this.picker.find('.colorpicker-alpha-color').css('background', alphaBg);\n  }\n}\n\nexport default PickerHandler;\n","'use strict';\n\n/**\n * Handles everything related to the colorpicker addon\n * @ignore\n */\nclass AddonHandler {\n  /**\n   * @param {Colorpicker} colorpicker\n   */\n  constructor(colorpicker) {\n    /**\n     * @type {Colorpicker}\n     */\n    this.colorpicker = colorpicker;\n    /**\n     * @type {jQuery}\n     */\n    this.addon = null;\n  }\n\n  hasAddon() {\n    return !!this.addon;\n  }\n\n  bind() {\n    /**\n     * @type {*|jQuery}\n     */\n    this.addon = this.colorpicker.options.addon ?\n      this.colorpicker.element.find(this.colorpicker.options.addon) : null;\n\n    if (this.addon && (this.addon.length === 0)) {\n      // not found\n      this.addon = null;\n    }\n  }\n\n  unbind() {\n    if (this.hasAddon()) {\n      this.addon.off('.colorpicker');\n    }\n  }\n\n  /**\n   * If the addon element is present, its background color is updated\n   */\n  update() {\n    if (!this.colorpicker.colorHandler.hasColor() || !this.hasAddon()) {\n      return;\n    }\n\n    let colorStr = this.colorpicker.colorHandler.getColorString();\n\n    let styles = {'background': colorStr};\n\n    let icn = this.addon.find('i').eq(0);\n\n    if (icn.length > 0) {\n      icn.css(styles);\n    } else {\n      this.addon.css(styles);\n    }\n  }\n}\n\nexport default AddonHandler;\n"],"sourceRoot":""}
\ No newline at end of file
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-colorpicker/js/bootstrap-colorpicker.js
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-colorpicker/js/bootstrap-colorpicker.js	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-colorpicker/js/bootstrap-colorpicker.js	(revision 3762)
@@ -0,0 +1,6284 @@
+/*!
+ * Bootstrap Colorpicker - Bootstrap Colorpicker is a modular color picker plugin for Bootstrap 4.
+ * @package bootstrap-colorpicker
+ * @version v3.4.0
+ * @license MIT
+ * @link https://itsjavi.com/bootstrap-colorpicker/
+ * @link https://github.com/itsjavi/bootstrap-colorpicker.git
+ */
+(function webpackUniversalModuleDefinition(root, factory) {
+	if(typeof exports === 'object' && typeof module === 'object')
+		module.exports = factory(require("jquery"));
+	else if(typeof define === 'function' && define.amd)
+		define("bootstrap-colorpicker", ["jquery"], factory);
+	else if(typeof exports === 'object')
+		exports["bootstrap-colorpicker"] = factory(require("jquery"));
+	else
+		root["bootstrap-colorpicker"] = factory(root["jQuery"]);
+})(window, function(__WEBPACK_EXTERNAL_MODULE__0__) {
+return /******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+/******/
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+/******/
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId]) {
+/******/ 			return installedModules[moduleId].exports;
+/******/ 		}
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			i: moduleId,
+/******/ 			l: false,
+/******/ 			exports: {}
+/******/ 		};
+/******/
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ 		// Flag the module as loaded
+/******/ 		module.l = true;
+/******/
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+/******/
+/******/
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+/******/
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+/******/
+/******/ 	// define getter function for harmony exports
+/******/ 	__webpack_require__.d = function(exports, name, getter) {
+/******/ 		if(!__webpack_require__.o(exports, name)) {
+/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ 		}
+/******/ 	};
+/******/
+/******/ 	// define __esModule on exports
+/******/ 	__webpack_require__.r = function(exports) {
+/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ 		}
+/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
+/******/ 	};
+/******/
+/******/ 	// create a fake namespace object
+/******/ 	// mode & 1: value is a module id, require it
+/******/ 	// mode & 2: merge all properties of value into the ns
+/******/ 	// mode & 4: return value when already ns object
+/******/ 	// mode & 8|1: behave like require
+/******/ 	__webpack_require__.t = function(value, mode) {
+/******/ 		if(mode & 1) value = __webpack_require__(value);
+/******/ 		if(mode & 8) return value;
+/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ 		var ns = Object.create(null);
+/******/ 		__webpack_require__.r(ns);
+/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ 		return ns;
+/******/ 	};
+/******/
+/******/ 	// getDefaultExport function for compatibility with non-harmony modules
+/******/ 	__webpack_require__.n = function(module) {
+/******/ 		var getter = module && module.__esModule ?
+/******/ 			function getDefault() { return module['default']; } :
+/******/ 			function getModuleExports() { return module; };
+/******/ 		__webpack_require__.d(getter, 'a', getter);
+/******/ 		return getter;
+/******/ 	};
+/******/
+/******/ 	// Object.prototype.hasOwnProperty.call
+/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "";
+/******/
+/******/
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(__webpack_require__.s = 7);
+/******/ })
+/************************************************************************/
+/******/ ([
+/* 0 */
+/***/ (function(module, exports) {
+
+module.exports = __WEBPACK_EXTERNAL_MODULE__0__;
+
+/***/ }),
+/* 1 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _jquery = __webpack_require__(0);
+
+var _jquery2 = _interopRequireDefault(_jquery);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+/**
+ * Colorpicker extension class.
+ */
+var Extension = function () {
+  /**
+   * @param {Colorpicker} colorpicker
+   * @param {Object} options
+   */
+  function Extension(colorpicker) {
+    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+
+    _classCallCheck(this, Extension);
+
+    /**
+     * The colorpicker instance
+     * @type {Colorpicker}
+     */
+    this.colorpicker = colorpicker;
+    /**
+     * Extension options
+     *
+     * @type {Object}
+     */
+    this.options = options;
+
+    if (!(this.colorpicker.element && this.colorpicker.element.length)) {
+      throw new Error('Extension: this.colorpicker.element is not valid');
+    }
+
+    this.colorpicker.element.on('colorpickerCreate.colorpicker-ext', _jquery2.default.proxy(this.onCreate, this));
+    this.colorpicker.element.on('colorpickerDestroy.colorpicker-ext', _jquery2.default.proxy(this.onDestroy, this));
+    this.colorpicker.element.on('colorpickerUpdate.colorpicker-ext', _jquery2.default.proxy(this.onUpdate, this));
+    this.colorpicker.element.on('colorpickerChange.colorpicker-ext', _jquery2.default.proxy(this.onChange, this));
+    this.colorpicker.element.on('colorpickerInvalid.colorpicker-ext', _jquery2.default.proxy(this.onInvalid, this));
+    this.colorpicker.element.on('colorpickerShow.colorpicker-ext', _jquery2.default.proxy(this.onShow, this));
+    this.colorpicker.element.on('colorpickerHide.colorpicker-ext', _jquery2.default.proxy(this.onHide, this));
+    this.colorpicker.element.on('colorpickerEnable.colorpicker-ext', _jquery2.default.proxy(this.onEnable, this));
+    this.colorpicker.element.on('colorpickerDisable.colorpicker-ext', _jquery2.default.proxy(this.onDisable, this));
+  }
+
+  /**
+   * Function called every time a new color needs to be created.
+   * Return false to skip this resolver and continue with other extensions' ones
+   * or return anything else to consider the color resolved.
+   *
+   * @param {ColorItem|String|*} color
+   * @param {boolean} realColor if true, the color should resolve into a real (not named) color code
+   * @return {ColorItem|String|*}
+   */
+
+
+  _createClass(Extension, [{
+    key: 'resolveColor',
+    value: function resolveColor(color) {
+      var realColor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
+
+      return false;
+    }
+
+    /**
+     * Method called after the colorpicker is created
+     *
+     * @listens Colorpicker#colorpickerCreate
+     * @param {Event} event
+     */
+
+  }, {
+    key: 'onCreate',
+    value: function onCreate(event) {}
+    // to be extended
+
+
+    /**
+     * Method called after the colorpicker is destroyed
+     *
+     * @listens Colorpicker#colorpickerDestroy
+     * @param {Event} event
+     */
+
+  }, {
+    key: 'onDestroy',
+    value: function onDestroy(event) {
+      this.colorpicker.element.off('.colorpicker-ext');
+    }
+
+    /**
+     * Method called after the colorpicker is updated
+     *
+     * @listens Colorpicker#colorpickerUpdate
+     * @param {Event} event
+     */
+
+  }, {
+    key: 'onUpdate',
+    value: function onUpdate(event) {}
+    // to be extended
+
+
+    /**
+     * Method called after the colorpicker color is changed
+     *
+     * @listens Colorpicker#colorpickerChange
+     * @param {Event} event
+     */
+
+  }, {
+    key: 'onChange',
+    value: function onChange(event) {}
+    // to be extended
+
+
+    /**
+     * Method called when the colorpicker color is invalid
+     *
+     * @listens Colorpicker#colorpickerInvalid
+     * @param {Event} event
+     */
+
+  }, {
+    key: 'onInvalid',
+    value: function onInvalid(event) {}
+    // to be extended
+
+
+    /**
+     * Method called after the colorpicker is hidden
+     *
+     * @listens Colorpicker#colorpickerHide
+     * @param {Event} event
+     */
+
+  }, {
+    key: 'onHide',
+    value: function onHide(event) {}
+    // to be extended
+
+
+    /**
+     * Method called after the colorpicker is shown
+     *
+     * @listens Colorpicker#colorpickerShow
+     * @param {Event} event
+     */
+
+  }, {
+    key: 'onShow',
+    value: function onShow(event) {}
+    // to be extended
+
+
+    /**
+     * Method called after the colorpicker is disabled
+     *
+     * @listens Colorpicker#colorpickerDisable
+     * @param {Event} event
+     */
+
+  }, {
+    key: 'onDisable',
+    value: function onDisable(event) {}
+    // to be extended
+
+
+    /**
+     * Method called after the colorpicker is enabled
+     *
+     * @listens Colorpicker#colorpickerEnable
+     * @param {Event} event
+     */
+
+  }, {
+    key: 'onEnable',
+    value: function onEnable(event) {
+      // to be extended
+    }
+  }]);
+
+  return Extension;
+}();
+
+exports.default = Extension;
+module.exports = exports.default;
+
+/***/ }),
+/* 2 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.ColorItem = exports.HSVAColor = undefined;
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /**
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      * Color manipulation class, specific for Bootstrap Colorpicker
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      */
+
+
+var _color = __webpack_require__(16);
+
+var _color2 = _interopRequireDefault(_color);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+/**
+ * HSVA color data class, containing the hue, saturation, value and alpha
+ * information.
+ */
+var HSVAColor = function () {
+  /**
+   * @param {number|int} h
+   * @param {number|int} s
+   * @param {number|int} v
+   * @param {number|int} a
+   */
+  function HSVAColor(h, s, v, a) {
+    _classCallCheck(this, HSVAColor);
+
+    this.h = isNaN(h) ? 0 : h;
+    this.s = isNaN(s) ? 0 : s;
+    this.v = isNaN(v) ? 0 : v;
+    this.a = isNaN(h) ? 1 : a;
+  }
+
+  _createClass(HSVAColor, [{
+    key: 'toString',
+    value: function toString() {
+      return this.h + ', ' + this.s + '%, ' + this.v + '%, ' + this.a;
+    }
+  }]);
+
+  return HSVAColor;
+}();
+
+/**
+ * HSVA color manipulation
+ */
+
+
+var ColorItem = function () {
+  _createClass(ColorItem, [{
+    key: 'api',
+
+
+    /**
+     * Applies a method of the QixColor API and returns a new Color object or
+     * the return value of the method call.
+     *
+     * If no argument is provided, the internal QixColor object is returned.
+     *
+     * @param {String} fn QixColor function name
+     * @param args QixColor function arguments
+     * @example let darkerColor = color.api('darken', 0.25);
+     * @example let luminosity = color.api('luminosity');
+     * @example color = color.api('negate');
+     * @example let qColor = color.api().negate();
+     * @returns {ColorItem|QixColor|*}
+     */
+    value: function api(fn) {
+      for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
+        args[_key - 1] = arguments[_key];
+      }
+
+      if (arguments.length === 0) {
+        return this._color;
+      }
+
+      var result = this._color[fn].apply(this._color, args);
+
+      if (!(result instanceof _color2.default)) {
+        // return result of the method call
+        return result;
+      }
+
+      return new ColorItem(result, this.format);
+    }
+
+    /**
+     * Returns the original ColorItem constructor data,
+     * plus a 'valid' flag to know if it's valid or not.
+     *
+     * @returns {{color: *, format: String, valid: boolean}}
+     */
+
+  }, {
+    key: 'original',
+    get: function get() {
+      return this._original;
+    }
+
+    /**
+     * @param {ColorItem|HSVAColor|QixColor|String|*|null} color Color data
+     * @param {String|null} format Color model to convert to by default. Supported: 'rgb', 'hsl', 'hex'.
+     * @param {boolean} disableHexInputFallback Disable fixing hex3 format
+     */
+
+  }], [{
+    key: 'HSVAColor',
+
+
+    /**
+     * Returns the HSVAColor class
+     *
+     * @static
+     * @example let colorData = new ColorItem.HSVAColor(360, 100, 100, 1);
+     * @returns {HSVAColor}
+     */
+    get: function get() {
+      return HSVAColor;
+    }
+  }]);
+
+  function ColorItem() {
+    var color = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
+    var format = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
+    var disableHexInputFallback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
+
+    _classCallCheck(this, ColorItem);
+
+    this.replace(color, format, disableHexInputFallback);
+  }
+
+  /**
+   * Replaces the internal QixColor object with a new one.
+   * This also replaces the internal original color data.
+   *
+   * @param {ColorItem|HSVAColor|QixColor|String|*|null} color Color data to be parsed (if needed)
+   * @param {String|null} format Color model to convert to by default. Supported: 'rgb', 'hsl', 'hex'.
+   * @param {boolean} disableHexInputFallback Disable fixing hex3 format
+   * @example color.replace('rgb(255,0,0)', 'hsl');
+   * @example color.replace(hsvaColorData);
+   */
+
+
+  _createClass(ColorItem, [{
+    key: 'replace',
+    value: function replace(color) {
+      var format = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
+      var disableHexInputFallback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
+
+      format = ColorItem.sanitizeFormat(format);
+
+      /**
+       * @type {{color: *, format: String}}
+       * @private
+       */
+      this._original = {
+        color: color,
+        format: format,
+        valid: true
+      };
+      /**
+       * @type {QixColor}
+       * @private
+       */
+      this._color = ColorItem.parse(color, disableHexInputFallback);
+
+      if (this._color === null) {
+        this._color = (0, _color2.default)();
+        this._original.valid = false;
+        return;
+      }
+
+      /**
+       * @type {*|string}
+       * @private
+       */
+      this._format = format ? format : ColorItem.isHex(color) ? 'hex' : this._color.model;
+    }
+
+    /**
+     * Parses the color returning a Qix Color object or null if cannot be
+     * parsed.
+     *
+     * @param {ColorItem|HSVAColor|QixColor|String|*|null} color Color data
+     * @param {boolean} disableHexInputFallback Disable fixing hex3 format
+     * @example let qColor = ColorItem.parse('rgb(255,0,0)');
+     * @static
+     * @returns {QixColor|null}
+     */
+
+  }, {
+    key: 'isValid',
+
+
+    /**
+     * Returns true if the color is valid, false if not.
+     *
+     * @returns {boolean}
+     */
+    value: function isValid() {
+      return this._original.valid === true;
+    }
+
+    /**
+     * Hue value from 0 to 360
+     *
+     * @returns {int}
+     */
+
+  }, {
+    key: 'setHueRatio',
+
+
+    /**
+     * Sets the hue ratio, where 1.0 is 0, 0.5 is 180 and 0.0 is 360.
+     *
+     * @ignore
+     * @param {number} h Ratio from 1.0 to 0.0
+     */
+    value: function setHueRatio(h) {
+      this.hue = (1 - h) * 360;
+    }
+
+    /**
+     * Sets the saturation value
+     *
+     * @param {int} value Integer from 0 to 100
+     */
+
+  }, {
+    key: 'setSaturationRatio',
+
+
+    /**
+     * Sets the saturation ratio, where 1.0 is 100 and 0.0 is 0.
+     *
+     * @ignore
+     * @param {number} s Ratio from 0.0 to 1.0
+     */
+    value: function setSaturationRatio(s) {
+      this.saturation = s * 100;
+    }
+
+    /**
+     * Sets the 'value' channel value
+     *
+     * @param {int} value Integer from 0 to 100
+     */
+
+  }, {
+    key: 'setValueRatio',
+
+
+    /**
+     * Sets the value ratio, where 1.0 is 0 and 0.0 is 100.
+     *
+     * @ignore
+     * @param {number} v Ratio from 1.0 to 0.0
+     */
+    value: function setValueRatio(v) {
+      this.value = (1 - v) * 100;
+    }
+
+    /**
+     * Sets the alpha value. It will be rounded to 2 decimals.
+     *
+     * @param {int} value Float from 0.0 to 1.0
+     */
+
+  }, {
+    key: 'setAlphaRatio',
+
+
+    /**
+     * Sets the alpha ratio, where 1.0 is 0.0 and 0.0 is 1.0.
+     *
+     * @ignore
+     * @param {number} a Ratio from 1.0 to 0.0
+     */
+    value: function setAlphaRatio(a) {
+      this.alpha = 1 - a;
+    }
+
+    /**
+     * Sets the default color format
+     *
+     * @param {String} value Supported: 'rgb', 'hsl', 'hex'
+     */
+
+  }, {
+    key: 'isDesaturated',
+
+
+    /**
+     * Returns true if the saturation value is zero, false otherwise
+     *
+     * @returns {boolean}
+     */
+    value: function isDesaturated() {
+      return this.saturation === 0;
+    }
+
+    /**
+     * Returns true if the alpha value is zero, false otherwise
+     *
+     * @returns {boolean}
+     */
+
+  }, {
+    key: 'isTransparent',
+    value: function isTransparent() {
+      return this.alpha === 0;
+    }
+
+    /**
+     * Returns true if the alpha value is numeric and less than 1, false otherwise
+     *
+     * @returns {boolean}
+     */
+
+  }, {
+    key: 'hasTransparency',
+    value: function hasTransparency() {
+      return this.hasAlpha() && this.alpha < 1;
+    }
+
+    /**
+     * Returns true if the alpha value is numeric, false otherwise
+     *
+     * @returns {boolean}
+     */
+
+  }, {
+    key: 'hasAlpha',
+    value: function hasAlpha() {
+      return !isNaN(this.alpha);
+    }
+
+    /**
+     * Returns a new HSVAColor object, based on the current color
+     *
+     * @returns {HSVAColor}
+     */
+
+  }, {
+    key: 'toObject',
+    value: function toObject() {
+      return new HSVAColor(this.hue, this.saturation, this.value, this.alpha);
+    }
+
+    /**
+     * Alias of toObject()
+     *
+     * @returns {HSVAColor}
+     */
+
+  }, {
+    key: 'toHsva',
+    value: function toHsva() {
+      return this.toObject();
+    }
+
+    /**
+     * Returns a new HSVAColor object with the ratio values (from 0.0 to 1.0),
+     * based on the current color.
+     *
+     * @ignore
+     * @returns {HSVAColor}
+     */
+
+  }, {
+    key: 'toHsvaRatio',
+    value: function toHsvaRatio() {
+      return new HSVAColor(this.hue / 360, this.saturation / 100, this.value / 100, this.alpha);
+    }
+
+    /**
+     * Converts the current color to its string representation,
+     * using the internal format of this instance.
+     *
+     * @returns {String}
+     */
+
+  }, {
+    key: 'toString',
+    value: function toString() {
+      return this.string();
+    }
+
+    /**
+     * Converts the current color to its string representation,
+     * using the given format.
+     *
+     * @param {String|null} format Format to convert to. If empty or null, the internal format will be used.
+     * @returns {String}
+     */
+
+  }, {
+    key: 'string',
+    value: function string() {
+      var format = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
+
+      format = ColorItem.sanitizeFormat(format ? format : this.format);
+
+      if (!format) {
+        return this._color.round().string();
+      }
+
+      if (this._color[format] === undefined) {
+        throw new Error('Unsupported color format: \'' + format + '\'');
+      }
+
+      var str = this._color[format]();
+
+      return str.round ? str.round().string() : str;
+    }
+
+    /**
+     * Returns true if the given color values equals this one, false otherwise.
+     * The format is not compared.
+     * If any of the colors is invalid, the result will be false.
+     *
+     * @param {ColorItem|HSVAColor|QixColor|String|*|null} color Color data
+     *
+     * @returns {boolean}
+     */
+
+  }, {
+    key: 'equals',
+    value: function equals(color) {
+      color = color instanceof ColorItem ? color : new ColorItem(color);
+
+      if (!color.isValid() || !this.isValid()) {
+        return false;
+      }
+
+      return this.hue === color.hue && this.saturation === color.saturation && this.value === color.value && this.alpha === color.alpha;
+    }
+
+    /**
+     * Creates a copy of this instance
+     *
+     * @returns {ColorItem}
+     */
+
+  }, {
+    key: 'getClone',
+    value: function getClone() {
+      return new ColorItem(this._color, this.format);
+    }
+
+    /**
+     * Creates a copy of this instance, only copying the hue value,
+     * and setting the others to its max value.
+     *
+     * @returns {ColorItem}
+     */
+
+  }, {
+    key: 'getCloneHueOnly',
+    value: function getCloneHueOnly() {
+      return new ColorItem([this.hue, 100, 100, 1], this.format);
+    }
+
+    /**
+     * Creates a copy of this instance setting the alpha to the max.
+     *
+     * @returns {ColorItem}
+     */
+
+  }, {
+    key: 'getCloneOpaque',
+    value: function getCloneOpaque() {
+      return new ColorItem(this._color.alpha(1), this.format);
+    }
+
+    /**
+     * Converts the color to a RGB string
+     *
+     * @returns {String}
+     */
+
+  }, {
+    key: 'toRgbString',
+    value: function toRgbString() {
+      return this.string('rgb');
+    }
+
+    /**
+     * Converts the color to a Hexadecimal string
+     *
+     * @returns {String}
+     */
+
+  }, {
+    key: 'toHexString',
+    value: function toHexString() {
+      return this.string('hex');
+    }
+
+    /**
+     * Converts the color to a HSL string
+     *
+     * @returns {String}
+     */
+
+  }, {
+    key: 'toHslString',
+    value: function toHslString() {
+      return this.string('hsl');
+    }
+
+    /**
+     * Returns true if the color is dark, false otherwhise.
+     * This is useful to decide a text color.
+     *
+     * @returns {boolean}
+     */
+
+  }, {
+    key: 'isDark',
+    value: function isDark() {
+      return this._color.isDark();
+    }
+
+    /**
+     * Returns true if the color is light, false otherwhise.
+     * This is useful to decide a text color.
+     *
+     * @returns {boolean}
+     */
+
+  }, {
+    key: 'isLight',
+    value: function isLight() {
+      return this._color.isLight();
+    }
+
+    /**
+     * Generates a list of colors using the given hue-based formula or the given array of hue values.
+     * Hue formulas can be extended using ColorItem.colorFormulas static property.
+     *
+     * @param {String|Number[]} formula Examples: 'complementary', 'triad', 'tetrad', 'splitcomplement', [180, 270]
+     * @example let colors = color.generate('triad');
+     * @example let colors = color.generate([45, 80, 112, 200]);
+     * @returns {ColorItem[]}
+     */
+
+  }, {
+    key: 'generate',
+    value: function generate(formula) {
+      var hues = [];
+
+      if (Array.isArray(formula)) {
+        hues = formula;
+      } else if (!ColorItem.colorFormulas.hasOwnProperty(formula)) {
+        throw new Error('No color formula found with the name \'' + formula + '\'.');
+      } else {
+        hues = ColorItem.colorFormulas[formula];
+      }
+
+      var colors = [],
+          mainColor = this._color,
+          format = this.format;
+
+      hues.forEach(function (hue) {
+        var levels = [hue ? (mainColor.hue() + hue) % 360 : mainColor.hue(), mainColor.saturationv(), mainColor.value(), mainColor.alpha()];
+
+        colors.push(new ColorItem(levels, format));
+      });
+
+      return colors;
+    }
+  }, {
+    key: 'hue',
+    get: function get() {
+      return this._color.hue();
+    }
+
+    /**
+     * Saturation value from 0 to 100
+     *
+     * @returns {int}
+     */
+    ,
+
+
+    /**
+     * Sets the hue value
+     *
+     * @param {int} value Integer from 0 to 360
+     */
+    set: function set(value) {
+      this._color = this._color.hue(value);
+    }
+  }, {
+    key: 'saturation',
+    get: function get() {
+      return this._color.saturationv();
+    }
+
+    /**
+     * Value channel value from 0 to 100
+     *
+     * @returns {int}
+     */
+    ,
+    set: function set(value) {
+      this._color = this._color.saturationv(value);
+    }
+  }, {
+    key: 'value',
+    get: function get() {
+      return this._color.value();
+    }
+
+    /**
+     * Alpha value from 0.0 to 1.0
+     *
+     * @returns {number}
+     */
+    ,
+    set: function set(value) {
+      this._color = this._color.value(value);
+    }
+  }, {
+    key: 'alpha',
+    get: function get() {
+      var a = this._color.alpha();
+
+      return isNaN(a) ? 1 : a;
+    }
+
+    /**
+     * Default color format to convert to when calling toString() or string()
+     *
+     * @returns {String} 'rgb', 'hsl', 'hex' or ''
+     */
+    ,
+    set: function set(value) {
+      // 2 decimals max
+      this._color = this._color.alpha(Math.round(value * 100) / 100);
+    }
+  }, {
+    key: 'format',
+    get: function get() {
+      return this._format ? this._format : this._color.model;
+    },
+    set: function set(value) {
+      this._format = ColorItem.sanitizeFormat(value);
+    }
+  }], [{
+    key: 'parse',
+    value: function parse(color) {
+      var disableHexInputFallback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
+
+      if (color instanceof _color2.default) {
+        return color;
+      }
+
+      if (color instanceof ColorItem) {
+        return color._color;
+      }
+
+      var format = null;
+
+      if (color instanceof HSVAColor) {
+        color = [color.h, color.s, color.v, isNaN(color.a) ? 1 : color.a];
+      } else {
+        color = ColorItem.sanitizeString(color);
+      }
+
+      if (color === null) {
+        return null;
+      }
+
+      if (Array.isArray(color)) {
+        format = 'hsv';
+      }
+
+      if (ColorItem.isHex(color) && color.length !== 6 && color.length !== 7 && disableHexInputFallback) {
+        return null;
+      }
+
+      try {
+        return (0, _color2.default)(color, format);
+      } catch (e) {
+        return null;
+      }
+    }
+
+    /**
+     * Sanitizes a color string, adding missing hash to hexadecimal colors
+     * and converting 'transparent' to a color code.
+     *
+     * @param {String|*} str Color string
+     * @example let colorStr = ColorItem.sanitizeString('ffaa00');
+     * @static
+     * @returns {String|*}
+     */
+
+  }, {
+    key: 'sanitizeString',
+    value: function sanitizeString(str) {
+      if (!(typeof str === 'string' || str instanceof String)) {
+        return str;
+      }
+
+      if (str.match(/^[0-9a-f]{2,}$/i)) {
+        return '#' + str;
+      }
+
+      if (str.toLowerCase() === 'transparent') {
+        return '#FFFFFF00';
+      }
+
+      return str;
+    }
+
+    /**
+     * Detects if a value is a string and a color in hexadecimal format (in any variant).
+     *
+     * @param {String} str
+     * @example ColorItem.isHex('rgba(0,0,0)'); // false
+     * @example ColorItem.isHex('ffaa00'); // true
+     * @example ColorItem.isHex('#ffaa00'); // true
+     * @static
+     * @returns {boolean}
+     */
+
+  }, {
+    key: 'isHex',
+    value: function isHex(str) {
+      if (!(typeof str === 'string' || str instanceof String)) {
+        return false;
+      }
+
+      return !!str.match(/^#?[0-9a-f]{2,}$/i);
+    }
+
+    /**
+     * Sanitizes a color format to one supported by web browsers.
+     * Returns an empty string of the format can't be recognised.
+     *
+     * @param {String|*} format
+     * @example ColorItem.sanitizeFormat('rgba'); // 'rgb'
+     * @example ColorItem.isHex('hex8'); // 'hex'
+     * @example ColorItem.isHex('invalid'); // ''
+     * @static
+     * @returns {String} 'rgb', 'hsl', 'hex' or ''.
+     */
+
+  }, {
+    key: 'sanitizeFormat',
+    value: function sanitizeFormat(format) {
+      switch (format) {
+        case 'hex':
+        case 'hex3':
+        case 'hex4':
+        case 'hex6':
+        case 'hex8':
+          return 'hex';
+        case 'rgb':
+        case 'rgba':
+        case 'keyword':
+        case 'name':
+          return 'rgb';
+        case 'hsl':
+        case 'hsla':
+        case 'hsv':
+        case 'hsva':
+        case 'hwb': // HWB this is supported by Qix Color, but not by browsers
+        case 'hwba':
+          return 'hsl';
+        default:
+          return '';
+      }
+    }
+  }]);
+
+  return ColorItem;
+}();
+
+/**
+ * List of hue-based color formulas used by ColorItem.prototype.generate()
+ *
+ * @static
+ * @type {{complementary: number[], triad: number[], tetrad: number[], splitcomplement: number[]}}
+ */
+
+
+ColorItem.colorFormulas = {
+  complementary: [180],
+  triad: [0, 120, 240],
+  tetrad: [0, 90, 180, 270],
+  splitcomplement: [0, 72, 216]
+};
+
+exports.default = ColorItem;
+exports.HSVAColor = HSVAColor;
+exports.ColorItem = ColorItem;
+
+/***/ }),
+/* 3 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+/**
+ * @module
+ */
+
+// adjust these values accordingly to the sass vars
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+var sassVars = {
+  'bar_size_short': 16,
+  'base_margin': 6,
+  'columns': 6
+};
+
+var sliderSize = sassVars.bar_size_short * sassVars.columns + sassVars.base_margin * (sassVars.columns - 1);
+
+/**
+ * Colorpicker default options
+ */
+exports.default = {
+  /**
+   * Custom class to be added to the `.colorpicker-element` element
+   *
+   * @type {String|null}
+   * @default null
+   */
+  customClass: null,
+  /**
+   * Sets a initial color, ignoring the one from the element/input value or the data-color attribute.
+   *
+   * @type {(String|ColorItem|boolean)}
+   * @default false
+   */
+  color: false,
+  /**
+   * Fallback color to use when the given color is invalid.
+   * If false, the latest valid color will be used as a fallback.
+   *
+   * @type {String|ColorItem|boolean}
+   * @default false
+   */
+  fallbackColor: false,
+  /**
+   * Forces an specific color format. If 'auto', it will be automatically detected the first time only,
+   * but if null it will be always recalculated.
+   *
+   * Note that the ending 'a' of the format meaning "alpha" has currently no effect, meaning that rgb is the same as
+   * rgba excepting if the alpha channel is disabled (see useAlpha).
+   *
+   * @type {('rgb'|'hex'|'hsl'|'auto'|null)}
+   * @default 'auto'
+   */
+  format: 'auto',
+  /**
+   * Horizontal mode layout.
+   *
+   * If true, the hue and alpha channel bars will be rendered horizontally, above the saturation selector.
+   *
+   * @type {boolean}
+   * @default false
+   */
+  horizontal: false,
+  /**
+   * Forces to show the colorpicker as an inline element.
+   *
+   * Note that if there is no container specified, the inline element
+   * will be added to the body, so you may want to set the container option.
+   *
+   * @type {boolean}
+   * @default false
+   */
+  inline: false,
+  /**
+   * Container where the colorpicker is appended to in the DOM.
+   *
+   * If is a string (CSS selector), the colorpicker will be placed inside this container.
+   * If true, the `.colorpicker-element` element itself will be used as the container.
+   * If false, the document body is used as the container, unless it is a popover (in this case it is appended to the
+   * popover body instead).
+   *
+   * @type {String|boolean}
+   * @default false
+   */
+  container: false,
+  /**
+   * Bootstrap Popover options.
+   * The trigger, content and html options are always ignored.
+   *
+   * @type {boolean}
+   * @default Object
+   */
+  popover: {
+    animation: true,
+    placement: 'bottom',
+    fallbackPlacement: 'flip'
+  },
+  /**
+   * If true, loads the 'debugger' extension automatically, which logs the events in the console
+   * @type {boolean}
+   * @default false
+   */
+  debug: false,
+  /**
+   * Child CSS selector for the colorpicker input.
+   *
+   * @type {String}
+   * @default 'input'
+   */
+  input: 'input',
+  /**
+   * Child CSS selector for the colorpicker addon.
+   * If it exists, the child <i> element background will be changed on color change.
+   *
+   * @type {String}
+   * @default '.colorpicker-trigger, .colorpicker-input-addon'
+   */
+  addon: '.colorpicker-input-addon',
+  /**
+   * If true, the input content will be replaced always with a valid color,
+   * if false, the invalid color will be left in the input,
+   *   while the internal color object will still resolve into a valid one.
+   *
+   * @type {boolean}
+   * @default true
+   */
+  autoInputFallback: true,
+  /**
+   * If true, valid HEX3 colors will be converted to HEX6, even with
+   *    autoInputFallback set to false
+   * if false, HEX3 colors will not be converted to HEX6, when autoInputFallback is false
+   *    (this has been an issue, when using HEX6 colors with
+   *    autoInputFallback set to false, HEX3 colors were
+   *    automatically converting to HEX6)
+   *
+   * @type {boolean}
+   * @default false
+   */
+  autoHexInputFallback: true,
+  /**
+   * If true a hash will be prepended to hexadecimal colors.
+   * If false, the hash will be removed.
+   * This only affects the input values in hexadecimal format.
+   *
+   * @type {boolean}
+   * @default true
+   */
+  useHashPrefix: true,
+  /**
+   * If true, the alpha channel bar will be displayed no matter what.
+   *
+   * If false, it will be always hidden and alpha channel will be disabled also programmatically, meaning that
+   * the selected or typed color will be always opaque.
+   *
+   * If null, the alpha channel will be automatically disabled/enabled depending if the initial color format supports
+   * alpha or not.
+   *
+   * @type {boolean}
+   * @default true
+   */
+  useAlpha: true,
+  /**
+   * Colorpicker widget template
+   * @type {String}
+   * @example
+   * <!-- This is the default template: -->
+   * <div class="colorpicker">
+   *   <div class="colorpicker-saturation"><i class="colorpicker-guide"></i></div>
+   *   <div class="colorpicker-hue"><i class="colorpicker-guide"></i></div>
+   *   <div class="colorpicker-alpha">
+   *     <div class="colorpicker-alpha-color"></div>
+   *     <i class="colorpicker-guide"></i>
+   *   </div>
+   * </div>
+   */
+  template: '<div class="colorpicker">\n      <div class="colorpicker-saturation"><i class="colorpicker-guide"></i></div>\n      <div class="colorpicker-hue"><i class="colorpicker-guide"></i></div>\n      <div class="colorpicker-alpha">\n        <div class="colorpicker-alpha-color"></div>\n        <i class="colorpicker-guide"></i>\n      </div>\n    </div>',
+  /**
+   *
+   * Associative object with the extension class name and its config.
+   * Colorpicker comes with many bundled extensions: debugger, palette, preview and swatches (a superset of palette).
+   *
+   * @type {Object[]}
+   * @example
+   *   extensions: [
+   *     {
+   *       name: 'swatches'
+   *       options: {
+   *         colors: {
+   *           'primary': '#337ab7',
+   *           'success': '#5cb85c',
+   *           'info': '#5bc0de',
+   *           'warning': '#f0ad4e',
+   *           'danger': '#d9534f'
+   *         },
+   *         namesAsValues: true
+   *       }
+   *     }
+   *   ]
+   */
+  extensions: [{
+    name: 'preview',
+    options: {
+      showText: true
+    }
+  }],
+  /**
+   * Vertical sliders configuration
+   * @type {Object}
+   */
+  sliders: {
+    saturation: {
+      selector: '.colorpicker-saturation',
+      maxLeft: sliderSize,
+      maxTop: sliderSize,
+      callLeft: 'setSaturationRatio',
+      callTop: 'setValueRatio'
+    },
+    hue: {
+      selector: '.colorpicker-hue',
+      maxLeft: 0,
+      maxTop: sliderSize,
+      callLeft: false,
+      callTop: 'setHueRatio'
+    },
+    alpha: {
+      selector: '.colorpicker-alpha',
+      childSelector: '.colorpicker-alpha-color',
+      maxLeft: 0,
+      maxTop: sliderSize,
+      callLeft: false,
+      callTop: 'setAlphaRatio'
+    }
+  },
+  /**
+   * Horizontal sliders configuration
+   * @type {Object}
+   */
+  slidersHorz: {
+    saturation: {
+      selector: '.colorpicker-saturation',
+      maxLeft: sliderSize,
+      maxTop: sliderSize,
+      callLeft: 'setSaturationRatio',
+      callTop: 'setValueRatio'
+    },
+    hue: {
+      selector: '.colorpicker-hue',
+      maxLeft: sliderSize,
+      maxTop: 0,
+      callLeft: 'setHueRatio',
+      callTop: false
+    },
+    alpha: {
+      selector: '.colorpicker-alpha',
+      childSelector: '.colorpicker-alpha-color',
+      maxLeft: sliderSize,
+      maxTop: 0,
+      callLeft: 'setAlphaRatio',
+      callTop: false
+    }
+  }
+};
+module.exports = exports.default;
+
+/***/ }),
+/* 4 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _Extension2 = __webpack_require__(1);
+
+var _Extension3 = _interopRequireDefault(_Extension2);
+
+var _jquery = __webpack_require__(0);
+
+var _jquery2 = _interopRequireDefault(_jquery);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+var defaults = {
+  /**
+   * Key-value pairs defining a color alias and its CSS color representation.
+   *
+   * They can also be just an array of values. In that case, no special names are used, only the real colors.
+   *
+   * @type {Object|Array}
+   * @default null
+   * @example
+   *  {
+   *   'black': '#000000',
+   *   'white': '#ffffff',
+   *   'red': '#FF0000',
+   *   'default': '#777777',
+   *   'primary': '#337ab7',
+   *   'success': '#5cb85c',
+   *   'info': '#5bc0de',
+   *   'warning': '#f0ad4e',
+   *   'danger': '#d9534f'
+   *  }
+   *
+   * @example ['#f0ad4e', '#337ab7', '#5cb85c']
+   */
+  colors: null,
+  /**
+   * If true, when a color swatch is selected the name (alias) will be used as input value,
+   * otherwise the swatch real color value will be used.
+   *
+   * @type {boolean}
+   * @default true
+   */
+  namesAsValues: true
+};
+
+/**
+ * Palette extension
+ * @ignore
+ */
+
+var Palette = function (_Extension) {
+  _inherits(Palette, _Extension);
+
+  _createClass(Palette, [{
+    key: 'colors',
+
+
+    /**
+     * @returns {Object|Array}
+     */
+    get: function get() {
+      return this.options.colors;
+    }
+  }]);
+
+  function Palette(colorpicker) {
+    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+
+    _classCallCheck(this, Palette);
+
+    var _this = _possibleConstructorReturn(this, (Palette.__proto__ || Object.getPrototypeOf(Palette)).call(this, colorpicker, _jquery2.default.extend(true, {}, defaults, options)));
+
+    if (!Array.isArray(_this.options.colors) && _typeof(_this.options.colors) !== 'object') {
+      _this.options.colors = null;
+    }
+    return _this;
+  }
+
+  /**
+   * @returns {int}
+   */
+
+
+  _createClass(Palette, [{
+    key: 'getLength',
+    value: function getLength() {
+      if (!this.options.colors) {
+        return 0;
+      }
+
+      if (Array.isArray(this.options.colors)) {
+        return this.options.colors.length;
+      }
+
+      if (_typeof(this.options.colors) === 'object') {
+        return Object.keys(this.options.colors).length;
+      }
+
+      return 0;
+    }
+  }, {
+    key: 'resolveColor',
+    value: function resolveColor(color) {
+      var realColor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
+
+      if (this.getLength() <= 0) {
+        return false;
+      }
+
+      // Array of colors
+      if (Array.isArray(this.options.colors)) {
+        if (this.options.colors.indexOf(color) >= 0) {
+          return color;
+        }
+        if (this.options.colors.indexOf(color.toUpperCase()) >= 0) {
+          return color.toUpperCase();
+        }
+        if (this.options.colors.indexOf(color.toLowerCase()) >= 0) {
+          return color.toLowerCase();
+        }
+        return false;
+      }
+
+      if (_typeof(this.options.colors) !== 'object') {
+        return false;
+      }
+
+      // Map of objects
+      if (!this.options.namesAsValues || realColor) {
+        return this.getValue(color, false);
+      }
+      return this.getName(color, this.getName('#' + color));
+    }
+
+    /**
+     * Given a color value, returns the corresponding color name or defaultValue.
+     *
+     * @param {String} value
+     * @param {*} defaultValue
+     * @returns {*}
+     */
+
+  }, {
+    key: 'getName',
+    value: function getName(value) {
+      var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
+
+      if (!(typeof value === 'string') || !this.options.colors) {
+        return defaultValue;
+      }
+      for (var name in this.options.colors) {
+        if (!this.options.colors.hasOwnProperty(name)) {
+          continue;
+        }
+        if (this.options.colors[name].toLowerCase() === value.toLowerCase()) {
+          return name;
+        }
+      }
+      return defaultValue;
+    }
+
+    /**
+     * Given a color name, returns the corresponding color value or defaultValue.
+     *
+     * @param {String} name
+     * @param {*} defaultValue
+     * @returns {*}
+     */
+
+  }, {
+    key: 'getValue',
+    value: function getValue(name) {
+      var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
+
+      if (!(typeof name === 'string') || !this.options.colors) {
+        return defaultValue;
+      }
+      if (this.options.colors.hasOwnProperty(name)) {
+        return this.options.colors[name];
+      }
+      return defaultValue;
+    }
+  }]);
+
+  return Palette;
+}(_Extension3.default);
+
+exports.default = Palette;
+module.exports = exports.default;
+
+/***/ }),
+/* 5 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+module.exports = {
+	"aliceblue": [240, 248, 255],
+	"antiquewhite": [250, 235, 215],
+	"aqua": [0, 255, 255],
+	"aquamarine": [127, 255, 212],
+	"azure": [240, 255, 255],
+	"beige": [245, 245, 220],
+	"bisque": [255, 228, 196],
+	"black": [0, 0, 0],
+	"blanchedalmond": [255, 235, 205],
+	"blue": [0, 0, 255],
+	"blueviolet": [138, 43, 226],
+	"brown": [165, 42, 42],
+	"burlywood": [222, 184, 135],
+	"cadetblue": [95, 158, 160],
+	"chartreuse": [127, 255, 0],
+	"chocolate": [210, 105, 30],
+	"coral": [255, 127, 80],
+	"cornflowerblue": [100, 149, 237],
+	"cornsilk": [255, 248, 220],
+	"crimson": [220, 20, 60],
+	"cyan": [0, 255, 255],
+	"darkblue": [0, 0, 139],
+	"darkcyan": [0, 139, 139],
+	"darkgoldenrod": [184, 134, 11],
+	"darkgray": [169, 169, 169],
+	"darkgreen": [0, 100, 0],
+	"darkgrey": [169, 169, 169],
+	"darkkhaki": [189, 183, 107],
+	"darkmagenta": [139, 0, 139],
+	"darkolivegreen": [85, 107, 47],
+	"darkorange": [255, 140, 0],
+	"darkorchid": [153, 50, 204],
+	"darkred": [139, 0, 0],
+	"darksalmon": [233, 150, 122],
+	"darkseagreen": [143, 188, 143],
+	"darkslateblue": [72, 61, 139],
+	"darkslategray": [47, 79, 79],
+	"darkslategrey": [47, 79, 79],
+	"darkturquoise": [0, 206, 209],
+	"darkviolet": [148, 0, 211],
+	"deeppink": [255, 20, 147],
+	"deepskyblue": [0, 191, 255],
+	"dimgray": [105, 105, 105],
+	"dimgrey": [105, 105, 105],
+	"dodgerblue": [30, 144, 255],
+	"firebrick": [178, 34, 34],
+	"floralwhite": [255, 250, 240],
+	"forestgreen": [34, 139, 34],
+	"fuchsia": [255, 0, 255],
+	"gainsboro": [220, 220, 220],
+	"ghostwhite": [248, 248, 255],
+	"gold": [255, 215, 0],
+	"goldenrod": [218, 165, 32],
+	"gray": [128, 128, 128],
+	"green": [0, 128, 0],
+	"greenyellow": [173, 255, 47],
+	"grey": [128, 128, 128],
+	"honeydew": [240, 255, 240],
+	"hotpink": [255, 105, 180],
+	"indianred": [205, 92, 92],
+	"indigo": [75, 0, 130],
+	"ivory": [255, 255, 240],
+	"khaki": [240, 230, 140],
+	"lavender": [230, 230, 250],
+	"lavenderblush": [255, 240, 245],
+	"lawngreen": [124, 252, 0],
+	"lemonchiffon": [255, 250, 205],
+	"lightblue": [173, 216, 230],
+	"lightcoral": [240, 128, 128],
+	"lightcyan": [224, 255, 255],
+	"lightgoldenrodyellow": [250, 250, 210],
+	"lightgray": [211, 211, 211],
+	"lightgreen": [144, 238, 144],
+	"lightgrey": [211, 211, 211],
+	"lightpink": [255, 182, 193],
+	"lightsalmon": [255, 160, 122],
+	"lightseagreen": [32, 178, 170],
+	"lightskyblue": [135, 206, 250],
+	"lightslategray": [119, 136, 153],
+	"lightslategrey": [119, 136, 153],
+	"lightsteelblue": [176, 196, 222],
+	"lightyellow": [255, 255, 224],
+	"lime": [0, 255, 0],
+	"limegreen": [50, 205, 50],
+	"linen": [250, 240, 230],
+	"magenta": [255, 0, 255],
+	"maroon": [128, 0, 0],
+	"mediumaquamarine": [102, 205, 170],
+	"mediumblue": [0, 0, 205],
+	"mediumorchid": [186, 85, 211],
+	"mediumpurple": [147, 112, 219],
+	"mediumseagreen": [60, 179, 113],
+	"mediumslateblue": [123, 104, 238],
+	"mediumspringgreen": [0, 250, 154],
+	"mediumturquoise": [72, 209, 204],
+	"mediumvioletred": [199, 21, 133],
+	"midnightblue": [25, 25, 112],
+	"mintcream": [245, 255, 250],
+	"mistyrose": [255, 228, 225],
+	"moccasin": [255, 228, 181],
+	"navajowhite": [255, 222, 173],
+	"navy": [0, 0, 128],
+	"oldlace": [253, 245, 230],
+	"olive": [128, 128, 0],
+	"olivedrab": [107, 142, 35],
+	"orange": [255, 165, 0],
+	"orangered": [255, 69, 0],
+	"orchid": [218, 112, 214],
+	"palegoldenrod": [238, 232, 170],
+	"palegreen": [152, 251, 152],
+	"paleturquoise": [175, 238, 238],
+	"palevioletred": [219, 112, 147],
+	"papayawhip": [255, 239, 213],
+	"peachpuff": [255, 218, 185],
+	"peru": [205, 133, 63],
+	"pink": [255, 192, 203],
+	"plum": [221, 160, 221],
+	"powderblue": [176, 224, 230],
+	"purple": [128, 0, 128],
+	"rebeccapurple": [102, 51, 153],
+	"red": [255, 0, 0],
+	"rosybrown": [188, 143, 143],
+	"royalblue": [65, 105, 225],
+	"saddlebrown": [139, 69, 19],
+	"salmon": [250, 128, 114],
+	"sandybrown": [244, 164, 96],
+	"seagreen": [46, 139, 87],
+	"seashell": [255, 245, 238],
+	"sienna": [160, 82, 45],
+	"silver": [192, 192, 192],
+	"skyblue": [135, 206, 235],
+	"slateblue": [106, 90, 205],
+	"slategray": [112, 128, 144],
+	"slategrey": [112, 128, 144],
+	"snow": [255, 250, 250],
+	"springgreen": [0, 255, 127],
+	"steelblue": [70, 130, 180],
+	"tan": [210, 180, 140],
+	"teal": [0, 128, 128],
+	"thistle": [216, 191, 216],
+	"tomato": [255, 99, 71],
+	"turquoise": [64, 224, 208],
+	"violet": [238, 130, 238],
+	"wheat": [245, 222, 179],
+	"white": [255, 255, 255],
+	"whitesmoke": [245, 245, 245],
+	"yellow": [255, 255, 0],
+	"yellowgreen": [154, 205, 50]
+};
+
+
+/***/ }),
+/* 6 */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* MIT license */
+var cssKeywords = __webpack_require__(5);
+
+// NOTE: conversions should only return primitive values (i.e. arrays, or
+//       values that give correct `typeof` results).
+//       do not use box values types (i.e. Number(), String(), etc.)
+
+var reverseKeywords = {};
+for (var key in cssKeywords) {
+	if (cssKeywords.hasOwnProperty(key)) {
+		reverseKeywords[cssKeywords[key]] = key;
+	}
+}
+
+var convert = module.exports = {
+	rgb: {channels: 3, labels: 'rgb'},
+	hsl: {channels: 3, labels: 'hsl'},
+	hsv: {channels: 3, labels: 'hsv'},
+	hwb: {channels: 3, labels: 'hwb'},
+	cmyk: {channels: 4, labels: 'cmyk'},
+	xyz: {channels: 3, labels: 'xyz'},
+	lab: {channels: 3, labels: 'lab'},
+	lch: {channels: 3, labels: 'lch'},
+	hex: {channels: 1, labels: ['hex']},
+	keyword: {channels: 1, labels: ['keyword']},
+	ansi16: {channels: 1, labels: ['ansi16']},
+	ansi256: {channels: 1, labels: ['ansi256']},
+	hcg: {channels: 3, labels: ['h', 'c', 'g']},
+	apple: {channels: 3, labels: ['r16', 'g16', 'b16']},
+	gray: {channels: 1, labels: ['gray']}
+};
+
+// hide .channels and .labels properties
+for (var model in convert) {
+	if (convert.hasOwnProperty(model)) {
+		if (!('channels' in convert[model])) {
+			throw new Error('missing channels property: ' + model);
+		}
+
+		if (!('labels' in convert[model])) {
+			throw new Error('missing channel labels property: ' + model);
+		}
+
+		if (convert[model].labels.length !== convert[model].channels) {
+			throw new Error('channel and label counts mismatch: ' + model);
+		}
+
+		var channels = convert[model].channels;
+		var labels = convert[model].labels;
+		delete convert[model].channels;
+		delete convert[model].labels;
+		Object.defineProperty(convert[model], 'channels', {value: channels});
+		Object.defineProperty(convert[model], 'labels', {value: labels});
+	}
+}
+
+convert.rgb.hsl = function (rgb) {
+	var r = rgb[0] / 255;
+	var g = rgb[1] / 255;
+	var b = rgb[2] / 255;
+	var min = Math.min(r, g, b);
+	var max = Math.max(r, g, b);
+	var delta = max - min;
+	var h;
+	var s;
+	var l;
+
+	if (max === min) {
+		h = 0;
+	} else if (r === max) {
+		h = (g - b) / delta;
+	} else if (g === max) {
+		h = 2 + (b - r) / delta;
+	} else if (b === max) {
+		h = 4 + (r - g) / delta;
+	}
+
+	h = Math.min(h * 60, 360);
+
+	if (h < 0) {
+		h += 360;
+	}
+
+	l = (min + max) / 2;
+
+	if (max === min) {
+		s = 0;
+	} else if (l <= 0.5) {
+		s = delta / (max + min);
+	} else {
+		s = delta / (2 - max - min);
+	}
+
+	return [h, s * 100, l * 100];
+};
+
+convert.rgb.hsv = function (rgb) {
+	var rdif;
+	var gdif;
+	var bdif;
+	var h;
+	var s;
+
+	var r = rgb[0] / 255;
+	var g = rgb[1] / 255;
+	var b = rgb[2] / 255;
+	var v = Math.max(r, g, b);
+	var diff = v - Math.min(r, g, b);
+	var diffc = function (c) {
+		return (v - c) / 6 / diff + 1 / 2;
+	};
+
+	if (diff === 0) {
+		h = s = 0;
+	} else {
+		s = diff / v;
+		rdif = diffc(r);
+		gdif = diffc(g);
+		bdif = diffc(b);
+
+		if (r === v) {
+			h = bdif - gdif;
+		} else if (g === v) {
+			h = (1 / 3) + rdif - bdif;
+		} else if (b === v) {
+			h = (2 / 3) + gdif - rdif;
+		}
+		if (h < 0) {
+			h += 1;
+		} else if (h > 1) {
+			h -= 1;
+		}
+	}
+
+	return [
+		h * 360,
+		s * 100,
+		v * 100
+	];
+};
+
+convert.rgb.hwb = function (rgb) {
+	var r = rgb[0];
+	var g = rgb[1];
+	var b = rgb[2];
+	var h = convert.rgb.hsl(rgb)[0];
+	var w = 1 / 255 * Math.min(r, Math.min(g, b));
+
+	b = 1 - 1 / 255 * Math.max(r, Math.max(g, b));
+
+	return [h, w * 100, b * 100];
+};
+
+convert.rgb.cmyk = function (rgb) {
+	var r = rgb[0] / 255;
+	var g = rgb[1] / 255;
+	var b = rgb[2] / 255;
+	var c;
+	var m;
+	var y;
+	var k;
+
+	k = Math.min(1 - r, 1 - g, 1 - b);
+	c = (1 - r - k) / (1 - k) || 0;
+	m = (1 - g - k) / (1 - k) || 0;
+	y = (1 - b - k) / (1 - k) || 0;
+
+	return [c * 100, m * 100, y * 100, k * 100];
+};
+
+/**
+ * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance
+ * */
+function comparativeDistance(x, y) {
+	return (
+		Math.pow(x[0] - y[0], 2) +
+		Math.pow(x[1] - y[1], 2) +
+		Math.pow(x[2] - y[2], 2)
+	);
+}
+
+convert.rgb.keyword = function (rgb) {
+	var reversed = reverseKeywords[rgb];
+	if (reversed) {
+		return reversed;
+	}
+
+	var currentClosestDistance = Infinity;
+	var currentClosestKeyword;
+
+	for (var keyword in cssKeywords) {
+		if (cssKeywords.hasOwnProperty(keyword)) {
+			var value = cssKeywords[keyword];
+
+			// Compute comparative distance
+			var distance = comparativeDistance(rgb, value);
+
+			// Check if its less, if so set as closest
+			if (distance < currentClosestDistance) {
+				currentClosestDistance = distance;
+				currentClosestKeyword = keyword;
+			}
+		}
+	}
+
+	return currentClosestKeyword;
+};
+
+convert.keyword.rgb = function (keyword) {
+	return cssKeywords[keyword];
+};
+
+convert.rgb.xyz = function (rgb) {
+	var r = rgb[0] / 255;
+	var g = rgb[1] / 255;
+	var b = rgb[2] / 255;
+
+	// assume sRGB
+	r = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);
+	g = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);
+	b = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);
+
+	var x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);
+	var y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);
+	var z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);
+
+	return [x * 100, y * 100, z * 100];
+};
+
+convert.rgb.lab = function (rgb) {
+	var xyz = convert.rgb.xyz(rgb);
+	var x = xyz[0];
+	var y = xyz[1];
+	var z = xyz[2];
+	var l;
+	var a;
+	var b;
+
+	x /= 95.047;
+	y /= 100;
+	z /= 108.883;
+
+	x = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);
+	y = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);
+	z = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);
+
+	l = (116 * y) - 16;
+	a = 500 * (x - y);
+	b = 200 * (y - z);
+
+	return [l, a, b];
+};
+
+convert.hsl.rgb = function (hsl) {
+	var h = hsl[0] / 360;
+	var s = hsl[1] / 100;
+	var l = hsl[2] / 100;
+	var t1;
+	var t2;
+	var t3;
+	var rgb;
+	var val;
+
+	if (s === 0) {
+		val = l * 255;
+		return [val, val, val];
+	}
+
+	if (l < 0.5) {
+		t2 = l * (1 + s);
+	} else {
+		t2 = l + s - l * s;
+	}
+
+	t1 = 2 * l - t2;
+
+	rgb = [0, 0, 0];
+	for (var i = 0; i < 3; i++) {
+		t3 = h + 1 / 3 * -(i - 1);
+		if (t3 < 0) {
+			t3++;
+		}
+		if (t3 > 1) {
+			t3--;
+		}
+
+		if (6 * t3 < 1) {
+			val = t1 + (t2 - t1) * 6 * t3;
+		} else if (2 * t3 < 1) {
+			val = t2;
+		} else if (3 * t3 < 2) {
+			val = t1 + (t2 - t1) * (2 / 3 - t3) * 6;
+		} else {
+			val = t1;
+		}
+
+		rgb[i] = val * 255;
+	}
+
+	return rgb;
+};
+
+convert.hsl.hsv = function (hsl) {
+	var h = hsl[0];
+	var s = hsl[1] / 100;
+	var l = hsl[2] / 100;
+	var smin = s;
+	var lmin = Math.max(l, 0.01);
+	var sv;
+	var v;
+
+	l *= 2;
+	s *= (l <= 1) ? l : 2 - l;
+	smin *= lmin <= 1 ? lmin : 2 - lmin;
+	v = (l + s) / 2;
+	sv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);
+
+	return [h, sv * 100, v * 100];
+};
+
+convert.hsv.rgb = function (hsv) {
+	var h = hsv[0] / 60;
+	var s = hsv[1] / 100;
+	var v = hsv[2] / 100;
+	var hi = Math.floor(h) % 6;
+
+	var f = h - Math.floor(h);
+	var p = 255 * v * (1 - s);
+	var q = 255 * v * (1 - (s * f));
+	var t = 255 * v * (1 - (s * (1 - f)));
+	v *= 255;
+
+	switch (hi) {
+		case 0:
+			return [v, t, p];
+		case 1:
+			return [q, v, p];
+		case 2:
+			return [p, v, t];
+		case 3:
+			return [p, q, v];
+		case 4:
+			return [t, p, v];
+		case 5:
+			return [v, p, q];
+	}
+};
+
+convert.hsv.hsl = function (hsv) {
+	var h = hsv[0];
+	var s = hsv[1] / 100;
+	var v = hsv[2] / 100;
+	var vmin = Math.max(v, 0.01);
+	var lmin;
+	var sl;
+	var l;
+
+	l = (2 - s) * v;
+	lmin = (2 - s) * vmin;
+	sl = s * vmin;
+	sl /= (lmin <= 1) ? lmin : 2 - lmin;
+	sl = sl || 0;
+	l /= 2;
+
+	return [h, sl * 100, l * 100];
+};
+
+// http://dev.w3.org/csswg/css-color/#hwb-to-rgb
+convert.hwb.rgb = function (hwb) {
+	var h = hwb[0] / 360;
+	var wh = hwb[1] / 100;
+	var bl = hwb[2] / 100;
+	var ratio = wh + bl;
+	var i;
+	var v;
+	var f;
+	var n;
+
+	// wh + bl cant be > 1
+	if (ratio > 1) {
+		wh /= ratio;
+		bl /= ratio;
+	}
+
+	i = Math.floor(6 * h);
+	v = 1 - bl;
+	f = 6 * h - i;
+
+	if ((i & 0x01) !== 0) {
+		f = 1 - f;
+	}
+
+	n = wh + f * (v - wh); // linear interpolation
+
+	var r;
+	var g;
+	var b;
+	switch (i) {
+		default:
+		case 6:
+		case 0: r = v; g = n; b = wh; break;
+		case 1: r = n; g = v; b = wh; break;
+		case 2: r = wh; g = v; b = n; break;
+		case 3: r = wh; g = n; b = v; break;
+		case 4: r = n; g = wh; b = v; break;
+		case 5: r = v; g = wh; b = n; break;
+	}
+
+	return [r * 255, g * 255, b * 255];
+};
+
+convert.cmyk.rgb = function (cmyk) {
+	var c = cmyk[0] / 100;
+	var m = cmyk[1] / 100;
+	var y = cmyk[2] / 100;
+	var k = cmyk[3] / 100;
+	var r;
+	var g;
+	var b;
+
+	r = 1 - Math.min(1, c * (1 - k) + k);
+	g = 1 - Math.min(1, m * (1 - k) + k);
+	b = 1 - Math.min(1, y * (1 - k) + k);
+
+	return [r * 255, g * 255, b * 255];
+};
+
+convert.xyz.rgb = function (xyz) {
+	var x = xyz[0] / 100;
+	var y = xyz[1] / 100;
+	var z = xyz[2] / 100;
+	var r;
+	var g;
+	var b;
+
+	r = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);
+	g = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);
+	b = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);
+
+	// assume sRGB
+	r = r > 0.0031308
+		? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)
+		: r * 12.92;
+
+	g = g > 0.0031308
+		? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)
+		: g * 12.92;
+
+	b = b > 0.0031308
+		? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)
+		: b * 12.92;
+
+	r = Math.min(Math.max(0, r), 1);
+	g = Math.min(Math.max(0, g), 1);
+	b = Math.min(Math.max(0, b), 1);
+
+	return [r * 255, g * 255, b * 255];
+};
+
+convert.xyz.lab = function (xyz) {
+	var x = xyz[0];
+	var y = xyz[1];
+	var z = xyz[2];
+	var l;
+	var a;
+	var b;
+
+	x /= 95.047;
+	y /= 100;
+	z /= 108.883;
+
+	x = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);
+	y = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);
+	z = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);
+
+	l = (116 * y) - 16;
+	a = 500 * (x - y);
+	b = 200 * (y - z);
+
+	return [l, a, b];
+};
+
+convert.lab.xyz = function (lab) {
+	var l = lab[0];
+	var a = lab[1];
+	var b = lab[2];
+	var x;
+	var y;
+	var z;
+
+	y = (l + 16) / 116;
+	x = a / 500 + y;
+	z = y - b / 200;
+
+	var y2 = Math.pow(y, 3);
+	var x2 = Math.pow(x, 3);
+	var z2 = Math.pow(z, 3);
+	y = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;
+	x = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;
+	z = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;
+
+	x *= 95.047;
+	y *= 100;
+	z *= 108.883;
+
+	return [x, y, z];
+};
+
+convert.lab.lch = function (lab) {
+	var l = lab[0];
+	var a = lab[1];
+	var b = lab[2];
+	var hr;
+	var h;
+	var c;
+
+	hr = Math.atan2(b, a);
+	h = hr * 360 / 2 / Math.PI;
+
+	if (h < 0) {
+		h += 360;
+	}
+
+	c = Math.sqrt(a * a + b * b);
+
+	return [l, c, h];
+};
+
+convert.lch.lab = function (lch) {
+	var l = lch[0];
+	var c = lch[1];
+	var h = lch[2];
+	var a;
+	var b;
+	var hr;
+
+	hr = h / 360 * 2 * Math.PI;
+	a = c * Math.cos(hr);
+	b = c * Math.sin(hr);
+
+	return [l, a, b];
+};
+
+convert.rgb.ansi16 = function (args) {
+	var r = args[0];
+	var g = args[1];
+	var b = args[2];
+	var value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization
+
+	value = Math.round(value / 50);
+
+	if (value === 0) {
+		return 30;
+	}
+
+	var ansi = 30
+		+ ((Math.round(b / 255) << 2)
+		| (Math.round(g / 255) << 1)
+		| Math.round(r / 255));
+
+	if (value === 2) {
+		ansi += 60;
+	}
+
+	return ansi;
+};
+
+convert.hsv.ansi16 = function (args) {
+	// optimization here; we already know the value and don't need to get
+	// it converted for us.
+	return convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);
+};
+
+convert.rgb.ansi256 = function (args) {
+	var r = args[0];
+	var g = args[1];
+	var b = args[2];
+
+	// we use the extended greyscale palette here, with the exception of
+	// black and white. normal palette only has 4 greyscale shades.
+	if (r === g && g === b) {
+		if (r < 8) {
+			return 16;
+		}
+
+		if (r > 248) {
+			return 231;
+		}
+
+		return Math.round(((r - 8) / 247) * 24) + 232;
+	}
+
+	var ansi = 16
+		+ (36 * Math.round(r / 255 * 5))
+		+ (6 * Math.round(g / 255 * 5))
+		+ Math.round(b / 255 * 5);
+
+	return ansi;
+};
+
+convert.ansi16.rgb = function (args) {
+	var color = args % 10;
+
+	// handle greyscale
+	if (color === 0 || color === 7) {
+		if (args > 50) {
+			color += 3.5;
+		}
+
+		color = color / 10.5 * 255;
+
+		return [color, color, color];
+	}
+
+	var mult = (~~(args > 50) + 1) * 0.5;
+	var r = ((color & 1) * mult) * 255;
+	var g = (((color >> 1) & 1) * mult) * 255;
+	var b = (((color >> 2) & 1) * mult) * 255;
+
+	return [r, g, b];
+};
+
+convert.ansi256.rgb = function (args) {
+	// handle greyscale
+	if (args >= 232) {
+		var c = (args - 232) * 10 + 8;
+		return [c, c, c];
+	}
+
+	args -= 16;
+
+	var rem;
+	var r = Math.floor(args / 36) / 5 * 255;
+	var g = Math.floor((rem = args % 36) / 6) / 5 * 255;
+	var b = (rem % 6) / 5 * 255;
+
+	return [r, g, b];
+};
+
+convert.rgb.hex = function (args) {
+	var integer = ((Math.round(args[0]) & 0xFF) << 16)
+		+ ((Math.round(args[1]) & 0xFF) << 8)
+		+ (Math.round(args[2]) & 0xFF);
+
+	var string = integer.toString(16).toUpperCase();
+	return '000000'.substring(string.length) + string;
+};
+
+convert.hex.rgb = function (args) {
+	var match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);
+	if (!match) {
+		return [0, 0, 0];
+	}
+
+	var colorString = match[0];
+
+	if (match[0].length === 3) {
+		colorString = colorString.split('').map(function (char) {
+			return char + char;
+		}).join('');
+	}
+
+	var integer = parseInt(colorString, 16);
+	var r = (integer >> 16) & 0xFF;
+	var g = (integer >> 8) & 0xFF;
+	var b = integer & 0xFF;
+
+	return [r, g, b];
+};
+
+convert.rgb.hcg = function (rgb) {
+	var r = rgb[0] / 255;
+	var g = rgb[1] / 255;
+	var b = rgb[2] / 255;
+	var max = Math.max(Math.max(r, g), b);
+	var min = Math.min(Math.min(r, g), b);
+	var chroma = (max - min);
+	var grayscale;
+	var hue;
+
+	if (chroma < 1) {
+		grayscale = min / (1 - chroma);
+	} else {
+		grayscale = 0;
+	}
+
+	if (chroma <= 0) {
+		hue = 0;
+	} else
+	if (max === r) {
+		hue = ((g - b) / chroma) % 6;
+	} else
+	if (max === g) {
+		hue = 2 + (b - r) / chroma;
+	} else {
+		hue = 4 + (r - g) / chroma + 4;
+	}
+
+	hue /= 6;
+	hue %= 1;
+
+	return [hue * 360, chroma * 100, grayscale * 100];
+};
+
+convert.hsl.hcg = function (hsl) {
+	var s = hsl[1] / 100;
+	var l = hsl[2] / 100;
+	var c = 1;
+	var f = 0;
+
+	if (l < 0.5) {
+		c = 2.0 * s * l;
+	} else {
+		c = 2.0 * s * (1.0 - l);
+	}
+
+	if (c < 1.0) {
+		f = (l - 0.5 * c) / (1.0 - c);
+	}
+
+	return [hsl[0], c * 100, f * 100];
+};
+
+convert.hsv.hcg = function (hsv) {
+	var s = hsv[1] / 100;
+	var v = hsv[2] / 100;
+
+	var c = s * v;
+	var f = 0;
+
+	if (c < 1.0) {
+		f = (v - c) / (1 - c);
+	}
+
+	return [hsv[0], c * 100, f * 100];
+};
+
+convert.hcg.rgb = function (hcg) {
+	var h = hcg[0] / 360;
+	var c = hcg[1] / 100;
+	var g = hcg[2] / 100;
+
+	if (c === 0.0) {
+		return [g * 255, g * 255, g * 255];
+	}
+
+	var pure = [0, 0, 0];
+	var hi = (h % 1) * 6;
+	var v = hi % 1;
+	var w = 1 - v;
+	var mg = 0;
+
+	switch (Math.floor(hi)) {
+		case 0:
+			pure[0] = 1; pure[1] = v; pure[2] = 0; break;
+		case 1:
+			pure[0] = w; pure[1] = 1; pure[2] = 0; break;
+		case 2:
+			pure[0] = 0; pure[1] = 1; pure[2] = v; break;
+		case 3:
+			pure[0] = 0; pure[1] = w; pure[2] = 1; break;
+		case 4:
+			pure[0] = v; pure[1] = 0; pure[2] = 1; break;
+		default:
+			pure[0] = 1; pure[1] = 0; pure[2] = w;
+	}
+
+	mg = (1.0 - c) * g;
+
+	return [
+		(c * pure[0] + mg) * 255,
+		(c * pure[1] + mg) * 255,
+		(c * pure[2] + mg) * 255
+	];
+};
+
+convert.hcg.hsv = function (hcg) {
+	var c = hcg[1] / 100;
+	var g = hcg[2] / 100;
+
+	var v = c + g * (1.0 - c);
+	var f = 0;
+
+	if (v > 0.0) {
+		f = c / v;
+	}
+
+	return [hcg[0], f * 100, v * 100];
+};
+
+convert.hcg.hsl = function (hcg) {
+	var c = hcg[1] / 100;
+	var g = hcg[2] / 100;
+
+	var l = g * (1.0 - c) + 0.5 * c;
+	var s = 0;
+
+	if (l > 0.0 && l < 0.5) {
+		s = c / (2 * l);
+	} else
+	if (l >= 0.5 && l < 1.0) {
+		s = c / (2 * (1 - l));
+	}
+
+	return [hcg[0], s * 100, l * 100];
+};
+
+convert.hcg.hwb = function (hcg) {
+	var c = hcg[1] / 100;
+	var g = hcg[2] / 100;
+	var v = c + g * (1.0 - c);
+	return [hcg[0], (v - c) * 100, (1 - v) * 100];
+};
+
+convert.hwb.hcg = function (hwb) {
+	var w = hwb[1] / 100;
+	var b = hwb[2] / 100;
+	var v = 1 - b;
+	var c = v - w;
+	var g = 0;
+
+	if (c < 1) {
+		g = (v - c) / (1 - c);
+	}
+
+	return [hwb[0], c * 100, g * 100];
+};
+
+convert.apple.rgb = function (apple) {
+	return [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];
+};
+
+convert.rgb.apple = function (rgb) {
+	return [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];
+};
+
+convert.gray.rgb = function (args) {
+	return [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];
+};
+
+convert.gray.hsl = convert.gray.hsv = function (args) {
+	return [0, 0, args[0]];
+};
+
+convert.gray.hwb = function (gray) {
+	return [0, 100, gray[0]];
+};
+
+convert.gray.cmyk = function (gray) {
+	return [0, 0, 0, gray[0]];
+};
+
+convert.gray.lab = function (gray) {
+	return [gray[0], 0, 0];
+};
+
+convert.gray.hex = function (gray) {
+	var val = Math.round(gray[0] / 100 * 255) & 0xFF;
+	var integer = (val << 16) + (val << 8) + val;
+
+	var string = integer.toString(16).toUpperCase();
+	return '000000'.substring(string.length) + string;
+};
+
+convert.rgb.gray = function (rgb) {
+	var val = (rgb[0] + rgb[1] + rgb[2]) / 3;
+	return [val / 255 * 100];
+};
+
+
+/***/ }),
+/* 7 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+var _Colorpicker = __webpack_require__(8);
+
+var _Colorpicker2 = _interopRequireDefault(_Colorpicker);
+
+var _jquery = __webpack_require__(0);
+
+var _jquery2 = _interopRequireDefault(_jquery);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var plugin = 'colorpicker';
+
+_jquery2.default[plugin] = _Colorpicker2.default;
+
+// Colorpicker jQuery Plugin API
+_jquery2.default.fn[plugin] = function (option) {
+  var fnArgs = Array.prototype.slice.call(arguments, 1),
+      isSingleElement = this.length === 1,
+      returnValue = null;
+
+  var $elements = this.each(function () {
+    var $this = (0, _jquery2.default)(this),
+        inst = $this.data(plugin),
+        options = (typeof option === 'undefined' ? 'undefined' : _typeof(option)) === 'object' ? option : {};
+
+    // Create instance if does not exist
+    if (!inst) {
+      inst = new _Colorpicker2.default(this, options);
+      $this.data(plugin, inst);
+    }
+
+    if (!isSingleElement) {
+      return;
+    }
+
+    returnValue = $this;
+
+    if (typeof option === 'string') {
+      if (option === 'colorpicker') {
+        // Return colorpicker instance: e.g. .colorpicker('colorpicker')
+        returnValue = inst;
+      } else if (_jquery2.default.isFunction(inst[option])) {
+        // Return method call return value: e.g. .colorpicker('isEnabled')
+        returnValue = inst[option].apply(inst, fnArgs);
+      } else {
+        // Return property value: e.g. .colorpicker('element')
+        returnValue = inst[option];
+      }
+    }
+  });
+
+  return isSingleElement ? returnValue : $elements;
+};
+
+_jquery2.default.fn[plugin].constructor = _Colorpicker2.default;
+
+/***/ }),
+/* 8 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _Extension = __webpack_require__(1);
+
+var _Extension2 = _interopRequireDefault(_Extension);
+
+var _options = __webpack_require__(3);
+
+var _options2 = _interopRequireDefault(_options);
+
+var _extensions = __webpack_require__(9);
+
+var _extensions2 = _interopRequireDefault(_extensions);
+
+var _jquery = __webpack_require__(0);
+
+var _jquery2 = _interopRequireDefault(_jquery);
+
+var _SliderHandler = __webpack_require__(13);
+
+var _SliderHandler2 = _interopRequireDefault(_SliderHandler);
+
+var _PopupHandler = __webpack_require__(14);
+
+var _PopupHandler2 = _interopRequireDefault(_PopupHandler);
+
+var _InputHandler = __webpack_require__(15);
+
+var _InputHandler2 = _interopRequireDefault(_InputHandler);
+
+var _ColorHandler = __webpack_require__(22);
+
+var _ColorHandler2 = _interopRequireDefault(_ColorHandler);
+
+var _PickerHandler = __webpack_require__(23);
+
+var _PickerHandler2 = _interopRequireDefault(_PickerHandler);
+
+var _AddonHandler = __webpack_require__(24);
+
+var _AddonHandler2 = _interopRequireDefault(_AddonHandler);
+
+var _ColorItem = __webpack_require__(2);
+
+var _ColorItem2 = _interopRequireDefault(_ColorItem);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+var colorPickerIdCounter = 0;
+
+var root = typeof self !== 'undefined' ? self : undefined; // window
+
+/**
+ * Colorpicker widget class
+ */
+
+var Colorpicker = function () {
+  _createClass(Colorpicker, [{
+    key: 'color',
+
+
+    /**
+     * Internal color object
+     *
+     * @type {Color|null}
+     */
+    get: function get() {
+      return this.colorHandler.color;
+    }
+
+    /**
+     * Internal color format
+     *
+     * @type {String|null}
+     */
+
+  }, {
+    key: 'format',
+    get: function get() {
+      return this.colorHandler.format;
+    }
+
+    /**
+     * Getter of the picker element
+     *
+     * @returns {jQuery|HTMLElement}
+     */
+
+  }, {
+    key: 'picker',
+    get: function get() {
+      return this.pickerHandler.picker;
+    }
+
+    /**
+     * @fires Colorpicker#colorpickerCreate
+     * @param {Object|String} element
+     * @param {Object} options
+     * @constructor
+     */
+
+  }], [{
+    key: 'Color',
+
+    /**
+     * Color class
+     *
+     * @static
+     * @type {Color}
+     */
+    get: function get() {
+      return _ColorItem2.default;
+    }
+
+    /**
+     * Extension class
+     *
+     * @static
+     * @type {Extension}
+     */
+
+  }, {
+    key: 'Extension',
+    get: function get() {
+      return _Extension2.default;
+    }
+  }]);
+
+  function Colorpicker(element, options) {
+    _classCallCheck(this, Colorpicker);
+
+    colorPickerIdCounter += 1;
+    /**
+     * The colorpicker instance number
+     * @type {number}
+     */
+    this.id = colorPickerIdCounter;
+
+    /**
+     * Latest colorpicker event
+     *
+     * @type {{name: String, e: *}}
+     */
+    this.lastEvent = {
+      alias: null,
+      e: null
+    };
+
+    /**
+     * The element that the colorpicker is bound to
+     *
+     * @type {*|jQuery}
+     */
+    this.element = (0, _jquery2.default)(element).addClass('colorpicker-element').attr('data-colorpicker-id', this.id);
+
+    /**
+     * @type {defaults}
+     */
+    this.options = _jquery2.default.extend(true, {}, _options2.default, options, this.element.data());
+
+    /**
+     * @type {boolean}
+     * @private
+     */
+    this.disabled = false;
+
+    /**
+     * Extensions added to this instance
+     *
+     * @type {Extension[]}
+     */
+    this.extensions = [];
+
+    /**
+     * The element where the
+     * @type {*|jQuery}
+     */
+    this.container = this.options.container === true || this.options.container !== true && this.options.inline === true ? this.element : this.options.container;
+
+    this.container = this.container !== false ? (0, _jquery2.default)(this.container) : false;
+
+    /**
+     * @type {InputHandler}
+     */
+    this.inputHandler = new _InputHandler2.default(this);
+    /**
+     * @type {ColorHandler}
+     */
+    this.colorHandler = new _ColorHandler2.default(this);
+    /**
+     * @type {SliderHandler}
+     */
+    this.sliderHandler = new _SliderHandler2.default(this);
+    /**
+     * @type {PopupHandler}
+     */
+    this.popupHandler = new _PopupHandler2.default(this, root);
+    /**
+     * @type {PickerHandler}
+     */
+    this.pickerHandler = new _PickerHandler2.default(this);
+    /**
+     * @type {AddonHandler}
+     */
+    this.addonHandler = new _AddonHandler2.default(this);
+
+    this.init();
+
+    // Emit a create event
+    (0, _jquery2.default)(_jquery2.default.proxy(function () {
+      /**
+       * (Colorpicker) When the Colorpicker instance has been created and the DOM is ready.
+       *
+       * @event Colorpicker#colorpickerCreate
+       */
+      this.trigger('colorpickerCreate');
+    }, this));
+  }
+
+  /**
+   * Initializes the plugin
+   * @private
+   */
+
+
+  _createClass(Colorpicker, [{
+    key: 'init',
+    value: function init() {
+      // Init addon
+      this.addonHandler.bind();
+
+      // Init input
+      this.inputHandler.bind();
+
+      // Init extensions (before initializing the color)
+      this.initExtensions();
+
+      // Init color
+      this.colorHandler.bind();
+
+      // Init picker
+      this.pickerHandler.bind();
+
+      // Init sliders and popup
+      this.sliderHandler.bind();
+      this.popupHandler.bind();
+
+      // Inject into the DOM (this may make it visible)
+      this.pickerHandler.attach();
+
+      // Update all components
+      this.update();
+
+      if (this.inputHandler.isDisabled()) {
+        this.disable();
+      }
+    }
+
+    /**
+     * Initializes the plugin extensions
+     * @private
+     */
+
+  }, {
+    key: 'initExtensions',
+    value: function initExtensions() {
+      var _this = this;
+
+      if (!Array.isArray(this.options.extensions)) {
+        this.options.extensions = [];
+      }
+
+      if (this.options.debug) {
+        this.options.extensions.push({ name: 'debugger' });
+      }
+
+      // Register and instantiate extensions
+      this.options.extensions.forEach(function (ext) {
+        _this.registerExtension(Colorpicker.extensions[ext.name.toLowerCase()], ext.options || {});
+      });
+    }
+
+    /**
+     * Creates and registers the given extension
+     *
+     * @param {Extension} ExtensionClass The extension class to instantiate
+     * @param {Object} [config] Extension configuration
+     * @returns {Extension}
+     */
+
+  }, {
+    key: 'registerExtension',
+    value: function registerExtension(ExtensionClass) {
+      var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+
+      var ext = new ExtensionClass(this, config);
+
+      this.extensions.push(ext);
+      return ext;
+    }
+
+    /**
+     * Destroys the current instance
+     *
+     * @fires Colorpicker#colorpickerDestroy
+     */
+
+  }, {
+    key: 'destroy',
+    value: function destroy() {
+      var color = this.color;
+
+      this.sliderHandler.unbind();
+      this.inputHandler.unbind();
+      this.popupHandler.unbind();
+      this.colorHandler.unbind();
+      this.addonHandler.unbind();
+      this.pickerHandler.unbind();
+
+      this.element.removeClass('colorpicker-element').removeData('colorpicker').removeData('color').off('.colorpicker');
+
+      /**
+       * (Colorpicker) When the instance is destroyed with all events unbound.
+       *
+       * @event Colorpicker#colorpickerDestroy
+       */
+      this.trigger('colorpickerDestroy', color);
+    }
+
+    /**
+     * Shows the colorpicker widget if hidden.
+     * If the colorpicker is disabled this call will be ignored.
+     *
+     * @fires Colorpicker#colorpickerShow
+     * @param {Event} [e]
+     */
+
+  }, {
+    key: 'show',
+    value: function show(e) {
+      this.popupHandler.show(e);
+    }
+
+    /**
+     * Hides the colorpicker widget.
+     *
+     * @fires Colorpicker#colorpickerHide
+     * @param {Event} [e]
+     */
+
+  }, {
+    key: 'hide',
+    value: function hide(e) {
+      this.popupHandler.hide(e);
+    }
+
+    /**
+     * Toggles the colorpicker between visible and hidden.
+     *
+     * @fires Colorpicker#colorpickerShow
+     * @fires Colorpicker#colorpickerHide
+     * @param {Event} [e]
+     */
+
+  }, {
+    key: 'toggle',
+    value: function toggle(e) {
+      this.popupHandler.toggle(e);
+    }
+
+    /**
+     * Returns the current color value as string
+     *
+     * @param {String|*} [defaultValue]
+     * @returns {String|*}
+     */
+
+  }, {
+    key: 'getValue',
+    value: function getValue() {
+      var defaultValue = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
+
+      var val = this.colorHandler.color;
+
+      val = val instanceof _ColorItem2.default ? val : defaultValue;
+
+      if (val instanceof _ColorItem2.default) {
+        return val.string(this.format);
+      }
+
+      return val;
+    }
+
+    /**
+     * Sets the color manually
+     *
+     * @fires Colorpicker#colorpickerChange
+     * @param {String|Color} val
+     */
+
+  }, {
+    key: 'setValue',
+    value: function setValue(val) {
+      if (this.isDisabled()) {
+        return;
+      }
+      var ch = this.colorHandler;
+
+      if (ch.hasColor() && !!val && ch.color.equals(val) || !ch.hasColor() && !val) {
+        // same color or still empty
+        return;
+      }
+
+      ch.color = val ? ch.createColor(val, this.options.autoInputFallback, this.options.autoHexInputFallback) : null;
+
+      /**
+       * (Colorpicker) When the color is set programmatically with setValue().
+       *
+       * @event Colorpicker#colorpickerChange
+       */
+      this.trigger('colorpickerChange', ch.color, val);
+
+      // force update if color has changed to empty
+      this.update();
+    }
+
+    /**
+     * Updates the UI and the input color according to the internal color.
+     *
+     * @fires Colorpicker#colorpickerUpdate
+     */
+
+  }, {
+    key: 'update',
+    value: function update() {
+      if (this.colorHandler.hasColor()) {
+        this.inputHandler.update();
+      } else {
+        this.colorHandler.assureColor();
+      }
+
+      this.addonHandler.update();
+      this.pickerHandler.update();
+
+      /**
+       * (Colorpicker) Fired when the widget is updated.
+       *
+       * @event Colorpicker#colorpickerUpdate
+       */
+      this.trigger('colorpickerUpdate');
+    }
+
+    /**
+     * Enables the widget and the input if any
+     *
+     * @fires Colorpicker#colorpickerEnable
+     * @returns {boolean}
+     */
+
+  }, {
+    key: 'enable',
+    value: function enable() {
+      this.inputHandler.enable();
+      this.disabled = false;
+      this.picker.removeClass('colorpicker-disabled');
+
+      /**
+       * (Colorpicker) When the widget has been enabled.
+       *
+       * @event Colorpicker#colorpickerEnable
+       */
+      this.trigger('colorpickerEnable');
+      return true;
+    }
+
+    /**
+     * Disables the widget and the input if any
+     *
+     * @fires Colorpicker#colorpickerDisable
+     * @returns {boolean}
+     */
+
+  }, {
+    key: 'disable',
+    value: function disable() {
+      this.inputHandler.disable();
+      this.disabled = true;
+      this.picker.addClass('colorpicker-disabled');
+
+      /**
+       * (Colorpicker) When the widget has been disabled.
+       *
+       * @event Colorpicker#colorpickerDisable
+       */
+      this.trigger('colorpickerDisable');
+      return true;
+    }
+
+    /**
+     * Returns true if this instance is enabled
+     * @returns {boolean}
+     */
+
+  }, {
+    key: 'isEnabled',
+    value: function isEnabled() {
+      return !this.isDisabled();
+    }
+
+    /**
+     * Returns true if this instance is disabled
+     * @returns {boolean}
+     */
+
+  }, {
+    key: 'isDisabled',
+    value: function isDisabled() {
+      return this.disabled === true;
+    }
+
+    /**
+     * Triggers a Colorpicker event.
+     *
+     * @param eventName
+     * @param color
+     * @param value
+     */
+
+  }, {
+    key: 'trigger',
+    value: function trigger(eventName) {
+      var color = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
+      var value = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
+
+      this.element.trigger({
+        type: eventName,
+        colorpicker: this,
+        color: color ? color : this.color,
+        value: value ? value : this.getValue()
+      });
+    }
+  }]);
+
+  return Colorpicker;
+}();
+
+/**
+ * Colorpicker extension classes, indexed by extension name
+ *
+ * @static
+ * @type {Object} a map between the extension name and its class
+ */
+
+
+Colorpicker.extensions = _extensions2.default;
+
+exports.default = Colorpicker;
+module.exports = exports.default;
+
+/***/ }),
+/* 9 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.Palette = exports.Swatches = exports.Preview = exports.Debugger = undefined;
+
+var _Debugger = __webpack_require__(10);
+
+var _Debugger2 = _interopRequireDefault(_Debugger);
+
+var _Preview = __webpack_require__(11);
+
+var _Preview2 = _interopRequireDefault(_Preview);
+
+var _Swatches = __webpack_require__(12);
+
+var _Swatches2 = _interopRequireDefault(_Swatches);
+
+var _Palette = __webpack_require__(4);
+
+var _Palette2 = _interopRequireDefault(_Palette);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+exports.Debugger = _Debugger2.default;
+exports.Preview = _Preview2.default;
+exports.Swatches = _Swatches2.default;
+exports.Palette = _Palette2.default;
+exports.default = {
+  'debugger': _Debugger2.default,
+  'preview': _Preview2.default,
+  'swatches': _Swatches2.default,
+  'palette': _Palette2.default
+};
+
+/***/ }),
+/* 10 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
+
+var _Extension2 = __webpack_require__(1);
+
+var _Extension3 = _interopRequireDefault(_Extension2);
+
+var _jquery = __webpack_require__(0);
+
+var _jquery2 = _interopRequireDefault(_jquery);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+/**
+ * Debugger extension class
+ * @alias DebuggerExtension
+ * @ignore
+ */
+var Debugger = function (_Extension) {
+  _inherits(Debugger, _Extension);
+
+  function Debugger(colorpicker) {
+    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+
+    _classCallCheck(this, Debugger);
+
+    /**
+     * @type {number}
+     */
+    var _this = _possibleConstructorReturn(this, (Debugger.__proto__ || Object.getPrototypeOf(Debugger)).call(this, colorpicker, options));
+
+    _this.eventCounter = 0;
+    if (_this.colorpicker.inputHandler.hasInput()) {
+      _this.colorpicker.inputHandler.input.on('change.colorpicker-ext', _jquery2.default.proxy(_this.onChangeInput, _this));
+    }
+    return _this;
+  }
+
+  /**
+   * @fires DebuggerExtension#colorpickerDebug
+   * @param {string} eventName
+   * @param {*} args
+   */
+
+
+  _createClass(Debugger, [{
+    key: 'log',
+    value: function log(eventName) {
+      var _console;
+
+      for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
+        args[_key - 1] = arguments[_key];
+      }
+
+      this.eventCounter += 1;
+
+      var logMessage = '#' + this.eventCounter + ': Colorpicker#' + this.colorpicker.id + ' [' + eventName + ']';
+
+      (_console = console).debug.apply(_console, [logMessage].concat(args));
+
+      /**
+       * Whenever the debugger logs an event, this other event is emitted.
+       *
+       * @event DebuggerExtension#colorpickerDebug
+       * @type {object} The event object
+       * @property {Colorpicker} colorpicker The Colorpicker instance
+       * @property {ColorItem} color The color instance
+       * @property {{debugger: DebuggerExtension, eventName: String, logArgs: Array, logMessage: String}} debug
+       *  The debug info
+       */
+      this.colorpicker.element.trigger({
+        type: 'colorpickerDebug',
+        colorpicker: this.colorpicker,
+        color: this.color,
+        value: null,
+        debug: {
+          debugger: this,
+          eventName: eventName,
+          logArgs: args,
+          logMessage: logMessage
+        }
+      });
+    }
+  }, {
+    key: 'resolveColor',
+    value: function resolveColor(color) {
+      var realColor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
+
+      this.log('resolveColor()', color, realColor);
+      return false;
+    }
+  }, {
+    key: 'onCreate',
+    value: function onCreate(event) {
+      this.log('colorpickerCreate');
+      return _get(Debugger.prototype.__proto__ || Object.getPrototypeOf(Debugger.prototype), 'onCreate', this).call(this, event);
+    }
+  }, {
+    key: 'onDestroy',
+    value: function onDestroy(event) {
+      this.log('colorpickerDestroy');
+      this.eventCounter = 0;
+
+      if (this.colorpicker.inputHandler.hasInput()) {
+        this.colorpicker.inputHandler.input.off('.colorpicker-ext');
+      }
+
+      return _get(Debugger.prototype.__proto__ || Object.getPrototypeOf(Debugger.prototype), 'onDestroy', this).call(this, event);
+    }
+  }, {
+    key: 'onUpdate',
+    value: function onUpdate(event) {
+      this.log('colorpickerUpdate');
+    }
+
+    /**
+     * @listens Colorpicker#change
+     * @param {Event} event
+     */
+
+  }, {
+    key: 'onChangeInput',
+    value: function onChangeInput(event) {
+      this.log('input:change.colorpicker', event.value, event.color);
+    }
+  }, {
+    key: 'onChange',
+    value: function onChange(event) {
+      this.log('colorpickerChange', event.value, event.color);
+    }
+  }, {
+    key: 'onInvalid',
+    value: function onInvalid(event) {
+      this.log('colorpickerInvalid', event.value, event.color);
+    }
+  }, {
+    key: 'onHide',
+    value: function onHide(event) {
+      this.log('colorpickerHide');
+      this.eventCounter = 0;
+    }
+  }, {
+    key: 'onShow',
+    value: function onShow(event) {
+      this.log('colorpickerShow');
+    }
+  }, {
+    key: 'onDisable',
+    value: function onDisable(event) {
+      this.log('colorpickerDisable');
+    }
+  }, {
+    key: 'onEnable',
+    value: function onEnable(event) {
+      this.log('colorpickerEnable');
+    }
+  }]);
+
+  return Debugger;
+}(_Extension3.default);
+
+exports.default = Debugger;
+module.exports = exports.default;
+
+/***/ }),
+/* 11 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
+
+var _Extension2 = __webpack_require__(1);
+
+var _Extension3 = _interopRequireDefault(_Extension2);
+
+var _jquery = __webpack_require__(0);
+
+var _jquery2 = _interopRequireDefault(_jquery);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+/**
+ * Color preview extension
+ * @ignore
+ */
+var Preview = function (_Extension) {
+  _inherits(Preview, _Extension);
+
+  function Preview(colorpicker) {
+    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+
+    _classCallCheck(this, Preview);
+
+    var _this = _possibleConstructorReturn(this, (Preview.__proto__ || Object.getPrototypeOf(Preview)).call(this, colorpicker, _jquery2.default.extend(true, {}, {
+      template: '<div class="colorpicker-bar colorpicker-preview"><div /></div>',
+      showText: true,
+      format: colorpicker.format
+    }, options)));
+
+    _this.element = (0, _jquery2.default)(_this.options.template);
+    _this.elementInner = _this.element.find('div');
+    return _this;
+  }
+
+  _createClass(Preview, [{
+    key: 'onCreate',
+    value: function onCreate(event) {
+      _get(Preview.prototype.__proto__ || Object.getPrototypeOf(Preview.prototype), 'onCreate', this).call(this, event);
+      this.colorpicker.picker.append(this.element);
+    }
+  }, {
+    key: 'onUpdate',
+    value: function onUpdate(event) {
+      _get(Preview.prototype.__proto__ || Object.getPrototypeOf(Preview.prototype), 'onUpdate', this).call(this, event);
+
+      if (!event.color) {
+        this.elementInner.css('backgroundColor', null).css('color', null).html('');
+        return;
+      }
+
+      this.elementInner.css('backgroundColor', event.color.toRgbString());
+
+      if (this.options.showText) {
+        this.elementInner.html(event.color.string(this.options.format || this.colorpicker.format));
+
+        if (event.color.isDark() && event.color.alpha > 0.5) {
+          this.elementInner.css('color', 'white');
+        } else {
+          this.elementInner.css('color', 'black');
+        }
+      }
+    }
+  }]);
+
+  return Preview;
+}(_Extension3.default);
+
+exports.default = Preview;
+module.exports = exports.default;
+
+/***/ }),
+/* 12 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
+
+var _Palette2 = __webpack_require__(4);
+
+var _Palette3 = _interopRequireDefault(_Palette2);
+
+var _jquery = __webpack_require__(0);
+
+var _jquery2 = _interopRequireDefault(_jquery);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+var defaults = {
+  barTemplate: '<div class="colorpicker-bar colorpicker-swatches">\n                    <div class="colorpicker-swatches--inner"></div>\n                </div>',
+  swatchTemplate: '<i class="colorpicker-swatch"><i class="colorpicker-swatch--inner"></i></i>'
+};
+
+/**
+ * Color swatches extension
+ * @ignore
+ */
+
+var Swatches = function (_Palette) {
+  _inherits(Swatches, _Palette);
+
+  function Swatches(colorpicker) {
+    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+
+    _classCallCheck(this, Swatches);
+
+    var _this = _possibleConstructorReturn(this, (Swatches.__proto__ || Object.getPrototypeOf(Swatches)).call(this, colorpicker, _jquery2.default.extend(true, {}, defaults, options)));
+
+    _this.element = null;
+    return _this;
+  }
+
+  _createClass(Swatches, [{
+    key: 'isEnabled',
+    value: function isEnabled() {
+      return this.getLength() > 0;
+    }
+  }, {
+    key: 'onCreate',
+    value: function onCreate(event) {
+      _get(Swatches.prototype.__proto__ || Object.getPrototypeOf(Swatches.prototype), 'onCreate', this).call(this, event);
+
+      if (!this.isEnabled()) {
+        return;
+      }
+
+      this.element = (0, _jquery2.default)(this.options.barTemplate);
+      this.load();
+      this.colorpicker.picker.append(this.element);
+    }
+  }, {
+    key: 'load',
+    value: function load() {
+      var _this2 = this;
+
+      var colorpicker = this.colorpicker,
+          swatchContainer = this.element.find('.colorpicker-swatches--inner'),
+          isAliased = this.options.namesAsValues === true && !Array.isArray(this.colors);
+
+      swatchContainer.empty();
+
+      _jquery2.default.each(this.colors, function (name, value) {
+        var $swatch = (0, _jquery2.default)(_this2.options.swatchTemplate).attr('data-name', name).attr('data-value', value).attr('title', isAliased ? name + ': ' + value : value).on('mousedown.colorpicker touchstart.colorpicker', function (e) {
+          var $sw = (0, _jquery2.default)(this);
+
+          // e.preventDefault();
+
+          colorpicker.setValue(isAliased ? $sw.attr('data-name') : $sw.attr('data-value'));
+        });
+
+        $swatch.find('.colorpicker-swatch--inner').css('background-color', value);
+
+        swatchContainer.append($swatch);
+      });
+
+      swatchContainer.append((0, _jquery2.default)('<i class="colorpicker-clear"></i>'));
+    }
+  }]);
+
+  return Swatches;
+}(_Palette3.default);
+
+exports.default = Swatches;
+module.exports = exports.default;
+
+/***/ }),
+/* 13 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _jquery = __webpack_require__(0);
+
+var _jquery2 = _interopRequireDefault(_jquery);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+/**
+ * Class that handles all configured sliders on mouse or touch events.
+ * @ignore
+ */
+var SliderHandler = function () {
+  /**
+   * @param {Colorpicker} colorpicker
+   */
+  function SliderHandler(colorpicker) {
+    _classCallCheck(this, SliderHandler);
+
+    /**
+     * @type {Colorpicker}
+     */
+    this.colorpicker = colorpicker;
+    /**
+     * @type {*|String}
+     * @private
+     */
+    this.currentSlider = null;
+    /**
+     * @type {{left: number, top: number}}
+     * @private
+     */
+    this.mousePointer = {
+      left: 0,
+      top: 0
+    };
+
+    /**
+     * @type {Function}
+     */
+    this.onMove = _jquery2.default.proxy(this.defaultOnMove, this);
+  }
+
+  /**
+   * This function is called every time a slider guide is moved
+   * The scope of "this" is the SliderHandler object.
+   *
+   * @param {int} top
+   * @param {int} left
+   */
+
+
+  _createClass(SliderHandler, [{
+    key: 'defaultOnMove',
+    value: function defaultOnMove(top, left) {
+      if (!this.currentSlider) {
+        return;
+      }
+
+      var slider = this.currentSlider,
+          cp = this.colorpicker,
+          ch = cp.colorHandler;
+
+      // Create a color object
+      var color = !ch.hasColor() ? ch.getFallbackColor() : ch.color.getClone();
+
+      // Adjust the guide position
+      slider.guideStyle.left = left + 'px';
+      slider.guideStyle.top = top + 'px';
+
+      // Adjust the color
+      if (slider.callLeft) {
+        color[slider.callLeft](left / slider.maxLeft);
+      }
+      if (slider.callTop) {
+        color[slider.callTop](top / slider.maxTop);
+      }
+
+      // Set the new color
+      cp.setValue(color);
+      cp.popupHandler.focus();
+    }
+
+    /**
+     * Binds the colorpicker sliders to the mouse/touch events
+     */
+
+  }, {
+    key: 'bind',
+    value: function bind() {
+      var sliders = this.colorpicker.options.horizontal ? this.colorpicker.options.slidersHorz : this.colorpicker.options.sliders;
+
+      var sliderClasses = [];
+
+      for (var sliderName in sliders) {
+        if (!sliders.hasOwnProperty(sliderName)) {
+          continue;
+        }
+
+        sliderClasses.push(sliders[sliderName].selector);
+      }
+
+      this.colorpicker.picker.find(sliderClasses.join(', ')).on('mousedown.colorpicker touchstart.colorpicker', _jquery2.default.proxy(this.pressed, this));
+    }
+
+    /**
+     * Unbinds any event bound by this handler
+     */
+
+  }, {
+    key: 'unbind',
+    value: function unbind() {
+      (0, _jquery2.default)(this.colorpicker.picker).off({
+        'mousemove.colorpicker': _jquery2.default.proxy(this.moved, this),
+        'touchmove.colorpicker': _jquery2.default.proxy(this.moved, this),
+        'mouseup.colorpicker': _jquery2.default.proxy(this.released, this),
+        'touchend.colorpicker': _jquery2.default.proxy(this.released, this)
+      });
+    }
+
+    /**
+     * Function triggered when clicking in one of the color adjustment bars
+     *
+     * @private
+     * @fires Colorpicker#mousemove
+     * @param {Event} e
+     */
+
+  }, {
+    key: 'pressed',
+    value: function pressed(e) {
+      if (this.colorpicker.isDisabled()) {
+        return;
+      }
+      this.colorpicker.lastEvent.alias = 'pressed';
+      this.colorpicker.lastEvent.e = e;
+
+      if (!e.pageX && !e.pageY && e.originalEvent && e.originalEvent.touches) {
+        e.pageX = e.originalEvent.touches[0].pageX;
+        e.pageY = e.originalEvent.touches[0].pageY;
+      }
+      // e.stopPropagation();
+      // e.preventDefault();
+
+      var target = (0, _jquery2.default)(e.target);
+
+      // detect the slider and set the limits and callbacks
+      var zone = target.closest('div');
+
+      var sliders = this.colorpicker.options.horizontal ? this.colorpicker.options.slidersHorz : this.colorpicker.options.sliders;
+
+      if (zone.is('.colorpicker')) {
+        return;
+      }
+
+      this.currentSlider = null;
+
+      for (var sliderName in sliders) {
+        if (!sliders.hasOwnProperty(sliderName)) {
+          continue;
+        }
+
+        var slider = sliders[sliderName];
+
+        if (zone.is(slider.selector)) {
+          this.currentSlider = _jquery2.default.extend({}, slider, { name: sliderName });
+          break;
+        } else if (slider.childSelector !== undefined && zone.is(slider.childSelector)) {
+          this.currentSlider = _jquery2.default.extend({}, slider, { name: sliderName });
+          zone = zone.parent(); // zone.parents(slider.selector).first() ?
+          break;
+        }
+      }
+
+      var guide = zone.find('.colorpicker-guide').get(0);
+
+      if (this.currentSlider === null || guide === null) {
+        return;
+      }
+
+      var offset = zone.offset();
+
+      // reference to guide's style
+      this.currentSlider.guideStyle = guide.style;
+      this.currentSlider.left = e.pageX - offset.left;
+      this.currentSlider.top = e.pageY - offset.top;
+      this.mousePointer = {
+        left: e.pageX,
+        top: e.pageY
+      };
+
+      // TODO: fix moving outside the picker makes the guides to keep moving. The event needs to be bound to the window.
+      /**
+       * (window.document) Triggered on mousedown for the document object,
+       * so the color adjustment guide is moved to the clicked position.
+       *
+       * @event Colorpicker#mousemove
+       */
+      (0, _jquery2.default)(this.colorpicker.picker).on({
+        'mousemove.colorpicker': _jquery2.default.proxy(this.moved, this),
+        'touchmove.colorpicker': _jquery2.default.proxy(this.moved, this),
+        'mouseup.colorpicker': _jquery2.default.proxy(this.released, this),
+        'touchend.colorpicker': _jquery2.default.proxy(this.released, this)
+      }).trigger('mousemove');
+    }
+
+    /**
+     * Function triggered when dragging a guide inside one of the color adjustment bars.
+     *
+     * @private
+     * @param {Event} e
+     */
+
+  }, {
+    key: 'moved',
+    value: function moved(e) {
+      this.colorpicker.lastEvent.alias = 'moved';
+      this.colorpicker.lastEvent.e = e;
+
+      if (!e.pageX && !e.pageY && e.originalEvent && e.originalEvent.touches) {
+        e.pageX = e.originalEvent.touches[0].pageX;
+        e.pageY = e.originalEvent.touches[0].pageY;
+      }
+
+      // e.stopPropagation();
+      e.preventDefault(); // prevents scrolling on mobile
+
+      var left = Math.max(0, Math.min(this.currentSlider.maxLeft, this.currentSlider.left + ((e.pageX || this.mousePointer.left) - this.mousePointer.left)));
+
+      var top = Math.max(0, Math.min(this.currentSlider.maxTop, this.currentSlider.top + ((e.pageY || this.mousePointer.top) - this.mousePointer.top)));
+
+      this.onMove(top, left);
+    }
+
+    /**
+     * Function triggered when releasing the click in one of the color adjustment bars.
+     *
+     * @private
+     * @param {Event} e
+     */
+
+  }, {
+    key: 'released',
+    value: function released(e) {
+      this.colorpicker.lastEvent.alias = 'released';
+      this.colorpicker.lastEvent.e = e;
+
+      // e.stopPropagation();
+      // e.preventDefault();
+
+      (0, _jquery2.default)(this.colorpicker.picker).off({
+        'mousemove.colorpicker': this.moved,
+        'touchmove.colorpicker': this.moved,
+        'mouseup.colorpicker': this.released,
+        'touchend.colorpicker': this.released
+      });
+    }
+  }]);
+
+  return SliderHandler;
+}();
+
+exports.default = SliderHandler;
+module.exports = exports.default;
+
+/***/ }),
+/* 14 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _jquery = __webpack_require__(0);
+
+var _jquery2 = _interopRequireDefault(_jquery);
+
+var _options = __webpack_require__(3);
+
+var _options2 = _interopRequireDefault(_options);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+/**
+ * Handles everything related to the UI of the colorpicker popup: show, hide, position,...
+ * @ignore
+ */
+var PopupHandler = function () {
+  /**
+   * @param {Colorpicker} colorpicker
+   * @param {Window} root
+   */
+  function PopupHandler(colorpicker, root) {
+    _classCallCheck(this, PopupHandler);
+
+    /**
+     * @type {Window}
+     */
+    this.root = root;
+    /**
+     * @type {Colorpicker}
+     */
+    this.colorpicker = colorpicker;
+    /**
+     * @type {jQuery}
+     */
+    this.popoverTarget = null;
+    /**
+     * @type {jQuery}
+     */
+    this.popoverTip = null;
+
+    /**
+     * If true, the latest click was inside the popover
+     * @type {boolean}
+     */
+    this.clicking = false;
+    /**
+     * @type {boolean}
+     */
+    this.hidding = false;
+    /**
+     * @type {boolean}
+     */
+    this.showing = false;
+  }
+
+  /**
+   * @private
+   * @returns {jQuery|false}
+   */
+
+
+  _createClass(PopupHandler, [{
+    key: 'bind',
+
+
+    /**
+     * Binds the different colorpicker elements to the focus/mouse/touch events so it reacts in order to show or
+     * hide the colorpicker popup accordingly. It also adds the proper classes.
+     */
+    value: function bind() {
+      var cp = this.colorpicker;
+
+      if (cp.options.inline) {
+        cp.picker.addClass('colorpicker-inline colorpicker-visible');
+        return; // no need to bind show/hide events for inline elements
+      }
+
+      cp.picker.addClass('colorpicker-popup colorpicker-hidden');
+
+      // there is no input or addon
+      if (!this.hasInput && !this.hasAddon) {
+        return;
+      }
+
+      // create Bootstrap 4 popover
+      if (cp.options.popover) {
+        this.createPopover();
+      }
+
+      // bind addon show/hide events
+      if (this.hasAddon) {
+        // enable focus on addons
+        if (!this.addon.attr('tabindex')) {
+          this.addon.attr('tabindex', 0);
+        }
+
+        this.addon.on({
+          'mousedown.colorpicker touchstart.colorpicker': _jquery2.default.proxy(this.toggle, this)
+        });
+
+        this.addon.on({
+          'focus.colorpicker': _jquery2.default.proxy(this.show, this)
+        });
+
+        this.addon.on({
+          'focusout.colorpicker': _jquery2.default.proxy(this.hide, this)
+        });
+      }
+
+      // bind input show/hide events
+      if (this.hasInput && !this.hasAddon) {
+        this.input.on({
+          'mousedown.colorpicker touchstart.colorpicker': _jquery2.default.proxy(this.show, this),
+          'focus.colorpicker': _jquery2.default.proxy(this.show, this)
+        });
+
+        this.input.on({
+          'focusout.colorpicker': _jquery2.default.proxy(this.hide, this)
+        });
+      }
+
+      // reposition popup on window resize
+      (0, _jquery2.default)(this.root).on('resize.colorpicker', _jquery2.default.proxy(this.reposition, this));
+    }
+
+    /**
+     * Unbinds any event bound by this handler
+     */
+
+  }, {
+    key: 'unbind',
+    value: function unbind() {
+      if (this.hasInput) {
+        this.input.off({
+          'mousedown.colorpicker touchstart.colorpicker': _jquery2.default.proxy(this.show, this),
+          'focus.colorpicker': _jquery2.default.proxy(this.show, this)
+        });
+        this.input.off({
+          'focusout.colorpicker': _jquery2.default.proxy(this.hide, this)
+        });
+      }
+
+      if (this.hasAddon) {
+        this.addon.off({
+          'mousedown.colorpicker touchstart.colorpicker': _jquery2.default.proxy(this.toggle, this)
+        });
+        this.addon.off({
+          'focus.colorpicker': _jquery2.default.proxy(this.show, this)
+        });
+        this.addon.off({
+          'focusout.colorpicker': _jquery2.default.proxy(this.hide, this)
+        });
+      }
+
+      if (this.popoverTarget) {
+        this.popoverTarget.popover('dispose');
+      }
+
+      (0, _jquery2.default)(this.root).off('resize.colorpicker', _jquery2.default.proxy(this.reposition, this));
+      (0, _jquery2.default)(this.root.document).off('mousedown.colorpicker touchstart.colorpicker', _jquery2.default.proxy(this.hide, this));
+      (0, _jquery2.default)(this.root.document).off('mousedown.colorpicker touchstart.colorpicker', _jquery2.default.proxy(this.onClickingInside, this));
+    }
+  }, {
+    key: 'isClickingInside',
+    value: function isClickingInside(e) {
+      if (!e) {
+        return false;
+      }
+
+      return this.isOrIsInside(this.popoverTip, e.currentTarget) || this.isOrIsInside(this.popoverTip, e.target) || this.isOrIsInside(this.colorpicker.picker, e.currentTarget) || this.isOrIsInside(this.colorpicker.picker, e.target);
+    }
+  }, {
+    key: 'isOrIsInside',
+    value: function isOrIsInside(container, element) {
+      if (!container || !element) {
+        return false;
+      }
+
+      element = (0, _jquery2.default)(element);
+
+      return element.is(container) || container.find(element).length > 0;
+    }
+  }, {
+    key: 'onClickingInside',
+    value: function onClickingInside(e) {
+      this.clicking = this.isClickingInside(e);
+    }
+  }, {
+    key: 'createPopover',
+    value: function createPopover() {
+      var cp = this.colorpicker;
+
+      this.popoverTarget = this.hasAddon ? this.addon : this.input;
+
+      cp.picker.addClass('colorpicker-bs-popover-content');
+
+      this.popoverTarget.popover(_jquery2.default.extend(true, {}, _options2.default.popover, cp.options.popover, { trigger: 'manual', content: cp.picker, html: true }));
+
+      /* Bootstrap 5 added an official method to get the popover instance */
+      /* global bootstrap */
+      var useGetInstance = window.bootstrap && window.bootstrap.Popover && window.bootstrap.Popover.getInstance;
+
+      this.popoverTip = useGetInstance ? (0, _jquery2.default)(bootstrap.Popover.getInstance(this.popoverTarget[0]).tip) : (0, _jquery2.default)(this.popoverTarget.popover('getTipElement').data('bs.popover').tip);
+
+      this.popoverTip.addClass('colorpicker-bs-popover');
+
+      this.popoverTarget.on('shown.bs.popover', _jquery2.default.proxy(this.fireShow, this));
+      this.popoverTarget.on('hidden.bs.popover', _jquery2.default.proxy(this.fireHide, this));
+    }
+
+    /**
+     * If the widget is not inside a container or inline, rearranges its position relative to its element offset.
+     *
+     * @param {Event} [e]
+     * @private
+     */
+
+  }, {
+    key: 'reposition',
+    value: function reposition(e) {
+      if (this.popoverTarget && this.isVisible()) {
+        this.popoverTarget.popover('update');
+      }
+    }
+
+    /**
+     * Toggles the colorpicker between visible or hidden
+     *
+     * @fires Colorpicker#colorpickerShow
+     * @fires Colorpicker#colorpickerHide
+     * @param {Event} [e]
+     */
+
+  }, {
+    key: 'toggle',
+    value: function toggle(e) {
+      if (this.isVisible()) {
+        this.hide(e);
+      } else {
+        this.show(e);
+      }
+    }
+
+    /**
+     * Shows the colorpicker widget if hidden.
+     *
+     * @fires Colorpicker#colorpickerShow
+     * @param {Event} [e]
+     */
+
+  }, {
+    key: 'show',
+    value: function show(e) {
+      if (this.isVisible() || this.showing || this.hidding) {
+        return;
+      }
+
+      this.showing = true;
+      this.hidding = false;
+      this.clicking = false;
+
+      var cp = this.colorpicker;
+
+      cp.lastEvent.alias = 'show';
+      cp.lastEvent.e = e;
+
+      // Prevent showing browser native HTML5 colorpicker
+      if (e && (!this.hasInput || this.input.attr('type') === 'color') && e && e.preventDefault) {
+        e.stopPropagation();
+        e.preventDefault();
+      }
+
+      // If it's a popover, add event to the document to hide the picker when clicking outside of it
+      if (this.isPopover) {
+        (0, _jquery2.default)(this.root).on('resize.colorpicker', _jquery2.default.proxy(this.reposition, this));
+      }
+
+      // add visible class before popover is shown
+      cp.picker.addClass('colorpicker-visible').removeClass('colorpicker-hidden');
+
+      if (this.popoverTarget) {
+        this.popoverTarget.popover('show');
+      } else {
+        this.fireShow();
+      }
+    }
+  }, {
+    key: 'fireShow',
+    value: function fireShow() {
+      this.hidding = false;
+      this.showing = false;
+
+      if (this.isPopover) {
+        // Add event to hide on outside click
+        (0, _jquery2.default)(this.root.document).on('mousedown.colorpicker touchstart.colorpicker', _jquery2.default.proxy(this.hide, this));
+        (0, _jquery2.default)(this.root.document).on('mousedown.colorpicker touchstart.colorpicker', _jquery2.default.proxy(this.onClickingInside, this));
+      }
+
+      /**
+       * (Colorpicker) When show() is called and the widget can be shown.
+       *
+       * @event Colorpicker#colorpickerShow
+       */
+      this.colorpicker.trigger('colorpickerShow');
+    }
+
+    /**
+     * Hides the colorpicker widget.
+     * Hide is prevented when it is triggered by an event whose target element has been clicked/touched.
+     *
+     * @fires Colorpicker#colorpickerHide
+     * @param {Event} [e]
+     */
+
+  }, {
+    key: 'hide',
+    value: function hide(e) {
+      if (this.isHidden() || this.showing || this.hidding) {
+        return;
+      }
+
+      var cp = this.colorpicker,
+          clicking = this.clicking || this.isClickingInside(e);
+
+      this.hidding = true;
+      this.showing = false;
+      this.clicking = false;
+
+      cp.lastEvent.alias = 'hide';
+      cp.lastEvent.e = e;
+
+      // TODO: fix having to click twice outside when losing focus and last 2 clicks where inside the colorpicker
+
+      // Prevent hide if triggered by an event and an element inside the colorpicker has been clicked/touched
+      if (clicking) {
+        this.hidding = false;
+        return;
+      }
+
+      if (this.popoverTarget) {
+        this.popoverTarget.popover('hide');
+      } else {
+        this.fireHide();
+      }
+    }
+  }, {
+    key: 'fireHide',
+    value: function fireHide() {
+      this.hidding = false;
+      this.showing = false;
+
+      var cp = this.colorpicker;
+
+      // add hidden class after popover is hidden
+      cp.picker.addClass('colorpicker-hidden').removeClass('colorpicker-visible');
+
+      // Unbind window and document events, since there is no need to keep them while the popup is hidden
+      (0, _jquery2.default)(this.root).off('resize.colorpicker', _jquery2.default.proxy(this.reposition, this));
+      (0, _jquery2.default)(this.root.document).off('mousedown.colorpicker touchstart.colorpicker', _jquery2.default.proxy(this.hide, this));
+      (0, _jquery2.default)(this.root.document).off('mousedown.colorpicker touchstart.colorpicker', _jquery2.default.proxy(this.onClickingInside, this));
+
+      /**
+       * (Colorpicker) When hide() is called and the widget can be hidden.
+       *
+       * @event Colorpicker#colorpickerHide
+       */
+      cp.trigger('colorpickerHide');
+    }
+  }, {
+    key: 'focus',
+    value: function focus() {
+      if (this.hasAddon) {
+        return this.addon.focus();
+      }
+      if (this.hasInput) {
+        return this.input.focus();
+      }
+      return false;
+    }
+
+    /**
+     * Returns true if the colorpicker element has the colorpicker-visible class and not the colorpicker-hidden one.
+     * False otherwise.
+     *
+     * @returns {boolean}
+     */
+
+  }, {
+    key: 'isVisible',
+    value: function isVisible() {
+      return this.colorpicker.picker.hasClass('colorpicker-visible') && !this.colorpicker.picker.hasClass('colorpicker-hidden');
+    }
+
+    /**
+     * Returns true if the colorpicker element has the colorpicker-hidden class and not the colorpicker-visible one.
+     * False otherwise.
+     *
+     * @returns {boolean}
+     */
+
+  }, {
+    key: 'isHidden',
+    value: function isHidden() {
+      return this.colorpicker.picker.hasClass('colorpicker-hidden') && !this.colorpicker.picker.hasClass('colorpicker-visible');
+    }
+  }, {
+    key: 'input',
+    get: function get() {
+      return this.colorpicker.inputHandler.input;
+    }
+
+    /**
+     * @private
+     * @returns {boolean}
+     */
+
+  }, {
+    key: 'hasInput',
+    get: function get() {
+      return this.colorpicker.inputHandler.hasInput();
+    }
+
+    /**
+     * @private
+     * @returns {jQuery|false}
+     */
+
+  }, {
+    key: 'addon',
+    get: function get() {
+      return this.colorpicker.addonHandler.addon;
+    }
+
+    /**
+     * @private
+     * @returns {boolean}
+     */
+
+  }, {
+    key: 'hasAddon',
+    get: function get() {
+      return this.colorpicker.addonHandler.hasAddon();
+    }
+
+    /**
+     * @private
+     * @returns {boolean}
+     */
+
+  }, {
+    key: 'isPopover',
+    get: function get() {
+      return !this.colorpicker.options.inline && !!this.popoverTip;
+    }
+  }]);
+
+  return PopupHandler;
+}();
+
+exports.default = PopupHandler;
+module.exports = exports.default;
+
+/***/ }),
+/* 15 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _jquery = __webpack_require__(0);
+
+var _jquery2 = _interopRequireDefault(_jquery);
+
+var _ColorItem = __webpack_require__(2);
+
+var _ColorItem2 = _interopRequireDefault(_ColorItem);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+/**
+ * Handles everything related to the colorpicker input
+ * @ignore
+ */
+var InputHandler = function () {
+  /**
+   * @param {Colorpicker} colorpicker
+   */
+  function InputHandler(colorpicker) {
+    _classCallCheck(this, InputHandler);
+
+    /**
+     * @type {Colorpicker}
+     */
+    this.colorpicker = colorpicker;
+    /**
+     * @type {jQuery|false}
+     */
+    this.input = this.colorpicker.element.is('input') ? this.colorpicker.element : this.colorpicker.options.input ? this.colorpicker.element.find(this.colorpicker.options.input) : false;
+
+    if (this.input && this.input.length === 0) {
+      this.input = false;
+    }
+
+    this._initValue();
+  }
+
+  _createClass(InputHandler, [{
+    key: 'bind',
+    value: function bind() {
+      if (!this.hasInput()) {
+        return;
+      }
+      this.input.on({
+        'keyup.colorpicker': _jquery2.default.proxy(this.onkeyup, this)
+      });
+      this.input.on({
+        'change.colorpicker': _jquery2.default.proxy(this.onchange, this)
+      });
+    }
+  }, {
+    key: 'unbind',
+    value: function unbind() {
+      if (!this.hasInput()) {
+        return;
+      }
+      this.input.off('.colorpicker');
+    }
+  }, {
+    key: '_initValue',
+    value: function _initValue() {
+      if (!this.hasInput()) {
+        return;
+      }
+
+      var val = '';
+
+      [
+      // candidates:
+      this.input.val(), this.input.data('color'), this.input.attr('data-color')].map(function (item) {
+        if (item && val === '') {
+          val = item;
+        }
+      });
+
+      if (val instanceof _ColorItem2.default) {
+        val = this.getFormattedColor(val.string(this.colorpicker.format));
+      } else if (!(typeof val === 'string' || val instanceof String)) {
+        val = '';
+      }
+
+      this.input.prop('value', val);
+    }
+
+    /**
+     * Returns the color string from the input value.
+     * If there is no input the return value is false.
+     *
+     * @returns {String|boolean}
+     */
+
+  }, {
+    key: 'getValue',
+    value: function getValue() {
+      if (!this.hasInput()) {
+        return false;
+      }
+
+      return this.input.val();
+    }
+
+    /**
+     * If the input element is present, it updates the value with the current color object color string.
+     * If the value is changed, this method fires a "change" event on the input element.
+     *
+     * @param {String} val
+     *
+     * @fires Colorpicker#change
+     */
+
+  }, {
+    key: 'setValue',
+    value: function setValue(val) {
+      if (!this.hasInput()) {
+        return;
+      }
+
+      var inputVal = this.input.prop('value');
+
+      val = val ? val : '';
+
+      if (val === (inputVal ? inputVal : '')) {
+        // No need to set value or trigger any event if nothing changed
+        return;
+      }
+
+      this.input.prop('value', val);
+
+      /**
+       * (Input) Triggered on the input element when a new color is selected.
+       *
+       * @event Colorpicker#change
+       */
+      this.input.trigger({
+        type: 'change',
+        colorpicker: this.colorpicker,
+        color: this.colorpicker.color,
+        value: val
+      });
+    }
+
+    /**
+     * Returns the formatted color string, with the formatting options applied
+     * (e.g. useHashPrefix)
+     *
+     * @param {String|null} val
+     *
+     * @returns {String}
+     */
+
+  }, {
+    key: 'getFormattedColor',
+    value: function getFormattedColor() {
+      var val = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
+
+      val = val ? val : this.colorpicker.colorHandler.getColorString();
+
+      if (!val) {
+        return '';
+      }
+
+      val = this.colorpicker.colorHandler.resolveColorDelegate(val, false);
+
+      if (this.colorpicker.options.useHashPrefix === false) {
+        val = val.replace(/^#/g, '');
+      }
+
+      return val;
+    }
+
+    /**
+     * Returns true if the widget has an associated input element, false otherwise
+     * @returns {boolean}
+     */
+
+  }, {
+    key: 'hasInput',
+    value: function hasInput() {
+      return this.input !== false;
+    }
+
+    /**
+     * Returns true if the input exists and is disabled
+     * @returns {boolean}
+     */
+
+  }, {
+    key: 'isEnabled',
+    value: function isEnabled() {
+      return this.hasInput() && !this.isDisabled();
+    }
+
+    /**
+     * Returns true if the input exists and is disabled
+     * @returns {boolean}
+     */
+
+  }, {
+    key: 'isDisabled',
+    value: function isDisabled() {
+      return this.hasInput() && this.input.prop('disabled') === true;
+    }
+
+    /**
+     * Disables the input if any
+     *
+     * @fires Colorpicker#colorpickerDisable
+     * @returns {boolean}
+     */
+
+  }, {
+    key: 'disable',
+    value: function disable() {
+      if (this.hasInput()) {
+        this.input.prop('disabled', true);
+      }
+    }
+
+    /**
+     * Enables the input if any
+     *
+     * @fires Colorpicker#colorpickerEnable
+     * @returns {boolean}
+     */
+
+  }, {
+    key: 'enable',
+    value: function enable() {
+      if (this.hasInput()) {
+        this.input.prop('disabled', false);
+      }
+    }
+
+    /**
+     * Calls setValue with the current internal color value
+     *
+     * @fires Colorpicker#change
+     */
+
+  }, {
+    key: 'update',
+    value: function update() {
+      if (!this.hasInput()) {
+        return;
+      }
+
+      if (this.colorpicker.options.autoInputFallback === false && this.colorpicker.colorHandler.isInvalidColor()) {
+        // prevent update if color is invalid, autoInputFallback is disabled and the last event is keyup.
+        return;
+      }
+
+      this.setValue(this.getFormattedColor());
+    }
+
+    /**
+     * Function triggered when the input has changed, so the colorpicker gets updated.
+     *
+     * @private
+     * @param {Event} e
+     * @returns {boolean}
+     */
+
+  }, {
+    key: 'onchange',
+    value: function onchange(e) {
+      this.colorpicker.lastEvent.alias = 'input.change';
+      this.colorpicker.lastEvent.e = e;
+
+      var val = this.getValue();
+
+      if (val !== e.value) {
+        this.colorpicker.setValue(val);
+      }
+    }
+
+    /**
+     * Function triggered after a keyboard key has been released.
+     *
+     * @private
+     * @param {Event} e
+     * @returns {boolean}
+     */
+
+  }, {
+    key: 'onkeyup',
+    value: function onkeyup(e) {
+      this.colorpicker.lastEvent.alias = 'input.keyup';
+      this.colorpicker.lastEvent.e = e;
+
+      var val = this.getValue();
+
+      if (val !== e.value) {
+        this.colorpicker.setValue(val);
+      }
+    }
+  }]);
+
+  return InputHandler;
+}();
+
+exports.default = InputHandler;
+module.exports = exports.default;
+
+/***/ }),
+/* 16 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var colorString = __webpack_require__(17);
+var convert = __webpack_require__(20);
+
+var _slice = [].slice;
+
+var skippedModels = [
+	// to be honest, I don't really feel like keyword belongs in color convert, but eh.
+	'keyword',
+
+	// gray conflicts with some method names, and has its own method defined.
+	'gray',
+
+	// shouldn't really be in color-convert either...
+	'hex'
+];
+
+var hashedModelKeys = {};
+Object.keys(convert).forEach(function (model) {
+	hashedModelKeys[_slice.call(convert[model].labels).sort().join('')] = model;
+});
+
+var limiters = {};
+
+function Color(obj, model) {
+	if (!(this instanceof Color)) {
+		return new Color(obj, model);
+	}
+
+	if (model && model in skippedModels) {
+		model = null;
+	}
+
+	if (model && !(model in convert)) {
+		throw new Error('Unknown model: ' + model);
+	}
+
+	var i;
+	var channels;
+
+	if (obj == null) { // eslint-disable-line no-eq-null,eqeqeq
+		this.model = 'rgb';
+		this.color = [0, 0, 0];
+		this.valpha = 1;
+	} else if (obj instanceof Color) {
+		this.model = obj.model;
+		this.color = obj.color.slice();
+		this.valpha = obj.valpha;
+	} else if (typeof obj === 'string') {
+		var result = colorString.get(obj);
+		if (result === null) {
+			throw new Error('Unable to parse color from string: ' + obj);
+		}
+
+		this.model = result.model;
+		channels = convert[this.model].channels;
+		this.color = result.value.slice(0, channels);
+		this.valpha = typeof result.value[channels] === 'number' ? result.value[channels] : 1;
+	} else if (obj.length) {
+		this.model = model || 'rgb';
+		channels = convert[this.model].channels;
+		var newArr = _slice.call(obj, 0, channels);
+		this.color = zeroArray(newArr, channels);
+		this.valpha = typeof obj[channels] === 'number' ? obj[channels] : 1;
+	} else if (typeof obj === 'number') {
+		// this is always RGB - can be converted later on.
+		obj &= 0xFFFFFF;
+		this.model = 'rgb';
+		this.color = [
+			(obj >> 16) & 0xFF,
+			(obj >> 8) & 0xFF,
+			obj & 0xFF
+		];
+		this.valpha = 1;
+	} else {
+		this.valpha = 1;
+
+		var keys = Object.keys(obj);
+		if ('alpha' in obj) {
+			keys.splice(keys.indexOf('alpha'), 1);
+			this.valpha = typeof obj.alpha === 'number' ? obj.alpha : 0;
+		}
+
+		var hashedKeys = keys.sort().join('');
+		if (!(hashedKeys in hashedModelKeys)) {
+			throw new Error('Unable to parse color from object: ' + JSON.stringify(obj));
+		}
+
+		this.model = hashedModelKeys[hashedKeys];
+
+		var labels = convert[this.model].labels;
+		var color = [];
+		for (i = 0; i < labels.length; i++) {
+			color.push(obj[labels[i]]);
+		}
+
+		this.color = zeroArray(color);
+	}
+
+	// perform limitations (clamping, etc.)
+	if (limiters[this.model]) {
+		channels = convert[this.model].channels;
+		for (i = 0; i < channels; i++) {
+			var limit = limiters[this.model][i];
+			if (limit) {
+				this.color[i] = limit(this.color[i]);
+			}
+		}
+	}
+
+	this.valpha = Math.max(0, Math.min(1, this.valpha));
+
+	if (Object.freeze) {
+		Object.freeze(this);
+	}
+}
+
+Color.prototype = {
+	toString: function () {
+		return this.string();
+	},
+
+	toJSON: function () {
+		return this[this.model]();
+	},
+
+	string: function (places) {
+		var self = this.model in colorString.to ? this : this.rgb();
+		self = self.round(typeof places === 'number' ? places : 1);
+		var args = self.valpha === 1 ? self.color : self.color.concat(this.valpha);
+		return colorString.to[self.model](args);
+	},
+
+	percentString: function (places) {
+		var self = this.rgb().round(typeof places === 'number' ? places : 1);
+		var args = self.valpha === 1 ? self.color : self.color.concat(this.valpha);
+		return colorString.to.rgb.percent(args);
+	},
+
+	array: function () {
+		return this.valpha === 1 ? this.color.slice() : this.color.concat(this.valpha);
+	},
+
+	object: function () {
+		var result = {};
+		var channels = convert[this.model].channels;
+		var labels = convert[this.model].labels;
+
+		for (var i = 0; i < channels; i++) {
+			result[labels[i]] = this.color[i];
+		}
+
+		if (this.valpha !== 1) {
+			result.alpha = this.valpha;
+		}
+
+		return result;
+	},
+
+	unitArray: function () {
+		var rgb = this.rgb().color;
+		rgb[0] /= 255;
+		rgb[1] /= 255;
+		rgb[2] /= 255;
+
+		if (this.valpha !== 1) {
+			rgb.push(this.valpha);
+		}
+
+		return rgb;
+	},
+
+	unitObject: function () {
+		var rgb = this.rgb().object();
+		rgb.r /= 255;
+		rgb.g /= 255;
+		rgb.b /= 255;
+
+		if (this.valpha !== 1) {
+			rgb.alpha = this.valpha;
+		}
+
+		return rgb;
+	},
+
+	round: function (places) {
+		places = Math.max(places || 0, 0);
+		return new Color(this.color.map(roundToPlace(places)).concat(this.valpha), this.model);
+	},
+
+	alpha: function (val) {
+		if (arguments.length) {
+			return new Color(this.color.concat(Math.max(0, Math.min(1, val))), this.model);
+		}
+
+		return this.valpha;
+	},
+
+	// rgb
+	red: getset('rgb', 0, maxfn(255)),
+	green: getset('rgb', 1, maxfn(255)),
+	blue: getset('rgb', 2, maxfn(255)),
+
+	hue: getset(['hsl', 'hsv', 'hsl', 'hwb', 'hcg'], 0, function (val) { return ((val % 360) + 360) % 360; }), // eslint-disable-line brace-style
+
+	saturationl: getset('hsl', 1, maxfn(100)),
+	lightness: getset('hsl', 2, maxfn(100)),
+
+	saturationv: getset('hsv', 1, maxfn(100)),
+	value: getset('hsv', 2, maxfn(100)),
+
+	chroma: getset('hcg', 1, maxfn(100)),
+	gray: getset('hcg', 2, maxfn(100)),
+
+	white: getset('hwb', 1, maxfn(100)),
+	wblack: getset('hwb', 2, maxfn(100)),
+
+	cyan: getset('cmyk', 0, maxfn(100)),
+	magenta: getset('cmyk', 1, maxfn(100)),
+	yellow: getset('cmyk', 2, maxfn(100)),
+	black: getset('cmyk', 3, maxfn(100)),
+
+	x: getset('xyz', 0, maxfn(100)),
+	y: getset('xyz', 1, maxfn(100)),
+	z: getset('xyz', 2, maxfn(100)),
+
+	l: getset('lab', 0, maxfn(100)),
+	a: getset('lab', 1),
+	b: getset('lab', 2),
+
+	keyword: function (val) {
+		if (arguments.length) {
+			return new Color(val);
+		}
+
+		return convert[this.model].keyword(this.color);
+	},
+
+	hex: function (val) {
+		if (arguments.length) {
+			return new Color(val);
+		}
+
+		return colorString.to.hex(this.rgb().round().color);
+	},
+
+	rgbNumber: function () {
+		var rgb = this.rgb().color;
+		return ((rgb[0] & 0xFF) << 16) | ((rgb[1] & 0xFF) << 8) | (rgb[2] & 0xFF);
+	},
+
+	luminosity: function () {
+		// http://www.w3.org/TR/WCAG20/#relativeluminancedef
+		var rgb = this.rgb().color;
+
+		var lum = [];
+		for (var i = 0; i < rgb.length; i++) {
+			var chan = rgb[i] / 255;
+			lum[i] = (chan <= 0.03928) ? chan / 12.92 : Math.pow(((chan + 0.055) / 1.055), 2.4);
+		}
+
+		return 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];
+	},
+
+	contrast: function (color2) {
+		// http://www.w3.org/TR/WCAG20/#contrast-ratiodef
+		var lum1 = this.luminosity();
+		var lum2 = color2.luminosity();
+
+		if (lum1 > lum2) {
+			return (lum1 + 0.05) / (lum2 + 0.05);
+		}
+
+		return (lum2 + 0.05) / (lum1 + 0.05);
+	},
+
+	level: function (color2) {
+		var contrastRatio = this.contrast(color2);
+		if (contrastRatio >= 7.1) {
+			return 'AAA';
+		}
+
+		return (contrastRatio >= 4.5) ? 'AA' : '';
+	},
+
+	isDark: function () {
+		// YIQ equation from http://24ways.org/2010/calculating-color-contrast
+		var rgb = this.rgb().color;
+		var yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;
+		return yiq < 128;
+	},
+
+	isLight: function () {
+		return !this.isDark();
+	},
+
+	negate: function () {
+		var rgb = this.rgb();
+		for (var i = 0; i < 3; i++) {
+			rgb.color[i] = 255 - rgb.color[i];
+		}
+		return rgb;
+	},
+
+	lighten: function (ratio) {
+		var hsl = this.hsl();
+		hsl.color[2] += hsl.color[2] * ratio;
+		return hsl;
+	},
+
+	darken: function (ratio) {
+		var hsl = this.hsl();
+		hsl.color[2] -= hsl.color[2] * ratio;
+		return hsl;
+	},
+
+	saturate: function (ratio) {
+		var hsl = this.hsl();
+		hsl.color[1] += hsl.color[1] * ratio;
+		return hsl;
+	},
+
+	desaturate: function (ratio) {
+		var hsl = this.hsl();
+		hsl.color[1] -= hsl.color[1] * ratio;
+		return hsl;
+	},
+
+	whiten: function (ratio) {
+		var hwb = this.hwb();
+		hwb.color[1] += hwb.color[1] * ratio;
+		return hwb;
+	},
+
+	blacken: function (ratio) {
+		var hwb = this.hwb();
+		hwb.color[2] += hwb.color[2] * ratio;
+		return hwb;
+	},
+
+	grayscale: function () {
+		// http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale
+		var rgb = this.rgb().color;
+		var val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;
+		return Color.rgb(val, val, val);
+	},
+
+	fade: function (ratio) {
+		return this.alpha(this.valpha - (this.valpha * ratio));
+	},
+
+	opaquer: function (ratio) {
+		return this.alpha(this.valpha + (this.valpha * ratio));
+	},
+
+	rotate: function (degrees) {
+		var hsl = this.hsl();
+		var hue = hsl.color[0];
+		hue = (hue + degrees) % 360;
+		hue = hue < 0 ? 360 + hue : hue;
+		hsl.color[0] = hue;
+		return hsl;
+	},
+
+	mix: function (mixinColor, weight) {
+		// ported from sass implementation in C
+		// https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209
+		if (!mixinColor || !mixinColor.rgb) {
+			throw new Error('Argument to "mix" was not a Color instance, but rather an instance of ' + typeof mixinColor);
+		}
+		var color1 = mixinColor.rgb();
+		var color2 = this.rgb();
+		var p = weight === undefined ? 0.5 : weight;
+
+		var w = 2 * p - 1;
+		var a = color1.alpha() - color2.alpha();
+
+		var w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0;
+		var w2 = 1 - w1;
+
+		return Color.rgb(
+				w1 * color1.red() + w2 * color2.red(),
+				w1 * color1.green() + w2 * color2.green(),
+				w1 * color1.blue() + w2 * color2.blue(),
+				color1.alpha() * p + color2.alpha() * (1 - p));
+	}
+};
+
+// model conversion methods and static constructors
+Object.keys(convert).forEach(function (model) {
+	if (skippedModels.indexOf(model) !== -1) {
+		return;
+	}
+
+	var channels = convert[model].channels;
+
+	// conversion methods
+	Color.prototype[model] = function () {
+		if (this.model === model) {
+			return new Color(this);
+		}
+
+		if (arguments.length) {
+			return new Color(arguments, model);
+		}
+
+		var newAlpha = typeof arguments[channels] === 'number' ? channels : this.valpha;
+		return new Color(assertArray(convert[this.model][model].raw(this.color)).concat(newAlpha), model);
+	};
+
+	// 'static' construction methods
+	Color[model] = function (color) {
+		if (typeof color === 'number') {
+			color = zeroArray(_slice.call(arguments), channels);
+		}
+		return new Color(color, model);
+	};
+});
+
+function roundTo(num, places) {
+	return Number(num.toFixed(places));
+}
+
+function roundToPlace(places) {
+	return function (num) {
+		return roundTo(num, places);
+	};
+}
+
+function getset(model, channel, modifier) {
+	model = Array.isArray(model) ? model : [model];
+
+	model.forEach(function (m) {
+		(limiters[m] || (limiters[m] = []))[channel] = modifier;
+	});
+
+	model = model[0];
+
+	return function (val) {
+		var result;
+
+		if (arguments.length) {
+			if (modifier) {
+				val = modifier(val);
+			}
+
+			result = this[model]();
+			result.color[channel] = val;
+			return result;
+		}
+
+		result = this[model]().color[channel];
+		if (modifier) {
+			result = modifier(result);
+		}
+
+		return result;
+	};
+}
+
+function maxfn(max) {
+	return function (v) {
+		return Math.max(0, Math.min(max, v));
+	};
+}
+
+function assertArray(val) {
+	return Array.isArray(val) ? val : [val];
+}
+
+function zeroArray(arr, length) {
+	for (var i = 0; i < length; i++) {
+		if (typeof arr[i] !== 'number') {
+			arr[i] = 0;
+		}
+	}
+
+	return arr;
+}
+
+module.exports = Color;
+
+
+/***/ }),
+/* 17 */
+/***/ (function(module, exports, __webpack_require__) {
+
+/* MIT license */
+var colorNames = __webpack_require__(5);
+var swizzle = __webpack_require__(18);
+
+var reverseNames = {};
+
+// create a list of reverse color names
+for (var name in colorNames) {
+	if (colorNames.hasOwnProperty(name)) {
+		reverseNames[colorNames[name]] = name;
+	}
+}
+
+var cs = module.exports = {
+	to: {},
+	get: {}
+};
+
+cs.get = function (string) {
+	var prefix = string.substring(0, 3).toLowerCase();
+	var val;
+	var model;
+	switch (prefix) {
+		case 'hsl':
+			val = cs.get.hsl(string);
+			model = 'hsl';
+			break;
+		case 'hwb':
+			val = cs.get.hwb(string);
+			model = 'hwb';
+			break;
+		default:
+			val = cs.get.rgb(string);
+			model = 'rgb';
+			break;
+	}
+
+	if (!val) {
+		return null;
+	}
+
+	return {model: model, value: val};
+};
+
+cs.get.rgb = function (string) {
+	if (!string) {
+		return null;
+	}
+
+	var abbr = /^#([a-f0-9]{3,4})$/i;
+	var hex = /^#([a-f0-9]{6})([a-f0-9]{2})?$/i;
+	var rgba = /^rgba?\(\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/;
+	var per = /^rgba?\(\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/;
+	var keyword = /(\D+)/;
+
+	var rgb = [0, 0, 0, 1];
+	var match;
+	var i;
+	var hexAlpha;
+
+	if (match = string.match(hex)) {
+		hexAlpha = match[2];
+		match = match[1];
+
+		for (i = 0; i < 3; i++) {
+			// https://jsperf.com/slice-vs-substr-vs-substring-methods-long-string/19
+			var i2 = i * 2;
+			rgb[i] = parseInt(match.slice(i2, i2 + 2), 16);
+		}
+
+		if (hexAlpha) {
+			rgb[3] = Math.round((parseInt(hexAlpha, 16) / 255) * 100) / 100;
+		}
+	} else if (match = string.match(abbr)) {
+		match = match[1];
+		hexAlpha = match[3];
+
+		for (i = 0; i < 3; i++) {
+			rgb[i] = parseInt(match[i] + match[i], 16);
+		}
+
+		if (hexAlpha) {
+			rgb[3] = Math.round((parseInt(hexAlpha + hexAlpha, 16) / 255) * 100) / 100;
+		}
+	} else if (match = string.match(rgba)) {
+		for (i = 0; i < 3; i++) {
+			rgb[i] = parseInt(match[i + 1], 0);
+		}
+
+		if (match[4]) {
+			rgb[3] = parseFloat(match[4]);
+		}
+	} else if (match = string.match(per)) {
+		for (i = 0; i < 3; i++) {
+			rgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55);
+		}
+
+		if (match[4]) {
+			rgb[3] = parseFloat(match[4]);
+		}
+	} else if (match = string.match(keyword)) {
+		if (match[1] === 'transparent') {
+			return [0, 0, 0, 0];
+		}
+
+		rgb = colorNames[match[1]];
+
+		if (!rgb) {
+			return null;
+		}
+
+		rgb[3] = 1;
+
+		return rgb;
+	} else {
+		return null;
+	}
+
+	for (i = 0; i < 3; i++) {
+		rgb[i] = clamp(rgb[i], 0, 255);
+	}
+	rgb[3] = clamp(rgb[3], 0, 1);
+
+	return rgb;
+};
+
+cs.get.hsl = function (string) {
+	if (!string) {
+		return null;
+	}
+
+	var hsl = /^hsla?\(\s*([+-]?(?:\d*\.)?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/;
+	var match = string.match(hsl);
+
+	if (match) {
+		var alpha = parseFloat(match[4]);
+		var h = (parseFloat(match[1]) + 360) % 360;
+		var s = clamp(parseFloat(match[2]), 0, 100);
+		var l = clamp(parseFloat(match[3]), 0, 100);
+		var a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);
+
+		return [h, s, l, a];
+	}
+
+	return null;
+};
+
+cs.get.hwb = function (string) {
+	if (!string) {
+		return null;
+	}
+
+	var hwb = /^hwb\(\s*([+-]?\d*[\.]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/;
+	var match = string.match(hwb);
+
+	if (match) {
+		var alpha = parseFloat(match[4]);
+		var h = ((parseFloat(match[1]) % 360) + 360) % 360;
+		var w = clamp(parseFloat(match[2]), 0, 100);
+		var b = clamp(parseFloat(match[3]), 0, 100);
+		var a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);
+		return [h, w, b, a];
+	}
+
+	return null;
+};
+
+cs.to.hex = function () {
+	var rgba = swizzle(arguments);
+
+	return (
+		'#' +
+		hexDouble(rgba[0]) +
+		hexDouble(rgba[1]) +
+		hexDouble(rgba[2]) +
+		(rgba[3] < 1
+			? (hexDouble(Math.round(rgba[3] * 255)))
+			: '')
+	);
+};
+
+cs.to.rgb = function () {
+	var rgba = swizzle(arguments);
+
+	return rgba.length < 4 || rgba[3] === 1
+		? 'rgb(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ')'
+		: 'rgba(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ', ' + rgba[3] + ')';
+};
+
+cs.to.rgb.percent = function () {
+	var rgba = swizzle(arguments);
+
+	var r = Math.round(rgba[0] / 255 * 100);
+	var g = Math.round(rgba[1] / 255 * 100);
+	var b = Math.round(rgba[2] / 255 * 100);
+
+	return rgba.length < 4 || rgba[3] === 1
+		? 'rgb(' + r + '%, ' + g + '%, ' + b + '%)'
+		: 'rgba(' + r + '%, ' + g + '%, ' + b + '%, ' + rgba[3] + ')';
+};
+
+cs.to.hsl = function () {
+	var hsla = swizzle(arguments);
+	return hsla.length < 4 || hsla[3] === 1
+		? 'hsl(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%)'
+		: 'hsla(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%, ' + hsla[3] + ')';
+};
+
+// hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax
+// (hwb have alpha optional & 1 is default value)
+cs.to.hwb = function () {
+	var hwba = swizzle(arguments);
+
+	var a = '';
+	if (hwba.length >= 4 && hwba[3] !== 1) {
+		a = ', ' + hwba[3];
+	}
+
+	return 'hwb(' + hwba[0] + ', ' + hwba[1] + '%, ' + hwba[2] + '%' + a + ')';
+};
+
+cs.to.keyword = function (rgb) {
+	return reverseNames[rgb.slice(0, 3)];
+};
+
+// helpers
+function clamp(num, min, max) {
+	return Math.min(Math.max(min, num), max);
+}
+
+function hexDouble(num) {
+	var str = num.toString(16).toUpperCase();
+	return (str.length < 2) ? '0' + str : str;
+}
+
+
+/***/ }),
+/* 18 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var isArrayish = __webpack_require__(19);
+
+var concat = Array.prototype.concat;
+var slice = Array.prototype.slice;
+
+var swizzle = module.exports = function swizzle(args) {
+	var results = [];
+
+	for (var i = 0, len = args.length; i < len; i++) {
+		var arg = args[i];
+
+		if (isArrayish(arg)) {
+			// http://jsperf.com/javascript-array-concat-vs-push/98
+			results = concat.call(results, slice.call(arg));
+		} else {
+			results.push(arg);
+		}
+	}
+
+	return results;
+};
+
+swizzle.wrap = function (fn) {
+	return function () {
+		return fn(swizzle(arguments));
+	};
+};
+
+
+/***/ }),
+/* 19 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+module.exports = function isArrayish(obj) {
+	if (!obj) {
+		return false;
+	}
+
+	return obj instanceof Array || Array.isArray(obj) ||
+		(obj.length >= 0 && obj.splice instanceof Function);
+};
+
+
+/***/ }),
+/* 20 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var conversions = __webpack_require__(6);
+var route = __webpack_require__(21);
+
+var convert = {};
+
+var models = Object.keys(conversions);
+
+function wrapRaw(fn) {
+	var wrappedFn = function (args) {
+		if (args === undefined || args === null) {
+			return args;
+		}
+
+		if (arguments.length > 1) {
+			args = Array.prototype.slice.call(arguments);
+		}
+
+		return fn(args);
+	};
+
+	// preserve .conversion property if there is one
+	if ('conversion' in fn) {
+		wrappedFn.conversion = fn.conversion;
+	}
+
+	return wrappedFn;
+}
+
+function wrapRounded(fn) {
+	var wrappedFn = function (args) {
+		if (args === undefined || args === null) {
+			return args;
+		}
+
+		if (arguments.length > 1) {
+			args = Array.prototype.slice.call(arguments);
+		}
+
+		var result = fn(args);
+
+		// we're assuming the result is an array here.
+		// see notice in conversions.js; don't use box types
+		// in conversion functions.
+		if (typeof result === 'object') {
+			for (var len = result.length, i = 0; i < len; i++) {
+				result[i] = Math.round(result[i]);
+			}
+		}
+
+		return result;
+	};
+
+	// preserve .conversion property if there is one
+	if ('conversion' in fn) {
+		wrappedFn.conversion = fn.conversion;
+	}
+
+	return wrappedFn;
+}
+
+models.forEach(function (fromModel) {
+	convert[fromModel] = {};
+
+	Object.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});
+	Object.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});
+
+	var routes = route(fromModel);
+	var routeModels = Object.keys(routes);
+
+	routeModels.forEach(function (toModel) {
+		var fn = routes[toModel];
+
+		convert[fromModel][toModel] = wrapRounded(fn);
+		convert[fromModel][toModel].raw = wrapRaw(fn);
+	});
+});
+
+module.exports = convert;
+
+
+/***/ }),
+/* 21 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var conversions = __webpack_require__(6);
+
+/*
+	this function routes a model to all other models.
+
+	all functions that are routed have a property `.conversion` attached
+	to the returned synthetic function. This property is an array
+	of strings, each with the steps in between the 'from' and 'to'
+	color models (inclusive).
+
+	conversions that are not possible simply are not included.
+*/
+
+function buildGraph() {
+	var graph = {};
+	// https://jsperf.com/object-keys-vs-for-in-with-closure/3
+	var models = Object.keys(conversions);
+
+	for (var len = models.length, i = 0; i < len; i++) {
+		graph[models[i]] = {
+			// http://jsperf.com/1-vs-infinity
+			// micro-opt, but this is simple.
+			distance: -1,
+			parent: null
+		};
+	}
+
+	return graph;
+}
+
+// https://en.wikipedia.org/wiki/Breadth-first_search
+function deriveBFS(fromModel) {
+	var graph = buildGraph();
+	var queue = [fromModel]; // unshift -> queue -> pop
+
+	graph[fromModel].distance = 0;
+
+	while (queue.length) {
+		var current = queue.pop();
+		var adjacents = Object.keys(conversions[current]);
+
+		for (var len = adjacents.length, i = 0; i < len; i++) {
+			var adjacent = adjacents[i];
+			var node = graph[adjacent];
+
+			if (node.distance === -1) {
+				node.distance = graph[current].distance + 1;
+				node.parent = current;
+				queue.unshift(adjacent);
+			}
+		}
+	}
+
+	return graph;
+}
+
+function link(from, to) {
+	return function (args) {
+		return to(from(args));
+	};
+}
+
+function wrapConversion(toModel, graph) {
+	var path = [graph[toModel].parent, toModel];
+	var fn = conversions[graph[toModel].parent][toModel];
+
+	var cur = graph[toModel].parent;
+	while (graph[cur].parent) {
+		path.unshift(graph[cur].parent);
+		fn = link(conversions[graph[cur].parent][cur], fn);
+		cur = graph[cur].parent;
+	}
+
+	fn.conversion = path;
+	return fn;
+}
+
+module.exports = function (fromModel) {
+	var graph = deriveBFS(fromModel);
+	var conversion = {};
+
+	var models = Object.keys(graph);
+	for (var len = models.length, i = 0; i < len; i++) {
+		var toModel = models[i];
+		var node = graph[toModel];
+
+		if (node.parent === null) {
+			// no possible conversion, or this node is the source model.
+			continue;
+		}
+
+		conversion[toModel] = wrapConversion(toModel, graph);
+	}
+
+	return conversion;
+};
+
+
+
+/***/ }),
+/* 22 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _jquery = __webpack_require__(0);
+
+var _jquery2 = _interopRequireDefault(_jquery);
+
+var _ColorItem = __webpack_require__(2);
+
+var _ColorItem2 = _interopRequireDefault(_ColorItem);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+/**
+ * Handles everything related to the colorpicker color
+ * @ignore
+ */
+var ColorHandler = function () {
+  /**
+   * @param {Colorpicker} colorpicker
+   */
+  function ColorHandler(colorpicker) {
+    _classCallCheck(this, ColorHandler);
+
+    /**
+     * @type {Colorpicker}
+     */
+    this.colorpicker = colorpicker;
+  }
+
+  /**
+   * @returns {*|String|ColorItem}
+   */
+
+
+  _createClass(ColorHandler, [{
+    key: 'bind',
+    value: function bind() {
+      // if the color option is set
+      if (this.colorpicker.options.color) {
+        this.color = this.createColor(this.colorpicker.options.color);
+        return;
+      }
+
+      // if element[color] is empty and the input has a value
+      if (!this.color && !!this.colorpicker.inputHandler.getValue()) {
+        this.color = this.createColor(this.colorpicker.inputHandler.getValue(), this.colorpicker.options.autoInputFallback);
+      }
+    }
+  }, {
+    key: 'unbind',
+    value: function unbind() {
+      this.colorpicker.element.removeData('color');
+    }
+
+    /**
+     * Returns the color string from the input value or the 'data-color' attribute of the input or element.
+     * If empty, it returns the defaultValue parameter.
+     *
+     * @returns {String|*}
+     */
+
+  }, {
+    key: 'getColorString',
+    value: function getColorString() {
+      if (!this.hasColor()) {
+        return '';
+      }
+
+      return this.color.string(this.format);
+    }
+
+    /**
+     * Sets the color value
+     *
+     * @param {String|ColorItem} val
+     */
+
+  }, {
+    key: 'setColorString',
+    value: function setColorString(val) {
+      var color = val ? this.createColor(val) : null;
+
+      this.color = color ? color : null;
+    }
+
+    /**
+     * Creates a new color using the widget instance options (fallbackColor, format).
+     *
+     * @fires Colorpicker#colorpickerInvalid
+     * @param {*} val
+     * @param {boolean} fallbackOnInvalid
+     * @param {boolean} autoHexInputFallback
+     * @returns {ColorItem}
+     */
+
+  }, {
+    key: 'createColor',
+    value: function createColor(val) {
+      var fallbackOnInvalid = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
+      var autoHexInputFallback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
+
+      var disableHexInputFallback = !fallbackOnInvalid && !autoHexInputFallback;
+
+      var color = new _ColorItem2.default(this.resolveColorDelegate(val), this.format, disableHexInputFallback);
+
+      if (!color.isValid()) {
+        if (fallbackOnInvalid) {
+          color = this.getFallbackColor();
+        }
+
+        /**
+         * (Colorpicker) Fired when the color is invalid and the fallback color is going to be used.
+         *
+         * @event Colorpicker#colorpickerInvalid
+         */
+        this.colorpicker.trigger('colorpickerInvalid', color, val);
+      }
+
+      if (!this.isAlphaEnabled()) {
+        // Alpha is disabled
+        color.alpha = 1;
+      }
+
+      return color;
+    }
+  }, {
+    key: 'getFallbackColor',
+    value: function getFallbackColor() {
+      if (this.fallback && this.fallback === this.color) {
+        return this.color;
+      }
+
+      var fallback = this.resolveColorDelegate(this.fallback);
+
+      var color = new _ColorItem2.default(fallback, this.format);
+
+      if (!color.isValid()) {
+        console.warn('The fallback color is invalid. Falling back to the previous color or black if any.');
+        return this.color ? this.color : new _ColorItem2.default('#000000', this.format);
+      }
+
+      return color;
+    }
+
+    /**
+     * @returns {ColorItem}
+     */
+
+  }, {
+    key: 'assureColor',
+    value: function assureColor() {
+      if (!this.hasColor()) {
+        this.color = this.getFallbackColor();
+      }
+
+      return this.color;
+    }
+
+    /**
+     * Delegates the color resolution to the colorpicker extensions.
+     *
+     * @param {String|*} color
+     * @param {boolean} realColor if true, the color should resolve into a real (not named) color code
+     * @returns {ColorItem|String|*|null}
+     */
+
+  }, {
+    key: 'resolveColorDelegate',
+    value: function resolveColorDelegate(color) {
+      var realColor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
+
+      var extResolvedColor = false;
+
+      _jquery2.default.each(this.colorpicker.extensions, function (name, ext) {
+        if (extResolvedColor !== false) {
+          // skip if resolved
+          return;
+        }
+        extResolvedColor = ext.resolveColor(color, realColor);
+      });
+
+      return extResolvedColor ? extResolvedColor : color;
+    }
+
+    /**
+     * Checks if there is a color object, that it is valid and it is not a fallback
+     * @returns {boolean}
+     */
+
+  }, {
+    key: 'isInvalidColor',
+    value: function isInvalidColor() {
+      return !this.hasColor() || !this.color.isValid();
+    }
+
+    /**
+     * Returns true if the useAlpha option is exactly true, false otherwise
+     * @returns {boolean}
+     */
+
+  }, {
+    key: 'isAlphaEnabled',
+    value: function isAlphaEnabled() {
+      return this.colorpicker.options.useAlpha !== false;
+    }
+
+    /**
+     * Returns true if the current color object is an instance of Color, false otherwise.
+     * @returns {boolean}
+     */
+
+  }, {
+    key: 'hasColor',
+    value: function hasColor() {
+      return this.color instanceof _ColorItem2.default;
+    }
+  }, {
+    key: 'fallback',
+    get: function get() {
+      return this.colorpicker.options.fallbackColor ? this.colorpicker.options.fallbackColor : this.hasColor() ? this.color : null;
+    }
+
+    /**
+     * @returns {String|null}
+     */
+
+  }, {
+    key: 'format',
+    get: function get() {
+      if (this.colorpicker.options.format) {
+        return this.colorpicker.options.format;
+      }
+
+      if (this.hasColor() && this.color.hasTransparency() && this.color.format.match(/^hex/)) {
+        return this.isAlphaEnabled() ? 'rgba' : 'hex';
+      }
+
+      if (this.hasColor()) {
+        return this.color.format;
+      }
+
+      return 'rgb';
+    }
+
+    /**
+     * Internal color getter
+     *
+     * @type {ColorItem|null}
+     */
+
+  }, {
+    key: 'color',
+    get: function get() {
+      return this.colorpicker.element.data('color');
+    }
+
+    /**
+     * Internal color setter
+     *
+     * @ignore
+     * @param {ColorItem|null} value
+     */
+    ,
+    set: function set(value) {
+      this.colorpicker.element.data('color', value);
+
+      if (value instanceof _ColorItem2.default && this.colorpicker.options.format === 'auto') {
+        // If format is 'auto', use the first parsed one from now on
+        this.colorpicker.options.format = this.color.format;
+      }
+    }
+  }]);
+
+  return ColorHandler;
+}();
+
+exports.default = ColorHandler;
+module.exports = exports.default;
+
+/***/ }),
+/* 23 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _jquery = __webpack_require__(0);
+
+var _jquery2 = _interopRequireDefault(_jquery);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+/**
+ * Handles everything related to the colorpicker UI
+ * @ignore
+ */
+var PickerHandler = function () {
+  /**
+   * @param {Colorpicker} colorpicker
+   */
+  function PickerHandler(colorpicker) {
+    _classCallCheck(this, PickerHandler);
+
+    /**
+     * @type {Colorpicker}
+     */
+    this.colorpicker = colorpicker;
+    /**
+     * @type {jQuery}
+     */
+    this.picker = null;
+  }
+
+  _createClass(PickerHandler, [{
+    key: 'bind',
+    value: function bind() {
+      /**
+       * @type {jQuery|HTMLElement}
+       */
+      var picker = this.picker = (0, _jquery2.default)(this.options.template);
+
+      if (this.options.customClass) {
+        picker.addClass(this.options.customClass);
+      }
+
+      if (this.options.horizontal) {
+        picker.addClass('colorpicker-horizontal');
+      }
+
+      if (this._supportsAlphaBar()) {
+        this.options.useAlpha = true;
+        picker.addClass('colorpicker-with-alpha');
+      } else {
+        this.options.useAlpha = false;
+      }
+    }
+  }, {
+    key: 'attach',
+    value: function attach() {
+      // Inject the colorpicker element into the DOM
+      var pickerParent = this.colorpicker.container ? this.colorpicker.container : null;
+
+      if (pickerParent) {
+        this.picker.appendTo(pickerParent);
+      }
+    }
+  }, {
+    key: 'unbind',
+    value: function unbind() {
+      this.picker.remove();
+    }
+  }, {
+    key: '_supportsAlphaBar',
+    value: function _supportsAlphaBar() {
+      return (this.options.useAlpha || this.colorpicker.colorHandler.hasColor() && this.color.hasTransparency()) && this.options.useAlpha !== false && (!this.options.format || this.options.format && !this.options.format.match(/^hex([36])?$/i));
+    }
+
+    /**
+     * Changes the color adjustment bars using the current color object information.
+     */
+
+  }, {
+    key: 'update',
+    value: function update() {
+      if (!this.colorpicker.colorHandler.hasColor()) {
+        return;
+      }
+
+      var vertical = this.options.horizontal !== true,
+          slider = vertical ? this.options.sliders : this.options.slidersHorz;
+
+      var saturationGuide = this.picker.find('.colorpicker-saturation .colorpicker-guide'),
+          hueGuide = this.picker.find('.colorpicker-hue .colorpicker-guide'),
+          alphaGuide = this.picker.find('.colorpicker-alpha .colorpicker-guide');
+
+      var hsva = this.color.toHsvaRatio();
+
+      // Set guides position
+      if (hueGuide.length) {
+        hueGuide.css(vertical ? 'top' : 'left', (vertical ? slider.hue.maxTop : slider.hue.maxLeft) * (1 - hsva.h));
+      }
+      if (alphaGuide.length) {
+        alphaGuide.css(vertical ? 'top' : 'left', (vertical ? slider.alpha.maxTop : slider.alpha.maxLeft) * (1 - hsva.a));
+      }
+      if (saturationGuide.length) {
+        saturationGuide.css({
+          'top': slider.saturation.maxTop - hsva.v * slider.saturation.maxTop,
+          'left': hsva.s * slider.saturation.maxLeft
+        });
+      }
+
+      // Set saturation hue background
+      this.picker.find('.colorpicker-saturation').css('backgroundColor', this.color.getCloneHueOnly().toHexString()); // we only need hue
+
+      // Set alpha color gradient
+      var hexColor = this.color.toHexString();
+
+      var alphaBg = '';
+
+      if (this.options.horizontal) {
+        alphaBg = 'linear-gradient(to right, ' + hexColor + ' 0%, transparent 100%)';
+      } else {
+        alphaBg = 'linear-gradient(to bottom, ' + hexColor + ' 0%, transparent 100%)';
+      }
+
+      this.picker.find('.colorpicker-alpha-color').css('background', alphaBg);
+    }
+  }, {
+    key: 'options',
+    get: function get() {
+      return this.colorpicker.options;
+    }
+  }, {
+    key: 'color',
+    get: function get() {
+      return this.colorpicker.colorHandler.color;
+    }
+  }]);
+
+  return PickerHandler;
+}();
+
+exports.default = PickerHandler;
+module.exports = exports.default;
+
+/***/ }),
+/* 24 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+/**
+ * Handles everything related to the colorpicker addon
+ * @ignore
+ */
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+var AddonHandler = function () {
+  /**
+   * @param {Colorpicker} colorpicker
+   */
+  function AddonHandler(colorpicker) {
+    _classCallCheck(this, AddonHandler);
+
+    /**
+     * @type {Colorpicker}
+     */
+    this.colorpicker = colorpicker;
+    /**
+     * @type {jQuery}
+     */
+    this.addon = null;
+  }
+
+  _createClass(AddonHandler, [{
+    key: 'hasAddon',
+    value: function hasAddon() {
+      return !!this.addon;
+    }
+  }, {
+    key: 'bind',
+    value: function bind() {
+      /**
+       * @type {*|jQuery}
+       */
+      this.addon = this.colorpicker.options.addon ? this.colorpicker.element.find(this.colorpicker.options.addon) : null;
+
+      if (this.addon && this.addon.length === 0) {
+        // not found
+        this.addon = null;
+      }
+    }
+  }, {
+    key: 'unbind',
+    value: function unbind() {
+      if (this.hasAddon()) {
+        this.addon.off('.colorpicker');
+      }
+    }
+
+    /**
+     * If the addon element is present, its background color is updated
+     */
+
+  }, {
+    key: 'update',
+    value: function update() {
+      if (!this.colorpicker.colorHandler.hasColor() || !this.hasAddon()) {
+        return;
+      }
+
+      var colorStr = this.colorpicker.colorHandler.getColorString();
+
+      var styles = { 'background': colorStr };
+
+      var icn = this.addon.find('i').eq(0);
+
+      if (icn.length > 0) {
+        icn.css(styles);
+      } else {
+        this.addon.css(styles);
+      }
+    }
+  }]);
+
+  return AddonHandler;
+}();
+
+exports.default = AddonHandler;
+module.exports = exports.default;
+
+/***/ })
+/******/ ]);
+});
+//# sourceMappingURL=bootstrap-colorpicker.js.map
\ No newline at end of file
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-colorpicker/LICENSE
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-colorpicker/LICENSE	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-colorpicker/LICENSE	(revision 3762)
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2017 Javi Aguilar
+
+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.
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-colorpicker/package.json
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-colorpicker/package.json	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bs-colorpicker/package.json	(revision 3762)
@@ -0,0 +1,44 @@
+{
+  "name": "bootstrap-colorpicker",
+  "version": "3.4.0",
+  "description": "Bootstrap Colorpicker is a modular color picker plugin for Bootstrap 4.",
+  "main": "./dist/js/bootstrap-colorpicker.js",
+  "homepage": "https://itsjavi.com/bootstrap-colorpicker/",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/itsjavi/bootstrap-colorpicker.git"
+  },
+  "bugs": {
+    "url": "https://github.com/itsjavi/bootstrap-colorpicker/issues"
+  },
+  "keywords": ["bootstrap", "colorpicker"],
+  "author": "Javi Aguilar",
+  "license": "MIT",
+  "dependencies": {
+    "bootstrap": ">=4.0",
+    "jquery": ">=2.2",
+    "popper.js": ">=1.10"
+  },
+  "scripts": {
+    "test": "npm run lint && ava --color --verbose",
+    "start": "node_modules/.bin/http-server ./build/docs",
+    "lint": "node_modules/.bin/eslint ./src/js ./*.js ./tests",
+    "lint-fix": "node_modules/.bin/eslint --fix ./src/js ./*.js ./tests",
+    "build": "gulp clean && gulp dist && gulp docs && gulp docs:add-v2-docs",
+    "build-dist": "gulp dist",
+    "build-docs": "gulp dist && gulp docs && gulp docs:add-v2-docs",
+    "build-npm": "npm run build && gulp npm-prepublish",
+    "publish-docs": "gh-pages -d build/docs"
+  },
+  "ava": {
+    "files": "tests/**/*test.js",
+    "source": "src/js/**/*.{js,jsx}",
+    "concurrency": 5,
+    "failFast": true,
+    "failWithoutAssertions": false,
+    "tap": false,
+    "powerAssert": false,
+    "require": "babel-register",
+    "babel": "inherit"
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/darkly/font.css
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/darkly/font.css	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/darkly/font.css	(revision 3762)
@@ -0,0 +1,18 @@
+@font-face {
+  font-family: 'Lato';
+  font-style: italic;
+  font-weight: 400;
+  src: url(fonts/S6u8w4BMUTPHjxsAXC-s.woff) format('woff');
+}
+@font-face {
+  font-family: 'Lato';
+  font-style: normal;
+  font-weight: 400;
+  src: url(fonts/S6uyw4BMUTPHjx4wWA.woff) format('woff');
+}
+@font-face {
+  font-family: 'Lato';
+  font-style: normal;
+  font-weight: 700;
+  src: url(fonts/S6u9w4BMUTPHh6UVSwiPHw.woff) format('woff');
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/darkly/_variables.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/darkly/_variables.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/darkly/_variables.scss	(revision 3762)
@@ -0,0 +1,870 @@
+$bootstrap-sass-asset-helper: false !default;
+// Darkly 3.4.1
+// Variables
+// --------------------------------------------------
+
+
+//== Colors
+//
+//## Gray and brand colors for use across Bootstrap.
+
+$gray-base:              #000 !default;
+$gray-darker:            lighten($gray-base, 13.5%) !default; // #222
+$gray-dark:              #303030 !default;   // #333
+$gray:                   #464545 !default;
+$gray-light:             #999 !default;   // #999
+$gray-lighter:           #EBEBEB !default; // #eee
+
+$brand-primary:         #375a7f !default;
+$brand-success:         #00bc8c !default;
+$brand-info:            #3498DB !default;
+$brand-warning:         #F39C12 !default;
+$brand-danger:          #E74C3C !default;
+
+
+//== Scaffolding
+//
+//## Settings for some of the most global styles.
+
+//** Background color for `<body>`.
+$body-bg:               $gray-darker !default;
+//** Global text color on `<body>`.
+$text-color:            #fff !default;
+
+//** Global textual link color.
+$link-color:            desaturate(lighten($brand-success, 10%),10%) !default;
+//** Link hover color set via `darken()` function.
+$link-hover-color:      $link-color !default;
+//** Link hover decoration.
+$link-hover-decoration: underline !default;
+
+
+//== Typography
+//
+//## Font, line-height, and color for body text, headings, and more.
+
+$font-family-sans-serif:  "Lato", "Helvetica Neue", Helvetica, Arial, sans-serif !default;
+$font-family-serif:       Georgia, "Times New Roman", Times, serif !default;
+//** Default monospace fonts for `<code>`, `<kbd>`, and `<pre>`.
+$font-family-monospace:   Menlo, Monaco, Consolas, "Courier New", monospace !default;
+$font-family-base:        $font-family-sans-serif !default;
+
+$font-size-base:          15px !default;
+$font-size-large:         ceil(($font-size-base * 1.25)) !default; // ~18px
+$font-size-small:         ceil(($font-size-base * 0.85)) !default; // ~12px
+
+$font-size-h1:            floor(($font-size-base * 2.6)) !default; // ~36px
+$font-size-h2:            floor(($font-size-base * 2.15)) !default; // ~30px
+$font-size-h3:            ceil(($font-size-base * 1.7)) !default; // ~24px
+$font-size-h4:            ceil(($font-size-base * 1.25)) !default; // ~18px
+$font-size-h5:            $font-size-base !default;
+$font-size-h6:            ceil(($font-size-base * 0.85)) !default; // ~12px
+
+//** Unit-less `line-height` for use in components like buttons.
+$line-height-base:        1.428571429 !default; // 20/14
+//** Computed "line-height" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.
+$line-height-computed:    floor(($font-size-base * $line-height-base)) !default; // ~20px
+
+//** By default, this inherits from the `<body>`.
+$headings-font-family:    $font-family-base !default;
+$headings-font-weight:    400 !default;
+$headings-line-height:    1.1 !default;
+$headings-color:          inherit !default;
+
+
+//== Iconography
+//
+//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.
+
+//** Load fonts from this directory.
+$icon-font-path: if($bootstrap-sass-asset-helper, "bootstrap/", "../fonts/bootstrap/") !default;
+//** File name for all font files.
+$icon-font-name:          "glyphicons-halflings-regular" !default;
+//** Element ID within SVG icon file.
+$icon-font-svg-id:        "glyphicons_halflingsregular" !default;
+
+
+//== Components
+//
+//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).
+
+$padding-base-vertical:     10px !default;
+$padding-base-horizontal:   15px !default;
+
+$padding-large-vertical:    18px !default;
+$padding-large-horizontal:  27px !default;
+
+$padding-small-vertical:    6px !default;
+$padding-small-horizontal:  9px !default;
+
+$padding-xs-vertical:       1px !default;
+$padding-xs-horizontal:     5px !default;
+
+$line-height-large:         1.3333333 !default; // extra decimals for Win 8.1 Chrome
+$line-height-small:         1.5 !default;
+
+$border-radius-base:        4px !default;
+$border-radius-large:       6px !default;
+$border-radius-small:       3px !default;
+
+//** Global color for active items (e.g., navs or dropdowns).
+$component-active-color:    #fff !default;
+//** Global background color for active items (e.g., navs or dropdowns).
+$component-active-bg:       $brand-primary !default;
+
+//** Width of the `border` for generating carets that indicate dropdowns.
+$caret-width-base:          4px !default;
+//** Carets increase slightly in size for larger components.
+$caret-width-large:         5px !default;
+
+
+//== Tables
+//
+//## Customizes the `.table` component with basic values, each used across all table variations.
+
+//** Padding for `<th>`s and `<td>`s.
+$table-cell-padding:            8px !default;
+//** Padding for cells in `.table-condensed`.
+$table-condensed-cell-padding:  5px !default;
+
+//** Default background color used for all tables.
+$table-bg:                      transparent !default;
+//** Background color used for `.table-striped`.
+$table-bg-accent:               lighten($gray-dark, 5%) !default;
+//** Background color used for `.table-hover`.
+$table-bg-hover:                $gray !default;
+$table-bg-active:               $table-bg-hover !default;
+
+//** Border color for table and cell borders.
+$table-border-color:            $gray !default;
+
+
+//== Buttons
+//
+//## For each of Bootstrap's buttons, define text, background and border color.
+
+$btn-font-weight:                normal !default;
+
+$btn-default-color:              $text-color !default;
+$btn-default-bg:                 $gray !default;
+$btn-default-border:             $btn-default-bg !default;
+
+$btn-primary-color:              #fff !default;
+$btn-primary-bg:                 $brand-primary !default;
+$btn-primary-border:             $btn-primary-bg !default;
+
+$btn-success-color:              $btn-primary-color !default;
+$btn-success-bg:                 $brand-success !default;
+$btn-success-border:             $btn-success-bg !default;
+
+$btn-info-color:                 $btn-success-color !default;
+$btn-info-bg:                    $brand-info !default;
+$btn-info-border:                $btn-info-bg !default;
+
+$btn-warning-color:              $btn-success-color !default;
+$btn-warning-bg:                 $brand-warning !default;
+$btn-warning-border:             $btn-warning-bg !default;
+
+$btn-danger-color:               $btn-success-color !default;
+$btn-danger-bg:                  $brand-danger !default;
+$btn-danger-border:              $btn-danger-bg !default;
+
+$btn-link-disabled-color:        $gray-light !default;
+
+// Allows for customizing button radius independently from global border radius
+$btn-border-radius-base:         $border-radius-base !default;
+$btn-border-radius-large:        $border-radius-large !default;
+$btn-border-radius-small:        $border-radius-small !default;
+
+
+//== Forms
+//
+//##
+
+//** `<input>` background color
+$input-bg:                       #fff !default;
+//** `<input disabled>` background color
+$input-bg-disabled:              $gray-lighter !default;
+
+//** Text color for `<input>`s
+$input-color:                    $gray !default;
+//** `<input>` border color
+$input-border:                   #f1f1f1 !default;
+
+// TODO: Rename `$input-border-radius` to `$input-border-radius-base` in v4
+//** Default `.form-control` border radius
+// This has no effect on `<select>`s in some browsers, due to the limited stylability of `<select>`s in CSS.
+$input-border-radius:            $border-radius-base !default;
+//** Large `.form-control` border radius
+$input-border-radius-large:      $border-radius-large !default;
+//** Small `.form-control` border radius
+$input-border-radius-small:      $border-radius-small !default;
+
+//** Border color for inputs on focus
+$input-border-focus:             #fff !default;
+
+//** Placeholder text color
+$input-color-placeholder:        $gray-light !default;
+
+//** Default `.form-control` height
+$input-height-base:              ($line-height-computed + ($padding-base-vertical * 2) + 4) !default;
+//** Large `.form-control` height
+$input-height-large:             (ceil($font-size-large * $line-height-large) + ($padding-large-vertical * 2) + 4) !default;
+//** Small `.form-control` height
+$input-height-small:             (floor($font-size-small * $line-height-small) + ($padding-small-vertical * 2) + 4) !default;
+
+//** `.form-group` margin
+$form-group-margin-bottom:       15px !default;
+
+$legend-color:                   $text-color !default;
+$legend-border-color:            transparent !default;
+
+//** Background color for textual input addons
+$input-group-addon-bg:           $gray !default;
+//** Border color for textual input addons
+$input-group-addon-border-color: transparent !default;
+
+//** Disabled cursor for form controls and buttons.
+$cursor-disabled:                not-allowed !default;
+
+
+//== Dropdowns
+//
+//## Dropdown menu container and contents.
+
+//** Background for the dropdown menu.
+$dropdown-bg:                    $gray-dark !default;
+//** Dropdown menu `border-color`.
+$dropdown-border:                rgba(0,0,0,.15) !default;
+//** Dropdown menu `border-color` **for IE8**.
+$dropdown-fallback-border:       #ccc !default;
+//** Divider color for between dropdown items.
+$dropdown-divider-bg:            $gray !default;
+
+//** Dropdown link text color.
+$dropdown-link-color:            $gray-lighter !default;
+//** Hover color for dropdown links.
+$dropdown-link-hover-color:      #fff !default;
+//** Hover background for dropdown links.
+$dropdown-link-hover-bg:         $component-active-bg !default;
+
+//** Active dropdown menu item text color.
+$dropdown-link-active-color:     #fff !default;
+//** Active dropdown menu item background color.
+$dropdown-link-active-bg:        $component-active-bg !default;
+
+//** Disabled dropdown menu item background color.
+$dropdown-link-disabled-color:   $gray-light !default;
+
+//** Text color for headers within dropdown menus.
+$dropdown-header-color:          $gray-light !default;
+
+//** Deprecated `$dropdown-caret-color` as of v3.1.0
+$dropdown-caret-color:           #000 !default;
+
+
+//-- Z-index master list
+//
+// Warning: Avoid customizing these values. They're used for a bird's eye view
+// of components dependent on the z-axis and are designed to all work together.
+//
+// Note: These variables are not generated into the Customizer.
+
+$zindex-navbar:            1000 !default;
+$zindex-dropdown:          1000 !default;
+$zindex-popover:           1060 !default;
+$zindex-tooltip:           1070 !default;
+$zindex-navbar-fixed:      1030 !default;
+$zindex-modal-background:  1040 !default;
+$zindex-modal:             1050 !default;
+
+
+//== Media queries breakpoints
+//
+//## Define the breakpoints at which your layout will change, adapting to different screen sizes.
+
+// Extra small screen / phone
+//** Deprecated `$screen-xs` as of v3.0.1
+$screen-xs:                  480px !default;
+//** Deprecated `$screen-xs-min` as of v3.2.0
+$screen-xs-min:              $screen-xs !default;
+//** Deprecated `$screen-phone` as of v3.0.1
+$screen-phone:               $screen-xs-min !default;
+
+// Small screen / tablet
+//** Deprecated `$screen-sm` as of v3.0.1
+$screen-sm:                  768px !default;
+$screen-sm-min:              $screen-sm !default;
+//** Deprecated `$screen-tablet` as of v3.0.1
+$screen-tablet:              $screen-sm-min !default;
+
+// Medium screen / desktop
+//** Deprecated `$screen-md` as of v3.0.1
+$screen-md:                  992px !default;
+$screen-md-min:              $screen-md !default;
+//** Deprecated `$screen-desktop` as of v3.0.1
+$screen-desktop:             $screen-md-min !default;
+
+// Large screen / wide desktop
+//** Deprecated `$screen-lg` as of v3.0.1
+$screen-lg:                  1200px !default;
+$screen-lg-min:              $screen-lg !default;
+//** Deprecated `$screen-lg-desktop` as of v3.0.1
+$screen-lg-desktop:          $screen-lg-min !default;
+
+// So media queries don't overlap when required, provide a maximum
+$screen-xs-max:              ($screen-sm-min - 1) !default;
+$screen-sm-max:              ($screen-md-min - 1) !default;
+$screen-md-max:              ($screen-lg-min - 1) !default;
+
+
+//== Grid system
+//
+//## Define your custom responsive grid.
+
+//** Number of columns in the grid.
+$grid-columns:              12 !default;
+//** Padding between columns. Gets divided in half for the left and right.
+$grid-gutter-width:         30px !default;
+// Navbar collapse
+//** Point at which the navbar becomes uncollapsed.
+$grid-float-breakpoint:     $screen-sm-min !default;
+//** Point at which the navbar begins collapsing.
+$grid-float-breakpoint-max: ($grid-float-breakpoint - 1) !default;
+
+
+//== Container sizes
+//
+//## Define the maximum width of `.container` for different screen sizes.
+
+// Small screen / tablet
+$container-tablet:             (720px + $grid-gutter-width) !default;
+//** For `$screen-sm-min` and up.
+$container-sm:                 $container-tablet !default;
+
+// Medium screen / desktop
+$container-desktop:            (940px + $grid-gutter-width) !default;
+//** For `$screen-md-min` and up.
+$container-md:                 $container-desktop !default;
+
+// Large screen / wide desktop
+$container-large-desktop:      (1140px + $grid-gutter-width) !default;
+//** For `$screen-lg-min` and up.
+$container-lg:                 $container-large-desktop !default;
+
+
+//== Navbar
+//
+//##
+
+// Basics of a navbar
+$navbar-height:                    60px !default;
+$navbar-margin-bottom:             $line-height-computed !default;
+$navbar-border-radius:             $border-radius-base !default;
+$navbar-padding-horizontal:        floor(($grid-gutter-width / 2)) !default;
+$navbar-padding-vertical:          (($navbar-height - $line-height-computed) / 2) !default;
+$navbar-collapse-max-height:       340px !default;
+
+$navbar-default-color:             #fff !default;
+$navbar-default-bg:                $brand-primary !default;
+$navbar-default-border:            transparent !default;
+
+// Navbar links
+$navbar-default-link-color:                #fff !default;
+$navbar-default-link-hover-color:          $brand-success !default;
+$navbar-default-link-hover-bg:             transparent !default;
+$navbar-default-link-active-color:         #fff !default;
+$navbar-default-link-active-bg:            darken($navbar-default-bg, 10%) !default;
+$navbar-default-link-disabled-color:       #ccc !default;
+$navbar-default-link-disabled-bg:          transparent !default;
+
+// Navbar brand label
+$navbar-default-brand-color:               $navbar-default-link-color !default;
+$navbar-default-brand-hover-color:         $navbar-default-link-hover-color !default;
+$navbar-default-brand-hover-bg:            transparent !default;
+
+// Navbar toggle
+$navbar-default-toggle-hover-bg:           darken($navbar-default-bg, 10%) !default;
+$navbar-default-toggle-icon-bar-bg:        #fff !default;
+$navbar-default-toggle-border-color:       darken($navbar-default-bg, 10%) !default;
+
+
+//=== Inverted navbar
+// Reset inverted navbar basics
+$navbar-inverse-color:                      #fff !default;
+$navbar-inverse-bg:                         $brand-success !default;
+$navbar-inverse-border:                     transparent !default;
+
+// Inverted navbar links
+$navbar-inverse-link-color:                 $navbar-inverse-color !default;
+$navbar-inverse-link-hover-color:           $brand-primary !default;
+$navbar-inverse-link-hover-bg:              transparent !default;
+$navbar-inverse-link-active-color:          $navbar-inverse-color !default;
+$navbar-inverse-link-active-bg:             darken($navbar-inverse-bg, 5%) !default;
+$navbar-inverse-link-disabled-color:        #aaa !default;
+$navbar-inverse-link-disabled-bg:           transparent !default;
+
+// Inverted navbar brand label
+$navbar-inverse-brand-color:                $navbar-inverse-link-color !default;
+$navbar-inverse-brand-hover-color:          $navbar-inverse-link-hover-color !default;
+$navbar-inverse-brand-hover-bg:             transparent !default;
+
+// Inverted navbar toggle
+$navbar-inverse-toggle-hover-bg:            darken($navbar-inverse-bg, 10%) !default;
+$navbar-inverse-toggle-icon-bar-bg:         #fff !default;
+$navbar-inverse-toggle-border-color:        darken($navbar-inverse-bg, 10%) !default;
+
+
+//== Navs
+//
+//##
+
+//=== Shared nav styles
+$nav-link-padding:                          10px 15px !default;
+$nav-link-hover-bg:                         $gray-dark !default;
+
+$nav-disabled-link-color:                   lighten($gray, 10%) !default;
+$nav-disabled-link-hover-color:             lighten($gray, 10%) !default;
+
+//== Tabs
+$nav-tabs-border-color:                     $gray !default;
+
+$nav-tabs-link-hover-border-color:          $gray !default;
+
+$nav-tabs-active-link-hover-bg:             $body-bg !default;
+$nav-tabs-active-link-hover-color:          $brand-success !default;
+$nav-tabs-active-link-hover-border-color:   $nav-tabs-link-hover-border-color !default;
+
+$nav-tabs-justified-link-border-color:            $gray-lighter !default;
+$nav-tabs-justified-active-link-border-color:     $body-bg !default;
+
+//== Pills
+$nav-pills-border-radius:                   $border-radius-base !default;
+$nav-pills-active-link-hover-bg:            $component-active-bg !default;
+$nav-pills-active-link-hover-color:         $component-active-color !default;
+
+
+//== Pagination
+//
+//##
+
+$pagination-color:                     #fff !default;
+$pagination-bg:                        $brand-success !default;
+$pagination-border:                    transparent !default;
+
+$pagination-hover-color:               #fff !default;
+$pagination-hover-bg:                  lighten($brand-success, 6%) !default;
+$pagination-hover-border:              transparent !default;
+
+$pagination-active-color:              #fff !default;
+$pagination-active-bg:                 lighten($brand-success, 6%) !default;
+$pagination-active-border:             transparent !default;
+
+$pagination-disabled-color:            #fff !default;
+$pagination-disabled-bg:               darken($brand-success, 15%) !default;
+$pagination-disabled-border:           transparent !default;
+
+
+//== Pager
+//
+//##
+
+$pager-bg:                             $pagination-bg !default;
+$pager-border:                         $pagination-border !default;
+$pager-border-radius:                  15px !default;
+
+$pager-hover-bg:                       $pagination-hover-bg !default;
+
+$pager-active-bg:                      $pagination-active-bg !default;
+$pager-active-color:                   $pagination-active-color !default;
+
+$pager-disabled-color:                 #ddd !default;
+
+
+//== Jumbotron
+//
+//##
+
+$jumbotron-padding:              30px !default;
+$jumbotron-color:                inherit !default;
+$jumbotron-bg:                   $gray-dark !default;
+$jumbotron-heading-color:        inherit !default;
+$jumbotron-font-size:            ceil(($font-size-base * 1.5)) !default;
+$jumbotron-heading-font-size:    ceil(($font-size-base * 4.5)) !default;
+
+
+//== Form states and alerts
+//
+//## Define colors for form feedback states and, by default, alerts.
+
+$state-success-text:             #fff !default;
+$state-success-bg:               $brand-success !default;
+$state-success-border:           $brand-success !default;
+
+$state-info-text:                #fff !default;
+$state-info-bg:                  $brand-info !default;
+$state-info-border:              $brand-info !default;
+
+$state-warning-text:             #fff !default;
+$state-warning-bg:               $brand-warning !default;
+$state-warning-border:           $brand-warning !default;
+
+$state-danger-text:              #fff !default;
+$state-danger-bg:                $brand-danger !default;
+$state-danger-border:            $brand-danger !default;
+
+
+//== Tooltips
+//
+//##
+
+//** Tooltip max width
+$tooltip-max-width:           200px !default;
+//** Tooltip text color
+$tooltip-color:               #fff !default;
+//** Tooltip background color
+$tooltip-bg:                  #000 !default;
+$tooltip-opacity:             .9 !default;
+
+//** Tooltip arrow width
+$tooltip-arrow-width:         5px !default;
+//** Tooltip arrow color
+$tooltip-arrow-color:         $tooltip-bg !default;
+
+
+//== Popovers
+//
+//##
+
+//** Popover body background color
+$popover-bg:                          $gray-dark !default;
+//** Popover maximum width
+$popover-max-width:                   276px !default;
+//** Popover border color
+$popover-border-color:                rgba(0,0,0,.2) !default;
+//** Popover fallback border color
+$popover-fallback-border-color:       #999 !default;
+
+//** Popover title background color
+$popover-title-bg:                    darken($popover-bg, 3%) !default;
+
+//** Popover arrow width
+$popover-arrow-width:                 10px !default;
+//** Popover arrow color
+$popover-arrow-color:                 $popover-bg !default;
+
+//** Popover outer arrow width
+$popover-arrow-outer-width:           ($popover-arrow-width + 1) !default;
+//** Popover outer arrow color
+$popover-arrow-outer-color:           fadein($popover-border-color, 5%) !default;
+//** Popover outer arrow fallback color
+$popover-arrow-outer-fallback-color:  darken($popover-fallback-border-color, 20%) !default;
+
+
+//== Labels
+//
+//##
+
+//** Default label background color
+$label-default-bg:            $gray !default;
+//** Primary label background color
+$label-primary-bg:            $brand-primary !default;
+//** Success label background color
+$label-success-bg:            $brand-success !default;
+//** Info label background color
+$label-info-bg:               $brand-info !default;
+//** Warning label background color
+$label-warning-bg:            $brand-warning !default;
+//** Danger label background color
+$label-danger-bg:             $brand-danger !default;
+
+//** Default label text color
+$label-color:                 #fff !default;
+//** Default text color of a linked label
+$label-link-hover-color:      #fff !default;
+
+
+//== Modals
+//
+//##
+
+//** Padding applied to the modal body
+$modal-inner-padding:         20px !default;
+
+//** Padding applied to the modal title
+$modal-title-padding:         15px !default;
+//** Modal title line-height
+$modal-title-line-height:     $line-height-base !default;
+
+//** Background color of modal content area
+$modal-content-bg:                             $gray-dark !default;
+//** Modal content border color
+$modal-content-border-color:                   rgba(0,0,0,.2) !default;
+//** Modal content border color **for IE8**
+$modal-content-fallback-border-color:          #999 !default;
+
+//** Modal backdrop background color
+$modal-backdrop-bg:           #000 !default;
+//** Modal backdrop opacity
+$modal-backdrop-opacity:      .7 !default;
+//** Modal header border color
+$modal-header-border-color:   $gray !default;
+//** Modal footer border color
+$modal-footer-border-color:   $modal-header-border-color !default;
+
+$modal-lg:                    900px !default;
+$modal-md:                    600px !default;
+$modal-sm:                    300px !default;
+
+
+//== Alerts
+//
+//## Define alert colors, border radius, and padding.
+
+$alert-padding:               15px !default;
+$alert-border-radius:         $border-radius-base !default;
+$alert-link-font-weight:      bold !default;
+
+$alert-success-bg:            $state-success-bg !default;
+$alert-success-text:          $state-success-text !default;
+$alert-success-border:        $state-success-border !default;
+
+$alert-info-bg:               $state-info-bg !default;
+$alert-info-text:             $state-info-text !default;
+$alert-info-border:           $state-info-border !default;
+
+$alert-warning-bg:            $state-warning-bg !default;
+$alert-warning-text:          $state-warning-text !default;
+$alert-warning-border:        $state-warning-border !default;
+
+$alert-danger-bg:             $state-danger-bg !default;
+$alert-danger-text:           $state-danger-text !default;
+$alert-danger-border:         $state-danger-border !default;
+
+
+//== Progress bars
+//
+//##
+
+//** Background color of the whole progress component
+$progress-bg:                 $gray-lighter !default;
+//** Progress bar text color
+$progress-bar-color:          #fff !default;
+//** Variable for setting rounded corners on progress bar.
+$progress-border-radius:      $border-radius-base !default;
+
+//** Default progress bar color
+$progress-bar-bg:             $brand-primary !default;
+//** Success progress bar color
+$progress-bar-success-bg:     $brand-success !default;
+//** Warning progress bar color
+$progress-bar-warning-bg:     $brand-warning !default;
+//** Danger progress bar color
+$progress-bar-danger-bg:      $brand-danger !default;
+//** Info progress bar color
+$progress-bar-info-bg:        $brand-info !default;
+
+
+//== List group
+//
+//##
+
+//** Background color on `.list-group-item`
+$list-group-bg:                 $gray-dark !default;
+//** `.list-group-item` border color
+$list-group-border:             $gray !default;
+//** List group border radius
+$list-group-border-radius:      $border-radius-base !default;
+
+//** Background color of single list items on hover
+$list-group-hover-bg:          transparent !default;
+//** Text color of active list items
+$list-group-active-color:       $component-active-color !default;
+//** Background color of active list items
+$list-group-active-bg:          $component-active-bg !default;
+//** Border color of active list elements
+$list-group-active-border:      $list-group-active-bg !default;
+//** Text color for content within active list items
+$list-group-active-text-color:  lighten($list-group-active-bg, 40%) !default;
+
+//** Text color of disabled list items
+$list-group-disabled-color:      $gray-light !default;
+//** Background color of disabled list items
+$list-group-disabled-bg:         $gray-lighter !default;
+//** Text color for content within disabled list items
+$list-group-disabled-text-color: $list-group-disabled-color !default;
+
+$list-group-link-color:         $link-color !default;
+$list-group-link-hover-color:   $list-group-link-color !default;
+$list-group-link-heading-color: darken($link-color, 5%) !default;
+
+
+//== Panels
+//
+//##
+
+$panel-bg:                    $gray-dark !default;
+$panel-body-padding:          15px !default;
+$panel-heading-padding:       10px 15px !default;
+$panel-footer-padding:        $panel-heading-padding !default;
+$panel-border-radius:         $border-radius-base !default;
+
+//** Border color for elements within panels
+$panel-inner-border:          $gray !default;
+$panel-footer-bg:             $gray !default;
+
+$panel-default-text:          $text-color !default;
+$panel-default-border:        $gray !default;
+$panel-default-heading-bg:    $gray-dark !default;
+
+$panel-primary-text:          #fff !default;
+$panel-primary-border:        $brand-primary !default;
+$panel-primary-heading-bg:    $brand-primary !default;
+
+$panel-success-text:          $state-success-text !default;
+$panel-success-border:        $state-success-border !default;
+$panel-success-heading-bg:    $state-success-bg !default;
+
+$panel-info-text:             $state-info-text !default;
+$panel-info-border:           $state-info-border !default;
+$panel-info-heading-bg:       $state-info-bg !default;
+
+$panel-warning-text:          $state-warning-text !default;
+$panel-warning-border:        $state-warning-border !default;
+$panel-warning-heading-bg:    $state-warning-bg !default;
+
+$panel-danger-text:           $state-danger-text !default;
+$panel-danger-border:         $state-danger-border !default;
+$panel-danger-heading-bg:     $state-danger-bg !default;
+
+
+//== Thumbnails
+//
+//##
+
+//** Padding around the thumbnail image
+$thumbnail-padding:           2px !default;
+//** Thumbnail background color
+$thumbnail-bg:                $body-bg !default;
+//** Thumbnail border color
+$thumbnail-border:            $gray !default;
+//** Thumbnail border radius
+$thumbnail-border-radius:     $border-radius-base !default;
+
+//** Custom text color for thumbnail captions
+$thumbnail-caption-color:     $text-color !default;
+//** Padding around the thumbnail caption
+$thumbnail-caption-padding:   9px !default;
+
+
+//== Wells
+//
+//##
+
+$well-bg:                     $gray-dark !default;
+$well-border:                 transparent !default;
+
+
+//== Badges
+//
+//##
+
+$badge-color:                 #fff !default;
+//** Linked badge text color on hover
+$badge-link-hover-color:      #fff !default;
+$badge-bg:                    $gray !default;
+
+//** Badge text color in active nav link
+$badge-active-color:          $brand-primary !default;
+//** Badge background color in active nav link
+$badge-active-bg:             #fff !default;
+
+$badge-font-weight:           bold !default;
+$badge-line-height:           1 !default;
+$badge-border-radius:         10px !default;
+
+
+//== Breadcrumbs
+//
+//##
+
+$breadcrumb-padding-vertical:   8px !default;
+$breadcrumb-padding-horizontal: 15px !default;
+//** Breadcrumb background color
+$breadcrumb-bg:                 $gray !default;
+//** Breadcrumb text color
+$breadcrumb-color:              $text-color !default;
+//** Text color of current page in the breadcrumb
+$breadcrumb-active-color:       $gray-light !default;
+//** Textual separator for between breadcrumb elements
+$breadcrumb-separator:          "/" !default;
+
+
+//== Carousel
+//
+//##
+
+$carousel-text-shadow:                        0 1px 2px rgba(0,0,0,.6) !default;
+
+$carousel-control-color:                      #fff !default;
+$carousel-control-width:                      15% !default;
+$carousel-control-opacity:                    .5 !default;
+$carousel-control-font-size:                  20px !default;
+
+$carousel-indicator-active-bg:                #fff !default;
+$carousel-indicator-border-color:             #fff !default;
+
+$carousel-caption-color:                      #fff !default;
+
+
+//== Close
+//
+//##
+
+$close-font-weight:           bold !default;
+$close-color:                 #fff !default;
+$close-text-shadow:           none !default;
+
+
+//== Code
+//
+//##
+
+$code-color:                  #c7254e !default;
+$code-bg:                     #f9f2f4 !default;
+
+$kbd-color:                   #fff !default;
+$kbd-bg:                      #333 !default;
+
+$pre-bg:                      $gray-lighter !default;
+$pre-color:                   $gray-dark !default;
+$pre-border-color:            #ccc !default;
+$pre-scrollable-max-height:   340px !default;
+
+
+//== Type
+//
+//##
+
+//** Horizontal offset for forms and lists.
+$component-offset-horizontal: 180px !default;
+//** Text muted color
+$text-muted:                  $gray-light !default;
+//** Abbreviations and acronyms border color
+$abbr-border-color:           $gray-light !default;
+//** Headings small color
+$headings-small-color:        $gray-light !default;
+//** Blockquote small color
+$blockquote-small-color:      $gray-light !default;
+//** Blockquote font size
+$blockquote-font-size:        ($font-size-base * 1.25) !default;
+//** Blockquote border color
+$blockquote-border-color:     $gray !default;
+//** Page header border color
+$page-header-border-color:    transparent !default;
+//** Width of horizontal description list titles
+$dl-horizontal-offset:        $component-offset-horizontal !default;
+//** Point at which .dl-horizontal becomes horizontal
+$dl-horizontal-breakpoint:    $grid-float-breakpoint !default;
+//** Horizontal line color.
+$hr-border:                   $gray !default;
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/darkly/_bootswatch.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/darkly/_bootswatch.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/darkly/_bootswatch.scss	(revision 3762)
@@ -0,0 +1,351 @@
+// Darkly 3.4.1
+// Bootswatch
+// -----------------------------------------------------
+
+$web-font-path: "https://fonts.googleapis.com/css?family=Lato:400,700,400italic" !default;
+@import url($web-font-path);
+
+// Navbar =====================================================================
+
+.navbar {
+  border-width: 0;
+
+  &-default {
+
+    .badge {
+      background-color: #fff;
+      color: $navbar-default-bg;
+    }
+  }
+
+  &-inverse {
+
+    .badge {
+      background-color: #fff;
+      color: $navbar-inverse-bg;
+    }
+  }
+
+  &-brand {
+    line-height: 1;
+  }
+
+  &-form {
+    .form-control {
+      background-color: white;
+
+      &:focus {
+        border-color: white;
+      }
+    }
+  }
+}
+
+// Buttons ====================================================================
+
+.btn {
+  border-width: 2px;
+}
+
+.btn:active {
+  @include box-shadow(none);
+}
+
+.btn-group.open .dropdown-toggle {
+  @include box-shadow(none);
+}
+
+// Typography =================================================================
+
+.text-primary,
+.text-primary:hover {
+  color: lighten($brand-primary, 10%);
+}
+
+.text-success,
+.text-success:hover {
+  color: $brand-success;
+}
+
+.text-danger,
+.text-danger:hover {
+  color: $brand-danger;
+}
+
+.text-warning,
+.text-warning:hover {
+  color: $brand-warning;
+}
+
+.text-info,
+.text-info:hover {
+  color: $brand-info;
+}
+
+// Tables =====================================================================
+
+table,
+.table {
+
+  a:not(.btn) {
+    text-decoration: underline;
+  }
+
+  .dropdown-menu a {
+    text-decoration: none;
+  }
+
+  .success,
+  .warning,
+  .danger,
+  .info {
+    color: #fff;
+
+    > th > a,
+    > td > a,
+    > a {
+      color: #fff;
+    }
+  }
+
+  > thead > tr > th,
+  > tbody > tr > th,
+  > tfoot > tr > th,
+  > thead > tr > td,
+  > tbody > tr > td,
+  > tfoot > tr > td {
+    border: none;
+  }
+
+  &-bordered > thead > tr > th,
+  &-bordered > tbody > tr > th,
+  &-bordered > tfoot > tr > th,
+  &-bordered > thead > tr > td,
+  &-bordered > tbody > tr > td,
+  &-bordered > tfoot > tr > td {
+    border: 1px solid $table-border-color;
+  }
+}
+
+// Forms ======================================================================
+
+input,
+textarea {
+  color: $input-color;
+}
+
+.form-control,
+input,
+textarea {
+  border: 2px hidden transparent;
+  @include box-shadow(none);
+
+  &:focus {
+    @include box-shadow(none);
+  }
+}
+
+.form-control-feedback {
+  color: $input-color;
+}
+
+.has-warning {
+  .help-block,
+  .control-label,
+  .radio,
+  .checkbox,
+  .radio-inline,
+  .checkbox-inline,
+  &.radio label,
+  &.checkbox label,
+  &.radio-inline label,
+  &.checkbox-inline label,
+  .form-control-feedback {
+    color: $brand-warning;
+  }
+
+  .form-control,
+  .form-control:focus {
+    @include box-shadow(none);
+  }
+
+  .input-group-addon {
+    border-color: $brand-warning;
+  }
+}
+
+.has-error {
+  .help-block,
+  .control-label,
+  .radio,
+  .checkbox,
+  .radio-inline,
+  .checkbox-inline,
+  &.radio label,
+  &.checkbox label,
+  &.radio-inline label,
+  &.checkbox-inline label,
+  .form-control-feedback {
+    color: $brand-danger;
+  }
+
+  .form-control,
+  .form-control:focus {
+    @include box-shadow(none);
+  }
+
+  .input-group-addon {
+    border-color: $brand-danger;
+  }
+}
+
+.has-success {
+  .help-block,
+  .control-label,
+  .radio,
+  .checkbox,
+  .radio-inline,
+  .checkbox-inline,
+  &.radio label,
+  &.checkbox label,
+  &.radio-inline label,
+  &.checkbox-inline label,
+  .form-control-feedback {
+    color: $brand-success;
+  }
+
+  .form-control,
+  .form-control:focus {
+    @include box-shadow(none);
+  }
+
+  .input-group-addon {
+    border-color: $brand-success;
+  }
+}
+
+.input-group-addon {
+  color: $text-color;
+}
+
+// Navs =======================================================================
+
+.nav {
+  .open > a,
+  .open > a:hover,
+  .open > a:focus {
+    border-color: $nav-tabs-border-color;
+  }
+}
+
+.nav-tabs > li > a,
+.nav-pills > li > a {
+  color: #fff;
+}
+
+.pager {
+  a,
+  a:hover {
+    color: #fff;
+  }
+
+  .disabled {
+    &>a,
+    &>a:hover,
+    &>a:focus,
+    &>span {
+      background-color: $pagination-disabled-bg;
+    }
+  }
+}
+
+.breadcrumb a {
+  color: #fff;
+}
+
+// Indicators =================================================================
+
+.close {
+  text-decoration: none;
+  text-shadow: none;
+  opacity: 0.4;
+
+  &:hover,
+  &:focus {
+    opacity: 1;
+  }
+}
+
+.alert {
+  .alert-link {
+    color: #fff;
+    text-decoration: underline;
+  }
+}
+
+// Progress bars ==============================================================
+
+.progress {
+  height: 10px;
+  @include box-shadow(none);
+  .progress-bar {
+    font-size: 10px;
+    line-height: 10px;
+  }
+}
+
+// Containers =================================================================
+
+.well {
+  @include box-shadow(none);
+}
+
+a.list-group-item {
+
+  &.active,
+  &.active:hover,
+  &.active:focus {
+    border-color: $list-group-border;
+  }
+
+  &-success {
+    &.active {
+      background-color: $state-success-bg;
+    }
+
+    &.active:hover,
+    &.active:focus {
+      background-color: darken($state-success-bg, 5%);
+    }
+  }
+
+  &-warning {
+    &.active {
+      background-color: $state-warning-bg;
+    }
+    
+    &.active:hover,
+    &.active:focus {
+      background-color: darken($state-warning-bg, 5%);
+    }
+  }
+
+  &-danger {
+    &.active {
+      background-color: $state-danger-bg;
+    }
+    
+    &.active:hover,
+    &.active:focus {
+      background-color: darken($state-danger-bg, 5%);
+    }
+  }
+}
+
+.popover {
+  color: $text-color;
+}
+
+.panel-default > .panel-heading {
+  background-color: $panel-footer-bg;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/united/_variables.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/united/_variables.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/united/_variables.scss	(revision 3762)
@@ -0,0 +1,870 @@
+$bootstrap-sass-asset-helper: false !default;
+// United 3.4.1
+// Variables
+// --------------------------------------------------
+
+
+//== Colors
+//
+//## Gray and brand colors for use across Bootstrap.
+
+$gray-base:              #000 !default;
+$gray-darker:            lighten($gray-base, 13.5%) !default; // #222
+$gray-dark:              #333 !default;   // #333
+$gray:                   #777 !default; // #555
+$gray-light:             #AEA79F !default;   // #999
+$gray-lighter:           lighten($gray-base, 93.5%) !default; // #eee
+
+$brand-primary:         #E95420 !default;
+$brand-success:         #38B44A !default;
+$brand-info:            #772953 !default;
+$brand-warning:         #EFB73E !default;
+$brand-danger:          #DF382C !default;
+
+
+//== Scaffolding
+//
+//## Settings for some of the most global styles.
+
+//** Background color for `<body>`.
+$body-bg:               #fff !default;
+//** Global text color on `<body>`.
+$text-color:            $gray-dark !default;
+
+//** Global textual link color.
+$link-color:            $brand-primary !default;
+//** Link hover color set via `darken()` function.
+$link-hover-color:      darken($link-color, 15%) !default;
+//** Link hover decoration.
+$link-hover-decoration: underline !default;
+
+
+//== Typography
+//
+//## Font, line-height, and color for body text, headings, and more.
+
+$font-family-sans-serif:  "Ubuntu", Tahoma, "Helvetica Neue", Helvetica, Arial, sans-serif !default;
+$font-family-serif:       Georgia, "Times New Roman", Times, serif !default;
+//** Default monospace fonts for `<code>`, `<kbd>`, and `<pre>`.
+$font-family-monospace:   Menlo, Monaco, Consolas, "Courier New", monospace !default;
+$font-family-base:        $font-family-sans-serif !default;
+
+$font-size-base:          14px !default;
+$font-size-large:         ceil(($font-size-base * 1.25)) !default; // ~18px
+$font-size-small:         ceil(($font-size-base * 0.85)) !default; // ~12px
+
+$font-size-h1:            floor(($font-size-base * 2.6)) !default; // ~36px
+$font-size-h2:            floor(($font-size-base * 2.15)) !default; // ~30px
+$font-size-h3:            ceil(($font-size-base * 1.7)) !default; // ~24px
+$font-size-h4:            ceil(($font-size-base * 1.25)) !default; // ~18px
+$font-size-h5:            $font-size-base !default;
+$font-size-h6:            ceil(($font-size-base * 0.85)) !default; // ~12px
+
+//** Unit-less `line-height` for use in components like buttons.
+$line-height-base:        1.428571429 !default; // 20/14
+//** Computed "line-height" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.
+$line-height-computed:    floor(($font-size-base * $line-height-base)) !default; // ~20px
+
+//** By default, this inherits from the `<body>`.
+$headings-font-family:    $font-family-base !default;
+$headings-font-weight:    500 !default;
+$headings-line-height:    1.1 !default;
+$headings-color:          inherit !default;
+
+
+//== Iconography
+//
+//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.
+
+//** Load fonts from this directory.
+$icon-font-path: if($bootstrap-sass-asset-helper, "bootstrap/", "../fonts/bootstrap/") !default;
+//** File name for all font files.
+$icon-font-name:          "glyphicons-halflings-regular" !default;
+//** Element ID within SVG icon file.
+$icon-font-svg-id:        "glyphicons_halflingsregular" !default;
+
+
+//== Components
+//
+//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).
+
+$padding-base-vertical:     8px !default;
+$padding-base-horizontal:   12px !default;
+
+$padding-large-vertical:    14px !default;
+$padding-large-horizontal:  16px !default;
+
+$padding-small-vertical:    5px !default;
+$padding-small-horizontal:  10px !default;
+
+$padding-xs-vertical:       1px !default;
+$padding-xs-horizontal:     5px !default;
+
+$line-height-large:         1.3333333 !default; // extra decimals for Win 8.1 Chrome
+$line-height-small:         1.5 !default;
+
+$border-radius-base:        4px !default;
+$border-radius-large:       6px !default;
+$border-radius-small:       3px !default;
+
+//** Global color for active items (e.g., navs or dropdowns).
+$component-active-color:    #fff !default;
+//** Global background color for active items (e.g., navs or dropdowns).
+$component-active-bg:       $brand-primary !default;
+
+//** Width of the `border` for generating carets that indicate dropdowns.
+$caret-width-base:          4px !default;
+//** Carets increase slightly in size for larger components.
+$caret-width-large:         5px !default;
+
+
+//== Tables
+//
+//## Customizes the `.table` component with basic values, each used across all table variations.
+
+//** Padding for `<th>`s and `<td>`s.
+$table-cell-padding:            8px !default;
+//** Padding for cells in `.table-condensed`.
+$table-condensed-cell-padding:  5px !default;
+
+//** Default background color used for all tables.
+$table-bg:                      transparent !default;
+//** Background color used for `.table-striped`.
+$table-bg-accent:               #f9f9f9 !default;
+//** Background color used for `.table-hover`.
+$table-bg-hover:                #f5f5f5 !default;
+$table-bg-active:               $table-bg-hover !default;
+
+//** Border color for table and cell borders.
+$table-border-color:            #ddd !default;
+
+
+//== Buttons
+//
+//## For each of Bootstrap's buttons, define text, background and border color.
+
+$btn-font-weight:                normal !default;
+
+$btn-default-color:              #fff !default;
+$btn-default-bg:                 $gray-light !default;
+$btn-default-border:             $btn-default-bg !default;
+
+$btn-primary-color:              $btn-default-color !default;
+$btn-primary-bg:                 $brand-primary !default;
+$btn-primary-border:             $btn-primary-bg !default;
+
+$btn-success-color:              $btn-default-color !default;
+$btn-success-bg:                 $brand-success !default;
+$btn-success-border:             $btn-success-bg !default;
+
+$btn-info-color:                 $btn-default-color !default;
+$btn-info-bg:                    $brand-info !default;
+$btn-info-border:                $btn-info-bg !default;
+
+$btn-warning-color:              $btn-default-color !default;
+$btn-warning-bg:                 $brand-warning !default;
+$btn-warning-border:             $btn-warning-bg !default;
+
+$btn-danger-color:               $btn-default-color !default;
+$btn-danger-bg:                  $brand-danger !default;
+$btn-danger-border:              $btn-danger-bg !default;
+
+$btn-link-disabled-color:        $gray-light !default;
+
+// Allows for customizing button radius independently from global border radius
+$btn-border-radius-base:         $border-radius-base !default;
+$btn-border-radius-large:        $border-radius-large !default;
+$btn-border-radius-small:        $border-radius-small !default;
+
+
+//== Forms
+//
+//##
+
+//** `<input>` background color
+$input-bg:                       #fff !default;
+//** `<input disabled>` background color
+$input-bg-disabled:              $gray-lighter !default;
+
+//** Text color for `<input>`s
+$input-color:                    $text-color !default;
+//** `<input>` border color
+$input-border:                   #ccc !default;
+
+// TODO: Rename `$input-border-radius` to `$input-border-radius-base` in v4
+//** Default `.form-control` border radius
+// This has no effect on `<select>`s in some browsers, due to the limited stylability of `<select>`s in CSS.
+$input-border-radius:            $border-radius-base !default;
+//** Large `.form-control` border radius
+$input-border-radius-large:      $border-radius-large !default;
+//** Small `.form-control` border radius
+$input-border-radius-small:      $border-radius-small !default;
+
+//** Border color for inputs on focus
+$input-border-focus:             #66afe9 !default;
+
+//** Placeholder text color
+$input-color-placeholder:        $gray-light !default;
+
+//** Default `.form-control` height
+$input-height-base:              ($line-height-computed + ($padding-base-vertical * 2) + 2) !default;
+//** Large `.form-control` height
+$input-height-large:             (ceil($font-size-large * $line-height-large) + ($padding-large-vertical * 2) + 2) !default;
+//** Small `.form-control` height
+$input-height-small:             (floor($font-size-small * $line-height-small) + ($padding-small-vertical * 2) + 2) !default;
+
+//** `.form-group` margin
+$form-group-margin-bottom:       15px !default;
+
+$legend-color:                   $text-color !default;
+$legend-border-color:            #e5e5e5 !default;
+
+//** Background color for textual input addons
+$input-group-addon-bg:           $gray-lighter !default;
+//** Border color for textual input addons
+$input-group-addon-border-color: $input-border !default;
+
+//** Disabled cursor for form controls and buttons.
+$cursor-disabled:                not-allowed !default;
+
+
+//== Dropdowns
+//
+//## Dropdown menu container and contents.
+
+//** Background for the dropdown menu.
+$dropdown-bg:                    #fff !default;
+//** Dropdown menu `border-color`.
+$dropdown-border:                rgba(0,0,0,.15) !default;
+//** Dropdown menu `border-color` **for IE8**.
+$dropdown-fallback-border:       #ccc !default;
+//** Divider color for between dropdown items.
+$dropdown-divider-bg:            #e5e5e5 !default;
+
+//** Dropdown link text color.
+$dropdown-link-color:            $gray-dark !default;
+//** Hover color for dropdown links.
+$dropdown-link-hover-color:      #fff !default;
+//** Hover background for dropdown links.
+$dropdown-link-hover-bg:         $component-active-bg !default;
+
+//** Active dropdown menu item text color.
+$dropdown-link-active-color:     #fff !default;
+//** Active dropdown menu item background color.
+$dropdown-link-active-bg:        $component-active-bg !default;
+
+//** Disabled dropdown menu item background color.
+$dropdown-link-disabled-color:   $gray-light !default;
+
+//** Text color for headers within dropdown menus.
+$dropdown-header-color:          $gray-light !default;
+
+//** Deprecated `$dropdown-caret-color` as of v3.1.0
+$dropdown-caret-color:           #000 !default;
+
+
+//-- Z-index master list
+//
+// Warning: Avoid customizing these values. They're used for a bird's eye view
+// of components dependent on the z-axis and are designed to all work together.
+//
+// Note: These variables are not generated into the Customizer.
+
+$zindex-navbar:            1000 !default;
+$zindex-dropdown:          1000 !default;
+$zindex-popover:           1060 !default;
+$zindex-tooltip:           1070 !default;
+$zindex-navbar-fixed:      1030 !default;
+$zindex-modal-background:  1040 !default;
+$zindex-modal:             1050 !default;
+
+
+//== Media queries breakpoints
+//
+//## Define the breakpoints at which your layout will change, adapting to different screen sizes.
+
+// Extra small screen / phone
+//** Deprecated `$screen-xs` as of v3.0.1
+$screen-xs:                  480px !default;
+//** Deprecated `$screen-xs-min` as of v3.2.0
+$screen-xs-min:              $screen-xs !default;
+//** Deprecated `$screen-phone` as of v3.0.1
+$screen-phone:               $screen-xs-min !default;
+
+// Small screen / tablet
+//** Deprecated `$screen-sm` as of v3.0.1
+$screen-sm:                  768px !default;
+$screen-sm-min:              $screen-sm !default;
+//** Deprecated `$screen-tablet` as of v3.0.1
+$screen-tablet:              $screen-sm-min !default;
+
+// Medium screen / desktop
+//** Deprecated `$screen-md` as of v3.0.1
+$screen-md:                  992px !default;
+$screen-md-min:              $screen-md !default;
+//** Deprecated `$screen-desktop` as of v3.0.1
+$screen-desktop:             $screen-md-min !default;
+
+// Large screen / wide desktop
+//** Deprecated `$screen-lg` as of v3.0.1
+$screen-lg:                  1200px !default;
+$screen-lg-min:              $screen-lg !default;
+//** Deprecated `$screen-lg-desktop` as of v3.0.1
+$screen-lg-desktop:          $screen-lg-min !default;
+
+// So media queries don't overlap when required, provide a maximum
+$screen-xs-max:              ($screen-sm-min - 1) !default;
+$screen-sm-max:              ($screen-md-min - 1) !default;
+$screen-md-max:              ($screen-lg-min - 1) !default;
+
+
+//== Grid system
+//
+//## Define your custom responsive grid.
+
+//** Number of columns in the grid.
+$grid-columns:              12 !default;
+//** Padding between columns. Gets divided in half for the left and right.
+$grid-gutter-width:         30px !default;
+// Navbar collapse
+//** Point at which the navbar becomes uncollapsed.
+$grid-float-breakpoint:     $screen-sm-min !default;
+//** Point at which the navbar begins collapsing.
+$grid-float-breakpoint-max: ($grid-float-breakpoint - 1) !default;
+
+
+//== Container sizes
+//
+//## Define the maximum width of `.container` for different screen sizes.
+
+// Small screen / tablet
+$container-tablet:             (720px + $grid-gutter-width) !default;
+//** For `$screen-sm-min` and up.
+$container-sm:                 $container-tablet !default;
+
+// Medium screen / desktop
+$container-desktop:            (940px + $grid-gutter-width) !default;
+//** For `$screen-md-min` and up.
+$container-md:                 $container-desktop !default;
+
+// Large screen / wide desktop
+$container-large-desktop:      (1140px + $grid-gutter-width) !default;
+//** For `$screen-lg-min` and up.
+$container-lg:                 $container-large-desktop !default;
+
+
+//== Navbar
+//
+//##
+
+// Basics of a navbar
+$navbar-height:                    50px !default;
+$navbar-margin-bottom:             $line-height-computed !default;
+$navbar-border-radius:             $border-radius-base !default;
+$navbar-padding-horizontal:        floor(($grid-gutter-width / 2)) !default;
+$navbar-padding-vertical:          (($navbar-height - $line-height-computed) / 2) !default;
+$navbar-collapse-max-height:       340px !default;
+
+$navbar-default-color:             #fff !default;
+$navbar-default-bg:                $brand-primary !default;
+$navbar-default-border:            darken($navbar-default-bg, 6.5%) !default;
+
+// Navbar links
+$navbar-default-link-color:                #fff !default;
+$navbar-default-link-hover-color:          #fff !default;
+$navbar-default-link-hover-bg:             darken($navbar-default-bg, 15%) !default;
+$navbar-default-link-active-color:         #fff !default;
+$navbar-default-link-active-bg:            darken($navbar-default-bg, 10%) !default;
+$navbar-default-link-disabled-color:       #ccc !default;
+$navbar-default-link-disabled-bg:          transparent !default;
+
+// Navbar brand label
+$navbar-default-brand-color:               $navbar-default-link-color !default;
+$navbar-default-brand-hover-color:         #fff !default;
+$navbar-default-brand-hover-bg:            none !default;
+
+// Navbar toggle
+$navbar-default-toggle-hover-bg:           darken($navbar-default-bg, 15%) !default;
+$navbar-default-toggle-icon-bar-bg:        #fff !default;
+$navbar-default-toggle-border-color:       darken($navbar-default-bg, 15%) !default;
+
+
+//=== Inverted navbar
+// Reset inverted navbar basics
+$navbar-inverse-color:                      #fff !default;
+$navbar-inverse-bg:                         $brand-info !default;
+$navbar-inverse-border:                     darken($navbar-inverse-bg, 10%) !default;
+
+// Inverted navbar links
+$navbar-inverse-link-color:                 #fff !default;
+$navbar-inverse-link-hover-color:           #fff !default;
+$navbar-inverse-link-hover-bg:              darken($navbar-inverse-bg, 15%) !default;
+$navbar-inverse-link-active-color:          $navbar-inverse-link-hover-color !default;
+$navbar-inverse-link-active-bg:             darken($navbar-inverse-bg, 10%) !default;
+$navbar-inverse-link-disabled-color:        #ccc !default;
+$navbar-inverse-link-disabled-bg:           transparent !default;
+
+// Inverted navbar brand label
+$navbar-inverse-brand-color:                $navbar-inverse-link-color !default;
+$navbar-inverse-brand-hover-color:          #fff !default;
+$navbar-inverse-brand-hover-bg:             none !default;
+
+// Inverted navbar toggle
+$navbar-inverse-toggle-hover-bg:            darken($navbar-inverse-bg, 15%) !default;
+$navbar-inverse-toggle-icon-bar-bg:         #fff !default;
+$navbar-inverse-toggle-border-color:        darken($navbar-inverse-bg, 15%) !default;
+
+
+//== Navs
+//
+//##
+
+//=== Shared nav styles
+$nav-link-padding:                          10px 15px !default;
+$nav-link-hover-bg:                         $gray-lighter !default;
+
+$nav-disabled-link-color:                   $gray-light !default;
+$nav-disabled-link-hover-color:             $gray-light !default;
+
+//== Tabs
+$nav-tabs-border-color:                     #ddd !default;
+
+$nav-tabs-link-hover-border-color:          $gray-lighter !default;
+
+$nav-tabs-active-link-hover-bg:             $body-bg !default;
+$nav-tabs-active-link-hover-color:          $gray !default;
+$nav-tabs-active-link-hover-border-color:   #ddd !default;
+
+$nav-tabs-justified-link-border-color:            #ddd !default;
+$nav-tabs-justified-active-link-border-color:     $body-bg !default;
+
+//== Pills
+$nav-pills-border-radius:                   $border-radius-base !default;
+$nav-pills-active-link-hover-bg:            $component-active-bg !default;
+$nav-pills-active-link-hover-color:         $component-active-color !default;
+
+
+//== Pagination
+//
+//##
+
+$pagination-color:                     $link-color !default;
+$pagination-bg:                        #fff !default;
+$pagination-border:                    #ddd !default;
+
+$pagination-hover-color:               $link-hover-color !default;
+$pagination-hover-bg:                  $gray-lighter !default;
+$pagination-hover-border:              #ddd !default;
+
+$pagination-active-color:              $gray-light !default;
+$pagination-active-bg:                 #f5f5f5 !default;
+$pagination-active-border:             #ddd !default;
+
+$pagination-disabled-color:            $gray-light !default;
+$pagination-disabled-bg:               #fff !default;
+$pagination-disabled-border:           #ddd !default;
+
+
+//== Pager
+//
+//##
+
+$pager-bg:                             $pagination-bg !default;
+$pager-border:                         $pagination-border !default;
+$pager-border-radius:                  15px !default;
+
+$pager-hover-bg:                       $pagination-hover-bg !default;
+
+$pager-active-bg:                      $pagination-active-bg !default;
+$pager-active-color:                   $pagination-active-color !default;
+
+$pager-disabled-color:                 $gray-light !default;
+
+
+//== Jumbotron
+//
+//##
+
+$jumbotron-padding:              30px !default;
+$jumbotron-color:                inherit !default;
+$jumbotron-bg:                   $gray-lighter !default;
+$jumbotron-heading-color:        inherit !default;
+$jumbotron-font-size:            ceil(($font-size-base * 1.5)) !default;
+$jumbotron-heading-font-size:    ceil(($font-size-base * 4.5)) !default;
+
+
+//== Form states and alerts
+//
+//## Define colors for form feedback states and, by default, alerts.
+
+$state-success-text:             #468847 !default;
+$state-success-bg:               #dff0d8 !default;
+$state-success-border:           darken(adjust-hue($state-success-bg, -10), 5%) !default;
+
+$state-info-text:                #3a87ad !default;
+$state-info-bg:                  #d9edf7 !default;
+$state-info-border:              darken(adjust-hue($state-info-bg, -10), 7%) !default;
+
+$state-warning-text:             #c09853 !default;
+$state-warning-bg:               #fcf8e3 !default;
+$state-warning-border:           darken(adjust-hue($state-warning-bg, -10), 3%) !default;
+
+$state-danger-text:              #b94a48 !default;
+$state-danger-bg:                #f2dede !default;
+$state-danger-border:            darken(adjust-hue($state-danger-bg, -10), 3%) !default;
+
+
+//== Tooltips
+//
+//##
+
+//** Tooltip max width
+$tooltip-max-width:           200px !default;
+//** Tooltip text color
+$tooltip-color:               #fff !default;
+//** Tooltip background color
+$tooltip-bg:                  #000 !default;
+$tooltip-opacity:             .9 !default;
+
+//** Tooltip arrow width
+$tooltip-arrow-width:         5px !default;
+//** Tooltip arrow color
+$tooltip-arrow-color:         $tooltip-bg !default;
+
+
+//== Popovers
+//
+//##
+
+//** Popover body background color
+$popover-bg:                          #fff !default;
+//** Popover maximum width
+$popover-max-width:                   276px !default;
+//** Popover border color
+$popover-border-color:                rgba(0,0,0,.2) !default;
+//** Popover fallback border color
+$popover-fallback-border-color:       #ccc !default;
+
+//** Popover title background color
+$popover-title-bg:                    darken($popover-bg, 3%) !default;
+
+//** Popover arrow width
+$popover-arrow-width:                 10px !default;
+//** Popover arrow color
+$popover-arrow-color:                 $popover-bg !default;
+
+//** Popover outer arrow width
+$popover-arrow-outer-width:           ($popover-arrow-width + 1) !default;
+//** Popover outer arrow color
+$popover-arrow-outer-color:           fadein($popover-border-color, 5%) !default;
+//** Popover outer arrow fallback color
+$popover-arrow-outer-fallback-color:  darken($popover-fallback-border-color, 20%) !default;
+
+
+//== Labels
+//
+//##
+
+//** Default label background color
+$label-default-bg:            $btn-default-bg !default;
+//** Primary label background color
+$label-primary-bg:            $brand-primary !default;
+//** Success label background color
+$label-success-bg:            $brand-success !default;
+//** Info label background color
+$label-info-bg:               $brand-info !default;
+//** Warning label background color
+$label-warning-bg:            $brand-warning !default;
+//** Danger label background color
+$label-danger-bg:             $brand-danger !default;
+
+//** Default label text color
+$label-color:                 #fff !default;
+//** Default text color of a linked label
+$label-link-hover-color:      #fff !default;
+
+
+//== Modals
+//
+//##
+
+//** Padding applied to the modal body
+$modal-inner-padding:         20px !default;
+
+//** Padding applied to the modal title
+$modal-title-padding:         15px !default;
+//** Modal title line-height
+$modal-title-line-height:     $line-height-base !default;
+
+//** Background color of modal content area
+$modal-content-bg:                             #fff !default;
+//** Modal content border color
+$modal-content-border-color:                   rgba(0,0,0,.2) !default;
+//** Modal content border color **for IE8**
+$modal-content-fallback-border-color:          #999 !default;
+
+//** Modal backdrop background color
+$modal-backdrop-bg:           #000 !default;
+//** Modal backdrop opacity
+$modal-backdrop-opacity:      .5 !default;
+//** Modal header border color
+$modal-header-border-color:   #e5e5e5 !default;
+//** Modal footer border color
+$modal-footer-border-color:   $modal-header-border-color !default;
+
+$modal-lg:                    900px !default;
+$modal-md:                    600px !default;
+$modal-sm:                    300px !default;
+
+
+//== Alerts
+//
+//## Define alert colors, border radius, and padding.
+
+$alert-padding:               15px !default;
+$alert-border-radius:         $border-radius-base !default;
+$alert-link-font-weight:      bold !default;
+
+$alert-success-bg:            $state-success-bg !default;
+$alert-success-text:          $state-success-text !default;
+$alert-success-border:        $state-success-border !default;
+
+$alert-info-bg:               $state-info-bg !default;
+$alert-info-text:             $state-info-text !default;
+$alert-info-border:           $state-info-border !default;
+
+$alert-warning-bg:            $state-warning-bg !default;
+$alert-warning-text:          $state-warning-text !default;
+$alert-warning-border:        $state-warning-border !default;
+
+$alert-danger-bg:             $state-danger-bg !default;
+$alert-danger-text:           $state-danger-text !default;
+$alert-danger-border:         $state-danger-border !default;
+
+
+//== Progress bars
+//
+//##
+
+//** Background color of the whole progress component
+$progress-bg:                 #f5f5f5 !default;
+//** Progress bar text color
+$progress-bar-color:          #fff !default;
+//** Variable for setting rounded corners on progress bar.
+$progress-border-radius:      $border-radius-base !default;
+
+//** Default progress bar color
+$progress-bar-bg:             $brand-primary !default;
+//** Success progress bar color
+$progress-bar-success-bg:     $brand-success !default;
+//** Warning progress bar color
+$progress-bar-warning-bg:     $brand-warning !default;
+//** Danger progress bar color
+$progress-bar-danger-bg:      $brand-danger !default;
+//** Info progress bar color
+$progress-bar-info-bg:        $brand-info !default;
+
+
+//== List group
+//
+//##
+
+//** Background color on `.list-group-item`
+$list-group-bg:                 #fff !default;
+//** `.list-group-item` border color
+$list-group-border:             #ddd !default;
+//** List group border radius
+$list-group-border-radius:      $border-radius-base !default;
+
+//** Background color of single list items on hover
+$list-group-hover-bg:           #f5f5f5 !default;
+//** Text color of active list items
+$list-group-active-color:       $component-active-color !default;
+//** Background color of active list items
+$list-group-active-bg:          $component-active-bg !default;
+//** Border color of active list elements
+$list-group-active-border:      $list-group-active-bg !default;
+//** Text color for content within active list items
+$list-group-active-text-color:  lighten($list-group-active-bg, 40%) !default;
+
+//** Text color of disabled list items
+$list-group-disabled-color:      $gray-light !default;
+//** Background color of disabled list items
+$list-group-disabled-bg:         $gray-lighter !default;
+//** Text color for content within disabled list items
+$list-group-disabled-text-color: $list-group-disabled-color !default;
+
+$list-group-link-color:         #555 !default;
+$list-group-link-hover-color:   $list-group-link-color !default;
+$list-group-link-heading-color: #333 !default;
+
+
+//== Panels
+//
+//##
+
+$panel-bg:                    #fff !default;
+$panel-body-padding:          15px !default;
+$panel-heading-padding:       10px 15px !default;
+$panel-footer-padding:        $panel-heading-padding !default;
+$panel-border-radius:         $border-radius-base !default;
+
+//** Border color for elements within panels
+$panel-inner-border:          #ddd !default;
+$panel-footer-bg:             #f5f5f5 !default;
+
+$panel-default-text:          $gray-dark !default;
+$panel-default-border:        #ddd !default;
+$panel-default-heading-bg:    #f5f5f5 !default;
+
+$panel-primary-text:          #fff !default;
+$panel-primary-border:        $brand-primary !default;
+$panel-primary-heading-bg:    $brand-primary !default;
+
+$panel-success-text:          $state-success-text !default;
+$panel-success-border:        $state-success-border !default;
+$panel-success-heading-bg:    $state-success-bg !default;
+
+$panel-info-text:             $state-info-text !default;
+$panel-info-border:           $state-info-border !default;
+$panel-info-heading-bg:       $state-info-bg !default;
+
+$panel-warning-text:          $state-warning-text !default;
+$panel-warning-border:        $state-warning-border !default;
+$panel-warning-heading-bg:    $state-warning-bg !default;
+
+$panel-danger-text:           $state-danger-text !default;
+$panel-danger-border:         $state-danger-border !default;
+$panel-danger-heading-bg:     $state-danger-bg !default;
+
+
+//== Thumbnails
+//
+//##
+
+//** Padding around the thumbnail image
+$thumbnail-padding:           4px !default;
+//** Thumbnail background color
+$thumbnail-bg:                $body-bg !default;
+//** Thumbnail border color
+$thumbnail-border:            #ddd !default;
+//** Thumbnail border radius
+$thumbnail-border-radius:     $border-radius-base !default;
+
+//** Custom text color for thumbnail captions
+$thumbnail-caption-color:     $text-color !default;
+//** Padding around the thumbnail caption
+$thumbnail-caption-padding:   9px !default;
+
+
+//== Wells
+//
+//##
+
+$well-bg:                     #f5f5f5 !default;
+$well-border:                 darken($well-bg, 7%) !default;
+
+
+//== Badges
+//
+//##
+
+$badge-color:                 #fff !default;
+//** Linked badge text color on hover
+$badge-link-hover-color:      #fff !default;
+$badge-bg:                    $gray-light !default;
+
+//** Badge text color in active nav link
+$badge-active-color:          $link-color !default;
+//** Badge background color in active nav link
+$badge-active-bg:             #fff !default;
+
+$badge-font-weight:           bold !default;
+$badge-line-height:           1 !default;
+$badge-border-radius:         10px !default;
+
+
+//== Breadcrumbs
+//
+//##
+
+$breadcrumb-padding-vertical:   8px !default;
+$breadcrumb-padding-horizontal: 15px !default;
+//** Breadcrumb background color
+$breadcrumb-bg:                 #f5f5f5 !default;
+//** Breadcrumb text color
+$breadcrumb-color:              #ccc !default;
+//** Text color of current page in the breadcrumb
+$breadcrumb-active-color:       $gray-light !default;
+//** Textual separator for between breadcrumb elements
+$breadcrumb-separator:          "/" !default;
+
+
+//== Carousel
+//
+//##
+
+$carousel-text-shadow:                        0 1px 2px rgba(0,0,0,.6) !default;
+
+$carousel-control-color:                      #fff !default;
+$carousel-control-width:                      15% !default;
+$carousel-control-opacity:                    .5 !default;
+$carousel-control-font-size:                  20px !default;
+
+$carousel-indicator-active-bg:                #fff !default;
+$carousel-indicator-border-color:             #fff !default;
+
+$carousel-caption-color:                      #fff !default;
+
+
+//== Close
+//
+//##
+
+$close-font-weight:           bold !default;
+$close-color:                 #000 !default;
+$close-text-shadow:           0 1px 0 #fff !default;
+
+
+//== Code
+//
+//##
+
+$code-color:                  #c7254e !default;
+$code-bg:                     #f9f2f4 !default;
+
+$kbd-color:                   #fff !default;
+$kbd-bg:                      #333 !default;
+
+$pre-bg:                      #f5f5f5 !default;
+$pre-color:                   $gray-dark !default;
+$pre-border-color:            #ccc !default;
+$pre-scrollable-max-height:   340px !default;
+
+
+//== Type
+//
+//##
+
+//** Horizontal offset for forms and lists.
+$component-offset-horizontal: 180px !default;
+//** Text muted color
+$text-muted:                  $gray-light !default;
+//** Abbreviations and acronyms border color
+$abbr-border-color:           $gray-light !default;
+//** Headings small color
+$headings-small-color:        $gray-light !default;
+//** Blockquote small color
+$blockquote-small-color:      $gray-light !default;
+//** Blockquote font size
+$blockquote-font-size:        ($font-size-base * 1.25) !default;
+//** Blockquote border color
+$blockquote-border-color:     $gray-lighter !default;
+//** Page header border color
+$page-header-border-color:    $gray-lighter !default;
+//** Width of horizontal description list titles
+$dl-horizontal-offset:        $component-offset-horizontal !default;
+//** Point at which .dl-horizontal becomes horizontal
+$dl-horizontal-breakpoint:    $grid-float-breakpoint !default;
+//** Horizontal line color.
+$hr-border:                   $gray-lighter !default;
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/united/_bootswatch.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/united/_bootswatch.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/united/_bootswatch.scss	(revision 3762)
@@ -0,0 +1,56 @@
+// United 3.4.1
+// Bootswatch
+// -----------------------------------------------------
+
+$web-font-path: "https://fonts.googleapis.com/css?family=Ubuntu:400,700" !default;
+@import url($web-font-path);
+
+// Navbar =====================================================================
+
+.navbar {
+
+  &-default {
+
+    .badge {
+      background-color: #fff;
+      color: $navbar-default-bg;
+    }
+  }
+
+  &-inverse {
+
+    .badge {
+      background-color: #fff;
+      color: $navbar-inverse-bg;
+    }
+  }
+}
+
+@media (max-width: $grid-float-breakpoint-max) {
+
+  .navbar {
+
+    .dropdown-menu {
+      a {
+        color: #fff;
+      }
+    }
+  }
+}
+
+
+// Buttons ====================================================================
+
+// Typography =================================================================
+
+// Tables =====================================================================
+
+// Forms ======================================================================
+
+// Navs =======================================================================
+
+// Indicators =================================================================
+
+// Progress bars ==============================================================
+
+// Containers =================================================================
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/united/font.css
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/united/font.css	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/united/font.css	(revision 3762)
@@ -0,0 +1,12 @@
+@font-face {
+  font-family: 'Ubuntu';
+  font-style: normal;
+  font-weight: 400;
+  src: url(fonts/4iCs6KVjbNBYlgoKfw7w.woff) format('woff');
+}
+@font-face {
+  font-family: 'Ubuntu';
+  font-style: normal;
+  font-weight: 700;
+  src: url(fonts/4iCv6KVjbNBYlgoCxCvjsGyL.woff) format('woff');
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/flatly/_variables.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/flatly/_variables.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/flatly/_variables.scss	(revision 3762)
@@ -0,0 +1,870 @@
+$bootstrap-sass-asset-helper: false !default;
+// Flatly 3.4.1
+// Variables
+// --------------------------------------------------
+
+
+//== Colors
+//
+//## Gray and brand colors for use across Bootstrap.
+
+$gray-base:              #000 !default;
+$gray-darker:            lighten($gray-base, 13.5%) !default; // #222
+$gray-dark:              #7b8a8b !default;   // #333
+$gray:                   #95a5a6 !default; // #555
+$gray-light:             #b4bcc2 !default;   // #999
+$gray-lighter:           #ecf0f1 !default; // #eee
+
+$brand-primary:         #2C3E50 !default;
+$brand-success:         #18BC9C !default;
+$brand-info:            #3498DB !default;
+$brand-warning:         #F39C12 !default;
+$brand-danger:          #E74C3C !default;
+
+
+//== Scaffolding
+//
+//## Settings for some of the most global styles.
+
+//** Background color for `<body>`.
+$body-bg:               #fff !default;
+//** Global text color on `<body>`.
+$text-color:            $brand-primary !default;
+
+//** Global textual link color.
+$link-color:            $brand-success !default;
+//** Link hover color set via `darken()` function.
+$link-hover-color:      $link-color !default;
+//** Link hover decoration.
+$link-hover-decoration: underline !default;
+
+
+//== Typography
+//
+//## Font, line-height, and color for body text, headings, and more.
+
+$font-family-sans-serif:  "Lato", "Helvetica Neue", Helvetica, Arial, sans-serif !default;
+$font-family-serif:       Georgia, "Times New Roman", Times, serif !default;
+//** Default monospace fonts for `<code>`, `<kbd>`, and `<pre>`.
+$font-family-monospace:   Menlo, Monaco, Consolas, "Courier New", monospace !default;
+$font-family-base:        $font-family-sans-serif !default;
+
+$font-size-base:          15px !default;
+$font-size-large:         ceil(($font-size-base * 1.25)) !default; // ~18px
+$font-size-small:         ceil(($font-size-base * 0.85)) !default; // ~12px
+
+$font-size-h1:            floor(($font-size-base * 2.6)) !default; // ~36px
+$font-size-h2:            floor(($font-size-base * 2.15)) !default; // ~30px
+$font-size-h3:            ceil(($font-size-base * 1.7)) !default; // ~24px
+$font-size-h4:            ceil(($font-size-base * 1.25)) !default; // ~18px
+$font-size-h5:            $font-size-base !default;
+$font-size-h6:            ceil(($font-size-base * 0.85)) !default; // ~12px
+
+//** Unit-less `line-height` for use in components like buttons.
+$line-height-base:        1.428571429 !default; // 20/14
+//** Computed "line-height" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.
+$line-height-computed:    floor(($font-size-base * $line-height-base)) !default; // ~20px
+
+//** By default, this inherits from the `<body>`.
+$headings-font-family:    $font-family-base !default;
+$headings-font-weight:    400 !default;
+$headings-line-height:    1.1 !default;
+$headings-color:          inherit !default;
+
+
+//== Iconography
+//
+//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.
+
+//** Load fonts from this directory.
+$icon-font-path: if($bootstrap-sass-asset-helper, "bootstrap/", "../fonts/bootstrap/") !default;
+//** File name for all font files.
+$icon-font-name:          "glyphicons-halflings-regular" !default;
+//** Element ID within SVG icon file.
+$icon-font-svg-id:        "glyphicons_halflingsregular" !default;
+
+
+//== Components
+//
+//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).
+
+$padding-base-vertical:     10px !default;
+$padding-base-horizontal:   15px !default;
+
+$padding-large-vertical:    18px !default;
+$padding-large-horizontal:  27px !default;
+
+$padding-small-vertical:    6px !default;
+$padding-small-horizontal:  9px !default;
+
+$padding-xs-vertical:       1px !default;
+$padding-xs-horizontal:     5px !default;
+
+$line-height-large:         1.3333333 !default; // extra decimals for Win 8.1 Chrome
+$line-height-small:         1.5 !default;
+
+$border-radius-base:        4px !default;
+$border-radius-large:       6px !default;
+$border-radius-small:       3px !default;
+
+//** Global color for active items (e.g., navs or dropdowns).
+$component-active-color:    #fff !default;
+//** Global background color for active items (e.g., navs or dropdowns).
+$component-active-bg:       $brand-primary !default;
+
+//** Width of the `border` for generating carets that indicate dropdowns.
+$caret-width-base:          4px !default;
+//** Carets increase slightly in size for larger components.
+$caret-width-large:         5px !default;
+
+
+//== Tables
+//
+//## Customizes the `.table` component with basic values, each used across all table variations.
+
+//** Padding for `<th>`s and `<td>`s.
+$table-cell-padding:            8px !default;
+//** Padding for cells in `.table-condensed`.
+$table-condensed-cell-padding:  5px !default;
+
+//** Default background color used for all tables.
+$table-bg:                      transparent !default;
+//** Background color used for `.table-striped`.
+$table-bg-accent:               #f9f9f9 !default;
+//** Background color used for `.table-hover`.
+$table-bg-hover:                $gray-lighter !default;
+$table-bg-active:               $table-bg-hover !default;
+
+//** Border color for table and cell borders.
+$table-border-color:            $gray-lighter !default;
+
+
+//== Buttons
+//
+//## For each of Bootstrap's buttons, define text, background and border color.
+
+$btn-font-weight:                normal !default;
+
+$btn-default-color:              #fff !default;
+$btn-default-bg:                 $gray !default;
+$btn-default-border:             $btn-default-bg !default;
+
+$btn-primary-color:              $btn-default-color !default;
+$btn-primary-bg:                 $brand-primary !default;
+$btn-primary-border:             $btn-primary-bg !default;
+
+$btn-success-color:              $btn-default-color !default;
+$btn-success-bg:                 $brand-success !default;
+$btn-success-border:             $btn-success-bg !default;
+
+$btn-info-color:                 $btn-default-color !default;
+$btn-info-bg:                    $brand-info !default;
+$btn-info-border:                $btn-info-bg !default;
+
+$btn-warning-color:              $btn-default-color !default;
+$btn-warning-bg:                 $brand-warning !default;
+$btn-warning-border:             $btn-warning-bg !default;
+
+$btn-danger-color:               $btn-default-color !default;
+$btn-danger-bg:                  $brand-danger !default;
+$btn-danger-border:              $btn-danger-bg !default;
+
+$btn-link-disabled-color:        $gray-light !default;
+
+// Allows for customizing button radius independently from global border radius
+$btn-border-radius-base:         $border-radius-base !default;
+$btn-border-radius-large:        $border-radius-large !default;
+$btn-border-radius-small:        $border-radius-small !default;
+
+
+//== Forms
+//
+//##
+
+//** `<input>` background color
+$input-bg:                       #fff !default;
+//** `<input disabled>` background color
+$input-bg-disabled:              $gray-lighter !default;
+
+//** Text color for `<input>`s
+$input-color:                    $text-color !default;
+//** `<input>` border color
+$input-border:                   #dce4ec !default;
+
+// TODO: Rename `$input-border-radius` to `$input-border-radius-base` in v4
+//** Default `.form-control` border radius
+// This has no effect on `<select>`s in some browsers, due to the limited stylability of `<select>`s in CSS.
+$input-border-radius:            $border-radius-base !default;
+//** Large `.form-control` border radius
+$input-border-radius-large:      $border-radius-large !default;
+//** Small `.form-control` border radius
+$input-border-radius-small:      $border-radius-small !default;
+
+//** Border color for inputs on focus
+$input-border-focus:             $brand-primary !default;
+
+//** Placeholder text color
+$input-color-placeholder:        #acb6c0 !default;
+
+//** Default `.form-control` height
+$input-height-base:              ($line-height-computed + ($padding-base-vertical * 2) + 4) !default;
+//** Large `.form-control` height
+$input-height-large:             (ceil($font-size-large * $line-height-large) + ($padding-large-vertical * 2) + 4) !default;
+//** Small `.form-control` height
+$input-height-small:             (floor($font-size-small * $line-height-small) + ($padding-small-vertical * 2) + 4) !default;
+
+//** `.form-group` margin
+$form-group-margin-bottom:       15px !default;
+
+$legend-color:                   $text-color !default;
+$legend-border-color:            transparent !default;
+
+//** Background color for textual input addons
+$input-group-addon-bg:           $gray-lighter !default;
+//** Border color for textual input addons
+$input-group-addon-border-color: $input-border !default;
+
+//** Disabled cursor for form controls and buttons.
+$cursor-disabled:                not-allowed !default;
+
+
+//== Dropdowns
+//
+//## Dropdown menu container and contents.
+
+//** Background for the dropdown menu.
+$dropdown-bg:                    #fff !default;
+//** Dropdown menu `border-color`.
+$dropdown-border:                rgba(0,0,0,.15) !default;
+//** Dropdown menu `border-color` **for IE8**.
+$dropdown-fallback-border:       #ccc !default;
+//** Divider color for between dropdown items.
+$dropdown-divider-bg:            #e5e5e5 !default;
+
+//** Dropdown link text color.
+$dropdown-link-color:            $gray-dark !default;
+//** Hover color for dropdown links.
+$dropdown-link-hover-color:      #fff !default;
+//** Hover background for dropdown links.
+$dropdown-link-hover-bg:         $component-active-bg !default;
+
+//** Active dropdown menu item text color.
+$dropdown-link-active-color:     #fff !default;
+//** Active dropdown menu item background color.
+$dropdown-link-active-bg:        $component-active-bg !default;
+
+//** Disabled dropdown menu item background color.
+$dropdown-link-disabled-color:   $gray-light !default;
+
+//** Text color for headers within dropdown menus.
+$dropdown-header-color:          $gray-light !default;
+
+//** Deprecated `$dropdown-caret-color` as of v3.1.0
+$dropdown-caret-color:           #000 !default;
+
+
+//-- Z-index master list
+//
+// Warning: Avoid customizing these values. They're used for a bird's eye view
+// of components dependent on the z-axis and are designed to all work together.
+//
+// Note: These variables are not generated into the Customizer.
+
+$zindex-navbar:            1000 !default;
+$zindex-dropdown:          1000 !default;
+$zindex-popover:           1060 !default;
+$zindex-tooltip:           1070 !default;
+$zindex-navbar-fixed:      1030 !default;
+$zindex-modal-background:  1040 !default;
+$zindex-modal:             1050 !default;
+
+
+//== Media queries breakpoints
+//
+//## Define the breakpoints at which your layout will change, adapting to different screen sizes.
+
+// Extra small screen / phone
+//** Deprecated `$screen-xs` as of v3.0.1
+$screen-xs:                  480px !default;
+//** Deprecated `$screen-xs-min` as of v3.2.0
+$screen-xs-min:              $screen-xs !default;
+//** Deprecated `$screen-phone` as of v3.0.1
+$screen-phone:               $screen-xs-min !default;
+
+// Small screen / tablet
+//** Deprecated `$screen-sm` as of v3.0.1
+$screen-sm:                  768px !default;
+$screen-sm-min:              $screen-sm !default;
+//** Deprecated `$screen-tablet` as of v3.0.1
+$screen-tablet:              $screen-sm-min !default;
+
+// Medium screen / desktop
+//** Deprecated `$screen-md` as of v3.0.1
+$screen-md:                  992px !default;
+$screen-md-min:              $screen-md !default;
+//** Deprecated `$screen-desktop` as of v3.0.1
+$screen-desktop:             $screen-md-min !default;
+
+// Large screen / wide desktop
+//** Deprecated `$screen-lg` as of v3.0.1
+$screen-lg:                  1200px !default;
+$screen-lg-min:              $screen-lg !default;
+//** Deprecated `$screen-lg-desktop` as of v3.0.1
+$screen-lg-desktop:          $screen-lg-min !default;
+
+// So media queries don't overlap when required, provide a maximum
+$screen-xs-max:              ($screen-sm-min - 1) !default;
+$screen-sm-max:              ($screen-md-min - 1) !default;
+$screen-md-max:              ($screen-lg-min - 1) !default;
+
+
+//== Grid system
+//
+//## Define your custom responsive grid.
+
+//** Number of columns in the grid.
+$grid-columns:              12 !default;
+//** Padding between columns. Gets divided in half for the left and right.
+$grid-gutter-width:         30px !default;
+// Navbar collapse
+//** Point at which the navbar becomes uncollapsed.
+$grid-float-breakpoint:     $screen-sm-min !default;
+//** Point at which the navbar begins collapsing.
+$grid-float-breakpoint-max: ($grid-float-breakpoint - 1) !default;
+
+
+//== Container sizes
+//
+//## Define the maximum width of `.container` for different screen sizes.
+
+// Small screen / tablet
+$container-tablet:             (720px + $grid-gutter-width) !default;
+//** For `$screen-sm-min` and up.
+$container-sm:                 $container-tablet !default;
+
+// Medium screen / desktop
+$container-desktop:            (940px + $grid-gutter-width) !default;
+//** For `$screen-md-min` and up.
+$container-md:                 $container-desktop !default;
+
+// Large screen / wide desktop
+$container-large-desktop:      (1140px + $grid-gutter-width) !default;
+//** For `$screen-lg-min` and up.
+$container-lg:                 $container-large-desktop !default;
+
+
+//== Navbar
+//
+//##
+
+// Basics of a navbar
+$navbar-height:                    60px !default;
+$navbar-margin-bottom:             $line-height-computed !default;
+$navbar-border-radius:             $border-radius-base !default;
+$navbar-padding-horizontal:        floor(($grid-gutter-width / 2)) !default;
+$navbar-padding-vertical:          (($navbar-height - $line-height-computed) / 2) !default;
+$navbar-collapse-max-height:       340px !default;
+
+$navbar-default-color:             #fff !default;
+$navbar-default-bg:                $brand-primary !default;
+$navbar-default-border:            transparent !default;
+
+// Navbar links
+$navbar-default-link-color:                #fff !default;
+$navbar-default-link-hover-color:          $brand-success !default;
+$navbar-default-link-hover-bg:             transparent !default;
+$navbar-default-link-active-color:         #fff !default;
+$navbar-default-link-active-bg:            darken($navbar-default-bg, 10%) !default;
+$navbar-default-link-disabled-color:       #ccc !default;
+$navbar-default-link-disabled-bg:          transparent !default;
+
+// Navbar brand label
+$navbar-default-brand-color:               $navbar-default-link-color !default;
+$navbar-default-brand-hover-color:         $navbar-default-link-hover-color !default;
+$navbar-default-brand-hover-bg:            transparent !default;
+
+// Navbar toggle
+$navbar-default-toggle-hover-bg:           darken($navbar-default-bg, 10%) !default;
+$navbar-default-toggle-icon-bar-bg:        #fff !default;
+$navbar-default-toggle-border-color:       darken($navbar-default-bg, 10%) !default;
+
+
+//=== Inverted navbar
+// Reset inverted navbar basics
+$navbar-inverse-color:                      #fff !default;
+$navbar-inverse-bg:                         $brand-success !default;
+$navbar-inverse-border:                     transparent !default;
+
+// Inverted navbar links
+$navbar-inverse-link-color:                 #fff !default;
+$navbar-inverse-link-hover-color:           $brand-primary !default;
+$navbar-inverse-link-hover-bg:              transparent !default;
+$navbar-inverse-link-active-color:          #fff !default;
+$navbar-inverse-link-active-bg:             darken($navbar-inverse-bg, 5%) !default;
+$navbar-inverse-link-disabled-color:        #ccc !default;
+$navbar-inverse-link-disabled-bg:           transparent !default;
+
+// Inverted navbar brand label
+$navbar-inverse-brand-color:                $navbar-inverse-link-color !default;
+$navbar-inverse-brand-hover-color:          $navbar-inverse-link-hover-color !default;
+$navbar-inverse-brand-hover-bg:             transparent !default;
+
+// Inverted navbar toggle
+$navbar-inverse-toggle-hover-bg:            darken($navbar-inverse-bg, 10%) !default;
+$navbar-inverse-toggle-icon-bar-bg:         #fff !default;
+$navbar-inverse-toggle-border-color:        darken($navbar-inverse-bg, 10%) !default;
+
+
+//== Navs
+//
+//##
+
+//=== Shared nav styles
+$nav-link-padding:                          10px 15px !default;
+$nav-link-hover-bg:                         $gray-lighter !default;
+
+$nav-disabled-link-color:                   $gray-light !default;
+$nav-disabled-link-hover-color:             $gray-light !default;
+
+//== Tabs
+$nav-tabs-border-color:                     $gray-lighter !default;
+
+$nav-tabs-link-hover-border-color:          $gray-lighter !default;
+
+$nav-tabs-active-link-hover-bg:             $body-bg !default;
+$nav-tabs-active-link-hover-color:          $brand-primary !default;
+$nav-tabs-active-link-hover-border-color:   $gray-lighter !default;
+
+$nav-tabs-justified-link-border-color:            $gray-lighter !default;
+$nav-tabs-justified-active-link-border-color:     $body-bg !default;
+
+//== Pills
+$nav-pills-border-radius:                   $border-radius-base !default;
+$nav-pills-active-link-hover-bg:            $component-active-bg !default;
+$nav-pills-active-link-hover-color:         $component-active-color !default;
+
+
+//== Pagination
+//
+//##
+
+$pagination-color:                     #fff !default;
+$pagination-bg:                        $brand-success !default;
+$pagination-border:                    transparent !default;
+
+$pagination-hover-color:               #fff !default;
+$pagination-hover-bg:                  darken($brand-success, 15%) !default;
+$pagination-hover-border:              transparent !default;
+
+$pagination-active-color:              #fff !default;
+$pagination-active-bg:                 darken($brand-success, 15%) !default;
+$pagination-active-border:             transparent !default;
+
+$pagination-disabled-color:            $gray-lighter !default;
+$pagination-disabled-bg:               lighten($brand-success, 15%) !default;
+$pagination-disabled-border:           transparent !default;
+
+
+//== Pager
+//
+//##
+
+$pager-bg:                             $pagination-bg !default;
+$pager-border:                         $pagination-border !default;
+$pager-border-radius:                  15px !default;
+
+$pager-hover-bg:                       $pagination-hover-bg !default;
+
+$pager-active-bg:                      $pagination-active-bg !default;
+$pager-active-color:                   $pagination-active-color !default;
+
+$pager-disabled-color:                 #fff !default;
+
+
+//== Jumbotron
+//
+//##
+
+$jumbotron-padding:              30px !default;
+$jumbotron-color:                inherit !default;
+$jumbotron-bg:                   $gray-lighter !default;
+$jumbotron-heading-color:        inherit !default;
+$jumbotron-font-size:            ceil(($font-size-base * 1.5)) !default;
+$jumbotron-heading-font-size:    ceil(($font-size-base * 4.5)) !default;
+
+
+//== Form states and alerts
+//
+//## Define colors for form feedback states and, by default, alerts.
+
+$state-success-text:             #fff !default;
+$state-success-bg:               $brand-success !default;
+$state-success-border:           $brand-success !default;
+
+$state-info-text:                #fff !default;
+$state-info-bg:                  $brand-info !default;
+$state-info-border:              $brand-info !default;
+
+$state-warning-text:             #fff !default;
+$state-warning-bg:               $brand-warning !default;
+$state-warning-border:           $brand-warning !default;
+
+$state-danger-text:              #fff !default;
+$state-danger-bg:                $brand-danger !default;
+$state-danger-border:            $brand-danger !default;
+
+
+//== Tooltips
+//
+//##
+
+//** Tooltip max width
+$tooltip-max-width:           200px !default;
+//** Tooltip text color
+$tooltip-color:               #fff !default;
+//** Tooltip background color
+$tooltip-bg:                  #000 !default;
+$tooltip-opacity:             .9 !default;
+
+//** Tooltip arrow width
+$tooltip-arrow-width:         5px !default;
+//** Tooltip arrow color
+$tooltip-arrow-color:         $tooltip-bg !default;
+
+
+//== Popovers
+//
+//##
+
+//** Popover body background color
+$popover-bg:                          #fff !default;
+//** Popover maximum width
+$popover-max-width:                   276px !default;
+//** Popover border color
+$popover-border-color:                rgba(0,0,0,.2) !default;
+//** Popover fallback border color
+$popover-fallback-border-color:       #ccc !default;
+
+//** Popover title background color
+$popover-title-bg:                    darken($popover-bg, 3%) !default;
+
+//** Popover arrow width
+$popover-arrow-width:                 10px !default;
+//** Popover arrow color
+$popover-arrow-color:                 $popover-bg !default;
+
+//** Popover outer arrow width
+$popover-arrow-outer-width:           ($popover-arrow-width + 1) !default;
+//** Popover outer arrow color
+$popover-arrow-outer-color:           fadein($popover-border-color, 5%) !default;
+//** Popover outer arrow fallback color
+$popover-arrow-outer-fallback-color:  darken($popover-fallback-border-color, 20%) !default;
+
+
+//== Labels
+//
+//##
+
+//** Default label background color
+$label-default-bg:            $btn-default-bg !default;
+//** Primary label background color
+$label-primary-bg:            $brand-primary !default;
+//** Success label background color
+$label-success-bg:            $brand-success !default;
+//** Info label background color
+$label-info-bg:               $brand-info !default;
+//** Warning label background color
+$label-warning-bg:            $brand-warning !default;
+//** Danger label background color
+$label-danger-bg:             $brand-danger !default;
+
+//** Default label text color
+$label-color:                 #fff !default;
+//** Default text color of a linked label
+$label-link-hover-color:      #fff !default;
+
+
+//== Modals
+//
+//##
+
+//** Padding applied to the modal body
+$modal-inner-padding:         20px !default;
+
+//** Padding applied to the modal title
+$modal-title-padding:         15px !default;
+//** Modal title line-height
+$modal-title-line-height:     $line-height-base !default;
+
+//** Background color of modal content area
+$modal-content-bg:                             #fff !default;
+//** Modal content border color
+$modal-content-border-color:                   rgba(0,0,0,.2) !default;
+//** Modal content border color **for IE8**
+$modal-content-fallback-border-color:          #999 !default;
+
+//** Modal backdrop background color
+$modal-backdrop-bg:           #000 !default;
+//** Modal backdrop opacity
+$modal-backdrop-opacity:      .5 !default;
+//** Modal header border color
+$modal-header-border-color:   #e5e5e5 !default;
+//** Modal footer border color
+$modal-footer-border-color:   $modal-header-border-color !default;
+
+$modal-lg:                    900px !default;
+$modal-md:                    600px !default;
+$modal-sm:                    300px !default;
+
+
+//== Alerts
+//
+//## Define alert colors, border radius, and padding.
+
+$alert-padding:               15px !default;
+$alert-border-radius:         $border-radius-base !default;
+$alert-link-font-weight:      bold !default;
+
+$alert-success-bg:            $state-success-bg !default;
+$alert-success-text:          $state-success-text !default;
+$alert-success-border:        $state-success-border !default;
+
+$alert-info-bg:               $state-info-bg !default;
+$alert-info-text:             $state-info-text !default;
+$alert-info-border:           $state-info-border !default;
+
+$alert-warning-bg:            $state-warning-bg !default;
+$alert-warning-text:          $state-warning-text !default;
+$alert-warning-border:        $state-warning-border !default;
+
+$alert-danger-bg:             $state-danger-bg !default;
+$alert-danger-text:           $state-danger-text !default;
+$alert-danger-border:         $state-danger-border !default;
+
+
+//== Progress bars
+//
+//##
+
+//** Background color of the whole progress component
+$progress-bg:                 $gray-lighter !default;
+//** Progress bar text color
+$progress-bar-color:          #fff !default;
+//** Variable for setting rounded corners on progress bar.
+$progress-border-radius:      $border-radius-base !default;
+
+//** Default progress bar color
+$progress-bar-bg:             $brand-primary !default;
+//** Success progress bar color
+$progress-bar-success-bg:     $brand-success !default;
+//** Warning progress bar color
+$progress-bar-warning-bg:     $brand-warning !default;
+//** Danger progress bar color
+$progress-bar-danger-bg:      $brand-danger !default;
+//** Info progress bar color
+$progress-bar-info-bg:        $brand-info !default;
+
+
+//== List group
+//
+//##
+
+//** Background color on `.list-group-item`
+$list-group-bg:                 #fff !default;
+//** `.list-group-item` border color
+$list-group-border:             $gray-lighter !default;
+//** List group border radius
+$list-group-border-radius:      $border-radius-base !default;
+
+//** Background color of single list items on hover
+$list-group-hover-bg:           $gray-lighter !default;
+//** Text color of active list items
+$list-group-active-color:       $component-active-color !default;
+//** Background color of active list items
+$list-group-active-bg:          $component-active-bg !default;
+//** Border color of active list elements
+$list-group-active-border:      $list-group-active-bg !default;
+//** Text color for content within active list items
+$list-group-active-text-color:  lighten($list-group-active-bg, 40%) !default;
+
+//** Text color of disabled list items
+$list-group-disabled-color:      $gray-light !default;
+//** Background color of disabled list items
+$list-group-disabled-bg:         $gray-lighter !default;
+//** Text color for content within disabled list items
+$list-group-disabled-text-color: $list-group-disabled-color !default;
+
+$list-group-link-color:         #555 !default;
+$list-group-link-hover-color:   $list-group-link-color !default;
+$list-group-link-heading-color: #333 !default;
+
+
+//== Panels
+//
+//##
+
+$panel-bg:                    #fff !default;
+$panel-body-padding:          15px !default;
+$panel-heading-padding:       10px 15px !default;
+$panel-footer-padding:        $panel-heading-padding !default;
+$panel-border-radius:         $border-radius-base !default;
+
+//** Border color for elements within panels
+$panel-inner-border:          $gray-lighter !default;
+$panel-footer-bg:             $gray-lighter !default;
+
+$panel-default-text:          $text-color !default;
+$panel-default-border:        $gray-lighter !default;
+$panel-default-heading-bg:    $gray-lighter !default;
+
+$panel-primary-text:          #fff !default;
+$panel-primary-border:        $brand-primary !default;
+$panel-primary-heading-bg:    $brand-primary !default;
+
+$panel-success-text:          $state-success-text !default;
+$panel-success-border:        $state-success-border !default;
+$panel-success-heading-bg:    $state-success-bg !default;
+
+$panel-info-text:             $state-info-text !default;
+$panel-info-border:           $state-info-border !default;
+$panel-info-heading-bg:       $state-info-bg !default;
+
+$panel-warning-text:          $state-warning-text !default;
+$panel-warning-border:        $state-warning-border !default;
+$panel-warning-heading-bg:    $state-warning-bg !default;
+
+$panel-danger-text:           $state-danger-text !default;
+$panel-danger-border:         $state-danger-border !default;
+$panel-danger-heading-bg:     $state-danger-bg !default;
+
+
+//== Thumbnails
+//
+//##
+
+//** Padding around the thumbnail image
+$thumbnail-padding:           4px !default;
+//** Thumbnail background color
+$thumbnail-bg:                $body-bg !default;
+//** Thumbnail border color
+$thumbnail-border:            $gray-lighter !default;
+//** Thumbnail border radius
+$thumbnail-border-radius:     $border-radius-base !default;
+
+//** Custom text color for thumbnail captions
+$thumbnail-caption-color:     $text-color !default;
+//** Padding around the thumbnail caption
+$thumbnail-caption-padding:   9px !default;
+
+
+//== Wells
+//
+//##
+
+$well-bg:                     $gray-lighter !default;
+$well-border:                 transparent !default;
+
+
+//== Badges
+//
+//##
+
+$badge-color:                 #fff !default;
+//** Linked badge text color on hover
+$badge-link-hover-color:      #fff !default;
+$badge-bg:                    $brand-primary !default;
+
+//** Badge text color in active nav link
+$badge-active-color:          $brand-primary !default;
+//** Badge background color in active nav link
+$badge-active-bg:             #fff !default;
+
+$badge-font-weight:           bold !default;
+$badge-line-height:           1 !default;
+$badge-border-radius:         10px !default;
+
+
+//== Breadcrumbs
+//
+//##
+
+$breadcrumb-padding-vertical:   8px !default;
+$breadcrumb-padding-horizontal: 15px !default;
+//** Breadcrumb background color
+$breadcrumb-bg:                 $gray-lighter !default;
+//** Breadcrumb text color
+$breadcrumb-color:              #ccc !default;
+//** Text color of current page in the breadcrumb
+$breadcrumb-active-color:       $gray !default;
+//** Textual separator for between breadcrumb elements
+$breadcrumb-separator:          "/" !default;
+
+
+//== Carousel
+//
+//##
+
+$carousel-text-shadow:                        0 1px 2px rgba(0,0,0,.6) !default;
+
+$carousel-control-color:                      #fff !default;
+$carousel-control-width:                      15% !default;
+$carousel-control-opacity:                    .5 !default;
+$carousel-control-font-size:                  20px !default;
+
+$carousel-indicator-active-bg:                #fff !default;
+$carousel-indicator-border-color:             #fff !default;
+
+$carousel-caption-color:                      #fff !default;
+
+
+//== Close
+//
+//##
+
+$close-font-weight:           bold !default;
+$close-color:                 #000 !default;
+$close-text-shadow:           none !default;
+
+
+//== Code
+//
+//##
+
+$code-color:                  #c7254e !default;
+$code-bg:                     #f9f2f4 !default;
+
+$kbd-color:                   #fff !default;
+$kbd-bg:                      #333 !default;
+
+$pre-bg:                      $gray-lighter !default;
+$pre-color:                   $gray-dark !default;
+$pre-border-color:            #ccc !default;
+$pre-scrollable-max-height:   340px !default;
+
+
+//== Type
+//
+//##
+
+//** Horizontal offset for forms and lists.
+$component-offset-horizontal: 180px !default;
+//** Text muted color
+$text-muted:                  $gray-light !default;
+//** Abbreviations and acronyms border color
+$abbr-border-color:           $gray-light !default;
+//** Headings small color
+$headings-small-color:        $gray-light !default;
+//** Blockquote small color
+$blockquote-small-color:      $gray-light !default;
+//** Blockquote font size
+$blockquote-font-size:        ($font-size-base * 1.25) !default;
+//** Blockquote border color
+$blockquote-border-color:     $gray-lighter !default;
+//** Page header border color
+$page-header-border-color:    transparent !default;
+//** Width of horizontal description list titles
+$dl-horizontal-offset:        $component-offset-horizontal !default;
+//** Point at which .dl-horizontal becomes horizontal
+$dl-horizontal-breakpoint:    $grid-float-breakpoint !default;
+//** Horizontal line color.
+$hr-border:                   $gray-lighter !default;
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/flatly/_bootswatch.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/flatly/_bootswatch.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/flatly/_bootswatch.scss	(revision 3762)
@@ -0,0 +1,330 @@
+// Flatly 3.4.1
+// Bootswatch
+// -----------------------------------------------------
+
+$web-font-path: "https://fonts.googleapis.com/css?family=Lato:400,700,400italic" !default;
+@import url($web-font-path);
+
+// Navbar =====================================================================
+
+.navbar {
+  border-width: 0;
+
+  &-default {
+
+    .badge {
+      background-color: #fff;
+      color: $navbar-default-bg;
+    }
+  }
+
+  &-inverse {
+
+    .badge {
+      background-color: #fff;
+      color: $navbar-inverse-bg;
+    }
+  }
+
+  &-brand {
+    line-height: 1;
+  }
+}
+
+// Buttons ====================================================================
+
+.btn {
+  border-width: 2px;
+}
+
+.btn:active {
+  @include box-shadow(none);
+}
+
+.btn-group.open .dropdown-toggle {
+  @include box-shadow(none);
+}
+
+// Typography =================================================================
+
+.text-primary,
+.text-primary:hover {
+  color: $brand-primary;
+}
+
+.text-success,
+.text-success:hover {
+  color: $brand-success;
+}
+
+.text-danger,
+.text-danger:hover {
+  color: $brand-danger;
+}
+
+.text-warning,
+.text-warning:hover {
+  color: $brand-warning;
+}
+
+.text-info,
+.text-info:hover {
+  color: $brand-info;
+}
+
+// Tables =====================================================================
+
+table,
+.table {
+
+  a:not(.btn) {
+    text-decoration: underline;
+  }
+
+  .dropdown-menu a {
+    text-decoration: none;
+  }
+
+  .success,
+  .warning,
+  .danger,
+  .info {
+    color: #fff;
+
+    > th > a,
+    > td > a,
+    > a {
+      color: #fff;
+    }
+  }
+
+  > thead > tr > th,
+  > tbody > tr > th,
+  > tfoot > tr > th,
+  > thead > tr > td,
+  > tbody > tr > td,
+  > tfoot > tr > td {
+    border: none;
+  }
+
+  &-bordered > thead > tr > th,
+  &-bordered > tbody > tr > th,
+  &-bordered > tfoot > tr > th,
+  &-bordered > thead > tr > td,
+  &-bordered > tbody > tr > td,
+  &-bordered > tfoot > tr > td {
+    border: 1px solid $table-border-color;
+  }
+}
+
+// Forms ======================================================================
+
+.form-control,
+input {
+  border-width: 2px;
+  @include box-shadow(none);
+
+  &:focus {
+    @include box-shadow(none);
+  }
+}
+
+.has-warning {
+  .help-block,
+  .control-label,
+  .radio,
+  .checkbox,
+  .radio-inline,
+  .checkbox-inline,
+  &.radio label,
+  &.checkbox label,
+  &.radio-inline label,
+  &.checkbox-inline label,
+  .form-control-feedback {
+    color: $brand-warning;
+  }
+
+  .form-control,
+  .form-control:focus {
+    border: 2px solid $brand-warning;
+  }
+
+  .input-group-addon {
+    border-color: $brand-warning;
+  }
+}
+
+.has-error {
+  .help-block,
+  .control-label,
+  .radio,
+  .checkbox,
+  .radio-inline,
+  .checkbox-inline,
+  &.radio label,
+  &.checkbox label,
+  &.radio-inline label,
+  &.checkbox-inline label,
+  .form-control-feedback {
+    color: $brand-danger;
+  }
+
+  .form-control,
+  .form-control:focus {
+    border: 2px solid $brand-danger;
+  }
+
+  .input-group-addon {
+    border-color: $brand-danger;
+  }
+}
+
+.has-success {
+  .help-block,
+  .control-label,
+  .radio,
+  .checkbox,
+  .radio-inline,
+  .checkbox-inline,
+  &.radio label,
+  &.checkbox label,
+  &.radio-inline label,
+  &.checkbox-inline label,
+  .form-control-feedback {
+    color: $brand-success;
+  }
+
+  .form-control,
+  .form-control:focus {
+    border: 2px solid $brand-success;
+  }
+
+  .input-group-addon {
+    border-color: $brand-success;
+  }
+}
+
+// Navs =======================================================================
+
+.nav {
+  .open > a,
+  .open > a:hover,
+  .open > a:focus {
+    border-color: transparent;
+  }
+}
+
+.pager {
+  a,
+  a:hover {
+    color: #fff;
+  }
+
+  .disabled {
+    &>a,
+    &>a:hover,
+    &>a:focus,
+    &>span {
+      background-color: $pagination-disabled-bg;
+    }
+  }
+}
+
+// Indicators =================================================================
+
+.close {
+  color: #fff;
+  text-decoration: none;
+  opacity: 0.4;
+
+  &:hover,
+  &:focus {
+    color: #fff;
+    opacity: 1;
+  }
+}
+
+.alert {
+
+  .alert-link {
+    color: #fff;
+    text-decoration: underline;
+  }
+}
+
+// Progress bars ==============================================================
+
+.progress {
+  height: 10px;
+  @include box-shadow(none);
+  .progress-bar {
+    font-size: 10px;
+    line-height: 10px;
+  }
+}
+
+// Containers =================================================================
+
+.well {
+  @include box-shadow(none);
+}
+
+a.list-group-item {
+
+  &.active,
+  &.active:hover,
+  &.active:focus {
+    border-color: $list-group-border;
+  }
+
+  &-success {
+    &.active {
+      background-color: $state-success-bg;
+    }
+
+    &.active:hover,
+    &.active:focus {
+      background-color: darken($state-success-bg, 5%);
+    }
+  }
+
+  &-warning {
+    &.active {
+      background-color: $state-warning-bg;
+    }
+    
+    &.active:hover,
+    &.active:focus {
+      background-color: darken($state-warning-bg, 5%);
+    }
+  }
+
+  &-danger {
+    &.active {
+      background-color: $state-danger-bg;
+    }
+    
+    &.active:hover,
+    &.active:focus {
+      background-color: darken($state-danger-bg, 5%);
+    }
+  }
+}
+
+.panel {
+  &-default {
+    .close {
+      color: $text-color;
+    }
+  }
+}
+
+.modal {
+  .close {
+    color: $text-color;
+  }
+}
+
+.popover {
+  color: $text-color;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/flatly/font.css
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/flatly/font.css	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/flatly/font.css	(revision 3762)
@@ -0,0 +1,18 @@
+@font-face {
+  font-family: 'Lato';
+  font-style: italic;
+  font-weight: 400;
+  src: url(fonts/S6u8w4BMUTPHjxsAXC-s.woff) format('woff');
+}
+@font-face {
+  font-family: 'Lato';
+  font-style: normal;
+  font-weight: 400;
+  src: url(fonts/S6uyw4BMUTPHjx4wWA.woff) format('woff');
+}
+@font-face {
+  font-family: 'Lato';
+  font-style: normal;
+  font-weight: 700;
+  src: url(fonts/S6u9w4BMUTPHh6UVSwiPHw.woff) format('woff');
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/README.md
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/README.md	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/README.md	(revision 3762)
@@ -0,0 +1,84 @@
+Bootswatch
+==========
+
+[![Bootswatch Logo](./assets/img/logo-dark.png)](http://bootswatch.com)
+
+Bootswatch is a collection of open source themes for [Bootstrap](http://getbootstrap.com/). Check it out at [bootswatch.com](http://bootswatch.com).
+
+Usage
+-----
+Download the `bootstrap.min.css` file associated with a theme and replace Bootstrap's default stylesheet. You must still include Bootstrap's JavaScript file to have functional dropdowns, modals, etc.
+
+The themes are also hosted on [BootstrapCDN](http://www.bootstrapcdn.com/bootswatch/). 
+
+You can import a theme into your styles using either LESS or SASS.
+
+LESS:
+
+```
+@import "bootstrap/less/bootstrap.less";
+@import "bootswatch/theme/variables.less";
+@import "bootswatch/theme/bootswatch.less";
+
+```
+
+SASS:
+
+```
+@import "bootswatch/theme/variables";
+@import "bootstrap-sass-official/assets/stylesheets/bootstrap";
+@import "bootswatch/theme/bootswatch";
+
+```
+
+
+Customization
+------
+Bootswatch is open source and you’re welcome to modify the themes.
+
+Each theme consists of two LESS files. `variables.less`, which is included by default in Bootstrap, allows you to customize [these settings](http://getbootstrap.com/customize/#less-variables). `bootswatch.less` introduces more extensive structural changes.
+
+These files are also available in SASS.
+
+Check out the [Help page](http://bootswatch.com/help/) for more details on building your own theme.
+
+API
+-----
+
+A simple API is available for integrating your platform with Bootswatch. More info at http://bootswatch.com/help/#api
+
+Contributing
+-----
+It's through your contributions that Bootswatch will continue to improve. You can contribute in several ways.
+
+**Issues:** Provide a detailed report of any bugs you encounter and open an issue on [GitHub](https://github.com/thomaspark/bootswatch/issues).
+
+**Documentation:** If you'd like to fix a typo or beef up the docs, you can fork the project, make your changes, and submit a pull request.
+
+**Code:** Make a fix and submit it as a pull request. When making changes, it's important to keep the CSS, LESS and SASS versions in sync. To do this, be sure to edit the LESS source files for the particular theme, then run the  tasks `grunt swatch` and `grunt:convert_less` to build the CSS and LESS.
+
+**Donation:** Donations are gratefully accepted via [PayPal](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&amp;hosted_button_id=F22JEM3Q78JC2) and [Gratipay](https://gratipay.com/bootswatch/).
+
+Author
+------
+Thomas Park
+
++ http://github.com/thomaspark
++ http://thomaspark.co
+
+Thanks
+------
+[Mark Otto](https://github.com/mdo) and [Jacob Thornton](https://github.com/fat) for [Bootstrap](https://github.com/twbs/bootstrap).
+
+[Jenil Gogari](http://www.jgog.in/) for his contributions to the Flatly theme.
+
+[James Taylor](https://github.com/jostylr) for [cors-lite](https://github.com/jostylr/cors-lite).
+
+[Corey Sewell](https://github.com/cjsewell) for SASS conversion.
+
+
+Copyright and License
+----
+Copyright 2014-2018 Thomas Park
+
+Code released under the MIT License.
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/sandstone/_variables.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/sandstone/_variables.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/sandstone/_variables.scss	(revision 3762)
@@ -0,0 +1,870 @@
+$bootstrap-sass-asset-helper: false !default;
+// Sandstone 3.4.1
+// Variables
+// --------------------------------------------------
+
+
+//== Colors
+//
+//## Gray and brand colors for use across Bootstrap.
+
+$gray-base:              #000 !default;
+$gray-darker:            #3E3F3A !default;
+$gray-dark:              #8E8C84 !default;
+$gray:                   #98978B !default;
+$gray-light:             #DFD7CA !default;
+$gray-lighter:           #F8F5F0 !default;
+
+$brand-primary:         #325D88 !default;
+$brand-success:         #93C54B !default;
+$brand-info:            #29ABE0 !default;
+$brand-warning:         #F47C3C !default;
+$brand-danger:          #d9534f !default;
+
+
+//== Scaffolding
+//
+//## Settings for some of the most global styles.
+
+//** Background color for `<body>`.
+$body-bg:               #fff !default;
+//** Global text color on `<body>`.
+$text-color:            #3E3F3A !default;
+
+//** Global textual link color.
+$link-color:            $brand-success !default;
+//** Link hover color set via `darken()` function.
+$link-hover-color:      darken($link-color, 10%) !default;
+//** Link hover decoration.
+$link-hover-decoration: underline !default;
+
+
+//== Typography
+//
+//## Font, line-height, and color for body text, headings, and more.
+
+$font-family-sans-serif:  "Roboto", "Helvetica Neue", Helvetica, Arial, sans-serif !default;
+$font-family-serif:       Georgia, "Times New Roman", Times, serif !default;
+//** Default monospace fonts for `<code>`, `<kbd>`, and `<pre>`.
+$font-family-monospace:   Menlo, Monaco, Consolas, "Courier New", monospace !default;
+$font-family-base:        $font-family-sans-serif !default;
+
+$font-size-base:          14px !default;
+$font-size-large:         ceil(($font-size-base * 1.25)) !default; // ~18px
+$font-size-small:         ceil(($font-size-base * 0.85)) !default; // ~12px
+
+$font-size-h1:            floor(($font-size-base * 2.6)) !default; // ~36px
+$font-size-h2:            floor(($font-size-base * 2.15)) !default; // ~30px
+$font-size-h3:            ceil(($font-size-base * 1.7)) !default; // ~24px
+$font-size-h4:            ceil(($font-size-base * 1.25)) !default; // ~18px
+$font-size-h5:            $font-size-base !default;
+$font-size-h6:            ceil(($font-size-base * 0.85)) !default; // ~12px
+
+//** Unit-less `line-height` for use in components like buttons.
+$line-height-base:        1.428571429 !default; // 20/14
+//** Computed "line-height" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.
+$line-height-computed:    floor(($font-size-base * $line-height-base)) !default; // ~20px
+
+//** By default, this inherits from the `<body>`.
+$headings-font-family:    inherit !default;
+$headings-font-weight:    400 !default;
+$headings-line-height:    1.1 !default;
+$headings-color:          inherit !default;
+
+
+//== Iconography
+//
+//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.
+
+//** Load fonts from this directory.
+$icon-font-path: if($bootstrap-sass-asset-helper, "bootstrap/", "../fonts/bootstrap/") !default;
+//** File name for all font files.
+$icon-font-name:          "glyphicons-halflings-regular" !default;
+//** Element ID within SVG icon file.
+$icon-font-svg-id:        "glyphicons_halflingsregular" !default;
+
+
+//== Components
+//
+//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).
+
+$padding-base-vertical:     12px !default;
+$padding-base-horizontal:   16px !default;
+
+$padding-large-vertical:    20px !default;
+$padding-large-horizontal:  30px !default;
+
+$padding-small-vertical:    5px !default;
+$padding-small-horizontal:  10px !default;
+
+$padding-xs-vertical:       1px !default;
+$padding-xs-horizontal:     5px !default;
+
+$line-height-large:         1.3333333 !default; // extra decimals for Win 8.1 Chrome
+$line-height-small:         1.5 !default;
+
+$border-radius-base:        4px !default;
+$border-radius-large:       6px !default;
+$border-radius-small:       3px !default;
+
+//** Global color for active items (e.g., navs or dropdowns).
+$component-active-color:    $gray !default;
+//** Global background color for active items (e.g., navs or dropdowns).
+$component-active-bg:       $gray-lighter !default;
+
+//** Width of the `border` for generating carets that indicate dropdowns.
+$caret-width-base:          4px !default;
+//** Carets increase slightly in size for larger components.
+$caret-width-large:         5px !default;
+
+
+//== Tables
+//
+//## Customizes the `.table` component with basic values, each used across all table variations.
+
+//** Padding for `<th>`s and `<td>`s.
+$table-cell-padding:            8px !default;
+//** Padding for cells in `.table-condensed`.
+$table-condensed-cell-padding:  5px !default;
+
+//** Default background color used for all tables.
+$table-bg:                      transparent !default;
+//** Background color used for `.table-striped`.
+$table-bg-accent:               $gray-lighter !default;
+//** Background color used for `.table-hover`.
+$table-bg-hover:                $gray-lighter !default;
+$table-bg-active:               $table-bg-hover !default;
+
+//** Border color for table and cell borders.
+$table-border-color:            $gray-light !default;
+
+
+//== Buttons
+//
+//## For each of Bootstrap's buttons, define text, background and border color.
+
+$btn-font-weight:                normal !default;
+
+$btn-default-color:              #fff !default;
+$btn-default-bg:                 $gray-darker !default;
+$btn-default-border:             transparent !default;
+
+$btn-primary-color:              #fff !default;
+$btn-primary-bg:                 $brand-primary !default;
+$btn-primary-border:             transparent !default;
+
+$btn-success-color:              #fff !default;
+$btn-success-bg:                 $brand-success !default;
+$btn-success-border:             transparent !default;
+
+$btn-info-color:                 #fff !default;
+$btn-info-bg:                    $brand-info !default;
+$btn-info-border:                transparent !default;
+
+$btn-warning-color:              #fff !default;
+$btn-warning-bg:                 $brand-warning !default;
+$btn-warning-border:             transparent !default;
+
+$btn-danger-color:               #fff !default;
+$btn-danger-bg:                  $brand-danger !default;
+$btn-danger-border:              transparent !default;
+
+$btn-link-disabled-color:        $gray-light !default;
+
+// Allows for customizing button radius independently from global border radius
+$btn-border-radius-base:         $border-radius-base !default;
+$btn-border-radius-large:        $border-radius-large !default;
+$btn-border-radius-small:        $border-radius-small !default;
+
+
+//== Forms
+//
+//##
+
+//** `<input>` background color
+$input-bg:                       #fff !default;
+//** `<input disabled>` background color
+$input-bg-disabled:              $gray-lighter !default;
+
+//** Text color for `<input>`s
+$input-color:                    $text-color !default;
+//** `<input>` border color
+$input-border:                   $gray-light !default;
+
+// TODO: Rename `$input-border-radius` to `$input-border-radius-base` in v4
+//** Default `.form-control` border radius
+// This has no effect on `<select>`s in some browsers, due to the limited stylability of `<select>`s in CSS.
+$input-border-radius:            $border-radius-base !default;
+//** Large `.form-control` border radius
+$input-border-radius-large:      $border-radius-large !default;
+//** Small `.form-control` border radius
+$input-border-radius-small:      $border-radius-small !default;
+
+//** Border color for inputs on focus
+$input-border-focus:             transparent !default;
+
+//** Placeholder text color
+$input-color-placeholder:        $gray-light !default;
+
+//** Default `.form-control` height
+$input-height-base:              ($line-height-computed + ($padding-base-vertical * 2) + 2) !default;
+//** Large `.form-control` height
+$input-height-large:             (ceil($font-size-large * $line-height-large) + ($padding-large-vertical * 2) + 2) !default;
+//** Small `.form-control` height
+$input-height-small:             (floor($font-size-small * $line-height-small) + ($padding-small-vertical * 2) + 2) !default;
+
+//** `.form-group` margin
+$form-group-margin-bottom:       15px !default;
+
+$legend-color:                   $headings-color !default;
+$legend-border-color:            transparent !default;
+
+//** Background color for textual input addons
+$input-group-addon-bg:           $gray-lighter !default;
+//** Border color for textual input addons
+$input-group-addon-border-color: $input-border !default;
+
+//** Disabled cursor for form controls and buttons.
+$cursor-disabled:                not-allowed !default;
+
+
+//== Dropdowns
+//
+//## Dropdown menu container and contents.
+
+//** Background for the dropdown menu.
+$dropdown-bg:                    #fff !default;
+//** Dropdown menu `border-color`.
+$dropdown-border:                $gray-light !default;
+//** Dropdown menu `border-color` **for IE8**.
+$dropdown-fallback-border:       $gray-light !default;
+//** Divider color for between dropdown items.
+$dropdown-divider-bg:            $gray-lighter !default;
+
+//** Dropdown link text color.
+$dropdown-link-color:            $gray !default;
+//** Hover color for dropdown links.
+$dropdown-link-hover-color:      $dropdown-link-color !default;
+//** Hover background for dropdown links.
+$dropdown-link-hover-bg:         $gray-lighter !default;
+
+//** Active dropdown menu item text color.
+$dropdown-link-active-color:     $component-active-color !default;
+//** Active dropdown menu item background color.
+$dropdown-link-active-bg:        $component-active-bg !default;
+
+//** Disabled dropdown menu item background color.
+$dropdown-link-disabled-color:   $gray-light !default;
+
+//** Text color for headers within dropdown menus.
+$dropdown-header-color:          $gray-light !default;
+
+//** Deprecated `$dropdown-caret-color` as of v3.1.0
+$dropdown-caret-color:           #000 !default;
+
+
+//-- Z-index master list
+//
+// Warning: Avoid customizing these values. They're used for a bird's eye view
+// of components dependent on the z-axis and are designed to all work together.
+//
+// Note: These variables are not generated into the Customizer.
+
+$zindex-navbar:            1000 !default;
+$zindex-dropdown:          1000 !default;
+$zindex-popover:           1060 !default;
+$zindex-tooltip:           1070 !default;
+$zindex-navbar-fixed:      1030 !default;
+$zindex-modal-background:  1040 !default;
+$zindex-modal:             1050 !default;
+
+
+//== Media queries breakpoints
+//
+//## Define the breakpoints at which your layout will change, adapting to different screen sizes.
+
+// Extra small screen / phone
+//** Deprecated `$screen-xs` as of v3.0.1
+$screen-xs:                  480px !default;
+//** Deprecated `$screen-xs-min` as of v3.2.0
+$screen-xs-min:              $screen-xs !default;
+//** Deprecated `$screen-phone` as of v3.0.1
+$screen-phone:               $screen-xs-min !default;
+
+// Small screen / tablet
+//** Deprecated `$screen-sm` as of v3.0.1
+$screen-sm:                  768px !default;
+$screen-sm-min:              $screen-sm !default;
+//** Deprecated `$screen-tablet` as of v3.0.1
+$screen-tablet:              $screen-sm-min !default;
+
+// Medium screen / desktop
+//** Deprecated `$screen-md` as of v3.0.1
+$screen-md:                  992px !default;
+$screen-md-min:              $screen-md !default;
+//** Deprecated `$screen-desktop` as of v3.0.1
+$screen-desktop:             $screen-md-min !default;
+
+// Large screen / wide desktop
+//** Deprecated `$screen-lg` as of v3.0.1
+$screen-lg:                  1200px !default;
+$screen-lg-min:              $screen-lg !default;
+//** Deprecated `$screen-lg-desktop` as of v3.0.1
+$screen-lg-desktop:          $screen-lg-min !default;
+
+// So media queries don't overlap when required, provide a maximum
+$screen-xs-max:              ($screen-sm-min - 1) !default;
+$screen-sm-max:              ($screen-md-min - 1) !default;
+$screen-md-max:              ($screen-lg-min - 1) !default;
+
+
+//== Grid system
+//
+//## Define your custom responsive grid.
+
+//** Number of columns in the grid.
+$grid-columns:              12 !default;
+//** Padding between columns. Gets divided in half for the left and right.
+$grid-gutter-width:         30px !default;
+// Navbar collapse
+//** Point at which the navbar becomes uncollapsed.
+$grid-float-breakpoint:     $screen-sm-min !default;
+//** Point at which the navbar begins collapsing.
+$grid-float-breakpoint-max: ($grid-float-breakpoint - 1) !default;
+
+
+//== Container sizes
+//
+//## Define the maximum width of `.container` for different screen sizes.
+
+// Small screen / tablet
+$container-tablet:             (720px + $grid-gutter-width) !default;
+//** For `$screen-sm-min` and up.
+$container-sm:                 $container-tablet !default;
+
+// Medium screen / desktop
+$container-desktop:            (940px + $grid-gutter-width) !default;
+//** For `$screen-md-min` and up.
+$container-md:                 $container-desktop !default;
+
+// Large screen / wide desktop
+$container-large-desktop:      (1140px + $grid-gutter-width) !default;
+//** For `$screen-lg-min` and up.
+$container-lg:                 $container-large-desktop !default;
+
+
+//== Navbar
+//
+//##
+
+// Basics of a navbar
+$navbar-height:                    60px !default;
+$navbar-margin-bottom:             $line-height-computed !default;
+$navbar-border-radius:             $border-radius-base !default;
+$navbar-padding-horizontal:        floor(($grid-gutter-width / 2)) !default;
+$navbar-padding-vertical:          (($navbar-height - $line-height-computed) / 2) !default;
+$navbar-collapse-max-height:       340px !default;
+
+$navbar-default-color:             $gray-dark !default;
+$navbar-default-bg:                $gray-darker !default;
+$navbar-default-border:            $gray-darker !default;
+
+// Navbar links
+$navbar-default-link-color:                $gray !default;
+$navbar-default-link-hover-color:          #fff !default;
+$navbar-default-link-hover-bg:             transparent !default;
+$navbar-default-link-active-color:         #fff !default;
+$navbar-default-link-active-bg:            darken($navbar-default-bg, 2%) !default;
+$navbar-default-link-disabled-color:       #ccc !default;
+$navbar-default-link-disabled-bg:          transparent !default;
+
+// Navbar brand label
+$navbar-default-brand-color:               #fff !default;
+$navbar-default-brand-hover-color:         #fff !default;
+$navbar-default-brand-hover-bg:            transparent !default;
+
+// Navbar toggle
+$navbar-default-toggle-hover-bg:           $navbar-default-link-active-bg !default;
+$navbar-default-toggle-icon-bar-bg:        $navbar-default-link-color !default;
+$navbar-default-toggle-border-color:       transparent !default;
+
+
+//=== Inverted navbar
+// Reset inverted navbar basics
+$navbar-inverse-color:                      $gray-light !default;
+$navbar-inverse-bg:                         $brand-success !default;
+$navbar-inverse-border:                     $brand-success !default;
+
+// Inverted navbar links
+$navbar-inverse-link-color:                 darken($brand-success, 15%) !default;
+$navbar-inverse-link-hover-color:           #fff !default;
+$navbar-inverse-link-hover-bg:              transparent !default;
+$navbar-inverse-link-active-color:          $navbar-inverse-link-hover-color !default;
+$navbar-inverse-link-active-bg:             darken($navbar-inverse-bg, 4%) !default;
+$navbar-inverse-link-disabled-color:        #444 !default;
+$navbar-inverse-link-disabled-bg:           transparent !default;
+
+// Inverted navbar brand label
+$navbar-inverse-brand-color:                #fff !default;
+$navbar-inverse-brand-hover-color:          #fff !default;
+$navbar-inverse-brand-hover-bg:             transparent !default;
+
+// Inverted navbar toggle
+$navbar-inverse-toggle-hover-bg:            $navbar-inverse-link-active-bg !default;
+$navbar-inverse-toggle-icon-bar-bg:         $navbar-inverse-link-color !default;
+$navbar-inverse-toggle-border-color:        transparent !default;
+
+
+//== Navs
+//
+//##
+
+//=== Shared nav styles
+$nav-link-padding:                          10px 15px !default;
+$nav-link-hover-bg:                         $gray-lighter !default;
+
+$nav-disabled-link-color:                   $gray-light !default;
+$nav-disabled-link-hover-color:             $gray-light !default;
+
+//== Tabs
+$nav-tabs-border-color:                     $gray-light !default;
+
+$nav-tabs-link-hover-border-color:          $gray-light !default;
+
+$nav-tabs-active-link-hover-bg:             $body-bg !default;
+$nav-tabs-active-link-hover-color:          $gray !default;
+$nav-tabs-active-link-hover-border-color:   $gray-light !default;
+
+$nav-tabs-justified-link-border-color:            $gray-light !default;
+$nav-tabs-justified-active-link-border-color:     $body-bg !default;
+
+//== Pills
+$nav-pills-border-radius:                   $border-radius-base !default;
+$nav-pills-active-link-hover-bg:            $component-active-bg !default;
+$nav-pills-active-link-hover-color:         $component-active-color !default;
+
+
+//== Pagination
+//
+//##
+
+$pagination-color:                     $gray !default;
+$pagination-bg:                        $gray-lighter !default;
+$pagination-border:                    $gray-light !default;
+
+$pagination-hover-color:               $gray-dark !default;
+$pagination-hover-bg:                  $gray-light !default;
+$pagination-hover-border:              $pagination-border !default;
+
+$pagination-active-color:              $gray-dark !default;
+$pagination-active-bg:                 $gray-light !default;
+$pagination-active-border:             $gray-light !default;
+
+$pagination-disabled-color:            $gray-light !default;
+$pagination-disabled-bg:               $gray-lighter !default;
+$pagination-disabled-border:           $gray-light !default;
+
+
+//== Pager
+//
+//##
+
+$pager-bg:                             $pagination-bg !default;
+$pager-border:                         $pagination-border !default;
+$pager-border-radius:                  15px !default;
+
+$pager-hover-bg:                       $pagination-hover-bg !default;
+
+$pager-active-bg:                      $pagination-active-bg !default;
+$pager-active-color:                   $pagination-active-color !default;
+
+$pager-disabled-color:                 $pagination-disabled-color !default;
+
+
+//== Jumbotron
+//
+//##
+
+$jumbotron-padding:              30px !default;
+$jumbotron-color:                inherit !default;
+$jumbotron-bg:                   $gray-lighter !default;
+$jumbotron-heading-color:        inherit !default;
+$jumbotron-font-size:            ceil(($font-size-base * 1.5)) !default;
+$jumbotron-heading-font-size:    ceil(($font-size-base * 4.5)) !default;
+
+
+//== Form states and alerts
+//
+//## Define colors for form feedback states and, by default, alerts.
+
+$state-success-text:             $brand-success !default;
+$state-success-bg:               #dff0d8 !default;
+$state-success-border:           darken(adjust-hue($state-success-bg, -10), 5%) !default;
+
+$state-info-text:                $brand-info !default;
+$state-info-bg:                  #d9edf7 !default;
+$state-info-border:              darken(adjust-hue($state-info-bg, -10), 7%) !default;
+
+$state-warning-text:             $brand-warning !default;
+$state-warning-bg:               #fcf8e3 !default;
+$state-warning-border:           darken(adjust-hue($state-warning-bg, -10), 5%) !default;
+
+$state-danger-text:              $brand-danger !default;
+$state-danger-bg:                #f2dede !default;
+$state-danger-border:            darken(adjust-hue($state-danger-bg, -10), 5%) !default;
+
+
+//== Tooltips
+//
+//##
+
+//** Tooltip max width
+$tooltip-max-width:           200px !default;
+//** Tooltip text color
+$tooltip-color:               #fff !default;
+//** Tooltip background color
+$tooltip-bg:                  $navbar-default-bg !default;
+$tooltip-opacity:             1 !default;
+
+//** Tooltip arrow width
+$tooltip-arrow-width:         5px !default;
+//** Tooltip arrow color
+$tooltip-arrow-color:         $tooltip-bg !default;
+
+
+//== Popovers
+//
+//##
+
+//** Popover body background color
+$popover-bg:                          #fff !default;
+//** Popover maximum width
+$popover-max-width:                   276px !default;
+//** Popover border color
+$popover-border-color:                $gray-light !default;
+//** Popover fallback border color
+$popover-fallback-border-color:       $gray-light !default;
+
+//** Popover title background color
+$popover-title-bg:                    $gray-lighter !default;
+
+//** Popover arrow width
+$popover-arrow-width:                 10px !default;
+//** Popover arrow color
+$popover-arrow-color:                 $popover-bg !default;
+
+//** Popover outer arrow width
+$popover-arrow-outer-width:           ($popover-arrow-width + 1) !default;
+//** Popover outer arrow color
+$popover-arrow-outer-color:           fadein($popover-border-color, 5%) !default;
+//** Popover outer arrow fallback color
+$popover-arrow-outer-fallback-color:  darken($popover-fallback-border-color, 20%) !default;
+
+
+//== Labels
+//
+//##
+
+//** Default label background color
+$label-default-bg:            $navbar-default-bg !default;
+//** Primary label background color
+$label-primary-bg:            $brand-primary !default;
+//** Success label background color
+$label-success-bg:            $brand-success !default;
+//** Info label background color
+$label-info-bg:               $brand-info !default;
+//** Warning label background color
+$label-warning-bg:            $brand-warning !default;
+//** Danger label background color
+$label-danger-bg:             $brand-danger !default;
+
+//** Default label text color
+$label-color:                 #fff !default;
+//** Default text color of a linked label
+$label-link-hover-color:      #fff !default;
+
+
+//== Modals
+//
+//##
+
+//** Padding applied to the modal body
+$modal-inner-padding:         15px !default;
+
+//** Padding applied to the modal title
+$modal-title-padding:         15px !default;
+//** Modal title line-height
+$modal-title-line-height:     $line-height-base !default;
+
+//** Background color of modal content area
+$modal-content-bg:                             #fff !default;
+//** Modal content border color
+$modal-content-border-color:                   $gray-lighter !default;
+//** Modal content border color **for IE8**
+$modal-content-fallback-border-color:          $gray-lighter !default;
+
+//** Modal backdrop background color
+$modal-backdrop-bg:           #000 !default;
+//** Modal backdrop opacity
+$modal-backdrop-opacity:      .5 !default;
+//** Modal header border color
+$modal-header-border-color:   $gray-lighter !default;
+//** Modal footer border color
+$modal-footer-border-color:   $modal-header-border-color !default;
+
+$modal-lg:                    900px !default;
+$modal-md:                    600px !default;
+$modal-sm:                    300px !default;
+
+
+//== Alerts
+//
+//## Define alert colors, border radius, and padding.
+
+$alert-padding:               15px !default;
+$alert-border-radius:         $border-radius-base !default;
+$alert-link-font-weight:      bold !default;
+
+$alert-success-bg:            $brand-success !default;
+$alert-success-text:          #fff !default;
+$alert-success-border:        transparent !default;
+
+$alert-info-bg:               $brand-info !default;
+$alert-info-text:             #fff !default;
+$alert-info-border:           transparent !default;
+
+$alert-warning-bg:            $brand-warning !default;
+$alert-warning-text:          #fff !default;
+$alert-warning-border:        transparent !default;
+
+$alert-danger-bg:             $brand-danger !default;
+$alert-danger-text:           #fff !default;
+$alert-danger-border:         transparent !default;
+
+
+//== Progress bars
+//
+//##
+
+//** Background color of the whole progress component
+$progress-bg:                 #f5f5f5 !default;
+//** Progress bar text color
+$progress-bar-color:          #fff !default;
+//** Variable for setting rounded corners on progress bar.
+$progress-border-radius:      $border-radius-base !default;
+
+//** Default progress bar color
+$progress-bar-bg:             $brand-primary !default;
+//** Success progress bar color
+$progress-bar-success-bg:     $brand-success !default;
+//** Warning progress bar color
+$progress-bar-warning-bg:     $brand-warning !default;
+//** Danger progress bar color
+$progress-bar-danger-bg:      $brand-danger !default;
+//** Info progress bar color
+$progress-bar-info-bg:        $brand-info !default;
+
+
+//== List group
+//
+//##
+
+//** Background color on `.list-group-item`
+$list-group-bg:                 #fff !default;
+//** `.list-group-item` border color
+$list-group-border:             $gray-light !default;
+//** List group border radius
+$list-group-border-radius:      $border-radius-base !default;
+
+//** Background color of single list items on hover
+$list-group-hover-bg:           $gray-lighter !default;
+//** Text color of active list items
+$list-group-active-color:       $text-color !default;
+//** Background color of active list items
+$list-group-active-bg:          $component-active-bg !default;
+//** Border color of active list elements
+$list-group-active-border:      $list-group-border !default;
+//** Text color for content within active list items
+$list-group-active-text-color:  $text-color !default;
+
+//** Text color of disabled list items
+$list-group-disabled-color:      $gray-light !default;
+//** Background color of disabled list items
+$list-group-disabled-bg:         $gray-lighter !default;
+//** Text color for content within disabled list items
+$list-group-disabled-text-color: $list-group-disabled-color !default;
+
+$list-group-link-color:         $text-color !default;
+$list-group-link-hover-color:   $list-group-link-color !default;
+$list-group-link-heading-color: $headings-color !default;
+
+
+//== Panels
+//
+//##
+
+$panel-bg:                    #fff !default;
+$panel-body-padding:          15px !default;
+$panel-heading-padding:       10px 15px !default;
+$panel-footer-padding:        $panel-heading-padding !default;
+$panel-border-radius:         $border-radius-base !default;
+
+//** Border color for elements within panels
+$panel-inner-border:          $gray-light !default;
+$panel-footer-bg:             $gray-lighter !default;
+
+$panel-default-text:          $text-color !default;
+$panel-default-border:        $gray-light !default;
+$panel-default-heading-bg:    $gray-lighter !default;
+
+$panel-primary-text:          #fff !default;
+$panel-primary-border:        $brand-primary !default;
+$panel-primary-heading-bg:    $brand-primary !default;
+
+$panel-success-text:          $state-success-text !default;
+$panel-success-border:        $state-success-border !default;
+$panel-success-heading-bg:    $brand-success !default;
+
+$panel-info-text:             $state-info-text !default;
+$panel-info-border:           $state-info-border !default;
+$panel-info-heading-bg:       $brand-info !default;
+
+$panel-warning-text:          $state-warning-text !default;
+$panel-warning-border:        $state-warning-border !default;
+$panel-warning-heading-bg:    $brand-warning !default;
+
+$panel-danger-text:           $state-danger-text !default;
+$panel-danger-border:         $state-danger-border !default;
+$panel-danger-heading-bg:     $brand-danger !default;
+
+
+//== Thumbnails
+//
+//##
+
+//** Padding around the thumbnail image
+$thumbnail-padding:           4px !default;
+//** Thumbnail background color
+$thumbnail-bg:                $gray-lighter !default;
+//** Thumbnail border color
+$thumbnail-border:            $gray-light !default;
+//** Thumbnail border radius
+$thumbnail-border-radius:     $border-radius-base !default;
+
+//** Custom text color for thumbnail captions
+$thumbnail-caption-color:     $text-color !default;
+//** Padding around the thumbnail caption
+$thumbnail-caption-padding:   9px !default;
+
+
+//== Wells
+//
+//##
+
+$well-bg:                     $gray-lighter !default;
+$well-border:                 transparent !default;
+
+
+//== Badges
+//
+//##
+
+$badge-color:                 #fff !default;
+//** Linked badge text color on hover
+$badge-link-hover-color:      #fff !default;
+$badge-bg:                    $brand-success !default;
+
+//** Badge text color in active nav link
+$badge-active-color:          #fff !default;
+//** Badge background color in active nav link
+$badge-active-bg:             $brand-success !default;
+
+$badge-font-weight:           normal !default;
+$badge-line-height:           1 !default;
+$badge-border-radius:         10px !default;
+
+
+//== Breadcrumbs
+//
+//##
+
+$breadcrumb-padding-vertical:   8px !default;
+$breadcrumb-padding-horizontal: 15px !default;
+//** Breadcrumb background color
+$breadcrumb-bg:                 $gray-lighter !default;
+//** Breadcrumb text color
+$breadcrumb-color:              $gray-light !default;
+//** Text color of current page in the breadcrumb
+$breadcrumb-active-color:       $gray !default;
+//** Textual separator for between breadcrumb elements
+$breadcrumb-separator:          "/" !default;
+
+
+//== Carousel
+//
+//##
+
+$carousel-text-shadow:                        0 1px 2px rgba(0,0,0,.6) !default;
+
+$carousel-control-color:                      #fff !default;
+$carousel-control-width:                      15% !default;
+$carousel-control-opacity:                    .5 !default;
+$carousel-control-font-size:                  20px !default;
+
+$carousel-indicator-active-bg:                #fff !default;
+$carousel-indicator-border-color:             #fff !default;
+
+$carousel-caption-color:                      #fff !default;
+
+
+//== Close
+//
+//##
+
+$close-font-weight:           bold !default;
+$close-color:                 #000 !default;
+$close-text-shadow:           0 0 0 transparent !default;
+
+
+//== Code
+//
+//##
+
+$code-color:                  #c7254e !default;
+$code-bg:                     #f9f2f4 !default;
+
+$kbd-color:                   #fff !default;
+$kbd-bg:                      #333 !default;
+
+$pre-bg:                      #f5f5f5 !default;
+$pre-color:                   $gray-dark !default;
+$pre-border-color:            #ccc !default;
+$pre-scrollable-max-height:   340px !default;
+
+
+//== Type
+//
+//##
+
+//** Horizontal offset for forms and lists.
+$component-offset-horizontal: 180px !default;
+//** Text muted color
+$text-muted:                  $gray !default;
+//** Abbreviations and acronyms border color
+$abbr-border-color:           $gray !default;
+//** Headings small color
+$headings-small-color:        $gray !default;
+//** Blockquote small color
+$blockquote-small-color:      $text-color !default;
+//** Blockquote font size
+$blockquote-font-size:        ($font-size-base * 1.25) !default;
+//** Blockquote border color
+$blockquote-border-color:     $gray-light !default;
+//** Page header border color
+$page-header-border-color:    $gray-lighter !default;
+//** Width of horizontal description list titles
+$dl-horizontal-offset:        $component-offset-horizontal !default;
+//** Point at which .dl-horizontal becomes horizontal
+$dl-horizontal-breakpoint:    $grid-float-breakpoint !default;
+//** Horizontal line color.
+$hr-border:                   $gray-lighter !default;
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/sandstone/_bootswatch.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/sandstone/_bootswatch.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/sandstone/_bootswatch.scss	(revision 3762)
@@ -0,0 +1,195 @@
+// Sandstone 3.4.1
+// Bootswatch
+// -----------------------------------------------------
+
+$web-font-path: "https://fonts.googleapis.com/css?family=Roboto:400,500,700" !default;
+@import url($web-font-path);
+
+// Navbar =====================================================================
+
+.sandstone {
+  font-size: 11px;
+  line-height: 22px;
+  font-weight: 500;
+  text-transform: uppercase;
+}
+
+.navbar {
+  .nav > li > a {
+    @extend .sandstone;
+  }
+
+  &-form input,
+  &-form .form-control {
+    border: none;
+  }
+}
+
+// Buttons ====================================================================
+
+.btn {
+  border: none;
+  @extend .sandstone;
+
+  &:hover {
+    border-color: transparent;
+  }
+
+  &-lg {
+    line-height: 26px;
+  }
+
+  &-default {
+    &:hover {
+      background-color: $navbar-default-link-active-bg;
+    }
+  }
+}
+
+// Typography =================================================================
+
+// Tables =====================================================================
+
+// Forms ======================================================================
+
+input,
+.form-control {
+  @include box-shadow(none);
+
+  &:focus {
+    border-color: $input-border;
+    @include box-shadow(none);
+  }
+}
+
+// Navs =======================================================================
+
+.nav {
+  @extend .sandstone;
+
+  .open > a,
+  .open > a:hover,
+  .open > a:focus {
+    border-color: $gray-light;
+  }
+}
+
+.nav-tabs {
+
+  & > li > a {
+    background-color: $gray-lighter;
+    border-color: $nav-tabs-border-color;
+    color: $gray;
+  }
+
+  > li.disabled > a:hover {
+    background-color: $gray-lighter;
+  }
+}
+
+.nav-pills {
+  a {
+    color: $gray;
+  }
+
+  li > a {
+    border: 1px solid transparent;
+  }
+
+  li.active > a,
+  li > a:hover {
+    border-color: $gray-light;
+  }
+
+  li.disabled > a {
+    border-color: transparent;
+  }
+}
+
+.breadcrumb {
+  @extend .sandstone;
+
+  border: 1px solid $gray-light;
+
+  a {
+    color: $gray;
+  }
+}
+
+.pagination {
+  @extend .sandstone;
+}
+
+.pager {
+  @extend .sandstone;
+
+  li > a {
+    color: $gray;
+  }
+}
+
+.dropdown-menu {
+  & > li > a {
+    @extend .sandstone;
+  }
+}
+
+// Indicators =================================================================
+
+.alert {
+
+  a,
+  .alert-link {
+    color: #fff;
+  }
+}
+
+.tooltip {
+  @extend .sandstone;
+}
+
+// Progress bars ==============================================================
+
+.progress {
+  border-radius: 10px;
+  background-color: $gray-light;
+  @include box-shadow(none);
+
+  &-bar {
+    @include box-shadow(none);
+  }
+}
+
+// Containers =================================================================
+
+.list-group {
+  &-item {
+    padding: 16px 24px;
+  }
+}
+
+.well {
+  @include box-shadow(none);
+}
+
+.panel {
+  @include box-shadow(none);
+
+  .panel-heading,
+  .panel-title {
+    @extend .sandstone;
+    color: #fff;
+  }
+
+  .panel-footer {
+    @extend .sandstone;
+  }
+
+  &-default {
+    .panel-heading,
+    .panel-title,
+    .panel-footer {
+      color: $gray;
+    }
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/sandstone/font.css
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/sandstone/font.css	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/sandstone/font.css	(revision 3762)
@@ -0,0 +1,18 @@
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 400;
+  src: url(fonts/KFOmCnqEu92Fr1Mu4mxM.woff) format('woff');
+}
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 500;
+  src: url(fonts/KFOlCnqEu92Fr1MmEU9fBBc-.woff) format('woff');
+}
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 700;
+  src: url(fonts/KFOlCnqEu92Fr1MmWUlfBBc-.woff) format('woff');
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/cerulean/_variables.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/cerulean/_variables.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/cerulean/_variables.scss	(revision 3762)
@@ -0,0 +1,870 @@
+$bootstrap-sass-asset-helper: false !default;
+// Cerulean 3.4.1
+// Variables
+// --------------------------------------------------
+
+
+//== Colors
+//
+//## Gray and brand colors for use across Bootstrap.
+
+$gray-base:              #000 !default;
+$gray-darker:            lighten($gray-base, 13.5%) !default; // #222
+$gray-dark:              lighten($gray-base, 20%) !default;   // #333
+$gray:                   lighten($gray-base, 33.5%) !default; // #555
+$gray-light:             lighten($gray-base, 60%) !default;   // #999
+$gray-lighter:           lighten($gray-base, 93.5%) !default; // #eee
+
+$brand-primary:         #2FA4E7 !default;
+$brand-success:         #73A839 !default;
+$brand-info:            #033C73 !default;
+$brand-warning:         #DD5600 !default;
+$brand-danger:          #C71C22 !default;
+
+
+//== Scaffolding
+//
+//## Settings for some of the most global styles.
+
+//** Background color for `<body>`.
+$body-bg:               #fff !default;
+//** Global text color on `<body>`.
+$text-color:            $gray !default;
+
+//** Global textual link color.
+$link-color:            $brand-primary !default;
+//** Link hover color set via `darken()` function.
+$link-hover-color:      darken($link-color, 15%) !default;
+//** Link hover decoration.
+$link-hover-decoration: underline !default;
+
+
+//== Typography
+//
+//## Font, line-height, and color for body text, headings, and more.
+
+$font-family-sans-serif:  "Helvetica Neue", Helvetica, Arial, sans-serif !default;
+$font-family-serif:       Georgia, "Times New Roman", Times, serif !default;
+//** Default monospace fonts for `<code>`, `<kbd>`, and `<pre>`.
+$font-family-monospace:   Menlo, Monaco, Consolas, "Courier New", monospace !default;
+$font-family-base:        $font-family-sans-serif !default;
+
+$font-size-base:          14px !default;
+$font-size-large:         ceil(($font-size-base * 1.25)) !default; // ~18px
+$font-size-small:         ceil(($font-size-base * 0.85)) !default; // ~12px
+
+$font-size-h1:            floor(($font-size-base * 2.6)) !default; // ~36px
+$font-size-h2:            floor(($font-size-base * 2.15)) !default; // ~30px
+$font-size-h3:            ceil(($font-size-base * 1.7)) !default; // ~24px
+$font-size-h4:            ceil(($font-size-base * 1.25)) !default; // ~18px
+$font-size-h5:            $font-size-base !default;
+$font-size-h6:            ceil(($font-size-base * 0.85)) !default; // ~12px
+
+//** Unit-less `line-height` for use in components like buttons.
+$line-height-base:        1.428571429 !default; // 20/14
+//** Computed "line-height" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.
+$line-height-computed:    floor(($font-size-base * $line-height-base)) !default; // ~20px
+
+//** By default, this inherits from the `<body>`.
+$headings-font-family:    $font-family-base !default;
+$headings-font-weight:    500 !default;
+$headings-line-height:    1.2 !default;
+$headings-color:          #317EAC !default;
+
+
+//== Iconography
+//
+//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.
+
+//** Load fonts from this directory.
+$icon-font-path: if($bootstrap-sass-asset-helper, "bootstrap/", "../fonts/bootstrap/") !default;
+//** File name for all font files.
+$icon-font-name:          "glyphicons-halflings-regular" !default;
+//** Element ID within SVG icon file.
+$icon-font-svg-id:        "glyphicons_halflingsregular" !default;
+
+
+//== Components
+//
+//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).
+
+$padding-base-vertical:     8px !default;
+$padding-base-horizontal:   12px !default;
+
+$padding-large-vertical:    14px !default;
+$padding-large-horizontal:  16px !default;
+
+$padding-small-vertical:    5px !default;
+$padding-small-horizontal:  10px !default;
+
+$padding-xs-vertical:       1px !default;
+$padding-xs-horizontal:     5px !default;
+
+$line-height-large:         1.3333333 !default; // extra decimals for Win 8.1 Chrome
+$line-height-small:         1.5 !default;
+
+$border-radius-base:        4px !default;
+$border-radius-large:       6px !default;
+$border-radius-small:       3px !default;
+
+//** Global color for active items (e.g., navs or dropdowns).
+$component-active-color:    #fff !default;
+//** Global background color for active items (e.g., navs or dropdowns).
+$component-active-bg:       $brand-primary !default;
+
+//** Width of the `border` for generating carets that indicate dropdowns.
+$caret-width-base:          4px !default;
+//** Carets increase slightly in size for larger components.
+$caret-width-large:         5px !default;
+
+
+//== Tables
+//
+//## Customizes the `.table` component with basic values, each used across all table variations.
+
+//** Padding for `<th>`s and `<td>`s.
+$table-cell-padding:            8px !default;
+//** Padding for cells in `.table-condensed`.
+$table-condensed-cell-padding:  5px !default;
+
+//** Default background color used for all tables.
+$table-bg:                      transparent !default;
+//** Background color used for `.table-striped`.
+$table-bg-accent:               #f9f9f9 !default;
+//** Background color used for `.table-hover`.
+$table-bg-hover:                #f5f5f5 !default;
+$table-bg-active:               $table-bg-hover !default;
+
+//** Border color for table and cell borders.
+$table-border-color:            #ddd !default;
+
+
+//== Buttons
+//
+//## For each of Bootstrap's buttons, define text, background and border color.
+
+$btn-font-weight:                normal !default;
+
+$btn-default-color:              $text-color !default;
+$btn-default-bg:                 #fff !default;
+$btn-default-border:             rgba(0, 0, 0, 0.1) !default;
+
+$btn-primary-color:              #fff !default;
+$btn-primary-bg:                 $brand-primary !default;
+$btn-primary-border:             $btn-primary-bg !default;
+
+$btn-success-color:              #fff !default;
+$btn-success-bg:                 $brand-success !default;
+$btn-success-border:             $btn-success-bg !default;
+
+$btn-info-color:                 #fff !default;
+$btn-info-bg:                    $brand-info !default;
+$btn-info-border:                $btn-info-bg !default;
+
+$btn-warning-color:              #fff !default;
+$btn-warning-bg:                 $brand-warning !default;
+$btn-warning-border:             $btn-warning-bg !default;
+
+$btn-danger-color:               #fff !default;
+$btn-danger-bg:                  $brand-danger !default;
+$btn-danger-border:              $btn-danger-bg !default;
+
+$btn-link-disabled-color:        $gray-light !default;
+
+// Allows for customizing button radius independently from global border radius
+$btn-border-radius-base:         $border-radius-base !default;
+$btn-border-radius-large:        $border-radius-large !default;
+$btn-border-radius-small:        $border-radius-small !default;
+
+
+//== Forms
+//
+//##
+
+//** `<input>` background color
+$input-bg:                       #fff !default;
+//** `<input disabled>` background color
+$input-bg-disabled:              $gray-lighter !default;
+
+//** Text color for `<input>`s
+$input-color:                    $text-color !default;
+//** `<input>` border color
+$input-border:                   #ccc !default;
+
+// TODO: Rename `$input-border-radius` to `$input-border-radius-base` in v4
+//** Default `.form-control` border radius
+// This has no effect on `<select>`s in some browsers, due to the limited stylability of `<select>`s in CSS.
+$input-border-radius:            $border-radius-base !default;
+//** Large `.form-control` border radius
+$input-border-radius-large:      $border-radius-large !default;
+//** Small `.form-control` border radius
+$input-border-radius-small:      $border-radius-small !default;
+
+//** Border color for inputs on focus
+$input-border-focus:             #66afe9 !default;
+
+//** Placeholder text color
+$input-color-placeholder:        $gray-light !default;
+
+//** Default `.form-control` height
+$input-height-base:              ($line-height-computed + ($padding-base-vertical * 2) + 2) !default;
+//** Large `.form-control` height
+$input-height-large:             (ceil($font-size-large * $line-height-large) + ($padding-large-vertical * 2) + 2) !default;
+//** Small `.form-control` height
+$input-height-small:             (floor($font-size-small * $line-height-small) + ($padding-small-vertical * 2) + 2) !default;
+
+//** `.form-group` margin
+$form-group-margin-bottom:       15px !default;
+
+$legend-color:                   $text-color !default;
+$legend-border-color:            #e5e5e5 !default;
+
+//** Background color for textual input addons
+$input-group-addon-bg:           $gray-lighter !default;
+//** Border color for textual input addons
+$input-group-addon-border-color: $input-border !default;
+
+//** Disabled cursor for form controls and buttons.
+$cursor-disabled:                not-allowed !default;
+
+
+//== Dropdowns
+//
+//## Dropdown menu container and contents.
+
+//** Background for the dropdown menu.
+$dropdown-bg:                    #fff !default;
+//** Dropdown menu `border-color`.
+$dropdown-border:                rgba(0,0,0,.15) !default;
+//** Dropdown menu `border-color` **for IE8**.
+$dropdown-fallback-border:       #ccc !default;
+//** Divider color for between dropdown items.
+$dropdown-divider-bg:            #e5e5e5 !default;
+
+//** Dropdown link text color.
+$dropdown-link-color:            $gray-dark !default;
+//** Hover color for dropdown links.
+$dropdown-link-hover-color:      #fff !default;
+//** Hover background for dropdown links.
+$dropdown-link-hover-bg:         $component-active-bg !default;
+
+//** Active dropdown menu item text color.
+$dropdown-link-active-color:     #fff !default;
+//** Active dropdown menu item background color.
+$dropdown-link-active-bg:        $component-active-bg !default;
+
+//** Disabled dropdown menu item background color.
+$dropdown-link-disabled-color:   $gray-light !default;
+
+//** Text color for headers within dropdown menus.
+$dropdown-header-color:          $gray-light !default;
+
+//** Deprecated `$dropdown-caret-color` as of v3.1.0
+$dropdown-caret-color:           #000 !default;
+
+
+//-- Z-index master list
+//
+// Warning: Avoid customizing these values. They're used for a bird's eye view
+// of components dependent on the z-axis and are designed to all work together.
+//
+// Note: These variables are not generated into the Customizer.
+
+$zindex-navbar:            1000 !default;
+$zindex-dropdown:          1000 !default;
+$zindex-popover:           1060 !default;
+$zindex-tooltip:           1070 !default;
+$zindex-navbar-fixed:      1030 !default;
+$zindex-modal-background:  1040 !default;
+$zindex-modal:             1050 !default;
+
+
+//== Media queries breakpoints
+//
+//## Define the breakpoints at which your layout will change, adapting to different screen sizes.
+
+// Extra small screen / phone
+//** Deprecated `$screen-xs` as of v3.0.1
+$screen-xs:                  480px !default;
+//** Deprecated `$screen-xs-min` as of v3.2.0
+$screen-xs-min:              $screen-xs !default;
+//** Deprecated `$screen-phone` as of v3.0.1
+$screen-phone:               $screen-xs-min !default;
+
+// Small screen / tablet
+//** Deprecated `$screen-sm` as of v3.0.1
+$screen-sm:                  768px !default;
+$screen-sm-min:              $screen-sm !default;
+//** Deprecated `$screen-tablet` as of v3.0.1
+$screen-tablet:              $screen-sm-min !default;
+
+// Medium screen / desktop
+//** Deprecated `$screen-md` as of v3.0.1
+$screen-md:                  992px !default;
+$screen-md-min:              $screen-md !default;
+//** Deprecated `$screen-desktop` as of v3.0.1
+$screen-desktop:             $screen-md-min !default;
+
+// Large screen / wide desktop
+//** Deprecated `$screen-lg` as of v3.0.1
+$screen-lg:                  1200px !default;
+$screen-lg-min:              $screen-lg !default;
+//** Deprecated `$screen-lg-desktop` as of v3.0.1
+$screen-lg-desktop:          $screen-lg-min !default;
+
+// So media queries don't overlap when required, provide a maximum
+$screen-xs-max:              ($screen-sm-min - 1) !default;
+$screen-sm-max:              ($screen-md-min - 1) !default;
+$screen-md-max:              ($screen-lg-min - 1) !default;
+
+
+//== Grid system
+//
+//## Define your custom responsive grid.
+
+//** Number of columns in the grid.
+$grid-columns:              12 !default;
+//** Padding between columns. Gets divided in half for the left and right.
+$grid-gutter-width:         30px !default;
+// Navbar collapse
+//** Point at which the navbar becomes uncollapsed.
+$grid-float-breakpoint:     $screen-sm-min !default;
+//** Point at which the navbar begins collapsing.
+$grid-float-breakpoint-max: ($grid-float-breakpoint - 1) !default;
+
+
+//== Container sizes
+//
+//## Define the maximum width of `.container` for different screen sizes.
+
+// Small screen / tablet
+$container-tablet:             (720px + $grid-gutter-width) !default;
+//** For `$screen-sm-min` and up.
+$container-sm:                 $container-tablet !default;
+
+// Medium screen / desktop
+$container-desktop:            (940px + $grid-gutter-width) !default;
+//** For `$screen-md-min` and up.
+$container-md:                 $container-desktop !default;
+
+// Large screen / wide desktop
+$container-large-desktop:      (1140px + $grid-gutter-width) !default;
+//** For `$screen-lg-min` and up.
+$container-lg:                 $container-large-desktop !default;
+
+
+//== Navbar
+//
+//##
+
+// Basics of a navbar
+$navbar-height:                    50px !default;
+$navbar-margin-bottom:             $line-height-computed !default;
+$navbar-border-radius:             $border-radius-base !default;
+$navbar-padding-horizontal:        floor(($grid-gutter-width / 2)) !default;
+$navbar-padding-vertical:          (($navbar-height - $line-height-computed) / 2) !default;
+$navbar-collapse-max-height:       340px !default;
+
+$navbar-default-color:             #ddd !default;
+$navbar-default-bg:                $brand-primary !default;
+$navbar-default-border:            darken($navbar-default-bg, 6.5%) !default;
+
+// Navbar links
+$navbar-default-link-color:                #fff !default;
+$navbar-default-link-hover-color:          #fff !default;
+$navbar-default-link-hover-bg:             darken($navbar-default-bg, 10%) !default;
+$navbar-default-link-active-color:         #fff !default;
+$navbar-default-link-active-bg:            darken($navbar-default-bg, 10%) !default;
+$navbar-default-link-disabled-color:       #ddd !default;
+$navbar-default-link-disabled-bg:          transparent !default;
+
+// Navbar brand label
+$navbar-default-brand-color:               $navbar-default-link-color !default;
+$navbar-default-brand-hover-color:         #fff !default;
+$navbar-default-brand-hover-bg:            none !default;
+
+// Navbar toggle
+$navbar-default-toggle-hover-bg:           darken($navbar-default-bg, 10%) !default;
+$navbar-default-toggle-icon-bar-bg:        #fff !default;
+$navbar-default-toggle-border-color:       darken($navbar-default-bg, 10%) !default;
+
+
+//=== Inverted navbar
+// Reset inverted navbar basics
+$navbar-inverse-color:                      #fff !default;
+$navbar-inverse-bg:                         $brand-info !default;
+$navbar-inverse-border:                     darken($navbar-inverse-bg, 5%) !default;
+
+// Inverted navbar links
+$navbar-inverse-link-color:                 #fff !default;
+$navbar-inverse-link-hover-color:           #fff !default;
+$navbar-inverse-link-hover-bg:              darken($navbar-inverse-bg, 5%) !default;
+$navbar-inverse-link-active-color:          #fff !default;
+$navbar-inverse-link-active-bg:             darken($navbar-inverse-bg, 5%) !default;
+$navbar-inverse-link-disabled-color:        #ccc !default;
+$navbar-inverse-link-disabled-bg:           transparent !default;
+
+// Inverted navbar brand label
+$navbar-inverse-brand-color:                $navbar-inverse-link-color !default;
+$navbar-inverse-brand-hover-color:          #fff !default;
+$navbar-inverse-brand-hover-bg:             none !default;
+
+// Inverted navbar toggle
+$navbar-inverse-toggle-hover-bg:            darken($navbar-inverse-bg, 5%) !default;
+$navbar-inverse-toggle-icon-bar-bg:         #fff !default;
+$navbar-inverse-toggle-border-color:        darken($navbar-inverse-bg, 5%) !default;
+
+
+//== Navs
+//
+//##
+
+//=== Shared nav styles
+$nav-link-padding:                          10px 15px !default;
+$nav-link-hover-bg:                         $gray-lighter !default;
+
+$nav-disabled-link-color:                   $gray-light !default;
+$nav-disabled-link-hover-color:             $gray-light !default;
+
+//== Tabs
+$nav-tabs-border-color:                     #ddd !default;
+
+$nav-tabs-link-hover-border-color:          $gray-lighter !default;
+
+$nav-tabs-active-link-hover-bg:             $body-bg !default;
+$nav-tabs-active-link-hover-color:          $gray !default;
+$nav-tabs-active-link-hover-border-color:   #ddd !default;
+
+$nav-tabs-justified-link-border-color:            #ddd !default;
+$nav-tabs-justified-active-link-border-color:     $body-bg !default;
+
+//== Pills
+$nav-pills-border-radius:                   $border-radius-base !default;
+$nav-pills-active-link-hover-bg:            $component-active-bg !default;
+$nav-pills-active-link-hover-color:         $component-active-color !default;
+
+
+//== Pagination
+//
+//##
+
+$pagination-color:                     $link-color !default;
+$pagination-bg:                        #fff !default;
+$pagination-border:                    #ddd !default;
+
+$pagination-hover-color:               $link-hover-color !default;
+$pagination-hover-bg:                  $gray-lighter !default;
+$pagination-hover-border:              #ddd !default;
+
+$pagination-active-color:              $gray-light !default;
+$pagination-active-bg:                 #f5f5f5 !default;
+$pagination-active-border:             $pagination-hover-border !default;
+
+$pagination-disabled-color:            $gray-light !default;
+$pagination-disabled-bg:               #fff !default;
+$pagination-disabled-border:           #ddd !default;
+
+
+//== Pager
+//
+//##
+
+$pager-bg:                             $pagination-bg !default;
+$pager-border:                         $pagination-border !default;
+$pager-border-radius:                  15px !default;
+
+$pager-hover-bg:                       $pagination-hover-bg !default;
+
+$pager-active-bg:                      $pagination-active-bg !default;
+$pager-active-color:                   $pagination-active-color !default;
+
+$pager-disabled-color:                 $gray-light !default;
+
+
+//== Jumbotron
+//
+//##
+
+$jumbotron-padding:              30px !default;
+$jumbotron-color:                inherit !default;
+$jumbotron-bg:                   $gray-lighter !default;
+$jumbotron-heading-color:        inherit !default;
+$jumbotron-font-size:            ceil(($font-size-base * 1.5)) !default;
+$jumbotron-heading-font-size:    ceil(($font-size-base * 4.5)) !default;
+
+
+//== Form states and alerts
+//
+//## Define colors for form feedback states and, by default, alerts.
+
+$state-success-text:             #468847 !default;
+$state-success-bg:               #dff0d8 !default;
+$state-success-border:           darken(adjust-hue($state-success-bg, -10), 5%) !default;
+
+$state-info-text:                #3a87ad !default;
+$state-info-bg:                  #d9edf7 !default;
+$state-info-border:              darken(adjust-hue($state-info-bg, -10), 7%) !default;
+
+$state-warning-text:             #c09853 !default;
+$state-warning-bg:               #fcf8e3 !default;
+$state-warning-border:           darken(adjust-hue($state-warning-bg, -10), 3%) !default;
+
+$state-danger-text:              #b94a48 !default;
+$state-danger-bg:                #f2dede !default;
+$state-danger-border:            darken(adjust-hue($state-danger-bg, -10), 3%) !default;
+
+
+//== Tooltips
+//
+//##
+
+//** Tooltip max width
+$tooltip-max-width:           200px !default;
+//** Tooltip text color
+$tooltip-color:               #fff !default;
+//** Tooltip background color
+$tooltip-bg:                  #000 !default;
+$tooltip-opacity:             .9 !default;
+
+//** Tooltip arrow width
+$tooltip-arrow-width:         5px !default;
+//** Tooltip arrow color
+$tooltip-arrow-color:         $tooltip-bg !default;
+
+
+//== Popovers
+//
+//##
+
+//** Popover body background color
+$popover-bg:                          #fff !default;
+//** Popover maximum width
+$popover-max-width:                   276px !default;
+//** Popover border color
+$popover-border-color:                rgba(0,0,0,.2) !default;
+//** Popover fallback border color
+$popover-fallback-border-color:       #ccc !default;
+
+//** Popover title background color
+$popover-title-bg:                    darken($popover-bg, 3%) !default;
+
+//** Popover arrow width
+$popover-arrow-width:                 10px !default;
+//** Popover arrow color
+$popover-arrow-color:                 $popover-bg !default;
+
+//** Popover outer arrow width
+$popover-arrow-outer-width:           ($popover-arrow-width + 1) !default;
+//** Popover outer arrow color
+$popover-arrow-outer-color:           fadein($popover-border-color, 5%) !default;
+//** Popover outer arrow fallback color
+$popover-arrow-outer-fallback-color:  darken($popover-fallback-border-color, 20%) !default;
+
+
+//== Labels
+//
+//##
+
+//** Default label background color
+$label-default-bg:            $gray-light !default;
+//** Primary label background color
+$label-primary-bg:            $brand-primary !default;
+//** Success label background color
+$label-success-bg:            $brand-success !default;
+//** Info label background color
+$label-info-bg:               $brand-info !default;
+//** Warning label background color
+$label-warning-bg:            $brand-warning !default;
+//** Danger label background color
+$label-danger-bg:             $brand-danger !default;
+
+//** Default label text color
+$label-color:                 #fff !default;
+//** Default text color of a linked label
+$label-link-hover-color:      #fff !default;
+
+
+//== Modals
+//
+//##
+
+//** Padding applied to the modal body
+$modal-inner-padding:         20px !default;
+
+//** Padding applied to the modal title
+$modal-title-padding:         15px !default;
+//** Modal title line-height
+$modal-title-line-height:     $line-height-base !default;
+
+//** Background color of modal content area
+$modal-content-bg:                             #fff !default;
+//** Modal content border color
+$modal-content-border-color:                   rgba(0,0,0,.2) !default;
+//** Modal content border color **for IE8**
+$modal-content-fallback-border-color:          #999 !default;
+
+//** Modal backdrop background color
+$modal-backdrop-bg:           #000 !default;
+//** Modal backdrop opacity
+$modal-backdrop-opacity:      .5 !default;
+//** Modal header border color
+$modal-header-border-color:   #e5e5e5 !default;
+//** Modal footer border color
+$modal-footer-border-color:   $modal-header-border-color !default;
+
+$modal-lg:                    900px !default;
+$modal-md:                    600px !default;
+$modal-sm:                    300px !default;
+
+
+//== Alerts
+//
+//## Define alert colors, border radius, and padding.
+
+$alert-padding:               15px !default;
+$alert-border-radius:         $border-radius-base !default;
+$alert-link-font-weight:      bold !default;
+
+$alert-success-bg:            $state-success-bg !default;
+$alert-success-text:          $state-success-text !default;
+$alert-success-border:        $state-success-border !default;
+
+$alert-info-bg:               $state-info-bg !default;
+$alert-info-text:             $state-info-text !default;
+$alert-info-border:           $state-info-border !default;
+
+$alert-warning-bg:            $state-warning-bg !default;
+$alert-warning-text:          $state-warning-text !default;
+$alert-warning-border:        $state-warning-border !default;
+
+$alert-danger-bg:             $state-danger-bg !default;
+$alert-danger-text:           $state-danger-text !default;
+$alert-danger-border:         $state-danger-border !default;
+
+
+//== Progress bars
+//
+//##
+
+//** Background color of the whole progress component
+$progress-bg:                 #f5f5f5 !default;
+//** Progress bar text color
+$progress-bar-color:          #fff !default;
+//** Variable for setting rounded corners on progress bar.
+$progress-border-radius:      $border-radius-base !default;
+
+//** Default progress bar color
+$progress-bar-bg:             $brand-primary !default;
+//** Success progress bar color
+$progress-bar-success-bg:     $brand-success !default;
+//** Warning progress bar color
+$progress-bar-warning-bg:     $brand-warning !default;
+//** Danger progress bar color
+$progress-bar-danger-bg:      $brand-danger !default;
+//** Info progress bar color
+$progress-bar-info-bg:        $brand-info !default;
+
+
+//== List group
+//
+//##
+
+//** Background color on `.list-group-item`
+$list-group-bg:                 #fff !default;
+//** `.list-group-item` border color
+$list-group-border:             #ddd !default;
+//** List group border radius
+$list-group-border-radius:      $border-radius-base !default;
+
+//** Background color of single list items on hover
+$list-group-hover-bg:           #f5f5f5 !default;
+//** Text color of active list items
+$list-group-active-color:       $component-active-color !default;
+//** Background color of active list items
+$list-group-active-bg:          $component-active-bg !default;
+//** Border color of active list elements
+$list-group-active-border:      $list-group-active-bg !default;
+//** Text color for content within active list items
+$list-group-active-text-color:  lighten($list-group-active-bg, 40%) !default;
+
+//** Text color of disabled list items
+$list-group-disabled-color:      $gray-light !default;
+//** Background color of disabled list items
+$list-group-disabled-bg:         $gray-lighter !default;
+//** Text color for content within disabled list items
+$list-group-disabled-text-color: $list-group-disabled-color !default;
+
+$list-group-link-color:         #555 !default;
+$list-group-link-hover-color:   $list-group-link-color !default;
+$list-group-link-heading-color: #333 !default;
+
+
+//== Panels
+//
+//##
+
+$panel-bg:                    #fff !default;
+$panel-body-padding:          15px !default;
+$panel-heading-padding:       10px 15px !default;
+$panel-footer-padding:        $panel-heading-padding !default;
+$panel-border-radius:         $border-radius-base !default;
+
+//** Border color for elements within panels
+$panel-inner-border:          #ddd !default;
+$panel-footer-bg:             #f5f5f5 !default;
+
+$panel-default-text:          $text-color !default;
+$panel-default-border:        #ddd !default;
+$panel-default-heading-bg:    #f5f5f5 !default;
+
+$panel-primary-text:          #fff !default;
+$panel-primary-border:        $panel-default-border !default;
+$panel-primary-heading-bg:    $brand-primary !default;
+
+$panel-success-text:          $state-success-text !default;
+$panel-success-border:        $panel-default-border !default;
+$panel-success-heading-bg:    $brand-success !default;
+
+$panel-info-text:             $state-info-text !default;
+$panel-info-border:           $panel-default-border !default;
+$panel-info-heading-bg:       $brand-info !default;
+
+$panel-warning-text:          $state-warning-text !default;
+$panel-warning-border:        $panel-default-border !default;
+$panel-warning-heading-bg:    $brand-warning !default;
+
+$panel-danger-text:           $state-danger-text !default;
+$panel-danger-border:         $panel-default-border !default;
+$panel-danger-heading-bg:     $brand-danger !default;
+
+
+//== Thumbnails
+//
+//##
+
+//** Padding around the thumbnail image
+$thumbnail-padding:           4px !default;
+//** Thumbnail background color
+$thumbnail-bg:                $body-bg !default;
+//** Thumbnail border color
+$thumbnail-border:            #ddd !default;
+//** Thumbnail border radius
+$thumbnail-border-radius:     $border-radius-base !default;
+
+//** Custom text color for thumbnail captions
+$thumbnail-caption-color:     $text-color !default;
+//** Padding around the thumbnail caption
+$thumbnail-caption-padding:   9px !default;
+
+
+//== Wells
+//
+//##
+
+$well-bg:                     #f5f5f5 !default;
+$well-border:                 darken($well-bg, 7%) !default;
+
+
+//== Badges
+//
+//##
+
+$badge-color:                 #fff !default;
+//** Linked badge text color on hover
+$badge-link-hover-color:      #fff !default;
+$badge-bg:                    $brand-primary !default;
+
+//** Badge text color in active nav link
+$badge-active-color:          $link-color !default;
+//** Badge background color in active nav link
+$badge-active-bg:             #fff !default;
+
+$badge-font-weight:           bold !default;
+$badge-line-height:           1 !default;
+$badge-border-radius:         10px !default;
+
+
+//== Breadcrumbs
+//
+//##
+
+$breadcrumb-padding-vertical:   8px !default;
+$breadcrumb-padding-horizontal: 15px !default;
+//** Breadcrumb background color
+$breadcrumb-bg:                 #f5f5f5 !default;
+//** Breadcrumb text color
+$breadcrumb-color:              #ccc !default;
+//** Text color of current page in the breadcrumb
+$breadcrumb-active-color:       $gray-light !default;
+//** Textual separator for between breadcrumb elements
+$breadcrumb-separator:          "/" !default;
+
+
+//== Carousel
+//
+//##
+
+$carousel-text-shadow:                        0 1px 2px rgba(0,0,0,.6) !default;
+
+$carousel-control-color:                      #fff !default;
+$carousel-control-width:                      15% !default;
+$carousel-control-opacity:                    .5 !default;
+$carousel-control-font-size:                  20px !default;
+
+$carousel-indicator-active-bg:                #fff !default;
+$carousel-indicator-border-color:             #fff !default;
+
+$carousel-caption-color:                      #fff !default;
+
+
+//== Close
+//
+//##
+
+$close-font-weight:           bold !default;
+$close-color:                 #000 !default;
+$close-text-shadow:           0 1px 0 #fff !default;
+
+
+//== Code
+//
+//##
+
+$code-color:                  #c7254e !default;
+$code-bg:                     #f9f2f4 !default;
+
+$kbd-color:                   #fff !default;
+$kbd-bg:                      #333 !default;
+
+$pre-bg:                      #f5f5f5 !default;
+$pre-color:                   $gray-dark !default;
+$pre-border-color:            #ccc !default;
+$pre-scrollable-max-height:   340px !default;
+
+
+//== Type
+//
+//##
+
+//** Horizontal offset for forms and lists.
+$component-offset-horizontal: 180px !default;
+//** Text muted color
+$text-muted:                  $gray-light !default;
+//** Abbreviations and acronyms border color
+$abbr-border-color:           $gray-light !default;
+//** Headings small color
+$headings-small-color:        $gray-light !default;
+//** Blockquote small color
+$blockquote-small-color:      $gray-light !default;
+//** Blockquote font size
+$blockquote-font-size:        ($font-size-base * 1.25) !default;
+//** Blockquote border color
+$blockquote-border-color:     $gray-lighter !default;
+//** Page header border color
+$page-header-border-color:    $gray-lighter !default;
+//** Width of horizontal description list titles
+$dl-horizontal-offset:        $component-offset-horizontal !default;
+//** Point at which .dl-horizontal becomes horizontal
+$dl-horizontal-breakpoint:    $grid-float-breakpoint !default;
+//** Horizontal line color.
+$hr-border:                   $gray-lighter !default;
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/cerulean/_bootswatch.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/cerulean/_bootswatch.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/cerulean/_bootswatch.scss	(revision 3762)
@@ -0,0 +1,131 @@
+// Cerulean 3.4.1
+// Bootswatch
+// -----------------------------------------------------
+
+@mixin btn-shadow($color){
+  @include gradient-vertical-three-colors(lighten($color, 8%), $color, 60%, darken($color, 4%));
+  filter: none;
+  border-bottom: 1px solid darken($color, 10%);
+}
+
+// Navbar =====================================================================
+
+.navbar {
+  @include btn-shadow($navbar-default-bg);
+  filter: none;
+  @include box-shadow(0 1px 10px rgba(0, 0, 0, 0.1));
+
+  &-default {
+
+    .badge {
+      background-color: #fff;
+      color: $navbar-default-bg;
+    }
+  }
+
+  &-inverse {
+    @include gradient-vertical-three-colors(lighten($navbar-inverse-bg, 8%), lighten($navbar-inverse-bg, 4%), 60%, darken($navbar-inverse-bg, 2%));
+    filter: none;
+    border-bottom: 1px solid darken($navbar-inverse-bg, 10%);
+
+    .badge {
+      background-color: #fff;
+      color: $navbar-inverse-bg;
+    }
+  }
+
+  .navbar-nav > li > a,
+  &-brand {
+    text-shadow: 0 1px 0 rgba(0, 0, 0, 0.1);
+  }
+}
+
+@media (max-width: $grid-float-breakpoint-max) {
+
+  .navbar {
+
+    .dropdown-header {
+      color: #fff;
+    }
+
+    .dropdown-menu {
+      a {
+        color: #fff;
+      }
+    }
+  }
+}
+
+// Buttons ====================================================================
+
+.btn {
+
+  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.1);
+
+  .caret {
+    border-top-color: #fff;
+  }
+}
+
+.btn-default {
+  
+  @include btn-shadow($btn-default-bg);
+
+  &:hover {
+    color: $btn-default-color;
+  }
+
+  .caret {
+    border-top-color: $text-color;
+  }
+}
+
+.btn-default {
+  @include btn-shadow($btn-default-bg);
+}
+
+.btn-primary {
+  @include btn-shadow($btn-primary-bg);
+}
+
+.btn-success {
+  @include btn-shadow($btn-success-bg);
+}
+
+.btn-info {
+  @include btn-shadow($btn-info-bg);
+}
+
+.btn-warning {
+  @include btn-shadow($btn-warning-bg);
+}
+
+.btn-danger {
+  @include btn-shadow($btn-danger-bg);
+}
+
+// Typography =================================================================
+
+// Tables =====================================================================
+
+// Forms ======================================================================
+
+// Navs =======================================================================
+
+// Indicators =================================================================
+
+// Progress bars ==============================================================
+
+// Containers =================================================================
+
+.panel-primary,
+.panel-success,
+.panel-warning,
+.panel-danger,
+.panel-info {
+
+  .panel-heading,
+  .panel-title {
+    color: #fff;
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/readable/font.css
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/readable/font.css	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/readable/font.css	(revision 3762)
@@ -0,0 +1,12 @@
+@font-face {
+  font-family: 'Raleway';
+  font-style: normal;
+  font-weight: 400;
+  src: url(fonts/1Ptxg8zYS_SKggPN4iEgvnHyvveLxVvaorCIPrc.woff) format('woff');
+}
+@font-face {
+  font-family: 'Raleway';
+  font-style: normal;
+  font-weight: 700;
+  src: url(fonts/1Ptxg8zYS_SKggPN4iEgvnHyvveLxVs9pbCIPrc.woff) format('woff');
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/readable/_variables.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/readable/_variables.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/readable/_variables.scss	(revision 3762)
@@ -0,0 +1,870 @@
+$bootstrap-sass-asset-helper: false !default;
+// Readable 3.4.1
+// Variables
+// --------------------------------------------------
+
+
+//== Colors
+//
+//## Gray and brand colors for use across Bootstrap.
+
+$gray-base:              #000 !default;
+$gray-darker:            lighten($gray-base, 13.5%) !default; // #222
+$gray-dark:              lighten($gray-base, 20%) !default;   // #333
+$gray:                   lighten($gray-base, 33.5%) !default; // #555
+$gray-light:             lighten($gray-base, 70%) !default;   // #999
+$gray-lighter:           lighten($gray-base, 93.5%) !default; // #eee
+
+$brand-primary:         #4582EC !default;
+$brand-success:         #3FAD46 !default;
+$brand-info:            #5bc0de !default;
+$brand-warning:         #f0ad4e !default;
+$brand-danger:          #d9534f !default;
+
+
+//== Scaffolding
+//
+//## Settings for some of the most global styles.
+
+//** Background color for `<body>`.
+$body-bg:               #fff !default;
+//** Global text color on `<body>`.
+$text-color:            $gray-dark !default;
+
+//** Global textual link color.
+$link-color:            $brand-primary !default;
+//** Link hover color set via `darken()` function.
+$link-hover-color:      darken($link-color, 20%) !default;
+//** Link hover decoration.
+$link-hover-decoration: underline !default;
+
+
+//== Typography
+//
+//## Font, line-height, and color for body text, headings, and more.
+
+$font-family-sans-serif:  "Raleway", "Helvetica Neue", Helvetica, Arial, sans-serif !default;
+$font-family-serif:       Georgia, "Times New Roman", Times, serif !default;
+//** Default monospace fonts for `<code>`, `<kbd>`, and `<pre>`.
+$font-family-monospace:   Menlo, Monaco, Consolas, "Courier New", monospace !default;
+$font-family-base:        $font-family-serif !default;
+
+$font-size-base:          16px !default;
+$font-size-large:         ceil(($font-size-base * 1.25)) !default; // ~18px
+$font-size-small:         ceil(($font-size-base * 0.85)) !default; // ~12px
+
+$font-size-h1:            floor(($font-size-base * 2.6)) !default; // ~36px
+$font-size-h2:            floor(($font-size-base * 2.15)) !default; // ~30px
+$font-size-h3:            ceil(($font-size-base * 1.7)) !default; // ~24px
+$font-size-h4:            ceil(($font-size-base * 1.25)) !default; // ~18px
+$font-size-h5:            $font-size-base !default;
+$font-size-h6:            ceil(($font-size-base * 0.85)) !default; // ~12px
+
+//** Unit-less `line-height` for use in components like buttons.
+$line-height-base:        1.428571429 !default; // 20/14
+//** Computed "line-height" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.
+$line-height-computed:    floor(($font-size-base * $line-height-base)) !default; // ~20px
+
+//** By default, this inherits from the `<body>`.
+$headings-font-family:    $font-family-sans-serif !default;
+$headings-font-weight:    bold !default;
+$headings-line-height:    1.1 !default;
+$headings-color:          inherit !default;
+
+
+//== Iconography
+//
+//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.
+
+//** Load fonts from this directory.
+$icon-font-path: if($bootstrap-sass-asset-helper, "bootstrap/", "../fonts/bootstrap/") !default;
+//** File name for all font files.
+$icon-font-name:          "glyphicons-halflings-regular" !default;
+//** Element ID within SVG icon file.
+$icon-font-svg-id:        "glyphicons_halflingsregular" !default;
+
+
+//== Components
+//
+//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).
+
+$padding-base-vertical:     8px !default;
+$padding-base-horizontal:   12px !default;
+
+$padding-large-vertical:    14px !default;
+$padding-large-horizontal:  16px !default;
+
+$padding-small-vertical:    5px !default;
+$padding-small-horizontal:  10px !default;
+
+$padding-xs-vertical:       1px !default;
+$padding-xs-horizontal:     5px !default;
+
+$line-height-large:         1.3333333 !default; // extra decimals for Win 8.1 Chrome
+$line-height-small:         1.5 !default;
+
+$border-radius-base:        4px !default;
+$border-radius-large:       6px !default;
+$border-radius-small:       3px !default;
+
+//** Global color for active items (e.g., navs or dropdowns).
+$component-active-color:    #fff !default;
+//** Global background color for active items (e.g., navs or dropdowns).
+$component-active-bg:       $brand-primary !default;
+
+//** Width of the `border` for generating carets that indicate dropdowns.
+$caret-width-base:          4px !default;
+//** Carets increase slightly in size for larger components.
+$caret-width-large:         5px !default;
+
+
+//== Tables
+//
+//## Customizes the `.table` component with basic values, each used across all table variations.
+
+//** Padding for `<th>`s and `<td>`s.
+$table-cell-padding:            8px !default;
+//** Padding for cells in `.table-condensed`.
+$table-condensed-cell-padding:  5px !default;
+
+//** Default background color used for all tables.
+$table-bg:                      transparent !default;
+//** Background color used for `.table-striped`.
+$table-bg-accent:               #f9f9f9 !default;
+//** Background color used for `.table-hover`.
+$table-bg-hover:                #f5f5f5 !default;
+$table-bg-active:               $table-bg-hover !default;
+
+//** Border color for table and cell borders.
+$table-border-color:            #ddd !default;
+
+
+//== Buttons
+//
+//## For each of Bootstrap's buttons, define text, background and border color.
+
+$btn-font-weight:                normal !default;
+
+$btn-default-color:              $text-color !default;
+$btn-default-bg:                 #fff !default;
+$btn-default-border:             #ddd !default;
+
+$btn-primary-color:              #fff !default;
+$btn-primary-bg:                 $brand-primary !default;
+$btn-primary-border:             $btn-primary-bg !default;
+
+$btn-success-color:              #fff !default;
+$btn-success-bg:                 $brand-success !default;
+$btn-success-border:             $btn-success-bg !default;
+
+$btn-info-color:                 #fff !default;
+$btn-info-bg:                    $brand-info !default;
+$btn-info-border:                $btn-info-bg !default;
+
+$btn-warning-color:              #fff !default;
+$btn-warning-bg:                 $brand-warning !default;
+$btn-warning-border:             $btn-warning-bg !default;
+
+$btn-danger-color:               #fff !default;
+$btn-danger-bg:                  $brand-danger !default;
+$btn-danger-border:              $btn-danger-bg !default;
+
+$btn-link-disabled-color:        $gray-light !default;
+
+// Allows for customizing button radius independently from global border radius
+$btn-border-radius-base:         $border-radius-base !default;
+$btn-border-radius-large:        $border-radius-large !default;
+$btn-border-radius-small:        $border-radius-small !default;
+
+
+//== Forms
+//
+//##
+
+//** `<input>` background color
+$input-bg:                       #fff !default;
+//** `<input disabled>` background color
+$input-bg-disabled:              $gray-lighter !default;
+
+//** Text color for `<input>`s
+$input-color:                    $text-color !default;
+//** `<input>` border color
+$input-border:                   #ddd !default;
+
+// TODO: Rename `$input-border-radius` to `$input-border-radius-base` in v4
+//** Default `.form-control` border radius
+// This has no effect on `<select>`s in some browsers, due to the limited stylability of `<select>`s in CSS.
+$input-border-radius:            $border-radius-base !default;
+//** Large `.form-control` border radius
+$input-border-radius-large:      $border-radius-large !default;
+//** Small `.form-control` border radius
+$input-border-radius-small:      $border-radius-small !default;
+
+//** Border color for inputs on focus
+$input-border-focus:             #66afe9 !default;
+
+//** Placeholder text color
+$input-color-placeholder:        $gray-light !default;
+
+//** Default `.form-control` height
+$input-height-base:              ($line-height-computed + ($padding-base-vertical * 2) + 2) !default;
+//** Large `.form-control` height
+$input-height-large:             (ceil($font-size-large * $line-height-large) + ($padding-large-vertical * 2) + 2) !default;
+//** Small `.form-control` height
+$input-height-small:             (floor($font-size-small * $line-height-small) + ($padding-small-vertical * 2) + 2) !default;
+
+//** `.form-group` margin
+$form-group-margin-bottom:       15px !default;
+
+$legend-color:                   $text-color !default;
+$legend-border-color:            #e5e5e5 !default;
+
+//** Background color for textual input addons
+$input-group-addon-bg:           $gray-lighter !default;
+//** Border color for textual input addons
+$input-group-addon-border-color: $input-border !default;
+
+//** Disabled cursor for form controls and buttons.
+$cursor-disabled:                not-allowed !default;
+
+
+//== Dropdowns
+//
+//## Dropdown menu container and contents.
+
+//** Background for the dropdown menu.
+$dropdown-bg:                    #fff !default;
+//** Dropdown menu `border-color`.
+$dropdown-border:                rgba(0,0,0,.15) !default;
+//** Dropdown menu `border-color` **for IE8**.
+$dropdown-fallback-border:       #ccc !default;
+//** Divider color for between dropdown items.
+$dropdown-divider-bg:            #e5e5e5 !default;
+
+//** Dropdown link text color.
+$dropdown-link-color:            $gray-dark !default;
+//** Hover color for dropdown links.
+$dropdown-link-hover-color:      #fff !default;
+//** Hover background for dropdown links.
+$dropdown-link-hover-bg:         $component-active-bg !default;
+
+//** Active dropdown menu item text color.
+$dropdown-link-active-color:     #fff !default;
+//** Active dropdown menu item background color.
+$dropdown-link-active-bg:        $component-active-bg !default;
+
+//** Disabled dropdown menu item background color.
+$dropdown-link-disabled-color:   $gray-light !default;
+
+//** Text color for headers within dropdown menus.
+$dropdown-header-color:          $gray-light !default;
+
+//** Deprecated `$dropdown-caret-color` as of v3.1.0
+$dropdown-caret-color:           #000 !default;
+
+
+//-- Z-index master list
+//
+// Warning: Avoid customizing these values. They're used for a bird's eye view
+// of components dependent on the z-axis and are designed to all work together.
+//
+// Note: These variables are not generated into the Customizer.
+
+$zindex-navbar:            1000 !default;
+$zindex-dropdown:          1000 !default;
+$zindex-popover:           1060 !default;
+$zindex-tooltip:           1070 !default;
+$zindex-navbar-fixed:      1030 !default;
+$zindex-modal-background:  1040 !default;
+$zindex-modal:             1050 !default;
+
+
+//== Media queries breakpoints
+//
+//## Define the breakpoints at which your layout will change, adapting to different screen sizes.
+
+// Extra small screen / phone
+//** Deprecated `$screen-xs` as of v3.0.1
+$screen-xs:                  480px !default;
+//** Deprecated `$screen-xs-min` as of v3.2.0
+$screen-xs-min:              $screen-xs !default;
+//** Deprecated `$screen-phone` as of v3.0.1
+$screen-phone:               $screen-xs-min !default;
+
+// Small screen / tablet
+//** Deprecated `$screen-sm` as of v3.0.1
+$screen-sm:                  768px !default;
+$screen-sm-min:              $screen-sm !default;
+//** Deprecated `$screen-tablet` as of v3.0.1
+$screen-tablet:              $screen-sm-min !default;
+
+// Medium screen / desktop
+//** Deprecated `$screen-md` as of v3.0.1
+$screen-md:                  992px !default;
+$screen-md-min:              $screen-md !default;
+//** Deprecated `$screen-desktop` as of v3.0.1
+$screen-desktop:             $screen-md-min !default;
+
+// Large screen / wide desktop
+//** Deprecated `$screen-lg` as of v3.0.1
+$screen-lg:                  1200px !default;
+$screen-lg-min:              $screen-lg !default;
+//** Deprecated `$screen-lg-desktop` as of v3.0.1
+$screen-lg-desktop:          $screen-lg-min !default;
+
+// So media queries don't overlap when required, provide a maximum
+$screen-xs-max:              ($screen-sm-min - 1) !default;
+$screen-sm-max:              ($screen-md-min - 1) !default;
+$screen-md-max:              ($screen-lg-min - 1) !default;
+
+
+//== Grid system
+//
+//## Define your custom responsive grid.
+
+//** Number of columns in the grid.
+$grid-columns:              12 !default;
+//** Padding between columns. Gets divided in half for the left and right.
+$grid-gutter-width:         30px !default;
+// Navbar collapse
+//** Point at which the navbar becomes uncollapsed.
+$grid-float-breakpoint:     $screen-sm-min !default;
+//** Point at which the navbar begins collapsing.
+$grid-float-breakpoint-max: ($grid-float-breakpoint - 1) !default;
+
+
+//== Container sizes
+//
+//## Define the maximum width of `.container` for different screen sizes.
+
+// Small screen / tablet
+$container-tablet:             (720px + $grid-gutter-width) !default;
+//** For `$screen-sm-min` and up.
+$container-sm:                 $container-tablet !default;
+
+// Medium screen / desktop
+$container-desktop:            (940px + $grid-gutter-width) !default;
+//** For `$screen-md-min` and up.
+$container-md:                 $container-desktop !default;
+
+// Large screen / wide desktop
+$container-large-desktop:      (1140px + $grid-gutter-width) !default;
+//** For `$screen-lg-min` and up.
+$container-lg:                 $container-large-desktop !default;
+
+
+//== Navbar
+//
+//##
+
+// Basics of a navbar
+$navbar-height:                    65px !default;
+$navbar-margin-bottom:             $line-height-computed !default;
+$navbar-border-radius:             $border-radius-base !default;
+$navbar-padding-horizontal:        floor(($grid-gutter-width / 2)) !default;
+$navbar-padding-vertical:          (($navbar-height - $line-height-computed) / 2) !default;
+$navbar-collapse-max-height:       340px !default;
+
+$navbar-default-color:             $text-color !default;
+$navbar-default-bg:                $body-bg !default;
+$navbar-default-border:            #ddd !default;
+
+// Navbar links
+$navbar-default-link-color:                $link-color !default;
+$navbar-default-link-hover-color:          $link-color !default;
+$navbar-default-link-hover-bg:             transparent !default;
+$navbar-default-link-active-color:         $navbar-default-link-color !default;
+$navbar-default-link-active-bg:            transparent !default;
+$navbar-default-link-disabled-color:       #333 !default;
+$navbar-default-link-disabled-bg:          transparent !default;
+
+// Navbar brand label
+$navbar-default-brand-color:               $navbar-default-link-color !default;
+$navbar-default-brand-hover-color:         $navbar-default-link-hover-color !default;
+$navbar-default-brand-hover-bg:            transparent !default;
+
+// Navbar toggle
+$navbar-default-toggle-hover-bg:           #ddd !default;
+$navbar-default-toggle-icon-bar-bg:        #ccc !default;
+$navbar-default-toggle-border-color:       #ddd !default;
+
+
+//=== Inverted navbar
+// Reset inverted navbar basics
+$navbar-inverse-color:                      $text-color !default;
+$navbar-inverse-bg:                         $body-bg !default;
+$navbar-inverse-border:                     #ddd !default;
+
+// Inverted navbar links
+$navbar-inverse-link-color:                 $text-color !default;
+$navbar-inverse-link-hover-color:           $text-color !default;
+$navbar-inverse-link-hover-bg:              transparent !default;
+$navbar-inverse-link-active-color:          $text-color !default;
+$navbar-inverse-link-active-bg:             transparent !default;
+$navbar-inverse-link-disabled-color:        #ccc !default;
+$navbar-inverse-link-disabled-bg:           transparent !default;
+
+// Inverted navbar brand label
+$navbar-inverse-brand-color:                $navbar-inverse-link-color !default;
+$navbar-inverse-brand-hover-color:          $navbar-inverse-link-hover-color !default;
+$navbar-inverse-brand-hover-bg:             transparent !default;
+
+// Inverted navbar toggle
+$navbar-inverse-toggle-hover-bg:            #ddd !default;
+$navbar-inverse-toggle-icon-bar-bg:         #ccc !default;
+$navbar-inverse-toggle-border-color:        #ddd !default;
+
+
+//== Navs
+//
+//##
+
+//=== Shared nav styles
+$nav-link-padding:                          10px 15px !default;
+$nav-link-hover-bg:                         $gray-lighter !default;
+
+$nav-disabled-link-color:                   $gray-light !default;
+$nav-disabled-link-hover-color:             $gray-light !default;
+
+//== Tabs
+$nav-tabs-border-color:                     #ddd !default;
+
+$nav-tabs-link-hover-border-color:          $gray-lighter !default;
+
+$nav-tabs-active-link-hover-bg:             $body-bg !default;
+$nav-tabs-active-link-hover-color:          $gray !default;
+$nav-tabs-active-link-hover-border-color:   #ddd !default;
+
+$nav-tabs-justified-link-border-color:            #ddd !default;
+$nav-tabs-justified-active-link-border-color:     $body-bg !default;
+
+//== Pills
+$nav-pills-border-radius:                   $border-radius-base !default;
+$nav-pills-active-link-hover-bg:            $component-active-bg !default;
+$nav-pills-active-link-hover-color:         $component-active-color !default;
+
+
+//== Pagination
+//
+//##
+
+$pagination-color:                     $text-color !default;
+$pagination-bg:                        #fff !default;
+$pagination-border:                    #ddd !default;
+
+$pagination-hover-color:               #fff !default;
+$pagination-hover-bg:                  $brand-primary !default;
+$pagination-hover-border:              $brand-primary !default;
+
+$pagination-active-color:              #fff !default;
+$pagination-active-bg:                 $brand-primary !default;
+$pagination-active-border:             $brand-primary !default;
+
+$pagination-disabled-color:            $gray-light !default;
+$pagination-disabled-bg:               #fff !default;
+$pagination-disabled-border:           #ddd !default;
+
+
+//== Pager
+//
+//##
+
+$pager-bg:                             $pagination-bg !default;
+$pager-border:                         $pagination-border !default;
+$pager-border-radius:                  15px !default;
+
+$pager-hover-bg:                       $pagination-hover-bg !default;
+
+$pager-active-bg:                      $pagination-active-bg !default;
+$pager-active-color:                   $pagination-active-color !default;
+
+$pager-disabled-color:                 $gray-light !default;
+
+
+//== Jumbotron
+//
+//##
+
+$jumbotron-padding:              30px !default;
+$jumbotron-color:                inherit !default;
+$jumbotron-bg:                   darken($body-bg, 3%) !default;
+$jumbotron-heading-color:        inherit !default;
+$jumbotron-font-size:            ceil(($font-size-base * 1.5)) !default;
+$jumbotron-heading-font-size:    ceil(($font-size-base * 4.5)) !default;
+
+
+//== Form states and alerts
+//
+//## Define colors for form feedback states and, by default, alerts.
+
+$state-success-text:             $brand-success !default;
+$state-success-bg:               #dff0d8 !default;
+$state-success-border:           $brand-success !default;
+
+$state-info-text:                $brand-info !default;
+$state-info-bg:                  #d9edf7 !default;
+$state-info-border:              $brand-info !default;
+
+$state-warning-text:             $brand-warning !default;
+$state-warning-bg:               #fcf8e3 !default;
+$state-warning-border:           $brand-warning !default;
+
+$state-danger-text:              $brand-danger !default;
+$state-danger-bg:                #f2dede !default;
+$state-danger-border:            $brand-danger !default;
+
+
+//== Tooltips
+//
+//##
+
+//** Tooltip max width
+$tooltip-max-width:           200px !default;
+//** Tooltip text color
+$tooltip-color:               #fff !default;
+//** Tooltip background color
+$tooltip-bg:                  #000 !default;
+$tooltip-opacity:             .9 !default;
+
+//** Tooltip arrow width
+$tooltip-arrow-width:         5px !default;
+//** Tooltip arrow color
+$tooltip-arrow-color:         $tooltip-bg !default;
+
+
+//== Popovers
+//
+//##
+
+//** Popover body background color
+$popover-bg:                          #fff !default;
+//** Popover maximum width
+$popover-max-width:                   276px !default;
+//** Popover border color
+$popover-border-color:                rgba(0,0,0,.2) !default;
+//** Popover fallback border color
+$popover-fallback-border-color:       #ccc !default;
+
+//** Popover title background color
+$popover-title-bg:                    darken($popover-bg, 3%) !default;
+
+//** Popover arrow width
+$popover-arrow-width:                 10px !default;
+//** Popover arrow color
+$popover-arrow-color:                 $popover-bg !default;
+
+//** Popover outer arrow width
+$popover-arrow-outer-width:           ($popover-arrow-width + 1) !default;
+//** Popover outer arrow color
+$popover-arrow-outer-color:           fadein($popover-border-color, 5%) !default;
+//** Popover outer arrow fallback color
+$popover-arrow-outer-fallback-color:  darken($popover-fallback-border-color, 20%) !default;
+
+
+//== Labels
+//
+//##
+
+//** Default label background color
+$label-default-bg:            $btn-default-bg !default;
+//** Primary label background color
+$label-primary-bg:            $brand-primary !default;
+//** Success label background color
+$label-success-bg:            $brand-success !default;
+//** Info label background color
+$label-info-bg:               $brand-info !default;
+//** Warning label background color
+$label-warning-bg:            $brand-warning !default;
+//** Danger label background color
+$label-danger-bg:             $brand-danger !default;
+
+//** Default label text color
+$label-color:                 #fff !default;
+//** Default text color of a linked label
+$label-link-hover-color:      #fff !default;
+
+
+//== Modals
+//
+//##
+
+//** Padding applied to the modal body
+$modal-inner-padding:         20px !default;
+
+//** Padding applied to the modal title
+$modal-title-padding:         15px !default;
+//** Modal title line-height
+$modal-title-line-height:     $line-height-base !default;
+
+//** Background color of modal content area
+$modal-content-bg:                             #fff !default;
+//** Modal content border color
+$modal-content-border-color:                   rgba(0,0,0,.2) !default;
+//** Modal content border color **for IE8**
+$modal-content-fallback-border-color:          #999 !default;
+
+//** Modal backdrop background color
+$modal-backdrop-bg:           #000 !default;
+//** Modal backdrop opacity
+$modal-backdrop-opacity:      .5 !default;
+//** Modal header border color
+$modal-header-border-color:   #e5e5e5 !default;
+//** Modal footer border color
+$modal-footer-border-color:   $modal-header-border-color !default;
+
+$modal-lg:                    900px !default;
+$modal-md:                    600px !default;
+$modal-sm:                    300px !default;
+
+
+//== Alerts
+//
+//## Define alert colors, border radius, and padding.
+
+$alert-padding:               15px !default;
+$alert-border-radius:         $border-radius-base !default;
+$alert-link-font-weight:      bold !default;
+
+$alert-success-bg:            $state-success-border !default;
+$alert-success-text:          #fff !default;
+$alert-success-border:        $state-success-border !default;
+
+$alert-info-bg:               $state-info-border !default;
+$alert-info-text:             #fff !default;
+$alert-info-border:           $state-info-border !default;
+
+$alert-warning-bg:            $state-warning-border !default;
+$alert-warning-text:          #fff !default;
+$alert-warning-border:        $state-warning-border !default;
+
+$alert-danger-bg:             $state-danger-border !default;
+$alert-danger-text:           #fff !default;
+$alert-danger-border:         $state-danger-border !default;
+
+
+//== Progress bars
+//
+//##
+
+//** Background color of the whole progress component
+$progress-bg:                 #f5f5f5 !default;
+//** Progress bar text color
+$progress-bar-color:          #fff !default;
+//** Variable for setting rounded corners on progress bar.
+$progress-border-radius:      $border-radius-base !default;
+
+//** Default progress bar color
+$progress-bar-bg:             $brand-primary !default;
+//** Success progress bar color
+$progress-bar-success-bg:     $brand-success !default;
+//** Warning progress bar color
+$progress-bar-warning-bg:     $brand-warning !default;
+//** Danger progress bar color
+$progress-bar-danger-bg:      $brand-danger !default;
+//** Info progress bar color
+$progress-bar-info-bg:        $brand-info !default;
+
+
+//== List group
+//
+//##
+
+//** Background color on `.list-group-item`
+$list-group-bg:                 #fff !default;
+//** `.list-group-item` border color
+$list-group-border:             #ddd !default;
+//** List group border radius
+$list-group-border-radius:      $border-radius-base !default;
+
+//** Background color of single list items on hover
+$list-group-hover-bg:           #f5f5f5 !default;
+//** Text color of active list items
+$list-group-active-color:       $component-active-color !default;
+//** Background color of active list items
+$list-group-active-bg:          $component-active-bg !default;
+//** Border color of active list elements
+$list-group-active-border:      $list-group-active-bg !default;
+//** Text color for content within active list items
+$list-group-active-text-color:  lighten($list-group-active-bg, 40%) !default;
+
+//** Text color of disabled list items
+$list-group-disabled-color:      $gray-light !default;
+//** Background color of disabled list items
+$list-group-disabled-bg:         $gray-lighter !default;
+//** Text color for content within disabled list items
+$list-group-disabled-text-color: $list-group-disabled-color !default;
+
+$list-group-link-color:         #555 !default;
+$list-group-link-hover-color:   $list-group-link-color !default;
+$list-group-link-heading-color: #333 !default;
+
+
+//== Panels
+//
+//##
+
+$panel-bg:                    #fff !default;
+$panel-body-padding:          15px !default;
+$panel-heading-padding:       10px 15px !default;
+$panel-footer-padding:        $panel-heading-padding !default;
+$panel-border-radius:         $border-radius-base !default;
+
+//** Border color for elements within panels
+$panel-inner-border:          #ddd !default;
+$panel-footer-bg:             #fff !default;
+
+$panel-default-text:          $gray-dark !default;
+$panel-default-border:        #ddd !default;
+$panel-default-heading-bg:    #f5f5f5 !default;
+
+$panel-primary-text:          #fff !default;
+$panel-primary-border:        $brand-primary !default;
+$panel-primary-heading-bg:    $brand-primary !default;
+
+$panel-success-text:          #fff !default;
+$panel-success-border:        $state-success-border !default;
+$panel-success-heading-bg:    $state-success-border !default;
+
+$panel-info-text:             #fff !default;
+$panel-info-border:           $state-info-border !default;
+$panel-info-heading-bg:       $state-info-border !default;
+
+$panel-warning-text:          #fff !default;
+$panel-warning-border:        $state-warning-border !default;
+$panel-warning-heading-bg:    $state-warning-border !default;
+
+$panel-danger-text:           #fff !default;
+$panel-danger-border:         $state-danger-border !default;
+$panel-danger-heading-bg:     $state-danger-border !default;
+
+
+//== Thumbnails
+//
+//##
+
+//** Padding around the thumbnail image
+$thumbnail-padding:           4px !default;
+//** Thumbnail background color
+$thumbnail-bg:                $body-bg !default;
+//** Thumbnail border color
+$thumbnail-border:            #ddd !default;
+//** Thumbnail border radius
+$thumbnail-border-radius:     $border-radius-base !default;
+
+//** Custom text color for thumbnail captions
+$thumbnail-caption-color:     $text-color !default;
+//** Padding around the thumbnail caption
+$thumbnail-caption-padding:   9px !default;
+
+
+//== Wells
+//
+//##
+
+$well-bg:                     darken($body-bg, 3%) !default;
+$well-border:                 darken($well-bg, 7%) !default;
+
+
+//== Badges
+//
+//##
+
+$badge-color:                 #fff !default;
+//** Linked badge text color on hover
+$badge-link-hover-color:      #fff !default;
+$badge-bg:                    $brand-primary !default;
+
+//** Badge text color in active nav link
+$badge-active-color:          $link-color !default;
+//** Badge background color in active nav link
+$badge-active-bg:             #fff !default;
+
+$badge-font-weight:           bold !default;
+$badge-line-height:           1 !default;
+$badge-border-radius:         10px !default;
+
+
+//== Breadcrumbs
+//
+//##
+
+$breadcrumb-padding-vertical:   8px !default;
+$breadcrumb-padding-horizontal: 15px !default;
+//** Breadcrumb background color
+$breadcrumb-bg:                 #f5f5f5 !default;
+//** Breadcrumb text color
+$breadcrumb-color:              #ccc !default;
+//** Text color of current page in the breadcrumb
+$breadcrumb-active-color:       $gray-light !default;
+//** Textual separator for between breadcrumb elements
+$breadcrumb-separator:          "/" !default;
+
+
+//== Carousel
+//
+//##
+
+$carousel-text-shadow:                        0 1px 2px rgba(0,0,0,.6) !default;
+
+$carousel-control-color:                      #fff !default;
+$carousel-control-width:                      15% !default;
+$carousel-control-opacity:                    .5 !default;
+$carousel-control-font-size:                  20px !default;
+
+$carousel-indicator-active-bg:                #fff !default;
+$carousel-indicator-border-color:             #fff !default;
+
+$carousel-caption-color:                      #fff !default;
+
+
+//== Close
+//
+//##
+
+$close-font-weight:           bold !default;
+$close-color:                 #fff !default;
+$close-text-shadow:           0 1px 0 #fff !default;
+
+
+//== Code
+//
+//##
+
+$code-color:                  #c7254e !default;
+$code-bg:                     #f9f2f4 !default;
+
+$kbd-color:                   #fff !default;
+$kbd-bg:                      #333 !default;
+
+$pre-bg:                      #f5f5f5 !default;
+$pre-color:                   $gray-dark !default;
+$pre-border-color:            #ccc !default;
+$pre-scrollable-max-height:   340px !default;
+
+
+//== Type
+//
+//##
+
+//** Horizontal offset for forms and lists.
+$component-offset-horizontal: 180px !default;
+//** Text muted color
+$text-muted:                  $gray-light !default;
+//** Abbreviations and acronyms border color
+$abbr-border-color:           $gray-light !default;
+//** Headings small color
+$headings-small-color:        $gray-light !default;
+//** Blockquote small color
+$blockquote-small-color:      $text-color !default;
+//** Blockquote font size
+$blockquote-font-size:        ($font-size-base * 1.25) !default;
+//** Blockquote border color
+$blockquote-border-color:     $brand-primary !default;
+//** Page header border color
+$page-header-border-color:    #ddd !default;
+//** Width of horizontal description list titles
+$dl-horizontal-offset:        $component-offset-horizontal !default;
+//** Point at which .dl-horizontal becomes horizontal
+$dl-horizontal-breakpoint:    $grid-float-breakpoint !default;
+//** Horizontal line color.
+$hr-border:                   $gray-lighter !default;
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/readable/_bootswatch.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/readable/_bootswatch.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/readable/_bootswatch.scss	(revision 3762)
@@ -0,0 +1,183 @@
+// Readable 3.4.1
+// Bootswatch
+// -----------------------------------------------------
+
+$web-font-path: "https://fonts.googleapis.com/css?family=Raleway:400,700" !default;
+@import url($web-font-path);
+
+// Navbar =====================================================================
+
+.navbar {
+  font-family: $headings-font-family;
+
+  &-nav,
+  &-form {
+    margin-left: 0;
+    margin-right: 0;
+  }
+
+  &-nav > li > a {
+    $margin-vertical: (($navbar-height - 2*$padding-base-vertical - $line-height-computed - 2px) / 2);
+    margin: $margin-vertical 6px;
+    padding: $padding-base-vertical $padding-base-horizontal;
+    border: 1px solid transparent;
+    border-radius: $border-radius-base;
+
+    &:hover {
+      border: 1px solid #ddd;
+    }
+  }
+
+  &-nav > .active > a,
+  &-nav > .active > a:hover {
+    border: 1px solid #ddd;
+  }
+
+  &-default .navbar-nav > .active > a:hover {
+    color: $navbar-default-link-hover-color;
+  }
+
+  &-inverse .navbar-nav > .active > a:hover {
+    color: $navbar-inverse-link-hover-color;
+  }
+
+  &-brand {
+    padding-top: (($navbar-height - 2*$font-size-large) / 2);
+    padding-bottom: (($navbar-height - 2*$font-size-large) / 2);
+    line-height: 1.9;
+  }
+}
+
+@media (min-width: $grid-float-breakpoint) {
+  .navbar {
+    .navbar-nav > li > a {
+      padding: $padding-base-vertical $padding-base-horizontal;
+    }
+  }
+}
+
+@media (max-width: ($grid-float-breakpoint - 1)) {
+  .navbar {
+    .navbar-nav > li > a {
+      margin: 0;
+    }
+  }
+}
+
+// Buttons ====================================================================
+
+.btn {
+  font-family: $headings-font-family;
+}
+
+// Typography =================================================================
+
+// Tables =====================================================================
+
+// Forms ======================================================================
+
+legend {
+  font-family: $headings-font-family;
+}
+
+.input-group-addon {
+  font-family: $font-family-sans-serif;
+}
+
+// Navs =======================================================================
+
+.nav {
+  .open > a,
+  .open > a:hover,
+  .open > a:focus {
+    border: 1px solid #ddd;
+  }
+}
+
+.pagination {
+
+  font-family: $headings-font-family;
+
+  &-lg > li > a,
+  &-lg > li > span {
+    padding: 14px 24px;
+  }
+}
+
+.pager {
+
+  font-family: $headings-font-family;
+
+  a {
+    color: $text-color;
+  }
+
+  a:hover {
+    border-color: transparent;
+    color: #fff;
+  }
+
+  .disabled a {
+    border-color: $pager-border;
+  }
+}
+
+// Indicators =================================================================
+
+.close {
+  color: #fff;
+  text-decoration: none;
+  text-shadow: none;
+  opacity: 0.4;
+
+  &:hover,
+  &:focus {
+    color: #fff;
+    opacity: 1;
+  }
+}
+
+.alert {
+  .alert-link {
+    color: $alert-success-text;
+    text-decoration: underline;
+  }
+}
+
+.label {
+  font-family: $headings-font-family;
+  font-weight: normal;
+
+  &-default {
+    border: 1px solid #ddd;
+    color: $text-color;
+  }
+
+}
+
+.badge {
+  padding: 1px 7px 5px;
+  vertical-align: 2px;
+  font-family: $headings-font-family;
+  font-weight: normal;
+}
+
+// Progress bars ==============================================================
+
+// Containers =================================================================
+
+.panel {
+  @include box-shadow(none);
+
+  &-default {
+    .close {
+      color: $text-color;
+    }
+  }
+}
+
+.modal {
+  .close {
+    color: $text-color;
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/package.json
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/package.json	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/package.json	(revision 3762)
@@ -0,0 +1,15 @@
+{
+  "name": "bootswatch",
+  "description": "Bootswatch is a collection of themes for Bootstrap.",
+  "version": "3.4.1",
+  "author": "Thomas Park",
+  "homepage": "http://bootswatch.com",
+  "license": "MIT",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/thomaspark/bootswatch.git"
+  },
+  "engines": {
+    "node": ">= 0.10.0"
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/paper/_bootswatch.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/paper/_bootswatch.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/paper/_bootswatch.scss	(revision 3762)
@@ -0,0 +1,631 @@
+// Paper 3.4.1
+// Bootswatch
+// -----------------------------------------------------
+
+$web-font-path: "https://fonts.googleapis.com/css?family=Roboto:300,400,500,700" !default;
+@import url($web-font-path);
+
+// Navbar =====================================================================
+
+.navbar {
+  border: none;
+  @include box-shadow(0 1px 2px rgba(0,0,0,.3));
+
+  &-brand {
+    font-size: 24px;
+  }
+
+  &-inverse {
+    .navbar-form {
+
+      input[type=text],
+      input[type=password] {
+        color: #fff;
+        @include box-shadow(inset 0 -1px 0 $navbar-inverse-link-color);
+        @include placeholder($navbar-inverse-link-color);
+
+        &:focus {
+          @include box-shadow(inset 0 -2px 0 #fff);
+        }
+      }
+    }
+  }
+}
+
+// Buttons ====================================================================
+
+@mixin btn($class,$bg){
+  .btn-#{$class} {
+    background-size: 200% 200%;
+    background-position: 50%;
+
+    &:focus {
+      background-color: $bg;
+    }
+
+    &:hover,
+    &:active:hover {
+      background-color: darken($bg, 6%);
+    }
+
+    &:active {
+      background-color: darken($bg, 12%);
+      @include gradient-radial(darken($bg, 12%) 10%, $bg 11%);
+      background-size: 1000% 1000%;
+      @include box-shadow(2px 2px 4px rgba(0,0,0,.4));
+    }
+  }
+}
+
+@include btn(default,$btn-default-bg);
+@include btn(primary,$btn-primary-bg);
+@include btn(success,$btn-success-bg);
+@include btn(info,$btn-info-bg);
+@include btn(warning,$btn-warning-bg);
+@include btn(danger,$btn-danger-bg);
+@include btn(link,#fff);
+
+.btn {
+  text-transform: uppercase;
+  border: none;
+  @include box-shadow(1px 1px 4px rgba(0,0,0,.4));
+  @include transition(all 0.4s);
+
+  &-link {
+    border-radius: $btn-border-radius-base;
+    @include box-shadow(none);
+    color: $btn-default-color;
+
+    &:hover,
+    &:focus {
+      @include box-shadow(none);
+      color: $btn-default-color;
+      text-decoration: none;
+    }
+  }
+
+  &-default {
+
+    &.disabled {
+      background-color: rgba(0, 0, 0, 0.1);
+      color: rgba(0, 0, 0, 0.4);
+      opacity: 1;
+    }
+  }
+}
+
+.btn-group {
+  .btn + .btn,
+  .btn + .btn-group,
+  .btn-group + .btn,
+  .btn-group + .btn-group {
+    margin-left: 0;
+  }
+
+  &-vertical {
+    > .btn + .btn,
+    > .btn + .btn-group,
+    > .btn-group + .btn,
+    > .btn-group + .btn-group {
+      margin-top: 0;
+    }
+  }
+}
+
+// Typography =================================================================
+
+body {
+  -webkit-font-smoothing: antialiased;
+  letter-spacing: .1px;
+}
+
+p {
+  margin: 0 0 1em;
+}
+
+input,
+button {
+  -webkit-font-smoothing: antialiased;
+  letter-spacing: .1px;
+}
+
+a {
+  @include transition(all 0.2s);
+}
+
+// Tables =====================================================================
+
+.table-hover {
+  > tbody > tr,
+  > tbody > tr > th,
+  > tbody > tr > td {
+    @include transition(all 0.2s);
+  }
+}
+
+// Forms ======================================================================
+
+label {
+  font-weight: normal;
+}
+
+textarea,
+textarea.form-control,
+input.form-control,
+input[type=text],
+input[type=password],
+input[type=email],
+input[type=number],
+[type=text].form-control,
+[type=password].form-control,
+[type=email].form-control,
+[type=tel].form-control,
+[contenteditable].form-control {
+  padding: 0;
+  border: none;
+  border-radius: 0;
+  -webkit-appearance: none;
+  @include box-shadow(inset 0 -1px 0 #ddd);
+  font-size: 16px;
+
+  &:focus {
+    @include box-shadow(inset 0 -2px 0 $brand-primary);
+  }
+
+  &[disabled],
+  &[readonly] {
+    @include box-shadow(none);
+    border-bottom: 1px dotted #ddd;
+  }
+
+  &.input {
+    &-sm {
+      font-size: $font-size-small;
+    }
+
+    &-lg {
+      font-size: $font-size-large;
+    }
+  }
+}
+
+select,
+select.form-control {
+  border: 0;
+  border-radius: 0;
+  -webkit-appearance: none;
+  -moz-appearance: none;
+  appearance: none;
+  -webkit-appearance: none;
+  -moz-appearance: none;
+  -ms-appearance: none;
+  -o-appearance: none;
+  padding-left: 0;
+  padding-right: 0\9; // remove padding for < ie9 since default arrow can't be removed
+  background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAMAAACelLz8AAAAJ1BMVEVmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmaP/QSjAAAADHRSTlMAAgMJC0uWpKa6wMxMdjkoAAAANUlEQVR4AeXJyQEAERAAsNl7Hf3X6xt0QL6JpZWq30pdvdadme+0PMdzvHm8YThHcT1H7K0BtOMDniZhWOgAAAAASUVORK5CYII=);
+  background-size: 13px;
+  background-repeat: no-repeat;
+  background-position: right center;
+  @include box-shadow(inset 0 -1px 0 #ddd);
+  font-size: 16px;
+  line-height: 1.5;
+
+  &::-ms-expand {
+    display: none;
+  }
+
+  &.input {
+    &-sm {
+      font-size: $font-size-small;
+    }
+
+    &-lg {
+      font-size: $font-size-large;
+    }
+  }
+
+  &:focus {
+    @include box-shadow(inset 0 -2px 0 $brand-primary);
+    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAMAAACelLz8AAAAJ1BMVEUhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISF8S9ewAAAADHRSTlMAAgMJC0uWpKa6wMxMdjkoAAAANUlEQVR4AeXJyQEAERAAsNl7Hf3X6xt0QL6JpZWq30pdvdadme+0PMdzvHm8YThHcT1H7K0BtOMDniZhWOgAAAAASUVORK5CYII=);
+  }
+
+  &[multiple] {
+    background: none;
+  }
+}
+
+.radio,
+.radio-inline,
+.checkbox,
+.checkbox-inline {
+  label {
+    padding-left: 25px;
+  }
+
+  input[type="radio"],
+  input[type="checkbox"] {
+    margin-left: -25px;
+  }
+}
+
+input[type="radio"],
+.radio input[type="radio"],
+.radio-inline input[type="radio"] {
+  position: relative;
+  margin-top: 6px;
+  margin-right: 4px;
+  vertical-align: top;
+  border: none;
+  background-color: transparent;
+  -webkit-appearance: none;
+  appearance: none;
+  -webkit-appearance: none;
+  -moz-appearance: none;
+  -ms-appearance: none;
+  -o-appearance: none;
+  cursor: pointer;
+
+  &:focus {
+    outline: none;
+  }
+
+  &:before,
+  &:after {
+    content: "";
+    display: block;
+    width: 18px;
+    height: 18px;
+    border-radius: 50%;
+    @include transition(240ms);
+  }
+
+  &:before {
+    position: absolute;
+    left: 0;
+    top: -3px;
+    background-color: $brand-primary;
+    @include scale(0);
+  }
+
+  &:after {
+    position: relative;
+    top: -3px;
+    border: 2px solid $gray;
+  }
+
+  &:checked:before {
+    @include scale(0.5);
+  }
+
+  &:disabled:checked:before {
+    background-color: $gray-light;
+  }
+
+  &:checked:after {
+    border-color: $brand-primary;
+  }
+
+  &:disabled:after,
+  &:disabled:checked:after {
+    border-color: $gray-light;
+  }
+}
+
+input[type="checkbox"],
+.checkbox input[type="checkbox"],
+.checkbox-inline input[type="checkbox"] {
+  position: relative;
+  border: none;
+  margin-bottom: -4px;
+  -webkit-appearance: none;
+  appearance: none;
+  -webkit-appearance: none;
+  -moz-appearance: none;
+  -ms-appearance: none;
+  -o-appearance: none;
+  cursor: pointer;
+
+  &:focus {
+    outline: none;
+  }
+
+  &:focus:after {
+    border-color: $brand-primary;
+  }
+
+  &:after {
+    content: "";
+    display: block;
+    width: 18px;
+    height: 18px;
+    margin-top: -2px;
+    margin-right: 5px;
+    border: 2px solid $gray;
+    border-radius: 2px;
+    @include transition(240ms);
+  }
+
+  &:checked:before {
+    content: "";
+    position: absolute;
+    top: 0;
+    left: 6px;
+    display: table;
+    width: 6px;
+    height: 12px;
+    border: 2px solid #fff;
+    border-top-width: 0;
+    border-left-width: 0;
+    @include rotate(45deg);
+  }
+
+  &:checked:after {
+    background-color: $brand-primary;
+    border-color: $brand-primary;
+  }
+
+  &:disabled:after {
+    border-color: $gray-light;
+  }
+
+  &:disabled:checked:after {
+    background-color: $gray-light;
+    border-color: transparent;
+  }
+}
+
+.has-warning {
+  input:not([type=checkbox]),
+  .form-control,
+  input.form-control[readonly],
+  input[type=text][readonly],
+  [type=text].form-control[readonly],
+  input:not([type=checkbox]):focus,
+  .form-control:focus {
+    border-bottom: none;
+    @include box-shadow(inset 0 -2px 0 $brand-warning);
+  }
+}
+
+.has-error {
+  input:not([type=checkbox]),
+  .form-control,
+  input.form-control[readonly],
+  input[type=text][readonly],
+  [type=text].form-control[readonly],
+  input:not([type=checkbox]):focus,
+  .form-control:focus {
+    border-bottom: none;
+    @include box-shadow(inset 0 -2px 0 $brand-danger);
+  }
+}
+
+.has-success {
+  input:not([type=checkbox]),
+  .form-control,
+  input.form-control[readonly],
+  input[type=text][readonly],
+  [type=text].form-control[readonly],
+  input:not([type=checkbox]):focus,
+  .form-control:focus {
+    border-bottom: none;
+    @include box-shadow(inset 0 -2px 0 $brand-success);
+  }
+}
+
+// Remove the Bootstrap feedback styles for input addons
+.input-group-addon {
+  .has-warning &, .has-error &, .has-success & {
+    color: $input-color;
+    border-color: $input-group-addon-border-color;
+    background-color: $input-group-addon-bg;
+  }
+}
+
+.form-group-lg {
+  select,
+  select.form-control {
+    line-height: 1.5;
+  }
+}
+
+// Navs =======================================================================
+
+.nav-tabs {
+  > li > a,
+  > li > a:focus {
+    margin-right: 0;
+    background-color: transparent;
+    border: none;
+    color: $navbar-default-link-color;
+    @include box-shadow(inset 0 -1px 0 #ddd);
+    @include transition(all 0.2s);
+
+    &:hover {
+      background-color: transparent;
+      @include box-shadow(inset 0 -2px 0 $brand-primary);
+      color: $brand-primary;
+    }
+  }
+
+  & > li.active > a,
+  & > li.active > a:focus {
+    border: none;
+    @include box-shadow(inset 0 -2px 0 $brand-primary);
+    color: $brand-primary;
+
+    &:hover {
+      border: none;
+      color: $brand-primary;
+    }
+  }
+
+  & > li.disabled > a {
+    @include box-shadow(inset 0 -1px 0 #ddd);
+  }
+
+  &.nav-justified {
+
+    & > li > a,
+    & > li > a:hover,
+    & > li > a:focus,
+    & > .active > a,
+    & > .active > a:hover,
+    & > .active > a:focus {
+      border: none;
+    }
+  }
+
+  .dropdown-menu {
+    margin-top: 0;
+  }
+}
+
+.dropdown-menu {
+  margin-top: 0;
+  border: none;
+  @include box-shadow(0 1px 4px rgba(0,0,0,.3));
+}
+
+// Indicators =================================================================
+
+.alert {
+  border: none;
+  color: #fff;
+
+  &-success {
+    background-color: $brand-success;
+  }
+
+  &-info {
+    background-color: $brand-info;
+  }
+
+  &-warning {
+    background-color: $brand-warning;
+  }
+
+  &-danger {
+    background-color: $brand-danger;
+  }
+
+  a:not(.close):not(.btn),
+  .alert-link {
+    color: #fff;
+    font-weight: bold;
+  }
+
+  .close {
+    color: #fff;
+  }
+}
+
+.badge {
+  padding: 4px 6px 4px;
+}
+
+.progress {
+  position: relative;
+  z-index: 1;
+  height: 6px;
+  border-radius: 0;
+
+  @include box-shadow(none);
+
+  &-bar {
+    @include box-shadow(none);
+
+    &:last-child {
+      border-radius: 0 3px 3px 0;
+    }
+
+    &:last-child {
+      &:before {
+        display: block;
+        content: "";
+        position: absolute;
+        width: 100%;
+        height: 100%;
+        left: 0;
+        right: 0;
+        z-index: -1;
+        background-color: lighten($progress-bar-bg, 35%);
+      }
+    }
+
+    &-success:last-child.progress-bar:before {
+      background-color: lighten($brand-success, 35%);
+    }
+
+    &-info:last-child.progress-bar:before {
+      background-color: lighten($brand-info, 45%);
+    }
+    &-warning:last-child.progress-bar:before {
+      background-color: lighten($brand-warning, 35%);
+    }
+
+    &-danger:last-child.progress-bar:before {
+      background-color: lighten($brand-danger, 25%);
+    }
+  }
+}
+
+// Progress bars ==============================================================
+
+// Containers =================================================================
+
+.close {
+  font-size: 34px;
+  font-weight: 300;
+  line-height: 24px;
+  opacity: 0.6;
+  @include transition(all 0.2s);
+
+  &:hover {
+    opacity: 1;
+  }
+}
+
+.list-group {
+
+  &-item {
+    padding: 15px;
+  }
+
+  &-item-text {
+    color: $gray-light;
+  }
+}
+
+.well {
+  border-radius: 0;
+  @include box-shadow(none);
+}
+
+.panel {
+  border: none;
+  border-radius: 2px;
+  @include box-shadow(0 1px 4px rgba(0,0,0,.3));
+
+  &-heading {
+    border-bottom: none;
+  }
+
+  &-footer {
+    border-top: none;
+  }
+}
+
+.popover {
+  border: none;
+  @include box-shadow(0 1px 4px rgba(0,0,0,.3));
+}
+
+.carousel {
+  &-caption {
+    h1, h2, h3, h4, h5, h6 {
+      color: inherit;
+    }
+  }
+}
+
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/paper/font.css
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/paper/font.css	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/paper/font.css	(revision 3762)
@@ -0,0 +1,24 @@
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 300;
+  src: url(fonts/KFOlCnqEu92Fr1MmSU5fBBc-.woff) format('woff');
+}
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 400;
+  src: url(fonts/KFOmCnqEu92Fr1Mu4mxM.woff) format('woff');
+}
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 500;
+  src: url(fonts/KFOlCnqEu92Fr1MmEU9fBBc-.woff) format('woff');
+}
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 700;
+  src: url(fonts/KFOlCnqEu92Fr1MmWUlfBBc-.woff) format('woff');
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/paper/_variables.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/paper/_variables.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/paper/_variables.scss	(revision 3762)
@@ -0,0 +1,870 @@
+$bootstrap-sass-asset-helper: false !default;
+// Paper 3.4.1
+// Variables
+// --------------------------------------------------
+
+
+//== Colors
+//
+//## Gray and brand colors for use across Bootstrap.
+
+$gray-base:              #000 !default;
+$gray-darker:            lighten($gray-base, 13.5%) !default; // #222
+$gray-dark:              #212121 !default;
+$gray:                   #666 !default;
+$gray-light:             #bbb !default;
+$gray-lighter:           lighten($gray-base, 93.5%) !default; // #eee
+
+$brand-primary:         #2196F3 !default;
+$brand-success:         #4CAF50 !default;
+$brand-info:            #9C27B0 !default;
+$brand-warning:         #ff9800 !default;
+$brand-danger:          #e51c23 !default;
+
+
+//== Scaffolding
+//
+//## Settings for some of the most global styles.
+
+//** Background color for `<body>`.
+$body-bg:               #fff !default;
+//** Global text color on `<body>`.
+$text-color:            $gray !default;
+
+//** Global textual link color.
+$link-color:            $brand-primary !default;
+//** Link hover color set via `darken()` function.
+$link-hover-color:      darken($link-color, 15%) !default;
+//** Link hover decoration.
+$link-hover-decoration: underline !default;
+
+
+//== Typography
+//
+//## Font, line-height, and color for body text, headings, and more.
+
+$font-family-sans-serif:  "Roboto", "Helvetica Neue", Helvetica, Arial, sans-serif !default;
+$font-family-serif:       Georgia, "Times New Roman", Times, serif !default;
+//** Default monospace fonts for `<code>`, `<kbd>`, and `<pre>`.
+$font-family-monospace:   Menlo, Monaco, Consolas, "Courier New", monospace !default;
+$font-family-base:        $font-family-sans-serif !default;
+
+$font-size-base:          13px !default;
+$font-size-large:         ceil(($font-size-base * 1.25)) !default; // ~18px
+$font-size-small:         ceil(($font-size-base * 0.85)) !default; // ~12px
+
+$font-size-h1:            56px !default;
+$font-size-h2:            45px !default;
+$font-size-h3:            34px !default;
+$font-size-h4:            24px !default;
+$font-size-h5:            20px !default;
+$font-size-h6:            14px !default;
+
+//** Unit-less `line-height` for use in components like buttons.
+$line-height-base:        1.846 !default; // 20/14
+//** Computed "line-height" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.
+$line-height-computed:    floor(($font-size-base * $line-height-base)) !default; // ~20px
+
+//** By default, this inherits from the `<body>`.
+$headings-font-family:    inherit !default;
+$headings-font-weight:    400 !default;
+$headings-line-height:    1.1 !default;
+$headings-color:          #444 !default;
+
+
+//== Iconography
+//
+//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.
+
+//** Load fonts from this directory.
+$icon-font-path: if($bootstrap-sass-asset-helper, "bootstrap/", "../fonts/bootstrap/") !default;
+//** File name for all font files.
+$icon-font-name:          "glyphicons-halflings-regular" !default;
+//** Element ID within SVG icon file.
+$icon-font-svg-id:        "glyphicons_halflingsregular" !default;
+
+
+//== Components
+//
+//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).
+
+$padding-base-vertical:     6px !default;
+$padding-base-horizontal:   16px !default;
+
+$padding-large-vertical:    10px !default;
+$padding-large-horizontal:  16px !default;
+
+$padding-small-vertical:    5px !default;
+$padding-small-horizontal:  10px !default;
+
+$padding-xs-vertical:       1px !default;
+$padding-xs-horizontal:     5px !default;
+
+$line-height-large:         1.3333333 !default; // extra decimals for Win 8.1 Chrome
+$line-height-small:         1.5 !default;
+
+$border-radius-base:        3px !default;
+$border-radius-large:       3px !default;
+$border-radius-small:       3px !default;
+
+//** Global color for active items (e.g., navs or dropdowns).
+$component-active-color:    #fff !default;
+//** Global background color for active items (e.g., navs or dropdowns).
+$component-active-bg:       $brand-primary !default;
+
+//** Width of the `border` for generating carets that indicate dropdowns.
+$caret-width-base:          4px !default;
+//** Carets increase slightly in size for larger components.
+$caret-width-large:         5px !default;
+
+
+//== Tables
+//
+//## Customizes the `.table` component with basic values, each used across all table variations.
+
+//** Padding for `<th>`s and `<td>`s.
+$table-cell-padding:            8px !default;
+//** Padding for cells in `.table-condensed`.
+$table-condensed-cell-padding:  5px !default;
+
+//** Default background color used for all tables.
+$table-bg:                      transparent !default;
+//** Background color used for `.table-striped`.
+$table-bg-accent:               #f9f9f9 !default;
+//** Background color used for `.table-hover`.
+$table-bg-hover:                #f5f5f5 !default;
+$table-bg-active:               $table-bg-hover !default;
+
+//** Border color for table and cell borders.
+$table-border-color:            #ddd !default;
+
+
+//== Buttons
+//
+//## For each of Bootstrap's buttons, define text, background and border color.
+
+$btn-font-weight:                normal !default;
+
+$btn-default-color:              #444 !default;
+$btn-default-bg:                 #fff !default;
+$btn-default-border:             transparent !default;
+
+$btn-primary-color:              #fff !default;
+$btn-primary-bg:                 $brand-primary !default;
+$btn-primary-border:             transparent !default;
+
+$btn-success-color:              #fff !default;
+$btn-success-bg:                 $brand-success !default;
+$btn-success-border:             transparent !default;
+
+$btn-info-color:                 #fff !default;
+$btn-info-bg:                    $brand-info !default;
+$btn-info-border:                transparent !default;
+
+$btn-warning-color:              #fff !default;
+$btn-warning-bg:                 $brand-warning !default;
+$btn-warning-border:             transparent !default;
+
+$btn-danger-color:               #fff !default;
+$btn-danger-bg:                  $brand-danger !default;
+$btn-danger-border:              transparent !default;
+
+$btn-link-disabled-color:        $gray-light !default;
+
+// Allows for customizing button radius independently from global border radius
+$btn-border-radius-base:         $border-radius-base !default;
+$btn-border-radius-large:        $border-radius-large !default;
+$btn-border-radius-small:        $border-radius-small !default;
+
+
+//== Forms
+//
+//##
+
+//** `<input>` background color
+$input-bg:                       transparent !default;
+//** `<input disabled>` background color
+$input-bg-disabled:              transparent !default;
+
+//** Text color for `<input>`s
+$input-color:                    $gray !default;
+//** `<input>` border color
+$input-border:                   transparent !default;
+
+// TODO: Rename `$input-border-radius` to `$input-border-radius-base` in v4
+//** Default `.form-control` border radius
+// This has no effect on `<select>`s in some browsers, due to the limited stylability of `<select>`s in CSS.
+$input-border-radius:            $border-radius-base !default;
+//** Large `.form-control` border radius
+$input-border-radius-large:      $border-radius-large !default;
+//** Small `.form-control` border radius
+$input-border-radius-small:      $border-radius-small !default;
+
+//** Border color for inputs on focus
+$input-border-focus:             #66afe9 !default;
+
+//** Placeholder text color
+$input-color-placeholder:        $gray-light !default;
+
+//** Default `.form-control` height
+$input-height-base:              ($line-height-computed + ($padding-base-vertical * 2) + 2) !default;
+//** Large `.form-control` height
+$input-height-large:             (ceil($font-size-large * $line-height-large) + ($padding-large-vertical * 2) + 2) !default;
+//** Small `.form-control` height
+$input-height-small:             (floor($font-size-small * $line-height-small) + ($padding-small-vertical * 2) + 2) !default;
+
+//** `.form-group` margin
+$form-group-margin-bottom:       15px !default;
+
+$legend-color:                   $gray-dark !default;
+$legend-border-color:            #e5e5e5 !default;
+
+//** Background color for textual input addons
+$input-group-addon-bg:           transparent !default;
+//** Border color for textual input addons
+$input-group-addon-border-color: $input-border !default;
+
+//** Disabled cursor for form controls and buttons.
+$cursor-disabled:                not-allowed !default;
+
+
+//== Dropdowns
+//
+//## Dropdown menu container and contents.
+
+//** Background for the dropdown menu.
+$dropdown-bg:                    #fff !default;
+//** Dropdown menu `border-color`.
+$dropdown-border:                rgba(0,0,0,.15) !default;
+//** Dropdown menu `border-color` **for IE8**.
+$dropdown-fallback-border:       #ccc !default;
+//** Divider color for between dropdown items.
+$dropdown-divider-bg:            #e5e5e5 !default;
+
+//** Dropdown link text color.
+$dropdown-link-color:            $text-color !default;
+//** Hover color for dropdown links.
+$dropdown-link-hover-color:      darken($gray-dark, 5%) !default;
+//** Hover background for dropdown links.
+$dropdown-link-hover-bg:         $gray-lighter !default;
+
+//** Active dropdown menu item text color.
+$dropdown-link-active-color:     $component-active-color !default;
+//** Active dropdown menu item background color.
+$dropdown-link-active-bg:        $component-active-bg !default;
+
+//** Disabled dropdown menu item background color.
+$dropdown-link-disabled-color:   $gray-light !default;
+
+//** Text color for headers within dropdown menus.
+$dropdown-header-color:          $gray-light !default;
+
+//** Deprecated `$dropdown-caret-color` as of v3.1.0
+$dropdown-caret-color:           $gray-light !default;
+
+
+//-- Z-index master list
+//
+// Warning: Avoid customizing these values. They're used for a bird's eye view
+// of components dependent on the z-axis and are designed to all work together.
+//
+// Note: These variables are not generated into the Customizer.
+
+$zindex-navbar:            1000 !default;
+$zindex-dropdown:          1000 !default;
+$zindex-popover:           1060 !default;
+$zindex-tooltip:           1070 !default;
+$zindex-navbar-fixed:      1030 !default;
+$zindex-modal-background:  1040 !default;
+$zindex-modal:             1050 !default;
+
+
+//== Media queries breakpoints
+//
+//## Define the breakpoints at which your layout will change, adapting to different screen sizes.
+
+// Extra small screen / phone
+//** Deprecated `$screen-xs` as of v3.0.1
+$screen-xs:                  480px !default;
+//** Deprecated `$screen-xs-min` as of v3.2.0
+$screen-xs-min:              $screen-xs !default;
+//** Deprecated `$screen-phone` as of v3.0.1
+$screen-phone:               $screen-xs-min !default;
+
+// Small screen / tablet
+//** Deprecated `$screen-sm` as of v3.0.1
+$screen-sm:                  768px !default;
+$screen-sm-min:              $screen-sm !default;
+//** Deprecated `$screen-tablet` as of v3.0.1
+$screen-tablet:              $screen-sm-min !default;
+
+// Medium screen / desktop
+//** Deprecated `$screen-md` as of v3.0.1
+$screen-md:                  992px !default;
+$screen-md-min:              $screen-md !default;
+//** Deprecated `$screen-desktop` as of v3.0.1
+$screen-desktop:             $screen-md-min !default;
+
+// Large screen / wide desktop
+//** Deprecated `$screen-lg` as of v3.0.1
+$screen-lg:                  1200px !default;
+$screen-lg-min:              $screen-lg !default;
+//** Deprecated `$screen-lg-desktop` as of v3.0.1
+$screen-lg-desktop:          $screen-lg-min !default;
+
+// So media queries don't overlap when required, provide a maximum
+$screen-xs-max:              ($screen-sm-min - 1) !default;
+$screen-sm-max:              ($screen-md-min - 1) !default;
+$screen-md-max:              ($screen-lg-min - 1) !default;
+
+
+//== Grid system
+//
+//## Define your custom responsive grid.
+
+//** Number of columns in the grid.
+$grid-columns:              12 !default;
+//** Padding between columns. Gets divided in half for the left and right.
+$grid-gutter-width:         30px !default;
+// Navbar collapse
+//** Point at which the navbar becomes uncollapsed.
+$grid-float-breakpoint:     $screen-sm-min !default;
+//** Point at which the navbar begins collapsing.
+$grid-float-breakpoint-max: ($grid-float-breakpoint - 1) !default;
+
+
+//== Container sizes
+//
+//## Define the maximum width of `.container` for different screen sizes.
+
+// Small screen / tablet
+$container-tablet:             (720px + $grid-gutter-width) !default;
+//** For `$screen-sm-min` and up.
+$container-sm:                 $container-tablet !default;
+
+// Medium screen / desktop
+$container-desktop:            (940px + $grid-gutter-width) !default;
+//** For `$screen-md-min` and up.
+$container-md:                 $container-desktop !default;
+
+// Large screen / wide desktop
+$container-large-desktop:      (1140px + $grid-gutter-width) !default;
+//** For `$screen-lg-min` and up.
+$container-lg:                 $container-large-desktop !default;
+
+
+//== Navbar
+//
+//##
+
+// Basics of a navbar
+$navbar-height:                    64px !default;
+$navbar-margin-bottom:             $line-height-computed !default;
+$navbar-border-radius:             $border-radius-base !default;
+$navbar-padding-horizontal:        floor(($grid-gutter-width / 2)) !default;
+$navbar-padding-vertical:          (($navbar-height - $line-height-computed) / 2) !default;
+$navbar-collapse-max-height:       340px !default;
+
+$navbar-default-color:             $gray-light !default;
+$navbar-default-bg:                #fff !default;
+$navbar-default-border:            transparent !default;
+
+// Navbar links
+$navbar-default-link-color:                $gray !default;
+$navbar-default-link-hover-color:          $gray-dark !default;
+$navbar-default-link-hover-bg:             transparent !default;
+$navbar-default-link-active-color:         $gray-dark !default;
+$navbar-default-link-active-bg:            darken($navbar-default-bg, 6.5%) !default;
+$navbar-default-link-disabled-color:       #ccc !default;
+$navbar-default-link-disabled-bg:          transparent !default;
+
+// Navbar brand label
+$navbar-default-brand-color:               $navbar-default-link-color !default;
+$navbar-default-brand-hover-color:         $navbar-default-link-hover-color !default;
+$navbar-default-brand-hover-bg:            transparent !default;
+
+// Navbar toggle
+$navbar-default-toggle-hover-bg:           transparent !default;
+$navbar-default-toggle-icon-bar-bg:        rgba(0,0,0,0.5) !default;
+$navbar-default-toggle-border-color:       transparent !default;
+
+
+//=== Inverted navbar
+// Reset inverted navbar basics
+$navbar-inverse-color:                      $gray-light !default;
+$navbar-inverse-bg:                         $brand-primary !default;
+$navbar-inverse-border:                     transparent !default;
+
+// Inverted navbar links
+$navbar-inverse-link-color:                 lighten($brand-primary, 30%) !default;
+$navbar-inverse-link-hover-color:           #fff !default;
+$navbar-inverse-link-hover-bg:              transparent !default;
+$navbar-inverse-link-active-color:          $navbar-inverse-link-hover-color !default;
+$navbar-inverse-link-active-bg:             darken($navbar-inverse-bg, 10%) !default;
+$navbar-inverse-link-disabled-color:        #444 !default;
+$navbar-inverse-link-disabled-bg:           transparent !default;
+
+// Inverted navbar brand label
+$navbar-inverse-brand-color:                $navbar-inverse-link-color !default;
+$navbar-inverse-brand-hover-color:          #fff !default;
+$navbar-inverse-brand-hover-bg:             transparent !default;
+
+// Inverted navbar toggle\
+$navbar-inverse-toggle-hover-bg:            transparent !default;
+$navbar-inverse-toggle-icon-bar-bg:         rgba(0,0,0,0.5) !default;
+$navbar-inverse-toggle-border-color:        transparent !default;
+
+
+//== Navs
+//
+//##
+
+//=== Shared nav styles
+$nav-link-padding:                          10px 15px !default;
+$nav-link-hover-bg:                         $gray-lighter !default;
+
+$nav-disabled-link-color:                   $gray-light !default;
+$nav-disabled-link-hover-color:             $gray-light !default;
+
+//== Tabs
+$nav-tabs-border-color:                     transparent !default;
+
+$nav-tabs-link-hover-border-color:          $gray-lighter !default;
+
+$nav-tabs-active-link-hover-bg:             transparent !default;
+$nav-tabs-active-link-hover-color:          $gray !default;
+$nav-tabs-active-link-hover-border-color:   transparent !default;
+
+$nav-tabs-justified-link-border-color:            $nav-tabs-border-color !default;
+$nav-tabs-justified-active-link-border-color:     $body-bg !default;
+
+//== Pills
+$nav-pills-border-radius:                   $border-radius-base !default;
+$nav-pills-active-link-hover-bg:            $component-active-bg !default;
+$nav-pills-active-link-hover-color:         $component-active-color !default;
+
+
+//== Pagination
+//
+//##
+
+$pagination-color:                     $link-color !default;
+$pagination-bg:                        #fff !default;
+$pagination-border:                    #ddd !default;
+
+$pagination-hover-color:               $link-hover-color !default;
+$pagination-hover-bg:                  $gray-lighter !default;
+$pagination-hover-border:              #ddd !default;
+
+$pagination-active-color:              #fff !default;
+$pagination-active-bg:                 $brand-primary !default;
+$pagination-active-border:             $brand-primary !default;
+
+$pagination-disabled-color:            $gray-light !default;
+$pagination-disabled-bg:               #fff !default;
+$pagination-disabled-border:           #ddd !default;
+
+
+//== Pager
+//
+//##
+
+$pager-bg:                             $pagination-bg !default;
+$pager-border:                         $pagination-border !default;
+$pager-border-radius:                  15px !default;
+
+$pager-hover-bg:                       $pagination-hover-bg !default;
+
+$pager-active-bg:                      $pagination-active-bg !default;
+$pager-active-color:                   $pagination-active-color !default;
+
+$pager-disabled-color:                 $pagination-disabled-color !default;
+
+
+//== Jumbotron
+//
+//##
+
+$jumbotron-padding:              30px !default;
+$jumbotron-color:                inherit !default;
+$jumbotron-bg:                   #f9f9f9 !default;
+$jumbotron-heading-color:        $headings-color !default;
+$jumbotron-font-size:            ceil(($font-size-base * 1.5)) !default;
+$jumbotron-heading-font-size:    ceil(($font-size-base * 4.5)) !default;
+
+
+//== Form states and alerts
+//
+//## Define colors for form feedback states and, by default, alerts.
+
+$state-success-text:             $brand-success !default;
+$state-success-bg:               #dff0d8 !default;
+$state-success-border:           darken(adjust-hue($state-success-bg, -10), 5%) !default;
+
+$state-info-text:                $brand-info !default;
+$state-info-bg:                  #e1bee7 !default;
+$state-info-border:              darken(adjust-hue($state-info-bg, -10), 7%) !default;
+
+$state-warning-text:             $brand-warning !default;
+$state-warning-bg:               #ffe0b2 !default;
+$state-warning-border:           darken(adjust-hue($state-warning-bg, -10), 5%) !default;
+
+$state-danger-text:              $brand-danger !default;
+$state-danger-bg:                #f9bdbb !default;
+$state-danger-border:            darken(adjust-hue($state-danger-bg, -10), 5%) !default;
+
+
+//== Tooltips
+//
+//##
+
+//** Tooltip max width
+$tooltip-max-width:           200px !default;
+//** Tooltip text color
+$tooltip-color:               #fff !default;
+//** Tooltip background color
+$tooltip-bg:                  #727272 !default;
+$tooltip-opacity:             .9 !default;
+
+//** Tooltip arrow width
+$tooltip-arrow-width:         5px !default;
+//** Tooltip arrow color
+$tooltip-arrow-color:         $tooltip-bg !default;
+
+
+//== Popovers
+//
+//##
+
+//** Popover body background color
+$popover-bg:                          #fff !default;
+//** Popover maximum width
+$popover-max-width:                   276px !default;
+//** Popover border color
+$popover-border-color:                transparent !default;
+//** Popover fallback border color
+$popover-fallback-border-color:       transparent !default;
+
+//** Popover title background color
+$popover-title-bg:                    darken($popover-bg, 3%) !default;
+
+//** Popover arrow width
+$popover-arrow-width:                 10px !default;
+//** Popover arrow color
+$popover-arrow-color:                 $popover-bg !default;
+
+//** Popover outer arrow width
+$popover-arrow-outer-width:           ($popover-arrow-width + 1) !default;
+//** Popover outer arrow color
+$popover-arrow-outer-color:           fadein($popover-border-color, 7.5%) !default;
+//** Popover outer arrow fallback color
+$popover-arrow-outer-fallback-color:  darken($popover-fallback-border-color, 20%) !default;
+
+
+//== Labels
+//
+//##
+
+//** Default label background color
+$label-default-bg:            $gray-light !default;
+//** Primary label background color
+$label-primary-bg:            $brand-primary !default;
+//** Success label background color
+$label-success-bg:            $brand-success !default;
+//** Info label background color
+$label-info-bg:               $brand-info !default;
+//** Warning label background color
+$label-warning-bg:            $brand-warning !default;
+//** Danger label background color
+$label-danger-bg:             $brand-danger !default;
+
+//** Default label text color
+$label-color:                 #fff !default;
+//** Default text color of a linked label
+$label-link-hover-color:      #fff !default;
+
+
+//== Modals
+//
+//##
+
+//** Padding applied to the modal body
+$modal-inner-padding:         15px !default;
+
+//** Padding applied to the modal title
+$modal-title-padding:         15px !default;
+//** Modal title line-height
+$modal-title-line-height:     $line-height-base !default;
+
+//** Background color of modal content area
+$modal-content-bg:                             #fff !default;
+//** Modal content border color
+$modal-content-border-color:                   transparent !default;
+//** Modal content border color **for IE8**
+$modal-content-fallback-border-color:          #999 !default;
+
+//** Modal backdrop background color
+$modal-backdrop-bg:           #000 !default;
+//** Modal backdrop opacity
+$modal-backdrop-opacity:      .5 !default;
+//** Modal header border color
+$modal-header-border-color:   transparent !default;
+//** Modal footer border color
+$modal-footer-border-color:   $modal-header-border-color !default;
+
+$modal-lg:                    900px !default;
+$modal-md:                    600px !default;
+$modal-sm:                    300px !default;
+
+
+//== Alerts
+//
+//## Define alert colors, border radius, and padding.
+
+$alert-padding:               15px !default;
+$alert-border-radius:         $border-radius-base !default;
+$alert-link-font-weight:      bold !default;
+
+$alert-success-bg:            $state-success-bg !default;
+$alert-success-text:          $state-success-text !default;
+$alert-success-border:        $state-success-border !default;
+
+$alert-info-bg:               $state-info-bg !default;
+$alert-info-text:             $state-info-text !default;
+$alert-info-border:           $state-info-border !default;
+
+$alert-warning-bg:            $state-warning-bg !default;
+$alert-warning-text:          $state-warning-text !default;
+$alert-warning-border:        $state-warning-border !default;
+
+$alert-danger-bg:             $state-danger-bg !default;
+$alert-danger-text:           $state-danger-text !default;
+$alert-danger-border:         $state-danger-border !default;
+
+
+//== Progress bars
+//
+//##
+
+//** Background color of the whole progress component
+$progress-bg:                 #f5f5f5 !default;
+//** Progress bar text color
+$progress-bar-color:          #fff !default;
+//** Variable for setting rounded corners on progress bar.
+$progress-border-radius:      $border-radius-base !default;
+
+//** Default progress bar color
+$progress-bar-bg:             $brand-primary !default;
+//** Success progress bar color
+$progress-bar-success-bg:     $brand-success !default;
+//** Warning progress bar color
+$progress-bar-warning-bg:     $brand-warning !default;
+//** Danger progress bar color
+$progress-bar-danger-bg:      $brand-danger !default;
+//** Info progress bar color
+$progress-bar-info-bg:        $brand-info !default;
+
+
+//== List group
+//
+//##
+
+//** Background color on `.list-group-item`
+$list-group-bg:                 #fff !default;
+//** `.list-group-item` border color
+$list-group-border:             #ddd !default;
+//** List group border radius
+$list-group-border-radius:      $border-radius-base !default;
+
+//** Background color of single list items on hover
+$list-group-hover-bg:           #f5f5f5 !default;
+//** Text color of active list items
+$list-group-active-color:       $component-active-color !default;
+//** Background color of active list items
+$list-group-active-bg:          $component-active-bg !default;
+//** Border color of active list elements
+$list-group-active-border:      $list-group-active-bg !default;
+//** Text color for content within active list items
+$list-group-active-text-color:  lighten($list-group-active-bg, 40%) !default;
+
+//** Text color of disabled list items
+$list-group-disabled-color:      $gray-light !default;
+//** Background color of disabled list items
+$list-group-disabled-bg:         $gray-lighter !default;
+//** Text color for content within disabled list items
+$list-group-disabled-text-color: $list-group-disabled-color !default;
+
+$list-group-link-color:         #555 !default;
+$list-group-link-hover-color:   $list-group-link-color !default;
+$list-group-link-heading-color: #333 !default;
+
+
+//== Panels
+//
+//##
+
+$panel-bg:                    #fff !default;
+$panel-body-padding:          15px !default;
+$panel-heading-padding:       10px 15px !default;
+$panel-footer-padding:        $panel-heading-padding !default;
+$panel-border-radius:         $border-radius-base !default;
+
+//** Border color for elements within panels
+$panel-inner-border:          #ddd !default;
+$panel-footer-bg:             #f5f5f5 !default;
+
+$panel-default-text:          $gray-dark !default;
+$panel-default-border:        #ddd !default;
+$panel-default-heading-bg:    #f5f5f5 !default;
+
+$panel-primary-text:          #fff !default;
+$panel-primary-border:        $brand-primary !default;
+$panel-primary-heading-bg:    $brand-primary !default;
+
+$panel-success-text:          #fff !default;
+$panel-success-border:        $state-success-border !default;
+$panel-success-heading-bg:    $brand-success !default;
+
+$panel-info-text:             #fff !default;
+$panel-info-border:           $state-info-border !default;
+$panel-info-heading-bg:       $brand-info !default;
+
+$panel-warning-text:          #fff !default;
+$panel-warning-border:        $state-warning-border !default;
+$panel-warning-heading-bg:    $brand-warning !default;
+
+$panel-danger-text:           #fff !default;
+$panel-danger-border:         $state-danger-border !default;
+$panel-danger-heading-bg:     $brand-danger !default;
+
+
+//== Thumbnails
+//
+//##
+
+//** Padding around the thumbnail image
+$thumbnail-padding:           4px !default;
+//** Thumbnail background color
+$thumbnail-bg:                $body-bg !default;
+//** Thumbnail border color
+$thumbnail-border:            #ddd !default;
+//** Thumbnail border radius
+$thumbnail-border-radius:     $border-radius-base !default;
+
+//** Custom text color for thumbnail captions
+$thumbnail-caption-color:     $text-color !default;
+//** Padding around the thumbnail caption
+$thumbnail-caption-padding:   9px !default;
+
+
+//== Wells
+//
+//##
+
+$well-bg:                     #f9f9f9 !default;
+$well-border:                 transparent !default;
+
+
+//== Badges
+//
+//##
+
+$badge-color:                 #fff !default;
+//** Linked badge text color on hover
+$badge-link-hover-color:      #fff !default;
+$badge-bg:                    $gray-light !default;
+
+//** Badge text color in active nav link
+$badge-active-color:          $link-color !default;
+//** Badge background color in active nav link
+$badge-active-bg:             #fff !default;
+
+$badge-font-weight:           normal !default;
+$badge-line-height:           1 !default;
+$badge-border-radius:         10px !default;
+
+
+//== Breadcrumbs
+//
+//##
+
+$breadcrumb-padding-vertical:   8px !default;
+$breadcrumb-padding-horizontal: 15px !default;
+//** Breadcrumb background color
+$breadcrumb-bg:                 #f5f5f5 !default;
+//** Breadcrumb text color
+$breadcrumb-color:              #ccc !default;
+//** Text color of current page in the breadcrumb
+$breadcrumb-active-color:       $gray-light !default;
+//** Textual separator for between breadcrumb elements
+$breadcrumb-separator:          "/" !default;
+
+
+//== Carousel
+//
+//##
+
+$carousel-text-shadow:                        0 1px 2px rgba(0,0,0,.6) !default;
+
+$carousel-control-color:                      #fff !default;
+$carousel-control-width:                      15% !default;
+$carousel-control-opacity:                    .5 !default;
+$carousel-control-font-size:                  20px !default;
+
+$carousel-indicator-active-bg:                #fff !default;
+$carousel-indicator-border-color:             #fff !default;
+
+$carousel-caption-color:                      #fff !default;
+
+
+//== Close
+//
+//##
+
+$close-font-weight:           normal !default;
+$close-color:                 #000 !default;
+$close-text-shadow:           none !default;
+
+
+//== Code
+//
+//##
+
+$code-color:                  #c7254e !default;
+$code-bg:                     #f9f2f4 !default;
+
+$kbd-color:                   #fff !default;
+$kbd-bg:                      #333 !default;
+
+$pre-bg:                      #f5f5f5 !default;
+$pre-color:                   $gray-dark !default;
+$pre-border-color:            #ccc !default;
+$pre-scrollable-max-height:   340px !default;
+
+
+//== Type
+//
+//##
+
+//** Horizontal offset for forms and lists.
+$component-offset-horizontal: 180px !default;
+//** Text muted color
+$text-muted:                  $gray-light !default;
+//** Abbreviations and acronyms border color
+$abbr-border-color:           $gray-light !default;
+//** Headings small color
+$headings-small-color:        $gray-light !default;
+//** Blockquote small color
+$blockquote-small-color:      $gray-light !default;
+//** Blockquote font size
+$blockquote-font-size:        ($font-size-base * 1.25) !default;
+//** Blockquote border color
+$blockquote-border-color:     $gray-lighter !default;
+//** Page header border color
+$page-header-border-color:    $gray-lighter !default;
+//** Width of horizontal description list titles
+$dl-horizontal-offset:        $component-offset-horizontal !default;
+//** Point at which .dl-horizontal becomes horizontal
+$dl-horizontal-breakpoint:    $grid-float-breakpoint !default;
+//** Horizontal line color.
+$hr-border:                   $gray-lighter !default;
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/slate/_bootswatch.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/slate/_bootswatch.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/slate/_bootswatch.scss	(revision 3762)
@@ -0,0 +1,448 @@
+// Slate 3.4.1
+// Bootswatch
+// -----------------------------------------------------
+
+@mixin btn-shadow($color){
+  @include gradient-vertical-three-colors(lighten($color, 6%), $color, 60%, darken($color, 4%));
+  filter: none;
+}
+
+@mixin btn-shadow-inverse($color){
+  @include gradient-vertical-three-colors(darken($color, 24%), darken($color, 18%), 40%, darken($color, 16%));
+  filter: none;
+}
+
+// Navbar =====================================================================
+
+.navbar {
+
+  @include btn-shadow($navbar-default-bg);
+  border: 1px solid rgba(0, 0, 0, 0.6);
+  text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.3);
+
+  .navbar-nav > li > a {
+    border-right: 1px solid rgba(0, 0, 0, 0.2);
+    border-left: 1px solid rgba(255, 255, 255, 0.1);
+
+    &:hover {
+      @include btn-shadow-inverse($navbar-default-bg);
+      border-left-color: transparent;
+    }
+  }
+
+  &-inverse {
+    @include btn-shadow($navbar-inverse-bg);
+
+    .badge {
+      background-color: $navbar-inverse-link-active-bg;
+    }
+
+    .navbar-nav > li > a {
+
+      &:hover {
+        @include btn-shadow-inverse($navbar-inverse-bg);
+      }
+    }
+  }
+
+  .nav .open > a {
+    border-color: transparent;
+  }
+
+  &-nav > li.active > a {
+    border-left-color: transparent;
+  }
+
+  &-form {
+    margin-left: 5px;
+    margin-right: 5px;
+  }
+}
+
+// Buttons ====================================================================
+
+.btn,
+.btn:hover {
+  border-color: rgba(0, 0, 0, 0.6);
+  text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.3);
+}
+
+.btn-default {
+  @include btn-shadow($btn-default-bg);
+
+  &:hover {
+    @include btn-shadow-inverse($btn-default-bg);
+  }
+}
+
+.btn-primary {
+  @include btn-shadow($btn-primary-bg);
+
+  &:hover {
+    @include btn-shadow-inverse($btn-primary-bg);
+  }
+}
+
+.btn-success {
+  @include btn-shadow($btn-success-bg);
+
+  &:hover {
+    @include btn-shadow-inverse($btn-success-bg);
+  }
+}
+
+.btn-info {
+  @include btn-shadow($btn-info-bg);
+
+  &:hover {
+    @include btn-shadow-inverse($btn-info-bg);
+  }
+}
+
+.btn-warning {
+  @include btn-shadow($btn-warning-bg);
+
+  &:hover {
+    @include btn-shadow-inverse($btn-warning-bg);
+  }
+}
+
+.btn-danger {
+  @include btn-shadow($btn-danger-bg);
+
+  &:hover {
+    @include btn-shadow-inverse($btn-danger-bg);
+  }
+}
+
+.btn-link,
+.btn-link:hover {
+  border-color: transparent;
+}
+
+// Typography =================================================================
+
+h1, h2, h3, h4, h5, h6 {
+  text-shadow: -1px -1px 0 rgba(0, 0, 0, 0.3);
+}
+
+.text-primary,
+.text-primary:hover {
+  color: $brand-primary;
+}
+
+.text-success,
+.text-success:hover {
+  color: $brand-success;
+}
+
+.text-danger,
+.text-danger:hover {
+  color: $brand-danger;
+}
+
+.text-warning,
+.text-warning:hover {
+  color: $brand-warning;
+}
+
+.text-info,
+.text-info:hover {
+  color: $brand-info;
+}
+
+// Tables =====================================================================
+
+.table {
+
+  .success,
+  .warning,
+  .danger,
+  .info {
+    color: #fff;
+  }
+
+  &-bordered tbody {
+
+    tr.success,
+    tr.warning,
+    tr.danger {
+
+      td,
+      &:hover td {
+        border-color: $table-border-color;
+      }
+    }
+  }
+}
+
+.table-responsive > .table {
+  background-color: $table-bg;
+}
+
+// Forms ======================================================================
+
+input,
+textarea {
+  color: $input-color;
+}
+
+.has-warning {
+  .help-block,
+  .control-label,
+  .radio,
+  .checkbox,
+  .radio-inline,
+  .checkbox-inline,
+  &.radio label,
+  &.checkbox label,
+  &.radio-inline label,
+  &.checkbox-inline label,
+  .form-control-feedback {
+    color: $brand-warning;
+  }
+
+  .form-control,
+  .form-control:focus {
+    border-color: $brand-warning;
+  }
+
+  .input-group-addon {
+    background-color: $gray-dark;
+    border-color: $input-group-addon-border-color;
+  }
+}
+
+.has-error {
+  .help-block,
+  .control-label,
+  .radio,
+  .checkbox,
+  .radio-inline,
+  .checkbox-inline,
+  &.radio label,
+  &.checkbox label,
+  &.radio-inline label,
+  &.checkbox-inline label,
+  .form-control-feedback {
+    color: $brand-danger;
+  }
+
+  .form-control,
+  .form-control:focus {
+    border-color: $brand-danger;
+  }
+
+  .input-group-addon {
+    background-color: $gray-dark;
+    border-color: $input-group-addon-border-color;
+  }
+}
+
+.has-success {
+  .help-block,
+  .control-label,
+  .radio,
+  .checkbox,
+  .radio-inline,
+  .checkbox-inline,
+  &.radio label,
+  &.checkbox label,
+  &.radio-inline label,
+  &.checkbox-inline label,
+  .form-control-feedback {
+    color: $brand-success;
+  }
+
+  .form-control,
+  .form-control:focus {
+    border-color: $brand-success;
+  }
+
+  .input-group-addon {
+    background-color: $gray-dark;
+    border-color: $input-group-addon-border-color;
+  }
+}
+
+legend {
+  color: #fff;
+}
+
+.input-group-addon {
+  background-color: $gray-dark;
+  @include btn-shadow($btn-default-bg);
+  text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.3);
+  color: $btn-default-color;
+}
+
+// Navs =======================================================================
+
+.nav {
+
+  .open > a,
+  .open > a:hover,
+  .open > a:focus {
+    border-color: rgba(0, 0, 0, 0.6);
+  }
+
+}
+
+.nav-pills {
+
+  & > li > a {
+    @include btn-shadow($btn-default-bg);
+    border: 1px solid rgba(0, 0, 0, 0.6);
+    text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.3);
+
+    &:hover {
+      @include btn-shadow-inverse($btn-default-bg);
+      border: 1px solid rgba(0, 0, 0, 0.6);
+    }
+  }
+
+  & > li.active > a,
+  & > li.active > a:hover {
+    background-color: none;
+    @include btn-shadow-inverse($btn-default-bg);
+    border: 1px solid rgba(0, 0, 0, 0.6);
+  }
+
+  & > li.disabled > a,
+  & > li.disabled > a:hover {
+    @include btn-shadow($btn-default-bg);
+  }
+}
+
+.pagination {
+
+  & > li > a,
+  & > li > span {
+    text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.3);
+    @include btn-shadow($btn-default-bg);
+
+    &:hover {
+      @include btn-shadow-inverse($btn-default-bg);
+    }
+  }
+
+  & > li.active > a,
+  & > li.active > span {
+    @include btn-shadow-inverse($btn-default-bg);
+  }
+
+  & > li.disabled > a,
+  & > li.disabled > a:hover,
+  & > li.disabled > span,
+  & > li.disabled > span:hover {
+    background-color: transparent;
+    @include btn-shadow($btn-default-bg);
+  }
+}
+
+.pager {
+
+  & > li > a {
+    @include btn-shadow($btn-default-bg);
+    text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.3);
+
+    &:hover {
+      @include btn-shadow-inverse($btn-default-bg);
+    }
+  }
+
+  & > li.disabled > a,
+  & > li.disabled > a:hover {
+    background-color: transparent;
+    @include btn-shadow($btn-default-bg);
+  }
+}
+
+.breadcrumb {
+  border: 1px solid rgba(0, 0, 0, 0.6);
+  text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.3);
+  @include btn-shadow($btn-default-bg);
+}
+
+// Indicators =================================================================
+
+.alert {
+
+  .alert-link,
+  a {
+    color: #fff;
+    text-decoration: underline;
+  }
+
+  .close {
+    color: $close-color;
+    text-decoration: none;
+  }
+}
+
+// Progress bars ==============================================================
+
+// Containers =================================================================
+
+a.thumbnail:hover,
+a.thumbnail:focus,
+a.thumbnail.active {
+  border-color: $thumbnail-border;
+}
+
+a.list-group-item {
+
+  &.active,
+  &.active:hover,
+  &.active:focus {
+    border-color: $list-group-border;
+  }
+
+  &-success {
+    &.active {
+      background-color: $state-success-bg;
+    }
+
+    &.active:hover,
+    &.active:focus {
+      background-color: darken($state-success-bg, 5%);
+    }
+  }
+
+  &-warning {
+    &.active {
+      background-color: $state-warning-bg;
+    }
+    
+    &.active:hover,
+    &.active:focus {
+      background-color: darken($state-warning-bg, 5%);
+    }
+  }
+
+  &-danger {
+    &.active {
+      background-color: $state-danger-bg;
+    }
+    
+    &.active:hover,
+    &.active:focus {
+      background-color: darken($state-danger-bg, 5%);
+    }
+  }
+}
+
+.jumbotron {
+  border: 1px solid rgba(0, 0, 0, 0.6);
+}
+
+.panel-primary,
+.panel-success,
+.panel-danger,
+.panel-warning,
+.panel-info {
+
+  .panel-heading {
+    border-color: #000;
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/slate/_variables.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/slate/_variables.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/slate/_variables.scss	(revision 3762)
@@ -0,0 +1,870 @@
+$bootstrap-sass-asset-helper: false !default;
+// Slate 3.4.1
+// Variables
+// --------------------------------------------------
+
+
+//== Colors
+//
+//## Gray and brand colors for use across Bootstrap.
+
+$gray-base:              #000 !default;
+$gray-darker:            #272B30 !default; // #222
+$gray-dark:              #3A3F44 !default;   // #333
+$gray:                   #52575C !default; // #555
+$gray-light:             #7A8288 !default;   // #999
+$gray-lighter:           #999 !default; // #eee
+
+$brand-primary:         $gray-light !default;
+$brand-success:         #62c462 !default;
+$brand-info:            #5bc0de !default;
+$brand-warning:         #f89406 !default;
+$brand-danger:          #ee5f5b !default;
+
+
+//== Scaffolding
+//
+//## Settings for some of the most global styles.
+
+//** Background color for `<body>`.
+$body-bg:               $gray-darker !default;
+//** Global text color on `<body>`.
+$text-color:            #C8C8C8 !default;
+
+//** Global textual link color.
+$link-color:            #fff !default;
+//** Link hover color set via `darken()` function.
+$link-hover-color:      #fff !default;
+//** Link hover decoration.
+$link-hover-decoration: underline !default;
+
+
+//== Typography
+//
+//## Font, line-height, and color for body text, headings, and more.
+
+$font-family-sans-serif:  "Helvetica Neue", Helvetica, Arial, sans-serif !default;
+$font-family-serif:       Georgia, "Times New Roman", Times, serif !default;
+//** Default monospace fonts for `<code>`, `<kbd>`, and `<pre>`.
+$font-family-monospace:   Menlo, Monaco, Consolas, "Courier New", monospace !default;
+$font-family-base:        $font-family-sans-serif !default;
+
+$font-size-base:          14px !default;
+$font-size-large:         ceil(($font-size-base * 1.25)) !default; // ~18px
+$font-size-small:         ceil(($font-size-base * 0.85)) !default; // ~12px
+
+$font-size-h1:            floor(($font-size-base * 2.6)) !default; // ~36px
+$font-size-h2:            floor(($font-size-base * 2.15)) !default; // ~30px
+$font-size-h3:            ceil(($font-size-base * 1.7)) !default; // ~24px
+$font-size-h4:            ceil(($font-size-base * 1.25)) !default; // ~18px
+$font-size-h5:            $font-size-base !default;
+$font-size-h6:            ceil(($font-size-base * 0.85)) !default; // ~12px
+
+//** Unit-less `line-height` for use in components like buttons.
+$line-height-base:        1.428571429 !default; // 20/14
+//** Computed "line-height" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.
+$line-height-computed:    floor(($font-size-base * $line-height-base)) !default; // ~20px
+
+//** By default, this inherits from the `<body>`.
+$headings-font-family:    $font-family-base !default;
+$headings-font-weight:    500 !default;
+$headings-line-height:    1.1 !default;
+$headings-color:          inherit !default;
+
+
+//== Iconography
+//
+//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.
+
+//** Load fonts from this directory.
+$icon-font-path: if($bootstrap-sass-asset-helper, "bootstrap/", "../fonts/bootstrap/") !default;
+//** File name for all font files.
+$icon-font-name:          "glyphicons-halflings-regular" !default;
+//** Element ID within SVG icon file.
+$icon-font-svg-id:        "glyphicons_halflingsregular" !default;
+
+
+//== Components
+//
+//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).
+
+$padding-base-vertical:     8px !default;
+$padding-base-horizontal:   12px !default;
+
+$padding-large-vertical:    14px !default;
+$padding-large-horizontal:  16px !default;
+
+$padding-small-vertical:    5px !default;
+$padding-small-horizontal:  10px !default;
+
+$padding-xs-vertical:       1px !default;
+$padding-xs-horizontal:     5px !default;
+
+$line-height-large:         1.3333333 !default; // extra decimals for Win 8.1 Chrome
+$line-height-small:         1.5 !default;
+
+$border-radius-base:        4px !default;
+$border-radius-large:       6px !default;
+$border-radius-small:       3px !default;
+
+//** Global color for active items (e.g., navs or dropdowns).
+$component-active-color:    #fff !default;
+//** Global background color for active items (e.g., navs or dropdowns).
+$component-active-bg:       transparent !default;
+
+//** Width of the `border` for generating carets that indicate dropdowns.
+$caret-width-base:          4px !default;
+//** Carets increase slightly in size for larger components.
+$caret-width-large:         5px !default;
+
+
+//== Tables
+//
+//## Customizes the `.table` component with basic values, each used across all table variations.
+
+//** Padding for `<th>`s and `<td>`s.
+$table-cell-padding:            8px !default;
+//** Padding for cells in `.table-condensed`.
+$table-condensed-cell-padding:  5px !default;
+
+//** Default background color used for all tables.
+$table-bg:                      lighten($body-bg, 3%) !default;
+//** Background color used for `.table-striped`.
+$table-bg-accent:               lighten($table-bg, 3%) !default;
+//** Background color used for `.table-hover`.
+$table-bg-hover:                lighten($table-bg, 12%) !default;
+$table-bg-active:               $table-bg-hover !default;
+
+//** Border color for table and cell borders.
+$table-border-color:            darken($gray-darker, 5%) !default;
+
+
+//== Buttons
+//
+//## For each of Bootstrap's buttons, define text, background and border color.
+
+$btn-font-weight:                normal !default;
+
+$btn-default-color:              #fff !default;
+$btn-default-bg:                 $gray-dark !default;
+$btn-default-border:             $btn-default-bg !default;
+
+$btn-primary-color:              $btn-default-color !default;
+$btn-primary-bg:                 $brand-primary !default;
+$btn-primary-border:             $btn-primary-bg !default;
+
+$btn-success-color:              $btn-default-color !default;
+$btn-success-bg:                 $brand-success !default;
+$btn-success-border:             $btn-success-bg !default;
+
+$btn-info-color:                 $btn-default-color !default;
+$btn-info-bg:                    $brand-info !default;
+$btn-info-border:                $btn-info-bg !default;
+
+$btn-warning-color:              $btn-default-color !default;
+$btn-warning-bg:                 $brand-warning !default;
+$btn-warning-border:             $btn-warning-bg !default;
+
+$btn-danger-color:               $btn-default-color !default;
+$btn-danger-bg:                  $brand-danger !default;
+$btn-danger-border:              $btn-danger-bg !default;
+
+$btn-link-disabled-color:        $gray-light !default;
+
+// Allows for customizing button radius independently from global border radius
+$btn-border-radius-base:         $border-radius-base !default;
+$btn-border-radius-large:        $border-radius-large !default;
+$btn-border-radius-small:        $border-radius-small !default;
+
+
+//== Forms
+//
+//##
+
+//** `<input>` background color
+$input-bg:                       #fff !default;
+//** `<input disabled>` background color
+$input-bg-disabled:              $gray-lighter !default;
+
+//** Text color for `<input>`s
+$input-color:                    $gray-darker !default;
+//** `<input>` border color
+$input-border:                   #000 !default;
+
+// TODO: Rename `$input-border-radius` to `$input-border-radius-base` in v4
+//** Default `.form-control` border radius
+// This has no effect on `<select>`s in some browsers, due to the limited stylability of `<select>`s in CSS.
+$input-border-radius:            $border-radius-base !default;
+//** Large `.form-control` border radius
+$input-border-radius-large:      $border-radius-large !default;
+//** Small `.form-control` border radius
+$input-border-radius-small:      $border-radius-small !default;
+
+//** Border color for inputs on focus
+$input-border-focus:             #66afe9 !default;
+
+//** Placeholder text color
+$input-color-placeholder:        $gray-light !default;
+
+//** Default `.form-control` height
+$input-height-base:              ($line-height-computed + ($padding-base-vertical * 2) + 2) !default;
+//** Large `.form-control` height
+$input-height-large:             (ceil($font-size-large * $line-height-large) + ($padding-large-vertical * 2) + 2) !default;
+//** Small `.form-control` height
+$input-height-small:             (floor($font-size-small * $line-height-small) + ($padding-small-vertical * 2) + 2) !default;
+
+//** `.form-group` margin
+$form-group-margin-bottom:       15px !default;
+
+$legend-color:                   $text-color !default;
+$legend-border-color:            darken($gray-darker, 5%) !default;
+
+//** Background color for textual input addons
+$input-group-addon-bg:           $gray-lighter !default;
+//** Border color for textual input addons
+$input-group-addon-border-color: rgba(0, 0, 0, 0.6) !default;
+
+//** Disabled cursor for form controls and buttons.
+$cursor-disabled:                not-allowed !default;
+
+
+//== Dropdowns
+//
+//## Dropdown menu container and contents.
+
+//** Background for the dropdown menu.
+$dropdown-bg:                    $gray-dark !default;
+//** Dropdown menu `border-color`.
+$dropdown-border:                rgba(0,0,0,.15) !default;
+//** Dropdown menu `border-color` **for IE8**.
+$dropdown-fallback-border:       $gray-darker !default;
+//** Divider color for between dropdown items.
+$dropdown-divider-bg:            $gray-darker !default;
+
+//** Dropdown link text color.
+$dropdown-link-color:            $text-color !default;
+//** Hover color for dropdown links.
+$dropdown-link-hover-color:      #fff !default;
+//** Hover background for dropdown links.
+$dropdown-link-hover-bg:         $gray-darker !default;
+
+//** Active dropdown menu item text color.
+$dropdown-link-active-color:     #fff !default;
+//** Active dropdown menu item background color.
+$dropdown-link-active-bg:        $gray-darker !default;
+
+//** Disabled dropdown menu item background color.
+$dropdown-link-disabled-color:   $gray-light !default;
+
+//** Text color for headers within dropdown menus.
+$dropdown-header-color:          $gray-light !default;
+
+//** Deprecated `$dropdown-caret-color` as of v3.1.0
+$dropdown-caret-color:           #000 !default;
+
+
+//-- Z-index master list
+//
+// Warning: Avoid customizing these values. They're used for a bird's eye view
+// of components dependent on the z-axis and are designed to all work together.
+//
+// Note: These variables are not generated into the Customizer.
+
+$zindex-navbar:            1000 !default;
+$zindex-dropdown:          1000 !default;
+$zindex-popover:           1060 !default;
+$zindex-tooltip:           1070 !default;
+$zindex-navbar-fixed:      1030 !default;
+$zindex-modal-background:  1040 !default;
+$zindex-modal:             1050 !default;
+
+
+//== Media queries breakpoints
+//
+//## Define the breakpoints at which your layout will change, adapting to different screen sizes.
+
+// Extra small screen / phone
+//** Deprecated `$screen-xs` as of v3.0.1
+$screen-xs:                  480px !default;
+//** Deprecated `$screen-xs-min` as of v3.2.0
+$screen-xs-min:              $screen-xs !default;
+//** Deprecated `$screen-phone` as of v3.0.1
+$screen-phone:               $screen-xs-min !default;
+
+// Small screen / tablet
+//** Deprecated `$screen-sm` as of v3.0.1
+$screen-sm:                  768px !default;
+$screen-sm-min:              $screen-sm !default;
+//** Deprecated `$screen-tablet` as of v3.0.1
+$screen-tablet:              $screen-sm-min !default;
+
+// Medium screen / desktop
+//** Deprecated `$screen-md` as of v3.0.1
+$screen-md:                  992px !default;
+$screen-md-min:              $screen-md !default;
+//** Deprecated `$screen-desktop` as of v3.0.1
+$screen-desktop:             $screen-md-min !default;
+
+// Large screen / wide desktop
+//** Deprecated `$screen-lg` as of v3.0.1
+$screen-lg:                  1200px !default;
+$screen-lg-min:              $screen-lg !default;
+//** Deprecated `$screen-lg-desktop` as of v3.0.1
+$screen-lg-desktop:          $screen-lg-min !default;
+
+// So media queries don't overlap when required, provide a maximum
+$screen-xs-max:              ($screen-sm-min - 1) !default;
+$screen-sm-max:              ($screen-md-min - 1) !default;
+$screen-md-max:              ($screen-lg-min - 1) !default;
+
+
+//== Grid system
+//
+//## Define your custom responsive grid.
+
+//** Number of columns in the grid.
+$grid-columns:              12 !default;
+//** Padding between columns. Gets divided in half for the left and right.
+$grid-gutter-width:         30px !default;
+// Navbar collapse
+//** Point at which the navbar becomes uncollapsed.
+$grid-float-breakpoint:     $screen-sm-min !default;
+//** Point at which the navbar begins collapsing.
+$grid-float-breakpoint-max: ($grid-float-breakpoint - 1) !default;
+
+
+//== Container sizes
+//
+//## Define the maximum width of `.container` for different screen sizes.
+
+// Small screen / tablet
+$container-tablet:             (720px + $grid-gutter-width) !default;
+//** For `$screen-sm-min` and up.
+$container-sm:                 $container-tablet !default;
+
+// Medium screen / desktop
+$container-desktop:            (940px + $grid-gutter-width) !default;
+//** For `$screen-md-min` and up.
+$container-md:                 $container-desktop !default;
+
+// Large screen / wide desktop
+$container-large-desktop:      (1140px + $grid-gutter-width) !default;
+//** For `$screen-lg-min` and up.
+$container-lg:                 $container-large-desktop !default;
+
+
+//== Navbar
+//
+//##
+
+// Basics of a navbar
+$navbar-height:                    50px !default;
+$navbar-margin-bottom:             $line-height-computed !default;
+$navbar-border-radius:             $border-radius-base !default;
+$navbar-padding-horizontal:        floor(($grid-gutter-width / 2)) !default;
+$navbar-padding-vertical:          (($navbar-height - $line-height-computed) / 2) !default;
+$navbar-collapse-max-height:       340px !default;
+
+$navbar-default-color:             $text-color !default;
+$navbar-default-bg:                $gray-dark !default;
+$navbar-default-border:            darken($navbar-default-bg, 6.5%) !default;
+
+// Navbar links
+$navbar-default-link-color:                $text-color !default;
+$navbar-default-link-hover-color:          #fff !default;
+$navbar-default-link-hover-bg:             darken($navbar-default-bg, 8%) !default;
+$navbar-default-link-active-color:         #fff !default;
+$navbar-default-link-active-bg:            darken($navbar-default-bg, 8%) !default;
+$navbar-default-link-disabled-color:       #ccc !default;
+$navbar-default-link-disabled-bg:          transparent !default;
+
+// Navbar brand label
+$navbar-default-brand-color:               $navbar-default-link-color !default;
+$navbar-default-brand-hover-color:         #fff !default;
+$navbar-default-brand-hover-bg:            none !default;
+
+// Navbar toggle
+$navbar-default-toggle-hover-bg:           darken($navbar-default-bg, 8%) !default;
+$navbar-default-toggle-icon-bar-bg:        $text-color !default;
+$navbar-default-toggle-border-color:       darken($navbar-default-bg, 8%) !default;
+
+
+//=== Inverted navbar
+// Reset inverted navbar basics
+$navbar-inverse-color:                      #ccc !default;
+$navbar-inverse-bg:                         $brand-primary !default;
+$navbar-inverse-border:                     darken($navbar-inverse-bg, 10%) !default;
+
+// Inverted navbar links
+$navbar-inverse-link-color:                 #ccc !default;
+$navbar-inverse-link-hover-color:           #fff !default;
+$navbar-inverse-link-hover-bg:              darken($navbar-inverse-bg, 12%) !default;
+$navbar-inverse-link-active-color:          $navbar-inverse-link-hover-color !default;
+$navbar-inverse-link-active-bg:             darken($navbar-inverse-bg, 12%) !default;
+$navbar-inverse-link-disabled-color:        #ccc !default;
+$navbar-inverse-link-disabled-bg:           transparent !default;
+
+// Inverted navbar brand label
+$navbar-inverse-brand-color:                $navbar-inverse-link-color !default;
+$navbar-inverse-brand-hover-color:          #fff !default;
+$navbar-inverse-brand-hover-bg:             none !default;
+
+// Inverted navbar toggle
+$navbar-inverse-toggle-hover-bg:            darken($navbar-inverse-bg, 12%) !default;
+$navbar-inverse-toggle-icon-bar-bg:         #fff !default;
+$navbar-inverse-toggle-border-color:        darken($navbar-inverse-bg, 12%) !default;
+
+
+//== Navs
+//
+//##
+
+//=== Shared nav styles
+$nav-link-padding:                          10px 15px !default;
+$nav-link-hover-bg:                         lighten($body-bg, 10%) !default;
+
+$nav-disabled-link-color:                   $gray-light !default;
+$nav-disabled-link-hover-color:             $gray-light !default;
+
+//== Tabs
+$nav-tabs-border-color:                     darken($gray-darker, 5%) !default;
+
+$nav-tabs-link-hover-border-color:          darken($gray-darker, 5%) !default;
+
+$nav-tabs-active-link-hover-bg:             lighten($body-bg, 10%) !default;
+$nav-tabs-active-link-hover-color:          #fff !default;
+$nav-tabs-active-link-hover-border-color:   darken($gray-darker, 5%) !default;
+
+$nav-tabs-justified-link-border-color:            $nav-tabs-border-color !default;
+$nav-tabs-justified-active-link-border-color:     $body-bg !default;
+
+//== Pills
+$nav-pills-border-radius:                   $border-radius-base !default;
+$nav-pills-active-link-hover-bg:            $component-active-bg !default;
+$nav-pills-active-link-hover-color:         $component-active-color !default;
+
+
+//== Pagination
+//
+//##
+
+$pagination-color:                     $link-color !default;
+$pagination-bg:                        $btn-default-bg !default;
+$pagination-border:                    rgba(0, 0, 0, 0.6) !default;
+
+$pagination-hover-color:               $link-hover-color !default;
+$pagination-hover-bg:                  transparent !default;
+$pagination-hover-border:              rgba(0, 0, 0, 0.6) !default;
+
+$pagination-active-color:              #fff !default;
+$pagination-active-bg:                 darken($pagination-bg, 10%) !default;
+$pagination-active-border:             rgba(0, 0, 0, 0.6) !default;
+
+$pagination-disabled-color:            $gray-light !default;
+$pagination-disabled-bg:               #fff !default;
+$pagination-disabled-border:           rgba(0, 0, 0, 0.6) !default;
+
+
+//== Pager
+//
+//##
+
+$pager-bg:                             $pagination-bg !default;
+$pager-border:                         $pagination-border !default;
+$pager-border-radius:                  15px !default;
+
+$pager-hover-bg:                       $pagination-hover-bg !default;
+
+$pager-active-bg:                      $pagination-active-bg !default;
+$pager-active-color:                   $pagination-active-color !default;
+
+$pager-disabled-color:                 $gray-light !default;
+
+
+//== Jumbotron
+//
+//##
+
+$jumbotron-padding:              30px !default;
+$jumbotron-color:                inherit !default;
+$jumbotron-bg:                   darken($body-bg, 5%) !default;
+$jumbotron-heading-color:        inherit !default;
+$jumbotron-font-size:            ceil(($font-size-base * 1.5)) !default;
+$jumbotron-heading-font-size:    ceil(($font-size-base * 4.5)) !default;
+
+
+//== Form states and alerts
+//
+//## Define colors for form feedback states and, by default, alerts.
+
+$state-success-text:             #fff !default;
+$state-success-bg:               $brand-success !default;
+$state-success-border:           darken(adjust-hue($state-success-bg, -10), 5%) !default;
+
+$state-info-text:                #fff !default;
+$state-info-bg:                  $brand-info !default;
+$state-info-border:              darken(adjust-hue($state-info-bg, -10), 7%) !default;
+
+$state-warning-text:             #fff !default;
+$state-warning-bg:               $brand-warning !default;
+$state-warning-border:           darken(adjust-hue($state-warning-bg, -10), 3%) !default;
+
+$state-danger-text:              #fff !default;
+$state-danger-bg:                $brand-danger !default;
+$state-danger-border:            darken(adjust-hue($state-danger-bg, -10), 3%) !default;
+
+
+//== Tooltips
+//
+//##
+
+//** Tooltip max width
+$tooltip-max-width:           200px !default;
+//** Tooltip text color
+$tooltip-color:               #fff !default;
+//** Tooltip background color
+$tooltip-bg:                  #000 !default;
+$tooltip-opacity:             .9 !default;
+
+//** Tooltip arrow width
+$tooltip-arrow-width:         5px !default;
+//** Tooltip arrow color
+$tooltip-arrow-color:         $tooltip-bg !default;
+
+
+//== Popovers
+//
+//##
+
+//** Popover body background color
+$popover-bg:                          lighten($body-bg, 3%) !default;
+//** Popover maximum width
+$popover-max-width:                   276px !default;
+//** Popover border color
+$popover-border-color:                rgba(0,0,0,.2) !default;
+//** Popover fallback border color
+$popover-fallback-border-color:       #999 !default;
+
+//** Popover title background color
+$popover-title-bg:                    $popover-bg !default;
+
+//** Popover arrow width
+$popover-arrow-width:                 10px !default;
+//** Popover arrow color
+$popover-arrow-color:                 $popover-bg !default;
+
+//** Popover outer arrow width
+$popover-arrow-outer-width:           ($popover-arrow-width + 1) !default;
+//** Popover outer arrow color
+$popover-arrow-outer-color:           fadein($popover-border-color, 5%) !default;
+//** Popover outer arrow fallback color
+$popover-arrow-outer-fallback-color:  darken($popover-fallback-border-color, 20%) !default;
+
+
+//== Labels
+//
+//##
+
+//** Default label background color
+$label-default-bg:            $btn-default-bg !default;
+//** Primary label background color
+$label-primary-bg:            $brand-primary !default;
+//** Success label background color
+$label-success-bg:            $brand-success !default;
+//** Info label background color
+$label-info-bg:               $brand-info !default;
+//** Warning label background color
+$label-warning-bg:            $brand-warning !default;
+//** Danger label background color
+$label-danger-bg:             $brand-danger !default;
+
+//** Default label text color
+$label-color:                 #fff !default;
+//** Default text color of a linked label
+$label-link-hover-color:      #fff !default;
+
+
+//== Modals
+//
+//##
+
+//** Padding applied to the modal body
+$modal-inner-padding:         20px !default;
+
+//** Padding applied to the modal title
+$modal-title-padding:         15px !default;
+//** Modal title line-height
+$modal-title-line-height:     $line-height-base !default;
+
+//** Background color of modal content area
+$modal-content-bg:                             lighten($body-bg, 3%) !default;
+//** Modal content border color
+$modal-content-border-color:                   rgba(0,0,0,.2) !default;
+//** Modal content border color **for IE8**
+$modal-content-fallback-border-color:          #999 !default;
+
+//** Modal backdrop background color
+$modal-backdrop-bg:           #000 !default;
+//** Modal backdrop opacity
+$modal-backdrop-opacity:      .5 !default;
+//** Modal header border color
+$modal-header-border-color:   darken($gray-darker, 5%) !default;
+//** Modal footer border color
+$modal-footer-border-color:   $modal-header-border-color !default;
+
+$modal-lg:                    900px !default;
+$modal-md:                    600px !default;
+$modal-sm:                    300px !default;
+
+
+//== Alerts
+//
+//## Define alert colors, border radius, and padding.
+
+$alert-padding:               15px !default;
+$alert-border-radius:         $border-radius-base !default;
+$alert-link-font-weight:      bold !default;
+
+$alert-success-bg:            $state-success-bg !default;
+$alert-success-text:          $state-success-text !default;
+$alert-success-border:        $state-success-border !default;
+
+$alert-info-bg:               $state-info-bg !default;
+$alert-info-text:             $state-info-text !default;
+$alert-info-border:           $state-info-border !default;
+
+$alert-warning-bg:            $state-warning-bg !default;
+$alert-warning-text:          $state-warning-text !default;
+$alert-warning-border:        $state-warning-border !default;
+
+$alert-danger-bg:             $state-danger-bg !default;
+$alert-danger-text:           $state-danger-text !default;
+$alert-danger-border:         $state-danger-border !default;
+
+
+//== Progress bars
+//
+//##
+
+//** Background color of the whole progress component
+$progress-bg:                 darken($body-bg, 5%) !default;
+//** Progress bar text color
+$progress-bar-color:          #fff !default;
+//** Variable for setting rounded corners on progress bar.
+$progress-border-radius:      $border-radius-base !default;
+
+//** Default progress bar color
+$progress-bar-bg:             $brand-primary !default;
+//** Success progress bar color
+$progress-bar-success-bg:     $brand-success !default;
+//** Warning progress bar color
+$progress-bar-warning-bg:     $brand-warning !default;
+//** Danger progress bar color
+$progress-bar-danger-bg:      $brand-danger !default;
+//** Info progress bar color
+$progress-bar-info-bg:        $brand-info !default;
+
+
+//== List group
+//
+//##
+
+//** Background color on `.list-group-item`
+$list-group-bg:                 lighten($body-bg, 5%) !default;
+//** `.list-group-item` border color
+$list-group-border:             rgba(0, 0, 0, 0.6) !default;
+//** List group border radius
+$list-group-border-radius:      $border-radius-base !default;
+
+//** Background color of single list items on hover
+$list-group-hover-bg:           lighten($body-bg, 10%) !default;
+//** Text color of active list items
+$list-group-active-color:       $component-active-color !default;
+//** Background color of active list items
+$list-group-active-bg:          lighten($body-bg, 10%) !default;
+//** Border color of active list elements
+$list-group-active-border:      $list-group-border !default;
+//** Text color for content within active list items
+$list-group-active-text-color:  lighten($list-group-active-bg, 40%) !default;
+
+//** Text color of disabled list items
+$list-group-disabled-color:      $gray-light !default;
+//** Background color of disabled list items
+$list-group-disabled-bg:         $gray-lighter !default;
+//** Text color for content within disabled list items
+$list-group-disabled-text-color: $list-group-disabled-color !default;
+
+$list-group-link-color:         $text-color !default;
+$list-group-link-hover-color:   $list-group-link-color !default;
+$list-group-link-heading-color: #fff !default;
+
+
+//== Panels
+//
+//##
+
+$panel-bg:                    lighten($body-bg, 3%) !default;
+$panel-body-padding:          15px !default;
+$panel-heading-padding:       10px 15px !default;
+$panel-footer-padding:        $panel-heading-padding !default;
+$panel-border-radius:         $border-radius-base !default;
+
+//** Border color for elements within panels
+$panel-inner-border:          rgba(0, 0, 0, 0.6) !default;
+$panel-footer-bg:             lighten($body-bg, 10%) !default;
+
+$panel-default-text:          $text-color !default;
+$panel-default-border:        rgba(0, 0, 0, 0.6) !default;
+$panel-default-heading-bg:    $panel-footer-bg !default;
+
+$panel-primary-text:          #fff !default;
+$panel-primary-border:        $panel-default-border !default;
+$panel-primary-heading-bg:    $brand-primary !default;
+
+$panel-success-text:          $state-success-text !default;
+$panel-success-border:        $panel-default-border !default;
+$panel-success-heading-bg:    $state-success-bg !default;
+
+$panel-info-text:             $state-info-text !default;
+$panel-info-border:           $panel-default-border !default;
+$panel-info-heading-bg:       $state-info-bg !default;
+
+$panel-warning-text:          $state-warning-text !default;
+$panel-warning-border:        $panel-default-border !default;
+$panel-warning-heading-bg:    $state-warning-bg !default;
+
+$panel-danger-text:           $state-danger-text !default;
+$panel-danger-border:         $panel-default-border !default;
+$panel-danger-heading-bg:     $state-danger-bg !default;
+
+
+//== Thumbnails
+//
+//##
+
+//** Padding around the thumbnail image
+$thumbnail-padding:           4px !default;
+//** Thumbnail background color
+$thumbnail-bg:                darken($body-bg, 5%) !default;
+//** Thumbnail border color
+$thumbnail-border:            darken($thumbnail-bg, 7%) !default;
+//** Thumbnail border radius
+$thumbnail-border-radius:     $border-radius-base !default;
+
+//** Custom text color for thumbnail captions
+$thumbnail-caption-color:     $text-color !default;
+//** Padding around the thumbnail caption
+$thumbnail-caption-padding:   9px !default;
+
+
+//== Wells
+//
+//##
+
+$well-bg:                     $thumbnail-bg !default;
+$well-border:                 $thumbnail-border !default;
+
+
+//== Badges
+//
+//##
+
+$badge-color:                 #fff !default;
+//** Linked badge text color on hover
+$badge-link-hover-color:      #fff !default;
+$badge-bg:                    $gray-light !default;
+
+//** Badge text color in active nav link
+$badge-active-color:          $link-color !default;
+//** Badge background color in active nav link
+$badge-active-bg:             $gray-light !default;
+
+$badge-font-weight:           bold !default;
+$badge-line-height:           1 !default;
+$badge-border-radius:         10px !default;
+
+
+//== Breadcrumbs
+//
+//##
+
+$breadcrumb-padding-vertical:   8px !default;
+$breadcrumb-padding-horizontal: 15px !default;
+//** Breadcrumb background color
+$breadcrumb-bg:                 transparent !default;
+//** Breadcrumb text color
+$breadcrumb-color:              #ccc !default;
+//** Text color of current page in the breadcrumb
+$breadcrumb-active-color:       $gray-light !default;
+//** Textual separator for between breadcrumb elements
+$breadcrumb-separator:          "/" !default;
+
+
+//== Carousel
+//
+//##
+
+$carousel-text-shadow:                        0 1px 2px rgba(0,0,0,.6) !default;
+
+$carousel-control-color:                      #fff !default;
+$carousel-control-width:                      15% !default;
+$carousel-control-opacity:                    .5 !default;
+$carousel-control-font-size:                  20px !default;
+
+$carousel-indicator-active-bg:                #fff !default;
+$carousel-indicator-border-color:             #fff !default;
+
+$carousel-caption-color:                      #fff !default;
+
+
+//== Close
+//
+//##
+
+$close-font-weight:           bold !default;
+$close-color:                 #000 !default;
+$close-text-shadow:           0 1px 0 #fff !default;
+
+
+//== Code
+//
+//##
+
+$code-color:                  #c7254e !default;
+$code-bg:                     #f9f2f4 !default;
+
+$kbd-color:                   #fff !default;
+$kbd-bg:                      #333 !default;
+
+$pre-bg:                      #f5f5f5 !default;
+$pre-color:                   $gray-dark !default;
+$pre-border-color:            #ccc !default;
+$pre-scrollable-max-height:   340px !default;
+
+
+//== Type
+//
+//##
+
+//** Horizontal offset for forms and lists.
+$component-offset-horizontal: 180px !default;
+//** Text muted color
+$text-muted:                  $gray-light !default;
+//** Abbreviations and acronyms border color
+$abbr-border-color:           $gray-light !default;
+//** Headings small color
+$headings-small-color:        $gray-light !default;
+//** Blockquote small color
+$blockquote-small-color:      $gray-light !default;
+//** Blockquote font size
+$blockquote-font-size:        ($font-size-base * 1.25) !default;
+//** Blockquote border color
+$blockquote-border-color:     $gray-light !default;
+//** Page header border color
+$page-header-border-color:    darken($gray-darker, 5%) !default;
+//** Width of horizontal description list titles
+$dl-horizontal-offset:        $component-offset-horizontal !default;
+//** Point at which .dl-horizontal becomes horizontal
+$dl-horizontal-breakpoint:    $grid-float-breakpoint !default;
+//** Horizontal line color.
+$hr-border:                   darken($gray-darker, 5%) !default;
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/yeti/font.css
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/yeti/font.css	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/yeti/font.css	(revision 3762)
@@ -0,0 +1,42 @@
+@font-face {
+  font-family: 'Open Sans';
+  font-style: italic;
+  font-weight: 300;
+  font-stretch: normal;
+  src: url(fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk5hkWVAexg.woff) format('woff');
+}
+@font-face {
+  font-family: 'Open Sans';
+  font-style: italic;
+  font-weight: 400;
+  font-stretch: normal;
+  src: url(fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk8ZkWVAexg.woff) format('woff');
+}
+@font-face {
+  font-family: 'Open Sans';
+  font-style: italic;
+  font-weight: 700;
+  font-stretch: normal;
+  src: url(fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0RkyFjWVAexg.woff) format('woff');
+}
+@font-face {
+  font-family: 'Open Sans';
+  font-style: normal;
+  font-weight: 300;
+  font-stretch: normal;
+  src: url(fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsiH0B4gaVQ.woff) format('woff');
+}
+@font-face {
+  font-family: 'Open Sans';
+  font-style: normal;
+  font-weight: 400;
+  font-stretch: normal;
+  src: url(fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B4gaVQ.woff) format('woff');
+}
+@font-face {
+  font-family: 'Open Sans';
+  font-style: normal;
+  font-weight: 700;
+  font-stretch: normal;
+  src: url(fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1x4gaVQ.woff) format('woff');
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/yeti/_variables.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/yeti/_variables.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/yeti/_variables.scss	(revision 3762)
@@ -0,0 +1,870 @@
+$bootstrap-sass-asset-helper: false !default;
+// Yeti 3.4.1
+// Variables
+// --------------------------------------------------
+
+
+//== Colors
+//
+//## Gray and brand colors for use across Bootstrap.
+
+$gray-base:              #000 !default;
+$gray-darker:            lighten($gray-base, 13.5%) !default; // #222
+$gray-dark:              lighten($gray-base, 20%) !default;   // #333
+$gray:                   #6f6f6f !default; // #555
+$gray-light:             lighten($gray-base, 60%) !default;   // #999
+$gray-lighter:           lighten($gray-base, 93.5%) !default; // #eee
+
+$brand-primary:         #008cba !default;
+$brand-success:         #43ac6a !default;
+$brand-info:            #5bc0de !default;
+$brand-warning:         #E99002 !default;
+$brand-danger:          #F04124 !default;
+
+
+//== Scaffolding
+//
+//## Settings for some of the most global styles.
+
+//** Background color for `<body>`.
+$body-bg:               #fff !default;
+//** Global text color on `<body>`.
+$text-color:            $gray-darker !default;
+
+//** Global textual link color.
+$link-color:            $brand-primary !default;
+//** Link hover color set via `darken()` function.
+$link-hover-color:      $link-color !default;
+//** Link hover decoration.
+$link-hover-decoration: underline !default;
+
+
+//== Typography
+//
+//## Font, line-height, and color for body text, headings, and more.
+
+$font-family-sans-serif:  "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif !default;
+$font-family-serif:       Georgia, "Times New Roman", Times, serif !default;
+//** Default monospace fonts for `<code>`, `<kbd>`, and `<pre>`.
+$font-family-monospace:   Menlo, Monaco, Consolas, "Courier New", monospace !default;
+$font-family-base:        $font-family-sans-serif !default;
+
+$font-size-base:          15px !default;
+$font-size-large:         ceil(($font-size-base * 1.25)) !default; // ~18px
+$font-size-small:         12px !default; // ~12px
+
+$font-size-h1:            floor(($font-size-base * 2.6)) !default; // ~36px
+$font-size-h2:            floor(($font-size-base * 2.15)) !default; // ~30px
+$font-size-h3:            ceil(($font-size-base * 1.7)) !default; // ~24px
+$font-size-h4:            ceil(($font-size-base * 1.25)) !default; // ~18px
+$font-size-h5:            $font-size-base !default;
+$font-size-h6:            ceil(($font-size-base * 0.85)) !default; // ~12px
+
+//** Unit-less `line-height` for use in components like buttons.
+$line-height-base:        1.4 !default;
+//** Computed "line-height" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.
+$line-height-computed:    floor(($font-size-base * $line-height-base)) !default; // ~20px
+
+//** By default, this inherits from the `<body>`.
+$headings-font-family:    $font-family-base !default;
+$headings-font-weight:    300 !default;
+$headings-line-height:    1.1 !default;
+$headings-color:          inherit !default;
+
+
+//== Iconography
+//
+//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.
+
+//** Load fonts from this directory.
+$icon-font-path: if($bootstrap-sass-asset-helper, "bootstrap/", "../fonts/bootstrap/") !default;
+//** File name for all font files.
+$icon-font-name:          "glyphicons-halflings-regular" !default;
+//** Element ID within SVG icon file.
+$icon-font-svg-id:        "glyphicons_halflingsregular" !default;
+
+
+//== Components
+//
+//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).
+
+$padding-base-vertical:     8px !default;
+$padding-base-horizontal:   12px !default;
+
+$padding-large-vertical:    16px !default;
+$padding-large-horizontal:  20px !default;
+
+$padding-small-vertical:    8px !default;
+$padding-small-horizontal:  12px !default;
+
+$padding-xs-vertical:       4px !default;
+$padding-xs-horizontal:     6px !default;
+
+$line-height-large:         1.3333333 !default; // extra decimals for Win 8.1 Chrome
+$line-height-small:         1.5 !default;
+
+$border-radius-base:        0 !default;
+$border-radius-large:       0 !default;
+$border-radius-small:       0 !default;
+
+//** Global color for active items (e.g., navs or dropdowns).
+$component-active-color:    #fff !default;
+//** Global background color for active items (e.g., navs or dropdowns).
+$component-active-bg:       $brand-primary !default;
+
+//** Width of the `border` for generating carets that indicate dropdowns.
+$caret-width-base:          4px !default;
+//** Carets increase slightly in size for larger components.
+$caret-width-large:         5px !default;
+
+
+//== Tables
+//
+//## Customizes the `.table` component with basic values, each used across all table variations.
+
+//** Padding for `<th>`s and `<td>`s.
+$table-cell-padding:            8px !default;
+//** Padding for cells in `.table-condensed`.
+$table-condensed-cell-padding:  5px !default;
+
+//** Default background color used for all tables.
+$table-bg:                      transparent !default;
+//** Background color used for `.table-striped`.
+$table-bg-accent:               #f9f9f9 !default;
+//** Background color used for `.table-hover`.
+$table-bg-hover:                #f5f5f5 !default;
+$table-bg-active:               $table-bg-hover !default;
+
+//** Border color for table and cell borders.
+$table-border-color:            #ddd !default;
+
+
+//== Buttons
+//
+//## For each of Bootstrap's buttons, define text, background and border color.
+
+$btn-font-weight:                normal !default;
+
+$btn-default-color:              $gray-dark !default;
+$btn-default-bg:                 #e7e7e7 !default;
+$btn-default-border:             #ccc !default;
+
+$btn-primary-color:              #fff !default;
+$btn-primary-bg:                 $brand-primary !default;
+$btn-primary-border:             darken($btn-primary-bg, 5%) !default;
+
+$btn-success-color:              #fff !default;
+$btn-success-bg:                 $brand-success !default;
+$btn-success-border:             darken($btn-success-bg, 5%) !default;
+
+$btn-info-color:                 #fff !default;
+$btn-info-bg:                    $brand-info !default;
+$btn-info-border:                darken($btn-info-bg, 5%) !default;
+
+$btn-warning-color:              #fff !default;
+$btn-warning-bg:                 $brand-warning !default;
+$btn-warning-border:             darken($btn-warning-bg, 5%) !default;
+
+$btn-danger-color:               #fff !default;
+$btn-danger-bg:                  $brand-danger !default;
+$btn-danger-border:              darken($btn-danger-bg, 5%) !default;
+
+$btn-link-disabled-color:        $gray-light !default;
+
+// Allows for customizing button radius independently from global border radius
+$btn-border-radius-base:         $border-radius-base !default;
+$btn-border-radius-large:        $border-radius-large !default;
+$btn-border-radius-small:        $border-radius-small !default;
+
+
+//== Forms
+//
+//##
+
+//** `<input>` background color
+$input-bg:                       #fff !default;
+//** `<input disabled>` background color
+$input-bg-disabled:              $gray-lighter !default;
+
+//** Text color for `<input>`s
+$input-color:                    $gray !default;
+//** `<input>` border color
+$input-border:                   #ccc !default;
+
+// TODO: Rename `$input-border-radius` to `$input-border-radius-base` in v4
+//** Default `.form-control` border radius
+// This has no effect on `<select>`s in some browsers, due to the limited stylability of `<select>`s in CSS.
+$input-border-radius:            $border-radius-base !default;
+//** Large `.form-control` border radius
+$input-border-radius-large:      $border-radius-large !default;
+//** Small `.form-control` border radius
+$input-border-radius-small:      $border-radius-small !default;
+
+//** Border color for inputs on focus
+$input-border-focus:             #66afe9 !default;
+
+//** Placeholder text color
+$input-color-placeholder:        $gray-light !default;
+
+//** Default `.form-control` height
+$input-height-base:              ($line-height-computed + ($padding-base-vertical * 2) + 2) !default;
+//** Large `.form-control` height
+$input-height-large:             (ceil($font-size-large * $line-height-large) + ($padding-large-vertical * 2) + 2) !default;
+//** Small `.form-control` height
+$input-height-small:             (floor($font-size-small * $line-height-small) + ($padding-small-vertical * 2) + 2) !default;
+
+//** `.form-group` margin
+$form-group-margin-bottom:       15px !default;
+
+$legend-color:                   $gray-dark !default;
+$legend-border-color:            #e5e5e5 !default;
+
+//** Background color for textual input addons
+$input-group-addon-bg:           $gray-lighter !default;
+//** Border color for textual input addons
+$input-group-addon-border-color: $input-border !default;
+
+//** Disabled cursor for form controls and buttons.
+$cursor-disabled:                not-allowed !default;
+
+
+//== Dropdowns
+//
+//## Dropdown menu container and contents.
+
+//** Background for the dropdown menu.
+$dropdown-bg:                    #fff !default;
+//** Dropdown menu `border-color`.
+$dropdown-border:                rgba(0,0,0,.15) !default;
+//** Dropdown menu `border-color` **for IE8**.
+$dropdown-fallback-border:       #ccc !default;
+//** Divider color for between dropdown items.
+$dropdown-divider-bg:            rgba(0,0,0,.2) !default;
+
+//** Dropdown link text color.
+$dropdown-link-color:            #555 !default;
+//** Hover color for dropdown links.
+$dropdown-link-hover-color:      darken($gray-dark, 5%) !default;
+//** Hover background for dropdown links.
+$dropdown-link-hover-bg:         #eee !default;
+
+//** Active dropdown menu item text color.
+$dropdown-link-active-color:     $component-active-color !default;
+//** Active dropdown menu item background color.
+$dropdown-link-active-bg:        $component-active-bg !default;
+
+//** Disabled dropdown menu item background color.
+$dropdown-link-disabled-color:   $gray-light !default;
+
+//** Text color for headers within dropdown menus.
+$dropdown-header-color:          $gray-light !default;
+
+//** Deprecated `$dropdown-caret-color` as of v3.1.0
+$dropdown-caret-color:           #000 !default;
+
+
+//-- Z-index master list
+//
+// Warning: Avoid customizing these values. They're used for a bird's eye view
+// of components dependent on the z-axis and are designed to all work together.
+//
+// Note: These variables are not generated into the Customizer.
+
+$zindex-navbar:            1000 !default;
+$zindex-dropdown:          1000 !default;
+$zindex-popover:           1060 !default;
+$zindex-tooltip:           1070 !default;
+$zindex-navbar-fixed:      1030 !default;
+$zindex-modal-background:  1040 !default;
+$zindex-modal:             1050 !default;
+
+
+//== Media queries breakpoints
+//
+//## Define the breakpoints at which your layout will change, adapting to different screen sizes.
+
+// Extra small screen / phone
+//** Deprecated `$screen-xs` as of v3.0.1
+$screen-xs:                  480px !default;
+//** Deprecated `$screen-xs-min` as of v3.2.0
+$screen-xs-min:              $screen-xs !default;
+//** Deprecated `$screen-phone` as of v3.0.1
+$screen-phone:               $screen-xs-min !default;
+
+// Small screen / tablet
+//** Deprecated `$screen-sm` as of v3.0.1
+$screen-sm:                  768px !default;
+$screen-sm-min:              $screen-sm !default;
+//** Deprecated `$screen-tablet` as of v3.0.1
+$screen-tablet:              $screen-sm-min !default;
+
+// Medium screen / desktop
+//** Deprecated `$screen-md` as of v3.0.1
+$screen-md:                  992px !default;
+$screen-md-min:              $screen-md !default;
+//** Deprecated `$screen-desktop` as of v3.0.1
+$screen-desktop:             $screen-md-min !default;
+
+// Large screen / wide desktop
+//** Deprecated `$screen-lg` as of v3.0.1
+$screen-lg:                  1200px !default;
+$screen-lg-min:              $screen-lg !default;
+//** Deprecated `$screen-lg-desktop` as of v3.0.1
+$screen-lg-desktop:          $screen-lg-min !default;
+
+// So media queries don't overlap when required, provide a maximum
+$screen-xs-max:              ($screen-sm-min - 1) !default;
+$screen-sm-max:              ($screen-md-min - 1) !default;
+$screen-md-max:              ($screen-lg-min - 1) !default;
+
+
+//== Grid system
+//
+//## Define your custom responsive grid.
+
+//** Number of columns in the grid.
+$grid-columns:              12 !default;
+//** Padding between columns. Gets divided in half for the left and right.
+$grid-gutter-width:         30px !default;
+// Navbar collapse
+//** Point at which the navbar becomes uncollapsed.
+$grid-float-breakpoint:     $screen-sm-min !default;
+//** Point at which the navbar begins collapsing.
+$grid-float-breakpoint-max: ($grid-float-breakpoint - 1) !default;
+
+
+//== Container sizes
+//
+//## Define the maximum width of `.container` for different screen sizes.
+
+// Small screen / tablet
+$container-tablet:             (720px + $grid-gutter-width) !default;
+//** For `$screen-sm-min` and up.
+$container-sm:                 $container-tablet !default;
+
+// Medium screen / desktop
+$container-desktop:            (940px + $grid-gutter-width) !default;
+//** For `$screen-md-min` and up.
+$container-md:                 $container-desktop !default;
+
+// Large screen / wide desktop
+$container-large-desktop:      (1140px + $grid-gutter-width) !default;
+//** For `$screen-lg-min` and up.
+$container-lg:                 $container-large-desktop !default;
+
+
+//== Navbar
+//
+//##
+
+// Basics of a navbar
+$navbar-height:                    45px !default;
+$navbar-margin-bottom:             $line-height-computed !default;
+$navbar-border-radius:             $border-radius-base !default;
+$navbar-padding-horizontal:        floor(($grid-gutter-width / 2)) !default;
+$navbar-padding-vertical:          (($navbar-height - $line-height-computed) / 2) !default;
+$navbar-collapse-max-height:       340px !default;
+
+$navbar-default-color:             #fff !default;
+$navbar-default-bg:                $gray-dark !default;
+$navbar-default-border:            darken($navbar-default-bg, 6.5%) !default;
+
+// Navbar links
+$navbar-default-link-color:                #fff !default;
+$navbar-default-link-hover-color:          #fff !default;
+$navbar-default-link-hover-bg:             #272727 !default;
+$navbar-default-link-active-color:         #fff !default;
+$navbar-default-link-active-bg:            #272727 !default;
+$navbar-default-link-disabled-color:       #ccc !default;
+$navbar-default-link-disabled-bg:          transparent !default;
+
+// Navbar brand label
+$navbar-default-brand-color:               $navbar-default-link-color !default;
+$navbar-default-brand-hover-color:         $navbar-default-brand-color !default;
+$navbar-default-brand-hover-bg:            transparent !default;
+
+// Navbar toggle
+$navbar-default-toggle-hover-bg:           transparent !default;
+$navbar-default-toggle-icon-bar-bg:        #fff !default;
+$navbar-default-toggle-border-color:       transparent !default;
+
+
+//=== Inverted navbar
+// Reset inverted navbar basics
+$navbar-inverse-color:                      #fff !default;
+$navbar-inverse-bg:                         $brand-primary !default;
+$navbar-inverse-border:                     darken($navbar-inverse-bg, 10%) !default;
+
+// Inverted navbar links
+$navbar-inverse-link-color:                 #fff !default;
+$navbar-inverse-link-hover-color:           #fff !default;
+$navbar-inverse-link-hover-bg:              darken($navbar-inverse-bg, 10%) !default;
+$navbar-inverse-link-active-color:          #fff !default;
+$navbar-inverse-link-active-bg:             darken($navbar-inverse-bg, 10%) !default;
+$navbar-inverse-link-disabled-color:        #444 !default;
+$navbar-inverse-link-disabled-bg:           transparent !default;
+
+// Inverted navbar brand label
+$navbar-inverse-brand-color:                $navbar-inverse-link-color !default;
+$navbar-inverse-brand-hover-color:          #fff !default;
+$navbar-inverse-brand-hover-bg:             transparent !default;
+
+// Inverted navbar toggle
+$navbar-inverse-toggle-hover-bg:            transparent !default;
+$navbar-inverse-toggle-icon-bar-bg:         #fff !default;
+$navbar-inverse-toggle-border-color:        transparent !default;
+
+
+//== Navs
+//
+//##
+
+//=== Shared nav styles
+$nav-link-padding:                          10px 15px !default;
+$nav-link-hover-bg:                         $gray-lighter !default;
+
+$nav-disabled-link-color:                   $gray-light !default;
+$nav-disabled-link-hover-color:             $gray-light !default;
+
+//== Tabs
+$nav-tabs-border-color:                     $table-border-color !default;
+
+$nav-tabs-link-hover-border-color:          $gray-lighter !default;
+
+$nav-tabs-active-link-hover-bg:             $body-bg !default;
+$nav-tabs-active-link-hover-color:          $gray !default;
+$nav-tabs-active-link-hover-border-color:   $table-border-color !default;
+
+$nav-tabs-justified-link-border-color:            $table-border-color !default;
+$nav-tabs-justified-active-link-border-color:     $body-bg !default;
+
+//== Pills
+$nav-pills-border-radius:                   $border-radius-base !default;
+$nav-pills-active-link-hover-bg:            $component-active-bg !default;
+$nav-pills-active-link-hover-color:         $component-active-color !default;
+
+
+//== Pagination
+//
+//##
+
+$pagination-color:                     $link-color !default;
+$pagination-bg:                        transparent !default;
+$pagination-border:                    transparent !default;
+
+$pagination-hover-color:               $link-hover-color !default;
+$pagination-hover-bg:                  $gray-lighter !default;
+$pagination-hover-border:              transparent !default;
+
+$pagination-active-color:              #fff !default;
+$pagination-active-bg:                 $brand-primary !default;
+$pagination-active-border:             transparent !default;
+
+$pagination-disabled-color:            $gray-light !default;
+$pagination-disabled-bg:               #fff !default;
+$pagination-disabled-border:           transparent !default;
+
+
+//== Pager
+//
+//##
+
+$pager-bg:                             $pagination-bg !default;
+$pager-border:                         $pagination-border !default;
+$pager-border-radius:                  3px !default;
+
+$pager-hover-bg:                       $pagination-hover-bg !default;
+
+$pager-active-bg:                      $pagination-active-bg !default;
+$pager-active-color:                   $pagination-active-color !default;
+
+$pager-disabled-color:                 $gray-light !default;
+
+
+//== Jumbotron
+//
+//##
+
+$jumbotron-padding:              30px !default;
+$jumbotron-color:                inherit !default;
+$jumbotron-bg:                   #fafafa !default;
+$jumbotron-heading-color:        inherit !default;
+$jumbotron-font-size:            ceil(($font-size-base * 1.5)) !default;
+$jumbotron-heading-font-size:    ceil(($font-size-base * 4.5)) !default;
+
+
+//== Form states and alerts
+//
+//## Define colors for form feedback states and, by default, alerts.
+
+$state-success-text:             $brand-success !default;
+$state-success-bg:               #dff0d8 !default;
+$state-success-border:           darken($state-success-text, 5%) !default;
+
+$state-info-text:                $brand-info !default;
+$state-info-bg:                  #d9edf7 !default;
+$state-info-border:              darken($state-info-text, 7%) !default;
+
+$state-warning-text:             $brand-warning !default;
+$state-warning-bg:               #fcf8e3 !default;
+$state-warning-border:           darken($state-warning-text, 5%) !default;
+
+$state-danger-text:              $brand-danger !default;
+$state-danger-bg:                #f2dede !default;
+$state-danger-border:            darken($state-danger-text, 5%) !default;
+
+
+//== Tooltips
+//
+//##
+
+//** Tooltip max width
+$tooltip-max-width:           200px !default;
+//** Tooltip text color
+$tooltip-color:               #fff !default;
+//** Tooltip background color
+$tooltip-bg:                  $gray-dark !default;
+$tooltip-opacity:             .9 !default;
+
+//** Tooltip arrow width
+$tooltip-arrow-width:         5px !default;
+//** Tooltip arrow color
+$tooltip-arrow-color:         $tooltip-bg !default;
+
+
+//== Popovers
+//
+//##
+
+//** Popover body background color
+$popover-bg:                          $gray-dark !default;
+//** Popover maximum width
+$popover-max-width:                   276px !default;
+//** Popover border color
+$popover-border-color:                transparent !default;
+//** Popover fallback border color
+$popover-fallback-border-color:       $gray-dark !default;
+
+//** Popover title background color
+$popover-title-bg:                    $popover-bg !default;
+
+//** Popover arrow width
+$popover-arrow-width:                 10px !default;
+//** Popover arrow color
+$popover-arrow-color:                 $popover-bg !default;
+
+//** Popover outer arrow width
+$popover-arrow-outer-width:           ($popover-arrow-width + 1) !default;
+//** Popover outer arrow color
+$popover-arrow-outer-color:           fadein($popover-border-color, 5%) !default;
+//** Popover outer arrow fallback color
+$popover-arrow-outer-fallback-color:  darken($popover-fallback-border-color, 20%) !default;
+
+
+//== Labels
+//
+//##
+
+//** Default label background color
+$label-default-bg:            $gray-light !default;
+//** Primary label background color
+$label-primary-bg:            $brand-primary !default;
+//** Success label background color
+$label-success-bg:            $brand-success !default;
+//** Info label background color
+$label-info-bg:               $brand-info !default;
+//** Warning label background color
+$label-warning-bg:            $brand-warning !default;
+//** Danger label background color
+$label-danger-bg:             $brand-danger !default;
+
+//** Default label text color
+$label-color:                 #fff !default;
+//** Default text color of a linked label
+$label-link-hover-color:      #fff !default;
+
+
+//== Modals
+//
+//##
+
+//** Padding applied to the modal body
+$modal-inner-padding:         20px !default;
+
+//** Padding applied to the modal title
+$modal-title-padding:         15px !default;
+//** Modal title line-height
+$modal-title-line-height:     $line-height-base !default;
+
+//** Background color of modal content area
+$modal-content-bg:                             #fff !default;
+//** Modal content border color
+$modal-content-border-color:                   rgba(0,0,0,.2) !default;
+//** Modal content border color **for IE8**
+$modal-content-fallback-border-color:          #999 !default;
+
+//** Modal backdrop background color
+$modal-backdrop-bg:           #000 !default;
+//** Modal backdrop opacity
+$modal-backdrop-opacity:      .5 !default;
+//** Modal header border color
+$modal-header-border-color:   #e5e5e5 !default;
+//** Modal footer border color
+$modal-footer-border-color:   $modal-header-border-color !default;
+
+$modal-lg:                    900px !default;
+$modal-md:                    600px !default;
+$modal-sm:                    300px !default;
+
+
+//== Alerts
+//
+//## Define alert colors, border radius, and padding.
+
+$alert-padding:               15px !default;
+$alert-border-radius:         $border-radius-base !default;
+$alert-link-font-weight:      bold !default;
+
+$alert-success-bg:            $brand-success !default;
+$alert-success-text:          #fff !default;
+$alert-success-border:        $state-success-border !default;
+
+$alert-info-bg:               $brand-info !default;
+$alert-info-text:             #fff !default;
+$alert-info-border:           $state-info-border !default;
+
+$alert-warning-bg:            $brand-warning !default;
+$alert-warning-text:          #fff !default;
+$alert-warning-border:        $state-warning-border !default;
+
+$alert-danger-bg:             $brand-danger !default;
+$alert-danger-text:           #fff !default;
+$alert-danger-border:         $state-danger-border !default;
+
+
+//== Progress bars
+//
+//##
+
+//** Background color of the whole progress component
+$progress-bg:                 #f5f5f5 !default;
+//** Progress bar text color
+$progress-bar-color:          #fff !default;
+//** Variable for setting rounded corners on progress bar.
+$progress-border-radius:      $border-radius-base !default;
+
+//** Default progress bar color
+$progress-bar-bg:             $brand-primary !default;
+//** Success progress bar color
+$progress-bar-success-bg:     $brand-success !default;
+//** Warning progress bar color
+$progress-bar-warning-bg:     $brand-warning !default;
+//** Danger progress bar color
+$progress-bar-danger-bg:      $brand-danger !default;
+//** Info progress bar color
+$progress-bar-info-bg:        $brand-info !default;
+
+
+//== List group
+//
+//##
+
+//** Background color on `.list-group-item`
+$list-group-bg:                 #fff !default;
+//** `.list-group-item` border color
+$list-group-border:             $table-border-color !default;
+//** List group border radius
+$list-group-border-radius:      $border-radius-base !default;
+
+//** Background color of single list items on hover
+$list-group-hover-bg:           #f5f5f5 !default;
+//** Text color of active list items
+$list-group-active-color:       $component-active-color !default;
+//** Background color of active list items
+$list-group-active-bg:          $component-active-bg !default;
+//** Border color of active list elements
+$list-group-active-border:      $list-group-active-bg !default;
+//** Text color for content within active list items
+$list-group-active-text-color:  lighten($list-group-active-bg, 40%) !default;
+
+//** Text color of disabled list items
+$list-group-disabled-color:      $gray-light !default;
+//** Background color of disabled list items
+$list-group-disabled-bg:         $gray-lighter !default;
+//** Text color for content within disabled list items
+$list-group-disabled-text-color: $list-group-disabled-color !default;
+
+$list-group-link-color:         #555 !default;
+$list-group-link-hover-color:   $list-group-link-color !default;
+$list-group-link-heading-color: #333 !default;
+
+
+//== Panels
+//
+//##
+
+$panel-bg:                    #fff !default;
+$panel-body-padding:          15px !default;
+$panel-heading-padding:       10px 15px !default;
+$panel-footer-padding:        $panel-heading-padding !default;
+$panel-border-radius:         $border-radius-base !default;
+
+//** Border color for elements within panels
+$panel-inner-border:          $table-border-color !default;
+$panel-footer-bg:             #f5f5f5 !default;
+
+$panel-default-text:          $gray-dark !default;
+$panel-default-border:        $table-border-color !default;
+$panel-default-heading-bg:    #f5f5f5 !default;
+
+$panel-primary-text:          #fff !default;
+$panel-primary-border:        $brand-primary !default;
+$panel-primary-heading-bg:    $brand-primary !default;
+
+$panel-success-text:          #fff !default;
+$panel-success-border:        $state-success-border !default;
+$panel-success-heading-bg:    $brand-success !default;
+
+$panel-info-text:             #fff !default;
+$panel-info-border:           $state-info-border !default;
+$panel-info-heading-bg:       $brand-info !default;
+
+$panel-warning-text:          #fff !default;
+$panel-warning-border:        $state-warning-border !default;
+$panel-warning-heading-bg:    $brand-warning !default;
+
+$panel-danger-text:           #fff !default;
+$panel-danger-border:         $state-danger-border !default;
+$panel-danger-heading-bg:     $brand-danger !default;
+
+
+//== Thumbnails
+//
+//##
+
+//** Padding around the thumbnail image
+$thumbnail-padding:           4px !default;
+//** Thumbnail background color
+$thumbnail-bg:                $body-bg !default;
+//** Thumbnail border color
+$thumbnail-border:            $table-border-color !default;
+//** Thumbnail border radius
+$thumbnail-border-radius:     $border-radius-base !default;
+
+//** Custom text color for thumbnail captions
+$thumbnail-caption-color:     $text-color !default;
+//** Padding around the thumbnail caption
+$thumbnail-caption-padding:   9px !default;
+
+
+//== Wells
+//
+//##
+
+$well-bg:                     $jumbotron-bg !default;
+$well-border:                 darken($well-bg, 7%) !default;
+
+
+//== Badges
+//
+//##
+
+$badge-color:                 #fff !default;
+//** Linked badge text color on hover
+$badge-link-hover-color:      #fff !default;
+$badge-bg:                    $btn-primary-bg !default;
+
+//** Badge text color in active nav link
+$badge-active-color:          $link-color !default;
+//** Badge background color in active nav link
+$badge-active-bg:             #fff !default;
+
+$badge-font-weight:           bold !default;
+$badge-line-height:           1 !default;
+$badge-border-radius:         10px !default;
+
+
+//== Breadcrumbs
+//
+//##
+
+$breadcrumb-padding-vertical:   8px !default;
+$breadcrumb-padding-horizontal: 15px !default;
+//** Breadcrumb background color
+$breadcrumb-bg:                 #f5f5f5 !default;
+//** Breadcrumb text color
+$breadcrumb-color:              $gray-light !default;
+//** Text color of current page in the breadcrumb
+$breadcrumb-active-color:       $gray-dark !default;
+//** Textual separator for between breadcrumb elements
+$breadcrumb-separator:          "/" !default;
+
+
+//== Carousel
+//
+//##
+
+$carousel-text-shadow:                        0 1px 2px rgba(0,0,0,.6) !default;
+
+$carousel-control-color:                      #fff !default;
+$carousel-control-width:                      15% !default;
+$carousel-control-opacity:                    .5 !default;
+$carousel-control-font-size:                  20px !default;
+
+$carousel-indicator-active-bg:                #fff !default;
+$carousel-indicator-border-color:             #fff !default;
+
+$carousel-caption-color:                      #fff !default;
+
+
+//== Close
+//
+//##
+
+$close-font-weight:           bold !default;
+$close-color:                 #fff !default;
+$close-text-shadow:           0 1px 0 #fff !default;
+
+
+//== Code
+//
+//##
+
+$code-color:                  #c7254e !default;
+$code-bg:                     #f9f2f4 !default;
+
+$kbd-color:                   #fff !default;
+$kbd-bg:                      #333 !default;
+
+$pre-bg:                      #f5f5f5 !default;
+$pre-color:                   $gray-dark !default;
+$pre-border-color:            #ccc !default;
+$pre-scrollable-max-height:   340px !default;
+
+
+//== Type
+//
+//##
+
+//** Horizontal offset for forms and lists.
+$component-offset-horizontal: 180px !default;
+//** Text muted color
+$text-muted:                  $gray-light !default;
+//** Abbreviations and acronyms border color
+$abbr-border-color:           $gray-light !default;
+//** Headings small color
+$headings-small-color:        $gray-light !default;
+//** Blockquote small color
+$blockquote-small-color:      $gray !default;
+//** Blockquote font size
+$blockquote-font-size:        ($font-size-base * 1.25) !default;
+//** Blockquote border color
+$blockquote-border-color:     $table-border-color !default;
+//** Page header border color
+$page-header-border-color:    $table-border-color !default;
+//** Width of horizontal description list titles
+$dl-horizontal-offset:        $component-offset-horizontal !default;
+//** Point at which .dl-horizontal becomes horizontal
+$dl-horizontal-breakpoint:    $grid-float-breakpoint !default;
+//** Horizontal line color.
+$hr-border:                   $table-border-color !default;
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/yeti/_bootswatch.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/yeti/_bootswatch.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/yeti/_bootswatch.scss	(revision 3762)
@@ -0,0 +1,445 @@
+// Yeti 3.4.1
+// Bootswatch
+// -----------------------------------------------------
+
+$web-font-path: "https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,700italic,400,300,700" !default;
+@import url($web-font-path);
+
+// Navbar =====================================================================
+
+.navbar {
+  border: none;
+  font-size: 13px;
+  font-weight: 300;
+
+  .navbar-toggle:hover .icon-bar {
+    background-color: #b3b3b3;
+  }
+
+  &-collapse {
+    border-top-color: $dropdown-divider-bg;
+    @include box-shadow(none);
+  }
+
+  .btn {
+    padding-top: 6px;
+    padding-bottom: 6px;
+  }
+
+  &-form {
+    margin-top: 7px;
+    margin-bottom: 5px;
+
+    .form-control {
+      height: auto;
+      padding: $padding-xs-vertical $padding-xs-horizontal;
+    }
+  }
+
+  &-text {
+    margin: 12px 15px;
+    line-height: 21px;
+  }
+
+  .dropdown {
+
+    &-menu {
+      border: none;
+
+      > li > a,
+      > li > a:focus {
+        background-color: transparent;
+        font-size: 13px;
+        font-weight: 300;
+      }
+    }
+
+    &-header {
+      color: rgba(255, 255, 255, 0.5);
+    }
+
+  }
+
+  &-default {
+
+    .dropdown-menu {
+      background-color: $navbar-default-bg;
+
+      > li > a,
+      > li > a:focus {
+        color: $navbar-default-color;
+      }
+
+      > li > a:hover,
+      > .active > a,
+      > .active > a:hover {
+        background-color: $navbar-default-link-hover-bg;
+      }
+    }
+  }
+
+  &-inverse {
+
+    .dropdown-menu {
+      background-color: $navbar-inverse-bg;
+
+      > li > a,
+      > li > a:focus {
+        color: $navbar-inverse-color;
+      }
+
+      > li > a:hover,
+      > .active > a,
+      > .active > a:hover {
+        background-color: $navbar-inverse-link-hover-bg;
+      }
+    }
+  }
+}
+
+// Buttons ====================================================================
+
+.btn {
+  padding: $padding-base-vertical $padding-base-horizontal;
+
+  &-lg {
+    padding: $padding-large-vertical $padding-large-horizontal;
+  }
+
+  &-sm {
+    padding: $padding-small-vertical $padding-small-horizontal;
+  }
+
+  &-xs {
+    padding: $padding-xs-vertical $padding-xs-horizontal;
+  }
+}
+
+.btn-group {
+
+  .btn ~ .dropdown-toggle {
+    padding-left: 16px;
+    padding-right: 16px;
+  }
+
+  .dropdown-menu {
+    border-top-width: 0;
+  }
+
+  &.dropup .dropdown-menu {
+    border-top-width: 1px;
+    border-bottom-width: 0;
+    margin-bottom: 0;
+  }
+
+  .dropdown-toggle {
+
+    &.btn-default ~ .dropdown-menu {
+      background-color: $btn-default-bg;
+      border-color: $btn-default-border;
+
+      > li > a {
+        color: $btn-default-color;
+      }
+
+      > li > a:hover {
+        background-color: darken($btn-default-bg, 8%);
+      }
+    }
+
+    &.btn-primary ~ .dropdown-menu {
+      background-color: $btn-primary-bg;
+      border-color: $btn-primary-border;
+
+      > li > a {
+        color: $btn-primary-color;
+      }
+
+      > li > a:hover {
+        background-color: darken($btn-primary-bg, 8%);
+      }
+    }
+
+    &.btn-success ~ .dropdown-menu {
+      background-color: $btn-success-bg;
+      border-color: $btn-success-border;
+
+      > li > a {
+        color: $btn-success-color;
+      }
+
+      > li > a:hover {
+        background-color: darken($btn-success-bg, 8%);
+      }
+    }
+
+    &.btn-info ~ .dropdown-menu {
+      background-color: $btn-info-bg;
+      border-color: $btn-info-border;
+
+      > li > a {
+        color: $btn-info-color;
+      }
+
+      > li > a:hover {
+        background-color: darken($btn-info-bg, 8%);
+      }
+    }
+
+    &.btn-warning ~ .dropdown-menu {
+      background-color: $btn-warning-bg;
+      border-color: $btn-warning-border;
+
+      > li > a {
+        color: $btn-warning-color;
+      }
+
+      > li > a:hover {
+        background-color: darken($btn-warning-bg, 8%);
+      }
+    }
+
+    &.btn-danger ~ .dropdown-menu {
+      background-color: $btn-danger-bg;
+      border-color: $btn-danger-border;
+
+      > li > a {
+        color: $btn-danger-color;
+      }
+
+      > li > a:hover {
+        background-color: darken($btn-danger-bg, 8%);
+      }
+    }
+  }
+}
+
+// Typography =================================================================
+
+.lead {
+  color: $gray;
+}
+
+cite {
+  font-style: italic;
+}
+
+blockquote {
+  border-left-width: 1px;
+  color: $gray;
+
+  &.pull-right {
+    border-right-width: 1px;
+  }
+
+  small {
+    font-size: $font-size-small;
+    font-weight: 300;
+  }
+}
+
+// Tables =====================================================================
+
+table {
+  font-size: $font-size-small;
+}
+
+// Forms ======================================================================
+
+label,
+.control-label,
+.help-block,
+.checkbox,
+.radio {
+  font-size: $font-size-small;
+  font-weight: normal;
+}
+
+input[type="radio"],
+input[type="checkbox"] {
+  margin-top: 1px;
+}
+
+// Navs =======================================================================
+
+.nav {
+  .open > a,
+  .open > a:hover,
+  .open > a:focus {
+    border-color: transparent;
+  }
+}
+
+.nav-tabs {
+  > li > a {
+    background-color: $btn-default-bg;
+    color: $text-color;
+  }
+
+  .caret {
+    border-top-color: $text-color;
+    border-bottom-color: $text-color;
+  }
+}
+
+.nav-pills {
+  font-weight: 300;
+}
+
+.breadcrumb {
+  border: 1px solid $table-border-color;
+  border-radius: 3px;
+  font-size: 10px;
+  font-weight: 300;
+  text-transform: uppercase;
+}
+
+.pagination {
+  font-size: $font-size-small;
+  font-weight: 300;
+  color: $gray-light;
+
+  > li {
+    > a,
+    > span {
+      margin-left: 4px;
+      color: $gray-light;
+    }
+  }
+
+  > .active {
+    > a,
+    > span {
+      color: #fff;
+    }
+  }
+
+  > li,
+  > li:first-child,
+  > li:last-child {
+    > a,
+    > span {
+      border-radius: 3px;
+    }
+  }
+
+  &-lg > li > a,
+  &-lg > li > span {
+    padding-left: 22px;
+    padding-right: 22px;
+  }
+
+  &-sm > li > a,
+  &-sm > li > span {
+    padding: 0 5px;
+  }
+}
+
+.pager {
+  font-size: $font-size-small;
+  font-weight: 300;
+  color: $gray-light;
+}
+
+.list-group {
+  font-size: $font-size-small;
+  font-weight: 300;
+}
+
+// Indicators =================================================================
+
+.close {
+  opacity: 0.4;
+  text-decoration: none;
+  text-shadow: none;
+
+  &:hover,
+  &:focus {
+    opacity: 1;
+  }
+}
+
+.alert {
+  font-size: $font-size-small;
+  font-weight: 300;
+
+  .alert-link {
+    font-weight: normal;
+    color: #fff;
+    text-decoration: underline;
+  }
+}
+
+.label {
+  padding-left: 1em;
+  padding-right: 1em;
+  border-radius: 0;
+  font-weight: 300;
+
+  &-default {
+    background-color: $btn-default-bg;
+    color: $btn-default-color;
+  }
+}
+
+.badge {
+  font-weight: 300;
+}
+
+// Progress bars ==============================================================
+
+.progress {
+  height: 22px;
+  padding: 2px;
+  background-color: #f6f6f6;
+  border: 1px solid #ccc;
+  @include box-shadow(none);
+}
+
+// Containers =================================================================
+
+.dropdown {
+
+  &-menu {
+    padding: 0;
+    margin-top: 0;
+    font-size: $font-size-small;
+
+    > li > a {
+      padding: 12px 15px;
+    }
+  }
+
+  &-header {
+    padding-left: 15px;
+    padding-right: 15px;
+    font-size: 9px;
+    text-transform: uppercase;
+  }
+}
+
+.popover {
+  color: #fff;
+  font-size: 12px;
+  font-weight: 300;
+}
+
+.panel {
+  &-heading,
+  &-footer {
+    border-top-right-radius: 0;
+    border-top-left-radius: 0;
+  }
+
+  &-default {
+    .close {
+      color: $text-color;
+    }
+  }
+}
+
+.modal {
+  .close {
+    color: $text-color;
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/journal/font.css
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/journal/font.css	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/journal/font.css	(revision 3762)
@@ -0,0 +1,12 @@
+@font-face {
+  font-family: 'News Cycle';
+  font-style: normal;
+  font-weight: 400;
+  src: url(fonts/CSR64z1Qlv-GDxkbKVQ_fOAKSw.woff) format('woff');
+}
+@font-face {
+  font-family: 'News Cycle';
+  font-style: normal;
+  font-weight: 700;
+  src: url(fonts/CSR54z1Qlv-GDxkbKVQ_dFsvWNRevw.woff) format('woff');
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/journal/_variables.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/journal/_variables.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/journal/_variables.scss	(revision 3762)
@@ -0,0 +1,870 @@
+$bootstrap-sass-asset-helper: false !default;
+// Journal 3.4.1
+// Variables
+// --------------------------------------------------
+
+
+//== Colors
+//
+//## Gray and brand colors for use across Bootstrap.
+
+$gray-base:              #000 !default;
+$gray-darker:            lighten($gray-base, 13.5%) !default; // #222
+$gray-dark:              lighten($gray-base, 20%) !default;   // #333
+$gray:                   #777 !default; // #555
+$gray-light:             lighten($gray-base, 60%) !default;   // #999
+$gray-lighter:           lighten($gray-base, 93.5%) !default; // #eee
+
+$brand-primary:         #EB6864 !default;
+$brand-success:         #22B24C !default;
+$brand-info:            #369 !default;
+$brand-warning:         #F5E625 !default;
+$brand-danger:          #F57A00 !default;
+
+
+//== Scaffolding
+//
+//## Settings for some of the most global styles.
+
+//** Background color for `<body>`.
+$body-bg:               #fff !default;
+//** Global text color on `<body>`.
+$text-color:            $gray !default;
+
+//** Global textual link color.
+$link-color:            $brand-primary !default;
+//** Link hover color set via `darken()` function.
+$link-hover-color:      darken($link-color, 15%) !default;
+//** Link hover decoration.
+$link-hover-decoration: underline !default;
+
+
+//== Typography
+//
+//## Font, line-height, and color for body text, headings, and more.
+
+$font-family-sans-serif:  "News Cycle", "Arial Narrow Bold", sans-serif !default;
+$font-family-serif:       Georgia, "Times New Roman", Times, serif !default;
+//** Default monospace fonts for `<code>`, `<kbd>`, and `<pre>`.
+$font-family-monospace:   Menlo, Monaco, Consolas, "Courier New", monospace !default;
+$font-family-base:        $font-family-serif !default;
+
+$font-size-base:          15px !default;
+$font-size-large:         ceil(($font-size-base * 1.25)) !default; // ~18px
+$font-size-small:         ceil(($font-size-base * 0.85)) !default; // ~12px
+
+$font-size-h1:            floor(($font-size-base * 2.6)) !default; // ~36px
+$font-size-h2:            floor(($font-size-base * 2.15)) !default; // ~30px
+$font-size-h3:            ceil(($font-size-base * 1.7)) !default; // ~24px
+$font-size-h4:            ceil(($font-size-base * 1.25)) !default; // ~18px
+$font-size-h5:            $font-size-base !default;
+$font-size-h6:            ceil(($font-size-base * 0.85)) !default; // ~12px
+
+//** Unit-less `line-height` for use in components like buttons.
+$line-height-base:        1.428571429 !default; // 20/14
+//** Computed "line-height" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.
+$line-height-computed:    floor(($font-size-base * $line-height-base)) !default; // ~20px
+
+//** By default, this inherits from the `<body>`.
+$headings-font-family:    $font-family-sans-serif !default;
+$headings-font-weight:    700 !default;
+$headings-line-height:    1.1 !default;
+$headings-color:          #000 !default;
+
+
+//== Iconography
+//
+//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.
+
+//** Load fonts from this directory.
+$icon-font-path: if($bootstrap-sass-asset-helper, "bootstrap/", "../fonts/bootstrap/") !default;
+//** File name for all font files.
+$icon-font-name:          "glyphicons-halflings-regular" !default;
+//** Element ID within SVG icon file.
+$icon-font-svg-id:        "glyphicons_halflingsregular" !default;
+
+
+//== Components
+//
+//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).
+
+$padding-base-vertical:     8px !default;
+$padding-base-horizontal:   12px !default;
+
+$padding-large-vertical:    14px !default;
+$padding-large-horizontal:  16px !default;
+
+$padding-small-vertical:    5px !default;
+$padding-small-horizontal:  10px !default;
+
+$padding-xs-vertical:       1px !default;
+$padding-xs-horizontal:     5px !default;
+
+$line-height-large:         1.3333333 !default; // extra decimals for Win 8.1 Chrome
+$line-height-small:         1.5 !default;
+
+$border-radius-base:        4px !default;
+$border-radius-large:       6px !default;
+$border-radius-small:       3px !default;
+
+//** Global color for active items (e.g., navs or dropdowns).
+$component-active-color:    #fff !default;
+//** Global background color for active items (e.g., navs or dropdowns).
+$component-active-bg:       $brand-primary !default;
+
+//** Width of the `border` for generating carets that indicate dropdowns.
+$caret-width-base:          4px !default;
+//** Carets increase slightly in size for larger components.
+$caret-width-large:         5px !default;
+
+
+//== Tables
+//
+//## Customizes the `.table` component with basic values, each used across all table variations.
+
+//** Padding for `<th>`s and `<td>`s.
+$table-cell-padding:            8px !default;
+//** Padding for cells in `.table-condensed`.
+$table-condensed-cell-padding:  5px !default;
+
+//** Default background color used for all tables.
+$table-bg:                      transparent !default;
+//** Background color used for `.table-striped`.
+$table-bg-accent:               #f9f9f9 !default;
+//** Background color used for `.table-hover`.
+$table-bg-hover:                #f5f5f5 !default;
+$table-bg-active:               $table-bg-hover !default;
+
+//** Border color for table and cell borders.
+$table-border-color:            #ddd !default;
+
+
+//== Buttons
+//
+//## For each of Bootstrap's buttons, define text, background and border color.
+
+$btn-font-weight:                normal !default;
+
+$btn-default-color:              #fff !default;
+$btn-default-bg:                 $gray-light !default;
+$btn-default-border:             $btn-default-bg !default;
+
+$btn-primary-color:              $btn-default-color !default;
+$btn-primary-bg:                 $brand-primary !default;
+$btn-primary-border:             $btn-primary-bg !default;
+
+$btn-success-color:              $btn-default-color !default;
+$btn-success-bg:                 $brand-success !default;
+$btn-success-border:             $btn-success-bg !default;
+
+$btn-info-color:                 $btn-default-color !default;
+$btn-info-bg:                    $brand-info !default;
+$btn-info-border:                $btn-info-bg !default;
+
+$btn-warning-color:              $btn-default-color !default;
+$btn-warning-bg:                 $brand-warning !default;
+$btn-warning-border:             $btn-warning-bg !default;
+
+$btn-danger-color:               $btn-default-color !default;
+$btn-danger-bg:                  $brand-danger !default;
+$btn-danger-border:              $btn-danger-bg !default;
+
+$btn-link-disabled-color:        $gray-light !default;
+
+// Allows for customizing button radius independently from global border radius
+$btn-border-radius-base:         $border-radius-base !default;
+$btn-border-radius-large:        $border-radius-large !default;
+$btn-border-radius-small:        $border-radius-small !default;
+
+
+//== Forms
+//
+//##
+
+//** `<input>` background color
+$input-bg:                       #fff !default;
+//** `<input disabled>` background color
+$input-bg-disabled:              $gray-lighter !default;
+
+//** Text color for `<input>`s
+$input-color:                    $text-color !default;
+//** `<input>` border color
+$input-border:                   #ccc !default;
+
+// TODO: Rename `$input-border-radius` to `$input-border-radius-base` in v4
+//** Default `.form-control` border radius
+// This has no effect on `<select>`s in some browsers, due to the limited stylability of `<select>`s in CSS.
+$input-border-radius:            $border-radius-base !default;
+//** Large `.form-control` border radius
+$input-border-radius-large:      $border-radius-large !default;
+//** Small `.form-control` border radius
+$input-border-radius-small:      $border-radius-small !default;
+
+//** Border color for inputs on focus
+$input-border-focus:             #66afe9 !default;
+
+//** Placeholder text color
+$input-color-placeholder:        $gray-light !default;
+
+//** Default `.form-control` height
+$input-height-base:              ($line-height-computed + ($padding-base-vertical * 2) + 2) !default;
+//** Large `.form-control` height
+$input-height-large:             (ceil($font-size-large * $line-height-large) + ($padding-large-vertical * 2) + 2) !default;
+//** Small `.form-control` height
+$input-height-small:             (floor($font-size-small * $line-height-small) + ($padding-small-vertical * 2) + 2) !default;
+
+//** `.form-group` margin
+$form-group-margin-bottom:       15px !default;
+
+$legend-color:                   $text-color !default;
+$legend-border-color:            #e5e5e5 !default;
+
+//** Background color for textual input addons
+$input-group-addon-bg:           $gray-lighter !default;
+//** Border color for textual input addons
+$input-group-addon-border-color: $input-border !default;
+
+//** Disabled cursor for form controls and buttons.
+$cursor-disabled:                not-allowed !default;
+
+
+//== Dropdowns
+//
+//## Dropdown menu container and contents.
+
+//** Background for the dropdown menu.
+$dropdown-bg:                    #fff !default;
+//** Dropdown menu `border-color`.
+$dropdown-border:                rgba(0,0,0,.15) !default;
+//** Dropdown menu `border-color` **for IE8**.
+$dropdown-fallback-border:       #ccc !default;
+//** Divider color for between dropdown items.
+$dropdown-divider-bg:            #e5e5e5 !default;
+
+//** Dropdown link text color.
+$dropdown-link-color:            $gray-dark !default;
+//** Hover color for dropdown links.
+$dropdown-link-hover-color:      #fff !default;
+//** Hover background for dropdown links.
+$dropdown-link-hover-bg:         $component-active-bg !default;
+
+//** Active dropdown menu item text color.
+$dropdown-link-active-color:     #fff !default;
+//** Active dropdown menu item background color.
+$dropdown-link-active-bg:        $component-active-bg !default;
+
+//** Disabled dropdown menu item background color.
+$dropdown-link-disabled-color:   $gray-light !default;
+
+//** Text color for headers within dropdown menus.
+$dropdown-header-color:          $gray-light !default;
+
+//** Deprecated `$dropdown-caret-color` as of v3.1.0
+$dropdown-caret-color:           #000 !default;
+
+
+//-- Z-index master list
+//
+// Warning: Avoid customizing these values. They're used for a bird's eye view
+// of components dependent on the z-axis and are designed to all work together.
+//
+// Note: These variables are not generated into the Customizer.
+
+$zindex-navbar:            1000 !default;
+$zindex-dropdown:          1000 !default;
+$zindex-popover:           1060 !default;
+$zindex-tooltip:           1070 !default;
+$zindex-navbar-fixed:      1030 !default;
+$zindex-modal-background:  1040 !default;
+$zindex-modal:             1050 !default;
+
+
+//== Media queries breakpoints
+//
+//## Define the breakpoints at which your layout will change, adapting to different screen sizes.
+
+// Extra small screen / phone
+//** Deprecated `$screen-xs` as of v3.0.1
+$screen-xs:                  480px !default;
+//** Deprecated `$screen-xs-min` as of v3.2.0
+$screen-xs-min:              $screen-xs !default;
+//** Deprecated `$screen-phone` as of v3.0.1
+$screen-phone:               $screen-xs-min !default;
+
+// Small screen / tablet
+//** Deprecated `$screen-sm` as of v3.0.1
+$screen-sm:                  768px !default;
+$screen-sm-min:              $screen-sm !default;
+//** Deprecated `$screen-tablet` as of v3.0.1
+$screen-tablet:              $screen-sm-min !default;
+
+// Medium screen / desktop
+//** Deprecated `$screen-md` as of v3.0.1
+$screen-md:                  992px !default;
+$screen-md-min:              $screen-md !default;
+//** Deprecated `$screen-desktop` as of v3.0.1
+$screen-desktop:             $screen-md-min !default;
+
+// Large screen / wide desktop
+//** Deprecated `$screen-lg` as of v3.0.1
+$screen-lg:                  1200px !default;
+$screen-lg-min:              $screen-lg !default;
+//** Deprecated `$screen-lg-desktop` as of v3.0.1
+$screen-lg-desktop:          $screen-lg-min !default;
+
+// So media queries don't overlap when required, provide a maximum
+$screen-xs-max:              ($screen-sm-min - 1) !default;
+$screen-sm-max:              ($screen-md-min - 1) !default;
+$screen-md-max:              ($screen-lg-min - 1) !default;
+
+
+//== Grid system
+//
+//## Define your custom responsive grid.
+
+//** Number of columns in the grid.
+$grid-columns:              12 !default;
+//** Padding between columns. Gets divided in half for the left and right.
+$grid-gutter-width:         30px !default;
+// Navbar collapse
+//** Point at which the navbar becomes uncollapsed.
+$grid-float-breakpoint:     $screen-sm-min !default;
+//** Point at which the navbar begins collapsing.
+$grid-float-breakpoint-max: ($grid-float-breakpoint - 1) !default;
+
+
+//== Container sizes
+//
+//## Define the maximum width of `.container` for different screen sizes.
+
+// Small screen / tablet
+$container-tablet:             (720px + $grid-gutter-width) !default;
+//** For `$screen-sm-min` and up.
+$container-sm:                 $container-tablet !default;
+
+// Medium screen / desktop
+$container-desktop:            (940px + $grid-gutter-width) !default;
+//** For `$screen-md-min` and up.
+$container-md:                 $container-desktop !default;
+
+// Large screen / wide desktop
+$container-large-desktop:      (1140px + $grid-gutter-width) !default;
+//** For `$screen-lg-min` and up.
+$container-lg:                 $container-large-desktop !default;
+
+
+//== Navbar
+//
+//##
+
+// Basics of a navbar
+$navbar-height:                    60px !default;
+$navbar-margin-bottom:             $line-height-computed !default;
+$navbar-border-radius:             $border-radius-base !default;
+$navbar-padding-horizontal:        floor(($grid-gutter-width / 2)) !default;
+$navbar-padding-vertical:          (($navbar-height - $line-height-computed) / 2) !default;
+$navbar-collapse-max-height:       340px !default;
+
+$navbar-default-color:             #000 !default;
+$navbar-default-bg:                #fff !default;
+$navbar-default-border:            darken($navbar-default-bg, 6.5%) !default;
+
+// Navbar links
+$navbar-default-link-color:                #000 !default;
+$navbar-default-link-hover-color:          #000 !default;
+$navbar-default-link-hover-bg:             darken($navbar-default-bg, 6.5%) !default;
+$navbar-default-link-active-color:         #000 !default;
+$navbar-default-link-active-bg:            darken($navbar-default-bg, 6.5%) !default;
+$navbar-default-link-disabled-color:       #ccc !default;
+$navbar-default-link-disabled-bg:          transparent !default;
+
+// Navbar brand label
+$navbar-default-brand-color:               $navbar-default-link-color !default;
+$navbar-default-brand-hover-color:         $navbar-default-link-hover-color !default;
+$navbar-default-brand-hover-bg:            darken($navbar-default-bg, 6.5%) !default;
+
+// Navbar toggle
+$navbar-default-toggle-hover-bg:           #ddd !default;
+$navbar-default-toggle-icon-bar-bg:        #ccc !default;
+$navbar-default-toggle-border-color:       #ddd !default;
+
+
+//=== Inverted navbar
+// Reset inverted navbar basics
+$navbar-inverse-color:                      #fff !default;
+$navbar-inverse-bg:                         $brand-primary !default;
+$navbar-inverse-border:                     darken($navbar-inverse-bg, 10%) !default;
+
+// Inverted navbar links
+$navbar-inverse-link-color:                 #fff !default;
+$navbar-inverse-link-hover-color:           #fff !default;
+$navbar-inverse-link-hover-bg:              darken($navbar-inverse-bg, 6.5%) !default;
+$navbar-inverse-link-active-color:          #fff !default;
+$navbar-inverse-link-active-bg:             darken($navbar-inverse-bg, 6.5%) !default;
+$navbar-inverse-link-disabled-color:        #444 !default;
+$navbar-inverse-link-disabled-bg:           transparent !default;
+
+// Inverted navbar brand label
+$navbar-inverse-brand-color:                $navbar-inverse-link-color !default;
+$navbar-inverse-brand-hover-color:          #fff !default;
+$navbar-inverse-brand-hover-bg:             darken($navbar-inverse-bg, 6.5%) !default;
+
+// Inverted navbar toggle
+$navbar-inverse-toggle-hover-bg:            darken($navbar-inverse-bg, 10%) !default;
+$navbar-inverse-toggle-icon-bar-bg:         #fff !default;
+$navbar-inverse-toggle-border-color:        darken($navbar-inverse-bg, 10%) !default;
+
+
+//== Navs
+//
+//##
+
+//=== Shared nav styles
+$nav-link-padding:                          10px 15px !default;
+$nav-link-hover-bg:                         $gray-lighter !default;
+
+$nav-disabled-link-color:                   $gray-light !default;
+$nav-disabled-link-hover-color:             $gray-light !default;
+
+//== Tabs
+$nav-tabs-border-color:                     #ddd !default;
+
+$nav-tabs-link-hover-border-color:          $gray-lighter !default;
+
+$nav-tabs-active-link-hover-bg:             $body-bg !default;
+$nav-tabs-active-link-hover-color:          $gray !default;
+$nav-tabs-active-link-hover-border-color:   #ddd !default;
+
+$nav-tabs-justified-link-border-color:            #ddd !default;
+$nav-tabs-justified-active-link-border-color:     $body-bg !default;
+
+//== Pills
+$nav-pills-border-radius:                   $border-radius-base !default;
+$nav-pills-active-link-hover-bg:            $component-active-bg !default;
+$nav-pills-active-link-hover-color:         $component-active-color !default;
+
+
+//== Pagination
+//
+//##
+
+$pagination-color:                     $link-color !default;
+$pagination-bg:                        #fff !default;
+$pagination-border:                    #ddd !default;
+
+$pagination-hover-color:               $link-hover-color !default;
+$pagination-hover-bg:                  $gray-lighter !default;
+$pagination-hover-border:              #ddd !default;
+
+$pagination-active-color:              $gray-light !default;
+$pagination-active-bg:                 #f5f5f5 !default;
+$pagination-active-border:             #ddd !default;
+
+$pagination-disabled-color:            $gray-light !default;
+$pagination-disabled-bg:               #fff !default;
+$pagination-disabled-border:           #ddd !default;
+
+
+//== Pager
+//
+//##
+
+$pager-bg:                             $pagination-bg !default;
+$pager-border:                         $pagination-border !default;
+$pager-border-radius:                  15px !default;
+
+$pager-hover-bg:                       $pagination-hover-bg !default;
+
+$pager-active-bg:                      $pagination-active-bg !default;
+$pager-active-color:                   $pagination-active-color !default;
+
+$pager-disabled-color:                 $gray-light !default;
+
+
+//== Jumbotron
+//
+//##
+
+$jumbotron-padding:              30px !default;
+$jumbotron-color:                inherit !default;
+$jumbotron-bg:                   $gray-lighter !default;
+$jumbotron-heading-color:        inherit !default;
+$jumbotron-font-size:            ceil(($font-size-base * 1.5)) !default;
+$jumbotron-heading-font-size:    ceil(($font-size-base * 4.5)) !default;
+
+
+//== Form states and alerts
+//
+//## Define colors for form feedback states and, by default, alerts.
+
+$state-success-text:             #468847 !default;
+$state-success-bg:               #dff0d8 !default;
+$state-success-border:           darken(adjust-hue($state-success-bg, -10), 5%) !default;
+
+$state-info-text:                #3a87ad !default;
+$state-info-bg:                  #d9edf7 !default;
+$state-info-border:              darken(adjust-hue($state-info-bg, -10), 7%) !default;
+
+$state-warning-text:             #c09853 !default;
+$state-warning-bg:               #fcf8e3 !default;
+$state-warning-border:           darken(adjust-hue($state-warning-bg, -10), 3%) !default;
+
+$state-danger-text:              #b94a48 !default;
+$state-danger-bg:                #f2dede !default;
+$state-danger-border:            darken(adjust-hue($state-danger-bg, -10), 3%) !default;
+
+
+//== Tooltips
+//
+//##
+
+//** Tooltip max width
+$tooltip-max-width:           200px !default;
+//** Tooltip text color
+$tooltip-color:               #fff !default;
+//** Tooltip background color
+$tooltip-bg:                  #000 !default;
+$tooltip-opacity:             .9 !default;
+
+//** Tooltip arrow width
+$tooltip-arrow-width:         5px !default;
+//** Tooltip arrow color
+$tooltip-arrow-color:         $tooltip-bg !default;
+
+
+//== Popovers
+//
+//##
+
+//** Popover body background color
+$popover-bg:                          #fff !default;
+//** Popover maximum width
+$popover-max-width:                   276px !default;
+//** Popover border color
+$popover-border-color:                rgba(0,0,0,.2) !default;
+//** Popover fallback border color
+$popover-fallback-border-color:       #ccc !default;
+
+//** Popover title background color
+$popover-title-bg:                    darken($popover-bg, 3%) !default;
+
+//** Popover arrow width
+$popover-arrow-width:                 10px !default;
+//** Popover arrow color
+$popover-arrow-color:                 $popover-bg !default;
+
+//** Popover outer arrow width
+$popover-arrow-outer-width:           ($popover-arrow-width + 1) !default;
+//** Popover outer arrow color
+$popover-arrow-outer-color:           fadein($popover-border-color, 5%) !default;
+//** Popover outer arrow fallback color
+$popover-arrow-outer-fallback-color:  darken($popover-fallback-border-color, 20%) !default;
+
+
+//== Labels
+//
+//##
+
+//** Default label background color
+$label-default-bg:            $btn-default-bg !default;
+//** Primary label background color
+$label-primary-bg:            $brand-primary !default;
+//** Success label background color
+$label-success-bg:            $brand-success !default;
+//** Info label background color
+$label-info-bg:               $brand-info !default;
+//** Warning label background color
+$label-warning-bg:            $brand-warning !default;
+//** Danger label background color
+$label-danger-bg:             $brand-danger !default;
+
+//** Default label text color
+$label-color:                 #fff !default;
+//** Default text color of a linked label
+$label-link-hover-color:      #fff !default;
+
+
+//== Modals
+//
+//##
+
+//** Padding applied to the modal body
+$modal-inner-padding:         20px !default;
+
+//** Padding applied to the modal title
+$modal-title-padding:         15px !default;
+//** Modal title line-height
+$modal-title-line-height:     $line-height-base !default;
+
+//** Background color of modal content area
+$modal-content-bg:                             #fff !default;
+//** Modal content border color
+$modal-content-border-color:                   rgba(0,0,0,.2) !default;
+//** Modal content border color **for IE8**
+$modal-content-fallback-border-color:          #999 !default;
+
+//** Modal backdrop background color
+$modal-backdrop-bg:           #000 !default;
+//** Modal backdrop opacity
+$modal-backdrop-opacity:      .5 !default;
+//** Modal header border color
+$modal-header-border-color:   #e5e5e5 !default;
+//** Modal footer border color
+$modal-footer-border-color:   $modal-header-border-color !default;
+
+$modal-lg:                    900px !default;
+$modal-md:                    600px !default;
+$modal-sm:                    300px !default;
+
+
+//== Alerts
+//
+//## Define alert colors, border radius, and padding.
+
+$alert-padding:               15px !default;
+$alert-border-radius:         $border-radius-base !default;
+$alert-link-font-weight:      bold !default;
+
+$alert-success-bg:            $state-success-bg !default;
+$alert-success-text:          $state-success-text !default;
+$alert-success-border:        $state-success-border !default;
+
+$alert-info-bg:               $state-info-bg !default;
+$alert-info-text:             $state-info-text !default;
+$alert-info-border:           $state-info-border !default;
+
+$alert-warning-bg:            $state-warning-bg !default;
+$alert-warning-text:          $state-warning-text !default;
+$alert-warning-border:        $state-warning-border !default;
+
+$alert-danger-bg:             $state-danger-bg !default;
+$alert-danger-text:           $state-danger-text !default;
+$alert-danger-border:         $state-danger-border !default;
+
+
+//== Progress bars
+//
+//##
+
+//** Background color of the whole progress component
+$progress-bg:                 #f5f5f5 !default;
+//** Progress bar text color
+$progress-bar-color:          #fff !default;
+//** Variable for setting rounded corners on progress bar.
+$progress-border-radius:      $border-radius-base !default;
+
+//** Default progress bar color
+$progress-bar-bg:             $brand-primary !default;
+//** Success progress bar color
+$progress-bar-success-bg:     $brand-success !default;
+//** Warning progress bar color
+$progress-bar-warning-bg:     $brand-warning !default;
+//** Danger progress bar color
+$progress-bar-danger-bg:      $brand-danger !default;
+//** Info progress bar color
+$progress-bar-info-bg:        $brand-info !default;
+
+
+//== List group
+//
+//##
+
+//** Background color on `.list-group-item`
+$list-group-bg:                 #fff !default;
+//** `.list-group-item` border color
+$list-group-border:             #ddd !default;
+//** List group border radius
+$list-group-border-radius:      $border-radius-base !default;
+
+//** Background color of single list items on hover
+$list-group-hover-bg:           #f5f5f5 !default;
+//** Text color of active list items
+$list-group-active-color:       $component-active-color !default;
+//** Background color of active list items
+$list-group-active-bg:          $component-active-bg !default;
+//** Border color of active list elements
+$list-group-active-border:      $list-group-active-bg !default;
+//** Text color for content within active list items
+$list-group-active-text-color:  lighten($list-group-active-bg, 40%) !default;
+
+//** Text color of disabled list items
+$list-group-disabled-color:      $gray-light !default;
+//** Background color of disabled list items
+$list-group-disabled-bg:         $gray-lighter !default;
+//** Text color for content within disabled list items
+$list-group-disabled-text-color: $list-group-disabled-color !default;
+
+$list-group-link-color:         #555 !default;
+$list-group-link-hover-color:   $list-group-link-color !default;
+$list-group-link-heading-color: #333 !default;
+
+
+//== Panels
+//
+//##
+
+$panel-bg:                    #fff !default;
+$panel-body-padding:          15px !default;
+$panel-heading-padding:       10px 15px !default;
+$panel-footer-padding:        $panel-heading-padding !default;
+$panel-border-radius:         $border-radius-base !default;
+
+//** Border color for elements within panels
+$panel-inner-border:          #ddd !default;
+$panel-footer-bg:             #f5f5f5 !default;
+
+$panel-default-text:          $text-color !default;
+$panel-default-border:        #ddd !default;
+$panel-default-heading-bg:    #f5f5f5 !default;
+
+$panel-primary-text:          #fff !default;
+$panel-primary-border:        $brand-primary !default;
+$panel-primary-heading-bg:    $brand-primary !default;
+
+$panel-success-text:          $state-success-text !default;
+$panel-success-border:        $brand-success !default;
+$panel-success-heading-bg:    $brand-success !default;
+
+$panel-info-text:             $state-info-text !default;
+$panel-info-border:           $brand-info !default;
+$panel-info-heading-bg:       $brand-info !default;
+
+$panel-warning-text:          $state-warning-text !default;
+$panel-warning-border:        $brand-warning !default;
+$panel-warning-heading-bg:    $brand-warning !default;
+
+$panel-danger-text:           $state-danger-text !default;
+$panel-danger-border:         $brand-danger !default;
+$panel-danger-heading-bg:     $brand-danger !default;
+
+
+//== Thumbnails
+//
+//##
+
+//** Padding around the thumbnail image
+$thumbnail-padding:           4px !default;
+//** Thumbnail background color
+$thumbnail-bg:                $body-bg !default;
+//** Thumbnail border color
+$thumbnail-border:            #ddd !default;
+//** Thumbnail border radius
+$thumbnail-border-radius:     $border-radius-base !default;
+
+//** Custom text color for thumbnail captions
+$thumbnail-caption-color:     $text-color !default;
+//** Padding around the thumbnail caption
+$thumbnail-caption-padding:   9px !default;
+
+
+//== Wells
+//
+//##
+
+$well-bg:                     #f5f5f5 !default;
+$well-border:                 darken($well-bg, 7%) !default;
+
+
+//== Badges
+//
+//##
+
+$badge-color:                 #fff !default;
+//** Linked badge text color on hover
+$badge-link-hover-color:      #fff !default;
+$badge-bg:                    $link-color !default;
+
+//** Badge text color in active nav link
+$badge-active-color:          $link-color !default;
+//** Badge background color in active nav link
+$badge-active-bg:             #fff !default;
+
+$badge-font-weight:           bold !default;
+$badge-line-height:           1 !default;
+$badge-border-radius:         10px !default;
+
+
+//== Breadcrumbs
+//
+//##
+
+$breadcrumb-padding-vertical:   8px !default;
+$breadcrumb-padding-horizontal: 15px !default;
+//** Breadcrumb background color
+$breadcrumb-bg:                 #f5f5f5 !default;
+//** Breadcrumb text color
+$breadcrumb-color:              #ccc !default;
+//** Text color of current page in the breadcrumb
+$breadcrumb-active-color:       $gray-light !default;
+//** Textual separator for between breadcrumb elements
+$breadcrumb-separator:          "/" !default;
+
+
+//== Carousel
+//
+//##
+
+$carousel-text-shadow:                        0 1px 2px rgba(0,0,0,.6) !default;
+
+$carousel-control-color:                      #fff !default;
+$carousel-control-width:                      15% !default;
+$carousel-control-opacity:                    .5 !default;
+$carousel-control-font-size:                  20px !default;
+
+$carousel-indicator-active-bg:                #fff !default;
+$carousel-indicator-border-color:             #fff !default;
+
+$carousel-caption-color:                      #fff !default;
+
+
+//== Close
+//
+//##
+
+$close-font-weight:           bold !default;
+$close-color:                 #000 !default;
+$close-text-shadow:           0 1px 0 #fff !default;
+
+
+//== Code
+//
+//##
+
+$code-color:                  #c7254e !default;
+$code-bg:                     #f9f2f4 !default;
+
+$kbd-color:                   #fff !default;
+$kbd-bg:                      #333 !default;
+
+$pre-bg:                      #f5f5f5 !default;
+$pre-color:                   $gray-dark !default;
+$pre-border-color:            #ccc !default;
+$pre-scrollable-max-height:   340px !default;
+
+
+//== Type
+//
+//##
+
+//** Horizontal offset for forms and lists.
+$component-offset-horizontal: 180px !default;
+//** Text muted color
+$text-muted:                  $gray-light !default;
+//** Abbreviations and acronyms border color
+$abbr-border-color:           $gray-light !default;
+//** Headings small color
+$headings-small-color:        $gray-light !default;
+//** Blockquote small color
+$blockquote-small-color:      $gray-light !default;
+//** Blockquote font size
+$blockquote-font-size:        ($font-size-base * 1.25) !default;
+//** Blockquote border color
+$blockquote-border-color:     $gray-lighter !default;
+//** Page header border color
+$page-header-border-color:    $gray-lighter !default;
+//** Width of horizontal description list titles
+$dl-horizontal-offset:        $component-offset-horizontal !default;
+//** Point at which .dl-horizontal becomes horizontal
+$dl-horizontal-breakpoint:    $grid-float-breakpoint !default;
+//** Horizontal line color.
+$hr-border:                   $gray-lighter !default;
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/journal/_bootswatch.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/journal/_bootswatch.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/journal/_bootswatch.scss	(revision 3762)
@@ -0,0 +1,145 @@
+// Journal 3.4.1
+// Bootswatch
+// -----------------------------------------------------
+
+$web-font-path: "https://fonts.googleapis.com/css?family=News+Cycle:400,700" !default;
+@import url($web-font-path);
+
+// Navbar =====================================================================
+
+.navbar {
+  font-size: 18px;
+  font-family: $font-family-sans-serif;
+  font-weight: $headings-font-weight;
+
+  &-default {
+
+    .badge {
+      background-color: #000;
+      color: #fff;
+    }
+  }
+
+  &-inverse {
+
+    .badge {
+      background-color: #fff;
+      color: $navbar-inverse-bg;
+    }
+  }
+}
+
+.navbar-brand {
+  font-size: inherit;
+  font-weight: $headings-font-weight;
+  text-transform: uppercase;
+}
+
+// Buttons ====================================================================
+
+// Typography =================================================================
+
+// Tables =====================================================================
+
+// Forms ======================================================================
+
+.has-warning {
+  .help-block,
+  .control-label,
+  .radio,
+  .checkbox,
+  .radio-inline,
+  .checkbox-inline,
+  &.radio label,
+  &.checkbox label,
+  &.radio-inline label,
+  &.checkbox-inline label,
+  .form-control-feedback {
+    color: $brand-danger;
+  }
+
+  .form-control,
+  .form-control:focus {
+    border-color: $brand-danger;
+  }
+}
+
+.has-error {
+  .help-block,
+  .control-label,
+  .radio,
+  .checkbox,
+  .radio-inline,
+  .checkbox-inline,
+  &.radio label,
+  &.checkbox label,
+  &.radio-inline label,
+  &.checkbox-inline label,
+  .form-control-feedback {
+    color: $brand-primary;
+  }
+
+  .form-control,
+  .form-control:focus {
+    border-color: $brand-primary;
+  }
+}
+
+.has-success {
+  .help-block,
+  .control-label,
+  .radio,
+  .checkbox,
+  .radio-inline,
+  .checkbox-inline,
+  &.radio label,
+  &.checkbox label,
+  &.radio-inline label,
+  &.checkbox-inline label,
+  .form-control-feedback {
+    color: $brand-success;
+  }
+
+  .form-control,
+  .form-control:focus {
+    border-color: $brand-success;
+  }
+}
+
+// Navs =======================================================================
+
+// Indicators =================================================================
+
+.badge {
+  padding-bottom: 4px;
+  vertical-align: 3px;
+  font-size: 10px;
+}
+
+// Progress bars ==============================================================
+
+// Containers =================================================================
+
+.jumbotron {
+
+  h1, h2, h3, h4, h5, h6 {
+    font-family: $font-family-sans-serif;
+    font-weight: $headings-font-weight;
+    color: #000;
+  }
+}
+
+.panel {
+
+  &-primary,
+  &-success,
+  &-warning,
+  &-danger,
+  &-info {
+    .panel-title {
+      color: #fff;
+    }
+  }
+
+
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/spacelab/_bootswatch.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/spacelab/_bootswatch.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/spacelab/_bootswatch.scss	(revision 3762)
@@ -0,0 +1,142 @@
+// Spacelab 3.4.1
+// Bootswatch
+// -----------------------------------------------------
+
+$web-font-path: "https://fonts.googleapis.com/css?family=Open+Sans:400italic,700italic,400,700" !default;
+@import url($web-font-path);
+
+@mixin btn-shadow($color){
+  @include gradient-vertical-three-colors(lighten($color, 15%), $color, 50%, darken($color, 4%));
+  filter: none;
+  border: 1px solid darken($color, 10%);
+}
+
+// Navbar =====================================================================
+
+.navbar {
+
+  @include btn-shadow($navbar-default-bg);
+  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.3);
+
+  &-inverse {
+    @include btn-shadow($navbar-inverse-bg);
+    text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.3);
+
+    .badge {
+      background-color: #fff;
+      color: $navbar-inverse-bg;
+    }
+  }
+
+  .badge {
+    text-shadow: none;
+  }
+
+  &-nav > li > a,
+  &-nav > li > a:hover {
+    padding-top: ($navbar-padding-vertical + 2px);
+    padding-bottom: ($navbar-padding-vertical - 2px);
+    @include transition(color ease-in-out .2s);
+  }
+  
+  &-brand,
+  &-brand:hover {
+    @include transition(color ease-in-out .2s);
+  }
+
+  .caret,
+  .caret:hover {
+    @include transition(border-color ease-in-out .2s);
+  }
+
+  .dropdown-menu {
+    text-shadow: none;
+  }
+}
+
+// Buttons ====================================================================
+
+.btn {
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.3);
+
+  &-default {
+    @include btn-shadow($btn-default-bg);
+
+    &:hover {
+      @include btn-shadow(darken($btn-default-bg, 4%));
+    }
+  }
+
+  &-primary {
+    @include btn-shadow($btn-primary-bg);
+
+    &:hover {
+      @include btn-shadow(darken($btn-primary-bg, 4%));
+    }
+  }
+
+  &-success {
+    @include btn-shadow($btn-success-bg);
+
+    &:hover {
+      @include btn-shadow(darken($btn-success-bg, 4%));
+    }
+  }
+
+  &-info {
+    @include btn-shadow($btn-info-bg);
+
+    &:hover {
+      @include btn-shadow(darken($btn-info-bg, 4%));
+    }
+  }
+
+  &-warning {
+    @include btn-shadow($btn-warning-bg);
+
+    &:hover {
+      @include btn-shadow(darken($btn-warning-bg, 4%));
+    }
+  }
+
+  &-danger {
+    @include btn-shadow($btn-danger-bg);
+
+    &:hover {
+      @include btn-shadow(darken($btn-danger-bg, 4%));
+    }
+  }
+
+  &-link {
+    text-shadow: none;
+  }
+
+  &:active,
+  &.active {
+    background-image: none;
+    @include box-shadow(inset 0 3px 5px rgba(0,0,0,.125));
+  }
+}
+
+// Typography =================================================================
+
+// Tables =====================================================================
+
+// Forms ======================================================================
+
+// Navs =======================================================================
+
+// Indicators =================================================================
+
+// Progress bars ==============================================================
+
+// Containers =================================================================
+
+.panel {
+
+  &-primary {
+    .panel-title {
+      color: #fff;
+    }
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/spacelab/font.css
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/spacelab/font.css	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/spacelab/font.css	(revision 3762)
@@ -0,0 +1,28 @@
+@font-face {
+  font-family: 'Open Sans';
+  font-style: italic;
+  font-weight: 400;
+  font-stretch: normal;
+  src: url(fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk8ZkWVAexg.woff) format('woff');
+}
+@font-face {
+  font-family: 'Open Sans';
+  font-style: italic;
+  font-weight: 700;
+  font-stretch: normal;
+  src: url(fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0RkyFjWVAexg.woff) format('woff');
+}
+@font-face {
+  font-family: 'Open Sans';
+  font-style: normal;
+  font-weight: 400;
+  font-stretch: normal;
+  src: url(fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B4gaVQ.woff) format('woff');
+}
+@font-face {
+  font-family: 'Open Sans';
+  font-style: normal;
+  font-weight: 700;
+  font-stretch: normal;
+  src: url(fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1x4gaVQ.woff) format('woff');
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/spacelab/_variables.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/spacelab/_variables.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/spacelab/_variables.scss	(revision 3762)
@@ -0,0 +1,870 @@
+$bootstrap-sass-asset-helper: false !default;
+// Spacelab 3.4.1
+// Variables
+// --------------------------------------------------
+
+
+//== Colors
+//
+//## Gray and brand colors for use across Bootstrap.
+
+$gray-base:              #000 !default;
+$gray-darker:            #2d2d2d !default; // #222
+$gray-dark:              lighten($gray-base, 20%) !default;   // #333
+$gray:                   #666 !default; // #555
+$gray-light:             lighten($gray-base, 60%) !default;   // #999
+$gray-lighter:           lighten($gray-base, 93.5%) !default; // #eee
+
+$brand-primary:         #446E9B !default;
+$brand-success:         #3CB521 !default;
+$brand-info:            #3399F3 !default;
+$brand-warning:         #D47500 !default;
+$brand-danger:          #CD0200 !default;
+
+
+//== Scaffolding
+//
+//## Settings for some of the most global styles.
+
+//** Background color for `<body>`.
+$body-bg:               #fff !default;
+//** Global text color on `<body>`.
+$text-color:            $gray !default;
+
+//** Global textual link color.
+$link-color:            $brand-info !default;
+//** Link hover color set via `darken()` function.
+$link-hover-color:      $link-color !default;
+//** Link hover decoration.
+$link-hover-decoration: underline !default;
+
+
+//== Typography
+//
+//## Font, line-height, and color for body text, headings, and more.
+
+$font-family-sans-serif:  "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif !default;
+$font-family-serif:       Georgia, "Times New Roman", Times, serif !default;
+//** Default monospace fonts for `<code>`, `<kbd>`, and `<pre>`.
+$font-family-monospace:   Menlo, Monaco, Consolas, "Courier New", monospace !default;
+$font-family-base:        $font-family-sans-serif !default;
+
+$font-size-base:          14px !default;
+$font-size-large:         ceil(($font-size-base * 1.25)) !default; // ~18px
+$font-size-small:         ceil(($font-size-base * 0.85)) !default; // ~12px
+
+$font-size-h1:            floor(($font-size-base * 2.6)) !default; // ~36px
+$font-size-h2:            floor(($font-size-base * 2.15)) !default; // ~30px
+$font-size-h3:            ceil(($font-size-base * 1.7)) !default; // ~24px
+$font-size-h4:            ceil(($font-size-base * 1.25)) !default; // ~18px
+$font-size-h5:            $font-size-base !default;
+$font-size-h6:            ceil(($font-size-base * 0.85)) !default; // ~12px
+
+//** Unit-less `line-height` for use in components like buttons.
+$line-height-base:        1.428571429 !default; // 20/14
+//** Computed "line-height" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.
+$line-height-computed:    floor(($font-size-base * $line-height-base)) !default; // ~20px
+
+//** By default, this inherits from the `<body>`.
+$headings-font-family:    $font-family-base !default;
+$headings-font-weight:    500 !default;
+$headings-line-height:    1.1 !default;
+$headings-color:          $gray-darker !default;
+
+
+//== Iconography
+//
+//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.
+
+//** Load fonts from this directory.
+$icon-font-path: if($bootstrap-sass-asset-helper, "bootstrap/", "../fonts/bootstrap/") !default;
+//** File name for all font files.
+$icon-font-name:          "glyphicons-halflings-regular" !default;
+//** Element ID within SVG icon file.
+$icon-font-svg-id:        "glyphicons_halflingsregular" !default;
+
+
+//== Components
+//
+//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).
+
+$padding-base-vertical:     8px !default;
+$padding-base-horizontal:   12px !default;
+
+$padding-large-vertical:    14px !default;
+$padding-large-horizontal:  16px !default;
+
+$padding-small-vertical:    5px !default;
+$padding-small-horizontal:  10px !default;
+
+$padding-xs-vertical:       1px !default;
+$padding-xs-horizontal:     5px !default;
+
+$line-height-large:         1.3333333 !default; // extra decimals for Win 8.1 Chrome
+$line-height-small:         1.5 !default;
+
+$border-radius-base:        4px !default;
+$border-radius-large:       6px !default;
+$border-radius-small:       3px !default;
+
+//** Global color for active items (e.g., navs or dropdowns).
+$component-active-color:    #fff !default;
+//** Global background color for active items (e.g., navs or dropdowns).
+$component-active-bg:       $brand-primary !default;
+
+//** Width of the `border` for generating carets that indicate dropdowns.
+$caret-width-base:          4px !default;
+//** Carets increase slightly in size for larger components.
+$caret-width-large:         5px !default;
+
+
+//== Tables
+//
+//## Customizes the `.table` component with basic values, each used across all table variations.
+
+//** Padding for `<th>`s and `<td>`s.
+$table-cell-padding:            8px !default;
+//** Padding for cells in `.table-condensed`.
+$table-condensed-cell-padding:  5px !default;
+
+//** Default background color used for all tables.
+$table-bg:                      transparent !default;
+//** Background color used for `.table-striped`.
+$table-bg-accent:               #f9f9f9 !default;
+//** Background color used for `.table-hover`.
+$table-bg-hover:                #f5f5f5 !default;
+$table-bg-active:               $table-bg-hover !default;
+
+//** Border color for table and cell borders.
+$table-border-color:            #ddd !default;
+
+
+//== Buttons
+//
+//## For each of Bootstrap's buttons, define text, background and border color.
+
+$btn-font-weight:                normal !default;
+
+$btn-default-color:              #fff !default;
+$btn-default-bg:                 #474949 !default;
+$btn-default-border:             $btn-default-bg !default;
+
+$btn-primary-color:              $btn-default-color !default;
+$btn-primary-bg:                 $brand-primary !default;
+$btn-primary-border:             $btn-primary-bg !default;
+
+$btn-success-color:              $btn-default-color !default;
+$btn-success-bg:                 $brand-success !default;
+$btn-success-border:             $btn-success-bg !default;
+
+$btn-info-color:                 $btn-default-color !default;
+$btn-info-bg:                    $brand-info !default;
+$btn-info-border:                $btn-info-bg !default;
+
+$btn-warning-color:              $btn-default-color !default;
+$btn-warning-bg:                 $brand-warning !default;
+$btn-warning-border:             $btn-warning-bg !default;
+
+$btn-danger-color:               $btn-default-color !default;
+$btn-danger-bg:                  $brand-danger !default;
+$btn-danger-border:              $btn-danger-bg !default;
+
+$btn-link-disabled-color:        $gray-light !default;
+
+// Allows for customizing button radius independently from global border radius
+$btn-border-radius-base:         $border-radius-base !default;
+$btn-border-radius-large:        $border-radius-large !default;
+$btn-border-radius-small:        $border-radius-small !default;
+
+
+//== Forms
+//
+//##
+
+//** `<input>` background color
+$input-bg:                       #fff !default;
+//** `<input disabled>` background color
+$input-bg-disabled:              $gray-lighter !default;
+
+//** Text color for `<input>`s
+$input-color:                    $text-color !default;
+//** `<input>` border color
+$input-border:                   #ccc !default;
+
+// TODO: Rename `$input-border-radius` to `$input-border-radius-base` in v4
+//** Default `.form-control` border radius
+// This has no effect on `<select>`s in some browsers, due to the limited stylability of `<select>`s in CSS.
+$input-border-radius:            $border-radius-base !default;
+//** Large `.form-control` border radius
+$input-border-radius-large:      $border-radius-large !default;
+//** Small `.form-control` border radius
+$input-border-radius-small:      $border-radius-small !default;
+
+//** Border color for inputs on focus
+$input-border-focus:             #66afe9 !default;
+
+//** Placeholder text color
+$input-color-placeholder:        $gray-light !default;
+
+//** Default `.form-control` height
+$input-height-base:              ($line-height-computed + ($padding-base-vertical * 2) + 2) !default;
+//** Large `.form-control` height
+$input-height-large:             (ceil($font-size-large * $line-height-large) + ($padding-large-vertical * 2) + 2) !default;
+//** Small `.form-control` height
+$input-height-small:             (floor($font-size-small * $line-height-small) + ($padding-small-vertical * 2) + 2) !default;
+
+//** `.form-group` margin
+$form-group-margin-bottom:       15px !default;
+
+$legend-color:                   $text-color !default;
+$legend-border-color:            #e5e5e5 !default;
+
+//** Background color for textual input addons
+$input-group-addon-bg:           $gray-lighter !default;
+//** Border color for textual input addons
+$input-group-addon-border-color: $input-border !default;
+
+//** Disabled cursor for form controls and buttons.
+$cursor-disabled:                not-allowed !default;
+
+
+//== Dropdowns
+//
+//## Dropdown menu container and contents.
+
+//** Background for the dropdown menu.
+$dropdown-bg:                    #fff !default;
+//** Dropdown menu `border-color`.
+$dropdown-border:                rgba(0,0,0,.15) !default;
+//** Dropdown menu `border-color` **for IE8**.
+$dropdown-fallback-border:       #ccc !default;
+//** Divider color for between dropdown items.
+$dropdown-divider-bg:            #e5e5e5 !default;
+
+//** Dropdown link text color.
+$dropdown-link-color:            $gray-dark !default;
+//** Hover color for dropdown links.
+$dropdown-link-hover-color:      #fff !default;
+//** Hover background for dropdown links.
+$dropdown-link-hover-bg:         $component-active-bg !default;
+
+//** Active dropdown menu item text color.
+$dropdown-link-active-color:     #fff !default;
+//** Active dropdown menu item background color.
+$dropdown-link-active-bg:        $component-active-bg !default;
+
+//** Disabled dropdown menu item background color.
+$dropdown-link-disabled-color:   $gray-light !default;
+
+//** Text color for headers within dropdown menus.
+$dropdown-header-color:          $gray-light !default;
+
+//** Deprecated `$dropdown-caret-color` as of v3.1.0
+$dropdown-caret-color:           #000 !default;
+
+
+//-- Z-index master list
+//
+// Warning: Avoid customizing these values. They're used for a bird's eye view
+// of components dependent on the z-axis and are designed to all work together.
+//
+// Note: These variables are not generated into the Customizer.
+
+$zindex-navbar:            1000 !default;
+$zindex-dropdown:          1000 !default;
+$zindex-popover:           1060 !default;
+$zindex-tooltip:           1070 !default;
+$zindex-navbar-fixed:      1030 !default;
+$zindex-modal-background:  1040 !default;
+$zindex-modal:             1050 !default;
+
+
+//== Media queries breakpoints
+//
+//## Define the breakpoints at which your layout will change, adapting to different screen sizes.
+
+// Extra small screen / phone
+//** Deprecated `$screen-xs` as of v3.0.1
+$screen-xs:                  480px !default;
+//** Deprecated `$screen-xs-min` as of v3.2.0
+$screen-xs-min:              $screen-xs !default;
+//** Deprecated `$screen-phone` as of v3.0.1
+$screen-phone:               $screen-xs-min !default;
+
+// Small screen / tablet
+//** Deprecated `$screen-sm` as of v3.0.1
+$screen-sm:                  768px !default;
+$screen-sm-min:              $screen-sm !default;
+//** Deprecated `$screen-tablet` as of v3.0.1
+$screen-tablet:              $screen-sm-min !default;
+
+// Medium screen / desktop
+//** Deprecated `$screen-md` as of v3.0.1
+$screen-md:                  992px !default;
+$screen-md-min:              $screen-md !default;
+//** Deprecated `$screen-desktop` as of v3.0.1
+$screen-desktop:             $screen-md-min !default;
+
+// Large screen / wide desktop
+//** Deprecated `$screen-lg` as of v3.0.1
+$screen-lg:                  1200px !default;
+$screen-lg-min:              $screen-lg !default;
+//** Deprecated `$screen-lg-desktop` as of v3.0.1
+$screen-lg-desktop:          $screen-lg-min !default;
+
+// So media queries don't overlap when required, provide a maximum
+$screen-xs-max:              ($screen-sm-min - 1) !default;
+$screen-sm-max:              ($screen-md-min - 1) !default;
+$screen-md-max:              ($screen-lg-min - 1) !default;
+
+
+//== Grid system
+//
+//## Define your custom responsive grid.
+
+//** Number of columns in the grid.
+$grid-columns:              12 !default;
+//** Padding between columns. Gets divided in half for the left and right.
+$grid-gutter-width:         30px !default;
+// Navbar collapse
+//** Point at which the navbar becomes uncollapsed.
+$grid-float-breakpoint:     $screen-sm-min !default;
+//** Point at which the navbar begins collapsing.
+$grid-float-breakpoint-max: ($grid-float-breakpoint - 1) !default;
+
+
+//== Container sizes
+//
+//## Define the maximum width of `.container` for different screen sizes.
+
+// Small screen / tablet
+$container-tablet:             (720px + $grid-gutter-width) !default;
+//** For `$screen-sm-min` and up.
+$container-sm:                 $container-tablet !default;
+
+// Medium screen / desktop
+$container-desktop:            (940px + $grid-gutter-width) !default;
+//** For `$screen-md-min` and up.
+$container-md:                 $container-desktop !default;
+
+// Large screen / wide desktop
+$container-large-desktop:      (1140px + $grid-gutter-width) !default;
+//** For `$screen-lg-min` and up.
+$container-lg:                 $container-large-desktop !default;
+
+
+//== Navbar
+//
+//##
+
+// Basics of a navbar
+$navbar-height:                    50px !default;
+$navbar-margin-bottom:             $line-height-computed !default;
+$navbar-border-radius:             $border-radius-base !default;
+$navbar-padding-horizontal:        floor(($grid-gutter-width / 2)) !default;
+$navbar-padding-vertical:          (($navbar-height - $line-height-computed) / 2) !default;
+$navbar-collapse-max-height:       340px !default;
+
+$navbar-default-color:             #777 !default;
+$navbar-default-bg:                #eee !default;
+$navbar-default-border:            darken($navbar-default-bg, 6.5%) !default;
+
+// Navbar links
+$navbar-default-link-color:                #777 !default;
+$navbar-default-link-hover-color:          $brand-info !default;
+$navbar-default-link-hover-bg:             transparent !default;
+$navbar-default-link-active-color:         $navbar-default-link-hover-color !default;
+$navbar-default-link-active-bg:            transparent !default;
+$navbar-default-link-disabled-color:       #444 !default;
+$navbar-default-link-disabled-bg:          transparent !default;
+
+// Navbar brand label
+$navbar-default-brand-color:               $navbar-default-link-color !default;
+$navbar-default-brand-hover-color:         $navbar-default-link-hover-color !default;
+$navbar-default-brand-hover-bg:            transparent !default;
+
+// Navbar toggle
+$navbar-default-toggle-hover-bg:           darken($navbar-default-bg, 6.5%) !default;
+$navbar-default-toggle-icon-bar-bg:        #ccc !default;
+$navbar-default-toggle-border-color:       darken($navbar-default-bg, 6.5%) !default;
+
+
+//=== Inverted navbar
+// Reset inverted navbar basics
+$navbar-inverse-color:                      #ddd !default;
+$navbar-inverse-bg:                         $brand-primary !default;
+$navbar-inverse-border:                     darken($navbar-inverse-bg, 10%) !default;
+
+// Inverted navbar links
+$navbar-inverse-link-color:                 #ddd !default;
+$navbar-inverse-link-hover-color:           #fff !default;
+$navbar-inverse-link-hover-bg:              transparent !default;
+$navbar-inverse-link-active-color:          $navbar-inverse-link-hover-color !default;
+$navbar-inverse-link-active-bg:             transparent !default;
+$navbar-inverse-link-disabled-color:        #ccc !default;
+$navbar-inverse-link-disabled-bg:           transparent !default;
+
+// Inverted navbar brand label
+$navbar-inverse-brand-color:                $navbar-inverse-link-color !default;
+$navbar-inverse-brand-hover-color:          #fff !default;
+$navbar-inverse-brand-hover-bg:             transparent !default;
+
+// Inverted navbar toggle
+$navbar-inverse-toggle-hover-bg:            darken($navbar-inverse-bg, 10%) !default;
+$navbar-inverse-toggle-icon-bar-bg:         #fff !default;
+$navbar-inverse-toggle-border-color:        darken($navbar-inverse-bg, 10%) !default;
+
+
+//== Navs
+//
+//##
+
+//=== Shared nav styles
+$nav-link-padding:                          10px 15px !default;
+$nav-link-hover-bg:                         $gray-lighter !default;
+
+$nav-disabled-link-color:                   $gray-light !default;
+$nav-disabled-link-hover-color:             $gray-light !default;
+
+//== Tabs
+$nav-tabs-border-color:                     #ddd !default;
+
+$nav-tabs-link-hover-border-color:          $gray-lighter !default;
+
+$nav-tabs-active-link-hover-bg:             $body-bg !default;
+$nav-tabs-active-link-hover-color:          $gray !default;
+$nav-tabs-active-link-hover-border-color:   #ddd !default;
+
+$nav-tabs-justified-link-border-color:            #ddd !default;
+$nav-tabs-justified-active-link-border-color:     $body-bg !default;
+
+//== Pills
+$nav-pills-border-radius:                   $border-radius-base !default;
+$nav-pills-active-link-hover-bg:            $component-active-bg !default;
+$nav-pills-active-link-hover-color:         $component-active-color !default;
+
+
+//== Pagination
+//
+//##
+
+$pagination-color:                     $link-color !default;
+$pagination-bg:                        #fff !default;
+$pagination-border:                    #ddd !default;
+
+$pagination-hover-color:               $link-hover-color !default;
+$pagination-hover-bg:                  $gray-lighter !default;
+$pagination-hover-border:              #ddd !default;
+
+$pagination-active-color:              $gray-light !default;
+$pagination-active-bg:                 #f5f5f5 !default;
+$pagination-active-border:             #ddd !default;
+
+$pagination-disabled-color:            $gray-light !default;
+$pagination-disabled-bg:               #fff !default;
+$pagination-disabled-border:           #ddd !default;
+
+
+//== Pager
+//
+//##
+
+$pager-bg:                             $pagination-bg !default;
+$pager-border:                         $pagination-border !default;
+$pager-border-radius:                  15px !default;
+
+$pager-hover-bg:                       $pagination-hover-bg !default;
+
+$pager-active-bg:                      $pagination-active-bg !default;
+$pager-active-color:                   $pagination-active-color !default;
+
+$pager-disabled-color:                 $gray-light !default;
+
+
+//== Jumbotron
+//
+//##
+
+$jumbotron-padding:              30px !default;
+$jumbotron-color:                inherit !default;
+$jumbotron-bg:                   $gray-lighter !default;
+$jumbotron-heading-color:        inherit !default;
+$jumbotron-font-size:            ceil(($font-size-base * 1.5)) !default;
+$jumbotron-heading-font-size:    ceil(($font-size-base * 4.5)) !default;
+
+
+//== Form states and alerts
+//
+//## Define colors for form feedback states and, by default, alerts.
+
+$state-success-text:             #468847 !default;
+$state-success-bg:               #dff0d8 !default;
+$state-success-border:           darken(adjust-hue($state-success-bg, -10), 5%) !default;
+
+$state-info-text:                #3a87ad !default;
+$state-info-bg:                  #d9edf7 !default;
+$state-info-border:              darken(adjust-hue($state-info-bg, -10), 7%) !default;
+
+$state-warning-text:             #c09853 !default;
+$state-warning-bg:               #fcf8e3 !default;
+$state-warning-border:           darken(adjust-hue($state-warning-bg, -10), 3%) !default;
+
+$state-danger-text:              #b94a48 !default;
+$state-danger-bg:                #f2dede !default;
+$state-danger-border:            darken(adjust-hue($state-danger-bg, -10), 3%) !default;
+
+
+//== Tooltips
+//
+//##
+
+//** Tooltip max width
+$tooltip-max-width:           200px !default;
+//** Tooltip text color
+$tooltip-color:               #fff !default;
+//** Tooltip background color
+$tooltip-bg:                  #000 !default;
+$tooltip-opacity:             .9 !default;
+
+//** Tooltip arrow width
+$tooltip-arrow-width:         5px !default;
+//** Tooltip arrow color
+$tooltip-arrow-color:         $tooltip-bg !default;
+
+
+//== Popovers
+//
+//##
+
+//** Popover body background color
+$popover-bg:                          #fff !default;
+//** Popover maximum width
+$popover-max-width:                   276px !default;
+//** Popover border color
+$popover-border-color:                rgba(0,0,0,.2) !default;
+//** Popover fallback border color
+$popover-fallback-border-color:       #ccc !default;
+
+//** Popover title background color
+$popover-title-bg:                    darken($popover-bg, 3%) !default;
+
+//** Popover arrow width
+$popover-arrow-width:                 10px !default;
+//** Popover arrow color
+$popover-arrow-color:                 $popover-bg !default;
+
+//** Popover outer arrow width
+$popover-arrow-outer-width:           ($popover-arrow-width + 1) !default;
+//** Popover outer arrow color
+$popover-arrow-outer-color:           fadein($popover-border-color, 5%) !default;
+//** Popover outer arrow fallback color
+$popover-arrow-outer-fallback-color:  darken($popover-fallback-border-color, 20%) !default;
+
+
+//== Labels
+//
+//##
+
+//** Default label background color
+$label-default-bg:            $btn-default-bg !default;
+//** Primary label background color
+$label-primary-bg:            $brand-primary !default;
+//** Success label background color
+$label-success-bg:            $brand-success !default;
+//** Info label background color
+$label-info-bg:               $brand-info !default;
+//** Warning label background color
+$label-warning-bg:            $brand-warning !default;
+//** Danger label background color
+$label-danger-bg:             $brand-danger !default;
+
+//** Default label text color
+$label-color:                 #fff !default;
+//** Default text color of a linked label
+$label-link-hover-color:      #fff !default;
+
+
+//== Modals
+//
+//##
+
+//** Padding applied to the modal body
+$modal-inner-padding:         20px !default;
+
+//** Padding applied to the modal title
+$modal-title-padding:         15px !default;
+//** Modal title line-height
+$modal-title-line-height:     $line-height-base !default;
+
+//** Background color of modal content area
+$modal-content-bg:                             #fff !default;
+//** Modal content border color
+$modal-content-border-color:                   rgba(0,0,0,.2) !default;
+//** Modal content border color **for IE8**
+$modal-content-fallback-border-color:          #999 !default;
+
+//** Modal backdrop background color
+$modal-backdrop-bg:           #000 !default;
+//** Modal backdrop opacity
+$modal-backdrop-opacity:      .5 !default;
+//** Modal header border color
+$modal-header-border-color:   #e5e5e5 !default;
+//** Modal footer border color
+$modal-footer-border-color:   $modal-header-border-color !default;
+
+$modal-lg:                    900px !default;
+$modal-md:                    600px !default;
+$modal-sm:                    300px !default;
+
+
+//== Alerts
+//
+//## Define alert colors, border radius, and padding.
+
+$alert-padding:               15px !default;
+$alert-border-radius:         $border-radius-base !default;
+$alert-link-font-weight:      bold !default;
+
+$alert-success-bg:            $state-success-bg !default;
+$alert-success-text:          $state-success-text !default;
+$alert-success-border:        $state-success-border !default;
+
+$alert-info-bg:               $state-info-bg !default;
+$alert-info-text:             $state-info-text !default;
+$alert-info-border:           $state-info-border !default;
+
+$alert-warning-bg:            $state-warning-bg !default;
+$alert-warning-text:          $state-warning-text !default;
+$alert-warning-border:        $state-warning-border !default;
+
+$alert-danger-bg:             $state-danger-bg !default;
+$alert-danger-text:           $state-danger-text !default;
+$alert-danger-border:         $state-danger-border !default;
+
+
+//== Progress bars
+//
+//##
+
+//** Background color of the whole progress component
+$progress-bg:                 #f5f5f5 !default;
+//** Progress bar text color
+$progress-bar-color:          #fff !default;
+//** Variable for setting rounded corners on progress bar.
+$progress-border-radius:      $border-radius-base !default;
+
+//** Default progress bar color
+$progress-bar-bg:             $brand-primary !default;
+//** Success progress bar color
+$progress-bar-success-bg:     $brand-success !default;
+//** Warning progress bar color
+$progress-bar-warning-bg:     $brand-warning !default;
+//** Danger progress bar color
+$progress-bar-danger-bg:      $brand-danger !default;
+//** Info progress bar color
+$progress-bar-info-bg:        $brand-info !default;
+
+
+//== List group
+//
+//##
+
+//** Background color on `.list-group-item`
+$list-group-bg:                 #fff !default;
+//** `.list-group-item` border color
+$list-group-border:             #ddd !default;
+//** List group border radius
+$list-group-border-radius:      $border-radius-base !default;
+
+//** Background color of single list items on hover
+$list-group-hover-bg:           #f5f5f5 !default;
+//** Text color of active list items
+$list-group-active-color:       $component-active-color !default;
+//** Background color of active list items
+$list-group-active-bg:          $component-active-bg !default;
+//** Border color of active list elements
+$list-group-active-border:      $list-group-active-bg !default;
+//** Text color for content within active list items
+$list-group-active-text-color:  lighten($list-group-active-bg, 40%) !default;
+
+//** Text color of disabled list items
+$list-group-disabled-color:      $gray-light !default;
+//** Background color of disabled list items
+$list-group-disabled-bg:         $gray-lighter !default;
+//** Text color for content within disabled list items
+$list-group-disabled-text-color: $list-group-disabled-color !default;
+
+$list-group-link-color:         #555 !default;
+$list-group-link-hover-color:   $list-group-link-color !default;
+$list-group-link-heading-color: #333 !default;
+
+
+//== Panels
+//
+//##
+
+$panel-bg:                    #fff !default;
+$panel-body-padding:          15px !default;
+$panel-heading-padding:       10px 15px !default;
+$panel-footer-padding:        $panel-heading-padding !default;
+$panel-border-radius:         $border-radius-base !default;
+
+//** Border color for elements within panels
+$panel-inner-border:          #ddd !default;
+$panel-footer-bg:             #f5f5f5 !default;
+
+$panel-default-text:          $gray-dark !default;
+$panel-default-border:        #ddd !default;
+$panel-default-heading-bg:    #f5f5f5 !default;
+
+$panel-primary-text:          #fff !default;
+$panel-primary-border:        $brand-primary !default;
+$panel-primary-heading-bg:    $brand-primary !default;
+
+$panel-success-text:          $state-success-text !default;
+$panel-success-border:        $state-success-border !default;
+$panel-success-heading-bg:    $state-success-bg !default;
+
+$panel-info-text:             $state-info-text !default;
+$panel-info-border:           $state-info-border !default;
+$panel-info-heading-bg:       $state-info-bg !default;
+
+$panel-warning-text:          $state-warning-text !default;
+$panel-warning-border:        $state-warning-border !default;
+$panel-warning-heading-bg:    $state-warning-bg !default;
+
+$panel-danger-text:           $state-danger-text !default;
+$panel-danger-border:         $state-danger-border !default;
+$panel-danger-heading-bg:     $state-danger-bg !default;
+
+
+//== Thumbnails
+//
+//##
+
+//** Padding around the thumbnail image
+$thumbnail-padding:           4px !default;
+//** Thumbnail background color
+$thumbnail-bg:                $body-bg !default;
+//** Thumbnail border color
+$thumbnail-border:            #ddd !default;
+//** Thumbnail border radius
+$thumbnail-border-radius:     $border-radius-base !default;
+
+//** Custom text color for thumbnail captions
+$thumbnail-caption-color:     $text-color !default;
+//** Padding around the thumbnail caption
+$thumbnail-caption-padding:   9px !default;
+
+
+//== Wells
+//
+//##
+
+$well-bg:                     #f5f5f5 !default;
+$well-border:                 darken($well-bg, 7%) !default;
+
+
+//== Badges
+//
+//##
+
+$badge-color:                 #fff !default;
+//** Linked badge text color on hover
+$badge-link-hover-color:      #fff !default;
+$badge-bg:                    $link-color !default;
+
+//** Badge text color in active nav link
+$badge-active-color:          $link-color !default;
+//** Badge background color in active nav link
+$badge-active-bg:             #fff !default;
+
+$badge-font-weight:           bold !default;
+$badge-line-height:           1 !default;
+$badge-border-radius:         10px !default;
+
+
+//== Breadcrumbs
+//
+//##
+
+$breadcrumb-padding-vertical:   8px !default;
+$breadcrumb-padding-horizontal: 15px !default;
+//** Breadcrumb background color
+$breadcrumb-bg:                 #f5f5f5 !default;
+//** Breadcrumb text color
+$breadcrumb-color:              #ccc !default;
+//** Text color of current page in the breadcrumb
+$breadcrumb-active-color:       $gray-light !default;
+//** Textual separator for between breadcrumb elements
+$breadcrumb-separator:          "/" !default;
+
+
+//== Carousel
+//
+//##
+
+$carousel-text-shadow:                        0 1px 2px rgba(0,0,0,.6) !default;
+
+$carousel-control-color:                      #fff !default;
+$carousel-control-width:                      15% !default;
+$carousel-control-opacity:                    .5 !default;
+$carousel-control-font-size:                  20px !default;
+
+$carousel-indicator-active-bg:                #fff !default;
+$carousel-indicator-border-color:             #fff !default;
+
+$carousel-caption-color:                      #fff !default;
+
+
+//== Close
+//
+//##
+
+$close-font-weight:           bold !default;
+$close-color:                 #000 !default;
+$close-text-shadow:           0 1px 0 #fff !default;
+
+
+//== Code
+//
+//##
+
+$code-color:                  #c7254e !default;
+$code-bg:                     #f9f2f4 !default;
+
+$kbd-color:                   #fff !default;
+$kbd-bg:                      #333 !default;
+
+$pre-bg:                      #f5f5f5 !default;
+$pre-color:                   $gray-dark !default;
+$pre-border-color:            #ccc !default;
+$pre-scrollable-max-height:   340px !default;
+
+
+//== Type
+//
+//##
+
+//** Horizontal offset for forms and lists.
+$component-offset-horizontal: 180px !default;
+//** Text muted color
+$text-muted:                  $gray-light !default;
+//** Abbreviations and acronyms border color
+$abbr-border-color:           $gray-light !default;
+//** Headings small color
+$headings-small-color:        $gray-light !default;
+//** Blockquote small color
+$blockquote-small-color:      $gray-light !default;
+//** Blockquote font size
+$blockquote-font-size:        ($font-size-base * 1.25) !default;
+//** Blockquote border color
+$blockquote-border-color:     $gray-lighter !default;
+//** Page header border color
+$page-header-border-color:    $gray-lighter !default;
+//** Width of horizontal description list titles
+$dl-horizontal-offset:        $component-offset-horizontal !default;
+//** Point at which .dl-horizontal becomes horizontal
+$dl-horizontal-breakpoint:    $grid-float-breakpoint !default;
+//** Horizontal line color.
+$hr-border:                   $gray-lighter !default;
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/superhero/_bootswatch.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/superhero/_bootswatch.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/superhero/_bootswatch.scss	(revision 3762)
@@ -0,0 +1,360 @@
+// Superhero 3.4.1
+// Bootswatch
+// -----------------------------------------------------
+
+$web-font-path: "https://fonts.googleapis.com/css?family=Lato:300,400,700" !default;
+@import url($web-font-path);
+
+// Navbar =====================================================================
+
+.navbar {
+  @include box-shadow(none);
+  border: none;
+  font-size: $font-size-small;
+
+  &-default {
+
+    .badge {
+      background-color: #fff;
+      color: $navbar-default-bg;
+    }
+  }
+
+  &-inverse {
+
+    .badge {
+      background-color: #fff;
+      color: $navbar-inverse-bg;
+    }
+  }
+}
+
+// Buttons ====================================================================
+
+.btn {
+
+  &-default {
+    &:hover {
+      background-color: darken($btn-default-bg, 3%);
+    }
+  }
+
+  &-sm,
+  &-xs {
+    font-size: $font-size-small;
+  }
+}
+
+// Typography =================================================================
+
+.text-primary,
+.text-primary:hover {
+  color: $brand-primary;
+}
+
+.text-success,
+.text-success:hover {
+  color: $brand-success;
+}
+
+.text-danger,
+.text-danger:hover {
+  color: $brand-danger;
+}
+
+.text-warning,
+.text-warning:hover {
+  color: $brand-warning;
+}
+
+.text-info,
+.text-info:hover {
+  color: $brand-info;
+}
+
+.page-header {
+  border-bottom-color: $table-border-color;
+}
+
+.dropdown-menu {
+
+  border: none;
+  margin: 0;
+  @include box-shadow(none);
+
+  > li > a {
+    font-size: $font-size-small;
+  }
+}
+
+.btn-group.open .dropdown-toggle {
+  @include box-shadow(none);
+}
+
+.dropdown-header {
+  font-size: $font-size-small;
+}
+
+// Tables =====================================================================
+
+table,
+.table {
+  font-size: $font-size-small;
+
+  a:not(.btn) {
+    color: #fff;
+    text-decoration: underline;
+  }
+
+  .dropdown-menu a {
+    text-decoration: none;
+  }
+
+  .text-muted {
+    color: $text-muted;
+  }
+
+  > thead > tr > th,
+  > tbody > tr > th,
+  > tfoot > tr > th,
+  > thead > tr > td,
+  > tbody > tr > td,
+  > tfoot > tr > td {
+    border-color: transparent;
+  }
+ }
+
+// Forms ======================================================================
+
+input,
+textarea {
+  color: $input-color;
+}
+
+label,
+.radio label,
+.checkbox label,
+.help-block {
+  font-size: $font-size-small;
+}
+
+.input-addon,
+.input-group-addon {
+  color: $text-color;
+}
+
+.has-warning {
+  .help-block,
+  .control-label,
+  .radio,
+  .checkbox,
+  .radio-inline,
+  .checkbox-inline,
+  &.radio label,
+  &.checkbox label,
+  &.radio-inline label,
+  &.checkbox-inline label,
+  .form-control-feedback {
+    color: $brand-warning;
+  }
+
+  .form-control,
+  .form-control:focus {
+    border: 4px solid $brand-warning;
+  }
+
+  .input-group-addon {
+    border: none;
+  }
+}
+
+.has-error {
+  .help-block,
+  .control-label,
+  .radio,
+  .checkbox,
+  .radio-inline,
+  .checkbox-inline,
+  &.radio label,
+  &.checkbox label,
+  &.radio-inline label,
+  &.checkbox-inline label,
+  .form-control-feedback {
+    color: $brand-danger;
+  }
+
+  .form-control,
+  .form-control:focus {
+    border: 4px solid $brand-danger;
+  }
+
+  .input-group-addon {
+    border: none;
+  }
+}
+
+.has-success {
+  .help-block,
+  .control-label,
+  .radio,
+  .checkbox,
+  .radio-inline,
+  .checkbox-inline,
+  &.radio label,
+  &.checkbox label,
+  &.radio-inline label,
+  &.checkbox-inline label,
+  .form-control-feedback {
+    color: $brand-success;
+  }
+
+  .form-control,
+  .form-control:focus {
+    border: 4px solid $brand-success;
+  }
+
+  .input-group-addon {
+    border: none;
+  }
+}
+
+.form-control:focus {
+  @include box-shadow(none);
+}
+
+.has-warning,
+.has-error,
+.has-success {
+  .form-control:focus {
+    @include box-shadow(none);
+  }
+}
+
+// Navs =======================================================================
+
+.nav {
+  .open > a,
+  .open > a:hover,
+  .open > a:focus {
+    border-color: transparent;
+  }
+}
+
+.nav-tabs {
+  > li > a {
+    color: $text-color;
+  }
+}
+
+.nav-pills {
+  > li > a {
+    color: $text-color;
+  }
+}
+
+.pager {
+  a {
+    color: $text-color;
+  }
+}
+
+// Indicators =================================================================
+
+.alert {
+  color: #fff;
+
+  a,
+  .alert-link {
+    color: #fff;
+  }
+}
+
+.close {
+  opacity: 0.4;
+
+  &:hover,
+  &:focus {
+    opacity: 1;
+  }
+}
+
+// Progress bars ==============================================================
+
+// Containers =================================================================
+
+.well {
+  @include box-shadow(none);
+}
+
+a.list-group-item {
+
+  &.active,
+  &.active:hover,
+  &.active:focus {
+    border: none;
+  }
+
+  &-success {
+    &.active {
+      background-color: $state-success-bg;
+    }
+
+    &.active:hover,
+    &.active:focus {
+      background-color: darken($state-success-bg, 5%);
+    }
+  }
+
+  &-warning {
+    &.active {
+      background-color: $state-warning-bg;
+    }
+    
+    &.active:hover,
+    &.active:focus {
+      background-color: darken($state-warning-bg, 5%);
+    }
+  }
+
+  &-danger {
+    &.active {
+      background-color: $state-danger-bg;
+    }
+    
+    &.active:hover,
+    &.active:focus {
+      background-color: darken($state-danger-bg, 5%);
+    }
+  }
+}
+
+.panel {
+  border: none;
+
+  &-default > .panel-heading {
+    background-color: $table-bg-hover;
+    color: $text-color;
+  }
+}
+
+.thumbnail {
+  background-color: $well-bg;
+  border: none;
+}
+
+.modal {
+  padding: 0;
+
+  &-header,
+  &-footer {
+    background-color: $table-bg-hover;
+    border: none;
+    border-radius: 0;
+  }
+}
+
+.popover {
+  &-title {
+    border: none;
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/superhero/font.css
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/superhero/font.css	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/superhero/font.css	(revision 3762)
@@ -0,0 +1,18 @@
+@font-face {
+  font-family: 'Lato';
+  font-style: normal;
+  font-weight: 300;
+  src: url(fonts/S6u9w4BMUTPHh7USSwiPHw.woff) format('woff');
+}
+@font-face {
+  font-family: 'Lato';
+  font-style: normal;
+  font-weight: 400;
+  src: url(fonts/S6uyw4BMUTPHjx4wWA.woff) format('woff');
+}
+@font-face {
+  font-family: 'Lato';
+  font-style: normal;
+  font-weight: 700;
+  src: url(fonts/S6u9w4BMUTPHh6UVSwiPHw.woff) format('woff');
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/superhero/_variables.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/superhero/_variables.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/superhero/_variables.scss	(revision 3762)
@@ -0,0 +1,870 @@
+$bootstrap-sass-asset-helper: false !default;
+// Superhero 3.4.1
+// Variables
+// --------------------------------------------------
+
+
+//== Colors
+//
+//## Gray and brand colors for use across Bootstrap.
+
+$gray-base:              #000 !default;
+$gray-darker:            lighten($gray-base, 13.5%) !default; // #222
+$gray-dark:              lighten($gray-base, 20%) !default;   // #333
+$gray:                   lighten($gray-base, 33.5%) !default; // #555
+$gray-light:             #4E5D6C !default;   // #999
+$gray-lighter:           #EBEBEB !default; // #eee
+
+$brand-primary:         #DF691A !default;
+$brand-success:         #5cb85c !default;
+$brand-info:            #5bc0de !default;
+$brand-warning:         #f0ad4e !default;
+$brand-danger:          #d9534f !default;
+
+
+//== Scaffolding
+//
+//## Settings for some of the most global styles.
+
+//** Background color for `<body>`.
+$body-bg:               #2B3E50 !default;
+//** Global text color on `<body>`.
+$text-color:            $gray-lighter !default;
+
+//** Global textual link color.
+$link-color:            $brand-primary !default;
+//** Link hover color set via `darken()` function.
+$link-hover-color:      $link-color !default;
+//** Link hover decoration.
+$link-hover-decoration: underline !default;
+
+
+//== Typography
+//
+//## Font, line-height, and color for body text, headings, and more.
+
+$font-family-sans-serif:  "Lato", "Helvetica Neue", Helvetica, Arial, sans-serif !default;
+$font-family-serif:       Georgia, "Times New Roman", Times, serif !default;
+//** Default monospace fonts for `<code>`, `<kbd>`, and `<pre>`.
+$font-family-monospace:   Menlo, Monaco, Consolas, "Courier New", monospace !default;
+$font-family-base:        $font-family-sans-serif !default;
+
+$font-size-base:          15px !default;
+$font-size-large:         ceil(($font-size-base * 1.25)) !default; // ~18px
+$font-size-small:         12px !default;
+
+$font-size-h1:            floor(($font-size-base * 2.6)) !default; // ~36px
+$font-size-h2:            floor(($font-size-base * 2.15)) !default; // ~30px
+$font-size-h3:            ceil(($font-size-base * 1.7)) !default; // ~24px
+$font-size-h4:            ceil(($font-size-base * 1.25)) !default; // ~18px
+$font-size-h5:            $font-size-base !default;
+$font-size-h6:            ceil(($font-size-base * 0.85)) !default; // ~12px
+
+//** Unit-less `line-height` for use in components like buttons.
+$line-height-base:        1.428571429 !default; // 20/14
+//** Computed "line-height" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.
+$line-height-computed:    floor(($font-size-base * $line-height-base)) !default; // ~20px
+
+//** By default, this inherits from the `<body>`.
+$headings-font-family:    inherit !default;
+$headings-font-weight:    400 !default;
+$headings-line-height:    1.1 !default;
+$headings-color:          inherit !default;
+
+
+//== Iconography
+//
+//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.
+
+//** Load fonts from this directory.
+$icon-font-path: if($bootstrap-sass-asset-helper, "bootstrap/", "../fonts/bootstrap/") !default;
+//** File name for all font files.
+$icon-font-name:          "glyphicons-halflings-regular" !default;
+//** Element ID within SVG icon file.
+$icon-font-svg-id:        "glyphicons_halflingsregular" !default;
+
+
+//== Components
+//
+//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).
+
+$padding-base-vertical:     8px !default;
+$padding-base-horizontal:   16px !default;
+
+$padding-large-vertical:    12px !default;
+$padding-large-horizontal:  24px !default;
+
+$padding-small-vertical:    5px !default;
+$padding-small-horizontal:  10px !default;
+
+$padding-xs-vertical:       1px !default;
+$padding-xs-horizontal:     5px !default;
+
+$line-height-large:         1.3333333 !default; // extra decimals for Win 8.1 Chrome
+$line-height-small:         1.5 !default;
+
+$border-radius-base:        0 !default;
+$border-radius-large:       0 !default;
+$border-radius-small:       0 !default;
+
+//** Global color for active items (e.g., navs or dropdowns).
+$component-active-color:    #fff !default;
+//** Global background color for active items (e.g., navs or dropdowns).
+$component-active-bg:       $brand-primary !default;
+
+//** Width of the `border` for generating carets that indicate dropdowns.
+$caret-width-base:          4px !default;
+//** Carets increase slightly in size for larger components.
+$caret-width-large:         5px !default;
+
+
+//== Tables
+//
+//## Customizes the `.table` component with basic values, each used across all table variations.
+
+//** Padding for `<th>`s and `<td>`s.
+$table-cell-padding:            6px !default;
+//** Padding for cells in `.table-condensed`.
+$table-condensed-cell-padding:  3px !default;
+
+//** Default background color used for all tables.
+$table-bg:                      transparent !default;
+//** Background color used for `.table-striped`.
+$table-bg-accent:               $gray-light !default;
+//** Background color used for `.table-hover`.
+$table-bg-hover:                darken($gray-light, 3%) !default;
+$table-bg-active:               $table-bg-hover !default;
+
+//** Border color for table and cell borders.
+$table-border-color:            $gray-light !default;  
+
+
+//== Buttons
+//
+//## For each of Bootstrap's buttons, define text, background and border color.
+
+$btn-font-weight:                normal !default;
+
+$btn-default-color:              #fff !default;
+$btn-default-bg:                 $gray-light !default;
+$btn-default-border:             transparent !default;
+
+$btn-primary-color:              #fff !default;
+$btn-primary-bg:                 $brand-primary !default;
+$btn-primary-border:             transparent !default;
+
+$btn-success-color:              #fff !default;
+$btn-success-bg:                 $brand-success !default;
+$btn-success-border:             transparent !default;
+
+$btn-info-color:                 #fff !default;
+$btn-info-bg:                    $brand-info !default;
+$btn-info-border:                transparent !default;
+
+$btn-warning-color:              #fff !default;
+$btn-warning-bg:                 $brand-warning !default;
+$btn-warning-border:             transparent !default;
+
+$btn-danger-color:               #fff !default;
+$btn-danger-bg:                  $brand-danger !default;
+$btn-danger-border:              transparent !default;
+
+$btn-link-disabled-color:        $gray-light !default;
+
+// Allows for customizing button radius independently from global border radius
+$btn-border-radius-base:         $border-radius-base !default;
+$btn-border-radius-large:        $border-radius-large !default;
+$btn-border-radius-small:        $border-radius-small !default;
+
+
+//== Forms
+//
+//##
+
+//** `<input>` background color
+$input-bg:                       #fff !default;
+//** `<input disabled>` background color
+$input-bg-disabled:              $gray-lighter !default;
+
+//** Text color for `<input>`s
+$input-color:                    $body-bg !default;
+//** `<input>` border color
+$input-border:                   transparent !default;
+
+// TODO: Rename `$input-border-radius` to `$input-border-radius-base` in v4
+//** Default `.form-control` border radius
+// This has no effect on `<select>`s in some browsers, due to the limited stylability of `<select>`s in CSS.
+$input-border-radius:            $border-radius-base !default;
+//** Large `.form-control` border radius
+$input-border-radius-large:      $border-radius-large !default;
+//** Small `.form-control` border radius
+$input-border-radius-small:      $border-radius-small !default;
+
+//** Border color for inputs on focus
+$input-border-focus:             transparent !default;
+
+//** Placeholder text color
+$input-color-placeholder:        #ccc !default;
+
+//** Default `.form-control` height
+$input-height-base:              ($line-height-computed + ($padding-base-vertical * 2) + 2) !default;
+//** Large `.form-control` height
+$input-height-large:             (ceil($font-size-large * $line-height-large) + ($padding-large-vertical * 2) + 2) !default;
+//** Small `.form-control` height
+$input-height-small:             (floor($font-size-small * $line-height-small) + ($padding-small-vertical * 2) + 2) !default;
+
+//** `.form-group` margin
+$form-group-margin-bottom:       15px !default;
+
+$legend-color:                   $text-color !default;
+$legend-border-color:            $gray-light !default;
+
+//** Background color for textual input addons
+$input-group-addon-bg:           $btn-default-bg !default;
+//** Border color for textual input addons
+$input-group-addon-border-color: transparent !default;
+
+//** Disabled cursor for form controls and buttons.
+$cursor-disabled:                not-allowed !default;
+
+
+//== Dropdowns
+//
+//## Dropdown menu container and contents.
+
+//** Background for the dropdown menu.
+$dropdown-bg:                    $gray-light !default;
+//** Dropdown menu `border-color`.
+$dropdown-border:                transparent !default;
+//** Dropdown menu `border-color` **for IE8**.
+$dropdown-fallback-border:       transparent !default;
+//** Divider color for between dropdown items.
+$dropdown-divider-bg:            $body-bg !default;
+
+//** Dropdown link text color.
+$dropdown-link-color:            $text-color !default;
+//** Hover color for dropdown links.
+$dropdown-link-hover-color:      $text-color !default;
+//** Hover background for dropdown links.
+$dropdown-link-hover-bg:         darken($gray-light, 3%) !default;
+
+//** Active dropdown menu item text color.
+$dropdown-link-active-color:     $component-active-color !default;
+//** Active dropdown menu item background color.
+$dropdown-link-active-bg:        $component-active-bg !default;
+
+//** Disabled dropdown menu item background color.
+$dropdown-link-disabled-color:   $body-bg !default;
+
+//** Text color for headers within dropdown menus.
+$dropdown-header-color:          $body-bg !default;
+
+//** Deprecated `$dropdown-caret-color` as of v3.1.0
+$dropdown-caret-color:           #000 !default;
+
+
+//-- Z-index master list
+//
+// Warning: Avoid customizing these values. They're used for a bird's eye view
+// of components dependent on the z-axis and are designed to all work together.
+//
+// Note: These variables are not generated into the Customizer.
+
+$zindex-navbar:            1000 !default;
+$zindex-dropdown:          1000 !default;
+$zindex-popover:           1060 !default;
+$zindex-tooltip:           1070 !default;
+$zindex-navbar-fixed:      1030 !default;
+$zindex-modal-background:  1040 !default;
+$zindex-modal:             1050 !default;
+
+
+//== Media queries breakpoints
+//
+//## Define the breakpoints at which your layout will change, adapting to different screen sizes.
+
+// Extra small screen / phone
+//** Deprecated `$screen-xs` as of v3.0.1
+$screen-xs:                  480px !default;
+//** Deprecated `$screen-xs-min` as of v3.2.0
+$screen-xs-min:              $screen-xs !default;
+//** Deprecated `$screen-phone` as of v3.0.1
+$screen-phone:               $screen-xs-min !default;
+
+// Small screen / tablet
+//** Deprecated `$screen-sm` as of v3.0.1
+$screen-sm:                  768px !default;
+$screen-sm-min:              $screen-sm !default;
+//** Deprecated `$screen-tablet` as of v3.0.1
+$screen-tablet:              $screen-sm-min !default;
+
+// Medium screen / desktop
+//** Deprecated `$screen-md` as of v3.0.1
+$screen-md:                  992px !default;
+$screen-md-min:              $screen-md !default;
+//** Deprecated `$screen-desktop` as of v3.0.1
+$screen-desktop:             $screen-md-min !default;
+
+// Large screen / wide desktop
+//** Deprecated `$screen-lg` as of v3.0.1
+$screen-lg:                  1200px !default;
+$screen-lg-min:              $screen-lg !default;
+//** Deprecated `$screen-lg-desktop` as of v3.0.1
+$screen-lg-desktop:          $screen-lg-min !default;
+
+// So media queries don't overlap when required, provide a maximum
+$screen-xs-max:              ($screen-sm-min - 1) !default;
+$screen-sm-max:              ($screen-md-min - 1) !default;
+$screen-md-max:              ($screen-lg-min - 1) !default;
+
+
+//== Grid system
+//
+//## Define your custom responsive grid.
+
+//** Number of columns in the grid.
+$grid-columns:              12 !default;
+//** Padding between columns. Gets divided in half for the left and right.
+$grid-gutter-width:         30px !default;
+// Navbar collapse
+//** Point at which the navbar becomes uncollapsed.
+$grid-float-breakpoint:     $screen-sm-min !default;
+//** Point at which the navbar begins collapsing.
+$grid-float-breakpoint-max: ($grid-float-breakpoint - 1) !default;
+
+
+//== Container sizes
+//
+//## Define the maximum width of `.container` for different screen sizes.
+
+// Small screen / tablet
+$container-tablet:             (720px + $grid-gutter-width) !default;
+//** For `$screen-sm-min` and up.
+$container-sm:                 $container-tablet !default;
+
+// Medium screen / desktop
+$container-desktop:            (940px + $grid-gutter-width) !default;
+//** For `$screen-md-min` and up.
+$container-md:                 $container-desktop !default;
+
+// Large screen / wide desktop
+$container-large-desktop:      (1140px + $grid-gutter-width) !default;
+//** For `$screen-lg-min` and up.
+$container-lg:                 $container-large-desktop !default;
+
+
+//== Navbar
+//
+//##
+
+// Basics of a navbar
+$navbar-height:                    40px !default;
+$navbar-margin-bottom:             $line-height-computed !default;
+$navbar-border-radius:             $border-radius-base !default;
+$navbar-padding-horizontal:        floor(($grid-gutter-width / 2)) !default;
+$navbar-padding-vertical:          (($navbar-height - $line-height-computed) / 2) !default;
+$navbar-collapse-max-height:       340px !default;
+
+$navbar-default-color:             $text-color !default;
+$navbar-default-bg:                $gray-light !default;
+$navbar-default-border:            transparent !default;
+
+// Navbar links
+$navbar-default-link-color:                $text-color !default;
+$navbar-default-link-hover-color:          $navbar-default-link-color !default;
+$navbar-default-link-hover-bg:             $dropdown-link-hover-bg !default;
+$navbar-default-link-active-color:         $navbar-default-link-color !default;
+$navbar-default-link-active-bg:            $dropdown-link-hover-bg !default;
+$navbar-default-link-disabled-color:       #ccc !default;
+$navbar-default-link-disabled-bg:          transparent !default;
+
+// Navbar brand label
+$navbar-default-brand-color:               $navbar-default-link-color !default;
+$navbar-default-brand-hover-color:         $navbar-default-link-color !default;
+$navbar-default-brand-hover-bg:            transparent !default;
+
+// Navbar toggle
+$navbar-default-toggle-hover-bg:           $navbar-default-link-hover-bg !default;
+$navbar-default-toggle-icon-bar-bg:        $text-color !default;
+$navbar-default-toggle-border-color:       transparent !default;
+
+
+//=== Inverted navbar
+// Reset inverted navbar basics
+$navbar-inverse-color:                      $text-color !default;
+$navbar-inverse-bg:                         $brand-primary !default;
+$navbar-inverse-border:                     transparent !default;
+
+// Inverted navbar links
+$navbar-inverse-link-color:                 $text-color !default;
+$navbar-inverse-link-hover-color:           $navbar-inverse-link-color !default;
+$navbar-inverse-link-hover-bg:              darken($navbar-inverse-bg, 5%) !default;
+$navbar-inverse-link-active-color:          $navbar-inverse-link-color !default;
+$navbar-inverse-link-active-bg:             darken($navbar-inverse-bg, 5%) !default;
+$navbar-inverse-link-disabled-color:        #444 !default;
+$navbar-inverse-link-disabled-bg:           transparent !default;
+
+// Inverted navbar brand label
+$navbar-inverse-brand-color:                $navbar-inverse-link-color !default;
+$navbar-inverse-brand-hover-color:          $navbar-inverse-link-color !default;
+$navbar-inverse-brand-hover-bg:             transparent !default;
+
+// Inverted navbar toggle
+$navbar-inverse-toggle-hover-bg:            $navbar-inverse-link-hover-bg !default;
+$navbar-inverse-toggle-icon-bar-bg:         $text-color !default;
+$navbar-inverse-toggle-border-color:        transparent !default;
+
+
+//== Navs
+//
+//##
+
+//=== Shared nav styles
+$nav-link-padding:                          10px 15px !default;
+$nav-link-hover-bg:                         $gray-light !default;
+
+$nav-disabled-link-color:                   $gray-light !default;
+$nav-disabled-link-hover-color:             $gray-light !default;
+
+//== Tabs
+$nav-tabs-border-color:                     transparent !default;
+
+$nav-tabs-link-hover-border-color:          $gray-light !default;
+
+$nav-tabs-active-link-hover-bg:             $body-bg !default;
+$nav-tabs-active-link-hover-color:          $text-color !default;
+$nav-tabs-active-link-hover-border-color:   $gray-light !default;
+
+$nav-tabs-justified-link-border-color:            $gray-light !default;
+$nav-tabs-justified-active-link-border-color:     $gray-light !default;
+
+//== Pills
+$nav-pills-border-radius:                   $border-radius-base !default;
+$nav-pills-active-link-hover-bg:            $component-active-bg !default;
+$nav-pills-active-link-hover-color:         $component-active-color !default;
+
+
+//== Pagination
+//
+//##
+
+$pagination-color:                     $text-color !default;
+$pagination-bg:                        $gray-light !default;
+$pagination-border:                    transparent !default;
+
+$pagination-hover-color:               $text-color !default;
+$pagination-hover-bg:                  $table-bg-hover !default;
+$pagination-hover-border:              transparent !default;
+
+$pagination-active-color:              $text-color !default;
+$pagination-active-bg:                 $brand-primary !default;
+$pagination-active-border:             transparent !default;
+
+$pagination-disabled-color:            darken($table-bg-hover, 10%) !default;
+$pagination-disabled-bg:               $gray-light !default;
+$pagination-disabled-border:           transparent !default;
+
+
+//== Pager
+//
+//##
+
+$pager-bg:                             $pagination-bg !default;
+$pager-border:                         $pagination-border !default;
+$pager-border-radius:                  15px !default;
+
+$pager-hover-bg:                       $pagination-hover-bg !default;
+
+$pager-active-bg:                      $pagination-active-bg !default;
+$pager-active-color:                   $pagination-active-color !default;
+
+$pager-disabled-color:                 $pagination-disabled-color !default;
+
+
+//== Jumbotron
+//
+//##
+
+$jumbotron-padding:              30px !default;
+$jumbotron-color:                inherit !default;
+$jumbotron-bg:                   $gray-light !default;
+$jumbotron-heading-color:        inherit !default;
+$jumbotron-font-size:            ceil(($font-size-base * 1.5)) !default;
+$jumbotron-heading-font-size:    ceil(($font-size-base * 4.5)) !default;
+
+
+//== Form states and alerts
+//
+//## Define colors for form feedback states and, by default, alerts.
+
+$state-success-text:             $text-color !default;
+$state-success-bg:               $brand-success !default;
+$state-success-border:           transparent !default;
+
+$state-info-text:                $text-color !default;
+$state-info-bg:                  $brand-info !default;
+$state-info-border:              transparent !default;
+
+$state-warning-text:             $text-color !default;
+$state-warning-bg:               $brand-warning !default;
+$state-warning-border:           transparent !default;
+
+$state-danger-text:              $text-color !default;
+$state-danger-bg:                $brand-danger !default;
+$state-danger-border:            transparent !default;
+
+
+//== Tooltips
+//
+//##
+
+//** Tooltip max width
+$tooltip-max-width:           200px !default;
+//** Tooltip text color
+$tooltip-color:               #fff !default;
+//** Tooltip background color
+$tooltip-bg:                  #000 !default;
+$tooltip-opacity:             .9 !default;
+
+//** Tooltip arrow width
+$tooltip-arrow-width:         5px !default;
+//** Tooltip arrow color
+$tooltip-arrow-color:         $tooltip-bg !default;
+
+
+//== Popovers
+//
+//##
+
+//** Popover body background color
+$popover-bg:                          $gray-light !default;
+//** Popover maximum width
+$popover-max-width:                   276px !default;
+//** Popover border color
+$popover-border-color:                transparent !default;
+//** Popover fallback border color
+$popover-fallback-border-color:       transparent !default;
+
+//** Popover title background color
+$popover-title-bg:                    $table-bg-hover !default;
+
+//** Popover arrow width
+$popover-arrow-width:                 10px !default;
+//** Popover arrow color
+$popover-arrow-color:                 $popover-bg !default;
+
+//** Popover outer arrow width
+$popover-arrow-outer-width:           ($popover-arrow-width + 1) !default;
+//** Popover outer arrow color
+$popover-arrow-outer-color:           transparent !default;
+//** Popover outer arrow fallback color
+$popover-arrow-outer-fallback-color:  transparent !default;
+
+
+//== Labels
+//
+//##
+
+//** Default label background color
+$label-default-bg:            $gray-light !default;
+//** Primary label background color
+$label-primary-bg:            $brand-primary !default;
+//** Success label background color
+$label-success-bg:            $brand-success !default;
+//** Info label background color
+$label-info-bg:               $brand-info !default;
+//** Warning label background color
+$label-warning-bg:            $brand-warning !default;
+//** Danger label background color
+$label-danger-bg:             $brand-danger !default;
+
+//** Default label text color
+$label-color:                 #fff !default;
+//** Default text color of a linked label
+$label-link-hover-color:      #fff !default;
+
+
+//== Modals
+//
+//##
+
+//** Padding applied to the modal body
+$modal-inner-padding:         20px !default;
+
+//** Padding applied to the modal title
+$modal-title-padding:         15px !default;
+//** Modal title line-height
+$modal-title-line-height:     $line-height-base !default;
+
+//** Background color of modal content area
+$modal-content-bg:                             $gray-light !default;
+//** Modal content border color
+$modal-content-border-color:                   transparent !default;
+//** Modal content border color **for IE8**
+$modal-content-fallback-border-color:          transparent !default;
+
+//** Modal backdrop background color
+$modal-backdrop-bg:           #000 !default;
+//** Modal backdrop opacity
+$modal-backdrop-opacity:      .5 !default;
+//** Modal header border color
+$modal-header-border-color:   $body-bg !default;
+//** Modal footer border color
+$modal-footer-border-color:   $modal-header-border-color !default;
+
+$modal-lg:                    900px !default;
+$modal-md:                    600px !default;
+$modal-sm:                    300px !default;
+
+
+//== Alerts
+//
+//## Define alert colors, border radius, and padding.
+
+$alert-padding:               15px !default;
+$alert-border-radius:         $border-radius-base !default;
+$alert-link-font-weight:      bold !default;
+
+$alert-success-bg:            $state-success-bg !default;
+$alert-success-text:          $state-success-text !default;
+$alert-success-border:        $state-success-border !default;
+
+$alert-info-bg:               $state-info-bg !default;
+$alert-info-text:             $state-info-text !default;
+$alert-info-border:           $state-info-border !default;
+
+$alert-warning-bg:            $state-warning-bg !default;
+$alert-warning-text:          $state-warning-text !default;
+$alert-warning-border:        $state-warning-border !default;
+
+$alert-danger-bg:             $state-danger-bg !default;
+$alert-danger-text:           $state-danger-text !default;
+$alert-danger-border:         $state-danger-border !default;
+
+
+//== Progress bars
+//
+//##
+
+//** Background color of the whole progress component
+$progress-bg:                 $gray-light !default;
+//** Progress bar text color
+$progress-bar-color:          #fff !default;
+//** Variable for setting rounded corners on progress bar.
+$progress-border-radius:      $border-radius-base !default;
+
+//** Default progress bar color
+$progress-bar-bg:             $brand-primary !default;
+//** Success progress bar color
+$progress-bar-success-bg:     $brand-success !default;
+//** Warning progress bar color
+$progress-bar-warning-bg:     $brand-warning !default;
+//** Danger progress bar color
+$progress-bar-danger-bg:      $brand-danger !default;
+//** Info progress bar color
+$progress-bar-info-bg:        $brand-info !default;
+
+
+//== List group
+//
+//##
+
+//** Background color on `.list-group-item`
+$list-group-bg:                 $gray-light !default;
+//** `.list-group-item` border color
+$list-group-border:             transparent !default;
+//** List group border radius
+$list-group-border-radius:      $border-radius-base !default;
+
+//** Background color of single list items on hover
+$list-group-hover-bg:           $table-bg-hover !default;
+//** Text color of active list items
+$list-group-active-color:       $component-active-color !default;
+//** Background color of active list items
+$list-group-active-bg:          $component-active-bg !default;
+//** Border color of active list elements
+$list-group-active-border:      $list-group-active-bg !default;
+//** Text color for content within active list items
+$list-group-active-text-color:  lighten($list-group-active-bg, 40%) !default;
+
+//** Text color of disabled list items
+$list-group-disabled-color:      $gray-light !default;
+//** Background color of disabled list items
+$list-group-disabled-bg:         $gray-lighter !default;
+//** Text color for content within disabled list items
+$list-group-disabled-text-color: $list-group-disabled-color !default;
+
+$list-group-link-color:         $text-color !default;
+$list-group-link-hover-color:   $list-group-link-color !default;
+$list-group-link-heading-color: $text-color !default;
+
+
+//== Panels
+//
+//##
+
+$panel-bg:                    $gray-light !default;
+$panel-body-padding:          15px !default;
+$panel-heading-padding:       10px 15px !default;
+$panel-footer-padding:        $panel-heading-padding !default;
+$panel-border-radius:         $border-radius-base !default;
+
+//** Border color for elements within panels
+$panel-inner-border:          transparent !default;
+$panel-footer-bg:             $table-bg-hover !default;
+
+$panel-default-text:          $gray-dark !default;
+$panel-default-border:        transparent !default;
+$panel-default-heading-bg:    #f5f5f5 !default;
+
+$panel-primary-text:          #fff !default;
+$panel-primary-border:        transparent !default;
+$panel-primary-heading-bg:    $brand-primary !default;
+
+$panel-success-text:          $state-success-text !default;
+$panel-success-border:        transparent !default;
+$panel-success-heading-bg:    $state-success-bg !default;
+
+$panel-info-text:             $state-info-text !default;
+$panel-info-border:           transparent !default;
+$panel-info-heading-bg:       $state-info-bg !default;
+
+$panel-warning-text:          $state-warning-text !default;
+$panel-warning-border:        transparent !default;
+$panel-warning-heading-bg:    $state-warning-bg !default;
+
+$panel-danger-text:           $state-danger-text !default;
+$panel-danger-border:         transparent !default;
+$panel-danger-heading-bg:     $state-danger-bg !default;
+
+
+//== Thumbnails
+//
+//##
+
+//** Padding around the thumbnail image
+$thumbnail-padding:           4px !default;
+//** Thumbnail background color
+$thumbnail-bg:                $body-bg !default;
+//** Thumbnail border color
+$thumbnail-border:            #ddd !default;
+//** Thumbnail border radius
+$thumbnail-border-radius:     $border-radius-base !default;
+
+//** Custom text color for thumbnail captions
+$thumbnail-caption-color:     $text-color !default;
+//** Padding around the thumbnail caption
+$thumbnail-caption-padding:   9px !default;
+
+
+//== Wells
+//
+//## 
+
+$well-bg:                     $gray-light !default;
+$well-border:                 transparent !default;
+
+
+//== Badges
+//
+//##
+
+$badge-color:                 $text-color !default;
+//** Linked badge text color on hover
+$badge-link-hover-color:      #fff !default;
+$badge-bg:                    $gray-light !default;
+
+//** Badge text color in active nav link
+$badge-active-color:          $link-color !default;
+//** Badge background color in active nav link
+$badge-active-bg:             #fff !default;
+
+$badge-font-weight:           300 !default;
+$badge-line-height:           1 !default;
+$badge-border-radius:         10px !default;
+
+
+//== Breadcrumbs
+//
+//##
+
+$breadcrumb-padding-vertical:   8px !default;
+$breadcrumb-padding-horizontal: 15px !default;
+//** Breadcrumb background color
+$breadcrumb-bg:                 $gray-light !default;
+//** Breadcrumb text color
+$breadcrumb-color:              $text-color !default;
+//** Text color of current page in the breadcrumb
+$breadcrumb-active-color:       $text-color !default;
+//** Textual separator for between breadcrumb elements
+$breadcrumb-separator:          "/" !default;
+
+
+//== Carousel
+//
+//##
+
+$carousel-text-shadow:                        0 1px 2px rgba(0,0,0,.6) !default;
+
+$carousel-control-color:                      #fff !default;
+$carousel-control-width:                      15% !default;
+$carousel-control-opacity:                    .5 !default;
+$carousel-control-font-size:                  20px !default;
+
+$carousel-indicator-active-bg:                #fff !default;
+$carousel-indicator-border-color:             #fff !default;
+
+$carousel-caption-color:                      #fff !default;
+
+
+//== Close
+//
+//##
+
+$close-font-weight:           bold !default;
+$close-color:                 $text-color !default;
+$close-text-shadow:           none !default;
+
+
+//== Code
+//
+//##
+
+$code-color:                  #c7254e !default;
+$code-bg:                     #f9f2f4 !default;
+
+$kbd-color:                   #fff !default;
+$kbd-bg:                      #333 !default;
+
+$pre-bg:                      #f5f5f5 !default;
+$pre-color:                   $gray-dark !default;
+$pre-border-color:            #ccc !default;
+$pre-scrollable-max-height:   340px !default;
+
+
+//== Type
+//
+//##
+
+//** Horizontal offset for forms and lists.
+$component-offset-horizontal: 180px !default;
+//** Text muted color
+$text-muted:                  $gray-light !default;
+//** Abbreviations and acronyms border color
+$abbr-border-color:           $gray-light !default;
+//** Headings small color
+$headings-small-color:        $text-color !default;
+//** Blockquote small color
+$blockquote-small-color:      $text-color !default;
+//** Blockquote font size
+$blockquote-font-size:        ($font-size-base * 1.25) !default;
+//** Blockquote border color
+$blockquote-border-color:     $gray-light !default;
+//** Page header border color
+$page-header-border-color:    $gray-lighter !default;
+//** Width of horizontal description list titles
+$dl-horizontal-offset:        $component-offset-horizontal !default;
+//** Point at which .dl-horizontal becomes horizontal
+$dl-horizontal-breakpoint:    $grid-float-breakpoint !default;
+//** Horizontal line color.
+$hr-border:                   lighten($gray-light, 5%) !default;
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/cosmo/_bootswatch.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/cosmo/_bootswatch.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/cosmo/_bootswatch.scss	(revision 3762)
@@ -0,0 +1,262 @@
+// Cosmo 3.4.1
+// Bootswatch
+// -----------------------------------------------------
+
+$web-font-path: "https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,700" !default;
+@import url($web-font-path);
+
+// Navbar =====================================================================
+
+.navbar {
+
+  &-inverse {
+
+    .badge {
+      background-color: #fff;
+      color: $brand-primary;
+    }
+  }
+}
+
+// Buttons ====================================================================
+
+// Typography =================================================================
+
+body {
+  -webkit-font-smoothing: antialiased;
+}
+
+.text-primary,
+.text-primary:hover {
+  color: $brand-primary;
+}
+
+.text-success,
+.text-success:hover {
+  color: $brand-success;
+}
+
+.text-danger,
+.text-danger:hover {
+  color: $brand-danger;
+}
+
+.text-warning,
+.text-warning:hover {
+  color: $brand-warning;
+}
+
+.text-info,
+.text-info:hover {
+  color: $brand-info;
+}
+
+// Tables =====================================================================
+
+table,
+.table {
+
+  a:not(.btn) {
+    text-decoration: underline;
+  }
+
+  .dropdown-menu a {
+    text-decoration: none;
+  }
+
+  .success,
+  .warning,
+  .danger,
+  .info {
+    color: #fff;
+
+    a {
+      color: #fff;
+    }
+  }
+}
+
+// Forms ======================================================================
+
+
+.has-warning {
+  .help-block,
+  .control-label,
+  .radio,
+  .checkbox,
+  .radio-inline,
+  .checkbox-inline,
+  &.radio label,
+  &.checkbox label,
+  &.radio-inline label,
+  &.checkbox-inline label,
+  .form-control-feedback {
+    color: $brand-warning;
+  }
+
+  .form-control,
+  .form-control:focus,
+  .input-group-addon {
+    border: 1px solid $brand-warning;
+  }
+}
+
+.has-error {
+  .help-block,
+  .control-label,
+  .radio,
+  .checkbox,
+  .radio-inline,
+  .checkbox-inline,
+  &.radio label,
+  &.checkbox label,
+  &.radio-inline label,
+  &.checkbox-inline label,
+  .form-control-feedback {
+    color: $brand-danger;
+  }
+
+  .form-control,
+  .form-control:focus,
+  .input-group-addon {
+    border: 1px solid $brand-danger;
+  }
+}
+
+.has-success {
+  .help-block,
+  .control-label,
+  .radio,
+  .checkbox,
+  .radio-inline,
+  .checkbox-inline,
+  &.radio label,
+  &.checkbox label,
+  &.radio-inline label,
+  &.checkbox-inline label,
+  .form-control-feedback {
+    color: $brand-success;
+  }
+
+  .form-control,
+  .form-control:focus,
+  .input-group-addon {
+    border: 1px solid $brand-success;
+  }
+}
+
+// Navs =======================================================================
+
+.nav-pills {
+
+  & > li > a {
+    border-radius: 0;
+  }
+}
+
+.dropdown-menu {
+
+  & > li > a:hover,
+  & > li > a:focus {
+    background-image: none;
+  }
+}
+
+// Indicators =================================================================
+
+.close {
+  text-decoration: none;
+  text-shadow: none;
+  opacity: 0.4;
+
+  &:hover,
+  &:focus {
+    opacity: 1;
+  }
+}
+
+.alert {
+  border: none;
+
+  .alert-link {
+    text-decoration: underline;
+    color: #fff;
+  }
+}
+
+.label {
+  border-radius: 0;
+}
+
+// Progress bars ==============================================================
+
+.progress {
+  height: 8px;
+  @include box-shadow(none);
+  .progress-bar {
+    font-size: 8px;
+    line-height: 8px;
+  }
+}
+
+// Containers =================================================================
+
+.panel {
+  &-heading,
+  &-footer {
+    border-top-right-radius: 0;
+    border-top-left-radius: 0;
+  }
+
+  &-default {
+    .close {
+      color: $text-color;
+    }
+  }
+}
+
+a.list-group-item {
+
+  &-success {
+    &.active {
+      background-color: $state-success-bg;
+    }
+
+    &.active:hover,
+    &.active:focus {
+      background-color: darken($state-success-bg, 5%);
+    }
+  }
+
+  &-warning {
+    &.active {
+      background-color: $state-warning-bg;
+    }
+    
+    &.active:hover,
+    &.active:focus {
+      background-color: darken($state-warning-bg, 5%);
+    }
+  }
+
+  &-danger {
+    &.active {
+      background-color: $state-danger-bg;
+    }
+    
+    &.active:hover,
+    &.active:focus {
+      background-color: darken($state-danger-bg, 5%);
+    }
+  }
+}
+
+.modal {
+  .close {
+    color: $text-color;
+  }
+}
+
+.popover {
+  color: $text-color;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/cosmo/font.css
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/cosmo/font.css	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/cosmo/font.css	(revision 3762)
@@ -0,0 +1,18 @@
+@font-face {
+  font-family: 'Source Sans Pro';
+  font-style: normal;
+  font-weight: 300;
+  src: url(fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdo.woff) format('woff');
+}
+@font-face {
+  font-family: 'Source Sans Pro';
+  font-style: normal;
+  font-weight: 400;
+  src: url(fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7j.woff) format('woff');
+}
+@font-face {
+  font-family: 'Source Sans Pro';
+  font-style: normal;
+  font-weight: 700;
+  src: url(fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdo.woff) format('woff');
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/cosmo/_variables.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/cosmo/_variables.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/cosmo/_variables.scss	(revision 3762)
@@ -0,0 +1,870 @@
+$bootstrap-sass-asset-helper: false !default;
+// Cosmo 3.4.1
+// Variables
+// --------------------------------------------------
+
+
+//== Colors
+//
+//## Gray and brand colors for use across Bootstrap.
+
+$gray-base:              #000 !default;
+$gray-darker:            lighten($gray-base, 13.5%) !default; // #222
+$gray-dark:              lighten($gray-base, 20%) !default;   // #333
+$gray:                   lighten($gray-base, 33.5%) !default; // #555
+$gray-light:             lighten($gray-base, 60%) !default;   // #999
+$gray-lighter:           lighten($gray-base, 90%) !default; // #eee
+
+$brand-primary:         #2780E3 !default;
+$brand-success:         #3FB618 !default;
+$brand-info:            #9954BB !default;
+$brand-warning:         #FF7518 !default;
+$brand-danger:          #FF0039 !default;
+
+
+//== Scaffolding
+//
+//## Settings for some of the most global styles.
+
+//** Background color for `<body>`.
+$body-bg:               #fff !default;
+//** Global text color on `<body>`.
+$text-color:            $gray-dark !default;
+
+//** Global textual link color.
+$link-color:            $brand-primary !default;
+//** Link hover color set via `darken()` function.
+$link-hover-color:      darken($link-color, 15%) !default;
+//** Link hover decoration.
+$link-hover-decoration: underline !default;
+
+
+//== Typography
+//
+//## Font, line-height, and color for body text, headings, and more.
+
+$font-family-sans-serif:  "Source Sans Pro", Calibri, Candara, Arial, sans-serif !default;
+$font-family-serif:       Georgia, "Times New Roman", Times, serif !default;
+//** Default monospace fonts for `<code>`, `<kbd>`, and `<pre>`.
+$font-family-monospace:   Menlo, Monaco, Consolas, "Courier New", monospace !default;
+$font-family-base:        $font-family-sans-serif !default;
+
+$font-size-base:          15px !default;
+$font-size-large:         ceil(($font-size-base * 1.25)) !default; // ~18px
+$font-size-small:         ceil(($font-size-base * 0.85)) !default; // ~12px
+
+$font-size-h1:            floor(($font-size-base * 2.6)) !default; // ~36px
+$font-size-h2:            floor(($font-size-base * 2.15)) !default; // ~30px
+$font-size-h3:            ceil(($font-size-base * 1.7)) !default; // ~24px
+$font-size-h4:            ceil(($font-size-base * 1.25)) !default; // ~18px
+$font-size-h5:            $font-size-base !default;
+$font-size-h6:            ceil(($font-size-base * 0.85)) !default; // ~12px
+
+//** Unit-less `line-height` for use in components like buttons.
+$line-height-base:        1.428571429 !default; // 20/14
+//** Computed "line-height" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.
+$line-height-computed:    floor(($font-size-base * $line-height-base)) !default; // ~20px
+
+//** By default, this inherits from the `<body>`.
+$headings-font-family:    $font-family-base !default;
+$headings-font-weight:    300 !default;
+$headings-line-height:    1.1 !default;
+$headings-color:          inherit !default;
+
+
+//== Iconography
+//
+//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.
+
+//** Load fonts from this directory.
+$icon-font-path: if($bootstrap-sass-asset-helper, "bootstrap/", "../fonts/bootstrap/") !default;
+//** File name for all font files.
+$icon-font-name:          "glyphicons-halflings-regular" !default;
+//** Element ID within SVG icon file.
+$icon-font-svg-id:        "glyphicons_halflingsregular" !default;
+
+
+//== Components
+//
+//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).
+
+$padding-base-vertical:     10px !default;
+$padding-base-horizontal:   18px !default;
+
+$padding-large-vertical:    18px !default;
+$padding-large-horizontal:  30px !default;
+
+$padding-small-vertical:    5px !default;
+$padding-small-horizontal:  10px !default;
+
+$padding-xs-vertical:       1px !default;
+$padding-xs-horizontal:     5px !default;
+
+$line-height-large:         1.3333333 !default; // extra decimals for Win 8.1 Chrome
+$line-height-small:         1.5 !default;
+
+$border-radius-base:        0 !default;
+$border-radius-large:       0 !default;
+$border-radius-small:       0 !default;
+
+//** Global color for active items (e.g., navs or dropdowns).
+$component-active-color:    #fff !default;
+//** Global background color for active items (e.g., navs or dropdowns).
+$component-active-bg:       $brand-primary !default;
+
+//** Width of the `border` for generating carets that indicate dropdowns.
+$caret-width-base:          4px !default;
+//** Carets increase slightly in size for larger components.
+$caret-width-large:         5px !default;
+
+
+//== Tables
+//
+//## Customizes the `.table` component with basic values, each used across all table variations.
+
+//** Padding for `<th>`s and `<td>`s.
+$table-cell-padding:            8px !default;
+//** Padding for cells in `.table-condensed`.
+$table-condensed-cell-padding:  5px !default;
+
+//** Default background color used for all tables.
+$table-bg:                      transparent !default;
+//** Background color used for `.table-striped`.
+$table-bg-accent:               #f9f9f9 !default;
+//** Background color used for `.table-hover`.
+$table-bg-hover:                #f5f5f5 !default;
+$table-bg-active:               $table-bg-hover !default;
+
+//** Border color for table and cell borders.
+$table-border-color:            #ddd !default;
+
+
+//== Buttons
+//
+//## For each of Bootstrap's buttons, define text, background and border color.
+
+$btn-font-weight:                normal !default;
+
+$btn-default-color:              #fff !default;
+$btn-default-bg:                 $gray-darker !default;
+$btn-default-border:             $btn-default-bg !default;
+
+$btn-primary-color:              $btn-default-color !default;
+$btn-primary-bg:                 $brand-primary !default;
+$btn-primary-border:             $btn-primary-bg !default;
+
+$btn-success-color:              $btn-default-color !default;
+$btn-success-bg:                 $brand-success !default;
+$btn-success-border:             $btn-success-bg !default;
+
+$btn-info-color:                 $btn-default-color !default;
+$btn-info-bg:                    $brand-info !default;
+$btn-info-border:                $btn-info-bg !default;
+
+$btn-warning-color:              $btn-default-color !default;
+$btn-warning-bg:                 $brand-warning !default;
+$btn-warning-border:             $btn-warning-bg !default;
+
+$btn-danger-color:               $btn-default-color !default;
+$btn-danger-bg:                  $brand-danger !default;
+$btn-danger-border:              $btn-danger-bg !default;
+
+$btn-link-disabled-color:        $gray-light !default;
+
+// Allows for customizing button radius independently from global border radius
+$btn-border-radius-base:         $border-radius-base !default;
+$btn-border-radius-large:        $border-radius-large !default;
+$btn-border-radius-small:        $border-radius-small !default;
+
+
+//== Forms
+//
+//##
+
+//** `<input>` background color
+$input-bg:                       #fff !default;
+//** `<input disabled>` background color
+$input-bg-disabled:              $gray-lighter !default;
+
+//** Text color for `<input>`s
+$input-color:                    $text-color !default;
+//** `<input>` border color
+$input-border:                   #ccc !default;
+
+// TODO: Rename `$input-border-radius` to `$input-border-radius-base` in v4
+//** Default `.form-control` border radius
+// This has no effect on `<select>`s in some browsers, due to the limited stylability of `<select>`s in CSS.
+$input-border-radius:            $border-radius-base !default;
+//** Large `.form-control` border radius
+$input-border-radius-large:      $border-radius-large !default;
+//** Small `.form-control` border radius
+$input-border-radius-small:      $border-radius-small !default;
+
+//** Border color for inputs on focus
+$input-border-focus:             #66afe9 !default;
+
+//** Placeholder text color
+$input-color-placeholder:        $gray-light !default;
+
+//** Default `.form-control` height
+$input-height-base:              ($line-height-computed + ($padding-base-vertical * 2) + 2) !default;
+//** Large `.form-control` height
+$input-height-large:             (ceil($font-size-large * $line-height-large) + ($padding-large-vertical * 2) + 2) !default;
+//** Small `.form-control` height
+$input-height-small:             (floor($font-size-small * $line-height-small) + ($padding-small-vertical * 2) + 2) !default;
+
+//** `.form-group` margin
+$form-group-margin-bottom:       15px !default;
+
+$legend-color:                   $text-color !default;
+$legend-border-color:            #e5e5e5 !default;
+
+//** Background color for textual input addons
+$input-group-addon-bg:           $gray-lighter !default;
+//** Border color for textual input addons
+$input-group-addon-border-color: $input-border !default;
+
+//** Disabled cursor for form controls and buttons.
+$cursor-disabled:                not-allowed !default;
+
+
+//== Dropdowns
+//
+//## Dropdown menu container and contents.
+
+//** Background for the dropdown menu.
+$dropdown-bg:                    #fff !default;
+//** Dropdown menu `border-color`.
+$dropdown-border:                rgba(0,0,0,.15) !default;
+//** Dropdown menu `border-color` **for IE8**.
+$dropdown-fallback-border:       #ccc !default;
+//** Divider color for between dropdown items.
+$dropdown-divider-bg:            #e5e5e5 !default;
+
+//** Dropdown link text color.
+$dropdown-link-color:            $gray-dark !default;
+//** Hover color for dropdown links.
+$dropdown-link-hover-color:      #fff !default;
+//** Hover background for dropdown links.
+$dropdown-link-hover-bg:         $component-active-bg !default;
+
+//** Active dropdown menu item text color.
+$dropdown-link-active-color:     #fff !default;
+//** Active dropdown menu item background color.
+$dropdown-link-active-bg:        $component-active-bg !default;
+
+//** Disabled dropdown menu item background color.
+$dropdown-link-disabled-color:   $gray-light !default;
+
+//** Text color for headers within dropdown menus.
+$dropdown-header-color:          $gray-light !default;
+
+//** Deprecated `$dropdown-caret-color` as of v3.1.0
+$dropdown-caret-color:           #000 !default;
+
+
+//-- Z-index master list
+//
+// Warning: Avoid customizing these values. They're used for a bird's eye view
+// of components dependent on the z-axis and are designed to all work together.
+//
+// Note: These variables are not generated into the Customizer.
+
+$zindex-navbar:            1000 !default;
+$zindex-dropdown:          1000 !default;
+$zindex-popover:           1060 !default;
+$zindex-tooltip:           1070 !default;
+$zindex-navbar-fixed:      1030 !default;
+$zindex-modal-background:  1040 !default;
+$zindex-modal:             1050 !default;
+
+
+//== Media queries breakpoints
+//
+//## Define the breakpoints at which your layout will change, adapting to different screen sizes.
+
+// Extra small screen / phone
+//** Deprecated `$screen-xs` as of v3.0.1
+$screen-xs:                  480px !default;
+//** Deprecated `$screen-xs-min` as of v3.2.0
+$screen-xs-min:              $screen-xs !default;
+//** Deprecated `$screen-phone` as of v3.0.1
+$screen-phone:               $screen-xs-min !default;
+
+// Small screen / tablet
+//** Deprecated `$screen-sm` as of v3.0.1
+$screen-sm:                  768px !default;
+$screen-sm-min:              $screen-sm !default;
+//** Deprecated `$screen-tablet` as of v3.0.1
+$screen-tablet:              $screen-sm-min !default;
+
+// Medium screen / desktop
+//** Deprecated `$screen-md` as of v3.0.1
+$screen-md:                  992px !default;
+$screen-md-min:              $screen-md !default;
+//** Deprecated `$screen-desktop` as of v3.0.1
+$screen-desktop:             $screen-md-min !default;
+
+// Large screen / wide desktop
+//** Deprecated `$screen-lg` as of v3.0.1
+$screen-lg:                  1200px !default;
+$screen-lg-min:              $screen-lg !default;
+//** Deprecated `$screen-lg-desktop` as of v3.0.1
+$screen-lg-desktop:          $screen-lg-min !default;
+
+// So media queries don't overlap when required, provide a maximum
+$screen-xs-max:              ($screen-sm-min - 1) !default;
+$screen-sm-max:              ($screen-md-min - 1) !default;
+$screen-md-max:              ($screen-lg-min - 1) !default;
+
+
+//== Grid system
+//
+//## Define your custom responsive grid.
+
+//** Number of columns in the grid.
+$grid-columns:              12 !default;
+//** Padding between columns. Gets divided in half for the left and right.
+$grid-gutter-width:         30px !default;
+// Navbar collapse
+//** Point at which the navbar becomes uncollapsed.
+$grid-float-breakpoint:     $screen-sm-min !default;
+//** Point at which the navbar begins collapsing.
+$grid-float-breakpoint-max: ($grid-float-breakpoint - 1) !default;
+
+
+//== Container sizes
+//
+//## Define the maximum width of `.container` for different screen sizes.
+
+// Small screen / tablet
+$container-tablet:             (720px + $grid-gutter-width) !default;
+//** For `$screen-sm-min` and up.
+$container-sm:                 $container-tablet !default;
+
+// Medium screen / desktop
+$container-desktop:            (940px + $grid-gutter-width) !default;
+//** For `$screen-md-min` and up.
+$container-md:                 $container-desktop !default;
+
+// Large screen / wide desktop
+$container-large-desktop:      (1140px + $grid-gutter-width) !default;
+//** For `$screen-lg-min` and up.
+$container-lg:                 $container-large-desktop !default;
+
+
+//== Navbar
+//
+//##
+
+// Basics of a navbar
+$navbar-height:                    50px !default;
+$navbar-margin-bottom:             $line-height-computed !default;
+$navbar-border-radius:             $border-radius-base !default;
+$navbar-padding-horizontal:        floor(($grid-gutter-width / 2)) !default;
+$navbar-padding-vertical:          (($navbar-height - $line-height-computed) / 2) !default;
+$navbar-collapse-max-height:       340px !default;
+
+$navbar-default-color:             #fff !default;
+$navbar-default-bg:                $gray-darker !default;
+$navbar-default-border:            darken($navbar-default-bg, 6.5%) !default;
+
+// Navbar links
+$navbar-default-link-color:                #fff !default;
+$navbar-default-link-hover-color:          #fff !default;
+$navbar-default-link-hover-bg:             darken($navbar-default-bg, 10%) !default;
+$navbar-default-link-active-color:         $navbar-default-link-hover-color !default;
+$navbar-default-link-active-bg:            $navbar-default-link-hover-bg !default;
+$navbar-default-link-disabled-color:       #ccc !default;
+$navbar-default-link-disabled-bg:          transparent !default;
+
+// Navbar brand label
+$navbar-default-brand-color:               $navbar-default-link-color !default;
+$navbar-default-brand-hover-color:         #fff !default;
+$navbar-default-brand-hover-bg:            none !default;
+
+// Navbar toggle
+$navbar-default-toggle-hover-bg:           $navbar-default-link-hover-bg !default;
+$navbar-default-toggle-icon-bar-bg:        #fff !default;
+$navbar-default-toggle-border-color:       transparent !default;
+
+
+//=== Inverted navbar
+// Reset inverted navbar basics
+$navbar-inverse-color:                      #fff !default;
+$navbar-inverse-bg:                         $brand-primary !default;
+$navbar-inverse-border:                     darken($navbar-inverse-bg, 10%) !default;
+
+// Inverted navbar links
+$navbar-inverse-link-color:                 #fff !default;
+$navbar-inverse-link-hover-color:           #fff !default;
+$navbar-inverse-link-hover-bg:              darken($navbar-inverse-bg, 10%) !default;
+$navbar-inverse-link-active-color:          $navbar-inverse-link-hover-color !default;
+$navbar-inverse-link-active-bg:             $navbar-inverse-link-hover-bg !default;
+$navbar-inverse-link-disabled-color:        #fff !default;
+$navbar-inverse-link-disabled-bg:           transparent !default;
+
+// Inverted navbar brand label
+$navbar-inverse-brand-color:                $navbar-inverse-link-color !default;
+$navbar-inverse-brand-hover-color:          #fff !default;
+$navbar-inverse-brand-hover-bg:             none !default;
+
+// Inverted navbar toggle
+$navbar-inverse-toggle-hover-bg:            $navbar-inverse-link-hover-bg !default;
+$navbar-inverse-toggle-icon-bar-bg:         #fff !default;
+$navbar-inverse-toggle-border-color:        transparent !default;
+
+
+//== Navs
+//
+//##
+
+//=== Shared nav styles
+$nav-link-padding:                          10px 15px !default;
+$nav-link-hover-bg:                         $gray-lighter !default;
+
+$nav-disabled-link-color:                   $gray-light !default;
+$nav-disabled-link-hover-color:             $gray-light !default;
+
+//== Tabs
+$nav-tabs-border-color:                     #ddd !default;
+
+$nav-tabs-link-hover-border-color:          $gray-lighter !default;
+
+$nav-tabs-active-link-hover-bg:             $body-bg !default;
+$nav-tabs-active-link-hover-color:          $gray !default;
+$nav-tabs-active-link-hover-border-color:   #ddd !default;
+
+$nav-tabs-justified-link-border-color:            #ddd !default;
+$nav-tabs-justified-active-link-border-color:     $body-bg !default;
+
+//== Pills
+$nav-pills-border-radius:                   $border-radius-base !default;
+$nav-pills-active-link-hover-bg:            $component-active-bg !default;
+$nav-pills-active-link-hover-color:         $component-active-color !default;
+
+
+//== Pagination
+//
+//##
+
+$pagination-color:                     $link-color !default;
+$pagination-bg:                        #fff !default;
+$pagination-border:                    #ddd !default;
+
+$pagination-hover-color:               $link-hover-color !default;
+$pagination-hover-bg:                  $gray-lighter !default;
+$pagination-hover-border:              #ddd !default;
+
+$pagination-active-color:              $gray-light !default;
+$pagination-active-bg:                 #f5f5f5 !default;
+$pagination-active-border:             #ddd !default;
+
+$pagination-disabled-color:            $gray-light !default;
+$pagination-disabled-bg:               #fff !default;
+$pagination-disabled-border:           #ddd !default;
+
+
+//== Pager
+//
+//##
+
+$pager-bg:                             $pagination-bg !default;
+$pager-border:                         $pagination-border !default;
+$pager-border-radius:                  $border-radius-base !default;
+
+$pager-hover-bg:                       $pagination-hover-bg !default;
+
+$pager-active-bg:                      $pagination-active-bg !default;
+$pager-active-color:                   $pagination-active-color !default;
+
+$pager-disabled-color:                 $gray-light !default;
+
+
+//== Jumbotron
+//
+//##
+
+$jumbotron-padding:              30px !default;
+$jumbotron-color:                inherit !default;
+$jumbotron-bg:                   $gray-lighter !default;
+$jumbotron-heading-color:        inherit !default;
+$jumbotron-font-size:            ceil(($font-size-base * 1.5)) !default;
+$jumbotron-heading-font-size:    ceil(($font-size-base * 4.5)) !default;
+
+
+//== Form states and alerts
+//
+//## Define colors for form feedback states and, by default, alerts.
+
+$state-success-text:             #fff !default;
+$state-success-bg:               $brand-success !default;
+$state-success-border:           darken(adjust-hue($state-success-bg, -10), 5%) !default;
+
+$state-info-text:                #fff !default;
+$state-info-bg:                  $brand-info !default;
+$state-info-border:              darken(adjust-hue($state-info-bg, -10), 7%) !default;
+
+$state-warning-text:             #fff !default;
+$state-warning-bg:               $brand-warning !default;
+$state-warning-border:           darken(adjust-hue($state-warning-bg, -10), 3%) !default;
+
+$state-danger-text:              #fff !default;
+$state-danger-bg:                $brand-danger !default;
+$state-danger-border:            darken(adjust-hue($state-danger-bg, -10), 3%) !default;
+
+
+//== Tooltips
+//
+//##
+
+//** Tooltip max width
+$tooltip-max-width:           200px !default;
+//** Tooltip text color
+$tooltip-color:               #fff !default;
+//** Tooltip background color
+$tooltip-bg:                  #000 !default;
+$tooltip-opacity:             .9 !default;
+
+//** Tooltip arrow width
+$tooltip-arrow-width:         5px !default;
+//** Tooltip arrow color
+$tooltip-arrow-color:         $tooltip-bg !default;
+
+
+//== Popovers
+//
+//##
+
+//** Popover body background color
+$popover-bg:                          #fff !default;
+//** Popover maximum width
+$popover-max-width:                   276px !default;
+//** Popover border color
+$popover-border-color:                rgba(0,0,0,.2) !default;
+//** Popover fallback border color
+$popover-fallback-border-color:       #ccc !default;
+
+//** Popover title background color
+$popover-title-bg:                    darken($popover-bg, 3%) !default;
+
+//** Popover arrow width
+$popover-arrow-width:                 10px !default;
+//** Popover arrow color
+$popover-arrow-color:                 $popover-bg !default;
+
+//** Popover outer arrow width
+$popover-arrow-outer-width:           ($popover-arrow-width + 1) !default;
+//** Popover outer arrow color
+$popover-arrow-outer-color:           fadein($popover-border-color, 5%) !default;
+//** Popover outer arrow fallback color
+$popover-arrow-outer-fallback-color:  darken($popover-fallback-border-color, 20%) !default;
+
+
+//== Labels
+//
+//##
+
+//** Default label background color
+$label-default-bg:            $btn-default-bg !default;
+//** Primary label background color
+$label-primary-bg:            $brand-primary !default;
+//** Success label background color
+$label-success-bg:            $brand-success !default;
+//** Info label background color
+$label-info-bg:               $brand-info !default;
+//** Warning label background color
+$label-warning-bg:            $brand-warning !default;
+//** Danger label background color
+$label-danger-bg:             $brand-danger !default;
+
+//** Default label text color
+$label-color:                 #fff !default;
+//** Default text color of a linked label
+$label-link-hover-color:      #fff !default;
+
+
+//== Modals
+//
+//##
+
+//** Padding applied to the modal body
+$modal-inner-padding:         20px !default;
+
+//** Padding applied to the modal title
+$modal-title-padding:         15px !default;
+//** Modal title line-height
+$modal-title-line-height:     $line-height-base !default;
+
+//** Background color of modal content area
+$modal-content-bg:                             #fff !default;
+//** Modal content border color
+$modal-content-border-color:                   transparent !default;
+//** Modal content border color **for IE8**
+$modal-content-fallback-border-color:          #999 !default;
+
+//** Modal backdrop background color
+$modal-backdrop-bg:           #000 !default;
+//** Modal backdrop opacity
+$modal-backdrop-opacity:      .5 !default;
+//** Modal header border color
+$modal-header-border-color:   #e5e5e5 !default;
+//** Modal footer border color
+$modal-footer-border-color:   $modal-header-border-color !default;
+
+$modal-lg:                    900px !default;
+$modal-md:                    600px !default;
+$modal-sm:                    300px !default;
+
+
+//== Alerts
+//
+//## Define alert colors, border radius, and padding.
+
+$alert-padding:               15px !default;
+$alert-border-radius:         $border-radius-base !default;
+$alert-link-font-weight:      bold !default;
+
+$alert-success-bg:            $state-success-bg !default;
+$alert-success-text:          $state-success-text !default;
+$alert-success-border:        $state-success-border !default;
+
+$alert-info-bg:               $state-info-bg !default;
+$alert-info-text:             $state-info-text !default;
+$alert-info-border:           $state-info-border !default;
+
+$alert-warning-bg:            $state-warning-bg !default;
+$alert-warning-text:          $state-warning-text !default;
+$alert-warning-border:        $state-warning-border !default;
+
+$alert-danger-bg:             $state-danger-bg !default;
+$alert-danger-text:           $state-danger-text !default;
+$alert-danger-border:         $state-danger-border !default;
+
+
+//== Progress bars
+//
+//##
+
+//** Background color of the whole progress component
+$progress-bg:                 #ccc !default;
+//** Progress bar text color
+$progress-bar-color:          #fff !default;
+//** Variable for setting rounded corners on progress bar.
+$progress-border-radius:      $border-radius-base !default;
+
+//** Default progress bar color
+$progress-bar-bg:             $brand-primary !default;
+//** Success progress bar color
+$progress-bar-success-bg:     $brand-success !default;
+//** Warning progress bar color
+$progress-bar-warning-bg:     $brand-warning !default;
+//** Danger progress bar color
+$progress-bar-danger-bg:      $brand-danger !default;
+//** Info progress bar color
+$progress-bar-info-bg:        $brand-info !default;
+
+
+//== List group
+//
+//##
+
+//** Background color on `.list-group-item`
+$list-group-bg:                 #fff !default;
+//** `.list-group-item` border color
+$list-group-border:             #ddd !default;
+//** List group border radius
+$list-group-border-radius:      $border-radius-base !default;
+
+//** Background color of single list items on hover
+$list-group-hover-bg:           #f5f5f5 !default;
+//** Text color of active list items
+$list-group-active-color:       $component-active-color !default;
+//** Background color of active list items
+$list-group-active-bg:          $component-active-bg !default;
+//** Border color of active list elements
+$list-group-active-border:      $list-group-border !default;
+//** Text color for content within active list items
+$list-group-active-text-color:  lighten($list-group-active-bg, 40%) !default;
+
+//** Text color of disabled list items
+$list-group-disabled-color:      $gray-light !default;
+//** Background color of disabled list items
+$list-group-disabled-bg:         $gray-lighter !default;
+//** Text color for content within disabled list items
+$list-group-disabled-text-color: $list-group-disabled-color !default;
+
+$list-group-link-color:         #555 !default;
+$list-group-link-hover-color:   $list-group-link-color !default;
+$list-group-link-heading-color: #333 !default;
+
+
+//== Panels
+//
+//##
+
+$panel-bg:                    #fff !default;
+$panel-body-padding:          15px !default;
+$panel-heading-padding:       10px 15px !default;
+$panel-footer-padding:        $panel-heading-padding !default;
+$panel-border-radius:         $border-radius-base !default;
+
+//** Border color for elements within panels
+$panel-inner-border:          #ddd !default;
+$panel-footer-bg:             #f5f5f5 !default;
+
+$panel-default-text:          $gray-dark !default;
+$panel-default-border:        #ddd !default;
+$panel-default-heading-bg:    #f5f5f5 !default;
+
+$panel-primary-text:          #fff !default;
+$panel-primary-border:        $brand-primary !default;
+$panel-primary-heading-bg:    $brand-primary !default;
+
+$panel-success-text:          $state-success-text !default;
+$panel-success-border:        $state-success-border !default;
+$panel-success-heading-bg:    $state-success-bg !default;
+
+$panel-info-text:             $state-info-text !default;
+$panel-info-border:           $state-info-border !default;
+$panel-info-heading-bg:       $state-info-bg !default;
+
+$panel-warning-text:          $state-warning-text !default;
+$panel-warning-border:        $state-warning-border !default;
+$panel-warning-heading-bg:    $state-warning-bg !default;
+
+$panel-danger-text:           $state-danger-text !default;
+$panel-danger-border:         $state-danger-border !default;
+$panel-danger-heading-bg:     $state-danger-bg !default;
+
+
+//== Thumbnails
+//
+//##
+
+//** Padding around the thumbnail image
+$thumbnail-padding:           4px !default;
+//** Thumbnail background color
+$thumbnail-bg:                $body-bg !default;
+//** Thumbnail border color
+$thumbnail-border:            #ddd !default;
+//** Thumbnail border radius
+$thumbnail-border-radius:     $border-radius-base !default;
+
+//** Custom text color for thumbnail captions
+$thumbnail-caption-color:     $text-color !default;
+//** Padding around the thumbnail caption
+$thumbnail-caption-padding:   9px !default;
+
+
+//== Wells
+//
+//##
+
+$well-bg:                     #f5f5f5 !default;
+$well-border:                 darken($well-bg, 7%) !default;
+
+
+//== Badges
+//
+//##
+
+$badge-color:                 #fff !default;
+//** Linked badge text color on hover
+$badge-link-hover-color:      #fff !default;
+$badge-bg:                    $brand-primary !default;
+
+//** Badge text color in active nav link
+$badge-active-color:          $link-color !default;
+//** Badge background color in active nav link
+$badge-active-bg:             #fff !default;
+
+$badge-font-weight:           bold !default;
+$badge-line-height:           1 !default;
+$badge-border-radius:         10px !default;
+
+
+//== Breadcrumbs
+//
+//##
+
+$breadcrumb-padding-vertical:   8px !default;
+$breadcrumb-padding-horizontal: 15px !default;
+//** Breadcrumb background color
+$breadcrumb-bg:                 #f5f5f5 !default;
+//** Breadcrumb text color
+$breadcrumb-color:              #ccc !default;
+//** Text color of current page in the breadcrumb
+$breadcrumb-active-color:       $gray-light !default;
+//** Textual separator for between breadcrumb elements
+$breadcrumb-separator:          "/" !default;
+
+
+//== Carousel
+//
+//##
+
+$carousel-text-shadow:                        0 1px 2px rgba(0,0,0,.6) !default;
+
+$carousel-control-color:                      #fff !default;
+$carousel-control-width:                      15% !default;
+$carousel-control-opacity:                    .5 !default;
+$carousel-control-font-size:                  20px !default;
+
+$carousel-indicator-active-bg:                #fff !default;
+$carousel-indicator-border-color:             #fff !default;
+
+$carousel-caption-color:                      #fff !default;
+
+
+//== Close
+//
+//##
+
+$close-font-weight:           bold !default;
+$close-color:                 #fff !default;
+$close-text-shadow:           0 1px 0 #fff !default;
+
+
+//== Code
+//
+//##
+
+$code-color:                  #c7254e !default;
+$code-bg:                     #f9f2f4 !default;
+
+$kbd-color:                   #fff !default;
+$kbd-bg:                      #333 !default;
+
+$pre-bg:                      #f5f5f5 !default;
+$pre-color:                   $gray-dark !default;
+$pre-border-color:            #ccc !default;
+$pre-scrollable-max-height:   340px !default;
+
+
+//== Type
+//
+//##
+
+//** Horizontal offset for forms and lists.
+$component-offset-horizontal: 180px !default;
+//** Text muted color
+$text-muted:                  $gray-light !default;
+//** Abbreviations and acronyms border color
+$abbr-border-color:           $gray-light !default;
+//** Headings small color
+$headings-small-color:        $gray-light !default;
+//** Blockquote small color
+$blockquote-small-color:      $gray-light !default;
+//** Blockquote font size
+$blockquote-font-size:        ($font-size-base * 1.25) !default;
+//** Blockquote border color
+$blockquote-border-color:     $gray-lighter !default;
+//** Page header border color
+$page-header-border-color:    $gray-lighter !default;
+//** Width of horizontal description list titles
+$dl-horizontal-offset:        $component-offset-horizontal !default;
+//** Point at which .dl-horizontal becomes horizontal
+$dl-horizontal-breakpoint:    $grid-float-breakpoint !default;
+//** Horizontal line color.
+$hr-border:                   $gray-lighter !default;
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/lumen/font.css
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/lumen/font.css	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/lumen/font.css	(revision 3762)
@@ -0,0 +1,24 @@
+@font-face {
+  font-family: 'Source Sans Pro';
+  font-style: italic;
+  font-weight: 400;
+  src: url(fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDQ.woff) format('woff');
+}
+@font-face {
+  font-family: 'Source Sans Pro';
+  font-style: normal;
+  font-weight: 300;
+  src: url(fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdo.woff) format('woff');
+}
+@font-face {
+  font-family: 'Source Sans Pro';
+  font-style: normal;
+  font-weight: 400;
+  src: url(fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7j.woff) format('woff');
+}
+@font-face {
+  font-family: 'Source Sans Pro';
+  font-style: normal;
+  font-weight: 700;
+  src: url(fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdo.woff) format('woff');
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/lumen/_variables.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/lumen/_variables.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/lumen/_variables.scss	(revision 3762)
@@ -0,0 +1,870 @@
+$bootstrap-sass-asset-helper: false !default;
+// Lumen 3.4.1
+// Variables
+// --------------------------------------------------
+
+
+//== Colors
+//
+//## Gray and brand colors for use across Bootstrap.
+
+$gray-base:              #000 !default;
+$gray-darker:            lighten($gray-base, 13.5%) !default; // #222
+$gray-dark:              lighten($gray-base, 20%) !default;   // #333
+$gray:                   lighten($gray-base, 33.5%) !default; // #555
+$gray-light:             lighten($gray-base, 60%) !default;   // #999
+$gray-lighter:           lighten($gray-base, 93.5%) !default; // #eee
+
+$brand-primary:         #158CBA !default;
+$brand-success:         #28B62C !default;
+$brand-info:            #75CAEB !default;
+$brand-warning:         #FF851B !default;
+$brand-danger:          #FF4136 !default;
+
+
+//== Scaffolding
+//
+//## Settings for some of the most global styles.
+
+//** Background color for `<body>`.
+$body-bg:               #fff !default;
+//** Global text color on `<body>`.
+$text-color:            $gray !default;
+
+//** Global textual link color.
+$link-color:            $brand-primary !default;
+//** Link hover color set via `darken()` function.
+$link-hover-color:      $link-color !default;
+//** Link hover decoration.
+$link-hover-decoration: underline !default;
+
+
+//== Typography
+//
+//## Font, line-height, and color for body text, headings, and more.
+
+$font-family-sans-serif:  "Source Sans Pro", "Helvetica Neue", Helvetica, Arial, sans-serif !default;
+$font-family-serif:       Georgia, "Times New Roman", Times, serif !default;
+//** Default monospace fonts for `<code>`, `<kbd>`, and `<pre>`.
+$font-family-monospace:   Menlo, Monaco, Consolas, "Courier New", monospace !default;
+$font-family-base:        $font-family-sans-serif !default;
+
+$font-size-base:          14px !default;
+$font-size-large:         ceil(($font-size-base * 1.25)) !default; // ~18px
+$font-size-small:         ceil(($font-size-base * 0.85)) !default; // ~12px
+
+$font-size-h1:            floor(($font-size-base * 2.6)) !default; // ~36px
+$font-size-h2:            floor(($font-size-base * 2.15)) !default; // ~30px
+$font-size-h3:            ceil(($font-size-base * 1.7)) !default; // ~24px
+$font-size-h4:            ceil(($font-size-base * 1.25)) !default; // ~18px
+$font-size-h5:            $font-size-base !default;
+$font-size-h6:            ceil(($font-size-base * 0.85)) !default; // ~12px
+
+//** Unit-less `line-height` for use in components like buttons.
+$line-height-base:        1.428571429 !default; // 20/14
+//** Computed "line-height" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.
+$line-height-computed:    floor(($font-size-base * $line-height-base)) !default; // ~20px
+
+//** By default, this inherits from the `<body>`.
+$headings-font-family:    inherit !default;
+$headings-font-weight:    400 !default;
+$headings-line-height:    1.1 !default;
+$headings-color:          $gray-dark !default;
+
+
+//== Iconography
+//
+//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.
+
+//** Load fonts from this directory.
+$icon-font-path: if($bootstrap-sass-asset-helper, "bootstrap/", "../fonts/bootstrap/") !default;
+//** File name for all font files.
+$icon-font-name:          "glyphicons-halflings-regular" !default;
+//** Element ID within SVG icon file.
+$icon-font-svg-id:        "glyphicons_halflingsregular" !default;
+
+
+//== Components
+//
+//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).
+
+$padding-base-vertical:     7px !default;
+$padding-base-horizontal:   12px !default;
+
+$padding-large-vertical:    13px !default;
+$padding-large-horizontal:  16px !default;
+
+$padding-small-vertical:    4px !default;
+$padding-small-horizontal:  10px !default;
+
+$padding-xs-vertical:       1px !default;
+$padding-xs-horizontal:     5px !default;
+
+$line-height-large:         1.3333333 !default; // extra decimals for Win 8.1 Chrome
+$line-height-small:         1.5 !default;
+
+$border-radius-base:        4px !default;
+$border-radius-large:       5px !default;
+$border-radius-small:       2px !default;
+
+//** Global color for active items (e.g., navs or dropdowns).
+$component-active-color:    #fff !default;
+//** Global background color for active items (e.g., navs or dropdowns).
+$component-active-bg:       $brand-primary !default;
+
+//** Width of the `border` for generating carets that indicate dropdowns.
+$caret-width-base:          4px !default;
+//** Carets increase slightly in size for larger components.
+$caret-width-large:         5px !default;
+
+
+//== Tables
+//
+//## Customizes the `.table` component with basic values, each used across all table variations.
+
+//** Padding for `<th>`s and `<td>`s.
+$table-cell-padding:            8px !default;
+//** Padding for cells in `.table-condensed`.
+$table-condensed-cell-padding:  5px !default;
+
+//** Default background color used for all tables.
+$table-bg:                      transparent !default;
+//** Background color used for `.table-striped`.
+$table-bg-accent:               #f9f9f9 !default;
+//** Background color used for `.table-hover`.
+$table-bg-hover:                #f5f5f5 !default;
+$table-bg-active:               $table-bg-hover !default;
+
+//** Border color for table and cell borders.
+$table-border-color:            $gray-lighter !default;
+
+
+//== Buttons
+//
+//## For each of Bootstrap's buttons, define text, background and border color.
+
+$btn-font-weight:                normal !default;
+
+$btn-default-color:              $gray !default;
+$btn-default-bg:                 $gray-lighter !default;
+$btn-default-border:             darken($btn-default-bg, 5%) !default;
+
+$btn-primary-color:              #fff !default;
+$btn-primary-bg:                 $brand-primary !default;
+$btn-primary-border:             darken($btn-primary-bg, 5%) !default;
+
+$btn-success-color:              #fff !default;
+$btn-success-bg:                 $brand-success !default;
+$btn-success-border:             darken($btn-success-bg, 5%) !default;
+
+$btn-info-color:                 #fff !default;
+$btn-info-bg:                    $brand-info !default;
+$btn-info-border:                darken($btn-info-bg, 5%) !default;
+
+$btn-warning-color:              #fff !default;
+$btn-warning-bg:                 $brand-warning !default;
+$btn-warning-border:             darken($btn-warning-bg, 5%) !default;
+
+$btn-danger-color:               #fff !default;
+$btn-danger-bg:                  $brand-danger !default;
+$btn-danger-border:              darken($btn-danger-bg, 5%) !default;
+
+$btn-link-disabled-color:        $gray-light !default;
+
+// Allows for customizing button radius independently from global border radius
+$btn-border-radius-base:         $border-radius-base !default;
+$btn-border-radius-large:        $border-radius-large !default;
+$btn-border-radius-small:        $border-radius-small !default;
+
+
+//== Forms
+//
+//##
+
+//** `<input>` background color
+$input-bg:                       #fff !default;
+//** `<input disabled>` background color
+$input-bg-disabled:              $gray-lighter !default;
+
+//** Text color for `<input>`s
+$input-color:                    $gray !default;
+//** `<input>` border color
+$input-border:                   darken(#f8f8f8, 6.5%) !default;
+
+// TODO: Rename `$input-border-radius` to `$input-border-radius-base` in v4
+//** Default `.form-control` border radius
+// This has no effect on `<select>`s in some browsers, due to the limited stylability of `<select>`s in CSS.
+$input-border-radius:            $border-radius-base !default;
+//** Large `.form-control` border radius
+$input-border-radius-large:      $border-radius-large !default;
+//** Small `.form-control` border radius
+$input-border-radius-small:      $border-radius-small !default;
+
+//** Border color for inputs on focus
+$input-border-focus:             #66afe9 !default;
+
+//** Placeholder text color
+$input-color-placeholder:        $gray-light !default;
+
+//** Default `.form-control` height
+$input-height-base:              ($line-height-computed + ($padding-base-vertical * 2) + 4) !default;
+//** Large `.form-control` height
+$input-height-large:             (ceil($font-size-large * $line-height-large) + ($padding-large-vertical * 2) + 2) !default;
+//** Small `.form-control` height
+$input-height-small:             (floor($font-size-small * $line-height-small) + ($padding-small-vertical * 2) + 2) !default;
+
+//** `.form-group` margin
+$form-group-margin-bottom:       15px !default;
+
+$legend-color:                   $gray-dark !default;
+$legend-border-color:            #e5e5e5 !default;
+
+//** Background color for textual input addons
+$input-group-addon-bg:           $gray-lighter !default;
+//** Border color for textual input addons
+$input-group-addon-border-color: $input-border !default;
+
+//** Disabled cursor for form controls and buttons.
+$cursor-disabled:                not-allowed !default;
+
+
+//== Dropdowns
+//
+//## Dropdown menu container and contents.
+
+//** Background for the dropdown menu.
+$dropdown-bg:                    #fff !default;
+//** Dropdown menu `border-color`.
+$dropdown-border:                $input-border !default;
+//** Dropdown menu `border-color` **for IE8**.
+$dropdown-fallback-border:       #ccc !default;
+//** Divider color for between dropdown items.
+$dropdown-divider-bg:            $gray-lighter !default;
+
+//** Dropdown link text color.
+$dropdown-link-color:            $gray-light !default;
+//** Hover color for dropdown links.
+$dropdown-link-hover-color:      $gray-dark !default;
+//** Hover background for dropdown links.
+$dropdown-link-hover-bg:         transparent !default;
+
+//** Active dropdown menu item text color.
+$dropdown-link-active-color:     $component-active-color !default;
+//** Active dropdown menu item background color.
+$dropdown-link-active-bg:        $component-active-bg !default;
+
+//** Disabled dropdown menu item background color.
+$dropdown-link-disabled-color:   $gray-lighter !default;
+
+//** Text color for headers within dropdown menus.
+$dropdown-header-color:          $gray-light !default;
+
+//** Deprecated `$dropdown-caret-color` as of v3.1.0
+$dropdown-caret-color:           #000 !default;
+
+
+//-- Z-index master list
+//
+// Warning: Avoid customizing these values. They're used for a bird's eye view
+// of components dependent on the z-axis and are designed to all work together.
+//
+// Note: These variables are not generated into the Customizer.
+
+$zindex-navbar:            1000 !default;
+$zindex-dropdown:          1000 !default;
+$zindex-popover:           1060 !default;
+$zindex-tooltip:           1070 !default;
+$zindex-navbar-fixed:      1030 !default;
+$zindex-modal-background:  1040 !default;
+$zindex-modal:             1050 !default;
+
+
+//== Media queries breakpoints
+//
+//## Define the breakpoints at which your layout will change, adapting to different screen sizes.
+
+// Extra small screen / phone
+//** Deprecated `$screen-xs` as of v3.0.1
+$screen-xs:                  480px !default;
+//** Deprecated `$screen-xs-min` as of v3.2.0
+$screen-xs-min:              $screen-xs !default;
+//** Deprecated `$screen-phone` as of v3.0.1
+$screen-phone:               $screen-xs-min !default;
+
+// Small screen / tablet
+//** Deprecated `$screen-sm` as of v3.0.1
+$screen-sm:                  768px !default;
+$screen-sm-min:              $screen-sm !default;
+//** Deprecated `$screen-tablet` as of v3.0.1
+$screen-tablet:              $screen-sm-min !default;
+
+// Medium screen / desktop
+//** Deprecated `$screen-md` as of v3.0.1
+$screen-md:                  992px !default;
+$screen-md-min:              $screen-md !default;
+//** Deprecated `$screen-desktop` as of v3.0.1
+$screen-desktop:             $screen-md-min !default;
+
+// Large screen / wide desktop
+//** Deprecated `$screen-lg` as of v3.0.1
+$screen-lg:                  1200px !default;
+$screen-lg-min:              $screen-lg !default;
+//** Deprecated `$screen-lg-desktop` as of v3.0.1
+$screen-lg-desktop:          $screen-lg-min !default;
+
+// So media queries don't overlap when required, provide a maximum
+$screen-xs-max:              ($screen-sm-min - 1) !default;
+$screen-sm-max:              ($screen-md-min - 1) !default;
+$screen-md-max:              ($screen-lg-min - 1) !default;
+
+
+//== Grid system
+//
+//## Define your custom responsive grid.
+
+//** Number of columns in the grid.
+$grid-columns:              12 !default;
+//** Padding between columns. Gets divided in half for the left and right.
+$grid-gutter-width:         30px !default;
+// Navbar collapse
+//** Point at which the navbar becomes uncollapsed.
+$grid-float-breakpoint:     $screen-sm-min !default;
+//** Point at which the navbar begins collapsing.
+$grid-float-breakpoint-max: ($grid-float-breakpoint - 1) !default;
+
+
+//== Container sizes
+//
+//## Define the maximum width of `.container` for different screen sizes.
+
+// Small screen / tablet
+$container-tablet:             (720px + $grid-gutter-width) !default;
+//** For `$screen-sm-min` and up.
+$container-sm:                 $container-tablet !default;
+
+// Medium screen / desktop
+$container-desktop:            (940px + $grid-gutter-width) !default;
+//** For `$screen-md-min` and up.
+$container-md:                 $container-desktop !default;
+
+// Large screen / wide desktop
+$container-large-desktop:      (1140px + $grid-gutter-width) !default;
+//** For `$screen-lg-min` and up.
+$container-lg:                 $container-large-desktop !default;
+
+
+//== Navbar
+//
+//##
+
+// Basics of a navbar
+$navbar-height:                    50px !default;
+$navbar-margin-bottom:             $line-height-computed !default;
+$navbar-border-radius:             $border-radius-base !default;
+$navbar-padding-horizontal:        floor(($grid-gutter-width / 2)) !default;
+$navbar-padding-vertical:          (($navbar-height - $line-height-computed) / 2) !default;
+$navbar-collapse-max-height:       340px !default;
+
+$navbar-default-color:             $text-color !default;
+$navbar-default-bg:                #f8f8f8 !default;
+$navbar-default-border:            $input-border !default;
+
+// Navbar links
+$navbar-default-link-color:                $gray-light !default;
+$navbar-default-link-hover-color:          $gray-dark !default;
+$navbar-default-link-hover-bg:             transparent !default;
+$navbar-default-link-active-color:         $navbar-default-link-hover-color !default;
+$navbar-default-link-active-bg:            transparent !default;
+$navbar-default-link-disabled-color:       $gray-lighter !default;
+$navbar-default-link-disabled-bg:          transparent !default;
+
+// Navbar brand label
+$navbar-default-brand-color:               $navbar-default-link-hover-color !default;
+$navbar-default-brand-hover-color:         $navbar-default-link-hover-color !default;
+$navbar-default-brand-hover-bg:            transparent !default;
+
+// Navbar toggle
+$navbar-default-toggle-hover-bg:           #fff !default;
+$navbar-default-toggle-icon-bar-bg:        $gray-light !default;
+$navbar-default-toggle-border-color:       $gray-lighter !default;
+
+
+//=== Inverted navbar
+// Reset inverted navbar basics
+$navbar-inverse-color:                      $gray-light !default;
+$navbar-inverse-bg:                         #fff !default;
+$navbar-inverse-border:                     darken($navbar-inverse-bg, 10%) !default;
+
+// Inverted navbar links
+$navbar-inverse-link-color:                 $gray-light !default;
+$navbar-inverse-link-hover-color:           $gray-dark !default;
+$navbar-inverse-link-hover-bg:              transparent !default;
+$navbar-inverse-link-active-color:          $navbar-inverse-link-hover-color !default;
+$navbar-inverse-link-active-bg:             transparent !default;
+$navbar-inverse-link-disabled-color:        $gray-lighter !default;
+$navbar-inverse-link-disabled-bg:           transparent !default;
+
+// Inverted navbar brand label
+$navbar-inverse-brand-color:                $navbar-inverse-link-color !default;
+$navbar-inverse-brand-hover-color:          $navbar-inverse-link-hover-color !default;
+$navbar-inverse-brand-hover-bg:             transparent !default;
+
+// Inverted navbar toggle
+$navbar-inverse-toggle-hover-bg:            $gray-lighter !default;
+$navbar-inverse-toggle-icon-bar-bg:         $gray-light !default;
+$navbar-inverse-toggle-border-color:        $gray-lighter !default;
+
+
+//== Navs
+//
+//##
+
+//=== Shared nav styles
+$nav-link-padding:                          10px 15px !default;
+$nav-link-hover-bg:                         #fff !default;
+
+$nav-disabled-link-color:                   $gray-light !default;
+$nav-disabled-link-hover-color:             $gray-light !default;
+
+//== Tabs
+$nav-tabs-border-color:                     $navbar-default-border !default;
+
+$nav-tabs-link-hover-border-color:          $gray-lighter !default;
+
+$nav-tabs-active-link-hover-bg:             #fff !default;
+$nav-tabs-active-link-hover-color:          $gray !default;
+$nav-tabs-active-link-hover-border-color:   $nav-tabs-border-color !default;
+
+$nav-tabs-justified-link-border-color:            $nav-tabs-border-color !default;
+$nav-tabs-justified-active-link-border-color:     $body-bg !default;
+
+//== Pills
+$nav-pills-border-radius:                   $border-radius-base !default;
+$nav-pills-active-link-hover-bg:            $component-active-bg !default;
+$nav-pills-active-link-hover-color:         $component-active-color !default;
+
+
+//== Pagination
+//
+//##
+
+$pagination-color:                     $btn-default-color !default;
+$pagination-bg:                        $btn-default-bg !default;
+$pagination-border:                    $btn-default-border !default;
+
+$pagination-hover-color:               $pagination-color !default;
+$pagination-hover-bg:                  $pagination-bg !default;
+$pagination-hover-border:              $pagination-border !default;
+
+$pagination-active-color:              #fff !default;
+$pagination-active-bg:                 $brand-primary !default;
+$pagination-active-border:             $btn-primary-border !default;
+
+$pagination-disabled-color:            $gray-light !default;
+$pagination-disabled-bg:               $pagination-bg !default;
+$pagination-disabled-border:           $pagination-border !default;
+
+
+//== Pager
+//
+//##
+
+$pager-bg:                             $pagination-bg !default;
+$pager-border:                         $pagination-border !default;
+$pager-border-radius:                  15px !default;
+
+$pager-hover-bg:                       $pagination-hover-bg !default;
+
+$pager-active-bg:                      $pagination-active-bg !default;
+$pager-active-color:                   $pagination-active-color !default;
+
+$pager-disabled-color:                 $pagination-disabled-color !default;
+
+
+//== Jumbotron
+//
+//##
+
+$jumbotron-padding:              30px !default;
+$jumbotron-color:                inherit !default;
+$jumbotron-bg:                   #fafafa !default;
+$jumbotron-heading-color:        inherit !default;
+$jumbotron-font-size:            ceil(($font-size-base * 1.5)) !default;
+$jumbotron-heading-font-size:    ceil(($font-size-base * 4.5)) !default;
+
+
+//== Form states and alerts
+//
+//## Define colors for form feedback states and, by default, alerts.
+
+$state-success-text:             #fff !default;
+$state-success-bg:               $brand-success !default;
+$state-success-border:           darken($state-success-bg, 4%) !default;
+
+$state-info-text:                #fff !default;
+$state-info-bg:                  $brand-info !default;
+$state-info-border:              darken($state-info-bg, 12%) !default;
+
+$state-warning-text:             #fff !default;
+$state-warning-bg:               $brand-warning !default;
+$state-warning-border:           darken($state-warning-bg, 5%) !default;
+
+$state-danger-text:              #fff !default;
+$state-danger-bg:                $brand-danger !default;
+$state-danger-border:            darken($state-danger-bg, 10%) !default;
+
+
+//== Tooltips
+//
+//##
+
+//** Tooltip max width
+$tooltip-max-width:           200px !default;
+//** Tooltip text color
+$tooltip-color:               #fff !default;
+//** Tooltip background color
+$tooltip-bg:                  #000 !default;
+$tooltip-opacity:             .9 !default;
+
+//** Tooltip arrow width
+$tooltip-arrow-width:         5px !default;
+//** Tooltip arrow color
+$tooltip-arrow-color:         $tooltip-bg !default;
+
+
+//== Popovers
+//
+//##
+
+//** Popover body background color
+$popover-bg:                          #fff !default;
+//** Popover maximum width
+$popover-max-width:                   276px !default;
+//** Popover border color
+$popover-border-color:                rgba(0,0,0,.2) !default;
+//** Popover fallback border color
+$popover-fallback-border-color:       #ccc !default;
+
+//** Popover title background color
+$popover-title-bg:                    darken($popover-bg, 3%) !default;
+
+//** Popover arrow width
+$popover-arrow-width:                 10px !default;
+//** Popover arrow color
+$popover-arrow-color:                 $popover-bg !default;
+
+//** Popover outer arrow width
+$popover-arrow-outer-width:           ($popover-arrow-width + 1) !default;
+//** Popover outer arrow color
+$popover-arrow-outer-color:           fadein($popover-border-color, 5%) !default;
+//** Popover outer arrow fallback color
+$popover-arrow-outer-fallback-color:  darken($popover-fallback-border-color, 20%) !default;
+
+
+//== Labels
+//
+//##
+
+//** Default label background color
+$label-default-bg:            $gray-light !default;
+//** Primary label background color
+$label-primary-bg:            $brand-primary !default;
+//** Success label background color
+$label-success-bg:            $brand-success !default;
+//** Info label background color
+$label-info-bg:               $brand-info !default;
+//** Warning label background color
+$label-warning-bg:            $brand-warning !default;
+//** Danger label background color
+$label-danger-bg:             $brand-danger !default;
+
+//** Default label text color
+$label-color:                 #fff !default;
+//** Default text color of a linked label
+$label-link-hover-color:      #fff !default;
+
+
+//== Modals
+//
+//##
+
+//** Padding applied to the modal body
+$modal-inner-padding:         20px !default;
+
+//** Padding applied to the modal title
+$modal-title-padding:         15px !default;
+//** Modal title line-height
+$modal-title-line-height:     $line-height-base !default;
+
+//** Background color of modal content area
+$modal-content-bg:                             #fff !default;
+//** Modal content border color
+$modal-content-border-color:                   rgba(0,0,0,.05) !default;
+//** Modal content border color **for IE8**
+$modal-content-fallback-border-color:          $gray-lighter !default;
+
+//** Modal backdrop background color
+$modal-backdrop-bg:           #000 !default;
+//** Modal backdrop opacity
+$modal-backdrop-opacity:      .5 !default;
+//** Modal header border color
+$modal-header-border-color:   #e5e5e5 !default;
+//** Modal footer border color
+$modal-footer-border-color:   $modal-header-border-color !default;
+
+$modal-lg:                    900px !default;
+$modal-md:                    600px !default;
+$modal-sm:                    300px !default;
+
+
+//== Alerts
+//
+//## Define alert colors, border radius, and padding.
+
+$alert-padding:               15px !default;
+$alert-border-radius:         $border-radius-base !default;
+$alert-link-font-weight:      bold !default;
+
+$alert-success-bg:            $state-success-bg !default;
+$alert-success-text:          $state-success-text !default;
+$alert-success-border:        $state-success-border !default;
+
+$alert-info-bg:               $state-info-bg !default;
+$alert-info-text:             $state-info-text !default;
+$alert-info-border:           $state-info-border !default;
+
+$alert-warning-bg:            $state-warning-bg !default;
+$alert-warning-text:          $state-warning-text !default;
+$alert-warning-border:        $state-warning-border !default;
+
+$alert-danger-bg:             $state-danger-bg !default;
+$alert-danger-text:           $state-danger-text !default;
+$alert-danger-border:         $state-danger-border !default;
+
+
+//== Progress bars
+//
+//##
+
+//** Background color of the whole progress component
+$progress-bg:                 $jumbotron-bg !default;
+//** Progress bar text color
+$progress-bar-color:          #fff !default;
+//** Variable for setting rounded corners on progress bar.
+$progress-border-radius:      $border-radius-base !default;
+
+//** Default progress bar color
+$progress-bar-bg:             $brand-primary !default;
+//** Success progress bar color
+$progress-bar-success-bg:     $brand-success !default;
+//** Warning progress bar color
+$progress-bar-warning-bg:     $brand-warning !default;
+//** Danger progress bar color
+$progress-bar-danger-bg:      $brand-danger !default;
+//** Info progress bar color
+$progress-bar-info-bg:        $brand-info !default;
+
+
+//== List group
+//
+//##
+
+//** Background color on `.list-group-item`
+$list-group-bg:                 #fff !default;
+//** `.list-group-item` border color
+$list-group-border:             $gray-lighter !default;
+//** List group border radius
+$list-group-border-radius:      $border-radius-base !default;
+
+//** Background color of single list items on hover
+$list-group-hover-bg:           #f5f5f5 !default;
+//** Text color of active list items
+$list-group-active-color:       $component-active-color !default;
+//** Background color of active list elements
+$list-group-active-bg:          $component-active-bg !default;
+//** Background color of active list items
+$list-group-active-border:      $list-group-active-bg !default;
+//** Text color for content within active list items
+$list-group-active-text-color:  lighten($list-group-active-bg, 40%) !default;
+
+//** Text color of disabled list items
+$list-group-disabled-color:      $gray-light !default;
+//** Background color of disabled list items
+$list-group-disabled-bg:         $gray-lighter !default;
+//** Text color for content within disabled list items
+$list-group-disabled-text-color: $list-group-disabled-color !default;
+
+$list-group-link-color:         #555 !default;
+$list-group-link-hover-color:   $list-group-link-color !default;
+$list-group-link-heading-color: #333 !default;
+
+
+//== Panels
+//
+//##
+
+$panel-bg:                    #fff !default;
+$panel-body-padding:          15px !default;
+$panel-heading-padding:       10px 15px !default;
+$panel-footer-padding:        $panel-heading-padding !default;
+$panel-border-radius:         $border-radius-base !default;
+
+//** Border color for elements within panels
+$panel-inner-border:          transparent !default;
+$panel-footer-bg:             #f5f5f5 !default;
+
+$panel-default-text:          $gray-dark !default;
+$panel-default-border:        transparent !default;
+$panel-default-heading-bg:    #f5f5f5 !default;
+
+$panel-primary-text:          #fff !default;
+$panel-primary-border:        transparent !default;
+$panel-primary-heading-bg:    $brand-primary !default;
+
+$panel-success-text:          $state-success-text !default;
+$panel-success-border:        transparent !default;
+$panel-success-heading-bg:    $state-success-bg !default;
+
+$panel-info-text:             $state-info-text !default;
+$panel-info-border:           transparent !default;
+$panel-info-heading-bg:       $state-info-bg !default;
+
+$panel-warning-text:          $state-warning-text !default;
+$panel-warning-border:        transparent !default;
+$panel-warning-heading-bg:    $state-warning-bg !default;
+
+$panel-danger-text:           $state-danger-text !default;
+$panel-danger-border:         transparent !default;
+$panel-danger-heading-bg:     $state-danger-bg !default;
+
+
+//== Thumbnails
+//
+//##
+
+//** Padding around the thumbnail image
+$thumbnail-padding:           4px !default;
+//** Thumbnail background color
+$thumbnail-bg:                $body-bg !default;
+//** Thumbnail border color
+$thumbnail-border:            $gray-lighter !default;
+//** Thumbnail border radius
+$thumbnail-border-radius:     $border-radius-base !default;
+
+//** Custom text color for thumbnail captions
+$thumbnail-caption-color:     $text-color !default;
+//** Padding around the thumbnail caption
+$thumbnail-caption-padding:   9px !default;
+
+
+//== Wells
+//
+//##
+
+$well-bg:                     $jumbotron-bg !default;
+$well-border:                 darken($well-bg, 7%) !default;
+
+
+//== Badges
+//
+//##
+
+$badge-color:                 #fff !default;
+//** Linked badge text color on hover
+$badge-link-hover-color:      #fff !default;
+$badge-bg:                    $brand-primary !default;
+
+//** Badge text color in active nav link
+$badge-active-color:          $link-color !default;
+//** Badge background color in active nav link
+$badge-active-bg:             #fff !default;
+
+$badge-font-weight:           normal !default;
+$badge-line-height:           1 !default;
+$badge-border-radius:         10px !default;
+
+
+//== Breadcrumbs
+//
+//##
+
+$breadcrumb-padding-vertical:   8px !default;
+$breadcrumb-padding-horizontal: 15px !default;
+//** Breadcrumb background color
+$breadcrumb-bg:                 $well-bg !default;
+//** Breadcrumb text color
+$breadcrumb-color:              $gray-light !default;
+//** Text color of current page in the breadcrumb
+$breadcrumb-active-color:       $gray-light !default;
+//** Textual separator for between breadcrumb elements
+$breadcrumb-separator:          ">" !default;
+
+
+//== Carousel
+//
+//##
+
+$carousel-text-shadow:                        0 1px 2px rgba(0,0,0,.6) !default;
+
+$carousel-control-color:                      #fff !default;
+$carousel-control-width:                      15% !default;
+$carousel-control-opacity:                    .5 !default;
+$carousel-control-font-size:                  20px !default;
+
+$carousel-indicator-active-bg:                #fff !default;
+$carousel-indicator-border-color:             #fff !default;
+
+$carousel-caption-color:                      #fff !default;
+
+
+//== Close
+//
+//##
+
+$close-font-weight:           bold !default;
+$close-color:                 #fff !default;
+$close-text-shadow:           0 1px 0 #fff !default;
+
+
+//== Code
+//
+//##
+
+$code-color:                  #c7254e !default;
+$code-bg:                     #f9f2f4 !default;
+
+$kbd-color:                   #fff !default;
+$kbd-bg:                      #333 !default;
+
+$pre-bg:                      #f5f5f5 !default;
+$pre-color:                   $gray-dark !default;
+$pre-border-color:            #ccc !default;
+$pre-scrollable-max-height:   340px !default;
+
+
+//== Type
+//
+//##
+
+//** Horizontal offset for forms and lists.
+$component-offset-horizontal: 180px !default;
+//** Text muted color
+$text-muted:                  $gray-light !default;
+//** Abbreviations and acronyms border color
+$abbr-border-color:           $gray-light !default;
+//** Headings small color
+$headings-small-color:        $gray-light !default;
+//** Blockquote small color
+$blockquote-small-color:      $gray-light !default;
+//** Blockquote font size
+$blockquote-font-size:        ($font-size-base * 1.25) !default;
+//** Blockquote border color
+$blockquote-border-color:     $gray-lighter !default;
+//** Page header border color
+$page-header-border-color:    $gray-lighter !default;
+//** Width of horizontal description list titles
+$dl-horizontal-offset:        $component-offset-horizontal !default;
+//** Point at which .dl-horizontal becomes horizontal
+$dl-horizontal-breakpoint:    $grid-float-breakpoint !default;
+//** Horizontal line color.
+$hr-border:                   $gray-lighter !default;
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/lumen/_bootswatch.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/lumen/_bootswatch.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/lumen/_bootswatch.scss	(revision 3762)
@@ -0,0 +1,523 @@
+// Lumen 3.4.1
+// Bootswatch
+// -----------------------------------------------------
+
+$web-font-path: "https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,700,400italic" !default;
+@import url($web-font-path);
+
+@mixin shadow($width: 4px){
+  border-width: 0 1px $width 1px;
+}
+
+// Navbar =====================================================================
+
+.navbar  {
+  @include shadow();
+}
+
+// Buttons ====================================================================
+
+.btn {
+  padding: ($padding-base-vertical + 2) $padding-base-horizontal $padding-base-vertical;
+  @include shadow();
+  font-size: 12px;
+  font-weight: bold;
+  text-transform: uppercase;
+
+  &:hover {
+    margin-top: 1px;
+    border-bottom-width: 3px;
+  }
+
+  &:active {
+    margin-top: 2px;
+    border-bottom-width: 2px;
+    @include box-shadow(none);
+  }
+
+  &-lg,
+  &-group-lg > .btn {
+    padding: ($padding-large-vertical + 2) $padding-large-horizontal $padding-large-vertical;
+    line-height: 15px;
+  }
+
+  &-sm,
+  &-group-sm > .btn {
+    padding: ($padding-small-vertical + 2) $padding-small-horizontal $padding-small-vertical;
+  }
+
+  &-xs,
+  &-group-xs > .btn {
+    padding: ($padding-xs-vertical + 2) $padding-xs-horizontal $padding-xs-vertical;
+  }
+
+  &-default:hover,
+  &-default:focus,
+  &-group.open .dropdown-toggle.btn-default {
+    background-color: $btn-default-bg;
+    border-color: $btn-default-border;
+  }
+
+  &-primary:hover,
+  &-primary:focus,
+  &-group.open .dropdown-toggle.btn-primary {
+    background-color: $btn-primary-bg;
+    border-color: $btn-primary-border;
+  }
+
+  &-success:hover,
+  &-success:focus,
+  &-group.open .dropdown-toggle.btn-success {
+    background-color: $btn-success-bg;
+    border-color: $btn-success-border;
+  }
+
+  &-info:hover,
+  &-info:focus,
+  &-group.open .dropdown-toggle.btn-info {
+    background-color: $btn-info-bg;
+    border-color: $btn-info-border;
+  }
+
+  &-warning:hover,
+  &-warning:focus,
+  &-group.open .dropdown-toggle.btn-warning {
+    background-color: $btn-warning-bg;
+    border-color: $btn-warning-border;
+  }
+
+  &-danger:hover,
+  &-danger:focus,
+  &-group.open .dropdown-toggle.btn-danger {
+    background-color: $btn-danger-bg;
+    border-color: $btn-danger-border;
+  }
+
+  &-group.open .dropdown-toggle {
+    @include box-shadow(none);
+  }
+}
+
+.navbar-btn {
+  &:hover {
+    margin-top: 8px
+  }
+
+  &:active {
+    margin-top: 9px
+  }
+
+  &.btn-sm {
+    &:hover {
+      margin-top: 11px
+    }
+
+    &:active {
+      margin-top: 12px
+    }
+  }
+
+  &.btn-xs {
+    &:hover {
+      margin-top: 15px
+    }
+
+    &:active {
+      margin-top: 16px
+    }
+  }
+}
+
+.btn-group-vertical {
+  .btn + .btn {
+    &:hover {
+      border-top-width: 1px;
+    }
+
+    &:active {
+      border-top-width: 2px;
+    }
+  }
+}
+
+// Typography =================================================================
+
+.text-primary,
+.text-primary:hover {
+  color: $brand-primary;
+}
+
+.text-success,
+.text-success:hover {
+  color: $brand-success;
+}
+
+.text-danger,
+.text-danger:hover {
+  color: $brand-danger;
+}
+
+.text-warning,
+.text-warning:hover {
+  color: $brand-warning;
+}
+
+.text-info,
+.text-info:hover {
+  color: $brand-info;
+}
+
+// Tables =====================================================================
+
+table,
+.table {
+
+  a:not(.btn) {
+    text-decoration: underline;
+  }
+
+  .dropdown-menu a {
+    text-decoration: none;
+  }
+
+  .success,
+  .warning,
+  .danger,
+  .info {
+    color: #fff;
+
+    a:not(.btn) {
+      color: #fff;
+    }
+  }
+
+  &:not(.table-bordered) {
+    > thead > tr > th,
+    > tbody > tr > th,
+    > tfoot > tr > th,
+    > thead > tr > td,
+    > tbody > tr > td,
+    > tfoot > tr > td {
+      border-color: transparent;
+    }
+  }
+}
+
+// Forms ======================================================================
+
+.form-control {
+  @include box-shadow(inset 0 2px 0 rgba(0, 0, 0, 0.075));
+}
+
+label {
+  font-weight: normal;
+}
+
+.has-warning {
+  .help-block,
+  .control-label,
+  .radio,
+  .checkbox,
+  .radio-inline,
+  .checkbox-inline,
+  &.radio label,
+  &.checkbox label,
+  &.radio-inline label,
+  &.checkbox-inline label,
+  .form-control-feedback {
+    color: $brand-warning;
+  }
+
+  .form-control,
+  .form-control:focus {
+    border: 1px solid $brand-warning;
+    @include box-shadow(inset 0 2px 0 rgba(0, 0, 0, 0.075));
+  }
+
+  .input-group-addon {
+    border: 1px solid $brand-warning;
+  }
+}
+
+.has-error {
+  .help-block,
+  .control-label,
+  .radio,
+  .checkbox,
+  .radio-inline,
+  .checkbox-inline,
+  &.radio label,
+  &.checkbox label,
+  &.radio-inline label,
+  &.checkbox-inline label,
+  .form-control-feedback {
+    color: $brand-danger;
+  }
+
+  .form-control,
+  .form-control:focus {
+    border: 1px solid $brand-danger;
+    @include box-shadow(inset 0 2px 0 rgba(0, 0, 0, 0.075));
+  }
+
+  .input-group-addon {
+    border: 1px solid $brand-danger;
+  }
+}
+
+.has-success {
+  .help-block,
+  .control-label,
+  .radio,
+  .checkbox,
+  .radio-inline,
+  .checkbox-inline,
+  &.radio label,
+  &.checkbox label,
+  &.radio-inline label,
+  &.checkbox-inline label,
+  .form-control-feedback {
+    color: $brand-success;
+  }
+
+  .form-control,
+  .form-control:focus {
+    border: 1px solid $brand-success;
+    @include box-shadow(inset 0 2px 0 rgba(0, 0, 0, 0.075));
+  }
+
+  .input-group-addon {
+    border: 1px solid $brand-success;
+  }
+}
+
+// Navs =======================================================================
+
+.nav {
+  .open > a,
+  .open > a:hover,
+  .open > a:focus {
+    border-color: transparent;
+  }
+}
+
+.nav-tabs {
+
+  > li > a {
+    margin-top: 6px;
+    border-color: $navbar-default-border;
+    color: $gray-dark;
+    @include transition(all 0.2s ease-in-out);
+  }
+
+  > li > a:hover,
+  > li > a:focus,
+  > li.active > a,
+  > li.active > a:hover,
+  > li.active > a:focus,
+  .open > a,
+  .open > a:hover,
+  .open > a:focus {
+    padding-bottom: ($padding-large-vertical + 3);
+    margin-top: 0;
+  }
+
+  .open > a,
+  .open > a:hover,
+  .open > a:focus {
+    border-color: $navbar-default-border;
+  }
+
+  > li.disabled > a:hover,
+  > li.disabled > a:focus {
+    padding-top: 10px;
+    padding-bottom: 10px;
+    margin-top: 6px;
+  }
+
+  &.nav-justified > li {
+    vertical-align: bottom;
+  }
+}
+
+.dropdown-menu {
+  margin-top: 0;
+  @include shadow();
+  border-top-width: 1px;
+  @include box-shadow(none);
+}
+
+.breadcrumb {
+  border-color: darken($breadcrumb-bg, 5%);
+  border-style: solid;
+  @include shadow();
+}
+
+.pagination,
+.pager {
+
+  > li > a,
+  > li > span {
+    position: relative;
+    top: 0;
+    @include shadow();
+    color: $pagination-color;
+    font-size: 12px;
+    font-weight: bold;
+    text-transform: uppercase;
+
+    &:hover {
+      top: 1px;
+      border-bottom-width: 3px;
+    }
+
+    &:active {
+      top: 2px;
+      border-bottom-width: 2px;
+    }
+  }
+
+  > .disabled > a,
+  > .disabled > span {
+
+    &:hover {
+      top: 0;
+      @include shadow();
+    }
+
+    &:active {
+      top: 0;
+      @include shadow();
+    }
+  }
+}
+
+.pager {
+
+  > li > a,
+  > li > span,
+  > .disabled > a,
+  > .disabled > span {
+
+    &,
+    &:hover,
+    &:active {
+      border-left-width: 2px;
+      border-right-width: 2px;
+    }
+  }
+}
+
+// Indicators =================================================================
+
+.close {
+  color: #fff;
+  text-decoration: none;
+  opacity: 0.4;
+
+  &:hover,
+  &:focus {
+    color: #fff;
+    opacity: 1;
+  }
+}
+
+.alert {
+  @include shadow();
+
+  .alert-link {
+    font-weight: normal;
+    color: #fff;
+    text-decoration: underline;
+  }
+}
+
+.label {
+  font-weight: normal;
+}
+
+// Progress bars ==============================================================
+
+.progress {
+  border: 1px solid $navbar-default-border;
+  @include box-shadow(inset 0 2px 0 rgba(0, 0, 0, 0.1));
+
+  &-bar {
+    @include box-shadow(inset 0 -4px 0 rgba(0, 0, 0, 0.15));
+  }
+}
+
+// Containers =================================================================
+
+.well {
+  border: 1px solid $navbar-default-border;
+  @include box-shadow(inset 0 2px 0 rgba(0, 0, 0, 0.05));
+}
+
+a.list-group-item {
+
+  &.active,
+  &.active:hover,
+  &.active:focus {
+    border-color: $list-group-border;
+  }
+
+  &-success {
+    &.active {
+      background-color: $state-success-bg;
+    }
+
+    &.active:hover,
+    &.active:focus {
+      background-color: darken($state-success-bg, 5%);
+    }
+  }
+
+  &-warning {
+    &.active {
+      background-color: $state-warning-bg;
+    }
+    
+    &.active:hover,
+    &.active:focus {
+      background-color: darken($state-warning-bg, 5%);
+    }
+  }
+
+  &-danger {
+    &.active {
+      background-color: $state-danger-bg;
+    }
+    
+    &.active:hover,
+    &.active:focus {
+      background-color: darken($state-danger-bg, 5%);
+    }
+  }
+}
+
+.jumbotron {
+  border: 1px solid $navbar-default-border;
+  @include box-shadow(inset 0 2px 0 rgba(0, 0, 0, 0.05));
+}
+
+.panel {
+  border: 1px solid $navbar-default-border;
+  @include shadow();
+
+  &-default {
+    .close {
+      color: $text-color;
+    }
+  }
+}
+
+.modal {
+  .close {
+    color: $text-color;
+  }
+}
+
+.popover {
+  color: $text-color;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/simplex/font.css
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/simplex/font.css	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/simplex/font.css	(revision 3762)
@@ -0,0 +1,14 @@
+@font-face {
+  font-family: 'Open Sans';
+  font-style: normal;
+  font-weight: 400;
+  font-stretch: normal;
+  src: url(fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B4gaVQ.woff) format('woff');
+}
+@font-face {
+  font-family: 'Open Sans';
+  font-style: normal;
+  font-weight: 700;
+  font-stretch: normal;
+  src: url(fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1x4gaVQ.woff) format('woff');
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/simplex/_variables.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/simplex/_variables.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/simplex/_variables.scss	(revision 3762)
@@ -0,0 +1,870 @@
+$bootstrap-sass-asset-helper: false !default;
+// Simplex 3.4.1
+// Variables
+// --------------------------------------------------
+
+
+//== Colors
+//
+//## Gray and brand colors for use across Bootstrap.
+
+$gray-base:              #000 !default;
+$gray-darker:            lighten($gray-base, 13.5%) !default; // #222
+$gray-dark:              #444 !default;
+$gray:                   #777 !default;
+$gray-light:             #808080 !default;
+$gray-lighter:           #ddd !default;
+
+$brand-primary:         #D9230F !default;
+$brand-success:         #469408 !default;
+$brand-info:            #029ACF !default;
+$brand-warning:         #9B479F !default;
+$brand-danger:          #D9831F !default;
+
+
+//== Scaffolding
+//
+//## Settings for some of the most global styles.
+
+//** Background color for `<body>`.
+$body-bg:               #FCFCFC !default;
+//** Global text color on `<body>`.
+$text-color:            $gray !default;
+
+//** Global textual link color.
+$link-color:            $brand-primary !default;
+//** Link hover color set via `darken()` function.
+$link-hover-color:      darken($link-color, 15%) !default;
+//** Link hover decoration.
+$link-hover-decoration: underline !default;
+
+
+//== Typography
+//
+//## Font, line-height, and color for body text, headings, and more.
+
+$font-family-sans-serif:  "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif !default;
+$font-family-serif:       Georgia, "Times New Roman", Times, serif !default;
+//** Default monospace fonts for `<code>`, `<kbd>`, and `<pre>`.
+$font-family-monospace:   Menlo, Monaco, Consolas, "Courier New", monospace !default;
+$font-family-base:        $font-family-sans-serif !default;
+
+$font-size-base:          13px !default;
+$font-size-large:         ceil(($font-size-base * 1.25)) !default; // ~18px
+$font-size-small:         ceil(($font-size-base * 0.85)) !default; // ~12px
+
+$font-size-h1:            floor(($font-size-base * 2.6)) !default; // ~36px
+$font-size-h2:            floor(($font-size-base * 2.15)) !default; // ~30px
+$font-size-h3:            ceil(($font-size-base * 1.7)) !default; // ~24px
+$font-size-h4:            ceil(($font-size-base * 1.25)) !default; // ~18px
+$font-size-h5:            $font-size-base !default;
+$font-size-h6:            ceil(($font-size-base * 0.85)) !default; // ~12px
+
+//** Unit-less `line-height` for use in components like buttons.
+$line-height-base:        1.428571429 !default; // 20/14
+//** Computed "line-height" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.
+$line-height-computed:    floor(($font-size-base * $line-height-base)) !default; // ~20px
+
+//** By default, this inherits from the `<body>`.
+$headings-font-family:    $font-family-sans-serif !default;
+$headings-font-weight:    300 !default;
+$headings-line-height:    1.1 !default;
+$headings-color:          $gray-dark !default;
+
+
+//== Iconography
+//
+//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.
+
+//** Load fonts from this directory.
+$icon-font-path: if($bootstrap-sass-asset-helper, "bootstrap/", "../fonts/bootstrap/") !default;
+//** File name for all font files.
+$icon-font-name:          "glyphicons-halflings-regular" !default;
+//** Element ID within SVG icon file.
+$icon-font-svg-id:        "glyphicons_halflingsregular" !default;
+
+
+//== Components
+//
+//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).
+
+$padding-base-vertical:     8px !default;
+$padding-base-horizontal:   12px !default;
+
+$padding-large-vertical:    14px !default;
+$padding-large-horizontal:  16px !default;
+
+$padding-small-vertical:    5px !default;
+$padding-small-horizontal:  10px !default;
+
+$padding-xs-vertical:       1px !default;
+$padding-xs-horizontal:     5px !default;
+
+$line-height-large:         1.3333333 !default; // extra decimals for Win 8.1 Chrome
+$line-height-small:         1.5 !default;
+
+$border-radius-base:        4px !default;
+$border-radius-large:       6px !default;
+$border-radius-small:       3px !default;
+
+//** Global color for active items (e.g., navs or dropdowns).
+$component-active-color:    #fff !default;
+//** Global background color for active items (e.g., navs or dropdowns).
+$component-active-bg:       $brand-primary !default;
+
+//** Width of the `border` for generating carets that indicate dropdowns.
+$caret-width-base:          4px !default;
+//** Carets increase slightly in size for larger components.
+$caret-width-large:         5px !default;
+
+
+//== Tables
+//
+//## Customizes the `.table` component with basic values, each used across all table variations.
+
+//** Padding for `<th>`s and `<td>`s.
+$table-cell-padding:            8px !default;
+//** Padding for cells in `.table-condensed`.
+$table-condensed-cell-padding:  5px !default;
+
+//** Default background color used for all tables.
+$table-bg:                      transparent !default;
+//** Background color used for `.table-striped`.
+$table-bg-accent:               #f9f9f9 !default;
+//** Background color used for `.table-hover`.
+$table-bg-hover:                #f5f5f5 !default;
+$table-bg-active:               $table-bg-hover !default;
+
+//** Border color for table and cell borders.
+$table-border-color:            #ddd !default;
+
+
+//== Buttons
+//
+//## For each of Bootstrap's buttons, define text, background and border color.
+
+$btn-font-weight:                normal !default;
+
+$btn-default-color:              #fff !default;
+$btn-default-bg:                 #474949 !default;
+$btn-default-border:             $btn-default-bg !default;
+
+$btn-primary-color:              $btn-default-color !default;
+$btn-primary-bg:                 $brand-primary !default;
+$btn-primary-border:             $btn-primary-bg !default;
+
+$btn-success-color:              $btn-default-color !default;
+$btn-success-bg:                 $brand-success !default;
+$btn-success-border:             $btn-success-bg !default;
+
+$btn-info-color:                 $btn-default-color !default;
+$btn-info-bg:                    $brand-info !default;
+$btn-info-border:                $btn-info-bg !default;
+
+$btn-warning-color:              $btn-default-color !default;
+$btn-warning-bg:                 $brand-warning !default;
+$btn-warning-border:             $btn-warning-bg !default;
+
+$btn-danger-color:               $btn-default-color !default;
+$btn-danger-bg:                  $brand-danger !default;
+$btn-danger-border:              $btn-danger-bg !default;
+
+$btn-link-disabled-color:        $gray-light !default;
+
+// Allows for customizing button radius independently from global border radius
+$btn-border-radius-base:         $border-radius-base !default;
+$btn-border-radius-large:        $border-radius-large !default;
+$btn-border-radius-small:        $border-radius-small !default;
+
+
+//== Forms
+//
+//##
+
+//** `<input>` background color
+$input-bg:                       #fff !default;
+//** `<input disabled>` background color
+$input-bg-disabled:              $gray-lighter !default;
+
+//** Text color for `<input>`s
+$input-color:                    $text-color !default;
+//** `<input>` border color
+$input-border:                   #ddd !default;
+
+// TODO: Rename `$input-border-radius` to `$input-border-radius-base` in v4
+//** Default `.form-control` border radius
+// This has no effect on `<select>`s in some browsers, due to the limited stylability of `<select>`s in CSS.
+$input-border-radius:            $border-radius-base !default;
+//** Large `.form-control` border radius
+$input-border-radius-large:      $border-radius-large !default;
+//** Small `.form-control` border radius
+$input-border-radius-small:      $border-radius-small !default;
+
+//** Border color for inputs on focus
+$input-border-focus:             #66afe9 !default;
+
+//** Placeholder text color
+$input-color-placeholder:        $gray-lighter !default;
+
+//** Default `.form-control` height
+$input-height-base:              ($line-height-computed + ($padding-base-vertical * 2) + 2) !default;
+//** Large `.form-control` height
+$input-height-large:             (ceil($font-size-large * $line-height-large) + ($padding-large-vertical * 2) + 2) !default;
+//** Small `.form-control` height
+$input-height-small:             (floor($font-size-small * $line-height-small) + ($padding-small-vertical * 2) + 2) !default;
+
+//** `.form-group` margin
+$form-group-margin-bottom:       15px !default;
+
+$legend-color:                   $text-color !default;
+$legend-border-color:            #e5e5e5 !default;
+
+//** Background color for textual input addons
+$input-group-addon-bg:           $gray-lighter !default;
+//** Border color for textual input addons
+$input-group-addon-border-color: $input-border !default;
+
+//** Disabled cursor for form controls and buttons.
+$cursor-disabled:                not-allowed !default;
+
+
+//== Dropdowns
+//
+//## Dropdown menu container and contents.
+
+//** Background for the dropdown menu.
+$dropdown-bg:                    #fff !default;
+//** Dropdown menu `border-color`.
+$dropdown-border:                rgba(0,0,0,.15) !default;
+//** Dropdown menu `border-color` **for IE8**.
+$dropdown-fallback-border:       #ccc !default;
+//** Divider color for between dropdown items.
+$dropdown-divider-bg:            #e5e5e5 !default;
+
+//** Dropdown link text color.
+$dropdown-link-color:            $gray-dark !default;
+//** Hover color for dropdown links.
+$dropdown-link-hover-color:      #fff !default;
+//** Hover background for dropdown links.
+$dropdown-link-hover-bg:         $component-active-bg !default;
+
+//** Active dropdown menu item text color.
+$dropdown-link-active-color:     #fff !default;
+//** Active dropdown menu item background color.
+$dropdown-link-active-bg:        $component-active-bg !default;
+
+//** Disabled dropdown menu item background color.
+$dropdown-link-disabled-color:   $gray-light !default;
+
+//** Text color for headers within dropdown menus.
+$dropdown-header-color:          $gray-light !default;
+
+//** Deprecated `$dropdown-caret-color` as of v3.1.0
+$dropdown-caret-color:           #000 !default;
+
+
+//-- Z-index master list
+//
+// Warning: Avoid customizing these values. They're used for a bird's eye view
+// of components dependent on the z-axis and are designed to all work together.
+//
+// Note: These variables are not generated into the Customizer.
+
+$zindex-navbar:            1000 !default;
+$zindex-dropdown:          1000 !default;
+$zindex-popover:           1060 !default;
+$zindex-tooltip:           1070 !default;
+$zindex-navbar-fixed:      1030 !default;
+$zindex-modal-background:  1040 !default;
+$zindex-modal:             1050 !default;
+
+
+//== Media queries breakpoints
+//
+//## Define the breakpoints at which your layout will change, adapting to different screen sizes.
+
+// Extra small screen / phone
+//** Deprecated `$screen-xs` as of v3.0.1
+$screen-xs:                  480px !default;
+//** Deprecated `$screen-xs-min` as of v3.2.0
+$screen-xs-min:              $screen-xs !default;
+//** Deprecated `$screen-phone` as of v3.0.1
+$screen-phone:               $screen-xs-min !default;
+
+// Small screen / tablet
+//** Deprecated `$screen-sm` as of v3.0.1
+$screen-sm:                  768px !default;
+$screen-sm-min:              $screen-sm !default;
+//** Deprecated `$screen-tablet` as of v3.0.1
+$screen-tablet:              $screen-sm-min !default;
+
+// Medium screen / desktop
+//** Deprecated `$screen-md` as of v3.0.1
+$screen-md:                  992px !default;
+$screen-md-min:              $screen-md !default;
+//** Deprecated `$screen-desktop` as of v3.0.1
+$screen-desktop:             $screen-md-min !default;
+
+// Large screen / wide desktop
+//** Deprecated `$screen-lg` as of v3.0.1
+$screen-lg:                  1200px !default;
+$screen-lg-min:              $screen-lg !default;
+//** Deprecated `$screen-lg-desktop` as of v3.0.1
+$screen-lg-desktop:          $screen-lg-min !default;
+
+// So media queries don't overlap when required, provide a maximum
+$screen-xs-max:              ($screen-sm-min - 1) !default;
+$screen-sm-max:              ($screen-md-min - 1) !default;
+$screen-md-max:              ($screen-lg-min - 1) !default;
+
+
+//== Grid system
+//
+//## Define your custom responsive grid.
+
+//** Number of columns in the grid.
+$grid-columns:              12 !default;
+//** Padding between columns. Gets divided in half for the left and right.
+$grid-gutter-width:         30px !default;
+// Navbar collapse
+//** Point at which the navbar becomes uncollapsed.
+$grid-float-breakpoint:     $screen-sm-min !default;
+//** Point at which the navbar begins collapsing.
+$grid-float-breakpoint-max: ($grid-float-breakpoint - 1) !default;
+
+
+//== Container sizes
+//
+//## Define the maximum width of `.container` for different screen sizes.
+
+// Small screen / tablet
+$container-tablet:             (720px + $grid-gutter-width) !default;
+//** For `$screen-sm-min` and up.
+$container-sm:                 $container-tablet !default;
+
+// Medium screen / desktop
+$container-desktop:            (940px + $grid-gutter-width) !default;
+//** For `$screen-md-min` and up.
+$container-md:                 $container-desktop !default;
+
+// Large screen / wide desktop
+$container-large-desktop:      (1140px + $grid-gutter-width) !default;
+//** For `$screen-lg-min` and up.
+$container-lg:                 $container-large-desktop !default;
+
+
+//== Navbar
+//
+//##
+
+// Basics of a navbar
+$navbar-height:                    40px !default;
+$navbar-margin-bottom:             $line-height-computed !default;
+$navbar-border-radius:             $border-radius-base !default;
+$navbar-padding-horizontal:        floor(($grid-gutter-width / 2)) !default;
+$navbar-padding-vertical:          (($navbar-height - $line-height-computed) / 2) !default;
+$navbar-collapse-max-height:       340px !default;
+
+$navbar-default-color:             $gray !default;
+$navbar-default-bg:                #fff !default;
+$navbar-default-border:            darken($navbar-default-bg, 6.5%) !default;
+
+// Navbar links
+$navbar-default-link-color:                $gray !default;
+$navbar-default-link-hover-color:          $brand-primary !default;
+$navbar-default-link-hover-bg:             transparent !default;
+$navbar-default-link-active-color:         $navbar-default-link-hover-color !default;
+$navbar-default-link-active-bg:            transparent !default;
+$navbar-default-link-disabled-color:       #444 !default;
+$navbar-default-link-disabled-bg:          transparent !default;
+
+// Navbar brand label
+$navbar-default-brand-color:               $navbar-default-link-color !default;
+$navbar-default-brand-hover-color:         $navbar-default-link-hover-color !default;
+$navbar-default-brand-hover-bg:            transparent !default;
+
+// Navbar toggle
+$navbar-default-toggle-hover-bg:           #ddd !default;
+$navbar-default-toggle-icon-bar-bg:        #ccc !default;
+$navbar-default-toggle-border-color:       #ddd !default;
+
+
+//=== Inverted navbar
+// Reset inverted navbar basics
+$navbar-inverse-color:                      lighten($brand-primary, 40%) !default;
+$navbar-inverse-bg:                         $brand-primary !default;
+$navbar-inverse-border:                     darken($navbar-inverse-bg, 10%) !default;
+
+// Inverted navbar links
+$navbar-inverse-link-color:                 lighten($brand-primary, 40%) !default;
+$navbar-inverse-link-hover-color:           #fff !default;
+$navbar-inverse-link-hover-bg:              transparent !default;
+$navbar-inverse-link-active-color:          $navbar-inverse-link-hover-color !default;
+$navbar-inverse-link-active-bg:             transparent !default;
+$navbar-inverse-link-disabled-color:        #ccc !default;
+$navbar-inverse-link-disabled-bg:           transparent !default;
+
+// Inverted navbar brand label
+$navbar-inverse-brand-color:                $navbar-inverse-link-color !default;
+$navbar-inverse-brand-hover-color:          #fff !default;
+$navbar-inverse-brand-hover-bg:             transparent !default;
+
+// Inverted navbar toggle
+$navbar-inverse-toggle-hover-bg:            darken($navbar-inverse-bg, 10%) !default;
+$navbar-inverse-toggle-icon-bar-bg:         #fff !default;
+$navbar-inverse-toggle-border-color:        darken($navbar-inverse-bg, 10%) !default;
+
+
+//== Navs
+//
+//##
+
+//=== Shared nav styles
+$nav-link-padding:                          10px 15px !default;
+$nav-link-hover-bg:                         $gray-lighter !default;
+
+$nav-disabled-link-color:                   $gray-light !default;
+$nav-disabled-link-hover-color:             $gray-light !default;
+
+//== Tabs
+$nav-tabs-border-color:                     #ddd !default;
+
+$nav-tabs-link-hover-border-color:          $gray-lighter !default;
+
+$nav-tabs-active-link-hover-bg:             $body-bg !default;
+$nav-tabs-active-link-hover-color:          $gray !default;
+$nav-tabs-active-link-hover-border-color:   #ddd !default;
+
+$nav-tabs-justified-link-border-color:            #ddd !default;
+$nav-tabs-justified-active-link-border-color:     $body-bg !default;
+
+//== Pills
+$nav-pills-border-radius:                   $border-radius-base !default;
+$nav-pills-active-link-hover-bg:            $component-active-bg !default;
+$nav-pills-active-link-hover-color:         $component-active-color !default;
+
+
+//== Pagination
+//
+//##
+
+$pagination-color:                     $headings-color !default;
+$pagination-bg:                        #fff !default;
+$pagination-border:                    #ddd !default;
+
+$pagination-hover-color:               #fff !default;
+$pagination-hover-bg:                  $brand-primary !default;
+$pagination-hover-border:              $brand-primary !default;
+
+$pagination-active-color:              #fff !default;
+$pagination-active-bg:                 $brand-primary !default;
+$pagination-active-border:             $brand-primary !default;
+
+$pagination-disabled-color:            $gray-lighter !default;
+$pagination-disabled-bg:               #fff !default;
+$pagination-disabled-border:           #ddd !default;
+
+
+//== Pager
+//
+//##
+
+$pager-bg:                             $pagination-bg !default;
+$pager-border:                         $pagination-border !default;
+$pager-border-radius:                  15px !default;
+
+$pager-hover-bg:                       $brand-primary !default;
+
+$pager-active-bg:                      $brand-primary !default;
+$pager-active-color:                   #fff !default;
+
+$pager-disabled-color:                 $gray-lighter !default;
+
+
+//== Jumbotron
+//
+//##
+
+$jumbotron-padding:              30px !default;
+$jumbotron-color:                inherit !default;
+$jumbotron-bg:                   darken($body-bg, 3%) !default;
+$jumbotron-heading-color:        inherit !default;
+$jumbotron-font-size:            ceil(($font-size-base * 1.5)) !default;
+$jumbotron-heading-font-size:    ceil(($font-size-base * 4.5)) !default;
+
+
+//== Form states and alerts
+//
+//## Define colors for form feedback states and, by default, alerts.
+
+$state-success-text:             #468847 !default;
+$state-success-bg:               #dff0d8 !default;
+$state-success-border:           darken(adjust-hue($state-success-bg, -10), 5%) !default;
+
+$state-info-text:                #3a87ad !default;
+$state-info-bg:                  #d9edf7 !default;
+$state-info-border:              darken(adjust-hue($state-info-bg, -10), 7%) !default;
+
+$state-warning-text:             #c09853 !default;
+$state-warning-bg:               #fcf8e3 !default;
+$state-warning-border:           darken(adjust-hue($state-warning-bg, -10), 3%) !default;
+
+$state-danger-text:              #b94a48 !default;
+$state-danger-bg:                #f2dede !default;
+$state-danger-border:            darken(adjust-hue($state-danger-bg, -10), 3%) !default;
+
+
+//== Tooltips
+//
+//##
+
+//** Tooltip max width
+$tooltip-max-width:           200px !default;
+//** Tooltip text color
+$tooltip-color:               #fff !default;
+//** Tooltip background color
+$tooltip-bg:                  #000 !default;
+$tooltip-opacity:             .9 !default;
+
+//** Tooltip arrow width
+$tooltip-arrow-width:         5px !default;
+//** Tooltip arrow color
+$tooltip-arrow-color:         $tooltip-bg !default;
+
+
+//== Popovers
+//
+//##
+
+//** Popover body background color
+$popover-bg:                          #fff !default;
+//** Popover maximum width
+$popover-max-width:                   276px !default;
+//** Popover border color
+$popover-border-color:                rgba(0,0,0,.2) !default;
+//** Popover fallback border color
+$popover-fallback-border-color:       #ccc !default;
+
+//** Popover title background color
+$popover-title-bg:                    darken($popover-bg, 3%) !default;
+
+//** Popover arrow width
+$popover-arrow-width:                 10px !default;
+//** Popover arrow color
+$popover-arrow-color:                 $popover-bg !default;
+
+//** Popover outer arrow width
+$popover-arrow-outer-width:           ($popover-arrow-width + 1) !default;
+//** Popover outer arrow color
+$popover-arrow-outer-color:           fadein($popover-border-color, 5%) !default;
+//** Popover outer arrow fallback color
+$popover-arrow-outer-fallback-color:  darken($popover-fallback-border-color, 20%) !default;
+
+
+//== Labels
+//
+//##
+
+//** Default label background color
+$label-default-bg:            $btn-default-bg !default;
+//** Primary label background color
+$label-primary-bg:            $brand-primary !default;
+//** Success label background color
+$label-success-bg:            $brand-success !default;
+//** Info label background color
+$label-info-bg:               $brand-info !default;
+//** Warning label background color
+$label-warning-bg:            $brand-warning !default;
+//** Danger label background color
+$label-danger-bg:             $brand-danger !default;
+
+//** Default label text color
+$label-color:                 #fff !default;
+//** Default text color of a linked label
+$label-link-hover-color:      #fff !default;
+
+
+//== Modals
+//
+//##
+
+//** Padding applied to the modal body
+$modal-inner-padding:         20px !default;
+
+//** Padding applied to the modal title
+$modal-title-padding:         15px !default;
+//** Modal title line-height
+$modal-title-line-height:     $line-height-base !default;
+
+//** Background color of modal content area
+$modal-content-bg:                             #fff !default;
+//** Modal content border color
+$modal-content-border-color:                   rgba(0,0,0,.2) !default;
+//** Modal content border color **for IE8**
+$modal-content-fallback-border-color:          #999 !default;
+
+//** Modal backdrop background color
+$modal-backdrop-bg:           #000 !default;
+//** Modal backdrop opacity
+$modal-backdrop-opacity:      .5 !default;
+//** Modal header border color
+$modal-header-border-color:   #e5e5e5 !default;
+//** Modal footer border color
+$modal-footer-border-color:   $modal-header-border-color !default;
+
+$modal-lg:                    900px !default;
+$modal-md:                    600px !default;
+$modal-sm:                    300px !default;
+
+
+//== Alerts
+//
+//## Define alert colors, border radius, and padding.
+
+$alert-padding:               15px !default;
+$alert-border-radius:         $border-radius-base !default;
+$alert-link-font-weight:      bold !default;
+
+$alert-success-bg:            $state-success-bg !default;
+$alert-success-text:          $state-success-text !default;
+$alert-success-border:        $state-success-border !default;
+
+$alert-info-bg:               $state-info-bg !default;
+$alert-info-text:             $state-info-text !default;
+$alert-info-border:           $state-info-border !default;
+
+$alert-warning-bg:            $state-warning-bg !default;
+$alert-warning-text:          $state-warning-text !default;
+$alert-warning-border:        $state-warning-border !default;
+
+$alert-danger-bg:             $state-danger-bg !default;
+$alert-danger-text:           $state-danger-text !default;
+$alert-danger-border:         $state-danger-border !default;
+
+
+//== Progress bars
+//
+//##
+
+//** Background color of the whole progress component
+$progress-bg:                 #f5f5f5 !default;
+//** Progress bar text color
+$progress-bar-color:          #fff !default;
+//** Variable for setting rounded corners on progress bar.
+$progress-border-radius:      $border-radius-base !default;
+
+//** Default progress bar color
+$progress-bar-bg:             $brand-primary !default;
+//** Success progress bar color
+$progress-bar-success-bg:     $brand-success !default;
+//** Warning progress bar color
+$progress-bar-warning-bg:     $brand-warning !default;
+//** Danger progress bar color
+$progress-bar-danger-bg:      $brand-danger !default;
+//** Info progress bar color
+$progress-bar-info-bg:        $brand-info !default;
+
+
+//== List group
+//
+//##
+
+//** Background color on `.list-group-item`
+$list-group-bg:                 #fff !default;
+//** `.list-group-item` border color
+$list-group-border:             #ddd !default;
+//** List group border radius
+$list-group-border-radius:      $border-radius-base !default;
+
+//** Background color of single list items on hover
+$list-group-hover-bg:           #f5f5f5 !default;
+//** Text color of active list items
+$list-group-active-color:       $component-active-color !default;
+//** Background color of active list items
+$list-group-active-bg:          $component-active-bg !default;
+//** Border color of active list elements
+$list-group-active-border:      $list-group-active-bg !default;
+//** Text color for content within active list items
+$list-group-active-text-color:  lighten($list-group-active-bg, 40%) !default;
+
+//** Text color of disabled list items
+$list-group-disabled-color:      $gray-light !default;
+//** Background color of disabled list items
+$list-group-disabled-bg:         $gray-lighter !default;
+//** Text color for content within disabled list items
+$list-group-disabled-text-color: $list-group-disabled-color !default;
+
+$list-group-link-color:         #555 !default;
+$list-group-link-hover-color:   $list-group-link-color !default;
+$list-group-link-heading-color: #333 !default;
+
+
+//== Panels
+//
+//##
+
+$panel-bg:                    #fff !default;
+$panel-body-padding:          15px !default;
+$panel-heading-padding:       10px 15px !default;
+$panel-footer-padding:        $panel-heading-padding !default;
+$panel-border-radius:         $border-radius-base !default;
+
+//** Border color for elements within panels
+$panel-inner-border:          #ddd !default;
+$panel-footer-bg:             $body-bg !default;
+
+$panel-default-text:          $gray-dark !default;
+$panel-default-border:        #ddd !default;
+$panel-default-heading-bg:    $panel-footer-bg !default;
+
+$panel-primary-text:          #fff !default;
+$panel-primary-border:        $brand-primary !default;
+$panel-primary-heading-bg:    $brand-primary !default;
+
+$panel-success-text:          #fff !default;
+$panel-success-border:        $brand-success !default;
+$panel-success-heading-bg:    $brand-success !default;
+
+$panel-info-text:             #fff !default;
+$panel-info-border:           $brand-info !default;
+$panel-info-heading-bg:       $brand-info !default;
+
+$panel-warning-text:          #fff !default;
+$panel-warning-border:        $brand-warning !default;
+$panel-warning-heading-bg:    $brand-warning !default;
+
+$panel-danger-text:           #fff !default;
+$panel-danger-border:         $brand-danger !default;
+$panel-danger-heading-bg:     $brand-danger !default;
+
+
+//== Thumbnails
+//
+//##
+
+//** Padding around the thumbnail image
+$thumbnail-padding:           4px !default;
+//** Thumbnail background color
+$thumbnail-bg:                $body-bg !default;
+//** Thumbnail border color
+$thumbnail-border:            #ddd !default;
+//** Thumbnail border radius
+$thumbnail-border-radius:     $border-radius-base !default;
+
+//** Custom text color for thumbnail captions
+$thumbnail-caption-color:     $text-color !default;
+//** Padding around the thumbnail caption
+$thumbnail-caption-padding:   9px !default;
+
+
+//== Wells
+//
+//##
+
+$well-bg:                     darken($body-bg, 3%) !default;
+$well-border:                 darken($well-bg, 7%) !default;
+
+
+//== Badges
+//
+//##
+
+$badge-color:                 #fff !default;
+//** Linked badge text color on hover
+$badge-link-hover-color:      #fff !default;
+$badge-bg:                    $link-color !default;
+
+//** Badge text color in active nav link
+$badge-active-color:          $link-color !default;
+//** Badge background color in active nav link
+$badge-active-bg:             #fff !default;
+
+$badge-font-weight:           bold !default;
+$badge-line-height:           1 !default;
+$badge-border-radius:         10px !default;
+
+
+//== Breadcrumbs
+//
+//##
+
+$breadcrumb-padding-vertical:   8px !default;
+$breadcrumb-padding-horizontal: 15px !default;
+//** Breadcrumb background color
+$breadcrumb-bg:                 transparent !default;
+//** Breadcrumb text color
+$breadcrumb-color:              #ccc !default;
+//** Text color of current page in the breadcrumb
+$breadcrumb-active-color:       $gray-light !default;
+//** Textual separator for between breadcrumb elements
+$breadcrumb-separator:          "/" !default;
+
+
+//== Carousel
+//
+//##
+
+$carousel-text-shadow:                        0 1px 2px rgba(0,0,0,.6) !default;
+
+$carousel-control-color:                      #fff !default;
+$carousel-control-width:                      15% !default;
+$carousel-control-opacity:                    .5 !default;
+$carousel-control-font-size:                  20px !default;
+
+$carousel-indicator-active-bg:                #fff !default;
+$carousel-indicator-border-color:             #fff !default;
+
+$carousel-caption-color:                      #fff !default;
+
+
+//== Close
+//
+//##
+
+$close-font-weight:           bold !default;
+$close-color:                 #000 !default;
+$close-text-shadow:           0 1px 0 #fff !default;
+
+
+//== Code
+//
+//##
+
+$code-color:                  #c7254e !default;
+$code-bg:                     #f9f2f4 !default;
+
+$kbd-color:                   #fff !default;
+$kbd-bg:                      #333 !default;
+
+$pre-bg:                      #f5f5f5 !default;
+$pre-color:                   $gray-dark !default;
+$pre-border-color:            #ccc !default;
+$pre-scrollable-max-height:   340px !default;
+
+
+//== Type
+//
+//##
+
+//** Horizontal offset for forms and lists.
+$component-offset-horizontal: 180px !default;
+//** Text muted color
+$text-muted:                  $gray-light !default;
+//** Abbreviations and acronyms border color
+$abbr-border-color:           $gray-light !default;
+//** Headings small color
+$headings-small-color:        $gray-light !default;
+//** Blockquote small color
+$blockquote-small-color:      $gray-light !default;
+//** Blockquote font size
+$blockquote-font-size:        ($font-size-base * 1.25) !default;
+//** Blockquote border color
+$blockquote-border-color:     $gray-lighter !default;
+//** Page header border color
+$page-header-border-color:    $gray-lighter !default;
+//** Width of horizontal description list titles
+$dl-horizontal-offset:        $component-offset-horizontal !default;
+//** Point at which .dl-horizontal becomes horizontal
+$dl-horizontal-breakpoint:    $grid-float-breakpoint !default;
+//** Horizontal line color.
+$hr-border:                   $gray-lighter !default;
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/simplex/_bootswatch.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/simplex/_bootswatch.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/simplex/_bootswatch.scss	(revision 3762)
@@ -0,0 +1,170 @@
+// Simplex 3.4.1
+// Bootswatch
+// -----------------------------------------------------
+
+$web-font-path: "https://fonts.googleapis.com/css?family=Open+Sans:400,700" !default;
+@import url($web-font-path);
+
+@mixin btn-shadow($color){
+  @include gradient-vertical-three-colors(lighten($color, 3%), $color, 6%, darken($color, 3%));
+  filter: none;
+  border: 1px solid darken($color, 10%);
+}
+
+// Navbar =====================================================================
+
+.navbar {
+
+  &-inverse {
+
+    .badge {
+      background-color: #fff;
+      color: $brand-primary;
+    }
+  }
+}
+
+// Buttons ====================================================================
+
+.btn {
+  font-family: $headings-font-family;
+}
+
+.btn-default,
+.btn-default:hover {
+  @include btn-shadow($btn-default-bg);
+}
+
+.btn-primary,
+.btn-primary:hover {
+  @include btn-shadow($btn-primary-bg);
+}
+
+.btn-success,
+.btn-success:hover {
+  @include btn-shadow($btn-success-bg);
+}
+
+.btn-info,
+.btn-info:hover {
+  @include btn-shadow($btn-info-bg);
+}
+
+.btn-warning,
+.btn-warning:hover {
+  @include btn-shadow($btn-warning-bg);
+}
+
+.btn-danger,
+.btn-danger:hover {
+  @include btn-shadow($btn-danger-bg);
+}
+
+// Typography =================================================================
+
+body {
+  font-weight: 200;
+}
+
+// Tables =====================================================================
+
+th {
+  color: $headings-color;
+}
+
+// Forms ======================================================================
+
+legend {
+  color: $headings-color;
+}
+
+label {
+  font-weight: normal;
+}
+
+.has-warning {
+  .help-block,
+  .control-label,
+  .radio,
+  .checkbox,
+  .radio-inline,
+  .checkbox-inline,
+  &.radio label,
+  &.checkbox label,
+  &.radio-inline label,
+  &.checkbox-inline label,
+  .form-control-feedback {
+    color: $brand-danger;
+  }
+
+  .form-control,
+  .form-control:focus {
+    border-color: $brand-danger;
+  }
+}
+
+.has-error {
+  .help-block,
+  .control-label,
+  .radio,
+  .checkbox,
+  .radio-inline,
+  .checkbox-inline,
+  &.radio label,
+  &.checkbox label,
+  &.radio-inline label,
+  &.checkbox-inline label,
+  .form-control-feedback {
+    color: $brand-primary;
+  }
+
+  .form-control,
+  .form-control:focus {
+    border-color: $brand-primary;
+  }
+}
+
+.has-success {
+  .help-block,
+  .control-label,
+  .radio,
+  .checkbox,
+  .radio-inline,
+  .checkbox-inline,
+  &.radio label,
+  &.checkbox label,
+  &.radio-inline label,
+  &.checkbox-inline label,
+  .form-control-feedback {
+    color: $brand-success;
+  }
+
+  .form-control,
+  .form-control:focus {
+    border-color: $brand-success;
+  }
+}
+
+// Navs =======================================================================
+
+.pager {
+  a {
+    color: $headings-color;
+  }
+
+  a:hover,
+  .active > a, {
+    border-color: $brand-primary;
+    color: #fff;
+  }
+
+  .disabled > a {
+    border-color: $pager-border;
+  }
+}
+
+// Indicators =================================================================
+
+// Progress bars ==============================================================
+
+// Containers =================================================================
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/LICENSE
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/LICENSE	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/LICENSE	(revision 3762)
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2013 Thomas Park
+
+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.
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/cyborg/_bootswatch.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/cyborg/_bootswatch.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/cyborg/_bootswatch.scss	(revision 3762)
@@ -0,0 +1,242 @@
+// Cyborg 3.4.1
+// Bootswatch
+// -----------------------------------------------------
+
+$web-font-path: "https://fonts.googleapis.com/css?family=Roboto:400,700" !default;
+@import url($web-font-path);
+
+// Navbar =====================================================================
+
+// Buttons ====================================================================
+
+// Typography =================================================================
+
+.text-primary,
+.text-primary:hover {
+  color: $brand-primary;
+}
+
+.text-success,
+.text-success:hover {
+  color: $brand-success;
+}
+
+.text-danger,
+.text-danger:hover {
+  color: $brand-danger;
+}
+
+.text-warning,
+.text-warning:hover {
+  color: $brand-warning;
+}
+
+.text-info,
+.text-info:hover {
+  color: $brand-info;
+}
+
+.bg-success,
+.bg-info,
+.bg-warning,
+.bg-danger {
+  color: #fff;
+}
+
+// Tables =====================================================================
+
+table,
+.table {
+  color: #fff;
+
+  a:not(.btn) {
+    color: #fff;
+    text-decoration: underline;
+  }
+
+  .dropdown-menu a {
+    text-decoration: none;
+  }
+
+  .text-muted {
+    color: $text-muted;
+  }
+}
+
+.table-responsive > .table {
+  background-color: $table-bg;
+}
+
+// Forms ======================================================================
+
+.has-warning {
+  .help-block,
+  .control-label,
+  .radio,
+  .checkbox,
+  .radio-inline,
+  .checkbox-inline,
+  &.radio label,
+  &.checkbox label,
+  &.radio-inline label,
+  &.checkbox-inline label,
+  .form-control-feedback {
+    color: $brand-warning;
+  }
+
+  .form-control,
+  .form-control:focus,
+  .input-group-addon {
+    border-color: $brand-warning;
+  }
+}
+
+.has-error {
+  .help-block,
+  .control-label,
+  .radio,
+  .checkbox,
+  .radio-inline,
+  .checkbox-inline,
+  &.radio label,
+  &.checkbox label,
+  &.radio-inline label,
+  &.checkbox-inline label,
+  .form-control-feedback {
+    color: $brand-danger;
+  }
+
+  .form-control,
+  .form-control:focus,
+  .input-group-addon {
+    border-color: $brand-danger;
+  }
+}
+
+.has-success {
+  .help-block,
+  .control-label,
+  .radio,
+  .checkbox,
+  .radio-inline,
+  .checkbox-inline,
+  &.radio label,
+  &.checkbox label,
+  &.radio-inline label,
+  &.checkbox-inline label,
+  .form-control-feedback {
+    color: $brand-success;
+  }
+
+  .form-control,
+  .form-control:focus,
+  .input-group-addon {
+    border-color: $brand-success;
+  }
+}
+
+legend {
+  color: #fff;
+}
+
+.input-group-addon {
+  background-color: $btn-default-bg;
+}
+
+// Navs =======================================================================
+
+.nav-tabs,
+.nav-pills,
+.breadcrumb,
+.pager {
+
+  a {
+    color: #fff;
+  }
+}
+
+// Indicators =================================================================
+
+.alert {
+
+  .alert-link,
+  a {
+    color: $alert-warning-text;
+    text-decoration: underline;
+  }
+
+  .close {
+    text-decoration: none;
+  }
+}
+
+.close {
+  color: #fff;
+  text-decoration: none;
+  opacity: 0.4;
+
+  &:hover,
+  &:focus {
+    color: #fff;
+    opacity: 1;
+  }
+}
+
+// Progress bars ==============================================================
+
+// Containers =================================================================
+
+a.thumbnail:hover,
+a.thumbnail:focus,
+a.thumbnail.active {
+  border-color: $thumbnail-border;
+}
+
+a.list-group-item {
+
+  &.active,
+  &.active:hover,
+  &.active:focus {
+    border-color: $list-group-border;
+  }
+
+  &-success {
+    &.active {
+      background-color: $state-success-bg;
+    }
+
+    &.active:hover,
+    &.active:focus {
+      background-color: darken($state-success-bg, 5%);
+    }
+  }
+
+  &-warning {
+    &.active {
+      background-color: $state-warning-bg;
+    }
+    
+    &.active:hover,
+    &.active:focus {
+      background-color: darken($state-warning-bg, 5%);
+    }
+  }
+
+  &-danger {
+    &.active {
+      background-color: $state-danger-bg;
+    }
+    
+    &.active:hover,
+    &.active:focus {
+      background-color: darken($state-danger-bg, 5%);
+    }
+  }
+}
+
+.jumbotron {
+
+  h1, h2, h3, h4, h5, h6 {
+    color: #fff;
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/cyborg/font.css
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/cyborg/font.css	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/cyborg/font.css	(revision 3762)
@@ -0,0 +1,12 @@
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 400;
+  src: url(fonts/KFOmCnqEu92Fr1Mu4mxM.woff) format('woff');
+}
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 700;
+  src: url(fonts/KFOlCnqEu92Fr1MmWUlfBBc-.woff) format('woff');
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/cyborg/_variables.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/cyborg/_variables.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw3/cyborg/_variables.scss	(revision 3762)
@@ -0,0 +1,870 @@
+$bootstrap-sass-asset-helper: false !default;
+// Cyborg 3.4.1
+// Variables
+// --------------------------------------------------
+
+
+//== Colors
+//
+//## Gray and brand colors for use across Bootstrap.
+
+$gray-base:              #000 !default;
+$gray-darker:            #222 !default; // #222
+$gray-dark:              #282828 !default;   // #333
+$gray:                   #555 !default; // #555
+$gray-light:             #888 !default;   // #999
+$gray-lighter:           #ADAFAE !default; // #eee
+
+$brand-primary:         #2A9FD6 !default;
+$brand-success:         #77B300 !default;
+$brand-info:            #9933CC !default;
+$brand-warning:         #FF8800 !default;
+$brand-danger:          #CC0000 !default;
+
+
+//== Scaffolding
+//
+//## Settings for some of the most global styles.
+
+//** Background color for `<body>`.
+$body-bg:               #060606 !default;
+//** Global text color on `<body>`.
+$text-color:            $gray-light !default;
+
+//** Global textual link color.
+$link-color:            $brand-primary !default;
+//** Link hover color set via `darken()` function.
+$link-hover-color:      $link-color !default;
+//** Link hover decoration.
+$link-hover-decoration: underline !default;
+
+
+//== Typography
+//
+//## Font, line-height, and color for body text, headings, and more.
+
+$font-family-sans-serif:  "Roboto", "Helvetica Neue", Helvetica, Arial, sans-serif !default;
+$font-family-serif:       Georgia, "Times New Roman", Times, serif !default;
+//** Default monospace fonts for `<code>`, `<kbd>`, and `<pre>`.
+$font-family-monospace:   Menlo, Monaco, Consolas, "Courier New", monospace !default;
+$font-family-base:        $font-family-sans-serif !default;
+
+$font-size-base:          14px !default;
+$font-size-large:         ceil(($font-size-base * 1.25)) !default; // ~18px
+$font-size-small:         ceil(($font-size-base * 0.85)) !default; // ~12px
+
+$font-size-h1:            56px !default;
+$font-size-h2:            45px !default;
+$font-size-h3:            34px !default;
+$font-size-h4:            24px !default;
+$font-size-h5:            20px !default;
+$font-size-h6:            16px !default;
+
+//** Unit-less `line-height` for use in components like buttons.
+$line-height-base:        1.428571429 !default; // 20/14
+//** Computed "line-height" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.
+$line-height-computed:    floor(($font-size-base * $line-height-base)) !default; // ~20px
+
+//** By default, this inherits from the `<body>`.
+$headings-font-family:    $font-family-base !default;
+$headings-font-weight:    500 !default;
+$headings-line-height:    1.1 !default;
+$headings-color:          #fff !default;
+
+
+//== Iconography
+//
+//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.
+
+//** Load fonts from this directory.
+$icon-font-path: if($bootstrap-sass-asset-helper, "bootstrap/", "../fonts/bootstrap/") !default;
+//** File name for all font files.
+$icon-font-name:          "glyphicons-halflings-regular" !default;
+//** Element ID within SVG icon file.
+$icon-font-svg-id:        "glyphicons_halflingsregular" !default;
+
+
+//== Components
+//
+//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).
+
+$padding-base-vertical:     8px !default;
+$padding-base-horizontal:   12px !default;
+
+$padding-large-vertical:    14px !default;
+$padding-large-horizontal:  16px !default;
+
+$padding-small-vertical:    5px !default;
+$padding-small-horizontal:  10px !default;
+
+$padding-xs-vertical:       1px !default;
+$padding-xs-horizontal:     5px !default;
+
+$line-height-large:         1.3333333 !default; // extra decimals for Win 8.1 Chrome
+$line-height-small:         1.5 !default;
+
+$border-radius-base:        4px !default;
+$border-radius-large:       6px !default;
+$border-radius-small:       3px !default;
+
+//** Global color for active items (e.g., navs or dropdowns).
+$component-active-color:    #fff !default;
+//** Global background color for active items (e.g., navs or dropdowns).
+$component-active-bg:       $brand-primary !default;
+
+//** Width of the `border` for generating carets that indicate dropdowns.
+$caret-width-base:          4px !default;
+//** Carets increase slightly in size for larger components.
+$caret-width-large:         5px !default;
+
+
+//== Tables
+//
+//## Customizes the `.table` component with basic values, each used across all table variations.
+
+//** Padding for `<th>`s and `<td>`s.
+$table-cell-padding:            8px !default;
+//** Padding for cells in `.table-condensed`.
+$table-condensed-cell-padding:  5px !default;
+
+//** Default background color used for all tables.
+$table-bg:                      darken($gray-darker, 4%) !default;
+//** Background color used for `.table-striped`.
+$table-bg-accent:               darken($table-bg, 6%) !default;
+//** Background color used for `.table-hover`.
+$table-bg-hover:                $gray-dark !default;
+$table-bg-active:               $table-bg-hover !default;
+
+//** Border color for table and cell borders.
+$table-border-color:            $gray-dark !default;
+
+
+//== Buttons
+//
+//## For each of Bootstrap's buttons, define text, background and border color.
+
+$btn-font-weight:                normal !default;
+
+$btn-default-color:              #fff !default;
+$btn-default-bg:                 lighten($gray-dark, 10%) !default;
+$btn-default-border:             $btn-default-bg !default;
+
+$btn-primary-color:              $btn-default-color !default;
+$btn-primary-bg:                 $brand-primary !default;
+$btn-primary-border:             $btn-primary-bg !default;
+
+$btn-success-color:              $btn-default-color !default;
+$btn-success-bg:                 $brand-success !default;
+$btn-success-border:             $btn-success-bg !default;
+
+$btn-info-color:                 $btn-default-color !default;
+$btn-info-bg:                    $brand-info !default;
+$btn-info-border:                $btn-info-bg !default;
+
+$btn-warning-color:              $btn-default-color !default;
+$btn-warning-bg:                 $brand-warning !default;
+$btn-warning-border:             $btn-warning-bg !default;
+
+$btn-danger-color:               $btn-default-color !default;
+$btn-danger-bg:                  $brand-danger !default;
+$btn-danger-border:              $btn-danger-bg !default;
+
+$btn-link-disabled-color:        $gray-light !default;
+
+// Allows for customizing button radius independently from global border radius
+$btn-border-radius-base:         $border-radius-base !default;
+$btn-border-radius-large:        $border-radius-large !default;
+$btn-border-radius-small:        $border-radius-small !default;
+
+
+//== Forms
+//
+//##
+
+//** `<input>` background color
+$input-bg:                       #fff !default;
+//** `<input disabled>` background color
+$input-bg-disabled:              $gray-lighter !default;
+
+//** Text color for `<input>`s
+$input-color:                    $text-color !default;
+//** `<input>` border color
+$input-border:                   $gray-dark !default;
+
+// TODO: Rename `$input-border-radius` to `$input-border-radius-base` in v4
+//** Default `.form-control` border radius
+// This has no effect on `<select>`s in some browsers, due to the limited stylability of `<select>`s in CSS.
+$input-border-radius:            $border-radius-base !default;
+//** Large `.form-control` border radius
+$input-border-radius-large:      $border-radius-large !default;
+//** Small `.form-control` border radius
+$input-border-radius-small:      $border-radius-small !default;
+
+//** Border color for inputs on focus
+$input-border-focus:             #66afe9 !default;
+
+//** Placeholder text color
+$input-color-placeholder:        $gray-light !default;
+
+//** Default `.form-control` height
+$input-height-base:              ($line-height-computed + ($padding-base-vertical * 2) + 2) !default;
+//** Large `.form-control` height
+$input-height-large:             (ceil($font-size-large * $line-height-large) + ($padding-large-vertical * 2) + 2) !default;
+//** Small `.form-control` height
+$input-height-small:             (floor($font-size-small * $line-height-small) + ($padding-small-vertical * 2) + 2) !default;
+
+//** `.form-group` margin
+$form-group-margin-bottom:       15px !default;
+
+$legend-color:                   $text-color !default;
+$legend-border-color:            $gray-dark !default;
+
+//** Background color for textual input addons
+$input-group-addon-bg:           $gray-lighter !default;
+//** Border color for textual input addons
+$input-group-addon-border-color: $input-border !default;
+
+//** Disabled cursor for form controls and buttons.
+$cursor-disabled:                not-allowed !default;
+
+
+//== Dropdowns
+//
+//## Dropdown menu container and contents.
+
+//** Background for the dropdown menu.
+$dropdown-bg:                    $gray-darker !default;
+//** Dropdown menu `border-color`.
+$dropdown-border:                rgba(255,255,255,0.1) !default;
+//** Dropdown menu `border-color` **for IE8**.
+$dropdown-fallback-border:       #444 !default;
+//** Divider color for between dropdown items.
+$dropdown-divider-bg:            rgba(255,255,255,0.1) !default;
+
+//** Dropdown link text color.
+$dropdown-link-color:            #fff !default;
+//** Hover color for dropdown links.
+$dropdown-link-hover-color:      #fff !default;
+//** Hover background for dropdown links.
+$dropdown-link-hover-bg:         $component-active-bg !default;
+
+//** Active dropdown menu item text color.
+$dropdown-link-active-color:     #fff !default;
+//** Active dropdown menu item background color.
+$dropdown-link-active-bg:        $component-active-bg !default;
+
+//** Disabled dropdown menu item background color.
+$dropdown-link-disabled-color:   $gray-light !default;
+
+//** Text color for headers within dropdown menus.
+$dropdown-header-color:          $gray-light !default;
+
+//** Deprecated `$dropdown-caret-color` as of v3.1.0
+$dropdown-caret-color:           #000 !default;
+
+
+//-- Z-index master list
+//
+// Warning: Avoid customizing these values. They're used for a bird's eye view
+// of components dependent on the z-axis and are designed to all work together.
+//
+// Note: These variables are not generated into the Customizer.
+
+$zindex-navbar:            1000 !default;
+$zindex-dropdown:          1000 !default;
+$zindex-popover:           1060 !default;
+$zindex-tooltip:           1070 !default;
+$zindex-navbar-fixed:      1030 !default;
+$zindex-modal-background:  1040 !default;
+$zindex-modal:             1050 !default;
+
+
+//== Media queries breakpoints
+//
+//## Define the breakpoints at which your layout will change, adapting to different screen sizes.
+
+// Extra small screen / phone
+//** Deprecated `$screen-xs` as of v3.0.1
+$screen-xs:                  480px !default;
+//** Deprecated `$screen-xs-min` as of v3.2.0
+$screen-xs-min:              $screen-xs !default;
+//** Deprecated `$screen-phone` as of v3.0.1
+$screen-phone:               $screen-xs-min !default;
+
+// Small screen / tablet
+//** Deprecated `$screen-sm` as of v3.0.1
+$screen-sm:                  768px !default;
+$screen-sm-min:              $screen-sm !default;
+//** Deprecated `$screen-tablet` as of v3.0.1
+$screen-tablet:              $screen-sm-min !default;
+
+// Medium screen / desktop
+//** Deprecated `$screen-md` as of v3.0.1
+$screen-md:                  992px !default;
+$screen-md-min:              $screen-md !default;
+//** Deprecated `$screen-desktop` as of v3.0.1
+$screen-desktop:             $screen-md-min !default;
+
+// Large screen / wide desktop
+//** Deprecated `$screen-lg` as of v3.0.1
+$screen-lg:                  1200px !default;
+$screen-lg-min:              $screen-lg !default;
+//** Deprecated `$screen-lg-desktop` as of v3.0.1
+$screen-lg-desktop:          $screen-lg-min !default;
+
+// So media queries don't overlap when required, provide a maximum
+$screen-xs-max:              ($screen-sm-min - 1) !default;
+$screen-sm-max:              ($screen-md-min - 1) !default;
+$screen-md-max:              ($screen-lg-min - 1) !default;
+
+
+//== Grid system
+//
+//## Define your custom responsive grid.
+
+//** Number of columns in the grid.
+$grid-columns:              12 !default;
+//** Padding between columns. Gets divided in half for the left and right.
+$grid-gutter-width:         30px !default;
+// Navbar collapse
+//** Point at which the navbar becomes uncollapsed.
+$grid-float-breakpoint:     $screen-sm-min !default;
+//** Point at which the navbar begins collapsing.
+$grid-float-breakpoint-max: ($grid-float-breakpoint - 1) !default;
+
+
+//== Container sizes
+//
+//## Define the maximum width of `.container` for different screen sizes.
+
+// Small screen / tablet
+$container-tablet:             (720px + $grid-gutter-width) !default;
+//** For `$screen-sm-min` and up.
+$container-sm:                 $container-tablet !default;
+
+// Medium screen / desktop
+$container-desktop:            (940px + $grid-gutter-width) !default;
+//** For `$screen-md-min` and up.
+$container-md:                 $container-desktop !default;
+
+// Large screen / wide desktop
+$container-large-desktop:      (1140px + $grid-gutter-width) !default;
+//** For `$screen-lg-min` and up.
+$container-lg:                 $container-large-desktop !default;
+
+
+//== Navbar
+//
+//##
+
+// Basics of a navbar
+$navbar-height:                    50px !default;
+$navbar-margin-bottom:             $line-height-computed !default;
+$navbar-border-radius:             $border-radius-base !default;
+$navbar-padding-horizontal:        floor(($grid-gutter-width / 2)) !default;
+$navbar-padding-vertical:          (($navbar-height - $line-height-computed) / 2) !default;
+$navbar-collapse-max-height:       340px !default;
+
+$navbar-default-color:             $text-color !default;
+$navbar-default-bg:                $body-bg !default;
+$navbar-default-border:            $gray-dark !default;
+
+// Navbar links
+$navbar-default-link-color:                $text-color !default;
+$navbar-default-link-hover-color:          #fff !default;
+$navbar-default-link-hover-bg:             transparent !default;
+$navbar-default-link-active-color:         #fff !default;
+$navbar-default-link-active-bg:            transparent !default;
+$navbar-default-link-disabled-color:       $gray-light !default;
+$navbar-default-link-disabled-bg:          transparent !default;
+
+// Navbar brand label
+$navbar-default-brand-color:               #fff !default;
+$navbar-default-brand-hover-color:         #fff !default;
+$navbar-default-brand-hover-bg:            transparent !default;
+
+// Navbar toggle
+$navbar-default-toggle-hover-bg:           $gray-dark !default;
+$navbar-default-toggle-icon-bar-bg:        #ccc !default;
+$navbar-default-toggle-border-color:       $gray-dark !default;
+
+
+//=== Inverted navbar
+// Reset inverted navbar basics
+$navbar-inverse-color:                      $gray-light !default;
+$navbar-inverse-bg:                         $gray-darker !default;
+$navbar-inverse-border:                     darken($navbar-inverse-bg, 10%) !default;
+
+// Inverted navbar links
+$navbar-inverse-link-color:                 $gray-light !default;
+$navbar-inverse-link-hover-color:           #fff !default;
+$navbar-inverse-link-hover-bg:              transparent !default;
+$navbar-inverse-link-active-color:          $navbar-inverse-link-hover-color !default;
+$navbar-inverse-link-active-bg:             transparent !default;
+$navbar-inverse-link-disabled-color:        #aaa !default;
+$navbar-inverse-link-disabled-bg:           transparent !default;
+
+// Inverted navbar brand label
+$navbar-inverse-brand-color:                #fff !default;
+$navbar-inverse-brand-hover-color:          #fff !default;
+$navbar-inverse-brand-hover-bg:             transparent !default;
+
+// Inverted navbar toggle
+$navbar-inverse-toggle-hover-bg:            #333 !default;
+$navbar-inverse-toggle-icon-bar-bg:         #fff !default;
+$navbar-inverse-toggle-border-color:        #333 !default;
+
+
+//== Navs
+//
+//##
+
+//=== Shared nav styles
+$nav-link-padding:                          10px 15px !default;
+$nav-link-hover-bg:                         $gray-darker !default;
+
+$nav-disabled-link-color:                   $gray-light !default;
+$nav-disabled-link-hover-color:             $gray-light !default;
+
+//== Tabs
+$nav-tabs-border-color:                     $gray-dark !default;
+
+$nav-tabs-link-hover-border-color:          transparent !default;
+
+$nav-tabs-active-link-hover-bg:             $brand-primary !default;
+$nav-tabs-active-link-hover-color:          #fff !default;
+$nav-tabs-active-link-hover-border-color:   $gray-dark !default;
+
+$nav-tabs-justified-link-border-color:            #ddd !default;
+$nav-tabs-justified-active-link-border-color:     $body-bg !default;
+
+//== Pills
+$nav-pills-border-radius:                   $border-radius-base !default;
+$nav-pills-active-link-hover-bg:            $component-active-bg !default;
+$nav-pills-active-link-hover-color:         $component-active-color !default;
+
+
+//== Pagination
+//
+//##
+
+$pagination-color:                     #fff !default;
+$pagination-bg:                        $gray-darker !default;
+$pagination-border:                    $gray-dark !default;
+
+$pagination-hover-color:               #fff !default;
+$pagination-hover-bg:                  $component-active-bg !default;
+$pagination-hover-border:              transparent !default;
+
+$pagination-active-color:              #fff !default;
+$pagination-active-bg:                 $brand-primary !default;
+$pagination-active-border:             transparent !default;
+
+$pagination-disabled-color:            $gray-light !default;
+$pagination-disabled-bg:               $gray-darker !default;
+$pagination-disabled-border:           $gray-dark !default;
+
+
+//== Pager
+//
+//##
+
+$pager-bg:                             $pagination-bg !default;
+$pager-border:                         $pagination-border !default;
+$pager-border-radius:                  15px !default;
+
+$pager-hover-bg:                       $pagination-hover-bg !default;
+
+$pager-active-bg:                      $pagination-active-bg !default;
+$pager-active-color:                   $pagination-active-color !default;
+
+$pager-disabled-color:                 $gray-light !default;
+
+
+//== Jumbotron
+//
+//##
+
+$jumbotron-padding:              30px !default;
+$jumbotron-color:                inherit !default;
+$jumbotron-bg:                   darken($gray-darker, 5%) !default;
+$jumbotron-heading-color:        inherit !default;
+$jumbotron-font-size:            ceil(($font-size-base * 1.5)) !default;
+$jumbotron-heading-font-size:    ceil(($font-size-base * 4.5)) !default;
+
+
+//== Form states and alerts
+//
+//## Define colors for form feedback states and, by default, alerts.
+
+$state-success-text:             #fff !default;
+$state-success-bg:               $brand-success !default;
+$state-success-border:           darken(adjust-hue($state-success-bg, -10), 5%) !default;
+
+$state-info-text:                #fff !default;
+$state-info-bg:                  $brand-info !default;
+$state-info-border:              darken(adjust-hue($state-info-bg, -10), 7%) !default;
+
+$state-warning-text:             #fff !default;
+$state-warning-bg:               $brand-warning !default;
+$state-warning-border:           darken(adjust-hue($state-warning-bg, -10), 3%) !default;
+
+$state-danger-text:              #fff !default;
+$state-danger-bg:                $brand-danger !default;
+$state-danger-border:            darken(adjust-hue($state-danger-bg, -10), 3%) !default;
+
+
+//== Tooltips
+//
+//##
+
+//** Tooltip max width
+$tooltip-max-width:           200px !default;
+//** Tooltip text color
+$tooltip-color:               #fff !default;
+//** Tooltip background color
+$tooltip-bg:                  #000 !default;
+$tooltip-opacity:             .9 !default;
+
+//** Tooltip arrow width
+$tooltip-arrow-width:         5px !default;
+//** Tooltip arrow color
+$tooltip-arrow-color:         $tooltip-bg !default;
+
+
+//== Popovers
+//
+//##
+
+//** Popover body background color
+$popover-bg:                          lighten($body-bg, 10%) !default;
+//** Popover maximum width
+$popover-max-width:                   276px !default;
+//** Popover border color
+$popover-border-color:                rgba(0,0,0,.2) !default;
+//** Popover fallback border color
+$popover-fallback-border-color:       #999 !default;
+
+//** Popover title background color
+$popover-title-bg:                    darken($popover-bg, 3%) !default;
+
+//** Popover arrow width
+$popover-arrow-width:                 10px !default;
+//** Popover arrow color
+$popover-arrow-color:                 $popover-bg !default;
+
+//** Popover outer arrow width
+$popover-arrow-outer-width:           ($popover-arrow-width + 1) !default;
+//** Popover outer arrow color
+$popover-arrow-outer-color:           fadein($popover-border-color, 5%) !default;
+//** Popover outer arrow fallback color
+$popover-arrow-outer-fallback-color:  darken($popover-fallback-border-color, 20%) !default;
+
+
+//== Labels
+//
+//##
+
+//** Default label background color
+$label-default-bg:            $btn-default-bg !default;
+//** Primary label background color
+$label-primary-bg:            $brand-primary !default;
+//** Success label background color
+$label-success-bg:            $brand-success !default;
+//** Info label background color
+$label-info-bg:               $brand-info !default;
+//** Warning label background color
+$label-warning-bg:            $brand-warning !default;
+//** Danger label background color
+$label-danger-bg:             $brand-danger !default;
+
+//** Default label text color
+$label-color:                 #fff !default;
+//** Default text color of a linked label
+$label-link-hover-color:      #fff !default;
+
+
+//== Modals
+//
+//##
+
+//** Padding applied to the modal body
+$modal-inner-padding:         20px !default;
+
+//** Padding applied to the modal title
+$modal-title-padding:         15px !default;
+//** Modal title line-height
+$modal-title-line-height:     $line-height-base !default;
+
+//** Background color of modal content area
+$modal-content-bg:                             lighten($body-bg, 10%) !default;
+//** Modal content border color
+$modal-content-border-color:                   rgba(0,0,0,.2) !default;
+//** Modal content border color **for IE8**
+$modal-content-fallback-border-color:          #999 !default;
+
+//** Modal backdrop background color
+$modal-backdrop-bg:           #000 !default;
+//** Modal backdrop opacity
+$modal-backdrop-opacity:      .5 !default;
+//** Modal header border color
+$modal-header-border-color:   $gray-dark !default;
+//** Modal footer border color
+$modal-footer-border-color:   $modal-header-border-color !default;
+
+$modal-lg:                    900px !default;
+$modal-md:                    600px !default;
+$modal-sm:                    300px !default;
+
+
+//== Alerts
+//
+//## Define alert colors, border radius, and padding.
+
+$alert-padding:               15px !default;
+$alert-border-radius:         $border-radius-base !default;
+$alert-link-font-weight:      bold !default;
+
+$alert-success-bg:            $state-success-bg !default;
+$alert-success-text:          $state-success-text !default;
+$alert-success-border:        $state-success-border !default;
+
+$alert-info-bg:               $state-info-bg !default;
+$alert-info-text:             $state-info-text !default;
+$alert-info-border:           $state-info-border !default;
+
+$alert-warning-bg:            $state-warning-bg !default;
+$alert-warning-text:          $state-warning-text !default;
+$alert-warning-border:        $state-warning-border !default;
+
+$alert-danger-bg:             $state-danger-bg !default;
+$alert-danger-text:           $state-danger-text !default;
+$alert-danger-border:         $state-danger-border !default;
+
+
+//== Progress bars
+//
+//##
+
+//** Background color of the whole progress component
+$progress-bg:                 $gray-darker !default;
+//** Progress bar text color
+$progress-bar-color:          #fff !default;
+//** Variable for setting rounded corners on progress bar.
+$progress-border-radius:      $border-radius-base !default;
+
+//** Default progress bar color
+$progress-bar-bg:             $brand-primary !default;
+//** Success progress bar color
+$progress-bar-success-bg:     $brand-success !default;
+//** Warning progress bar color
+$progress-bar-warning-bg:     $brand-warning !default;
+//** Danger progress bar color
+$progress-bar-danger-bg:      $brand-danger !default;
+//** Info progress bar color
+$progress-bar-info-bg:        $brand-info !default;
+
+
+//== List group
+//
+//##
+
+//** Background color on `.list-group-item`
+$list-group-bg:                 $gray-darker !default;
+//** `.list-group-item` border color
+$list-group-border:             $gray-dark !default;
+//** List group border radius
+$list-group-border-radius:      $border-radius-base !default;
+
+//** Background color of single list items on hover
+$list-group-hover-bg:           lighten($list-group-bg, 15%) !default;
+//** Text color of active list items
+$list-group-active-color:       $component-active-color !default;
+//** Background color of active list items
+$list-group-active-bg:          $component-active-bg !default;
+//** Border color of active list elements
+$list-group-active-border:      $list-group-active-bg !default;
+//** Text color for content within active list items
+$list-group-active-text-color:  lighten($list-group-active-bg, 40%) !default;
+
+//** Text color of disabled list items
+$list-group-disabled-color:      $gray-light !default;
+//** Background color of disabled list items
+$list-group-disabled-bg:         $gray-lighter !default;
+//** Text color for content within disabled list items
+$list-group-disabled-text-color: $list-group-disabled-color !default;
+
+$list-group-link-color:         $text-color !default;
+$list-group-link-hover-color:   $list-group-link-color !default;
+$list-group-link-heading-color: #fff !default;
+
+
+//== Panels
+//
+//##
+
+$panel-bg:                    $gray-darker !default;
+$panel-body-padding:          15px !default;
+$panel-heading-padding:       10px 15px !default;
+$panel-footer-padding:        $panel-heading-padding !default;
+$panel-border-radius:         $border-radius-base !default;
+
+//** Border color for elements within panels
+$panel-inner-border:          $gray-dark !default;
+$panel-footer-bg:             lighten($gray-darker, 10%) !default;
+
+$panel-default-text:          $text-color !default;
+$panel-default-border:        $panel-inner-border !default;
+$panel-default-heading-bg:    $panel-footer-bg !default;
+
+$panel-primary-text:          #fff !default;
+$panel-primary-border:        $brand-primary !default;
+$panel-primary-heading-bg:    $brand-primary !default;
+
+$panel-success-text:          $state-success-text !default;
+$panel-success-border:        $state-success-border !default;
+$panel-success-heading-bg:    $state-success-bg !default;
+
+$panel-info-text:             $state-info-text !default;
+$panel-info-border:           $state-info-border !default;
+$panel-info-heading-bg:       $state-info-bg !default;
+
+$panel-warning-text:          $state-warning-text !default;
+$panel-warning-border:        $state-warning-border !default;
+$panel-warning-heading-bg:    $state-warning-bg !default;
+
+$panel-danger-text:           $state-danger-text !default;
+$panel-danger-border:         $state-danger-border !default;
+$panel-danger-heading-bg:     $state-danger-bg !default;
+
+
+//== Thumbnails
+//
+//##
+
+//** Padding around the thumbnail image
+$thumbnail-padding:           4px !default;
+//** Thumbnail background color
+$thumbnail-bg:                $gray-dark !default;
+//** Thumbnail border color
+$thumbnail-border:            $gray-dark !default;
+//** Thumbnail border radius
+$thumbnail-border-radius:     $border-radius-base !default;
+
+//** Custom text color for thumbnail captions
+$thumbnail-caption-color:     $text-color !default;
+//** Padding around the thumbnail caption
+$thumbnail-caption-padding:   9px !default;
+
+
+//== Wells
+//
+//##
+
+$well-bg:                     darken($gray-darker, 5%) !default;
+$well-border:                 darken($well-bg, 7%) !default;
+
+
+//== Badges
+//
+//##
+
+$badge-color:                 #fff !default;
+//** Linked badge text color on hover
+$badge-link-hover-color:      #fff !default;
+$badge-bg:                    $brand-primary !default;
+
+//** Badge text color in active nav link
+$badge-active-color:          $brand-primary !default;
+//** Badge background color in active nav link
+$badge-active-bg:             #fff !default;
+
+$badge-font-weight:           bold !default;
+$badge-line-height:           1 !default;
+$badge-border-radius:         10px !default;
+
+
+//== Breadcrumbs
+//
+//##
+
+$breadcrumb-padding-vertical:   8px !default;
+$breadcrumb-padding-horizontal: 15px !default;
+//** Breadcrumb background color
+$breadcrumb-bg:                 $gray-darker !default;
+//** Breadcrumb text color
+$breadcrumb-color:              #fff !default;
+//** Text color of current page in the breadcrumb
+$breadcrumb-active-color:       $text-color !default;
+//** Textual separator for between breadcrumb elements
+$breadcrumb-separator:          "/" !default;
+
+
+//== Carousel
+//
+//##
+
+$carousel-text-shadow:                        0 1px 2px rgba(0,0,0,.6) !default;
+
+$carousel-control-color:                      #fff !default;
+$carousel-control-width:                      15% !default;
+$carousel-control-opacity:                    .5 !default;
+$carousel-control-font-size:                  20px !default;
+
+$carousel-indicator-active-bg:                #fff !default;
+$carousel-indicator-border-color:             #fff !default;
+
+$carousel-caption-color:                      #fff !default;
+
+
+//== Close
+//
+//##
+
+$close-font-weight:           bold !default;
+$close-color:                 #000 !default;
+$close-text-shadow:           0 1px 0 #fff !default;
+
+
+//== Code
+//
+//##
+
+$code-color:                  #c7254e !default;
+$code-bg:                     #f9f2f4 !default;
+
+$kbd-color:                   #fff !default;
+$kbd-bg:                      #333 !default;
+
+$pre-bg:                      #f5f5f5 !default;
+$pre-color:                   $gray-dark !default;
+$pre-border-color:            #ccc !default;
+$pre-scrollable-max-height:   340px !default;
+
+
+//== Type
+//
+//##
+
+//** Horizontal offset for forms and lists.
+$component-offset-horizontal: 180px !default;
+//** Text muted color
+$text-muted:                  $gray-light !default;
+//** Abbreviations and acronyms border color
+$abbr-border-color:           $gray-light !default;
+//** Headings small color
+$headings-small-color:        $gray-light !default;
+//** Blockquote small color
+$blockquote-small-color:      $gray !default;
+//** Blockquote font size
+$blockquote-font-size:        ($font-size-base * 1.25) !default;
+//** Blockquote border color
+$blockquote-border-color:     $gray-dark !default;
+//** Page header border color
+$page-header-border-color:    $gray-dark !default;
+//** Width of horizontal description list titles
+$dl-horizontal-offset:        $component-offset-horizontal !default;
+//** Point at which .dl-horizontal becomes horizontal
+$dl-horizontal-breakpoint:    $grid-float-breakpoint !default;
+//** Horizontal line color.
+$hr-border:                   $gray-dark !default;
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/LICENSE
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/LICENSE	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/LICENSE	(revision 3762)
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2013 Thomas Park
+
+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.
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/solar/font.css
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/solar/font.css	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/solar/font.css	(revision 3762)
@@ -0,0 +1,21 @@
+@font-face {
+  font-family: 'Source Sans Pro';
+  font-style: normal;
+  font-weight: 400;
+  font-display: swap;
+  src: url(fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3aPA.woff) format('woff');
+}
+@font-face {
+  font-family: 'Source Sans Pro';
+  font-style: normal;
+  font-weight: 600;
+  font-display: swap;
+  src: url(fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rAkw.woff) format('woff');
+}
+@font-face {
+  font-family: 'Source Sans Pro';
+  font-style: normal;
+  font-weight: 700;
+  font-display: swap;
+  src: url(fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vAkw.woff) format('woff');
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/solar/_variables.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/solar/_variables.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/solar/_variables.scss	(revision 3762)
@@ -0,0 +1,25 @@
+$white: #092B36 !default;
+$gray-100: #173741 !default;
+$gray-200: #25434B !default;
+$gray-300: #324E56 !default;
+$gray-400: #405A61 !default;
+$gray-500: #4E666B !default;
+$gray-600: #5C7276 !default;
+$gray-700: #6A7E81 !default;
+$gray-800: #77898C !default;
+$gray-900: #859596 !default;
+$black: #93A1A1 !default;
+$blue: #b58900 !default;
+$indigo: #6610f2 !default;
+$purple: #6f42c1 !default;
+$pink: #e83e8c !default;
+$red: #d33682 !default;
+$orange: #fd7e14 !default;
+$yellow: #cb4b16 !default;
+$green: #2aa198 !default;
+$teal: #20c997 !default;
+$cyan: #268bd2 !default;
+$enable-gradients: true !default;
+$secondary: $gray-800 !default;
+$color-contrast-dark: #031014 !default;
+$color-contrast-light: #BBD0D0 !default;
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/solar/_bootswatch.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/solar/_bootswatch.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/solar/_bootswatch.scss	(revision 3762)
@@ -0,0 +1,2 @@
+$web-font-path: "https://fonts.googleapis.com/css2?family=Source+Sans+Pro:wght@400;600;700&display=swap" !default;
+@import url($web-font-path);
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/cosmo/_bootswatch.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/cosmo/_bootswatch.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/cosmo/_bootswatch.scss	(revision 3762)
@@ -0,0 +1,25 @@
+// Cosmo 4.6.0
+// Bootswatch
+
+
+// Variables ===================================================================
+
+$web-font-path: "https://fonts.googleapis.com/css2?family=Source+Sans+Pro:wght@300;400;700&display=swap" !default;
+@import url($web-font-path);
+
+// Typography ==================================================================
+
+body {
+  -webkit-font-smoothing: antialiased;
+}
+
+// Progress bars ===============================================================
+
+.progress {
+  @include box-shadow(none);
+
+  .progress-bar {
+    font-size: 8px;
+    line-height: 8px;
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/cosmo/font.css
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/cosmo/font.css	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/cosmo/font.css	(revision 3762)
@@ -0,0 +1,21 @@
+@font-face {
+  font-family: 'Source Sans Pro';
+  font-style: normal;
+  font-weight: 300;
+  font-display: swap;
+  src: url(fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zAkw.woff) format('woff');
+}
+@font-face {
+  font-family: 'Source Sans Pro';
+  font-style: normal;
+  font-weight: 400;
+  font-display: swap;
+  src: url(fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3aPA.woff) format('woff');
+}
+@font-face {
+  font-family: 'Source Sans Pro';
+  font-style: normal;
+  font-weight: 700;
+  font-display: swap;
+  src: url(fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vAkw.woff) format('woff');
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/cosmo/_variables.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/cosmo/_variables.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/cosmo/_variables.scss	(revision 3762)
@@ -0,0 +1,67 @@
+// Cosmo 4.6.0
+// Bootswatch
+
+//
+// Color system
+//
+
+$white:    #fff !default;
+$gray-100: #f8f9fa !default;
+$gray-200: #e9ecef !default;
+$gray-300: #dee2e6 !default;
+$gray-400: #ced4da !default;
+$gray-500: #adb5bd !default;
+$gray-600: #868e96 !default;
+$gray-700: #495057 !default;
+$gray-800: #373a3c !default;
+$gray-900: #212529 !default;
+$black:    #000 !default;
+
+$blue:    #2780e3 !default;
+$indigo:  #6610f2 !default;
+$purple:  #613d7c !default;
+$pink:    #e83e8c !default;
+$red:     #ff0039 !default;
+$orange:  #f0ad4e !default;
+$yellow:  #ff7518 !default;
+$green:   #3fb618 !default;
+$teal:    #20c997 !default;
+$cyan:    #9954bb !default;
+
+$primary:       $blue !default;
+$secondary:     $gray-800 !default;
+$success:       $green !default;
+$info:          $cyan !default;
+$warning:       $yellow !default;
+$danger:        $red !default;
+$light:         $gray-100 !default;
+$dark:          $gray-800 !default;
+
+// Options
+
+$enable-rounded: false !default;
+
+// Body
+
+$body-color:    $gray-800 !default;
+
+// Fonts
+
+// stylelint-disable-next-line value-keyword-case
+$font-family-sans-serif:    "Source Sans Pro", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !default;
+$font-size-base:            .9375rem !default;
+$font-size-sm:              $font-size-base * .88 !default;
+$headings-font-weight:      300 !default;
+
+// Navbar
+
+$navbar-dark-hover-color:       rgba($white, 1) !default;
+$navbar-light-hover-color:      rgba($black, .9) !default;
+
+// Alerts
+
+$alert-border-width:            0 !default;
+
+// Progress bars
+
+$progress-height:               .5rem !default;
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/litera/_variables.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/litera/_variables.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/litera/_variables.scss	(revision 3762)
@@ -0,0 +1,95 @@
+// Litera 4.6.0
+// Bootswatch
+
+//
+// Color system
+//
+
+$white:    #fff !default;
+$gray-100: #f8f9fa !default;
+$gray-200: #e9ecef !default;
+$gray-300: #ddd !default;
+$gray-400: #ced4da !default;
+$gray-500: #adb5bd !default;
+$gray-600: #868e96 !default;
+$gray-700: #495057 !default;
+$gray-800: #343a40 !default;
+$gray-900: #212529 !default;
+$black:    #000 !default;
+
+$blue:    #4582ec !default;
+$indigo:  #6610f2 !default;
+$purple:  #6f42c1 !default;
+$pink:    #e83e8c !default;
+$red:     #d9534f !default;
+$orange:  #fd7e14 !default;
+$yellow:  #f0ad4e !default;
+$green:   #02b875 !default;
+$teal:    #20c997 !default;
+$cyan:    #17a2b8 !default;
+
+$primary:       $blue !default;
+$secondary:     $gray-500 !default;
+$success:       $green !default;
+$info:          $cyan !default;
+$warning:       $yellow !default;
+$danger:        $red !default;
+$light:         $gray-100 !default;
+$dark:          $gray-800 !default;
+
+
+// Body
+
+$body-color:                $gray-800 !default;
+
+// Fonts
+
+// stylelint-disable value-keyword-case
+$font-family-sans-serif:      -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji" !default;
+$font-family-serif:           Georgia, Cambria, "Times New Roman", Times, serif !default;
+// stylelint-enable
+
+$font-size-base:              1.063rem !default;
+$headings-font-weight:        700 !default;
+
+// Tables
+
+$table-border-color:          rgba(0, 0, 0, .1) !default;
+
+// Buttons
+
+$input-btn-padding-y:         .5rem !default;
+$input-btn-padding-x:         1.1rem !default;
+$btn-font-family:             $font-family-sans-serif !default;
+$btn-font-size:               .875rem !default;
+$btn-font-size-sm:            .688rem !default;
+
+$btn-border-radius:           1.078em !default;
+$btn-border-radius-lg:        2.688em !default;
+$btn-border-radius-sm:        .844em !default;
+
+// Forms
+
+$input-border-color:                    rgba(0, 0, 0, .1) !default;
+$input-group-addon-bg:                  $gray-200 !default !default;
+
+// Navbar
+
+$navbar-dark-color:                 rgba($white, .6) !default;
+$navbar-dark-hover-color:           $white !default;
+$navbar-light-hover-color:          $body-color !default;
+$navbar-light-active-color:         $body-color !default;
+
+// Tooltips
+
+$tooltip-font-size:                 11px !default;
+
+// Badges
+
+$badge-font-weight:                 400 !default;
+$badge-padding-y:                   .6em !default;
+$badge-padding-x:                   1.2em !default;
+
+// Alerts
+
+$alert-border-width:                0 !default;
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/litera/_bootswatch.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/litera/_bootswatch.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/litera/_bootswatch.scss	(revision 3762)
@@ -0,0 +1,268 @@
+// Litera 4.6.0
+// Bootswatch
+
+// Navbar ======================================================================
+
+.navbar {
+  font-size: $font-size-sm;
+
+  &.bg-dark {
+    background-color: $success !important;
+  }
+
+  &.bg-light {
+    background-color: $white !important;
+    border: 1px solid rgba(0, 0, 0, .1);
+
+    &.navbar-fixed-top {
+      border-width: 0 0 1px;
+    }
+
+    &.navbar-fixed-bottom {
+      border-width: 1px 0 0;
+    }
+  }
+}
+
+// Typography ==================================================================
+
+p {
+  font-family: $font-family-serif;
+}
+
+blockquote {
+  font-style: italic;
+}
+
+footer {
+  font-size: $font-size-sm;
+}
+
+.lead {
+  color: $gray-600;
+  font-family: $font-family-sans-serif;
+}
+
+// Tables ======================================================================
+
+table,
+.table {
+  font-size: $font-size-sm;
+
+  &-primary,
+  &-secondary,
+  &-success,
+  &-info,
+  &-warning,
+  &-danger {
+    color: $white;
+  }
+}
+
+.table {
+  &-primary {
+    &,
+    > th,
+    > td {
+      background-color: $primary;
+    }
+  }
+
+  &-secondary {
+    &,
+    > th,
+    > td {
+      background-color: $secondary;
+    }
+  }
+
+  &-light {
+    &,
+    > th,
+    > td {
+      background-color: $light;
+    }
+  }
+
+  &-dark {
+    &,
+    > th,
+    > td {
+      background-color: $dark;
+    }
+  }
+
+  &-success {
+    &,
+    > th,
+    > td {
+      background-color: $success;
+    }
+  }
+
+  &-info {
+    &,
+    > th,
+    > td {
+      background-color: $info;
+    }
+  }
+
+  &-danger {
+    &,
+    > th,
+    > td {
+      background-color: $danger;
+    }
+  }
+
+  &-warning {
+    &,
+    > th,
+    > td {
+      background-color: $warning;
+    }
+  }
+
+  &-active {
+    &,
+    > th,
+    > td {
+      background-color: $table-active-bg;
+    }
+  }
+
+  &-hover {
+    .table-primary:hover {
+      &,
+      > th,
+      > td {
+        background-color: darken($primary, 5%);
+      }
+    }
+
+    .table-secondary:hover {
+      &,
+      > th,
+      > td {
+        background-color: darken($secondary, 5%);
+      }
+    }
+
+    .table-light:hover {
+      &,
+      > th,
+      > td {
+        background-color: darken($light, 5%);
+      }
+    }
+
+    .table-dark:hover {
+      &,
+      > th,
+      > td {
+        background-color: darken($dark, 5%);
+      }
+    }
+
+    .table-success:hover {
+      &,
+      > th,
+      > td {
+        background-color: darken($success, 5%);
+      }
+    }
+
+    .table-info:hover {
+      &,
+      > th,
+      > td {
+        background-color: darken($info, 5%);
+      }
+    }
+
+    .table-danger:hover {
+      &,
+      > th,
+      > td {
+        background-color: darken($danger, 5%);
+      }
+    }
+
+    .table-warning:hover {
+      &,
+      > th,
+      > td {
+        background-color: darken($warning, 5%);
+      }
+    }
+
+    .table-active:hover {
+      &,
+      > th,
+      > td {
+        background-color: $table-active-bg;
+      }
+    }
+
+  }
+}
+
+// Navs ========================================================================
+
+.nav,
+.breadcrumb,
+.pagination {
+  font-size: $font-size-sm;
+}
+
+.dropdown-menu {
+  font-size: $font-size-sm;
+}
+
+// Indicators ==================================================================
+
+.alert {
+  color: $white;
+  font-size: $font-size-sm;
+
+  &,
+  p {
+    font-family: $font-family-sans-serif;
+  }
+
+  a,
+  .alert-link {
+    color: $white;
+    font-weight: 400;
+    text-decoration: underline;
+  }
+
+  @each $color, $value in $theme-colors {
+    &-#{$color} {
+      @if $enable-gradients {
+        background: $value linear-gradient($value, mix($body-bg, $value, 15%)) repeat-x;
+      } @else {
+        background-color: $value;
+      }
+    }
+  }
+
+  &-light {
+    &,
+    a,
+    .alert-link {
+      color: $body-color;
+    }
+  }
+}
+
+.badge {
+  vertical-align: bottom;
+}
+
+// Containers ==================================================================
+
+.list-group {
+  font-size: $font-size-sm;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/lumen/font.css
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/lumen/font.css	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/lumen/font.css	(revision 3762)
@@ -0,0 +1,28 @@
+@font-face {
+  font-family: 'Source Sans Pro';
+  font-style: italic;
+  font-weight: 400;
+  font-display: swap;
+  src: url(fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPa7j.woff) format('woff');
+}
+@font-face {
+  font-family: 'Source Sans Pro';
+  font-style: normal;
+  font-weight: 300;
+  font-display: swap;
+  src: url(fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zAkw.woff) format('woff');
+}
+@font-face {
+  font-family: 'Source Sans Pro';
+  font-style: normal;
+  font-weight: 400;
+  font-display: swap;
+  src: url(fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3aPA.woff) format('woff');
+}
+@font-face {
+  font-family: 'Source Sans Pro';
+  font-style: normal;
+  font-weight: 700;
+  font-display: swap;
+  src: url(fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vAkw.woff) format('woff');
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/lumen/_variables.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/lumen/_variables.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/lumen/_variables.scss	(revision 3762)
@@ -0,0 +1,84 @@
+// Lumen 4.6.0
+// Bootswatch
+
+//
+// Color system
+//
+
+$white:    #fff !default;
+$gray-100: #f6f6f6 !default;
+$gray-200: #f0f0f0 !default;
+$gray-300: #dee2e6 !default;
+$gray-400: #ced4da !default;
+$gray-500: #adb5bd !default;
+$gray-600: #999 !default;
+$gray-700: #555 !default;
+$gray-800: #333 !default;
+$gray-900: #222 !default;
+$black:    #000 !default;
+
+$blue:    #158cba !default;
+$indigo:  #6610f2 !default;
+$purple:  #6f42c1 !default;
+$pink:    #e83e8c !default;
+$red:     #ff4136 !default;
+$orange:  #fd7e14 !default;
+$yellow:  #ff851b !default;
+$green:   #28b62c !default;
+$teal:    #20c997 !default;
+$cyan:    #75caeb !default;
+
+$primary:       $blue !default;
+$secondary:     $gray-200 !default;
+$success:       $green !default;
+$info:          $cyan !default;
+$warning:       $yellow !default;
+$danger:        $red !default;
+$light:         $gray-100 !default;
+$dark:          $gray-700 !default;
+
+
+// Fonts
+
+// stylelint-disable-next-line value-keyword-case
+$font-family-sans-serif:      "Source Sans Pro", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !default;
+$font-size-base:              .875rem !default;
+
+// Buttons
+
+$btn-font-size:               .75rem !default;
+$btn-font-size-sm:            .625rem !default;
+$btn-font-weight:             700 !default;
+
+// Dropdowns
+
+$dropdown-link-color:         rgba(0, 0, 0, .5) !default;
+
+// Navs
+
+$nav-tabs-border-color:             $gray-200 !default;
+$nav-tabs-link-hover-border-color:  $nav-tabs-border-color !default;
+$nav-tabs-link-active-color:        $gray-900 !default;
+$nav-tabs-link-active-border-color: $nav-tabs-border-color !default;
+
+// Pagination
+
+$pagination-color:                  $gray-700 !default;
+$pagination-bg:                     $gray-200 !default;
+$pagination-hover-color:            $pagination-color !default;
+$pagination-hover-bg:               $pagination-bg !default;
+$pagination-active-border-color:    darken($primary, 5%) !default;
+$pagination-disabled-color:         $gray-600 !default;
+$pagination-disabled-bg:            $pagination-bg !default;
+
+// Jumbotron
+
+$jumbotron-bg:                      #fafafa !default;
+
+// Modals
+
+$modal-content-border-color:        rgba($black, .1) !default;
+
+// Close
+
+$close-color:                       $white !default;
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/lumen/_bootswatch.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/lumen/_bootswatch.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/lumen/_bootswatch.scss	(revision 3762)
@@ -0,0 +1,531 @@
+// Lumen 4.6.0
+// Bootswatch
+
+
+// Variables ===================================================================
+
+$web-font-path: "https://fonts.googleapis.com/css2?family=Source+Sans+Pro:ital,wght@0,300;0,400;0,700;1,400&display=swap" !default;
+@import url($web-font-path);
+
+// Mixins ======================================================================
+
+@mixin shadow($width: 4px){
+  border-style: solid;
+  border-width: 0 1px $width 1px;
+}
+
+// Navbar ======================================================================
+
+.navbar {
+  @include shadow();
+}
+
+.bg-primary {
+  border-color: darken($primary, 5%);
+}
+
+.bg-dark {
+  border-color: darken($dark, 5%);
+}
+
+.bg-light {
+  background-color: $white !important;
+  border-color: darken($white, 5%);
+}
+
+// Buttons =====================================================================
+
+.btn {
+  @include shadow();
+  text-transform: uppercase;
+
+  &:not(.disabled):hover {
+    margin-top: 1px;
+    border-bottom-width: 3px;
+  }
+
+  &:not(.disabled):active {
+    margin-top: 2px;
+    border-bottom-width: 2px;
+    @include box-shadow(none);
+  }
+
+  &-primary {
+    border-color: darken($primary, 5%);
+  }
+
+  &-secondary {
+    border-color: darken($secondary, 5%);
+  }
+
+  &-success {
+    border-color: darken($success, 5%);
+  }
+
+  &-info {
+    border-color: darken($info, 5%);
+  }
+
+  &-danger {
+    border-color: darken($danger, 5%);
+  }
+
+  &-warning {
+    border-color: darken($warning, 5%);
+  }
+
+  &-light {
+    border-color: darken($light, 5%);
+  }
+
+  &-dark {
+    border-color: darken($dark, 5%);
+  }
+}
+
+[class*="btn-outline"] {
+  border-top-width: 1px;
+}
+
+.btn-group-vertical {
+  .btn + .btn {
+    &:hover {
+      margin-top: -1px;
+      border-top-width: 1px;
+    }
+
+    &:active {
+      margin-top: -1px;
+      border-top-width: 2px;
+    }
+  }
+}
+
+// Typography ==================================================================
+
+.text-secondary {
+  color: $gray-700 !important;
+}
+
+.blockquote-footer {
+  color: $gray-600;
+}
+
+// Tables ======================================================================
+
+.table {
+  &-primary,
+  &-success,
+  &-info,
+  &-warning,
+  &-danger {
+    color: $white;
+  }
+
+  &-hover tbody {
+    .table-primary:hover,
+    .table-success:hover,
+    .table-info:hover,
+    .table-warning:hover,
+    .table-danger:hover,
+    .table-dark:hover {
+      color: $white;
+    }
+  }
+
+  &-primary {
+    &,
+    > th,
+    > td {
+      background-color: $primary;
+    }
+  }
+
+  &-secondary {
+    &,
+    > th,
+    > td {
+      background-color: $secondary;
+    }
+  }
+
+  &-light {
+    &,
+    > th,
+    > td {
+      background-color: $light;
+    }
+  }
+
+  &-dark {
+    &,
+    > th,
+    > td {
+      background-color: $dark;
+    }
+  }
+
+  &-success {
+    &,
+    > th,
+    > td {
+      background-color: $success;
+    }
+  }
+
+  &-info {
+    &,
+    > th,
+    > td {
+      background-color: $info;
+    }
+  }
+
+  &-danger {
+    &,
+    > th,
+    > td {
+      background-color: $danger;
+    }
+  }
+
+  &-warning {
+    &,
+    > th,
+    > td {
+      background-color: $warning;
+    }
+  }
+
+  &-active {
+    &,
+    > th,
+    > td {
+      background-color: $table-active-bg;
+    }
+  }
+
+  &-hover {
+    .table-primary:hover {
+      &,
+      > th,
+      > td {
+        background-color: darken($primary, 5%);
+      }
+    }
+
+    .table-secondary:hover {
+      &,
+      > th,
+      > td {
+        background-color: darken($secondary, 5%);
+      }
+    }
+
+    .table-light:hover {
+      &,
+      > th,
+      > td {
+        background-color: darken($light, 5%);
+      }
+    }
+
+    .table-dark:hover {
+      &,
+      > th,
+      > td {
+        background-color: darken($dark, 5%);
+      }
+    }
+
+    .table-success:hover {
+      &,
+      > th,
+      > td {
+        background-color: darken($success, 5%);
+      }
+    }
+
+    .table-info:hover {
+      &,
+      > th,
+      > td {
+        background-color: darken($info, 5%);
+      }
+    }
+
+    .table-danger:hover {
+      &,
+      > th,
+      > td {
+        background-color: darken($danger, 5%);
+      }
+    }
+
+    .table-warning:hover {
+      &,
+      > th,
+      > td {
+        background-color: darken($warning, 5%);
+      }
+    }
+
+    .table-active:hover {
+      &,
+      > th,
+      > td {
+        background-color: $table-active-bg;
+      }
+    }
+
+  }
+}
+
+// Forms =======================================================================
+
+.form-control {
+  box-shadow: inset 0 2px 0 rgba(0, 0, 0, .075);
+}
+
+.input-group-sm {
+  > .input-group-prepend,
+  > .input-group-append {
+    .btn {
+      font-size: $btn-font-size-sm;
+    }
+  }
+}
+
+// Navs ========================================================================
+
+.nav {
+  .open > a,
+  .open > a:hover,
+  .open > a:focus {
+    border-color: transparent;
+  }
+}
+
+.nav-tabs {
+  .nav-link {
+    color: $body-color;
+
+    &,
+    &.disabled,
+    &.disabled:hover,
+    &.disabled:focus {
+      margin-top: 6px;
+      border-color: $nav-tabs-border-color;
+      transition: padding-bottom .2s ease-in-out, margin-top .2s ease-in-out, border-bottom .2s ease-in-out;
+    }
+
+    &:not(.disabled):hover,
+    &:not(.disabled):focus,
+    &.active {
+      padding-bottom: add(.5rem, 6px);
+      border-bottom-color: transparent;
+      margin-top: 0;
+    }
+  }
+
+  &.nav-justified > li {
+    vertical-align: bottom;
+  }
+}
+
+.dropdown-menu {
+  margin-top: 0;
+  @include shadow();
+  border-top-width: 1px;
+  @include box-shadow(none);
+}
+
+.breadcrumb {
+  border-color: darken($breadcrumb-bg, 5%);
+  @include shadow();
+}
+
+.pagination {
+  > li > a,
+  > li > span {
+    position: relative;
+    top: 0;
+    @include shadow();
+    color: $pagination-color;
+    font-size: 12px;
+    font-weight: 700;
+    text-transform: uppercase;
+
+    &:hover,
+    &:focus {
+      top: 1px;
+      border-bottom-width: 3px;
+      text-decoration: none;
+    }
+
+    &:active {
+      top: 2px;
+      border-bottom-width: 2px;
+    }
+  }
+
+  > .disabled > a,
+  > .disabled > span {
+    &:hover {
+      top: 0;
+      @include shadow();
+    }
+
+    &:active {
+      top: 0;
+      @include shadow();
+    }
+  }
+}
+
+.pager {
+  > li > a,
+  > li > span,
+  > .disabled > a,
+  > .disabled > span {
+    &,
+    &:hover,
+    &:active {
+      border-left-width: 2px;
+      border-right-width: 2px;
+    }
+  }
+}
+
+// Indicators ==================================================================
+
+.close {
+  text-decoration: none;
+  opacity: .4;
+
+  &:hover,
+  &:focus {
+    opacity: 1;
+  }
+}
+
+.alert {
+  color: $white;
+  @include shadow();
+
+  &-primary {
+    background-color: $primary;
+    border-color: darken($primary, 5%);
+  }
+
+  &-secondary {
+    background-color: $secondary;
+    border-color: darken($secondary, 5%);
+  }
+
+  &-success {
+    background-color: $success;
+    border-color: darken($success, 5%);
+  }
+
+  &-info {
+    background-color: $info;
+    border-color: darken($info, 5%);
+  }
+
+  &-danger {
+    background-color: $danger;
+    border-color: darken($danger, 5%);
+  }
+
+  &-warning {
+    background-color: $warning;
+    border-color: darken($warning, 5%);
+  }
+
+  &-dark {
+    background-color: $dark;
+    border-color: darken($dark, 5%);
+  }
+
+  &-light {
+    background-color: $light;
+    border-color: darken($light, 5%);
+  }
+
+  .alert-link {
+    font-weight: 400;
+    color: $white;
+    text-decoration: underline;
+  }
+
+  &-secondary,
+  &-light {
+    &,
+    a,
+    .alert-link {
+      color: $body-color;
+    }
+  }
+}
+
+.badge {
+  &-warning,
+  &-info {
+    color: $white;
+  }
+}
+
+// Containers ==================================================================
+
+a.list-group-item {
+  &-success {
+    &.active {
+      background-color: $success;
+    }
+
+    &.active:hover,
+    &.active:focus {
+      background-color: darken($success, 5%);
+    }
+  }
+
+  &-warning {
+    &.active {
+      background-color: $warning;
+    }
+
+    &.active:hover,
+    &.active:focus {
+      background-color: darken($warning, 5%);
+    }
+  }
+
+  &-danger {
+    &.active {
+      background-color: $danger;
+    }
+
+    &.active:hover,
+    &.active:focus {
+      background-color: darken($danger, 5%);
+    }
+  }
+}
+
+.jumbotron {
+  border: 1px solid $gray-200;
+  box-shadow: inset 0 2px 0 rgba(0, 0, 0, .05);
+}
+
+.modal,
+.toast {
+  .close {
+    color: $black;
+
+    &:not(:disabled):not(.disabled):hover,
+    &:not(:disabled):not(.disabled):focus {
+      color: $black;
+    }
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/simplex/font.css
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/simplex/font.css	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/simplex/font.css	(revision 3762)
@@ -0,0 +1,16 @@
+@font-face {
+  font-family: 'Open Sans';
+  font-style: normal;
+  font-weight: 400;
+  font-stretch: normal;
+  font-display: swap;
+  src: url(fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0C4k.woff) format('woff');
+}
+@font-face {
+  font-family: 'Open Sans';
+  font-style: normal;
+  font-weight: 700;
+  font-stretch: normal;
+  font-display: swap;
+  src: url(fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1y4k.woff) format('woff');
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/simplex/_variables.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/simplex/_variables.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/simplex/_variables.scss	(revision 3762)
@@ -0,0 +1,105 @@
+// Simplex 4.6.0
+// Bootswatch
+
+//
+// Color system
+//
+
+$white:    #fff !default;
+$gray-100: #f8f9fa !default;
+$gray-200: #ddd !default;
+$gray-300: #ccc !default;
+$gray-400: #bbb !default;
+$gray-500: #adb5bd !default;
+$gray-600: #777 !default;
+$gray-700: #444 !default;
+$gray-800: #373a3c !default;
+$gray-900: #212529 !default;
+$black:    #000 !default;
+
+$blue:    #007bff !default;
+$indigo:  #6610f2 !default;
+$purple:  #9b479f !default;
+$pink:    #e83e8c !default;
+$red:     #d9230f !default;
+$orange:  #d9831f !default;
+$yellow:  #ffc107 !default;
+$green:   #469408 !default;
+$teal:    #20c997 !default;
+$cyan:    #029acf !default;
+
+$primary:       $red !default;
+$secondary:     $white !default;
+$success:       $green !default;
+$info:          $cyan !default;
+$warning:       $orange !default;
+$danger:        $purple !default;
+$light:         $white !default;
+$dark:          $gray-800 !default;
+
+$enable-shadows: true !default;
+
+// Body
+
+$body-bg:                   mix($white, $black, 99%) !default;
+
+// Fonts
+
+// stylelint-disable-next-line value-keyword-case
+$font-family-sans-serif:      "Open Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !default;
+$font-size-base:              .8125rem !default;
+
+// Dropdowns
+
+$dropdown-link-hover-color:         $white !default;
+$dropdown-link-hover-bg:            $primary !default;
+
+// Navs
+
+$nav-link-padding-y:                .9rem !default;
+$nav-link-disabled-color:           $gray-400 !default;
+$nav-tabs-border-color:             mix($white, $black, 93.5%) !default;
+
+// Navbar
+
+$navbar-dark-color:                 rgba($white, .75) !default;
+$navbar-dark-hover-color:           $white !default;
+
+// Pagination
+
+$pagination-border-color:           $nav-tabs-border-color !default;
+$pagination-hover-color:            $white !default;
+$pagination-hover-bg:               $primary !default;
+$pagination-hover-border-color:     $primary !default;
+$pagination-disabled-color:         $gray-400 !default;
+$pagination-disabled-border-color:  $pagination-border-color !default;
+
+// Jumbotron
+
+$jumbotron-bg:                      $nav-tabs-border-color !default;
+
+// Cards
+
+$card-border-color:                 $nav-tabs-border-color !default;
+
+// Popovers
+
+$popover-border-color:              $nav-tabs-border-color !default;
+
+// Modals
+
+$modal-content-border-color:        $nav-tabs-border-color !default;
+$modal-header-border-color:         $nav-tabs-border-color !default;
+
+// Progress bars
+
+$progress-bar-color:                $primary !default;
+
+// List group
+
+$list-group-border-color:           $nav-tabs-border-color !default;
+$list-group-disabled-bg:            $nav-tabs-border-color !default;
+
+// Breadcrumbs
+
+$breadcrumb-bg:                     $white !default;
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/simplex/_bootswatch.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/simplex/_bootswatch.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/simplex/_bootswatch.scss	(revision 3762)
@@ -0,0 +1,128 @@
+// Simplex 4.6.0
+// Bootswatch
+
+
+// Variables ===================================================================
+
+$web-font-path: "https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap" !default;
+@import url($web-font-path);
+
+// Mixins ======================================================================
+
+@mixin btn-shadow($color){
+  @include gradient-y-three-colors(lighten($color, 3%), $color, 6%, darken($color, 3%));
+  filter: none;
+  border: 1px solid darken($color, 6.5%);
+}
+
+// Navbar ======================================================================
+
+.navbar {
+  border-width: 1px;
+  border-style: solid;
+
+  &-fixed-top {
+    border-width: 0 0 1px;
+  }
+
+  &-fixed-bottom {
+    border-top-width: 1px 0 0 0;
+    border-style: solid;
+  }
+}
+
+.bg-primary {
+  background-color: $primary !important;
+  border-color: darken($primary, 6.5%) !important;
+}
+
+.bg-dark {
+  border-color: darken($dark, 6.5%) !important;
+}
+
+.bg-light {
+  border-color: darken($white, 6.5%);
+}
+
+// Buttons =====================================================================
+
+.btn-primary,
+.btn-primary:hover {
+  @include btn-shadow($primary);
+}
+
+.btn-secondary,
+.btn-secondary:hover {
+  @include btn-shadow($secondary);
+}
+
+.btn-secondary:focus,
+.btn-secondary:not([disabled]):not(.disabled):active,
+.btn-secondary:not([disabled]):not(.disabled).active {
+  box-shadow: 0 0 0 .2rem rgba($gray-200, .5);
+}
+
+.btn-success,
+.btn-success:hover {
+  @include btn-shadow($success);
+}
+
+.btn-info,
+.btn-info:hover {
+  @include btn-shadow($info);
+}
+
+.btn-warning,
+.btn-warning:hover {
+  @include btn-shadow($warning);
+}
+
+.btn-danger,
+.btn-danger:hover {
+  @include btn-shadow($danger);
+}
+
+.btn-dark,
+.btn-dark:hover {
+  @include btn-shadow($dark);
+}
+
+.btn-light,
+.btn-light:hover {
+  @include btn-shadow($light);
+}
+
+.btn-outline-secondary {
+  border-color: $gray-400;
+  color: $gray-400;
+
+  &:hover {
+    background-color: $gray-400;
+    color: $white;
+  }
+}
+
+// Typography ==================================================================
+
+.text-secondary {
+  color: $gray-600 !important;
+}
+
+// Forms =======================================================================
+
+legend,
+label {
+  color: $headings-color;
+}
+
+// Navs =======================================================================
+
+.breadcrumb {
+  border: 1px solid darken($white, 6.5%);
+}
+
+.pagination {
+  .page-link:hover {
+    text-decoration: none;
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/materia/_bootswatch.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/materia/_bootswatch.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/materia/_bootswatch.scss	(revision 3762)
@@ -0,0 +1,750 @@
+// Materia 4.6.0
+// Bootswatch
+
+
+// Variables ===================================================================
+
+$web-font-path: "https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&display=swap" !default;
+@import url($web-font-path);
+
+// Mixins ======================================================================
+
+@mixin ripple($color){
+  position: relative;
+
+  &::before {
+    content: "";
+    display: block;
+    position: absolute;
+    width: 100%;
+    height: 100%;
+    top: 0;
+    left: 0;
+    margin-left: 0;
+    @include gradient-radial($color 10%, transparent 10.01%);
+    background-size: 1000% 1000%;
+    background-position: 50%;
+    border: none;
+    opacity: 0;
+    pointer-events: none;
+    transition: background .5s, opacity 1s;
+  }
+
+  &:active::before {
+    background-size: 0 0;
+    opacity: .2;
+    transition: none;
+  }
+
+  &.disabled,
+  &[disabled] {
+    &::before {
+      display: none;
+    }
+  }
+}
+
+@mixin btn($class,$bg,$color){
+  .btn-#{$class} {
+    &:focus {
+      background-color: $bg;
+      box-shadow: $btn-focus-box-shadow;
+    }
+
+    &:hover,
+    &:active:hover {
+      background-color: darken($bg, 6%);
+    }
+
+    &:active {
+      box-shadow: $btn-active-box-shadow;
+    }
+
+    @include ripple($color);
+  }
+
+  .btn-outline-#{$class} {
+    @include ripple($color);
+  }
+}
+
+.dropdown-toggle::after,
+.dropup .dropdown-toggle::after,
+.dropright .dropdown-toggle::after,
+.dropleft .dropdown-toggle::after {
+  border-width: 4px;
+}
+
+// Navbar ======================================================================
+
+.navbar {
+  border: none;
+  box-shadow: 0 1px 2px rgba($black, .3);
+
+  &-brand {
+    font-size: 24px;
+  }
+
+  &-nav .nav-link {
+    padding-top: .9rem;
+    padding-bottom: .9rem;
+  }
+
+  &.bg-dark,
+  &.bg-primary {
+    input[type="text"],
+    input[type="password"],
+    input[type="email"],
+    input[type="number"],
+    input[type="tel"] {
+      color: $white;
+      box-shadow: inset 0 -1px 0 rgba($white, .5);
+
+      &:focus {
+        box-shadow: inset 0 -2px 0 $white;
+      }
+
+      &::placeholder {
+        color: rgba($white, .5);
+      }
+    }
+  }
+}
+
+// Buttons =====================================================================
+
+@include btn(primary, $primary, $white);
+@include btn(secondary, $secondary, $gray-500);
+@include btn(success, $success, $white);
+@include btn(info, $info, $white);
+@include btn(warning, $warning, $white);
+@include btn(danger, $danger, $white);
+@include btn(dark, $dark, $white);
+@include btn(light, $light, $white);
+
+.btn {
+  text-transform: uppercase;
+  border: none;
+  box-shadow: $btn-box-shadow;
+  transition: color .4s, background-color .4s, border-color .4s, box-shadow .4s;
+
+  &-link {
+    box-shadow: none;
+    color: $link-color;
+
+    &:hover,
+    &:focus {
+      box-shadow: none;
+      color: $link-hover-color;
+      text-decoration: $link-hover-decoration;
+      -webkit-text-decoration: $link-hover-decoration;
+      -moz-text-decoration: $link-hover-decoration;
+      -ms-text-decoration: $link-hover-decoration;
+      -o-text-decoration: $link-hover-decoration;
+    }
+
+    &.disabled, // Although btn-link is intended for buttons, which want to look like link, I include here a.disable for the sake of consistency
+    &[disabled],
+    fieldset[disabled] & {
+      &:hover,
+      &:active:hover {
+        color: $btn-link-disabled-color;
+        text-decoration: none;
+      }
+    }
+  }
+
+  &-secondary {
+    &.disabled,
+    &[disabled],
+    fieldset[disabled] & {
+      background-color: rgba($black, .1);
+      color: rgba($black, .4);
+      opacity: 1;
+
+      &:hover,
+      &:focus {
+        background-color: rgba($black, .1);
+      }
+    }
+  }
+
+  &-outline-secondary {
+    border-color: $gray-200;
+    color: $gray-300;
+  }
+
+  &-warning {
+    color: $white;
+  }
+}
+
+.btn-group {
+  .btn + .btn,
+  .btn + .btn-group,
+  .btn-group + .btn,
+  .btn-group + .btn-group {
+    margin-left: 0;
+  }
+
+  &-vertical {
+    > .btn + .btn,
+    > .btn + .btn-group,
+    > .btn-group + .btn,
+    > .btn-group + .btn-group {
+      margin-top: 0;
+    }
+  }
+
+  .btn + .btn,
+  .btn + .btn-group > .dropdown-toggle {
+    box-shadow: 1px 1px 4px rgba($black, .4);
+  }
+}
+
+.border-secondary {
+  border: 1px solid mix($white, $black, 86.7%) !important;
+}
+
+// Typography ==================================================================
+
+body,
+input,
+button {
+  -webkit-font-smoothing: antialiased;
+  letter-spacing: .1px;
+}
+
+p {
+  margin: 0 0 1em;
+}
+
+.text-secondary {
+  color: $gray-500 !important;
+}
+
+// Tables ======================================================================
+
+.table-hover {
+  > tbody > tr,
+  > tbody > tr > th,
+  > tbody > tr > td {
+    transition: background-color .2s, color .2s;
+  }
+}
+
+.thead-inverse th {
+  background-color: $primary;
+  color: $white;
+}
+
+// Forms =======================================================================
+
+.col-form-label {
+  font-size: 16px;
+
+  &-sm {
+    font-size: $font-size-sm;
+  }
+
+  &-lg {
+    font-size: $font-size-lg;
+  }
+}
+
+textarea,
+textarea.form-control,
+input.form-control,
+input[type="text"],
+input[type="password"],
+input[type="email"],
+input[type="number"],
+[type="text"].form-control,
+[type="password"].form-control,
+[type="email"].form-control,
+[type="tel"].form-control,
+[contenteditable].form-control {
+  box-shadow: $input-box-shadow;
+  transition: box-shadow .2s;
+
+  &:focus {
+    box-shadow: $input-focus-box-shadow;
+  }
+
+  &[disabled],
+  &[readonly] {
+    box-shadow: none;
+    border-bottom: 1px dotted mix($white, $black, 86.7%);
+  }
+
+  &[disabled],
+  &[disabled]::placeholder {
+    color: mix($white, $black, 86.7%);
+  }
+
+  &::-ms-clear {
+    display: none;
+  }
+}
+
+select,
+select.form-control {
+  appearance: none;
+  -webkit-appearance: none;
+  -moz-appearance: none;
+  -ms-appearance: none;
+  -o-appearance: none;
+  padding: .5rem 0;
+  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='4' viewBox='0 0 8 4'%3e%3cpolygon fill='%23666' points='8 0 4 4 0 0'/%3e%3c/svg%3e%0a");
+  background-size: 8px 4px;
+  background-repeat: no-repeat;
+  background-position: right center;
+  box-shadow: $input-box-shadow;
+
+  &::-ms-expand {
+    display: none;
+  }
+
+  &.input {
+    &-sm {
+      font-size: $font-size-sm;
+    }
+
+    &-lg {
+      font-size: $font-size-lg;
+    }
+  }
+
+  &:focus {
+    box-shadow: $input-focus-box-shadow;
+    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='4' viewBox='0 0 8 4'%3e%3cpolygon fill='%23212121' points='8 0 4 4 0 0'/%3e%3c/svg%3e%0a");
+  }
+
+  &[multiple] {
+    background: none;
+  }
+}
+
+.custom-control {
+  min-height: 1.5rem;
+}
+
+.custom-control-label {
+  &::before {
+    top: 0;
+    border: 2px solid $gray-400;
+  }
+  &::after {
+    top: 0;
+  }
+
+  .custom-control-input:checked ~ &::before {
+    border-color: $primary;
+  }
+}
+
+.custom-checkbox .custom-control-input:checked {
+  ~ .custom-control-label::before {
+    background-image: none;
+  }
+
+  ~ .custom-control-label::after {
+    transform: scale(1.5);
+  }
+}
+
+.custom-radio .custom-control-input {
+  ~ .custom-control-label::after {
+    transform: scale(.75);
+  }
+
+  &:checked {
+    ~ .custom-control-label::before {
+      background-color: $white;
+      background-image: none;
+      transition: border-color .24s;
+    }
+    ~ .custom-control-label::after {
+      transform: scale(1.125);
+      transition: background-image .24s, transform .24s;
+    }
+  }
+}
+
+.custom-switch {
+  .custom-control-label::before {
+    top: .125rem;
+    height: .875rem;
+    background-color: $gray-500;
+    border: none;
+  }
+
+  .custom-control-input:disabled ~ .custom-control-label {
+    opacity: .7;
+  }
+
+  .custom-control-input:disabled ~ .custom-control-label::before {
+    background-color: $gray-500;
+  }
+
+  .custom-control-label::after {
+    background-color: $white;
+    box-shadow: 0 1px 4px rgba($black, .3);
+  }
+
+  .custom-control-input:checked ~ .custom-control-label::before {
+    opacity: .38;
+  }
+
+  .custom-control-input:checked ~ .custom-control-label::after {
+    background-color: $primary;
+  }
+
+  .custom-control-input:hover:not(:disabled) ~ .custom-control-label::after {
+    box-shadow: 0 1px 4px rgba($black, .3), 0 0 0 9px rgba($black, .05);
+  }
+
+  .custom-control-input:focus:not(:disabled) ~ .custom-control-label::after {
+    box-shadow: 0 1px 4px rgba($black, .3), 0 0 0 9px rgba($black, .09);
+  }
+
+  .custom-control-input:active:not(:disabled) ~ .custom-control-label::after {
+    box-shadow: 0 1px 4px rgba($black, .3), 0 0 0 9px rgba($black, .16);
+  }
+
+  // TODO: variablize colors
+  .custom-control-input:hover:checked:not(:disabled) ~ .custom-control-label::after {
+    box-shadow: 0 1px 4px rgba($black, .3), 0 0 0 9px rgba(33, 150, 243, .05);
+  }
+
+  .custom-control-input:focus:checked:not(:disabled) ~ .custom-control-label::after {
+    box-shadow: 0 1px 4px rgba($black, .3), 0 0 0 9px rgba(33, 150, 243, .09);
+  }
+
+  .custom-control-input:active:checked:not(:disabled) ~ .custom-control-label::after {
+    box-shadow: 0 1px 4px rgba($black, .3), 0 0 0 9px rgba(33, 150, 243, .16);
+  }
+
+  .custom-control-input:active:not(:checked) ~ .custom-control-label::before {
+    background-color: $gray-500;
+  }
+}
+
+.has-warning {
+  input:not([type="checkbox"]),
+  .form-control,
+  input.form-control[readonly],
+  input[type="text"][readonly],
+  [type="text"].form-control[readonly],
+  input:not([type="checkbox"]):focus,
+  .form-control:focus {
+    border-bottom: none;
+    box-shadow: inset 0 -2px 0 $warning;
+  }
+}
+
+.has-danger {
+  input:not([type="checkbox"]),
+  .form-control,
+  input.form-control[readonly],
+  input[type="text"][readonly],
+  [type="text"].form-control[readonly],
+  input:not([type="checkbox"]):focus,
+  .form-control:focus {
+    border-bottom: none;
+    box-shadow: inset 0 -2px 0 $danger;
+  }
+}
+
+.has-success {
+  input:not([type="checkbox"]),
+  .form-control,
+  input.form-control[readonly],
+  input[type="text"][readonly],
+  [type="text"].form-control[readonly],
+  input:not([type="checkbox"]):focus,
+  .form-control:focus {
+    border-bottom: none;
+    box-shadow: inset 0 -2px 0 $success;
+  }
+}
+
+// Remove the Bootstrap feedback styles for input addons
+.input-group-addon {
+  .has-warning &,
+  .has-danger &,
+  .has-success & {
+    color: $input-color;
+    border-color: $input-group-addon-border-color;
+    background-color: $input-group-addon-bg;
+  }
+}
+
+.input-group {
+  > .input-group-prepend > .input-group-text {
+    padding-right: .25rem;
+  }
+
+  > .input-group-append > .input-group-text {
+    padding-left: .25rem;
+  }
+
+  .form-control {
+    padding-left: .25rem;
+    padding-right: .25rem;
+  }
+}
+
+.input-group-sm {
+  > .input-group-prepend > .btn,
+  > .input-group-append > .btn {
+    padding: $input-btn-padding-y-sm $input-btn-padding-x-sm;
+  }
+
+  > .input-group-prepend > .input-group-text {
+    padding: 0 $input-btn-padding-x-sm $input-btn-padding-y-sm $input-btn-padding-x-sm;
+  }
+
+  > .input-group-append > .input-group-text {
+    padding: 0 $input-btn-padding-x-sm $input-btn-padding-y-sm $input-btn-padding-x-sm;
+  }
+
+  > .input-group-prepend > .btn {
+    border-top-left-radius: $btn-border-radius-sm;
+    border-bottom-left-radius: $btn-border-radius-sm;
+  }
+
+  > .input-group-append > .btn {
+    border-top-right-radius: $btn-border-radius-sm;
+    border-bottom-right-radius: $btn-border-radius-sm;
+  }
+}
+
+.input-group-lg {
+  > .input-group-prepend > .btn,
+  > .input-group-append > .btn {
+    padding: $input-btn-padding-y-lg $input-btn-padding-x-lg;
+  }
+
+  > .input-group-prepend > .input-group-text {
+    padding: $input-btn-padding-y-lg $input-btn-padding-x-lg $input-btn-padding-y-lg 0;
+  }
+
+  > .input-group-append > .input-group-text {
+    padding: $input-btn-padding-y-lg 0 $input-btn-padding-y-lg $input-btn-padding-x-lg;
+  }
+
+  > .input-group-prepend > .btn {
+    border-top-left-radius: $btn-border-radius-lg;
+    border-bottom-left-radius: $btn-border-radius-lg;
+  }
+
+  > .input-group-append > .btn {
+    border-top-right-radius: $btn-border-radius-lg;
+    border-bottom-right-radius: $btn-border-radius-lg;
+  }
+}
+
+
+.form-group-lg {
+  select,
+  select.form-control {
+    line-height: 1.5;
+  }
+}
+
+// Navs ========================================================================
+
+// TODO: bs3compat?
+.nav-tabs {
+  .nav-item + .nav-item {
+    margin-left: 0;
+  }
+
+  .nav-link, li>a,
+  .nav-link:focus, li>a:focus {
+    margin-right: 0;
+    background-color: transparent;
+    border: none;
+    color: $body-color;
+    box-shadow: inset 0 -1px 0 mix($white, $black, 86.7%);
+    transition: color .2s, box-shadow .2s;
+
+    &:hover {
+      background-color: transparent;
+      box-shadow: inset 0 -2px 0 $primary;
+      color: $primary;
+    }
+  }
+
+  .nav-link.active, li.active>a
+  .nav-link.active:focus, li.active>a:focus {
+    border: none;
+    box-shadow: inset 0 -2px 0 $primary;
+    color: $primary;
+
+    &:hover {
+      border: none;
+      color: $primary;
+    }
+  }
+
+  .nav-link.disabled, li>a.disabled {
+    box-shadow: inset 0 -1px 0 mix($white, $black, 86.7%);
+  }
+
+  &.nav-justified {
+    .nav-link,
+    .nav-link:hover,
+    .nav-link:focus,
+    .nav-link.active,
+    .nav-link.active:hover,
+    .nav-link.active:focus {
+      border: none;
+    }
+  }
+
+  .dropdown-menu {
+    margin-top: 0;
+  }
+}
+
+.dropdown-menu {
+  margin-top: 0;
+  border: none;
+  box-shadow: 0 1px 4px rgba($black, .3);
+}
+
+// Indicators ==================================================================
+
+.alert {
+  padding-right: 2.5rem;
+  border: none;
+
+  &,
+  h1,
+  h2,
+  h3,
+  h4,
+  h5,
+  h6 {
+    color: $white;
+  }
+
+  @each $color, $value in $theme-colors {
+    &-#{$color} {
+      @if $enable-gradients {
+        background: $value linear-gradient(180deg, mix($body-bg, $value, 15%), $value) repeat-x;
+      } @else {
+        background-color: $value;
+      }
+    }
+  }
+
+  a:not(.btn),
+  .alert-link {
+    color: $white;
+    font-weight: 700;
+  }
+
+  .close {
+    color: $white;
+  }
+
+  &-secondary,
+  &-light {
+    &,
+    a:not(.btn),
+    .alert-link {
+      color: $body-color;
+    }
+  }
+}
+
+.badge {
+  &-secondary {
+    background-color: $gray-500;
+    color: $white;
+  }
+
+  &-light {
+    background-color: $gray-200;
+  }
+
+  &-warning {
+    color: $white;
+  }
+}
+
+.tag {
+  padding: 4px 6px;
+}
+
+// Containers ==================================================================
+
+.close {
+  line-height: .5;
+  opacity: .6;
+  transition: opacity .2s;
+
+  &:hover {
+    opacity: 1;
+  }
+}
+
+.card {
+  box-shadow: 0 1px 4px rgba($black, .4);
+
+  &.border-primary,
+  &.border-secondary,
+  &.border-success,
+  &.border-info,
+  &.border-warning,
+  &.border-danger,
+  &.border-light,
+  &.border-dark {
+    border-width: 1px;
+  }
+}
+
+.alert-dismissible {
+  .close {
+    padding: .5rem .75rem;
+  }
+}
+
+.list-group {
+  &-item-action.active {
+    h1,
+    h2,
+    h3,
+    h4,
+    h5,
+    h6 {
+      color: $white;
+    }
+  }
+}
+
+.modal-content {
+  border-radius: .2rem;
+  box-shadow: 0 6px 36px rgba($black, .3);
+}
+
+.popover {
+  border: none;
+  box-shadow: 0 1px 4px rgba($black, .3);
+}
+
+.carousel {
+  &-caption {
+    h1,
+    h2,
+    h3,
+    h4,
+    h5,
+    h6 {
+      color: inherit;
+    }
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/materia/font.css
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/materia/font.css	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/materia/font.css	(revision 3762)
@@ -0,0 +1,28 @@
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 300;
+  font-display: swap;
+  src: url(fonts/KFOlCnqEu92Fr1MmSU5vAA.woff) format('woff');
+}
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 400;
+  font-display: swap;
+  src: url(fonts/KFOmCnqEu92Fr1Me5g.woff) format('woff');
+}
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 500;
+  font-display: swap;
+  src: url(fonts/KFOlCnqEu92Fr1MmEU9vAA.woff) format('woff');
+}
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 700;
+  font-display: swap;
+  src: url(fonts/KFOlCnqEu92Fr1MmWUlvAA.woff) format('woff');
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/materia/_variables.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/materia/_variables.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/materia/_variables.scss	(revision 3762)
@@ -0,0 +1,127 @@
+// Materia 4.6.0
+// Bootswatch
+
+//
+// Color system
+//
+
+$white:    #fff !default;
+$gray-100: #f8f9fa !default;
+$gray-200: #eee !default;
+$gray-300: #dee2e6 !default;
+$gray-400: #ced4da !default;
+$gray-500: #bbb !default;
+$gray-600: #666 !default;
+$gray-700: #444 !default;
+$gray-800: #222 !default;
+$gray-900: #212121 !default;
+$black:    #000 !default;
+
+$blue:    #2196f3 !default;
+$indigo:  #6610f2 !default;
+$purple:  #6f42c1 !default;
+$pink:    #e83e8c !default;
+$red:     #e51c23 !default;
+$orange:  #fd7e14 !default;
+$yellow:  #ff9800 !default;
+$green:   #4caf50 !default;
+$teal:    #20c997 !default;
+$cyan:    #9c27b0 !default;
+
+$primary:       $blue !default;
+$secondary:     $white !default;
+$success:       $green !default;
+$info:          $cyan !default;
+$warning:       $yellow !default;
+$danger:        $red !default;
+$light:         $white !default;
+$dark:          $gray-800 !default;
+
+$enable-gradients: true !default;
+
+// Body
+
+$body-color:    $gray-700 !default;
+
+// Fonts
+
+// stylelint-disable-next-line value-keyword-case
+$font-family-sans-serif:    Roboto, -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Arial, sans-serif !default;
+$font-size-base:            .8125rem !default;
+$font-weight-base:          400 !default;
+
+// Buttons
+
+$input-btn-padding-y:       .8rem !default;
+$input-btn-padding-x:       1rem !default;
+
+// Forms
+
+$input-padding-y:                1rem !default;
+$input-padding-x:                0 !default;
+$input-padding-y-sm:             0 !default;
+$input-padding-x-sm:             0 !default;
+$input-padding-y-lg:             ($font-size-base * 1.25) !default;
+$input-padding-x-lg:             0 !default;
+$input-bg:                       transparent !default;
+$input-disabled-bg:              transparent !default;
+$input-color:                    $gray-600 !default;
+$input-border-color:             transparent !default;
+$input-border-width:             0 !default;
+$input-border-radius:            0 !default;
+$input-border-radius-lg:         0 !default;
+$input-border-radius-sm:         0 !default;
+$input-placeholder-color:        rgba(0, 0, 0, .4) !default;
+$input-group-addon-bg:           transparent !default;
+$custom-control-gutter:          1.75rem !default;
+$custom-control-indicator-focus-box-shadow: 0 !default;
+$custom-control-indicator-size:  1.25rem !default;
+$custom-control-indicator-bg:    $white !default;
+$custom-checkbox-indicator-border-radius: 2px !default;
+$custom-control-indicator-disabled-bg: $gray-100 !default;
+$custom-radio-indicator-icon-checked: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='4' fill='#2196f3'/></svg>") !default;
+$custom-select-border-radius:       0 !default;
+$custom-select-box-shadow:          none !default;
+
+// Navs
+
+$nav-link-disabled-color:       $gray-500 !default;
+$nav-tabs-border-color:         transparent !default;
+
+// Navbar
+
+$navbar-padding-y:                  1rem !default;
+$navbar-dark-color:                 rgba($white, .75) !default;
+$navbar-dark-hover-color:           $white !default;
+
+// Cards
+
+$card-border-width:                 0 !default;
+$card-border-color:                 transparent !default;
+
+// Tooltips
+
+$tooltip-bg:                        $gray-700 !default;
+
+// Modals
+
+$modal-content-border-color:        transparent !default;
+
+// Progress bars
+
+$progress-height:               .375rem !default;
+$progress-border-radius:        0 !default;
+
+// Close
+
+$close-font-size:             2.125rem !default;
+$close-font-weight:           300 !default;
+
+
+// Box shadows
+$enable-shadows: true !default;
+$btn-box-shadow:         0 1px 4px mix($white, $black, 60%) !default;
+$btn-active-box-shadow:  2px 2px 4px mix($white, $black, 60%) !default;
+$btn-focus-box-shadow:   0 0 0 2px mix($white, $black, 40%) !default;
+$input-box-shadow:       inset 0 -1px 0 mix($white, $black, 86.7%) !default;
+$input-focus-box-shadow: inset 0 -2px 0 $primary !default;
\ No newline at end of file
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/darkly/_bootswatch.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/darkly/_bootswatch.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/darkly/_bootswatch.scss	(revision 3762)
@@ -0,0 +1,255 @@
+// Darkly 4.6.0
+// Bootswatch
+
+
+// Variables ===================================================================
+
+$web-font-path: "https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,400;0,700;1,400&display=swap" !default;
+@import url($web-font-path);
+
+// Functions ======================================================================
+
+@function darken($color, $percent) {
+  @return mix($body-bg, $color, $percent);
+}
+@function lighten($color, $percent) {
+  @return mix($body-color, $color, $percent);
+}
+
+// Typography ==================================================================
+
+.blockquote {
+  &-footer {
+    color: body-mix(75%);
+  }
+}
+
+// Tables ======================================================================
+
+.table {
+  &-primary {
+    &,
+    > th,
+    > td {
+      background-color: $primary;
+    }
+  }
+
+  &-secondary {
+    &,
+    > th,
+    > td {
+      background-color: $secondary;
+    }
+  }
+
+  &-light {
+    &,
+    > th,
+    > td {
+      background-color: $light;
+    }
+  }
+
+  &-dark {
+    &,
+    > th,
+    > td {
+      background-color: $dark;
+    }
+  }
+
+  &-success {
+    &,
+    > th,
+    > td {
+      background-color: $success;
+    }
+  }
+
+  &-info {
+    &,
+    > th,
+    > td {
+      background-color: $info;
+    }
+  }
+
+  &-danger {
+    &,
+    > th,
+    > td {
+      background-color: $danger;
+    }
+  }
+
+  &-warning {
+    &,
+    > th,
+    > td {
+      background-color: $warning;
+    }
+  }
+
+  &-active {
+    &,
+    > th,
+    > td {
+      background-color: $table-active-bg;
+    }
+  }
+
+  &-hover {
+    .table-primary:hover {
+      &,
+      > th,
+      > td {
+        background-color: darken($primary, 5%);
+      }
+    }
+
+    .table-secondary:hover {
+      &,
+      > th,
+      > td {
+        background-color: darken($secondary, 5%);
+      }
+    }
+
+    .table-light:hover {
+      &,
+      > th,
+      > td {
+        background-color: darken($light, 5%);
+      }
+    }
+
+    .table-dark:hover {
+      &,
+      > th,
+      > td {
+        background-color: darken($dark, 5%);
+      }
+    }
+
+    .table-success:hover {
+      &,
+      > th,
+      > td {
+        background-color: darken($success, 5%);
+      }
+    }
+
+    .table-info:hover {
+      &,
+      > th,
+      > td {
+        background-color: darken($info, 5%);
+      }
+    }
+
+    .table-danger:hover {
+      &,
+      > th,
+      > td {
+        background-color: darken($danger, 5%);
+      }
+    }
+
+    .table-warning:hover {
+      &,
+      > th,
+      > td {
+        background-color: darken($warning, 5%);
+      }
+    }
+
+    .table-active:hover {
+      &,
+      > th,
+      > td {
+        background-color: $table-active-bg;
+      }
+    }
+
+  }
+}
+
+// Forms =======================================================================
+
+.input-group-addon {
+  color: $body-color;
+}
+
+// Navs ========================================================================
+
+.nav-tabs,
+.nav-pills {
+  .nav-link,
+  .nav-link.active,
+  .nav-link.active:focus,
+  .nav-link.active:hover,
+  .nav-item.open .nav-link,
+  .nav-item.open .nav-link:focus,
+  .nav-item.open .nav-link:hover {
+    color: $body-color;
+  }
+}
+
+.breadcrumb a {
+  color: $body-color;
+}
+
+.pagination {
+  a:hover {
+    text-decoration: none;
+  }
+}
+
+// Indicators ==================================================================
+
+.close {
+  opacity: .4;
+
+  &:hover,
+  &:focus {
+    opacity: 1;
+  }
+}
+
+.alert {
+  border: none;
+  color: $body-color;
+
+  a,
+  .alert-link {
+    color: $body-color;
+    text-decoration: underline;
+  }
+
+  @each $color, $value in $theme-colors {
+    &-#{$color} {
+      @if $enable-gradients {
+        background: $value linear-gradient(180deg, mix($body-color, $value, 15%), $value) repeat-x;
+      } @else {
+        background-color: $value;
+      }
+    }
+  }
+}
+
+// Containers ==================================================================
+
+.list-group-item-action {
+  color: $body-color;
+
+  &:hover,
+  &:focus {
+    background-color: body-mix(85%);
+    color: $body-color;
+  }
+
+  .list-group-item-heading {
+    color: $body-color;
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/darkly/font.css
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/darkly/font.css	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/darkly/font.css	(revision 3762)
@@ -0,0 +1,21 @@
+@font-face {
+  font-family: 'Lato';
+  font-style: italic;
+  font-weight: 400;
+  font-display: swap;
+  src: url(fonts/S6u8w4BMUTPHjxswWA.woff) format('woff');
+}
+@font-face {
+  font-family: 'Lato';
+  font-style: normal;
+  font-weight: 400;
+  font-display: swap;
+  src: url(fonts/S6uyw4BMUTPHvxo.woff) format('woff');
+}
+@font-face {
+  font-family: 'Lato';
+  font-style: normal;
+  font-weight: 700;
+  font-display: swap;
+  src: url(fonts/S6u9w4BMUTPHh6UVeww.woff) format('woff');
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/darkly/_variables.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/darkly/_variables.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/darkly/_variables.scss	(revision 3762)
@@ -0,0 +1,167 @@
+// Darkly 4.6.0
+// Bootswatch
+
+//
+// Color system
+//
+
+$white:    #fff !default;
+$gray-100: #f8f9fa !default;
+$gray-200: #ebebeb !default;
+$gray-300: #dee2e6 !default;
+$gray-400: #ced4da !default;
+$gray-500: #adb5bd !default;
+$gray-600: #888 !default;
+$gray-700: #444 !default;
+$gray-800: #303030 !default;
+$gray-900: #222 !default;
+$black:    #000 !default;
+
+$blue:    #375a7f !default;
+$indigo:  #6610f2 !default;
+$purple:  #6f42c1 !default;
+$pink:    #e83e8c !default;
+$red:     #e74c3c !default;
+$orange:  #fd7e14 !default;
+$yellow:  #f39c12 !default;
+$green:   #00bc8c !default;
+$teal:    #20c997 !default;
+$cyan:    #3498db !default;
+
+// Body
+
+$body-bg:                   $gray-900 !default;
+$body-color:                $white !default;
+@function body-mix($weight) {
+    @return mix($body-bg, $body-color, $weight);
+}
+
+$primary:       $blue !default;
+$secondary:     body-mix(85%) !default;
+$success:       $green !default;
+$info:          $cyan !default;
+$warning:       $yellow !default;
+$danger:        $red !default;
+// This is inconsistent with Bootstrap semantics. That is, $dark
+// should actually be a light color in a dark mode setting, :shrug:
+// https://github.com/thomaspark/bootswatch/issues/989
+$light:         body-mix(65%) !default;
+$dark:          body-mix(95%) !default;
+
+
+$component-active-color: $body-color !default;
+
+// Links
+
+$link-color:                $success !default;
+
+// Fonts
+
+// stylelint-disable-next-line value-keyword-case
+$font-family-sans-serif:      Lato, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !default;
+$font-size-base:              .9375rem !default;
+$font-size-sm:                $font-size-base * .88 !default;
+$h1-font-size:                3rem !default;
+$h2-font-size:                2.5rem !default;
+$h3-font-size:                2rem !default;
+$text-muted:                  body-mix(75%) !default;
+
+// Tables
+
+$table-accent-bg:             body-mix(95%) !default;
+$table-border-color:          body-mix(85%) !default;
+
+// Forms
+
+$input-border-color:                $body-bg !default;
+$input-group-addon-color:           body-mix(65%) !default;
+$input-group-addon-bg:              body-mix(85%) !default;
+$custom-file-color:                 body-mix(65%) !default;
+$custom-file-border-color:          $body-bg !default;
+
+// Dropdowns
+
+$dropdown-bg:                       $body-bg !default;
+$dropdown-border-color:             body-mix(85%) !default;
+$dropdown-divider-bg:               body-mix(85%) !default;
+$dropdown-link-color:               $body-color !default;
+$dropdown-link-hover-color:         $body-color !default;
+$dropdown-link-hover-bg:            $primary !default;
+
+// Navs
+
+$nav-link-padding-x:                2rem !default;
+$nav-link-disabled-color:           body-mix(65%) !default;
+$nav-tabs-border-color:             body-mix(85%) !default;
+$nav-tabs-link-hover-border-color:  $nav-tabs-border-color $nav-tabs-border-color transparent !default;
+$nav-tabs-link-active-color:        $body-color !default;
+$nav-tabs-link-active-border-color: $nav-tabs-border-color $nav-tabs-border-color transparent !default;
+
+// Navbar
+
+$navbar-padding-y:                  1rem !default;
+$navbar-light-bg:                   $primary !default;
+$navbar-dark-bg:                    $success !default;
+
+// Pagination
+
+$pagination-color:                  $body-color !default;
+$pagination-bg:                     $success !default;
+$pagination-border-width:           0 !default;
+$pagination-border-color:           transparent !default;
+$pagination-hover-color:            $body-color !default;
+$pagination-hover-bg:               mix($body-color, $success, 10%) !default;
+$pagination-hover-border-color:     transparent !default;
+$pagination-active-bg:              $pagination-hover-bg !default;
+$pagination-active-border-color:    transparent !default;
+$pagination-disabled-color:         $body-color !default;
+$pagination-disabled-bg:            mix($body-bg, $success, 15%) !default;
+$pagination-disabled-border-color:  transparent !default;
+
+// Jumbotron
+
+$jumbotron-bg:                      body-mix(95%) !default;
+
+// Cards
+
+$card-cap-bg:                       body-mix(85%) !default;
+$card-bg:                           body-mix(95%) !default;
+
+// Popovers
+
+$popover-bg:                        body-mix(95%) !default;
+$popover-header-bg:                 body-mix(85%) !default;
+
+// Toasts
+
+$toast-background-color:            body-mix(85%) !default;
+$toast-header-background-color:     body-mix(95%) !default;
+
+// Modals
+
+$modal-content-bg:                  body-mix(95%) !default;
+$modal-content-border-color:        body-mix(85%) !default;
+$modal-header-border-color:         body-mix(85%) !default;
+
+// Progress bars
+
+$progress-bg:                       body-mix(85%) !default;
+
+// List group
+
+$list-group-bg:                     body-mix(95%) !default;
+$list-group-border-color:           body-mix(85%) !default;
+$list-group-hover-bg:               body-mix(85%) !default;
+
+// Breadcrumbs
+
+$breadcrumb-bg:                     body-mix(85%) !default;
+
+// Close
+
+$close-color:                       $body-color !default;
+$close-text-shadow:                 none !default;
+
+// Code
+
+$pre-color:                         inherit !default;
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/pulse/_bootswatch.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/pulse/_bootswatch.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/pulse/_bootswatch.scss	(revision 3762)
@@ -0,0 +1,145 @@
+// Pulse 4.6.0
+// Bootswatch
+
+// Buttons =====================================================================
+
+.btn {
+  &:focus,
+  &:active,
+  &:active:focus,
+  &.active:focus {
+    outline: none;
+  }
+
+  &-secondary {
+    background-color: $white;
+    border-color: #ccc;
+    color: $gray-900;
+
+    &:hover {
+      background-color: $gray-300;
+      border-color: $gray-500;
+      color: $gray-900;
+    }
+
+    &.disabled {
+      background-color: $white;
+      border-color: lighten(#ccc, 5%);
+      color: lighten($gray-900, 5%);
+    }
+  }
+
+  &-warning {
+    color: $white;
+  }
+
+  &-primary:focus {
+    box-shadow: 0 0 5px lighten($primary, 10%);
+  }
+
+  &-secondary:focus {
+    box-shadow: 0 0 5px $gray-400;
+  }
+
+  &-success:focus {
+    box-shadow: 0 0 5px lighten($success, 10%);
+  }
+
+  &-info:focus {
+    box-shadow: 0 0 5px lighten($info, 10%);
+  }
+
+  &-warning:focus {
+    box-shadow: 0 0 5px lighten($warning, 10%);
+  }
+
+  &-danger:focus {
+    box-shadow: 0 0 5px lighten($danger, 10%);
+  }
+
+  &.disabled:focus {
+    box-shadow: none;
+  }
+}
+
+// Tables ======================================================================
+
+.table .thead-dark th {
+  background-color: $secondary;
+  border-color: $table-border-color;
+}
+
+// Forms =======================================================================
+
+.form-control:focus {
+  box-shadow: 0 0 5px rgba(100, 65, 164, .4);
+}
+
+// Navs ========================================================================
+
+.nav-tabs {
+  .nav-link,
+  .nav-link.active, {
+    border-width: 0 0 1px;
+  }
+
+  .nav-link:hover,
+  .nav-link.active,
+  .nav-link.active:hover,
+  .nav-link.active:focus {
+    border-bottom: 1px solid $primary;
+  }
+
+  .nav-item + .nav-item {
+    margin-left: 0;
+  }
+}
+
+.breadcrumb {
+  &-item.active {
+    color: $gray-700;
+  }
+}
+
+// Indicators ==================================================================
+
+.badge {
+  padding-bottom: .4em;
+
+  &-secondary,
+  &-warning {
+    color: $white;
+  }
+}
+
+// Progress bars ===============================================================
+
+.progress {
+  height: 8px;
+}
+
+// Containers ==================================================================
+
+.list-group {
+  &-item {
+    color: rgba(255, 255, 255, .8);
+
+    &.active,
+    &:hover,
+    &:focus {
+      color: $white;
+    }
+
+    &.active {
+      font-weight: 700;
+
+      &:hover {
+        background-color: $list-group-hover-bg;
+      }
+    }
+
+    &.disabled:hover {
+      color: $list-group-disabled-color;
+    }
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/pulse/_variables.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/pulse/_variables.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/pulse/_variables.scss	(revision 3762)
@@ -0,0 +1,96 @@
+// Pulse 4.6.0
+// Bootswatch
+
+//
+// Color system
+//
+
+$white:    #fff !default;
+$gray-100: #fafafa !default;
+$gray-200: #f9f8fc !default;
+$gray-300: #ededed !default;
+$gray-400: #cbc8d0 !default;
+$gray-500: #adb5bd !default;
+$gray-600: #868e96 !default;
+$gray-700: #444 !default;
+$gray-800: #343a40 !default;
+$gray-900: #17141f !default;
+$black:    #000 !default;
+
+$blue:    #007bff !default;
+$indigo:  #6610f2 !default;
+$purple:  #593196 !default;
+$pink:    #e83e8c !default;
+$red:     #fc3939 !default;
+$orange:  #fd7e14 !default;
+$yellow:  #efa31d !default;
+$green:   #13b955 !default;
+$teal:    #20c997 !default;
+$cyan:    #009cdc !default;
+
+$primary:       $purple !default;
+$secondary:     #a991d4 !default;
+$success:       $green !default;
+$info:          $cyan !default;
+$warning:       $yellow !default;
+$danger:        $red !default;
+$light:         $gray-200 !default;
+$dark:          $gray-900 !default;
+
+// Options
+
+$enable-rounded: false !default;
+
+// Body
+
+$body-color:                $gray-700 !default;
+
+// Links
+
+$link-hover-color:          $primary !default;
+
+// Fonts
+
+$font-size-base:              .875rem !default;
+
+// Tables
+
+$table-border-color:          rgba(0, 0, 0, .05) !default;
+
+// Forms
+
+$input-focus-border-color:              $primary !default;
+
+// Dropdowns
+
+$dropdown-link-color:               $gray-700 !default;
+$dropdown-link-hover-color:         $white !default;
+$dropdown-link-hover-bg:            $primary !default;
+
+// Navs
+
+$nav-tabs-border-color:             $gray-300 !default;
+$nav-tabs-link-hover-border-color:  $primary !default;
+
+// Navbar
+
+$navbar-padding-y:                  1.2rem !default;
+$navbar-dark-hover-color:           rgba($white, .9) !default;
+$navbar-dark-active-color:          rgba($white, .9) !default;
+$navbar-light-color:                rgba($black, .4) !default;
+$navbar-light-active-color:         rgba($black, .7) !default;
+$navbar-light-disabled-color:       rgba($black, .2) !default;
+
+// Progress bars
+
+$progress-bg:                       $gray-300 !default;
+$progress-bar-bg:                   $primary !default;
+
+// List group
+
+$list-group-bg:                     $gray-900 !default;
+$list-group-border-color:           transparent !default;
+$list-group-hover-bg:               lighten($list-group-bg, 10%) !default;
+$list-group-active-color:           $white !default;
+$list-group-active-bg:              $list-group-bg !default;
+$list-group-disabled-color:         lighten($list-group-bg, 30%) !default;
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/united/_bootswatch.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/united/_bootswatch.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/united/_bootswatch.scss	(revision 3762)
@@ -0,0 +1,8 @@
+// United 4.6.0
+// Bootswatch
+
+
+// Variables ===================================================================
+
+$web-font-path: "https://fonts.googleapis.com/css2?family=Ubuntu:wght@400;700&display=swap" !default;
+@import url($web-font-path);
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/united/font.css
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/united/font.css	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/united/font.css	(revision 3762)
@@ -0,0 +1,14 @@
+@font-face {
+  font-family: 'Ubuntu';
+  font-style: normal;
+  font-weight: 400;
+  font-display: swap;
+  src: url(fonts/4iCs6KVjbNBYlgo6ew.woff) format('woff');
+}
+@font-face {
+  font-family: 'Ubuntu';
+  font-style: normal;
+  font-weight: 700;
+  font-display: swap;
+  src: url(fonts/4iCv6KVjbNBYlgoCxCvTtA.woff) format('woff');
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/united/_variables.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/united/_variables.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/united/_variables.scss	(revision 3762)
@@ -0,0 +1,53 @@
+// United 4.6.0
+// Bootswatch
+
+//
+// Color system
+//
+
+$white:    #fff !default;
+$gray-100: #f8f9fa !default;
+$gray-200: #e9ecef !default;
+$gray-300: #dee2e6 !default;
+$gray-400: #ced4da !default;
+$gray-500: #aea79f !default;
+$gray-600: #868e96 !default;
+$gray-700: #495057 !default;
+$gray-800: #333 !default;
+$gray-900: #212529 !default;
+$black:    #000 !default;
+
+$blue:    #007bff !default;
+$indigo:  #6610f2 !default;
+$purple:  #772953 !default;
+$pink:    #e83e8c !default;
+$red:     #df382c !default;
+$orange:  #e95420 !default;
+$yellow:  #efb73e !default;
+$green:   #38b44a !default;
+$teal:    #20c997 !default;
+$cyan:    #17a2b8 !default;
+
+$primary:       $orange !default;
+$secondary:     $gray-500 !default;
+$success:       $green !default;
+$info:          $cyan !default;
+$warning:       $yellow !default;
+$danger:        $red !default;
+$light:         $gray-200 !default;
+$dark:          $purple !default;
+
+
+// Body
+
+$body-color:                $gray-800 !default;
+
+// Fonts
+
+// stylelint-disable-next-line value-keyword-case
+$font-family-sans-serif:      Ubuntu, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !default;
+
+// Tables
+
+$table-dark-bg:               $dark !default;
+$table-dark-border-color:     darken($dark, 5%) !default;
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/flatly/font.css
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/flatly/font.css	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/flatly/font.css	(revision 3762)
@@ -0,0 +1,21 @@
+@font-face {
+  font-family: 'Lato';
+  font-style: italic;
+  font-weight: 400;
+  font-display: swap;
+  src: url(fonts/S6u8w4BMUTPHjxswWA.woff) format('woff');
+}
+@font-face {
+  font-family: 'Lato';
+  font-style: normal;
+  font-weight: 400;
+  font-display: swap;
+  src: url(fonts/S6uyw4BMUTPHvxo.woff) format('woff');
+}
+@font-face {
+  font-family: 'Lato';
+  font-style: normal;
+  font-weight: 700;
+  font-display: swap;
+  src: url(fonts/S6u9w4BMUTPHh6UVeww.woff) format('woff');
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/flatly/_variables.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/flatly/_variables.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/flatly/_variables.scss	(revision 3762)
@@ -0,0 +1,109 @@
+// Flatly 4.6.0
+// Bootswatch
+
+//
+// Color system
+//
+
+$white:    #fff !default;
+$gray-100: #f8f9fa !default;
+$gray-200: #ecf0f1 !default;
+$gray-300: #dee2e6 !default;
+$gray-400: #ced4da !default;
+$gray-500: #b4bcc2 !default;
+$gray-600: #95a5a6 !default;
+$gray-700: #7b8a8b !default;
+$gray-800: #343a40 !default;
+$gray-900: #212529 !default;
+$black:    #000 !default;
+
+$blue:    #2c3e50 !default;
+$indigo:  #6610f2 !default;
+$purple:  #6f42c1 !default;
+$pink:    #e83e8c !default;
+$red:     #e74c3c !default;
+$orange:  #fd7e14 !default;
+$yellow:  #f39c12 !default;
+$green:   #18bc9c !default;
+$teal:    #20c997 !default;
+$cyan:    #3498db !default;
+
+$primary:       $blue !default;
+$secondary:     $gray-600 !default;
+$success:       $green !default;
+$info:          $cyan !default;
+$warning:       $yellow !default;
+$danger:        $red !default;
+$light:         $gray-200 !default;
+$dark:          $gray-700 !default;
+
+
+// Links
+
+$link-color:                $success !default;
+
+// Fonts
+
+// stylelint-disable-next-line value-keyword-case
+$font-family-sans-serif:      Lato, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !default;
+$font-size-base:              .9375rem !default;
+$font-size-sm:                $font-size-base * .88 !default;
+$h1-font-size:                3rem !default;
+$h2-font-size:                2.5rem !default;
+$h3-font-size:                2rem !default;
+
+// Tables
+
+$table-accent-bg:             $gray-200 !default;
+
+// Dropdowns
+
+$dropdown-link-color:               $gray-700 !default;
+$dropdown-link-hover-color:         $white !default;
+$dropdown-link-hover-bg:            $primary !default;
+
+// Navs
+
+$nav-link-padding-y:                .5rem !default !default;
+$nav-link-padding-x:                2rem !default;
+$nav-link-disabled-color:           $gray-600 !default !default;
+$nav-tabs-border-color:             $gray-200 !default;
+
+// Navbar
+
+$navbar-padding-y:                  1rem !default;
+
+$navbar-light-bg:                   $primary !default;
+$navbar-light-color:                $white !default;
+$navbar-light-hover-color:          $success !default;
+$navbar-light-active-color:         $success !default;
+
+$navbar-dark-bg:                    $secondary !default;
+$navbar-dark-color:                 $white !default;
+$navbar-dark-hover-color:           $primary !default;
+$navbar-dark-active-color:          $primary !default;
+
+// Pagination
+
+$pagination-color:                  $white !default;
+$pagination-bg:                     $success !default;
+$pagination-border-width:           0 !default;
+$pagination-border-color:           transparent !default;
+$pagination-hover-color:            $white !default;
+$pagination-hover-bg:               darken($success, 15%) !default;
+$pagination-hover-border-color:     transparent !default;
+$pagination-active-bg:              $pagination-hover-bg !default;
+$pagination-active-border-color:    transparent !default;
+$pagination-disabled-color:         $gray-200 !default;
+$pagination-disabled-bg:            lighten($success, 15%) !default;
+$pagination-disabled-border-color:  transparent !default;
+
+// List group
+
+$list-group-hover-bg:               $gray-200 !default;
+$list-group-disabled-bg:            $gray-200 !default;
+
+// Close
+
+$close-color:                       $white !default;
+$close-text-shadow:                 none !default;
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/flatly/_bootswatch.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/flatly/_bootswatch.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/flatly/_bootswatch.scss	(revision 3762)
@@ -0,0 +1,266 @@
+// Flatly 4.6.0
+// Bootswatch
+
+
+// Variables ===================================================================
+
+$web-font-path: "https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,400;0,700;1,400&display=swap" !default;
+@import url($web-font-path);
+
+// Navbar =======================================================================
+
+.navbar-brand {
+ color: $white !important;
+}
+
+// Buttons =====================================================================
+
+.btn {
+  &-secondary,
+  &-secondary:hover,
+  &-warning,
+  &-warning:hover {
+    color: $white;
+  }
+}
+
+// Tables ======================================================================
+
+.table {
+  &-primary,
+  &-secondary,
+  &-success,
+  &-info,
+  &-warning,
+  &-danger {
+    color: $white;
+  }
+
+  &-primary {
+    &,
+    > th,
+    > td {
+      background-color: $primary;
+    }
+  }
+
+  &-secondary {
+    &,
+    > th,
+    > td {
+      background-color: $secondary;
+    }
+  }
+
+  &-light {
+    &,
+    > th,
+    > td {
+      background-color: $light;
+    }
+  }
+
+  &-dark {
+    &,
+    > th,
+    > td {
+      background-color: $dark;
+    }
+  }
+
+  &-success {
+    &,
+    > th,
+    > td {
+      background-color: $success;
+    }
+  }
+
+  &-info {
+    &,
+    > th,
+    > td {
+      background-color: $info;
+    }
+  }
+
+  &-danger {
+    &,
+    > th,
+    > td {
+      background-color: $danger;
+    }
+  }
+
+  &-warning {
+    &,
+    > th,
+    > td {
+      background-color: $warning;
+    }
+  }
+
+  &-active {
+    &,
+    > th,
+    > td {
+      background-color: $table-active-bg;
+    }
+  }
+
+  &-hover {
+    .table-primary:hover {
+      &,
+      > th,
+      > td {
+        background-color: darken($primary, 5%);
+      }
+    }
+
+    .table-secondary:hover {
+      &,
+      > th,
+      > td {
+        background-color: darken($secondary, 5%);
+      }
+    }
+
+    .table-light:hover {
+      &,
+      > th,
+      > td {
+        background-color: darken($light, 5%);
+      }
+    }
+
+    .table-dark:hover {
+      &,
+      > th,
+      > td {
+        background-color: darken($dark, 5%);
+      }
+    }
+
+    .table-success:hover {
+      &,
+      > th,
+      > td {
+        background-color: darken($success, 5%);
+      }
+    }
+
+    .table-info:hover {
+      &,
+      > th,
+      > td {
+        background-color: darken($info, 5%);
+      }
+    }
+
+    .table-danger:hover {
+      &,
+      > th,
+      > td {
+        background-color: darken($danger, 5%);
+      }
+    }
+
+    .table-warning:hover {
+      &,
+      > th,
+      > td {
+        background-color: darken($warning, 5%);
+      }
+    }
+
+    .table-active:hover {
+      &,
+      > th,
+      > td {
+        background-color: $table-active-bg;
+      }
+    }
+
+  }
+}
+
+// Navs ========================================================================
+
+.nav-tabs {
+  .nav-link.active,
+  .nav-link.active:focus,
+  .nav-link.active:hover,
+  .nav-item.open .nav-link,
+  .nav-item.open .nav-link:focus,
+  .nav-item.open .nav-link:hover {
+    color: $primary;
+  }
+}
+
+.pagination {
+  a:hover {
+    text-decoration: none;
+  }
+}
+
+// Indicators ==================================================================
+
+.close {
+  text-decoration: none;
+  opacity: .4;
+
+  &:hover,
+  &:focus {
+    opacity: 1;
+  }
+}
+
+.badge {
+  &-secondary,
+  &-warning {
+    color: $white;
+  }
+}
+
+.alert {
+  border: none;
+  color: $white;
+
+  a,
+  .alert-link {
+    color: $white;
+    text-decoration: underline;
+  }
+
+  @each $color, $value in $theme-colors {
+    &-#{$color} {
+      @if $enable-gradients {
+        background: $value linear-gradient(180deg, mix($body-bg, $value, 15%), $value) repeat-x;
+      } @else {
+        background-color: $value;
+      }
+    }
+  }
+
+  &-light {
+    &,
+    a,
+    .alert-link {
+      color: $body-color;
+    }
+  }
+}
+
+// Containers ==================================================================
+
+.modal,
+.toast {
+  .close {
+    color: $black;
+
+    &:not(:disabled):not(.disabled):hover,
+    &:not(:disabled):not(.disabled):focus {
+      color: $black;
+    }
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/sandstone/font.css
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/sandstone/font.css	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/sandstone/font.css	(revision 3762)
@@ -0,0 +1,21 @@
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 400;
+  font-display: swap;
+  src: url(fonts/KFOmCnqEu92Fr1Me5g.woff) format('woff');
+}
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 500;
+  font-display: swap;
+  src: url(fonts/KFOlCnqEu92Fr1MmEU9vAA.woff) format('woff');
+}
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 700;
+  font-display: swap;
+  src: url(fonts/KFOlCnqEu92Fr1MmWUlvAA.woff) format('woff');
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/sandstone/_variables.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/sandstone/_variables.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/sandstone/_variables.scss	(revision 3762)
@@ -0,0 +1,123 @@
+// Sandstone 4.6.0
+// Bootswatch
+
+//
+// Color system
+//
+
+$white:    #fff !default;
+$gray-100: #f8f9fa !default;
+$gray-200: #f8f5f0 !default;
+$gray-300: #dfd7ca !default;
+$gray-400: #ced4da !default;
+$gray-500: #98978b !default;
+$gray-600: #8e8c84 !default;
+$gray-700: #495057 !default;
+$gray-800: #3e3f3a !default;
+$gray-900: #212529 !default;
+$black:    #000 !default;
+
+$blue:    #325d88 !default;
+$indigo:  #6610f2 !default;
+$purple:  #6f42c1 !default;
+$pink:    #e83e8c !default;
+$red:     #d9534f !default;
+$orange:  #f47c3c !default;
+$yellow:  #ffc107 !default;
+$green:   #93c54b !default;
+$teal:    #20c997 !default;
+$cyan:    #29abe0 !default;
+
+$primary:       $blue !default;
+$secondary:     $gray-600 !default;
+$success:       $green !default;
+$info:          $cyan !default;
+$warning:       $orange !default;
+$danger:        $red !default;
+$light:         $gray-200 !default;
+$dark:          $gray-800 !default;
+
+
+// Body
+
+$body-color:                $gray-800 !default;
+
+// Links
+
+$link-color:                $success !default;
+
+// Fonts
+
+// stylelint-disable-next-line value-keyword-case
+$font-family-sans-serif:      Roboto, -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !default;
+$font-size-base:              .875rem !default;
+$headings-font-weight:        400 !default;
+
+// Dropdowns
+
+$dropdown-link-color:               $gray-600 !default;
+$dropdown-link-hover-color:         $dropdown-link-color !default;
+$dropdown-link-hover-bg:            $gray-200 !default;
+$dropdown-link-active-color:        $dropdown-link-color !default;
+$dropdown-link-active-bg:           $dropdown-link-hover-bg !default;
+
+// Navs
+
+$nav-link-padding-x:                .9rem !default;
+$nav-link-disabled-color:           $gray-300 !default;
+$nav-tabs-border-color:             $gray-300 !default;
+$nav-tabs-link-hover-border-color:  $gray-300 !default;
+$nav-tabs-link-active-bg:           $white !default;
+$nav-pills-link-active-color:       $gray-600 !default;
+$nav-pills-link-active-bg:          $gray-200 !default;
+
+
+// Pagination
+
+$pagination-color:                  $gray-600 !default;
+$pagination-bg:                     $gray-200 !default;
+$pagination-border-color:           $gray-300 !default;
+$pagination-hover-color:            $pagination-color !default;
+$pagination-active-color:           $pagination-color !default;
+$pagination-active-bg:              $gray-300 !default;
+$pagination-active-border-color:    $gray-300 !default;
+$pagination-disabled-color:         $gray-300 !default;
+$pagination-disabled-bg:            $gray-200 !default;
+$pagination-disabled-border-color:  $pagination-border-color !default;
+
+// Cards
+
+$card-border-color:                 rgba($gray-300, .75) !default;
+$card-cap-bg:                       rgba($gray-200, .25) !default;
+
+// Popovers
+
+$popover-header-bg:                 $gray-200 !default;
+
+// Modals
+
+$modal-content-border-color:        $gray-300 !default;
+$modal-header-border-color:         $modal-content-border-color !default;
+
+// Progress bars
+
+$progress-bg:                       $gray-300 !default;
+$progress-border-radius:            10px !default;
+$progress-bar-color:                $primary !default;
+
+// List group
+
+$list-group-border-color:           $gray-300 !default;
+$list-group-hover-bg:               $gray-200 !default;
+$list-group-active-color:           $body-color !default;
+$list-group-active-bg:              $gray-200 !default;
+$list-group-active-border-color:    $gray-300 !default;
+$list-group-disabled-color:         $gray-500 !default;
+$list-group-disabled-bg:            $white !default;
+$list-group-action-color:           $list-group-active-color !default;
+$list-group-action-active-color:    $list-group-active-color !default;
+$list-group-action-active-bg:       $gray-300 !default;
+
+// Close
+
+$close-text-shadow:                 none !default;
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/sandstone/_bootswatch.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/sandstone/_bootswatch.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/sandstone/_bootswatch.scss	(revision 3762)
@@ -0,0 +1,242 @@
+// Sandstone 4.6.0
+// Bootswatch
+
+
+// Variables ===================================================================
+
+$web-font-path: "https://fonts.googleapis.com/css2?family=Roboto:wght@400;500;700&display=swap" !default;
+@import url($web-font-path);
+
+// Navbar ======================================================================
+
+.bg-primary {
+  background-color: $dark !important;
+}
+
+.bg-dark {
+  background-color: $secondary !important;
+}
+
+.bg-light {
+  background-color: $gray-200 !important;
+}
+
+.sandstone {
+  font-size: 11px;
+  line-height: 22px;
+  font-weight: 500;
+  text-transform: uppercase;
+}
+
+.navbar {
+  .nav-link {
+    @extend .sandstone;
+  }
+
+  &-form input,
+  &-form .form-control {
+    border: none;
+  }
+}
+
+// Buttons =====================================================================
+
+.btn {
+  @extend .sandstone;
+
+  &:hover {
+    border-color: transparent;
+  }
+
+  &-success,
+  &-warning {
+    color: $white;
+  }
+}
+
+// Tables ======================================================================
+
+.table {
+  .thead-dark th {
+    background-color: $dark;
+  }
+}
+
+// Forms =======================================================================
+
+input,
+.form-control {
+  @include box-shadow(none);
+
+  &:focus {
+    @include box-shadow(none);
+  }
+}
+
+// Navs ========================================================================
+
+.nav-tabs {
+  .nav-link {
+    @extend .sandstone;
+    background-color: $gray-200;
+    border-color: $gray-300;
+  }
+
+  .nav-link,
+  .nav-link:hover,
+  .nav-link:focus {
+    color: $gray-600;
+  }
+
+  .nav-link.disabled,
+  .nav-link.disabled:hover,
+  .nav-link.disabled:focus {
+    background-color: $gray-200;
+    border-color: $gray-300;
+    color: $nav-link-disabled-color;
+  }
+}
+
+.nav-pills {
+  .nav-link {
+    @extend .sandstone;
+    border: 1px solid transparent;
+    color: $gray-600;
+  }
+
+  .nav-link.active,
+  .nav-link:hover,
+  .nav-link:focus {
+    background-color: $gray-200;
+    border-color: $gray-300;
+  }
+
+  .nav-link.disabled,
+  .nav-link.disabled:hover {
+    background-color: transparent;
+    border-color: transparent;
+    color: $gray-300;
+  }
+}
+
+
+.breadcrumb {
+  @extend .sandstone;
+  border: 1px solid $gray-300;
+}
+
+.pagination {
+  @extend .sandstone;
+
+  a:hover {
+    text-decoration: none;
+  }
+}
+
+.dropdown-menu {
+  .dropdown-item {
+    @extend .sandstone;
+  }
+}
+
+// Indicators ==================================================================
+
+.alert {
+  color: $white;
+
+  a,
+  .alert-link {
+    color: $white;
+    text-decoration: underline;
+  }
+
+  &-primary {
+    &,
+    > th,
+    > td {
+      background-color: $primary;
+    }
+  }
+
+  &-secondary {
+    &,
+    > th,
+    > td {
+      background-color: $secondary;
+    }
+  }
+
+  &-success {
+    &,
+    > th,
+    > td {
+      background-color: $success;
+    }
+  }
+
+  &-info {
+    &,
+    > th,
+    > td {
+      background-color: $info;
+    }
+  }
+
+  &-danger {
+    &,
+    > th,
+    > td {
+      background-color: $danger;
+    }
+  }
+
+  &-warning {
+    &,
+    > th,
+    > td {
+      background-color: $warning;
+    }
+  }
+
+  &-dark {
+    &,
+    > th,
+    > td {
+      background-color: $dark;
+    }
+  }
+
+  &-light {
+    &,
+    > th,
+    > td {
+      background-color: $light;
+    }
+
+    &,
+    a:not(.btn),
+    .alert-link {
+      color: $body-color;
+    }
+  }
+}
+
+.badge {
+  &-success,
+  &-warning {
+    color: $white;
+  }
+}
+
+.tooltip {
+  @extend .sandstone;
+}
+
+.close {
+  color: $gray-300;
+  opacity: 1;
+
+  &:hover {
+    color: darken($gray-300, 20%);
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/cerulean/_variables.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/cerulean/_variables.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/cerulean/_variables.scss	(revision 3762)
@@ -0,0 +1,57 @@
+// Cerulean 4.6.0
+// Bootswatch
+
+//
+// Color system
+//
+
+$white:    #fff !default;
+$gray-100: #f8f9fa !default;
+$gray-200: #e9ecef !default;
+$gray-300: #dee2e6 !default;
+$gray-400: #ced4da !default;
+$gray-500: #adb5bd !default;
+$gray-600: #868e96 !default;
+$gray-700: #495057 !default;
+$gray-800: #343a40 !default;
+$gray-900: #212529 !default;
+$black:    #000 !default;
+
+$blue:    #033c73 !default;
+$indigo:  #6610f2 !default;
+$purple:  #6f42c1 !default;
+$pink:    #e83e8c !default;
+$red:     #c71c22 !default;
+$orange:  #fd7e14 !default;
+$yellow:  #dd5600 !default;
+$green:   #73a839 !default;
+$teal:    #20c997 !default;
+$cyan:    #2fa4e7 !default;
+
+$primary:       $cyan !default;
+$secondary:     $gray-200 !default;
+$success:       $green !default;
+$info:          $blue !default;
+$warning:       $yellow !default;
+$danger:        $red !default;
+$light:         $gray-100 !default;
+$dark:          $gray-800 !default;
+
+// Body
+
+$body-color:    $gray-700 !default;
+
+// Fonts
+
+$headings-color:         $cyan !default;
+
+// Dropdowns
+
+$dropdown-link-color:           $body-color !default;
+$dropdown-link-hover-color:     $white !default;
+$dropdown-link-hover-bg:        $primary !default;
+
+// Navbar
+
+$navbar-dark-color:             rgba($white, .8) !default;
+$navbar-dark-hover-color:       $white !default;
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/cerulean/_bootswatch.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/cerulean/_bootswatch.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/cerulean/_bootswatch.scss	(revision 3762)
@@ -0,0 +1,110 @@
+// Cerulean 4.6.0
+// Bootswatch
+
+
+// Variables ===================================================================
+
+$text-shadow: 0 1px 0 rgba(0, 0, 0, .05) !default;
+
+// Mixins ======================================================================
+
+@mixin btn-shadow($color){
+  @include gradient-y-three-colors(lighten($color, 8%), $color, 60%, darken($color, 4%));
+}
+
+// Navbar ======================================================================
+
+.bg-primary {
+  @include btn-shadow($primary);
+}
+
+.bg-dark {
+  @include btn-shadow($blue);
+}
+
+.bg-light {
+  @include gradient-y-three-colors(lighten($gray-200, 8%), $gray-200, 60%, darken($gray-200, 2%));
+}
+
+.navbar-brand,
+.nav-link {
+  text-shadow: $text-shadow;
+}
+
+// Buttons =====================================================================
+
+.btn {
+  text-shadow: $text-shadow;
+}
+
+// See inst/bs3compat/_declarations.scss
+// It's very important that this come before other btn-* rules
+@if variable-exists("default") {
+  .btn-default {
+    @include btn-shadow($default);
+  }
+}
+
+.btn-primary {
+  @include btn-shadow($primary);
+}
+
+.btn-secondary {
+  @include btn-shadow($secondary);
+  color: $gray-700;
+}
+
+.btn-success {
+  @include btn-shadow($success);
+}
+
+.btn-info {
+  @include btn-shadow($info);
+}
+
+.btn-warning {
+  @include btn-shadow($warning);
+}
+
+.btn-danger {
+  @include btn-shadow($danger);
+}
+
+.btn-light {
+  @include btn-shadow($light);
+}
+
+.btn-dark {
+  @include btn-shadow($dark);
+}
+
+
+// Typography ==================================================================
+
+.text-secondary {
+  color: $gray-500 !important;
+}
+
+.bg-primary,
+.bg-success,
+.bg-info,
+.bg-warning,
+.bg-danger,
+.bg-dark {
+  h1,
+  h2,
+  h3,
+  h4,
+  h5,
+  h6 {
+    color: $white;
+  }
+}
+
+// Navs ========================================================================
+
+.dropdown-menu {
+  .dropdown-header {
+    color: $gray-600;
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/minty/font.css
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/minty/font.css	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/minty/font.css	(revision 3762)
@@ -0,0 +1,21 @@
+@font-face {
+  font-family: 'Montserrat';
+  font-style: normal;
+  font-weight: 400;
+  font-display: swap;
+  src: url(fonts/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtr6Ew9.woff) format('woff');
+}
+@font-face {
+  font-family: 'Montserrat';
+  font-style: normal;
+  font-weight: 500;
+  font-display: swap;
+  src: url(fonts/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtZ6Ew9.woff) format('woff');
+}
+@font-face {
+  font-family: 'Montserrat';
+  font-style: normal;
+  font-weight: 700;
+  font-display: swap;
+  src: url(fonts/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCuM70w9.woff) format('woff');
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/minty/_variables.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/minty/_variables.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/minty/_variables.scss	(revision 3762)
@@ -0,0 +1,94 @@
+// Minty 4.6.0
+// Bootswatch
+
+//
+// Color system
+//
+
+$white:    #fff !default;
+$gray-100: #f8f9fa !default;
+$gray-200: #f7f7f9 !default;
+$gray-300: #eceeef !default;
+$gray-400: #ced4da !default;
+$gray-500: #aaa !default;
+$gray-600: #888 !default;
+$gray-700: #5a5a5a !default;
+$gray-800: #343a40 !default;
+$gray-900: #212529 !default;
+$black:    #000 !default;
+
+$blue:    #007bff !default;
+$indigo:  #6610f2 !default;
+$purple:  #6f42c1 !default;
+$pink:    #e83e8c !default;
+$red:     #ff7851 !default;
+$orange:  #fd7e14 !default;
+$yellow:  #ffce67 !default;
+$green:   #56cc9d !default;
+$teal:    #20c997 !default;
+$cyan:    #6cc3d5 !default;
+
+$primary:       #78c2ad !default;
+$secondary:     #f3969a !default;
+$success:       $green !default;
+$info:          $cyan !default;
+$warning:       $yellow !default;
+$danger:        $red !default;
+$light:         $gray-100 !default;
+$dark:          $gray-800 !default;
+
+
+// Body
+
+$body-color:                $gray-700 !default;
+$color-contrast-dark:      $body-color !default; // Prefer $body-color over $black inside color-contrast()
+
+// Components
+
+$border-radius:               .4rem !default;
+$border-radius-lg:            .6rem !default;
+$border-radius-sm:            .3rem !default;
+
+// Fonts
+
+// stylelint-disable-next-line value-keyword-case
+$headings-font-family:        Montserrat, -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif !default;
+$headings-color:              $gray-700 !default;
+
+// Tables
+
+$table-border-color:          rgba(0, 0, 0, .05) !default;
+
+// Dropdowns
+
+$dropdown-link-hover-color:         $white !default;
+$dropdown-link-hover-bg:            $secondary !default;
+
+// Navbar
+
+$navbar-dark-color:                 rgba($white, .6) !default;
+$navbar-dark-hover-color:           $white !default;
+$navbar-light-color:                rgba($black, .3) !default;
+$navbar-light-hover-color:          $gray-700 !default;
+$navbar-light-active-color:         $gray-700 !default;
+$navbar-light-disabled-color:       rgba($black, .1) !default;
+
+// Pagination
+
+$pagination-color:                  $white !default;
+$pagination-bg:                     $primary !default;
+$pagination-border-color:           $primary !default;
+$pagination-hover-color:            $white !default;
+$pagination-hover-bg:               $secondary !default;
+$pagination-hover-border-color:     $pagination-hover-bg !default;
+$pagination-active-bg:              $secondary !default;
+$pagination-active-border-color:    $pagination-active-bg !default;
+$pagination-disabled-color:         $white !default;
+$pagination-disabled-bg:            #cce8e0 !default;
+$pagination-disabled-border-color:  $pagination-disabled-bg !default;
+
+// Breadcrumbs
+
+$breadcrumb-bg:                     $primary !default;
+$breadcrumb-divider-color:          $white !default;
+$breadcrumb-active-color:           $breadcrumb-divider-color !default;
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/minty/_bootswatch.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/minty/_bootswatch.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/minty/_bootswatch.scss	(revision 3762)
@@ -0,0 +1,328 @@
+// Minty 4.6.0
+// Bootswatch
+
+
+// Variables ===================================================================
+
+$web-font-path: "https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500;700&display=swap" !default;
+@import url($web-font-path);
+
+// Navbar ======================================================================
+
+.navbar {
+  font-family: $headings-font-family;
+}
+
+.bg-dark {
+  background-color: $secondary !important;
+}
+
+.border-dark {
+  border-color: $secondary !important;
+}
+
+// Buttons =====================================================================
+
+.btn {
+  font-family: $headings-font-family;
+}
+
+// Tables ======================================================================
+
+.table {
+  &-primary,
+  &-secondary,
+  &-success,
+  &-info,
+  &-warning,
+  &-danger {
+    color: $white;
+  }
+
+  &-primary {
+    &,
+    > th,
+    > td {
+      background-color: $primary;
+    }
+  }
+
+  &-secondary {
+    &,
+    > th,
+    > td {
+      background-color: $secondary;
+    }
+  }
+
+  &-light {
+    &,
+    > th,
+    > td {
+      background-color: $light;
+    }
+  }
+
+  &-dark {
+    &,
+    > th,
+    > td {
+      background-color: $dark;
+    }
+  }
+
+  &-success {
+    &,
+    > th,
+    > td {
+      background-color: $success;
+    }
+  }
+
+  &-info {
+    &,
+    > th,
+    > td {
+      background-color: $info;
+    }
+  }
+
+  &-danger {
+    &,
+    > th,
+    > td {
+      background-color: $danger;
+    }
+  }
+
+  &-warning {
+    &,
+    > th,
+    > td {
+      background-color: $warning;
+    }
+  }
+
+  &-active {
+    &,
+    > th,
+    > td {
+      background-color: $table-active-bg;
+    }
+  }
+
+  &-hover {
+    .table-primary:hover {
+      &,
+      > th,
+      > td {
+        background-color: darken($primary, 5%);
+      }
+    }
+
+    .table-secondary:hover {
+      &,
+      > th,
+      > td {
+        background-color: darken($secondary, 5%);
+      }
+    }
+
+    .table-light:hover {
+      &,
+      > th,
+      > td {
+        background-color: darken($light, 5%);
+      }
+    }
+
+    .table-dark:hover {
+      &,
+      > th,
+      > td {
+        background-color: darken($dark, 5%);
+      }
+    }
+
+    .table-success:hover {
+      &,
+      > th,
+      > td {
+        background-color: darken($success, 5%);
+      }
+    }
+
+    .table-info:hover {
+      &,
+      > th,
+      > td {
+        background-color: darken($info, 5%);
+      }
+    }
+
+    .table-danger:hover {
+      &,
+      > th,
+      > td {
+        background-color: darken($danger, 5%);
+      }
+    }
+
+    .table-warning:hover {
+      &,
+      > th,
+      > td {
+        background-color: darken($warning, 5%);
+      }
+    }
+
+    .table-active:hover {
+      &,
+      > th,
+      > td {
+        background-color: $table-active-bg;
+      }
+    }
+  }
+
+  .thead-dark th {
+    background-color: $primary;
+    border-color: $table-border-color;
+    font-family: $headings-font-family;
+  }
+}
+
+// Forms =======================================================================
+
+legend {
+  font-family: $headings-font-family;
+}
+
+// Navs ========================================================================
+
+.dropdown-menu {
+  font-family: $font-family-sans-serif;
+}
+
+.breadcrumb {
+  a {
+    color: $navbar-dark-color;
+  }
+
+  a:hover {
+    color: $white;
+    text-decoration: none;
+  }
+}
+
+// Indicators ==================================================================
+
+.alert {
+  color: $white;
+
+  h1,
+  h2,
+  h3,
+  h4,
+  h5,
+  h6 {
+    color: inherit;
+  }
+
+  a,
+  .alert-link {
+    color: $white;
+  }
+
+  &-primary {
+    &,
+    > th,
+    > td {
+      background-color: $primary;
+    }
+  }
+
+  &-secondary {
+    &,
+    > th,
+    > td {
+      background-color: $secondary;
+    }
+  }
+
+  &-success {
+    &,
+    > th,
+    > td {
+      background-color: $success;
+    }
+  }
+
+  &-info {
+    &,
+    > th,
+    > td {
+      background-color: $info;
+    }
+  }
+
+  &-danger {
+    &,
+    > th,
+    > td {
+      background-color: $danger;
+    }
+  }
+
+  &-warning {
+    &,
+    > th,
+    > td {
+      background-color: $warning;
+    }
+  }
+
+  &-dark {
+    &,
+    > th,
+    > td {
+      background-color: $dark;
+    }
+  }
+
+  &-light {
+    &,
+    > th,
+    > td {
+      background-color: $light;
+    }
+
+    &,
+    a:not(.btn),
+    .alert-link {
+      color: $body-color;
+    }
+  }
+}
+
+.badge {
+  color: $white;
+
+  &-light {
+    color: $gray-700;
+  }
+}
+
+// Containers ==================================================================
+
+.card,
+.list-group-item {
+  h1,
+  h2,
+  h3,
+  h4,
+  h5,
+  h6 {
+    color: inherit;
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/lux/_bootswatch.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/lux/_bootswatch.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/lux/_bootswatch.scss	(revision 3762)
@@ -0,0 +1,190 @@
+// Lux 4.6.0
+// Bootswatch
+
+
+// Variables ===================================================================
+
+$web-font-path: "https://fonts.googleapis.com/css2?family=Nunito+Sans:wght@400;600&display=swap" !default;
+@import url($web-font-path);
+
+// Navbar ======================================================================
+
+.navbar {
+  font-size: $font-size-sm;
+  text-transform: uppercase;
+  font-weight: 600;
+
+  &-nav {
+    .nav-link {
+      padding-top: .715rem;
+      padding-bottom: .715rem;
+    }
+  }
+
+  &-brand {
+    margin-right: 2rem;
+  }
+}
+
+.bg-primary {
+  background-color: theme-color("primary") !important;
+}
+
+.bg-light {
+  border: 1px solid rgba(0, 0, 0, .1);
+
+  &.navbar-fixed-top {
+    border-width: 0 0 1px;
+  }
+
+  &.navbar-bottom-top {
+    border-width: 1px 0 0;
+  }
+}
+
+.nav-item {
+  margin-right: 2rem;
+}
+
+// Buttons =====================================================================
+
+.btn {
+  font-size: $font-size-sm;
+  text-transform: uppercase;
+
+  &-sm {
+    font-size: 10px;
+  }
+
+  &-warning {
+    &,
+    &:hover,
+    &:not([disabled]):not(.disabled):active,
+    &:focus {
+      color: $white;
+    }
+  }
+}
+
+.btn-outline-secondary {
+  border-color: $gray-600;
+  color: $gray-600;
+
+  &:not([disabled]):not(.disabled):hover,
+  &:not([disabled]):not(.disabled):focus,
+  &:not([disabled]):not(.disabled):active {
+    background-color: $gray-400;
+    border-color: $gray-400;
+    color: $white;
+  }
+
+  &:not([disabled]):not(.disabled):focus {
+    box-shadow: 0 0 0 .2rem rgba($gray-400, .5);
+  }
+}
+
+[class*="btn-outline-"] {
+  border-width: 2px;
+}
+
+.border-secondary {
+  border: 1px solid $gray-400 !important;
+}
+
+// Typography ==================================================================
+
+body {
+  font-weight: 200;
+  letter-spacing: 1px;
+}
+
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+  text-transform: uppercase;
+  letter-spacing: 3px;
+}
+
+.text-secondary {
+  color: $body-color !important;
+}
+
+// Tables ======================================================================
+
+th {
+  font-size: $font-size-sm;
+  text-transform: uppercase;
+}
+
+.table {
+  th,
+  td {
+    padding: 1.5rem;
+  }
+
+  &-sm {
+    th,
+    td {
+      padding: .75rem;
+    }
+  }
+}
+
+// Forms =======================================================================
+
+.custom-switch {
+  .custom-control-label {
+    &::after {
+      top: add(.15625rem, 2px);
+      left: add(-2.25rem, 2px);
+      width: subtract(1rem, 4px);
+      height: subtract(1rem, 4px);
+    }
+  }
+}
+
+// Navs ========================================================================
+
+.dropdown-menu {
+  font-size: $font-size-sm;
+  text-transform: none;
+}
+
+// Indicators ==================================================================
+
+.badge {
+  padding-top: .28rem;
+
+  &-pill {
+    border-radius: 10rem;
+  }
+}
+
+// Containers ==================================================================
+
+.list-group-item {
+  h1,
+  h2,
+  h3,
+  h4,
+  h5,
+  h6,
+  .h1,
+  .h2,
+  .h3,
+  .h4,
+  .h5,
+  .h6 {
+    color: inherit;
+  }
+}
+
+.card {
+  &-title,
+  &-header {
+    color: inherit;
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/lux/font.css
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/lux/font.css	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/lux/font.css	(revision 3762)
@@ -0,0 +1,14 @@
+@font-face {
+  font-family: 'Nunito Sans';
+  font-style: normal;
+  font-weight: 400;
+  font-display: swap;
+  src: url(fonts/pe0qMImSLYBIv1o4X1M8cfe5.woff) format('woff');
+}
+@font-face {
+  font-family: 'Nunito Sans';
+  font-style: normal;
+  font-weight: 600;
+  font-display: swap;
+  src: url(fonts/pe03MImSLYBIv1o4X1M8cc9iB_5p.woff) format('woff');
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/lux/_variables.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/lux/_variables.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/lux/_variables.scss	(revision 3762)
@@ -0,0 +1,102 @@
+// Lux 4.6.0
+// Bootswatch
+
+//
+// Color system
+//
+
+$white:    #fff !default;
+$gray-100: #f8f9fa !default;
+$gray-200: #f7f7f9 !default;
+$gray-300: #eceeef !default;
+$gray-400: #ced4da !default;
+$gray-500: #adb5bd !default;
+$gray-600: #919aa1 !default;
+$gray-700: #55595c !default;
+$gray-800: #343a40 !default;
+$gray-900: #1a1a1a !default;
+$black:    #000 !default;
+
+$blue:    #007bff !default;
+$indigo:  #6610f2 !default;
+$purple:  #6f42c1 !default;
+$pink:    #e83e8c !default;
+$red:     #d9534f !default;
+$orange:  #fd7e14 !default;
+$yellow:  #f0ad4e !default;
+$green:   #4bbf73 !default;
+$teal:    #20c997 !default;
+$cyan:    #1f9bcf !default;
+
+$primary:       $gray-900 !default;
+$secondary:     $white !default;
+$success:       $green !default;
+$info:          $cyan !default;
+$warning:       $yellow !default;
+$danger:        $red !default;
+$light:         $white !default;
+$dark:          $gray-800 !default;
+
+
+// Options
+
+$enable-rounded:            false !default;
+
+// Body
+
+$body-color:                $gray-700 !default;
+
+// Fonts
+
+// stylelint-disable-next-line value-keyword-case
+$font-family-sans-serif:      "Nunito Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !default;
+$font-size-base:              .875rem !default;
+$h1-font-size:                2rem !default;
+$h2-font-size:                1.75rem !default;
+$h3-font-size:                1.5rem !default;
+$h4-font-size:                1.25rem !default;
+$h5-font-size:                1rem !default;
+$h6-font-size:                .75rem !default;
+$headings-font-weight:        600 !default;
+$headings-color:              $gray-900 !default;
+
+// Tables
+
+$table-border-color:          rgba(0, 0, 0, .05) !default;
+
+
+// Buttons
+
+$btn-line-height:             1.5rem !default;
+$input-btn-padding-y:         .75rem !default;
+$input-btn-padding-x:         1.5rem !default;
+$input-btn-padding-y-sm:      .5rem !default;
+$input-btn-padding-x-sm:      1rem !default;
+$input-btn-padding-y-lg:      2rem !default;
+$input-btn-padding-x-lg:      2rem !default;
+$btn-font-weight:             600 !default;
+
+// Forms
+
+$input-line-height:                     1.5 !default;
+$input-bg:                              $gray-200 !default;
+$input-disabled-bg:                     $gray-300 !default;
+$input-group-addon-bg:                  $gray-300 !default;
+
+// Navbar
+
+$navbar-padding-y:                  1.5rem !default;
+$navbar-dark-hover-color:           $white !default;
+$navbar-light-color:                rgba($black, .3) !default;
+$navbar-light-hover-color:          $gray-900 !default;
+$navbar-light-active-color:         $gray-900 !default;
+
+// Pagination
+
+$pagination-border-color:           transparent !default;
+$pagination-hover-border-color:     $pagination-border-color !default;
+$pagination-disabled-border-color:  $pagination-border-color !default;
+
+// Breadcrumbs
+
+$breadcrumb-bg:                     transparent !default;
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/slate/_bootswatch.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/slate/_bootswatch.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/slate/_bootswatch.scss	(revision 3762)
@@ -0,0 +1,556 @@
+// Slate 4.6.0
+// Bootswatch
+
+
+// Mixins ======================================================================
+
+@mixin btn-shadow($color){
+  @include gradient-y-three-colors(lighten($color, 16%), $color, 60%, darken($color, 14%));
+  filter: none;
+}
+
+@mixin btn-shadow-inverse($color){
+  @include gradient-y-three-colors(darken($color, 18%), darken($color, 15%), 40%, darken($color, 13%));
+  filter: none;
+}
+
+// Navbar ======================================================================
+
+.navbar {
+  border: 1px solid rgba($contrast-fg, .6);
+  text-shadow: 1px 1px 1px rgba($contrast-fg, .3);
+
+  .container {
+    padding: 0;
+  }
+
+  .navbar-toggler {
+    border-color: rgba($contrast-fg, .6);
+  }
+
+  &-fixed-top {
+    border-width: 0 0 1px;
+  }
+
+  &-fixed-bottom {
+    border-width: 1px 0 0;
+  }
+
+  .nav-link {
+    padding: 1rem;
+    border-left: 1px solid rgba($contrast-bg, .1);
+    border-right: 1px solid rgba($contrast-fg, .2);
+
+    &:hover,
+    &:focus {
+      @include btn-shadow-inverse(body-mix(100%));
+      border-left: 1px solid rgba($contrast-fg, .2);
+    }
+  }
+
+  &-brand {
+    padding: .75rem 1rem subtract(24px, .75rem);
+    margin-right: 0;
+    border-right: 1px solid rgba($contrast-fg, .2);
+  }
+
+  .nav-item.active .nav-link {
+    background-color: rgba($contrast-fg, .3);
+    border-left: 1px solid rgba($contrast-fg, .2);
+  }
+
+  &-nav .nav-item + .nav-item {
+    margin-left: 0;
+  }
+
+  &.bg-light {
+    text-shadow: 1px 1px 1px rgba($contrast-fg, .1);
+
+    .nav-link {
+      &:hover,
+      &:focus {
+        @include btn-shadow-inverse($body-color);
+        border-left: 1px solid rgba($contrast-fg, .2);
+      }
+    }
+  }
+}
+
+@media (max-width: 576px) {
+  .navbar-expand-sm {
+    .navbar-brand,
+    .nav-link {
+      border: none !important;
+    }
+  }
+}
+
+@media (max-width: 768px) {
+  .navbar-expand-md {
+    .navbar-brand,
+    .nav-link {
+      border: none !important;
+    }
+  }
+}
+
+@media (max-width: 992px) {
+  .navbar-expand-lg {
+    .navbar-brand,
+    .nav-link {
+      border: none !important;
+    }
+  }
+}
+
+// Buttons =====================================================================
+
+.btn {
+  border-color: rgba($contrast-fg, .6);
+  text-shadow: 1px 1px 1px rgba($contrast-fg, .3);
+
+  &:not([disabled]):not(.disabled).active,
+  &.disabled {
+    border-color: rgba($contrast-fg, .6);
+    box-shadow: none;
+  }
+
+  &:hover,
+  &:focus,
+  &:not([disabled]):not(.disabled):active,
+  &:not([disabled]):not(.disabled):active:hover,
+  &:not([disabled]):not(.disabled).active:hover {
+    border-color: rgba($contrast-fg, .6);
+  }
+}
+
+@if variable-exists("default") {
+  .btn-default {
+    @include btn-shadow($default);
+    color: $contrast-bg;
+
+    &:not([disabled]):not(.disabled):hover,
+    &:not([disabled]):not(.disabled):focus,
+    &:not([disabled]):not(.disabled):active,
+    &:not([disabled]):not(.disabled).active {
+      @include btn-shadow-inverse($default);
+    }
+ }
+}
+
+.btn-primary {
+  @include btn-shadow($primary);
+
+  &:not([disabled]):not(.disabled):hover,
+  &:not([disabled]):not(.disabled):focus,
+  &:not([disabled]):not(.disabled):active:hover,
+  &:not([disabled]):not(.disabled).active:hover {
+    @include btn-shadow-inverse($primary);
+  }
+}
+
+.btn-secondary {
+  @include btn-shadow($secondary);
+
+  &:not([disabled]):not(.disabled):hover,
+  &:not([disabled]):not(.disabled):focus,
+  &:not([disabled]):not(.disabled):active,
+  &:not([disabled]):not(.disabled).active {
+    @include btn-shadow-inverse($secondary);
+  }
+}
+
+.btn-success {
+  @include btn-shadow($success);
+  color: $contrast-bg;
+
+  &:not([disabled]):not(.disabled):hover,
+  &:not([disabled]):not(.disabled):focus,
+  &:not([disabled]):not(.disabled):active,
+  &:not([disabled]):not(.disabled).active {
+    @include btn-shadow-inverse($success);
+  }
+}
+
+.btn-info {
+  @include btn-shadow($info);
+  color: $contrast-bg;
+
+  &:not([disabled]):not(.disabled):hover,
+  &:not([disabled]):not(.disabled):focus,
+  &:not([disabled]):not(.disabled):active,
+  &:not([disabled]):not(.disabled).active {
+    @include btn-shadow-inverse($info);
+  }
+}
+
+.btn-warning {
+  @include btn-shadow($warning);
+  color: $contrast-bg;
+
+  &:not([disabled]):not(.disabled):hover,
+  &:not([disabled]):not(.disabled):focus,
+  &:not([disabled]):not(.disabled):active,
+  &:not([disabled]):not(.disabled).active {
+    @include btn-shadow-inverse($warning);
+  }
+}
+
+.btn-danger {
+  @include btn-shadow($danger);
+
+  &:not([disabled]):not(.disabled):hover,
+  &:not([disabled]):not(.disabled):focus,
+  &:not([disabled]):not(.disabled):active,
+  &:not([disabled]):not(.disabled).active {
+    @include btn-shadow-inverse($danger);
+  }
+}
+
+.btn-outline {
+  &-primary {
+    color: $contrast-bg;
+  }
+}
+
+.btn-link,
+.btn-link:hover {
+  border-color: transparent;
+}
+
+.btn-group,
+.btn-group-vertical {
+  .btn.active {
+    border-color: rgba($contrast-fg, .6);
+  }
+}
+
+// Typography ==================================================================
+
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+  text-shadow: -1px -1px 0 rgba($contrast-fg, .3);
+}
+
+// Tables ======================================================================
+
+.table {
+  &-primary,
+  &-secondary,
+  &-success,
+  &-info,
+  &-warning,
+  &-danger {
+    color: $contrast-bg;
+  }
+
+  &-primary {
+    &,
+    > th,
+    > td {
+      background-color: $primary;
+    }
+  }
+
+  &-secondary {
+    &,
+    > th,
+    > td {
+      background-color: $secondary;
+    }
+  }
+
+  &-light {
+    &,
+    > th,
+    > td {
+      background-color: $light;
+    }
+  }
+
+  &-dark {
+    &,
+    > th,
+    > td {
+      background-color: $dark;
+    }
+  }
+
+  &-success {
+    &,
+    > th,
+    > td {
+      background-color: $success;
+    }
+  }
+
+  &-info {
+    &,
+    > th,
+    > td {
+      background-color: $info;
+    }
+  }
+
+  &-danger {
+    &,
+    > th,
+    > td {
+      background-color: $danger;
+    }
+  }
+
+  &-warning {
+    &,
+    > th,
+    > td {
+      background-color: $warning;
+    }
+  }
+
+  &-active {
+    &,
+    > th,
+    > td {
+      background-color: $table-active-bg;
+    }
+  }
+
+  &-hover {
+    .table-primary:hover {
+      &,
+      > th,
+      > td {
+        background-color: darken($primary, 5%);
+      }
+    }
+
+    .table-secondary:hover {
+      &,
+      > th,
+      > td {
+        background-color: darken($secondary, 5%);
+      }
+    }
+
+    .table-light:hover {
+      &,
+      > th,
+      > td {
+        background-color: darken($light, 5%);
+      }
+    }
+
+    .table-dark:hover {
+      &,
+      > th,
+      > td {
+        background-color: darken($dark, 5%);
+      }
+    }
+
+    .table-success:hover {
+      &,
+      > th,
+      > td {
+        background-color: darken($success, 5%);
+      }
+    }
+
+    .table-info:hover {
+      &,
+      > th,
+      > td {
+        background-color: darken($info, 5%);
+      }
+    }
+
+    .table-danger:hover {
+      &,
+      > th,
+      > td {
+        background-color: darken($danger, 5%);
+      }
+    }
+
+    .table-warning:hover {
+      &,
+      > th,
+      > td {
+        background-color: darken($warning, 5%);
+      }
+    }
+
+    .table-active:hover {
+      &,
+      > th,
+      > td {
+        background-color: $table-active-bg;
+      }
+    }
+
+  }
+}
+
+// Forms =======================================================================
+
+legend {
+  color: $contrast-bg;
+}
+
+.input-group-addon {
+  @include btn-shadow($secondary);
+  text-shadow: 1px 1px 1px rgba($contrast-fg, .3);
+  color: $contrast-bg;
+}
+
+// Navs ========================================================================
+
+.nav-tabs {
+  .nav-link, li>a {
+    @include btn-shadow-inverse(body-mix(100%));
+    border: 1px solid rgba($contrast-fg, .6);
+
+    &:not([disabled]):not(.disabled):hover,
+    &:not([disabled]):not(.disabled):focus,
+    &:not([disabled]):not(.disabled):active,
+    &:not([disabled]):not(.disabled).active {
+      @include btn-shadow(body-mix(100%));
+    }
+
+    &.disabled {
+      border: 1px solid rgba($contrast-fg, .6);
+    }
+  }
+
+  .nav-link.active,
+  .nav-link:hover,
+  li.active>a,
+  li:hover>a {
+    background-color: transparent;
+    @include btn-shadow(body-mix(100%));
+    border: 1px solid rgba($contrast-fg, .6);
+  }
+
+  .nav-link,
+  .nav-link:hover, li>a {
+    color: $contrast-bg;
+  }
+}
+
+.nav-pills {
+  .nav-link, li>a {
+    @include btn-shadow-inverse(body-mix(100%));
+    border: 1px solid rgba($contrast-fg, .6);
+    text-shadow: 1px 1px 1px rgba($contrast-fg, .3);
+    color: $contrast-bg;
+
+    &:hover {
+      @include btn-shadow(body-mix(100%));
+      border: 1px solid rgba($contrast-fg, .6);
+    }
+  }
+
+  .nav-link.active,
+  .nav-link:hover,
+  li.active>a,
+  li:hover>a {
+    background-color: transparent;
+    @include btn-shadow(body-mix(100%));
+    border: 1px solid rgba($contrast-fg, .6);
+  }
+
+  .nav-link.disabled,
+  .nav-link.disabled:hover {
+    @include btn-shadow(body-mix(100%));
+    color: $nav-link-disabled-color;
+  }
+}
+
+.pagination {
+  .page-link {
+    text-shadow: 1px 1px 1px rgba($contrast-fg, .3);
+    @include btn-shadow(body-mix(100%));
+
+    &:hover {
+      @include btn-shadow-inverse(body-mix(100%));
+      text-decoration: none;
+    }
+  }
+
+  .page-item.active .page-link {
+    @include btn-shadow-inverse(body-mix(100%));
+  }
+
+  .page-item.disabled .page-link {
+    @include btn-shadow(body-mix(100%));
+  }
+}
+
+.breadcrumb {
+  border: 1px solid rgba($contrast-fg, .6);
+  text-shadow: 1px 1px 1px rgba($contrast-fg, .3);
+  background-color: transparent;
+  @include btn-shadow(body-mix(100%));
+
+  a,
+  a:hover {
+    color: $contrast-bg;
+  }
+}
+
+// Indicators ==================================================================
+
+.alert {
+  border: none;
+  color: $contrast-bg;
+
+  a,
+  .alert-link {
+    color: $contrast-bg;
+    text-decoration: underline;
+  }
+
+  @each $color, $value in $theme-colors {
+    &-#{$color} {
+      background-color: $value;
+    }
+  }
+
+  &-light {
+    &,
+    a:not(.btn),
+    .alert-link {
+      color: $body-bg;
+    }
+  }
+
+  .close {
+    color: $close-color;
+    text-decoration: none;
+  }
+}
+
+.badge {
+  &-success,
+  &-warning,
+  &-info {
+    color: $contrast-bg;
+  }
+}
+
+// Containers ==================================================================
+
+.jumbotron {
+  border: 1px solid rgba($contrast-fg, .6);
+}
+
+.list-group {
+  &-item-action:hover {
+    background-color: mix($contrast-fg, $body-bg, 5%);
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/slate/_variables.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/slate/_variables.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/slate/_variables.scss	(revision 3762)
@@ -0,0 +1,181 @@
+// Slate 4.6.0
+// Bootswatch
+
+//
+// Color system
+//
+
+$white:    #fff !default;
+$gray-100: #f8f9fa !default;
+$gray-200: #e9ecef !default;
+$gray-300: #dee2e6 !default;
+$gray-400: #ced4da !default;
+$gray-500: #999 !default;
+$gray-600: #7a8288 !default;
+$gray-700: #52575c !default;
+$gray-800: #3a3f44 !default;
+$gray-900: #272b30 !default;
+$black:    #000 !default;
+
+$blue:    #007bff !default;
+$indigo:  #6610f2 !default;
+$purple:  #6f42c1 !default;
+$pink:    #e83e8c !default;
+$red:     #ee5f5b !default;
+$orange:  #fd7e14 !default;
+$yellow:  #f89406 !default;
+$green:   #62c462 !default;
+$teal:    #20c997 !default;
+$cyan:    #5bc0de !default;
+
+// Body
+
+@function body-mix($weight) {
+    @return mix($gray-900, $gray-600, $weight);
+}
+$body-bg:                   body-mix(100%) !default;
+$body-color:                body-mix(0%) !default;
+
+
+$contrast-bg: color-contrast($body-bg) !default;
+$contrast-fg: color-contrast($contrast-bg) !default;
+@function lighten($color, $percent) {
+   @return mix($contrast-bg, $color, $percent);
+}
+@function darken($color, $percent) {
+   @return mix($contrast-fg, $color, $percent);
+}
+
+$primary:       body-mix(66.7%) !default;
+$secondary:     body-mix(0%) !default;
+$success:       $green !default;
+$info:          $cyan !default;
+$warning:       $yellow !default;
+$danger:        $red !default;
+// This is inconsistent with Bootstrap semantics. That is, $dark
+// should actually be a light color in a dark mode setting, :shrug:
+// https://github.com/thomaspark/bootswatch/issues/989
+$light:         lighten($body-color, 50%) !default;
+$dark:          $body-bg !default;
+
+$enable-shadows: true !default;
+$enable-gradients: true !default;
+
+// Components
+
+$component-active-color:    $contrast-bg !default;
+
+// Links
+
+$link-color:                $contrast-bg !default;
+
+// Fonts
+
+$font-size-base:              .9375rem !default;
+$font-size-sm:                $font-size-base * .88 !default;
+
+// Tables
+
+$table-color:                 $contrast-bg !default;
+$table-accent-bg:             rgba($contrast-bg, .05) !default;
+$table-hover-bg:              rgba($contrast-bg, .075) !default;
+$table-border-color:          rgba($contrast-fg, .6) !default;
+$table-dark-border-color:     $table-border-color !default;
+$table-dark-color:            $contrast-bg !default;
+
+// Buttons
+
+$input-btn-padding-y:         .75rem !default;
+$input-btn-padding-x:         1rem !default;
+
+// Forms
+
+$input-disabled-bg:                 mix($contrast-bg, $contrast-fg, 80%) !default;
+
+// Dropdowns
+
+$dropdown-bg:                       $primary !default;
+$dropdown-border-color:             rgba($contrast-fg, .6) !default;
+$dropdown-divider-bg:               rgba($contrast-fg, .15) !default;
+$dropdown-link-color:               $body-color !default;
+$dropdown-link-hover-color:         $contrast-bg !default;
+$dropdown-link-hover-bg:            $body-bg !default;
+$dropdown-link-active-color:        $dropdown-link-hover-color !default;
+$dropdown-link-active-bg:           $dropdown-link-hover-bg !default;
+
+// Navs
+
+$nav-tabs-border-color:             rgba($contrast-fg, .6) !default;
+$nav-tabs-link-hover-border-color:  $nav-tabs-border-color !default;
+$nav-tabs-link-active-color:        $contrast-bg !default;
+$nav-tabs-link-active-border-color: $nav-tabs-border-color !default;
+
+// Navbar
+
+$navbar-padding-y:                  0 !default;
+
+
+// Pagination
+
+$pagination-color:                  $contrast-bg !default;
+$pagination-bg:                     transparent !default;
+$pagination-border-color:           rgba($contrast-fg, .6) !default;
+$pagination-hover-color:            $contrast-bg !default;
+$pagination-hover-bg:               transparent !default;
+$pagination-hover-border-color:     rgba($contrast-fg, .6) !default;
+$pagination-active-bg:              transparent !default;
+$pagination-active-border-color:    rgba($contrast-fg, .6) !default;
+$pagination-disabled-bg:            transparent !default;
+$pagination-disabled-border-color:  rgba($contrast-fg, .6) !default;
+
+
+// Jumbotron
+
+$jumbotron-bg:                      darken($body-bg, 5%) !default;
+
+// Cards
+
+$card-border-color:                 rgba($contrast-fg, .6) !default;
+$card-cap-bg:                       lighten($body-bg, 10%) !default;
+$card-bg:                           lighten($body-bg, 5%) !default;
+
+// Popovers
+
+$popover-bg:                        lighten($body-bg, 5%) !default;
+
+// Toasts
+
+$toast-background-color:            lighten($body-bg, 5%) !default;
+$toast-border-color:                rgba($contrast-fg, .2) !default;
+$toast-header-color:                $body-color !default;
+$toast-header-background-color:     $toast-background-color !default;
+$toast-header-border-color:         $toast-border-color !default;
+
+// Modals
+
+$modal-content-bg:                  lighten($body-bg, 5%) !default;
+$modal-header-border-color:         rgba($contrast-fg, .2) !default;
+
+// Progress bars
+
+$progress-bg:                       darken($body-bg, 5%) !default;
+$progress-bar-color:                $gray-600 !default;
+
+// List group
+
+$list-group-bg:                     lighten($body-bg, 5%) !default;
+$list-group-border-color:           rgba($contrast-fg, .6) !default;
+$list-group-hover-bg:               lighten($body-bg, 10%) !default;
+$list-group-active-color:           $contrast-bg !default;
+$list-group-active-bg:              $list-group-hover-bg !default;
+$list-group-active-border-color:    $list-group-border-color !default;
+$list-group-disabled-color:         body-mix(50%) !default;
+$list-group-action-color:           $contrast-bg !default;
+
+// Breadcrumbs
+
+$breadcrumb-active-color:           $body-color !default;
+
+// Code
+
+$pre-color:                         inherit !default;
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/yeti/font.css
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/yeti/font.css	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/yeti/font.css	(revision 3762)
@@ -0,0 +1,48 @@
+@font-face {
+  font-family: 'Open Sans';
+  font-style: italic;
+  font-weight: 300;
+  font-stretch: normal;
+  font-display: swap;
+  src: url(fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk5hkaVQ.woff) format('woff');
+}
+@font-face {
+  font-family: 'Open Sans';
+  font-style: italic;
+  font-weight: 400;
+  font-stretch: normal;
+  font-display: swap;
+  src: url(fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk8ZkaVQ.woff) format('woff');
+}
+@font-face {
+  font-family: 'Open Sans';
+  font-style: italic;
+  font-weight: 700;
+  font-stretch: normal;
+  font-display: swap;
+  src: url(fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0RkyFjaVQ.woff) format('woff');
+}
+@font-face {
+  font-family: 'Open Sans';
+  font-style: normal;
+  font-weight: 300;
+  font-stretch: normal;
+  font-display: swap;
+  src: url(fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsiH0C4k.woff) format('woff');
+}
+@font-face {
+  font-family: 'Open Sans';
+  font-style: normal;
+  font-weight: 400;
+  font-stretch: normal;
+  font-display: swap;
+  src: url(fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0C4k.woff) format('woff');
+}
+@font-face {
+  font-family: 'Open Sans';
+  font-style: normal;
+  font-weight: 700;
+  font-stretch: normal;
+  font-display: swap;
+  src: url(fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1y4k.woff) format('woff');
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/yeti/_variables.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/yeti/_variables.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/yeti/_variables.scss	(revision 3762)
@@ -0,0 +1,109 @@
+// Yeti 4.6.0
+// Bootswatch
+
+//
+// Color system
+//
+
+$white:    #fff !default;
+$gray-100: #f8f9fa !default;
+$gray-200: #eee !default;
+$gray-300: #dee2e6 !default;
+$gray-400: #ccc !default;
+$gray-500: #adb5bd !default;
+$gray-600: #888 !default;
+$gray-700: #495057 !default;
+$gray-800: #333 !default;
+$gray-900: #222 !default;
+$black:    #000 !default;
+
+$blue:    #008cba !default;
+$indigo:  #6610f2 !default;
+$purple:  #6f42c1 !default;
+$pink:    #e83e8c !default;
+$red:     #f04124 !default;
+$orange:  #fd7e14 !default;
+$yellow:  #e99002 !default;
+$green:   #43ac6a !default;
+$teal:    #20c997 !default;
+$cyan:    #5bc0de !default;
+
+$primary:       $blue !default;
+$secondary:     $gray-200 !default;
+$success:       $green !default;
+$info:          $cyan !default;
+$warning:       $yellow !default;
+$danger:        $red !default;
+$light:         $gray-200 !default;
+$dark:          $gray-900 !default;
+
+
+// Components
+
+$border-radius:               0 !default;
+$border-radius-lg:            0 !default;
+$border-radius-sm:            0 !default;
+
+// Fonts
+
+// stylelint-disable-next-line value-keyword-case
+$font-family-sans-serif:      "Open Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !default;
+$font-size-base:              .9375rem !default;
+$font-size-sm:                $font-size-base * .88 !default;
+$headings-font-weight:        300 !default;
+
+// Buttons
+
+$input-btn-padding-x:         .5rem !default;
+$btn-font-weight:             300 !default;
+
+// Dropdowns
+
+$dropdown-border-color:             rgba($black, .1) !default;
+$dropdown-divider-bg:               rgba($black, .1) !default;
+
+// Navs
+
+$nav-link-disabled-color:           $gray-400 !default;
+$nav-tabs-border-color:             $dropdown-border-color !default;
+$nav-tabs-link-hover-border-color:  $nav-tabs-border-color !default;
+$nav-tabs-link-active-border-color: $nav-tabs-border-color !default;
+
+// Navbar
+
+$navbar-dark-color:                 rgba($white, .7) !default;
+$navbar-dark-hover-color:           $white !default;
+
+// Pagination
+
+$pagination-color:                  $gray-600 !default;
+$pagination-border-color:           $nav-tabs-border-color !default;
+$pagination-active-border-color:    darken($primary, 5%) !default;
+$pagination-disabled-color:         $gray-200 !default;
+
+// Jumbotron
+
+$jumbotron-padding:                 4rem !default;
+
+// Cards
+
+$card-inner-border-radius:          0 !default;
+
+// Badges
+
+$badge-font-weight:                 300 !default;
+$badge-padding-x:                   1rem !default;
+
+// Progress bars
+
+$progress-bg:                       $gray-400 !default;
+$progress-bar-color:                $white !default;
+
+// List group
+
+$list-group-disabled-bg:            $gray-200 !default;
+
+// Close
+
+$close-color:                       $gray-600 !default;
+$close-text-shadow:                 none !default;
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/yeti/_bootswatch.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/yeti/_bootswatch.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/yeti/_bootswatch.scss	(revision 3762)
@@ -0,0 +1,589 @@
+// Yeti 4.6.0
+// Bootswatch
+
+
+// Variables ===================================================================
+
+$web-font-path: "https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,300;0,400;0,700;1,300;1,400;1,700&display=swap" !default;
+@import url($web-font-path);
+
+// Navbar ======================================================================
+
+.navbar {
+  font-size: $font-size-sm;
+  font-weight: $headings-font-weight;
+}
+
+.bg-primary {
+  .dropdown-menu {
+    background-color: $primary;
+
+    .dropdown-item,
+    .dropdown-item:focus {
+      color: $navbar-dark-color;
+    }
+
+    .dropdown-item.active,
+    .dropdown-item:hover,
+    .dropdown-item:focus {
+      background-color: darken($primary, 5%);
+      color: $white;
+    }
+  }
+}
+
+.bg-dark {
+  background-color: $gray-800 !important;
+
+  .dropdown-menu {
+    background-color: $gray-800;
+
+    .dropdown-item,
+    .dropdown-item:focus {
+      color: $navbar-dark-color;
+    }
+
+    .dropdown-item.active,
+    .dropdown-item:hover,
+    .dropdown-item:focus  {
+      background-color: darken($gray-800, 5%);
+      color: $white;
+    }
+  }
+}
+
+.bg-light {
+  .dropdown-menu {
+    background-color: $gray-200;
+
+    .dropdown-item,
+    .dropdown-item:focus {
+      color: $navbar-light-color;
+    }
+
+    .dropdown-item.active,
+    .dropdown-item:hover,
+    .dropdown-item:focus  {
+      background-color: lighten($gray-200, 5%);
+      color: $navbar-light-hover-color;
+    }
+  }
+}
+
+// Buttons =====================================================================
+
+.btn {
+  &-primary {
+    border-color: darken($primary, 5%);
+  }
+
+  &-secondary {
+    border-color: darken($secondary, 5%);
+  }
+
+  &-default {
+    border-color: darken($secondary, 5%);
+  }
+
+  &-success {
+    border-color: darken($success, 5%);
+  }
+
+  &-info {
+    border-color: darken($info, 5%);
+    color: $white;
+  }
+
+  &-danger {
+    border-color: darken($danger, 5%);
+  }
+
+  &-warning {
+    border-color: darken($warning, 5%);
+    color: $white;
+  }
+
+  &-light {
+    border-color: darken($light, 5%);
+  }
+
+  &-dark {
+    border-color: darken($dark, 5%);
+  }
+}
+
+.btn-group {
+  .dropdown-menu {
+    border-top-width: 0;
+  }
+
+  .dropdown-toggle {
+    &.btn-primary ~ .dropdown-menu {
+      background-color: $primary;
+      border-color: darken($primary, 5%);
+
+      .dropdown-item {
+        color: $white;
+      }
+
+      .dropdown-item:hover,
+      .dropdown-item:focus {
+        background-color: darken($primary, 8%);
+      }
+    }
+
+    &.btn-secondary ~ .dropdown-menu {
+      background-color: $secondary;
+      border-color: darken($secondary, 5%);
+
+      .dropdown-item {
+        color: $body-color;
+      }
+
+      .dropdown-item:hover,
+      .dropdown-item:focus {
+        background-color: darken($secondary, 8%);
+      }
+    }
+
+    &.btn-success ~ .dropdown-menu {
+      background-color: $success;
+      border-color: darken($success, 5%);
+
+      .dropdown-item {
+        color: $white;
+      }
+
+      .dropdown-item:hover,
+      .dropdown-item:focus {
+        background-color: darken($success, 8%);
+      }
+    }
+
+    &.btn-info ~ .dropdown-menu {
+      background-color: $info;
+      border-color: darken($info, 5%);
+
+      .dropdown-item {
+        color: $white;
+      }
+
+      .dropdown-item:hover,
+      .dropdown-item:focus {
+        background-color: darken($info, 8%);
+      }
+    }
+
+    &.btn-warning ~ .dropdown-menu {
+      background-color: $warning;
+      border-color: darken($warning, 5%);
+
+      .dropdown-item {
+        color: $white;
+      }
+
+      .dropdown-item:hover,
+      .dropdown-item:focus {
+        background-color: darken($warning, 8%);
+      }
+    }
+
+    &.btn-danger ~ .dropdown-menu {
+      background-color: $danger;
+      border-color: darken($danger, 5%);
+
+      .dropdown-item {
+        color: $white;
+      }
+
+      .dropdown-item:hover,
+      .dropdown-item:focus {
+        background-color: darken($danger, 8%);
+      }
+    }
+  }
+}
+
+// Typography ==================================================================
+
+.text-secondary {
+  color: $gray-700 !important;
+}
+
+.blockquote-footer {
+  color: $gray-600;
+}
+
+// Tables ======================================================================
+
+table {
+  font-size: $font-size-sm;
+}
+
+.table {
+  &-primary,
+  &-success,
+  &-info,
+  &-warning,
+  &-danger {
+    color: $white;
+  }
+
+  &-primary {
+    &,
+    > th,
+    > td {
+      background-color: $primary;
+    }
+  }
+
+  &-secondary {
+    &,
+    > th,
+    > td {
+      background-color: $secondary;
+    }
+  }
+
+  &-light {
+    &,
+    > th,
+    > td {
+      background-color: $light;
+    }
+  }
+
+  &-dark {
+    &,
+    > th,
+    > td {
+      background-color: $dark;
+    }
+  }
+
+  &-success {
+    &,
+    > th,
+    > td {
+      background-color: $success;
+    }
+  }
+
+  &-info {
+    &,
+    > th,
+    > td {
+      background-color: $info;
+    }
+  }
+
+  &-danger {
+    &,
+    > th,
+    > td {
+      background-color: $danger;
+    }
+  }
+
+  &-warning {
+    &,
+    > th,
+    > td {
+      background-color: $warning;
+    }
+  }
+
+  &-active {
+    &,
+    > th,
+    > td {
+      background-color: $table-active-bg;
+    }
+  }
+
+  &-hover {
+    .table-primary:hover {
+      &,
+      > th,
+      > td {
+        background-color: darken($primary, 5%);
+      }
+    }
+
+    .table-secondary:hover {
+      &,
+      > th,
+      > td {
+        background-color: darken($secondary, 5%);
+      }
+    }
+
+    .table-light:hover {
+      &,
+      > th,
+      > td {
+        background-color: darken($light, 5%);
+      }
+    }
+
+    .table-dark:hover {
+      &,
+      > th,
+      > td {
+        background-color: darken($dark, 5%);
+      }
+    }
+
+    .table-success:hover {
+      &,
+      > th,
+      > td {
+        background-color: darken($success, 5%);
+      }
+    }
+
+    .table-info:hover {
+      &,
+      > th,
+      > td {
+        background-color: darken($info, 5%);
+      }
+    }
+
+    .table-danger:hover {
+      &,
+      > th,
+      > td {
+        background-color: darken($danger, 5%);
+      }
+    }
+
+    .table-warning:hover {
+      &,
+      > th,
+      > td {
+        background-color: darken($warning, 5%);
+      }
+    }
+
+    .table-active:hover {
+      &,
+      > th,
+      > td {
+        background-color: $table-active-bg;
+      }
+    }
+
+  }
+}
+
+// Forms =======================================================================
+
+label,
+.control-label,
+.help-block,
+.checkbox,
+.radio,
+.form-control-feedback {
+  font-size: $font-size-sm;
+}
+
+// Navs ========================================================================
+
+.dropdown-item {
+  padding-top: .75rem;
+  padding-bottom: .75rem;
+  font-size: $font-size-sm;
+  font-weight: 300;
+}
+
+.nav-tabs {
+  .nav-link,
+  .nav-link.disabled,
+  .nav-link.disabled:hover,
+  .nav-link.disabled:focus {
+    border-color: $nav-tabs-border-color;
+    background-color: $gray-200;
+  }
+
+  .nav-link:hover,
+  .nav-link:focus {
+    background-color: lighten($gray-200, 5%);
+  }
+}
+
+.nav-pills {
+  .active {
+    border: 1px solid darken($primary, 5%);
+  }
+}
+
+.breadcrumb {
+  border: 1px solid $dropdown-border-color;
+  border-radius: 3px;
+  font-size: $font-size-sm;
+  font-weight: 300;
+  text-transform: uppercase;
+}
+
+.pagination {
+  font-weight: 300;
+
+  .page-link {
+    border-color: transparent;
+    border-radius: 3px;
+    margin-left: .1em;
+    margin-right: .1em;
+
+    &:hover,
+    &:focus {
+      text-decoration: none;
+    }
+  }
+
+  .page-item.disabled {
+    .page-link {
+      border-color: transparent;
+    }
+  }
+}
+
+.pagination,
+.pagination-lg,
+.pagination-sm {
+  .page-item:first-child,
+  .page-item:last-child {
+    .page-link {
+      border-radius: 3px;
+    }
+  }
+}
+
+.list-group {
+  font-size: $font-size-sm;
+  font-weight: 300;
+}
+
+// Indicators ==================================================================
+
+.close {
+  opacity: .6;
+  text-shadow: none;
+
+  &:hover,
+  &:focus {
+    opacity: 1;
+  }
+}
+
+.alert {
+  font-size: $font-size-sm;
+  font-weight: 300;
+  color: $white;
+
+  &-primary {
+    &,
+    > th,
+    > td {
+      background-color: $primary;
+    }
+  }
+
+  &-secondary {
+    &,
+    > th,
+    > td {
+      background-color: $secondary;
+    }
+  }
+
+  &-success {
+    &,
+    > th,
+    > td {
+      background-color: $success;
+    }
+  }
+
+  &-info {
+    &,
+    > th,
+    > td {
+      background-color: $info;
+    }
+  }
+
+  &-danger {
+    &,
+    > th,
+    > td {
+      background-color: $danger;
+    }
+  }
+
+  &-warning {
+    &,
+    > th,
+    > td {
+      background-color: $warning;
+    }
+  }
+
+  &-dark {
+    &,
+    > th,
+    > td {
+      background-color: $dark;
+    }
+  }
+
+  &-light {
+    &,
+    > th,
+    > td {
+      background-color: $light;
+    }
+  }
+
+  .alert-link {
+    font-weight: 400;
+    color: $white;
+    text-decoration: underline;
+  }
+
+  &-secondary,
+  &-light {
+    &,
+    a:not(.btn),
+    .alert-link {
+      color: $body-color;
+    }
+  }
+}
+
+.badge {
+  padding-bottom: .3em;
+
+  &-warning,
+  &-info {
+    color: $white;
+  }
+}
+
+// Progress bars ===============================================================
+
+.progress[value] {
+  height: 22px;
+  padding: 2px;
+  background-color: #f6f6f6;
+  border: 1px solid #ccc;
+  @include box-shadow(none);
+}
+
+
+// Popovers      ===============================================================
+
+.popover-header {
+  border-top-left-radius: 0;
+  border-top-right-radius: 0;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/spacelab/_bootswatch.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/spacelab/_bootswatch.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/spacelab/_bootswatch.scss	(revision 3762)
@@ -0,0 +1,97 @@
+// Spacelab 4.6.0
+// Bootswatch
+
+
+// Variables ===================================================================
+
+$web-font-path: "https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,400;0,700;1,400;1,700&display=swap" !default;
+@import url($web-font-path);
+
+// Mixins ======================================================================
+
+@mixin btn-shadow($color){
+  @include gradient-y-three-colors(lighten($color, 15%), $color, 50%, darken($color, 4%));
+  filter: none;
+  border: 1px solid darken($color, 10%);
+}
+
+// Navbar ======================================================================
+
+.navbar {
+  .nav-link,
+  .navbar-brand {
+    text-shadow: -1px -1px 0 rgba($black, .1);
+    transition: color ease-in-out .2s;
+  }
+
+  &.bg-primary {
+    @include btn-shadow(map-get($theme-colors, "primary"));
+  }
+
+  &.bg-dark, &.navbar-inverse {
+    @include btn-shadow(map-get($theme-colors, "secondary"));
+  }
+
+  &.bg-light, &.navbar-default {
+    @include btn-shadow(map-get($theme-colors, "light"));
+
+    .nav-link,
+    .navbar-brand {
+      text-shadow: 1px 1px 0 rgba($white, .1);
+    }
+
+    .navbar-brand {
+      color: $navbar-light-color;
+
+      &:hover {
+        color: $info;
+      }
+    }
+  }
+}
+
+// Buttons =====================================================================
+
+.btn {
+  text-shadow: -1px -1px 0 rgba($black, .1);
+
+  &-link {
+    text-shadow: none;
+  }
+}
+
+@each $color, $value in $theme-colors {
+  .btn-#{$color} {
+    @include btn-shadow($value);
+  }
+
+  .btn-#{$color}:not(.disabled):hover {
+    @include btn-shadow(darken($value, 4%));
+  }
+}
+
+[class*="btn-outline-"] {
+  text-shadow: none;
+}
+
+// Indicators ==================================================================
+
+.badge {
+  &-secondary {
+    color: $white;
+  }
+}
+
+// Containers ==================================================================
+
+.card,
+.list-group-item {
+  h1,
+  h2,
+  h3,
+  h4,
+  h5,
+  h6 {
+    color: inherit;
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/spacelab/font.css
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/spacelab/font.css	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/spacelab/font.css	(revision 3762)
@@ -0,0 +1,32 @@
+@font-face {
+  font-family: 'Open Sans';
+  font-style: italic;
+  font-weight: 400;
+  font-stretch: normal;
+  font-display: swap;
+  src: url(fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk8ZkaVQ.woff) format('woff');
+}
+@font-face {
+  font-family: 'Open Sans';
+  font-style: italic;
+  font-weight: 700;
+  font-stretch: normal;
+  font-display: swap;
+  src: url(fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0RkyFjaVQ.woff) format('woff');
+}
+@font-face {
+  font-family: 'Open Sans';
+  font-style: normal;
+  font-weight: 400;
+  font-stretch: normal;
+  font-display: swap;
+  src: url(fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0C4k.woff) format('woff');
+}
+@font-face {
+  font-family: 'Open Sans';
+  font-style: normal;
+  font-weight: 700;
+  font-stretch: normal;
+  font-display: swap;
+  src: url(fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1y4k.woff) format('woff');
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/spacelab/_variables.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/spacelab/_variables.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/spacelab/_variables.scss	(revision 3762)
@@ -0,0 +1,61 @@
+// Spacelab 4.6.0
+// Bootswatch
+
+//
+// Color system
+//
+
+$white:    #fff !default;
+$gray-100: #f8f9fa !default;
+$gray-200: #eee !default;
+$gray-300: #dee2e6 !default;
+$gray-400: #ced4da !default;
+$gray-500: #999 !default;
+$gray-600: #777 !default;
+$gray-700: #495057 !default;
+$gray-800: #333 !default;
+$gray-900: #2d2d2d !default;
+$black:    #000 !default;
+
+$blue:    #446e9b !default;
+$indigo:  #6610f2 !default;
+$purple:  #6f42c1 !default;
+$pink:    #e83e8c !default;
+$red:     #cd0200 !default;
+$orange:  #fd7e14 !default;
+$yellow:  #d47500 !default;
+$green:   #3cb521 !default;
+$teal:    #20c997 !default;
+$cyan:    #3399f3 !default;
+
+$primary:       $blue !default;
+$secondary:     $gray-500 !default;
+$success:       $green !default;
+$info:          $cyan !default;
+$warning:       $yellow !default;
+$danger:        $red !default;
+$light:         $gray-200 !default;
+$dark:          $gray-800 !default;
+
+
+// Body
+
+$body-color:                $gray-600 !default;
+
+// Links
+
+$link-color:                $info !default;
+
+// Fonts
+
+// stylelint-disable-next-line value-keyword-case
+$font-family-sans-serif:      "Open Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !default;
+$headings-color:              $gray-900 !default;
+
+// Navbar
+
+$navbar-dark-color:                 rgba($white, .75) !default;
+$navbar-dark-hover-color:           $white !default;
+$navbar-light-color:                rgba($black, .4) !default;
+$navbar-light-hover-color:          $info !default;
+$navbar-light-active-color:         $info !default;
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/journal/font.css
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/journal/font.css	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/journal/font.css	(revision 3762)
@@ -0,0 +1,14 @@
+@font-face {
+  font-family: 'News Cycle';
+  font-style: normal;
+  font-weight: 400;
+  font-display: swap;
+  src: url(fonts/CSR64z1Qlv-GDxkbKVQ_TOQ.woff) format('woff');
+}
+@font-face {
+  font-family: 'News Cycle';
+  font-style: normal;
+  font-weight: 700;
+  font-display: swap;
+  src: url(fonts/CSR54z1Qlv-GDxkbKVQ_dFsvaNA.woff) format('woff');
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/journal/_variables.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/journal/_variables.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/journal/_variables.scss	(revision 3762)
@@ -0,0 +1,60 @@
+// Journal 4.6.0
+// Bootswatch
+
+//
+// Color system
+//
+
+$white:    #fff !default;
+$gray-100: #f8f9fa !default;
+$gray-200: #eee !default;
+$gray-300: #dee2e6 !default;
+$gray-400: #ced4da !default;
+$gray-500: #aaa !default;
+$gray-600: #777 !default;
+$gray-700: #495057 !default;
+$gray-800: #333 !default;
+$gray-900: #222 !default;
+$black:    #000 !default;
+
+$blue:    #eb6864 !default;
+$indigo:  #6610f2 !default;
+$purple:  #6f42c1 !default;
+$pink:    #e83e8c !default;
+$red:     #f57a00 !default;
+$orange:  #fd7e14 !default;
+$yellow:  #f5e625 !default;
+$green:   #22b24c !default;
+$teal:    #20c997 !default;
+$cyan:    #369 !default;
+
+$primary:       $blue !default;
+$secondary:     $gray-500 !default;
+$success:       $green !default;
+$info:          $cyan !default;
+$warning:       $yellow !default;
+$danger:        $red !default;
+$light:         $gray-100 !default;
+$dark:          $gray-900 !default;
+
+// Fonts
+
+$headings-font-family:   "News Cycle", "Arial Narrow Bold", sans-serif !default;
+$headings-font-weight:    700 !default;
+$headings-line-height:    1.1 !default;
+
+// Buttons
+
+$input-btn-padding-x:         1rem !default;
+
+// Navbar
+
+$navbar-light-color:                rgba($black, .7) !default;
+$navbar-light-hover-color:          $black !default;
+$navbar-light-active-color:         $black !default;
+
+// Pagination
+
+$pagination-hover-color:            $white !default;
+$pagination-hover-bg:               $primary !default;
+$pagination-hover-border-color:     $primary !default;
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/journal/_bootswatch.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/journal/_bootswatch.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/journal/_bootswatch.scss	(revision 3762)
@@ -0,0 +1,61 @@
+// Journal 4.6.0
+// Bootswatch
+
+
+// Variables ===================================================================
+
+$web-font-path: "https://fonts.googleapis.com/css2?family=News+Cycle:wght@400;700&display=swap" !default;
+@import url($web-font-path);
+
+// Navbar ======================================================================
+
+.bg-dark {
+  background-color: $black !important;
+}
+
+.bg-light {
+  background-color: $white !important;
+  color: $black;
+  border: 1px solid $gray-200;
+
+  &.navbar-fixed-top {
+    border-width: 0 0 1px;
+  }
+
+  &.navbar-fixed-bottom {
+    border-width: 1px 0 0;
+  }
+}
+
+.navbar {
+  font-size: 18px;
+  font-family: $headings-font-family;
+  font-weight: $headings-font-weight;
+}
+
+.navbar-brand {
+  padding-top: .5rem;
+  font-size: inherit;
+  font-weight: $headings-font-weight;
+  text-transform: uppercase;
+}
+
+// Buttons =====================================================================
+
+.btn {
+  font-family: $headings-font-family;
+  font-weight: $headings-font-weight;
+
+  &-secondary,
+  &-warning {
+    color: $white;
+  }
+}
+
+// Navs ========================================================================
+
+.pagination {
+  a:hover {
+    text-decoration: none;
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/sketchy/_bootswatch.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/sketchy/_bootswatch.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/sketchy/_bootswatch.scss	(revision 3762)
@@ -0,0 +1,505 @@
+// Sketchy 4.6.0
+// Bootswatch
+
+
+// Variables ===================================================================
+
+$web-font-path: "https://fonts.googleapis.com/css?family=Neucha|Cabin+Sketch&display=swap" !default;
+@import url($web-font-path);
+
+// stylelint-disable scss/dollar-variable-default
+$border-radius-sketchy:    255px 25px 225px 25px / 25px 225px 25px 255px;
+$border-radius-lg-sketchy: 555px 25px 15px 25px / 25px 5px 35px 555px;
+$border-radius-sm-sketchy: 255px 25px 225px 25px / 25px 225px 25px 255px;
+// style-enable scss/dollar-variable-default
+
+// Navbar ======================================================================
+
+.navbar {
+  border-width: 2px;
+  border-style: solid;
+  border-radius: 25px 25px 55px 5px/5px 55px 25px 25px;
+
+  &.bg-light {
+    border-color: $gray-800;
+  }
+
+  &.fixed-top {
+    border-radius: 0 25px 225px 0/25px 0 25px 255px;
+    border-width: 0 0 2px;
+  }
+
+  &.fixed-bottom {
+    border-radius: 255px 25px 0 25px/25px 225px 25px 0;
+    border-width: 2px 0 0;
+  }
+
+  &-brand {
+    font-family: $headings-font-family;
+    font-weight: 400;
+    text-decoration: none;
+  }
+}
+
+// Buttons =====================================================================
+
+.btn {
+  border-radius: $border-radius-sketchy;
+  text-decoration: none;
+
+  &-lg {
+    border-radius: $border-radius-lg-sketchy;
+  }
+
+  &-sm {
+    border-radius: $border-radius-sm-sketchy;
+  }
+}
+
+// Typography ==================================================================
+
+button,
+input,
+optgroup,
+select,
+textarea {
+  font-family: $font-family-sans-serif;
+}
+
+blockquote {
+  border-radius: 15px 27px 25px 25px/25px 25px 305px 635px;
+}
+
+// Tables ======================================================================
+
+table {
+  th,
+  td {
+    background-color: $white;
+  }
+}
+
+.table-bordered {
+  background-color: $gray-800;
+  border-collapse: separate;
+  border-spacing: 0;
+  border-radius: 5px 25px 5px 25px/25px 5px 25px 5px;
+  overflow: hidden;
+
+  th,
+  td {
+    border-radius: 5px 5px 25px 4px/5px 4px 3px 5px;
+  }
+
+  .table-success,
+  .table-success:hover {
+    td,
+    th {
+      background-color: $success;
+      color: $white;
+    }
+  }
+
+  .table-info,
+  .table-info:hover {
+    td,
+    th {
+      background-color: $info;
+      color: $white;
+    }
+  }
+
+  .table-warning,
+  .table-warning:hover {
+    td,
+    th {
+      background-color: $warning;
+      color: $white;
+    }
+  }
+
+  .table-danger,
+  .table-danger:hover {
+    td,
+    th {
+      background-color: $danger;
+      color: $white;
+    }
+  }
+}
+
+.table-dark {
+  th,
+  td,
+  &.table-hover .table-active:hover > th,
+  &.table-hover .table-active:hover > td {
+    background-color: $gray-800;
+  }
+}
+
+
+// Forms =======================================================================
+
+input,
+.form-control,
+.input-group-text,
+.custom-file-label {
+  border-radius: $border-radius-sketchy;
+}
+
+textarea,
+textarea.form-control,
+select,
+select.form-control {
+  border-radius: $border-radius-lg-sketchy !important;
+}
+
+[type="checkbox"] {
+  position: relative !important;
+  appearance: none;
+  -webkit-appearance: none;
+  -moz-appearance: none;
+  -ms-appearance: none;
+  -o-appearance: none;
+  width: 0;
+  height: 0;
+  border: none;
+  cursor: pointer;
+
+  &::before {
+    content: "";
+    position: absolute;
+    left: -1.2em;
+    top: -.9em;
+    display: inline-block;
+    width: 15px;
+    height: 16px;
+    border: 2px solid $gray-800;
+    border-radius: 2px 8px 2px 4px / 5px 3px 5px 3px;
+  }
+
+  &:checked::after {
+    content: "x";
+    position: absolute;
+    left: -.64em;
+    top: -.48em;
+    font-size: 1.5rem;
+    line-height: .5;
+    color: $gray-800;
+  }
+
+  &:disabled {
+    &::before {
+      border: 2px solid $gray-500;
+    }
+  }
+}
+
+[type="radio"] {
+  position: relative !important;
+  appearance: none;
+  -webkit-appearance: none;
+  -moz-appearance: none;
+  -ms-appearance: none;
+  -o-appearance: none;
+  width: 0;
+  height: 0;
+  border: none;
+  cursor: pointer;
+
+  &::before {
+    content: "";
+    position: absolute;
+    left: -1.2em;
+    top: -.9em;
+    display: inline-block;
+    width: 16px;
+    height: 16px;
+    border: 2px solid $gray-800;
+    border-radius: 50% 45% 40% 50% / 40% 50% 50% 45%;
+  }
+
+  &:checked::before {
+    background-color: $gray-800;
+  }
+
+  &:disabled {
+    &::before {
+      border: 2px solid $gray-500;
+    }
+  }
+}
+
+.form-check-label {
+  padding-left: 2.5rem;
+}
+
+.form-check-inline {
+  [type="checkbox"] {
+    &::before {
+      left: 0;
+      top: 0;
+    }
+
+    &::after {
+      left: .14em;
+      top: .12em;
+    }
+  }
+
+  [type="radio"] {
+    &::before {
+      left: 0;
+      top: 0;
+    }
+  }
+
+  .form-check-label {
+    padding-left: 1rem;
+    padding-right: 1rem;
+  }
+}
+
+// Navs ========================================================================
+
+.dropdown-menu {
+  border-radius: 555px 25px 25px 25px/25px 25px 25px 555px;
+  overflow: hidden;
+}
+
+.dropdown-divider {
+  border-top-width: 2px;
+}
+
+.list-group {
+  background-color: $gray-800;
+  border: 2px solid $gray-800;
+  border-radius: 45px 15px 35px 5px/15px 5px 15px 65px;
+  overflow: hidden;
+
+  &-item {
+    border-left: none;
+    border-right: none;
+    border-top: 2px solid $gray-800;
+    border-radius: 255px 5px 225px 5px/25px 225px 25px 255px;
+
+    &:first-child {
+      border-top: none;
+    }
+
+    &:last-child {
+      border-bottom: none;
+    }
+  }
+}
+
+.nav-pills .nav-link, {
+  border-radius: $border-radius-sketchy;
+}
+
+.nav-link,
+.page-link,
+.list-group-item,
+.dropdown-item {
+  text-decoration: none;
+}
+
+.nav-tabs {
+  .nav-link {
+    border-radius: 45px 15px 225px 5px/25px 225px 25px 255px;
+  }
+}
+
+.breadcrumb {
+  border: 2px solid $gray-800;
+  border-radius: $border-radius-sketchy;
+}
+
+.pagination {
+  .page-link {
+    border-radius: 425px 255px 25px 25px/25px 25px 5px 25px;
+  }
+}
+
+// Indicators ==================================================================
+
+.badge {
+  border-radius: $border-radius-sm-sketchy;
+
+  &-pill {
+    border-radius: 7rem 8rem 8rem 8rem / 4rem 5rem 6rem 6rem;
+  }
+
+  &-warning {
+    color: $white;
+  }
+}
+
+.alert {
+  border-radius: $border-radius-sketchy;
+
+  &-dismissible {
+    .close {
+      color: transparent;
+
+      &::before {
+        right: 1rem;
+        top: .8rem;
+      }
+    }
+
+    &.alert-success {
+      border-color: $success;
+
+      &,
+      .alert-link,
+      .close::before {
+        color: $success;
+      }
+    }
+
+    &.alert-info {
+      border-color: $info;
+
+      &,
+      .alert-link,
+      .close::before {
+        color: $info;
+      }
+    }
+
+    &.alert-warning {
+      border-color: $warning;
+
+      &,
+      .alert-link,
+      .close::before {
+        color: $warning;
+      }
+    }
+
+    &.alert-danger {
+      border-color: $danger;
+
+      &,
+      .alert-link,
+      .close::before {
+        color: $danger;
+      }
+    }
+  }
+}
+
+// Progress bars ===============================================================
+
+.progress {
+  border: 2px solid $gray-800;
+  border-radius: $border-radius-sm-sketchy;
+}
+
+// Containers ==================================================================
+
+.card {
+  border-radius: 5px 5px 5px 5px/25px 25px 25px 5px;
+
+  &-outline {
+    &-primary,
+    &-success,
+    &-info,
+    &-warning,
+    &-danger {
+      border-width: 2px;
+    }
+  }
+
+  &-header {
+    border-bottom-width: 2px;
+    border-color: inherit;
+
+    &:first-child {
+      border-radius: 3px 3px 0 0/23px 23px 0 0;
+    }
+  }
+
+  &-footer {
+    border-top-width: 2px;
+  }
+}
+
+.jumbotron {
+  border: 2px solid $gray-800;
+  border-radius: $border-radius-lg-sketchy;
+}
+
+.toast {
+  border-radius: 10px 10px 15px 5px/5px 15px 5px 15px;
+
+  &-header {
+    font-family: $headings-font-family;
+  }
+}
+
+.modal {
+  &-content {
+    border-radius: 15px 5px 5px 25px/5px 25px 25px 5px;
+  }
+}
+
+.popover {
+  padding: 0;
+  border-radius: 45px 85px 15px 25px/15px 10px 35px 555px;
+
+  &-title {
+    border-bottom: 2px solid $gray-800;
+  }
+
+  &.popover-left::before,
+  &.bs-tether-element-attached-right::before {
+    right: -13px;
+  }
+
+  &.popover-top::before,
+  &.bs-tether-element-attached-bottom::before {
+    bottom: -13px;
+  }
+
+  &.popover-bottom::before,
+  &.bs-tether-element-attached-top::before {
+    top: -13px;
+  }
+
+  &.popover-right::before,
+  &.bs-tether-element-attached-left::before {
+    left: -13px;
+  }
+}
+
+.tooltip {
+  &-inner {
+    border-radius: $border-radius-sm-sketchy;
+  }
+}
+
+pre {
+  border: 2px solid $gray-800;
+  border-radius: 15px 5px 5px 25px/5px 25px 25px 5px;
+}
+
+.close,
+.close:hover,
+.close:focus,
+.close:active {
+  opacity: 1;
+
+  &::before {
+    position: absolute;
+    content: "X";
+    color: $gray-800;
+  }
+}
+
+.img {
+  &-thumbnail {
+    border-radius: $border-radius-sketchy;
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/sketchy/font.css
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/sketchy/font.css	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/sketchy/font.css	(revision 3762)
@@ -0,0 +1,14 @@
+@font-face {
+  font-family: 'Cabin Sketch';
+  font-style: normal;
+  font-weight: 400;
+  font-display: swap;
+  src: url(fonts/QGYpz_kZZAGCONcK2A4bGOj8mNhL.woff) format('woff');
+}
+@font-face {
+  font-family: 'Neucha';
+  font-style: normal;
+  font-weight: 400;
+  font-display: swap;
+  src: url(fonts/q5uGsou0JOdh94bfvQlr.woff) format('woff');
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/sketchy/_variables.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/sketchy/_variables.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/sketchy/_variables.scss	(revision 3762)
@@ -0,0 +1,158 @@
+// Sketchy 4.6.0
+// Bootswatch
+
+//
+// Color system
+//
+
+$white:    #fff !default;
+$gray-100: #f8f9fa !default;
+$gray-200: #f7f7f9 !default;
+$gray-300: #dee2e6 !default;
+$gray-400: #ccc !default;
+$gray-500: #aaa !default;
+$gray-600: #868e96 !default;
+$gray-700: #555 !default;
+$gray-800: #333 !default;
+$gray-900: #212529 !default;
+$black:    #000 !default;
+
+$blue:    #007bff !default;
+$indigo:  #6610f2 !default;
+$purple:  #6f42c1 !default;
+$pink:    #e83e8c !default;
+$red:     #dc3545 !default;
+$orange:  #fd7e14 !default;
+$yellow:  #ffc107 !default;
+$green:   #28a745 !default;
+$teal:    #20c997 !default;
+$cyan:    #17a2b8 !default;
+
+$primary:       $gray-800 !default;
+$secondary:     $gray-700 !default;
+$success:       $green !default;
+$info:          $cyan !default;
+$warning:       $yellow !default;
+$danger:        $red !default;
+$light:         $white !default;
+$dark:          $gray-700 !default;
+
+
+// Links
+
+$link-decoration:           underline !default;
+
+// Components
+
+$border-width:              2px !default;
+$border-radius:             25px !default;
+$border-radius-lg:          35px !default;
+$border-radius-sm:          15px !default;
+
+// Fonts
+
+// stylelint-disable-next-line value-keyword-case
+$font-family-sans-serif:      Neucha, -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif !default;
+$font-weight-base:            700 !default;
+$headings-font-family:        "Cabin Sketch", cursive !default;
+
+$blockquote-small-color:      $gray-800 !default;
+
+// Tables
+
+$table-accent-bg:             $gray-400 !default;
+$table-hover-bg:              $white !default;
+$table-border-width:          2px !default;
+$table-border-color:          $gray-800 !default;
+
+// Forms
+
+$input-border-color:                $gray-800 !default;
+$input-focus-border-color:          $input-border-color !default;
+
+// Dropdowns
+
+$dropdown-border-color:             $gray-800 !default;
+$dropdown-divider-bg:               $gray-800 !default;
+$dropdown-link-hover-color:         $white !default;
+$dropdown-link-hover-bg:            $gray-800 !default;
+
+// Navs
+
+$nav-tabs-border-color:             $gray-800 !default;
+$nav-tabs-link-hover-border-color:  $gray-800 !default;
+$nav-tabs-link-active-color:        $gray-800 !default;
+$nav-tabs-link-active-border-color: $gray-800 !default;
+
+// Navbar
+
+$navbar-dark-color:                 $white !default;
+$navbar-dark-hover-color:           $white !default;
+$navbar-dark-toggler-border-color:  $white !default;
+$navbar-light-color:                $gray-800 !default;
+$navbar-light-hover-color:          $gray-800 !default;
+$navbar-light-active-color:         $gray-800 !default;
+$navbar-light-toggler-border-color: $gray-800 !default;
+
+// Pagination
+
+$pagination-border-color:           $gray-800 !default;
+$pagination-hover-color:            $white !default;
+$pagination-hover-bg:               $gray-800 !default;
+$pagination-hover-border-color:     $gray-800 !default;
+$pagination-disabled-color:         $gray-400 !default;
+$pagination-disabled-border-color:  $gray-800 !default;
+
+// Jumbotron
+
+$jumbotron-bg:                      transparent !default;
+
+// Cards
+
+$card-border-width:                 2px !default;
+$card-border-color:                 $gray-800 !default;
+
+// Popovers
+
+$popover-border-color:              $gray-800 !default;
+
+// Badges
+
+$badge-padding-y:                   .5em !default;
+$badge-padding-x:                   1.2em !default;
+
+// Toasts
+
+$toast-border-width:                2px !default;
+$toast-border-color:                $gray-800 !default;
+$toast-header-color:                $gray-800 !default;
+$toast-header-border-color:         $toast-border-color !default;
+
+// Modals
+
+$modal-content-border-color:        $gray-800 !default;
+$modal-header-border-color:         $gray-800 !default;
+
+// Progress bars
+
+$progress-bg:                       $white !default;
+$progress-bar-bg:                   $gray-400 !default;
+
+// List group
+
+$list-group-border-color:           $gray-800 !default;
+$list-group-hover-bg:               $gray-300 !default;
+$list-group-active-color:           $white !default;
+$list-group-active-bg:              $gray-800 !default;
+$list-group-action-color:           $gray-800 !default;
+
+// Breadcrumbs
+
+$breadcrumb-bg:                     $white !default;
+$breadcrumb-divider-color:          $gray-800 !default;
+$breadcrumb-active-color:           $gray-800 !default;
+
+// Close
+
+$close-color:                       $white !default;
+$close-text-shadow:                 none !default;
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/superhero/font.css
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/superhero/font.css	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/superhero/font.css	(revision 3762)
@@ -0,0 +1,21 @@
+@font-face {
+  font-family: 'Lato';
+  font-style: normal;
+  font-weight: 300;
+  font-display: swap;
+  src: url(fonts/S6u9w4BMUTPHh7USeww.woff) format('woff');
+}
+@font-face {
+  font-family: 'Lato';
+  font-style: normal;
+  font-weight: 400;
+  font-display: swap;
+  src: url(fonts/S6uyw4BMUTPHvxo.woff) format('woff');
+}
+@font-face {
+  font-family: 'Lato';
+  font-style: normal;
+  font-weight: 700;
+  font-display: swap;
+  src: url(fonts/S6u9w4BMUTPHh6UVeww.woff) format('woff');
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/superhero/_variables.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/superhero/_variables.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/superhero/_variables.scss	(revision 3762)
@@ -0,0 +1,156 @@
+// Superhero 4.6.0
+// Bootswatch
+
+//
+// Color system
+//
+
+$white:    #fff !default;
+$gray-100: #ebebeb !default;
+$gray-200: #4e5d6c !default;
+$gray-300: #dee2e6 !default;
+$gray-400: #ced4da !default;
+$gray-500: #adb5bd !default;
+$gray-600: #868e96 !default;
+$gray-700: #495057 !default;
+$gray-800: #343a40 !default;
+$gray-900: #212529 !default;
+$black:    #000 !default;
+
+$blue:    #df691a !default;
+$indigo:  #6610f2 !default;
+$purple:  #6f42c1 !default;
+$pink:    #e83e8c !default;
+$red:     #d9534f !default;
+$orange:  #f0ad4e !default;
+$yellow:  #f0ad4e !default;
+$green:   #5cb85c !default;
+$teal:    #20c997 !default;
+$cyan:    #5bc0de !default;
+
+// Body
+
+$body-bg:                   #2b3e50 !default;
+$body-color:                $gray-100 !default;
+@function body-mix($weight) {
+    @return mix($body-bg, $body-color, $weight);
+}
+
+$contrast-bg: color-contrast($body-bg) !default;
+$contrast-fg: color-contrast($contrast-bg) !default;
+
+$primary:       $blue !default;
+$secondary:     body-mix(80%) !default;
+$success:       $green !default;
+$info:          $cyan !default;
+$warning:       $yellow !default;
+$danger:        $red !default;
+$light:         body-mix(48%) !default;
+$dark:          body-mix(80%) !default;
+
+
+// Components
+
+$border-radius:               0 !default;
+$border-radius-lg:            0 !default;
+$border-radius-sm:            0 !default;
+
+// Fonts
+
+// stylelint-disable-next-line value-keyword-case
+$font-family-sans-serif:      Lato, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !default;
+
+$text-muted:                  rgba($contrast-bg, .4) !default;
+
+// Tables
+
+$table-accent-bg:             rgba($contrast-bg, .05) !default;
+$table-hover-bg:              rgba($contrast-bg, .075) !default;
+$table-border-color:          rgba($contrast-fg, .15) !default;
+$table-head-bg:               $light !default;
+$table-dark-bg:               $light !default;
+$table-dark-border-color:     body-mix(80%) !default;
+$table-dark-color:            $body-bg !default;
+
+// Forms
+
+$input-disabled-bg:                 $body-color !default;
+$input-border-color:                transparent !default;
+$input-group-addon-color:           $body-color !default;
+$custom-file-button-color:          $contrast-bg !default;
+$custom-file-border-color:          body-mix(80%) !default;
+
+// Dropdowns
+
+$dropdown-bg:                       body-mix(80%) !default;
+$dropdown-divider-bg:               rgba($contrast-fg, .15) !default;
+$dropdown-link-color:               $body-color !default;
+$dropdown-link-hover-color:         $dropdown-link-color !default;
+$dropdown-link-hover-bg:            $table-hover-bg !default;
+
+// Navs
+
+$nav-link-disabled-color:           rgba($contrast-bg, .4) !default;
+$nav-tabs-border-color:             body-mix(80%) !default;
+$nav-tabs-link-active-color:        $body-color !default;
+$nav-tabs-link-active-border-color: body-mix(80%) !default;
+
+// Navbar
+
+$navbar-padding-y:                  .25rem !default;
+$navbar-dark-color:                 rgba($contrast-bg, .75) !default;
+$navbar-dark-hover-color:           $contrast-bg !default;
+
+// Pagination
+
+$pagination-color:                  $contrast-bg !default;
+$pagination-bg:                     body-mix(80%) !default;
+$pagination-border-color:           transparent !default;
+$pagination-hover-color:            $contrast-bg !default;
+$pagination-hover-bg:               $nav-link-disabled-color !default;
+$pagination-hover-border-color:     $pagination-border-color !default;
+$pagination-disabled-color:         $nav-link-disabled-color !default;
+$pagination-disabled-bg:            $pagination-bg !default;
+$pagination-disabled-border-color:  $pagination-border-color !default;
+
+// Cards
+
+$card-cap-bg:                       $table-hover-bg !default;
+$card-bg:                           body-mix(80%) !default;
+$card-inner-border-radius:          0 !default;
+
+// Popovers
+
+$popover-bg:                        body-mix(80%) !default;
+$popover-header-bg:                 $table-hover-bg !default;
+
+// Toasts
+
+$toast-background-color:            body-mix(80%) !default;
+$toast-border-color:                rgba(0, 0, 0, .2) !default;
+$toast-header-color:                $body-color !default;
+$toast-header-background-color:     $toast-background-color !default;
+$toast-header-border-color:         $toast-border-color !default;
+
+// Modals
+
+$modal-content-bg:                  body-mix(80%) !default;
+$modal-header-border-color:         rgba(0, 0, 0, .2) !default;
+
+// List group
+
+$list-group-bg:                     body-mix(80%) !default;
+$list-group-border-color:           transparent !default;
+$list-group-hover-bg:               $nav-link-disabled-color !default;
+$list-group-disabled-color:         $nav-link-disabled-color !default;
+$list-group-action-color:           $contrast-bg !default;
+$list-group-action-hover-color:     $contrast-bg !default;
+
+// Breadcrumbs
+
+$breadcrumb-divider-color:          $body-color !default;
+$breadcrumb-active-color:           $body-color !default;
+
+// Code
+
+$pre-color:                         inherit !default;
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/superhero/_bootswatch.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/superhero/_bootswatch.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/dist/superhero/_bootswatch.scss	(revision 3762)
@@ -0,0 +1,300 @@
+// Superhero 4.6.0
+// Bootswatch
+
+
+// Variables ===================================================================
+
+$web-font-path: "https://fonts.googleapis.com/css2?family=Lato:wght@300;400;700&display=swap" !default;
+@import url($web-font-path);
+
+// Navbar ======================================================================
+
+.navbar {
+  font-size: $font-size-sm;
+}
+
+// Buttons =====================================================================
+
+.btn {
+  @each $color, $value in $theme-colors {
+    &-#{$color} {
+      @if $enable-gradients {
+        background: $value linear-gradient(180deg, mix($white, $value, 15%), $value) repeat-x;
+      } @else {
+        background-color: $value;
+      }
+    }
+  }
+}
+
+// Typography ==================================================================
+
+.dropdown-menu {
+  font-size: $font-size-sm;
+}
+
+.dropdown-header {
+  font-size: $font-size-sm;
+}
+
+.blockquote-footer {
+  color: $body-color;
+}
+
+// Tables ======================================================================
+
+.table {
+  font-size: $font-size-sm;
+
+  .thead-dark th {
+    color: $white;
+  }
+
+  a:not(.btn) {
+    color: $white;
+    text-decoration: underline;
+  }
+
+  .dropdown-menu a {
+    text-decoration: none;
+  }
+
+  .text-muted {
+    color: $text-muted;
+  }
+
+  &-primary {
+    &,
+    > th,
+    > td {
+      background-color: $primary;
+    }
+  }
+
+  &-secondary {
+    &,
+    > th,
+    > td {
+      background-color: $secondary;
+    }
+  }
+
+  &-light {
+    &,
+    > th,
+    > td {
+      background-color: $light;
+    }
+  }
+
+  &-dark {
+    color: $white;
+
+    &,
+    > th,
+    > td {
+      background-color: $dark;
+    }
+  }
+
+  &-success {
+    &,
+    > th,
+    > td {
+      background-color: $success;
+    }
+  }
+
+  &-info {
+    &,
+    > th,
+    > td {
+      background-color: $info;
+    }
+  }
+
+  &-danger {
+    &,
+    > th,
+    > td {
+      background-color: $danger;
+    }
+  }
+
+  &-warning {
+    &,
+    > th,
+    > td {
+      background-color: $warning;
+    }
+  }
+
+  &-active {
+    &,
+    > th,
+    > td {
+      background-color: $table-active-bg;
+    }
+  }
+
+  &-hover {
+    .table-primary:hover {
+      &,
+      > th,
+      > td {
+        background-color: darken($primary, 5%);
+      }
+    }
+
+    .table-secondary:hover {
+      &,
+      > th,
+      > td {
+        background-color: darken($secondary, 5%);
+      }
+    }
+
+    .table-light:hover {
+      &,
+      > th,
+      > td {
+        background-color: darken($light, 5%);
+      }
+    }
+
+    .table-dark:hover {
+      &,
+      > th,
+      > td {
+        background-color: darken($dark, 5%);
+      }
+    }
+
+    .table-success:hover {
+      &,
+      > th,
+      > td {
+        background-color: darken($success, 5%);
+      }
+    }
+
+    .table-info:hover {
+      &,
+      > th,
+      > td {
+        background-color: darken($info, 5%);
+      }
+    }
+
+    .table-danger:hover {
+      &,
+      > th,
+      > td {
+        background-color: darken($danger, 5%);
+      }
+    }
+
+    .table-warning:hover {
+      &,
+      > th,
+      > td {
+        background-color: darken($warning, 5%);
+      }
+    }
+
+    .table-active:hover {
+      &,
+      > th,
+      > td {
+        background-color: $table-active-bg;
+      }
+    }
+
+  }
+}
+
+// Forms =======================================================================
+
+label,
+.radio label,
+.checkbox label,
+.help-block {
+  font-size: $font-size-sm;
+}
+
+// Navs ========================================================================
+
+.nav-tabs,
+.nav-pills {
+  .nav-link,
+  .nav-link:hover {
+    color: $body-color;
+  }
+
+  .nav-link.disabled {
+    color: $nav-link-disabled-color;
+  }
+}
+
+.page-link:hover,
+.page-link:focus {
+  color: $white;
+  text-decoration: none;
+}
+
+// Indicators ==================================================================
+
+.alert {
+  border: none;
+  color: $white;
+
+  a,
+  .alert-link {
+    color: $white;
+    text-decoration: underline;
+  }
+
+  @each $color, $value in $theme-colors {
+    &-#{$color} {
+      @if $enable-gradients {
+        background: $value linear-gradient(180deg, mix($white, $value, 15%), $value) repeat-x;
+      } @else {
+        background-color: $value;
+      }
+    }
+  }
+}
+
+.badge {
+  &-warning,
+  &-info {
+    color: $white;
+  }
+}
+
+.close {
+  color: $white;
+  text-shadow: none;
+  opacity: .5;
+
+  &:hover,
+  &:focus {
+    opacity: 1;
+  }
+}
+
+// Popovers      ===============================================================
+
+.popover-header {
+  border-top-left-radius: 0;
+  border-top-right-radius: 0;
+}
+
+// Containers ==================================================================
+
+.modal {
+  &-header,
+  &-footer {
+    background-color: $table-hover-bg;
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/package.json
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/package.json	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/package.json	(revision 3762)
@@ -0,0 +1,23 @@
+{
+  "name": "bootswatch",
+  "description": "Bootswatch is a collection of themes for Bootstrap.",
+  "version": "4.6.0",
+  "author": "Thomas Park",
+  "homepage": "https://bootswatch.com",
+  "license": "MIT",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/thomaspark/bootswatch.git"
+  },
+  "bugs": {
+    "url": "https://github.com/thomaspark/bootswatch/issues"
+  },
+  "scripts": {
+    "build": "grunt swatch",
+    "htmllint": "grunt htmllint",
+    "stylelint": "stylelint \"**/*.scss\" --rd",
+    "test": "npm run stylelint"
+  },
+  "files": "dist/**/*.{css,scss}",
+  "dependencies": {}
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/README.md
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/README.md	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw4/README.md	(revision 3762)
@@ -0,0 +1,161 @@
+<p align="center">
+  <img width="200" height="200" src="https://bootswatch.com/_assets/img/logo-dark.svg">
+</p>
+
+<h3 align="center">Bootswatch</h3>
+
+<p align="center">
+  A collection of open source themes for <a href="https://getbootstrap.com/">Bootstrap</a>
+  <br>
+  <a href="https://bootswatch.com"><strong>View Bootswatch themes »</strong></a>
+  <br>
+  <br>
+  <a href="https://github.com/thomaspark/bootswatch/issues/new">Report bug</a>
+  ·
+  <a href="https://github.com/thomaspark/bootswatch/issues/new">Request feature</a>
+  ·
+  <a href="https://blog.bootswatch.com/">Blog</a>
+</p>
+
+## Usage
+
+There are a few different ways you can integrate Bootswatch into your project.
+
+### Via Pre-compiled Asset
+
+Download the `bootstrap.min.css` file associated with a theme and replace
+Bootstrap's default stylesheet. You must still include Bootstrap's JavaScript
+file to have functional dropdowns, modals, etc.
+
+### Via CDN
+
+You can use the themes via CDN at [jsDelivr](https://www.jsdelivr.com/package/npm/bootswatch).
+
+### Via Sass Imports
+
+If you're using [Sass](https://sass-lang.com/) (SCSS) in your project, you can
+import the `_variables.scss` and `_bootswatch.scss` files for a given theme.
+This method allows you to override theme variables.
+
+```scss
+// Your variable overrides go here, e.g.:
+// $h1-font-size: 3rem;
+
+@import "~bootswatch/dist/[theme]/variables";
+@import "~bootstrap/scss/bootstrap";
+@import "~bootswatch/dist/[theme]/bootswatch";
+```
+
+Make sure to import Bootstrap's `bootstrap.scss` in between `_variables.scss`
+and `_bootswatch.scss`!
+
+### Via NPM
+
+You can install as a package with the command `npm install bootswatch`.
+
+#### React Users (`create-react-app`, or similar bundler)
+
+Modern JavaScript bundlers (webpack, parcel, rollup) support `import`ing CSS from JS files. This can make it easier to deploy various 1st and 3rd party assets predictably. Note: _There are tradeoffs to the following method, research your tooling before deploying to production._
+
+Before continuing, ensure you've run `npm install bootswatch` in your local project folder. (Use either `npm` or `yarn`.)
+
+Add the following `import` to your top-level `index.js` (or `App.js`) file. Add it **before** any other `.css` imports.
+
+```js
+import "bootswatch/dist/[theme]/bootstrap.min.css";
+// TODO: Note: Replace ^[theme]^ (examples: darkly, slate, cosmo, spacelab, and superhero. See https://bootswatch.com for current theme names.)
+```
+
+
+Here's an example of updated `imports` in `App.js` to use "slate" theme (using a `create-react-app` fresh project.)
+
+```js
+import React from 'react';
+import logo from './logo.svg';
+import 'bootswatch/dist/slate/bootstrap.min.css'; // Added this :boom:
+import './App.css';
+
+function App() {
+...
+```
+
+
+### Via Ruby Gem
+
+In your Ruby project, you can access the latest version of each theme by adding
+the following to your Gemfile and running `bundle install`:
+
+```ruby
+gem "bootswatch", github: "thomaspark/bootswatch"
+```
+
+Each theme directory is then accessible via the path
+`"#{Gem.loaded_specs["bootswatch"].load_paths.first}/[theme]"`.
+
+Ruby on Rails users can add the following to an initializer (e.g.
+`config/initializers/bootswatch.rb`):
+
+```ruby
+Rails.application.config.assets.paths += Gem.loaded_specs["bootswatch"].load_paths
+```
+
+And thus be able to import themes via Sass like so:
+
+```scss
+@import "[theme]/variables";
+@import "~bootstrap/scss/bootstrap";
+@import "[theme]/bootswatch";
+```
+
+### Via API
+
+A simple JSON API is available for integrating your platform with Bootswatch.
+More info can be found on the [Help page](https://bootswatch.com/help/#api).
+
+
+## Customization
+
+Bootswatch is open source and you’re welcome to modify the themes.
+
+Each theme consists of two SASS files. `_variables.scss`, which is included by default in Bootstrap, allows you to customize the settings. `_bootswatch.scss` introduces more extensive structural changes.
+
+Check out the [Help page](https://bootswatch.com/help/#customization) for more details on building your own theme.
+
+
+## Contributing
+
+It's through your contributions that Bootswatch will continue to improve. You can contribute in several ways.
+
+**Issues:** Provide a detailed report of any bugs you encounter and open an issue on [GitHub](https://github.com/thomaspark/bootswatch/issues).
+
+**Documentation:** If you'd like to fix a typo or beef up the docs, you can fork the project, make your changes, and submit a pull request.
+
+**Code:** Make a fix and submit it as a pull request. When making changes, it's important to keep the CSS and SASS versions in sync. To do this, be sure to edit the SASS source files for the particular theme first, then run the  tasks `grunt swatch` to build the CSS.
+
+**Donation:** Donations are gratefully accepted via [GitHub](https://github.com/sponsors/thomaspark) and [PayPal](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=PU2DH4BMF9MWS&source=url).
+
+
+## Author
+
+Thomas Park
+
+* <https://github.com/thomaspark>
+* <https://thomaspark.co/>
+
+
+## Thanks
+
+[Mark Otto](https://github.com/mdo) and [Jacob Thornton](https://github.com/fat) for [Bootstrap](https://github.com/twbs/bootstrap).
+
+[Jenil Gogari](https://jgog.in/) for his contributions to the Flatly theme.
+
+[James Taylor](https://github.com/jostylr) for [cors-lite](https://github.com/jostylr/cors-lite).
+
+[Corey Sewell](https://github.com/cjsewell) for SASS conversion.
+
+
+## Copyright and License
+
+Copyright 2014-2020 Thomas Park
+
+Code released under the MIT License.
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/README.md
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/README.md	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/README.md	(revision 3762)
@@ -0,0 +1,161 @@
+<p align="center">
+  <img width="200" height="200" src="https://bootswatch.com/_assets/img/logo-dark.svg">
+</p>
+
+<h3 align="center">Bootswatch</h3>
+
+<p align="center">
+  A collection of open source themes for <a href="https://getbootstrap.com/">Bootstrap</a>
+  <br>
+  <a href="https://bootswatch.com"><strong>View Bootswatch themes »</strong></a>
+  <br>
+  <br>
+  <a href="https://github.com/thomaspark/bootswatch/issues/new">Report bug</a>
+  ·
+  <a href="https://github.com/thomaspark/bootswatch/issues/new">Request feature</a>
+  ·
+  <a href="https://blog.bootswatch.com/">Blog</a>
+</p>
+
+## Usage
+
+There are a few different ways you can integrate Bootswatch into your project.
+
+### Via Pre-compiled Asset
+
+Download the `bootstrap.min.css` file associated with a theme and replace
+Bootstrap's default stylesheet. You must still include Bootstrap's JavaScript
+file to have functional dropdowns, modals, etc.
+
+### Via CDN
+
+You can use the themes via CDN at [jsDelivr](https://www.jsdelivr.com/package/npm/bootswatch).
+
+### Via Sass Imports
+
+If you're using [Sass](https://sass-lang.com/) (SCSS) in your project, you can
+import the `_variables.scss` and `_bootswatch.scss` files for a given theme.
+This method allows you to override theme variables.
+
+```scss
+// Your variable overrides go here, e.g.:
+// $h1-font-size: 3rem;
+
+@import "~bootswatch/dist/[theme]/variables";
+@import "~bootstrap/scss/bootstrap";
+@import "~bootswatch/dist/[theme]/bootswatch";
+```
+
+Make sure to import Bootstrap's `bootstrap.scss` in between `_variables.scss`
+and `_bootswatch.scss`!
+
+### Via npm
+
+You can install as a package with the command `npm install bootswatch`.
+
+#### React Users (`create-react-app`, or similar bundler)
+
+Modern JavaScript bundlers (webpack, parcel, rollup) support `import`ing CSS from JS files. This can make it easier to deploy various 1st and 3rd party assets predictably. Note: _There are tradeoffs to the following method, research your tooling before deploying to production._
+
+Before continuing, ensure you've run `npm install bootswatch` in your local project folder. (Use either `npm` or `yarn`.)
+
+Add the following `import` to your top-level `index.js` (or `App.js`) file. Add it **before** any other `.css` imports.
+
+```js
+import "bootswatch/dist/[theme]/bootstrap.min.css";
+// TODO: Note: Replace ^[theme]^ (examples: darkly, slate, cosmo, spacelab, and superhero. See https://bootswatch.com for current theme names.)
+```
+
+
+Here's an example of updated `imports` in `App.js` to use "slate" theme (using a `create-react-app` fresh project.)
+
+```js
+import React from 'react';
+import logo from './logo.svg';
+import 'bootswatch/dist/slate/bootstrap.min.css'; // Added this :boom:
+import './App.css';
+
+function App() {
+...
+```
+
+
+### Via Ruby Gem
+
+In your Ruby project, you can access the latest version of each theme by adding
+the following to your Gemfile and running `bundle install`:
+
+```ruby
+gem "bootswatch", github: "thomaspark/bootswatch"
+```
+
+Each theme directory is then accessible via the path
+`"#{Gem.loaded_specs["bootswatch"].load_paths.first}/[theme]"`.
+
+Ruby on Rails users can add the following to an initializer (e.g.
+`config/initializers/bootswatch.rb`):
+
+```ruby
+Rails.application.config.assets.paths += Gem.loaded_specs["bootswatch"].load_paths
+```
+
+And thus be able to import themes via Sass like so:
+
+```scss
+@import "[theme]/variables";
+@import "~bootstrap/scss/bootstrap";
+@import "[theme]/bootswatch";
+```
+
+### Via API
+
+A simple JSON API is available for integrating your platform with Bootswatch.
+More info can be found on the [Help page](https://bootswatch.com/help/#api).
+
+
+## Customization
+
+Bootswatch is open source and you’re welcome to modify the themes.
+
+Each theme consists of two SASS files. `_variables.scss`, which is included by default in Bootstrap, allows you to customize the settings. `_bootswatch.scss` introduces more extensive structural changes.
+
+Check out the [Help page](https://bootswatch.com/help/#customization) for more details on building your own theme.
+
+
+## Contributing
+
+It's through your contributions that Bootswatch will continue to improve. You can contribute in several ways.
+
+**Issues:** Provide a detailed report of any bugs you encounter and open an issue on [GitHub](https://github.com/thomaspark/bootswatch/issues).
+
+**Documentation:** If you'd like to fix a typo or beef up the docs, you can fork the project, make your changes, and submit a pull request.
+
+**Code:** Make a fix and submit it as a pull request. When making changes, it's important to keep the CSS and SASS versions in sync. To do this, be sure to edit the SASS source files for the particular theme first, then run the  tasks `grunt swatch` to build the CSS.
+
+**Donation:** Donations are gratefully accepted via [GitHub](https://github.com/sponsors/thomaspark) and [PayPal](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=PU2DH4BMF9MWS&source=url).
+
+
+## Author
+
+Thomas Park
+
+* <https://github.com/thomaspark>
+* <https://thomaspark.co/>
+
+
+## Thanks
+
+[Mark Otto](https://github.com/mdo) and [Jacob Thornton](https://github.com/fat) for [Bootstrap](https://github.com/twbs/bootstrap).
+
+[Jenil Gogari](https://jgog.in/) for his contributions to the Flatly theme.
+
+[James Taylor](https://github.com/jostylr) for [cors-lite](https://github.com/jostylr/cors-lite).
+
+[Corey Sewell](https://github.com/cjsewell) for SASS conversion.
+
+
+## Copyright and License
+
+Copyright 2014-2021 Thomas Park
+
+Code released under the MIT License.
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/LICENSE
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/LICENSE	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/LICENSE	(revision 3762)
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2013 Thomas Park
+
+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.
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/slate/_variables.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/slate/_variables.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/slate/_variables.scss	(revision 3762)
@@ -0,0 +1,189 @@
+// Slate 5.2.2
+// Bootswatch
+
+$theme: "slate" !default;
+
+//
+// Color system
+//
+
+$white:    #fff !default;
+$gray-100: #f8f9fa !default;
+$gray-200: #e9ecef !default;
+$gray-300: #dee2e6 !default;
+$gray-400: #ced4da !default;
+$gray-500: #999 !default;
+$gray-600: #7a8288 !default;
+$gray-700: #52575c !default;
+$gray-800: #3a3f44 !default;
+$gray-900: #272b30 !default;
+$black:    #000 !default;
+
+$blue:    #007bff !default;
+$indigo:  #6610f2 !default;
+$purple:  #6f42c1 !default;
+$pink:    #e83e8c !default;
+$red:     #ee5f5b !default;
+$orange:  #fd7e14 !default;
+$yellow:  #f89406 !default;
+$green:   #62c462 !default;
+$teal:    #20c997 !default;
+$cyan:    #5bc0de !default;
+
+// Body
+
+@function body-mix($weight) {
+  @return mix($gray-900, $gray-600, $weight);
+}
+
+$body-bg: body-mix(100%) !default;
+$body-color: body-mix(0%) !default;
+$contrast-bg: color-contrast($body-bg) !default;
+$contrast-fg: color-contrast($contrast-bg) !default;
+
+@function lighten($color, $percent) {
+  @return mix($contrast-bg, $color, $percent);
+}
+
+@function darken($color, $percent) {
+  @return mix($contrast-fg, $color, $percent);
+}
+
+$primary:       body-mix(66.7%) !default;
+$secondary:     body-mix(0%) !default;
+$success:       $green !default;
+$info:          $cyan !default;
+$warning:       $yellow !default;
+$danger:        $red !default;
+// This is inconsistent with Bootstrap semantics. That is, $dark
+// should actually be a light color in a dark mode setting, :shrug:
+// https://github.com/thomaspark/bootswatch/issues/989
+$light: lighten($body-color, 50%) !default;
+$dark: $body-bg  !default;
+
+$min-contrast-ratio:   1.95 !default;
+
+$enable-shadows: true !default;
+$enable-gradients: true !default;
+
+// Components
+
+$component-active-color: $contrast-bg  !default;
+
+// Links
+
+$link-color:                $contrast-bg !default;
+
+// Fonts
+
+// Tables
+
+$table-color:                 $contrast-bg !default;
+$table-accent-bg:             rgba($contrast-bg, .05) !default;
+$table-hover-bg:              rgba($contrast-bg, .075) !default;
+$table-border-color:          rgba($contrast-fg, .6) !default;
+$table-dark-border-color:     $table-border-color !default;
+$table-dark-color:            $contrast-bg !default;
+
+$table-bg-scale:              0 !default;
+
+// Buttons
+
+$input-btn-padding-y:         .75rem !default;
+$input-btn-padding-x:         1rem !default;
+
+// Forms
+
+$input-bg:                              $contrast-bg !default;
+$input-disabled-bg:                     mix($contrast-bg, $contrast-fg, 80%) !default;
+
+$input-color:                       $gray-900 !default;
+
+$form-check-input-bg:                     $contrast-bg !default;
+
+// Dropdowns
+
+$dropdown-bg:                       body-mix(66.7%) !default;
+$dropdown-border-color:             rgba($contrast-fg, .6) !default;
+$dropdown-divider-bg:               rgba($contrast-fg, .15) !default;
+$dropdown-link-color:               $body-color !default;
+$dropdown-link-hover-color:         $contrast-bg !default;
+$dropdown-link-hover-bg:            $body-bg !default;
+$dropdown-link-active-color:        $dropdown-link-hover-color !default;
+$dropdown-link-active-bg:           $dropdown-link-hover-bg !default;
+
+// Navs
+
+$nav-tabs-border-color:             rgba($contrast-fg, .6) !default;
+$nav-tabs-link-hover-border-color:  $nav-tabs-border-color !default;
+$nav-tabs-link-active-color:        $contrast-bg !default;
+$nav-tabs-link-active-border-color: $nav-tabs-border-color !default;
+
+// Navbar
+
+$navbar-padding-y:                  0 !default;
+
+
+// Pagination
+
+$pagination-color:                  $contrast-bg !default;
+$pagination-bg:                     transparent !default;
+$pagination-border-color:           rgba($contrast-fg, .6) !default;
+$pagination-hover-color:            $contrast-bg !default;
+$pagination-hover-bg:               transparent !default;
+$pagination-hover-border-color:     rgba($contrast-fg, .6) !default;
+$pagination-active-bg:              transparent !default;
+$pagination-active-border-color:    rgba($contrast-fg, .6) !default;
+$pagination-disabled-bg:            transparent !default;
+$pagination-disabled-border-color:  rgba($contrast-fg, .6) !default;
+
+// Cards
+
+$card-border-color:                 rgba($contrast-fg, .6) !default;
+$card-cap-bg:                       lighten(body-mix(66.7%), 10%) !default;
+$card-bg:                           lighten($body-bg, 5%) !default;
+
+// Popovers
+
+$popover-bg:                        lighten($body-bg, 5%) !default;
+
+// Toasts
+
+$toast-background-color:            lighten($body-bg, 5%) !default;
+$toast-border-color:                rgba(0, 0, 0, .2) !default;
+$toast-header-color:                $body-color !default;
+$toast-header-background-color:     $toast-background-color !default;
+$toast-header-border-color:         $toast-border-color !default;
+
+// Modals
+
+$modal-content-bg:                  lighten($body-bg, 5%) !default;
+$modal-header-border-color:         rgba(0, 0, 0, .2) !default;
+
+// Progress bars
+
+$progress-bg:                       darken($gray-900, 5%) !default;
+$progress-bar-color:                body-mix(0) !default;
+
+// List group
+
+$list-group-color:                  $contrast-bg !default;
+$list-group-bg:                     lighten($body-bg, 5%) !default;
+$list-group-border-color:           rgba($contrast-fg, .6) !default;
+$list-group-hover-bg:               lighten($body-bg, 10%) !default;
+$list-group-active-color:           $contrast-bg !default;
+$list-group-active-bg:              $list-group-hover-bg !default;
+$list-group-active-border-color:    $list-group-border-color !default;
+$list-group-disabled-color:         $gray-700 !default;
+$list-group-action-color:           $contrast-bg !default;
+
+// Breadcrumbs
+
+$breadcrumb-padding-y:              .375rem !default;
+$breadcrumb-padding-x:              .75rem !default;
+$breadcrumb-active-color:           $gray-500 !default;
+$breadcrumb-border-radius:          .25rem !default;
+
+// Code
+
+$pre-color:                         inherit !default;
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/slate/_bootswatch.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/slate/_bootswatch.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/slate/_bootswatch.scss	(revision 3762)
@@ -0,0 +1,381 @@
+// Slate 5.2.2
+// Bootswatch
+
+
+// Variables
+
+:root {
+  color-scheme: dark;
+}
+
+// Mixins
+
+@mixin btn-shadow($color){
+  @include gradient-y-three-colors(tint-color($color, 12%), $color, 60%, shade-color($color, 8%));
+  filter: none;
+}
+
+@mixin btn-shadow-inverse($color){
+  @include gradient-y-three-colors(shade-color($color, 36%), shade-color($color, 30%), 40%, shade-color($color, 26%));
+  filter: none;
+}
+
+// Navbar
+
+.navbar {
+  text-shadow: 1px 1px 1px rgba($contrast-fg, .3);
+  border: 1px solid rgba($contrast-fg, .6);
+
+  .container {
+    padding: 0;
+  }
+
+  .navbar-toggler {
+    border-color: rgba($contrast-fg, .6);
+  }
+
+  &-fixed-top {
+    border-width: 0 0 1px;
+  }
+
+  &-fixed-bottom {
+    border-width: 1px 0 0;
+  }
+
+  .nav-link {
+    padding: 1rem;
+    border-right: 1px solid rgba($contrast-fg, .2);
+    border-left: 1px solid rgba($contrast-bg, .1);
+
+    &:hover,
+    &:focus {
+      @include btn-shadow-inverse(body-mix(100%));
+      border-left: 1px solid rgba($contrast-fg, .2);
+    }
+  }
+
+  &-brand {
+    padding: .75rem 1rem subtract(24px, .75rem);
+    margin-right: 0;
+    border-right: 1px solid rgba($contrast-fg, .2);
+  }
+
+  .nav-item.active .nav-link {
+    background-color: rgba($contrast-fg, .3);
+    border-left: 1px solid rgba($contrast-fg, .2);
+  }
+
+  &-nav .nav-item + .nav-item {
+    margin-left: 0;
+  }
+
+  &.bg-light {
+    text-shadow: 1px 1px 1px rgba($contrast-fg, .1);
+
+    .nav-link {
+      &:hover,
+      &:focus {
+        @include btn-shadow-inverse($body-color);
+        border-left: 1px solid rgba($contrast-fg, .2);
+      }
+    }
+  }
+}
+
+@media (max-width: 576px) {
+  .navbar-expand-sm {
+    .navbar-brand,
+    .nav-link {
+      border: none !important;
+    }
+  }
+}
+
+@media (max-width: 768px) {
+  .navbar-expand-md {
+    .navbar-brand,
+    .nav-link {
+      border: none !important;
+    }
+  }
+}
+
+@media (max-width: 992px) {
+  .navbar-expand-lg {
+    .navbar-brand,
+    .nav-link {
+      border: none !important;
+    }
+  }
+}
+
+// Buttons
+
+.btn {
+  text-shadow: 1px 1px 1px rgba($contrast-fg, .3);
+  border-color: rgba($contrast-fg, .6);
+
+  &:not([disabled]):not(.disabled).active,
+  &.disabled {
+    border-color: rgba($contrast-fg, .6);
+    box-shadow: none;
+  }
+
+  &:hover,
+  &:focus,
+  &:not([disabled]):not(.disabled):active,
+  &:not([disabled]):not(.disabled):active:hover,
+  &:not([disabled]):not(.disabled).active:hover {
+    border-color: rgba($contrast-fg, .6);
+  }
+}
+
+.btn-primary {
+  @include btn-shadow($primary);
+
+  &:not([disabled]):not(.disabled):hover,
+  &:not([disabled]):not(.disabled):focus,
+  &:not([disabled]):not(.disabled):active:hover,
+  &:not([disabled]):not(.disabled).active:hover {
+    @include btn-shadow-inverse($primary);
+  }
+}
+
+@if variable-exists("default") {
+  .btn-default {
+    @include btn-shadow($default);
+    color: $contrast-bg;
+
+    &:not([disabled]):not(.disabled):hover,
+    &:not([disabled]):not(.disabled):focus,
+    &:not([disabled]):not(.disabled):active,
+    &:not([disabled]):not(.disabled).active {
+      @include btn-shadow-inverse($default);
+
+    }
+  }
+}
+
+.btn-secondary {
+  @include btn-shadow($secondary);
+
+  &:not([disabled]):not(.disabled):hover,
+  &:not([disabled]):not(.disabled):focus,
+  &:not([disabled]):not(.disabled):active,
+  &:not([disabled]):not(.disabled).active {
+    @include btn-shadow-inverse($secondary);
+  }
+}
+
+.btn-success {
+  @include btn-shadow($success);
+  color: $contrast-bg;
+
+  &:not([disabled]):not(.disabled):hover,
+  &:not([disabled]):not(.disabled):focus,
+  &:not([disabled]):not(.disabled):active,
+  &:not([disabled]):not(.disabled).active {
+    @include btn-shadow-inverse($success);
+  }
+}
+
+.btn-info {
+  @include btn-shadow($info);
+  color: $contrast-bg;
+
+  &:not([disabled]):not(.disabled):hover,
+  &:not([disabled]):not(.disabled):focus,
+  &:not([disabled]):not(.disabled):active,
+  &:not([disabled]):not(.disabled).active {
+    @include btn-shadow-inverse($info);
+  }
+}
+
+.btn-warning {
+  @include btn-shadow($warning);
+  color: $contrast-bg;
+
+  &:not([disabled]):not(.disabled):hover,
+  &:not([disabled]):not(.disabled):focus,
+  &:not([disabled]):not(.disabled):active,
+  &:not([disabled]):not(.disabled).active {
+    @include btn-shadow-inverse($warning);
+  }
+}
+
+.btn-danger {
+  @include btn-shadow($danger);
+
+  &:not([disabled]):not(.disabled):hover,
+  &:not([disabled]):not(.disabled):focus,
+  &:not([disabled]):not(.disabled):active,
+  &:not([disabled]):not(.disabled).active {
+    @include btn-shadow-inverse($danger);
+  }
+}
+
+.btn-outline {
+  &-primary {
+    color: $contrast-bg;
+  }
+}
+
+.btn-link,
+.btn-link:hover {
+  border-color: transparent;
+}
+
+.btn-group,
+.btn-group-vertical {
+  .btn.active {
+    border-color: rgba($contrast-fg, .6);
+  }
+}
+
+// Typography
+
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+  text-shadow: -1px -1px 0 rgba($contrast-fg, .3);
+}
+
+// Forms
+
+legend {
+  color: $contrast-bg;
+}
+
+.input-group-addon {
+  @include btn-shadow($secondary);
+  color: $contrast-bg;
+  text-shadow: 1px 1px 1px rgba($contrast-fg, .3);
+}
+
+// Navs
+
+.nav-tabs {
+  .nav-link {
+    @include btn-shadow-inverse(body-mix(100%));
+    border: 1px solid rgba($contrast-fg, .6);
+
+    &:not([disabled]):not(.disabled):hover,
+    &:not([disabled]):not(.disabled):focus,
+    &:not([disabled]):not(.disabled):active,
+    &:not([disabled]):not(.disabled).active {
+      @include btn-shadow(body-mix(100%));
+    }
+
+    &.disabled {
+      border: 1px solid rgba($contrast-fg, .6);
+    }
+  }
+
+  .nav-link,
+  .nav-link:hover {
+    color: $contrast-bg;
+  }
+}
+
+.nav-pills {
+  .nav-link {
+    @include btn-shadow(body-mix(100%));
+    color: $contrast-bg;
+    text-shadow: 1px 1px 1px rgba($contrast-fg, .3);
+    border: 1px solid rgba($contrast-fg, .6);
+
+    &:hover {
+      @include btn-shadow-inverse(body-mix(100%));
+      border: 1px solid rgba($contrast-fg, .6);
+    }
+  }
+
+  .nav-link.active,
+  .nav-link:hover {
+    background-color: transparent;
+    @include btn-shadow-inverse(body-mix(100%));
+    border: 1px solid rgba($contrast-fg, .6);
+  }
+
+  .nav-link.disabled,
+  .nav-link.disabled:hover {
+    @include btn-shadow(body-mix(100%));
+    color: $nav-link-disabled-color;
+  }
+}
+
+.pagination {
+  .page-link {
+    text-shadow: 1px 1px 1px rgba($contrast-fg, .3);
+    @include btn-shadow(body-mix(100%));
+
+    &:hover {
+      @include btn-shadow-inverse(body-mix(100%));
+      text-decoration: none;
+    }
+  }
+
+  .page-item.active .page-link {
+    @include btn-shadow-inverse(body-mix(100%));
+  }
+
+  .page-item.disabled .page-link {
+    @include btn-shadow(body-mix(100%));
+  }
+}
+
+.breadcrumb {
+  text-shadow: 1px 1px 1px rgba($contrast-fg, .3);
+  background-color: transparent;
+  border: 1px solid rgba($contrast-fg, .6);
+  @include btn-shadow(body-mix(100%));
+
+  a,
+  a:hover {
+    color: $contrast-bg;
+  }
+}
+
+// Indicators
+
+.alert {
+  color: $contrast-bg;
+  border: none;
+
+  a,
+  .alert-link {
+    color: $contrast-bg;
+    text-decoration: underline;
+  }
+
+  @each $color, $value in $theme-colors {
+    &-#{$color} {
+      background-color: $value;
+    }
+  }
+
+  &-light {
+    &,
+    a:not(.btn),
+    .alert-link {
+      color: $body-bg;
+    }
+  }
+}
+
+.badge {
+  &.bg-light {
+    color: $dark;
+  }
+}
+
+// Containers
+
+.list-group {
+  &-item-action:hover {
+    background-color: shade-color($gray-900, 10%);
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/lux/_bootswatch.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/lux/_bootswatch.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/lux/_bootswatch.scss	(revision 3762)
@@ -0,0 +1,178 @@
+// Lux 5.2.2
+// Bootswatch
+
+
+// Variables
+
+$web-font-path: "https://fonts.googleapis.com/css2?family=Nunito+Sans:wght@400;600&display=swap" !default;
+@if $web-font-path {
+  @import url($web-font-path);
+}
+
+:root {
+  color-scheme: light;
+}
+
+// Navbar
+
+.navbar {
+  font-size: $font-size-sm;
+  font-weight: 600;
+  text-transform: uppercase;
+
+  &-nav {
+    .nav-link {
+      padding-top: .715rem;
+      padding-bottom: .715rem;
+    }
+  }
+
+  &-brand {
+    margin-right: 2rem;
+  }
+}
+
+.bg-light {
+  border: 1px solid rgba(0, 0, 0, .1);
+
+  &.navbar-fixed-top {
+    border-width: 0 0 1px;
+  }
+
+  &.navbar-bottom-top {
+    border-width: 1px 0 0;
+  }
+}
+
+.nav-item {
+  margin-right: 2rem;
+}
+
+// Buttons
+
+.btn {
+  font-size: $font-size-sm;
+  text-transform: uppercase;
+
+  &-sm {
+    font-size: 10px;
+  }
+
+  &-warning {
+    &,
+    &:hover,
+    &:not([disabled]):not(.disabled):active,
+    &:focus {
+      color: $white;
+    }
+  }
+}
+
+.btn-outline-secondary {
+  color: $gray-600;
+  border-color: $gray-600;
+
+  &:not([disabled]):not(.disabled):hover,
+  &:not([disabled]):not(.disabled):focus,
+  &:not([disabled]):not(.disabled):active {
+    color: $white;
+    background-color: $gray-400;
+    border-color: $gray-400;
+  }
+
+  &:not([disabled]):not(.disabled):focus {
+    box-shadow: 0 0 0 .2rem rgba($gray-400, .5);
+  }
+}
+
+[class*="btn-outline-"] {
+  border-width: 2px;
+}
+
+.border-secondary {
+  border: 1px solid $gray-400 !important;
+}
+
+// Typography
+
+body {
+  font-weight: 200;
+  letter-spacing: 1px;
+}
+
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+  text-transform: uppercase;
+  letter-spacing: 3px;
+}
+
+.text-secondary {
+  color: $body-color !important;
+}
+
+// Tables
+
+th {
+  font-size: $font-size-sm;
+  text-transform: uppercase;
+}
+
+.table {
+  th,
+  td {
+    padding: 1.5rem;
+  }
+
+  &-sm {
+    th,
+    td {
+      padding: .75rem;
+    }
+  }
+}
+
+// Navs
+
+.dropdown-menu {
+  font-size: $font-size-sm;
+  text-transform: none;
+}
+
+// Indicators
+
+.badge {
+  padding-top: .28rem;
+
+  &-pill {
+    border-radius: 10rem;
+  }
+
+  &.bg-secondary,
+  &.bg-light {
+    color: $dark;
+  }
+}
+
+// Containers
+
+.list-group-item,
+.card {
+  h1,
+  h2,
+  h3,
+  h4,
+  h5,
+  h6,
+  .h1,
+  .h2,
+  .h3,
+  .h4,
+  .h5,
+  .h6 {
+    color: inherit;
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/lux/font.css
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/lux/font.css	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/lux/font.css	(revision 3762)
@@ -0,0 +1,14 @@
+@font-face {
+  font-family: 'Nunito Sans';
+  font-style: normal;
+  font-weight: 400;
+  font-display: swap;
+  src: url(fonts/pe0qMImSLYBIv1o4X1M8cfe5.woff) format('woff');
+}
+@font-face {
+  font-family: 'Nunito Sans';
+  font-style: normal;
+  font-weight: 600;
+  font-display: swap;
+  src: url(fonts/pe03MImSLYBIv1o4X1M8cc9iB_5p.woff) format('woff');
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/lux/_variables.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/lux/_variables.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/lux/_variables.scss	(revision 3762)
@@ -0,0 +1,99 @@
+// Lux 5.2.2
+// Bootswatch
+
+$theme: "lux" !default;
+
+//
+// Color system
+//
+
+$white:    #fff !default;
+$gray-100: #f8f9fa !default;
+$gray-200: #f7f7f9 !default;
+$gray-300: #eceeef !default;
+$gray-400: #ced4da !default;
+$gray-500: #adb5bd !default;
+$gray-600: #919aa1 !default;
+$gray-700: #55595c !default;
+$gray-800: #343a40 !default;
+$gray-900: #1a1a1a !default;
+$black:    #000 !default;
+
+$blue:    #007bff !default;
+$indigo:  #6610f2 !default;
+$purple:  #6f42c1 !default;
+$pink:    #e83e8c !default;
+$red:     #d9534f !default;
+$orange:  #fd7e14 !default;
+$yellow:  #f0ad4e !default;
+$green:   #4bbf73 !default;
+$teal:    #20c997 !default;
+$cyan:    #1f9bcf !default;
+
+$primary:       $gray-900 !default;
+$secondary:     $white !default;
+$success:       $green !default;
+$info:          $cyan !default;
+$warning:       $yellow !default;
+$danger:        $red !default;
+$light:         $white !default;
+$dark:          $gray-800 !default;
+
+$min-contrast-ratio:   2.3 !default;
+
+// Options
+
+$enable-rounded:            false !default;
+
+// Body
+
+$body-color:                $gray-700 !default;
+
+// Fonts
+
+// stylelint-disable-next-line value-keyword-case
+$font-family-sans-serif:      "Nunito Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !default;
+$h1-font-size:                2rem !default;
+$h2-font-size:                1.75rem !default;
+$h3-font-size:                1.5rem !default;
+$h4-font-size:                1.25rem !default;
+$h5-font-size:                1rem !default;
+$h6-font-size:                .75rem !default;
+$headings-font-weight:        600 !default;
+$headings-color:              $gray-900 !default;
+
+// Tables
+
+$table-border-color:          rgba(0, 0, 0, .05) !default;
+
+// Buttons
+
+$btn-line-height:             1.5rem !default;
+$input-btn-padding-y:         .75rem !default;
+$input-btn-padding-x:         1.5rem !default;
+$input-btn-padding-y-sm:      .5rem !default;
+$input-btn-padding-x-sm:      1rem !default;
+$input-btn-padding-y-lg:      2rem !default;
+$input-btn-padding-x-lg:      2rem !default;
+$btn-font-weight:             600 !default;
+
+// Forms
+
+$input-line-height:                     1.5 !default;
+$input-bg:                              $gray-200 !default;
+$input-disabled-bg:                     $gray-300 !default;
+$input-group-addon-bg:                  $gray-300 !default;
+
+// Navbar
+
+$navbar-padding-y:                  1.5rem !default;
+$navbar-dark-hover-color:           $white !default;
+$navbar-light-color:                rgba($black, .3) !default;
+$navbar-light-hover-color:          $gray-900 !default;
+$navbar-light-active-color:         $gray-900 !default;
+
+// Pagination
+
+$pagination-border-color:           transparent !default;
+$pagination-hover-border-color:     $pagination-border-color !default;
+$pagination-disabled-border-color:  $pagination-border-color !default;
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/yeti/font.css
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/yeti/font.css	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/yeti/font.css	(revision 3762)
@@ -0,0 +1,48 @@
+@font-face {
+  font-family: 'Open Sans';
+  font-style: italic;
+  font-weight: 300;
+  font-stretch: normal;
+  font-display: swap;
+  src: url(fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk5hkaVQ.woff) format('woff');
+}
+@font-face {
+  font-family: 'Open Sans';
+  font-style: italic;
+  font-weight: 400;
+  font-stretch: normal;
+  font-display: swap;
+  src: url(fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk8ZkaVQ.woff) format('woff');
+}
+@font-face {
+  font-family: 'Open Sans';
+  font-style: italic;
+  font-weight: 700;
+  font-stretch: normal;
+  font-display: swap;
+  src: url(fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0RkyFjaVQ.woff) format('woff');
+}
+@font-face {
+  font-family: 'Open Sans';
+  font-style: normal;
+  font-weight: 300;
+  font-stretch: normal;
+  font-display: swap;
+  src: url(fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsiH0C4k.woff) format('woff');
+}
+@font-face {
+  font-family: 'Open Sans';
+  font-style: normal;
+  font-weight: 400;
+  font-stretch: normal;
+  font-display: swap;
+  src: url(fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0C4k.woff) format('woff');
+}
+@font-face {
+  font-family: 'Open Sans';
+  font-style: normal;
+  font-weight: 700;
+  font-stretch: normal;
+  font-display: swap;
+  src: url(fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1y4k.woff) format('woff');
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/yeti/_variables.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/yeti/_variables.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/yeti/_variables.scss	(revision 3762)
@@ -0,0 +1,123 @@
+// Yeti 5.2.2
+// Bootswatch
+
+$theme: "yeti" !default;
+
+//
+// Color system
+//
+
+$white:    #fff !default;
+$gray-100: #f8f9fa !default;
+$gray-200: #eee !default;
+$gray-300: #dee2e6 !default;
+$gray-400: #ccc !default;
+$gray-500: #adb5bd !default;
+$gray-600: #888 !default;
+$gray-700: #495057 !default;
+$gray-800: #333 !default;
+$gray-900: #222 !default;
+$black:    #000 !default;
+
+$blue:    #008cba !default;
+$indigo:  #6610f2 !default;
+$purple:  #6f42c1 !default;
+$pink:    #e83e8c !default;
+$red:     #f04124 !default;
+$orange:  #fd7e14 !default;
+$yellow:  #e99002 !default;
+$green:   #43ac6a !default;
+$teal:    #20c997 !default;
+$cyan:    #5bc0de !default;
+
+$primary:       $blue !default;
+$secondary:     $gray-200 !default;
+$success:       $green !default;
+$info:          $cyan !default;
+$warning:       $yellow !default;
+$danger:        $red !default;
+$light:         $gray-200 !default;
+$dark:          $gray-900 !default;
+
+$min-contrast-ratio:   1.9 !default;
+
+// Components
+
+$border-radius:               0 !default;
+$border-radius-lg:            0 !default;
+$border-radius-sm:            0 !default;
+
+// Fonts
+
+// stylelint-disable-next-line value-keyword-case
+$font-family-sans-serif:      "Open Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !default;
+$headings-font-weight:        300 !default;
+
+// Tables
+
+$table-bg-scale:              0 !default;
+
+// Buttons
+
+$input-btn-padding-x:         .5rem !default;
+$btn-font-weight:             300 !default;
+
+// Dropdowns
+
+$dropdown-border-color:             rgba($black, .1) !default;
+$dropdown-divider-bg:               rgba($black, .1) !default;
+
+// Navs
+
+$nav-link-disabled-color:           $gray-400 !default;
+$nav-tabs-border-color:             $dropdown-border-color !default;
+$nav-tabs-link-hover-border-color:  $nav-tabs-border-color !default;
+$nav-tabs-link-active-border-color: $nav-tabs-border-color !default;
+
+// Navbar
+
+$navbar-dark-color:                 rgba($white, .7) !default;
+$navbar-dark-hover-color:           $white !default;
+
+// Pagination
+
+$pagination-color:                  $gray-600 !default;
+$pagination-border-color:           $nav-tabs-border-color !default;
+$pagination-active-border-color:    darken($primary, 5%) !default;
+$pagination-disabled-color:         $gray-200 !default;
+
+// Cards
+
+$card-inner-border-radius:          0 !default;
+
+// Badges
+
+$badge-font-weight:                 300 !default;
+$badge-padding-x:                   1rem !default;
+
+// Alerts
+
+$alert-link-font-weight:            400 !default;
+
+$alert-bg-scale:                    0 !default;
+
+// Progress bars
+
+$progress-bg:                       $gray-400 !default;
+$progress-bar-color:                $white !default;
+
+// List group
+
+$list-group-disabled-bg:            $gray-200 !default;
+
+// Breadcrumbs
+
+$breadcrumb-padding-y:              .375rem !default;
+$breadcrumb-padding-x:              .75rem !default;
+$breadcrumb-border-radius:          3px !default;
+
+// Close
+
+$btn-close-color:            $gray-600 !default;
+$btn-close-opacity:          .6 !default;
+$btn-close-hover-opacity:    1 !default;
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/yeti/_bootswatch.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/yeti/_bootswatch.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/yeti/_bootswatch.scss	(revision 3762)
@@ -0,0 +1,367 @@
+// Yeti 5.2.2
+// Bootswatch
+
+
+// Variables
+
+$web-font-path: "https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,300;0,400;0,700;1,300;1,400;1,700&display=swap" !default;
+@if $web-font-path {
+  @import url($web-font-path);
+}
+
+:root {
+  color-scheme: light;
+}
+
+// Navbar
+
+.navbar {
+  font-weight: $headings-font-weight;
+}
+
+.bg-primary {
+  .dropdown-menu {
+    background-color: $primary;
+
+    .dropdown-item,
+    .dropdown-item:focus {
+      color: $navbar-dark-color;
+    }
+
+    .dropdown-item.active,
+    .dropdown-item:hover,
+    .dropdown-item:focus {
+      color: $white;
+      background-color: shade-color($primary, 10%);
+    }
+  }
+}
+
+.bg-dark {
+  background-color: $gray-800 !important;
+
+  .dropdown-menu {
+    background-color: $gray-800;
+
+    .dropdown-item,
+    .dropdown-item:focus {
+      color: $navbar-dark-color;
+    }
+
+    .dropdown-item.active,
+    .dropdown-item:hover,
+    .dropdown-item:focus  {
+      color: $white;
+      background-color: shade-color($gray-800, 10%);
+    }
+  }
+}
+
+.bg-light {
+  .dropdown-menu {
+    background-color: $gray-200;
+
+    .dropdown-item,
+    .dropdown-item:focus {
+      color: $navbar-light-color;
+    }
+
+    .dropdown-item.active,
+    .dropdown-item:hover,
+    .dropdown-item:focus  {
+      color: $navbar-light-hover-color;
+      background-color: tint-color($gray-200, 10%);
+    }
+  }
+}
+
+// Buttons
+
+.btn {
+  &-primary {
+    border-color: shade-color($primary, 10%);
+  }
+
+  &-default {
+    border-color: shade-color($secondary, 10%);
+  }
+
+  &-secondary {
+    border-color: shade-color($secondary, 10%);
+  }
+
+  &-success {
+    border-color: shade-color($success, 10%);
+  }
+
+  &-info {
+    color: $white;
+    border-color: shade-color($info, 10%);
+  }
+
+  &-danger {
+    border-color: shade-color($danger, 10%);
+  }
+
+  &-warning {
+    color: $white;
+    border-color: shade-color($warning, 10%);
+  }
+
+  &-light {
+    border-color: shade-color($light, 10%);
+  }
+
+  &-dark {
+    border-color: shade-color($dark, 10%);
+  }
+}
+
+.btn-outline-secondary {
+  color: $black;
+}
+
+.btn-group {
+  .dropdown-menu {
+    border-top-width: 0;
+  }
+
+  .dropdown-toggle {
+    &.btn-primary ~ .dropdown-menu {
+      background-color: $primary;
+      border-color: shade-color($primary, 10%);
+
+      .dropdown-item {
+        color: $white;
+      }
+
+      .dropdown-item:hover,
+      .dropdown-item:focus {
+        background-color: shade-color($primary, 16%);
+      }
+    }
+
+    &.btn-secondary ~ .dropdown-menu {
+      background-color: $secondary;
+      border-color: shade-color($secondary, 10%);
+
+      .dropdown-item {
+        color: $body-color;
+      }
+
+      .dropdown-item:hover,
+      .dropdown-item:focus {
+        background-color: shade-color($secondary, 16%);
+      }
+    }
+
+    &.btn-success ~ .dropdown-menu {
+      background-color: $success;
+      border-color: shade-color($success, 10%);
+
+      .dropdown-item {
+        color: $white;
+      }
+
+      .dropdown-item:hover,
+      .dropdown-item:focus {
+        background-color: shade-color($success, 16%);
+      }
+    }
+
+    &.btn-info ~ .dropdown-menu {
+      background-color: $info;
+      border-color: shade-color($info, 10%);
+
+      .dropdown-item {
+        color: $white;
+      }
+
+      .dropdown-item:hover,
+      .dropdown-item:focus {
+        background-color: shade-color($info, 16%);
+      }
+    }
+
+    &.btn-warning ~ .dropdown-menu {
+      background-color: $warning;
+      border-color: shade-color($warning, 10%);
+
+      .dropdown-item {
+        color: $white;
+      }
+
+      .dropdown-item:hover,
+      .dropdown-item:focus {
+        background-color: shade-color($warning, 16%);
+      }
+    }
+
+    &.btn-danger ~ .dropdown-menu {
+      background-color: $danger;
+      border-color: shade-color($danger, 10%);
+
+      .dropdown-item {
+        color: $white;
+      }
+
+      .dropdown-item:hover,
+      .dropdown-item:focus {
+        background-color: shade-color($danger, 16%);
+      }
+    }
+  }
+}
+
+// Typography
+
+.text-secondary {
+  color: $gray-700 !important;
+}
+
+.blockquote-footer {
+  color: $gray-600;
+}
+
+// Tables
+
+table {
+  font-size: $font-size-sm;
+}
+
+// Forms
+
+label,
+.control-label,
+.help-block,
+.checkbox,
+.radio,
+.form-control-feedback {
+  font-size: $font-size-sm;
+}
+
+// Navs
+
+.dropdown-item {
+  padding-top: .75rem;
+  padding-bottom: .75rem;
+  font-size: $font-size-sm;
+  font-weight: 300;
+}
+
+.nav-tabs {
+  .nav-link,
+  .nav-link.disabled,
+  .nav-link.disabled:hover,
+  .nav-link.disabled:focus {
+    background-color: $gray-200;
+    border-color: $nav-tabs-border-color;
+  }
+
+  .nav-item + .nav-item {
+    .nav-link {
+      border-left: none;
+    }
+  }
+}
+
+.nav-pills {
+  .active {
+    border: 1px solid shade-color($primary, 10%);
+  }
+}
+
+.breadcrumb {
+  font-size: $font-size-sm;
+  font-weight: 300;
+  text-transform: uppercase;
+  border: 1px solid $dropdown-border-color;
+}
+
+.pagination {
+  font-weight: 300;
+
+  .page-link {
+    margin-right: .1em;
+    margin-left: .1em;
+    border-color: transparent;
+    border-radius: 3px;
+
+    &:hover,
+    &:focus {
+      text-decoration: none;
+    }
+  }
+
+  .page-item.disabled {
+    .page-link {
+      border-color: transparent;
+    }
+  }
+}
+
+.pagination,
+.pagination-lg,
+.pagination-sm {
+  .page-item:first-child,
+  .page-item:last-child {
+    .page-link {
+      border-radius: 3px;
+    }
+  }
+}
+
+.list-group {
+  font-size: $font-size-sm;
+  font-weight: 300;
+}
+
+// Indicators
+
+.alert {
+  font-size: $font-size-sm;
+  font-weight: 300;
+  color: $white;
+
+  .alert-link {
+    color: $white;
+    text-decoration: underline;
+  }
+
+  &:not(.alert-secondary):not(.alert-light) .btn-close {
+    background-image: escape-svg(url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$white}'><path d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/></svg>"));
+  }
+
+  &-secondary,
+  &-light {
+    &,
+    a:not(.btn),
+    .alert-link {
+      color: $body-color;
+    }
+  }
+}
+
+.badge {
+  &.bg-secondary,
+  &.bg-light {
+    color: $dark;
+  }
+}
+
+// Progress bars
+
+.progress[value] {
+  height: 22px;
+  padding: 2px;
+  background-color: #f6f6f6;
+  border: 1px solid #ccc;
+  @include box-shadow(none);
+}
+
+// Popovers
+
+.popover-header {
+  border-top-left-radius: 0;
+  border-top-right-radius: 0;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/spacelab/_variables.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/spacelab/_variables.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/spacelab/_variables.scss	(revision 3762)
@@ -0,0 +1,64 @@
+// Spacelab 5.2.2
+// Bootswatch
+
+$theme: "spacelab" !default;
+
+//
+// Color system
+//
+
+$white:    #fff !default;
+$gray-100: #f8f9fa !default;
+$gray-200: #eee !default;
+$gray-300: #dee2e6 !default;
+$gray-400: #ced4da !default;
+$gray-500: #999 !default;
+$gray-600: #777 !default;
+$gray-700: #495057 !default;
+$gray-800: #333 !default;
+$gray-900: #2d2d2d !default;
+$black:    #000 !default;
+
+$blue:    #446e9b !default;
+$indigo:  #6610f2 !default;
+$purple:  #6f42c1 !default;
+$pink:    #e83e8c !default;
+$red:     #cd0200 !default;
+$orange:  #fd7e14 !default;
+$yellow:  #d47500 !default;
+$green:   #3cb521 !default;
+$teal:    #20c997 !default;
+$cyan:    #3399f3 !default;
+
+$primary:       $blue !default;
+$secondary:     $gray-500 !default;
+$success:       $green !default;
+$info:          $cyan !default;
+$warning:       $yellow !default;
+$danger:        $red !default;
+$light:         $gray-200 !default;
+$dark:          $gray-800 !default;
+
+$min-contrast-ratio:   2.65 !default;
+
+// Body
+
+$body-color:                $gray-600 !default;
+
+// Links
+
+$link-color:                $info !default;
+
+// Fonts
+
+// stylelint-disable-next-line value-keyword-case
+$font-family-sans-serif:      "Open Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !default;
+$headings-color:              $gray-900 !default;
+
+// Navbar
+
+$navbar-dark-color:                 rgba($white, .75) !default;
+$navbar-dark-hover-color:           $white !default;
+$navbar-light-color:                rgba($black, .4) !default;
+$navbar-light-hover-color:          $info !default;
+$navbar-light-active-color:         $info !default;
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/spacelab/_bootswatch.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/spacelab/_bootswatch.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/spacelab/_bootswatch.scss	(revision 3762)
@@ -0,0 +1,99 @@
+// Spacelab 5.2.2
+// Bootswatch
+
+
+// Variables
+
+$web-font-path: "https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,400;0,700;1,400;1,700&display=swap" !default;
+@if $web-font-path {
+  @import url($web-font-path);
+}
+
+:root {
+  color-scheme: light;
+}
+
+// Mixins
+
+@mixin btn-shadow($color) {
+  @include gradient-y-three-colors(tint-color($color, 24%), $color, 50%, shade-color($color, 8%));
+  filter: none;
+  border: 1px solid shade-color($color, 20%);
+}
+
+// Navbar
+
+.navbar {
+  .nav-link,
+  .navbar-brand {
+    text-shadow: -1px -1px 0 rgba($black, .1);
+    transition: color ease-in-out .2s;
+  }
+
+  @each $color, $value in $theme-colors {
+    &.bg-#{$color} {
+      @include btn-shadow($value);
+    }
+  }
+
+  &.bg-light, &.navbar-default {
+    .nav-link,
+    .navbar-brand {
+      text-shadow: 1px 1px 0 rgba(255, 255, 255, .1);
+    }
+
+    .navbar-brand {
+      color: $navbar-light-color;
+
+      &:hover {
+        color: $info;
+      }
+    }
+  }
+}
+
+// Buttons
+
+.btn {
+  text-shadow: -1px -1px 0 rgba($black, .1);
+
+  &-link {
+    text-shadow: none;
+  }
+}
+
+@each $color, $value in $theme-colors {
+  .btn-#{$color} {
+    @include btn-shadow($value);
+  }
+
+  .btn-#{$color}:not(.disabled):hover {
+    @include btn-shadow(shade-color($value, 8%));
+  }
+}
+
+[class*="btn-outline-"] {
+  text-shadow: none;
+}
+
+// Indicators
+
+.badge {
+  &.bg-light {
+    color: $dark;
+  }
+}
+
+// Containers
+
+.card,
+.list-group-item {
+  h1,
+  h2,
+  h3,
+  h4,
+  h5,
+  h6 {
+    color: inherit;
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/spacelab/font.css
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/spacelab/font.css	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/spacelab/font.css	(revision 3762)
@@ -0,0 +1,32 @@
+@font-face {
+  font-family: 'Open Sans';
+  font-style: italic;
+  font-weight: 400;
+  font-stretch: normal;
+  font-display: swap;
+  src: url(fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk8ZkaVQ.woff) format('woff');
+}
+@font-face {
+  font-family: 'Open Sans';
+  font-style: italic;
+  font-weight: 700;
+  font-stretch: normal;
+  font-display: swap;
+  src: url(fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0RkyFjaVQ.woff) format('woff');
+}
+@font-face {
+  font-family: 'Open Sans';
+  font-style: normal;
+  font-weight: 400;
+  font-stretch: normal;
+  font-display: swap;
+  src: url(fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0C4k.woff) format('woff');
+}
+@font-face {
+  font-family: 'Open Sans';
+  font-style: normal;
+  font-weight: 700;
+  font-stretch: normal;
+  font-display: swap;
+  src: url(fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1y4k.woff) format('woff');
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/sketchy/_bootswatch.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/sketchy/_bootswatch.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/sketchy/_bootswatch.scss	(revision 3762)
@@ -0,0 +1,496 @@
+// Sketchy 5.2.2
+// Bootswatch
+
+
+// Variables
+
+$web-font-path: "https://fonts.googleapis.com/css?family=Neucha|Cabin+Sketch&display=swap" !default;
+@if $web-font-path {
+  @import url($web-font-path);
+}
+
+// stylelint-disable scss/dollar-variable-default
+$border-radius-sketchy:    255px 25px 225px 25px / 25px 225px 25px 255px;
+$border-radius-lg-sketchy: 55px 225px 15px 25px / 25px 25px 35px 355px;
+$border-radius-sm-sketchy: 255px 25px 225px 25px / 25px 225px 25px 255px;
+// style-enable scss/dollar-variable-default
+
+:root {
+  color-scheme: light;
+}
+
+// Navbar
+
+.navbar {
+  border-style: solid;
+  border-width: 2px;
+  border-radius: 25px 25px 55px 5px/5px 55px 25px 25px;
+
+  &.bg-light {
+    border-color: $gray-800;
+  }
+
+  &.fixed-top {
+    border-width: 0 0 2px;
+    border-radius: 0 25px 225px 0/25px 0 25px 255px;
+  }
+
+  &.fixed-bottom {
+    border-width: 2px 0 0;
+    border-radius: 255px 25px 0 25px/25px 225px 25px 0;
+  }
+
+  &-brand {
+    font-family: $headings-font-family;
+    font-weight: 400;
+    text-decoration: none;
+  }
+}
+
+// Buttons
+
+.btn {
+  text-decoration: none;
+  border-radius: $border-radius-sketchy;
+
+  &-lg {
+    border-radius: $border-radius-lg-sketchy;
+  }
+
+  &-sm {
+    border-radius: $border-radius-sm-sketchy;
+  }
+}
+
+.btn-check {
+  display: inline-block;
+  opacity: 0;
+}
+
+// Typography
+
+button,
+input,
+optgroup,
+select,
+textarea {
+  font-family: $font-family-sans-serif;
+}
+
+b,
+strong {
+  font-family: $headings-font-family;
+}
+
+blockquote {
+  border-radius: 15px 27px 25px 25px/25px 25px 305px 635px;
+}
+
+// Tables
+
+table {
+  th,
+  td {
+    background-color: $white;
+  }
+}
+
+.table-bordered {
+  overflow: hidden;
+  border-spacing: 0;
+  border-collapse: separate;
+  background-color: $gray-800;
+  border-radius: 5px 25px 5px 25px/25px 5px 25px 5px;
+
+  th,
+  td {
+    border-radius: 5px 5px 25px 4px/5px 4px 3px 5px;
+  }
+
+  .table-success,
+  .table-success:hover {
+    td,
+    th {
+      color: $white;
+      background-color: $success;
+    }
+  }
+
+  .table-info,
+  .table-info:hover {
+    td,
+    th {
+      color: $white;
+      background-color: $info;
+    }
+  }
+
+  .table-warning,
+  .table-warning:hover {
+    td,
+    th {
+      color: $white;
+      background-color: $warning;
+    }
+  }
+
+  .table-danger,
+  .table-danger:hover {
+    td,
+    th {
+      color: $white;
+      background-color: $danger;
+    }
+  }
+}
+
+.table-dark {
+  th,
+  td,
+  &.table-hover .table-active:hover > th,
+  &.table-hover .table-active:hover > td {
+    background-color: $gray-800;
+  }
+}
+
+
+// Forms
+
+input,
+.form-control,
+.input-group-text {
+  border-radius: $border-radius-sketchy;
+}
+
+textarea,
+textarea.form-control,
+select,
+select.form-control {
+  border-radius: $border-radius-lg-sketchy !important;
+}
+
+[type="checkbox"], #{$shiny-check} input, #{$shiny-check-inline} input {
+  position: relative;
+  width: 0;
+  height: 0;
+  cursor: pointer;
+  border: none;
+  appearance: none;
+  -webkit-appearance: none;
+  -moz-appearance: none;
+  -ms-appearance: none;
+  -o-appearance: none;
+
+  &::before {
+    position: absolute;
+    top: -.1em;
+    left: 0;
+    display: inline-block;
+    width: 15px;
+    height: 16px;
+    content: "";
+    border: 2px solid $gray-800;
+    border-radius: 2px 8px 2px 4px / 5px 3px 5px 3px;
+  }
+
+  &:focus::before {
+    box-shadow: 0 0 0 .25rem rgb(51, 51, 51 / 25%);
+  }
+
+  &:checked::after {
+    position: absolute;
+    top: 0;
+    left: .1em;
+    font-size: 1.5rem;
+    line-height: .5;
+    color: $gray-800;
+    content: "x";
+  }
+
+  &:disabled {
+    &::before {
+      border: 2px solid $gray-500;
+    }
+  }
+}
+
+[type="radio"], #{$shiny-radio} input, #{$shiny-radio-inline} input {
+  position: relative;
+  width: 0;
+  height: 0;
+  cursor: pointer;
+  border: none;
+  appearance: none;
+  -webkit-appearance: none;
+  -moz-appearance: none;
+  -ms-appearance: none;
+  -o-appearance: none;
+
+  &::before {
+    position: absolute;
+    top: -.1em;
+    left: 0;
+    display: inline-block;
+    width: 16px;
+    height: 16px;
+    content: "";
+    border: 2px solid $gray-800;
+    border-radius: 50% 45% 40% 50% / 40% 50% 50% 45%;
+  }
+
+  &:focus::before {
+    box-shadow: 0 0 0 .25rem rgb(51, 51, 51 / 25%);
+  }
+
+  &:checked::before {
+    background-color: $gray-800;
+  }
+
+  &:disabled {
+    &::before {
+      border: 2px solid $gray-500;
+    }
+  }
+}
+
+#{$shiny-check}, #{$shiny-check-inline}, #{$shiny-radio}, #{$shiny-radio-inline} {
+  span {
+    padding-left: 1rem;
+  }
+}
+
+#{$form-check-input-selector} {
+  &:focus {
+    box-shadow: none;
+  }
+}
+
+.form-switch {
+  padding-left: 0;
+
+  .form-check-input {
+    position: relative;
+    margin-left: 0;
+
+    &::before {
+      width: 32px;
+      border-radius: 30% 35% 30% 30% / 30% 50% 30% 45%;
+    }
+
+    &::after {
+      position: absolute;
+      top: 0;
+      left: 0;
+      display: inline-block;
+      width: 12px;
+      height: 12px;
+      content: "";
+      background-color: $white;
+      border: 2px solid #333;
+      border-radius: 50% 45% 40% 50% / 40% 50% 50% 45%;
+      transition: left .15s ease-in-out;
+    }
+
+    &:checked::after {
+      top: 0;
+      left: 18px;
+      background-color: $gray-800;
+    }
+  }
+
+  .form-check-label {
+    margin-left: .5em;
+  }
+}
+
+// Navs
+
+.dropdown-menu {
+  overflow: hidden;
+  border-radius: 555px 25px 25px 25px/25px 25px 25px 555px;
+}
+
+.dropdown-divider {
+  border-top-width: 2px;
+}
+
+.list-group {
+  overflow: hidden;
+  background-color: $gray-800;
+  border: 2px solid $gray-800;
+  border-radius: 45px 15px 35px 5px/15px 5px 15px 65px;
+
+  &-item {
+    border-top: 2px solid $gray-800;
+    border-right: none;
+    border-left: none;
+    border-radius: 255px 5px 225px 5px/25px 225px 25px 255px;
+
+    &:first-child {
+      border-top: none;
+    }
+
+    &:last-child {
+      border-bottom: none;
+    }
+  }
+}
+
+.nav-pills .nav-link {
+  border-radius: $border-radius-sketchy;
+}
+
+.nav-link,
+.page-link,
+.list-group-item,
+.dropdown-item {
+  text-decoration: none;
+}
+
+.nav-tabs {
+  .nav-link {
+    border-radius: 45px 15px 225px 5px/25px 225px 25px 255px;
+  }
+}
+
+.breadcrumb {
+  border: 2px solid $gray-800;
+  border-radius: $border-radius-sketchy;
+}
+
+.pagination {
+  .page-link {
+    border-radius: 425px 255px 25px 25px/25px 25px 5px 25px;
+  }
+}
+
+// Indicators
+
+.badge {
+  border-radius: $border-radius-sm-sketchy;
+
+  &-pill {
+    border-radius: 7rem 8rem 8rem 8rem / 4rem 5rem 6rem 6rem;
+  }
+
+  &.bg-light {
+    color: $dark;
+  }
+}
+
+.alert {
+  border-radius: $border-radius-sketchy;
+
+  .btn-close {
+    &::before {
+      color: inherit;
+    }
+  }
+}
+
+// Progress bars
+
+.progress {
+  border: 2px solid $gray-800;
+  border-radius: $border-radius-sm-sketchy;
+}
+
+// Containers
+
+.card {
+  border-radius: 5px 5px 5px 5px/25px 25px 25px 5px;
+
+  &-outline {
+    &-primary,
+    &-success,
+    &-info,
+    &-warning,
+    &-danger {
+      border-width: 2px;
+    }
+  }
+
+  &-header {
+    border-color: inherit;
+    border-bottom-width: 2px;
+
+    &:first-child {
+      border-radius: 3px 3px 0 0/23px 23px 0 0;
+    }
+  }
+
+  &-footer {
+    border-top-width: 2px;
+  }
+}
+
+.toast {
+  border-radius: 10px 10px 15px 5px/5px 15px 5px 15px;
+
+  &-header {
+    font-family: $headings-font-family;
+  }
+}
+
+.modal {
+  &-content {
+    border-radius: 15px 5px 5px 25px/5px 25px 25px 5px;
+  }
+}
+
+.popover {
+  padding: 0;
+  border-radius: 45px 85px 15px 25px/15px 10px 35px 555px;
+
+  &-title {
+    border-bottom: 2px solid $gray-800;
+  }
+
+  &.bs-popover-start::before,
+  &.bs-tether-element-attached-right::before {
+    right: -13px;
+  }
+
+  &.bs-popover-top::before,
+  &.bs-tether-element-attached-bottom::before {
+    bottom: -13px;
+  }
+
+  &.bs-popover-bottom::before,
+  &.bs-tether-element-attached-top::before {
+    top: -13px;
+  }
+
+  &.bs-popover-end::before,
+  &.bs-tether-element-attached-left::before {
+    left: -13px;
+  }
+}
+
+.tooltip {
+  &-inner {
+    border-radius: $border-radius-sm-sketchy;
+  }
+}
+
+pre {
+  border: 2px solid $gray-800;
+  border-radius: 15px 5px 5px 25px/5px 25px 25px 5px;
+}
+
+.btn-close {
+  background-image: none;
+
+  &::before {
+    position: absolute;
+    top: .8rem;
+    right: 1rem;
+    content: "X";
+  }
+}
+
+.img {
+  &-thumbnail {
+    border-radius: $border-radius-sketchy;
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/sketchy/font.css
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/sketchy/font.css	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/sketchy/font.css	(revision 3762)
@@ -0,0 +1,14 @@
+@font-face {
+  font-family: 'Cabin Sketch';
+  font-style: normal;
+  font-weight: 400;
+  font-display: swap;
+  src: url(fonts/QGYpz_kZZAGCONcK2A4bGOj8mNhL.woff) format('woff');
+}
+@font-face {
+  font-family: 'Neucha';
+  font-style: normal;
+  font-weight: 400;
+  font-display: swap;
+  src: url(fonts/q5uGsou0JOdh94bfvQlr.woff) format('woff');
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/sketchy/_variables.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/sketchy/_variables.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/sketchy/_variables.scss	(revision 3762)
@@ -0,0 +1,160 @@
+// Sketchy 5.2.2
+// Bootswatch
+
+$theme: "sketchy" !default;
+
+//
+// Color system
+//
+
+$white:    #fff !default;
+$gray-100: #f8f9fa !default;
+$gray-200: #f7f7f9 !default;
+$gray-300: #dee2e6 !default;
+$gray-400: #ccc !default;
+$gray-500: #aaa !default;
+$gray-600: #868e96 !default;
+$gray-700: #555 !default;
+$gray-800: #333 !default;
+$gray-900: #212529 !default;
+$black:    #000 !default;
+
+$blue:    #007bff !default;
+$indigo:  #6610f2 !default;
+$purple:  #6f42c1 !default;
+$pink:    #e83e8c !default;
+$red:     #dc3545 !default;
+$orange:  #fd7e14 !default;
+$yellow:  #ffc107 !default;
+$green:   #28a745 !default;
+$teal:    #20c997 !default;
+$cyan:    #17a2b8 !default;
+
+$primary:       $gray-800 !default;
+$secondary:     $gray-700 !default;
+$success:       $green !default;
+$info:          $cyan !default;
+$warning:       $yellow !default;
+$danger:        $red !default;
+$light:         $white !default;
+$dark:          $gray-700 !default;
+
+$min-contrast-ratio:   1.6 !default;
+
+// Links
+
+$link-decoration:           underline !default;
+
+// Components
+
+$border-width:              2px !default;
+$border-radius:             25px !default;
+$border-radius-lg:          35px !default;
+$border-radius-sm:          15px !default;
+
+// Fonts
+
+// stylelint-disable-next-line value-keyword-case
+$font-family-sans-serif:      Neucha, -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif !default;
+$font-weight-base:            700 !default;
+$headings-font-family:        "Cabin Sketch", cursive !default;
+
+$blockquote-small-color:      $gray-800 !default;
+
+// Tables
+
+$table-hover-bg:              $white !default;
+$table-border-width:          2px !default;
+$table-border-color:          $gray-800 !default;
+
+// Forms
+
+$input-border-color:                $gray-800 !default;
+$input-focus-border-color:          $input-border-color !default;
+
+// Dropdowns
+
+$dropdown-border-color:             $gray-800 !default;
+$dropdown-divider-bg:               $gray-800 !default;
+$dropdown-link-hover-color:         $white !default;
+$dropdown-link-hover-bg:            $gray-800 !default;
+
+// Navs
+
+$nav-tabs-border-color:             $gray-800 !default;
+$nav-tabs-link-hover-border-color:  $gray-800 !default;
+$nav-tabs-link-active-color:        $gray-800 !default;
+$nav-tabs-link-active-border-color: $gray-800 !default;
+
+// Navbar
+
+$navbar-dark-color:                 $white !default;
+$navbar-dark-hover-color:           $white !default;
+$navbar-dark-toggler-border-color:  $white !default;
+$navbar-light-color:                $gray-800 !default;
+$navbar-light-hover-color:          $gray-800 !default;
+$navbar-light-active-color:         $gray-800 !default;
+$navbar-light-toggler-border-color: $gray-800 !default;
+
+// Pagination
+
+$pagination-border-color:           $gray-800 !default;
+$pagination-hover-color:            $white !default;
+$pagination-hover-bg:               $gray-800 !default;
+$pagination-hover-border-color:     $gray-800 !default;
+$pagination-disabled-color:         $gray-400 !default;
+$pagination-disabled-border-color:  $gray-800 !default;
+
+// Cards
+
+$card-border-width:                 2px !default;
+$card-border-color:                 $gray-800 !default;
+
+// Popovers
+
+$popover-border-color:              $gray-800 !default;
+
+// Badges
+
+$badge-padding-y:                   .5em !default;
+$badge-padding-x:                   1.2em !default;
+
+// Toasts
+
+$toast-border-width:                2px !default;
+$toast-border-color:                $gray-800 !default;
+$toast-header-color:                $gray-800 !default;
+$toast-header-border-color:         $toast-border-color !default;
+
+// Modals
+
+$modal-content-border-color:        $gray-800 !default;
+$modal-header-border-color:         $gray-800 !default;
+
+// Progress bars
+
+$progress-bg:                       $white !default;
+$progress-bar-bg:                   $gray-400 !default;
+
+// List group
+
+$list-group-border-color:           $gray-800 !default;
+$list-group-hover-bg:               $gray-300 !default;
+$list-group-active-color:           $white !default;
+$list-group-active-bg:              $gray-800 !default;
+$list-group-action-color:           $gray-800 !default;
+
+// Breadcrumbs
+
+$breadcrumb-padding-y:              .375rem !default;
+$breadcrumb-padding-x:              .75rem !default;
+$breadcrumb-divider-color:          $gray-800 !default;
+$breadcrumb-active-color:           $gray-800 !default;
+$breadcrumb-border-radius:          .25rem !default;
+
+// Close
+
+$btn-close-color:            inherit !default;
+$btn-close-opacity:          1 !default;
+$btn-close-hover-opacity:    1 !default;
+$btn-close-focus-shadow:     none !default;
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/journal/font.css
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/journal/font.css	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/journal/font.css	(revision 3762)
@@ -0,0 +1,14 @@
+@font-face {
+  font-family: 'News Cycle';
+  font-style: normal;
+  font-weight: 400;
+  font-display: swap;
+  src: url(fonts/CSR64z1Qlv-GDxkbKVQ_TOQ.woff) format('woff');
+}
+@font-face {
+  font-family: 'News Cycle';
+  font-style: normal;
+  font-weight: 700;
+  font-display: swap;
+  src: url(fonts/CSR54z1Qlv-GDxkbKVQ_dFsvaNA.woff) format('woff');
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/journal/_variables.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/journal/_variables.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/journal/_variables.scss	(revision 3762)
@@ -0,0 +1,64 @@
+// Journal 5.2.2
+// Bootswatch
+
+$theme: "journal" !default;
+
+//
+// Color system
+//
+
+$white:    #fff !default;
+$gray-100: #f8f9fa !default;
+$gray-200: #eee !default;
+$gray-300: #dee2e6 !default;
+$gray-400: #ced4da !default;
+$gray-500: #aaa !default;
+$gray-600: #777 !default;
+$gray-700: #495057 !default;
+$gray-800: #333 !default;
+$gray-900: #222 !default;
+$black:    #000 !default;
+
+$blue:    #eb6864 !default;
+$indigo:  #6610f2 !default;
+$purple:  #6f42c1 !default;
+$pink:    #e83e8c !default;
+$red:     #f57a00 !default;
+$orange:  #fd7e14 !default;
+$yellow:  #f5e625 !default;
+$green:   #22b24c !default;
+$teal:    #20c997 !default;
+$cyan:    #369 !default;
+
+$primary:       $blue !default;
+$secondary:     $gray-500 !default;
+$success:       $green !default;
+$info:          $cyan !default;
+$warning:       $yellow !default;
+$danger:        $red !default;
+$light:         $gray-100 !default;
+$dark:          $gray-900 !default;
+
+$min-contrast-ratio:   1.28 !default;
+
+// Fonts
+
+$headings-font-family:   "News Cycle", "Arial Narrow Bold", sans-serif !default;
+$headings-font-weight:    700 !default;
+$headings-line-height:    1.1 !default;
+
+// Buttons
+
+$input-btn-padding-x:         1rem !default;
+
+// Navbar
+
+$navbar-light-color:                rgba($black, .7) !default;
+$navbar-light-hover-color:          $black !default;
+$navbar-light-active-color:         $black !default;
+
+// Pagination
+
+$pagination-hover-color:            $white !default;
+$pagination-hover-bg:               $primary !default;
+$pagination-hover-border-color:     $primary !default;
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/journal/_bootswatch.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/journal/_bootswatch.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/journal/_bootswatch.scss	(revision 3762)
@@ -0,0 +1,67 @@
+// Journal 5.2.2
+// Bootswatch
+
+
+// Variables
+
+$web-font-path: "https://fonts.googleapis.com/css2?family=News+Cycle:wght@400;700&display=swap" !default;
+@if $web-font-path {
+  @import url($web-font-path);
+}
+
+:root {
+  color-scheme: light;
+}
+
+// Navbar
+
+.bg-dark {
+  background-color: $black !important;
+}
+
+.bg-light {
+  color: $black;
+  background-color: $white !important;
+  border: 1px solid $gray-200;
+
+  &.navbar-fixed-top {
+    border-width: 0 0 1px;
+  }
+
+  &.navbar-fixed-bottom {
+    border-width: 1px 0 0;
+  }
+}
+
+.navbar {
+  font-family: $headings-font-family;
+  font-size: 18px;
+  font-weight: $headings-font-weight;
+}
+
+.navbar-brand {
+  padding-top: .5rem;
+  font-size: inherit;
+  font-weight: $headings-font-weight;
+  text-transform: uppercase;
+}
+
+// Buttons
+
+.btn {
+  font-family: $headings-font-family;
+  font-weight: $headings-font-weight;
+
+  &-secondary,
+  &-warning {
+    color: $white;
+  }
+}
+
+// Navs
+
+.pagination {
+  a:hover {
+    text-decoration: none;
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/superhero/font.css
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/superhero/font.css	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/superhero/font.css	(revision 3762)
@@ -0,0 +1,21 @@
+@font-face {
+  font-family: 'Lato';
+  font-style: normal;
+  font-weight: 300;
+  font-display: swap;
+  src: url(fonts/S6u9w4BMUTPHh7USeww.woff) format('woff');
+}
+@font-face {
+  font-family: 'Lato';
+  font-style: normal;
+  font-weight: 400;
+  font-display: swap;
+  src: url(fonts/S6uyw4BMUTPHvxo.woff) format('woff');
+}
+@font-face {
+  font-family: 'Lato';
+  font-style: normal;
+  font-weight: 700;
+  font-display: swap;
+  src: url(fonts/S6u9w4BMUTPHh6UVeww.woff) format('woff');
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/superhero/_variables.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/superhero/_variables.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/superhero/_variables.scss	(revision 3762)
@@ -0,0 +1,180 @@
+// Superhero 5.2.2
+// Bootswatch
+
+$theme: "superhero" !default;
+
+//
+// Color system
+//
+
+$white:    #fff !default;
+$gray-100: #ebebeb !default;
+$gray-200: #4e5d6c !default;
+$gray-300: #dee2e6 !default;
+$gray-400: #ced4da !default;
+$gray-500: #adb5bd !default;
+$gray-600: #868e96 !default;
+$gray-700: #495057 !default;
+$gray-800: #343a40 !default;
+$gray-900: #212529 !default;
+$black:    #000 !default;
+
+$blue:    #4c9be8 !default;
+$indigo:  #6610f2 !default;
+$purple:  #6f42c1 !default;
+$pink:    #e83e8c !default;
+$red:     #d9534f !default;
+$orange:  #f0ad4e !default;
+$yellow:  #ffc107 !default;
+$green:   #5cb85c !default;
+$teal:    #20c997 !default;
+$cyan:    #5bc0de !default;
+
+// Body
+
+$body-bg:                   #0f2537 !default;
+$body-color:                $gray-100 !default;
+@function body-mix($weight) {
+    @return mix($body-bg, $body-color, $weight);
+}
+
+$contrast-bg: color-contrast($body-bg) !default;
+$contrast-fg: color-contrast($contrast-bg) !default;
+
+$primary:       $blue !default;
+$secondary:     body-mix(80%) !default;
+$success:       $green !default;
+$info:          $cyan !default;
+$warning:       $yellow !default;
+$danger:        $red !default;
+$light:         body-mix(48%) !default;
+$dark:          body-mix(80%) !default;
+
+$min-contrast-ratio:   1.6 !default;
+
+// Components
+
+$border-radius:               0 !default;
+$border-radius-lg:            0 !default;
+$border-radius-sm:            0 !default;
+
+// Fonts
+
+// stylelint-disable-next-line value-keyword-case
+$font-family-sans-serif:      Lato, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !default;
+
+$text-muted:                  rgba($contrast-bg, .4) !default;
+
+// Tables
+
+$table-accent-bg:             rgba($contrast-bg, .05) !default;
+$table-hover-bg:              rgba($contrast-bg, .075) !default;
+$table-border-color:          rgba($contrast-fg, .15) !default;
+$table-head-bg:               $light !default;
+$table-dark-bg:               $light !default;
+$table-dark-border-color:     body-mix(80%) !default;
+$table-dark-color:            $body-bg !default;
+
+$table-bg-scale:              0 !default;
+
+// Forms
+
+$input-bg:                          $white !default;
+$input-disabled-bg:                 $body-color !default;
+
+$input-color:                       $gray-900 !default;
+$input-border-color:                transparent !default;
+$input-border-width:                0 !default;
+
+$input-placeholder-color:               $gray-600 !default;
+
+$input-group-addon-color:           $body-color !default;
+
+$form-check-input-bg:                     $contrast-bg !default;
+$form-check-input-border:                 none !default;
+
+$form-file-button-color:          $body-color !default;
+
+$form-floating-label-opacity:     1 !default;
+
+// Dropdowns
+
+$dropdown-bg:                       body-mix(80%) !default;
+$dropdown-divider-bg:               rgba($contrast-fg, .15) !default;
+$dropdown-link-color:               $body-color !default;
+$dropdown-link-hover-color:         $dropdown-link-color !default;
+$dropdown-link-hover-bg:            $table-hover-bg !default;
+
+// Navs
+
+$nav-link-disabled-color:           rgba($contrast-bg, .4) !default;
+$nav-tabs-border-color:             body-mix(80%) !default;
+$nav-tabs-link-active-color:        $body-color !default;
+$nav-tabs-link-active-border-color: body-mix(80%) !default;
+
+// Navbar
+
+
+// Pagination
+
+$pagination-color:                  $contrast-bg !default;
+$pagination-bg:                     body-mix(80%) !default;
+$pagination-border-color:           transparent !default;
+$pagination-hover-color:            $contrast-bg !default;
+$pagination-hover-bg:               $nav-link-disabled-color !default;
+$pagination-hover-border-color:     $pagination-border-color !default;
+$pagination-disabled-color:         $nav-link-disabled-color !default;
+$pagination-disabled-bg:            $pagination-bg !default;
+$pagination-disabled-border-color:  $pagination-border-color !default;
+
+// Cards
+
+$card-cap-bg:                       $table-hover-bg !default;
+$card-bg:                           body-mix(80%) !default;
+$card-inner-border-radius:          0 !default;
+
+// Popovers
+
+$popover-bg:                        body-mix(80%) !default;
+$popover-header-bg:                 $table-hover-bg !default;
+
+// Toasts
+
+$toast-background-color:            body-mix(80%) !default;
+$toast-border-color:                rgba(0, 0, 0, .2) !default;
+$toast-header-color:                $body-color !default;
+$toast-header-background-color:     $toast-background-color !default;
+$toast-header-border-color:         $toast-border-color !default;
+
+// Modals
+
+$modal-content-bg:                  body-mix(80%) !default;
+$modal-header-border-color:         rgba(0, 0, 0, .2) !default;
+
+// List group
+
+$list-group-color:                  $contrast-bg !default;
+$list-group-bg:                     body-mix(80%) !default;
+$list-group-border-color:           transparent !default;
+$list-group-hover-bg:               $nav-link-disabled-color !default;
+$list-group-disabled-color:         $nav-link-disabled-color !default;
+$list-group-action-color:           $contrast-bg !default;
+$list-group-action-hover-color:     $contrast-bg !default;
+
+// Breadcrumbs
+
+$breadcrumb-padding-y:              .375rem !default;
+$breadcrumb-padding-x:              .75rem !default;
+$breadcrumb-bg:                     body-mix(80%) !default;
+$breadcrumb-divider-color:          $body-color !default;
+$breadcrumb-active-color:           $body-color !default;
+
+// Close
+
+$btn-close-color:            $contrast-bg !default;
+$btn-close-opacity:          .5 !default;
+$btn-close-hover-opacity:    1 !default;
+
+// Code
+
+$pre-color:                         inherit !default;
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/superhero/_bootswatch.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/superhero/_bootswatch.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/superhero/_bootswatch.scss	(revision 3762)
@@ -0,0 +1,146 @@
+// Superhero 5.2.2
+// Bootswatch
+
+
+// Variables
+
+$web-font-path: "https://fonts.googleapis.com/css2?family=Lato:wght@300;400;700&display=swap" !default;
+@if $web-font-path {
+  @import url($web-font-path);
+}
+
+:root {
+  color-scheme: dark;
+}
+
+// Buttons
+
+.btn {
+  @each $color, $value in $theme-colors {
+    &-#{$color} {
+      @if $enable-gradients {
+        background: $value linear-gradient(180deg, mix($white, $value, 15%), $value) repeat-x;
+      } @else {
+        background-color: $value;
+      }
+    }
+  }
+}
+
+// Typography
+
+.dropdown-menu {
+  font-size: $font-size-sm;
+}
+
+.dropdown-header {
+  font-size: $font-size-sm;
+}
+
+.blockquote-footer {
+  color: $body-color;
+}
+
+// Tables
+
+.table {
+  font-size: $font-size-sm;
+
+  .thead-dark th {
+    color: $white;
+  }
+
+  a:not(.btn) {
+    color: $white;
+    text-decoration: underline;
+  }
+
+  .dropdown-menu a {
+    text-decoration: none;
+  }
+
+  .text-muted {
+    color: $text-muted;
+  }
+}
+
+// Forms
+
+label,
+.radio label,
+.checkbox label,
+.help-block {
+  font-size: $font-size-sm;
+}
+
+.form-floating {
+  label {
+    color: $input-placeholder-color;
+  }
+}
+
+// Navs
+
+.nav-tabs,
+.nav-pills {
+  .nav-link,
+  .nav-link:hover {
+    color: $body-color;
+  }
+
+  .nav-link.disabled {
+    color: $nav-link-disabled-color;
+  }
+}
+
+.page-link:hover,
+.page-link:focus {
+  color: $white;
+  text-decoration: none;
+}
+
+// Indicators
+
+.alert {
+  color: $white;
+  border: none;
+
+  a,
+  .alert-link {
+    color: $white;
+    text-decoration: underline;
+  }
+
+  @each $color, $value in $theme-colors {
+    &-#{$color} {
+      @if $enable-gradients {
+        background: $value linear-gradient(180deg, mix($white, $value, 15%), $value) repeat-x;
+      } @else {
+        background-color: $value;
+      }
+    }
+  }
+}
+
+.badge {
+  &-warning,
+  &-info {
+    color: $white;
+  }
+}
+
+// Popovers
+
+.popover-header {
+  border-top-left-radius: 0;
+  border-top-right-radius: 0;
+}
+
+// Containers
+
+.modal {
+  &-header,
+  &-footer {
+    background-color: $table-hover-bg;
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/solar/_variables.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/solar/_variables.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/solar/_variables.scss	(revision 3762)
@@ -0,0 +1,189 @@
+// Solar 5.2.2
+// Bootswatch
+
+$theme: "solar" !default;
+
+//
+// Color system
+//
+
+// stylelint-disable
+$white:    #fff !default;
+$gray-100: #fdf6e3 !default;
+$gray-200: #eee8d5 !default;
+$gray-300: #dee2e6 !default;
+$gray-400: #ced4da !default;
+$gray-500: #adb5bd !default;
+$gray-600: #839496 !default;
+$gray-700: #495057 !default;
+$gray-800: #073642 !default;
+$gray-900: #002b36 !default;
+$black:    #000 !default;
+
+$blue:    #b58900 !default;
+$indigo:  #6610f2 !default;
+$purple:  #6f42c1 !default;
+$pink:    #e83e8c !default;
+$red:     #d33682 !default;
+$orange:  #fd7e14 !default;
+$yellow:  #cb4b16 !default;
+$green:   #2aa198 !default;
+$teal:    #20c997 !default;
+$cyan:    #268bd2 !default;
+
+$primary:       $blue !default;
+$secondary:     $gray-600 !default;
+$success:       $green !default;
+$info:          $cyan !default;
+$warning:       $yellow !default;
+$danger:        $red !default;
+$light:         $gray-100 !default;
+$dark:          $gray-800 !default;
+
+$min-contrast-ratio:   2.5 !default;
+
+// Body
+
+$body-bg:                   $gray-900 !default;
+$body-color:                $gray-600 !default;
+
+// Links
+
+$link-color:                $success !default;
+$link-hover-color:          $link-color !default;
+
+// Components
+
+$component-active-color:      rgba(255, 255, 255, .75) !default;
+$component-active-bg:         $gray-800 !default;
+
+// Fonts
+
+$font-family-sans-serif:      "Source Sans Pro", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !default !default;
+
+// Tables
+
+$table-accent-bg:             rgba($white, .05) !default;
+$table-hover-bg:              rgba($white, .075) !default;
+$table-border-color:          $component-active-bg !default;
+$table-dark-bg:               $gray-500 !default;
+$table-dark-border-color:     darken($gray-500, 3%) !default;
+$table-dark-color:            $body-bg !default;
+
+$table-bg-scale:              0 !default;
+
+// Forms
+
+$input-bg:                              #a9bdbd !default;
+$input-disabled-bg:                     #657b83 !default;
+
+$input-color:                           $gray-800 !default;
+$input-border-color:                    rgba($black, .15) !default;
+$input-placeholder-color:               #657b83 !default;
+$input-group-addon-color:               $gray-600 !default;
+$input-group-addon-bg:                  $gray-800 !default;
+
+$form-check-input-bg:                     rgba(255, 255, 255, .75) !default;
+$form-check-input-border:                 1px solid $white !default;
+$form-check-input-checked-bg-color:       $primary !default;
+
+$form-switch-color:               rgba(255, 255, 255, .75) !default;
+$form-switch-focus-color:         $form-switch-color !default;
+
+$form-range-track-bg:             $gray-800 !default;
+$form-range-thumb-bg:                      $primary !default;
+
+$form-file-button-color:          $gray-600 !default;
+
+// Dropdowns
+
+$dropdown-bg:                       $gray-800 !default;
+$dropdown-divider-bg:               $body-bg !default;
+$dropdown-link-color:               $body-color !default;
+$dropdown-link-hover-color:         rgba(255, 255, 255, .75) !default;
+$dropdown-link-hover-bg:            $body-bg !default;
+
+// Navs
+
+$nav-tabs-border-color:             $gray-800 !default;
+$nav-tabs-link-hover-border-color:  $nav-tabs-border-color !default;
+$nav-tabs-link-active-color:        $component-active-color !default;
+$nav-tabs-link-active-bg:           $body-bg !default;
+$nav-tabs-link-active-border-color: $nav-tabs-border-color !default;
+
+// Navbars
+
+$navbar-light-color:                rgba($black, .4) !default !default;
+$navbar-light-active-color:         rgba($black, .7) !default !default;
+
+// Pagination
+
+$pagination-bg:                     transparent !default;
+$pagination-border-color:           $gray-800 !default;
+$pagination-hover-bg:               $gray-800 !default;
+$pagination-hover-border-color:     $gray-800 !default;
+$pagination-active-color:           rgba(255, 255, 255, .75) !default;
+$pagination-active-bg:              $gray-800 !default;
+$pagination-active-border-color:    $gray-800 !default;
+$pagination-disabled-color:         $gray-800 !default;
+$pagination-disabled-bg:            transparent !default;
+$pagination-disabled-border-color:  $gray-800 !default;
+
+// Cards
+
+$card-border-color:                 rgba($gray-900, .95) !default;
+$card-cap-bg:                       rgba($gray-800, .25) !default;
+$card-bg:                           rgba($gray-200, .125) !default;
+
+// Popovers
+
+$popover-bg:                        $gray-800 !default;
+$popover-border-color:              $body-bg !default;
+$popover-header-bg:                 $gray-800 !default;
+
+// Toasts
+
+$toast-background-color:            lighten($body-bg, 5%) !default;
+$toast-border-color:                rgba(0, 0, 0, .2) !default;
+$toast-header-color:                $body-color !default;
+$toast-header-background-color:     $toast-background-color !default;
+$toast-header-border-color:         $toast-border-color !default;
+
+// Modals
+
+$modal-content-bg:                  $gray-800 !default;
+$modal-content-border-color:        $body-bg !default;
+$modal-header-border-color:         $body-bg !default;
+
+// Progress bars
+
+$progress-bg:                       $gray-800 !default;
+$progress-bar-color:                $primary !default;
+
+// List group
+
+$list-group-color:                  $white !default;
+$list-group-bg:                     transparent !default;
+$list-group-border-color:           $gray-800 !default;
+$list-group-hover-bg:               $gray-800 !default;
+$list-group-active-color:           $white !default;
+$list-group-disabled-color:         $gray-600 !default;
+$list-group-disabled-bg:            transparent !default;
+$list-group-action-color:           $body-color !default;
+$list-group-action-hover-color:     $white !default;
+
+// Breadcrumbs
+
+$breadcrumb-padding-y:              .375rem !default;
+$breadcrumb-padding-x:              .75rem !default;
+$breadcrumb-bg:                     $component-active-bg !default;
+$breadcrumb-active-color:           $gray-500 !default;
+$breadcrumb-border-radius:          .25rem !default;
+
+// Close
+
+$btn-close-color:                       $white !default;
+
+// Code
+
+$pre-color:                         inherit !default;
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/solar/_bootswatch.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/solar/_bootswatch.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/solar/_bootswatch.scss	(revision 3762)
@@ -0,0 +1,66 @@
+// Solar 5.2.2
+// Bootswatch
+
+
+// Variables
+
+$web-font-path: "https://fonts.googleapis.com/css2?family=Source+Sans+Pro:wght@400;600;700&display=swap" !default;
+@if $web-font-path {
+  @import url($web-font-path);
+}
+
+:root {
+  color-scheme: dark;
+}
+
+// Buttons
+
+.btn {
+  @each $color, $value in $theme-colors {
+    &-#{$color} {
+      @if $enable-gradients {
+        background: $value linear-gradient(180deg, mix($white, $value, 15%), $value) repeat-x;
+      } @else {
+        background-color: $value;
+      }
+    }
+  }
+}
+
+// Indicators
+
+.alert {
+  color: $white;
+  border: none;
+
+  a,
+  .alert-link {
+    color: $white;
+    text-decoration: underline;
+  }
+
+  @each $color, $value in $theme-colors {
+    &-#{$color} {
+      @if $enable-gradients {
+        background: $value linear-gradient(180deg, mix($white, $value, 15%), $value) repeat-x;
+      } @else {
+        background-color: $value;
+      }
+    }
+  }
+
+  &-light {
+    &,
+    a:not(.btn),
+    .alert-link {
+      color: $body-bg;
+    }
+  }
+}
+
+
+.badge {
+  &.bg-light {
+    color: $dark;
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/solar/font.css
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/solar/font.css	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/solar/font.css	(revision 3762)
@@ -0,0 +1,21 @@
+@font-face {
+  font-family: 'Source Sans Pro';
+  font-style: normal;
+  font-weight: 400;
+  font-display: swap;
+  src: url(fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3aPA.woff) format('woff');
+}
+@font-face {
+  font-family: 'Source Sans Pro';
+  font-style: normal;
+  font-weight: 600;
+  font-display: swap;
+  src: url(fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rAkw.woff) format('woff');
+}
+@font-face {
+  font-family: 'Source Sans Pro';
+  font-style: normal;
+  font-weight: 700;
+  font-display: swap;
+  src: url(fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vAkw.woff) format('woff');
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/cosmo/font.css
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/cosmo/font.css	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/cosmo/font.css	(revision 3762)
@@ -0,0 +1,21 @@
+@font-face {
+  font-family: 'Source Sans Pro';
+  font-style: normal;
+  font-weight: 300;
+  font-display: swap;
+  src: url(fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zAkw.woff) format('woff');
+}
+@font-face {
+  font-family: 'Source Sans Pro';
+  font-style: normal;
+  font-weight: 400;
+  font-display: swap;
+  src: url(fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3aPA.woff) format('woff');
+}
+@font-face {
+  font-family: 'Source Sans Pro';
+  font-style: normal;
+  font-weight: 700;
+  font-display: swap;
+  src: url(fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vAkw.woff) format('woff');
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/cosmo/_variables.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/cosmo/_variables.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/cosmo/_variables.scss	(revision 3762)
@@ -0,0 +1,69 @@
+// Cosmo 5.2.2
+// Bootswatch
+
+$theme: "cosmo" !default;
+
+//
+// Color system
+//
+
+$white:    #fff !default;
+$gray-100: #f8f9fa !default;
+$gray-200: #e9ecef !default;
+$gray-300: #dee2e6 !default;
+$gray-400: #ced4da !default;
+$gray-500: #adb5bd !default;
+$gray-600: #868e96 !default;
+$gray-700: #495057 !default;
+$gray-800: #373a3c !default;
+$gray-900: #212529 !default;
+$black:    #000 !default;
+
+$blue:    #2780e3 !default;
+$indigo:  #6610f2 !default;
+$purple:  #613d7c !default;
+$pink:    #e83e8c !default;
+$red:     #ff0039 !default;
+$orange:  #f0ad4e !default;
+$yellow:  #ff7518 !default;
+$green:   #3fb618 !default;
+$teal:    #20c997 !default;
+$cyan:    #9954bb !default;
+
+$primary:       $blue !default;
+$secondary:     $gray-800 !default;
+$success:       $green !default;
+$info:          $cyan !default;
+$warning:       $yellow !default;
+$danger:        $red !default;
+$light:         $gray-100 !default;
+$dark:          $gray-800 !default;
+
+$min-contrast-ratio:   2.6 !default;
+
+// Options
+
+$enable-rounded: false !default;
+
+// Body
+
+$body-color:    $gray-800 !default;
+
+// Fonts
+
+// stylelint-disable-next-line value-keyword-case
+$font-family-sans-serif:    "Source Sans Pro", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !default;
+$headings-font-weight:      400 !default;
+
+// Navbar
+
+$navbar-dark-hover-color:       rgba($white, 1) !default;
+$navbar-light-hover-color:      rgba($black, .9) !default;
+
+// Alerts
+
+$alert-border-width:            0 !default;
+
+// Progress bars
+
+$progress-height:               .5rem !default;
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/cosmo/_bootswatch.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/cosmo/_bootswatch.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/cosmo/_bootswatch.scss	(revision 3762)
@@ -0,0 +1,39 @@
+// Cosmo 5.2.2
+// Bootswatch
+
+
+// Variables
+
+$web-font-path: "https://fonts.googleapis.com/css2?family=Source+Sans+Pro:wght@300;400;700&display=swap" !default;
+@if $web-font-path {
+  @import url($web-font-path);
+}
+
+:root {
+  color-scheme: light;
+}
+
+// Typography
+
+body {
+  -webkit-font-smoothing: antialiased;
+}
+
+// Indicators
+
+.badge {
+  &.bg-light {
+    color: $dark;
+  }
+}
+
+// Progress bars
+
+.progress {
+  @include box-shadow(none);
+
+  .progress-bar {
+    font-size: 8px;
+    line-height: 8px;
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/litera/_bootswatch.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/litera/_bootswatch.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/litera/_bootswatch.scss	(revision 3762)
@@ -0,0 +1,119 @@
+// Litera 5.2.2
+// Bootswatch
+
+
+// Variables
+
+:root {
+  color-scheme: light;
+}
+
+// Navbar
+
+.navbar {
+  font-size: $font-size-sm;
+
+  &.bg-dark {
+    background-color: $success !important;
+  }
+
+  &.bg-light {
+    background-color: $white !important;
+    border: 1px solid rgba(0, 0, 0, .1);
+
+    &.navbar-fixed-top {
+      border-width: 0 0 1px;
+    }
+
+    &.navbar-fixed-bottom {
+      border-width: 1px 0 0;
+    }
+  }
+}
+
+// Typography
+
+p {
+  font-family: $font-family-serif;
+}
+
+blockquote {
+  font-style: italic;
+}
+
+footer {
+  font-size: $font-size-sm;
+}
+
+.lead {
+  font-family: $font-family-sans-serif;
+  color: $gray-600;
+}
+
+// Tables
+
+table,
+.table {
+  font-size: $font-size-sm;
+}
+
+// Navs
+
+.nav,
+.breadcrumb,
+.pagination {
+  font-size: $font-size-sm;
+}
+
+.dropdown-menu {
+  font-size: $font-size-sm;
+}
+
+// Indicators
+
+.alert {
+  font-size: $font-size-sm;
+  color: $white;
+
+  &,
+  p {
+    font-family: $font-family-sans-serif;
+  }
+
+  a,
+  .alert-link {
+    font-weight: 400;
+    color: $white;
+    text-decoration: underline;
+  }
+
+  @each $color, $value in $theme-colors {
+    &-#{$color} {
+      @if $enable-gradients {
+        background: $value linear-gradient($value, mix($body-bg, $value, 15%)) repeat-x;
+      } @else {
+        background-color: $value;
+      }
+    }
+  }
+
+  &-light {
+    &,
+    a,
+    .alert-link {
+      color: $body-color;
+    }
+  }
+}
+
+.badge {
+  &.bg-light {
+    color: $dark;
+  }
+}
+
+// Containers
+
+.list-group {
+  font-size: $font-size-sm;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/litera/_variables.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/litera/_variables.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/litera/_variables.scss	(revision 3762)
@@ -0,0 +1,100 @@
+// Litera 5.2.2
+// Bootswatch
+
+$theme: "litera" !default;
+
+//
+// Color system
+//
+
+$white:    #fff !default;
+$gray-100: #f8f9fa !default;
+$gray-200: #e9ecef !default;
+$gray-300: #ddd !default;
+$gray-400: #ced4da !default;
+$gray-500: #adb5bd !default;
+$gray-600: #868e96 !default;
+$gray-700: #495057 !default;
+$gray-800: #343a40 !default;
+$gray-900: #212529 !default;
+$black:    #000 !default;
+
+$blue:    #4582ec !default;
+$indigo:  #6610f2 !default;
+$purple:  #6f42c1 !default;
+$pink:    #e83e8c !default;
+$red:     #d9534f !default;
+$orange:  #fd7e14 !default;
+$yellow:  #f0ad4e !default;
+$green:   #02b875 !default;
+$teal:    #20c997 !default;
+$cyan:    #17a2b8 !default;
+
+$primary:       $blue !default;
+$secondary:     $gray-500 !default;
+$success:       $green !default;
+$info:          $cyan !default;
+$warning:       $yellow !default;
+$danger:        $red !default;
+$light:         $gray-100 !default;
+$dark:          $gray-800 !default;
+
+$min-contrast-ratio:   1.85 !default;
+
+// Body
+
+$body-color:                $gray-800 !default;
+
+// Fonts
+
+// stylelint-disable value-keyword-case
+$font-family-sans-serif:      -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji" !default;
+$font-family-serif:           Georgia, Cambria, "Times New Roman", Times, serif !default;
+// stylelint-enable
+
+$font-size-base:              1.1rem !default;
+$headings-font-weight:        700 !default;
+
+// Tables
+
+$table-border-color:          rgba(0, 0, 0, .1) !default;
+
+$table-bg-scale:              0 !default;
+
+// Buttons
+
+$input-btn-padding-y:         .5rem !default;
+$input-btn-padding-x:         1.1rem !default;
+$btn-font-family:             $font-family-sans-serif !default;
+$btn-font-size:               .875rem !default;
+$btn-font-size-sm:            .688rem !default;
+
+$btn-border-radius:           1.078em !default;
+$btn-border-radius-lg:        2.688em !default;
+$btn-border-radius-sm:        .844em !default;
+
+// Forms
+
+$input-border-color:                    rgba(0, 0, 0, .1) !default;
+$input-group-addon-bg:                  $gray-200 !default !default;
+
+// Navbar
+
+$navbar-dark-color:                 rgba($white, .6) !default;
+$navbar-dark-hover-color:           $white !default;
+$navbar-light-hover-color:          $body-color !default;
+$navbar-light-active-color:         $body-color !default;
+
+// Tooltips
+
+$tooltip-font-size:                 11px !default;
+
+// Badges
+
+$badge-font-weight:                 400 !default;
+$badge-padding-y:                   .6em !default;
+$badge-padding-x:                   1.2em !default;
+
+// Alerts
+
+$alert-border-width:                0 !default;
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/lumen/_variables.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/lumen/_variables.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/lumen/_variables.scss	(revision 3762)
@@ -0,0 +1,93 @@
+// Lumen 5.2.2
+// Bootswatch
+
+$theme: "lumen" !default;
+
+//
+// Color system
+//
+
+$white:    #fff !default;
+$gray-100: #f6f6f6 !default;
+$gray-200: #f0f0f0 !default;
+$gray-300: #dee2e6 !default;
+$gray-400: #ced4da !default;
+$gray-500: #adb5bd !default;
+$gray-600: #999 !default;
+$gray-700: #555 !default;
+$gray-800: #333 !default;
+$gray-900: #222 !default;
+$black:    #000 !default;
+
+$blue:    #158cba !default;
+$indigo:  #6610f2 !default;
+$purple:  #6f42c1 !default;
+$pink:    #e83e8c !default;
+$red:     #ff4136 !default;
+$orange:  #fd7e14 !default;
+$yellow:  #ff851b !default;
+$green:   #28b62c !default;
+$teal:    #20c997 !default;
+$cyan:    #75caeb !default;
+
+$primary:       $blue !default;
+$secondary:     $gray-200 !default;
+$success:       $green !default;
+$info:          $cyan !default;
+$warning:       $yellow !default;
+$danger:        $red !default;
+$light:         $gray-100 !default;
+$dark:          $gray-700 !default;
+
+$min-contrast-ratio:   1.75 !default;
+
+// Fonts
+
+// stylelint-disable-next-line value-keyword-case
+$font-family-sans-serif:      "Source Sans Pro", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !default;
+
+// Tables
+
+$table-bg-scale:              0 !default;
+
+// Buttons
+
+$btn-font-weight:             700 !default;
+
+// Dropdowns
+
+$dropdown-link-color:         rgba(0, 0, 0, .5) !default;
+
+// Navs
+
+$nav-tabs-border-color:             $gray-200 !default;
+$nav-tabs-link-hover-border-color:  $nav-tabs-border-color !default;
+$nav-tabs-link-active-color:        $gray-900 !default;
+$nav-tabs-link-active-border-color: $nav-tabs-border-color !default;
+
+// Pagination
+
+$pagination-color:                  $gray-700 !default;
+$pagination-bg:                     $gray-200 !default;
+$pagination-hover-color:            $pagination-color !default;
+$pagination-hover-bg:               $pagination-bg !default;
+$pagination-active-border-color:    darken($primary, 5%) !default;
+$pagination-disabled-color:         $gray-600 !default;
+$pagination-disabled-bg:            $pagination-bg !default;
+
+// Breadcrumbs
+
+$breadcrumb-padding-y:              .375rem !default;
+$breadcrumb-padding-x:              .75rem !default;
+$breadcrumb-bg:                     $pagination-bg !default;
+$breadcrumb-border-radius:          .25rem !default;
+
+// Modals
+
+$modal-content-border-color:        rgba($black, .1) !default;
+
+// Close
+
+$btn-close-color:            $white !default;
+$btn-close-opacity:          .4 !default;
+$btn-close-hover-opacity:    1 !default;
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/lumen/_bootswatch.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/lumen/_bootswatch.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/lumen/_bootswatch.scss	(revision 3762)
@@ -0,0 +1,330 @@
+// Lumen 5.2.2
+// Bootswatch
+
+
+// Variables
+
+$web-font-path: "https://fonts.googleapis.com/css2?family=Source+Sans+Pro:ital,wght@0,300;0,400;0,700;1,400&display=swap" !default;
+@if $web-font-path {
+  @import url($web-font-path);
+}
+
+:root {
+  color-scheme: light;
+}
+
+// Mixins
+
+@mixin shadow($width: 4px){
+  border-style: solid;
+  border-width: 0 1px $width 1px;
+}
+
+// Navbar
+
+.navbar {
+  @include shadow();
+
+  @each $color, $value in $theme-colors {
+    &.bg-#{$color} {
+      border-color: shade-color($value, 10%);
+    }
+  }
+}
+
+// Buttons
+
+.btn {
+  @include shadow();
+  text-transform: uppercase;
+
+  &:not(.disabled):hover {
+    margin-top: 1px;
+    border-bottom-width: 3px;
+  }
+
+  &:not(.disabled):active {
+    margin-top: 2px;
+    border-bottom-width: 2px;
+    @include box-shadow(none);
+  }
+
+  @each $color, $value in $theme-colors {
+    &-#{$color} {
+      &:hover,
+      &:active,
+      &:focus {
+        background-color: $value;
+      }
+
+      &,
+      &:not(.disabled):hover,
+      &:not(.disabled):active,
+      &:focus {
+        border-color: shade-color($value, 10%);
+      }
+    }
+  }
+}
+
+.btn-outline-secondary {
+  color: $black;
+}
+
+[class*="btn-outline"] {
+  border-top-width: 1px;
+}
+
+.btn-group-vertical {
+  .btn + .btn {
+    &:hover {
+      margin-top: -1px;
+      border-top-width: 1px;
+    }
+
+    &:active {
+      margin-top: -1px;
+      border-top-width: 2px;
+    }
+  }
+}
+
+// Typography
+
+.text-secondary {
+  color: $gray-700 !important;
+}
+
+.blockquote-footer {
+  color: $gray-600;
+}
+
+// Forms
+
+.form-control {
+  box-shadow: inset 0 2px 0 rgba(0, 0, 0, .075);
+}
+
+// Navs
+
+.nav {
+  .open > a,
+  .open > a:hover,
+  .open > a:focus {
+    border-color: transparent;
+  }
+}
+
+.nav-tabs {
+  .nav-link {
+    color: $body-color;
+
+    &,
+    &.disabled,
+    &.disabled:hover,
+    &.disabled:focus {
+      margin-top: 6px;
+      border-color: $nav-tabs-border-color;
+      transition: padding-bottom .2s ease-in-out, margin-top .2s ease-in-out, border-bottom .2s ease-in-out;
+    }
+
+    &:not(.disabled):hover,
+    &:not(.disabled):focus,
+    &.active {
+      padding-bottom: add(.5rem, 6px);
+      margin-top: 0;
+      border-bottom-color: transparent;
+    }
+  }
+
+  &.nav-justified > li {
+    vertical-align: bottom;
+  }
+}
+
+.dropdown-menu {
+  margin-top: 0;
+  @include shadow();
+  border-top-width: 1px;
+  @include box-shadow(none);
+}
+
+.breadcrumb {
+  border-color: shade-color($breadcrumb-bg, 10%);
+  @include shadow();
+}
+
+.pagination {
+  > li > a,
+  > li > span {
+    position: relative;
+    top: 0;
+    font-weight: 700;
+    color: $pagination-color;
+    text-transform: uppercase;
+    @include shadow();
+
+    &:hover,
+    &:focus {
+      top: 1px;
+      text-decoration: none;
+      border-bottom-width: 3px;
+    }
+
+    &:active {
+      top: 2px;
+      border-bottom-width: 2px;
+    }
+  }
+
+  > .disabled > a,
+  > .disabled > span {
+    &:hover {
+      top: 0;
+      @include shadow();
+    }
+
+    &:active {
+      top: 0;
+      @include shadow();
+    }
+  }
+}
+
+.pager {
+  > li > a,
+  > li > span,
+  > .disabled > a,
+  > .disabled > span {
+    &,
+    &:hover,
+    &:active {
+      border-right-width: 2px;
+      border-left-width: 2px;
+    }
+  }
+}
+
+// Indicators
+
+.btn-close {
+  text-decoration: none;
+  opacity: .4;
+
+  &:hover,
+  &:focus {
+    opacity: 1;
+  }
+}
+
+.alert {
+  color: $white;
+  @include shadow();
+
+  &-primary {
+    background-color: $primary;
+    border-color: shade-color($primary, 10%);
+  }
+
+  &-secondary {
+    background-color: $secondary;
+    border-color: shade-color($secondary, 10%);
+  }
+
+  &-success {
+    background-color: $success;
+    border-color: shade-color($success, 10%);
+  }
+
+  &-info {
+    background-color: $info;
+    border-color: shade-color($info, 10%);
+  }
+
+  &-danger {
+    background-color: $danger;
+    border-color: shade-color($danger, 10%);
+  }
+
+  &-warning {
+    background-color: $warning;
+    border-color: shade-color($warning, 10%);
+  }
+
+  &-dark {
+    background-color: $dark;
+    border-color: shade-color($dark, 10%);
+  }
+
+  &-light {
+    background-color: $light;
+    border-color: shade-color($light, 10%);
+  }
+
+  .alert-link {
+    font-weight: 400;
+    color: $white;
+    text-decoration: underline;
+  }
+
+  &-secondary,
+  &-light {
+    &,
+    a,
+    .alert-link {
+      color: $body-color;
+    }
+  }
+}
+
+.badge {
+  &.bg-secondary,
+  &.bg-light {
+    color: $dark;
+  }
+}
+
+// Containers
+
+a.list-group-item {
+  &-success {
+    &.active {
+      background-color: $success;
+    }
+
+    &.active:hover,
+    &.active:focus {
+      background-color: shade-color($success, 10%);
+    }
+  }
+
+  &-warning {
+    &.active {
+      background-color: $warning;
+    }
+
+    &.active:hover,
+    &.active:focus {
+      background-color: shade-color($warning, 10%);
+    }
+  }
+
+  &-danger {
+    &.active {
+      background-color: $danger;
+    }
+
+    &.active:hover,
+    &.active:focus {
+      background-color: shade-color($danger, 10%);
+    }
+  }
+}
+
+.modal,
+.toast,
+.offcanvas {
+  .btn-close {
+    background-image: escape-svg(url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$black}'><path d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/></svg>"));
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/lumen/font.css
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/lumen/font.css	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/lumen/font.css	(revision 3762)
@@ -0,0 +1,28 @@
+@font-face {
+  font-family: 'Source Sans Pro';
+  font-style: italic;
+  font-weight: 400;
+  font-display: swap;
+  src: url(fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPa7j.woff) format('woff');
+}
+@font-face {
+  font-family: 'Source Sans Pro';
+  font-style: normal;
+  font-weight: 300;
+  font-display: swap;
+  src: url(fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zAkw.woff) format('woff');
+}
+@font-face {
+  font-family: 'Source Sans Pro';
+  font-style: normal;
+  font-weight: 400;
+  font-display: swap;
+  src: url(fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3aPA.woff) format('woff');
+}
+@font-face {
+  font-family: 'Source Sans Pro';
+  font-style: normal;
+  font-weight: 700;
+  font-display: swap;
+  src: url(fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vAkw.woff) format('woff');
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/zephyr/_variables.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/zephyr/_variables.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/zephyr/_variables.scss	(revision 3762)
@@ -0,0 +1,163 @@
+// Zephyr 5.2.2
+// Bootswatch
+
+$theme: "zephyr" !default;
+
+//
+// Color system
+//
+
+$white:    #fff !default;
+$gray-100: #f8f9fa !default;
+$gray-200: #e9ecef !default;
+$gray-300: #dee2e6 !default;
+$gray-400: #ced4da !default;
+$gray-500: #adb5bd !default;
+$gray-600: #6c757d !default;
+$gray-700: #495057 !default;
+$gray-800: #343a40 !default;
+$gray-900: #212529 !default;
+$black:    #000 !default;
+
+$blue:    #3459e6 !default;
+$indigo:  #6610f2 !default;
+$purple:  #6f42c1 !default;
+$pink:    #d63384 !default;
+$red:     #da292e !default;
+$orange:  #f8765f !default;
+$yellow:  #f4bd61 !default;
+$green:   #2fb380 !default;
+$teal:    #20c997 !default;
+$cyan:    #287bb5 !default;
+
+$primary:       $blue !default;
+$secondary:     $white !default;
+$success:       $green !default;
+$info:          $cyan !default;
+$warning:       $yellow !default;
+$danger:        $red !default;
+$light:         $gray-100 !default;
+$dark:          $gray-900 !default;
+
+$min-contrast-ratio:   1.65 !default;
+
+$enable-shadows:              true !default;
+
+// Body
+
+$body-color:                $gray-700 !default;
+
+$headings-color:              $gray-900 !default;
+
+// Fonts
+
+// stylelint-disable-next-line value-keyword-case
+$font-family-sans-serif:      Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !default;
+$font-size-base:              1rem !default; // Assumes the browser default, typically `16px`
+$font-size-sm:                $font-size-base * .875 !default;
+
+// Components
+
+$box-shadow:                  0 1px 2px rgba($black, .05) !default;
+$box-shadow-lg:               0 1px 3px 0 rgba(0, 0, 0, .1), 0 1px 2px 0 rgba(0, 0, 0, .06) !default;
+
+// Tables
+
+$table-cell-padding-y:        1rem !default;
+$table-cell-padding-x:        1rem !default;
+$table-cell-padding-y-sm:     .5rem !default;
+$table-cell-padding-x-sm:     .5rem !default;
+
+$table-th-font-weight:        500 !default;
+
+// Buttons + Forms
+
+$input-btn-padding-y:         .5rem !default;
+$input-btn-padding-x:         1rem !default;
+$input-btn-font-size:         $font-size-sm !default;
+
+// Buttons
+
+$btn-font-weight:             500 !default;
+$btn-box-shadow:              $box-shadow !default;
+$btn-focus-box-shadow:        $box-shadow !default;
+$btn-active-box-shadow:       $box-shadow !default;
+
+// Forms
+
+$form-label-font-weight:                500 !default;
+
+$input-box-shadow:                      $box-shadow !default;
+
+$input-group-addon-bg:                  $gray-100 !default;
+
+// Navs
+
+$nav-link-color:                    $body-color !default;
+$nav-link-hover-color:              $body-color !default;
+
+$nav-tabs-border-radius:            0 !default;
+$nav-tabs-link-active-color:        $primary !default;
+
+// Navbar
+
+$navbar-padding-y:                  .85rem !default;
+
+$navbar-nav-link-padding-x:         .75rem !default;
+
+$navbar-dark-color:                 $white !default;
+$navbar-dark-hover-color:           $white !default;
+$navbar-dark-active-color:          $white !default;
+
+$navbar-light-color:                $black !default;
+$navbar-light-hover-color:          $black !default;
+$navbar-light-active-color:         $black !default;
+
+// Dropdowns
+
+$dropdown-font-size:                $font-size-sm !default;
+$dropdown-border-color:             $gray-300 !default;
+$dropdown-divider-bg:               $gray-200 !default;
+
+$dropdown-link-hover-color:         $white !default;
+$dropdown-link-hover-bg:            $primary !default;
+
+$dropdown-item-padding-y:           .5rem !default;
+$dropdown-item-padding-x:           1rem !default;
+
+// Pagination
+
+$pagination-padding-y:              .5rem !default;
+$pagination-padding-x:              1rem !default;
+
+$pagination-color:                  $gray-700 !default;
+
+$pagination-focus-color:            $pagination-color !default;
+
+$pagination-hover-color:            $pagination-color !default;
+$pagination-hover-bg:               $gray-100 !default;
+
+// Cards
+$card-spacer-x:                     1.5rem !default;
+$card-cap-padding-y:                1rem !default;
+$card-cap-padding-x:                1.5rem !default;
+
+// Toasts
+
+$toast-header-color:                $headings-color !default;
+
+// Modals
+
+$modal-content-border-color:        $gray-300 !default;
+$modal-header-border-width:         0 !default;
+
+// List group
+
+$list-group-item-padding-y:         1rem !default;
+$list-group-item-padding-x:         1.5rem !default;
+
+// Breadcrumbs
+
+$breadcrumb-padding-x:              1rem !default;
+
+$breadcrumb-divider:                quote(">") !default;
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/zephyr/_bootswatch.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/zephyr/_bootswatch.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/zephyr/_bootswatch.scss	(revision 3762)
@@ -0,0 +1,215 @@
+// Zephyr 5.2.2
+// Bootswatch
+
+
+// Variables
+
+$web-font-path: "https://fonts.googleapis.com/css2?family=Inter:wght@400;500;700&display=swap" !default;
+@if $web-font-path {
+  @import url($web-font-path);
+}
+
+:root {
+  color-scheme: light;
+}
+
+// Navbar
+
+.navbar {
+  font-size: $font-size-sm;
+  font-weight: 500;
+
+  .nav-item {
+    margin-right: .5rem;
+    margin-left: .5rem;
+  }
+
+  .navbar-nav {
+    .nav-link {
+      border-radius: $border-radius;
+    }
+  }
+}
+
+.navbar-dark {
+  .navbar-nav {
+    .nav-link {
+      &:hover {
+        background-color: rgba(255, 255, 255, .1);
+      }
+
+      &.active {
+        background-color: rgba(0, 0, 0, .5);
+      }
+    }
+  }
+}
+
+.navbar-light {
+  .navbar-nav {
+    .nav-link {
+      &:hover {
+        background-color: rgba(0, 0, 0, .03);
+      }
+
+      &.active {
+        background-color: rgba(0, 0, 0, .05);
+      }
+    }
+  }
+}
+
+.navbar-nav {
+  --bs-nav-link-padding-x: .5rem;
+}
+
+// Buttons
+
+.btn-secondary,
+.btn-light,
+.btn-outline-secondary,
+.btn-outline-light {
+  color: $gray-900;
+
+  &:disabled,
+  &.disabled {
+    border: 1px solid shade-color($secondary, 10%);
+  }
+}
+
+.btn-secondary,
+.btn-outline-secondary {
+  border-color: shade-color($secondary, 10%);
+
+  &:hover,
+  &:active {
+    background-color: shade-color($secondary, 10%);
+    border-color: shade-color($secondary, 10%);
+  }
+}
+
+.btn-light,
+.btn-outline-light {
+  border-color: shade-color($light, 10%);
+
+  &:hover,
+  &:active {
+    background-color: shade-color($light, 10%);
+    border-color: shade-color($light, 10%);
+  }
+}
+
+// Tables
+
+.table {
+  font-size: $font-size-sm;
+  box-shadow: $box-shadow-lg;
+}
+
+thead th {
+  font-size: $font-size-sm;
+  text-transform: uppercase;
+}
+
+// Forms
+
+.input-group-text {
+  box-shadow: $box-shadow;
+}
+
+// Navs
+
+.nav-tabs {
+  font-weight: 500;
+
+  .nav-link {
+    padding-top: 1rem;
+    padding-bottom: 1rem;
+    border-width: 0 0 1px;
+  }
+
+  .nav-link.active,
+  .nav-item.show .nav-link {
+    box-shadow: inset 0 -2px 0 $primary;
+  }
+}
+
+.nav-pills {
+  font-weight: 500;
+}
+
+.pagination {
+  font-size: $font-size-sm;
+  font-weight: 500;
+
+  .page-link {
+    box-shadow: $box-shadow;
+  }
+}
+
+.breadcrumb {
+  font-size: $font-size-sm;
+  font-weight: 500;
+  border: 1px solid $gray-300;
+  border-radius: $border-radius;
+  box-shadow: $box-shadow;
+
+  &-item {
+    padding: 1rem .5rem 1rem 0;
+  }
+}
+
+.breadcrumb-item + .breadcrumb-item::before {
+  padding-right: 1rem;
+}
+
+// Indicators
+
+.alert {
+  .btn-close {
+    color: inherit;
+  }
+}
+
+.badge {
+  &.bg-secondary,
+  &.bg-light {
+    color: $gray-900;
+  }
+}
+
+// Containers
+
+.list-group-item,
+.card {
+  h1,
+  h2,
+  h3,
+  h4,
+  h5,
+  h6,
+  .h1,
+  .h2,
+  .h3,
+  .h4,
+  .h5,
+  .h6 {
+    color: inherit;
+  }
+}
+
+.list-group {
+  box-shadow: $box-shadow-lg;
+}
+
+.card {
+  box-shadow: $box-shadow-lg;
+}
+
+.modal-footer {
+  background-color: $gray-100;
+}
+
+.modal-content {
+  box-shadow: $box-shadow-lg;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/zephyr/font.css
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/zephyr/font.css	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/zephyr/font.css	(revision 3762)
@@ -0,0 +1,21 @@
+@font-face {
+  font-family: 'Inter';
+  font-style: normal;
+  font-weight: 400;
+  font-display: swap;
+  src: url(fonts/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuLyfMZs.woff) format('woff');
+}
+@font-face {
+  font-family: 'Inter';
+  font-style: normal;
+  font-weight: 500;
+  font-display: swap;
+  src: url(fonts/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuI6fMZs.woff) format('woff');
+}
+@font-face {
+  font-family: 'Inter';
+  font-style: normal;
+  font-weight: 700;
+  font-display: swap;
+  src: url(fonts/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuFuYMZs.woff) format('woff');
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/simplex/font.css
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/simplex/font.css	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/simplex/font.css	(revision 3762)
@@ -0,0 +1,16 @@
+@font-face {
+  font-family: 'Open Sans';
+  font-style: normal;
+  font-weight: 400;
+  font-stretch: normal;
+  font-display: swap;
+  src: url(fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0C4k.woff) format('woff');
+}
+@font-face {
+  font-family: 'Open Sans';
+  font-style: normal;
+  font-weight: 700;
+  font-stretch: normal;
+  font-display: swap;
+  src: url(fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1y4k.woff) format('woff');
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/simplex/_variables.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/simplex/_variables.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/simplex/_variables.scss	(revision 3762)
@@ -0,0 +1,106 @@
+// Simplex 5.2.2
+// Bootswatch
+
+$theme: "simplex" !default;
+
+//
+// Color system
+//
+
+$white:    #fff !default;
+$gray-100: #f8f9fa !default;
+$gray-200: #ddd !default;
+$gray-300: #ccc !default;
+$gray-400: #bbb !default;
+$gray-500: #adb5bd !default;
+$gray-600: #777 !default;
+$gray-700: #444 !default;
+$gray-800: #373a3c !default;
+$gray-900: #212529 !default;
+$black:    #000 !default;
+
+$blue:    #007bff !default;
+$indigo:  #6610f2 !default;
+$purple:  #9b479f !default;
+$pink:    #e83e8c !default;
+$red:     #d9230f !default;
+$orange:  #d9831f !default;
+$yellow:  #ffc107 !default;
+$green:   #469408 !default;
+$teal:    #20c997 !default;
+$cyan:    #029acf !default;
+
+$primary:       $red !default;
+$secondary:     $white !default;
+$success:       $green !default;
+$info:          $cyan !default;
+$warning:       $orange !default;
+$danger:        $purple !default;
+$light:         $white !default;
+$dark:          $gray-800 !default;
+
+$min-contrast-ratio:   2.8 !default;
+
+// Body
+
+$body-bg:                   mix($white, $black, 99%) !default;
+
+$enable-shadows: true !default;
+
+// Fonts
+
+// stylelint-disable-next-line value-keyword-case
+$font-family-sans-serif:      "Open Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !default;
+
+// Dropdowns
+
+$dropdown-link-hover-color:         $white !default;
+$dropdown-link-hover-bg:            $primary !default;
+
+// Navs
+
+$nav-link-padding-y:                .9rem !default;
+$nav-link-disabled-color:           $gray-400 !default;
+$nav-tabs-border-color:             mix($white, $black, 93.5%) !default;
+
+// Navbar
+
+$navbar-dark-color:                 rgba($white, .75) !default;
+$navbar-dark-hover-color:           $white !default;
+
+// Pagination
+
+$pagination-border-color:           $nav-tabs-border-color !default;
+$pagination-hover-color:            $white !default;
+$pagination-hover-bg:               $primary !default;
+$pagination-hover-border-color:     $primary !default;
+$pagination-disabled-color:         $gray-400 !default;
+$pagination-disabled-border-color:  $pagination-border-color !default;
+
+// Cards
+
+$card-border-color:                 $nav-tabs-border-color !default;
+
+// Popovers
+
+$popover-border-color:              $nav-tabs-border-color !default;
+
+// Modals
+
+$modal-content-border-color:        $nav-tabs-border-color !default;
+$modal-header-border-color:         $nav-tabs-border-color !default;
+
+// Progress bars
+
+$progress-bar-color:                $primary !default;
+
+// List group
+
+$list-group-border-color:           $nav-tabs-border-color !default;
+$list-group-disabled-bg:            $nav-tabs-border-color !default;
+
+// Breadcrumbs
+
+$breadcrumb-padding-y:              .375rem !default;
+$breadcrumb-padding-x:              .75rem !default;
+$breadcrumb-border-radius:          .25rem !default;
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/simplex/_bootswatch.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/simplex/_bootswatch.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/simplex/_bootswatch.scss	(revision 3762)
@@ -0,0 +1,143 @@
+// Simplex 5.2.2
+// Bootswatch
+
+
+// Variables
+
+$web-font-path: "https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap" !default;
+@if $web-font-path {
+  @import url($web-font-path);
+}
+
+:root {
+  color-scheme: light;
+}
+
+// Mixins
+
+@mixin btn-shadow($color){
+  @include gradient-y-three-colors(tint-color($color, 6%), $color, 6%, shade-color($color, 6%));
+  filter: none;
+  border: 1px solid shade-color($color, 13%);
+}
+
+// Navbar
+
+.navbar {
+  border-style: solid;
+  border-width: 1px;
+
+  &-fixed-top {
+    border-width: 0 0 1px;
+  }
+
+  &-fixed-bottom {
+    border-style: solid;
+    border-top-width: 1px 0 0 0;
+  }
+
+  &.bg-primary {
+    background-color: $primary !important;
+    border-color: shade-color($primary, 13%) !important;
+  }
+
+  &.bg-dark {
+    border-color: shade-color($dark, 13%) !important;
+  }
+
+  &.bg-light {
+    border-color: shade-color($white, 13%);
+  }
+}
+
+// Buttons
+
+.btn-primary,
+.btn-primary:hover {
+  @include btn-shadow($primary);
+}
+
+.btn-secondary,
+.btn-secondary:hover {
+  @include btn-shadow($secondary);
+}
+
+.btn-secondary:focus,
+.btn-secondary:not([disabled]):not(.disabled):active,
+.btn-secondary:not([disabled]):not(.disabled).active {
+  box-shadow: 0 0 0 .2rem rgba($gray-200, .5);
+}
+
+.btn-success,
+.btn-success:hover {
+  @include btn-shadow($success);
+}
+
+.btn-info,
+.btn-info:hover {
+  @include btn-shadow($info);
+}
+
+.btn-warning,
+.btn-warning:hover {
+  @include btn-shadow($warning);
+}
+
+.btn-danger,
+.btn-danger:hover {
+  @include btn-shadow($danger);
+}
+
+.btn-dark,
+.btn-dark:hover {
+  @include btn-shadow($dark);
+}
+
+.btn-light,
+.btn-light:hover {
+  @include btn-shadow($light);
+}
+
+.btn-outline-secondary {
+  color: $gray-400;
+  border-color: $gray-400;
+
+  &:hover {
+    color: $white;
+    background-color: $gray-400;
+  }
+}
+
+// Typography
+
+.text-secondary {
+  color: $gray-600 !important;
+}
+
+// Forms
+
+legend,
+label {
+  color: $headings-color;
+}
+
+// Navs
+
+.breadcrumb {
+  border: 1px solid shade-color($white, 13%);
+}
+
+.pagination {
+  .page-link:hover {
+    text-decoration: none;
+  }
+}
+
+// Indicators
+
+.badge {
+  &.bg-secondary,
+  &.bg-light {
+    color: $dark;
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/materia/font.css
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/materia/font.css	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/materia/font.css	(revision 3762)
@@ -0,0 +1,28 @@
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 300;
+  font-display: swap;
+  src: url(fonts/KFOlCnqEu92Fr1MmSU5vAA.woff) format('woff');
+}
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 400;
+  font-display: swap;
+  src: url(fonts/KFOmCnqEu92Fr1Me5g.woff) format('woff');
+}
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 500;
+  font-display: swap;
+  src: url(fonts/KFOlCnqEu92Fr1MmEU9vAA.woff) format('woff');
+}
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 700;
+  font-display: swap;
+  src: url(fonts/KFOlCnqEu92Fr1MmWUlvAA.woff) format('woff');
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/materia/_variables.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/materia/_variables.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/materia/_variables.scss	(revision 3762)
@@ -0,0 +1,123 @@
+// Materia 5.2.2
+// Bootswatch
+
+$theme: "materia" !default;
+
+//
+// Color system
+//
+
+$white:    #fff !default;
+$gray-100: #f8f9fa !default;
+$gray-200: #eee !default;
+$gray-300: #dee2e6 !default;
+$gray-400: #ced4da !default;
+$gray-500: #bbb !default;
+$gray-600: #666 !default;
+$gray-700: #444 !default;
+$gray-800: #222 !default;
+$gray-900: #212121 !default;
+$black:    #000 !default;
+
+$blue:    #2196f3 !default;
+$indigo:  #6610f2 !default;
+$purple:  #6f42c1 !default;
+$pink:    #e83e8c !default;
+$red:     #e51c23 !default;
+$orange:  #fd7e14 !default;
+$yellow:  #ff9800 !default;
+$green:   #4caf50 !default;
+$teal:    #20c997 !default;
+$cyan:    #9c27b0 !default;
+
+$primary:       $blue !default;
+$secondary:     $white !default;
+$success:       $green !default;
+$info:          $cyan !default;
+$warning:       $yellow !default;
+$danger:        $red !default;
+$light:         $gray-100 !default;
+$dark:          $gray-800 !default;
+
+$min-contrast-ratio:   2.15 !default;
+
+$enable-gradients: true !default;
+
+// Body
+
+$body-color:    $gray-700 !default;
+
+// Fonts
+
+// stylelint-disable-next-line value-keyword-case
+$font-family-sans-serif:    Roboto, -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Arial, sans-serif !default;
+$font-size-base:            1rem !default;
+$font-weight-base:          400 !default;
+
+// Buttons
+
+$input-btn-padding-y:       .8rem !default;
+$input-btn-padding-x:       1rem !default;
+
+// Forms
+
+$input-padding-y:                1rem !default;
+$input-padding-x:                0 !default;
+$input-padding-y-sm:             0 !default;
+$input-padding-x-sm:             0 !default;
+$input-padding-y-lg:             ($font-size-base * 1.25) !default;
+$input-padding-x-lg:             0 !default;
+$input-bg:                       transparent !default;
+$input-disabled-bg:              transparent !default;
+$input-color:                    $gray-600 !default;
+$input-border-color:             transparent !default;
+$input-border-width:             0 !default;
+$input-border-radius:            0 !default;
+$input-border-radius-lg:         0 !default;
+$input-border-radius-sm:         0 !default;
+$input-placeholder-color:        rgba(0, 0, 0, .4) !default;
+$input-group-addon-bg:           transparent !default;
+
+// Navs
+
+$nav-link-disabled-color:       $gray-500 !default;
+$nav-tabs-border-color:         transparent !default;
+
+// Navbar
+
+$navbar-padding-y:                  1rem !default;
+$navbar-dark-color:                 rgba($white, .75) !default;
+$navbar-dark-hover-color:           $white !default;
+
+// Cards
+
+$card-border-width:                 0 !default;
+$card-border-color:                 transparent !default;
+
+// Tooltips
+
+$tooltip-bg:                        $gray-700 !default;
+
+// Modals
+
+$modal-content-border-color:        transparent !default;
+
+// Progress bars
+
+$progress-height:               .375rem !default;
+$progress-border-radius:        0 !default;
+
+// Close
+
+$btn-close-color:            $white !default;
+$btn-close-opacity:          .6 !default;
+$btn-close-hover-opacity:    1 !default;
+
+
+// Box shadows
+$enable-shadows: true !default;
+$btn-box-shadow: 0 1px 4px mix($white, $black, 60%) !default;
+$btn-active-box-shadow: 2px 2px 4px mix($white, $black, 60%) !default;
+$btn-focus-box-shadow: 0 0 0 2px mix($white, $black, 40%) !default;
+$input-box-shadow: inset 0 -1px 0 mix($white, $black, 86.7%) !default;
+$input-focus-box-shadow: inset 0 -2px 0 $primary  !default;
\ No newline at end of file
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/materia/_bootswatch.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/materia/_bootswatch.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/materia/_bootswatch.scss	(revision 3762)
@@ -0,0 +1,656 @@
+// Materia 5.2.2
+// Bootswatch
+
+
+// Variables
+
+$web-font-path: "https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&display=swap" !default;
+@if $web-font-path {
+  @import url($web-font-path);
+}
+
+:root {
+  color-scheme: light;
+}
+
+// Mixins
+
+@mixin ripple($color) {
+  position: relative;
+
+  &::before {
+    position: absolute;
+    top: 0;
+    left: 0;
+    display: block;
+    width: 100%;
+    height: 100%;
+    margin-left: 0;
+    pointer-events: none;
+    content: "";
+    background-position: 50%;
+    background-size: 1000% 1000%;
+    border: none;
+    opacity: 0;
+    transition: background .5s, opacity 1s;
+    @include gradient-radial($color 10%, transparent 10.01%);
+  }
+
+  &:active::before {
+    background-size: 0 0;
+    opacity: .2;
+    transition: none;
+  }
+
+  &.disabled,
+  &[disabled] {
+    &::before {
+      display: none;
+    }
+  }
+}
+
+@mixin btn($class,$bg,$color) {
+  .btn-#{$class} {
+    &:focus {
+      background-color: $bg;
+      box-shadow: $btn-focus-box-shadow;
+    }
+
+    &:hover,
+    &:active:hover {
+      background-color: shade-color($bg, 12%);
+    }
+
+    &:active {
+      box-shadow: $btn-active-box-shadow;
+    }
+
+    @include ripple($color);
+  }
+
+  .btn-outline-#{$class} {
+    @include ripple($color);
+  }
+}
+
+.dropdown-toggle::after,
+.dropup .dropdown-toggle::after,
+.dropstart .dropdown-toggle::after,
+.dropend .dropdown-toggle::after {
+  border-width: 4px;
+}
+
+// Navbar
+
+.navbar {
+  border: none;
+  box-shadow: 0 1px 2px rgba($black, .3);
+
+  &-brand {
+    font-size: 24px;
+  }
+
+  &-nav .nav-link {
+    padding-top: .9rem;
+    padding-bottom: .9rem;
+  }
+
+  &.bg-dark,
+  &.bg-primary {
+    input[type="search"],
+    input[type="text"],
+    input[type="password"],
+    input[type="email"],
+    input[type="number"],
+    input[type="tel"] {
+      color: $white;
+      box-shadow: inset 0 -1px 0 rgba($white, .5);
+
+      &:focus {
+        box-shadow: inset 0 -2px 0 $white;
+      }
+
+      &::placeholder {
+        color: rgba($white, .5);
+      }
+    }
+  }
+}
+
+// Buttons
+
+@include btn(primary, $primary, $white);
+@include btn(secondary, $secondary, $gray-500);
+@include btn(success, $success, $white);
+@include btn(info, $info, $white);
+@include btn(warning, $warning, $white);
+@include btn(danger, $danger, $white);
+@include btn(dark, $dark, $white);
+@include btn(light, $light, $white);
+
+.btn {
+  text-transform: uppercase;
+  border: none;
+  box-shadow: $btn-box-shadow;
+  transition: color .4s, background-color .4s, border-color .4s, box-shadow .4s;
+
+  &-link {
+    color: $link-color;
+    box-shadow: none;
+
+    &:hover,
+    &:focus {
+      color: $link-hover-color;
+      text-decoration: $link-hover-decoration;
+      -webkit-text-decoration: $link-hover-decoration;
+      -moz-text-decoration: $link-hover-decoration;
+      -ms-text-decoration: $link-hover-decoration;
+      -o-text-decoration: $link-hover-decoration;
+      box-shadow: none;
+    }
+
+    &.disabled, // Although btn-link is intended for buttons, which want to look like link, I include here a.disable for the sake of consistency
+    &[disabled],
+    fieldset[disabled] & {
+      &:hover,
+      &:active:hover {
+        color: $btn-link-disabled-color;
+        text-decoration: none;
+      }
+    }
+  }
+
+  &-secondary {
+    &.disabled,
+    &[disabled],
+    fieldset[disabled] & {
+      color: rgba($black, .4);
+      background-color: rgba($black, .1);
+      opacity: 1;
+
+      &:hover,
+      &:focus {
+        background-color: rgba($black, .1);
+      }
+    }
+  }
+
+  &-outline-secondary {
+    color: $gray-300;
+    border-color: $gray-200;
+  }
+
+  &-warning {
+    color: $white;
+  }
+}
+
+.btn-group {
+  .btn + .btn,
+  .btn + .btn-group,
+  .btn-group + .btn,
+  .btn-group + .btn-group {
+    margin-left: 0;
+  }
+
+  &-vertical {
+    > .btn + .btn,
+    > .btn + .btn-group,
+    > .btn-group + .btn,
+    > .btn-group + .btn-group {
+      margin-top: 0;
+    }
+  }
+
+  .btn + .btn,
+  .btn + .btn-group > .dropdown-toggle {
+    box-shadow: 1px 1px 4px rgba($black, .4);
+  }
+}
+
+.border-secondary {
+  border: 1px solid mix($white, $black, 86.7%) !important;
+}
+
+// Typography
+
+body,
+input,
+button {
+  letter-spacing: .1px;
+}
+
+p {
+  margin: 0 0 1em;
+}
+
+.text-secondary {
+  color: $gray-500 !important;
+}
+
+// Tables
+
+.table-hover {
+  > tbody > tr,
+  > tbody > tr > th,
+  > tbody > tr > td {
+    transition: background-color .2s, color .2s;
+  }
+}
+
+.thead-inverse th {
+  color: $white;
+  background-color: $primary;
+}
+
+// Forms
+
+.col-form-label {
+  font-size: 16px;
+
+  &-sm {
+    font-size: $font-size-sm;
+  }
+
+  &-lg {
+    font-size: $font-size-lg;
+  }
+}
+
+textarea,
+textarea.form-control,
+input.form-control,
+input[type="text"],
+input[type="password"],
+input[type="email"],
+input[type="number"],
+[type="text"].form-control,
+[type="password"].form-control,
+[type="email"].form-control,
+[type="tel"].form-control,
+[contenteditable].form-control {
+  box-shadow: $input-box-shadow;
+  transition: box-shadow .2s;
+
+  &:focus {
+    box-shadow: $input-focus-box-shadow;
+  }
+
+  &[disabled],
+  &[readonly] {
+    border-bottom: 1px dotted mix($white, $black, 86.7%);
+    box-shadow: none;
+  }
+
+  &[disabled],
+  &[disabled]::placeholder {
+    color: mix($white, $black, 86.7%);
+  }
+}
+
+select,
+select.form-control {
+  padding: .5rem 0;
+  background-image: escape-svg(url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 4'><path fill='#{$gray-600}' d='M8 0 4 4 0 0z'/></svg>"));
+  background-repeat: no-repeat;
+  background-position: right center;
+  background-size: 8px 4px;
+  box-shadow: $input-box-shadow;
+  appearance: none;
+  -webkit-appearance: none;
+  -moz-appearance: none;
+  -ms-appearance: none;
+  -o-appearance: none;
+
+  &.input {
+    &-sm {
+      font-size: $font-size-sm;
+    }
+
+    &-lg {
+      font-size: $font-size-lg;
+    }
+  }
+
+  &:focus {
+    background-image: escape-svg(url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 4'><path fill='#{$gray-900}' d='M8 0 4 4 0 0z'/></svg>"));
+    box-shadow: $input-focus-box-shadow;
+  }
+
+  &[multiple] {
+    background: none;
+  }
+}
+
+.form-check-input {
+  width: 1.25em;
+  height: 1.25em;
+  margin-top: 1px;
+  border: 2px solid $gray-400;
+
+  &:checked[type="radio"] {
+    background-image: escape-svg(url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='2' fill='#{$blue}' stroke='#{$white}'/></svg>")), var(--bs-gradient);
+    background-size: 1.8em;
+  }
+}
+
+.form-switch {
+  .form-check-input {
+    position: relative;
+    height: .8em;
+    margin-top: .29em;
+    background-color: $gray-400;
+    background-image: none;
+    border: none;
+
+    &:focus {
+      box-shadow: none;
+    }
+
+    &::before {
+      position: absolute;
+      top: -.2em;
+      left: -.2em;
+      width: 1.2em;
+      height: 1.2em;
+      content: "";
+      background-color: $white;
+      border-radius: 50%;
+      box-shadow: 0 1px 4px rgba($black, .3);
+      transition: left .15s ease-in-out;
+    }
+
+    &::after {
+      position: absolute;
+      top: -.2em;
+      left: -.2em;
+      z-index: -1;
+      width: 1.2em;
+      height: 1.2em;
+      content: "";
+      border-radius: 50%;
+      box-shadow: 0 0 0 9px rgba($black, .05);
+      transition: left .15s ease-in-out, transform .15s ease-in-out, box-shadow .15s ease-in-out;
+      transform: scale(0);
+    }
+
+    &:hover:not(.disabled),
+    &:focus:not(.disabled) {
+
+      &::after {
+        transform: scale(.9);
+      }
+    }
+
+    &:focus:not(.disabled) {
+      &::after {
+        box-shadow: 0 0 0 9px rgba($black, .1);
+      }
+    }
+
+    &:checked {
+      background-color: rgba($primary, .3);
+
+      &::before {
+        left: calc(100% - .8em);
+        background-color: rgba($primary, 1);
+      }
+
+      &::after {
+        left: calc(100% - .8em);
+        box-shadow: 0 0 0 9px rgba($primary, .1);
+      }
+
+      &:hover:not(.disabled),
+      &:focus:not(.disabled) {
+        &::after {
+          transform: scale(.9);
+        }
+      }
+
+      &:focus:not(.disabled) {
+        &::after {
+          box-shadow: 0 0 0 9px rgba($primary, .2);
+        }
+      }
+    }
+  }
+}
+
+.form-check:not(.form-switch) {
+  .form-check-input {
+    &:checked[type="checkbox"] {
+      background-image: escape-svg(url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path fill='none' stroke='#{$white}' stroke-width='2' d='m6 10 3 3 6-6'/></svg>")), var(--bs-gradient);
+      background-size: 1.6em;
+    }
+  }
+}
+
+.has-warning {
+  input:not([type="checkbox"]),
+  .form-control,
+  input.form-control[readonly],
+  input[type="text"][readonly],
+  [type="text"].form-control[readonly],
+  input:not([type="checkbox"]):focus,
+  .form-control:focus {
+    border-bottom: none;
+    box-shadow: inset 0 -2px 0 $warning;
+  }
+}
+
+.has-danger {
+  input:not([type="checkbox"]),
+  .form-control,
+  input.form-control[readonly],
+  input[type="text"][readonly],
+  [type="text"].form-control[readonly],
+  input:not([type="checkbox"]):focus,
+  .form-control:focus {
+    border-bottom: none;
+    box-shadow: inset 0 -2px 0 $danger;
+  }
+}
+
+.has-success {
+  input:not([type="checkbox"]),
+  .form-control,
+  input.form-control[readonly],
+  input[type="text"][readonly],
+  [type="text"].form-control[readonly],
+  input:not([type="checkbox"]):focus,
+  .form-control:focus {
+    border-bottom: none;
+    box-shadow: inset 0 -2px 0 $success;
+  }
+}
+
+// Remove the Bootstrap feedback styles for input addons
+.input-group-addon {
+  .has-warning &,
+  .has-danger &,
+  .has-success & {
+    color: $input-color;
+    background-color: $input-group-addon-bg;
+    border-color: $input-group-addon-border-color;
+  }
+}
+
+.form-group-lg {
+  select,
+  select.form-control {
+    line-height: 1.5;
+  }
+}
+
+// Navs
+
+.nav-tabs {
+  .nav-item + .nav-item {
+    margin-left: 0;
+  }
+
+  .nav-link,
+  .nav-link:focus {
+    margin-right: 0;
+    color: $body-color;
+    background-color: transparent;
+    border: none;
+    box-shadow: inset 0 -1px 0 #ddd;
+    transition: color .2s, box-shadow .2s;
+
+    &:hover {
+      color: $primary;
+      background-color: transparent;
+      box-shadow: inset 0 -2px 0 $primary;
+    }
+  }
+
+  .nav-link.active,
+  .nav-link.active:focus {
+    color: $primary;
+    border: none;
+    box-shadow: inset 0 -2px 0 $primary;
+
+    &:hover {
+      color: $primary;
+      border: none;
+    }
+  }
+
+  .nav-link.disabled {
+    box-shadow: inset 0 -1px 0 #ddd;
+  }
+
+  &.nav-justified {
+    .nav-link,
+    .nav-link:hover,
+    .nav-link:focus,
+    .nav-link.active,
+    .nav-link.active:hover,
+    .nav-link.active:focus {
+      border: none;
+    }
+  }
+
+  .dropdown-menu {
+    margin-top: 0;
+  }
+}
+
+.dropdown-menu {
+  margin-top: 0;
+  border: none;
+  box-shadow: 0 1px 4px rgba(0, 0, 0, .3);
+}
+
+// Indicators
+
+.alert {
+  padding-right: 2.5rem;
+  border: none;
+
+  &,
+  h1,
+  h2,
+  h3,
+  h4,
+  h5,
+  h6 {
+    color: $white;
+  }
+
+  @each $color, $value in $theme-colors {
+    &-#{$color} {
+      @if $enable-gradients {
+        background: $value linear-gradient(180deg, mix($body-bg, $value, 15%), $value) repeat-x;
+      } @else {
+        background-color: $value;
+      }
+    }
+  }
+
+  a:not(.btn),
+  .alert-link {
+    font-weight: 700;
+    color: $white;
+  }
+
+  &-secondary,
+  &-light {
+    &,
+    a:not(.btn),
+    .alert-link {
+      color: $body-color;
+    }
+  }
+}
+
+.badge {
+  &.bg-secondary,
+  &.bg-light {
+    color: $dark;
+  }
+}
+
+// Containers
+
+.card {
+  box-shadow: 0 1px 4px rgba(0, 0, 0, .4);
+
+  &.border-primary,
+  &.border-secondary,
+  &.border-success,
+  &.border-info,
+  &.border-warning,
+  &.border-danger,
+  &.border-light,
+  &.border-dark {
+    border-width: 1px;
+  }
+}
+
+.list-group {
+  &-item-action.active {
+    h1,
+    h2,
+    h3,
+    h4,
+    h5,
+    h6 {
+      color: $white;
+    }
+  }
+}
+
+.modal-content {
+  border-radius: .2rem;
+  box-shadow: 0 6px 36px rgba(0, 0, 0, .3);
+}
+
+.modal,
+.toast,
+.offcanvas {
+  .btn-close {
+    background-image: escape-svg(url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$black}'><path d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/></svg>"));
+  }
+}
+
+.popover {
+  border: none;
+  box-shadow: 0 1px 4px rgba(0, 0, 0, .3);
+}
+
+.carousel {
+  &-caption {
+    h1,
+    h2,
+    h3,
+    h4,
+    h5,
+    h6 {
+      color: inherit;
+    }
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/morph/_bootswatch.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/morph/_bootswatch.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/morph/_bootswatch.scss	(revision 3762)
@@ -0,0 +1,481 @@
+// Morph 5.2.2
+// Bootswatch
+
+
+// Variables
+
+$web-font-path: "https://fonts.googleapis.com/css2?family=Nunito:wght@400;600;700&display=swap" !default;
+@if $web-font-path {
+  @import url($web-font-path);
+}
+
+$btn-box-shadow-inset: inset 2px 3px 6px rgba($black, .2), inset -3px -2px 6px rgba($white, .2) !default;
+
+:root {
+  color-scheme: light;
+}
+
+// Mixins
+
+@mixin shadow($shadow: $box-shadow) {
+  background-color: $gray-200;
+  border: none;
+  box-shadow: $shadow;
+  transition: background-color .15s ease-in-out, border .15s ease-in-out, box-shadow .15s ease-in-out, color .15s ease-in-out;
+}
+
+@mixin shadow-outline($shadow: $box-shadow) {
+  position: absolute;
+  top: -.5rem;
+  right: -.5rem;
+  bottom: -.5rem;
+  left: -.5rem;
+  z-index: -1;
+  content: "";
+  background-color: $body-bg;
+  border: 1px solid rgba($white, .1);
+  box-shadow: $shadow;
+  transition: background-color .15s ease-in-out, border .15s ease-in-out, box-shadow .15s ease-in-out, color .15s ease-in-out;
+}
+
+// Buttons
+
+.btn {
+  position: relative;
+  color: $gray-700;
+  border-radius: $btn-border-radius;
+  @include shadow();
+
+  &:focus {
+    color: $gray-700;
+  }
+
+  &:hover,
+  &:focus,
+  &:active,
+  &:active:focus {
+    @include shadow();
+    color: $gray-700;
+  }
+
+  &:active,
+  &:active:focus {
+    border-color: transparent;
+    box-shadow: $btn-box-shadow-inset;
+  }
+
+  @each $color, $value in $theme-colors {
+    &-#{$color} {
+
+      &:active,
+      &:active:focus {
+        @if ($color == secondary or $color == light) {
+          color: $gray-700;
+          background-color: $gray-200;
+        } @else {
+          color: $white;
+          background-color: $value;
+        }
+      }
+    }
+  }
+
+  &-link {
+    font-weight: $btn-font-weight;
+
+    &:hover,
+    &:active,
+    &:active:focus {
+      color: $dark;
+    }
+  }
+
+  &.disabled {
+    color: $gray-700;
+    background-color: $gray-200;
+    box-shadow: 2px 2px 5px rgba($black, .1), -2px -2px 5px rgba($white, .5);
+  }
+}
+
+.btn-outline {
+  @each $color, $value in $theme-colors {
+    &-#{$color} {
+      background-color: $value;
+      border: none;
+      box-shadow: 5px 5px 10px rgba($black, .2), -5px -5px 10px rgba($white, .1);
+
+      @if ($color == secondary or $color == light) {
+        color: $gray-700;
+      } @else {
+        color: $white;
+      }
+
+      &:hover,
+      &:focus {
+        background-color: $value;
+        border: none;
+        box-shadow: 5px 5px 10px rgba($black, .2), -5px -5px 10px rgba($white, .1);
+
+        @if ($color == secondary or $color == light) {
+          color: $gray-700;
+        } @else {
+          color: $white;
+        }
+      }
+
+      &:active,
+      &:active:focus {
+        background-color: $value;
+        border: none;
+        box-shadow: inset 2px 3px 6px rgba($black, .1), inset -3px -2px 6px rgba($white, .1);
+
+        @if ($color == secondary or $color == light) {
+          color: $gray-700;
+        } @else {
+          color: $white;
+        }
+      }
+    }
+  }
+}
+
+.btn-group,
+.btn-group-vertical {
+  @include shadow();
+  border: none;
+  border-radius: $btn-border-radius;
+
+  .btn,
+  .btn-group {
+    margin: 0;
+    border: none;
+    box-shadow: none;
+
+    &:hover,
+    &:active,
+    &:focus,
+    &:active:focus {
+      border: none;
+    }
+  }
+}
+
+.btn-group {
+
+  > .btn:nth-child(n + 3),
+  > :not(.btn-check) + .btn,
+  > .btn-group:not(:first-child) > .btn {
+    border-left: 1px solid $border-color;
+    border-top-left-radius: 0;
+    border-bottom-left-radius: 0;
+
+    &:hover,
+    &:active,
+    &:active:focus {
+      border-left: 1px solid $border-color;
+    }
+  }
+
+  > .btn:not(:last-child):not(.dropdown-toggle),
+  > .btn-group:not(:last-child) > .btn {
+    border-top-right-radius: 0;
+    border-bottom-right-radius: 0;
+  }
+}
+
+.btn-group-vertical {
+  border-radius: 1rem;
+
+  .btn {
+    border-radius: 1rem;
+
+    &:hover,
+    &:active,
+    &:focus,
+    &:active:focus {
+      border-radius: 1rem;
+    }
+  }
+
+  > .btn:nth-child(n + 3),
+  > :not(.btn-check) + .btn,
+  > .btn-group:not(:first-child) > .btn {
+    border-top: 1px solid rgba($black, .05);
+    border-top-left-radius: 0;
+    border-top-right-radius: 0;
+
+    &:hover,
+    &:active,
+    &:active:focus {
+      border-top: 1px solid rgba($black, .05);
+      border-top-left-radius: 0;
+      border-top-right-radius: 0;
+    }
+  }
+
+  > .btn:not(:last-child):not(.dropdown-toggle),
+  > .btn-group:not(:last-child) > .btn {
+    border-bottom-right-radius: 0;
+    border-bottom-left-radius: 0;
+
+    &:hover,
+    &:active,
+    &:active:focus {
+      border-bottom-right-radius: 0;
+      border-bottom-left-radius: 0;
+    }
+  }
+}
+
+.btn-check:checked + .btn,
+.btn-check:active + .btn {
+  box-shadow: inset 2px 3px 6px rgba($black, .2);
+
+  @each $color, $value in $theme-colors {
+    &-#{$color} {
+      background-color: $value;
+
+      .btn-check:checked + &,
+      .btn-check:active + & {
+        @if $color == secondary {
+          color: $gray-700;
+        } @else {
+          color: $value;
+        }
+      }
+    }
+  }
+}
+
+.btn-check:not(:checked) + .btn,
+.btn-check:not(:checked) + .btn:active {
+  color: $gray-700;
+  background-color: $gray-200;
+}
+
+.btn-check:checked ~ .btn-check:active + .btn,
+.btn-check:checked ~ .btn-check:checked + .btn {
+  box-shadow: inset 0 3px 6px rgba($black, .2);
+}
+
+// Navs
+
+.dropdown-menu {
+  backdrop-filter: blur(3px);
+  -webkit-backdrop-filter: blur(3px);
+  -moz-backdrop-filter: blur(3px);
+  -ms-backdrop-filter: blur(3px);
+  -o-backdrop-filter: blur(3px);
+}
+
+.nav-tabs {
+  @include shadow();
+  border-radius: $border-radius;
+
+  .nav-item {
+    box-shadow: 1px 0 $border-color;
+
+    &:first-child .nav-link {
+      border-top-left-radius: $border-radius;
+      border-bottom-left-radius: $border-radius;
+    }
+
+    &:last-child .nav-link {
+      border-top-right-radius: $border-radius;
+      border-bottom-right-radius: $border-radius;
+    }
+  }
+
+  .nav-link.active,
+  .nav-item.show .nav-link {
+    box-shadow: inset 0 3px 6px rgba($black, .2);
+  }
+}
+
+.nav-pills {
+  @include shadow();
+  padding: 1rem;
+  border-radius: $border-radius;
+
+
+  .nav-link.active {
+    box-shadow: inset 0 3px 6px rgba($black, .2);
+  }
+}
+
+.breadcrumb {
+  @include shadow();
+  border-radius: $border-radius;
+}
+
+.pagination {
+  @include shadow();
+  justify-content: center;
+  -webkit-justify-content: center;
+  border-radius: $border-radius;
+}
+
+// Forms
+
+.input-group {
+  background-color: $gray-100;
+  border-radius: $border-radius;
+  box-shadow: $box-shadow-inset;
+
+  > .form-control {
+    padding-right: 0;
+    padding-left: 0;
+    background: none;
+    box-shadow: none;
+  }
+
+  .input-group-text {
+    background: none;
+  }
+}
+
+.form-range {
+  &::-webkit-slider-runnable-track {
+    box-shadow: inset 1px 1px 4px rgba($black, .15);
+  }
+
+  &::-webkit-slider-thumb,
+  &:focus::-webkit-slider-thumb {
+    box-shadow: 1px 1px 3px rgba($black, .2), inset 2px 2px 8px rgba(shade-color($form-range-thumb-bg, 50%), .1);
+  }
+}
+
+.form-check-input {
+  background-color: $gray-400;
+  border: none;
+  box-shadow: inset 1px 1px 7px rgba($black, .2);
+
+  &:focus {
+    border: none;
+    box-shadow: none;
+  }
+
+  &:active {
+    filter: none;
+  }
+
+  &:checked {
+    background-color: $primary;
+    box-shadow: inset 1px 1px 7px rgba($black, .2);
+  }
+}
+
+.form-control {
+  &::file-selector-button {
+    box-shadow: 2px 2px 5px rgba($black, .2), inset 3px 3px 10px rgba(shade-color($form-range-thumb-bg, 50%), .1);
+  }
+}
+
+.form-select:not([multiple]) {
+  position: relative;
+  box-shadow: $box-shadow;
+}
+
+// Indicators
+
+.alert {
+  box-shadow: $dropdown-box-shadow;
+  backdrop-filter: blur(3px);
+  -webkit-backdrop-filter: blur(3px);
+  -moz-backdrop-filter: blur(3px);
+  -ms-backdrop-filter: blur(3px);
+  -o-backdrop-filter: blur(3px);
+
+  @each $color, $value in $theme-colors {
+    &-#{$color} {
+      background-color: rgba($value, .75);
+      box-shadow: $box-shadow-lg, inset 1px 1px 3px rgba(tint-color($value, 80%), .4), inset -5px -5px 20px rgba(shade-color($value, 80%), .05);
+    }
+  }
+}
+
+.badge {
+  &.bg-secondary,
+  &.bg-light {
+    color: $gray-700;
+  }
+}
+
+.tooltip {
+  &.show {
+    opacity: 1;
+  }
+
+  &-inner,
+  .arrow {
+    box-shadow: $dropdown-box-shadow;
+    backdrop-filter: blur(3px);
+    -webkit-backdrop-filter: blur(3px);
+    -moz-backdrop-filter: blur(3px);
+    -ms-backdrop-filter: blur(3px);
+    -o-backdrop-filter: blur(3px);
+  }
+}
+
+.popover,
+.toast,
+.modal-content {
+  box-shadow: $dropdown-box-shadow;
+  backdrop-filter: blur(3px);
+  -webkit-backdrop-filter: blur(3px);
+  -moz-backdrop-filter: blur(3px);
+  -ms-backdrop-filter: blur(3px);
+  -o-backdrop-filter: blur(3px);
+}
+
+.progress {
+  box-shadow: inset 2px 4px 6px rgba(shade-color($body-bg, 50%), .2), inset -3px -2px 5px rgba($white, .8);
+}
+
+.progress-bar {
+  box-shadow: 2px 2px 5px rgba($black, .2);
+
+  &:first-child {
+    border-top-left-radius: $border-radius-pill;
+    border-bottom-left-radius: $border-radius-pill;
+  }
+
+  &:last-child {
+    border-top-right-radius: $border-radius-pill;
+    border-bottom-right-radius: $border-radius-pill;
+  }
+}
+
+// Containers
+
+.card {
+  box-shadow: inset 2px 2px 6px rgba(shade-color($body-bg, 50%), .2), inset -3px -2px 4px rgba($white, .2);
+
+  @each $color, $value in $theme-colors {
+    &-#{$color} {
+      box-shadow: inset 2px 2px 6px  rgba(shade-color($value, 80%), .05), inset -3px -2px 4px rgba(tint-color($value, 80%), .2);
+    }
+  }
+
+  &-header {
+    border-bottom: 1px solid $border-color;
+  }
+
+  h1,
+  h2,
+  h3,
+  h4,
+  h5,
+  h6 {
+    color: inherit;
+  }
+}
+
+.list-group {
+  background-color: $card-bg;
+  box-shadow: inset 2px 2px 6px rgba(shade-color($body-bg, 50%), .2), inset -3px -2px 4px rgba($white, .2);
+}
+
+.list-group-item {
+  background-color: transparent;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/morph/font.css
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/morph/font.css	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/morph/font.css	(revision 3762)
@@ -0,0 +1,21 @@
+@font-face {
+  font-family: 'Nunito';
+  font-style: normal;
+  font-weight: 400;
+  font-display: swap;
+  src: url(fonts/XRXI3I6Li01BKofiOc5wtlZ2di8HDLshRTA.woff) format('woff');
+}
+@font-face {
+  font-family: 'Nunito';
+  font-style: normal;
+  font-weight: 600;
+  font-display: swap;
+  src: url(fonts/XRXI3I6Li01BKofiOc5wtlZ2di8HDGUmRTA.woff) format('woff');
+}
+@font-face {
+  font-family: 'Nunito';
+  font-style: normal;
+  font-weight: 700;
+  font-display: swap;
+  src: url(fonts/XRXI3I6Li01BKofiOc5wtlZ2di8HDFwmRTA.woff) format('woff');
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/morph/_variables.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/morph/_variables.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/morph/_variables.scss	(revision 3762)
@@ -0,0 +1,228 @@
+// Morph 5.2.2
+// Bootswatch
+
+$theme: "morph" !default;
+
+//
+// Color system
+//
+
+$white:    #fff !default;
+$gray-100: #f0f5fa !default;
+$gray-200: #d9e3f1 !default;
+$gray-300: #dee2e6 !default;
+$gray-400: #bed1e6 !default;
+$gray-500: #adb5bd !default;
+$gray-600: #7f8a99 !default;
+$gray-700: #7b8ab8 !default;
+$gray-800: #444b40 !default;
+$gray-900: #212529 !default;
+$black:    #000 !default;
+
+$blue:    #378dfc !default;
+$indigo:  #6610f2 !default;
+$purple:  #5b62f4 !default;
+$pink:    #d63384 !default;
+$red:     #e52527 !default;
+$orange:  #fd7e14 !default;
+$yellow:  #ffc107 !default;
+$green:   #43cc29 !default;
+$teal:    #20c997 !default;
+$cyan:    #0dcaf0 !default;
+
+$primary:       $blue !default;
+$secondary:     $gray-200 !default;
+$success:       $green !default;
+$info:          $purple !default;
+$warning:       $yellow !default;
+$danger:        $red !default;
+$light:         $gray-100 !default;
+$dark:          $gray-900 !default;
+
+$min-contrast-ratio:   1.5 !default;
+
+$enable-shadows:              true !default;
+
+// Body
+
+$body-bg:                   $gray-200 !default;
+$body-color:                $gray-700 !default;
+
+// Links
+
+$link-color: darken($body-color, 20%) !default;
+
+// Components
+
+$border-width:                0 !default;
+$border-color:                rgba(darken($body-bg, 50%), .1) !default;
+
+$border-radius-pill:          50rem !default;
+
+$box-shadow:                  5px 5px 10px rgba(darken($body-bg, 50%), .2), -5px -5px 10px rgba($white, .4) !default;
+$box-shadow-sm:               0 .125rem .25rem rgba(darken($body-bg, 50%), .2) !default;
+$box-shadow-lg:               8px 8px 40px rgba(darken($body-bg, 90%), .15) !default;
+$box-shadow-inset:            inset 2px 2px 8px rgba(darken($body-bg, 50%), .3), inset -3px -2px 5px rgba($white, .8) !default;
+
+// Fonts
+
+// stylelint-disable-next-line value-keyword-case
+$font-family-sans-serif:      Nunito, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !default;
+
+$headings-color:              $link-color !default;
+
+$text-muted:                  lighten($body-color, 15%) !default;
+
+// Buttons + Forms
+
+$input-btn-padding-y:         1rem !default;
+$input-btn-padding-x:         1.5rem !default;
+
+// Buttons
+
+$btn-font-weight:             600 !default;
+
+$btn-padding-y-lg:            1.5rem !default;
+$btn-padding-x-lg:            2.25rem !default;
+
+$btn-box-shadow:              $box-shadow !default;
+
+$btn-border-radius:           $border-radius-pill !default;
+$btn-border-radius-sm:        $border-radius-pill !default;
+$btn-border-radius-lg:        $border-radius-pill !default;
+
+// Forms
+
+$form-label-font-weight:                $btn-font-weight !default;
+
+$input-bg:                              $gray-100 !default;
+
+$input-placeholder-color:               $text-muted !default;
+
+$form-switch-color:               $white !default;
+$form-switch-focus-color:         $form-switch-color !default;
+
+$form-select-indicator-color:       $body-color !default;
+$form-select-box-shadow:          $box-shadow-inset !default;
+
+$form-range-track-bg:             rgba(darken($body-bg, 50%), .15) !default;
+$form-range-thumb-bg:                      $gray-100 !default;
+$form-range-thumb-active-bg:               $form-range-thumb-bg !default;
+$form-range-thumb-disabled-bg:             $gray-200 !default;
+
+$form-file-button-bg:             $gray-100 !default;
+
+// Navs
+
+$nav-link-color:                    $body-color !default;
+$nav-link-hover-color:              $nav-link-color !default;
+$nav-link-disabled-color:           $text-muted !default;
+
+$nav-tabs-border-radius:            0 !default;
+$nav-tabs-link-active-color:        $white !default;
+$nav-tabs-link-active-bg:           $primary !default;
+
+// Navbar
+
+$navbar-dark-color:                 rgba($white, .75) !default;
+$navbar-dark-hover-color:           $white !default;
+$navbar-dark-active-color:          $navbar-dark-hover-color !default;
+$navbar-dark-disabled-color:        rgba($white, .25) !default;
+
+$navbar-light-color:                $body-color !default;
+$navbar-light-hover-color:          $link-color !default;
+$navbar-light-active-color:         $navbar-light-hover-color !default;
+$navbar-light-disabled-color:       $text-muted !default;
+
+// Dropdowns
+
+$dropdown-bg:                       rgba($gray-100, .8) !default;
+$dropdown-border-color:             transparent !default;
+$dropdown-box-shadow:               $box-shadow-lg, inset 1px 1px 3px rgba($white, .5), inset -5px -5px 20px rgba($black, .05) !default;
+
+$dropdown-link-color:               $gray-700 !default;
+$dropdown-link-hover-color:         $gray-800 !default;
+$dropdown-link-hover-bg:            transparent !default;
+
+// Pagination
+
+$pagination-padding-y:              1rem !default;
+$pagination-padding-x:              .75rem !default;
+$pagination-padding-y-sm:           .5rem !default;
+$pagination-padding-y-lg:           1.5rem !default;
+
+$pagination-color:                  $gray-700 !default;
+$pagination-bg:                     $body-bg !default;
+
+$pagination-active-color:           darken($pagination-color, 20%) !default;
+$pagination-active-bg:              transparent !default;
+
+$pagination-disabled-color:         $text-muted !default;
+
+$pagination-disabled-bg:            $pagination-bg !default;
+
+// Cards
+
+$card-spacer-y:                     1.5rem !default;
+$card-spacer-x:                     1.5rem !default;
+$card-cap-bg:                       transparent !default;
+$card-bg:                           lighten($body-bg, 3%) !default;
+
+// Tooltips
+
+$tooltip-color:                     $body-color !default;
+$tooltip-bg:                        $dropdown-bg !default;
+
+// Popovers
+
+$popover-bg:                        $dropdown-bg !default;
+
+$popover-header-bg:                 transparent !default;
+
+// Toasts
+
+$toast-background-color:            $dropdown-bg !default;
+$toast-border-width:                0 !default;
+
+$toast-header-color:                $body-color !default;
+$toast-header-background-color:     transparent !default;
+
+// Badges
+
+$badge-padding-y:                   .75em !default;
+$badge-padding-x:                   1.25em !default;
+
+// Modals
+
+$modal-content-bg:                  $dropdown-bg !default;
+
+// Progress bars
+
+$progress-height:                   1.5rem !default;
+$progress-border-radius:            $border-radius-pill !default;
+
+// List groups
+
+$list-group-bg:                     $card-bg !default;
+
+$list-group-hover-bg:               transparent !default;
+$list-group-active-color:           $link-color !default;
+$list-group-active-bg:              transparent !default;
+
+$list-group-disabled-color:         $text-muted !default;
+$list-group-disabled-bg:            transparent !default;
+
+$list-group-action-active-color:    $link-color !default;
+$list-group-action-active-bg:       transparent !default;
+
+// Breadcrumbs
+
+$breadcrumb-padding-y:              $pagination-padding-y !default;
+$breadcrumb-padding-x:              $pagination-padding-x !default;
+
+$breadcrumb-divider-color:          $text-muted !default;
+$breadcrumb-active-color:           $link-color !default;
+
+// Close
+
+$btn-close-color:            $headings-color !default;
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/cyborg/font.css
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/cyborg/font.css	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/cyborg/font.css	(revision 3762)
@@ -0,0 +1,14 @@
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 400;
+  font-display: swap;
+  src: url(fonts/KFOmCnqEu92Fr1Me5g.woff) format('woff');
+}
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 700;
+  font-display: swap;
+  src: url(fonts/KFOlCnqEu92Fr1MmWUlvAA.woff) format('woff');
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/cyborg/_variables.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/cyborg/_variables.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/cyborg/_variables.scss	(revision 3762)
@@ -0,0 +1,191 @@
+// Cyborg 5.2.2
+// Bootswatch
+
+$theme: "cyborg" !default;
+
+//
+// Color system
+//
+
+$white:    #fff !default;
+$gray-100: #f8f9fa !default;
+$gray-200: #e9ecef !default;
+$gray-300: #dee2e6 !default;
+$gray-400: #adafae !default;
+$gray-500: #888 !default;
+$gray-600: #555 !default;
+$gray-700: #282828 !default;
+$gray-800: #222 !default;
+$gray-900: #212529 !default;
+$black:    #000 !default;
+
+$blue:    #2a9fd6 !default;
+$indigo:  #6610f2 !default;
+$purple:  #6f42c1 !default;
+$pink:    #e83e8c !default;
+$red:     #c00 !default;
+$orange:  #fd7e14 !default;
+$yellow:  #f80 !default;
+$green:   #77b300 !default;
+$teal:    #20c997 !default;
+$cyan:    #93c !default;
+
+$primary:       $blue !default;
+$success:       $green !default;
+$info:          $cyan !default;
+$warning:       $yellow !default;
+$danger:        $red !default;
+
+$min-contrast-ratio:   2.25 !default;
+
+
+// Body
+
+// Body
+
+@function body-mix($weight) {
+    @return mix(#060606, $gray-400, $weight);
+}
+$body-bg:                   body-mix(100%) !default;
+$body-color:                body-mix(0%) !default;
+
+// Most defaults to cascade from body bg/color, but some
+// colors really want to a full contrast from the bg color
+$contrast-bg: color-contrast($body-bg) !default;
+$secondary:   body-mix(67%) !default;
+$light:       body-mix(33%) !default;
+$dark:        $body-color !default;
+
+
+// Fonts
+
+// stylelint-disable-next-line value-keyword-case
+$font-family-sans-serif:  Roboto, -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Arial, sans-serif !default;
+$h1-font-size:            4rem !default;
+$h2-font-size:            3rem !default;
+$h3-font-size:            2.5rem !default;
+$h4-font-size:            2rem !default;
+$h5-font-size:            1.5rem !default;
+$headings-color:          $white !default;
+
+// Tables
+
+$table-color:                   $contrast-bg !default;
+$table-accent-bg:               rgba($contrast-bg, .05) !default;
+$table-hover-bg:                rgba($contrast-bg, .075) !default;
+$table-border-color:            body-mix(50%) !default;
+$table-dark-bg:                 body-mix(16%) !default;
+$table-dark-border-color:       body-mix(23%) !default;
+
+$table-bg-scale:              0 !default;
+
+// Buttons
+
+$input-btn-padding-x:       1rem !default;
+
+// Forms
+
+$input-bg:                          $white !default;
+$input-disabled-bg:                 $body-color !default;
+
+$input-color:                       body-mix(85%) !default;
+$input-border-color:                $contrast-bg !default;
+$input-border-width:                0 !default;
+
+$input-group-addon-color:           $contrast-bg !default;
+$input-group-addon-bg:              body-mix(50%) !default;
+$input-group-addon-border-color:    transparent !default;
+
+$form-check-input-bg:                     $contrast-bg !default;
+$form-check-input-border:                 none !default;
+
+$form-file-button-color:          $contrast-bg !default;
+
+// Dropdowns
+
+$dropdown-bg:                    body-mix(50%) !default;
+$dropdown-divider-bg:            body-mix(67%) !default;
+$dropdown-link-color:            $contrast-bg !default;
+$dropdown-link-hover-color:      $contrast-bg !default;
+$dropdown-link-hover-bg:         $primary !default;
+
+// Navs
+
+$nav-tabs-border-color:                       $table-border-color !default;
+$nav-tabs-link-hover-border-color:            $nav-tabs-border-color !default;
+$nav-tabs-link-active-color:                  $contrast-bg !default;
+$nav-tabs-link-active-bg:                     $nav-tabs-border-color !default;
+$nav-tabs-link-active-border-color:           $nav-tabs-border-color !default;
+
+// Navbar
+
+$navbar-dark-hover-color:           $contrast-bg !default;
+
+// Pagination
+
+$pagination-color:                     $contrast-bg !default;
+$pagination-bg:                        body-mix(50%) !default;
+$pagination-border-color:              transparent !default;
+$pagination-hover-color:               $contrast-bg !default;
+$pagination-hover-bg:                  $primary !default;
+$pagination-hover-border-color:        $pagination-border-color !default;
+$pagination-disabled-bg:               $pagination-bg !default;
+$pagination-disabled-border-color:     $pagination-border-color !default;
+
+// Cards
+
+$card-bg:                           body-mix(50%) !default;
+
+// Tooltips
+
+$tooltip-bg:                        body-mix(50%) !default;
+$tooltip-opacity:                   1 !default;
+
+// Popovers
+
+$popover-bg:                        body-mix(50%) !default;
+
+// Toasts
+
+$toast-color:                       $contrast-bg !default;
+$toast-background-color:            body-mix(67%) !default;
+$toast-border-color:                body-mix(50%) !default;
+$toast-header-color:                $body-color !default;
+$toast-header-background-color:     $toast-background-color !default;
+$toast-header-border-color:         $toast-border-color !default;
+
+// Modals
+
+$modal-content-bg:                  body-mix(67%) !default;
+$modal-header-border-color:         body-mix(50%) !default;
+
+// Progress bars
+
+$progress-bg:                       body-mix(50%) !default;
+
+// List group
+
+$list-group-color:                  $contrast-bg !default;
+$list-group-bg:                     body-mix(67%) !default;
+$list-group-border-color:           body-mix(50%) !default;
+$list-group-hover-bg:               $primary !default;
+$list-group-disabled-bg:            body-mix(50%) !default;
+$list-group-action-color:           $contrast-bg !default;
+$list-group-action-active-bg:       $primary !default;
+
+// Breadcrumbs
+
+$breadcrumb-padding-y:              .375rem !default;
+$breadcrumb-padding-x:              .75rem !default;
+$breadcrumb-bg:                     body-mix(50%) !default;
+$breadcrumb-border-radius:          .25rem !default;
+
+// Close
+
+$btn-close-color:            $contrast-bg !default;
+$btn-close-opacity:          .6 !default;
+$btn-close-hover-opacity:    1 !default;
+
+// Code
+
+$pre-color:                         inherit !default;
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/cyborg/_bootswatch.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/cyborg/_bootswatch.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/cyborg/_bootswatch.scss	(revision 3762)
@@ -0,0 +1,147 @@
+// Cyborg 5.2.2
+// Bootswatch
+
+
+// Variables
+
+$web-font-path: "https://fonts.googleapis.com/css2?family=Roboto:wght@400;700&display=swap" !default;
+@if $web-font-path {
+  @import url($web-font-path);
+}
+
+:root {
+  color-scheme: dark;
+}
+
+// Navbar
+
+.navbar {
+  &.bg-primary {
+    border: 1px solid body-mix(50%);
+  }
+
+  &.bg-dark {
+    background-color: $body-bg !important;
+    border: 1px solid body-mix(50%);
+  }
+
+  &.bg-light {
+    background-color: body-mix(16%) !important;
+  }
+
+  &.fixed-top {
+    border-width: 0 0 1px;
+  }
+
+  &.fixed-bottom {
+    border-width: 1px 0 0;
+  }
+}
+
+// Buttons
+
+.btn {
+  @each $color, $value in $theme-colors {
+    &-#{$color} {
+      @if $enable-gradients {
+        background: $value linear-gradient(180deg, mix($contrast-bg, $value, 15%), $value) repeat-x;
+      } @else {
+        background-color: $value;
+      }
+    }
+  }
+}
+
+// Forms
+
+legend {
+  color: $contrast-bg;
+}
+
+.form-control {
+  background-clip: border-box;
+
+  &:disabled,
+  &[readonly] {
+    border-color: transparent;
+  }
+}
+
+// Navs
+
+.nav-tabs,
+.nav-pills {
+  .nav-link {
+    color: $contrast-bg;
+
+    &:hover {
+      background-color: body-mix(50%);
+    }
+
+    &.disabled,
+    &.disabled:hover {
+      color: $nav-link-disabled-color;
+      background-color: transparent;
+    }
+
+    &.active {
+      background-color: $primary;
+    }
+  }
+}
+
+.breadcrumb {
+  a {
+    color: $contrast-bg;
+  }
+}
+
+.pagination {
+  a:hover {
+    text-decoration: none;
+  }
+}
+
+// Indicators
+
+.alert {
+  color: $contrast-bg;
+  border: none;
+
+  a,
+  .alert-link {
+    color: $contrast-bg;
+    text-decoration: underline;
+  }
+
+  @each $color, $value in $theme-colors {
+    &-#{$color} {
+      @if $enable-gradients {
+        background: $value linear-gradient(180deg, mix($contrast-bg, $value, 15%), $value) repeat-x;
+      } @else {
+        background-color: $value;
+      }
+    }
+  }
+}
+
+.badge {
+  &.bg-dark {
+    color: $gray-900;
+  }
+}
+
+// Containers
+
+.list-group-item-action {
+
+  &:hover {
+    border-color: $primary;
+  }
+}
+
+.popover {
+  &-title {
+    border-bottom: none;
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/quartz/_variables.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/quartz/_variables.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/quartz/_variables.scss	(revision 3762)
@@ -0,0 +1,229 @@
+// Quartz 5.2.2
+// Bootswatch
+
+$theme: "quartz" !default;
+
+//
+// Color system
+//
+
+$white:    #fff !default;
+$gray-100: #f8f9fa !default;
+$gray-200: #e9e9e8 !default;
+$gray-300: #dee2e6 !default;
+$gray-400: #ced4da !default;
+$gray-500: #adb5bd !default;
+$gray-600: #6c757d !default;
+$gray-700: #495057 !default;
+$gray-800: #343a40 !default;
+$gray-900: #212529 !default;
+$black:    #000 !default;
+
+$blue:    #3a8fd9 !default;
+$indigo:  #6610f2 !default;
+$purple:  #686dc3 !default;
+$pink:    #e83283 !default;
+$red:     #fc346f !default;
+$orange:  #fd7e14 !default;
+$yellow:  #ffc107 !default;
+$green:   #41d7a7 !default;
+$teal:    #528fb3 !default;
+$cyan:    #39cbfb !default;
+
+$primary:       $pink !default;
+$secondary:     rgba($white, .4) !default;
+$success:       $green !default;
+$info:          $cyan !default;
+$warning:       $yellow !default;
+$danger:        $orange !default;
+$light:         $gray-200 !default;
+$dark:          $gray-900 !default;
+
+$min-contrast-ratio:   1.5 !default;
+
+// Spacing
+
+$spacer: 2rem !default;
+
+// Body
+
+$body-bg:                   $purple !default;
+$body-color:                $white !default;
+
+// Links
+
+$link-color:                              $white !default;
+
+// Components
+
+$border-color:                rgba($white, .2) !default;
+
+$border-radius:               .5rem !default;
+$border-radius-sm:            .6rem !default;
+$border-radius-lg:            .7rem !default;
+$border-radius-pill:          50rem !default;
+
+$box-shadow:                  1px 3px 24px -1px rgba($black, .15) !default;
+$box-shadow-sm:               0 1px 1px rgba($black, .1) !default;
+
+// Fonts
+
+$headings-font-weight:        700 !default;
+
+$text-muted:                  rgba($white, .7) !default;
+
+$blockquote-footer-color:     $text-muted !default;
+
+// Tables
+
+$table-dark-bg:               $dark !default;
+$table-dark-border-color:     darken($dark, 5%) !default;
+
+$table-bg-scale:              0 !default;
+
+// Buttons + Forms
+
+$input-btn-padding-y:         .75rem !default;
+$input-btn-padding-x:         1.5rem !default;
+
+// Buttons
+
+$btn-box-shadow:              $box-shadow !default;
+
+// Forms
+
+$input-bg:                              transparent !default;
+$input-disabled-bg:                     rgba($white, .1) !default;
+
+$input-border-color:                    rgba($white, .4) !default;
+$input-border-width:                    1px !default;
+
+$input-focus-border-color:              $input-border-color !default;
+$input-focus-box-shadow:                none !default;
+
+$input-placeholder-color:               $text-muted !default;
+
+$form-switch-color:               $white !default;
+
+$form-switch-focus-color:         $form-switch-color !default;
+
+$input-group-addon-bg:                  transparent !default;
+
+$form-check-input-bg:                     rgba($white, .3) !default;
+$form-check-input-border:                 1px solid $border-color !default;
+
+$form-select-indicator-color:       $white !default;
+$form-select-focus-box-shadow:    none !default;
+
+$form-range-track-bg:             rgba($black, .2) !default;
+
+$form-range-thumb-disabled-bg:             $gray-500 !default;
+
+// Navs
+
+$nav-link-disabled-color:           $text-muted !default;
+
+$nav-tabs-border-width:             0 !default;
+$nav-tabs-border-radius:            0 !default;
+$nav-tabs-link-active-color:        $gray-800 !default;
+$nav-tabs-link-active-bg:           $white !default;
+$nav-tabs-link-active-border-color: $gray-300 $gray-300 $nav-tabs-link-active-bg !default;
+
+$nav-pills-border-radius:           $border-radius-pill !default;
+$nav-pills-link-active-color:       $white !default;
+$nav-pills-link-active-bg:          $primary !default;
+
+// Navbars
+
+$navbar-dark-color:                 rgba($white, .8) !default;
+$navbar-dark-hover-color:           $white !default;
+
+$navbar-light-color:                rgba($gray-800, .8) !default;
+$navbar-light-hover-color:          $gray-800 !default;
+$navbar-light-active-color:         $gray-800 !default;
+$navbar-light-disabled-color:       rgba($gray-800, .3) !default;
+
+// Dropdowns
+
+$dropdown-border-color:             $border-color !default;
+$dropdown-link-hover-color:         $white !default;
+$dropdown-link-hover-bg:            rgba($white, .4) !default;
+
+// Pagination
+
+$pagination-bg:                     rgba($white, .3) !default;
+$pagination-border-width:           0 !default;
+
+$pagination-focus-color:            $white !default;
+$pagination-focus-bg:               $dropdown-link-hover-bg !default;
+$pagination-focus-box-shadow:       none !default;
+
+$pagination-hover-color:            $white !default;
+$pagination-hover-bg:               $dropdown-link-hover-bg !default;
+
+$pagination-disabled-color:         $text-muted !default;
+$pagination-disabled-bg:            $pagination-bg !default;
+
+// Cards
+
+$card-spacer-y:                     1.75rem !default;
+$card-spacer-x:                     2rem !default;
+$card-border-color:                 $border-color !default;
+$card-cap-bg:                       transparent !default;
+$card-cap-color:                    $white !default;
+$card-color:                        $white !default;
+$card-bg:                           transparent !default;
+
+// Accordion
+
+$accordion-button-bg:                     $secondary !default;
+$accordion-button-active-bg:              $primary !default;
+$accordion-button-active-color:           $white !default;
+
+// Tooltips
+
+$tooltip-opacity:                   .7 !default;
+
+// Popovers
+
+$popover-header-bg:                 $card-cap-bg !default;
+
+$popover-body-color:                $card-color !default;
+$popover-body-padding-y:            $spacer * .5 !default;
+
+$popover-arrow-color:               $border-color !default;
+
+$popover-arrow-outer-color:         transparent !default;
+
+// Toasts
+
+$toast-header-color:                $card-color !default;
+$toast-header-background-color:     $card-cap-bg !default;
+$toast-header-border-color:         $border-color !default;
+
+// Progress bars
+
+$progress-bg:                       rgba($black, .2) !default;
+
+// List group
+
+$list-group-color:                  $white !default;
+$list-group-bg:                     transparent !default;
+$list-group-border-color:           $border-color !default;
+$list-group-border-width:           0 !default;
+
+$list-group-hover-bg:               $dropdown-link-hover-bg !default;
+
+$list-group-disabled-color:         $text-muted !default;
+
+$list-group-action-color:           $white !default;
+$list-group-action-hover-color:     $white !default;
+
+// Breadcrumbs
+
+$breadcrumb-divider-color:          $white !default;
+$breadcrumb-active-color:           $white !default;
+
+// Close
+
+$btn-close-color:            $white !default;
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/quartz/_bootswatch.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/quartz/_bootswatch.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/quartz/_bootswatch.scss	(revision 3762)
@@ -0,0 +1,308 @@
+// Quartz 5.2.2
+// Bootswatch
+
+
+// Variables
+
+$body-bg-image: linear-gradient(90deg, shade-color($cyan, 10%), shade-color($purple, 10%), shade-color($pink, 5%)) !default;
+$frosted-opacity: .3 !default;
+
+:root {
+  color-scheme: light;
+}
+
+// Mixins
+
+@mixin glass($opacity: $frosted-opacity, $bg: $white) {
+  border: none;
+  box-shadow: inset 1px 1px $border-color, inset -1px -1px rgba($white, .1), $box-shadow;
+  @include frost($opacity, $bg);
+
+  a {
+    color: $card-color;
+  }
+
+  .text-muted {
+    color: rgba($card-color, .7) !important;
+  }
+}
+
+@mixin frost($opacity: $frosted-opacity, $bg: $white) {
+  background-color: transparent;
+  background-image: linear-gradient(125deg, rgba($bg, ($opacity)), rgba($bg, ($opacity - .1)) 70%);
+  backdrop-filter: blur(5px);
+  -webkit-backdrop-filter: blur(5px);
+  -moz-backdrop-filter: blur(5px);
+  -ms-backdrop-filter: blur(5px);
+  -o-backdrop-filter: blur(5px);
+}
+
+// Body
+
+body {
+  background-image: $body-bg-image;
+}
+
+// Tables
+
+.table-secondary {
+  --bs-table-hover-color: $white;
+}
+
+// Buttons
+
+.btn {
+  &-secondary {
+    color: $white;
+    border: none;
+
+    &:hover,
+    &:focus {
+      color: $white;
+    }
+
+    &.disabled {
+      color: $white;
+    }
+  }
+}
+
+.btn-group > .btn:not(:first-child),
+.btn-group > .btn-group:not(:first-child) {
+  margin-left: 0;
+}
+
+.btn-group-vertical > .btn:not(:first-child),
+.btn-group-vertical > .btn-group:not(:first-child) {
+  margin-top: 0;
+}
+
+.bg-light .btn {
+  background-color: rgba($black, .2);
+}
+
+// Forms
+
+.input-group-text,
+.form-control::file-selector-button {
+  background-color: transparent;
+  background-image: linear-gradient(125deg, rgba($white, .3), rgba($white, .2) 70%);
+  border: none;
+  backdrop-filter: blur(5px);
+  -webkit-backdrop-filter: blur(5px);
+  -moz-backdrop-filter: blur(5px);
+  -ms-backdrop-filter: blur(5px);
+  -o-backdrop-filter: blur(5px);
+}
+
+.input-group-text {
+  box-shadow: inset 1px 1px $border-color, inset -1px -1px rgba($white, .1);
+}
+
+.input-group > :not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback) {
+  margin-left: 0;
+  border-left: none;
+}
+
+.input-group:not(.has-validation) > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu),
+.input-group:not(.has-validation) > .dropdown-toggle:nth-last-child(n + 3) {
+  border-right: none;
+}
+
+.form-select:not([multiple]) {
+  transition: border-color .15s ease-in-out;
+
+  option {
+    color: $black;
+  }
+}
+
+.bg-light .form-control {
+  color: $gray-800;
+  border-color: rgba($black, .2);
+
+  &::placeholder {
+    color: rgba($black, .2);
+  }
+}
+
+// Navs
+
+.dropdown-menu {
+  @include glass(.3);
+}
+
+.selectize-dropdown {
+  @include glass(.3);
+  background-color: transparent !important;
+}
+
+.nav-tabs {
+  .nav-link {
+    transition: none;
+
+    &:hover,
+    &:focus {
+      color: $white;
+      isolation: auto;
+    }
+
+    &,
+    &.disabled {
+      background-color: $progress-bg;
+    }
+  }
+
+  .nav-item:first-child > .nav-link {
+    border-radius: $border-radius 0 0 $border-radius;
+  }
+
+  .nav-item:last-child > .nav-link {
+    border-radius: 0 $border-radius $border-radius 0;
+  }
+
+  .nav-item .nav-link.active,
+  .nav-item.show .nav-link {
+    @include glass(1, $white);
+    border-radius: $border-radius;
+    transform: scale(1.1);
+
+    &:hover,
+    &:focus {
+      color: $gray-800;
+    }
+  }
+
+  .dropdown-menu {
+    border-radius: $border-radius;
+  }
+}
+
+.nav-pills {
+  .nav-link {
+    transition: none;
+
+    &:hover,
+    &:focus {
+      color: $white;
+      isolation: auto;
+    }
+  }
+}
+
+// Indicators
+
+.alert {
+  @include glass();
+  position: relative;
+  overflow: hidden;
+  color: $white;
+
+  @each $color, $value in $theme-colors {
+    $opacity: .7;
+    &-#{$color}::after {
+      position: absolute;
+      top: 0;
+      left: 0;
+      width: .5rem;
+      height: 100%;
+      content: "";
+      background-color: $value;
+    }
+  }
+
+  .alert-link {
+    color: $card-color;
+  }
+}
+
+.badge {
+  &.bg-secondary {
+    --bs-bg-opacity: .4;
+  }
+
+  &.bg-light {
+    color: $gray-800;
+  }
+}
+
+// Containers
+
+.list-group {
+  @include glass();
+}
+
+.card {
+  @include glass();
+
+  @each $color, $value in $theme-colors {
+    @if ($color == secondary) {
+      --bs-secondary-rgb: transparent;
+    } @else {
+      &.bg-#{$color} {
+        background-image: none;
+      }
+    }
+  }
+
+  &.bg-light {
+    .card-header,
+    .card-body {
+      color: $gray-800;
+    }
+  }
+
+  &.border {
+    @each $color, $value in $theme-colors {
+      &-#{$color} {
+        @include glass();
+
+        .card-header {
+          background-color: $value !important;
+          border-bottom: none;
+
+          @if ($color == light) {
+            color: $gray-800;
+          }
+        }
+      }
+    }
+  }
+
+  &-header {
+    font-weight: $headings-font-weight;
+  }
+}
+
+.accordion-item {
+  @include glass();
+  box-shadow: none;
+}
+
+.toast {
+  @include glass();
+}
+
+.popover {
+  @include glass();
+
+  &-header {
+    border-bottom-color: $border-color;
+  }
+}
+
+.tooltip {
+  backdrop-filter: blur(5px);
+  -webkit-backdrop-filter: blur(5px);
+  -moz-backdrop-filter: blur(5px);
+  -ms-backdrop-filter: blur(5px);
+  -o-backdrop-filter: blur(5px);
+}
+
+.modal-content {
+  @include glass();
+}
+
+.offcanvas {
+  @include glass();
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/darkly/_bootswatch.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/darkly/_bootswatch.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/darkly/_bootswatch.scss	(revision 3762)
@@ -0,0 +1,80 @@
+// Darkly 5.2.2
+// Bootswatch
+
+
+// Variables
+
+$web-font-path: "https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,400;0,700;1,400&display=swap" !default;
+@if $web-font-path {
+  @import url($web-font-path);
+}
+
+:root {
+  color-scheme: dark;
+}
+
+// Typography
+
+.blockquote {
+  &-footer {
+    color: body-mix(75%);
+  }
+}
+
+// Forms
+
+.input-group-addon {
+  color: $body-color;
+}
+
+.form-floating > label {
+  color: $gray-700;
+}
+
+// Navs
+
+.nav-tabs,
+.nav-pills {
+  .nav-link,
+  .nav-link.active,
+  .nav-link.active:focus,
+  .nav-link.active:hover,
+  .nav-item.open .nav-link,
+  .nav-item.open .nav-link:focus,
+  .nav-item.open .nav-link:hover {
+    color: $body-color;
+  }
+}
+
+.breadcrumb a {
+  color: $body-color;
+}
+
+.pagination {
+  a:hover {
+    text-decoration: none;
+  }
+}
+
+// Indicators
+
+.alert {
+  color: $body-color;
+  border: none;
+
+  a,
+  .alert-link {
+    color: $body-color;
+    text-decoration: underline;
+  }
+
+  @each $color, $value in $theme-colors {
+    &-#{$color} {
+      @if $enable-gradients {
+        background: $value linear-gradient(180deg, mix($body-color, $value, 15%), $value) repeat-x;
+      } @else {
+        background-color: $value;
+      }
+    }
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/darkly/font.css
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/darkly/font.css	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/darkly/font.css	(revision 3762)
@@ -0,0 +1,21 @@
+@font-face {
+  font-family: 'Lato';
+  font-style: italic;
+  font-weight: 400;
+  font-display: swap;
+  src: url(fonts/S6u8w4BMUTPHjxswWA.woff) format('woff');
+}
+@font-face {
+  font-family: 'Lato';
+  font-style: normal;
+  font-weight: 400;
+  font-display: swap;
+  src: url(fonts/S6uyw4BMUTPHvxo.woff) format('woff');
+}
+@font-face {
+  font-family: 'Lato';
+  font-style: normal;
+  font-weight: 700;
+  font-display: swap;
+  src: url(fonts/S6u9w4BMUTPHh6UVeww.woff) format('woff');
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/darkly/_variables.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/darkly/_variables.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/darkly/_variables.scss	(revision 3762)
@@ -0,0 +1,175 @@
+// Darkly 5.2.2
+// Bootswatch
+
+$theme: "darkly" !default;
+
+//
+// Color system
+//
+
+$white:    #fff !default;
+$gray-100: #f8f9fa !default;
+$gray-200: #ebebeb !default;
+$gray-300: #dee2e6 !default;
+$gray-400: #ced4da !default;
+$gray-500: #adb5bd !default;
+$gray-600: #888 !default;
+$gray-700: #444 !default;
+$gray-800: #303030 !default;
+$gray-900: #222 !default;
+$black:    #000 !default;
+
+$blue:    #375a7f !default;
+$indigo:  #6610f2 !default;
+$purple:  #6f42c1 !default;
+$pink:    #e83e8c !default;
+$red:     #e74c3c !default;
+$orange:  #fd7e14 !default;
+$yellow:  #f39c12 !default;
+$green:   #00bc8c !default;
+$teal:    #20c997 !default;
+$cyan:    #3498db !default;
+
+// Body
+
+$body-bg:                   $gray-900 !default;
+$body-color:                $white !default;
+@function body-mix($weight) {
+    @return mix($body-bg, $body-color, $weight);
+}
+
+$primary:       $blue !default;
+$secondary:     body-mix(85%) !default;
+$success:       $green !default;
+$info:          $cyan !default;
+$warning:       $yellow !default;
+$danger:        $red !default;
+// This is inconsistent with Bootstrap semantics. That is, $dark
+// should actually be a light color in a dark mode setting, :shrug:
+// https://github.com/thomaspark/bootswatch/issues/989
+$light:         body-mix(65%) !default;
+$dark:          body-mix(95%) !default;
+
+$min-contrast-ratio:   1.9 !default;
+
+// Links
+
+$link-color:                $success !default;
+
+// Fonts
+
+// stylelint-disable-next-line value-keyword-case
+$font-family-sans-serif:      Lato, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !default;
+$h1-font-size:                3rem !default;
+$h2-font-size:                2.5rem !default;
+$h3-font-size:                2rem !default;
+$text-muted:                  body-mix(75%) !default;
+
+// Tables
+
+$table-border-color:          body-mix(85%) !default;
+
+$table-bg-scale:              0 !default;
+
+// Forms
+
+$input-bg:                          $white !default;
+$input-color:                       body-mix(95%) !default;
+$input-border-color:                $body-bg !default;
+$input-group-addon-color:           body-mix(65%) !default;
+$input-group-addon-bg:              body-mix(85%) !default;
+
+$form-check-input-bg:                     $body-color !default;
+$form-check-input-border:                 none !default;
+
+$form-file-button-color:          $body-color !default;
+
+// Dropdowns
+
+$dropdown-bg:                       $body-bg !default;
+$dropdown-border-color:             body-mix(85%) !default;
+$dropdown-divider-bg:               body-mix(85%) !default;
+$dropdown-link-color:               $body-color !default;
+$dropdown-link-hover-color:         $body-color !default;
+$dropdown-link-hover-bg:            $primary !default;
+
+// Navs
+
+$nav-link-padding-x:                2rem !default;
+$nav-link-disabled-color:           body-mix(65%) !default;
+$nav-tabs-border-color:             body-mix(85%) !default;
+$nav-tabs-link-hover-border-color:  $nav-tabs-border-color $nav-tabs-border-color transparent !default;
+$nav-tabs-link-active-color:        $body-color !default;
+$nav-tabs-link-active-border-color: $nav-tabs-border-color $nav-tabs-border-color transparent !default;
+
+// Navbar
+
+$navbar-padding-y:                  1rem !default;
+$navbar-light-bg:                   $primary !default;
+$navbar-dark-bg:                    $success !default;
+
+// Pagination
+
+$pagination-color:                  $body-color !default;
+$pagination-bg:                     $success !default;
+$pagination-border-width:           0 !default;
+$pagination-border-color:           transparent !default;
+$pagination-hover-color:            $body-color !default;
+$pagination-hover-bg:               lighten($success, 10%) !default;
+$pagination-hover-border-color:     transparent !default;
+$pagination-active-bg:              $pagination-hover-bg !default;
+$pagination-active-border-color:    transparent !default;
+$pagination-disabled-color:         $body-color !default;
+$pagination-disabled-bg:            darken($success, 15%) !default;
+$pagination-disabled-border-color:  transparent !default;
+
+// Cards
+
+$card-cap-bg:                       body-mix(85%) !default;
+$card-bg:                           body-mix(95%) !default;
+
+// Popovers
+
+$popover-bg:                        body-mix(95%) !default;
+$popover-header-bg:                 body-mix(85%) !default;
+
+// Toasts
+
+$toast-background-color:            body-mix(85%) !default;
+$toast-header-background-color:     body-mix(95%) !default;
+
+// Modals
+
+$modal-content-bg:                  body-mix(95%) !default;
+$modal-content-border-color:        body-mix(85%) !default;
+$modal-header-border-color:         body-mix(85%) !default;
+
+// Progress bars
+
+$progress-bg:                       body-mix(85%) !default;
+
+// List group
+
+$list-group-color:                  $body-color !default;
+$list-group-bg:                     body-mix(95%) !default;
+$list-group-border-color:           body-mix(85%) !default;
+$list-group-hover-bg:               body-mix(85%) !default;
+$list-group-action-hover-color:     $list-group-color !default;
+$list-group-action-active-bg:       body-mix(99%) !default;
+
+// Breadcrumbs
+
+$breadcrumb-padding-y:              .375rem !default;
+$breadcrumb-padding-x:              .75rem !default;
+$breadcrumb-bg:                     body-mix(85%) !default;
+$breadcrumb-border-radius:          .25rem !default;
+
+// Close
+
+$btn-close-color:            $body-color !default;
+$btn-close-opacity:          .4 !default;
+$btn-close-hover-opacity:    1 !default;
+
+// Code
+
+$pre-color:                         inherit !default;
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/vapor/font.css
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/vapor/font.css	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/vapor/font.css	(revision 3762)
@@ -0,0 +1,14 @@
+@font-face {
+  font-family: 'Lato';
+  font-style: normal;
+  font-weight: 400;
+  font-display: swap;
+  src: url(fonts/S6uyw4BMUTPHvxo.woff) format('woff');
+}
+@font-face {
+  font-family: 'Lato';
+  font-style: normal;
+  font-weight: 700;
+  font-display: swap;
+  src: url(fonts/S6u9w4BMUTPHh6UVeww.woff) format('woff');
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/vapor/_variables.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/vapor/_variables.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/vapor/_variables.scss	(revision 3762)
@@ -0,0 +1,162 @@
+// Vapor 5.2.2
+// Bootswatch
+
+$theme: "vapor" !default;
+
+//
+// Color system
+//
+
+$white:    #fff !default;
+$gray-100: #f8f9fa !default;
+$gray-200: #e9ecef !default;
+$gray-300: #dee2e6 !default;
+$gray-400: #ced4da !default;
+$gray-500: #adb5bd !default;
+$gray-600: #6c757d !default;
+$gray-700: #495057 !default;
+$gray-800: #343a40 !default;
+$gray-900: #170229 !default;
+$black:    #000 !default;
+
+$blue:    #1ba2f6 !default;
+$indigo:  #6610f2 !default;
+$purple:  #6f42c1 !default;
+$pink:    #ea39b8 !default;
+$red:     #e44c55 !default;
+$orange:  #f1b633 !default;
+$yellow:  #ffc107 !default;
+$green:   #3cf281 !default;
+$teal:    #3f81a2 !default;
+$cyan:    #32fbe2 !default;
+
+$primary:       $purple !default;
+$secondary:     $pink !default;
+$success:       $green !default;
+$info:          $blue !default;
+$warning:       $yellow !default;
+$danger:        $red !default;
+$light:         #44d9e8 !default;
+$dark:          $gray-900 !default;
+
+$min-contrast-ratio:   1.2 !default;
+
+// Options
+
+// $enable-rounded:              false !default;
+
+// Body
+
+$body-bg:                   #1a0933 !default;
+$body-color:                $cyan !default;
+
+// Links
+
+$link-color:                              $body-color !default;
+
+// Components
+
+$border-width:                0 !default;
+
+$border-radius:               .15rem !default;
+$border-radius-sm:            .05rem !default;
+
+$component-active-bg:         $pink !default;
+
+// Fonts
+
+// stylelint-disable-next-line value-keyword-case
+$font-family-sans-serif:      Lato, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !default;
+
+$text-muted:                  rgba($body-color, .3) !default;
+
+$blockquote-footer-color:     $text-muted !default;
+
+// Tables
+
+$table-color:                 $white !default;
+
+$table-bg-scale:              0 !default;
+
+// Forms
+
+$input-bg:                              lighten($body-bg, 10%) !default;
+$input-disabled-bg:                     lighten($body-bg, 5%) !default;
+
+$input-color:                           $white !default;
+
+$input-placeholder-color:               rgba($white, .4) !default;
+
+$input-group-addon-bg:                  $input-disabled-bg !default;
+
+$form-range-track-bg:             $input-bg !default;
+
+$form-range-thumb-disabled-bg:             $purple !default;
+
+// Navs
+
+$nav-link-disabled-color:           $text-muted !default;
+
+$nav-tabs-link-active-color:        $component-active-bg !default;
+
+// Pagination
+
+$pagination-bg:                     transparent !default;
+
+$pagination-focus-bg:               transparent !default;
+
+$pagination-hover-bg:               transparent !default;
+
+$pagination-disabled-color:         $text-muted !default;
+$pagination-disabled-bg:            transparent !default;
+
+// Cards
+
+$card-border-width:                 2px !default;
+$card-cap-color:                    $white !default;
+$card-color:                        $white !default;
+
+// Tooltips
+
+$tooltip-bg:                        $dark !default;
+$tooltip-opacity:                   1 !default;
+
+// Popovers
+
+$popover-bg:                        $primary !default;
+
+$popover-header-color:              $white !default;
+
+$popover-body-color:                $white !default;
+
+// Toasts
+
+$toast-color:                       $white !default;
+$toast-background-color:            $primary !default;
+
+$toast-header-color:                $toast-color !default;
+$toast-header-background-color:     $toast-background-color !default;
+
+// Modals
+
+$modal-content-color:               $white !default;
+$modal-content-bg:                  $primary !default;
+
+// Progress bars
+
+$progress-bg:                       $input-disabled-bg !default;
+
+// List group
+
+$list-group-color:                  $white !default;
+$list-group-bg:                     $input-disabled-bg !default;
+$list-group-hover-bg:               $pink !default;
+$list-group-disabled-color:         $text-muted !default;
+$list-group-action-color:           $body-color !default;
+$list-group-action-hover-color:     $white !default;
+$list-group-action-active-bg:       $list-group-hover-bg !default;
+
+// Breadcrumbs
+
+$breadcrumb-divider-color:          $text-muted !default;
+$breadcrumb-active-color:           $component-active-bg !default;
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/vapor/_bootswatch.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/vapor/_bootswatch.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/vapor/_bootswatch.scss	(revision 3762)
@@ -0,0 +1,330 @@
+// Vapor 5.2.2
+// Bootswatch
+
+
+// Variables
+
+$web-font-path: "https://fonts.googleapis.com/css2?family=Lato:wght@400;700&display=swap" !default;
+@if $web-font-path {
+  @import url($web-font-path);
+}
+
+$outrun: false !default;
+
+:root {
+  color-scheme: dark;
+}
+
+// Mixins
+
+@mixin text-shadow($color) {
+  text-shadow: 0 0 1px rgba($color, .6), 0 0 3px rgba($color, .5), 0 0 .5rem rgba($color, .3), 0 0 2rem rgba($color, .2);
+}
+
+@mixin text-shadow-sm($color) {
+  text-shadow: 0 0 1px rgba($color, .3), 0 0 2px rgba($color, .3), 0 0 5px rgba($color, .2);
+}
+
+@mixin box-shadow($color) {
+  box-shadow: 0 0 2px rgba($color, .9), 0 0 4px rgba($color, .4), 0 0 1rem rgba($color, .3), 0 0 4rem rgba($color, .1);
+}
+
+@mixin box-shadow-lg($color) {
+  box-shadow: 0 0 2rem rgba(tint-color($color, 10%), .4), 0 0 8rem rgba(tint-color($color, 10%), .3);
+}
+
+@mixin header-shadow($color) {
+  h1,
+  h2,
+  h3,
+  h4,
+  h5,
+  h6,
+  .h1,
+  .h2,
+  .h3,
+  .h4,
+  .h5,
+  .h6 {
+    @include text-shadow($color);
+  }
+}
+
+// Body
+
+body {
+  background-image: linear-gradient(shade-color($body-bg, 10%) 0%, $body-bg 7%, $body-bg 80%, shade-color(#173e98, 50%) 100%);
+  @include text-shadow-sm($body-color);
+
+  @if ($outrun) {
+    position: relative;
+    overflow-x: hidden;
+
+    &::after {
+      position: absolute;
+      bottom: 0;
+      left: -50vw;
+      z-index: -1;
+      display: block;
+      width: 200vw;
+      height: 100vh;
+      content: "";
+      background-image: repeating-linear-gradient(rgba($blue, .6) 0 1px, transparent 1px 100%), repeating-linear-gradient(90deg, rgba($blue, .6) 0 1px, transparent 1px 100%);
+      background-size: 200px 200px;
+      transform: perspective(50vh) rotateX(50deg) translateY(-11.3vh) translateZ(10px);
+      transform-origin: center center;
+    }
+  }
+}
+
+// Typography
+
+@include header-shadow($cyan);
+
+.text {
+  @each $color, $value in $theme-colors {
+    &-#{$color} {
+      @include text-shadow-sm($value);
+    }
+  }
+
+  &-white {
+    @include text-shadow-sm($white);
+    @include header-shadow($white);
+  }
+
+  &-muted {
+    @include text-shadow-sm(shade-color($text-muted, 20%));
+  }
+}
+
+a {
+  @include text-shadow-sm($link-color);
+}
+
+.blockquote {
+
+  &-footer {
+    @include text-shadow-sm(shade-color($blockquote-footer-color, 20%));
+  }
+}
+
+hr {
+  border-top: 1px solid $primary;
+  @include box-shadow($primary);
+  opacity: 1;
+}
+
+// Tables
+
+table,
+.table {
+  @include text-shadow-sm($white);
+}
+
+// Buttons
+
+.btn {
+  @each $color, $value in $theme-colors {
+    @if (($color != dark) or ($color != link)) {
+      &-#{$color},
+      &-outline-#{$color} {
+        @include box-shadow($value);
+      }
+    }
+
+    &-#{$color} {
+      @include text-shadow-sm($white);
+    }
+
+    &-outline-#{$color} {
+      color: $white;
+      border-width: 2px;
+    }
+  }
+
+  &-dark {
+    @include box-shadow($primary);
+  }
+
+  &-link {
+    box-shadow: none;
+    @include text-shadow($body-color);
+  }
+
+  &-outline-dark {
+    color: $white;
+  }
+}
+
+// Navbars
+
+.navbar {
+  @each $color, $value in $theme-colors {
+    &.bg-#{$color} {
+      @include box-shadow($value);
+    }
+  }
+}
+
+.navbar-dark {
+  &,
+  a {
+    @include text-shadow-sm($navbar-dark-color);
+  }
+
+  .navbar-brand {
+    @include text-shadow($navbar-dark-color);
+  }
+}
+
+.navbar-light {
+  &,
+  a {
+    @include text-shadow-sm($navbar-light-color);
+  }
+
+  .navbar-brand {
+    @include text-shadow($navbar-light-color);
+  }
+}
+
+// Navs
+
+.nav-link {
+  &.disabled {
+    @include text-shadow-sm($nav-link-disabled-color);
+  }
+}
+
+.nav-tabs .nav-link.active,
+.nav-tabs .nav-item.show .nav-link {
+  @include text-shadow-sm($component-active-bg);
+}
+
+.nav-pills .nav-link.active,
+.nav-pills .show > .nav-link {
+  @include box-shadow($component-active-bg);
+}
+
+.breadcrumb {
+  &-item.active {
+    @include text-shadow-sm($breadcrumb-active-color);
+  }
+
+  &-item + .breadcrumb-item::before {
+    @include text-shadow-sm($breadcrumb-divider-color);
+  }
+}
+
+.page-link {
+  border-radius: $border-radius;
+}
+
+.page-item.active {
+  .page-link {
+    @include box-shadow($component-active-bg);
+  }
+}
+
+// Forms
+
+legend {
+  @include text-shadow($body-color);
+}
+
+.valid-feedback {
+  @include text-shadow-sm($success);
+}
+
+.invalid-feedback {
+  @include text-shadow-sm($danger);
+}
+
+// Indicators
+
+.alert {
+  @each $color, $value in $theme-colors {
+    &-#{$color} {
+      color: $white;
+      background-color: $value;
+      @include text-shadow-sm($white);
+      @include box-shadow-lg($value);
+    }
+  }
+
+  .alert-link,
+  a {
+    color: $white;
+  }
+
+  @include header-shadow($white);
+}
+
+.progress {
+  overflow: visible;
+
+  &-bar {
+    @include box-shadow($primary);
+
+    @each $color, $value in $theme-colors {
+      &.bg-#{$color} {
+        @include box-shadow($value);
+      }
+    }
+  }
+}
+
+.tooltip {
+
+  &-inner,
+  .arrow {
+    @include box-shadow-lg($primary);
+  }
+}
+
+.modal,
+.popover,
+.toast {
+  @include text-shadow-sm($white);
+  @include header-shadow($white);
+}
+
+.popover,
+.toast {
+  @include box-shadow-lg($primary);
+}
+
+.modal {
+  &-content {
+    @include box-shadow-lg($primary);
+  }
+}
+
+// Containers
+
+.list-group {
+
+  &-item.active {
+    @include header-shadow($white);
+  }
+}
+
+.card {
+  background-color: transparent;
+  @include text-shadow-sm($white);
+
+  @each $color, $value in $theme-colors {
+    @if ($color != dark) {
+      &.border-#{$color} {
+        @include box-shadow($value);
+      }
+    }
+  }
+
+  &.border-dark {
+    @include box-shadow($primary);
+  }
+
+  @include header-shadow($white);
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/pulse/_variables.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/pulse/_variables.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/pulse/_variables.scss	(revision 3762)
@@ -0,0 +1,96 @@
+// Pulse 5.2.2
+// Bootswatch
+
+$theme: "pulse" !default;
+
+//
+// Color system
+//
+
+$white:    #fff !default;
+$gray-100: #fafafa !default;
+$gray-200: #f9f8fc !default;
+$gray-300: #ededed !default;
+$gray-400: #cbc8d0 !default;
+$gray-500: #adb5bd !default;
+$gray-600: #868e96 !default;
+$gray-700: #444 !default;
+$gray-800: #343a40 !default;
+$gray-900: #17141f !default;
+$black:    #000 !default;
+
+$blue:    #007bff !default;
+$indigo:  #6610f2 !default;
+$purple:  #593196 !default;
+$pink:    #e83e8c !default;
+$red:     #fc3939 !default;
+$orange:  #fd7e14 !default;
+$yellow:  #efa31d !default;
+$green:   #13b955 !default;
+$teal:    #20c997 !default;
+$cyan:    #009cdc !default;
+
+$primary:       $purple !default;
+$secondary:     #a991d4 !default;
+$success:       $green !default;
+$info:          $cyan !default;
+$warning:       $yellow !default;
+$danger:        $red !default;
+$light:         $gray-200 !default;
+$dark:          $gray-900 !default;
+
+$min-contrast-ratio:   2.1 !default;
+
+// Options
+
+$enable-rounded: false !default;
+
+// Body
+
+$body-color:                $gray-700 !default;
+
+// Links
+
+$link-hover-color:          $primary !default;
+
+// Tables
+
+$table-border-color:          rgba(0, 0, 0, .05) !default;
+
+// Forms
+
+$input-focus-border-color:              $primary !default;
+
+// Dropdowns
+
+$dropdown-link-color:               $gray-700 !default;
+$dropdown-link-hover-color:         $white !default;
+$dropdown-link-hover-bg:            $primary !default;
+
+// Navs
+
+$nav-tabs-border-color:             $gray-300 !default;
+$nav-tabs-link-hover-border-color:  $primary !default;
+
+// Navbar
+
+$navbar-padding-y:                  1.2rem !default;
+$navbar-dark-hover-color:           rgba($white, .9) !default;
+$navbar-dark-active-color:          rgba($white, .9) !default;
+$navbar-light-color:                rgba($black, .4) !default;
+$navbar-light-active-color:         rgba($black, .7) !default;
+$navbar-light-disabled-color:       rgba($black, .2) !default;
+
+// Progress bars
+
+$progress-bg:                       $gray-300 !default;
+$progress-bar-bg:                   $primary !default;
+
+// List group
+
+$list-group-bg:                     $gray-900 !default;
+$list-group-border-color:           transparent !default;
+$list-group-hover-bg:               lighten($list-group-bg, 10%) !default;
+$list-group-active-color:           $white !default;
+$list-group-active-bg:              $list-group-bg !default;
+$list-group-disabled-color:         lighten($list-group-bg, 30%) !default;
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/pulse/_bootswatch.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/pulse/_bootswatch.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/pulse/_bootswatch.scss	(revision 3762)
@@ -0,0 +1,149 @@
+// Pulse 5.2.2
+// Bootswatch
+
+
+// Variables
+
+:root {
+  color-scheme: light;
+}
+
+// Buttons
+
+.btn {
+  &:focus,
+  &:active,
+  &:active:focus,
+  &.active:focus {
+    outline: none;
+  }
+
+  &-secondary {
+    color: $gray-900;
+    background-color: $white;
+    border-color: #ccc;
+
+    &:hover {
+      color: $gray-900;
+      background-color: $gray-300;
+      border-color: $gray-500;
+    }
+
+    &.disabled {
+      color: tint-color($gray-900, 5%);
+      background-color: $white;
+      border-color: tint-color(#ccc, 5%);
+    }
+  }
+
+  &-warning {
+    color: $white;
+  }
+
+  &-primary:focus {
+    box-shadow: 0 0 5px tint-color($primary, 10%);
+  }
+
+  &-secondary:focus {
+    box-shadow: 0 0 5px $gray-400;
+  }
+
+  &-success:focus {
+    box-shadow: 0 0 5px tint-color($success, 10%);
+  }
+
+  &-info:focus {
+    box-shadow: 0 0 5px tint-color($info, 10%);
+  }
+
+  &-warning:focus {
+    box-shadow: 0 0 5px tint-color($warning, 10%);
+  }
+
+  &-danger:focus {
+    box-shadow: 0 0 5px tint-color($danger, 10%);
+  }
+
+  &.disabled:focus {
+    box-shadow: none;
+  }
+}
+
+// Tables
+
+.table .thead-dark th {
+  background-color: $secondary;
+  border-color: $table-border-color;
+}
+
+// Forms
+
+.form-control:focus {
+  box-shadow: 0 0 5px rgba(100, 65, 164, .4);
+}
+
+// Navs
+
+.nav-tabs {
+  .nav-link,
+  .nav-link.active, {
+    border-width: 0 0 1px;
+  }
+
+  .nav-link:hover,
+  .nav-link.active,
+  .nav-link.active:hover,
+  .nav-link.active:focus {
+    border-bottom: 1px solid $primary;
+  }
+
+  .nav-item + .nav-item {
+    margin-left: 0;
+  }
+}
+
+.breadcrumb {
+  &-item.active {
+    color: $gray-700;
+  }
+}
+
+// Indicators
+
+.badge {
+  &.bg-light {
+    color: $dark;
+  }
+}
+
+// Progress bars
+
+.progress {
+  height: 8px;
+}
+
+// Containers
+
+.list-group {
+  &-item {
+    color: rgba(255, 255, 255, .8);
+
+    &.active,
+    &:hover,
+    &:focus {
+      color: $white;
+    }
+
+    &.active {
+      font-weight: 700;
+
+      &:hover {
+        background-color: $list-group-hover-bg;
+      }
+    }
+
+    &.disabled:hover {
+      color: $list-group-disabled-color;
+    }
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/united/_bootswatch.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/united/_bootswatch.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/united/_bootswatch.scss	(revision 3762)
@@ -0,0 +1,22 @@
+// United 5.2.2
+// Bootswatch
+
+
+// Variables
+
+$web-font-path: "https://fonts.googleapis.com/css2?family=Ubuntu:wght@400;700&display=swap" !default;
+@if $web-font-path {
+  @import url($web-font-path);
+}
+
+:root {
+  color-scheme: light;
+}
+
+// Indicators
+
+.badge {
+  &.bg-light {
+    color: $body-color;
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/united/font.css
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/united/font.css	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/united/font.css	(revision 3762)
@@ -0,0 +1,14 @@
+@font-face {
+  font-family: 'Ubuntu';
+  font-style: normal;
+  font-weight: 400;
+  font-display: swap;
+  src: url(fonts/4iCs6KVjbNBYlgo6ew.woff) format('woff');
+}
+@font-face {
+  font-family: 'Ubuntu';
+  font-style: normal;
+  font-weight: 700;
+  font-display: swap;
+  src: url(fonts/4iCv6KVjbNBYlgoCxCvTtA.woff) format('woff');
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/united/_variables.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/united/_variables.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/united/_variables.scss	(revision 3762)
@@ -0,0 +1,56 @@
+// United 5.2.2
+// Bootswatch
+
+$theme: "united" !default;
+
+//
+// Color system
+//
+
+$white:    #fff !default;
+$gray-100: #f8f9fa !default;
+$gray-200: #e9ecef !default;
+$gray-300: #dee2e6 !default;
+$gray-400: #ced4da !default;
+$gray-500: #aea79f !default;
+$gray-600: #868e96 !default;
+$gray-700: #495057 !default;
+$gray-800: #333 !default;
+$gray-900: #212529 !default;
+$black:    #000 !default;
+
+$blue:    #007bff !default;
+$indigo:  #6610f2 !default;
+$purple:  #772953 !default;
+$pink:    #e83e8c !default;
+$red:     #df382c !default;
+$orange:  #e95420 !default;
+$yellow:  #efb73e !default;
+$green:   #38b44a !default;
+$teal:    #20c997 !default;
+$cyan:    #17a2b8 !default;
+
+$primary:       $orange !default;
+$secondary:     $gray-500 !default;
+$success:       $green !default;
+$info:          $cyan !default;
+$warning:       $yellow !default;
+$danger:        $red !default;
+$light:         $gray-200 !default;
+$dark:          $purple !default;
+
+$min-contrast-ratio:   1.8 !default;
+
+// Body
+
+$body-color:                $gray-800 !default;
+
+// Fonts
+
+// stylelint-disable-next-line value-keyword-case
+$font-family-sans-serif:      Ubuntu, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !default;
+
+// Tables
+
+$table-dark-bg:               $dark !default;
+$table-dark-border-color:     darken($dark, 5%) !default;
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/flatly/font.css
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/flatly/font.css	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/flatly/font.css	(revision 3762)
@@ -0,0 +1,21 @@
+@font-face {
+  font-family: 'Lato';
+  font-style: italic;
+  font-weight: 400;
+  font-display: swap;
+  src: url(fonts/S6u8w4BMUTPHjxswWA.woff) format('woff');
+}
+@font-face {
+  font-family: 'Lato';
+  font-style: normal;
+  font-weight: 400;
+  font-display: swap;
+  src: url(fonts/S6uyw4BMUTPHvxo.woff) format('woff');
+}
+@font-face {
+  font-family: 'Lato';
+  font-style: normal;
+  font-weight: 700;
+  font-display: swap;
+  src: url(fonts/S6u9w4BMUTPHh6UVeww.woff) format('woff');
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/flatly/_variables.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/flatly/_variables.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/flatly/_variables.scss	(revision 3762)
@@ -0,0 +1,121 @@
+// Flatly 5.2.2
+// Bootswatch
+
+$theme: "flatly" !default;
+
+//
+// Color system
+//
+
+$white:    #fff !default;
+$gray-100: #f8f9fa !default;
+$gray-200: #ecf0f1 !default;
+$gray-300: #dee2e6 !default;
+$gray-400: #ced4da !default;
+$gray-500: #b4bcc2 !default;
+$gray-600: #95a5a6 !default;
+$gray-700: #7b8a8b !default;
+$gray-800: #343a40 !default;
+$gray-900: #212529 !default;
+$black:    #000 !default;
+
+$blue:    #2c3e50 !default;
+$indigo:  #6610f2 !default;
+$purple:  #6f42c1 !default;
+$pink:    #e83e8c !default;
+$red:     #e74c3c !default;
+$orange:  #fd7e14 !default;
+$yellow:  #f39c12 !default;
+$green:   #18bc9c !default;
+$teal:    #20c997 !default;
+$cyan:    #3498db !default;
+
+$primary:       $blue !default;
+$secondary:     $gray-600 !default;
+$success:       $green !default;
+$info:          $cyan !default;
+$warning:       $yellow !default;
+$danger:        $red !default;
+$light:         $gray-200 !default;
+$dark:          $gray-700 !default;
+
+$min-contrast-ratio:   2.05 !default;
+
+// Links
+
+$link-color:                $success !default;
+
+// Fonts
+
+// stylelint-disable-next-line value-keyword-case
+$font-family-sans-serif:      Lato, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !default;
+$h1-font-size:                3rem !default;
+$h2-font-size:                2.5rem !default;
+$h3-font-size:                2rem !default;
+
+// Tables
+
+$table-bg-scale:              0 !default;
+
+// Dropdowns
+
+$dropdown-link-color:               $gray-700 !default;
+$dropdown-link-hover-color:         $white !default;
+$dropdown-link-hover-bg:            $primary !default;
+
+// Navs
+
+$nav-link-padding-y:                .5rem !default !default;
+$nav-link-padding-x:                2rem !default;
+$nav-link-disabled-color:           $gray-600 !default !default;
+$nav-tabs-border-color:             $gray-200 !default;
+
+// Navbar
+
+$navbar-padding-y:                  1rem !default;
+$navbar-light-bg:                   $primary !default;
+$navbar-light-color:                $white !default;
+$navbar-light-hover-color:          $success !default;
+$navbar-light-active-color:         $success !default;
+$navbar-light-brand-color:          $white !default;
+$navbar-light-brand-hover-color:    $navbar-light-brand-color !default;
+
+
+$navbar-dark-color:                 $white !default;
+$navbar-dark-hover-color:           $primary !default;
+$navbar-dark-active-color:          $primary !default;
+
+$navbar-dark-brand-color:                 $white !default;
+$navbar-dark-brand-hover-color:           $navbar-dark-brand-color !default;
+
+// Pagination
+
+$pagination-color:                  $white !default;
+$pagination-bg:                     $success !default;
+$pagination-border-width:           0 !default;
+$pagination-border-color:           transparent !default;
+$pagination-hover-color:            $white !default;
+$pagination-hover-bg:               darken($success, 15%) !default;
+$pagination-hover-border-color:     transparent !default;
+$pagination-active-bg:              $pagination-hover-bg !default;
+$pagination-active-border-color:    transparent !default;
+$pagination-disabled-color:         $gray-200 !default;
+$pagination-disabled-bg:            lighten($success, 15%) !default;
+$pagination-disabled-border-color:  transparent !default;
+
+// List group
+
+$list-group-hover-bg:               $gray-200 !default;
+$list-group-disabled-bg:            $gray-200 !default;
+
+// Breadcrumbs
+
+$breadcrumb-padding-y:              .375rem !default;
+$breadcrumb-padding-x:              .75rem !default;
+$breadcrumb-border-radius:          .25rem !default;
+
+// Close
+
+$btn-close-color:            $white !default;
+$btn-close-opacity:          .4 !default;
+$btn-close-hover-opacity:    1 !default;
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/flatly/_bootswatch.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/flatly/_bootswatch.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/flatly/_bootswatch.scss	(revision 3762)
@@ -0,0 +1,91 @@
+// Flatly 5.2.2
+// Bootswatch
+
+
+// Variables
+
+$web-font-path: "https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,400;0,700;1,400&display=swap" !default;
+@if $web-font-path {
+  @import url($web-font-path);
+}
+
+:root {
+  color-scheme: light;
+}
+
+// Navbar
+
+.bg-primary {
+  .navbar-nav .show > .nav-link,
+  .navbar-nav .nav-link.active,
+  .navbar-nav .nav-link:hover,
+  .navbar-nav .nav-link:focus {
+    color: $success !important;
+  }
+}
+
+// Navs
+
+.nav-tabs {
+  .nav-link.active,
+  .nav-link.active:focus,
+  .nav-link.active:hover,
+  .nav-item.open .nav-link,
+  .nav-item.open .nav-link:focus,
+  .nav-item.open .nav-link:hover {
+    color: $primary;
+  }
+}
+
+.pagination {
+  a:hover {
+    text-decoration: none;
+  }
+}
+
+// Indicators
+
+.badge {
+  &.bg-light {
+    color: $dark;
+  }
+}
+
+.alert {
+  color: $white;
+  border: none;
+
+  a,
+  .alert-link {
+    color: $white;
+    text-decoration: underline;
+  }
+
+  @each $color, $value in $theme-colors {
+    &-#{$color} {
+      @if $enable-gradients {
+        background: $value linear-gradient(180deg, mix($body-bg, $value, 15%), $value) repeat-x;
+      } @else {
+        background-color: $value;
+      }
+    }
+  }
+
+  &-light {
+    &,
+    a,
+    .alert-link {
+      color: $body-color;
+    }
+  }
+}
+
+// Containers
+
+.modal,
+.toast,
+.offcanvas {
+  .btn-close {
+    background-image: escape-svg(url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$black}'><path d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/></svg>"));
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/cerulean/_variables.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/cerulean/_variables.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/cerulean/_variables.scss	(revision 3762)
@@ -0,0 +1,61 @@
+// Cerulean 5.2.2
+// Bootswatch
+
+$theme: "cerulean" !default;
+
+//
+// Color system
+//
+
+$white:    #fff !default;
+$gray-100: #f8f9fa !default;
+$gray-200: #e9ecef !default;
+$gray-300: #dee2e6 !default;
+$gray-400: #ced4da !default;
+$gray-500: #adb5bd !default;
+$gray-600: #868e96 !default;
+$gray-700: #495057 !default;
+$gray-800: #343a40 !default;
+$gray-900: #212529 !default;
+$black:    #000 !default;
+
+$blue:    #033c73 !default;
+$indigo:  #6610f2 !default;
+$purple:  #6f42c1 !default;
+$pink:    #e83e8c !default;
+$red:     #c71c22 !default;
+$orange:  #fd7e14 !default;
+$yellow:  #dd5600 !default;
+$green:   #73a839 !default;
+$teal:    #20c997 !default;
+$cyan:    #2fa4e7 !default;
+
+$primary:       $cyan !default;
+$secondary:     $gray-200 !default;
+$success:       $green !default;
+$info:          $blue !default;
+$warning:       $yellow !default;
+$danger:        $red !default;
+$light:         $gray-100 !default;
+$dark:          $gray-800 !default;
+
+$min-contrast-ratio:   2.75 !default;
+
+// Body
+
+$body-color:    $gray-700 !default;
+
+// Fonts
+
+$headings-color:         $cyan !default;
+
+// Dropdowns
+
+$dropdown-link-color:           $body-color !default;
+$dropdown-link-hover-color:     $white !default;
+$dropdown-link-hover-bg:        $primary !default;
+
+// Navbar
+
+$navbar-dark-color:             rgba($white, .8) !default;
+$navbar-dark-hover-color:       $white !default;
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/cerulean/_bootswatch.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/cerulean/_bootswatch.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/cerulean/_bootswatch.scss	(revision 3762)
@@ -0,0 +1,88 @@
+// Cerulean 5.2.2
+// Bootswatch
+
+
+// Variables
+
+$text-shadow: 0 1px 0 rgba(0, 0, 0, .05) !default;
+
+:root {
+  color-scheme: light;
+}
+
+// Mixins
+
+@mixin btn-shadow($color){
+  @include gradient-y-three-colors(tint-color($color, 16%), $color, 60%, shade-color($color, 6%));
+}
+
+// Navbar
+
+.navbar {
+  @each $color, $value in $theme-colors {
+    &.bg-#{$color} {
+      @include btn-shadow($value);
+    }
+  }
+}
+
+.navbar-brand,
+.nav-link {
+  text-shadow: $text-shadow;
+}
+
+// Buttons
+
+.btn {
+  text-shadow: $text-shadow;
+}
+
+.btn-secondary,
+.btn-outline-secondary {
+  color: $gray-700;
+}
+
+@each $color, $value in $theme-colors {
+  .btn-#{$color} {
+    @include btn-shadow($value);
+  }
+}
+
+// Typography
+
+.text-secondary {
+  color: $gray-500 !important;
+}
+
+.bg-primary,
+.bg-success,
+.bg-info,
+.bg-warning,
+.bg-danger,
+.bg-dark {
+  h1,
+  h2,
+  h3,
+  h4,
+  h5,
+  h6 {
+    color: $white;
+  }
+}
+
+// Navs
+
+.dropdown-menu {
+  .dropdown-header {
+    color: $gray-600;
+  }
+}
+
+// Indicators
+
+.badge {
+  &.bg-secondary,
+  &.bg-light {
+    color: $dark;
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/sandstone/_bootswatch.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/sandstone/_bootswatch.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/sandstone/_bootswatch.scss	(revision 3762)
@@ -0,0 +1,236 @@
+// Sandstone 5.2.2
+// Bootswatch
+
+
+// Variables
+
+$web-font-path: "https://fonts.googleapis.com/css2?family=Roboto:wght@400;500;700&display=swap" !default;
+@if $web-font-path {
+  @import url($web-font-path);
+}
+
+:root {
+  color-scheme: light;
+}
+
+// Navbar
+
+.sandstone {
+  font-size: 13px;
+  font-weight: 500;
+  line-height: 22px;
+  text-transform: uppercase;
+}
+
+.navbar {
+  .nav-link {
+    @extend .sandstone;
+  }
+
+  &-form input,
+  &-form .form-control {
+    border: none;
+  }
+}
+
+// Buttons
+
+.btn {
+  @extend .sandstone;
+
+  &:hover {
+    border-color: transparent;
+  }
+
+  &-success,
+  &-warning {
+    color: $white;
+  }
+}
+
+// Tables
+
+.table {
+  .thead-dark th {
+    background-color: $dark;
+  }
+}
+
+// Forms
+
+input,
+.form-control {
+  @include box-shadow(none);
+
+  &:focus {
+    @include box-shadow(none);
+  }
+}
+
+// Navs
+
+.nav-tabs {
+  .nav-link {
+    @extend .sandstone;
+    background-color: $gray-200;
+    border-color: $gray-300;
+  }
+
+  .nav-link,
+  .nav-link:hover,
+  .nav-link:focus {
+    color: $gray-600;
+  }
+
+  .nav-link.disabled,
+  .nav-link.disabled:hover,
+  .nav-link.disabled:focus {
+    color: $nav-link-disabled-color;
+    background-color: $gray-200;
+    border-color: $gray-300;
+  }
+}
+
+.nav-pills {
+  .nav-link {
+    @extend .sandstone;
+    color: $gray-600;
+    border: 1px solid transparent;
+  }
+
+  .nav-link.active,
+  .nav-link:hover,
+  .nav-link:focus {
+    background-color: $gray-200;
+    border-color: $gray-300;
+  }
+
+  .nav-link.disabled,
+  .nav-link.disabled:hover {
+    color: $gray-300;
+    background-color: transparent;
+    border-color: transparent;
+  }
+}
+
+
+.breadcrumb {
+  @extend .sandstone;
+  border: 1px solid $gray-300;
+}
+
+.pagination {
+  @extend .sandstone;
+
+  a:hover {
+    text-decoration: none;
+  }
+}
+
+.dropdown-menu {
+  .dropdown-item {
+    @extend .sandstone;
+  }
+}
+
+// Indicators
+
+.alert {
+  color: $white;
+
+  a,
+  .alert-link {
+    color: $white;
+    text-decoration: underline;
+  }
+
+  &-primary {
+    &,
+    > th,
+    > td {
+      background-color: $primary;
+    }
+  }
+
+  &-secondary {
+    &,
+    > th,
+    > td {
+      background-color: $secondary;
+    }
+  }
+
+  &-success {
+    &,
+    > th,
+    > td {
+      background-color: $success;
+    }
+  }
+
+  &-info {
+    &,
+    > th,
+    > td {
+      background-color: $info;
+    }
+  }
+
+  &-danger {
+    &,
+    > th,
+    > td {
+      background-color: $danger;
+    }
+  }
+
+  &-warning {
+    &,
+    > th,
+    > td {
+      background-color: $warning;
+    }
+  }
+
+  &-dark {
+    &,
+    > th,
+    > td {
+      background-color: $dark;
+    }
+  }
+
+  &-light {
+    &,
+    > th,
+    > td {
+      background-color: $light;
+    }
+
+    &,
+    a:not(.btn),
+    .alert-link {
+      color: $body-color;
+    }
+  }
+}
+
+.badge {
+  &.bg-light {
+    color: $dark;
+  }
+}
+
+.tooltip {
+  @extend .sandstone;
+}
+
+// Containers
+
+.modal,
+.toast,
+.offcanvas {
+  .btn-close {
+    background-image: escape-svg(url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$gray-300}'><path d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/></svg>"));
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/sandstone/font.css
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/sandstone/font.css	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/sandstone/font.css	(revision 3762)
@@ -0,0 +1,21 @@
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 400;
+  font-display: swap;
+  src: url(fonts/KFOmCnqEu92Fr1Me5g.woff) format('woff');
+}
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 500;
+  font-display: swap;
+  src: url(fonts/KFOlCnqEu92Fr1MmEU9vAA.woff) format('woff');
+}
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 700;
+  font-display: swap;
+  src: url(fonts/KFOlCnqEu92Fr1MmWUlvAA.woff) format('woff');
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/sandstone/_variables.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/sandstone/_variables.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/sandstone/_variables.scss	(revision 3762)
@@ -0,0 +1,134 @@
+// Sandstone 5.2.2
+// Bootswatch
+
+$theme: "sandstone" !default;
+
+//
+// Color system
+//
+
+$white:    #fff !default;
+$gray-100: #f8f9fa !default;
+$gray-200: #f8f5f0 !default;
+$gray-300: #dfd7ca !default;
+$gray-400: #ced4da !default;
+$gray-500: #98978b !default;
+$gray-600: #8e8c84 !default;
+$gray-700: #495057 !default;
+$gray-800: #3e3f3a !default;
+$gray-900: #212529 !default;
+$black:    #000 !default;
+
+$blue:    #325d88 !default;
+$indigo:  #6610f2 !default;
+$purple:  #6f42c1 !default;
+$pink:    #e83e8c !default;
+$red:     #d9534f !default;
+$orange:  #f47c3c !default;
+$yellow:  #ffc107 !default;
+$green:   #93c54b !default;
+$teal:    #20c997 !default;
+$cyan:    #29abe0 !default;
+
+$primary:       $blue !default;
+$secondary:     $gray-600 !default;
+$success:       $green !default;
+$info:          $cyan !default;
+$warning:       $orange !default;
+$danger:        $red !default;
+$light:         $gray-200 !default;
+$dark:          $gray-800 !default;
+
+$min-contrast-ratio:   2 !default;
+
+// Body
+
+$body-color:                $gray-800 !default;
+
+// Links
+
+$link-color:                $success !default;
+
+// Fonts
+
+// stylelint-disable-next-line value-keyword-case
+$font-family-sans-serif:      Roboto, -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !default;
+$headings-font-weight:        400 !default;
+
+// Dropdowns
+
+$dropdown-link-color:               $gray-600 !default;
+$dropdown-link-hover-color:         $dropdown-link-color !default;
+$dropdown-link-hover-bg:            $gray-200 !default;
+$dropdown-link-active-color:        $dropdown-link-color !default;
+$dropdown-link-active-bg:           $dropdown-link-hover-bg !default;
+
+// Navs
+
+$nav-link-padding-x:                .9rem !default;
+$nav-link-disabled-color:           $gray-300 !default;
+$nav-tabs-border-color:             $gray-300 !default;
+$nav-tabs-link-hover-border-color:  $gray-300 !default;
+$nav-tabs-link-active-bg:           $white !default;
+$nav-pills-link-active-color:       $gray-600 !default;
+$nav-pills-link-active-bg:          $gray-200 !default;
+
+
+// Pagination
+
+$pagination-color:                  $gray-600 !default;
+$pagination-bg:                     $gray-200 !default;
+$pagination-border-color:           $gray-300 !default;
+$pagination-hover-color:            $pagination-color !default;
+$pagination-active-color:           $pagination-color !default;
+$pagination-active-bg:              $gray-300 !default;
+$pagination-active-border-color:    $gray-300 !default;
+$pagination-disabled-color:         $gray-300 !default;
+$pagination-disabled-bg:            $gray-200 !default;
+$pagination-disabled-border-color:  $pagination-border-color !default;
+
+// Cards
+
+$card-border-color:                 rgba($gray-300, .75) !default;
+$card-cap-bg:                       rgba($gray-200, .25) !default;
+
+// Popovers
+
+$popover-header-bg:                 $gray-200 !default;
+
+// Modals
+
+$modal-content-border-color:        $gray-300 !default;
+$modal-header-border-color:         $modal-content-border-color !default;
+
+// Progress bars
+
+$progress-bg:                       $gray-300 !default;
+$progress-border-radius:            10px !default;
+$progress-bar-color:                $primary !default;
+
+// List group
+
+$list-group-border-color:           $gray-300 !default;
+$list-group-hover-bg:               $gray-200 !default;
+$list-group-active-color:           $body-color !default;
+$list-group-active-bg:              $gray-200 !default;
+$list-group-active-border-color:    $gray-300 !default;
+$list-group-disabled-color:         $gray-500 !default;
+$list-group-disabled-bg:            $white !default;
+$list-group-action-color:           $list-group-active-color !default;
+$list-group-action-active-color:    $list-group-active-color !default;
+$list-group-action-active-bg:       $gray-300 !default;
+
+// Breadcrumbs
+
+$breadcrumb-padding-y:              .375rem !default;
+$breadcrumb-padding-x:              .75rem !default;
+$breadcrumb-bg:                     $pagination-bg !default;
+$breadcrumb-border-radius:          .25rem !default;
+
+// Close
+
+$btn-close-color:            $white !default;
+$btn-close-opacity:          .8 !default;
+$btn-close-hover-opacity:    1 !default;
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/minty/font.css
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/minty/font.css	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/minty/font.css	(revision 3762)
@@ -0,0 +1,21 @@
+@font-face {
+  font-family: 'Montserrat';
+  font-style: normal;
+  font-weight: 400;
+  font-display: swap;
+  src: url(fonts/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtr6Ew9.woff) format('woff');
+}
+@font-face {
+  font-family: 'Montserrat';
+  font-style: normal;
+  font-weight: 500;
+  font-display: swap;
+  src: url(fonts/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtZ6Ew9.woff) format('woff');
+}
+@font-face {
+  font-family: 'Montserrat';
+  font-style: normal;
+  font-weight: 700;
+  font-display: swap;
+  src: url(fonts/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCuM70w9.woff) format('woff');
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/minty/_variables.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/minty/_variables.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/minty/_variables.scss	(revision 3762)
@@ -0,0 +1,107 @@
+// Minty 5.2.2
+// Bootswatch
+
+$theme: "minty" !default;
+
+//
+// Color system
+//
+
+$white:    #fff !default;
+$gray-100: #f8f9fa !default;
+$gray-200: #f7f7f9 !default;
+$gray-300: #eceeef !default;
+$gray-400: #ced4da !default;
+$gray-500: #aaa !default;
+$gray-600: #888 !default;
+$gray-700: #5a5a5a !default;
+$gray-800: #343a40 !default;
+$gray-900: #212529 !default;
+$black:    #000 !default;
+
+$blue:    #007bff !default;
+$indigo:  #6610f2 !default;
+$purple:  #6f42c1 !default;
+$pink:    #e83e8c !default;
+$red:     #ff7851 !default;
+$orange:  #fd7e14 !default;
+$yellow:  #ffce67 !default;
+$green:   #56cc9d !default;
+$teal:    #20c997 !default;
+$cyan:    #6cc3d5 !default;
+
+$primary:       #78c2ad !default;
+$secondary:     #f3969a !default;
+$success:       $green !default;
+$info:          $cyan !default;
+$warning:       $yellow !default;
+$danger:        $red !default;
+$light:         $gray-100 !default;
+$dark:          $gray-800 !default;
+
+$min-contrast-ratio:   1.45 !default;
+
+// Body
+
+$body-color:                $gray-700 !default;
+$color-contrast-dark:       $body-color !default; // Prefer $body-color over $black inside color-contrast()
+
+// Components
+
+$border-radius:               .4rem !default;
+$border-radius-lg:            .6rem !default;
+$border-radius-sm:            .3rem !default;
+
+// Fonts
+
+// stylelint-disable-next-line value-keyword-case
+$headings-font-family:        Montserrat, -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif !default;
+$headings-color:              $gray-700 !default;
+
+// Tables
+
+$table-border-color:          rgba(0, 0, 0, .05) !default;
+
+$table-bg-scale:              0 !default;
+
+// Dropdowns
+
+$dropdown-link-hover-color:         $white !default;
+$dropdown-link-hover-bg:            $secondary !default;
+
+// Navbar
+
+$navbar-dark-color:                 rgba($white, .6) !default;
+$navbar-dark-hover-color:           $white !default;
+$navbar-light-color:                rgba($black, .3) !default;
+$navbar-light-hover-color:          $gray-700 !default;
+$navbar-light-active-color:         $gray-700 !default;
+$navbar-light-disabled-color:       rgba($black, .1) !default;
+
+// Pagination
+
+$pagination-color:                  $white !default;
+$pagination-bg:                     $primary !default;
+$pagination-border-color:           $primary !default;
+$pagination-hover-color:            $white !default;
+$pagination-hover-bg:               $secondary !default;
+$pagination-hover-border-color:     $pagination-hover-bg !default;
+$pagination-active-bg:              $secondary !default;
+$pagination-active-border-color:    $pagination-active-bg !default;
+$pagination-disabled-color:         $white !default;
+$pagination-disabled-bg:            #cce8e0 !default;
+$pagination-disabled-border-color:  $pagination-disabled-bg !default;
+
+// Alerts
+
+$alert-color-scale:                 0% !default;
+$alert-bg-scale:                    0 !default;
+
+// Breadcrumbs
+
+$breadcrumb-padding-y:              .375rem !default;
+$breadcrumb-padding-x:              .75rem !default;
+$breadcrumb-bg:                     $primary !default;
+$breadcrumb-divider-color:          $white !default;
+$breadcrumb-active-color:           $breadcrumb-divider-color !default;
+$breadcrumb-border-radius:          .25rem !default;
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/minty/_bootswatch.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/minty/_bootswatch.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/dist/minty/_bootswatch.scss	(revision 3762)
@@ -0,0 +1,97 @@
+// Minty 5.2.2
+// Bootswatch
+
+
+// Variables
+
+$web-font-path: "https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500;700&display=swap" !default;
+@if $web-font-path {
+  @import url($web-font-path);
+}
+
+:root {
+  color-scheme: light;
+}
+
+// Navbar
+
+.navbar {
+  font-family: $headings-font-family;
+}
+
+.bg-dark {
+  background-color: $secondary !important;
+}
+
+.border-dark {
+  border-color: $secondary !important;
+}
+
+// Buttons
+
+.btn {
+  font-family: $headings-font-family;
+}
+
+// Forms
+
+legend {
+  font-family: $headings-font-family;
+}
+
+// Navs
+
+.dropdown-menu {
+  font-family: $font-family-sans-serif;
+}
+
+.breadcrumb {
+  a {
+    color: $navbar-dark-color;
+  }
+
+  a:hover {
+    color: $white;
+    text-decoration: none;
+  }
+}
+
+// Indicators
+
+.alert {
+  a,
+  .alert-link {
+    color: $white;
+  }
+
+  &-light {
+
+    &,
+    a:not(.btn),
+    .alert-link {
+      color: $body-color;
+    }
+  }
+}
+
+.badge {
+  color: $white;
+
+  &.bg-light {
+    color: $gray-700;
+  }
+}
+
+// Containers
+
+.card,
+.list-group-item {
+  h1,
+  h2,
+  h3,
+  h4,
+  h5,
+  h6 {
+    color: inherit;
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/package.json
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/package.json	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/lib/bsw5/package.json	(revision 3762)
@@ -0,0 +1,24 @@
+{
+  "name": "bootswatch",
+  "description": "Bootswatch is a collection of themes for Bootstrap.",
+  "version": "5.2.2",
+  "author": "Thomas Park",
+  "homepage": "https://bootswatch.com",
+  "license": "MIT",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/thomaspark/bootswatch.git"
+  },
+  "bugs": {
+    "url": "https://github.com/thomaspark/bootswatch/issues"
+  },
+  "scripts": {
+    "build": "grunt swatch",
+    "docs": "grunt docs",
+    "htmllint": "grunt htmllint",
+    "stylelint": "stylelint \"dist/**/*.scss\" --rd",
+    "release": "grunt release",
+    "test": "npm run stylelint"
+  },
+  "files": "dist/**/*.{css,scss}"
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/sass-utils/color-contrast.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/sass-utils/color-contrast.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/sass-utils/color-contrast.scss	(revision 3762)
@@ -0,0 +1,123 @@
+/////////////////////////////////////////////////////////////////
+// Color contrasting (backported to BS4 from BS5)
+// See https://github.com/twbs/bootstrap/pull/30168
+/////////////////////////////////////////////////////////////////
+
+// A list of pre-calculated numbers of pow(divide((divide($value, 255) + .055), 1.055), 2.4). (from 0 to 255)
+// stylelint-disable-next-line scss/dollar-variable-default, scss/dollar-variable-pattern
+$_luminance-list: .0008 .001 .0011 .0013 .0015 .0017 .002 .0022 .0025 .0027 .003 .0033 .0037 .004 .0044 .0048 .0052 .0056 .006 .0065 .007 .0075 .008 .0086 .0091 .0097 .0103 .011 .0116 .0123 .013 .0137 .0144 .0152 .016 .0168 .0176 .0185 .0194 .0203 .0212 .0222 .0232 .0242 .0252 .0262 .0273 .0284 .0296 .0307 .0319 .0331 .0343 .0356 .0369 .0382 .0395 .0409 .0423 .0437 .0452 .0467 .0482 .0497 .0513 .0529 .0545 .0561 .0578 .0595 .0612 .063 .0648 .0666 .0685 .0704 .0723 .0742 .0762 .0782 .0802 .0823 .0844 .0865 .0887 .0908 .0931 .0953 .0976 .0999 .1022 .1046 .107 .1095 .1119 .1144 .117 .1195 .1221 .1248 .1274 .1301 .1329 .1356 .1384 .1413 .1441 .147 .15 .1529 .1559 .159 .162 .1651 .1683 .1714 .1746 .1779 .1812 .1845 .1878 .1912 .1946 .1981 .2016 .2051 .2086 .2122 .2159 .2195 .2232 .227 .2307 .2346 .2384 .2423 .2462 .2502 .2542 .2582 .2623 .2664 .2705 .2747 .2789 .2831 .2874 .2918 .2961 .3005 .305 .3095 .314 .3185 .3231 .3278 .3325 .3372 .3419 .3467 .3515 .3564 .3613 .3663 .3712 .3763 .3813 .3864 .3916 .3968 .402 .4072 .4125 .4179 .4233 .4287 .4342 .4397 .4452 .4508 .4564 .4621 .4678 .4735 .4793 .4851 .491 .4969 .5029 .5089 .5149 .521 .5271 .5333 .5395 .5457 .552 .5583 .5647 .5711 .5776 .5841 .5906 .5972 .6038 .6105 .6172 .624 .6308 .6376 .6445 .6514 .6584 .6654 .6724 .6795 .6867 .6939 .7011 .7084 .7157 .7231 .7305 .7379 .7454 .7529 .7605 .7682 .7758 .7835 .7913 .7991 .807 .8148 .8228 .8308 .8388 .8469 .855 .8632 .8714 .8796 .8879 .8963 .9047 .9131 .9216 .9301 .9387 .9473 .956 .9647 .9734 .9823 .9911 1;
+
+@function color-contrast($background, $foregrounds: null) {
+
+  // These variables should be defined in _variables.scss, but we also
+  // define them here so that 3rd party libs can use if they want
+  // without polluting the global namespace
+  $black: #000 !default;
+  $white: #fff !default;
+  $color-contrast-dark: $black !default;
+  $color-contrast-light: $white !default;
+  $min-contrast-ratio: 3 !default;
+
+  @if $foregrounds == null {
+    $foregrounds: $color-contrast-light, $color-contrast-dark, $white, $black;
+  } @else {
+    $foregrounds: $foregrounds, $color-contrast-light, $color-contrast-dark, $white, $black;
+  }
+
+  $max-ratio: 0;
+  $max-ratio-color: null;
+
+  @each $color in $foregrounds {
+    $contrast-ratio: contrast-ratio($background, $color);
+    @if $contrast-ratio > $min-contrast-ratio {
+      @return $color;
+    } @else if $contrast-ratio > $max-ratio {
+      $max-ratio: $contrast-ratio;
+      $max-ratio-color: $color;
+    }
+  }
+
+  $color-contrast-warnings: false !default;
+  @if $color-contrast-warnings {
+    @warn "Found no color leading to #{$min-contrast-ratio}:1 contrast ratio against #{$background}...";
+  }
+
+  @return $max-ratio-color;
+}
+
+@function contrast-ratio($background, $foreground: $color-contrast-light) {
+  $l1: luminance($background);
+  $l2: luminance(opaque($background, $foreground));
+
+  @return if($l1 > $l2, divide($l1 + .05, $l2 + .05), divide($l2 + .05, $l1 + .05));
+}
+
+// Return WCAG2.0 relative luminance
+// See https://www.w3.org/WAI/GL/wiki/Relative_luminance
+// See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests
+@function luminance($color) {
+  $rgb: (
+    "r": red($color),
+    "g": green($color),
+    "b": blue($color)
+  );
+
+  @each $name, $value in $rgb {
+    $value: if(divide($value, 255) < .03928, divide(divide($value, 255), 12.92), nth($_luminance-list, $value + 1));
+    $rgb: map-merge($rgb, ($name: $value));
+  }
+
+  @return (map-get($rgb, "r") * .2126) + (map-get($rgb, "g") * .7152) + (map-get($rgb, "b") * .0722);
+}
+
+// Return opaque color
+// opaque(#fff, rgba(0, 0, 0, .5)) => #808080
+@function opaque($background, $foreground) {
+  @return mix(rgba($foreground, 1), $background, opacity($foreground) * 100);
+}
+
+// Added in BS5 as an alternative to the \ operator, which
+// throws warnings in Dart Sass
+// https://github.com/twbs/bootstrap/pull/34245
+@function divide($dividend, $divisor, $precision: 10) {
+  $sign: if($dividend > 0 and $divisor > 0 or $dividend < 0 and $divisor < 0, 1, -1);
+  $dividend: abs($dividend);
+  $divisor: abs($divisor);
+  @if $dividend == 0 {
+    @return 0;
+  }
+  @if $divisor == 0 {
+    @error "Cannot divide by 0";
+  }
+  $remainder: $dividend;
+  $result: 0;
+  $factor: 10;
+  @while ($remainder > 0 and $precision >= 0) {
+    $quotient: 0;
+    @while ($remainder >= $divisor) {
+      $remainder: $remainder - $divisor;
+      $quotient: $quotient + 1;
+    }
+    $result: $result * 10 + $quotient;
+    $factor: $factor * .1;
+    $remainder: $remainder * 10;
+    $precision: $precision - 1;
+    @if ($precision < 0 and $remainder >= $divisor * 5) {
+      $result: $result + 1;
+    }
+  }
+  $result: $result * $factor * $sign;
+  $dividend-unit: unit($dividend);
+  $divisor-unit: unit($divisor);
+  $unit-map: (
+    "px": 1px,
+    "rem": 1rem,
+    "em": 1em,
+    "%": 1%
+  );
+  @if ($dividend-unit != $divisor-unit and map-has-key($unit-map, $dividend-unit)) {
+    $result: $result * map-get($unit-map, $dividend-unit);
+  }
+  @return $result;
+}
+
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/custom/person.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/custom/person.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/custom/person.scss	(revision 3762)
@@ -0,0 +1,29 @@
+.person {
+  display: inline-block;
+  padding: $spacer;
+  border: $border-width solid $border-color;
+  @include border-radius;
+  @include box-shadow;
+  outline: 0;
+  width: 300px;
+
+  // On mobile, span entire width
+  @include media-breakpoint-down(sm) {
+    display: block;
+    width: auto;
+    margin-right: $grid-gutter-width;
+  }
+
+  margin: $grid-gutter-width;
+  margin-right: 0;
+
+  .title {
+    font-weight: bold;
+  }
+  .title, .company {
+    color: $gray-600;
+  }
+}
+.person:last-of-type {
+  margin-right: $grid-gutter-width;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/examples/card/deploy.R
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/examples/card/deploy.R	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/examples/card/deploy.R	(revision 3762)
@@ -0,0 +1,4 @@
+rsconnect::deployApp(
+  rprojroot::find_package_root_file("inst/examples/card"),
+  appName = "card", account = "testing-apps"
+)
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/examples/card/app.R
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/examples/card/app.R	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/examples/card/app.R	(revision 3762)
@@ -0,0 +1,145 @@
+library(shiny)
+library(bslib)
+library(plotly)
+library(leaflet)
+library(gt)
+
+plot_hist <- function(var) {
+  config(
+    plot_ly(y = diamonds[[var]], type = "histogram"),
+    displayModeBar = FALSE
+  )
+}
+
+lorem_ipsum_dolor_sit_amet <- "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Id nibh tortor id aliquet lectus proin nibh nisl. Adipiscing at in tellus integer feugiat. Arcu bibendum at varius vel pharetra vel turpis nunc eget. Cursus sit amet dictum sit amet justo. Sit amet consectetur adipiscing elit. Vestibulum mattis ullamcorper velit sed ullamcorper. Enim facilisis gravida neque convallis a. Elit duis tristique sollicitudin nibh sit amet. Magna eget est lorem ipsum. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim. Mauris in aliquam sem fringilla ut morbi. Id semper risus in hendrerit gravida rutrum quisque non tellus. At erat pellentesque adipiscing commodo elit at imperdiet dui. Fames ac turpis egestas maecenas pharetra convallis posuere morbi. Duis convallis convallis tellus id interdum velit laoreet id. Aliquet lectus proin nibh nisl. Nunc vel risus commodo viverra maecenas accumsan lacus vel facilisis. Bibendum enim facilisis gravida neque convallis a."
+
+main_grid <- layout_column_wrap(
+  width = 1/3, heights_equal = "row",
+  card(
+    full_screen = TRUE,
+    card_header("DT::dataTableOutput()"),
+    card_body_fill(DT::dataTableOutput("DT"))
+  ),
+  navs_pill_card(
+    title = "Shiny outputs",
+    full_screen = TRUE,
+    wrapper = card_body_fill,
+    nav(
+      "plotOutput",
+      plotOutput("plot"),
+      card_body(
+        height = "100px",
+        lorem_ipsum_dolor_sit_amet
+      )
+    ),
+    nav("imageOutput", plotOutput("image"))
+  ),
+  card(
+    full_screen = TRUE,
+    card_header("leaflet (via uiOutput())"),
+    card_body_fill(uiOutput("leaflet", fill = TRUE))
+  ),
+  card(
+    full_screen = TRUE,
+    card_header("plotly::plotlyOutput()"),
+    layout_column_wrap(
+      width = 1/2,
+      plotlyOutput("cut"),
+      plotlyOutput("clarity")
+    ),
+    card_body_fill(plotlyOutput("price"))
+  ),
+  card(
+    full_screen = TRUE,
+    card_header("Static plotly"),
+    card_body_fill(plot_hist("price")),
+    layout_column_wrap(
+      width = 1/2,
+      plot_hist("cut"),
+      plot_hist("clarity")
+    )
+  ),
+  layout_column_wrap(
+    width = 1,
+    card(
+      full_screen = TRUE,
+      card_header("card_image()"),
+      card_image(
+        file = "www/shiny-hex.svg",
+        height = 200,
+        href = "https://github.com/rstudio/shiny"
+      )
+    ),
+    card(
+      full_screen = TRUE,
+      card_header("Scrollable gt()"),
+      card_body_fill(
+        max_height = "400px",
+        max_height_full_screen = "100%",
+        gt::gt(mtcars)
+      )
+    )
+  )
+)
+
+grid_height <- "calc(100vh - 5px)"
+
+ui <- page_fluid(
+  theme = bs_theme(
+    "card-cap-bg" = "#212529",
+    "card-cap-color" = "white"
+  ),
+  layout_column_wrap(
+    width = NULL, heights_equal = "row",
+    height = grid_height,
+    style = css(grid_template_columns = "200px 1fr"),
+    id = "grid_page",
+    card(
+      card_header("Input controls", class = "bg-primary"),
+      checkboxInput(
+        "fixed_height",
+        "Fix height to viewport (this only applies to wide screens)",
+        value = TRUE
+      )
+    ),
+    main_grid
+  )
+)
+
+server <- function(input, output, session) {
+
+  theme_set(theme_minimal(base_size = 16))
+
+  observeEvent(input$fixed_height, ignoreInit = TRUE, {
+    css <- sprintf(
+      "#grid_page { height: %s !important; }",
+      if (input$fixed_height) grid_height else "auto"
+    )
+
+    insertUI(selector = "head", ui = tags$style(HTML(css)))
+  })
+
+  output$DT <- DT::renderDataTable({
+    DT::datatable(mtcars, fillContainer = TRUE)
+  })
+
+  output$plot <- renderPlot({
+    ggplot(mtcars) + geom_point(aes(wt, mpg))
+  })
+
+  output$image <- renderImage({
+    list(src = "www/shiny-hex.svg", width = "100%", height = "100%")
+  }, deleteFile = FALSE)
+
+  output$cut <- renderPlotly(plot_hist("cut"))
+  output$clarity <- renderPlotly(plot_hist("clarity"))
+  output$price <- renderPlotly(plot_hist("price"))
+
+
+  output$leaflet <- renderUI({
+    addTiles(leaflet())
+  })
+  output$gt <- render_gt(gt(mtcars[1:5, ]))
+}
+
+shinyApp(ui, server)
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/examples/card/www/shiny-hex.svg
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/examples/card/www/shiny-hex.svg	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/examples/card/www/shiny-hex.svg	(revision 3762)
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 26.5.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 2521 2911" style="enable-background:new 0 0 2521 2911;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill:#0088DA;}
+	.st1{fill:#E2B058;}
+	.st2{opacity:0.9;fill:#FFFFFF;enable-background:new    ;}
+	.st3{fill:none;}
+	.st4{opacity:0.25;fill:url(#SVGID_1_);enable-background:new    ;}
+	.st5{fill:#0078BE;}
+</style>
+<g id="Layer_1_00000016797738894439544970000003318810302168151739_">
+	<g>
+		<path class="st0" d="M2420.5,669.8l-953.1-550.4L1260.5,0l-206.9,119.4L100.5,669.8L0,727.7v1455.5l100.5,58l965.1,557.2
+			l195.2,112.5l195.2-112.5l965.1-557.2l99.8-57.6V727.7L2420.5,669.8z"/>
+		<path class="st1" d="M1260.5,2171.6c1-1,2.1-2.1,3.1-3.1h-1C1262.2,2169.5,1261.5,2170.6,1260.5,2171.6z"/>
+		<path class="st2" d="M423.8,1568L423.8,1568C412.5,1567.7,420,1568,423.8,1568z M423.5,1568c-11-0.3-6.2,0-2.4,0h5.8h-0.3H423.5
+			C425.9,1568,426.9,1568.4,423.5,1568z M707.9,1400.6c23.6-91.5-87.4-213.4-96.6-225c-0.1-0.1-0.2-0.2-0.3-0.4
+			c-133.2-136.3-64.7-272.4,28.3-257.4c66.9,11,32.3,109.1,68.3,118.7h0.7c21.6,2.1,63.8-49.8,70-67.3
+			c24-67.9-114.6-109.5-156.8-106.7c-84.7,5.1-140.3,51.1-174.3,127c-62.4,139.6,54.2,232.6,124.9,328.4
+			c53.5,72.4,51.1,136.9-14.4,199c-72,68.3-145.2-28.5-154.8-94.7c-8.6-60.7-18.5-100.2-69.3-23c-47,71.7,18.5,159.7,77.7,169
+			C425.3,1569.2,645.7,1617.5,707.9,1400.6z M1628.4,1784.5c-325.2,29.5-803.9,73.4-904.7,425.5c-0.7,2.1-2.4,3.1-4.5,2.4
+			c-1-0.3-1.7-0.7-2.1-1.7C618.3,2041.9,406,1918,209,1923.9c-2.1,0.3-3.8-0.7-4.1-2.7s0.7-3.8,2.7-4.1
+			c507.1-251.8,1025.1-131.1,1572.7-228.9c229.5-60.1,372.1-167.2,449.6-349.4c12.9-22.2,12.2-56.5-23.5-32.1
+			c-55.2,37.4-106.1,91.6-166.1,120.8c-2.7,1.4-5.8,2.7-8.9,3.8c-1,0.3-1.7,1.4-2.1,2.4c-173.9,396.8-657.8,69.7-89.9-13
+			c1.4-0.3,2.4-1.4,2.4-2.4l32-104c0.7-2.1-0.7-3.8-2.4-4.5c-1.4-0.3-3.1,0.3-3.8,1.4c-13,19.2-27.4,37.4-42.9,54.6
+			c-20.2,21.3-36,34.3-48,39.1c-13.7,5.1-28.1,8.2-42.5,8.9c-17.2,1-31.9-5.8-43.2-20.2c-11.3-14.4-17.5-35.7-18.9-63.8
+			c-0.3-4.5-0.3-9.6,0-15.1c0.3-2.1-0.7-3.8-2.4-4.5c-2.1-0.3-3.8,0.7-4.5,2.4c-5.5,10.6-11,20.6-16.5,29.5
+			c-16.1,28.1-36.4,53.9-59.4,76.9c-22.6,22.6-44.6,34.7-64.8,36c-38.1,2.4-58.7-19.2-61.4-64.5c-2.7-43.2,14.4-132.1,51.5-264.5
+			c2.1-5.8,2.7-12,2.4-17.8c-0.7-12-7.5-16.8-21.6-15.8c-16.1,1.4-31.6,7.9-44.3,18.5c-15.8,13.4-28.8,29.9-38.1,48.4
+			c-11.3,20.6-21.3,41.9-30.5,63.5c-9.6,23.7-17.5,48.4-23.7,73.4c-6.9,27.8-12.7,51.1-16.5,69.3c-4.1,18.9-7.9,38.8-11.7,59.4
+			c-2.7,14.4-5.8,32.3-6.5,35l-0.7,2.7c0,0-93.5,6.5-94.3,6.2c-2-16.8,16.7-80.9,18.7-90.6c-17.1,29.9-23.8,39.4-37.6,57.7
+			c-8.9,11.3-18.6,22.1-28.8,32.3c-22.6,22.6-44.6,34.7-64.8,36c-1.4,0-2.7,0-4.1,0c-33.3,0-52.1-26.1-55.2-77.5
+			c-0.7-10.3-1-20.6-0.7-31.2c0.3-2.1-0.7-3.8-2.4-4.5c-2.1-0.3-3.8,0.7-4.5,2.4c-51.8,95-98.5,143.1-141.7,145.8
+			c-38.1,2.4-58.7-20.2-61.8-67.6c-3.4-52.5,11-129.4,42.9-228.2c6.9-24.4,9.9-41.2,9.3-50.1c-1-13.7-7.2-15.4-12.4-15.4h-1.4
+			c-4.5,0.3-14.1,3.1-34.3,15.8c-17.8,11.7-33.3,26.1-46,42.9c-14.8,19.2-26.4,40.8-35,63.5c-8.9,24-16.1,44.9-21.3,62.4
+			s-10.3,39.1-15.4,63.8s-9.6,46-13.7,61.8c-4.1,15.8-8.2,34-12.4,54.9l-0.7,2.7l-90.6,5.8c-2.1,0-3.8-1.4-3.8-3.4
+			c0-0.3,0-0.7,0-1.4l0,0c13.4-46.3,32.3-121.5,56.3-223c24-101.6,46-182.9,63.8-241.2c15.4-50.8,33.6-100.9,54.9-149.3
+			c16.5-37.7,38.8-73.1,65.9-104.3c25.7-28.8,54.6-44.3,85.1-46.3c32.3-2.1,49.4,14.1,51.8,47.4c1.4,22.3-5.1,52.2-19.2,89.6
+			c-25.7,66.2-68.6,143.4-128,229.5c-1.4,1.4-1.4,3.8,0,5.1s3.8,1.4,5.1,0c10.3-7.9,21.3-15.1,32.9-20.9c17.2-8.9,36-14.1,55.6-15.8
+			c36.7-2.4,56.3,14.4,58.7,49.8c1,13-0.3,26.1-4.1,38.4c-3.4,11.3-7.2,24.7-11.7,39.5c-4.1,14.8-7.5,27.1-10.3,36.4
+			c-2.7,9.6-6.2,22.3-10.6,38.4c-4.5,16.1-7.9,30.2-9.9,41.2c-6.2,27.8-8.6,50.1-7.5,66.2c1.4,20.6,9.6,20.6,12.4,20.6h1
+			c34.7-2.1,75.5-62.4,121.8-179.1c0.3-0.7,0.3-1,0.7-1.7c10.6-38.4,24-76.2,40.1-112.5c19.2-42.2,42.5-64.5,70-66.2l54.9-2.7
+			c2.1,0,3.8,1.4,3.8,3.4c0,1-0.3,2.1-1,2.7l0,0c-8.6,8.2-19.9,30.2-33.6,65.5c-14.4,38.1-24.4,64.2-30.9,81.7
+			c-6.5,18.2-14.1,42.9-22,73.8s-11.3,55.6-9.9,74.1c1.7,24.4,11,24.4,14.1,24.4h1c4.8-0.3,13.7-3.8,29.8-18.5
+			c12.4-11.3,23-24,31.9-38.1c8.2-13.4,17.2-30.2,27.1-50.8c9.9-20.6,18.5-38.4,25.7-53.5c7.9-16.1,11-21.6,13-23.7l4.5-8.2
+			c16.8-67.9,24.7-115.6,23-142.1c0-4.5-1-8.9-3.1-13l0,0c-1-1.4-1-3.8,0.7-4.8c0.7-0.3,1.4-0.7,2.1-0.7l38.1-2.4
+			c22.3-1.4,36.4,0,43.6,4.8s11.7,12.7,12,20.9c0,8.2-0.7,16.8-2.4,25c-0.3,2.1,1,3.8,3.1,4.1c1,0.3,2.4-0.3,3.1-1
+			c42.9-44.6,87.5-68.6,133.5-71.4c36.7-2.4,56.6,15.1,58.7,51.8c0.7,11.7,0,23.3-2.4,35s-8.2,34.3-18.5,69.3
+			c-21.6,75.1-31.9,125.6-30.2,150.3c1,17.5,7.9,19.6,13,19.6h1c4.8-0.3,13.7-3.8,29.5-18.9c12.4-11.7,23-24.7,32.3-38.8
+			c9.9-16.1,19.2-32.9,27.4-50.1c9.9-19.9,18.2-37.7,25.4-52.8c2.4-5.5,4.5-9.6,6.2-13c0-0.3,0.3-0.3,0.3-0.7
+			c9.9-41.9,21.6-76.5,35-103.3c15.4-31.6,32.9-52.5,51.5-62.8c18.5-10.3,43.9-16.1,76.5-18.2l0,0c4.1-0.3,7.5,2.7,7.9,6.5
+			c0,0.3,0,0.3,0,0.7c0.3,3.8-1.7,7.9-5.8,13c-23,25-45.3,69.3-66.9,131.8c-21.6,62.4-30.9,114.9-28.5,156.8
+			c1.4,19.2,6.2,29.2,14.4,29.2h0.7c20.2-1.4,46-26.4,75.8-74.8c29.2-46,52.1-95.4,68.6-147.2c2.1-6.9,4.8-16.5,8.6-29.5
+			c3.8-13,6.5-21.6,7.9-26.4s4.1-11.7,7.5-20.2c2.3-6.7,5.7-12.8,9.7-18.5c0.2-0.3,0.4-0.5,0.6-0.8c2.7-3,6.7-7,11.3-12
+			c4.8-5.1,10.3-8.9,16.8-11c16.1-4.8,32.6-7.9,49.4-9.3l38.1-2.4c1.7-0.7,3.8,0.3,4.5,2.1c0.7,1.7-0.3,3.8-2.1,4.5l-0.7,0.7
+			c-17.2,13.4-34,45.3-49.7,95c-13,42.2-24,81.3-32.6,116s-14.1,55.9-16.1,63.5c-2.1,7.5-6.5,26.1-13.4,54.2
+			c-5.1,21.3-9.6,38.8-13.4,52.8c-0.7,1.7,0,3.8,1.7,4.5c1,0.3,2.4,0.3,3.4-0.7c37.4-22.3,71.7-49.1,102.9-79.6
+			c17.5-17.5,156.4-164.1,156.4-71.4C2302.3,1577,1953.6,1755,1628.4,1784.5z M1041.4,812.5c-13.4,0.7-37.1,21.3-72.7,113.2
+			C944,989.2,920,1061.6,897,1141.2c-0.7,2.1,0.7,3.8,2.4,4.5c1.4,0.3,3.1,0,4.1-1.4c61.8-94.4,104.6-172.9,127.3-234.3
+			c14.1-41.9,20.6-69.7,19.9-82c-1-15.1-6.9-15.1-8.6-15.1L1041.4,812.5z M1927.1,1470c-14.3,2.7-190.1,48-172.3,86.9
+			C1775.1,1601,1893.7,1544.8,1927.1,1470z M1318.9,1017.7L1318.9,1017.7c22-1,49.4-9.3,55.9-41.9c3.1-14.8-5.8-31.6-11.3-36.4
+			c-5.5-4.8-13-6.9-23-6.2s-22,6.9-33.3,17.5c-15.1,14.1-14.4,34.3-9.6,47.7C1302.1,1009.8,1310,1017.3,1318.9,1017.7z"/>
+		<path class="st3" d="M2287.7,676.6c-180.1,288.1-572.6,487.9-1027.6,487.9C804.9,1164.5,412.8,965,232.5,677l-95.9,55.3
+			l-64.4,37.1v1371.9l64.3,37.1l965.1,557.2l159.1,91.7l159.1-91.7l965.1-557.2l63.7-36.8V769.5l-64.3-37.1L2287.7,676.6z"/>
+		
+			<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="1256.8513" y1="-1247.4922" x2="1261.5251" y2="418.9951" gradientTransform="matrix(1 0 0 1 0 736.4382)">
+			<stop  offset="0" style="stop-color:#FFFFFF;stop-opacity:0.83"/>
+			<stop  offset="0.56" style="stop-color:#FFFFFF;stop-opacity:0.37"/>
+			<stop  offset="1" style="stop-color:#FFFFFF;stop-opacity:0"/>
+		</linearGradient>
+		<path class="st4" d="M1260.1,1152.8c455,0,847.5-199.8,1027.6-487.9l-856.5-494.6l-170.7-98.5l-170.7,98.5l-857.2,495
+			C412.9,953.3,804.9,1152.8,1260.1,1152.8z"/>
+		<path class="st5" d="M2420.5,669.8l-953.1-550.4L1260.5,0l-206.9,119.4L100.5,669.8L0,727.7v1455.5l100.5,58l965.1,557.2
+			l195.2,112.5l195.2-112.5l965.1-557.2l99.8-57.6V727.7L2420.5,669.8z M2448.7,2141.8l-63.7,36.8l-965.1,557.2l-159.1,91.7
+			l-159.1-91.7l-965.1-557.2l-64.3-37.1v-1372l64.4-37.1l95.9-55.3l857.2-495l170.7-98.5l170.7,98.5l856.5,494.6l96.6,55.8
+			l64.3,37.1L2448.7,2141.8L2448.7,2141.8z"/>
+		<polygon class="st3" points="2287.7,676.6 1431.2,182 2384.3,732.4 		"/>
+	</g>
+</g>
+<g id="Layer_2_00000100375734305614562830000003601880053455265933_">
+</g>
+</svg>
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/examples/flights/app.R
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/examples/flights/app.R	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/examples/flights/app.R	(revision 3762)
@@ -0,0 +1,471 @@
+library(shiny)
+library(bslib)
+library(dplyr)
+library(lubridate)
+library(plotly)
+library(nycflights13)
+library(histoslider)
+library(rlang)
+
+# Data prep
+flights <- flights %>%
+  left_join(
+    airports %>%
+      transmute(dest_name = paste0(name, " (", faa, ")"), dest = faa, end_lat = lat, end_lon = lon)
+  ) %>%
+  filter(!is.na(dest_name)) %>%
+  left_join(
+    airports %>% select(origin = faa, start_lat = lat, start_lon = lon)
+  ) %>%
+  left_join(airlines, by = "carrier") %>%
+  rename(carrier_name = name) %>%
+  left_join(weather) %>%
+  mutate(
+    # The overwhelming majority of precipation is 0 so transform
+    # with some help from MASS::boxcox() https://stats.stackexchange.com/a/1452/48604
+    precip = scales::rescale(precip^-1.55/-.55),
+    date = lubridate::ymd(paste(year, month, day, sep = "-"))
+  )
+
+PRIMARY <- "#0675DD"
+
+sidebar <- card(
+  card_header("Filter controls"),
+  uiOutput("origin_reset"),
+  checkboxGroupInput(
+    "origin",
+    span("Origin", icon("plane-departure")),
+    choices = sort(unique(flights$origin)),
+    inline = TRUE
+  ),
+  selectInput(
+    "dest_name",
+    span("Destination", icon("plane-arrival")),
+    choices = sort(unique(flights$dest_name)),
+    multiple = TRUE,
+    width = "100%"
+  ),
+  selectInput(
+    "carrier_name",
+    span("Carrier", icon("user-tie")),
+    unique(flights$carrier_name),
+    multiple = TRUE,
+    width = "100%"
+  ),
+  input_histoslider(
+    "sched_dep_time", "Departure time",
+    flights$sched_dep_time,
+    options = list(
+      handleLabelFormat = "0d",
+      selectedColor = PRIMARY
+    )
+  ),
+  input_histoslider(
+    "sched_arr_time", "Arrival time",
+    flights$sched_arr_time,
+    options = list(
+      handleLabelFormat = "0d",
+      selectedColor = PRIMARY
+    )
+  ),
+  input_histoslider(
+    "date", "Date",
+    flights$date, breaks = "months",
+    options = list(
+      handleLabelFormat = "%b %e",
+      selectedColor = PRIMARY
+    )
+  )
+)
+
+
+flights_card <- card(
+  full_screen = TRUE,
+  card_header("Flight paths"),
+  card_body_fill(plotlyOutput("flight_paths")),
+  card_footer("Marker areas are proportional to mean arrival delay")
+)
+
+delay_corr_card <- card(
+  full_screen = TRUE,
+  card_header(
+    "Arrival vs departure delay",
+    checkboxInput("scatter_summarize", "Summarize", TRUE, width = "fit-content"),
+    class = "d-flex justify-content-between"
+  ),
+  card_body_fill(plotlyOutput("scatter_delay"))
+)
+
+delay_card <- navs_pill_card(
+  title = "Arrival delay",
+  full_screen = TRUE,
+  wrapper = card_body_fill,
+  nav(
+    "Overall",
+    plotlyOutput("arr_delay")
+  ),
+  nav(
+    "Over time",
+    plotlyOutput("arr_delay_series")
+  )
+)
+
+main <- layout_column_wrap(
+  width = 1, heights_equal = "row",
+  uiOutput("value_boxes", fill = TRUE),
+  layout_column_wrap(
+    width = "200px", class = "my-3",
+    flights_card, delay_corr_card
+  ),
+  layout_column_wrap(
+    width = 1,
+    delay_card
+  )
+)
+
+
+flights_ui <- layout_column_wrap(
+  height = "calc(100vh - 90px)",
+  width = NULL, style = "grid-template-columns: 280px 1fr",
+  sidebar, main
+)
+
+
+ui <- page_navbar(
+  fluid = TRUE,
+  theme = bs_theme(
+    base_font = font_google(
+      "Open Sans", wght = c(300, 400, 500, 600, 700, 800),
+      ital = c(0, 1)
+    ),
+    "primary" = PRIMARY,
+    "navbar-bg" = PRIMARY
+  ),
+  title = tags$span(
+    tags$img(
+      src = "logo.png",
+      style = "width:46px;height:auto;margin-right:24px;"
+    ),
+    "Demo"
+  ),
+  nav("NYC Flights", flights_ui),
+  nav_spacer(),
+  nav_item(
+    tags$a(
+      tags$span(
+        bsicons::bs_icon("code-slash"), "Source code"
+      ),
+      href = "https://github.com/rstudio/bslib/tree/main/inst/examples/demo",
+      target = "_blank"
+    )
+  )
+)
+
+server <- function(input, output, session) {
+  # ---------------------------------------------------------
+  # Flights tab logic
+  #
+  # WARNING: this server-side filtering logic is VERY experimental
+  # at this point and won't be easily adapt to different use cases.
+  # If you feel tempted to use it, use with caution.
+  # ---------------------------------------------------------
+
+  # Mapping from input id name to updating input function
+  input_discrete_vars <- list(
+    origin = function(...) updateCheckboxGroupInput(..., inline = TRUE),
+    dest_name = updateSelectInput,
+    carrier_name = updateSelectInput
+  )
+  input_numeric_vars <- list(
+    sched_dep_time = update_histoslider,
+    sched_arr_time = update_histoslider,
+    date = update_histoslider
+  )
+  input_vars <- c(
+    input_discrete_vars,
+    input_numeric_vars
+  )
+
+  filter_index <- function(d) {
+    idx <- rep(TRUE, nrow(d))
+    for (var in names(d)) {
+      idx <- idx & filter_col(d, var)
+    }
+    idx & !is.na(idx)
+  }
+
+  filter_col <- function(d, var) {
+    vals <- d[[var]]
+    input_val <- input[[var]]
+    if (is.null(input_val)) {
+      return(TRUE)
+    }
+
+    if (is.character(vals) || is.factor(vals) || is.logical(vals)) {
+      return(d[[var]] %in% input_val)
+    }
+
+    # N.B. between() will remove NAs, which we probably don't
+    # want to remove until the slider is considered 'active'
+    rng <- range(vals, na.rm = TRUE)
+    active <- isTRUE(rng[1] <= input_val[1] || input_val[2] <= rng[2])
+
+    if (!active) {
+      return(TRUE)
+    }
+
+    dplyr::between(vals, input_val[1], input_val[2])
+  }
+
+  # When a particular input filter changes, we need to update every other filter
+  # with data
+  lapply(names(input_vars), function(var) {
+
+    index <- reactive({
+      filter_index(flights[, setdiff(names(input_vars), var)])
+    })
+
+    observeEvent(index(), ignoreInit = TRUE, ignoreNULL = FALSE, {
+
+      d <- flights[index(), ]
+      if (nrow(d) == 0) return()
+      input_val <- input[[var]]
+      update_input_func <- input_vars[[var]]
+
+      if (var %in% names(input_discrete_vars)) {
+        choices <- sort(unique(d[[var]]))
+        update_input_func(
+          inputId = var, choices = choices, selected = input_val %||% character(0)
+        )
+      } else {
+        update_input_func(
+          id = var,
+          values = d[[var]],
+          start = input_val[1],
+          end = input_val[2]
+        )
+      }
+
+    })
+  })
+
+  output$origin_reset <- renderUI({
+    actionLink(
+      "origin_reset", "Reset",
+      style = htmltools::css(
+        text_decoration = "none",
+        font_weight = 700,
+        font_size = ".875rem",
+        float = "right",
+        visibility = if (length(input$origin) > 0) "visible" else "hidden",
+        margin_top = "-7px"
+      )
+    )
+  })
+
+  observeEvent(input$origin_reset, {
+    updateCheckboxGroupInput(
+      inputId = "origin",
+      choices = sort(unique(flights$origin)),
+      selected = character(0)
+    )
+  })
+
+  # Flights with all filters applied (i.e., data used for value boxes/plots)
+  flight_dat <- reactive({
+    flights[filter_index(flights), ]
+  })
+
+  output$value_boxes <- renderUI({
+    d <- flight_dat()
+    n_flights <- value_box(
+      "A TOTAL OF",
+      paste(nrow(d), "flights"),
+      paste(
+        "Across", length(unique(d$dest_name)),
+        "destinations"
+      ),
+      tags$p(paste(
+        "On", length(unique(d$carrier_name)), "different carriers"
+      )),
+      showcase = bsicons::bs_icon("airplane")
+    )
+
+    delay_dep <- value_box(
+      "AVERAGE DEPARTURE",
+      paste(
+        round(mean(d$dep_delay, na.rm = T), 0),
+        "mins late"
+      ),
+      paste0(
+        round(100 * sum(d$dep_delay > 0, na.rm = T) / nrow(d), 1),
+        "% of flights depart late"
+      ),
+      showcase = bsicons::bs_icon("hourglass-split")
+    )
+
+    delay_arr <- value_box(
+      "AVERAGE ARRIVAL",
+      paste(
+        round(mean(d$arr_delay, na.rm = T), 0),
+        "mins late"
+      ),
+      paste0(
+        round(100 * sum(d$arr_delay > 0, na.rm = TRUE) / nrow(d), 1),
+        "% of flights arrive late"
+      ),
+      showcase = bsicons::bs_icon("hourglass-bottom")
+    )
+
+    layout_column_wrap(width = 1/3, n_flights, delay_dep, delay_arr)
+  })
+
+  output$flight_paths <- renderPlotly({
+    flight_dat() %>%
+      group_by(start_lon, start_lat, end_lon, end_lat, origin, dest) %>%
+      summarise(mean_delay = mean(arr_delay, na.rm = TRUE)) %>%
+      plot_geo(color = I("#0D6EFD"), showlegend = FALSE) %>%
+      add_segments(
+        x = ~start_lon, xend = ~end_lon,
+        y = ~start_lat, yend = ~end_lat,
+        alpha = 0.5, size = I(1), hoverinfo = "none"
+      ) %>%
+      add_markers(
+        x = ~end_lon, y = ~end_lat, size = ~mean_delay,
+        hoverinfo = "text", alpha = 0.1,
+        text = ~paste0(
+          origin, " -> ", dest, "<br>",
+          "Average delay: ", round(mean_delay, 1)
+        )
+      ) %>%
+      config(displayModeBar = FALSE) %>%
+      layout(
+        geo = list(
+          projection = list(
+            type = 'orthographic',
+            rotation = list(lon = -100, lat = 40, roll = 0)
+          ),
+          showland = TRUE,
+          landcolor = toRGB("gray95"),
+          countrycolor = toRGB("gray80")
+        )
+      )
+  })
+
+  output$scatter_delay <- renderPlotly({
+    d <- flight_dat()
+    req(nrow(d) > 0)
+
+    if (isTRUE(input$scatter_summarize)) {
+      x <- d$dep_delay
+      y <- d$arr_delay
+      p <- plot_ly() %>%
+        add_histogram2dcontour(
+          x = x, y = y, hovertemplate = "Number of flights: %{z}<extra></extra>"
+        ) %>%
+        layout(
+          xaxis = list(
+            title = "Departure delay",
+            range = c(-30, 100)
+          ),
+          yaxis = list(
+            title = "Arrival delay",
+            range = c(-50, 100)
+          )
+        ) %>%
+        colorbar(title = "Number of flights", y = 0.5, yanchor = "middle")
+
+      return(p)
+    }
+
+    m <- loess(arr_delay~dep_delay, data = d)
+    rng <- range(d$dep_delay, na.rm = TRUE)
+    grid <- data.frame(
+      dep_delay = seq(rng[1], rng[2], length = 100)
+    )
+    grid <- modelr::add_predictions(grid, m)
+
+    plot_ly() %>%
+      add_markers(
+        data = d,
+        x = ~dep_delay,
+        y = ~arr_delay,
+        stroke = I(PRIMARY),
+        color = I("transparent"),
+        span = I(1),
+        text = ~paste0(
+          origin, " -> ",
+          substr(dest_name, nchar(dest_name) - 3, nchar(dest_name) - 1), "\n",
+          carrier_name, "\n",
+          "Arrival: ", arr_delay, "\n",
+          "Departure: ", dep_delay, "\n"
+        ),
+        hoverinfo = "text",
+        name = "Flights"
+      ) %>%
+      add_lines(
+        data = grid,
+        x = ~dep_delay,
+        y = ~pred,
+        text = ~paste0("Given a departure delay of ", round(dep_delay), "\n expect an arrival delay of ", round(pred)),
+        hoverinfo = "text",
+        name = "Predicted"
+      ) %>%
+      layout(
+        legend = list(
+          orientation = "h",
+          x = 0.1, xanchor = "left",
+          y = 0.95, yanchor = "top",
+          bgcolor = "transparent"
+        ),
+        xaxis = list(title = "Departure delay"),
+        yaxis = list(title = "Arrival delay")
+      ) %>%
+      toWebGL()
+  })
+
+
+  output$arr_delay <- renderPlotly({
+    x <- flight_dat()$arr_delay
+    req(length(x) > 0)
+
+    x_mean <- mean(x, na.rm = TRUE)
+    end <- quantile(x, probs = 0.99, na.rm = TRUE)
+    plot_ly(x = x, hovertemplate = "%{y} flights were %{x} min late <extra></extra>", color = I(PRIMARY)) %>%
+      config(displayModeBar = FALSE) %>%
+      rangeslider(start = min(x, na.rm = TRUE), end = as.numeric(end)) %>%
+      # TODO: add annotations for each line?
+      layout(
+        shapes = list(
+          type = "line",
+          x0 = x_mean, x1 = x_mean,
+          y0 = 0, y1 = 1,
+          yref = "paper",
+          line = list(color = "orange", dash = "solid")
+        )
+      )
+  })
+
+  output$arr_delay_series <- renderPlotly({
+    d <- flight_dat()
+    req(nrow(d) > 0)
+
+    d %>%
+      group_by(date) %>%
+      summarise(arr_delay_mean = mean(arr_delay, na.rm = TRUE)) %>%
+      plot_ly(
+        x = ~date, y = ~arr_delay_mean,
+        hovertemplate = "%{y:.1f}<extra></extra>",
+        color = I(PRIMARY)
+      ) %>%
+      add_lines() %>%
+      layout(
+        hovermode = "x",
+        xaxis = list(title = "", tickformat = "%b %e"),
+        yaxis = list(title = "Average delay")
+      )
+  })
+
+}
+
+shinyApp(ui, server)
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/examples/flights/www/logo.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/examples/flights/www/logo.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/examples/flights/deploy.R
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/examples/flights/deploy.R	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/examples/flights/deploy.R	(revision 3762)
@@ -0,0 +1,4 @@
+rsconnect::deployApp(
+  rprojroot::find_package_root_file("inst/examples/flights"),
+  appName = "flights", account = "testing-apps"
+)
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/examples/value_box/deploy.R
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/examples/value_box/deploy.R	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/examples/value_box/deploy.R	(revision 3762)
@@ -0,0 +1,4 @@
+rsconnect::deployApp(
+  rprojroot::find_package_root_file("inst/examples/value_box"),
+  appName = "value_box", account = "testing-apps"
+)
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/examples/value_box/app.R
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/examples/value_box/app.R	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/bslib/examples/value_box/app.R	(revision 3762)
@@ -0,0 +1,99 @@
+library(shiny)
+library(bslib)
+library(bsicons)
+library(plotly)
+
+ui <- page_fluid(
+  theme = bslib::bs_theme(
+    base_font = font_google("Atkinson Hyperlegible")
+  ),
+  br(),
+  layout_column_wrap(
+    width = "200px",
+    class = "mt-3",
+    value_box(
+      title = "Unemployment Rate",
+      value = "2.7%",
+      p("Started at 1.5%"),
+      p("Averaging 3%"),
+      p("Peaked at 5.2% in Dec 1982"),
+      showcase = plotlyOutput("unemploy"),
+      full_screen = TRUE
+    ),
+    value_box(
+      title = "Personal Savings Rate",
+      value = "7.6%",
+      p("Started at 12.6%"),
+      p("Averaging 8.6%"),
+      p("Peaked at 17.3% in May 1975"),
+      showcase = plotlyOutput("psavert"),
+      showcase_layout = showcase_top_right(),
+      full_screen = TRUE,
+      theme_color = "success"
+    ),
+    value_box(
+      title = "Personal Consumption",
+      value = "$3.8B",
+      p("Started at $0.25B"),
+      p("Averaging $1.7B"),
+      showcase = bsicons::bs_icon("piggy-bank", size = "100%"),
+      full_screen = TRUE,
+      theme_color = "danger"
+    )
+  )
+)
+
+server <- function(input, output) {
+
+  output$unemploy <- renderPlotly({
+    plotly_time_series(
+      economics, x = ~date, y = ~100 * unemploy / pop
+    )
+  })
+
+  output$psavert <- renderPlotly({
+    plotly_time_series(
+      economics, x = ~date, y = ~psavert
+    )
+  })
+
+  output$pce <- renderPlotly({
+    plotly_time_series(
+      economics, x = ~date, y = ~ 100 * pce / pop
+    )
+  })
+
+  plotly_time_series <- function(d, x, y) {
+    info <- getCurrentOutputInfo()
+    large <- isTRUE(info$height() > 200)
+
+    plot_ly(d, x = x, y = y) %>%
+      add_lines(
+        color = I(info$fg()),
+        span = I(1),
+        #hoverinfo = if (!large) "none",
+        fill = 'tozeroy',
+        alpha = 0.2
+      ) %>%
+      layout(
+        hovermode = "x",
+        margin = list(t = 0, r = 0, l = 0, b = 0),
+        font = list(color = info$fg()),
+        paper_bgcolor = "transparent",
+        plot_bgcolor = "transparent",
+        xaxis = list(
+          title = "",
+          visible = large,
+          showgrid = FALSE
+        ),
+        yaxis = list(
+          title = "",
+          visible = large,
+          showgrid = FALSE
+        )
+      ) %>%
+      config(displayModeBar = FALSE)
+  }
+}
+
+shinyApp(ui, server)
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/ggplot2/help/figures/lifecycle-archived.svg
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/ggplot2/help/figures/lifecycle-archived.svg	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/ggplot2/help/figures/lifecycle-archived.svg	(revision 3762)
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="110" height="20"><linearGradient id="b" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="a"><rect width="110" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#a)"><path fill="#555" d="M0 0h53v20H0z"/><path fill="#e05d44" d="M53 0h57v20H53z"/><path fill="url(#b)" d="M0 0h110v20H0z"/></g><g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="110"> <text x="275" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="430">lifecycle</text><text x="275" y="140" transform="scale(.1)" textLength="430">lifecycle</text><text x="805" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="470">archived</text><text x="805" y="140" transform="scale(.1)" textLength="470">archived</text></g> </svg>
\ No newline at end of file
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/ggplot2/help/figures/lifecycle-questioning.svg
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/ggplot2/help/figures/lifecycle-questioning.svg	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/ggplot2/help/figures/lifecycle-questioning.svg	(revision 3762)
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="126" height="20"><linearGradient id="b" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="a"><rect width="126" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#a)"><path fill="#555" d="M0 0h53v20H0z"/><path fill="#007ec6" d="M53 0h73v20H53z"/><path fill="url(#b)" d="M0 0h126v20H0z"/></g><g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="110"><text x="275" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="430">lifecycle</text><text x="275" y="140" transform="scale(.1)" textLength="430">lifecycle</text><text x="885" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="630">questioning</text><text x="885" y="140" transform="scale(.1)" textLength="630">questioning</text></g> </svg>
\ No newline at end of file
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/ggplot2/help/figures/lifecycle-maturing.svg
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/ggplot2/help/figures/lifecycle-maturing.svg	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/ggplot2/help/figures/lifecycle-maturing.svg	(revision 3762)
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="114" height="20"><linearGradient id="b" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="a"><rect width="114" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#a)"><path fill="#555" d="M0 0h53v20H0z"/><path fill="#007ec6" d="M53 0h61v20H53z"/><path fill="url(#b)" d="M0 0h114v20H0z"/></g><g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="110"><text x="275" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="430">lifecycle</text><text x="275" y="140" transform="scale(.1)" textLength="430">lifecycle</text><text x="825" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="510">maturing</text><text x="825" y="140" transform="scale(.1)" textLength="510">maturing</text></g> </svg>
\ No newline at end of file
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/ggplot2/help/figures/lifecycle-defunct.svg
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/ggplot2/help/figures/lifecycle-defunct.svg	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/ggplot2/help/figures/lifecycle-defunct.svg	(revision 3762)
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="104" height="20"><linearGradient id="b" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="a"><rect width="104" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#a)"><path fill="#555" d="M0 0h53v20H0z"/><path fill="#e05d44" d="M53 0h51v20H53z"/><path fill="url(#b)" d="M0 0h104v20H0z"/></g><g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="110"><text x="275" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="430">lifecycle</text><text x="275" y="140" transform="scale(.1)" textLength="430">lifecycle</text><text x="775" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="410">defunct</text><text x="775" y="140" transform="scale(.1)" textLength="410">defunct</text></g> </svg>
\ No newline at end of file
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/ggplot2/help/figures/logo.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/ggplot2/help/figures/logo.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/ggplot2/help/figures/lifecycle-stable.svg
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/ggplot2/help/figures/lifecycle-stable.svg	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/ggplot2/help/figures/lifecycle-stable.svg	(revision 3762)
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="96" height="20"><linearGradient id="b" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="a"><rect width="96" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#a)"><path fill="#555" d="M0 0h53v20H0z"/><path fill="#4c1" d="M53 0h43v20H53z"/><path fill="url(#b)" d="M0 0h96v20H0z"/></g><g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="110"><text x="275" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="430">lifecycle</text><text x="275" y="140" transform="scale(.1)" textLength="430">lifecycle</text><text x="735" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="330">stable</text><text x="735" y="140" transform="scale(.1)" textLength="330">stable</text></g> </svg>
\ No newline at end of file
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/ggplot2/help/figures/README-example-1.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/ggplot2/help/figures/README-example-1.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/ggplot2/help/figures/lifecycle-experimental.svg
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/ggplot2/help/figures/lifecycle-experimental.svg	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/ggplot2/help/figures/lifecycle-experimental.svg	(revision 3762)
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="136" height="20"><linearGradient id="b" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="a"><rect width="136" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#a)"><path fill="#555" d="M0 0h53v20H0z"/><path fill="#fe7d37" d="M53 0h83v20H53z"/><path fill="url(#b)" d="M0 0h136v20H0z"/></g><g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="110"><text x="275" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="430">lifecycle</text><text x="275" y="140" transform="scale(.1)" textLength="430">lifecycle</text><text x="935" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="730">experimental</text><text x="935" y="140" transform="scale(.1)" textLength="730">experimental</text></g> </svg>
\ No newline at end of file
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/ggplot2/help/figures/lifecycle-deprecated.svg
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/ggplot2/help/figures/lifecycle-deprecated.svg	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/ggplot2/help/figures/lifecycle-deprecated.svg	(revision 3762)
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="124" height="20"><linearGradient id="b" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="a"><rect width="124" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#a)"><path fill="#555" d="M0 0h53v20H0z"/><path fill="#fe7d37" d="M53 0h71v20H53z"/><path fill="url(#b)" d="M0 0h124v20H0z"/></g><g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="110"><text x="275" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="430">lifecycle</text><text x="275" y="140" transform="scale(.1)" textLength="430">lifecycle</text><text x="875" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="610">deprecated</text><text x="875" y="140" transform="scale(.1)" textLength="610">deprecated</text></g> </svg>
\ No newline at end of file
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/ggplot2/help/figures/lifecycle-superseded.svg
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/ggplot2/help/figures/lifecycle-superseded.svg	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/ggplot2/help/figures/lifecycle-superseded.svg	(revision 3762)
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="128" height="20"><linearGradient id="b" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="a"><rect width="128" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#a)"><path fill="#555" d="M0 0h55v20H0z"/><path fill="#007ec6" d="M55 0h73v20H55z"/><path fill="url(#b)" d="M0 0h128v20H0z"/></g><g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="110"> <text x="285" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="450">lifecycle</text><text x="285" y="140" transform="scale(.1)" textLength="450">lifecycle</text><text x="905" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="630">superseded</text><text x="905" y="140" transform="scale(.1)" textLength="630">superseded</text></g> </svg>
\ No newline at end of file
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppAttributePackage/src/rcpp_test.cpp
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppAttributePackage/src/rcpp_test.cpp	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppAttributePackage/src/rcpp_test.cpp	(revision 3762)
@@ -0,0 +1,95 @@
+#include <Rcpp.h>
+using namespace Rcpp;
+
+// [[Rcpp::interfaces(r, cpp)]]
+
+// [[Rcpp::export]]
+List test_no_attributes(List x, bool verbose) {
+  if(x.size() > 0) {
+    CharacterVector first_element = x[0];
+    return List::create(first_element, verbose);
+  } else {
+    return List::create(verbose);
+  }
+}
+
+// [[Rcpp::export( signature = {x = list("{A}", "B"), verbose = getOption("verbose")} )]]
+List test_signature(List x, bool verbose) {
+  if(x.size() > 0) {
+    CharacterVector first_element = x[0];
+    return List::create(first_element, verbose);
+  } else {
+    return List::create(verbose);
+  }
+}
+
+// [[Rcpp::export( rng = false, signature = {x = list("{A}", "B"), verbose = getOption("verbose")}, invisible = true )]]
+List test_rng_false_signature_invisible_true(List x, bool verbose) {
+  if(x.size() > 0) {
+    CharacterVector first_element = x[0];
+    return List::create(first_element, verbose);
+  } else {
+    return List::create(verbose);
+  }
+}
+
+// [[Rcpp::export( rng = false )]]
+List test_rng_false(List x, bool verbose) {
+  if(x.size() > 0) {
+    CharacterVector first_element = x[0];
+    return List::create(first_element, verbose);
+  } else {
+    return List::create(verbose);
+  }
+}
+
+// [[Rcpp::export( rng = true )]]
+List test_rng_true(List x, bool verbose) {
+  if(x.size() > 0) {
+    CharacterVector first_element = x[0];
+    return List::create(first_element, verbose);
+  } else {
+    return List::create(verbose);
+  }
+}
+
+// [[Rcpp::export( signature = {x = list("{A}", "B"), verbose = getOption("verbose")}, rng = true )]]
+List test_rng_true_signature(List x, bool verbose) {
+  if(x.size() > 0) {
+    CharacterVector first_element = x[0];
+    return List::create(first_element, verbose);
+  } else {
+    return List::create(verbose);
+  }
+}
+
+
+// [[Rcpp::export( invisible = true, rng = true )]]
+List test_invisible_true_rng_true(List x, bool verbose) {
+  if(x.size() > 0) {
+    CharacterVector first_element = x[0];
+    return List::create(first_element, verbose);
+  } else {
+    return List::create(verbose);
+  }
+}
+
+// [[Rcpp::export( invisible = true )]]
+List test_invisible_true(List x, bool verbose) {
+  if(x.size() > 0) {
+    CharacterVector first_element = x[0];
+    return List::create(first_element, verbose);
+  } else {
+    return List::create(verbose);
+  }
+}
+
+// [[Rcpp::export( invisible = true, signature = {x = list("{A}", "B"), verbose = getOption("verbose")} )]]
+List test_invisible_true_signature(List x, bool verbose) {
+  if(x.size() > 0) {
+    CharacterVector first_element = x[0];
+    return List::create(first_element, verbose);
+  } else {
+    return List::create(verbose);
+  }
+}
\ No newline at end of file
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppAttributePackage/NAMESPACE
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppAttributePackage/NAMESPACE	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppAttributePackage/NAMESPACE	(revision 3762)
@@ -0,0 +1,3 @@
+useDynLib(testRcppAttributePackage, .registration=TRUE)
+importFrom(Rcpp, evalCpp)
+exportPattern("^[[:alpha:]]+")
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppAttributePackage/DESCRIPTION
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppAttributePackage/DESCRIPTION	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppAttributePackage/DESCRIPTION	(revision 3762)
@@ -0,0 +1,11 @@
+Package: testRcppAttributePackage
+Type: Package
+Title: Tests the signature attribute and other attributes in package compilation
+Version: 1.0
+Date: 2021-10-09
+Author: Travers Ching
+Maintainer: Dirk Eddelbuettel <edd@debian.org>
+Description: Small test package part of Rcpp unit tests
+License: GPL (>= 2)
+Imports: Rcpp (>= 1.0.7)
+LinkingTo: Rcpp
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppModule/NAMESPACE
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppModule/NAMESPACE	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppModule/NAMESPACE	(revision 3762)
@@ -0,0 +1,4 @@
+useDynLib(testRcppModule, .registration=TRUE)
+exportPattern("^[[:alpha:]]+")
+import(Rcpp,methods)
+
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppModule/DESCRIPTION
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppModule/DESCRIPTION	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppModule/DESCRIPTION	(revision 3762)
@@ -0,0 +1,15 @@
+Package: testRcppModule
+Type: Package
+Title: Some Test Examples using Rcpp with the Module Feature
+Version: 0.1
+Date: 2010-09-06
+Author: John Chambers
+Maintainer: John Chambers <jmc@stat.stanford.edu>
+Description: Some examples taken (and perhaps modified) from the Rcpp Modules documentation.
+License: GPL (>=2)
+LazyLoad: yes
+Depends: methods, Rcpp (>= 0.8.5)
+LinkingTo: Rcpp
+RcppModules: RcppModuleWorld, stdVector, NumEx
+Packaged: 2010-09-09 18:42:28 UTC; jmc
+
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppInterfaceExporter/src/exporter.cpp
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppInterfaceExporter/src/exporter.cpp	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppInterfaceExporter/src/exporter.cpp	(revision 3762)
@@ -0,0 +1,17 @@
+#include "config.h"
+
+#include <Rcpp.h>
+#include "unwound.h"
+
+// [[Rcpp::interfaces(r, cpp)]]
+
+//' @export
+// [[Rcpp::export]]
+SEXP test_cpp_interface(SEXP x, bool fast = false) {
+  unwound_t stack_obj("cpp_interface_upstream");
+  if (fast) {
+      return Rcpp::Rcpp_fast_eval(x, R_GlobalEnv);
+  } else {
+      return Rcpp::Rcpp_eval(x, R_GlobalEnv);
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppInterfaceExporter/src/RcppExports.cpp
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppInterfaceExporter/src/RcppExports.cpp	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppInterfaceExporter/src/RcppExports.cpp	(revision 3762)
@@ -0,0 +1,72 @@
+// Generated by using Rcpp::compileAttributes() -> do not edit by hand
+// Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393
+
+#include "../inst/include/testRcppInterfaceExporter.h"
+#include <Rcpp.h>
+#include <string>
+#include <set>
+
+using namespace Rcpp;
+
+// test_cpp_interface
+SEXP test_cpp_interface(SEXP x, bool fast);
+static SEXP _testRcppInterfaceExporter_test_cpp_interface_try(SEXP xSEXP, SEXP fastSEXP) {
+BEGIN_RCPP
+    Rcpp::RObject rcpp_result_gen;
+    Rcpp::traits::input_parameter< SEXP >::type x(xSEXP);
+    Rcpp::traits::input_parameter< bool >::type fast(fastSEXP);
+    rcpp_result_gen = Rcpp::wrap(test_cpp_interface(x, fast));
+    return rcpp_result_gen;
+END_RCPP_RETURN_ERROR
+}
+RcppExport SEXP _testRcppInterfaceExporter_test_cpp_interface(SEXP xSEXP, SEXP fastSEXP) {
+    SEXP rcpp_result_gen;
+    {
+        Rcpp::RNGScope rcpp_rngScope_gen;
+        rcpp_result_gen = PROTECT(_testRcppInterfaceExporter_test_cpp_interface_try(xSEXP, fastSEXP));
+    }
+    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
+    if (rcpp_isInterrupt_gen) {
+        UNPROTECT(1);
+        Rf_onintr();
+    }
+    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
+    if (rcpp_isLongjump_gen) {
+        Rcpp::internal::resumeJump(rcpp_result_gen);
+    }
+    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
+    if (rcpp_isError_gen) {
+        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
+        UNPROTECT(1);
+        Rf_error(CHAR(rcpp_msgSEXP_gen));
+    }
+    UNPROTECT(1);
+    return rcpp_result_gen;
+}
+
+// validate (ensure exported C++ functions exist before calling them)
+static int _testRcppInterfaceExporter_RcppExport_validate(const char* sig) { 
+    static std::set<std::string> signatures;
+    if (signatures.empty()) {
+        signatures.insert("SEXP(*test_cpp_interface)(SEXP,bool)");
+    }
+    return signatures.find(sig) != signatures.end();
+}
+
+// registerCCallable (register entry points for exported C++ functions)
+RcppExport SEXP _testRcppInterfaceExporter_RcppExport_registerCCallable() { 
+    R_RegisterCCallable("testRcppInterfaceExporter", "_testRcppInterfaceExporter_test_cpp_interface", (DL_FUNC)_testRcppInterfaceExporter_test_cpp_interface_try);
+    R_RegisterCCallable("testRcppInterfaceExporter", "_testRcppInterfaceExporter_RcppExport_validate", (DL_FUNC)_testRcppInterfaceExporter_RcppExport_validate);
+    return R_NilValue;
+}
+
+static const R_CallMethodDef CallEntries[] = {
+    {"_testRcppInterfaceExporter_test_cpp_interface", (DL_FUNC) &_testRcppInterfaceExporter_test_cpp_interface, 2},
+    {"_testRcppInterfaceExporter_RcppExport_registerCCallable", (DL_FUNC) &_testRcppInterfaceExporter_RcppExport_registerCCallable, 0},
+    {NULL, NULL, 0}
+};
+
+RcppExport void R_init_testRcppInterfaceExporter(DllInfo *dll) {
+    R_registerRoutines(dll, NULL, CallEntries, NULL, NULL);
+    R_useDynamicSymbols(dll, FALSE);
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppInterfaceExporter/src/unwound.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppInterfaceExporter/src/unwound.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppInterfaceExporter/src/unwound.h	(revision 3762)
@@ -0,0 +1,27 @@
+#ifndef UNWOUND_H
+#define UNWOUND_H
+
+
+#include <Rcpp.h>
+
+#define PKG_NAME "testRcppInterfaceExporter"
+
+struct unwound_t {
+  unwound_t(std::string flag_) {
+    flag = flag_;
+    Rcpp::Rcout << "Initialising " << flag << std::endl;
+    Rcpp::Environment ns = Rcpp::Environment::namespace_env(PKG_NAME);
+    flags_env = ns["flags"];
+    flags_env[flag] = false;
+  }
+  ~unwound_t() {
+    Rcpp::Rcout << "Unwinding " << flag << std::endl;
+    flags_env[flag] = true;
+  }
+
+  std::string flag;
+  Rcpp::Environment flags_env;
+};
+
+
+#endif
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppInterfaceExporter/NAMESPACE
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppInterfaceExporter/NAMESPACE	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppInterfaceExporter/NAMESPACE	(revision 3762)
@@ -0,0 +1,7 @@
+# Generated by roxygen2: do not edit by hand
+
+export(peek_flag)
+export(reset_flags)
+export(test_cpp_interface)
+importFrom(Rcpp,sourceCpp)
+useDynLib(testRcppInterfaceExporter, .registration = TRUE)
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppInterfaceExporter/inst/include/testRcppInterfaceExporter_RcppExports.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppInterfaceExporter/inst/include/testRcppInterfaceExporter_RcppExports.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppInterfaceExporter/inst/include/testRcppInterfaceExporter_RcppExports.h	(revision 3762)
@@ -0,0 +1,50 @@
+// Generated by using Rcpp::compileAttributes() -> do not edit by hand
+// Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393
+
+#ifndef RCPP_testRcppInterfaceExporter_RCPPEXPORTS_H_GEN_
+#define RCPP_testRcppInterfaceExporter_RCPPEXPORTS_H_GEN_
+
+#include <Rcpp.h>
+
+namespace testRcppInterfaceExporter {
+
+    using namespace Rcpp;
+
+    namespace {
+        void validateSignature(const char* sig) {
+            Rcpp::Function require = Rcpp::Environment::base_env()["require"];
+            require("testRcppInterfaceExporter", Rcpp::Named("quietly") = true);
+            typedef int(*Ptr_validate)(const char*);
+            static Ptr_validate p_validate = (Ptr_validate)
+                R_GetCCallable("testRcppInterfaceExporter", "_testRcppInterfaceExporter_RcppExport_validate");
+            if (!p_validate(sig)) {
+                throw Rcpp::function_not_exported(
+                    "C++ function with signature '" + std::string(sig) + "' not found in testRcppInterfaceExporter");
+            }
+        }
+    }
+
+    inline SEXP test_cpp_interface(SEXP x, bool fast = false) {
+        typedef SEXP(*Ptr_test_cpp_interface)(SEXP,SEXP);
+        static Ptr_test_cpp_interface p_test_cpp_interface = NULL;
+        if (p_test_cpp_interface == NULL) {
+            validateSignature("SEXP(*test_cpp_interface)(SEXP,bool)");
+            p_test_cpp_interface = (Ptr_test_cpp_interface)R_GetCCallable("testRcppInterfaceExporter", "_testRcppInterfaceExporter_test_cpp_interface");
+        }
+        RObject rcpp_result_gen;
+        {
+            RNGScope RCPP_rngScope_gen;
+            rcpp_result_gen = p_test_cpp_interface(Shield<SEXP>(Rcpp::wrap(x)), Shield<SEXP>(Rcpp::wrap(fast)));
+        }
+        if (rcpp_result_gen.inherits("interrupted-error"))
+            throw Rcpp::internal::InterruptedException();
+        if (Rcpp::internal::isLongjumpSentinel(rcpp_result_gen))
+            throw Rcpp::LongjumpException(rcpp_result_gen);
+        if (rcpp_result_gen.inherits("try-error"))
+            throw Rcpp::exception(Rcpp::as<std::string>(rcpp_result_gen).c_str());
+        return Rcpp::as<SEXP >(rcpp_result_gen);
+    }
+
+}
+
+#endif // RCPP_testRcppInterfaceExporter_RCPPEXPORTS_H_GEN_
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppInterfaceExporter/inst/include/testRcppInterfaceExporter.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppInterfaceExporter/inst/include/testRcppInterfaceExporter.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppInterfaceExporter/inst/include/testRcppInterfaceExporter.h	(revision 3762)
@@ -0,0 +1,9 @@
+// Generated by using Rcpp::compileAttributes() -> do not edit by hand
+// Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393
+
+#ifndef RCPP_testRcppInterfaceExporter_H_GEN_
+#define RCPP_testRcppInterfaceExporter_H_GEN_
+
+#include "testRcppInterfaceExporter_RcppExports.h"
+
+#endif // RCPP_testRcppInterfaceExporter_H_GEN_
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppInterfaceExporter/R/exporter.R
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppInterfaceExporter/R/exporter.R	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppInterfaceExporter/R/exporter.R	(revision 3762)
@@ -0,0 +1,18 @@
+#' @useDynLib testRcppInterfaceExporter, .registration = TRUE
+#' @importFrom Rcpp sourceCpp
+NULL
+
+flags <- new.env(parent = emptyenv())
+
+#' @export
+reset_flags <- function() {
+  flags$cpp_interface_upstream <- FALSE
+}
+.onLoad <- function(lib, pkg) {
+  reset_flags()
+}
+
+#' @export
+peek_flag <- function(name) {
+  flags[[name]]
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppInterfaceExporter/R/RcppExports.R
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppInterfaceExporter/R/RcppExports.R	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppInterfaceExporter/R/RcppExports.R	(revision 3762)
@@ -0,0 +1,12 @@
+# Generated by using Rcpp::compileAttributes() -> do not edit by hand
+# Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393
+
+#' @export
+test_cpp_interface <- function(x, fast = FALSE) {
+    .Call(`_testRcppInterfaceExporter_test_cpp_interface`, x, fast)
+}
+
+# Register entry points for exported C++ functions
+methods::setLoadAction(function(ns) {
+    .Call('_testRcppInterfaceExporter_RcppExport_registerCCallable', PACKAGE = 'testRcppInterfaceExporter')
+})
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppInterfaceExporter/DESCRIPTION
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppInterfaceExporter/DESCRIPTION	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppInterfaceExporter/DESCRIPTION	(revision 3762)
@@ -0,0 +1,12 @@
+Package: testRcppInterfaceExporter
+Title: Exports c++ function via the cpp interface
+Version: 0.1.0
+Authors@R: 'Lionel Henry <lionel@rstudio.com> [aut, cre]'
+Description: The API package.
+Depends:
+    R (>= 3.1.0)
+Imports:
+    Rcpp
+LinkingTo:
+    Rcpp
+License: GPL-3
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/XPtr.cpp
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/XPtr.cpp	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/XPtr.cpp	(revision 3762)
@@ -0,0 +1,80 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; tab-width: 8 -*-
+//
+// XPtr.cpp: Rcpp R/C++ interface class library -- external pointer unit tests
+//
+// Copyright (C) 2013 Dirk Eddelbuettel and Romain Francois
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+#include <Rcpp.h>
+using namespace Rcpp ;
+
+// [[Rcpp::export]]
+XPtr< std::vector<int> > xptr_1(){
+		    /* creating a pointer to a vector<int> */
+		    std::vector<int>* v = new std::vector<int> ;
+		    v->push_back( 1 ) ;
+		    v->push_back( 2 ) ;
+
+		    /* wrap the pointer as an external pointer */
+		    /* this automatically protected the external pointer from R garbage
+		       collection until p goes out of scope. */
+		    XPtr< std::vector<int> > p(v) ;
+
+		    /* return it back to R, since p goes out of scope after the return
+		       the external pointer is no more protected by p, but it gets
+		       protected by being on the R side */
+		    return( p ) ;
+}
+
+// [[Rcpp::export]]
+int xptr_2( XPtr< std::vector<int> > p){
+    		/* just return the front of the vector as a SEXP */
+    		return p->front() ;
+}
+
+// [[Rcpp::export]]
+void xptr_self_tag( XPtr< std::vector<int> > p ){
+    XPtr< std::vector<int> > self_tag(wrap(p), wrap(p), R_NilValue) ;
+}
+
+// [[Rcpp::export]]
+bool xptr_has_self_tag( XPtr< std::vector<int> > p ){
+    return wrap(p) == R_ExternalPtrTag(p);
+}
+
+
+// [[Rcpp::export]]
+bool xptr_release( XPtr< std::vector<int> > p) {
+    p.release();
+    return !p;
+}
+
+// [[Rcpp::export]]
+bool xptr_access_released( XPtr< std::vector<int> > p) {
+
+    // double-release should be a no-op
+    p.release();
+
+    // get should return NULL
+    return p.get() == NULL;
+}
+
+// [[Rcpp::export]]
+int xptr_use_released( XPtr< std::vector<int> > p ) {
+    return p->front();
+}
+
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/na.cpp
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/na.cpp	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/na.cpp	(revision 3762)
@@ -0,0 +1,44 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; tab-width: 8 -*-
+//
+// na.cpp: Rcpp R/C++ interface class library -- na unit tests
+//
+// Copyright (C) 2014 Kevin Ushey
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+#include <Rcpp.h>
+using namespace Rcpp ;
+
+// [[Rcpp::export]]
+bool Rcpp_IsNA(double x) {
+    return internal::Rcpp_IsNA(x);
+}
+
+// [[Rcpp::export]]
+bool Rcpp_IsNaN(double x) {
+    return internal::Rcpp_IsNaN(x);
+}
+
+// [[Rcpp::export]]
+bool R_IsNA_(double x) {
+    return ::R_IsNA(x);
+}
+
+// [[Rcpp::export]]
+bool R_IsNaN_(double x) {
+    return ::R_IsNaN(x);
+}
+
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/Reference.cpp
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/Reference.cpp	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/Reference.cpp	(revision 3762)
@@ -0,0 +1,30 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; tab-width: 8 -*-
+//
+// Reference.cpp: Rcpp R/C++ interface class library -- Reference unit tests
+//
+// Copyright (C) 2013 Dirk Eddelbuettel and Romain Francois
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+#include <Rcpp.h>
+using namespace Rcpp ;
+
+// [[Rcpp::export]]
+std::string runit_Reference_getId(Reference obj) {
+    std::string txt = obj.field("id");
+    return txt;
+}
+
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/dates.cpp
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/dates.cpp	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/dates.cpp	(revision 3762)
@@ -0,0 +1,248 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; indent-tabs-mode: nil; -*-
+//
+// dates.cpp: Rcpp R/C++ interface class library -- Date + Datetime tests
+//
+// Copyright (C) 2010 - 2013   Dirk Eddelbuettel and Romain Francois
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+#include <Rcpp.h>
+using namespace Rcpp;
+
+// [[Rcpp::export]]
+Date ctor_sexp(SEXP d) {
+    Date dt = Date(d);
+    return dt;
+}
+
+// [[Rcpp::export]]
+SEXP ctor_mdy() {
+    Date dt = Date(12,31,2005);
+    return wrap(dt);
+}
+
+// [[Rcpp::export]]
+SEXP ctor_ymd() {
+    Date dt = Date(2005,12,31);
+    return wrap(dt);
+}
+
+// [[Rcpp::export]]
+SEXP ctor_int(int d) {
+    Date dt = Date(d);
+    return wrap(dt);
+}
+
+// [[Rcpp::export]]
+SEXP ctor_string(std::string x) {
+    Date dt(x);
+    return wrap(dt);
+}
+
+// [[Rcpp::export]]
+List operators() {
+    Date d1 = Date(2005,12,31);
+    Date d2 = d1 + 1;
+    return List::create(Named("diff") = d1 - d2,
+                        Named("bigger") = d2 > d1,
+                        Named("smaller") = d2 < d1,
+                        Named("equal") = d2 == d1,
+                        Named("ge") = d2 >= d1,
+                        Named("le") = d2 <= d1,
+                        Named("ne") = d2 != d1);
+}
+
+// [[Rcpp::export]]
+List components() {
+    Date d = Date(2005,12,31);
+    return List::create(Named("day") = d.getDay(),
+                        Named("month") = d.getMonth(),
+                        Named("year") = d.getYear(),
+                        Named("weekday") = d.getWeekday(),
+                        Named("yearday") = d.getYearday());
+}
+
+// [[Rcpp::export]]
+SEXP vector_Date() {
+    std::vector<Date> v(2) ;
+    v[0] = Date(2005,12,31) ;
+    v[1] = Date(12,31,2005) ;
+    return wrap( v );
+}
+
+// [[Rcpp::export]]
+SEXP Datevector_wrap() {
+    DateVector v(2) ;
+    v[0] = Date(2005,12,31) ;
+    v[1] = Date(12,31,2005) ;
+    return wrap( v );
+}
+
+// [[Rcpp::export]]
+SEXP Datevector_sexp() {
+    DateVector v(2) ;
+    v[0] = Date(2005,12,31) ;
+    v[1] = Date(12,31,2005) ;
+    return wrap( v );
+}
+
+// [[Rcpp::export]]
+List Date_get_functions(Date x) {
+    Date d = Date(x);
+    return List::create(Named("year") = d.getYear(),
+                        Named("month") = d.getMonth(),
+                        Named("day") = d.getDay(),
+                        Named("wday") = d.getWeekday(),
+                        Named("yday") = d.getYearday());
+}
+
+// [[Rcpp::export]]
+List Datetime_get_functions(Datetime x) {
+    Datetime dt = Datetime(x);
+    return List::create(Named("year") = dt.getYear(),
+                        Named("month") = dt.getMonth(),
+                        Named("day") = dt.getDay(),
+                        Named("wday") = dt.getWeekday(),
+                        Named("hour") = dt.getHours(),
+                        Named("minute") = dt.getMinutes(),
+                        Named("second") = dt.getSeconds(),
+                        Named("microsec") = dt.getMicroSeconds());
+}
+
+// [[Rcpp::export]]
+List Datetime_operators() {
+    Datetime d1 = Datetime(946774923.123456);
+    Datetime d2 = d1 + 60*60;
+    return List::create(Named("diff") = d1 - d2,
+                        Named("bigger") = d2 > d1,
+                        Named("smaller") = d2 < d1,
+                        Named("equal") = d2 == d1,
+                        Named("ge") = d2 >= d1,
+                        Named("le") = d2 <= d1,
+                        Named("ne") = d2 != d1);
+}
+
+// [[Rcpp::export]]
+SEXP Datetime_wrap() {
+    Datetime dt = Datetime(981162123.123456);
+    return wrap(dt);
+}
+
+// [[Rcpp::export]]
+SEXP Datetime_from_string(std::string x) {
+    Datetime dt(x);
+    return wrap(dt);
+}
+
+// [[Rcpp::export]]
+SEXP Datetime_ctor_sexp(Datetime d) {
+    Datetime dt = Datetime(d);
+    return wrap(dt);
+}
+
+// [[Rcpp::export]]
+SEXP DatetimeVector_ctor(DatetimeVector d) {
+    DatetimeVector dt = DatetimeVector(d);
+    return wrap(dt);
+}
+
+// [[Rcpp::export]]
+DatetimeVector DatetimeVector_assignment(DatetimeVector v1,
+    DatetimeVector v2) {
+
+    v1 = v2;
+    return v1;
+}
+
+// [[Rcpp::export]]
+DateVector DateVector_assignment(DateVector v1, DateVector v2) {
+    v1 = v2;
+    return v1;
+}
+
+// [[Rcpp::export]]
+std::string Date_format(Date d, std::string fmt) {
+    return d.format(fmt.c_str());
+}
+
+// [[Rcpp::export]]
+std::string Datetime_format(Datetime d, std::string fmt) {
+    return d.format(fmt.c_str());
+}
+
+// [[Rcpp::export]]
+std::string Date_ostream(Date d) {
+    std::stringstream os;
+    os << d;
+    return os.str();
+}
+
+// [[Rcpp::export]]
+std::string Datetime_ostream(Datetime d) {
+    std::stringstream os;
+    os << d;
+    return os.str();
+}
+
+// [[Rcpp::export]]
+Date gmtime_mktime(Date d) {
+    const int baseYear = 1900;
+    struct tm tm;
+    tm.tm_sec = tm.tm_min = tm.tm_hour = tm.tm_isdst = 0;
+
+    tm.tm_mday  = d.getDay();
+    tm.tm_mon   = d.getMonth() - 1;    // range 0 to 11
+    tm.tm_year  = d.getYear() - baseYear;
+    time_t tmp = mktime00(tm);    // use mktime() replacement borrowed from R
+
+    struct tm chk = *gmtime_(&tmp);
+    Date newd(chk.tm_year, chk.tm_mon + 1, chk.tm_mday);
+    return newd;
+}
+
+// [[Rcpp::export]]
+double test_mktime(Date d) {
+    const int baseYear = 1900;
+    struct tm tm;
+    tm.tm_sec = tm.tm_min = tm.tm_hour = tm.tm_isdst = 0;
+
+    tm.tm_mday  = d.getDay();
+    tm.tm_mon   = d.getMonth() - 1;    // range 0 to 11
+    tm.tm_year  = d.getYear() - baseYear;
+    time_t t = mktime00(tm);    // use mktime() replacement borrowed from R
+    return static_cast<double>(t);
+}
+
+// [[Rcpp::export]]
+Date test_gmtime(double d) {
+    time_t t = static_cast<time_t>(d);
+    struct tm tm = *gmtime_(&t);
+    tm.tm_sec = tm.tm_min = tm.tm_hour = tm.tm_isdst = 0;
+    Date nd(tm.tm_year, tm.tm_mon + 1, tm.tm_mday);
+    return nd;
+}
+
+// [[Rcpp::export]]
+bool has_na_dv(const Rcpp::DateVector d) {
+    return Rcpp::is_true(Rcpp::any(Rcpp::is_na(d)));
+}
+
+// [[Rcpp::export]]
+bool has_na_dtv(const Rcpp::DatetimeVector d) {
+    return Rcpp::is_true(Rcpp::any(Rcpp::is_na(d)));
+}
+
+
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/coerce.cpp
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/coerce.cpp	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/coerce.cpp	(revision 3762)
@@ -0,0 +1,28 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; tab-width: 8 -*-
+//
+// coerce.cpp: Rcpp R/C++ interface class library -- coerce unit tests
+//
+// Copyright (C) 2022  Dirk Eddelbuettel and Kevin Ushey
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+#include <Rcpp.h>
+using namespace Rcpp ;
+
+// [[Rcpp::export]]
+std::string coerce_raw_to_string(Rbyte x) {
+    return internal::coerce_to_string<RAWSXP>(x);
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/ListOf.cpp
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/ListOf.cpp	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/ListOf.cpp	(revision 3762)
@@ -0,0 +1,115 @@
+#include <Rcpp.h>
+using namespace Rcpp;
+
+typedef ListOf<NumericVector> NVList;
+
+// [[Rcpp::export]]
+NVList test_identity(NVList x) {
+    return x;
+}
+
+template <typename T>
+double sum_(const T& x) {
+    return sum(x);
+}
+
+// [[Rcpp::export]]
+List test_lapply_sum(NVList x) {
+    return lapply(x, sum_<NumericVector>);
+}
+
+// [[Rcpp::export]]
+NumericVector test_sapply_sum(NVList x) {
+    return sapply(x, sum_<NumericVector>);
+}
+
+// [[Rcpp::export]]
+NVList test_assign(NVList x, NumericVector y, CharacterVector z) {
+    x[1] = y;
+    x[2] = 1;
+    return x;
+}
+
+// [[Rcpp::export]]
+NVList test_assign_names(NVList x) {
+    x["a"] = x["b"];
+    return x;
+}
+
+
+// [[Rcpp::export]]
+NumericVector test_add(NVList x) {
+    return x[0] + x[1] + x[2];
+}
+
+// [[Rcpp::export]]
+NumericVector test_add_subtract(NVList x) {
+    return x[0] + x[1] - x[2];
+}
+
+// [[Rcpp::export]]
+NumericVector test_mult(NVList x) {
+    return x[0] * x[1] * x[2];
+}
+
+typedef ListOf<CharacterVector> CVList;
+// [[Rcpp::export]]
+CVList test_char(CVList x) {
+    x[0] = "apple";
+    return x;
+}
+
+// [[Rcpp::export]]
+NVList test_as_wrap(NVList x) {
+    List y = as<List>(x);
+    NVList z = as<NVList>(y);
+    NumericVector k = x[0];
+    x[0] = z[1];
+    return z;
+}
+
+// [[Rcpp::export]]
+NumericVector test_add_NV(NVList x, NumericVector y) {
+    return y + x[0];
+}
+
+// [[Rcpp::export]]
+NVList test_binary_ops(NVList x) {
+    return List::create(
+        x[0] > x[1],
+        x[0] < x[1],
+        x[0] >= x[1],
+        x[0] <= x[1]
+    );
+}
+
+#if defined(_WIN32)
+typedef int retval;
+#else
+typedef R_xlen_t retval;
+#endif
+// [[Rcpp::export]]
+retval test_sub_calls(NVList x) {
+    retval sz = x[0].size() + x[1].size() + x[2].size();
+    return sz;
+}
+
+// [[Rcpp::export]]
+NumericVector test_nested_listof(ListOf< ListOf<NumericVector> > x) {
+  return x[0][0];
+}
+
+// [[Rcpp::export]]
+ListOf<IntegerVector> test_return_IVList(List x) {
+    return x;
+}
+
+// [[Rcpp::export]]
+CharacterVector listof_names(ListOf<NumericVector> x) {
+    return x.names();
+}
+
+// [[Rcpp::export]]
+SEXP listof_attr_foo(ListOf<NumericVector> x) {
+    return x.attr("foo");
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/String.cpp
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/String.cpp	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/String.cpp	(revision 3762)
@@ -0,0 +1,151 @@
+// #define RCPP_STRING_DEBUG_LEVEL 0
+// #define RCPP_DEBUG_LEVEL 0
+#include <Rcpp.h>
+using namespace Rcpp ;
+
+
+// [[Rcpp::export]]
+String String_replace_all( String z, String x, String y){
+    z.replace_all( x, y ) ;
+    return z ;
+}
+
+// [[Rcpp::export]]
+String String_replace_first( String z, String x, String y){
+    z.replace_first( x, y ) ;
+    return z ;
+}
+// [[Rcpp::export]]
+String String_replace_last( String z, String x, String y){
+    z.replace_last( x, y ) ;
+    return z ;
+}
+
+class StringConv{
+public:
+    typedef String result_type ;
+    StringConv( CharacterVector old_, CharacterVector new__):
+        nr(old_.size()), old(old_), new_(new__){}
+
+    String operator()(String text) const {
+        for( int i=0; i<nr; i++){
+            text.replace_all( old[i], new_[i] ) ;
+        }
+        return text ;
+    }
+
+private:
+    int nr ;
+    CharacterVector old ;
+    CharacterVector new_ ;
+} ;
+
+// [[Rcpp::export]]
+CharacterVector test_sapply_string( CharacterVector text, CharacterVector old , CharacterVector new_){
+   CharacterVector res = sapply( text, StringConv( old, new_ ) ) ;
+   return res ;
+}
+
+// [[Rcpp::export]]
+String test_ctor(String x) {
+    String test = "test";
+    test = x;
+    return test;
+}
+
+// [[Rcpp::export]]
+CharacterVector test_move_ctor() {
+  std::vector<String> v = { "test" };
+  String t = std::move( v[0] );
+  v.push_back( std::move( t ) );
+  return CharacterVector( v.begin(), v.end() );
+}
+
+// [[Rcpp::export]]
+String test_move_std_string_ctor() {
+  std::string s = "test";
+  return String( std::move( s ) );
+}
+
+// [[Rcpp::export]]
+CharacterVector test_move_assignment() {
+  std::vector<String> v = { "test", "abc" };
+  v[1] = std::move( v[0] );
+  return CharacterVector( v.begin(), v.end() );
+}
+
+// [[Rcpp::export]]
+String test_move_std_string_assignment() {
+  String x = "abc";
+  std::string s = "test";
+  x = std::move( s );
+  return x;
+}
+
+// [[Rcpp::export]]
+List test_compare_Strings( String aa, String bb ){
+    return List::create(
+        _["a  < b" ] = aa < bb,
+        _["a  > b" ] = aa > bb,
+        _["a == b"]  = aa == bb,
+        _["a == a"]  = aa == aa
+        ) ;
+}
+
+// [[Rcpp::export]]
+List test_compare_String_string_proxy( String aa, CharacterVector bb ){
+    return List::create(
+        _["a == b"]  = aa == bb[0],
+        _["a != b"]  = aa != bb[0],
+        _["b == a"]  = bb[0] == aa,
+        _["b != a"]  = bb[0] != aa
+        ) ;
+}
+
+// [[Rcpp::export]]
+List test_compare_String_const_string_proxy( String aa, const CharacterVector bb ){
+    return List::create(
+        _["a == b"]  = aa == bb[0],
+        _["a != b"]  = aa != bb[0],
+        _["b == a"]  = bb[0] == aa,
+        _["b != a"]  = bb[0] != aa
+        ) ;
+}
+
+// [[Rcpp::export]]
+String test_push_front(String x) {
+    x.push_front("abc");
+    return x;
+}
+
+// [[Rcpp::export]]
+int test_String_encoding(String x) {
+    return x.get_encoding();
+}
+
+// [[Rcpp::export]]
+String test_String_set_encoding(String x) {
+    x.set_encoding(CE_UTF8);
+    return x;
+}
+
+// [[Rcpp::export]]
+String test_String_ctor_encoding(String x) {
+    String y(x);
+    y.set_encoding(CE_UTF8);
+    return y;
+}
+
+
+// [[Rcpp::export]]
+String test_String_ctor_encoding2() {
+    String y("å");
+    y.set_encoding(CE_UTF8);
+    return y;
+}
+
+// [[Rcpp::export]]
+String test_String_embeddedNul() {
+    std::string bad("abc\0abc", 7);
+    return String(bad);
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/exceptions.cpp
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/exceptions.cpp	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/exceptions.cpp	(revision 3762)
@@ -0,0 +1,69 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; indent-tabs-mode: nil; -*-
+//
+// dates.cpp: Rcpp R/C++ interface class library -- Date + Datetime tests
+//
+// Copyright (C) 2010 - 2013   Dirk Eddelbuettel and Romain Francois
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+#include <Rcpp.h>
+using namespace Rcpp;
+
+// [[Rcpp::export]]
+double takeLog(double val) {
+    if (val <= 0.0) {
+        throw std::range_error("Inadmissible value");
+    }
+    return log(val);
+}
+
+// [[Rcpp::export]]
+double takeLogRcpp(double val) {
+    if (val <= 0.0) {
+        throw Rcpp::exception("Inadmissible value");
+    }
+    return log(val);
+}
+
+// [[Rcpp::export]]
+double takeLogStop(double val) {
+    if (val <= 0.0) {
+        Rcpp::stop("Inadmissible value");
+    }
+    return log(val);
+}
+
+// [[Rcpp::export]]
+double takeLogRcppLocation(double val) {
+    if (val <= 0.0) {
+        throw Rcpp::exception("Inadmissible value", "exceptions.cpp", 44);
+    }
+    return log(val);
+}
+
+double f1(double val) {
+    return takeLogRcppLocation(val);
+}
+
+// [[Rcpp::export]]
+double takeLogNested(double val) {
+    return f1(val);
+}
+
+// [[Rcpp::export]]
+void noCall() {
+    throw Rcpp::exception("Testing", false);
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/sugar.cpp
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/sugar.cpp	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/sugar.cpp	(revision 3762)
@@ -0,0 +1,1254 @@
+
+// sugar.cpp: Rcpp R/C++ interface class library -- sugar unit tests
+//
+// Copyright (C) 2012 - 2022  Dirk Eddelbuettel and Romain Francois
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+#include <Rcpp.h>
+using namespace Rcpp ;
+
+template <typename T>
+
+#if __cplusplus < 201103L
+class square : public std::unary_function<T,T> {
+#else
+class square : public std::function<T(T)> {
+#endif
+public:
+	T operator()( T t) const { return t*t ; }
+} ;
+
+double raw_square( double x){ return x*x; }
+
+// [[Rcpp::export]]
+List runit_abs( NumericVector xx, IntegerVector yy ){
+    return List::create( abs(xx), abs(yy) ) ;
+}
+
+// [[Rcpp::export]]
+LogicalVector runit_all_one_less( NumericVector xx ){
+    return all( xx < 5.0 ) ;
+}
+
+// [[Rcpp::export]]
+LogicalVector runit_all_one_greater( NumericVector xx ){
+    return all( xx > 5.0 ) ;
+}
+
+// [[Rcpp::export]]
+LogicalVector runit_all_one_less_or_equal( NumericVector xx ){
+    return all( xx <= 5.0 ) ;
+}
+
+// [[Rcpp::export]]
+LogicalVector runit_all_one_greater_or_equal( NumericVector xx ){
+    return all( xx >= 5.0 ) ;
+}
+
+// [[Rcpp::export]]
+LogicalVector runit_all_one_equal( NumericVector xx ){
+    return all( xx == 5.0 ) ;
+}
+
+// [[Rcpp::export]]
+LogicalVector runit_all_not_equal_one( NumericVector xx ){
+    return all( xx != 5.0 ) ;
+}
+
+// [[Rcpp::export]]
+LogicalVector runit_all_less( NumericVector xx, NumericVector yy){
+    return all( xx < yy ) ;
+}
+
+// [[Rcpp::export]]
+LogicalVector runit_all_greater( NumericVector xx, NumericVector yy ){
+    return all( xx > yy ) ;
+}
+
+// [[Rcpp::export]]
+LogicalVector runit_all_less_or_equal( NumericVector xx, NumericVector yy){
+    return all( xx <= yy ) ;
+}
+
+// [[Rcpp::export]]
+LogicalVector runit_all_greater_or_equal( NumericVector xx, NumericVector yy){
+    return all( xx >= yy ) ;
+}
+
+// [[Rcpp::export]]
+LogicalVector runit_all_equal( NumericVector xx, NumericVector yy){
+    return all( xx == yy ) ;
+}
+
+// [[Rcpp::export]]
+LogicalVector runit_all_not_equal( NumericVector xx, NumericVector yy){
+    return all( xx != yy ) ;
+}
+
+// [[Rcpp::export]]
+LogicalVector runit_any_less( NumericVector xx, NumericVector yy){
+    return any( xx < yy ) ;
+}
+
+// [[Rcpp::export]]
+LogicalVector runit_any_greater( NumericVector xx, NumericVector yy ){
+    return any( xx > yy ) ;
+}
+
+// [[Rcpp::export]]
+LogicalVector runit_any_less_or_equal( NumericVector xx, NumericVector yy ){
+    return any( xx <= yy ) ;
+}
+
+// [[Rcpp::export]]
+LogicalVector runit_any_greater_or_equal( NumericVector xx, NumericVector yy){
+    return any( xx >= yy ) ;
+}
+
+// [[Rcpp::export]]
+LogicalVector runit_any_equal( NumericVector xx, NumericVector yy){
+    return any( xx == yy ) ;
+}
+
+// [[Rcpp::export]]
+LogicalVector runit_any_not_equal( NumericVector xx, NumericVector yy){
+    return any( xx != yy ) ;
+}
+
+// [[Rcpp::export]]
+LogicalVector runit_constructor( NumericVector xx, NumericVector yy ){
+    LogicalVector res( xx < yy ) ;
+    return res ;
+}
+
+// [[Rcpp::export]]
+LogicalVector runit_assignment( NumericVector xx, NumericVector yy ){
+    LogicalVector res;
+    res = xx < yy ;
+    return res ;
+}
+
+// [[Rcpp::export]]
+NumericVector runit_diff( NumericVector xx){
+    NumericVector res = diff( xx );
+    return res ;
+}
+
+// [[Rcpp::export]]
+IntegerVector runit_diff_int(IntegerVector xx) {
+    IntegerVector res = diff(xx);
+    return res;
+}
+
+// [[Rcpp::export]]
+NumericVector runit_diff_ifelse( LogicalVector pred, NumericVector xx, NumericVector yy){
+    NumericVector res = ifelse( pred, diff(xx), diff(yy) );
+    return res ;
+}
+
+// [[Rcpp::export]]
+List runit_exp( NumericVector xx, IntegerVector yy ){
+    return List::create( exp(xx), exp(yy) ) ;
+}
+
+// [[Rcpp::export]]
+List runit_floor( NumericVector xx, IntegerVector yy ){
+    return List::create( floor(xx), floor(yy) ) ;
+}
+
+// [[Rcpp::export]]
+List runit_ceil( NumericVector xx, IntegerVector yy){
+    return List::create( ceil(xx), ceil(yy) ) ;
+}
+
+// [[Rcpp::export]]
+List runit_pow( NumericVector xx, IntegerVector yy){
+    return List::create( pow(xx, 3), pow(yy, 2.3) ) ;
+}
+
+// [[Rcpp::export]]
+List runit_ifelse( NumericVector xx, NumericVector yy){
+    return List::create(
+    	 _["vec_vec" ]  = ifelse( xx < yy, xx*xx, -(yy*yy) ),
+    	 _["vec_prim"]  = ifelse( xx < yy, 1.0  , -(yy*yy) ),
+    	 _["prim_vec"]  = ifelse( xx < yy, xx*xx, 1.0      ),
+    	 _["prim_prim"] = ifelse( xx < yy, 1.0, 2.0        )
+    	) ;
+}
+
+// [[Rcpp::export]]
+LogicalVector runit_isna( NumericVector xx){
+    return wrap( is_na( xx ) ) ;
+}
+
+// [[Rcpp::export]]
+LogicalVector runit_isfinite( NumericVector xx){
+    return is_finite(xx) ;
+}
+
+// [[Rcpp::export]]
+LogicalVector runit_isinfinite( NumericVector xx){
+    return is_infinite(xx) ;
+}
+
+// [[Rcpp::export]]
+LogicalVector runit_isnan( NumericVector xx){
+    return is_nan(xx) ;
+}
+
+// [[Rcpp::export]]
+LogicalVector runit_isna_isna( NumericVector xx ){
+    return is_na( is_na( xx ) ) ;
+}
+
+// [[Rcpp::export]]
+LogicalVector runit_any_isna( NumericVector xx){
+    return any( is_na( xx ) ) ;
+}
+
+// [[Rcpp::export]]
+NumericVector runit_na_omit( NumericVector xx ){
+    return na_omit( xx ) ;
+}
+
+// [[Rcpp::export]]
+List runit_lapply( IntegerVector xx){
+    List res = lapply( xx, seq_len );
+    return res ;
+}
+
+// [[Rcpp::export]]
+List runit_minus( IntegerVector xx ){
+    return List::create(
+    	xx - 10,
+    	10 - xx,
+    	xx - xx,
+    	noNA( xx ) - 10,
+    	10 - noNA( xx )
+    	) ;
+}
+
+// [[Rcpp::export]]
+LogicalVector runit_any_equal_not( NumericVector xx, NumericVector yy){
+    return any( !( xx == yy) ) ;
+}
+
+// [[Rcpp::export]]
+List runit_plus( IntegerVector xx ){
+    return List::create(
+    	xx + 10,
+    	10 + xx,
+    	xx + xx,
+    	xx + xx + xx
+    	) ;
+}
+
+// [[Rcpp::export]]
+List runit_plus_seqlen(){
+    return List::create(
+	    seq_len(10) + 10,
+	    10 + seq_len(10),
+	    seq_len(10) + seq_len(10)
+	    ) ;
+}
+
+// [[Rcpp::export]]
+LogicalVector runit_plus_all( IntegerVector xx ){
+    return all( (xx+xx) < 10 ) ;
+}
+
+// [[Rcpp::export]]
+NumericVector runit_pmin( NumericVector xx, NumericVector yy ){
+    NumericVector res = pmin( xx, yy );
+	return res ;
+}
+
+// [[Rcpp::export]]
+List runit_pmin_one( NumericVector xx ){
+    return List::create(
+    	pmin( xx, 5),
+    	pmin( 5, xx)
+    	) ;
+}
+
+// [[Rcpp::export]]
+NumericVector runit_pmax( NumericVector xx, NumericVector yy ){
+    NumericVector res = pmax( xx, yy );
+    return res ;
+}
+
+// [[Rcpp::export]]
+List runit_pmax_one( NumericVector xx ){
+    return List::create(
+    	pmax( xx, 5),
+    	pmax( 5, xx)
+    	) ;
+}
+
+// [[Rcpp::export]]
+NumericVector runit_Range(){
+    NumericVector xx(8) ;
+    xx[ Range(0,3) ] = exp( seq_len(4) ) ;
+    xx[ Range(4,7) ] = exp( - seq_len(4) ) ;
+    return xx ;
+}
+
+// [[Rcpp::export]]
+IntegerVector runit_range_plus(int start, int end, int n) {
+    IntegerVector vec = Range(start, end) + n;
+    return vec;
+}
+
+// [[Rcpp::export]]
+IntegerVector runit_range_minus(int start, int end, int n) {
+    IntegerVector vec = Range(start, end) - n;
+    return vec;
+}
+
+// [[Rcpp::export]]
+NumericVector runit_sapply( NumericVector xx ){
+    NumericVector res = sapply( xx, square<double>() );
+    return res ;
+}
+
+// [[Rcpp::export]]
+NumericVector runit_sapply_rawfun( NumericVector xx){
+    NumericVector res = sapply( xx, raw_square );
+    return res ;
+}
+
+// [[Rcpp::export]]
+LogicalVector runit_sapply_square( NumericVector xx){
+    return all( sapply( xx * xx , square<double>() ) < 10.0 );
+}
+
+// [[Rcpp::export]]
+List runit_sapply_list( IntegerVector xx){
+    List res = sapply( xx, seq_len );
+    return res ;
+}
+
+// [[Rcpp::export]]
+IntegerVector runit_seqalong( NumericVector xx ){
+    IntegerVector res = seq_along( xx );
+    return res ;
+}
+
+// [[Rcpp::export]]
+IntegerVector runit_seqlen(){
+    IntegerVector res = seq_len( 10 );
+	return res ;
+}
+
+// [[Rcpp::export]]
+List runit_sign( NumericVector xx, IntegerVector yy ){
+    return List::create(
+	    sign( xx ),
+	    sign( yy )
+	    ) ;
+}
+
+// [[Rcpp::export]]
+List runit_times( IntegerVector xx ){
+    IntegerVector yy = clone<IntegerVector>( xx ) ;
+    yy[0] = NA_INTEGER ;
+
+    return List::create(
+        xx * 10,
+        10 * xx,
+        xx * xx,
+        xx * xx * xx,
+        xx * yy,
+        yy * 10,
+        10 * yy,
+        NA_INTEGER * xx
+    ) ;
+}
+
+// [[Rcpp::export]]
+List runit_divides( NumericVector xx ){
+    return List::create(
+    	xx / 10,
+    	10 / xx,
+    	xx / xx
+    	) ;
+}
+
+// [[Rcpp::export]]
+NumericVector runit_unary_minus( NumericVector xx){
+    NumericVector yy = - xx ;
+    return yy ;
+}
+
+// [[Rcpp::export]]
+void runit_wrap( NumericVector xx, NumericVector yy, Environment e ){
+    e["foo"] = xx < yy  ;
+}
+
+// [[Rcpp::export]]
+List runit_complex( ComplexVector cx ){
+    return List::create(
+    	_["Re"]    = Re( cx ),
+    	_["Im"]    = Im( cx ),
+    	_["Conj"]  = Conj( cx ),
+    	_["Mod"]   = Mod( cx ),
+    	_["Arg"]   = Arg( cx ),
+    	_["exp"]   = exp( cx ),
+    	_["log"]   = log( cx ),
+    	_["sqrt"]  = sqrt( cx ),
+    	_["cos"]   = cos( cx ),
+    	_["sin"]   = sin( cx ),
+    	_["tan"]   = tan( cx ),
+    	_["acos"]  = acos( cx ),
+    	_["asin"]  = asin( cx ),
+    	_["atan"]  = atan( cx ),
+    	// _["acosh"] = acosh( cx ),
+    	_["asinh"] = asinh( cx ),
+    	_["atanh"] = atanh( cx ),
+    	_["cosh"]  = cosh( cx ),
+    	_["sinh"]  = sinh( cx ),
+    	_["tanh"]  = tanh( cx )
+    	) ;
+}
+
+// [[Rcpp::export]]
+List runit_rep( IntegerVector xx ){
+    List res = List::create(
+    	_["rep"]      = rep( xx, 3 ),
+    	_["rep_each"] = rep_each( xx, 3 ),
+    	_["rep_len"]  = rep_len( xx, 12 ),
+    	_["rep_prim_double"] = rep( 0.0, 10 )
+    	) ;
+    return res ;
+}
+
+// [[Rcpp::export]]
+IntegerVector runit_rev( IntegerVector xx ){
+    IntegerVector yy = rev( xx * xx );
+    return yy ;
+}
+
+// [[Rcpp::export]]
+NumericMatrix runit_outer( NumericVector xx, NumericVector yy){
+    NumericMatrix m = outer( xx, yy, std::plus<double>() ) ;
+    return m ;
+}
+
+// [[Rcpp::export]]
+List runit_row( NumericMatrix xx ){
+    return List::create(
+    	_["row"] = row( xx ),
+    	_["col"] = col( xx )
+    	 ) ;
+}
+
+// [[Rcpp::export]]
+List runit_head( NumericVector xx ){
+    return List::create(
+    	_["pos"] = head( xx, 5 ),
+    	_["neg"] = head( xx, -5 )
+    ) ;
+}
+
+// [[Rcpp::export]]
+List runit_tail( NumericVector xx ){
+    return List::create(
+    	_["pos"] = tail( xx, 5 ),
+    	_["neg"] = tail( xx, -5 )
+    ) ;
+}
+
+// [[Rcpp::export]]
+List runit_diag( NumericVector xx, NumericMatrix mm ){
+    return List::create(
+    	diag( xx ) ,
+    	diag( mm ),
+    	diag( outer( xx, xx, std::plus<double>() ) )
+    	) ;
+}
+
+// [[Rcpp::export]]
+List runit_gamma( NumericVector xx ){
+    return List::create(
+    	_["gamma"]      = gamma(xx),
+    	_["lgamma"]     = lgamma(xx),
+    	_["digamma"]    = digamma(xx),
+    	_["trigamma"]   = trigamma(xx),
+    	_["tetragamma"] = tetragamma(xx),
+    	_["pentagamma"] = pentagamma(xx),
+    	_["factorial"]  = factorial(xx),
+    	_["lfactorial"] = lfactorial(xx)
+    	) ;
+}
+
+// [[Rcpp::export]]
+List runit_choose( NumericVector nn, NumericVector kk ){
+    return List::create(
+    	_["VV"] = choose(nn,kk),
+    	_["PV"] = choose(10.0, kk ),
+    	_["VP"] = choose(nn, 5.0 )
+    	) ;
+}
+
+// [[Rcpp::export]]
+List runit_lchoose( NumericVector nn, NumericVector kk){
+    return List::create(
+    	_["VV"] = lchoose(nn,kk),
+    	_["PV"] = lchoose(10.0, kk ),
+    	_["VP"] = lchoose(nn, 5.0 )
+    	) ;
+}
+
+// [[Rcpp::export]]
+List runit_beta( NumericVector nn, NumericVector kk){
+    return List::create(
+    	_["VV"] = beta(nn,kk),
+    	_["PV"] = beta(10.0, kk ),
+    	_["VP"] = beta(nn, 5.0 )
+    	) ;
+}
+
+// [[Rcpp::export]]
+List runit_psigamma( NumericVector nn, NumericVector kk){
+    return List::create(
+    	_["VV"] = psigamma(nn,kk),
+    	_["PV"] = psigamma(10.0, kk ),
+    	_["VP"] = psigamma(nn, 5.0 )
+    	) ;
+}
+
+// [[Rcpp::export]]
+List runit_lbeta( NumericVector nn, NumericVector kk){
+    return List::create(
+    	_["VV"] = lbeta(nn,kk),
+    	_["PV"] = lbeta(10.0, kk ),
+    	_["VP"] = lbeta(nn, 5.0 )
+    	) ;
+}
+
+// [[Rcpp::export]]
+List runit_log1p( NumericVector xx){
+    return List::create(
+    	_["log1p"] = log1p(xx),
+    	_["expm1"] = expm1(xx)
+    	) ;
+}
+
+// [[Rcpp::export]]
+double runit_sum( NumericVector xx){
+    return sum( xx ) ;
+}
+
+// [[Rcpp::export]]
+NumericVector runit_cumsum( NumericVector xx ){
+    NumericVector res = cumsum( xx ) ;
+    return res ;
+}
+
+// [[Rcpp::export]]
+List runit_asvector( NumericMatrix z, NumericVector x, NumericVector y){
+    return List::create(
+        as_vector( z ),
+        as_vector( outer( x , y , std::plus<double>() ) )
+    ) ;
+}
+
+// [[Rcpp::export]]
+NumericVector runit_diff_REALSXP_NA( NumericVector x ){
+    NumericVector res= diff(x) ;
+    return res ;
+}
+
+// [[Rcpp::export]]
+List runit_trunc( NumericVector xx, IntegerVector yy){
+    return List::create(trunc(xx), trunc(yy)) ;
+}
+
+// [[Rcpp::export]]
+NumericVector runit_round( NumericVector xx, int d ){
+    NumericVector res = round(xx, d);
+    return res ;
+}
+
+// [[Rcpp::export]]
+NumericVector runit_signif( NumericVector xx, int d ){
+    NumericVector res = signif(xx, d);
+    return res ;
+}
+
+// [[Rcpp::export]]
+double runit_RangeIndexer( NumericVector x ){
+    return max( x[ seq(0, 4) ] ) ;
+}
+
+// [[Rcpp::export]]
+IntegerVector runit_self_match( CharacterVector x){
+    return self_match( x ) ;
+}
+
+// [[Rcpp::export]]
+Rcpp::IntegerVector runit_unique_int(Rcpp::IntegerVector x) {
+    return Rcpp::unique(x);
+}
+
+// [[Rcpp::export]]
+Rcpp::NumericVector runit_unique_dbl(Rcpp::NumericVector x) {
+    return Rcpp::unique(x);
+}
+
+// [[Rcpp::export]]
+Rcpp::CharacterVector runit_unique_ch(Rcpp::CharacterVector x) {
+    return Rcpp::unique(x);
+}
+
+// [[Rcpp::export]]
+Rcpp::CharacterVector runit_sort_unique_ch(Rcpp::CharacterVector x,
+                                           bool decreasing = false) {
+    return Rcpp::sort_unique(x, decreasing);
+}
+
+// [[Rcpp::export]]
+IntegerVector runit_table( CharacterVector x){
+    return table( x ) ;
+}
+
+// [[Rcpp::export]]
+LogicalVector runit_duplicated( CharacterVector x){
+    return duplicated( x ) ;
+}
+
+// [[Rcpp::export]]
+IntegerVector runit_union( IntegerVector x, IntegerVector y){
+    return union_( x, y) ;
+}
+
+// [[Rcpp::export]]
+IntegerVector runit_setdiff( IntegerVector x, IntegerVector y){
+    return setdiff( x, y) ;
+}
+
+// [[Rcpp::export]]
+bool runit_setequal_integer(IntegerVector x, IntegerVector y) {
+    return setequal(x, y);
+}
+
+// [[Rcpp::export]]
+bool runit_setequal_character(CharacterVector x, CharacterVector y) {
+    return setequal(x, y);
+}
+
+// [[Rcpp::export]]
+IntegerVector runit_intersect( IntegerVector x, IntegerVector y){
+    return intersect( x, y ) ;
+}
+
+// [[Rcpp::export]]
+NumericVector runit_clamp( double a, NumericVector x, double b){
+    return clamp( a, x, b ) ;
+}
+
+// [[Rcpp::export]]
+List vector_scalar_ops( NumericVector xx ){
+			NumericVector y1 = xx + 2.0;  // NB does not work with ints as eg "+ 2L"
+			NumericVector y2 = 2 - xx;
+			NumericVector y3 = xx * 2.0;
+			NumericVector y4 = 2.0 / xx;
+			return List::create(y1, y2, y3, y4);
+}
+
+// [[Rcpp::export]]
+List vector_scalar_logical( NumericVector xx ){
+			LogicalVector y1 = xx < 2;
+			LogicalVector y2 = 2  > xx;
+			LogicalVector y3 = xx <= 2;
+			LogicalVector y4 = 2 != xx;
+			return List::create(y1, y2, y3, y4);
+}
+
+// [[Rcpp::export]]
+List vector_vector_ops( NumericVector xx, NumericVector yy){
+			NumericVector y1 = xx + yy;
+			NumericVector y2 = yy - xx;
+			NumericVector y3 = xx * yy;
+			NumericVector y4 = yy / xx;
+			return List::create(y1, y2, y3, y4);
+}
+
+// [[Rcpp::export]]
+List vector_vector_logical( NumericVector xx, NumericVector yy){
+			LogicalVector y1 = xx < yy;
+			LogicalVector y2 = xx > yy;
+			LogicalVector y3 = xx <= yy;
+			LogicalVector y4 = xx >= yy;
+			LogicalVector y5 = xx == yy;
+			LogicalVector y6 = xx != yy;
+			return List::create(y1, y2, y3, y4, y5, y6);
+}
+
+// Additions made 1 Jan 2015
+
+// [[Rcpp::export]]
+double meanInteger(Rcpp::IntegerVector x) { return Rcpp::mean(x); }
+
+// [[Rcpp::export]]
+double meanNumeric(Rcpp::NumericVector x) { return(Rcpp::mean(x)); }
+
+// [[Rcpp::export]]
+double meanLogical(Rcpp::LogicalVector x) { return(Rcpp::mean(x)); }
+
+// [[Rcpp::export]]
+Rcomplex meanComplex(Rcpp::ComplexVector x) { return(Rcpp::mean(x)); }
+
+
+// 30 Oct 2015: cumprod, cummin, cummax
+
+// [[Rcpp::export]]
+NumericVector runit_cumprod_nv(NumericVector xx){
+    NumericVector res = cumprod(xx) ;
+    return res ;
+}
+
+// [[Rcpp::export]]
+IntegerVector runit_cumprod_iv(IntegerVector xx){
+    IntegerVector res = cumprod(xx) ;
+    return res ;
+}
+
+// [[Rcpp::export]]
+ComplexVector runit_cumprod_cv(ComplexVector xx){
+    ComplexVector res = cumprod(xx) ;
+    return res ;
+}
+
+// [[Rcpp::export]]
+NumericVector runit_cummin_nv(NumericVector xx){
+    NumericVector res = cummin(xx) ;
+    return res ;
+}
+
+// [[Rcpp::export]]
+IntegerVector runit_cummin_iv(IntegerVector xx){
+    IntegerVector res = cummin(xx) ;
+    return res ;
+}
+
+// [[Rcpp::export]]
+NumericVector runit_cummax_nv(NumericVector xx){
+    NumericVector res = cummax(xx) ;
+    return res ;
+}
+
+// [[Rcpp::export]]
+IntegerVector runit_cummax_iv(IntegerVector xx){
+    IntegerVector res = cummax(xx) ;
+    return res ;
+}
+
+
+// 18 January 2016: median
+
+// [[Rcpp::export]]
+double median_dbl(Rcpp::NumericVector x, bool na_rm = false) {
+    return Rcpp::median(x, na_rm);
+}
+
+// [[Rcpp::export]]
+double median_int(Rcpp::IntegerVector x, bool na_rm = false) {
+    return Rcpp::median(x, na_rm);
+}
+
+// [[Rcpp::export]]
+Rcomplex median_cx(Rcpp::ComplexVector x, bool na_rm = false) {
+    return Rcpp::median(x, na_rm);
+}
+
+// [[Rcpp::export]]
+Rcpp::String median_ch(Rcpp::CharacterVector x, bool na_rm = false) {
+    return Rcpp::median(x, na_rm);
+}
+
+
+// 12 March 2016: cbind
+// A. Numeric*
+
+// [[Rcpp::export]]
+Rcpp::NumericMatrix n_cbind_mm(Rcpp::NumericMatrix m1, Rcpp::NumericMatrix m2) {
+    return Rcpp::cbind(m1, m2);
+}
+
+// [[Rcpp::export]]
+Rcpp::NumericMatrix n_cbind_mv(Rcpp::NumericMatrix m1, Rcpp::NumericVector v1) {
+    return Rcpp::cbind(m1, v1);
+}
+
+// [[Rcpp::export]]
+Rcpp::NumericMatrix n_cbind_ms(Rcpp::NumericMatrix m1, double s1) {
+    return Rcpp::cbind(m1, s1);
+}
+
+// [[Rcpp::export]]
+Rcpp::NumericMatrix n_cbind_vv(Rcpp::NumericVector v1, Rcpp::NumericVector v2) {
+    return Rcpp::cbind(v1, v2);
+}
+
+// [[Rcpp::export]]
+Rcpp::NumericMatrix n_cbind_vm(Rcpp::NumericVector v1, Rcpp::NumericMatrix m1) {
+    return Rcpp::cbind(v1, m1);
+}
+
+// [[Rcpp::export]]
+Rcpp::NumericMatrix n_cbind_vs(Rcpp::NumericVector v1, double s1) {
+    return Rcpp::cbind(v1, s1);
+}
+
+// [[Rcpp::export]]
+Rcpp::NumericMatrix n_cbind_sm(double s1, Rcpp::NumericMatrix m1) {
+    return Rcpp::cbind(s1, m1);
+}
+
+// [[Rcpp::export]]
+Rcpp::NumericMatrix n_cbind_sv(double s1, Rcpp::NumericVector v1) {
+    return Rcpp::cbind(s1, v1);
+}
+
+// [[Rcpp::export]]
+Rcpp::NumericMatrix n_cbind_ss(double s1, double s2) {
+    return Rcpp::cbind(s1, s2);
+}
+
+// [[Rcpp::export]]
+Rcpp::NumericMatrix
+n_cbind9(Rcpp::NumericMatrix m1, Rcpp::NumericVector v1, double s1,
+         Rcpp::NumericMatrix m2, Rcpp::NumericVector v2, double s2,
+         Rcpp::NumericMatrix m3, Rcpp::NumericVector v3, double s3) {
+    return Rcpp::cbind(m1, v1, s1, m2, v2, s2, m3, v3, s3);
+}
+
+
+// B. Integer*
+
+// [[Rcpp::export]]
+Rcpp::IntegerMatrix
+i_cbind_mm(Rcpp::IntegerMatrix m1, Rcpp::IntegerMatrix m2) {
+    return Rcpp::cbind(m1, m2);
+}
+
+// [[Rcpp::export]]
+Rcpp::IntegerMatrix
+i_cbind_mv(Rcpp::IntegerMatrix m1, Rcpp::IntegerVector v1) {
+    return Rcpp::cbind(m1, v1);
+}
+
+// [[Rcpp::export]]
+Rcpp::IntegerMatrix
+i_cbind_ms(Rcpp::IntegerMatrix m1, int s1) {
+    return Rcpp::cbind(m1, s1);
+}
+
+// [[Rcpp::export]]
+Rcpp::IntegerMatrix
+i_cbind_vv(Rcpp::IntegerVector v1, Rcpp::IntegerVector v2) {
+    return Rcpp::cbind(v1, v2);
+}
+
+// [[Rcpp::export]]
+Rcpp::IntegerMatrix
+i_cbind_vm(Rcpp::IntegerVector v1, Rcpp::IntegerMatrix m1) {
+    return Rcpp::cbind(v1, m1);
+}
+
+// [[Rcpp::export]]
+Rcpp::IntegerMatrix
+i_cbind_vs(Rcpp::IntegerVector v1, int s1) {
+    return Rcpp::cbind(v1, s1);
+}
+
+// [[Rcpp::export]]
+Rcpp::IntegerMatrix
+i_cbind_sm(int s1, Rcpp::IntegerMatrix m1) {
+    return Rcpp::cbind(s1, m1);
+}
+
+// [[Rcpp::export]]
+Rcpp::IntegerMatrix
+i_cbind_sv(int s1, Rcpp::IntegerVector v1) {
+    return Rcpp::cbind(s1, v1);
+}
+
+// [[Rcpp::export]]
+Rcpp::IntegerMatrix
+i_cbind_ss(int s1, int s2) {
+    return Rcpp::cbind(s1, s2);
+}
+
+// [[Rcpp::export]]
+Rcpp::IntegerMatrix
+i_cbind9(Rcpp::IntegerMatrix m1, Rcpp::IntegerVector v1, int s1,
+         Rcpp::IntegerMatrix m2, Rcpp::IntegerVector v2, int s2,
+         Rcpp::IntegerMatrix m3, Rcpp::IntegerVector v3, int s3) {
+    return Rcpp::cbind(m1, v1, s1, m2, v2, s2, m3, v3, s3);
+}
+
+
+// C. Complex*
+
+// [[Rcpp::export]]
+Rcpp::ComplexMatrix
+cx_cbind_mm(Rcpp::ComplexMatrix m1, Rcpp::ComplexMatrix m2) {
+    return Rcpp::cbind(m1, m2);
+}
+
+// [[Rcpp::export]]
+Rcpp::ComplexMatrix
+cx_cbind_mv(Rcpp::ComplexMatrix m1, Rcpp::ComplexVector v1) {
+    return Rcpp::cbind(m1, v1);
+}
+
+// [[Rcpp::export]]
+Rcpp::ComplexMatrix
+cx_cbind_ms(Rcpp::ComplexMatrix m1, Rcomplex s1) {
+    return Rcpp::cbind(m1, s1);
+}
+
+// [[Rcpp::export]]
+Rcpp::ComplexMatrix
+cx_cbind_vv(Rcpp::ComplexVector v1, Rcpp::ComplexVector v2) {
+    return Rcpp::cbind(v1, v2);
+}
+
+// [[Rcpp::export]]
+Rcpp::ComplexMatrix
+cx_cbind_vm(Rcpp::ComplexVector v1, Rcpp::ComplexMatrix m1) {
+    return Rcpp::cbind(v1, m1);
+}
+
+// [[Rcpp::export]]
+Rcpp::ComplexMatrix
+cx_cbind_vs(Rcpp::ComplexVector v1, Rcomplex s1) {
+    return Rcpp::cbind(v1, s1);
+}
+
+// [[Rcpp::export]]
+Rcpp::ComplexMatrix
+cx_cbind_sm(Rcomplex s1, Rcpp::ComplexMatrix m1) {
+    return Rcpp::cbind(s1, m1);
+}
+
+// [[Rcpp::export]]
+Rcpp::ComplexMatrix
+cx_cbind_sv(Rcomplex s1, Rcpp::ComplexVector v1) {
+    return Rcpp::cbind(s1, v1);
+}
+
+// [[Rcpp::export]]
+Rcpp::ComplexMatrix
+cx_cbind_ss(Rcomplex s1, Rcomplex s2) {
+    return Rcpp::cbind(s1, s2);
+}
+
+// [[Rcpp::export]]
+Rcpp::ComplexMatrix
+cx_cbind9(Rcpp::ComplexMatrix m1, Rcpp::ComplexVector v1, Rcomplex s1,
+         Rcpp::ComplexMatrix m2, Rcpp::ComplexVector v2, Rcomplex s2,
+         Rcpp::ComplexMatrix m3, Rcpp::ComplexVector v3, Rcomplex s3) {
+    return Rcpp::cbind(m1, v1, s1, m2, v2, s2, m3, v3, s3);
+}
+
+
+// D. Logical*
+
+// [[Rcpp::export]]
+Rcpp::LogicalMatrix
+l_cbind_mm(Rcpp::LogicalMatrix m1, Rcpp::LogicalMatrix m2) {
+    return Rcpp::cbind(m1, m2);
+}
+
+// [[Rcpp::export]]
+Rcpp::LogicalMatrix
+l_cbind_mv(Rcpp::LogicalMatrix m1, Rcpp::LogicalVector v1) {
+    return Rcpp::cbind(m1, v1);
+}
+
+// [[Rcpp::export]]
+Rcpp::LogicalMatrix
+l_cbind_ms(Rcpp::LogicalMatrix m1, bool s1) {
+    return Rcpp::cbind(m1, s1);
+}
+
+// [[Rcpp::export]]
+Rcpp::LogicalMatrix
+l_cbind_vv(Rcpp::LogicalVector v1, Rcpp::LogicalVector v2) {
+    return Rcpp::cbind(v1, v2);
+}
+
+// [[Rcpp::export]]
+Rcpp::LogicalMatrix
+l_cbind_vm(Rcpp::LogicalVector v1, Rcpp::LogicalMatrix m1) {
+    return Rcpp::cbind(v1, m1);
+}
+
+// [[Rcpp::export]]
+Rcpp::LogicalMatrix
+l_cbind_vs(Rcpp::LogicalVector v1, bool s1) {
+    return Rcpp::cbind(v1, s1);
+}
+
+// [[Rcpp::export]]
+Rcpp::LogicalMatrix
+l_cbind_sm(bool s1, Rcpp::LogicalMatrix m1) {
+    return Rcpp::cbind(s1, m1);
+}
+
+// [[Rcpp::export]]
+Rcpp::LogicalMatrix
+l_cbind_sv(bool s1, Rcpp::LogicalVector v1) {
+    return Rcpp::cbind(s1, v1);
+}
+
+// [[Rcpp::export]]
+Rcpp::LogicalMatrix
+l_cbind_ss(bool s1, bool s2) {
+    return Rcpp::cbind(s1, s2);
+}
+
+// [[Rcpp::export]]
+Rcpp::LogicalMatrix
+l_cbind9(Rcpp::LogicalMatrix m1, Rcpp::LogicalVector v1, bool s1,
+         Rcpp::LogicalMatrix m2, Rcpp::LogicalVector v2, bool s2,
+         Rcpp::LogicalMatrix m3, Rcpp::LogicalVector v3, bool s3) {
+    return Rcpp::cbind(m1, v1, s1, m2, v2, s2, m3, v3, s3);
+}
+
+
+// E. Character*
+
+// [[Rcpp::export]]
+Rcpp::CharacterMatrix
+c_cbind_mm(Rcpp::CharacterMatrix m1, Rcpp::CharacterMatrix m2) {
+    return Rcpp::cbind(m1, m2);
+}
+
+// [[Rcpp::export]]
+Rcpp::CharacterMatrix
+c_cbind_mv(Rcpp::CharacterMatrix m1, Rcpp::CharacterVector v1) {
+    return Rcpp::cbind(m1, v1);
+}
+
+// [[Rcpp::export]]
+Rcpp::CharacterMatrix
+c_cbind_vv(Rcpp::CharacterVector v1, Rcpp::CharacterVector v2) {
+    return Rcpp::cbind(v1, v2);
+}
+
+// [[Rcpp::export]]
+Rcpp::CharacterMatrix
+c_cbind_vm(Rcpp::CharacterVector v1, Rcpp::CharacterMatrix m1) {
+    return Rcpp::cbind(v1, m1);
+}
+
+// [[Rcpp::export]]
+Rcpp::CharacterMatrix
+c_cbind6(Rcpp::CharacterMatrix m1, Rcpp::CharacterVector v1,
+         Rcpp::CharacterMatrix m2, Rcpp::CharacterVector v2,
+         Rcpp::CharacterMatrix m3, Rcpp::CharacterVector v3) {
+    return Rcpp::cbind(m1, v1, m2, v2, m3, v3);
+}
+
+
+// 04 September 2016: rowSums, colSums, rowMeans, colMeans
+
+// [[Rcpp::export]]
+Rcpp::NumericVector dbl_row_sums(Rcpp::NumericMatrix x, bool na_rm = false) {
+    return rowSums(x, na_rm);
+}
+
+// [[Rcpp::export]]
+Rcpp::IntegerVector int_row_sums(Rcpp::IntegerMatrix x, bool na_rm = false) {
+    return rowSums(x, na_rm);
+}
+
+// [[Rcpp::export]]
+Rcpp::IntegerVector lgl_row_sums(Rcpp::LogicalMatrix x, bool na_rm = false) {
+    return rowSums(x, na_rm);
+}
+
+// [[Rcpp::export]]
+Rcpp::ComplexVector cx_row_sums(Rcpp::ComplexMatrix x, bool na_rm = false) {
+    return rowSums(x, na_rm);
+}
+
+
+// [[Rcpp::export]]
+Rcpp::NumericVector dbl_col_sums(Rcpp::NumericMatrix x, bool na_rm = false) {
+    return colSums(x, na_rm);
+}
+
+// [[Rcpp::export]]
+Rcpp::IntegerVector int_col_sums(Rcpp::IntegerMatrix x, bool na_rm = false) {
+    return colSums(x, na_rm);
+}
+
+// [[Rcpp::export]]
+Rcpp::IntegerVector lgl_col_sums(Rcpp::LogicalMatrix x, bool na_rm = false) {
+    return colSums(x, na_rm);
+}
+
+// [[Rcpp::export]]
+Rcpp::ComplexVector cx_col_sums(Rcpp::ComplexMatrix x, bool na_rm = false) {
+    return colSums(x, na_rm);
+}
+
+
+// [[Rcpp::export]]
+Rcpp::NumericVector dbl_row_means(Rcpp::NumericMatrix x, bool na_rm = false) {
+    return rowMeans(x, na_rm);
+}
+
+// [[Rcpp::export]]
+Rcpp::NumericVector int_row_means(Rcpp::IntegerMatrix x, bool na_rm = false) {
+    return rowMeans(x, na_rm);
+}
+
+// [[Rcpp::export]]
+Rcpp::NumericVector lgl_row_means(Rcpp::LogicalMatrix x, bool na_rm = false) {
+    return rowMeans(x, na_rm);
+}
+
+// [[Rcpp::export]]
+Rcpp::ComplexVector cx_row_means(Rcpp::ComplexMatrix x, bool na_rm = false) {
+    return rowMeans(x, na_rm);
+}
+
+
+// [[Rcpp::export]]
+Rcpp::NumericVector dbl_col_means(Rcpp::NumericMatrix x, bool na_rm = false) {
+    return colMeans(x, na_rm);
+}
+
+// [[Rcpp::export]]
+Rcpp::NumericVector int_col_means(Rcpp::IntegerMatrix x, bool na_rm = false) {
+    return colMeans(x, na_rm);
+}
+
+// [[Rcpp::export]]
+Rcpp::NumericVector lgl_col_means(Rcpp::LogicalMatrix x, bool na_rm = false) {
+    return colMeans(x, na_rm);
+}
+
+// [[Rcpp::export]]
+Rcpp::ComplexVector cx_col_means(Rcpp::ComplexMatrix x, bool na_rm = false) {
+    return colMeans(x, na_rm);
+}
+
+
+// 10 December 2016: sample
+
+// [[Rcpp::export]]
+IntegerVector sample_dot_int(int n, int sz, bool rep = false, sugar::probs_t p = R_NilValue, bool one_based = true)
+{
+    return sample(n, sz, rep, p, one_based);
+}
+
+// [[Rcpp::export]]
+IntegerVector sample_int(IntegerVector x, int sz, bool rep = false, sugar::probs_t p = R_NilValue)
+{
+    return sample(x, sz, rep, p);
+}
+
+// [[Rcpp::export]]
+NumericVector sample_dbl(NumericVector x, int sz, bool rep = false, sugar::probs_t p = R_NilValue)
+{
+    return sample(x, sz, rep, p);
+}
+
+// [[Rcpp::export]]
+CharacterVector sample_chr(CharacterVector x, int sz, bool rep = false, sugar::probs_t p = R_NilValue)
+{
+    return sample(x, sz, rep, p);
+}
+
+// [[Rcpp::export]]
+ComplexVector sample_cx(ComplexVector x, int sz, bool rep = false, sugar::probs_t p = R_NilValue)
+{
+    return sample(x, sz, rep, p);
+}
+
+// [[Rcpp::export]]
+LogicalVector sample_lgl(LogicalVector x, int sz, bool rep = false, sugar::probs_t p = R_NilValue)
+{
+    return sample(x, sz, rep, p);
+}
+
+// [[Rcpp::export]]
+List sample_list(List x, int sz, bool rep = false, sugar::probs_t p = R_NilValue)
+{
+    return sample(x, sz, rep, p);
+}
+
+
+// 31 January 2017: upper_tri, lower_tri
+
+// [[Rcpp::export]]
+LogicalMatrix UpperTri(NumericMatrix x, bool diag = false) {
+    return upper_tri(x, diag);
+}
+
+// [[Rcpp::export]]
+LogicalMatrix LowerTri(NumericMatrix x, bool diag = false) {
+    return lower_tri(x, diag);
+}
+
+
+// 22 April 2017: trimws
+
+// [[Rcpp::export]]
+CharacterVector vtrimws(CharacterVector x, const char* which = "both") {
+    return trimws(x, which);
+}
+
+// [[Rcpp::export]]
+CharacterMatrix mtrimws(CharacterMatrix x, const char* which = "both") {
+    return trimws(x, which);
+}
+
+// [[Rcpp::export]]
+String strimws(String x, const char* which = "both") {
+    return trimws(x, which);
+}
+
+
+// 21 Jul 2018 min/max tests for int and double
+
+// [[Rcpp::export]]
+int intmin(IntegerVector v) {
+    return min(v);
+}
+
+// [[Rcpp::export]]
+int intmax(IntegerVector v) {
+    return max(v);
+}
+
+// [[Rcpp::export]]
+double doublemin(NumericVector v) {
+    return min(v);
+}
+
+// [[Rcpp::export]]
+double doublemax(NumericVector v) {
+    return max(v);
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/InternalFunction.cpp
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/InternalFunction.cpp	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/InternalFunction.cpp	(revision 3762)
@@ -0,0 +1,45 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; tab-width: 8 -*-
+//
+// InternalFunction.cpp: Rcpp R/C++ interface class library -- InternalFunction unit tests
+//
+// Copyright (C) 2014 Christian Authmann
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#include <Rcpp.h>
+
+
+int add(int a, int b) {
+	return a + b;
+}
+
+
+// [[Rcpp::export]]
+Rcpp::InternalFunction getAdd() {
+	return Rcpp::InternalFunction( &add );
+}
+
+
+std::string concatenate(std::string a, std::string b) {
+	return a + b;
+}
+
+// [[Rcpp::export]]
+Rcpp::InternalFunction getConcatenate() {
+	return Rcpp::InternalFunction( &concatenate );
+}
+
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/Function.cpp
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/Function.cpp	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/Function.cpp	(revision 3762)
@@ -0,0 +1,82 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; tab-width: 8 -*-
+//
+// Function.cpp: Rcpp R/C++ interface class library -- Rcpp::Function unit tests
+//
+// Copyright (C) 2013 Dirk Eddelbuettel and Romain Francois
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+#include <Rcpp.h>
+using namespace Rcpp ;
+
+// [[Rcpp::export]]
+Function function_(SEXP x){ return Function(x) ; }
+
+// [[Rcpp::export]]
+Function function_cons_env(std::string x, SEXP env) {
+    return Function(x, env);
+}
+
+// [[Rcpp::export]]
+Function function_cons_ns(std::string x, std::string ns) {
+    return Function(x, ns);
+}
+
+// [[Rcpp::export]]
+NumericVector function_variadic(Function sort, NumericVector y){
+    return sort( y, Named("decreasing", true) ) ;
+}
+
+// [[Rcpp::export]]
+Environment function_env(Function fun){
+    return fun.environment() ;
+}
+
+// [[Rcpp::export]]
+IntegerVector function_unarycall(List x){
+    Function len( "length" ) ;
+    IntegerVector output( x.size() ) ;
+    std::transform(
+        	x.begin(), x.end(),
+        	output.begin(),
+        	unary_call<IntegerVector,int>(len)
+    	) ;
+    return output ;
+}
+
+// [[Rcpp::export]]
+List function_binarycall(List list,IntegerVector vec){
+    Function pmin( "pmin" ) ;
+    List output( list.size() ) ;
+    std::transform(
+        	list.begin(), list.end(),
+        	vec.begin(),
+        	output.begin(),
+        	binary_call<IntegerVector,int,IntegerVector>(pmin)
+    	) ;
+    return output ;
+}
+
+// [[Rcpp::export]]
+Function function_namespace_env(){
+    Environment ns = Environment::namespace_env( "stats" ) ;
+    Function fun = ns[".asSparse"] ;  // accesses a non-exported function
+    return fun;
+}
+
+// [[Rcpp::export]]
+void exec(Function f) { f(); }
+
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/S4.cpp
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/S4.cpp	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/S4.cpp	(revision 3762)
@@ -0,0 +1,93 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; tab-width: 8 -*-
+//
+// S4.cpp: Rcpp R/C++ interface class library -- S4 unit tests
+//
+// Copyright (C) 2013 Dirk Eddelbuettel and Romain Francois
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+#include <Rcpp.h>
+using namespace Rcpp ;
+
+// [[Rcpp::export]]
+List S4_methods( RObject y ){
+    List res(5) ;
+    res[0] = y.isS4() ;
+    res[1] = y.hasSlot("x") ;
+    res[2] = y.hasSlot("z") ;
+    res[3] = y.slot("x") ;
+    res[4] = y.slot("y") ;
+    return res ;
+}
+
+// [[Rcpp::export]]
+void S4_getslots( S4 y){
+    y.slot( "x" ) = 10.0 ;
+    y.slot( "y" ) = 20.0 ;
+}
+
+// [[Rcpp::export]]
+void S4_setslots( S4 y ){
+    y.slot( "foo" ) = 10.0 ;
+}
+
+// [[Rcpp::export]]
+void S4_setslots_2( S4 y){
+    y.slot( "foo" ) ;
+}
+
+// [[Rcpp::export]]
+S4 S4_ctor( std::string cl){
+    return S4( cl );
+}
+
+// [[Rcpp::export]]
+bool S4_is_track(S4 tr){
+    return tr.is("track") ;
+}
+
+// [[Rcpp::export]]
+bool S4_is_trackCurve(S4 tr){
+    return tr.is("trackCurve") ;
+}
+
+// [[Rcpp::export]]
+NumericVector S4_get_slot_x(S4 o){
+    NumericVector res( o.slot("x") );
+    return res ;
+}
+
+// [[Rcpp::export]]
+CharacterVector S4_get_attr_x(IntegerVector o){
+    CharacterVector res( o.attr("foo") ) ;
+    return res ;
+}
+
+// [[Rcpp::export]]
+S4 S4_dotdata(S4 foo){
+    foo.slot( ".Data" ) = "foooo" ;
+    return foo ;
+}
+
+// [[Rcpp::export]]
+std::vector<double> S4_proxycoerce(S4 x_) {
+  NumericVector x(x_.slot("data"));
+  std::vector<double> xx( x.size() );
+  for (int i=0; i < x.size(); ++i) {
+    xx[i] = x[i];
+  }
+  return xx;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/InternalFunctionCPP11.cpp
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/InternalFunctionCPP11.cpp	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/InternalFunctionCPP11.cpp	(revision 3762)
@@ -0,0 +1,45 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; tab-width: 8 -*-
+//
+// InternalFunction.cpp: Rcpp R/C++ interface class library -- InternalFunction unit tests
+//
+// Copyright (C) 2014 Christian Authmann
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#include <Rcpp.h>
+
+
+int add(int a, int b) {
+	return a + b;
+}
+
+
+// [[Rcpp::export]]
+Rcpp::InternalFunction getAdd4() {
+	std::function<int(int)> func = std::bind(add, 4, std::placeholders::_1);
+	return Rcpp::InternalFunction( func );
+}
+
+
+// [[Rcpp::export]]
+Rcpp::InternalFunction getConcatenate() {
+	std::function<std::string(std::string,std::string)> func = [] (std::string a, std::string b) -> std::string {
+		return a + b;
+	};
+	return Rcpp::InternalFunction( func );
+}
+
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/table.cpp
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/table.cpp	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/table.cpp	(revision 3762)
@@ -0,0 +1,37 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; tab-width: 8 -*-
+//
+// table.cpp: Rcpp R/C++ interface class library -- table<> unit tests
+//
+// Copyright (C) 2013 Dirk Eddelbuettel, Romain Francois, and Kevin Ushey
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+#include <Rcpp.h>
+using namespace Rcpp ;
+
+// [[Rcpp::export]]
+IntegerVector RcppTable(SEXP x) {
+  switch (TYPEOF(x)) {
+  case INTSXP: return table(as<IntegerVector>(x));
+  case REALSXP: return table(as<NumericVector>(x));
+  case STRSXP: return table(as<CharacterVector>(x));
+  case LGLSXP: return table(as<LogicalVector>(x));
+  default: {
+    stop("untested SEXP type");
+    return R_NilValue;
+  }
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/RObject.cpp
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/RObject.cpp	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/RObject.cpp	(revision 3762)
@@ -0,0 +1,164 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; tab-width: 8 -*-
+//
+// RObject.cpp: Rcpp R/C++ interface class library -- RObject unit tests
+//
+// Copyright (C) 2013 Dirk Eddelbuettel and Romain Francois
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+#include <Rcpp.h>
+using namespace Rcpp ;
+
+// [[Rcpp::export]]
+double asDouble(double d){
+    return 2*d ;
+}
+
+// [[Rcpp::export]]
+int asInt(int i){
+    return 2*i;
+}
+
+// [[Rcpp::export]]
+std::string asStdString(std::string s){
+   return s+s ;
+}
+
+// [[Rcpp::export]]
+Rbyte asRaw( Rbyte i ){
+    return (Rbyte)(2*i) ;
+}
+
+// [[Rcpp::export]]
+bool asLogical( bool b){
+    return !b ;
+}
+
+// [[Rcpp::export]]
+std::vector<int> asStdVectorInt( SEXP x){
+    std::vector<int> iv = as< std::vector<int> >(x);
+	for (size_t i=0; i<iv.size(); i++) {
+	    iv[i] = 2*iv[i];
+    }
+	return iv ;
+}
+
+// [[Rcpp::export]]
+std::vector<double> asStdVectorDouble(SEXP x){
+    std::vector<double> iv = as< std::vector<double> >( x );
+    for (size_t i=0; i<iv.size(); i++) {
+        	iv[i] = 2*iv[i];
+    }
+	return iv ;
+}
+
+// [[Rcpp::export]]
+std::vector<Rbyte> asStdVectorRaw( SEXP x){
+    std::vector<Rbyte> iv = as< std::vector<Rbyte> >( x );
+    for (size_t i=0; i<iv.size(); i++) {
+        iv[i] = 2*iv[i];
+    }
+	return iv ;
+}
+
+
+// [[Rcpp::export]]
+std::vector<bool> asStdVectorBool( SEXP x ){
+    std::vector<bool> bv = as< std::vector<bool> >( x );
+    for (size_t i=0; i<bv.size(); i++) {
+        	bv[i].flip() ;
+    }
+    return bv ;
+}
+
+// [[Rcpp::export]]
+std::vector<std::string> asStdVectorString( SEXP x){
+    std::vector<std::string> iv = as< std::vector<std::string> >( x );
+    for (size_t i=0; i<iv.size(); i++) {
+        iv[i] = iv[i] + iv[i];
+    }
+	return iv ;
+}
+
+// [[Rcpp::export]]
+std::set<int> stdsetint(){
+    std::set<int> iv ;
+    iv.insert( 0 ) ;
+    iv.insert( 1 ) ;
+    iv.insert( 0 ) ;
+    return iv ;
+}
+
+// [[Rcpp::export]]
+std::set<double> stdsetdouble(){
+    std::set<double> ds;
+    ds.insert( 0.0 );
+    ds.insert( 1.0 );
+    ds.insert( 0.0 );
+    return ds ;
+}
+
+// [[Rcpp::export]]
+std::set<Rbyte> stdsetraw(){
+    std::set<Rbyte> bs ;
+    bs.insert( (Rbyte)0 ) ;
+    bs.insert( (Rbyte)1 ) ;
+    bs.insert( (Rbyte)0 ) ;
+    return bs ;
+}
+
+// [[Rcpp::export]]
+std::set<std::string> stdsetstring(){
+    std::set<std::string> ss ;
+	ss.insert( "foo" ) ;
+	ss.insert( "bar" ) ;
+	ss.insert( "foo" ) ;
+	return ss ;
+}
+
+// [[Rcpp::export]]
+std::vector<std::string> attributeNames(DataFrame x){
+    return x.attributeNames() ;
+}
+
+// [[Rcpp::export]]
+bool hasAttribute( DataFrame x){
+    bool has_class = x.hasAttribute( "class" ) ;
+    return has_class ;
+}
+
+// [[Rcpp::export]]
+SEXP attr_( DataFrame x){
+    return x.attr( "row.names" ) ;
+}
+
+// [[Rcpp::export]]
+RObject attr_set(){
+    RObject y = wrap("blabla") ;
+	y.attr("foo") = 10 ;
+	return y ;
+}
+
+// [[Rcpp::export]]
+bool isNULL(RObject x){
+    return x.isNULL() ;
+}
+
+// [[Rcpp::export]]
+bool inherits_( RObject xx){
+    return xx.inherits( "foo" ) ;
+}
+
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/misc.cpp
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/misc.cpp	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/misc.cpp	(revision 3762)
@@ -0,0 +1,231 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; indent-tabs-mode: nil; -*-
+//
+// misc.cpp: Rcpp R/C++ interface class library -- misc unit tests
+//
+// Copyright (C) 2013 - 2015  Dirk Eddelbuettel and Romain Francois
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+#include <Rcpp.h>
+using namespace Rcpp;
+using namespace std;
+#include <iostream>
+#include <fstream>
+
+class simple {
+    Rcpp::Dimension dd;
+public:
+    simple(SEXP xp) : dd(xp) {}
+    int nrow() const { return dd[0]; }
+    int ncol() const { return dd[1]; }
+};
+
+// [[Rcpp::export]]
+SEXP symbol_() {
+    return LogicalVector::create(
+        Symbol( Rf_install("foobar") ) == Rf_install("foobar"),
+        Symbol( Rf_mkChar("foobar") ) == Rf_install("foobar"),
+        Symbol( Rf_mkString("foobar") ) == Rf_install("foobar"),
+        Symbol( "foobar" ) == Rf_install("foobar")
+    );
+}
+
+// [[Rcpp::export]]
+Symbol symbol_ctor(SEXP x) { return Symbol(x); }
+
+// [[Rcpp::export]]
+List Argument_() {
+    Argument x("x"), y("y");
+    return List::create( x = 2, y = 3 );
+}
+
+// [[Rcpp::export]]
+int Dimension_const( SEXP ia ) {
+    simple ss(ia);
+        return ss.nrow();
+}
+
+// [[Rcpp::export]]
+SEXP evaluator_error() {
+    return Rcpp_fast_eval(Rf_lang2(Rf_install("stop"), Rf_mkString("boom")), R_GlobalEnv);
+}
+
+// [[Rcpp::export]]
+SEXP evaluator_ok(SEXP x) {
+    return Rcpp_fast_eval(Rf_lang2(Rf_install("sample"), x), R_GlobalEnv);
+}
+
+// [[Rcpp::export]]
+void exceptions_() {
+    throw std::range_error("boom");
+}
+
+// [[Rcpp::export]]
+LogicalVector has_iterator_( ) {
+    return LogicalVector::create(
+        (bool)Rcpp::traits::has_iterator< std::vector<int> >::value,
+        (bool)Rcpp::traits::has_iterator< std::list<int> >::value,
+        (bool)Rcpp::traits::has_iterator< std::deque<int> >::value,
+        (bool)Rcpp::traits::has_iterator< std::set<int> >::value,
+        (bool)Rcpp::traits::has_iterator< std::map<std::string,int> >::value,
+        (bool)Rcpp::traits::has_iterator< std::pair<std::string,int> >::value,
+        (bool)Rcpp::traits::has_iterator< Rcpp::Symbol >::value
+        );
+}
+
+// [[Rcpp::export]]
+void test_rcout(std::string tfile, std::string teststring) {
+    // define and open testfile
+    std::ofstream testfile(tfile.c_str());
+
+    // save output buffer of the Rcout stream
+    std::streambuf* Rcout_buffer = Rcout.rdbuf();
+
+    // redirect ouput into testfile
+    Rcout.rdbuf( testfile.rdbuf() );
+
+    // write a test string to the file
+    Rcout << teststring << std::endl;
+
+    // restore old output buffer
+    Rcout.rdbuf(Rcout_buffer);
+
+    // close testfile
+    testfile.close();
+}
+
+// [[Rcpp::export]]
+void test_rcout_rcomplex(std::string tfile, SEXP rc) {
+    Rcomplex rx = Rcpp::as<Rcomplex>(rc);
+    // define and open testfile
+    std::ofstream testfile(tfile.c_str());
+
+    // save output buffer of the Rcout stream
+    std::streambuf* Rcout_buffer = Rcout.rdbuf();
+
+    // redirect ouput into testfile
+    Rcout.rdbuf( testfile.rdbuf() );
+
+    // write a test string to the file
+    Rcout << rx << std::endl;
+
+    // restore old output buffer
+    Rcout.rdbuf(Rcout_buffer);
+
+    // close testfile
+    testfile.close();
+}
+
+// [[Rcpp::export]]
+LogicalVector na_proxy() {
+    CharacterVector s("foo");
+    return LogicalVector::create(
+        NA_REAL    == NA,
+        NA_INTEGER == NA,
+        NA_STRING  == NA,
+        true       == NA,
+        false      == NA,
+        1.2        == NA,
+        12         == NA,
+        "foo"      == NA,
+        s[0]       == NA,
+
+        NA         == NA_REAL,
+        NA         == NA_INTEGER,
+        NA         == NA_STRING,
+        NA         == true,
+        NA         == false,
+        NA         == 1.2  ,
+        NA         == 12   ,
+        NA         == "foo",
+        NA         == s[0]
+        );
+}
+
+// [[Rcpp::export]]
+StretchyList stretchy_list() {
+    StretchyList out;
+    out.push_back( 1 );
+    out.push_front( "foo" );
+    out.push_back( 3.2 );
+    return out;
+}
+
+// [[Rcpp::export]]
+StretchyList named_stretchy_list() {
+    StretchyList out;
+    out.push_back( _["b"] = 1 );
+    out.push_front( _["a"] = "foo" );
+    out.push_back( _["c"] = 3.2 );
+    return out;
+}
+
+// [[Rcpp::export]]
+void test_stop_variadic() {
+    stop( "%s %d", "foo", 3 );
+}
+
+// [[Rcpp::export]]
+bool testNullableForNull(const Nullable<NumericMatrix>& M) {
+    return M.isNull();
+}
+
+// [[Rcpp::export]]
+bool testNullableForNotNull(const Nullable<NumericMatrix>& M) {
+    return M.isNotNull();
+}
+
+// [[Rcpp::export]]
+SEXP testNullableOperator(const Nullable<NumericMatrix>& M) {
+    return M;
+}
+
+// [[Rcpp::export]]
+SEXP testNullableGet(const Nullable<NumericMatrix>& M) {
+    return M.get();
+}
+
+// [[Rcpp::export]]
+NumericMatrix testNullableAs(Nullable<NumericMatrix>& M) {
+    return M.as();
+}
+
+// [[Rcpp::export]]
+NumericMatrix testNullableClone(const Nullable<NumericMatrix>& M) {
+    return M.clone();
+}
+
+// [[Rcpp::export]]
+SEXP testNullableIsUsable(const Nullable<NumericMatrix>& M) {
+    if (M.isUsable()) {
+        return M.clone();
+    } else {
+        return R_NilValue;
+    }
+}
+
+// [[Rcpp::export]]
+String testNullableString(Rcpp::Nullable<Rcpp::String> param = R_NilValue) {
+  if (param.isNotNull())
+    return String(param);
+  else
+    return String("");
+}
+
+// [[Rcpp::export]]
+void messageWrapper(SEXP s) {
+    message(s);
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/wstring.cpp
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/wstring.cpp	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/wstring.cpp	(revision 3762)
@@ -0,0 +1,43 @@
+#include <Rcpp.h>
+using namespace Rcpp ;
+
+// [[Rcpp::export]]
+CharacterVector CharacterVector_wstring( ){
+    CharacterVector res(2) ;
+    res[0] = L"foo" ;
+    res[0] += L"bar" ;
+
+    res[1] = std::wstring( L"foo" ) ;
+    res[1] += std::wstring( L"bar" ) ;
+
+    return res ;
+}
+
+// [[Rcpp::export]]
+std::wstring wstring_return(){
+    return L"foo" ;
+}
+
+// [[Rcpp::export]]
+String wstring_param(std::wstring s1, std::wstring s2){
+    String s = s1 ;
+    s += s2 ;
+    return s ;
+}
+
+// [[Rcpp::export]]
+std::vector<std::wstring> wrap_vector_wstring(){
+    std::vector<std::wstring> res(2 );
+    res[0] = L"foo" ;
+    res[1] = L"bar" ;
+    return res;
+}
+
+// [[Rcpp::export]]
+std::vector<std::wstring> as_vector_wstring( std::vector<std::wstring> x){
+    for( size_t i=0; i<x.size(); i++){
+        x[i] += L"€" ;
+    }
+    return x ;
+}
+
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/embeddedR2.cpp
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/embeddedR2.cpp	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/embeddedR2.cpp	(revision 3762)
@@ -0,0 +1,33 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; tab-width: 8 -*-
+//
+// Environment.cpp: Rcpp R/C++ interface class library -- Environment unit tests
+//
+// Copyright (C) 2018 Dirk Eddelbuettel and Romain Francois
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+#include <Rcpp.h>
+using namespace Rcpp ;
+
+// [[Rcpp::export]]
+int bar(){
+    return 42 ;
+}
+
+/*** R
+x <- foo()
+x
+*/
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/stats.cpp
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/stats.cpp	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/stats.cpp	(revision 3762)
@@ -0,0 +1,255 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; tab-width: 8 -*-
+//
+// stats.cpp: Rcpp R/C++ interface class library -- stats unit tests
+//
+// Copyright (C) 2013 Dirk Eddelbuettel and Romain Francois
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+#include <Rcpp.h>
+using namespace Rcpp ;
+
+// [[Rcpp::export]]
+List runit_dbeta(NumericVector xx, double aa, double bb){
+    return List::create(
+        _["NoLog"] = dbeta( xx, aa, bb),
+        _["Log"]	 = dbeta( xx, aa, bb, true )
+    );
+}
+
+// [[Rcpp::export]]
+List runit_dbinom( IntegerVector xx ){
+    return List::create(
+        _["false"] = dbinom( xx, 10, .5),
+        _["true"]	 = dbinom( xx, 10, .5, true )
+    );
+}
+
+// [[Rcpp::export]]
+List runit_dunif( NumericVector xx){
+    return List::create(
+        _["NoLog_noMin_noMax"] = dunif( xx ),
+        _["NoLog_noMax"] = dunif( xx, 0.0 ),
+        _["NoLog"] = dunif( xx, 0.0 , 1.0 ),
+        _["Log"]	= dunif( xx, 0.0, 1.0 , true ),
+        _["Log_noMax"]	= dunif( xx, 0.0, true )
+        //,_["Log_noMin_noMax"]	= dunif( xx, true )
+    );
+}
+
+// [[Rcpp::export]]
+List runit_dgamma( NumericVector xx ){
+    return List::create(
+        _["NoLog"] = dgamma( xx, 1.0, 1.0),
+        _["Log"]	 = dgamma( xx, 1.0, 1.0, true ),
+        _["Log_noRate"]	 = dgamma( xx, 1.0, true )
+        );
+}
+
+// [[Rcpp::export]]
+List runit_dpois( IntegerVector xx ){
+    return List::create(
+        _["false"] = dpois( xx, .5 ),
+        _["true"]	 = dpois( xx, .5 , true)
+        );
+}
+
+// [[Rcpp::export]]
+List runit_dnorm( NumericVector xx ){
+    return List::create(
+        _["false_noMean_noSd"] = dnorm( xx ),
+        _["false_noSd"] = dnorm( xx, 0.0  ),
+        _["false"] = dnorm( xx, 0.0, 1.0 ),
+        _["true"]	 = dnorm( xx, 0.0, 1.0, true ),
+        _["true_noSd"]	 = dnorm( xx, 0.0, true ),
+        _["true_noMean_noSd"]	 = dnorm( xx, true )
+        );
+}
+
+// [[Rcpp::export]]
+List runit_dt( NumericVector xx){
+    return List::create(
+        _["false"] = dt( xx, 5),
+        _["true"]	 = dt( xx, 5, true ));
+}
+
+// [[Rcpp::export]]
+List runit_pbeta( NumericVector xx, double aa, double bb ){
+    return List::create(
+        _["lowerNoLog"] = pbeta( xx, aa, bb),
+        _["lowerLog"]	  = pbeta( xx, aa, bb, true, true),
+        _["upperNoLog"] = pbeta( xx, aa, bb, false),
+        _["upperLog"]	  = pbeta( xx, aa, bb, false, true)
+    );
+}
+
+// [[Rcpp::export]]
+List runit_pbinom( NumericVector xx, int n, double p){
+    return List::create(
+        _["lowerNoLog"] = pbinom(xx, n, p ),
+        _["lowerLog"]	  = pbinom(xx, n, p, true, true ),
+        _["upperNoLog"] = pbinom(xx, n, p, false ),
+        _["upperLog"]	  = pbinom(xx, n, p, false, true )
+    );
+}
+
+// [[Rcpp::export]]
+List runit_pcauchy( NumericVector xx, double loc, double scl){
+    return List::create(
+        _["lowerNoLog"] = pcauchy(xx, loc, scl ),
+        _["lowerLog"]	  = pcauchy(xx, loc, scl, true, true ),
+        _["upperNoLog"] = pcauchy(xx, loc, scl, false ),
+        _["upperLog"]	  = pcauchy(xx, loc, scl, false, true )
+    );
+}
+
+// [[Rcpp::export]]
+List runit_punif( NumericVector xx ){
+    return List::create(
+        _["lowerNoLog"] = punif( xx, 0.0, 1.0 ),
+        _["lowerLog"]   = punif( xx, 0.0, 1.0, true, true ),
+        _["upperNoLog"] = punif( xx, 0.0, 1.0, false ),
+        _["upperLog"]   = punif( xx, 0.0, 1.0, false, true )
+    );
+}
+
+// [[Rcpp::export]]
+List runit_pgamma( NumericVector xx ){
+    return List::create(
+        _["lowerNoLog"] = pgamma( xx, 2.0, 1.0 ),
+        _["lowerLog"]	  = pgamma( xx, 2.0, 1.0, true, true ),
+        _["upperNoLog"] = pgamma( xx, 2.0, 1.0, false ),
+        _["upperLog"]	  = pgamma( xx, 2.0, 1.0, false, true )
+        );
+}
+
+// [[Rcpp::export]]
+List runit_pnf( NumericVector xx ){
+    return List::create(
+        _["lowerNoLog"] = pnf( xx, 6.0, 8.0, 2.5, true ),
+        _["lowerLog"]	  = pnf( xx, 6.0, 8.0, 2.5, true, true ),
+        _["upperNoLog"] = pnf( xx, 6.0, 8.0, 2.5, false ),
+        _["upperLog"]	  = pnf( xx, 6.0, 8.0, 2.5, false, true )
+        );
+}
+
+// [[Rcpp::export]]
+List runit_pf( NumericVector xx ){
+    return List::create(
+        _["lowerNoLog"] = pf( xx, 6.0, 8.0 ),
+        _["lowerLog"]	  = pf( xx, 6.0, 8.0, true, true ),
+        _["upperNoLog"] = pf( xx, 6.0, 8.0, false ),
+        _["upperLog"]	  = pf( xx, 6.0, 8.0, false, true )
+    );
+}
+
+// [[Rcpp::export]]
+List runit_pnchisq( NumericVector xx ){
+    return List::create(
+        _["lowerNoLog"] = pnchisq( xx, 6.0, 2.5, true ),
+        _["lowerLog"]	  = pnchisq( xx, 6.0, 2.5, true, true ),
+        _["upperNoLog"] = pnchisq( xx, 6.0, 2.5, false ),
+        _["upperLog"]	  = pnchisq( xx, 6.0, 2.5, false, true )
+        );
+}
+
+// [[Rcpp::export]]
+List runit_pchisq( NumericVector xx){
+    return List::create(
+        _["lowerNoLog"] = pchisq( xx, 6.0 ),
+        _["lowerLog"]	  = pchisq( xx, 6.0, true, true ),
+        _["upperNoLog"] = pchisq( xx, 6.0, false ),
+        _["upperLog"]	  = pchisq( xx, 6.0, false, true )
+    );
+}
+
+// [[Rcpp::export]]
+List runit_pnorm( NumericVector xx ){
+    return List::create(
+        _["lowerNoLog"] = pnorm( xx, 0.0, 1.0 ),
+        _["lowerLog"]	  = pnorm( xx, 0.0, 1.0, true, true ),
+        _["upperNoLog"] = pnorm( xx, 0.0, 1.0, false ),
+        _["upperLog"]	  = pnorm( xx, 0.0, 1.0, false, true )
+        );
+}
+
+// [[Rcpp::export]]
+List runit_ppois( NumericVector xx){
+    return List::create(
+        _["lowerNoLog"] = ppois( xx, 0.5 ),
+        _["lowerLog"]	  = ppois( xx, 0.5, true, true ),
+        _["upperNoLog"] = ppois( xx, 0.5, false ),
+        _["upperLog"]	  = ppois( xx, 0.5, false, true )
+        );
+}
+
+// [[Rcpp::export]]
+List runit_pt(NumericVector xx){
+    return List::create(_["lowerNoLog"] = pt( xx, 5 /*true,    false*/),
+			_["lowerLog"]   = pt( xx, 5,  true,    true),
+			_["upperNoLog"] = pt( xx, 5,  false /*,false*/),
+			_["upperLog"]   = pt( xx, 5,  false,   true)    );
+}
+
+// [[Rcpp::export]]
+List runit_pnt(NumericVector xx){
+    return List::create(_["lowerNoLog"] = pnt( xx, 5, 7  /*true,    false*/),
+			_["lowerLog"]   = pnt( xx, 5, 7,   true,    true),
+			_["upperNoLog"] = pnt( xx, 5, 7,   false /*,false*/),
+			_["upperLog"]   = pnt( xx, 5, 7,   false,   true)    );
+}
+
+// [[Rcpp::export]]
+List runit_qbinom_prob( NumericVector xx, int n, double p){
+    return List::create(
+        _["lower"] = qbinom( xx, n, p ),
+        _["upper"] = qbinom( xx, n, p, false)
+        );
+}
+
+// [[Rcpp::export]]
+List runit_qunif_prob( NumericVector xx ){
+    return List::create(
+        _["lower"] = qunif( xx, 0.0, 1.0 ),
+        _["upper"] = qunif( xx, 0.0, 1.0, false)
+        );
+}
+
+// [[Rcpp::export]]
+List runit_qnorm_prob( NumericVector xx ){
+    return List::create(
+        _["lower"] = qnorm( xx, 0.0, 1.0 ),
+        _["upper"] = qnorm( xx, 0.0, 1.0, false));
+}
+
+// [[Rcpp::export]]
+List runit_qnorm_log( NumericVector xx ){
+    return List::create(
+        _["lower"] = qnorm( xx, 0.0, 1.0, true, true),
+        _["upper"] = qnorm( xx, 0.0, 1.0, false, true));
+}
+
+// [[Rcpp::export]]
+List runit_qpois_prob( NumericVector xx ){
+    return List::create(
+        _["lower"] = qpois( xx, 0.5 ),
+        _["upper"] = qpois( xx, 0.5, false));
+}
+
+// [[Rcpp::export]]
+NumericVector runit_qt( NumericVector xx, double d, bool lt, bool lg ){
+    return qt( xx, d, lt, lg);
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/dispatch.cpp
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/dispatch.cpp	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/dispatch.cpp	(revision 3762)
@@ -0,0 +1,47 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; tab-width: 8 -*-
+//
+// dispatch.cpp: Rcpp R/C++ interface class library -- dispatch macro unit tests
+//
+// Copyright (C) 2013 Dirk Eddelbuettel and Romain Francois
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>. 
+
+#include <Rcpp.h>
+using namespace Rcpp ;
+
+template <typename T>
+T first_el_impl(const T& x) {
+    T res(1);
+    res[0] = x[0];
+    return res;
+}
+
+// [[Rcpp::export]]
+SEXP first_el(SEXP x) {
+    RCPP_RETURN_VECTOR(first_el_impl, x);
+}
+
+template <typename T>
+T first_cell_impl(const T& x) {
+    T res(1, 1);
+    res(0, 0) = x(0, 0);
+    return res;
+}
+
+// [[Rcpp::export]]
+SEXP first_cell(SEXP x) {
+    RCPP_RETURN_MATRIX(first_cell_impl, x)
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/VectorOld.cpp
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/VectorOld.cpp	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/VectorOld.cpp	(revision 3762)
@@ -0,0 +1,38 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; tab-width: 8 -*-
+//
+// Vector-old.cpp: Rcpp R/C++ interface class library -- Vector unit tests
+//
+// Copyright (C) 2014    Dirk Eddelbuettel, Romain Francois and Kevin Ushey
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+#define RCPP_COMMA_INITIALIZATION
+#include <Rcpp.h>
+using namespace Rcpp;
+
+// [[Rcpp::export]]
+IntegerVector integer_comma(){
+    IntegerVector x(4) ;
+    x = 0, 1, 2, 3 ;
+    return x ;
+}
+
+// [[Rcpp::export]]
+CharacterVector character_comma(){
+    CharacterVector x(3) ;
+    x = "foo", "bar", "bling" ;
+    return x ;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/Vector.cpp
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/Vector.cpp	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/Vector.cpp	(revision 3762)
@@ -0,0 +1,888 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; indent-tabs-mode: nil; -*-
+//
+// Vector.cpp: Rcpp R/C++ interface class library -- Vector unit tests
+//
+// Copyright (C) 2012 - 2018    Dirk Eddelbuettel and Romain Francois
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+#include <climits>
+#include <Rcpp.h>
+#include <sstream>
+
+using namespace Rcpp ;
+
+inline double square( double x){ return x*x; }
+
+// [[Rcpp::export]]
+RawVector raw_(){
+    RawVector x(10) ;
+    for( int i=0; i<10; i++) x[i] = (Rbyte)i ;
+    return x ;
+}
+
+// [[Rcpp::export]]
+RawVector raw_REALSXP( RawVector x ){
+    for( int i=0; i<x.size(); i++) {
+        x[i] = x[i]*2 ;
+    }
+    return x ;
+}
+
+// [[Rcpp::export]]
+ExpressionVector expression_(){
+    ExpressionVector x(2) ;
+    x[0] = Symbol( "rnorm" ) ;
+    x[1] = Rf_lcons( Symbol("rnorm"), Rf_cons( Rf_ScalarReal(10.0), R_NilValue) ) ;
+    return x ;
+}
+
+// [[Rcpp::export]]
+ExpressionVector expression_variadic(){
+    ExpressionVector x(2) ;
+    x[0] = Symbol( "rnorm" ) ;
+    x[1] = Language( "rnorm", 10.0 ) ;
+    return x ;
+}
+
+// [[Rcpp::export]]
+ExpressionVector expression_parse(){
+    ExpressionVector code( "local( { y <- sample(1:10); sort(y) })" ) ;
+    return code ;
+}
+
+// [[Rcpp::export]]
+ExpressionVector expression_parseerror(){
+    ExpressionVector code( "rnorm(" ) ;
+    return code ;
+}
+
+// [[Rcpp::export]]
+SEXP expression_eval(){
+    ExpressionVector code( "local( { y <- sample(1:10); sort(y) })" ) ;
+    return code.eval() ;
+}
+
+// [[Rcpp::export]]
+SEXP expression_evalenv( Environment env){
+    ExpressionVector code( "sort(x)" ) ;
+    return code.eval(env) ;
+}
+
+// [[Rcpp::export]]
+ComplexVector complex_(){
+    ComplexVector x(10) ;
+    Rcomplex rc ;
+    for( int i=0; i<10; i++) {
+        rc.r = rc.i = i + 0.0 ;
+        x[i] = rc ;
+    }
+    return x ;
+}
+
+// [[Rcpp::export]]
+ComplexVector complex_CPLXSXP( ComplexVector x ){
+    int nn = x.size();
+    for( int i=0; i<nn; i++) {
+        x[i].r = x[i].r*2 ;
+        x[i].i = x[i].i*2 ;
+    }
+    return x ;
+}
+
+// [[Rcpp::export]]
+ComplexVector complex_INTSXP( SEXP vec ){
+    ComplexVector x(vec);
+    int nn = x.size();
+    IntegerVector tmp(nn, 2.0);
+    ComplexVector tmp1(tmp);
+    x = x * tmp1;
+    return x ;
+}
+
+// [[Rcpp::export]]
+ComplexVector complex_REALSXP(SEXP vec){
+    ComplexVector x(vec);
+    int nn = x.size();
+    NumericVector tmp(nn, 3.0);
+    ComplexVector tmp1(tmp);
+    x = x * tmp1;
+    return x ;
+}
+
+// [[Rcpp::export]]
+IntegerVector integer_ctor(){
+    IntegerVector x(10) ;
+    for( int i=0; i<10; i++) x[i] = i ;
+    return x ;
+}
+
+// [[Rcpp::export]]
+IntegerVector integer_INTSXP(SEXP vec){
+    IntegerVector x(vec) ;
+    for( int i=0; i<x.size(); i++) {
+        x[i] = x[i]*2 ;
+    }
+    return x ;
+}
+
+// [[Rcpp::export]]
+IntegerVector integer_dimension_ctor_1(){
+    return IntegerVector( Dimension( 5 ) ) ;
+}
+
+// [[Rcpp::export]]
+IntegerVector integer_dimension_ctor_2(){
+    return IntegerVector( Dimension( 5, 5 ) ) ;
+}
+
+// [[Rcpp::export]]
+IntegerVector integer_dimension_ctor_3(){
+    return IntegerVector( Dimension( 2, 3, 4) ) ;
+}
+
+// [[Rcpp::export]]
+IntegerVector integer_range_ctor_1(){
+    int x[] = { 0, 1, 2, 3 } ;
+    IntegerVector y( x, x+4 ) ;
+    return y;
+}
+
+// [[Rcpp::export]]
+IntegerVector integer_range_ctor_2(){
+    std::vector<int> vec(4) ;
+    for( size_t i = 0; i<4; i++) vec[i] = i;
+    IntegerVector y( vec.begin(), vec.end() ) ;
+    return y;
+}
+
+// [[Rcpp::export]]
+IntegerVector integer_names_set(){
+    IntegerVector y(2) ;
+    std::vector<std::string> names(2)  ;
+    names[0] = "foo" ;
+    names[1] = "bar" ;
+    y.names() = names ;
+    return y ;
+}
+
+// [[Rcpp::export]]
+CharacterVector integer_names_get( IntegerVector y ){
+    return y.names() ;
+}
+
+// [[Rcpp::export]]
+int integer_names_indexing( IntegerVector y ){
+    return y["foo"] ;
+}
+
+// [[Rcpp::export]]
+IntegerVector integer_push_back( IntegerVector y ){
+    y.push_back( 5 ) ;
+    return y ;
+}
+
+// [[Rcpp::export]]
+IntegerVector integer_push_front( IntegerVector y ){
+    y.push_front( 5 ) ;
+    return y ;
+}
+
+// [[Rcpp::export]]
+IntegerVector integer_insert( IntegerVector y){
+    y.insert( 0, 5 ) ;
+    y.insert( 2, 7 ) ;
+    return y ;
+}
+
+// [[Rcpp::export]]
+IntegerVector integer_erase( IntegerVector y ){
+    y.erase(2) ;
+    return y ;
+}
+
+// [[Rcpp::export]]
+List integer_erase_range( IntegerVector x, IntegerVector y ){
+    x.erase(x.begin()+5, x.end()-1 );
+    y.erase(y.begin()+5, y.end()-1 );
+    return List::create( x, y ) ;
+}
+
+// [[Rcpp::export]]
+List integer_erase_range_2( IntegerVector x, IntegerVector y ){
+    IntegerVector::iterator it = x.begin()+1 ;
+    while( it != x.end() ){
+        it = x.erase(it) ;
+    }
+    it = y.begin() + 1 ;
+    while( it != y.end() ){
+        it = y.erase(it) ;
+    }
+    return List::create( x, y ) ;
+}
+
+// [[Rcpp::export]]
+List List_erase_range_2( List x, List y ){
+    List::iterator it = x.begin()+1 ;
+    while( it != x.end() ){
+        it = x.erase(it) ;
+    }
+    it = y.begin() + 1 ;
+    while( it != y.end() ){
+        it = y.erase(it) ;
+    }
+    return List::create( x, y ) ;
+}
+
+
+// [[Rcpp::export]]
+IntegerVector integer_erase2( IntegerVector y ){
+    y.erase(1,2) ;
+    return y ;
+}
+
+// [[Rcpp::export]]
+IntegerVector integer_fill( IntegerVector y ){
+    y.fill(10) ;
+    return y ;
+}
+
+// [[Rcpp::export]]
+IntegerVector integer_zero(){
+    return IntegerVector(0);
+}
+
+// [[Rcpp::export]]
+IntegerVector integer_create_zero(){
+    return IntegerVector::create();
+}
+
+// [[Rcpp::export]]
+List integer_create_(){
+    List output(2);
+    output[0] = IntegerVector::create( 10, 20 ) ;
+    output[1] = IntegerVector::create(
+                                      _["foo"] = 20,
+                                      _["bar"] = 30 ) ;
+    return output ;
+}
+
+// [[Rcpp::export]]
+IntegerVector integer_clone_( IntegerVector vec ){
+    IntegerVector dolly = clone( vec ) ;
+    for( size_t i=0; i<10; i++){
+        dolly[i] = 10 - i ;
+    }
+    return dolly ;
+}
+
+// [[Rcpp::export]]
+NumericVector numeric_(){
+    NumericVector x(10) ;
+    for( int i=0; i<10; i++) x[i] = i ;
+    return x ;
+}
+
+// [[Rcpp::export]]
+NumericVector numeric_REALSXP( SEXP vec){
+    NumericVector x(vec) ;
+    for( int i=0; i<x.size(); i++) {
+        x[i] = x[i]*2.0 ;
+    }
+    return x ;
+}
+
+// [[Rcpp::export]]
+IntegerVector numeric_import(){
+    std::vector<int> v(10) ;
+    for( int i=0; i<10; i++) v[i] = i ;
+    return IntegerVector::import( v.begin(), v.end() ) ;
+}
+
+// [[Rcpp::export]]
+NumericVector numeric_importtransform(){
+    std::vector<double> v(10) ;
+    for( int i=0; i<10; i++) v[i] = i ;
+
+    return NumericVector::import_transform( v.begin(), v.end(), square ) ;
+}
+
+// [[Rcpp::export]]
+List list_ctor(){
+    List x(10) ;
+    for( int i=0; i<10; i++) x[i] = Rf_ScalarInteger( i * 2)  ;
+    return x ;
+}
+
+// [[Rcpp::export]]
+List list_template_(){
+    List x(4) ;
+    x[0] = "foo"  ;
+    x[1] = 10 ;
+    x[2] = 10.2 ;
+    x[3] = false;
+    return x ;
+}
+
+// [[Rcpp::export]]
+List list_VECSXP_( SEXP vec){
+    List x(vec) ;
+    return x ;
+}
+
+// [[Rcpp::export]]
+List list_matrix_indexing_1( List m ){
+    List out(4) ;
+    for( size_t i=0 ; i<4; i++){
+        out[i] = m(i,i) ;
+    }
+    return out ;
+}
+
+// [[Rcpp::export]]
+List list_matrix_indexing_2( GenericVector m ){
+    for(size_t i=0 ; i<4; i++){
+        m(i,i) = "foo" ;
+    }
+    return m ;
+}
+
+// [[Rcpp::export]]
+List list_Dimension_constructor_1(){
+    return List( Dimension( 5 ) ) ;
+}
+
+// [[Rcpp::export]]
+List list_Dimension_constructor_2(){
+    return List( Dimension( 5, 5 ) );
+}
+
+// [[Rcpp::export]]
+List list_Dimension_constructor_3(){
+    return List( Dimension( 2, 3, 4) ) ;
+}
+
+// [[Rcpp::export]]
+List list_iterator_( List input, Function fun){
+    List output( input.size() ) ;
+    std::transform( input.begin(), input.end(), output.begin(), fun ) ;
+    output.names() = input.names() ;
+    return output ;
+}
+
+// [[Rcpp::export]]
+int list_name_indexing( List df ){
+    IntegerVector df_x = df["x"] ;
+    int res = std::accumulate( df_x.begin(), df_x.end(), 0 ) ;
+    return res ;
+}
+
+// [[Rcpp::export]]
+List list_push_back(List list){
+    list.push_back( 10 ) ;
+    list.push_back( "bar", "foo" ) ;
+    return list ;
+}
+
+// [[Rcpp::export]]
+List list_push_front( List list ){
+    list.push_front( 10 ) ;
+    list.push_front( "bar", "foo" ) ;
+    return list ;
+}
+
+// [[Rcpp::export]]
+List list_erase( List list ){
+    list.erase( list.begin() ) ;
+    return list ;
+}
+
+// [[Rcpp::export]]
+List list_erase_range( List list ){
+    list.erase( 0, 2 ) ;
+    return list ;
+}
+
+// [[Rcpp::export]]
+List list_implicit_push_back(){
+    List list ;
+    list["foo"] = 10 ;
+    list["bar" ] = "foobar" ;
+    return list ;
+}
+
+// [[Rcpp::export]]
+List list_create_(){
+    List output(2);
+    output[0] = List::create( 10, "foo" ) ;
+    output[1] = List::create(
+                             _["foo"] = 10,
+                             _["bar"] = true ) ;
+    return output ;
+}
+
+// [[Rcpp::export]]
+List list_stdcomplex(){
+    std::vector< std::complex<double> > v_double(10) ;
+    std::vector< std::complex<float> > v_float(10) ;
+    return List::create( _["float"] = v_float, _["double"] = v_double ) ;
+}
+
+// [[Rcpp::export]]
+CharacterVector character_ctor(){
+    CharacterVector x(10) ;
+    for( int i=0; i<10; i++) x[i] = "foo" ;
+    return x ;
+}
+
+// [[Rcpp::export]]
+std::string character_STRSXP_( SEXP vec ){
+    CharacterVector x(vec) ;
+    std::string st = "" ;
+    for( int i=0; i<x.size(); i++) {
+        st += x[i] ;
+    }
+    return st ;
+}
+
+// [[Rcpp::export]]
+CharacterVector character_plusequals(){
+    CharacterVector x(2) ;
+    x[0] = "foo" ;
+    x[1] = "bar" ;
+    x[0] += "bar" ;
+    x[1] += x[0] ;
+    return x ;
+}
+
+// [[Rcpp::export]]
+CharacterVector character_matrix_indexing( CharacterVector m ){
+    std::string trace;
+    for( size_t i=0 ; i<4; i++){
+        trace += m(i,i) ;
+    }
+    return wrap( trace ) ;
+}
+
+// [[Rcpp::export]]
+CharacterVector character_matrix_indexing_lhs( CharacterVector m ){
+    for( size_t i=0 ; i<4; i++){
+        m(i,i) = "foo" ;
+    }
+    return m ;
+}
+
+// [[Rcpp::export]]
+CharacterVector character_matrix_row_iteration_incr( CharacterMatrix m ){
+    std::string pasted_row;
+    CharacterMatrix::Row row(m(1, _));
+    CharacterMatrix::Row::iterator i_row(row.begin());
+    for( size_t i=0 ; i<4; i++){
+        pasted_row += *i_row++;
+    }
+    return wrap( pasted_row ) ;
+}
+
+// [[Rcpp::export]]
+CharacterVector character_matrix_row_iteration_decr( CharacterMatrix m ){
+    std::string pasted_row;
+    CharacterMatrix::Row row(m(1, _));
+    CharacterMatrix::Row::iterator i_row(row.end());
+    i_row--; // Step back from 'one past the end' to 'last element'.
+    // Only copy the last three elements, to avoid creating an invalid
+    // 'one before the beginning' iterator:
+    for( size_t i=0 ; i<3; i++){
+        pasted_row += *i_row--;
+    }
+    return wrap( pasted_row ) ;
+}
+
+
+// [[Rcpp::export]]
+CharacterVector character_assign1(){
+    const char* x[] = { "foo", "bar", "bling", "boom" } ;
+    CharacterVector y ;
+    y.assign( x, x+4 ) ;
+    return y;
+}
+
+// [[Rcpp::export]]
+CharacterVector character_assign2(){
+    std::vector<std::string> vec(4) ;
+    vec[0] = "foo";
+    vec[1] = "bar";
+    vec[2] = "bling";
+    vec[3] = "boom" ;
+    CharacterVector y ;
+    y.assign( vec.begin(), vec.end() ) ;
+    return y;
+}
+
+// [[Rcpp::export]]
+CharacterVector character_range_ctor1(){
+    const char* x[] = { "foo", "bar", "bling", "boom" } ;
+    CharacterVector y( x, x+4 ) ;
+    return y;
+}
+
+// [[Rcpp::export]]
+CharacterVector character_range_ctor2(){
+    std::vector<std::string> vec(4) ;
+    vec[0] = "foo";
+    vec[1] = "bar";
+    vec[2] = "bling";
+    vec[3] = "boom" ;
+    CharacterVector y( vec.begin(), vec.end() ) ;
+    return y;
+}
+
+// [[Rcpp::export]]
+CharacterVector character_dimension_ctor1(){
+    return CharacterVector( Dimension( 5 ) ) ;
+}
+
+// [[Rcpp::export]]
+CharacterVector character_dimension_ctor2(){
+    return CharacterVector( Dimension( 5, 5 ) ) ;
+}
+
+// [[Rcpp::export]]
+CharacterVector character_dimension_ctor3(){
+    return CharacterVector( Dimension( 2, 3, 4) ) ;
+}
+
+// [[Rcpp::export]]
+std::string character_iterator1( CharacterVector letters ){
+    std::string res ;
+    CharacterVector::iterator first = letters.begin() ;
+    CharacterVector::iterator last = letters.end() ;
+    while( first != last ){
+        res += *first ;
+        ++first ;
+    }
+    return res ;
+}
+
+// [[Rcpp::export]]
+std::string character_const_iterator1( const CharacterVector letters ){
+    std::string res ;
+    CharacterVector::const_iterator first = letters.begin() ;
+    CharacterVector::const_iterator last = letters.end() ;
+    while( first != last ){
+        res += *first ;
+        ++first ;
+    }
+    return res ;
+}
+
+
+// [[Rcpp::export]]
+std::string character_iterator2( CharacterVector letters ){
+    std::string res(std::accumulate(letters.begin(), letters.end(), std::string()));
+    return res ;
+}
+
+// [[Rcpp::export]]
+std::string character_const_iterator2( const CharacterVector letters ){
+    std::string res(std::accumulate(letters.begin(), letters.end(), std::string()));
+    return res ;
+}
+
+// [[Rcpp::export]]
+CharacterVector character_reverse( CharacterVector y ){
+    std::reverse( y.begin(), y.end() ) ;
+    return y ;
+}
+
+// [[Rcpp::export]]
+std::string character_names_indexing( CharacterVector y ){
+    std::string foo( y["foo"] ) ;
+    return foo ;
+}
+
+// [[Rcpp::export]]
+List character_listOf( List ll ){
+    CharacterVector cv1 = ll["foo"];
+    CharacterVector cv2 = ll["bar"];
+    std::string rv1 = std::string(cv1[0]) + cv1[1] + cv1[2];
+    std::string rv2 = std::string(cv2[0]) + cv2[1] + cv2[2];
+    return List::create(_["foo"] = rv1, _["bar"] = rv2);
+}
+
+// [[Rcpp::export]]
+int character_find_(CharacterVector y){
+    CharacterVector::iterator it = std::find( y.begin(), y.end(), "foo" ) ;
+    return std::distance( y.begin(), it );
+}
+
+// [[Rcpp::export]]
+List character_create_(){
+    List output(2);
+    output[0] = CharacterVector::create( "foo", "bar" ) ;
+    output[1] = CharacterVector::create(
+                                        _["foo"] = "bar",
+                                        _["bar"] = "foo"
+                                        ) ;
+    return output ;
+}
+
+// [[Rcpp::export]]
+List complex_binary_sugar(ComplexVector xx, ComplexVector yy){
+    return List::create(
+                        _["+"] = xx + yy,
+                        _["-"] = xx - yy,
+                        _["*"] = xx * yy,
+                        _["/"] = xx / yy
+    ) ;
+}
+
+// [[Rcpp::export]]
+List List_extract( List input ){
+    bool a = input[0] ;
+    int b = input[1] ;
+    return List::create(a, b) ;
+}
+
+// [[Rcpp::export]]
+CharacterVector factors( CharacterVector s){
+    return s;
+}
+
+// [[Rcpp::export]]
+IntegerVector IntegerVector_int_init(){
+    IntegerVector x(2,4) ;
+    return x ;
+}
+
+// [[Rcpp::export]]
+bool containsElementNamed( List l, CharacterVector n){
+    return l.containsElementNamed(n[0]);
+}
+
+// [[Rcpp::export]]
+List CharacterVectorEqualityOperator( CharacterVector x, CharacterVector y){
+    int n = x.size() ;
+    LogicalVector eq(n), neq(n);
+    for( int i=0; i<n; i++){
+        eq[i]  = x[i] == y[i] ;
+        neq[i] = x[i] != y[i] ;
+    }
+    return List::create(eq, neq) ;
+}
+
+// [[Rcpp::export]]
+List List_rep_ctor(IntegerVector x){
+    return List(3, x) ;
+}
+
+// [[Rcpp::export]]
+int stdVectorDouble(std::vector<double> x) {
+    return x.size();
+}
+
+// [[Rcpp::export]]
+int stdVectorDoubleConst(const std::vector<double> x) {
+    return x.size();
+}
+
+// [[Rcpp::export]]
+int stdVectorDoubleRef(std::vector<double> & x) {
+    return x.size();
+}
+
+// [[Rcpp::export]]
+int stdVectorDoubleConstRef(const std::vector<double> & x) {
+    return x.size();
+}
+
+// [[Rcpp::export]]
+int stdVectorInt(std::vector<int> x) {
+    return x.size();
+}
+
+// [[Rcpp::export]]
+int stdVectorIntConst(const std::vector<int> x) {
+    return x.size();
+}
+
+// [[Rcpp::export]]
+int stdVectorIntRef(std::vector<int> & x) {
+    return x.size();
+}
+
+// [[Rcpp::export]]
+int stdVectorIntConstRef(const std::vector<int> & x) {
+    return x.size();
+}
+
+// [[Rcpp::export]]
+std::string character_vector_const_proxy(const CharacterVector& str){
+    char* cstr = (char*) str[0] ;
+    std::string res  ;
+    res += cstr ;
+    return cstr ;
+}
+
+// [[Rcpp::export]]
+CharacterVector CharacterVector_test_const_proxy(const CharacterVector x){
+    CharacterVector out( x.size() ) ;
+    for( int i=0; i<x.size(); i++){
+        out[i] = x[i] ;
+    }
+    return out ;
+}
+
+// [[Rcpp::export]]
+NumericVector sort_numeric(NumericVector x) {
+    return x.sort();
+}
+
+// [[Rcpp::export]]
+IntegerVector sort_integer(IntegerVector x) {
+    return x.sort();
+}
+
+// [[Rcpp::export]]
+CharacterVector sort_character(CharacterVector x) {
+    return x.sort();
+}
+
+// [[Rcpp::export]]
+LogicalVector sort_logical(LogicalVector x) {
+    return x.sort();
+}
+
+// [[Rcpp::export]]
+NumericVector sort_numeric_desc(NumericVector x) {
+    return x.sort(true);
+}
+
+// [[Rcpp::export]]
+IntegerVector sort_integer_desc(IntegerVector x) {
+    return x.sort(true);
+}
+
+// [[Rcpp::export]]
+CharacterVector sort_character_desc(CharacterVector x) {
+    return x.sort(true);
+}
+
+// [[Rcpp::export]]
+LogicalVector sort_logical_desc(LogicalVector x) {
+    return x.sort(true);
+}
+
+// [[Rcpp::export]]
+List list_sexp_assign(SEXP x) {
+    List L;
+    L = x;
+    return L;
+}
+
+// [[Rcpp::export]]
+bool logical_vector_from_bool() {
+    return true;
+}
+
+// [[Rcpp::export]]
+LogicalVector logical_vector_from_bool_assign() {
+    LogicalVector result = true;
+    return result;
+}
+
+// [[Rcpp::export]]
+void no_op(int major) {
+    //int minor = 1;
+}
+
+// [[Rcpp::export]]
+int noprotect_vector( Vector<REALSXP, NoProtectStorage> x){
+  return x.size() ;
+}
+
+// [[Rcpp::export]]
+int noprotect_matrix( Matrix<REALSXP, NoProtectStorage> x){
+  return x.nrow() ;
+}
+
+// [[Rcpp::export]]
+int vec_access_with_bounds_checking(const IntegerVector x, int index) {
+    return x.at(index);
+}
+
+// [[Rcpp::export]]
+String vec_print_numeric(NumericVector v) {
+    std::ostringstream buf;
+    buf << v;
+    return buf.str();
+}
+
+// [[Rcpp::export]]
+String vec_print_character(CharacterVector v) {
+    std::ostringstream buf;
+    buf << v;
+    return buf.str();
+}
+
+// [[Rcpp::export]]
+String vec_print_integer(IntegerVector v) {
+    std::ostringstream buf;
+    buf << v;
+    return buf.str();
+}
+
+// [[Rcpp::export]]
+IntegerVector vec_subset(IntegerVector x, IntegerVector y) {
+    return x[y - 1];
+}
+
+// [[Rcpp::export]]
+int CharacterVectorNoProtect(Vector<STRSXP, NoProtectStorage> s){
+    s[0] = "";
+    return s.size();
+}
+
+// [[Rcpp::export]]
+CharacterVector CharacterVectorNoProtect_crosspolicy(Vector<STRSXP, NoProtectStorage> s){
+    CharacterVector s2(1) ;
+    s2[0] = s[0];
+    return s;
+}
+
+// [[Rcpp::export]]
+List ListNoProtect_crosspolicy(Vector<VECSXP, NoProtectStorage> data){
+    List data2(1) ;
+    data2[0] = data[0];
+    return data2;
+}
+
+// [[Rcpp::export]]
+bool CharacterVector_test_equality(CharacterVector x, CharacterVector y) {
+    if (x.length() != y.length()) {
+        return false;
+    }
+
+    return std::equal(x.begin(), x.end(), y.begin());
+}
+
+// [[Rcpp::export]]
+bool CharacterVector_test_equality_crosspolicy(CharacterVector x, Vector<STRSXP,NoProtectStorage> y) {
+    if (x.length() != y.length()) {
+        return false;
+    }
+
+    return std::equal(x.begin(), x.end(), y.begin());
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/as.cpp
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/as.cpp	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/as.cpp	(revision 3762)
@@ -0,0 +1,60 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; tab-width: 8 -*-
+//
+// as.cpp: Rcpp R/C++ interface class library -- as<> unit tests
+//
+// Copyright (C) 2013 Dirk Eddelbuettel and Romain Francois
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+#include <Rcpp.h>
+using namespace Rcpp ;
+
+// [[Rcpp::export]]
+int as_int( SEXP x){ return as<int>( x ); }
+
+// [[Rcpp::export]]
+double as_double( SEXP x){ return as<double>( x ); }
+
+// [[Rcpp::export]]
+Rbyte as_raw( SEXP x){ return as<Rbyte>( x ); }
+
+// [[Rcpp::export]]
+bool as_bool( SEXP x){ return as<bool>( x ); }
+
+// [[Rcpp::export]]
+std::string as_string( SEXP x){ return as<std::string>( x ); }
+
+// [[Rcpp::export]]
+std::vector<int> as_vector_int( SEXP x){ return as< std::vector<int> >(x) ; }
+
+// [[Rcpp::export]]
+std::vector<double> as_vector_double( SEXP x){ return as< std::vector<double> >(x) ; }
+
+// [[Rcpp::export]]
+std::vector<Rbyte> as_vector_raw( SEXP x){ return as< std::vector<Rbyte> >(x) ; }
+
+// [[Rcpp::export]]
+std::vector<bool> as_vector_bool( SEXP x){ return as< std::vector<bool> >(x) ; }
+
+// [[Rcpp::export]]
+std::vector<std::string> as_vector_string( SEXP x){ return as< std::vector<std::string> >(x) ; }
+
+// [[Rcpp::export]]
+std::deque<int> as_deque_int( SEXP x){ return as< std::deque<int> >(x) ; }
+
+// [[Rcpp::export]]
+std::list<int> as_list_int( SEXP x){ return as< std::list<int> >(x) ; }
+
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/Matrix.cpp
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/Matrix.cpp	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/Matrix.cpp	(revision 3762)
@@ -0,0 +1,455 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; tab-width: 8 -*-
+//
+// Matrix.cpp: Rcpp R/C++ interface class library -- Matrix unit tests
+//
+// Copyright (C) 2013 - 2016  Dirk Eddelbuettel, Romain Francois and Kevin Ushey
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+#include <Rcpp.h>
+using namespace Rcpp ;
+
+// [[Rcpp::export]]
+double matrix_numeric( NumericMatrix m){
+    double trace = 0.0 ;
+    for( size_t i=0 ; i<4; i++){
+        	trace += m(i,i) ;
+    }
+    return trace ;
+}
+
+// [[Rcpp::export]]
+std::string matrix_character( CharacterMatrix m){
+    std::string trace ;
+    for( size_t i=0 ; i<4; i++){
+        	trace += m(i,i) ;
+    }
+    return trace;
+}
+
+// [[Rcpp::export]]
+List matrix_generic( GenericMatrix m){
+    List output( m.ncol() ) ;
+    for( size_t i=0 ; i<4; i++){
+        	output[i] = m(i,i) ;
+    }
+    return output ;
+}
+
+// [[Rcpp::export]]
+NumericMatrix matrix_opequals(SEXP x) {
+  NumericMatrix xx;
+  xx = NumericMatrix(x);
+  return xx;
+}
+
+// [[Rcpp::export]]
+IntegerMatrix matrix_integer_diag(){
+    return IntegerMatrix::diag( 5, 1 ) ;
+}
+
+// [[Rcpp::export]]
+CharacterMatrix matrix_character_diag(){
+    return CharacterMatrix::diag( 5, "foo" ) ;
+}
+
+// [[Rcpp::export]]
+NumericMatrix matrix_numeric_ctor1(){
+    return NumericMatrix(3);
+}
+
+// [[Rcpp::export]]
+NumericMatrix matrix_numeric_ctor2(){
+    return NumericMatrix(3,3);
+}
+
+// [[Rcpp::export]]
+int integer_matrix_indexing( IntegerMatrix m){
+    int trace = 0.0 ;
+    for( size_t i=0 ; i<4; i++){
+        trace += m(i,i) ;
+    }
+    return trace ;
+}
+
+// [[Rcpp::export]]
+IntegerVector integer_matrix_indexing_lhs( IntegerVector m ){
+    for( size_t i=0 ; i<4; i++){
+        m(i,i) = 2 * i ;
+    }
+    return m ;
+}
+
+// [[Rcpp::export]]
+double runit_NumericMatrix_row( NumericMatrix m){
+    NumericMatrix::Row first_row = m.row(0) ;
+    return std::accumulate( first_row.begin(), first_row.end(), 0.0 ) ;
+}
+
+// [[Rcpp::export]]
+double runit_NumericMatrix_row_const( const NumericMatrix m){
+    NumericMatrix::ConstRow first_row = m.row(0) ;
+    return std::accumulate( first_row.begin(), first_row.end(), 0.0 ) ;
+}
+
+// [[Rcpp::export]]
+std::string runit_CharacterMatrix_row( CharacterMatrix m ){
+    CharacterMatrix::Row first_row = m.row(0) ;
+    std::string res(
+    	std::accumulate(
+    		first_row.begin(), first_row.end(), std::string() ) ) ;
+    return res ;
+}
+
+// [[Rcpp::export]]
+std::string runit_CharacterMatrix_row_const( const CharacterMatrix m ){
+    CharacterMatrix::ConstRow first_row = m.row(0) ;
+    std::string res(
+    	std::accumulate(
+    		first_row.begin(), first_row.end(), std::string() ) ) ;
+    return res ;
+}
+
+// [[Rcpp::export]]
+IntegerVector runit_GenericMatrix_row( GenericMatrix m ){
+    GenericMatrix::Row first_row = m.row(0) ;
+    IntegerVector out( first_row.size() ) ;
+    std::transform(
+    	first_row.begin(), first_row.end(),
+    	out.begin(),
+    	unary_call<SEXP,int>( Function("length" ) ) ) ;
+    return out ;
+}
+
+// [[Rcpp::export]]
+IntegerVector runit_GenericMatrix_row_const( const GenericMatrix m ){
+    GenericMatrix::ConstRow first_row = m.row(0) ;
+    IntegerVector out( first_row.size() ) ;
+    std::transform(
+    	first_row.begin(), first_row.end(),
+    	out.begin(),
+    	unary_call<SEXP,int>( Function("length" ) ) ) ;
+    return out ;
+}
+
+// [[Rcpp::export]]
+double runit_NumericMatrix_column( NumericMatrix m ){
+    NumericMatrix::Column col = m.column(0) ;
+    return std::accumulate( col.begin(), col.end(), 0.0 ) ;
+}
+
+// [[Rcpp::export]]
+double runit_NumericMatrix_column_const( const NumericMatrix m ){
+    NumericMatrix::ConstColumn col = m.column(0) ;
+    return std::accumulate( col.begin(), col.end(), 0.0 ) ;
+}
+
+// [[Rcpp::export]]
+NumericMatrix runit_NumericMatrix_cumsum( NumericMatrix input ){
+    int nr = input.nrow(), nc = input.ncol() ;
+    NumericMatrix output(nr, nc) ;
+    NumericVector tmp( nr );
+    for( int i=0; i<nc; i++){
+        tmp = tmp + input.column(i) ;
+        NumericMatrix::Column target( output, i ) ;
+        std::copy( tmp.begin(), tmp.end(), target.begin() ) ;
+    }
+    return output ;
+}
+
+// [[Rcpp::export]]
+std::string runit_CharacterMatrix_column( CharacterMatrix m){
+    CharacterMatrix::Column col = m.column(0) ;
+    std::string res(
+        std::accumulate( col.begin(), col.end(), std::string() )
+    ) ;
+    return res ;
+}
+
+// [[Rcpp::export]]
+std::string runit_CharacterMatrix_column_const( const CharacterMatrix m){
+    CharacterMatrix::ConstColumn col = m.column(0) ;
+    std::string res(
+        std::accumulate( col.begin(), col.end(), std::string() )
+    ) ;
+    return res ;
+}
+
+// [[Rcpp::export]]
+IntegerVector runit_GenericMatrix_column( GenericMatrix m ){
+    GenericMatrix::Column col = m.column(0) ;
+    IntegerVector out( col.size() ) ;
+    std::transform(
+    	   col.begin(), col.end(),
+    	   out.begin(),
+    	   unary_call<SEXP,int>( Function("length" ) )
+    ) ;
+    return wrap(out) ;
+}
+
+// [[Rcpp::export]]
+IntegerVector runit_GenericMatrix_column_const( const GenericMatrix m ){
+    GenericMatrix::ConstColumn col = m.column(0) ;
+    IntegerVector out( col.size() ) ;
+    std::transform(
+    	   col.begin(), col.end(),
+    	   out.begin(),
+    	   unary_call<SEXP,int>( Function("length" ) )
+    ) ;
+    return wrap(out) ;
+}
+
+// [[Rcpp::export]]
+List runit_Row_Column_sugar( NumericMatrix x){
+    NumericVector r0 = x.row(0) ;
+    NumericVector c0 = x.column(0) ;
+    return List::create(
+        r0,
+        c0,
+        x.row(1),
+        x.column(1),
+        x.row(1) + x.column(1)
+        ) ;
+}
+
+// [[Rcpp::export]]
+NumericMatrix runit_NumericMatrix_colsum( NumericMatrix input ){
+    int nc = input.ncol() ;
+    NumericMatrix output = clone<NumericMatrix>( input ) ;
+    for( int i=1; i<nc; i++){
+       output(_,i) = output(_,i-1) + input(_,i) ;
+    }
+    return output ;
+}
+
+// [[Rcpp::export]]
+NumericMatrix runit_NumericMatrix_rowsum( NumericMatrix input ){
+    int nr = input.nrow();
+    NumericMatrix output = clone<NumericMatrix>( input ) ;
+    for( int i=1; i<nr; i++){
+       output(i,_) = output(i-1,_) + input(i,_) ;
+    }
+    return output ;
+}
+
+// [[Rcpp::export]]
+NumericMatrix runit_SubMatrix( ){
+    NumericMatrix xx(4, 5);
+    xx(0,0) = 3;
+    xx(0,1) = 4;
+    xx(0,2) = 5;
+    xx(1,_) = xx(0,_);
+    xx(_,3) = xx(_,2);
+    SubMatrix<REALSXP> yy = xx( Range(0,2), Range(0,3) ) ;
+    NumericMatrix res = yy ;
+    return res;
+}
+
+// [[Rcpp::export]]
+void runit_rownames_colnames_proxy(
+    NumericMatrix x, CharacterVector row_names, CharacterVector col_names) {
+    rownames(x) = row_names;
+    colnames(x) = col_names;
+}
+
+// [[Rcpp::export]]
+void runit_rownames_proxy(NumericMatrix x) {
+    rownames(x) = CharacterVector::create("A", "B", "C");
+}
+
+// [[Rcpp::export]]
+NumericMatrix runit_no_init_matrix() {
+    NumericMatrix x = no_init(2, 2);
+    for (int i = 0; i < 4; i++) {
+        x[i] = i;
+    }
+    return x;
+}
+
+// [[Rcpp::export]]
+NumericMatrix runit_no_init_matrix_ctor() {
+    NumericMatrix x(no_init(2, 2));
+    for (int i = 0; i < 4; i++) {
+        x[i] = i;
+    }
+    return x;
+}
+
+// [[Rcpp::export]]
+int runit_no_init_matrix_ctor_nrow() {
+    NumericMatrix x(no_init(2, 2));
+    return x.nrow();
+}
+
+void runit_const_Matrix_column_set( NumericMatrix::Column& col1, const NumericMatrix::Column& col2 ){
+    col1 = col2 ;
+}
+
+// [[Rcpp::export]]
+NumericVector runit_const_Matrix_column( const NumericMatrix& m ){
+   NumericMatrix::Column col1( m, 0 ) ;
+   NumericMatrix::Column col2( m, 1 ) ;
+   runit_const_Matrix_column_set(col1, col2) ;
+   return col1 ;
+}
+
+// [[Rcpp::export]]
+int mat_access_with_bounds_checking(const IntegerMatrix m, int i, int j) {
+    return m.at(i, j);
+}
+
+
+// [[Rcpp::export]]
+IntegerMatrix transposeInteger(const IntegerMatrix & x) {
+    return transpose(x);
+}
+
+// [[Rcpp::export]]
+NumericMatrix transposeNumeric(const NumericMatrix & x) {
+    return transpose(x);
+}
+
+// [[Rcpp::export]]
+CharacterMatrix transposeCharacter(const CharacterMatrix & x) {
+    return transpose(x);
+}
+
+// [[Rcpp::export]]
+NumericMatrix matrix_scalar_plus(const NumericMatrix & x, double y) {
+    return x + y;
+}
+
+// [[Rcpp::export]]
+NumericMatrix matrix_scalar_plus2(const NumericMatrix & x, double y) {
+    return y + x;
+}
+
+// [[Rcpp::export]]
+NumericMatrix matrix_scalar_plus3(const NumericMatrix & x, double y) {
+    NumericMatrix z(x.rows(), x.cols());
+    z = x + y;
+    return x;
+}
+
+// [[Rcpp::export]]
+NumericMatrix matrix_scalar_plus4(const NumericMatrix & x, double y) {
+    NumericMatrix z(x.rows(), x.cols());
+    z = y + x;
+    return x;
+}
+
+// [[Rcpp::export]]
+NumericMatrix matrix_scalar_divide(const NumericMatrix & x, double y) {
+    return x / y;
+}
+
+// [[Rcpp::export]]
+NumericMatrix matrix_scalar_divide2(const NumericMatrix & x, double y) {
+    return y / x;
+}
+
+// [[Rcpp::export]]
+NumericMatrix matrix_scalar_divide3(const NumericMatrix & x, double y) {
+    NumericMatrix z(x.rows(), x.cols());
+    z = x / y;
+    return x;
+}
+
+// [[Rcpp::export]]
+NumericMatrix matrix_scalar_divide4(const NumericMatrix & x, double y) {
+    NumericMatrix z(x.rows(), x.cols());
+    z = y / x;
+    return x;
+}
+
+// 24 October 2016
+// eye, ones, and zeros static member functions
+
+// [[Rcpp::export]]
+Rcpp::NumericMatrix dbl_eye(int n) {
+    return Rcpp::NumericMatrix::eye(n);
+}
+
+// [[Rcpp::export]]
+Rcpp::IntegerMatrix int_eye(int n) {
+    return Rcpp::IntegerMatrix::eye(n);
+}
+
+// [[Rcpp::export]]
+Rcpp::ComplexMatrix cx_eye(int n) {
+    return Rcpp::ComplexMatrix::eye(n);
+}
+
+// [[Rcpp::export]]
+Rcpp::LogicalMatrix lgl_eye(int n) {
+    return Rcpp::LogicalMatrix::eye(n);
+}
+
+
+// [[Rcpp::export]]
+Rcpp::NumericMatrix dbl_ones(int n) {
+    return Rcpp::NumericMatrix::ones(n);
+}
+
+// [[Rcpp::export]]
+Rcpp::IntegerMatrix int_ones(int n) {
+    return Rcpp::IntegerMatrix::ones(n);
+}
+
+// [[Rcpp::export]]
+Rcpp::ComplexMatrix cx_ones(int n) {
+    return Rcpp::ComplexMatrix::ones(n);
+}
+
+// [[Rcpp::export]]
+Rcpp::LogicalMatrix lgl_ones(int n) {
+    return Rcpp::LogicalMatrix::ones(n);
+}
+
+
+// [[Rcpp::export]]
+Rcpp::NumericMatrix dbl_zeros(int n) {
+    return Rcpp::NumericMatrix::zeros(n);
+}
+
+// [[Rcpp::export]]
+Rcpp::IntegerMatrix int_zeros(int n) {
+    return Rcpp::IntegerMatrix::zeros(n);
+}
+
+// [[Rcpp::export]]
+Rcpp::ComplexMatrix cx_zeros(int n) {
+    return Rcpp::ComplexMatrix::zeros(n);
+}
+
+// [[Rcpp::export]]
+Rcpp::LogicalMatrix lgl_zeros(int n) {
+    return Rcpp::LogicalMatrix::zeros(n);
+}
+
+// --- Diagonal Fill
+
+// [[Rcpp::export]]
+Rcpp::NumericMatrix num_diag_fill(Rcpp::NumericMatrix x, double diag_val) {
+    x.fill_diag(diag_val);
+    return x;
+}
+
+// [[Rcpp::export]]
+Rcpp::CharacterMatrix char_diag_fill(Rcpp::CharacterMatrix x, std::string diag_val) {
+    x.fill_diag(diag_val);
+    return x;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/Environment.cpp
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/Environment.cpp	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/Environment.cpp	(revision 3762)
@@ -0,0 +1,176 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; tab-width: 8 -*-
+//
+// Environment.cpp: Rcpp R/C++ interface class library -- Environment unit tests
+//
+// Copyright (C) 2012 Dirk Eddelbuettel and Romain Francois
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+#include <Rcpp.h>
+using namespace Rcpp ;
+
+// [[Rcpp::export]]
+SEXP runit_ls( Environment env ){
+    return env.ls(true) ;
+}
+
+// [[Rcpp::export]]
+SEXP runit_ls2( Rcpp::Environment env){
+    return env.ls(false) ;
+}
+
+// [[Rcpp::export]]
+SEXP runit_get( Environment env, std::string name){
+    return env.get( name ) ;
+}
+
+// [[Rcpp::export]]
+SEXP runit_get_symbol( Environment env, Symbol name){
+    return env.get( name ) ;
+}
+
+// [[Rcpp::export]]
+SEXP runit_find( Environment env, std::string name){
+    return env.find( name ) ;
+}
+
+// [[Rcpp::export]]
+SEXP runit_find_symbol( Environment env, Symbol name){
+    return env.find( name ) ;
+}
+
+// [[Rcpp::export]]
+bool runit_exists( Environment env, std::string st){
+    return env.exists( st ) ;
+}
+
+// [[Rcpp::export]]
+bool runit_assign( Environment env, std::string st, SEXP object ){
+    return env.assign(st, object) ;
+}
+
+// [[Rcpp::export]]
+void runit_islocked( Environment env ){
+    env.assign( "x1", 1 ) ;
+    env.assign( "x2", 10.0 ) ;
+    env.assign( "x3", std::string( "foobar" ) ) ;
+    env.assign( "x4", "foobar" ) ;
+    std::vector< std::string > aa(2) ; aa[0] = "foo" ; aa[1] = "bar" ;
+    env.assign( "x5", aa ) ;
+}
+
+// [[Rcpp::export]]
+bool runit_bindingIsActive( Environment env, std::string st ){
+    return env.bindingIsActive(st) ;
+}
+
+// [[Rcpp::export]]
+bool runit_bindingIsLocked( Environment env, std::string st ){
+    return env.bindingIsLocked(st) ;
+}
+
+// [[Rcpp::export]]
+void runit_notanenv( SEXP x){
+    Environment env(x) ;
+}
+
+// [[Rcpp::export]]
+void runit_lockbinding( Environment env, std::string st){
+    env.lockBinding( st ) ;
+}
+
+// [[Rcpp::export]]
+void runit_unlockbinding( Environment env, std::string st){
+    env.unlockBinding( st ) ;
+}
+
+// [[Rcpp::export]]
+Environment runit_globenv(){
+    return Rcpp::Environment::global_env();
+}
+
+// [[Rcpp::export]]
+Environment runit_emptyenv(){
+    return Rcpp::Environment::empty_env();
+}
+
+// [[Rcpp::export]]
+Environment runit_baseenv(){
+    return Rcpp::Environment::base_env();
+}
+
+// [[Rcpp::export]]
+Environment runit_namespace( std::string st){
+    return Environment::namespace_env(st);
+}
+
+// [[Rcpp::export]]
+Environment runit_env_SEXP(SEXP env){
+    return Environment( env ) ;
+}
+
+// [[Rcpp::export]]
+Environment runit_env_string( std::string st ){
+    return Environment( st ) ;
+}
+
+// [[Rcpp::export]]
+Environment runit_env_int( int pos ){
+    return Environment( pos ) ;
+}
+
+// [[Rcpp::export]]
+Environment runit_parent( Environment env ){
+    return env.parent() ;
+}
+
+// [[Rcpp::export]]
+bool runit_remove(Environment env, std::string name ){
+    bool res = env.remove( name ) ;
+    return wrap( res ) ;
+}
+
+// [[Rcpp::export]]
+List runit_square( Environment e ){
+    List out(3) ;
+    out[0] = e["x"] ;
+    e["y"] = 2 ;
+    out[1] = e["y"] ;
+    e["x"] = "foo";
+    out[2] = e["x"] ;
+    return out ;
+}
+
+// [[Rcpp::export]]
+Environment runit_Rcpp(){
+    return Environment::Rcpp_namespace() ;
+}
+
+// [[Rcpp::export]]
+Environment runit_child(){
+    Environment global_env = Environment::global_env() ;
+    return global_env.new_child(false) ;
+}
+
+// [[Rcpp::export]]
+Environment runit_new_env_default() {
+    return Rcpp::new_env();
+}
+
+// [[Rcpp::export]]
+Environment runit_new_env_parent(SEXP env) {
+    return Rcpp::new_env(env);
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/stack.cpp
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/stack.cpp	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/stack.cpp	(revision 3762)
@@ -0,0 +1,108 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; indent-tabs-mode: nil; -*-
+//
+// misc.cpp: Rcpp R/C++ interface class library -- misc unit tests
+//
+// Copyright (C) 2013 - 2022  Dirk Eddelbuettel and Romain Francois
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+// [[Rcpp::plugins(cpp11)]]
+
+#include <Rcpp.h>
+using namespace Rcpp;
+
+// Class that indicates to R caller whether C++ stack was unwound
+struct unwindIndicator {
+    unwindIndicator(Environment indicator_) {
+        // Reset the indicator to NULL
+        indicator = indicator_;
+        indicator["unwound"] = R_NilValue;
+    }
+
+    // Set indicator to TRUE when stack unwinds
+    ~unwindIndicator() {
+        indicator["unwound"] = LogicalVector::create(1);
+    }
+
+    Environment indicator;
+};
+
+// [[Rcpp::export]]
+SEXP testFastEval(RObject expr, Environment env, Environment indicator) {
+    unwindIndicator my_data(indicator);
+    return Rcpp::Rcpp_fast_eval(expr, env);
+}
+
+// [[Rcpp::export]]
+SEXP testSendInterrupt() {
+    Rf_onintr();
+    return R_NilValue;
+}
+
+SEXP maybeThrow(void* data) {
+    bool* fail = (bool*) data;
+    if (*fail)
+        Rf_error("throw!");
+    else
+        return NumericVector::create(42);
+}
+
+// [[Rcpp::export]]
+SEXP testUnwindProtect(Environment indicator, bool fail) {
+    unwindIndicator my_data(indicator);
+    SEXP out = R_NilValue;
+
+#ifdef RCPP_USING_UNWIND_PROTECT
+    out = Rcpp::unwindProtect(&maybeThrow, &fail);
+#endif
+    return out;
+}
+
+
+// [[Rcpp::export]]
+SEXP testUnwindProtectLambda(Environment indicator, bool fail) {
+    unwindIndicator my_data(indicator);
+    SEXP out = R_NilValue;
+
+#ifdef RCPP_USING_UNWIND_PROTECT
+    out = Rcpp::unwindProtect([&] () { return maybeThrow(&fail); });
+#endif
+
+    return out;
+}
+
+struct FunctionObj {
+    FunctionObj(int data_, bool fail_) : data(data_), fail(fail_) { }
+    SEXP operator() () {
+        NumericVector x = maybeThrow(&fail);
+        x[0] = x[0] * data;
+        return x;
+    }
+    int data;
+    bool fail;
+};
+
+// [[Rcpp::export]]
+SEXP testUnwindProtectFunctionObject(Environment indicator, bool fail) {
+    unwindIndicator my_data(indicator);
+    SEXP out = R_NilValue;
+
+#ifdef RCPP_USING_UNWIND_PROTECT
+    out = Rcpp::unwindProtect(FunctionObj(10, fail));
+#endif
+
+    return out;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/Subset.cpp
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/Subset.cpp	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/Subset.cpp	(revision 3762)
@@ -0,0 +1,111 @@
+#include <Rcpp.h>
+using namespace Rcpp;
+
+// [[Rcpp::export]]
+NumericVector subset_test_int(NumericVector x, IntegerVector y) {
+    return x[y];
+}
+
+// [[Rcpp::export]]
+NumericVector subset_test_num(NumericVector x, NumericVector y) {
+    return x[y];
+}
+
+// [[Rcpp::export]]
+NumericVector subset_test_lgcl(NumericVector x, LogicalVector y) {
+    return x[y];
+}
+
+// [[Rcpp::export]]
+NumericVector subset_test_char(NumericVector x, CharacterVector y) {
+    return x[y];
+}
+
+// [[Rcpp::export]]
+List subset_test_list(List x, CharacterVector y) {
+    return x[y];
+}
+
+// [[Rcpp::export]]
+List subset_test_list_int(List x, IntegerVector y) {
+    return x[y];
+}
+
+// [[Rcpp::export]]
+List subset_test_list_lgcl(List x, LogicalVector y) {
+    return x[y];
+}
+
+// [[Rcpp::export]]
+NumericVector subset_test_greater_0(NumericVector x) {
+    return x[ x > 0 ];
+}
+
+// [[Rcpp::export]]
+List subset_test_literal(List x) {
+    return x["foo"];
+}
+
+// [[Rcpp::export]]
+NumericVector subset_test_assign(NumericVector x) {
+    x[ x > 0 ] = 0;
+    return x;
+}
+
+// [[Rcpp::export]]
+NumericVector subset_test_constref(NumericVector const& x, IntegerVector const& y) {
+    return x[y];
+}
+
+// [[Rcpp::export]]
+NumericVector subset_assign_subset(NumericVector x) {
+    NumericVector y(x.size());
+    y[x > 3] = x[x > 3];
+    return y;
+}
+
+// [[Rcpp::export]]
+NumericVector subset_assign_subset2(NumericVector x) {
+    NumericVector y(x.size());
+    y[x <= 3] = x[x > 3];
+    return y;
+}
+
+// [[Rcpp::export]]
+NumericVector subset_assign_subset3(NumericVector x) {
+    NumericVector y(x.size());
+    y[x <= 3] = x[3];
+    return y;
+}
+
+// [[Rcpp::export]]
+IntegerVector subset_assign_subset4(NumericVector x) {
+    IntegerVector y(x.size());
+    y[x <= 3] = x[x <= 3];
+    return y;
+}
+
+// [[Rcpp::export]]
+NumericVector subset_assign_subset5(NumericVector x) {
+    NumericVector y(x.size());
+    y[x < 3] = x[x >= 4];
+    return y;
+}
+
+// [[Rcpp::export]]
+NumericVector subset_assign_vector_size_1(NumericVector x, int i) {
+    NumericVector y(1);
+    y[0]=i;
+
+    x[x < 4] = y;
+
+    return x;
+}
+
+// [[Rcpp::export]]
+NumericVector subset_sugar_add(NumericVector x, IntegerVector y)
+{
+    NumericVector result = x[y] + x[y];
+    return result;
+}
+
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/wrap.cpp
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/wrap.cpp	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/wrap.cpp	(revision 3762)
@@ -0,0 +1,306 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; tab-width: 8 -*-
+//
+// wrap.cpp: Rcpp R/C++ interface class library -- wrap unit tests
+//
+// Copyright (C) 2013 Dirk Eddelbuettel and Romain Francois
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+// Testing 'wrap', 'as' with custom class -- see
+// https://github.com/RcppCore/Rcpp/issues/165
+template<typename T>
+class Bar {
+    public:
+        Bar(T t) : t(t) {}
+        ~Bar() {}
+        T t;
+};
+
+#include <RcppCommon.h>
+namespace Rcpp {
+    template<typename T> SEXP wrap(const Bar<T> &b);
+}
+
+#include <Rcpp.h>
+
+template<typename T> SEXP Rcpp::wrap(const Bar<T> &b) {
+    return Rcpp::wrap(b.t);
+}
+
+// [[Rcpp::export]]
+Bar<int> test_wrap_custom_class() {
+    Bar<int> b(42);
+    return b;
+}
+
+using namespace Rcpp;
+
+// [[Rcpp::export]]
+IntegerVector map_string_int(){
+    std::map< std::string, int > m ;
+   	m["b"] = 100;
+  	m["a"] = 200;
+  	m["c"] = 300;
+  	return wrap(m);
+}
+
+// [[Rcpp::export]]
+NumericVector map_string_double(){
+    std::map<std::string,double> m ;
+    m["b"] = 100;
+    m["a"] = 200;
+    m["c"] = 300;
+    return wrap(m);
+}
+
+// [[Rcpp::export]]
+LogicalVector map_string_bool(){
+    std::map<std::string,bool> m ;
+    m["b"] = true;
+    m["a"] = false;
+    m["c"] = true;
+    return wrap(m);
+}
+
+// [[Rcpp::export]]
+RawVector map_string_Rbyte(){
+    std::map<std::string,Rbyte> m ;
+	m["b"] = (Rbyte)0;
+  	m["a"] = (Rbyte)1;
+  	m["c"] = (Rbyte)2;
+  	return wrap(m);
+}
+
+// [[Rcpp::export]]
+CharacterVector map_string_string(){
+    std::map<std::string,std::string> m ;
+    m["b"] = "foo" ;
+    m["a"] = "bar" ;
+    m["c"] = "bling" ;
+  	return wrap(m);
+}
+
+// [[Rcpp::export]]
+List map_string_generic(){
+    std::map< std::string,std::vector<int> > m ;
+    std::vector<int> b; b.push_back(1); b.push_back(2); m["b"] = b;
+    std::vector<int> a; a.push_back(1); a.push_back(2); a.push_back(2); m["a"] = a;
+    std::vector<int> c; c.push_back(1); c.push_back(2); c.push_back(2); c.push_back(2); m["c"] = c;
+    return wrap(m);
+}
+
+// [[Rcpp::export]]
+IntegerVector multimap_string_int(){
+    std::multimap< std::string, int > m;
+    m.insert( std::pair<std::string,int>("b", 100));
+    m.insert( std::pair<std::string,int>("a", 200));
+    m.insert( std::pair<std::string,int>("c", 300));
+    return wrap(m);
+}
+
+// [[Rcpp::export]]
+NumericVector multimap_string_double(){
+    std::multimap<std::string,double> m ;
+    m.insert( std::pair<std::string,double>("b", 100) );
+    m.insert( std::pair<std::string,double>("a", 200) );
+    m.insert( std::pair<std::string,double>("c", 300) );
+    return wrap(m);
+}
+
+// [[Rcpp::export]]
+LogicalVector multimap_string_bool(){
+    std::multimap<std::string,bool> m ;
+    m.insert( std::pair<std::string,bool>("b", true ) ) ;
+    m.insert( std::pair<std::string,bool>("a", false) ) ;
+    m.insert( std::pair<std::string,bool>("c", true ) ) ;
+    return wrap(m);
+}
+
+// [[Rcpp::export]]
+RawVector multimap_string_Rbyte(){
+    std::multimap<std::string,Rbyte> m ;
+    m.insert( std::pair<std::string,Rbyte>("b", (Rbyte)0) );
+    m.insert( std::pair<std::string,Rbyte>("a", (Rbyte)1) );
+    m.insert( std::pair<std::string,Rbyte>("c", (Rbyte)2) );
+    return wrap(m);
+}
+
+// [[Rcpp::export]]
+CharacterVector multimap_string_string(){
+    std::multimap<std::string,std::string> m ;
+    m.insert( std::pair<std::string,std::string>( "b", "foo"  ) ) ;
+    m.insert( std::pair<std::string,std::string>( "a", "bar"  ) ) ;
+    m.insert( std::pair<std::string,std::string>( "c", "bling") ) ;
+    return wrap(m);
+}
+
+// [[Rcpp::export]]
+List multimap_string_generic(){
+    typedef std::pair<std::string,std::vector<int> > _pair ;
+    std::multimap< std::string,std::vector<int> > m ;
+    std::vector<int> b ; b.push_back(1) ; b.push_back(2) ;
+    m.insert( _pair("b", b) );
+
+    std::vector<int> a ; a.push_back(1) ; a.push_back(2) ; a.push_back(2) ;
+    m.insert( _pair("a", a) );
+
+    std::vector<int> c ; c.push_back(1) ; c.push_back(2) ; c.push_back(2) ; c.push_back(2) ;
+    m.insert( _pair("c",  c) );
+    return wrap(m);
+}
+
+// [[Rcpp::export]]
+SEXP nonnull_const_char(){
+    const char *p = "foo";
+    return wrap(p) ;
+}
+
+#ifdef RCPP_USING_CXX11
+// [[Rcpp::plugins(cpp11)]]
+#endif
+
+// [[Rcpp::export]]
+IntegerVector unordered_map_string_int(){
+    RCPP_UNORDERED_MAP< std::string, int > m ;
+    m["b"] = 100;
+    m["a"] = 200;
+    m["c"] = 300;
+    return wrap(m);
+}
+
+// [[Rcpp::export]]
+IntegerVector unordered_map_rcpp_string_int(StringVector v){
+    RCPP_UNORDERED_MAP< String, int > m ;
+    m[v[0]] = 200;
+    m[v[1]] = 100;
+    m[v[2]] = 300;
+    return wrap(m);
+}
+
+// [[Rcpp::export]]
+LogicalVector unordered_set_rcpp_string(StringVector x) {
+    RCPP_UNORDERED_SET<String> seen;
+    LogicalVector out(x.size());
+    for (int i = 0; i < x.size(); i++) {
+        out[i] = !seen.insert(x[i]).second;
+    }
+    return out;
+}
+
+// [[Rcpp::export]]
+NumericVector unordered_map_string_double(){
+    RCPP_UNORDERED_MAP<std::string,double> m ;
+    m["b"] = 100;
+    m["a"] = 200;
+    m["c"] = 300;
+    return wrap(m);
+}
+
+// [[Rcpp::export]]
+LogicalVector unordered_map_string_bool(){
+    RCPP_UNORDERED_MAP<std::string,bool> m ;
+    m["b"] = true;
+    m["a"] = false;
+    m["c"] = true;
+    return wrap(m) ;
+}
+
+// [[Rcpp::export]]
+RawVector unordered_map_string_Rbyte(){
+    RCPP_UNORDERED_MAP<std::string,Rbyte> m ;
+    m["b"] = (Rbyte)0;
+    m["a"] = (Rbyte)1;
+    m["c"] = (Rbyte)2;
+    return wrap(m);
+}
+
+// [[Rcpp::export]]
+CharacterVector unordered_map_string_string(){
+    RCPP_UNORDERED_MAP<std::string,std::string> m ;
+	m["b"] = "foo" ;
+  	m["a"] = "bar" ;
+  	m["c"] = "bling" ;
+  	return wrap(m) ;
+}
+
+// [[Rcpp::export]]
+List unordered_map_string_generic(){
+    RCPP_UNORDERED_MAP< std::string,std::vector<int> > m ;
+    std::vector<int> b; b.push_back(1); b.push_back(2); m["b"] = b ;
+    std::vector<int> a; a.push_back(1); a.push_back(2); a.push_back(2); m["a"] = a;
+    std::vector<int> c; c.push_back(1); c.push_back(2); c.push_back(2); c.push_back(2); m["c"] = c;
+    return wrap(m);
+}
+
+// [[Rcpp::export]]
+SEXP map_int_double(){
+    std::map<int, double> map ;
+    map[0] = 2.0 ;
+    map[-1] = 3.0 ;
+    return wrap( map ) ;
+}
+
+// [[Rcpp::export]]
+SEXP map_double_double(){
+    std::map<double, double> map ;
+    map[0.0] = 2.0 ;
+    map[1.2] = 3.0 ;
+    return wrap( map ) ;
+}
+
+// [[Rcpp::export]]
+SEXP map_int_vector_double(){
+    std::map<int, std::vector<double> > map ;
+    map[0].push_back( 1.0 ) ;
+    map[0].push_back( 2.0 ) ;
+
+    map[1].push_back( 2.0 ) ;
+    map[1].push_back( 3.0 ) ;
+
+    return wrap( map ) ;
+}
+
+RCPP_EXPOSED_CLASS(Foo)
+class Foo{
+    public:
+        Foo() : x(0.0){}
+        Foo( double x_ ) : x(x_){}
+        double get() { return x ; }
+   private:
+       double x ;
+} ;
+RCPP_MODULE(mod){
+    class_<Foo>("Foo")
+        .constructor<double>()
+        .method( "get", &Foo::get )
+    ;
+}
+
+// [[Rcpp::export]]
+SEXP map_int_Foo(){
+    std::map<int, Foo> map ;
+    map[0] = Foo( 2 ) ;
+    map[1] = Foo( 3 ) ;
+    return wrap( map ) ;
+}
+
+// [[Rcpp::export]]
+SEXP vector_Foo(){
+    std::vector<Foo> vec(2) ;
+    vec[0] = Foo( 2 ) ;
+    vec[1] = Foo( 3 ) ;
+    return wrap(vec) ;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/Exceptions_nocall.cpp
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/Exceptions_nocall.cpp	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/Exceptions_nocall.cpp	(revision 3762)
@@ -0,0 +1,13 @@
+#define RCPP_DEFAULT_INCLUDE_CALL false
+#include <Rcpp.h>
+using namespace Rcpp;
+
+// [[Rcpp::export]]
+void Rcpp_exception(){
+    throw Rcpp::exception("ouch");
+}
+
+// [[Rcpp::export]]
+void eval_error_no_call(){
+    Rcpp_eval(Rf_lang1(Rf_install("ouch")), R_EmptyEnv);
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/rcppversion.cpp
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/rcppversion.cpp	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/rcppversion.cpp	(revision 3762)
@@ -0,0 +1,22 @@
+#include <Rcpp.h>
+
+// [[Rcpp::export]]
+Rcpp::List checkVersion(Rcpp::IntegerVector v) {
+
+    // incoming, we expect v to have been made by
+    //     as.integer(unlist(strsplit(as.character(packageVersion("Rcpp")), "\\.")))
+    // yielding eg
+    //     c(1L, 0L, 3L, 1L)
+
+    // ensure that length is four, after possibly appending 0
+    if (v.size() == 3) v.push_back(0);
+    if (v.size() == 4) v.push_back(0);
+    if (v.size() > 5) Rcpp::stop("Expect vector with up to five elements.");
+
+    return Rcpp::List::create(Rcpp::Named("def_ver")     = RCPP_VERSION,
+                              Rcpp::Named("def_str")     = RCPP_VERSION_STRING,
+                              Rcpp::Named("cur_ver")     = Rcpp_Version(v[0], v[1], v[2]),
+                              Rcpp::Named("def_dev_ver") = RCPP_DEV_VERSION,
+                              Rcpp::Named("def_dev_str") = RCPP_DEV_VERSION_STRING,
+                              Rcpp::Named("cur_dev_ver") = RcppDevVersion(v[0], v[1], v[2], v[3]));
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/rmath.cpp
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/rmath.cpp	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/rmath.cpp	(revision 3762)
@@ -0,0 +1,698 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; tab-width: 8 -*-
+//
+// rmath.cpp: Rcpp R/C++ interface class library -- rmath unit tests
+//
+// Copyright (C) 2013 Dirk Eddelbuettel and Romain Francois
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+#include <Rcpp.h>
+using namespace Rcpp ;
+
+
+// ------------------- Normal Distribution
+
+// [[Rcpp::export]]
+NumericVector runit_dnorm( double x, double a, double b ){
+	     return NumericVector::create(R::dnorm(x, a, b, 0), R::dnorm(x, a, b, 1));
+}
+
+// [[Rcpp::export]]
+NumericVector runit_pnorm( double x, double a, double b ){
+	     return NumericVector::create(R::pnorm(x, a, b, 1, 0), R::pnorm(log(x), a, b, 1, 1),
+                                          R::pnorm(x, a, b, 0, 0), R::pnorm(log(x), a, b, 0, 1));
+}
+
+// [[Rcpp::export]]
+NumericVector runit_qnorm( double x, double a, double b ){
+	     return NumericVector::create(R::qnorm(x, a, b, 1, 0), R::qnorm(log(x), a, b, 1, 1),
+                                          R::qnorm(x, a, b, 0, 0), R::qnorm(log(x), a, b, 0, 1));
+}
+
+// [[Rcpp::export]]
+NumericVector runit_rnorm( double a, double b ){
+    NumericVector o(5);
+    for (int i = 0; i < o.size(); i++) {
+        o[i] = R::rnorm(a, b);
+    }
+    return o;
+}
+
+// [[Rcpp::export]]
+NumericVector runit_rnorm_sugar(double a, double b) {
+    return Rcpp::rnorm(5, a, b);
+}
+
+
+// ------------------- Uniform Distribution
+
+// [[Rcpp::export]]
+NumericVector runit_dunif( double x, double a, double b ){
+	     return NumericVector::create(R::dunif(x, a, b, 0), R::dunif(x, a, b, 1));
+}
+
+// [[Rcpp::export]]
+NumericVector runit_punif( double x, double a, double b ){
+	     return NumericVector::create(R::punif(x, a, b, 1, 0), R::punif(log(x), a, b, 1, 1),
+                                          R::punif(x, a, b, 0, 0), R::punif(log(x), a, b, 0, 1));
+}
+
+// [[Rcpp::export]]
+NumericVector runit_qunif( double x, double a, double b ){
+	     return NumericVector::create(R::qunif(x, a, b, 1, 0), R::qunif(log(x), a, b, 1, 1),
+                                          R::qunif(x, a, b, 0, 0), R::qunif(log(x), a, b, 0, 1));
+}
+
+// [[Rcpp::export]]
+NumericVector runit_runif( double a, double b ){
+    NumericVector o(5);
+    for (int i = 0; i < o.size(); i++) {
+        o[i] = R::runif(a, b);
+    }
+    return o;
+}
+
+// [[Rcpp::export]]
+NumericVector runit_runif_sugar( double a, double b ){
+    return Rcpp::runif(5, a, b);
+}
+
+
+// ------------------- Gamma Distribution
+
+// [[Rcpp::export]]
+NumericVector runit_dgamma( double x, double a, double b ){
+	     return NumericVector::create(R::dgamma(x, a, b, 0), R::dgamma(x, a, b, 1));
+}
+
+// [[Rcpp::export]]
+NumericVector runit_pgamma( double x, double a, double b ){
+	     return NumericVector::create(R::pgamma(x, a, b, 1, 0), R::pgamma(log(x), a, b, 1, 1),
+                                          R::pgamma(x, a, b, 0, 0), R::pgamma(log(x), a, b, 0, 1));
+}
+
+// [[Rcpp::export]]
+NumericVector runit_qgamma( double x, double a, double b ){
+	     return NumericVector::create(R::qgamma(x, a, b, 1, 0), R::qgamma(log(x), a, b, 1, 1),
+                                          R::qgamma(x, a, b, 0, 0), R::qgamma(log(x), a, b, 0, 1));
+}
+
+// [[Rcpp::export]]
+NumericVector runit_rgamma(double a, double b) {
+    NumericVector o(5);
+    for (int i = 0; i < o.size(); i++) {
+        o[i] = R::rgamma(a, b);
+    }
+    return o;
+}
+
+// [[Rcpp::export]]
+NumericVector runit_rgamma_sugar(double a, double b) {
+    return Rcpp::rgamma(5, a, b);
+}
+
+
+// ------------------- Beta Distribution
+
+// [[Rcpp::export]]
+NumericVector runit_dbeta( double x, double a, double b ){
+	     return NumericVector::create(R::dbeta(x, a, b, 0), R::dbeta(x, a, b, 1));
+}
+
+// [[Rcpp::export]]
+NumericVector runit_pbeta( double x, double a, double b ){
+	     return NumericVector::create(R::pbeta(x, a, b, 1, 0), R::pbeta(log(x), a, b, 1, 1),
+                                          R::pbeta(x, a, b, 0, 0), R::pbeta(log(x), a, b, 0, 1));
+}
+
+// [[Rcpp::export]]
+NumericVector runit_qbeta( double x, double a, double b ){
+	     return NumericVector::create(R::qbeta(x, a, b, 1, 0), R::qbeta(log(x), a, b, 1, 1),
+                                          R::qbeta(x, a, b, 0, 0), R::qbeta(log(x), a, b, 0, 1));
+}
+
+// [[Rcpp::export]]
+NumericVector runit_rbeta(double a, double b) {
+    NumericVector o(5);
+    for (int i = 0; i < o.size(); i++) {
+        o[i] = R::rbeta(a, b);
+    }
+    return o;
+}
+
+// [[Rcpp::export]]
+NumericVector runit_rbeta_sugar(double a, double b) {
+    return Rcpp::rbeta(5, a, b);
+}
+
+
+// ------------------- Log Normal Distribution
+
+// [[Rcpp::export]]
+NumericVector runit_dlnorm( double x, double a, double b ){
+	     return NumericVector::create(R::dlnorm(x, a, b, 0), R::dlnorm(x, a, b, 1));
+}
+
+// [[Rcpp::export]]
+NumericVector runit_plnorm( double x, double a, double b ){
+	     return NumericVector::create(R::plnorm(x, a, b, 1, 0), R::plnorm(log(x), a, b, 1, 1),
+                                          R::plnorm(x, a, b, 0, 0), R::plnorm(log(x), a, b, 0, 1));
+}
+
+// [[Rcpp::export]]
+NumericVector runit_qlnorm( double x, double a, double b ){
+	     return NumericVector::create(R::qlnorm(x, a, b, 1, 0), R::qlnorm(log(x), a, b, 1, 1),
+                                          R::qlnorm(x, a, b, 0, 0), R::qlnorm(log(x), a, b, 0, 1));
+}
+
+// [[Rcpp::export]]
+NumericVector runit_rlnorm(double a, double b) {
+    NumericVector o(5);
+    for (int i = 0; i < o.size(); i++) {
+        o[i] = R::rlnorm(a, b);
+    }
+    return o;
+}
+
+// [[Rcpp::export]]
+NumericVector runit_rlnorm_sugar(double a, double b) {
+    return Rcpp::rlnorm(5, a, b);
+}
+
+// ------------------- Chi-Squared Distribution
+
+// [[Rcpp::export]]
+NumericVector runit_dchisq( double x, double a ){
+	     return NumericVector::create(R::dchisq(x, a, 0), R::dchisq(x, a, 1));
+}
+
+// [[Rcpp::export]]
+NumericVector runit_pchisq( double x, double a ){
+	     return NumericVector::create(R::pchisq(x, a, 1, 0), R::pchisq(log(x), a, 1, 1),
+                                          R::pchisq(x, a, 0, 0), R::pchisq(log(x), a, 0, 1));
+}
+
+// [[Rcpp::export]]
+NumericVector runit_qchisq( double x, double a ){
+	     return NumericVector::create(R::qchisq(x, a, 1, 0), R::qchisq(log(x), a, 1, 1),
+                                          R::qchisq(x, a, 0, 0), R::qchisq(log(x), a, 0, 1));
+}
+
+// [[Rcpp::export]]
+NumericVector runit_rchisq(double a) {
+    NumericVector o(5);
+    for (int i = 0; i < o.size(); i++) {
+        o[i] = R::rchisq(a);
+    }
+    return o;
+}
+
+// [[Rcpp::export]]
+NumericVector runit_rchisq_sugar(double a) {
+    return Rcpp::rchisq(5, a);
+}
+
+// ------------------- Non-central Chi-Squared Distribution
+
+// [[Rcpp::export]]
+NumericVector runit_dnchisq( double x, double a, double b ){
+	     return NumericVector::create(R::dnchisq(x, a, b, 0), R::dnchisq(x, a, b, 1));
+}
+
+// [[Rcpp::export]]
+NumericVector runit_pnchisq( double x, double a, double b ){
+	     return NumericVector::create(R::pnchisq(x, a, b, 1, 0), R::pnchisq(log(x), a, b, 1, 1),
+                                          R::pnchisq(x, a, b, 0, 0), R::pnchisq(log(x), a, b, 0, 1));
+}
+
+// [[Rcpp::export]]
+NumericVector runit_qnchisq( double x, double a, double b ){
+	     return NumericVector::create(R::qnchisq(x, a, b, 1, 0), R::qnchisq(log(x), a, b, 1, 1),
+                                          R::qnchisq(x, a, b, 0, 0), R::qnchisq(log(x), a, b, 0, 1));
+}
+
+// -------------------  F Distribution
+
+// [[Rcpp::export]]
+NumericVector runit_df( double x, double a, double b ){
+	     return NumericVector::create(R::df(x, a, b, 0), R::df(x, a, b, 1));
+}
+
+// [[Rcpp::export]]
+NumericVector runit_pf( double x, double a, double b ){
+	     return NumericVector::create(R::pf(x, a, b, 1, 0), R::pf(log(x), a, b, 1, 1),
+                                          R::pf(x, a, b, 0, 0), R::pf(log(x), a, b, 0, 1));
+}
+
+// [[Rcpp::export]]
+NumericVector runit_qf( double x, double a, double b ){
+	     return NumericVector::create(R::qf(x, a, b, 1, 0), R::qf(log(x), a, b, 1, 1),
+                                          R::qf(x, a, b, 0, 0), R::qf(log(x), a, b, 0, 1));
+}
+
+// [[Rcpp::export]]
+NumericVector runit_rf(double a, double b) {
+    NumericVector o(5);
+    for (int i = 0; i < o.size(); i++) {
+        o[i] = R::rf(a, b);
+    }
+    return o;
+}
+
+// [[Rcpp::export]]
+NumericVector runit_rf_sugar(double a, double b) {
+    return Rcpp::rf(5, a, b);
+}
+
+// -------------------  Student t Distribution
+
+// [[Rcpp::export]]
+NumericVector runit_dt( double x, double a ){
+	     return NumericVector::create(R::dt(x, a, 0), R::dt(x, a, 1));
+}
+
+// [[Rcpp::export]]
+NumericVector runit_pt( double x, double a ){
+	     return NumericVector::create(R::pt(x, a, 1, 0), R::pt(log(x), a, 1, 1),
+                                          R::pt(x, a, 0, 0), R::pt(log(x), a, 0, 1));
+}
+
+// [[Rcpp::export]]
+NumericVector runit_qt( double x, double a ){
+	     return NumericVector::create(R::qt(x, a, 1, 0), R::qt(log(x), a, 1, 1),
+                                          R::qt(x, a, 0, 0), R::qt(log(x), a, 0, 1));
+}
+
+// [[Rcpp::export]]
+NumericVector runit_rt(double a) {
+    NumericVector o(5);
+    for(int i = 0; i < o.size(); i++) {
+        o[i] = R::rt(a);
+    }
+    return o;
+}
+
+// [[Rcpp::export]]
+NumericVector runit_rt_sugar(double a) {
+    return Rcpp::rt(5, a);
+}
+
+// -------------------  Binomial Distribution
+
+// [[Rcpp::export]]
+NumericVector runit_dbinom( double x, double a, double b ){
+	     return NumericVector::create(R::dbinom(x, a, b, 0), R::dbinom(x, a, b, 1));
+}
+
+// [[Rcpp::export]]
+NumericVector runit_pbinom( double x, double a, double b ){
+	     return NumericVector::create(R::pbinom(x, a, b, 1, 0), R::pbinom(log(x), a, b, 1, 1),
+                                          R::pbinom(x, a, b, 0, 0), R::pbinom(log(x), a, b, 0, 1));
+}
+
+// [[Rcpp::export]]
+NumericVector runit_qbinom( double x, double a, double b ){
+	     return NumericVector::create(R::qbinom(x, a, b, 1, 0), R::qbinom(log(x), a, b, 1, 1),
+                                          R::qbinom(x, a, b, 0, 0), R::qbinom(log(x), a, b, 0, 1));
+}
+
+// [[Rcpp::export]]
+NumericVector runit_rbinom(double a, double b) {
+    NumericVector o(5);
+    for(int i = 0; i < o.size(); i++) {
+        o[i] = R::rbinom(a, b);
+    }
+    return o;
+}
+
+// [[Rcpp::export]]
+NumericVector runit_rbinom_sugar(double a, double b) {
+    return Rcpp::rbinom(5, a, b);
+}
+
+// -------------------  Cauchy Distribution
+
+// [[Rcpp::export]]
+NumericVector runit_dcauchy( double x, double a, double b ){
+	     return NumericVector::create(R::dcauchy(x, a, b, 0), R::dcauchy(x, a, b, 1));
+}
+
+// [[Rcpp::export]]
+NumericVector runit_pcauchy( double x, double a, double b ){
+	     return NumericVector::create(R::pcauchy(x, a, b, 1, 0), R::pcauchy(log(x), a, b, 1, 1),
+                                          R::pcauchy(x, a, b, 0, 0), R::pcauchy(log(x), a, b, 0, 1));
+}
+
+// [[Rcpp::export]]
+NumericVector runit_qcauchy( double x, double a, double b ){
+	     return NumericVector::create(R::qcauchy(x, a, b, 1, 0), R::qcauchy(log(x), a, b, 1, 1),
+                                          R::qcauchy(x, a, b, 0, 0), R::qcauchy(log(x), a, b, 0, 1));
+}
+
+// [[Rcpp::export]]
+NumericVector runit_rcauchy(double a, double b) {
+    NumericVector o(5);
+    for(int i = 0; i < o.size(); i++) {
+        o[i] = R::rcauchy(a, b);
+    }
+    return o;
+}
+
+// [[Rcpp::export]]
+NumericVector runit_rcauchy_sugar(double a, double b) {
+    return Rcpp::rcauchy(5, a, b);
+}
+
+// -------------------  Exponential Distribution
+
+// [[Rcpp::export]]
+NumericVector runit_dexp( double x, double a ){
+	     return NumericVector::create(R::dexp(x, a, 0), R::dexp(x, a, 1));
+}
+
+// [[Rcpp::export]]
+NumericVector runit_pexp( double x, double a ){
+	     return NumericVector::create(R::pexp(x, a, 1, 0), R::pexp(log(x), a, 1, 1),
+                                          R::pexp(x, a, 0, 0), R::pexp(log(x), a, 0, 1));
+}
+
+// [[Rcpp::export]]
+NumericVector runit_qexp( double x, double a ){
+	     return NumericVector::create(R::qexp(x, a, 1, 0), R::qexp(log(x), a, 1, 1),
+                                          R::qexp(x, a, 0, 0), R::qexp(log(x), a, 0, 1));
+}
+
+// [[Rcpp::export]]
+NumericVector runit_rexp(double a) {
+    NumericVector o(5);
+    for(int i = 0; i < o.size(); i++) {
+        o[i] = R::rexp(a);
+    }
+    return o;
+}
+
+// [[Rcpp::export]]
+NumericVector runit_rexp_sugar(double a) {
+    return Rcpp::rexp(5, a);
+}
+
+// -------------------  Geometric Distribution
+
+// [[Rcpp::export]]
+NumericVector runit_dgeom( double x, double a ){
+	     return NumericVector::create(R::dgeom(x, a, 0), R::dgeom(x, a, 1));
+}
+
+// [[Rcpp::export]]
+NumericVector runit_pgeom( double x, double a ){
+	     return NumericVector::create(R::pgeom(x, a, 1, 0), R::pgeom(log(x), a, 1, 1),
+                                          R::pgeom(x, a, 0, 0), R::pgeom(log(x), a, 0, 1));
+}
+
+// [[Rcpp::export]]
+NumericVector runit_qgeom( double x, double a ){
+	     return NumericVector::create(R::qgeom(x, a, 1, 0), R::qgeom(log(x), a, 1, 1),
+                                          R::qgeom(x, a, 0, 0), R::qgeom(log(x), a, 0, 1));
+}
+
+// [[Rcpp::export]]
+NumericVector runit_rgeom(double a) {
+    NumericVector o(5);
+    for (int i = 0; i < o.size(); i++) {
+        o[i] = R::rgeom(a);
+    }
+    return o;
+}
+
+// [[Rcpp::export]]
+NumericVector runit_rgeom_sugar(double a) {
+    return Rcpp::rgeom(5, a);
+}
+
+// -------------------  Hypergeometric Distribution
+
+// [[Rcpp::export]]
+NumericVector runit_dhyper( double x, double a, double b, double c ){
+	     return NumericVector::create(R::dhyper(x, a, b, c, 0), R::dhyper(x, a, b, c, 1));
+}
+
+// [[Rcpp::export]]
+NumericVector runit_phyper( double x, double a, double b, double c ){
+	     return NumericVector::create(R::phyper(x, a, b, c, 1, 0), R::phyper(log(x), a, b, c, 1, 1),
+                                          R::phyper(x, a, b, c, 0, 0), R::phyper(log(x), a, b, c, 0, 1));
+}
+
+// [[Rcpp::export]]
+NumericVector runit_qhyper( double x, double a, double b, double c ){
+	     return NumericVector::create(R::qhyper(x, a, b, c, 1, 0), R::qhyper(log(x), a, b, c, 1, 1),
+                                          R::qhyper(x, a, b, c, 0, 0), R::qhyper(log(x), a, b, c, 0, 1));
+}
+
+// [[Rcpp::export]]
+NumericVector runit_rhyper(double a, double b, double c) {
+    NumericVector o(5);
+    for(int i = 0; i < o.size(); i++) {
+        o[i] = R::rhyper(a, b, c);
+    }
+    return o;
+}
+
+// [[Rcpp::export]]
+NumericVector runit_rhyper_sugar(double a, double b, double c) {
+    return Rcpp::rhyper(5, a, b, c);
+}
+
+// -------------------  Negative Binomial Distribution
+
+// [[Rcpp::export]]
+NumericVector runit_dnbinom( double x, double a, double b ){
+	     return NumericVector::create(R::dnbinom(x, a, b, 0), R::dnbinom(x, a, b, 1));
+}
+
+// [[Rcpp::export]]
+NumericVector runit_pnbinom( double x, double a, double b ){
+	     return NumericVector::create(R::pnbinom(x, a, b, 1, 0), R::pnbinom(log(x), a, b, 1, 1),
+                                          R::pnbinom(x, a, b, 0, 0), R::pnbinom(log(x), a, b, 0, 1));
+}
+
+// [[Rcpp::export]]
+NumericVector runit_qnbinom( double x, double a, double b ){
+	     return NumericVector::create(R::qnbinom(x, a, b, 1, 0), R::qnbinom(log(x), a, b, 1, 1),
+                                          R::qnbinom(x, a, b, 0, 0), R::qnbinom(log(x), a, b, 0, 1));
+}
+
+// [[Rcpp::export]]
+NumericVector runit_rnbinom(double a, double b) {
+    NumericVector o(5);
+    for(int i = 0; i < o.size(); i++) {
+        o[i] = R::rnbinom(a, b);
+    }
+    return o;
+}
+
+// [[Rcpp::export]]
+NumericVector runit_rnbinom_sugar(double a, double b) {
+    return Rcpp::rnbinom(5, a, b);
+}
+
+// -------------------  Poisson Distribution
+
+// [[Rcpp::export]]
+NumericVector runit_dpois( double x, double a ){
+	     return NumericVector::create(R::dpois(x, a, 0), R::dpois(x, a, 1));
+}
+
+// [[Rcpp::export]]
+NumericVector runit_ppois( double x, double a ){
+	     return NumericVector::create(R::ppois(x, a, 1, 0), R::ppois(log(x), a, 1, 1),
+                                          R::ppois(x, a, 0, 0), R::ppois(log(x), a, 0, 1));
+}
+
+// [[Rcpp::export]]
+NumericVector runit_qpois( double x, double a ){
+	     return NumericVector::create(R::qpois(x, a, 1, 0), R::qpois(log(x), a, 1, 1),
+                                          R::qpois(x, a, 0, 0), R::qpois(log(x), a, 0, 1));
+}
+
+// [[Rcpp::export]]
+NumericVector runit_rpois(double a) {
+    NumericVector o(5);
+    for(int i = 0; i < o.size(); i++) {
+        o[i] = R::rpois(a);
+    }
+    return o;
+}
+
+// [[Rcpp::export]]
+NumericVector runit_rpois_sugar(double a) {
+    return Rcpp::rpois(5, a);
+}
+
+// -------------------  Weibull Distribution
+
+// [[Rcpp::export]]
+NumericVector runit_dweibull( double x, double a, double b ){
+	     return NumericVector::create(R::dweibull(x, a, b, 0), R::dweibull(x, a, b, 1));
+}
+
+// [[Rcpp::export]]
+NumericVector runit_pweibull( double x, double a, double b ){
+	     return NumericVector::create(R::pweibull(x, a, b, 1, 0), R::pweibull(log(x), a, b, 1, 1),
+                                          R::pweibull(x, a, b, 0, 0), R::pweibull(log(x), a, b, 0, 1));
+}
+
+// [[Rcpp::export]]
+NumericVector runit_qweibull( double x, double a, double b ){
+	     return NumericVector::create(R::qweibull(x, a, b, 1, 0), R::qweibull(log(x), a, b, 1, 1),
+                                          R::qweibull(x, a, b, 0, 0), R::qweibull(log(x), a, b, 0, 1));
+}
+
+// [[Rcpp::export]]
+NumericVector runit_rweibull(double a, double b) {
+    NumericVector o(5);
+    for(int i = 0; i < o.size(); i++) {
+        o[i] = R::rweibull(a, b);
+    }
+    return o;
+}
+
+// [[Rcpp::export]]
+NumericVector runit_rweibull_sugar(double a, double b) {
+    return Rcpp::rweibull(5, a, b);
+}
+
+// -------------------  Logistic Distribution
+
+// [[Rcpp::export]]
+NumericVector runit_dlogis( double x, double a, double b ){
+	     return NumericVector::create(R::dlogis(x, a, b, 0), R::dlogis(x, a, b, 1));
+}
+
+// [[Rcpp::export]]
+NumericVector runit_plogis( double x, double a, double b ){
+	     return NumericVector::create(R::plogis(x, a, b, 1, 0), R::plogis(log(x), a, b, 1, 1),
+                                          R::plogis(x, a, b, 0, 0), R::plogis(log(x), a, b, 0, 1));
+}
+
+// [[Rcpp::export]]
+NumericVector runit_qlogis( double x, double a, double b ){
+	     return NumericVector::create(R::qlogis(x, a, b, 1, 0), R::qlogis(log(x), a, b, 1, 1),
+                                          R::qlogis(x, a, b, 0, 0), R::qlogis(log(x), a, b, 0, 1));
+}
+
+// [[Rcpp::export]]
+NumericVector runit_rlogis(double a, double b) {
+    NumericVector o(5);
+    for(int i = 0; i < o.size(); i++) {
+        o[i] = R::rlogis(a, b);
+    }
+    return o;
+}
+
+// [[Rcpp::export]]
+NumericVector runit_rlogis_sugar(double a, double b) {
+    return Rcpp::rlogis(5, a, b);
+}
+
+// -------------------  Non-central Beta Distribution
+
+// [[Rcpp::export]]
+NumericVector runit_dnbeta( double x, double a, double b, double c ){
+	     return NumericVector::create(R::dnbeta(x, a, b, c, 0), R::dnbeta(x, a, b, c, 1));
+}
+
+// [[Rcpp::export]]
+NumericVector runit_pnbeta( double x, double a, double b, double c ){
+	     return NumericVector::create(R::pnbeta(x, a, b, c, 1, 0), R::pnbeta(log(x), a, b, c, 1, 1),
+                                          R::pnbeta(x, a, b, c, 0, 0), R::pnbeta(log(x), a, b, c, 0, 1));
+}
+
+// [[Rcpp::export]]
+NumericVector runit_qnbeta( double x, double a, double b, double c ){
+	     return NumericVector::create(R::qnbeta(x, a, b, c, 1, 0), R::qnbeta(log(x), a, b, c, 1, 1),
+                                          R::qnbeta(x, a, b, c, 0, 0), R::qnbeta(log(x), a, b, c, 0, 1));
+}
+
+// -------------------  Non-central F Distribution
+
+// [[Rcpp::export]]
+NumericVector runit_dnf( double x, double a, double b, double c ){
+	     return NumericVector::create(R::dnf(x, a, b, c, 0), R::dnf(x, a, b, c, 1));
+}
+
+// [[Rcpp::export]]
+NumericVector runit_pnf( double x, double a, double b, double c ){
+	     return NumericVector::create(R::pnf(x, a, b, c, 1, 0), R::pnf(log(x), a, b, c, 1, 1),
+                                          R::pnf(x, a, b, c, 0, 0), R::pnf(log(x), a, b, c, 0, 1));
+}
+
+// [[Rcpp::export]]
+NumericVector runit_qnf( double x, double a, double b, double c ){
+	     return NumericVector::create(R::qnf(x, a, b, c, 1, 0), R::qnf(log(x), a, b, c, 1, 1),
+                                          R::qnf(x, a, b, c, 0, 0), R::qnf(log(x), a, b, c, 0, 1));
+}
+
+// -------------------  Non-central Student t Distribution
+
+// [[Rcpp::export]]
+NumericVector runit_dnt( double x, double a, double b ){
+	     return NumericVector::create(R::dnt(x, a, b, 0), R::dnt(x, a, b, 1));
+}
+
+// [[Rcpp::export]]
+NumericVector runit_pnt( double x, double a, double b ){
+	     return NumericVector::create(R::pnt(x, a, b, 1, 0), R::pnt(log(x), a, b, 1, 1),
+                                          R::pnt(x, a, b, 0, 0), R::pnt(log(x), a, b, 0, 1));
+}
+
+// [[Rcpp::export]]
+NumericVector runit_qnt( double x, double a, double b ){
+	     return NumericVector::create(R::qnt(x, a, b, 1, 0), R::qnt(log(x), a, b, 1, 1),
+                                          R::qnt(x, a, b, 0, 0), R::qnt(log(x), a, b, 0, 1));
+}
+
+// -------------------  Wilcoxon Rank Sum Statistic Distribution
+
+// [[Rcpp::export]]
+NumericVector runit_dwilcox( double x, double a, double b ){
+	     return NumericVector::create(R::dwilcox(x, a, b, 0), R::dwilcox(x, a, b, 1));
+}
+
+// [[Rcpp::export]]
+NumericVector runit_pwilcox( double x, double a, double b ){
+	     return NumericVector::create(R::pwilcox(x, a, b, 1, 0), R::pwilcox(log(x), a, b, 1, 1),
+                                          R::pwilcox(x, a, b, 0, 0), R::pwilcox(log(x), a, b, 0, 1));
+}
+
+// [[Rcpp::export]]
+NumericVector runit_qwilcox( double x, double a, double b ){
+	     return NumericVector::create(R::qwilcox(x, a, b, 1, 0), R::qwilcox(log(x), a, b, 1, 1),
+                                          R::qwilcox(x, a, b, 0, 0), R::qwilcox(log(x), a, b, 0, 1));
+}
+
+// [[Rcpp::export]]
+NumericVector runit_rwilcox(double a, double b) {
+    NumericVector o(5);
+    for (int i = 0; i < o.size(); i++) {
+        o[i] = R::rwilcox(a, b);
+    }
+    return o;
+}
+
+// [[Rcpp::export]]
+NumericVector runit_rwilcox_sugar(double a, double b) {
+    return Rcpp::rwilcox(5, a, b);
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/embeddedR.cpp
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/embeddedR.cpp	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/embeddedR.cpp	(revision 3762)
@@ -0,0 +1,33 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; tab-width: 8 -*-
+//
+// Environment.cpp: Rcpp R/C++ interface class library -- Environment unit tests
+//
+// Copyright (C) 2018 Dirk Eddelbuettel and Romain Francois
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+#include <Rcpp.h>
+using namespace Rcpp ;
+
+// [[Rcpp::export]]
+int foo(){
+    return 42 ;
+}
+
+/*** R
+x <- foo()
+x
+*/
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/modref.cpp
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/modref.cpp	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/modref.cpp	(revision 3762)
@@ -0,0 +1,55 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; tab-width: 8 -*-
+//
+// modref.cpp: Rcpp R/C++ interface class library -- module unit tests
+//
+// Copyright (C) 2013 - 2015  Dirk Eddelbuettel and Romain Francois
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+#include <Rcpp.h>
+using namespace Rcpp ;
+
+class ModRefWorld {
+public:
+    ModRefWorld() : foo(1), msg("hello") {}
+    void set(std::string msg_) { this->msg = msg_; }
+    std::string greet() { return msg; }
+
+    int foo ;
+    double bar ;
+
+private:
+    std::string msg;
+};
+
+void clearWorld( ModRefWorld* w ){
+    w->set( "" );
+}
+
+RCPP_MODULE(modrefmodule){
+    class_<ModRefWorld>( "ModRefWorld" )
+        .default_constructor()
+
+        .method( "greet", &ModRefWorld::greet )
+        .method( "set", &ModRefWorld::set )
+        .method( "clear", &clearWorld )
+
+        .field( "foo", &ModRefWorld::foo )
+        .field_readonly( "bar", &ModRefWorld::bar )
+        ;
+
+}
+
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/support.cpp
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/support.cpp	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/support.cpp	(revision 3762)
@@ -0,0 +1,94 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; tab-width: 8 -*-
+//
+// support.cpp: Rcpp R/C++ interface class library -- unit tests
+//
+// Copyright (C) 2013 Dirk Eddelbuettel and Romain Francois
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+#include <Rcpp.h>
+using namespace Rcpp ;
+
+// [[Rcpp::export]]
+List plus_REALSXP(){
+    return List::create(
+        NA_REAL + NA_REAL,
+        NA_REAL + 1.0,
+        1.0 + NA_REAL
+    );
+}
+
+// [[Rcpp::export]]
+List times_REALSXP(){
+    return List::create(
+        NA_REAL * NA_REAL,
+        NA_REAL * 1.0,
+        1.0 * NA_REAL
+    );
+}
+
+// [[Rcpp::export]]
+List divides_REALSXP(){
+    return List::create(
+       NA_REAL / NA_REAL,
+       NA_REAL / 1.0,
+       1.0 / NA_REAL
+       );
+}
+
+// [[Rcpp::export]]
+List minus_REALSXP(){
+    return List::create(
+       NA_REAL - NA_REAL,
+       NA_REAL - 1.0,
+       1.0 - NA_REAL
+       );
+}
+
+// [[Rcpp::export]]
+List functions_REALSXP(){
+    return List::create(
+        NumericVector::create(
+           exp( NA_REAL ),
+           acos( NA_REAL ),
+           asin( NA_REAL ),
+           atan( NA_REAL ),
+           ceil( NA_REAL ),
+           cos( NA_REAL ),
+           cosh( NA_REAL ),
+           floor( NA_REAL ),
+           log( NA_REAL ),
+           log10( NA_REAL ),
+           sqrt( NA_REAL),
+           sin( NA_REAL ),
+           sinh( NA_REAL ),
+           tan( NA_REAL ),
+           tanh( NA_REAL ),
+           fabs( NA_REAL ),
+           Rf_gammafn( NA_REAL),
+           Rf_lgammafn( NA_REAL ),
+           Rf_digamma( NA_REAL ),
+           Rf_trigamma( NA_REAL )
+        ) , NumericVector::create(
+           Rf_tetragamma( NA_REAL) ,
+           Rf_pentagamma( NA_REAL) ,
+           expm1( NA_REAL ),
+           log1p( NA_REAL ),
+           Rcpp::internal::factorial( NA_REAL ),
+           Rcpp::internal::lfactorial( NA_REAL )
+        )
+     );
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/language.cpp
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/language.cpp	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/language.cpp	(revision 3762)
@@ -0,0 +1,274 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; tab-width: 8 -*-
+//
+// language.cpp: Rcpp R/C++ interface class library -- Language unit tests
+//
+// Copyright (C) 2012 Dirk Eddelbuettel and Romain Francois
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+#include <Rcpp.h>
+using namespace Rcpp ;
+
+// [[Rcpp::export]]
+Language runit_language(SEXP x){ return Language(x) ; }
+
+// [[Rcpp::export]]
+Language runit_lang_variadic_1(){
+    return Language( "rnorm", 10, 0.0, 2.0 ) ;
+}
+
+// [[Rcpp::export]]
+Language runit_lang_variadic_2(){
+    return Language( "rnorm", 10, Named("mean",0.0), 2.0 ) ;
+}
+
+// [[Rcpp::export]]
+Language runit_lang_push_back(){
+	Language call("rnorm") ;
+	call.push_back( 10 ) ;
+	call.push_back( Named("mean", 0.0) ) ;
+	call.push_back( 2.0 ) ;
+	return call ;
+}
+
+// [[Rcpp::export]]
+double runit_lang_square_rv(){
+	Language p("rnorm") ;
+	p.push_back( 1 ) ;
+	p.push_back( 10.0 ) ;
+	p.push_back( 20.0 ) ;
+	return p[2] ;
+}
+
+// [[Rcpp::export]]
+Language runit_lang_square_lv(){
+    Language p("rnorm") ;
+    p.push_back( 1 ) ;
+    p.push_back( 10.0 ) ;
+    p.push_back( 20.0 ) ;
+    p[1] = "foobar" ;
+    p[2] = p[3] ;
+    return p ;
+}
+
+// [[Rcpp::export]]
+SEXP runit_lang_fun( Function fun, IntegerVector x ){
+    Language call( fun );
+    call.push_back(x) ;
+    return Rcpp_fast_eval( call, R_GlobalEnv ) ;
+}
+
+// [[Rcpp::export]]
+Language runit_lang_inputop(){
+	Language call( "rnorm" );
+	call << 10 << Named( "sd", 10 ) ;
+	return call ;
+}
+
+// [[Rcpp::export]]
+List runit_lang_unarycall(IntegerVector x){
+    Language call( "seq", Named("from", 10 ), Named("to", 0 ) ) ;
+    List output( x.size() ) ;
+    std::transform(
+    	x.begin(), x.end(),
+    	output.begin(),
+    	unary_call<int>(call)
+    	) ;
+    return output ;
+}
+
+// [[Rcpp::export]]
+List runit_lang_unarycallindex(IntegerVector x){
+    Language call( "seq", 10, 0 ) ;
+    List output( x.size() ) ;
+    std::transform(
+        x.begin(), x.end(),
+        output.begin(),
+        unary_call<int>(call,2)
+    	) ;
+    return output ;
+}
+
+// [[Rcpp::export]]
+List runit_lang_binarycall(IntegerVector x1, IntegerVector x2 ){
+    Language call( "seq", Named("from", 10 ), Named("to", 0 ) ) ;
+    List output( x1.size() ) ;
+    std::transform(
+        x1.begin(), x1.end(), x2.begin(),
+        output.begin(),
+        binary_call<int,int>(call)
+    	) ;
+    return output ;
+}
+
+
+// [[Rcpp::export]]
+SEXP runit_lang_fixedcall(){
+    Language call( Function("rnorm"), 10 ) ;
+    std::vector< std::vector<double> > result(10) ;
+    std::generate(
+    	result.begin(), result.end(),
+    	fixed_call< std::vector<double> >(call)
+    	) ;
+    return wrap( result );
+}
+
+// [[Rcpp::export]]
+SEXP runit_lang_inenv( Environment env){
+    Language call( "sum", Symbol("y") ) ;
+    return call.eval( env ) ;
+}
+
+// [[Rcpp::export]]
+Pairlist runit_pairlist(SEXP x){
+    return Pairlist(x) ;
+}
+
+// [[Rcpp::export]]
+Pairlist runit_pl_variadic_1(){
+    return Pairlist( "rnorm", 10, 0.0, 2.0 ) ;
+}
+
+// [[Rcpp::export]]
+Pairlist runit_pl_variadic_2(){
+    return Pairlist( "rnorm", 10, Named("mean",0.0), 2.0 ) ;
+}
+
+// [[Rcpp::export]]
+Pairlist runit_pl_push_front(){
+    Pairlist p ;
+    p.push_front( 1 ) ;
+    p.push_front( 10.0 ) ;
+    p.push_front( "foo" ) ;
+    p.push_front( Named( "foobar", 10) ) ;
+    return p ;
+}
+
+
+// [[Rcpp::export]]
+Pairlist runit_pl_push_back(){
+    Pairlist p ;
+    p.push_back( 1 ) ;
+    p.push_back( 10.0 ) ;
+    p.push_back( "foo" ) ;
+    p.push_back( Named( "foobar", 10) ) ;
+    return p ;
+}
+
+// [[Rcpp::export]]
+Pairlist runit_pl_insert(){
+    Pairlist p ;
+    p.push_back( 1 ) ;
+    p.push_back( 10.0 ) ;
+    p.push_back( 20.0 ) ;
+
+    /* insert in 2nd position */
+    p.insert( 1, Named( "bla", "bla" ) ) ;
+
+    /* insert in front */
+    p.insert( 0, 30.0 ) ;
+
+    /* insert in back */
+    p.insert( 5, "foobar" ) ;
+
+    return p ;
+}
+
+// [[Rcpp::export]]
+Pairlist runit_pl_replace(){
+    Pairlist p ;
+    p.push_back( 1 ) ;
+    p.push_back( 10.0 ) ;
+    p.push_back( 20.0 ) ;
+    p.replace( 0, Named( "first", 1 ) ) ;
+    p.replace( 1, 20.0 ) ;
+    p.replace( 2, false ) ;
+    return p ;
+}
+
+// [[Rcpp::export]]
+int runit_pl_size(){
+    Pairlist p ;
+	p.push_back( 1 ) ;
+	p.push_back( 10.0 ) ;
+	p.push_back( 20.0 ) ;
+	return p.size() ;
+}
+
+// [[Rcpp::export]]
+Pairlist runit_pl_remove_1(){
+    Pairlist p ;
+    p.push_back( 1 ) ;
+    p.push_back( 10.0 ) ;
+    p.push_back( 20.0 ) ;
+    p.remove( 0 ) ;
+    return p ;
+}
+
+
+// [[Rcpp::export]]
+Pairlist runit_pl_remove_2(){
+    Pairlist p ;
+    p.push_back( 1 ) ;
+    p.push_back( 10.0 ) ;
+    p.push_back( 20.0 ) ;
+    p.remove( 2 ) ;
+    return p ;
+}
+
+// [[Rcpp::export]]
+Pairlist runit_pl_remove_3(){
+    Pairlist p ;
+    p.push_back( 1 ) ;
+    p.push_back( 10.0 ) ;
+    p.push_back( 20.0 ) ;
+    p.remove( 1 ) ;
+    return p ;
+}
+
+// [[Rcpp::export]]
+double runit_pl_square_1(){
+    Pairlist p ;
+    p.push_back( 1 ) ;
+    p.push_back( 10.0 ) ;
+    p.push_back( 20.0 ) ;
+    return p[1] ;
+}
+
+// [[Rcpp::export]]
+Pairlist runit_pl_square_2(){
+    Pairlist p ;
+    p.push_back( 1 ) ;
+    p.push_back( 10.0 ) ;
+    p.push_back( 20.0 ) ;
+    p[1] = "foobar" ;
+    p[2] = p[0] ;
+    return p ;
+}
+
+
+// [[Rcpp::export]]
+Formula runit_formula_(){
+    Formula f( "x ~ y + z" ) ;
+    return f;
+}
+
+// [[Rcpp::export]]
+Formula runit_formula_SEXP(SEXP form){
+    Formula f(form) ;
+    return f;
+}
+
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/DataFrame.cpp
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/DataFrame.cpp	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/DataFrame.cpp	(revision 3762)
@@ -0,0 +1,208 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; tab-width: 8 -*-
+//
+// DataFrame.cpp: Rcpp R/C++ interface class library -- DataFrame unit tests
+//
+// Copyright (C) 2012 Dirk Eddelbuettel and Romain Francois
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+#include <Rcpp.h>
+using namespace Rcpp ;
+
+// [[Rcpp::export]]
+DataFrame FromSEXP( SEXP x){
+    DataFrame df(x) ;
+    return df;
+}
+
+// [[Rcpp::export]]
+SEXP index_byName( DataFrame df, std::string s ){
+    return df[s];
+}
+
+// [[Rcpp::export]]
+SEXP index_byPosition( DataFrame df, int i ){
+    return df[i];
+}
+// [[Rcpp::export]]
+std::string string_element( DataFrame df ){
+    CharacterVector b = df[1];
+	std::string s;
+	s = b[1];
+	return s;
+}
+
+// [[Rcpp::export]]
+DataFrame createOne(){
+    IntegerVector v = IntegerVector::create(1,2,3);
+	return DataFrame::create(Named("a")=v);
+}
+
+// [[Rcpp::export]]
+DataFrame createTwo(){
+    IntegerVector v = IntegerVector::create(1,2,3);
+	std::vector<std::string> s(3);
+	s[0] = "a";
+	s[1] = "b";
+	s[2] = "c";
+	return DataFrame::create(Named("a")=v, Named("b")=s);
+}
+
+// [[Rcpp::export]]
+DataFrame SlotProxy( S4 o, std::string yy ){
+    return DataFrame( o.slot( yy ) ) ;
+}
+
+// [[Rcpp::export]]
+DataFrame AttributeProxy( List o, std::string y ){
+    return DataFrame( o.attr( y )) ;
+}
+
+// [[Rcpp::export]]
+DataFrame createTwoStringsAsFactors(){
+    IntegerVector v = IntegerVector::create(1,2,3);
+	std::vector<std::string> s(3);
+	s[0] = "a";
+	s[1] = "b";
+	s[2] = "c";
+	return DataFrame::create(
+		_["a"] = v,
+		_["b"] = s,
+		_["stringsAsFactors"] = false );
+}
+
+// [[Rcpp::export]]
+IntegerVector DataFrame_nrow( DataFrame df){
+    return IntegerVector::create(df.nrow(), df.rows()) ;
+}
+
+
+// [[Rcpp::export]]
+IntegerVector DataFrame_ncol( DataFrame df){
+    return IntegerVector::create(df.ncol(), df.cols());
+}
+
+// [[Rcpp::export]]
+DataFrame DataFrame_PushBackNamed(){
+    NumericVector u(2);
+    NumericVector v(2);
+    DataFrame df = DataFrame::create(_["u"] = u);
+    df.push_back(v, "v");
+    return df;
+}
+
+// [[Rcpp::export]]
+DataFrame DataFrame_PushBackUnnamed(){
+    NumericVector u(2);
+    NumericVector v(2);
+    DataFrame df = DataFrame::create(_["u"] = u);
+    df.push_back(v);
+    return df;
+}
+
+// [[Rcpp::export]]
+DataFrame DataFrame_PushFrontNamed(){
+    NumericVector u(2);
+    NumericVector v(2);
+    DataFrame df = DataFrame::create(_["u"] = u);
+    df.push_front(v, "v");
+    return df;
+}
+
+// [[Rcpp::export]]
+DataFrame DataFrame_PushFrontUnnamed(){
+    NumericVector u(2);
+    NumericVector v(2);
+    DataFrame df = DataFrame::create(_["u"] = u);
+    df.push_front(v);
+    return df;
+}
+
+// [[Rcpp::export]]
+DataFrame DataFrame_PushFrontDataFrame(){
+  NumericVector u(2);
+  NumericVector v(2);
+  NumericVector w(2);
+  NumericVector x(2);
+
+  DataFrame df1 = DataFrame::create(_["u"] = u, _["v"] = v);
+  DataFrame df2 = DataFrame::create(_["w"] = w, _["x"] = x);
+  df1.push_front(df2);
+  return df1;
+}
+
+// [[Rcpp::export]]
+DataFrame DataFrame_PushBackDataFrame(){
+  NumericVector u(2);
+  NumericVector v(2);
+  NumericVector w(2);
+  NumericVector x(2);
+
+  DataFrame df1 = DataFrame::create(_["u"] = u, _["v"] = v);
+  DataFrame df2 = DataFrame::create(_["w"] = w, _["x"] = x);
+  df1.push_back(df2);
+  return df1;
+}
+
+// [[Rcpp::export]]
+DataFrame DataFrame_PushWrongSize(){
+  NumericVector u(2);
+  NumericVector v(3);
+
+  DataFrame df1 = DataFrame::create(_["u"] = u);
+  df1.push_back(v);
+  return df1;
+}
+
+// [[Rcpp::export]]
+DataFrame DataFrame_PushReplicateLength(){
+  NumericVector u(2);
+  NumericVector v(4);
+  NumericVector x(1);
+
+  u[0] = 1;
+  x[0] = 2;
+
+  DataFrame df1 = DataFrame::create(_["u"] = u);
+  df1.push_back(v, "v");
+  df1.push_back(x, "x");
+  return df1;
+}
+
+// [[Rcpp::export]]
+DataFrame DataFrame_PushZeroLength(){
+  NumericVector u(2);
+  NumericVector v(0);
+
+
+  DataFrame df1 = DataFrame::create(_["u"] = u);
+  df1.push_back(v);
+  return df1;
+}
+
+// issue #1232
+// [[Rcpp::export]]
+Rcpp::DataFrame DataFrame_PushOnEmpty() {
+    int n = 0;
+    Rcpp::IntegerVector foo(n);
+    Rcpp::CharacterVector bar(n);
+    Rcpp::CharacterVector baz(n);
+
+    Rcpp::List ll = Rcpp::List::create(Rcpp::Named("foo") = foo,
+                                       Rcpp::Named("bar") = bar);
+    ll.push_back(baz, "baz");
+    return Rcpp::DataFrame(ll);
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/Module.cpp
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/Module.cpp	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/Module.cpp	(revision 3762)
@@ -0,0 +1,218 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; indent-tabs-mode: nil; -*-
+// jedit: :folding=explicit:
+//
+// Module.cpp: Rcpp R/C++ interface class library -- module unit tests
+//
+// Copyright (C) 2013 - 2015  Dirk Eddelbuettel and Romain Francois
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+#include <Rcpp.h>
+
+using namespace Rcpp;
+
+std::string hello() {
+    return "hello";
+}
+
+int bar(int x) {
+    return x*2;
+}
+
+double foo(int x, double y) {
+    return x * y;
+}
+
+void bla() {
+    Rprintf("hello\\n");
+}
+
+void bla1(int x) {
+    Rprintf("hello (x = %d)\\n", x);
+}
+
+void bla2(int x, double y) {
+    Rprintf("hello (x = %d, y = %5.2f)\\n", x, y);
+}
+
+int test_reference(std::vector<double>& ref) {
+    return ref.size();
+}
+int test_const_reference(const std::vector<double>& ref) {
+    return ref.size();
+}
+int test_const(const std::vector<double> ref) {
+    return ref.size();
+}
+
+class ModuleWorld {
+public:
+    ModuleWorld() : msg("hello") {}
+    void set(std::string msg_) { this->msg = msg_; }
+    void set_ref(std::string& msg_) { this->msg = msg_; }
+    void set_const_ref(const std::string& msg_) { this->msg = msg_; }
+    std::string greet() { return msg; }
+
+private:
+    std::string msg;
+};
+
+void clearWorld(ModuleWorld* w) {
+    w->set("");
+}
+
+class ModuleNum{
+public:
+    ModuleNum() : x(0.0), y(0) {};
+
+    double getX() const { return x; }
+    void setX(double value) { x = value; }
+
+    int getY() { return y; }
+
+private:
+    double x;
+    int y;
+};
+
+class ModuleNumber{
+public:
+    ModuleNumber() : x(0.0), y(0) {};
+
+    double x;
+    int y;
+};
+
+class ModuleRandomizer {
+public:
+
+    // Randomizer() : min(0), max(1) {}
+    ModuleRandomizer(double min_, double max_) : min(min_), max(max_) {}
+
+    NumericVector get(int n) {
+        RNGScope scope;
+        return runif(n, min, max);
+    }
+
+private:
+    double min, max;
+};
+
+RCPP_EXPOSED_CLASS(ModuleTest)
+class ModuleTest {
+public:
+    double value;
+    ModuleTest(double v) : value(v) {}
+private:
+    // hiding those on purpose
+    // we work by reference or pointers here. Not by copy.
+    ModuleTest(const ModuleTest& other);
+    ModuleTest& operator=(const ModuleTest&);
+};
+
+double Test_get_x_const_ref(const ModuleTest& x) {
+    return x.value;
+}
+double Test_get_x_ref(ModuleTest& x) {
+    return x.value;
+}
+double Test_get_x_const_pointer(const ModuleTest* x) {
+    return x->value;
+}
+double Test_get_x_pointer(ModuleTest* x) {
+    return x->value;
+}
+
+RCPP_MODULE(demoModule) {
+    function("hello", &hello);
+    function("bar"  , &bar  );
+    function("foo"  , &foo  );
+    function("bla"  , &bla  );
+    function("bla1" , &bla1 );
+    function("bla2" , &bla2 );
+
+    function("test_reference", test_reference);
+    function("test_const_reference", test_const_reference);
+    function("test_const", test_const);
+
+    class_<ModuleTest>("ModuleTest")
+        .constructor<double>()
+        ;
+
+    class_<ModuleWorld>("ModuleWorld")
+        .constructor()
+        .method("greet", &ModuleWorld::greet)
+        .method("set", &ModuleWorld::set)
+        .method("set_ref", &ModuleWorld::set_ref)
+        .method("set_const_ref", &ModuleWorld::set_const_ref)
+        .method("clear", &clearWorld)
+        ;
+
+    class_<ModuleNum>("ModuleNum")
+        .constructor()
+
+        // read and write property
+        .property("x", &ModuleNum::getX, &ModuleNum::setX)
+
+        // read-only property
+        .property("y", &ModuleNum::getY)
+        ;
+
+    class_<ModuleNumber>("ModuleNumber")
+
+        .constructor()
+
+        // read and write data member
+        .field("x", &ModuleNumber::x)
+
+        // read only data member
+        .field_readonly("y", &ModuleNumber::y)
+        ;
+
+    function("Test_get_x_const_ref", Test_get_x_const_ref);
+    function("Test_get_x_ref", Test_get_x_ref);
+    function("Test_get_x_const_pointer", Test_get_x_const_pointer);
+    function("Test_get_x_pointer", Test_get_x_pointer);
+
+
+    class_<ModuleRandomizer>("ModuleRandomizer")
+        // No default: .default_constructor()
+        .constructor<double,double>()
+
+        .method("get" , &ModuleRandomizer::get)
+        ;
+}
+
+// [[Rcpp::export]]
+double attr_Test_get_x_const_ref(const ModuleTest& x) {
+    return x.value;
+}
+
+// [[Rcpp::export]]
+double attr_Test_get_x_ref(ModuleTest& x) {
+    return x.value;
+}
+
+// [[Rcpp::export]]
+double attr_Test_get_x_const_pointer(const ModuleTest* x) {
+    return x->value;
+}
+
+// [[Rcpp::export]]
+double attr_Test_get_x_pointer(ModuleTest* x) {
+    return x->value;
+}
+
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/attributes.cpp
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/attributes.cpp	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/attributes.cpp	(revision 3762)
@@ -0,0 +1,37 @@
+#include <Rcpp.h>
+using namespace Rcpp;
+
+// include a dummy header file to test support for local includes
+#include "attributes.hpp"
+
+//' @param foo // don't do anything to this
+//'     // or this
+//' @param bar " // or this guy "
+// [[Rcpp::export]] // this comment marks the following function for export
+std::string comments_test( /// // "\""" some '"// more / // ///garbge"
+    std::string msg = "Start a C++ line comment with the characters \"//\"" // "" \" ""
+) { // """
+    return msg;
+}
+
+std::string parse_declaration_test(std::string msg) {
+    return msg;
+}
+
+// [[Rcpp::export]]
+std::string parse_declaration_test(std::string msg = "Parse function declaration");
+
+// [[Rcpp::export]]
+std::string parse_default_values_with_str_parenthesis(const char* a = "(", const char* b= ")", std::string msg = "Parse function header with parenthis inside default string values.") {
+	return msg;
+}
+
+// [[Rcpp::export]]
+std::string parse_default_values_with_chr_parenthesis(char a = '(', char b= ')', std::string msg = "Parse function header with parenthis inside default char values.") {
+	return msg;
+}
+
+// [[Rcpp::export]]
+std::string parse_default_values_with_chr_backslash(char a = '\\', std::string msg = "Parse function header with backslash inside default char values.") {
+	return msg;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/algorithm.cpp
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/algorithm.cpp	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/algorithm.cpp	(revision 3762)
@@ -0,0 +1,97 @@
+#include <Rcpp.h>
+
+// [[Rcpp::export]]
+double sumTest(Rcpp::NumericVector v, int begin, int end) {
+	return Rcpp::algorithm::sum(v.begin() + (begin - 1), v.begin() + end);
+}
+
+// [[Rcpp::export]]
+double sumTest_nona(Rcpp::NumericVector v, int begin, int end) {
+	return Rcpp::algorithm::sum_nona(v.begin() + (begin - 1), v.begin() + end);
+}
+
+// [[Rcpp::export]]
+double prodTest(Rcpp::NumericVector v, int begin, int end) {
+	return Rcpp::algorithm::prod(v.begin() + (begin - 1), v.begin() + end);
+}
+
+// [[Rcpp::export]]
+double prodTest_nona(Rcpp::NumericVector v, int begin, int end) {
+	return Rcpp::algorithm::prod_nona(v.begin() + (begin - 1), v.begin() + end);
+}
+
+// [[Rcpp::export]]
+Rcpp::NumericVector logTest(Rcpp::NumericVector v) {
+	Rcpp::NumericVector x = Rcpp::clone(v);
+	Rcpp::algorithm::log(v.begin(), v.end(), x.begin());
+	return x;
+}
+
+// [[Rcpp::export]]
+Rcpp::NumericVector expTest(Rcpp::NumericVector v) {
+	Rcpp::NumericVector x = Rcpp::clone(v);
+	Rcpp::algorithm::exp(v.begin(), v.end(), x.begin());
+	return x;
+}
+
+// [[Rcpp::export]]
+Rcpp::NumericVector sqrtTest(Rcpp::NumericVector v) {
+	Rcpp::NumericVector x = Rcpp::clone(v);
+	Rcpp::algorithm::sqrt(v.begin(), v.end(), x.begin());
+	return x;
+}
+
+// [[Rcpp::export]]
+double minTest(Rcpp::NumericVector v) {
+	return Rcpp::algorithm::min(v.begin(), v.end());
+}
+
+// [[Rcpp::export]]
+double maxTest(Rcpp::NumericVector v) {
+	return Rcpp::algorithm::max(v.begin(), v.end());
+}
+
+// [[Rcpp::export]]
+double minTest_nona(Rcpp::NumericVector v) {
+	return Rcpp::algorithm::min_nona(v.begin(), v.end());
+}
+
+// [[Rcpp::export]]
+double maxTest_nona(Rcpp::NumericVector v) {
+	return Rcpp::algorithm::max_nona(v.begin(), v.end());
+}
+
+// [[Rcpp::export]]
+int minTest_int(Rcpp::IntegerVector v) {
+	return Rcpp::algorithm::min(v.begin(), v.end());
+}
+
+// [[Rcpp::export]]
+int maxTest_int(Rcpp::IntegerVector v) {
+	return Rcpp::algorithm::max(v.begin(), v.end());
+}
+
+// [[Rcpp::export]]
+int minTest_int_nona(Rcpp::IntegerVector v) {
+	return Rcpp::algorithm::min_nona(v.begin(), v.end());
+}
+
+// [[Rcpp::export]]
+int maxTest_int_nona(Rcpp::IntegerVector v) {
+	return Rcpp::algorithm::max_nona(v.begin(), v.end());
+}
+
+// [[Rcpp::export]]
+double meanTest(Rcpp::NumericVector v) {
+	return Rcpp::algorithm::mean(v.begin(), v.end());
+}
+
+// [[Rcpp::export]]
+double meanTest_int(Rcpp::IntegerVector v) {
+	return Rcpp::algorithm::mean(v.begin(), v.end());
+}
+
+// [[Rcpp::export]]
+double meanTest_logical(Rcpp::LogicalVector v) {
+	return Rcpp::algorithm::mean(v.begin(), v.end());
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/attributes.hpp
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/attributes.hpp	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/cpp/attributes.hpp	(revision 3762)
@@ -0,0 +1,9 @@
+
+#ifndef __RCPP_UNITTESTS_ATTRIBUTES__
+#define __RCPP_UNITTESTS_ATTRIBUTES__
+
+/*
+ *  dummy header used to test that local includes for sourceCpp are working
+ */
+
+#endif // __RCPP_UNITTESTS_ATTRIBUTES__
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppInterfaceUser/tests/tests.R
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppInterfaceUser/tests/tests.R	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppInterfaceUser/tests/tests.R	(revision 3762)
@@ -0,0 +1,51 @@
+
+reset <- function() {
+    testRcppInterfaceUser::reset_flags()
+    testRcppInterfaceExporter::reset_flags()
+}
+
+
+# This tests errors converted to exceptions by Rcpp_eval()
+x <- tryCatch(
+  error = identity,
+  testRcppInterfaceUser::use_cpp_interface(quote(stop("jump!")))
+)
+
+stopifnot(
+    grepl("jump!", x$message),
+    testRcppInterfaceUser::peek_flag("cpp_interface_downstream"),
+    testRcppInterfaceExporter::peek_flag("cpp_interface_upstream")
+)
+
+
+reset()
+
+# This tests errors converted to resumable longjumps by Rcpp_fast_eval()
+x <- tryCatch(
+  error = identity,
+  testRcppInterfaceUser::use_cpp_interface(quote(stop("jump!")), fast = TRUE)
+)
+
+stopifnot(
+    grepl("jump!", x$message),
+    testRcppInterfaceUser::peek_flag("cpp_interface_downstream"),
+    testRcppInterfaceExporter::peek_flag("cpp_interface_upstream")
+)
+
+
+reset()
+
+# This tests longjumps not caught by Rcpp_eval()
+x <- withRestarts(
+  here = identity,
+  testRcppInterfaceUser::use_cpp_interface(quote(invokeRestart("here", "value")))
+)
+
+stopifnot(identical(x, "value"))
+
+if (getRversion() >= "3.5.0") {
+    stopifnot(
+        testRcppInterfaceUser::peek_flag("cpp_interface_downstream"),
+        testRcppInterfaceExporter::peek_flag("cpp_interface_upstream")
+    )
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppInterfaceUser/src/user.cpp
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppInterfaceUser/src/user.cpp	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppInterfaceUser/src/user.cpp	(revision 3762)
@@ -0,0 +1,16 @@
+#include "config.h"
+
+#include <Rcpp.h>
+#include <testRcppInterfaceExporter.h>
+
+#include "unwound.h"
+
+
+//' @export
+// [[Rcpp::export]]
+SEXP use_cpp_interface(SEXP x, bool fast = false) {
+  unwound_t stack_obj("cpp_interface_downstream");
+  Rcpp::RObject out = testRcppInterfaceExporter::test_cpp_interface(x, fast);
+  Rcpp::Rcout << "Wrapping up" << std::endl;
+  return out;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppInterfaceUser/src/unwound.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppInterfaceUser/src/unwound.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppInterfaceUser/src/unwound.h	(revision 3762)
@@ -0,0 +1,27 @@
+#ifndef UNWOUND_H
+#define UNWOUND_H
+
+
+#include <Rcpp.h>
+
+#define PKG_NAME "testRcppInterfaceUser"
+
+struct unwound_t {
+  unwound_t(std::string flag_) {
+    flag = flag_;
+    Rcpp::Rcout << "Initialising " << flag << std::endl;
+    Rcpp::Environment ns = Rcpp::Environment::namespace_env(PKG_NAME);
+    flags_env = ns["flags"];
+    flags_env[flag] = false;
+  }
+  ~unwound_t() {
+    Rcpp::Rcout << "Unwinding " << flag << std::endl;
+    flags_env[flag] = true;
+  }
+
+  std::string flag;
+  Rcpp::Environment flags_env;
+};
+
+
+#endif
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppInterfaceUser/src/config.h
===================================================================
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/src/r-cran-testrcpppackage_0.1.0-1_i386.changes
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/src/r-cran-testrcpppackage_0.1.0-1_i386.changes	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/src/r-cran-testrcpppackage_0.1.0-1_i386.changes	(revision 3762)
@@ -0,0 +1,35 @@
+Format: 1.8
+Date: Fri, 03 Oct 2014 08:25:46 -0500
+Source: r-cran-testrcpppackage
+Binary: r-cran-testrcpppackage
+Architecture: source i386
+Version: 0.1.0-1
+Distribution: unstable
+Urgency: low
+Maintainer: Dirk Eddelbuettel <edd@debian.org>
+Changed-By: Dirk Eddelbuettel <edd@debian.org>
+Description: 
+ r-cran-testrcpppackage - GNU R package to test Rcpp during Unit Tests
+Changes: 
+ r-cran-testrcpppackage (0.1.0-1) unstable; urgency=low
+ .
+   * Initial version
+ .
+   * debian/control: Remove (Build-)Depends: on r-cran-rcpp as this package is
+     internal and just used for testing from source when the packaged R binary
+     may not be installed
+Checksums-Sha1: 
+ 992669d5025d83af970c60337e2d74ccf983446d 899 r-cran-testrcpppackage_0.1.0-1.dsc
+ 4cfa8b64d4f4adc2e991ac1faae18263eb78fe07 2171 r-cran-testrcpppackage_0.1.0.orig.tar.gz
+ 234e00a49064072d509cb5e6cc8e7d0bc3608245 572 r-cran-testrcpppackage_0.1.0-1.diff.gz
+ 125c9101845f6890d8e891b53aa0b69c83ccd322 16142 r-cran-testrcpppackage_0.1.0-1_i386.deb
+Checksums-Sha256: 
+ ca0c3050c577a61e392ceceebaffe6c6de076eb935fdea421e25341f03d9ec46 899 r-cran-testrcpppackage_0.1.0-1.dsc
+ 95575315827f284f5c6aacbafeba0a9609e50e312a09f7a2ff94faade83ef876 2171 r-cran-testrcpppackage_0.1.0.orig.tar.gz
+ 540cc246865c5361587fa4b9cdfa604a7a2be630825bcc0b0d62cfbd7f648915 572 r-cran-testrcpppackage_0.1.0-1.diff.gz
+ 924e3c73da76efe92bdc7d247f887a9fcd2b74ebdb22c67766e9669620342b17 16142 r-cran-testrcpppackage_0.1.0-1_i386.deb
+Files: 
+ 1d2156181f8816c31306d77f4760697c 899 gnu-r optional r-cran-testrcpppackage_0.1.0-1.dsc
+ e424c851ac8f4fa40185cf4399737c7d 2171 gnu-r optional r-cran-testrcpppackage_0.1.0.orig.tar.gz
+ 54073056db0ba60cf0b1707c4b6db85c 572 gnu-r optional r-cran-testrcpppackage_0.1.0-1.diff.gz
+ 56b8f712e86e0113715ead494065346e 16142 gnu-r optional r-cran-testrcpppackage_0.1.0-1_i386.deb
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/src/r-cran-testrcpppackage_0.1.0-1_amd64.changes
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/src/r-cran-testrcpppackage_0.1.0-1_amd64.changes	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/src/r-cran-testrcpppackage_0.1.0-1_amd64.changes	(revision 3762)
@@ -0,0 +1,32 @@
+Format: 1.8
+Date: Fri, 03 Oct 2014 08:25:46 -0500
+Source: r-cran-testrcpppackage
+Binary: r-cran-testrcpppackage
+Architecture: source amd64
+Version: 0.1.0-1
+Distribution: unstable
+Urgency: low
+Maintainer: Dirk Eddelbuettel <edd@debian.org>
+Changed-By: Dirk Eddelbuettel <edd@debian.org>
+Description: 
+ r-cran-testrcpppackage - GNU R package to test Rcpp during Unit Tests
+Changes: 
+ r-cran-testrcpppackage (0.1.0-1) unstable; urgency=low
+ .
+   * Initial version
+ .
+   * debian/control: Remove (Build-)Depends: on r-cran-rcpp as this package is
+     internal and just used for testing from source when the packaged R binary
+     may not be installed
+Checksums-Sha1: 
+ 9ce17a16ee5bcd653ff1163351746ca1f0301719 619 r-cran-testrcpppackage_0.1.0-1.dsc
+ 33e5e6260dd26d4d2cd1468eea5b1e78dac154e0 2195 r-cran-testrcpppackage_0.1.0-1.tar.gz
+ 8edfa5d0ad68a9eb114e58cb0ac449a669c27edd 16266 r-cran-testrcpppackage_0.1.0-1_amd64.deb
+Checksums-Sha256: 
+ 09bbf499ccbf68342826f9e0466e9e3259246f1c0d4b3357cf48234fef600c18 619 r-cran-testrcpppackage_0.1.0-1.dsc
+ 7cf23b12dd78667f05219b0479eb9247691495f30086622fa48536a509dc6e38 2195 r-cran-testrcpppackage_0.1.0-1.tar.gz
+ 431339b8ed1e7a7f354e70a982f64535ec75dcabe5d8b4c25161cd81bd8d7f13 16266 r-cran-testrcpppackage_0.1.0-1_amd64.deb
+Files: 
+ 750247a57ce4e12cd37e2e57656a66f4 619 gnu-r optional r-cran-testrcpppackage_0.1.0-1.dsc
+ 80524284597233a9634a1034ccc7919c 2195 gnu-r optional r-cran-testrcpppackage_0.1.0-1.tar.gz
+ 7fb9967c5d48052f8dc6167b1ee619d3 16266 gnu-r optional r-cran-testrcpppackage_0.1.0-1_amd64.deb
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/src/r-cran-testrcpppackage_0.1.0-1_i386.deb
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/src/r-cran-testrcpppackage_0.1.0-1_i386.deb
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/src/r-cran-testrcpppackage_0.1.0-1_amd64.deb
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/src/r-cran-testrcpppackage_0.1.0-1_amd64.deb
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/src/r-cran-testrcpppackage_0.1.0-1.diff.gz
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/src/r-cran-testrcpppackage_0.1.0-1.diff.gz
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/src/r-cran-testrcpppackage_0.1.0-1.dsc
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/src/r-cran-testrcpppackage_0.1.0-1.dsc	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/src/r-cran-testrcpppackage_0.1.0-1.dsc	(revision 3762)
@@ -0,0 +1,19 @@
+Format: 1.0
+Source: r-cran-testrcpppackage
+Binary: r-cran-testrcpppackage
+Architecture: any
+Version: 0.1.0-1
+Maintainer: Dirk Eddelbuettel <edd@debian.org>
+Standards-Version: 3.9.6
+Build-Depends: debhelper (>= 7.0.0), r-base-dev (>= 3.1.1), cdbs
+Package-List: 
+ r-cran-testrcpppackage deb gnu-r optional
+Checksums-Sha1: 
+ 4cfa8b64d4f4adc2e991ac1faae18263eb78fe07 2171 r-cran-testrcpppackage_0.1.0.orig.tar.gz
+ 234e00a49064072d509cb5e6cc8e7d0bc3608245 572 r-cran-testrcpppackage_0.1.0-1.diff.gz
+Checksums-Sha256: 
+ 95575315827f284f5c6aacbafeba0a9609e50e312a09f7a2ff94faade83ef876 2171 r-cran-testrcpppackage_0.1.0.orig.tar.gz
+ 540cc246865c5361587fa4b9cdfa604a7a2be630825bcc0b0d62cfbd7f648915 572 r-cran-testrcpppackage_0.1.0-1.diff.gz
+Files: 
+ e424c851ac8f4fa40185cf4399737c7d 2171 r-cran-testrcpppackage_0.1.0.orig.tar.gz
+ 54073056db0ba60cf0b1707c4b6db85c 572 r-cran-testrcpppackage_0.1.0-1.diff.gz
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/bin/i386/r-cran-testrcpppackage_0.1.0-1_i386.deb
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/bin/i386/r-cran-testrcpppackage_0.1.0-1_i386.deb
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/bin/amd64/r-cran-testrcpppackage_0.1.0-1_amd64.deb
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/bin/amd64/r-cran-testrcpppackage_0.1.0-1_amd64.deb
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppPackage/man/testRcppPackage-package.Rd
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppPackage/man/testRcppPackage-package.Rd	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppPackage/man/testRcppPackage-package.Rd	(revision 3762)
@@ -0,0 +1,20 @@
+\name{testRcppPackage-package}
+\alias{testRcppPackage-package}
+\alias{testRcppPackage}
+\docType{package}
+\title{
+Dummy package part of Rcpp unit tests
+}
+\description{
+Dummy package part of Rcpp unit tests
+}
+\details{
+\tabular{ll}{
+Package: \tab testRcppPackage\cr
+Type: \tab Package\cr
+Version: \tab 0.1.0\cr
+Date: \tab 2014-11-02\cr
+License: \tab GPL (>= 2)\cr
+LazyLoad: \tab yes\cr
+}
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppPackage/NAMESPACE
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppPackage/NAMESPACE	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppPackage/NAMESPACE	(revision 3762)
@@ -0,0 +1,2 @@
+useDynLib(testRcppPackage)
+import(Rcpp)
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppPackage/R/rcpp_hello_world.R
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppPackage/R/rcpp_hello_world.R	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppPackage/R/rcpp_hello_world.R	(revision 3762)
@@ -0,0 +1,3 @@
+rcpp_hello_world <- function() {
+    .Call("rcpp_hello_world", PACKAGE = "testRcppPackage")
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppPackage/DESCRIPTION
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppPackage/DESCRIPTION	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppPackage/DESCRIPTION	(revision 3762)
@@ -0,0 +1,12 @@
+Package: testRcppPackage
+Type: Package
+Title: Small Test Package for Rcpp and Part of Rcpp Unit Tests
+Version: 0.1.0
+Date: 2014-11-02
+Author: Dirk Eddelbuettel and Romain Francois
+Maintainer: Dirk Eddelbuettel <edd@debian.org>
+Description: Small test package uses as part of Rcpp unit tests
+License: GPL (>= 2)
+LazyLoad: yes
+Imports: Rcpp
+LinkingTo: Rcpp
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppPackage/src/rcpp_hello_world.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppPackage/src/rcpp_hello_world.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppPackage/src/rcpp_hello_world.h	(revision 3762)
@@ -0,0 +1,9 @@
+#ifndef _testRcppPackage_RCPP_HELLO_WORLD_H
+#define _testRcppPackage_RCPP_HELLO_WORLD_H
+
+#include <Rcpp.h>
+
+RcppExport SEXP rcpp_hello_world() ;
+RcppExport SEXP hello_world_ex() ;
+
+#endif
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppPackage/src/rcpp_hello_world.cpp
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppPackage/src/rcpp_hello_world.cpp	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppPackage/src/rcpp_hello_world.cpp	(revision 3762)
@@ -0,0 +1,19 @@
+#include "rcpp_hello_world.h"
+
+SEXP rcpp_hello_world(){
+    using namespace Rcpp ;
+    CharacterVector x = CharacterVector::create( "foo", "bar" )  ;
+    NumericVector y   = NumericVector::create( 0.0, 1.0 ) ;
+    List z = List::create( x, y ) ;
+    return z ;
+}
+
+SEXP hello_world_ex(){
+    try{
+        throw std::range_error( "boom" ) ;
+    } catch( std::exception& __ex__ ){
+        forward_exception_to_r( __ex__ ) ;
+    }
+    return R_NilValue ;
+}
+
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppClass/R/rcpp_hello_world.R
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppClass/R/rcpp_hello_world.R	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppClass/R/rcpp_hello_world.R	(revision 3762)
@@ -0,0 +1,5 @@
+
+rcpp_hello_world <- function(){
+    .Call("rcpp_hello_world_cpp", PACKAGE = "testRcppClass")
+}
+
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppClass/R/load.R
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppClass/R/load.R	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppClass/R/load.R	(revision 3762)
@@ -0,0 +1,53 @@
+setRcppClass("RcppClassWorld", module = "RcppClassModule", fields = list(more = "character"),
+             methods = list(test = function(what) message("Testing: ", what, "; ", more)),
+             saveAs = "genWorld"
+             )
+
+setRcppClass("stdNumeric", "vec", "stdVector")
+
+## some methods that use C++ methods
+evalqOnLoad({
+    ##library(methods)
+    stdNumeric$methods(
+        getEl = function(i) {
+            i <- as.integer(i)
+            if(i < 1 || i > size())
+                NA_real_
+            else
+                at(i-1L)
+        },
+        setEl = function(i, value) {
+            value <- as.numeric(value)
+            if(length(value) != 1)
+                stop("Only assigns single values")
+            i <- as.integer(i)
+            if(i < 1 || i > size())
+                stop("index out of bounds")
+            else
+                set(i-1L, value)
+        },
+        initialize = function(data = numeric()) {
+            callSuper()
+            data <- as.double(data)
+            n <- as.integer(max(50, length(data) * 2))
+            reserve(n)
+            assign(data)
+        }
+    )
+})
+
+
+## loadModule("NumEx")
+
+## loading the module should have defined the C++ class
+
+## setRcppClass("NumEx", "Num")
+
+
+## For R 2.15.1 and later this also works. Note that calling loadModule() triggers
+## a load action, so this does not have to be placed in .onLoad() or evalqOnLoad().
+loadModule("NumEx", TRUE)
+loadModule("RcppClassModule", TRUE)
+loadModule("stdVector", TRUE)
+
+loadModule("RcppClassModule", c("bar", baz = "bla", baz1 = "bla1", "foo"))
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppClass/tests/classes.R
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppClass/tests/classes.R	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppClass/tests/classes.R	(revision 3762)
@@ -0,0 +1,25 @@
+library(testRcppClass)
+
+v <- stdNumeric$new()
+data <- 1:10
+v$assign(data)
+v$set(3L, v$at(3L) + 1)
+
+data[[4]] <- data[[4]] +1
+
+stopifnot(identical(all.equal(v$as.vector(), data), TRUE))
+
+## a few function calls
+
+stopifnot(all.equal(bar(2), 4))
+stopifnot(all.equal(foo(2,3), 6))
+
+## Uncomment this when a C++Class can be found w/o extracting from module
+## as in commented code in R/load.R
+
+## nn <- new("NumEx")
+## nn$x <- pi
+## stopifnot(all.equal(nn$x, pi))
+
+
+
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppClass/DESCRIPTION
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppClass/DESCRIPTION	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppClass/DESCRIPTION	(revision 3762)
@@ -0,0 +1,17 @@
+Package: testRcppClass
+Type: Package
+Title: Some Examples using Rcpp Classes and loadModule()
+Version: 0.1
+Date: 2012-04-06
+Author: John Chambers
+Maintainer: John Chambers <jmc@stat.stanford.edu>
+Description: Some examples from the Rcpp Modules documentation, with
+ load-time creation of classes that extend C++ classes and with
+ explicit loading of some objects.
+License: GPL(>=2)
+LazyLoad: yes
+Depends: R (>= 2.15.0)
+Imports: Rcpp (>= 0.8.5), methods
+LinkingTo: Rcpp
+Packaged: 2012-04-14 18:42:28 UTC; jmc
+NeedsCompilation: yes
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppClass/src/rcpp_module.cpp
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppClass/src/rcpp_module.cpp	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppClass/src/rcpp_module.cpp	(revision 3762)
@@ -0,0 +1,53 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; indent-tabs-mode: nil; -*-
+
+#include <Rcpp.h>
+
+int bar(int x) {
+    return x*2;
+}
+
+double foo(int x, double y) {
+    return x * y;
+}
+
+void bla() {
+    Rprintf("hello\\n");
+}
+
+void bla1(int x) {
+    Rprintf("hello (x = %d)\\n", x);
+}
+
+void bla2(int x, double y) {
+    Rprintf("hello (x = %d, y = %5.2f)\\n", x, y);
+}
+
+class RcppClassWorld {
+public:
+    RcppClassWorld() : msg("hello") {}
+    void set(std::string msg) { this->msg = msg; }
+    std::string greet() { return msg; }
+
+private:
+    std::string msg;
+};
+
+
+
+RCPP_MODULE(RcppClassModule) {
+    using namespace Rcpp;
+
+    function("bar"   , &bar );
+    function("foo"   , &foo );
+    function("bla"   , &bla );
+    function("bla1"  , &bla1);
+    function("bla2"  , &bla2);
+
+    class_<RcppClassWorld>( "RcppClassWorld" )
+
+        .default_constructor()
+
+        .method("greet", &RcppClassWorld::greet)
+        .method("set", &RcppClassWorld::set)
+	;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppClass/src/stdVector.cpp
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppClass/src/stdVector.cpp	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppClass/src/stdVector.cpp	(revision 3762)
@@ -0,0 +1,71 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; indent-tabs-mode: nil; -*-
+
+#include "rcpp_hello_world.h"
+
+// convenience typedef
+typedef std::vector<double> vec ;
+
+// helpers
+void vec_assign( vec* obj, Rcpp::NumericVector data ){
+    obj->assign( data.begin(), data.end() ) ;
+}
+
+void vec_insert( vec* obj, int position, Rcpp::NumericVector data){
+    vec::iterator it = obj->begin() + position ;
+    obj->insert( it, data.begin(), data.end() ) ;
+}
+
+Rcpp::NumericVector vec_asR( vec* obj ){
+    return Rcpp::wrap( *obj ) ;
+}
+
+void vec_set( vec* obj, int i, double value ){
+    obj->at( i ) = value ;
+}
+
+void vec_resize( vec* obj, int n){ obj->resize( n ) ; }
+void vec_push_back( vec* obj, double x ){ obj->push_back( x ); }
+
+// Wrappers for member functions that return a reference
+// Required on Solaris
+double vec_back(vec *obj){ return obj->back() ; }
+double vec_front(vec *obj){ return obj->front() ; }
+double vec_at(vec *obj, int i){ return obj->at(i) ; }
+
+RCPP_MODULE(stdVector){
+    using namespace Rcpp ;
+
+    // we expose the class std::vector<double> as "vec" on the R side
+    class_<vec>( "stdNumeric")
+
+    // exposing the default constructor
+    .constructor()
+
+    // exposing member functions
+    .method( "size", &vec::size)
+    .method( "max_size", &vec::max_size)
+    .method( "capacity", &vec::capacity)
+    .method( "empty", &vec::empty)
+    .method( "reserve", &vec::reserve)
+    .method( "pop_back", &vec::pop_back )
+    .method( "clear", &vec::clear )
+
+    // specifically exposing const member functions
+    .method( "back", &vec_back )
+    .method( "front", &vec_front )
+    .method( "at", &vec_at )
+    .method( "set", &vec_set )
+
+    // exposing free functions taking a std::vector<double>*
+    // as their first argument
+    .method( "assign", &vec_assign )
+    .method( "insert", &vec_insert )
+    .method( "as.vector", &vec_asR )
+    .method( "push_back", &vec_push_back )
+    .method( "resize", &vec_resize)
+
+    // special methods for indexing
+    // .method( "[[", &vec_at )
+    // .method( "[[<-", &vec_set )
+	;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppClass/src/rcpp_hello_world.cpp
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppClass/src/rcpp_hello_world.cpp	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppClass/src/rcpp_hello_world.cpp	(revision 3762)
@@ -0,0 +1,11 @@
+#include "rcpp_hello_world.h"
+
+SEXP rcpp_hello_world_cpp(){
+    using namespace Rcpp ;
+
+    CharacterVector x = CharacterVector::create( "foo", "bar" )  ;
+    NumericVector y   = NumericVector::create( 0.0, 1.0 ) ;
+    List z            = List::create( x, y ) ;
+
+    return z ;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppClass/src/Num.cpp
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppClass/src/Num.cpp	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppClass/src/Num.cpp	(revision 3762)
@@ -0,0 +1,32 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; indent-tabs-mode: nil; -*-
+
+#include "rcpp_hello_world.h"
+
+class Num{
+public:
+    Num() : x(0.0), y(0){} ;
+
+    double getX() { return x ; }
+    void setX(double value){ x = value ; }
+
+    int getY() { return y ; }
+
+private:
+    double x ;
+    int y ;
+};
+
+RCPP_MODULE(NumEx){
+    using namespace Rcpp ;
+
+    class_<Num>( "Num" )
+
+        .default_constructor()
+
+        // read and write property
+        .property( "x", &Num::getX, &Num::setX )
+
+        // read-only property
+        .property( "y", &Num::getY )
+	;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppClass/src/init.c
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppClass/src/init.c	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppClass/src/init.c	(revision 3762)
@@ -0,0 +1,27 @@
+#include <R.h>
+#include <Rinternals.h>
+#include <stdlib.h> // for NULL
+#include <R_ext/Rdynload.h>
+
+/* FIXME: 
+   Check these declarations against the C/Fortran source code.
+*/
+
+/* .Call calls */
+extern SEXP rcpp_hello_world_cpp();
+extern SEXP _rcpp_module_boot_NumEx();
+extern SEXP _rcpp_module_boot_RcppClassModule();
+extern SEXP _rcpp_module_boot_stdVector();
+
+static const R_CallMethodDef CallEntries[] = {
+    {"rcpp_hello_world_cpp", (DL_FUNC) &rcpp_hello_world_cpp, 0},
+    {"_rcpp_module_boot_NumEx", (DL_FUNC) &_rcpp_module_boot_NumEx, 0},
+    {"_rcpp_module_boot_RcppClassModule", (DL_FUNC) &_rcpp_module_boot_RcppClassModule, 0},
+    {"_rcpp_module_boot_stdVector", (DL_FUNC) &_rcpp_module_boot_stdVector, 0},
+    {NULL, NULL, 0}
+};
+
+void R_init_testRcppModule(DllInfo *dll) {
+    R_registerRoutines(dll, NULL, CallEntries, NULL, NULL);
+    R_useDynamicSymbols(dll, FALSE);
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppClass/src/rcpp_hello_world.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppClass/src/rcpp_hello_world.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppClass/src/rcpp_hello_world.h	(revision 3762)
@@ -0,0 +1,8 @@
+#ifndef _testRcppModule_RCPP_HELLO_WORLD_H
+#define _testRcppModule_RCPP_HELLO_WORLD_H
+
+#include <Rcpp.h>
+
+RcppExport SEXP rcpp_hello_world_cpp() ;
+
+#endif
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppClass/man/rcpp_hello_world.Rd
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppClass/man/rcpp_hello_world.Rd	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppClass/man/rcpp_hello_world.Rd	(revision 3762)
@@ -0,0 +1,17 @@
+\name{rcpp_hello_world}
+\alias{rcpp_hello_world}
+\docType{package}
+\title{
+Simple function using Rcpp
+}
+\description{
+Simple function using Rcpp
+}
+\usage{
+rcpp_hello_world()	
+}
+\examples{
+\dontrun{
+rcpp_hello_world()
+}
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppClass/man/testRcppClass-package.Rd
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppClass/man/testRcppClass-package.Rd	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppClass/man/testRcppClass-package.Rd	(revision 3762)
@@ -0,0 +1,22 @@
+\name{testRcppClass-package}
+\alias{testRcppClass-package}
+\alias{testRcppClass}
+\docType{package}
+\title{
+Dummy package part of Rcpp unit testing
+}
+\description{
+Dummy package part of Rcpp unit testing
+}
+\details{
+\tabular{ll}{
+Package: \tab testRcppClass\cr
+Type: \tab Package\cr
+Version: \tab 1.0\cr
+Date: \tab 2010-09-06\cr
+License: \tab GPL (>=2)\cr
+LazyLoad: \tab yes\cr
+}
+}
+\keyword{ package }
+
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppClass/man/Rcpp_class_examples.Rd
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppClass/man/Rcpp_class_examples.Rd	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppClass/man/Rcpp_class_examples.Rd	(revision 3762)
@@ -0,0 +1,30 @@
+\name{Rcpp Modules Examples}
+\alias{Num}
+\alias{RcppClassWorld}
+\alias{bar}
+\alias{bla}
+\alias{baz}
+\alias{bla1}
+\alias{baz1}
+\alias{bla2}
+\alias{foo}
+\alias{vec}
+\alias{hello}
+\alias{genWorld}
+\alias{stdNumeric}
+\alias{Rcpp_Num-class}
+\alias{Rcpp_RcppClassWorld-class}
+\alias{Rcpp_vec-class}
+\alias{stdNumeric-class}
+\alias{RcppClassWorld-class}
+\alias{C++Object-class}
+\title{
+  Functions and Objects created by Rcpp Modules Example
+}
+\description{
+  These function and objects are accessible from R via the Rcpp Modules mechanism
+  which creates them based on the declaration in the C++ file.  
+}
+\seealso{
+  The Rcpp Modules vignette.
+}
\ No newline at end of file
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppClass/NAMESPACE
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppClass/NAMESPACE	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.macosx/res/macosx/library/Rcpp/tinytest/testRcppClass/NAMESPACE	(revision 3762)
@@ -0,0 +1,7 @@
+useDynLib(testRcppClass, .registration=TRUE)
+import(Rcpp,methods)
+
+export(genWorld, stdNumeric, rcpp_hello_world,
+       bar, foo, baz, baz1)
+
+exportClass(RcppClassWorld, stdNumeric)#, NumEx)
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/include/X11/Sunkeysym.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/include/X11/Sunkeysym.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/include/X11/Sunkeysym.h	(revision 3762)
@@ -0,0 +1,106 @@
+/*
+ * Copyright (c) 1991, Oracle and/or its affiliates. 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, 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 (including the next
+ * paragraph) 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.
+ */
+/************************************************************
+
+Copyright 1991, 1998  The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+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
+OPEN GROUP 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.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+***********************************************************/
+
+/*
+ * Floating Accent
+ */
+
+#define	SunXK_FA_Grave		0x1005FF00
+#define	SunXK_FA_Circum		0x1005FF01
+#define	SunXK_FA_Tilde		0x1005FF02
+#define	SunXK_FA_Acute		0x1005FF03
+#define	SunXK_FA_Diaeresis	0x1005FF04
+#define	SunXK_FA_Cedilla	0x1005FF05
+
+/*
+ * Miscellaneous Functions
+ */
+
+#define	SunXK_F36		0x1005FF10	/* Labeled F11 */
+#define	SunXK_F37		0x1005FF11	/* Labeled F12 */
+
+#define SunXK_Sys_Req   	0x1005FF60
+#define SunXK_Print_Screen	0x0000FF61	/* Same as XK_Print */
+
+/*
+ * International & Multi-Key Character Composition
+ */
+
+#define SunXK_Compose		0x0000FF20	/* Same as XK_Multi_key */
+#define SunXK_AltGraph		0x0000FF7E	/* Same as XK_Mode_switch */
+
+/*
+ * Cursor Control
+ */
+
+#define SunXK_PageUp		0x0000FF55 	/* Same as XK_Prior */
+#define SunXK_PageDown		0x0000FF56	/* Same as XK_Next */
+
+/*
+ * Open Look Functions
+ */
+
+#define SunXK_Undo		0x0000FF65	/* Same as XK_Undo */
+#define SunXK_Again		0x0000FF66	/* Same as XK_Redo */
+#define SunXK_Find		0x0000FF68	/* Same as XK_Find */
+#define SunXK_Stop		0x0000FF69	/* Same as XK_Cancel */
+#define SunXK_Props		0x1005FF70
+#define SunXK_Front		0x1005FF71
+#define SunXK_Copy		0x1005FF72
+#define SunXK_Open		0x1005FF73
+#define SunXK_Paste		0x1005FF74
+#define SunXK_Cut		0x1005FF75
+
+#define SunXK_PowerSwitch		0x1005FF76
+#define SunXK_AudioLowerVolume		0x1005FF77
+#define SunXK_AudioMute			0x1005FF78
+#define SunXK_AudioRaiseVolume		0x1005FF79
+#define SunXK_VideoDegauss		0x1005FF7A
+#define SunXK_VideoLowerBrightness	0x1005FF7B
+#define SunXK_VideoRaiseBrightness	0x1005FF7C
+#define SunXK_PowerSwitchShift		0x1005FF7D
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/include/X11/X.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/include/X11/X.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/include/X11/X.h	(revision 3762)
@@ -0,0 +1,686 @@
+/*
+ *	$XConsortium: X.h,v 1.66 88/09/06 15:55:56 jim Exp $
+ */
+
+/* Definitions for the X window system likely to be used by applications */
+
+#ifndef X_H
+#define X_H
+
+/***********************************************************
+Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts,
+and the Massachusetts Institute of Technology, Cambridge, Massachusetts.
+
+                        All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the names of Digital or MIT not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL BE LIABLE FOR 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.
+
+******************************************************************/
+#define X_PROTOCOL	11		/* current protocol version */
+#define X_PROTOCOL_REVISION 0		/* current minor version */
+
+#if defined(MAC_OSX_TK)
+#   define Cursor XCursor
+#   define Region XRegion
+#endif
+
+/* Resources */
+
+#ifdef _WIN64
+typedef unsigned __int64 XID;
+#else
+typedef unsigned long XID;
+#endif
+
+typedef XID Window;
+typedef XID Drawable;
+typedef XID Font;
+typedef XID Pixmap;
+typedef XID Cursor;
+typedef XID Colormap;
+typedef XID GContext;
+typedef XID KeySym;
+
+typedef unsigned long Mask;
+
+typedef unsigned long Atom;
+
+typedef unsigned long VisualID;
+
+typedef unsigned long Time;
+
+typedef unsigned long KeyCode;	/* In order to use IME, the Macintosh needs
+				 * to pack 3 bytes into the keyCode field in
+				 * the XEvent.  In the real X.h, a KeyCode is
+				 * defined as a short, which wouldn't be big
+				 * enough. */
+
+/*****************************************************************
+ * RESERVED RESOURCE AND CONSTANT DEFINITIONS
+ *****************************************************************/
+
+#ifndef _WIN32
+#   define None              0L      /* See bug [9e31fd9449] and below */
+#endif
+
+#define ParentRelative       1L	/* background pixmap in CreateWindow
+				    and ChangeWindowAttributes */
+
+#define CopyFromParent       0L	/* border pixmap in CreateWindow
+				       and ChangeWindowAttributes
+				   special VisualID and special window
+				       class passed to CreateWindow */
+
+#define PointerWindow        0L	/* destination window in SendEvent */
+#define InputFocus           1L	/* destination window in SendEvent */
+
+#define PointerRoot          1L	/* focus window in SetInputFocus */
+
+#define AnyPropertyType      0L	/* special Atom, passed to GetProperty */
+
+#define AnyKey		     0L	/* special Key Code, passed to GrabKey */
+
+#define AnyButton            0L	/* special Button Code, passed to GrabButton */
+
+#define AllTemporary         0L	/* special Resource ID passed to KillClient */
+
+#define CurrentTime          0L	/* special Time */
+
+#define NoSymbol	     0L	/* special KeySym */
+
+/*****************************************************************
+ * EVENT DEFINITIONS
+ *****************************************************************/
+
+/* Input Event Masks. Used as event-mask window attribute and as arguments
+   to Grab requests.  Not to be confused with event names.  */
+
+#define NoEventMask			0L
+#define KeyPressMask			(1L<<0)
+#define KeyReleaseMask			(1L<<1)
+#define ButtonPressMask			(1L<<2)
+#define ButtonReleaseMask		(1L<<3)
+#define EnterWindowMask			(1L<<4)
+#define LeaveWindowMask			(1L<<5)
+#define PointerMotionMask		(1L<<6)
+#define PointerMotionHintMask		(1L<<7)
+#define Button1MotionMask		(1L<<8)
+#define Button2MotionMask		(1L<<9)
+#define Button3MotionMask		(1L<<10)
+#define Button4MotionMask		(1L<<11)
+#define Button5MotionMask		(1L<<12)
+#define ButtonMotionMask		(1L<<13)
+#define KeymapStateMask			(1L<<14)
+#define ExposureMask			(1L<<15)
+#define VisibilityChangeMask		(1L<<16)
+#define StructureNotifyMask		(1L<<17)
+#define ResizeRedirectMask		(1L<<18)
+#define SubstructureNotifyMask		(1L<<19)
+#define SubstructureRedirectMask	(1L<<20)
+#define FocusChangeMask			(1L<<21)
+#define PropertyChangeMask		(1L<<22)
+#define ColormapChangeMask		(1L<<23)
+#define OwnerGrabButtonMask		(1L<<24)
+
+/* Event names.  Used in "type" field in XEvent structures.  Not to be
+confused with event masks above.  They start from 2 because 0 and 1
+are reserved in the protocol for errors and replies. */
+
+#define KeyPress		2
+#define KeyRelease		3
+#define ButtonPress		4
+#define ButtonRelease		5
+#define MotionNotify		6
+#define EnterNotify		7
+#define LeaveNotify		8
+#define FocusIn			9
+#define FocusOut		10
+#define KeymapNotify		11
+#define Expose			12
+#define GraphicsExpose		13
+#define NoExpose		14
+#define VisibilityNotify	15
+#define CreateNotify		16
+#define DestroyNotify		17
+#define UnmapNotify		18
+#define MapNotify		19
+#define MapRequest		20
+#define ReparentNotify		21
+#define ConfigureNotify		22
+#define ConfigureRequest	23
+#define GravityNotify		24
+#define ResizeRequest		25
+#define CirculateNotify		26
+#define CirculateRequest	27
+#define PropertyNotify		28
+#define SelectionClear		29
+#define SelectionRequest	30
+#define SelectionNotify		31
+#define ColormapNotify		32
+#define ClientMessage		33
+#define MappingNotify		34
+#define LASTEvent		35	/* must be bigger than any event # */
+
+
+/* Key masks. Used as modifiers to GrabButton and GrabKey, results of QueryPointer,
+   state in various key-, mouse-, and button-related events. */
+
+#define ShiftMask		(1<<0)
+#define LockMask		(1<<1)
+#ifndef _WIN32
+#   define ControlMask		(1<<2) /* See bug [9e31fd9449] and below */
+#endif
+#define Mod1Mask		(1<<3)
+#define Mod2Mask		(1<<4)
+#define Mod3Mask		(1<<5)
+#define Mod4Mask		(1<<6)
+#define Mod5Mask		(1<<7)
+
+/* See bug [9e31fd9449], this way prevents conflicts with Win32 headers */
+#ifdef _WIN32
+enum _Bug9e31fd9449 { None = 0, ControlMask = (1<<2) };
+#endif
+
+/* modifier names.  Used to build a SetModifierMapping request or
+   to read a GetModifierMapping request.  These correspond to the
+   masks defined above. */
+#define ShiftMapIndex		0
+#define LockMapIndex		1
+#define ControlMapIndex		2
+#define Mod1MapIndex		3
+#define Mod2MapIndex		4
+#define Mod3MapIndex		5
+#define Mod4MapIndex		6
+#define Mod5MapIndex		7
+
+
+/* button masks.  Used in same manner as Key masks above. Not to be confused
+   with button names below. */
+
+#define Button1Mask		(1<<8)
+#define Button2Mask		(1<<9)
+#define Button3Mask		(1<<10)
+#define Button4Mask		(1<<11)
+#define Button5Mask		(1<<12)
+
+#define AnyModifier		(1<<15)  /* used in GrabButton, GrabKey */
+
+
+/* button names. Used as arguments to GrabButton and as detail in ButtonPress
+   and ButtonRelease events.  Not to be confused with button masks above.
+   Note that 0 is already defined above as "AnyButton".  */
+
+#define Button1			1
+#define Button2			2
+#define Button3			3
+#define Button4			4
+#define Button5			5
+
+/* Notify modes */
+
+#define NotifyNormal		0
+#define NotifyGrab		1
+#define NotifyUngrab		2
+#define NotifyWhileGrabbed	3
+
+#define NotifyHint		1	/* for MotionNotify events */
+
+/* Notify detail */
+
+#define NotifyAncestor		0
+#define NotifyVirtual		1
+#define NotifyInferior		2
+#define NotifyNonlinear		3
+#define NotifyNonlinearVirtual	4
+#define NotifyPointer		5
+#define NotifyPointerRoot	6
+#define NotifyDetailNone	7
+
+/* Visibility notify */
+
+#define VisibilityUnobscured		0
+#define VisibilityPartiallyObscured	1
+#define VisibilityFullyObscured		2
+
+/* Circulation request */
+
+#define PlaceOnTop		0
+#define PlaceOnBottom		1
+
+/* protocol families */
+
+#define FamilyInternet		0
+#define FamilyDECnet		1
+#define FamilyChaos		2
+
+/* Property notification */
+
+#define PropertyNewValue	0
+#define PropertyDelete		1
+
+/* Color Map notification */
+
+#define ColormapUninstalled	0
+#define ColormapInstalled	1
+
+/* GrabPointer, GrabButton, GrabKeyboard, GrabKey Modes */
+
+#define GrabModeSync		0
+#define GrabModeAsync		1
+
+/* GrabPointer, GrabKeyboard reply status */
+
+#define GrabSuccess		0
+#define AlreadyGrabbed		1
+#define GrabInvalidTime		2
+#define GrabNotViewable		3
+#define GrabFrozen		4
+
+/* AllowEvents modes */
+
+#define AsyncPointer		0
+#define SyncPointer		1
+#define ReplayPointer		2
+#define AsyncKeyboard		3
+#define SyncKeyboard		4
+#define ReplayKeyboard		5
+#define AsyncBoth		6
+#define SyncBoth		7
+
+/* Used in SetInputFocus, GetInputFocus */
+
+#define RevertToNone		(int)None
+#define RevertToPointerRoot	(int)PointerRoot
+#define RevertToParent		2
+
+/*****************************************************************
+ * ERROR CODES
+ *****************************************************************/
+
+#define Success		   0	/* everything's okay */
+#define BadRequest	   1	/* bad request code */
+#define BadValue	   2	/* int parameter out of range */
+#define BadWindow	   3	/* parameter not a Window */
+#define BadPixmap	   4	/* parameter not a Pixmap */
+#define BadAtom		   5	/* parameter not an Atom */
+#define BadCursor	   6	/* parameter not a Cursor */
+#define BadFont		   7	/* parameter not a Font */
+#define BadMatch	   8	/* parameter mismatch */
+#define BadDrawable	   9	/* parameter not a Pixmap or Window */
+#define BadAccess	  10	/* depending on context:
+				 - key/button already grabbed
+				 - attempt to free an illegal
+				   cmap entry
+				- attempt to store into a read-only
+				   color map entry.
+ 				- attempt to modify the access control
+				   list from other than the local host.
+				*/
+#define BadAlloc	  11	/* insufficient resources */
+#define BadColor	  12	/* no such colormap */
+#define BadGC		  13	/* parameter not a GC */
+#define BadIDChoice	  14	/* choice not in range or already used */
+#define BadName		  15	/* font or color name doesn't exist */
+#define BadLength	  16	/* Request length incorrect */
+#define BadImplementation 17	/* server is defective */
+
+#define FirstExtensionError	128
+#define LastExtensionError	255
+
+/*****************************************************************
+ * WINDOW DEFINITIONS
+ *****************************************************************/
+
+/* Window classes used by CreateWindow */
+/* Note that CopyFromParent is already defined as 0 above */
+
+#define InputOutput		1
+#define InputOnly		2
+
+/* Window attributes for CreateWindow and ChangeWindowAttributes */
+
+#define CWBackPixmap		(1L<<0)
+#define CWBackPixel		(1L<<1)
+#define CWBorderPixmap		(1L<<2)
+#define CWBorderPixel           (1L<<3)
+#define CWBitGravity		(1L<<4)
+#define CWWinGravity		(1L<<5)
+#define CWBackingStore          (1L<<6)
+#define CWBackingPlanes	        (1L<<7)
+#define CWBackingPixel	        (1L<<8)
+#define CWOverrideRedirect	(1L<<9)
+#define CWSaveUnder		(1L<<10)
+#define CWEventMask		(1L<<11)
+#define CWDontPropagate	        (1L<<12)
+#define CWColormap		(1L<<13)
+#define CWCursor	        (1L<<14)
+
+/* ConfigureWindow structure */
+
+#define CWX			(1<<0)
+#define CWY			(1<<1)
+#define CWWidth			(1<<2)
+#define CWHeight		(1<<3)
+#define CWBorderWidth		(1<<4)
+#define CWSibling		(1<<5)
+#define CWStackMode		(1<<6)
+
+
+/* Bit Gravity */
+
+#define ForgetGravity		0
+#define NorthWestGravity	1
+#define NorthGravity		2
+#define NorthEastGravity	3
+#define WestGravity		4
+#define CenterGravity		5
+#define EastGravity		6
+#define SouthWestGravity	7
+#define SouthGravity		8
+#define SouthEastGravity	9
+#define StaticGravity		10
+
+/* Window gravity + bit gravity above */
+
+#define UnmapGravity		0
+
+/* Used in CreateWindow for backing-store hint */
+
+#define NotUseful               0
+#define WhenMapped              1
+#define Always                  2
+
+/* Used in GetWindowAttributes reply */
+
+#define IsUnmapped		0
+#define IsUnviewable		1
+#define IsViewable		2
+
+/* Used in ChangeSaveSet */
+
+#define SetModeInsert           0
+#define SetModeDelete           1
+
+/* Used in ChangeCloseDownMode */
+
+#define DestroyAll              0
+#define RetainPermanent         1
+#define RetainTemporary         2
+
+/* Window stacking method (in configureWindow) */
+
+#define Above                   0
+#define Below                   1
+#define TopIf                   2
+#define BottomIf                3
+#define Opposite                4
+
+/* Circulation direction */
+
+#define RaiseLowest             0
+#define LowerHighest            1
+
+/* Property modes */
+
+#define PropModeReplace         0
+#define PropModePrepend         1
+#define PropModeAppend          2
+
+/*****************************************************************
+ * GRAPHICS DEFINITIONS
+ *****************************************************************/
+
+/* graphics functions, as in GC.alu */
+
+#define	GXclear			0x0		/* 0 */
+#define GXand			0x1		/* src AND dst */
+#define GXandReverse		0x2		/* src AND NOT dst */
+#define GXcopy			0x3		/* src */
+#define GXandInverted		0x4		/* NOT src AND dst */
+#define	GXnoop			0x5		/* dst */
+#define GXxor			0x6		/* src XOR dst */
+#define GXor			0x7		/* src OR dst */
+#define GXnor			0x8		/* NOT src AND NOT dst */
+#define GXequiv			0x9		/* NOT src XOR dst */
+#define GXinvert		0xa		/* NOT dst */
+#define GXorReverse		0xb		/* src OR NOT dst */
+#define GXcopyInverted		0xc		/* NOT src */
+#define GXorInverted		0xd		/* NOT src OR dst */
+#define GXnand			0xe		/* NOT src OR NOT dst */
+#define GXset			0xf		/* 1 */
+
+/* LineStyle */
+
+#define LineSolid		0
+#define LineOnOffDash		1
+#define LineDoubleDash		2
+
+/* capStyle */
+
+#define CapNotLast		0
+#define CapButt			1
+#define CapRound		2
+#define CapProjecting		3
+
+/* joinStyle */
+
+#define JoinMiter		0
+#define JoinRound		1
+#define JoinBevel		2
+
+/* fillStyle */
+
+#define FillSolid		0
+#define FillTiled		1
+#define FillStippled		2
+#define FillOpaqueStippled	3
+
+/* fillRule */
+
+#define EvenOddRule		0
+#define WindingRule		1
+
+/* subwindow mode */
+
+#define ClipByChildren		0
+#define IncludeInferiors	1
+
+/* SetClipRectangles ordering */
+
+#define Unsorted		0
+#define YSorted			1
+#define YXSorted		2
+#define YXBanded		3
+
+/* CoordinateMode for drawing routines */
+
+#define CoordModeOrigin		0	/* relative to the origin */
+#define CoordModePrevious       1	/* relative to previous point */
+
+/* Polygon shapes */
+
+#define Complex			0	/* paths may intersect */
+#define Nonconvex		1	/* no paths intersect, but not convex */
+#define Convex			2	/* wholly convex */
+
+/* Arc modes for PolyFillArc */
+
+#define ArcChord		0	/* join endpoints of arc */
+#define ArcPieSlice		1	/* join endpoints to center of arc */
+
+/* GC components: masks used in CreateGC, CopyGC, ChangeGC, OR'ed into
+   GC.stateChanges */
+
+#define GCFunction              (1L<<0)
+#define GCPlaneMask             (1L<<1)
+#define GCForeground            (1L<<2)
+#define GCBackground            (1L<<3)
+#define GCLineWidth             (1L<<4)
+#define GCLineStyle             (1L<<5)
+#define GCCapStyle              (1L<<6)
+#define GCJoinStyle		(1L<<7)
+#define GCFillStyle		(1L<<8)
+#define GCFillRule		(1L<<9)
+#define GCTile			(1L<<10)
+#define GCStipple		(1L<<11)
+#define GCTileStipXOrigin	(1L<<12)
+#define GCTileStipYOrigin	(1L<<13)
+#define GCFont 			(1L<<14)
+#define GCSubwindowMode		(1L<<15)
+#define GCGraphicsExposures     (1L<<16)
+#define GCClipXOrigin		(1L<<17)
+#define GCClipYOrigin		(1L<<18)
+#define GCClipMask		(1L<<19)
+#define GCDashOffset		(1L<<20)
+#define GCDashList		(1L<<21)
+#define GCArcMode		(1L<<22)
+
+#define GCLastBit		22
+/*****************************************************************
+ * FONTS
+ *****************************************************************/
+
+/* used in QueryFont -- draw direction */
+
+#define FontLeftToRight		0
+#define FontRightToLeft		1
+
+#define FontChange		255
+
+/*****************************************************************
+ *  IMAGING
+ *****************************************************************/
+
+/* ImageFormat -- PutImage, GetImage */
+
+#define XYBitmap		0	/* depth 1, XYFormat */
+#define XYPixmap		1	/* depth == drawable depth */
+#define ZPixmap			2	/* depth == drawable depth */
+
+/*****************************************************************
+ *  COLOR MAP STUFF
+ *****************************************************************/
+
+/* For CreateColormap */
+
+#define AllocNone		0	/* create map with no entries */
+#define AllocAll		1	/* allocate entire map writeable */
+
+
+/* Flags used in StoreNamedColor, StoreColors */
+
+#define DoRed			(1<<0)
+#define DoGreen			(1<<1)
+#define DoBlue			(1<<2)
+
+/*****************************************************************
+ * CURSOR STUFF
+ *****************************************************************/
+
+/* QueryBestSize Class */
+
+#define CursorShape		0	/* largest size that can be displayed */
+#define TileShape		1	/* size tiled fastest */
+#define StippleShape		2	/* size stippled fastest */
+
+/*****************************************************************
+ * KEYBOARD/POINTER STUFF
+ *****************************************************************/
+
+#define AutoRepeatModeOff	0
+#define AutoRepeatModeOn	1
+#define AutoRepeatModeDefault	2
+
+#define LedModeOff		0
+#define LedModeOn		1
+
+/* masks for ChangeKeyboardControl */
+
+#define KBKeyClickPercent	(1L<<0)
+#define KBBellPercent		(1L<<1)
+#define KBBellPitch		(1L<<2)
+#define KBBellDuration		(1L<<3)
+#define KBLed			(1L<<4)
+#define KBLedMode		(1L<<5)
+#define KBKey			(1L<<6)
+#define KBAutoRepeatMode	(1L<<7)
+
+#define MappingSuccess     	0
+#define MappingBusy        	1
+#define MappingFailed		2
+
+#define MappingModifier		0
+#define MappingKeyboard		1
+#define MappingPointer		2
+
+/*****************************************************************
+ * SCREEN SAVER STUFF
+ *****************************************************************/
+
+#define DontPreferBlanking	0
+#define PreferBlanking		1
+#define DefaultBlanking		2
+
+#define DisableScreenSaver	0
+#define DisableScreenInterval	0
+
+#define DontAllowExposures	0
+#define AllowExposures		1
+#define DefaultExposures	2
+
+/* for ForceScreenSaver */
+
+#define ScreenSaverReset 0
+#define ScreenSaverActive 1
+
+/*****************************************************************
+ * HOSTS AND CONNECTIONS
+ *****************************************************************/
+
+/* for ChangeHosts */
+
+#define HostInsert		0
+#define HostDelete		1
+
+/* for ChangeAccessControl */
+
+#define EnableAccess		1
+#define DisableAccess		0
+
+/* Display classes  used in opening the connection
+ * Note that the statically allocated ones are even numbered and the
+ * dynamically changeable ones are odd numbered */
+
+#define StaticGray		0
+#define GrayScale		1
+#define StaticColor		2
+#define PseudoColor		3
+#define TrueColor		4
+#define DirectColor		5
+
+
+/* Byte order  used in imageByteOrder and bitmapBitOrder */
+
+#define LSBFirst		0
+#define MSBFirst		1
+
+#if defined(MAC_OSX_TK)
+#   undef Cursor
+#   undef Region
+#endif
+
+#endif /* X_H */
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/include/X11/Xfuncproto.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/include/X11/Xfuncproto.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/include/X11/Xfuncproto.h	(revision 3762)
@@ -0,0 +1,60 @@
+/* $XConsortium: Xfuncproto.h,v 1.7 91/05/13 20:49:21 rws Exp $ */
+/*
+ * Copyright 1989, 1991 by the Massachusetts Institute of Technology
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted, provided
+ * that the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of M.I.T. not be used in advertising
+ * or publicity pertaining to distribution of the software without specific,
+ * written prior permission. M.I.T. makes no representations about the
+ * suitability of this software for any purpose.  It is provided "as is"
+ * without express or implied warranty.
+ *
+ */
+
+/* Definitions to make function prototypes manageable */
+
+#ifndef _XFUNCPROTO_H_
+#define _XFUNCPROTO_H_
+
+#ifndef NeedFunctionPrototypes
+#define NeedFunctionPrototypes 1
+#endif /* NeedFunctionPrototypes */
+
+#ifndef NeedVarargsPrototypes
+#define NeedVarargsPrototypes 0
+#endif /* NeedVarargsPrototypes */
+
+#if NeedFunctionPrototypes
+
+#ifndef NeedNestedPrototypes
+#define NeedNestedPrototypes 1
+#endif /* NeedNestedPrototypes */
+
+#ifndef _Xconst
+#define _Xconst const
+#endif /* _Xconst */
+
+#ifndef NeedWidePrototypes
+#ifdef NARROWPROTO
+#define NeedWidePrototypes 0
+#else
+#define NeedWidePrototypes 1		/* default to make interropt. easier */
+#endif
+#endif /* NeedWidePrototypes */
+
+#endif /* NeedFunctionPrototypes */
+
+#ifdef __cplusplus
+#define _XFUNCPROTOBEGIN extern "C" {
+#define _XFUNCPROTOEND }
+#endif
+
+#ifndef _XFUNCPROTOBEGIN
+#define _XFUNCPROTOBEGIN
+#define _XFUNCPROTOEND
+#endif /* _XFUNCPROTOBEGIN */
+
+#endif /* _XFUNCPROTO_H_ */
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/include/X11/Xatom.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/include/X11/Xatom.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/include/X11/Xatom.h	(revision 3762)
@@ -0,0 +1,79 @@
+#ifndef XATOM_H
+#define XATOM_H 1
+
+/* THIS IS A GENERATED FILE
+ *
+ * Do not change!  Changing this file implies a protocol change!
+ */
+
+#define XA_PRIMARY ((Atom) 1)
+#define XA_SECONDARY ((Atom) 2)
+#define XA_ARC ((Atom) 3)
+#define XA_ATOM ((Atom) 4)
+#define XA_BITMAP ((Atom) 5)
+#define XA_CARDINAL ((Atom) 6)
+#define XA_COLORMAP ((Atom) 7)
+#define XA_CURSOR ((Atom) 8)
+#define XA_CUT_BUFFER0 ((Atom) 9)
+#define XA_CUT_BUFFER1 ((Atom) 10)
+#define XA_CUT_BUFFER2 ((Atom) 11)
+#define XA_CUT_BUFFER3 ((Atom) 12)
+#define XA_CUT_BUFFER4 ((Atom) 13)
+#define XA_CUT_BUFFER5 ((Atom) 14)
+#define XA_CUT_BUFFER6 ((Atom) 15)
+#define XA_CUT_BUFFER7 ((Atom) 16)
+#define XA_DRAWABLE ((Atom) 17)
+#define XA_FONT ((Atom) 18)
+#define XA_INTEGER ((Atom) 19)
+#define XA_PIXMAP ((Atom) 20)
+#define XA_POINT ((Atom) 21)
+#define XA_RECTANGLE ((Atom) 22)
+#define XA_RESOURCE_MANAGER ((Atom) 23)
+#define XA_RGB_COLOR_MAP ((Atom) 24)
+#define XA_RGB_BEST_MAP ((Atom) 25)
+#define XA_RGB_BLUE_MAP ((Atom) 26)
+#define XA_RGB_DEFAULT_MAP ((Atom) 27)
+#define XA_RGB_GRAY_MAP ((Atom) 28)
+#define XA_RGB_GREEN_MAP ((Atom) 29)
+#define XA_RGB_RED_MAP ((Atom) 30)
+#define XA_STRING ((Atom) 31)
+#define XA_VISUALID ((Atom) 32)
+#define XA_WINDOW ((Atom) 33)
+#define XA_WM_COMMAND ((Atom) 34)
+#define XA_WM_HINTS ((Atom) 35)
+#define XA_WM_CLIENT_MACHINE ((Atom) 36)
+#define XA_WM_ICON_NAME ((Atom) 37)
+#define XA_WM_ICON_SIZE ((Atom) 38)
+#define XA_WM_NAME ((Atom) 39)
+#define XA_WM_NORMAL_HINTS ((Atom) 40)
+#define XA_WM_SIZE_HINTS ((Atom) 41)
+#define XA_WM_ZOOM_HINTS ((Atom) 42)
+#define XA_MIN_SPACE ((Atom) 43)
+#define XA_NORM_SPACE ((Atom) 44)
+#define XA_MAX_SPACE ((Atom) 45)
+#define XA_END_SPACE ((Atom) 46)
+#define XA_SUPERSCRIPT_X ((Atom) 47)
+#define XA_SUPERSCRIPT_Y ((Atom) 48)
+#define XA_SUBSCRIPT_X ((Atom) 49)
+#define XA_SUBSCRIPT_Y ((Atom) 50)
+#define XA_UNDERLINE_POSITION ((Atom) 51)
+#define XA_UNDERLINE_THICKNESS ((Atom) 52)
+#define XA_STRIKEOUT_ASCENT ((Atom) 53)
+#define XA_STRIKEOUT_DESCENT ((Atom) 54)
+#define XA_ITALIC_ANGLE ((Atom) 55)
+#define XA_X_HEIGHT ((Atom) 56)
+#define XA_QUAD_WIDTH ((Atom) 57)
+#define XA_WEIGHT ((Atom) 58)
+#define XA_POINT_SIZE ((Atom) 59)
+#define XA_RESOLUTION ((Atom) 60)
+#define XA_COPYRIGHT ((Atom) 61)
+#define XA_NOTICE ((Atom) 62)
+#define XA_FONT_NAME ((Atom) 63)
+#define XA_FAMILY_NAME ((Atom) 64)
+#define XA_FULL_NAME ((Atom) 65)
+#define XA_CAP_HEIGHT ((Atom) 66)
+#define XA_WM_CLASS ((Atom) 67)
+#define XA_WM_TRANSIENT_FOR ((Atom) 68)
+
+#define XA_LAST_PREDEFINED ((Atom) 68)
+#endif /* XATOM_H */
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/include/X11/HPkeysym.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/include/X11/HPkeysym.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/include/X11/HPkeysym.h	(revision 3762)
@@ -0,0 +1,164 @@
+/*
+
+Copyright 1987, 1998  The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+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 OPEN GROUP 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.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+
+Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts,
+
+                        All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the names of Hewlett Packard
+or Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL BE LIABLE FOR 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.
+
+HEWLETT-PACKARD MAKES NO WARRANTY OF ANY KIND WITH REGARD
+TO THIS SOFWARE, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  Hewlett-Packard shall not be liable for errors
+contained herein or direct, indirect, special, incidental or
+consequential damages in connection with the furnishing,
+performance, or use of this material.
+
+*/
+
+#ifndef _HPKEYSYM_H
+
+#define _HPKEYSYM_H
+
+#define hpXK_ClearLine		0x1000FF6F
+#define hpXK_InsertLine		0x1000FF70
+#define hpXK_DeleteLine		0x1000FF71
+#define hpXK_InsertChar		0x1000FF72
+#define hpXK_DeleteChar		0x1000FF73
+#define hpXK_BackTab		0x1000FF74
+#define hpXK_KP_BackTab		0x1000FF75
+#define hpXK_Modelock1		0x1000FF48
+#define hpXK_Modelock2		0x1000FF49
+#define hpXK_Reset		0x1000FF6C
+#define hpXK_System		0x1000FF6D
+#define hpXK_User		0x1000FF6E
+#define hpXK_mute_acute		0x100000A8
+#define hpXK_mute_grave		0x100000A9
+#define hpXK_mute_asciicircum	0x100000AA
+#define hpXK_mute_diaeresis	0x100000AB
+#define hpXK_mute_asciitilde	0x100000AC
+#define hpXK_lira		0x100000AF
+#define hpXK_guilder		0x100000BE
+#define hpXK_Ydiaeresis		0x100000EE
+#define hpXK_IO			0x100000EE
+#define hpXK_longminus		0x100000F6
+#define hpXK_block		0x100000FC
+
+
+#ifndef _OSF_Keysyms
+#define _OSF_Keysyms
+
+#define osfXK_Copy		0x1004FF02
+#define osfXK_Cut		0x1004FF03
+#define osfXK_Paste		0x1004FF04
+#define osfXK_BackTab		0x1004FF07
+#define osfXK_BackSpace		0x1004FF08
+#define osfXK_Clear		0x1004FF0B
+#define osfXK_Escape		0x1004FF1B
+#define osfXK_AddMode		0x1004FF31
+#define osfXK_PrimaryPaste	0x1004FF32
+#define osfXK_QuickPaste	0x1004FF33
+#define osfXK_PageLeft		0x1004FF40
+#define osfXK_PageUp		0x1004FF41
+#define osfXK_PageDown		0x1004FF42
+#define osfXK_PageRight		0x1004FF43
+#define osfXK_Activate		0x1004FF44
+#define osfXK_MenuBar		0x1004FF45
+#define osfXK_Left		0x1004FF51
+#define osfXK_Up		0x1004FF52
+#define osfXK_Right		0x1004FF53
+#define osfXK_Down		0x1004FF54
+#define osfXK_EndLine		0x1004FF57
+#define osfXK_BeginLine		0x1004FF58
+#define osfXK_EndData		0x1004FF59
+#define osfXK_BeginData		0x1004FF5A
+#define osfXK_PrevMenu		0x1004FF5B
+#define osfXK_NextMenu		0x1004FF5C
+#define osfXK_PrevField		0x1004FF5D
+#define osfXK_NextField		0x1004FF5E
+#define osfXK_Select		0x1004FF60
+#define osfXK_Insert		0x1004FF63
+#define osfXK_Undo		0x1004FF65
+#define osfXK_Menu		0x1004FF67
+#define osfXK_Cancel		0x1004FF69
+#define osfXK_Help		0x1004FF6A
+#define osfXK_SelectAll		0x1004FF71
+#define osfXK_DeselectAll	0x1004FF72
+#define osfXK_Reselect		0x1004FF73
+#define osfXK_Extend		0x1004FF74
+#define osfXK_Restore		0x1004FF78
+#define osfXK_Delete		0x1004FFFF
+
+#endif /* _OSF_Keysyms */
+
+
+/**************************************************************
+ * The use of the following macros is deprecated.
+ * They are listed below only for backwards compatibility.
+ */
+#define XK_Reset                0x1000FF6C
+#define XK_System               0x1000FF6D
+#define XK_User                 0x1000FF6E
+#define XK_ClearLine            0x1000FF6F
+#define XK_InsertLine           0x1000FF70
+#define XK_DeleteLine           0x1000FF71
+#define XK_InsertChar           0x1000FF72
+#define XK_DeleteChar           0x1000FF73
+#define XK_BackTab              0x1000FF74
+#define XK_KP_BackTab           0x1000FF75
+#define XK_Ext16bit_L           0x1000FF76
+#define XK_Ext16bit_R           0x1000FF77
+#define XK_mute_acute           0x100000a8
+#define XK_mute_grave           0x100000a9
+#define XK_mute_asciicircum     0x100000aa
+#define XK_mute_diaeresis       0x100000ab
+#define XK_mute_asciitilde      0x100000ac
+#define XK_lira                 0x100000af
+#define XK_guilder              0x100000be
+#ifndef XK_Ydiaeresis
+#define XK_Ydiaeresis           0x100000ee
+#endif
+#define XK_IO                   0x100000ee
+#define XK_longminus            0x100000f6
+#define XK_block                0x100000fc
+
+#endif /* _HPKEYSYM_H */
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/include/X11/DECkeysym.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/include/X11/DECkeysym.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/include/X11/DECkeysym.h	(revision 3762)
@@ -0,0 +1,65 @@
+/***********************************************************
+
+Copyright 1988, 1998  The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+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
+OPEN GROUP 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.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+
+Copyright 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
+
+                        All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL BE LIABLE FOR 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.
+
+******************************************************************/
+
+/*
+ * DEC private keysyms
+ * (29th bit set)
+ */
+
+/* two-key compose sequence initiators, chosen to map to Latin1 characters */
+
+#define DXK_ring_accent         0x1000FEB0
+#define DXK_circumflex_accent   0x1000FE5E
+#define DXK_cedilla_accent      0x1000FE2C
+#define DXK_acute_accent        0x1000FE27
+#define DXK_grave_accent        0x1000FE60
+#define DXK_tilde               0x1000FE7E
+#define DXK_diaeresis           0x1000FE22
+
+/* special keysym for LK2** "Remove" key on editing keypad */
+
+#define DXK_Remove	0x1000FF00   /* Remove */
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/include/X11/XF86keysym.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/include/X11/XF86keysym.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/include/X11/XF86keysym.h	(revision 3762)
@@ -0,0 +1,230 @@
+/*
+ * XFree86 vendor specific keysyms.
+ *
+ * The XFree86 keysym range is 0x10080001 - 0x1008FFFF.
+ *
+ * X.Org will not be adding to the XF86 set of keysyms, though they have
+ * been adopted and are considered a "standard" part of X keysym definitions.
+ * XFree86 never properly commented these keysyms, so we have done our
+ * best to explain the semantic meaning of these keys.
+ *
+ * XFree86 has removed their mail archives of the period, that might have
+ * shed more light on some of these definitions. Until/unless we resurrect
+ * these archives, these are from memory and usage.
+ */
+
+/*
+ * ModeLock
+ *
+ * This one is old, and not really used any more since XKB offers this
+ * functionality.
+ */
+
+#define XF86XK_ModeLock		0x1008FF01	/* Mode Switch Lock */
+
+/* Backlight controls. */
+#define XF86XK_MonBrightnessUp    0x1008FF02  /* Monitor/panel brightness */
+#define XF86XK_MonBrightnessDown  0x1008FF03  /* Monitor/panel brightness */
+#define XF86XK_KbdLightOnOff      0x1008FF04  /* Keyboards may be lit     */
+#define XF86XK_KbdBrightnessUp    0x1008FF05  /* Keyboards may be lit     */
+#define XF86XK_KbdBrightnessDown  0x1008FF06  /* Keyboards may be lit     */
+#define XF86XK_MonBrightnessCycle 0x1008FF07  /* Monitor/panel brightness */
+
+/*
+ * Keys found on some "Internet" keyboards.
+ */
+#define XF86XK_Standby		0x1008FF10   /* System into standby mode   */
+#define XF86XK_AudioLowerVolume	0x1008FF11   /* Volume control down        */
+#define XF86XK_AudioMute	0x1008FF12   /* Mute sound from the system */
+#define XF86XK_AudioRaiseVolume	0x1008FF13   /* Volume control up          */
+#define XF86XK_AudioPlay	0x1008FF14   /* Start playing of audio >   */
+#define XF86XK_AudioStop	0x1008FF15   /* Stop playing audio         */
+#define XF86XK_AudioPrev	0x1008FF16   /* Previous track             */
+#define XF86XK_AudioNext	0x1008FF17   /* Next track                 */
+#define XF86XK_HomePage		0x1008FF18   /* Display user's home page   */
+#define XF86XK_Mail		0x1008FF19   /* Invoke user's mail program */
+#define XF86XK_Start		0x1008FF1A   /* Start application          */
+#define XF86XK_Search		0x1008FF1B   /* Search                     */
+#define XF86XK_AudioRecord	0x1008FF1C   /* Record audio application   */
+
+/* These are sometimes found on PDA's (e.g. Palm, PocketPC or elsewhere)   */
+#define XF86XK_Calculator	0x1008FF1D   /* Invoke calculator program  */
+#define XF86XK_Memo		0x1008FF1E   /* Invoke Memo taking program */
+#define XF86XK_ToDoList		0x1008FF1F   /* Invoke To Do List program  */
+#define XF86XK_Calendar		0x1008FF20   /* Invoke Calendar program    */
+#define XF86XK_PowerDown	0x1008FF21   /* Deep sleep the system      */
+#define XF86XK_ContrastAdjust	0x1008FF22   /* Adjust screen contrast     */
+#define XF86XK_RockerUp		0x1008FF23   /* Rocker switches exist up   */
+#define XF86XK_RockerDown	0x1008FF24   /* and down                   */
+#define XF86XK_RockerEnter	0x1008FF25   /* and let you press them     */
+
+/* Some more "Internet" keyboard symbols */
+#define XF86XK_Back		0x1008FF26   /* Like back on a browser     */
+#define XF86XK_Forward		0x1008FF27   /* Like forward on a browser  */
+#define XF86XK_Stop		0x1008FF28   /* Stop current operation     */
+#define XF86XK_Refresh		0x1008FF29   /* Refresh the page           */
+#define XF86XK_PowerOff		0x1008FF2A   /* Power off system entirely  */
+#define XF86XK_WakeUp		0x1008FF2B   /* Wake up system from sleep  */
+#define XF86XK_Eject            0x1008FF2C   /* Eject device (e.g. DVD)    */
+#define XF86XK_ScreenSaver      0x1008FF2D   /* Invoke screensaver         */
+#define XF86XK_WWW              0x1008FF2E   /* Invoke web browser         */
+#define XF86XK_Sleep            0x1008FF2F   /* Put system to sleep        */
+#define XF86XK_Favorites	0x1008FF30   /* Show favorite locations    */
+#define XF86XK_AudioPause	0x1008FF31   /* Pause audio playing        */
+#define XF86XK_AudioMedia	0x1008FF32   /* Launch media collection app */
+#define XF86XK_MyComputer	0x1008FF33   /* Display "My Computer" window */
+#define XF86XK_VendorHome	0x1008FF34   /* Display vendor home web site */
+#define XF86XK_LightBulb	0x1008FF35   /* Light bulb keys exist       */
+#define XF86XK_Shop		0x1008FF36   /* Display shopping web site   */
+#define XF86XK_History		0x1008FF37   /* Show history of web surfing */
+#define XF86XK_OpenURL		0x1008FF38   /* Open selected URL           */
+#define XF86XK_AddFavorite	0x1008FF39   /* Add URL to favorites list   */
+#define XF86XK_HotLinks		0x1008FF3A   /* Show "hot" links            */
+#define XF86XK_BrightnessAdjust	0x1008FF3B   /* Invoke brightness adj. UI   */
+#define XF86XK_Finance		0x1008FF3C   /* Display financial site      */
+#define XF86XK_Community	0x1008FF3D   /* Display user's community    */
+#define XF86XK_AudioRewind	0x1008FF3E   /* "rewind" audio track        */
+#define XF86XK_BackForward	0x1008FF3F   /* ??? */
+#define XF86XK_Launch0		0x1008FF40   /* Launch Application          */
+#define XF86XK_Launch1		0x1008FF41   /* Launch Application          */
+#define XF86XK_Launch2		0x1008FF42   /* Launch Application          */
+#define XF86XK_Launch3		0x1008FF43   /* Launch Application          */
+#define XF86XK_Launch4		0x1008FF44   /* Launch Application          */
+#define XF86XK_Launch5		0x1008FF45   /* Launch Application          */
+#define XF86XK_Launch6		0x1008FF46   /* Launch Application          */
+#define XF86XK_Launch7		0x1008FF47   /* Launch Application          */
+#define XF86XK_Launch8		0x1008FF48   /* Launch Application          */
+#define XF86XK_Launch9		0x1008FF49   /* Launch Application          */
+#define XF86XK_LaunchA		0x1008FF4A   /* Launch Application          */
+#define XF86XK_LaunchB		0x1008FF4B   /* Launch Application          */
+#define XF86XK_LaunchC		0x1008FF4C   /* Launch Application          */
+#define XF86XK_LaunchD		0x1008FF4D   /* Launch Application          */
+#define XF86XK_LaunchE		0x1008FF4E   /* Launch Application          */
+#define XF86XK_LaunchF		0x1008FF4F   /* Launch Application          */
+
+#define XF86XK_ApplicationLeft	0x1008FF50   /* switch to application, left */
+#define XF86XK_ApplicationRight	0x1008FF51   /* switch to application, right*/
+#define XF86XK_Book		0x1008FF52   /* Launch bookreader           */
+#define XF86XK_CD		0x1008FF53   /* Launch CD/DVD player        */
+#define XF86XK_Calculater	0x1008FF54   /* Launch Calculater           */
+#define XF86XK_Clear		0x1008FF55   /* Clear window, screen        */
+#define XF86XK_Close		0x1008FF56   /* Close window                */
+#define XF86XK_Copy		0x1008FF57   /* Copy selection              */
+#define XF86XK_Cut		0x1008FF58   /* Cut selection               */
+#define XF86XK_Display		0x1008FF59   /* Output switch key           */
+#define XF86XK_DOS		0x1008FF5A   /* Launch DOS (emulation)      */
+#define XF86XK_Documents	0x1008FF5B   /* Open documents window       */
+#define XF86XK_Excel		0x1008FF5C   /* Launch spread sheet         */
+#define XF86XK_Explorer		0x1008FF5D   /* Launch file explorer        */
+#define XF86XK_Game		0x1008FF5E   /* Launch game                 */
+#define XF86XK_Go		0x1008FF5F   /* Go to URL                   */
+#define XF86XK_iTouch		0x1008FF60   /* Logitech iTouch- don't use  */
+#define XF86XK_LogOff		0x1008FF61   /* Log off system              */
+#define XF86XK_Market		0x1008FF62   /* ??                          */
+#define XF86XK_Meeting		0x1008FF63   /* enter meeting in calendar   */
+#define XF86XK_MenuKB		0x1008FF65   /* distinguish keyboard from PB */
+#define XF86XK_MenuPB		0x1008FF66   /* distinguish PB from keyboard */
+#define XF86XK_MySites		0x1008FF67   /* Favourites                  */
+#define XF86XK_New		0x1008FF68   /* New (folder, document...    */
+#define XF86XK_News		0x1008FF69   /* News                        */
+#define XF86XK_OfficeHome	0x1008FF6A   /* Office home (old Staroffice)*/
+#define XF86XK_Open		0x1008FF6B   /* Open                        */
+#define XF86XK_Option		0x1008FF6C   /* ?? */
+#define XF86XK_Paste		0x1008FF6D   /* Paste                       */
+#define XF86XK_Phone		0x1008FF6E   /* Launch phone; dial number   */
+#define XF86XK_Q		0x1008FF70   /* Compaq's Q - don't use      */
+#define XF86XK_Reply		0x1008FF72   /* Reply e.g., mail            */
+#define XF86XK_Reload		0x1008FF73   /* Reload web page, file, etc. */
+#define XF86XK_RotateWindows	0x1008FF74   /* Rotate windows e.g. xrandr  */
+#define XF86XK_RotationPB	0x1008FF75   /* don't use                   */
+#define XF86XK_RotationKB	0x1008FF76   /* don't use                   */
+#define XF86XK_Save		0x1008FF77   /* Save (file, document, state */
+#define XF86XK_ScrollUp		0x1008FF78   /* Scroll window/contents up   */
+#define XF86XK_ScrollDown	0x1008FF79   /* Scrool window/contentd down */
+#define XF86XK_ScrollClick	0x1008FF7A   /* Use XKB mousekeys instead   */
+#define XF86XK_Send		0x1008FF7B   /* Send mail, file, object     */
+#define XF86XK_Spell		0x1008FF7C   /* Spell checker               */
+#define XF86XK_SplitScreen	0x1008FF7D   /* Split window or screen      */
+#define XF86XK_Support		0x1008FF7E   /* Get support (??)            */
+#define XF86XK_TaskPane		0x1008FF7F   /* Show tasks */
+#define XF86XK_Terminal		0x1008FF80   /* Launch terminal emulator    */
+#define XF86XK_Tools		0x1008FF81   /* toolbox of desktop/app.     */
+#define XF86XK_Travel		0x1008FF82   /* ?? */
+#define XF86XK_UserPB		0x1008FF84   /* ?? */
+#define XF86XK_User1KB		0x1008FF85   /* ?? */
+#define XF86XK_User2KB		0x1008FF86   /* ?? */
+#define XF86XK_Video		0x1008FF87   /* Launch video player       */
+#define XF86XK_WheelButton	0x1008FF88   /* button from a mouse wheel */
+#define XF86XK_Word		0x1008FF89   /* Launch word processor     */
+#define XF86XK_Xfer		0x1008FF8A
+#define XF86XK_ZoomIn		0x1008FF8B   /* zoom in view, map, etc.   */
+#define XF86XK_ZoomOut		0x1008FF8C   /* zoom out view, map, etc.  */
+
+#define XF86XK_Away		0x1008FF8D   /* mark yourself as away     */
+#define XF86XK_Messenger	0x1008FF8E   /* as in instant messaging   */
+#define XF86XK_WebCam		0x1008FF8F   /* Launch web camera app.    */
+#define XF86XK_MailForward	0x1008FF90   /* Forward in mail           */
+#define XF86XK_Pictures		0x1008FF91   /* Show pictures             */
+#define XF86XK_Music		0x1008FF92   /* Launch music application  */
+
+#define XF86XK_Battery		0x1008FF93   /* Display battery information */
+#define XF86XK_Bluetooth	0x1008FF94   /* Enable/disable Bluetooth    */
+#define XF86XK_WLAN		0x1008FF95   /* Enable/disable WLAN         */
+#define XF86XK_UWB		0x1008FF96   /* Enable/disable UWB	    */
+
+#define XF86XK_AudioForward	0x1008FF97   /* fast-forward audio track    */
+#define XF86XK_AudioRepeat	0x1008FF98   /* toggle repeat mode          */
+#define XF86XK_AudioRandomPlay	0x1008FF99   /* toggle shuffle mode         */
+#define XF86XK_Subtitle		0x1008FF9A   /* cycle through subtitle      */
+#define XF86XK_AudioCycleTrack	0x1008FF9B   /* cycle through audio tracks  */
+#define XF86XK_CycleAngle	0x1008FF9C   /* cycle through angles        */
+#define XF86XK_FrameBack	0x1008FF9D   /* video: go one frame back    */
+#define XF86XK_FrameForward	0x1008FF9E   /* video: go one frame forward */
+#define XF86XK_Time		0x1008FF9F   /* display, or shows an entry for time seeking */
+#define XF86XK_Select		0x1008FFA0   /* Select button on joypads and remotes */
+#define XF86XK_View		0x1008FFA1   /* Show a view options/properties */
+#define XF86XK_TopMenu		0x1008FFA2   /* Go to a top-level menu in a video */
+
+#define XF86XK_Red		0x1008FFA3   /* Red button                  */
+#define XF86XK_Green		0x1008FFA4   /* Green button                */
+#define XF86XK_Yellow		0x1008FFA5   /* Yellow button               */
+#define XF86XK_Blue             0x1008FFA6   /* Blue button                 */
+
+#define XF86XK_Suspend		0x1008FFA7   /* Sleep to RAM                */
+#define XF86XK_Hibernate	0x1008FFA8   /* Sleep to disk               */
+#define XF86XK_TouchpadToggle	0x1008FFA9   /* Toggle between touchpad/trackstick */
+#define XF86XK_TouchpadOn	0x1008FFB0   /* The touchpad got switched on */
+#define XF86XK_TouchpadOff	0x1008FFB1   /* The touchpad got switched off */
+
+#define XF86XK_AudioMicMute	0x1008FFB2   /* Mute the Mic from the system */
+
+#define XF86XK_Keyboard		0x1008FFB3   /* User defined keyboard related action */
+
+#define XF86XK_WWAN		0x1008FFB4   /* Toggle WWAN (LTE, UMTS, etc.) radio */
+#define XF86XK_RFKill		0x1008FFB5   /* Toggle radios on/off */
+
+#define XF86XK_AudioPreset	0x1008FFB6   /* Select equalizer preset, e.g. theatre-mode */
+
+#define XF86XK_RotationLockToggle 0x1008FFB7 /* Toggle screen rotation lock on/off */
+
+/* Keys for special action keys (hot keys) */
+/* Virtual terminals on some operating systems */
+#define XF86XK_Switch_VT_1	0x1008FE01
+#define XF86XK_Switch_VT_2	0x1008FE02
+#define XF86XK_Switch_VT_3	0x1008FE03
+#define XF86XK_Switch_VT_4	0x1008FE04
+#define XF86XK_Switch_VT_5	0x1008FE05
+#define XF86XK_Switch_VT_6	0x1008FE06
+#define XF86XK_Switch_VT_7	0x1008FE07
+#define XF86XK_Switch_VT_8	0x1008FE08
+#define XF86XK_Switch_VT_9	0x1008FE09
+#define XF86XK_Switch_VT_10	0x1008FE0A
+#define XF86XK_Switch_VT_11	0x1008FE0B
+#define XF86XK_Switch_VT_12	0x1008FE0C
+
+#define XF86XK_Ungrab		0x1008FE20   /* force ungrab               */
+#define XF86XK_ClearGrab	0x1008FE21   /* kill application with grab */
+#define XF86XK_Next_VMode	0x1008FE22   /* next video mode available  */
+#define XF86XK_Prev_VMode	0x1008FE23   /* prev. video mode available */
+#define XF86XK_LogWindowTree	0x1008FE24   /* print window tree to log   */
+#define XF86XK_LogGrabInfo	0x1008FE25   /* print all active grabs to log */
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/include/X11/Xlib.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/include/X11/Xlib.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/include/X11/Xlib.h	(revision 3762)
@@ -0,0 +1,1202 @@
+/* $XConsortium: Xlib.h,v 11.221 93/07/02 14:13:28 gildea Exp $ */
+/*
+ * Copyright 1985, 1986, 1987, 1991 by the Massachusetts Institute of Technology
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted, provided
+ * that the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of M.I.T. not be used in advertising
+ * or publicity pertaining to distribution of the software without specific,
+ * written prior permission. M.I.T. makes no representations about the
+ * suitability of this software for any purpose.  It is provided "as is"
+ * without express or implied warranty.
+ *
+ * X Window System is a Trademark of MIT.
+ *
+ */
+
+
+/*
+ *	Xlib.h - Header definition and support file for the C subroutine
+ *	interface library (Xlib) to the X Window System Protocol (V11).
+ *	Structures and symbols starting with "_" are private to the library.
+ */
+#ifndef _XLIB_H_
+#define _XLIB_H_
+
+#define XlibSpecificationRelease 5
+
+#if !defined(MAC_OSX_TK)
+#   include <X11/X.h>
+#endif
+#ifdef MAC_OSX_TK
+#   include <X11/X.h>
+#   define Cursor XCursor
+#   define Region XRegion
+#endif
+
+/* applications should not depend on these two headers being included! */
+#include <X11/Xfuncproto.h>
+
+#ifndef X_WCHAR
+#ifdef X_NOT_STDC_ENV
+#define X_WCHAR
+#endif
+#endif
+
+#ifndef X_WCHAR
+#include <stddef.h>
+#else
+/* replace this with #include or typedef appropriate for your system */
+typedef unsigned long wchar_t;
+#endif
+
+typedef char *XPointer;
+
+#define Bool int
+#if defined(MAC_OSX_TK)
+/* Use define rather than typedef, since may need to undefine this later */
+#define Status int
+#else
+typedef int Status;
+#endif
+#define True 1
+#define False 0
+
+#define QueuedAlready 0
+#define QueuedAfterReading 1
+#define QueuedAfterFlush 2
+
+#define ConnectionNumber(dpy) 	((dpy)->fd)
+#define RootWindow(dpy, scr) 	(((dpy)->screens[(scr)]).root)
+#define DefaultScreen(dpy) 	((dpy)->default_screen)
+#define DefaultRootWindow(dpy) 	(((dpy)->screens[(dpy)->default_screen]).root)
+#define DefaultVisual(dpy, scr) (((dpy)->screens[(scr)]).root_visual)
+#define DefaultGC(dpy, scr) 	(((dpy)->screens[(scr)]).default_gc)
+#define BlackPixel(dpy, scr) 	(((dpy)->screens[(scr)]).black_pixel)
+#define WhitePixel(dpy, scr) 	(((dpy)->screens[(scr)]).white_pixel)
+#define AllPlanes 		((unsigned long)~0L)
+#define QLength(dpy) 		((dpy)->qlen)
+#define DisplayWidth(dpy, scr) 	(((dpy)->screens[(scr)]).width)
+#define DisplayHeight(dpy, scr) (((dpy)->screens[(scr)]).height)
+#define DisplayWidthMM(dpy, scr)(((dpy)->screens[(scr)]).mwidth)
+#define DisplayHeightMM(dpy, scr)(((dpy)->screens[(scr)]).mheight)
+#define DisplayPlanes(dpy, scr) (((dpy)->screens[(scr)]).root_depth)
+#define DisplayCells(dpy, scr) 	(DefaultVisual((dpy), (scr))->map_entries)
+#define ScreenCount(dpy) 	((dpy)->nscreens)
+#define ServerVendor(dpy) 	((dpy)->vendor)
+#define ProtocolVersion(dpy) 	((dpy)->proto_major_version)
+#define ProtocolRevision(dpy) 	((dpy)->proto_minor_version)
+#define VendorRelease(dpy) 	((dpy)->release)
+#define DisplayString(dpy) 	((dpy)->display_name)
+#define DefaultDepth(dpy, scr) 	(((dpy)->screens[(scr)]).root_depth)
+#define DefaultColormap(dpy, scr)(((dpy)->screens[(scr)]).cmap)
+#define BitmapUnit(dpy) 	((dpy)->bitmap_unit)
+#define BitmapBitOrder(dpy) 	((dpy)->bitmap_bit_order)
+#define BitmapPad(dpy) 		((dpy)->bitmap_pad)
+#define ImageByteOrder(dpy) 	((dpy)->byte_order)
+#define NextRequest(dpy)	((dpy)->request + 1)
+#define LastKnownRequestProcessed(dpy)	((dpy)->request)
+
+/* macros for screen oriented applications (toolkit) */
+#define ScreenOfDisplay(dpy, scr)(&((dpy)->screens[(scr)]))
+#define DefaultScreenOfDisplay(dpy) (&((dpy)->screens[(dpy)->default_screen]))
+#define DisplayOfScreen(s)	((s)->display)
+#define RootWindowOfScreen(s)	((s)->root)
+#define BlackPixelOfScreen(s)	((s)->black_pixel)
+#define WhitePixelOfScreen(s)	((s)->white_pixel)
+#define DefaultColormapOfScreen(s)((s)->cmap)
+#define DefaultDepthOfScreen(s)	((s)->root_depth)
+#define DefaultGCOfScreen(s)	((s)->default_gc)
+#define DefaultVisualOfScreen(s)((s)->root_visual)
+#define WidthOfScreen(s)	((s)->width)
+#define HeightOfScreen(s)	((s)->height)
+#define WidthMMOfScreen(s)	((s)->mwidth)
+#define HeightMMOfScreen(s)	((s)->mheight)
+#define PlanesOfScreen(s)	((s)->root_depth)
+#define CellsOfScreen(s)	(DefaultVisualOfScreen((s))->map_entries)
+#define MinCmapsOfScreen(s)	((s)->min_maps)
+#define MaxCmapsOfScreen(s)	((s)->max_maps)
+#define DoesSaveUnders(s)	((s)->save_unders)
+#define DoesBackingStore(s)	((s)->backing_store)
+#define EventMaskOfScreen(s)	((s)->root_input_mask)
+
+/*
+ * Extensions need a way to hang private data on some structures.
+ */
+typedef struct _XExtData {
+	int number;		/* number returned by XRegisterExtension */
+	struct _XExtData *next;	/* next item on list of data for structure */
+	int (*free_private)();	/* called to free private storage */
+	XPointer private_data;	/* data private to this extension. */
+} XExtData;
+
+/*
+ * This file contains structures used by the extension mechanism.
+ */
+typedef struct {		/* public to extension, cannot be changed */
+	int extension;		/* extension number */
+	int major_opcode;	/* major op-code assigned by server */
+	int first_event;	/* first event number for the extension */
+	int first_error;	/* first error number for the extension */
+} XExtCodes;
+
+/*
+ * Data structure for retrieving info about pixmap formats.
+ */
+
+typedef struct {
+    int depth;
+    int bits_per_pixel;
+    int scanline_pad;
+} XPixmapFormatValues;
+
+
+/*
+ * Data structure for setting graphics context.
+ */
+typedef struct {
+	int function;		/* logical operation */
+	unsigned long plane_mask;/* plane mask */
+	unsigned long foreground;/* foreground pixel */
+	unsigned long background;/* background pixel */
+	int line_width;		/* line width */
+	int line_style;	 	/* LineSolid, LineOnOffDash, LineDoubleDash */
+	int cap_style;	  	/* CapNotLast, CapButt,
+				   CapRound, CapProjecting */
+	int join_style;	 	/* JoinMiter, JoinRound, JoinBevel */
+	int fill_style;	 	/* FillSolid, FillTiled,
+				   FillStippled, FillOpaeueStippled */
+	int fill_rule;	  	/* EvenOddRule, WindingRule */
+	int arc_mode;		/* ArcChord, ArcPieSlice */
+	Pixmap tile;		/* tile pixmap for tiling operations */
+	Pixmap stipple;		/* stipple 1 plane pixmap for stipping */
+	int ts_x_origin;	/* offset for tile or stipple operations */
+	int ts_y_origin;
+        Font font;	        /* default text font for text operations */
+	int subwindow_mode;     /* ClipByChildren, IncludeInferiors */
+	Bool graphics_exposures;/* boolean, should exposures be generated */
+	int clip_x_origin;	/* origin for clipping */
+	int clip_y_origin;
+	Pixmap clip_mask;	/* bitmap clipping; other calls for rects */
+	int dash_offset;	/* patterned/dashed line information */
+	char dashes;
+} XGCValues;
+
+/*
+ * Graphics context.  The contents of this structure are implementation
+ * dependent.  A GC should be treated as opaque by application code.
+ */
+
+typedef XGCValues *GC;
+
+/*
+ * Visual structure; contains information about colormapping possible.
+ */
+typedef struct {
+	XExtData *ext_data;	/* hook for extension to hang data */
+	VisualID visualid;	/* visual id of this visual */
+#if defined(__cplusplus) || defined(c_plusplus)
+	int c_class;		/* C++ class of screen (monochrome, etc.) */
+#else
+	int class;		/* class of screen (monochrome, etc.) */
+#endif
+	unsigned long red_mask, green_mask, blue_mask;	/* mask values */
+	int bits_per_rgb;	/* log base 2 of distinct color values */
+	int map_entries;	/* color map entries */
+} Visual;
+
+/*
+ * Depth structure; contains information for each possible depth.
+ */
+typedef struct {
+	int depth;		/* this depth (Z) of the depth */
+	int nvisuals;		/* number of Visual types at this depth */
+	Visual *visuals;	/* list of visuals possible at this depth */
+} Depth;
+
+/*
+ * Information about the screen.  The contents of this structure are
+ * implementation dependent.  A Screen should be treated as opaque
+ * by application code.
+ */
+typedef struct {
+	XExtData *ext_data;	/* hook for extension to hang data */
+	struct _XDisplay *display;/* back pointer to display structure */
+	Window root;		/* Root window id. */
+	int width, height;	/* width and height of screen */
+	int mwidth, mheight;	/* width and height of  in millimeters */
+	int ndepths;		/* number of depths possible */
+	Depth *depths;		/* list of allowable depths on the screen */
+	int root_depth;		/* bits per pixel */
+	Visual *root_visual;	/* root visual */
+	GC default_gc;		/* GC for the root root visual */
+	Colormap cmap;		/* default color map */
+	unsigned long white_pixel;
+	unsigned long black_pixel;	/* White and Black pixel values */
+	int max_maps, min_maps;	/* max and min color maps */
+	int backing_store;	/* Never, WhenMapped, Always */
+	Bool save_unders;
+	long root_input_mask;	/* initial root input mask */
+} Screen;
+
+/*
+ * Format structure; describes ZFormat data the screen will understand.
+ */
+typedef struct {
+	XExtData *ext_data;	/* hook for extension to hang data */
+	int depth;		/* depth of this image format */
+	int bits_per_pixel;	/* bits/pixel at this depth */
+	int scanline_pad;	/* scanline must padded to this multiple */
+} ScreenFormat;
+
+/*
+ * Data structure for setting window attributes.
+ */
+typedef struct {
+    Pixmap background_pixmap;	/* background or None or ParentRelative */
+    unsigned long background_pixel;	/* background pixel */
+    Pixmap border_pixmap;	/* border of the window */
+    unsigned long border_pixel;	/* border pixel value */
+    int bit_gravity;		/* one of bit gravity values */
+    int win_gravity;		/* one of the window gravity values */
+    int backing_store;		/* NotUseful, WhenMapped, Always */
+    unsigned long backing_planes;/* planes to be preseved if possible */
+    unsigned long backing_pixel;/* value to use in restoring planes */
+    Bool save_under;		/* should bits under be saved? (popups) */
+    long event_mask;		/* set of events that should be saved */
+    long do_not_propagate_mask;	/* set of events that should not propagate */
+    Bool override_redirect;	/* boolean value for override-redirect */
+    Colormap colormap;		/* color map to be associated with window */
+    Cursor cursor;		/* cursor to be displayed (or None) */
+} XSetWindowAttributes;
+
+typedef struct {
+    int x, y;			/* location of window */
+    int width, height;		/* width and height of window */
+    int border_width;		/* border width of window */
+    int depth;          	/* depth of window */
+    Visual *visual;		/* the associated visual structure */
+    Window root;        	/* root of screen containing window */
+#if defined(__cplusplus) || defined(c_plusplus)
+    int c_class;		/* C++ InputOutput, InputOnly*/
+#else
+    int class;			/* InputOutput, InputOnly*/
+#endif
+    int bit_gravity;		/* one of bit gravity values */
+    int win_gravity;		/* one of the window gravity values */
+    int backing_store;		/* NotUseful, WhenMapped, Always */
+    unsigned long backing_planes;/* planes to be preserved if possible */
+    unsigned long backing_pixel;/* value to be used when restoring planes */
+    Bool save_under;		/* boolean, should bits under be saved? */
+    Colormap colormap;		/* color map to be associated with window */
+    Bool map_installed;		/* boolean, is color map currently installed*/
+    int map_state;		/* IsUnmapped, IsUnviewable, IsViewable */
+    long all_event_masks;	/* set of events all people have interest in*/
+    long your_event_mask;	/* my event mask */
+    long do_not_propagate_mask; /* set of events that should not propagate */
+    Bool override_redirect;	/* boolean value for override-redirect */
+    Screen *screen;		/* back pointer to correct screen */
+} XWindowAttributes;
+
+/*
+ * Data structure for host setting; getting routines.
+ *
+ */
+
+typedef struct {
+	int family;		/* for example FamilyInternet */
+	int length;		/* length of address, in bytes */
+	char *address;		/* pointer to where to find the bytes */
+} XHostAddress;
+
+/*
+ * Data structure for "image" data, used by image manipulation routines.
+ */
+typedef struct _XImage {
+    int width, height;		/* size of image */
+    int xoffset;		/* number of pixels offset in X direction */
+    int format;			/* XYBitmap, XYPixmap, ZPixmap */
+    char *data;			/* pointer to image data */
+    int byte_order;		/* data byte order, LSBFirst, MSBFirst */
+    int bitmap_unit;		/* quant. of scanline 8, 16, 32 */
+    int bitmap_bit_order;	/* LSBFirst, MSBFirst */
+    int bitmap_pad;		/* 8, 16, 32 either XY or ZPixmap */
+    int depth;			/* depth of image */
+    int bytes_per_line;		/* accelarator to next line */
+    int bits_per_pixel;		/* bits per pixel (ZPixmap) */
+    unsigned long red_mask;	/* bits in z arrangment */
+    unsigned long green_mask;
+    unsigned long blue_mask;
+    XPointer obdata;		/* hook for the object routines to hang on */
+    struct funcs {		/* image manipulation routines */
+	struct _XImage *(*create_image)();
+#if NeedFunctionPrototypes
+	int (*destroy_image)        (struct _XImage *);
+	unsigned long (*get_pixel)  (struct _XImage *, int, int);
+	int (*put_pixel)            (struct _XImage *, int, int, unsigned long);
+	struct _XImage *(*sub_image)(struct _XImage *, int, int, unsigned int, unsigned int);
+	int (*add_pixel)            (struct _XImage *, long);
+#else
+	int (*destroy_image)();
+	unsigned long (*get_pixel)();
+	int (*put_pixel)();
+	struct _XImage *(*sub_image)();
+	int (*add_pixel)();
+#endif
+	} f;
+} XImage;
+
+/*
+ * Data structure for XReconfigureWindow
+ */
+typedef struct {
+    int x, y;
+    int width, height;
+    int border_width;
+    Window sibling;
+    int stack_mode;
+} XWindowChanges;
+
+/*
+ * Data structure used by color operations
+ */
+typedef struct {
+	unsigned long pixel;
+	unsigned short red, green, blue;
+	char flags;  /* do_red, do_green, do_blue */
+	char pad;
+} XColor;
+
+/*
+ * Data structures for graphics operations.  On most machines, these are
+ * congruent with the wire protocol structures, so reformatting the data
+ * can be avoided on these architectures.
+ */
+typedef struct {
+    short x1, y1, x2, y2;
+} XSegment;
+
+typedef struct {
+    short x, y;
+} XPoint;
+
+typedef struct {
+    short x, y;
+    unsigned short width, height;
+} XRectangle;
+
+typedef struct {
+    short x, y;
+    unsigned short width, height;
+    short angle1, angle2;
+} XArc;
+
+
+/* Data structure for XChangeKeyboardControl */
+
+typedef struct {
+        int key_click_percent;
+        int bell_percent;
+        int bell_pitch;
+        int bell_duration;
+        int led;
+        int led_mode;
+        int key;
+        int auto_repeat_mode;   /* On, Off, Default */
+} XKeyboardControl;
+
+/* Data structure for XGetKeyboardControl */
+
+typedef struct {
+        int key_click_percent;
+	int bell_percent;
+	unsigned int bell_pitch, bell_duration;
+	unsigned long led_mask;
+	int global_auto_repeat;
+	char auto_repeats[32];
+} XKeyboardState;
+
+/* Data structure for XGetMotionEvents.  */
+
+typedef struct {
+        Time time;
+	short x, y;
+} XTimeCoord;
+
+/* Data structure for X{Set,Get}ModifierMapping */
+
+typedef struct {
+ 	int max_keypermod;	/* The server's max # of keys per modifier */
+ 	KeyCode *modifiermap;	/* An 8 by max_keypermod array of modifiers */
+} XModifierKeymap;
+
+
+/*
+ * Display datatype maintaining display specific data.
+ * The contents of this structure are implementation dependent.
+ * A Display should be treated as opaque by application code.
+ */
+typedef struct _XDisplay {
+	XExtData *ext_data;	/* hook for extension to hang data */
+	struct _XFreeFuncs *free_funcs; /* internal free functions */
+	int fd;			/* Network socket. */
+	int conn_checker;         /* ugly thing used by _XEventsQueued */
+	int proto_major_version;/* maj. version of server's X protocol */
+	int proto_minor_version;/* minor version of servers X protocol */
+	char *vendor;		/* vendor of the server hardware */
+        XID resource_base;	/* resource ID base */
+	XID resource_mask;	/* resource ID mask bits */
+	XID resource_id;	/* allocator current ID */
+	int resource_shift;	/* allocator shift to correct bits */
+	XID (*resource_alloc)(); /* allocator function */
+	int byte_order;		/* screen byte order, LSBFirst, MSBFirst */
+	int bitmap_unit;	/* padding and data requirements */
+	int bitmap_pad;		/* padding requirements on bitmaps */
+	int bitmap_bit_order;	/* LeastSignificant or MostSignificant */
+	int nformats;		/* number of pixmap formats in list */
+	ScreenFormat *pixmap_format;	/* pixmap format list */
+	int vnumber;		/* Xlib's X protocol version number. */
+	int release;		/* release of the server */
+	struct _XSQEvent *head, *tail;	/* Input event queue. */
+	int qlen;		/* Length of input event queue */
+	unsigned long request;	/* sequence number of last request. */
+	char *last_req;		/* beginning of last request, or dummy */
+	char *buffer;		/* Output buffer starting address. */
+	char *bufptr;		/* Output buffer index pointer. */
+	char *bufmax;		/* Output buffer maximum+1 address. */
+	unsigned max_request_size; /* maximum number 32 bit words in request*/
+	struct _XrmHashBucketRec *db;
+	int (*synchandler)();	/* Synchronization handler */
+	char *display_name;	/* "host:display" string used on this connect*/
+	int default_screen;	/* default screen for operations */
+	int nscreens;		/* number of screens on this server*/
+	Screen *screens;	/* pointer to list of screens */
+	unsigned long motion_buffer;	/* size of motion buffer */
+	unsigned long flags;	/* internal connection flags */
+	int min_keycode;	/* minimum defined keycode */
+	int max_keycode;	/* maximum defined keycode */
+	KeySym *keysyms;	/* This server's keysyms */
+	XModifierKeymap *modifiermap;	/* This server's modifier keymap */
+	int keysyms_per_keycode;/* number of rows */
+	char *xdefaults;	/* contents of defaults from server */
+	char *scratch_buffer;	/* place to hang scratch buffer */
+	unsigned long scratch_length;	/* length of scratch buffer */
+	int ext_number;		/* extension number on this display */
+	struct _XExten *ext_procs; /* extensions initialized on this display */
+	/*
+	 * the following can be fixed size, as the protocol defines how
+	 * much address space is available.
+	 * While this could be done using the extension vector, there
+	 * may be MANY events processed, so a search through the extension
+	 * list to find the right procedure for each event might be
+	 * expensive if many extensions are being used.
+	 */
+	Bool (*event_vec[128])();  /* vector for wire to event */
+	Status (*wire_vec[128])(); /* vector for event to wire */
+	KeySym lock_meaning;	   /* for XLookupString */
+	struct _XLockInfo *lock;   /* multi-thread state, display lock */
+	struct _XInternalAsync *async_handlers; /* for internal async */
+	unsigned long bigreq_size; /* max size of big requests */
+	struct _XLockPtrs *lock_fns; /* pointers to threads functions */
+	/* things above this line should not move, for binary compatibility */
+	struct _XKeytrans *key_bindings; /* for XLookupString */
+	Font cursor_font;	   /* for XCreateFontCursor */
+	struct _XDisplayAtoms *atoms; /* for XInternAtom */
+	unsigned int mode_switch;  /* keyboard group modifiers */
+	struct _XContextDB *context_db; /* context database */
+	Bool (**error_vec)();      /* vector for wire to error */
+	/*
+	 * Xcms information
+	 */
+	struct {
+	   XPointer defaultCCCs;  /* pointer to an array of default XcmsCCC */
+	   XPointer clientCmaps;  /* pointer to linked list of XcmsCmapRec */
+	   XPointer perVisualIntensityMaps;
+				  /* linked list of XcmsIntensityMap */
+	} cms;
+	struct _XIMFilter *im_filters;
+	struct _XSQEvent *qfree; /* unallocated event queue elements */
+	unsigned long next_event_serial_num; /* inserted into next queue elt */
+	int (*savedsynchandler)(); /* user synchandler when Xlib usurps */
+} Display;
+
+#if NeedFunctionPrototypes	/* prototypes require event type definitions */
+#undef _XEVENT_
+#endif
+#ifndef _XEVENT_
+
+#define XMaxTransChars 7
+
+/*
+ * Definitions of specific events.
+ */
+typedef struct {
+	int type;		/* of event */
+	unsigned long serial;	/* # of last request processed by server */
+	Bool send_event;	/* true if this came from a SendEvent request */
+	Display *display;	/* Display the event was read from */
+	Window window;	        /* "event" window it is reported relative to */
+	Window root;	        /* root window that the event occurred on */
+	Window subwindow;	/* child window */
+	Time time;		/* milliseconds */
+	int x, y;		/* pointer x, y coordinates in event window */
+	int x_root, y_root;	/* coordinates relative to root */
+	unsigned int state;	/* key or button mask */
+	unsigned int keycode;	/* detail */
+	Bool same_screen;	/* same screen flag */
+} XKeyEvent;
+typedef XKeyEvent XKeyPressedEvent;
+typedef XKeyEvent XKeyReleasedEvent;
+
+typedef struct {
+	int type;		/* of event */
+	unsigned long serial;	/* # of last request processed by server */
+	Bool send_event;	/* true if this came from a SendEvent request */
+	Display *display;	/* Display the event was read from */
+	Window window;	        /* "event" window it is reported relative to */
+	Window root;	        /* root window that the event occurred on */
+	Window subwindow;	/* child window */
+	Time time;		/* milliseconds */
+	int x, y;		/* pointer x, y coordinates in event window */
+	int x_root, y_root;	/* coordinates relative to root */
+	unsigned int state;	/* key or button mask */
+	unsigned int button;	/* detail */
+	Bool same_screen;	/* same screen flag */
+} XButtonEvent;
+typedef XButtonEvent XButtonPressedEvent;
+typedef XButtonEvent XButtonReleasedEvent;
+
+typedef struct {
+	int type;		/* of event */
+	unsigned long serial;	/* # of last request processed by server */
+	Bool send_event;	/* true if this came from a SendEvent request */
+	Display *display;	/* Display the event was read from */
+	Window window;	        /* "event" window reported relative to */
+	Window root;	        /* root window that the event occurred on */
+	Window subwindow;	/* child window */
+	Time time;		/* milliseconds */
+	int x, y;		/* pointer x, y coordinates in event window */
+	int x_root, y_root;	/* coordinates relative to root */
+	unsigned int state;	/* key or button mask */
+	char is_hint;		/* detail */
+	Bool same_screen;	/* same screen flag */
+} XMotionEvent;
+typedef XMotionEvent XPointerMovedEvent;
+
+typedef struct {
+	int type;		/* of event */
+	unsigned long serial;	/* # of last request processed by server */
+	Bool send_event;	/* true if this came from a SendEvent request */
+	Display *display;	/* Display the event was read from */
+	Window window;	        /* "event" window reported relative to */
+	Window root;	        /* root window that the event occurred on */
+	Window subwindow;	/* child window */
+	Time time;		/* milliseconds */
+	int x, y;		/* pointer x, y coordinates in event window */
+	int x_root, y_root;	/* coordinates relative to root */
+	int mode;		/* NotifyNormal, NotifyGrab, NotifyUngrab */
+	int detail;
+	/*
+	 * NotifyAncestor, NotifyVirtual, NotifyInferior,
+	 * NotifyNonlinear,NotifyNonlinearVirtual
+	 */
+	Bool same_screen;	/* same screen flag */
+	Bool focus;		/* boolean focus */
+	unsigned int state;	/* key or button mask */
+} XCrossingEvent;
+typedef XCrossingEvent XEnterWindowEvent;
+typedef XCrossingEvent XLeaveWindowEvent;
+
+typedef struct {
+	int type;		/* FocusIn or FocusOut */
+	unsigned long serial;	/* # of last request processed by server */
+	Bool send_event;	/* true if this came from a SendEvent request */
+	Display *display;	/* Display the event was read from */
+	Window window;		/* window of event */
+	int mode;		/* NotifyNormal, NotifyGrab, NotifyUngrab */
+	int detail;
+	/*
+	 * NotifyAncestor, NotifyVirtual, NotifyInferior,
+	 * NotifyNonlinear,NotifyNonlinearVirtual, NotifyPointer,
+	 * NotifyPointerRoot, NotifyDetailNone
+	 */
+} XFocusChangeEvent;
+typedef XFocusChangeEvent XFocusInEvent;
+typedef XFocusChangeEvent XFocusOutEvent;
+
+/* generated on EnterWindow and FocusIn  when KeyMapState selected */
+typedef struct {
+	int type;
+	unsigned long serial;	/* # of last request processed by server */
+	Bool send_event;	/* true if this came from a SendEvent request */
+	Display *display;	/* Display the event was read from */
+	Window window;
+	char key_vector[32];
+} XKeymapEvent;
+
+typedef struct {
+	int type;
+	unsigned long serial;	/* # of last request processed by server */
+	Bool send_event;	/* true if this came from a SendEvent request */
+	Display *display;	/* Display the event was read from */
+	Window window;
+	int x, y;
+	int width, height;
+	int count;		/* if non-zero, at least this many more */
+} XExposeEvent;
+
+typedef struct {
+	int type;
+	unsigned long serial;	/* # of last request processed by server */
+	Bool send_event;	/* true if this came from a SendEvent request */
+	Display *display;	/* Display the event was read from */
+	Drawable drawable;
+	int x, y;
+	int width, height;
+	int count;		/* if non-zero, at least this many more */
+	int major_code;		/* core is CopyArea or CopyPlane */
+	int minor_code;		/* not defined in the core */
+} XGraphicsExposeEvent;
+
+typedef struct {
+	int type;
+	unsigned long serial;	/* # of last request processed by server */
+	Bool send_event;	/* true if this came from a SendEvent request */
+	Display *display;	/* Display the event was read from */
+	Drawable drawable;
+	int major_code;		/* core is CopyArea or CopyPlane */
+	int minor_code;		/* not defined in the core */
+} XNoExposeEvent;
+
+typedef struct {
+	int type;
+	unsigned long serial;	/* # of last request processed by server */
+	Bool send_event;	/* true if this came from a SendEvent request */
+	Display *display;	/* Display the event was read from */
+	Window window;
+	int state;		/* Visibility state */
+} XVisibilityEvent;
+
+typedef struct {
+	int type;
+	unsigned long serial;	/* # of last request processed by server */
+	Bool send_event;	/* true if this came from a SendEvent request */
+	Display *display;	/* Display the event was read from */
+	Window parent;		/* parent of the window */
+	Window window;		/* window id of window created */
+	int x, y;		/* window location */
+	int width, height;	/* size of window */
+	int border_width;	/* border width */
+	Bool override_redirect;	/* creation should be overridden */
+} XCreateWindowEvent;
+
+typedef struct {
+	int type;
+	unsigned long serial;	/* # of last request processed by server */
+	Bool send_event;	/* true if this came from a SendEvent request */
+	Display *display;	/* Display the event was read from */
+	Window event;
+	Window window;
+} XDestroyWindowEvent;
+
+typedef struct {
+	int type;
+	unsigned long serial;	/* # of last request processed by server */
+	Bool send_event;	/* true if this came from a SendEvent request */
+	Display *display;	/* Display the event was read from */
+	Window event;
+	Window window;
+	Bool from_configure;
+} XUnmapEvent;
+
+typedef struct {
+	int type;
+	unsigned long serial;	/* # of last request processed by server */
+	Bool send_event;	/* true if this came from a SendEvent request */
+	Display *display;	/* Display the event was read from */
+	Window event;
+	Window window;
+	Bool override_redirect;	/* boolean, is override set... */
+} XMapEvent;
+
+typedef struct {
+	int type;
+	unsigned long serial;	/* # of last request processed by server */
+	Bool send_event;	/* true if this came from a SendEvent request */
+	Display *display;	/* Display the event was read from */
+	Window parent;
+	Window window;
+} XMapRequestEvent;
+
+typedef struct {
+	int type;
+	unsigned long serial;	/* # of last request processed by server */
+	Bool send_event;	/* true if this came from a SendEvent request */
+	Display *display;	/* Display the event was read from */
+	Window event;
+	Window window;
+	Window parent;
+	int x, y;
+	Bool override_redirect;
+} XReparentEvent;
+
+typedef struct {
+	int type;
+	unsigned long serial;	/* # of last request processed by server */
+	Bool send_event;	/* true if this came from a SendEvent request */
+	Display *display;	/* Display the event was read from */
+	Window event;
+	Window window;
+	int x, y;
+	int width, height;
+	int border_width;
+	Window above;
+	Bool override_redirect;
+} XConfigureEvent;
+
+typedef struct {
+	int type;
+	unsigned long serial;	/* # of last request processed by server */
+	Bool send_event;	/* true if this came from a SendEvent request */
+	Display *display;	/* Display the event was read from */
+	Window event;
+	Window window;
+	int x, y;
+} XGravityEvent;
+
+typedef struct {
+	int type;
+	unsigned long serial;	/* # of last request processed by server */
+	Bool send_event;	/* true if this came from a SendEvent request */
+	Display *display;	/* Display the event was read from */
+	Window window;
+	int width, height;
+} XResizeRequestEvent;
+
+typedef struct {
+	int type;
+	unsigned long serial;	/* # of last request processed by server */
+	Bool send_event;	/* true if this came from a SendEvent request */
+	Display *display;	/* Display the event was read from */
+	Window parent;
+	Window window;
+	int x, y;
+	int width, height;
+	int border_width;
+	Window above;
+	int detail;		/* Above, Below, TopIf, BottomIf, Opposite */
+	unsigned long value_mask;
+} XConfigureRequestEvent;
+
+typedef struct {
+	int type;
+	unsigned long serial;	/* # of last request processed by server */
+	Bool send_event;	/* true if this came from a SendEvent request */
+	Display *display;	/* Display the event was read from */
+	Window event;
+	Window window;
+	int place;		/* PlaceOnTop, PlaceOnBottom */
+} XCirculateEvent;
+
+typedef struct {
+	int type;
+	unsigned long serial;	/* # of last request processed by server */
+	Bool send_event;	/* true if this came from a SendEvent request */
+	Display *display;	/* Display the event was read from */
+	Window parent;
+	Window window;
+	int place;		/* PlaceOnTop, PlaceOnBottom */
+} XCirculateRequestEvent;
+
+typedef struct {
+	int type;
+	unsigned long serial;	/* # of last request processed by server */
+	Bool send_event;	/* true if this came from a SendEvent request */
+	Display *display;	/* Display the event was read from */
+	Window window;
+	Atom atom;
+	Time time;
+	int state;		/* NewValue, Deleted */
+} XPropertyEvent;
+
+typedef struct {
+	int type;
+	unsigned long serial;	/* # of last request processed by server */
+	Bool send_event;	/* true if this came from a SendEvent request */
+	Display *display;	/* Display the event was read from */
+	Window window;
+	Atom selection;
+	Time time;
+} XSelectionClearEvent;
+
+typedef struct {
+	int type;
+	unsigned long serial;	/* # of last request processed by server */
+	Bool send_event;	/* true if this came from a SendEvent request */
+	Display *display;	/* Display the event was read from */
+	Window owner;
+	Window requestor;
+	Atom selection;
+	Atom target;
+	Atom property;
+	Time time;
+} XSelectionRequestEvent;
+
+typedef struct {
+	int type;
+	unsigned long serial;	/* # of last request processed by server */
+	Bool send_event;	/* true if this came from a SendEvent request */
+	Display *display;	/* Display the event was read from */
+	Window requestor;
+	Atom selection;
+	Atom target;
+	Atom property;		/* ATOM or None */
+	Time time;
+} XSelectionEvent;
+
+typedef struct {
+	int type;
+	unsigned long serial;	/* # of last request processed by server */
+	Bool send_event;	/* true if this came from a SendEvent request */
+	Display *display;	/* Display the event was read from */
+	Window window;
+	Colormap colormap;	/* COLORMAP or None */
+#if defined(__cplusplus) || defined(c_plusplus)
+	Bool c_new;		/* C++ */
+#else
+	Bool new;
+#endif
+	int state;		/* ColormapInstalled, ColormapUninstalled */
+} XColormapEvent;
+
+typedef struct {
+	int type;
+	unsigned long serial;	/* # of last request processed by server */
+	Bool send_event;	/* true if this came from a SendEvent request */
+	Display *display;	/* Display the event was read from */
+	Window window;
+	Atom message_type;
+	int format;
+	union {
+		char b[20];
+		short s[10];
+		long l[5];
+		} data;
+} XClientMessageEvent;
+
+typedef struct {
+	int type;
+	unsigned long serial;	/* # of last request processed by server */
+	Bool send_event;	/* true if this came from a SendEvent request */
+	Display *display;	/* Display the event was read from */
+	Window window;		/* unused */
+	int request;		/* one of MappingModifier, MappingKeyboard,
+				   MappingPointer */
+	int first_keycode;	/* first keycode */
+	int count;		/* defines range of change w. first_keycode*/
+} XMappingEvent;
+
+typedef struct {
+	int type;
+	Display *display;	/* Display the event was read from */
+	XID resourceid;		/* resource id */
+	unsigned long serial;	/* serial number of failed request */
+	unsigned char error_code;	/* error code of failed request */
+	unsigned char request_code;	/* Major op-code of failed request */
+	unsigned char minor_code;	/* Minor op-code of failed request */
+} XErrorEvent;
+
+typedef struct {
+	int type;
+	unsigned long serial;	/* # of last request processed by server */
+	Bool send_event;	/* true if this came from a SendEvent request */
+	Display *display;/* Display the event was read from */
+	Window window;	/* window on which event was requested in event mask */
+} XAnyEvent;
+
+/*
+ * this union is defined so Xlib can always use the same sized
+ * event structure internally, to avoid memory fragmentation.
+ */
+typedef union _XEvent {
+        int type;		/* must not be changed; first element */
+	XAnyEvent xany;
+	XKeyEvent xkey;
+	XButtonEvent xbutton;
+	XMotionEvent xmotion;
+	XCrossingEvent xcrossing;
+	XFocusChangeEvent xfocus;
+	XExposeEvent xexpose;
+	XGraphicsExposeEvent xgraphicsexpose;
+	XNoExposeEvent xnoexpose;
+	XVisibilityEvent xvisibility;
+	XCreateWindowEvent xcreatewindow;
+	XDestroyWindowEvent xdestroywindow;
+	XUnmapEvent xunmap;
+	XMapEvent xmap;
+	XMapRequestEvent xmaprequest;
+	XReparentEvent xreparent;
+	XConfigureEvent xconfigure;
+	XGravityEvent xgravity;
+	XResizeRequestEvent xresizerequest;
+	XConfigureRequestEvent xconfigurerequest;
+	XCirculateEvent xcirculate;
+	XCirculateRequestEvent xcirculaterequest;
+	XPropertyEvent xproperty;
+	XSelectionClearEvent xselectionclear;
+	XSelectionRequestEvent xselectionrequest;
+	XSelectionEvent xselection;
+	XColormapEvent xcolormap;
+	XClientMessageEvent xclient;
+	XMappingEvent xmapping;
+	XErrorEvent xerror;
+	XKeymapEvent xkeymap;
+	XID pad[24];
+} XEvent;
+#endif
+
+#define XAllocID(dpy) ((*(dpy)->resource_alloc)((dpy)))
+
+/*
+ * per character font metric information.
+ */
+typedef struct {
+    short	lbearing;	/* origin to left edge of raster */
+    short	rbearing;	/* origin to right edge of raster */
+    short	width;		/* advance to next char's origin */
+    short	ascent;		/* baseline to top edge of raster */
+    short	descent;	/* baseline to bottom edge of raster */
+    unsigned short attributes;	/* per char flags (not predefined) */
+} XCharStruct;
+
+/*
+ * To allow arbitrary information with fonts, there are additional properties
+ * returned.
+ */
+typedef struct {
+    Atom name;
+    unsigned long card32;
+} XFontProp;
+
+typedef struct {
+    XExtData	*ext_data;	/* hook for extension to hang data */
+    Font        fid;            /* Font id for this font */
+    unsigned	direction;	/* hint about direction the font is painted */
+    unsigned	min_char_or_byte2;/* first character */
+    unsigned	max_char_or_byte2;/* last character */
+    unsigned	min_byte1;	/* first row that exists */
+    unsigned	max_byte1;	/* last row that exists */
+    Bool	all_chars_exist;/* flag if all characters have non-zero size*/
+    unsigned	default_char;	/* char to print for undefined character */
+    int         n_properties;   /* how many properties there are */
+    XFontProp	*properties;	/* pointer to array of additional properties*/
+    XCharStruct	min_bounds;	/* minimum bounds over all existing char*/
+    XCharStruct	max_bounds;	/* maximum bounds over all existing char*/
+    XCharStruct	*per_char;	/* first_char to last_char information */
+    int		ascent;		/* log. extent above baseline for spacing */
+    int		descent;	/* log. descent below baseline for spacing */
+} XFontStruct;
+
+/*
+ * PolyText routines take these as arguments.
+ */
+typedef struct {
+    char *chars;		/* pointer to string */
+    int nchars;			/* number of characters */
+    int delta;			/* delta between strings */
+    Font font;			/* font to print it in, None don't change */
+} XTextItem;
+
+typedef struct {		/* normal 16 bit characters are two bytes */
+    unsigned char byte1;
+    unsigned char byte2;
+} XChar2b;
+
+typedef struct {
+    XChar2b *chars;		/* two byte characters */
+    int nchars;			/* number of characters */
+    int delta;			/* delta between strings */
+    Font font;			/* font to print it in, None don't change */
+} XTextItem16;
+
+
+typedef union { Display *display;
+		GC gc;
+		Visual *visual;
+		Screen *screen;
+		ScreenFormat *pixmap_format;
+		XFontStruct *font; } XEDataObject;
+
+typedef struct {
+    XRectangle      max_ink_extent;
+    XRectangle      max_logical_extent;
+} XFontSetExtents;
+
+typedef struct _XFontSet *XFontSet;
+
+typedef struct {
+    char           *chars;
+    int             nchars;
+    int             delta;
+    XFontSet        font_set;
+} XmbTextItem;
+
+typedef struct {
+    wchar_t        *chars;
+    int             nchars;
+    int             delta;
+    XFontSet        font_set;
+} XwcTextItem;
+
+typedef void (*XIMProc)();
+
+typedef struct _XIM *XIM;
+typedef struct _XIC *XIC;
+
+typedef unsigned long XIMStyle;
+
+typedef struct {
+    unsigned short count_styles;
+    XIMStyle *supported_styles;
+} XIMStyles;
+
+#define XIMPreeditArea		0x0001L
+#define XIMPreeditCallbacks	0x0002L
+#define XIMPreeditPosition	0x0004L
+#define XIMPreeditNothing	0x0008L
+#define XIMPreeditNone		0x0010L
+#define XIMStatusArea		0x0100L
+#define XIMStatusCallbacks	0x0200L
+#define XIMStatusNothing	0x0400L
+#define XIMStatusNone		0x0800L
+
+#define XNVaNestedList "XNVaNestedList"
+#define XNClientWindow "clientWindow"
+#define XNInputStyle "inputStyle"
+#define XNFocusWindow "focusWindow"
+#define XNResourceName "resourceName"
+#define XNResourceClass "resourceClass"
+#define XNGeometryCallback "geometryCallback"
+#define XNFilterEvents "filterEvents"
+#define XNPreeditStartCallback "preeditStartCallback"
+#define XNPreeditDoneCallback "preeditDoneCallback"
+#define XNPreeditDrawCallback "preeditDrawCallback"
+#define XNPreeditCaretCallback "preeditCaretCallback"
+#define XNPreeditAttributes "preeditAttributes"
+#define XNStatusStartCallback "statusStartCallback"
+#define XNStatusDoneCallback "statusDoneCallback"
+#define XNStatusDrawCallback "statusDrawCallback"
+#define XNStatusAttributes "statusAttributes"
+#define XNArea "area"
+#define XNAreaNeeded "areaNeeded"
+#define XNSpotLocation "spotLocation"
+#define XNColormap "colorMap"
+#define XNStdColormap "stdColorMap"
+#define XNForeground "foreground"
+#define XNBackground "background"
+#define XNBackgroundPixmap "backgroundPixmap"
+#define XNFontSet "fontSet"
+#define XNLineSpace "lineSpace"
+#define XNCursor "cursor"
+
+#define XBufferOverflow		-1
+#define XLookupNone		1
+#define XLookupChars		2
+#define XLookupKeySym		3
+#define XLookupBoth		4
+
+#if NeedFunctionPrototypes
+typedef void *XVaNestedList;
+#else
+typedef XPointer XVaNestedList;
+#endif
+
+typedef struct {
+    XPointer client_data;
+    XIMProc callback;
+} XIMCallback;
+
+typedef unsigned long XIMFeedback;
+
+#define XIMReverse	1
+#define XIMUnderline	(1<<1)
+#define XIMHighlight	(1<<2)
+#define XIMPrimary 	(1<<5)
+#define XIMSecondary	(1<<6)
+#define XIMTertiary 	(1<<7)
+
+typedef struct _XIMText {
+    unsigned short length;
+    XIMFeedback *feedback;
+    Bool encoding_is_wchar;
+    union {
+	char *multi_byte;
+	wchar_t *wide_char;
+    } string;
+} XIMText;
+
+typedef struct _XIMPreeditDrawCallbackStruct {
+    int caret;		/* Cursor offset within pre-edit string */
+    int chg_first;	/* Starting change position */
+    int chg_length;	/* Length of the change in character count */
+    XIMText *text;
+} XIMPreeditDrawCallbackStruct;
+
+typedef enum {
+    XIMForwardChar, XIMBackwardChar,
+    XIMForwardWord, XIMBackwardWord,
+    XIMCaretUp, XIMCaretDown,
+    XIMNextLine, XIMPreviousLine,
+    XIMLineStart, XIMLineEnd,
+    XIMAbsolutePosition,
+    XIMDontChange
+} XIMCaretDirection;
+
+typedef enum {
+    XIMIsInvisible,	/* Disable caret feedback */
+    XIMIsPrimary,	/* UI defined caret feedback */
+    XIMIsSecondary	/* UI defined caret feedback */
+} XIMCaretStyle;
+
+typedef struct _XIMPreeditCaretCallbackStruct {
+    int position;		 /* Caret offset within pre-edit string */
+    XIMCaretDirection direction; /* Caret moves direction */
+    XIMCaretStyle style;	 /* Feedback of the caret */
+} XIMPreeditCaretCallbackStruct;
+
+typedef enum {
+    XIMTextType,
+    XIMBitmapType
+} XIMStatusDataType;
+
+typedef struct _XIMStatusDrawCallbackStruct {
+    XIMStatusDataType type;
+    union {
+	XIMText *text;
+	Pixmap  bitmap;
+    } data;
+} XIMStatusDrawCallbackStruct;
+
+typedef int (*XErrorHandler) (	    /* WARNING, this type not in Xlib spec */
+#if NeedFunctionPrototypes
+    Display*		/* display */,
+    XErrorEvent*	/* error_event */
+#endif
+);
+
+_XFUNCPROTOBEGIN
+
+
+
+#include "tkIntXlibDecls.h"
+
+_XFUNCPROTOEND
+
+#if defined(MAC_OSX_TK)
+#   undef Cursor
+#   undef Region
+#endif
+
+#endif /* _XLIB_H_ */
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/include/X11/keysymdef.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/include/X11/keysymdef.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/include/X11/keysymdef.h	(revision 3762)
@@ -0,0 +1,1296 @@
+/***********************************************************
+Copyright 1987, 1994, 1998  The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+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 OPEN GROUP 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.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+
+
+Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts
+
+                        All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL BE LIABLE FOR 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.
+
+******************************************************************/
+
+/*
+ * The "X11 Window System Protocol" standard defines in Appendix A the
+ * keysym codes. These 29-bit integer values identify characters or
+ * functions associated with each key (e.g., via the visible
+ * engraving) of a keyboard layout. This file assigns mnemonic macro
+ * names for these keysyms.
+ *
+ * This file is also compiled (by src/util/makekeys.c in libX11) into
+ * hash tables that can be accessed with X11 library functions such as
+ * XStringToKeysym() and XKeysymToString().
+ *
+ * Where a keysym corresponds one-to-one to an ISO 10646 / Unicode
+ * character, this is noted in a comment that provides both the U+xxxx
+ * Unicode position, as well as the official Unicode name of the
+ * character.
+ *
+ * Where the correspondence is either not one-to-one or semantically
+ * unclear, the Unicode position and name are enclosed in
+ * parentheses. Such legacy keysyms should be considered deprecated
+ * and are not recommended for use in future keyboard mappings.
+ *
+ * For any future extension of the keysyms with characters already
+ * found in ISO 10646 / Unicode, the following algorithm shall be
+ * used. The new keysym code position will simply be the character's
+ * Unicode number plus 0x01000000. The keysym values in the range
+ * 0x01000100 to 0x0110ffff are reserved to represent Unicode
+ * characters in the range U+0100 to U+10FFFF.
+ *
+ * While most newer Unicode-based X11 clients do already accept
+ * Unicode-mapped keysyms in the range 0x01000100 to 0x0110ffff, it
+ * will remain necessary for clients -- in the interest of
+ * compatibility with existing servers -- to also understand the
+ * existing legacy keysym values in the range 0x0100 to 0x20ff.
+ *
+ * Where several mnemonic names are defined for the same keysym in this
+ * file, all but the first one listed should be considered deprecated.
+ *
+ * Mnemonic names for keysyms are defined in this file with lines
+ * that match one of these Perl regular expressions:
+ *
+ *    /^\#define XK_([a-zA-Z_0-9]+)\s+0x([0-9a-f]+)\s*\/\* U\+([0-9A-F]{4,6}) (.*) \*\/\s*$/
+ *    /^\#define XK_([a-zA-Z_0-9]+)\s+0x([0-9a-f]+)\s*\/\*\(U\+([0-9A-F]{4,6}) (.*)\)\*\/\s*$/
+ *    /^\#define XK_([a-zA-Z_0-9]+)\s+0x([0-9a-f]+)\s*(\/\*\s*(.*)\s*\*\/)?\s*$/
+ *
+ * Before adding new keysyms, please do consider the following: In
+ * addition to the keysym names defined in this file, the
+ * XStringToKeysym() and XKeysymToString() functions will also handle
+ * any keysym string of the form "U0020" to "U007E" and "U00A0" to
+ * "U10FFFF" for all possible Unicode characters. In other words,
+ * every possible Unicode character has already a keysym string
+ * defined algorithmically, even if it is not listed here. Therefore,
+ * defining an additional keysym macro is only necessary where a
+ * non-hexadecimal mnemonic name is needed, or where the new keysym
+ * does not represent any existing Unicode character.
+ *
+ * When adding new keysyms to this file, do not forget to also update the
+ * following as needed:
+ *
+ *   - the mappings in src/KeyBind.c in the libX11 repo
+ *     https://gitlab.freedesktop.org/xorg/lib/libx11
+ *
+ *   - the protocol specification in specs/keysyms.xml in this repo
+ *     https://gitlab.freedesktop.org/xorg/proto/xorgproto
+ *
+ */
+
+#define XK_VoidSymbol                  0xffffff  /* Void symbol */
+
+#ifdef XK_MISCELLANY
+/*
+ * TTY function keys, cleverly chosen to map to ASCII, for convenience of
+ * programming, but could have been arbitrary (at the cost of lookup
+ * tables in client code).
+ */
+
+#define XK_BackSpace                     0xff08  /* Back space, back char */
+#define XK_Tab                           0xff09
+#define XK_Linefeed                      0xff0a  /* Linefeed, LF */
+#define XK_Clear                         0xff0b
+#define XK_Return                        0xff0d  /* Return, enter */
+#define XK_Pause                         0xff13  /* Pause, hold */
+#define XK_Scroll_Lock                   0xff14
+#define XK_Sys_Req                       0xff15
+#define XK_Escape                        0xff1b
+#define XK_Delete                        0xffff  /* Delete, rubout */
+
+
+
+/* International & multi-key character composition */
+
+#define XK_Multi_key                     0xff20  /* Multi-key character compose */
+#define XK_Codeinput                     0xff37
+#define XK_SingleCandidate               0xff3c
+#define XK_MultipleCandidate             0xff3d
+#define XK_PreviousCandidate             0xff3e
+
+/* Japanese keyboard support */
+
+#define XK_Kanji                         0xff21  /* Kanji, Kanji convert */
+#define XK_Muhenkan                      0xff22  /* Cancel Conversion */
+#define XK_Henkan_Mode                   0xff23  /* Start/Stop Conversion */
+#define XK_Henkan                        0xff23  /* Alias for Henkan_Mode */
+#define XK_Romaji                        0xff24  /* to Romaji */
+#define XK_Hiragana                      0xff25  /* to Hiragana */
+#define XK_Katakana                      0xff26  /* to Katakana */
+#define XK_Hiragana_Katakana             0xff27  /* Hiragana/Katakana toggle */
+#define XK_Zenkaku                       0xff28  /* to Zenkaku */
+#define XK_Hankaku                       0xff29  /* to Hankaku */
+#define XK_Zenkaku_Hankaku               0xff2a  /* Zenkaku/Hankaku toggle */
+#define XK_Touroku                       0xff2b  /* Add to Dictionary */
+#define XK_Massyo                        0xff2c  /* Delete from Dictionary */
+#define XK_Kana_Lock                     0xff2d  /* Kana Lock */
+#define XK_Kana_Shift                    0xff2e  /* Kana Shift */
+#define XK_Eisu_Shift                    0xff2f  /* Alphanumeric Shift */
+#define XK_Eisu_toggle                   0xff30  /* Alphanumeric toggle */
+
+/* Cursor control & motion */
+
+#define XK_Home                          0xff50
+#define XK_Left                          0xff51  /* Move left, left arrow */
+#define XK_Up                            0xff52  /* Move up, up arrow */
+#define XK_Right                         0xff53  /* Move right, right arrow */
+#define XK_Down                          0xff54  /* Move down, down arrow */
+#define XK_Prior                         0xff55  /* Prior, previous */
+#define XK_Page_Up                       0xff55
+#define XK_Next                          0xff56  /* Next */
+#define XK_Page_Down                     0xff56
+#define XK_End                           0xff57  /* EOL */
+#define XK_Begin                         0xff58  /* BOL */
+
+/* Special Windows keyboard keys */
+
+#define XK_Win_L		0xFF5B	/* Left-hand Windows */
+#define XK_Win_R		0xFF5C	/* Right-hand Windows */
+#define XK_App			0xFF5D	/* Menu key */
+
+
+/* Misc functions */
+
+#define XK_Select                        0xff60  /* Select, mark */
+#define XK_Print                         0xff61
+#define XK_Execute                       0xff62  /* Execute, run, do */
+#define XK_Insert                        0xff63  /* Insert, insert here */
+#define XK_Undo                          0xff65
+#define XK_Redo                          0xff66  /* Redo, again */
+#define XK_Menu                          0xff67
+#define XK_Find                          0xff68  /* Find, search */
+#define XK_Cancel                        0xff69  /* Cancel, stop, abort, exit */
+#define XK_Help                          0xff6a  /* Help */
+#define XK_Break                         0xff6b
+#define XK_Mode_switch                   0xff7e  /* Character set switch */
+#define XK_script_switch                 0xff7e  /* Alias for mode_switch */
+#define XK_Num_Lock                      0xff7f
+
+/* Keypad functions, keypad numbers cleverly chosen to map to ASCII */
+
+#define XK_KP_Space                      0xff80  /* Space */
+#define XK_KP_Tab                        0xff89
+#define XK_KP_Enter                      0xff8d  /* Enter */
+#define XK_KP_F1                         0xff91  /* PF1, KP_A, ... */
+#define XK_KP_F2                         0xff92
+#define XK_KP_F3                         0xff93
+#define XK_KP_F4                         0xff94
+#define XK_KP_Home                       0xff95
+#define XK_KP_Left                       0xff96
+#define XK_KP_Up                         0xff97
+#define XK_KP_Right                      0xff98
+#define XK_KP_Down                       0xff99
+#define XK_KP_Prior                      0xff9a
+#define XK_KP_Page_Up                    0xff9a
+#define XK_KP_Next                       0xff9b
+#define XK_KP_Page_Down                  0xff9b
+#define XK_KP_End                        0xff9c
+#define XK_KP_Begin                      0xff9d
+#define XK_KP_Insert                     0xff9e
+#define XK_KP_Delete                     0xff9f
+#define XK_KP_Equal                      0xffbd  /* Equals */
+#define XK_KP_Multiply                   0xffaa
+#define XK_KP_Add                        0xffab
+#define XK_KP_Separator                  0xffac  /* Separator, often comma */
+#define XK_KP_Subtract                   0xffad
+#define XK_KP_Decimal                    0xffae
+#define XK_KP_Divide                     0xffaf
+
+#define XK_KP_0                          0xffb0
+#define XK_KP_1                          0xffb1
+#define XK_KP_2                          0xffb2
+#define XK_KP_3                          0xffb3
+#define XK_KP_4                          0xffb4
+#define XK_KP_5                          0xffb5
+#define XK_KP_6                          0xffb6
+#define XK_KP_7                          0xffb7
+#define XK_KP_8                          0xffb8
+#define XK_KP_9                          0xffb9
+
+
+
+/*
+ * Auxiliary functions; note the duplicate definitions for left and right
+ * function keys;  Sun keyboards and a few other manufacturers have such
+ * function key groups on the left and/or right sides of the keyboard.
+ * We've not found a keyboard with more than 35 function keys total.
+ */
+
+#define XK_F1                            0xffbe
+#define XK_F2                            0xffbf
+#define XK_F3                            0xffc0
+#define XK_F4                            0xffc1
+#define XK_F5                            0xffc2
+#define XK_F6                            0xffc3
+#define XK_F7                            0xffc4
+#define XK_F8                            0xffc5
+#define XK_F9                            0xffc6
+#define XK_F10                           0xffc7
+#define XK_F11                           0xffc8
+#define XK_L1                            0xffc8
+#define XK_F12                           0xffc9
+#define XK_L2                            0xffc9
+#define XK_F13                           0xffca
+#define XK_L3                            0xffca
+#define XK_F14                           0xffcb
+#define XK_L4                            0xffcb
+#define XK_F15                           0xffcc
+#define XK_L5                            0xffcc
+#define XK_F16                           0xffcd
+#define XK_L6                            0xffcd
+#define XK_F17                           0xffce
+#define XK_L7                            0xffce
+#define XK_F18                           0xffcf
+#define XK_L8                            0xffcf
+#define XK_F19                           0xffd0
+#define XK_L9                            0xffd0
+#define XK_F20                           0xffd1
+#define XK_L10                           0xffd1
+#define XK_F21                           0xffd2
+#define XK_R1                            0xffd2
+#define XK_F22                           0xffd3
+#define XK_R2                            0xffd3
+#define XK_F23                           0xffd4
+#define XK_R3                            0xffd4
+#define XK_F24                           0xffd5
+#define XK_R4                            0xffd5
+#define XK_F25                           0xffd6
+#define XK_R5                            0xffd6
+#define XK_F26                           0xffd7
+#define XK_R6                            0xffd7
+#define XK_F27                           0xffd8
+#define XK_R7                            0xffd8
+#define XK_F28                           0xffd9
+#define XK_R8                            0xffd9
+#define XK_F29                           0xffda
+#define XK_R9                            0xffda
+#define XK_F30                           0xffdb
+#define XK_R10                           0xffdb
+#define XK_F31                           0xffdc
+#define XK_R11                           0xffdc
+#define XK_F32                           0xffdd
+#define XK_R12                           0xffdd
+#define XK_F33                           0xffde
+#define XK_R13                           0xffde
+#define XK_F34                           0xffdf
+#define XK_R14                           0xffdf
+#define XK_F35                           0xffe0
+#define XK_R15                           0xffe0
+
+/* Modifiers */
+
+#define XK_Shift_L                       0xffe1  /* Left shift */
+#define XK_Shift_R                       0xffe2  /* Right shift */
+#define XK_Control_L                     0xffe3  /* Left control */
+#define XK_Control_R                     0xffe4  /* Right control */
+#define XK_Caps_Lock                     0xffe5  /* Caps lock */
+#define XK_Shift_Lock                    0xffe6  /* Shift lock */
+
+#define XK_Meta_L                        0xffe7  /* Left meta */
+#define XK_Meta_R                        0xffe8  /* Right meta */
+#define XK_Alt_L                         0xffe9  /* Left alt */
+#define XK_Alt_R                         0xffea  /* Right alt */
+#define XK_Super_L                       0xffeb  /* Left super */
+#define XK_Super_R                       0xffec  /* Right super */
+#define XK_Hyper_L                       0xffed  /* Left hyper */
+#define XK_Hyper_R                       0xffee  /* Right hyper */
+#endif /* XK_MISCELLANY */
+
+/*
+ * Latin 1
+ * (ISO/IEC 8859-1 = Unicode U+0020..U+00FF)
+ * Byte 3 = 0
+ */
+#ifdef XK_LATIN1
+#define XK_space                         0x0020  /* U+0020 SPACE */
+#define XK_exclam                        0x0021  /* U+0021 EXCLAMATION MARK */
+#define XK_quotedbl                      0x0022  /* U+0022 QUOTATION MARK */
+#define XK_numbersign                    0x0023  /* U+0023 NUMBER SIGN */
+#define XK_dollar                        0x0024  /* U+0024 DOLLAR SIGN */
+#define XK_percent                       0x0025  /* U+0025 PERCENT SIGN */
+#define XK_ampersand                     0x0026  /* U+0026 AMPERSAND */
+#define XK_apostrophe                    0x0027  /* U+0027 APOSTROPHE */
+#define XK_quoteright                    0x0027  /* deprecated */
+#define XK_parenleft                     0x0028  /* U+0028 LEFT PARENTHESIS */
+#define XK_parenright                    0x0029  /* U+0029 RIGHT PARENTHESIS */
+#define XK_asterisk                      0x002a  /* U+002A ASTERISK */
+#define XK_plus                          0x002b  /* U+002B PLUS SIGN */
+#define XK_comma                         0x002c  /* U+002C COMMA */
+#define XK_minus                         0x002d  /* U+002D HYPHEN-MINUS */
+#define XK_period                        0x002e  /* U+002E FULL STOP */
+#define XK_slash                         0x002f  /* U+002F SOLIDUS */
+#define XK_0                             0x0030  /* U+0030 DIGIT ZERO */
+#define XK_1                             0x0031  /* U+0031 DIGIT ONE */
+#define XK_2                             0x0032  /* U+0032 DIGIT TWO */
+#define XK_3                             0x0033  /* U+0033 DIGIT THREE */
+#define XK_4                             0x0034  /* U+0034 DIGIT FOUR */
+#define XK_5                             0x0035  /* U+0035 DIGIT FIVE */
+#define XK_6                             0x0036  /* U+0036 DIGIT SIX */
+#define XK_7                             0x0037  /* U+0037 DIGIT SEVEN */
+#define XK_8                             0x0038  /* U+0038 DIGIT EIGHT */
+#define XK_9                             0x0039  /* U+0039 DIGIT NINE */
+#define XK_colon                         0x003a  /* U+003A COLON */
+#define XK_semicolon                     0x003b  /* U+003B SEMICOLON */
+#define XK_less                          0x003c  /* U+003C LESS-THAN SIGN */
+#define XK_equal                         0x003d  /* U+003D EQUALS SIGN */
+#define XK_greater                       0x003e  /* U+003E GREATER-THAN SIGN */
+#define XK_question                      0x003f  /* U+003F QUESTION MARK */
+#define XK_at                            0x0040  /* U+0040 COMMERCIAL AT */
+#define XK_A                             0x0041  /* U+0041 LATIN CAPITAL LETTER A */
+#define XK_B                             0x0042  /* U+0042 LATIN CAPITAL LETTER B */
+#define XK_C                             0x0043  /* U+0043 LATIN CAPITAL LETTER C */
+#define XK_D                             0x0044  /* U+0044 LATIN CAPITAL LETTER D */
+#define XK_E                             0x0045  /* U+0045 LATIN CAPITAL LETTER E */
+#define XK_F                             0x0046  /* U+0046 LATIN CAPITAL LETTER F */
+#define XK_G                             0x0047  /* U+0047 LATIN CAPITAL LETTER G */
+#define XK_H                             0x0048  /* U+0048 LATIN CAPITAL LETTER H */
+#define XK_I                             0x0049  /* U+0049 LATIN CAPITAL LETTER I */
+#define XK_J                             0x004a  /* U+004A LATIN CAPITAL LETTER J */
+#define XK_K                             0x004b  /* U+004B LATIN CAPITAL LETTER K */
+#define XK_L                             0x004c  /* U+004C LATIN CAPITAL LETTER L */
+#define XK_M                             0x004d  /* U+004D LATIN CAPITAL LETTER M */
+#define XK_N                             0x004e  /* U+004E LATIN CAPITAL LETTER N */
+#define XK_O                             0x004f  /* U+004F LATIN CAPITAL LETTER O */
+#define XK_P                             0x0050  /* U+0050 LATIN CAPITAL LETTER P */
+#define XK_Q                             0x0051  /* U+0051 LATIN CAPITAL LETTER Q */
+#define XK_R                             0x0052  /* U+0052 LATIN CAPITAL LETTER R */
+#define XK_S                             0x0053  /* U+0053 LATIN CAPITAL LETTER S */
+#define XK_T                             0x0054  /* U+0054 LATIN CAPITAL LETTER T */
+#define XK_U                             0x0055  /* U+0055 LATIN CAPITAL LETTER U */
+#define XK_V                             0x0056  /* U+0056 LATIN CAPITAL LETTER V */
+#define XK_W                             0x0057  /* U+0057 LATIN CAPITAL LETTER W */
+#define XK_X                             0x0058  /* U+0058 LATIN CAPITAL LETTER X */
+#define XK_Y                             0x0059  /* U+0059 LATIN CAPITAL LETTER Y */
+#define XK_Z                             0x005a  /* U+005A LATIN CAPITAL LETTER Z */
+#define XK_bracketleft                   0x005b  /* U+005B LEFT SQUARE BRACKET */
+#define XK_backslash                     0x005c  /* U+005C REVERSE SOLIDUS */
+#define XK_bracketright                  0x005d  /* U+005D RIGHT SQUARE BRACKET */
+#define XK_asciicircum                   0x005e  /* U+005E CIRCUMFLEX ACCENT */
+#define XK_underscore                    0x005f  /* U+005F LOW LINE */
+#define XK_grave                         0x0060  /* U+0060 GRAVE ACCENT */
+#define XK_quoteleft                     0x0060  /* deprecated */
+#define XK_a                             0x0061  /* U+0061 LATIN SMALL LETTER A */
+#define XK_b                             0x0062  /* U+0062 LATIN SMALL LETTER B */
+#define XK_c                             0x0063  /* U+0063 LATIN SMALL LETTER C */
+#define XK_d                             0x0064  /* U+0064 LATIN SMALL LETTER D */
+#define XK_e                             0x0065  /* U+0065 LATIN SMALL LETTER E */
+#define XK_f                             0x0066  /* U+0066 LATIN SMALL LETTER F */
+#define XK_g                             0x0067  /* U+0067 LATIN SMALL LETTER G */
+#define XK_h                             0x0068  /* U+0068 LATIN SMALL LETTER H */
+#define XK_i                             0x0069  /* U+0069 LATIN SMALL LETTER I */
+#define XK_j                             0x006a  /* U+006A LATIN SMALL LETTER J */
+#define XK_k                             0x006b  /* U+006B LATIN SMALL LETTER K */
+#define XK_l                             0x006c  /* U+006C LATIN SMALL LETTER L */
+#define XK_m                             0x006d  /* U+006D LATIN SMALL LETTER M */
+#define XK_n                             0x006e  /* U+006E LATIN SMALL LETTER N */
+#define XK_o                             0x006f  /* U+006F LATIN SMALL LETTER O */
+#define XK_p                             0x0070  /* U+0070 LATIN SMALL LETTER P */
+#define XK_q                             0x0071  /* U+0071 LATIN SMALL LETTER Q */
+#define XK_r                             0x0072  /* U+0072 LATIN SMALL LETTER R */
+#define XK_s                             0x0073  /* U+0073 LATIN SMALL LETTER S */
+#define XK_t                             0x0074  /* U+0074 LATIN SMALL LETTER T */
+#define XK_u                             0x0075  /* U+0075 LATIN SMALL LETTER U */
+#define XK_v                             0x0076  /* U+0076 LATIN SMALL LETTER V */
+#define XK_w                             0x0077  /* U+0077 LATIN SMALL LETTER W */
+#define XK_x                             0x0078  /* U+0078 LATIN SMALL LETTER X */
+#define XK_y                             0x0079  /* U+0079 LATIN SMALL LETTER Y */
+#define XK_z                             0x007a  /* U+007A LATIN SMALL LETTER Z */
+#define XK_braceleft                     0x007b  /* U+007B LEFT CURLY BRACKET */
+#define XK_bar                           0x007c  /* U+007C VERTICAL LINE */
+#define XK_braceright                    0x007d  /* U+007D RIGHT CURLY BRACKET */
+#define XK_asciitilde                    0x007e  /* U+007E TILDE */
+
+#define XK_nobreakspace                  0x00a0  /* U+00A0 NO-BREAK SPACE */
+#define XK_exclamdown                    0x00a1  /* U+00A1 INVERTED EXCLAMATION MARK */
+#define XK_cent                          0x00a2  /* U+00A2 CENT SIGN */
+#define XK_sterling                      0x00a3  /* U+00A3 POUND SIGN */
+#define XK_currency                      0x00a4  /* U+00A4 CURRENCY SIGN */
+#define XK_yen                           0x00a5  /* U+00A5 YEN SIGN */
+#define XK_brokenbar                     0x00a6  /* U+00A6 BROKEN BAR */
+#define XK_section                       0x00a7  /* U+00A7 SECTION SIGN */
+#define XK_diaeresis                     0x00a8  /* U+00A8 DIAERESIS */
+#define XK_copyright                     0x00a9  /* U+00A9 COPYRIGHT SIGN */
+#define XK_ordfeminine                   0x00aa  /* U+00AA FEMININE ORDINAL INDICATOR */
+#define XK_guillemotleft                 0x00ab  /* U+00AB LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */
+#define XK_notsign                       0x00ac  /* U+00AC NOT SIGN */
+#define XK_hyphen                        0x00ad  /* U+00AD SOFT HYPHEN */
+#define XK_registered                    0x00ae  /* U+00AE REGISTERED SIGN */
+#define XK_macron                        0x00af  /* U+00AF MACRON */
+#define XK_degree                        0x00b0  /* U+00B0 DEGREE SIGN */
+#define XK_plusminus                     0x00b1  /* U+00B1 PLUS-MINUS SIGN */
+#define XK_twosuperior                   0x00b2  /* U+00B2 SUPERSCRIPT TWO */
+#define XK_threesuperior                 0x00b3  /* U+00B3 SUPERSCRIPT THREE */
+#define XK_acute                         0x00b4  /* U+00B4 ACUTE ACCENT */
+#define XK_mu                            0x00b5  /* U+00B5 MICRO SIGN */
+#define XK_paragraph                     0x00b6  /* U+00B6 PILCROW SIGN */
+#define XK_periodcentered                0x00b7  /* U+00B7 MIDDLE DOT */
+#define XK_cedilla                       0x00b8  /* U+00B8 CEDILLA */
+#define XK_onesuperior                   0x00b9  /* U+00B9 SUPERSCRIPT ONE */
+#define XK_masculine                     0x00ba  /* U+00BA MASCULINE ORDINAL INDICATOR */
+#define XK_guillemotright                0x00bb  /* U+00BB RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */
+#define XK_onequarter                    0x00bc  /* U+00BC VULGAR FRACTION ONE QUARTER */
+#define XK_onehalf                       0x00bd  /* U+00BD VULGAR FRACTION ONE HALF */
+#define XK_threequarters                 0x00be  /* U+00BE VULGAR FRACTION THREE QUARTERS */
+#define XK_questiondown                  0x00bf  /* U+00BF INVERTED QUESTION MARK */
+#define XK_Agrave                        0x00c0  /* U+00C0 LATIN CAPITAL LETTER A WITH GRAVE */
+#define XK_Aacute                        0x00c1  /* U+00C1 LATIN CAPITAL LETTER A WITH ACUTE */
+#define XK_Acircumflex                   0x00c2  /* U+00C2 LATIN CAPITAL LETTER A WITH CIRCUMFLEX */
+#define XK_Atilde                        0x00c3  /* U+00C3 LATIN CAPITAL LETTER A WITH TILDE */
+#define XK_Adiaeresis                    0x00c4  /* U+00C4 LATIN CAPITAL LETTER A WITH DIAERESIS */
+#define XK_Aring                         0x00c5  /* U+00C5 LATIN CAPITAL LETTER A WITH RING ABOVE */
+#define XK_AE                            0x00c6  /* U+00C6 LATIN CAPITAL LETTER AE */
+#define XK_Ccedilla                      0x00c7  /* U+00C7 LATIN CAPITAL LETTER C WITH CEDILLA */
+#define XK_Egrave                        0x00c8  /* U+00C8 LATIN CAPITAL LETTER E WITH GRAVE */
+#define XK_Eacute                        0x00c9  /* U+00C9 LATIN CAPITAL LETTER E WITH ACUTE */
+#define XK_Ecircumflex                   0x00ca  /* U+00CA LATIN CAPITAL LETTER E WITH CIRCUMFLEX */
+#define XK_Ediaeresis                    0x00cb  /* U+00CB LATIN CAPITAL LETTER E WITH DIAERESIS */
+#define XK_Igrave                        0x00cc  /* U+00CC LATIN CAPITAL LETTER I WITH GRAVE */
+#define XK_Iacute                        0x00cd  /* U+00CD LATIN CAPITAL LETTER I WITH ACUTE */
+#define XK_Icircumflex                   0x00ce  /* U+00CE LATIN CAPITAL LETTER I WITH CIRCUMFLEX */
+#define XK_Idiaeresis                    0x00cf  /* U+00CF LATIN CAPITAL LETTER I WITH DIAERESIS */
+#define XK_ETH                           0x00d0  /* U+00D0 LATIN CAPITAL LETTER ETH */
+#define XK_Eth                           0x00d0  /* deprecated */
+#define XK_Ntilde                        0x00d1  /* U+00D1 LATIN CAPITAL LETTER N WITH TILDE */
+#define XK_Ograve                        0x00d2  /* U+00D2 LATIN CAPITAL LETTER O WITH GRAVE */
+#define XK_Oacute                        0x00d3  /* U+00D3 LATIN CAPITAL LETTER O WITH ACUTE */
+#define XK_Ocircumflex                   0x00d4  /* U+00D4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX */
+#define XK_Otilde                        0x00d5  /* U+00D5 LATIN CAPITAL LETTER O WITH TILDE */
+#define XK_Odiaeresis                    0x00d6  /* U+00D6 LATIN CAPITAL LETTER O WITH DIAERESIS */
+#define XK_multiply                      0x00d7  /* U+00D7 MULTIPLICATION SIGN */
+#define XK_Oslash                        0x00d8  /* U+00D8 LATIN CAPITAL LETTER O WITH STROKE */
+#define XK_Ooblique                      0x00d8  /* U+00D8 LATIN CAPITAL LETTER O WITH STROKE */
+#define XK_Ugrave                        0x00d9  /* U+00D9 LATIN CAPITAL LETTER U WITH GRAVE */
+#define XK_Uacute                        0x00da  /* U+00DA LATIN CAPITAL LETTER U WITH ACUTE */
+#define XK_Ucircumflex                   0x00db  /* U+00DB LATIN CAPITAL LETTER U WITH CIRCUMFLEX */
+#define XK_Udiaeresis                    0x00dc  /* U+00DC LATIN CAPITAL LETTER U WITH DIAERESIS */
+#define XK_Yacute                        0x00dd  /* U+00DD LATIN CAPITAL LETTER Y WITH ACUTE */
+#define XK_THORN                         0x00de  /* U+00DE LATIN CAPITAL LETTER THORN */
+#define XK_Thorn                         0x00de  /* deprecated */
+#define XK_ssharp                        0x00df  /* U+00DF LATIN SMALL LETTER SHARP S */
+#define XK_agrave                        0x00e0  /* U+00E0 LATIN SMALL LETTER A WITH GRAVE */
+#define XK_aacute                        0x00e1  /* U+00E1 LATIN SMALL LETTER A WITH ACUTE */
+#define XK_acircumflex                   0x00e2  /* U+00E2 LATIN SMALL LETTER A WITH CIRCUMFLEX */
+#define XK_atilde                        0x00e3  /* U+00E3 LATIN SMALL LETTER A WITH TILDE */
+#define XK_adiaeresis                    0x00e4  /* U+00E4 LATIN SMALL LETTER A WITH DIAERESIS */
+#define XK_aring                         0x00e5  /* U+00E5 LATIN SMALL LETTER A WITH RING ABOVE */
+#define XK_ae                            0x00e6  /* U+00E6 LATIN SMALL LETTER AE */
+#define XK_ccedilla                      0x00e7  /* U+00E7 LATIN SMALL LETTER C WITH CEDILLA */
+#define XK_egrave                        0x00e8  /* U+00E8 LATIN SMALL LETTER E WITH GRAVE */
+#define XK_eacute                        0x00e9  /* U+00E9 LATIN SMALL LETTER E WITH ACUTE */
+#define XK_ecircumflex                   0x00ea  /* U+00EA LATIN SMALL LETTER E WITH CIRCUMFLEX */
+#define XK_ediaeresis                    0x00eb  /* U+00EB LATIN SMALL LETTER E WITH DIAERESIS */
+#define XK_igrave                        0x00ec  /* U+00EC LATIN SMALL LETTER I WITH GRAVE */
+#define XK_iacute                        0x00ed  /* U+00ED LATIN SMALL LETTER I WITH ACUTE */
+#define XK_icircumflex                   0x00ee  /* U+00EE LATIN SMALL LETTER I WITH CIRCUMFLEX */
+#define XK_idiaeresis                    0x00ef  /* U+00EF LATIN SMALL LETTER I WITH DIAERESIS */
+#define XK_eth                           0x00f0  /* U+00F0 LATIN SMALL LETTER ETH */
+#define XK_ntilde                        0x00f1  /* U+00F1 LATIN SMALL LETTER N WITH TILDE */
+#define XK_ograve                        0x00f2  /* U+00F2 LATIN SMALL LETTER O WITH GRAVE */
+#define XK_oacute                        0x00f3  /* U+00F3 LATIN SMALL LETTER O WITH ACUTE */
+#define XK_ocircumflex                   0x00f4  /* U+00F4 LATIN SMALL LETTER O WITH CIRCUMFLEX */
+#define XK_otilde                        0x00f5  /* U+00F5 LATIN SMALL LETTER O WITH TILDE */
+#define XK_odiaeresis                    0x00f6  /* U+00F6 LATIN SMALL LETTER O WITH DIAERESIS */
+#define XK_division                      0x00f7  /* U+00F7 DIVISION SIGN */
+#define XK_oslash                        0x00f8  /* U+00F8 LATIN SMALL LETTER O WITH STROKE */
+#define XK_ugrave                        0x00f9  /* U+00F9 LATIN SMALL LETTER U WITH GRAVE */
+#define XK_uacute                        0x00fa  /* U+00FA LATIN SMALL LETTER U WITH ACUTE */
+#define XK_ucircumflex                   0x00fb  /* U+00FB LATIN SMALL LETTER U WITH CIRCUMFLEX */
+#define XK_udiaeresis                    0x00fc  /* U+00FC LATIN SMALL LETTER U WITH DIAERESIS */
+#define XK_yacute                        0x00fd  /* U+00FD LATIN SMALL LETTER Y WITH ACUTE */
+#define XK_thorn                         0x00fe  /* U+00FE LATIN SMALL LETTER THORN */
+#define XK_ydiaeresis                    0x00ff  /* U+00FF LATIN SMALL LETTER Y WITH DIAERESIS */
+#endif /* XK_LATIN1 */
+
+/*
+ * Latin 2
+ * Byte 3 = 1
+ */
+
+#ifdef XK_LATIN2
+#define XK_Aogonek                       0x01a1  /* U+0104 LATIN CAPITAL LETTER A WITH OGONEK */
+#define XK_breve                         0x01a2  /* U+02D8 BREVE */
+#define XK_Lstroke                       0x01a3  /* U+0141 LATIN CAPITAL LETTER L WITH STROKE */
+#define XK_Lcaron                        0x01a5  /* U+013D LATIN CAPITAL LETTER L WITH CARON */
+#define XK_Sacute                        0x01a6  /* U+015A LATIN CAPITAL LETTER S WITH ACUTE */
+#define XK_Scaron                        0x01a9  /* U+0160 LATIN CAPITAL LETTER S WITH CARON */
+#define XK_Scedilla                      0x01aa  /* U+015E LATIN CAPITAL LETTER S WITH CEDILLA */
+#define XK_Tcaron                        0x01ab  /* U+0164 LATIN CAPITAL LETTER T WITH CARON */
+#define XK_Zacute                        0x01ac  /* U+0179 LATIN CAPITAL LETTER Z WITH ACUTE */
+#define XK_Zcaron                        0x01ae  /* U+017D LATIN CAPITAL LETTER Z WITH CARON */
+#define XK_Zabovedot                     0x01af  /* U+017B LATIN CAPITAL LETTER Z WITH DOT ABOVE */
+#define XK_aogonek                       0x01b1  /* U+0105 LATIN SMALL LETTER A WITH OGONEK */
+#define XK_ogonek                        0x01b2  /* U+02DB OGONEK */
+#define XK_lstroke                       0x01b3  /* U+0142 LATIN SMALL LETTER L WITH STROKE */
+#define XK_lcaron                        0x01b5  /* U+013E LATIN SMALL LETTER L WITH CARON */
+#define XK_sacute                        0x01b6  /* U+015B LATIN SMALL LETTER S WITH ACUTE */
+#define XK_caron                         0x01b7  /* U+02C7 CARON */
+#define XK_scaron                        0x01b9  /* U+0161 LATIN SMALL LETTER S WITH CARON */
+#define XK_scedilla                      0x01ba  /* U+015F LATIN SMALL LETTER S WITH CEDILLA */
+#define XK_tcaron                        0x01bb  /* U+0165 LATIN SMALL LETTER T WITH CARON */
+#define XK_zacute                        0x01bc  /* U+017A LATIN SMALL LETTER Z WITH ACUTE */
+#define XK_doubleacute                   0x01bd  /* U+02DD DOUBLE ACUTE ACCENT */
+#define XK_zcaron                        0x01be  /* U+017E LATIN SMALL LETTER Z WITH CARON */
+#define XK_zabovedot                     0x01bf  /* U+017C LATIN SMALL LETTER Z WITH DOT ABOVE */
+#define XK_Racute                        0x01c0  /* U+0154 LATIN CAPITAL LETTER R WITH ACUTE */
+#define XK_Abreve                        0x01c3  /* U+0102 LATIN CAPITAL LETTER A WITH BREVE */
+#define XK_Lacute                        0x01c5  /* U+0139 LATIN CAPITAL LETTER L WITH ACUTE */
+#define XK_Cacute                        0x01c6  /* U+0106 LATIN CAPITAL LETTER C WITH ACUTE */
+#define XK_Ccaron                        0x01c8  /* U+010C LATIN CAPITAL LETTER C WITH CARON */
+#define XK_Eogonek                       0x01ca  /* U+0118 LATIN CAPITAL LETTER E WITH OGONEK */
+#define XK_Ecaron                        0x01cc  /* U+011A LATIN CAPITAL LETTER E WITH CARON */
+#define XK_Dcaron                        0x01cf  /* U+010E LATIN CAPITAL LETTER D WITH CARON */
+#define XK_Dstroke                       0x01d0  /* U+0110 LATIN CAPITAL LETTER D WITH STROKE */
+#define XK_Nacute                        0x01d1  /* U+0143 LATIN CAPITAL LETTER N WITH ACUTE */
+#define XK_Ncaron                        0x01d2  /* U+0147 LATIN CAPITAL LETTER N WITH CARON */
+#define XK_Odoubleacute                  0x01d5  /* U+0150 LATIN CAPITAL LETTER O WITH DOUBLE ACUTE */
+#define XK_Rcaron                        0x01d8  /* U+0158 LATIN CAPITAL LETTER R WITH CARON */
+#define XK_Uring                         0x01d9  /* U+016E LATIN CAPITAL LETTER U WITH RING ABOVE */
+#define XK_Udoubleacute                  0x01db  /* U+0170 LATIN CAPITAL LETTER U WITH DOUBLE ACUTE */
+#define XK_Tcedilla                      0x01de  /* U+0162 LATIN CAPITAL LETTER T WITH CEDILLA */
+#define XK_racute                        0x01e0  /* U+0155 LATIN SMALL LETTER R WITH ACUTE */
+#define XK_abreve                        0x01e3  /* U+0103 LATIN SMALL LETTER A WITH BREVE */
+#define XK_lacute                        0x01e5  /* U+013A LATIN SMALL LETTER L WITH ACUTE */
+#define XK_cacute                        0x01e6  /* U+0107 LATIN SMALL LETTER C WITH ACUTE */
+#define XK_ccaron                        0x01e8  /* U+010D LATIN SMALL LETTER C WITH CARON */
+#define XK_eogonek                       0x01ea  /* U+0119 LATIN SMALL LETTER E WITH OGONEK */
+#define XK_ecaron                        0x01ec  /* U+011B LATIN SMALL LETTER E WITH CARON */
+#define XK_dcaron                        0x01ef  /* U+010F LATIN SMALL LETTER D WITH CARON */
+#define XK_dstroke                       0x01f0  /* U+0111 LATIN SMALL LETTER D WITH STROKE */
+#define XK_nacute                        0x01f1  /* U+0144 LATIN SMALL LETTER N WITH ACUTE */
+#define XK_ncaron                        0x01f2  /* U+0148 LATIN SMALL LETTER N WITH CARON */
+#define XK_odoubleacute                  0x01f5  /* U+0151 LATIN SMALL LETTER O WITH DOUBLE ACUTE */
+#define XK_rcaron                        0x01f8  /* U+0159 LATIN SMALL LETTER R WITH CARON */
+#define XK_uring                         0x01f9  /* U+016F LATIN SMALL LETTER U WITH RING ABOVE */
+#define XK_udoubleacute                  0x01fb  /* U+0171 LATIN SMALL LETTER U WITH DOUBLE ACUTE */
+#define XK_tcedilla                      0x01fe  /* U+0163 LATIN SMALL LETTER T WITH CEDILLA */
+#define XK_abovedot                      0x01ff  /* U+02D9 DOT ABOVE */
+#endif /* XK_LATIN2 */
+
+/*
+ * Latin 3
+ * Byte 3 = 2
+ */
+
+#ifdef XK_LATIN3
+#define XK_Hstroke                       0x02a1  /* U+0126 LATIN CAPITAL LETTER H WITH STROKE */
+#define XK_Hcircumflex                   0x02a6  /* U+0124 LATIN CAPITAL LETTER H WITH CIRCUMFLEX */
+#define XK_Iabovedot                     0x02a9  /* U+0130 LATIN CAPITAL LETTER I WITH DOT ABOVE */
+#define XK_Gbreve                        0x02ab  /* U+011E LATIN CAPITAL LETTER G WITH BREVE */
+#define XK_Jcircumflex                   0x02ac  /* U+0134 LATIN CAPITAL LETTER J WITH CIRCUMFLEX */
+#define XK_hstroke                       0x02b1  /* U+0127 LATIN SMALL LETTER H WITH STROKE */
+#define XK_hcircumflex                   0x02b6  /* U+0125 LATIN SMALL LETTER H WITH CIRCUMFLEX */
+#define XK_idotless                      0x02b9  /* U+0131 LATIN SMALL LETTER DOTLESS I */
+#define XK_gbreve                        0x02bb  /* U+011F LATIN SMALL LETTER G WITH BREVE */
+#define XK_jcircumflex                   0x02bc  /* U+0135 LATIN SMALL LETTER J WITH CIRCUMFLEX */
+#define XK_Cabovedot                     0x02c5  /* U+010A LATIN CAPITAL LETTER C WITH DOT ABOVE */
+#define XK_Ccircumflex                   0x02c6  /* U+0108 LATIN CAPITAL LETTER C WITH CIRCUMFLEX */
+#define XK_Gabovedot                     0x02d5  /* U+0120 LATIN CAPITAL LETTER G WITH DOT ABOVE */
+#define XK_Gcircumflex                   0x02d8  /* U+011C LATIN CAPITAL LETTER G WITH CIRCUMFLEX */
+#define XK_Ubreve                        0x02dd  /* U+016C LATIN CAPITAL LETTER U WITH BREVE */
+#define XK_Scircumflex                   0x02de  /* U+015C LATIN CAPITAL LETTER S WITH CIRCUMFLEX */
+#define XK_cabovedot                     0x02e5  /* U+010B LATIN SMALL LETTER C WITH DOT ABOVE */
+#define XK_ccircumflex                   0x02e6  /* U+0109 LATIN SMALL LETTER C WITH CIRCUMFLEX */
+#define XK_gabovedot                     0x02f5  /* U+0121 LATIN SMALL LETTER G WITH DOT ABOVE */
+#define XK_gcircumflex                   0x02f8  /* U+011D LATIN SMALL LETTER G WITH CIRCUMFLEX */
+#define XK_ubreve                        0x02fd  /* U+016D LATIN SMALL LETTER U WITH BREVE */
+#define XK_scircumflex                   0x02fe  /* U+015D LATIN SMALL LETTER S WITH CIRCUMFLEX */
+#endif /* XK_LATIN3 */
+
+
+/*
+ * Latin 4
+ * Byte 3 = 3
+ */
+
+#ifdef XK_LATIN4
+#define XK_kra                           0x03a2  /* U+0138 LATIN SMALL LETTER KRA */
+#define XK_kappa                         0x03a2  /* deprecated */
+#define XK_Rcedilla                      0x03a3  /* U+0156 LATIN CAPITAL LETTER R WITH CEDILLA */
+#define XK_Itilde                        0x03a5  /* U+0128 LATIN CAPITAL LETTER I WITH TILDE */
+#define XK_Lcedilla                      0x03a6  /* U+013B LATIN CAPITAL LETTER L WITH CEDILLA */
+#define XK_Emacron                       0x03aa  /* U+0112 LATIN CAPITAL LETTER E WITH MACRON */
+#define XK_Gcedilla                      0x03ab  /* U+0122 LATIN CAPITAL LETTER G WITH CEDILLA */
+#define XK_Tslash                        0x03ac  /* U+0166 LATIN CAPITAL LETTER T WITH STROKE */
+#define XK_rcedilla                      0x03b3  /* U+0157 LATIN SMALL LETTER R WITH CEDILLA */
+#define XK_itilde                        0x03b5  /* U+0129 LATIN SMALL LETTER I WITH TILDE */
+#define XK_lcedilla                      0x03b6  /* U+013C LATIN SMALL LETTER L WITH CEDILLA */
+#define XK_emacron                       0x03ba  /* U+0113 LATIN SMALL LETTER E WITH MACRON */
+#define XK_gcedilla                      0x03bb  /* U+0123 LATIN SMALL LETTER G WITH CEDILLA */
+#define XK_tslash                        0x03bc  /* U+0167 LATIN SMALL LETTER T WITH STROKE */
+#define XK_ENG                           0x03bd  /* U+014A LATIN CAPITAL LETTER ENG */
+#define XK_eng                           0x03bf  /* U+014B LATIN SMALL LETTER ENG */
+#define XK_Amacron                       0x03c0  /* U+0100 LATIN CAPITAL LETTER A WITH MACRON */
+#define XK_Iogonek                       0x03c7  /* U+012E LATIN CAPITAL LETTER I WITH OGONEK */
+#define XK_Eabovedot                     0x03cc  /* U+0116 LATIN CAPITAL LETTER E WITH DOT ABOVE */
+#define XK_Imacron                       0x03cf  /* U+012A LATIN CAPITAL LETTER I WITH MACRON */
+#define XK_Ncedilla                      0x03d1  /* U+0145 LATIN CAPITAL LETTER N WITH CEDILLA */
+#define XK_Omacron                       0x03d2  /* U+014C LATIN CAPITAL LETTER O WITH MACRON */
+#define XK_Kcedilla                      0x03d3  /* U+0136 LATIN CAPITAL LETTER K WITH CEDILLA */
+#define XK_Uogonek                       0x03d9  /* U+0172 LATIN CAPITAL LETTER U WITH OGONEK */
+#define XK_Utilde                        0x03dd  /* U+0168 LATIN CAPITAL LETTER U WITH TILDE */
+#define XK_Umacron                       0x03de  /* U+016A LATIN CAPITAL LETTER U WITH MACRON */
+#define XK_amacron                       0x03e0  /* U+0101 LATIN SMALL LETTER A WITH MACRON */
+#define XK_iogonek                       0x03e7  /* U+012F LATIN SMALL LETTER I WITH OGONEK */
+#define XK_eabovedot                     0x03ec  /* U+0117 LATIN SMALL LETTER E WITH DOT ABOVE */
+#define XK_imacron                       0x03ef  /* U+012B LATIN SMALL LETTER I WITH MACRON */
+#define XK_ncedilla                      0x03f1  /* U+0146 LATIN SMALL LETTER N WITH CEDILLA */
+#define XK_omacron                       0x03f2  /* U+014D LATIN SMALL LETTER O WITH MACRON */
+#define XK_kcedilla                      0x03f3  /* U+0137 LATIN SMALL LETTER K WITH CEDILLA */
+#define XK_uogonek                       0x03f9  /* U+0173 LATIN SMALL LETTER U WITH OGONEK */
+#define XK_utilde                        0x03fd  /* U+0169 LATIN SMALL LETTER U WITH TILDE */
+#define XK_umacron                       0x03fe  /* U+016B LATIN SMALL LETTER U WITH MACRON */
+#endif /* XK_LATIN4 */
+
+/*
+ * Latin 9
+ * Byte 3 = 0x13
+ */
+
+#ifdef XK_LATIN9
+#define XK_OE                            0x13bc  /* U+0152 LATIN CAPITAL LIGATURE OE */
+#define XK_oe                            0x13bd  /* U+0153 LATIN SMALL LIGATURE OE */
+#define XK_Ydiaeresis                    0x13be  /* U+0178 LATIN CAPITAL LETTER Y WITH DIAERESIS */
+#endif /* XK_LATIN9 */
+
+/*
+ * Katakana
+ * Byte 3 = 4
+ */
+
+#ifdef XK_KATAKANA
+#define XK_overline                      0x047e  /* U+203E OVERLINE */
+#define XK_kana_fullstop                 0x04a1  /* U+3002 IDEOGRAPHIC FULL STOP */
+#define XK_kana_openingbracket           0x04a2  /* U+300C LEFT CORNER BRACKET */
+#define XK_kana_closingbracket           0x04a3  /* U+300D RIGHT CORNER BRACKET */
+#define XK_kana_comma                    0x04a4  /* U+3001 IDEOGRAPHIC COMMA */
+#define XK_kana_conjunctive              0x04a5  /* U+30FB KATAKANA MIDDLE DOT */
+#define XK_kana_middledot                0x04a5  /* deprecated */
+#define XK_kana_WO                       0x04a6  /* U+30F2 KATAKANA LETTER WO */
+#define XK_kana_a                        0x04a7  /* U+30A1 KATAKANA LETTER SMALL A */
+#define XK_kana_i                        0x04a8  /* U+30A3 KATAKANA LETTER SMALL I */
+#define XK_kana_u                        0x04a9  /* U+30A5 KATAKANA LETTER SMALL U */
+#define XK_kana_e                        0x04aa  /* U+30A7 KATAKANA LETTER SMALL E */
+#define XK_kana_o                        0x04ab  /* U+30A9 KATAKANA LETTER SMALL O */
+#define XK_kana_ya                       0x04ac  /* U+30E3 KATAKANA LETTER SMALL YA */
+#define XK_kana_yu                       0x04ad  /* U+30E5 KATAKANA LETTER SMALL YU */
+#define XK_kana_yo                       0x04ae  /* U+30E7 KATAKANA LETTER SMALL YO */
+#define XK_kana_tsu                      0x04af  /* U+30C3 KATAKANA LETTER SMALL TU */
+#define XK_kana_tu                       0x04af  /* deprecated */
+#define XK_prolongedsound                0x04b0  /* U+30FC KATAKANA-HIRAGANA PROLONGED SOUND MARK */
+#define XK_kana_A                        0x04b1  /* U+30A2 KATAKANA LETTER A */
+#define XK_kana_I                        0x04b2  /* U+30A4 KATAKANA LETTER I */
+#define XK_kana_U                        0x04b3  /* U+30A6 KATAKANA LETTER U */
+#define XK_kana_E                        0x04b4  /* U+30A8 KATAKANA LETTER E */
+#define XK_kana_O                        0x04b5  /* U+30AA KATAKANA LETTER O */
+#define XK_kana_KA                       0x04b6  /* U+30AB KATAKANA LETTER KA */
+#define XK_kana_KI                       0x04b7  /* U+30AD KATAKANA LETTER KI */
+#define XK_kana_KU                       0x04b8  /* U+30AF KATAKANA LETTER KU */
+#define XK_kana_KE                       0x04b9  /* U+30B1 KATAKANA LETTER KE */
+#define XK_kana_KO                       0x04ba  /* U+30B3 KATAKANA LETTER KO */
+#define XK_kana_SA                       0x04bb  /* U+30B5 KATAKANA LETTER SA */
+#define XK_kana_SHI                      0x04bc  /* U+30B7 KATAKANA LETTER SI */
+#define XK_kana_SU                       0x04bd  /* U+30B9 KATAKANA LETTER SU */
+#define XK_kana_SE                       0x04be  /* U+30BB KATAKANA LETTER SE */
+#define XK_kana_SO                       0x04bf  /* U+30BD KATAKANA LETTER SO */
+#define XK_kana_TA                       0x04c0  /* U+30BF KATAKANA LETTER TA */
+#define XK_kana_CHI                      0x04c1  /* U+30C1 KATAKANA LETTER TI */
+#define XK_kana_TI                       0x04c1  /* deprecated */
+#define XK_kana_TSU                      0x04c2  /* U+30C4 KATAKANA LETTER TU */
+#define XK_kana_TU                       0x04c2  /* deprecated */
+#define XK_kana_TE                       0x04c3  /* U+30C6 KATAKANA LETTER TE */
+#define XK_kana_TO                       0x04c4  /* U+30C8 KATAKANA LETTER TO */
+#define XK_kana_NA                       0x04c5  /* U+30CA KATAKANA LETTER NA */
+#define XK_kana_NI                       0x04c6  /* U+30CB KATAKANA LETTER NI */
+#define XK_kana_NU                       0x04c7  /* U+30CC KATAKANA LETTER NU */
+#define XK_kana_NE                       0x04c8  /* U+30CD KATAKANA LETTER NE */
+#define XK_kana_NO                       0x04c9  /* U+30CE KATAKANA LETTER NO */
+#define XK_kana_HA                       0x04ca  /* U+30CF KATAKANA LETTER HA */
+#define XK_kana_HI                       0x04cb  /* U+30D2 KATAKANA LETTER HI */
+#define XK_kana_FU                       0x04cc  /* U+30D5 KATAKANA LETTER HU */
+#define XK_kana_HU                       0x04cc  /* deprecated */
+#define XK_kana_HE                       0x04cd  /* U+30D8 KATAKANA LETTER HE */
+#define XK_kana_HO                       0x04ce  /* U+30DB KATAKANA LETTER HO */
+#define XK_kana_MA                       0x04cf  /* U+30DE KATAKANA LETTER MA */
+#define XK_kana_MI                       0x04d0  /* U+30DF KATAKANA LETTER MI */
+#define XK_kana_MU                       0x04d1  /* U+30E0 KATAKANA LETTER MU */
+#define XK_kana_ME                       0x04d2  /* U+30E1 KATAKANA LETTER ME */
+#define XK_kana_MO                       0x04d3  /* U+30E2 KATAKANA LETTER MO */
+#define XK_kana_YA                       0x04d4  /* U+30E4 KATAKANA LETTER YA */
+#define XK_kana_YU                       0x04d5  /* U+30E6 KATAKANA LETTER YU */
+#define XK_kana_YO                       0x04d6  /* U+30E8 KATAKANA LETTER YO */
+#define XK_kana_RA                       0x04d7  /* U+30E9 KATAKANA LETTER RA */
+#define XK_kana_RI                       0x04d8  /* U+30EA KATAKANA LETTER RI */
+#define XK_kana_RU                       0x04d9  /* U+30EB KATAKANA LETTER RU */
+#define XK_kana_RE                       0x04da  /* U+30EC KATAKANA LETTER RE */
+#define XK_kana_RO                       0x04db  /* U+30ED KATAKANA LETTER RO */
+#define XK_kana_WA                       0x04dc  /* U+30EF KATAKANA LETTER WA */
+#define XK_kana_N                        0x04dd  /* U+30F3 KATAKANA LETTER N */
+#define XK_voicedsound                   0x04de  /* U+309B KATAKANA-HIRAGANA VOICED SOUND MARK */
+#define XK_semivoicedsound               0x04df  /* U+309C KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK */
+#define XK_kana_switch                   0xff7e  /* Alias for mode_switch */
+#endif /* XK_KATAKANA */
+
+/*
+ * Arabic
+ * Byte 3 = 5
+ */
+
+#ifdef XK_ARABIC
+#define XK_Arabic_comma                  0x05ac  /* U+060C ARABIC COMMA */
+#define XK_Arabic_semicolon              0x05bb  /* U+061B ARABIC SEMICOLON */
+#define XK_Arabic_question_mark          0x05bf  /* U+061F ARABIC QUESTION MARK */
+#define XK_Arabic_hamza                  0x05c1  /* U+0621 ARABIC LETTER HAMZA */
+#define XK_Arabic_maddaonalef            0x05c2  /* U+0622 ARABIC LETTER ALEF WITH MADDA ABOVE */
+#define XK_Arabic_hamzaonalef            0x05c3  /* U+0623 ARABIC LETTER ALEF WITH HAMZA ABOVE */
+#define XK_Arabic_hamzaonwaw             0x05c4  /* U+0624 ARABIC LETTER WAW WITH HAMZA ABOVE */
+#define XK_Arabic_hamzaunderalef         0x05c5  /* U+0625 ARABIC LETTER ALEF WITH HAMZA BELOW */
+#define XK_Arabic_hamzaonyeh             0x05c6  /* U+0626 ARABIC LETTER YEH WITH HAMZA ABOVE */
+#define XK_Arabic_alef                   0x05c7  /* U+0627 ARABIC LETTER ALEF */
+#define XK_Arabic_beh                    0x05c8  /* U+0628 ARABIC LETTER BEH */
+#define XK_Arabic_tehmarbuta             0x05c9  /* U+0629 ARABIC LETTER TEH MARBUTA */
+#define XK_Arabic_teh                    0x05ca  /* U+062A ARABIC LETTER TEH */
+#define XK_Arabic_theh                   0x05cb  /* U+062B ARABIC LETTER THEH */
+#define XK_Arabic_jeem                   0x05cc  /* U+062C ARABIC LETTER JEEM */
+#define XK_Arabic_hah                    0x05cd  /* U+062D ARABIC LETTER HAH */
+#define XK_Arabic_khah                   0x05ce  /* U+062E ARABIC LETTER KHAH */
+#define XK_Arabic_dal                    0x05cf  /* U+062F ARABIC LETTER DAL */
+#define XK_Arabic_thal                   0x05d0  /* U+0630 ARABIC LETTER THAL */
+#define XK_Arabic_ra                     0x05d1  /* U+0631 ARABIC LETTER REH */
+#define XK_Arabic_zain                   0x05d2  /* U+0632 ARABIC LETTER ZAIN */
+#define XK_Arabic_seen                   0x05d3  /* U+0633 ARABIC LETTER SEEN */
+#define XK_Arabic_sheen                  0x05d4  /* U+0634 ARABIC LETTER SHEEN */
+#define XK_Arabic_sad                    0x05d5  /* U+0635 ARABIC LETTER SAD */
+#define XK_Arabic_dad                    0x05d6  /* U+0636 ARABIC LETTER DAD */
+#define XK_Arabic_tah                    0x05d7  /* U+0637 ARABIC LETTER TAH */
+#define XK_Arabic_zah                    0x05d8  /* U+0638 ARABIC LETTER ZAH */
+#define XK_Arabic_ain                    0x05d9  /* U+0639 ARABIC LETTER AIN */
+#define XK_Arabic_ghain                  0x05da  /* U+063A ARABIC LETTER GHAIN */
+#define XK_Arabic_tatweel                0x05e0  /* U+0640 ARABIC TATWEEL */
+#define XK_Arabic_feh                    0x05e1  /* U+0641 ARABIC LETTER FEH */
+#define XK_Arabic_qaf                    0x05e2  /* U+0642 ARABIC LETTER QAF */
+#define XK_Arabic_kaf                    0x05e3  /* U+0643 ARABIC LETTER KAF */
+#define XK_Arabic_lam                    0x05e4  /* U+0644 ARABIC LETTER LAM */
+#define XK_Arabic_meem                   0x05e5  /* U+0645 ARABIC LETTER MEEM */
+#define XK_Arabic_noon                   0x05e6  /* U+0646 ARABIC LETTER NOON */
+#define XK_Arabic_ha                     0x05e7  /* U+0647 ARABIC LETTER HEH */
+#define XK_Arabic_heh                    0x05e7  /* deprecated */
+#define XK_Arabic_waw                    0x05e8  /* U+0648 ARABIC LETTER WAW */
+#define XK_Arabic_alefmaksura            0x05e9  /* U+0649 ARABIC LETTER ALEF MAKSURA */
+#define XK_Arabic_yeh                    0x05ea  /* U+064A ARABIC LETTER YEH */
+#define XK_Arabic_fathatan               0x05eb  /* U+064B ARABIC FATHATAN */
+#define XK_Arabic_dammatan               0x05ec  /* U+064C ARABIC DAMMATAN */
+#define XK_Arabic_kasratan               0x05ed  /* U+064D ARABIC KASRATAN */
+#define XK_Arabic_fatha                  0x05ee  /* U+064E ARABIC FATHA */
+#define XK_Arabic_damma                  0x05ef  /* U+064F ARABIC DAMMA */
+#define XK_Arabic_kasra                  0x05f0  /* U+0650 ARABIC KASRA */
+#define XK_Arabic_shadda                 0x05f1  /* U+0651 ARABIC SHADDA */
+#define XK_Arabic_sukun                  0x05f2  /* U+0652 ARABIC SUKUN */
+#define XK_Arabic_switch                 0xff7e  /* Alias for mode_switch */
+#endif /* XK_ARABIC */
+
+/*
+ * Cyrillic
+ * Byte 3 = 6
+ */
+#ifdef XK_CYRILLIC
+#define XK_Serbian_dje                   0x06a1  /* U+0452 CYRILLIC SMALL LETTER DJE */
+#define XK_Macedonia_gje                 0x06a2  /* U+0453 CYRILLIC SMALL LETTER GJE */
+#define XK_Cyrillic_io                   0x06a3  /* U+0451 CYRILLIC SMALL LETTER IO */
+#define XK_Ukrainian_ie                  0x06a4  /* U+0454 CYRILLIC SMALL LETTER UKRAINIAN IE */
+#define XK_Ukranian_je                   0x06a4  /* deprecated */
+#define XK_Macedonia_dse                 0x06a5  /* U+0455 CYRILLIC SMALL LETTER DZE */
+#define XK_Ukrainian_i                   0x06a6  /* U+0456 CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I */
+#define XK_Ukranian_i                    0x06a6  /* deprecated */
+#define XK_Ukrainian_yi                  0x06a7  /* U+0457 CYRILLIC SMALL LETTER YI */
+#define XK_Ukranian_yi                   0x06a7  /* deprecated */
+#define XK_Cyrillic_je                   0x06a8  /* U+0458 CYRILLIC SMALL LETTER JE */
+#define XK_Serbian_je                    0x06a8  /* deprecated */
+#define XK_Cyrillic_lje                  0x06a9  /* U+0459 CYRILLIC SMALL LETTER LJE */
+#define XK_Serbian_lje                   0x06a9  /* deprecated */
+#define XK_Cyrillic_nje                  0x06aa  /* U+045A CYRILLIC SMALL LETTER NJE */
+#define XK_Serbian_nje                   0x06aa  /* deprecated */
+#define XK_Serbian_tshe                  0x06ab  /* U+045B CYRILLIC SMALL LETTER TSHE */
+#define XK_Macedonia_kje                 0x06ac  /* U+045C CYRILLIC SMALL LETTER KJE */
+#define XK_Ukrainian_ghe_with_upturn     0x06ad  /* U+0491 CYRILLIC SMALL LETTER GHE WITH UPTURN */
+#define XK_Byelorussian_shortu           0x06ae  /* U+045E CYRILLIC SMALL LETTER SHORT U */
+#define XK_Cyrillic_dzhe                 0x06af  /* U+045F CYRILLIC SMALL LETTER DZHE */
+#define XK_Serbian_dze                   0x06af  /* deprecated */
+#define XK_numerosign                    0x06b0  /* U+2116 NUMERO SIGN */
+#define XK_Serbian_DJE                   0x06b1  /* U+0402 CYRILLIC CAPITAL LETTER DJE */
+#define XK_Macedonia_GJE                 0x06b2  /* U+0403 CYRILLIC CAPITAL LETTER GJE */
+#define XK_Cyrillic_IO                   0x06b3  /* U+0401 CYRILLIC CAPITAL LETTER IO */
+#define XK_Ukrainian_IE                  0x06b4  /* U+0404 CYRILLIC CAPITAL LETTER UKRAINIAN IE */
+#define XK_Ukranian_JE                   0x06b4  /* deprecated */
+#define XK_Macedonia_DSE                 0x06b5  /* U+0405 CYRILLIC CAPITAL LETTER DZE */
+#define XK_Ukrainian_I                   0x06b6  /* U+0406 CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I */
+#define XK_Ukranian_I                    0x06b6  /* deprecated */
+#define XK_Ukrainian_YI                  0x06b7  /* U+0407 CYRILLIC CAPITAL LETTER YI */
+#define XK_Ukranian_YI                   0x06b7  /* deprecated */
+#define XK_Cyrillic_JE                   0x06b8  /* U+0408 CYRILLIC CAPITAL LETTER JE */
+#define XK_Serbian_JE                    0x06b8  /* deprecated */
+#define XK_Cyrillic_LJE                  0x06b9  /* U+0409 CYRILLIC CAPITAL LETTER LJE */
+#define XK_Serbian_LJE                   0x06b9  /* deprecated */
+#define XK_Cyrillic_NJE                  0x06ba  /* U+040A CYRILLIC CAPITAL LETTER NJE */
+#define XK_Serbian_NJE                   0x06ba  /* deprecated */
+#define XK_Serbian_TSHE                  0x06bb  /* U+040B CYRILLIC CAPITAL LETTER TSHE */
+#define XK_Macedonia_KJE                 0x06bc  /* U+040C CYRILLIC CAPITAL LETTER KJE */
+#define XK_Ukrainian_GHE_WITH_UPTURN     0x06bd  /* U+0490 CYRILLIC CAPITAL LETTER GHE WITH UPTURN */
+#define XK_Byelorussian_SHORTU           0x06be  /* U+040E CYRILLIC CAPITAL LETTER SHORT U */
+#define XK_Cyrillic_DZHE                 0x06bf  /* U+040F CYRILLIC CAPITAL LETTER DZHE */
+#define XK_Serbian_DZE                   0x06bf  /* deprecated */
+#define XK_Cyrillic_yu                   0x06c0  /* U+044E CYRILLIC SMALL LETTER YU */
+#define XK_Cyrillic_a                    0x06c1  /* U+0430 CYRILLIC SMALL LETTER A */
+#define XK_Cyrillic_be                   0x06c2  /* U+0431 CYRILLIC SMALL LETTER BE */
+#define XK_Cyrillic_tse                  0x06c3  /* U+0446 CYRILLIC SMALL LETTER TSE */
+#define XK_Cyrillic_de                   0x06c4  /* U+0434 CYRILLIC SMALL LETTER DE */
+#define XK_Cyrillic_ie                   0x06c5  /* U+0435 CYRILLIC SMALL LETTER IE */
+#define XK_Cyrillic_ef                   0x06c6  /* U+0444 CYRILLIC SMALL LETTER EF */
+#define XK_Cyrillic_ghe                  0x06c7  /* U+0433 CYRILLIC SMALL LETTER GHE */
+#define XK_Cyrillic_ha                   0x06c8  /* U+0445 CYRILLIC SMALL LETTER HA */
+#define XK_Cyrillic_i                    0x06c9  /* U+0438 CYRILLIC SMALL LETTER I */
+#define XK_Cyrillic_shorti               0x06ca  /* U+0439 CYRILLIC SMALL LETTER SHORT I */
+#define XK_Cyrillic_ka                   0x06cb  /* U+043A CYRILLIC SMALL LETTER KA */
+#define XK_Cyrillic_el                   0x06cc  /* U+043B CYRILLIC SMALL LETTER EL */
+#define XK_Cyrillic_em                   0x06cd  /* U+043C CYRILLIC SMALL LETTER EM */
+#define XK_Cyrillic_en                   0x06ce  /* U+043D CYRILLIC SMALL LETTER EN */
+#define XK_Cyrillic_o                    0x06cf  /* U+043E CYRILLIC SMALL LETTER O */
+#define XK_Cyrillic_pe                   0x06d0  /* U+043F CYRILLIC SMALL LETTER PE */
+#define XK_Cyrillic_ya                   0x06d1  /* U+044F CYRILLIC SMALL LETTER YA */
+#define XK_Cyrillic_er                   0x06d2  /* U+0440 CYRILLIC SMALL LETTER ER */
+#define XK_Cyrillic_es                   0x06d3  /* U+0441 CYRILLIC SMALL LETTER ES */
+#define XK_Cyrillic_te                   0x06d4  /* U+0442 CYRILLIC SMALL LETTER TE */
+#define XK_Cyrillic_u                    0x06d5  /* U+0443 CYRILLIC SMALL LETTER U */
+#define XK_Cyrillic_zhe                  0x06d6  /* U+0436 CYRILLIC SMALL LETTER ZHE */
+#define XK_Cyrillic_ve                   0x06d7  /* U+0432 CYRILLIC SMALL LETTER VE */
+#define XK_Cyrillic_softsign             0x06d8  /* U+044C CYRILLIC SMALL LETTER SOFT SIGN */
+#define XK_Cyrillic_yeru                 0x06d9  /* U+044B CYRILLIC SMALL LETTER YERU */
+#define XK_Cyrillic_ze                   0x06da  /* U+0437 CYRILLIC SMALL LETTER ZE */
+#define XK_Cyrillic_sha                  0x06db  /* U+0448 CYRILLIC SMALL LETTER SHA */
+#define XK_Cyrillic_e                    0x06dc  /* U+044D CYRILLIC SMALL LETTER E */
+#define XK_Cyrillic_shcha                0x06dd  /* U+0449 CYRILLIC SMALL LETTER SHCHA */
+#define XK_Cyrillic_che                  0x06de  /* U+0447 CYRILLIC SMALL LETTER CHE */
+#define XK_Cyrillic_hardsign             0x06df  /* U+044A CYRILLIC SMALL LETTER HARD SIGN */
+#define XK_Cyrillic_YU                   0x06e0  /* U+042E CYRILLIC CAPITAL LETTER YU */
+#define XK_Cyrillic_A                    0x06e1  /* U+0410 CYRILLIC CAPITAL LETTER A */
+#define XK_Cyrillic_BE                   0x06e2  /* U+0411 CYRILLIC CAPITAL LETTER BE */
+#define XK_Cyrillic_TSE                  0x06e3  /* U+0426 CYRILLIC CAPITAL LETTER TSE */
+#define XK_Cyrillic_DE                   0x06e4  /* U+0414 CYRILLIC CAPITAL LETTER DE */
+#define XK_Cyrillic_IE                   0x06e5  /* U+0415 CYRILLIC CAPITAL LETTER IE */
+#define XK_Cyrillic_EF                   0x06e6  /* U+0424 CYRILLIC CAPITAL LETTER EF */
+#define XK_Cyrillic_GHE                  0x06e7  /* U+0413 CYRILLIC CAPITAL LETTER GHE */
+#define XK_Cyrillic_HA                   0x06e8  /* U+0425 CYRILLIC CAPITAL LETTER HA */
+#define XK_Cyrillic_I                    0x06e9  /* U+0418 CYRILLIC CAPITAL LETTER I */
+#define XK_Cyrillic_SHORTI               0x06ea  /* U+0419 CYRILLIC CAPITAL LETTER SHORT I */
+#define XK_Cyrillic_KA                   0x06eb  /* U+041A CYRILLIC CAPITAL LETTER KA */
+#define XK_Cyrillic_EL                   0x06ec  /* U+041B CYRILLIC CAPITAL LETTER EL */
+#define XK_Cyrillic_EM                   0x06ed  /* U+041C CYRILLIC CAPITAL LETTER EM */
+#define XK_Cyrillic_EN                   0x06ee  /* U+041D CYRILLIC CAPITAL LETTER EN */
+#define XK_Cyrillic_O                    0x06ef  /* U+041E CYRILLIC CAPITAL LETTER O */
+#define XK_Cyrillic_PE                   0x06f0  /* U+041F CYRILLIC CAPITAL LETTER PE */
+#define XK_Cyrillic_YA                   0x06f1  /* U+042F CYRILLIC CAPITAL LETTER YA */
+#define XK_Cyrillic_ER                   0x06f2  /* U+0420 CYRILLIC CAPITAL LETTER ER */
+#define XK_Cyrillic_ES                   0x06f3  /* U+0421 CYRILLIC CAPITAL LETTER ES */
+#define XK_Cyrillic_TE                   0x06f4  /* U+0422 CYRILLIC CAPITAL LETTER TE */
+#define XK_Cyrillic_U                    0x06f5  /* U+0423 CYRILLIC CAPITAL LETTER U */
+#define XK_Cyrillic_ZHE                  0x06f6  /* U+0416 CYRILLIC CAPITAL LETTER ZHE */
+#define XK_Cyrillic_VE                   0x06f7  /* U+0412 CYRILLIC CAPITAL LETTER VE */
+#define XK_Cyrillic_SOFTSIGN             0x06f8  /* U+042C CYRILLIC CAPITAL LETTER SOFT SIGN */
+#define XK_Cyrillic_YERU                 0x06f9  /* U+042B CYRILLIC CAPITAL LETTER YERU */
+#define XK_Cyrillic_ZE                   0x06fa  /* U+0417 CYRILLIC CAPITAL LETTER ZE */
+#define XK_Cyrillic_SHA                  0x06fb  /* U+0428 CYRILLIC CAPITAL LETTER SHA */
+#define XK_Cyrillic_E                    0x06fc  /* U+042D CYRILLIC CAPITAL LETTER E */
+#define XK_Cyrillic_SHCHA                0x06fd  /* U+0429 CYRILLIC CAPITAL LETTER SHCHA */
+#define XK_Cyrillic_CHE                  0x06fe  /* U+0427 CYRILLIC CAPITAL LETTER CHE */
+#define XK_Cyrillic_HARDSIGN             0x06ff  /* U+042A CYRILLIC CAPITAL LETTER HARD SIGN */
+#endif /* XK_CYRILLIC */
+
+/*
+ * Greek
+ * (based on an early draft of, and not quite identical to, ISO/IEC 8859-7)
+ * Byte 3 = 7
+ */
+
+#ifdef XK_GREEK
+#define XK_Greek_ALPHAaccent             0x07a1  /* U+0386 GREEK CAPITAL LETTER ALPHA WITH TONOS */
+#define XK_Greek_EPSILONaccent           0x07a2  /* U+0388 GREEK CAPITAL LETTER EPSILON WITH TONOS */
+#define XK_Greek_ETAaccent               0x07a3  /* U+0389 GREEK CAPITAL LETTER ETA WITH TONOS */
+#define XK_Greek_IOTAaccent              0x07a4  /* U+038A GREEK CAPITAL LETTER IOTA WITH TONOS */
+#define XK_Greek_IOTAdieresis            0x07a5  /* U+03AA GREEK CAPITAL LETTER IOTA WITH DIALYTIKA */
+#define XK_Greek_IOTAdiaeresis           0x07a5  /* old typo */
+#define XK_Greek_OMICRONaccent           0x07a7  /* U+038C GREEK CAPITAL LETTER OMICRON WITH TONOS */
+#define XK_Greek_UPSILONaccent           0x07a8  /* U+038E GREEK CAPITAL LETTER UPSILON WITH TONOS */
+#define XK_Greek_UPSILONdieresis         0x07a9  /* U+03AB GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA */
+#define XK_Greek_OMEGAaccent             0x07ab  /* U+038F GREEK CAPITAL LETTER OMEGA WITH TONOS */
+#define XK_Greek_accentdieresis          0x07ae  /* U+0385 GREEK DIALYTIKA TONOS */
+#define XK_Greek_horizbar                0x07af  /* U+2015 HORIZONTAL BAR */
+#define XK_Greek_alphaaccent             0x07b1  /* U+03AC GREEK SMALL LETTER ALPHA WITH TONOS */
+#define XK_Greek_epsilonaccent           0x07b2  /* U+03AD GREEK SMALL LETTER EPSILON WITH TONOS */
+#define XK_Greek_etaaccent               0x07b3  /* U+03AE GREEK SMALL LETTER ETA WITH TONOS */
+#define XK_Greek_iotaaccent              0x07b4  /* U+03AF GREEK SMALL LETTER IOTA WITH TONOS */
+#define XK_Greek_iotadieresis            0x07b5  /* U+03CA GREEK SMALL LETTER IOTA WITH DIALYTIKA */
+#define XK_Greek_iotaaccentdieresis      0x07b6  /* U+0390 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS */
+#define XK_Greek_omicronaccent           0x07b7  /* U+03CC GREEK SMALL LETTER OMICRON WITH TONOS */
+#define XK_Greek_upsilonaccent           0x07b8  /* U+03CD GREEK SMALL LETTER UPSILON WITH TONOS */
+#define XK_Greek_upsilondieresis         0x07b9  /* U+03CB GREEK SMALL LETTER UPSILON WITH DIALYTIKA */
+#define XK_Greek_upsilonaccentdieresis   0x07ba  /* U+03B0 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS */
+#define XK_Greek_omegaaccent             0x07bb  /* U+03CE GREEK SMALL LETTER OMEGA WITH TONOS */
+#define XK_Greek_ALPHA                   0x07c1  /* U+0391 GREEK CAPITAL LETTER ALPHA */
+#define XK_Greek_BETA                    0x07c2  /* U+0392 GREEK CAPITAL LETTER BETA */
+#define XK_Greek_GAMMA                   0x07c3  /* U+0393 GREEK CAPITAL LETTER GAMMA */
+#define XK_Greek_DELTA                   0x07c4  /* U+0394 GREEK CAPITAL LETTER DELTA */
+#define XK_Greek_EPSILON                 0x07c5  /* U+0395 GREEK CAPITAL LETTER EPSILON */
+#define XK_Greek_ZETA                    0x07c6  /* U+0396 GREEK CAPITAL LETTER ZETA */
+#define XK_Greek_ETA                     0x07c7  /* U+0397 GREEK CAPITAL LETTER ETA */
+#define XK_Greek_THETA                   0x07c8  /* U+0398 GREEK CAPITAL LETTER THETA */
+#define XK_Greek_IOTA                    0x07c9  /* U+0399 GREEK CAPITAL LETTER IOTA */
+#define XK_Greek_KAPPA                   0x07ca  /* U+039A GREEK CAPITAL LETTER KAPPA */
+#define XK_Greek_LAMDA                   0x07cb  /* U+039B GREEK CAPITAL LETTER LAMDA */
+#define XK_Greek_LAMBDA                  0x07cb  /* U+039B GREEK CAPITAL LETTER LAMDA */
+#define XK_Greek_MU                      0x07cc  /* U+039C GREEK CAPITAL LETTER MU */
+#define XK_Greek_NU                      0x07cd  /* U+039D GREEK CAPITAL LETTER NU */
+#define XK_Greek_XI                      0x07ce  /* U+039E GREEK CAPITAL LETTER XI */
+#define XK_Greek_OMICRON                 0x07cf  /* U+039F GREEK CAPITAL LETTER OMICRON */
+#define XK_Greek_PI                      0x07d0  /* U+03A0 GREEK CAPITAL LETTER PI */
+#define XK_Greek_RHO                     0x07d1  /* U+03A1 GREEK CAPITAL LETTER RHO */
+#define XK_Greek_SIGMA                   0x07d2  /* U+03A3 GREEK CAPITAL LETTER SIGMA */
+#define XK_Greek_TAU                     0x07d4  /* U+03A4 GREEK CAPITAL LETTER TAU */
+#define XK_Greek_UPSILON                 0x07d5  /* U+03A5 GREEK CAPITAL LETTER UPSILON */
+#define XK_Greek_PHI                     0x07d6  /* U+03A6 GREEK CAPITAL LETTER PHI */
+#define XK_Greek_CHI                     0x07d7  /* U+03A7 GREEK CAPITAL LETTER CHI */
+#define XK_Greek_PSI                     0x07d8  /* U+03A8 GREEK CAPITAL LETTER PSI */
+#define XK_Greek_OMEGA                   0x07d9  /* U+03A9 GREEK CAPITAL LETTER OMEGA */
+#define XK_Greek_alpha                   0x07e1  /* U+03B1 GREEK SMALL LETTER ALPHA */
+#define XK_Greek_beta                    0x07e2  /* U+03B2 GREEK SMALL LETTER BETA */
+#define XK_Greek_gamma                   0x07e3  /* U+03B3 GREEK SMALL LETTER GAMMA */
+#define XK_Greek_delta                   0x07e4  /* U+03B4 GREEK SMALL LETTER DELTA */
+#define XK_Greek_epsilon                 0x07e5  /* U+03B5 GREEK SMALL LETTER EPSILON */
+#define XK_Greek_zeta                    0x07e6  /* U+03B6 GREEK SMALL LETTER ZETA */
+#define XK_Greek_eta                     0x07e7  /* U+03B7 GREEK SMALL LETTER ETA */
+#define XK_Greek_theta                   0x07e8  /* U+03B8 GREEK SMALL LETTER THETA */
+#define XK_Greek_iota                    0x07e9  /* U+03B9 GREEK SMALL LETTER IOTA */
+#define XK_Greek_kappa                   0x07ea  /* U+03BA GREEK SMALL LETTER KAPPA */
+#define XK_Greek_lamda                   0x07eb  /* U+03BB GREEK SMALL LETTER LAMDA */
+#define XK_Greek_lambda                  0x07eb  /* U+03BB GREEK SMALL LETTER LAMDA */
+#define XK_Greek_mu                      0x07ec  /* U+03BC GREEK SMALL LETTER MU */
+#define XK_Greek_nu                      0x07ed  /* U+03BD GREEK SMALL LETTER NU */
+#define XK_Greek_xi                      0x07ee  /* U+03BE GREEK SMALL LETTER XI */
+#define XK_Greek_omicron                 0x07ef  /* U+03BF GREEK SMALL LETTER OMICRON */
+#define XK_Greek_pi                      0x07f0  /* U+03C0 GREEK SMALL LETTER PI */
+#define XK_Greek_rho                     0x07f1  /* U+03C1 GREEK SMALL LETTER RHO */
+#define XK_Greek_sigma                   0x07f2  /* U+03C3 GREEK SMALL LETTER SIGMA */
+#define XK_Greek_finalsmallsigma         0x07f3  /* U+03C2 GREEK SMALL LETTER FINAL SIGMA */
+#define XK_Greek_tau                     0x07f4  /* U+03C4 GREEK SMALL LETTER TAU */
+#define XK_Greek_upsilon                 0x07f5  /* U+03C5 GREEK SMALL LETTER UPSILON */
+#define XK_Greek_phi                     0x07f6  /* U+03C6 GREEK SMALL LETTER PHI */
+#define XK_Greek_chi                     0x07f7  /* U+03C7 GREEK SMALL LETTER CHI */
+#define XK_Greek_psi                     0x07f8  /* U+03C8 GREEK SMALL LETTER PSI */
+#define XK_Greek_omega                   0x07f9  /* U+03C9 GREEK SMALL LETTER OMEGA */
+#define XK_Greek_switch                  0xff7e  /* Alias for mode_switch */
+#endif /* XK_GREEK */
+
+/*
+ * Technical
+ * (from the DEC VT330/VT420 Technical Character Set, http://vt100.net/charsets/technical.html)
+ * Byte 3 = 8
+ */
+
+#ifdef XK_TECHNICAL
+#define XK_leftradical                   0x08a1  /* U+23B7 RADICAL SYMBOL BOTTOM */
+#define XK_topleftradical                0x08a2  /*(U+250C BOX DRAWINGS LIGHT DOWN AND RIGHT)*/
+#define XK_horizconnector                0x08a3  /*(U+2500 BOX DRAWINGS LIGHT HORIZONTAL)*/
+#define XK_topintegral                   0x08a4  /* U+2320 TOP HALF INTEGRAL */
+#define XK_botintegral                   0x08a5  /* U+2321 BOTTOM HALF INTEGRAL */
+#define XK_vertconnector                 0x08a6  /*(U+2502 BOX DRAWINGS LIGHT VERTICAL)*/
+#define XK_topleftsqbracket              0x08a7  /* U+23A1 LEFT SQUARE BRACKET UPPER CORNER */
+#define XK_botleftsqbracket              0x08a8  /* U+23A3 LEFT SQUARE BRACKET LOWER CORNER */
+#define XK_toprightsqbracket             0x08a9  /* U+23A4 RIGHT SQUARE BRACKET UPPER CORNER */
+#define XK_botrightsqbracket             0x08aa  /* U+23A6 RIGHT SQUARE BRACKET LOWER CORNER */
+#define XK_topleftparens                 0x08ab  /* U+239B LEFT PARENTHESIS UPPER HOOK */
+#define XK_botleftparens                 0x08ac  /* U+239D LEFT PARENTHESIS LOWER HOOK */
+#define XK_toprightparens                0x08ad  /* U+239E RIGHT PARENTHESIS UPPER HOOK */
+#define XK_botrightparens                0x08ae  /* U+23A0 RIGHT PARENTHESIS LOWER HOOK */
+#define XK_leftmiddlecurlybrace          0x08af  /* U+23A8 LEFT CURLY BRACKET MIDDLE PIECE */
+#define XK_rightmiddlecurlybrace         0x08b0  /* U+23AC RIGHT CURLY BRACKET MIDDLE PIECE */
+#define XK_topleftsummation              0x08b1
+#define XK_botleftsummation              0x08b2
+#define XK_topvertsummationconnector     0x08b3
+#define XK_botvertsummationconnector     0x08b4
+#define XK_toprightsummation             0x08b5
+#define XK_botrightsummation             0x08b6
+#define XK_rightmiddlesummation          0x08b7
+#define XK_lessthanequal                 0x08bc  /* U+2264 LESS-THAN OR EQUAL TO */
+#define XK_notequal                      0x08bd  /* U+2260 NOT EQUAL TO */
+#define XK_greaterthanequal              0x08be  /* U+2265 GREATER-THAN OR EQUAL TO */
+#define XK_integral                      0x08bf  /* U+222B INTEGRAL */
+#define XK_therefore                     0x08c0  /* U+2234 THEREFORE */
+#define XK_variation                     0x08c1  /* U+221D PROPORTIONAL TO */
+#define XK_infinity                      0x08c2  /* U+221E INFINITY */
+#define XK_nabla                         0x08c5  /* U+2207 NABLA */
+#define XK_approximate                   0x08c8  /* U+223C TILDE OPERATOR */
+#define XK_similarequal                  0x08c9  /* U+2243 ASYMPTOTICALLY EQUAL TO */
+#define XK_ifonlyif                      0x08cd  /* U+21D4 LEFT RIGHT DOUBLE ARROW */
+#define XK_implies                       0x08ce  /* U+21D2 RIGHTWARDS DOUBLE ARROW */
+#define XK_identical                     0x08cf  /* U+2261 IDENTICAL TO */
+#define XK_radical                       0x08d6  /* U+221A SQUARE ROOT */
+#define XK_includedin                    0x08da  /* U+2282 SUBSET OF */
+#define XK_includes                      0x08db  /* U+2283 SUPERSET OF */
+#define XK_intersection                  0x08dc  /* U+2229 INTERSECTION */
+#define XK_union                         0x08dd  /* U+222A UNION */
+#define XK_logicaland                    0x08de  /* U+2227 LOGICAL AND */
+#define XK_logicalor                     0x08df  /* U+2228 LOGICAL OR */
+#define XK_partialderivative             0x08ef  /* U+2202 PARTIAL DIFFERENTIAL */
+#define XK_function                      0x08f6  /* U+0192 LATIN SMALL LETTER F WITH HOOK */
+#define XK_leftarrow                     0x08fb  /* U+2190 LEFTWARDS ARROW */
+#define XK_uparrow                       0x08fc  /* U+2191 UPWARDS ARROW */
+#define XK_rightarrow                    0x08fd  /* U+2192 RIGHTWARDS ARROW */
+#define XK_downarrow                     0x08fe  /* U+2193 DOWNWARDS ARROW */
+#endif /* XK_TECHNICAL */
+
+/*
+ * Special
+ * (from the DEC VT100 Special Graphics Character Set)
+ * Byte 3 = 9
+ */
+
+#ifdef XK_SPECIAL
+#define XK_blank                         0x09df
+#define XK_soliddiamond                  0x09e0  /* U+25C6 BLACK DIAMOND */
+#define XK_checkerboard                  0x09e1  /* U+2592 MEDIUM SHADE */
+#define XK_ht                            0x09e2  /* U+2409 SYMBOL FOR HORIZONTAL TABULATION */
+#define XK_ff                            0x09e3  /* U+240C SYMBOL FOR FORM FEED */
+#define XK_cr                            0x09e4  /* U+240D SYMBOL FOR CARRIAGE RETURN */
+#define XK_lf                            0x09e5  /* U+240A SYMBOL FOR LINE FEED */
+#define XK_nl                            0x09e8  /* U+2424 SYMBOL FOR NEWLINE */
+#define XK_vt                            0x09e9  /* U+240B SYMBOL FOR VERTICAL TABULATION */
+#define XK_lowrightcorner                0x09ea  /* U+2518 BOX DRAWINGS LIGHT UP AND LEFT */
+#define XK_uprightcorner                 0x09eb  /* U+2510 BOX DRAWINGS LIGHT DOWN AND LEFT */
+#define XK_upleftcorner                  0x09ec  /* U+250C BOX DRAWINGS LIGHT DOWN AND RIGHT */
+#define XK_lowleftcorner                 0x09ed  /* U+2514 BOX DRAWINGS LIGHT UP AND RIGHT */
+#define XK_crossinglines                 0x09ee  /* U+253C BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL */
+#define XK_horizlinescan1                0x09ef  /* U+23BA HORIZONTAL SCAN LINE-1 */
+#define XK_horizlinescan3                0x09f0  /* U+23BB HORIZONTAL SCAN LINE-3 */
+#define XK_horizlinescan5                0x09f1  /* U+2500 BOX DRAWINGS LIGHT HORIZONTAL */
+#define XK_horizlinescan7                0x09f2  /* U+23BC HORIZONTAL SCAN LINE-7 */
+#define XK_horizlinescan9                0x09f3  /* U+23BD HORIZONTAL SCAN LINE-9 */
+#define XK_leftt                         0x09f4  /* U+251C BOX DRAWINGS LIGHT VERTICAL AND RIGHT */
+#define XK_rightt                        0x09f5  /* U+2524 BOX DRAWINGS LIGHT VERTICAL AND LEFT */
+#define XK_bott                          0x09f6  /* U+2534 BOX DRAWINGS LIGHT UP AND HORIZONTAL */
+#define XK_topt                          0x09f7  /* U+252C BOX DRAWINGS LIGHT DOWN AND HORIZONTAL */
+#define XK_vertbar                       0x09f8  /* U+2502 BOX DRAWINGS LIGHT VERTICAL */
+#endif /* XK_SPECIAL */
+
+/*
+ * Publishing
+ * (these are probably from a long forgotten DEC Publishing
+ * font that once shipped with DECwrite)
+ * Byte 3 = 0x0a
+ */
+
+#ifdef XK_PUBLISHING
+#define XK_emspace                       0x0aa1  /* U+2003 EM SPACE */
+#define XK_enspace                       0x0aa2  /* U+2002 EN SPACE */
+#define XK_em3space                      0x0aa3  /* U+2004 THREE-PER-EM SPACE */
+#define XK_em4space                      0x0aa4  /* U+2005 FOUR-PER-EM SPACE */
+#define XK_digitspace                    0x0aa5  /* U+2007 FIGURE SPACE */
+#define XK_punctspace                    0x0aa6  /* U+2008 PUNCTUATION SPACE */
+#define XK_thinspace                     0x0aa7  /* U+2009 THIN SPACE */
+#define XK_hairspace                     0x0aa8  /* U+200A HAIR SPACE */
+#define XK_emdash                        0x0aa9  /* U+2014 EM DASH */
+#define XK_endash                        0x0aaa  /* U+2013 EN DASH */
+#define XK_signifblank                   0x0aac  /*(U+2423 OPEN BOX)*/
+#define XK_ellipsis                      0x0aae  /* U+2026 HORIZONTAL ELLIPSIS */
+#define XK_doubbaselinedot               0x0aaf  /* U+2025 TWO DOT LEADER */
+#define XK_onethird                      0x0ab0  /* U+2153 VULGAR FRACTION ONE THIRD */
+#define XK_twothirds                     0x0ab1  /* U+2154 VULGAR FRACTION TWO THIRDS */
+#define XK_onefifth                      0x0ab2  /* U+2155 VULGAR FRACTION ONE FIFTH */
+#define XK_twofifths                     0x0ab3  /* U+2156 VULGAR FRACTION TWO FIFTHS */
+#define XK_threefifths                   0x0ab4  /* U+2157 VULGAR FRACTION THREE FIFTHS */
+#define XK_fourfifths                    0x0ab5  /* U+2158 VULGAR FRACTION FOUR FIFTHS */
+#define XK_onesixth                      0x0ab6  /* U+2159 VULGAR FRACTION ONE SIXTH */
+#define XK_fivesixths                    0x0ab7  /* U+215A VULGAR FRACTION FIVE SIXTHS */
+#define XK_careof                        0x0ab8  /* U+2105 CARE OF */
+#define XK_figdash                       0x0abb  /* U+2012 FIGURE DASH */
+#define XK_leftanglebracket              0x0abc  /*(U+2329 LEFT-POINTING ANGLE BRACKET)*/
+#define XK_decimalpoint                  0x0abd  /*(U+002E FULL STOP)*/
+#define XK_rightanglebracket             0x0abe  /*(U+232A RIGHT-POINTING ANGLE BRACKET)*/
+#define XK_marker                        0x0abf
+#define XK_oneeighth                     0x0ac3  /* U+215B VULGAR FRACTION ONE EIGHTH */
+#define XK_threeeighths                  0x0ac4  /* U+215C VULGAR FRACTION THREE EIGHTHS */
+#define XK_fiveeighths                   0x0ac5  /* U+215D VULGAR FRACTION FIVE EIGHTHS */
+#define XK_seveneighths                  0x0ac6  /* U+215E VULGAR FRACTION SEVEN EIGHTHS */
+#define XK_trademark                     0x0ac9  /* U+2122 TRADE MARK SIGN */
+#define XK_signaturemark                 0x0aca  /*(U+2613 SALTIRE)*/
+#define XK_trademarkincircle             0x0acb
+#define XK_leftopentriangle              0x0acc  /*(U+25C1 WHITE LEFT-POINTING TRIANGLE)*/
+#define XK_rightopentriangle             0x0acd  /*(U+25B7 WHITE RIGHT-POINTING TRIANGLE)*/
+#define XK_emopencircle                  0x0ace  /*(U+25CB WHITE CIRCLE)*/
+#define XK_emopenrectangle               0x0acf  /*(U+25AF WHITE VERTICAL RECTANGLE)*/
+#define XK_leftsinglequotemark           0x0ad0  /* U+2018 LEFT SINGLE QUOTATION MARK */
+#define XK_rightsinglequotemark          0x0ad1  /* U+2019 RIGHT SINGLE QUOTATION MARK */
+#define XK_leftdoublequotemark           0x0ad2  /* U+201C LEFT DOUBLE QUOTATION MARK */
+#define XK_rightdoublequotemark          0x0ad3  /* U+201D RIGHT DOUBLE QUOTATION MARK */
+#define XK_prescription                  0x0ad4  /* U+211E PRESCRIPTION TAKE */
+#define XK_permille                      0x0ad5  /* U+2030 PER MILLE SIGN */
+#define XK_minutes                       0x0ad6  /* U+2032 PRIME */
+#define XK_seconds                       0x0ad7  /* U+2033 DOUBLE PRIME */
+#define XK_latincross                    0x0ad9  /* U+271D LATIN CROSS */
+#define XK_hexagram                      0x0ada
+#define XK_filledrectbullet              0x0adb  /*(U+25AC BLACK RECTANGLE)*/
+#define XK_filledlefttribullet           0x0adc  /*(U+25C0 BLACK LEFT-POINTING TRIANGLE)*/
+#define XK_filledrighttribullet          0x0add  /*(U+25B6 BLACK RIGHT-POINTING TRIANGLE)*/
+#define XK_emfilledcircle                0x0ade  /*(U+25CF BLACK CIRCLE)*/
+#define XK_emfilledrect                  0x0adf  /*(U+25AE BLACK VERTICAL RECTANGLE)*/
+#define XK_enopencircbullet              0x0ae0  /*(U+25E6 WHITE BULLET)*/
+#define XK_enopensquarebullet            0x0ae1  /*(U+25AB WHITE SMALL SQUARE)*/
+#define XK_openrectbullet                0x0ae2  /*(U+25AD WHITE RECTANGLE)*/
+#define XK_opentribulletup               0x0ae3  /*(U+25B3 WHITE UP-POINTING TRIANGLE)*/
+#define XK_opentribulletdown             0x0ae4  /*(U+25BD WHITE DOWN-POINTING TRIANGLE)*/
+#define XK_openstar                      0x0ae5  /*(U+2606 WHITE STAR)*/
+#define XK_enfilledcircbullet            0x0ae6  /*(U+2022 BULLET)*/
+#define XK_enfilledsqbullet              0x0ae7  /*(U+25AA BLACK SMALL SQUARE)*/
+#define XK_filledtribulletup             0x0ae8  /*(U+25B2 BLACK UP-POINTING TRIANGLE)*/
+#define XK_filledtribulletdown           0x0ae9  /*(U+25BC BLACK DOWN-POINTING TRIANGLE)*/
+#define XK_leftpointer                   0x0aea  /*(U+261C WHITE LEFT POINTING INDEX)*/
+#define XK_rightpointer                  0x0aeb  /*(U+261E WHITE RIGHT POINTING INDEX)*/
+#define XK_club                          0x0aec  /* U+2663 BLACK CLUB SUIT */
+#define XK_diamond                       0x0aed  /* U+2666 BLACK DIAMOND SUIT */
+#define XK_heart                         0x0aee  /* U+2665 BLACK HEART SUIT */
+#define XK_maltesecross                  0x0af0  /* U+2720 MALTESE CROSS */
+#define XK_dagger                        0x0af1  /* U+2020 DAGGER */
+#define XK_doubledagger                  0x0af2  /* U+2021 DOUBLE DAGGER */
+#define XK_checkmark                     0x0af3  /* U+2713 CHECK MARK */
+#define XK_ballotcross                   0x0af4  /* U+2717 BALLOT X */
+#define XK_musicalsharp                  0x0af5  /* U+266F MUSIC SHARP SIGN */
+#define XK_musicalflat                   0x0af6  /* U+266D MUSIC FLAT SIGN */
+#define XK_malesymbol                    0x0af7  /* U+2642 MALE SIGN */
+#define XK_femalesymbol                  0x0af8  /* U+2640 FEMALE SIGN */
+#define XK_telephone                     0x0af9  /* U+260E BLACK TELEPHONE */
+#define XK_telephonerecorder             0x0afa  /* U+2315 TELEPHONE RECORDER */
+#define XK_phonographcopyright           0x0afb  /* U+2117 SOUND RECORDING COPYRIGHT */
+#define XK_caret                         0x0afc  /* U+2038 CARET */
+#define XK_singlelowquotemark            0x0afd  /* U+201A SINGLE LOW-9 QUOTATION MARK */
+#define XK_doublelowquotemark            0x0afe  /* U+201E DOUBLE LOW-9 QUOTATION MARK */
+#define XK_cursor                        0x0aff
+#endif /* XK_PUBLISHING */
+
+/*
+ * APL
+ * Byte 3 = 0x0b
+ */
+
+#ifdef XK_APL
+#define XK_leftcaret                     0x0ba3  /*(U+003C LESS-THAN SIGN)*/
+#define XK_rightcaret                    0x0ba6  /*(U+003E GREATER-THAN SIGN)*/
+#define XK_downcaret                     0x0ba8  /*(U+2228 LOGICAL OR)*/
+#define XK_upcaret                       0x0ba9  /*(U+2227 LOGICAL AND)*/
+#define XK_overbar                       0x0bc0  /*(U+00AF MACRON)*/
+#define XK_downtack                      0x0bc2  /* U+22A4 DOWN TACK */
+#define XK_upshoe                        0x0bc3  /*(U+2229 INTERSECTION)*/
+#define XK_downstile                     0x0bc4  /* U+230A LEFT FLOOR */
+#define XK_underbar                      0x0bc6  /*(U+005F LOW LINE)*/
+#define XK_jot                           0x0bca  /* U+2218 RING OPERATOR */
+#define XK_quad                          0x0bcc  /* U+2395 APL FUNCTIONAL SYMBOL QUAD */
+#define XK_uptack                        0x0bce  /* U+22A5 UP TACK */
+#define XK_circle                        0x0bcf  /* U+25CB WHITE CIRCLE */
+#define XK_upstile                       0x0bd3  /* U+2308 LEFT CEILING */
+#define XK_downshoe                      0x0bd6  /*(U+222A UNION)*/
+#define XK_rightshoe                     0x0bd8  /*(U+2283 SUPERSET OF)*/
+#define XK_leftshoe                      0x0bda  /*(U+2282 SUBSET OF)*/
+#define XK_lefttack                      0x0bdc  /* U+22A3 LEFT TACK */
+#define XK_righttack                     0x0bfc  /* U+22A2 RIGHT TACK */
+#endif /* XK_APL */
+
+/*
+ * Hebrew
+ * Byte 3 = 0x0c
+ */
+
+#ifdef XK_HEBREW
+#define XK_hebrew_doublelowline          0x0cdf  /* U+2017 DOUBLE LOW LINE */
+#define XK_hebrew_aleph                  0x0ce0  /* U+05D0 HEBREW LETTER ALEF */
+#define XK_hebrew_bet                    0x0ce1  /* U+05D1 HEBREW LETTER BET */
+#define XK_hebrew_beth                   0x0ce1  /* deprecated */
+#define XK_hebrew_gimel                  0x0ce2  /* U+05D2 HEBREW LETTER GIMEL */
+#define XK_hebrew_gimmel                 0x0ce2  /* deprecated */
+#define XK_hebrew_dalet                  0x0ce3  /* U+05D3 HEBREW LETTER DALET */
+#define XK_hebrew_daleth                 0x0ce3  /* deprecated */
+#define XK_hebrew_he                     0x0ce4  /* U+05D4 HEBREW LETTER HE */
+#define XK_hebrew_waw                    0x0ce5  /* U+05D5 HEBREW LETTER VAV */
+#define XK_hebrew_zain                   0x0ce6  /* U+05D6 HEBREW LETTER ZAYIN */
+#define XK_hebrew_zayin                  0x0ce6  /* deprecated */
+#define XK_hebrew_chet                   0x0ce7  /* U+05D7 HEBREW LETTER HET */
+#define XK_hebrew_het                    0x0ce7  /* deprecated */
+#define XK_hebrew_tet                    0x0ce8  /* U+05D8 HEBREW LETTER TET */
+#define XK_hebrew_teth                   0x0ce8  /* deprecated */
+#define XK_hebrew_yod                    0x0ce9  /* U+05D9 HEBREW LETTER YOD */
+#define XK_hebrew_finalkaph              0x0cea  /* U+05DA HEBREW LETTER FINAL KAF */
+#define XK_hebrew_kaph                   0x0ceb  /* U+05DB HEBREW LETTER KAF */
+#define XK_hebrew_lamed                  0x0cec  /* U+05DC HEBREW LETTER LAMED */
+#define XK_hebrew_finalmem               0x0ced  /* U+05DD HEBREW LETTER FINAL MEM */
+#define XK_hebrew_mem                    0x0cee  /* U+05DE HEBREW LETTER MEM */
+#define XK_hebrew_finalnun               0x0cef  /* U+05DF HEBREW LETTER FINAL NUN */
+#define XK_hebrew_nun                    0x0cf0  /* U+05E0 HEBREW LETTER NUN */
+#define XK_hebrew_samech                 0x0cf1  /* U+05E1 HEBREW LETTER SAMEKH */
+#define XK_hebrew_samekh                 0x0cf1  /* deprecated */
+#define XK_hebrew_ayin                   0x0cf2  /* U+05E2 HEBREW LETTER AYIN */
+#define XK_hebrew_finalpe                0x0cf3  /* U+05E3 HEBREW LETTER FINAL PE */
+#define XK_hebrew_pe                     0x0cf4  /* U+05E4 HEBREW LETTER PE */
+#define XK_hebrew_finalzade              0x0cf5  /* U+05E5 HEBREW LETTER FINAL TSADI */
+#define XK_hebrew_finalzadi              0x0cf5  /* deprecated */
+#define XK_hebrew_zade                   0x0cf6  /* U+05E6 HEBREW LETTER TSADI */
+#define XK_hebrew_zadi                   0x0cf6  /* deprecated */
+#define XK_hebrew_qoph                   0x0cf7  /* U+05E7 HEBREW LETTER QOF */
+#define XK_hebrew_kuf                    0x0cf7  /* deprecated */
+#define XK_hebrew_resh                   0x0cf8  /* U+05E8 HEBREW LETTER RESH */
+#define XK_hebrew_shin                   0x0cf9  /* U+05E9 HEBREW LETTER SHIN */
+#define XK_hebrew_taw                    0x0cfa  /* U+05EA HEBREW LETTER TAV */
+#define XK_hebrew_taf                    0x0cfa  /* deprecated */
+#define XK_Hebrew_switch                 0xff7e  /* Alias for mode_switch */
+#endif /* XK_HEBREW */
+
+/* Multimedia keys, defined same as on Linux
+ * /usr/include/pkg/libxkbcommon/xkbcommon/xkbcommon-keysyms.h
+ */
+
+#define XK_XF86AudioLowerVolume	0x1008FF11   /* Volume control down        */
+#define XK_XF86AudioMute	0x1008FF12   /* Mute sound from the system */
+#define XK_XF86AudioRaiseVolume	0x1008FF13   /* Volume control up          */
+#define XK_XF86AudioPlay	0x1008FF14   /* Start playing of audio >   */
+#define XK_XF86AudioStop	0x1008FF15   /* Stop playing audio         */
+#define XK_XF86AudioPrev	0x1008FF16   /* Previous track             */
+#define XK_XF86AudioNext	0x1008FF17   /* Next track                 */
+
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/include/X11/ap_keysym.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/include/X11/ap_keysym.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/include/X11/ap_keysym.h	(revision 3762)
@@ -0,0 +1,51 @@
+/******************************************************************
+Copyright 1987 by Apollo Computer Inc., Chelmsford, Massachusetts.
+Copyright 1989 by Hewlett-Packard Company.
+
+                        All Rights Reserved
+
+Permission to use, duplicate, change, and distribute this software and
+its documentation for any purpose and without fee is granted, provided
+that the above copyright notice appear in such copy and that this
+copyright notice appear in all supporting documentation, and that the
+names of Apollo Computer Inc., the Hewlett-Packard Company, or the X
+Consortium not be used in advertising or publicity pertaining to
+distribution of the software without written prior permission.
+
+HEWLETT-PACKARD MAKES NO WARRANTY OF ANY KIND WITH REGARD
+TO THIS SOFWARE, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  Hewlett-Packard shall not be liable for errors
+contained herein or direct, indirect, special, incidental or
+consequential damages in connection with the furnishing,
+performance, or use of this material.
+
+This software is not subject to any license of the American
+Telephone and Telegraph Company or of the Regents of the
+University of California.
+******************************************************************/
+
+#define apXK_LineDel            0x1000FF00
+#define apXK_CharDel            0x1000FF01
+#define apXK_Copy               0x1000FF02
+#define apXK_Cut                0x1000FF03
+#define apXK_Paste              0x1000FF04
+#define apXK_Move               0x1000FF05
+#define apXK_Grow               0x1000FF06
+#define apXK_Cmd                0x1000FF07
+#define apXK_Shell              0x1000FF08
+#define apXK_LeftBar            0x1000FF09
+#define apXK_RightBar           0x1000FF0A
+#define apXK_LeftBox            0x1000FF0B
+#define apXK_RightBox           0x1000FF0C
+#define apXK_UpBox              0x1000FF0D
+#define apXK_DownBox            0x1000FF0E
+#define apXK_Pop                0x1000FF0F
+#define apXK_Read               0x1000FF10
+#define apXK_Edit               0x1000FF11
+#define apXK_Save               0x1000FF12
+#define apXK_Exit               0x1000FF13
+#define apXK_Repeat             0x1000FF14
+
+#define apXK_KP_parenleft       0x1000FFA8
+#define apXK_KP_parenright      0x1000FFA9
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/include/X11/keysym.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/include/X11/keysym.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/include/X11/keysym.h	(revision 3762)
@@ -0,0 +1,62 @@
+/***********************************************************
+
+Copyright 1987, 1998  The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+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
+OPEN GROUP 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.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+
+Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
+
+                        All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL BE LIABLE FOR 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.
+
+******************************************************************/
+
+/* default keysyms */
+#define XK_MISCELLANY
+#define XK_LATIN1
+#define XK_LATIN2
+#define XK_LATIN3
+#define XK_LATIN4
+#define XK_LATIN9
+#define XK_GREEK
+#define XK_KATAKANA
+#define XK_ARABIC
+#define XK_CYRILLIC
+#define XK_HEBREW
+
+#include <X11/keysymdef.h>
+
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/include/X11/cursorfont.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/include/X11/cursorfont.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/include/X11/cursorfont.h	(revision 3762)
@@ -0,0 +1,79 @@
+/* $XConsortium: cursorfont.h,v 1.2 88/09/06 16:44:27 jim Exp $ */
+#define XC_num_glyphs 154
+#define XC_X_cursor 0
+#define XC_arrow 2
+#define XC_based_arrow_down 4
+#define XC_based_arrow_up 6
+#define XC_boat 8
+#define XC_bogosity 10
+#define XC_bottom_left_corner 12
+#define XC_bottom_right_corner 14
+#define XC_bottom_side 16
+#define XC_bottom_tee 18
+#define XC_box_spiral 20
+#define XC_center_ptr 22
+#define XC_circle 24
+#define XC_clock 26
+#define XC_coffee_mug 28
+#define XC_cross 30
+#define XC_cross_reverse 32
+#define XC_crosshair 34
+#define XC_diamond_cross 36
+#define XC_dot 38
+#define XC_dotbox 40
+#define XC_double_arrow 42
+#define XC_draft_large 44
+#define XC_draft_small 46
+#define XC_draped_box 48
+#define XC_exchange 50
+#define XC_fleur 52
+#define XC_gobbler 54
+#define XC_gumby 56
+#define XC_hand1 58
+#define XC_hand2 60
+#define XC_heart 62
+#define XC_icon 64
+#define XC_iron_cross 66
+#define XC_left_ptr 68
+#define XC_left_side 70
+#define XC_left_tee 72
+#define XC_leftbutton 74
+#define XC_ll_angle 76
+#define XC_lr_angle 78
+#define XC_man 80
+#define XC_middlebutton 82
+#define XC_mouse 84
+#define XC_pencil 86
+#define XC_pirate 88
+#define XC_plus 90
+#define XC_question_arrow 92
+#define XC_right_ptr 94
+#define XC_right_side 96
+#define XC_right_tee 98
+#define XC_rightbutton 100
+#define XC_rtl_logo 102
+#define XC_sailboat 104
+#define XC_sb_down_arrow 106
+#define XC_sb_h_double_arrow 108
+#define XC_sb_left_arrow 110
+#define XC_sb_right_arrow 112
+#define XC_sb_up_arrow 114
+#define XC_sb_v_double_arrow 116
+#define XC_shuttle 118
+#define XC_sizing 120
+#define XC_spider 122
+#define XC_spraycan 124
+#define XC_star 126
+#define XC_target 128
+#define XC_tcross 130
+#define XC_top_left_arrow 132
+#define XC_top_left_corner 134
+#define XC_top_right_corner 136
+#define XC_top_side 138
+#define XC_top_tee 140
+#define XC_trek 142
+#define XC_ul_angle 144
+#define XC_umbrella 146
+#define XC_ur_angle 148
+#define XC_watch 150
+#define XC_xterm 152
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/include/X11/Xutil.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/include/X11/Xutil.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/include/X11/Xutil.h	(revision 3762)
@@ -0,0 +1,855 @@
+/* $XConsortium: Xutil.h,v 11.73 91/07/30 16:21:37 rws Exp $ */
+
+/***********************************************************
+Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts,
+and the Massachusetts Institute of Technology, Cambridge, Massachusetts.
+
+                        All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the names of Digital or MIT not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL BE LIABLE FOR 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.
+
+******************************************************************/
+
+#ifndef _XUTIL_H_
+#define _XUTIL_H_
+
+/* You must include <X11/Xlib.h> before including this file */
+
+#if defined(MAC_OSX_TK)
+#   define Region XRegion
+#endif
+
+/*
+ * Bitmask returned by XParseGeometry().  Each bit tells if the corresponding
+ * value (x, y, width, height) was found in the parsed string.
+ */
+#define NoValue		0x0000
+#define XValue  	0x0001
+#define YValue		0x0002
+#define WidthValue  	0x0004
+#define HeightValue  	0x0008
+#define AllValues 	0x000F
+#define XNegative 	0x0010
+#define YNegative 	0x0020
+
+/*
+ * new version containing base_width, base_height, and win_gravity fields;
+ * used with WM_NORMAL_HINTS.
+ */
+typedef struct {
+    	long flags;	/* marks which fields in this structure are defined */
+	int x, y;		/* obsolete for new window mgrs, but clients */
+	int width, height;	/* should set so old wm's don't mess up */
+	int min_width, min_height;
+	int max_width, max_height;
+    	int width_inc, height_inc;
+	struct {
+		int x;	/* numerator */
+		int y;	/* denominator */
+	} min_aspect, max_aspect;
+	int base_width, base_height;		/* added by ICCCM version 1 */
+	int win_gravity;			/* added by ICCCM version 1 */
+} XSizeHints;
+
+/*
+ * The next block of definitions are for window manager properties that
+ * clients and applications use for communication.
+ */
+
+/* flags argument in size hints */
+#define USPosition	(1L << 0) /* user specified x, y */
+#define USSize		(1L << 1) /* user specified width, height */
+
+#define PPosition	(1L << 2) /* program specified position */
+#define PSize		(1L << 3) /* program specified size */
+#define PMinSize	(1L << 4) /* program specified minimum size */
+#define PMaxSize	(1L << 5) /* program specified maximum size */
+#define PResizeInc	(1L << 6) /* program specified resize increments */
+#define PAspect		(1L << 7) /* program specified min and max aspect ratios */
+#define PBaseSize	(1L << 8) /* program specified base for incrementing */
+#define PWinGravity	(1L << 9) /* program specified window gravity */
+
+/* obsolete */
+#define PAllHints (PPosition|PSize|PMinSize|PMaxSize|PResizeInc|PAspect)
+
+
+
+typedef struct {
+	long flags;	/* marks which fields in this structure are defined */
+	Bool input;	/* does this application rely on the window manager to
+			get keyboard input? */
+	int initial_state;	/* see below */
+	Pixmap icon_pixmap;	/* pixmap to be used as icon */
+	Window icon_window; 	/* window to be used as icon */
+	int icon_x, icon_y; 	/* initial position of icon */
+	Pixmap icon_mask;	/* icon mask bitmap */
+	XID window_group;	/* id of related window group */
+	/* this structure may be extended in the future */
+} XWMHints;
+
+/* definition for flags of XWMHints */
+
+#define InputHint 		(1L << 0)
+#define StateHint 		(1L << 1)
+#define IconPixmapHint		(1L << 2)
+#define IconWindowHint		(1L << 3)
+#define IconPositionHint 	(1L << 4)
+#define IconMaskHint		(1L << 5)
+#define WindowGroupHint		(1L << 6)
+#define AllHints (InputHint|StateHint|IconPixmapHint|IconWindowHint| \
+IconPositionHint|IconMaskHint|WindowGroupHint)
+
+/* definitions for initial window state */
+#define WithdrawnState 0	/* for windows that are not mapped */
+#define NormalState 1	/* most applications want to start this way */
+#define IconicState 3	/* application wants to start as an icon */
+
+/*
+ * Obsolete states no longer defined by ICCCM
+ */
+#define DontCareState 0	/* don't know or care */
+#define ZoomState 2	/* application wants to start zoomed */
+#define InactiveState 4	/* application believes it is seldom used; */
+			/* some wm's may put it on inactive menu */
+
+
+/*
+ * new structure for manipulating TEXT properties; used with WM_NAME,
+ * WM_ICON_NAME, WM_CLIENT_MACHINE, and WM_COMMAND.
+ */
+typedef struct {
+    unsigned char *value;		/* same as Property routines */
+    Atom encoding;			/* prop type */
+    int format;				/* prop data format: 8, 16, or 32 */
+    unsigned long nitems;		/* number of data items in value */
+} XTextProperty;
+
+#define XNoMemory -1
+#define XLocaleNotSupported -2
+#define XConverterNotFound -3
+
+typedef enum {
+    XStringStyle,		/* STRING */
+    XCompoundTextStyle,		/* COMPOUND_TEXT */
+    XTextStyle,			/* text in owner's encoding (current locale)*/
+    XStdICCTextStyle		/* STRING, else COMPOUND_TEXT */
+} XICCEncodingStyle;
+
+typedef struct {
+	int min_width, min_height;
+	int max_width, max_height;
+	int width_inc, height_inc;
+} XIconSize;
+
+typedef struct {
+	char *res_name;
+	char *res_class;
+} XClassHint;
+
+/*
+ * These macros are used to give some sugar to the image routines so that
+ * naive people are more comfortable with them.
+ */
+#define XDestroyImage(ximage) \
+	((*((ximage)->f.destroy_image))((ximage)))
+#define XGetPixel(ximage, x, y) \
+	((*((ximage)->f.get_pixel))((ximage), (x), (y)))
+#define XPutPixel(ximage, x, y, pixel) \
+	((*((ximage)->f.put_pixel))((ximage), (x), (y), (pixel)))
+#define XSubImage(ximage, x, y, width, height)  \
+	((*((ximage)->f.sub_image))((ximage), (x), (y), (width), (height)))
+#define XAddPixel(ximage, value) \
+	((*((ximage)->f.add_pixel))((ximage), (value)))
+
+/*
+ * Compose sequence status structure, used in calling XLookupString.
+ */
+typedef struct _XComposeStatus {
+    XPointer compose_ptr;	/* state table pointer */
+    int chars_matched;		/* match state */
+} XComposeStatus;
+
+/*
+ * Keysym macros, used on Keysyms to test for classes of symbols
+ */
+#define IsKeypadKey(keysym) \
+  (((unsigned)(keysym) >= XK_KP_Space) && ((unsigned)(keysym) <= XK_KP_Equal))
+
+#define IsCursorKey(keysym) \
+  (((unsigned)(keysym) >= XK_Home)     && ((unsigned)(keysym) <  XK_Select))
+
+#define IsPFKey(keysym) \
+  (((unsigned)(keysym) >= XK_KP_F1)     && ((unsigned)(keysym) <= XK_KP_F4))
+
+#define IsFunctionKey(keysym) \
+  (((unsigned)(keysym) >= XK_F1)       && ((unsigned)(keysym) <= XK_F35))
+
+#define IsMiscFunctionKey(keysym) \
+  (((unsigned)(keysym) >= XK_Select)   && ((unsigned)(keysym) <= XK_Break))
+
+#define IsModifierKey(keysym) \
+  ((((unsigned)(keysym) >= XK_Shift_L) && ((unsigned)(keysym) <= XK_Hyper_R)) \
+   || ((unsigned)(keysym) == XK_Mode_switch) \
+   || ((unsigned)(keysym) == XK_Num_Lock))
+/*
+ * opaque reference to Region data type
+ */
+typedef struct _XRegion *Region;
+
+/* Return values from XRectInRegion() */
+
+#define RectangleOut 0
+#define RectangleIn  1
+#define RectanglePart 2
+
+
+/*
+ * Information used by the visual utility routines to find desired visual
+ * type from the many visuals a display may support.
+ */
+
+typedef struct {
+  Visual *visual;
+  VisualID visualid;
+  int screen;
+  int depth;
+#if defined(__cplusplus) || defined(c_plusplus)
+  int c_class;					/* C++ */
+#else
+  int class;
+#endif
+  unsigned long red_mask;
+  unsigned long green_mask;
+  unsigned long blue_mask;
+  int colormap_size;
+  int bits_per_rgb;
+} XVisualInfo;
+
+#define VisualNoMask		0x0
+#define VisualIDMask 		0x1
+#define VisualScreenMask	0x2
+#define VisualDepthMask		0x4
+#define VisualClassMask		0x8
+#define VisualRedMaskMask	0x10
+#define VisualGreenMaskMask	0x20
+#define VisualBlueMaskMask	0x40
+#define VisualColormapSizeMask	0x80
+#define VisualBitsPerRGBMask	0x100
+#define VisualAllMask		0x1FF
+
+/*
+ * This defines a window manager property that clients may use to
+ * share standard color maps of type RGB_COLOR_MAP:
+ */
+typedef struct {
+	Colormap colormap;
+	unsigned long red_max;
+	unsigned long red_mult;
+	unsigned long green_max;
+	unsigned long green_mult;
+	unsigned long blue_max;
+	unsigned long blue_mult;
+	unsigned long base_pixel;
+	VisualID visualid;		/* added by ICCCM version 1 */
+	XID killid;			/* added by ICCCM version 1 */
+} XStandardColormap;
+
+#define ReleaseByFreeingColormap ((XID) 1L)  /* for killid field above */
+
+
+/*
+ * return codes for XReadBitmapFile and XWriteBitmapFile
+ */
+#define BitmapSuccess		0
+#define BitmapOpenFailed 	1
+#define BitmapFileInvalid 	2
+#define BitmapNoMemory		3
+
+/****************************************************************
+ *
+ * Context Management
+ *
+ ****************************************************************/
+
+
+/* Associative lookup table return codes */
+
+#define XCSUCCESS 0	/* No error. */
+#define XCNOMEM   1    /* Out of memory */
+#define XCNOENT   2    /* No entry in table */
+
+typedef int XContext;
+
+#define XUniqueContext()       ((XContext) XrmUniqueQuark())
+#define XStringToContext(string)   ((XContext) XrmStringToQuark(string))
+
+_XFUNCPROTOBEGIN
+
+/* The following declarations are alphabetized. */
+
+extern XClassHint *XAllocClassHint (
+#if NeedFunctionPrototypes
+    void
+#endif
+);
+
+extern XIconSize *XAllocIconSize (
+#if NeedFunctionPrototypes
+    void
+#endif
+);
+
+extern XSizeHints *XAllocSizeHints (
+#if NeedFunctionPrototypes
+    void
+#endif
+);
+
+extern XStandardColormap *XAllocStandardColormap (
+#if NeedFunctionPrototypes
+    void
+#endif
+);
+
+extern XWMHints *XAllocWMHints (
+#if NeedFunctionPrototypes
+    void
+#endif
+);
+
+extern void XClipBox(
+#if NeedFunctionPrototypes
+    Region		/* r */,
+    XRectangle*		/* rect_return */
+#endif
+);
+
+extern Region XCreateRegion(
+#if NeedFunctionPrototypes
+    void
+#endif
+);
+
+extern char *XDefaultString(
+#if NeedFunctionPrototypes
+    void
+#endif
+);
+
+extern int XDeleteContext(
+#if NeedFunctionPrototypes
+    Display*		/* display */,
+    XID			/* rid */,
+    XContext		/* context */
+#endif
+);
+
+extern void XDestroyRegion(
+#if NeedFunctionPrototypes
+    Region		/* r */
+#endif
+);
+
+extern Bool XEmptyRegion(
+#if NeedFunctionPrototypes
+    Region		/* r */
+#endif
+);
+
+extern Bool XEqualRegion(
+#if NeedFunctionPrototypes
+    Region		/* r1 */,
+    Region		/* r2 */
+#endif
+);
+
+extern int XFindContext(
+#if NeedFunctionPrototypes
+    Display*		/* display */,
+    XID			/* rid */,
+    XContext		/* context */,
+    XPointer*		/* data_return */
+#endif
+);
+
+extern Status XGetClassHint(
+#if NeedFunctionPrototypes
+    Display*		/* display */,
+    Window		/* w */,
+    XClassHint*		/* class_hints_return */
+#endif
+);
+
+extern Status XGetIconSizes(
+#if NeedFunctionPrototypes
+    Display*		/* display */,
+    Window		/* w */,
+    XIconSize**		/* size_list_return */,
+    int*		/* count_return */
+#endif
+);
+
+extern Status XGetNormalHints(
+#if NeedFunctionPrototypes
+    Display*		/* display */,
+    Window		/* w */,
+    XSizeHints*		/* hints_return */
+#endif
+);
+
+extern Status XGetRGBColormaps(
+#if NeedFunctionPrototypes
+    Display*		/* display */,
+    Window		/* w */,
+    XStandardColormap** /* stdcmap_return */,
+    int*		/* count_return */,
+    Atom		/* property */
+#endif
+);
+
+extern Status XGetSizeHints(
+#if NeedFunctionPrototypes
+    Display*		/* display */,
+    Window		/* w */,
+    XSizeHints*		/* hints_return */,
+    Atom		/* property */
+#endif
+);
+
+extern Status XGetStandardColormap(
+#if NeedFunctionPrototypes
+    Display*		/* display */,
+    Window		/* w */,
+    XStandardColormap*	/* colormap_return */,
+    Atom		/* property */
+#endif
+);
+
+extern Status XGetTextProperty(
+#if NeedFunctionPrototypes
+    Display*		/* display */,
+    Window		/* window */,
+    XTextProperty*	/* text_prop_return */,
+    Atom		/* property */
+#endif
+);
+
+
+extern Status XGetWMClientMachine(
+#if NeedFunctionPrototypes
+    Display*		/* display */,
+    Window		/* w */,
+    XTextProperty*	/* text_prop_return */
+#endif
+);
+
+extern XWMHints *XGetWMHints(
+#if NeedFunctionPrototypes
+    Display*		/* display */,
+    Window		/* w */
+#endif
+);
+
+extern Status XGetWMIconName(
+#if NeedFunctionPrototypes
+    Display*		/* display */,
+    Window		/* w */,
+    XTextProperty*	/* text_prop_return */
+#endif
+);
+
+extern Status XGetWMName(
+#if NeedFunctionPrototypes
+    Display*		/* display */,
+    Window		/* w */,
+    XTextProperty*	/* text_prop_return */
+#endif
+);
+
+extern Status XGetWMNormalHints(
+#if NeedFunctionPrototypes
+    Display*		/* display */,
+    Window		/* w */,
+    XSizeHints*		/* hints_return */,
+    long*		/* supplied_return */
+#endif
+);
+
+extern Status XGetWMSizeHints(
+#if NeedFunctionPrototypes
+    Display*		/* display */,
+    Window		/* w */,
+    XSizeHints*		/* hints_return */,
+    long*		/* supplied_return */,
+    Atom		/* property */
+#endif
+);
+
+extern Status XGetZoomHints(
+#if NeedFunctionPrototypes
+    Display*		/* display */,
+    Window		/* w */,
+    XSizeHints*		/* zhints_return */
+#endif
+);
+
+extern void XIntersectRegion(
+#if NeedFunctionPrototypes
+    Region		/* sra */,
+    Region		/* srb */,
+    Region		/* dr_return */
+#endif
+);
+
+extern int XLookupString(
+#if NeedFunctionPrototypes
+    XKeyEvent*		/* event_struct */,
+    char*		/* buffer_return */,
+    int			/* bytes_buffer */,
+    KeySym*		/* keysym_return */,
+    XComposeStatus*	/* status_in_out */
+#endif
+);
+
+extern Status XMatchVisualInfo(
+#if NeedFunctionPrototypes
+    Display*		/* display */,
+    int			/* screen */,
+    int			/* depth */,
+    int			/* class */,
+    XVisualInfo*	/* vinfo_return */
+#endif
+);
+
+extern int XOffsetRegion(
+#if NeedFunctionPrototypes
+    Region		/* r */,
+    int			/* dx */,
+    int			/* dy */
+#endif
+);
+
+extern Bool XPointInRegion(
+#if NeedFunctionPrototypes
+    Region		/* r */,
+    int			/* x */,
+    int			/* y */
+#endif
+);
+
+extern Region XPolygonRegion(
+#if NeedFunctionPrototypes
+    XPoint*		/* points */,
+    int			/* n */,
+    int			/* fill_rule */
+#endif
+);
+
+extern int XRectInRegion(
+#if NeedFunctionPrototypes
+    Region		/* r */,
+    int			/* x */,
+    int			/* y */,
+    unsigned int	/* width */,
+    unsigned int	/* height */
+#endif
+);
+
+extern int XSaveContext(
+#if NeedFunctionPrototypes
+    Display*		/* display */,
+    XID			/* rid */,
+    XContext		/* context */,
+    _Xconst char*	/* data */
+#endif
+);
+
+extern void XSetClassHint(
+#if NeedFunctionPrototypes
+    Display*		/* display */,
+    Window		/* w */,
+    XClassHint*		/* class_hints */
+#endif
+);
+
+extern void XSetIconSizes(
+#if NeedFunctionPrototypes
+    Display*		/* display */,
+    Window		/* w */,
+    XIconSize*		/* size_list */,
+    int			/* count */
+#endif
+);
+
+extern void XSetNormalHints(
+#if NeedFunctionPrototypes
+    Display*		/* display */,
+    Window		/* w */,
+    XSizeHints*		/* hints */
+#endif
+);
+
+extern void XSetRGBColormaps(
+#if NeedFunctionPrototypes
+    Display*		/* display */,
+    Window		/* w */,
+    XStandardColormap*	/* stdcmaps */,
+    int			/* count */,
+    Atom		/* property */
+#endif
+);
+
+extern void XSetSizeHints(
+#if NeedFunctionPrototypes
+    Display*		/* display */,
+    Window		/* w */,
+    XSizeHints*		/* hints */,
+    Atom		/* property */
+#endif
+);
+
+extern void XSetStandardProperties(
+#if NeedFunctionPrototypes
+    Display*		/* display */,
+    Window		/* w */,
+    _Xconst char*	/* window_name */,
+    _Xconst char*	/* icon_name */,
+    Pixmap		/* icon_pixmap */,
+    char**		/* argv */,
+    int			/* argc */,
+    XSizeHints*		/* hints */
+#endif
+);
+
+extern void XSetTextProperty(
+#if NeedFunctionPrototypes
+    Display*		/* display */,
+    Window		/* w */,
+    XTextProperty*	/* text_prop */,
+    Atom		/* property */
+#endif
+);
+
+extern void XSetWMHints(
+#if NeedFunctionPrototypes
+    Display*		/* display */,
+    Window		/* w */,
+    XWMHints*		/* wm_hints */
+#endif
+);
+
+extern void XSetWMIconName(
+#if NeedFunctionPrototypes
+    Display*		/* display */,
+    Window		/* w */,
+    XTextProperty*	/* text_prop */
+#endif
+);
+
+extern void XSetWMName(
+#if NeedFunctionPrototypes
+    Display*		/* display */,
+    Window		/* w */,
+    XTextProperty*	/* text_prop */
+#endif
+);
+
+extern void XSetWMNormalHints(
+#if NeedFunctionPrototypes
+    Display*		/* display */,
+    Window		/* w */,
+    XSizeHints*		/* hints */
+#endif
+);
+
+extern void XSetWMProperties(
+#if NeedFunctionPrototypes
+    Display*		/* display */,
+    Window		/* w */,
+    XTextProperty*	/* window_name */,
+    XTextProperty*	/* icon_name */,
+    char**		/* argv */,
+    int			/* argc */,
+    XSizeHints*		/* normal_hints */,
+    XWMHints*		/* wm_hints */,
+    XClassHint*		/* class_hints */
+#endif
+);
+
+extern void XmbSetWMProperties(
+#if NeedFunctionPrototypes
+    Display*		/* display */,
+    Window		/* w */,
+    _Xconst char*	/* window_name */,
+    _Xconst char*	/* icon_name */,
+    char**		/* argv */,
+    int			/* argc */,
+    XSizeHints*		/* normal_hints */,
+    XWMHints*		/* wm_hints */,
+    XClassHint*		/* class_hints */
+#endif
+);
+
+extern void XSetWMSizeHints(
+#if NeedFunctionPrototypes
+    Display*		/* display */,
+    Window		/* w */,
+    XSizeHints*		/* hints */,
+    Atom		/* property */
+#endif
+);
+
+extern void XSetRegion(
+#if NeedFunctionPrototypes
+    Display*		/* display */,
+    GC			/* gc */,
+    Region		/* r */
+#endif
+);
+
+extern void XSetStandardColormap(
+#if NeedFunctionPrototypes
+    Display*		/* display */,
+    Window		/* w */,
+    XStandardColormap*	/* colormap */,
+    Atom		/* property */
+#endif
+);
+
+extern void XSetZoomHints(
+#if NeedFunctionPrototypes
+    Display*		/* display */,
+    Window		/* w */,
+    XSizeHints*		/* zhints */
+#endif
+);
+
+extern void XShrinkRegion(
+#if NeedFunctionPrototypes
+    Region		/* r */,
+    int			/* dx */,
+    int			/* dy */
+#endif
+);
+
+extern void XSubtractRegion(
+#if NeedFunctionPrototypes
+    Region		/* sra */,
+    Region		/* srb */,
+    Region		/* dr_return */
+#endif
+);
+
+extern int XmbTextListToTextProperty(
+#if NeedFunctionPrototypes
+    Display*		/* display */,
+    char**		/* list */,
+    int			/* count */,
+    XICCEncodingStyle	/* style */,
+    XTextProperty*	/* text_prop_return */
+#endif
+);
+
+extern int XwcTextListToTextProperty(
+#if NeedFunctionPrototypes
+    Display*		/* display */,
+    wchar_t**		/* list */,
+    int			/* count */,
+    XICCEncodingStyle	/* style */,
+    XTextProperty*	/* text_prop_return */
+#endif
+);
+
+extern void XwcFreeStringList(
+#if NeedFunctionPrototypes
+    wchar_t**		/* list */
+#endif
+);
+
+extern Status XTextPropertyToStringList(
+#if NeedFunctionPrototypes
+    XTextProperty*	/* text_prop */,
+    char***		/* list_return */,
+    int*		/* count_return */
+#endif
+);
+
+extern int XmbTextPropertyToTextList(
+#if NeedFunctionPrototypes
+    Display*		/* display */,
+    XTextProperty*	/* text_prop */,
+    char***		/* list_return */,
+    int*		/* count_return */
+#endif
+);
+
+extern int XwcTextPropertyToTextList(
+#if NeedFunctionPrototypes
+    Display*		/* display */,
+    XTextProperty*	/* text_prop */,
+    wchar_t***		/* list_return */,
+    int*		/* count_return */
+#endif
+);
+
+extern void XUnionRectWithRegion(
+#if NeedFunctionPrototypes
+    XRectangle*		/* rectangle */,
+    Region		/* src_region */,
+    Region		/* dest_region_return */
+#endif
+);
+
+extern int XUnionRegion(
+#if NeedFunctionPrototypes
+    Region		/* sra */,
+    Region		/* srb */,
+    Region		/* dr_return */
+#endif
+);
+
+extern int XWMGeometry(
+#if NeedFunctionPrototypes
+    Display*		/* display */,
+    int			/* screen_number */,
+    _Xconst char*	/* user_geometry */,
+    _Xconst char*	/* default_geometry */,
+    unsigned int	/* border_width */,
+    XSizeHints*		/* hints */,
+    int*		/* x_return */,
+    int*		/* y_return */,
+    int*		/* width_return */,
+    int*		/* height_return */,
+    int*		/* gravity_return */
+#endif
+);
+
+extern void XXorRegion(
+#if NeedFunctionPrototypes
+    Region		/* sra */,
+    Region		/* srb */,
+    Region		/* dr_return */
+#endif
+);
+
+_XFUNCPROTOEND
+
+#if defined(MAC_OSX_TK)
+#   undef Region
+#endif
+
+#endif /* _XUTIL_H_ */
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/lang/hu.rc
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/lang/hu.rc	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/lang/hu.rc	(revision 3762)
@@ -0,0 +1,67 @@
+! ------------------------------------------------------------------------------
+!  hu.rc
+!  This file is part of Unifix BWidget Toolkit
+!  Definition of english resources
+! ------------------------------------------------------------------------------
+
+
+! --- symbolic names of buttons ------------------------------------------------
+
+*abortName:   &Megszakítás
+*retryName:   Új&ra
+*ignoreName:  &Kihagyás
+*okName:      &OK
+*cancelName:  Még&sem
+*yesName:     &Igen
+*noName:      &Nem
+
+
+! --- symbolic names of label of SelectFont dialog ----------------------------
+
+*boldName:       Félkövér
+*italicName:     Dőlt
+*underlineName:  Aláhúzott
+*overstrikeName: Felülírás
+*fontName:       &Betűtípus
+*sizeName:       &Méret
+*styleName:      S&tílus
+*colorPickerName:   &Szín...
+
+
+! --- symbolic names of label of PasswdDlg dialog -----------------------------
+
+*loginName:    &Felhasználónév
+*passwordName: &Jelszó
+
+
+! --- resource for SelectFont dialog ------------------------------------------
+
+*SelectFont.title:	    Betűtípus kiválasztása
+*SelectFont.sampletext:	    Példaszöveg
+
+
+! --- resource for MessageDlg dialog ------------------------------------------
+
+*MessageDlg.noneTitle:      Üzenet
+*MessageDlg.infoTitle:      Információ
+*MessageDlg.questionTitle:  Kérdés
+*MessageDlg.warningTitle:   Figyelmeztetés
+*MessageDlg.errorTitle:     Hiba
+
+! --- resource for PasswdDlg dialog -------------------------------------------
+
+*PasswdDlg.title:  Add meg a felhasználónevet és a jelszót
+
+! --- symbolic names of label of SelectColor dialog ----------------------------
+
+*baseColorsName: Alapszínek
+*userColorsName: Felhasználói színek
+
+*yourSelectionName: Your Selection
+*colorSelectorsName: Color Selectors
+
+! --- dynamic help text for SelectColor dialog.  Lines 75 chars max, split by '\n'.
+
+*mouseHelpTextName: Click or drag the mouse in the Color Selectors to choose a color.\nIf the selected color remains black, regardless of what you\ndo in the left-hand Color Selector (for hue and saturation), check\nthe position of the pointer in the right-hand Color Selector\n(for brightness).\n\nClick one of the "Base colors" to read a value from this palette.\n\nClick one of the "User colors" to read a value from this palette,\nor to write to the palette if the color is blank.  If you then\nuse the Color Selectors to change the color, your choice will be\nwritten to this (User) palette color until you select another\n(Base or User) palette color.
+
+*keyboardHelpTextName: Click in the text entry window in the left of the "Your\nSelection" area.\n\nType the color that you want in hexadecimal RGB format.\nWhenever the number of hexadecimal digits is a multiple\nof 3, the color value is valid and will be copied to the\nother parts of the Color Selector.\n\nLeave the text entry window by clicking anywhere else,\nor by pressing the "Escape" or "Return" key.  The text\nentry window will then display the color in 24-bit RGB\nformat, although internally the Color Selector uses\n48-bit colors.\n\nWhen the text entry widget does not have keyboard focus\n(i.e. does not show a cursor), the "Return" and "Escape"\nkeys do the same as the "OK" and "Cancel" buttons,\nrespectively.
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/lang/no.rc
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/lang/no.rc	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/lang/no.rc	(revision 3762)
@@ -0,0 +1,67 @@
+! ------------------------------------------------------------------------------
+!  no.rc
+!  This file is part of Unifix BWidget Toolkit
+!  Definition of norwegian resources
+! ------------------------------------------------------------------------------
+
+
+! --- symbolic names of buttons ------------------------------------------------
+
+*abortName:   &Om
+*retryName:   &Prøv igjen
+*ignoreName:  &Ignore
+*okName:      &OK
+*cancelName:  &Avbryt
+*yesName:     &Ja
+*noName:      &Nei
+
+
+! --- symbolic names of label of SelectFont dialog ----------------------------
+
+*boldName:          Halvfet
+*italicName:        Kursiv
+*underlineName:     Understreking
+*overstrikeName:    Overstryke
+*fontName:          &Skrift
+*sizeName:          &Størrelse
+*styleName:         St&il
+*colorPickerName:   &Color...
+
+
+! --- symbolic names of label of PasswdDlg dialog -----------------------------
+
+*loginName:    &Logg inn
+*passwordName: &Passord
+
+
+! --- resource for SelectFont dialog ------------------------------------------
+
+*SelectFont.title:	    Skriftvalg
+*SelectFont.sampletext:	    Prøve tekst
+
+
+! --- resource for MessageDlg dialog ------------------------------------------
+
+*MessageDlg.noneTitle:      Melding
+*MessageDlg.infoTitle:      Informasjon
+*MessageDlg.questionTitle:  Spørsmål
+*MessageDlg.warningTitle:   Advarsel
+*MessageDlg.errorTitle:     Feil
+
+! --- resource for PasswdDlg dialog -------------------------------------------
+
+*PasswdDlg.title:  Skriv inn logginn og passord
+
+! --- symbolic names of label of SelectColor dialog ----------------------------
+
+*baseColorsName: Base colors
+*userColorsName: User colors
+
+*yourSelectionName: Your Selection
+*colorSelectorsName: Color Selectors
+
+! --- dynamic help text for SelectColor dialog.  Lines 75 chars max, split by '\n'.
+
+*mouseHelpTextName: Click or drag the mouse in the Color Selectors to choose a color.\nIf the selected color remains black, regardless of what you\ndo in the left-hand Color Selector (for hue and saturation), check\nthe position of the pointer in the right-hand Color Selector\n(for brightness).\n\nClick one of the "Base colors" to read a value from this palette.\n\nClick one of the "User colors" to read a value from this palette,\nor to write to the palette if the color is blank.  If you then\nuse the Color Selectors to change the color, your choice will be\nwritten to this (User) palette color until you select another\n(Base or User) palette color.
+
+*keyboardHelpTextName: Click in the text entry window in the left of the "Your\nSelection" area.\n\nType the color that you want in hexadecimal RGB format.\nWhenever the number of hexadecimal digits is a multiple\nof 3, the color value is valid and will be copied to the\nother parts of the Color Selector.\n\nLeave the text entry window by clicking anywhere else,\nor by pressing the "Escape" or "Return" key.  The text\nentry window will then display the color in 24-bit RGB\nformat, although internally the Color Selector uses\n48-bit colors.\n\nWhen the text entry widget does not have keyboard focus\n(i.e. does not show a cursor), the "Return" and "Escape"\nkeys do the same as the "OK" and "Cancel" buttons,\nrespectively.
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/lang/en.rc
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/lang/en.rc	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/lang/en.rc	(revision 3762)
@@ -0,0 +1,67 @@
+! ------------------------------------------------------------------------------
+!  en.rc
+!  This file is part of Unifix BWidget Toolkit
+!  Definition of english resources
+! ------------------------------------------------------------------------------
+
+
+! --- symbolic names of buttons ------------------------------------------------
+
+*abortName:   &Abort
+*retryName:   &Retry
+*ignoreName:  &Ignore
+*okName:      &OK
+*cancelName:  &Cancel
+*yesName:     &Yes
+*noName:      &No
+
+
+! --- symbolic names of label of SelectFont dialog ----------------------------
+
+*boldName:          Bold
+*italicName:        Italic
+*underlineName:     Underline
+*overstrikeName:    Overstrike
+*fontName:          &Font
+*sizeName:          &Size
+*styleName:         St&yle
+*colorPickerName:   &Color...
+
+
+! --- symbolic names of label of PasswdDlg dialog -----------------------------
+
+*loginName:    &Login
+*passwordName: &Password
+
+
+! --- resource for SelectFont dialog ------------------------------------------
+
+*SelectFont.title:	    Font selection
+*SelectFont.sampletext:	    Sample text
+
+
+! --- resource for MessageDlg dialog ------------------------------------------
+
+*MessageDlg.noneTitle:      Message
+*MessageDlg.infoTitle:      Information
+*MessageDlg.questionTitle:  Question
+*MessageDlg.warningTitle:   Warning
+*MessageDlg.errorTitle:     Error
+
+! --- resource for PasswdDlg dialog -------------------------------------------
+
+*PasswdDlg.title:  Enter login and password
+
+! --- symbolic names of label of SelectColor dialog ----------------------------
+
+*baseColorsName: Base colors
+*userColorsName: User colors
+
+*yourSelectionName: Your Selection
+*colorSelectorsName: Color Selectors
+
+! --- dynamic help text for SelectColor dialog.  Lines 75 chars max, split by '\n'.
+
+*mouseHelpTextName: Click or drag the mouse in the Color Selectors to choose a color.\nIf the selected color remains black, regardless of what you\ndo in the left-hand Color Selector (for hue and saturation), check\nthe position of the pointer in the right-hand Color Selector\n(for brightness).\n\nClick one of the "Base colors" to read a value from this palette.\n\nClick one of the "User colors" to read a value from this palette,\nor to write to the palette if the color is blank.  If you then\nuse the Color Selectors to change the color, your choice will be\nwritten to this (User) palette color until you select another\n(Base or User) palette color.
+
+*keyboardHelpTextName: Click in the text entry window in the left of the "Your\nSelection" area.\n\nType the color that you want in hexadecimal RGB format.\nWhenever the number of hexadecimal digits is a multiple\nof 3, the color value is valid and will be copied to the\nother parts of the Color Selector.\n\nLeave the text entry window by clicking anywhere else,\nor by pressing the "Escape" or "Return" key.  The text\nentry window will then display the color in 24-bit RGB\nformat, although internally the Color Selector uses\n48-bit colors.\n\nWhen the text entry widget does not have keyboard focus\n(i.e. does not show a cursor), the "Return" and "Escape"\nkeys do the same as the "OK" and "Cancel" buttons,\nrespectively.
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/lang/da.rc
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/lang/da.rc	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/lang/da.rc	(revision 3762)
@@ -0,0 +1,67 @@
+! -----------------------------------------------------------------------------
+!  da.rc
+!  This file is part of Unifix BWidget Toolkit
+!  Definition of Danish resources
+! -----------------------------------------------------------------------------
+
+
+! --- symbolic names of buttons -----------------------------------------------
+
+*abortName:   &Annullér
+*retryName:   P&røv igen
+*ignoreName:  &Ignorer
+*okName:      &OK
+*cancelName:  &Cancel
+*yesName:     &Ja
+*noName:      &Nej
+
+
+! --- symbolic names of label of SelectFont dialog ----------------------------
+
+*boldName:          Fed
+*italicName:        Kursiv
+*underlineName:     Understreg
+*overstrikeName:    Overstreg
+*fontName:          &Font
+*sizeName:          &Størrelse
+*styleName:         St&il
+*colorPickerName:   F&arve...
+
+
+! --- symbolic names of label of PasswdDlg dialog -----------------------------
+
+*loginName:    &Brugernavn
+*passwordName: &Password
+
+
+! --- resource for SelectFont dialog ------------------------------------------
+
+*SelectFont.title:	    Font-valg
+*SelectFont.sampletext:	    Eksempeltekst æøå
+
+
+! --- resource for MessageDlg dialog ------------------------------------------
+
+*MessageDlg.noneTitle:      Besked
+*MessageDlg.infoTitle:      Information
+*MessageDlg.questionTitle:  Spørgsmål
+*MessageDlg.warningTitle:   Advarsel
+*MessageDlg.errorTitle:     Fejl
+
+! --- resource for PasswdDlg dialog -------------------------------------------
+
+*PasswdDlg.title:  Indtast brugernavn og password
+
+! --- symbolic names of label of SelectColor dialog ----------------------------
+
+*baseColorsName: Grundfarver
+*userColorsName: Brugerdefinerede farver
+
+*yourSelectionName: Dit valg
+*colorSelectorsName: Farvervælger
+
+! --- dynamic help text for SelectColor dialog.  Lines 75 chars max, split by '\n'.
+
+*mouseHelpTextName: Klik eller træk musen i farvervælgeren for at vælge en farve.\nHvis den valgte farve altid er sort, uanset værdierne til venstre,\ntjek intensitetsværdien til højere.\n\nKlik en af "grundfarverne" for at aflæse værdierne fra paletten,\neller for at tildele en, hvis farven er sort.  Hvis du efterfølgende\nbruger farvevælgeren til at ændre en farver, gemmes ændringen under\nbrugerdefinerede farver indtil en ny paletfarve er valgt.
+
+*keyboardHelpTextName: Klik i tekstboksen til venstre i "dit valg" området.\n\nIndtast den ønskede farve i hexadecimalt RGB-format.\nVærdien er gyldig når den består af et antal cifre deleligt med 3,\ni så fald opdateres resten af farvervælgeren.\n\nForlad tekstboksen ved at klikke andetsteds, eller ved at taste\n"Escape" eller "Return". Tekstboksen viser efterfølgende farven i\n24-bit RGB-format, dog arbejder farvevælgeren internt med\n48-bit værdier.\n\nNår tekstboksen ikke har fokus fungerer "Return" og "Escape"\ntasterne lige som henholdsvis "OK" og "Annullér".
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/lang/es.rc
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/lang/es.rc	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/lang/es.rc	(revision 3762)
@@ -0,0 +1,69 @@
+! ------------------------------------------------------------------------------
+!  es.rc
+!  This file is part of Unifix BWidget Toolkit
+!  Definition of spanish resources
+!  daniel@rawbyte.com, jima, neko
+! ------------------------------------------------------------------------------
+
+
+! --- symbolic names of buttons ------------------------------------------------
+
+*abortName:    &Abortar
+*retryName:    &Reintentar
+*ignoreName:   &Ignorar
+*okName:       &OK
+*cancelName:   &Cancelar
+*yesName:      &Sí
+*noName:       &No
+
+
+! --- symbolic names of label of SelectFont dialog ----------------------------
+
+*boldName:          Negrita
+*italicName:        Cursiva
+*underlineName:     Subrayado
+*overstrikeName:    Tachado
+*fontName:          &Fuente
+*sizeName:          &Tamaño
+*styleName:         &Estilo
+*colorPickerName:   &Color...
+
+
+! --- symbolic names of label of PasswdDlg dialog -----------------------------
+
+*loginName:    &Usuario
+*passwordName: &Contraseña
+
+
+! --- resource for SelectFont dialog ------------------------------------------
+
+*SelectFont.title:        Selección de fuente
+*SelectFont.sampletext:   Texto de Ejemplo
+
+
+! --- resource for MessageDlg dialog ------------------------------------------
+
+*MessageDlg.noneTitle:      Mensaje
+*MessageDlg.infoTitle:      Información
+*MessageDlg.questionTitle:  Pregunta
+*MessageDlg.warningTitle:   Aviso
+*MessageDlg.errorTitle:     Error
+
+! --- resource for PasswdDlg dialog -------------------------------------------
+
+*PasswdDlg.title:  Introduzca su usuario y contraseña
+
+! --- symbolic names of label of SelectColor dialog ----------------------------
+
+*baseColorsName: Colores base
+*userColorsName: Colores de usuario
+
+*yourSelectionName: Su selección
+*colorSelectorsName: Selectores de color
+
+
+! --- dynamic help text for SelectColor dialog.  Lines 75 chars max, split by '\n'.
+
+*mouseHelpTextName: Haga click o arrastre el ratón en los selectores de color para elegir un color.\nSi el color seleccionado permanece negro, sin importar lo que haga en el selector de\ncolor izquierdo (para tono y saturación), compruebe la posición del puntero en el selector\nde color derecho (para brillo).\n\nHaga click en uno de los "Colores base" para leer un valor de esa paleta.\n\nClick en uno de los "Colores de usuario" para leer un valor de esa paleta, o para escribir\nla paleta si el color está vacio.  Si luego usted usa los Selectores de color para cambiar\nel color, su elección se escribirá en ese color de la paleta (de usuario) hasta seleccionar\notro color de la paleta (base o de usuario).
+
+*keyboardHelpTextName: Haga click en la ventana de entrada de texto a la izquierda del área "Su\nSelección".\n\nTeclee el color que desee en formato RGB hexadecimal. Siempre que el número de dígitos\nhexadecimales sea múltiplo de 3, el valor de color es válido y se copiará a las\notras partes del Selector de Color.\n\nSalga de la ventana de entrada de texto haciendo click en otro lugar, o presionando la\ntecla "Escape" o "Enter". La ventana de entrada de texto mostrará entonces el color en\nformato RGB 24-bit, aunque internamente el Selector de Color usa colores de 48-bit.\n\nCuando el control de entrada de texto no tenga el foco de teclado (ej, no muestra un\ncursor), las teclas "Enter" y "Escape" hacen lo mismo que los botones "OK" y "Cancel",\nrespectivamente.
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/lang/fr.rc
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/lang/fr.rc	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/lang/fr.rc	(revision 3762)
@@ -0,0 +1,69 @@
+! ------------------------------------------------------------------------------
+!  fr.rc
+!  This file is part of Unifix BWidget Toolkit
+!  Definition of french resources
+! ------------------------------------------------------------------------------
+
+
+! --- symbolic names of buttons ------------------------------------------------
+
+*abortName:    A&bandonner
+*retryName:    &Réessayer
+*ignoreName:   &Ignorer
+*okName:       &OK
+*cancelName:   &Annuler
+*yesName:      &Oui
+*noName:       &Non
+
+
+! --- symbolic names of label of SelectFont dialog ----------------------------
+
+*boldName:          &Gras
+*italicName:        &Italique
+*underlineName:     &Souligné
+*overstrikeName:    &Barré
+*fontName:          &Police
+*sizeName:          &Taille
+*styleName:         St&yle
+*colorPickerName:   &Couleur...
+
+
+! --- symbolic names of label of PasswdDlg dialog -----------------------------
+
+*loginName:    Nom de l'&utilisateur
+*passwordName: Mot de &passe
+
+
+! --- resource for SelectFont dialog ------------------------------------------
+
+*SelectFont.title:        Sélection d'une police
+*SelectFont.sampletext:	  Texte d'exemple
+
+
+! --- resource for MessageDlg dialog ------------------------------------------
+
+*MessageDlg.noneTitle:      Message
+*MessageDlg.infoTitle:      Information
+*MessageDlg.questionTitle:  Question
+*MessageDlg.warningTitle:   Attention
+*MessageDlg.errorTitle:     Erreur
+
+! --- resource for PasswdDlg dialog -------------------------------------------
+
+*PasswdDlg.title:  Entrez le login et le mot de passe
+
+! --- symbolic names of label of SelectColor dialog ----------------------------
+
+*baseColorsName: Couleurs de base
+*userColorsName: Couleurs utilisateur
+
+*yourSelectionName: Votre sélection
+*colorSelectorsName: Sélecteur de couleurs
+
+! --- dynamic help text for SelectColor dialog.  Lines 75 chars max, split by '\n'.
+
+
+*mouseHelpTextName: Cliquez ou déplacez la souris dans la palette pour choisir une couleur.\nSi la couleur affichée reste noire quelle que soit la sélection dans la palette (teinte et\nsaturation), vérifiez la position du pointeur dans le sélecteur de droite (luminosité).\n\nCliquez sur l'une des "Couleurs de base" pour la sélectionner.\n\nCliquez sur l'une des "Couleurs utilisateurs" pour la sélectionner, ou pour la\nsauver dans la palette utilisateur dans une case blanche. Les modifications via le\nsélecteur de couleurs sont alors propagées dans la case sélectionnée de la palette\nutilisateur jusqu'à ce qu'une autre couleur (de base ou utilisateur) soit sélectionnée.
+
+*keyboardHelpTextName: Cliquez dans la zone de saisie à gauche, dans la zone "Votre sélection".\n\nEntrez la couleur désirée au format RGB hexadécimal.\nLa valeur est validée lorsque le nombre de chiffres hexadécimaux est un multiple de 3.\nElle est alors propagée aux autres zones du sélecteur de couleurs.\n\nLa zone de saisie peut être quittée en cliquant n'importe où ailleurs ou en appuyant sur la\ntouche "Escape" ou "Entrée" du clavier. Bien que le sélecteur de couleurs utilise\n48 bits en interne, la zone de saisie affichera alors la couleur au format RGB en\nhexadécimal sur 24 bits.\n\nLorsque la zone de saisie n'a pas le focus (i.e. ne montre pas le curseur), les touches\n"Entrée" et "Escape" ont la même fonction que les boutons "OK" et "Annuler" respectivement.
+
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/lang/de.rc
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/lang/de.rc	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/lang/de.rc	(revision 3762)
@@ -0,0 +1,67 @@
+! ------------------------------------------------------------------------------
+!  de.rc
+!  This file is part of Unifix BWidget Toolkit
+!  Definition of german resources
+! ------------------------------------------------------------------------------
+
+
+! --- symbolic names of buttons ------------------------------------------------
+
+*abortName:   &Abbrechen
+*retryName:   &Wiederholen
+*ignoreName:  &Ignorieren
+*okName:      &OK
+*cancelName:  &Abbrechen
+*yesName:     &Ja
+*noName:      &Nein
+
+
+! --- symbolic names of label of SelectFont dialog ----------------------------
+
+*boldName:          Fett
+*italicName:        Kursiv
+*underlineName:     Unterstrichen
+*overstrikeName:    Durchgestrichen
+*fontName:          &Schriftart
+*sizeName:          S&chriftgrad
+*styleName:         Sc&hriftschnitt
+*colorPickerName:   &Farbe...
+
+! --- symbolic names of label of PasswdDlg dialog -----------------------------
+
+*loginName:    &Login
+*passwordName: &Password
+
+
+! --- resource for SelectFont dialog ------------------------------------------
+
+*SelectFont.title:	    Schrift Auswahl
+*SelectFont.sampletext:	    Beispieltext
+
+
+! --- resource for MessageDlg dialog ------------------------------------------
+
+*MessageDlg.noneTitle:      Meldung
+*MessageDlg.infoTitle:      Hinweis
+*MessageDlg.questionTitle:  Frage
+*MessageDlg.warningTitle:   Warnung
+*MessageDlg.errorTitle:     Fehler
+
+
+! --- resource for PasswdDlg dialog -------------------------------------------
+
+*PasswdDlg.title:  Enter login and password
+
+! --- symbolic names of label of SelectColor dialog ----------------------------
+
+*baseColorsName: Grundfarben
+*userColorsName: Benutzerdefinierte Farben
+
+*yourSelectionName: Gewählte Farbe
+*colorSelectorsName: Farbraum
+
+! --- dynamic help text for SelectColor dialog.  Lines 75 chars max, split by '\n'.
+
+*mouseHelpTextName: Um eine Farbe zu wählen bitte im Farbraum und im Helligkeitsregler\nklicken oder ziehen. Bleibt die gewählte Farbe wieder erwarten schwarz,\nso muß die Helligkeit ganz rechts erhöht werden.\n\nMit einem Klick auf die Grundfarbenpalette kann diese gewählt werden.\n\nEin benutzerdefinierter Farbspeicher kann durch einen Klick selektiert\nwerden. Ab dann wird jede Farbveränderung auch in den Farbspeicher\n geschrieben.
+
+*keyboardHelpTextName: Aktivieren sie das Texteingabefenster mit einem Klick oder mit der\nTabulatortaste. Eine Farbe kann als RGB-Wert eingegeben mit 3 oder 6\nhexadezimalen Ziffern eingegeben werden.\n\nDie Eingabe kann mit der Escape- oder Eingabetaste abgeschlossen werden.\n\nAusserhalb des Eingabefensters wird der Dialog mit der Eingabetaste\nbestätigt und mit der Escapetaste zurückgenommen.
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/lang/nl.rc
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/lang/nl.rc	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/lang/nl.rc	(revision 3762)
@@ -0,0 +1,67 @@
+! ------------------------------------------------------------------------------
+!  nl.rc
+!  This file is part of Unifix BWidget Toolkit
+!  Definition of Dutch resources
+! ------------------------------------------------------------------------------
+
+
+! --- symbolic names of buttons ------------------------------------------------
+
+*abortName:   Af&breken
+*retryName:   Opnie&uw proberen
+*ignoreName:  N&egeren
+*okName:      &OK
+*cancelName:  &Annuleren
+*yesName:     &Ja
+*noName:      &Nee
+
+
+! --- symbolic names of label of SelectFont dialog ----------------------------
+
+*boldName:          Vet
+*italicName:        Cursief
+*underlineName:     Onderstrepen
+*overstrikeName:    Doorhalen
+*fontName:          &Lettertype
+*sizeName:          &Grootte
+*styleName:         &Stijl
+*colorPickerName:   &Kleur...
+
+
+! --- symbolic names of label of PasswdDlg dialog -----------------------------
+
+*loginName:    &Inlognaam
+*passwordName: &Wachtwoord
+
+
+! --- resource for SelectFont dialog ------------------------------------------
+
+*SelectFont.title:	    Lettertypeselectie
+*SelectFont.sampletext:	    Voorbeeldtekst
+
+
+! --- resource for MessageDlg dialog ------------------------------------------
+
+*MessageDlg.noneTitle:      Bericht
+*MessageDlg.infoTitle:      Informatie
+*MessageDlg.questionTitle:  Vraag
+*MessageDlg.warningTitle:   Waarschuwing
+*MessageDlg.errorTitle:     Fout
+
+! --- resource for PasswdDlg dialog -------------------------------------------
+
+*PasswdDlg.title:  Voer inlognaam en wachtwoord in
+
+! --- symbolic names of label of SelectColor dialog ----------------------------
+
+*baseColorsName: Basiskleuren
+*userColorsName: Aangepaste kleuren
+
+*yourSelectionName: Uw selectie
+*colorSelectorsName: Selecteren kleuren
+
+! --- dynamic help text for SelectColor dialog.  Lines 75 chars max, split by '\n'.
+
+*mouseHelpTextName: Klik of sleep de muis in de kleurselectors om een kleur te kiezen.\nAls de geselecteerde kleur zwart blijft, ongeacht wat je doet in het\nlinkerdeel (tint en verzadiging), controleer de positie van de muispointer\nin het rechterdeel (helderheid).\n\nKlik op een van de basiskleuren om een waarde uit dit palet te lezen.\n\nKlik op een van de basiskleuren om een waarde uit dit palet te lezen of\nom een nieuwe waarde in te voeren als het vakje leeg is. Als je dan de\nkleurselectors gebruikt om de kleur te wijzigen, dan wordt die nieuwe\nkeuze naar het aanpasbare kleurvakje geschreven tot je een andere\nbasiskleur of aanpasbare kleur kiest. 
+
+*keyboardHelpTextName: Klik in het invoerveld links van het deel "Uw selectie".\nTyp de gewenste kleur in volgens het hexadecimale RGB-format.\nDe kleurwaarde is acceptabel als het aantal hexadecimale cijfers een\nveelvoud is van 3. De waarde wordt gekopieerd naar andere delen van de\nkleurselector.\n\nVerlaat het invoerveld door ergens anders te klikken of via "Escape" of\n"Return". Het invoerveld toont dan de kleur in 24-bits RGB-format\n(overigens wordt intern een 48-bits RGB-format gebruikt).\n\nAls het invoerveld niet de focus heeft (geen tekstcursor vertoont), dan\nwerken de "Return"- en "Escape"-toetsen net als de "OK"- en\n"Cancel"-buttons.
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/lang/pl.rc
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/lang/pl.rc	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/lang/pl.rc	(revision 3762)
@@ -0,0 +1,67 @@
+! ------------------------------------------------------------------------------
+!  pl.rc
+!  This file is part of Unifix BWidget Toolkit
+!  Definition of english resources
+! ------------------------------------------------------------------------------
+
+
+! --- symbolic names of buttons ------------------------------------------------
+
+*abortName:   &Porzuć
+*retryName:   P&onów
+*ignoreName:  &Ignoruj
+*okName:      &OK
+*cancelName:  &Anyluj
+*yesName:     &Tak
+*noName:      &Nie
+
+
+! --- symbolic names of label of SelectFont dialog ----------------------------
+
+*boldName:          Pogrubiona
+*italicName:        Kursywa
+*underlineName:     Podkreślenie
+*overstrikeName:    Przekreślenie
+*fontName:          &Czcionka:
+*sizeName:          &Rozmiar:
+*styleName:         St&yl czcionki:
+*colorPickerName:   &Kolor...
+
+
+! --- symbolic names of label of PasswdDlg dialog -----------------------------
+
+*loginName:    &Login
+*passwordName: &Hasło
+
+
+! --- resource for SelectFont dialog ------------------------------------------
+
+*SelectFont.title:	    Wybór czcionki
+*SelectFont.sampletext:	    Przykładowy tekst
+
+
+! --- resource for MessageDlg dialog ------------------------------------------
+
+*MessageDlg.noneTitle:      Wiadomość
+*MessageDlg.infoTitle:      Informacja
+*MessageDlg.questionTitle:  Pytanie
+*MessageDlg.warningTitle:   Ostrzeżenie
+*MessageDlg.errorTitle:     Błąd
+
+! --- resource for PasswdDlg dialog -------------------------------------------
+
+*PasswdDlg.title:  Wpisz login i hasło
+
+! --- symbolic names of label of SelectColor dialog ----------------------------
+
+*baseColorsName: Kolory podstawowe
+*userColorsName: Kolory niestandardowe
+
+*yourSelectionName: Your Selection
+*colorSelectorsName: Color Selectors
+
+! --- dynamic help text for SelectColor dialog.  Lines 75 chars max, split by '\n'.
+
+*mouseHelpTextName: Click or drag the mouse in the Color Selectors to choose a color.\nIf the selected color remains black, regardless of what you\ndo in the left-hand Color Selector (for hue and saturation), check\nthe position of the pointer in the right-hand Color Selector\n(for brightness).\n\nClick one of the "Base colors" to read a value from this palette.\n\nClick one of the "User colors" to read a value from this palette,\nor to write to the palette if the color is blank.  If you then\nuse the Color Selectors to change the color, your choice will be\nwritten to this (User) palette color until you select another\n(Base or User) palette color.
+
+*keyboardHelpTextName: Click in the text entry window in the left of the "Your\nSelection" area.\n\nType the color that you want in hexadecimal RGB format.\nWhenever the number of hexadecimal digits is a multiple\nof 3, the color value is valid and will be copied to the\nother parts of the Color Selector.\n\nLeave the text entry window by clicking anywhere else,\nor by pressing the "Escape" or "Return" key.  The text\nentry window will then display the color in 24-bit RGB\nformat, although internally the Color Selector uses\n48-bit colors.\n\nWhen the text entry widget does not have keyboard focus\n(i.e. does not show a cursor), the "Return" and "Escape"\nkeys do the same as the "OK" and "Cancel" buttons,\nrespectively.
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/tests/entry.test
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/tests/entry.test	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/tests/entry.test	(revision 3762)
@@ -0,0 +1,173 @@
+if { [lsearch [package names] tcltest] == -1 } {
+	package require tcltest
+	namespace import tcltest::*
+}
+lappend auto_path /home/ericm/bwidget
+package require BWidget
+
+option add *Entry.borderWidth 2
+option add *Entry.highlightThickness 2
+option add *Entry.font {Helvetica -12}
+option add *Entry.relief sunken
+
+Entry .e
+pack .e
+update
+set i 0
+foreach test {
+    {-background #ff0000 #ff0000 non-existent \
+	    {unknown color name "non-existent"}}
+    {-bd 4 4 bad Value {bad screen distance "badValue"}}
+    {-bg #ff0000 #ff0000 non-existent {unknown color name "non-existent"}}
+    {-borderwidth 1.3 1 badValue {bad screen distance "badValue"}}
+    {-command foo foo {} {}}
+    {-disabledforeground blue blue non-existent \
+	    {unknown color name "non-existent"}}
+    {-editable false 0 shazbot {expected boolean value but got "shazbot"}}
+    {-exportselection yes 1 xyzzy {expected boolean value but got "xyzzy"}}
+    {-fg #110022 #110022 bogus {unknown color name "bogus"}}
+    {-font {Helvetica 12 italic} {Helvetica 12 italic} {} \
+	    {font "" doesn't exist}}
+    {-foreground #110022 #110022 bogus {unknown color name "bogus"}}
+    {-highlightbackground #123456 #123456 ugly {unknown color name "ugly"}}
+    {-highlightcolor #123456 #123456 bogus {unknown color name "bogus"}}
+    {-highlightthickness 6 6 bogus {bad screen distance "bogus"}}
+    {-highlightthickness -2 0 {} {}}
+    {-insertbackground #110022 #110022 bogus {unknown color name "bogus"}}
+    {-insertborderwidth 1.3 1 2.6x {bad screen distance "2.6x"}}
+    {-insertofftime 100 100 3.2 {expected integer but got "3.2"}}
+    {-insertontime 100 100 3.2 {expected integer but got "3.2"}}
+    {-justify right right bogus \
+	    {bad justification "bogus": must be left, right, or center}}
+    {-relief groove groove 1.5 \
+	    {bad relief "1.5": must be flat, groove, raised, ridge,\
+	    solid, or sunken}}
+    {-selectbackground #110022 #110022 bogus {unknown color name "bogus"}}
+    {-selectborderwidth 1.3 1 badValue {bad screen distance "badValue"}}
+    {-selectforeground #654321 #654321 bogus {unknown color name "bogus"}}
+    {-show * * {} {}}
+    {-state normal normal bogus \
+	    {bad state "bogus": must be disabled or normal}}
+    {-takefocus "any string" "any string" {} {}}
+    {-text foobar foobar {} {}}
+    {-textvariable i i {} {}}
+    {-width 402 402 3p {expected integer but got "3p"}}
+    {-xscrollcommand {Some command} {Some command} {} {}}
+} {
+    set name [lindex $test 0]
+    test entry-1.$i {configuration options} {
+        .e configure $name [lindex $test 1]
+        list [lindex [.e configure $name] 4] [.e cget $name]
+    } [list [lindex $test 2] [lindex $test 2]]
+    incr i
+}
+destroy .e
+
+test Entry-2.1 {Entry} {
+    list [catch {Entry} msg] $msg
+} {1 {wrong # args: should be "Entry path ..."}}
+test Entry-2.2 {Entry} {
+    list [catch {Entry gorp} msg] $msg
+} {1 {bad window path name "gorp"}}
+test Entry-2.3 {Entry procedure} {
+    Entry .e
+    set res [list [winfo exists .e] [winfo class .e] [info commands .e]]
+    destroy .e
+    set res
+} {1 Entry .e}
+test Entry-2.4 {Entr procedure} {
+    list [catch {Entry .e -gorp foo} msg] $msg [winfo exists .e] \
+            [info commands .e]
+} {1 {unknown option "-gorp"} 0 {}}
+    
+test Entry-3.1 {disabled state grays widget} {
+    Entry .e -disabledforeground blue -foreground red -state normal
+    set res [list [.e cget -foreground] [.e cget -disabledforeground] \
+	    [.e:cmd cget -foreground]]
+    .e configure -state disabled
+    lappend res [.e:cmd cget -foreground]
+    .e configure -state normal
+    lappend res [.e:cmd cget -foreground]
+    destroy .e
+    set res
+} {red blue red blue red}
+test Entry-3.2 {changing disabledforeground of an enabled entry} {
+    Entry .e -disabledforeground blue -foreground red -state normal
+    set res [list [.e cget -foreground] [.e cget -disabledforeground] \
+	    [.e:cmd cget -foreground]]
+    .e configure -disabledforeground green
+    lappend res [.e:cmd cget -foreground]
+    destroy .e
+    set res
+} {red blue red red}
+test Entry-3.3 {changing normal foreground of a disabled entry} {
+    Entry .e -disabledforeground blue -foreground red -state disabled
+    set res [list [.e cget -foreground] [.e cget -disabledforeground] \
+	    [.e:cmd cget -foreground]]
+    .e configure -foreground green
+    lappend res [.e:cmd cget -foreground]
+    destroy .e
+    set res
+} {red blue blue blue}
+test Entry-3.4 {changing disabled foreground of a disabled entry} {
+    Entry .e -disabledforeground blue -foreground red -state disabled
+    set res [list [.e cget -foreground] [.e cget -disabledforeground] \
+	    [.e:cmd cget -foreground]]
+    .e configure -disabledforeground green
+    lappend res [.e:cmd cget -foreground]
+    destroy .e
+    set res
+} {red blue blue green}
+
+test Entry-4.1 {editable flag enables/disables editing} {
+    Entry .e -editable true
+    set res [expr {[lsearch [bindtags .e] BwDisabledEntry] == -1}]
+    .e configure -editable false
+    lappend res [expr {[lsearch [bindtags .e] BwDisabledEntry] != -1}]
+    destroy .e
+    set res
+} {1 1}
+test Entry-4.2 {editable flag does not impact foreground color} {
+    Entry .e -editable 1 -foreground red -disabledforeground blue -state normal
+    set res [list [.e:cmd cget -foreground]]
+    .e configure -editable false
+    lappend res [.e:cmd cget -foreground]
+    destroy .e
+    set res
+} {red red}
+test Entry-4.3 {editable flag changes cursor} {
+    Entry .e -editable 1
+    set res [list [.e:cmd cget -cursor]]
+    .e configure -editable 0
+    lappend res [.e:cmd cget -cursor]
+    destroy .e
+    set res
+} [list xterm left_ptr]
+
+test Entry-5.1 {-text flag gets entry text} {
+    Entry .e
+    .e delete 0 end
+    .e insert end foobar
+    set res [.e cget -text]
+    destroy .e
+    set res
+} foobar
+test Entry-5.2 {-text flag sets entry text} {
+    Entry .e
+    .e delete 0 end
+    .e configure -text barbaz
+    set res [.e get]
+    destroy .e
+    set res
+} barbaz
+
+test Entry-6.1 {-command works} {
+    set ::foo 0
+    Entry .e -command {incr ::foo}
+    Entry::invoke .e
+    destroy .e
+    set ::foo
+} 1
+
+tcltest::cleanupTests
+exit
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/PanedWindow.html
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/PanedWindow.html	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/PanedWindow.html	(revision 3762)
@@ -0,0 +1,158 @@
+<HTML>
+<HEAD><TITLE>PanedWindow</TITLE></HEAD>
+<BODY BGCOLOR=white>
+<DL><DT><I><A HREF="#descr">NAME</A></I></DT>
+<DD><B>PanedWindow</B>
+ - Tiled layout manager widget
+</DD></DL>
+<DL>
+<DT><I>CREATION</I></DT>
+<DD><A HREF="#descr"><B>PanedWindow</B></A> <I>pathName</I> ?<I>option value...</I>?</DD>
+</DL>
+<DL>
+<DT><I>STANDARD OPTIONS</I></DT>
+<DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-background">-background or -bg</A></TD>
+</TABLE></DD>
+</DL>
+<DL>
+<DT><I><A HREF="#wso">WIDGET-SPECIFIC OPTIONS</A></I></DT>
+<DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-activator">-activator</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="#-pad">-pad</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-side">-side</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="#-weights">-weights</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-width">-width</A></TD>
+</TR>
+</TABLE></DD>
+</DL>
+<DL>
+<DT><I><A HREF="#wc">WIDGET COMMAND</A></I></DT>
+<DD><I>pathName</I> <A HREF="#add"><B>add</B></A>
+ ?<I>option value...</I>?
+</DD>
+<DD><I>pathName</I> <A HREF="#cget"><B>cget</B></A>
+ <I>option</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#configure"><B>configure</B></A>
+ ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...?
+</DD>
+<DD><I>pathName</I> <A HREF="#getframe"><B>getframe</B></A>
+ <I>index</I>
+</DD>
+</DL>
+<BR><HR WIDTH="100%"><BR>
+<B><A NAME="descr"></A>DESCRIPTION</B><BR>
+<P>
+
+PanedWindow is a widget that lays out children in
+a vertically or horizontally tiled format.
+The user can adjust the size of the panes, with a pane control sash created
+between children.
+</P>
+<BR><HR WIDTH="50%"><BR>
+<B><A NAME="wso">WIDGET-SPECIFIC OPTIONS</A></B><BR>
+<DL><DT><A NAME="-activator"><B>-activator (read-only)</B></A></DT>
+<DD>
+
+By default, the control sash is either a button or a line depending
+upon the underlying operating system.  This sash may be explicitly set
+using this option.  If set to <B>line</B> then the sash consists of
+just a dividing line.  Otherwise if set to <B>button</B> then it
+constists of a knob that can be dragged.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-pad"><B>-pad (read-only)</B></A></DT>
+<DD>
+
+Specifies additional space between the button of the sash and children.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-side"><B>-side (read-only)</B></A></DT>
+<DD>
+
+Specifies the side of the sash, which implies the layout: <B>top</B> or <B>bottom</B>
+(horizontal layout), <B>left</B> or <B>right</B> (vertical layout).
+</DD>
+</DL>
+<DL><DT><A NAME="-weights"><B>-weights (read-only)</B></A></DT>
+<DD>
+
+Specifies how the weights specified when adding panes should be used. Must be
+<B>extra</B> or <B>available</B>. When using <I>extra</I>, only extra space is
+devided among the diffferent panes relative to their weight. When using
+<I>available</I>, all space is devided among the diffferent panes relative to
+their weight. Default value for <B>weights</B> is <I>extra</I>.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-width"><B>-width (read-only)</B></A></DT>
+<DD>
+
+Specifies the width of the button of the sash.  This option is ignored
+if the activator is set to <B>line</B>.
+
+</DD>
+</DL>
+<HR WIDTH="50%"><BR>
+<B><A NAME="wc">WIDGET COMMAND</A></B><BR>
+<DL><DT><A NAME="add"><I>pathName</I> <B>add</B></A>
+ ?<I>option value...</I>?
+</DT><DD>
+
+This command add a new pane. The new pane is placed below the previous pane for
+vertical layout or at right for horizontal layout. This command returns a frame
+where user can place its widget. Valid options are:
+<P>
+<DL><DT><A NAME="Pane-minsize"><B>-minsize</B></A></DT>
+<DD>
+
+Specifies the minimum size requested for the pane.
+See the <B>grid</B> command for more information.
+</DD>
+</DL>
+<DL><DT><A NAME="Pane-weight"><B>-weight</B></A></DT>
+<DD>
+
+Specifies the relative weight for apportioning any extra spaces among panes.
+See the <B>grid</B> command for more information.
+</DD>
+</DL>
+</DD></DL>
+<DL><DT><A NAME="cget"><I>pathName</I> <B>cget</B></A>
+ <I>option</I>
+</DT><DD>
+
+Returns the current value of the configuration option given by <I>option</I>.
+<I>Option</I> may have any of the values accepted by the creation command.
+</DD></DL>
+<DL><DT><A NAME="configure"><I>pathName</I> <B>configure</B></A>
+ ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...?
+</DT><DD>
+
+Query or modify the configuration options of the widget. If no <I>option</I> is specified,
+returns a list describing all of the available options for <I>pathName</I>.
+If <I>option</I> is specified with no <I>value</I>, then the command returns a list
+describing the one named <I>option</I> (this list will be identical to the corresponding
+sublist of the value returned if no <I>option</I> is specified). If one or
+more <I>option-value</I> pairs are specified, then the command modifies the given widget
+option(s) to have the given value(s); in this case the command returns an empty string.
+<I>Option</I> may have any of the values accepted by the creation command.
+Read-only options are not be modified.
+
+</DD></DL>
+<DL><DT><A NAME="getframe"><I>pathName</I> <B>getframe</B></A>
+ <I>index</I>
+</DT><DD>
+
+Returns the pathname of the <I>index</I>th added pane.
+</DD></DL>
+</BODY></HTML>
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/Label.html
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/Label.html	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/Label.html	(revision 3762)
@@ -0,0 +1,362 @@
+<HTML>
+<HEAD><TITLE>Label</TITLE></HEAD>
+<BODY BGCOLOR=white>
+<DL><DT><I><A HREF="#descr">NAME</A></I></DT>
+<DD><B>Label</B>
+ - Label widget with <B>state</B> option, dynamic help and drag and drop facilities
+</DD></DL>
+<DL>
+<DT><I>CREATION</I></DT>
+<DD><A HREF="#descr"><B>Label</B></A> <I>pathName</I> ?<I>option value...</I>?</DD>
+</DL>
+<DL>
+<DT><I>STANDARD OPTIONS</I></DT>
+<DT><I>Not themed</I></DT>
+<DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-anchor">-anchor</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-background">-background or -bg</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-bitmap">-bitmap</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-borderwidth">-borderwidth or -bd</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-cursor">-cursor</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-disabledforeground">-disabledforeground</A></TR>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-font">-font</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-foreground">-foreground or -fg</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-highlightbackground">-highlightbackground</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-highlightcolor">-highlightcolor</A></TR>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-highlightthickness">-highlightthickness</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-image">-image</A></TR>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-justify">-justify</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-padx">-padx</A></TR>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-pady">-pady</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-relief">-relief</A></TR>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-takefocus">-takefocus</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-text">-text</A></TR>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-textvariable">-textvariable</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-wraplength">-wraplength</A></TR>
+</TR>
+</TABLE></DD>
+<DT><I>Themed</I></DT>
+<DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-anchor">-anchor</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-background">-background or -bg</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-cursor">-cursor</A></TD></TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-font">-font</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-foreground">-foreground or -fg</A></TD>
+</TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-image">-image</A></TR>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-justify">-justify</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-relief">-relief</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-takefocus">-takefocus</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-text">-text</A></TR>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-textvariable">-textvariable</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-wraplength">-wraplength</A></TR>
+</TR>
+</TABLE></DD>
+</DL>
+<DL>
+<DT><I><A HREF="#wso">WIDGET-SPECIFIC OPTIONS</A></I></DT>
+<DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-dragenabled">-dragenabled</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="#-dragendcmd">-dragendcmd</A></TR>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-dragevent">-dragevent</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="#-draginitcmd">-draginitcmd</A></TR>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-dragtype">-dragtype</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="#-dropcmd">-dropcmd</A></TR>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-dropenabled">-dropenabled</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="#-dropovercmd">-dropovercmd</A></TR>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-droptypes">-droptypes</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="#-focus">-focus</A></TR>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-height">-height</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="#-helptext">-helptext</A></TR>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-helptype">-helptype</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="#-helpvar">-helpvar</A></TR>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-name">-name</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="#-state">-state</A></TR>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-underline">-underline</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="#-width">-width</A></TR>
+</TR>
+</TABLE></DD>
+</DL>
+<DL>
+<DT><I><A HREF="#wc">WIDGET COMMAND</A></I></DT>
+<DD><I>pathName</I> <A HREF="#cget"><B>cget</B></A>
+ <I>option</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#configure"><B>configure</B></A>
+ ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...?
+</DD>
+<DD><I>pathName</I> <A HREF="#setfocus"><B>setfocus</B></A>
+</DD>
+</DL>
+<BR><HR WIDTH="100%"><BR>
+<B><A NAME="descr"></A>DESCRIPTION</B><BR>
+<P>
+
+The <B>Label</B> widget extends the default Tk label. Options have been added to provide
+visual effect depending on the state of the Label, <A HREF="DynamicHelp.html">DynamicHelp</A> options, and <A HREF="DragSite.html">Drag
+</A> and <A HREF="DropSite.html">Drop</A>.
+</P>
+<BR><HR WIDTH="50%"><BR>
+<B><A NAME="wso">WIDGET-SPECIFIC OPTIONS</A></B><BR>
+<DL><DT><A NAME="-dragenabled"><B>-dragenabled</B></A></DT>
+<DD>
+A boolean specifying if drag is enabled.
+</DD>
+</DL>
+<DL><DT><A NAME="-dragendcmd"><B>-dragendcmd</B></A></DT>
+<DD>
+
+Specifies a command to be called when drag ended.
+<B>dragendcmd</B> must be a command conforming to the description of the
+option <B>dragendcmd</B> of <B>DragSite::<A HREF="DragSite.html#register">register</A></B>.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-dragevent"><B>-dragevent</B></A></DT>
+<DD>
+
+Specifies the number of the mouse button associated to the drag.
+Must be <B>1</B>, <B>2</B> or <B>3</B>.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-draginitcmd"><B>-draginitcmd</B></A></DT>
+<DD>
+
+Specifies a command to be called when <B>dragevent</B> occurs on widget.
+<B>draginitcmd</B> must be a command conforming to the description of the
+option <B>draginitcmd</B> of <B>DragSite::<A HREF="DragSite.html#register">register</A></B>.
+
+<BR>If <B>draginitcmd</B> is empty, the internal <B>draginitcmd</B> command is used instead
+and returns:
+<DL><DD><TABLE BORDER=0 CELLSPACING=1>
+<TR><TD valign=top><I>IMAGE&nbsp;{copy}&nbsp;&lt;image&nbsp;name&gt;</I>
+<TD>if an image is displayed.
+<TR><TD valign=top><I>BITMAP&nbsp;{copy}&nbsp;&lt;bitmap&nbsp;name&gt;</I>
+<TD>if a bitmap is displayed.
+<TR><TD valign=top><I>TEXT&nbsp;{copy}&nbsp;&lt;text&gt;</I>
+<TD>if a text is displayed.
+</TABLE></DL>
+Note that if <B>dragtype</B> option is not empty, its value is used instead of those above.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-dragtype"><B>-dragtype</B></A></DT>
+<DD>
+
+Specifies an alternate type of dragged object.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-dropcmd"><B>-dropcmd</B></A></DT>
+<DD>
+
+Specifies a command to be called when drop occurs on the widget.
+<B>dropcmd</B> must be a command conforming to the description of the
+option <B>dropcmd</B> of <B>DropSite::<A HREF="DropSite.html#register">register</A></B>.
+
+<BR>If <B>dropcmd</B> is empty, the command updates the label following the type of the data:
+<DL><DD><TABLE BORDER=0 CELLSPACING=1>
+<TR><TD><I>COLOR</I> or <I>FGCOLOR</I></TD>
+<TD>reconfigure the <B>foreground</B> of the Label.</TD>
+<TR><TD><I>BGCOLOR</I></TD>
+<TD>reconfigure the <B>background</B> of the Label.</TD>
+<TR><TD><I>IMAGE</I></TD>
+<TD>reconfigure the Label to display the associated image.</TD>
+<TR><TD><I>BITMAP</I></TD>
+<TD>reconfigure the Label to display the associated bitmap.
+<B>image</B> option is set to empty.</TD>
+<TR><TD><I>TEXT</I>,<BR>or any other tag</TD>
+<TD>reconfigure the Label to display the associated string.
+<B>image</B> and <B>bitmap</B> options are set to empty.</TD>
+</TABLE></DL>
+and returns 1.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-dropenabled"><B>-dropenabled</B></A></DT>
+<DD>
+A boolean specifying if drop is enabled.
+</DD>
+</DL>
+<DL><DT><A NAME="-dropovercmd"><B>-dropovercmd</B></A></DT>
+<DD>
+
+Specifies a command to be called when drag icon is over the widget.
+<B>dropovercmd</B> must be a command conforming to the description of the
+option <B>dropovercmd</B> of <B>DropSite::<A HREF="DropSite.html#register">register</A></B>.
+
+<BR>If <B>dropovercmd</B> is empty, Label always accepts the drop if data type is
+<I>FGCOLOR</I>, <I>COLOR</I>, <I>BGCOLOR</I>, and accepts all other data type only if
+<B>state</B> is normal.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-droptypes"><B>-droptypes</B></A></DT>
+<DD>
+
+Specifies a list of accepted dropped object/operation.
+See option <B>droptypes</B> of
+<B>DropSite::<A HREF="DropSite.html#register">register</A></B>.
+for more infromation.
+
+Default accepts <I>FGCOLOR</I>, <I>COLOR</I>, <I>BGCOLOR</I>, <I>TEXT</I>, <I>BITMAP</I>
+and <I>IMAGE</I>, all with <B>copy</B> and <B>move</B> operations.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-focus"><B>-focus</B></A></DT>
+<DD>
+
+Specifies a pathname to set the focus on for Label::<B>setfocus</B> command.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-height"><B>-height</B></A></DT>
+<DD>
+
+Specifies a desired height for the label.
+If an image or bitmap is being displayed in the label then the value is in
+screen units, for text it is in lines of text.
+If this option isn't specified, the label's desired height is computed
+from the size of the image or bitmap or text being displayed in it.<BR>
+Option not available for <I>themed</I> widgets.
+</DD>
+</DL>
+<DL><DT><A NAME="-helptext"><B>-helptext</B></A></DT>
+<DD>
+
+Text for dynamic help. If empty, no help is available for this widget.
+See also <A HREF="DynamicHelp.html">DynamicHelp</A>.
+</DD>
+</DL>
+<DL><DT><A NAME="-helptype"><B>-helptype</B></A></DT>
+<DD>
+Type of dynamic help. Use <I>balloon</I> or <I>variable</I>.
+See also <A HREF="DynamicHelp.html">DynamicHelp</A>.
+</DD>
+</DL>
+<DL><DT><A NAME="-helpvar"><B>-helpvar</B></A></DT>
+<DD>
+Variable to use when <B>helptype</B> option is <I>variable</I>.
+See also <A HREF="DynamicHelp.html">DynamicHelp</A>.
+</DD>
+</DL>
+<DL><DT><A NAME="-name"><B>-name</B></A></DT>
+<DD>
+
+Specifies a standard name for the label. If the option <B>*<I>name</I>Name</B> is
+found in the resource database, then <B>text</B> and <B>underline</B> options
+are extracted from its value.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-state"><B>-state</B></A></DT>
+<DD>
+
+Specifies one of two states for the Label:  <B>normal</B> or <B>disabled</B>.
+In normal state the text of the Label is displayed using the <B>foreground</B> option.
+In disabled state the text of the Label is displayed using the <B>disabledforeground</B> option.
+</DD>
+</DL>
+<DL><DT><A NAME="-underline"><B>-underline</B></A></DT>
+<DD>
+
+Specifies the integer index of a character to underline in the label.
+0 corresponds to the first character of the text displayed, 1 to the next character,
+and so on.
+<BR>The binding <B>&lt;Alt-<I>char</I>&gt;</B> is automatically set on the toplevel
+of the Label to call Label::<B>setfocus</B>.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-width"><B>-width</B></A></DT>
+<DD>
+
+Specifies a desired width for the label.
+If an image or bitmap is being displayed in the label then the value is in
+screen units, for text it is in characters.
+If this option isn't specified, the label's desired width is computed
+from the size of the image or bitmap or text being displayed in it.
+
+</DD>
+</DL>
+<HR WIDTH="50%"><BR>
+<B><A NAME="wc">WIDGET COMMAND</A></B><BR>
+<DL><DT><A NAME="cget"><I>pathName</I> <B>cget</B></A>
+ <I>option</I>
+</DT><DD>
+
+Returns the current value of the configuration option given by <I>option</I>.
+<I>Option</I> may have any of the values accepted by the creation command.
+</DD></DL>
+<DL><DT><A NAME="configure"><I>pathName</I> <B>configure</B></A>
+ ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...?
+</DT><DD>
+
+Query or modify the configuration options of the widget. If no <I>option</I> is specified,
+returns a list describing all of the available options for <I>pathName</I>.
+If <I>option</I> is specified with no <I>value</I>, then the command returns a list
+describing the one named <I>option</I> (this list will be identical to the corresponding
+sublist of the value returned if no <I>option</I> is specified). If one or
+more <I>option-value</I> pairs are specified, then the command modifies the given widget
+option(s) to have the given value(s); in this case the command returns an empty string.
+<I>Option</I> may have any of the values accepted by the creation command.
+Read-only options are not be modified.
+
+</DD></DL>
+<DL><DT><A NAME="setfocus"><I>pathName</I> <B>setfocus</B></A>
+</DT><DD>
+
+Set the focus on the pathname given by <B>-focus</B> option if <B>-state</B> is <I>normal</I>.
+
+</DD></DL>
+</BODY></HTML>
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/ListBox.html
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/ListBox.html	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/ListBox.html	(revision 3762)
@@ -0,0 +1,675 @@
+<HTML>
+<HEAD><TITLE>ListBox</TITLE></HEAD>
+<BODY BGCOLOR=white>
+<DL><DT><I><A HREF="#descr">NAME</A></I></DT>
+<DD><B>ListBox</B>
+ - ListBox widget
+</DD></DL>
+<DL>
+<DT><I>CREATION</I></DT>
+<DD><A HREF="#descr"><B>ListBox</B></A> <I>pathName</I> ?<I>option value...</I>?</DD>
+</DL>
+<DL>
+<DT><I>STANDARD OPTIONS</I></DT>
+<DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-background">-background or -bg</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-borderwidth">-borderwidth or -bd</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-cursor">-cursor</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-highlightbackground">-highlightbackground</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-highlightcolor">-highlightcolor</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-highlightthickness">-highlightthickness</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-relief">-relief</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-selectbackground">-selectbackground</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-selectforeground">-selectforeground</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-takefocus">-takefocus</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-xscrollcommand">-xscrollcommand</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-yscrollcommand">-yscrollcommand</A></TD>
+</TR>
+</TABLE></DD>
+</DL>
+<DL>
+<DT><I><A HREF="#wso">WIDGET-SPECIFIC OPTIONS</A></I></DT>
+<DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-autofocus">-autofocus</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="#-deltax">-deltax</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="#-deltay">-deltay</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-dragenabled">-dragenabled</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="#-dragendcmd">-dragendcmd</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-dragevent">-dragevent</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="#-draginitcmd">-draginitcmd</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-dragtype">-dragtype</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="#-dropcmd">-dropcmd</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-dropenabled">-dropenabled</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="#-dropovercmd">-dropovercmd</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-dropovermode">-dropovermode</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="#-droptypes">-droptypes</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-height">-height</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="#-multicolumn">-multicolumn</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-padx">-padx</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="#-redraw">-redraw</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-selectfill">-selectfill</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="#-selectmode">-selectmode</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="#-width">-width</A></TD>
+</TABLE></DD>
+</DL>
+<DL>
+<DT><I><A HREF="#wc">WIDGET COMMAND</A></I></DT>
+<DD><I>pathName</I> <A HREF="#bindImage"><B>bindImage</B></A>
+ <I>event</I>
+ <I>script</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#bindText"><B>bindText</B></A>
+ <I>event</I>
+ <I>script</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#cget"><B>cget</B></A>
+ <I>option</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#configure"><B>configure</B></A>
+ ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...?
+</DD>
+<DD><I>pathName</I> <A HREF="#delete"><B>delete</B></A>
+ ?<I>arg...</I>?
+</DD>
+<DD><I>pathName</I> <A HREF="#edit"><B>edit</B></A>
+ <I>item</I>
+ <I>text</I>
+ ?<I>verifycmd</I>?
+ ?<I>clickres</I>?
+ ?<I>select</I>?
+</DD>
+<DD><I>pathName</I> <A HREF="#exists"><B>exists</B></A>
+ <I>item</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#index"><B>index</B></A>
+ <I>item</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#insert"><B>insert</B></A>
+ <I>index</I>
+ <I>item</I>
+ ?<I>option value...</I>?
+</DD>
+<DD><I>pathName</I> <A HREF="#item"><B>item</B></A>
+ <I>first</I>
+ ?<I>last</I>?
+</DD>
+<DD><I>pathName</I> <A HREF="#itemcget"><B>itemcget</B></A>
+ <I>item</I>
+ <I>option</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#itemconfigure"><B>itemconfigure</B></A>
+ <I>item</I>
+ ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...?
+</DD>
+<DD><I>pathName</I> <A HREF="#items"><B>items</B></A>
+ ?<I>first</I>?
+ ?<I>last</I>?
+</DD>
+<DD><I>pathName</I> <A HREF="#move"><B>move</B></A>
+ <I>item</I>
+ <I>index</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#reorder"><B>reorder</B></A>
+ <I>neworder</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#see"><B>see</B></A>
+ <I>item</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#selection"><B>selection</B></A>
+ <I>cmd</I>
+ ?<I>arg...</I>?
+</DD>
+<DD><I>pathName</I> <A HREF="#xview"><B>xview</B></A>
+ ?<I>arg...</I>?
+</DD>
+<DD><I>pathName</I> <A HREF="#yview"><B>yview</B></A>
+ ?<I>arg...</I>?
+</DD>
+</DL>
+<BR><HR WIDTH="100%"><BR>
+<B><A NAME="descr"></A>DESCRIPTION</B><BR>
+<P>
+
+<B>ListBox</B> widget uses canvas to display a list of items.
+Each item is composed of a label with its own font and foreground attributes, and an optional
+image or window. Each item is drawn in a single line, whose height is defined by the
+<B>deltay</B> option, so they must have at most this height.
+A item is uniquely identified by a string given at creation (by the
+<B>insert</B> command). The ListBox can have one or more columns, depending on
+<B>multicolumn</B> option. The user do not handle columns; the number of columns
+is determined following the height of the ListBox in order to see each item vertically.
+
+</P>
+<BR><HR WIDTH="50%"><BR>
+<B><A NAME="wso">WIDGET-SPECIFIC OPTIONS</A></B><BR>
+<DL><DT><A NAME="-autofocus"><B>-autofocus (read-only)</B></A></DT>
+<DD>
+    If this option is true, the listbox will take focus any time the user
+    clicks in it.  Without focus, the listbox's mouse wheel bindings will
+    not work properly.  The default is true.
+</DD>
+</DL>
+
+<DL><DT><A NAME="-deltax"><B>-deltax</B></A></DT>
+<DD>
+
+Specifies horizontal pad between each columns.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-deltay"><B>-deltay</B></A></DT>
+<DD>
+
+Specifies vertical size of the items.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-dragenabled"><B>-dragenabled</B></A></DT>
+<DD>
+A boolean specifying if drag is enabled.
+</DD>
+</DL>
+<DL><DT><A NAME="-dragendcmd"><B>-dragendcmd</B></A></DT>
+<DD>
+
+Specifies a command to be called when drag ended.
+<B>dragendcmd</B> must be a command conforming to the description of the
+option <B>dragendcmd</B> of <B>DragSite::<A HREF="DragSite.html#register">register</A></B>.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-dragevent"><B>-dragevent</B></A></DT>
+<DD>
+
+Specifies the number of the mouse button associated to the drag.
+Must be <B>1</B>, <B>2</B> or <B>3</B>.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-draginitcmd"><B>-draginitcmd</B></A></DT>
+<DD>
+
+ListBox has a command wrapper for <I>drag-init</I> events. This command refused the drag
+if no item is designated. In other cases:
+<BR>If <B>draginitcmd</B> is empty, it returns:
+<UL>
+<LI>the value of option <B>dragtype</B> or <I>LISTBOX_ITEM</I> if empty as the data type, 
+<LI><I>{move copy link}</I> as the operations, 
+<LI>the item identifier as the data.
+</UL>
+If <B>draginitcmd</B> is not empty, it is called with the following arguments:
+<UL>
+<LI>the pathname of the listbox,
+<LI>the identifier of the dragged item,
+<LI>the toplevel created to represent dragged data.
+</UL>
+and must return a value conforming to <B>draginitcmd</B> option described in
+<B>DragSite::<A HREF="DragSite.html#register">register</A></B>.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-dragtype"><B>-dragtype</B></A></DT>
+<DD>
+
+Specifies an alternate type of dragged object.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-dropcmd"><B>-dropcmd</B></A></DT>
+<DD>
+
+ListBox has a command wrapper for <I>drop</I> events. This command stops auto scrolling
+and extract item and position.
+<BR>If <B>dropcmd</B> is not empty, it is called with the following arguments:
+<UL>
+<LI>the pathname of the listbox,
+<LI>the pathname of the drag source,
+<LI>a list describing where the drop occurs. It can be:
+<UL>
+<LI><I>{</I><B>widget</B><I>}</I>,
+<LI><I>{</I><B>item</B> <I>item}</I> or
+<LI><I>{</I><B>position</B> <I>index}</I>.
+</UL>
+<LI>the current operation,
+<LI>the data type,
+<LI>the data.
+</UL>
+
+<p>
+The default drop command allows for drag-and-drop within the listbox but
+not to or from other widgets.
+</p>
+
+</DD>
+</DL>
+<DL><DT><A NAME="-dropenabled"><B>-dropenabled</B></A></DT>
+<DD>
+A boolean specifying if drop is enabled.
+</DD>
+</DL>
+<DL><DT><A NAME="-dropovercmd"><B>-dropovercmd</B></A></DT>
+<DD>
+
+LsitBox has a command wrapper for <I>drag-over</I> events. This command enables auto scrolling
+and position extraction during the <I>drag-over</I>.
+If <B>dropovercmd</B> is not empty, the command is called with the following aguments:
+<UL>
+<LI>the pathname of the listbox,
+<LI>the pathname of the drag source,
+<LI>a list describing where the drop can occur, whose elements are:
+<UL>
+<LI>the string <I>widget</I> if <B>dropovertype</B> option contains <I>w</I>, else empty string.
+<LI>the targeted item if drag icon points an item and <B>dropovertype</B> option contains
+<I>i</I>, else empty string.
+<LI>an index within two items where drag icon points to if <B>dropovertype</B> option
+contains <I>p</I>, else empty string.
+<LI>optionally, the preferred method if drop can occur both inside an item and between two
+items. The value is <I>position</I> or <I>item</I>.
+</UL>
+<LI>the current operation,
+<LI>the data type,
+<LI>the data.
+</UL>
+The command must return a list with two elements:
+<UL>
+<LI>the drop status, conforming to those described in <B>dropovercmd</B> option of
+<B>DropSite::<A HREF="DropSite.html#register">register</A></B>,
+<LI>the choosen method: <I>widget</I>, <I>item</I> or <I>position</I>.
+</UL>
+
+</DD>
+</DL>
+<DL><DT><A NAME="-dropovermode"><B>-dropovermode</B></A></DT>
+<DD>
+
+Specifies the type of <I>drop-over</I> interaction. Must be a combination of
+<B>w</B>, which specifies that drop can occurs everywhere on widget,
+<B>p</B>, which specifies that drop can occurs between two items,
+and <B>i</B>, which specifies that drop occurs inside items.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-droptypes"><B>-droptypes</B></A></DT>
+<DD>
+
+Specifies a list of accepted dropped object/operation.
+See option <B>droptypes</B> of
+<B>DropSite::<A HREF="DropSite.html#register">register</A></B>.
+for more infromation.
+
+<BR>Default is <I>LISTBOX_ITEM</I> with operations <B>copy</B> and <B>move</B>.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-height"><B>-height</B></A></DT>
+<DD>
+
+Specifies the desired height for the listbox in units of <B>deltay</B> pixels.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-multicolumn"><B>-multicolumn</B></A></DT>
+<DD>
+
+Specifies wether or not ListBox layouts items in order to see each one vertically.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-padx"><B>-padx</B></A></DT>
+<DD>
+
+Specifies distance between image or window and text of the items.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-redraw"><B>-redraw</B></A></DT>
+<DD>
+
+Specifies wether or not the listbox should be redrawn when entering idle.
+Set it to false if you call <B>update</B> while modifying the listbox.
+
+</DD>
+</DL>
+
+<DL><DT><A NAME="-selectfill"><B>-selectfill (read-only)</B></A></DT>
+<DD>
+    If true, the listbox will draw a selection rectangle that fills the
+    listbox from left-to-right instead of just drawing a box around the
+    selected item.  This more closely mimics the standard Tk listbox.
+</DD>
+</DL>
+
+<DL><DT><A NAME="-selectmode"><B>-selectmode</B></A></DT>
+<DD>
+
+Specifies the desired selection-mode for the listbox. Must be one of
+<B>none</B>, <B>single</B> or <B>multiple</B>. <B>selectmode</B> <I>single</I>
+allows to select 1 item by its text or image. <B>selectmode</B> <I>multiple</I>
+allows to select multiple items by their text or image. For more info on
+selectmodes <I>single</I> or <I>multiple</I>, see the Tk <B>listbox</B>
+command. Default value for <B>selectmode</B> is <I>none</I>.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-width"><B>-width</B></A></DT>
+<DD>
+
+Specifies the desired width for the listbox in units of 8 pixels.
+
+</DD>
+</DL>
+<HR WIDTH="50%"><BR>
+<B><A NAME="wc">WIDGET COMMAND</A></B><BR>
+<DL><DT><A NAME="bindImage"><I>pathName</I> <B>bindImage</B></A>
+ <I>event</I>
+ <I>script</I>
+</DT><DD>
+
+This command associates a command to execute whenever the event
+sequence given by <I>event</I> occurs on the image of a item.
+The item idenfier on which the event occurs is appended to the command.
+
+<p>
+Any occurrence of <b>%W</b> in <i>script</i> is substituted with the
+path of the listbox.
+</p>
+
+</DD></DL>
+<DL><DT><A NAME="bindText"><I>pathName</I> <B>bindText</B></A>
+ <I>event</I>
+ <I>script</I>
+</DT><DD>
+
+This command associates a command to execute whenever the event
+sequence given by <I>event</I> occurs on the label of a item.
+The item idenfier on which the event occurs is appended to the command.
+
+<p>
+Any occurrence of <b>%W</b> in <i>script</i> is substituted with the
+path of the listbox.
+</p>
+
+</DD></DL>
+<DL><DT><A NAME="cget"><I>pathName</I> <B>cget</B></A>
+ <I>option</I>
+</DT><DD>
+
+Returns the current value of the configuration option given by <I>option</I>.
+<I>Option</I> may have any of the values accepted by the creation command.
+</DD></DL>
+<DL><DT><A NAME="configure"><I>pathName</I> <B>configure</B></A>
+ ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...?
+</DT><DD>
+
+Query or modify the configuration options of the widget. If no <I>option</I> is specified,
+returns a list describing all of the available options for <I>pathName</I>.
+If <I>option</I> is specified with no <I>value</I>, then the command returns a list
+describing the one named <I>option</I> (this list will be identical to the corresponding
+sublist of the value returned if no <I>option</I> is specified). If one or
+more <I>option-value</I> pairs are specified, then the command modifies the given widget
+option(s) to have the given value(s); in this case the command returns an empty string.
+<I>Option</I> may have any of the values accepted by the creation command.
+Read-only options are not be modified.
+
+</DD></DL>
+<DL><DT><A NAME="delete"><I>pathName</I> <B>delete</B></A>
+ ?<I>arg...</I>?
+</DT><DD>
+
+Deletes all items in <I>arg</I>. <I>arg</I> can be a list
+of items or a list of list of items.
+To delete all items, do <I>$pathName delete [$pathName items]</I>.
+
+</DD></DL>
+<DL><DT><A NAME="edit"><I>pathName</I> <B>edit</B></A>
+ <I>item</I>
+ <I>text</I>
+ ?<I>verifycmd</I>?
+ ?<I>clickres</I>?
+ ?<I>select</I>?
+</DT><DD>
+
+Provides a way for the user to edit in place the label of an item.
+<BR>The command takes the initial text as argument and does not modify the label of the
+edited node, but returns an empty string if edition is canceled, or the typed text
+if edition is accepted.
+<BR>When editing, the user can cancel by pressing Escape, or accept by pressing Return.
+<BR><I>clickres</I> specifies what to do if the user click outside the editable area.
+If <I>clickres</I> is 0 (the default), the edition is canceled.
+If <I>clickres</I> is 1, the edition is accepted.
+In all other case, the edition continues.
+<BR>If edition is accepted and <I>modifycmd</I> is not empty, then it is called with
+the new text as argument and must return 1 to accept the new text, 0 to refuse it
+and continue edition.
+<BR><I>select</I> specifies wether or not the initial text should be selected. Default is 1.
+
+</DD></DL>
+<DL><DT><A NAME="exists"><I>pathName</I> <B>exists</B></A>
+ <I>item</I>
+</DT><DD>
+
+Returns 1 if <I>item</I> exists in the listbox, else 0.
+
+</DD></DL>
+<DL><DT><A NAME="index"><I>pathName</I> <B>index</B></A>
+ <I>item</I>
+</DT><DD>
+
+Returns the position of <I>item</I> in the list.
+
+</DD></DL>
+<DL><DT><A NAME="insert"><I>pathName</I> <B>insert</B></A>
+ <I>index</I>
+ <I>item</I>
+ ?<I>option value...</I>?
+</DT><DD>
+
+<p>
+Inserts a new item identified by <I>item</I> in the list at position <I>index</I>.
+</p>
+
+<p>
+Any instance of <i>#auto</i> within the item name will be replaced by the
+number of the item in the order of insertion.
+</p>
+
+<P>
+<DL><DT><A NAME="Item-data"><B>-data</B></A></DT>
+<DD>
+
+User data associated to the item.
+
+</DD>
+</DL>
+<DL><DT><A NAME="Item-fill"><B>-fill</B></A></DT>
+<DD>
+
+Specifies the foreground color of the label of the item.
+
+</DD>
+</DL>
+<DL><DT><A NAME="Item-font"><B>-font</B></A></DT>
+<DD>
+
+Specifies a font for the label of the item.
+
+</DD>
+</DL>
+<DL><DT><A NAME="Item-image"><B>-image</B></A></DT>
+<DD>
+
+Specifies an image to display at the left of the label of the item.
+<B>window</B> option override <B>image</B>.
+</DD>
+</DL>
+<DL><DT><A NAME="Item-indent"><B>-indent</B></A></DT>
+<DD>
+
+Specifies the amount of extra space in pixels at the left of the item.
+
+</DD>
+</DL>
+<DL><DT><A NAME="Item-text"><B>-text</B></A></DT>
+<DD>
+
+Specifies the label of the item.
+
+</DD>
+</DL>
+<DL><DT><A NAME="Item-window"><B>-window</B></A></DT>
+<DD>
+
+Specifies a pathname to display at the left of the label of the item.
+<B>window</B> option override <B>image</B>.
+</DD>
+</DL>
+</DD></DL>
+<DL><DT><A NAME="item"><I>pathName</I> <B>item</B></A>
+ <I>first</I>
+ ?<I>last</I>?
+</DT><DD>
+
+<B>Its use is deprecated. Use <I>items</I> instead.</B><BR>
+If <I>last</I> is omitted, returns the item at index <I>first</I> in the list, 
+or an empty string if <I>first</I> refers to a non-existent element.
+If <I>last</I> is specified, the command returns a list whose elements are all
+of the items between <I>first</I> and <I>last</I>, inclusive. 
+Both <I>first</I> and <I>last</I> may have any of the standard forms for indices.
+
+</DD></DL>
+<DL><DT><A NAME="itemcget"><I>pathName</I> <B>itemcget</B></A>
+ <I>item</I>
+ <I>option</I>
+</DT><DD>
+
+Returns the current value of a configuration option for the item.
+<I>Option</I> may have any of the values accepted by the item creation command.
+
+</DD></DL>
+<DL><DT><A NAME="itemconfigure"><I>pathName</I> <B>itemconfigure</B></A>
+ <I>item</I>
+ ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...?
+</DT><DD>
+
+This command is similar to the <B>configure</B> command, except that it applies to the
+options for an individual item, whereas <B>configure</B> applies to the options for
+the widget as a whole. <B>Options</B> may have any of the values accepted by the 
+item creation widget command. If options are specified, options are modified as indicated
+in the command and the command returns an empty string. If no options are specified,
+returns a list describing the current options for the item.
+Read-only options are not be modified.
+
+</DD></DL>
+<DL><DT><A NAME="items"><I>pathName</I> <B>items</B></A>
+ ?<I>first</I>?
+ ?<I>last</I>?
+</DT><DD>
+
+If <I>first</I> and <I>last</I> are omitted, returns the list of all items.
+If <I>first</I> is specified and <I>last</I> omitted, returns the item at index
+<I>first</I>, or an empty string if <I>first</I> refers to a non-existent element.
+If <I>first</I> and <I>last</I> are specified, the command returns a list whose elements
+are all of the items between <I>first</I> and <I>last</I>,
+inclusive. Both <I>first</I> and <I>last</I> may have any of the standard
+forms for indices.
+
+</DD></DL>
+<DL><DT><A NAME="move"><I>pathName</I> <B>move</B></A>
+ <I>item</I>
+ <I>index</I>
+</DT><DD>
+
+Moves <I>item</I> at position <I>index</I> in the list.
+
+</DD></DL>
+<DL><DT><A NAME="reorder"><I>pathName</I> <B>reorder</B></A>
+ <I>neworder</I>
+</DT><DD>
+
+Modifies the order of items in the listbox given by <I>neworder</I>. Items that do not
+appear in <I>neworder</I> are no moved.
+
+</DD></DL>
+<DL><DT><A NAME="see"><I>pathName</I> <B>see</B></A>
+ <I>item</I>
+</DT><DD>
+
+Arrange the scrolling area to make <I>item</I> visible.
+
+</DD></DL>
+<DL><DT><A NAME="selection"><I>pathName</I> <B>selection</B></A>
+ <I>cmd</I>
+ ?<I>arg...</I>?
+</DT><DD>
+
+Modifies the list of selected items following <I>cmd</I>:
+<DL>
+<DT><B>clear</B>
+<DD>remove all items of the selection.
+<DT><B>set</B>
+<DD>set the selection to all items in <I>arg</I>
+<DT><B>add</B>
+<DD>add all items of <I>arg</I> in the selection
+<DT><B>remove</B>
+<DD>remove all items of <I>arg</I> of the selection
+<DT><B>get</B>
+<DD>return the current selected items
+</DL>
+
+</DD></DL>
+<DL><DT><A NAME="xview"><I>pathName</I> <B>xview</B></A>
+ ?<I>arg...</I>?
+</DT><DD>
+
+Standard command to enable horizontal scrolling of <I>pathName</I>.
+
+</DD></DL>
+<DL><DT><A NAME="yview"><I>pathName</I> <B>yview</B></A>
+ ?<I>arg...</I>?
+</DT><DD>
+
+Standard command to enable vertical scrolling of <I>pathName</I>.
+
+</DD></DL>
+
+
+<b>BINDINGS</b>
+
+<p>
+A <b>&lt;&lt;ListboxSelect&gt;&gt;</b> virtual event is generated any time the
+selection in the listbox changes.
+</p>
+
+<p>
+The listbox has all the standard mouse wheel bindings when it has focus.
+</p>
+</p>
+</BODY></HTML>
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/BWidget.html
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/BWidget.html	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/BWidget.html	(revision 3762)
@@ -0,0 +1,228 @@
+<HTML>
+<HEAD><TITLE>BWidget</TITLE></HEAD>
+<BODY BGCOLOR=white>
+<IMG SRC="constr.gif" WIDTH="40" HEIGHT="40"> Under construction ...<BR>
+<DL><DT><I><A HREF="#descr">NAME</A></I></DT>
+<DD><B>BWidget</B>
+ - Description text
+</DD></DL>
+<DL>
+<DT><I><A HREF="#wc">COMMAND</A></I></DT>
+<DD>BWidget::<A HREF="#XLFDfont"><B>XLFDfont</B></A>
+ <I>cmd</I>
+ ?<I>arg...</I>?
+</DD>
+<DD>BWidget::<A HREF="#assert"><B>assert</B></A>
+ <I>exp</I>
+ ?<I>msg</I>?
+</DD>
+<DD>BWidget::<A HREF="#badOptionString"><B>badOptionString</B></A>
+ <I>type</I>
+ <I>value</I>
+ <I>list</I>
+</DD>
+<DD>BWidget::<A HREF="#bindMouseWheel"><B>bindMouseWheel</B></A>
+ <I>widget</I>
+</DD>
+<DD>BWidget::<A HREF="#classes"><B>classes</B></A>
+ <I>class</I>
+</DD>
+<DD>BWidget::<A HREF="#clonename"><B>clonename</B></A>
+ <I>menu</I>
+</DD>
+<DD>BWidget::<A HREF="#focus"><B>focus</B></A>
+ <I>option</I>
+ <I>path</I>
+</DD>
+<DD>BWidget::<A HREF="#get3dcolor"><B>get3dcolor</B></A>
+ <I>path</I>
+ <I>bgcolor</I>
+</DD>
+<DD>BWidget::<A HREF="#getname"><B>getname</B></A>
+ <I>name</I>
+</DD>
+<DD>BWidget::<A HREF="#grab"><B>grab</B></A>
+ <I>option</I>
+ <I>path</I>
+</DD>
+<DD>BWidget::<A HREF="#inuse"><B>inuse</B></A>
+ <I>class</I>
+</DD>
+<DD>BWidget::<A HREF="#library"><B>library</B></A>
+ <I>class</I> ?<i>class ...</i>?
+</DD>
+<DD>BWidget::<A HREF="#lreorder"><B>lreorder</B></A>
+ <I>list</I>
+ <I>neworder</I>
+</DD>
+<DD>BWidget::<A HREF="#parsetext"><B>parsetext</B></A>
+ <I>text</I>
+</DD>
+<DD>BWidget::<A HREF="#place"><B>place</B></A>
+ <I>path</I>
+ <I>w</I>
+ <I>h</I>
+ ?<I>arg...</I>?
+</DD>
+<DD>BWidget::<A HREF="#write"><B>write</B></A>
+ <I>filename</I> ?<i>mode</i>?
+</DD>
+<DD>BWidget::<A HREF="#wrongNumArgsString"><B>wrongNumArgsString</B></A>
+ <I>string</I>
+</DD>
+</DL>
+<BR><HR WIDTH="100%"><BR>
+<B><A NAME="descr"></A>DESCRIPTION</B><BR>
+<P>
+Description text
+</P>
+<HR WIDTH="50%"><BR>
+<B><A NAME="wc">COMMAND</A></B><BR>
+<DL><DT><A NAME="XLFDfont">BWidget::<B>XLFDfont</B></A>
+ <I>cmd</I>
+ ?<I>arg...</I>?
+</DT><DD>
+Description text
+</DD></DL>
+<DL><DT><A NAME="assert">BWidget::<B>assert</B></A>
+ <I>exp</I>
+ ?<I>msg</I>?
+</DT><DD>
+Description text
+</DD></DL>
+<DL><DT><A NAME="badOptionString">BWidget::<B>badOptionString</B></A>
+ <I>type</I>
+ <I>value</I>
+ <I>list</I>
+</DT><DD>
+Return a proper error string for a <i>value</i> of <i>type</i> that doesn't
+match <i>list</i>.
+</DD></DL>
+
+<DL><DT><A NAME="bindMouseWheel">BWidget::<B>bindMouseWheel</B></A>
+ <I>widget</I>
+</DT><DD>
+    Bind the given <i>widget</i> with the standard mouse wheel bindings.
+</DD></DL>
+
+<DL><DT><A NAME="classes">BWidget::<B>classes</B></A>
+ <I>class</I>
+</DT><DD>
+    Returns a list of classes needed by the given <i>class</i>.
+</DD></DL>
+
+<DL><DT><A NAME="clonename">BWidget::<B>clonename</B></A>
+ <I>menu</I>
+</DT><DD>
+Description text
+</DD></DL>
+<DL><DT><A NAME="focus">BWidget::<B>focus</B></A>
+ <I>option</I>
+ <I>path</I>
+</DT><DD>
+Description text
+</DD></DL>
+<DL><DT><A NAME="get3dcolor">BWidget::<B>get3dcolor</B></A>
+ <I>path</I>
+ <I>bgcolor</I>
+</DT><DD>
+Description text
+</DD></DL>
+<DL><DT><A NAME="getname">BWidget::<B>getname</B></A>
+ <I>name</I>
+</DT><DD>
+Description text
+</DD></DL>
+<DL><DT><A NAME="grab">BWidget::<B>grab</B></A>
+ <I>option</I>
+ <I>path</I>
+</DT><DD>
+Description text
+</DD></DL>
+
+<DL><DT><A NAME="inuse">BWidget::<B>inuse</B></A>
+ <I>class</I>
+</DT><DD>
+    Returns true or false if the given <i>class</i> is being used by the
+    current running program.
+</DD></DL>
+
+<DL><DT><A NAME="library">BWidget::<B>library</B></A>
+ <I>class</I>
+ ?<i>class ...</i>?
+</DT><DD>
+    Returns a string of code that contains all the libraries needed to
+    use the widgets given by <i>class</i>.  Each class's code and the
+    code of its dependent classes is appended to the string and returned.
+    This is mostly useful for saving BWidgets to another project.
+</DD></DL>
+
+<DL><DT><A NAME="lreorder">BWidget::<B>lreorder</B></A>
+ <I>list</I>
+ <I>neworder</I>
+</DT><DD>
+Description text
+</DD></DL>
+<DL><DT><A NAME="parsetext">BWidget::<B>parsetext</B></A>
+ <I>text</I>
+</DT><DD>
+Description text
+</DD></DL>
+<DL><DT><A NAME="place">BWidget::<B>place</B></A>
+ <I>path</I>
+ <I>w</I>
+ <I>h</I>
+ ?<I>arg...</I>?
+</DT><DD>
+Used to position and resize the widget specified by
+<I>path</I>. <I>w</I> and <I>h</I> are used to specify the requested
+width and height of the <I>path</I> widget for use by <B>wm
+geometry</B> (set to 0 to use current values). The placement of the widget relative to other widgets or
+the screen is controlled by additional arguments:
+<DL>
+ <DT><B>at</B> <I>x</I> <I>y</I></DT>
+ <DD>Place the widget specified by the <I>path</I> argument at screen
+ position x,y. See <B>wm geometry</B> for information about window
+ placement values.</DD>
+
+ <DT><B>center</B> <I>?widget?</I></DT>
+ <DD>Place the <I>path</I> widget centered against <I>widget</I> or against the
+ root widget if <I>widget</I> is not given.</DD>
+
+ <DT><B>left</B> <I>?widget?</I></DT>
+ <DT><B>right</B> <I>?widget?</I></DT>
+ <DD>Place the <I>path</I> widget either left or right of the
+ reference widget (or the root widget if <I>widget</I> is not
+ specified). If the reference widget's position is such that the newly
+ placed window might be obscured then the opposite side will be tried.</DD>
+
+ <DT><B>above</B> <I>?widget?</I></DT>
+ <DT><B>below</B> <I>?widget?</I></DT>
+ <DD>As for left/right above, this option causes the widget to be
+ placed either above or below the reference widget with the opposite
+ placement being attempted if the newly placed widget will not be visible.
+</DL>
+</DL>
+
+<DL><DT><A NAME="write">BWidget::<B>write</B></A>
+ <I>filename</I>
+ ?<i>mode</i>?
+</DT><DD>
+    Writes the currently used set of BWidget class code to the given
+    <i>filename</i>.  All the code necessary to run the BWidgets
+    currently in use is written to the file.  This is mostly useful
+    for saving BWidget code to another project as a single file instead
+    of the entire BWidget package.
+</DD></DL>
+
+<DL>
+<DT><A NAME="wrongNumArgsString">BWidget::<B>wrongNumArgsString</B></A>
+ <I>string</I>
+</DT>
+<DD>
+    Returns a standard error string for the wrong number of arguments.
+    <i>string</i> is appended to the standard string.
+</DD>
+</DL>
+
+</BODY></HTML>
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/ArrowButton.html
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/ArrowButton.html	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/ArrowButton.html	(revision 3762)
@@ -0,0 +1,276 @@
+<HTML>
+<HEAD><TITLE>ArrowButton</TITLE></HEAD>
+<BODY BGCOLOR=white>
+<DL><DT><I><A HREF="#descr">NAME</A></I></DT>
+<DD><B>ArrowButton</B>
+ - Button widget with an arrow shape.
+</DD></DL>
+<DL>
+<DT><I>CREATION</I></DT>
+<DD><A HREF="#descr"><B>ArrowButton</B></A> <I>pathName</I> ?<I>option value...</I>?</DD>
+</DL>
+<DL>
+<DT><I>STANDARD OPTIONS</I></DT>
+<DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-activebackground">-activebackground</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-activeforeground">-activeforeground</A></TR>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-background">-background or -bg</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-borderwidth">-borderwidth or -bd</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-disabledforeground">-disabledforeground</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-foreground">-foreground or -fg</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-highlightbackground">-highlightbackground</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-highlightcolor">-highlightcolor</A></TR>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-highlightthickness">-highlightthickness</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-relief">-relief</A></TR>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-repeatdelay">-repeatdelay</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-repeatinterval">-repeatinterval</A></TR>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-takefocus">-takefocus</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-troughcolor">-troughcolor</A></TR>
+</TR>
+</TABLE></DD>
+</DL>
+<DL>
+<DT><I><A HREF="#wso">WIDGET-SPECIFIC OPTIONS</A></I></DT>
+<DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-armcommand">-armcommand</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="#-arrowbd">-arrowbd</A></TR>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-arrowrelief">-arrowrelief</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="#-clean">-clean</A></TR>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-command">-command</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="#-dir">-dir</A></TR>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-disarmcommand">-disarmcommand</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="#-height">-height</A></TR>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-helptext">-helptext</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="#-helptype">-helptype</A></TR>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-helpvar">-helpvar</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="#-ipadx">-ipadx</A></TR>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-ipady">-ipady</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="#-state">-state</A></TR>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-type">-type</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="#-width">-width</A></TR>
+</TR>
+</TABLE></DD>
+</DL>
+<DL>
+<DT><I><A HREF="#wc">WIDGET COMMAND</A></I></DT>
+<DD><I>pathName</I> <A HREF="#cget"><B>cget</B></A>
+ <I>option</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#configure"><B>configure</B></A>
+ ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...?
+</DD>
+<DD><I>pathName</I> <A HREF="#invoke"><B>invoke</B></A>
+</DD>
+</DL>
+<BR><HR WIDTH="100%"><BR>
+<B><A NAME="descr"></A>DESCRIPTION</B><BR>
+<P>
+
+ArrowButton can be of two types following <B>type</B> option:
+for <B>button</B> type, it is standard button with an arrow drawn on it;
+for <B>arrow</B> type, it is an arrow like scrollbar's arrow.
+</P>
+<BR><HR WIDTH="50%"><BR>
+<B><A NAME="wso">WIDGET-SPECIFIC OPTIONS</A></B><BR>
+<DL><DT><A NAME="-armcommand"><B>-armcommand</B></A></DT>
+<DD>
+
+Specifies a Tcl command to associate with the ArrowButton when mouse button 1 is pressed
+over the ArrowButton. When <B>repeatdelay</B> or <B>repeatinterval</B> option is positive
+integer, this command is repeatedly called if mouse pointer is over the button and until
+mouse button 1 is released.
+</DD>
+</DL>
+<DL><DT><A NAME="-arrowbd"><B>-arrowbd</B></A></DT>
+<DD>
+
+When ArrowButton <B>type</B> is <I>arrow</I>, specifies the border width of the
+arrow. Must be 1 or 2.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-arrowrelief"><B>-arrowrelief</B></A></DT>
+<DD>
+
+When ArrowButton <B>type</B> is <I>arrow</I>, specifies the relief of the arrow.
+Must be <B>raised</B> or <B>sunken</B>.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-clean"><B>-clean</B></A></DT>
+<DD>
+
+Specifies a level of quality, between 0 and 2, for the arrow.
+If 0, the arrow is drawn with its maximum width and height.
+If 1, the base of arrow is arranged to be odd to have same edges.
+If 2, the base of arrow is arranged to be odd and the orthogonal to be (base+1)/2 to
+have 'straight' diagonal for edges.
+</DD>
+</DL>
+<DL><DT><A NAME="-command"><B>-command</B></A></DT>
+<DD>
+
+Specifies a Tcl command to associate with the ArrowButton.  This command
+is typically invoked when mouse button 1 is released over the ArrowButton
+window.
+</DD>
+</DL>
+<DL><DT><A NAME="-dir"><B>-dir</B></A></DT>
+<DD>
+
+Specifies the direction of the arrow: <B>top</B>, <B>bottom</B>, <B>left</B>
+or <B>right</B>.
+</DD>
+</DL>
+<DL><DT><A NAME="-disarmcommand"><B>-disarmcommand</B></A></DT>
+<DD>
+
+Specifies a Tcl command to associate with the ArrowButton when mouse button 1 is released.
+This command is called even if pointer is not over the ArrowButton, and always before
+the command specified by <B>command</B> option.
+It is typically used in conjuntion with <B>armcommand</B>, <B>repeatdelay</B> and
+<B>repeatinterval</B>.
+</DD>
+</DL>
+<DL><DT><A NAME="-height"><B>-height</B></A></DT>
+<DD>
+
+Specifies a desired height for the ArrowButton. The value is in screen units.
+</DD>
+</DL>
+<DL><DT><A NAME="-helptext"><B>-helptext</B></A></DT>
+<DD>
+
+Text for dynamic help. If empty, no help is available for this widget.
+See also <A HREF="DynamicHelp.html">DynamicHelp</A>.
+</DD>
+</DL>
+<DL><DT><A NAME="-helptype"><B>-helptype</B></A></DT>
+<DD>
+Type of dynamic help. Use <I>balloon</I> or <I>variable</I>.
+See also <A HREF="DynamicHelp.html">DynamicHelp</A>.
+</DD>
+</DL>
+<DL><DT><A NAME="-helpvar"><B>-helpvar</B></A></DT>
+<DD>
+Variable to use when <B>helptype</B> option is <I>variable</I>.
+See also <A HREF="DynamicHelp.html">DynamicHelp</A>.
+</DD>
+</DL>
+<DL><DT><A NAME="-ipadx"><B>-ipadx</B></A></DT>
+<DD>
+
+Specifies a minimun pad between the ArrowButton border and the right and left side
+of the arrow. The value is in screen units.
+</DD>
+</DL>
+<DL><DT><A NAME="-ipady"><B>-ipady</B></A></DT>
+<DD>
+
+Specifies a minimun pad between the ArrowButton border and the top and bottom side
+of the arrow. The value is in screen units.
+</DD>
+</DL>
+<DL><DT><A NAME="-state"><B>-state</B></A></DT>
+<DD>
+
+Specifies one of three states for the ArrowButton: <B>normal</B>, <B>active</B>,
+or <B>disabled</B>.
+<DL><DT>If ArrowButton <B>type</B> is <I>button</I>:</DT>
+<DD>In normal state the ArrowButton is displayed using the
+<B>foreground</B> and <B>background</B> options. The active state is
+typically used when the pointer is over the ArrowButton. In active state
+the ArrowButton is displayed using the <B>activeforeground</B> and
+<B>activebackground</B> options. In disabled state the <B>disabledforeground</B> and
+<B>background</B> options determine how the ArrowButton is displayed.
+</DD>
+<DT>If ArrowButton <B>type</B> is <I>arrow</I>:</DT>
+<DD>Only colors of arrow change. The background of ArrowButton is always
+displayed using <B>troughcolor</B> option.
+In normal state the ArrowButton is displayed using the <B>background</B> option. The active
+state is typically used when the pointer is over the ArrowButton. In active state
+the ArrowButton is displayed using the <B>activebackground</B> option. In disabled state
+the ArrowButton is displayed with a dark stipple.
+</DD>
+</DL>
+Disabled state means that the ArrowButton
+should be insensitive: the default bindings will refuse to activate
+the widget and will ignore mouse button presses.
+</DD>
+</DL>
+<DL><DT><A NAME="-type"><B>-type</B></A></DT>
+<DD>
+
+Determines the type of the ArrowButton: <B>button</B> for standard button look, or
+<B>arrow</B> scrollbar's arrow look.
+</DD>
+</DL>
+<DL><DT><A NAME="-width"><B>-width</B></A></DT>
+<DD>
+
+Specifies a desired width for the ArrowButton. The value is in screen units.
+</DD>
+</DL>
+<HR WIDTH="50%"><BR>
+<B><A NAME="wc">WIDGET COMMAND</A></B><BR>
+<DL><DT><A NAME="cget"><I>pathName</I> <B>cget</B></A>
+ <I>option</I>
+</DT><DD>
+
+Returns the current value of the configuration option given by <I>option</I>.
+<I>Option</I> may have any of the values accepted by the creation command.
+</DD></DL>
+<DL><DT><A NAME="configure"><I>pathName</I> <B>configure</B></A>
+ ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...?
+</DT><DD>
+
+Query or modify the configuration options of the widget. If no <I>option</I> is specified,
+returns a list describing all of the available options for <I>pathName</I>.
+If <I>option</I> is specified with no <I>value</I>, then the command returns a list
+describing the one named <I>option</I> (this list will be identical to the corresponding
+sublist of the value returned if no <I>option</I> is specified). If one or
+more <I>option-value</I> pairs are specified, then the command modifies the given widget
+option(s) to have the given value(s); in this case the command returns an empty string.
+<I>Option</I> may have any of the values accepted by the creation command.
+Read-only options are not be modified.
+
+</DD></DL>
+<DL><DT><A NAME="invoke"><I>pathName</I> <B>invoke</B></A>
+</DT><DD>
+
+If ArrowButton <B>state</B> is not disabled, this invoke the commands of the button.
+ArrowButton is redisplayed with active color and sunken relief, and
+<B>armcommand</B> is called. Then ArrowButton is redisplayed with
+normal color and its defined relief, and <B>disarmcommand</B> then <B>command</B>
+are called.
+<P><B>invoke</B> is called when ArrowButton has input focus and user press the space bar.
+</DD></DL>
+</BODY></HTML>
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/PasswdDlg.html
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/PasswdDlg.html	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/PasswdDlg.html	(revision 3762)
@@ -0,0 +1,214 @@
+<HTML>
+<HEAD><TITLE>PasswdDlg</TITLE></HEAD>
+<BODY BGCOLOR=white>
+<DL><DT><I><A HREF="#descr">NAME</A></I></DT>
+<DD><B>PasswdDlg</B>
+ - Login/Password dialog box
+</DD></DL>
+<DL>
+<DT><I>CREATION</I></DT>
+<DD><A HREF="#descr"><B>PasswdDlg</B></A> <I>pathName</I> ?<I>option value...</I>?</DD>
+</DL>
+<DL>
+<DT><I><A HREF="Dialog.html">OPTIONS from <B>Dialog</B></A></I></DT>
+<DD><TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+<TR>
+<TD>&nbsp;&nbsp;-anchor</TD>
+<TD>&nbsp;&nbsp;-background or -bg</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-homogeneous</TD>
+<TD>&nbsp;&nbsp;-modal</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-padx</TD>
+<TD>&nbsp;&nbsp;-pady</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-parent</TD>
+<TD>&nbsp;&nbsp;-spacing</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-title</TD>
+</TABLE></DD>
+</DL>
+<DL>
+<DT><I><A HREF="LabelEntry.html">OPTIONS from <B>LabelEntry</B></A></I></DT>
+<DD><TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+<TR>
+<TD>&nbsp;&nbsp;-background or -bg</TD>
+<TD>&nbsp;&nbsp;-borderwidth or -bd</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-disabledforeground</TD>
+<TD>&nbsp;&nbsp;-entrybg</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-entryfg</TD>
+<TD>&nbsp;&nbsp;-exportselection</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-font</TD>
+<TD>&nbsp;&nbsp;-foreground or -fg</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-helptype</TD>
+<TD>&nbsp;&nbsp;-highlightbackground</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-highlightcolor</TD>
+<TD>&nbsp;&nbsp;-highlightthickness</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-insertbackground</TD>
+<TD>&nbsp;&nbsp;-insertborderwidth</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-insertofftime</TD>
+<TD>&nbsp;&nbsp;-insertontime</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-insertwidth</TD>
+<TD>&nbsp;&nbsp;-labelanchor</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-labelfont</TD>
+<TD>&nbsp;&nbsp;-labelheight</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-labeljustify</TD>
+<TD>&nbsp;&nbsp;-labelwidth</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-loginhelptext (see <B>-helptext</B>)</TD>
+<TD>&nbsp;&nbsp;-loginhelpvar (see <B>-helpvar</B>)</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-loginlabel (see <B>-label</B>)</TD>
+<TD>&nbsp;&nbsp;-logintext (see <B>-text</B>)</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-logintextvariable (see <B>-textvariable</B>)</TD>
+<TD>&nbsp;&nbsp;-loginunderline (see <B>-underline</B>)</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-passwdeditable (see <B>-editable</B>)</TD>
+<TD>&nbsp;&nbsp;-passwdhelptext (see <B>-helptext</B>)</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-passwdhelpvar (see <B>-helpvar</B>)</TD>
+<TD>&nbsp;&nbsp;-passwdlabel (see <B>-label</B>)</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-passwdstate (see <B>-state</B>)</TD>
+<TD>&nbsp;&nbsp;-passwdtext (see <B>-text</B>)</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-passwdtextvariable (see <B>-textvariable</B>)</TD>
+<TD>&nbsp;&nbsp;-passwdunderline (see <B>-underline</B>)</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-relief</TD>
+<TD>&nbsp;&nbsp;-selectbackground</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-selectborderwidth</TD>
+<TD>&nbsp;&nbsp;-selectforeground</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-wraplength</TD>
+</TABLE></DD>
+</DL>
+<DL>
+<DT><I><A HREF="#wso">WIDGET-SPECIFIC OPTIONS</A></I></DT>
+<DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-command">-command</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="#-type">-type</A></TR>
+</TR>
+</TABLE></DD>
+</DL>
+<DL>
+<DT><I><A HREF="#wc">WIDGET COMMAND</A></I></DT>
+<DD><I>pathName</I> <A HREF="#cget"><B>cget</B></A>
+ <I>option</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#configure"><B>configure</B></A>
+ ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...?
+</DD>
+</DL>
+<BR><HR WIDTH="100%"><BR>
+<B><A NAME="descr"></A>DESCRIPTION</B><BR>
+<P>
+
+PasswdDlg provides a simple way to display a login/password dialog.
+PasswdDlg::<B>create</B> creates the dialog, displays it, and return the value of login
+and password in a list, or an empty list if it is destroyed or user press cancel.
+When returning, the dialog no longer exists.
+<BR>Additionnal resources can be set to modify other text:
+<PRE>
+    *loginName     Label for login LabelEntry
+    *passwordName  Label for password LabelEntry
+</PRE>
+
+</P>
+<BR><HR WIDTH="50%"><BR>
+<B><A NAME="wso">WIDGET-SPECIFIC OPTIONS</A></B><BR>
+<DL><DT><A NAME="-command"><B>-command</B></A></DT>
+<DD>
+
+Specifies a command to call when user press ok button.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-type"><B>-type</B></A></DT>
+<DD>
+
+Specifies a set of buttons to be displayed. The following values are possible:
+<DD>
+<P>
+<DL COMPACT>
+<DT>
+<B>ok</B>
+<DD>
+Displays one button whose symbolic name is <B>ok</B>.<P>
+<DT>
+<B>okcancel</B>
+<DD>
+Displays two buttons whose symbolic names are <B>ok</B> and <B>cancel</B>.<P>
+</DL COMPACT>
+
+</DD>
+</DL>
+
+</DD>
+</DL>
+<HR WIDTH="50%"><BR>
+<B><A NAME="wc">WIDGET COMMAND</A></B><BR>
+<DL><DT><A NAME="cget"><I>pathName</I> <B>cget</B></A>
+ <I>option</I>
+</DT><DD>
+
+Returns the current value of the configuration option given by <I>option</I>.
+<I>Option</I> may have any of the values accepted by the creation command.
+</DD></DL>
+<DL><DT><A NAME="configure"><I>pathName</I> <B>configure</B></A>
+ ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...?
+</DT><DD>
+
+Query or modify the configuration options of the widget. If no <I>option</I> is specified,
+returns a list describing all of the available options for <I>pathName</I>.
+If <I>option</I> is specified with no <I>value</I>, then the command returns a list
+describing the one named <I>option</I> (this list will be identical to the corresponding
+sublist of the value returned if no <I>option</I> is specified). If one or
+more <I>option-value</I> pairs are specified, then the command modifies the given widget
+option(s) to have the given value(s); in this case the command returns an empty string.
+<I>Option</I> may have any of the values accepted by the creation command.
+Read-only options are not be modified.
+
+</DD></DL>
+<HR>
+
+<ADRESS>Stephane Lavirotte <A HREF="mailto:Stephane.Lavirotte@sophia.inria.fr">(Stephane.Lavirotte@sophia.inria.fr)</A></ADRESS>
+
+</BODY></HTML>
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/ProgressBar.html
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/ProgressBar.html	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/ProgressBar.html	(revision 3762)
@@ -0,0 +1,152 @@
+<HTML>
+<HEAD><TITLE>ProgressBar</TITLE></HEAD>
+<BODY BGCOLOR=white>
+<DL><DT><I><A HREF="#descr">NAME</A></I></DT>
+<DD><B>ProgressBar</B>
+ - Progress indicator widget
+</DD></DL>
+<DL>
+<DT><I>CREATION</I></DT>
+<DD><A HREF="#descr"><B>ProgressBar</B></A> <I>pathName</I> ?<I>option value...</I>?</DD>
+</DL>
+<DL>
+<DT><I>STANDARD OPTIONS</I></DT>
+<DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-background">-background or -bg</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-borderwidth">-borderwidth or -bd</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-foreground">-foreground or -fg</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-orient">-orient</A></TR>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-relief">-relief</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-troughcolor">-troughcolor</A></TR>
+</TR>
+</TABLE></DD>
+</DL>
+<DL>
+<DT><I><A HREF="#wso">WIDGET-SPECIFIC OPTIONS</A></I></DT>
+<DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-height">-height</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="#-maximum">-maximum</A></TR>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-type">-type</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="#-variable">-variable</A></TR>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-width">-width</A></TR>
+</TABLE></DD>
+</DL>
+<DL>
+<DT><I><A HREF="#wc">WIDGET COMMAND</A></I></DT>
+<DD><I>pathName</I> <A HREF="#cget"><B>cget</B></A>
+ <I>option</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#configure"><B>configure</B></A>
+ ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...?
+</DD>
+</DL>
+<BR><HR WIDTH="100%"><BR>
+<B><A NAME="descr"></A>DESCRIPTION</B><BR>
+<P>
+
+ProgressBar widget indicates the user the progress of a lengthly operation.
+It is used by <A HREF="MainFrame.html">MainFrame</A>
+and <A HREF="ProgressDlg.html">ProgressDlg</A>.
+</P>
+<BR><HR WIDTH="50%"><BR>
+<B><A NAME="wso">WIDGET-SPECIFIC OPTIONS</A></B><BR>
+<DL><DT><A NAME="-height"><B>-height</B></A></DT>
+<DD>
+
+Specifies the desired height for the progress indicator.
+</DD>
+</DL>
+<DL><DT><A NAME="-maximum"><B>-maximum</B></A></DT>
+<DD>
+
+Specifies the maximum value of the variable.  This value must be
+greater than zero.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-type"><B>-type</B></A></DT>
+<DD>
+
+Specifies the type of the ProgressBar. Must be one of <B>normal</B>,
+<B>incremental</B>,  <B>infinite</B> or <B>nonincremental_infinite</B>.
+
+<BR><BR>If <B>type</B> is <I>normal</I>, the progress indicator is drawn
+proportional to the variable value and <B>maximum</B> option each time the
+variable is set.
+
+<BR><BR>If <B>type</B> is <I>incremental</I>, the value of the progress
+indicator is maintained internally, and incremented each time the variable is
+set by its value. The progress indicator is drawn proportional to the internal
+value and
+<B>maximum</B> option.
+
+<BR><BR>If <B>type</B> is <I>infinite</I>, the value of the progress indicator
+is maintained internally, and incremented each time the variable is set by its
+value. The progress indicator moves from left to right if internal value
+(modulo <B>maximum</B>) is less than <B>maximum</B>/2, and from right to left
+if internal value is greater than <B>maximum</B>/2.
+
+<BR><BR>If <B>type</B> is <I>nonincremental_infinite</I>, the value of the
+progress indicator taken from the variable value, The progress indicator moves
+from left to right if variable value (modulo <B>maximum</B>) is less than
+<B>maximum</B>/2, and from right to left if internal value is greater than
+<B>maximum</B>/2.
+
+<BR><BR>See <B>-variable</B> option for special case of its value,
+
+<BR><BR>Default value for <B>type</B> is <I>normal</I>.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-variable"><B>-variable</B></A></DT>
+<DD>
+
+Specifies the variable attached to the progress indicator.  Progress indicator
+is updated when the value of the variable changes.  If the value of the
+variable is negative, the progress indicator is not displayed (it is drawn flat
+with <B>background</B> color - usefull for ProgressDlg to make it
+invisible). If its value 0, progress indicator is reinitialized.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-width"><B>-width</B></A></DT>
+<DD>
+
+Specifies the desired width for the progress indicator.
+</DD>
+</DL>
+<HR WIDTH="50%"><BR>
+<B><A NAME="wc">WIDGET COMMAND</A></B><BR>
+<DL><DT><A NAME="cget"><I>pathName</I> <B>cget</B></A>
+ <I>option</I>
+</DT><DD>
+
+Returns the current value of the configuration option given by <I>option</I>.
+<I>Option</I> may have any of the values accepted by the creation command.
+</DD></DL>
+<DL><DT><A NAME="configure"><I>pathName</I> <B>configure</B></A>
+ ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...?
+</DT><DD>
+
+Query or modify the configuration options of the widget. If no <I>option</I> is specified,
+returns a list describing all of the available options for <I>pathName</I>.
+If <I>option</I> is specified with no <I>value</I>, then the command returns a list
+describing the one named <I>option</I> (this list will be identical to the corresponding
+sublist of the value returned if no <I>option</I> is specified). If one or
+more <I>option-value</I> pairs are specified, then the command modifies the given widget
+option(s) to have the given value(s); in this case the command returns an empty string.
+<I>Option</I> may have any of the values accepted by the creation command.
+Read-only options are not be modified.
+
+</DD></DL>
+</BODY></HTML>
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/ScrollView.html
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/ScrollView.html	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/ScrollView.html	(revision 3762)
@@ -0,0 +1,130 @@
+<HTML>
+<HEAD><TITLE>ScrollView</TITLE></HEAD>
+<BODY BGCOLOR=white>
+<DL><DT><I><A HREF="#descr">NAME</A></I></DT>
+<DD><B>ScrollView</B>
+ - Display the visible area of a scrolled window
+</DD></DL>
+<DL>
+<DT><I>CREATION</I></DT>
+<DD><A HREF="#descr"><B>ScrollView</B></A> <I>pathName</I> ?<I>option value...</I>?</DD>
+</DL>
+<DL>
+<DT><I>STANDARD OPTIONS</I></DT>
+<DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-background">-background or -bg</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-borderwidth">-borderwidth or -bd</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-cursor">-cursor</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-relief">-relief</A></TR>
+</TR>
+</TABLE></DD>
+</DL>
+<DL>
+<DT><I><A HREF="#wso">WIDGET-SPECIFIC OPTIONS</A></I></DT>
+<DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-fill">-fill</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="#-foreground">-foreground or -fg</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-height">-height</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="#-width">-width</A></TR>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-window">-window</A></TR>
+</TABLE></DD>
+</DL>
+<DL>
+<DT><I><A HREF="#wc">WIDGET COMMAND</A></I></DT>
+<DD><I>pathName</I> <A HREF="#cget"><B>cget</B></A>
+ <I>option</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#configure"><B>configure</B></A>
+ ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...?
+</DD>
+</DL>
+<BR><HR WIDTH="100%"><BR>
+<B><A NAME="descr"></A>DESCRIPTION</B><BR>
+<P>
+
+ScrollView displays the visible area of a scrolled window within
+its scroll region.
+
+</P>
+<BR><HR WIDTH="50%"><BR>
+<B><A NAME="wso">WIDGET-SPECIFIC OPTIONS</A></B><BR>
+<DL><DT><A NAME="-fill"><B>-fill</B></A></DT>
+<DD>
+
+Specifies the fill color of the rectangle.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-foreground"><B>-foreground</B></A></DT>
+<DD>
+
+Specifies the color of the border of the rectangle.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-height"><B>-height</B></A></DT>
+<DD>
+
+Specifies the desired height for the ScrollView.
+</DD>
+</DL>
+<DL><DT><A NAME="-width"><B>-width</B></A></DT>
+<DD>
+
+Specifies the desired width for the ScrollView.
+</DD>
+</DL>
+<DL><DT><A NAME="-window"><B>-window</B></A></DT>
+<DD>
+
+Specifies the window to view. This widget must have <B>-xscrollcommand</B> and 
+<B>-yscrollcommand</B> options, and respond to <B>xview</B> and <B>yview</B> command.
+In order to make ScrollView working with other scrollbar, <B>-xscrollcommand</B> and 
+<B>-yscrollcommand</B> options of the widget must be set before the widget is passed to
+the <B>-window</B> option of the ScrollView (for example, if the widget is handled by
+a ScrolledWindow, call <B>setwidget</B> before setting <B>-window</B> option).
+
+</DD>
+</DL>
+<HR WIDTH="50%"><BR>
+<B><A NAME="wc">WIDGET COMMAND</A></B><BR>
+<DL><DT><A NAME="cget"><I>pathName</I> <B>cget</B></A>
+ <I>option</I>
+</DT><DD>
+
+Returns the current value of the configuration option given by <I>option</I>.
+<I>Option</I> may have any of the values accepted by the creation command.
+</DD></DL>
+<DL><DT><A NAME="configure"><I>pathName</I> <B>configure</B></A>
+ ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...?
+</DT><DD>
+
+Query or modify the configuration options of the widget. If no <I>option</I> is specified,
+returns a list describing all of the available options for <I>pathName</I>.
+If <I>option</I> is specified with no <I>value</I>, then the command returns a list
+describing the one named <I>option</I> (this list will be identical to the corresponding
+sublist of the value returned if no <I>option</I> is specified). If one or
+more <I>option-value</I> pairs are specified, then the command modifies the given widget
+option(s) to have the given value(s); in this case the command returns an empty string.
+<I>Option</I> may have any of the values accepted by the creation command.
+Read-only options are not be modified.
+
+</DD></DL>
+<HR><BR><B>BINDINGS</B><BR><BR>
+
+<DL><DT>If mouse button 1 is pressed and dragged over the ScrollView, the top left corner of
+the visible area of the scrolled window is moved proportionally to the mouse displacement.
+</DT></DL>
+<DL><DT>If mouse button 3 is pressed over the ScrollView, the top left corner of the visible
+area is proportionally set to this point.
+</DT></DL>
+
+</BODY></HTML>
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/LabelFrame.html
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/LabelFrame.html	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/LabelFrame.html	(revision 3762)
@@ -0,0 +1,144 @@
+<HTML>
+<HEAD><TITLE>LabelFrame</TITLE></HEAD>
+<BODY BGCOLOR=white>
+<DL><DT><I><A HREF="#descr">NAME</A></I></DT>
+<DD><B>LabelFrame</B>
+ - Frame with a Label
+</DD></DL>
+<DL>
+<DT><I>CREATION</I></DT>
+<DD><A HREF="#descr"><B>LabelFrame</B></A> <I>pathName</I> ?<I>option value...</I>?</DD>
+</DL>
+<DL>
+<DT><I>STANDARD OPTIONS</I></DT>
+<DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-borderwidth">-borderwidth or -bd</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-relief">-relief</A></TR>
+</TR>
+</TABLE></DD>
+</DL>
+<DL>
+<DT><I><A HREF="Label.html">OPTIONS from <B>Label</B></A></I></DT>
+<DD><TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+<TR>
+<TD>&nbsp;&nbsp;-anchor</TD>
+<TD>&nbsp;&nbsp;-background or -bg</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-bitmap</TD>
+<TD>&nbsp;&nbsp;-disabledforeground</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-focus</TD>
+<TD>&nbsp;&nbsp;-font</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-foreground or -fg</TD>
+<TD>&nbsp;&nbsp;-height</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-helptext</TD>
+<TD>&nbsp;&nbsp;-helptype</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-helpvar</TD>
+<TD>&nbsp;&nbsp;-image</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-justify</TD>
+<TD>&nbsp;&nbsp;-name</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-padx</TD>
+<TD>&nbsp;&nbsp;-pady</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-state</TD>
+<TD>&nbsp;&nbsp;-text</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-textvariable</TD>
+<TD>&nbsp;&nbsp;-underline</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-width</TD>
+<TD>&nbsp;&nbsp;-wraplength</TD>
+</TABLE></DD>
+</DL>
+<DL>
+<DT><I><A HREF="#wso">WIDGET-SPECIFIC OPTIONS</A></I></DT>
+<DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-side">-side</A></TR>
+</TABLE></DD>
+</DL>
+<DL>
+<DT><I><A HREF="#wc">WIDGET COMMAND</A></I></DT>
+<DD>LabelFrame::<A HREF="#align"><B>align</B></A>
+ ?<I>arg...</I>?
+</DD>
+<DD><I>pathName</I> <A HREF="#cget"><B>cget</B></A>
+ <I>option</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#configure"><B>configure</B></A>
+ ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...?
+</DD>
+<DD><I>pathName</I> <A HREF="#getframe"><B>getframe</B></A>
+</DD>
+</DL>
+<BR><HR WIDTH="100%"><BR>
+<B><A NAME="descr"></A>DESCRIPTION</B><BR>
+<P>
+
+LabelFrame enables user to create a frame with a
+<A HREF="Label.html">Label</A> positionned at any side.
+LabelFrame is used by <A HREF="ComboBox.html">ComboBox</A>
+and <A HREF="SpinBox.html">SpinBox</A>.
+</P>
+<BR><HR WIDTH="50%"><BR>
+<B><A NAME="wso">WIDGET-SPECIFIC OPTIONS</A></B><BR>
+<DL><DT><A NAME="-side"><B>-side (read-only)</B></A></DT>
+<DD>
+
+Specifies where to position the Label relative to the user frame: <B>top</B>, <B>bottom</B>, <B>left</B> or <B>right</B>.
+</DD>
+</DL>
+<HR WIDTH="50%"><BR>
+<B><A NAME="wc">WIDGET COMMAND</A></B><BR>
+<DL><DT><A NAME="align">LabelFrame::<B>align</B></A>
+ ?<I>arg...</I>?
+</DT><DD>
+
+This command align label of all widget given by <I>args</I> of class LabelFrame
+(or "derived") by setting their width to the max one +1
+
+</DD></DL>
+<DL><DT><A NAME="cget"><I>pathName</I> <B>cget</B></A>
+ <I>option</I>
+</DT><DD>
+
+Returns the current value of the configuration option given by <I>option</I>.
+<I>Option</I> may have any of the values accepted by the creation command.
+</DD></DL>
+<DL><DT><A NAME="configure"><I>pathName</I> <B>configure</B></A>
+ ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...?
+</DT><DD>
+
+Query or modify the configuration options of the widget. If no <I>option</I> is specified,
+returns a list describing all of the available options for <I>pathName</I>.
+If <I>option</I> is specified with no <I>value</I>, then the command returns a list
+describing the one named <I>option</I> (this list will be identical to the corresponding
+sublist of the value returned if no <I>option</I> is specified). If one or
+more <I>option-value</I> pairs are specified, then the command modifies the given widget
+option(s) to have the given value(s); in this case the command returns an empty string.
+<I>Option</I> may have any of the values accepted by the creation command.
+Read-only options are not be modified.
+
+</DD></DL>
+<DL><DT><A NAME="getframe"><I>pathName</I> <B>getframe</B></A>
+</DT><DD>
+
+Return the frame where the user can create any other widget.
+</DD></DL>
+</BODY></HTML>
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/TitleFrame.html
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/TitleFrame.html	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/TitleFrame.html	(revision 3762)
@@ -0,0 +1,107 @@
+<HTML>
+<HEAD><TITLE>TitleFrame</TITLE></HEAD>
+<BODY BGCOLOR=white>
+<DL><DT><I><A HREF="#descr">NAME</A></I></DT>
+<DD><B>TitleFrame</B>
+ - Frame with a title
+</DD></DL>
+<DL>
+<DT><I>CREATION</I></DT>
+<DD><A HREF="#descr"><B>TitleFrame</B></A> <I>pathName</I> ?<I>option value...</I>?</DD>
+</DL>
+<DL>
+<DT><I>STANDARD OPTIONS</I></DT>
+<DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-background">-background or -bg</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-borderwidth">-borderwidth or -bd</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-font">-font</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-foreground">-foreground or -fg</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-relief">-relief</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-text">-text</A></TR>
+</TR>
+</TABLE></DD>
+</DL>
+<DL>
+<DT><I><A HREF="#wso">WIDGET-SPECIFIC OPTIONS</A></I></DT>
+<DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-baseline">-baseline</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="#-ipad">-ipad</A></TR>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-side">-side</A></TR>
+</TABLE></DD>
+</DL>
+<DL>
+<DT><I><A HREF="#wc">WIDGET COMMAND</A></I></DT>
+<DD><I>pathName</I> <A HREF="#cget"><B>cget</B></A>
+ <I>option</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#configure"><B>configure</B></A>
+ ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...?
+</DD>
+<DD><I>pathName</I> <A HREF="#getframe"><B>getframe</B></A>
+</DD>
+</DL>
+<BR><HR WIDTH="100%"><BR>
+<B><A NAME="descr"></A>DESCRIPTION</B><BR>
+<P>
+
+TitleFrame enables user to create a frame with a title like XmFrame Motif widget.
+</P>
+<BR><HR WIDTH="50%"><BR>
+<B><A NAME="wso">WIDGET-SPECIFIC OPTIONS</A></B><BR>
+<DL><DT><A NAME="-baseline"><B>-baseline</B></A></DT>
+<DD>
+
+Specifies the vertical alignment of the title: <B>top</B>, <B>center</B> or <B>bottom</B>.
+</DD>
+</DL>
+<DL><DT><A NAME="-ipad"><B>-ipad</B></A></DT>
+<DD>
+
+Specifies a pad between the border of the frame and the user frame.
+The value is in screen units.
+</DD>
+</DL>
+<DL><DT><A NAME="-side"><B>-side</B></A></DT>
+<DD>
+
+Specifies the horizontal alignment of the title: <B>left</B>, <B>center</B> or <B>right</B>.
+</DD>
+</DL>
+<HR WIDTH="50%"><BR>
+<B><A NAME="wc">WIDGET COMMAND</A></B><BR>
+<DL><DT><A NAME="cget"><I>pathName</I> <B>cget</B></A>
+ <I>option</I>
+</DT><DD>
+
+Returns the current value of the configuration option given by <I>option</I>.
+<I>Option</I> may have any of the values accepted by the creation command.
+</DD></DL>
+<DL><DT><A NAME="configure"><I>pathName</I> <B>configure</B></A>
+ ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...?
+</DT><DD>
+
+Query or modify the configuration options of the widget. If no <I>option</I> is specified,
+returns a list describing all of the available options for <I>pathName</I>.
+If <I>option</I> is specified with no <I>value</I>, then the command returns a list
+describing the one named <I>option</I> (this list will be identical to the corresponding
+sublist of the value returned if no <I>option</I> is specified). If one or
+more <I>option-value</I> pairs are specified, then the command modifies the given widget
+option(s) to have the given value(s); in this case the command returns an empty string.
+<I>Option</I> may have any of the values accepted by the creation command.
+Read-only options are not be modified.
+
+</DD></DL>
+<DL><DT><A NAME="getframe"><I>pathName</I> <B>getframe</B></A>
+</DT><DD>
+
+Return the frame where the user can create any other widget.
+</DD></DL>
+</BODY></HTML>
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/DynamicHelp.html
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/DynamicHelp.html	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/DynamicHelp.html	(revision 3762)
@@ -0,0 +1,251 @@
+<HTML>
+<HEAD><TITLE>DynamicHelp</TITLE></HEAD>
+<BODY BGCOLOR=white>
+<DL><DT><I><A HREF="#descr">NAME</A></I></DT>
+<DD><B>DynamicHelp</B>
+ - Provide help to Tk widget or BWidget
+</DD></DL>
+<DL>
+<DT><I><A HREF="#wc">COMMAND</A></I></DT>
+<DD>DynamicHelp::<A HREF="#add"><B>add</B></A>
+<i>widget</i> ?<I>option value ...</I>?
+</DD>
+<DD>DynamicHelp::<A HREF="#configure"><B>configure</B></A>
+ ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...?
+</DD>
+<DD>DynamicHelp::<A HREF="#delete"><B>delete</B></A>
+<i>widget</i>
+</DD>
+<DD>DynamicHelp::<A HREF="#include"><B>include</B></A>
+ <I>class</I>
+ <I>type</I>
+</DD>
+<DD>DynamicHelp::<A HREF="#register"><B>register</B></A>
+ <I>path</I>
+ <I>type</I>
+ ?<I>arg...</I>?
+</DD>
+<DD>DynamicHelp::<A HREF="#sethelp"><B>sethelp</B></A>
+ <I>path</I>
+ <I>subpath</I>
+ ?<I>force</I>?
+</DD>
+</DL>
+<BR><HR WIDTH="100%"><BR>
+<B><A NAME="descr"></A>DESCRIPTION</B><BR>
+<P>
+Description text
+</P>
+<HR WIDTH="50%"><BR>
+<B><A NAME="wc">COMMAND</A></B><BR>
+
+<DL><DT><A NAME="add">DynamicHelp::<B>add</B></A>
+ ?<I>option value ...</I>?
+</DT><DD>
+<p>
+This command adds dynamic help to the given <i>widget</i>.
+</p>
+    <DL><DT><A NAME="add-command"><B>-command</B></A></DT>
+    <DD>
+    	If specified, refers to a command to execute to get the help
+	text to display.  The command must return a string to display.
+	If the command returns an empty string, no help is displayed.
+    </DD>
+    </DL>
+
+    <DL><DT><A NAME="add-index"><B>-index</B></A></DT>
+    <DD>
+	If specified, refers to a menu index to bind the help to instead of
+	a widget.  If <b>-type</b> is not menu, this option is ignored.
+    </DD>
+    </DL>
+
+    <DL><DT><A NAME="add-item"><B>-item</B></A></DT>
+    <DD>
+    	If specified, refers to an item or tag on a canvas widget or to a tag
+        in a text widget to bind the help to instead of to a widget.
+    </DD>
+    </DL>
+
+    <DL><DT><A NAME="add-type"><B>-type</B></A></DT>
+    <DD>
+	Specifies the type of help.  Can be:
+	<b>balloon</b>, <b>variable</b> or <b>menu</b>.
+	Default is <b>balloon</b>.
+    </DD>
+    </DL>
+
+    <DL><DT><A NAME="add-text"><B>-text</B></A></DT>
+    <DD>
+    	The text to be displayed as help.
+    </DD>
+    </DL>
+
+    <DL><DT><A NAME="add-variable"><B>-variable</B></A></DT>
+    <DD>
+    	Specifies a variable name to which the help string will be
+        written.  Some other widget (e.g., a status bar) is
+        responsible for displaying this variable.
+    </DD>
+    </DL>
+
+    <p>
+    Creating dynamic help for a menu is a two-step process.  The menu
+    itself must first be added and then each menu entry must be added
+    separately.  Here is a brief example.
+    </p>
+
+    <TABLE BORDER=2 CELLSPACING=2 WIDTH="80%">
+    <TR><TD><PRE>
+    <FONT COLOR=red><I># create menu</I></FONT>
+    menu .m -type menubar
+    <FONT COLOR=red><I># associate menubar to toplevel BEFORE DynamicHelp::register</I></FONT>
+    <FONT COLOR=red><I># to make it works with menu clone name</I></FONT>
+    . configure -menu .m
+    .m add cascade -label "File" -menu .m.file
+    menu .m.file
+    .m.file add command -label "Open..."
+    .m.file add command -label "Quit"
+    <FONT COLOR=red><I># create label for help, using variable varinfo</I></FONT>
+    label .l -textvariable varinfo
+    <FONT COLOR=red><I># associate all entries of menu .m.file to variable varinfo</I></FONT>
+    DynamicHelp::add .m.file -type menu -variable varinfo
+    <FONT COLOR=red><I># then declare entries of .m.file</I></FONT>
+    DynamicHelp::add .m.file -type menu -index 0 -text "Detach menu"
+    DynamicHelp::add .m.file -type menu -index 1 -text "Open a file"
+    DynamicHelp::add .m.file -type menu -index 2 -text "Exit demo"
+    </PRE></TD></TR></TABLE></CENTER>
+
+</DL>
+
+<DL><DT><A NAME="configure">DynamicHelp::<B>configure</B></A>
+ ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...?
+</DT><DD>
+This command configure the ballon help.
+<P>
+<DL><DT><A NAME="DynamicHelp-borderwidth"><B>-borderwidth</B></A></DT>
+<DD>
+Width of the black border around the balloon.
+</DD>
+</DL>
+<DL><DT><A NAME="DynamicHelp-delay"><B>-delay</B></A></DT>
+<DD>
+Define the delay in millisecond of mouse inactivity before displaying
+the balloon.
+</DD>
+</DL>
+<dl>
+    <dt><a name="DynamicHelp-state"><b>-state</b></a></dt>
+    <dd>
+    Specifies one of two states for help balloons: <b>normal</b> and
+    <b>disabled</b>.
+    </dd>
+    <dd>
+    If <b>state</b> is <b>disabled</b>, help balloons will not be displayed
+    for any registered widget.
+    </dd>
+</dl>
+<DL><DT><A NAME="DynamicHelp-topbackground"><B>-topbackground</B></A></DT>
+<DD>
+The background color of the toplevel window created for a balloon.
+</DD>
+</DL>
+<BR>Other standard options are:
+<DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-background">-background or -bg</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-font">-font</A></TR>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-foreground">-foreground or -fg</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-justify">-justify</A></TR>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-padx">-padx</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-pady">-pady</A></TR>
+</TR>
+</TABLE></DD>
+</DD></DL>
+
+<DL><DT><A NAME="delete">DynamicHelp::<B>delete</B></A>
+ <I>widget</I>
+</DT><DD>
+    Delete all dynamic help for the given <i>widget</i>.
+</DD></DL>
+
+<DL><DT><A NAME="include">DynamicHelp::<B>include</B></A>
+ <I>class</I>
+ <I>type</I>
+</DT><DD>
+Description text
+</DD></DL>
+<DL><DT><A NAME="register">DynamicHelp::<B>register</B></A>
+ <I>path</I>
+ <I>type</I>
+ ?<I>arg...</I>?
+</DT><DD>
+<p>
+<b>Its use is deprecated.  Use <i>DynamicHelp::add</i> instead.</b>
+</p>
+
+Register a help text to the widget <I>path</I>.
+<I>type</I> determines the type of the help or the type of the widget.
+Depending on <I>type</I>, other options must be provided.
+<BR>
+<TABLE CELLSPACING=5 CELLPADDING=0 BORDER=0>
+<TR><TD><B>    type      </B></TD><TD><B>     options      </B></TD></TR>
+<TR><TD><B><I> balloon   </I></B></TD><TD><I> ?tagOrItem? text </I></TD></TR>
+<TR><TD><B><I> variable  </I></B></TD><TD><I> ?tagOrItem? varName text </I></TD></TR>
+<TR><TD><B><I> menu      </I></B></TD><TD><I> varName      </I></TD></TR>
+<TR><TD><B><I> menuentry </I></B></TD><TD><I> index text   </I></TD></TR>
+</TABLE>
+<BR>If one of the option is missing or is empty, help is removed for this widget.
+<p>
+
+If <i>tagOrItem</i> is specified, then <i>path</i> is a canvas or a text. In
+case of a canvas, <i>tagOrItem</i> is the name of a tag or item on the canvas
+to which the help will be bound. In case of a text, <i>tagOrItem</i> is the
+name of a tag on the text to which the help will be bound.
+
+</p>
+For type other than <I>balloon</I>, <I>varName</I> is typically a variable
+linked to a label.
+<BR>For menu, balloon type help is not available. To declare a help for menu,
+you first declare the menu, and then entries of this menu.
+<BR>For example:
+<BR><BR>
+<CENTER>
+<TABLE BORDER=2 CELLSPACING=2 WIDTH="80%">
+<TR><TD><PRE>
+     <FONT COLOR=red><I># create menu</I></FONT>
+menu .m -type menubar
+<FONT COLOR=red><I># associate menubar to toplevel BEFORE DynamicHelp::register</I></FONT>
+<FONT COLOR=red><I># to make it works with menu clone name</I></FONT>
+. configure -menu .m
+.m add cascade -label "File" -menu .m.file
+menu .m.file
+.m.file add command -label "Open..."
+.m.file add command -label "Quit"
+<FONT COLOR=red><I># create label for help, using variable varinfo</I></FONT>
+label .l -textvariable varinfo
+<FONT COLOR=red><I># associate all entries of menu .m.file to variable varinfo</I></FONT>
+DynamicHelp::register .m.file menu varinfo
+<FONT COLOR=red><I># then declare entries of .m.file</I></FONT>
+DynamicHelp::register .m.file menuentry 0 "Detach menu"
+DynamicHelp::register .m.file menuentry 1 "Open a file"
+DynamicHelp::register .m.file menuentry 2 "Exit demo"
+</PRE></TD></TR></TABLE></CENTER>
+<BR>
+<BR>Notice that if popup menu is owned by a menubar, you must associate first the menubar
+to its toplevel. In this case, when you create a menu popup, its clone window is also
+created, and DynamicHelp::register detects the exitence of the clone window and maps
+events to it.
+</DD></DL>
+<DL><DT><A NAME="sethelp">DynamicHelp::<B>sethelp</B></A>
+ <I>path</I>
+ <I>subpath</I>
+ ?<I>force</I>?
+</DT><DD>
+Description text
+</DD></DL>
+</BODY></HTML>
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/ScrollableFrame.html
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/ScrollableFrame.html	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/ScrollableFrame.html	(revision 3762)
@@ -0,0 +1,194 @@
+<HTML>
+<HEAD><TITLE>ScrollableFrame</TITLE></HEAD>
+<BODY BGCOLOR=white>
+<DL><DT><I><A HREF="#descr">NAME</A></I></DT>
+<DD><B>ScrollableFrame</B>
+ - Scrollable frame containing widget
+</DD></DL>
+<DL>
+<DT><I>CREATION</I></DT>
+<DD><A HREF="#descr"><B>ScrollableFrame</B></A> <I>pathName</I> ?<I>option value...</I>?</DD>
+</DL>
+<DL>
+<DT><I>STANDARD OPTIONS</I></DT>
+<DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-background">-background or -bg</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-xscrollcommand">-xscrollcommand</A></TD></TR>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-yscrollcommand">-yscrollcommand</A></TD></TR>
+</TABLE></DD>
+<BR>
+Themed widget (<B>Widget::theme true</B>): Options <B>-background</B> and <B>-bg</B> are not available.
+Modify style <B>TFrame</B> property <B>-background</B> instead.
+</DL>
+<DL>
+<DT><I><A HREF="#wso">WIDGET-SPECIFIC OPTIONS</A></I></DT>
+<DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-areaheight">-areaheight</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="#-areawidth">-areawidth</A></TR>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-constrainedheight">-constrainedheight</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="#-constrainedwidth">-constrainedwidth</A></TR>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-height">-height</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="#-width">-width</A></TR>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-xscrollincrement">-xscrollincrement</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="#-yscrollincrement">-yscrollincrement</A></TR>
+</TR>
+</TABLE></DD>
+</DL>
+<DL>
+<DT><I><A HREF="#wc">WIDGET COMMAND</A></I></DT>
+<DD><I>pathName</I> <A HREF="#cget"><B>cget</B></A>
+ <I>option</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#configure"><B>configure</B></A>
+ ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...?
+</DD>
+<DD><I>pathName</I> <A HREF="#getframe"><B>getframe</B></A>
+</DD>
+<DD><I>pathName</I> <A HREF="#see"><B>see</B></A>
+ <I>widget</I>
+ ?<I>vert</I>?
+ ?<I>horz</I>?
+</DD>
+<DD><I>pathName</I> <A HREF="#xview"><B>xview</B></A>
+ ?<I>arg...</I>?
+</DD>
+<DD><I>pathName</I> <A HREF="#yview"><B>yview</B></A>
+ ?<I>arg...</I>?
+</DD>
+</DL>
+<BR><HR WIDTH="100%"><BR>
+<B><A NAME="descr"></A>DESCRIPTION</B><BR>
+<P>
+
+ScrollableFrame widget containing widget.
+
+</P>
+<BR><HR WIDTH="50%"><BR>
+<B><A NAME="wso">WIDGET-SPECIFIC OPTIONS</A></B><BR>
+<DL><DT><A NAME="-areaheight"><B>-areaheight</B></A></DT>
+<DD>
+
+Specifies the height for the scrollable area. If zero, then the height
+of the scrollable area is made just large enough to hold all its children.
+</DD>
+</DL>
+<DL><DT><A NAME="-areawidth"><B>-areawidth</B></A></DT>
+<DD>
+
+Specifies the width for the scrollable area. If zero, then the width
+of the scrollable area window is made just large enough to hold all its children.
+</DD>
+</DL>
+<DL><DT><A NAME="-constrainedheight"><B>-constrainedheight</B></A></DT>
+<DD>
+
+Specifies whether or not the scrollable area should have the same height of the
+scrolled window. If true, vertical scrollbar is not needed.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-constrainedwidth"><B>-constrainedwidth</B></A></DT>
+<DD>
+
+Specifies whether or not the scrollable area should have the same width of the
+scrolled window. If true, horizontal scrollbar is not needed.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-height"><B>-height</B></A></DT>
+<DD>
+
+Specifies the desired height for the window in pixels.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-width"><B>-width</B></A></DT>
+<DD>
+
+Specifies the desired width for the window in pixels.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-xscrollincrement"><B>-xscrollincrement</B></A></DT>
+<DD>
+
+See <B>xscrollincrement</B> option of <B>canvas</B> widget.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-yscrollincrement"><B>-yscrollincrement</B></A></DT>
+<DD>
+
+See <B>yscrollincrement</B> option of <B>canvas</B> widget.
+
+</DD>
+</DL>
+<HR WIDTH="50%"><BR>
+<B><A NAME="wc">WIDGET COMMAND</A></B><BR>
+<DL><DT><A NAME="cget"><I>pathName</I> <B>cget</B></A>
+ <I>option</I>
+</DT><DD>
+
+Returns the current value of the configuration option given by <I>option</I>.
+<I>Option</I> may have any of the values accepted by the creation command.
+</DD></DL>
+<DL><DT><A NAME="configure"><I>pathName</I> <B>configure</B></A>
+ ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...?
+</DT><DD>
+
+Query or modify the configuration options of the widget. If no <I>option</I> is specified,
+returns a list describing all of the available options for <I>pathName</I>.
+If <I>option</I> is specified with no <I>value</I>, then the command returns a list
+describing the one named <I>option</I> (this list will be identical to the corresponding
+sublist of the value returned if no <I>option</I> is specified). If one or
+more <I>option-value</I> pairs are specified, then the command modifies the given widget
+option(s) to have the given value(s); in this case the command returns an empty string.
+<I>Option</I> may have any of the values accepted by the creation command.
+Read-only options are not be modified.
+
+</DD></DL>
+<DL><DT><A NAME="getframe"><I>pathName</I> <B>getframe</B></A>
+</DT><DD>
+
+Return the pathname of the scrolled frame where widget should be created.
+
+</DD></DL>
+<DL><DT><A NAME="see"><I>pathName</I> <B>see</B></A>
+ <I>widget</I>
+ ?<I>vert</I>?
+ ?<I>horz</I>?
+</DT><DD>
+
+Arrange scrollable area to make <I>widget</I> visible in the window.
+<I>vert</I> and <I>horz</I> specify which part of <I>widget</I> must be preferably
+visible, in case where <I>widget</I> is too tall or too large to be entirely visible.
+<I>vert</I> must be <B>top</B> (the default) or <B>bottom</B>,
+and <I>horz</I> must be <B>left</B> (the default) or <B>right</B>.
+If <I>vert</I> or <I>horz</I> is not a valid value, area is not scrolled in this direction.
+
+</DD></DL>
+<DL><DT><A NAME="xview"><I>pathName</I> <B>xview</B></A>
+ ?<I>arg...</I>?
+</DT><DD>
+
+Standard command to enable horizontal scrolling of <I>pathName</I>.
+
+</DD></DL>
+<DL><DT><A NAME="yview"><I>pathName</I> <B>yview</B></A>
+ ?<I>arg...</I>?
+</DT><DD>
+
+Standard command to enable vertical scrolling of <I>pathName</I>.
+
+</DD></DL>
+</BODY></HTML>
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/MainFrame.html
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/MainFrame.html	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/MainFrame.html	(revision 3762)
@@ -0,0 +1,323 @@
+<HTML>
+<HEAD><TITLE>MainFrame</TITLE></HEAD>
+<BODY BGCOLOR=white>
+<DL><DT><I><A HREF="#descr">NAME</A></I></DT>
+<DD><B>MainFrame</B>
+ - Manage toplevel with menu, toolbar and statusbar 
+</DD></DL>
+<DL>
+<DT><I>CREATION</I></DT>
+<DD><A HREF="#descr"><B>MainFrame</B></A> <I>pathName</I> ?<I>option value...</I>?</DD>
+</DL>
+<DL>
+<DT><I><A HREF="ProgressBar.html">OPTIONS from <B>ProgressBar</B></A></I></DT>
+<DD><TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+<TR>
+<TD>&nbsp;&nbsp;-background or -bg</TD>
+<TD>&nbsp;&nbsp;-progressfg (see <B>-foreground</B>)</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-progressmax (see <B>-maximum</B>)</TD>
+<TD>&nbsp;&nbsp;-progresstype (see <B>-type</B>)</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-progressvar (see <B>-variable</B>)</TD>
+</TR>
+</TABLE></DD>
+</DL>
+<DL>
+<DT><I><A HREF="#wso">WIDGET-SPECIFIC OPTIONS</A></I></DT>
+<DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-height">-height</A></TD></TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-menu">-menu</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-menubarfont">-menubarfont</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-menuentryfont">-menuentryfont</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-separator">-separator</A></TD></TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-statusbarfont">-statusbarfont</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-textvariable">-textvariable</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-width">-width</A></TD></TR>
+<TD>&nbsp;&nbsp;<A HREF="#-sizegrip">-sizegrip</A></TR>
+</TABLE></DD>
+</DL>
+<DL>
+<DT><I><A HREF="#wc">WIDGET COMMAND</A></I></DT>
+<DD><I>pathName</I> <A HREF="#addindicator"><B>addindicator</B></A>
+ ?<I>arg...</I>?
+</DD>
+<DD><I>pathName</I> <A HREF="#addtoolbar"><B>addtoolbar</B></A>
+</DD>
+<DD><I>pathName</I> <A HREF="#cget"><B>cget</B></A>
+ <I>option</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#configure"><B>configure</B></A>
+ ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...?
+</DD>
+<DD><I>pathName</I> <A HREF="#getframe"><B>getframe</B></A>
+</DD>
+<DD><I>pathName</I> <A HREF="#getindicator"><B>getindicator</B></A>
+ <I>index</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#getmenu"><B>getmenu</B></A>
+ <I>menuid</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#gettoolbar"><B>gettoolbar</B></A>
+ <I>index</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#setmenustate"><B>setmenustate</B></A>
+ <I>tag</I>
+ <I>state</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#showstatusbar"><B>showstatusbar</B></A>
+ <I>name</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#showtoolbar"><B>showtoolbar</B></A>
+ <I>index</I>
+ <I>bool</I>
+</DD>
+</DL>
+<BR><HR WIDTH="100%"><BR>
+<B><A NAME="descr"></A>DESCRIPTION</B><BR>
+<P>
+
+MainFrame manage toplevel to have:<BR>
+<UL>
+<LI>simple menu creation, with automatic accelerator bindings and
+<A HREF="DynamicHelp.html">DynamicHelp</A> association,</LI>
+<LI>one or more toolbars that user can hide,</LI>
+<LI>a status bar, displaying a user message or a menu description, and optionally a
+<A HREF="ProgressBar.html">ProgressBar</A>.</LI>
+</UL>
+</P>
+<BR><HR WIDTH="50%"><BR>
+<B><A NAME="wso">WIDGET-SPECIFIC OPTIONS</A></B><BR>
+<DL><DT><A NAME="-height"><B>-height</B></A></DT>
+<DD>
+
+Specifies the desired height for the user frame in any of the forms acceptable to
+Tk_GetPixels. If this option is less than or equal to zero (the default) then the window
+will not request any size at all.
+</DD>
+</DL>
+<DL><DT><A NAME="-menu"><B>-menu (read-only)</B></A></DT>
+<DD>
+
+This option describes the menu. This is a list whose each five elements describe
+one cascade menu. It has the following form:
+{<I>menuname</I> <I>tags</I> <I>menuId</I> <I>tearoff</I> <I>menuentries</I>...}
+where <I>menuentries</I> is a list where each element describe one menu entry, which can be:
+<UL>
+<LI>for a separator:<BR>
+  {<B>separator</B>}</LI>
+<LI>for a command:<BR>
+  {<B>command</B> <I>menuname</I> ?<I>tags</I>? ?<I>description</I>? ?<I>accelerator</I>? ?<I>option</I> <I>value</I>? ...}</LI>
+<LI>for a check button:<BR>
+  {<B>checkbutton</B> <I>menuname</I> ?<I>tags</I>? ?<I>description</I>? ?<I>accelerator</I>? ?<I>option</I> <I>value</I>? ...}</LI>
+<LI>for a radio button:<BR>
+  {<B>radiobutton</B> <I>menuname</I> ?<I>tags</I>? ?<I>description</I>? ?<I>accelerator</I> ?<I>option</I> <I>value</I>? ...}</LI>
+<LI>for a cascade menu:<BR>
+  {<B>cascade</B> <I>menuname</I> <I>tags</I> <I>menuId</I> <I>tearoff</I> <I>menuentries</I>}</LI>
+</UL>
+where:
+<UL>
+<LI><I>menuname</I> is the name of the menu. If it contains a &amp;, the following character
+is automatically converted to the corresponding <B>-underline</B> option of <B>menu add</B>
+command.</LI>
+<LI><I>tags</I> is the tags list for the entry, used for enabling or disabling menu
+entries with <B>MainFrame::setmenustate</B>.</LI>
+<LI><I>menuId</I> is an id for the menu, from which you can get menu pathname with
+ <B>MainFrame::getmenu</B>.</LI>
+<LI><I>tearoff</I> specifies if menu has tearoff entry.</LI>
+<LI><I>description</I> specifies a string for <A HREF=\"DynamicHelp.html\">DynamicHelp</A>.</LI>
+<LI><I>accelerator</I> specifies a key sequence. It is a list of two elements, where the first
+is one of <B>Shift</B>, <B>Ctrl</B>, <B>Alt</B>, <B>CtrlAlt</B>, <B>Cmd</B>,  or <B>ShiftCmd</B>, and the second as letter
+(see <A HREF="#-casesensitive">-casesensitive</A> option for interpretation),  digit or
+a special key name.
+An accelerator string is build and corresponding binding set on the toplevel to invoke the
+menu entry.</LI>
+<LI><I>option value</I> specifies additionnal options for the entry (see <B>menu add</B>
+command).</LI>
+</UL>
+Each value enclosed by ? are optional and defaulted to empty string, but must be
+provided if one or more following options is not empty.
+<BR>Example:
+<PRE>
+set descmenu {
+    "&File" {} {} 0 {
+        {command "&New"     {} "Create a new document"     {Ctrl n} -command Menu::new}
+        {command "&Open..." {} "Open an existing document" {Ctrl o} -command Menu::open}
+        {command "&Save"    open "Save the document" {Ctrl s} -command Menu::save}
+        {cascade  "&Export"  {} export 0 {
+            {command "Format &1" open "Export document to format 1" {} -command {Menu::export 1}}
+            {command "Format &2" open "Export document to format 2" {} -command {Menu::export 2}}
+        }}
+        {separator}
+        {cascade "&Recent files" {} recent 0 {}}
+        {separator}
+        {command "E&xit" {} "Exit the application" {} -command Menu::exit}
+    }
+    "&Options" {} {} 0 {
+        {checkbutton "Toolbar" {} "Show/hide toolbar" {}
+            -variable Menu::_drawtoolbar
+            -command  {$Menu::_mainframe showtoolbar toolbar $Menu::_drawtoolbar}
+        }
+    }
+}
+</PRE>
+
+</DD>
+</DL>
+<DL><DT><A NAME="-menubarfont"><B>-menubarfont</B></A></DT>
+<DD>
+Font for the top menu bar.
+</DD>
+<DL><DT><A NAME="-menuentryfont"><B>-menuentryfont</B></A></DT>
+<DD>
+Font for the submenus.
+</DD>
+<DL><DT><A NAME="-separator"><B>-separator (read-only)</B></A></DT>
+<DD>
+
+Specifies if separator should be drawn at the top and/or at the bottom of the user window.
+Must be one of the values <B>none</B>, <B>top</B>, <B>bottom</B> or <B>both</B>.
+It depends on the relief of subwidgets of user window.
+</DD>
+</DL>
+<DL><DT><A NAME="-textvariable"><B>-textvariable</B></A></DT>
+<DD>
+
+Specifies the textvariable option for the label of the status bar.
+<A HREF="DynamicHelp.html">DynamicHelp</A> description
+of menu entries are mapped to this variable at the creation of the MainFrame.
+If this variable is changed by MainFrame::configure, menu description will
+not be available.
+<BR>You change the text of the label by modifying the value of the variable.
+</DD>
+</DL>
+<DL><DT><A NAME="-statusbarfont"><B>-statusbarfont</B></A></DT>
+<DD>
+Font for the status bar.
+</DD>
+<DL><DT><A NAME="-width"><B>-width</B></A></DT>
+<DD>
+
+Specifies the desired width for the user frame in any of the forms acceptable to
+Tk_GetPixels. If this option is less than or equal to zero (the default) then the window
+will not request any size at all.
+</DD>
+</DL>
+<DL><DT><A NAME="-sizegrip"><B>-sizegrip (themed, read-only)</B></A></DT>
+<DD>
+
+If bool argument is true and themed mode, show a ttk sizegrip widget in the lower-right corner.
+</DD>
+<HR WIDTH="50%"><BR>
+<B><A NAME="wc">WIDGET COMMAND</A></B><BR>
+<DL><DT><A NAME="addindicator"><I>pathName</I> <B>addindicator</B></A>
+ ?<I>arg...</I>?
+</DT><DD>
+
+Add an indicator box at the right of the status bar. Each indicator are added from left
+to right. An indicator is a Tk label widget configured with option-value pair
+given by ?<I>arg...</I>?. <B>-relief</B> and <B>-borderwidth</B> options are respetively
+defaulted to <I>sunken</I> and 1. Returns the pathname of the created label.
+</DD></DL>
+<DL><DT><A NAME="addtoolbar"><I>pathName</I> <B>addtoolbar</B></A>
+</DT><DD>
+
+Add a toolbar to the MainFrame. Returns the pathname of the new window where to place
+toolbar items.
+</DD></DL>
+<DL><DT><A NAME="cget"><I>pathName</I> <B>cget</B></A>
+ <I>option</I>
+</DT><DD>
+
+Returns the current value of the configuration option given by <I>option</I>.
+<I>Option</I> may have any of the values accepted by the creation command.
+</DD></DL>
+<DL><DT><A NAME="configure"><I>pathName</I> <B>configure</B></A>
+ ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...?
+</DT><DD>
+
+Query or modify the configuration options of the widget. If no <I>option</I> is specified,
+returns a list describing all of the available options for <I>pathName</I>.
+If <I>option</I> is specified with no <I>value</I>, then the command returns a list
+describing the one named <I>option</I> (this list will be identical to the corresponding
+sublist of the value returned if no <I>option</I> is specified). If one or
+more <I>option-value</I> pairs are specified, then the command modifies the given widget
+option(s) to have the given value(s); in this case the command returns an empty string.
+<I>Option</I> may have any of the values accepted by the creation command.
+Read-only options are not be modified.
+
+</DD></DL>
+<DL><DT><A NAME="getframe"><I>pathName</I> <B>getframe</B></A>
+</DT><DD>
+
+Returns the pathname of the user window.
+</DD></DL>
+<DL><DT><A NAME="getindicator"><I>pathName</I> <B>getindicator</B></A>
+ <I>index</I>
+</DT><DD>
+
+Returns the pathname of the <I>index</I>th added indicator.
+</DD></DL>
+<DL><DT><A NAME="getmenu"><I>pathName</I> <B>getmenu</B></A>
+ <I>menuid</I>
+</DT><DD>
+
+Returns the pathname of the menu whose id is <I>menuid</I>.
+</DD></DL>
+<DL><DT><A NAME="getmenustate"><I>pathName</I> <B>getmenustate</B></A>
+ <I>tag</I>
+ <I>state</I>
+</DT><DD>
+
+Returns the state of the given menu <I>tag</I>.
+</DD></DL>
+<DL><DT><A NAME="gettoolbar"><I>pathName</I> <B>gettoolbar</B></A>
+ <I>index</I>
+</DT><DD>
+
+Returns the pathname of the <I>index</I>th added toolbar.
+</DD></DL>
+<DL><DT><A NAME="setmenustate"><I>pathName</I> <B>setmenustate</B></A>
+ <I>tag</I>
+ <I>state</I>
+</DT><DD>
+
+Set the <B>-state</B> option value of all the menu entries that have the tag <I>tag</I>
+to <I>state</I>.
+A menu entry is disabled, if one of its associated tags have state <B>disabled</B>.
+
+</DD></DL>
+<DL><DT><A NAME="showstatusbar"><I>pathName</I> <B>showstatusbar</B></A>
+ <I>name</I>
+</DT><DD>
+
+<I>name</I> is one of <B>none</B>, <B>status</B> or <B>progression</B>.
+Use <B>none</B> to hide the status bar, <B>status</B> to display the label only, or
+<B>progression</B> to display the label and the
+<A HREF="ProgressBar.html">ProgressBar</A>.
+</DD></DL>
+<DL><DT><A NAME="showtoolbar"><I>pathName</I> <B>showtoolbar</B></A>
+ <I>index</I>
+ <I>bool</I>
+</DT><DD>
+
+Hide if <I>bool</I> is 0, or show if <I>bool</I> is 1 the <I>index</I>th added toolbar.
+To prevent your toplevel from resizing while hiding/showing toolbar,
+do [wm geometry $top [wm geometry $top]] when it is managed.
+</DD></DL>
+</BODY></HTML>
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/Dialog.html
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/Dialog.html	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/Dialog.html	(revision 3762)
@@ -0,0 +1,328 @@
+<HTML>
+<HEAD><TITLE>Dialog</TITLE></HEAD>
+<BODY BGCOLOR=white>
+<DL><DT><I><A HREF="#descr">NAME</A></I></DT>
+<DD><B>Dialog</B>
+ - Dialog abstraction with custom buttons
+</DD></DL>
+<DL>
+<DT><I>CREATION</I></DT>
+<DD><A HREF="#descr"><B>Dialog</B></A> <I>pathName</I> ?<I>option value...</I>?</DD>
+</DL>
+<DL>
+<DT><I><A HREF="ButtonBox.html">OPTIONS from <B>ButtonBox</B></A></I></DT>
+<DD><TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+<TR>
+<TD>&nbsp;&nbsp;-background or -bg</TD>
+<TD>&nbsp;&nbsp;-homogeneous</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-padx</TD>
+<TD>&nbsp;&nbsp;-pady</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-spacing</TD>
+</TABLE></DD>
+</DL>
+<DL>
+<DT><I><A HREF="#wso">WIDGET-SPECIFIC OPTIONS</A></I></DT>
+<DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-anchor">-anchor</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="#-bitmap">-bitmap</A></TR>
+</TR>
+<TR>
+
+<TD>&nbsp;&nbsp;<A HREF="#-cancel">-cancel</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-default">-default</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="#-geometry">-geometry</A></TR>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-image">-image</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="#-modal">-modal</A></TR>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-parent">-parent</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="#-place">-place</A></TR>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-separator">-separator</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="#-side">-side</A></TR>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-title">-title</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="#-transient">-transient</A></TR>
+</TR>
+</TABLE></DD>
+</DL>
+<DL>
+<DT><I><A HREF="#wc">WIDGET COMMAND</A></I></DT>
+<DD><I>pathName</I> <A HREF="#add"><B>add</B></A>
+ ?<I>arg...</I>?
+</DD>
+<DD><I>pathName</I> <A HREF="#cget"><B>cget</B></A>
+ <I>option</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#configure"><B>configure</B></A>
+ ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...?
+</DD>
+<DD><I>pathName</I> <A HREF="#draw"><B>draw</B></A>
+ ?<I>focus</I>?
+</DD>
+<DD><I>pathName</I> <A HREF="#enddialog"><B>enddialog</B></A>
+ <I>result</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#getframe"><B>getframe</B></A>
+</DD>
+<DD><I>pathName</I> <A HREF="#invoke"><B>invoke</B></A>
+ <I>index</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#itemcget"><B>itemcget</B></A>
+ <I>index</I>
+ <I>option</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#itemconfigure"><B>itemconfigure</B></A>
+ <I>index</I>
+ ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...?
+</DD>
+<DD><I>pathName</I> <A HREF="#setfocus"><B>setfocus</B></A>
+ <I>index</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#withdraw"><B>withdraw</B></A>
+</DD>
+</DL>
+<BR><HR WIDTH="100%"><BR>
+<B><A NAME="descr"></A>DESCRIPTION</B><BR>
+<P>
+
+Dialog widget enables the user to create a dialog box.
+Some commands take an <I>index</I> as argument indicating on which
+Button it work. This index is the same specified for equivalent ButtonBox command:
+<P>
+<DL COMPACT>
+<DT>
+<I>number</I>
+<DD>
+Specifies the Button numerically, where 0 corresponds
+to the first added Button, 1 to the next, and so on.
+<DT>
+<B>end</B> or <B>last</B>
+<DD>
+Indicates the last item added.
+<DT><B>default</B>
+<DD>
+Indicates the default Button.
+</DL>
+
+</P>
+<BR><HR WIDTH="50%"><BR>
+<B><A NAME="wso">WIDGET-SPECIFIC OPTIONS</A></B><BR>
+<DL><DT><A NAME="-anchor"><B>-anchor (read-only)</B></A></DT>
+<DD>
+
+Specifies the anchor point of the ButtonBox.
+Must be one of <B>w</B>, <B>e</B>, <B>n</B>, <B>s</B> or <B>c</B>.
+If <B>side</B> option is set to <I>top</I> or <I>bottom</I>,
+<B>anchor</B> values <I>n</I>, <I>s</I> and <I>c</I> have the same effect.
+If <B>side</B> option is set to <I>left</I> or <I>right</I>,
+<B>anchor</B> values <I>w</I>, <I>e</I> and <I>c</I> have the same effect.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-bitmap"><B>-bitmap (read-only)</B></A></DT>
+<DD>
+
+Specifies a bitmap to display at the left of the user frame.
+<B>image</B> option override <B>bitmap</B>.
+</DD>
+</DL>
+<DL><DT><A NAME="-cancel"><B>-cancel</B></A></DT>
+<DD>
+
+Specifies the number of the cancel button of the Dialog. When user presses Esc or the windows close button,
+this button is invoked.<BR>
+If set to <B>-1</B>, Esc does not invoke anything.
+The window close button <I>destroys</I> the dialog in this case and returns <B>-1</B>.
+</DD>
+</DL>
+<DL><DT><A NAME="-default"><B>-default</B></A></DT>
+<DD>
+
+Specifies the number of the default button of the Dialog.
+When user press Return in the Dialog, this button is invoked.
+</DD>
+</DL>
+</DL>
+<DL><DT><A NAME="-geometry"><B>-geometry</B></A></DT>
+<DD>
+
+Set the <B>geometry</B> used when method <B>draw</B> is called.
+See <B>wm geometry</B> for a parameter description.
+</DD>
+</DL>
+<DL><DT><A NAME="-image"><B>-image (read-only)</B></A></DT>
+<DD>
+
+Specifies an image to display at the left of the user frame.
+<B>image</B> option override <B>bitmap</B>.
+</DD>
+</DL>
+<DL><DT><A NAME="-modal"><B>-modal</B></A></DT>
+<DD>
+
+This option must be <B>none</B>, <B>local</B> or <B>global</B>. The value of this option
+specifies the grab mode of the dialog and how works Dialog::<B>draw</B>.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-parent"><B>-parent</B></A></DT>
+<DD>
+
+Parent of the Dialog. Dialog is placed relative to its parent. If empty, it is
+placed relative to the root window. Also see <B>place</B> option.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-place"><B>-place</B></A></DT>
+<DD>
+Specifies where to draw the Dialog toplevel relative to the dialog's
+parent. Must be one of <B>none</B>, <B>center</B>, <B>left</B>, <B>right</B>,
+<B>above</B>, <B>below</B>. Default value of <B>place</B> is <I>center</I>.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-separator"><B>-separator (read-only)</B></A></DT>
+<DD>
+
+Specifies wether or not to draw a separator between the user frame and the ButtonBox.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-side"><B>-side (read-only)</B></A></DT>
+<DD>
+
+Specifies where to draw the ButtonBox relative to the user frame. Must be one of
+<B>top</B>, <B>left</B>, <B>bottom</B> or <B>right</B>.
+</DD>
+</DL>
+<DL><DT><A NAME="-title"><B>-title</B></A></DT>
+<DD>
+
+Title of the Dialog toplevel.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-transient"><B>-transient (read-only)</B></A></DT>
+<DD>
+
+Specifies if the Dialog Toplevel should be a transient window or not. Default
+value of <B>transient</B> is <I>true</I>.
+
+</DD>
+</DL>
+<HR WIDTH="50%"><BR>
+<B><A NAME="wc">WIDGET COMMAND</A></B><BR>
+<DL><DT><A NAME="add"><I>pathName</I> <B>add</B></A>
+ ?<I>arg...</I>?
+</DT><DD>
+
+Add a button to the button box of the dialog box. Default -command option is
+<I>Dialog::enddialog $path index</I> where <I>index</I> is number of button added.
+</DD></DL>
+<DL><DT><A NAME="cget"><I>pathName</I> <B>cget</B></A>
+ <I>option</I>
+</DT><DD>
+
+Returns the current value of the configuration option given by <I>option</I>.
+<I>Option</I> may have any of the values accepted by the creation command.
+</DD></DL>
+<DL><DT><A NAME="configure"><I>pathName</I> <B>configure</B></A>
+ ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...?
+</DT><DD>
+
+Query or modify the configuration options of the widget. If no <I>option</I> is specified,
+returns a list describing all of the available options for <I>pathName</I>.
+If <I>option</I> is specified with no <I>value</I>, then the command returns a list
+describing the one named <I>option</I> (this list will be identical to the corresponding
+sublist of the value returned if no <I>option</I> is specified). If one or
+more <I>option-value</I> pairs are specified, then the command modifies the given widget
+option(s) to have the given value(s); in this case the command returns an empty string.
+<I>Option</I> may have any of the values accepted by the creation command.
+Read-only options are not be modified.
+
+</DD></DL>
+<DL><DT><A NAME="draw"><I>pathName</I> <B>draw</B></A>
+ ?<I>focus</I>?
+</DT><DD>
+
+This command draw the Dialog, and set grab to it following <B>modal</B> option.
+If <B>modal</B> option is set to <I>none</I>, the command returns immediatly
+an empty string. In all other case, the command returns when Dialog::<B>enddialog</B>
+is called or when Dialog is destroyed.
+The return value is the result argument of Dialog::<B>enddialog</B> or -1 if it is destroyed.
+<P>
+By default, the focus is set to the default button referenced by <B>default</B> option,
+or to the toplevel of Dialog if no default button has been set.
+If <I>focus</I> is present, it must be a pathname, or an index to a button.
+Initial focus is set on this pathname or corresponding button.
+
+</DD></DL>
+<DL><DT><A NAME="enddialog"><I>pathName</I> <B>enddialog</B></A>
+ <I>result</I>
+</DT><DD>
+
+This command is typically called within a command of a button to make Dialog::<B>draw</B>
+return.
+
+</DD></DL>
+<DL><DT><A NAME="getframe"><I>pathName</I> <B>getframe</B></A>
+</DT><DD>
+
+Returns the pathname of the user window.
+</DD></DL>
+<DL><DT><A NAME="invoke"><I>pathName</I> <B>invoke</B></A>
+ <I>index</I>
+</DT><DD>
+
+Invoke the Button given by <I>index</I>.
+
+</DD></DL>
+<DL><DT><A NAME="itemcget"><I>pathName</I> <B>itemcget</B></A>
+ <I>index</I>
+ <I>option</I>
+</DT><DD>
+
+Returns the current value of a configuration option for the item.
+<I>Option</I> may have any of the values accepted by the item creation command.
+
+</DD></DL>
+<DL><DT><A NAME="itemconfigure"><I>pathName</I> <B>itemconfigure</B></A>
+ <I>index</I>
+ ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...?
+</DT><DD>
+
+This command is similar to the <B>configure</B> command, except that it applies to the
+options for an individual item, whereas <B>configure</B> applies to the options for
+the widget as a whole. <B>Options</B> may have any of the values accepted by the 
+item creation widget command. If options are specified, options are modified as indicated
+in the command and the command returns an empty string. If no options are specified,
+returns a list describing the current options for the item.
+Read-only options are not be modified.
+
+</DD></DL>
+<DL><DT><A NAME="setfocus"><I>pathName</I> <B>setfocus</B></A>
+ <I>index</I>
+</DT><DD>
+
+Set the focus to the Button given by <I>index</I>.
+
+</DD></DL>
+<DL><DT><A NAME="withdraw"><I>pathName</I> <B>withdraw</B></A>
+</DT><DD>
+
+Call this command to hide the dialog box.
+
+</DD></DL>
+</BODY></HTML>
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/SelectFont.html
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/SelectFont.html	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/SelectFont.html	(revision 3762)
@@ -0,0 +1,152 @@
+<HTML>
+<HEAD><TITLE>SelectFont</TITLE></HEAD>
+<BODY BGCOLOR=white>
+<DL><DT><I><A HREF="#descr">NAME</A></I></DT>
+<DD><B>SelectFont</B>
+ - Font selection widget
+</DD></DL>
+<DL>
+<DT><I>CREATION</I></DT>
+<DD><A HREF="#descr"><B>SelectFont</B></A> <I>pathName</I> ?<I>option value...</I>?</DD>
+</DL>
+<DL>
+<DT><I>STANDARD OPTIONS</I></DT>
+<DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-background">-background or -bg</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-font">-font</A></TR>
+</TR>
+</TABLE></DD>
+</DL>
+<DL>
+<DT><I><A HREF="#wso">WIDGET-SPECIFIC OPTIONS</A></I></DT>
+<DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-command">-command</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="#-initialcolor">-initialcolor</A></TR>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-nosizes">-nosizes</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="#-parent">-parent</A></TR>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-sampletext">-sampletext</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="#-title">-title</A></TR>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-type">-type</A></TR>
+</TABLE></DD>
+</DL>
+<DL>
+<DT><I><A HREF="#wc">WIDGET COMMAND</A></I></DT>
+<DD><I>pathName</I> <A HREF="#cget"><B>cget</B></A>
+ <I>option</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#configure"><B>configure</B></A>
+ ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...?
+</DD>
+<DD>SelectFont::<A HREF="#loadfont"><B>loadfont</B></A>
+</DD>
+</DL>
+<BR><HR WIDTH="100%"><BR>
+<B><A NAME="descr"></A>DESCRIPTION</B><BR>
+<P>
+
+SelectFont provides a simple way to choose font. It can be displayed
+as a dialog box or as a toolbar.
+<BR>Textual items in Dialog box uses <B>-name</B> options so they
+can be translated to any language. Symbolic name used are
+<B>ok</B>, <B>cancel</B>, <B>font</B>, <B>size</B>, <B>style</B>,
+<B>bold</B>, <B>italic</B>, <B>underline</B> and <B>overstrike</B>.
+
+</P>
+<BR><HR WIDTH="50%"><BR>
+<B><A NAME="wso">WIDGET-SPECIFIC OPTIONS</A></B><BR>
+<DL><DT><A NAME="-command"><B>-command</B></A></DT>
+<DD>
+
+Specifies a command to call when user select a new font when SelectFont <B>type</B>
+option is <I>toolbar</I>.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-initialcolor"><B>-initialcolor</B></A></DT>
+<DD>
+
+If specified, add an additional button that lets the user pick a
+color.  This option is ignored if <B>type</B> is <I>toolbar</I>.
+</DD>
+</DL>
+<DL><DT><A NAME="-nosizes"><B>-nosizes</B></A></DT>
+<DD>
+
+If true, don't show the listbox containing valid font sizes.  This
+option is ignored if <B>type</B> is <I>toolbar</I>.
+</DD>
+</DL>
+<DL><DT><A NAME="-parent"><B>-parent</B></A></DT>
+<DD>
+
+Parent of the Dialog. Dialog is centered in its parent. If empty, it is centered in
+root window.
+</DD>
+</DL>
+<DL><DT><A NAME="-sampletext"><B>-sampletext</B></A></DT>
+<DD>
+
+Specifies the text displayed in the preview area.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-title"><B>-title</B></A></DT>
+<DD>
+
+Title of the Dialog toplevel.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-type"><B>-type</B></A></DT>
+<DD>
+
+Specifies the type of the SelectFont widget. Must be <B>dialog</B> or <B>toolbar</B>.
+<BR>If <B>type</B> option is <I>dialog</I>, SelectFont::<B>create</B> directly creates the 
+dialog, displays it and return an empty string if cancel button is
+pressed or if dialog is destroyed, and the selected font (and color
+if <B>initialcolor</B>) if ok button is pressed. In all cases, dialog
+is destroyed.
+<BR>If <B>type</B> option is <I>toolbar</I>, SelectFont::<B>create</B> returns the pathname
+of the widget created.
+
+</DD>
+</DL>
+<HR WIDTH="50%"><BR>
+<B><A NAME="wc">WIDGET COMMAND</A></B><BR>
+<DL><DT><A NAME="cget"><I>pathName</I> <B>cget</B></A>
+ <I>option</I>
+</DT><DD>
+
+Returns the current value of the configuration option given by <I>option</I>.
+<I>Option</I> may have any of the values accepted by the creation command.
+</DD></DL>
+<DL><DT><A NAME="configure"><I>pathName</I> <B>configure</B></A>
+ ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...?
+</DT><DD>
+
+Query or modify the configuration options of the widget. If no <I>option</I> is specified,
+returns a list describing all of the available options for <I>pathName</I>.
+If <I>option</I> is specified with no <I>value</I>, then the command returns a list
+describing the one named <I>option</I> (this list will be identical to the corresponding
+sublist of the value returned if no <I>option</I> is specified). If one or
+more <I>option-value</I> pairs are specified, then the command modifies the given widget
+option(s) to have the given value(s); in this case the command returns an empty string.
+<I>Option</I> may have any of the values accepted by the creation command.
+Read-only options are not be modified.
+
+</DD></DL>
+<DL><DT><A NAME="loadfont">SelectFont::<B>loadfont</B></A>
+</DT><DD>
+
+Load the font available in the system.
+
+</DD></DL>
+</BODY></HTML>
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/index.html
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/index.html	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/index.html	(revision 3762)
@@ -0,0 +1,7 @@
+<HTML>
+<HEAD><TITLE>BWidget Manual Pages</TITLE></HEAD>
+  <FRAMESET COLS="180,*" BORDER=0>
+    <FRAME SRC=navtree.html NAME="Menu" SCROLLING=AUTO>
+      <FRAME SRC=contents.html NAME="Manual" SCROLLING=AUTO>
+  </FRAMESET>
+</HTML>
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/StatusBar.html
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/StatusBar.html	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/StatusBar.html	(revision 3762)
@@ -0,0 +1,147 @@
+<HTML>
+<HEAD><TITLE>StatusBar</TITLE></HEAD>
+<BODY BGCOLOR=white>
+<DL><DT><I><A HREF="#descr">NAME</A></I></DT>
+<DD><B>StatusBar</B>
+ - status bar widget
+</DD></DL>
+<DL>
+<DT><I>CREATION</I></DT>
+<DD><A HREF="#descr"><B>StatusBar</B></A> <I>pathName</I> ?<I>option value...</I>?</DD>
+</DL>
+<DL>
+<DT><I>STANDARD OPTIONS</I></DT>
+<DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-background">-background or -bg</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-borderwidth">-borderwidth or -bd</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-foreground">-foreground or -fg</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-orient">-orient</A></TR>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-relief">-relief</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-troughcolor">-troughcolor</A></TR>
+</TR>
+</TABLE></DD>
+</DL>
+<DL>
+<DT><I><A HREF="#wso">WIDGET-SPECIFIC OPTIONS</A></I></DT>
+<DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-height">-height</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="#-showresize">-showresize</A></TR>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-ipad">-ipad</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="#-pad">-pad</A></TR>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-width">-width</A>
+</TR>
+</TABLE></DD>
+</DL>
+<DL>
+<DT><I><A HREF="#wc">WIDGET COMMAND</A></I></DT>
+<DD><I>pathName</I> <A HREF="#cget"><B>cget</B></A>
+ <I>option</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#configure"><B>configure</B></A>
+ ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...?
+</DD>
+</DL>
+<BR><HR WIDTH="100%"><BR>
+<B><A NAME="descr"></A>DESCRIPTION</B><BR>
+
+<P>
+StatusBar widget is a simple container widget with a corner resize control,
+meant to be placed at the bottom of a toplevel dialog.
+</P>
+
+<BR><HR WIDTH="50%"><BR>
+<B><A NAME="wso">WIDGET-SPECIFIC OPTIONS</A></B><BR>
+<DL><DT><A NAME="-height"><B>-height</B></A></DT>
+<DD>
+Specifies the desired height for the widget.
+</DD>
+</DL>
+<DL><DT><A NAME="-showresize"><B>-showresize</B></A></DT>
+<DD>
+Specifies whether to show the corner resize control.
+</DD>
+</DL>
+<DL><DT><A NAME="-pad"><B>-pad</B></A></DT>
+<DD>
+The spacing to place around the status bar.
+</DD>
+</DL>
+<DL><DT><A NAME="-ipad"><B>-ipad</B></A></DT>
+<DD>
+The spacing to place around individual status bar items.
+</DD>
+</DL>
+<DL><DT><A NAME="-width"><B>-width</B></A></DT>
+<DD>
+Specifies the desired width for the widget.
+</DD>
+</DL>
+
+<HR WIDTH="50%"><BR>
+<B><A NAME="wc">WIDGET COMMAND</A></B><BR>
+<DL><DT><A NAME="add"><I>pathName</I> <B>add</B></A> <B>widget</B>
+ ?<I>option</I> <I>value</I> <I>option</I> <I>value</I> ...?
+</DT><DD>
+Add a widget to the status bar. Possible options are:
+<DL>
+<DT><B>-weight</B></DT>
+<DD>Weighting of this item for resizing (passed to <B>grid</B>).</DD>
+<DT><B>-separator</B></DT>
+<DD>Whether to use a separator for this item.</DD>
+<DT><B>-sticky</B></DT>
+<DD>Passed on to grid.</DD>
+<DT><B>-pad</B></DT>
+<DD>Override of the widget's <B>-ipad</B> option for this item.</DD>
+</DL>
+</DD>
+</DL>
+<DL><DT><A NAME="cget"><I>pathName</I> <B>cget</B></A>
+ <I>option</I>
+</DT><DD>
+Returns the current value of the configuration option given by <I>option</I>.
+<I>Option</I> may have any of the values accepted by the creation command.
+</DD>
+</DL>
+<DL><DT><A NAME="configure"><I>pathName</I> <B>configure</B></A>
+ ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...?
+</DT><DD>
+
+Query or modify the configuration options of the widget. If no
+<I>option</I> is specified, returns a list describing all of the available
+options for <I>pathName</I>.  If <I>option</I> is specified with no
+<I>value</I>, then the command returns a list describing the one named
+<I>option</I> (this list will be identical to the corresponding sublist of
+the value returned if no <I>option</I> is specified). If one or more
+<I>option-value</I> pairs are specified, then the command modifies the
+given widget option(s) to have the given value(s); in this case the command
+returns an empty string.
+<I>Option</I> may have any of the values accepted by the creation command.
+Read-only options are not be modified.
+</DD>
+</DL>
+<DL><DT><A NAME="delete"><I>pathName</I> <B>delete</B></A>
+<B>widget</B> ?<I>widget</I> ...?
+</DT><DD>
+Delete a widget and associated state from the status bar.</DD>
+</DL>
+<DL><DT><A NAME="getframe"><I>pathName</I> <B>getframe</B></A>
+</DT><DD>
+Get the frame widget for the status bar in which status bar items should be
+created.</DD>
+</DD>
+</DL>
+<DL><DT><A NAME="items"><I>pathName</I> <B>items</B></A>
+</DT><DD>List of items in the status bar.</DD>
+<DL>
+
+</BODY></HTML>
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/PanelFrame.html
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/PanelFrame.html	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/PanelFrame.html	(revision 3762)
@@ -0,0 +1,153 @@
+<HTML>
+<HEAD><TITLE>PanelFrame</TITLE></HEAD>
+<BODY BGCOLOR=white>
+<DL><DT><I><A HREF="#descr">NAME</A></I></DT>
+<DD><B>PanelFrame</B>
+ - Frame with a boxed title area
+</DD></DL>
+<DL>
+<DT><I>CREATION</I></DT>
+<DD><A HREF="#descr"><B>PanelFrame</B></A> <I>pathName</I> ?<I>option value...</I>?</DD>
+</DL>
+<DL>
+<DT><I>STANDARD OPTIONS</I></DT>
+<DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-background">-background or -bg</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-borderwidth">-borderwidth or -bd</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-text">-text</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-textvariable">-textvariable</A></TR>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-font">-font</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-relief">-relief</A></TD>
+</TR>
+</TABLE></DD>
+</DL>
+<DL>
+<DT><I><A HREF="#wso">WIDGET-SPECIFIC OPTIONS</A></I></DT>
+<DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-height">-height</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="#-width">-width</A></TR>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-panelbackground">-panelbackground</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="#-panelforeground">-panelforeground</A></TR>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-ipad">-ipad</A></TR>
+</TR>
+</TABLE></DD>
+</DL>
+<DL>
+<DT><I><A HREF="#wc">WIDGET COMMAND</A></I></DT>
+<DD><I>pathName</I> <A HREF="#cget"><B>cget</B></A>
+ <I>option</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#configure"><B>configure</B></A>
+ ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...?
+</DD>
+</DL>
+<BR><HR WIDTH="100%"><BR>
+<B><A NAME="descr"></A>DESCRIPTION</B><BR>
+
+<P>
+PanelFrame creates a frame area with a boxed title area.  The boxed title
+area contains a label ands allows for other items to be placed in it.  This
+can serve like a mini-toolbar.
+</P>
+
+<BR><HR WIDTH="50%"><BR>
+<B><A NAME="wso">WIDGET-SPECIFIC OPTIONS</A></B><BR>
+<DL><DT><A NAME="-height"><B>-height</B></A></DT>
+<DD>
+Specifies the desired height for the widget.
+</DD>
+<DT><A NAME="-ipad"><B>-ipad</B></A></DT>
+<DD>
+The spacing to place around individual panel area items.
+</DD>
+<DT><A NAME="-panelbackground"><B>-panelbackground</B></A></DT>
+<DD>
+The color for the panel area background.
+Defaults to the selection highlight background color.
+</DD>
+<DT><A NAME="-panelforeground"><B>-panelforeground</B></A></DT>
+<DD>
+The color for the title text.
+Defaults to the selection highlight foreground color.
+</DD>
+<DT><A NAME="-width"><B>-width</B></A></DT>
+<DD>
+Specifies the desired width for the widget.
+</DD>
+</DL>
+
+<HR WIDTH="50%"><BR>
+<B><A NAME="wc">WIDGET COMMAND</A></B><BR>
+<DL><DT><A NAME="add"><I>pathName</I> <B>add</B></A> <B>widget</B>
+ ?<I>option</I> <I>value</I> <I>option</I> <I>value</I> ...?
+</DT><DD>
+Add a widget to the panel. Widgets are <B>pack</B>ed in.
+Possible options are:
+<DL>
+<DT><B>-side</B></DT>
+<DD>Side to place item on (defaults to <B>right</B>).</DD>
+<DT><B>-fill</B></DT>
+<DD>Whether to fill space (defaults to <B>none</B>).</DD>
+<DT><B>-expand</B></DT>
+<DD>Whether to expand space (defaults to <B>0</B>).</DD>
+<DT><B>-pad</B></DT>
+<DD>Override of the widget's <B>-ipad</B> option for this item.</DD>
+</DL>
+</DD>
+</DL>
+<DL><DT><A NAME="cget"><I>pathName</I> <B>cget</B></A>
+ <I>option</I>
+</DT><DD>
+Returns the current value of the configuration option given by <I>option</I>.
+<I>Option</I> may have any of the values accepted by the creation command.
+</DD>
+</DL>
+<DL><DT><A NAME="configure"><I>pathName</I> <B>configure</B></A>
+ ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...?
+</DT><DD>
+
+Query or modify the configuration options of the widget. If no
+<I>option</I> is specified, returns a list describing all of the available
+options for <I>pathName</I>.  If <I>option</I> is specified with no
+<I>value</I>, then the command returns a list describing the one named
+<I>option</I> (this list will be identical to the corresponding sublist of
+the value returned if no <I>option</I> is specified). If one or more
+<I>option-value</I> pairs are specified, then the command modifies the
+given widget option(s) to have the given value(s); in this case the command
+returns an empty string.
+<I>Option</I> may have any of the values accepted by the creation command.
+Read-only options are not be modified.
+</DD>
+</DL>
+<DL><DT><A NAME="delete"><I>pathName</I> <B>delete</B></A>
+<B>widget</B> ?<I>widget</I> ...?
+</DT><DD>
+Delete a widget and associated state from the panel.</DD>
+</DL>
+<DL><DT><A NAME="getframe"><I>pathName</I> <B>getframe</B></A>
+</DT><DD>
+Get the frame widget for the status bar in which status bar items should be
+created.</DD>
+</DD>
+</DL>
+<DL><DT><A NAME="items"><I>pathName</I> <B>items</B></A>
+</DT><DD>List of items in the status bar.</DD>
+<DL>
+<DL><DT><A NAME="remove"><I>pathName</I> <B>remove</B></A>
+<B>widget</B> ?<I>widget</I> ...?
+</DT><DD>
+Remove a widget item and associated state from the panel without destroying
+the item.</DD>
+</DL>
+
+</BODY></HTML>
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/Button.html
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/Button.html	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/Button.html	(revision 3762)
@@ -0,0 +1,307 @@
+<HTML>
+<HEAD><TITLE>Button</TITLE></HEAD>
+<BODY BGCOLOR=white>
+<DL><DT><I><A HREF="#descr">NAME</A></I></DT>
+<DD><B>Button</B>
+ - Button widget with enhanced options
+</DD></DL>
+<DL>
+<DT><I>CREATION</I></DT>
+<DD><A HREF="#descr"><B>Button</B></A> <I>pathName</I> ?<I>option value...</I>?</DD>
+</DL>
+<DL>
+<DT><I>STANDARD OPTIONS</I></DT>
+<DT><I>Not themed</I></DT>
+<DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-activebackground">-activebackground</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-activeforeground">-activeforeground</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-anchor">-anchor</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-background">-background or -bg</A></TD>
+</TD>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-bitmap">-bitmap</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-borderwidth">-borderwidth or -bd</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-cursor">-cursor</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-disabledforeground">-disabledforeground</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-font">-font</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-foreground">-foreground or -fg</A></TD>
+</TD>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-highlightbackground">-highlightbackground</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-highlightcolor">-highlightcolor</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-highlightthickness">-highlightthickness</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-image">-image</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-justify">-justify</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-padx">-padx</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-pady">-pady</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-repeatdelay">-repeatdelay</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-repeatinterval">-repeatinterval</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-takefocus">-takefocus</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-text">-text</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-textvariable">-textvariable</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-wraplength">-wraplength</A></TD>
+</TABLE></DD>
+<DT><I>Themed</I></DT>
+<DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-compound">-compound</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-cursor">-cursor</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-image">-image</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-style">-style</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-repeatdelay">-repeatdelay</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-repeatinterval">-repeatinterval</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-takefocus">-takefocus</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-text">-text</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-textvariable">-textvariable</A></TD>
+</TABLE></DD>
+</DL>
+<DL>
+<DT><I><A HREF="#wso">WIDGET-SPECIFIC OPTIONS</A></I></DT>
+<DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-armcommand">-armcommand</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="#-command">-command</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-default">-default</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="#-disarmcommand">-disarmcommand</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-height">-height</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="#-helptext">-helptext</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-helptype">-helptype</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="#-helpvar">-helpvar</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-name">-name</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="#-relief">-relief</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-state">-state</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="#-underline">-underline</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-width">-width</A></TD>
+</TABLE></DD>
+</DL>
+<DL>
+<DT><I><A HREF="#wc">WIDGET COMMAND</A></I></DT>
+<DD><I>pathName</I> <A HREF="#cget"><B>cget</B></A>
+ <I>option</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#configure"><B>configure</B></A>
+ ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...?
+</DD>
+<DD><I>pathName</I> <A HREF="#invoke"><B>invoke</B></A>
+</DD>
+</DL>
+<BR><HR WIDTH="100%"><BR>
+<B><A NAME="descr"></A>DESCRIPTION</B><BR>
+<P>
+
+Button widget extends the Tk button with new options.
+<A HREF="DynamicHelp.html">DynamicHelp</A> options,
+a new relief style, callback for <B>arm</B>/<B>disarm</B>, and
+<B>repeatdelay</B>/<B>repeatinterval</B> options has been added.
+</P>
+<BR><HR WIDTH="50%"><BR>
+<B><A NAME="wso">WIDGET-SPECIFIC OPTIONS</A></B><BR>
+<DL><DT><A NAME="-armcommand"><B>-armcommand</B></A></DT>
+<DD>
+
+Specifies a Tcl command to associate with the Button when mouse button 1 is pressed over the
+Button. When <B>repeatdelay</B> or <B>repeatinterval</B> option is positive integer,
+this command is repeatedly called if mouse pointer is over the Button and until mouse
+button 1 is released.
+</DD>
+</DL>
+<DL><DT><A NAME="-command"><B>-command</B></A></DT>
+<DD>
+
+Specifies a Tcl command to associate with the Button.  This command
+is typically invoked when mouse button 1 is released over the Button
+window.
+</DD>
+</DL>
+<DL><DT><A NAME="-default"><B>-default</B></A></DT>
+<DD>
+
+Specifies one of three states for the default ring: <B>normal</B>, <B>active</B>,
+or <B>disabled</B>. In active state, the button is drawn with the platform specific
+appearance for a default button. In normal state, the button is drawn with the platform
+specific appearance for a non-default button, leaving enough space to draw the default
+button appearance. The normal and active states will result in buttons of the same size.
+In disabled state, the button is drawn with the non-default button appearance without
+leaving space for the default appearance. The disabled state may result
+in a smaller button than the active state.
+</DD>
+</DL>
+<DL><DT><A NAME="-disarmcommand"><B>-disarmcommand</B></A></DT>
+<DD>
+
+Specifies a Tcl command to associate with the Button when mouse button 1 is released.
+This command is called even if pointer is not over the Button, and always before
+the command specified by <B>command</B> option.
+It is typically used in conjuntion with <B>armcommand</B>, <B>repeatdelay</B> and
+<B>repeatinterval</B>.
+</DD>
+</DL>
+<DL><DT><A NAME="-height"><B>-height</B></A></DT>
+<DD>
+
+Specifies a desired height for the Button.
+If an image or bitmap is being displayed in the Button then the value is in
+screen units;
+for text it is in lines of text.
+If this option isn't specified, the Button's desired height is computed
+from the size of the image or bitmap or text being displayed in it.<BR>
+Option not available when widget is <I>themed</I>.
+</DD>
+</DL>
+<DL><DT><A NAME="-helptext"><B>-helptext</B></A></DT>
+<DD>
+
+Text for dynamic help. If empty, no help is available for this widget.
+See also <A HREF="DynamicHelp.html">DynamicHelp</A>.
+</DD>
+</DL>
+<DL><DT><A NAME="-helptype"><B>-helptype</B></A></DT>
+<DD>
+Type of dynamic help. Use <I>balloon</I> or <I>variable</I>.
+See also <A HREF="DynamicHelp.html">DynamicHelp</A>.
+</DD>
+</DL>
+<DL><DT><A NAME="-helpvar"><B>-helpvar</B></A></DT>
+<DD>
+Variable to use when <B>helptype</B> option is <I>variable</I>.
+See also <A HREF="DynamicHelp.html">DynamicHelp</A>.
+</DD>
+</DL>
+<DL><DT><A NAME="-name"><B>-name</B></A></DT>
+<DD>
+
+Specifies a standard name for the button. If the option <B>*<I>name</I>Name</B> is
+found in the resources database, then <B>text</B> and <B>underline</B> options
+are extracted from its value.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-relief"><B>-relief</B></A></DT>
+<DD>
+
+Specifies the 3-D effect desired for the widget. Acceptable values are standard values for
+button relief (<B>raised</B>, <B>sunken</B>, <B>flat</B>, <B>ridge</B>, <B>solid</B>, and <B>groove</B>) and <B>link</B>, which specifies that button relief is <B>flat</B> when pointer
+is outside the button and <B>raised</B> when pointer is inside.<BR>
+This option has only the following effect if the widget is <I>themed</I>:
+The value <B>link</B> used a style <B>Toolbutton</B> while any other value uses the standard effect.
+</DD>
+</DL>
+<DL><DT><A NAME="-state"><B>-state</B></A></DT>
+<DD>
+
+Specifies one of three states for the Button:  <B>normal</B>, <B>active</B>,
+or <B>disabled</B>.  In normal state the Button is displayed using the
+<B>foreground</B> and <B>background</B> options.  The active state is
+typically used when the pointer is over the Button.  In active state
+the Button is displayed using the <B>activeforeground</B> and
+<B>activebackground</B> options.  Disabled state means that the Button
+should be insensitive:  the default bindings will refuse to activate
+the widget and will ignore mouse button presses.
+In this state the <B>disabledforeground</B> and
+<B>background</B> options determine how the Button is displayed.
+</DD>
+</DL>
+<DL><DT><A NAME="-underline"><B>-underline</B></A></DT>
+<DD>
+
+Specifies the integer index of a character to underline in the label of the button.
+0 corresponds to the first character of the text displayed, 1 to the next character,
+and so on.
+<BR>The binding <B>&lt;Alt-<I>char</I>&gt;</B> is automatically set on the toplevel
+of the Button to call Button::<B>setfocus</B>.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-width"><B>-width</B></A></DT>
+<DD>
+
+If an image or bitmap is being displayed in the Button then the value is in
+screen units;
+for text it is in characters.
+If this option isn't specified, the Button's desired width is computed
+from the size of the image or bitmap or text being displayed in it.
+</DD>
+</DL>
+<HR WIDTH="50%"><BR>
+<B><A NAME="wc">WIDGET COMMAND</A></B><BR>
+<DL><DT><A NAME="cget"><I>pathName</I> <B>cget</B></A>
+ <I>option</I>
+</DT><DD>
+
+Returns the current value of the configuration option given by <I>option</I>.
+<I>Option</I> may have any of the values accepted by the creation command.
+</DD></DL>
+<DL><DT><A NAME="configure"><I>pathName</I> <B>configure</B></A>
+ ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...?
+</DT><DD>
+
+Query or modify the configuration options of the widget. If no <I>option</I> is specified,
+returns a list describing all of the available options for <I>pathName</I>.
+If <I>option</I> is specified with no <I>value</I>, then the command returns a list
+describing the one named <I>option</I> (this list will be identical to the corresponding
+sublist of the value returned if no <I>option</I> is specified). If one or
+more <I>option-value</I> pairs are specified, then the command modifies the given widget
+option(s) to have the given value(s); in this case the command returns an empty string.
+<I>Option</I> may have any of the values accepted by the creation command.
+Read-only options are not be modified.
+
+</DD></DL>
+<DL><DT><A NAME="invoke"><I>pathName</I> <B>invoke</B></A>
+</DT><DD>
+
+If Button <B>state</B> is not disabled, this invoke the commands of the Button.
+Button is redisplayed with active color and sunken relief, and
+<B>armcommand</B> is called. Then Button is redisplayed with
+normal color and its defined relief, and <B>disarmcommand</B> then <B>command</B>
+are called.
+<P><B>invoke</B> is called when Button has input focus and user press the space bar.
+
+</DD></DL>
+<HR WIDTH="50%"><BR>
+<B><A NAME="wc">BINDINGS</A></B><BR>
+<DL><DT><A NAME="Invoke"><I>&lt;&lt;Invoke&gt;&gt;</I></A>
+</DT><DD>
+
+Invoke the <B>invoke</B> widget command.
+</DD></DL>
+<HR WIDTH="50%"><BR>
+</BODY></HTML>
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/MessageDlg.html
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/MessageDlg.html	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/MessageDlg.html	(revision 3762)
@@ -0,0 +1,221 @@
+<HTML>
+<HEAD><TITLE>MessageDlg</TITLE></HEAD>
+<BODY BGCOLOR=white>
+<DL><DT><I><A HREF="#descr">NAME</A></I></DT>
+<DD><B>MessageDlg</B>
+ - Message dialog box
+</DD></DL>
+<DL>
+<DT><I>CREATION</I></DT>
+<DD><A HREF="#descr"><B>MessageDlg</B></A> <I>pathName</I> ?<I>option value...</I>?</DD>
+</DL>
+<DL>
+<DT><I>STANDARD OPTIONS</I></DT>
+<DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-anchor">-anchor</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-font">-font</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-foreground">-foreground or -fg</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-padx">-padx</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-pady">-pady</A></TD>
+</TABLE></DD>
+</DL>
+<DL>
+<DT><I><A HREF="Dialog.html">OPTIONS from <B>Dialog</B></A></I></DT>
+<DD><TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+<TR>
+<TD>&nbsp;&nbsp;-background or -bg</TD>
+<TD>&nbsp;&nbsp;-cancel</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-default</TD>
+<TD>&nbsp;&nbsp;-parent</TD>
+</TR>
+</TABLE></DD>
+</DL>
+<DL>
+<DT><I><A HREF="#wso">WIDGET-SPECIFIC OPTIONS</A></I></DT>
+<DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-aspect">-aspect</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="#-buttons">-buttons</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-buttonwidth">-buttonwidth</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="#-icon">-icon</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-justify">-justify</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="#-message">-message</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-title">-title</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="#-type">-type</A></TD>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-width">-width</A></TD>
+</TR>
+</TR>
+</TABLE></DD>
+</DL>
+<BR><HR WIDTH="100%"><BR>
+<B><A NAME="descr"></A>DESCRIPTION</B><BR>
+<P>
+
+MessageDlg provides a simple way to display a message dialog.
+MessageDlg::<B>create</B> creates the message dialog, displays
+it and return the index of the pressed button, or -1 if it is destroyed.
+When returning, the dialog no longer exists.
+
+</P>
+<BR><HR WIDTH="50%"><BR>
+<B><A NAME="wso">WIDGET-SPECIFIC OPTIONS</A></B><BR>
+<DL><DT><A NAME="-aspect"><B>-aspect</B></A></DT>
+<DD>
+
+Specifies a non-negative integer value indicating desired
+aspect ratio for the text.  The aspect ratio is specified as
+100*width/height.  100 means the text should
+be as wide as it is tall, 200 means the text should
+be twice as wide as it is tall, 50 means the text should
+be twice as tall as it is wide, and so on.
+Used to choose line length for text if <B>width</B> option
+isn't specified.
+Defaults to 150.
+
+The options <B>-width</B> and <B>-aspect</B> are directly heritated from the Tk message widget.
+</DD>
+</DL>
+<DL><DT><A NAME="-buttons"><B>-buttons</B></A></DT>
+<DD>
+
+Specifies a list of buttons to display when <B>type</B> option is <I>user</I>.
+If a button has a symbolic name, its associated text will be displayed.
+
+</DD>
+</DL>
+
+<DL><DT><A NAME="-buttonwidth"><B>-buttonwidth</B></A></DT>
+<DD>
+    Specifies the standard width of the buttons in the dialog.
+</DD>
+</DL>
+
+<DL><DT><A NAME="-icon"><B>-icon</B></A></DT>
+<DD>
+
+Specifies an icon to display. Must be one of the following: <B>error</B>, <B>info</B>,
+<B>question</B> or <B>warning</B>.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-justify"><B>-justify</B></A></DT>
+<DD>
+
+Specifies how to justify lines of text.
+Must be one of <B>left</B>, <B>center</B>, or <B>right</B>.  Defaults
+to <B>left</B>.
+This option works together with the <B>anchor</B>, <B>aspect</B>,
+<B>padx</B>, <B>pady</B>, and <B>width</B> options to provide a variety
+of arrangements of the text within the window.
+The <B>aspect</B> and <B>width</B> options determine the amount of
+screen space needed to display the text.
+The <B>anchor</B>, <B>padx</B>, and <B>pady</B> options determine where this
+rectangular area is displayed within the widget's window, and the
+<B>justify</B> option determines how each line is displayed within that
+rectangular region.
+For example, suppose <B>anchor</B> is <B>e</B> and <B>justify</B> is
+<B>left</B>, and that the message window is much larger than needed
+for the text.
+The the text will displayed so that the left edges of all the lines
+line up and the right edge of the longest line is <B>padx</B> from
+the right side of the window;  the entire text block will be centered
+in the vertical span of the window.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-message"><B>-message</B></A></DT>
+<DD>
+
+Specifies the message to display in this message box.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-title"><B>-title</B></A></DT>
+<DD>
+
+Specifies a string to display as the title of the message box.
+If the value is empty (the default), a default title will be set corresponding
+to the <B>icon</B> option.
+The default associated title is in english, and can be modified to set it in
+another language by specifying the resource:
+<PRE>    *MessageDlg.<I>name</I>Title:   <I>value</I></PRE>
+or the equivalent tcl command:
+<PRE>    option add *MessageDlg.<I>name</I>Title <I>value</I></PRE>
+where <I>name</I> is the name of an icon as defined in the <B>icon</B> option.
+<BR>For example, for french language, you can specify for a warning dialog:
+<PRE>    option add *MessageDlg.warningTitle  "Attention"</PRE>
+
+</DD>
+</DL>
+<DL><DT><A NAME="-type"><B>-type</B></A></DT>
+<DD>
+
+Specifies a set of buttons to be displayed. The following values are possible:
+<DD>
+<P>
+<DL COMPACT>
+<DT>
+<B>abortretryignore</B>
+<DD>
+Displays three buttons whose symbolic names are <B>abort</B>,
+<B>retry</B> and <B>ignore</B>.<P>
+<DT>
+<B>ok</B>
+<DD>
+Displays one button whose symbolic name is <B>ok</B>.<P>
+<DT>
+<B>okcancel</B>
+<DD>
+Displays two buttons whose symbolic names are <B>ok</B> and <B>cancel</B>.<P>
+<DT>
+<B>retrycancel</B>
+<DD>
+Displays two buttons whose symbolic names are <B>retry</B> and <B>cancel</B>.<P>
+<DT>
+<B>yesno</B>
+<DD>
+Displays two buttons whose symbolic names are <B>yes</B> and <B>no</B>.<P>
+<DT>
+<B>yesnocancel</B>
+<DD>
+Displays three buttons whose symbolic names are <B>yes</B>, <B>no</B>
+and <B>cancel</B>.
+<P>
+<DT>
+<B>user</B>
+<DD>
+Displays buttons of <B>-buttons</B> option.<P>
+</DD>
+
+<P>
+For any <B>-type</B> but <B>user</B>, the native Tk widget <B>tk_messageBox</B> is used.
+In this case, only the following options are considered: <B>-default</B>, <B>-icon</B>, <B>-message</B>, <B>-title</B> and <B>-type</B>.
+</P>
+</DL>
+<DL><DT><A NAME="-width"><B>-width</B></A></DT>
+<DD>
+
+Specifies the length of lines in the window.
+If this option has a value greater than zero then the <B>aspect</B>
+option is ignored and the <B>width</B> option determines the line
+length.
+If this option has a value less than or equal to zero, then
+the <B>aspect</B> option determines the line length.
+
+</DD>
+</DL>
+</BODY></HTML>
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/SelectColor.html
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/SelectColor.html	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/SelectColor.html	(revision 3762)
@@ -0,0 +1,211 @@
+<HTML>
+<HEAD><TITLE>SelectColor</TITLE></HEAD>
+<BODY BGCOLOR=white>
+<DL><DT><I><A HREF="#descr">NAME</A></I></DT>
+<DD><B>SelectColor</B>
+ - Color selection widget
+</DD></DL>
+<DL>
+<DT><I>CREATION</I></DT>
+<DD><A HREF="#descr"><B>SelectColor</B></A> <I>pathName</I> ?<I>option value...</I>?</DD>
+</DL>
+<DL>
+<DT><I><A HREF="#wso">WIDGET-SPECIFIC OPTIONS</A></I></DT>
+<DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-background">-background</A></td>
+<TD>&nbsp;&nbsp;<A HREF="#-color">-color</A></td>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-command">-command</A></td>
+<TD>&nbsp;&nbsp;<A HREF="#-help">-help</A></td>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-parent">-parent</A></td>
+<TD>&nbsp;&nbsp;<A HREF="#-placement">-placement</A></td>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-title">-title</A></td>
+<TD>&nbsp;&nbsp;<A HREF="#-type">-type</A></td>
+</TR>
+</TABLE></DD>
+</DL>
+<DL>
+<DT><I><A HREF="#wc">WIDGET COMMAND</A></I></DT>
+<DD><I>pathName</I> <A HREF="#cget"><B>cget</B></A>
+ <I>option</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#configure"><B>configure</B></A>
+ ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...?
+</DD>
+<DD>SelectColor::<A HREF="#dialog"><B>dialog</B></A>
+ <I>pathName</I>
+ <I>?option value ...?</I>
+</DD>
+<DD>SelectColor::<A HREF="#menu"><B>menu</B></A>
+ <I>pathName</I>
+ <I>placement</I>
+ <I>?option value ...?</I>
+</DD>
+<DD>SelectColor::<A HREF="#setbasecolor"><B>setbasecolor</B></A>
+ <I>index</I>
+ <I>color</I>
+</DD>
+<DD>SelectColor::<A HREF="#setcolor"><B>setcolor</B></A>
+ <I>index</I>
+ <I>color</I>
+</DD>
+</DL>
+<BR><HR WIDTH="100%"><BR>
+<B><A NAME="descr"></A>DESCRIPTION</B><BR>
+<P>
+
+SelectColor provides a simple way to select color. It can be displayed
+as a dialog box or as a menubutton.
+
+</P>
+<BR><HR WIDTH="50%"><BR>
+<B><A NAME="wso">WIDGET-SPECIFIC OPTIONS</A></B><BR>
+<DL><DT><A NAME="-background"><B>-background</B></A></DT>
+<DD>
+
+Specifies the background color of the widget. 
+ 
+</DD>
+</DL>
+<DL><DT><A NAME="-color"><B>-color</B></A></DT>
+<DD>
+
+Specifies the initial color used in the widget's color selectors.  When modifying a
+color that is used in the GUI, the value supplied is typically the existing value of
+that color.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-command"><B>-command</B></A></DT>
+<DD>
+
+Specifies a command to be evaluated, with a color value appended, whenever
+the color selected in the dialog changes.  This facility can be used to modify
+a color in the calling GUI and preview the change before deciding whether or not
+to accept it.  If the user selects "Cancel" in the dialog, the command is called
+a final time to restore the initial color (supplied by option <B>-color</B>) that was
+used before the dialog was opened.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-help"><B>-help</B></A></DT>
+<DD>
+
+This option takes a Boolean value.  If the value is Boolean true, the SelectColor
+dialog will include a balloon help for text entry and mouse operation.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-parent"><B>-parent</B></A></DT>
+<DD>
+
+Parent of the Dialog. Dialog is centered in its parent. If empty, it is centered in
+root window.
+</DD>
+</DL>
+<DL><DT><A NAME="-placement"><B>-placement</B></A></DT>
+<DD>
+
+Where to place the <i>popup</i> color dialog when displaying it.
+Must be any of: <b>at</b>, <b>center</b>, <b>left</b>,
+<b>right</b>, <b>above</b>, or <b>below</b>.  If <i>-parent</i> is specified,
+placement will be in relation to the parent widget.
+</DD>
+</DL>
+<DL><DT><A NAME="-title"><B>-title</B></A></DT>
+<DD>
+
+Title of the Dialog toplevel.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-type"><B>-type (read-only)</B></A></DT>
+<DD>
+
+Specifies the type of the SelectColor widget. Must be <B>dialog</B> or
+<B>popup</B>.  <BR>If <B>type</B> option is <I>dialog</I>,
+SelectColor::<B>create</B> directly creates the dialog, displays it and
+return an empty string if cancel button is pressed or if dialog is destroyed,
+and the selected color if ok button is pressed. In all cases, dialog is
+destroyed.  <BR>If <B>type</B> option is <I>popup</I>,
+SelectColor::<B>create</B> creates a small, popup dialog with a small set of
+predefined colors and a button to activate a full color dialog.
+
+</DD>
+</DL>
+<HR WIDTH="50%"><BR>
+<B><A NAME="wc">WIDGET COMMAND</A></B><BR>
+<DL><DT><A NAME="cget"><I>pathName</I> <B>cget</B></A>
+ <I>option</I>
+</DT><DD>
+
+Returns the current value of the configuration option given by <I>option</I>.
+<I>Option</I> may have any of the values accepted by the creation command.
+</DD></DL>
+<DL><DT><A NAME="configure"><I>pathName</I> <B>configure</B></A>
+ ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...?
+</DT><DD>
+
+Query or modify the configuration options of the widget. If no <I>option</I> is specified,
+returns a list describing all of the available options for <I>pathName</I>.
+If <I>option</I> is specified with no <I>value</I>, then the command returns a list
+describing the one named <I>option</I> (this list will be identical to the corresponding
+sublist of the value returned if no <I>option</I> is specified). If one or
+more <I>option-value</I> pairs are specified, then the command modifies the given widget
+option(s) to have the given value(s); in this case the command returns an empty string.
+<I>Option</I> may have any of the values accepted by the creation command.
+Read-only options are not be modified.
+
+</DD></DL>
+<DL><DT><A NAME="dialog">SelectColor::<B>dialog</B></A>
+ <I>pathName</I>
+ <I>?option value ...?</I>
+</DT><DD>
+
+Creates a dialog for the user to select a custom color.
+
+</DD></DL>
+
+<DL><DT><A NAME="dialog">SelectColor::<B>menu</B></A>
+ <I>pathName</I>
+ <I>placement</I>
+ <I>?option value ...?</I>
+</DT><DD>
+
+Creates a small, popup dialog for the user to select from a predefined list
+of colors with an additional button to display a full color dialog.
+
+<p>
+<i>placement</i> can be any of <b>at</b>, <b>center</b>, <b>left</b>,
+<b>right</b>, <b>above</b>, or <b>below</b>.  If <i>-parent</i> is specified,
+placement will be in relation to the parent widget.
+</p>
+
+</DD></DL>
+
+</DD></DL>
+<DL><DT><A NAME="setbasecolor">SelectColor::<B>setbasecolor</B></A>
+ <I>index</I>
+ <I>color</I>
+</DT><DD>
+
+Set the value of user predefined base color at index <I>index</I> to <I>color</I>.
+<I>index</I> must be between 0 and 10.
+
+</DD></DL>
+<DL><DT><A NAME="setcolor">SelectColor::<B>setcolor</B></A>
+ <I>index</I>
+ <I>color</I>
+</DT><DD>
+
+Set the value of user predefined color at index <I>index</I> to <I>color</I>.
+<I>index</I> must be between 0 and 10.
+
+</DD></DL>
+</BODY></HTML>
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/options.htm
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/options.htm	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/options.htm	(revision 3762)
@@ -0,0 +1,458 @@
+<HTML><HEAD><TITLE>Tk Built-In Commands - options manual page</TITLE></HEAD>
+<BODY BGCOLOR=white>
+<DL>
+<DD><A HREF="options.htm#M2" NAME="L2">NAME</A>
+<DL><DD>options - Standard options supported by widgets</DL>
+<DD><A HREF="options.htm#M3" NAME="L3">DESCRIPTION</A>
+<DL>
+<DD><A HREF="options.htm#M-activebackground" NAME="L4">-activebackground, activeBackground, Foreground</A>
+<DD><A HREF="options.htm#M-activeborderwidth" NAME="L5">-activeborderwidth, activeBorderWidth, BorderWidth</A>
+<DD><A HREF="options.htm#M-activeforeground" NAME="L6">-activeforeground, activeForeground, Background</A>
+<DD><A HREF="options.htm#M-anchor" NAME="L7">-anchor, anchor, Anchor</A>
+<DD><A HREF="options.htm#M-background" NAME="L8">-background or -bg, background, Background</A>
+<DD><A HREF="options.htm#M-bitmap" NAME="L9">-bitmap, bitmap, Bitmap</A>
+<DD><A HREF="options.htm#M-borderwidth" NAME="L10">-borderwidth or -bd, borderWidth, BorderWidth</A>
+<DD><A HREF="options.htm#M-cursor" NAME="L11">-cursor, cursor, Cursor</A>
+<DD><A HREF="options.htm#M-disabledbackground" NAME="L12">-disabledbackground, disabledBackground, DisabledBackground</A>
+<DD><A HREF="options.htm#M-disabledforeground" NAME="L12">-disabledforeground, disabledForeground, DisabledForeground</A>
+<DD><A HREF="options.htm#M-exportselection" NAME="L13">-exportselection, exportSelection, ExportSelection</A>
+<DD><A HREF="options.htm#M-font" NAME="L14">-font, font, Font</A>
+<DD><A HREF="options.htm#M-foreground" NAME="L15">-foreground or -fg, foreground, Foreground</A>
+<DD><A HREF="options.htm#M-highlightbackground" NAME="L16">-highlightbackground, highlightBackground, HighlightBackground</A>
+<DD><A HREF="options.htm#M-highlightcolor" NAME="L17">-highlightcolor, highlightColor, HighlightColor</A>
+<DD><A HREF="options.htm#M-highlightthickness" NAME="L18">-highlightthickness, highlightThickness, HighlightThickness</A>
+<DD><A HREF="options.htm#M-image" NAME="L19">-image, image, Image</A>
+<DD><A HREF="options.htm#M-insertbackground" NAME="L20">-insertbackground, insertBackground, Foreground</A>
+<DD><A HREF="options.htm#M-insertborderwidth" NAME="L21">-insertborderwidth, insertBorderWidth, BorderWidth</A>
+<DD><A HREF="options.htm#M-insertofftime" NAME="L22">-insertofftime, insertOffTime, OffTime</A>
+<DD><A HREF="options.htm#M-insertontime" NAME="L23">-insertontime, insertOnTime, OnTime</A>
+<DD><A HREF="options.htm#M-insertwidth" NAME="L24">-insertwidth, insertWidth, InsertWidth</A>
+<DD><A HREF="options.htm#M-jump" NAME="L25">-jump, jump, Jump</A>
+<DD><A HREF="options.htm#M-justify" NAME="L26">-justify, justify, Justify</A>
+<DD><A HREF="options.htm#M-orient" NAME="L27">-orient, orient, Orient</A>
+<DD><A HREF="options.htm#M-padx" NAME="L28">-padx, padX, Pad</A>
+<DD><A HREF="options.htm#M-pady" NAME="L29">-pady, padY, Pad</A>
+<DD><A HREF="options.htm#M-relief" NAME="L30">-relief, relief, Relief</A>
+<DD><A HREF="options.htm#M-repeatdelay" NAME="L31">-repeatdelay, repeatDelay, RepeatDelay</A>
+<DD><A HREF="options.htm#M-repeatinterval" NAME="L32">-repeatinterval, repeatInterval, RepeatInterval</A>
+<DD><A HREF="options.htm#M-selectbackground" NAME="L33">-selectbackground, selectBackground, Foreground</A>
+<DD><A HREF="options.htm#M-selectborderwidth" NAME="L34">-selectborderwidth, selectBorderWidth, BorderWidth</A>
+<DD><A HREF="options.htm#M-selectforeground" NAME="L35">-selectforeground, selectForeground, Background</A>
+<DD><A HREF="options.htm#M-setgrid" NAME="L36">-setgrid, setGrid, SetGrid</A>
+<DD><A HREF="options.htm#M-takefocus" NAME="L37">-takefocus, takeFocus, TakeFocus</A>
+<DD><A HREF="options.htm#M-text" NAME="L38">-text, text, Text</A>
+<DD><A HREF="options.htm#M-textvariable" NAME="L39">-textvariable, textVariable, Variable</A>
+<DD><A HREF="options.htm#M-troughcolor" NAME="L40">-troughcolor, troughColor, Background</A>
+<DD><A HREF="options.htm#M-underline" NAME="L41">-underline, underline, Underline</A>
+<DD><A HREF="options.htm#M-wraplength" NAME="L42">-wraplength, wrapLength, WrapLength</A>
+<DD><A HREF="options.htm#M-xscrollcommand" NAME="L43">-xscrollcommand, xScrollCommand, ScrollCommand</A>
+<DD><A HREF="options.htm#M-yscrollcommand" NAME="L44">-yscrollcommand, yScrollCommand, ScrollCommand</A>
+</DL>
+<DD><A HREF="options.htm#M4" NAME="L45">KEYWORDS</A>
+</DL><HR>
+<H3><A NAME="M2">NAME</A></H3>
+options - Standard options supported by widgets
+<H3><A NAME="M3">DESCRIPTION</A></H3>
+This manual entry describes the common configuration options supported
+by widgets in the Tk toolkit.  Every widget does not necessarily support
+every option (see the manual entries for individual widgets for a list
+of the standard options supported by that widget), but if a widget does
+support an option with one of the names listed below, then the option
+has exactly the effect described below.
+<P>
+In the descriptions below, ``Command-Line Name'' refers to the
+switch used in class commands and <B>configure</B> widget commands to
+set this value.  For example, if an option's command-line switch is
+<B>-foreground</B> and there exists a widget <B>.a.b.c</B>, then the
+command
+<PRE><B>.a.b.c  configure  -foreground black</B></PRE>
+may be used to specify the value <B>black</B> for the option in the
+the widget <B>.a.b.c</B>.  Command-line switches may be abbreviated,
+as long as the abbreviation is unambiguous.
+``Database Name'' refers to the option's name in the option database (e.g.
+in .Xdefaults files).  ``Database Class'' refers to the option's class value
+in the option database.
+<DL>
+<DT>Command-Line Name: <B><A NAME="M-activebackground">-activebackground</A></B>
+<DT>Database Name: <B>activeBackground</B>
+<DT>Database Class: <B>Foreground</B>
+<DD>Specifies background color to use when drawing active elements.
+An element (a widget or portion of a widget) is active if the
+mouse cursor is positioned over the element and pressing a mouse button
+will cause some action to occur.
+If strict Motif compliance has been requested by setting the
+<B>tk_strictMotif</B> variable, this option will normally be
+ignored;  the normal background color will be used instead.
+For some elements on Windows and Macintosh systems, the active color
+will only be used while mouse button 1 is pressed over the element.
+<P><DT>Command-Line Name: <B><A NAME="M-activeborderwidth">-activeborderwidth</A></B>
+<DT>Database Name: <B>activeBorderWidth</B>
+<DT>Database Class: <B>BorderWidth</B>
+<DD>Specifies a non-negative value indicating
+the width of the 3-D border drawn around active elements.  See above for
+definition of active elements.
+The value may have any of the forms acceptable to <B><A HREF="../TkLib/GetPixels.htm">Tk_GetPixels</A></B>.
+This option is typically only available in widgets displaying more
+than one element at a time (e.g. menus but not buttons).
+<P><DT>Command-Line Name: <B><A NAME="M-activeforeground">-activeforeground</A></B>
+<DT>Database Name: <B>activeForeground</B>
+<DT>Database Class: <B>Background</B>
+<DD>Specifies foreground color to use when drawing active elements.
+See above for definition of active elements.
+<P><DT>Command-Line Name: <B><A NAME="M-anchor">-anchor</A></B>
+<DT>Database Name: <B>anchor</B>
+<DT>Database Class: <B>Anchor</B>
+<DD>Specifies how the information in a widget (e.g. text or a bitmap)
+is to be displayed in the widget.
+Must be one of the values <B>n</B>, <B>ne</B>, <B>e</B>, <B>se</B>,
+<B>s</B>, <B>sw</B>, <B>w</B>, <B>nw</B>, or <B>center</B>.
+For example, <B>nw</B> means display the information such that its
+top-left corner is at the top-left corner of the widget.
+<P><DT>Command-Line Name: <B><A NAME="M-background">-background or -bg</A></B>
+<DT>Database Name: <B>background</B>
+<DT>Database Class: <B>Background</B>
+<DD>Specifies the normal background color to use when displaying the
+widget.
+<P><DT>Command-Line Name: <B><A NAME="M-bitmap">-bitmap</A></B>
+<DT>Database Name: <B>bitmap</B>
+<DT>Database Class: <B>Bitmap</B>
+<DD>Specifies a bitmap to display in the widget, in any of the forms
+acceptable to <B><A HREF="../TkLib/GetBitmap.htm">Tk_GetBitmap</A></B>.
+The exact way in which the bitmap is displayed may be affected by
+other options such as <B>anchor</B> or <B>justify</B>.
+Typically, if this option is specified then it overrides other
+options that specify a textual value to display in the widget;
+the <B>bitmap</B> option may be reset to an empty string to re-enable
+a text display.
+In widgets that support both <B>bitmap</B> and <B>image</B> options,
+<B>image</B> will usually override <B>bitmap</B>.
+<P><DT>Command-Line Name: <B><A NAME="M-borderwidth">-borderwidth or -bd</A></B>
+<DT>Database Name: <B>borderWidth</B>
+<DT>Database Class: <B>BorderWidth</B>
+<DD>Specifies a non-negative value indicating the width
+of the 3-D border to draw around the outside of the widget (if such a
+border is being drawn;  the <B>relief</B> option typically determines
+this).  The value may also be used when drawing 3-D effects in the
+interior of the widget.
+The value may have any of the forms acceptable to <B><A HREF="../TkLib/GetPixels.htm">Tk_GetPixels</A></B>.
+<P><DT>Command-Line Name: <B><A NAME="M-cursor">-cursor</A></B>
+<DT>Database Name: <B>cursor</B>
+<DT>Database Class: <B>Cursor</B>
+<DD>Specifies the mouse cursor to be used for the widget.
+The value may have any of the forms acceptable to <B><A HREF="../TkLib/GetCursor.htm">Tk_GetCursor</A></B>.
+<P><DT>Command-Line Name: <B><A NAME="M-disabledforeground">-disabledforeground</A></B>
+<P><DT>Command-Line Name: <B><A NAME="M-disabledbackground">-disabledbackground</A></B>
+<DT>Database Name: <B>disabledBackground</B>
+<DT>Database Class: <B>DisabledBackground</B>
+<DD>Specifies background color to use when drawing a disabled element.
+If the option is specified as an empty string (which is typically the
+case on monochrome displays), disabled elements are drawn with the
+normal background color but they are dimmed by drawing them
+with a stippled fill pattern.
+<DT>Database Name: <B>disabledForeground</B>
+<DT>Database Class: <B>DisabledForeground</B>
+<DD>Specifies foreground color to use when drawing a disabled element.
+If the option is specified as an empty string (which is typically the
+case on monochrome displays), disabled elements are drawn with the
+normal foreground color but they are dimmed by drawing them
+with a stippled fill pattern.
+<P><DT>Command-Line Name: <B><A NAME="M-exportselection">-exportselection</A></B>
+<DT>Database Name: <B>exportSelection</B>
+<DT>Database Class: <B>ExportSelection</B>
+<DD>Specifies whether or not a selection in the widget should also be
+the X selection.
+The value may have any of the forms accepted by <B><A HREF="../TclLib/GetInt.htm">Tcl_GetBoolean</A></B>,
+such as <B>true</B>, <B>false</B>, <B>0</B>, <B>1</B>, <B>yes</B>, or <B>no</B>.
+If the selection is exported, then selecting in the widget deselects
+the current X selection, selecting outside the widget deselects any
+widget selection, and the widget will respond to selection retrieval
+requests when it has a selection.  The default is usually for widgets
+to export selections.
+<P><DT>Command-Line Name: <B><A NAME="M-font">-font</A></B>
+<DT>Database Name: <B><A HREF="../TkCmd/font.htm">font</A></B>
+<DT>Database Class: <B><A HREF="../TkCmd/font.htm">Font</A></B>
+<DD>Specifies the font to use when drawing text inside the widget.
+<P><DT>Command-Line Name: <B><A NAME="M-foreground">-foreground or -fg</A></B>
+<DT>Database Name: <B>foreground</B>
+<DT>Database Class: <B>Foreground</B>
+<DD>Specifies the normal foreground color to use when displaying the widget.
+<P><DT>Command-Line Name: <B><A NAME="M-highlightbackground">-highlightbackground</A></B>
+<DT>Database Name: <B>highlightBackground</B>
+<DT>Database Class: <B>HighlightBackground</B>
+<DD>Specifies the color to display in the traversal highlight region when
+the widget does not have the input focus.
+<P><DT>Command-Line Name: <B><A NAME="M-highlightcolor">-highlightcolor</A></B>
+<DT>Database Name: <B>highlightColor</B>
+<DT>Database Class: <B>HighlightColor</B>
+<DD>Specifies the color to use for the traversal highlight rectangle that is
+drawn around the widget when it has the input focus.
+<P><DT>Command-Line Name: <B><A NAME="M-highlightthickness">-highlightthickness</A></B>
+<DT>Database Name: <B>highlightThickness</B>
+<DT>Database Class: <B>HighlightThickness</B>
+<DD>Specifies a non-negative value indicating the width of the highlight
+rectangle to draw around the outside of the widget when it has the
+input focus.
+The value may have any of the forms acceptable to <B><A HREF="../TkLib/GetPixels.htm">Tk_GetPixels</A></B>.
+If the value is zero, no focus highlight is drawn around the widget.
+<P><DT>Command-Line Name: <B><A NAME="M-image">-image</A></B>
+<DT>Database Name: <B>image</B>
+<DT>Database Class: <B>Image</B>
+<DD>Specifies an image to display in the widget, which must have been
+created with the <B><A HREF="../TkCmd/image.htm">image create</A></B> command.
+Typically, if the <B>image</B> option is specified then it overrides other
+options that specify a bitmap or textual value to display in the widget;
+the <B>image</B> option may be reset to an empty string to re-enable
+a bitmap or text display.
+<P><DT>Command-Line Name: <B><A NAME="M-insertbackground">-insertbackground</A></B>
+<DT>Database Name: <B>insertBackground</B>
+<DT>Database Class: <B>Foreground</B>
+<DD>Specifies the color to use as background in the area covered by the
+insertion cursor.  This color will normally override either the normal
+background for the widget (or the selection background if the insertion
+cursor happens to fall in the selection).
+<P><DT>Command-Line Name: <B><A NAME="M-insertborderwidth">-insertborderwidth</A></B>
+<DT>Database Name: <B>insertBorderWidth</B>
+<DT>Database Class: <B>BorderWidth</B>
+<DD>Specifies a non-negative value indicating the width
+of the 3-D border to draw around the insertion cursor.
+The value may have any of the forms acceptable to <B><A HREF="../TkLib/GetPixels.htm">Tk_GetPixels</A></B>.
+<P><DT>Command-Line Name: <B><A NAME="M-insertofftime">-insertofftime</A></B>
+<DT>Database Name: <B>insertOffTime</B>
+<DT>Database Class: <B>OffTime</B>
+<DD>Specifies a non-negative integer value indicating the number of
+milliseconds the insertion cursor should remain ``off'' in each blink cycle.
+If this option is zero then the cursor doesn't blink:  it is on
+all the time.
+<P><DT>Command-Line Name: <B><A NAME="M-insertontime">-insertontime</A></B>
+<DT>Database Name: <B>insertOnTime</B>
+<DT>Database Class: <B>OnTime</B>
+<DD>Specifies a non-negative integer value indicating the number of
+milliseconds the insertion cursor should remain ``on'' in each blink cycle.
+<P><DT>Command-Line Name: <B><A NAME="M-insertwidth">-insertwidth</A></B>
+<DT>Database Name: <B>insertWidth</B>
+<DT>Database Class: <B>InsertWidth</B>
+<DD>Specifies a  value indicating the total width of the insertion cursor.
+The value may have any of the forms acceptable to <B><A HREF="../TkLib/GetPixels.htm">Tk_GetPixels</A></B>.
+If a border has been specified for the insertion
+cursor (using the <B>insertBorderWidth</B> option), the border
+will be drawn inside the width specified by the <B>insertWidth</B>
+option.
+<P><DT>Command-Line Name: <B><A NAME="M-jump">-jump</A></B>
+<DT>Database Name: <B>jump</B>
+<DT>Database Class: <B>Jump</B>
+<DD>For widgets with a slider that can be dragged to adjust a value,
+such as scrollbars, this option determines when
+notifications are made about changes in the value.
+The option's value must be a boolean of the form accepted by
+<B><A HREF="../TclLib/GetInt.htm">Tcl_GetBoolean</A></B>.
+If the value is false, updates are made continuously as the
+slider is dragged.
+If the value is true, updates are delayed until the mouse button
+is released to end the drag;  at that point a single notification
+is made (the value ``jumps'' rather than changing smoothly).
+<P><DT>Command-Line Name: <B><A NAME="M-justify">-justify</A></B>
+<DT>Database Name: <B>justify</B>
+<DT>Database Class: <B>Justify</B>
+<DD>When there are multiple lines of text displayed in a widget, this
+option determines how the lines line up with each other.
+Must be one of <B>left</B>, <B>center</B>, or <B>right</B>.
+<B>Left</B> means that the lines' left edges all line up, <B>center</B>
+means that the lines' centers are aligned, and <B>right</B> means
+that the lines' right edges line up.
+<P><DT>Command-Line Name: <B><A NAME="M-orient">-orient</A></B>
+<DT>Database Name: <B>orient</B>
+<DT>Database Class: <B>Orient</B>
+<DD>For widgets that can lay themselves out with either a horizontal
+or vertical orientation, such as scrollbars, this option specifies
+which orientation should be used.  Must be either <B>horizontal</B>
+or <B>vertical</B> or an abbreviation of one of these.
+<P><DT>Command-Line Name: <B><A NAME="M-padx">-padx</A></B>
+<DT>Database Name: <B>padX</B>
+<DT>Database Class: <B>Pad</B>
+<DD>Specifies a non-negative value indicating how much extra space
+to request for the widget in the X-direction.
+The value may have any of the forms acceptable to <B><A HREF="../TkLib/GetPixels.htm">Tk_GetPixels</A></B>.
+When computing how large a window it needs, the widget will
+add this amount to the width it would normally need (as determined
+by the width of the things displayed in the widget);  if the geometry
+manager can satisfy this request, the widget will end up with extra
+internal space to the left and/or right of what it displays inside.
+Most widgets only use this option for padding text:  if they are
+displaying a bitmap or image, then they usually ignore padding
+options.
+<P><DT>Command-Line Name: <B><A NAME="M-pady">-pady</A></B>
+<DT>Database Name: <B>padY</B>
+<DT>Database Class: <B>Pad</B>
+<DD>Specifies a non-negative value indicating how much extra space
+to request for the widget in the Y-direction.
+The value may have any of the forms acceptable to <B><A HREF="../TkLib/GetPixels.htm">Tk_GetPixels</A></B>.
+When computing how large a window it needs, the widget will add
+this amount to the height it would normally need (as determined by
+the height of the things displayed in the widget);  if the geometry
+manager can satisfy this request, the widget will end up with extra
+internal space above and/or below what it displays inside.
+Most widgets only use this option for padding text:  if they are
+displaying a bitmap or image, then they usually ignore padding
+options.
+<P><DT>Command-Line Name: <B><A NAME="M-relief">-relief</A></B>
+<DT>Database Name: <B>relief</B>
+<DT>Database Class: <B>Relief</B>
+<DD>Specifies the 3-D effect desired for the widget.  Acceptable
+values are <B>raised</B>, <B>sunken</B>, <B>flat</B>, <B>ridge</B>,
+<B>solid</B>, and <B>groove</B>.
+The value
+indicates how the interior of the widget should appear relative
+to its exterior;  for example, <B>raised</B> means the interior of
+the widget should appear to protrude from the screen, relative to
+the exterior of the widget.
+<P><DT>Command-Line Name: <B><A NAME="M-repeatdelay">-repeatdelay</A></B>
+<DT>Database Name: <B>repeatDelay</B>
+<DT>Database Class: <B>RepeatDelay</B>
+<DD>Specifies the number of milliseconds a button or key must be held
+down before it begins to auto-repeat.  Used, for example, on the
+up- and down-arrows in scrollbars.
+<P><DT>Command-Line Name: <B><A NAME="M-repeatinterval">-repeatinterval</A></B>
+<DT>Database Name: <B>repeatInterval</B>
+<DT>Database Class: <B>RepeatInterval</B>
+<DD>Used in conjunction with <B>repeatDelay</B>:  once auto-repeat
+begins, this option determines the number of milliseconds between
+auto-repeats.
+<P><DT>Command-Line Name: <B><A NAME="M-selectbackground">-selectbackground</A></B>
+<DT>Database Name: <B>selectBackground</B>
+<DT>Database Class: <B>Foreground</B>
+<DD>Specifies the background color to use when displaying selected
+items.
+<P><DT>Command-Line Name: <B><A NAME="M-selectborderwidth">-selectborderwidth</A></B>
+<DT>Database Name: <B>selectBorderWidth</B>
+<DT>Database Class: <B>BorderWidth</B>
+<DD>Specifies a non-negative value indicating the width
+of the 3-D border to draw around selected items.
+The value may have any of the forms acceptable to <B><A HREF="../TkLib/GetPixels.htm">Tk_GetPixels</A></B>.
+<P><DT>Command-Line Name: <B><A NAME="M-selectforeground">-selectforeground</A></B>
+<DT>Database Name: <B>selectForeground</B>
+<DT>Database Class: <B>Background</B>
+<DD>Specifies the foreground color to use when displaying selected
+items.
+<P><DT>Command-Line Name: <B><A NAME="M-setgrid">-setgrid</A></B>
+<DT>Database Name: <B>setGrid</B>
+<DT>Database Class: <B>SetGrid</B>
+<DD>Specifies a boolean value that determines whether this widget controls the
+resizing grid for its top-level window.
+This option is typically used in text widgets, where the information
+in the widget has a natural size (the size of a character) and it makes
+sense for the window's dimensions to be integral numbers of these units.
+These natural window sizes form a grid.
+If the <B>setGrid</B> option is set to true then the widget will
+communicate with the window manager so that when the user interactively
+resizes the top-level window that contains the widget, the dimensions of
+the window will be displayed to the user in grid units and the window
+size will be constrained to integral numbers of grid units.
+See the section GRIDDED GEOMETRY MANAGEMENT in the <B><A HREF="../TkCmd/wm.htm">wm</A></B> manual
+entry for more details.
+<P><DT>Command-Line Name: <B><A NAME="M-takefocus">-takefocus</A></B>
+<DT>Database Name: <B>takeFocus</B>
+<DT>Database Class: <B>TakeFocus</B>
+<DD>Determines whether the window accepts the focus during keyboard
+traversal (e.g., Tab and Shift-Tab).
+Before setting the focus to a window, the traversal scripts
+consult the value of the <B>takeFocus</B> option.
+A value of <B>0</B> means that the window should be skipped entirely
+during keyboard traversal. 
+<B>1</B> means that the window should receive the input
+focus as long as it is viewable (it and all of its ancestors are mapped).
+An empty value for the option means that the traversal scripts make
+the decision about whether or not to focus on the window:  the current
+algorithm is to skip the window if it is
+disabled, if it has no key bindings, or if it is not viewable.
+If the value has any other form, then the traversal scripts take
+the value, append the name of the window to it (with a separator space),
+and evaluate the resulting string as a Tcl script.
+The script must return <B>0</B>, <B>1</B>, or an empty string:  a 
+<B>0</B> or <B>1</B> value specifies whether the window will receive
+the input focus, and an empty string results in the default decision
+described above.
+Note: this interpretation of the option is defined entirely by
+the Tcl scripts that implement traversal:  the widget implementations
+ignore the option entirely, so you can change its meaning if you
+redefine the keyboard traversal scripts.
+<P><DT>Command-Line Name: <B><A NAME="M-text">-text</A></B>
+<DT>Database Name: <B><A HREF="../TkCmd/text.htm">text</A></B>
+<DT>Database Class: <B><A HREF="../TkCmd/text.htm">Text</A></B>
+<DD>Specifies a string to be displayed inside the widget.  The way in which
+the string is displayed depends on the particular widget and may be
+determined by other options, such as <B>anchor</B> or <B>justify</B>.
+<P><DT>Command-Line Name: <B><A NAME="M-textvariable">-textvariable</A></B>
+<DT>Database Name: <B>textVariable</B>
+<DT>Database Class: <B><A HREF="../TclCmd/variable.htm">Variable</A></B>
+<DD>Specifies the name of a variable.  The value of the variable is a text
+string to be displayed inside the widget;  if the variable value changes
+then the widget will automatically update itself to reflect the new value.
+The way in which the string is displayed in the widget depends on the
+particular widget and may be determined by other options, such as
+<B>anchor</B> or <B>justify</B>.
+<P><DT>Command-Line Name: <B><A NAME="M-troughcolor">-troughcolor</A></B>
+<DT>Database Name: <B>troughColor</B>
+<DT>Database Class: <B>Background</B>
+<DD>Specifies the color to use for the rectangular trough areas
+in widgets such as scrollbars and scales.
+<P><DT>Command-Line Name: <B><A NAME="M-underline">-underline</A></B>
+<DT>Database Name: <B>underline</B>
+<DT>Database Class: <B>Underline</B>
+<DD>Specifies the integer index of a character to underline in the widget.
+This option is used by the default bindings to implement keyboard
+traversal for menu buttons and menu entries.
+0 corresponds to the first character of the text displayed in the
+widget, 1 to the next character, and so on.
+<P><DT>Command-Line Name: <B><A NAME="M-wraplength">-wraplength</A></B>
+<DT>Database Name: <B>wrapLength</B>
+<DT>Database Class: <B>WrapLength</B>
+<DD>For widgets that can perform word-wrapping, this option specifies
+the maximum line length.
+Lines that would exceed this length are wrapped onto the next line,
+so that no line is longer than the specified length.
+The value may be specified in any of the standard forms for
+screen distances.
+If this value is less than or equal to 0 then no wrapping is done:  lines
+will break only at newline characters in the text.
+<P><DT>Command-Line Name: <B><A NAME="M-xscrollcommand">-xscrollcommand</A></B>
+<DT>Database Name: <B>xScrollCommand</B>
+<DT>Database Class: <B>ScrollCommand</B>
+<DD>Specifies the prefix for a command used to communicate with horizontal
+scrollbars.
+When the view in the widget's window changes (or
+whenever anything else occurs that could change the display in a
+scrollbar, such as a change in the total size of the widget's
+contents), the widget will
+generate a Tcl command by concatenating the scroll command and
+two numbers.
+Each of the numbers is a fraction between 0 and 1, which indicates
+a position in the document.  0 indicates the beginning of the document,
+1 indicates the end, .333 indicates a position one third the way through
+the document, and so on.
+The first fraction indicates the first information in the document
+that is visible in the window, and the second fraction indicates
+the information just after the last portion that is visible.
+The command is
+then passed to the Tcl interpreter for execution.  Typically the
+<B>xScrollCommand</B> option consists of the path name of a scrollbar
+widget followed by ``set'', e.g. ``.x.scrollbar set'':  this will cause
+the scrollbar to be updated whenever the view in the window changes.
+If this option is not specified, then no command will be executed.
+<P><DT>Command-Line Name: <B><A NAME="M-yscrollcommand">-yscrollcommand</A></B>
+<DT>Database Name: <B>yScrollCommand</B>
+<DT>Database Class: <B>ScrollCommand</B>
+<DD>Specifies the prefix for a command used to communicate with vertical
+scrollbars.  This option is treated in the same way as the
+<B>xScrollCommand</B> option, except that it is used for vertical
+scrollbars and is provided by widgets that support vertical scrolling.
+See the description of <B>xScrollCommand</B> for details
+on how this option is used.
+
+</DL>
+<H3><A NAME="M4">KEYWORDS</A></H3>
+<A href="../Keywords/C.htm#class">class</A>, <A href="../Keywords/N.htm#name">name</A>, <A href="../Keywords/S.htm#standard option">standard option</A>, <A href="../Keywords/S.htm#switch">switch</A>
+<HR><PRE>
+<A HREF="../copyright.htm">Copyright</A> &#169; 1990-1994 The Regents of the University of California.
+<A HREF="../copyright.htm">Copyright</A> &#169; 1994-1996 Sun Microsystems, Inc.
+<A HREF="../copyright.htm">Copyright</A> &#169; 1995-1997 Roger E. Critchlow Jr.</PRE>
+</BODY></HTML>
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/NoteBook.html
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/NoteBook.html	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/NoteBook.html	(revision 3762)
@@ -0,0 +1,483 @@
+<HTML>
+<HEAD><TITLE>NoteBook</TITLE></HEAD>
+<BODY BGCOLOR=white>
+<DL><DT><I><A HREF="#descr">NAME</A></I></DT>
+<DD><B>NoteBook</B>
+ - Notebook manager widget
+</DD></DL>
+<DL>
+<DT><I>CREATION</I></DT>
+<DD><A HREF="#descr"><B>NoteBook</B></A> <I>pathName</I> ?<I>option value...</I>?</DD>
+</DL>
+<DL>
+<DT><I>STANDARD OPTIONS</I></DT>
+<DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-font">-font</A></TR>
+</TABLE></DD>
+</DL>
+<DL>
+<DT><I><A HREF="ArrowButton.html">OPTIONS from <B>ArrowButton</B></A></I></DT>
+<DD><TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+<TR>
+<TD>&nbsp;&nbsp;-activebackground</TD>
+<TD>&nbsp;&nbsp;-activeforeground</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-background or -bg</TD>
+<TD>&nbsp;&nbsp;-borderwidth or -bd</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-disabledforeground</TD>
+<TD>&nbsp;&nbsp;-foreground or -fg</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-repeatdelay</TD>
+<TD>&nbsp;&nbsp;-repeatinterval</TD>
+</TR>
+</TABLE></DD>
+</DL>
+<DL>
+<DT><I><A HREF="#wso">WIDGET-SPECIFIC OPTIONS</A></I></DT>
+<DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-arcradius">-arcradius</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="#-height">-height</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-homogeneous">-homogeneous</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="#-internalborderwidth">-internalborderwidth or -ibd</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-side">-side</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="#-tabbevelsize">-tabbevelsize</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-tabpady">-tabpady</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="#-width">-width</A></TD>
+</TR>
+</TABLE></DD>
+</DL>
+<DL>
+<DT><I><A HREF="#wc">WIDGET COMMAND</A></I></DT>
+<DD><I>pathName</I> <A HREF="#bindtabs"><B>bindtabs</B></A>
+ <I>event</I>
+ <I>script</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#cget"><B>cget</B></A>
+ <I>option</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#compute_size"><B>compute_size</B></A>
+</DD>
+<DD><I>pathName</I> <A HREF="#configure"><B>configure</B></A>
+ ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...?
+</DD>
+<DD><I>pathName</I> <A HREF="#delete"><B>delete</B></A>
+ <I>page</I>
+ ?<I>destroyframe</I>?
+</DD>
+<DD><I>pathName</I> <A HREF="#getframe"><B>getframe</B></A>
+ <I>page</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#index"><B>index</B></A>
+ <I>page</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#insert"><B>insert</B></A>
+ <I>index</I>
+ <I>page</I>
+ ?<I>option value...</I>?
+</DD>
+<DD><I>pathName</I> <A HREF="#itemcget"><B>itemcget</B></A>
+ <I>page</I>
+ <I>option</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#itemconfigure"><B>itemconfigure</B></A>
+ <I>page</I>
+ ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...?
+</DD>
+<DD><I>pathName</I> <A HREF="#move"><B>move</B></A>
+ <I>page</I>
+ <I>index</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#page"><B>page</B></A>
+ <I>first</I>
+ ?<I>last</I>?
+</DD>
+<DD><I>pathName</I> <A HREF="#pages"><B>pages</B></A>
+ ?<I>first</I>?
+ ?<I>last</I>?
+</DD>
+<DD><I>pathName</I> <A HREF="#raise"><B>raise</B></A>
+ ?<I>page</I>?
+</DD>
+<DD><I>pathName</I> <A HREF="#see"><B>see</B></A>
+ <I>page</I>
+</DD>
+</DL>
+<BR><HR WIDTH="100%"><BR>
+<B><A NAME="descr"></A>DESCRIPTION</B><BR>
+<P>
+
+The NoteBook widget manages a set of pages and displays one of them.  A page
+is a <B>frame</B> or <B>ttk::frame</B> that is included in the NoteBook by its
+<A HREF="#insert"><B>insert</B></A> command.  Each page is associated with a tab;
+the tabs are displayed in a band either above or below the pages, depending on
+the value of the option <A HREF="#-side">-side</A>.
+
+</P>
+<BR><HR WIDTH="50%"><BR>
+<B><A NAME="wso">WIDGET-SPECIFIC OPTIONS</A></B><BR>
+<DL><DT><A NAME="-arcradius"><B>-arcradius</B></A></DT>
+<DD>
+
+Specifies the amount of rounding effect at the corners of a tab. This value
+can be adjusted from 0 to 8 pixels with the default being 2 pixels. Usually,
+small values are preferable.
+</DD>
+</DL>
+<DL><DT><A NAME="-height"><B>-height</B></A></DT>
+<DD>
+
+Specifies the desired height for the pages. If this option is equal to zero (the default)
+then the window will not request any size at all.
+In this case, user may want to call NoteBook::<B>compute_size</B> to make NoteBook larger
+enough to contains the largest page.
+</DD>
+</DL>
+<DL><DT><A NAME="-homogeneous"><B>-homogeneous</B></A></DT>
+<DD>
+
+Specifies whether or not the label of the pages must have the same width.
+
+</DD>
+</DL>
+
+<DL><DT><A NAME="-internalborderwidth"><B>-internalborderwidth</B> or <B>-ibd</B></A></DT>
+<DD>
+
+Value that is applied to each page in the NoteBook as its <B>-borderwidth</B> or <B>-bd</B>.
+
+</DD>
+</DL>
+
+
+<DL><DT><A NAME="-side"><B>-side</B></A></DT>
+<DD>
+
+Specifies the side where to place the label of the pages. Must be one
+of <B>top</B> or <B>bottom</B>.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-tabbevelsize"><B>-tabbevelsize</B></A></DT>
+<DD>
+
+Specifies the amount of bevel the tabs should have. This value can be adjusted from
+0 to 8 pixels with the default being 0 pixels. A zero pixel bevel is essentially rectangular
+while non-zero bevel size will look trapezoidal.
+</DD>
+</DL>
+
+<DL><DT><A NAME="-tabpady"><B>-tabpady</B></A></DT>
+<DD>
+    Specifies the padding between the text in the tab and the top and bottom
+    of the tab.  Padding may be a list of two values to specify padding for
+    top and bottom separately.  Padding defaults to {0 6}.
+</DD>
+</DL>
+
+<DL><DT><A NAME="-width"><B>-width</B></A></DT>
+<DD>
+
+Specifies the desired width for the pages. If this option is equal to zero (the default)
+then the window will not request any size at all.
+In this case, user may want to call NoteBook::<B>compute_size</B> to make NoteBook larger
+enough to contains the largest page.
+</DD>
+</DL>
+<HR WIDTH="50%"><BR>
+<B><A NAME="wc">WIDGET COMMAND</A></B><BR>
+<DL><DT><A NAME="bindtabs"><I>pathName</I> <B>bindtabs</B></A>
+ <I>event</I>
+ <I>script</I>
+</DT><DD>
+
+This command associates a command to execute whenever the event
+sequence given by <I>event</I> occurs on a tab. The page identifier on which
+the event occurs is appended to the command.
+
+</DD></DL>
+<DL><DT><A NAME="cget"><I>pathName</I> <B>cget</B></A>
+ <I>option</I>
+</DT><DD>
+
+Returns the current value of the configuration option given by <I>option</I>.
+<I>Option</I> may have any of the values accepted by the creation command.
+</DD></DL>
+<DL><DT><A NAME="compute_size"><I>pathName</I> <B>compute_size</B></A>
+</DT><DD>
+
+This command can be called to make the NoteBook large enough to contain the largest page.
+Note that if all pages use -createcmd, they will have no requested size.
+
+</DD></DL>
+<DL><DT><A NAME="configure"><I>pathName</I> <B>configure</B></A>
+ ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...?
+</DT><DD>
+
+Query or modify the configuration options of the widget. If no <I>option</I> is specified,
+returns a list describing all of the available options for <I>pathName</I>.
+If <I>option</I> is specified with no <I>value</I>, then the command returns a list
+describing the one named <I>option</I> (this list will be identical to the corresponding
+sublist of the value returned if no <I>option</I> is specified). If one or
+more <I>option-value</I> pairs are specified, then the command modifies the given widget
+option(s) to have the given value(s); in this case the command returns an empty string.
+<I>Option</I> may have any of the values accepted by the creation command.
+Read-only options are not be modified.
+
+</DD></DL>
+<DL><DT><A NAME="delete"><I>pathName</I> <B>delete</B></A>
+ <I>page</I>
+ ?<I>destroyframe</I>?
+</DT><DD>
+
+Deletes the page <I>page</I>. If <I>destroyframe</I> is 1 (the default), the frame
+associated to <I>page</I> is destroyed. If <I>destroyframe</I> is 0, the frame is not
+destroyed and is reused by further call to <B>insert</B> with the same <I>page</I>.
+
+</DD></DL>
+<DL><DT><A NAME="getframe"><I>pathName</I> <B>getframe</B></A>
+ <I>page</I>
+</DT><DD>
+
+Returns the pathname of the page <I>page</I>.
+
+</DD></DL>
+<DL><DT><A NAME="index"><I>pathName</I> <B>index</B></A>
+ <I>page</I>
+</DT><DD>
+
+Return the numerical index corresponding to the item.
+
+</DD></DL>
+<DL><DT><A NAME="insert"><I>pathName</I> <B>insert</B></A>
+ <I>index</I>
+ <I>page</I>
+ ?<I>option value...</I>?
+</DT><DD>
+
+Insert a new page identified by <I>page</I> at position <I>index</I> in the pages list.
+<I>index</I> must be numeric or <B>end</B>. The pathname of the new page is returned.
+Dynamic help, if it is specified by the options, is
+displayed when the pointer hovers over the tab that belongs to the page.
+
+<P>
+<DL><DT><A NAME="Page-activebackground"><B>-activebackground</B></A></DT>
+<DD>
+
+Background color for the tab when it is active.
+
+</DD>
+</DL>
+<DL><DT><A NAME="Page-activeforeground"><B>-activeforeground</B></A></DT>
+<DD>
+
+Color used for the tab's text when the tab is active.
+
+</DD>
+</DL>
+<DL><DT><A NAME="Page-background"><B>-background</B></A></DT>
+<DD>
+
+Background color for the tab when it is not active.
+
+</DD>
+</DL>
+<DL><DT><A NAME="Page-createcmd"><B>-createcmd</B></A></DT>
+<DD>
+
+Specifies a command to be called the first time the page is raised.
+
+</DD>
+</DL>
+<DL><DT><A NAME="Page-disabledforeground"><B>-disabledforeground</B></A></DT>
+<DD>
+
+Color used for the tab's text when the tab is disabled.
+
+</DD>
+</DL>
+
+<DL><DT><A NAME="Page-foreground"><B>-foreground</B></A></DT>
+<DD>
+
+Color used for the tab's text when the tab is neither active nor disabled.
+
+</DD>
+</DL>
+<DL><DT><A NAME="Page-helpcmd"><B>-helpcmd</B></A></DT>
+<DD>
+
+Has no effect.
+See also <A HREF="DynamicHelp.html">DynamicHelp</A>.
+
+</DD>
+</DL>
+<DL><DT><A NAME="Page-helptext"><B>-helptext</B></A></DT>
+<DD>
+
+Text for dynamic help. If empty, no help is available for this page.
+See also <A HREF="DynamicHelp.html">DynamicHelp</A>.
+
+</DD>
+</DL>
+<DL><DT><A NAME="Page-helptype"><B>-helptype</B></A></DT>
+<DD>
+
+Type of dynamic help. Use <I>balloon</I> (the default for a NoteBook
+page) or <I>variable</I>.
+See also <A HREF="DynamicHelp.html">DynamicHelp</A>.
+
+</DD>
+</DL>
+<DL><DT><A NAME="Page-helpvar"><B>-helpvar</B></A></DT>
+<DD>
+
+Variable to use when <B>-helptype</B> option is <I>variable</I>.
+See also <A HREF="DynamicHelp.html">DynamicHelp</A>.
+
+</DD>
+</DL>
+<DL><DT><A NAME="Page-image"><B>-image</B></A></DT>
+<DD>
+
+Specifies an image to display for the page at the left of the label
+
+</DD>
+</DL>
+<DL><DT><A NAME="Page-leavecmd"><B>-leavecmd</B></A></DT>
+<DD>
+
+Specifies a command to be called when a page is about to be leaved.
+The command must return 0 if the page can not be leaved, or 1 if it can.
+
+</DD>
+</DL>
+<DL><DT><A NAME="Page-ractiveimage"><B>-ractiveimage</B></A></DT>
+<DD>
+
+Image to show on the right of the tab when the tab is active.
+
+</DD>
+</DL>
+<DL><DT><A NAME="Page-raisecmd"><B>-raisecmd</B></A></DT>
+<DD>
+
+Specifies a command to be called each time the page is raised.
+
+</DD>
+</DL>
+<DL><DT><A NAME="Page-rimage"><B>-rimage</B></A></DT>
+<DD>
+
+Image to show on the right of the tab when the tab is not active.
+
+</DD>
+</DL>
+<DL><DT><A NAME="Page-rimagecmd"><B>-rimagecmd</B></A></DT>
+<DD>
+
+Specifies a command to be evaluated, with two arguments appended, when the
+image shown on the right of the tab is clicked.  The first appended argument
+is the Tk window path of the NoteBook, the second is the name of the page.
+
+</DD>
+</DL>
+<DL><DT><A NAME="Page-state"><B>-state</B></A></DT>
+<DD>
+
+Specifies the state of the page. Must be <B>normal</B> or <B>disabled</B>.
+
+</DD>
+</DL>
+<DL><DT><A NAME="Page-text"><B>-text</B></A></DT>
+<DD>
+
+Specifies a label to display for the page.
+
+</DD>
+</DL>
+</DD></DL>
+<DL><DT><A NAME="itemcget"><I>pathName</I> <B>itemcget</B></A>
+ <I>page</I>
+ <I>option</I>
+</DT><DD>
+
+Returns the current value of a configuration option for the item.
+<I>Option</I> may have any of the values accepted by the item creation command.
+
+</DD></DL>
+<DL><DT><A NAME="itemconfigure"><I>pathName</I> <B>itemconfigure</B></A>
+ <I>page</I>
+ ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...?
+</DT><DD>
+
+This command is similar to the <B>configure</B> command, except that it applies to the
+options for an individual item, whereas <B>configure</B> applies to the options for
+the widget as a whole. <B>Options</B> may have any of the values accepted by the 
+item creation widget command. If options are specified, options are modified as indicated
+in the command and the command returns an empty string. If no options are specified,
+returns a list describing the current options for the item.
+Read-only options are not be modified.
+
+</DD></DL>
+<DL><DT><A NAME="move"><I>pathName</I> <B>move</B></A>
+ <I>page</I>
+ <I>index</I>
+</DT><DD>
+
+Moves <I>page</I> tab to index <I>index</I>.
+
+</DD></DL>
+<DL><DT><A NAME="page"><I>pathName</I> <B>page</B></A>
+ <I>first</I>
+ ?<I>last</I>?
+</DT><DD>
+
+<B>Its use is deprecated. Use <I>pages</I> instead.</B><BR>
+If <I>last</I> is omitted, returns the page at index <I>first</I>, or an empty string if
+<I>first</I> refers to a non-existent element. If <I>last</I> is specified, the command
+returns a list whose elements are all of the pages between <I>first</I> and <I>last</I>,
+inclusive. Both <I>first</I> and <I>last</I> may have any of the standard
+forms for indices.
+
+</DD></DL>
+<DL><DT><A NAME="pages"><I>pathName</I> <B>pages</B></A>
+ ?<I>first</I>?
+ ?<I>last</I>?
+</DT><DD>
+
+If <I>first</I> and <I>last</I> are omitted, returns the list of all pages.
+If <I>first</I> is specified and <I>last</I> omitted, returns the page at index
+<I>first</I>, or an empty string if <I>first</I> refers to a non-existent element.
+If <I>first</I> and <I>last</I> are specified, the command returns a list whose elements
+are all of the pages between <I>first</I> and <I>last</I>,
+inclusive. Both <I>first</I> and <I>last</I> may have any of the standard
+forms for indices.
+
+</DD></DL>
+<DL><DT><A NAME="raise"><I>pathName</I> <B>raise</B></A>
+ ?<I>page</I>?
+</DT><DD>
+
+Raise the page <I>page</I>, or return the raised page if <I>page</I> is omitted.
+
+</DD></DL>
+<DL><DT><A NAME="see"><I>pathName</I> <B>see</B></A>
+ <I>page</I>
+</DT><DD>
+
+Scrolls labels to make the label of the page <I>page</I> visible.
+
+</DD></DL>
+</BODY></HTML>
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/SpinBox.html
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/SpinBox.html	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/SpinBox.html	(revision 3762)
@@ -0,0 +1,250 @@
+<HTML>
+<HEAD><TITLE>SpinBox</TITLE></HEAD>
+<BODY BGCOLOR=white>
+<DL><DT><I><A HREF="#descr">NAME</A></I></DT>
+<DD><B>SpinBox</B>
+ - SpinBox widget
+</DD></DL>
+<DL>
+<DT><I>CREATION</I></DT>
+<DD><A HREF="#descr"><B>SpinBox</B></A> <I>pathName</I> ?<I>option value...</I>?</DD>
+</DL>
+<DL>
+<DT><I><A HREF="ArrowButton.html">OPTIONS from <B>ArrowButton</B></A></I></DT>
+<DD><TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+<TR>
+<TD>&nbsp;&nbsp;-background or -bg</TD>
+<TD>&nbsp;&nbsp;-disabledforeground (not themed)</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-foreground or -fg</TD>
+<TD>&nbsp;&nbsp;-repeatdelay</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-repeatinterval</TD>
+<TD>&nbsp;&nbsp;-state</TD>
+</TR>
+</TABLE></DD>
+</DL>
+<DL>
+<DT><I><A HREF="Entry.html">OPTIONS from <B>Entry</B></A></I></DT>
+<DD><TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+<TR>
+<TD>&nbsp;&nbsp;-command</TD>
+<TD>&nbsp;&nbsp;-disabledforeground (not themed)</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-dragenabled</TD>
+<TD>&nbsp;&nbsp;-dragendcmd</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-dragevent</TD>
+<TD>&nbsp;&nbsp;-draginitcmd</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-dragtype</TD>
+<TD>&nbsp;&nbsp;-dropcmd</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-dropenabled</TD>
+<TD>&nbsp;&nbsp;-dropovercmd</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-droptypes</TD>
+<TD>&nbsp;&nbsp;-editable</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-entrybg (see <B>-background</B>)</TD>
+<TD>&nbsp;&nbsp;-entryfg (see <B>-foreground</B>)</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-exportselection</TD>
+<TD>&nbsp;&nbsp;-font</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-helptext</TD>
+<TD>&nbsp;&nbsp;-helptype</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-helpvar</TD>
+<TD>&nbsp;&nbsp;-highlightbackground</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-highlightcolor</TD>
+<TD>&nbsp;&nbsp;-highlightthickness</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-insertbackground</TD>
+<TD>&nbsp;&nbsp;-insertborderwidth</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-insertofftime</TD>
+<TD>&nbsp;&nbsp;-insertontime</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-insertwidth</TD>
+<TD>&nbsp;&nbsp;-justify</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-selectbackground</TD>
+<TD>&nbsp;&nbsp;-selectborderwidth</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-selectforeground</TD>
+<TD>&nbsp;&nbsp;-show</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-state</TD>
+<TD>&nbsp;&nbsp;-takefocus</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-text</TD>
+<TD>&nbsp;&nbsp;-textvariable</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-width</TD>
+<TD>&nbsp;&nbsp;-xscrollcommand</TD>
+</TR>
+</TABLE></DD>
+</DL>
+<DL>
+<DT><I><A HREF="#wso">WIDGET-SPECIFIC OPTIONS</A></I></DT>
+<DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-modifycmd">-modifycmd</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="#-range">-range</A></TR>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-values">-values</A></TR>
+</TABLE></DD>
+</DL>
+<DL>
+<DT><I><A HREF="#wc">WIDGET COMMAND</A></I></DT>
+<DD><I>pathName</I> <A HREF="#bind"><B>bind</B></A>
+ ?<I>arg...</I>?
+</DD>
+<DD><I>pathName</I> <A HREF="#cget"><B>cget</B></A>
+ <I>option</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#configure"><B>configure</B></A>
+ ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...?
+</DD>
+<DD><I>pathName</I> <A HREF="#getvalue"><B>getvalue</B></A>
+</DD>
+<DD><I>pathName</I> <A HREF="#setvalue"><B>setvalue</B></A>
+ <I>index</I>
+</DD>
+</DL>
+<BR><HR WIDTH="100%"><BR>
+<B><A NAME="descr"></A>DESCRIPTION</B><BR>
+<P>
+
+SpinBox widget enables the user to select a value among a list given by the <B>values</B>
+option or a set of values defined by a mininum, a maximum and an increment.
+Notice that <B>range</B> option defines a list of values, so <B>getvalue</B> and
+<B>setvalue</B> work with both values and range.
+
+</P>
+<BR><HR WIDTH="50%"><BR>
+<B><A NAME="wso">WIDGET-SPECIFIC OPTIONS</A></B><BR>
+<DL><DT><A NAME="-modifycmd"><B>-modifycmd</B></A></DT>
+<DD>
+
+Specifies a Tcl command called when the user modify the value of the SpinBox.
+</DD>
+</DL>
+<DL><DT><A NAME="-range"><B>-range</B></A></DT>
+<DD>
+
+Specifies a list of three intergers (or real) describing the minimum, maximum and increment
+of the SpinBox.
+</DD>
+</DL>
+<DL><DT><A NAME="-values"><B>-values</B></A></DT>
+<DD>
+
+Specifies the values accepted by the SpinBox. This option takes precedence over
+<B>range</B> option.
+</DD>
+</DL>
+<HR WIDTH="50%"><BR>
+<B><A NAME="wc">WIDGET COMMAND</A></B><BR>
+<DL><DT><A NAME="bind"><I>pathName</I> <B>bind</B></A>
+ ?<I>arg...</I>?
+</DT><DD>
+
+Set bindings on the entry widget.
+
+</DD></DL>
+<DL><DT><A NAME="cget"><I>pathName</I> <B>cget</B></A>
+ <I>option</I>
+</DT><DD>
+
+Returns the current value of the configuration option given by <I>option</I>.
+<I>Option</I> may have any of the values accepted by the creation command.
+</DD></DL>
+<DL><DT><A NAME="configure"><I>pathName</I> <B>configure</B></A>
+ ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...?
+</DT><DD>
+
+Query or modify the configuration options of the widget. If no <I>option</I> is specified,
+returns a list describing all of the available options for <I>pathName</I>.
+If <I>option</I> is specified with no <I>value</I>, then the command returns a list
+describing the one named <I>option</I> (this list will be identical to the corresponding
+sublist of the value returned if no <I>option</I> is specified). If one or
+more <I>option-value</I> pairs are specified, then the command modifies the given widget
+option(s) to have the given value(s); in this case the command returns an empty string.
+<I>Option</I> may have any of the values accepted by the creation command.
+Read-only options are not be modified.
+
+</DD></DL>
+<DL><DT><A NAME="getvalue"><I>pathName</I> <B>getvalue</B></A>
+</DT><DD>
+
+Returns the index of the current text of the SpinBox in the list of values,
+or -1 if it doesn't match any value.
+
+</DD></DL>
+<DL><DT><A NAME="setvalue"><I>pathName</I> <B>setvalue</B></A>
+ <I>index</I>
+</DT><DD>
+
+Set the text of the SpinBox to the value indicated by <I>index</I> in the list of values.
+<I>index</I> may be specified in any of the following forms:
+<P>
+<DL COMPACT>
+<DT>
+<B>last</B>
+<DD>
+Specifies the last element of the list of values.
+<DT><B>first</B>
+<DD>
+Specifies the first element of the list of values.
+<DT>
+<B>next</B>
+<DD>
+Specifies the element following the current (ie returned by <B>getvalue</B>) in the list
+of values.
+<DT><B>previous</B>
+<DD>
+Specifies the element preceding the current (ie returned by <B>getvalue</B>) in the list
+of values.
+<DT>
+@<I>number</I>
+<DD>
+Specifies the integer index in the list of values.
+</DL>
+
+</DD></DL>
+<HR><BR><B>BINDINGS</B><BR><BR>
+
+When Entry of the SpinBox has the input focus, it has the following bindings, in addition
+to the default Entry bindings:
+<UL>
+<LI>Page up set the value of the SpinBox to the last value.
+<LI>Page down set the value of the SpinBox to the first value.
+<LI>Arrow up set the value of the SpinBox to the next value.
+<LI>Arrow down set the value of the SpinBox to the previous value.
+</UL>
+
+</BODY></HTML>
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/Widget.html
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/Widget.html	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/Widget.html	(revision 3762)
@@ -0,0 +1,505 @@
+<HTML>
+<HEAD><TITLE>Widget</TITLE></HEAD>
+<BODY BGCOLOR=white>
+<IMG SRC="constr.gif" WIDTH="40" HEIGHT="40"> Under construction ...<BR>
+<DL><DT><I><A HREF="#descr">NAME</A></I></DT>
+<DD><B>Widget</B>
+ - The Widget base class
+</DD></DL>
+<DL>
+<DT><I><A HREF="#wc">COMMAND</A></I></DT>
+<DD>Widget::<A HREF="#addmap"><B>addmap</B></A>
+ <I>class</I>
+ <I>subclass</I>
+ <I>subpath</I>
+ <I>options</I>
+</DD>
+<DD>Widget::<A HREF="#bwinclude"><B>bwinclude</B></A>
+ <I>class</I>
+ <I>subclass</I>
+ <I>subpath</I>
+ ?<I>arg...</I>?
+</DD>
+<DD>Widget::<A HREF="#cget"><B>cget</B></A>
+ <I>path</I>
+ <I>option</I>
+</DD>
+<DD>Widget::<A HREF="#configure"><B>configure</B></A>
+ <I>path</I>
+ <I>options</I>
+</DD>
+<DD>Widget::<A HREF="#create"><B>create</B></A>
+ <I>class</I>
+ <I>path</I>
+ ?<I>rename</I>?
+</DD>
+<DD>Widget::<A HREF="#declare"><B>declare</B></A>
+ <I>class</I>
+ <I>optlist</I>
+</DD>
+<DD>Widget::<A HREF="#define"><B>define</B></A>
+ <I>class</I>
+ <I>filename</I>
+ ?<I>class ...</I>?
+</DD>
+<DD>Widget::<A HREF="#destroy"><B>destroy</B></A>
+ <I>path</I>
+</DD>
+<DD>Widget::<A HREF="#focusNext"><B>focusNext</B></A>
+ <I>w</I>
+</DD>
+<DD>Widget::<A HREF="#focusOK"><B>focusOK</B></A>
+ <I>w</I>
+</DD>
+<DD>Widget::<A HREF="#focusPrev"><B>focusPrev</B></A>
+ <I>w</I>
+</DD>
+<DD>Widget::<A HREF="#generate-doc"><B>generate-doc</B></A>
+ <I>dir</I>
+ <I>widgetlist</I>
+</DD>
+<DD>Widget::<A HREF="#generate-widget-doc"><B>generate-widget-doc</B></A>
+ <I>class</I>
+ <I>iscmd</I>
+ <I>file</I>
+</DD>
+<DD>Widget::<A HREF="#getoption"><B>getoption</B></A>
+ <I>path</I>
+ <I>option</I>
+</DD>
+<DD>Widget::<A HREF="#getVariable"><B>getVariable</B></A>
+ <I>path</I>
+ <I>varName</I>
+ <I>?myVarName?</I>
+</DD>
+<DD>Widget::<A HREF="#hasChanged"><B>hasChanged</B></A>
+ <I>path</I>
+ <I>option</I>
+ <I>pvalue</I>
+</DD>
+<DD>Widget::<A HREF="#init"><B>init</B></A>
+ <I>class</I>
+ <I>path</I>
+ <I>options</I>
+</DD>
+<DD>Widget::<A HREF="#setoption"><B>setoption</B></A>
+ <I>path</I>
+ <I>option</I>
+ <I>value</I>
+</DD>
+<DD>Widget::<A HREF="#subcget"><B>subcget</B></A>
+ <I>path</I>
+ <I>subwidget</I>
+</DD>
+<DD>Widget::<A HREF="#syncoptions"><B>syncoptions</B></A>
+ <I>class</I>
+ <I>subclass</I>
+ <I>subpath</I>
+ <I>options</I>
+</DD>
+<DD>Widget::<A HREF="#tkinclude"><B>tkinclude</B></A>
+ <I>class</I>
+ <I>tkwidget</I>
+ <I>subpath</I>
+ ?<I>arg...</I>?
+</DD>
+</DL>
+<BR><HR WIDTH="100%"><BR>
+<B><A NAME="descr"></A>DESCRIPTION</B><BR>
+<P>
+
+The <B>Widget</B> namespace handle data associated to all BWidget and provide commands
+to easily define BWidget.
+<BR>For commands can be used to define a BWidget:
+<B>tkinclude</B>, <B>bwinclude</B>, <B>declare</B>, <B>addmap</B> and <B>syncoptions</B>.
+Here is the definition of <A HREF="ComboBox.html">ComboBox</A> widget:
+<BR><BR>
+<CENTER>
+<TABLE BORDER=2 CELSPACING=2 WIDTH=80%>
+<TR><TD><PRE>
+namespace eval ComboBox {
+    <FONT COLOR=red><I># We're using ArrowButton, Entry and LabelFrame</I></FONT>
+    ArrowButton::use
+    Entry::use
+    LabelFrame::use
+
+    <FONT COLOR=red><I># Include resources of LabelFrame</I></FONT>
+    Widget::bwinclude ComboBox LabelFrame .labf \ 
+        rename     {-text -label} \ 
+        remove     {-focus} \ 
+        prefix     {label -justify -width -anchor -height -font} \ 
+        initialize {-relief sunken -borderwidth 2}
+
+    <FONT COLOR=red><I># Include resources of Entry</I></FONT>
+    Widget::bwinclude ComboBox Entry .e \ 
+        remove {-relief -bd -borderwidth -bg -fg} \ 
+        rename {-foreground -entryfg -background -entrybg}
+
+    <FONT COLOR=red><I># Declare new resources</I></FONT>
+    Widget::declare ComboBox {
+        {-height      TkResource 0  0 listbox}
+        {-values      String     "" 0}
+        {-modifycmd   String     "" 0}
+        {-postcommand String     "" 0}
+    }
+
+    <FONT COLOR=red><I># Map resources to subwidget</I></FONT>
+    Widget::addmap ComboBox "" :cmd {-background {}}
+    Widget::addmap ComboBox ArrowButton .a \ 
+        {-foreground {} -background {} -disabledforeground {} -state {}}
+
+    <FONT COLOR=red><I># Synchronize subwidget options</I></FONT>
+    Widget::syncoptions ComboBox Entry .e {-text {}}
+    Widget::syncoptions ComboBox LabelFrame .labf {-label -text -underline {}}
+
+    proc use {} {}
+}</PRE>
+</TD></TR>
+</TABLE></CENTER>
+
+</P>
+<HR WIDTH="50%"><BR>
+<B><A NAME="wc">COMMAND</A></B><BR>
+<DL><DT><A NAME="addmap">Widget::<B>addmap</B></A>
+ <I>class</I>
+ <I>subclass</I>
+ <I>subpath</I>
+ <I>options</I>
+</DT><DD>
+
+This command map some resources to subwidget.
+Mapped resources automatically configure subwidget when widget is configured.
+<UL>
+<LI><I>class</I> is the class of the new BWidget
+<LI><I>subclass</I> is the class the subwidget (BWidget class, e.g Entry, or empty for Tk widget)
+<LI><I>subpath</I> is the path of the subwidget
+<LI><I>options</I> is the list <I>{option realres ...}</I> of options to map to subwidget
+</UL>
+</DD></DL>
+<DL><DT><A NAME="bwinclude">Widget::<B>bwinclude</B></A>
+ <I>class</I>
+ <I>subclass</I>
+ <I>subpath</I>
+ ?<I>arg...</I>?
+</DT><DD>
+
+This command includes into a new BWidget the resources of another BWidget.
+Arguments are:
+<UL>
+<LI><I>class</I> class of the new widget
+<LI><I>subclass</I> class name of the BWidget to be included
+<LI><I>subpath</I>  path of the widget to configure when BWidget is configured
+<LI><I>options</I> is:
+<UL>
+<LI><I><B>include</B> {option option ...}</I>
+<BR>list of options to include (all if not defined)
+<LI><I><B>remove</B> {option option ...}</I>
+<BR> list of options to remove
+<LI><I><B>rename</B> {option name option name ...}</I>
+<BR>list of options to rename
+<LI><I><B>prefix</B> {prefix option option ...}</I>
+<BR>pefix all <I>option</I> by <I>prefix</I>
+<LI><I><B>initialize</B> {option value option value ...}</I>
+<BR>default value of options
+<LI><I><B>readonly</B> {option value option value ...}</I>
+<BR>new readonly flag
+</UL></UL>
+</DD></DL>
+<DL><DT><A NAME="cget">Widget::<B>cget</B></A>
+ <I>path</I>
+ <I>option</I>
+</DT><DD>
+
+Returns the value of <I>option</I> of BWidget <I>path</I>. <B>cget</B> tests the option
+existence and takes care of synchronization with subwidget.
+Typically called by the BWidget <B>cget</B> command.
+
+</DD></DL>
+<DL><DT><A NAME="configure">Widget::<B>configure</B></A>
+ <I>path</I>
+ <I>options</I>
+</DT><DD>
+Description text
+</DD></DL>
+
+<DL><DT><A NAME="create">Widget::<B>create</B></A>
+ <I>class</I>
+ <I>path</I>
+ ?<I>rename</I>?
+</DT><DD>
+    The standard method for creating a BWidget.  The real widget path
+    is renamed to $path:cmd, and a new proc is created to replace the
+    path which points to the BWidget's commands.
+
+    <p>
+    If <i>rename</i> is false, the path will not be renamed, but the
+    proc will still be created.  This is useful when inheriting another
+    BWidget who will already have renamed the widget.
+    </p>
+
+    <p>
+    The command returns the widget path.  This command is usually the
+    last command executed in the ::create command for the widget.
+    </p>
+</DD></DL>
+
+<DL><DT><A NAME="declare">Widget::<B>declare</B></A>
+ <I>class</I>
+ <I>optlist</I>
+</DT><DD>
+
+This command declare new resources for a BWidget.
+<UL>
+<LI><I>class</I> is class of the new widget
+<LI><I>options</I> is the list describing new options. Each new option is a list
+<B>{option type value ro ?args?}</B> where:
+<UL>
+<LI><I>option</I> is the name of the option
+<LI><I>type</I> is the type of the option
+<LI><I>value</I> is the default value of the option
+<LI><I>ro</I> is the readonly flag of the option
+<LI><I>args</I> depends on type
+</UL></UL>
+<BR>
+<I>type</I> can be:
+<BR>
+<DL>
+<DT><B>TkResource</B></DT>
+<DD>
+<I>value</I> of <I>option</I> denotes a resource of a Tk widget. <I>args</I> must be <I>class</I> or
+<I>{class realoption}</I>. <I>class</I> is the creation command of the Tk widget, e.g.
+<B>entry</B>.
+The second form must be used if <I>option</I> has not the same name in Tk widget,
+but <I>realoption</I>.
+<BR>If <I>value</I> is empty, it is initialized to the default value of the Tk widget.
+</DD>
+
+<DT><B>BwResource</B></DT>
+<DD>
+<I>value</I> of <I>option</I> denotes a resource of a BWidget. <I>args</I> must be <I>class</I> or
+<I>{class realoption}</I>. <I>class</I> is the name of the namespace of the BWidget, e.g.
+<B>LabelFrame</B>.
+The second form must be used if <I>option</I> has not the same name in BWidget,
+but <I>realoption</I>.
+<BR>If <I>value</I> is empty, it is initialized to the default value of the BWidget.
+</DD>
+
+<DT><B>Int</B></DT>
+<DD><I>value</I> of <I>option</I> is an integer.
+<I>args</I> can be <I>{?min? ?max?}</I> to force it to be in a range. The test is
+<I>[expr $option &gt; $min] && [expr $option &lt; $max]</I> so
+if args is <I>{0 10}</I>, value must be beetween 0 and 10 exclude,
+if <I>args</I> is <I>{=0 =10}</I> , value must be beetween 0 and 10 include.
+</DD>
+
+<DT><B>Boolean</B></DT>
+<DD><I>value</I> of <I>option</I> is a boolean. True values can be <B>1</B>, <B>true</B> or <B>yes</B>.
+False values can be <B>0</B>, <B>false</B> or <B>no</B>. <B>Widget::cget</B> always return
+0 or 1.
+</DD>
+
+<DT><B>Enum</B></DT>
+<DD>
+<I>value</I> of <I>option</I> is a element of a enumeration. <I>args</I> must be the list
+of enumeration, e.g. <I>{top left bottom right}</I>.
+</DD>
+
+<DT><B>Flag</B></DT>
+<DD>
+<I>value</I> of <I>option</I> is a combination of a set of chars. <I>args</I> must be a
+string defining the set.
+</DD>
+
+<DT><B>String</B></DT>
+<DD>
+<DD><I>value</I> of <I>option</I> is any uncontrolled string.
+</DD>
+
+<DT><B>Synonym</B></DT>
+<DD>
+<DD><I>option</I> is a synonym of option <I>args</I>. <I>value</I> has no effect here.
+</DD>
+</DL>
+</DD></DL>
+
+<DL><DT><A NAME="define">Widget::<B>define</B></A>
+ <I>class</I>
+ <I>filename</I>
+ ?<I>class ...</I>?
+</DT><DD>
+
+    <p>
+    This command is used to define a new BWidget class.  It is
+    usually the first command executed in a new widget definition.
+    </p>
+
+<ul>
+    <li><i>class</i> is the name of the new widget class.</li>
+    <li><i>filename</i> is the name of the file (without extension) in the
+    BWidget distribution that defines this class.</li>
+    <li><i>?-classonly?</i> If present, the class is not setup.</li>
+    <li><i>?-namespace ns?</i> The namespace where the widget's procedures live
+    in; defaults to the class name.</li>
+</ul>
+
+    <p>
+    Each class defined after the filename is a class that this widget
+    depends on.  The ::use command will be called for each of these
+    classes after the new widget has been defined.
+    </p>
+
+    <p>
+    If <i>-classonly</i> option is not given this command does several things to
+    setup the new class.  First, it creates an alias in the global namespace for
+    the name of the class that points to the class's ::create subcommand.
+    Second, it defines a ::use subcommand for the class which other classes can
+    use to load this class on the fly.  Lastly, it creates a default binding to
+    the &lt;Destroy&gt; event for the class that calls Widget::destroy on the
+    path.  This is the default setup for almost all widgets in the BWidget
+    package.
+    </p>
+
+</DD></DL>
+
+<DL><DT><A NAME="destroy">Widget::<B>destroy</B></A>
+ <I>path</I>
+</DT><DD>
+Description text
+</DD></DL>
+<DL><DT><A NAME="focusNext">Widget::<B>focusNext</B></A>
+ <I>w</I>
+</DT><DD>
+Description text
+</DD></DL>
+<DL><DT><A NAME="focusOK">Widget::<B>focusOK</B></A>
+ <I>w</I>
+</DT><DD>
+Description text
+</DD></DL>
+<DL><DT><A NAME="focusPrev">Widget::<B>focusPrev</B></A>
+ <I>w</I>
+</DT><DD>
+Description text
+</DD></DL>
+<DL><DT><A NAME="generate-doc">Widget::<B>generate-doc</B></A>
+ <I>dir</I>
+ <I>widgetlist</I>
+</DT><DD>
+Description text
+</DD></DL>
+<DL><DT><A NAME="generate-widget-doc">Widget::<B>generate-widget-doc</B></A>
+ <I>class</I>
+ <I>iscmd</I>
+ <I>file</I>
+</DT><DD>
+Description text
+</DD></DL>
+<DL><DT><A NAME="getoption">Widget::<B>getoption</B></A>
+ <I>path</I>
+ <I>option</I>
+</DT><DD>
+
+Returns the value of <I>option</I> of BWidget <I>path</I>. This command does not test
+option existence, does not handle synonym and does not take care of synchronization with
+subwidget.
+
+</DD></DL>
+<DL><DT><A NAME="getVariable">Widget::<B>getVariable</B></A>
+ <I>path</I>
+ <I>varName</I>
+ <I>?myVarName?</I>
+</DT><DD>
+
+<p>
+Make the variable <i>varName</i> relational to <i>path</i> accessible in
+the current procedure.  The variable will be created in the widget namespace
+for <i>path</i> and can be used for storing widget-specific information.
+When <i>path</i> is destroyed, any variable accessed in this manner will be
+destroyed with it.
+</p>
+
+<p>
+If <i>myVarName</i> is specified, the variable will be accessible in the
+current procedure as that name.
+</p>
+
+</DD></DL>
+<DL><DT><A NAME="hasChanged">Widget::<B>hasChanged</B></A>
+ <I>path</I>
+ <I>option</I>
+ <I>pvalue</I>
+</DT><DD>
+Description text
+</DD></DL>
+<DL><DT><A NAME="init">Widget::<B>init</B></A>
+ <I>class</I>
+ <I>path</I>
+ <I>options</I>
+</DT><DD>
+Description text
+</DD></DL>
+<DL><DT><A NAME="setoption">Widget::<B>setoption</B></A>
+ <I>path</I>
+ <I>option</I>
+ <I>value</I>
+</DT><DD>
+
+Set the value of <I>option</I> of BWidget <I>path</I> without option test, subwidget mapping,
+synonym handling and does not set the modification flag.
+
+</DD></DL>
+<DL><DT><A NAME="subcget">Widget::<B>subcget</B></A>
+ <I>path</I>
+ <I>subwidget</I>
+</DT><DD>
+
+Returns the list of all option/value of BWidget <I>path</I> that are mapped to <I>subwidget</I>.
+
+</DD></DL>
+<DL><DT><A NAME="syncoptions">Widget::<B>syncoptions</B></A>
+ <I>class</I>
+ <I>subclass</I>
+ <I>subpath</I>
+ <I>options</I>
+</DT><DD>
+
+This command synchronize options value of a subwidget.
+Used when an option of a subwidget is modified out of the BWidget <B>configure</B> command.
+<UL>
+<LI><I>class</I> is the class of the new BWidget
+<LI><I>subclass</I> is the class the subwidget (BWidget class, e.g Entry, or empty for Tk widget)
+<LI><I>subpath</I> is the path of the subwidget
+<LI><I>options</I> is the list <I>{option realres ...}</I> of options to synchronize 
+with subwidget
+</UL>
+</DD></DL>
+<DL><DT><A NAME="tkinclude">Widget::<B>tkinclude</B></A>
+ <I>class</I>
+ <I>tkwidget</I>
+ <I>subpath</I>
+ ?<I>arg...</I>?
+</DT><DD>
+
+This command includes into a new BWidget the resources of a Tk widget.
+Arguments are:
+<UL>
+<LI><I>class</I> class of the new widget
+<LI><I>tkwidger</I> command name of the Tk widget to be included
+<LI><I>subpath</I>  path of the widget to configure when BWidget is configured
+<LI><I>options</I> is:
+<UL>
+<LI><I><B>include</B> {option option ...}</I>
+<BR>list of options to include (all if not defined)
+<LI><I><B>remove</B> {option option ...}</I>
+<BR>list of options to remove
+<LI><I><B>rename</B> {option name option name ...}</I>
+<BR>list of options to rename
+<LI><I><B>prefix</B> {prefix option option ...}</I>
+<BR>pefix all <I>option</I> by <I>prefix</I>
+<LI><I><B>initialize</B> {option value option value ...}</I>
+<BR>default value of options
+<LI><I><B>readonly</B> {option value option value ...}</I>
+<BR>new readonly flag
+</UL></UL>
+</DD></DL>
+</BODY></HTML>
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/ButtonBox.html
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/ButtonBox.html	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/ButtonBox.html	(revision 3762)
@@ -0,0 +1,266 @@
+<HTML>
+<HEAD><TITLE>ButtonBox</TITLE></HEAD>
+<BODY BGCOLOR=white>
+<DL><DT><I><A HREF="#descr">NAME</A></I></DT>
+<DD><B>ButtonBox</B>
+ - Set of buttons with horizontal or vertical layout
+</DD></DL>
+<DL>
+<DT><I>CREATION</I></DT>
+<DD><A HREF="#descr"><B>ButtonBox</B></A> <I>pathName</I> ?<I>option value...</I>?</DD>
+</DL>
+<DL>
+<DT><I><A HREF="#wso">WIDGET-SPECIFIC OPTIONS</A></I></DT>
+<DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-background">-background or -bg</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="#-default">-default</A></TR>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-homogeneous">-homogeneous</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="#-orient">-orient</A></TR>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-padx">-padx</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="#-pady">-pady</A></TR>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-spacing">-spacing</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="#-state">-state</A></TR>
+</TABLE></DD>
+</DL>
+<DL>
+<DT><I><A HREF="#wc">WIDGET COMMAND</A></I></DT>
+<DD><I>pathName</I> <A HREF="#add"><B>add</B></A>
+ ?<I>option value...</I>?
+</DD>
+<DD><I>pathName</I> <A HREF="#cget"><B>cget</B></A>
+ <I>option</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#configure"><B>configure</B></A>
+ ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...?
+</DD>
+<DD><I>pathName</I> <A HREF="#delete"><B>delete</B></A>
+ <I>index</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#index"><B>index</B></A>
+ <I>index</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#insert"><B>insert</B></A>
+  <i>index</i> ?<I>option value...</I>?
+</DD>
+<DD><I>pathName</I> <A HREF="#invoke"><B>invoke</B></A>
+ <I>index</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#itemcget"><B>itemcget</B></A>
+ <I>index</I>
+ <I>option</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#itemconfigure"><B>itemconfigure</B></A>
+ <I>index</I>
+ ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...?
+</DD>
+<DD><I>pathName</I> <A HREF="#setfocus"><B>setfocus</B></A>
+ <I>index</I>
+</DD>
+</DL>
+<BR><HR WIDTH="100%"><BR>
+<B><A NAME="descr"></A>DESCRIPTION</B><BR>
+<P>
+
+ButtonBox layouts Button horizontally or vertically.
+Some commands take an <I>index</I> as argument indicating on which
+Button it work. This index may be specified in any of the following forms:
+<P>
+<DL COMPACT>
+<DT>
+<I>number</I>
+<DD>
+Specifies the Button numerically, where 0 corresponds
+to the first added Button, 1 to the next, and so on.
+<DT>
+<B>end</B> or <B>last</B>
+<DD>
+Indicates the last item added.
+<DT><B>default</B>
+<DD>
+Indicates the default Button.
+
+<DT>
+<i>name</i>
+<DD>
+Indicates the button whose <b>-name</b> option is <i>name</i>.
+
+<DT>
+<i>text</i>
+<DD>
+Indicates the button whose <b>-text</b> option is <i>text</i>.
+</DL>
+
+</P>
+<BR><HR WIDTH="50%"><BR>
+<B><A NAME="wso">WIDGET-SPECIFIC OPTIONS</A></B><BR>
+<DL><DT><A NAME="-background"><B>-background</B></A></DT>
+<DD>
+
+Specifies a default background color for all added buttons and for the frame.<BR>
+For <I>themed</I> wigets, the button color is not set.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-default"><B>-default</B></A></DT>
+<DD>
+
+Specifies the default button of the button box. The value is an integer
+referencing the n-th added button, starting from 0.
+If this value is -1 (the default), all button wil be drawn with their -default
+option set to disabled, and this value can not be changed. <BR>If this value is 
+not -1, the associated button is drawn with -default option set to active and
+the others are drawn with -default option set to normal. The value can be changed
+by configure.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-homogeneous"><B>-homogeneous (read-only)</B></A></DT>
+<DD>
+
+Specifies wether or not buttons must have the same width for horizontal layout.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-orient"><B>-orient (read-only)</B></A></DT>
+<DD>
+
+Specifies the orientation of the button box. If this option is <B>horizontal</B>
+(the default), buttons are added from top to bottom. 
+If this option is <B>vertical</B>, buttons are added from left to right.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-padx"><B>-padx</B></A></DT>
+<DD>
+
+Specifies a default value for the -padx option of all added buttons.<BR>
+Option has no effect for <I>themed</I> wigets.
+</DD>
+</DL>
+<DL><DT><A NAME="-pady"><B>-pady</B></A></DT>
+<DD>
+
+Specifies a default value for the -pady option of all added buttons.<BR>
+Option has no effect for <I>themed</I> wigets.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-spacing"><B>-spacing</B></A></DT>
+<DD>
+
+Specifies the default spacing between buttons. This value can be changed before each
+call to <B>add</B>.
+
+</DD>
+</DL>
+
+<DL><DT><A NAME="-state"><B>-state</B></A></DT>
+<DD>
+
+Specifies a state for all the buttons in the button box.  Can be any state supported by buttons.
+
+</DD>
+</DL>
+
+<HR WIDTH="50%"><BR>
+<B><A NAME="wc">WIDGET COMMAND</A></B><BR>
+<DL><DT><A NAME="add"><I>pathName</I> <B>add</B></A>
+ ?<I>option value...</I>?
+</DT><DD>
+
+Add a button to the button box.
+<P>
+See <A HREF="Button.html"><B>Button</B></A> for description of options.
+</DD></DL>
+<DL><DT><A NAME="cget"><I>pathName</I> <B>cget</B></A>
+ <I>option</I>
+</DT><DD>
+
+Returns the current value of the configuration option given by <I>option</I>.
+<I>Option</I> may have any of the values accepted by the creation command.
+</DD></DL>
+<DL><DT><A NAME="configure"><I>pathName</I> <B>configure</B></A>
+ ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...?
+</DT><DD>
+
+Query or modify the configuration options of the widget. If no <I>option</I> is specified,
+returns a list describing all of the available options for <I>pathName</I>.
+If <I>option</I> is specified with no <I>value</I>, then the command returns a list
+describing the one named <I>option</I> (this list will be identical to the corresponding
+sublist of the value returned if no <I>option</I> is specified). If one or
+more <I>option-value</I> pairs are specified, then the command modifies the given widget
+option(s) to have the given value(s); in this case the command returns an empty string.
+<I>Option</I> may have any of the values accepted by the creation command.
+Read-only options are not be modified.
+
+</DD></DL>
+
+<DL><DT><A NAME="delete"><I>pathName</I> <B>delete</B></A>
+ <I>index</I>
+</DT><DD>
+
+Delete the button at <i>index</i> from the button box.
+
+</DD></DL>
+
+<DL><DT><A NAME="index"><I>pathName</I> <B>index</B></A>
+ <I>index</I>
+</DT><DD>
+
+Return the numerical index corresponding to the item.
+
+</DD></DL>
+
+<DL><DT><A NAME="insert"><I>pathName</I> <B>insert</B></A>
+ <I>index</I> ?<I>option value...</I>?
+</DT><DD>
+
+Insert a new button into the button box before the given index.
+
+</DD></DL>
+
+<DL><DT><A NAME="invoke"><I>pathName</I> <B>invoke</B></A>
+ <I>index</I>
+</DT><DD>
+
+Invoke the Button given by <I>index</I>.
+
+</DD></DL>
+<DL><DT><A NAME="itemcget"><I>pathName</I> <B>itemcget</B></A>
+ <I>index</I>
+ <I>option</I>
+</DT><DD>
+
+Returns the current value of a configuration option for the item.
+<I>Option</I> may have any of the values accepted by the item creation command.
+
+</DD></DL>
+<DL><DT><A NAME="itemconfigure"><I>pathName</I> <B>itemconfigure</B></A>
+ <I>index</I>
+ ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...?
+</DT><DD>
+
+This command is similar to the <B>configure</B> command, except that it applies to the
+options for an individual item, whereas <B>configure</B> applies to the options for
+the widget as a whole. <B>Options</B> may have any of the values accepted by the 
+item creation widget command. If options are specified, options are modified as indicated
+in the command and the command returns an empty string. If no options are specified,
+returns a list describing the current options for the item.
+Read-only options are not be modified.
+
+</DD></DL>
+<DL><DT><A NAME="setfocus"><I>pathName</I> <B>setfocus</B></A>
+ <I>index</I>
+</DT><DD>
+
+Set the focus to the Button given by <I>index</I>.
+
+</DD></DL>
+</BODY></HTML>
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/DropSite.html
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/DropSite.html	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/DropSite.html	(revision 3762)
@@ -0,0 +1,266 @@
+<HTML>
+<HEAD><TITLE>DropSite</TITLE></HEAD>
+<BODY BGCOLOR=white>
+<DL><DT><I><A HREF="#descr">NAME</A></I></DT>
+<DD><B>DropSite</B>
+ - Commands set for Drop facilities
+</DD></DL>
+<DL>
+<DT><I><A HREF="#wc">COMMAND</A></I></DT>
+<DD>DropSite::<A HREF="#include"><B>include</B></A>
+ <I>class</I>
+ <I>types</I>
+</DD>
+<DD>DropSite::<A HREF="#register"><B>register</B></A>
+ <I>path</I>
+ ?<I>option value...</I>?
+</DD>
+<DD>DropSite::<A HREF="#setcursor"><B>setcursor</B></A>
+ <I>cursor</I>
+</DD>
+<DD>DropSite::<A HREF="#setdrop"><B>setdrop</B></A>
+ <I>path</I>
+ <I>subpath</I>
+ <I>dropover</I>
+ <I>drop</I>
+ ?<I>force</I>?
+</DD>
+<DD>DropSite::<A HREF="#setoperation"><B>setoperation</B></A>
+ <I>op</I>
+</DD>
+</DL>
+<BR><HR WIDTH="100%"><BR>
+<B><A NAME="descr"></A>DESCRIPTION</B><BR>
+<P>
+
+Commands of this namespace enable user to define a BWidget or a Tk widget as a drop site.
+A drop site is composed of the type of object that can be dropped and associated operation,
+a command called when drop occurs, and a command when an object is dragged over the widget.
+A drop site must have at least one type of acceptable object and a drop command.
+
+</P>
+<HR WIDTH="50%"><BR>
+<B><A NAME="wc">COMMAND</A></B><BR>
+<DL><DT><A NAME="include">DropSite::<B>include</B></A>
+ <I>class</I>
+ <I>types</I>
+</DT><DD>
+
+This command provides a simple way to include options relatives to a drop site into
+BWidget resources definition.
+It includes the options needed for <B>register</B>, <I>-dropovercmd</I> and <I>-dropcmd</I>,
+initialized to empty string, and <I>-droptypes</I>, initialized to <I>types</I>,
+and one new option:
+<TABLE BORDER=0 CELLSPACING=1>
+<TR><TD><I>-dropenabled</I><TD>Specifies wether or not drop is active (initialized to 0)
+</TABLE>
+
+</DD></DL>
+<DL><DT><A NAME="register">DropSite::<B>register</B></A>
+ <I>path</I>
+ ?<I>option value...</I>?
+</DT><DD>
+
+This command is used to declare <I>path</I> as a drop site. Options are:
+
+<P>
+<DL><DT><A NAME="DropSite-dropcmd"><B>-dropcmd</B></A></DT>
+<DD>
+
+This command is called when user release the drag icon over a valid
+drop target widget.  Arguments passed to the command are:
+
+<UL>
+<LI>pathname of the drop target (the widget itself),
+<LI>pathname of the drag source,
+<LI>root x-coordinate of the pointer,
+<LI>root y-coordinate of the pointer,
+<LI>operation,
+<LI>type of the dragged data,
+<LI>dragged data.
+</UL>
+
+Its return values is passed as a result to the <B>-dragendcmd</B>
+command of the drag source widget.
+
+</DD>
+</DL>
+<DL><DT><A NAME="DropSite-dropovercmd"><B>-dropovercmd</B></A></DT>
+<DD>
+
+This command can be used to provide a dynamic drag while <I>drag-over</I> events.
+While a drag occurs, events &lt;Enter&gt;, &lt;Motion&gt; and &lt;Leave&gt; are catched.
+Arguments passed to the command are:
+<UL>
+<LI>pathname of the drop target (the widget itself),
+<LI>pathname of the drag source,
+<LI>event over the drop target: <I>enter</I>, <I>motion</I> or <I>leave</I>,
+<LI>root x-coordinate of the pointer,
+<LI>root y-coordinate of the pointer,
+<LI>operation,
+<LI>type of the dragged data,
+<LI>dragged data.
+</UL>
+Command must the new status of the drag:
+<UL>
+<LI>0  if widget refuse this drag. Command will not be recalled on motion/leave event.
+<LI>1  if widget accept this drag. Command will not be recalled on motion/leave event.
+<LI>2  if widget refuse this drag. Command will be recalled on each motion event to reevaluate.
+<LI>3  if widget accept this drag. Command will be recalled on each motion event to reevaluate.
+
+</UL>
+Here is a list of events and associated actions on a DropSite widget. This example
+assumes that dragged data type is valid for the drop target.
+<B>status</B> is the status of the drag on a DropSite. Its value is:
+<BR><BR>
+
+<TABLE BORDER CELLSPACING=1 CELLPADDING=4>
+<TR>
+<TD WIDTH="18%" VALIGN="TOP" ALIGN="CENTER">Event</TD>
+<TD WIDTH="10%" VALIGN="TOP" ALIGN="CENTER">Old status</TD>
+<TD WIDTH="48%" VALIGN="TOP" ALIGN="CENTER">Action</TD>
+<TD WIDTH="24%" VALIGN="TOP" ALIGN="CENTER">New status</TD>
+</TR>
+<TR><TD WIDTH="18%" VALIGN="TOP" ROWSPAN=2>
+<FONT SIZE=2>&lt;Enter&gt;</FONT></TD>
+<TD WIDTH="10%" VALIGN="TOP" ROWSPAN=2>
+<FONT SIZE=2>-</FONT></TD>
+<TD WIDTH="48%" VALIGN="TOP">
+<FONT SIZE=2>if DropSite has <B>dropovercmd</B>, call it with <I>enter</I></FONT></TD>
+<TD WIDTH="24%" VALIGN="TOP">
+<FONT SIZE=2>result of <B>dropovercmd</B></FONT></TD>
+</TR>
+<TR><TD WIDTH="48%" VALIGN="TOP">
+<FONT SIZE=2>else</FONT></TD>
+<TD WIDTH="24%" VALIGN="TOP">
+<FONT SIZE=2>1</FONT></TD>
+</TR>
+<TR><TD WIDTH="18%" VALIGN="TOP" ROWSPAN=2>
+<FONT SIZE=2>&lt;Motion&gt;</FONT></TD>
+<TD WIDTH="10%" VALIGN="TOP">
+<FONT SIZE=2>0 or 1</FONT></TD>
+<TD WIDTH="48%" VALIGN="TOP">&nbsp;</TD>
+<TD WIDTH="24%" VALIGN="TOP">
+<FONT SIZE=2>unchanged</FONT></TD>
+</TR>
+<TR><TD WIDTH="10%" VALIGN="TOP">
+<FONT SIZE=2>2 or 3</FONT></TD>
+<TD WIDTH="48%" VALIGN="TOP">
+<FONT SIZE=2>call <B>dropovercmd</B> with <I>motion</I></FONT></TD>
+<TD WIDTH="24%" VALIGN="TOP">
+<FONT SIZE=2>result of <B>dropovercmd</B></FONT></TD>
+</TR>
+<TR><TD WIDTH="18%" VALIGN="TOP" ROWSPAN=2>
+<FONT SIZE=2>&lt;Leave&gt;</FONT>&nbsp;</TD>
+<TD WIDTH="10%" VALIGN="TOP">
+<FONT SIZE=2>0 or 1</FONT></TD>
+<TD WIDTH="48%" VALIGN="TOP">&nbsp;</TD>
+<TD WIDTH="24%" VALIGN="TOP">
+<FONT SIZE=2>-</FONT></TD>
+</TR>
+<TR><TD WIDTH="10%" VALIGN="TOP">
+<FONT SIZE=2>2 or 3</FONT></TD>
+<TD WIDTH="48%" VALIGN="TOP">
+<FONT SIZE=2>call <B>dropovercmd</B> with <I>leave</I></FONT></TD>
+<TD WIDTH="24%" VALIGN="TOP">
+<FONT SIZE=2>-</FONT></TD>
+</TR>
+<TR><TD WIDTH="18%" VALIGN="TOP" ROWSPAN=4>
+<FONT SIZE=2>&lt;Drop&gt;</FONT></TD>
+<TD WIDTH="10%" VALIGN="TOP">
+<FONT SIZE=2>0</FONT></TD>
+<TD WIDTH="48%" VALIGN="TOP">
+<FONT SIZE=2>call <B>dragendcmd</B> of drag source</FONT></TD>
+<TD WIDTH="24%" VALIGN="TOP" ROWSPAN=4>
+<FONT SIZE=2>-</FONT></TD>
+</TR>
+<TR><TD WIDTH="10%" VALIGN="TOP">
+<FONT SIZE=2>1</FONT></TD>
+<TD WIDTH="48%" VALIGN="TOP">
+<FONT SIZE=2>call <B>dropcmd</B> and call <B>dragendcmd</B> of drag source</FONT></TD>
+</TR>
+<TR><TD WIDTH="10%" VALIGN="TOP">
+<FONT SIZE=2>2</FONT></TD>
+<TD WIDTH="48%" VALIGN="TOP">
+<FONT SIZE=2>call <B>dropovercmd</B> with <I>leave</I> and call <B>dragendcmd</B> of drag source</FONT></TD>
+</TR>
+<TR><TD WIDTH="10%" VALIGN="TOP">
+<FONT SIZE=2>3</FONT></TD>
+<TD WIDTH="48%" VALIGN="TOP">
+<FONT SIZE=2>call <B>dropcmd</B> and call <B>dragendcmd</B> of drag source</FONT></TD>
+</TR>
+</TABLE>
+<BR>
+
+</DD>
+</DL>
+<DL><DT><A NAME="DropSite-droptypes"><B>-droptypes</B></A></DT>
+<DD>
+
+Specifies a list {<I>type</I> <I>oplist</I> ?<I>type</I> <I>oplist</I>? ...} of acceptable
+types and associated operations for the drop target.
+For each type, <I>oplist</I> is a list
+{<I>descops</I> <I>mod</I> ?<I>descops</I> <I>mod</I>? ...} describing operations and
+modifier keys for these operations.
+<I>descops</I> describe an operation. It can be a predefined operations (<B>copy</B>,
+<B>move</B> or <B>link</B>) or a new user defined operation, of the form {<I>subop</I>
+<B>baseop</B> ?<I>bitmap</I>?}.
+<I>subop</I> is the name given to the sub operation, <I>baseop</I> is the name of the
+base operation (<B>copy</B>, <B>move</B> or <B>link</B>) and <I>bitmap</I> is a bitmap
+to display for the operation.
+<BR>If <I>bitmap</I> is empty, the default bitmap of the base operation is used for the
+sub operation.
+<BR><I>subop</I> can be a base operation, in order to change the bitmap of a base operation.
+In this case, <I>baseop</I> must be empty or equal to <I>subop</I>.
+<BR><I>mod</I> is the modifer key for the operation. It can be:
+<UL>
+<LI><B>none</B> to specify that no modifier key is pressed. This modifier can only be used
+with a sub operation named <B>default</B> (and vice versa), which has the behaviour of not
+display any bitmap operation. For all type, if the modifier <B>none</B> is not given, it is
+automatically associated to the <B>default</B> sub operation of a <B>copy</B> base operation.
+<LI><B>program</B> to specifies a sub operation accessible only by <B>DropSite::setoperation</B>.
+<LI>A list combining <B>shift</B>, <B>control</B> and <B>alt</B>, which means their 
+corresponding key.
+</UL>
+
+</DD>
+</DL>
+</DD></DL>
+<DL><DT><A NAME="setcursor">DropSite::<B>setcursor</B></A>
+ <I>cursor</I>
+</DT><DD>
+
+This command can be used within the script <B>dragovercmd</B>. It is usefull to provide
+visual effect about the state of the drag.
+</DD></DL>
+<DL><DT><A NAME="setdrop">DropSite::<B>setdrop</B></A>
+ <I>path</I>
+ <I>subpath</I>
+ <I>dropover</I>
+ <I>drop</I>
+ ?<I>force</I>?
+</DT><DD>
+
+This command provides a simple way to call <B>register</B> during a BWidget creation or
+configuration.
+<UL>
+<LI><I>path</I> is the pathname of the BWidget,
+<LI><I>subpath</I> is the pathname of the tk widget where drag event occurs,
+<LI><I>dropover</I> is a command for <I>drag-over</I> event,
+<LI><I>drop</I> is a command for <I>drop</I> event,
+<LI><I>force</I> specifies wether or not to call <B>register</B> whenever no option value
+has changed (0 by default - for BWidget configuration, use 1 for BWidget creation).
+</UL>
+<B>setdrop</B> verifies the modification flag of options <B>dropenabled</B> and
+<B>droptypes</B> and calls <B>register</B> if needed according to the options values and
+<I>dropover</I> and <I>drop</I> arguments. <B>dropovercmd</B> and <B>dropcmd</B> are not
+taken from options of widget because they are considered as user command, called by
+BWidget implementation of <I>drag-over</I> and <I>drop</I> events.
+
+</DD></DL>
+<DL><DT><A NAME="setoperation">DropSite::<B>setoperation</B></A>
+ <I>op</I>
+</DT><DD>
+Description text
+</DD></DL>
+</BODY></HTML>
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/PagesManager.html
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/PagesManager.html	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/PagesManager.html	(revision 3762)
@@ -0,0 +1,180 @@
+<HTML>
+<HEAD><TITLE>PagesManager</TITLE></HEAD>
+<BODY BGCOLOR=white>
+<DL><DT><I><A HREF="#descr">NAME</A></I></DT>
+<DD><B>PagesManager</B>
+ - Pages manager widget
+</DD></DL>
+<DL>
+<DT><I>CREATION</I></DT>
+<DD><A HREF="#descr"><B>PagesManager</B></A> <I>pathName</I> ?<I>option value...</I>?</DD>
+</DL>
+<DL>
+<DT><I>STANDARD OPTIONS</I></DT>
+<DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-background">-background</A></TR>
+</TABLE></DD>
+</DL>
+<DL>
+<DT><I><A HREF="#wso">WIDGET-SPECIFIC OPTIONS</A></I></DT>
+<DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-height">-height</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="#-width">-width</A></TR>
+</TR>
+</TABLE></DD>
+</DL>
+<DL>
+<DT><I><A HREF="#wc">WIDGET COMMAND</A></I></DT>
+<DD><I>pathName</I> <A HREF="#add"><B>add</B></A>
+ <I>page</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#cget"><B>cget</B></A>
+ <I>option</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#compute_size"><B>compute_size</B></A>
+</DD>
+<DD><I>pathName</I> <A HREF="#configure"><B>configure</B></A>
+ ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...?
+</DD>
+<DD><I>pathName</I> <A HREF="#delete"><B>delete</B></A>
+ <I>page</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#getframe"><B>getframe</B></A>
+ <I>page</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#page"><B>page</B></A>
+ <I>first</I>
+ ?<I>last</I>?
+</DD>
+<DD><I>pathName</I> <A HREF="#pages"><B>pages</B></A>
+ ?<I>first</I>?
+ ?<I>last</I>?
+</DD>
+<DD><I>pathName</I> <A HREF="#raise"><B>raise</B></A>
+ ?<I>page</I>?
+</DD>
+</DL>
+<BR><HR WIDTH="100%"><BR>
+<B><A NAME="descr"></A>DESCRIPTION</B><BR>
+<P>
+
+PagesManager widget manages a set of pages and displays one of them.
+PagesManager does not provide any user access method, as NoteBook
+does, so it can be done through a listbox, a menu, radiobutton, or
+whatever.  The widget shows no pages during creation; there must be an
+explicit call to <B>raise</B> to display one.
+
+</P>
+<BR><HR WIDTH="50%"><BR>
+<B><A NAME="wso">WIDGET-SPECIFIC OPTIONS</A></B><BR>
+<DL><DT><A NAME="-height"><B>-height</B></A></DT>
+<DD>
+
+Specifies the desired height for the pages. If this option is equal to zero (the default)
+then the window will not request any size at all.
+In this case, user may want to call PagesManager::<B>compute_size</B> to make PagesManager
+larger enough to contains the largest page.
+</DD>
+</DL>
+<DL><DT><A NAME="-width"><B>-width</B></A></DT>
+<DD>
+
+Specifies the desired width for the pages. If this option is equal to zero (the default)
+then the window will not request any size at all.
+In this case, user may want to call PagesManager::<B>compute_size</B> to make PagesManager
+larger enough to contains the largest page.
+</DD>
+</DL>
+<HR WIDTH="50%"><BR>
+<B><A NAME="wc">WIDGET COMMAND</A></B><BR>
+<DL><DT><A NAME="add"><I>pathName</I> <B>add</B></A>
+ <I>page</I>
+</DT><DD>
+
+Add a new page identified by <I>page</I>, which is an arbitrary
+identifier.  The pathname of the new page is returned and widgets for
+the page should be created with this as the parent or ancestor.
+However, PagesManager manages its own geometry. <B>pack</B>,
+<B>grid</B> or an equivalent should not be used with the pathname
+returned by <B>add</B>.
+
+</DD></DL>
+<DL><DT><A NAME="cget"><I>pathName</I> <B>cget</B></A>
+ <I>option</I>
+</DT><DD>
+
+Returns the current value of the configuration option given by <I>option</I>.
+<I>Option</I> may have any of the values accepted by the creation command.
+</DD></DL>
+<DL><DT><A NAME="compute_size"><I>pathName</I> <B>compute_size</B></A>
+</DT><DD>
+
+This command can be called to make the PagesManager large enough to contain the largest page.
+
+</DD></DL>
+<DL><DT><A NAME="configure"><I>pathName</I> <B>configure</B></A>
+ ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...?
+</DT><DD>
+
+Query or modify the configuration options of the widget. If no <I>option</I> is specified,
+returns a list describing all of the available options for <I>pathName</I>.
+If <I>option</I> is specified with no <I>value</I>, then the command returns a list
+describing the one named <I>option</I> (this list will be identical to the corresponding
+sublist of the value returned if no <I>option</I> is specified). If one or
+more <I>option-value</I> pairs are specified, then the command modifies the given widget
+option(s) to have the given value(s); in this case the command returns an empty string.
+<I>Option</I> may have any of the values accepted by the creation command.
+Read-only options are not be modified.
+
+</DD></DL>
+<DL><DT><A NAME="delete"><I>pathName</I> <B>delete</B></A>
+ <I>page</I>
+</DT><DD>
+
+Deletes the page <I>page</I>.
+
+</DD></DL>
+<DL><DT><A NAME="getframe"><I>pathName</I> <B>getframe</B></A>
+ <I>page</I>
+</DT><DD>
+
+Returns the pathname of the page <I>page</I>.
+
+</DD></DL>
+<DL><DT><A NAME="page"><I>pathName</I> <B>page</B></A>
+ <I>first</I>
+ ?<I>last</I>?
+</DT><DD>
+
+<B>Its use is deprecated. Use <I>pages</I> instead.</B><BR>
+If <I>last</I> is omitted, returns the page at index <I>first</I>, or an empty string if
+<I>first</I> refers to a non-existent element. If <I>last</I> is specified, the command
+returns a list whose elements are all of the pages between <I>first</I> and <I>last</I>,
+inclusive. Both <I>first</I> and <I>last</I> may have any of the standard
+forms for indices.
+
+</DD></DL>
+<DL><DT><A NAME="pages"><I>pathName</I> <B>pages</B></A>
+ ?<I>first</I>?
+ ?<I>last</I>?
+</DT><DD>
+
+If <I>first</I> and <I>last</I> are omitted, returns the list of all pages.
+If <I>first</I> is specified and <I>last</I> omitted, returns the page at index
+<I>first</I>, or an empty string if <I>first</I> refers to a non-existent element.
+If <I>first</I> and <I>last</I> are specified, the command returns a list whose elements
+are all of the pages between <I>first</I> and <I>last</I>,
+inclusive. Both <I>first</I> and <I>last</I> may have any of the standard
+forms for indices.
+
+</DD></DL>
+<DL><DT><A NAME="raise"><I>pathName</I> <B>raise</B></A>
+ ?<I>page</I>?
+</DT><DD>
+
+Raise the page <I>page</I>, or return the raised page if <I>page</I> is omitted.
+
+</DD></DL>
+</BODY></HTML>
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/ProgressDlg.html
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/ProgressDlg.html	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/ProgressDlg.html	(revision 3762)
@@ -0,0 +1,145 @@
+<HTML>
+<HEAD><TITLE>ProgressDlg</TITLE></HEAD>
+<BODY BGCOLOR=white>
+<DL><DT><I><A HREF="#descr">NAME</A></I></DT>
+<DD><B>ProgressDlg</B>
+ - Progress indicator dialog box
+</DD></DL>
+<DL>
+<DT><I>CREATION</I></DT>
+<DD><A HREF="#descr"><B>ProgressDlg</B></A> <I>pathName</I> ?<I>option value...</I>?</DD>
+</DL>
+<DL>
+<DT><I>STANDARD OPTIONS</I></DT>
+<DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-font">-font</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-textvariable">-textvariable</A></TR>
+</TR>
+</TABLE></DD>
+</DL>
+<DL>
+<DT><I><A HREF="Dialog.html">OPTIONS from <B>Dialog</B></A></I></DT>
+<DD><TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+<TR>
+<TD>&nbsp;&nbsp;-background or -bg</TD>
+<TD>&nbsp;&nbsp;-parent</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-separator</TD>
+<TD>&nbsp;&nbsp;-title</TD>
+</TR>
+</TABLE></DD>
+</DL>
+<DL>
+<DT><I><A HREF="ProgressBar.html">OPTIONS from <B>ProgressBar</B></A></I></DT>
+<DD><TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+<TR>
+<TD>&nbsp;&nbsp;-background or -bg</TD>
+<TD>&nbsp;&nbsp;-borderwidth or -bd</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-foreground or -fg</TD>
+<TD>&nbsp;&nbsp;-maximum</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-relief</TD>
+<TD>&nbsp;&nbsp;-troughcolor</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-type</TD>
+<TD>&nbsp;&nbsp;-variable</TD>
+</TR>
+</TABLE></DD>
+</DL>
+<DL>
+<DT><I><A HREF="#wso">WIDGET-SPECIFIC OPTIONS</A></I></DT>
+<DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-command">-command</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="#-height">-height</A></TR>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-stop">-stop</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="#-width">-width</A></TR>
+</TR>
+</TABLE></DD>
+</DL>
+<DL>
+<DT><I><A HREF="#wc">WIDGET COMMAND</A></I></DT>
+<DD><I>pathName</I> <A HREF="#cget"><B>cget</B></A>
+ <I>option</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#configure"><B>configure</B></A>
+ ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...?
+</DD>
+</DL>
+<BR><HR WIDTH="100%"><BR>
+<B><A NAME="descr"></A>DESCRIPTION</B><BR>
+<P>
+
+ProgressDlg provides a simple way to display a progress indicator dialog.
+ProgressDlg::<B>create</B> creates the dialog, displays it, set a local
+grab to it and immediatly return. The dialog is updated by modifying the 
+value of the variable of options <B>-textvariable</B> and <B>-variable</B>.
+You have to destroy the dialog after use.
+
+</P>
+<BR><HR WIDTH="50%"><BR>
+<B><A NAME="wso">WIDGET-SPECIFIC OPTIONS</A></B><BR>
+<DL><DT><A NAME="-command"><B>-command</B></A></DT>
+<DD>
+
+Specifies a command to call when user press stop button.  Note that it
+is the program's responsibility to periodically call <B>update</B> so
+that button press events can be generated.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-height"><B>-height</B></A></DT>
+<DD>
+
+Specifies a desired height for the label in lines of text.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-stop"><B>-stop</B></A></DT>
+<DD>
+
+Specifies the text of the button typically used to stop process. If empty, no button will
+be drawn. This can be a symbolic name.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-width"><B>-width</B></A></DT>
+<DD>
+
+Specifies a desired width for the label in characters.
+
+</DD>
+</DL>
+<HR WIDTH="50%"><BR>
+<B><A NAME="wc">WIDGET COMMAND</A></B><BR>
+<DL><DT><A NAME="cget"><I>pathName</I> <B>cget</B></A>
+ <I>option</I>
+</DT><DD>
+
+Returns the current value of the configuration option given by <I>option</I>.
+<I>Option</I> may have any of the values accepted by the creation command.
+</DD></DL>
+<DL><DT><A NAME="configure"><I>pathName</I> <B>configure</B></A>
+ ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...?
+</DT><DD>
+
+Query or modify the configuration options of the widget. If no <I>option</I> is specified,
+returns a list describing all of the available options for <I>pathName</I>.
+If <I>option</I> is specified with no <I>value</I>, then the command returns a list
+describing the one named <I>option</I> (this list will be identical to the corresponding
+sublist of the value returned if no <I>option</I> is specified). If one or
+more <I>option-value</I> pairs are specified, then the command modifies the given widget
+option(s) to have the given value(s); in this case the command returns an empty string.
+<I>Option</I> may have any of the values accepted by the creation command.
+Read-only options are not be modified.
+
+</DD></DL>
+</BODY></HTML>
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/contents.html
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/contents.html	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/contents.html	(revision 3762)
@@ -0,0 +1,95 @@
+<HTML><BODY BGCOLOR=white target=Manual>
+<BR><BR><DT><B>Simple Widgets</B>
+<DD><TABLE BORDER=0 CELLSPACING=0>
+<TR><TD><A HREF="Label.html">Label</A></TD>
+<TD>Label widget with <B>state</B> option, dynamic help and drag and drop facilities</TD></TR>
+<TR><TD><A HREF="Entry.html">Entry</A></TD>
+<TD>Entry widget with <B>state</B> option, dynamic help and drag and drop facilities</TD></TR>
+<TR><TD><A HREF="Button.html">Button</A></TD>
+<TD>Button widget with enhanced options</TD></TR>
+<TR><TD><A HREF="ArrowButton.html">ArrowButton</A></TD>
+<TD>Button widget with an arrow shape.</TD></TR>
+<TR><TD><A HREF="ProgressBar.html">ProgressBar</A></TD>
+<TD>Progress indicator widget</TD></TR>
+<TR><TD><A HREF="ScrollView.html">ScrollView</A></TD>
+<TD>Display the visible area of a scrolled window</TD></TR>
+<TR><TD><A HREF="Separator.html">Separator</A></TD>
+<TD>3D separator widget</TD></TR>
+</TABLE>
+<BR><BR><DT><B>Manager Widgets</B>
+<DD><TABLE BORDER=0 CELLSPACING=0>
+<TR><TD><A HREF="MainFrame.html">MainFrame</A></TD>
+<TD>Manage toplevel with menu, toolbar and statusbar </TD></TR>
+<TR><TD><A HREF="LabelFrame.html">LabelFrame</A></TD>
+<TD>Frame with a Label</TD></TR>
+<TR><TD><A HREF="TitleFrame.html">TitleFrame</A></TD>
+<TD>Frame with a title (consider Tk 8.4+ labelframe instead)</TD></TR>
+<TR><TD><A HREF="PanelFrame.html">PanelFrame</A></TD>
+<TD>Frame with a boxed title area</TD></TR>
+<TR><TD><A HREF="ScrolledWindow.html">ScrolledWindow</A></TD>
+<TD>Generic scrolled widget</TD></TR>
+<TR><TD><A HREF="ScrollableFrame.html">ScrollableFrame</A></TD>
+<TD>Scrollable frame containing widget</TD></TR>
+<TR><TD><A HREF="PanedWindow.html">PanedWindow</A></TD>
+<TD>Tiled layout manager widget (consider Tk 8.4+ panedwindow instead)</TD></TR>
+<TR><TD><A HREF="ButtonBox.html">ButtonBox</A></TD>
+<TD>Set of buttons with horizontal or vertical layout</TD></TR>
+<TR><TD><A HREF="PagesManager.html">PagesManager</A></TD>
+<TD>Pages manager widget</TD></TR>
+<TR><TD><A HREF="NoteBook.html">NoteBook</A></TD>
+<TD>Notebook manager widget</TD></TR>
+<TR><TD><A HREF="Dialog.html">Dialog</A></TD>
+<TD>Dialog abstraction with custom buttons</TD></TR>
+<TR><TD><A HREF="StatusBar.html">StatusBar</A></TD>
+<TD>Status bar widget with resize control</TD></TR>
+</TABLE>
+<BR><BR><DT><B>Composite Widgets</B>
+<DD><TABLE BORDER=0 CELLSPACING=0>
+<TR><TD><A HREF="LabelEntry.html">LabelEntry</A></TD>
+<TD>
+LabelFrame containing an Entry widget.
+</TD></TR>
+<TR><TD><A HREF="ComboBox.html">ComboBox</A></TD>
+<TD>ComboBox widget</TD></TR>
+<TR><TD><A HREF="SpinBox.html">SpinBox</A></TD>
+<TD>SpinBox widget (consider Tk 8.4+ spinbox instead)</TD></TR>
+<TR><TD><A HREF="Tree.html">Tree</A></TD>
+<TD>Tree widget</TD></TR>
+<TR><TD><A HREF="ListBox.html">ListBox</A></TD>
+<TD>ListBox widget</TD></TR>
+<TR><TD><A HREF="MessageDlg.html">MessageDlg</A></TD>
+<TD>Message dialog box</TD></TR>
+<TR><TD><A HREF="ProgressDlg.html">ProgressDlg</A></TD>
+<TD>Progress indicator dialog box</TD></TR>
+<TR><TD><A HREF="PasswdDlg.html">PasswdDlg</A></TD>
+<TD>Login/Password dialog box</TD></TR>
+<TR><TD><A HREF="SelectFont.html">SelectFont</A></TD>
+<TD>Font selection widget</TD></TR>
+<TR><TD><A HREF="SelectColor.html">SelectColor</A></TD>
+<TD>Color selection widget</TD></TR>
+</TABLE>
+<BR><BR><DT><B>Commands Classes</B>
+<DD><TABLE BORDER=0 CELLSPACING=0>
+<TR><TD><A HREF="Widget.html">Widget</A></TD>
+<TD>The Widget base class</TD></TR>
+<TR><TD><A HREF="DynamicHelp.html">DynamicHelp</A></TD>
+<TD>Provide help to Tk widget or BWidget</TD></TR>
+<TR><TD><A HREF="DragSite.html">DragSite</A></TD>
+<TD>Commands set for Drag facilities</TD></TR>
+<TR><TD><A HREF="DropSite.html">DropSite</A></TD>
+<TD>Commands set for Drop facilities</TD></TR>
+<TR><TD><A HREF="BWidget.html">BWidget</A></TD>
+<TD>Description text</TD></TR>
+</TABLE>
+</DD>
+
+<BR><HR><BR><B>Load BWidget</B><BR><BR>
+
+Possible load sequence:
+<pre>
+# If package msgcat is available, its locale is used for BWidget
+package require msgcat
+# load BWidget
+package require BWidget
+</pre>
+</BODY></HTML>
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/Tree.html
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/Tree.html	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/Tree.html	(revision 3762)
@@ -0,0 +1,937 @@
+<HTML>
+<HEAD><TITLE>Tree</TITLE></HEAD>
+<BODY BGCOLOR=white>
+<DL><DT><I><A HREF="#descr">NAME</A></I></DT>
+<DD><B>Tree</B>
+ - Tree widget
+</DD></DL>
+<DL>
+<DT><I>CREATION</I></DT>
+<DD><A HREF="#descr"><B>Tree</B></A> <I>pathName</I> ?<I>option value...</I>?</DD>
+</DL>
+<DL>
+<DT><I>STANDARD OPTIONS</I></DT>
+<DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-background">-background or -bg</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-borderwidth">-borderwidth or -bd</A></TD>
+</TR>
+<TR>
+    <TD>&nbsp;&nbsp;<A HREF="options.htm#M-cursor">-cursor</A></TD>
+    <TD>&nbsp;&nbsp;<A HREF="options.htm#M-highlightbackground">-highlightbackground</A></TD>
+</TR>
+<TR>
+    <TD>&nbsp;&nbsp;<A HREF="options.htm#M-highlightcolor">-highlightcolor</A></TD>
+    <TD>&nbsp;&nbsp;<A HREF="options.htm#M-highlightthickness">-highlightthickness</A></TD>
+</TR>
+<TR>
+    <TD>&nbsp;&nbsp;<A HREF="options.htm#M-relief">-relief</A></TD>
+    <TD>&nbsp;&nbsp;<A HREF="options.htm#M-selectbackground">-selectbackground</A></TD>
+</TR>
+<TR>
+    <TD>&nbsp;&nbsp;<A HREF="options.htm#M-selectforeground">-selectforeground</A></TD>
+    <TD>&nbsp;&nbsp;<A HREF="options.htm#M-takefocus">-takefocus</A></TD>
+</TR>
+<TR>
+    <TD>&nbsp;&nbsp;<A HREF="options.htm#M-xscrollcommand">-xscrollcommand</A></TD>
+    <TD>&nbsp;&nbsp;<A HREF="options.htm#M-yscrollcommand">-yscrollcommand</A></TD>
+</TR>
+</TABLE></DD>
+</DL>
+<DL>
+<DT><I><A HREF="#wso">WIDGET-SPECIFIC OPTIONS</A></I></DT>
+<DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-closecmd">-closecmd</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="#-crossfill">-crossfill</A></TD>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-crossclosebitmap">-crossclosebitmap</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="#-crosscloseimage">-crosscloseimage</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-crossopenbitmap">-crossopenbitmap</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="#-crossopenimage">-crossopenimage</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-deltax">-deltax</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="#-deltay">-deltay</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-dragenabled">-dragenabled</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="#-dragendcmd">-dragendcmd</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-dragevent">-dragevent</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="#-draginitcmd">-draginitcmd</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-dragtype">-dragtype</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="#-dropcmd">-dropcmd</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-dropenabled">-dropenabled</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="#-dropovercmd">-dropovercmd</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-dropovermode">-dropovermode</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="#-droptypes">-droptypes</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-height">-height</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="#-linesfill">-linesfill</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-linestipple">-linestipple</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="#-opencmd">-opencmd</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-padx">-padx</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="#-redraw">-redraw</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-selectcommand">-selectcommand</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="#-selectfill">-selectfill</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-showlines">-showlines</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="#-width">-width</A></TD>
+</TR>
+</TABLE></DD>
+</DL>
+
+<DL>
+<DT><I><A HREF="#wc">WIDGET COMMAND</A></I></DT>
+<DD><I>pathName</I> <A HREF="#bindArea"><B>bindArea</B></A>
+ <I>event</I>
+ <I>script</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#bindImage"><B>bindImage</B></A>
+ <I>event</I>
+ <I>script</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#bindText"><B>bindText</B></A>
+ <I>event</I>
+ <I>script</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#cget"><B>cget</B></A>
+ <I>option</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#closetree"><B>closetree</B></A>
+ <I>node</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#configure"><B>configure</B></A>
+ ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...?
+</DD>
+<DD><I>pathName</I> <A HREF="#delete"><B>delete</B></A>
+ ?<I>arg...</I>?
+</DD>
+<DD><I>pathName</I> <A HREF="#edit"><B>edit</B></A>
+ <I>node</I>
+ <I>text</I>
+ ?<I>verifycmd</I>?
+ ?<I>clickres</I>?
+ ?<I>select</I>?
+</DD>
+<DD><I>pathName</I> <A HREF="#exists"><B>exists</B></A>
+ <I>node</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#find"><B>find</B></A>
+ <I>findinfo</I>
+ ?<I>confine</I>?
+</DD>
+<DD><I>pathName</I> <A HREF="#index"><B>index</B></A>
+ <I>node</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#insert"><B>insert</B></A>
+ <I>index</I>
+ <I>parent</I>
+ <I>node</I>
+ ?<I>option value...</I>?
+</DD>
+<DD><I>pathName</I> <A HREF="#itemcget"><B>itemcget</B></A>
+ <I>node</I>
+ <I>option</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#itemconfigure"><B>itemconfigure</B></A>
+ <I>node</I>
+ ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...?
+</DD>
+<DD><I>pathName</I> <A HREF="#line"><B>line</B></A>
+ <I>node</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#move"><B>move</B></A>
+ <I>parent</I>
+ <I>node</I>
+ <I>index</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#nodes"><B>nodes</B></A>
+ <I>node</I>
+ ?<I>first</I>?
+ ?<I>last</I>?
+</DD>
+<DD><I>pathName</I> <A HREF="#opentree"><B>opentree</B></A>
+ <I>node</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#parent"><B>parent</B></A>
+ <I>node</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#reorder"><B>reorder</B></A>
+ <I>node</I>
+ <I>neworder</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#see"><B>see</B></A>
+ <I>node</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#selection"><B>selection</B></A>
+ <I>cmd</I>
+ ?<I>arg...</I>?
+</DD>
+<DD><I>pathName</I> <A HREF="#toggle"><B>toggle</B></A>
+ <I>node</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#visible"><B>visible</B></A>
+ <I>node</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#xview"><B>xview</B></A>
+ ?<I>arg...</I>?
+</DD>
+<DD><I>pathName</I> <A HREF="#yview"><B>yview</B></A>
+ ?<I>arg...</I>?
+</DD>
+</DL>
+<BR><HR WIDTH="100%"><BR>
+<B><A NAME="descr"></A>DESCRIPTION</B><BR>
+<P>
+
+<B>Tree</B> widget uses canvas to display a hierarchical list of items (called nodes).
+Each node is composed of a label with its own font and foreground attributes, and an optional
+image or window. Each node can have a list of subnodes, which can be collapsed or expanded.
+Each node is drawn in a single line, whose height is defined by the
+<B>deltay</B> option, so they must have at most this height.
+A node is uniquely identified by a string given at creation (by the
+<B>insert</B> command). The node named <I>root</I> is the root of
+the tree and is not drawn.
+The tree structure is directly maintained by the widget.
+
+</P>
+<BR><HR WIDTH="50%"><BR>
+<B><A NAME="wso">WIDGET-SPECIFIC OPTIONS</A></B><BR>
+<DL><DT><A NAME="-closecmd"><B>-closecmd</B></A></DT>
+<DD>
+
+Specifies a command to be called when user close a node. The
+closed node is appended to the command.
+
+</DD>
+</DL>
+
+<DL>
+    <DT><A NAME="-crossfill"><B>-crossfill</B></A></DT>
+    <DD>
+    Specifies a foreground color for the cross bitmap.
+    </DD>
+</DL>
+
+<DL><DT><A NAME="-crossclosebitmap"><B>-crossclosebitmap</B></A></DT>
+<DD>
+    Specifies a bitmap to be displayed in place of the standard cross
+    when a node is closed.
+</DD>
+</DL>
+
+<DL><DT><A NAME="-crosscloseimage"><B>-crosscloseimage</B></A></DT>
+<DD>
+    Specifies an image to be displayed in place of the standard cross
+    when a node is closed.  Overrides the -crossclosebitmap option.
+</DD>
+</DL>
+
+<DL><DT><A NAME="-crossopenbitmap"><B>-crossopenbitmap</B></A></DT>
+<DD>
+    Specifies a bitmap to be displayed in place of the standard cross
+    when a node is open.
+</DD>
+</DL>
+
+<DL><DT><A NAME="-crossopenimage"><B>-crossopenimage</B></A></DT>
+<DD>
+    Specifies an image to be displayed in place of the standard cross
+    when a node is open.  Overrides the -crossopenbitmap option.
+</DD>
+</DL>
+
+<DL><DT><A NAME="-deltax"><B>-deltax</B></A></DT>
+<DD>
+
+Specifies horizontal indentation between a node and its children.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-deltay"><B>-deltay</B></A></DT>
+<DD>
+
+Specifies vertical size of the nodes.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-dragenabled"><B>-dragenabled</B></A></DT>
+<DD>
+A boolean specifying if drag is enabled.
+</DD>
+</DL>
+<DL><DT><A NAME="-dragendcmd"><B>-dragendcmd</B></A></DT>
+<DD>
+
+Specifies a command to be called when drag ended.
+<B>dragendcmd</B> must be a command conforming to the description of the
+option <B>dragendcmd</B> of <B>DragSite::<A HREF="DragSite.html#register">register</A></B>.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-dragevent"><B>-dragevent</B></A></DT>
+<DD>
+
+Specifies the number of the mouse button associated to the drag.
+Must be <B>1</B>, <B>2</B> or <B>3</B>.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-draginitcmd"><B>-draginitcmd</B></A></DT>
+<DD>
+
+Tree has a command wrapper for <I>drag-init</I> events. This command refused the drag
+if no node is designated. In other cases:
+<BR>If <B>draginitcmd</B> is empty, it returns:
+<UL>
+<LI>the value of option <B>dragtype</B> or <I>TREE_NODE</I> if empty as the data type, 
+<LI><I>{copy move link}</I> as the operations, 
+<LI>the node identifier as the data.
+</UL>
+If <B>draginitcmd</B> is not empty, it is called with the following arguments:
+<UL>
+<LI>the pathname of the tree,
+<LI>the identifier of the dragged node,
+<LI>the toplevel created to represent dragged data.
+</UL>
+and must return a value conforming to <B>draginitcmd</B> option described in
+<B>DragSite::<A HREF="DragSite.html#register">register</A></B>.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-dragtype"><B>-dragtype</B></A></DT>
+<DD>
+
+Specifies an alternate type of dragged object.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-dropcmd"><B>-dropcmd</B></A></DT>
+<DD>
+
+Tree has a command wrapper for <I>drop</I> events. This command stops auto scrolling
+and extract node and position.
+<BR>If <B>dropcmd</B> is not empty, it is called with the following arguments:
+<UL>
+<LI>the pathname of the tree,
+<LI>the pathname of the drag source,
+<LI>a list describing where the drop occurs. It can be:
+<UL>
+<LI><I>{</I><B>widget</B><I>}</I>,
+<LI><I>{</I><B>node</B> <I>node}</I> or
+<LI><I>{</I><B>position</B> <I>node index}</I>.
+</UL>
+<LI>the current operation,
+<LI>the data type,
+<LI>the data.
+</UL>
+
+
+</DD>
+</DL>
+<DL><DT><A NAME="-dropenabled"><B>-dropenabled</B></A></DT>
+<DD>
+A boolean specifying if drop is enabled.
+</DD>
+</DL>
+<DL><DT><A NAME="-dropovercmd"><B>-dropovercmd</B></A></DT>
+<DD>
+
+Tree has a command wrapper for <I>drag-over</I> events. This command enables auto scrolling
+and position extraction during the <I>drag-over</I>.
+If <B>dropovercmd</B> is not empty, the command is called with the following aguments:
+<UL>
+<LI>the pathname of the tree,
+<LI>the pathname of the drag source,
+<LI>a list describing where the drop can occur, whose elements are:
+<UL>
+<LI>the string <I>widget</I> if <B>dropovertype</B> option contains <I>w</I>, else empty string.
+<LI>the targeted node if drag icon points a node and <B>dropovertype</B> option contains <I>n</I>, else empty string.
+<LI>a list containing a node and the position within the children of the node where drag 
+icon points to if <B>dropovertype</B> option contains <I>p</I>, else empty string.
+<LI>optionally, the preferred method if drop can occur both inside a node and between two
+nodes. The value is <I>position</I> or <I>node</I>.
+</UL>
+<LI>the current operation,
+<LI>the data type,
+<LI>the data.
+</UL>
+The command must return a list with two elements:
+<UL>
+<LI>the drop status, conforming to those described in <B>dropovercmd</B> option of
+<B>DropSite::<A HREF="DropSite.html#register">register</A></B>,
+<LI>the choosen method: <I>widget</I>, <I>node</I> or <I>position</I>.
+</UL>
+
+</DD>
+</DL>
+<DL><DT><A NAME="-dropovermode"><B>-dropovermode</B></A></DT>
+<DD>
+
+Specifies the type of <I>drop-over</I> interaction. Must be a combination of
+<B>w</B>, which specifies that drop can occurs everywhere on widget,
+<B>p</B>, which specifies that drop can occurs between two nodes,
+and <B>n</B>, which specifies that drop occurs inside nodes.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-droptypes"><B>-droptypes</B></A></DT>
+<DD>
+
+Specifies a list of accepted dropped object/operation.
+See option <B>droptypes</B> of
+<B>DropSite::<A HREF="DropSite.html#register">register</A></B>.
+for more infromation.
+
+<BR>Default is <I>TREE_NODE</I> with operations <B>copy</B> and <B>move</B>.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-height"><B>-height</B></A></DT>
+<DD>
+
+Specifies the desired height for the tree in units of <B>deltay</B> pixels.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-linesfill"><B>-linesfill</B></A></DT>
+<DD>
+
+Specifies a foreground color for the lines between nodes.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-linestipple"><B>-linestipple</B></A></DT>
+<DD>
+
+Specifies a stipple bitmap for the lines between nodes.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-opencmd"><B>-opencmd</B></A></DT>
+<DD>
+
+Specifies a command to be called when the user opens a node. The name
+of the opened node is appended to the command.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-padx"><B>-padx</B></A></DT>
+<DD>
+
+Specifies distance between image or window and text of the nodes.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-redraw"><B>-redraw</B></A></DT>
+<DD>
+
+Specifies wether or not the tree should be redrawn when entering idle.
+Set it to false if you call <B>update</B> while modifying the tree.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-selectcommand"><B>-selectcommand</B></A></DT>
+<DD>
+
+Specifies a command to be called when the selection is changed. The
+path of the tree widget and the selected nodes are appended to the
+command.
+
+</DD>
+</DL>
+
+<DL><DT><A NAME="-selectfill"><B>-selectfill</B></A></DT>
+<DD>
+    If true, the selection box will be drawn across the entire tree from
+    left-to-right instead of just around the item text.
+</DD>
+</DL>
+
+<DL><DT><A NAME="-showlines"><B>-showlines</B></A></DT>
+<DD>
+
+Specifies whether or not lines should be drawn between nodes.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-width"><B>-width</B></A></DT>
+<DD>
+
+Specifies the desired width for the tree in units of 8 pixels.
+
+</DD>
+</DL>
+<HR WIDTH="50%"><BR>
+
+<B><A NAME="nodes">NODE NAMES</A></B><BR>
+<p>
+Certain special characters in node names are automatically substituted
+by the tree during operation.  These characters are <b>&amp; | ^ !</b>.
+They are all substituted with a <b>_</b> character.  This is only to
+avoid errors because the characters are special to the tree widget.
+</p>
+
+<B><A NAME="wc">WIDGET COMMAND</A></B><BR>
+<DL><DT><A NAME="bindArea"><I>pathName</I> <B>bindArea</B></A>
+ <I>event</I>
+ <I>script</I>
+</DT><DD>
+
+This command associates a command to execute whenever the event
+sequence given by <I>event</I> occurs anywhere within the Tree area.
+</DD></DL>
+<DL><DT><A NAME="bindImage"><I>pathName</I> <B>bindImage</B></A>
+ <I>event</I>
+ <I>script</I>
+</DT><DD>
+
+This command associates a command to execute whenever the event
+sequence given by <I>event</I> occurs on the image of a node.
+The node idenfier on which the event occurs is appended to the command and may be used to manipulate the tree (e.g. don't use <B>%W</B>).
+
+<P>
+If <B>-selectfill</B> is given, an eventual binding of the background box by <B>bindText</B> is overwritten.
+</P>
+</DD></DL>
+<DL><DT><A NAME="bindText"><I>pathName</I> <B>bindText</B></A>
+ <I>event</I>
+ <I>script</I>
+</DT><DD>
+
+This command associates a command to execute whenever the event
+sequence given by <I>event</I> occurs on the label of a node.
+The node idenfier on which the event occurs is appended to the command and may be used to manipulate the tree (e.g. don't use <B>%W</B>).
+
+<P>
+If <B>-selectfill</B> is given, an eventual binding of the background box by <B>bindImage</B> is overwritten.
+</P>
+</DD></DL>
+<DL><DT><A NAME="cget"><I>pathName</I> <B>cget</B></A>
+ <I>option</I>
+</DT><DD>
+
+Returns the current value of the configuration option given by <I>option</I>.
+<I>Option</I> may have any of the values accepted by the creation command.
+</DD></DL>
+<DL><DT><A NAME="closetree"><I>pathName</I> <B>closetree</B></A> <I>node</I>
+?<I>recurse</I>?
+</DT><DD>
+
+This command close all the subtree given by <I>node</I>. Recurse
+through the tree starting at <I>node</I> and set <B>open</B> option to 0
+depending on <I>recurse</I>. Default value of <I>recurse</I> is <I>true</I>.
+
+</DD></DL>
+<DL><DT><A NAME="configure"><I>pathName</I> <B>configure</B></A>
+ ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...?
+</DT><DD>
+
+Query or modify the configuration options of the widget. If no <I>option</I> is
+specified, returns a list describing all of the available options for
+<I>pathName</I>.  If <I>option</I> is specified with no <I>value</I>, then the
+command returns a list describing the one named <I>option</I> (this list will
+be identical to the corresponding sublist of the value returned if no
+<I>option</I> is specified). If one or more <I>option-value</I> pairs are
+specified, then the command modifies the given widget option(s) to have the
+given value(s); in this case the command returns an empty string.
+<I>Option</I> may have any of the values accepted by the creation command.
+Read-only options are not be modified.
+
+</DD></DL>
+<DL><DT><A NAME="delete"><I>pathName</I> <B>delete</B></A>
+ ?<I>arg...</I>?
+</DT><DD>
+
+Deletes all nodes (and children of them) in <I>arg</I>. <I>arg</I> can be a list
+of nodes or a list of list of nodes.
+To delete all the tree, do <I>$pathName delete [$pathName nodes root]</I>.
+
+</DD></DL>
+<DL><DT><A NAME="edit"><I>pathName</I> <B>edit</B></A>
+ <I>node</I>
+ <I>text</I>
+ ?<I>verifycmd</I>?
+ ?<I>clickres</I>?
+ ?<I>select</I>?
+</DT><DD>
+
+Provides a way for the user to edit in place the label of a node. This is
+possible only if <I>node</I> is visible (all its parents are open).
+<BR>The command takes the initial text as argument and does not modify the label of the
+edited node, but returns an empty string if edition is canceled, or the typed text
+if edition is accepted.
+<BR>When editing, the user can cancel by pressing Escape, or accept by pressing Return.
+<BR><I>clickres</I> specifies what to do if the user click outside the editable area.
+If <I>clickres</I> is 0 (the default), the edition is canceled.
+If <I>clickres</I> is 1, the edition is accepted.
+In all other case, the edition continues.
+<BR>If edition is accepted and <I>modifycmd</I> is not empty, then it is called with
+the new text as argument and must return 1 to accept the new text, 0 to refuse it
+and continue edition.
+<BR><I>select</I> specifies wether or not the initial text should be selected. Default is 1.
+
+</DD></DL>
+<DL><DT><A NAME="exists"><I>pathName</I> <B>exists</B></A>
+ <I>node</I>
+</DT><DD>
+
+Returns whether or not <I>node</I> exists in the tree.
+
+</DD></DL>
+<DL><DT><A NAME="find"><I>pathName</I> <B>find</B></A>
+ <I>findinfo</I>
+ ?<I>confine</I>?
+</DT><DD>
+
+<p>
+Returns the node given by the position <I>findinfo</I>.
+<I>findinfo</I> can take the form of a pixel position <I>@x,y</I> or
+of the line number of a currently visible Tree node.  The first line
+of the Tree has the value of zero.
+</p>
+
+<p>
+If <I>confine</I> is non-empty, then confine <I>findinfo</I> to only
+match pixel positions for the area consumed by Tree labels, not just
+anywhere on their lines.  (<I>confine</I> has no effect if
+<I>findinfo</I> is a line number.)
+</p>
+
+</DD></DL>
+<DL><DT><A NAME="index"><I>pathName</I> <B>index</B></A>
+ <I>node</I>
+</DT><DD>
+
+Returns the position of <I>node</I> in its parent.
+
+</DD></DL>
+<DL><DT><A NAME="insert"><I>pathName</I> <B>insert</B></A>
+ <I>index</I>
+ <I>parent</I>
+ <I>node</I>
+ ?<I>option value...</I>?
+</DT><DD>
+
+<p>
+Inserts a new node identified by <I>node</I> in the children list of
+<I>parent</I> at position <I>index</I>.
+</p>
+
+<p>
+Any instance of <i>#auto</i> within the node name will be replaced by the
+number of the item in the order of insertion.  The non-printable characters
+\1 to \5 are reserved for internal use and should not be present in node
+names.
+</p>
+
+
+<P>
+<DL><DT><A NAME="Node-anchor"><B>-anchor</B></A></DT>
+<DD>
+    Specifies the anchor of the image or window of the node.  Defaults to w.
+</DD>
+</DL>
+
+<DL><DT><A NAME="Node-data"><B>-data</B></A></DT>
+<DD>
+
+User data associated to the node.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-deltax"><B>-deltax</B></A></DT>
+<DD>
+
+Specifies the horizontal indentation of the node.  If the value is -1, the
+node will be drawn with the deltax for the entire tree.
+
+</DD>
+</DL>
+<DL><DT><A NAME="Node-drawcross"><B>-drawcross</B></A></DT>
+<DD>
+
+Specifies how the cross used to expand or collapse the children of a node
+should be drawn. 
+Must be one of <B>auto</B>, <B>always</B> or <B>never</B>.
+<BR>If <B>auto</B>, the cross is drawn only if the node has children.
+If <B>always</B>, the cross is always drawn.
+If <B>never</B>, the cross is never drawn.
+To maintain compatibility with older versions of this widget,
+<B>allways</B> is a deprecated synonym to <B>always</B>.
+
+</DD>
+</DL>
+<DL><DT><A NAME="Node-fill"><B>-fill</B></A></DT>
+<DD>
+
+Specifies the foreground color of the label of the node.
+
+</DD>
+</DL>
+<DL><DT><A NAME="Node-font"><B>-font</B></A></DT>
+<DD>
+
+Specifies a font for the label of the node.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-helpcmd"><B>-helpcmd</B></A></DT>
+<DD>
+
+If specified, refers to a command to execute to get the help text to display.
+The command must return a string to display.
+If the command returns an empty string, no help is displayed. 
+See also <A HREF="DynamicHelp.html">DynamicHelp</A>.
+</DD>
+</DL>
+<DL><DT><A NAME="-helptext"><B>-helptext</B></A></DT>
+<DD>
+
+Text for dynamic help.
+See also <A HREF="DynamicHelp.html">DynamicHelp</A>.
+</DD>
+</DL>
+<DL><DT><A NAME="-helptype"><B>-helptype</B></A></DT>
+<DD>
+Type of dynamic help. Use <I>balloon</I> or <I>variable</I>.
+See also <A HREF="DynamicHelp.html">DynamicHelp</A>.
+</DD>
+</DL>
+<DL><DT><A NAME="-helpvar"><B>-helpvar</B></A></DT>
+<DD>
+Variable to use when <B>helptype</B> option is <I>variable</I>.
+See also <A HREF="DynamicHelp.html">DynamicHelp</A>.
+</DD>
+</DL>
+<DL><DT><A NAME="Node-image"><B>-image</B></A></DT>
+<DD>
+
+Specifies an image to display at the left of the label of the node.
+<B>window</B> option override <B>image</B>.
+</DD>
+</DL>
+<DL><DT><A NAME="Node-open"><B>-open</B></A></DT>
+<DD>
+
+Specifies wether or not the children of the node should be drawn.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-padx"><B>-padx</B></A></DT>
+<DD>
+
+Specifies the distance between image or window and the text of the node.  If
+the value is -1, the node will be drawn with the padx for the entire tree.
+
+</DD>
+</DL>
+<DL><DT><A NAME="Node-selectable"><B>-selectable</B></A></DT>
+<DD>
+
+Specifies if the node can be selected or not.
+
+</DD>
+</DL>
+<DL><DT><A NAME="Node-text"><B>-text</B></A></DT>
+<DD>
+
+Specifies the label of the node.
+
+</DD>
+</DL>
+<DL><DT><A NAME="Node-window"><B>-window</B></A></DT>
+<DD>
+
+Specifies a pathname to display at the left of the label of the node.
+<B>window</B> option override <B>image</B>.
+</DD>
+</DL>
+</DD></DL>
+<DL><DT><A NAME="itemcget"><I>pathName</I> <B>itemcget</B></A>
+ <I>node</I>
+ <I>option</I>
+</DT><DD>
+
+Returns the current value of a configuration option for the item.
+<I>Option</I> may have any of the values accepted by the item creation command.
+
+</DD></DL>
+<DL><DT><A NAME="itemconfigure"><I>pathName</I> <B>itemconfigure</B></A>
+ <I>node</I>
+ ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...?
+</DT><DD>
+
+This command is similar to the <B>configure</B> command, except that it applies to the
+options for an individual item, whereas <B>configure</B> applies to the options for
+the widget as a whole. <B>Options</B> may have any of the values accepted by the 
+item creation widget command. If options are specified, options are modified as indicated
+in the command and the command returns an empty string. If no options are specified,
+returns a list describing the current options for the item.
+Read-only options are not be modified.
+
+</DD></DL>
+<DL><DT><A NAME="line"><I>pathName</I> <B>line</B></A>
+ <I>node</I>
+</DT><DD>
+
+<p>
+Returns the line number where <I>node</I> was drawn.  If the node is
+not visible then return -1.  The first line of the tree has the value
+of 0.
+</p>
+
+</DD></DL>
+<DL><DT><A NAME="move"><I>pathName</I> <B>move</B></A>
+ <I>parent</I>
+ <I>node</I>
+ <I>index</I>
+</DT><DD>
+
+Moves <I>node</I> to the children list of <I>parent</I> at position <I>index</I>.
+<I>parent</I> can not be a descendant of <I>node</I>.
+
+</DD></DL>
+<DL><DT><A NAME="nodes"><I>pathName</I> <B>nodes</B></A>
+ <I>node</I>
+ ?<I>first</I>?
+ ?<I>last</I>?
+</DT><DD>
+
+Returns parts of the children of <I>node</I>, following <I>first</I> and <I>last</I>.<BR>
+If <I>first</I> and <I>last</I> are omitted, returns the list of all children.
+If <I>first</I> is specified and <I>last</I> omitted, returns the child at index
+<I>first</I>, or an empty string if <I>first</I> refers to a non-existent element.
+If <I>first</I> and <I>last</I> are specified, the command returns a list whose elements
+are all of the children between <I>first</I> and <I>last</I>,
+inclusive. Both <I>first</I> and <I>last</I> may have any of the standard
+forms for indices.
+
+</DD></DL>
+<DL><DT><A NAME="opentree"><I>pathName</I> <B>opentree</B></A> <I>node</I> ?<I>recurse</I>?
+
+</DT><DD>
+
+This command open all the subtree given by <I>node</I>. Recurse through the
+tree starting at <I>node</I> and set <B>open</B> option to 1 depending on value
+of <I>recurse</I>. Default value of <I>recurse</I> is <I>true</I>.
+
+</DD></DL>
+<DL><DT><A NAME="parent"><I>pathName</I> <B>parent</B></A>
+ <I>node</I>
+</DT><DD>
+
+Returns the parent of <I>node</I>.
+
+</DD></DL>
+<DL><DT><A NAME="reorder"><I>pathName</I> <B>reorder</B></A>
+ <I>node</I>
+ <I>neworder</I>
+</DT><DD>
+
+Modifies the order of children of <I>node</I> given by <I>neworder</I>. Children of
+<I>node</I> that do not appear in <I>neworder</I> are no moved.
+
+</DD></DL>
+<DL><DT><A NAME="see"><I>pathName</I> <B>see</B></A>
+ <I>node</I>
+</DT><DD>
+
+Arrange the scrolling area to make <I>node</I> visible.
+
+</DD></DL>
+<DL><DT><A NAME="selection"><I>pathName</I> <B>selection</B></A>
+ <I>cmd</I>
+ ?<I>arg...</I>?
+</DT><DD>
+
+Modifies the list of selected nodes following <I>cmd</I>:
+<DL>
+<DT><B>add</B>
+<DD>Adds all nodes in <I>arg</I> to the selection.
+<DT><B>clear</B>
+<DD>Removes all nodes from the selection.
+<DT><B>get</B>
+<DD>Returns a list containing the indices of current selected nodes.
+<DT><B>includes</B>
+<DD>Tests if the specified node is selected. Returns true if the answer is yes, and false else.
+<DT><B>range</B>
+<DD>Sets the selection to all nodes between the two specified ones.
+<DT><B>remove</B>
+<DD>Removes all nodes in <I>arg</I> from the selection.
+<DT><B>set</B>
+<DD>Sets the selection to all nodes in <I>arg</I>.
+<DT><B>toggle</B>
+<DD>Toggles the selection status of all nodes in <I>arg</I>.
+</DL>
+
+The subcommands <B>add</B>, <B>range</B>, and <B>set</B> silently
+ignore nodes which are declared unselectable. See the node option
+<a href="#Node-selectable">-selectable</a> to influence this.
+
+</DD></DL>
+
+</DD></DL>
+
+<DL><DT><A NAME="toggle"><I>pathName</I> <B>toggle</B></A>
+ <I>node</I>
+</DT><DD>
+    Toggle the open/close status of the given <i>node</i>.
+</DD></DL>
+
+<DL><DT><A NAME="visible"><I>pathName</I> <B>visible</B></A>
+ <I>node</I>
+</DT><DD>
+
+Returns whether or not <I>node</I> is visible (all its parents are open).
+
+</DD></DL>
+<DL><DT><A NAME="xview"><I>pathName</I> <B>xview</B></A>
+ ?<I>arg...</I>?
+</DT><DD>
+
+Standard command to enable horizontal scrolling of <I>pathName</I>.
+
+</DD></DL>
+<DL><DT><A NAME="yview"><I>pathName</I> <B>yview</B></A>
+ ?<I>arg...</I>?
+</DT><DD>
+
+Standard command to enable vertical scrolling of <I>pathName</I>.
+
+</DD></DL>
+
+<B><A NAME="nodes">BINDINGS</A></B><BR>
+
+<p>
+A <b>&lt;&lt;TreeSelect&gt;&gt;</b> virtual event is generated any time the
+selection in the tree changes.  This is the default behavior of an
+item in the tree, but it can be overridden with the bindText or
+bindImage command.  If the button 1 binding is overridden, this event may
+not be generated.
+</p>
+
+<p>
+The tree has all the standard mouse wheel bindings when it has focus.
+</p>
+
+</BODY></HTML>
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/ScrolledWindow.html
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/ScrolledWindow.html	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/ScrolledWindow.html	(revision 3762)
@@ -0,0 +1,160 @@
+<HTML>
+<HEAD><TITLE>ScrolledWindow</TITLE></HEAD>
+<BODY BGCOLOR=white>
+<DL><DT><I><A HREF="#descr">NAME</A></I></DT>
+<DD><B>ScrolledWindow</B>
+ - Generic scrolled widget
+</DD></DL>
+<DL>
+<DT><I>CREATION</I></DT>
+<DD><A HREF="#descr"><B>ScrolledWindow</B></A> <I>pathName</I> ?<I>option value...</I>?</DD>
+</DL>
+<DL>
+<DT><I>STANDARD OPTIONS</I></DT>
+<DT><I>Not themed</I></DT>
+<DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-background">-background or -bg</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-borderwidth">-borderwidth or -bd</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-relief">-relief</A></TR>
+</TABLE></DD>
+<DT><I>Themed</I></DT>
+<DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-borderwidth">-borderwidth or -bd</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-relief">-relief</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;(<B>-bg</B> has no effect)</TD>
+</TR>
+</TABLE></DD>
+</DL>
+<DL>
+<DT><I><A HREF="#wso">WIDGET-SPECIFIC OPTIONS</A></I></DT>
+<DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-auto">-auto</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="#-ipad">-ipad</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="#-managed">-managed</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="#-scrollbar">-scrollbar</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="#-sides">-sides</A></TR>
+<TD>&nbsp;&nbsp;<A HREF="#-size">-size</A></TR>
+</TR>
+</TABLE></DD>
+</DL>
+<DL>
+<DT><I><A HREF="#wc">WIDGET COMMAND</A></I></DT>
+<DD><I>pathName</I> <A HREF="#cget"><B>cget</B></A>
+ <I>option</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#configure"><B>configure</B></A>
+ ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...?
+</DD>
+<DD><I>pathName</I> <A HREF="#getframe"><B>getframe</B></A>
+</DD>
+<DD><I>pathName</I> <A HREF="#setwidget"><B>setwidget</B></A>
+ <I>widget</I>
+</DD>
+</DL>
+<BR><HR WIDTH="100%"><BR>
+<B><A NAME="descr"></A>DESCRIPTION</B><BR>
+<P>
+
+ScrolledWindow enables user to create easily a widget with its scrollbar.
+Scrollbars are created by ScrolledWindow and scroll commands are automatically associated to
+a scrollable widget with <B>ScrolledWindow::setwidget</B>.
+</P>
+<BR><HR WIDTH="50%"><BR>
+<B><A NAME="wso">WIDGET-SPECIFIC OPTIONS</A></B><BR>
+<DL><DT><A NAME="-auto"><B>-auto</B></A></DT>
+<DD>
+
+Specifies the desired auto managed scrollbar:
+<LI><B>none</B> means scrollbar are always drawn
+<LI><B>horizontal</B> means horizontal scrollbar is drawn as needed
+<LI><B>vertical</B> means vertical scrollbar is drawn as needed
+<LI><B>both</B> means horizontal and vertical scrollbars are drawn as needed (default value)
+</DD>
+</DL>
+<DL><DT><A NAME="-ipad"><B>-ipad (read-only)</B></A></DT>
+<DD>
+
+Padding in pixels between client widget and scrollbars.
+Default value: <B>1</B>.
+</DD>
+</DL>
+<DL><DT><A NAME="-managed"><B>-managed (read-only)</B></A></DT>
+<DD>
+
+If true, scrollbar are managed during creation, so their size are included in the requested size of the
+ScrolledWindow. If false, they are not.
+Default value: <B>true</B>.
+</DD>
+</DL>
+<DL><DT><A NAME="-scrollbar"><B>-scrollbar</B></A></DT>
+<DD>
+
+Specifies the desired scrollbar: <B>none</B>, <B>horizontal</B>, <B>vertical</B>
+or <B>both</B> (default value).
+</DD>
+</DL>
+<DL><DT><A NAME="-sides"><B>-sides (read-only)</B></A></DT>
+<DD>
+
+Side of the scrollbars.
+Possible values are: <B>ne</B>, <B>en</B>, <B>nw</B>, <B>wn</B>, <B>se</B> (default value), <B>es</B>, <B>sw</B>, <B>ws</B>.
+</DD>
+</DL>
+<DL><DT><A NAME="-size"><B>-size (read-only)</B></A></DT>
+<DD>
+
+Size of the scrollbars in pixels.
+Use </B>0</B> for standard size (default value).<BR>
+This option has no effect if widget is <I>themed</I>.
+</DD>
+</DL>
+<HR WIDTH="50%"><BR>
+<B><A NAME="wc">WIDGET COMMAND</A></B><BR>
+<DL><DT><A NAME="cget"><I>pathName</I> <B>cget</B></A>
+ <I>option</I>
+</DT><DD>
+
+Returns the current value of the configuration option given by <I>option</I>.
+<I>Option</I> may have any of the values accepted by the creation command.
+</DD></DL>
+<DL><DT><A NAME="configure"><I>pathName</I> <B>configure</B></A>
+ ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...?
+</DT><DD>
+
+Query or modify the configuration options of the widget. If no <I>option</I> is specified,
+returns a list describing all of the available options for <I>pathName</I>.
+If <I>option</I> is specified with no <I>value</I>, then the command returns a list
+describing the one named <I>option</I> (this list will be identical to the corresponding
+sublist of the value returned if no <I>option</I> is specified). If one or
+more <I>option-value</I> pairs are specified, then the command modifies the given widget
+option(s) to have the given value(s); in this case the command returns an empty string.
+<I>Option</I> may have any of the values accepted by the creation command.
+Read-only options are not be modified.
+
+</DD></DL>
+<DL><DT><A NAME="getframe"><I>pathName</I> <B>getframe</B></A>
+</DT><DD>
+
+Return the pathname of the frame where the scrolled widget should be created. This command
+is no longer needed. You can directly create the scrolled widget as the child
+of <I>pathName</I>.
+</DD></DL>
+<DL><DT><A NAME="setwidget"><I>pathName</I> <B>setwidget</B></A>
+ <I>widget</I>
+</DT><DD>
+
+Associate <I>widget</I> to the the scrollbars. <I>widget</I> becomes
+managed by the ScrolledWindow.  The user should not attempt to manage
+<I>widget</I> until it is no longer managed by the ScrolledWindow.
+<I>widget</I> must be a scrollable widget, i.e. have the options
+<B>xscrollcommand</B>/<B>yscrollcommand</B> and the command <B>xview</B>/<B>yview</B>,
+such as canvas or text.
+</DD></DL>
+</BODY></HTML>
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/Separator.html
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/Separator.html	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/Separator.html	(revision 3762)
@@ -0,0 +1,77 @@
+<HTML>
+<HEAD><TITLE>Separator</TITLE></HEAD>
+<BODY BGCOLOR=white>
+<DL><DT><I><A HREF="#descr">NAME</A></I></DT>
+<DD><B>Separator</B>
+ - 3D separator widget
+</DD></DL>
+<DL>
+<DT><I>CREATION</I></DT>
+<DD><A HREF="#descr"><B>Separator</B></A> <I>pathName</I> ?<I>option value...</I>?</DD>
+</DL>
+<DL>
+<DT><I>STANDARD OPTIONS</I></DT>
+<DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-background">-background or -bg</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-orient">-orient</A></TR>
+</TR>
+</TABLE></DD>
+</DL>
+<DL>
+<DT><I><A HREF="#wso">WIDGET-SPECIFIC OPTIONS</A></I></DT>
+<DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-relief">-relief</A></TR>
+</TABLE></DD>
+</DL>
+<DL>
+<DT><I><A HREF="#wc">WIDGET COMMAND</A></I></DT>
+<DD><I>pathName</I> <A HREF="#cget"><B>cget</B></A>
+ <I>option</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#configure"><B>configure</B></A>
+ ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...?
+</DD>
+</DL>
+<BR><HR WIDTH="100%"><BR>
+<B><A NAME="descr"></A>DESCRIPTION</B><BR>
+<P>
+
+Separator is a widget that display an horizontal or vertical 3-D line.
+
+</P>
+<BR><HR WIDTH="50%"><BR>
+<B><A NAME="wso">WIDGET-SPECIFIC OPTIONS</A></B><BR>
+<DL><DT><A NAME="-relief"><B>-relief</B></A></DT>
+<DD>
+
+Specifies the relief of the Separator. Must be <B>groove</B> (the default) or <B>ridge</B>.
+
+</DD>
+</DL>
+<HR WIDTH="50%"><BR>
+<B><A NAME="wc">WIDGET COMMAND</A></B><BR>
+<DL><DT><A NAME="cget"><I>pathName</I> <B>cget</B></A>
+ <I>option</I>
+</DT><DD>
+
+Returns the current value of the configuration option given by <I>option</I>.
+<I>Option</I> may have any of the values accepted by the creation command.
+</DD></DL>
+<DL><DT><A NAME="configure"><I>pathName</I> <B>configure</B></A>
+ ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...?
+</DT><DD>
+
+Query or modify the configuration options of the widget. If no <I>option</I> is specified,
+returns a list describing all of the available options for <I>pathName</I>.
+If <I>option</I> is specified with no <I>value</I>, then the command returns a list
+describing the one named <I>option</I> (this list will be identical to the corresponding
+sublist of the value returned if no <I>option</I> is specified). If one or
+more <I>option-value</I> pairs are specified, then the command modifies the given widget
+option(s) to have the given value(s); in this case the command returns an empty string.
+<I>Option</I> may have any of the values accepted by the creation command.
+Read-only options are not be modified.
+
+</DD></DL>
+</BODY></HTML>
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/LabelEntry.html
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/LabelEntry.html	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/LabelEntry.html	(revision 3762)
@@ -0,0 +1,194 @@
+<HTML>
+<HEAD><TITLE>LabelEntry</TITLE></HEAD>
+<BODY BGCOLOR=white>
+<DL><DT><I><A HREF="#descr">NAME</A></I></DT>
+<DD><B>LabelEntry</B>
+ - 
+LabelFrame containing an Entry widget.
+
+</DD></DL>
+<DL>
+<DT><I>CREATION</I></DT>
+<DD><A HREF="#descr"><B>LabelEntry</B></A> <I>pathName</I> ?<I>option value...</I>?</DD>
+</DL>
+<DL>
+<DT><I><A HREF="Entry.html">OPTIONS from <B>Entry</B></A></I></DT>
+<DD><TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+<TR>
+<TD>&nbsp;&nbsp;-borderwidth or -bd</TD>
+<TD>&nbsp;&nbsp;-command</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-disabledforeground</TD>
+<TD>&nbsp;&nbsp;-dragenabled</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-dragendcmd</TD>
+<TD>&nbsp;&nbsp;-dragevent</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-draginitcmd</TD>
+<TD>&nbsp;&nbsp;-dragtype</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-dropcmd</TD>
+<TD>&nbsp;&nbsp;-dropenabled</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-dropovercmd</TD>
+<TD>&nbsp;&nbsp;-droptypes</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-editable</TD>
+<TD>&nbsp;&nbsp;-entrybg (see <B>-background</B>)</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-entryfg (see <B>-foreground</B>)</TD>
+<TD>&nbsp;&nbsp;-exportselection</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-font</TD>
+<TD>&nbsp;&nbsp;-helptext</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-helptype</TD>
+<TD>&nbsp;&nbsp;-helpvar</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-highlightbackground</TD>
+<TD>&nbsp;&nbsp;-highlightcolor</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-highlightthickness</TD>
+<TD>&nbsp;&nbsp;-insertbackground</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-insertborderwidth</TD>
+<TD>&nbsp;&nbsp;-insertofftime</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-insertontime</TD>
+<TD>&nbsp;&nbsp;-insertwidth</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-justify</TD>
+<TD>&nbsp;&nbsp;-relief</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-selectbackground</TD>
+<TD>&nbsp;&nbsp;-selectborderwidth</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-selectforeground</TD>
+<TD>&nbsp;&nbsp;-show</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-state</TD>
+<TD>&nbsp;&nbsp;-takefocus</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-text</TD>
+<TD>&nbsp;&nbsp;-textvariable</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-width</TD>
+<TD>&nbsp;&nbsp;-xscrollcommand</TD>
+</TR>
+</TABLE></DD>
+</DL>
+<DL>
+<DT><I><A HREF="LabelFrame.html">OPTIONS from <B>LabelFrame</B></A></I></DT>
+<DD><TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+<TR>
+<TD>&nbsp;&nbsp;-background or -bg</TD>
+<TD>&nbsp;&nbsp;-disabledforeground</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-foreground or -fg</TD>
+<TD>&nbsp;&nbsp;-helptext</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-helptype</TD>
+<TD>&nbsp;&nbsp;-helpvar</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-label (see <B>-text</B>)</TD>
+<TD>&nbsp;&nbsp;-labelanchor (see <B>-anchor</B>)</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-labelfont (see <B>-font</B>)</TD>
+<TD>&nbsp;&nbsp;-labelheight (see <B>-height</B>)</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-labeljustify (see <B>-justify</B>)</TD>
+<TD>&nbsp;&nbsp;-labelwidth (see <B>-width</B>)</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-name</TD>
+<TD>&nbsp;&nbsp;-padx</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-pady</TD>
+<TD>&nbsp;&nbsp;-side</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-state</TD>
+<TD>&nbsp;&nbsp;-underline</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-wraplength</TD>
+</TABLE></DD>
+</DL>
+<DL>
+<DT><I><A HREF="#wc">WIDGET COMMAND</A></I></DT>
+<DD><I>pathName</I> <A HREF="#bind"><B>bind</B></A>
+ ?<I>arg...</I>?
+</DD>
+<DD><I>pathName</I> <A HREF="#cget"><B>cget</B></A>
+ <I>option</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#configure"><B>configure</B></A>
+ ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...?
+</DD>
+</DL>
+<BR><HR WIDTH="100%"><BR>
+<B><A NAME="descr"></A>DESCRIPTION</B><BR>
+<P>
+
+LabelEntry is a widget composed of <A HREF="LabelFrame.html">LabelFrame</A> widget
+containing an <A HREF="Entry.html">Entry</A> widget.
+Tk entry command can also be used on LabelEntry widget.
+
+</P>
+<HR WIDTH="50%"><BR>
+<B><A NAME="wc">WIDGET COMMAND</A></B><BR>
+<DL><DT><A NAME="bind"><I>pathName</I> <B>bind</B></A>
+ ?<I>arg...</I>?
+</DT><DD>
+
+Set bindings on the entry widget.
+
+</DD></DL>
+<DL><DT><A NAME="cget"><I>pathName</I> <B>cget</B></A>
+ <I>option</I>
+</DT><DD>
+
+Returns the current value of the configuration option given by <I>option</I>.
+<I>Option</I> may have any of the values accepted by the creation command.
+</DD></DL>
+<DL><DT><A NAME="configure"><I>pathName</I> <B>configure</B></A>
+ ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...?
+</DT><DD>
+
+Query or modify the configuration options of the widget. If no <I>option</I> is specified,
+returns a list describing all of the available options for <I>pathName</I>.
+If <I>option</I> is specified with no <I>value</I>, then the command returns a list
+describing the one named <I>option</I> (this list will be identical to the corresponding
+sublist of the value returned if no <I>option</I> is specified). If one or
+more <I>option-value</I> pairs are specified, then the command modifies the given widget
+option(s) to have the given value(s); in this case the command returns an empty string.
+<I>Option</I> may have any of the values accepted by the creation command.
+Read-only options are not be modified.
+
+</DD></DL>
+</BODY></HTML>
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/Entry.html
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/Entry.html	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/Entry.html	(revision 3762)
@@ -0,0 +1,366 @@
+<HTML>
+<HEAD><TITLE>Entry</TITLE></HEAD>
+<BODY BGCOLOR=white>
+<DL><DT><I><A HREF="#descr">NAME</A></I></DT>
+<DD><B>Entry</B>
+ - Entry widget with <B>state</B> option, dynamic help and drag and drop facilities
+</DD></DL>
+<DL>
+<DT><I>CREATION</I></DT>
+<DD><A HREF="#descr"><B>Entry</B></A> <I>pathName</I> ?<I>option value...</I>?</DD>
+</DL>
+<DL>
+<DT><I>STANDARD OPTIONS</I></DT>
+<DT><I>Not themed</I></DT>
+<DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-background">-background or -bg</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-borderwidth">-borderwidth or -bd</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-disabledbackground">-disabledbackground</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-disabledforeground">-disabledforeground</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-exportselection">-exportselection</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-font">-font</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-foreground">-foreground or -fg</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-highlightbackground">-highlightbackground</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-highlightcolor">-highlightcolor</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-highlightthickness">-highlightthickness</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-insertbackground">-insertbackground</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-insertborderwidth">-insertborderwidth</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-insertofftime">-insertofftime</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-insertontime">-insertontime</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-insertwidth">-insertwidth</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-justify">-justify</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-relief">-relief</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-selectbackground">-selectbackground</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-selectborderwidth">-selectborderwidth</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-selectforeground">-selectforeground</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-takefocus">-takefocus</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-text">-text</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-textvariable">-textvariable</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-xscrollcommand">-xscrollcommand</A></TD>
+</TABLE></DD>
+</DL>
+<DL>
+<DT><I>Themed</I></DT>
+<DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-exportselection">-exportselection</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-font">-font</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-insertofftime">-insertofftime</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-insertontime">-insertontime</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-insertwidth">-insertwidth</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-justify">-justify</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-takefocus">-takefocus</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-text">-text</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-textvariable">-textvariable</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="options.htm#M-xscrollcommand">-xscrollcommand</A></TD>
+</TABLE></DD>
+</DL>
+<DL>
+<DT><I><A HREF="#wso">WIDGET-SPECIFIC OPTIONS</A></I></DT>
+<DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-command">-command</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="#-dragenabled">-dragenabled</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-dragendcmd">-dragendcmd</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="#-dragevent">-dragevent</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-draginitcmd">-draginitcmd</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="#-dragtype">-dragtype</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-dropcmd">-dropcmd</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="#-dropenabled">-dropenabled</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-dropovercmd">-dropovercmd</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="#-droptypes">-droptypes</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-editable">-editable</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="#-helptext">-helptext</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-helptype">-helptype</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="#-helpvar">-helpvar</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-show">-show</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="#-state">-state</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-width">-width</A></TD>
+</TABLE></DD>
+</DL>
+<DL>
+<DT><I><A HREF="#wc">WIDGET COMMAND</A></I></DT>
+<DD><I>pathName</I> <A HREF="#cget"><B>cget</B></A>
+ <I>option</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#configure"><B>configure</B></A>
+ ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...?
+</DD>
+<DD><I>pathName</I> <A HREF="#invoke"><B>invoke</B></A>
+</DD>
+</DL>
+<BR><HR WIDTH="100%"><BR>
+<B><A NAME="descr"></A>DESCRIPTION</B><BR>
+<P>
+
+The <B>Entry</B> widget extends the default Tk entry. Options have been added to provide
+visual effect depending on the state of the Entry,
+<A HREF="DynamicHelp.html">DynamicHelp</A> options,
+and <A HREF="DragSite.html">Drag</A> and
+<A HREF="DropSite.html">Drop</A>.
+Entry behaves much like a Label, with <B>text</B> option to set its contents.
+<BR>Tk entry command can also be used on Entry widget.
+
+</P>
+<BR><HR WIDTH="50%"><BR>
+<B><A NAME="wso">WIDGET-SPECIFIC OPTIONS</A></B><BR>
+<DL><DT><A NAME="-command"><B>-command</B></A></DT>
+<DD>
+
+Specifies a command when user press &lt;Return&gt; in the Entry.
+</DD>
+</DL>
+<DL><DT><A NAME="-dragenabled"><B>-dragenabled</B></A></DT>
+<DD>
+A boolean specifying if drag is enabled.
+</DD>
+</DL>
+<DL><DT><A NAME="-dragendcmd"><B>-dragendcmd</B></A></DT>
+<DD>
+
+Specifies a command to be called when drag ended.
+<B>dragendcmd</B> must be a command conforming to the description of the
+option <B>dragendcmd</B> of <B>DragSite::<A HREF="DragSite.html#register">register</A></B>.
+
+<BR>If <B>dragendcmd</B> is empty, the internal <I>dragend</I> command updates the entry
+following the operation (<B>move</B> or <B>copy</B>) and the dragged data
+(whole or selected part of the entry).
+
+</DD>
+</DL>
+<DL><DT><A NAME="-dragevent"><B>-dragevent</B></A></DT>
+<DD>
+
+Specifies the number of the mouse button associated to the drag.
+Must be <B>1</B>, <B>2</B> or <B>3</B>.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-draginitcmd"><B>-draginitcmd</B></A></DT>
+<DD>
+
+Specifies a command to be called when <B>dragevent</B> occurs on widget.
+<B>draginitcmd</B> must be a command conforming to the description of the
+option <B>draginitcmd</B> of <B>DragSite::<A HREF="DragSite.html#register">register</A></B>.
+
+<BR>if <B>draginitcmd</B> is empty, the command refuse the drag if entry is empty or if
+portion of text is selected and event doesn't occur above the selection. In all other cases,
+the command returns:
+<UL>
+<LI>as the data type, the value of option <B>dragtype</B> or <I>TEXT</I> if empty,
+<LI>as the operations, <I>{copy move}</I> if <B>state</B> is normal and <B>editable</B>
+is true, or <I>{copy}</I> only in other cases, 
+<LI>as the data, the whole content or the selected portion of the entry.
+</UL>
+
+</DD>
+</DL>
+<DL><DT><A NAME="-dragtype"><B>-dragtype</B></A></DT>
+<DD>
+
+Specifies an alternate type of dragged object.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-dropcmd"><B>-dropcmd</B></A></DT>
+<DD>
+
+Entry has a command wrapper for <I>drop</I> events. This command stops auto scrolling
+and extract current position.
+<BR>If <B>dropcmd</B> is not empty, it is called with the following arguments:
+<UL>
+<LI>the pathname of the Entry,
+<LI>the pathname of the drag source,
+<LI>the numeric index in the entry designated by the cursor,
+<LI>the current operation,
+<LI>the data type,
+<LI>the data.
+</UL>
+and must return a value conforming to <B>dropcmd</B> option described in
+<B>DropSite::<A HREF="DropSite.html#register">register</A></B>.
+If <B>dropcmd</B> is empty, the wrapper updates the entry following the type of data:
+<DL><DD><TABLE BORDER=0 CELLSPACING=1>
+<TR><TD><I>COLOR</I> or <I>FGCOLOR</I></TD>
+<TD>reconfigure the <B>foreground</B> of the Entry</TD>
+<TR><TD><I>BGCOLOR</I></TD>
+<TD>reconfigure the <B>background</B> of the Entry</TD>
+<TR><TD><I>TEXT</I>,<BR>or any other tag</TD>
+<TD>reconfigure the Entry to display the associated string.</TD>
+</TABLE></DL>
+and returns 1.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-dropenabled"><B>-dropenabled</B></A></DT>
+<DD>
+A boolean specifying if drop is enabled.
+</DD>
+</DL>
+<DL><DT><A NAME="-dropovercmd"><B>-dropovercmd</B></A></DT>
+<DD>
+
+Entry has a command wrapper for <I>drag-over</I> events. This command enables auto scrolling
+and position extraction during the <I>drag-over</I>.
+<BR>If <B>dropovercmd</B> is empty, the wrapper accepts the drop if <B>editable</b> option is
+true and <B>state</B> option is normal.
+<BR>If <B>dropovercmd</B> is not empty, it is called with the following arguments:
+<UL>
+<LI>the pathname of the Entry,
+<LI>the pathname of the drag source,
+<LI>the event,
+<LI>the numeric index in the entry designated by the cursor,
+<LI>the current operation,
+<LI>the data type,
+<LI>the data.
+</UL>
+and must return a value conforming to <B>dropovercmd</B> option described in
+<B>DropSite::<A HREF="DropSite.html#register">register</A></B>.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-droptypes"><B>-droptypes</B></A></DT>
+<DD>
+
+Specifies a list of accepted dropped object/operation.
+See option <B>droptypes</B> of
+<B>DropSite::<A HREF="DropSite.html#register">register</A></B>.
+for more infromation.
+
+Default accepts <I>FGCOLOR</I>, <I>COLOR</I>, <I>BGCOLOR</I> and <I>TEXT</I>,
+all with <B>copy</B> and <B>move</B> operations.
+
+</DD>
+</DL>
+<DL><DT><A NAME="-editable"><B>-editable</B></A></DT>
+<DD>
+
+Specifies whether the Entry is editable by the user. Equivalent to the <B>state</B> option
+of the Tk entry widget.
+</DD>
+</DL>
+<DL><DT><A NAME="-helptext"><B>-helptext</B></A></DT>
+<DD>
+
+Text for dynamic help. If empty, no help is available for this widget.
+See also <A HREF="DynamicHelp.html">DynamicHelp</A>.
+</DD>
+</DL>
+<DL><DT><A NAME="-helptype"><B>-helptype</B></A></DT>
+<DD>
+Type of dynamic help. Use <I>balloon</I> or <I>variable</I>.
+See also <A HREF="DynamicHelp.html">DynamicHelp</A>.
+</DD>
+</DL>
+<DL><DT><A NAME="-helpvar"><B>-helpvar</B></A></DT>
+<DD>
+Variable to use when <B>helptype</B> option is <I>variable</I>.
+See also <A HREF="DynamicHelp.html">DynamicHelp</A>.
+</DD>
+</DL>
+<DL><DT><A NAME="-show"><B>-show</B></A></DT>
+<DD>
+
+If this option is specified, then the true contents of the entry are not displayed in the
+window. Instead, each character in the entry's value will be displayed as the first character
+in the value of this option, such as ``*''. This is useful, for example, if the entry is to
+be used to enter a password. If characters in the entry are selected and copied elsewhere, the
+information copied will be what is displayed, not the true contents of the entry.
+</DD>
+</DL>
+<DL><DT><A NAME="-state"><B>-state</B></A></DT>
+<DD>
+
+Specifies one of two states for the Entry:  <B>normal</B> or <B>disabled</B>.
+In normal state the text of the Entry is displayed using the <B>foreground</B> option.
+In disabled state the text of the Entry is displayed using the <B>disabledforeground</B>
+option. If the entry is disabled then the value may not be changed by user input
+and no insertion cursor will be displayed, even if the input focus is in the widget.
+Disabled state is the same as not editable with visual effect.
+</DD>
+</DL>
+<DL><DT><A NAME="-width"><B>-width</B></A></DT>
+<DD>
+
+Specifies an integer value indicating the desired width of the entry window, in average-size
+characters of the widget's font. If the value is less than or equal to zero, the widget picks
+a size just large enough to hold its current text.
+</DD>
+</DL>
+<HR WIDTH="50%"><BR>
+<B><A NAME="wc">WIDGET COMMAND</A></B><BR>
+<DL><DT><A NAME="cget"><I>pathName</I> <B>cget</B></A>
+ <I>option</I>
+</DT><DD>
+
+Returns the current value of the configuration option given by <I>option</I>.
+<I>Option</I> may have any of the values accepted by the creation command.
+</DD></DL>
+<DL><DT><A NAME="configure"><I>pathName</I> <B>configure</B></A>
+ ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...?
+</DT><DD>
+
+Query or modify the configuration options of the widget. If no <I>option</I> is specified,
+returns a list describing all of the available options for <I>pathName</I>.
+If <I>option</I> is specified with no <I>value</I>, then the command returns a list
+describing the one named <I>option</I> (this list will be identical to the corresponding
+sublist of the value returned if no <I>option</I> is specified). If one or
+more <I>option-value</I> pairs are specified, then the command modifies the given widget
+option(s) to have the given value(s); in this case the command returns an empty string.
+<I>Option</I> may have any of the values accepted by the creation command.
+Read-only options are not be modified.
+
+</DD></DL>
+<DL><DT><A NAME="invoke"><I>pathName</I> <B>invoke</B></A>
+</DT><DD>
+
+Calls the command specified by the option <B>-command</B>.
+
+</DD></DL>
+</BODY></HTML>
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/DragSite.html
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/DragSite.html	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/DragSite.html	(revision 3762)
@@ -0,0 +1,141 @@
+<HTML>
+<HEAD><TITLE>DragSite</TITLE></HEAD>
+<BODY BGCOLOR=white>
+<DL><DT><I><A HREF="#descr">NAME</A></I></DT>
+<DD><B>DragSite</B>
+ - Commands set for Drag facilities
+</DD></DL>
+<DL>
+<DT><I><A HREF="#wc">COMMAND</A></I></DT>
+<DD>DragSite::<A HREF="#include"><B>include</B></A>
+ <I>class</I>
+ <I>type</I>
+ <I>event</I>
+</DD>
+<DD>DragSite::<A HREF="#register"><B>register</B></A>
+ <I>path</I>
+ ?<I>option value...</I>?
+</DD>
+<DD>DragSite::<A HREF="#setdrag"><B>setdrag</B></A>
+ <I>path</I>
+ <I>subpath</I>
+ <I>initcmd</I>
+ <I>endcmd</I>
+ ?<I>force</I>?
+</DD>
+</DL>
+<BR><HR WIDTH="100%"><BR>
+<B><A NAME="descr"></A>DESCRIPTION</B><BR>
+<P>
+
+Commands of this namespace enable user to define a BWidget or a Tk widget as a drag site.
+
+
+
+</P>
+<HR WIDTH="50%"><BR>
+<B><A NAME="wc">COMMAND</A></B><BR>
+<DL><DT><A NAME="include">DragSite::<B>include</B></A>
+ <I>class</I>
+ <I>type</I>
+ <I>event</I>
+</DT><DD>
+
+This command provides a simple way to include options relatives to a drag site into
+BWidget resources definition.
+It includes the options needed for <B>register</B>: <I>-dragevent</I>, initialized to
+<I>event</I>, <I>-draginitcmd</I> and <I>-dragendcmd</I>, initialized to empty string,
+and two new options:
+<TABLE BORDER=0 CELLSPACING=1>
+<TR><TD><I>-dragenabled</I><TD>Specifies wether or not drag is active (initialized to 0)
+<TR><TD><I>-dragtype</I><TD>Default or alternate dragged data type (initialized to <I>type</I>)
+</TABLE>
+
+</DD></DL>
+<DL><DT><A NAME="register">DragSite::<B>register</B></A>
+ <I>path</I>
+ ?<I>option value...</I>?
+</DT><DD>
+
+This command is used to declare <I>path</I> as a drag site. Options are:
+
+<P>
+<DL><DT><A NAME="DragSite-dragendcmd"><B>-dragendcmd</B></A></DT>
+<DD>
+
+Command called when drag terminates (ie when user release drag icon).
+This command is called with the following arguments:
+<UL>
+<LI>the pathname of the drag source (the widget itself),
+<LI>the pathname of the drop target,
+<LI>the operation,
+<LI>the type of the dragged data,
+<LI>the dragged data,
+<LI>result of the drop (result of the call to <B>-dropcmd</B> of the target),
+</UL>
+If the drop does not occurs, the target and the operation are empty string and the result
+is 0.
+
+</DD>
+</DL>
+<DL><DT><A NAME="DragSite-dragevent"><B>-dragevent</B></A></DT>
+<DD>
+
+Specifies the number of the mouse button associated to the drag.
+Must be <B>1</B>, <B>2</B> or <B>3</B>.
+
+</DD>
+</DL>
+<DL><DT><A NAME="DragSite-draginitcmd"><B>-draginitcmd</B></A></DT>
+<DD>
+
+Command called when drag initiates. When the event of option <B>dragevent</B> occurs on
+<I>path</I>, this command is called with the following arguments:
+<UL>
+<LI>pathname of the drag source (<I>path</I>),
+<LI>root x-coordinate of pointer,
+<LI>root y-coordinate of pointer,
+<LI>a toplevel created to represent dragged data. When returning, if it
+has no children, a bitmap is automatically displayed.
+</UL>
+If the command returns an empty string, then the drag will be
+suppressed.  Otherwise the command must return a list containing three
+elements:
+<UL>
+<LI>the type of the data,
+<LI>the list of acceptable basic operations (<B>copy</B>, <B>move</B> and <B>link</B>)
+<LI>and the data.
+</UL>
+Note that even if <B>copy</B> does not appear in the list of basic
+operation, it is considered as an acceptable operation, since
+<B>copy</B> semantic does not modify the drag source.
+
+</DD>
+</DL>
+</DD></DL>
+<DL><DT><A NAME="setdrag">DragSite::<B>setdrag</B></A>
+ <I>path</I>
+ <I>subpath</I>
+ <I>initcmd</I>
+ <I>endcmd</I>
+ ?<I>force</I>?
+</DT><DD>
+
+This command provides a simple way to call <B>register</B> during a BWidget creation or
+configuration.
+<UL>
+<LI><I>path</I> is the pathname of the BWidget,
+<LI><I>subpath</I> is the pathname of the tk widget where drag event occurs,
+<LI><I>initcmd</I> BWidget command for <I>drag-init</I> event,
+<LI><I>endcmd</I> BWidget command for <I>drag-end</I> event,
+<LI><I>force</I> specifies wether or not to call <B>register</B> whenever no option value has
+changed (0 by default - for BWidget configuration, use 1 for BWidget creation).
+</UL>
+<B>setdrag</B> verifies the modification flag of options <B>dragenabled</B> and
+<B>dragevent</B> and calls <B>register</B> if needed according to the options values and
+<I>initcmd</I> and <I>endcmd</I> arguments. <B>draginitcmd</B> and <B>dragendcmd</B> are not
+taken from options of widget  because they are considered as user command, called by
+BWidget implementation of <I>drag-init</I> and <I>drag-end</I> events.
+
+</DD></DL>
+</BODY></HTML>
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/navtree.html
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/navtree.html	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/navtree.html	(revision 3762)
@@ -0,0 +1,41 @@
+<HTML><BODY BGCOLOR=white>
+<FONT SIZE=1><STRONG><A HREF="contents.html" TARGET=Manual>Brief description</A></STRONG></FONT><BR>
+<FONT SIZE=1><STRONG>Simple Widgets</STRONG></FONT><BR>
+&nbsp;&nbsp;<FONT SIZE=1><A HREF="Label.html" TARGET=Manual>Label</A></FONT><BR>
+&nbsp;&nbsp;<FONT SIZE=1><A HREF="Entry.html" TARGET=Manual>Entry</A></FONT><BR>
+&nbsp;&nbsp;<FONT SIZE=1><A HREF="Button.html" TARGET=Manual>Button</A></FONT><BR>
+&nbsp;&nbsp;<FONT SIZE=1><A HREF="ArrowButton.html" TARGET=Manual>ArrowButton</A></FONT><BR>
+&nbsp;&nbsp;<FONT SIZE=1><A HREF="ProgressBar.html" TARGET=Manual>ProgressBar</A></FONT><BR>
+&nbsp;&nbsp;<FONT SIZE=1><A HREF="ScrollView.html" TARGET=Manual>ScrollView</A></FONT><BR>
+&nbsp;&nbsp;<FONT SIZE=1><A HREF="Separator.html" TARGET=Manual>Separator</A></FONT><BR>
+<FONT SIZE=1><STRONG>Manager Widgets</STRONG></FONT><BR>
+&nbsp;&nbsp;<FONT SIZE=1><A HREF="MainFrame.html" TARGET=Manual>MainFrame</A></FONT><BR>
+&nbsp;&nbsp;<FONT SIZE=1><A HREF="LabelFrame.html" TARGET=Manual>LabelFrame</A></FONT><BR>
+&nbsp;&nbsp;<FONT SIZE=1><A HREF="TitleFrame.html" TARGET=Manual>TitleFrame</A></FONT><BR>
+&nbsp;&nbsp;<FONT SIZE=1><A HREF="PanelFrame.html" TARGET=Manual>PanelFrame</A></FONT><BR>
+&nbsp;&nbsp;<FONT SIZE=1><A HREF="ScrolledWindow.html" TARGET=Manual>ScrolledWindow</A></FONT><BR>
+&nbsp;&nbsp;<FONT SIZE=1><A HREF="ScrollableFrame.html" TARGET=Manual>ScrollableFrame</A></FONT><BR>
+&nbsp;&nbsp;<FONT SIZE=1><A HREF="PanedWindow.html" TARGET=Manual>PanedWindow</A></FONT><BR>
+&nbsp;&nbsp;<FONT SIZE=1><A HREF="ButtonBox.html" TARGET=Manual>ButtonBox</A></FONT><BR>
+&nbsp;&nbsp;<FONT SIZE=1><A HREF="PagesManager.html" TARGET=Manual>PagesManager</A></FONT><BR>
+&nbsp;&nbsp;<FONT SIZE=1><A HREF="NoteBook.html" TARGET=Manual>NoteBook</A></FONT><BR>
+&nbsp;&nbsp;<FONT SIZE=1><A HREF="Dialog.html" TARGET=Manual>Dialog</A></FONT><BR>
+&nbsp;&nbsp;<FONT SIZE=1><A HREF="StatusBar.html" TARGET=Manual>StatusBar</A></FONT><BR>
+<FONT SIZE=1><STRONG>Composite Widgets</STRONG></FONT><BR>
+&nbsp;&nbsp;<FONT SIZE=1><A HREF="LabelEntry.html" TARGET=Manual>LabelEntry</A></FONT><BR>
+&nbsp;&nbsp;<FONT SIZE=1><A HREF="ComboBox.html" TARGET=Manual>ComboBox</A></FONT><BR>
+&nbsp;&nbsp;<FONT SIZE=1><A HREF="SpinBox.html" TARGET=Manual>SpinBox</A></FONT><BR>
+&nbsp;&nbsp;<FONT SIZE=1><A HREF="Tree.html" TARGET=Manual>Tree</A></FONT><BR>
+&nbsp;&nbsp;<FONT SIZE=1><A HREF="ListBox.html" TARGET=Manual>ListBox</A></FONT><BR>
+&nbsp;&nbsp;<FONT SIZE=1><A HREF="MessageDlg.html" TARGET=Manual>MessageDlg</A></FONT><BR>
+&nbsp;&nbsp;<FONT SIZE=1><A HREF="ProgressDlg.html" TARGET=Manual>ProgressDlg</A></FONT><BR>
+&nbsp;&nbsp;<FONT SIZE=1><A HREF="PasswdDlg.html" TARGET=Manual>PasswdDlg</A></FONT><BR>
+&nbsp;&nbsp;<FONT SIZE=1><A HREF="SelectFont.html" TARGET=Manual>SelectFont</A></FONT><BR>
+&nbsp;&nbsp;<FONT SIZE=1><A HREF="SelectColor.html" TARGET=Manual>SelectColor</A></FONT><BR>
+<FONT SIZE=1><STRONG>Commands Classes</STRONG></FONT><BR>
+&nbsp;&nbsp;<FONT SIZE=1><A HREF="Widget.html" TARGET=Manual>Widget</A></FONT><BR>
+&nbsp;&nbsp;<FONT SIZE=1><A HREF="DynamicHelp.html" TARGET=Manual>DynamicHelp</A></FONT><BR>
+&nbsp;&nbsp;<FONT SIZE=1><A HREF="DragSite.html" TARGET=Manual>DragSite</A></FONT><BR>
+&nbsp;&nbsp;<FONT SIZE=1><A HREF="DropSite.html" TARGET=Manual>DropSite</A></FONT><BR>
+&nbsp;&nbsp;<FONT SIZE=1><A HREF="BWidget.html" TARGET=Manual>BWidget</A></FONT><BR>
+</BODY></HTML>
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/ComboBox.html
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/ComboBox.html	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/BWman/ComboBox.html	(revision 3762)
@@ -0,0 +1,410 @@
+<HTML>
+<HEAD><TITLE>ComboBox</TITLE></HEAD>
+<BODY BGCOLOR=white>
+<DL><DT><I><A HREF="#descr">NAME</A></I></DT>
+<DD><B>ComboBox</B>
+ - ComboBox widget
+</DD></DL>
+<DL>
+<DT><I>CREATION</I></DT>
+<DD><A HREF="#descr"><B>ComboBox</B></A> <I>pathName</I> ?<I>option value...</I>?</DD>
+</DL>
+<DL>
+<DT><I><A HREF="ArrowButton.html">OPTIONS from <B>ArrowButton</B></A></I></DT>
+<DD><TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+<TR>
+<TD>&nbsp;&nbsp;-background or -bg</TD>
+<TD>&nbsp;&nbsp;-disabledforeground</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-foreground or -fg</TD>
+<TD>&nbsp;&nbsp;-state</TD>
+</TR>
+</TABLE></DD>
+</DL>
+<DL>
+<DT><I><A HREF="Entry.html">OPTIONS from <B>Entry</B></A></I></DT>
+<DD><TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+<TR>
+<TD>&nbsp;&nbsp;-command</TD>
+<TD>&nbsp;&nbsp;-disabledforeground</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-dragenabled</TD>
+<TD>&nbsp;&nbsp;-dragendcmd</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-dragevent</TD>
+<TD>&nbsp;&nbsp;-draginitcmd</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-dragtype</TD>
+<TD>&nbsp;&nbsp;-dropcmd</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-dropenabled</TD>
+<TD>&nbsp;&nbsp;-dropovercmd</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-droptypes</TD>
+<TD>&nbsp;&nbsp;-editable</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-entrybg (see <B>-background</B>)</TD>
+<TD>&nbsp;&nbsp;-entryfg (see <B>-foreground</B>)</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-exportselection</TD>
+<TD>&nbsp;&nbsp;-font</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-helptext</TD>
+<TD>&nbsp;&nbsp;-helptype</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-helpvar</TD>
+<TD>&nbsp;&nbsp;-highlightbackground</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-highlightcolor</TD>
+<TD>&nbsp;&nbsp;-highlightthickness</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-insertbackground</TD>
+<TD>&nbsp;&nbsp;-insertborderwidth</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-insertofftime</TD>
+<TD>&nbsp;&nbsp;-insertontime</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-insertwidth</TD>
+<TD>&nbsp;&nbsp;-justify</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-selectbackground</TD>
+<TD>&nbsp;&nbsp;-selectborderwidth</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-selectforeground</TD>
+<TD>&nbsp;&nbsp;-show</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-state</TD>
+<TD>&nbsp;&nbsp;-takefocus</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-text</TD>
+<TD>&nbsp;&nbsp;-textvariable</TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;-width</TD>
+<TD>&nbsp;&nbsp;-xscrollcommand</TD>
+</TR>
+</TABLE></DD>
+</DL>
+<DL>
+<DT><I><A HREF="#wso">WIDGET-SPECIFIC OPTIONS</A></I></DT>
+<DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-autocomplete">-autocomplete</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="#-autopost">-autopost</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-bwlistbox">-bwlistbox</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="#-expand">-expand</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-height">-height</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="#-hottrack">-hottrack</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-images">-images</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="#-listboxwidth">-listboxwidth</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-modifycmd">-modifycmd</A></TD>
+<TD>&nbsp;&nbsp;<A HREF="#-postcommand">-postcommand</A></TD>
+</TR>
+<TR>
+<TD>&nbsp;&nbsp;<A HREF="#-values">-values</A></TD>
+</TR>
+</TABLE></DD>
+</DL>
+<DL>
+<DT><I><A HREF="#wc">WIDGET COMMAND</A></I></DT>
+<DD><I>pathName</I> <A HREF="#bind"><B>bind</B></A>
+ ?<I>arg...</I>?
+</DD>
+<DD><I>pathName</I> <A HREF="#cget"><B>cget</B></A>
+ <I>option</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#clearvalue"><B>clearvalue</B></A>
+</DD>
+<DD><I>pathName</I> <A HREF="#configure"><B>configure</B></A>
+ ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...?
+</DD>
+<DD><I>pathName</I> <A HREF="#get"><B>get</B></A></DD>
+<DD><I>pathName</I> <A HREF="#getentry"><B>getentry</B></A></DD>
+<DD><I>pathName</I> <A HREF="#getlistbox"><B>getlistbox</B></A></DD>
+<DD><I>pathName</I> <A HREF="#getvalue"><B>getvalue</B></A></DD>
+<DD><I>pathName</I> <A HREF="#icursor"><B>icursor</B></A>
+<I>index</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#post"><B>post</B></A></DD>
+<DD><I>pathName</I> <A HREF="#setvalue"><B>setvalue</B></A>
+ <I>index</I>
+</DD>
+<DD><I>pathName</I> <A HREF="#unpost"><B>unpost</B></A></DD>
+</DL>
+<BR><HR WIDTH="100%"><BR>
+<B><A NAME="descr"></A>DESCRIPTION</B><BR>
+<P>
+
+ComboBox widget enables the user to select a value among a list given by
+the <B>values</B> option.  The list of possible values can be popped by
+pressing the ArrowButton or by clicking in the entry when <B>editable</B>
+value of the ComboBox is <B>false</B>.<BR> If <B>editable</B> value of the
+ComboBox is <B>true</B> and the entry has the focus, the user can press the
+top and bottom arrow keys to modify its value. If the current value exactly
+match a value in the list, then the previous (for top arrow key) or then
+next (for bottom arrow key) value in the list is displayed.  If the current
+value match the beginning of a value in the list, then this value is
+displayed.  If the current value doesnt match anything, then the first
+value is displayed.
+
+</P>
+<BR><HR WIDTH="50%"><BR>
+<B><A NAME="wso">WIDGET-SPECIFIC OPTIONS</A></B><BR>
+<DL>
+    <DT><A NAME="-autocomplete"><B>-autocomplete</B></A></DT>
+    <DD>
+    Specifies whether or not the combobox should attempt to auto-complete
+    the value in the entry field as the user types.  If true, the combobox
+    will fill in a value that it finds in its value list as the user types
+    into the entry.
+    </DD>
+</DL>
+
+<DL>
+    <DT><A NAME="-autopost"><B>-autopost</B></A></DT>
+    <DD>
+    Specifies whether or not the combobox should post the drop down as
+    the user types.  If true, the combobox will post and scroll to the
+    entry that most closely matches the user entry.
+    </DD>
+</DL>
+
+<DL>
+    <DT><A NAME="-bwlistbox"><B>-bwlistbox</B></A></DT>
+    <DD>
+    Specifies that the combobox should use a BWidget listbox in its drop
+    down instead of the standard Tk option.  This option is enabled by
+    default if the <b>-images</b> option is not empty.
+    </DD>
+</DL>
+
+<DL><DT><A NAME="-expand"><B>-expand</B></A></DT>
+<DD>
+
+Specifies the value expansion behavior for the window. It must be
+<B>none</B> (default) or <B>tab</B>. If <B>tab</B> is specified, then
+a Tab binding is added to attempt to expand the current value based on
+the other values in <B>-values</B>.
+</DD>
+</DL>
+
+<DL><DT><A NAME="-height"><B>-height</B></A></DT>
+<DD>
+
+Specifies the desired height for the window, in lines. If zero or less,
+then the desired height for the window is made just large enough to hold
+all the elements in the listbox.
+</DD>
+
+<DL>
+    <DT><A NAME="-hottrack"><B>-hottrack</B></A></DT>
+    <DD>
+    The selection in the drop down listbox will follow the mouse cursor
+    as it moves.
+    </DD>
+</DL>
+
+<DL>
+    <DT><A NAME="-images"><B>-images</B></A></DT>
+    <DD>
+    A list of images that correspond to the <b>-values</b> option.  Each
+    image will be drawn next to its value in the drop down.  This option
+    enables the <b>-bwlistbox</b> by default as it is needed to display
+    images.
+    </DD>
+</DL>
+
+<DL>
+    <DT><A NAME="-listboxwidth"><B>-listboxwidth</B></A></DT>
+    <DD>
+    Specifies the width of the listbox in the drop down.  Defaults to the
+    same size as the combobox.
+    </DD>
+</DL>
+
+</DL>
+<DL><DT><A NAME="-modifycmd"><B>-modifycmd</B></A></DT>
+<DD>
+
+Specifies a Tcl command called when the user modify the value of the ComboBox by selecting it in the listbox or pressing arrow key.
+</DD>
+</DL>
+<DL><DT><A NAME="-postcommand"><B>-postcommand</B></A></DT>
+<DD>
+
+Specifies a Tcl command called before the listbox of the ComboBox is mapped.
+</DD>
+</DL>
+<DL><DT><A NAME="-values"><B>-values</B></A></DT>
+<DD>
+
+Specifies the values to display in the listbox of the ComboBox.
+</DD>
+</DL>
+<HR WIDTH="50%"><BR>
+<B><A NAME="wc">WIDGET COMMAND</A></B><BR>
+<DL><DT><A NAME="bind"><I>pathName</I> <B>bind</B></A>
+ ?<I>arg...</I>?
+</DT><DD>
+
+Set bindings on the entry widget.
+
+</DD></DL>
+<DL><DT><A NAME="cget"><I>pathName</I> <B>cget</B></A>
+ <I>option</I>
+</DT><DD>
+
+Returns the current value of the configuration option given by <I>option</I>.
+<I>Option</I> may have any of the values accepted by the creation command.
+
+</DD></DL>
+
+<DL><DT><A NAME="clearvalue"><I>pathName</I> <B>clearvalue</B></A>
+</DT><DD>
+
+Clears the current text of the ComboBox.
+
+</DD></DL>
+
+<DL><DT><A NAME="configure"><I>pathName</I> <B>configure</B></A>
+ ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...?
+</DT><DD>
+
+Query or modify the configuration options of the widget. If no
+<I>option</I> is specified, returns a list describing all of the available
+options for <I>pathName</I>.  If <I>option</I> is specified with no
+<I>value</I>, then the command returns a list describing the one named
+<I>option</I> (this list will be identical to the corresponding sublist of
+the value returned if no <I>option</I> is specified). If one or more
+<I>option-value</I> pairs are specified, then the command modifies the
+given widget option(s) to have the given value(s); in this case the command
+returns an empty string.  <I>Option</I> may have any of the values accepted
+by the creation command.  Read-only options are not be modified.
+
+</DD></DL>
+
+<DL><DT><A NAME="get"><I>pathName</I> <B>get</B></A>
+</DT><DD>
+
+Returns the current contents of the entry.
+
+</DD></DL>
+
+<DL><DT><A NAME="getentry"><I>pathName</I> <B>getentry</B></A>
+</DT><DD>
+
+Returns the path to the contained entry widget.
+
+</DD></DL>
+
+<DL><DT><A NAME="getlistbox"><I>pathName</I> <B>getlistbox</B></A>
+</DT><DD>
+
+Returns the path to the listbox in the drop down.
+
+</DD></DL>
+
+<DL><DT><A NAME="getvalue"><I>pathName</I> <B>getvalue</B></A>
+</DT><DD>
+
+Returns the index of the current text of the ComboBox in the list of values,
+or -1 if it doesn't match any value.
+
+</DD></DL>
+
+<DL><DT><A NAME="icursor"><I>pathName</I> <B>icursor</B></A>
+ <I>index</I>
+</DT><DD>
+
+Arrange for the insertion cursor to be displayed just before the
+character given by <i>index</i>.  Returns an empty string.
+
+</DD></DL>
+
+<DL><DT><A NAME="post"><I>pathName</I> <B>post</B></A>
+</DT><DD>
+
+Post the drop down.
+
+</DD></DL>
+
+<DL><DT><A NAME="setvalue"><I>pathName</I> <B>setvalue</B></A>
+ <I>index</I>
+</DT><DD>
+
+Set the text of the ComboBox to the value indicated by <I>index</I> in the list of values.
+<I>index</I> may be specified in any of the following forms:
+<P>
+<DL COMPACT>
+<DT>
+<B>last</B>
+<DD>
+Specifies the last element of the list of values.
+<DT><B>first</B>
+<DD>
+Specifies the first element of the list of values.
+<DT>
+<B>next</B>
+<DD>
+Specifies the element following the current (ie returned by <B>getvalue</B>) in the list
+of values.
+<DT><B>previous</B>
+<DD>
+Specifies the element preceding the current (ie returned by <B>getvalue</B>) in the list
+of values.
+<DT>
+@<I>number</I>
+<DD>
+Specifies the integer index in the list of values.
+</DL>
+
+</DD></DL>
+
+<DL><DT><A NAME="unpost"><I>pathName</I> <B>unpost</B></A>
+</DT><DD>
+
+Unpost the drop down.
+
+</DD></DL>
+
+<HR><BR><B>BINDINGS</B><BR><BR>
+
+When Entry of the ComboBox has the input focus, it has the following bindings, in addition
+to the default Entry bindings:
+<UL>
+<LI>Page up set the value of the ComboBox to the first value.
+<LI>Page down set the value of the ComboBox to the last value.
+<LI>Arrow up set the value of the ComboBox to the previous value.
+<LI>Arrow down set the value of the ComboBox to the next value.
+<LI>If <B>-autopost</B> is enabled, Escape unposts the listbox.
+</UL>
+If the listbox is not mapped and ComboBox is not editable or disabled,
+mouse button 1 on the Entry cause the listbox to popup, as if the user press the ArrowButton.
+
+</BODY></HTML>
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/demo/bwidget.xbm
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/demo/bwidget.xbm	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/demo/bwidget.xbm	(revision 3762)
@@ -0,0 +1,46 @@
+#define bwidget_width 76
+#define bwidget_height 64
+static char bwidget_bits[] = {
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xf0,0x00,0xb6,0x6d,0xdb,0x16,0x00,0x00,0x00,0x00,0xf0,
+ 0x00,0xdb,0xb6,0x6d,0xab,0x00,0x00,0x00,0x00,0xf0,0x00,0x55,0x55,0x55,0x75,
+ 0x01,0x00,0x00,0x00,0xf0,0x00,0x6d,0xdb,0xb6,0xad,0x02,0x00,0x00,0x00,0xf0,
+ 0x00,0xb6,0x6d,0xdb,0xb6,0x05,0x00,0x00,0x00,0xf0,0x00,0x55,0x55,0x55,0x55,
+ 0x05,0x00,0x00,0x00,0xf0,0x00,0xda,0xb6,0xad,0x6d,0x0b,0x00,0x00,0x00,0xf0,
+ 0x00,0x6b,0x03,0xc0,0xb6,0x05,0x00,0x00,0x00,0xf0,0x00,0x56,0x05,0x00,0x55,
+ 0x0d,0x00,0x00,0x00,0xf0,0x00,0xbb,0x05,0x80,0xdb,0x06,0x00,0x00,0x00,0xf0,
+ 0x00,0xca,0x06,0x00,0x6c,0x0b,0x00,0x00,0x00,0xf0,0x00,0xb6,0x02,0x00,0xaa,
+ 0x0a,0x00,0x00,0x00,0xf0,0x00,0xab,0x05,0x00,0x6c,0x0b,0x00,0x00,0x00,0xf0,
+ 0x00,0xdd,0x06,0x00,0xb6,0x05,0x00,0x00,0x00,0xf0,0x00,0xaa,0x02,0x00,0x55,
+ 0x05,0x00,0x00,0x00,0xf0,0x00,0xb7,0x05,0xc0,0xda,0x02,0x00,0x00,0x00,0xf0,
+ 0x00,0xd9,0x06,0x50,0x6b,0x01,0x00,0x00,0x00,0xf0,0x00,0x56,0xb5,0xad,0xad,
+ 0x00,0x00,0x00,0x00,0xf0,0x00,0xdb,0xd6,0x76,0x15,0x00,0x00,0x00,0x00,0xf0,
+ 0x00,0x6a,0xab,0xaa,0x2d,0x00,0x00,0x00,0x00,0xf0,0x00,0x56,0x75,0xad,0xb6,
+ 0x02,0x00,0x00,0x00,0xf0,0x00,0xbb,0xad,0xd6,0xaa,0x05,0x00,0x00,0x00,0xf0,
+ 0x00,0xca,0xb6,0x6b,0xdb,0x2a,0x00,0x00,0x00,0xf0,0x00,0x77,0xd5,0x5c,0x6d,
+ 0x2d,0x00,0x00,0x00,0xf0,0x00,0x99,0x05,0x00,0xaa,0x56,0x00,0x00,0x00,0xf0,
+ 0x00,0xee,0x06,0x00,0x6c,0xbb,0x00,0x00,0x00,0xf0,0x00,0xaa,0x02,0x00,0xb0,
+ 0x55,0x00,0x00,0x00,0xf0,0x00,0x55,0x05,0x00,0xa8,0xd6,0x00,0x00,0x00,0xf0,
+ 0x00,0xee,0x06,0x00,0xd0,0x6a,0x00,0x00,0x00,0xf0,0x00,0x55,0x03,0x00,0x68,
+ 0xb7,0xfc,0x00,0x7e,0xf0,0x00,0x6d,0x05,0x00,0xa8,0xaa,0xfc,0x80,0x7e,0xf0,
+ 0x00,0xb6,0x05,0x00,0x50,0xbb,0xfe,0x01,0x7e,0xf0,0x00,0x55,0x05,0x00,0x78,
+ 0xad,0xfe,0x81,0x1f,0xf0,0x00,0xb6,0x05,0x00,0xa4,0xb5,0xfe,0x81,0x1f,0xf0,
+ 0x00,0x5b,0x05,0x80,0xba,0x56,0xfe,0x83,0x1f,0xf0,0x00,0xaa,0x6b,0x5b,0xd5,
+ 0x5a,0xff,0x85,0x1f,0xf0,0x00,0xdb,0x5a,0xad,0x57,0x2b,0xff,0xc7,0x0f,0xf0,
+ 0x00,0x6d,0xad,0xd5,0x6a,0x0d,0xff,0xc7,0x0f,0xf0,0x00,0xaa,0xd6,0xb6,0xba,
+ 0x05,0xdf,0xc7,0x0f,0xf0,0x00,0xb7,0xb5,0x5a,0xab,0x8a,0xdf,0xcf,0x0f,0xf0,
+ 0x00,0xd9,0x5a,0xab,0x6d,0x8f,0xcf,0xef,0x07,0xf0,0x00,0x56,0xad,0x75,0xb5,
+ 0xaf,0x8f,0xef,0x07,0xf0,0x00,0xb5,0xeb,0x5a,0x00,0x9f,0xcf,0xef,0x07,0xf0,
+ 0x00,0x00,0x00,0x00,0x00,0xff,0x8f,0xff,0x07,0xf0,0x00,0x00,0x00,0x00,0x00,
+ 0xfe,0x87,0xff,0x03,0xf0,0x00,0x00,0x00,0x00,0x00,0xff,0x03,0xff,0x03,0xf0,
+ 0x00,0x00,0x00,0x00,0x00,0xfe,0x03,0xff,0x03,0xf0,0x00,0x00,0x00,0x00,0x00,
+ 0xfe,0x03,0xff,0x01,0xf0,0x00,0x00,0x00,0x00,0x00,0xfc,0x01,0xff,0x03,0xf0,
+ 0x00,0x00,0x00,0x00,0x00,0xfe,0x01,0xfe,0x01,0xf0,0x00,0x00,0x00,0x00,0x00,
+ 0xfc,0x01,0xfe,0x01,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0};
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/demo/manager.tcl
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/demo/manager.tcl	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/demo/manager.tcl	(revision 3762)
@@ -0,0 +1,141 @@
+
+
+namespace eval DemoManager {
+    variable _progress 0
+    variable _afterid  ""
+    variable _status "Compute in progress..."
+    variable _homogeneous 0
+}
+
+
+proc DemoManager::create { nb } {
+    set frame [$nb insert end demoManager -text "Manager"]
+
+    set topf  [frame $frame.topf]
+    set titf1 [TitleFrame $topf.titf1 -text "MainFrame"]
+    set titf2 [TitleFrame $topf.titf2 -text "NoteBook"]
+    set titf3 [TitleFrame $frame.titf3 -text "Paned & ScrolledWindow"]
+
+    _mainframe [$titf1 getframe]
+    _notebook  [$titf2 getframe]
+    _paned     [$titf3 getframe]
+
+    pack $titf1 $titf2 -padx 4 -side left -fill both -expand yes
+    pack $topf -fill x -pady 2
+    pack $titf3 -pady 2 -padx 4 -fill both -expand yes
+
+    return $frame
+}
+
+
+proc DemoManager::_mainframe { parent } {
+    set labf1 [LabelFrame $parent.labf1 -text "Toolbar" -side top -anchor w \
+                   -relief sunken -borderwidth 2]
+    set subf  [$labf1 getframe]
+    checkbutton $subf.chk1 -text "View toolbar 1" -variable Demo::toolbar1 \
+        -command {$Demo::mainframe showtoolbar 0 $Demo::toolbar1}
+    checkbutton $subf.chk2 -text "View toolbar 2" -variable Demo::toolbar2 \
+        -command {$Demo::mainframe showtoolbar 1 $Demo::toolbar2}
+    pack $subf.chk1 $subf.chk2 -anchor w -fill x
+    pack $labf1 -fill both
+
+    set labf2 [LabelFrame $parent.labf2 -text "Status bar" -side top -anchor w \
+                   -relief sunken -borderwidth 2]
+    set subf  [$labf2 getframe]
+    checkbutton $subf.chk1 -text "Show Progress\nindicator" -justify left \
+        -variable DemoManager::_progress \
+        -command  {DemoManager::_show_progress}
+    pack $subf.chk1 -anchor w -fill x
+
+    pack $labf1 $labf2 -side left -padx 4 -fill both
+}
+
+
+proc DemoManager::_notebook { parent } {
+    checkbutton $parent.chk1 -text "Homogeneous label" \
+        -variable DemoManager::_homogeneous \
+        -command  {$Demo::notebook configure -homogeneous $DemoManager::_homogeneous}
+    pack $parent.chk1 -side left -anchor n -fill x
+}
+
+
+
+proc DemoManager::_paned { parent } {
+    set pw1   [PanedWindow $parent.pw -side top]
+    set pane  [$pw1 add -minsize 100]
+
+    set pw2    [PanedWindow $pane.pw -side left]
+    set pane1  [$pw2 add -minsize 100]
+    set pane2  [$pw2 add -minsize 100]
+    set pane3  [$pw1 add -minsize 100]
+
+    foreach pane [list $pane1 $pane2] {
+        set sw    [ScrolledWindow $pane.sw]
+        set lb    [listbox $sw.lb -height 8 -width 20 -highlightthickness 0]
+        for {set i 1} {$i <= 8} {incr i} {
+            $lb insert end "Value $i"
+        }
+        $sw setwidget $lb
+        pack $sw -fill both -expand yes
+    }
+
+    set sw [ScrolledWindow $pane3.sw -relief sunken -borderwidth 2]
+    set sf [ScrollableFrame $sw.f]
+    $sw setwidget $sf
+    set subf [$sf getframe]
+    set lab [label $subf.lab -text "This is a ScrollableFrame"]
+    set chk [checkbutton $subf.chk -text "Constrained width" \
+                 -variable DemoManager::_constw \
+                 -command  "$sf configure -constrainedwidth \$DemoManager::_constw"]
+    pack $lab
+    pack $chk -anchor w
+    bind $chk <FocusIn> "$sf see $chk"
+    for {set i 0} {$i <= 20} {incr i} {
+        pack [entry $subf.ent$i -width 50]  -fill x -pady 4
+	bind $subf.ent$i <FocusIn> "$sf see $subf.ent$i"
+        $subf.ent$i insert end "Text field $i"
+    }
+
+    pack $sw $pw2 $pw1 -fill both -expand yes
+}
+
+
+proc DemoManager::_show_progress { } {
+    variable _progress
+    variable _afterid
+    variable _status
+
+    if { $_progress } {
+        set Demo::status   "Compute in progress..."
+        set Demo::prgindic 0
+        $Demo::mainframe showstatusbar progression
+        if { $_afterid == "" } {
+            set _afterid [after 30 DemoManager::_update_progress]
+        }
+    } else {
+        set Demo::status ""
+        $Demo::mainframe showstatusbar status
+        set _afterid ""
+    }
+}
+
+
+proc DemoManager::_update_progress { } {
+    variable _progress
+    variable _afterid
+
+    if { $_progress } {
+        if { $Demo::prgindic < 100 } {
+            incr Demo::prgindic 5
+            set _afterid [after 30 DemoManager::_update_progress]
+        } else {
+            set _progress 0
+            $Demo::mainframe showstatusbar status
+            set Demo::status "Done"
+            set _afterid ""
+            after 500 {set Demo::status ""}
+        }
+    } else {
+        set _afterid ""
+    }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/demo/x1.xbm
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/demo/x1.xbm	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/demo/x1.xbm	(revision 3762)
@@ -0,0 +1,2258 @@
+#define x1_width 626
+#define x1_height 428
+static char x1_bits[] = {
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0x03,0x80,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0xe0,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,
+ 0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,
+ 0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x80,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x80,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x03,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,
+ 0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,
+ 0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,
+ 0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x03,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0xfc,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,
+ 0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x3f,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xfc,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,
+ 0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x03,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
+ 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xe0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,
+ 0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x1f,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0xfc,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xc0,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,
+ 0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x0f,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xfe,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0xfc,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x80,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,
+ 0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0x03,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x07,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0x01,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xfc,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0xfc,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xfe,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x1f,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0x3f,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0xfc,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xf0,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,
+ 0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xfc,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0x0f,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0x07,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0xfc,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xe0,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,
+ 0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x03,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x03,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,
+ 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0xfc,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x80,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x0f,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x0f,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0x7f,0x00,0x00,0x00,
+ 0x00,0xf8,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0xfc,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,
+ 0x7f,0x00,0x00,0x00,0x00,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0xfc,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xfe,0xff,0xff,0x3f,0x00,0x00,0x00,0xc0,0xff,0xff,0x03,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x3f,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0xe0,0xff,0xff,
+ 0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0x1f,0x00,0x00,
+ 0x00,0xf0,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0xfc,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,
+ 0xff,0x1f,0x00,0x00,0x00,0xfc,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,
+ 0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xf0,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0xfe,0xff,0xff,0x3f,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0xfe,0xff,
+ 0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x0f,0x00,
+ 0x00,0x00,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0xfc,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,
+ 0xff,0xff,0x07,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x01,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xc0,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0x01,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x03,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0xe0,0xff,
+ 0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,
+ 0xf8,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0xfc,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0x03,
+ 0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,
+ 0x00,0x00,0x00,0x00,0xfe,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0xfc,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,
+ 0xff,0xff,0xff,0x01,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x80,0xff,0x07,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x07,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,
+ 0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xc0,0xff,0x07,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x07,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0xf8,
+ 0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,
+ 0xe0,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xfc,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,
+ 0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,
+ 0x00,0x00,0x00,0x00,0xf8,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xfc,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,
+ 0xff,0xff,0xff,0xff,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0xfc,0xff,0x0f,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x0f,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,
+ 0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x80,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0xfe,0xff,0x0f,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,
+ 0xfe,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,
+ 0x00,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0xfc,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,
+ 0x7f,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x07,0x00,0x00,0x00,0x80,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,
+ 0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,
+ 0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,
+ 0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0xc0,0xff,0xff,0x1f,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x1f,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0xe0,0xff,0xff,
+ 0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,
+ 0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,
+ 0x00,0xf0,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xfc,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,
+ 0xff,0x3f,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,
+ 0xff,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x3f,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
+ 0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,
+ 0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x1f,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x7f,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x80,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0xfe,0xff,
+ 0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xfc,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,
+ 0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,
+ 0x00,0x00,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xfc,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x1f,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,
+ 0xff,0x1f,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x7f,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xf0,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0x1f,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0xe0,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0xe0,0xff,
+ 0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,
+ 0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0x07,0x00,
+ 0x00,0x00,0xe0,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x0f,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,
+ 0xff,0xff,0x03,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xe0,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0x1f,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0xf0,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xfc,
+ 0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x07,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0x00,
+ 0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xfd,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x07,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,
+ 0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xfd,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0xf0,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x80,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,
+ 0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,
+ 0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x80,
+ 0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x07,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0x1f,
+ 0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xfd,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0xf8,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,
+ 0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,
+ 0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0x07,0x00,0x00,0x00,
+ 0xf8,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x03,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,
+ 0x03,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xfe,0xff,0xff,0x01,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0xfc,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0x01,0x00,0x00,0x00,0xfe,0xff,0xff,
+ 0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,
+ 0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x00,0x00,0x00,
+ 0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x03,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,
+ 0x7f,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xfc,0xff,0x7f,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0xfc,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0x3f,0x00,0x00,0x00,0xc0,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x03,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0x1f,0x00,0x00,
+ 0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x03,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,
+ 0xff,0x1f,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0xfc,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xf0,0xff,0x0f,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,
+ 0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0x07,0x00,0x00,0x00,0xf8,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x03,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0x07,0x00,
+ 0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xe0,0xff,0x03,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0xfe,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xe0,0xff,0x01,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,
+ 0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0x01,0x00,0x00,0x00,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x07,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0x00,
+ 0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,
+ 0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x80,0x7f,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x03,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0xfe,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x80,0x7f,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,
+ 0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x3f,0x00,0x00,0x00,0xe0,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x80,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x0f,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,
+ 0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,
+ 0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x80,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x1f,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x07,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x80,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x1f,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,
+ 0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x3f,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x06,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0xf0,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0xfc,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,
+ 0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xfd,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0x00,0x00,0x00,
+ 0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xfd,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xfc,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0x00,0x00,0x00,0x00,0x00,0xf8,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0x00,0x00,
+ 0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xfc,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xfc,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xfc,0x00,0x00,0x00,0x00,0x00,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xfc,0x00,
+ 0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x7f,0xfc,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x7f,0xfc,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xfc,0x00,0x00,0x00,0x00,
+ 0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xfc,
+ 0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x3f,0xfc,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xfc,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xfc,0x00,0x00,0x00,
+ 0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,
+ 0xfc,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x1f,0xfc,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0xfc,0x00,0x00,0x00,0x00,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xfc,0x00,0x00,
+ 0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x0f,0xfc,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x0f,0xfc,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0xfc,0x00,0x00,0x00,0xe0,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0xfc,0x00,
+ 0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x07,0xfc,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x07,0xfc,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0xfc,0x00,0x00,0x00,0xf8,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0xfc,
+ 0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x03,0xfc,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x01,0xfc,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0xfc,0x00,0x00,0x00,
+ 0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,
+ 0xfc,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x00,0xfc,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xfc,0x00,0x00,0x80,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0xfc,0x00,0x00,
+ 0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,
+ 0x00,0xfc,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x3f,0x00,0xfc,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0xfc,0x00,0x00,0xe0,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0xfc,0x00,
+ 0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x1f,0x00,0xfc,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x1f,0x00,0xfc,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0xfc,0x00,0x00,0xf8,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0xfc,
+ 0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x0f,0x00,0xfc,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x07,0x00,0xfc,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0xfc,0x00,0x00,0xfe,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,
+ 0xfc,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x03,0x00,0xfc,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0xfc,0x00,0x80,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0xfc,0x00,0x80,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,
+ 0x00,0xfc,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x00,0x00,0xfc,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0xfc,0x00,0xe0,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0xfc,0x00,
+ 0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,
+ 0x00,0x00,0xfc,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x3f,0x00,0x00,0xfc,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0xfc,0x00,0xf0,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0xfc,
+ 0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x0f,0x00,0x00,0xfc,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x07,0x00,0x00,0xfc,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0xfc,0x00,0xfc,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,
+ 0xfc,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x03,0x00,0x00,0xfc,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0xfc,0x00,0xfe,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0xfc,0x00,0xfe,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,
+ 0x00,0xfc,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x7f,0x00,0x00,0x00,0xfc,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0xfc,0x00,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0xfc,0x80,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,
+ 0x00,0x00,0xfc,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x1f,0x00,0x00,0x00,0xfc,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0xfc,0xc0,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0xfc,
+ 0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,
+ 0x00,0x00,0x00,0xfc,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x03,0x00,0x00,0x00,0xfc,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0xfc,0xe0,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,
+ 0xfc,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x01,0x00,0x00,0x00,0xfc,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xfc,0xf0,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0xfc,0xf0,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,
+ 0x00,0xfc,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x3f,0x00,0x00,0x00,0x00,0xfc,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0xfc,0xf8,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0xfc,0xf8,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,
+ 0x00,0x00,0xfc,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x07,0x00,0x00,0x00,0x00,0xfc,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0xfc,0xf8,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xfc,
+ 0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,
+ 0x00,0x00,0x00,0xfc,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xfc,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0xfc,0xfc,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,
+ 0xfc,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,
+ 0x00,0x00,0x00,0x00,0xfc,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0xfc,0xfe,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0xfc,0xfe,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,
+ 0x00,0xfc,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,
+ 0x00,0x00,0x00,0x00,0x00,0xfc,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0xfc,0xfe,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0xfc,0xfe,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x7f,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0xfc,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x7f,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0xf8,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x03,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x0f,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,
+ 0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0xe0,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x01,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,
+ 0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x03,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x07,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,
+ 0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,
+ 0x00,0x00,0x80,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0xc0,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x7f,0x00,0x00,0x00,0xc0,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,
+ 0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0xc0,0x0f,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x01,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0xe0,
+ 0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x80,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,
+ 0x00,0x00,0x00,0xf0,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x80,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0xf8,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0xfc,0x3f,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,
+ 0xfc,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x80,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x01,0x00,0x00,0x00,0xfe,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x80,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,
+ 0x7f,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x80,0xff,0x7f,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,
+ 0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,
+ 0x80,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x80,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x3f,0x00,0x00,0x00,0xc0,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,
+ 0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0xe0,0xff,0xff,0x01,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,
+ 0xff,0x7f,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0xf0,0xff,0xff,
+ 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
+ 0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,
+ 0x00,0xf8,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0xc0,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x07,0x00,0x00,0x00,0xf8,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,
+ 0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0xfc,0xff,0xff,0x03,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,
+ 0xff,0xff,0x3f,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0xfe,0xff,
+ 0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xf0,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,
+ 0x00,0x00,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0xc0,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x7f,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0x1f,
+ 0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0x0f,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,
+ 0xff,0xff,0xff,0x1f,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0xc0,0xff,
+ 0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,
+ 0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,
+ 0x00,0x00,0xe0,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0xe0,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xfc,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x0f,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,
+ 0x0f,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0x1f,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,
+ 0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xfe,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0xf8,
+ 0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0xe0,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xfc,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x01,
+ 0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0x07,0x00,0x00,
+ 0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xfc,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,
+ 0xff,0x07,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xfe,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xf0,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,
+ 0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xfc,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xfc,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,
+ 0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0xf0,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xfc,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0x1f,
+ 0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0x03,0x00,
+ 0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xfc,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,
+ 0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,
+ 0xff,0xff,0x03,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xfc,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,
+ 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xe0,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xfc,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,
+ 0xe0,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0xf8,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xfc,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,
+ 0x03,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0x00,
+ 0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,
+ 0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0x01,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,
+ 0xff,0xff,0xff,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xf8,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,
+ 0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,
+ 0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,
+ 0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0x3f,0x00,0x00,0x00,0xfc,
+ 0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xfc,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,
+ 0x3f,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x3f,
+ 0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,
+ 0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xf8,0xff,0xff,0x1f,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xf0,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x80,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0x0f,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,
+ 0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xfc,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0x07,0x00,0x00,
+ 0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0x07,0x00,0x00,0x00,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xfc,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,
+ 0xff,0x01,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,
+ 0x01,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xe0,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xfe,0x7f,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xc0,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0xf8,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x1f,0x00,0x00,0x00,0x80,0xff,0xff,0xff,
+ 0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xfc,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,
+ 0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x80,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xfc,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,
+ 0xff,0x1f,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x80,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x80,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0x03,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x80,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,
+ 0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xfc,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0x03,0x00,
+ 0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,
+ 0xff,0xff,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xc0,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0x1f,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,
+ 0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0xf0,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,
+ 0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xfc,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0x1f,0x00,
+ 0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,
+ 0xff,0xff,0x07,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0xfc,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xe0,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0x7f,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xfc,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,
+ 0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,
+ 0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xfc,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0x7f,0x00,
+ 0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0xf8,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,
+ 0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x07,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0xf0,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xc0,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,
+ 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xfc,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0x01,0x00,0x00,0x00,0x00,
+ 0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x7f,0x00,
+ 0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x80,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0xe0,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xfe,0x1f,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,
+ 0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xf0,0x01,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,
+ 0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xfc,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xc0,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x80,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0x7f,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,
+ 0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,
+ 0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xfc,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xf8,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0xfc,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x01,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xfc,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,
+ 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xfe,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0xf0,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,
+ 0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0x07,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xfc,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,
+ 0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xc0,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0xc0,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,
+ 0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0x0f,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xfc,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
+ 0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,
+ 0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xf8,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0xfe,
+ 0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,
+ 0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x1f,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x80,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,
+ 0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xfc,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x3f,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xf0,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x80,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xf8,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,
+ 0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xfc,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7e,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,
+ 0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0xf8,
+ 0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x80,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,
+ 0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x01,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,
+ 0x80,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,
+ 0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,
+ 0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,
+ 0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,
+ 0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xfc,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x80,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0x1f,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,
+ 0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,
+ 0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x80,0x0f,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0xc0,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x80,
+ 0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xfc};
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/demo/select.tcl
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/demo/select.tcl	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/demo/select.tcl	(revision 3762)
@@ -0,0 +1,59 @@
+namespace eval DemoSelect {
+    variable var
+}
+
+
+proc DemoSelect::create { nb } {
+    set frame [$nb insert end demoSelect -text "Spin & Combo"]
+
+    set titf1 [TitleFrame $frame.titf1 -text SpinBox]
+    set subf  [$titf1 getframe]
+    set spin  [SpinBox $subf.spin \
+                   -range {1 100 1} -textvariable DemoSelect::var(spin,var) \
+                   -helptext "This is the SpinBox"]
+    set ent   [LabelEntry $subf.ent -label "Linked var" -labelwidth 10 -labelanchor w \
+                   -textvariable DemoSelect::var(spin,var) -editable 0 \
+                   -helptext "This is an Entry reflecting\nthe linked var of SpinBox"]
+    set labf  [LabelFrame $subf.options -text "Options" -side top -anchor w \
+                   -relief sunken -borderwidth 1 \
+                   -helptext "Modify some options of SpinBox"]
+    set subf  [$labf getframe]
+    set chk1  [checkbutton $subf.chk1 -text "Non editable" \
+                   -variable DemoSelect::var(spin,editable) -onvalue false -offvalue true \
+                   -command "$spin configure -editable \$DemoSelect::var(spin,editable)"]
+    set chk2  [checkbutton $subf.chk2 -text "Disabled" \
+                   -variable DemoSelect::var(spin,state) -onvalue disabled -offvalue normal \
+                   -command "$spin configure -state \$DemoSelect::var(spin,state)"]
+
+    pack $chk1 $chk2 -side left -anchor w
+    pack $spin $ent $labf -pady 4 -fill x
+    pack $titf1
+
+    set titf2 [TitleFrame $frame.titf2 -text ComboBox]
+    set subf  [$titf2 getframe]
+    set combo [ComboBox $subf.combo \
+                   -textvariable DemoSelect::var(combo,var) \
+                   -values {"first value" "second value" "third value" "fourth value" "fifth value"} \
+                   -helptext "This is the ComboBox"]
+    set ent   [LabelEntry $subf.ent -label "Linked var" -labelwidth 10 -labelanchor w \
+                   -textvariable DemoSelect::var(combo,var) -editable 0 \
+                   -helptext "This is an Entry reflecting\nthe linked var of ComboBox"]
+    set labf  [LabelFrame $subf.options -text "Options" -side top -anchor w \
+                   -relief sunken -borderwidth 1 \
+                   -helptext "Modify some options of SpinBox"]
+    set subf  [$labf getframe]
+    set chk1  [checkbutton $subf.chk1 -text "Non editable" \
+                   -variable DemoSelect::var(combo,editable) -onvalue false -offvalue true \
+                   -command  "$combo configure -editable \$DemoSelect::var(combo,editable)"]
+    set chk2  [checkbutton $subf.chk2 -text "Disabled" \
+                   -variable DemoSelect::var(combo,state) -onvalue disabled -offvalue normal \
+                   -command  "$combo configure -state \$DemoSelect::var(combo,state)"]
+
+    pack $chk1 $chk2 -side left -anchor w
+    pack $combo $ent $labf -pady 4 -fill x
+
+    pack $titf1 $titf2 -pady 4
+
+    return $frame
+}
+
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/demo/tree.tcl
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/demo/tree.tcl	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/demo/tree.tcl	(revision 3762)
@@ -0,0 +1,260 @@
+
+namespace eval DemoTree {
+    variable count
+    variable dblclick
+}
+
+
+proc DemoTree::create { nb } {
+    set frame [$nb insert end demoTree -text "Tree"]
+    set pw    [PanedWindow $frame.pw -side top]
+
+    set pane  [$pw add -weight 1]
+    set title [TitleFrame $pane.lf -text "Directory tree"]
+    set sw    [ScrolledWindow [$title getframe].sw \
+                  -relief sunken -borderwidth 2]
+    set tree  [Tree $sw.tree \
+                   -relief flat -borderwidth 0 -width 15 -highlightthickness 0\
+		   -redraw 0 -dropenabled 1 -dragenabled 1 \
+                   -dragevent 3 \
+                   -droptypes {
+                       TREE_NODE    {copy {} move {} link {}}
+                       LISTBOX_ITEM {copy {} move {} link {}}
+                   } \
+                   -opencmd   "DemoTree::moddir 1 $sw.tree" \
+                   -closecmd  "DemoTree::moddir 0 $sw.tree"]
+    $sw setwidget $tree
+
+    pack $sw    -side top  -expand yes -fill both
+    pack $title -fill both -expand yes
+
+    set pane [$pw add -weight 2]
+    set lf   [TitleFrame $pane.lf -text "Content"]
+    set sw   [ScrolledWindow [$lf getframe].sw \
+                  -scrollbar horizontal -auto none -relief sunken -borderwidth 2]
+    set list [ListBox::create $sw.lb \
+                  -relief flat -borderwidth 0 \
+                  -dragevent 3 \
+                  -dropenabled 1 -dragenabled 1 \
+                  -width 20 -highlightthickness 0 -multicolumn true \
+                  -redraw 0 -dragenabled 1 \
+                  -droptypes {
+                      TREE_NODE    {copy {} move {} link {}}
+                      LISTBOX_ITEM {copy {} move {} link {}}}]
+    $sw setwidget $list
+
+    pack $sw $lf -fill both -expand yes
+
+    pack $pw -fill both -expand yes
+
+    $tree bindText  <ButtonPress-1>        "DemoTree::select tree 1 $tree $list"
+    $tree bindText  <Double-ButtonPress-1> "DemoTree::select tree 2 $tree $list"
+    $list bindText  <ButtonPress-1>        "DemoTree::select list 1 $tree $list"
+    $list bindText  <Double-ButtonPress-1> "DemoTree::select list 2 $tree $list"
+    $list bindImage <Double-ButtonPress-1> "DemoTree::select list 2 $tree $list"
+
+    $nb itemconfigure demoTree \
+        -createcmd "DemoTree::init $tree $list" \
+        -raisecmd  {
+            # on windows you can get 100x100+-200+200 [PT]
+            regexp {[0-9]+x[0-9]+([+-]{1,2}[0-9]+)([+-]{1,2}[0-9]+)} \
+                [wm geom .] global_foo global_w global_h
+            # {}'s left off on purpose. [PT]
+            BWidget::place .top 0 0 at [expr $global_w-[winfo screenwidth .]] $global_h
+            wm deiconify .top
+            bind . <Unmap> {wm withdraw .top}
+            bind . <Map>   {wm deiconify .top}
+            bind . <Configure> {
+                if { ![string compare %W "."] } {
+                    # see above re: windows geometry
+                    regexp {[0-9]+x[0-9]+([+-]{1,2}[0-9]+)([+-]{1,2}[0-9]+)} \
+                        [wm geom .] global_foo global_w global_h
+                    BWidget::place .top 0 0 at [expr $global_w-[winfo screenwidth .]] $global_h
+                }
+            }
+        } \
+        -leavecmd {
+            wm withdraw .top
+            bind . <Unmap> {}
+            bind . <Map>   {}
+            bind . <Configure> {}
+            return 1
+        }
+}
+
+
+proc DemoTree::init { tree list args } {
+    global   tcl_platform
+    variable count
+
+    set count 0
+    if { $tcl_platform(platform) == "unix" } {
+        set rootdir [glob "~"]
+    } else {
+        set rootdir "c:\\"
+    }
+    $tree insert end root home -text $rootdir -data $rootdir -open 1 \
+        -image [Bitmap::get openfold]
+    getdir $tree home $rootdir
+    DemoTree::select tree 1 $tree $list home
+    $tree configure -redraw 1
+    $list configure -redraw 1
+
+    # ScrollView
+    set w .top
+    toplevel $w
+    wm withdraw $w
+    wm protocol $w WM_DELETE_WINDOW {
+        # don't kill me
+    }
+    wm resizable $w 0 0 
+    wm title $w "Drag rectangle to scroll directory tree"
+    wm transient $w .
+    ScrollView $w.sv -window $tree -fill white -relief sunken -bd 1 \
+	    -width 300 -height 300
+    pack $w.sv -fill both -expand yes
+}
+
+
+proc DemoTree::getdir { tree node path } {
+    variable count
+
+    set lentries [glob -nocomplain [file join $path "*"]]
+    set lfiles   {}
+    foreach f $lentries {
+        set tail [file tail $f]
+        if { [file isdirectory $f] } {
+            $tree insert end $node n:$count \
+                -text      $tail \
+                -image     [Bitmap::get folder] \
+                -drawcross allways \
+                -data      $f
+            incr count
+        } else {
+            lappend lfiles $tail
+        }
+    }
+    $tree itemconfigure $node -drawcross auto -data $lfiles
+}
+
+
+proc DemoTree::moddir { idx tree node } {
+    if { $idx && [$tree itemcget $node -drawcross] == "allways" } {
+        getdir $tree $node [$tree itemcget $node -data]
+        if { [llength [$tree nodes $node]] } {
+            $tree itemconfigure $node -image [Bitmap::get openfold]
+        } else {
+            $tree itemconfigure $node -image [Bitmap::get folder]
+        }
+    } else {
+        $tree itemconfigure $node -image [Bitmap::get [lindex {folder openfold} $idx]]
+    }
+}
+
+
+proc DemoTree::select { where num tree list node } {
+    variable dblclick
+
+    set dblclick 1
+    if { $num == 1 } {
+        if { $where == "tree" && [lsearch [$tree selection get] $node] != -1 } {
+            unset dblclick
+            after 500 "DemoTree::edit tree $tree $list $node"
+            return
+        }
+        if { $where == "list" && [lsearch [$list selection get] $node] != -1 } {
+            unset dblclick
+            after 500 "DemoTree::edit list $tree $list $node"
+            return
+        }
+        if { $where == "tree" } {
+            select_node $tree $list $node
+        } else {
+            $list selection set $node
+        }
+    } elseif { $where == "list" && [$tree exists $node] } {
+	set parent [$tree parent $node]
+	while { $parent != "root" } {
+	    $tree itemconfigure $parent -open 1
+	    set parent [$tree parent $parent]
+	}
+	select_node $tree $list $node
+    }
+}
+
+
+proc DemoTree::select_node { tree list node } {
+    $tree selection set $node
+    update
+    eval $list delete [$list item 0 end]
+
+    set dir [$tree itemcget $node -data]
+    if { [$tree itemcget $node -drawcross] == "allways" } {
+        getdir $tree $node $dir
+        set dir [$tree itemcget $node -data]
+    }
+
+    foreach subnode [$tree nodes $node] {
+        $list insert end $subnode \
+            -text  [$tree itemcget $subnode -text] \
+            -image [Bitmap::get folder]
+    }
+    set num 0
+    foreach f $dir {
+        $list insert end f:$num \
+            -text  $f \
+            -image [Bitmap::get file]
+        incr num
+    }
+}
+
+
+proc DemoTree::edit { where tree list node } {
+    variable dblclick
+
+    if { [info exists dblclick] } {
+        return
+    }
+
+    if { $where == "tree" && [lsearch [$tree selection get] $node] != -1 } {
+        set res [$tree edit $node [$tree itemcget $node -text]]
+        if { $res != "" } {
+            $tree itemconfigure $node -text $res
+            if { [$list exists $node] } {
+                $list itemconfigure $node -text $res
+            }
+            $tree selection set $node
+        }
+        return
+    }
+
+    if { $where == "list" } {
+        set res [$list edit $node [$list itemcget $node -text]]
+        if { $res != "" } {
+            $list itemconfigure $node -text $res
+            if { [$tree exists $node] } {
+                $tree itemconfigure $node -text $res
+            } else {
+                set cursel [$tree selection get]
+                set index  [expr {[$list index $node]-[llength [$tree nodes $cursel]]}]
+                set data   [$tree itemcget $cursel -data]
+                set data   [lreplace $data $index $index $res]
+                $tree itemconfigure $cursel -data $data
+            }
+            $list selection set $node
+        }
+    }
+}
+
+
+proc DemoTree::expand { tree but } {
+    if { [set cur [$tree selection get]] != "" } {
+        if { $but == 0 } {
+            $tree opentree $cur
+        } else {
+            $tree closetree $cur
+        }
+    }
+}
+
+
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/demo/basic.tcl
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/demo/basic.tcl	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/demo/basic.tcl	(revision 3762)
@@ -0,0 +1,199 @@
+
+namespace eval DemoBasic {
+    variable var
+    variable count 0
+    variable id    ""
+}
+
+
+proc DemoBasic::create { nb } {
+    set frame [$nb insert end demoBasic -text "Basic"]
+
+    set topf  [frame $frame.topf]
+    set titf1 [TitleFrame $topf.titf1 -text "Label"]
+    set titf2 [TitleFrame $topf.titf2 -text "Entry"]
+    set titf3 [TitleFrame $frame.titf3 -text "Button and ArrowButton"]
+
+    _label  [$titf1 getframe]
+    _entry  [$titf2 getframe]
+    _button [$titf3 getframe]
+
+    pack $titf1 $titf2 -side left -fill both -padx 4 -expand yes
+    pack $topf -pady 2 -fill x
+    pack $titf3 -pady 2 -padx 4 -fill x
+
+    return $frame
+}
+
+
+proc DemoBasic::_label { parent } {
+    variable var
+
+    set lab [Label $parent.label -text "This is a Label widget" \
+                 -helptext "Label widget"]
+    set chk [checkbutton $parent.chk -text "Disabled" \
+                 -variable DemoBasic::var($lab,-state) \
+                 -onvalue  disabled -offvalue normal \
+                 -command  "$lab configure -state \$DemoBasic::var($lab,-state)"]
+    pack $lab -anchor w -pady 4
+    pack $chk -anchor w
+}
+
+
+proc DemoBasic::_entry { parent } {
+    set ent  [Entry $parent.entry -text "Press enter" \
+                  -command  {set DemoBasic::var(entcmd) "-command called" ; after 500 {set DemoBasic::var(entcmd) ""}} \
+                   -helptext "Entry widget"]
+    set chk1 [checkbutton $parent.chk1 -text "Disabled" \
+                  -variable DemoBasic::var($ent,state) \
+                  -onvalue  disabled -offvalue normal \
+                  -command  "$ent configure -state \$DemoBasic::var($ent,state)"]
+    set chk2 [checkbutton $parent.chk2 -text "Non editable" \
+                  -variable DemoBasic::var($ent,editable) \
+                  -onvalue  false -offvalue true \
+                  -command  "$ent configure -editable \$DemoBasic::var($ent,editable)"]
+    set lab  [label $parent.cmd -textvariable DemoBasic::var(entcmd) -foreground red]
+    pack $ent -pady 4 -anchor w
+    pack $chk1 $chk2 -anchor w
+    pack $lab -pady 4
+}
+
+
+proc DemoBasic::_button { parent } {
+    variable var
+
+    set frame [frame $parent.butfr]
+    set but   [Button $frame.but -text "Press me!" \
+                   -repeatdelay 300 \
+                   -command  "DemoBasic::_butcmd command" \
+                   -helptext "This is a Button widget"]
+    set sep1  [Separator $frame.sep1 -orient vertical]
+    set arr1  [ArrowButton $frame.arr1 -type button \
+                   -width 25 -height 25 \
+                   -repeatdelay 300 \
+                   -command  "DemoBasic::_butcmd command" \
+                   -helptext "This is an ArrowButton widget\nof type button"]
+    set sep2  [Separator $frame.sep2 -orient vertical]
+    set arr2  [ArrowButton $frame.arr2 -type arrow \
+                   -width 25 -height 25 -relief sunken -ipadx 0 -ipady 0 \
+                   -repeatdelay 300 \
+                   -command  "DemoBasic::_butcmd command" \
+                   -helptext "This is an ArrowButton widget\nof type arrow"]
+
+    pack $but  -side left -padx 4
+    pack $sep1 -side left -padx 4 -fill y
+    pack $arr1 -side left -padx 4
+    pack $sep2 -side left -padx 4 -fill y
+    pack $arr2 -side left -padx 4
+    pack $frame
+
+    set sep3  [Separator $parent.sep3 -orient horizontal]
+    pack $sep3 -fill x -pady 10
+
+    set labf1 [LabelFrame $parent.labf1 -text "Command" -side top \
+                   -anchor w -relief sunken -borderwidth 1]
+    set subf  [$labf1 getframe]
+    set chk1  [checkbutton $subf.chk1 -text "Disabled" \
+                   -variable DemoBasic::var(bstate) -onvalue disabled -offvalue normal \
+                   -command  "DemoBasic::_bstate \$DemoBasic::var(bstate) $but $arr1 $arr2"]
+    set chk2  [checkbutton $subf.chk2 -text "Use -armcommand/\n-disarmcommand" \
+                   -justify left \
+                   -variable DemoBasic::var(barmcmd) \
+                   -command  "DemoBasic::_barmcmd \$DemoBasic::var(barmcmd) $but $arr1 $arr2"]
+    pack $chk1 $chk2 -anchor w
+
+    set label [label $parent.label -textvariable DemoBasic::var(butcmd) -foreground red]
+    pack $label -side bottom -pady 4
+
+    set labf2 [LabelFrame $parent.labf2 -text "Direction" -side top \
+                   -anchor w -relief sunken -borderwidth 1]
+    set subf  [$labf2 getframe]
+    set var(bside) top
+    foreach dir {top left bottom right} {
+        set rad [radiobutton $subf.$dir -text "$dir arrow" \
+                     -variable DemoBasic::var(bside) -value $dir \
+                     -command  "DemoBasic::_bside \$DemoBasic::var(bside) $arr1 $arr2"]
+        pack $rad -anchor w
+    }
+
+    set labf3 [LabelFrame $parent.labf3 -text "Relief" -side top \
+                   -anchor w -relief sunken -borderwidth 1]
+    set subf  [$labf3 getframe]
+    set var(brelief) raised
+    foreach {f lrelief} {f1 {raised sunken ridge groove} f2 {flat solid link}} {
+        set f [frame $subf.$f]
+        foreach relief $lrelief {
+            set rad [radiobutton $f.$relief -text $relief \
+                         -variable DemoBasic::var(brelief) -value $relief \
+                         -command  "DemoBasic::_brelief \$DemoBasic::var(brelief) $but $arr1 $arr2"]
+            pack $rad -anchor w
+        }
+        pack $f -side left -padx 2 -anchor n
+    }
+    pack $labf1 $labf2 $labf3 -side left -fill y -padx 4
+}
+
+
+proc DemoBasic::_bstate { state but arr1 arr2 } {
+    foreach but [list $but $arr1 $arr2] {
+        $but configure -state $state
+    }
+}
+
+
+proc DemoBasic::_brelief { relief but arr1 arr2 } {
+    $but configure -relief $relief
+    if { $relief != "link" } {
+        foreach arr [list $arr1 $arr2] {
+            $arr configure -relief $relief
+        }
+    }
+}
+
+
+proc DemoBasic::_bside { side args } {
+    foreach arr $args {
+        $arr configure -dir $side
+    }
+}
+
+
+proc DemoBasic::_barmcmd { value but arr1 arr2 } {
+    if { $value } {
+        $but configure \
+            -armcommand    "DemoBasic::_butcmd arm" \
+            -disarmcommand "DemoBasic::_butcmd disarm" \
+            -command {}
+        foreach arr [list $arr1 $arr2] {
+            $arr configure \
+                -armcommand    "DemoBasic::_butcmd arm" \
+                -disarmcommand "DemoBasic::_butcmd disarm" \
+                -command {}
+        }
+    } else {
+        $but configure -armcommand {} -disarmcommand {} \
+            -command  "DemoBasic::_butcmd command"
+        foreach arr [list $arr1 $arr2] {
+            $arr configure -armcommand {} -disarmcommand {} \
+                -command "DemoBasic::_butcmd command"
+        }
+    }
+}
+
+
+proc DemoBasic::_butcmd { reason } {
+    variable count
+    variable id
+
+    catch {after cancel $id}
+    if { $reason == "arm" } {
+        incr count
+        set DemoBasic::var(butcmd) "$reason command called ($count)"
+    } else {
+        set count 0
+        set DemoBasic::var(butcmd) "$reason command called"
+    }
+    set id [after 500 {set DemoBasic::var(butcmd) ""}]
+}
+
+
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/demo/tmpldlg.tcl
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/demo/tmpldlg.tcl	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/demo/tmpldlg.tcl	(revision 3762)
@@ -0,0 +1,215 @@
+
+namespace eval DemoDlg {
+    variable tmpl
+    variable msg
+    variable progmsg
+    variable progval
+    variable resources "en"
+}
+
+
+proc DemoDlg::create { nb } {
+    set frame [$nb insert end demoDlg -text "Dialog"]
+
+    set titf1 [TitleFrame $frame.titf1 -text "Resources"]
+    set titf2 [TitleFrame $frame.titf2 -text "Template Dialog"]
+    set titf3 [TitleFrame $frame.titf3 -text "Message Dialog"]
+    set titf4 [TitleFrame $frame.titf4 -text "Other dialog"]
+
+    set subf [$titf1 getframe]
+    set cmd  {option read [file join $::BWIDGET::LIBRARY "lang" $DemoDlg::resources.rc]}
+    set rad1 [radiobutton $subf.rad1 -text "English" \
+                  -variable DemoDlg::resources -value en \
+                  -command  $cmd]
+    set rad2 [radiobutton $subf.rad2 -text "French" \
+                  -variable DemoDlg::resources -value fr \
+                  -command  $cmd]
+    set rad3 [radiobutton $subf.rad3 -text "German" \
+                  -variable DemoDlg::resources -value de \
+                  -command  $cmd]
+    pack $rad1 $rad2 $rad3 -side left
+
+    _tmpldlg [$titf2 getframe]
+    _msgdlg  [$titf3 getframe]
+    _stddlg  [$titf4 getframe]
+
+    pack $titf1 -fill x -pady 2 -padx 2
+    pack $titf4 -side bottom -fill x -pady 2 -padx 2
+    pack $titf2 $titf3 -side left -padx 2 -fill both -expand yes
+}
+
+
+proc DemoDlg::_tmpldlg { parent } {
+    variable tmpl
+
+    set tmpl(side)   bottom
+    set tmpl(anchor) c
+
+    set labf1 [LabelFrame $parent.labf1 -text "Button side" -side top \
+                   -anchor w -relief sunken -borderwidth 1]
+    set subf  [$labf1 getframe]
+    radiobutton $subf.rad1 -text "Bottom" \
+        -variable DemoDlg::tmpl(side) -value bottom -anchor w
+    radiobutton $subf.rad2 -text "Left" \
+        -variable DemoDlg::tmpl(side) -value left   -anchor w
+    radiobutton $subf.rad3 -text "Right" \
+        -variable DemoDlg::tmpl(side) -value right  -anchor w
+    radiobutton $subf.rad4 -text "Top" \
+        -variable DemoDlg::tmpl(side) -value top    -anchor w
+
+    pack $subf.rad1 $subf.rad2 $subf.rad3 $subf.rad4 -fill x -anchor w
+
+    set labf2 [LabelFrame $parent.labf2 -text "Button anchor" -side top \
+                   -anchor w -relief sunken -borderwidth 1]
+    set subf  [$labf2 getframe]
+    radiobutton $subf.rad1 -text "North" \
+        -variable DemoDlg::tmpl(anchor) -value n -anchor w
+    radiobutton $subf.rad2 -text "West" \
+        -variable DemoDlg::tmpl(anchor) -value w -anchor w
+    radiobutton $subf.rad3 -text "East" \
+        -variable DemoDlg::tmpl(anchor) -value e -anchor w
+    radiobutton $subf.rad4 -text "South" \
+        -variable DemoDlg::tmpl(anchor) -value s -anchor w
+    radiobutton $subf.rad5 -text "Center" \
+        -variable DemoDlg::tmpl(anchor) -value c -anchor w
+
+    pack $subf.rad1 $subf.rad2 $subf.rad3 $subf.rad4 $subf.rad5 -fill x -anchor w
+
+    set sep    [Separator  $parent.sep -orient horizontal]
+    set button [button $parent.but -text "Show" -command DemoDlg::_show_tmpldlg]
+
+    pack $button -side bottom
+    pack $sep -side bottom -fill x -pady 10
+    pack $labf1 $labf2 -side left -padx 4 -anchor n
+}
+
+
+proc DemoDlg::_msgdlg { parent } {
+    variable msg
+
+    set msg(type) ok
+    set msg(icon) info
+
+    set labf1 [LabelFrame $parent.labf1 -text "Type" -side top \
+                   -anchor w -relief sunken -borderwidth 1]
+    set subf  [$labf1 getframe]
+    radiobutton $subf.rad1 -text "Ok" -variable DemoDlg::msg(type) -value ok -anchor w
+    radiobutton $subf.rad2 -text "Ok, Cancel" -variable DemoDlg::msg(type) -value okcancel -anchor w
+    radiobutton $subf.rad3 -text "Retry, Cancel" -variable DemoDlg::msg(type) -value retrycancel -anchor w
+    radiobutton $subf.rad4 -text "Yes, No" -variable DemoDlg::msg(type) -value yesno -anchor w
+    radiobutton $subf.rad5 -text "Yes, No, Cancel" -variable DemoDlg::msg(type) -value yesnocancel -anchor w
+    radiobutton $subf.rad6 -text "Abort, Retry, Ignore" -variable DemoDlg::msg(type) -value abortretryignore -anchor w
+    radiobutton $subf.rad7 -text "User" -variable DemoDlg::msg(type) -value user -anchor w
+    Entry $subf.user -textvariable DemoDlg::msg(buttons)
+
+    pack $subf.rad1 $subf.rad2 $subf.rad3 $subf.rad4 $subf.rad5 $subf.rad6 -fill x -anchor w
+    pack $subf.rad7 $subf.user -side left
+
+    set labf2 [LabelFrame $parent.labf2 -text "Icon" -side top -anchor w -relief sunken -borderwidth 1]
+    set subf  [$labf2 getframe]
+    radiobutton $subf.rad1 -text "Information" -variable DemoDlg::msg(icon) -value info     -anchor w
+    radiobutton $subf.rad2 -text "Question"    -variable DemoDlg::msg(icon) -value question -anchor w
+    radiobutton $subf.rad3 -text "Warning"     -variable DemoDlg::msg(icon) -value warning  -anchor w
+    radiobutton $subf.rad4 -text "Error"       -variable DemoDlg::msg(icon) -value error    -anchor w
+    pack $subf.rad1 $subf.rad2 $subf.rad3 $subf.rad4 -fill x -anchor w
+
+
+    set sep    [Separator  $parent.sep -orient horizontal]
+    set button [button $parent.but -text "Show" -command DemoDlg::_show_msgdlg]
+
+    pack $button -side bottom
+    pack $sep -side bottom -fill x -pady 10
+    pack $labf1 $labf2 -side left -padx 4 -anchor n
+}
+
+
+proc DemoDlg::_stddlg { parent } {
+    set but0  [button $parent.but0 \
+                   -text "Select a color " \
+                   -command "DemoDlg::_show_color $parent.but0"]
+    set but1  [button $parent.but1 \
+                   -text    "Font selector dialog" \
+                   -command DemoDlg::_show_fontdlg]
+    set but2  [button $parent.but2 \
+                   -text    "Progression dialog" \
+                   -command DemoDlg::_show_progdlg]
+    set but3  [button $parent.but3 \
+                   -text    "Password dialog" \
+                   -command DemoDlg::_show_passdlg]
+
+    pack $but0 $but1 $but2 $but3 -side left -padx 5 -anchor w
+}
+
+proc DemoDlg::_show_color {w} {
+    set color [SelectColor::menu $w.color [list below $w] \
+                       -color   [$w cget -background]     \
+                       -command [list $w configure -background]]
+    if {[string length $color]} {
+        $w configure -background $color
+    }
+}
+
+proc DemoDlg::_show_tmpldlg { } {
+    variable tmpl
+
+    set dlg [Dialog .tmpldlg -parent . -modal local \
+                 -separator 1 \
+                 -title   "Template dialog" \
+                 -side    $tmpl(side)    \
+                 -anchor  $tmpl(anchor)  \
+                 -default 0 -cancel 1]
+    $dlg add -name ok
+    $dlg add -name cancel
+    set msg [message [$dlg getframe].msg -text "Template\nDialog" -justify center -anchor c]
+    pack $msg -fill both -expand yes -padx 100 -pady 100
+    $dlg draw
+    destroy $dlg
+}
+
+
+proc DemoDlg::_show_msgdlg { } {
+    variable msg
+
+    destroy .msgdlg
+    MessageDlg .msgdlg -parent . \
+        -message "Message for MessageBox" \
+        -type    $msg(type) \
+        -icon    $msg(icon) \
+        -buttons $msg(buttons)
+}
+
+
+proc DemoDlg::_show_fontdlg { } {
+    set font [SelectFont .fontdlg -parent . -font $Demo::font]
+    if { $font != "" } {
+        Demo::update_font $font
+    }
+}
+
+
+proc DemoDlg::_show_progdlg { } {
+    set DemoDlg::progmsg "Compute in progress..."
+    set DemoDlg::progval 0
+
+    ProgressDlg .progress -parent . -title "Wait..." \
+        -type         infinite \
+        -width        20 \
+        -textvariable DemoDlg::progmsg \
+        -variable     DemoDlg::progval \
+        -stop         "Stop" \
+        -command      {destroy .progress}
+    _update_progdlg
+}
+
+
+proc DemoDlg::_update_progdlg { } {
+    if { [winfo exists .progress] } {
+        set DemoDlg::progval 2
+        after 20 DemoDlg::_update_progdlg
+    }
+}
+
+proc DemoDlg::_show_passdlg { } {
+    PasswdDlg .passwd -parent .
+}
+
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/demo/demo.tcl
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/demo/demo.tcl	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/demo/demo.tcl	(revision 3762)
@@ -0,0 +1,272 @@
+#!/bin/sh
+# The next line is executed by /bin/sh, but not tcl \
+exec wish "$0" ${1+"$@"}
+
+namespace eval Demo {
+    variable _wfont
+
+    variable notebook
+    variable mainframe
+    variable status
+    variable prgtext
+    variable prgindic
+    variable font
+    variable font_name
+    variable toolbar1  1
+    variable toolbar2  1
+
+    set pwd [pwd]
+    cd [file dirname [info script]]
+    variable DEMODIR [pwd]
+    cd $pwd
+
+    foreach script {
+	manager.tcl basic.tcl select.tcl dnd.tcl tree.tcl tmpldlg.tcl
+    } {
+	namespace inscope :: source $DEMODIR/$script
+    }
+}
+
+image create photo bwidget16 -data {
+    R0lGODlhEAAQAOMJABat6IGYffaBCUSku/KCDcCMPomXdgCy//+AANnZ2dnZ2dnZ2dnZ2dnZ2dnZ
+    2dnZ2SH5BAEKAA8ALAAAAAAQABAAAAQ58MlJq70U6a0x/9c2iRb5mNmHjmpXuiecIpRA0JWJDEfw
+    HIffoWU4AIBBYKuABAoxSGEQ6oxins8IADs=
+}
+
+image create photo faded16 -data {
+    R0lGODlhEAAQAKEDAAAAAICAgKCgoP///yH5BAEKAAMALAAAAAAQABAAAAIjnI+py+1vQEABsDoH
+    blUI+XyAAImk033Zsmng8hoVRNd2XQAAOw==
+}
+
+image create photo stop16 -data {
+    R0lGODlhEAAQAMIFAAAAAC8DA3gKCpYMDPAUFP///////////yH5BAEKAAcALAAAAAAQABAAAAMm
+    SLrc/jDKqYBgAsB8CY/ZMFjTGAzUEACoFI7d83nkUysZpe/8ngAAOw==
+}
+
+proc Demo::create { } {
+    global   tk_patchLevel
+    variable _wfont
+    variable notebook
+    variable mainframe
+    variable font
+    variable prgtext
+    variable prgindic
+
+    set prgtext "Please wait while loading font..."
+    set prgindic -1
+    _create_intro
+    update
+    SelectFont::loadfont
+
+    bind all <F12> { catch {console show} }
+
+    # Menu description
+    set descmenu {
+        "&File" all file 0 {
+            {command "E&xit" {} "Exit BWidget demo" {} -command exit}
+        }
+        "&Options" all options 0 {
+            {checkbutton "Toolbar &1" {all option} "Show/hide toolbar 1" {}
+                -variable Demo::toolbar1
+                -command  {$Demo::mainframe showtoolbar 0 $Demo::toolbar1}
+            }
+            {checkbutton "Toolbar &2" {all option} "Show/hide toolbar 2" {}
+                -variable Demo::toolbar2
+                -command  {$Demo::mainframe showtoolbar 1 $Demo::toolbar2}
+            }
+        }
+    }
+
+    set prgtext   "Creating MainFrame..."
+    set prgindic  0
+    set mainframe [MainFrame .mainframe \
+                       -menu         $descmenu \
+                       -textvariable Demo::status \
+                       -progressvar  Demo::prgindic]
+
+    # toolbar 1 creation
+    incr prgindic
+    set tb1  [$mainframe addtoolbar]
+    set bbox [ButtonBox $tb1.bbox1 -spacing 0 -padx 1 -pady 1]
+    $bbox add -image [Bitmap::get new] \
+        -highlightthickness 0 -takefocus 0 -relief link -borderwidth 1 -padx 1 -pady 1 \
+        -helptext "Create a new file"
+    $bbox add -image [Bitmap::get open] \
+        -highlightthickness 0 -takefocus 0 -relief link -borderwidth 1 -padx 1 -pady 1 \
+        -helptext "Open an existing file"
+    $bbox add -image [Bitmap::get save] \
+        -highlightthickness 0 -takefocus 0 -relief link -borderwidth 1 -padx 1 -pady 1 \
+        -helptext "Save file"
+    pack $bbox -side left -anchor w
+
+    set sep [Separator $tb1.sep -orient vertical]
+    pack $sep -side left -fill y -padx 4 -anchor w
+
+    incr prgindic
+    set bbox [ButtonBox $tb1.bbox2 -spacing 0 -padx 1 -pady 1]
+    $bbox add -image [Bitmap::get cut] \
+        -highlightthickness 0 -takefocus 0 -relief link -borderwidth 1 -padx 1 -pady 1 \
+        -helptext "Cut selection"
+    $bbox add -image [Bitmap::get copy] \
+        -highlightthickness 0 -takefocus 0 -relief link -borderwidth 1 -padx 1 -pady 1 \
+        -helptext "Copy selection"
+    $bbox add -image [Bitmap::get paste] \
+        -highlightthickness 0 -takefocus 0 -relief link -borderwidth 1 -padx 1 -pady 1 \
+        -helptext "Paste selection"
+    pack $bbox -side left -anchor w
+
+   # toolbar 2 creation
+    incr prgindic
+    set tb2    [$mainframe addtoolbar]
+    set _wfont [SelectFont $tb2.font -type toolbar \
+                    -command "Demo::update_font \[$tb2.font cget -font\]"]
+    set font   [$_wfont cget -font]
+    pack $_wfont -side left -anchor w
+
+    $mainframe addindicator -text "BWidget [package version BWidget]"
+    $mainframe addindicator -textvariable tk_patchLevel
+
+    # NoteBook creation
+    set frame    [$mainframe getframe]
+    set notebook [NoteBook $frame.nb]
+
+    set prgtext   "Creating Manager..."
+    incr prgindic
+    set f0  [DemoManager::create $notebook]
+    set prgtext   "Creating Basic..."
+    incr prgindic
+    set f1  [DemoBasic::create $notebook]
+    set prgtext   "Creating Select..."
+    incr prgindic
+    set f2 [DemoSelect::create $notebook]
+    set prgtext   "Creating Dialog..."
+    incr prgindic
+    set f3b [DemoDlg::create $notebook]
+    set prgtext   "Creating Drag and Drop..."
+    incr prgindic
+    set f4 [DemoDnd::create $notebook]
+    set prgtext   "Creating Tree..."
+    incr prgindic
+    set f5 [DemoTree::create $notebook]
+
+    foreach page [$notebook pages] {
+        $notebook itemconfigure $page \
+                -image        bwidget16 \
+                -rimage       faded16 \
+                -ractiveimage stop16  \
+                -rimagecmd    {::Demo::_close_tab}
+    }
+
+    set prgtext   "Done"
+    incr prgindic
+    $notebook compute_size
+    pack $notebook -fill both -expand yes -padx 4 -pady 4
+    $notebook raise [$notebook page 0]
+
+    pack $mainframe -fill both -expand yes
+    update idletasks
+    destroy .intro
+}
+
+proc Demo::_close_tab { tabSet tabName } {
+    after idle [list $tabSet delete $tabName]
+
+    set tabIndex [$tabSet index $tabName]
+    set tabList  [$tabSet pages]
+    set tabTot   [llength $tabList]
+
+    # Pick another tab to raise.
+    if {$tabTot == 1} {
+        # No other tabs.
+        exit
+    } elseif {$tabIndex < $tabTot - 1} {
+        # Raise the tab to the right.
+        set raiseTabName [lindex $tabList [expr {$tabIndex + 1}]]
+    } else {
+        # This tab is furthest to the right. Raise the tab to the left.
+        set raiseTabName [lindex $tabList [expr {$tabIndex - 1}]]
+    }
+
+    $tabSet raise $raiseTabName
+    $tabSet see   $raiseTabName
+    return
+}
+
+
+
+proc Demo::update_font { newfont } {
+    variable _wfont
+    variable notebook
+    variable font
+    variable font_name
+
+    . configure -cursor watch
+    if { $font != $newfont } {
+        $_wfont configure -font $newfont
+        $notebook configure -font $newfont
+        set font $newfont
+    }
+    . configure -cursor ""
+}
+
+
+proc Demo::_create_intro { } {
+    variable DEMODIR
+
+    set top [toplevel .intro -relief raised -borderwidth 2]
+
+    wm withdraw $top
+    wm overrideredirect $top 1
+
+    set ximg  [label $top.x -bitmap @$DEMODIR/x1.xbm \
+	    -foreground grey90 -background white]
+    set bwimg [label $ximg.bw -bitmap @$DEMODIR/bwidget.xbm \
+	    -foreground grey90 -background white]
+    set frame [frame $ximg.f -background white]
+    set lab1  [label $frame.lab1 -text "Loading demo" \
+	    -background white -font {times 8}]
+    set lab2  [label $frame.lab2 -textvariable Demo::prgtext \
+	    -background white -font {times 8} -width 35]
+    set prg   [ProgressBar $frame.prg -width 50 -height 10 -background white \
+	    -variable Demo::prgindic -maximum 10]
+    pack $lab1 $lab2 $prg
+    place $frame -x 0 -y 0 -anchor nw
+    place $bwimg -relx 1 -rely 1 -anchor se
+    pack $ximg
+    BWidget::place $top 0 0 center
+    wm deiconify $top
+}
+
+
+proc Demo::main {} {
+    variable DEMODIR
+
+    lappend ::auto_path [file dirname $DEMODIR]
+    package require BWidget
+
+    option add *TitleFrame.l.font {helvetica 11 bold italic}
+
+    if {$::tk_version < 8.5} {
+        set helpFont {helvetica 12}
+    } else {
+        set helpFont {TkDefaultFont 10}
+    }
+
+    DynamicHelp::configure      \
+            -background #FFFFC0 \
+            -foreground #141312 \
+            -padx       3       \
+            -font       $helpFont
+
+    wm withdraw .
+    wm title . "BWidget demo"
+
+    Demo::create
+    BWidget::place . 0 0 center
+    wm deiconify .
+    raise .
+    focus -force .
+}
+
+Demo::main
+wm geom . [wm geom .]
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/demo/dnd.tcl
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/demo/dnd.tcl	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/BWidget/demo/dnd.tcl	(revision 3762)
@@ -0,0 +1,42 @@
+
+namespace eval DemoDnd {
+}
+
+
+proc DemoDnd::create { nb } {
+
+    set frame [$nb insert end demoDnd -text "Drag and Drop"]
+
+    set titf1 [TitleFrame $frame.titf1 -text "Drag sources"]
+    set subf  [$titf1 getframe]
+
+    set ent1  [LabelEntry $subf.e1 -label "Entry" -labelwidth 14 -dragenabled 1 -dragevent 3]
+    set labf1 [LabelFrame $subf.f1 -text "Label (text)" -width 14]
+    set f     [$labf1 getframe]
+    set lab   [Label $f.l -text "Drag this text" -dragenabled 1 -dragevent 3]
+    pack $lab
+
+    set labf2 [LabelFrame $subf.f2 -text "Label (bitmap)" -width 14]
+    set f     [$labf2 getframe]
+    set lab   [Label $f.l -bitmap info -dragenabled 1 -dragevent 3]
+    pack $lab
+
+    pack $ent1 $labf1 $labf2 -side top -fill x -pady 4
+
+    set titf2 [TitleFrame $frame.titf2 -text "Drop targets"]
+    set subf  [$titf2 getframe]
+
+    set ent1  [LabelEntry $subf.e1 -label "Entry" -labelwidth 14 -dropenabled 1]
+    set labf1 [LabelFrame $subf.f1 -text "Label" -width 14]
+    set f     [$labf1 getframe]
+    set lab   [Label $f.l -dropenabled 1 -highlightthickness 1]
+    pack $lab -fill x
+
+    pack $ent1 $labf1 -side top -fill x -pady 4
+
+    pack $titf1 $titf2 -pady 4
+
+    return $frame
+}
+
+
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/Argentina/Jujuy
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/Argentina/Jujuy	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/Argentina/Jujuy	(revision 3762)
@@ -0,0 +1,67 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Argentina/Jujuy) {
+    {-9223372036854775808 -15672 0 LMT}
+    {-2372096328 -15408 0 CMT}
+    {-1567453392 -14400 0 -04}
+    {-1233432000 -10800 0 -04}
+    {-1222981200 -14400 0 -04}
+    {-1205956800 -10800 1 -04}
+    {-1194037200 -14400 0 -04}
+    {-1172865600 -10800 1 -04}
+    {-1162501200 -14400 0 -04}
+    {-1141329600 -10800 1 -04}
+    {-1130965200 -14400 0 -04}
+    {-1109793600 -10800 1 -04}
+    {-1099429200 -14400 0 -04}
+    {-1078257600 -10800 1 -04}
+    {-1067806800 -14400 0 -04}
+    {-1046635200 -10800 1 -04}
+    {-1036270800 -14400 0 -04}
+    {-1015099200 -10800 1 -04}
+    {-1004734800 -14400 0 -04}
+    {-983563200 -10800 1 -04}
+    {-973198800 -14400 0 -04}
+    {-952027200 -10800 1 -04}
+    {-941576400 -14400 0 -04}
+    {-931032000 -10800 1 -04}
+    {-900882000 -14400 0 -04}
+    {-890337600 -10800 1 -04}
+    {-833749200 -14400 0 -04}
+    {-827265600 -10800 1 -04}
+    {-752274000 -14400 0 -04}
+    {-733780800 -10800 1 -04}
+    {-197326800 -14400 0 -04}
+    {-190843200 -10800 1 -04}
+    {-184194000 -14400 0 -04}
+    {-164491200 -10800 1 -04}
+    {-152658000 -14400 0 -04}
+    {-132955200 -10800 1 -04}
+    {-121122000 -14400 0 -04}
+    {-101419200 -10800 1 -04}
+    {-86821200 -14400 0 -04}
+    {-71092800 -10800 1 -04}
+    {-54766800 -14400 0 -04}
+    {-39038400 -10800 1 -04}
+    {-23317200 -14400 0 -04}
+    {-7588800 -10800 0 -03}
+    {128142000 -7200 1 -03}
+    {136605600 -10800 0 -03}
+    {596948400 -7200 1 -03}
+    {605066400 -10800 0 -03}
+    {624423600 -7200 1 -03}
+    {636516000 -14400 0 -04}
+    {657086400 -10800 1 -03}
+    {669178800 -14400 0 -04}
+    {686721600 -7200 1 -02}
+    {694231200 -7200 0 -03}
+    {699415200 -10800 0 -03}
+    {719377200 -7200 1 -03}
+    {731469600 -10800 0 -03}
+    {938916000 -10800 0 -04}
+    {938919600 -10800 1 -04}
+    {952056000 -10800 0 -03}
+    {1198983600 -7200 1 -03}
+    {1205632800 -10800 0 -03}
+    {1224295200 -10800 0 -03}
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/Argentina/Rio_Gallegos
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/Argentina/Rio_Gallegos	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/Argentina/Rio_Gallegos	(revision 3762)
@@ -0,0 +1,68 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Argentina/Rio_Gallegos) {
+    {-9223372036854775808 -16612 0 LMT}
+    {-2372095388 -15408 0 CMT}
+    {-1567453392 -14400 0 -04}
+    {-1233432000 -10800 0 -04}
+    {-1222981200 -14400 0 -04}
+    {-1205956800 -10800 1 -04}
+    {-1194037200 -14400 0 -04}
+    {-1172865600 -10800 1 -04}
+    {-1162501200 -14400 0 -04}
+    {-1141329600 -10800 1 -04}
+    {-1130965200 -14400 0 -04}
+    {-1109793600 -10800 1 -04}
+    {-1099429200 -14400 0 -04}
+    {-1078257600 -10800 1 -04}
+    {-1067806800 -14400 0 -04}
+    {-1046635200 -10800 1 -04}
+    {-1036270800 -14400 0 -04}
+    {-1015099200 -10800 1 -04}
+    {-1004734800 -14400 0 -04}
+    {-983563200 -10800 1 -04}
+    {-973198800 -14400 0 -04}
+    {-952027200 -10800 1 -04}
+    {-941576400 -14400 0 -04}
+    {-931032000 -10800 1 -04}
+    {-900882000 -14400 0 -04}
+    {-890337600 -10800 1 -04}
+    {-833749200 -14400 0 -04}
+    {-827265600 -10800 1 -04}
+    {-752274000 -14400 0 -04}
+    {-733780800 -10800 1 -04}
+    {-197326800 -14400 0 -04}
+    {-190843200 -10800 1 -04}
+    {-184194000 -14400 0 -04}
+    {-164491200 -10800 1 -04}
+    {-152658000 -14400 0 -04}
+    {-132955200 -10800 1 -04}
+    {-121122000 -14400 0 -04}
+    {-101419200 -10800 1 -04}
+    {-86821200 -14400 0 -04}
+    {-71092800 -10800 1 -04}
+    {-54766800 -14400 0 -04}
+    {-39038400 -10800 1 -04}
+    {-23317200 -14400 0 -04}
+    {-7588800 -10800 0 -03}
+    {128142000 -7200 1 -03}
+    {136605600 -10800 0 -03}
+    {596948400 -7200 1 -03}
+    {605066400 -10800 0 -03}
+    {624423600 -7200 1 -03}
+    {636516000 -10800 0 -03}
+    {656478000 -7200 1 -03}
+    {667965600 -10800 0 -03}
+    {687927600 -7200 1 -03}
+    {699415200 -10800 0 -03}
+    {719377200 -7200 1 -03}
+    {731469600 -10800 0 -03}
+    {938916000 -10800 0 -04}
+    {938919600 -10800 1 -04}
+    {952056000 -10800 0 -03}
+    {1086058800 -14400 0 -04}
+    {1087704000 -10800 0 -03}
+    {1198983600 -7200 1 -03}
+    {1205632800 -10800 0 -03}
+    {1224295200 -10800 0 -03}
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/Argentina/ComodRivadavia
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/Argentina/ComodRivadavia	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/Argentina/ComodRivadavia	(revision 3762)
@@ -0,0 +1,5 @@
+# created by tools/tclZIC.tcl - do not edit
+if {![info exists TZData(America/Argentina/Catamarca)]} {
+    LoadTimeZoneFile America/Argentina/Catamarca
+}
+set TZData(:America/Argentina/ComodRivadavia) $TZData(:America/Argentina/Catamarca)
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/Argentina/Cordoba
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/Argentina/Cordoba	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/Argentina/Cordoba	(revision 3762)
@@ -0,0 +1,67 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Argentina/Cordoba) {
+    {-9223372036854775808 -15408 0 LMT}
+    {-2372096592 -15408 0 CMT}
+    {-1567453392 -14400 0 -04}
+    {-1233432000 -10800 0 -04}
+    {-1222981200 -14400 0 -04}
+    {-1205956800 -10800 1 -04}
+    {-1194037200 -14400 0 -04}
+    {-1172865600 -10800 1 -04}
+    {-1162501200 -14400 0 -04}
+    {-1141329600 -10800 1 -04}
+    {-1130965200 -14400 0 -04}
+    {-1109793600 -10800 1 -04}
+    {-1099429200 -14400 0 -04}
+    {-1078257600 -10800 1 -04}
+    {-1067806800 -14400 0 -04}
+    {-1046635200 -10800 1 -04}
+    {-1036270800 -14400 0 -04}
+    {-1015099200 -10800 1 -04}
+    {-1004734800 -14400 0 -04}
+    {-983563200 -10800 1 -04}
+    {-973198800 -14400 0 -04}
+    {-952027200 -10800 1 -04}
+    {-941576400 -14400 0 -04}
+    {-931032000 -10800 1 -04}
+    {-900882000 -14400 0 -04}
+    {-890337600 -10800 1 -04}
+    {-833749200 -14400 0 -04}
+    {-827265600 -10800 1 -04}
+    {-752274000 -14400 0 -04}
+    {-733780800 -10800 1 -04}
+    {-197326800 -14400 0 -04}
+    {-190843200 -10800 1 -04}
+    {-184194000 -14400 0 -04}
+    {-164491200 -10800 1 -04}
+    {-152658000 -14400 0 -04}
+    {-132955200 -10800 1 -04}
+    {-121122000 -14400 0 -04}
+    {-101419200 -10800 1 -04}
+    {-86821200 -14400 0 -04}
+    {-71092800 -10800 1 -04}
+    {-54766800 -14400 0 -04}
+    {-39038400 -10800 1 -04}
+    {-23317200 -14400 0 -04}
+    {-7588800 -10800 0 -03}
+    {128142000 -7200 1 -03}
+    {136605600 -10800 0 -03}
+    {596948400 -7200 1 -03}
+    {605066400 -10800 0 -03}
+    {624423600 -7200 1 -03}
+    {636516000 -10800 0 -03}
+    {656478000 -7200 1 -03}
+    {667965600 -14400 0 -04}
+    {687931200 -7200 0 -03}
+    {699415200 -10800 0 -03}
+    {719377200 -7200 1 -03}
+    {731469600 -10800 0 -03}
+    {938916000 -10800 0 -04}
+    {938919600 -10800 1 -04}
+    {952056000 -10800 0 -03}
+    {1198983600 -7200 1 -03}
+    {1205632800 -10800 0 -03}
+    {1224385200 -7200 1 -03}
+    {1237082400 -10800 0 -03}
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/Argentina/Catamarca
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/Argentina/Catamarca	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/Argentina/Catamarca	(revision 3762)
@@ -0,0 +1,68 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Argentina/Catamarca) {
+    {-9223372036854775808 -15788 0 LMT}
+    {-2372096212 -15408 0 CMT}
+    {-1567453392 -14400 0 -04}
+    {-1233432000 -10800 0 -04}
+    {-1222981200 -14400 0 -04}
+    {-1205956800 -10800 1 -04}
+    {-1194037200 -14400 0 -04}
+    {-1172865600 -10800 1 -04}
+    {-1162501200 -14400 0 -04}
+    {-1141329600 -10800 1 -04}
+    {-1130965200 -14400 0 -04}
+    {-1109793600 -10800 1 -04}
+    {-1099429200 -14400 0 -04}
+    {-1078257600 -10800 1 -04}
+    {-1067806800 -14400 0 -04}
+    {-1046635200 -10800 1 -04}
+    {-1036270800 -14400 0 -04}
+    {-1015099200 -10800 1 -04}
+    {-1004734800 -14400 0 -04}
+    {-983563200 -10800 1 -04}
+    {-973198800 -14400 0 -04}
+    {-952027200 -10800 1 -04}
+    {-941576400 -14400 0 -04}
+    {-931032000 -10800 1 -04}
+    {-900882000 -14400 0 -04}
+    {-890337600 -10800 1 -04}
+    {-833749200 -14400 0 -04}
+    {-827265600 -10800 1 -04}
+    {-752274000 -14400 0 -04}
+    {-733780800 -10800 1 -04}
+    {-197326800 -14400 0 -04}
+    {-190843200 -10800 1 -04}
+    {-184194000 -14400 0 -04}
+    {-164491200 -10800 1 -04}
+    {-152658000 -14400 0 -04}
+    {-132955200 -10800 1 -04}
+    {-121122000 -14400 0 -04}
+    {-101419200 -10800 1 -04}
+    {-86821200 -14400 0 -04}
+    {-71092800 -10800 1 -04}
+    {-54766800 -14400 0 -04}
+    {-39038400 -10800 1 -04}
+    {-23317200 -14400 0 -04}
+    {-7588800 -10800 0 -03}
+    {128142000 -7200 1 -03}
+    {136605600 -10800 0 -03}
+    {596948400 -7200 1 -03}
+    {605066400 -10800 0 -03}
+    {624423600 -7200 1 -03}
+    {636516000 -10800 0 -03}
+    {656478000 -7200 1 -03}
+    {667965600 -14400 0 -04}
+    {687931200 -7200 0 -03}
+    {699415200 -10800 0 -03}
+    {719377200 -7200 1 -03}
+    {731469600 -10800 0 -03}
+    {938916000 -10800 0 -04}
+    {938919600 -10800 1 -04}
+    {952056000 -10800 0 -03}
+    {1086058800 -14400 0 -04}
+    {1087704000 -10800 0 -03}
+    {1198983600 -7200 1 -03}
+    {1205632800 -10800 0 -03}
+    {1224295200 -10800 0 -03}
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/Argentina/Tucuman
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/Argentina/Tucuman	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/Argentina/Tucuman	(revision 3762)
@@ -0,0 +1,69 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Argentina/Tucuman) {
+    {-9223372036854775808 -15652 0 LMT}
+    {-2372096348 -15408 0 CMT}
+    {-1567453392 -14400 0 -04}
+    {-1233432000 -10800 0 -04}
+    {-1222981200 -14400 0 -04}
+    {-1205956800 -10800 1 -04}
+    {-1194037200 -14400 0 -04}
+    {-1172865600 -10800 1 -04}
+    {-1162501200 -14400 0 -04}
+    {-1141329600 -10800 1 -04}
+    {-1130965200 -14400 0 -04}
+    {-1109793600 -10800 1 -04}
+    {-1099429200 -14400 0 -04}
+    {-1078257600 -10800 1 -04}
+    {-1067806800 -14400 0 -04}
+    {-1046635200 -10800 1 -04}
+    {-1036270800 -14400 0 -04}
+    {-1015099200 -10800 1 -04}
+    {-1004734800 -14400 0 -04}
+    {-983563200 -10800 1 -04}
+    {-973198800 -14400 0 -04}
+    {-952027200 -10800 1 -04}
+    {-941576400 -14400 0 -04}
+    {-931032000 -10800 1 -04}
+    {-900882000 -14400 0 -04}
+    {-890337600 -10800 1 -04}
+    {-833749200 -14400 0 -04}
+    {-827265600 -10800 1 -04}
+    {-752274000 -14400 0 -04}
+    {-733780800 -10800 1 -04}
+    {-197326800 -14400 0 -04}
+    {-190843200 -10800 1 -04}
+    {-184194000 -14400 0 -04}
+    {-164491200 -10800 1 -04}
+    {-152658000 -14400 0 -04}
+    {-132955200 -10800 1 -04}
+    {-121122000 -14400 0 -04}
+    {-101419200 -10800 1 -04}
+    {-86821200 -14400 0 -04}
+    {-71092800 -10800 1 -04}
+    {-54766800 -14400 0 -04}
+    {-39038400 -10800 1 -04}
+    {-23317200 -14400 0 -04}
+    {-7588800 -10800 0 -03}
+    {128142000 -7200 1 -03}
+    {136605600 -10800 0 -03}
+    {596948400 -7200 1 -03}
+    {605066400 -10800 0 -03}
+    {624423600 -7200 1 -03}
+    {636516000 -10800 0 -03}
+    {656478000 -7200 1 -03}
+    {667965600 -14400 0 -04}
+    {687931200 -7200 0 -03}
+    {699415200 -10800 0 -03}
+    {719377200 -7200 1 -03}
+    {731469600 -10800 0 -03}
+    {938916000 -10800 0 -04}
+    {938919600 -10800 1 -04}
+    {952056000 -10800 0 -03}
+    {1086058800 -14400 0 -04}
+    {1087099200 -10800 0 -03}
+    {1198983600 -7200 1 -03}
+    {1205632800 -10800 0 -03}
+    {1224385200 -7200 1 -03}
+    {1237082400 -10800 0 -03}
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/Argentina/Mendoza
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/Argentina/Mendoza	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/Argentina/Mendoza	(revision 3762)
@@ -0,0 +1,68 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Argentina/Mendoza) {
+    {-9223372036854775808 -16516 0 LMT}
+    {-2372095484 -15408 0 CMT}
+    {-1567453392 -14400 0 -04}
+    {-1233432000 -10800 0 -04}
+    {-1222981200 -14400 0 -04}
+    {-1205956800 -10800 1 -04}
+    {-1194037200 -14400 0 -04}
+    {-1172865600 -10800 1 -04}
+    {-1162501200 -14400 0 -04}
+    {-1141329600 -10800 1 -04}
+    {-1130965200 -14400 0 -04}
+    {-1109793600 -10800 1 -04}
+    {-1099429200 -14400 0 -04}
+    {-1078257600 -10800 1 -04}
+    {-1067806800 -14400 0 -04}
+    {-1046635200 -10800 1 -04}
+    {-1036270800 -14400 0 -04}
+    {-1015099200 -10800 1 -04}
+    {-1004734800 -14400 0 -04}
+    {-983563200 -10800 1 -04}
+    {-973198800 -14400 0 -04}
+    {-952027200 -10800 1 -04}
+    {-941576400 -14400 0 -04}
+    {-931032000 -10800 1 -04}
+    {-900882000 -14400 0 -04}
+    {-890337600 -10800 1 -04}
+    {-833749200 -14400 0 -04}
+    {-827265600 -10800 1 -04}
+    {-752274000 -14400 0 -04}
+    {-733780800 -10800 1 -04}
+    {-197326800 -14400 0 -04}
+    {-190843200 -10800 1 -04}
+    {-184194000 -14400 0 -04}
+    {-164491200 -10800 1 -04}
+    {-152658000 -14400 0 -04}
+    {-132955200 -10800 1 -04}
+    {-121122000 -14400 0 -04}
+    {-101419200 -10800 1 -04}
+    {-86821200 -14400 0 -04}
+    {-71092800 -10800 1 -04}
+    {-54766800 -14400 0 -04}
+    {-39038400 -10800 1 -04}
+    {-23317200 -14400 0 -04}
+    {-7588800 -10800 0 -03}
+    {128142000 -7200 1 -03}
+    {136605600 -10800 0 -03}
+    {596948400 -7200 1 -03}
+    {605066400 -10800 0 -03}
+    {624423600 -7200 1 -03}
+    {636516000 -14400 0 -04}
+    {655963200 -10800 1 -03}
+    {667796400 -14400 0 -04}
+    {687499200 -10800 1 -03}
+    {699418800 -14400 0 -04}
+    {719380800 -7200 0 -03}
+    {731469600 -10800 0 -03}
+    {938916000 -10800 0 -04}
+    {938919600 -10800 1 -04}
+    {952056000 -10800 0 -03}
+    {1085281200 -14400 0 -04}
+    {1096171200 -10800 0 -03}
+    {1198983600 -7200 1 -03}
+    {1205632800 -10800 0 -03}
+    {1224295200 -10800 0 -03}
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/Argentina/San_Luis
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/Argentina/San_Luis	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/Argentina/San_Luis	(revision 3762)
@@ -0,0 +1,68 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Argentina/San_Luis) {
+    {-9223372036854775808 -15924 0 LMT}
+    {-2372096076 -15408 0 CMT}
+    {-1567453392 -14400 0 -04}
+    {-1233432000 -10800 0 -04}
+    {-1222981200 -14400 0 -04}
+    {-1205956800 -10800 1 -04}
+    {-1194037200 -14400 0 -04}
+    {-1172865600 -10800 1 -04}
+    {-1162501200 -14400 0 -04}
+    {-1141329600 -10800 1 -04}
+    {-1130965200 -14400 0 -04}
+    {-1109793600 -10800 1 -04}
+    {-1099429200 -14400 0 -04}
+    {-1078257600 -10800 1 -04}
+    {-1067806800 -14400 0 -04}
+    {-1046635200 -10800 1 -04}
+    {-1036270800 -14400 0 -04}
+    {-1015099200 -10800 1 -04}
+    {-1004734800 -14400 0 -04}
+    {-983563200 -10800 1 -04}
+    {-973198800 -14400 0 -04}
+    {-952027200 -10800 1 -04}
+    {-941576400 -14400 0 -04}
+    {-931032000 -10800 1 -04}
+    {-900882000 -14400 0 -04}
+    {-890337600 -10800 1 -04}
+    {-833749200 -14400 0 -04}
+    {-827265600 -10800 1 -04}
+    {-752274000 -14400 0 -04}
+    {-733780800 -10800 1 -04}
+    {-197326800 -14400 0 -04}
+    {-190843200 -10800 1 -04}
+    {-184194000 -14400 0 -04}
+    {-164491200 -10800 1 -04}
+    {-152658000 -14400 0 -04}
+    {-132955200 -10800 1 -04}
+    {-121122000 -14400 0 -04}
+    {-101419200 -10800 1 -04}
+    {-86821200 -14400 0 -04}
+    {-71092800 -10800 1 -04}
+    {-54766800 -14400 0 -04}
+    {-39038400 -10800 1 -04}
+    {-23317200 -14400 0 -04}
+    {-7588800 -10800 0 -03}
+    {128142000 -7200 1 -03}
+    {136605600 -10800 0 -03}
+    {596948400 -7200 1 -03}
+    {605066400 -10800 0 -03}
+    {624423600 -7200 1 -03}
+    {631159200 -7200 1 -02}
+    {637380000 -14400 0 -04}
+    {655963200 -10800 1 -03}
+    {667796400 -14400 0 -04}
+    {675748800 -10800 0 -03}
+    {938919600 -10800 1 -03}
+    {952052400 -10800 0 -03}
+    {1085972400 -14400 0 -04}
+    {1090728000 -10800 0 -03}
+    {1198983600 -7200 1 -03}
+    {1200880800 -10800 0 -04}
+    {1205031600 -14400 0 -04}
+    {1223784000 -10800 1 -04}
+    {1236481200 -14400 0 -04}
+    {1255233600 -10800 0 -03}
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/Argentina/Buenos_Aires
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/Argentina/Buenos_Aires	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/Argentina/Buenos_Aires	(revision 3762)
@@ -0,0 +1,67 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Argentina/Buenos_Aires) {
+    {-9223372036854775808 -14028 0 LMT}
+    {-2372097972 -15408 0 CMT}
+    {-1567453392 -14400 0 -04}
+    {-1233432000 -10800 0 -04}
+    {-1222981200 -14400 0 -04}
+    {-1205956800 -10800 1 -04}
+    {-1194037200 -14400 0 -04}
+    {-1172865600 -10800 1 -04}
+    {-1162501200 -14400 0 -04}
+    {-1141329600 -10800 1 -04}
+    {-1130965200 -14400 0 -04}
+    {-1109793600 -10800 1 -04}
+    {-1099429200 -14400 0 -04}
+    {-1078257600 -10800 1 -04}
+    {-1067806800 -14400 0 -04}
+    {-1046635200 -10800 1 -04}
+    {-1036270800 -14400 0 -04}
+    {-1015099200 -10800 1 -04}
+    {-1004734800 -14400 0 -04}
+    {-983563200 -10800 1 -04}
+    {-973198800 -14400 0 -04}
+    {-952027200 -10800 1 -04}
+    {-941576400 -14400 0 -04}
+    {-931032000 -10800 1 -04}
+    {-900882000 -14400 0 -04}
+    {-890337600 -10800 1 -04}
+    {-833749200 -14400 0 -04}
+    {-827265600 -10800 1 -04}
+    {-752274000 -14400 0 -04}
+    {-733780800 -10800 1 -04}
+    {-197326800 -14400 0 -04}
+    {-190843200 -10800 1 -04}
+    {-184194000 -14400 0 -04}
+    {-164491200 -10800 1 -04}
+    {-152658000 -14400 0 -04}
+    {-132955200 -10800 1 -04}
+    {-121122000 -14400 0 -04}
+    {-101419200 -10800 1 -04}
+    {-86821200 -14400 0 -04}
+    {-71092800 -10800 1 -04}
+    {-54766800 -14400 0 -04}
+    {-39038400 -10800 1 -04}
+    {-23317200 -14400 0 -04}
+    {-7588800 -10800 0 -03}
+    {128142000 -7200 1 -03}
+    {136605600 -10800 0 -03}
+    {596948400 -7200 1 -03}
+    {605066400 -10800 0 -03}
+    {624423600 -7200 1 -03}
+    {636516000 -10800 0 -03}
+    {656478000 -7200 1 -03}
+    {667965600 -10800 0 -03}
+    {687927600 -7200 1 -03}
+    {699415200 -10800 0 -03}
+    {719377200 -7200 1 -03}
+    {731469600 -10800 0 -03}
+    {938916000 -10800 0 -04}
+    {938919600 -10800 1 -04}
+    {952056000 -10800 0 -03}
+    {1198983600 -7200 1 -03}
+    {1205632800 -10800 0 -03}
+    {1224385200 -7200 1 -03}
+    {1237082400 -10800 0 -03}
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/Argentina/San_Juan
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/Argentina/San_Juan	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/Argentina/San_Juan	(revision 3762)
@@ -0,0 +1,69 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Argentina/San_Juan) {
+    {-9223372036854775808 -16444 0 LMT}
+    {-2372095556 -15408 0 CMT}
+    {-1567453392 -14400 0 -04}
+    {-1233432000 -10800 0 -04}
+    {-1222981200 -14400 0 -04}
+    {-1205956800 -10800 1 -04}
+    {-1194037200 -14400 0 -04}
+    {-1172865600 -10800 1 -04}
+    {-1162501200 -14400 0 -04}
+    {-1141329600 -10800 1 -04}
+    {-1130965200 -14400 0 -04}
+    {-1109793600 -10800 1 -04}
+    {-1099429200 -14400 0 -04}
+    {-1078257600 -10800 1 -04}
+    {-1067806800 -14400 0 -04}
+    {-1046635200 -10800 1 -04}
+    {-1036270800 -14400 0 -04}
+    {-1015099200 -10800 1 -04}
+    {-1004734800 -14400 0 -04}
+    {-983563200 -10800 1 -04}
+    {-973198800 -14400 0 -04}
+    {-952027200 -10800 1 -04}
+    {-941576400 -14400 0 -04}
+    {-931032000 -10800 1 -04}
+    {-900882000 -14400 0 -04}
+    {-890337600 -10800 1 -04}
+    {-833749200 -14400 0 -04}
+    {-827265600 -10800 1 -04}
+    {-752274000 -14400 0 -04}
+    {-733780800 -10800 1 -04}
+    {-197326800 -14400 0 -04}
+    {-190843200 -10800 1 -04}
+    {-184194000 -14400 0 -04}
+    {-164491200 -10800 1 -04}
+    {-152658000 -14400 0 -04}
+    {-132955200 -10800 1 -04}
+    {-121122000 -14400 0 -04}
+    {-101419200 -10800 1 -04}
+    {-86821200 -14400 0 -04}
+    {-71092800 -10800 1 -04}
+    {-54766800 -14400 0 -04}
+    {-39038400 -10800 1 -04}
+    {-23317200 -14400 0 -04}
+    {-7588800 -10800 0 -03}
+    {128142000 -7200 1 -03}
+    {136605600 -10800 0 -03}
+    {596948400 -7200 1 -03}
+    {605066400 -10800 0 -03}
+    {624423600 -7200 1 -03}
+    {636516000 -10800 0 -03}
+    {656478000 -7200 1 -03}
+    {667792800 -14400 0 -04}
+    {673588800 -10800 0 -03}
+    {687927600 -7200 1 -03}
+    {699415200 -10800 0 -03}
+    {719377200 -7200 1 -03}
+    {731469600 -10800 0 -03}
+    {938916000 -10800 0 -04}
+    {938919600 -10800 1 -04}
+    {952056000 -10800 0 -03}
+    {1085972400 -14400 0 -04}
+    {1090728000 -10800 0 -03}
+    {1198983600 -7200 1 -03}
+    {1205632800 -10800 0 -03}
+    {1224295200 -10800 0 -03}
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/Argentina/Ushuaia
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/Argentina/Ushuaia	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/Argentina/Ushuaia	(revision 3762)
@@ -0,0 +1,68 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Argentina/Ushuaia) {
+    {-9223372036854775808 -16392 0 LMT}
+    {-2372095608 -15408 0 CMT}
+    {-1567453392 -14400 0 -04}
+    {-1233432000 -10800 0 -04}
+    {-1222981200 -14400 0 -04}
+    {-1205956800 -10800 1 -04}
+    {-1194037200 -14400 0 -04}
+    {-1172865600 -10800 1 -04}
+    {-1162501200 -14400 0 -04}
+    {-1141329600 -10800 1 -04}
+    {-1130965200 -14400 0 -04}
+    {-1109793600 -10800 1 -04}
+    {-1099429200 -14400 0 -04}
+    {-1078257600 -10800 1 -04}
+    {-1067806800 -14400 0 -04}
+    {-1046635200 -10800 1 -04}
+    {-1036270800 -14400 0 -04}
+    {-1015099200 -10800 1 -04}
+    {-1004734800 -14400 0 -04}
+    {-983563200 -10800 1 -04}
+    {-973198800 -14400 0 -04}
+    {-952027200 -10800 1 -04}
+    {-941576400 -14400 0 -04}
+    {-931032000 -10800 1 -04}
+    {-900882000 -14400 0 -04}
+    {-890337600 -10800 1 -04}
+    {-833749200 -14400 0 -04}
+    {-827265600 -10800 1 -04}
+    {-752274000 -14400 0 -04}
+    {-733780800 -10800 1 -04}
+    {-197326800 -14400 0 -04}
+    {-190843200 -10800 1 -04}
+    {-184194000 -14400 0 -04}
+    {-164491200 -10800 1 -04}
+    {-152658000 -14400 0 -04}
+    {-132955200 -10800 1 -04}
+    {-121122000 -14400 0 -04}
+    {-101419200 -10800 1 -04}
+    {-86821200 -14400 0 -04}
+    {-71092800 -10800 1 -04}
+    {-54766800 -14400 0 -04}
+    {-39038400 -10800 1 -04}
+    {-23317200 -14400 0 -04}
+    {-7588800 -10800 0 -03}
+    {128142000 -7200 1 -03}
+    {136605600 -10800 0 -03}
+    {596948400 -7200 1 -03}
+    {605066400 -10800 0 -03}
+    {624423600 -7200 1 -03}
+    {636516000 -10800 0 -03}
+    {656478000 -7200 1 -03}
+    {667965600 -10800 0 -03}
+    {687927600 -7200 1 -03}
+    {699415200 -10800 0 -03}
+    {719377200 -7200 1 -03}
+    {731469600 -10800 0 -03}
+    {938916000 -10800 0 -04}
+    {938919600 -10800 1 -04}
+    {952056000 -10800 0 -03}
+    {1085886000 -14400 0 -04}
+    {1087704000 -10800 0 -03}
+    {1198983600 -7200 1 -03}
+    {1205632800 -10800 0 -03}
+    {1224295200 -10800 0 -03}
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/Argentina/La_Rioja
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/Argentina/La_Rioja	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/Argentina/La_Rioja	(revision 3762)
@@ -0,0 +1,69 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Argentina/La_Rioja) {
+    {-9223372036854775808 -16044 0 LMT}
+    {-2372095956 -15408 0 CMT}
+    {-1567453392 -14400 0 -04}
+    {-1233432000 -10800 0 -04}
+    {-1222981200 -14400 0 -04}
+    {-1205956800 -10800 1 -04}
+    {-1194037200 -14400 0 -04}
+    {-1172865600 -10800 1 -04}
+    {-1162501200 -14400 0 -04}
+    {-1141329600 -10800 1 -04}
+    {-1130965200 -14400 0 -04}
+    {-1109793600 -10800 1 -04}
+    {-1099429200 -14400 0 -04}
+    {-1078257600 -10800 1 -04}
+    {-1067806800 -14400 0 -04}
+    {-1046635200 -10800 1 -04}
+    {-1036270800 -14400 0 -04}
+    {-1015099200 -10800 1 -04}
+    {-1004734800 -14400 0 -04}
+    {-983563200 -10800 1 -04}
+    {-973198800 -14400 0 -04}
+    {-952027200 -10800 1 -04}
+    {-941576400 -14400 0 -04}
+    {-931032000 -10800 1 -04}
+    {-900882000 -14400 0 -04}
+    {-890337600 -10800 1 -04}
+    {-833749200 -14400 0 -04}
+    {-827265600 -10800 1 -04}
+    {-752274000 -14400 0 -04}
+    {-733780800 -10800 1 -04}
+    {-197326800 -14400 0 -04}
+    {-190843200 -10800 1 -04}
+    {-184194000 -14400 0 -04}
+    {-164491200 -10800 1 -04}
+    {-152658000 -14400 0 -04}
+    {-132955200 -10800 1 -04}
+    {-121122000 -14400 0 -04}
+    {-101419200 -10800 1 -04}
+    {-86821200 -14400 0 -04}
+    {-71092800 -10800 1 -04}
+    {-54766800 -14400 0 -04}
+    {-39038400 -10800 1 -04}
+    {-23317200 -14400 0 -04}
+    {-7588800 -10800 0 -03}
+    {128142000 -7200 1 -03}
+    {136605600 -10800 0 -03}
+    {596948400 -7200 1 -03}
+    {605066400 -10800 0 -03}
+    {624423600 -7200 1 -03}
+    {636516000 -10800 0 -03}
+    {656478000 -7200 1 -03}
+    {667792800 -14400 0 -04}
+    {673588800 -10800 0 -03}
+    {687927600 -7200 1 -03}
+    {699415200 -10800 0 -03}
+    {719377200 -7200 1 -03}
+    {731469600 -10800 0 -03}
+    {938916000 -10800 0 -04}
+    {938919600 -10800 1 -04}
+    {952056000 -10800 0 -03}
+    {1086058800 -14400 0 -04}
+    {1087704000 -10800 0 -03}
+    {1198983600 -7200 1 -03}
+    {1205632800 -10800 0 -03}
+    {1224295200 -10800 0 -03}
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/Argentina/Salta
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/Argentina/Salta	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/Argentina/Salta	(revision 3762)
@@ -0,0 +1,66 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Argentina/Salta) {
+    {-9223372036854775808 -15700 0 LMT}
+    {-2372096300 -15408 0 CMT}
+    {-1567453392 -14400 0 -04}
+    {-1233432000 -10800 0 -04}
+    {-1222981200 -14400 0 -04}
+    {-1205956800 -10800 1 -04}
+    {-1194037200 -14400 0 -04}
+    {-1172865600 -10800 1 -04}
+    {-1162501200 -14400 0 -04}
+    {-1141329600 -10800 1 -04}
+    {-1130965200 -14400 0 -04}
+    {-1109793600 -10800 1 -04}
+    {-1099429200 -14400 0 -04}
+    {-1078257600 -10800 1 -04}
+    {-1067806800 -14400 0 -04}
+    {-1046635200 -10800 1 -04}
+    {-1036270800 -14400 0 -04}
+    {-1015099200 -10800 1 -04}
+    {-1004734800 -14400 0 -04}
+    {-983563200 -10800 1 -04}
+    {-973198800 -14400 0 -04}
+    {-952027200 -10800 1 -04}
+    {-941576400 -14400 0 -04}
+    {-931032000 -10800 1 -04}
+    {-900882000 -14400 0 -04}
+    {-890337600 -10800 1 -04}
+    {-833749200 -14400 0 -04}
+    {-827265600 -10800 1 -04}
+    {-752274000 -14400 0 -04}
+    {-733780800 -10800 1 -04}
+    {-197326800 -14400 0 -04}
+    {-190843200 -10800 1 -04}
+    {-184194000 -14400 0 -04}
+    {-164491200 -10800 1 -04}
+    {-152658000 -14400 0 -04}
+    {-132955200 -10800 1 -04}
+    {-121122000 -14400 0 -04}
+    {-101419200 -10800 1 -04}
+    {-86821200 -14400 0 -04}
+    {-71092800 -10800 1 -04}
+    {-54766800 -14400 0 -04}
+    {-39038400 -10800 1 -04}
+    {-23317200 -14400 0 -04}
+    {-7588800 -10800 0 -03}
+    {128142000 -7200 1 -03}
+    {136605600 -10800 0 -03}
+    {596948400 -7200 1 -03}
+    {605066400 -10800 0 -03}
+    {624423600 -7200 1 -03}
+    {636516000 -10800 0 -03}
+    {656478000 -7200 1 -03}
+    {667965600 -14400 0 -04}
+    {687931200 -7200 0 -03}
+    {699415200 -10800 0 -03}
+    {719377200 -7200 1 -03}
+    {731469600 -10800 0 -03}
+    {938916000 -10800 0 -04}
+    {938919600 -10800 1 -04}
+    {952056000 -10800 0 -03}
+    {1198983600 -7200 1 -03}
+    {1205632800 -10800 0 -03}
+    {1224295200 -10800 0 -03}
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/North_Dakota/New_Salem
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/North_Dakota/New_Salem	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/North_Dakota/New_Salem	(revision 3762)
@@ -0,0 +1,279 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/North_Dakota/New_Salem) {
+    {-9223372036854775808 -24339 0 LMT}
+    {-2717643600 -25200 0 MST}
+    {-1633273200 -21600 1 MDT}
+    {-1615132800 -25200 0 MST}
+    {-1601823600 -21600 1 MDT}
+    {-1583683200 -25200 0 MST}
+    {-880210800 -21600 1 MWT}
+    {-769395600 -21600 1 MPT}
+    {-765388800 -25200 0 MST}
+    {-84380400 -21600 1 MDT}
+    {-68659200 -25200 0 MST}
+    {-52930800 -21600 1 MDT}
+    {-37209600 -25200 0 MST}
+    {-21481200 -21600 1 MDT}
+    {-5760000 -25200 0 MST}
+    {9968400 -21600 1 MDT}
+    {25689600 -25200 0 MST}
+    {41418000 -21600 1 MDT}
+    {57744000 -25200 0 MST}
+    {73472400 -21600 1 MDT}
+    {89193600 -25200 0 MST}
+    {104922000 -21600 1 MDT}
+    {120643200 -25200 0 MST}
+    {126694800 -21600 1 MDT}
+    {152092800 -25200 0 MST}
+    {162378000 -21600 1 MDT}
+    {183542400 -25200 0 MST}
+    {199270800 -21600 1 MDT}
+    {215596800 -25200 0 MST}
+    {230720400 -21600 1 MDT}
+    {247046400 -25200 0 MST}
+    {262774800 -21600 1 MDT}
+    {278496000 -25200 0 MST}
+    {294224400 -21600 1 MDT}
+    {309945600 -25200 0 MST}
+    {325674000 -21600 1 MDT}
+    {341395200 -25200 0 MST}
+    {357123600 -21600 1 MDT}
+    {372844800 -25200 0 MST}
+    {388573200 -21600 1 MDT}
+    {404899200 -25200 0 MST}
+    {420022800 -21600 1 MDT}
+    {436348800 -25200 0 MST}
+    {452077200 -21600 1 MDT}
+    {467798400 -25200 0 MST}
+    {483526800 -21600 1 MDT}
+    {499248000 -25200 0 MST}
+    {514976400 -21600 1 MDT}
+    {530697600 -25200 0 MST}
+    {544611600 -21600 1 MDT}
+    {562147200 -25200 0 MST}
+    {576061200 -21600 1 MDT}
+    {594201600 -25200 0 MST}
+    {607510800 -21600 1 MDT}
+    {625651200 -25200 0 MST}
+    {638960400 -21600 1 MDT}
+    {657100800 -25200 0 MST}
+    {671014800 -21600 1 MDT}
+    {688550400 -25200 0 MST}
+    {702464400 -21600 1 MDT}
+    {720000000 -25200 0 MST}
+    {733914000 -21600 1 MDT}
+    {752054400 -25200 0 MST}
+    {765363600 -21600 1 MDT}
+    {783504000 -25200 0 MST}
+    {796813200 -21600 1 MDT}
+    {814953600 -25200 0 MST}
+    {828867600 -21600 1 MDT}
+    {846403200 -25200 0 MST}
+    {860317200 -21600 1 MDT}
+    {877852800 -25200 0 MST}
+    {891766800 -21600 1 MDT}
+    {909302400 -25200 0 MST}
+    {923216400 -21600 1 MDT}
+    {941356800 -25200 0 MST}
+    {954666000 -21600 1 MDT}
+    {972806400 -25200 0 MST}
+    {986115600 -21600 1 MDT}
+    {1004256000 -25200 0 MST}
+    {1018170000 -21600 1 MDT}
+    {1035705600 -25200 0 MST}
+    {1049619600 -21600 1 MDT}
+    {1067158800 -21600 0 CST}
+    {1081065600 -18000 1 CDT}
+    {1099206000 -21600 0 CST}
+    {1112515200 -18000 1 CDT}
+    {1130655600 -21600 0 CST}
+    {1143964800 -18000 1 CDT}
+    {1162105200 -21600 0 CST}
+    {1173600000 -18000 1 CDT}
+    {1194159600 -21600 0 CST}
+    {1205049600 -18000 1 CDT}
+    {1225609200 -21600 0 CST}
+    {1236499200 -18000 1 CDT}
+    {1257058800 -21600 0 CST}
+    {1268553600 -18000 1 CDT}
+    {1289113200 -21600 0 CST}
+    {1300003200 -18000 1 CDT}
+    {1320562800 -21600 0 CST}
+    {1331452800 -18000 1 CDT}
+    {1352012400 -21600 0 CST}
+    {1362902400 -18000 1 CDT}
+    {1383462000 -21600 0 CST}
+    {1394352000 -18000 1 CDT}
+    {1414911600 -21600 0 CST}
+    {1425801600 -18000 1 CDT}
+    {1446361200 -21600 0 CST}
+    {1457856000 -18000 1 CDT}
+    {1478415600 -21600 0 CST}
+    {1489305600 -18000 1 CDT}
+    {1509865200 -21600 0 CST}
+    {1520755200 -18000 1 CDT}
+    {1541314800 -21600 0 CST}
+    {1552204800 -18000 1 CDT}
+    {1572764400 -21600 0 CST}
+    {1583654400 -18000 1 CDT}
+    {1604214000 -21600 0 CST}
+    {1615708800 -18000 1 CDT}
+    {1636268400 -21600 0 CST}
+    {1647158400 -18000 1 CDT}
+    {1667718000 -21600 0 CST}
+    {1678608000 -18000 1 CDT}
+    {1699167600 -21600 0 CST}
+    {1710057600 -18000 1 CDT}
+    {1730617200 -21600 0 CST}
+    {1741507200 -18000 1 CDT}
+    {1762066800 -21600 0 CST}
+    {1772956800 -18000 1 CDT}
+    {1793516400 -21600 0 CST}
+    {1805011200 -18000 1 CDT}
+    {1825570800 -21600 0 CST}
+    {1836460800 -18000 1 CDT}
+    {1857020400 -21600 0 CST}
+    {1867910400 -18000 1 CDT}
+    {1888470000 -21600 0 CST}
+    {1899360000 -18000 1 CDT}
+    {1919919600 -21600 0 CST}
+    {1930809600 -18000 1 CDT}
+    {1951369200 -21600 0 CST}
+    {1962864000 -18000 1 CDT}
+    {1983423600 -21600 0 CST}
+    {1994313600 -18000 1 CDT}
+    {2014873200 -21600 0 CST}
+    {2025763200 -18000 1 CDT}
+    {2046322800 -21600 0 CST}
+    {2057212800 -18000 1 CDT}
+    {2077772400 -21600 0 CST}
+    {2088662400 -18000 1 CDT}
+    {2109222000 -21600 0 CST}
+    {2120112000 -18000 1 CDT}
+    {2140671600 -21600 0 CST}
+    {2152166400 -18000 1 CDT}
+    {2172726000 -21600 0 CST}
+    {2183616000 -18000 1 CDT}
+    {2204175600 -21600 0 CST}
+    {2215065600 -18000 1 CDT}
+    {2235625200 -21600 0 CST}
+    {2246515200 -18000 1 CDT}
+    {2267074800 -21600 0 CST}
+    {2277964800 -18000 1 CDT}
+    {2298524400 -21600 0 CST}
+    {2309414400 -18000 1 CDT}
+    {2329974000 -21600 0 CST}
+    {2341468800 -18000 1 CDT}
+    {2362028400 -21600 0 CST}
+    {2372918400 -18000 1 CDT}
+    {2393478000 -21600 0 CST}
+    {2404368000 -18000 1 CDT}
+    {2424927600 -21600 0 CST}
+    {2435817600 -18000 1 CDT}
+    {2456377200 -21600 0 CST}
+    {2467267200 -18000 1 CDT}
+    {2487826800 -21600 0 CST}
+    {2499321600 -18000 1 CDT}
+    {2519881200 -21600 0 CST}
+    {2530771200 -18000 1 CDT}
+    {2551330800 -21600 0 CST}
+    {2562220800 -18000 1 CDT}
+    {2582780400 -21600 0 CST}
+    {2593670400 -18000 1 CDT}
+    {2614230000 -21600 0 CST}
+    {2625120000 -18000 1 CDT}
+    {2645679600 -21600 0 CST}
+    {2656569600 -18000 1 CDT}
+    {2677129200 -21600 0 CST}
+    {2688624000 -18000 1 CDT}
+    {2709183600 -21600 0 CST}
+    {2720073600 -18000 1 CDT}
+    {2740633200 -21600 0 CST}
+    {2751523200 -18000 1 CDT}
+    {2772082800 -21600 0 CST}
+    {2782972800 -18000 1 CDT}
+    {2803532400 -21600 0 CST}
+    {2814422400 -18000 1 CDT}
+    {2834982000 -21600 0 CST}
+    {2846476800 -18000 1 CDT}
+    {2867036400 -21600 0 CST}
+    {2877926400 -18000 1 CDT}
+    {2898486000 -21600 0 CST}
+    {2909376000 -18000 1 CDT}
+    {2929935600 -21600 0 CST}
+    {2940825600 -18000 1 CDT}
+    {2961385200 -21600 0 CST}
+    {2972275200 -18000 1 CDT}
+    {2992834800 -21600 0 CST}
+    {3003724800 -18000 1 CDT}
+    {3024284400 -21600 0 CST}
+    {3035779200 -18000 1 CDT}
+    {3056338800 -21600 0 CST}
+    {3067228800 -18000 1 CDT}
+    {3087788400 -21600 0 CST}
+    {3098678400 -18000 1 CDT}
+    {3119238000 -21600 0 CST}
+    {3130128000 -18000 1 CDT}
+    {3150687600 -21600 0 CST}
+    {3161577600 -18000 1 CDT}
+    {3182137200 -21600 0 CST}
+    {3193027200 -18000 1 CDT}
+    {3213586800 -21600 0 CST}
+    {3225081600 -18000 1 CDT}
+    {3245641200 -21600 0 CST}
+    {3256531200 -18000 1 CDT}
+    {3277090800 -21600 0 CST}
+    {3287980800 -18000 1 CDT}
+    {3308540400 -21600 0 CST}
+    {3319430400 -18000 1 CDT}
+    {3339990000 -21600 0 CST}
+    {3350880000 -18000 1 CDT}
+    {3371439600 -21600 0 CST}
+    {3382934400 -18000 1 CDT}
+    {3403494000 -21600 0 CST}
+    {3414384000 -18000 1 CDT}
+    {3434943600 -21600 0 CST}
+    {3445833600 -18000 1 CDT}
+    {3466393200 -21600 0 CST}
+    {3477283200 -18000 1 CDT}
+    {3497842800 -21600 0 CST}
+    {3508732800 -18000 1 CDT}
+    {3529292400 -21600 0 CST}
+    {3540182400 -18000 1 CDT}
+    {3560742000 -21600 0 CST}
+    {3572236800 -18000 1 CDT}
+    {3592796400 -21600 0 CST}
+    {3603686400 -18000 1 CDT}
+    {3624246000 -21600 0 CST}
+    {3635136000 -18000 1 CDT}
+    {3655695600 -21600 0 CST}
+    {3666585600 -18000 1 CDT}
+    {3687145200 -21600 0 CST}
+    {3698035200 -18000 1 CDT}
+    {3718594800 -21600 0 CST}
+    {3730089600 -18000 1 CDT}
+    {3750649200 -21600 0 CST}
+    {3761539200 -18000 1 CDT}
+    {3782098800 -21600 0 CST}
+    {3792988800 -18000 1 CDT}
+    {3813548400 -21600 0 CST}
+    {3824438400 -18000 1 CDT}
+    {3844998000 -21600 0 CST}
+    {3855888000 -18000 1 CDT}
+    {3876447600 -21600 0 CST}
+    {3887337600 -18000 1 CDT}
+    {3907897200 -21600 0 CST}
+    {3919392000 -18000 1 CDT}
+    {3939951600 -21600 0 CST}
+    {3950841600 -18000 1 CDT}
+    {3971401200 -21600 0 CST}
+    {3982291200 -18000 1 CDT}
+    {4002850800 -21600 0 CST}
+    {4013740800 -18000 1 CDT}
+    {4034300400 -21600 0 CST}
+    {4045190400 -18000 1 CDT}
+    {4065750000 -21600 0 CST}
+    {4076640000 -18000 1 CDT}
+    {4097199600 -21600 0 CST}
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/North_Dakota/Beulah
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/North_Dakota/Beulah	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/North_Dakota/Beulah	(revision 3762)
@@ -0,0 +1,279 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/North_Dakota/Beulah) {
+    {-9223372036854775808 -24427 0 LMT}
+    {-2717643600 -25200 0 MST}
+    {-1633273200 -21600 1 MDT}
+    {-1615132800 -25200 0 MST}
+    {-1601823600 -21600 1 MDT}
+    {-1583683200 -25200 0 MST}
+    {-880210800 -21600 1 MWT}
+    {-769395600 -21600 1 MPT}
+    {-765388800 -25200 0 MST}
+    {-84380400 -21600 1 MDT}
+    {-68659200 -25200 0 MST}
+    {-52930800 -21600 1 MDT}
+    {-37209600 -25200 0 MST}
+    {-21481200 -21600 1 MDT}
+    {-5760000 -25200 0 MST}
+    {9968400 -21600 1 MDT}
+    {25689600 -25200 0 MST}
+    {41418000 -21600 1 MDT}
+    {57744000 -25200 0 MST}
+    {73472400 -21600 1 MDT}
+    {89193600 -25200 0 MST}
+    {104922000 -21600 1 MDT}
+    {120643200 -25200 0 MST}
+    {126694800 -21600 1 MDT}
+    {152092800 -25200 0 MST}
+    {162378000 -21600 1 MDT}
+    {183542400 -25200 0 MST}
+    {199270800 -21600 1 MDT}
+    {215596800 -25200 0 MST}
+    {230720400 -21600 1 MDT}
+    {247046400 -25200 0 MST}
+    {262774800 -21600 1 MDT}
+    {278496000 -25200 0 MST}
+    {294224400 -21600 1 MDT}
+    {309945600 -25200 0 MST}
+    {325674000 -21600 1 MDT}
+    {341395200 -25200 0 MST}
+    {357123600 -21600 1 MDT}
+    {372844800 -25200 0 MST}
+    {388573200 -21600 1 MDT}
+    {404899200 -25200 0 MST}
+    {420022800 -21600 1 MDT}
+    {436348800 -25200 0 MST}
+    {452077200 -21600 1 MDT}
+    {467798400 -25200 0 MST}
+    {483526800 -21600 1 MDT}
+    {499248000 -25200 0 MST}
+    {514976400 -21600 1 MDT}
+    {530697600 -25200 0 MST}
+    {544611600 -21600 1 MDT}
+    {562147200 -25200 0 MST}
+    {576061200 -21600 1 MDT}
+    {594201600 -25200 0 MST}
+    {607510800 -21600 1 MDT}
+    {625651200 -25200 0 MST}
+    {638960400 -21600 1 MDT}
+    {657100800 -25200 0 MST}
+    {671014800 -21600 1 MDT}
+    {688550400 -25200 0 MST}
+    {702464400 -21600 1 MDT}
+    {720000000 -25200 0 MST}
+    {733914000 -21600 1 MDT}
+    {752054400 -25200 0 MST}
+    {765363600 -21600 1 MDT}
+    {783504000 -25200 0 MST}
+    {796813200 -21600 1 MDT}
+    {814953600 -25200 0 MST}
+    {828867600 -21600 1 MDT}
+    {846403200 -25200 0 MST}
+    {860317200 -21600 1 MDT}
+    {877852800 -25200 0 MST}
+    {891766800 -21600 1 MDT}
+    {909302400 -25200 0 MST}
+    {923216400 -21600 1 MDT}
+    {941356800 -25200 0 MST}
+    {954666000 -21600 1 MDT}
+    {972806400 -25200 0 MST}
+    {986115600 -21600 1 MDT}
+    {1004256000 -25200 0 MST}
+    {1018170000 -21600 1 MDT}
+    {1035705600 -25200 0 MST}
+    {1049619600 -21600 1 MDT}
+    {1067155200 -25200 0 MST}
+    {1081069200 -21600 1 MDT}
+    {1099209600 -25200 0 MST}
+    {1112518800 -21600 1 MDT}
+    {1130659200 -25200 0 MST}
+    {1143968400 -21600 1 MDT}
+    {1162108800 -25200 0 MST}
+    {1173603600 -21600 1 MDT}
+    {1194163200 -25200 0 MST}
+    {1205053200 -21600 1 MDT}
+    {1225612800 -25200 0 MST}
+    {1236502800 -21600 1 MDT}
+    {1257062400 -25200 0 MST}
+    {1268557200 -21600 1 MDT}
+    {1289120400 -21600 0 CST}
+    {1300003200 -18000 1 CDT}
+    {1320562800 -21600 0 CST}
+    {1331452800 -18000 1 CDT}
+    {1352012400 -21600 0 CST}
+    {1362902400 -18000 1 CDT}
+    {1383462000 -21600 0 CST}
+    {1394352000 -18000 1 CDT}
+    {1414911600 -21600 0 CST}
+    {1425801600 -18000 1 CDT}
+    {1446361200 -21600 0 CST}
+    {1457856000 -18000 1 CDT}
+    {1478415600 -21600 0 CST}
+    {1489305600 -18000 1 CDT}
+    {1509865200 -21600 0 CST}
+    {1520755200 -18000 1 CDT}
+    {1541314800 -21600 0 CST}
+    {1552204800 -18000 1 CDT}
+    {1572764400 -21600 0 CST}
+    {1583654400 -18000 1 CDT}
+    {1604214000 -21600 0 CST}
+    {1615708800 -18000 1 CDT}
+    {1636268400 -21600 0 CST}
+    {1647158400 -18000 1 CDT}
+    {1667718000 -21600 0 CST}
+    {1678608000 -18000 1 CDT}
+    {1699167600 -21600 0 CST}
+    {1710057600 -18000 1 CDT}
+    {1730617200 -21600 0 CST}
+    {1741507200 -18000 1 CDT}
+    {1762066800 -21600 0 CST}
+    {1772956800 -18000 1 CDT}
+    {1793516400 -21600 0 CST}
+    {1805011200 -18000 1 CDT}
+    {1825570800 -21600 0 CST}
+    {1836460800 -18000 1 CDT}
+    {1857020400 -21600 0 CST}
+    {1867910400 -18000 1 CDT}
+    {1888470000 -21600 0 CST}
+    {1899360000 -18000 1 CDT}
+    {1919919600 -21600 0 CST}
+    {1930809600 -18000 1 CDT}
+    {1951369200 -21600 0 CST}
+    {1962864000 -18000 1 CDT}
+    {1983423600 -21600 0 CST}
+    {1994313600 -18000 1 CDT}
+    {2014873200 -21600 0 CST}
+    {2025763200 -18000 1 CDT}
+    {2046322800 -21600 0 CST}
+    {2057212800 -18000 1 CDT}
+    {2077772400 -21600 0 CST}
+    {2088662400 -18000 1 CDT}
+    {2109222000 -21600 0 CST}
+    {2120112000 -18000 1 CDT}
+    {2140671600 -21600 0 CST}
+    {2152166400 -18000 1 CDT}
+    {2172726000 -21600 0 CST}
+    {2183616000 -18000 1 CDT}
+    {2204175600 -21600 0 CST}
+    {2215065600 -18000 1 CDT}
+    {2235625200 -21600 0 CST}
+    {2246515200 -18000 1 CDT}
+    {2267074800 -21600 0 CST}
+    {2277964800 -18000 1 CDT}
+    {2298524400 -21600 0 CST}
+    {2309414400 -18000 1 CDT}
+    {2329974000 -21600 0 CST}
+    {2341468800 -18000 1 CDT}
+    {2362028400 -21600 0 CST}
+    {2372918400 -18000 1 CDT}
+    {2393478000 -21600 0 CST}
+    {2404368000 -18000 1 CDT}
+    {2424927600 -21600 0 CST}
+    {2435817600 -18000 1 CDT}
+    {2456377200 -21600 0 CST}
+    {2467267200 -18000 1 CDT}
+    {2487826800 -21600 0 CST}
+    {2499321600 -18000 1 CDT}
+    {2519881200 -21600 0 CST}
+    {2530771200 -18000 1 CDT}
+    {2551330800 -21600 0 CST}
+    {2562220800 -18000 1 CDT}
+    {2582780400 -21600 0 CST}
+    {2593670400 -18000 1 CDT}
+    {2614230000 -21600 0 CST}
+    {2625120000 -18000 1 CDT}
+    {2645679600 -21600 0 CST}
+    {2656569600 -18000 1 CDT}
+    {2677129200 -21600 0 CST}
+    {2688624000 -18000 1 CDT}
+    {2709183600 -21600 0 CST}
+    {2720073600 -18000 1 CDT}
+    {2740633200 -21600 0 CST}
+    {2751523200 -18000 1 CDT}
+    {2772082800 -21600 0 CST}
+    {2782972800 -18000 1 CDT}
+    {2803532400 -21600 0 CST}
+    {2814422400 -18000 1 CDT}
+    {2834982000 -21600 0 CST}
+    {2846476800 -18000 1 CDT}
+    {2867036400 -21600 0 CST}
+    {2877926400 -18000 1 CDT}
+    {2898486000 -21600 0 CST}
+    {2909376000 -18000 1 CDT}
+    {2929935600 -21600 0 CST}
+    {2940825600 -18000 1 CDT}
+    {2961385200 -21600 0 CST}
+    {2972275200 -18000 1 CDT}
+    {2992834800 -21600 0 CST}
+    {3003724800 -18000 1 CDT}
+    {3024284400 -21600 0 CST}
+    {3035779200 -18000 1 CDT}
+    {3056338800 -21600 0 CST}
+    {3067228800 -18000 1 CDT}
+    {3087788400 -21600 0 CST}
+    {3098678400 -18000 1 CDT}
+    {3119238000 -21600 0 CST}
+    {3130128000 -18000 1 CDT}
+    {3150687600 -21600 0 CST}
+    {3161577600 -18000 1 CDT}
+    {3182137200 -21600 0 CST}
+    {3193027200 -18000 1 CDT}
+    {3213586800 -21600 0 CST}
+    {3225081600 -18000 1 CDT}
+    {3245641200 -21600 0 CST}
+    {3256531200 -18000 1 CDT}
+    {3277090800 -21600 0 CST}
+    {3287980800 -18000 1 CDT}
+    {3308540400 -21600 0 CST}
+    {3319430400 -18000 1 CDT}
+    {3339990000 -21600 0 CST}
+    {3350880000 -18000 1 CDT}
+    {3371439600 -21600 0 CST}
+    {3382934400 -18000 1 CDT}
+    {3403494000 -21600 0 CST}
+    {3414384000 -18000 1 CDT}
+    {3434943600 -21600 0 CST}
+    {3445833600 -18000 1 CDT}
+    {3466393200 -21600 0 CST}
+    {3477283200 -18000 1 CDT}
+    {3497842800 -21600 0 CST}
+    {3508732800 -18000 1 CDT}
+    {3529292400 -21600 0 CST}
+    {3540182400 -18000 1 CDT}
+    {3560742000 -21600 0 CST}
+    {3572236800 -18000 1 CDT}
+    {3592796400 -21600 0 CST}
+    {3603686400 -18000 1 CDT}
+    {3624246000 -21600 0 CST}
+    {3635136000 -18000 1 CDT}
+    {3655695600 -21600 0 CST}
+    {3666585600 -18000 1 CDT}
+    {3687145200 -21600 0 CST}
+    {3698035200 -18000 1 CDT}
+    {3718594800 -21600 0 CST}
+    {3730089600 -18000 1 CDT}
+    {3750649200 -21600 0 CST}
+    {3761539200 -18000 1 CDT}
+    {3782098800 -21600 0 CST}
+    {3792988800 -18000 1 CDT}
+    {3813548400 -21600 0 CST}
+    {3824438400 -18000 1 CDT}
+    {3844998000 -21600 0 CST}
+    {3855888000 -18000 1 CDT}
+    {3876447600 -21600 0 CST}
+    {3887337600 -18000 1 CDT}
+    {3907897200 -21600 0 CST}
+    {3919392000 -18000 1 CDT}
+    {3939951600 -21600 0 CST}
+    {3950841600 -18000 1 CDT}
+    {3971401200 -21600 0 CST}
+    {3982291200 -18000 1 CDT}
+    {4002850800 -21600 0 CST}
+    {4013740800 -18000 1 CDT}
+    {4034300400 -21600 0 CST}
+    {4045190400 -18000 1 CDT}
+    {4065750000 -21600 0 CST}
+    {4076640000 -18000 1 CDT}
+    {4097199600 -21600 0 CST}
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/North_Dakota/Center
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/North_Dakota/Center	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/North_Dakota/Center	(revision 3762)
@@ -0,0 +1,279 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/North_Dakota/Center) {
+    {-9223372036854775808 -24312 0 LMT}
+    {-2717643600 -25200 0 MST}
+    {-1633273200 -21600 1 MDT}
+    {-1615132800 -25200 0 MST}
+    {-1601823600 -21600 1 MDT}
+    {-1583683200 -25200 0 MST}
+    {-880210800 -21600 1 MWT}
+    {-769395600 -21600 1 MPT}
+    {-765388800 -25200 0 MST}
+    {-84380400 -21600 1 MDT}
+    {-68659200 -25200 0 MST}
+    {-52930800 -21600 1 MDT}
+    {-37209600 -25200 0 MST}
+    {-21481200 -21600 1 MDT}
+    {-5760000 -25200 0 MST}
+    {9968400 -21600 1 MDT}
+    {25689600 -25200 0 MST}
+    {41418000 -21600 1 MDT}
+    {57744000 -25200 0 MST}
+    {73472400 -21600 1 MDT}
+    {89193600 -25200 0 MST}
+    {104922000 -21600 1 MDT}
+    {120643200 -25200 0 MST}
+    {126694800 -21600 1 MDT}
+    {152092800 -25200 0 MST}
+    {162378000 -21600 1 MDT}
+    {183542400 -25200 0 MST}
+    {199270800 -21600 1 MDT}
+    {215596800 -25200 0 MST}
+    {230720400 -21600 1 MDT}
+    {247046400 -25200 0 MST}
+    {262774800 -21600 1 MDT}
+    {278496000 -25200 0 MST}
+    {294224400 -21600 1 MDT}
+    {309945600 -25200 0 MST}
+    {325674000 -21600 1 MDT}
+    {341395200 -25200 0 MST}
+    {357123600 -21600 1 MDT}
+    {372844800 -25200 0 MST}
+    {388573200 -21600 1 MDT}
+    {404899200 -25200 0 MST}
+    {420022800 -21600 1 MDT}
+    {436348800 -25200 0 MST}
+    {452077200 -21600 1 MDT}
+    {467798400 -25200 0 MST}
+    {483526800 -21600 1 MDT}
+    {499248000 -25200 0 MST}
+    {514976400 -21600 1 MDT}
+    {530697600 -25200 0 MST}
+    {544611600 -21600 1 MDT}
+    {562147200 -25200 0 MST}
+    {576061200 -21600 1 MDT}
+    {594201600 -25200 0 MST}
+    {607510800 -21600 1 MDT}
+    {625651200 -25200 0 MST}
+    {638960400 -21600 1 MDT}
+    {657100800 -25200 0 MST}
+    {671014800 -21600 1 MDT}
+    {688550400 -25200 0 MST}
+    {702464400 -21600 1 MDT}
+    {720003600 -21600 0 CST}
+    {733910400 -18000 1 CDT}
+    {752050800 -21600 0 CST}
+    {765360000 -18000 1 CDT}
+    {783500400 -21600 0 CST}
+    {796809600 -18000 1 CDT}
+    {814950000 -21600 0 CST}
+    {828864000 -18000 1 CDT}
+    {846399600 -21600 0 CST}
+    {860313600 -18000 1 CDT}
+    {877849200 -21600 0 CST}
+    {891763200 -18000 1 CDT}
+    {909298800 -21600 0 CST}
+    {923212800 -18000 1 CDT}
+    {941353200 -21600 0 CST}
+    {954662400 -18000 1 CDT}
+    {972802800 -21600 0 CST}
+    {986112000 -18000 1 CDT}
+    {1004252400 -21600 0 CST}
+    {1018166400 -18000 1 CDT}
+    {1035702000 -21600 0 CST}
+    {1049616000 -18000 1 CDT}
+    {1067151600 -21600 0 CST}
+    {1081065600 -18000 1 CDT}
+    {1099206000 -21600 0 CST}
+    {1112515200 -18000 1 CDT}
+    {1130655600 -21600 0 CST}
+    {1143964800 -18000 1 CDT}
+    {1162105200 -21600 0 CST}
+    {1173600000 -18000 1 CDT}
+    {1194159600 -21600 0 CST}
+    {1205049600 -18000 1 CDT}
+    {1225609200 -21600 0 CST}
+    {1236499200 -18000 1 CDT}
+    {1257058800 -21600 0 CST}
+    {1268553600 -18000 1 CDT}
+    {1289113200 -21600 0 CST}
+    {1300003200 -18000 1 CDT}
+    {1320562800 -21600 0 CST}
+    {1331452800 -18000 1 CDT}
+    {1352012400 -21600 0 CST}
+    {1362902400 -18000 1 CDT}
+    {1383462000 -21600 0 CST}
+    {1394352000 -18000 1 CDT}
+    {1414911600 -21600 0 CST}
+    {1425801600 -18000 1 CDT}
+    {1446361200 -21600 0 CST}
+    {1457856000 -18000 1 CDT}
+    {1478415600 -21600 0 CST}
+    {1489305600 -18000 1 CDT}
+    {1509865200 -21600 0 CST}
+    {1520755200 -18000 1 CDT}
+    {1541314800 -21600 0 CST}
+    {1552204800 -18000 1 CDT}
+    {1572764400 -21600 0 CST}
+    {1583654400 -18000 1 CDT}
+    {1604214000 -21600 0 CST}
+    {1615708800 -18000 1 CDT}
+    {1636268400 -21600 0 CST}
+    {1647158400 -18000 1 CDT}
+    {1667718000 -21600 0 CST}
+    {1678608000 -18000 1 CDT}
+    {1699167600 -21600 0 CST}
+    {1710057600 -18000 1 CDT}
+    {1730617200 -21600 0 CST}
+    {1741507200 -18000 1 CDT}
+    {1762066800 -21600 0 CST}
+    {1772956800 -18000 1 CDT}
+    {1793516400 -21600 0 CST}
+    {1805011200 -18000 1 CDT}
+    {1825570800 -21600 0 CST}
+    {1836460800 -18000 1 CDT}
+    {1857020400 -21600 0 CST}
+    {1867910400 -18000 1 CDT}
+    {1888470000 -21600 0 CST}
+    {1899360000 -18000 1 CDT}
+    {1919919600 -21600 0 CST}
+    {1930809600 -18000 1 CDT}
+    {1951369200 -21600 0 CST}
+    {1962864000 -18000 1 CDT}
+    {1983423600 -21600 0 CST}
+    {1994313600 -18000 1 CDT}
+    {2014873200 -21600 0 CST}
+    {2025763200 -18000 1 CDT}
+    {2046322800 -21600 0 CST}
+    {2057212800 -18000 1 CDT}
+    {2077772400 -21600 0 CST}
+    {2088662400 -18000 1 CDT}
+    {2109222000 -21600 0 CST}
+    {2120112000 -18000 1 CDT}
+    {2140671600 -21600 0 CST}
+    {2152166400 -18000 1 CDT}
+    {2172726000 -21600 0 CST}
+    {2183616000 -18000 1 CDT}
+    {2204175600 -21600 0 CST}
+    {2215065600 -18000 1 CDT}
+    {2235625200 -21600 0 CST}
+    {2246515200 -18000 1 CDT}
+    {2267074800 -21600 0 CST}
+    {2277964800 -18000 1 CDT}
+    {2298524400 -21600 0 CST}
+    {2309414400 -18000 1 CDT}
+    {2329974000 -21600 0 CST}
+    {2341468800 -18000 1 CDT}
+    {2362028400 -21600 0 CST}
+    {2372918400 -18000 1 CDT}
+    {2393478000 -21600 0 CST}
+    {2404368000 -18000 1 CDT}
+    {2424927600 -21600 0 CST}
+    {2435817600 -18000 1 CDT}
+    {2456377200 -21600 0 CST}
+    {2467267200 -18000 1 CDT}
+    {2487826800 -21600 0 CST}
+    {2499321600 -18000 1 CDT}
+    {2519881200 -21600 0 CST}
+    {2530771200 -18000 1 CDT}
+    {2551330800 -21600 0 CST}
+    {2562220800 -18000 1 CDT}
+    {2582780400 -21600 0 CST}
+    {2593670400 -18000 1 CDT}
+    {2614230000 -21600 0 CST}
+    {2625120000 -18000 1 CDT}
+    {2645679600 -21600 0 CST}
+    {2656569600 -18000 1 CDT}
+    {2677129200 -21600 0 CST}
+    {2688624000 -18000 1 CDT}
+    {2709183600 -21600 0 CST}
+    {2720073600 -18000 1 CDT}
+    {2740633200 -21600 0 CST}
+    {2751523200 -18000 1 CDT}
+    {2772082800 -21600 0 CST}
+    {2782972800 -18000 1 CDT}
+    {2803532400 -21600 0 CST}
+    {2814422400 -18000 1 CDT}
+    {2834982000 -21600 0 CST}
+    {2846476800 -18000 1 CDT}
+    {2867036400 -21600 0 CST}
+    {2877926400 -18000 1 CDT}
+    {2898486000 -21600 0 CST}
+    {2909376000 -18000 1 CDT}
+    {2929935600 -21600 0 CST}
+    {2940825600 -18000 1 CDT}
+    {2961385200 -21600 0 CST}
+    {2972275200 -18000 1 CDT}
+    {2992834800 -21600 0 CST}
+    {3003724800 -18000 1 CDT}
+    {3024284400 -21600 0 CST}
+    {3035779200 -18000 1 CDT}
+    {3056338800 -21600 0 CST}
+    {3067228800 -18000 1 CDT}
+    {3087788400 -21600 0 CST}
+    {3098678400 -18000 1 CDT}
+    {3119238000 -21600 0 CST}
+    {3130128000 -18000 1 CDT}
+    {3150687600 -21600 0 CST}
+    {3161577600 -18000 1 CDT}
+    {3182137200 -21600 0 CST}
+    {3193027200 -18000 1 CDT}
+    {3213586800 -21600 0 CST}
+    {3225081600 -18000 1 CDT}
+    {3245641200 -21600 0 CST}
+    {3256531200 -18000 1 CDT}
+    {3277090800 -21600 0 CST}
+    {3287980800 -18000 1 CDT}
+    {3308540400 -21600 0 CST}
+    {3319430400 -18000 1 CDT}
+    {3339990000 -21600 0 CST}
+    {3350880000 -18000 1 CDT}
+    {3371439600 -21600 0 CST}
+    {3382934400 -18000 1 CDT}
+    {3403494000 -21600 0 CST}
+    {3414384000 -18000 1 CDT}
+    {3434943600 -21600 0 CST}
+    {3445833600 -18000 1 CDT}
+    {3466393200 -21600 0 CST}
+    {3477283200 -18000 1 CDT}
+    {3497842800 -21600 0 CST}
+    {3508732800 -18000 1 CDT}
+    {3529292400 -21600 0 CST}
+    {3540182400 -18000 1 CDT}
+    {3560742000 -21600 0 CST}
+    {3572236800 -18000 1 CDT}
+    {3592796400 -21600 0 CST}
+    {3603686400 -18000 1 CDT}
+    {3624246000 -21600 0 CST}
+    {3635136000 -18000 1 CDT}
+    {3655695600 -21600 0 CST}
+    {3666585600 -18000 1 CDT}
+    {3687145200 -21600 0 CST}
+    {3698035200 -18000 1 CDT}
+    {3718594800 -21600 0 CST}
+    {3730089600 -18000 1 CDT}
+    {3750649200 -21600 0 CST}
+    {3761539200 -18000 1 CDT}
+    {3782098800 -21600 0 CST}
+    {3792988800 -18000 1 CDT}
+    {3813548400 -21600 0 CST}
+    {3824438400 -18000 1 CDT}
+    {3844998000 -21600 0 CST}
+    {3855888000 -18000 1 CDT}
+    {3876447600 -21600 0 CST}
+    {3887337600 -18000 1 CDT}
+    {3907897200 -21600 0 CST}
+    {3919392000 -18000 1 CDT}
+    {3939951600 -21600 0 CST}
+    {3950841600 -18000 1 CDT}
+    {3971401200 -21600 0 CST}
+    {3982291200 -18000 1 CDT}
+    {4002850800 -21600 0 CST}
+    {4013740800 -18000 1 CDT}
+    {4034300400 -21600 0 CST}
+    {4045190400 -18000 1 CDT}
+    {4065750000 -21600 0 CST}
+    {4076640000 -18000 1 CDT}
+    {4097199600 -21600 0 CST}
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/Indiana/Petersburg
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/Indiana/Petersburg	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/Indiana/Petersburg	(revision 3762)
@@ -0,0 +1,247 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Indiana/Petersburg) {
+    {-9223372036854775808 -20947 0 LMT}
+    {-2717647200 -21600 0 CST}
+    {-1633276800 -18000 1 CDT}
+    {-1615136400 -21600 0 CST}
+    {-1601827200 -18000 1 CDT}
+    {-1583686800 -21600 0 CST}
+    {-880214400 -18000 1 CWT}
+    {-769395600 -18000 1 CPT}
+    {-765392400 -21600 0 CST}
+    {-473364000 -21600 0 CST}
+    {-462996000 -18000 1 CDT}
+    {-450291600 -21600 0 CST}
+    {-431539200 -18000 1 CDT}
+    {-418237200 -21600 0 CST}
+    {-400089600 -18000 1 CDT}
+    {-386787600 -21600 0 CST}
+    {-368640000 -18000 1 CDT}
+    {-355338000 -21600 0 CST}
+    {-337190400 -18000 1 CDT}
+    {-323888400 -21600 0 CST}
+    {-305740800 -18000 1 CDT}
+    {-292438800 -21600 0 CST}
+    {-273686400 -18000 1 CDT}
+    {-257965200 -21600 0 CST}
+    {-242236800 -18000 1 CDT}
+    {-226515600 -21600 0 CST}
+    {-210787200 -18000 1 CDT}
+    {-195066000 -21600 0 CST}
+    {-179337600 -18000 1 CDT}
+    {-163616400 -21600 0 CST}
+    {-147888000 -18000 0 EST}
+    {-100112400 -21600 0 CST}
+    {-84384000 -18000 1 CDT}
+    {-68662800 -21600 0 CST}
+    {-52934400 -18000 1 CDT}
+    {-37213200 -21600 0 CST}
+    {-21484800 -18000 1 CDT}
+    {-5763600 -21600 0 CST}
+    {9964800 -18000 1 CDT}
+    {25686000 -21600 0 CST}
+    {41414400 -18000 1 CDT}
+    {57740400 -21600 0 CST}
+    {73468800 -18000 1 CDT}
+    {89190000 -21600 0 CST}
+    {104918400 -18000 1 CDT}
+    {120639600 -21600 0 CST}
+    {126691200 -18000 1 CDT}
+    {152089200 -21600 0 CST}
+    {162374400 -18000 1 CDT}
+    {183538800 -21600 0 CST}
+    {199267200 -18000 1 CDT}
+    {215593200 -21600 0 CST}
+    {230716800 -18000 1 CDT}
+    {247046400 -18000 0 EST}
+    {1143961200 -21600 0 CST}
+    {1143964800 -18000 1 CDT}
+    {1162105200 -21600 0 CST}
+    {1173600000 -18000 1 CDT}
+    {1194163200 -18000 0 EST}
+    {1205046000 -14400 1 EDT}
+    {1225605600 -18000 0 EST}
+    {1236495600 -14400 1 EDT}
+    {1257055200 -18000 0 EST}
+    {1268550000 -14400 1 EDT}
+    {1289109600 -18000 0 EST}
+    {1299999600 -14400 1 EDT}
+    {1320559200 -18000 0 EST}
+    {1331449200 -14400 1 EDT}
+    {1352008800 -18000 0 EST}
+    {1362898800 -14400 1 EDT}
+    {1383458400 -18000 0 EST}
+    {1394348400 -14400 1 EDT}
+    {1414908000 -18000 0 EST}
+    {1425798000 -14400 1 EDT}
+    {1446357600 -18000 0 EST}
+    {1457852400 -14400 1 EDT}
+    {1478412000 -18000 0 EST}
+    {1489302000 -14400 1 EDT}
+    {1509861600 -18000 0 EST}
+    {1520751600 -14400 1 EDT}
+    {1541311200 -18000 0 EST}
+    {1552201200 -14400 1 EDT}
+    {1572760800 -18000 0 EST}
+    {1583650800 -14400 1 EDT}
+    {1604210400 -18000 0 EST}
+    {1615705200 -14400 1 EDT}
+    {1636264800 -18000 0 EST}
+    {1647154800 -14400 1 EDT}
+    {1667714400 -18000 0 EST}
+    {1678604400 -14400 1 EDT}
+    {1699164000 -18000 0 EST}
+    {1710054000 -14400 1 EDT}
+    {1730613600 -18000 0 EST}
+    {1741503600 -14400 1 EDT}
+    {1762063200 -18000 0 EST}
+    {1772953200 -14400 1 EDT}
+    {1793512800 -18000 0 EST}
+    {1805007600 -14400 1 EDT}
+    {1825567200 -18000 0 EST}
+    {1836457200 -14400 1 EDT}
+    {1857016800 -18000 0 EST}
+    {1867906800 -14400 1 EDT}
+    {1888466400 -18000 0 EST}
+    {1899356400 -14400 1 EDT}
+    {1919916000 -18000 0 EST}
+    {1930806000 -14400 1 EDT}
+    {1951365600 -18000 0 EST}
+    {1962860400 -14400 1 EDT}
+    {1983420000 -18000 0 EST}
+    {1994310000 -14400 1 EDT}
+    {2014869600 -18000 0 EST}
+    {2025759600 -14400 1 EDT}
+    {2046319200 -18000 0 EST}
+    {2057209200 -14400 1 EDT}
+    {2077768800 -18000 0 EST}
+    {2088658800 -14400 1 EDT}
+    {2109218400 -18000 0 EST}
+    {2120108400 -14400 1 EDT}
+    {2140668000 -18000 0 EST}
+    {2152162800 -14400 1 EDT}
+    {2172722400 -18000 0 EST}
+    {2183612400 -14400 1 EDT}
+    {2204172000 -18000 0 EST}
+    {2215062000 -14400 1 EDT}
+    {2235621600 -18000 0 EST}
+    {2246511600 -14400 1 EDT}
+    {2267071200 -18000 0 EST}
+    {2277961200 -14400 1 EDT}
+    {2298520800 -18000 0 EST}
+    {2309410800 -14400 1 EDT}
+    {2329970400 -18000 0 EST}
+    {2341465200 -14400 1 EDT}
+    {2362024800 -18000 0 EST}
+    {2372914800 -14400 1 EDT}
+    {2393474400 -18000 0 EST}
+    {2404364400 -14400 1 EDT}
+    {2424924000 -18000 0 EST}
+    {2435814000 -14400 1 EDT}
+    {2456373600 -18000 0 EST}
+    {2467263600 -14400 1 EDT}
+    {2487823200 -18000 0 EST}
+    {2499318000 -14400 1 EDT}
+    {2519877600 -18000 0 EST}
+    {2530767600 -14400 1 EDT}
+    {2551327200 -18000 0 EST}
+    {2562217200 -14400 1 EDT}
+    {2582776800 -18000 0 EST}
+    {2593666800 -14400 1 EDT}
+    {2614226400 -18000 0 EST}
+    {2625116400 -14400 1 EDT}
+    {2645676000 -18000 0 EST}
+    {2656566000 -14400 1 EDT}
+    {2677125600 -18000 0 EST}
+    {2688620400 -14400 1 EDT}
+    {2709180000 -18000 0 EST}
+    {2720070000 -14400 1 EDT}
+    {2740629600 -18000 0 EST}
+    {2751519600 -14400 1 EDT}
+    {2772079200 -18000 0 EST}
+    {2782969200 -14400 1 EDT}
+    {2803528800 -18000 0 EST}
+    {2814418800 -14400 1 EDT}
+    {2834978400 -18000 0 EST}
+    {2846473200 -14400 1 EDT}
+    {2867032800 -18000 0 EST}
+    {2877922800 -14400 1 EDT}
+    {2898482400 -18000 0 EST}
+    {2909372400 -14400 1 EDT}
+    {2929932000 -18000 0 EST}
+    {2940822000 -14400 1 EDT}
+    {2961381600 -18000 0 EST}
+    {2972271600 -14400 1 EDT}
+    {2992831200 -18000 0 EST}
+    {3003721200 -14400 1 EDT}
+    {3024280800 -18000 0 EST}
+    {3035775600 -14400 1 EDT}
+    {3056335200 -18000 0 EST}
+    {3067225200 -14400 1 EDT}
+    {3087784800 -18000 0 EST}
+    {3098674800 -14400 1 EDT}
+    {3119234400 -18000 0 EST}
+    {3130124400 -14400 1 EDT}
+    {3150684000 -18000 0 EST}
+    {3161574000 -14400 1 EDT}
+    {3182133600 -18000 0 EST}
+    {3193023600 -14400 1 EDT}
+    {3213583200 -18000 0 EST}
+    {3225078000 -14400 1 EDT}
+    {3245637600 -18000 0 EST}
+    {3256527600 -14400 1 EDT}
+    {3277087200 -18000 0 EST}
+    {3287977200 -14400 1 EDT}
+    {3308536800 -18000 0 EST}
+    {3319426800 -14400 1 EDT}
+    {3339986400 -18000 0 EST}
+    {3350876400 -14400 1 EDT}
+    {3371436000 -18000 0 EST}
+    {3382930800 -14400 1 EDT}
+    {3403490400 -18000 0 EST}
+    {3414380400 -14400 1 EDT}
+    {3434940000 -18000 0 EST}
+    {3445830000 -14400 1 EDT}
+    {3466389600 -18000 0 EST}
+    {3477279600 -14400 1 EDT}
+    {3497839200 -18000 0 EST}
+    {3508729200 -14400 1 EDT}
+    {3529288800 -18000 0 EST}
+    {3540178800 -14400 1 EDT}
+    {3560738400 -18000 0 EST}
+    {3572233200 -14400 1 EDT}
+    {3592792800 -18000 0 EST}
+    {3603682800 -14400 1 EDT}
+    {3624242400 -18000 0 EST}
+    {3635132400 -14400 1 EDT}
+    {3655692000 -18000 0 EST}
+    {3666582000 -14400 1 EDT}
+    {3687141600 -18000 0 EST}
+    {3698031600 -14400 1 EDT}
+    {3718591200 -18000 0 EST}
+    {3730086000 -14400 1 EDT}
+    {3750645600 -18000 0 EST}
+    {3761535600 -14400 1 EDT}
+    {3782095200 -18000 0 EST}
+    {3792985200 -14400 1 EDT}
+    {3813544800 -18000 0 EST}
+    {3824434800 -14400 1 EDT}
+    {3844994400 -18000 0 EST}
+    {3855884400 -14400 1 EDT}
+    {3876444000 -18000 0 EST}
+    {3887334000 -14400 1 EDT}
+    {3907893600 -18000 0 EST}
+    {3919388400 -14400 1 EDT}
+    {3939948000 -18000 0 EST}
+    {3950838000 -14400 1 EDT}
+    {3971397600 -18000 0 EST}
+    {3982287600 -14400 1 EDT}
+    {4002847200 -18000 0 EST}
+    {4013737200 -14400 1 EDT}
+    {4034296800 -18000 0 EST}
+    {4045186800 -14400 1 EDT}
+    {4065746400 -18000 0 EST}
+    {4076636400 -14400 1 EDT}
+    {4097196000 -18000 0 EST}
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/Indiana/Marengo
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/Indiana/Marengo	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/Indiana/Marengo	(revision 3762)
@@ -0,0 +1,236 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Indiana/Marengo) {
+    {-9223372036854775808 -20723 0 LMT}
+    {-2717647200 -21600 0 CST}
+    {-1633276800 -18000 1 CDT}
+    {-1615136400 -21600 0 CST}
+    {-1601827200 -18000 1 CDT}
+    {-1583686800 -21600 0 CST}
+    {-880214400 -18000 1 CWT}
+    {-769395600 -18000 1 CPT}
+    {-765392400 -21600 0 CST}
+    {-599594400 -21600 0 CST}
+    {-589392000 -18000 1 CDT}
+    {-576090000 -21600 0 CST}
+    {-495043200 -18000 1 CDT}
+    {-481741200 -21600 0 CST}
+    {-463593600 -18000 1 CDT}
+    {-450291600 -21600 0 CST}
+    {-431539200 -18000 1 CDT}
+    {-418237200 -21600 0 CST}
+    {-400089600 -18000 1 CDT}
+    {-386787600 -21600 0 CST}
+    {-368640000 -18000 1 CDT}
+    {-355338000 -21600 0 CST}
+    {-337190400 -18000 1 CDT}
+    {-323888400 -21600 0 CST}
+    {-305740800 -18000 1 CDT}
+    {-292438800 -21600 0 CST}
+    {-273686400 -18000 0 EST}
+    {-31518000 -18000 0 EST}
+    {-21488400 -14400 1 EDT}
+    {-5767200 -18000 0 EST}
+    {9961200 -14400 1 EDT}
+    {25682400 -18000 0 EST}
+    {41410800 -14400 1 EDT}
+    {57736800 -18000 0 EST}
+    {73465200 -14400 1 EDT}
+    {89186400 -18000 0 EST}
+    {104914800 -14400 1 EDT}
+    {120636000 -18000 0 EST}
+    {126687600 -18000 1 CDT}
+    {152089200 -18000 0 EST}
+    {162370800 -14400 1 EDT}
+    {183535200 -18000 0 EST}
+    {189320400 -18000 0 EST}
+    {1136091600 -18000 0 EST}
+    {1143961200 -14400 1 EDT}
+    {1162101600 -18000 0 EST}
+    {1173596400 -14400 1 EDT}
+    {1194156000 -18000 0 EST}
+    {1205046000 -14400 1 EDT}
+    {1225605600 -18000 0 EST}
+    {1236495600 -14400 1 EDT}
+    {1257055200 -18000 0 EST}
+    {1268550000 -14400 1 EDT}
+    {1289109600 -18000 0 EST}
+    {1299999600 -14400 1 EDT}
+    {1320559200 -18000 0 EST}
+    {1331449200 -14400 1 EDT}
+    {1352008800 -18000 0 EST}
+    {1362898800 -14400 1 EDT}
+    {1383458400 -18000 0 EST}
+    {1394348400 -14400 1 EDT}
+    {1414908000 -18000 0 EST}
+    {1425798000 -14400 1 EDT}
+    {1446357600 -18000 0 EST}
+    {1457852400 -14400 1 EDT}
+    {1478412000 -18000 0 EST}
+    {1489302000 -14400 1 EDT}
+    {1509861600 -18000 0 EST}
+    {1520751600 -14400 1 EDT}
+    {1541311200 -18000 0 EST}
+    {1552201200 -14400 1 EDT}
+    {1572760800 -18000 0 EST}
+    {1583650800 -14400 1 EDT}
+    {1604210400 -18000 0 EST}
+    {1615705200 -14400 1 EDT}
+    {1636264800 -18000 0 EST}
+    {1647154800 -14400 1 EDT}
+    {1667714400 -18000 0 EST}
+    {1678604400 -14400 1 EDT}
+    {1699164000 -18000 0 EST}
+    {1710054000 -14400 1 EDT}
+    {1730613600 -18000 0 EST}
+    {1741503600 -14400 1 EDT}
+    {1762063200 -18000 0 EST}
+    {1772953200 -14400 1 EDT}
+    {1793512800 -18000 0 EST}
+    {1805007600 -14400 1 EDT}
+    {1825567200 -18000 0 EST}
+    {1836457200 -14400 1 EDT}
+    {1857016800 -18000 0 EST}
+    {1867906800 -14400 1 EDT}
+    {1888466400 -18000 0 EST}
+    {1899356400 -14400 1 EDT}
+    {1919916000 -18000 0 EST}
+    {1930806000 -14400 1 EDT}
+    {1951365600 -18000 0 EST}
+    {1962860400 -14400 1 EDT}
+    {1983420000 -18000 0 EST}
+    {1994310000 -14400 1 EDT}
+    {2014869600 -18000 0 EST}
+    {2025759600 -14400 1 EDT}
+    {2046319200 -18000 0 EST}
+    {2057209200 -14400 1 EDT}
+    {2077768800 -18000 0 EST}
+    {2088658800 -14400 1 EDT}
+    {2109218400 -18000 0 EST}
+    {2120108400 -14400 1 EDT}
+    {2140668000 -18000 0 EST}
+    {2152162800 -14400 1 EDT}
+    {2172722400 -18000 0 EST}
+    {2183612400 -14400 1 EDT}
+    {2204172000 -18000 0 EST}
+    {2215062000 -14400 1 EDT}
+    {2235621600 -18000 0 EST}
+    {2246511600 -14400 1 EDT}
+    {2267071200 -18000 0 EST}
+    {2277961200 -14400 1 EDT}
+    {2298520800 -18000 0 EST}
+    {2309410800 -14400 1 EDT}
+    {2329970400 -18000 0 EST}
+    {2341465200 -14400 1 EDT}
+    {2362024800 -18000 0 EST}
+    {2372914800 -14400 1 EDT}
+    {2393474400 -18000 0 EST}
+    {2404364400 -14400 1 EDT}
+    {2424924000 -18000 0 EST}
+    {2435814000 -14400 1 EDT}
+    {2456373600 -18000 0 EST}
+    {2467263600 -14400 1 EDT}
+    {2487823200 -18000 0 EST}
+    {2499318000 -14400 1 EDT}
+    {2519877600 -18000 0 EST}
+    {2530767600 -14400 1 EDT}
+    {2551327200 -18000 0 EST}
+    {2562217200 -14400 1 EDT}
+    {2582776800 -18000 0 EST}
+    {2593666800 -14400 1 EDT}
+    {2614226400 -18000 0 EST}
+    {2625116400 -14400 1 EDT}
+    {2645676000 -18000 0 EST}
+    {2656566000 -14400 1 EDT}
+    {2677125600 -18000 0 EST}
+    {2688620400 -14400 1 EDT}
+    {2709180000 -18000 0 EST}
+    {2720070000 -14400 1 EDT}
+    {2740629600 -18000 0 EST}
+    {2751519600 -14400 1 EDT}
+    {2772079200 -18000 0 EST}
+    {2782969200 -14400 1 EDT}
+    {2803528800 -18000 0 EST}
+    {2814418800 -14400 1 EDT}
+    {2834978400 -18000 0 EST}
+    {2846473200 -14400 1 EDT}
+    {2867032800 -18000 0 EST}
+    {2877922800 -14400 1 EDT}
+    {2898482400 -18000 0 EST}
+    {2909372400 -14400 1 EDT}
+    {2929932000 -18000 0 EST}
+    {2940822000 -14400 1 EDT}
+    {2961381600 -18000 0 EST}
+    {2972271600 -14400 1 EDT}
+    {2992831200 -18000 0 EST}
+    {3003721200 -14400 1 EDT}
+    {3024280800 -18000 0 EST}
+    {3035775600 -14400 1 EDT}
+    {3056335200 -18000 0 EST}
+    {3067225200 -14400 1 EDT}
+    {3087784800 -18000 0 EST}
+    {3098674800 -14400 1 EDT}
+    {3119234400 -18000 0 EST}
+    {3130124400 -14400 1 EDT}
+    {3150684000 -18000 0 EST}
+    {3161574000 -14400 1 EDT}
+    {3182133600 -18000 0 EST}
+    {3193023600 -14400 1 EDT}
+    {3213583200 -18000 0 EST}
+    {3225078000 -14400 1 EDT}
+    {3245637600 -18000 0 EST}
+    {3256527600 -14400 1 EDT}
+    {3277087200 -18000 0 EST}
+    {3287977200 -14400 1 EDT}
+    {3308536800 -18000 0 EST}
+    {3319426800 -14400 1 EDT}
+    {3339986400 -18000 0 EST}
+    {3350876400 -14400 1 EDT}
+    {3371436000 -18000 0 EST}
+    {3382930800 -14400 1 EDT}
+    {3403490400 -18000 0 EST}
+    {3414380400 -14400 1 EDT}
+    {3434940000 -18000 0 EST}
+    {3445830000 -14400 1 EDT}
+    {3466389600 -18000 0 EST}
+    {3477279600 -14400 1 EDT}
+    {3497839200 -18000 0 EST}
+    {3508729200 -14400 1 EDT}
+    {3529288800 -18000 0 EST}
+    {3540178800 -14400 1 EDT}
+    {3560738400 -18000 0 EST}
+    {3572233200 -14400 1 EDT}
+    {3592792800 -18000 0 EST}
+    {3603682800 -14400 1 EDT}
+    {3624242400 -18000 0 EST}
+    {3635132400 -14400 1 EDT}
+    {3655692000 -18000 0 EST}
+    {3666582000 -14400 1 EDT}
+    {3687141600 -18000 0 EST}
+    {3698031600 -14400 1 EDT}
+    {3718591200 -18000 0 EST}
+    {3730086000 -14400 1 EDT}
+    {3750645600 -18000 0 EST}
+    {3761535600 -14400 1 EDT}
+    {3782095200 -18000 0 EST}
+    {3792985200 -14400 1 EDT}
+    {3813544800 -18000 0 EST}
+    {3824434800 -14400 1 EDT}
+    {3844994400 -18000 0 EST}
+    {3855884400 -14400 1 EDT}
+    {3876444000 -18000 0 EST}
+    {3887334000 -14400 1 EDT}
+    {3907893600 -18000 0 EST}
+    {3919388400 -14400 1 EDT}
+    {3939948000 -18000 0 EST}
+    {3950838000 -14400 1 EDT}
+    {3971397600 -18000 0 EST}
+    {3982287600 -14400 1 EDT}
+    {4002847200 -18000 0 EST}
+    {4013737200 -14400 1 EDT}
+    {4034296800 -18000 0 EST}
+    {4045186800 -14400 1 EDT}
+    {4065746400 -18000 0 EST}
+    {4076636400 -14400 1 EDT}
+    {4097196000 -18000 0 EST}
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/Indiana/Tell_City
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/Indiana/Tell_City	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/Indiana/Tell_City	(revision 3762)
@@ -0,0 +1,230 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Indiana/Tell_City) {
+    {-9223372036854775808 -20823 0 LMT}
+    {-2717647200 -21600 0 CST}
+    {-1633276800 -18000 1 CDT}
+    {-1615136400 -21600 0 CST}
+    {-1601827200 -18000 1 CDT}
+    {-1583686800 -21600 0 CST}
+    {-880214400 -18000 1 CWT}
+    {-769395600 -18000 1 CPT}
+    {-765392400 -21600 0 CST}
+    {-757360800 -21600 0 CST}
+    {-462996000 -18000 1 CDT}
+    {-450291600 -21600 0 CST}
+    {-431539200 -18000 1 CDT}
+    {-418237200 -21600 0 CST}
+    {-400089600 -18000 1 CDT}
+    {-386787600 -21600 0 CST}
+    {-368640000 -18000 1 CDT}
+    {-355338000 -21600 0 CST}
+    {-337190400 -18000 1 CDT}
+    {-323888400 -21600 0 CST}
+    {-305740800 -18000 1 CDT}
+    {-292438800 -21600 0 CST}
+    {-273686400 -18000 1 CDT}
+    {-257965200 -21600 0 CST}
+    {-242236800 -18000 1 CDT}
+    {-226515600 -21600 0 CST}
+    {-210787200 -18000 1 CDT}
+    {-195066000 -21600 0 CST}
+    {-179337600 -18000 0 EST}
+    {-68662800 -21600 0 CST}
+    {-52934400 -18000 1 CDT}
+    {-37213200 -21600 0 CST}
+    {-21484800 -14400 0 EDT}
+    {-5767200 -18000 0 EST}
+    {9961200 -14400 1 EDT}
+    {25682400 -18000 0 EST}
+    {31554000 -18000 0 EST}
+    {1143961200 -21600 0 CST}
+    {1143964800 -18000 1 CDT}
+    {1162105200 -21600 0 CST}
+    {1173600000 -18000 1 CDT}
+    {1194159600 -21600 0 CST}
+    {1205049600 -18000 1 CDT}
+    {1225609200 -21600 0 CST}
+    {1236499200 -18000 1 CDT}
+    {1257058800 -21600 0 CST}
+    {1268553600 -18000 1 CDT}
+    {1289113200 -21600 0 CST}
+    {1300003200 -18000 1 CDT}
+    {1320562800 -21600 0 CST}
+    {1331452800 -18000 1 CDT}
+    {1352012400 -21600 0 CST}
+    {1362902400 -18000 1 CDT}
+    {1383462000 -21600 0 CST}
+    {1394352000 -18000 1 CDT}
+    {1414911600 -21600 0 CST}
+    {1425801600 -18000 1 CDT}
+    {1446361200 -21600 0 CST}
+    {1457856000 -18000 1 CDT}
+    {1478415600 -21600 0 CST}
+    {1489305600 -18000 1 CDT}
+    {1509865200 -21600 0 CST}
+    {1520755200 -18000 1 CDT}
+    {1541314800 -21600 0 CST}
+    {1552204800 -18000 1 CDT}
+    {1572764400 -21600 0 CST}
+    {1583654400 -18000 1 CDT}
+    {1604214000 -21600 0 CST}
+    {1615708800 -18000 1 CDT}
+    {1636268400 -21600 0 CST}
+    {1647158400 -18000 1 CDT}
+    {1667718000 -21600 0 CST}
+    {1678608000 -18000 1 CDT}
+    {1699167600 -21600 0 CST}
+    {1710057600 -18000 1 CDT}
+    {1730617200 -21600 0 CST}
+    {1741507200 -18000 1 CDT}
+    {1762066800 -21600 0 CST}
+    {1772956800 -18000 1 CDT}
+    {1793516400 -21600 0 CST}
+    {1805011200 -18000 1 CDT}
+    {1825570800 -21600 0 CST}
+    {1836460800 -18000 1 CDT}
+    {1857020400 -21600 0 CST}
+    {1867910400 -18000 1 CDT}
+    {1888470000 -21600 0 CST}
+    {1899360000 -18000 1 CDT}
+    {1919919600 -21600 0 CST}
+    {1930809600 -18000 1 CDT}
+    {1951369200 -21600 0 CST}
+    {1962864000 -18000 1 CDT}
+    {1983423600 -21600 0 CST}
+    {1994313600 -18000 1 CDT}
+    {2014873200 -21600 0 CST}
+    {2025763200 -18000 1 CDT}
+    {2046322800 -21600 0 CST}
+    {2057212800 -18000 1 CDT}
+    {2077772400 -21600 0 CST}
+    {2088662400 -18000 1 CDT}
+    {2109222000 -21600 0 CST}
+    {2120112000 -18000 1 CDT}
+    {2140671600 -21600 0 CST}
+    {2152166400 -18000 1 CDT}
+    {2172726000 -21600 0 CST}
+    {2183616000 -18000 1 CDT}
+    {2204175600 -21600 0 CST}
+    {2215065600 -18000 1 CDT}
+    {2235625200 -21600 0 CST}
+    {2246515200 -18000 1 CDT}
+    {2267074800 -21600 0 CST}
+    {2277964800 -18000 1 CDT}
+    {2298524400 -21600 0 CST}
+    {2309414400 -18000 1 CDT}
+    {2329974000 -21600 0 CST}
+    {2341468800 -18000 1 CDT}
+    {2362028400 -21600 0 CST}
+    {2372918400 -18000 1 CDT}
+    {2393478000 -21600 0 CST}
+    {2404368000 -18000 1 CDT}
+    {2424927600 -21600 0 CST}
+    {2435817600 -18000 1 CDT}
+    {2456377200 -21600 0 CST}
+    {2467267200 -18000 1 CDT}
+    {2487826800 -21600 0 CST}
+    {2499321600 -18000 1 CDT}
+    {2519881200 -21600 0 CST}
+    {2530771200 -18000 1 CDT}
+    {2551330800 -21600 0 CST}
+    {2562220800 -18000 1 CDT}
+    {2582780400 -21600 0 CST}
+    {2593670400 -18000 1 CDT}
+    {2614230000 -21600 0 CST}
+    {2625120000 -18000 1 CDT}
+    {2645679600 -21600 0 CST}
+    {2656569600 -18000 1 CDT}
+    {2677129200 -21600 0 CST}
+    {2688624000 -18000 1 CDT}
+    {2709183600 -21600 0 CST}
+    {2720073600 -18000 1 CDT}
+    {2740633200 -21600 0 CST}
+    {2751523200 -18000 1 CDT}
+    {2772082800 -21600 0 CST}
+    {2782972800 -18000 1 CDT}
+    {2803532400 -21600 0 CST}
+    {2814422400 -18000 1 CDT}
+    {2834982000 -21600 0 CST}
+    {2846476800 -18000 1 CDT}
+    {2867036400 -21600 0 CST}
+    {2877926400 -18000 1 CDT}
+    {2898486000 -21600 0 CST}
+    {2909376000 -18000 1 CDT}
+    {2929935600 -21600 0 CST}
+    {2940825600 -18000 1 CDT}
+    {2961385200 -21600 0 CST}
+    {2972275200 -18000 1 CDT}
+    {2992834800 -21600 0 CST}
+    {3003724800 -18000 1 CDT}
+    {3024284400 -21600 0 CST}
+    {3035779200 -18000 1 CDT}
+    {3056338800 -21600 0 CST}
+    {3067228800 -18000 1 CDT}
+    {3087788400 -21600 0 CST}
+    {3098678400 -18000 1 CDT}
+    {3119238000 -21600 0 CST}
+    {3130128000 -18000 1 CDT}
+    {3150687600 -21600 0 CST}
+    {3161577600 -18000 1 CDT}
+    {3182137200 -21600 0 CST}
+    {3193027200 -18000 1 CDT}
+    {3213586800 -21600 0 CST}
+    {3225081600 -18000 1 CDT}
+    {3245641200 -21600 0 CST}
+    {3256531200 -18000 1 CDT}
+    {3277090800 -21600 0 CST}
+    {3287980800 -18000 1 CDT}
+    {3308540400 -21600 0 CST}
+    {3319430400 -18000 1 CDT}
+    {3339990000 -21600 0 CST}
+    {3350880000 -18000 1 CDT}
+    {3371439600 -21600 0 CST}
+    {3382934400 -18000 1 CDT}
+    {3403494000 -21600 0 CST}
+    {3414384000 -18000 1 CDT}
+    {3434943600 -21600 0 CST}
+    {3445833600 -18000 1 CDT}
+    {3466393200 -21600 0 CST}
+    {3477283200 -18000 1 CDT}
+    {3497842800 -21600 0 CST}
+    {3508732800 -18000 1 CDT}
+    {3529292400 -21600 0 CST}
+    {3540182400 -18000 1 CDT}
+    {3560742000 -21600 0 CST}
+    {3572236800 -18000 1 CDT}
+    {3592796400 -21600 0 CST}
+    {3603686400 -18000 1 CDT}
+    {3624246000 -21600 0 CST}
+    {3635136000 -18000 1 CDT}
+    {3655695600 -21600 0 CST}
+    {3666585600 -18000 1 CDT}
+    {3687145200 -21600 0 CST}
+    {3698035200 -18000 1 CDT}
+    {3718594800 -21600 0 CST}
+    {3730089600 -18000 1 CDT}
+    {3750649200 -21600 0 CST}
+    {3761539200 -18000 1 CDT}
+    {3782098800 -21600 0 CST}
+    {3792988800 -18000 1 CDT}
+    {3813548400 -21600 0 CST}
+    {3824438400 -18000 1 CDT}
+    {3844998000 -21600 0 CST}
+    {3855888000 -18000 1 CDT}
+    {3876447600 -21600 0 CST}
+    {3887337600 -18000 1 CDT}
+    {3907897200 -21600 0 CST}
+    {3919392000 -18000 1 CDT}
+    {3939951600 -21600 0 CST}
+    {3950841600 -18000 1 CDT}
+    {3971401200 -21600 0 CST}
+    {3982291200 -18000 1 CDT}
+    {4002850800 -21600 0 CST}
+    {4013740800 -18000 1 CDT}
+    {4034300400 -21600 0 CST}
+    {4045190400 -18000 1 CDT}
+    {4065750000 -21600 0 CST}
+    {4076640000 -18000 1 CDT}
+    {4097199600 -21600 0 CST}
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/Indiana/Vincennes
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/Indiana/Vincennes	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/Indiana/Vincennes	(revision 3762)
@@ -0,0 +1,234 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Indiana/Vincennes) {
+    {-9223372036854775808 -21007 0 LMT}
+    {-2717647200 -21600 0 CST}
+    {-1633276800 -18000 1 CDT}
+    {-1615136400 -21600 0 CST}
+    {-1601827200 -18000 1 CDT}
+    {-1583686800 -21600 0 CST}
+    {-880214400 -18000 1 CWT}
+    {-769395600 -18000 1 CPT}
+    {-765392400 -21600 0 CST}
+    {-757360800 -21600 0 CST}
+    {-747244800 -18000 1 CDT}
+    {-733942800 -21600 0 CST}
+    {-526492800 -18000 1 CDT}
+    {-513190800 -21600 0 CST}
+    {-495043200 -18000 1 CDT}
+    {-481741200 -21600 0 CST}
+    {-462996000 -18000 1 CDT}
+    {-450291600 -21600 0 CST}
+    {-431539200 -18000 1 CDT}
+    {-418237200 -21600 0 CST}
+    {-400089600 -18000 1 CDT}
+    {-386787600 -21600 0 CST}
+    {-368640000 -18000 1 CDT}
+    {-355338000 -21600 0 CST}
+    {-337190400 -18000 1 CDT}
+    {-323888400 -21600 0 CST}
+    {-305740800 -18000 1 CDT}
+    {-289414800 -21600 0 CST}
+    {-273686400 -18000 1 CDT}
+    {-260989200 -21600 0 CST}
+    {-242236800 -18000 1 CDT}
+    {-226515600 -21600 0 CST}
+    {-210787200 -18000 1 CDT}
+    {-195066000 -21600 0 CST}
+    {-179337600 -18000 0 EST}
+    {-31518000 -18000 0 EST}
+    {-21488400 -14400 1 EDT}
+    {-5767200 -18000 0 EST}
+    {9961200 -14400 1 EDT}
+    {25682400 -18000 0 EST}
+    {31554000 -18000 0 EST}
+    {1143961200 -21600 0 CST}
+    {1143964800 -18000 1 CDT}
+    {1162105200 -21600 0 CST}
+    {1173600000 -18000 1 CDT}
+    {1194163200 -18000 0 EST}
+    {1205046000 -14400 1 EDT}
+    {1225605600 -18000 0 EST}
+    {1236495600 -14400 1 EDT}
+    {1257055200 -18000 0 EST}
+    {1268550000 -14400 1 EDT}
+    {1289109600 -18000 0 EST}
+    {1299999600 -14400 1 EDT}
+    {1320559200 -18000 0 EST}
+    {1331449200 -14400 1 EDT}
+    {1352008800 -18000 0 EST}
+    {1362898800 -14400 1 EDT}
+    {1383458400 -18000 0 EST}
+    {1394348400 -14400 1 EDT}
+    {1414908000 -18000 0 EST}
+    {1425798000 -14400 1 EDT}
+    {1446357600 -18000 0 EST}
+    {1457852400 -14400 1 EDT}
+    {1478412000 -18000 0 EST}
+    {1489302000 -14400 1 EDT}
+    {1509861600 -18000 0 EST}
+    {1520751600 -14400 1 EDT}
+    {1541311200 -18000 0 EST}
+    {1552201200 -14400 1 EDT}
+    {1572760800 -18000 0 EST}
+    {1583650800 -14400 1 EDT}
+    {1604210400 -18000 0 EST}
+    {1615705200 -14400 1 EDT}
+    {1636264800 -18000 0 EST}
+    {1647154800 -14400 1 EDT}
+    {1667714400 -18000 0 EST}
+    {1678604400 -14400 1 EDT}
+    {1699164000 -18000 0 EST}
+    {1710054000 -14400 1 EDT}
+    {1730613600 -18000 0 EST}
+    {1741503600 -14400 1 EDT}
+    {1762063200 -18000 0 EST}
+    {1772953200 -14400 1 EDT}
+    {1793512800 -18000 0 EST}
+    {1805007600 -14400 1 EDT}
+    {1825567200 -18000 0 EST}
+    {1836457200 -14400 1 EDT}
+    {1857016800 -18000 0 EST}
+    {1867906800 -14400 1 EDT}
+    {1888466400 -18000 0 EST}
+    {1899356400 -14400 1 EDT}
+    {1919916000 -18000 0 EST}
+    {1930806000 -14400 1 EDT}
+    {1951365600 -18000 0 EST}
+    {1962860400 -14400 1 EDT}
+    {1983420000 -18000 0 EST}
+    {1994310000 -14400 1 EDT}
+    {2014869600 -18000 0 EST}
+    {2025759600 -14400 1 EDT}
+    {2046319200 -18000 0 EST}
+    {2057209200 -14400 1 EDT}
+    {2077768800 -18000 0 EST}
+    {2088658800 -14400 1 EDT}
+    {2109218400 -18000 0 EST}
+    {2120108400 -14400 1 EDT}
+    {2140668000 -18000 0 EST}
+    {2152162800 -14400 1 EDT}
+    {2172722400 -18000 0 EST}
+    {2183612400 -14400 1 EDT}
+    {2204172000 -18000 0 EST}
+    {2215062000 -14400 1 EDT}
+    {2235621600 -18000 0 EST}
+    {2246511600 -14400 1 EDT}
+    {2267071200 -18000 0 EST}
+    {2277961200 -14400 1 EDT}
+    {2298520800 -18000 0 EST}
+    {2309410800 -14400 1 EDT}
+    {2329970400 -18000 0 EST}
+    {2341465200 -14400 1 EDT}
+    {2362024800 -18000 0 EST}
+    {2372914800 -14400 1 EDT}
+    {2393474400 -18000 0 EST}
+    {2404364400 -14400 1 EDT}
+    {2424924000 -18000 0 EST}
+    {2435814000 -14400 1 EDT}
+    {2456373600 -18000 0 EST}
+    {2467263600 -14400 1 EDT}
+    {2487823200 -18000 0 EST}
+    {2499318000 -14400 1 EDT}
+    {2519877600 -18000 0 EST}
+    {2530767600 -14400 1 EDT}
+    {2551327200 -18000 0 EST}
+    {2562217200 -14400 1 EDT}
+    {2582776800 -18000 0 EST}
+    {2593666800 -14400 1 EDT}
+    {2614226400 -18000 0 EST}
+    {2625116400 -14400 1 EDT}
+    {2645676000 -18000 0 EST}
+    {2656566000 -14400 1 EDT}
+    {2677125600 -18000 0 EST}
+    {2688620400 -14400 1 EDT}
+    {2709180000 -18000 0 EST}
+    {2720070000 -14400 1 EDT}
+    {2740629600 -18000 0 EST}
+    {2751519600 -14400 1 EDT}
+    {2772079200 -18000 0 EST}
+    {2782969200 -14400 1 EDT}
+    {2803528800 -18000 0 EST}
+    {2814418800 -14400 1 EDT}
+    {2834978400 -18000 0 EST}
+    {2846473200 -14400 1 EDT}
+    {2867032800 -18000 0 EST}
+    {2877922800 -14400 1 EDT}
+    {2898482400 -18000 0 EST}
+    {2909372400 -14400 1 EDT}
+    {2929932000 -18000 0 EST}
+    {2940822000 -14400 1 EDT}
+    {2961381600 -18000 0 EST}
+    {2972271600 -14400 1 EDT}
+    {2992831200 -18000 0 EST}
+    {3003721200 -14400 1 EDT}
+    {3024280800 -18000 0 EST}
+    {3035775600 -14400 1 EDT}
+    {3056335200 -18000 0 EST}
+    {3067225200 -14400 1 EDT}
+    {3087784800 -18000 0 EST}
+    {3098674800 -14400 1 EDT}
+    {3119234400 -18000 0 EST}
+    {3130124400 -14400 1 EDT}
+    {3150684000 -18000 0 EST}
+    {3161574000 -14400 1 EDT}
+    {3182133600 -18000 0 EST}
+    {3193023600 -14400 1 EDT}
+    {3213583200 -18000 0 EST}
+    {3225078000 -14400 1 EDT}
+    {3245637600 -18000 0 EST}
+    {3256527600 -14400 1 EDT}
+    {3277087200 -18000 0 EST}
+    {3287977200 -14400 1 EDT}
+    {3308536800 -18000 0 EST}
+    {3319426800 -14400 1 EDT}
+    {3339986400 -18000 0 EST}
+    {3350876400 -14400 1 EDT}
+    {3371436000 -18000 0 EST}
+    {3382930800 -14400 1 EDT}
+    {3403490400 -18000 0 EST}
+    {3414380400 -14400 1 EDT}
+    {3434940000 -18000 0 EST}
+    {3445830000 -14400 1 EDT}
+    {3466389600 -18000 0 EST}
+    {3477279600 -14400 1 EDT}
+    {3497839200 -18000 0 EST}
+    {3508729200 -14400 1 EDT}
+    {3529288800 -18000 0 EST}
+    {3540178800 -14400 1 EDT}
+    {3560738400 -18000 0 EST}
+    {3572233200 -14400 1 EDT}
+    {3592792800 -18000 0 EST}
+    {3603682800 -14400 1 EDT}
+    {3624242400 -18000 0 EST}
+    {3635132400 -14400 1 EDT}
+    {3655692000 -18000 0 EST}
+    {3666582000 -14400 1 EDT}
+    {3687141600 -18000 0 EST}
+    {3698031600 -14400 1 EDT}
+    {3718591200 -18000 0 EST}
+    {3730086000 -14400 1 EDT}
+    {3750645600 -18000 0 EST}
+    {3761535600 -14400 1 EDT}
+    {3782095200 -18000 0 EST}
+    {3792985200 -14400 1 EDT}
+    {3813544800 -18000 0 EST}
+    {3824434800 -14400 1 EDT}
+    {3844994400 -18000 0 EST}
+    {3855884400 -14400 1 EDT}
+    {3876444000 -18000 0 EST}
+    {3887334000 -14400 1 EDT}
+    {3907893600 -18000 0 EST}
+    {3919388400 -14400 1 EDT}
+    {3939948000 -18000 0 EST}
+    {3950838000 -14400 1 EDT}
+    {3971397600 -18000 0 EST}
+    {3982287600 -14400 1 EDT}
+    {4002847200 -18000 0 EST}
+    {4013737200 -14400 1 EDT}
+    {4034296800 -18000 0 EST}
+    {4045186800 -14400 1 EDT}
+    {4065746400 -18000 0 EST}
+    {4076636400 -14400 1 EDT}
+    {4097196000 -18000 0 EST}
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/Indiana/Indianapolis
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/Indiana/Indianapolis	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/Indiana/Indianapolis	(revision 3762)
@@ -0,0 +1,234 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Indiana/Indianapolis) {
+    {-9223372036854775808 -20678 0 LMT}
+    {-2717647200 -21600 0 CST}
+    {-1633276800 -18000 1 CDT}
+    {-1615136400 -21600 0 CST}
+    {-1601827200 -18000 1 CDT}
+    {-1583686800 -21600 0 CST}
+    {-1577901600 -21600 0 CST}
+    {-900259200 -18000 1 CDT}
+    {-891795600 -21600 0 CST}
+    {-883591200 -21600 0 CST}
+    {-880214400 -18000 1 CWT}
+    {-769395600 -18000 1 CPT}
+    {-765392400 -21600 0 CST}
+    {-757360800 -21600 0 CST}
+    {-747244800 -18000 1 CDT}
+    {-733942800 -21600 0 CST}
+    {-715795200 -18000 1 CDT}
+    {-702493200 -21600 0 CST}
+    {-684345600 -18000 1 CDT}
+    {-671043600 -21600 0 CST}
+    {-652896000 -18000 1 CDT}
+    {-639594000 -21600 0 CST}
+    {-620841600 -18000 1 CDT}
+    {-608144400 -21600 0 CST}
+    {-589392000 -18000 1 CDT}
+    {-576090000 -21600 0 CST}
+    {-557942400 -18000 1 CDT}
+    {-544640400 -21600 0 CST}
+    {-526492800 -18000 1 CDT}
+    {-513190800 -21600 0 CST}
+    {-495043200 -18000 1 CDT}
+    {-481741200 -21600 0 CST}
+    {-463593600 -18000 0 EST}
+    {-386787600 -21600 0 CST}
+    {-368640000 -18000 0 EST}
+    {-31518000 -18000 0 EST}
+    {-21488400 -14400 1 EDT}
+    {-5767200 -18000 0 EST}
+    {9961200 -14400 1 EDT}
+    {25682400 -18000 0 EST}
+    {31554000 -18000 0 EST}
+    {1136091600 -18000 0 EST}
+    {1143961200 -14400 1 EDT}
+    {1162101600 -18000 0 EST}
+    {1173596400 -14400 1 EDT}
+    {1194156000 -18000 0 EST}
+    {1205046000 -14400 1 EDT}
+    {1225605600 -18000 0 EST}
+    {1236495600 -14400 1 EDT}
+    {1257055200 -18000 0 EST}
+    {1268550000 -14400 1 EDT}
+    {1289109600 -18000 0 EST}
+    {1299999600 -14400 1 EDT}
+    {1320559200 -18000 0 EST}
+    {1331449200 -14400 1 EDT}
+    {1352008800 -18000 0 EST}
+    {1362898800 -14400 1 EDT}
+    {1383458400 -18000 0 EST}
+    {1394348400 -14400 1 EDT}
+    {1414908000 -18000 0 EST}
+    {1425798000 -14400 1 EDT}
+    {1446357600 -18000 0 EST}
+    {1457852400 -14400 1 EDT}
+    {1478412000 -18000 0 EST}
+    {1489302000 -14400 1 EDT}
+    {1509861600 -18000 0 EST}
+    {1520751600 -14400 1 EDT}
+    {1541311200 -18000 0 EST}
+    {1552201200 -14400 1 EDT}
+    {1572760800 -18000 0 EST}
+    {1583650800 -14400 1 EDT}
+    {1604210400 -18000 0 EST}
+    {1615705200 -14400 1 EDT}
+    {1636264800 -18000 0 EST}
+    {1647154800 -14400 1 EDT}
+    {1667714400 -18000 0 EST}
+    {1678604400 -14400 1 EDT}
+    {1699164000 -18000 0 EST}
+    {1710054000 -14400 1 EDT}
+    {1730613600 -18000 0 EST}
+    {1741503600 -14400 1 EDT}
+    {1762063200 -18000 0 EST}
+    {1772953200 -14400 1 EDT}
+    {1793512800 -18000 0 EST}
+    {1805007600 -14400 1 EDT}
+    {1825567200 -18000 0 EST}
+    {1836457200 -14400 1 EDT}
+    {1857016800 -18000 0 EST}
+    {1867906800 -14400 1 EDT}
+    {1888466400 -18000 0 EST}
+    {1899356400 -14400 1 EDT}
+    {1919916000 -18000 0 EST}
+    {1930806000 -14400 1 EDT}
+    {1951365600 -18000 0 EST}
+    {1962860400 -14400 1 EDT}
+    {1983420000 -18000 0 EST}
+    {1994310000 -14400 1 EDT}
+    {2014869600 -18000 0 EST}
+    {2025759600 -14400 1 EDT}
+    {2046319200 -18000 0 EST}
+    {2057209200 -14400 1 EDT}
+    {2077768800 -18000 0 EST}
+    {2088658800 -14400 1 EDT}
+    {2109218400 -18000 0 EST}
+    {2120108400 -14400 1 EDT}
+    {2140668000 -18000 0 EST}
+    {2152162800 -14400 1 EDT}
+    {2172722400 -18000 0 EST}
+    {2183612400 -14400 1 EDT}
+    {2204172000 -18000 0 EST}
+    {2215062000 -14400 1 EDT}
+    {2235621600 -18000 0 EST}
+    {2246511600 -14400 1 EDT}
+    {2267071200 -18000 0 EST}
+    {2277961200 -14400 1 EDT}
+    {2298520800 -18000 0 EST}
+    {2309410800 -14400 1 EDT}
+    {2329970400 -18000 0 EST}
+    {2341465200 -14400 1 EDT}
+    {2362024800 -18000 0 EST}
+    {2372914800 -14400 1 EDT}
+    {2393474400 -18000 0 EST}
+    {2404364400 -14400 1 EDT}
+    {2424924000 -18000 0 EST}
+    {2435814000 -14400 1 EDT}
+    {2456373600 -18000 0 EST}
+    {2467263600 -14400 1 EDT}
+    {2487823200 -18000 0 EST}
+    {2499318000 -14400 1 EDT}
+    {2519877600 -18000 0 EST}
+    {2530767600 -14400 1 EDT}
+    {2551327200 -18000 0 EST}
+    {2562217200 -14400 1 EDT}
+    {2582776800 -18000 0 EST}
+    {2593666800 -14400 1 EDT}
+    {2614226400 -18000 0 EST}
+    {2625116400 -14400 1 EDT}
+    {2645676000 -18000 0 EST}
+    {2656566000 -14400 1 EDT}
+    {2677125600 -18000 0 EST}
+    {2688620400 -14400 1 EDT}
+    {2709180000 -18000 0 EST}
+    {2720070000 -14400 1 EDT}
+    {2740629600 -18000 0 EST}
+    {2751519600 -14400 1 EDT}
+    {2772079200 -18000 0 EST}
+    {2782969200 -14400 1 EDT}
+    {2803528800 -18000 0 EST}
+    {2814418800 -14400 1 EDT}
+    {2834978400 -18000 0 EST}
+    {2846473200 -14400 1 EDT}
+    {2867032800 -18000 0 EST}
+    {2877922800 -14400 1 EDT}
+    {2898482400 -18000 0 EST}
+    {2909372400 -14400 1 EDT}
+    {2929932000 -18000 0 EST}
+    {2940822000 -14400 1 EDT}
+    {2961381600 -18000 0 EST}
+    {2972271600 -14400 1 EDT}
+    {2992831200 -18000 0 EST}
+    {3003721200 -14400 1 EDT}
+    {3024280800 -18000 0 EST}
+    {3035775600 -14400 1 EDT}
+    {3056335200 -18000 0 EST}
+    {3067225200 -14400 1 EDT}
+    {3087784800 -18000 0 EST}
+    {3098674800 -14400 1 EDT}
+    {3119234400 -18000 0 EST}
+    {3130124400 -14400 1 EDT}
+    {3150684000 -18000 0 EST}
+    {3161574000 -14400 1 EDT}
+    {3182133600 -18000 0 EST}
+    {3193023600 -14400 1 EDT}
+    {3213583200 -18000 0 EST}
+    {3225078000 -14400 1 EDT}
+    {3245637600 -18000 0 EST}
+    {3256527600 -14400 1 EDT}
+    {3277087200 -18000 0 EST}
+    {3287977200 -14400 1 EDT}
+    {3308536800 -18000 0 EST}
+    {3319426800 -14400 1 EDT}
+    {3339986400 -18000 0 EST}
+    {3350876400 -14400 1 EDT}
+    {3371436000 -18000 0 EST}
+    {3382930800 -14400 1 EDT}
+    {3403490400 -18000 0 EST}
+    {3414380400 -14400 1 EDT}
+    {3434940000 -18000 0 EST}
+    {3445830000 -14400 1 EDT}
+    {3466389600 -18000 0 EST}
+    {3477279600 -14400 1 EDT}
+    {3497839200 -18000 0 EST}
+    {3508729200 -14400 1 EDT}
+    {3529288800 -18000 0 EST}
+    {3540178800 -14400 1 EDT}
+    {3560738400 -18000 0 EST}
+    {3572233200 -14400 1 EDT}
+    {3592792800 -18000 0 EST}
+    {3603682800 -14400 1 EDT}
+    {3624242400 -18000 0 EST}
+    {3635132400 -14400 1 EDT}
+    {3655692000 -18000 0 EST}
+    {3666582000 -14400 1 EDT}
+    {3687141600 -18000 0 EST}
+    {3698031600 -14400 1 EDT}
+    {3718591200 -18000 0 EST}
+    {3730086000 -14400 1 EDT}
+    {3750645600 -18000 0 EST}
+    {3761535600 -14400 1 EDT}
+    {3782095200 -18000 0 EST}
+    {3792985200 -14400 1 EDT}
+    {3813544800 -18000 0 EST}
+    {3824434800 -14400 1 EDT}
+    {3844994400 -18000 0 EST}
+    {3855884400 -14400 1 EDT}
+    {3876444000 -18000 0 EST}
+    {3887334000 -14400 1 EDT}
+    {3907893600 -18000 0 EST}
+    {3919388400 -14400 1 EDT}
+    {3939948000 -18000 0 EST}
+    {3950838000 -14400 1 EDT}
+    {3971397600 -18000 0 EST}
+    {3982287600 -14400 1 EDT}
+    {4002847200 -18000 0 EST}
+    {4013737200 -14400 1 EDT}
+    {4034296800 -18000 0 EST}
+    {4045186800 -14400 1 EDT}
+    {4065746400 -18000 0 EST}
+    {4076636400 -14400 1 EDT}
+    {4097196000 -18000 0 EST}
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/Indiana/Vevay
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/Indiana/Vevay	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/Indiana/Vevay	(revision 3762)
@@ -0,0 +1,213 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Indiana/Vevay) {
+    {-9223372036854775808 -20416 0 LMT}
+    {-2717647200 -21600 0 CST}
+    {-1633276800 -18000 1 CDT}
+    {-1615136400 -21600 0 CST}
+    {-1601827200 -18000 1 CDT}
+    {-1583686800 -21600 0 CST}
+    {-880214400 -18000 1 CWT}
+    {-769395600 -18000 1 CPT}
+    {-765392400 -21600 0 CST}
+    {-495043200 -18000 0 EST}
+    {-31518000 -18000 0 EST}
+    {-21488400 -14400 1 EDT}
+    {-5767200 -18000 0 EST}
+    {9961200 -14400 1 EDT}
+    {25682400 -18000 0 EST}
+    {41410800 -14400 1 EDT}
+    {57736800 -18000 0 EST}
+    {73465200 -14400 1 EDT}
+    {89186400 -18000 0 EST}
+    {94712400 -18000 0 EST}
+    {1136091600 -18000 0 EST}
+    {1143961200 -14400 1 EDT}
+    {1162101600 -18000 0 EST}
+    {1173596400 -14400 1 EDT}
+    {1194156000 -18000 0 EST}
+    {1205046000 -14400 1 EDT}
+    {1225605600 -18000 0 EST}
+    {1236495600 -14400 1 EDT}
+    {1257055200 -18000 0 EST}
+    {1268550000 -14400 1 EDT}
+    {1289109600 -18000 0 EST}
+    {1299999600 -14400 1 EDT}
+    {1320559200 -18000 0 EST}
+    {1331449200 -14400 1 EDT}
+    {1352008800 -18000 0 EST}
+    {1362898800 -14400 1 EDT}
+    {1383458400 -18000 0 EST}
+    {1394348400 -14400 1 EDT}
+    {1414908000 -18000 0 EST}
+    {1425798000 -14400 1 EDT}
+    {1446357600 -18000 0 EST}
+    {1457852400 -14400 1 EDT}
+    {1478412000 -18000 0 EST}
+    {1489302000 -14400 1 EDT}
+    {1509861600 -18000 0 EST}
+    {1520751600 -14400 1 EDT}
+    {1541311200 -18000 0 EST}
+    {1552201200 -14400 1 EDT}
+    {1572760800 -18000 0 EST}
+    {1583650800 -14400 1 EDT}
+    {1604210400 -18000 0 EST}
+    {1615705200 -14400 1 EDT}
+    {1636264800 -18000 0 EST}
+    {1647154800 -14400 1 EDT}
+    {1667714400 -18000 0 EST}
+    {1678604400 -14400 1 EDT}
+    {1699164000 -18000 0 EST}
+    {1710054000 -14400 1 EDT}
+    {1730613600 -18000 0 EST}
+    {1741503600 -14400 1 EDT}
+    {1762063200 -18000 0 EST}
+    {1772953200 -14400 1 EDT}
+    {1793512800 -18000 0 EST}
+    {1805007600 -14400 1 EDT}
+    {1825567200 -18000 0 EST}
+    {1836457200 -14400 1 EDT}
+    {1857016800 -18000 0 EST}
+    {1867906800 -14400 1 EDT}
+    {1888466400 -18000 0 EST}
+    {1899356400 -14400 1 EDT}
+    {1919916000 -18000 0 EST}
+    {1930806000 -14400 1 EDT}
+    {1951365600 -18000 0 EST}
+    {1962860400 -14400 1 EDT}
+    {1983420000 -18000 0 EST}
+    {1994310000 -14400 1 EDT}
+    {2014869600 -18000 0 EST}
+    {2025759600 -14400 1 EDT}
+    {2046319200 -18000 0 EST}
+    {2057209200 -14400 1 EDT}
+    {2077768800 -18000 0 EST}
+    {2088658800 -14400 1 EDT}
+    {2109218400 -18000 0 EST}
+    {2120108400 -14400 1 EDT}
+    {2140668000 -18000 0 EST}
+    {2152162800 -14400 1 EDT}
+    {2172722400 -18000 0 EST}
+    {2183612400 -14400 1 EDT}
+    {2204172000 -18000 0 EST}
+    {2215062000 -14400 1 EDT}
+    {2235621600 -18000 0 EST}
+    {2246511600 -14400 1 EDT}
+    {2267071200 -18000 0 EST}
+    {2277961200 -14400 1 EDT}
+    {2298520800 -18000 0 EST}
+    {2309410800 -14400 1 EDT}
+    {2329970400 -18000 0 EST}
+    {2341465200 -14400 1 EDT}
+    {2362024800 -18000 0 EST}
+    {2372914800 -14400 1 EDT}
+    {2393474400 -18000 0 EST}
+    {2404364400 -14400 1 EDT}
+    {2424924000 -18000 0 EST}
+    {2435814000 -14400 1 EDT}
+    {2456373600 -18000 0 EST}
+    {2467263600 -14400 1 EDT}
+    {2487823200 -18000 0 EST}
+    {2499318000 -14400 1 EDT}
+    {2519877600 -18000 0 EST}
+    {2530767600 -14400 1 EDT}
+    {2551327200 -18000 0 EST}
+    {2562217200 -14400 1 EDT}
+    {2582776800 -18000 0 EST}
+    {2593666800 -14400 1 EDT}
+    {2614226400 -18000 0 EST}
+    {2625116400 -14400 1 EDT}
+    {2645676000 -18000 0 EST}
+    {2656566000 -14400 1 EDT}
+    {2677125600 -18000 0 EST}
+    {2688620400 -14400 1 EDT}
+    {2709180000 -18000 0 EST}
+    {2720070000 -14400 1 EDT}
+    {2740629600 -18000 0 EST}
+    {2751519600 -14400 1 EDT}
+    {2772079200 -18000 0 EST}
+    {2782969200 -14400 1 EDT}
+    {2803528800 -18000 0 EST}
+    {2814418800 -14400 1 EDT}
+    {2834978400 -18000 0 EST}
+    {2846473200 -14400 1 EDT}
+    {2867032800 -18000 0 EST}
+    {2877922800 -14400 1 EDT}
+    {2898482400 -18000 0 EST}
+    {2909372400 -14400 1 EDT}
+    {2929932000 -18000 0 EST}
+    {2940822000 -14400 1 EDT}
+    {2961381600 -18000 0 EST}
+    {2972271600 -14400 1 EDT}
+    {2992831200 -18000 0 EST}
+    {3003721200 -14400 1 EDT}
+    {3024280800 -18000 0 EST}
+    {3035775600 -14400 1 EDT}
+    {3056335200 -18000 0 EST}
+    {3067225200 -14400 1 EDT}
+    {3087784800 -18000 0 EST}
+    {3098674800 -14400 1 EDT}
+    {3119234400 -18000 0 EST}
+    {3130124400 -14400 1 EDT}
+    {3150684000 -18000 0 EST}
+    {3161574000 -14400 1 EDT}
+    {3182133600 -18000 0 EST}
+    {3193023600 -14400 1 EDT}
+    {3213583200 -18000 0 EST}
+    {3225078000 -14400 1 EDT}
+    {3245637600 -18000 0 EST}
+    {3256527600 -14400 1 EDT}
+    {3277087200 -18000 0 EST}
+    {3287977200 -14400 1 EDT}
+    {3308536800 -18000 0 EST}
+    {3319426800 -14400 1 EDT}
+    {3339986400 -18000 0 EST}
+    {3350876400 -14400 1 EDT}
+    {3371436000 -18000 0 EST}
+    {3382930800 -14400 1 EDT}
+    {3403490400 -18000 0 EST}
+    {3414380400 -14400 1 EDT}
+    {3434940000 -18000 0 EST}
+    {3445830000 -14400 1 EDT}
+    {3466389600 -18000 0 EST}
+    {3477279600 -14400 1 EDT}
+    {3497839200 -18000 0 EST}
+    {3508729200 -14400 1 EDT}
+    {3529288800 -18000 0 EST}
+    {3540178800 -14400 1 EDT}
+    {3560738400 -18000 0 EST}
+    {3572233200 -14400 1 EDT}
+    {3592792800 -18000 0 EST}
+    {3603682800 -14400 1 EDT}
+    {3624242400 -18000 0 EST}
+    {3635132400 -14400 1 EDT}
+    {3655692000 -18000 0 EST}
+    {3666582000 -14400 1 EDT}
+    {3687141600 -18000 0 EST}
+    {3698031600 -14400 1 EDT}
+    {3718591200 -18000 0 EST}
+    {3730086000 -14400 1 EDT}
+    {3750645600 -18000 0 EST}
+    {3761535600 -14400 1 EDT}
+    {3782095200 -18000 0 EST}
+    {3792985200 -14400 1 EDT}
+    {3813544800 -18000 0 EST}
+    {3824434800 -14400 1 EDT}
+    {3844994400 -18000 0 EST}
+    {3855884400 -14400 1 EDT}
+    {3876444000 -18000 0 EST}
+    {3887334000 -14400 1 EDT}
+    {3907893600 -18000 0 EST}
+    {3919388400 -14400 1 EDT}
+    {3939948000 -18000 0 EST}
+    {3950838000 -14400 1 EDT}
+    {3971397600 -18000 0 EST}
+    {3982287600 -14400 1 EDT}
+    {4002847200 -18000 0 EST}
+    {4013737200 -14400 1 EDT}
+    {4034296800 -18000 0 EST}
+    {4045186800 -14400 1 EDT}
+    {4065746400 -18000 0 EST}
+    {4076636400 -14400 1 EDT}
+    {4097196000 -18000 0 EST}
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/Indiana/Knox
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/Indiana/Knox	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/Indiana/Knox	(revision 3762)
@@ -0,0 +1,285 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Indiana/Knox) {
+    {-9223372036854775808 -20790 0 LMT}
+    {-2717647200 -21600 0 CST}
+    {-1633276800 -18000 1 CDT}
+    {-1615136400 -21600 0 CST}
+    {-1601827200 -18000 1 CDT}
+    {-1583686800 -21600 0 CST}
+    {-880214400 -18000 1 CWT}
+    {-769395600 -18000 1 CPT}
+    {-765392400 -21600 0 CST}
+    {-725824800 -21600 0 CST}
+    {-715795200 -18000 1 CDT}
+    {-702493200 -21600 0 CST}
+    {-684345600 -18000 1 CDT}
+    {-671043600 -21600 0 CST}
+    {-652896000 -18000 1 CDT}
+    {-639594000 -21600 0 CST}
+    {-620841600 -18000 1 CDT}
+    {-608144400 -21600 0 CST}
+    {-589392000 -18000 1 CDT}
+    {-576090000 -21600 0 CST}
+    {-557942400 -18000 1 CDT}
+    {-544640400 -21600 0 CST}
+    {-526492800 -18000 1 CDT}
+    {-513190800 -21600 0 CST}
+    {-495043200 -18000 1 CDT}
+    {-481741200 -21600 0 CST}
+    {-463593600 -18000 1 CDT}
+    {-447267600 -21600 0 CST}
+    {-431539200 -18000 1 CDT}
+    {-415818000 -21600 0 CST}
+    {-400089600 -18000 1 CDT}
+    {-386787600 -21600 0 CST}
+    {-368640000 -18000 1 CDT}
+    {-355338000 -21600 0 CST}
+    {-337190400 -18000 1 CDT}
+    {-321469200 -21600 0 CST}
+    {-305740800 -18000 1 CDT}
+    {-289414800 -21600 0 CST}
+    {-273686400 -18000 1 CDT}
+    {-257965200 -21600 0 CST}
+    {-242236800 -18000 0 EST}
+    {-195066000 -21600 0 CST}
+    {-84384000 -18000 1 CDT}
+    {-68662800 -21600 0 CST}
+    {-52934400 -18000 1 CDT}
+    {-37213200 -21600 0 CST}
+    {-21484800 -18000 1 CDT}
+    {-5763600 -21600 0 CST}
+    {9964800 -18000 1 CDT}
+    {25686000 -21600 0 CST}
+    {41414400 -18000 1 CDT}
+    {57740400 -21600 0 CST}
+    {73468800 -18000 1 CDT}
+    {89190000 -21600 0 CST}
+    {104918400 -18000 1 CDT}
+    {120639600 -21600 0 CST}
+    {126691200 -18000 1 CDT}
+    {152089200 -21600 0 CST}
+    {162374400 -18000 1 CDT}
+    {183538800 -21600 0 CST}
+    {199267200 -18000 1 CDT}
+    {215593200 -21600 0 CST}
+    {230716800 -18000 1 CDT}
+    {247042800 -21600 0 CST}
+    {262771200 -18000 1 CDT}
+    {278492400 -21600 0 CST}
+    {294220800 -18000 1 CDT}
+    {309942000 -21600 0 CST}
+    {325670400 -18000 1 CDT}
+    {341391600 -21600 0 CST}
+    {357120000 -18000 1 CDT}
+    {372841200 -21600 0 CST}
+    {388569600 -18000 1 CDT}
+    {404895600 -21600 0 CST}
+    {420019200 -18000 1 CDT}
+    {436345200 -21600 0 CST}
+    {452073600 -18000 1 CDT}
+    {467794800 -21600 0 CST}
+    {483523200 -18000 1 CDT}
+    {499244400 -21600 0 CST}
+    {514972800 -18000 1 CDT}
+    {530694000 -21600 0 CST}
+    {544608000 -18000 1 CDT}
+    {562143600 -21600 0 CST}
+    {576057600 -18000 1 CDT}
+    {594198000 -21600 0 CST}
+    {607507200 -18000 1 CDT}
+    {625647600 -21600 0 CST}
+    {638956800 -18000 1 CDT}
+    {657097200 -21600 0 CST}
+    {671011200 -18000 1 CDT}
+    {688550400 -18000 0 EST}
+    {1143961200 -21600 0 CST}
+    {1143964800 -18000 1 CDT}
+    {1162105200 -21600 0 CST}
+    {1173600000 -18000 1 CDT}
+    {1194159600 -21600 0 CST}
+    {1205049600 -18000 1 CDT}
+    {1225609200 -21600 0 CST}
+    {1236499200 -18000 1 CDT}
+    {1257058800 -21600 0 CST}
+    {1268553600 -18000 1 CDT}
+    {1289113200 -21600 0 CST}
+    {1300003200 -18000 1 CDT}
+    {1320562800 -21600 0 CST}
+    {1331452800 -18000 1 CDT}
+    {1352012400 -21600 0 CST}
+    {1362902400 -18000 1 CDT}
+    {1383462000 -21600 0 CST}
+    {1394352000 -18000 1 CDT}
+    {1414911600 -21600 0 CST}
+    {1425801600 -18000 1 CDT}
+    {1446361200 -21600 0 CST}
+    {1457856000 -18000 1 CDT}
+    {1478415600 -21600 0 CST}
+    {1489305600 -18000 1 CDT}
+    {1509865200 -21600 0 CST}
+    {1520755200 -18000 1 CDT}
+    {1541314800 -21600 0 CST}
+    {1552204800 -18000 1 CDT}
+    {1572764400 -21600 0 CST}
+    {1583654400 -18000 1 CDT}
+    {1604214000 -21600 0 CST}
+    {1615708800 -18000 1 CDT}
+    {1636268400 -21600 0 CST}
+    {1647158400 -18000 1 CDT}
+    {1667718000 -21600 0 CST}
+    {1678608000 -18000 1 CDT}
+    {1699167600 -21600 0 CST}
+    {1710057600 -18000 1 CDT}
+    {1730617200 -21600 0 CST}
+    {1741507200 -18000 1 CDT}
+    {1762066800 -21600 0 CST}
+    {1772956800 -18000 1 CDT}
+    {1793516400 -21600 0 CST}
+    {1805011200 -18000 1 CDT}
+    {1825570800 -21600 0 CST}
+    {1836460800 -18000 1 CDT}
+    {1857020400 -21600 0 CST}
+    {1867910400 -18000 1 CDT}
+    {1888470000 -21600 0 CST}
+    {1899360000 -18000 1 CDT}
+    {1919919600 -21600 0 CST}
+    {1930809600 -18000 1 CDT}
+    {1951369200 -21600 0 CST}
+    {1962864000 -18000 1 CDT}
+    {1983423600 -21600 0 CST}
+    {1994313600 -18000 1 CDT}
+    {2014873200 -21600 0 CST}
+    {2025763200 -18000 1 CDT}
+    {2046322800 -21600 0 CST}
+    {2057212800 -18000 1 CDT}
+    {2077772400 -21600 0 CST}
+    {2088662400 -18000 1 CDT}
+    {2109222000 -21600 0 CST}
+    {2120112000 -18000 1 CDT}
+    {2140671600 -21600 0 CST}
+    {2152166400 -18000 1 CDT}
+    {2172726000 -21600 0 CST}
+    {2183616000 -18000 1 CDT}
+    {2204175600 -21600 0 CST}
+    {2215065600 -18000 1 CDT}
+    {2235625200 -21600 0 CST}
+    {2246515200 -18000 1 CDT}
+    {2267074800 -21600 0 CST}
+    {2277964800 -18000 1 CDT}
+    {2298524400 -21600 0 CST}
+    {2309414400 -18000 1 CDT}
+    {2329974000 -21600 0 CST}
+    {2341468800 -18000 1 CDT}
+    {2362028400 -21600 0 CST}
+    {2372918400 -18000 1 CDT}
+    {2393478000 -21600 0 CST}
+    {2404368000 -18000 1 CDT}
+    {2424927600 -21600 0 CST}
+    {2435817600 -18000 1 CDT}
+    {2456377200 -21600 0 CST}
+    {2467267200 -18000 1 CDT}
+    {2487826800 -21600 0 CST}
+    {2499321600 -18000 1 CDT}
+    {2519881200 -21600 0 CST}
+    {2530771200 -18000 1 CDT}
+    {2551330800 -21600 0 CST}
+    {2562220800 -18000 1 CDT}
+    {2582780400 -21600 0 CST}
+    {2593670400 -18000 1 CDT}
+    {2614230000 -21600 0 CST}
+    {2625120000 -18000 1 CDT}
+    {2645679600 -21600 0 CST}
+    {2656569600 -18000 1 CDT}
+    {2677129200 -21600 0 CST}
+    {2688624000 -18000 1 CDT}
+    {2709183600 -21600 0 CST}
+    {2720073600 -18000 1 CDT}
+    {2740633200 -21600 0 CST}
+    {2751523200 -18000 1 CDT}
+    {2772082800 -21600 0 CST}
+    {2782972800 -18000 1 CDT}
+    {2803532400 -21600 0 CST}
+    {2814422400 -18000 1 CDT}
+    {2834982000 -21600 0 CST}
+    {2846476800 -18000 1 CDT}
+    {2867036400 -21600 0 CST}
+    {2877926400 -18000 1 CDT}
+    {2898486000 -21600 0 CST}
+    {2909376000 -18000 1 CDT}
+    {2929935600 -21600 0 CST}
+    {2940825600 -18000 1 CDT}
+    {2961385200 -21600 0 CST}
+    {2972275200 -18000 1 CDT}
+    {2992834800 -21600 0 CST}
+    {3003724800 -18000 1 CDT}
+    {3024284400 -21600 0 CST}
+    {3035779200 -18000 1 CDT}
+    {3056338800 -21600 0 CST}
+    {3067228800 -18000 1 CDT}
+    {3087788400 -21600 0 CST}
+    {3098678400 -18000 1 CDT}
+    {3119238000 -21600 0 CST}
+    {3130128000 -18000 1 CDT}
+    {3150687600 -21600 0 CST}
+    {3161577600 -18000 1 CDT}
+    {3182137200 -21600 0 CST}
+    {3193027200 -18000 1 CDT}
+    {3213586800 -21600 0 CST}
+    {3225081600 -18000 1 CDT}
+    {3245641200 -21600 0 CST}
+    {3256531200 -18000 1 CDT}
+    {3277090800 -21600 0 CST}
+    {3287980800 -18000 1 CDT}
+    {3308540400 -21600 0 CST}
+    {3319430400 -18000 1 CDT}
+    {3339990000 -21600 0 CST}
+    {3350880000 -18000 1 CDT}
+    {3371439600 -21600 0 CST}
+    {3382934400 -18000 1 CDT}
+    {3403494000 -21600 0 CST}
+    {3414384000 -18000 1 CDT}
+    {3434943600 -21600 0 CST}
+    {3445833600 -18000 1 CDT}
+    {3466393200 -21600 0 CST}
+    {3477283200 -18000 1 CDT}
+    {3497842800 -21600 0 CST}
+    {3508732800 -18000 1 CDT}
+    {3529292400 -21600 0 CST}
+    {3540182400 -18000 1 CDT}
+    {3560742000 -21600 0 CST}
+    {3572236800 -18000 1 CDT}
+    {3592796400 -21600 0 CST}
+    {3603686400 -18000 1 CDT}
+    {3624246000 -21600 0 CST}
+    {3635136000 -18000 1 CDT}
+    {3655695600 -21600 0 CST}
+    {3666585600 -18000 1 CDT}
+    {3687145200 -21600 0 CST}
+    {3698035200 -18000 1 CDT}
+    {3718594800 -21600 0 CST}
+    {3730089600 -18000 1 CDT}
+    {3750649200 -21600 0 CST}
+    {3761539200 -18000 1 CDT}
+    {3782098800 -21600 0 CST}
+    {3792988800 -18000 1 CDT}
+    {3813548400 -21600 0 CST}
+    {3824438400 -18000 1 CDT}
+    {3844998000 -21600 0 CST}
+    {3855888000 -18000 1 CDT}
+    {3876447600 -21600 0 CST}
+    {3887337600 -18000 1 CDT}
+    {3907897200 -21600 0 CST}
+    {3919392000 -18000 1 CDT}
+    {3939951600 -21600 0 CST}
+    {3950841600 -18000 1 CDT}
+    {3971401200 -21600 0 CST}
+    {3982291200 -18000 1 CDT}
+    {4002850800 -21600 0 CST}
+    {4013740800 -18000 1 CDT}
+    {4034300400 -21600 0 CST}
+    {4045190400 -18000 1 CDT}
+    {4065750000 -21600 0 CST}
+    {4076640000 -18000 1 CDT}
+    {4097199600 -21600 0 CST}
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/Indiana/Winamac
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/Indiana/Winamac	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/Indiana/Winamac	(revision 3762)
@@ -0,0 +1,240 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Indiana/Winamac) {
+    {-9223372036854775808 -20785 0 LMT}
+    {-2717647200 -21600 0 CST}
+    {-1633276800 -18000 1 CDT}
+    {-1615136400 -21600 0 CST}
+    {-1601827200 -18000 1 CDT}
+    {-1583686800 -21600 0 CST}
+    {-880214400 -18000 1 CWT}
+    {-769395600 -18000 1 CPT}
+    {-765392400 -21600 0 CST}
+    {-757360800 -21600 0 CST}
+    {-747244800 -18000 1 CDT}
+    {-733942800 -21600 0 CST}
+    {-715795200 -18000 1 CDT}
+    {-702493200 -21600 0 CST}
+    {-684345600 -18000 1 CDT}
+    {-671043600 -21600 0 CST}
+    {-652896000 -18000 1 CDT}
+    {-639594000 -21600 0 CST}
+    {-620841600 -18000 1 CDT}
+    {-608144400 -21600 0 CST}
+    {-589392000 -18000 1 CDT}
+    {-576090000 -21600 0 CST}
+    {-557942400 -18000 1 CDT}
+    {-544640400 -21600 0 CST}
+    {-526492800 -18000 1 CDT}
+    {-513190800 -21600 0 CST}
+    {-495043200 -18000 1 CDT}
+    {-481741200 -21600 0 CST}
+    {-463593600 -18000 1 CDT}
+    {-447267600 -21600 0 CST}
+    {-431539200 -18000 1 CDT}
+    {-415818000 -21600 0 CST}
+    {-400089600 -18000 1 CDT}
+    {-386787600 -21600 0 CST}
+    {-368640000 -18000 1 CDT}
+    {-355338000 -21600 0 CST}
+    {-337190400 -18000 1 CDT}
+    {-323888400 -21600 0 CST}
+    {-305740800 -18000 1 CDT}
+    {-292438800 -21600 0 CST}
+    {-273686400 -18000 0 EST}
+    {-31518000 -18000 0 EST}
+    {-21488400 -14400 1 EDT}
+    {-5767200 -18000 0 EST}
+    {9961200 -14400 1 EDT}
+    {25682400 -18000 0 EST}
+    {31554000 -18000 0 EST}
+    {1143961200 -21600 0 CST}
+    {1143964800 -18000 1 CDT}
+    {1162105200 -21600 0 CST}
+    {1173600000 -14400 0 EDT}
+    {1194156000 -18000 0 EST}
+    {1205046000 -14400 1 EDT}
+    {1225605600 -18000 0 EST}
+    {1236495600 -14400 1 EDT}
+    {1257055200 -18000 0 EST}
+    {1268550000 -14400 1 EDT}
+    {1289109600 -18000 0 EST}
+    {1299999600 -14400 1 EDT}
+    {1320559200 -18000 0 EST}
+    {1331449200 -14400 1 EDT}
+    {1352008800 -18000 0 EST}
+    {1362898800 -14400 1 EDT}
+    {1383458400 -18000 0 EST}
+    {1394348400 -14400 1 EDT}
+    {1414908000 -18000 0 EST}
+    {1425798000 -14400 1 EDT}
+    {1446357600 -18000 0 EST}
+    {1457852400 -14400 1 EDT}
+    {1478412000 -18000 0 EST}
+    {1489302000 -14400 1 EDT}
+    {1509861600 -18000 0 EST}
+    {1520751600 -14400 1 EDT}
+    {1541311200 -18000 0 EST}
+    {1552201200 -14400 1 EDT}
+    {1572760800 -18000 0 EST}
+    {1583650800 -14400 1 EDT}
+    {1604210400 -18000 0 EST}
+    {1615705200 -14400 1 EDT}
+    {1636264800 -18000 0 EST}
+    {1647154800 -14400 1 EDT}
+    {1667714400 -18000 0 EST}
+    {1678604400 -14400 1 EDT}
+    {1699164000 -18000 0 EST}
+    {1710054000 -14400 1 EDT}
+    {1730613600 -18000 0 EST}
+    {1741503600 -14400 1 EDT}
+    {1762063200 -18000 0 EST}
+    {1772953200 -14400 1 EDT}
+    {1793512800 -18000 0 EST}
+    {1805007600 -14400 1 EDT}
+    {1825567200 -18000 0 EST}
+    {1836457200 -14400 1 EDT}
+    {1857016800 -18000 0 EST}
+    {1867906800 -14400 1 EDT}
+    {1888466400 -18000 0 EST}
+    {1899356400 -14400 1 EDT}
+    {1919916000 -18000 0 EST}
+    {1930806000 -14400 1 EDT}
+    {1951365600 -18000 0 EST}
+    {1962860400 -14400 1 EDT}
+    {1983420000 -18000 0 EST}
+    {1994310000 -14400 1 EDT}
+    {2014869600 -18000 0 EST}
+    {2025759600 -14400 1 EDT}
+    {2046319200 -18000 0 EST}
+    {2057209200 -14400 1 EDT}
+    {2077768800 -18000 0 EST}
+    {2088658800 -14400 1 EDT}
+    {2109218400 -18000 0 EST}
+    {2120108400 -14400 1 EDT}
+    {2140668000 -18000 0 EST}
+    {2152162800 -14400 1 EDT}
+    {2172722400 -18000 0 EST}
+    {2183612400 -14400 1 EDT}
+    {2204172000 -18000 0 EST}
+    {2215062000 -14400 1 EDT}
+    {2235621600 -18000 0 EST}
+    {2246511600 -14400 1 EDT}
+    {2267071200 -18000 0 EST}
+    {2277961200 -14400 1 EDT}
+    {2298520800 -18000 0 EST}
+    {2309410800 -14400 1 EDT}
+    {2329970400 -18000 0 EST}
+    {2341465200 -14400 1 EDT}
+    {2362024800 -18000 0 EST}
+    {2372914800 -14400 1 EDT}
+    {2393474400 -18000 0 EST}
+    {2404364400 -14400 1 EDT}
+    {2424924000 -18000 0 EST}
+    {2435814000 -14400 1 EDT}
+    {2456373600 -18000 0 EST}
+    {2467263600 -14400 1 EDT}
+    {2487823200 -18000 0 EST}
+    {2499318000 -14400 1 EDT}
+    {2519877600 -18000 0 EST}
+    {2530767600 -14400 1 EDT}
+    {2551327200 -18000 0 EST}
+    {2562217200 -14400 1 EDT}
+    {2582776800 -18000 0 EST}
+    {2593666800 -14400 1 EDT}
+    {2614226400 -18000 0 EST}
+    {2625116400 -14400 1 EDT}
+    {2645676000 -18000 0 EST}
+    {2656566000 -14400 1 EDT}
+    {2677125600 -18000 0 EST}
+    {2688620400 -14400 1 EDT}
+    {2709180000 -18000 0 EST}
+    {2720070000 -14400 1 EDT}
+    {2740629600 -18000 0 EST}
+    {2751519600 -14400 1 EDT}
+    {2772079200 -18000 0 EST}
+    {2782969200 -14400 1 EDT}
+    {2803528800 -18000 0 EST}
+    {2814418800 -14400 1 EDT}
+    {2834978400 -18000 0 EST}
+    {2846473200 -14400 1 EDT}
+    {2867032800 -18000 0 EST}
+    {2877922800 -14400 1 EDT}
+    {2898482400 -18000 0 EST}
+    {2909372400 -14400 1 EDT}
+    {2929932000 -18000 0 EST}
+    {2940822000 -14400 1 EDT}
+    {2961381600 -18000 0 EST}
+    {2972271600 -14400 1 EDT}
+    {2992831200 -18000 0 EST}
+    {3003721200 -14400 1 EDT}
+    {3024280800 -18000 0 EST}
+    {3035775600 -14400 1 EDT}
+    {3056335200 -18000 0 EST}
+    {3067225200 -14400 1 EDT}
+    {3087784800 -18000 0 EST}
+    {3098674800 -14400 1 EDT}
+    {3119234400 -18000 0 EST}
+    {3130124400 -14400 1 EDT}
+    {3150684000 -18000 0 EST}
+    {3161574000 -14400 1 EDT}
+    {3182133600 -18000 0 EST}
+    {3193023600 -14400 1 EDT}
+    {3213583200 -18000 0 EST}
+    {3225078000 -14400 1 EDT}
+    {3245637600 -18000 0 EST}
+    {3256527600 -14400 1 EDT}
+    {3277087200 -18000 0 EST}
+    {3287977200 -14400 1 EDT}
+    {3308536800 -18000 0 EST}
+    {3319426800 -14400 1 EDT}
+    {3339986400 -18000 0 EST}
+    {3350876400 -14400 1 EDT}
+    {3371436000 -18000 0 EST}
+    {3382930800 -14400 1 EDT}
+    {3403490400 -18000 0 EST}
+    {3414380400 -14400 1 EDT}
+    {3434940000 -18000 0 EST}
+    {3445830000 -14400 1 EDT}
+    {3466389600 -18000 0 EST}
+    {3477279600 -14400 1 EDT}
+    {3497839200 -18000 0 EST}
+    {3508729200 -14400 1 EDT}
+    {3529288800 -18000 0 EST}
+    {3540178800 -14400 1 EDT}
+    {3560738400 -18000 0 EST}
+    {3572233200 -14400 1 EDT}
+    {3592792800 -18000 0 EST}
+    {3603682800 -14400 1 EDT}
+    {3624242400 -18000 0 EST}
+    {3635132400 -14400 1 EDT}
+    {3655692000 -18000 0 EST}
+    {3666582000 -14400 1 EDT}
+    {3687141600 -18000 0 EST}
+    {3698031600 -14400 1 EDT}
+    {3718591200 -18000 0 EST}
+    {3730086000 -14400 1 EDT}
+    {3750645600 -18000 0 EST}
+    {3761535600 -14400 1 EDT}
+    {3782095200 -18000 0 EST}
+    {3792985200 -14400 1 EDT}
+    {3813544800 -18000 0 EST}
+    {3824434800 -14400 1 EDT}
+    {3844994400 -18000 0 EST}
+    {3855884400 -14400 1 EDT}
+    {3876444000 -18000 0 EST}
+    {3887334000 -14400 1 EDT}
+    {3907893600 -18000 0 EST}
+    {3919388400 -14400 1 EDT}
+    {3939948000 -18000 0 EST}
+    {3950838000 -14400 1 EDT}
+    {3971397600 -18000 0 EST}
+    {3982287600 -14400 1 EDT}
+    {4002847200 -18000 0 EST}
+    {4013737200 -14400 1 EDT}
+    {4034296800 -18000 0 EST}
+    {4045186800 -14400 1 EDT}
+    {4065746400 -18000 0 EST}
+    {4076636400 -14400 1 EDT}
+    {4097196000 -18000 0 EST}
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/Kentucky/Monticello
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/Kentucky/Monticello	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/Kentucky/Monticello	(revision 3762)
@@ -0,0 +1,279 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Kentucky/Monticello) {
+    {-9223372036854775808 -20364 0 LMT}
+    {-2717647200 -21600 0 CST}
+    {-1633276800 -18000 1 CDT}
+    {-1615136400 -21600 0 CST}
+    {-1601827200 -18000 1 CDT}
+    {-1583686800 -21600 0 CST}
+    {-880214400 -18000 1 CWT}
+    {-769395600 -18000 1 CPT}
+    {-765392400 -21600 0 CST}
+    {-757360800 -21600 0 CST}
+    {-63136800 -21600 0 CST}
+    {-52934400 -18000 1 CDT}
+    {-37213200 -21600 0 CST}
+    {-21484800 -18000 1 CDT}
+    {-5763600 -21600 0 CST}
+    {9964800 -18000 1 CDT}
+    {25686000 -21600 0 CST}
+    {41414400 -18000 1 CDT}
+    {57740400 -21600 0 CST}
+    {73468800 -18000 1 CDT}
+    {89190000 -21600 0 CST}
+    {104918400 -18000 1 CDT}
+    {120639600 -21600 0 CST}
+    {126691200 -18000 1 CDT}
+    {152089200 -21600 0 CST}
+    {162374400 -18000 1 CDT}
+    {183538800 -21600 0 CST}
+    {199267200 -18000 1 CDT}
+    {215593200 -21600 0 CST}
+    {230716800 -18000 1 CDT}
+    {247042800 -21600 0 CST}
+    {262771200 -18000 1 CDT}
+    {278492400 -21600 0 CST}
+    {294220800 -18000 1 CDT}
+    {309942000 -21600 0 CST}
+    {325670400 -18000 1 CDT}
+    {341391600 -21600 0 CST}
+    {357120000 -18000 1 CDT}
+    {372841200 -21600 0 CST}
+    {388569600 -18000 1 CDT}
+    {404895600 -21600 0 CST}
+    {420019200 -18000 1 CDT}
+    {436345200 -21600 0 CST}
+    {452073600 -18000 1 CDT}
+    {467794800 -21600 0 CST}
+    {483523200 -18000 1 CDT}
+    {499244400 -21600 0 CST}
+    {514972800 -18000 1 CDT}
+    {530694000 -21600 0 CST}
+    {544608000 -18000 1 CDT}
+    {562143600 -21600 0 CST}
+    {576057600 -18000 1 CDT}
+    {594198000 -21600 0 CST}
+    {607507200 -18000 1 CDT}
+    {625647600 -21600 0 CST}
+    {638956800 -18000 1 CDT}
+    {657097200 -21600 0 CST}
+    {671011200 -18000 1 CDT}
+    {688546800 -21600 0 CST}
+    {702460800 -18000 1 CDT}
+    {719996400 -21600 0 CST}
+    {733910400 -18000 1 CDT}
+    {752050800 -21600 0 CST}
+    {765360000 -18000 1 CDT}
+    {783500400 -21600 0 CST}
+    {796809600 -18000 1 CDT}
+    {814950000 -21600 0 CST}
+    {828864000 -18000 1 CDT}
+    {846399600 -21600 0 CST}
+    {860313600 -18000 1 CDT}
+    {877849200 -21600 0 CST}
+    {891763200 -18000 1 CDT}
+    {909298800 -21600 0 CST}
+    {923212800 -18000 1 CDT}
+    {941353200 -21600 0 CST}
+    {954662400 -18000 1 CDT}
+    {972806400 -18000 0 EST}
+    {986108400 -14400 1 EDT}
+    {1004248800 -18000 0 EST}
+    {1018162800 -14400 1 EDT}
+    {1035698400 -18000 0 EST}
+    {1049612400 -14400 1 EDT}
+    {1067148000 -18000 0 EST}
+    {1081062000 -14400 1 EDT}
+    {1099202400 -18000 0 EST}
+    {1112511600 -14400 1 EDT}
+    {1130652000 -18000 0 EST}
+    {1143961200 -14400 1 EDT}
+    {1162101600 -18000 0 EST}
+    {1173596400 -14400 1 EDT}
+    {1194156000 -18000 0 EST}
+    {1205046000 -14400 1 EDT}
+    {1225605600 -18000 0 EST}
+    {1236495600 -14400 1 EDT}
+    {1257055200 -18000 0 EST}
+    {1268550000 -14400 1 EDT}
+    {1289109600 -18000 0 EST}
+    {1299999600 -14400 1 EDT}
+    {1320559200 -18000 0 EST}
+    {1331449200 -14400 1 EDT}
+    {1352008800 -18000 0 EST}
+    {1362898800 -14400 1 EDT}
+    {1383458400 -18000 0 EST}
+    {1394348400 -14400 1 EDT}
+    {1414908000 -18000 0 EST}
+    {1425798000 -14400 1 EDT}
+    {1446357600 -18000 0 EST}
+    {1457852400 -14400 1 EDT}
+    {1478412000 -18000 0 EST}
+    {1489302000 -14400 1 EDT}
+    {1509861600 -18000 0 EST}
+    {1520751600 -14400 1 EDT}
+    {1541311200 -18000 0 EST}
+    {1552201200 -14400 1 EDT}
+    {1572760800 -18000 0 EST}
+    {1583650800 -14400 1 EDT}
+    {1604210400 -18000 0 EST}
+    {1615705200 -14400 1 EDT}
+    {1636264800 -18000 0 EST}
+    {1647154800 -14400 1 EDT}
+    {1667714400 -18000 0 EST}
+    {1678604400 -14400 1 EDT}
+    {1699164000 -18000 0 EST}
+    {1710054000 -14400 1 EDT}
+    {1730613600 -18000 0 EST}
+    {1741503600 -14400 1 EDT}
+    {1762063200 -18000 0 EST}
+    {1772953200 -14400 1 EDT}
+    {1793512800 -18000 0 EST}
+    {1805007600 -14400 1 EDT}
+    {1825567200 -18000 0 EST}
+    {1836457200 -14400 1 EDT}
+    {1857016800 -18000 0 EST}
+    {1867906800 -14400 1 EDT}
+    {1888466400 -18000 0 EST}
+    {1899356400 -14400 1 EDT}
+    {1919916000 -18000 0 EST}
+    {1930806000 -14400 1 EDT}
+    {1951365600 -18000 0 EST}
+    {1962860400 -14400 1 EDT}
+    {1983420000 -18000 0 EST}
+    {1994310000 -14400 1 EDT}
+    {2014869600 -18000 0 EST}
+    {2025759600 -14400 1 EDT}
+    {2046319200 -18000 0 EST}
+    {2057209200 -14400 1 EDT}
+    {2077768800 -18000 0 EST}
+    {2088658800 -14400 1 EDT}
+    {2109218400 -18000 0 EST}
+    {2120108400 -14400 1 EDT}
+    {2140668000 -18000 0 EST}
+    {2152162800 -14400 1 EDT}
+    {2172722400 -18000 0 EST}
+    {2183612400 -14400 1 EDT}
+    {2204172000 -18000 0 EST}
+    {2215062000 -14400 1 EDT}
+    {2235621600 -18000 0 EST}
+    {2246511600 -14400 1 EDT}
+    {2267071200 -18000 0 EST}
+    {2277961200 -14400 1 EDT}
+    {2298520800 -18000 0 EST}
+    {2309410800 -14400 1 EDT}
+    {2329970400 -18000 0 EST}
+    {2341465200 -14400 1 EDT}
+    {2362024800 -18000 0 EST}
+    {2372914800 -14400 1 EDT}
+    {2393474400 -18000 0 EST}
+    {2404364400 -14400 1 EDT}
+    {2424924000 -18000 0 EST}
+    {2435814000 -14400 1 EDT}
+    {2456373600 -18000 0 EST}
+    {2467263600 -14400 1 EDT}
+    {2487823200 -18000 0 EST}
+    {2499318000 -14400 1 EDT}
+    {2519877600 -18000 0 EST}
+    {2530767600 -14400 1 EDT}
+    {2551327200 -18000 0 EST}
+    {2562217200 -14400 1 EDT}
+    {2582776800 -18000 0 EST}
+    {2593666800 -14400 1 EDT}
+    {2614226400 -18000 0 EST}
+    {2625116400 -14400 1 EDT}
+    {2645676000 -18000 0 EST}
+    {2656566000 -14400 1 EDT}
+    {2677125600 -18000 0 EST}
+    {2688620400 -14400 1 EDT}
+    {2709180000 -18000 0 EST}
+    {2720070000 -14400 1 EDT}
+    {2740629600 -18000 0 EST}
+    {2751519600 -14400 1 EDT}
+    {2772079200 -18000 0 EST}
+    {2782969200 -14400 1 EDT}
+    {2803528800 -18000 0 EST}
+    {2814418800 -14400 1 EDT}
+    {2834978400 -18000 0 EST}
+    {2846473200 -14400 1 EDT}
+    {2867032800 -18000 0 EST}
+    {2877922800 -14400 1 EDT}
+    {2898482400 -18000 0 EST}
+    {2909372400 -14400 1 EDT}
+    {2929932000 -18000 0 EST}
+    {2940822000 -14400 1 EDT}
+    {2961381600 -18000 0 EST}
+    {2972271600 -14400 1 EDT}
+    {2992831200 -18000 0 EST}
+    {3003721200 -14400 1 EDT}
+    {3024280800 -18000 0 EST}
+    {3035775600 -14400 1 EDT}
+    {3056335200 -18000 0 EST}
+    {3067225200 -14400 1 EDT}
+    {3087784800 -18000 0 EST}
+    {3098674800 -14400 1 EDT}
+    {3119234400 -18000 0 EST}
+    {3130124400 -14400 1 EDT}
+    {3150684000 -18000 0 EST}
+    {3161574000 -14400 1 EDT}
+    {3182133600 -18000 0 EST}
+    {3193023600 -14400 1 EDT}
+    {3213583200 -18000 0 EST}
+    {3225078000 -14400 1 EDT}
+    {3245637600 -18000 0 EST}
+    {3256527600 -14400 1 EDT}
+    {3277087200 -18000 0 EST}
+    {3287977200 -14400 1 EDT}
+    {3308536800 -18000 0 EST}
+    {3319426800 -14400 1 EDT}
+    {3339986400 -18000 0 EST}
+    {3350876400 -14400 1 EDT}
+    {3371436000 -18000 0 EST}
+    {3382930800 -14400 1 EDT}
+    {3403490400 -18000 0 EST}
+    {3414380400 -14400 1 EDT}
+    {3434940000 -18000 0 EST}
+    {3445830000 -14400 1 EDT}
+    {3466389600 -18000 0 EST}
+    {3477279600 -14400 1 EDT}
+    {3497839200 -18000 0 EST}
+    {3508729200 -14400 1 EDT}
+    {3529288800 -18000 0 EST}
+    {3540178800 -14400 1 EDT}
+    {3560738400 -18000 0 EST}
+    {3572233200 -14400 1 EDT}
+    {3592792800 -18000 0 EST}
+    {3603682800 -14400 1 EDT}
+    {3624242400 -18000 0 EST}
+    {3635132400 -14400 1 EDT}
+    {3655692000 -18000 0 EST}
+    {3666582000 -14400 1 EDT}
+    {3687141600 -18000 0 EST}
+    {3698031600 -14400 1 EDT}
+    {3718591200 -18000 0 EST}
+    {3730086000 -14400 1 EDT}
+    {3750645600 -18000 0 EST}
+    {3761535600 -14400 1 EDT}
+    {3782095200 -18000 0 EST}
+    {3792985200 -14400 1 EDT}
+    {3813544800 -18000 0 EST}
+    {3824434800 -14400 1 EDT}
+    {3844994400 -18000 0 EST}
+    {3855884400 -14400 1 EDT}
+    {3876444000 -18000 0 EST}
+    {3887334000 -14400 1 EDT}
+    {3907893600 -18000 0 EST}
+    {3919388400 -14400 1 EDT}
+    {3939948000 -18000 0 EST}
+    {3950838000 -14400 1 EDT}
+    {3971397600 -18000 0 EST}
+    {3982287600 -14400 1 EDT}
+    {4002847200 -18000 0 EST}
+    {4013737200 -14400 1 EDT}
+    {4034296800 -18000 0 EST}
+    {4045186800 -14400 1 EDT}
+    {4065746400 -18000 0 EST}
+    {4076636400 -14400 1 EDT}
+    {4097196000 -18000 0 EST}
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/Kentucky/Louisville
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/Kentucky/Louisville	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/Tcl/lib/tcl8.6/tzdata/America/Kentucky/Louisville	(revision 3762)
@@ -0,0 +1,311 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:America/Kentucky/Louisville) {
+    {-9223372036854775808 -20582 0 LMT}
+    {-2717647200 -21600 0 CST}
+    {-1633276800 -18000 1 CDT}
+    {-1615136400 -21600 0 CST}
+    {-1601827200 -18000 1 CDT}
+    {-1583686800 -21600 0 CST}
+    {-1546279200 -21600 0 CST}
+    {-1535904000 -18000 1 CDT}
+    {-1525280400 -21600 0 CST}
+    {-905097600 -18000 1 CDT}
+    {-891795600 -21600 0 CST}
+    {-883591200 -21600 0 CST}
+    {-880214400 -18000 1 CWT}
+    {-769395600 -18000 1 CPT}
+    {-765392400 -21600 0 CST}
+    {-757360800 -21600 0 CST}
+    {-747251940 -18000 1 CDT}
+    {-744224400 -21600 0 CST}
+    {-620841600 -18000 1 CDT}
+    {-608144400 -21600 0 CST}
+    {-589392000 -18000 1 CDT}
+    {-576090000 -21600 0 CST}
+    {-557942400 -18000 1 CDT}
+    {-544640400 -21600 0 CST}
+    {-526492800 -18000 1 CDT}
+    {-513190800 -21600 0 CST}
+    {-495043200 -18000 1 CDT}
+    {-481741200 -21600 0 CST}
+    {-463593600 -18000 1 CDT}
+    {-450291600 -21600 0 CST}
+    {-431539200 -18000 1 CDT}
+    {-415818000 -21600 0 CST}
+    {-400089600 -18000 1 CDT}
+    {-384368400 -21600 0 CST}
+    {-368640000 -18000 1 CDT}
+    {-352918800 -21600 0 CST}
+    {-337190400 -18000 1 CDT}
+    {-321469200 -21600 0 CST}
+    {-305740800 -18000 1 CDT}
+    {-289414800 -21600 0 CST}
+    {-273686400 -18000 1 CDT}
+    {-266428800 -18000 0 EST}
+    {-63140400 -18000 0 EST}
+    {-52938000 -14400 1 EDT}
+    {-37216800 -18000 0 EST}
+    {-21488400 -14400 1 EDT}
+    {-5767200 -18000 0 EST}
+    {9961200 -14400 1 EDT}
+    {25682400 -18000 0 EST}
+    {41410800 -14400 1 EDT}
+    {57736800 -18000 0 EST}
+    {73465200 -14400 1 EDT}
+    {89186400 -18000 0 EST}
+    {104914800 -14400 1 EDT}
+    {120636000 -18000 0 EST}
+    {126687600 -18000 1 CDT}
+    {152089200 -18000 0 EST}
+    {162370800 -14400 1 EDT}
+    {183535200 -18000 0 EST}
+    {199263600 -14400 1 EDT}
+    {215589600 -18000 0 EST}
+    {230713200 -14400 1 EDT}
+    {247039200 -18000 0 EST}
+    {262767600 -14400 1 EDT}
+    {278488800 -18000 0 EST}
+    {294217200 -14400 1 EDT}
+    {309938400 -18000 0 EST}
+    {325666800 -14400 1 EDT}
+    {341388000 -18000 0 EST}
+    {357116400 -14400 1 EDT}
+    {372837600 -18000 0 EST}
+    {388566000 -14400 1 EDT}
+    {404892000 -18000 0 EST}
+    {420015600 -14400 1 EDT}
+    {436341600 -18000 0 EST}
+    {452070000 -14400 1 EDT}
+    {467791200 -18000 0 EST}
+    {483519600 -14400 1 EDT}
+    {499240800 -18000 0 EST}
+    {514969200 -14400 1 EDT}
+    {530690400 -18000 0 EST}
+    {544604400 -14400 1 EDT}
+    {562140000 -18000 0 EST}
+    {576054000 -14400 1 EDT}
+    {594194400 -18000 0 EST}
+    {607503600 -14400 1 EDT}
+    {625644000 -18000 0 EST}
+    {638953200 -14400 1 EDT}
+    {657093600 -18000 0 EST}
+    {671007600 -14400 1 EDT}
+    {688543200 -18000 0 EST}
+    {702457200 -14400 1 EDT}
+    {719992800 -18000 0 EST}
+    {733906800 -14400 1 EDT}
+    {752047200 -18000 0 EST}
+    {765356400 -14400 1 EDT}
+    {783496800 -18000 0 EST}
+    {796806000 -14400 1 EDT}
+    {814946400 -18000 0 EST}
+    {828860400 -14400 1 EDT}
+    {846396000 -18000 0 EST}
+    {860310000 -14400 1 EDT}
+    {877845600 -18000 0 EST}
+    {891759600 -14400 1 EDT}
+    {909295200 -18000 0 EST}
+    {923209200 -14400 1 EDT}
+    {941349600 -18000 0 EST}
+    {954658800 -14400 1 EDT}
+    {972799200 -18000 0 EST}
+    {986108400 -14400 1 EDT}
+    {1004248800 -18000 0 EST}
+    {1018162800 -14400 1 EDT}
+    {1035698400 -18000 0 EST}
+    {1049612400 -14400 1 EDT}
+    {1067148000 -18000 0 EST}
+    {1081062000 -14400 1 EDT}
+    {1099202400 -18000 0 EST}
+    {1112511600 -14400 1 EDT}
+    {1130652000 -18000 0 EST}
+    {1143961200 -14400 1 EDT}
+    {1162101600 -18000 0 EST}
+    {1173596400 -14400 1 EDT}
+    {1194156000 -18000 0 EST}
+    {1205046000 -14400 1 EDT}
+    {1225605600 -18000 0 EST}
+    {1236495600 -14400 1 EDT}
+    {1257055200 -18000 0 EST}
+    {1268550000 -14400 1 EDT}
+    {1289109600 -18000 0 EST}
+    {1299999600 -14400 1 EDT}
+    {1320559200 -18000 0 EST}
+    {1331449200 -14400 1 EDT}
+    {1352008800 -18000 0 EST}
+    {1362898800 -14400 1 EDT}
+    {1383458400 -18000 0 EST}
+    {1394348400 -14400 1 EDT}
+    {1414908000 -18000 0 EST}
+    {1425798000 -14400 1 EDT}
+    {1446357600 -18000 0 EST}
+    {1457852400 -14400 1 EDT}
+    {1478412000 -18000 0 EST}
+    {1489302000 -14400 1 EDT}
+    {1509861600 -18000 0 EST}
+    {1520751600 -14400 1 EDT}
+    {1541311200 -18000 0 EST}
+    {1552201200 -14400 1 EDT}
+    {1572760800 -18000 0 EST}
+    {1583650800 -14400 1 EDT}
+    {1604210400 -18000 0 EST}
+    {1615705200 -14400 1 EDT}
+    {1636264800 -18000 0 EST}
+    {1647154800 -14400 1 EDT}
+    {1667714400 -18000 0 EST}
+    {1678604400 -14400 1 EDT}
+    {1699164000 -18000 0 EST}
+    {1710054000 -14400 1 EDT}
+    {1730613600 -18000 0 EST}
+    {1741503600 -14400 1 EDT}
+    {1762063200 -18000 0 EST}
+    {1772953200 -14400 1 EDT}
+    {1793512800 -18000 0 EST}
+    {1805007600 -14400 1 EDT}
+    {1825567200 -18000 0 EST}
+    {1836457200 -14400 1 EDT}
+    {1857016800 -18000 0 EST}
+    {1867906800 -14400 1 EDT}
+    {1888466400 -18000 0 EST}
+    {1899356400 -14400 1 EDT}
+    {1919916000 -18000 0 EST}
+    {1930806000 -14400 1 EDT}
+    {1951365600 -18000 0 EST}
+    {1962860400 -14400 1 EDT}
+    {1983420000 -18000 0 EST}
+    {1994310000 -14400 1 EDT}
+    {2014869600 -18000 0 EST}
+    {2025759600 -14400 1 EDT}
+    {2046319200 -18000 0 EST}
+    {2057209200 -14400 1 EDT}
+    {2077768800 -18000 0 EST}
+    {2088658800 -14400 1 EDT}
+    {2109218400 -18000 0 EST}
+    {2120108400 -14400 1 EDT}
+    {2140668000 -18000 0 EST}
+    {2152162800 -14400 1 EDT}
+    {2172722400 -18000 0 EST}
+    {2183612400 -14400 1 EDT}
+    {2204172000 -18000 0 EST}
+    {2215062000 -14400 1 EDT}
+    {2235621600 -18000 0 EST}
+    {2246511600 -14400 1 EDT}
+    {2267071200 -18000 0 EST}
+    {2277961200 -14400 1 EDT}
+    {2298520800 -18000 0 EST}
+    {2309410800 -14400 1 EDT}
+    {2329970400 -18000 0 EST}
+    {2341465200 -14400 1 EDT}
+    {2362024800 -18000 0 EST}
+    {2372914800 -14400 1 EDT}
+    {2393474400 -18000 0 EST}
+    {2404364400 -14400 1 EDT}
+    {2424924000 -18000 0 EST}
+    {2435814000 -14400 1 EDT}
+    {2456373600 -18000 0 EST}
+    {2467263600 -14400 1 EDT}
+    {2487823200 -18000 0 EST}
+    {2499318000 -14400 1 EDT}
+    {2519877600 -18000 0 EST}
+    {2530767600 -14400 1 EDT}
+    {2551327200 -18000 0 EST}
+    {2562217200 -14400 1 EDT}
+    {2582776800 -18000 0 EST}
+    {2593666800 -14400 1 EDT}
+    {2614226400 -18000 0 EST}
+    {2625116400 -14400 1 EDT}
+    {2645676000 -18000 0 EST}
+    {2656566000 -14400 1 EDT}
+    {2677125600 -18000 0 EST}
+    {2688620400 -14400 1 EDT}
+    {2709180000 -18000 0 EST}
+    {2720070000 -14400 1 EDT}
+    {2740629600 -18000 0 EST}
+    {2751519600 -14400 1 EDT}
+    {2772079200 -18000 0 EST}
+    {2782969200 -14400 1 EDT}
+    {2803528800 -18000 0 EST}
+    {2814418800 -14400 1 EDT}
+    {2834978400 -18000 0 EST}
+    {2846473200 -14400 1 EDT}
+    {2867032800 -18000 0 EST}
+    {2877922800 -14400 1 EDT}
+    {2898482400 -18000 0 EST}
+    {2909372400 -14400 1 EDT}
+    {2929932000 -18000 0 EST}
+    {2940822000 -14400 1 EDT}
+    {2961381600 -18000 0 EST}
+    {2972271600 -14400 1 EDT}
+    {2992831200 -18000 0 EST}
+    {3003721200 -14400 1 EDT}
+    {3024280800 -18000 0 EST}
+    {3035775600 -14400 1 EDT}
+    {3056335200 -18000 0 EST}
+    {3067225200 -14400 1 EDT}
+    {3087784800 -18000 0 EST}
+    {3098674800 -14400 1 EDT}
+    {3119234400 -18000 0 EST}
+    {3130124400 -14400 1 EDT}
+    {3150684000 -18000 0 EST}
+    {3161574000 -14400 1 EDT}
+    {3182133600 -18000 0 EST}
+    {3193023600 -14400 1 EDT}
+    {3213583200 -18000 0 EST}
+    {3225078000 -14400 1 EDT}
+    {3245637600 -18000 0 EST}
+    {3256527600 -14400 1 EDT}
+    {3277087200 -18000 0 EST}
+    {3287977200 -14400 1 EDT}
+    {3308536800 -18000 0 EST}
+    {3319426800 -14400 1 EDT}
+    {3339986400 -18000 0 EST}
+    {3350876400 -14400 1 EDT}
+    {3371436000 -18000 0 EST}
+    {3382930800 -14400 1 EDT}
+    {3403490400 -18000 0 EST}
+    {3414380400 -14400 1 EDT}
+    {3434940000 -18000 0 EST}
+    {3445830000 -14400 1 EDT}
+    {3466389600 -18000 0 EST}
+    {3477279600 -14400 1 EDT}
+    {3497839200 -18000 0 EST}
+    {3508729200 -14400 1 EDT}
+    {3529288800 -18000 0 EST}
+    {3540178800 -14400 1 EDT}
+    {3560738400 -18000 0 EST}
+    {3572233200 -14400 1 EDT}
+    {3592792800 -18000 0 EST}
+    {3603682800 -14400 1 EDT}
+    {3624242400 -18000 0 EST}
+    {3635132400 -14400 1 EDT}
+    {3655692000 -18000 0 EST}
+    {3666582000 -14400 1 EDT}
+    {3687141600 -18000 0 EST}
+    {3698031600 -14400 1 EDT}
+    {3718591200 -18000 0 EST}
+    {3730086000 -14400 1 EDT}
+    {3750645600 -18000 0 EST}
+    {3761535600 -14400 1 EDT}
+    {3782095200 -18000 0 EST}
+    {3792985200 -14400 1 EDT}
+    {3813544800 -18000 0 EST}
+    {3824434800 -14400 1 EDT}
+    {3844994400 -18000 0 EST}
+    {3855884400 -14400 1 EDT}
+    {3876444000 -18000 0 EST}
+    {3887334000 -14400 1 EDT}
+    {3907893600 -18000 0 EST}
+    {3919388400 -14400 1 EDT}
+    {3939948000 -18000 0 EST}
+    {3950838000 -14400 1 EDT}
+    {3971397600 -18000 0 EST}
+    {3982287600 -14400 1 EDT}
+    {4002847200 -18000 0 EST}
+    {4013737200 -14400 1 EDT}
+    {4034296800 -18000 0 EST}
+    {4045186800 -14400 1 EDT}
+    {4065746400 -18000 0 EST}
+    {4076636400 -14400 1 EDT}
+    {4097196000 -18000 0 EST}
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/share/zoneinfo/America/Indiana/Knox
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/share/zoneinfo/America/Indiana/Knox
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/share/zoneinfo/America/Indiana/Winamac
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/share/zoneinfo/America/Indiana/Winamac
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/share/zoneinfo/America/Indiana/Petersburg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/share/zoneinfo/America/Indiana/Petersburg
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/share/zoneinfo/America/Indiana/Marengo
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/share/zoneinfo/America/Indiana/Marengo
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/share/zoneinfo/America/Indiana/Tell_City
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/share/zoneinfo/America/Indiana/Tell_City
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/share/zoneinfo/America/Indiana/Vincennes
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/share/zoneinfo/America/Indiana/Vincennes
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/share/zoneinfo/America/Indiana/Indianapolis
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/share/zoneinfo/America/Indiana/Indianapolis
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/share/zoneinfo/America/Indiana/Vevay
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/share/zoneinfo/America/Indiana/Vevay
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/share/zoneinfo/America/Kentucky/Monticello
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/share/zoneinfo/America/Kentucky/Monticello
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/share/zoneinfo/America/Kentucky/Louisville
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/share/zoneinfo/America/Kentucky/Louisville
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/share/zoneinfo/America/Argentina/Salta
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/share/zoneinfo/America/Argentina/Salta
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/share/zoneinfo/America/Argentina/Jujuy
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/share/zoneinfo/America/Argentina/Jujuy
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/share/zoneinfo/America/Argentina/Rio_Gallegos
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/share/zoneinfo/America/Argentina/Rio_Gallegos
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/share/zoneinfo/America/Argentina/ComodRivadavia
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/share/zoneinfo/America/Argentina/ComodRivadavia
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/share/zoneinfo/America/Argentina/Cordoba
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/share/zoneinfo/America/Argentina/Cordoba
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/share/zoneinfo/America/Argentina/Catamarca
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/share/zoneinfo/America/Argentina/Catamarca
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/share/zoneinfo/America/Argentina/Tucuman
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/share/zoneinfo/America/Argentina/Tucuman
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/share/zoneinfo/America/Argentina/Mendoza
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/share/zoneinfo/America/Argentina/Mendoza
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/share/zoneinfo/America/Argentina/San_Luis
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/share/zoneinfo/America/Argentina/San_Luis
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/share/zoneinfo/America/Argentina/Buenos_Aires
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/share/zoneinfo/America/Argentina/Buenos_Aires
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/share/zoneinfo/America/Argentina/San_Juan
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/share/zoneinfo/America/Argentina/San_Juan
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/share/zoneinfo/America/Argentina/Ushuaia
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/share/zoneinfo/America/Argentina/Ushuaia
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/share/zoneinfo/America/Argentina/La_Rioja
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/share/zoneinfo/America/Argentina/La_Rioja
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/share/zoneinfo/America/North_Dakota/Beulah
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/share/zoneinfo/America/North_Dakota/Beulah
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/share/zoneinfo/America/North_Dakota/Center
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/share/zoneinfo/America/North_Dakota/Center
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/share/zoneinfo/America/North_Dakota/New_Salem
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/share/zoneinfo/America/North_Dakota/New_Salem
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/tests/Examples/splines-Ex.Rout.save
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/tests/Examples/splines-Ex.Rout.save	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/tests/Examples/splines-Ex.Rout.save	(revision 3762)
@@ -0,0 +1,602 @@
+
+R Under development (unstable) (2022-03-19 r81942) -- "Unsuffered Consequences"
+Copyright (C) 2022 The R Foundation for Statistical Computing
+Platform: x86_64-pc-linux-gnu (64-bit)
+
+R is free software and comes with ABSOLUTELY NO WARRANTY.
+You are welcome to redistribute it under certain conditions.
+Type 'license()' or 'licence()' for distribution details.
+
+  Natural language support but running in an English locale
+
+R is a collaborative project with many contributors.
+Type 'contributors()' for more information and
+'citation()' on how to cite R or R packages in publications.
+
+Type 'demo()' for some demos, 'help()' for on-line help, or
+'help.start()' for an HTML browser interface to help.
+Type 'q()' to quit R.
+
+> pkgname <- "splines"
+> source(file.path(R.home("share"), "R", "examples-header.R"))
+> options(warn = 1)
+> library('splines')
+> 
+> base::assign(".oldSearch", base::search(), pos = 'CheckExEnv')
+> base::assign(".old_wd", base::getwd(), pos = 'CheckExEnv')
+> cleanEx()
+> nameEx("asVector")
+> ### * asVector
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: asVector
+> ### Title: Coerce an Object to a Vector
+> ### Aliases: asVector
+> ### Keywords: models
+> 
+> ### ** Examples
+> 
+> require(stats)
+> ispl <- interpSpline( weight ~ height,  women )
+> pred <- predict(ispl)
+> class(pred)
+[1] "xyVector"
+> utils::str(pred)
+List of 2
+ $ x: num [1:51] 58 58.3 58.6 58.8 59.1 ...
+ $ y: num [1:51] 115 115 116 117 117 ...
+ - attr(*, "class")= chr "xyVector"
+> asVector(pred)
+ [1] 115.0000 115.4908 116.0170 116.6137 117.3153 118.1214 118.9894 119.8747
+ [9] 120.7384 121.5787 122.4078 123.2380 124.0759 124.9181 125.7601 126.5980
+[17] 127.4340 128.2735 129.1220 129.9792 130.8301 131.6572 132.4454 133.2228
+[25] 134.0528 135.0000 136.1000 137.2727 138.4090 139.4026 140.2416 141.0276
+[33] 141.8690 142.8564 143.9707 145.1507 146.3356 147.4868 148.6046 149.6935
+[41] 150.7604 151.8353 152.9613 154.1817 155.5178 156.9329 158.3808 159.8173
+[49] 161.2269 162.6180 164.0000
+> 
+> 
+> 
+> cleanEx()
+> nameEx("backSpline")
+> ### * backSpline
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: backSpline
+> ### Title: Monotone Inverse Spline
+> ### Aliases: backSpline
+> ### Keywords: models
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> ispl <- interpSpline( women$height, women$weight )
+> bspl <- backSpline( ispl )
+> plot( bspl )                   # plots over the range of the knots
+> points( women$weight, women$height )
+> 
+> 
+> 
+> cleanEx()
+> nameEx("bs")
+> ### * bs
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: bs
+> ### Title: B-Spline Basis for Polynomial Splines
+> ### Aliases: bs
+> ### Keywords: smooth
+> 
+> ### ** Examples
+> 
+> require(stats); require(graphics)
+> bs(women$height, df = 5)
+                 1           2           3            4           5
+ [1,] 0.000000e+00 0.000000000 0.000000000 0.000000e+00 0.000000000
+ [2,] 4.534439e-01 0.059857872 0.001639942 0.000000e+00 0.000000000
+ [3,] 5.969388e-01 0.203352770 0.013119534 0.000000e+00 0.000000000
+ [4,] 5.338010e-01 0.376366618 0.044278426 0.000000e+00 0.000000000
+ [5,] 3.673469e-01 0.524781341 0.104956268 0.000000e+00 0.000000000
+ [6,] 2.001640e-01 0.595025510 0.204719388 9.110787e-05 0.000000000
+ [7,] 9.110787e-02 0.566326531 0.336734694 5.830904e-03 0.000000000
+ [8,] 3.125000e-02 0.468750000 0.468750000 3.125000e-02 0.000000000
+ [9,] 5.830904e-03 0.336734694 0.566326531 9.110787e-02 0.000000000
+[10,] 9.110787e-05 0.204719388 0.595025510 2.001640e-01 0.000000000
+[11,] 0.000000e+00 0.104956268 0.524781341 3.673469e-01 0.002915452
+[12,] 0.000000e+00 0.044278426 0.376366618 5.338010e-01 0.045553936
+[13,] 0.000000e+00 0.013119534 0.203352770 5.969388e-01 0.186588921
+[14,] 0.000000e+00 0.001639942 0.059857872 4.534439e-01 0.485058309
+[15,] 0.000000e+00 0.000000000 0.000000000 0.000000e+00 1.000000000
+attr(,"degree")
+[1] 3
+attr(,"knots")
+33.33333% 66.66667% 
+ 62.66667  67.33333 
+attr(,"Boundary.knots")
+[1] 58 72
+attr(,"intercept")
+[1] FALSE
+attr(,"class")
+[1] "bs"     "basis"  "matrix"
+> summary(fm1 <- lm(weight ~ bs(height, df = 5), data = women))
+
+Call:
+lm(formula = weight ~ bs(height, df = 5), data = women)
+
+Residuals:
+     Min       1Q   Median       3Q      Max 
+-0.31764 -0.13441  0.03922  0.11096  0.35086 
+
+Coefficients:
+                    Estimate Std. Error t value Pr(>|t|)    
+(Intercept)         114.8799     0.2167 530.146  < 2e-16 ***
+bs(height, df = 5)1   3.4657     0.4595   7.543 3.53e-05 ***
+bs(height, df = 5)2  13.0300     0.3965  32.860 1.10e-10 ***
+bs(height, df = 5)3  27.6161     0.4571  60.415 4.70e-13 ***
+bs(height, df = 5)4  40.8481     0.3866 105.669 3.09e-15 ***
+bs(height, df = 5)5  49.1296     0.3090 158.979  < 2e-16 ***
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+
+Residual standard error: 0.2276 on 9 degrees of freedom
+Multiple R-squared:  0.9999,	Adjusted R-squared:  0.9998 
+F-statistic: 1.298e+04 on 5 and 9 DF,  p-value: < 2.2e-16
+
+> 
+> ## example of safe prediction
+> plot(women, xlab = "Height (in)", ylab = "Weight (lb)")
+> ht <- seq(57, 73, length.out = 200)
+> lines(ht, predict(fm1, data.frame(height = ht)))
+Warning in bs(height, degree = 3L, knots = c(`33.33333%` = 62.6666666666667,  :
+  some 'x' values beyond boundary knots may cause ill-conditioned bases
+> ## Don't show: 
+> ## Consistency:
+> x <- c(1:3, 5:6)
+> stopifnot(identical(bs(x), bs(x, df = 3)),
++           identical(bs(x, df = 4), bs(x, df = 4, knots = NULL)), # not true till 2.15.2
++           !is.null(kk <- attr(bs(x), "knots")), # not true till 1.5.1
++           length(kk) == 0)
+> ## End(Don't show)
+> 
+> 
+> cleanEx()
+> nameEx("interpSpline")
+> ### * interpSpline
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: interpSpline
+> ### Title: Create an Interpolation Spline
+> ### Aliases: interpSpline
+> ### Keywords: models
+> 
+> ### ** Examples
+> 
+> require(graphics); require(stats)
+> ispl <- interpSpline( women$height, women$weight )
+> ispl2 <- interpSpline( weight ~ height,  women )
+> # ispl and ispl2 should be the same
+> plot( predict( ispl, seq( 55, 75, length.out = 51 ) ), type = "l" )
+> points( women$height, women$weight )
+> plot( ispl )    # plots over the range of the knots
+> points( women$height, women$weight )
+> splineKnots( ispl )
+ [1] 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
+> 
+> 
+> 
+> cleanEx()
+> nameEx("ns")
+> ### * ns
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: ns
+> ### Title: Generate a Basis Matrix for Natural Cubic Splines
+> ### Aliases: ns
+> ### Keywords: smooth
+> 
+> ### ** Examples
+> 
+> require(stats); require(graphics)
+> ns(women$height, df = 5)
+                 1            2           3          4             5
+ [1,] 0.000000e+00 0.000000e+00  0.00000000 0.00000000  0.0000000000
+ [2,] 7.592323e-03 0.000000e+00 -0.08670223 0.26010669 -0.1734044626
+ [3,] 6.073858e-02 0.000000e+00 -0.15030440 0.45091320 -0.3006088020
+ [4,] 2.047498e-01 6.073858e-05 -0.16778345 0.50335034 -0.3355668952
+ [5,] 4.334305e-01 1.311953e-02 -0.13244035 0.39732106 -0.2648807067
+ [6,] 6.256681e-01 8.084305e-02 -0.07399720 0.22199159 -0.1479943948
+ [7,] 6.477162e-01 2.468416e-01 -0.02616007 0.07993794 -0.0532919575
+ [8,] 4.791667e-01 4.791667e-01  0.01406302 0.02031093 -0.0135406187
+ [9,] 2.468416e-01 6.477162e-01  0.09733619 0.02286023 -0.0152401533
+[10,] 8.084305e-02 6.256681e-01  0.27076826 0.06324188 -0.0405213106
+[11,] 1.311953e-02 4.334305e-01  0.48059836 0.12526031 -0.0524087186
+[12,] 6.073858e-05 2.047498e-01  0.59541597 0.19899261  0.0007809246
+[13,] 0.000000e+00 6.073858e-02  0.50097182 0.27551020  0.1627793975
+[14,] 0.000000e+00 7.592323e-03  0.22461127 0.35204082  0.4157555879
+[15,] 0.000000e+00 0.000000e+00 -0.14285714 0.42857143  0.7142857143
+attr(,"degree")
+[1] 3
+attr(,"knots")
+ 20%  40%  60%  80% 
+60.8 63.6 66.4 69.2 
+attr(,"Boundary.knots")
+[1] 58 72
+attr(,"intercept")
+[1] FALSE
+attr(,"class")
+[1] "ns"     "basis"  "matrix"
+> summary(fm1 <- lm(weight ~ ns(height, df = 5), data = women))
+
+Call:
+lm(formula = weight ~ ns(height, df = 5), data = women)
+
+Residuals:
+     Min       1Q   Median       3Q      Max 
+-0.38333 -0.12585  0.07083  0.15401  0.30426 
+
+Coefficients:
+                    Estimate Std. Error t value Pr(>|t|)    
+(Intercept)         114.7447     0.2338  490.88  < 2e-16 ***
+ns(height, df = 5)1  15.9474     0.3699   43.12 9.69e-12 ***
+ns(height, df = 5)2  25.1695     0.4323   58.23 6.55e-13 ***
+ns(height, df = 5)3  33.2582     0.3541   93.93 8.91e-15 ***
+ns(height, df = 5)4  50.7894     0.6062   83.78 2.49e-14 ***
+ns(height, df = 5)5  45.0363     0.2784  161.75  < 2e-16 ***
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+
+Residual standard error: 0.2645 on 9 degrees of freedom
+Multiple R-squared:  0.9998,	Adjusted R-squared:  0.9997 
+F-statistic:  9609 on 5 and 9 DF,  p-value: < 2.2e-16
+
+> 
+> ## To see what knots were selected
+> attr(terms(fm1), "predvars")
+list(weight, ns(height, knots = c(`20%` = 60.8, `40%` = 63.6, 
+`60%` = 66.4, `80%` = 69.2), Boundary.knots = c(58, 72), intercept = FALSE))
+> 
+> ## example of safe prediction
+> plot(women, xlab = "Height (in)", ylab = "Weight (lb)")
+> ht <- seq(57, 73, length.out = 200) ; nD <- data.frame(height = ht)
+> lines(ht, p1 <- predict(fm1, nD))
+> stopifnot(all.equal(p1, predict(update(fm1, . ~
++                             splines::ns(height, df=5)), nD)))
+>           # not true in R < 3.5.0
+> ## Don't show: 
+> ## Consistency:
+> x <- c(1:3, 5:6)
+> stopifnot(identical(ns(x), ns(x, df = 1)),
++           identical(ns(x, df = 2),
++                     ns(x, df = 2, knots = NULL)), # not true till 2.15.2
++           !is.null(kk <- attr(ns(x), "knots")), # not true till 1.5.1
++           length(kk) == 0)
+> ## End(Don't show)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("periodicSpline")
+> ### * periodicSpline
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: periodicSpline
+> ### Title: Create a Periodic Interpolation Spline
+> ### Aliases: periodicSpline
+> ### Keywords: models
+> 
+> ### ** Examples
+> 
+> require(graphics); require(stats)
+> xx <- seq( -pi, pi, length.out = 16 )[-1]
+> yy <- sin( xx )
+> frm <- data.frame( xx, yy )
+> pispl <- periodicSpline( xx, yy, period = 2 * pi)
+> pispl2 <- periodicSpline( yy ~ xx, frm, period = 2 * pi )
+> stopifnot(all.equal(pispl, pispl2))  # pispl and pispl2 are the same
+> 
+> plot( pispl )          # displays over one period
+> points( yy ~ xx, col = "brown")
+> plot( predict( pispl, seq(-3*pi, 3*pi, length.out = 101) ), type = "l" )
+> 
+> 
+> 
+> cleanEx()
+> nameEx("polySpline")
+> ### * polySpline
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: polySpline
+> ### Title: Piecewise Polynomial Spline Representation
+> ### Aliases: polySpline as.polySpline
+> ### Keywords: models
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> ispl <- polySpline(interpSpline( weight ~ height,  women, bSpline = TRUE))
+> ## IGNORE_RDIFF_BEGIN
+> print( ispl )   # print the piecewise polynomial representation
+polynomial representation of spline for weight ~ height
+   constant   linear   quadratic       cubic
+58      115 1.731918  0.00000000  0.26808191
+59      117 2.536164  0.80424574 -0.34040957
+60      120 3.123427 -0.21698298  0.09355638
+61      123 2.970130  0.06368616 -0.03381595
+62      126 2.996054 -0.03776168  0.04170740
+63      129 3.045653  0.08736054 -0.13301367
+64      132 2.821333 -0.31168048  0.49034728
+65      135 3.669014  1.15936136 -0.82837545
+66      139 3.502610 -1.32576498  0.82315452
+67      142 3.320544  1.14369857 -0.46424262
+68      146 4.215213 -0.24902928  0.03381595
+69      150 3.818603 -0.14758144  0.32897883
+70      154 4.510376  0.83935505 -0.34973127
+71      159 5.139893 -0.20983876  0.06994625
+72      164 4.930054  0.00000000  0.00000000
+> ## IGNORE_RDIFF_END
+> plot( ispl )    # plots over the range of the knots
+> points( women$height, women$weight )
+> 
+> 
+> 
+> cleanEx()
+> nameEx("predict.bSpline")
+> ### * predict.bSpline
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: predict.bSpline
+> ### Title: Evaluate a Spline at New Values of x
+> ### Aliases: predict.bSpline predict.nbSpline predict.pbSpline
+> ###   predict.npolySpline predict.ppolySpline
+> ### Keywords: models
+> 
+> ### ** Examples
+> 
+> require(graphics); require(stats)
+> ispl <- interpSpline( weight ~ height,  women )
+> opar <- par(mfrow = c(2, 2), las = 1)
+> plot(predict(ispl, nseg = 201),     # plots over the range of the knots
++      main = "Original data with interpolating spline", type = "l",
++      xlab = "height", ylab = "weight")
+> points(women$height, women$weight, col = 4)
+> plot(predict(ispl, nseg = 201, deriv = 1),
++      main = "First derivative of interpolating spline", type = "l",
++      xlab = "height", ylab = "weight")
+> plot(predict(ispl, nseg = 201, deriv = 2),
++      main = "Second derivative of interpolating spline", type = "l",
++      xlab = "height", ylab = "weight")
+> plot(predict(ispl, nseg = 401, deriv = 3),
++      main = "Third derivative of interpolating spline", type = "l",
++      xlab = "height", ylab = "weight")
+> par(opar)
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("predict.bs")
+> ### * predict.bs
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: predict.bs
+> ### Title: Evaluate a Spline Basis
+> ### Aliases: predict.bs predict.ns
+> ### Keywords: smooth
+> 
+> ### ** Examples
+> 
+> require(stats)
+> basis <- ns(women$height, df = 5)
+> newX <- seq(58, 72, length.out = 51)
+> # evaluate the basis at the new data
+> predict(basis, newX)
+                 1            2            3          4            5
+ [1,] 0.0000000000 0.0000000000  0.000000000 0.00000000  0.000000000
+ [2,] 0.0001666667 0.0000000000 -0.025270112 0.07581034 -0.050540224
+ [3,] 0.0013333333 0.0000000000 -0.050033132 0.15009940 -0.100066264
+ [4,] 0.0045000000 0.0000000000 -0.073781966 0.22134590 -0.147563933
+ [5,] 0.0106666667 0.0000000000 -0.096009523 0.28802857 -0.192019047
+ [6,] 0.0208333333 0.0000000000 -0.116208710 0.34862613 -0.232417420
+ [7,] 0.0360000000 0.0000000000 -0.133872434 0.40161730 -0.267744868
+ [8,] 0.0571666667 0.0000000000 -0.148493603 0.44548081 -0.296987205
+ [9,] 0.0853333333 0.0000000000 -0.159565123 0.47869537 -0.319130247
+[10,] 0.1215000000 0.0000000000 -0.166579904 0.49973971 -0.333159807
+[11,] 0.1666666667 0.0000000000 -0.169030851 0.50709255 -0.338061702
+[12,] 0.2211666667 0.0001666667 -0.166622161 0.49986648 -0.333244323
+[13,] 0.2826666667 0.0013333333 -0.159903185 0.47970955 -0.319806370
+[14,] 0.3481666667 0.0045000000 -0.149634561 0.44890368 -0.299269122
+[15,] 0.4146666667 0.0106666667 -0.136576928 0.40973078 -0.273153855
+[16,] 0.4791666667 0.0208333333 -0.121490924 0.36447277 -0.242981848
+[17,] 0.5386666667 0.0360000000 -0.105137189 0.31541157 -0.210274379
+[18,] 0.5901666667 0.0571666667 -0.088276362 0.26482909 -0.176552724
+[19,] 0.6306666667 0.0853333333 -0.071669081 0.21500724 -0.143338162
+[20,] 0.6571666667 0.1215000000 -0.056075985 0.16822795 -0.112151970
+[21,] 0.6666666667 0.1666666667 -0.042257713 0.12677314 -0.084515425
+[22,] 0.6571666667 0.2211666667 -0.030651111 0.09245333 -0.061635555
+[23,] 0.6306666667 0.2826666667 -0.020397854 0.06519356 -0.043462374
+[24,] 0.5901666667 0.3481666667 -0.010315824 0.04444747 -0.029631648
+[25,] 0.5386666667 0.4146666667  0.000777096 0.02966871 -0.019779141
+[26,] 0.4791666667 0.4791666667  0.014063024 0.02031093 -0.013540619
+[27,] 0.4146666667 0.5386666667  0.030724078 0.01582777 -0.010551844
+[28,] 0.3481666667 0.5901666667  0.051942375 0.01567287 -0.010448583
+[29,] 0.2826666667 0.6306666667  0.078900034 0.01929990 -0.012866600
+[30,] 0.2211666667 0.6571666667  0.112779171 0.02616249 -0.017441658
+[31,] 0.1666666667 0.6666666667  0.154761905 0.03571429 -0.023809524
+[32,] 0.1215000000 0.6571666667  0.205345238 0.04746429 -0.031476190
+[33,] 0.0853333333 0.6306666667  0.262285714 0.06114286 -0.039428571
+[34,] 0.0571666667 0.5901666667  0.322654762 0.07653571 -0.046523810
+[35,] 0.0360000000 0.5386666667  0.383523810 0.09342857 -0.051619048
+[36,] 0.0208333333 0.4791666667  0.441964286 0.11160714 -0.053571429
+[37,] 0.0106666667 0.4146666667  0.495047619 0.13085714 -0.051238095
+[38,] 0.0045000000 0.3481666667  0.539845238 0.15096429 -0.043476190
+[39,] 0.0013333333 0.2826666667  0.573428571 0.17171429 -0.029142857
+[40,] 0.0001666667 0.2211666667  0.592869048 0.19289286 -0.007095238
+[41,] 0.0000000000 0.1666666667  0.595238095 0.21428571  0.023809524
+[42,] 0.0000000000 0.1215000000  0.578428571 0.23571429  0.064357143
+[43,] 0.0000000000 0.0853333333  0.543619048 0.25714286  0.113904762
+[44,] 0.0000000000 0.0571666667  0.492809524 0.27857143  0.171452381
+[45,] 0.0000000000 0.0360000000  0.428000000 0.30000000  0.236000000
+[46,] 0.0000000000 0.0208333333  0.351190476 0.32142857  0.306547619
+[47,] 0.0000000000 0.0106666667  0.264380952 0.34285714  0.382095238
+[48,] 0.0000000000 0.0045000000  0.169571429 0.36428571  0.461642857
+[49,] 0.0000000000 0.0013333333  0.068761905 0.38571429  0.544190476
+[50,] 0.0000000000 0.0001666667 -0.036047619 0.40714286  0.628738095
+[51,] 0.0000000000 0.0000000000 -0.142857143 0.42857143  0.714285714
+attr(,"degree")
+[1] 3
+attr(,"knots")
+ 20%  40%  60%  80% 
+60.8 63.6 66.4 69.2 
+attr(,"Boundary.knots")
+[1] 58 72
+attr(,"intercept")
+[1] FALSE
+attr(,"class")
+[1] "ns"     "basis"  "matrix"
+> 
+> 
+> 
+> cleanEx()
+> nameEx("splineDesign")
+> ### * splineDesign
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: splineDesign
+> ### Title: Design Matrix for B-splines
+> ### Aliases: splineDesign spline.des
+> ### Keywords: models
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> splineDesign(knots = 1:10, x = 4:7)
+          [,1]      [,2]      [,3]      [,4]      [,5]      [,6]
+[1,] 0.1666667 0.6666667 0.1666667 0.0000000 0.0000000 0.0000000
+[2,] 0.0000000 0.1666667 0.6666667 0.1666667 0.0000000 0.0000000
+[3,] 0.0000000 0.0000000 0.1666667 0.6666667 0.1666667 0.0000000
+[4,] 0.0000000 0.0000000 0.0000000 0.1666667 0.6666667 0.1666667
+> splineDesign(knots = 1:10, x = 4:7, derivs = 1)
+     [,1] [,2] [,3] [,4] [,5] [,6]
+[1,] -0.5  0.0  0.5  0.0  0.0  0.0
+[2,]  0.0 -0.5  0.0  0.5  0.0  0.0
+[3,]  0.0  0.0 -0.5  0.0  0.5  0.0
+[4,]  0.0  0.0  0.0 -0.5  0.0  0.5
+> ## visualize band structure
+> 
+> knots <- c(1,1.8,3:5,6.5,7,8.1,9.2,10)  # 10 => 10-4 = 6 Basis splines
+> x <- seq(min(knots)-1, max(knots)+1, length.out = 501)
+> bb <- splineDesign(knots, x = x, outer.ok = TRUE)
+> 
+> plot(range(x), c(0,1), type = "n", xlab = "x", ylab = "",
++      main =  "B-splines - sum to 1 inside inner knots")
+> mtext(expression(B[j](x) *"  and "* sum(B[j](x), j == 1, 6)), adj = 0)
+> abline(v = knots, lty = 3, col = "light gray")
+> abline(v = knots[c(4,length(knots)-3)], lty = 3, col = "gray10")
+> lines(x, rowSums(bb), col = "gray", lwd = 2)
+> matlines(x, bb, ylim = c(0,1), lty = 1)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("splineKnots")
+> ### * splineKnots
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: splineKnots
+> ### Title: Knot Vector from a Spline
+> ### Aliases: splineKnots
+> ### Keywords: models
+> 
+> ### ** Examples
+> 
+> ispl <- interpSpline( weight ~ height, women )
+> splineKnots( ispl )
+ [1] 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
+> 
+> 
+> 
+> cleanEx()
+> nameEx("splineOrder")
+> ### * splineOrder
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: splineOrder
+> ### Title: Determine the Order of a Spline
+> ### Aliases: splineOrder
+> ### Keywords: models
+> 
+> ### ** Examples
+> 
+> splineOrder( interpSpline( weight ~ height, women ) )
+[1] 4
+> 
+> 
+> 
+> cleanEx()
+> nameEx("xyVector")
+> ### * xyVector
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: xyVector
+> ### Title: Construct an 'xyVector' Object
+> ### Aliases: xyVector
+> ### Keywords: models
+> 
+> ### ** Examples
+> 
+> require(stats); require(graphics)
+> ispl <- interpSpline( weight ~ height, women )
+> weights <- predict( ispl, seq( 55, 75, length.out = 51 ))
+> class( weights )
+[1] "xyVector"
+> plot( weights, type = "l", xlab = "height", ylab = "weight" )
+> points( women$height, women$weight )
+> weights
+$x
+ [1] 55.0 55.4 55.8 56.2 56.6 57.0 57.4 57.8 58.2 58.6 59.0 59.4 59.8 60.2 60.6
+[16] 61.0 61.4 61.8 62.2 62.6 63.0 63.4 63.8 64.2 64.6 65.0 65.4 65.8 66.2 66.6
+[31] 67.0 67.4 67.8 68.2 68.6 69.0 69.4 69.8 70.2 70.6 71.0 71.4 71.8 72.2 72.6
+[46] 73.0 73.4 73.8 74.2 74.6 75.0
+
+$y
+ [1] 109.8042 110.4970 111.1898 111.8825 112.5753 113.2681 113.9608 114.6536
+ [9] 115.3485 116.0971 117.0000 118.1214 119.3694 120.6168 121.8162 123.0000
+[17] 124.1961 125.3995 126.5980 127.7930 129.0000 130.2237 131.4243 132.5557
+[25] 133.6865 135.0000 136.6001 138.2531 139.6541 140.8021 142.0000 143.4815
+[33] 145.1507 146.8334 148.4468 150.0000 151.5249 153.1289 154.9329 156.9329
+[41] 159.0000 161.0269 163.0134 164.9860 166.9580 168.9301 170.9021 172.8741
+[49] 174.8461 176.8181 178.7902
+
+attr(,"class")
+[1] "xyVector"
+> 
+> 
+> 
+> ### * <FOOTER>
+> ###
+> cleanEx()
+> options(digits = 7L)
+> base::cat("Time elapsed: ", proc.time() - base::get("ptime", pos = 'CheckExEnv'),"\n")
+Time elapsed:  0.42 0.018 0.441 0 0 
+> grDevices::dev.off()
+null device 
+          1 
+> ###
+> ### Local variables: ***
+> ### mode: outline-minor ***
+> ### outline-regexp: "\\(> \\)?### [*]+" ***
+> ### End: ***
+> quit('no')
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/tests/Examples/stats-Ex.Rout.save
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/tests/Examples/stats-Ex.Rout.save	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/tests/Examples/stats-Ex.Rout.save	(revision 3762)
@@ -0,0 +1,19282 @@
+
+R version 4.2.1 Patched (2022-08-10 r82704) -- "Funny-Looking Kid"
+Copyright (C) 2022 The R Foundation for Statistical Computing
+Platform: x86_64-pc-linux-gnu (64-bit)
+
+R is free software and comes with ABSOLUTELY NO WARRANTY.
+You are welcome to redistribute it under certain conditions.
+Type 'license()' or 'licence()' for distribution details.
+
+  Natural language support but running in an English locale
+
+R is a collaborative project with many contributors.
+Type 'contributors()' for more information and
+'citation()' on how to cite R or R packages in publications.
+
+Type 'demo()' for some demos, 'help()' for on-line help, or
+'help.start()' for an HTML browser interface to help.
+Type 'q()' to quit R.
+
+> pkgname <- "stats"
+> source(file.path(R.home("share"), "R", "examples-header.R"))
+> options(warn = 1)
+> library('stats')
+> 
+> base::assign(".oldSearch", base::search(), pos = 'CheckExEnv')
+> base::assign(".old_wd", base::getwd(), pos = 'CheckExEnv')
+> cleanEx()
+> nameEx("AIC")
+> ### * AIC
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: AIC
+> ### Title: Akaike's An Information Criterion
+> ### Aliases: AIC BIC
+> ### Keywords: models
+> 
+> ### ** Examples
+> 
+> lm1 <- lm(Fertility ~ . , data = swiss)
+> AIC(lm1)
+[1] 326.0716
+> stopifnot(all.equal(AIC(lm1),
++                     AIC(logLik(lm1))))
+> BIC(lm1)
+[1] 339.0226
+> 
+> lm2 <- update(lm1, . ~ . -Examination)
+> AIC(lm1, lm2)
+    df      AIC
+lm1  7 326.0716
+lm2  6 325.2408
+> BIC(lm1, lm2)
+    df      BIC
+lm1  7 339.0226
+lm2  6 336.3417
+> 
+> 
+> 
+> cleanEx()
+> nameEx("ARMAacf")
+> ### * ARMAacf
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: ARMAacf
+> ### Title: Compute Theoretical ACF for an ARMA Process
+> ### Aliases: ARMAacf
+> ### Keywords: ts
+> 
+> ### ** Examples
+> 
+> ARMAacf(c(1.0, -0.25), 1.0, lag.max = 10)
+          0           1           2           3           4           5 
+1.000000000 0.875000000 0.625000000 0.406250000 0.250000000 0.148437500 
+          6           7           8           9          10 
+0.085937500 0.048828125 0.027343750 0.015136719 0.008300781 
+> 
+> ## Example from Brockwell & Davis (1991, pp.92-4)
+> ## answer: 2^(-n) * (32/3 + 8 * n) /(32/3)
+> n <- 1:10
+> a.n <- 2^(-n) * (32/3 + 8 * n) /(32/3)
+> (A.n <- ARMAacf(c(1.0, -0.25), 1.0, lag.max = 10))
+          0           1           2           3           4           5 
+1.000000000 0.875000000 0.625000000 0.406250000 0.250000000 0.148437500 
+          6           7           8           9          10 
+0.085937500 0.048828125 0.027343750 0.015136719 0.008300781 
+> stopifnot(all.equal(unname(A.n), c(1, a.n)))
+> 
+> ARMAacf(c(1.0, -0.25), 1.0, lag.max = 10, pacf = TRUE)
+ [1]  0.8750000 -0.6000000  0.3750000 -0.2727273  0.2142857 -0.1764706
+ [7]  0.1500000 -0.1304348  0.1153846 -0.1034483
+> zapsmall(ARMAacf(c(1.0, -0.25), lag.max = 10, pacf = TRUE))
+ [1]  0.80 -0.25  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00
+> 
+> ## Cov-Matrix of length-7 sub-sample of AR(1) example:
+> toeplitz(ARMAacf(0.8, lag.max = 7))
+          [,1]     [,2]    [,3]   [,4]   [,5]    [,6]     [,7]      [,8]
+[1,] 1.0000000 0.800000 0.64000 0.5120 0.4096 0.32768 0.262144 0.2097152
+[2,] 0.8000000 1.000000 0.80000 0.6400 0.5120 0.40960 0.327680 0.2621440
+[3,] 0.6400000 0.800000 1.00000 0.8000 0.6400 0.51200 0.409600 0.3276800
+[4,] 0.5120000 0.640000 0.80000 1.0000 0.8000 0.64000 0.512000 0.4096000
+[5,] 0.4096000 0.512000 0.64000 0.8000 1.0000 0.80000 0.640000 0.5120000
+[6,] 0.3276800 0.409600 0.51200 0.6400 0.8000 1.00000 0.800000 0.6400000
+[7,] 0.2621440 0.327680 0.40960 0.5120 0.6400 0.80000 1.000000 0.8000000
+[8,] 0.2097152 0.262144 0.32768 0.4096 0.5120 0.64000 0.800000 1.0000000
+> 
+> 
+> 
+> cleanEx()
+> nameEx("ARMAtoMA")
+> ### * ARMAtoMA
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: ARMAtoMA
+> ### Title: Convert ARMA Process to Infinite MA Process
+> ### Aliases: ARMAtoMA
+> ### Keywords: ts
+> 
+> ### ** Examples
+> 
+> ARMAtoMA(c(1.0, -0.25), 1.0, 10)
+ [1] 2.00000000 1.75000000 1.25000000 0.81250000 0.50000000 0.29687500
+ [7] 0.17187500 0.09765625 0.05468750 0.03027344
+> ## Example from Brockwell & Davis (1991, p.92)
+> ## answer (1 + 3*n)*2^(-n)
+> n <- 1:10; (1 + 3*n)*2^(-n)
+ [1] 2.00000000 1.75000000 1.25000000 0.81250000 0.50000000 0.29687500
+ [7] 0.17187500 0.09765625 0.05468750 0.03027344
+> 
+> 
+> 
+> cleanEx()
+> nameEx("Beta")
+> ### * Beta
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: Beta
+> ### Title: The Beta Distribution
+> ### Aliases: Beta dbeta pbeta qbeta rbeta
+> ### Keywords: distribution
+> 
+> ### ** Examples
+> 
+> x <- seq(0, 1, length.out = 21)
+> dbeta(x, 1, 1)
+ [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+> pbeta(x, 1, 1)
+ [1] 0.00 0.05 0.10 0.15 0.20 0.25 0.30 0.35 0.40 0.45 0.50 0.55 0.60 0.65 0.70
+[16] 0.75 0.80 0.85 0.90 0.95 1.00
+> 
+> ## Visualization, including limit cases:
+> pl.beta <- function(a,b, asp = if(isLim) 1, ylim = if(isLim) c(0,1.1)) {
++   if(isLim <- a == 0 || b == 0 || a == Inf || b == Inf) {
++     eps <- 1e-10
++     x <- c(0, eps, (1:7)/16, 1/2+c(-eps,0,eps), (9:15)/16, 1-eps, 1)
++   } else {
++     x <- seq(0, 1, length.out = 1025)
++   }
++   fx <- cbind(dbeta(x, a,b), pbeta(x, a,b), qbeta(x, a,b))
++   f <- fx; f[fx == Inf] <- 1e100
++   matplot(x, f, ylab="", type="l", ylim=ylim, asp=asp,
++           main = sprintf("[dpq]beta(x, a=%g, b=%g)", a,b))
++   abline(0,1,     col="gray", lty=3)
++   abline(h = 0:1, col="gray", lty=3)
++   legend("top", paste0(c("d","p","q"), "beta(x, a,b)"),
++          col=1:3, lty=1:3, bty = "n")
++   invisible(cbind(x, fx))
++ }
+> pl.beta(3,1)
+> 
+> pl.beta(2, 4)
+> pl.beta(3, 7)
+> pl.beta(3, 7, asp=1)
+> 
+> pl.beta(0, 0)   ## point masses at  {0, 1}
+> 
+> pl.beta(0, 2)   ## point mass at 0 ; the same as
+> pl.beta(1, Inf)
+> 
+> pl.beta(Inf, 2) ## point mass at 1 ; the same as
+> pl.beta(3, 0)
+> 
+> pl.beta(Inf, Inf)# point mass at 1/2
+> 
+> 
+> 
+> cleanEx()
+> nameEx("Binomial")
+> ### * Binomial
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: Binomial
+> ### Title: The Binomial Distribution
+> ### Aliases: Binomial dbinom pbinom qbinom rbinom
+> ### Keywords: distribution
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> # Compute P(45 < X < 55) for X Binomial(100,0.5)
+> sum(dbinom(46:54, 100, 0.5))
+[1] 0.6317984
+> 
+> ## Using "log = TRUE" for an extended range :
+> n <- 2000
+> k <- seq(0, n, by = 20)
+> plot (k, dbinom(k, n, pi/10, log = TRUE), type = "l", ylab = "log density",
++       main = "dbinom(*, log=TRUE) is better than  log(dbinom(*))")
+> lines(k, log(dbinom(k, n, pi/10)), col = "red", lwd = 2)
+> ## extreme points are omitted since dbinom gives 0.
+> mtext("dbinom(k, log=TRUE)", adj = 0)
+> mtext("extended range", adj = 0, line = -1, font = 4)
+> mtext("log(dbinom(k))", col = "red", adj = 1)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("Cauchy")
+> ### * Cauchy
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: Cauchy
+> ### Title: The Cauchy Distribution
+> ### Aliases: Cauchy dcauchy pcauchy qcauchy rcauchy
+> ### Keywords: distribution
+> 
+> ### ** Examples
+> 
+> dcauchy(-1:4)
+[1] 0.15915494 0.31830989 0.15915494 0.06366198 0.03183099 0.01872411
+> 
+> 
+> 
+> cleanEx()
+> nameEx("Chisquare")
+> ### * Chisquare
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: Chisquare
+> ### Title: The (non-central) Chi-Squared Distribution
+> ### Aliases: Chisquare dchisq pchisq qchisq rchisq
+> ### Keywords: distribution
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> dchisq(1, df = 1:3)
+[1] 0.2419707 0.3032653 0.2419707
+> pchisq(1, df =  3)
+[1] 0.198748
+> pchisq(1, df =  3, ncp = 0:4)  # includes the above
+[1] 0.19874804 0.13229855 0.08787311 0.05824691 0.03853592
+> 
+> x <- 1:10
+> ## Chi-squared(df = 2) is a special exponential distribution
+> all.equal(dchisq(x, df = 2), dexp(x, 1/2))
+[1] TRUE
+> all.equal(pchisq(x, df = 2), pexp(x, 1/2))
+[1] TRUE
+> 
+> ## non-central RNG -- df = 0 with ncp > 0:  Z0 has point mass at 0!
+> Z0 <- rchisq(100, df = 0, ncp = 2.)
+> graphics::stem(Z0)
+
+  The decimal point is at the |
+
+  0 | 0000000000000000000000000000000000000013356778899
+  1 | 0001333456678888899
+  2 | 0011444467
+  3 | 00233345888
+  4 | 111246
+  5 | 
+  6 | 
+  7 | 178
+  8 | 23
+
+> 
+> 
+> ## "analytical" test
+> lam <- seq(0, 100, by = .25)
+> p00 <- pchisq(0,      df = 0, ncp = lam)
+> p.0 <- pchisq(1e-300, df = 0, ncp = lam)
+> stopifnot(all.equal(p00, exp(-lam/2)),
++           all.equal(p.0, exp(-lam/2)))
+> 
+> 
+> 
+> cleanEx()
+> nameEx("Exponential")
+> ### * Exponential
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: Exponential
+> ### Title: The Exponential Distribution
+> ### Aliases: Exponential dexp pexp qexp rexp
+> ### Keywords: distribution
+> 
+> ### ** Examples
+> 
+> dexp(1) - exp(-1) #-> 0
+[1] 0
+> 
+> ## a fast way to generate *sorted*  U[0,1]  random numbers:
+> rsunif <- function(n) { n1 <- n+1
++    cE <- cumsum(rexp(n1)); cE[seq_len(n)]/cE[n1] }
+> plot(rsunif(1000), ylim=0:1, pch=".")
+> abline(0,1/(1000+1), col=adjustcolor(1, 0.5))
+> 
+> 
+> 
+> cleanEx()
+> nameEx("Fdist")
+> ### * Fdist
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: FDist
+> ### Title: The F Distribution
+> ### Aliases: FDist df pf qf rf
+> ### Keywords: distribution
+> 
+> ### ** Examples
+> 
+> ## Equivalence of pt(.,nu) with pf(.^2, 1,nu):
+> x <- seq(0.001, 5, length.out = 100)
+> nu <- 4
+> stopifnot(all.equal(2*pt(x,nu) - 1, pf(x^2, 1,nu)),
++           ## upper tails:
++  	  all.equal(2*pt(x,     nu, lower.tail=FALSE),
++ 		      pf(x^2, 1,nu, lower.tail=FALSE)))
+> 
+> ## the density of the square of a t_m is 2*dt(x, m)/(2*x)
+> # check this is the same as the density of F_{1,m}
+> all.equal(df(x^2, 1, 5), dt(x, 5)/x)
+[1] TRUE
+> 
+> ## Identity (F <-> t):  qf(2*p - 1, 1, df) == qt(p, df)^2  for  p >= 1/2
+> p <- seq(1/2, .99, length.out = 50); df <- 10
+> rel.err <- function(x, y) ifelse(x == y, 0, abs(x-y)/mean(abs(c(x,y))))
+> stopifnot(all.equal(qf(2*p - 1, df1 = 1, df2 = df),
++                     qt(p, df)^2))
+> 
+> ## Identity (F <-> Beta <-> incompl.beta):
+> n1 <- 7 ; n2 <- 12; qF <- c((0:4)/4, 1.5, 2:16)
+> x <- n2/(n2 + n1*qF)
+> stopifnot(all.equal(pf(qF, n1, n2, lower.tail=FALSE),
++                     pbeta(x, n2/2, n1/2)))
+> 
+> 
+> 
+> cleanEx()
+> nameEx("GammaDist")
+> ### * GammaDist
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: GammaDist
+> ### Title: The Gamma Distribution
+> ### Aliases: GammaDist dgamma pgamma qgamma rgamma
+> ### Keywords: distribution
+> 
+> ### ** Examples
+> 
+> -log(dgamma(1:4, shape = 1))
+[1] 1 2 3 4
+> p <- (1:9)/10
+> pgamma(qgamma(p, shape = 2), shape = 2)
+[1] 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9
+> 1 - 1/exp(qgamma(p, shape = 1))
+[1] 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9
+> 
+> 
+> 
+> cleanEx()
+> nameEx("Geometric")
+> ### * Geometric
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: Geometric
+> ### Title: The Geometric Distribution
+> ### Aliases: Geometric dgeom pgeom qgeom rgeom
+> ### Keywords: distribution
+> 
+> ### ** Examples
+> 
+> qgeom((1:9)/10, prob = .2)
+[1]  0  0  1  2  3  4  5  7 10
+> Ni <- rgeom(20, prob = 1/4); table(factor(Ni, 0:max(Ni)))
+
+ 0  1  2  3  4  5  6  7  8  9 10 11 
+ 5  3  3  1  2  2  0  1  0  1  1  1 
+> 
+> 
+> 
+> cleanEx()
+> nameEx("HoltWinters")
+> ### * HoltWinters
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: HoltWinters
+> ### Title: Holt-Winters Filtering
+> ### Aliases: HoltWinters print.HoltWinters residuals.HoltWinters
+> ### Keywords: ts
+> 
+> ### ** Examples
+> 
+> ## Don't show: 
+> od <- options(digits = 5)
+> ## End(Don't show)
+> require(graphics)
+> 
+> ## Seasonal Holt-Winters
+> (m <- HoltWinters(co2))
+Holt-Winters exponential smoothing with trend and additive seasonal component.
+
+Call:
+HoltWinters(x = co2)
+
+Smoothing parameters:
+ alpha: 0.51265
+ beta : 0.0094977
+ gamma: 0.47289
+
+Coefficients:
+         [,1]
+a   364.76162
+b     0.12474
+s1    0.22153
+s2    0.95528
+s3    1.59847
+s4    2.87580
+s5    3.28201
+s6    2.44070
+s7    0.89694
+s8   -1.37964
+s9   -3.41124
+s10  -3.25702
+s11  -1.91349
+s12  -0.58442
+> plot(m)
+> plot(fitted(m))
+> 
+> (m <- HoltWinters(AirPassengers, seasonal = "mult"))
+Holt-Winters exponential smoothing with trend and multiplicative seasonal component.
+
+Call:
+HoltWinters(x = AirPassengers, seasonal = "mult")
+
+Smoothing parameters:
+ alpha: 0.27559
+ beta : 0.032693
+ gamma: 0.87073
+
+Coefficients:
+         [,1]
+a   469.32322
+b     3.02154
+s1    0.94646
+s2    0.88292
+s3    0.97174
+s4    1.03048
+s5    1.04769
+s6    1.18053
+s7    1.35908
+s8    1.33317
+s9    1.10834
+s10   0.98688
+s11   0.83613
+s12   0.92099
+> plot(m)
+> 
+> ## Non-Seasonal Holt-Winters
+> x <- uspop + rnorm(uspop, sd = 5)
+> m <- HoltWinters(x, gamma = FALSE)
+> plot(m)
+> 
+> ## Exponential Smoothing
+> m2 <- HoltWinters(x, gamma = FALSE, beta = FALSE)
+> lines(fitted(m2)[,1], col = 3)
+> ## Don't show: 
+> options(od)
+> ## End(Don't show)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("Hypergeometric")
+> ### * Hypergeometric
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: Hypergeometric
+> ### Title: The Hypergeometric Distribution
+> ### Aliases: Hypergeometric dhyper phyper qhyper rhyper
+> ### Keywords: distribution
+> 
+> ### ** Examples
+> 
+> m <- 10; n <- 7; k <- 8
+> x <- 0:(k+1)
+> rbind(phyper(x, m, n, k), dhyper(x, m, n, k))
+     [,1]         [,2]       [,3]     [,4]      [,5]      [,6]      [,7]
+[1,]    0 0.0004113534 0.01336898 0.117030 0.4193747 0.7821884 0.9635952
+[2,]    0 0.0004113534 0.01295763 0.103661 0.3023447 0.3628137 0.1814068
+           [,8]       [,9] [,10]
+[1,] 0.99814891 1.00000000     1
+[2,] 0.03455368 0.00185109     0
+> all(phyper(x, m, n, k) == cumsum(dhyper(x, m, n, k)))  # FALSE
+[1] FALSE
+> 
+> 
+> cleanEx()
+> nameEx("IQR")
+> ### * IQR
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: IQR
+> ### Title: The Interquartile Range
+> ### Aliases: IQR
+> ### Keywords: univar robust distribution
+> 
+> ### ** Examples
+> 
+> IQR(rivers)
+[1] 370
+> 
+> 
+> 
+> cleanEx()
+> nameEx("KalmanLike")
+> ### * KalmanLike
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: KalmanLike
+> ### Title: Kalman Filtering
+> ### Aliases: KalmanLike KalmanRun KalmanSmooth KalmanForecast makeARIMA
+> ### Keywords: ts
+> 
+> ### ** Examples
+> 
+> ## an ARIMA fit
+> fit3 <- arima(presidents, c(3, 0, 0))
+> predict(fit3, 12)
+$pred
+         Qtr1     Qtr2     Qtr3     Qtr4
+1975 29.84194 34.41014 39.30815 43.02779
+1976 46.18808 48.56947 50.44866 51.86064
+1977 52.94295 53.75521 54.37019 54.83150
+
+$se
+         Qtr1     Qtr2     Qtr3     Qtr4
+1975  9.00655 11.25606 13.43389 14.51516
+1976 15.25538 15.65611 15.90158 16.03792
+1977 16.11764 16.16229 16.18785 16.20220
+
+> ## reconstruct this
+> pr <- KalmanForecast(12, fit3$model)
+> pr$pred + fit3$coef[4]
+ [1] 29.84194 34.41014 39.30815 43.02779 46.18808 48.56947 50.44866 51.86064
+ [9] 52.94295 53.75521 54.37019 54.83150
+> sqrt(pr$var * fit3$sigma2)
+ [1]  9.00655 11.25606 13.43389 14.51516 15.25538 15.65611 15.90158 16.03792
+ [9] 16.11764 16.16229 16.18785 16.20220
+> ## and now do it year by year
+> mod <- fit3$model
+> for(y in 1:3) {
++   pr <- KalmanForecast(4, mod, TRUE)
++   print(list(pred = pr$pred + fit3$coef["intercept"], 
++              se = sqrt(pr$var * fit3$sigma2)))
++   mod <- attr(pr, "mod")
++ }
+$pred
+[1] 29.84194 34.41014 39.30815 43.02779
+
+$se
+[1]  9.00655 11.25606 13.43389 14.51516
+
+$pred
+[1] 46.18808 48.56947 50.44866 51.86064
+
+$se
+[1] 15.25538 15.65611 15.90158 16.03792
+
+$pred
+[1] 52.94295 53.75521 54.37019 54.83150
+
+$se
+[1] 16.11764 16.16229 16.18785 16.20220
+
+> 
+> 
+> 
+> cleanEx()
+> nameEx("Logistic")
+> ### * Logistic
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: Logistic
+> ### Title: The Logistic Distribution
+> ### Aliases: Logistic dlogis plogis qlogis rlogis
+> ### Keywords: distribution
+> 
+> ### ** Examples
+> 
+> var(rlogis(4000, 0, scale = 5))  # approximately (+/- 3)
+[1] 86.93007
+> pi^2/3 * 5^2
+[1] 82.2467
+> 
+> 
+> 
+> cleanEx()
+> nameEx("Lognormal")
+> ### * Lognormal
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: Lognormal
+> ### Title: The Log Normal Distribution
+> ### Aliases: Lognormal dlnorm plnorm qlnorm rlnorm
+> ### Keywords: distribution
+> 
+> ### ** Examples
+> 
+> dlnorm(1) == dnorm(0)
+[1] TRUE
+> 
+> 
+> 
+> cleanEx()
+> nameEx("Multinom")
+> ### * Multinom
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: Multinom
+> ### Title: The Multinomial Distribution
+> ### Aliases: Multinomial rmultinom dmultinom
+> ### Keywords: distribution
+> 
+> ### ** Examples
+> 
+> rmultinom(10, size = 12, prob = c(0.1,0.2,0.8))
+     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
+[1,]    0    1    0    3    1    0    1    2    2     1
+[2,]    2    4    4    2    0    1    2    2    5     3
+[3,]   10    7    8    7   11   11    9    8    5     8
+> 
+> pr <- c(1,3,6,10) # normalization not necessary for generation
+> rmultinom(10, 20, prob = pr)
+     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
+[1,]    3    0    0    0    1    1    1    1    1     1
+[2,]    1    2    3    3    2    4    3    4    4     4
+[3,]    7    6    9    7    8    3    8    6    2     7
+[4,]    9   12    8   10    9   12    8    9   13     8
+> 
+> ## all possible outcomes of Multinom(N = 3, K = 3)
+> X <- t(as.matrix(expand.grid(0:3, 0:3))); X <- X[, colSums(X) <= 3]
+> X <- rbind(X, 3:3 - colSums(X)); dimnames(X) <- list(letters[1:3], NULL)
+> X
+  [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
+a    0    1    2    3    0    1    2    0    1     0
+b    0    0    0    0    1    1    1    2    2     3
+c    3    2    1    0    2    1    0    1    0     0
+> round(apply(X, 2, function(x) dmultinom(x, prob = c(1,2,5))), 3)
+ [1] 0.244 0.146 0.029 0.002 0.293 0.117 0.012 0.117 0.023 0.016
+> 
+> 
+> 
+> cleanEx()
+> nameEx("NLSstAsymptotic")
+> ### * NLSstAsymptotic
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: NLSstAsymptotic
+> ### Title: Fit the Asymptotic Regression Model
+> ### Aliases: NLSstAsymptotic NLSstAsymptotic.sortedXyData
+> ### Keywords: manip
+> 
+> ### ** Examples
+> 
+> Lob.329 <- Loblolly[ Loblolly$Seed == "329", ]
+> print(NLSstAsymptotic(sortedXyData(expression(age),
++                                    expression(height),
++                                    Lob.329)), digits = 3)
+    b0     b1    lrc 
+ -8.25 102.38  -3.22 
+> 
+> 
+> 
+> cleanEx()
+> nameEx("NLSstClosestX")
+> ### * NLSstClosestX
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: NLSstClosestX
+> ### Title: Inverse Interpolation
+> ### Aliases: NLSstClosestX NLSstClosestX.sortedXyData
+> ### Keywords: manip
+> 
+> ### ** Examples
+> 
+> DNase.2 <- DNase[ DNase$Run == "2", ]
+> DN.srt <- sortedXyData(expression(log(conc)), expression(density), DNase.2)
+> NLSstClosestX(DN.srt, 1.0)
+[1] 0.9795406
+> 
+> 
+> 
+> cleanEx()
+> nameEx("NLSstLfAsymptote")
+> ### * NLSstLfAsymptote
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: NLSstLfAsymptote
+> ### Title: Horizontal Asymptote on the Left Side
+> ### Aliases: NLSstLfAsymptote NLSstLfAsymptote.sortedXyData
+> ### Keywords: manip
+> 
+> ### ** Examples
+> 
+> DNase.2 <- DNase[ DNase$Run == "2", ]
+> DN.srt <- sortedXyData( expression(log(conc)), expression(density), DNase.2 )
+> NLSstLfAsymptote( DN.srt )
+[1] -0.1869375
+> 
+> 
+> 
+> cleanEx()
+> nameEx("NLSstRtAsymptote")
+> ### * NLSstRtAsymptote
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: NLSstRtAsymptote
+> ### Title: Horizontal Asymptote on the Right Side
+> ### Aliases: NLSstRtAsymptote NLSstRtAsymptote.sortedXyData
+> ### Keywords: manip
+> 
+> ### ** Examples
+> 
+> DNase.2 <- DNase[ DNase$Run == "2", ]
+> DN.srt <- sortedXyData( expression(log(conc)), expression(density), DNase.2 )
+> NLSstRtAsymptote( DN.srt )
+[1] 2.157437
+> 
+> 
+> 
+> cleanEx()
+> nameEx("NegBinomial")
+> ### * NegBinomial
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: NegBinomial
+> ### Title: The Negative Binomial Distribution
+> ### Aliases: NegBinomial dnbinom pnbinom qnbinom rnbinom
+> ### Keywords: distribution
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> x <- 0:11
+> dnbinom(x, size = 1, prob = 1/2) * 2^(1 + x) # == 1
+ [1] 1 1 1 1 1 1 1 1 1 1 1 1
+> 126 /  dnbinom(0:8, size  = 2, prob  = 1/2) #- theoretically integer
+[1]   504.0   504.0   672.0  1008.0  1612.8  2688.0  4608.0  8064.0 14336.0
+> 
+> 
+> x <- 0:15
+> size <- (1:20)/4
+> persp(x, size, dnb <- outer(x, size, function(x,s) dnbinom(x, s, prob = 0.4)),
++       xlab = "x", ylab = "s", zlab = "density", theta = 150)
+> title(tit <- "negative binomial density(x,s, pr = 0.4)  vs.  x & s")
+> 
+> image  (x, size, log10(dnb), main = paste("log [", tit, "]"))
+> contour(x, size, log10(dnb), add = TRUE)
+> 
+> ## Alternative parametrization
+> x1 <- rnbinom(500, mu = 4, size = 1)
+> x2 <- rnbinom(500, mu = 4, size = 10)
+> x3 <- rnbinom(500, mu = 4, size = 100)
+> h1 <- hist(x1, breaks = 20, plot = FALSE)
+> h2 <- hist(x2, breaks = h1$breaks, plot = FALSE)
+> h3 <- hist(x3, breaks = h1$breaks, plot = FALSE)
+> barplot(rbind(h1$counts, h2$counts, h3$counts),
++         beside = TRUE, col = c("red","blue","cyan"),
++         names.arg = round(h1$breaks[-length(h1$breaks)]))
+> 
+> 
+> 
+> cleanEx()
+> nameEx("Normal")
+> ### * Normal
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: Normal
+> ### Title: The Normal Distribution
+> ### Aliases: Normal dnorm pnorm qnorm rnorm
+> ### Keywords: distribution
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> dnorm(0) == 1/sqrt(2*pi)
+[1] TRUE
+> dnorm(1) == exp(-1/2)/sqrt(2*pi)
+[1] TRUE
+> dnorm(1) == 1/sqrt(2*pi*exp(1))
+[1] TRUE
+> 
+> ## Using "log = TRUE" for an extended range :
+> par(mfrow = c(2,1))
+> plot(function(x) dnorm(x, log = TRUE), -60, 50,
++      main = "log { Normal density }")
+> curve(log(dnorm(x)), add = TRUE, col = "red", lwd = 2)
+> mtext("dnorm(x, log=TRUE)", adj = 0)
+> mtext("log(dnorm(x))", col = "red", adj = 1)
+> 
+> plot(function(x) pnorm(x, log.p = TRUE), -50, 10,
++      main = "log { Normal Cumulative }")
+> curve(log(pnorm(x)), add = TRUE, col = "red", lwd = 2)
+> mtext("pnorm(x, log=TRUE)", adj = 0)
+> mtext("log(pnorm(x))", col = "red", adj = 1)
+> 
+> ## if you want the so-called 'error function'
+> erf <- function(x) 2 * pnorm(x * sqrt(2)) - 1
+> ## (see Abramowitz and Stegun 29.2.29)
+> ## and the so-called 'complementary error function'
+> erfc <- function(x) 2 * pnorm(x * sqrt(2), lower = FALSE)
+> ## and the inverses
+> erfinv <- function (x) qnorm((1 + x)/2)/sqrt(2)
+> erfcinv <- function (x) qnorm(x/2, lower = FALSE)/sqrt(2)
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("Poisson")
+> ### * Poisson
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: Poisson
+> ### Title: The Poisson Distribution
+> ### Aliases: Poisson dpois ppois qpois rpois
+> ### Keywords: distribution
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> -log(dpois(0:7, lambda = 1) * gamma(1+ 0:7)) # == 1
+[1] 1 1 1 1 1 1 1 1
+> Ni <- rpois(50, lambda = 4); table(factor(Ni, 0:max(Ni)))
+
+ 0  1  2  3  4  5  6  7  8  9 10 
+ 1  2  7  9  8 13  5  4  0  0  1 
+> 
+> 1 - ppois(10*(15:25), lambda = 100)  # becomes 0 (cancellation)
+ [1] 1.233094e-06 1.261664e-08 7.085799e-11 2.252643e-13 4.440892e-16
+ [6] 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00
+[11] 0.000000e+00
+>     ppois(10*(15:25), lambda = 100, lower.tail = FALSE)  # no cancellation
+ [1] 1.233094e-06 1.261664e-08 7.085800e-11 2.253110e-13 4.174239e-16
+ [6] 4.626179e-19 3.142097e-22 1.337219e-25 3.639328e-29 6.453883e-33
+[11] 7.587807e-37
+> 
+> par(mfrow = c(2, 1))
+> x <- seq(-0.01, 5, 0.01)
+> plot(x, ppois(x, 1), type = "s", ylab = "F(x)", main = "Poisson(1) CDF")
+> plot(x, pbinom(x, 100, 0.01), type = "s", ylab = "F(x)",
++      main = "Binomial(100, 0.01) CDF")
+> 
+> ## The (limit) case  lambda = 0 :
+> stopifnot(identical(dpois(0,0), 1),
++ 	  identical(ppois(0,0), 1),
++ 	  identical(qpois(1,0), 0))
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("SSD")
+> ### * SSD
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: SSD
+> ### Title: SSD Matrix and Estimated Variance Matrix in Multivariate Models
+> ### Aliases: SSD estVar
+> ### Keywords: models multivariate
+> 
+> ### ** Examples
+> 
+> # Lifted from Baron+Li:
+> # "Notes on the use of R for psychology experiments and questionnaires"
+> # Maxwell and Delaney, p. 497
+> reacttime <- matrix(c(
++ 420, 420, 480, 480, 600, 780,
++ 420, 480, 480, 360, 480, 600,
++ 480, 480, 540, 660, 780, 780,
++ 420, 540, 540, 480, 780, 900,
++ 540, 660, 540, 480, 660, 720,
++ 360, 420, 360, 360, 480, 540,
++ 480, 480, 600, 540, 720, 840,
++ 480, 600, 660, 540, 720, 900,
++ 540, 600, 540, 480, 720, 780,
++ 480, 420, 540, 540, 660, 780),
++ ncol = 6, byrow = TRUE,
++ dimnames = list(subj = 1:10,
++               cond = c("deg0NA", "deg4NA", "deg8NA",
++                        "deg0NP", "deg4NP", "deg8NP")))
+> 
+> mlmfit <- lm(reacttime ~ 1)
+> SSD(mlmfit)
+$SSD
+        cond
+cond     deg0NA deg4NA deg8NA deg0NP deg4NP deg8NP
+  deg0NA  29160  30600  26640  23760  32400  25560
+  deg4NA  30600  66600  32400   7200  36000  30600
+  deg8NA  26640  32400  56160  41040  57600  69840
+  deg0NP  23760   7200  41040  70560  72000  63360
+  deg4NP  32400  36000  57600  72000 108000 100800
+  deg8NP  25560  30600  69840  63360 100800 122760
+
+$call
+lm(formula = reacttime ~ 1)
+
+$df
+[1] 9
+
+attr(,"class")
+[1] "SSD"
+> estVar(mlmfit)
+        cond
+cond     deg0NA deg4NA deg8NA deg0NP deg4NP deg8NP
+  deg0NA   3240   3400   2960   2640   3600   2840
+  deg4NA   3400   7400   3600    800   4000   3400
+  deg8NA   2960   3600   6240   4560   6400   7760
+  deg0NP   2640    800   4560   7840   8000   7040
+  deg4NP   3600   4000   6400   8000  12000  11200
+  deg8NP   2840   3400   7760   7040  11200  13640
+> 
+> 
+> 
+> cleanEx()
+> nameEx("SSasymp")
+> ### * SSasymp
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: SSasymp
+> ### Title: Self-Starting Nls Asymptotic Regression Model
+> ### Aliases: SSasymp
+> ### Keywords: models
+> 
+> ### ** Examples
+> 
+> ## Don't show: 
+> options(show.nls.convergence=FALSE)
+> ## End(Don't show)
+> Lob.329 <- Loblolly[ Loblolly$Seed == "329", ]
+> SSasymp( Lob.329$age, 100, -8.5, -3.2 )   # response only
+[1]  3.988924 11.505611 27.822517 41.130854 51.985354 60.838463
+> local({
++   Asym <- 100 ; resp0 <- -8.5 ; lrc <- -3.2
++   SSasymp( Lob.329$age, Asym, resp0, lrc) # response _and_ gradient
++ })
+[1]  3.988924 11.505611 27.822517 41.130854 51.985354 60.838463
+attr(,"gradient")
+          Asym     resp0      lrc
+[1,] 0.1151053 0.8848947 11.74087
+[2,] 0.1843835 0.8156165 18.03613
+[3,] 0.3347697 0.6652303 29.42113
+[4,] 0.4574272 0.5425728 35.99454
+[5,] 0.5574687 0.4425313 39.14366
+[6,] 0.6390642 0.3609358 39.90776
+> getInitial(height ~ SSasymp( age, Asym, resp0, lrc), data = Lob.329)
+     Asym     resp0       lrc 
+94.128204 -8.250753 -3.217578 
+> ## Initial values are in fact the converged values
+> fm1 <- nls(height ~ SSasymp( age, Asym, resp0, lrc), data = Lob.329)
+> summary(fm1)
+
+Formula: height ~ SSasymp(age, Asym, resp0, lrc)
+
+Parameters:
+      Estimate Std. Error t value Pr(>|t|)    
+Asym   94.1282     8.4030  11.202 0.001525 ** 
+resp0  -8.2508     1.2261  -6.729 0.006700 ** 
+lrc    -3.2176     0.1386 -23.218 0.000175 ***
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+
+Residual standard error: 0.7493 on 3 degrees of freedom
+
+> 
+> ## Visualize the SSasymp()  model  parametrization :
+> 
+>   xx <- seq(-.3, 5, length.out = 101)
+>   ##  Asym + (R0-Asym) * exp(-exp(lrc)* x) :
+>   yy <- 5 - 4 * exp(-xx / exp(3/4))
+>   stopifnot( all.equal(yy, SSasymp(xx, Asym = 5, R0 = 1, lrc = -3/4)) )
+>   require(graphics)
+>   op <- par(mar = c(0, .2, 4.1, 0))
+>   plot(xx, yy, type = "l", axes = FALSE, ylim = c(0,5.2), xlim = c(-.3, 5),
++        xlab = "", ylab = "", lwd = 2,
++        main = quote("Parameters in the SSasymp model " ~
++                     {f[phi](x) == phi[1] + (phi[2]-phi[1])*~e^{-e^{phi[3]}*~x}}))
+>   mtext(quote(list(phi[1] == "Asym", phi[2] == "R0", phi[3] == "lrc")))
+>   usr <- par("usr")
+>   arrows(usr[1], 0, usr[2], 0, length = 0.1, angle = 25)
+>   arrows(0, usr[3], 0, usr[4], length = 0.1, angle = 25)
+>   text(usr[2] - 0.2, 0.1, "x", adj = c(1, 0))
+>   text(     -0.1, usr[4], "y", adj = c(1, 1))
+>   abline(h = 5, lty = 3)
+>   arrows(c(0.35, 0.65), 1,
++          c(0  ,  1   ), 1, length = 0.08, angle = 25); text(0.5, 1, quote(1))
+>   y0 <- 1 + 4*exp(-3/4) ; t.5 <- log(2) / exp(-3/4) ; AR2 <- 3 # (Asym + R0)/2
+>   segments(c(1, 1), c( 1, y0),
++            c(1, 0), c(y0,  1),  lty = 2, lwd = 0.75)
+>   text(1.1, 1/2+y0/2, quote((phi[1]-phi[2])*e^phi[3]), adj = c(0,.5))
+>   axis(2, at = c(1,AR2,5), labels= expression(phi[2], frac(phi[1]+phi[2],2), phi[1]),
++        pos=0, las=1)
+>   arrows(c(.6,t.5-.6), AR2,
++          c(0, t.5   ), AR2, length = 0.08, angle = 25)
+>   text(   t.5/2,   AR2, quote(t[0.5]))
+>   text(   t.5 +.4, AR2,
++        quote({f(t[0.5]) == frac(phi[1]+phi[2],2)}~{} %=>% {}~~
++                 {t[0.5] == frac(log(2), e^{phi[3]})}), adj = c(0, 0.5))
+>   par(op)
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("SSasympOff")
+> ### * SSasympOff
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: SSasympOff
+> ### Title: Self-Starting Nls Asymptotic Regression Model with an Offset
+> ### Aliases: SSasympOff
+> ### Keywords: models
+> 
+> ### ** Examples
+> 
+> CO2.Qn1 <- CO2[CO2$Plant == "Qn1", ]
+> SSasympOff(CO2.Qn1$conc, 32, -4, 43)  # response only
+[1] 19.65412 29.14785 31.27791 31.88435 31.99259 31.99970 32.00000
+> local({  Asym <- 32; lrc <- -4; c0 <- 43
++   SSasympOff(CO2.Qn1$conc, Asym, lrc, c0) # response and gradient
++ })
+[1] 19.65412 29.14785 31.27791 31.88435 31.99259 31.99970 32.00000
+attr(,"gradient")
+          Asym          lrc            c0
+[1,] 0.6141911 1.175838e+01 -2.261227e-01
+[2,] 0.9108704 6.895531e+00 -5.223887e-02
+[3,] 0.9774346 2.737698e+00 -1.322559e-02
+[4,] 0.9963859 6.503026e-01 -2.118250e-03
+[5,] 0.9997683 6.204920e-02 -1.357751e-04
+[6,] 0.9999906 3.479529e-03 -5.505583e-06
+[7,] 1.0000000 1.369435e-05 -1.430967e-08
+> getInitial(uptake ~ SSasympOff(conc, Asym, lrc, c0), data = CO2.Qn1)
+     Asym       lrc        c0 
+38.139782 -4.380647 51.223238 
+> ## Initial values are in fact the converged values
+> fm1 <- nls(uptake ~ SSasympOff(conc, Asym, lrc, c0), data = CO2.Qn1)
+> summary(fm1)
+
+Formula: uptake ~ SSasympOff(conc, Asym, lrc, c0)
+
+Parameters:
+     Estimate Std. Error t value Pr(>|t|)    
+Asym  38.1398     0.9164  41.620 1.99e-06 ***
+lrc   -4.3806     0.2042 -21.457 2.79e-05 ***
+c0    51.2232    11.6698   4.389   0.0118 *  
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+
+Residual standard error: 1.663 on 4 degrees of freedom
+
+> 
+> ## Visualize the SSasympOff()  model  parametrization :
+> 
+>   xx <- seq(0.25, 8,  by=1/16)
+>   yy <- 5 * (1 -  exp(-(xx - 3/4)*0.4))
+>   stopifnot( all.equal(yy, SSasympOff(xx, Asym = 5, lrc = log(0.4), c0 = 3/4)) )
+>   require(graphics)
+>   op <- par(mar = c(0, 0, 4.0, 0))
+>   plot(xx, yy, type = "l", axes = FALSE, ylim = c(-.5,6), xlim = c(-1, 8),
++        xlab = "", ylab = "", lwd = 2,
++        main = "Parameters in the SSasympOff model")
+>   mtext(quote(list(phi[1] == "Asym", phi[2] == "lrc", phi[3] == "c0")))
+>   usr <- par("usr")
+>   arrows(usr[1], 0, usr[2], 0, length = 0.1, angle = 25)
+>   arrows(0, usr[3], 0, usr[4], length = 0.1, angle = 25)
+>   text(usr[2] - 0.2, 0.1, "x", adj = c(1, 0))
+>   text(     -0.1, usr[4], "y", adj = c(1, 1))
+>   abline(h = 5, lty = 3)
+>   arrows(-0.8, c(2.1, 2.9),
++          -0.8, c(0  , 5  ), length = 0.1, angle = 25)
+>   text  (-0.8, 2.5, quote(phi[1]))
+>   segments(3/4, -.2, 3/4, 1.6, lty = 2)
+>   text    (3/4,    c(-.3, 1.7), quote(phi[3]))
+>   arrows(c(1.1, 1.4), -.15,
++          c(3/4, 7/4), -.15, length = 0.07, angle = 25)
+>   text    (3/4 + 1/2, -.15, quote(1))
+>   segments(c(3/4, 7/4, 7/4), c(0, 0, 2),   # 5 * exp(log(0.4)) = 2
++            c(7/4, 7/4, 3/4), c(0, 2, 0),  lty = 2, lwd = 2)
+>   text(      7/4 +.1, 2./2, quote(phi[1]*e^phi[2]), adj = c(0, .5))
+>   par(op)
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("SSasympOrig")
+> ### * SSasympOrig
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: SSasympOrig
+> ### Title: Self-Starting Nls Asymptotic Regression Model through the Origin
+> ### Aliases: SSasympOrig
+> ### Keywords: models
+> 
+> ### ** Examples
+> 
+> ## Visualize the SSasympOrig()  model  parametrization :
+> 
+>   xx <- seq(0, 5, length.out = 101)
+>   yy <- 5 * (1- exp(-xx * log(2)))
+>   stopifnot( all.equal(yy, SSasympOrig(xx, Asym = 5, lrc = log(log(2)))) )
+> 
+>   require(graphics)
+>   op <- par(mar = c(0, 0, 3.5, 0))
+>   plot(xx, yy, type = "l", axes = FALSE, ylim = c(0,5), xlim = c(-1/4, 5),
++        xlab = "", ylab = "", lwd = 2,
++        main = quote("Parameters in the SSasympOrig model"~~ f[phi](x)))
+>   mtext(quote(list(phi[1] == "Asym", phi[2] == "lrc")))
+>   usr <- par("usr")
+>   arrows(usr[1], 0, usr[2], 0, length = 0.1, angle = 25)
+>   arrows(0, usr[3], 0, usr[4], length = 0.1, angle = 25)
+>   text(usr[2] - 0.2, 0.1, "x", adj = c(1, 0))
+>   text(   -0.1,   usr[4], "y", adj = c(1, 1))
+>   abline(h = 5, lty = 3)
+>   axis(2, at = 5*c(1/2,1), labels= expression(frac(phi[1],2), phi[1]), pos=0, las=1)
+>   arrows(c(.3,.7), 5/2,
++          c(0, 1 ), 5/2, length = 0.08, angle = 25)
+>   text(   0.5,     5/2, quote(t[0.5]))
+>   text(   1 +.4,   5/2,
++        quote({f(t[0.5]) == frac(phi[1],2)}~{} %=>% {}~~{t[0.5] == frac(log(2), e^{phi[2]})}),
++        adj = c(0, 0.5))
+>   par(op)
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("SSbiexp")
+> ### * SSbiexp
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: SSbiexp
+> ### Title: Self-Starting Nls Biexponential model
+> ### Aliases: SSbiexp
+> ### Keywords: models
+> 
+> ### ** Examples
+> 
+> Indo.1 <- Indometh[Indometh$Subject == 1, ]
+> SSbiexp( Indo.1$time, 3, 1, 0.6, -1.3 )  # response only
+ [1] 2.08098572 1.29421044 0.87967145 0.65483364 0.52711347 0.36094621
+ [7] 0.26575722 0.20176113 0.15359129 0.11694936 0.06780767
+> A1 <- 3; lrc1 <- 1; A2 <- 0.6; lrc2 <- -1.3
+> SSbiexp( Indo.1$time, A1, lrc1, A2, lrc2 ) # response and gradient
+ [1] 2.08098572 1.29421044 0.87967145 0.65483364 0.52711347 0.36094621
+ [7] 0.26575722 0.20176113 0.15359129 0.11694936 0.06780767
+attr(,"gradient")
+                A1          lrc1        A2        lrc2
+ [1,] 5.068347e-01 -1.033290e+00 0.9341363 -0.03818728
+ [2,] 2.568814e-01 -1.047414e+00 0.8726106 -0.07134424
+ [3,] 1.301964e-01 -7.962985e-01 0.8151372 -0.09996786
+ [4,] 6.598804e-02 -5.381222e-01 0.7614492 -0.12451147
+ [5,] 3.344502e-02 -3.409237e-01 0.7112973 -0.14538835
+ [6,] 4.354421e-03 -7.101926e-02 0.5798049 -0.18961833
+ [7,] 2.873397e-04 -7.029632e-03 0.4414920 -0.21657709
+ [8,] 1.896098e-05 -6.184955e-04 0.3361737 -0.21988328
+ [9,] 1.251198e-06 -5.101663e-05 0.2559792 -0.20928744
+[10,] 8.256409e-08 -4.039784e-06 0.1949152 -0.19123411
+[11,] 3.595188e-10 -2.345456e-08 0.1130128 -0.14783797
+> print(getInitial(conc ~ SSbiexp(time, A1, lrc1, A2, lrc2), data = Indo.1),
++       digits = 5)
+      A1     lrc1       A2     lrc2 
+ 2.02928  0.57939  0.19155 -1.78778 
+> ## Initial values are in fact the converged values
+> fm1 <- nls(conc ~ SSbiexp(time, A1, lrc1, A2, lrc2), data = Indo.1)
+> summary(fm1)
+
+Formula: conc ~ SSbiexp(time, A1, lrc1, A2, lrc2)
+
+Parameters:
+     Estimate Std. Error t value Pr(>|t|)    
+A1     2.0293     0.1099  18.464 3.39e-07 ***
+lrc1   0.5794     0.1247   4.648  0.00235 ** 
+A2     0.1915     0.1106   1.731  0.12698    
+lrc2  -1.7878     0.7871  -2.271  0.05737 .  
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+
+Residual standard error: 0.04103 on 7 degrees of freedom
+
+> 
+> ## Show the model components visually
+>   require(graphics)
+> 
+>   xx <- seq(0, 5, length.out = 101)
+>   y1 <- 3.5 * exp(-4*xx)
+>   y2 <- 1.5 * exp(-xx)
+>   plot(xx, y1 + y2, type = "l", lwd=2, ylim = c(-0.2,6), xlim = c(0, 5),
++        main = "Components of the SSbiexp model")
+>   lines(xx, y1, lty = 2, col="tomato"); abline(v=0, h=0, col="gray40")
+>   lines(xx, y2, lty = 3, col="blue2" )
+>   legend("topright", c("y1+y2", "y1 = 3.5 * exp(-4*x)", "y2 = 1.5 * exp(-x)"),
++          lty=1:3, col=c("black","tomato","blue2"), bty="n")
+>   axis(2, pos=0, at = c(3.5, 1.5), labels = c("A1","A2"), las=2)
+> 
+> ## and how you could have got their sum via SSbiexp():
+>   ySS <- SSbiexp(xx, 3.5, log(4), 1.5, log(1))
+>   ##                      ---          ---
+>   stopifnot(all.equal(y1+y2, ySS, tolerance = 1e-15))
+> 
+> ## Show a no-noise example
+> datN <- data.frame(time = (0:600)/64)
+> datN$conc <- predict(fm1, newdata=datN)
+> plot(conc ~ time, data=datN) # perfect, no noise
+> ## IGNORE_RDIFF_BEGIN
+> ## Fails by default (scaleOffset=0) on most platforms {also after increasing maxiter !}
+> ## Not run: 
+> ##D         nls(conc ~ SSbiexp(time, A1, lrc1, A2, lrc2), data = datN, trace=TRUE)
+> ## End(Not run)
+> ## Don't show: 
+> try( # maxiter=10: store less garbage
++         nls(conc ~ SSbiexp(time, A1, lrc1, A2, lrc2), data = datN,
++             trace=TRUE, control = list(maxiter = 10)) )
+0.01722077  (5.34e+02): par = (0.6168807 -1.783839 2.050204 0.2004597)
+3.308944e-06 (1.13e+04): par = (0.5798674 -1.784335 2.028943 0.1920502)
+2.571095e-11 (7.68e+06): par = (0.5793882 -1.78778 2.029276 0.1915479)
+1.619248e-23 (5.90e+03): par = (0.5793887 -1.787785 2.029277 0.1915474)
+1.243570e-28 (8.88e+00): par = (0.5793887 -1.787785 2.029277 0.1915474)
+2.599121e-29 (1.38e+01): par = (0.5793887 -1.787785 2.029277 0.1915474)
+1.292713e-29 (1.71e+00): par = (0.5793887 -1.787785 2.029277 0.1915474)
+1.292713e-29 (1.71e+00): par = (0.5793887 -1.787785 2.029277 0.1915474)
+1.292713e-29 (1.71e+00): par = (0.5793887 -1.787785 2.029277 0.1915474)
+1.292713e-29 (1.71e+00): par = (0.5793887 -1.787785 2.029277 0.1915474)
+1.292713e-29 (1.71e+00): par = (0.5793887 -1.787785 2.029277 0.1915474)
+Error in nls(y ~ cbind(exp(-exp(lrc1) * x), exp(-exp(lrc2) * x)), data = xy,  : 
+  number of iterations exceeded maximum of 10
+> ## End(Don't show)
+> fmX1 <- nls(conc ~ SSbiexp(time, A1, lrc1, A2, lrc2), data = datN, control = list(scaleOffset=1))
+> fmX  <- nls(conc ~ SSbiexp(time, A1, lrc1, A2, lrc2), data = datN,
++            control = list(scaleOffset=1, printEval=TRUE, tol=1e-11, nDcentral=TRUE), trace=TRUE)
+0.01722077    (6.55e-02): par = (0.6168807 -1.783839 2.050204 0.2004597)
+  It.   1, fac=           1, eval (no.,total): ( 1,  1): new dev = 3.30894e-06
+3.308942e-06  (9.08e-04): par = (0.5798674 -1.784335 2.028943 0.1920502)
+  It.   2, fac=           1, eval (no.,total): ( 1,  2): new dev = 2.57108e-11
+2.571082e-11  (2.53e-06): par = (0.5793882 -1.78778 2.029276 0.1915479)
+  It.   3, fac=           1, eval (no.,total): ( 1,  3): new dev = 1.66996e-23
+1.669964e-23  (2.04e-12): par = (0.5793887 -1.787785 2.029277 0.1915474)
+1.671287e-23  (1.67e-13): par = (2.029277 0.5793887 0.1915474 -1.787785)
+> all.equal(coef(fm1), coef(fmX1), tolerance=0) # ... rel.diff.: 1.57e-6
+[1] "Mean relative difference: 1.574124e-06"
+> all.equal(coef(fm1), coef(fmX),  tolerance=0) # ... rel.diff.: 1.03e-12
+[1] "Mean relative difference: 1.032014e-12"
+> ## IGNORE_RDIFF_END
+> stopifnot(all.equal(coef(fm1), coef(fmX1), tolerance = 6e-6),
++           all.equal(coef(fm1), coef(fmX ), tolerance = 1e-11))
+> 
+> 
+> 
+> cleanEx()
+> nameEx("SSfol")
+> ### * SSfol
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: SSfol
+> ### Title: Self-Starting Nls First-order Compartment Model
+> ### Aliases: SSfol
+> ### Keywords: models
+> 
+> ### ** Examples
+> 
+> Theoph.1 <- Theoph[ Theoph$Subject == 1, ]
+> with(Theoph.1, SSfol(Dose, Time, -2.5, 0.5, -3)) # response only
+ [1] 0.000000 2.214486 3.930988 5.261945 5.659813 5.084852 4.587699 3.916808
+ [9] 3.318395 2.579204 0.943593
+> with(Theoph.1, local({  lKe <- -2.5; lKa <- 0.5; lCl <- -3
++   SSfol(Dose, Time, lKe, lKa, lCl) # response _and_ gradient
++ }))
+ [1] 0.000000 2.214486 3.930988 5.261945 5.659813 5.084852 4.587699 3.916808
+ [9] 3.318395 2.579204 0.943593
+attr(,"gradient")
+            lKe         lKa       lCl
+ [1,]  0.000000  0.00000000  0.000000
+ [2,]  2.190284  1.78781716 -2.214486
+ [3,]  3.825518  2.35519507 -3.930988
+ [4,]  4.952713  1.75648252 -5.261945
+ [5,]  4.976520  0.53458070 -5.659813
+ [6,]  3.752822 -0.18560297 -5.084852
+ [7,]  2.906859 -0.22729852 -4.587699
+ [8,]  1.861771 -0.20447579 -3.916808
+ [9,]  1.027129 -0.17383515 -3.318395
+[10,]  0.148370 -0.13513891 -2.579204
+[11,] -0.894541 -0.04944021 -0.943593
+> getInitial(conc ~ SSfol(Dose, Time, lKe, lKa, lCl), data = Theoph.1)
+      lKe       lKa       lCl 
+-2.994845  0.609169 -3.971003 
+> ## Initial values are in fact the converged values
+> fm1 <- nls(conc ~ SSfol(Dose, Time, lKe, lKa, lCl), data = Theoph.1)
+> summary(fm1)
+
+Formula: conc ~ SSfol(Dose, Time, lKe, lKa, lCl)
+
+Parameters:
+    Estimate Std. Error t value Pr(>|t|)    
+lKe  -2.9196     0.1709 -17.085 1.40e-07 ***
+lKa   0.5752     0.1728   3.328   0.0104 *  
+lCl  -3.9159     0.1273 -30.768 1.35e-09 ***
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+
+Residual standard error: 0.732 on 8 degrees of freedom
+
+> 
+> 
+> 
+> cleanEx()
+> nameEx("SSfpl")
+> ### * SSfpl
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: SSfpl
+> ### Title: Self-Starting Nls Four-Parameter Logistic Model
+> ### Aliases: SSfpl
+> ### Keywords: models
+> 
+> ### ** Examples
+> 
+> Chick.1 <- ChickWeight[ChickWeight$Chick == 1, ]
+> SSfpl(Chick.1$Time, 13, 368, 14, 6)  # response only
+ [1]  44.38189  55.31704  69.39853  87.05603 108.47420 133.43149 161.18758
+ [8] 190.50000 219.81242 247.56851 272.52580 283.70240
+> local({
++   A <- 13; B <- 368; xmid <- 14; scal <- 6
++   SSfpl(Chick.1$Time, A, B, xmid, scal) # response _and_ gradient
++ })
+ [1]  44.38189  55.31704  69.39853  87.05603 108.47420 133.43149 161.18758
+ [8] 190.50000 219.81242 247.56851 272.52580 283.70240
+attr(,"gradient")
+              A          B       xmid       scal
+ [1,] 0.9116003 0.08839968  -4.767956  11.125231
+ [2,] 0.8807971 0.11920292  -6.212120  12.424241
+ [3,] 0.8411309 0.15886910  -7.906425  13.177374
+ [4,] 0.7913915 0.20860853  -9.767885  13.023846
+ [5,] 0.7310586 0.26894142 -11.632873  11.632873
+ [6,] 0.6607564 0.33924363 -13.262646   8.841764
+ [7,] 0.5825702 0.41742979 -14.388278   4.796093
+ [8,] 0.5000000 0.50000000 -14.791667   0.000000
+ [9,] 0.4174298 0.58257021 -14.388278  -4.796093
+[10,] 0.3392436 0.66075637 -13.262646  -8.841764
+[11,] 0.2689414 0.73105858 -11.632873 -11.632873
+[12,] 0.2374580 0.76254197 -10.713410 -12.498978
+> print(getInitial(weight ~ SSfpl(Time, A, B, xmid, scal), data = Chick.1),
++       digits = 5)
+       A        B     xmid     scal 
+ 27.4532 348.9712  19.3905   6.6726 
+> ## Initial values are in fact the converged values
+> fm1 <- nls(weight ~ SSfpl(Time, A, B, xmid, scal), data = Chick.1)
+> summary(fm1)
+
+Formula: weight ~ SSfpl(Time, A, B, xmid, scal)
+
+Parameters:
+     Estimate Std. Error t value Pr(>|t|)    
+A      27.453      6.601   4.159 0.003169 ** 
+B     348.971     57.899   6.027 0.000314 ***
+xmid   19.391      2.194   8.836 2.12e-05 ***
+scal    6.673      1.002   6.662 0.000159 ***
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+
+Residual standard error: 2.351 on 8 degrees of freedom
+
+> 
+> ## Visualizing the  SSfpl()  parametrization
+>   xx <- seq(-0.5, 5, length.out = 101)
+>   yy <- 1 + 4 / (1 + exp((2-xx))) # == SSfpl(xx, *) :
+>   stopifnot( all.equal(yy, SSfpl(xx, A = 1, B = 5, xmid = 2, scal = 1)) )
+>   require(graphics)
+>   op <- par(mar = c(0, 0, 3.5, 0))
+>   plot(xx, yy, type = "l", axes = FALSE, ylim = c(0,6), xlim = c(-1, 5),
++        xlab = "", ylab = "", lwd = 2,
++        main = "Parameters in the SSfpl model")
+>   mtext(quote(list(phi[1] == "A", phi[2] == "B", phi[3] == "xmid", phi[4] == "scal")))
+>   usr <- par("usr")
+>   arrows(usr[1], 0, usr[2], 0, length = 0.1, angle = 25)
+>   arrows(0, usr[3], 0, usr[4], length = 0.1, angle = 25)
+>   text(usr[2] - 0.2, 0.1, "x", adj = c(1, 0))
+>   text(     -0.1, usr[4], "y", adj = c(1, 1))
+>   abline(h = c(1, 5), lty = 3)
+>   arrows(-0.8, c(2.1, 2.9),
++          -0.8, c(0,   5  ), length = 0.1, angle = 25)
+>   text  (-0.8, 2.5, quote(phi[1]))
+>   arrows(-0.3, c(1/4, 3/4),
++          -0.3, c(0,   1  ), length = 0.07, angle = 25)
+>   text  (-0.3, 0.5, quote(phi[2]))
+>   text(2, -.1, quote(phi[3]))
+>   segments(c(2,3,3), c(0,3,4), # SSfpl(x = xmid = 2) = 3
++            c(2,3,2), c(3,4,3),    lty = 2, lwd = 0.75)
+>   arrows(c(2.3, 2.7), 3,
++          c(2.0, 3  ), 3, length = 0.08, angle = 25)
+>   text(      2.5,     3, quote(phi[4])); text(3.1, 3.5, "1")
+>   par(op)
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("SSgompertz")
+> ### * SSgompertz
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: SSgompertz
+> ### Title: Self-Starting Nls Gompertz Growth Model
+> ### Aliases: SSgompertz
+> ### Keywords: models
+> 
+> ### ** Examples
+> 
+> DNase.1 <- subset(DNase, Run == 1)
+> SSgompertz(log(DNase.1$conc), 4.5, 2.3, 0.7)  # response only
+ [1] 0.00525729 0.00525729 0.07323255 0.07323255 0.18049064 0.18049064
+ [7] 0.36508763 0.36508763 0.63288772 0.63288772 0.97257180 0.97257180
+[13] 1.36033340 1.36033340 1.76786902 1.76786902
+> local({  Asym <- 4.5; b2 <- 2.3; b3 <- 0.7
++   SSgompertz(log(DNase.1$conc), Asym, b2, b3) # response _and_ gradient
++ })
+ [1] 0.00525729 0.00525729 0.07323255 0.07323255 0.18049064 0.18049064
+ [7] 0.36508763 0.36508763 0.63288772 0.63288772 0.97257180 0.97257180
+[13] 1.36033340 1.36033340 1.76786902 1.76786902
+attr(,"gradient")
+             Asym          b2         b3
+ [1,] 0.001168287 -0.01543407  0.1531221
+ [2,] 0.001168287 -0.01543407  0.1531221
+ [3,] 0.016273900 -0.13112424  0.7036230
+ [4,] 0.016273900 -0.13112424  0.7036230
+ [5,] 0.040109031 -0.25238507  0.7795153
+ [6,] 0.040109031 -0.25238507  0.7795153
+ [7,] 0.081130585 -0.39869082  0.3233828
+ [8,] 0.081130585 -0.39869082  0.3233828
+ [9,] 0.140641716 -0.53975407 -0.7914802
+[10,] 0.140641716 -0.53975407 -0.7914802
+[11,] 0.216127067 -0.64777036 -2.4251586
+[12,] 0.216127067 -0.64777036 -2.4251586
+[13,] 0.302296311 -0.70757894 -4.2605728
+[14,] 0.302296311 -0.70757894 -4.2605728
+[15,] 0.392859783 -0.71814108 -5.9597255
+[16,] 0.392859783 -0.71814108 -5.9597255
+> print(getInitial(density ~ SSgompertz(log(conc), Asym, b2, b3),
++                  data = DNase.1), digits = 5)
+   Asym      b2      b3 
+4.60333 2.27134 0.71647 
+> ## Initial values are in fact the converged values
+> fm1 <- nls(density ~ SSgompertz(log(conc), Asym, b2, b3),
++            data = DNase.1)
+> summary(fm1)
+
+Formula: density ~ SSgompertz(log(conc), Asym, b2, b3)
+
+Parameters:
+     Estimate Std. Error t value Pr(>|t|)    
+Asym  4.60333    0.65321   7.047 8.71e-06 ***
+b2    2.27134    0.14373  15.803 7.24e-10 ***
+b3    0.71647    0.02206  32.475 7.85e-14 ***
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+
+Residual standard error: 0.02684 on 13 degrees of freedom
+
+> plot(density ~ log(conc), DNase.1, # xlim = c(0, 21),
++      main = "SSgompertz() fit to DNase.1")
+> ux <- par("usr")[1:2]; x <- seq(ux[1], ux[2], length.out=250)
+> lines(x, do.call(SSgompertz, c(list(x=x), coef(fm1))), col = "red", lwd=2)
+> As <- coef(fm1)[["Asym"]]; abline(v = 0, h = 0, lty = 3)
+> axis(2, at= exp(-coef(fm1)[["b2"]]), quote(e^{-b[2]}), las=1, pos=0)
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("SSlogis")
+> ### * SSlogis
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: SSlogis
+> ### Title: Self-Starting Nls Logistic Model
+> ### Aliases: SSlogis
+> ### Keywords: models
+> 
+> ### ** Examples
+> 
+> dwlg1 <- data.frame(Prop = c(rep(0,5), 2, 5, rep(9, 9)), end = 1:16)
+> iPar <- getInitial(Prop ~ SSlogis(end, Asym, xmid, scal), data = dwlg1)
+> ## failed in R <= 3.4.2 (because of the '0's in 'Prop')
+> stopifnot(all.equal(tolerance = 1e-6,
++    iPar, c(Asym = 9.0678, xmid = 6.79331, scal = 0.499934)))
+> 
+> ## Visualize the SSlogis()  model  parametrization :
+>   xx <- seq(-0.75, 5, by=1/32)
+>   yy <- 5 / (1 + exp((2-xx)/0.6)) # == SSlogis(xx, *):
+>   stopifnot( all.equal(yy, SSlogis(xx, Asym = 5, xmid = 2, scal = 0.6)) )
+>   require(graphics)
+>   op <- par(mar = c(0.5, 0, 3.5, 0))
+>   plot(xx, yy, type = "l", axes = FALSE, ylim = c(0,6), xlim = c(-1, 5),
++        xlab = "", ylab = "", lwd = 2,
++        main = "Parameters in the SSlogis model")
+>   mtext(quote(list(phi[1] == "Asym", phi[2] == "xmid", phi[3] == "scal")))
+>   usr <- par("usr")
+>   arrows(usr[1], 0, usr[2], 0, length = 0.1, angle = 25)
+>   arrows(0, usr[3], 0, usr[4], length = 0.1, angle = 25)
+>   text(usr[2] - 0.2, 0.1, "x", adj = c(1, 0))
+>   text(     -0.1, usr[4], "y", adj = c(1, 1))
+>   abline(h = 5, lty = 3)
+>   arrows(-0.8, c(2.1, 2.9),
++          -0.8, c(0,   5  ), length = 0.1, angle = 25)
+>   text  (-0.8, 2.5, quote(phi[1]))
+>   segments(c(2,2.6,2.6), c(0,  2.5,3.5),   # NB.  SSlogis(x = xmid = 2) = 2.5
++            c(2,2.6,2  ), c(2.5,3.5,2.5), lty = 2, lwd = 0.75)
+>   text(2, -.1, quote(phi[2]))
+>   arrows(c(2.2, 2.4), 2.5,
++          c(2.0, 2.6), 2.5, length = 0.08, angle = 25)
+>   text(      2.3,     2.5, quote(phi[3])); text(2.7, 3, "1")
+>   par(op)
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("SSmicmen")
+> ### * SSmicmen
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: SSmicmen
+> ### Title: Self-Starting Nls Michaelis-Menten Model
+> ### Aliases: SSmicmen
+> ### Keywords: models
+> 
+> ### ** Examples
+> 
+> PurTrt <- Puromycin[ Puromycin$state == "treated", ]
+> SSmicmen(PurTrt$conc, 200, 0.05)  # response only
+ [1]  57.14286  57.14286 109.09091 109.09091 137.50000 137.50000 162.96296
+ [8] 162.96296 183.60656 183.60656 191.30435 191.30435
+> local({  Vm <- 200; K <- 0.05
++   SSmicmen(PurTrt$conc, Vm, K)    # response _and_ gradient
++ })
+ [1]  57.14286  57.14286 109.09091 109.09091 137.50000 137.50000 162.96296
+ [8] 162.96296 183.60656 183.60656 191.30435 191.30435
+attr(,"gradient")
+             Vm         K
+ [1,] 0.2857143 -816.3265
+ [2,] 0.2857143 -816.3265
+ [3,] 0.5454545 -991.7355
+ [4,] 0.5454545 -991.7355
+ [5,] 0.6875000 -859.3750
+ [6,] 0.6875000 -859.3750
+ [7,] 0.8148148 -603.5665
+ [8,] 0.8148148 -603.5665
+ [9,] 0.9180328 -300.9944
+[10,] 0.9180328 -300.9944
+[11,] 0.9565217 -166.3516
+[12,] 0.9565217 -166.3516
+> print(getInitial(rate ~ SSmicmen(conc, Vm, K), data = PurTrt), digits = 3)
+      Vm        K 
+212.6837   0.0641 
+> ## Initial values are in fact the converged values
+> fm1 <- nls(rate ~ SSmicmen(conc, Vm, K), data = PurTrt)
+> summary(fm1)
+
+Formula: rate ~ SSmicmen(conc, Vm, K)
+
+Parameters:
+    Estimate Std. Error t value Pr(>|t|)    
+Vm 2.127e+02  6.947e+00  30.615 3.24e-11 ***
+K  6.412e-02  8.281e-03   7.743 1.57e-05 ***
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+
+Residual standard error: 10.93 on 10 degrees of freedom
+
+> ## Alternative call using the subset argument
+> fm2 <- nls(rate ~ SSmicmen(conc, Vm, K), data = Puromycin,
++            subset = state == "treated")
+> summary(fm2) # The same indeed:
+
+Formula: rate ~ SSmicmen(conc, Vm, K)
+
+Parameters:
+    Estimate Std. Error t value Pr(>|t|)    
+Vm 2.127e+02  6.947e+00  30.615 3.24e-11 ***
+K  6.412e-02  8.281e-03   7.743 1.57e-05 ***
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+
+Residual standard error: 10.93 on 10 degrees of freedom
+
+> stopifnot(all.equal(coef(summary(fm1)), coef(summary(fm2))))
+> 
+> ## Visualize the SSmicmen()  Michaelis-Menton model parametrization :
+> 
+>   xx <- seq(0, 5, length.out = 101)
+>   yy <- 5 * xx/(1+xx)
+>   stopifnot(all.equal(yy, SSmicmen(xx, Vm = 5, K = 1)))
+>   require(graphics)
+>   op <- par(mar = c(0, 0, 3.5, 0))
+>   plot(xx, yy, type = "l", lwd = 2, ylim = c(-1/4,6), xlim = c(-1, 5),
++        ann = FALSE, axes = FALSE, main = "Parameters in the SSmicmen model")
+>   mtext(quote(list(phi[1] == "Vm", phi[2] == "K")))
+>   usr <- par("usr")
+>   arrows(usr[1], 0, usr[2], 0, length = 0.1, angle = 25)
+>   arrows(0, usr[3], 0, usr[4], length = 0.1, angle = 25)
+>   text(usr[2] - 0.2, 0.1, "x", adj = c(1, 0))
+>   text(     -0.1, usr[4], "y", adj = c(1, 1))
+>   abline(h = 5, lty = 3)
+>   arrows(-0.8, c(2.1, 2.9),
++          -0.8, c(0,   5  ),  length = 0.1, angle = 25)
+>   text(  -0.8,     2.5, quote(phi[1]))
+>   segments(1, 0, 1, 2.7, lty = 2, lwd = 0.75)
+>   text(1, 2.7, quote(phi[2]))
+>   par(op)
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("SSweibull")
+> ### * SSweibull
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: SSweibull
+> ### Title: Self-Starting Nls Weibull Growth Curve Model
+> ### Aliases: SSweibull
+> ### Keywords: models
+> 
+> ### ** Examples
+> 
+> Chick.6 <- subset(ChickWeight, (Chick == 6) & (Time > 0))
+> SSweibull(Chick.6$Time, 160, 115, -5.5, 2.5)   # response only
+ [1]  47.62811  59.09743  79.79756 105.12008 128.41818 145.02585 154.25783
+ [8] 158.24919 159.58222 159.92314 159.97023
+> local({ Asym <- 160; Drop <- 115; lrc <- -5.5; pwr <- 2.5
++   SSweibull(Chick.6$Time, Asym, Drop, lrc, pwr) # response _and_ gradient
++ })
+ [1]  47.62811  59.09743  79.79756 105.12008 128.41818 145.02585 154.25783
+ [8] 158.24919 159.58222 159.92314 159.97023
+attr(,"gradient")
+      Asym          Drop        lrc        pwr
+ [1,]    1 -0.9771469094  2.5978438  1.8006881
+ [2,]    1 -0.8774136912 13.1957043 18.2931305
+ [3,]    1 -0.6974125358 28.9032091 51.7875987
+ [4,]    1 -0.4772166721 40.5993205 84.4239136
+ [5,]    1 -0.2746244909 40.8147795 93.9795029
+ [6,]    1 -0.1302099955 30.5264027 75.8552610
+ [7,]    1 -0.0499319343 17.2098335 45.4177374
+ [8,]    1 -0.0152244293  7.3268815 20.3144290
+ [9,]    1 -0.0036328431  2.3469622  6.7835933
+[10,]    1 -0.0006683898  0.5619310  1.6833949
+[11,]    1 -0.0002589123  0.2459116  0.7486834
+> ## IGNORE_RDIFF_BEGIN
+> getInitial(weight ~ SSweibull(Time, Asym, Drop, lrc, pwr), data = Chick.6)
+      Asym       Drop        lrc        pwr 
+158.501204 110.997081  -5.993421   2.646141 
+> ## IGNORE_RDIFF_END
+> ## Initial values are in fact the converged values
+> fm1 <- nls(weight ~ SSweibull(Time, Asym, Drop, lrc, pwr), data = Chick.6)
+> summary(fm1)
+
+Formula: weight ~ SSweibull(Time, Asym, Drop, lrc, pwr)
+
+Parameters:
+     Estimate Std. Error t value Pr(>|t|)    
+Asym 158.5012     1.1769  134.67 3.28e-13 ***
+Drop 110.9971     2.6330   42.16 1.10e-09 ***
+lrc   -5.9934     0.3733  -16.05 8.83e-07 ***
+pwr    2.6461     0.1613   16.41 7.62e-07 ***
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+
+Residual standard error: 2.061 on 7 degrees of freedom
+
+> ## Data and Fit:
+> plot(weight ~ Time, Chick.6, xlim = c(0, 21), main = "SSweibull() fit to Chick.6")
+> ux <- par("usr")[1:2]; x <- seq(ux[1], ux[2], length.out=250)
+> lines(x, do.call(SSweibull, c(list(x=x), coef(fm1))), col = "red", lwd=2)
+> As <- coef(fm1)[["Asym"]]; abline(v = 0, h = c(As, As - coef(fm1)[["Drop"]]), lty = 3)
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("SignRank")
+> ### * SignRank
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: SignRank
+> ### Title: Distribution of the Wilcoxon Signed Rank Statistic
+> ### Aliases: SignRank dsignrank psignrank qsignrank rsignrank
+> ### Keywords: distribution
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> par(mfrow = c(2,2))
+> for(n in c(4:5,10,40)) {
++   x <- seq(0, n*(n+1)/2, length.out = 501)
++   plot(x, dsignrank(x, n = n), type = "l",
++        main = paste0("dsignrank(x, n = ", n, ")"))
++ }
+> ## Don't show: 
+> p <- c(1, 1, 1, 2, 2:6, 8, 10, 11, 13, 15, 17, 20, 22, 24,
++        27, 29, 31, 33, 35, 36, 38, 39, 39, 40)
+> stopifnot(round(dsignrank(0:56, n = 10)* 2^10) == c(p, rev(p), 0),
++           qsignrank((1:16)/ 16, n = 4) == c(0:2, rep(3:7, each = 2), 8:10))
+> ## End(Don't show)
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("StructTS")
+> ### * StructTS
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: StructTS
+> ### Title: Fit Structural Time Series
+> ### Aliases: StructTS print.StructTS predict.StructTS
+> ### Keywords: ts
+> 
+> ### ** Examples
+> 
+> ## see also JohnsonJohnson, Nile and AirPassengers
+> require(graphics)
+> 
+> trees <- window(treering, start = 0)
+> (fit <- StructTS(trees, type = "level"))
+
+Call:
+StructTS(x = trees, type = "level")
+
+Variances:
+  level  epsilon  
+0.00037  0.07199  
+> plot(trees)
+> lines(fitted(fit), col = "green")
+> tsdiag(fit)
+> 
+> (fit <- StructTS(log10(UKgas), type = "BSM"))
+
+Call:
+StructTS(x = log10(UKgas), type = "BSM")
+
+Variances:
+    level      slope       seas    epsilon  
+0.000e+00  1.733e-05  7.137e-04  3.678e-04  
+> par(mfrow = c(4, 1)) # to give appropriate aspect ratio for next plot.
+> plot(log10(UKgas))
+> plot(cbind(fitted(fit), resids=resid(fit)), main = "UK gas consumption")
+> 
+> ## keep some parameters fixed; trace optimizer:
+> StructTS(log10(UKgas), type = "BSM", fixed = c(0.1,0.001,NA,NA),
++          optim.control = list(trace = TRUE))
+iter   10 value -0.936176
+final  value -0.936176 
+converged
+
+Call:
+StructTS(x = log10(UKgas), type = "BSM", fixed = c(0.1, 0.001, NA, NA), optim.control = list(trace = TRUE))
+
+Variances:
+    level      slope       seas    epsilon  
+0.1000000  0.0010000  0.0003012  0.0000000  
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("TDist")
+> ### * TDist
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: TDist
+> ### Title: The Student t Distribution
+> ### Aliases: TDist dt pt qt rt
+> ### Keywords: distribution
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> 1 - pt(1:5, df = 1)
+[1] 0.25000000 0.14758362 0.10241638 0.07797913 0.06283296
+> qt(.975, df = c(1:10,20,50,100,1000))
+ [1] 12.706205  4.302653  3.182446  2.776445  2.570582  2.446912  2.364624
+ [8]  2.306004  2.262157  2.228139  2.085963  2.008559  1.983972  1.962339
+> 
+> tt <- seq(0, 10, length.out = 21)
+> ncp <- seq(0, 6, length.out = 31)
+> ptn <- outer(tt, ncp, function(t, d) pt(t, df = 3, ncp = d))
+> t.tit <- "Non-central t - Probabilities"
+> image(tt, ncp, ptn, zlim = c(0,1), main = t.tit)
+> persp(tt, ncp, ptn, zlim = 0:1, r = 2, phi = 20, theta = 200, main = t.tit,
++       xlab = "t", ylab = "non-centrality parameter",
++       zlab = "Pr(T <= t)")
+> 
+> plot(function(x) dt(x, df = 3, ncp = 2), -3, 11, ylim = c(0, 0.32),
++      main = "Non-central t - Density", yaxs = "i")
+> 
+> 
+> 
+> cleanEx()
+> nameEx("Tukey")
+> ### * Tukey
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: Tukey
+> ### Title: The Studentized Range Distribution
+> ### Aliases: Tukey ptukey qtukey
+> ### Keywords: distribution
+> 
+> ### ** Examples
+> 
+> if(interactive())
++   curve(ptukey(x, nm = 6, df = 5), from = -1, to = 8, n = 101)
+> (ptt <- ptukey(0:10, 2, df =  5))
+ [1] 0.0000000 0.4889159 0.7835628 0.9126407 0.9632574 0.9833586 0.9918510
+ [8] 0.9957141 0.9976011 0.9985838 0.9991249
+> (qtt <- qtukey(.95, 2, df =  2:11))
+ [1] 6.079637 4.500659 3.926503 3.635351 3.460456 3.344084 3.261182 3.199173
+ [9] 3.151064 3.112663
+> ## The precision may be not much more than about 8 digits:
+> 
+> 
+> 
+> cleanEx()
+> nameEx("TukeyHSD")
+> ### * TukeyHSD
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: TukeyHSD
+> ### Title: Compute Tukey Honest Significant Differences
+> ### Aliases: TukeyHSD
+> ### Keywords: models design
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> summary(fm1 <- aov(breaks ~ wool + tension, data = warpbreaks))
+            Df Sum Sq Mean Sq F value  Pr(>F)   
+wool         1    451   450.7   3.339 0.07361 . 
+tension      2   2034  1017.1   7.537 0.00138 **
+Residuals   50   6748   135.0                   
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+> TukeyHSD(fm1, "tension", ordered = TRUE)
+  Tukey multiple comparisons of means
+    95% family-wise confidence level
+    factor levels have been ordered
+
+Fit: aov(formula = breaks ~ wool + tension, data = warpbreaks)
+
+$tension
+         diff        lwr      upr     p adj
+M-H  4.722222 -4.6311985 14.07564 0.4474210
+L-H 14.722222  5.3688015 24.07564 0.0011218
+L-M 10.000000  0.6465793 19.35342 0.0336262
+
+> plot(TukeyHSD(fm1, "tension"))
+> 
+> 
+> 
+> cleanEx()
+> nameEx("Uniform")
+> ### * Uniform
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: Uniform
+> ### Title: The Uniform Distribution
+> ### Aliases: Uniform dunif punif qunif runif
+> ### Keywords: distribution
+> 
+> ### ** Examples
+> 
+> u <- runif(20)
+> 
+> ## The following relations always hold :
+> punif(u) == u
+ [1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
+[16] TRUE TRUE TRUE TRUE TRUE
+> dunif(u) == 1
+ [1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
+[16] TRUE TRUE TRUE TRUE TRUE
+> 
+> var(runif(10000))  #- ~ = 1/12 = .08333
+[1] 0.08475621
+> 
+> 
+> 
+> cleanEx()
+> nameEx("Weibull")
+> ### * Weibull
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: Weibull
+> ### Title: The Weibull Distribution
+> ### Aliases: Weibull dweibull pweibull qweibull rweibull
+> ### Keywords: distribution
+> 
+> ### ** Examples
+> 
+> x <- c(0, rlnorm(50))
+> all.equal(dweibull(x, shape = 1), dexp(x))
+[1] TRUE
+> all.equal(pweibull(x, shape = 1, scale = pi), pexp(x, rate = 1/pi))
+[1] TRUE
+> ## Cumulative hazard H():
+> all.equal(pweibull(x, 2.5, pi, lower.tail = FALSE, log.p = TRUE),
++           -(x/pi)^2.5, tolerance = 1e-15)
+[1] TRUE
+> all.equal(qweibull(x/11, shape = 1, scale = pi), qexp(x/11, rate = 1/pi))
+[1] TRUE
+> 
+> 
+> 
+> cleanEx()
+> nameEx("Wilcoxon")
+> ### * Wilcoxon
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: Wilcoxon
+> ### Title: Distribution of the Wilcoxon Rank Sum Statistic
+> ### Aliases: Wilcoxon dwilcox pwilcox qwilcox rwilcox
+> ### Keywords: distribution
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> x <- -1:(4*6 + 1)
+> fx <- dwilcox(x, 4, 6)
+> Fx <- pwilcox(x, 4, 6)
+> 
+> layout(rbind(1,2), widths = 1, heights = c(3,2))
+> plot(x, fx, type = "h", col = "violet",
++      main =  "Probabilities (density) of Wilcoxon-Statist.(n=6, m=4)")
+> plot(x, Fx, type = "s", col = "blue",
++      main =  "Distribution of Wilcoxon-Statist.(n=6, m=4)")
+> abline(h = 0:1, col = "gray20", lty = 2)
+> layout(1) # set back
+> 
+> N <- 200
+> hist(U <- rwilcox(N, m = 4,n = 6), breaks = 0:25 - 1/2,
++      border = "red", col = "pink", sub = paste("N =",N))
+> mtext("N * f(x),  f() = true \"density\"", side = 3, col = "blue")
+>  lines(x, N*fx, type = "h", col = "blue", lwd = 2)
+> points(x, N*fx, cex = 2)
+> 
+> ## Better is a Quantile-Quantile Plot
+> qqplot(U, qw <- qwilcox((1:N - 1/2)/N, m = 4, n = 6),
++        main = paste("Q-Q-Plot of empirical and theoretical quantiles",
++                      "Wilcoxon Statistic,  (m=4, n=6)", sep = "\n"))
+> n <- as.numeric(names(print(tU <- table(U))))
+U
+ 0  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 
+ 1  2  4  5  5  5  7 12 13 14 12 23 16  9 13 16 13 11 14  1  1  2  1 
+> text(n+.2, n+.5, labels = tU, col = "red")
+> 
+> 
+> 
+> cleanEx()
+> nameEx("acf")
+> ### * acf
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: acf
+> ### Title: Auto- and Cross- Covariance and -Correlation Function Estimation
+> ### Aliases: acf ccf pacf pacf.default [.acf
+> ### Keywords: ts
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> ## Examples from Venables & Ripley
+> acf(lh)
+> acf(lh, type = "covariance")
+> pacf(lh)
+> 
+> acf(ldeaths)
+> acf(ldeaths, ci.type = "ma")
+> acf(ts.union(mdeaths, fdeaths))
+> ccf(mdeaths, fdeaths, ylab = "cross-correlation")
+> # (just the cross-correlations)
+> 
+> presidents # contains missing values
+     Qtr1 Qtr2 Qtr3 Qtr4
+1945   NA   87   82   75
+1946   63   50   43   32
+1947   35   60   54   55
+1948   36   39   NA   NA
+1949   69   57   57   51
+1950   45   37   46   39
+1951   36   24   32   23
+1952   25   32   NA   32
+1953   59   74   75   60
+1954   71   61   71   57
+1955   71   68   79   73
+1956   76   71   67   75
+1957   79   62   63   57
+1958   60   49   48   52
+1959   57   62   61   66
+1960   71   62   61   57
+1961   72   83   71   78
+1962   79   71   62   74
+1963   76   64   62   57
+1964   80   73   69   69
+1965   71   64   69   62
+1966   63   46   56   44
+1967   44   52   38   46
+1968   36   49   35   44
+1969   59   65   65   56
+1970   66   53   61   52
+1971   51   48   54   49
+1972   49   61   NA   NA
+1973   68   44   40   27
+1974   28   25   24   24
+> acf(presidents, na.action = na.pass)
+> pacf(presidents, na.action = na.pass)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("acf2AR")
+> ### * acf2AR
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: acf2AR
+> ### Title: Compute an AR Process Exactly Fitting an ACF
+> ### Aliases: acf2AR
+> ### Keywords: ts
+> 
+> ### ** Examples
+> 
+> (Acf <- ARMAacf(c(0.6, 0.3, -0.2)))
+        0         1         2         3 
+1.0000000 0.6923077 0.5769231 0.3538462 
+> acf2AR(Acf)
+              1      2    3
+ar(1) 0.6923077 0.0000  0.0
+ar(2) 0.5625000 0.1875  0.0
+ar(3) 0.6000000 0.3000 -0.2
+> 
+> 
+> 
+> cleanEx()
+> nameEx("add1")
+> ### * add1
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: add1
+> ### Title: Add or Drop All Possible Single Terms to a Model
+> ### Aliases: add1 add1.default add1.lm add1.glm drop1 drop1.default
+> ###   drop1.lm drop1.glm
+> ### Keywords: models
+> 
+> ### ** Examples
+> 
+> ## Don't show: 
+> od <- options(digits = 5)
+> ## End(Don't show)
+> require(graphics); require(utils)
+> ## following example(swiss)
+> lm1 <- lm(Fertility ~ ., data = swiss)
+> add1(lm1, ~ I(Education^2) + .^2)
+Single term additions
+
+Model:
+Fertility ~ Agriculture + Examination + Education + Catholic + 
+    Infant.Mortality
+                             Df Sum of Sq  RSS AIC
+<none>                                    2105 191
+I(Education^2)                1      11.8 2093 192
+Agriculture:Examination       1      10.7 2094 192
+Agriculture:Education         1       1.8 2103 193
+Agriculture:Catholic          1      75.0 2030 191
+Agriculture:Infant.Mortality  1       4.4 2101 193
+Examination:Education         1      48.7 2056 192
+Examination:Catholic          1      40.8 2064 192
+Examination:Infant.Mortality  1      65.9 2039 191
+Education:Catholic            1     278.2 1827 186
+Education:Infant.Mortality    1      93.0 2012 191
+Catholic:Infant.Mortality     1       2.4 2103 193
+> drop1(lm1, test = "F")  # So called 'type II' anova
+Single term deletions
+
+Model:
+Fertility ~ Agriculture + Examination + Education + Catholic + 
+    Infant.Mortality
+                 Df Sum of Sq  RSS AIC F value  Pr(>F)    
+<none>                        2105 191                    
+Agriculture       1       308 2413 195    5.99  0.0187 *  
+Examination       1        53 2158 190    1.03  0.3155    
+Education         1      1163 3268 209   22.64 2.4e-05 ***
+Catholic          1       448 2553 198    8.72  0.0052 ** 
+Infant.Mortality  1       409 2514 197    7.96  0.0073 ** 
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+> 
+> ## following example(glm)
+> ## Don't show: 
+> example(glm, echo = FALSE)
+> ## End(Don't show)
+> drop1(glm.D93, test = "Chisq")
+Single term deletions
+
+Model:
+counts ~ outcome + treatment
+          Df Deviance  AIC  LRT Pr(>Chi)  
+<none>           5.13 56.8                
+outcome    2    10.58 58.2 5.45    0.065 .
+treatment  2     5.13 52.8 0.00    1.000  
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+> drop1(glm.D93, test = "F")
+Warning in drop1.glm(glm.D93, test = "F") :
+  F test assumes 'quasipoisson' family
+Single term deletions
+
+Model:
+counts ~ outcome + treatment
+          Df Deviance  AIC F value Pr(>F)
+<none>           5.13 56.8               
+outcome    2    10.58 58.2    2.13   0.23
+treatment  2     5.13 52.8    0.00   1.00
+> add1(glm.D93, scope = ~outcome*treatment, test = "Rao") ## Pearson Chi-square
+Single term additions
+
+Model:
+counts ~ outcome + treatment
+                  Df Deviance  AIC Rao score Pr(>Chi)
+<none>                   5.13 56.8                   
+outcome:treatment  4     0.00 59.6      5.17     0.27
+> ## Don't show: 
+> options(od)
+> ## End(Don't show)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("addmargins")
+> ### * addmargins
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: addmargins
+> ### Title: Puts Arbitrary Margins on Multidimensional Tables or Arrays
+> ### Aliases: addmargins
+> ### Keywords: manip array
+> 
+> ### ** Examples
+> 
+> Aye <- sample(c("Yes", "Si", "Oui"), 177, replace = TRUE)
+> Bee <- sample(c("Hum", "Buzz"), 177, replace = TRUE)
+> Sea <- sample(c("White", "Black", "Red", "Dead"), 177, replace = TRUE)
+> (A <- table(Aye, Bee, Sea))
+, , Sea = Black
+
+     Bee
+Aye   Buzz Hum
+  Oui    7   4
+  Si     5   7
+  Yes    7   7
+
+, , Sea = Dead
+
+     Bee
+Aye   Buzz Hum
+  Oui    8   7
+  Si    10   7
+  Yes   10   3
+
+, , Sea = Red
+
+     Bee
+Aye   Buzz Hum
+  Oui    2  12
+  Si     4   7
+  Yes    8   7
+
+, , Sea = White
+
+     Bee
+Aye   Buzz Hum
+  Oui    7  12
+  Si    13  10
+  Yes    6   7
+
+> (aA <- addmargins(A))
+, , Sea = Black
+
+     Bee
+Aye   Buzz Hum Sum
+  Oui    7   4  11
+  Si     5   7  12
+  Yes    7   7  14
+  Sum   19  18  37
+
+, , Sea = Dead
+
+     Bee
+Aye   Buzz Hum Sum
+  Oui    8   7  15
+  Si    10   7  17
+  Yes   10   3  13
+  Sum   28  17  45
+
+, , Sea = Red
+
+     Bee
+Aye   Buzz Hum Sum
+  Oui    2  12  14
+  Si     4   7  11
+  Yes    8   7  15
+  Sum   14  26  40
+
+, , Sea = White
+
+     Bee
+Aye   Buzz Hum Sum
+  Oui    7  12  19
+  Si    13  10  23
+  Yes    6   7  13
+  Sum   26  29  55
+
+, , Sea = Sum
+
+     Bee
+Aye   Buzz Hum Sum
+  Oui   24  35  59
+  Si    32  31  63
+  Yes   31  24  55
+  Sum   87  90 177
+
+> ## Don't show: 
+> stopifnot(is.table(aA))
+> ## End(Don't show)
+> ftable(A)
+         Sea Black Dead Red White
+Aye Bee                          
+Oui Buzz         7    8   2     7
+    Hum          4    7  12    12
+Si  Buzz         5   10   4    13
+    Hum          7    7   7    10
+Yes Buzz         7   10   8     6
+    Hum          7    3   7     7
+> ftable(aA)
+         Sea Black Dead Red White Sum
+Aye Bee                              
+Oui Buzz         7    8   2     7  24
+    Hum          4    7  12    12  35
+    Sum         11   15  14    19  59
+Si  Buzz         5   10   4    13  32
+    Hum          7    7   7    10  31
+    Sum         12   17  11    23  63
+Yes Buzz         7   10   8     6  31
+    Hum          7    3   7     7  24
+    Sum         14   13  15    13  55
+Sum Buzz        19   28  14    26  87
+    Hum         18   17  26    29  90
+    Sum         37   45  40    55 177
+> 
+> # Non-commutative functions - note differences between resulting tables:
+> ftable( addmargins(A, c(3, 1),
++                    FUN = list(list(Min = min, Max = max),
++                               Sum = sum)))
+Margins computed over dimensions
+in the following order:
+1: Sea
+2: Aye
+         Sea Black Dead Red White Min Max
+Aye Bee                                  
+Oui Buzz         7    8   2     7   2   8
+    Hum          4    7  12    12   4  12
+Si  Buzz         5   10   4    13   4  13
+    Hum          7    7   7    10   7  10
+Yes Buzz         7   10   8     6   6  10
+    Hum          7    3   7     7   3   7
+Sum Buzz        19   28  14    26  12  31
+    Hum         18   17  26    29  14  29
+> ftable( addmargins(A, c(1, 3),
++                    FUN = list(Sum = sum,
++                               list(Min = min, Max = max))))
+Margins computed over dimensions
+in the following order:
+1: Aye
+2: Sea
+         Sea Black Dead Red White Min Max
+Aye Bee                                  
+Oui Buzz         7    8   2     7   2   8
+    Hum          4    7  12    12   4  12
+Si  Buzz         5   10   4    13   4  13
+    Hum          7    7   7    10   7  10
+Yes Buzz         7   10   8     6   6  10
+    Hum          7    3   7     7   3   7
+Sum Buzz        19   28  14    26  14  28
+    Hum         18   17  26    29  17  29
+> 
+> # Weird function needed to return the N when computing percentages
+> sqsm <- function(x) sum(x)^2/100
+> B <- table(Sea, Bee)
+> round(sweep(addmargins(B, 1, list(list(All = sum, N = sqsm))), 2,
++             apply(B, 2, sum)/100, `/`), 1)
+       Bee
+Sea      Buzz   Hum
+  Black  21.8  20.0
+  Dead   32.2  18.9
+  Red    16.1  28.9
+  White  29.9  32.2
+  All   100.0 100.0
+  N      87.0  90.0
+> round(sweep(addmargins(B, 2, list(list(All = sum, N = sqsm))), 1,
++             apply(B, 1, sum)/100, `/`), 1)
+       Bee
+Sea      Buzz   Hum   All     N
+  Black  51.4  48.6 100.0  37.0
+  Dead   62.2  37.8 100.0  45.0
+  Red    35.0  65.0 100.0  40.0
+  White  47.3  52.7 100.0  55.0
+> 
+> # A total over Bee requires formation of the Bee-margin first:
+> mB <-  addmargins(B, 2, FUN = list(list(Total = sum)))
+> round(ftable(sweep(addmargins(mB, 1, list(list(All = sum, N = sqsm))), 2,
++                    apply(mB, 2, sum)/100, `/`)), 1)
+      Bee  Buzz   Hum Total
+Sea                        
+Black      21.8  20.0  20.9
+Dead       32.2  18.9  25.4
+Red        16.1  28.9  22.6
+White      29.9  32.2  31.1
+All       100.0 100.0 100.0
+N          87.0  90.0 177.0
+> 
+> ## Zero.Printing table+margins:
+> set.seed(1)
+> x <- sample( 1:7, 20, replace = TRUE)
+> y <- sample( 1:7, 20, replace = TRUE)
+> tx <- addmargins( table(x, y) )
+> print(tx, zero.print = ".")
+     y
+x      1  2  3  4  5  6  7 Sum
+  1    2  .  .  .  1  .  .   3
+  2    2  1  .  .  .  1  .   4
+  3    .  1  .  .  1  1  .   3
+  4    .  .  .  .  .  .  1   1
+  5    1  .  .  1  .  .  1   3
+  6    .  .  1  1  1  .  .   3
+  7    .  1  .  .  1  1  .   3
+  Sum  5  3  1  2  4  3  2  20
+> 
+> 
+> 
+> cleanEx()
+> nameEx("aggregate")
+> ### * aggregate
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: aggregate
+> ### Title: Compute Summary Statistics of Data Subsets
+> ### Aliases: aggregate aggregate.default aggregate.data.frame
+> ###   aggregate.formula aggregate.ts
+> ### Keywords: category array
+> 
+> ### ** Examples
+> 
+> ## Compute the averages for the variables in 'state.x77', grouped
+> ## according to the region (Northeast, South, North Central, West) that
+> ## each state belongs to.
+> aggregate(state.x77, list(Region = state.region), mean)
+         Region Population   Income Illiteracy Life Exp    Murder  HS Grad
+1     Northeast   5495.111 4570.222   1.000000 71.26444  4.722222 53.96667
+2         South   4208.125 4011.938   1.737500 69.70625 10.581250 44.34375
+3 North Central   4803.000 4611.083   0.700000 71.76667  5.275000 54.51667
+4          West   2915.308 4702.615   1.023077 71.23462  7.215385 62.00000
+     Frost      Area
+1 132.7778  18141.00
+2  64.6250  54605.12
+3 138.8333  62652.00
+4 102.1538 134463.00
+> 
+> ## Compute the averages according to region and the occurrence of more
+> ## than 130 days of frost.
+> aggregate(state.x77,
++           list(Region = state.region,
++                Cold = state.x77[,"Frost"] > 130),
++           mean)
+         Region  Cold Population   Income Illiteracy Life Exp    Murder
+1     Northeast FALSE  8802.8000 4780.400  1.1800000 71.12800  5.580000
+2         South FALSE  4208.1250 4011.938  1.7375000 69.70625 10.581250
+3 North Central FALSE  7233.8333 4633.333  0.7833333 70.95667  8.283333
+4          West FALSE  4582.5714 4550.143  1.2571429 71.70000  6.828571
+5     Northeast  TRUE  1360.5000 4307.500  0.7750000 71.43500  3.650000
+6 North Central  TRUE  2372.1667 4588.833  0.6166667 72.57667  2.266667
+7          West  TRUE   970.1667 4880.500  0.7500000 70.69167  7.666667
+   HS Grad    Frost      Area
+1 52.06000 110.6000  21838.60
+2 44.34375  64.6250  54605.12
+3 53.36667 120.0000  56736.50
+4 60.11429  51.0000  91863.71
+5 56.35000 160.5000  13519.00
+6 55.66667 157.6667  68567.50
+7 64.20000 161.8333 184162.17
+> ## (Note that no state in 'South' is THAT cold.)
+> 
+> 
+> ## example with character variables and NAs
+> testDF <- data.frame(v1 = c(1,3,5,7,8,3,5,NA,4,5,7,9),
++                      v2 = c(11,33,55,77,88,33,55,NA,44,55,77,99) )
+> by1 <- c("red", "blue", 1, 2, NA, "big", 1, 2, "red", 1, NA, 12)
+> by2 <- c("wet", "dry", 99, 95, NA, "damp", 95, 99, "red", 99, NA, NA)
+> aggregate(x = testDF, by = list(by1, by2), FUN = "mean")
+  Group.1 Group.2 v1 v2
+1       1      95  5 55
+2       2      95  7 77
+3       1      99  5 55
+4       2      99 NA NA
+5     big    damp  3 33
+6    blue     dry  3 33
+7     red     red  4 44
+8     red     wet  1 11
+> 
+> # and if you want to treat NAs as a group
+> fby1 <- factor(by1, exclude = "")
+> fby2 <- factor(by2, exclude = "")
+> aggregate(x = testDF, by = list(fby1, fby2), FUN = "mean")
+   Group.1 Group.2  v1   v2
+1        1      95 5.0 55.0
+2        2      95 7.0 77.0
+3        1      99 5.0 55.0
+4        2      99  NA   NA
+5      big    damp 3.0 33.0
+6     blue     dry 3.0 33.0
+7      red     red 4.0 44.0
+8      red     wet 1.0 11.0
+9       12    <NA> 9.0 99.0
+10    <NA>    <NA> 7.5 82.5
+> 
+> 
+> ## Formulas, one ~ one, one ~ many, many ~ one, and many ~ many:
+> aggregate(weight ~ feed, data = chickwts, mean)
+       feed   weight
+1    casein 323.5833
+2 horsebean 160.2000
+3   linseed 218.7500
+4  meatmeal 276.9091
+5   soybean 246.4286
+6 sunflower 328.9167
+> aggregate(breaks ~ wool + tension, data = warpbreaks, mean)
+  wool tension   breaks
+1    A       L 44.55556
+2    B       L 28.22222
+3    A       M 24.00000
+4    B       M 28.77778
+5    A       H 24.55556
+6    B       H 18.77778
+> aggregate(cbind(Ozone, Temp) ~ Month, data = airquality, mean)
+  Month    Ozone     Temp
+1     5 23.61538 66.73077
+2     6 29.44444 78.22222
+3     7 59.11538 83.88462
+4     8 59.96154 83.96154
+5     9 31.44828 76.89655
+> aggregate(cbind(ncases, ncontrols) ~ alcgp + tobgp, data = esoph, sum)
+       alcgp    tobgp ncases ncontrols
+1  0-39g/day 0-9g/day      9       252
+2      40-79 0-9g/day     34       145
+3     80-119 0-9g/day     19        42
+4       120+ 0-9g/day     16         8
+5  0-39g/day    10-19     10        74
+6      40-79    10-19     17        68
+7     80-119    10-19     19        30
+8       120+    10-19     12         6
+9  0-39g/day    20-29      5        37
+10     40-79    20-29     15        47
+11    80-119    20-29      6        10
+12      120+    20-29      7         5
+13 0-39g/day      30+      5        23
+14     40-79      30+      9        20
+15    80-119      30+      7         5
+16      120+      30+     10         3
+> 
+> ## Dot notation:
+> aggregate(. ~ Species, data = iris, mean)
+     Species Sepal.Length Sepal.Width Petal.Length Petal.Width
+1     setosa        5.006       3.428        1.462       0.246
+2 versicolor        5.936       2.770        4.260       1.326
+3  virginica        6.588       2.974        5.552       2.026
+> aggregate(len ~ ., data = ToothGrowth, mean)
+  supp dose   len
+1   OJ  0.5 13.23
+2   VC  0.5  7.98
+3   OJ  1.0 22.70
+4   VC  1.0 16.77
+5   OJ  2.0 26.06
+6   VC  2.0 26.14
+> 
+> ## Often followed by xtabs():
+> ag <- aggregate(len ~ ., data = ToothGrowth, mean)
+> xtabs(len ~ ., data = ag)
+    dose
+supp   0.5     1     2
+  OJ 13.23 22.70 26.06
+  VC  7.98 16.77 26.14
+> 
+> 
+> ## Compute the average annual approval ratings for American presidents.
+> aggregate(presidents, nfrequency = 1, FUN = mean)
+Time Series:
+Start = 1945 
+End = 1974 
+Frequency = 1 
+ [1]    NA 47.00 51.00    NA 58.50 41.75 28.75    NA 67.00 65.00 72.75 72.25
+[13] 65.25 52.25 61.50 62.75 76.00 71.50 64.75 72.75 66.50 52.25 45.00 41.00
+[25] 61.25 58.00 50.50    NA 44.75 25.25
+> ## Give the summer less weight.
+> aggregate(presidents, nfrequency = 1,
++           FUN = weighted.mean, w = c(1, 1, 0.5, 1))
+Time Series:
+Start = 1945 
+End = 1974 
+Frequency = 1 
+ [1]       NA 47.57143 50.57143       NA 58.71429 41.14286 28.28571       NA
+ [9] 65.85714 64.14286 71.85714 73.00000 65.57143 52.85714 61.57143 63.00000
+[17] 76.71429 72.85714 65.14286 73.28571 66.14286 51.71429 46.00000 41.85714
+[25] 60.71429 57.57143 50.00000       NA 45.42857 25.42857
+> 
+> 
+> 
+> cleanEx()
+> nameEx("alias")
+> ### * alias
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: alias
+> ### Title: Find Aliases (Dependencies) in a Model
+> ### Aliases: alias alias.formula alias.lm
+> ### Keywords: models
+> 
+> ### ** Examples
+> 
+> 
+> cleanEx()
+> nameEx("anova.glm")
+> ### * anova.glm
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: anova.glm
+> ### Title: Analysis of Deviance for Generalized Linear Model Fits
+> ### Aliases: anova.glm
+> ### Keywords: models regression
+> 
+> ### ** Examples
+> 
+> ## --- Continuing the Example from  '?glm':
+> ## Don't show: 
+> require(utils)
+> example("glm", echo = FALSE)
+> ## End(Don't show)
+> anova(glm.D93)
+Analysis of Deviance Table
+
+Model: poisson, link: log
+
+Response: counts
+
+Terms added sequentially (first to last)
+
+
+          Df Deviance Resid. Df Resid. Dev
+NULL                          8    10.5814
+outcome    2   5.4523         6     5.1291
+treatment  2   0.0000         4     5.1291
+> anova(glm.D93, test = "Cp")
+Analysis of Deviance Table
+
+Model: poisson, link: log
+
+Response: counts
+
+Terms added sequentially (first to last)
+
+
+          Df Deviance Resid. Df Resid. Dev     Cp
+NULL                          8    10.5814 12.581
+outcome    2   5.4523         6     5.1291 11.129
+treatment  2   0.0000         4     5.1291 15.129
+> anova(glm.D93, test = "Chisq")
+Analysis of Deviance Table
+
+Model: poisson, link: log
+
+Response: counts
+
+Terms added sequentially (first to last)
+
+
+          Df Deviance Resid. Df Resid. Dev Pr(>Chi)  
+NULL                          8    10.5814           
+outcome    2   5.4523         6     5.1291  0.06547 .
+treatment  2   0.0000         4     5.1291  1.00000  
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+> glm.D93a <-
++    update(glm.D93, ~treatment*outcome) # equivalent to Pearson Chi-square
+> anova(glm.D93, glm.D93a, test = "Rao")
+Analysis of Deviance Table
+
+Model 1: counts ~ outcome + treatment
+Model 2: counts ~ treatment + outcome + treatment:outcome
+  Resid. Df Resid. Dev Df Deviance    Rao Pr(>Chi)
+1         4     5.1291                            
+2         0     0.0000  4   5.1291 5.1732     0.27
+> 
+> 
+> 
+> cleanEx()
+> nameEx("anova.lm")
+> ### * anova.lm
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: anova.lm
+> ### Title: ANOVA for Linear Model Fits
+> ### Aliases: anova.lm anova.lmlist
+> ### Keywords: regression models
+> 
+> ### ** Examples
+> 
+> ## sequential table
+> fit <- lm(sr ~ ., data = LifeCycleSavings)
+> anova(fit)
+Analysis of Variance Table
+
+Response: sr
+          Df Sum Sq Mean Sq F value    Pr(>F)    
+pop15      1 204.12 204.118 14.1157 0.0004922 ***
+pop75      1  53.34  53.343  3.6889 0.0611255 .  
+dpi        1  12.40  12.401  0.8576 0.3593551    
+ddpi       1  63.05  63.054  4.3605 0.0424711 *  
+Residuals 45 650.71  14.460                      
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+> 
+> ## same effect via separate models
+> fit0 <- lm(sr ~ 1, data = LifeCycleSavings)
+> fit1 <- update(fit0, . ~ . + pop15)
+> fit2 <- update(fit1, . ~ . + pop75)
+> fit3 <- update(fit2, . ~ . + dpi)
+> fit4 <- update(fit3, . ~ . + ddpi)
+> anova(fit0, fit1, fit2, fit3, fit4, test = "F")
+Analysis of Variance Table
+
+Model 1: sr ~ 1
+Model 2: sr ~ pop15
+Model 3: sr ~ pop15 + pop75
+Model 4: sr ~ pop15 + pop75 + dpi
+Model 5: sr ~ pop15 + pop75 + dpi + ddpi
+  Res.Df    RSS Df Sum of Sq       F    Pr(>F)    
+1     49 983.63                                   
+2     48 779.51  1   204.118 14.1157 0.0004922 ***
+3     47 726.17  1    53.343  3.6889 0.0611255 .  
+4     46 713.77  1    12.401  0.8576 0.3593551    
+5     45 650.71  1    63.054  4.3605 0.0424711 *  
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+> 
+> anova(fit4, fit2, fit0, test = "F") # unconventional order
+Analysis of Variance Table
+
+Model 1: sr ~ pop15 + pop75 + dpi + ddpi
+Model 2: sr ~ pop15 + pop75
+Model 3: sr ~ 1
+  Res.Df    RSS Df Sum of Sq      F    Pr(>F)    
+1     45 650.71                                  
+2     47 726.17 -2   -75.455 2.6090 0.0847088 .  
+3     49 983.63 -2  -257.460 8.9023 0.0005527 ***
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+> 
+> 
+> 
+> cleanEx()
+> nameEx("anova.mlm")
+> ### * anova.mlm
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: anova.mlm
+> ### Title: Comparisons between Multivariate Linear Models
+> ### Aliases: anova.mlm
+> ### Keywords: regression models multivariate
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> utils::example(SSD) # Brings in the mlmfit and reacttime objects
+
+SSD> # Lifted from Baron+Li:
+SSD> # "Notes on the use of R for psychology experiments and questionnaires"
+SSD> # Maxwell and Delaney, p. 497
+SSD> reacttime <- matrix(c(
+SSD+ 420, 420, 480, 480, 600, 780,
+SSD+ 420, 480, 480, 360, 480, 600,
+SSD+ 480, 480, 540, 660, 780, 780,
+SSD+ 420, 540, 540, 480, 780, 900,
+SSD+ 540, 660, 540, 480, 660, 720,
+SSD+ 360, 420, 360, 360, 480, 540,
+SSD+ 480, 480, 600, 540, 720, 840,
+SSD+ 480, 600, 660, 540, 720, 900,
+SSD+ 540, 600, 540, 480, 720, 780,
+SSD+ 480, 420, 540, 540, 660, 780),
+SSD+ ncol = 6, byrow = TRUE,
+SSD+ dimnames = list(subj = 1:10,
+SSD+               cond = c("deg0NA", "deg4NA", "deg8NA",
+SSD+                        "deg0NP", "deg4NP", "deg8NP")))
+
+SSD> mlmfit <- lm(reacttime ~ 1)
+
+SSD> SSD(mlmfit)
+$SSD
+        cond
+cond     deg0NA deg4NA deg8NA deg0NP deg4NP deg8NP
+  deg0NA  29160  30600  26640  23760  32400  25560
+  deg4NA  30600  66600  32400   7200  36000  30600
+  deg8NA  26640  32400  56160  41040  57600  69840
+  deg0NP  23760   7200  41040  70560  72000  63360
+  deg4NP  32400  36000  57600  72000 108000 100800
+  deg8NP  25560  30600  69840  63360 100800 122760
+
+$call
+lm(formula = reacttime ~ 1)
+
+$df
+[1] 9
+
+attr(,"class")
+[1] "SSD"
+
+SSD> estVar(mlmfit)
+        cond
+cond     deg0NA deg4NA deg8NA deg0NP deg4NP deg8NP
+  deg0NA   3240   3400   2960   2640   3600   2840
+  deg4NA   3400   7400   3600    800   4000   3400
+  deg8NA   2960   3600   6240   4560   6400   7760
+  deg0NP   2640    800   4560   7840   8000   7040
+  deg4NP   3600   4000   6400   8000  12000  11200
+  deg8NP   2840   3400   7760   7040  11200  13640
+> 
+> mlmfit0 <- update(mlmfit, ~0)
+> 
+> ### Traditional tests of intrasubj. contrasts
+> ## Using MANOVA techniques on contrasts:
+> anova(mlmfit, mlmfit0, X = ~1)
+Analysis of Variance Table
+
+Model 1: reacttime ~ 1
+Model 2: reacttime ~ 1 - 1
+
+Contrasts orthogonal to
+~1
+
+  Res.Df Df Gen.var. Pillai approx F num Df den Df   Pr(>F)   
+1      9      1249.6                                          
+2     10  1   2013.2 0.9456   17.381      5      5 0.003534 **
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+> 
+> ## Assuming sphericity
+> anova(mlmfit, mlmfit0, X = ~1, test = "Spherical")
+Analysis of Variance Table
+
+Model 1: reacttime ~ 1
+Model 2: reacttime ~ 1 - 1
+
+Contrasts orthogonal to
+~1
+
+Greenhouse-Geisser epsilon: 0.4855
+Huynh-Feldt epsilon:        0.6778
+
+  Res.Df Df Gen.var.      F num Df den Df     Pr(>F)    G-G Pr    H-F Pr
+1      9      1249.6                                                    
+2     10  1   2013.2 38.028      5     45 4.4711e-15 2.532e-08 7.393e-11
+> 
+> 
+> ### tests using intra-subject 3x2 design
+> idata <- data.frame(deg = gl(3, 1, 6, labels = c(0, 4, 8)),
++                     noise = gl(2, 3, 6, labels = c("A", "P")))
+> 
+> anova(mlmfit, mlmfit0, X = ~ deg + noise,
++       idata = idata, test = "Spherical")
+Analysis of Variance Table
+
+Model 1: reacttime ~ 1
+Model 2: reacttime ~ 1 - 1
+
+Contrasts orthogonal to
+~deg + noise
+
+Greenhouse-Geisser epsilon: 0.904
+Huynh-Feldt epsilon:        1.118
+
+  Res.Df Df Gen.var.     F num Df den Df     Pr(>F)     G-G Pr     H-F Pr
+1      9      316.58                                                     
+2     10  1   996.34 45.31      2     18 9.4241e-08 3.4539e-07 9.4241e-08
+> anova(mlmfit, mlmfit0, M = ~ deg + noise, X = ~ noise,
++       idata = idata, test = "Spherical" )
+Analysis of Variance Table
+
+Model 1: reacttime ~ 1
+Model 2: reacttime ~ 1 - 1
+
+Contrasts orthogonal to
+~noise
+
+
+Contrasts spanned by
+~deg + noise
+
+Greenhouse-Geisser epsilon: 0.9616
+Huynh-Feldt epsilon:        1.2176
+
+  Res.Df Df Gen.var.      F num Df den Df     Pr(>F)     G-G Pr     H-F Pr
+1      9      1007.0                                                      
+2     10  1   2703.2 40.719      2     18 2.0868e-07 3.4017e-07 2.0868e-07
+> anova(mlmfit, mlmfit0, M = ~ deg + noise, X = ~ deg,
++       idata = idata, test = "Spherical" )
+Analysis of Variance Table
+
+Model 1: reacttime ~ 1
+Model 2: reacttime ~ 1 - 1
+
+Contrasts orthogonal to
+~deg
+
+
+Contrasts spanned by
+~deg + noise
+
+Greenhouse-Geisser epsilon: 1
+Huynh-Feldt epsilon:        1
+
+  Res.Df Df Gen.var.      F num Df den Df     Pr(>F)     G-G Pr     H-F Pr
+1      9        1410                                                      
+2     10  1     6030 33.766      1      9 0.00025597 0.00025597 0.00025597
+> 
+> f <- factor(rep(1:2, 5)) # bogus, just for illustration
+> mlmfit2 <- update(mlmfit, ~f)
+> anova(mlmfit2, mlmfit, mlmfit0, X = ~1, test = "Spherical")
+Analysis of Variance Table
+
+Model 1: reacttime ~ f
+Model 2: reacttime ~ 1
+Model 3: reacttime ~ 1 - 1
+
+Contrasts orthogonal to
+~1
+
+Greenhouse-Geisser epsilon: 0.4691
+Huynh-Feldt epsilon:        0.6758
+
+  Res.Df Df Gen.var.       F num Df den Df  Pr(>F)  G-G Pr  H-F Pr
+1      8      1337.3                                              
+2      9  1   1249.6  0.2743      5     40 0.92452 0.79608 0.86456
+3     10  1   2013.2 34.9615      5     40 0.00000 0.00000 0.00000
+> anova(mlmfit2, X = ~1, test = "Spherical")
+Analysis of Variance Table
+
+
+Contrasts orthogonal to
+~1
+
+Greenhouse-Geisser epsilon: 0.4691
+Huynh-Feldt epsilon:        0.6758
+
+            Df       F num Df den Df  Pr(>F)  G-G Pr  H-F Pr
+(Intercept)  1 34.9615      5     40 0.00000 0.00000 0.00000
+f            1  0.2743      5     40 0.92452 0.79608 0.86456
+Residuals    8                                              
+> # one-model form, eqiv. to previous
+> 
+> ### There seems to be a strong interaction in these data
+> plot(colMeans(reacttime))
+> 
+> 
+> 
+> cleanEx()
+> nameEx("ansari.test")
+> ### * ansari.test
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: ansari.test
+> ### Title: Ansari-Bradley Test
+> ### Aliases: ansari.test ansari.test.default ansari.test.formula
+> ### Keywords: htest
+> 
+> ### ** Examples
+> 
+> ## Hollander & Wolfe (1973, p. 86f):
+> ## Serum iron determination using Hyland control sera
+> ramsay <- c(111, 107, 100, 99, 102, 106, 109, 108, 104, 99,
++             101, 96, 97, 102, 107, 113, 116, 113, 110, 98)
+> jung.parekh <- c(107, 108, 106, 98, 105, 103, 110, 105, 104,
++             100, 96, 108, 103, 104, 114, 114, 113, 108, 106, 99)
+> ansari.test(ramsay, jung.parekh)
+Warning in ansari.test.default(ramsay, jung.parekh) :
+  cannot compute exact p-value with ties
+
+	Ansari-Bradley test
+
+data:  ramsay and jung.parekh
+AB = 185.5, p-value = 0.1815
+alternative hypothesis: true ratio of scales is not equal to 1
+
+> 
+> ansari.test(rnorm(10), rnorm(10, 0, 2), conf.int = TRUE)
+
+	Ansari-Bradley test
+
+data:  rnorm(10) and rnorm(10, 0, 2)
+AB = 69, p-value = 0.03831
+alternative hypothesis: true ratio of scales is not equal to 1
+95 percent confidence interval:
+ 0.1852324 0.9712857
+sample estimates:
+ratio of scales 
+      0.4007458 
+
+> 
+> ## try more points - failed in 2.4.1
+> ansari.test(rnorm(100), rnorm(100, 0, 2), conf.int = TRUE)
+
+	Ansari-Bradley test
+
+data:  rnorm(100) and rnorm(100, 0, 2)
+AB = 6180, p-value = 3.347e-08
+alternative hypothesis: true ratio of scales is not equal to 1
+95 percent confidence interval:
+ 0.3330596 0.5693532
+sample estimates:
+ratio of scales 
+      0.4346784 
+
+> 
+> 
+> 
+> cleanEx()
+> nameEx("aov")
+> ### * aov
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: aov
+> ### Title: Fit an Analysis of Variance Model
+> ### Aliases: aov print.aov print.aovlist Error
+> ### Keywords: models regression
+> 
+> ### ** Examples
+> 
+> ## From Venables and Ripley (2002) p.165.
+> 
+> ## Set orthogonal contrasts.
+> op <- options(contrasts = c("contr.helmert", "contr.poly"))
+> ( npk.aov <- aov(yield ~ block + N*P*K, npk) )
+Call:
+   aov(formula = yield ~ block + N * P * K, data = npk)
+
+Terms:
+                   block        N        P        K      N:P      N:K      P:K
+Sum of Squares  343.2950 189.2817   8.4017  95.2017  21.2817  33.1350   0.4817
+Deg. of Freedom        5        1        1        1        1        1        1
+                Residuals
+Sum of Squares   185.2867
+Deg. of Freedom        12
+
+Residual standard error: 3.929447
+1 out of 13 effects not estimable
+Estimated effects are balanced
+> coefficients(npk.aov)
+(Intercept)      block1      block2      block3      block4      block5 
+ 54.8750000   1.7125000   1.6791667  -1.8229167  -1.0137500   0.2950000 
+         N1          P1          K1       N1:P1       N1:K1       P1:K1 
+  2.8083333  -0.5916667  -1.9916667  -0.9416667  -1.1750000   0.1416667 
+> 
+> ## to show the effects of re-ordering terms contrast the two fits
+> aov(yield ~ block + N * P + K, npk)
+Call:
+   aov(formula = yield ~ block + N * P + K, data = npk)
+
+Terms:
+                   block        N        P        K      N:P Residuals
+Sum of Squares  343.2950 189.2817   8.4017  95.2017  21.2817  218.9033
+Deg. of Freedom        5        1        1        1        1        14
+
+Residual standard error: 3.954232
+Estimated effects are balanced
+> aov(terms(yield ~ block + N * P + K, keep.order = TRUE), npk)
+Call:
+   aov(formula = terms(yield ~ block + N * P + K, keep.order = TRUE), 
+    data = npk)
+
+Terms:
+                   block        N        P      N:P        K Residuals
+Sum of Squares  343.2950 189.2817   8.4017  21.2817  95.2017  218.9033
+Deg. of Freedom        5        1        1        1        1        14
+
+Residual standard error: 3.954232
+Estimated effects are balanced
+> 
+> 
+> ## as a test, not particularly sensible statistically
+> npk.aovE <- aov(yield ~  N*P*K + Error(block), npk)
+> npk.aovE
+
+Call:
+aov(formula = yield ~ N * P * K + Error(block), data = npk)
+
+Grand Mean: 54.875
+
+Stratum 1: block
+
+Terms:
+                    N:P:K Residuals
+Sum of Squares   37.00167 306.29333
+Deg. of Freedom         1         4
+
+Residual standard error: 8.750619
+Estimated effects are balanced
+
+Stratum 2: Within
+
+Terms:
+                        N         P         K       N:P       N:K       P:K
+Sum of Squares  189.28167   8.40167  95.20167  21.28167  33.13500   0.48167
+Deg. of Freedom         1         1         1         1         1         1
+                Residuals
+Sum of Squares  185.28667
+Deg. of Freedom        12
+
+Residual standard error: 3.929447
+Estimated effects are balanced
+> ## IGNORE_RDIFF_BEGIN
+> summary(npk.aovE)
+
+Error: block
+          Df Sum Sq Mean Sq F value Pr(>F)
+N:P:K      1   37.0   37.00   0.483  0.525
+Residuals  4  306.3   76.57               
+
+Error: Within
+          Df Sum Sq Mean Sq F value  Pr(>F)   
+N          1 189.28  189.28  12.259 0.00437 **
+P          1   8.40    8.40   0.544 0.47490   
+K          1  95.20   95.20   6.166 0.02880 * 
+N:P        1  21.28   21.28   1.378 0.26317   
+N:K        1  33.14   33.14   2.146 0.16865   
+P:K        1   0.48    0.48   0.031 0.86275   
+Residuals 12 185.29   15.44                   
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+> ## IGNORE_RDIFF_END
+> options(op)  # reset to previous
+> 
+> 
+> 
+> base::options(contrasts = c(unordered = "contr.treatment",ordered = "contr.poly"))
+> cleanEx()
+> nameEx("approxfun")
+> ### * approxfun
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: approxfun
+> ### Title: Interpolation Functions
+> ### Aliases: approx approxfun
+> ### Keywords: arith dplot
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> x <- 1:10
+> y <- rnorm(10)
+> par(mfrow = c(2,1))
+> plot(x, y, main = "approx(.) and approxfun(.)")
+> points(approx(x, y), col = 2, pch = "*")
+> points(approx(x, y, method = "constant"), col = 4, pch = "*")
+> 
+> f <- approxfun(x, y)
+> curve(f(x), 0, 11, col = "green2")
+> points(x, y)
+> is.function(fc <- approxfun(x, y, method = "const")) # TRUE
+[1] TRUE
+> curve(fc(x), 0, 10, col = "darkblue", add = TRUE)
+> ## different extrapolation on left and right side :
+> plot(approxfun(x, y, rule = 2:1), 0, 11,
++      col = "tomato", add = TRUE, lty = 3, lwd = 2)
+> 
+> ### Treatment of 'NA's -- are kept if  na.rm=FALSE :
+> 
+> xn <- 1:4
+> yn <- c(1,NA,3:4)
+> xout <- (1:9)/2
+> ## Default behavior (na.rm = TRUE): NA's omitted; extrapolation gives NA
+> data.frame(approx(xn,yn, xout))
+    x   y
+1 0.5  NA
+2 1.0 1.0
+3 1.5 1.5
+4 2.0 2.0
+5 2.5 2.5
+6 3.0 3.0
+7 3.5 3.5
+8 4.0 4.0
+9 4.5  NA
+> data.frame(approx(xn,yn, xout, rule = 2))# -> *constant* extrapolation
+    x   y
+1 0.5 1.0
+2 1.0 1.0
+3 1.5 1.5
+4 2.0 2.0
+5 2.5 2.5
+6 3.0 3.0
+7 3.5 3.5
+8 4.0 4.0
+9 4.5 4.0
+> ## New (2019-2020)  na.rm = FALSE: NA's are "kept"
+> data.frame(approx(xn,yn, xout, na.rm=FALSE, rule = 2))
+    x   y
+1 0.5 1.0
+2 1.0 1.0
+3 1.5  NA
+4 2.0  NA
+5 2.5  NA
+6 3.0 3.0
+7 3.5 3.5
+8 4.0 4.0
+9 4.5 4.0
+> data.frame(approx(xn,yn, xout, na.rm=FALSE, rule = 2, method="constant"))
+    x  y
+1 0.5  1
+2 1.0  1
+3 1.5  1
+4 2.0 NA
+5 2.5 NA
+6 3.0  3
+7 3.5  3
+8 4.0  4
+9 4.5  4
+> 
+> ## NA's in x[] are not allowed:
+> stopifnot(inherits( try( approx(yn,yn, na.rm=FALSE) ), "try-error"))
+Error in approx(yn, yn, na.rm = FALSE) : 
+  approx(x,y, .., na.rm=FALSE): NA values in x are not allowed
+> 
+> ## Give a nice overview of all possibilities  rule * method * na.rm :
+> ##             -----------------------------  ====   ======   =====
+> ## extrapolations "N":= NA;   "C":= Constant :
+> rules <- list(N=1, C=2, NC=1:2, CN=2:1)
+> methods <- c("constant","linear")
+> ry <- sapply(rules, function(R) {
++        sapply(methods, function(M)
++         sapply(setNames(,c(TRUE,FALSE)), function(na.)
++                  approx(xn, yn, xout=xout, method=M, rule=R, na.rm=na.)$y),
++         simplify="array")
++    }, simplify="array")
+> names(dimnames(ry)) <- c("x = ", "na.rm", "method", "rule")
+> dimnames(ry)[[1]] <- format(xout)
+> ftable(aperm(ry, 4:1)) # --> (4 * 2 * 2) x length(xout)  =  16 x 9 matrix
+                    x =  0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5
+rule method   na.rm                                         
+N    constant TRUE        NA 1.0 1.0 1.0 1.0 3.0 3.0 4.0  NA
+              FALSE       NA 1.0 1.0  NA  NA 3.0 3.0 4.0  NA
+     linear   TRUE        NA 1.0 1.5 2.0 2.5 3.0 3.5 4.0  NA
+              FALSE       NA 1.0  NA  NA  NA 3.0 3.5 4.0  NA
+C    constant TRUE       1.0 1.0 1.0 1.0 1.0 3.0 3.0 4.0 4.0
+              FALSE      1.0 1.0 1.0  NA  NA 3.0 3.0 4.0 4.0
+     linear   TRUE       1.0 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.0
+              FALSE      1.0 1.0  NA  NA  NA 3.0 3.5 4.0 4.0
+NC   constant TRUE        NA 1.0 1.0 1.0 1.0 3.0 3.0 4.0 4.0
+              FALSE       NA 1.0 1.0  NA  NA 3.0 3.0 4.0 4.0
+     linear   TRUE        NA 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.0
+              FALSE       NA 1.0  NA  NA  NA 3.0 3.5 4.0 4.0
+CN   constant TRUE       1.0 1.0 1.0 1.0 1.0 3.0 3.0 4.0  NA
+              FALSE      1.0 1.0 1.0  NA  NA 3.0 3.0 4.0  NA
+     linear   TRUE       1.0 1.0 1.5 2.0 2.5 3.0 3.5 4.0  NA
+              FALSE      1.0 1.0  NA  NA  NA 3.0 3.5 4.0  NA
+> ## Don't show: 
+> stopifnot(exprs = {
++  identical(unname(ry),
++    array(c(NA, 1, 1,   1, 1, 3, 3, 4, NA,      NA, 1,  1, NA, NA, 3, 3, 4, NA,
++            NA, 1, 1.5, 2, 2.5, 3, 3.5, 4, NA,  NA, 1, NA, NA, NA, 3, 3.5, 4, NA,
++             1, 1, 1,   1, 1, 3, 3, 4, 4,        1, 1,  1, NA, NA, 3, 3, 4, 4,
++             1, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4,    1, 1, NA, NA, NA, 3, 3.5, 4, 4,
++            NA, 1, 1,   1, 1, 3, 3, 4, 4,       NA, 1,  1, NA, NA, 3, 3, 4, 4,
++            NA, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4,   NA, 1, NA, NA, NA, 3, 3.5, 4, 4,
++             1, 1, 1,   1, 1, 3, 3, 4, NA,       1, 1,  1, NA, NA, 3, 3, 4, NA,
++             1, 1, 1.5, 2, 2.5, 3, 3.5, 4, NA,   1, 1, NA, NA, NA, 3, 3.5, 4, NA),
++          dim = c(9L, 2L, 2L, 4L)))
++  identical(approxfun(xn,yn, method="constant", rule=2, na.rm=FALSE)(xout),
++             as.vector(ry[,"FALSE", "constant","C"]))
++  identical(approxfun(xn,yn, method="linear", rule=2:1, na.rm=FALSE)(xout),
++             as.vector(ry[,"FALSE", "linear", "CN"]))
++ })
+> ## End(Don't show)
+> 
+> ## Show treatment of 'ties' :
+> 
+> x <- c(2,2:4,4,4,5,5,7,7,7)
+> y <- c(1:6, 5:4, 3:1)
+> (amy <- approx(x, y, xout = x)$y) # warning, can be avoided by specifying 'ties=':
+Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm) :
+  collapsing to unique 'x' values
+ [1] 1.5 1.5 3.0 5.0 5.0 5.0 4.5 4.5 2.0 2.0 2.0
+> op <- options(warn=2) # warnings would be error
+> stopifnot(identical(amy, approx(x, y, xout = x, ties=mean)$y))
+> (ay <- approx(x, y, xout = x, ties = "ordered")$y)
+ [1] 2 2 3 6 6 6 4 4 1 1 1
+> stopifnot(amy == c(1.5,1.5, 3, 5,5,5, 4.5,4.5, 2,2,2),
++           ay  == c(2, 2,    3, 6,6,6, 4, 4,    1,1,1))
+> approx(x, y, xout = x, ties = min)$y
+ [1] 1 1 3 4 4 4 4 4 1 1 1
+> approx(x, y, xout = x, ties = max)$y
+ [1] 2 2 3 6 6 6 5 5 3 3 3
+> options(op) # revert 'warn'ing level
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("ar")
+> ### * ar
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: ar
+> ### Title: Fit Autoregressive Models to Time Series
+> ### Aliases: ar ar.burg ar.burg.default ar.burg.mts ar.yw ar.yw.default
+> ###   ar.yw.mts ar.mle print.ar predict.ar
+> ### Keywords: ts
+> 
+> ### ** Examples
+> 
+> ar(lh)
+
+Call:
+ar(x = lh)
+
+Coefficients:
+      1        2        3  
+ 0.6534  -0.0636  -0.2269  
+
+Order selected 3  sigma^2 estimated as  0.1959
+> ar(lh, method = "burg")
+
+Call:
+ar(x = lh, method = "burg")
+
+Coefficients:
+      1        2        3  
+ 0.6588  -0.0608  -0.2234  
+
+Order selected 3  sigma^2 estimated as  0.1786
+> ar(lh, method = "ols")
+
+Call:
+ar(x = lh, method = "ols")
+
+Coefficients:
+    1  
+0.586  
+
+Intercept: 0.006234 (0.06551) 
+
+Order selected 1  sigma^2 estimated as  0.2016
+> ar(lh, FALSE, 4) # fit ar(4)
+
+Call:
+ar(x = lh, aic = FALSE, order.max = 4)
+
+Coefficients:
+      1        2        3        4  
+ 0.6767  -0.0571  -0.2941   0.1028  
+
+Order selected 4  sigma^2 estimated as  0.1983
+> 
+> (sunspot.ar <- ar(sunspot.year))
+
+Call:
+ar(x = sunspot.year)
+
+Coefficients:
+      1        2        3        4        5        6        7        8  
+ 1.1305  -0.3524  -0.1745   0.1403  -0.1358   0.0963  -0.0556   0.0076  
+      9  
+ 0.1941  
+
+Order selected 9  sigma^2 estimated as  267.5
+> predict(sunspot.ar, n.ahead = 25)
+$pred
+Time Series:
+Start = 1989 
+End = 2013 
+Frequency = 1 
+ [1] 135.25933 148.09051 133.98476 106.61344  71.21921  40.84057  18.70100
+ [8]  11.52416  27.24208  56.99888  87.86705 107.62926 111.05437  98.05484
+[15]  74.84085  48.80128  27.65441  18.15075  23.15355  40.04723  61.95906
+[22]  80.79092  90.11420  87.44131  74.42284
+
+$se
+Time Series:
+Start = 1989 
+End = 2013 
+Frequency = 1 
+ [1] 16.35519 24.68467 28.95653 29.97401 30.07714 30.15629 30.35971 30.58793
+ [9] 30.71100 30.74276 31.42565 32.96467 34.48910 35.33601 35.51890 35.52034
+[17] 35.65505 35.90628 36.07084 36.08139 36.16818 36.56324 37.16527 37.64820
+[25] 37.83954
+
+> ## try the other methods too
+> 
+> ar(ts.union(BJsales, BJsales.lead))
+
+Call:
+ar(x = ts.union(BJsales, BJsales.lead))
+
+$ar
+, , 1
+
+             BJsales BJsales.lead
+BJsales       0.9499       0.8222
+BJsales.lead  0.0276       0.4970
+
+, , 2
+
+              BJsales BJsales.lead
+BJsales       0.02041       -1.133
+BJsales.lead -0.02193        0.294
+
+, , 3
+
+               BJsales BJsales.lead
+BJsales      -0.186490       3.9415
+BJsales.lead -0.002946       0.1264
+
+
+$var.pred
+             BJsales BJsales.lead
+BJsales      13.9431       0.7733
+BJsales.lead  0.7733       0.1231
+
+> ## Burg is quite different here, as is OLS (see ar.ols)
+> ar(ts.union(BJsales, BJsales.lead), method = "burg")
+
+Call:
+ar(x = ts.union(BJsales, BJsales.lead), method = "burg")
+
+$ar
+, , 1
+
+             BJsales BJsales.lead
+BJsales      1.21197      0.07312
+BJsales.lead 0.07411      0.45684
+
+, , 2
+
+              BJsales BJsales.lead
+BJsales      -0.26022      -0.1120
+BJsales.lead -0.06904       0.3111
+
+, , 3
+
+              BJsales BJsales.lead
+BJsales      -0.01754      3.93591
+BJsales.lead  0.01792      0.09632
+
+, , 4
+
+              BJsales BJsales.lead
+BJsales      -0.07746     -1.33836
+BJsales.lead -0.01158     -0.09118
+
+
+$var.pred
+             BJsales BJsales.lead
+BJsales      0.38426      0.01315
+BJsales.lead 0.01315      0.07657
+
+> 
+> 
+> 
+> cleanEx()
+> nameEx("ar.ols")
+> ### * ar.ols
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: ar.ols
+> ### Title: Fit Autoregressive Models to Time Series by OLS
+> ### Aliases: ar.ols
+> ### Keywords: ts
+> 
+> ### ** Examples
+> 
+> ar(lh, method = "burg")
+
+Call:
+ar(x = lh, method = "burg")
+
+Coefficients:
+      1        2        3  
+ 0.6588  -0.0608  -0.2234  
+
+Order selected 3  sigma^2 estimated as  0.1786
+> ar.ols(lh)
+
+Call:
+ar.ols(x = lh)
+
+Coefficients:
+    1  
+0.586  
+
+Intercept: 0.006234 (0.06551) 
+
+Order selected 1  sigma^2 estimated as  0.2016
+> ar.ols(lh, FALSE, 4) # fit ar(4)
+
+Call:
+ar.ols(x = lh, aic = FALSE, order.max = 4)
+
+Coefficients:
+      1        2        3        4  
+ 0.6761  -0.0571  -0.3001   0.0967  
+
+Intercept: 0.0004346 (0.06642) 
+
+Order selected 4  sigma^2 estimated as  0.1924
+> 
+> ar.ols(ts.union(BJsales, BJsales.lead))
+
+Call:
+ar.ols(x = ts.union(BJsales, BJsales.lead))
+
+$ar
+, , 1
+
+             BJsales BJsales.lead
+BJsales      0.40408     -0.05144
+BJsales.lead 0.07348      0.54524
+
+, , 2
+
+             BJsales BJsales.lead
+BJsales       0.2367      0.05899
+BJsales.lead -0.1224      0.28690
+
+, , 3
+
+             BJsales BJsales.lead
+BJsales      0.09673       4.7413
+BJsales.lead 0.10469       0.0701
+
+, , 4
+
+              BJsales BJsales.lead
+BJsales      0.048758       1.5671
+BJsales.lead 0.003482      -0.1838
+
+, , 5
+
+              BJsales BJsales.lead
+BJsales       0.23307      -0.1574
+BJsales.lead -0.02707       0.2623
+
+, , 6
+
+              BJsales BJsales.lead
+BJsales       0.07494      -0.4313
+BJsales.lead -0.08729      -0.2166
+
+, , 7
+
+              BJsales BJsales.lead
+BJsales      -0.09946      -0.6233
+BJsales.lead  0.27123      -0.2584
+
+, , 8
+
+              BJsales BJsales.lead
+BJsales       0.06725     -1.36469
+BJsales.lead -0.21501      0.06115
+
+, , 9
+
+              BJsales BJsales.lead
+BJsales      -0.11531       -1.464
+BJsales.lead  0.03536        0.270
+
+, , 10
+
+               BJsales BJsales.lead
+BJsales      -0.002037      -0.6472
+BJsales.lead  0.001284      -1.0667
+
+, , 11
+
+              BJsales BJsales.lead
+BJsales      0.004065      -0.7009
+BJsales.lead 0.002098       0.4890
+
+
+$x.intercept
+     BJsales BJsales.lead 
+     0.19630     -0.07022 
+
+$var.pred
+                BJsales BJsales.lead
+BJsales       0.0400996   -0.0009311
+BJsales.lead -0.0009311    0.0682137
+
+> 
+> x <- diff(log(EuStockMarkets))
+> ar.ols(x, order.max = 6, demean = FALSE, intercept = TRUE)
+
+Call:
+ar.ols(x = x, order.max = 6, demean = FALSE, intercept = TRUE)
+
+$ar
+, , 1
+
+           DAX       SMI       CAC    FTSE
+DAX   0.004560 -0.095781  0.039975 0.04856
+SMI  -0.009204 -0.007142  0.037758 0.06826
+CAC  -0.026624 -0.113688  0.063807 0.09154
+FTSE -0.010299 -0.089246 -0.003195 0.16409
+
+
+$x.intercept
+      DAX       SMI       CAC      FTSE 
+0.0006941 0.0007813 0.0004866 0.0004388 
+
+$var.pred
+           DAX       SMI       CAC      FTSE
+DAX  1.056e-04 6.683e-05 8.274e-05 5.192e-05
+SMI  6.683e-05 8.496e-05 6.252e-05 4.254e-05
+CAC  8.274e-05 6.252e-05 1.207e-04 5.615e-05
+FTSE 5.192e-05 4.254e-05 5.615e-05 6.224e-05
+
+> 
+> 
+> 
+> cleanEx()
+> nameEx("arima")
+> ### * arima
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: arima
+> ### Title: ARIMA Modelling of Time Series
+> ### Aliases: arima
+> ### Keywords: ts
+> 
+> ### ** Examples
+> 
+> arima(lh, order = c(1,0,0))
+
+Call:
+arima(x = lh, order = c(1, 0, 0))
+
+Coefficients:
+         ar1  intercept
+      0.5739     2.4133
+s.e.  0.1161     0.1466
+
+sigma^2 estimated as 0.1975:  log likelihood = -29.38,  aic = 64.76
+> arima(lh, order = c(3,0,0))
+
+Call:
+arima(x = lh, order = c(3, 0, 0))
+
+Coefficients:
+         ar1      ar2      ar3  intercept
+      0.6448  -0.0634  -0.2198     2.3931
+s.e.  0.1394   0.1668   0.1421     0.0963
+
+sigma^2 estimated as 0.1787:  log likelihood = -27.09,  aic = 64.18
+> arima(lh, order = c(1,0,1))
+
+Call:
+arima(x = lh, order = c(1, 0, 1))
+
+Coefficients:
+         ar1     ma1  intercept
+      0.4522  0.1982     2.4101
+s.e.  0.1769  0.1705     0.1358
+
+sigma^2 estimated as 0.1923:  log likelihood = -28.76,  aic = 65.52
+> 
+> arima(lh, order = c(3,0,0), method = "CSS")
+
+Call:
+arima(x = lh, order = c(3, 0, 0), method = "CSS")
+
+Coefficients:
+         ar1      ar2      ar3  intercept
+      0.6578  -0.0658  -0.2348     2.3918
+s.e.  0.1414   0.1702   0.1473     0.0983
+
+sigma^2 estimated as 0.1905:  part log likelihood = -28.31
+> 
+> arima(USAccDeaths, order = c(0,1,1), seasonal = list(order = c(0,1,1)))
+
+Call:
+arima(x = USAccDeaths, order = c(0, 1, 1), seasonal = list(order = c(0, 1, 1)))
+
+Coefficients:
+          ma1     sma1
+      -0.4303  -0.5528
+s.e.   0.1228   0.1784
+
+sigma^2 estimated as 99347:  log likelihood = -425.44,  aic = 856.88
+> arima(USAccDeaths, order = c(0,1,1), seasonal = list(order = c(0,1,1)),
++       method = "CSS") # drops first 13 observations.
+
+Call:
+arima(x = USAccDeaths, order = c(0, 1, 1), seasonal = list(order = c(0, 1, 1)), 
+    method = "CSS")
+
+Coefficients:
+          ma1     sma1
+      -0.3732  -0.4549
+s.e.   0.1366   0.1436
+
+sigma^2 estimated as 110330:  part log likelihood = -426.25
+> # for a model with as few years as this, we want full ML
+> 
+> arima(LakeHuron, order = c(2,0,0), xreg = time(LakeHuron) - 1920)
+
+Call:
+arima(x = LakeHuron, order = c(2, 0, 0), xreg = time(LakeHuron) - 1920)
+
+Coefficients:
+         ar1      ar2  intercept  time(LakeHuron) - 1920
+      1.0048  -0.2913   579.0993                 -0.0216
+s.e.  0.0976   0.1004     0.2370                  0.0081
+
+sigma^2 estimated as 0.4566:  log likelihood = -101.2,  aic = 212.4
+> 
+> ## presidents contains NAs
+> ## graphs in example(acf) suggest order 1 or 3
+> require(graphics)
+> (fit1 <- arima(presidents, c(1, 0, 0)))
+
+Call:
+arima(x = presidents, order = c(1, 0, 0))
+
+Coefficients:
+         ar1  intercept
+      0.8242    56.1505
+s.e.  0.0555     4.6434
+
+sigma^2 estimated as 85.47:  log likelihood = -416.89,  aic = 839.78
+> nobs(fit1)
+[1] 114
+> tsdiag(fit1)
+> (fit3 <- arima(presidents, c(3, 0, 0)))  # smaller AIC
+
+Call:
+arima(x = presidents, order = c(3, 0, 0))
+
+Coefficients:
+         ar1     ar2      ar3  intercept
+      0.7496  0.2523  -0.1890    56.2223
+s.e.  0.0936  0.1140   0.0946     4.2845
+
+sigma^2 estimated as 81.12:  log likelihood = -414.08,  aic = 838.16
+> tsdiag(fit3)
+> BIC(fit1, fit3)
+     df      BIC
+fit1  3 847.9931
+fit3  5 851.8449
+> ## compare a whole set of models; BIC() would choose the smallest
+> AIC(fit1, arima(presidents, c(2,0,0)),
++           arima(presidents, c(2,0,1)), # <- chosen (barely) by AIC
++     fit3, arima(presidents, c(3,0,1)))
+                              df      AIC
+fit1                           3 839.7845
+arima(presidents, c(2, 0, 0))  4 840.0458
+arima(presidents, c(2, 0, 1))  5 838.1272
+fit3                           5 838.1639
+arima(presidents, c(3, 0, 1))  6 838.8124
+> 
+> ## An example of using the  'fixed'  argument:
+> ## Note that the period of the seasonal component is taken to be
+> ## frequency(presidents), i.e. 4.
+> (fitSfx <- arima(presidents, order=c(2,0,1), seasonal=c(1,0,0),
++                  fixed=c(NA, NA, 0.5, -0.1, 50), transform.pars=FALSE))
+
+Call:
+arima(x = presidents, order = c(2, 0, 1), seasonal = c(1, 0, 0), transform.pars = FALSE, 
+    fixed = c(NA, NA, 0.5, -0.1, 50))
+
+Coefficients:
+         ar1     ar2  ma1  sar1  intercept
+      0.2047  0.6269  0.5  -0.1         50
+s.e.  0.0734  0.0747  0.0   0.0          0
+
+sigma^2 estimated as 84.01:  log likelihood = -416.07,  aic = 838.14
+> ## The partly-fixed & smaller model seems better (as we "knew too much"):
+> AIC(fitSfx, arima(presidents, order=c(2,0,1), seasonal=c(1,0,0)))
+                                                             df      AIC
+fitSfx                                                        3 838.1406
+arima(presidents, order = c(2, 0, 1), seasonal = c(1, 0, 0))  6 839.7095
+> 
+> ## An example of ARIMA forecasting:
+> predict(fit3, 3)
+$pred
+         Qtr1     Qtr2     Qtr3
+1975 29.84194 34.41014 39.30815
+
+$se
+         Qtr1     Qtr2     Qtr3
+1975  9.00655 11.25606 13.43389
+
+> 
+> 
+> 
+> cleanEx()
+> nameEx("arima.sim")
+> ### * arima.sim
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: arima.sim
+> ### Title: Simulate from an ARIMA Model
+> ### Aliases: arima.sim
+> ### Keywords: ts
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> arima.sim(n = 63, list(ar = c(0.8897, -0.4858), ma = c(-0.2279, 0.2488)),
++           sd = sqrt(0.1796))
+Time Series:
+Start = 1 
+End = 63 
+Frequency = 1 
+ [1]  0.55638574  0.24800500 -0.81744783 -0.38508849 -0.23890454 -0.02072714
+ [7] -0.51654590 -0.52651638 -0.14927781  0.60798558  0.48272646  0.45160066
+[13]  0.09619832 -0.67131480 -0.69254708 -0.56224691 -0.19460368  0.53033791
+[19]  0.77731125  0.40648873 -0.02697856  0.08101569  0.22706682 -0.10950180
+[25] -0.38234797 -0.13676254  0.27995530  0.23211869  0.53580489  0.43571147
+[31] -0.07756004 -0.03502285 -0.56957457  0.26261214  1.09213953  0.64829971
+[37] -0.15198589 -0.14659775 -0.27894630  0.91394089  0.68582187  0.71550492
+[43]  0.24452551 -0.37501019 -0.29768875 -0.94420587  0.11988146  0.29844068
+[49]  1.26774646  0.99077203  0.14790214  0.02779843 -0.57682386 -0.90337297
+[55] -0.37740926 -0.24511724  0.03927715  0.13868087 -0.15259447 -0.37935616
+[61] -0.32790595  0.34491331 -0.30754547
+> # mildly long-tailed
+> arima.sim(n = 63, list(ar = c(0.8897, -0.4858), ma = c(-0.2279, 0.2488)),
++           rand.gen = function(n, ...) sqrt(0.1796) * rt(n, df = 5))
+Time Series:
+Start = 1 
+End = 63 
+Frequency = 1 
+ [1] -0.08101433 -0.37596592 -1.05656365 -0.99217317 -0.15199924 -0.06140144
+ [7] -0.55852200 -0.54700937 -0.72098523 -0.98045523 -0.80880380 -0.61217798
+[13] -0.66268921 -0.29302949 -0.83022714 -0.08803618 -0.37932440  0.10532621
+[19]  0.08033289 -0.29269083 -0.69193397  0.81677306 -0.25402288 -0.08812258
+[25] -0.34117754  0.29026870 -0.54848673 -0.44974248 -0.34110521 -0.17826307
+[31] -0.35396760  0.98465366  0.21136827  0.05042017 -0.02400316 -0.42642295
+[37] -0.61906692  1.92955621 -0.36050863 -0.68488280  0.10141464  0.64328982
+[43]  0.31906603  0.17275054 -0.13570368 -0.13451166 -0.11717037  0.02330814
+[49]  0.29918521  0.05938999 -0.20355761 -0.02439309 -1.14548572 -0.94045141
+[55]  0.44845239  1.76898773  1.78579981  1.16734413  0.33858833 -0.41153063
+[61] -0.31037109 -0.31929663  0.17496536
+> 
+> # An ARIMA simulation
+> ts.sim <- arima.sim(list(order = c(1,1,0), ar = 0.7), n = 200)
+> ts.plot(ts.sim)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("arima0")
+> ### * arima0
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: arima0
+> ### Title: ARIMA Modelling of Time Series - Preliminary Version
+> ### Aliases: arima0 print.arima0 predict.arima0
+> ### Keywords: ts
+> 
+> ### ** Examples
+> 
+> ## Not run: arima0(lh, order = c(1,0,0))
+> arima0(lh, order = c(3,0,0))
+
+Call:
+arima0(x = lh, order = c(3, 0, 0))
+
+Coefficients:
+         ar1      ar2      ar3  intercept
+      0.6448  -0.0634  -0.2198     2.3931
+s.e.  0.1394   0.1668   0.1421     0.0963
+
+sigma^2 estimated as 0.1787:  log likelihood = -27.09,  aic = 64.18
+> arima0(lh, order = c(1,0,1))
+
+Call:
+arima0(x = lh, order = c(1, 0, 1))
+
+Coefficients:
+         ar1     ma1  intercept
+      0.4521  0.1983     2.4101
+s.e.  0.1357  0.1777     0.1357
+
+sigma^2 estimated as 0.1923:  log likelihood = -28.76,  aic = 65.52
+> predict(arima0(lh, order = c(3,0,0)), n.ahead = 12)
+$pred
+Time Series:
+Start = 49 
+End = 60 
+Frequency = 1 
+ [1] 2.460173 2.270829 2.198597 2.260696 2.346933 2.414479 2.438918 2.431440
+ [9] 2.410223 2.391645 2.382653 2.382697
+
+$se
+Time Series:
+Start = 49 
+End = 60 
+Frequency = 1 
+ [1] 0.4226823 0.5029332 0.5245256 0.5247161 0.5305499 0.5369159 0.5388045
+ [8] 0.5388448 0.5391043 0.5395174 0.5396991 0.5397140
+
+> 
+> arima0(lh, order = c(3,0,0), method = "CSS")
+
+Call:
+arima0(x = lh, order = c(3, 0, 0), method = "CSS")
+
+Coefficients:
+         ar1      ar2      ar3  intercept
+      0.6580  -0.0660  -0.2339     2.3999
+s.e.  0.1414   0.1702   0.1469     0.0981
+
+sigma^2 estimated as 0.1905:  part log likelihood = -28.31
+> 
+> # for a model with as few years as this, we want full ML
+> (fit <- arima0(USAccDeaths, order = c(0,1,1),
++                seasonal = list(order=c(0,1,1)), delta = -1))
+
+Call:
+arima0(x = USAccDeaths, order = c(0, 1, 1), seasonal = list(order = c(0, 1, 
+    1)), delta = -1)
+
+Coefficients:
+          ma1     sma1
+      -0.4304  -0.5526
+s.e.   0.1228   0.1785
+
+sigma^2 estimated as 99355:  log likelihood = -425.44,  aic = 856.88
+> predict(fit, n.ahead = 6)
+$pred
+          Jan      Feb      Mar      Apr      May      Jun
+1979 8336.028 7531.760 8314.593 8616.864 9488.916 9859.727
+
+$se
+          Jan      Feb      Mar      Apr      May      Jun
+1979 315.4607 362.9949 404.9878 443.0180 478.0322 510.6511
+
+> 
+> arima0(LakeHuron, order = c(2,0,0), xreg = time(LakeHuron)-1920)
+
+Call:
+arima0(x = LakeHuron, order = c(2, 0, 0), xreg = time(LakeHuron) - 1920)
+
+Coefficients:
+         ar1      ar2  intercept     xreg
+      1.0048  -0.2913   579.0985  -0.0216
+s.e.  0.0976   0.1004     0.2370   0.0081
+
+sigma^2 estimated as 0.4566:  log likelihood = -101.2,  aic = 212.4
+> ## Not run: 
+> ##D ## presidents contains NAs
+> ##D ## graphs in example(acf) suggest order 1 or 3
+> ##D (fit1 <- arima0(presidents, c(1, 0, 0), delta = -1))  # avoid warning
+> ##D tsdiag(fit1)
+> ##D (fit3 <- arima0(presidents, c(3, 0, 0), delta = -1))  # smaller AIC
+> ##D tsdiag(fit3)
+> ## End(Not run)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("as.hclust")
+> ### * as.hclust
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: as.hclust
+> ### Title: Convert Objects to Class hclust
+> ### Aliases: as.hclust as.hclust.default as.hclust.twins
+> ### Keywords: multivariate cluster
+> 
+> ### ** Examples
+> 
+> x <- matrix(rnorm(30), ncol = 3)
+> hc <- hclust(dist(x), method = "complete")
+> 
+> 
+> 
+> 
+> cleanEx()
+> nameEx("asOneSidedFormula")
+> ### * asOneSidedFormula
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: asOneSidedFormula
+> ### Title: Convert to One-Sided Formula
+> ### Aliases: asOneSidedFormula
+> ### Keywords: models
+> 
+> ### ** Examples
+> 
+> (form <- asOneSidedFormula("age"))
+~age
+> stopifnot(exprs = {
++     identical(form, asOneSidedFormula(form))
++     identical(form, asOneSidedFormula(as.name("age")))
++     identical(form, asOneSidedFormula(expression(age)))
++ })
+> asOneSidedFormula(quote(log(age)))
+~log(age)
+> asOneSidedFormula(1)
+~1
+> 
+> 
+> 
+> cleanEx()
+> nameEx("ave")
+> ### * ave
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: ave
+> ### Title: Group Averages Over Level Combinations of Factors
+> ### Aliases: ave
+> ### Keywords: univar
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> ave(1:3)  # no grouping -> grand mean
+[1] 2 2 2
+> 
+> attach(warpbreaks)
+> ave(breaks, wool)
+ [1] 31.03704 31.03704 31.03704 31.03704 31.03704 31.03704 31.03704 31.03704
+ [9] 31.03704 31.03704 31.03704 31.03704 31.03704 31.03704 31.03704 31.03704
+[17] 31.03704 31.03704 31.03704 31.03704 31.03704 31.03704 31.03704 31.03704
+[25] 31.03704 31.03704 31.03704 25.25926 25.25926 25.25926 25.25926 25.25926
+[33] 25.25926 25.25926 25.25926 25.25926 25.25926 25.25926 25.25926 25.25926
+[41] 25.25926 25.25926 25.25926 25.25926 25.25926 25.25926 25.25926 25.25926
+[49] 25.25926 25.25926 25.25926 25.25926 25.25926 25.25926
+> ave(breaks, tension)
+ [1] 36.38889 36.38889 36.38889 36.38889 36.38889 36.38889 36.38889 36.38889
+ [9] 36.38889 26.38889 26.38889 26.38889 26.38889 26.38889 26.38889 26.38889
+[17] 26.38889 26.38889 21.66667 21.66667 21.66667 21.66667 21.66667 21.66667
+[25] 21.66667 21.66667 21.66667 36.38889 36.38889 36.38889 36.38889 36.38889
+[33] 36.38889 36.38889 36.38889 36.38889 26.38889 26.38889 26.38889 26.38889
+[41] 26.38889 26.38889 26.38889 26.38889 26.38889 21.66667 21.66667 21.66667
+[49] 21.66667 21.66667 21.66667 21.66667 21.66667 21.66667
+> ave(breaks, tension, FUN = function(x) mean(x, trim = 0.1))
+ [1] 35.6875 35.6875 35.6875 35.6875 35.6875 35.6875 35.6875 35.6875 35.6875
+[10] 26.3125 26.3125 26.3125 26.3125 26.3125 26.3125 26.3125 26.3125 26.3125
+[19] 21.0625 21.0625 21.0625 21.0625 21.0625 21.0625 21.0625 21.0625 21.0625
+[28] 35.6875 35.6875 35.6875 35.6875 35.6875 35.6875 35.6875 35.6875 35.6875
+[37] 26.3125 26.3125 26.3125 26.3125 26.3125 26.3125 26.3125 26.3125 26.3125
+[46] 21.0625 21.0625 21.0625 21.0625 21.0625 21.0625 21.0625 21.0625 21.0625
+> plot(breaks, main =
++      "ave( Warpbreaks )  for   wool  x  tension  combinations")
+> lines(ave(breaks, wool, tension              ), type = "s", col = "blue")
+> lines(ave(breaks, wool, tension, FUN = median), type = "s", col = "green")
+> legend(40, 70, c("mean", "median"), lty = 1,
++       col = c("blue","green"), bg = "gray90")
+> detach()
+> 
+> 
+> 
+> cleanEx()
+> nameEx("bandwidth")
+> ### * bandwidth
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: bandwidth
+> ### Title: Bandwidth Selectors for Kernel Density Estimation
+> ### Aliases: bw.nrd0 bw.nrd bw.ucv bw.bcv bw.SJ
+> ### Keywords: distribution smooth
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> plot(density(precip, n = 1000))
+> rug(precip)
+> lines(density(precip, bw = "nrd"), col = 2)
+> lines(density(precip, bw = "ucv"), col = 3)
+> lines(density(precip, bw = "bcv"), col = 4)
+Warning in bw.bcv(x) : minimum occurred at one end of the range
+> lines(density(precip, bw = "SJ-ste"), col = 5)
+> lines(density(precip, bw = "SJ-dpi"), col = 6)
+> legend(55, 0.035,
++        legend = c("nrd0", "nrd", "ucv", "bcv", "SJ-ste", "SJ-dpi"),
++        col = 1:6, lty = 1)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("bartlett.test")
+> ### * bartlett.test
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: bartlett.test
+> ### Title: Bartlett Test of Homogeneity of Variances
+> ### Aliases: bartlett.test bartlett.test.default bartlett.test.formula
+> ### Keywords: htest
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> plot(count ~ spray, data = InsectSprays)
+> bartlett.test(InsectSprays$count, InsectSprays$spray)
+
+	Bartlett test of homogeneity of variances
+
+data:  InsectSprays$count and InsectSprays$spray
+Bartlett's K-squared = 25.96, df = 5, p-value = 9.085e-05
+
+> bartlett.test(count ~ spray, data = InsectSprays)
+
+	Bartlett test of homogeneity of variances
+
+data:  count by spray
+Bartlett's K-squared = 25.96, df = 5, p-value = 9.085e-05
+
+> 
+> 
+> 
+> cleanEx()
+> nameEx("binom.test")
+> ### * binom.test
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: binom.test
+> ### Title: Exact Binomial Test
+> ### Aliases: binom.test
+> ### Keywords: htest
+> 
+> ### ** Examples
+> 
+> ## Conover (1971), p. 97f.
+> ## Under (the assumption of) simple Mendelian inheritance, a cross
+> ##  between plants of two particular genotypes produces progeny 1/4 of
+> ##  which are "dwarf" and 3/4 of which are "giant", respectively.
+> ##  In an experiment to determine if this assumption is reasonable, a
+> ##  cross results in progeny having 243 dwarf and 682 giant plants.
+> ##  If "giant" is taken as success, the null hypothesis is that p =
+> ##  3/4 and the alternative that p != 3/4.
+> binom.test(c(682, 243), p = 3/4)
+
+	Exact binomial test
+
+data:  c(682, 243)
+number of successes = 682, number of trials = 925, p-value = 0.3825
+alternative hypothesis: true probability of success is not equal to 0.75
+95 percent confidence interval:
+ 0.7076683 0.7654066
+sample estimates:
+probability of success 
+             0.7372973 
+
+> binom.test(682, 682 + 243, p = 3/4)   # The same.
+
+	Exact binomial test
+
+data:  682 and 682 + 243
+number of successes = 682, number of trials = 925, p-value = 0.3825
+alternative hypothesis: true probability of success is not equal to 0.75
+95 percent confidence interval:
+ 0.7076683 0.7654066
+sample estimates:
+probability of success 
+             0.7372973 
+
+> ## => Data are in agreement with the null hypothesis.
+> 
+> 
+> 
+> cleanEx()
+> nameEx("biplot.princomp")
+> ### * biplot.princomp
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: biplot.princomp
+> ### Title: Biplot for Principal Components
+> ### Aliases: biplot.princomp biplot.prcomp
+> ### Keywords: multivariate hplot
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> biplot(princomp(USArrests))
+> 
+> 
+> 
+> cleanEx()
+> nameEx("birthday")
+> ### * birthday
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: birthday
+> ### Title: Probability of coincidences
+> ### Aliases: qbirthday pbirthday
+> ### Keywords: distribution
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> ## the standard version
+> qbirthday() # 23
+[1] 23
+> ## probability of > 2 people with the same birthday
+> pbirthday(23, coincident = 3)
+[1] 0.01441541
+> 
+> ## examples from Diaconis & Mosteller p. 858.
+> ## 'coincidence' is that husband, wife, daughter all born on the 16th
+> qbirthday(classes = 30, coincident = 3) # approximately 18
+[1] 18
+> qbirthday(coincident = 4)  # exact value 187
+[1] 187
+> qbirthday(coincident = 10) # exact value 1181
+[1] 1179
+> 
+> ## same 4-digit PIN number
+> qbirthday(classes = 10^4)
+[1] 119
+> 
+> ## 0.9 probability of three or more coincident birthdays
+> qbirthday(coincident = 3, prob = 0.9)
+[1] 135
+> 
+> ## Chance of 4 or more coincident birthdays in 150 people
+> pbirthday(150, coincident = 4)
+[1] 0.2690146
+> 
+> ## 100 or more coincident birthdays in 1000 people: very rare
+> pbirthday(1000, coincident = 100)
+[1] 1.531434e-113
+> 
+> 
+> 
+> cleanEx()
+> nameEx("box.test")
+> ### * box.test
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: Box.test
+> ### Title: Box-Pierce and Ljung-Box Tests
+> ### Aliases: Box.test
+> ### Keywords: ts
+> 
+> ### ** Examples
+> 
+> x <- rnorm (100)
+> Box.test (x, lag = 1)
+
+	Box-Pierce test
+
+data:  x
+X-squared = 0.0013332, df = 1, p-value = 0.9709
+
+> Box.test (x, lag = 1, type = "Ljung")
+
+	Box-Ljung test
+
+data:  x
+X-squared = 0.0013736, df = 1, p-value = 0.9704
+
+> 
+> 
+> 
+> cleanEx()
+> nameEx("cancor")
+> ### * cancor
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: cancor
+> ### Title: Canonical Correlations
+> ### Aliases: cancor
+> ### Keywords: multivariate
+> 
+> ### ** Examples
+> 
+> 
+> cleanEx()
+> nameEx("case.names")
+> ### * case.names
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: case+variable.names
+> ### Title: Case and Variable Names of Fitted Models
+> ### Aliases: case.names case.names.lm variable.names variable.names.lm
+> ### Keywords: regression models
+> 
+> ### ** Examples
+> 
+> x <- 1:20
+> y <-  setNames(x + (x/4 - 2)^3 + rnorm(20, sd = 3),
++                paste("O", x, sep = "."))
+> ww <- rep(1, 20); ww[13] <- 0
+> summary(lmxy <- lm(y ~ x + I(x^2)+I(x^3) + I((x-10)^2), weights = ww),
++         correlation = TRUE)
+
+Call:
+lm(formula = y ~ x + I(x^2) + I(x^3) + I((x - 10)^2), weights = ww)
+
+Weighted Residuals:
+    Min      1Q  Median      3Q     Max 
+-6.7160 -0.7047  0.0728  1.0174  3.9947 
+
+Coefficients: (1 not defined because of singularities)
+                Estimate Std. Error t value Pr(>|t|)    
+(Intercept)   -10.967768   3.104498  -3.533 0.003013 ** 
+x               5.524412   1.255354   4.401 0.000516 ***
+I(x^2)         -0.542292   0.138460  -3.917 0.001374 ** 
+I(x^3)          0.020905   0.004372   4.782 0.000242 ***
+I((x - 10)^2)         NA         NA      NA       NA    
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+
+Residual standard error: 2.838 on 15 degrees of freedom
+Multiple R-squared:  0.9702,	Adjusted R-squared:  0.9643 
+F-statistic:   163 on 3 and 15 DF,  p-value: 1.14e-11
+
+Correlation of Coefficients:
+       (Intercept) x     I(x^2)
+x      -0.90                   
+I(x^2)  0.80       -0.97       
+I(x^3) -0.73        0.93 -0.99 
+
+> variable.names(lmxy)
+[1] "(Intercept)" "x"           "I(x^2)"      "I(x^3)"     
+> variable.names(lmxy, full = TRUE)  # includes the last
+[1] "(Intercept)"   "x"             "I(x^2)"        "I(x^3)"       
+[5] "I((x - 10)^2)"
+> case.names(lmxy)
+ [1] "O.1"  "O.2"  "O.3"  "O.4"  "O.5"  "O.6"  "O.7"  "O.8"  "O.9"  "O.10"
+[11] "O.11" "O.12" "O.14" "O.15" "O.16" "O.17" "O.18" "O.19" "O.20"
+> case.names(lmxy, full = TRUE)      # includes the 0-weight case
+ [1] "O.1"  "O.2"  "O.3"  "O.4"  "O.5"  "O.6"  "O.7"  "O.8"  "O.9"  "O.10"
+[11] "O.11" "O.12" "O.13" "O.14" "O.15" "O.16" "O.17" "O.18" "O.19" "O.20"
+> 
+> 
+> 
+> cleanEx()
+> nameEx("checkMFClasses")
+> ### * checkMFClasses
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: .checkMFClasses
+> ### Title: Functions to Check the Type of Variables passed to Model Frames
+> ### Aliases: .checkMFClasses .MFclass .getXlevels
+> ### Keywords: utilities
+> 
+> ### ** Examples
+> 
+> sapply(warpbreaks, .MFclass) # "numeric" plus 2 x "factor"
+   breaks      wool   tension 
+"numeric"  "factor"  "factor" 
+> sapply(iris,       .MFclass) # 4 x "numeric" plus "factor"
+Sepal.Length  Sepal.Width Petal.Length  Petal.Width      Species 
+   "numeric"    "numeric"    "numeric"    "numeric"     "factor" 
+> 
+> mf <- model.frame(Sepal.Width ~ Species,      iris)
+> mc <- model.frame(Sepal.Width ~ Sepal.Length, iris)
+> 
+> .checkMFClasses("numeric", mc) # nothing else
+> .checkMFClasses(c("numeric", "factor"), mf)
+> 
+> ## simple .getXlevels() cases :
+> (xl <- .getXlevels(terms(mf), mf)) # a list with one entry " $ Species" with 3 levels:
+$Species
+[1] "setosa"     "versicolor" "virginica" 
+
+> stopifnot(exprs = {
++   identical(xl$Species, levels(iris$Species))
++   identical(.getXlevels(terms(mc), mc), xl[0]) # a empty named list, as no factors
++   is.null(.getXlevels(terms(x~x), list(x=1)))
++ })
+> 
+> 
+> 
+> cleanEx()
+> nameEx("chisq.test")
+> ### * chisq.test
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: chisq.test
+> ### Title: Pearson's Chi-squared Test for Count Data
+> ### Aliases: chisq.test
+> ### Keywords: htest distribution
+> 
+> ### ** Examples
+> 
+> 
+> ## From Agresti(2007) p.39
+> M <- as.table(rbind(c(762, 327, 468), c(484, 239, 477)))
+> dimnames(M) <- list(gender = c("F", "M"),
++                     party = c("Democrat","Independent", "Republican"))
+> (Xsq <- chisq.test(M))  # Prints test summary
+
+	Pearson's Chi-squared test
+
+data:  M
+X-squared = 30.07, df = 2, p-value = 2.954e-07
+
+> Xsq$observed   # observed counts (same as M)
+      party
+gender Democrat Independent Republican
+     F      762         327        468
+     M      484         239        477
+> Xsq$expected   # expected counts under the null
+      party
+gender Democrat Independent Republican
+     F 703.6714    319.6453   533.6834
+     M 542.3286    246.3547   411.3166
+> Xsq$residuals  # Pearson residuals
+      party
+gender   Democrat Independent Republican
+     F  2.1988558   0.4113702 -2.8432397
+     M -2.5046695  -0.4685829  3.2386734
+> Xsq$stdres     # standardized residuals
+      party
+gender   Democrat Independent Republican
+     F  4.5020535   0.6994517 -5.3159455
+     M -4.5020535  -0.6994517  5.3159455
+> 
+> 
+> ## Effect of simulating p-values
+> x <- matrix(c(12, 5, 7, 7), ncol = 2)
+> chisq.test(x)$p.value           # 0.4233
+[1] 0.4233054
+> chisq.test(x, simulate.p.value = TRUE, B = 10000)$p.value
+[1] 0.2935706
+>                                 # around 0.29!
+> 
+> ## Testing for population probabilities
+> ## Case A. Tabulated data
+> x <- c(A = 20, B = 15, C = 25)
+> chisq.test(x)
+
+	Chi-squared test for given probabilities
+
+data:  x
+X-squared = 2.5, df = 2, p-value = 0.2865
+
+> chisq.test(as.table(x))             # the same
+
+	Chi-squared test for given probabilities
+
+data:  as.table(x)
+X-squared = 2.5, df = 2, p-value = 0.2865
+
+> x <- c(89,37,30,28,2)
+> p <- c(40,20,20,15,5)
+> try(
++ chisq.test(x, p = p)                # gives an error
++ )
+Error in chisq.test(x, p = p) : probabilities must sum to 1.
+> chisq.test(x, p = p, rescale.p = TRUE)
+
+	Chi-squared test for given probabilities
+
+data:  x
+X-squared = 9.9901, df = 4, p-value = 0.04059
+
+>                                 # works
+> p <- c(0.40,0.20,0.20,0.19,0.01)
+>                                 # Expected count in category 5
+>                                 # is 1.86 < 5 ==> chi square approx.
+> chisq.test(x, p = p)            #               maybe doubtful, but is ok!
+Warning in chisq.test(x, p = p) :
+  Chi-squared approximation may be incorrect
+
+	Chi-squared test for given probabilities
+
+data:  x
+X-squared = 5.7947, df = 4, p-value = 0.215
+
+> chisq.test(x, p = p, simulate.p.value = TRUE)
+
+	Chi-squared test for given probabilities with simulated p-value (based
+	on 2000 replicates)
+
+data:  x
+X-squared = 5.7947, df = NA, p-value = 0.2029
+
+> 
+> ## Case B. Raw data
+> x <- trunc(5 * runif(100))
+> chisq.test(table(x))            # NOT 'chisq.test(x)'!
+
+	Chi-squared test for given probabilities
+
+data:  table(x)
+X-squared = 4.3, df = 4, p-value = 0.3669
+
+> 
+> 
+> 
+> cleanEx()
+> nameEx("cmdscale")
+> ### * cmdscale
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: cmdscale
+> ### Title: Classical (Metric) Multidimensional Scaling
+> ### Aliases: cmdscale
+> ### Keywords: multivariate
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> loc <- cmdscale(eurodist)
+> x <- loc[, 1]
+> y <- -loc[, 2] # reflect so North is at the top
+> ## note asp = 1, to ensure Euclidean distances are represented correctly
+> plot(x, y, type = "n", xlab = "", ylab = "", asp = 1, axes = FALSE,
++      main = "cmdscale(eurodist)")
+> text(x, y, rownames(loc), cex = 0.6)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("coef")
+> ### * coef
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: coef
+> ### Title: Extract Model Coefficients
+> ### Aliases: coef coefficients coef.default coef.aov
+> ### Keywords: regression models
+> 
+> ### ** Examples
+> 
+> x <- 1:5; coef(lm(c(1:3, 7, 6) ~ x))
+(Intercept)           x 
+       -0.7         1.5 
+> 
+> 
+> 
+> cleanEx()
+> nameEx("complete.cases")
+> ### * complete.cases
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: complete.cases
+> ### Title: Find Complete Cases
+> ### Aliases: complete.cases
+> ### Keywords: NA logic
+> 
+> ### ** Examples
+> 
+> x <- airquality[, -1] # x is a regression design matrix
+> y <- airquality[,  1] # y is the corresponding response
+> 
+> stopifnot(complete.cases(y) != is.na(y))
+> ok <- complete.cases(x, y)
+> sum(!ok) # how many are not "ok" ?
+[1] 42
+> x <- x[ok,]
+> y <- y[ok]
+> 
+> 
+> 
+> cleanEx()
+> nameEx("confint")
+> ### * confint
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: confint
+> ### Title: Confidence Intervals for Model Parameters
+> ### Aliases: confint confint.default confint.lm
+> ### Keywords: models
+> 
+> ### ** Examples
+> 
+> fit <- lm(100/mpg ~ disp + hp + wt + am, data = mtcars)
+> confint(fit)
+                   2.5 %      97.5 %
+(Intercept) -0.774822875 2.256118188
+disp        -0.002867999 0.008273849
+hp          -0.001400580 0.011949674
+wt           0.380088737 1.622517536
+am          -0.614677730 0.926307310
+> confint(fit, "wt")
+       2.5 %   97.5 %
+wt 0.3800887 1.622518
+> 
+> 
+> 
+> 
+> cleanEx()
+> nameEx("constrOptim")
+> ### * constrOptim
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: constrOptim
+> ### Title: Linearly Constrained Optimization
+> ### Aliases: constrOptim
+> ### Keywords: optimize
+> 
+> ### ** Examples
+> 
+> 
+> cleanEx()
+> nameEx("contrast")
+> ### * contrast
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: contrast
+> ### Title: (Possibly Sparse) Contrast Matrices
+> ### Aliases: contr.helmert contr.poly contr.sum contr.treatment contr.SAS
+> ### Keywords: design regression array
+> 
+> ### ** Examples
+> 
+> (cH <- contr.helmert(4))
+  [,1] [,2] [,3]
+1   -1   -1   -1
+2    1   -1   -1
+3    0    2   -1
+4    0    0    3
+> apply(cH, 2, sum) # column sums are 0
+[1] 0 0 0
+> crossprod(cH) # diagonal -- columns are orthogonal
+     [,1] [,2] [,3]
+[1,]    2    0    0
+[2,]    0    6    0
+[3,]    0    0   12
+> contr.helmert(4, contrasts = FALSE) # just the 4 x 4 identity matrix
+  1 2 3 4
+1 1 0 0 0
+2 0 1 0 0
+3 0 0 1 0
+4 0 0 0 1
+> 
+> (cT <- contr.treatment(5))
+  2 3 4 5
+1 0 0 0 0
+2 1 0 0 0
+3 0 1 0 0
+4 0 0 1 0
+5 0 0 0 1
+> all(crossprod(cT) == diag(4)) # TRUE: even orthonormal
+[1] TRUE
+> 
+> (cT. <- contr.SAS(5))
+  1 2 3 4
+1 1 0 0 0
+2 0 1 0 0
+3 0 0 1 0
+4 0 0 0 1
+5 0 0 0 0
+> all(crossprod(cT.) == diag(4)) # TRUE
+[1] TRUE
+> 
+> zapsmall(cP <- contr.poly(3)) # Linear and Quadratic
+             .L         .Q
+[1,] -0.7071068  0.4082483
+[2,]  0.0000000 -0.8164966
+[3,]  0.7071068  0.4082483
+> zapsmall(crossprod(cP), digits = 15) # orthonormal up to fuzz
+   .L .Q
+.L  1  0
+.Q  0  1
+> 
+> 
+> 
+> cleanEx()
+> nameEx("contrasts")
+> ### * contrasts
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: contrasts
+> ### Title: Get and Set Contrast Matrices
+> ### Aliases: contrasts contrasts<-
+> ### Keywords: design regression
+> 
+> ### ** Examples
+> 
+> utils::example(factor)
+
+factor> (ff <- factor(substring("statistics", 1:10, 1:10), levels = letters))
+ [1] s t a t i s t i c s
+Levels: a b c d e f g h i j k l m n o p q r s t u v w x y z
+
+factor> as.integer(ff)      # the internal codes
+ [1] 19 20  1 20  9 19 20  9  3 19
+
+factor> (f. <- factor(ff))  # drops the levels that do not occur
+ [1] s t a t i s t i c s
+Levels: a c i s t
+
+factor> ff[, drop = TRUE]   # the same, more transparently
+ [1] s t a t i s t i c s
+Levels: a c i s t
+
+factor> factor(letters[1:20], labels = "letter")
+ [1] letter1  letter2  letter3  letter4  letter5  letter6  letter7  letter8 
+ [9] letter9  letter10 letter11 letter12 letter13 letter14 letter15 letter16
+[17] letter17 letter18 letter19 letter20
+20 Levels: letter1 letter2 letter3 letter4 letter5 letter6 letter7 ... letter20
+
+factor> class(ordered(4:1)) # "ordered", inheriting from "factor"
+[1] "ordered" "factor" 
+
+factor> z <- factor(LETTERS[3:1], ordered = TRUE)
+
+factor> ## and "relational" methods work:
+factor> stopifnot(sort(z)[c(1,3)] == range(z), min(z) < max(z))
+
+factor> ## Don't show: 
+factor> of <- ordered(ff)
+
+factor> stopifnot(identical(range(of, rev(of)), of[3:2]),
+factor+ 	  identical(max(of), of[2]))
+
+factor> ## End(Don't show)
+factor> 
+factor> ## suppose you want "NA" as a level, and to allow missing values.
+factor> (x <- factor(c(1, 2, NA), exclude = NULL))
+[1] 1    2    <NA>
+Levels: 1 2 <NA>
+
+factor> is.na(x)[2] <- TRUE
+
+factor> x  # [1] 1    <NA> <NA>
+[1] 1    <NA> <NA>
+Levels: 1 2 <NA>
+
+factor> is.na(x)
+[1] FALSE  TRUE FALSE
+
+factor> # [1] FALSE  TRUE FALSE
+factor> 
+factor> ## More rational, since R 3.4.0 :
+factor> factor(c(1:2, NA), exclude =  "" ) # keeps <NA> , as
+[1] 1    2    <NA>
+Levels: 1 2 <NA>
+
+factor> factor(c(1:2, NA), exclude = NULL) # always did
+[1] 1    2    <NA>
+Levels: 1 2 <NA>
+
+factor> ## exclude = <character>
+factor> z # ordered levels 'A < B < C'
+[1] C B A
+Levels: A < B < C
+
+factor> factor(z, exclude = "C") # does exclude
+[1] <NA> B    A   
+Levels: A < B
+
+factor> factor(z, exclude = "B") # ditto
+[1] C    <NA> A   
+Levels: A < C
+
+factor> ## Now, labels maybe duplicated:
+factor> ## factor() with duplicated labels allowing to "merge levels"
+factor> x <- c("Man", "Male", "Man", "Lady", "Female")
+
+factor> ## Map from 4 different values to only two levels:
+factor> (xf <- factor(x, levels = c("Male", "Man" , "Lady",   "Female"),
+factor+                  labels = c("Male", "Male", "Female", "Female")))
+[1] Male   Male   Male   Female Female
+Levels: Male Female
+
+factor> #> [1] Male   Male   Male   Female Female
+factor> #> Levels: Male Female
+factor> 
+factor> ## Using addNA()
+factor> Month <- airquality$Month
+
+factor> table(addNA(Month))
+
+   5    6    7    8    9 <NA> 
+  31   30   31   31   30    0 
+
+factor> table(addNA(Month, ifany = TRUE))
+
+ 5  6  7  8  9 
+31 30 31 31 30 
+> fff <- ff[, drop = TRUE]  # reduce to 5 levels.
+> contrasts(fff) # treatment contrasts by default
+  c i s t
+a 0 0 0 0
+c 1 0 0 0
+i 0 1 0 0
+s 0 0 1 0
+t 0 0 0 1
+> contrasts(C(fff, sum))
+  [,1] [,2] [,3] [,4]
+a    1    0    0    0
+c    0    1    0    0
+i    0    0    1    0
+s    0    0    0    1
+t   -1   -1   -1   -1
+> contrasts(fff, contrasts = FALSE) # the 5x5 identity matrix
+  a c i s t
+a 1 0 0 0 0
+c 0 1 0 0 0
+i 0 0 1 0 0
+s 0 0 0 1 0
+t 0 0 0 0 1
+> 
+> contrasts(fff) <- contr.sum(5); contrasts(fff)  # set sum contrasts
+  [,1] [,2] [,3] [,4]
+a    1    0    0    0
+c    0    1    0    0
+i    0    0    1    0
+s    0    0    0    1
+t   -1   -1   -1   -1
+> contrasts(fff, 2) <- contr.sum(5); contrasts(fff)  # set 2 contrasts
+  [,1] [,2]
+a    1    0
+c    0    1
+i    0    0
+s    0    0
+t   -1   -1
+> # supply 2 contrasts, compute 2 more to make full set of 4.
+> contrasts(fff) <- contr.sum(5)[, 1:2]; contrasts(fff)
+  [,1] [,2]       [,3]       [,4]
+a    1    0 -0.2471257  0.2688164
+c    0    1 -0.2471257  0.2688164
+i    0    0 -0.1498721 -0.8817814
+s    0    0  0.8912491  0.0753323
+t   -1   -1 -0.2471257  0.2688164
+> 
+> 
+> 
+> cleanEx()
+> nameEx("convolve")
+> ### * convolve
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: convolve
+> ### Title: Convolution of Sequences via FFT
+> ### Aliases: convolve
+> ### Keywords: math dplot
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> x <- c(0,0,0,100,0,0,0)
+> y <- c(0,0,1, 2 ,1,0,0)/4
+> zapsmall(convolve(x, y))         #  *NOT* what you first thought.
+[1] 50 25  0  0  0  0 25
+> zapsmall(convolve(x, y[3:5], type = "f")) # rather
+[1]  0 25 50 25  0
+> x <- rnorm(50)
+> y <- rnorm(50)
+> # Circular convolution *has* this symmetry:
+> all.equal(convolve(x, y, conj = FALSE), rev(convolve(rev(y),x)))
+[1] TRUE
+> 
+> n <- length(x <- -20:24)
+> y <- (x-10)^2/1000 + rnorm(x)/8
+> 
+> Han <- function(y) # Hanning
++        convolve(y, c(1,2,1)/4, type = "filter")
+> 
+> plot(x, y, main = "Using  convolve(.) for Hanning filters")
+> lines(x[-c(1  , n)      ], Han(y), col = "red")
+> lines(x[-c(1:2, (n-1):n)], Han(Han(y)), lwd = 2, col = "dark blue")
+> 
+> 
+> 
+> cleanEx()
+> nameEx("cophenetic")
+> ### * cophenetic
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: cophenetic
+> ### Title: Cophenetic Distances for a Hierarchical Clustering
+> ### Aliases: cophenetic cophenetic.default cophenetic.dendrogram
+> ### Keywords: cluster multivariate
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> d1 <- dist(USArrests)
+> hc <- hclust(d1, "ave")
+> d2 <- cophenetic(hc)
+> cor(d1, d2) # 0.7659
+[1] 0.7658983
+> 
+> ## Example from Sneath & Sokal, Fig. 5-29, p.279
+> d0 <- c(1,3.8,4.4,5.1, 4,4.2,5, 2.6,5.3, 5.4)
+> attributes(d0) <- list(Size = 5, diag = TRUE)
+> class(d0) <- "dist"
+> names(d0) <- letters[1:5]
+> d0
+    1   2   3   4
+2 1.0            
+3 3.8 4.0        
+4 4.4 4.2 2.6    
+5 5.1 5.0 5.3 5.4
+> utils::str(upgma <- hclust(d0, method = "average"))
+List of 7
+ $ merge      : int [1:4, 1:2] -1 -3 1 -5 -2 -4 2 3
+ $ height     : num [1:4] 1 2.6 4.1 5.2
+ $ order      : int [1:5] 5 1 2 3 4
+ $ labels     : NULL
+ $ method     : chr "average"
+ $ call       : language hclust(d = d0, method = "average")
+ $ dist.method: NULL
+ - attr(*, "class")= chr "hclust"
+> plot(upgma, hang = -1)
+> #
+> (d.coph <- cophenetic(upgma))
+    1   2   3   4
+2 1.0            
+3 4.1 4.1        
+4 4.1 4.1 2.6    
+5 5.2 5.2 5.2 5.2
+> cor(d0, d.coph) # 0.9911
+[1] 0.9911351
+> 
+> 
+> 
+> cleanEx()
+> nameEx("cor")
+> ### * cor
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: cor
+> ### Title: Correlation, Variance and Covariance (Matrices)
+> ### Aliases: var cov cor cov2cor
+> ### Keywords: univar multivariate array
+> 
+> ### ** Examples
+> 
+> var(1:10)  # 9.166667
+[1] 9.166667
+> 
+> var(1:5, 1:5) # 2.5
+[1] 2.5
+> 
+> ## Two simple vectors
+> cor(1:10, 2:11) # == 1
+[1] 1
+> 
+> ## Correlation Matrix of Multivariate sample:
+> (Cl <- cor(longley))
+             GNP.deflator       GNP Unemployed Armed.Forces Population
+GNP.deflator    1.0000000 0.9915892  0.6206334    0.4647442  0.9791634
+GNP             0.9915892 1.0000000  0.6042609    0.4464368  0.9910901
+Unemployed      0.6206334 0.6042609  1.0000000   -0.1774206  0.6865515
+Armed.Forces    0.4647442 0.4464368 -0.1774206    1.0000000  0.3644163
+Population      0.9791634 0.9910901  0.6865515    0.3644163  1.0000000
+Year            0.9911492 0.9952735  0.6682566    0.4172451  0.9939528
+Employed        0.9708985 0.9835516  0.5024981    0.4573074  0.9603906
+                  Year  Employed
+GNP.deflator 0.9911492 0.9708985
+GNP          0.9952735 0.9835516
+Unemployed   0.6682566 0.5024981
+Armed.Forces 0.4172451 0.4573074
+Population   0.9939528 0.9603906
+Year         1.0000000 0.9713295
+Employed     0.9713295 1.0000000
+> ## Graphical Correlation Matrix:
+> symnum(Cl) # highly correlated
+             GNP. GNP U A P Y E
+GNP.deflator 1                 
+GNP          B    1            
+Unemployed   ,    ,   1        
+Armed.Forces .    .     1      
+Population   B    B   , . 1    
+Year         B    B   , . B 1  
+Employed     B    B   . . B B 1
+attr(,"legend")
+[1] 0 ‘ ’ 0.3 ‘.’ 0.6 ‘,’ 0.8 ‘+’ 0.9 ‘*’ 0.95 ‘B’ 1
+> 
+> ## Spearman's rho  and  Kendall's tau
+> symnum(clS <- cor(longley, method = "spearman"))
+             GNP. GNP U A P Y E
+GNP.deflator 1                 
+GNP          B    1            
+Unemployed   ,    ,   1        
+Armed.Forces          . 1      
+Population   B    B   ,   1    
+Year         B    B   ,   1 1  
+Employed     B    B   .   B B 1
+attr(,"legend")
+[1] 0 ‘ ’ 0.3 ‘.’ 0.6 ‘,’ 0.8 ‘+’ 0.9 ‘*’ 0.95 ‘B’ 1
+> symnum(clK <- cor(longley, method = "kendall"))
+             GNP. GNP U A P Y E
+GNP.deflator 1                 
+GNP          B    1            
+Unemployed   .    .   1        
+Armed.Forces            1      
+Population   B    B   .   1    
+Year         B    B   .   1 1  
+Employed     *    *   .   + + 1
+attr(,"legend")
+[1] 0 ‘ ’ 0.3 ‘.’ 0.6 ‘,’ 0.8 ‘+’ 0.9 ‘*’ 0.95 ‘B’ 1
+> ## How much do they differ?
+> i <- lower.tri(Cl)
+> cor(cbind(P = Cl[i], S = clS[i], K = clK[i]))
+          P         S         K
+P 1.0000000 0.9802390 0.9572562
+S 0.9802390 1.0000000 0.9742171
+K 0.9572562 0.9742171 1.0000000
+> 
+> 
+> ## cov2cor() scales a covariance matrix by its diagonal
+> ##           to become the correlation matrix.
+> cov2cor # see the function definition {and learn ..}
+function (V) 
+{
+    p <- (d <- dim(V))[1L]
+    if (!is.numeric(V) || length(d) != 2L || p != d[2L]) 
+        stop("'V' is not a square numeric matrix")
+    Is <- sqrt(1/diag(V))
+    if (any(!is.finite(Is))) 
+        warning("diag(.) had 0 or NA entries; non-finite result is doubtful")
+    r <- V
+    r[] <- Is * V * rep(Is, each = p)
+    r[cbind(1L:p, 1L:p)] <- 1
+    r
+}
+<bytecode: 0x716e178>
+<environment: namespace:stats>
+> stopifnot(all.equal(Cl, cov2cor(cov(longley))),
++           all.equal(cor(longley, method = "kendall"),
++             cov2cor(cov(longley, method = "kendall"))))
+> 
+> ##--- Missing value treatment:
+> C1 <- cov(swiss)
+> range(eigen(C1, only.values = TRUE)$values) # 6.19        1921
+[1]    6.191249 1921.562488
+> 
+> ## swM := "swiss" with  3 "missing"s :
+> swM <- swiss
+> colnames(swM) <- abbreviate(colnames(swiss), minlength=6)
+> swM[1,2] <- swM[7,3] <- swM[25,5] <- NA # create 3 "missing"
+> 
+> ## Consider all 5 "use" cases :
+> (C. <- cov(swM)) # use="everything"  quite a few NA's in cov.matrix
+          Frtlty Agrclt Exmntn     Eductn Cathlc    Infn.M
+Frtlty 156.04250     NA     NA -79.729510     NA 15.156193
+Agrclt        NA     NA     NA         NA     NA        NA
+Exmntn        NA     NA     NA         NA     NA        NA
+Eductn -79.72951     NA     NA  92.456059     NA -2.781684
+Cathlc        NA     NA     NA         NA     NA        NA
+Infn.M  15.15619     NA     NA  -2.781684     NA  8.483802
+> try(cov(swM, use = "all")) # Error: missing obs...
+Error in cov(swM, use = "all") : missing observations in cov/cor
+> C2 <- cov(swM, use = "complete")
+> stopifnot(identical(C2, cov(swM, use = "na.or.complete")))
+> range(eigen(C2, only.values = TRUE)$values) # 6.46   1930
+[1]    6.462385 1930.505982
+> C3 <- cov(swM, use = "pairwise")
+> range(eigen(C3, only.values = TRUE)$values) # 6.19   1938
+[1]    6.194469 1938.033663
+> 
+> ## Kendall's tau doesn't change much:
+> symnum(Rc <- cor(swM, method = "kendall", use = "complete"))
+       F A Ex Ed C I
+Frtlty 1            
+Agrclt   1          
+Exmntn . . 1        
+Eductn . . .  1     
+Cathlc     .     1  
+Infn.M             1
+attr(,"legend")
+[1] 0 ‘ ’ 0.3 ‘.’ 0.6 ‘,’ 0.8 ‘+’ 0.9 ‘*’ 0.95 ‘B’ 1
+> symnum(Rp <- cor(swM, method = "kendall", use = "pairwise"))
+       F A Ex Ed C I
+Frtlty 1            
+Agrclt   1          
+Exmntn . . 1        
+Eductn . . .  1     
+Cathlc     .     1  
+Infn.M .           1
+attr(,"legend")
+[1] 0 ‘ ’ 0.3 ‘.’ 0.6 ‘,’ 0.8 ‘+’ 0.9 ‘*’ 0.95 ‘B’ 1
+> symnum(R. <- cor(swiss, method = "kendall"))
+                 F A Ex Ed C I
+Fertility        1            
+Agriculture        1          
+Examination      . . 1        
+Education        . . .  1     
+Catholic             .     1  
+Infant.Mortality .           1
+attr(,"legend")
+[1] 0 ‘ ’ 0.3 ‘.’ 0.6 ‘,’ 0.8 ‘+’ 0.9 ‘*’ 0.95 ‘B’ 1
+> 
+> ## "pairwise" is closer componentwise,
+> summary(abs(c(1 - Rp/R.)))
+   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
+0.00000 0.00000 0.04481 0.09573 0.15214 0.53941 
+> summary(abs(c(1 - Rc/R.)))
+   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
+0.00000 0.02021 0.08482 0.50675 0.16192 7.08509 
+> 
+> ## but "complete" is closer in Eigen space:
+> EV <- function(m) eigen(m, only.values=TRUE)$values
+> summary(abs(1 - EV(Rp)/EV(R.)) / abs(1 - EV(Rc)/EV(R.)))
+   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
+ 0.8942  1.1464  1.2452  1.3732  1.3722  2.3265 
+> 
+> 
+> 
+> cleanEx()
+> nameEx("cor.test")
+> ### * cor.test
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: cor.test
+> ### Title: Test for Association/Correlation Between Paired Samples
+> ### Aliases: cor.test cor.test.default cor.test.formula
+> ### Keywords: htest
+> 
+> ### ** Examples
+> 
+> ## Hollander & Wolfe (1973), p. 187f.
+> ## Assessment of tuna quality.  We compare the Hunter L measure of
+> ##  lightness to the averages of consumer panel scores (recoded as
+> ##  integer values from 1 to 6 and averaged over 80 such values) in
+> ##  9 lots of canned tuna.
+> 
+> x <- c(44.4, 45.9, 41.9, 53.3, 44.7, 44.1, 50.7, 45.2, 60.1)
+> y <- c( 2.6,  3.1,  2.5,  5.0,  3.6,  4.0,  5.2,  2.8,  3.8)
+> 
+> ##  The alternative hypothesis of interest is that the
+> ##  Hunter L value is positively associated with the panel score.
+> 
+> cor.test(x, y, method = "kendall", alternative = "greater")
+
+	Kendall's rank correlation tau
+
+data:  x and y
+T = 26, p-value = 0.05972
+alternative hypothesis: true tau is greater than 0
+sample estimates:
+      tau 
+0.4444444 
+
+> ## => p=0.05972
+> 
+> cor.test(x, y, method = "kendall", alternative = "greater",
++          exact = FALSE) # using large sample approximation
+
+	Kendall's rank correlation tau
+
+data:  x and y
+z = 1.6681, p-value = 0.04765
+alternative hypothesis: true tau is greater than 0
+sample estimates:
+      tau 
+0.4444444 
+
+> ## => p=0.04765
+> 
+> ## Compare this to
+> cor.test(x, y, method = "spearm", alternative = "g")
+
+	Spearman's rank correlation rho
+
+data:  x and y
+S = 48, p-value = 0.0484
+alternative hypothesis: true rho is greater than 0
+sample estimates:
+rho 
+0.6 
+
+> cor.test(x, y,                    alternative = "g")
+
+	Pearson's product-moment correlation
+
+data:  x and y
+t = 1.8411, df = 7, p-value = 0.05409
+alternative hypothesis: true correlation is greater than 0
+95 percent confidence interval:
+ -0.02223023  1.00000000
+sample estimates:
+      cor 
+0.5711816 
+
+> 
+> ## Formula interface.
+> require(graphics)
+> pairs(USJudgeRatings)
+> cor.test(~ CONT + INTG, data = USJudgeRatings)
+
+	Pearson's product-moment correlation
+
+data:  CONT and INTG
+t = -0.8605, df = 41, p-value = 0.3945
+alternative hypothesis: true correlation is not equal to 0
+95 percent confidence interval:
+ -0.4168591  0.1741182
+sample estimates:
+       cor 
+-0.1331909 
+
+> 
+> 
+> 
+> cleanEx()
+> nameEx("cov.wt")
+> ### * cov.wt
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: cov.wt
+> ### Title: Weighted Covariance Matrices
+> ### Aliases: cov.wt
+> ### Keywords: multivariate
+> 
+> ### ** Examples
+> 
+>  (xy <- cbind(x = 1:10, y = c(1:3, 8:5, 8:10)))
+       x  y
+ [1,]  1  1
+ [2,]  2  2
+ [3,]  3  3
+ [4,]  4  8
+ [5,]  5  7
+ [6,]  6  6
+ [7,]  7  5
+ [8,]  8  8
+ [9,]  9  9
+[10,] 10 10
+>  w1 <- c(0,0,0,1,1,1,1,1,0,0)
+>  cov.wt(xy, wt = w1) # i.e. method = "unbiased"
+$cov
+     x    y
+x  2.5 -0.5
+y -0.5  1.7
+
+$center
+  x   y 
+6.0 6.8 
+
+$n.obs
+[1] 10
+
+$wt
+ [1] 0.0 0.0 0.0 0.2 0.2 0.2 0.2 0.2 0.0 0.0
+
+>  cov.wt(xy, wt = w1, method = "ML", cor = TRUE)
+$cov
+     x     y
+x  2.0 -0.40
+y -0.4  1.36
+
+$center
+  x   y 
+6.0 6.8 
+
+$n.obs
+[1] 10
+
+$wt
+ [1] 0.0 0.0 0.0 0.2 0.2 0.2 0.2 0.2 0.0 0.0
+
+$cor
+           x          y
+x  1.0000000 -0.2425356
+y -0.2425356  1.0000000
+
+> 
+> 
+> 
+> cleanEx()
+> nameEx("cpgram")
+> ### * cpgram
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: cpgram
+> ### Title: Plot Cumulative Periodogram
+> ### Aliases: cpgram
+> ### Keywords: ts hplot
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> par(pty = "s", mfrow = c(1,2))
+> cpgram(lh)
+> lh.ar <- ar(lh, order.max = 9)
+> cpgram(lh.ar$resid, main = "AR(3) fit to lh")
+> 
+> cpgram(ldeaths)
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("cutree")
+> ### * cutree
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: cutree
+> ### Title: Cut a Tree into Groups of Data
+> ### Aliases: cutree
+> ### Keywords: multivariate cluster
+> 
+> ### ** Examples
+> 
+> hc <- hclust(dist(USArrests))
+> 
+> cutree(hc, k = 1:5) #k = 1 is trivial
+               1 2 3 4 5
+Alabama        1 1 1 1 1
+Alaska         1 1 1 1 1
+Arizona        1 1 1 1 1
+Arkansas       1 2 2 2 2
+California     1 1 1 1 1
+Colorado       1 2 2 2 2
+Connecticut    1 2 3 3 3
+Delaware       1 1 1 1 1
+Florida        1 1 1 4 4
+Georgia        1 2 2 2 2
+Hawaii         1 2 3 3 5
+Idaho          1 2 3 3 3
+Illinois       1 1 1 1 1
+Indiana        1 2 3 3 3
+Iowa           1 2 3 3 5
+Kansas         1 2 3 3 3
+Kentucky       1 2 3 3 3
+Louisiana      1 1 1 1 1
+Maine          1 2 3 3 5
+Maryland       1 1 1 1 1
+Massachusetts  1 2 2 2 2
+Michigan       1 1 1 1 1
+Minnesota      1 2 3 3 5
+Mississippi    1 1 1 1 1
+Missouri       1 2 2 2 2
+Montana        1 2 3 3 3
+Nebraska       1 2 3 3 3
+Nevada         1 1 1 1 1
+New Hampshire  1 2 3 3 5
+New Jersey     1 2 2 2 2
+New Mexico     1 1 1 1 1
+New York       1 1 1 1 1
+North Carolina 1 1 1 4 4
+North Dakota   1 2 3 3 5
+Ohio           1 2 3 3 3
+Oklahoma       1 2 2 2 2
+Oregon         1 2 2 2 2
+Pennsylvania   1 2 3 3 3
+Rhode Island   1 2 2 2 2
+South Carolina 1 1 1 1 1
+South Dakota   1 2 3 3 5
+Tennessee      1 2 2 2 2
+Texas          1 2 2 2 2
+Utah           1 2 3 3 3
+Vermont        1 2 3 3 5
+Virginia       1 2 2 2 2
+Washington     1 2 2 2 2
+West Virginia  1 2 3 3 5
+Wisconsin      1 2 3 3 5
+Wyoming        1 2 2 2 2
+> cutree(hc, h = 250)
+       Alabama         Alaska        Arizona       Arkansas     California 
+             1              1              1              2              1 
+      Colorado    Connecticut       Delaware        Florida        Georgia 
+             2              2              1              1              2 
+        Hawaii          Idaho       Illinois        Indiana           Iowa 
+             2              2              1              2              2 
+        Kansas       Kentucky      Louisiana          Maine       Maryland 
+             2              2              1              2              1 
+ Massachusetts       Michigan      Minnesota    Mississippi       Missouri 
+             2              1              2              1              2 
+       Montana       Nebraska         Nevada  New Hampshire     New Jersey 
+             2              2              1              2              2 
+    New Mexico       New York North Carolina   North Dakota           Ohio 
+             1              1              1              2              2 
+      Oklahoma         Oregon   Pennsylvania   Rhode Island South Carolina 
+             2              2              2              2              1 
+  South Dakota      Tennessee          Texas           Utah        Vermont 
+             2              2              2              2              2 
+      Virginia     Washington  West Virginia      Wisconsin        Wyoming 
+             2              2              2              2              2 
+> 
+> ## Compare the 2 and 4 grouping:
+> g24 <- cutree(hc, k = c(2,4))
+> table(grp2 = g24[,"2"], grp4 = g24[,"4"])
+    grp4
+grp2  1  2  3  4
+   1 14  0  0  2
+   2  0 14 20  0
+> 
+> 
+> 
+> cleanEx()
+> nameEx("decompose")
+> ### * decompose
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: decompose
+> ### Title: Classical Seasonal Decomposition by Moving Averages
+> ### Aliases: decompose plot.decomposed.ts
+> ### Keywords: ts
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> m <- decompose(co2)
+> m$figure
+ [1] -0.05359649  0.61055921  1.37564693  2.51682018  3.00028509  2.32921053
+ [7]  0.81293860 -1.25052632 -3.05458333 -3.25194079 -2.06969298 -0.96512061
+> plot(m)
+> 
+> ## example taken from Kendall/Stuart
+> x <- c(-50, 175, 149, 214, 247, 237, 225, 329, 729, 809,
++        530, 489, 540, 457, 195, 176, 337, 239, 128, 102, 232, 429, 3,
++        98, 43, -141, -77, -13, 125, 361, -45, 184)
+> x <- ts(x, start = c(1951, 1), end = c(1958, 4), frequency = 4)
+> m <- decompose(x)
+> ## seasonal figure: 6.25, 8.62, -8.84, -6.03
+> round(decompose(x)$figure / 10, 2)
+[1]  6.25  8.62 -8.84 -6.03
+> 
+> 
+> 
+> cleanEx()
+> nameEx("delete.response")
+> ### * delete.response
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: delete.response
+> ### Title: Modify Terms Objects
+> ### Aliases: reformulate drop.terms delete.response [.terms
+> ### Keywords: programming
+> 
+> ### ** Examples
+> 
+> ff <- y ~ z + x + w
+> tt <- terms(ff)
+> tt
+y ~ z + x + w
+attr(,"variables")
+list(y, z, x, w)
+attr(,"factors")
+  z x w
+y 0 0 0
+z 1 0 0
+x 0 1 0
+w 0 0 1
+attr(,"term.labels")
+[1] "z" "x" "w"
+attr(,"order")
+[1] 1 1 1
+attr(,"intercept")
+[1] 1
+attr(,"response")
+[1] 1
+attr(,".Environment")
+<environment: R_GlobalEnv>
+> delete.response(tt)
+~z + x + w
+attr(,"variables")
+list(z, x, w)
+attr(,"factors")
+  z x w
+z 1 0 0
+x 0 1 0
+w 0 0 1
+attr(,"term.labels")
+[1] "z" "x" "w"
+attr(,"order")
+[1] 1 1 1
+attr(,"intercept")
+[1] 1
+attr(,"response")
+[1] 0
+attr(,".Environment")
+<environment: R_GlobalEnv>
+> drop.terms(tt, 2:3, keep.response = TRUE)
+y ~ z
+attr(,"variables")
+list(y, z)
+attr(,"factors")
+  z
+y 0
+z 1
+attr(,"term.labels")
+[1] "z"
+attr(,"order")
+[1] 1
+attr(,"intercept")
+[1] 1
+attr(,"response")
+[1] 1
+attr(,".Environment")
+<environment: R_GlobalEnv>
+> tt[-1]
+y ~ x + w
+attr(,"variables")
+list(y, x, w)
+attr(,"factors")
+  x w
+y 0 0
+x 1 0
+w 0 1
+attr(,"term.labels")
+[1] "x" "w"
+attr(,"order")
+[1] 1 1
+attr(,"intercept")
+[1] 1
+attr(,"response")
+[1] 1
+attr(,".Environment")
+<environment: R_GlobalEnv>
+> tt[2:3]
+y ~ x + w
+attr(,"variables")
+list(y, x, w)
+attr(,"factors")
+  x w
+y 0 0
+x 1 0
+w 0 1
+attr(,"term.labels")
+[1] "x" "w"
+attr(,"order")
+[1] 1 1
+attr(,"intercept")
+[1] 1
+attr(,"response")
+[1] 1
+attr(,".Environment")
+<environment: R_GlobalEnv>
+> reformulate(attr(tt, "term.labels"))
+~z + x + w
+> 
+> ## keep LHS :
+> reformulate("x*w", ff[[2]])
+y ~ x * w
+> fS <- surv(ft, case) ~ a + b
+> reformulate(c("a", "b*f"), fS[[2]])
+surv(ft, case) ~ a + b * f
+> 
+> ## using non-syntactic names:
+> reformulate(c("`P/E`", "`% Growth`"), response = as.name("+-"))
+`+-` ~ `P/E` + `% Growth`
+> 
+> x <- c("a name", "another name")
+> try( reformulate(x) ) # -> Error ..... unexpected symbol
+Error in str2lang(termtext) : <text>:1:3: unexpected symbol
+1: a name
+      ^
+> ## rather backquote the strings in x :
+> reformulate(sprintf("`%s`", x))
+~`a name` + `another name`
+> 
+> stopifnot(identical(      ~ var, reformulate("var")),
++           identical(~ a + b + c, reformulate(letters[1:3])),
++           identical(  y ~ a + b, reformulate(letters[1:2], "y"))
++          )
+> 
+> 
+> 
+> cleanEx()
+> nameEx("dendrapply")
+> ### * dendrapply
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: dendrapply
+> ### Title: Apply a Function to All Nodes of a Dendrogram
+> ### Aliases: dendrapply
+> ### Keywords: iteration
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> ## a smallish simple dendrogram
+> dhc <- as.dendrogram(hc <- hclust(dist(USArrests), "ave"))
+> (dhc21 <- dhc[[2]][[1]])
+'dendrogram' with 2 branches and 14 members total, at height 44.83793 
+> 
+> ## too simple:
+> dendrapply(dhc21, function(n) utils::str(attributes(n)))
+List of 4
+ $ members : int 14
+ $ midpoint: num 6.8
+ $ height  : num 44.8
+ $ class   : chr "dendrogram"
+List of 4
+ $ members : int 8
+ $ midpoint: num 3.34
+ $ height  : num 26.7
+ $ class   : chr "dendrogram"
+List of 4
+ $ members : int 5
+ $ midpoint: num 0.938
+ $ height  : num 16.4
+ $ class   : chr "dendrogram"
+List of 5
+ $ members: int 1
+ $ height : num 0
+ $ label  : chr "Washington"
+ $ leaf   : logi TRUE
+ $ class  : chr "dendrogram"
+List of 4
+ $ members : int 4
+ $ midpoint: num 0.875
+ $ height  : num 12.9
+ $ class   : chr "dendrogram"
+List of 5
+ $ members: int 1
+ $ height : num 0
+ $ label  : chr "Oregon"
+ $ leaf   : logi TRUE
+ $ class  : chr "dendrogram"
+List of 4
+ $ members : int 3
+ $ midpoint: num 0.75
+ $ height  : num 10.7
+ $ class   : chr "dendrogram"
+List of 5
+ $ members: int 1
+ $ height : num 0
+ $ label  : chr "Wyoming"
+ $ leaf   : logi TRUE
+ $ class  : chr "dendrogram"
+List of 4
+ $ members : int 2
+ $ midpoint: num 0.5
+ $ height  : num 7.36
+ $ class   : chr "dendrogram"
+List of 5
+ $ label  : chr "Oklahoma"
+ $ members: int 1
+ $ height : num 0
+ $ leaf   : logi TRUE
+ $ class  : chr "dendrogram"
+List of 5
+ $ label  : chr "Virginia"
+ $ members: int 1
+ $ height : num 0
+ $ leaf   : logi TRUE
+ $ class  : chr "dendrogram"
+List of 4
+ $ members : int 3
+ $ midpoint: num 0.75
+ $ height  : num 22.6
+ $ class   : chr "dendrogram"
+List of 5
+ $ members: int 1
+ $ height : num 0
+ $ label  : chr "Rhode Island"
+ $ leaf   : logi TRUE
+ $ class  : chr "dendrogram"
+List of 4
+ $ members : int 2
+ $ midpoint: num 0.5
+ $ height  : num 11.5
+ $ class   : chr "dendrogram"
+List of 5
+ $ label  : chr "Massachusetts"
+ $ members: int 1
+ $ height : num 0
+ $ leaf   : logi TRUE
+ $ class  : chr "dendrogram"
+List of 5
+ $ label  : chr "New Jersey"
+ $ members: int 1
+ $ height : num 0
+ $ leaf   : logi TRUE
+ $ class  : chr "dendrogram"
+List of 4
+ $ members : int 6
+ $ midpoint: num 2.25
+ $ height  : num 29.1
+ $ class   : chr "dendrogram"
+List of 4
+ $ members : int 3
+ $ midpoint: num 0.75
+ $ height  : num 20.2
+ $ class   : chr "dendrogram"
+List of 5
+ $ members: int 1
+ $ height : num 0
+ $ label  : chr "Missouri"
+ $ leaf   : logi TRUE
+ $ class  : chr "dendrogram"
+List of 4
+ $ members : int 2
+ $ midpoint: num 0.5
+ $ height  : num 12.6
+ $ class   : chr "dendrogram"
+List of 5
+ $ label  : chr "Arkansas"
+ $ members: int 1
+ $ height : num 0
+ $ leaf   : logi TRUE
+ $ class  : chr "dendrogram"
+List of 5
+ $ label  : chr "Tennessee"
+ $ members: int 1
+ $ height : num 0
+ $ leaf   : logi TRUE
+ $ class  : chr "dendrogram"
+List of 4
+ $ members : int 3
+ $ midpoint: num 0.75
+ $ height  : num 24
+ $ class   : chr "dendrogram"
+List of 5
+ $ members: int 1
+ $ height : num 0
+ $ label  : chr "Georgia"
+ $ leaf   : logi TRUE
+ $ class  : chr "dendrogram"
+List of 4
+ $ members : int 2
+ $ midpoint: num 0.5
+ $ height  : num 14.5
+ $ class   : chr "dendrogram"
+List of 5
+ $ label  : chr "Colorado"
+ $ members: int 1
+ $ height : num 0
+ $ leaf   : logi TRUE
+ $ class  : chr "dendrogram"
+List of 5
+ $ label  : chr "Texas"
+ $ members: int 1
+ $ height : num 0
+ $ leaf   : logi TRUE
+ $ class  : chr "dendrogram"
+[[1]]
+[[1]][[1]]
+[[1]][[1]][[1]]
+NULL
+
+[[1]][[1]][[2]]
+[[1]][[1]][[2]][[1]]
+NULL
+
+[[1]][[1]][[2]][[2]]
+[[1]][[1]][[2]][[2]][[1]]
+NULL
+
+[[1]][[1]][[2]][[2]][[2]]
+[[1]][[1]][[2]][[2]][[2]][[1]]
+NULL
+
+[[1]][[1]][[2]][[2]][[2]][[2]]
+NULL
+
+
+
+
+
+[[1]][[2]]
+[[1]][[2]][[1]]
+NULL
+
+[[1]][[2]][[2]]
+[[1]][[2]][[2]][[1]]
+NULL
+
+[[1]][[2]][[2]][[2]]
+NULL
+
+
+
+
+[[2]]
+[[2]][[1]]
+[[2]][[1]][[1]]
+NULL
+
+[[2]][[1]][[2]]
+[[2]][[1]][[2]][[1]]
+NULL
+
+[[2]][[1]][[2]][[2]]
+NULL
+
+
+
+[[2]][[2]]
+[[2]][[2]][[1]]
+NULL
+
+[[2]][[2]][[2]]
+[[2]][[2]][[2]][[1]]
+NULL
+
+[[2]][[2]][[2]][[2]]
+NULL
+
+
+
+
+> 
+> ## toy example to set colored leaf labels :
+> local({
++   colLab <<- function(n) {
++       if(is.leaf(n)) {
++         a <- attributes(n)
++         i <<- i+1
++         attr(n, "nodePar") <-
++             c(a$nodePar, list(lab.col = mycols[i], lab.font = i%%3))
++       }
++       n
++   }
++   mycols <- grDevices::rainbow(attr(dhc21,"members"))
++   i <- 0
++  })
+> dL <- dendrapply(dhc21, colLab)
+> op <- par(mfrow = 2:1)
+>  plot(dhc21)
+>  plot(dL) ## --> colored labels!
+> par(op)
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("dendrogram")
+> ### * dendrogram
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: dendrogram
+> ### Title: General Tree Structures
+> ### Aliases: dendrogram as.dendrogram as.dendrogram.dendrogram
+> ###   as.dendrogram.hclust as.hclust.dendrogram cut.dendrogram
+> ###   [[.dendrogram merge.dendrogram nobs.dendrogram plot.dendrogram
+> ###   print.dendrogram rev.dendrogram str.dendrogram is.leaf
+> ### Keywords: multivariate tree hplot
+> 
+> ### ** Examples
+> 
+> require(graphics); require(utils)
+> 
+> hc <- hclust(dist(USArrests), "ave")
+> (dend1 <- as.dendrogram(hc)) # "print()" method
+'dendrogram' with 2 branches and 50 members total, at height 152.314 
+> str(dend1)          # "str()" method
+--[dendrogram w/ 2 branches and 50 members at h = 152]
+  |--[dendrogram w/ 2 branches and 16 members at h = 77.6]
+  |  |--[dendrogram w/ 2 branches and 2 members at h = 38.5]
+  |  |  |--leaf "Florida" 
+  |  |  `--leaf "North Carolina" 
+  |  `--[dendrogram w/ 2 branches and 14 members at h = 44.3]
+  |     |--[dendrogram w/ 2 branches and 4 members at h = 28]
+  |     |  |--leaf "California" 
+  |     |  `--[dendrogram w/ 2 branches and 3 members at h = 15.5]
+  |     |     |--leaf "Maryland" 
+  |     |     `--[dendrogram w/ 2 branches and 2 members at h = 13.9]
+  |     |        |--leaf "Arizona" 
+  |     |        `--leaf "New Mexico" 
+  |     `--[dendrogram w/ 2 branches and 10 members at h = 39.4]
+  |        |--[dendrogram w/ 2 branches and 7 members at h = 26.4]
+  |        |  |--[dendrogram w/ 2 branches and 3 members at h = 16.9]
+  |        |  |  |--leaf "Delaware" 
+  |        |  |  `--[dendrogram w/ 2 branches and 2 members at h = 15.5]
+  |        |  |     |--leaf "Alabama" 
+  |        |  |     `--leaf "Louisiana" 
+  |        |  `--[dendrogram w/ 2 branches and 4 members at h = 18.4]
+  |        |     |--[dendrogram w/ 2 branches and 2 members at h = 6.24]
+  |        |     |  |--leaf "Illinois" 
+  |        |     |  `--leaf "New York" 
+  |        |     `--[dendrogram w/ 2 branches and 2 members at h = 13.3]
+  |        |        |--leaf "Michigan" 
+  |        |        `--leaf "Nevada" 
+  |        `--[dendrogram w/ 2 branches and 3 members at h = 28.1]
+  |           |--leaf "Alaska" 
+  |           `--[dendrogram w/ 2 branches and 2 members at h = 21.2]
+  |              |--leaf "Mississippi" 
+  |              `--leaf "South Carolina" 
+  `--[dendrogram w/ 2 branches and 34 members at h = 89.2]
+     |--[dendrogram w/ 2 branches and 14 members at h = 44.8]
+     |  |--[dendrogram w/ 2 branches and 8 members at h = 26.7]
+     |  |  |--[dendrogram w/ 2 branches and 5 members at h = 16.4]
+     |  |  |  |--leaf "Washington" 
+     |  |  |  `--[dendrogram w/ 2 branches and 4 members at h = 12.9]
+     |  |  |     |--leaf "Oregon" 
+     |  |  |     `--[dendrogram w/ 2 branches and 3 members at h = 10.7]
+     |  |  |        |--leaf "Wyoming" 
+     |  |  |        `--[dendrogram w/ 2 branches and 2 members at h = 7.36]
+     |  |  |           |--leaf "Oklahoma" 
+     |  |  |           `--leaf "Virginia" 
+     |  |  `--[dendrogram w/ 2 branches and 3 members at h = 22.6]
+     |  |     |--leaf "Rhode Island" 
+     |  |     `--[dendrogram w/ 2 branches and 2 members at h = 11.5]
+     |  |        |--leaf "Massachusetts" 
+     |  |        `--leaf "New Jersey" 
+     |  `--[dendrogram w/ 2 branches and 6 members at h = 29.1]
+     |     |--[dendrogram w/ 2 branches and 3 members at h = 20.2]
+     |     |  |--leaf "Missouri" 
+     |     |  `--[dendrogram w/ 2 branches and 2 members at h = 12.6]
+     |     |     |--leaf "Arkansas" 
+     |     |     `--leaf "Tennessee" 
+     |     `--[dendrogram w/ 2 branches and 3 members at h = 24]
+     |        |--leaf "Georgia" 
+     |        `--[dendrogram w/ 2 branches and 2 members at h = 14.5]
+     |           |--leaf "Colorado" 
+     |           `--leaf "Texas" 
+     `--[dendrogram w/ 2 branches and 20 members at h = 54.7]
+        |--[dendrogram w/ 2 branches and 10 members at h = 20.6]
+        |  |--[dendrogram w/ 2 branches and 4 members at h = 15]
+        |  |  |--leaf "Idaho" 
+        |  |  `--[dendrogram w/ 2 branches and 3 members at h = 12.4]
+        |  |     |--leaf "Nebraska" 
+        |  |     `--[dendrogram w/ 2 branches and 2 members at h = 3.83]
+        |  |        |--leaf "Kentucky" 
+        |  |        `--leaf "Montana" 
+        |  `--[dendrogram w/ 2 branches and 6 members at h = 15.1]
+        |     |--[dendrogram w/ 2 branches and 2 members at h = 6.64]
+        |     |  |--leaf "Ohio" 
+        |     |  `--leaf "Utah" 
+        |     `--[dendrogram w/ 2 branches and 4 members at h = 13.4]
+        |        |--[dendrogram w/ 2 branches and 2 members at h = 3.93]
+        |        |  |--leaf "Indiana" 
+        |        |  `--leaf "Kansas" 
+        |        `--[dendrogram w/ 2 branches and 2 members at h = 8.03]
+        |           |--leaf "Connecticut" 
+        |           `--leaf "Pennsylvania" 
+        `--[dendrogram w/ 2 branches and 10 members at h = 41.1]
+           |--leaf "Hawaii" 
+           `--[dendrogram w/ 2 branches and 9 members at h = 33.1]
+              |--[dendrogram w/ 2 branches and 3 members at h = 10.8]
+              |  |--leaf "West Virginia" 
+              |  `--[dendrogram w/ 2 branches and 2 members at h = 8.54]
+              |     |--leaf "Maine" 
+              |     `--leaf "South Dakota" 
+              `--[dendrogram w/ 2 branches and 6 members at h = 27.8]
+                 |--[dendrogram w/ 2 branches and 2 members at h = 13]
+                 |  |--leaf "North Dakota" 
+                 |  `--leaf "Vermont" 
+                 `--[dendrogram w/ 2 branches and 4 members at h = 19]
+                    |--leaf "Minnesota" 
+                    `--[dendrogram w/ 2 branches and 3 members at h = 10.2]
+                       |--leaf "Wisconsin" 
+                       `--[dendrogram w/ 2 branches and 2 members at h = 2.29]
+                          |--leaf "Iowa" 
+                          `--leaf "New Hampshire" 
+> str(dend1, max.level = 2, last.str =  "'") # only the first two sub-levels
+--[dendrogram w/ 2 branches and 50 members at h = 152]
+  |--[dendrogram w/ 2 branches and 16 members at h = 77.6]
+  |  |--[dendrogram w/ 2 branches and 2 members at h = 38.5] ..
+  |  '--[dendrogram w/ 2 branches and 14 members at h = 44.3] ..
+  '--[dendrogram w/ 2 branches and 34 members at h = 89.2]
+     |--[dendrogram w/ 2 branches and 14 members at h = 44.8] ..
+     '--[dendrogram w/ 2 branches and 20 members at h = 54.7] ..
+> oo <- options(str.dendrogram.last = "\\") # yet another possibility
+> str(dend1, max.level = 2) # only the first two sub-levels
+--[dendrogram w/ 2 branches and 50 members at h = 152]
+  |--[dendrogram w/ 2 branches and 16 members at h = 77.6]
+  |  |--[dendrogram w/ 2 branches and 2 members at h = 38.5] ..
+  |  --[dendrogram w/ 2 branches and 14 members at h = 44.3] ..
+  --[dendrogram w/ 2 branches and 34 members at h = 89.2]
+     |--[dendrogram w/ 2 branches and 14 members at h = 44.8] ..
+     --[dendrogram w/ 2 branches and 20 members at h = 54.7] ..
+> options(oo)  # .. resetting them
+> 
+> op <- par(mfrow =  c(2,2), mar = c(5,2,1,4))
+> plot(dend1)
+> ## "triangle" type and show inner nodes:
+> plot(dend1, nodePar = list(pch = c(1,NA), cex = 0.8, lab.cex = 0.8),
++       type = "t", center = TRUE)
+> plot(dend1, edgePar = list(col = 1:2, lty = 2:3),
++      dLeaf = 1, edge.root = TRUE)
+> plot(dend1, nodePar = list(pch = 2:1, cex = .4*2:1, col = 2:3),
++      horiz = TRUE)
+> 
+> ## simple test for as.hclust() as the inverse of as.dendrogram():
+> stopifnot(identical(as.hclust(dend1)[1:4], hc[1:4]))
+> 
+> dend2 <- cut(dend1, h = 70)
+> ## leaves are wrong horizontally in R 4.0 and earlier:
+> plot(dend2$upper)
+> plot(dend2$upper, nodePar = list(pch = c(1,7), col = 2:1))
+> ##  dend2$lower is *NOT* a dendrogram, but a list of .. :
+> plot(dend2$lower[[3]], nodePar = list(col = 4), horiz = TRUE, type = "tr")
+> ## "inner" and "leaf" edges in different type & color :
+> plot(dend2$lower[[2]], nodePar = list(col = 1),   # non empty list
++      edgePar = list(lty = 1:2, col = 2:1), edge.root = TRUE)
+> par(op)
+> d3 <- dend2$lower[[2]][[2]][[1]]
+> stopifnot(identical(d3, dend2$lower[[2]][[c(2,1)]]))
+> str(d3, last.str = "'")
+--[dendrogram w/ 2 branches and 7 members at h = 26.4]
+  |--[dendrogram w/ 2 branches and 3 members at h = 16.9]
+  |  |--leaf "Delaware" 
+  |  '--[dendrogram w/ 2 branches and 2 members at h = 15.5]
+  |     |--leaf "Alabama" 
+  |     '--leaf "Louisiana" 
+  '--[dendrogram w/ 2 branches and 4 members at h = 18.4]
+     |--[dendrogram w/ 2 branches and 2 members at h = 6.24]
+     |  |--leaf "Illinois" 
+     |  '--leaf "New York" 
+     '--[dendrogram w/ 2 branches and 2 members at h = 13.3]
+        |--leaf "Michigan" 
+        '--leaf "Nevada" 
+> 
+> ## to peek at the inner structure "if you must", use '[..]' indexing :
+> str(d3[2][[1]]) ## or the full
+List of 2
+ $ :List of 2
+  ..$ : int 13
+  .. ..- attr(*, "label")= chr "Illinois"
+  .. ..- attr(*, "members")= int 1
+  .. ..- attr(*, "height")= num 0
+  .. ..- attr(*, "leaf")= logi TRUE
+  ..$ : int 32
+  .. ..- attr(*, "label")= chr "New York"
+  .. ..- attr(*, "members")= int 1
+  .. ..- attr(*, "height")= num 0
+  .. ..- attr(*, "leaf")= logi TRUE
+  ..- attr(*, "members")= int 2
+  ..- attr(*, "midpoint")= num 0.5
+  ..- attr(*, "height")= num 6.24
+ $ :List of 2
+  ..$ : int 22
+  .. ..- attr(*, "label")= chr "Michigan"
+  .. ..- attr(*, "members")= int 1
+  .. ..- attr(*, "height")= num 0
+  .. ..- attr(*, "leaf")= logi TRUE
+  ..$ : int 28
+  .. ..- attr(*, "label")= chr "Nevada"
+  .. ..- attr(*, "members")= int 1
+  .. ..- attr(*, "height")= num 0
+  .. ..- attr(*, "leaf")= logi TRUE
+  ..- attr(*, "members")= int 2
+  ..- attr(*, "midpoint")= num 0.5
+  ..- attr(*, "height")= num 13.3
+ - attr(*, "members")= int 4
+ - attr(*, "midpoint")= num 1.5
+ - attr(*, "height")= num 18.4
+> str(d3[])
+List of 2
+ $ :List of 2
+  ..$ : int 8
+  .. ..- attr(*, "members")= int 1
+  .. ..- attr(*, "height")= num 0
+  .. ..- attr(*, "label")= chr "Delaware"
+  .. ..- attr(*, "leaf")= logi TRUE
+  ..$ :List of 2
+  .. ..$ : int 1
+  .. .. ..- attr(*, "label")= chr "Alabama"
+  .. .. ..- attr(*, "members")= int 1
+  .. .. ..- attr(*, "height")= num 0
+  .. .. ..- attr(*, "leaf")= logi TRUE
+  .. ..$ : int 18
+  .. .. ..- attr(*, "label")= chr "Louisiana"
+  .. .. ..- attr(*, "members")= int 1
+  .. .. ..- attr(*, "height")= num 0
+  .. .. ..- attr(*, "leaf")= logi TRUE
+  .. ..- attr(*, "members")= int 2
+  .. ..- attr(*, "midpoint")= num 0.5
+  .. ..- attr(*, "height")= num 15.5
+  ..- attr(*, "members")= int 3
+  ..- attr(*, "midpoint")= num 0.75
+  ..- attr(*, "height")= num 16.9
+ $ :List of 2
+  ..$ :List of 2
+  .. ..$ : int 13
+  .. .. ..- attr(*, "label")= chr "Illinois"
+  .. .. ..- attr(*, "members")= int 1
+  .. .. ..- attr(*, "height")= num 0
+  .. .. ..- attr(*, "leaf")= logi TRUE
+  .. ..$ : int 32
+  .. .. ..- attr(*, "label")= chr "New York"
+  .. .. ..- attr(*, "members")= int 1
+  .. .. ..- attr(*, "height")= num 0
+  .. .. ..- attr(*, "leaf")= logi TRUE
+  .. ..- attr(*, "members")= int 2
+  .. ..- attr(*, "midpoint")= num 0.5
+  .. ..- attr(*, "height")= num 6.24
+  ..$ :List of 2
+  .. ..$ : int 22
+  .. .. ..- attr(*, "label")= chr "Michigan"
+  .. .. ..- attr(*, "members")= int 1
+  .. .. ..- attr(*, "height")= num 0
+  .. .. ..- attr(*, "leaf")= logi TRUE
+  .. ..$ : int 28
+  .. .. ..- attr(*, "label")= chr "Nevada"
+  .. .. ..- attr(*, "members")= int 1
+  .. .. ..- attr(*, "height")= num 0
+  .. .. ..- attr(*, "leaf")= logi TRUE
+  .. ..- attr(*, "members")= int 2
+  .. ..- attr(*, "midpoint")= num 0.5
+  .. ..- attr(*, "height")= num 13.3
+  ..- attr(*, "members")= int 4
+  ..- attr(*, "midpoint")= num 1.5
+  ..- attr(*, "height")= num 18.4
+ - attr(*, "members")= int 7
+ - attr(*, "midpoint")= num 2.62
+ - attr(*, "height")= num 26.4
+> 
+> ## merge() to join dendrograms:
+> (d13 <- merge(dend2$lower[[1]], dend2$lower[[3]]))
+'dendrogram' with 2 branches and 16 members total, at height 49.32173 
+> ## merge() all parts back (using default 'height' instead of original one):
+> den.1 <- Reduce(merge, dend2$lower)
+> ## or merge() all four parts at same height --> 4 branches (!)
+> d. <- merge(dend2$lower[[1]], dend2$lower[[2]], dend2$lower[[3]],
++             dend2$lower[[4]])
+> ## (with a warning) or the same using  do.call :
+> stopifnot(identical(d., do.call(merge, dend2$lower)))
+> plot(d., main = "merge(d1, d2, d3, d4)  |->  dendrogram with a 4-split")
+> 
+> ## "Zoom" in to the first dendrogram :
+> plot(dend1, xlim = c(1,20), ylim = c(1,50))
+> 
+> nP <- list(col = 3:2, cex = c(2.0, 0.75), pch =  21:22,
++            bg =  c("light blue", "pink"),
++            lab.cex = 0.75, lab.col = "tomato")
+> plot(d3, nodePar= nP, edgePar = list(col = "gray", lwd = 2), horiz = TRUE)
+> addE <- function(n) {
++       if(!is.leaf(n)) {
++         attr(n, "edgePar") <- list(p.col = "plum")
++         attr(n, "edgetext") <- paste(attr(n,"members"),"members")
++       }
++       n
++ }
+> d3e <- dendrapply(d3, addE)
+> plot(d3e, nodePar =  nP)
+> plot(d3e, nodePar =  nP, leaflab = "textlike")
+> 
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("density")
+> ### * density
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: density
+> ### Title: Kernel Density Estimation
+> ### Aliases: density density.default
+> ### Keywords: distribution smooth
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> plot(density(c(-20, rep(0,98), 20)), xlim = c(-4, 4))  # IQR = 0
+> 
+> # The Old Faithful geyser data
+> d <- density(faithful$eruptions, bw = "sj")
+> d
+
+Call:
+	density.default(x = faithful$eruptions, bw = "sj")
+
+Data: faithful$eruptions (272 obs.);	Bandwidth 'bw' = 0.14
+
+       x               y            
+ Min.   :1.180   Min.   :0.0001834  
+ 1st Qu.:2.265   1st Qu.:0.0422638  
+ Median :3.350   Median :0.1709243  
+ Mean   :3.350   Mean   :0.2301726  
+ 3rd Qu.:4.435   3rd Qu.:0.4134348  
+ Max.   :5.520   Max.   :0.5945634  
+> plot(d)
+> 
+> plot(d, type = "n")
+> polygon(d, col = "wheat")
+> 
+> ## Missing values:
+> x <- xx <- faithful$eruptions
+> x[i.out <- sample(length(x), 10)] <- NA
+> doR <- density(x, bw = 0.15, na.rm = TRUE)
+> lines(doR, col = "blue")
+> points(xx[i.out], rep(0.01, 10))
+> 
+> ## Weighted observations:
+> fe <- sort(faithful$eruptions) # has quite a few non-unique values
+> ## use 'counts / n' as weights:
+> dw <- density(unique(fe), weights = table(fe)/length(fe), bw = d$bw)
+> utils::str(dw) ## smaller n: only 126, but identical estimate:
+List of 7
+ $ x        : num [1:512] 1.18 1.19 1.2 1.21 1.21 ...
+ $ y        : num [1:512] 0.000183 0.000223 0.00027 0.000328 0.000397 ...
+ $ bw       : num 0.14
+ $ n        : int 126
+ $ call     : language density.default(x = unique(fe), bw = d$bw, weights = table(fe)/length(fe))
+ $ data.name: chr "unique(fe)"
+ $ has.na   : logi FALSE
+ - attr(*, "class")= chr "density"
+> stopifnot(all.equal(d[1:3], dw[1:3]))
+> 
+> ## simulation from a density() fit:
+> # a kernel density fit is an equally-weighted mixture.
+> fit <- density(xx)
+> N <- 1e6
+> x.new <- rnorm(N, sample(xx, size = N, replace = TRUE), fit$bw)
+> plot(fit)
+> lines(density(x.new), col = "blue")
+> 
+> 
+> (kernels <- eval(formals(density.default)$kernel))
+[1] "gaussian"     "epanechnikov" "rectangular"  "triangular"   "biweight"    
+[6] "cosine"       "optcosine"   
+> 
+> ## show the kernels in the R parametrization
+> plot (density(0, bw = 1), xlab = "",
++       main = "R's density() kernels with bw = 1")
+> for(i in 2:length(kernels))
++    lines(density(0, bw = 1, kernel =  kernels[i]), col = i)
+> legend(1.5,.4, legend = kernels, col = seq(kernels),
++        lty = 1, cex = .8, y.intersp = 1)
+> 
+> ## show the kernels in the S parametrization
+> plot(density(0, from = -1.2, to = 1.2, width = 2, kernel = "gaussian"),
++      type = "l", ylim = c(0, 1), xlab = "",
++      main = "R's density() kernels with width = 1")
+> for(i in 2:length(kernels))
++    lines(density(0, width = 2, kernel =  kernels[i]), col = i)
+> legend(0.6, 1.0, legend = kernels, col = seq(kernels), lty = 1)
+> 
+> ##-------- Semi-advanced theoretic from here on -------------
+> 
+> (RKs <- cbind(sapply(kernels,
++                      function(k) density(kernel = k, give.Rkern = TRUE))))
+                  [,1]
+gaussian     0.2820948
+epanechnikov 0.2683282
+rectangular  0.2886751
+triangular   0.2721655
+biweight     0.2699746
+cosine       0.2711340
+optcosine    0.2684756
+> 100*round(RKs["epanechnikov",]/RKs, 4) ## Efficiencies
+               [,1]
+gaussian      95.12
+epanechnikov 100.00
+rectangular   92.95
+triangular    98.59
+biweight      99.39
+cosine        98.97
+optcosine     99.95
+> 
+> bw <- bw.SJ(precip) ## sensible automatic choice
+> plot(density(precip, bw = bw),
++      main = "same sd bandwidths, 7 different kernels")
+> for(i in 2:length(kernels))
++    lines(density(precip, bw = bw, kernel = kernels[i]), col = i)
+> 
+> ## Bandwidth Adjustment for "Exactly Equivalent Kernels"
+> h.f <- sapply(kernels, function(k)density(kernel = k, give.Rkern = TRUE))
+> (h.f <- (h.f["gaussian"] / h.f)^ .2)
+    gaussian epanechnikov  rectangular   triangular     biweight       cosine 
+   1.0000000    1.0100567    0.9953989    1.0071923    1.0088217    1.0079575 
+   optcosine 
+   1.0099458 
+> ## -> 1, 1.01, .995, 1.007,... close to 1 => adjustment barely visible..
+> 
+> plot(density(precip, bw = bw),
++      main = "equivalent bandwidths, 7 different kernels")
+> for(i in 2:length(kernels))
++    lines(density(precip, bw = bw, adjust = h.f[i], kernel = kernels[i]),
++          col = i)
+> legend(55, 0.035, legend = kernels, col = seq(kernels), lty = 1)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("deriv")
+> ### * deriv
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: deriv
+> ### Title: Symbolic and Algorithmic Derivatives of Simple Expressions
+> ### Aliases: D deriv deriv.default deriv.formula deriv3 deriv3.default
+> ###   deriv3.formula
+> ### Keywords: math nonlinear
+> 
+> ### ** Examples
+> 
+> ## formula argument :
+> dx2x <- deriv(~ x^2, "x") ; dx2x
+expression({
+    .value <- x^2
+    .grad <- array(0, c(length(.value), 1L), list(NULL, c("x")))
+    .grad[, "x"] <- 2 * x
+    attr(.value, "gradient") <- .grad
+    .value
+})
+> ## Not run: 
+> ##D expression({
+> ##D          .value <- x^2
+> ##D          .grad <- array(0, c(length(.value), 1), list(NULL, c("x")))
+> ##D          .grad[, "x"] <- 2 * x
+> ##D          attr(.value, "gradient") <- .grad
+> ##D          .value
+> ##D })
+> ## End(Not run)
+> mode(dx2x)
+[1] "expression"
+> x <- -1:2
+> eval(dx2x)
+[1] 1 0 1 4
+attr(,"gradient")
+      x
+[1,] -2
+[2,]  0
+[3,]  2
+[4,]  4
+> 
+> ## Something 'tougher':
+> trig.exp <- expression(sin(cos(x + y^2)))
+> ( D.sc <- D(trig.exp, "x") )
+-(cos(cos(x + y^2)) * sin(x + y^2))
+> all.equal(D(trig.exp[[1]], "x"), D.sc)
+[1] TRUE
+> 
+> ( dxy <- deriv(trig.exp, c("x", "y")) )
+expression({
+    .expr2 <- x + y^2
+    .expr3 <- cos(.expr2)
+    .expr5 <- cos(.expr3)
+    .expr6 <- sin(.expr2)
+    .value <- sin(.expr3)
+    .grad <- array(0, c(length(.value), 2L), list(NULL, c("x", 
+        "y")))
+    .grad[, "x"] <- -(.expr5 * .expr6)
+    .grad[, "y"] <- -(.expr5 * (.expr6 * (2 * y)))
+    attr(.value, "gradient") <- .grad
+    .value
+})
+> y <- 1
+> eval(dxy)
+[1]  0.8414710  0.5143953 -0.4042392 -0.8360219
+attr(,"gradient")
+              x         y
+[1,]  0.0000000  0.000000
+[2,] -0.7216061 -1.443212
+[3,] -0.8316919 -1.663384
+[4,] -0.0774320 -0.154864
+> eval(D.sc)
+[1]  0.0000000 -0.7216061 -0.8316919 -0.0774320
+> 
+> ## function returned:
+> deriv((y ~ sin(cos(x) * y)), c("x","y"), function.arg = TRUE)
+function (x, y) 
+{
+    .expr1 <- cos(x)
+    .expr2 <- .expr1 * y
+    .expr4 <- cos(.expr2)
+    .value <- sin(.expr2)
+    .grad <- array(0, c(length(.value), 2L), list(NULL, c("x", 
+        "y")))
+    .grad[, "x"] <- -(.expr4 * (sin(x) * y))
+    .grad[, "y"] <- .expr4 * .expr1
+    attr(.value, "gradient") <- .grad
+    .value
+}
+> 
+> ## function with defaulted arguments:
+> (fx <- deriv(y ~ b0 + b1 * 2^(-x/th), c("b0", "b1", "th"),
++              function(b0, b1, th, x = 1:7){} ) )
+function (b0, b1, th, x = 1:7) 
+{
+    .expr3 <- 2^(-x/th)
+    .value <- b0 + b1 * .expr3
+    .grad <- array(0, c(length(.value), 3L), list(NULL, c("b0", 
+        "b1", "th")))
+    .grad[, "b0"] <- 1
+    .grad[, "b1"] <- .expr3
+    .grad[, "th"] <- b1 * (.expr3 * (log(2) * (x/th^2)))
+    attr(.value, "gradient") <- .grad
+    .value
+}
+> fx(2, 3, 4)
+[1] 4.522689 4.121320 3.783811 3.500000 3.261345 3.060660 2.891905
+attr(,"gradient")
+     b0        b1        th
+[1,]  1 0.8408964 0.1092872
+[2,]  1 0.7071068 0.1837984
+[3,]  1 0.5946036 0.2318331
+[4,]  1 0.5000000 0.2599302
+[5,]  1 0.4204482 0.2732180
+[6,]  1 0.3535534 0.2756976
+[7,]  1 0.2973018 0.2704720
+> 
+> ## First derivative
+> 
+> D(expression(x^2), "x")
+2 * x
+> stopifnot(D(as.name("x"), "x") == 1)
+> 
+> ## Higher derivatives
+> deriv3(y ~ b0 + b1 * 2^(-x/th), c("b0", "b1", "th"),
++      c("b0", "b1", "th", "x") )
+function (b0, b1, th, x) 
+{
+    .expr3 <- 2^(-x/th)
+    .expr6 <- log(2)
+    .expr7 <- th^2
+    .expr9 <- .expr6 * (x/.expr7)
+    .expr10 <- .expr3 * .expr9
+    .value <- b0 + b1 * .expr3
+    .grad <- array(0, c(length(.value), 3L), list(NULL, c("b0", 
+        "b1", "th")))
+    .hessian <- array(0, c(length(.value), 3L, 3L), list(NULL, 
+        c("b0", "b1", "th"), c("b0", "b1", "th")))
+    .grad[, "b0"] <- 1
+    .grad[, "b1"] <- .expr3
+    .hessian[, "b1", "b1"] <- 0
+    .hessian[, "b1", "th"] <- .hessian[, "th", "b1"] <- .expr10
+    .grad[, "th"] <- b1 * .expr10
+    .hessian[, "th", "th"] <- b1 * (.expr10 * .expr9 - .expr3 * 
+        (.expr6 * (x * (2 * th)/.expr7^2)))
+    attr(.value, "gradient") <- .grad
+    attr(.value, "hessian") <- .hessian
+    .value
+}
+> 
+> ## Higher derivatives:
+> DD <- function(expr, name, order = 1) {
++    if(order < 1) stop("'order' must be >= 1")
++    if(order == 1) D(expr, name)
++    else DD(D(expr, name), name, order - 1)
++ }
+> DD(expression(sin(x^2)), "x", 3)
+-(sin(x^2) * (2 * x) * 2 + ((cos(x^2) * (2 * x) * (2 * x) + sin(x^2) * 
+    2) * (2 * x) + sin(x^2) * (2 * x) * 2))
+> ## showing the limits of the internal "simplify()" :
+> ## Not run: 
+> ##D -sin(x^2) * (2 * x) * 2 + ((cos(x^2) * (2 * x) * (2 * x) + sin(x^2) *
+> ##D     2) * (2 * x) + sin(x^2) * (2 * x) * 2)
+> ## End(Not run)
+> 
+> ## New (R 3.4.0, 2017):
+> D(quote(log1p(x^2)), "x") ## log1p(x) = log(1 + x)
+2 * x/(1 + x^2)
+> stopifnot(identical(
++        D(quote(log1p(x^2)), "x"),
++        D(quote(log(1+x^2)), "x")))
+> D(quote(expm1(x^2)), "x") ## expm1(x) = exp(x) - 1
+exp(x^2) * (2 * x)
+> stopifnot(identical(
++        D(quote(expm1(x^2)), "x") -> Dex1,
++        D(quote(exp(x^2)-1), "x")),
++        identical(Dex1, quote(exp(x^2) * (2 * x))))
+> 
+> D(quote(sinpi(x^2)), "x") ## sinpi(x) = sin(pi*x)
+cospi(x^2) * (pi * (2 * x))
+> D(quote(cospi(x^2)), "x") ## cospi(x) = cos(pi*x)
+-(sinpi(x^2) * (pi * (2 * x)))
+> D(quote(tanpi(x^2)), "x") ## tanpi(x) = tan(pi*x)
+pi * (2 * x)/cospi(x^2)^2
+> 
+> stopifnot(identical(D(quote(log2 (x^2)), "x"),
++                     quote(2 * x/(x^2 * log(2)))),
++           identical(D(quote(log10(x^2)), "x"),
++                     quote(2 * x/(x^2 * log(10)))))
+> 
+> 
+> 
+> 
+> cleanEx()
+> nameEx("diffinv")
+> ### * diffinv
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: diffinv
+> ### Title: Discrete Integration: Inverse of Differencing
+> ### Aliases: diffinv diffinv.default diffinv.ts
+> ### Keywords: ts
+> 
+> ### ** Examples
+> 
+> s <- 1:10
+> d <- diff(s)
+> diffinv(d, xi = 1)
+ [1]  1  2  3  4  5  6  7  8  9 10
+> 
+> 
+> 
+> cleanEx()
+> nameEx("dist")
+> ### * dist
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: dist
+> ### Title: Distance Matrix Computation
+> ### Aliases: dist print.dist format.dist labels.dist as.matrix.dist as.dist
+> ###   as.dist.default
+> ### Keywords: multivariate cluster
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> x <- matrix(rnorm(100), nrow = 5)
+> dist(x)
+         1        2        3        4
+2 5.701817                           
+3 6.013119 5.032069                  
+4 7.276905 5.325473 5.811861         
+5 6.619295 5.306750 4.945987 6.612081
+> dist(x, diag = TRUE)
+         1        2        3        4        5
+1 0.000000                                    
+2 5.701817 0.000000                           
+3 6.013119 5.032069 0.000000                  
+4 7.276905 5.325473 5.811861 0.000000         
+5 6.619295 5.306750 4.945987 6.612081 0.000000
+> dist(x, upper = TRUE)
+         1        2        3        4        5
+1          5.701817 6.013119 7.276905 6.619295
+2 5.701817          5.032069 5.325473 5.306750
+3 6.013119 5.032069          5.811861 4.945987
+4 7.276905 5.325473 5.811861          6.612081
+5 6.619295 5.306750 4.945987 6.612081         
+> m <- as.matrix(dist(x))
+> d <- as.dist(m)
+> stopifnot(d == dist(x))
+> 
+> ## Use correlations between variables "as distance"
+> dd <- as.dist((1 - cor(USJudgeRatings))/2)
+> round(1000 * dd) # (prints more nicely)
+     CONT INTG DMNR DILG CFMG DECI PREP FAMI ORAL WRIT PHYS
+INTG  567                                                  
+DMNR  577   18                                             
+DILG  494   64   82                                        
+CFMG  432   93   93   21                                   
+DECI  457   99   98   22    9                              
+PREP  494   61   72   11   21   21                         
+FAMI  513   66   79   21   32   29    5                    
+ORAL  506   44   47   23   25   26    8    9               
+WRIT  522   46   53   20   29   27    7    5    3          
+PHYS  473  129  106   94   60   64   76   78   54   72     
+RTEN  517   31   28   35   36   38   25   29    9   16   47
+> plot(hclust(dd)) # to see a dendrogram of clustered variables
+> 
+> ## example of binary and canberra distances.
+> x <- c(0, 0, 1, 1, 1, 1)
+> y <- c(1, 0, 1, 1, 0, 1)
+> dist(rbind(x, y), method = "binary")
+    x
+y 0.4
+> ## answer 0.4 = 2/5
+> dist(rbind(x, y), method = "canberra")
+    x
+y 2.4
+> ## answer 2 * (6/5)
+> 
+> ## To find the names
+> labels(eurodist)
+ [1] "Athens"          "Barcelona"       "Brussels"        "Calais"         
+ [5] "Cherbourg"       "Cologne"         "Copenhagen"      "Geneva"         
+ [9] "Gibraltar"       "Hamburg"         "Hook of Holland" "Lisbon"         
+[13] "Lyons"           "Madrid"          "Marseilles"      "Milan"          
+[17] "Munich"          "Paris"           "Rome"            "Stockholm"      
+[21] "Vienna"         
+> 
+> ## Examples involving "Inf" :
+> ## 1)
+> x[6] <- Inf
+> (m2 <- rbind(x, y))
+  [,1] [,2] [,3] [,4] [,5] [,6]
+x    0    0    1    1    1  Inf
+y    1    0    1    1    0    1
+> dist(m2, method = "binary")   # warning, answer 0.5 = 2/4
+Warning in dist(m2, method = "binary") :
+  treating non-finite values as NA
+    x
+y 0.5
+> ## These all give "Inf":
+> stopifnot(Inf == dist(m2, method =  "euclidean"),
++           Inf == dist(m2, method =  "maximum"),
++           Inf == dist(m2, method =  "manhattan"))
+> ##  "Inf" is same as very large number:
+> x1 <- x; x1[6] <- 1e100
+> stopifnot(dist(cbind(x, y), method = "canberra") ==
++     print(dist(cbind(x1, y), method = "canberra")))
+  1 2 3 4 5
+2 2        
+3 1 2      
+4 1 2 0    
+5 2 2 1 1  
+6 1 2 1 1 2
+> 
+> ## 2)
+> y[6] <- Inf #-> 6-th pair is excluded
+> dist(rbind(x, y), method = "binary"  )   # warning; 0.5
+Warning in dist(rbind(x, y), method = "binary") :
+  treating non-finite values as NA
+    x
+y 0.5
+> dist(rbind(x, y), method = "canberra"  ) # 3
+  x
+y 3
+> dist(rbind(x, y), method = "maximum")    # 1
+  x
+y 1
+> dist(rbind(x, y), method = "manhattan")  # 2.4
+    x
+y 2.4
+> 
+> 
+> 
+> cleanEx()
+> nameEx("dummy.coef")
+> ### * dummy.coef
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: dummy.coef
+> ### Title: Extract Coefficients in Original Coding
+> ### Aliases: dummy.coef dummy.coef.lm dummy.coef.aovlist
+> ### Keywords: models
+> 
+> ### ** Examples
+> 
+> options(contrasts = c("contr.helmert", "contr.poly"))
+> ## From Venables and Ripley (2002) p.165.
+> npk.aov <- aov(yield ~ block + N*P*K, npk)
+> dummy.coef(npk.aov)
+Full coefficients are 
+                                                                               
+(Intercept):        54.875                                                     
+block:                   1          2          3          4      5      6      
+                    -0.850      2.575      5.900     -4.750 -4.350  1.475      
+N:                       0          1                                          
+                 -2.808333   2.808333                                          
+P:                       0          1                                          
+                 0.5916667 -0.5916667                                          
+K:                       0          1                                          
+                  1.991667  -1.991667                                          
+N:P:                   0:0        1:0        0:1        1:1                    
+                -0.9416667  0.9416667  0.9416667 -0.9416667                    
+N:K:                   0:0        1:0        0:1        1:1                    
+                    -1.175      1.175      1.175     -1.175                    
+P:K:                   0:0        1:0        0:1        1:1                    
+                 0.1416667 -0.1416667 -0.1416667  0.1416667                    
+N:P:K:               0:0:0      1:0:0      0:1:0      1:1:0  0:0:1  1:0:1 0:1:1
+                         0          0          0          0      0      0     0
+                     
+(Intercept):         
+block:               
+                     
+N:                   
+                     
+P:                   
+                     
+K:                   
+                     
+N:P:                 
+                     
+N:K:                 
+                     
+P:K:                 
+                     
+N:P:K:          1:1:1
+                    0
+> 
+> npk.aovE <- aov(yield ~  N*P*K + Error(block), npk)
+> dummy.coef(npk.aovE)
+
+     Error: (Intercept) 
+                      
+(Intercept):    54.875
+
+     Error: block 
+                                                                               
+N:P:K:        0:0:0     1:0:0     0:1:0     1:1:0     0:0:1     1:0:1     0:1:1
+          -1.241667  1.241667  1.241667 -1.241667  1.241667 -1.241667 -1.241667
+                   
+N:P:K:        1:1:1
+           1.241667
+
+     Error: Within 
+                                                   
+N:               0          1                      
+         -2.808333   2.808333                      
+P:               0          1                      
+         0.5916667 -0.5916667                      
+K:               0          1                      
+          1.991667  -1.991667                      
+N:P:           0:0        1:0        0:1        1:1
+        -0.9416667  0.9416667  0.9416667 -0.9416667
+N:K:           0:0        1:0        0:1        1:1
+            -1.175      1.175      1.175     -1.175
+P:K:           0:0        1:0        0:1        1:1
+         0.1416667 -0.1416667 -0.1416667  0.1416667
+> 
+> 
+> 
+> base::options(contrasts = c(unordered = "contr.treatment",ordered = "contr.poly"))
+> cleanEx()
+> nameEx("ecdf")
+> ### * ecdf
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: ecdf
+> ### Title: Empirical Cumulative Distribution Function
+> ### Aliases: ecdf plot.ecdf print.ecdf summary.ecdf quantile.ecdf
+> ### Keywords: dplot hplot
+> 
+> ### ** Examples
+> 
+> ##-- Simple didactical  ecdf  example :
+> x <- rnorm(12)
+> Fn <- ecdf(x)
+> Fn     # a *function*
+Empirical CDF 
+Call: ecdf(x)
+ x[1:12] = -0.83563, -0.82047, -0.62645,  ..., 1.5118, 1.5953
+> Fn(x)  # returns the percentiles for x
+ [1] 0.25000000 0.41666667 0.08333333 1.00000000 0.50000000 0.16666667
+ [7] 0.66666667 0.83333333 0.75000000 0.33333333 0.91666667 0.58333333
+> tt <- seq(-2, 2, by = 0.1)
+> 12 * Fn(tt) # Fn is a 'simple' function {with values k/12}
+ [1]  0  0  0  0  0  0  0  0  0  0  0  0  2  2  3  3  3  4  4  4  4  4  5  5  7
+[26]  8  9  9 10 10 10 10 10 10 10 10 12 12 12 12 12
+> summary(Fn)
+Empirical CDF:	  12 unique values with summary
+   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
+-0.8356 -0.3857  0.3597  0.2686  0.6164  1.5953 
+> ##--> see below for graphics
+> knots(Fn)  # the unique data values {12 of them if there were no ties}
+ [1] -0.8356286 -0.8204684 -0.6264538 -0.3053884  0.1836433  0.3295078
+ [7]  0.3898432  0.4874291  0.5757814  0.7383247  1.5117812  1.5952808
+> 
+> y <- round(rnorm(12), 1); y[3] <- y[1]
+> Fn12 <- ecdf(y)
+> Fn12
+Empirical CDF 
+Call: ecdf(y)
+ x[1:8] =   -2.2,     -2,   -0.6,  ...,    0.8,    0.9
+> knots(Fn12) # unique values (always less than 12!)
+[1] -2.2 -2.0 -0.6  0.0  0.1  0.6  0.8  0.9
+> summary(Fn12)
+Empirical CDF:	  8 unique values with summary
+   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
+  -2.20   -0.95    0.05   -0.30    0.65    0.90 
+> summary.stepfun(Fn12)
+Step function with continuity 'f'= 0 ,  8 knots with summary
+   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
+  -2.20   -0.95    0.05   -0.30    0.65    0.90 
+
+and	9 plateau levels (y) with summary
+   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
+ 0.0000  0.1667  0.5000  0.4630  0.6667  1.0000 
+> 
+> ## Advanced: What's inside the function closure?
+> ls(environment(Fn12))
+[1] "f"      "method" "na.rm"  "nobs"   "x"      "y"      "yleft"  "yright"
+> ## "f"     "method" "na.rm"  "nobs"   "x"     "y"    "yleft"  "yright"
+> utils::ls.str(environment(Fn12))
+f :  num 0
+method :  int 2
+na.rm :  logi TRUE
+nobs :  int 12
+x :  num [1:8] -2.2 -2 -0.6 0 0.1 0.6 0.8 0.9
+y :  num [1:8] 0.0833 0.1667 0.3333 0.5 0.5833 ...
+yleft :  num 0
+yright :  num 1
+> stopifnot(all.equal(quantile(Fn12), quantile(y)))
+> 
+> ###----------------- Plotting --------------------------
+> require(graphics)
+> 
+> op <- par(mfrow = c(3, 1), mgp = c(1.5, 0.8, 0), mar =  .1+c(3,3,2,1))
+> 
+> F10 <- ecdf(rnorm(10))
+> summary(F10)
+Empirical CDF:	  10 unique values with summary
+    Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
+-1.47075 -0.14254 -0.05497  0.04667  0.41037  1.35868 
+> 
+> plot(F10)
+> plot(F10, verticals = TRUE, do.points = FALSE)
+> 
+> plot(Fn12 , lwd = 2) ; mtext("lwd = 2", adj = 1)
+> xx <- unique(sort(c(seq(-3, 2, length.out = 201), knots(Fn12))))
+> lines(xx, Fn12(xx), col = "blue")
+> abline(v = knots(Fn12), lty = 2, col = "gray70")
+> 
+> plot(xx, Fn12(xx), type = "o", cex = .1)  #- plot.default {ugly}
+> plot(Fn12, col.hor = "red", add =  TRUE)  #- plot method
+> abline(v = knots(Fn12), lty = 2, col = "gray70")
+> ## luxury plot
+> plot(Fn12, verticals = TRUE, col.points = "blue",
++      col.hor = "red", col.vert = "bisque")
+> 
+> ##-- this works too (automatic call to  ecdf(.)):
+> plot.ecdf(rnorm(24))
+> title("via  simple  plot.ecdf(x)", adj = 1)
+> 
+> par(op)
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("eff.aovlist")
+> ### * eff.aovlist
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: eff.aovlist
+> ### Title: Compute Efficiencies of Multistratum Analysis of Variance
+> ### Aliases: eff.aovlist
+> ### Keywords: models
+> 
+> ### ** Examples
+> 
+> ## An example from Yates (1932),
+> ## a 2^3 design in 2 blocks replicated 4 times
+> 
+> Block <- gl(8, 4)
+> A <- factor(c(0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,
++               0,1,0,1,0,1,0,1,0,1,0,1))
+> B <- factor(c(0,0,1,1,0,0,1,1,0,1,0,1,1,0,1,0,0,0,1,1,
++               0,0,1,1,0,0,1,1,0,0,1,1))
+> C <- factor(c(0,1,1,0,1,0,0,1,0,0,1,1,0,0,1,1,0,1,0,1,
++               1,0,1,0,0,0,1,1,1,1,0,0))
+> Yield <- c(101, 373, 398, 291, 312, 106, 265, 450, 106, 306, 324, 449,
++            272, 89, 407, 338, 87, 324, 279, 471, 323, 128, 423, 334,
++            131, 103, 445, 437, 324, 361, 302, 272)
+> aovdat <- data.frame(Block, A, B, C, Yield)
+> 
+> old <- getOption("contrasts")
+> options(contrasts = c("contr.helmert", "contr.poly"))
+> ## IGNORE_RDIFF_BEGIN
+> (fit <- aov(Yield ~ A*B*C + Error(Block), data = aovdat))
+
+Call:
+aov(formula = Yield ~ A * B * C + Error(Block), data = aovdat)
+
+Grand Mean: 291.5938
+
+Stratum 1: Block
+
+Terms:
+                      A:B       A:C       B:C     A:B:C Residuals
+Sum of Squares   780.1250  276.1250 2556.1250  112.5000  774.0938
+Deg. of Freedom         1         1         1         1         3
+
+Residual standard error: 16.06335
+Estimated effects are balanced
+
+Stratum 2: Within
+
+Terms:
+                        A         B         C       A:B       A:C       B:C
+Sum of Squares    3465.28 161170.03 278817.78     28.17   1802.67  11528.17
+Deg. of Freedom         1         1         1         1         1         1
+                    A:B:C Residuals
+Sum of Squares      45.37   5423.28
+Deg. of Freedom         1        17
+
+Residual standard error: 17.86103
+Estimated effects are balanced
+> ## IGNORE_RDIFF_END
+> eff.aovlist(fit)
+       A B C  A:B  A:C  B:C A:B:C
+Block  0 0 0 0.25 0.25 0.25  0.25
+Within 1 1 1 0.75 0.75 0.75  0.75
+> options(contrasts = old)
+> 
+> 
+> 
+> base::options(contrasts = c(unordered = "contr.treatment",ordered = "contr.poly"))
+> cleanEx()
+> nameEx("effects")
+> ### * effects
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: effects
+> ### Title: Effects from Fitted Model
+> ### Aliases: effects effects.lm effects.glm
+> ### Keywords: models regression
+> 
+> ### ** Examples
+> 
+> y <- c(1:3, 7, 5)
+> x <- c(1:3, 6:7)
+> ( ee <- effects(lm(y ~ x)) )
+(Intercept)           x                                     
+ -8.0498447   4.3655709   0.1483334   1.6144112  -1.2302295 
+attr(,"assign")
+[1] 0 1
+attr(,"class")
+[1] "coef"
+> c( round(ee - effects(lm(y+10 ~ I(x-3.8))), 3) )
+(Intercept)           x                                     
+     22.361       0.000       0.000       0.000       0.000 
+> # just the first is different
+> 
+> 
+> 
+> cleanEx()
+> nameEx("embed")
+> ### * embed
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: embed
+> ### Title: Embedding a Time Series
+> ### Aliases: embed
+> ### Keywords: ts
+> 
+> ### ** Examples
+> 
+> x <- 1:10
+> embed (x, 3)
+     [,1] [,2] [,3]
+[1,]    3    2    1
+[2,]    4    3    2
+[3,]    5    4    3
+[4,]    6    5    4
+[5,]    7    6    5
+[6,]    8    7    6
+[7,]    9    8    7
+[8,]   10    9    8
+> 
+> 
+> 
+> cleanEx()
+> nameEx("expand.model.frame")
+> ### * expand.model.frame
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: expand.model.frame
+> ### Title: Add new variables to a model frame
+> ### Aliases: expand.model.frame
+> ### Keywords: manip regression
+> 
+> ### ** Examples
+> 
+> model <- lm(log(Volume) ~ log(Girth) + log(Height), data = trees)
+> expand.model.frame(model, ~ Girth) # prints data.frame like
+   log(Volume) log(Girth) log(Height) Girth
+1     2.332144   2.116256    4.248495   8.3
+2     2.332144   2.151762    4.174387   8.6
+3     2.322388   2.174752    4.143135   8.8
+4     2.797281   2.351375    4.276666  10.5
+5     2.933857   2.370244    4.394449  10.7
+6     2.980619   2.379546    4.418841  10.8
+7     2.747271   2.397895    4.189655  11.0
+8     2.901422   2.397895    4.317488  11.0
+9     3.117950   2.406945    4.382027  11.1
+10    2.990720   2.415914    4.317488  11.2
+11    3.186353   2.424803    4.369448  11.3
+12    3.044522   2.433613    4.330733  11.4
+13    3.063391   2.433613    4.330733  11.4
+14    3.058707   2.459589    4.234107  11.7
+15    2.949688   2.484907    4.317488  12.0
+16    3.100092   2.557227    4.304065  12.9
+17    3.520461   2.557227    4.442651  12.9
+18    3.310543   2.587764    4.454347  13.3
+19    3.246491   2.617396    4.262680  13.7
+20    3.214868   2.624669    4.158883  13.8
+21    3.540959   2.639057    4.356709  14.0
+22    3.456317   2.653242    4.382027  14.2
+23    3.591818   2.674149    4.304065  14.5
+24    3.645450   2.772589    4.276666  16.0
+25    3.751854   2.791165    4.343805  16.3
+26    4.014580   2.850707    4.394449  17.3
+27    4.019980   2.862201    4.406719  17.5
+28    4.065602   2.884801    4.382027  17.9
+29    3.941582   2.890372    4.382027  18.0
+30    3.931826   2.890372    4.382027  18.0
+31    4.343805   3.025291    4.465908  20.6
+> 
+> dd <- data.frame(x = 1:5, y = rnorm(5), z = c(1,2,NA,4,5))
+> model <- glm(y ~ x, data = dd, subset = 1:4, na.action = na.omit)
+> expand.model.frame(model, "z", na.expand = FALSE) # = default
+           y x z
+1 -0.6264538 1 1
+2  0.1836433 2 2
+4  1.5952808 4 4
+> expand.model.frame(model, "z", na.expand = TRUE)
+           y x  z
+1 -0.6264538 1  1
+2  0.1836433 2  2
+3 -0.8356286 3 NA
+4  1.5952808 4  4
+> 
+> 
+> 
+> cleanEx()
+> nameEx("extractAIC")
+> ### * extractAIC
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: extractAIC
+> ### Title: Extract AIC from a Fitted Model
+> ### Aliases: extractAIC
+> ### Keywords: models
+> 
+> ### ** Examples
+> 
+> 
+> cleanEx()
+> nameEx("factanal")
+> ### * factanal
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: factanal
+> ### Title: Factor Analysis
+> ### Aliases: factanal
+> ### Keywords: multivariate
+> 
+> ### ** Examples
+> 
+> # A little demonstration, v2 is just v1 with noise,
+> # and same for v4 vs. v3 and v6 vs. v5
+> # Last four cases are there to add noise
+> # and introduce a positive manifold (g factor)
+> v1 <- c(1,1,1,1,1,1,1,1,1,1,3,3,3,3,3,4,5,6)
+> v2 <- c(1,2,1,1,1,1,2,1,2,1,3,4,3,3,3,4,6,5)
+> v3 <- c(3,3,3,3,3,1,1,1,1,1,1,1,1,1,1,5,4,6)
+> v4 <- c(3,3,4,3,3,1,1,2,1,1,1,1,2,1,1,5,6,4)
+> v5 <- c(1,1,1,1,1,3,3,3,3,3,1,1,1,1,1,6,4,5)
+> v6 <- c(1,1,1,2,1,3,3,3,4,3,1,1,1,2,1,6,5,4)
+> m1 <- cbind(v1,v2,v3,v4,v5,v6)
+> cor(m1)
+          v1        v2        v3        v4        v5        v6
+v1 1.0000000 0.9393083 0.5128866 0.4320310 0.4664948 0.4086076
+v2 0.9393083 1.0000000 0.4124441 0.4084281 0.4363925 0.4326113
+v3 0.5128866 0.4124441 1.0000000 0.8770750 0.5128866 0.4320310
+v4 0.4320310 0.4084281 0.8770750 1.0000000 0.4320310 0.4323259
+v5 0.4664948 0.4363925 0.5128866 0.4320310 1.0000000 0.9473451
+v6 0.4086076 0.4326113 0.4320310 0.4323259 0.9473451 1.0000000
+> factanal(m1, factors = 3) # varimax is the default
+
+Call:
+factanal(x = m1, factors = 3)
+
+Uniquenesses:
+   v1    v2    v3    v4    v5    v6 
+0.005 0.101 0.005 0.224 0.084 0.005 
+
+Loadings:
+   Factor1 Factor2 Factor3
+v1 0.944   0.182   0.267  
+v2 0.905   0.235   0.159  
+v3 0.236   0.210   0.946  
+v4 0.180   0.242   0.828  
+v5 0.242   0.881   0.286  
+v6 0.193   0.959   0.196  
+
+               Factor1 Factor2 Factor3
+SS loadings      1.893   1.886   1.797
+Proportion Var   0.316   0.314   0.300
+Cumulative Var   0.316   0.630   0.929
+
+The degrees of freedom for the model is 0 and the fit was 0.4755 
+> # The following shows the g factor as PC1
+> 
+> ## formula interface
+> factanal(~v1+v2+v3+v4+v5+v6, factors = 3,
++          scores = "Bartlett")$scores
+      Factor1    Factor2    Factor3
+1  -0.9039949 -0.9308984  0.9475392
+2  -0.8685952 -0.9328721  0.9352330
+3  -0.9082818 -0.9320093  0.9616422
+4  -1.0021975 -0.2529689  0.8178552
+5  -0.9039949 -0.9308984  0.9475392
+6  -0.7452711  0.7273960 -0.7884733
+7  -0.7098714  0.7254223 -0.8007795
+8  -0.7495580  0.7262851 -0.7743704
+9  -0.8080740  1.4033517 -0.9304636
+10 -0.7452711  0.7273960 -0.7884733
+11  0.9272282 -0.9307506 -0.8371538
+12  0.9626279 -0.9327243 -0.8494600
+13  0.9229413 -0.9318615 -0.8230509
+14  0.8290256 -0.2528211 -0.9668378
+15  0.9272282 -0.9307506 -0.8371538
+16  0.4224366  2.0453079  1.2864761
+17  1.4713902  1.2947716  0.5451562
+18  1.8822320  0.3086244  1.9547752
+> 
+> 
+> 
+> cleanEx()
+> nameEx("factor.scope")
+> ### * factor.scope
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: factor.scope
+> ### Title: Compute Allowed Changes in Adding to or Dropping from a Formula
+> ### Aliases: add.scope drop.scope factor.scope
+> ### Keywords: models
+> 
+> ### ** Examples
+> 
+> add.scope( ~ a + b + c + a:b,  ~ (a + b + c)^3)
+[1] "a:c" "b:c"
+> # [1] "a:c" "b:c"
+> drop.scope( ~ a + b + c + a:b)
+[1] "c"   "a:b"
+> # [1] "c"   "a:b"
+> 
+> 
+> 
+> cleanEx()
+> nameEx("family")
+> ### * family
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: family
+> ### Title: Family Objects for Models
+> ### Aliases: family binomial gaussian Gamma inverse.gaussian poisson quasi
+> ###   quasibinomial quasipoisson
+> ### Keywords: models
+> 
+> ### ** Examples
+> 
+> require(utils) # for str
+> 
+> nf <- gaussian()  # Normal family
+> nf
+
+Family: gaussian 
+Link function: identity 
+
+> str(nf)
+List of 11
+ $ family    : chr "gaussian"
+ $ link      : chr "identity"
+ $ linkfun   :function (mu)  
+ $ linkinv   :function (eta)  
+ $ variance  :function (mu)  
+ $ dev.resids:function (y, mu, wt)  
+ $ aic       :function (y, n, mu, wt, dev)  
+ $ mu.eta    :function (eta)  
+ $ initialize:  expression({  n <- rep.int(1, nobs)  if (is.null(etastart) && is.null(start) && is.null(mustart) && ((family$link| __truncated__
+ $ validmu   :function (mu)  
+ $ valideta  :function (eta)  
+ - attr(*, "class")= chr "family"
+> 
+> gf <- Gamma()
+> gf
+
+Family: Gamma 
+Link function: inverse 
+
+> str(gf)
+List of 12
+ $ family    : chr "Gamma"
+ $ link      : chr "inverse"
+ $ linkfun   :function (mu)  
+ $ linkinv   :function (eta)  
+ $ variance  :function (mu)  
+ $ dev.resids:function (y, mu, wt)  
+ $ aic       :function (y, n, mu, wt, dev)  
+ $ mu.eta    :function (eta)  
+ $ initialize:  expression({  if (any(y <= 0))  stop("non-positive values not allowed for the 'Gamma' family")  n <- rep.int(1, n| __truncated__
+ $ validmu   :function (mu)  
+ $ valideta  :function (eta)  
+ $ simulate  :function (object, nsim)  
+ - attr(*, "class")= chr "family"
+> gf$linkinv
+function (eta) 
+1/eta
+<environment: namespace:stats>
+> gf$variance(-3:4) #- == (.)^2
+[1]  9  4  1  0  1  4  9 16
+> 
+> ## Binomial with default 'logit' link:  Check some properties visually:
+> bi <- binomial()
+> et <- seq(-10,10, by=1/8)
+> plot(et, bi$mu.eta(et), type="l")
+> ## show that mu.eta() is derivative of linkinv() :
+> lines((et[-1]+et[-length(et)])/2, col=adjustcolor("red", 1/4),
++       diff(bi$linkinv(et))/diff(et), type="l", lwd=4)
+> ## which here is the logistic density:
+> lines(et, dlogis(et), lwd=3, col=adjustcolor("blue", 1/4))
+> stopifnot(exprs = {
++   all.equal(bi$ mu.eta(et), dlogis(et))
++   all.equal(bi$linkinv(et), plogis(et) -> m)
++   all.equal(bi$linkfun(m ), qlogis(m))    #  logit(.) == qlogis(.) !
++ })
+> 
+> ## Data from example(glm) :
+> d.AD <- data.frame(treatment = gl(3,3),
++                    outcome   = gl(3,1,9),
++                    counts    = c(18,17,15, 20,10,20, 25,13,12))
+> glm.D93 <- glm(counts ~ outcome + treatment, d.AD, family = poisson())
+> ## Quasipoisson: compare with above / example(glm) :
+> glm.qD93 <- glm(counts ~ outcome + treatment, d.AD, family = quasipoisson())
+> 
+> 
+> ## Example of user-specified link, a logit model for p^days
+> ## See Shaffer, T.  2004. Auk 121(2): 526-540.
+> logexp <- function(days = 1)
++ {
++     linkfun <- function(mu) qlogis(mu^(1/days))
++     linkinv <- function(eta) plogis(eta)^days
++     mu.eta  <- function(eta) days * plogis(eta)^(days-1) *
++                   binomial()$mu.eta(eta)
++     valideta <- function(eta) TRUE
++     link <- paste0("logexp(", days, ")")
++     structure(list(linkfun = linkfun, linkinv = linkinv,
++                    mu.eta = mu.eta, valideta = valideta, name = link),
++               class = "link-glm")
++ }
+> (bil3 <- binomial(logexp(3)))
+
+Family: binomial 
+Link function: logexp(3) 
+
+> ## Don't show: 
+> stopifnot(length(bil3$mu.eta(as.double(0:5))) == 6)
+> ## End(Don't show)
+> ## in practice this would be used with a vector of 'days', in
+> ## which case use an offset of 0 in the corresponding formula
+> ## to get the null deviance right.
+> 
+> ## Binomial with identity link: often not a good idea, as both
+> ## computationally and conceptually difficult:
+> binomial(link = "identity")  ## is exactly the same as
+
+Family: binomial 
+Link function: identity 
+
+> binomial(link = make.link("identity"))
+
+Family: binomial 
+Link function: identity 
+
+> 
+> 
+> 
+> ## tests of quasi
+> x <- rnorm(100)
+> y <- rpois(100, exp(1+x))
+> glm(y ~ x, family = quasi(variance = "mu", link = "log"))
+
+Call:  glm(formula = y ~ x, family = quasi(variance = "mu", link = "log"))
+
+Coefficients:
+(Intercept)            x  
+     0.8596       1.0875  
+
+Degrees of Freedom: 99 Total (i.e. Null);  98 Residual
+Null Deviance:	    481.9 
+Residual Deviance: 101.7 	AIC: NA
+> # which is the same as
+> glm(y ~ x, family = poisson)
+
+Call:  glm(formula = y ~ x, family = poisson)
+
+Coefficients:
+(Intercept)            x  
+     0.8596       1.0875  
+
+Degrees of Freedom: 99 Total (i.e. Null);  98 Residual
+Null Deviance:	    481.9 
+Residual Deviance: 101.7 	AIC: 364
+> glm(y ~ x, family = quasi(variance = "mu^2", link = "log"))
+
+Call:  glm(formula = y ~ x, family = quasi(variance = "mu^2", link = "log"))
+
+Coefficients:
+(Intercept)            x  
+     0.6902       1.4546  
+
+Degrees of Freedom: 99 Total (i.e. Null);  98 Residual
+Null Deviance:	    83.85 
+Residual Deviance: 32.45 	AIC: NA
+> ## Not run: glm(y ~ x, family = quasi(variance = "mu^3", link = "log")) # fails
+> y <- rbinom(100, 1, plogis(x))
+> # need to set a starting value for the next fit
+> glm(y ~ x, family = quasi(variance = "mu(1-mu)", link = "logit"), start = c(0,1))
+
+Call:  glm(formula = y ~ x, family = quasi(variance = "mu(1-mu)", link = "logit"), 
+    start = c(0, 1))
+
+Coefficients:
+(Intercept)            x  
+   -0.08334      0.38518  
+
+Degrees of Freedom: 99 Total (i.e. Null);  98 Residual
+Null Deviance:	    138.6 
+Residual Deviance: 135.8 	AIC: NA
+> 
+> 
+> 
+> cleanEx()
+> nameEx("fft")
+> ### * fft
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: fft
+> ### Title: Fast Discrete Fourier Transform (FFT)
+> ### Aliases: fft mvfft
+> ### Keywords: math dplot
+> 
+> ### ** Examples
+> 
+> x <- 1:4
+> fft(x)
+[1] 10+0i -2+2i -2+0i -2-2i
+> fft(fft(x), inverse = TRUE)/length(x)
+[1] 1+0i 2+0i 3+0i 4+0i
+> 
+> ## Slow Discrete Fourier Transform (DFT) - e.g., for checking the formula
+> fft0 <- function(z, inverse=FALSE) {
++   n <- length(z)
++   if(n == 0) return(z)
++   k <- 0:(n-1)
++   ff <- (if(inverse) 1 else -1) * 2*pi * 1i * k/n
++   vapply(1:n, function(h) sum(z * exp(ff*(h-1))), complex(1))
++ }
+> 
+> relD <- function(x,y) 2* abs(x - y) / abs(x + y)
+> n <- 2^8
+> z <- complex(n, rnorm(n), rnorm(n))
+> 
+> 
+> cleanEx()
+> nameEx("filter")
+> ### * filter
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: filter
+> ### Title: Linear Filtering on a Time Series
+> ### Aliases: filter
+> ### Keywords: ts
+> 
+> ### ** Examples
+> 
+> x <- 1:100
+> filter(x, rep(1, 3))
+Time Series:
+Start = 1 
+End = 100 
+Frequency = 1 
+  [1]  NA   6   9  12  15  18  21  24  27  30  33  36  39  42  45  48  51  54
+ [19]  57  60  63  66  69  72  75  78  81  84  87  90  93  96  99 102 105 108
+ [37] 111 114 117 120 123 126 129 132 135 138 141 144 147 150 153 156 159 162
+ [55] 165 168 171 174 177 180 183 186 189 192 195 198 201 204 207 210 213 216
+ [73] 219 222 225 228 231 234 237 240 243 246 249 252 255 258 261 264 267 270
+ [91] 273 276 279 282 285 288 291 294 297  NA
+> filter(x, rep(1, 3), sides = 1)
+Time Series:
+Start = 1 
+End = 100 
+Frequency = 1 
+  [1]  NA  NA   6   9  12  15  18  21  24  27  30  33  36  39  42  45  48  51
+ [19]  54  57  60  63  66  69  72  75  78  81  84  87  90  93  96  99 102 105
+ [37] 108 111 114 117 120 123 126 129 132 135 138 141 144 147 150 153 156 159
+ [55] 162 165 168 171 174 177 180 183 186 189 192 195 198 201 204 207 210 213
+ [73] 216 219 222 225 228 231 234 237 240 243 246 249 252 255 258 261 264 267
+ [91] 270 273 276 279 282 285 288 291 294 297
+> filter(x, rep(1, 3), sides = 1, circular = TRUE)
+Time Series:
+Start = 1 
+End = 100 
+Frequency = 1 
+  [1] 200 103   6   9  12  15  18  21  24  27  30  33  36  39  42  45  48  51
+ [19]  54  57  60  63  66  69  72  75  78  81  84  87  90  93  96  99 102 105
+ [37] 108 111 114 117 120 123 126 129 132 135 138 141 144 147 150 153 156 159
+ [55] 162 165 168 171 174 177 180 183 186 189 192 195 198 201 204 207 210 213
+ [73] 216 219 222 225 228 231 234 237 240 243 246 249 252 255 258 261 264 267
+ [91] 270 273 276 279 282 285 288 291 294 297
+> 
+> filter(presidents, rep(1, 3))
+     Qtr1 Qtr2 Qtr3 Qtr4
+1945   NA   NA  244  220
+1946  188  156  125  110
+1947  127  149  169  145
+1948  130   NA   NA   NA
+1949   NA  183  165  153
+1950  133  128  122  121
+1951   99   92   79   80
+1952   80   NA   NA   NA
+1953  165  208  209  206
+1954  192  203  189  199
+1955  196  218  220  228
+1956  220  214  213  221
+1957  216  204  182  180
+1958  166  157  149  157
+1959  171  180  189  198
+1960  199  194  180  190
+1961  212  226  232  228
+1962  228  212  207  212
+1963  214  202  183  199
+1964  210  222  211  209
+1965  204  204  195  194
+1966  171  165  146  144
+1967  140  134  136  120
+1968  131  120  128  138
+1969  168  189  186  187
+1970  175  180  166  164
+1971  151  153  151  152
+1972  159   NA   NA   NA
+1973   NA  152  111   95
+1974   80   77   73   NA
+> 
+> 
+> 
+> cleanEx()
+> nameEx("fisher.test")
+> ### * fisher.test
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: fisher.test
+> ### Title: Fisher's Exact Test for Count Data
+> ### Aliases: fisher.test
+> ### Keywords: htest
+> 
+> ### ** Examples
+> 
+> ## Agresti (1990, p. 61f; 2002, p. 91) Fisher's Tea Drinker
+> ## A British woman claimed to be able to distinguish whether milk or
+> ##  tea was added to the cup first.  To test, she was given 8 cups of
+> ##  tea, in four of which milk was added first.  The null hypothesis
+> ##  is that there is no association between the true order of pouring
+> ##  and the woman's guess, the alternative that there is a positive
+> ##  association (that the odds ratio is greater than 1).
+> TeaTasting <-
++ matrix(c(3, 1, 1, 3),
++        nrow = 2,
++        dimnames = list(Guess = c("Milk", "Tea"),
++                        Truth = c("Milk", "Tea")))
+> fisher.test(TeaTasting, alternative = "greater")
+
+	Fisher's Exact Test for Count Data
+
+data:  TeaTasting
+p-value = 0.2429
+alternative hypothesis: true odds ratio is greater than 1
+95 percent confidence interval:
+ 0.3135693       Inf
+sample estimates:
+odds ratio 
+  6.408309 
+
+> ## => p = 0.2429, association could not be established
+> 
+> ## Fisher (1962, 1970), Criminal convictions of like-sex twins
+> Convictions <- matrix(c(2, 10, 15, 3), nrow = 2,
++ 	              dimnames =
++ 	       list(c("Dizygotic", "Monozygotic"),
++ 		    c("Convicted", "Not convicted")))
+> Convictions
+            Convicted Not convicted
+Dizygotic           2            15
+Monozygotic        10             3
+> fisher.test(Convictions, alternative = "less")
+
+	Fisher's Exact Test for Count Data
+
+data:  Convictions
+p-value = 0.0004652
+alternative hypothesis: true odds ratio is less than 1
+95 percent confidence interval:
+ 0.0000000 0.2849601
+sample estimates:
+odds ratio 
+0.04693661 
+
+> fisher.test(Convictions, conf.int = FALSE)
+
+	Fisher's Exact Test for Count Data
+
+data:  Convictions
+p-value = 0.0005367
+alternative hypothesis: true odds ratio is not equal to 1
+sample estimates:
+odds ratio 
+0.04693661 
+
+> fisher.test(Convictions, conf.level = 0.95)$conf.int
+[1] 0.003325764 0.363182271
+attr(,"conf.level")
+[1] 0.95
+> fisher.test(Convictions, conf.level = 0.99)$conf.int
+[1] 0.001386333 0.578851645
+attr(,"conf.level")
+[1] 0.99
+> 
+> ## A r x c table  Agresti (2002, p. 57) Job Satisfaction
+> Job <- matrix(c(1,2,1,0, 3,3,6,1, 10,10,14,9, 6,7,12,11), 4, 4,
++            dimnames = list(income = c("< 15k", "15-25k", "25-40k", "> 40k"),
++                      satisfaction = c("VeryD", "LittleD", "ModerateS", "VeryS")))
+> fisher.test(Job) # 0.7827
+
+	Fisher's Exact Test for Count Data
+
+data:  Job
+p-value = 0.7827
+alternative hypothesis: two.sided
+
+> fisher.test(Job, simulate.p.value = TRUE, B = 1e5) # also close to 0.78
+
+	Fisher's Exact Test for Count Data with simulated p-value (based on
+	1e+05 replicates)
+
+data:  Job
+p-value = 0.7842
+alternative hypothesis: two.sided
+
+> 
+> ## 6th example in Mehta & Patel's JASA paper
+> MP6 <- rbind(
++         c(1,2,2,1,1,0,1),
++         c(2,0,0,2,3,0,0),
++         c(0,1,1,1,2,7,3),
++         c(1,1,2,0,0,0,1),
++         c(0,1,1,1,1,0,0))
+> fisher.test(MP6)
+
+	Fisher's Exact Test for Count Data
+
+data:  MP6
+p-value = 0.03929
+alternative hypothesis: two.sided
+
+> # Exactly the same p-value, as Cochran's conditions are never met:
+> fisher.test(MP6, hybrid=TRUE)
+
+	Fisher's Exact Test for Count Data hybrid using asym.chisq. iff (exp=5,
+	perc=80, Emin=1)
+
+data:  MP6
+p-value = 0.03929
+alternative hypothesis: two.sided
+
+> 
+> 
+> 
+> cleanEx()
+> nameEx("fivenum")
+> ### * fivenum
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: fivenum
+> ### Title: Tukey Five-Number Summaries
+> ### Aliases: fivenum
+> ### Keywords: univar robust distribution
+> 
+> ### ** Examples
+> 
+> fivenum(c(rnorm(100), -1:1/0))
+[1]       -Inf -0.5425200  0.1139092  0.6969634        Inf
+> 
+> 
+> 
+> cleanEx()
+> nameEx("fligner.test")
+> ### * fligner.test
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: fligner.test
+> ### Title: Fligner-Killeen Test of Homogeneity of Variances
+> ### Aliases: fligner.test fligner.test.default fligner.test.formula
+> ### Keywords: htest
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> plot(count ~ spray, data = InsectSprays)
+> fligner.test(InsectSprays$count, InsectSprays$spray)
+
+	Fligner-Killeen test of homogeneity of variances
+
+data:  InsectSprays$count and InsectSprays$spray
+Fligner-Killeen:med chi-squared = 14.483, df = 5, p-value = 0.01282
+
+> fligner.test(count ~ spray, data = InsectSprays)
+
+	Fligner-Killeen test of homogeneity of variances
+
+data:  count by spray
+Fligner-Killeen:med chi-squared = 14.483, df = 5, p-value = 0.01282
+
+> ## Compare this to bartlett.test()
+> 
+> 
+> 
+> cleanEx()
+> nameEx("formula")
+> ### * formula
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: formula
+> ### Title: Model Formulae
+> ### Aliases: formula formula.default formula.formula formula.terms
+> ###   formula.data.frame DF2formula as.formula print.formula [.formula
+> ### Keywords: models
+> 
+> ### ** Examples
+> 
+> class(fo <- y ~ x1*x2) # "formula"
+[1] "formula"
+> fo
+y ~ x1 * x2
+> typeof(fo)  # R internal : "language"
+[1] "language"
+> terms(fo)
+y ~ x1 * x2
+attr(,"variables")
+list(y, x1, x2)
+attr(,"factors")
+   x1 x2 x1:x2
+y   0  0     0
+x1  1  0     1
+x2  0  1     1
+attr(,"term.labels")
+[1] "x1"    "x2"    "x1:x2"
+attr(,"order")
+[1] 1 1 2
+attr(,"intercept")
+[1] 1
+attr(,"response")
+[1] 1
+attr(,".Environment")
+<environment: R_GlobalEnv>
+> 
+> environment(fo)
+<environment: R_GlobalEnv>
+> environment(as.formula("y ~ x"))
+<environment: R_GlobalEnv>
+> environment(as.formula("y ~ x", env = new.env()))
+<environment: 0x65be7c0>
+> 
+> 
+> ## Create a formula for a model with a large number of variables:
+> xnam <- paste0("x", 1:25)
+> (fmla <- as.formula(paste("y ~ ", paste(xnam, collapse= "+"))))
+y ~ x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9 + x10 + x11 + 
+    x12 + x13 + x14 + x15 + x16 + x17 + x18 + x19 + x20 + x21 + 
+    x22 + x23 + x24 + x25
+> ## Equivalent with reformulate():
+> fmla2 <- reformulate(xnam, response = "y")
+> stopifnot(identical(fmla, fmla2))
+> 
+> 
+> 
+> cleanEx()
+> nameEx("formula.nls")
+> ### * formula.nls
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: formula.nls
+> ### Title: Extract Model Formula from nls Object
+> ### Aliases: formula.nls
+> ### Keywords: models
+> 
+> ### ** Examples
+> 
+> fm1 <- nls(circumference ~ A/(1+exp((B-age)/C)), Orange,
++            start = list(A = 160, B = 700, C = 350))
+> formula(fm1)
+circumference ~ A/(1 + exp((B - age)/C))
+> 
+> 
+> 
+> cleanEx()
+> nameEx("friedman.test")
+> ### * friedman.test
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: friedman.test
+> ### Title: Friedman Rank Sum Test
+> ### Aliases: friedman.test friedman.test.default friedman.test.formula
+> ### Keywords: htest
+> 
+> ### ** Examples
+> 
+> ## Hollander & Wolfe (1973), p. 140ff.
+> ## Comparison of three methods ("round out", "narrow angle", and
+> ##  "wide angle") for rounding first base.  For each of 18 players
+> ##  and the three method, the average time of two runs from a point on
+> ##  the first base line 35ft from home plate to a point 15ft short of
+> ##  second base is recorded.
+> RoundingTimes <-
++ matrix(c(5.40, 5.50, 5.55,
++          5.85, 5.70, 5.75,
++          5.20, 5.60, 5.50,
++          5.55, 5.50, 5.40,
++          5.90, 5.85, 5.70,
++          5.45, 5.55, 5.60,
++          5.40, 5.40, 5.35,
++          5.45, 5.50, 5.35,
++          5.25, 5.15, 5.00,
++          5.85, 5.80, 5.70,
++          5.25, 5.20, 5.10,
++          5.65, 5.55, 5.45,
++          5.60, 5.35, 5.45,
++          5.05, 5.00, 4.95,
++          5.50, 5.50, 5.40,
++          5.45, 5.55, 5.50,
++          5.55, 5.55, 5.35,
++          5.45, 5.50, 5.55,
++          5.50, 5.45, 5.25,
++          5.65, 5.60, 5.40,
++          5.70, 5.65, 5.55,
++          6.30, 6.30, 6.25),
++        nrow = 22,
++        byrow = TRUE,
++        dimnames = list(1 : 22,
++                        c("Round Out", "Narrow Angle", "Wide Angle")))
+> friedman.test(RoundingTimes)
+
+	Friedman rank sum test
+
+data:  RoundingTimes
+Friedman chi-squared = 11.143, df = 2, p-value = 0.003805
+
+> ## => strong evidence against the null that the methods are equivalent
+> ##    with respect to speed
+> 
+> wb <- aggregate(warpbreaks$breaks,
++                 by = list(w = warpbreaks$wool,
++                           t = warpbreaks$tension),
++                 FUN = mean)
+> wb
+  w t        x
+1 A L 44.55556
+2 B L 28.22222
+3 A M 24.00000
+4 B M 28.77778
+5 A H 24.55556
+6 B H 18.77778
+> friedman.test(wb$x, wb$w, wb$t)
+
+	Friedman rank sum test
+
+data:  wb$x, wb$w and wb$t
+Friedman chi-squared = 0.33333, df = 1, p-value = 0.5637
+
+> friedman.test(x ~ w | t, data = wb)
+
+	Friedman rank sum test
+
+data:  x and w and t
+Friedman chi-squared = 0.33333, df = 1, p-value = 0.5637
+
+> 
+> 
+> 
+> cleanEx()
+> nameEx("ftable")
+> ### * ftable
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: ftable
+> ### Title: Flat Contingency Tables
+> ### Aliases: ftable ftable.default
+> ### Keywords: category
+> 
+> ### ** Examples
+> 
+> ## Start with a contingency table.
+> ftable(Titanic, row.vars = 1:3)
+                   Survived  No Yes
+Class Sex    Age                   
+1st   Male   Child            0   5
+             Adult          118  57
+      Female Child            0   1
+             Adult            4 140
+2nd   Male   Child            0  11
+             Adult          154  14
+      Female Child            0  13
+             Adult           13  80
+3rd   Male   Child           35  13
+             Adult          387  75
+      Female Child           17  14
+             Adult           89  76
+Crew  Male   Child            0   0
+             Adult          670 192
+      Female Child            0   0
+             Adult            3  20
+> ftable(Titanic, row.vars = 1:2, col.vars = "Survived")
+             Survived  No Yes
+Class Sex                    
+1st   Male            118  62
+      Female            4 141
+2nd   Male            154  25
+      Female           13  93
+3rd   Male            422  88
+      Female          106  90
+Crew  Male            670 192
+      Female            3  20
+> ftable(Titanic, row.vars = 2:1, col.vars = "Survived")
+             Survived  No Yes
+Sex    Class                 
+Male   1st            118  62
+       2nd            154  25
+       3rd            422  88
+       Crew           670 192
+Female 1st              4 141
+       2nd             13  93
+       3rd            106  90
+       Crew             3  20
+> ## Don't show: 
+> . <- integer()
+> (f04 <- ftable(Titanic, col.vars= .))
+Class Sex    Age   Survived     
+1st   Male   Child No          0
+                   Yes         5
+             Adult No        118
+                   Yes        57
+      Female Child No          0
+                   Yes         1
+             Adult No          4
+                   Yes       140
+2nd   Male   Child No          0
+                   Yes        11
+             Adult No        154
+                   Yes        14
+      Female Child No          0
+                   Yes        13
+             Adult No         13
+                   Yes        80
+3rd   Male   Child No         35
+                   Yes        13
+             Adult No        387
+                   Yes        75
+      Female Child No         17
+                   Yes        14
+             Adult No         89
+                   Yes        76
+Crew  Male   Child No          0
+                   Yes         0
+             Adult No        670
+                   Yes       192
+      Female Child No          0
+                   Yes         0
+             Adult No          3
+                   Yes        20
+> (f10 <- ftable(Titanic, col.vars= 1, row.vars= .))
+Class 1st 2nd 3rd Crew
+                      
+      325 285 706  885
+> (f01 <- ftable(Titanic, col.vars= ., row.vars= 1))
+Class     
+1st    325
+2nd    285
+3rd    706
+Crew   885
+> (f00 <- ftable(Titanic, col.vars= ., row.vars= .))
+     
+ 2201
+> stopifnot(
++   dim(f04) == c(32,1),
++   dim(f10) == c(1,4),
++   dim(f01) == c(4,1),
++   dim(f00) == c(1,1))
+> ## End(Don't show)
+> ## Start with a data frame.
+> x <- ftable(mtcars[c("cyl", "vs", "am", "gear")])
+> x
+          gear  3  4  5
+cyl vs am              
+4   0  0        0  0  0
+       1        0  0  1
+    1  0        1  2  0
+       1        0  6  1
+6   0  0        0  0  0
+       1        0  2  1
+    1  0        2  2  0
+       1        0  0  0
+8   0  0       12  0  0
+       1        0  0  2
+    1  0        0  0  0
+       1        0  0  0
+> ftable(x, row.vars = c(2, 4))
+        cyl  4     6     8   
+        am   0  1  0  1  0  1
+vs gear                      
+0  3         0  0  0  0 12  0
+   4         0  0  0  2  0  0
+   5         0  1  0  1  0  2
+1  3         1  0  2  0  0  0
+   4         2  6  2  0  0  0
+   5         0  1  0  0  0  0
+> 
+> ## Start with expressions, use table()'s "dnn" to change labels
+> ftable(mtcars$cyl, mtcars$vs, mtcars$am, mtcars$gear, row.vars = c(2, 4),
++        dnn = c("Cylinders", "V/S", "Transmission", "Gears"))
+          Cylinders     4     6     8   
+          Transmission  0  1  0  1  0  1
+V/S Gears                               
+0   3                   0  0  0  0 12  0
+    4                   0  0  0  2  0  0
+    5                   0  1  0  1  0  2
+1   3                   1  0  2  0  0  0
+    4                   2  6  2  0  0  0
+    5                   0  1  0  0  0  0
+> 
+> 
+> 
+> cleanEx()
+> nameEx("ftable.formula")
+> ### * ftable.formula
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: ftable.formula
+> ### Title: Formula Notation for Flat Contingency Tables
+> ### Aliases: ftable.formula
+> ### Keywords: category
+> 
+> ### ** Examples
+> 
+> Titanic
+, , Age = Child, Survived = No
+
+      Sex
+Class  Male Female
+  1st     0      0
+  2nd     0      0
+  3rd    35     17
+  Crew    0      0
+
+, , Age = Adult, Survived = No
+
+      Sex
+Class  Male Female
+  1st   118      4
+  2nd   154     13
+  3rd   387     89
+  Crew  670      3
+
+, , Age = Child, Survived = Yes
+
+      Sex
+Class  Male Female
+  1st     5      1
+  2nd    11     13
+  3rd    13     14
+  Crew    0      0
+
+, , Age = Adult, Survived = Yes
+
+      Sex
+Class  Male Female
+  1st    57    140
+  2nd    14     80
+  3rd    75     76
+  Crew  192     20
+
+> x <- ftable(Survived ~ ., data = Titanic)
+> x
+                   Survived  No Yes
+Class Sex    Age                   
+1st   Male   Child            0   5
+             Adult          118  57
+      Female Child            0   1
+             Adult            4 140
+2nd   Male   Child            0  11
+             Adult          154  14
+      Female Child            0  13
+             Adult           13  80
+3rd   Male   Child           35  13
+             Adult          387  75
+      Female Child           17  14
+             Adult           89  76
+Crew  Male   Child            0   0
+             Adult          670 192
+      Female Child            0   0
+             Adult            3  20
+> ftable(Sex ~ Class + Age, data = x)
+            Sex Male Female
+Class Age                  
+1st   Child        5      1
+      Adult      175    144
+2nd   Child       11     13
+      Adult      168     93
+3rd   Child       48     31
+      Adult      462    165
+Crew  Child        0      0
+      Adult      862     23
+> 
+> 
+> 
+> cleanEx()
+> nameEx("getInitial")
+> ### * getInitial
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: getInitial
+> ### Title: Get Initial Parameter Estimates
+> ### Aliases: getInitial getInitial.default getInitial.formula
+> ###   getInitial.selfStart
+> ### Keywords: models nonlinear manip
+> 
+> ### ** Examples
+> 
+> PurTrt <- Puromycin[ Puromycin$state == "treated", ]
+> print(getInitial( rate ~ SSmicmen( conc, Vm, K ), PurTrt ), digits = 3)
+      Vm        K 
+212.6837   0.0641 
+> 
+> 
+> 
+> cleanEx()
+> nameEx("glm")
+> ### * glm
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: glm
+> ### Title: Fitting Generalized Linear Models
+> ### Aliases: glm glm.fit weights.glm
+> ### Keywords: models regression
+> 
+> ### ** Examples
+> 
+> ## Dobson (1990) Page 93: Randomized Controlled Trial :
+> counts <- c(18,17,15,20,10,20,25,13,12)
+> outcome <- gl(3,1,9)
+> treatment <- gl(3,3)
+> data.frame(treatment, outcome, counts) # showing data
+  treatment outcome counts
+1         1       1     18
+2         1       2     17
+3         1       3     15
+4         2       1     20
+5         2       2     10
+6         2       3     20
+7         3       1     25
+8         3       2     13
+9         3       3     12
+> glm.D93 <- glm(counts ~ outcome + treatment, family = poisson())
+> anova(glm.D93)
+Analysis of Deviance Table
+
+Model: poisson, link: log
+
+Response: counts
+
+Terms added sequentially (first to last)
+
+
+          Df Deviance Resid. Df Resid. Dev
+NULL                          8    10.5814
+outcome    2   5.4523         6     5.1291
+treatment  2   0.0000         4     5.1291
+> ## Computing AIC [in many ways]:
+> (A0 <- AIC(glm.D93))
+[1] 56.76132
+> (ll <- logLik(glm.D93))
+'log Lik.' -23.38066 (df=5)
+> A1 <- -2*c(ll) + 2*attr(ll, "df")
+> A2 <- glm.D93$family$aic(counts, mu=fitted(glm.D93), wt=1) +
++         2 * length(coef(glm.D93))
+> stopifnot(exprs = {
++   all.equal(A0, A1)
++   all.equal(A1, A2)
++   all.equal(A1, glm.D93$aic)
++ })
+> 
+> 
+> 
+> # A Gamma example, from McCullagh & Nelder (1989, pp. 300-2)
+> clotting <- data.frame(
++     u = c(5,10,15,20,30,40,60,80,100),
++     lot1 = c(118,58,42,35,27,25,21,19,18),
++     lot2 = c(69,35,26,21,18,16,13,12,12))
+> summary(glm(lot1 ~ log(u), data = clotting, family = Gamma))
+
+Call:
+glm(formula = lot1 ~ log(u), family = Gamma, data = clotting)
+
+Deviance Residuals: 
+     Min        1Q    Median        3Q       Max  
+-0.04008  -0.03756  -0.02637   0.02905   0.08641  
+
+Coefficients:
+              Estimate Std. Error t value Pr(>|t|)    
+(Intercept) -0.0165544  0.0009275  -17.85 4.28e-07 ***
+log(u)       0.0153431  0.0004150   36.98 2.75e-09 ***
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+
+(Dispersion parameter for Gamma family taken to be 0.002446059)
+
+    Null deviance: 3.51283  on 8  degrees of freedom
+Residual deviance: 0.01673  on 7  degrees of freedom
+AIC: 37.99
+
+Number of Fisher Scoring iterations: 3
+
+> summary(glm(lot2 ~ log(u), data = clotting, family = Gamma))
+
+Call:
+glm(formula = lot2 ~ log(u), family = Gamma, data = clotting)
+
+Deviance Residuals: 
+     Min        1Q    Median        3Q       Max  
+-0.05574  -0.02925   0.01030   0.01714   0.06371  
+
+Coefficients:
+              Estimate Std. Error t value Pr(>|t|)    
+(Intercept) -0.0239085  0.0013265  -18.02 4.00e-07 ***
+log(u)       0.0235992  0.0005768   40.91 1.36e-09 ***
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+
+(Dispersion parameter for Gamma family taken to be 0.001813354)
+
+    Null deviance: 3.118557  on 8  degrees of freedom
+Residual deviance: 0.012672  on 7  degrees of freedom
+AIC: 27.032
+
+Number of Fisher Scoring iterations: 3
+
+> ## Aliased ("S"ingular) -> 1 NA coefficient
+> (fS <- glm(lot2 ~ log(u) + log(u^2), data = clotting, family = Gamma))
+
+Call:  glm(formula = lot2 ~ log(u) + log(u^2), family = Gamma, data = clotting)
+
+Coefficients:
+(Intercept)       log(u)     log(u^2)  
+   -0.02391      0.02360           NA  
+
+Degrees of Freedom: 8 Total (i.e. Null);  7 Residual
+Null Deviance:	    3.119 
+Residual Deviance: 0.01267 	AIC: 27.03
+> tools::assertError(update(fS, singular.ok=FALSE), verbose=interactive())
+> ## -> .. "singular fit encountered"
+> 
+> ## Not run: 
+> ##D ## for an example of the use of a terms object as a formula
+> ##D demo(glm.vr)
+> ## End(Not run)
+> 
+> 
+> cleanEx()
+> nameEx("glm.control")
+> ### * glm.control
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: glm.control
+> ### Title: Auxiliary for Controlling GLM Fitting
+> ### Aliases: glm.control
+> ### Keywords: optimize models
+> 
+> ### ** Examples
+> 
+> 
+> cleanEx()
+> nameEx("hclust")
+> ### * hclust
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: hclust
+> ### Title: Hierarchical Clustering
+> ### Aliases: hclust plot.hclust print.hclust
+> ### Keywords: multivariate cluster
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> ### Example 1: Violent crime rates by US state
+> 
+> hc <- hclust(dist(USArrests), "ave")
+> plot(hc)
+> plot(hc, hang = -1)
+> 
+> ## Do the same with centroid clustering and *squared* Euclidean distance,
+> ## cut the tree into ten clusters and reconstruct the upper part of the
+> ## tree from the cluster centers.
+> hc <- hclust(dist(USArrests)^2, "cen")
+> memb <- cutree(hc, k = 10)
+> cent <- NULL
+> for(k in 1:10){
++   cent <- rbind(cent, colMeans(USArrests[memb == k, , drop = FALSE]))
++ }
+> hc1 <- hclust(dist(cent)^2, method = "cen", members = table(memb))
+> opar <- par(mfrow = c(1, 2))
+> plot(hc,  labels = FALSE, hang = -1, main = "Original Tree")
+> plot(hc1, labels = FALSE, hang = -1, main = "Re-start from 10 clusters")
+> par(opar)
+> 
+> ### Example 2: Straight-line distances among 10 US cities
+> ##  Compare the results of algorithms "ward.D" and "ward.D2"
+> 
+> mds2 <- -cmdscale(UScitiesD)
+> plot(mds2, type="n", axes=FALSE, ann=FALSE)
+> text(mds2, labels=rownames(mds2), xpd = NA)
+> 
+> hcity.D  <- hclust(UScitiesD, "ward.D") # "wrong"
+> hcity.D2 <- hclust(UScitiesD, "ward.D2")
+> opar <- par(mfrow = c(1, 2))
+> plot(hcity.D,  hang=-1)
+> plot(hcity.D2, hang=-1)
+> par(opar)
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("heatmap")
+> ### * heatmap
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: heatmap
+> ### Title: Draw a Heat Map
+> ### Aliases: heatmap
+> ### Keywords: hplot
+> 
+> ### ** Examples
+> 
+> require(graphics); require(grDevices)
+> x  <- as.matrix(mtcars)
+> rc <- rainbow(nrow(x), start = 0, end = .3)
+> cc <- rainbow(ncol(x), start = 0, end = .3)
+> hv <- heatmap(x, col = cm.colors(256), scale = "column",
++               RowSideColors = rc, ColSideColors = cc, margins = c(5,10),
++               xlab = "specification variables", ylab =  "Car Models",
++               main = "heatmap(<Mtcars data>, ..., scale = \"column\")")
+> utils::str(hv) # the two re-ordering index vectors
+List of 4
+ $ rowInd: int [1:32] 31 17 16 15 5 25 29 24 7 6 ...
+ $ colInd: int [1:11] 2 9 8 11 6 5 10 7 1 4 ...
+ $ Rowv  : NULL
+ $ Colv  : NULL
+> 
+> ## no column dendrogram (nor reordering) at all:
+> heatmap(x, Colv = NA, col = cm.colors(256), scale = "column",
++         RowSideColors = rc, margins = c(5,10),
++         xlab = "specification variables", ylab =  "Car Models",
++         main = "heatmap(<Mtcars data>, ..., scale = \"column\")")
+> ## Don't show: 
+> ## no row dendrogram (nor reordering) at all:
+> heatmap(x, Rowv = NA, col = cm.colors(256), scale = "column",
++         ColSideColors = cc, margins = c(5,10),
++         xlab = "xlab", ylab =  "ylab")  # no main
+> ## End(Don't show)
+> ## "no nothing"
+> heatmap(x, Rowv = NA, Colv = NA, scale = "column",
++         main = "heatmap(*, NA, NA) ~= image(t(x))")
+> 
+> round(Ca <- cor(attitude), 2)
+           rating complaints privileges learning raises critical advance
+rating       1.00       0.83       0.43     0.62   0.59     0.16    0.16
+complaints   0.83       1.00       0.56     0.60   0.67     0.19    0.22
+privileges   0.43       0.56       1.00     0.49   0.45     0.15    0.34
+learning     0.62       0.60       0.49     1.00   0.64     0.12    0.53
+raises       0.59       0.67       0.45     0.64   1.00     0.38    0.57
+critical     0.16       0.19       0.15     0.12   0.38     1.00    0.28
+advance      0.16       0.22       0.34     0.53   0.57     0.28    1.00
+> symnum(Ca) # simple graphic
+           rt cm p l rs cr a
+rating     1                
+complaints +  1             
+privileges .  .  1          
+learning   ,  .  . 1        
+raises     .  ,  . , 1      
+critical             .  1   
+advance          . . .     1
+attr(,"legend")
+[1] 0 ‘ ’ 0.3 ‘.’ 0.6 ‘,’ 0.8 ‘+’ 0.9 ‘*’ 0.95 ‘B’ 1
+> heatmap(Ca,               symm = TRUE, margins = c(6,6)) # with reorder()
+> heatmap(Ca, Rowv = FALSE, symm = TRUE, margins = c(6,6)) # _NO_ reorder()
+> ## slightly artificial with color bar, without and with ordering:
+> cc <- rainbow(nrow(Ca))
+> heatmap(Ca, Rowv = FALSE, symm = TRUE, RowSideColors = cc, ColSideColors = cc,
++ 	margins = c(6,6))
+> heatmap(Ca,		symm = TRUE, RowSideColors = cc, ColSideColors = cc,
++ 	margins = c(6,6))
+> 
+> ## For variable clustering, rather use distance based on cor():
+> symnum( cU <- cor(USJudgeRatings) )
+     CO I DM DI CF DE PR F O W PH R
+CONT 1                             
+INTG    1                          
+DMNR    B 1                        
+DILG    + +  1                     
+CFMG    + +  B  1                  
+DECI    + +  B  B  1               
+PREP    + +  B  B  B  1            
+FAMI    + +  B  *  *  B  1         
+ORAL    * *  B  B  *  B  B 1       
+WRIT    * +  B  *  *  B  B B 1     
+PHYS    , ,  +  +  +  +  + + + 1   
+RTEN    * *  *  *  *  B  * B B *  1
+attr(,"legend")
+[1] 0 ‘ ’ 0.3 ‘.’ 0.6 ‘,’ 0.8 ‘+’ 0.9 ‘*’ 0.95 ‘B’ 1
+> 
+> hU <- heatmap(cU, Rowv = FALSE, symm = TRUE, col = topo.colors(16),
++              distfun = function(c) as.dist(1 - c), keep.dendro = TRUE)
+> ## The Correlation matrix with same reordering:
+> round(100 * cU[hU[[1]], hU[[2]]])
+     CONT INTG DMNR PHYS DILG CFMG DECI RTEN ORAL WRIT PREP FAMI
+CONT  100  -13  -15    5    1   14    9   -3   -1   -4    1   -3
+INTG  -13  100   96   74   87   81   80   94   91   91   88   87
+DMNR  -15   96  100   79   84   81   80   94   91   89   86   84
+PHYS    5   74   79  100   81   88   87   91   89   86   85   84
+DILG    1   87   84   81  100   96   96   93   95   96   98   96
+CFMG   14   81   81   88   96  100   98   93   95   94   96   94
+DECI    9   80   80   87   96   98  100   92   95   95   96   94
+RTEN   -3   94   94   91   93   93   92  100   98   97   95   94
+ORAL   -1   91   91   89   95   95   95   98  100   99   98   98
+WRIT   -4   91   89   86   96   94   95   97   99  100   99   99
+PREP    1   88   86   85   98   96   96   95   98   99  100   99
+FAMI   -3   87   84   84   96   94   94   94   98   99   99  100
+> ## The column dendrogram:
+> utils::str(hU$Colv)
+--[dendrogram w/ 2 branches and 12 members at h = 1.15]
+  |--leaf "CONT" 
+  `--[dendrogram w/ 2 branches and 11 members at h = 0.258]
+     |--[dendrogram w/ 2 branches and 2 members at h = 0.0354]
+     |  |--leaf "INTG" 
+     |  `--leaf "DMNR" 
+     `--[dendrogram w/ 2 branches and 9 members at h = 0.187]
+        |--leaf "PHYS" 
+        `--[dendrogram w/ 2 branches and 8 members at h = 0.075]
+           |--[dendrogram w/ 2 branches and 3 members at h = 0.0438]
+           |  |--leaf "DILG" 
+           |  `--[dendrogram w/ 2 branches and 2 members at h = 0.0189]
+           |     |--leaf "CFMG" 
+           |     `--leaf "DECI" 
+           `--[dendrogram w/ 2 branches and 5 members at h = 0.0584]
+              |--leaf "RTEN" 
+              `--[dendrogram w/ 2 branches and 4 members at h = 0.0187]
+                 |--[dendrogram w/ 2 branches and 2 members at h = 0.00657]
+                 |  |--leaf "ORAL" 
+                 |  `--leaf "WRIT" 
+                 `--[dendrogram w/ 2 branches and 2 members at h = 0.0101]
+                    |--leaf "PREP" 
+                    `--leaf "FAMI" 
+> 
+> 
+> 
+> cleanEx()
+> nameEx("identify.hclust")
+> ### * identify.hclust
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: identify.hclust
+> ### Title: Identify Clusters in a Dendrogram
+> ### Aliases: identify.hclust
+> ### Keywords: cluster iplot
+> 
+> ### ** Examples
+> ## Not run: 
+> ##D require(graphics)
+> ##D 
+> ##D hca <- hclust(dist(USArrests))
+> ##D plot(hca)
+> ##D (x <- identify(hca)) ##  Terminate with 2nd mouse button !!
+> ##D 
+> ##D hci <- hclust(dist(iris[,1:4]))
+> ##D plot(hci)
+> ##D identify(hci, function(k) print(table(iris[k,5])))
+> ##D 
+> ##D # open a new device (one for dendrogram, one for bars):
+> ##D dev.new() # << make that narrow (& small)
+> ##D           # and *beside* 1st one
+> ##D nD <- dev.cur()            # to be for the barplot
+> ##D dev.set(dev.prev())  # old one for dendrogram
+> ##D plot(hci)
+> ##D ## select subtrees in dendrogram and "see" the species distribution:
+> ##D identify(hci, function(k) barplot(table(iris[k,5]), col = 2:4), DEV.FUN = nD)
+> ## End(Not run)
+> 
+> 
+> cleanEx()
+> nameEx("influence.measures")
+> ### * influence.measures
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: influence.measures
+> ### Title: Regression Deletion Diagnostics
+> ### Aliases: influence.measures hat hatvalues hatvalues.lm rstandard
+> ###   rstandard.lm rstandard.glm rstudent rstudent.lm rstudent.glm dfbeta
+> ###   dfbeta.lm dfbetas dfbetas.lm dffits covratio cooks.distance
+> ###   cooks.distance.lm cooks.distance.glm
+> ### Keywords: regression
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> ## Analysis of the life-cycle savings data
+> ## given in Belsley, Kuh and Welsch.
+> lm.SR <- lm(sr ~ pop15 + pop75 + dpi + ddpi, data = LifeCycleSavings)
+> 
+> inflm.SR <- influence.measures(lm.SR)
+> which(apply(inflm.SR$is.inf, 1, any))
+        Chile United States        Zambia         Libya 
+            7            44            46            49 
+> # which observations 'are' influential
+> summary(inflm.SR) # only these
+Potentially influential observations of
+	 lm(formula = sr ~ pop15 + pop75 + dpi + ddpi, data = LifeCycleSavings) :
+
+              dfb.1_ dfb.pp15 dfb.pp75 dfb.dpi dfb.ddpi dffit   cov.r   cook.d
+Chile         -0.20   0.13     0.22    -0.02    0.12    -0.46    0.65_*  0.04 
+United States  0.07  -0.07     0.04    -0.23   -0.03    -0.25    1.66_*  0.01 
+Zambia         0.16  -0.08    -0.34     0.09    0.23     0.75    0.51_*  0.10 
+Libya          0.55  -0.48    -0.38    -0.02   -1.02_*  -1.16_*  2.09_*  0.27 
+              hat    
+Chile          0.04  
+United States  0.33_*
+Zambia         0.06  
+Libya          0.53_*
+> plot(rstudent(lm.SR) ~ hatvalues(lm.SR)) # recommended by some
+> plot(lm.SR, which = 5) # an enhanced version of that via plot(<lm>)
+> 
+> ## The 'infl' argument is not needed, but avoids recomputation:
+> rs <- rstandard(lm.SR)
+> iflSR <- influence(lm.SR)
+> all.equal(rs, rstandard(lm.SR, infl = iflSR), tolerance = 1e-10)
+[1] TRUE
+> ## to "see" the larger values:
+> 1000 * round(dfbetas(lm.SR, infl = iflSR), 3)
+               (Intercept) pop15 pop75  dpi  ddpi
+Australia               12   -10   -27   45     0
+Austria                -10     6    41  -37    -8
+Belgium                -64    51   121  -35    -7
+Bolivia                  6   -13   -23   32    41
+Brazil                  90   -62  -179  120    68
+Canada                   5    -7    10  -35    -3
+Chile                 -199   133   220  -20   120
+China                   21    -6   -83   52   111
+Colombia                39   -52   -25    2     9
+Costa Rica            -234   284   142   56   -33
+Denmark                -41    21    47  152    49
+Ecuador                 72   -95   -61   20    48
+Finland               -113   111   117  -44   -17
+France                -166   147   219  -29    24
+Germany                 -8     8     8   -7     0
+Greece                -148   164    29  157   -60
+Guatamala               16   -55     6    6    97
+Honduras                -2    10   -10    8    -2
+Iceland                248  -274  -233 -126   185
+India                   21   -16   -14  -14   -19
+Ireland               -310   296   482 -257   -93
+Italy                   66   -71     3  -70   -29
+Japan                  640  -656  -674  146   389
+Korea                 -169   135   219    5  -169
+Luxembourg             -68    69    44  -28    49
+Malta                   37   -49     8  -87   153
+Norway                   2     0    -6  -16    -1
+Netherlands             14   -17   -12    4    23
+New Zealand            -60    65    94  -26   -65
+Nicaragua              -12    18    10   -5   -10
+Panama                  28   -53    14  -35    -8
+Paraguay              -232   164   158  144   270
+Peru                   -72   147    91  -86  -287
+Philippines           -157   227   157 -111  -171
+Portugal               -21    26    -4   40   -28
+South Africa            22   -20    -7  -20   -16
+South Rhodesia         144  -135   -92  -70   -58
+Spain                  -30    31     4   35     5
+Sweden                 101   -82   -62 -255   -13
+Switzerland             43   -46   -44   91   -19
+Turkey                 -11   -12    26    2    25
+Tunisia                 74  -105   -77   44   103
+United Kingdom          47   -36  -171  126   100
+United States           69   -73    37 -233   -33
+Venezuela              -51   101   -34  114  -124
+Zambia                 164   -79  -339   94   228
+Jamaica                110  -100   -57   -7  -295
+Uruguay               -134   129    30  131   100
+Libya                  551  -483  -380  -19 -1024
+Malaysia                37   -61    32  -50   -72
+> cat("PRESS :"); (PRESS <- sum( rstandard(lm.SR, type = "predictive")^2 ))
+PRESS :[1] 798.939
+> stopifnot(all.equal(PRESS, sum( (residuals(lm.SR) / (1 - iflSR$hat))^2)))
+> 
+> ## Show that "PRE-residuals"  ==  L.O.O. Crossvalidation (CV) errors:
+> X <- model.matrix(lm.SR)
+> y <- model.response(model.frame(lm.SR))
+> ## Leave-one-out CV least-squares prediction errors (relatively fast)
+> rCV <- vapply(seq_len(nrow(X)), function(i)
++               y[i] - X[i,] %*% .lm.fit(X[-i,], y[-i])$coefficients,
++               numeric(1))
+> ## are the same as the *faster* rstandard(*, "pred") :
+> stopifnot(all.equal(rCV, unname(rstandard(lm.SR, type = "predictive"))))
+> 
+> 
+> ## Huber's data [Atkinson 1985]
+> xh <- c(-4:0, 10)
+> yh <- c(2.48, .73, -.04, -1.44, -1.32, 0)
+> lmH <- lm(yh ~ xh)
+> im <- influence.measures(lmH)
+> is.inf <- apply(im$is.inf, 1, any)
+> plot(xh,yh, main = "Huber's data: L.S. line and influential obs.")
+> abline(lmH); points(xh[is.inf], yh[is.inf], pch = 20, col = 2)
+> 
+> ## Irwin's data [Williams 1987]
+> xi <- 1:5
+> yi <- c(0,2,14,19,30)    # number of mice responding to dose xi
+> mi <- rep(40, 5)         # number of mice exposed
+> glmI <- glm(cbind(yi, mi -yi) ~ xi, family = binomial)
+> signif(cooks.distance(glmI), 3)   # ~= Ci in Table 3, p.184
+     1      2      3      4      5 
+0.2520 0.2610 1.2900 0.0845 0.3640 
+> imI <- influence.measures(glmI)
+> stopifnot(all.equal(imI$infmat[,"cook.d"],
++           cooks.distance(glmI)))
+> 
+> 
+> 
+> cleanEx()
+> nameEx("integrate")
+> ### * integrate
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: integrate
+> ### Title: Integration of One-Dimensional Functions
+> ### Aliases: integrate print.integrate
+> ### Keywords: math utilities
+> 
+> ### ** Examples
+> 
+> integrate(dnorm, -1.96, 1.96)
+0.9500042 with absolute error < 1e-11
+> integrate(dnorm, -Inf, Inf)
+1 with absolute error < 9.4e-05
+> 
+> ## a slowly-convergent integral
+> integrand <- function(x) {1/((x+1)*sqrt(x))}
+> integrate(integrand, lower = 0, upper = Inf)
+3.141593 with absolute error < 2.7e-05
+> 
+> ## don't do this if you really want the integral from 0 to Inf
+> integrate(integrand, lower = 0, upper = 10)
+2.529038 with absolute error < 3e-04
+> integrate(integrand, lower = 0, upper = 100000)
+3.135268 with absolute error < 4.2e-07
+> integrate(integrand, lower = 0, upper = 1000000, stop.on.error = FALSE)
+failed with message ‘the integral is probably divergent’
+> 
+> ## some functions do not handle vector input properly
+> f <- function(x) 2.0
+> try(integrate(f, 0, 1))
+Error in integrate(f, 0, 1) : 
+  evaluation of function gave a result of wrong length
+> integrate(Vectorize(f), 0, 1)  ## correct
+2 with absolute error < 2.2e-14
+> integrate(function(x) rep(2.0, length(x)), 0, 1)  ## correct
+2 with absolute error < 2.2e-14
+> 
+> ## integrate can fail if misused
+> integrate(dnorm, 0, 2)
+0.4772499 with absolute error < 5.3e-15
+> integrate(dnorm, 0, 20)
+0.5 with absolute error < 3.7e-05
+> integrate(dnorm, 0, 200)
+0.5 with absolute error < 1.6e-07
+> integrate(dnorm, 0, 2000)
+0.5 with absolute error < 4.4e-06
+> integrate(dnorm, 0, 20000) ## fails on many systems
+0 with absolute error < 0
+> integrate(dnorm, 0, Inf)   ## works
+0.5 with absolute error < 4.7e-05
+> ## Don't show: 
+> tools::assertError(
++ ## End(Don't show)
++ integrate(dnorm, 0:1, 20) #-> error!
++ ## "silently" gave  integrate(dnorm, 0, 20)  in earlier versions of R
++ ## Don't show: 
++  , verbose=TRUE)
+Asserted error: length(lower) == 1 is not TRUE
+> ## End(Don't show)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("interaction.plot")
+> ### * interaction.plot
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: interaction.plot
+> ### Title: Two-way Interaction Plot
+> ### Aliases: interaction.plot
+> ### Keywords: hplot
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> with(ToothGrowth, {
++ interaction.plot(dose, supp, len, fixed = TRUE)
++ dose <- ordered(dose)
++ interaction.plot(dose, supp, len, fixed = TRUE,
++                  col = 2:3, leg.bty = "o", xtick = TRUE)
++ interaction.plot(dose, supp, len, fixed = TRUE, col = 2:3, type = "p")
++ })
+> 
+> with(OrchardSprays, {
++   interaction.plot(treatment, rowpos, decrease)
++   interaction.plot(rowpos, treatment, decrease, cex.axis = 0.8)
++   ## order the rows by their mean effect
++   rowpos <- factor(rowpos,
++                    levels = sort.list(tapply(decrease, rowpos, mean)))
++   interaction.plot(rowpos, treatment, decrease, col = 2:9, lty = 1)
++ })
+> 
+> 
+> 
+> 
+> cleanEx()
+> nameEx("is.empty")
+> ### * is.empty
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: is.empty.model
+> ### Title: Test if a Model's Formula is Empty
+> ### Aliases: is.empty.model
+> ### Keywords: models
+> 
+> ### ** Examples
+> 
+> y <- rnorm(20)
+> is.empty.model(y ~ 0)
+[1] TRUE
+> is.empty.model(y ~ -1)
+[1] TRUE
+> is.empty.model(lm(y ~ 0))
+[1] TRUE
+> 
+> 
+> 
+> cleanEx()
+> nameEx("isoreg")
+> ### * isoreg
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: isoreg
+> ### Title: Isotonic / Monotone Regression
+> ### Aliases: isoreg
+> ### Keywords: regression smooth
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> (ir <- isoreg(c(1,0,4,3,3,5,4,2,0)))
+Isotonic regression from isoreg(x = c(1, 0, 4, 3, 3, 5, 4, 2, 0)),
+  with 2 knots / breaks at obs.nr. 2 9 ;
+  initially ordered 'x'
+  and further components List of 4
+ $ x : num [1:9] 1 2 3 4 5 6 7 8 9
+ $ y : num [1:9] 1 0 4 3 3 5 4 2 0
+ $ yf: num [1:9] 0.5 0.5 3 3 3 3 3 3 3
+ $ yc: num [1:10] 0 1 1 5 8 11 16 20 22 22
+> plot(ir, plot.type = "row")
+> 
+> (ir3 <- isoreg(y3 <- c(1,0,4,3,3,5,4,2, 3))) # last "3", not "0"
+Isotonic regression from isoreg(x = y3 <- c(1, 0, 4, 3, 3, 5, 4, 2, 3)),
+  with 3 knots / breaks at obs.nr. 2 5 9 ;
+  initially ordered 'x'
+  and further components List of 4
+ $ x : num [1:9] 1 2 3 4 5 6 7 8 9
+ $ y : num [1:9] 1 0 4 3 3 5 4 2 3
+ $ yf: num [1:9] 0.5 0.5 3.33 3.33 3.33 ...
+ $ yc: num [1:10] 0 1 1 5 8 11 16 20 22 25
+> (fi3 <- as.stepfun(ir3))
+Step function
+Call: isoreg(x = y3 <- c(1, 0, 4, 3, 3, 5, 4, 2, 3))
+ x[1:3] =      2,      5,      9
+4 plateau levels =    0.5,    0.5, 3.3333,    3.5
+> (ir4 <- isoreg(1:10, y4 <- c(5, 9, 1:2, 5:8, 3, 8)))
+Isotonic regression from isoreg(x = 1:10, y = y4 <- c(5, 9, 1:2, 5:8, 3, 8)),
+  with 5 knots / breaks at obs.nr. 4 5 6 9 10 ;
+  initially ordered 'x'
+  and further components List of 4
+ $ x : num [1:10] 1 2 3 4 5 6 7 8 9 10
+ $ y : num [1:10] 5 9 1 2 5 6 7 8 3 8
+ $ yf: num [1:10] 4.25 4.25 4.25 4.25 5 6 6 6 6 8
+ $ yc: num [1:11] 0 5 14 15 17 22 28 35 43 46 ...
+> cat(sprintf("R^2 = %.2f\n",
++             1 - sum(residuals(ir4)^2) / ((10-1)*var(y4))))
+R^2 = 0.21
+> 
+> ## If you are interested in the knots alone :
+> with(ir4, cbind(iKnots, yf[iKnots]))
+     iKnots     
+[1,]      4 4.25
+[2,]      5 5.00
+[3,]      6 6.00
+[4,]      9 6.00
+[5,]     10 8.00
+> 
+> ## Example of unordered x[] with ties:
+> x <- sample((0:30)/8)
+> y <- exp(x)
+> x. <- round(x) # ties!
+> plot(m <- isoreg(x., y))
+> stopifnot(all.equal(with(m, yf[iKnots]),
++                     as.vector(tapply(y, x., mean))))
+> 
+> 
+> 
+> cleanEx()
+> nameEx("kernapply")
+> ### * kernapply
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: kernapply
+> ### Title: Apply Smoothing Kernel
+> ### Aliases: kernapply kernapply.default kernapply.ts kernapply.tskernel
+> ###   kernapply.vector
+> ### Keywords: ts
+> 
+> ### ** Examples
+> 
+> ## see 'kernel' for examples
+> 
+> 
+> 
+> cleanEx()
+> nameEx("kernel")
+> ### * kernel
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: kernel
+> ### Title: Smoothing Kernel Objects
+> ### Aliases: kernel bandwidth.kernel df.kernel is.tskernel plot.tskernel
+> ### Keywords: ts
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> ## Demonstrate a simple trading strategy for the
+> ## financial time series German stock index DAX.
+> x <- EuStockMarkets[,1]
+> k1 <- kernel("daniell", 50)  # a long moving average
+> k2 <- kernel("daniell", 10)  # and a short one
+> plot(k1)
+> plot(k2)
+> x1 <- kernapply(x, k1)
+> x2 <- kernapply(x, k2)
+> plot(x)
+> lines(x1, col = "red")    # go long if the short crosses the long upwards
+> lines(x2, col = "green")  # and go short otherwise
+> 
+> ## More interesting kernels
+> kd <- kernel("daniell", c(3, 3))
+> kd # note the unusual indexing
+Daniell(3,3) 
+coef[-6] = 0.02041
+coef[-5] = 0.04082
+coef[-4] = 0.06122
+coef[-3] = 0.08163
+coef[-2] = 0.10204
+coef[-1] = 0.12245
+coef[ 0] = 0.14286
+coef[ 1] = 0.12245
+coef[ 2] = 0.10204
+coef[ 3] = 0.08163
+coef[ 4] = 0.06122
+coef[ 5] = 0.04082
+coef[ 6] = 0.02041
+> kd[-2:2]
+[1] 0.1020408 0.1224490 0.1428571 0.1224490 0.1020408
+> plot(kernel("fejer", 100, r = 6))
+> plot(kernel("modified.daniell", c(7,5,3)))
+> 
+> # Reproduce example 10.4.3 from Brockwell and Davis (1991)
+> spectrum(sunspot.year, kernel = kernel("daniell", c(11,7,3)), log = "no")
+> 
+> 
+> 
+> cleanEx()
+> nameEx("kmeans")
+> ### * kmeans
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: kmeans
+> ### Title: K-Means Clustering
+> ### Aliases: kmeans print.kmeans fitted.kmeans
+> ### Keywords: multivariate cluster
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> # a 2-dimensional example
+> x <- rbind(matrix(rnorm(100, sd = 0.3), ncol = 2),
++            matrix(rnorm(100, mean = 1, sd = 0.3), ncol = 2))
+> colnames(x) <- c("x", "y")
+> (cl <- kmeans(x, 2))
+K-means clustering with 2 clusters of sizes 49, 51
+
+Cluster means:
+           x          y
+1 0.02149367 0.02121248
+2 0.94443633 1.01712793
+
+Clustering vector:
+  [1] 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ [38] 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
+ [75] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
+
+Within cluster sum of squares by cluster:
+[1] 6.525480 8.392416
+ (between_SS / total_SS =  75.5 %)
+
+Available components:
+
+[1] "cluster"      "centers"      "totss"        "withinss"     "tot.withinss"
+[6] "betweenss"    "size"         "iter"         "ifault"      
+> plot(x, col = cl$cluster)
+> points(cl$centers, col = 1:2, pch = 8, cex = 2)
+> 
+> # sum of squares
+> ss <- function(x) sum(scale(x, scale = FALSE)^2)
+> 
+> ## cluster centers "fitted" to each obs.:
+> fitted.x <- fitted(cl);  head(fitted.x)
+           x          y
+1 0.02149367 0.02121248
+1 0.02149367 0.02121248
+1 0.02149367 0.02121248
+1 0.02149367 0.02121248
+1 0.02149367 0.02121248
+1 0.02149367 0.02121248
+> resid.x <- x - fitted(cl)
+> 
+> ## Equalities : ----------------------------------
+> cbind(cl[c("betweenss", "tot.withinss", "totss")], # the same two columns
++          c(ss(fitted.x), ss(resid.x),    ss(x)))
+             [,1]     [,2]    
+betweenss    46.07333 46.07333
+tot.withinss 14.9179  14.9179 
+totss        60.99123 60.99123
+> stopifnot(all.equal(cl$ totss,        ss(x)),
++ 	  all.equal(cl$ tot.withinss, ss(resid.x)),
++ 	  ## these three are the same:
++ 	  all.equal(cl$ betweenss,    ss(fitted.x)),
++ 	  all.equal(cl$ betweenss, cl$totss - cl$tot.withinss),
++ 	  ## and hence also
++ 	  all.equal(ss(x), ss(fitted.x) + ss(resid.x))
++ 	  )
+> 
+> kmeans(x,1)$withinss # trivial one-cluster, (its W.SS == ss(x))
+[1] 60.99123
+> 
+> ## random starts do help here with too many clusters
+> ## (and are often recommended anyway!):
+> (cl <- kmeans(x, 5, nstart = 25))
+K-means clustering with 5 clusters of sizes 12, 24, 24, 15, 25
+
+Cluster means:
+           x          y
+1  1.3290081  1.1185534
+2  0.1581362 -0.1761590
+3  0.8043520  0.7805033
+4  0.8609139  1.3145869
+5 -0.1096832  0.2106891
+
+Clustering vector:
+  [1] 5 2 5 2 5 5 2 2 5 5 3 2 5 5 2 5 2 5 2 5 2 2 5 5 2 5 2 5 5 2 2 2 5 2 5 5 5
+ [38] 2 2 2 2 5 5 5 5 5 2 2 2 2 4 3 3 3 3 1 1 1 3 1 4 3 1 4 3 4 3 3 1 4 4 1 4 3
+ [75] 3 1 4 4 4 4 3 4 1 3 1 3 4 3 3 3 3 1 3 4 3 3 1 3 4 3
+
+Within cluster sum of squares by cluster:
+[1] 1.0314888 1.2816507 1.5056575 0.7104553 2.5330710
+ (between_SS / total_SS =  88.4 %)
+
+Available components:
+
+[1] "cluster"      "centers"      "totss"        "withinss"     "tot.withinss"
+[6] "betweenss"    "size"         "iter"         "ifault"      
+> plot(x, col = cl$cluster)
+> points(cl$centers, col = 1:5, pch = 8)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("kruskal.test")
+> ### * kruskal.test
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: kruskal.test
+> ### Title: Kruskal-Wallis Rank Sum Test
+> ### Aliases: kruskal.test kruskal.test.default kruskal.test.formula
+> ### Keywords: htest
+> 
+> ### ** Examples
+> 
+> ## Hollander & Wolfe (1973), 116.
+> ## Mucociliary efficiency from the rate of removal of dust in normal
+> ##  subjects, subjects with obstructive airway disease, and subjects
+> ##  with asbestosis.
+> x <- c(2.9, 3.0, 2.5, 2.6, 3.2) # normal subjects
+> y <- c(3.8, 2.7, 4.0, 2.4)      # with obstructive airway disease
+> z <- c(2.8, 3.4, 3.7, 2.2, 2.0) # with asbestosis
+> kruskal.test(list(x, y, z))
+
+	Kruskal-Wallis rank sum test
+
+data:  list(x, y, z)
+Kruskal-Wallis chi-squared = 0.77143, df = 2, p-value = 0.68
+
+> ## Equivalently,
+> x <- c(x, y, z)
+> g <- factor(rep(1:3, c(5, 4, 5)),
++             labels = c("Normal subjects",
++                        "Subjects with obstructive airway disease",
++                        "Subjects with asbestosis"))
+> kruskal.test(x, g)
+
+	Kruskal-Wallis rank sum test
+
+data:  x and g
+Kruskal-Wallis chi-squared = 0.77143, df = 2, p-value = 0.68
+
+> 
+> ## Formula interface.
+> require(graphics)
+> boxplot(Ozone ~ Month, data = airquality)
+> kruskal.test(Ozone ~ Month, data = airquality)
+
+	Kruskal-Wallis rank sum test
+
+data:  Ozone by Month
+Kruskal-Wallis chi-squared = 29.267, df = 4, p-value = 6.901e-06
+
+> 
+> 
+> 
+> cleanEx()
+> nameEx("ks.test")
+> ### * ks.test
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Encoding: UTF-8
+> 
+> ### Name: ks.test
+> ### Title: Kolmogorov-Smirnov Tests
+> ### Aliases: ks.test ks.test.default ks.test.formula
+> ### Keywords: htest
+> 
+> ### ** Examples
+> 
+> require("graphics")
+> 
+> x <- rnorm(50)
+> y <- runif(30)
+> # Do x and y come from the same distribution?
+> ks.test(x, y)
+
+	Exact two-sample Kolmogorov-Smirnov test
+
+data:  x and y
+D = 0.48, p-value = 0.0002033
+alternative hypothesis: two-sided
+
+> # Does x come from a shifted gamma distribution with shape 3 and rate 2?
+> ks.test(x+2, "pgamma", 3, 2) # two-sided, exact
+
+	Exact one-sample Kolmogorov-Smirnov test
+
+data:  x + 2
+D = 0.40962, p-value = 4.227e-08
+alternative hypothesis: two-sided
+
+> ks.test(x+2, "pgamma", 3, 2, exact = FALSE)
+
+	Asymptotic one-sample Kolmogorov-Smirnov test
+
+data:  x + 2
+D = 0.40962, p-value = 1.033e-07
+alternative hypothesis: two-sided
+
+> ks.test(x+2, "pgamma", 3, 2, alternative = "gr")
+
+	Exact one-sample Kolmogorov-Smirnov test
+
+data:  x + 2
+D^+ = 0.039998, p-value = 0.8302
+alternative hypothesis: the CDF of x lies above the null hypothesis
+
+> 
+> # test if x is stochastically larger than x2
+> x2 <- rnorm(50, -1)
+> plot(ecdf(x), xlim = range(c(x, x2)))
+> plot(ecdf(x2), add = TRUE, lty = "dashed")
+> t.test(x, x2, alternative = "g")
+
+	Welch Two Sample t-test
+
+data:  x and x2
+t = 5.6742, df = 96.85, p-value = 7.242e-08
+alternative hypothesis: true difference in means is greater than 0
+95 percent confidence interval:
+ 0.7069751       Inf
+sample estimates:
+ mean of x  mean of y 
+ 0.1004483 -0.8990693 
+
+> wilcox.test(x, x2, alternative = "g")
+
+	Wilcoxon rank sum test with continuity correction
+
+data:  x and x2
+W = 1983, p-value = 2.212e-07
+alternative hypothesis: true location shift is greater than 0
+
+> ks.test(x, x2, alternative = "l")
+
+	Exact two-sample Kolmogorov-Smirnov test
+
+data:  x and x2
+D^- = 0.5, p-value = 2.404e-06
+alternative hypothesis: the CDF of x lies below that of y
+
+> 
+> # with ties, example from Schröer and Trenkler (1995)
+> # D = 3 / 7, p = 0.2424242
+> ks.test(c(1, 2, 2, 3, 3), c(1, 2, 3, 3, 4, 5, 6), exact = TRUE)
+
+	Exact two-sample Kolmogorov-Smirnov test
+
+data:  c(1, 2, 2, 3, 3) and c(1, 2, 3, 3, 4, 5, 6)
+D = 0.42857, p-value = 0.2424
+alternative hypothesis: two-sided
+
+> 
+> # formula interface, see ?wilcox.test
+> ks.test(Ozone ~ Month, data = airquality,
++         subset = Month %in% c(5, 8))
+
+	Exact two-sample Kolmogorov-Smirnov test
+
+data:  Ozone by Month
+D = 0.53846, p-value = 0.0006919
+alternative hypothesis: two-sided
+
+> 
+> 
+> 
+> cleanEx()
+> nameEx("ksmooth")
+> ### * ksmooth
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: ksmooth
+> ### Title: Kernel Regression Smoother
+> ### Aliases: ksmooth
+> ### Keywords: smooth
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> with(cars, {
++     plot(speed, dist)
++     lines(ksmooth(speed, dist, "normal", bandwidth = 2), col = 2)
++     lines(ksmooth(speed, dist, "normal", bandwidth = 5), col = 3)
++ })
+> 
+> 
+> 
+> cleanEx()
+> nameEx("lag")
+> ### * lag
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: lag
+> ### Title: Lag a Time Series
+> ### Aliases: lag lag.default
+> ### Keywords: ts
+> 
+> ### ** Examples
+> 
+> lag(ldeaths, 12) # starts one year earlier
+      Jan  Feb  Mar  Apr  May  Jun  Jul  Aug  Sep  Oct  Nov  Dec
+1973 3035 2552 2704 2554 2014 1655 1721 1524 1596 2074 2199 2512
+1974 2933 2889 2938 2497 1870 1726 1607 1545 1396 1787 2076 2837
+1975 2787 3891 3179 2011 1636 1580 1489 1300 1356 1653 2013 2823
+1976 3102 2294 2385 2444 1748 1554 1498 1361 1346 1564 1640 2293
+1977 2815 3137 2679 1969 1870 1633 1529 1366 1357 1570 1535 2491
+1978 3084 2605 2573 2143 1693 1504 1461 1354 1333 1492 1781 1915
+> 
+> 
+> 
+> cleanEx()
+> nameEx("lag.plot")
+> ### * lag.plot
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: lag.plot
+> ### Title: Time Series Lag Plots
+> ### Aliases: lag.plot
+> ### Keywords: hplot ts
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> lag.plot(nhtemp, 8, diag.col = "forest green")
+> lag.plot(nhtemp, 5, main = "Average Temperatures in New Haven")
+> ## ask defaults to TRUE when we have more than one page:
+> lag.plot(nhtemp, 6, layout = c(2,1), asp = NA,
++          main = "New Haven Temperatures", col.main = "blue")
+> 
+> ## Multivariate (but non-stationary! ...)
+> lag.plot(freeny.x, lags = 3)
+> 
+> ## no lines for long series :
+> lag.plot(sqrt(sunspots), set.lags = c(1:4, 9:12), pch = ".", col = "gold")
+> 
+> 
+> 
+> cleanEx()
+> nameEx("line")
+> ### * line
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: line
+> ### Title: Robust Line Fitting
+> ### Aliases: line residuals.tukeyline
+> ### Keywords: robust regression
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> plot(cars)
+> (z <- line(cars))
+
+Call:
+line(cars)
+
+Coefficients:
+[1]  -29.333    4.667
+
+> abline(coef(z))
+> ## Tukey-Anscombe Plot :
+> plot(residuals(z) ~ fitted(z), main = deparse(z$call))
+> 
+> ## Andrew Siegel's pathological 9-point data, y-values multiplied by 3:
+> d.AS <- data.frame(x = c(-4:3, 12), y = 3*c(rep(0,6), -5, 5, 1))
+> cAS <- with(d.AS, t(sapply(1:10,
++                    function(it) line(x,y, iter=it)$coefficients)))
+> dimnames(cAS) <- list(paste("it =", format(1:10)), c("intercept", "slope"))
+> cAS
+        intercept     slope
+it =  1  0.500000  0.500000
+it =  2 -0.250000 -0.250000
+it =  3  0.875000  0.875000
+it =  4 -0.812500 -0.812500
+it =  5  1.718750  1.718750
+it =  6 -2.078125 -2.078125
+it =  7  2.500000  2.500000
+it =  8 -2.083333 -2.083333
+it =  9  2.500000  2.500000
+it = 10 -2.083333 -2.083333
+> ## iterations started to oscillate, repeating iteration 7,8 indefinitely
+> 
+> 
+> 
+> cleanEx()
+> nameEx("lm")
+> ### * lm
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: lm
+> ### Title: Fitting Linear Models
+> ### Aliases: lm print.lm
+> ### Keywords: regression
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> ## Annette Dobson (1990) "An Introduction to Generalized Linear Models".
+> ## Page 9: Plant Weight Data.
+> ctl <- c(4.17,5.58,5.18,6.11,4.50,4.61,5.17,4.53,5.33,5.14)
+> trt <- c(4.81,4.17,4.41,3.59,5.87,3.83,6.03,4.89,4.32,4.69)
+> group <- gl(2, 10, 20, labels = c("Ctl","Trt"))
+> weight <- c(ctl, trt)
+> lm.D9 <- lm(weight ~ group)
+> lm.D90 <- lm(weight ~ group - 1) # omitting intercept
+> opar <- par(mfrow = c(2,2), oma = c(0, 0, 1.1, 0))
+> plot(lm.D9, las = 1)      # Residuals, Fitted, ...
+> par(opar)
+> ## Don't show: 
+> ## model frame :
+> stopifnot(identical(lm(weight ~ group, method = "model.frame"),
++                     model.frame(lm.D9)))
+> ## End(Don't show)
+> ### less simple examples in "See Also" above
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("lm.influence")
+> ### * lm.influence
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: lm.influence
+> ### Title: Regression Diagnostics
+> ### Aliases: lm.influence influence influence.lm influence.glm
+> ### Keywords: regression
+> 
+> ### ** Examples
+> 
+> ## Analysis of the life-cycle savings data
+> ## given in Belsley, Kuh and Welsch.
+> summary(lm.SR <- lm(sr ~ pop15 + pop75 + dpi + ddpi,
++                     data = LifeCycleSavings),
++         correlation = TRUE)
+
+Call:
+lm(formula = sr ~ pop15 + pop75 + dpi + ddpi, data = LifeCycleSavings)
+
+Residuals:
+    Min      1Q  Median      3Q     Max 
+-8.2422 -2.6857 -0.2488  2.4280  9.7509 
+
+Coefficients:
+              Estimate Std. Error t value Pr(>|t|)    
+(Intercept) 28.5660865  7.3545161   3.884 0.000334 ***
+pop15       -0.4611931  0.1446422  -3.189 0.002603 ** 
+pop75       -1.6914977  1.0835989  -1.561 0.125530    
+dpi         -0.0003369  0.0009311  -0.362 0.719173    
+ddpi         0.4096949  0.1961971   2.088 0.042471 *  
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+
+Residual standard error: 3.803 on 45 degrees of freedom
+Multiple R-squared:  0.3385,	Adjusted R-squared:  0.2797 
+F-statistic: 5.756 on 4 and 45 DF,  p-value: 0.0007904
+
+Correlation of Coefficients:
+      (Intercept) pop15 pop75 dpi  
+pop15 -0.98                        
+pop75 -0.81        0.77            
+dpi   -0.17        0.18 -0.37      
+ddpi  -0.19        0.10 -0.05  0.26
+
+> utils::str(lmI <- lm.influence(lm.SR))
+List of 4
+ $ hat         : Named num [1:50] 0.0677 0.1204 0.0875 0.0895 0.0696 ...
+  ..- attr(*, "names")= chr [1:50] "Australia" "Austria" "Belgium" "Bolivia" ...
+ $ coefficients: num [1:50, 1:5] 0.0916 -0.0747 -0.4752 0.0429 0.6604 ...
+  ..- attr(*, "dimnames")=List of 2
+  .. ..$ : chr [1:50] "Australia" "Austria" "Belgium" "Bolivia" ...
+  .. ..$ : chr [1:5] "(Intercept)" "pop15" "pop75" "dpi" ...
+ $ sigma       : Named num [1:50] 3.84 3.84 3.83 3.84 3.81 ...
+  ..- attr(*, "names")= chr [1:50] "Australia" "Austria" "Belgium" "Bolivia" ...
+ $ wt.res      : Named num [1:50] 0.864 0.616 2.219 -0.698 3.553 ...
+  ..- attr(*, "names")= chr [1:50] "Australia" "Austria" "Belgium" "Bolivia" ...
+> 
+> ## For more "user level" examples, use example(influence.measures)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("lm.summaries")
+> ### * lm.summaries
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: lm.summaries
+> ### Title: Accessing Linear Model Fits
+> ### Aliases: family.lm formula.lm residuals.lm labels.lm
+> ### Keywords: regression models
+> 
+> ### ** Examples
+> 
+> ## Don't show: 
+> utils::example("lm", echo = FALSE)
+> ## End(Don't show)
+> ##-- Continuing the  lm(.) example:
+> coef(lm.D90) # the bare coefficients
+groupCtl groupTrt 
+   5.032    4.661 
+> 
+> ## The 2 basic regression diagnostic plots [plot.lm(.) is preferred]
+> plot(resid(lm.D90), fitted(lm.D90)) # Tukey-Anscombe's
+> abline(h = 0, lty = 2, col = "gray")
+> 
+> qqnorm(residuals(lm.D90))
+> 
+> 
+> 
+> cleanEx()
+> nameEx("lmfit")
+> ### * lmfit
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: lm.fit
+> ### Title: Fitter Functions for Linear Models
+> ### Aliases: lm.fit lm.wfit .lm.fit
+> ### Keywords: regression array
+> 
+> ### ** Examples
+> 
+> require(utils)
+> set.seed(129)
+> 
+> n <- 7 ; p <- 2
+> X <- matrix(rnorm(n * p), n, p) # no intercept!
+> y <- rnorm(n)
+> w <- rnorm(n)^2
+> 
+> str(lmw <- lm.wfit(x = X, y = y, w = w))
+List of 9
+ $ coefficients : Named num [1:2] -0.0432 -0.5612
+  ..- attr(*, "names")= chr [1:2] "x1" "x2"
+ $ residuals    : num [1:7] -0.132 -1.308 -0.256 1.468 0.439 ...
+ $ fitted.values: num [1:7] 0.05 -0.5232 0.6151 -0.5766 0.0512 ...
+ $ effects      : Named num [1:7] 0.804 1.722 -0.072 2.047 0.392 ...
+  ..- attr(*, "names")= chr [1:7] "x1" "x2" "" "" ...
+ $ weights      : num [1:7] 0.3195 0.0123 0.0569 1.8154 0.8359 ...
+ $ rank         : int 2
+ $ assign       : NULL
+ $ qr           :List of 5
+  ..$ qr   : num [1:7, 1:2] 3.0953 0.0355 0.106 0.5901 -0.5898 ...
+  ..$ qraux: num [1:2] 1.2 1.02
+  ..$ pivot: int [1:2] 1 2
+  ..$ tol  : num 1e-07
+  ..$ rank : int 2
+  ..- attr(*, "class")= chr "qr"
+ $ df.residual  : int 5
+> 
+> str(lm. <- lm.fit (x = X, y = y))
+List of 8
+ $ coefficients : Named num [1:2] 0.132 -0.553
+  ..- attr(*, "names")= chr [1:2] "x1" "x2"
+ $ residuals    : num [1:7] 0.06433 -1.14333 -0.00708 1.69606 0.09095 ...
+ $ effects      : Named num [1:7] 0.791 1.476 -0.415 1.983 0.133 ...
+  ..- attr(*, "names")= chr [1:7] "x1" "x2" "" "" ...
+ $ rank         : int 2
+ $ fitted.values: num [1:7] -0.146 -0.688 0.366 -0.804 0.399 ...
+ $ assign       : NULL
+ $ qr           :List of 5
+  ..$ qr   : num [1:7, 1:2] 3.321 0.298 0.414 0.408 -0.601 ...
+  ..$ qraux: num [1:2] 1.34 1.32
+  ..$ pivot: int [1:2] 1 2
+  ..$ tol  : num 1e-07
+  ..$ rank : int 2
+  ..- attr(*, "class")= chr "qr"
+ $ df.residual  : int 5
+> ## Don't show: 
+>   ## These are the same calculations at C level, but a parallel BLAS
+>   ## might not do them the same way twice, and if seems serial MKL does not.
+>   lm.. <- .lm.fit(X,y)
+>   lm.w <- .lm.fit(X*sqrt(w), y*sqrt(w))
+>   id <- function(x, y) all.equal(x, y, tolerance = 1e-15, scale = 1)
+>   stopifnot(id(unname(lm.$coef), lm..$coef),
++ 	    id(unname(lmw$coef), lm.w$coef))
+> ## End(Don't show)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("loess")
+> ### * loess
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: loess
+> ### Title: Local Polynomial Regression Fitting
+> ### Aliases: loess
+> ### Keywords: smooth loess
+> 
+> ### ** Examples
+> 
+> cars.lo <- loess(dist ~ speed, cars)
+> predict(cars.lo, data.frame(speed = seq(5, 30, 1)), se = TRUE)
+$fit
+        1         2         3         4         5         6         7         8 
+ 7.797353 10.002308 12.499786 15.281082 18.446568 21.865315 25.517015 29.350386 
+        9        10        11        12        13        14        15        16 
+33.230660 37.167935 41.205226 45.055736 48.355889 49.824812 51.986702 56.461318 
+       17        18        19        20        21        22        23        24 
+61.959729 68.569313 76.316068 85.212121 95.324047        NA        NA        NA 
+       25        26 
+       NA        NA 
+
+$se.fit
+       1        2        3        4        5        6        7        8 
+7.568120 5.945831 4.990827 4.545284 4.308639 4.115049 3.789542 3.716231 
+       9       10       11       12       13       14       15       16 
+3.776947 4.091747 4.709568 4.245427 4.035929 3.753410 4.004705 4.043190 
+      17       18       19       20       21       22       23       24 
+4.026105 4.074664 4.570818 5.954217 8.302014       NA       NA       NA 
+      25       26 
+      NA       NA 
+
+$residual.scale
+[1] 15.29496
+
+$df
+[1] 44.6179
+
+> # to allow extrapolation
+> cars.lo2 <- loess(dist ~ speed, cars,
++   control = loess.control(surface = "direct"))
+> predict(cars.lo2, data.frame(speed = seq(5, 30, 1)), se = TRUE)
+$fit
+         1          2          3          4          5          6          7 
+  7.741006   9.926596  12.442424  15.281082  18.425712  21.865315  25.713413 
+         8          9         10         11         12         13         14 
+ 29.350386  33.230660  37.167935  41.205226  45.781544  48.355889  50.067148 
+        15         16         17         18         19         20         21 
+ 51.986702  56.445263  62.025404  68.569313  76.193111  85.053364  95.300523 
+        22         23         24         25         26 
+106.974661 120.092581 134.665851 150.698545 168.190283 
+
+$se.fit
+        1         2         3         4         5         6         7         8 
+ 7.565991  5.959097  5.012013  4.550013  4.321596  4.119331  3.939804  3.720098 
+        9        10        11        12        13        14        15        16 
+ 3.780877  4.096004  4.714469  4.398936  4.040129  4.184257  4.008873  4.061865 
+       17        18        19        20        21        22        23        24 
+ 4.033998  4.078904  4.584606  5.952480  8.306901 11.601911 15.792480 20.864660 
+       25        26 
+26.823827 33.683999 
+
+$residual.scale
+[1] 15.31087
+
+$df
+[1] 44.55085
+
+> 
+> 
+> 
+> cleanEx()
+> nameEx("logLik")
+> ### * logLik
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: logLik
+> ### Title: Extract Log-Likelihood
+> ### Aliases: logLik logLik.lm
+> ### Keywords: models
+> 
+> ### ** Examples
+> 
+> x <- 1:5
+> lmx <- lm(x ~ 1)
+> logLik(lmx) # using print.logLik() method
+'log Lik.' -8.827561 (df=2)
+> utils::str(logLik(lmx))
+Class 'logLik' : -8.828 (df=2)
+> 
+> ## lm method
+> (fm1 <- lm(rating ~ ., data = attitude))
+
+Call:
+lm(formula = rating ~ ., data = attitude)
+
+Coefficients:
+(Intercept)   complaints   privileges     learning       raises     critical  
+   10.78708      0.61319     -0.07305      0.32033      0.08173      0.03838  
+    advance  
+   -0.21706  
+
+> logLik(fm1)
+'log Lik.' -97.24991 (df=8)
+> logLik(fm1, REML = TRUE)
+'log Lik.' -102.6851 (df=8)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("loglin")
+> ### * loglin
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: loglin
+> ### Title: Fitting Log-Linear Models
+> ### Aliases: loglin
+> ### Keywords: category models
+> 
+> ### ** Examples
+> 
+> ## Model of joint independence of sex from hair and eye color.
+> fm <- loglin(HairEyeColor, list(c(1, 2), c(1, 3), c(2, 3)))
+5 iterations: deviation 0.04093795 
+> fm
+$lrt
+[1] 6.761258
+
+$pearson
+[1] 6.868292
+
+$df
+[1] 9
+
+$margin
+$margin[[1]]
+[1] "Hair" "Eye" 
+
+$margin[[2]]
+[1] "Hair" "Sex" 
+
+$margin[[3]]
+[1] "Eye" "Sex"
+
+
+> 1 - pchisq(fm$lrt, fm$df)
+[1] 0.66196
+> ## Model with no three-factor interactions fits well.
+> 
+> 
+> 
+> cleanEx()
+> nameEx("lowess")
+> ### * lowess
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: lowess
+> ### Title: Scatter Plot Smoothing
+> ### Aliases: lowess
+> ### Keywords: smooth
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> plot(cars, main = "lowess(cars)")
+> lines(lowess(cars), col = 2)
+> lines(lowess(cars, f = .2), col = 3)
+> legend(5, 120, c(paste("f = ", c("2/3", ".2"))), lty = 1, col = 2:3)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("ls.diag")
+> ### * ls.diag
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: ls.diag
+> ### Title: Compute Diagnostics for 'lsfit' Regression Results
+> ### Aliases: ls.diag
+> ### Keywords: regression
+> 
+> ### ** Examples
+> 
+> ## Don't show: 
+> utils::example("lm", echo = FALSE)
+> ## End(Don't show)
+> ##-- Using the same data as the lm(.) example:
+> lsD9 <- lsfit(x = as.numeric(gl(2, 10, 20)), y = weight)
+> dlsD9 <- ls.diag(lsD9)
+> abs(1 - sum(dlsD9$hat) / 2) < 10*.Machine$double.eps # sum(h.ii) = p
+[1] TRUE
+> plot(dlsD9$hat, dlsD9$stud.res, xlim = c(0, 0.11))
+> abline(h = 0, lty = 2, col = "lightgray")
+> 
+> 
+> 
+> cleanEx()
+> nameEx("lsfit")
+> ### * lsfit
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: lsfit
+> ### Title: Find the Least Squares Fit
+> ### Aliases: lsfit
+> ### Keywords: regression
+> 
+> ### ** Examples
+> 
+> ## Don't show: 
+> utils::example("lm", echo = FALSE)
+> ## End(Don't show)
+> ##-- Using the same data as the lm(.) example:
+> lsD9 <- lsfit(x = unclass(gl(2, 10)), y = weight)
+> ls.print(lsD9)
+Residual Standard Error=0.6964
+R-Square=0.0731
+F-statistic (df=1, 18)=1.4191
+p-value=0.249
+
+          Estimate Std.Err t-value Pr(>|t|)
+Intercept    5.403  0.4924 10.9723    0.000
+X           -0.371  0.3114 -1.1913    0.249
+
+
+> 
+> 
+> 
+> cleanEx()
+> nameEx("mad")
+> ### * mad
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: mad
+> ### Title: Median Absolute Deviation
+> ### Aliases: mad
+> ### Keywords: univar robust
+> 
+> ### ** Examples
+> 
+> mad(c(1:9))
+[1] 2.9652
+> print(mad(c(1:9),     constant = 1)) ==
++       mad(c(1:8, 100), constant = 1)       # = 2 ; TRUE
+[1] 2
+[1] TRUE
+> x <- c(1,2,3,5,7,8)
+> sort(abs(x - median(x)))
+[1] 1 1 2 3 3 4
+> c(mad(x, constant = 1),
++   mad(x, constant = 1, low = TRUE),
++   mad(x, constant = 1, high = TRUE))
+[1] 2.5 2.0 3.0
+> 
+> 
+> 
+> cleanEx()
+> nameEx("mahalanobis")
+> ### * mahalanobis
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: mahalanobis
+> ### Title: Mahalanobis Distance
+> ### Aliases: mahalanobis
+> ### Keywords: multivariate
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> ma <- cbind(1:6, 1:3)
+> (S <-  var(ma))
+     [,1] [,2]
+[1,]  3.5  0.8
+[2,]  0.8  0.8
+> mahalanobis(c(0, 0), 1:2, S)
+[1] 5.37037
+> 
+> x <- matrix(rnorm(100*3), ncol = 3)
+> stopifnot(mahalanobis(x, 0, diag(ncol(x))) == rowSums(x*x))
+>         ##- Here, D^2 = usual squared Euclidean distances
+> 
+> Sx <- cov(x)
+> D2 <- mahalanobis(x, colMeans(x), Sx)
+> plot(density(D2, bw = 0.5),
++      main="Squared Mahalanobis distances, n=100, p=3") ; rug(D2)
+> qqplot(qchisq(ppoints(100), df = 3), D2,
++        main = expression("Q-Q plot of Mahalanobis" * ~D^2 *
++                          " vs. quantiles of" * ~ chi[3]^2))
+> abline(0, 1, col = 'gray')
+> 
+> 
+> 
+> cleanEx()
+> nameEx("make.link")
+> ### * make.link
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: make.link
+> ### Title: Create a Link for GLM Families
+> ### Aliases: make.link
+> ### Keywords: models
+> 
+> ### ** Examples
+> 
+> utils::str(make.link("logit"))
+List of 5
+ $ linkfun :function (mu)  
+ $ linkinv :function (eta)  
+ $ mu.eta  :function (eta)  
+ $ valideta:function (eta)  
+ $ name    : chr "logit"
+ - attr(*, "class")= chr "link-glm"
+> 
+> 
+> 
+> cleanEx()
+> nameEx("makepredictcall")
+> ### * makepredictcall
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: makepredictcall
+> ### Title: Utility Function for Safe Prediction
+> ### Aliases: makepredictcall makepredictcall.default SafePrediction
+> ### Keywords: models
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> ## using poly: this did not work in R < 1.5.0
+> fm <- lm(weight ~ poly(height, 2), data = women)
+> plot(women, xlab = "Height (in)", ylab = "Weight (lb)")
+> ht <- seq(57, 73, length.out = 200)
+> nD <- data.frame(height = ht)
+> pfm <- predict(fm, nD)
+> lines(ht, pfm)
+> pf2 <- predict(update(fm, ~ stats::poly(height, 2)), nD)
+> stopifnot(all.equal(pfm, pf2)) ## was off (rel.diff. 0.0766) in R <= 3.5.0
+> 
+> ## see also example(cars)
+> 
+> ## see bs and ns for spline examples.
+> 
+> 
+> 
+> cleanEx()
+> nameEx("manova")
+> ### * manova
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: manova
+> ### Title: Multivariate Analysis of Variance
+> ### Aliases: manova
+> ### Keywords: models
+> 
+> ### ** Examples
+> 
+> ## Set orthogonal contrasts.
+> op <- options(contrasts = c("contr.helmert", "contr.poly"))
+> 
+> ## Fake a 2nd response variable
+> npk2 <- within(npk, foo <- rnorm(24))
+> ( npk2.aov <- manova(cbind(yield, foo) ~ block + N*P*K, npk2) )
+Call:
+   manova(cbind(yield, foo) ~ block + N * P * K, npk2)
+
+Terms:
+                   block        N        P        K      N:P      N:K      P:K
+yield           343.2950 189.2817   8.4017  95.2017  21.2817  33.1350   0.4817
+foo               2.9548   0.0223   1.3807   0.0097   2.7585   0.9724   5.5258
+Deg. of Freedom        5        1        1        1        1        1        1
+                Residuals
+yield            185.2867
+foo                7.8286
+Deg. of Freedom        12
+
+Residual standard errors: 3.929447 0.8077039
+1 out of 13 effects not estimable
+Estimated effects are balanced
+> summary(npk2.aov)
+          Df  Pillai approx F num Df den Df  Pr(>F)  
+block      5 0.89478   1.9430     10     24 0.08861 .
+N          1 0.50586   5.6304      2     11 0.02071 *
+P          1 0.17088   1.1336      2     11 0.35677  
+K          1 0.34430   2.8879      2     11 0.09815 .
+N:P        1 0.30158   2.3750      2     11 0.13888  
+N:K        1 0.21654   1.5201      2     11 0.26127  
+P:K        1 0.41992   3.9814      2     11 0.05003 .
+Residuals 12                                         
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+> 
+> ( npk2.aovE <- manova(cbind(yield, foo) ~  N*P*K + Error(block), npk2) )
+
+Call:
+manova(cbind(yield, foo) ~ N * P * K + Error(block), npk2)
+
+Grand Means:
+     yield        foo 
+54.8750000  0.1498669 
+
+Stratum 1: block
+
+Terms:
+                    N:P:K Residuals
+yield            37.00167 306.29333
+foo               0.06988   2.88496
+Deg. of Freedom         1         4
+
+Residual standard errors: 8.750619 0.8492579
+Estimated effects are balanced
+
+Stratum 2: Within
+
+Terms:
+                        N         P         K       N:P       N:K       P:K
+yield           189.28167   8.40167  95.20167  21.28167  33.13500   0.48167
+foo               0.02235   1.38066   0.00966   2.75852   0.97240   5.52584
+Deg. of Freedom         1         1         1         1         1         1
+                Residuals
+yield           185.28667
+foo               7.82863
+Deg. of Freedom        12
+
+Residual standard errors: 3.929447 0.8077039
+Estimated effects are balanced
+> summary(npk2.aovE)
+
+Error: block
+          Df  Pillai approx F num Df den Df Pr(>F)
+N:P:K      1 0.20004   0.3751      2      3 0.7155
+Residuals  4                                      
+
+Error: Within
+          Df  Pillai approx F num Df den Df  Pr(>F)  
+N          1 0.50586   5.6304      2     11 0.02071 *
+P          1 0.17088   1.1336      2     11 0.35677  
+K          1 0.34430   2.8879      2     11 0.09815 .
+N:P        1 0.30158   2.3750      2     11 0.13888  
+N:K        1 0.21654   1.5201      2     11 0.26127  
+P:K        1 0.41992   3.9814      2     11 0.05003 .
+Residuals 12                                         
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+> 
+> 
+> 
+> base::options(contrasts = c(unordered = "contr.treatment",ordered = "contr.poly"))
+> cleanEx()
+> nameEx("mantelhaen.test")
+> ### * mantelhaen.test
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: mantelhaen.test
+> ### Title: Cochran-Mantel-Haenszel Chi-Squared Test for Count Data
+> ### Aliases: mantelhaen.test
+> ### Keywords: htest
+> 
+> ### ** Examples
+> 
+> ## Agresti (1990), pages 231--237, Penicillin and Rabbits
+> ## Investigation of the effectiveness of immediately injected or 1.5
+> ##  hours delayed penicillin in protecting rabbits against a lethal
+> ##  injection with beta-hemolytic streptococci.
+> Rabbits <-
++ array(c(0, 0, 6, 5,
++         3, 0, 3, 6,
++         6, 2, 0, 4,
++         5, 6, 1, 0,
++         2, 5, 0, 0),
++       dim = c(2, 2, 5),
++       dimnames = list(
++           Delay = c("None", "1.5h"),
++           Response = c("Cured", "Died"),
++           Penicillin.Level = c("1/8", "1/4", "1/2", "1", "4")))
+> Rabbits
+, , Penicillin.Level = 1/8
+
+      Response
+Delay  Cured Died
+  None     0    6
+  1.5h     0    5
+
+, , Penicillin.Level = 1/4
+
+      Response
+Delay  Cured Died
+  None     3    3
+  1.5h     0    6
+
+, , Penicillin.Level = 1/2
+
+      Response
+Delay  Cured Died
+  None     6    0
+  1.5h     2    4
+
+, , Penicillin.Level = 1
+
+      Response
+Delay  Cured Died
+  None     5    1
+  1.5h     6    0
+
+, , Penicillin.Level = 4
+
+      Response
+Delay  Cured Died
+  None     2    0
+  1.5h     5    0
+
+> ## Classical Mantel-Haenszel test
+> mantelhaen.test(Rabbits)
+
+	Mantel-Haenszel chi-squared test with continuity correction
+
+data:  Rabbits
+Mantel-Haenszel X-squared = 3.9286, df = 1, p-value = 0.04747
+alternative hypothesis: true common odds ratio is not equal to 1
+95 percent confidence interval:
+  1.026713 47.725133
+sample estimates:
+common odds ratio 
+                7 
+
+> ## => p = 0.047, some evidence for higher cure rate of immediate
+> ##               injection
+> ## Exact conditional test
+> mantelhaen.test(Rabbits, exact = TRUE)
+
+	Exact conditional test of independence in 2 x 2 x k tables
+
+data:  Rabbits
+S = 16, p-value = 0.03994
+alternative hypothesis: true common odds ratio is not equal to 1
+95 percent confidence interval:
+   1.077401 529.837399
+sample estimates:
+common odds ratio 
+         10.36102 
+
+> ## => p - 0.040
+> ## Exact conditional test for one-sided alternative of a higher
+> ## cure rate for immediate injection
+> mantelhaen.test(Rabbits, exact = TRUE, alternative = "greater")
+
+	Exact conditional test of independence in 2 x 2 x k tables
+
+data:  Rabbits
+S = 16, p-value = 0.01997
+alternative hypothesis: true common odds ratio is greater than 1
+95 percent confidence interval:
+ 1.384239      Inf
+sample estimates:
+common odds ratio 
+         10.36102 
+
+> ## => p = 0.020
+> 
+> ## UC Berkeley Student Admissions
+> mantelhaen.test(UCBAdmissions)
+
+	Mantel-Haenszel chi-squared test with continuity correction
+
+data:  UCBAdmissions
+Mantel-Haenszel X-squared = 1.4269, df = 1, p-value = 0.2323
+alternative hypothesis: true common odds ratio is not equal to 1
+95 percent confidence interval:
+ 0.7719074 1.0603298
+sample estimates:
+common odds ratio 
+        0.9046968 
+
+> ## No evidence for association between admission and gender
+> ## when adjusted for department.  However,
+> apply(UCBAdmissions, 3, function(x) (x[1,1]*x[2,2])/(x[1,2]*x[2,1]))
+        A         B         C         D         E         F 
+0.3492120 0.8025007 1.1330596 0.9212838 1.2216312 0.8278727 
+> ## This suggests that the assumption of homogeneous (conditional)
+> ## odds ratios may be violated.  The traditional approach would be
+> ## using the Woolf test for interaction:
+> woolf <- function(x) {
++   x <- x + 1 / 2
++   k <- dim(x)[3]
++   or <- apply(x, 3, function(x) (x[1,1]*x[2,2])/(x[1,2]*x[2,1]))
++   w <-  apply(x, 3, function(x) 1 / sum(1 / x))
++   1 - pchisq(sum(w * (log(or) - weighted.mean(log(or), w)) ^ 2), k - 1)
++ }
+> woolf(UCBAdmissions)
+[1] 0.0034272
+> ## => p = 0.003, indicating that there is significant heterogeneity.
+> ## (And hence the Mantel-Haenszel test cannot be used.)
+> 
+> ## Agresti (2002), p. 287f and p. 297.
+> ## Job Satisfaction example.
+> Satisfaction <-
++     as.table(array(c(1, 2, 0, 0, 3, 3, 1, 2,
++                      11, 17, 8, 4, 2, 3, 5, 2,
++                      1, 0, 0, 0, 1, 3, 0, 1,
++                      2, 5, 7, 9, 1, 1, 3, 6),
++                    dim = c(4, 4, 2),
++                    dimnames =
++                    list(Income =
++                         c("<5000", "5000-15000",
++                           "15000-25000", ">25000"),
++                         "Job Satisfaction" =
++                         c("V_D", "L_S", "M_S", "V_S"),
++                         Gender = c("Female", "Male"))))
+> ## (Satisfaction categories abbreviated for convenience.)
+> ftable(. ~ Gender + Income, Satisfaction)
+                   Job Satisfaction V_D L_S M_S V_S
+Gender Income                                      
+Female <5000                          1   3  11   2
+       5000-15000                     2   3  17   3
+       15000-25000                    0   1   8   5
+       >25000                         0   2   4   2
+Male   <5000                          1   1   2   1
+       5000-15000                     0   3   5   1
+       15000-25000                    0   0   7   3
+       >25000                         0   1   9   6
+> ## Table 7.8 in Agresti (2002), p. 288.
+> mantelhaen.test(Satisfaction)
+
+	Cochran-Mantel-Haenszel test
+
+data:  Satisfaction
+Cochran-Mantel-Haenszel M^2 = 10.2, df = 9, p-value = 0.3345
+
+> ## See Table 7.12 in Agresti (2002), p. 297.
+> 
+> 
+> 
+> cleanEx()
+> nameEx("mauchly.test")
+> ### * mauchly.test
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: mauchly.test
+> ### Title: Mauchly's Test of Sphericity
+> ### Aliases: mauchly.test mauchly.test.SSD mauchly.test.mlm
+> ### Keywords: htest models multivariate
+> 
+> ### ** Examples
+> 
+> utils::example(SSD) # Brings in the mlmfit and reacttime objects
+
+SSD> # Lifted from Baron+Li:
+SSD> # "Notes on the use of R for psychology experiments and questionnaires"
+SSD> # Maxwell and Delaney, p. 497
+SSD> reacttime <- matrix(c(
+SSD+ 420, 420, 480, 480, 600, 780,
+SSD+ 420, 480, 480, 360, 480, 600,
+SSD+ 480, 480, 540, 660, 780, 780,
+SSD+ 420, 540, 540, 480, 780, 900,
+SSD+ 540, 660, 540, 480, 660, 720,
+SSD+ 360, 420, 360, 360, 480, 540,
+SSD+ 480, 480, 600, 540, 720, 840,
+SSD+ 480, 600, 660, 540, 720, 900,
+SSD+ 540, 600, 540, 480, 720, 780,
+SSD+ 480, 420, 540, 540, 660, 780),
+SSD+ ncol = 6, byrow = TRUE,
+SSD+ dimnames = list(subj = 1:10,
+SSD+               cond = c("deg0NA", "deg4NA", "deg8NA",
+SSD+                        "deg0NP", "deg4NP", "deg8NP")))
+
+SSD> mlmfit <- lm(reacttime ~ 1)
+
+SSD> SSD(mlmfit)
+$SSD
+        cond
+cond     deg0NA deg4NA deg8NA deg0NP deg4NP deg8NP
+  deg0NA  29160  30600  26640  23760  32400  25560
+  deg4NA  30600  66600  32400   7200  36000  30600
+  deg8NA  26640  32400  56160  41040  57600  69840
+  deg0NP  23760   7200  41040  70560  72000  63360
+  deg4NP  32400  36000  57600  72000 108000 100800
+  deg8NP  25560  30600  69840  63360 100800 122760
+
+$call
+lm(formula = reacttime ~ 1)
+
+$df
+[1] 9
+
+attr(,"class")
+[1] "SSD"
+
+SSD> estVar(mlmfit)
+        cond
+cond     deg0NA deg4NA deg8NA deg0NP deg4NP deg8NP
+  deg0NA   3240   3400   2960   2640   3600   2840
+  deg4NA   3400   7400   3600    800   4000   3400
+  deg8NA   2960   3600   6240   4560   6400   7760
+  deg0NP   2640    800   4560   7840   8000   7040
+  deg4NP   3600   4000   6400   8000  12000  11200
+  deg8NP   2840   3400   7760   7040  11200  13640
+> 
+> ### traditional test of intrasubj. contrasts
+> mauchly.test(mlmfit, X = ~1)
+
+	Mauchly's test of sphericity
+	Contrasts orthogonal to
+	~1
+
+
+data:  SSD matrix from lm(formula = reacttime ~ 1)
+W = 0.031084, p-value = 0.04765
+
+> 
+> ### tests using intra-subject 3x2 design
+> idata <- data.frame(deg = gl(3, 1, 6, labels = c(0,4,8)),
++                     noise = gl(2, 3, 6, labels = c("A","P")))
+> mauchly.test(mlmfit, X = ~ deg + noise, idata = idata)
+
+	Mauchly's test of sphericity
+	Contrasts orthogonal to
+	~deg + noise
+
+
+data:  SSD matrix from lm(formula = reacttime ~ 1)
+W = 0.89378, p-value = 0.6381
+
+> mauchly.test(mlmfit, M = ~ deg + noise, X = ~ noise, idata = idata)
+
+	Mauchly's test of sphericity
+	Contrasts orthogonal to
+	~noise
+
+	Contrasts spanned by
+	~deg + noise
+
+
+data:  SSD matrix from lm(formula = reacttime ~ 1)
+W = 0.96011, p-value = 0.8497
+
+> 
+> 
+> 
+> cleanEx()
+> nameEx("mcnemar.test")
+> ### * mcnemar.test
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: mcnemar.test
+> ### Title: McNemar's Chi-squared Test for Count Data
+> ### Aliases: mcnemar.test
+> ### Keywords: htest
+> 
+> ### ** Examples
+> 
+> ## Agresti (1990), p. 350.
+> ## Presidential Approval Ratings.
+> ##  Approval of the President's performance in office in two surveys,
+> ##  one month apart, for a random sample of 1600 voting-age Americans.
+> Performance <-
++ matrix(c(794, 86, 150, 570),
++        nrow = 2,
++        dimnames = list("1st Survey" = c("Approve", "Disapprove"),
++                        "2nd Survey" = c("Approve", "Disapprove")))
+> Performance
+            2nd Survey
+1st Survey   Approve Disapprove
+  Approve        794        150
+  Disapprove      86        570
+> mcnemar.test(Performance)
+
+	McNemar's Chi-squared test with continuity correction
+
+data:  Performance
+McNemar's chi-squared = 16.818, df = 1, p-value = 4.115e-05
+
+> ## => significant change (in fact, drop) in approval ratings
+> 
+> 
+> 
+> cleanEx()
+> nameEx("median")
+> ### * median
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: median
+> ### Title: Median Value
+> ### Aliases: median median.default
+> ### Keywords: univar robust
+> 
+> ### ** Examples
+> 
+> median(1:4)                # = 2.5 [even number]
+[1] 2.5
+> median(c(1:3, 100, 1000))  # = 3 [odd, robust]
+[1] 3
+> 
+> 
+> 
+> cleanEx()
+> nameEx("medpolish")
+> ### * medpolish
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: medpolish
+> ### Title: Median Polish (Robust Twoway Decomposition) of a Matrix
+> ### Aliases: medpolish
+> ### Keywords: robust
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> ## Deaths from sport parachuting;  from ABC of EDA, p.224:
+> deaths <-
++     rbind(c(14,15,14),
++           c( 7, 4, 7),
++           c( 8, 2,10),
++           c(15, 9,10),
++           c( 0, 2, 0))
+> dimnames(deaths) <- list(c("1-24", "25-74", "75-199", "200++", "NA"),
++                          paste(1973:1975))
+> deaths
+       1973 1974 1975
+1-24     14   15   14
+25-74     7    4    7
+75-199    8    2   10
+200++    15    9   10
+NA        0    2    0
+> (med.d <- medpolish(deaths))
+1: 19
+Final: 19
+
+Median Polish Results (Dataset: "deaths")
+
+Overall: 8
+
+Row Effects:
+  1-24  25-74 75-199  200++     NA 
+     6     -1      0      2     -8 
+
+Column Effects:
+1973 1974 1975 
+   0   -1    0 
+
+Residuals:
+       1973 1974 1975
+1-24      0    2    0
+25-74     0   -2    0
+75-199    0   -5    2
+200++     5    0    0
+NA        0    3    0
+
+> plot(med.d)
+> ## Check decomposition:
+> all(deaths ==
++     med.d$overall + outer(med.d$row,med.d$col, `+`) + med.d$residuals)
+[1] TRUE
+> 
+> 
+> 
+> cleanEx()
+> nameEx("model.extract")
+> ### * model.extract
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: model.extract
+> ### Title: Extract Components from a Model Frame
+> ### Aliases: model.extract model.offset model.response model.weights
+> ### Keywords: manip programming models
+> 
+> ### ** Examples
+> 
+> a <- model.frame(cbind(ncases,ncontrols) ~ agegp + tobgp + alcgp, data = esoph)
+> model.extract(a, "response")
+   ncases ncontrols
+1       0        40
+2       0        10
+3       0         6
+4       0         5
+5       0        27
+6       0         7
+7       0         4
+8       0         7
+9       0         2
+10      0         1
+11      0         2
+12      0         1
+13      1         0
+14      0         1
+15      0         2
+16      0        60
+17      1        13
+18      0         7
+19      0         8
+20      0        35
+21      3        20
+22      1        13
+23      0         8
+24      0        11
+25      0         6
+26      0         2
+27      0         1
+28      2         1
+29      0         3
+30      2         2
+31      1        45
+32      0        18
+33      0        10
+34      0         4
+35      6        32
+36      4        17
+37      5        10
+38      5         2
+39      3        13
+40      6         8
+41      1         4
+42      2         2
+43      4         0
+44      3         1
+45      2         1
+46      4         0
+47      2        47
+48      3        19
+49      3         9
+50      4         2
+51      9        31
+52      6        15
+53      4        13
+54      3         3
+55      9         9
+56      8         7
+57      3         3
+58      4         0
+59      5         5
+60      6         1
+61      2         1
+62      5         1
+63      5        43
+64      4        10
+65      2         5
+66      0         2
+67     17        17
+68      3         7
+69      5         4
+70      6         7
+71      4         8
+72      2         1
+73      1         0
+74      3         1
+75      1         1
+76      1         0
+77      1         0
+78      1        17
+79      2         4
+80      1         2
+81      2         3
+82      1         2
+83      0         3
+84      1         0
+85      1         0
+86      1         0
+87      2         0
+88      1         0
+> stopifnot(model.extract(a, "response") == model.response(a))
+> 
+> a <- model.frame(ncases/(ncases+ncontrols) ~ agegp + tobgp + alcgp,
++                  data = esoph, weights = ncases+ncontrols)
+> model.response(a)
+         1          2          3          4          5          6          7 
+0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 
+         8          9         10         11         12         13         14 
+0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 1.00000000 0.00000000 
+        15         16         17         18         19         20         21 
+0.00000000 0.00000000 0.07142857 0.00000000 0.00000000 0.00000000 0.13043478 
+        22         23         24         25         26         27         28 
+0.07142857 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.66666667 
+        29         30         31         32         33         34         35 
+0.00000000 0.50000000 0.02173913 0.00000000 0.00000000 0.00000000 0.15789474 
+        36         37         38         39         40         41         42 
+0.19047619 0.33333333 0.71428571 0.18750000 0.42857143 0.20000000 0.50000000 
+        43         44         45         46         47         48         49 
+1.00000000 0.75000000 0.66666667 1.00000000 0.04081633 0.13636364 0.25000000 
+        50         51         52         53         54         55         56 
+0.66666667 0.22500000 0.28571429 0.23529412 0.50000000 0.50000000 0.53333333 
+        57         58         59         60         61         62         63 
+0.50000000 1.00000000 0.50000000 0.85714286 0.66666667 0.83333333 0.10416667 
+        64         65         66         67         68         69         70 
+0.28571429 0.28571429 0.00000000 0.50000000 0.30000000 0.55555556 0.46153846 
+        71         72         73         74         75         76         77 
+0.33333333 0.66666667 1.00000000 0.75000000 0.50000000 1.00000000 1.00000000 
+        78         79         80         81         82         83         84 
+0.05555556 0.33333333 0.33333333 0.40000000 0.33333333 0.00000000 1.00000000 
+        85         86         87         88 
+1.00000000 1.00000000 1.00000000 1.00000000 
+> (mw <- model.extract(a, "weights"))
+ 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 
+40 10  6  5 27  7  4  7  2  1  2  1  1  1  2 60 14  7  8 35 23 14  8 11  6  2 
+27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 
+ 1  3  3  4 46 18 10  4 38 21 15  7 16 14  5  4  4  4  3  4 49 22 12  6 40 21 
+53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 
+17  6 18 15  6  4 10  7  3  6 48 14  7  2 34 10  9 13 12  3  1  4  2  1  1 18 
+79 80 81 82 83 84 85 86 87 88 
+ 6  3  5  3  3  1  1  1  2  1 
+> stopifnot(identical(unname(mw), model.weights(a)))
+> 
+> a <- model.frame(cbind(ncases,ncontrols) ~ agegp,
++                  something = tobgp, data = esoph)
+> names(a)
+[1] "cbind(ncases, ncontrols)" "agegp"                   
+[3] "(something)"             
+> stopifnot(model.extract(a, "something") == esoph$tobgp)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("model.frame")
+> ### * model.frame
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: model.frame
+> ### Title: Extracting the Model Frame from a Formula or Fit
+> ### Aliases: model.frame model.frame.default model.frame.lm model.frame.glm
+> ###   model.frame.aovlist get_all_vars
+> ### Keywords: models
+> 
+> ### ** Examples
+> 
+> data.class(model.frame(dist ~ speed, data = cars))
+[1] "data.frame"
+> 
+> ## get_all_vars(): new var.s are recycled (iff length matches: 50 = 2*25)
+> ncars <- get_all_vars(sqrt(dist) ~ I(speed/2), data = cars, newVar = 2:3)
+> stopifnot(is.data.frame(ncars),
++           identical(cars, ncars[,names(cars)]),
++           ncol(ncars) == ncol(cars) + 1)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("model.matrix")
+> ### * model.matrix
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: model.matrix
+> ### Title: Construct Design Matrices
+> ### Aliases: model.matrix model.matrix.default model.matrix.lm
+> ### Keywords: models
+> 
+> ### ** Examples
+> 
+> ff <- log(Volume) ~ log(Height) + log(Girth)
+> utils::str(m <- model.frame(ff, trees))
+'data.frame':	31 obs. of  3 variables:
+ $ log(Volume): num  2.33 2.33 2.32 2.8 2.93 ...
+ $ log(Height): num  4.25 4.17 4.14 4.28 4.39 ...
+ $ log(Girth) : num  2.12 2.15 2.17 2.35 2.37 ...
+ - attr(*, "terms")=Classes 'terms', 'formula'  language log(Volume) ~ log(Height) + log(Girth)
+  .. ..- attr(*, "variables")= language list(log(Volume), log(Height), log(Girth))
+  .. ..- attr(*, "factors")= int [1:3, 1:2] 0 1 0 0 0 1
+  .. .. ..- attr(*, "dimnames")=List of 2
+  .. .. .. ..$ : chr [1:3] "log(Volume)" "log(Height)" "log(Girth)"
+  .. .. .. ..$ : chr [1:2] "log(Height)" "log(Girth)"
+  .. ..- attr(*, "term.labels")= chr [1:2] "log(Height)" "log(Girth)"
+  .. ..- attr(*, "order")= int [1:2] 1 1
+  .. ..- attr(*, "intercept")= int 1
+  .. ..- attr(*, "response")= int 1
+  .. ..- attr(*, ".Environment")=<environment: R_GlobalEnv> 
+  .. ..- attr(*, "predvars")= language list(log(Volume), log(Height), log(Girth))
+  .. ..- attr(*, "dataClasses")= Named chr [1:3] "numeric" "numeric" "numeric"
+  .. .. ..- attr(*, "names")= chr [1:3] "log(Volume)" "log(Height)" "log(Girth)"
+> mat <- model.matrix(ff, m)
+> 
+> dd <- data.frame(a = gl(3,4), b = gl(4,1,12)) # balanced 2-way
+> options("contrasts") # typically 'treatment' (for unordered factors)
+$contrasts
+        unordered           ordered 
+"contr.treatment"      "contr.poly" 
+
+> model.matrix(~ a + b, dd)
+   (Intercept) a2 a3 b2 b3 b4
+1            1  0  0  0  0  0
+2            1  0  0  1  0  0
+3            1  0  0  0  1  0
+4            1  0  0  0  0  1
+5            1  1  0  0  0  0
+6            1  1  0  1  0  0
+7            1  1  0  0  1  0
+8            1  1  0  0  0  1
+9            1  0  1  0  0  0
+10           1  0  1  1  0  0
+11           1  0  1  0  1  0
+12           1  0  1  0  0  1
+attr(,"assign")
+[1] 0 1 1 2 2 2
+attr(,"contrasts")
+attr(,"contrasts")$a
+[1] "contr.treatment"
+
+attr(,"contrasts")$b
+[1] "contr.treatment"
+
+> model.matrix(~ a + b, dd, contrasts.arg = list(a = "contr.sum"))
+   (Intercept) a1 a2 b2 b3 b4
+1            1  1  0  0  0  0
+2            1  1  0  1  0  0
+3            1  1  0  0  1  0
+4            1  1  0  0  0  1
+5            1  0  1  0  0  0
+6            1  0  1  1  0  0
+7            1  0  1  0  1  0
+8            1  0  1  0  0  1
+9            1 -1 -1  0  0  0
+10           1 -1 -1  1  0  0
+11           1 -1 -1  0  1  0
+12           1 -1 -1  0  0  1
+attr(,"assign")
+[1] 0 1 1 2 2 2
+attr(,"contrasts")
+attr(,"contrasts")$a
+[1] "contr.sum"
+
+attr(,"contrasts")$b
+[1] "contr.treatment"
+
+> model.matrix(~ a + b, dd, contrasts.arg = list(a = "contr.sum", b = contr.poly))
+   (Intercept) a1 a2        b.L  b.Q        b.C
+1            1  1  0 -0.6708204  0.5 -0.2236068
+2            1  1  0 -0.2236068 -0.5  0.6708204
+3            1  1  0  0.2236068 -0.5 -0.6708204
+4            1  1  0  0.6708204  0.5  0.2236068
+5            1  0  1 -0.6708204  0.5 -0.2236068
+6            1  0  1 -0.2236068 -0.5  0.6708204
+7            1  0  1  0.2236068 -0.5 -0.6708204
+8            1  0  1  0.6708204  0.5  0.2236068
+9            1 -1 -1 -0.6708204  0.5 -0.2236068
+10           1 -1 -1 -0.2236068 -0.5  0.6708204
+11           1 -1 -1  0.2236068 -0.5 -0.6708204
+12           1 -1 -1  0.6708204  0.5  0.2236068
+attr(,"assign")
+[1] 0 1 1 2 2 2
+attr(,"contrasts")
+attr(,"contrasts")$a
+[1] "contr.sum"
+
+attr(,"contrasts")$b
+          .L   .Q         .C
+1 -0.6708204  0.5 -0.2236068
+2 -0.2236068 -0.5  0.6708204
+3  0.2236068 -0.5 -0.6708204
+4  0.6708204  0.5  0.2236068
+
+> m.orth <- model.matrix(~a+b, dd, contrasts.arg = list(a = "contr.helmert"))
+> crossprod(m.orth) # m.orth is  ALMOST  orthogonal
+            (Intercept) a1 a2 b2 b3 b4
+(Intercept)          12  0  0  3  3  3
+a1                    0  8  0  0  0  0
+a2                    0  0 24  0  0  0
+b2                    3  0  0  3  0  0
+b3                    3  0  0  0  3  0
+b4                    3  0  0  0  0  3
+> # invalid contrasts.. ignored with a warning:
+> stopifnot(identical(
++    model.matrix(~ a + b, dd),
++    model.matrix(~ a + b, dd, contrasts.arg = "contr.FOO")))
+Warning in model.matrix.default(~a + b, dd, contrasts.arg = "contr.FOO") :
+  non-list contrasts argument ignored
+> 
+> 
+> 
+> cleanEx()
+> nameEx("model.tables")
+> ### * model.tables
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: model.tables
+> ### Title: Compute Tables of Results from an Aov Model Fit
+> ### Aliases: model.tables model.tables.aov model.tables.aovlist
+> ### Keywords: models
+> 
+> ### ** Examples
+> 
+> 
+> cleanEx()
+> nameEx("monthplot")
+> ### * monthplot
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: monthplot
+> ### Title: Plot a Seasonal or other Subseries from a Time Series
+> ### Aliases: monthplot monthplot.default monthplot.ts monthplot.stl
+> ###   monthplot.StructTS
+> ### Keywords: hplot ts
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> ## The CO2 data
+> fit <- stl(log(co2), s.window = 20, t.window = 20)
+> plot(fit)
+> op <- par(mfrow = c(2,2))
+> monthplot(co2, ylab = "data", cex.axis = 0.8)
+> monthplot(fit, choice = "seasonal", cex.axis = 0.8)
+> monthplot(fit, choice = "trend", cex.axis = 0.8)
+> monthplot(fit, choice = "remainder", type = "h", cex.axis = 0.8)
+> par(op)
+> 
+> ## The CO2 data, grouped quarterly
+> quarter <- (cycle(co2) - 1) %/% 3
+> monthplot(co2, phase = quarter)
+> 
+> ## see also JohnsonJohnson
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("mood.test")
+> ### * mood.test
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: mood.test
+> ### Title: Mood Two-Sample Test of Scale
+> ### Aliases: mood.test mood.test.default mood.test.formula
+> ### Keywords: htest
+> 
+> ### ** Examples
+> 
+> ## Same data as for the Ansari-Bradley test:
+> ## Serum iron determination using Hyland control sera
+> ramsay <- c(111, 107, 100, 99, 102, 106, 109, 108, 104, 99,
++             101, 96, 97, 102, 107, 113, 116, 113, 110, 98)
+> jung.parekh <- c(107, 108, 106, 98, 105, 103, 110, 105, 104,
++             100, 96, 108, 103, 104, 114, 114, 113, 108, 106, 99)
+> mood.test(ramsay, jung.parekh)
+
+	Mood two-sample test of scale
+
+data:  ramsay and jung.parekh
+Z = 1.0371, p-value = 0.2997
+alternative hypothesis: two.sided
+
+> ## Compare this to ansari.test(ramsay, jung.parekh)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("na.action")
+> ### * na.action
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: na.action
+> ### Title: NA Action
+> ### Aliases: na.action na.action.default
+> ### Keywords: NA methods
+> 
+> ### ** Examples
+> 
+> na.action(na.omit(c(1, NA)))
+[1] 2
+attr(,"class")
+[1] "omit"
+> 
+> 
+> 
+> cleanEx()
+> nameEx("na.contiguous")
+> ### * na.contiguous
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: na.contiguous
+> ### Title: Find Longest Contiguous Stretch of non-NAs
+> ### Aliases: na.contiguous na.contiguous.default
+> ### Keywords: ts
+> 
+> ### ** Examples
+> 
+> na.contiguous(presidents)
+     Qtr1 Qtr2 Qtr3 Qtr4
+1952                  32
+1953   59   74   75   60
+1954   71   61   71   57
+1955   71   68   79   73
+1956   76   71   67   75
+1957   79   62   63   57
+1958   60   49   48   52
+1959   57   62   61   66
+1960   71   62   61   57
+1961   72   83   71   78
+1962   79   71   62   74
+1963   76   64   62   57
+1964   80   73   69   69
+1965   71   64   69   62
+1966   63   46   56   44
+1967   44   52   38   46
+1968   36   49   35   44
+1969   59   65   65   56
+1970   66   53   61   52
+1971   51   48   54   49
+1972   49   61          
+> 
+> 
+> 
+> cleanEx()
+> nameEx("na.fail")
+> ### * na.fail
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: na.fail
+> ### Title: Handle Missing Values in Objects
+> ### Aliases: na.fail na.fail.default na.omit na.omit.data.frame
+> ###   na.omit.default na.exclude na.exclude.data.frame na.exclude.default
+> ###   na.pass
+> ### Keywords: NA
+> 
+> ### ** Examples
+> 
+> DF <- data.frame(x = c(1, 2, 3), y = c(0, 10, NA))
+> na.omit(DF)
+  x  y
+1 1  0
+2 2 10
+> m <- as.matrix(DF)
+> na.omit(m)
+     x  y
+[1,] 1  0
+[2,] 2 10
+attr(,"na.action")
+[1] 3
+attr(,"class")
+[1] "omit"
+> stopifnot(all(na.omit(1:3) == 1:3))  # does not affect objects with no NA's
+> try(na.fail(DF))   #> Error: missing values in ...
+Error in na.fail.default(DF) : missing values in object
+> 
+> options("na.action")
+$na.action
+[1] "na.omit"
+
+> 
+> 
+> 
+> cleanEx()
+> nameEx("nextn")
+> ### * nextn
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: nextn
+> ### Title: Find Highly Composite Numbers
+> ### Aliases: nextn
+> ### Keywords: math
+> 
+> ### ** Examples
+> 
+> nextn(1001) # 1024
+[1] 1024
+> table(nextn(599:630))
+
+600 625 640 
+  2  25   5 
+> n <- 1:100 ; plot(n, nextn(n) - n, type = "o", lwd=2, cex=1/2)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("nlm")
+> ### * nlm
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: nlm
+> ### Title: Non-Linear Minimization
+> ### Aliases: nlm
+> ### Keywords: nonlinear optimize
+> 
+> ### ** Examples
+> 
+> f <- function(x) sum((x-1:length(x))^2)
+> nlm(f, c(10,10))
+$minimum
+[1] 4.303458e-26
+
+$estimate
+[1] 1 2
+
+$gradient
+[1]  2.757794e-13 -3.099743e-13
+
+$code
+[1] 1
+
+$iterations
+[1] 2
+
+> nlm(f, c(10,10), print.level = 2)
+iteration = 0
+Step:
+[1] 0 0
+Parameter:
+[1] 10 10
+Function Value
+[1] 145
+Gradient:
+[1] 18.00001 16.00001
+
+iteration = 1
+Step:
+[1] -9 -8
+Parameter:
+[1] 1 2
+Function Value
+[1] 1.721748e-13
+Gradient:
+[1] 1.551336e-06 1.379735e-06
+
+iteration = 2
+Parameter:
+[1] 1 2
+Function Value
+[1] 4.303458e-26
+Gradient:
+[1]  2.757794e-13 -3.099743e-13
+
+Relative gradient close to zero.
+Current iterate is probably solution.
+
+$minimum
+[1] 4.303458e-26
+
+$estimate
+[1] 1 2
+
+$gradient
+[1]  2.757794e-13 -3.099743e-13
+
+$code
+[1] 1
+
+$iterations
+[1] 2
+
+> utils::str(nlm(f, c(5), hessian = TRUE))
+List of 6
+ $ minimum   : num 2.44e-24
+ $ estimate  : num 1
+ $ gradient  : num 1e-06
+ $ hessian   : num [1, 1] 2
+ $ code      : int 1
+ $ iterations: int 1
+> 
+> f <- function(x, a) sum((x-a)^2)
+> nlm(f, c(10,10), a = c(3,5))
+$minimum
+[1] 3.371781e-25
+
+$estimate
+[1] 3 5
+
+$gradient
+[1]  6.750156e-13 -9.450218e-13
+
+$code
+[1] 1
+
+$iterations
+[1] 2
+
+> f <- function(x, a)
++ {
++     res <- sum((x-a)^2)
++     attr(res, "gradient") <- 2*(x-a)
++     res
++ }
+> nlm(f, c(10,10), a = c(3,5))
+$minimum
+[1] 0
+
+$estimate
+[1] 3 5
+
+$gradient
+[1] 0 0
+
+$code
+[1] 1
+
+$iterations
+[1] 1
+
+> 
+> ## more examples, including the use of derivatives.
+> ## Not run: demo(nlm)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("nlminb")
+> ### * nlminb
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: nlminb
+> ### Title: Optimization using PORT routines
+> ### Aliases: nlminb
+> ### Keywords: optimize
+> 
+> ### ** Examples
+> 
+> 
+> cleanEx()
+> nameEx("nls")
+> ### * nls
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: nls
+> ### Title: Nonlinear Least Squares
+> ### Aliases: nls
+> ### Keywords: nonlinear regression models
+> 
+> ### ** Examples
+> 
+> ## Don't show: 
+> od <- options(digits=5)
+> ## End(Don't show)
+> require(graphics)
+> 
+> DNase1 <- subset(DNase, Run == 1)
+> 
+> ## using a selfStart model
+> fm1DNase1 <- nls(density ~ SSlogis(log(conc), Asym, xmid, scal), DNase1)
+> summary(fm1DNase1)
+
+Formula: density ~ SSlogis(log(conc), Asym, xmid, scal)
+
+Parameters:
+     Estimate Std. Error t value Pr(>|t|)    
+Asym   2.3452     0.0782    30.0  2.2e-13 ***
+xmid   1.4831     0.0814    18.2  1.2e-10 ***
+scal   1.0415     0.0323    32.3  8.5e-14 ***
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+
+Residual standard error: 0.0192 on 13 degrees of freedom
+
+> ## the coefficients only:
+> coef(fm1DNase1)
+  Asym   xmid   scal 
+2.3452 1.4831 1.0415 
+> ## including their SE, etc:
+> coef(summary(fm1DNase1))
+     Estimate Std. Error t value   Pr(>|t|)
+Asym   2.3452   0.078154  30.007 2.1655e-13
+xmid   1.4831   0.081353  18.230 1.2185e-10
+scal   1.0415   0.032271  32.272 8.5069e-14
+> 
+> ## using conditional linearity
+> fm2DNase1 <- nls(density ~ 1/(1 + exp((xmid - log(conc))/scal)),
++                  data = DNase1,
++                  start = list(xmid = 0, scal = 1),
++                  algorithm = "plinear")
+> summary(fm2DNase1)
+
+Formula: density ~ 1/(1 + exp((xmid - log(conc))/scal))
+
+Parameters:
+     Estimate Std. Error t value Pr(>|t|)    
+xmid   1.4831     0.0814    18.2  1.2e-10 ***
+scal   1.0415     0.0323    32.3  8.5e-14 ***
+.lin   2.3452     0.0782    30.0  2.2e-13 ***
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+
+Residual standard error: 0.0192 on 13 degrees of freedom
+
+> 
+> ## without conditional linearity
+> fm3DNase1 <- nls(density ~ Asym/(1 + exp((xmid - log(conc))/scal)),
++                  data = DNase1,
++                  start = list(Asym = 3, xmid = 0, scal = 1))
+> summary(fm3DNase1)
+
+Formula: density ~ Asym/(1 + exp((xmid - log(conc))/scal))
+
+Parameters:
+     Estimate Std. Error t value Pr(>|t|)    
+Asym   2.3452     0.0782    30.0  2.2e-13 ***
+xmid   1.4831     0.0814    18.2  1.2e-10 ***
+scal   1.0415     0.0323    32.3  8.5e-14 ***
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+
+Residual standard error: 0.0192 on 13 degrees of freedom
+
+> 
+> ## using Port's nl2sol algorithm
+> fm4DNase1 <- nls(density ~ Asym/(1 + exp((xmid - log(conc))/scal)),
++                  data = DNase1,
++                  start = list(Asym = 3, xmid = 0, scal = 1),
++                  algorithm = "port")
+> summary(fm4DNase1)
+
+Formula: density ~ Asym/(1 + exp((xmid - log(conc))/scal))
+
+Parameters:
+     Estimate Std. Error t value Pr(>|t|)    
+Asym   2.3452     0.0782    30.0  2.2e-13 ***
+xmid   1.4831     0.0814    18.2  1.2e-10 ***
+scal   1.0415     0.0323    32.3  8.5e-14 ***
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+
+Residual standard error: 0.0192 on 13 degrees of freedom
+
+Algorithm "port", convergence message: relative convergence (4)
+
+> 
+> ## weighted nonlinear regression
+> Treated <- Puromycin[Puromycin$state == "treated", ]
+> weighted.MM <- function(resp, conc, Vm, K)
++ {
++     ## Purpose: exactly as white book p. 451 -- RHS for nls()
++     ##  Weighted version of Michaelis-Menten model
++     ## ----------------------------------------------------------
++     ## Arguments: 'y', 'x' and the two parameters (see book)
++     ## ----------------------------------------------------------
++     ## Author: Martin Maechler, Date: 23 Mar 2001
++ 
++     pred <- (Vm * conc)/(K + conc)
++     (resp - pred) / sqrt(pred)
++ }
+> 
+> Pur.wt <- nls( ~ weighted.MM(rate, conc, Vm, K), data = Treated,
++               start = list(Vm = 200, K = 0.1))
+> summary(Pur.wt)
+
+Formula: 0 ~ weighted.MM(rate, conc, Vm, K)
+
+Parameters:
+   Estimate Std. Error t value Pr(>|t|)    
+Vm 2.07e+02   9.22e+00   22.42  7.0e-10 ***
+K  5.46e-02   7.98e-03    6.84  4.5e-05 ***
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+
+Residual standard error: 1.21 on 10 degrees of freedom
+
+> 
+> ## Passing arguments using a list that can not be coerced to a data.frame
+> lisTreat <- with(Treated,
++                  list(conc1 = conc[1], conc.1 = conc[-1], rate = rate))
+> 
+> weighted.MM1 <- function(resp, conc1, conc.1, Vm, K)
++ {
++      conc <- c(conc1, conc.1)
++      pred <- (Vm * conc)/(K + conc)
++     (resp - pred) / sqrt(pred)
++ }
+> Pur.wt1 <- nls( ~ weighted.MM1(rate, conc1, conc.1, Vm, K),
++                data = lisTreat, start = list(Vm = 200, K = 0.1))
+> stopifnot(all.equal(coef(Pur.wt), coef(Pur.wt1)))
+> 
+> ## Chambers and Hastie (1992) Statistical Models in S  (p. 537):
+> ## If the value of the right side [of formula] has an attribute called
+> ## 'gradient' this should be a matrix with the number of rows equal
+> ## to the length of the response and one column for each parameter.
+> 
+> weighted.MM.grad <- function(resp, conc1, conc.1, Vm, K)
++ {
++   conc <- c(conc1, conc.1)
++ 
++   K.conc <- K+conc
++   dy.dV <- conc/K.conc
++   dy.dK <- -Vm*dy.dV/K.conc
++   pred <- Vm*dy.dV
++   pred.5 <- sqrt(pred)
++   dev <- (resp - pred) / pred.5
++   Ddev <- -0.5*(resp+pred)/(pred.5*pred)
++   attr(dev, "gradient") <- Ddev * cbind(Vm = dy.dV, K = dy.dK)
++   dev
++ }
+> 
+> Pur.wt.grad <- nls( ~ weighted.MM.grad(rate, conc1, conc.1, Vm, K),
++                    data = lisTreat, start = list(Vm = 200, K = 0.1))
+> 
+> rbind(coef(Pur.wt), coef(Pur.wt1), coef(Pur.wt.grad))
+         Vm        K
+[1,] 206.83 0.054611
+[2,] 206.83 0.054611
+[3,] 206.83 0.054611
+> 
+> ## In this example, there seems no advantage to providing the gradient.
+> ## In other cases, there might be.
+> 
+> 
+> ## The two examples below show that you can fit a model to
+> ## artificial data with noise but not to artificial data
+> ## without noise.
+> x <- 1:10
+> y <- 2*x + 3                            # perfect fit
+> ## terminates in an error, because convergence cannot be confirmed:
+> try(nls(y ~ a + b*x, start = list(a = 0.12345, b = 0.54321)))
+Error in nls(y ~ a + b * x, start = list(a = 0.12345, b = 0.54321)) : 
+  number of iterations exceeded maximum of 50
+> ## adjusting the convergence test by adding 'scaleOffset' to its denominator RSS:
+> nls(y ~ a + b*x, start = list(a = 0.12345, b = 0.54321),
++     control = list(scaleOffset = 1, printEval=TRUE))
+  It.   1, fac=           1, eval (no.,total): ( 1,  1): new dev = 1.05935e-12
+Nonlinear regression model
+  model: y ~ a + b * x
+   data: parent.frame()
+a b 
+3 2 
+ residual sum-of-squares: 1.06e-12
+> ## Alternatively jittering the "too exact" values, slightly:
+> set.seed(27)
+> yeps <- y + rnorm(length(y), sd = 0.01) # added noise
+> nls(yeps ~ a + b*x, start = list(a = 0.12345, b = 0.54321))
+Nonlinear regression model
+  model: yeps ~ a + b * x
+   data: parent.frame()
+a b 
+3 2 
+ residual sum-of-squares: 0.00135
+> 
+> 
+> ## the nls() internal cheap guess for starting values can be sufficient:
+> x <- -(1:100)/10
+> y <- 100 + 10 * exp(x / 2) + rnorm(x)/10
+> nlmod <- nls(y ~  Const + A * exp(B * x))
+Warning in nls(y ~ Const + A * exp(B * x)) :
+  No starting values specified for some parameters.
+Initializing ‘Const’, ‘A’, ‘B’ to '1.'.
+Consider specifying 'start' or using a selfStart model
+> 
+> plot(x,y, main = "nls(*), data, true function and fit, n=100")
+> curve(100 + 10 * exp(x / 2), col = 4, add = TRUE)
+> lines(x, predict(nlmod), col = 2)
+> 
+> ## Here, requiring close convergence, must use more accurate numerical differentiation,
+> ## as this typically gives Error: "step factor .. reduced below 'minFactor' .."
+> ## IGNORE_RDIFF_BEGIN
+> try(nlm1 <- update(nlmod, control = list(tol = 1e-7)))
+Warning in nls(formula = y ~ Const + A * exp(B * x), algorithm = "default",  :
+  No starting values specified for some parameters.
+Initializing ‘Const’, ‘A’, ‘B’ to '1.'.
+Consider specifying 'start' or using a selfStart model
+> o2 <- options(digits = 10) # more accuracy for 'trace'
+> ## central differencing works here typically (PR#18165: not converging on *some*):
+> ctr2 <- nls.control(nDcentral=TRUE, tol = 8e-8, # <- even smaller than above
++    warnOnly =
++         TRUE || # << work around; e.g. needed on some ATLAS-Lapack setups
++         (grepl("^aarch64.*linux", R.version$platform) && grepl("^NixOS", osVersion)
++               ))
+> (nlm2 <- update(nlmod, control = ctr2, trace = TRUE)); options(o2)
+Warning in nls(formula = y ~ Const + A * exp(B * x), algorithm = "default",  :
+  No starting values specified for some parameters.
+Initializing ‘Const’, ‘A’, ‘B’ to '1.'.
+Consider specifying 'start' or using a selfStart model
+1017460.306    (4.15e+02): par = (1 1 1)
+758164.7503    (2.34e+02): par = (13.42031396 1.961485 0.05947543746)
+269506.3540    (3.23e+02): par = (51.75719814 -13.09155954 0.8428607699)
+68969.21900    (1.03e+02): par = (76.00069849 -1.93522673 1.019085799)
+633.3672239    (1.29e+00): par = (100.3761515 8.62464841 5.104490279)
+151.4400266    (9.39e+00): par = (100.6344391 4.913490966 0.284920948)
+53.08740235    (7.24e+00): par = (100.6830408 6.899303242 0.4637755057)
+1.344478691    (5.97e-01): par = (100.0368306 9.89771414 0.5169294949)
+0.9908415909   (1.55e-02): par = (100.0300625 9.9144191 0.5023516842)
+0.9906046057   (1.84e-05): par = (100.0288724 9.916224018 0.5025207337)
+0.9906046054   (9.94e-08): par = (100.028875 9.916228366 0.50252165)
+0.9906046054   (5.06e-10): par = (100.028875 9.916228388 0.5025216549)
+Nonlinear regression model
+  model: y ~ Const + A * exp(B * x)
+   data: parent.frame()
+      Const           A           B 
+100.0288750   9.9162284   0.5025217 
+ residual sum-of-squares: 0.9906046
+> ## --> convergence tolerance  4.997e-8 (in 11 iter.)
+> ## IGNORE_RDIFF_END
+> 
+> ## The muscle dataset in MASS is from an experiment on muscle
+> ## contraction on 21 animals.  The observed variables are Strip
+> ## (identifier of muscle), Conc (Cacl concentration) and Length
+> ## (resulting length of muscle section).
+> ## IGNORE_RDIFF_BEGIN
+> if(requireNamespace("MASS", quietly = TRUE)) withAutoprint({
++ ## The non linear model considered is
++ ##       Length = alpha + beta*exp(-Conc/theta) + error
++ ## where theta is constant but alpha and beta may vary with Strip.
++ 
++ with(MASS::muscle, table(Strip)) # 2, 3 or 4 obs per strip
++ 
++ ## We first use the plinear algorithm to fit an overall model,
++ ## ignoring that alpha and beta might vary with Strip.
++ musc.1 <- nls(Length ~ cbind(1, exp(-Conc/th)), MASS::muscle,
++               start = list(th = 1), algorithm = "plinear")
++ summary(musc.1)
++ 
++ ## Then we use nls' indexing feature for parameters in non-linear
++ ## models to use the conventional algorithm to fit a model in which
++ ## alpha and beta vary with Strip.  The starting values are provided
++ ## by the previously fitted model.
++ ## Note that with indexed parameters, the starting values must be
++ ## given in a list (with names):
++ b <- coef(musc.1)
++ musc.2 <- nls(Length ~ a[Strip] + b[Strip]*exp(-Conc/th), MASS::muscle,
++               start = list(a = rep(b[2], 21), b = rep(b[3], 21), th = b[1]))
++ summary(musc.2)
++ })
+> with(MASS::muscle, table(Strip))
+Strip
+S01 S02 S03 S04 S05 S06 S07 S08 S09 S10 S11 S12 S13 S14 S15 S16 S17 S18 S19 S20 
+  4   4   4   3   3   3   2   2   2   2   3   2   2   2   2   4   4   3   3   3 
+S21 
+  3 
+> musc.1 <- nls(Length ~ cbind(1, exp(-Conc/th)), MASS::muscle, start = list(th = 1), 
++     algorithm = "plinear")
+> summary(musc.1)
+
+Formula: Length ~ cbind(1, exp(-Conc/th))
+
+Parameters:
+      Estimate Std. Error t value Pr(>|t|)    
+th       0.608      0.115    5.31  1.9e-06 ***
+.lin1   28.963      1.230   23.55  < 2e-16 ***
+.lin2  -34.227      3.793   -9.02  1.4e-12 ***
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+
+Residual standard error: 4.67 on 57 degrees of freedom
+
+> b <- coef(musc.1)
+> musc.2 <- nls(Length ~ a[Strip] + b[Strip] * exp(-Conc/th), MASS::muscle, 
++     start = list(a = rep(b[2], 21), b = rep(b[3], 21), th = b[1]))
+> summary(musc.2)
+
+Formula: Length ~ a[Strip] + b[Strip] * exp(-Conc/th)
+
+Parameters:
+    Estimate Std. Error t value Pr(>|t|)    
+a1    23.454      0.796   29.46  5.0e-16 ***
+a2    28.302      0.793   35.70  < 2e-16 ***
+a3    30.801      1.716   17.95  1.7e-12 ***
+a4    25.921      3.016    8.60  1.4e-07 ***
+a5    23.201      2.891    8.02  3.5e-07 ***
+a6    20.120      2.435    8.26  2.3e-07 ***
+a7    33.595      1.682   19.98  3.0e-13 ***
+a8    39.053      3.753   10.41  8.6e-09 ***
+a9    32.137      3.318    9.69  2.5e-08 ***
+a10   40.005      3.336   11.99  1.0e-09 ***
+a11   36.190      3.109   11.64  1.6e-09 ***
+a12   36.911      1.839   20.07  2.8e-13 ***
+a13   30.635      1.700   18.02  1.6e-12 ***
+a14   34.312      3.495    9.82  2.0e-08 ***
+a15   38.395      3.375   11.38  2.3e-09 ***
+a16   31.226      0.886   35.26  < 2e-16 ***
+a17   31.230      0.821   38.02  < 2e-16 ***
+a18   19.998      1.011   19.78  3.6e-13 ***
+a19   37.095      1.071   34.65  < 2e-16 ***
+a20   32.594      1.121   29.07  6.2e-16 ***
+a21   30.376      1.057   28.74  7.5e-16 ***
+b1   -27.300      6.873   -3.97  0.00099 ***
+b2   -26.270      6.754   -3.89  0.00118 ** 
+b3   -30.901      2.270  -13.61  1.4e-10 ***
+b4   -32.238      3.810   -8.46  1.7e-07 ***
+b5   -29.941      3.773   -7.94  4.1e-07 ***
+b6   -20.622      3.647   -5.65  2.9e-05 ***
+b7   -19.625      8.085   -2.43  0.02661 *  
+b8   -45.780      4.113  -11.13  3.2e-09 ***
+b9   -31.345      6.352   -4.93  0.00013 ***
+b10  -38.599      3.955   -9.76  2.2e-08 ***
+b11  -33.921      3.839   -8.84  9.2e-08 ***
+b12  -38.268      8.992   -4.26  0.00053 ***
+b13  -22.568      8.194   -2.75  0.01355 *  
+b14  -36.167      6.358   -5.69  2.7e-05 ***
+b15  -32.952      6.354   -5.19  7.4e-05 ***
+b16  -47.207      9.540   -4.95  0.00012 ***
+b17  -33.875      7.688   -4.41  0.00039 ***
+b18  -15.896      6.222   -2.55  0.02051 *  
+b19  -28.969      7.235   -4.00  0.00092 ***
+b20  -36.917      8.033   -4.60  0.00026 ***
+b21  -26.508      7.012   -3.78  0.00149 ** 
+th     0.797      0.127    6.30  8.0e-06 ***
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+
+Residual standard error: 1.11 on 17 degrees of freedom
+
+> ## IGNORE_RDIFF_END
+> ## Don't show: 
+> options(od)
+> ## End(Don't show)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("nls.control")
+> ### * nls.control
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: nls.control
+> ### Title: Control the Iterations in nls
+> ### Aliases: nls.control
+> ### Keywords: nonlinear regression models
+> 
+> ### ** Examples
+> 
+> nls.control(minFactor = 1/2048)
+$maxiter
+[1] 50
+
+$tol
+[1] 1e-05
+
+$minFactor
+[1] 0.0004882812
+
+$printEval
+[1] FALSE
+
+$warnOnly
+[1] FALSE
+
+$scaleOffset
+[1] 0
+
+$nDcentral
+[1] FALSE
+
+> 
+> 
+> 
+> cleanEx()
+> nameEx("numericDeriv")
+> ### * numericDeriv
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: numericDeriv
+> ### Title: Evaluate Derivatives Numerically
+> ### Aliases: numericDeriv
+> ### Keywords: models
+> 
+> ### ** Examples
+> 
+> myenv <- new.env()
+> myenv$mean <- 0.
+> myenv$sd   <- 1.
+> myenv$x    <- seq(-3., 3., length.out = 31)
+> nD <- numericDeriv(quote(pnorm(x, mean, sd)), c("mean", "sd"), myenv)
+> str(nD)
+ num [1:31] 0.00135 0.00256 0.00466 0.0082 0.0139 ...
+ - attr(*, "gradient")= num [1:31, 1:2] -0.00443 -0.00792 -0.01358 -0.02239 -0.03547 ...
+> 
+> ## Visualize :
+> require(graphics)
+> matplot(myenv$x, cbind(c(nD), attr(nD, "gradient")), type="l")
+> abline(h=0, lty=3)
+> ## "gradient" is close to the true derivatives, you don't see any diff.:
+> curve( - dnorm(x), col=2, lty=3, lwd=2, add=TRUE)
+> curve(-x*dnorm(x), col=3, lty=3, lwd=2, add=TRUE)
+> ##
+> ## IGNORE_RDIFF_BEGIN
+> # shows 1.609e-8 on most platforms
+> all.equal(attr(nD,"gradient"),
++           with(myenv, cbind(-dnorm(x), -x*dnorm(x))))
+[1] "Mean relative difference: 1.609569e-08"
+> ## IGNORE_RDIFF_END
+> 
+> 
+> 
+> cleanEx()
+> nameEx("oneway.test")
+> ### * oneway.test
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: oneway.test
+> ### Title: Test for Equal Means in a One-Way Layout
+> ### Aliases: oneway.test
+> ### Keywords: htest
+> 
+> ### ** Examples
+> 
+> ## Not assuming equal variances
+> oneway.test(extra ~ group, data = sleep)
+
+	One-way analysis of means (not assuming equal variances)
+
+data:  extra and group
+F = 3.4626, num df = 1.000, denom df = 17.776, p-value = 0.07939
+
+> ## Assuming equal variances
+> oneway.test(extra ~ group, data = sleep, var.equal = TRUE)
+
+	One-way analysis of means
+
+data:  extra and group
+F = 3.4626, num df = 1, denom df = 18, p-value = 0.07919
+
+> ## which gives the same result as
+> anova(lm(extra ~ group, data = sleep))
+Analysis of Variance Table
+
+Response: extra
+          Df Sum Sq Mean Sq F value  Pr(>F)  
+group      1 12.482 12.4820  3.4626 0.07919 .
+Residuals 18 64.886  3.6048                  
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+> 
+> 
+> 
+> cleanEx()
+> nameEx("optim")
+> ### * optim
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: optim
+> ### Title: General-purpose Optimization
+> ### Aliases: optim optimHess
+> ### Keywords: nonlinear optimize
+> 
+> ### ** Examples
+> 
+> 
+> cleanEx()
+> nameEx("optimize")
+> ### * optimize
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: optimize
+> ### Title: One Dimensional Optimization
+> ### Aliases: optimize optimise
+> ### Keywords: optimize
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> f <- function (x, a) (x - a)^2
+> xmin <- optimize(f, c(0, 1), tol = 0.0001, a = 1/3)
+> xmin
+$minimum
+[1] 0.3333333
+
+$objective
+[1] 0
+
+> 
+> ## See where the function is evaluated:
+> optimize(function(x) x^2*(print(x)-1), lower = 0, upper = 10)
+[1] 3.81966
+[1] 6.18034
+[1] 2.36068
+[1] 2.077939
+[1] 1.505823
+[1] 0.9306496
+[1] 0.9196752
+[1] 0.772905
+[1] 0.4776816
+[1] 0.6491436
+[1] 0.656315
+[1] 0.6653777
+[1] 0.6667786
+[1] 0.6666728
+[1] 0.6666321
+[1] 0.6667135
+[1] 0.6666728
+$minimum
+[1] 0.6666728
+
+$objective
+[1] -0.1481481
+
+> 
+> ## "wrong" solution with unlucky interval and piecewise constant f():
+> f  <- function(x) ifelse(x > -1, ifelse(x < 4, exp(-1/abs(x - 1)), 10), 10)
+> fp <- function(x) { print(x); f(x) }
+> 
+> plot(f, -2,5, ylim = 0:1, col = 2)
+> optimize(fp, c(-4, 20))   # doesn't see the minimum
+[1] 5.167184
+[1] 10.83282
+[1] 14.33437
+[1] 16.49845
+[1] 17.83592
+[1] 18.66253
+[1] 19.1734
+[1] 19.48913
+[1] 19.68427
+[1] 19.80487
+[1] 19.8794
+[1] 19.92547
+[1] 19.95393
+[1] 19.97153
+[1] 19.9824
+[1] 19.98913
+[1] 19.99328
+[1] 19.99585
+[1] 19.99743
+[1] 19.99841
+[1] 19.99902
+[1] 19.99939
+[1] 19.99963
+[1] 19.99977
+[1] 19.99986
+[1] 19.99991
+[1] 19.99995
+[1] 19.99995
+$minimum
+[1] 19.99995
+
+$objective
+[1] 10
+
+> optimize(fp, c(-7, 20))   # ok
+[1] 3.313082
+[1] 9.686918
+[1] -0.6261646
+[1] 1.244956
+[1] 1.250965
+[1] 0.771827
+[1] 0.2378417
+[1] 1.000451
+[1] 0.9906964
+[1] 0.9955736
+[1] 0.9980122
+[1] 0.9992315
+[1] 0.9998411
+[1] 0.9996083
+[1] 0.9994644
+[1] 0.9993754
+[1] 0.9993204
+[1] 0.9992797
+[1] 0.9992797
+$minimum
+[1] 0.9992797
+
+$objective
+[1] 0
+
+> 
+> 
+> 
+> cleanEx()
+> nameEx("order.dendrogram")
+> ### * order.dendrogram
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: order.dendrogram
+> ### Title: Ordering or Labels of the Leaves in a Dendrogram
+> ### Aliases: order.dendrogram labels.dendrogram
+> ### Keywords: manip
+> 
+> ### ** Examples
+> 
+> set.seed(123)
+> x <- rnorm(10)
+> hc <- hclust(dist(x))
+> hc$order
+ [1]  3  6  7  2  4  5  8  9  1 10
+> dd <- as.dendrogram(hc)
+> order.dendrogram(dd) ## the same :
+ [1]  3  6  7  2  4  5  8  9  1 10
+> stopifnot(hc$order == order.dendrogram(dd))
+> 
+> d2 <- as.dendrogram(hclust(dist(USArrests)))
+> labels(d2) ## in this case the same as
+ [1] "Florida"        "North Carolina" "Delaware"       "Alabama"       
+ [5] "Louisiana"      "Alaska"         "Mississippi"    "South Carolina"
+ [9] "Maryland"       "Arizona"        "New Mexico"     "California"    
+[13] "Illinois"       "New York"       "Michigan"       "Nevada"        
+[17] "Missouri"       "Arkansas"       "Tennessee"      "Georgia"       
+[21] "Colorado"       "Texas"          "Rhode Island"   "Wyoming"       
+[25] "Oregon"         "Oklahoma"       "Virginia"       "Washington"    
+[29] "Massachusetts"  "New Jersey"     "Ohio"           "Utah"          
+[33] "Connecticut"    "Pennsylvania"   "Nebraska"       "Kentucky"      
+[37] "Montana"        "Idaho"          "Indiana"        "Kansas"        
+[41] "Hawaii"         "Minnesota"      "Wisconsin"      "Iowa"          
+[45] "New Hampshire"  "West Virginia"  "Maine"          "South Dakota"  
+[49] "North Dakota"   "Vermont"       
+> stopifnot(identical(labels(d2),
++    rownames(USArrests)[order.dendrogram(d2)]))
+> 
+> 
+> 
+> cleanEx()
+> nameEx("p.adjust")
+> ### * p.adjust
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: p.adjust
+> ### Title: Adjust P-values for Multiple Comparisons
+> ### Aliases: p.adjust p.adjust.methods
+> ### Keywords: htest
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> set.seed(123)
+> x <- rnorm(50, mean = c(rep(0, 25), rep(3, 25)))
+> p <- 2*pnorm(sort(-abs(x)))
+> 
+> round(p, 3)
+ [1] 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.001 0.002
+[13] 0.003 0.004 0.005 0.007 0.007 0.009 0.009 0.011 0.021 0.049 0.061 0.063
+[25] 0.074 0.083 0.086 0.119 0.189 0.206 0.221 0.286 0.305 0.466 0.483 0.492
+[37] 0.532 0.575 0.578 0.619 0.636 0.645 0.656 0.689 0.719 0.818 0.827 0.897
+[49] 0.912 0.944
+> round(p.adjust(p), 3)
+ [1] 0.000 0.001 0.001 0.005 0.005 0.006 0.006 0.007 0.009 0.016 0.024 0.063
+[13] 0.125 0.131 0.189 0.239 0.240 0.291 0.301 0.350 0.635 1.000 1.000 1.000
+[25] 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
+[37] 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
+[49] 1.000 1.000
+> round(p.adjust(p, "BH"), 3)
+ [1] 0.000 0.000 0.000 0.001 0.001 0.001 0.001 0.001 0.001 0.002 0.003 0.007
+[13] 0.013 0.013 0.017 0.021 0.021 0.024 0.025 0.028 0.050 0.112 0.130 0.130
+[25] 0.148 0.159 0.160 0.213 0.326 0.343 0.356 0.446 0.462 0.684 0.684 0.684
+[37] 0.719 0.741 0.741 0.763 0.763 0.763 0.763 0.782 0.799 0.880 0.880 0.930
+[49] 0.930 0.944
+> 
+> ## or all of them at once (dropping the "fdr" alias):
+> p.adjust.M <- p.adjust.methods[p.adjust.methods != "fdr"]
+> p.adj    <- sapply(p.adjust.M, function(meth) p.adjust(p, meth))
+> p.adj.60 <- sapply(p.adjust.M, function(meth) p.adjust(p, meth, n = 60))
+> stopifnot(identical(p.adj[,"none"], p), p.adj <= p.adj.60)
+> round(p.adj, 3)
+       holm hochberg hommel bonferroni    BH    BY  none
+ [1,] 0.000    0.000  0.000      0.000 0.000 0.000 0.000
+ [2,] 0.001    0.001  0.001      0.001 0.000 0.002 0.000
+ [3,] 0.001    0.001  0.001      0.001 0.000 0.002 0.000
+ [4,] 0.005    0.005  0.004      0.005 0.001 0.004 0.000
+ [5,] 0.005    0.005  0.005      0.005 0.001 0.004 0.000
+ [6,] 0.006    0.006  0.005      0.006 0.001 0.004 0.000
+ [7,] 0.006    0.006  0.006      0.007 0.001 0.004 0.000
+ [8,] 0.007    0.007  0.007      0.008 0.001 0.004 0.000
+ [9,] 0.009    0.009  0.009      0.011 0.001 0.006 0.000
+[10,] 0.016    0.016  0.015      0.019 0.002 0.009 0.000
+[11,] 0.024    0.024  0.024      0.031 0.003 0.013 0.001
+[12,] 0.063    0.063  0.058      0.081 0.007 0.030 0.002
+[13,] 0.125    0.125  0.109      0.165 0.013 0.057 0.003
+[14,] 0.131    0.131  0.117      0.177 0.013 0.057 0.004
+[15,] 0.189    0.189  0.168      0.262 0.017 0.079 0.005
+[16,] 0.239    0.239  0.212      0.342 0.021 0.093 0.007
+[17,] 0.240    0.240  0.219      0.353 0.021 0.093 0.007
+[18,] 0.291    0.291  0.273      0.440 0.024 0.110 0.009
+[19,] 0.301    0.301  0.291      0.470 0.025 0.111 0.009
+[20,] 0.350    0.350  0.339      0.565 0.028 0.127 0.011
+[21,] 0.635    0.635  0.571      1.000 0.050 0.227 0.021
+[22,] 1.000    0.944  0.944      1.000 0.112 0.503 0.049
+[23,] 1.000    0.944  0.944      1.000 0.130 0.587 0.061
+[24,] 1.000    0.944  0.944      1.000 0.130 0.587 0.063
+[25,] 1.000    0.944  0.944      1.000 0.148 0.665 0.074
+[26,] 1.000    0.944  0.944      1.000 0.159 0.717 0.083
+[27,] 1.000    0.944  0.944      1.000 0.160 0.719 0.086
+[28,] 1.000    0.944  0.944      1.000 0.213 0.957 0.119
+[29,] 1.000    0.944  0.944      1.000 0.326 1.000 0.189
+[30,] 1.000    0.944  0.944      1.000 0.343 1.000 0.206
+[31,] 1.000    0.944  0.944      1.000 0.356 1.000 0.221
+[32,] 1.000    0.944  0.944      1.000 0.446 1.000 0.286
+[33,] 1.000    0.944  0.944      1.000 0.462 1.000 0.305
+[34,] 1.000    0.944  0.944      1.000 0.684 1.000 0.466
+[35,] 1.000    0.944  0.944      1.000 0.684 1.000 0.483
+[36,] 1.000    0.944  0.944      1.000 0.684 1.000 0.492
+[37,] 1.000    0.944  0.944      1.000 0.719 1.000 0.532
+[38,] 1.000    0.944  0.944      1.000 0.741 1.000 0.575
+[39,] 1.000    0.944  0.944      1.000 0.741 1.000 0.578
+[40,] 1.000    0.944  0.944      1.000 0.763 1.000 0.619
+[41,] 1.000    0.944  0.944      1.000 0.763 1.000 0.636
+[42,] 1.000    0.944  0.944      1.000 0.763 1.000 0.645
+[43,] 1.000    0.944  0.944      1.000 0.763 1.000 0.656
+[44,] 1.000    0.944  0.944      1.000 0.782 1.000 0.689
+[45,] 1.000    0.944  0.944      1.000 0.799 1.000 0.719
+[46,] 1.000    0.944  0.944      1.000 0.880 1.000 0.818
+[47,] 1.000    0.944  0.944      1.000 0.880 1.000 0.827
+[48,] 1.000    0.944  0.944      1.000 0.930 1.000 0.897
+[49,] 1.000    0.944  0.944      1.000 0.930 1.000 0.912
+[50,] 1.000    0.944  0.944      1.000 0.944 1.000 0.944
+> ## or a bit nicer:
+> noquote(apply(p.adj, 2, format.pval, digits = 3))
+      holm     hochberg hommel   bonferroni BH       BY      none    
+ [1,] 1.18e-05 1.18e-05 1.18e-05 1.18e-05   1.18e-05 5.3e-05 2.35e-07
+ [2,] 0.00103  0.00103  0.00101  0.00105    0.000429 0.00193 2.10e-05
+ [3,] 0.00124  0.00124  0.00124  0.00129    0.000429 0.00193 2.58e-05
+ [4,] 0.00461  0.00461  0.00422  0.00491    0.000947 0.00426 9.81e-05
+ [5,] 0.00484  0.00484  0.00453  0.00526    0.000947 0.00426 0.000105
+ [6,] 0.00559  0.00559  0.00521  0.00621    0.000947 0.00426 0.000124
+ [7,] 0.00583  0.00583  0.00557  0.00663    0.000947 0.00426 0.000133
+ [8,] 0.00674  0.00674  0.00659  0.00784    0.000980 0.00441 0.000157
+ [9,] 0.00947  0.00947  0.00924  0.01127    0.001253 0.00564 0.000225
+[10,] 0.01556  0.01556  0.01518  0.01898    0.001898 0.00854 0.000380
+[11,] 0.02446  0.02446  0.02446  0.03057    0.002780 0.01251 0.000611
+[12,] 0.06294  0.06294  0.05810  0.08070    0.006725 0.03026 0.001614
+[13,] 0.12549  0.12549  0.10898  0.16512    0.012637 0.05686 0.003302
+[14,] 0.13092  0.13092  0.11677  0.17692    0.012637 0.05686 0.003538
+[15,] 0.18853  0.18853  0.16758  0.26185    0.017457 0.07854 0.005237
+[16,] 0.23912  0.23912  0.21179  0.34160    0.020762 0.09341 0.006832
+[17,] 0.24001  0.24001  0.21884  0.35296    0.020762 0.09341 0.007059
+[18,] 0.29057  0.29057  0.27296  0.44026    0.024459 0.11004 0.008805
+[19,] 0.30083  0.30083  0.29143  0.47005    0.024740 0.11131 0.009401
+[20,] 0.35024  0.35024  0.33894  0.56490    0.028245 0.12708 0.011298
+[21,] 0.63451  0.63451  0.57105  1.00000    0.050358 0.22657 0.021150
+[22,] 1.00000  0.94379  0.94379  1.00000    0.111880 0.50337 0.049227
+[23,] 1.00000  0.94379  0.94379  1.00000    0.130463 0.58698 0.060533
+[24,] 1.00000  0.94379  0.94379  1.00000    0.130463 0.58698 0.062622
+[25,] 1.00000  0.94379  0.94379  1.00000    0.147903 0.66545 0.073952
+[26,] 1.00000  0.94379  0.94379  1.00000    0.159252 0.71651 0.082811
+[27,] 1.00000  0.94379  0.94379  1.00000    0.159877 0.71932 0.086333
+[28,] 1.00000  0.94379  0.94379  1.00000    0.212617 0.95661 0.119065
+[29,] 1.00000  0.94379  0.94379  1.00000    0.325999 1.00000 0.189080
+[30,] 1.00000  0.94379  0.94379  1.00000    0.343082 1.00000 0.205849
+[31,] 1.00000  0.94379  0.94379  1.00000    0.356325 1.00000 0.220921
+[32,] 1.00000  0.94379  0.94379  1.00000    0.446250 1.00000 0.285600
+[33,] 1.00000  0.94379  0.94379  1.00000    0.461954 1.00000 0.304889
+[34,] 1.00000  0.94379  0.94379  1.00000    0.683577 1.00000 0.466068
+[35,] 1.00000  0.94379  0.94379  1.00000    0.683577 1.00000 0.483081
+[36,] 1.00000  0.94379  0.94379  1.00000    0.683577 1.00000 0.492175
+[37,] 1.00000  0.94379  0.94379  1.00000    0.718845 1.00000 0.531945
+[38,] 1.00000  0.94379  0.94379  1.00000    0.741435 1.00000 0.575155
+[39,] 1.00000  0.94379  0.94379  1.00000    0.741435 1.00000 0.578319
+[40,] 1.00000  0.94379  0.94379  1.00000    0.762606 1.00000 0.618589
+[41,] 1.00000  0.94379  0.94379  1.00000    0.762606 1.00000 0.636362
+[42,] 1.00000  0.94379  0.94379  1.00000    0.762606 1.00000 0.644859
+[43,] 1.00000  0.94379  0.94379  1.00000    0.762606 1.00000 0.655841
+[44,] 1.00000  0.94379  0.94379  1.00000    0.782487 1.00000 0.688588
+[45,] 1.00000  0.94379  0.94379  1.00000    0.798874 1.00000 0.718986
+[46,] 1.00000  0.94379  0.94379  1.00000    0.880265 1.00000 0.817954
+[47,] 1.00000  0.94379  0.94379  1.00000    0.880265 1.00000 0.827449
+[48,] 1.00000  0.94379  0.94379  1.00000    0.930478 1.00000 0.897130
+[49,] 1.00000  0.94379  0.94379  1.00000    0.930478 1.00000 0.911868
+[50,] 1.00000  0.94379  0.94379  1.00000    0.943789 1.00000 0.943789
+> 
+> 
+> ## and a graphic:
+> matplot(p, p.adj, ylab="p.adjust(p, meth)", type = "l", asp = 1, lty = 1:6,
++         main = "P-value adjustments")
+> legend(0.7, 0.6, p.adjust.M, col = 1:6, lty = 1:6)
+> 
+> ## Can work with NA's:
+> pN <- p; iN <- c(46, 47); pN[iN] <- NA
+> pN.a <- sapply(p.adjust.M, function(meth) p.adjust(pN, meth))
+> ## The smallest 20 P-values all affected by the NA's :
+> round((pN.a / p.adj)[1:20, ] , 4)
+        holm hochberg hommel bonferroni   BH     BY none
+ [1,] 0.9600   0.9600 0.9600       0.96 0.96 0.9514    1
+ [2,] 0.9592   0.9592 0.9583       0.96 0.96 0.9514    1
+ [3,] 0.9583   0.9583 0.9583       0.96 0.96 0.9514    1
+ [4,] 0.9574   0.9574 0.9535       0.96 0.96 0.9514    1
+ [5,] 0.9565   0.9565 0.9535       0.96 0.96 0.9514    1
+ [6,] 0.9556   0.9556 0.9524       0.96 0.96 0.9514    1
+ [7,] 0.9545   0.9545 0.9524       0.96 0.96 0.9514    1
+ [8,] 0.9535   0.9535 0.9524       0.96 0.96 0.9514    1
+ [9,] 0.9524   0.9524 0.9512       0.96 0.96 0.9514    1
+[10,] 0.9512   0.9512 0.9500       0.96 0.96 0.9514    1
+[11,] 0.9500   0.9500 0.9500       0.96 0.96 0.9514    1
+[12,] 0.9487   0.9487 0.9444       0.96 0.96 0.9514    1
+[13,] 0.9474   0.9474 0.9394       0.96 0.96 0.9514    1
+[14,] 0.9459   0.9459 0.9394       0.96 0.96 0.9514    1
+[15,] 0.9444   0.9444 0.9375       0.96 0.96 0.9514    1
+[16,] 0.9429   0.9429 0.9355       0.96 0.96 0.9514    1
+[17,] 0.9412   0.9412 0.9355       0.96 0.96 0.9514    1
+[18,] 0.9394   0.9394 0.9355       0.96 0.96 0.9514    1
+[19,] 0.9375   0.9375 0.9355       0.96 0.96 0.9514    1
+[20,] 0.9355   0.9355 0.9333       0.96 0.96 0.9514    1
+> 
+> 
+> 
+> cleanEx()
+> nameEx("pairwise.prop.test")
+> ### * pairwise.prop.test
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: pairwise.prop.test
+> ### Title: Pairwise comparisons for proportions
+> ### Aliases: pairwise.prop.test
+> ### Keywords: htest
+> 
+> ### ** Examples
+> 
+> smokers  <- c( 83, 90, 129, 70 )
+> patients <- c( 86, 93, 136, 82 )
+> pairwise.prop.test(smokers, patients)
+Warning in prop.test(x[c(i, j)], n[c(i, j)], ...) :
+  Chi-squared approximation may be incorrect
+Warning in prop.test(x[c(i, j)], n[c(i, j)], ...) :
+  Chi-squared approximation may be incorrect
+Warning in prop.test(x[c(i, j)], n[c(i, j)], ...) :
+  Chi-squared approximation may be incorrect
+
+	Pairwise comparisons using Pairwise comparison of proportions 
+
+data:  smokers out of patients 
+
+  1     2     3    
+2 1.000 -     -    
+3 1.000 1.000 -    
+4 0.119 0.093 0.124
+
+P value adjustment method: holm 
+> 
+> 
+> 
+> cleanEx()
+> nameEx("pairwise.t.test")
+> ### * pairwise.t.test
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: pairwise.t.test
+> ### Title: Pairwise t tests
+> ### Aliases: pairwise.t.test
+> ### Keywords: htest
+> 
+> ### ** Examples
+> 
+> attach(airquality)
+> Month <- factor(Month, labels = month.abb[5:9])
+> pairwise.t.test(Ozone, Month)
+
+	Pairwise comparisons using t tests with pooled SD 
+
+data:  Ozone and Month 
+
+    May     Jun     Jul     Aug    
+Jun 1.00000 -       -       -      
+Jul 0.00026 0.05113 -       -      
+Aug 0.00019 0.04987 1.00000 -      
+Sep 1.00000 1.00000 0.00488 0.00388
+
+P value adjustment method: holm 
+> pairwise.t.test(Ozone, Month, p.adjust.method = "bonf")
+
+	Pairwise comparisons using t tests with pooled SD 
+
+data:  Ozone and Month 
+
+    May     Jun     Jul     Aug    
+Jun 1.00000 -       -       -      
+Jul 0.00029 0.10225 -       -      
+Aug 0.00019 0.08312 1.00000 -      
+Sep 1.00000 1.00000 0.00697 0.00485
+
+P value adjustment method: bonferroni 
+> pairwise.t.test(Ozone, Month, pool.sd = FALSE)
+
+	Pairwise comparisons using t tests with non-pooled SD 
+
+data:  Ozone and Month 
+
+    May     Jun     Jul     Aug    
+Jun 1.00000 -       -       -      
+Jul 0.00026 0.01527 -       -      
+Aug 0.00195 0.02135 1.00000 -      
+Sep 0.86321 1.00000 0.00589 0.01721
+
+P value adjustment method: holm 
+> detach()
+> 
+> 
+> 
+> cleanEx()
+> nameEx("pairwise.wilcox.test")
+> ### * pairwise.wilcox.test
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: pairwise.wilcox.test
+> ### Title: Pairwise Wilcoxon Rank Sum Tests
+> ### Aliases: pairwise.wilcox.test
+> ### Keywords: htest
+> 
+> ### ** Examples
+> 
+> attach(airquality)
+> Month <- factor(Month, labels = month.abb[5:9])
+> ## These give warnings because of ties :
+> pairwise.wilcox.test(Ozone, Month)
+Warning in wilcox.test.default(xi, xj, paired = paired, ...) :
+  cannot compute exact p-value with ties
+Warning in wilcox.test.default(xi, xj, paired = paired, ...) :
+  cannot compute exact p-value with ties
+Warning in wilcox.test.default(xi, xj, paired = paired, ...) :
+  cannot compute exact p-value with ties
+Warning in wilcox.test.default(xi, xj, paired = paired, ...) :
+  cannot compute exact p-value with ties
+Warning in wilcox.test.default(xi, xj, paired = paired, ...) :
+  cannot compute exact p-value with ties
+Warning in wilcox.test.default(xi, xj, paired = paired, ...) :
+  cannot compute exact p-value with ties
+Warning in wilcox.test.default(xi, xj, paired = paired, ...) :
+  cannot compute exact p-value with ties
+Warning in wilcox.test.default(xi, xj, paired = paired, ...) :
+  cannot compute exact p-value with ties
+Warning in wilcox.test.default(xi, xj, paired = paired, ...) :
+  cannot compute exact p-value with ties
+Warning in wilcox.test.default(xi, xj, paired = paired, ...) :
+  cannot compute exact p-value with ties
+
+	Pairwise comparisons using Wilcoxon rank sum test with continuity correction 
+
+data:  Ozone and Month 
+
+    May    Jun    Jul    Aug   
+Jun 0.5775 -      -      -     
+Jul 0.0003 0.0848 -      -     
+Aug 0.0011 0.1295 1.0000 -     
+Sep 0.4744 1.0000 0.0060 0.0227
+
+P value adjustment method: holm 
+> pairwise.wilcox.test(Ozone, Month, p.adjust.method = "bonf")
+Warning in wilcox.test.default(xi, xj, paired = paired, ...) :
+  cannot compute exact p-value with ties
+Warning in wilcox.test.default(xi, xj, paired = paired, ...) :
+  cannot compute exact p-value with ties
+Warning in wilcox.test.default(xi, xj, paired = paired, ...) :
+  cannot compute exact p-value with ties
+Warning in wilcox.test.default(xi, xj, paired = paired, ...) :
+  cannot compute exact p-value with ties
+Warning in wilcox.test.default(xi, xj, paired = paired, ...) :
+  cannot compute exact p-value with ties
+Warning in wilcox.test.default(xi, xj, paired = paired, ...) :
+  cannot compute exact p-value with ties
+Warning in wilcox.test.default(xi, xj, paired = paired, ...) :
+  cannot compute exact p-value with ties
+Warning in wilcox.test.default(xi, xj, paired = paired, ...) :
+  cannot compute exact p-value with ties
+Warning in wilcox.test.default(xi, xj, paired = paired, ...) :
+  cannot compute exact p-value with ties
+Warning in wilcox.test.default(xi, xj, paired = paired, ...) :
+  cannot compute exact p-value with ties
+
+	Pairwise comparisons using Wilcoxon rank sum test with continuity correction 
+
+data:  Ozone and Month 
+
+    May    Jun    Jul    Aug   
+Jun 1.0000 -      -      -     
+Jul 0.0003 0.1414 -      -     
+Aug 0.0012 0.2591 1.0000 -     
+Sep 1.0000 1.0000 0.0074 0.0325
+
+P value adjustment method: bonferroni 
+> detach()
+> 
+> 
+> 
+> cleanEx()
+> nameEx("plot.acf")
+> ### * plot.acf
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: plot.acf
+> ### Title: Plot Autocovariance and Autocorrelation Functions
+> ### Aliases: plot.acf
+> ### Keywords: hplot ts
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> z4  <- ts(matrix(rnorm(400), 100, 4), start = c(1961, 1), frequency = 12)
+> z7  <- ts(matrix(rnorm(700), 100, 7), start = c(1961, 1), frequency = 12)
+> acf(z4)
+> acf(z7, max.mfrow = 7)   # squeeze onto 1 page
+> acf(z7) # multi-page
+> 
+> 
+> 
+> cleanEx()
+> nameEx("plot.isoreg")
+> ### * plot.isoreg
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: plot.isoreg
+> ### Title: Plot Method for isoreg Objects
+> ### Aliases: plot.isoreg lines.isoreg
+> ### Keywords: hplot print
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> utils::example(isoreg) # for the examples there
+
+isoreg> require(graphics)
+
+isoreg> (ir <- isoreg(c(1,0,4,3,3,5,4,2,0)))
+Isotonic regression from isoreg(x = c(1, 0, 4, 3, 3, 5, 4, 2, 0)),
+  with 2 knots / breaks at obs.nr. 2 9 ;
+  initially ordered 'x'
+  and further components List of 4
+ $ x : num [1:9] 1 2 3 4 5 6 7 8 9
+ $ y : num [1:9] 1 0 4 3 3 5 4 2 0
+ $ yf: num [1:9] 0.5 0.5 3 3 3 3 3 3 3
+ $ yc: num [1:10] 0 1 1 5 8 11 16 20 22 22
+
+isoreg> plot(ir, plot.type = "row")
+
+isoreg> (ir3 <- isoreg(y3 <- c(1,0,4,3,3,5,4,2, 3))) # last "3", not "0"
+Isotonic regression from isoreg(x = y3 <- c(1, 0, 4, 3, 3, 5, 4, 2, 3)),
+  with 3 knots / breaks at obs.nr. 2 5 9 ;
+  initially ordered 'x'
+  and further components List of 4
+ $ x : num [1:9] 1 2 3 4 5 6 7 8 9
+ $ y : num [1:9] 1 0 4 3 3 5 4 2 3
+ $ yf: num [1:9] 0.5 0.5 3.33 3.33 3.33 ...
+ $ yc: num [1:10] 0 1 1 5 8 11 16 20 22 25
+
+isoreg> (fi3 <- as.stepfun(ir3))
+Step function
+Call: isoreg(x = y3 <- c(1, 0, 4, 3, 3, 5, 4, 2, 3))
+ x[1:3] =      2,      5,      9
+4 plateau levels =    0.5,    0.5, 3.3333,    3.5
+
+isoreg> (ir4 <- isoreg(1:10, y4 <- c(5, 9, 1:2, 5:8, 3, 8)))
+Isotonic regression from isoreg(x = 1:10, y = y4 <- c(5, 9, 1:2, 5:8, 3, 8)),
+  with 5 knots / breaks at obs.nr. 4 5 6 9 10 ;
+  initially ordered 'x'
+  and further components List of 4
+ $ x : num [1:10] 1 2 3 4 5 6 7 8 9 10
+ $ y : num [1:10] 5 9 1 2 5 6 7 8 3 8
+ $ yf: num [1:10] 4.25 4.25 4.25 4.25 5 6 6 6 6 8
+ $ yc: num [1:11] 0 5 14 15 17 22 28 35 43 46 ...
+
+isoreg> cat(sprintf("R^2 = %.2f\n",
+isoreg+             1 - sum(residuals(ir4)^2) / ((10-1)*var(y4))))
+R^2 = 0.21
+
+isoreg> ## If you are interested in the knots alone :
+isoreg> with(ir4, cbind(iKnots, yf[iKnots]))
+     iKnots     
+[1,]      4 4.25
+[2,]      5 5.00
+[3,]      6 6.00
+[4,]      9 6.00
+[5,]     10 8.00
+
+isoreg> ## Example of unordered x[] with ties:
+isoreg> x <- sample((0:30)/8)
+
+isoreg> y <- exp(x)
+
+isoreg> x. <- round(x) # ties!
+
+isoreg> plot(m <- isoreg(x., y))
+
+isoreg> stopifnot(all.equal(with(m, yf[iKnots]),
+isoreg+                     as.vector(tapply(y, x., mean))))
+> 
+> plot(y3, main = "simple plot(.)  +  lines(<isoreg>)")
+> lines(ir3)
+> 
+> ## 'same' plot as above, "proving" that only ranks of 'x' are important
+> plot(isoreg(2^(1:9), c(1,0,4,3,3,5,4,2,0)), plot.type = "row", log = "x")
+Warning in xy.coords(x, y, xlabel, ylabel, log) :
+  1 x value <= 0 omitted from logarithmic plot
+Warning in xy.coords(x, y, xlabel, ylabel, log) :
+  1 x value <= 0 omitted from logarithmic plot
+> 
+> plot(ir3, plot.type = "row", ylab = "y3")
+> plot(isoreg(y3 - 4), plot.type = "r", ylab = "y3 - 4")
+> plot(ir4, plot.type = "ro",  ylab = "y4", xlab = "x = 1:n")
+> 
+> ## experiment a bit with these (C-c C-j):
+> plot(isoreg(sample(9),  y3), plot.type = "row")
+> plot(isoreg(sample(9),  y3), plot.type = "col.wise")
+> 
+> plot(ir <- isoreg(sample(10), sample(10, replace = TRUE)),
++                   plot.type = "r")
+> 
+> 
+> 
+> cleanEx()
+> nameEx("plot.lm")
+> ### * plot.lm
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: plot.lm
+> ### Title: Plot Diagnostics for an 'lm' Object
+> ### Aliases: plot.lm
+> ### Keywords: hplot regression
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> ## Analysis of the life-cycle savings data
+> ## given in Belsley, Kuh and Welsch.
+> lm.SR <- lm(sr ~ pop15 + pop75 + dpi + ddpi, data = LifeCycleSavings)
+> plot(lm.SR)
+> 
+> ## 4 plots on 1 page;
+> ## allow room for printing model formula in outer margin:
+> par(mfrow = c(2, 2), oma = c(0, 0, 2, 0)) -> opar
+> plot(lm.SR)
+> plot(lm.SR, id.n = NULL)                 # no id's
+> plot(lm.SR, id.n = 5, labels.id = NULL)  # 5 id numbers
+> 
+> ## Was default in R <= 2.1.x:
+> ## Cook's distances instead of Residual-Leverage plot
+> plot(lm.SR, which = 1:4)
+> 
+> ## All the above fit a smooth curve where applicable
+> ## by default unless "add.smooth" is changed.
+> ## Give a smoother curve by increasing the lowess span :
+> plot(lm.SR, panel = function(x, y) panel.smooth(x, y, span = 1))
+> 
+> par(mfrow = c(2,1)) # same oma as above
+> plot(lm.SR, which = 1:2, sub.caption = "Saving Rates, n=50, p=5")
+> 
+> ## Cook's distance tweaking
+> par(mfrow = c(2,3)) # same oma ...
+> plot(lm.SR, which = 1:6, cook.col = "royalblue")
+> 
+> ## A case where over plotting of the "legend" is to be avoided:
+> if(dev.interactive(TRUE)) getOption("device")(height = 6, width = 4)
+> par(mfrow = c(3,1), mar = c(5,5,4,2)/2 +.1, mgp = c(1.4, .5, 0))
+> plot(lm.SR, which = 5, extend.ylim.f = c(0.2, 0.08))
+> plot(lm.SR, which = 5, cook.lty = "dotdash",
++      cook.legendChanges = list(x = "bottomright", legend = "Cook"))
+> plot(lm.SR, which = 5, cook.legendChanges = NULL)  # no "legend"
+> 
+> ## Don't show: 
+> ## An example with *long* formula that needs abbreviation:
+> par(mfrow = c(2,2))
+> for(i in 1:5) assign(paste("long.var.name", i, sep = "."), runif(10))
+> plot(lm(long.var.name.1 ~
++         long.var.name.2 + long.var.name.3 + long.var.name.4 + long.var.name.5))
+> ## End(Don't show)
+> par(opar) # reset par()s
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("plot.ppr")
+> ### * plot.ppr
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: plot.ppr
+> ### Title: Plot Ridge Functions for Projection Pursuit Regression Fit
+> ### Aliases: plot.ppr
+> ### Keywords: hplot
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> rock1 <- within(rock, { area1 <- area/10000; peri1 <- peri/10000 })
+> par(mfrow = c(3,2)) # maybe: , pty = "s"
+> rock.ppr <- ppr(log(perm) ~ area1 + peri1 + shape,
++                 data = rock1, nterms = 2, max.terms = 5)
+> plot(rock.ppr, main = "ppr(log(perm)~ ., nterms=2, max.terms=5)")
+> plot(update(rock.ppr, bass = 5), main = "update(..., bass = 5)")
+> plot(update(rock.ppr, sm.method = "gcv", gcvpen = 2),
++      main = "update(..., sm.method=\"gcv\", gcvpen=2)")
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("plot.profile.nls")
+> ### * plot.profile.nls
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: plot.profile.nls
+> ### Title: Plot a profile.nls Object
+> ### Aliases: plot.profile.nls
+> ### Keywords: nonlinear regression models
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> # obtain the fitted object
+> fm1 <- nls(demand ~ SSasympOrig(Time, A, lrc), data = BOD)
+> # get the profile for the fitted model
+> pr1 <- profile(fm1, alphamax = 0.05)
+> opar <- par(mfrow = c(2,2), oma = c(1.1, 0, 1.1, 0), las = 1)
+> plot(pr1, conf = c(95, 90, 80, 50)/100)
+> plot(pr1, conf = c(95, 90, 80, 50)/100, absVal = FALSE)
+> mtext("Confidence intervals based on the profile sum of squares",
++       side = 3, outer = TRUE)
+> mtext("BOD data - confidence levels of 50%, 80%, 90% and 95%",
++       side = 1, outer = TRUE)
+> par(opar)
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("plot.stepfun")
+> ### * plot.stepfun
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: plot.stepfun
+> ### Title: Plot Step Functions
+> ### Aliases: plot.stepfun lines.stepfun
+> ### Keywords: hplot
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> y0 <- c(1,2,4,3)
+> sfun0  <- stepfun(1:3, y0, f = 0)
+> sfun.2 <- stepfun(1:3, y0, f = .2)
+> sfun1  <- stepfun(1:3, y0, right = TRUE)
+> 
+> tt <- seq(0, 3, by = 0.1)
+> op <- par(mfrow = c(2,2))
+> plot(sfun0); plot(sfun0, xval = tt, add = TRUE, col.hor = "bisque")
+> plot(sfun.2);plot(sfun.2, xval = tt, add = TRUE, col = "orange") # all colors
+> plot(sfun1);lines(sfun1, xval = tt, col.hor = "coral")
+> ##-- This is  revealing :
+> plot(sfun0, verticals = FALSE,
++      main = "stepfun(x, y0, f=f)  for f = 0, .2, 1")
+> for(i in 1:3)
++   lines(list(sfun0, sfun.2, stepfun(1:3, y0, f = 1))[[i]], col = i)
+> legend(2.5, 1.9, paste("f =", c(0, 0.2, 1)), col = 1:3, lty = 1, y.intersp = 1)
+> par(op)
+> 
+> # Extend and/or restrict 'viewport':
+> plot(sfun0, xlim = c(0,5), ylim = c(0, 3.5),
++      main = "plot(stepfun(*), xlim= . , ylim = .)")
+> 
+> ##-- this works too (automatic call to  ecdf(.)):
+> plot.stepfun(rt(50, df = 3), col.vert = "gray20")
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("plot.ts")
+> ### * plot.ts
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: plot.ts
+> ### Title: Plotting Time-Series Objects
+> ### Aliases: plot.ts lines.ts
+> ### Keywords: hplot ts
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> ## Multivariate
+> z <- ts(matrix(rt(200 * 8, df = 3), 200, 8),
++         start = c(1961, 1), frequency = 12)
+> plot(z, yax.flip = TRUE)
+> plot(z, axes = FALSE, ann = FALSE, frame.plot = TRUE,
++      mar.multi = c(0,0,0,0), oma.multi = c(1,1,5,1))
+> title("plot(ts(..), axes=FALSE, ann=FALSE, frame.plot=TRUE, mar..., oma...)")
+> 
+> z <- window(z[,1:3], end = c(1969,12))
+> plot(z, type = "b")    # multiple
+> plot(z, plot.type = "single", lty = 1:3, col = 4:2)
+> 
+> ## A phase plot:
+> plot(nhtemp, lag(nhtemp, 1), cex = .8, col = "blue",
++      main = "Lag plot of New Haven temperatures")
+> 
+> ## xy.lines and xy.labels are FALSE for large series:
+> plot(lag(sunspots, 1), sunspots, pch = ".")
+> 
+> SMI <- EuStockMarkets[, "SMI"]
+> plot(lag(SMI,  1), SMI, pch = ".")
+> plot(lag(SMI, 20), SMI, pch = ".", log = "xy",
++      main = "4 weeks lagged SMI stocks -- log scale", xy.lines =  TRUE)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("poisson.test")
+> ### * poisson.test
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: poisson.test
+> ### Title: Exact Poisson tests
+> ### Aliases: poisson.test
+> ### Keywords: htest
+> 
+> ### ** Examples
+> 
+> ### These are paraphrased from data sets in the ISwR package
+> 
+> ## SMR, Welsh Nickel workers
+> poisson.test(137, 24.19893)
+
+	Exact Poisson test
+
+data:  137 time base: 24.19893
+number of events = 137, time base = 24.199, p-value < 2.2e-16
+alternative hypothesis: true event rate is not equal to 1
+95 percent confidence interval:
+ 4.753125 6.692709
+sample estimates:
+event rate 
+  5.661407 
+
+> 
+> ## eba1977, compare Fredericia to other three cities for ages 55-59
+> poisson.test(c(11, 6+8+7), c(800, 1083+1050+878))
+
+	Comparison of Poisson rates
+
+data:  c(11, 6 + 8 + 7) time base: c(800, 1083 + 1050 + 878)
+count1 = 11, expected count1 = 6.7174, p-value = 0.07967
+alternative hypothesis: true rate ratio is not equal to 1
+95 percent confidence interval:
+ 0.8584264 4.2772659
+sample estimates:
+rate ratio 
+  1.971488 
+
+> 
+> 
+> 
+> cleanEx()
+> nameEx("poly")
+> ### * poly
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: poly
+> ### Title: Compute Orthogonal Polynomials
+> ### Aliases: poly polym predict.poly makepredictcall.poly
+> ### Keywords: math
+> 
+> ### ** Examples
+> 
+> od <- options(digits = 3) # avoid too much visual clutter
+> (z <- poly(1:10, 3))
+           1      2      3
+ [1,] -0.495  0.522 -0.453
+ [2,] -0.385  0.174  0.151
+ [3,] -0.275 -0.087  0.378
+ [4,] -0.165 -0.261  0.335
+ [5,] -0.055 -0.348  0.130
+ [6,]  0.055 -0.348 -0.130
+ [7,]  0.165 -0.261 -0.335
+ [8,]  0.275 -0.087 -0.378
+ [9,]  0.385  0.174 -0.151
+[10,]  0.495  0.522  0.453
+attr(,"coefs")
+attr(,"coefs")$alpha
+[1] 5.5 5.5 5.5
+
+attr(,"coefs")$norm2
+[1]    1.0   10.0   82.5  528.0 3088.8
+
+attr(,"degree")
+[1] 1 2 3
+attr(,"class")
+[1] "poly"   "matrix"
+> predict(z, seq(2, 4, 0.5))
+          1       2     3
+[1,] -0.385  0.1741 0.151
+[2,] -0.330  0.0326 0.305
+[3,] -0.275 -0.0870 0.378
+[4,] -0.220 -0.1850 0.383
+[5,] -0.165 -0.2611 0.335
+> zapsmall(poly(seq(4, 6, 0.5), 3, coefs = attr(z, "coefs")))
+          1      2      3
+[1,] -0.165 -0.261  0.335
+[2,] -0.110 -0.316  0.246
+[3,] -0.055 -0.348  0.130
+[4,]  0.000 -0.359  0.000
+[5,]  0.055 -0.348 -0.130
+attr(,"coefs")
+attr(,"coefs")$alpha
+[1] 5.5 5.5 5.5
+
+attr(,"coefs")$norm2
+[1]    1.0   10.0   82.5  528.0 3088.8
+
+attr(,"degree")
+[1] 1 2 3
+attr(,"class")
+[1] "poly"   "matrix"
+> 
+>  zm <- zapsmall(polym (    1:4, c(1, 4:6),  degree = 3)) # or just poly():
+> (z1 <- zapsmall(poly(cbind(1:4, c(1, 4:6)), degree = 3)))
+        1.0  2.0    3.0    0.1   1.1    2.1    0.2    1.2    0.3
+[1,] -0.671  0.5 -0.224 -0.802 0.538 -0.401  0.323 -0.217 -0.053
+[2,] -0.224 -0.5  0.671  0.000 0.000  0.000 -0.688  0.154  0.526
+[3,]  0.224 -0.5 -0.671  0.267 0.060 -0.134 -0.239 -0.053 -0.788
+[4,]  0.671  0.5  0.224  0.535 0.359  0.267  0.604  0.405  0.315
+attr(,"degree")
+[1] 1 2 3 1 2 3 2 3 3
+attr(,"coefs")
+attr(,"coefs")[[1]]
+attr(,"coefs")[[1]]$alpha
+[1] 2.5 2.5 2.5
+
+attr(,"coefs")[[1]]$norm2
+[1] 1.0 4.0 5.0 4.0 1.8
+
+
+attr(,"coefs")[[2]]
+attr(,"coefs")[[2]]$alpha
+[1] 4.00 2.71 4.47
+
+attr(,"coefs")[[2]]$norm2
+[1]  1.00  4.00 14.00 25.86  9.94
+
+
+attr(,"class")
+[1] "poly"   "matrix"
+> ## they are the same :
+> stopifnot(all.equal(zm, z1, tolerance = 1e-15))
+> 
+> ## poly(<matrix>, df) --- used to fail till July 14 (vive la France!), 2017:
+> m2 <- cbind(1:4, c(1, 4:6))
+> pm2 <- zapsmall(poly(m2, 3)) # "unnamed degree = 3"
+> stopifnot(all.equal(pm2, zm, tolerance = 1e-15))
+> 
+> options(od)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("power")
+> ### * power
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: power
+> ### Title: Create a Power Link Object
+> ### Aliases: power
+> ### Keywords: models
+> 
+> ### ** Examples
+> 
+> power()
+$linkfun
+function (mu) 
+mu
+<environment: namespace:stats>
+
+$linkinv
+function (eta) 
+eta
+<environment: namespace:stats>
+
+$mu.eta
+function (eta) 
+rep.int(1, length(eta))
+<environment: namespace:stats>
+
+$valideta
+function (eta) 
+TRUE
+<environment: namespace:stats>
+
+$name
+[1] "identity"
+
+attr(,"class")
+[1] "link-glm"
+> quasi(link = power(1/3))[c("linkfun", "linkinv")]
+$linkfun
+function (mu) 
+mu^lambda
+<bytecode: 0x65bdfe0>
+<environment: 0x65c9218>
+
+$linkinv
+function (eta) 
+pmax(eta^(1/lambda), .Machine$double.eps)
+<bytecode: 0x65bde90>
+<environment: 0x65c9218>
+
+> 
+> 
+> 
+> cleanEx()
+> nameEx("power.anova.test")
+> ### * power.anova.test
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: power.anova.test
+> ### Title: Power Calculations for Balanced One-Way Analysis of Variance
+> ###   Tests
+> ### Aliases: power.anova.test
+> ### Keywords: htest
+> 
+> ### ** Examples
+> 
+> power.anova.test(groups = 4, n = 5, between.var = 1, within.var = 3)
+
+     Balanced one-way analysis of variance power calculation 
+
+         groups = 4
+              n = 5
+    between.var = 1
+     within.var = 3
+      sig.level = 0.05
+          power = 0.3535594
+
+NOTE: n is number in each group
+
+> # Power = 0.3535594
+> 
+> power.anova.test(groups = 4, between.var = 1, within.var = 3,
++                  power = .80)
+
+     Balanced one-way analysis of variance power calculation 
+
+         groups = 4
+              n = 11.92613
+    between.var = 1
+     within.var = 3
+      sig.level = 0.05
+          power = 0.8
+
+NOTE: n is number in each group
+
+> # n = 11.92613
+> 
+> ## Assume we have prior knowledge of the group means:
+> groupmeans <- c(120, 130, 140, 150)
+> power.anova.test(groups = length(groupmeans),
++                  between.var = var(groupmeans),
++                  within.var = 500, power = .90) # n = 15.18834
+
+     Balanced one-way analysis of variance power calculation 
+
+         groups = 4
+              n = 15.18834
+    between.var = 166.6667
+     within.var = 500
+      sig.level = 0.05
+          power = 0.9
+
+NOTE: n is number in each group
+
+> 
+> 
+> 
+> cleanEx()
+> nameEx("power.prop.test")
+> ### * power.prop.test
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: power.prop.test
+> ### Title: Power Calculations for Two-Sample Test for Proportions
+> ### Aliases: power.prop.test
+> ### Keywords: htest
+> 
+> ### ** Examples
+> 
+> power.prop.test(n = 50, p1 = .50, p2 = .75)      ## => power = 0.740
+
+     Two-sample comparison of proportions power calculation 
+
+              n = 50
+             p1 = 0.5
+             p2 = 0.75
+      sig.level = 0.05
+          power = 0.7401659
+    alternative = two.sided
+
+NOTE: n is number in *each* group
+
+> power.prop.test(p1 = .50, p2 = .75, power = .90) ## =>     n = 76.7
+
+     Two-sample comparison of proportions power calculation 
+
+              n = 76.70693
+             p1 = 0.5
+             p2 = 0.75
+      sig.level = 0.05
+          power = 0.9
+    alternative = two.sided
+
+NOTE: n is number in *each* group
+
+> power.prop.test(n = 50, p1 = .5, power = .90)    ## =>    p2 = 0.8026
+
+     Two-sample comparison of proportions power calculation 
+
+              n = 50
+             p1 = 0.5
+             p2 = 0.8026141
+      sig.level = 0.05
+          power = 0.9
+    alternative = two.sided
+
+NOTE: n is number in *each* group
+
+> power.prop.test(n = 50, p1 = .5, p2 = 0.9, power = .90, sig.level=NULL)
+
+     Two-sample comparison of proportions power calculation 
+
+              n = 50
+             p1 = 0.5
+             p2 = 0.9
+      sig.level = 0.001318068
+          power = 0.9
+    alternative = two.sided
+
+NOTE: n is number in *each* group
+
+>                                                  ## => sig.l = 0.00131
+> power.prop.test(p1 = .5, p2 = 0.501, sig.level=.001, power=0.90)
+
+     Two-sample comparison of proportions power calculation 
+
+              n = 10451937
+             p1 = 0.5
+             p2 = 0.501
+      sig.level = 0.001
+          power = 0.9
+    alternative = two.sided
+
+NOTE: n is number in *each* group
+
+>                                                  ## => n = 10451937
+> try(
++  power.prop.test(n=30, p1=0.90, p2=NULL, power=0.8)
++ ) # a warning  (which may become an error)
+Warning in power.prop.test(n = 30, p1 = 0.9, p2 = NULL, power = 0.8) :
+  No p2 in [p1, 1] can be found to achieve the desired power
+
+     Two-sample comparison of proportions power calculation 
+
+              n = 30
+             p1 = 0.9
+             p2 = 1.030182
+      sig.level = 0.05
+          power = 0.8
+    alternative = two.sided
+
+NOTE: n is number in *each* group
+
+> ## Reason:
+> power.prop.test(      p1=0.90, p2= 1.0, power=0.8) ##-> n = 73.37
+
+     Two-sample comparison of proportions power calculation 
+
+              n = 73.37427
+             p1 = 0.9
+             p2 = 1
+      sig.level = 0.05
+          power = 0.8
+    alternative = two.sided
+
+NOTE: n is number in *each* group
+
+> 
+> 
+> 
+> cleanEx()
+> nameEx("power.t.test")
+> ### * power.t.test
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: power.t.test
+> ### Title: Power calculations for one and two sample t tests
+> ### Aliases: power.t.test
+> ### Keywords: htest
+> 
+> ### ** Examples
+> 
+>  power.t.test(n = 20, delta = 1)
+
+     Two-sample t test power calculation 
+
+              n = 20
+          delta = 1
+             sd = 1
+      sig.level = 0.05
+          power = 0.8689528
+    alternative = two.sided
+
+NOTE: n is number in *each* group
+
+>  power.t.test(power = .90, delta = 1)
+
+     Two-sample t test power calculation 
+
+              n = 22.0211
+          delta = 1
+             sd = 1
+      sig.level = 0.05
+          power = 0.9
+    alternative = two.sided
+
+NOTE: n is number in *each* group
+
+>  power.t.test(power = .90, delta = 1, alternative = "one.sided")
+
+     Two-sample t test power calculation 
+
+              n = 17.84713
+          delta = 1
+             sd = 1
+      sig.level = 0.05
+          power = 0.9
+    alternative = one.sided
+
+NOTE: n is number in *each* group
+
+> 
+> 
+> 
+> cleanEx()
+> nameEx("pp.test")
+> ### * pp.test
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: PP.test
+> ### Title: Phillips-Perron Test for Unit Roots
+> ### Aliases: PP.test
+> ### Keywords: ts
+> 
+> ### ** Examples
+> 
+> x <- rnorm(1000)
+> PP.test(x)
+
+	Phillips-Perron Unit Root Test
+
+data:  x
+Dickey-Fuller = -33.057, Truncation lag parameter = 7, p-value = 0.01
+
+> y <- cumsum(x) # has unit root
+> PP.test(y)
+
+	Phillips-Perron Unit Root Test
+
+data:  y
+Dickey-Fuller = -2.6899, Truncation lag parameter = 7, p-value = 0.2863
+
+> 
+> 
+> 
+> cleanEx()
+> nameEx("ppoints")
+> ### * ppoints
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: ppoints
+> ### Title: Ordinates for Probability Plotting
+> ### Aliases: ppoints
+> ### Keywords: dplot arith distribution
+> 
+> ### ** Examples
+> 
+> ppoints(4) # the same as  ppoints(1:4)
+[1] 0.1470588 0.3823529 0.6176471 0.8529412
+> ppoints(10)
+ [1] 0.06097561 0.15853659 0.25609756 0.35365854 0.45121951 0.54878049
+ [7] 0.64634146 0.74390244 0.84146341 0.93902439
+> ppoints(10, a = 1/2)
+ [1] 0.05 0.15 0.25 0.35 0.45 0.55 0.65 0.75 0.85 0.95
+> 
+> ## Visualize including the fractions :
+> require(graphics)## Don't show: 
+> lNs <- loadedNamespaces()
+> ## End(Don't show)
+> p.ppoints <- function(n, ..., add = FALSE, col = par("col")) {
++   pn <- ppoints(n, ...)
++   if(add)
++       points(pn, pn, col = col)
++   else {
++       tit <- match.call(); tit[[1]] <- quote(ppoints)
++       plot(pn,pn, main = deparse(tit), col=col,
++            xlim = 0:1, ylim = 0:1, xaxs = "i", yaxs = "i")
++       abline(0, 1, col = adjustcolor(1, 1/4), lty = 3)
++   }
++   if(!add && requireNamespace("MASS", quietly = TRUE))
++     text(pn, pn, as.character(MASS::fractions(pn)),
++          adj = c(0,0)-1/4, cex = 3/4, xpd = NA, col=col)
++   abline(h = pn, v = pn, col = adjustcolor(col, 1/2), lty = 2, lwd = 1/2)
++ }
+> 
+> p.ppoints(4)
+> p.ppoints(10)
+> p.ppoints(10, a = 1/2)
+> p.ppoints(21)
+> p.ppoints(8) ; p.ppoints(8, a = 1/2, add=TRUE, col="tomato")
+> ## Don't show: 
+> if(!any("MASS" == lNs)) unloadNamespace("MASS")
+> ## End(Don't show)
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("ppr")
+> ### * ppr
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: ppr
+> ### Title: Projection Pursuit Regression
+> ### Aliases: ppr ppr.default ppr.formula
+> ### Keywords: regression
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> # Note: your numerical values may differ
+> attach(rock)
+> area1 <- area/10000; peri1 <- peri/10000
+> rock.ppr <- ppr(log(perm) ~ area1 + peri1 + shape,
++                 data = rock, nterms = 2, max.terms = 5)
+> rock.ppr
+Call:
+ppr(formula = log(perm) ~ area1 + peri1 + shape, data = rock, 
+    nterms = 2, max.terms = 5)
+
+Goodness of fit:
+ 2 terms  3 terms  4 terms  5 terms 
+8.737806 5.289517 4.745799 4.490378 
+> # Call:
+> # ppr.formula(formula = log(perm) ~ area1 + peri1 + shape, data = rock,
+> #     nterms = 2, max.terms = 5)
+> #
+> # Goodness of fit:
+> #  2 terms  3 terms  4 terms  5 terms
+> # 8.737806 5.289517 4.745799 4.490378
+> 
+> summary(rock.ppr)
+Call:
+ppr(formula = log(perm) ~ area1 + peri1 + shape, data = rock, 
+    nterms = 2, max.terms = 5)
+
+Goodness of fit:
+ 2 terms  3 terms  4 terms  5 terms 
+8.737806 5.289517 4.745799 4.490378 
+
+Projection direction vectors ('alpha'):
+      term 1      term 2     
+area1  0.34357179  0.37071027
+peri1 -0.93781471 -0.61923542
+shape  0.04961846  0.69218595
+
+Coefficients of ridge terms ('beta'):
+   term 1    term 2 
+1.6079271 0.5460971 
+> # .....  (same as above)
+> # .....
+> #
+> # Projection direction vectors ('alpha'):
+> #       term 1      term 2
+> # area1  0.34357179  0.37071027
+> # peri1 -0.93781471 -0.61923542
+> # shape  0.04961846  0.69218595
+> #
+> # Coefficients of ridge terms:
+> #    term 1    term 2
+> # 1.6079271 0.5460971
+> 
+> par(mfrow = c(3,2))   # maybe: , pty = "s")
+> plot(rock.ppr, main = "ppr(log(perm)~ ., nterms=2, max.terms=5)")
+> plot(update(rock.ppr, bass = 5), main = "update(..., bass = 5)")
+> plot(update(rock.ppr, sm.method = "gcv", gcvpen = 2),
++      main = "update(..., sm.method=\"gcv\", gcvpen=2)")
+> cbind(perm = rock$perm, prediction = round(exp(predict(rock.ppr)), 1))
+     perm prediction
+1     6.3        5.9
+2     6.3        6.5
+3     6.3       12.1
+4     6.3        7.4
+5    17.1       16.3
+6    17.1       13.2
+7    17.1       41.2
+8    17.1       10.6
+9   119.0      101.9
+10  119.0       73.0
+11  119.0       46.8
+12  119.0      121.7
+13   82.4      107.8
+14   82.4       79.7
+15   82.4       98.3
+16   82.4      128.8
+17   58.6       66.8
+18   58.6       33.2
+19   58.6       58.7
+20   58.6      111.6
+21  142.0      118.9
+22  142.0      128.4
+23  142.0       91.9
+24  142.0      188.5
+25  740.0      341.7
+26  740.0      577.9
+27  740.0      895.7
+28  740.0     1041.0
+29  890.0      560.8
+30  890.0      721.8
+31  890.0      937.9
+32  890.0      848.5
+33  950.0      806.4
+34  950.0     1085.4
+35  950.0      945.6
+36  950.0      848.5
+37  100.0      154.1
+38  100.0      178.0
+39  100.0      321.5
+40  100.0      232.7
+41 1300.0     1067.0
+42 1300.0      697.8
+43 1300.0     1236.6
+44 1300.0     1301.8
+45  580.0      485.1
+46  580.0      285.1
+47  580.0      644.3
+48  580.0      571.5
+> detach()
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("prcomp")
+> ### * prcomp
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: prcomp
+> ### Title: Principal Components Analysis
+> ### Aliases: prcomp prcomp.formula prcomp.default plot.prcomp
+> ###   predict.prcomp print.prcomp summary.prcomp print.summary.prcomp
+> ### Keywords: multivariate
+> 
+> ### ** Examples
+> 
+> C <- chol(S <- toeplitz(.9 ^ (0:31))) # Cov.matrix and its root
+> all.equal(S, crossprod(C))
+[1] TRUE
+> set.seed(17)
+> X <- matrix(rnorm(32000), 1000, 32)
+> Z <- X %*% C  ## ==>  cov(Z) ~=  C'C = S
+> all.equal(cov(Z), S, tolerance = 0.08)
+[1] TRUE
+> pZ <- prcomp(Z, tol = 0.1)
+> summary(pZ) # only ~14 PCs (out of 32)
+Importance of first k=14 (out of 32) components:
+                          PC1    PC2    PC3     PC4     PC5     PC6     PC7
+Standard deviation     3.6415 2.7178 1.8447 1.39430 1.10207 0.90922 0.76951
+Proportion of Variance 0.4173 0.2324 0.1071 0.06118 0.03822 0.02602 0.01864
+Cumulative Proportion  0.4173 0.6498 0.7569 0.81806 0.85628 0.88230 0.90094
+                           PC8     PC9    PC10    PC11    PC12    PC13   PC14
+Standard deviation     0.67490 0.60833 0.51638 0.49048 0.44452 0.40326 0.3904
+Proportion of Variance 0.01433 0.01165 0.00839 0.00757 0.00622 0.00512 0.0048
+Cumulative Proportion  0.91527 0.92692 0.93531 0.94288 0.94910 0.95422 0.9590
+> ## or choose only 3 PCs more directly:
+> pz3 <- prcomp(Z, rank. = 3)
+> summary(pz3) # same numbers as the first 3 above
+Importance of first k=3 (out of 32) components:
+                          PC1    PC2    PC3
+Standard deviation     3.6415 2.7178 1.8447
+Proportion of Variance 0.4173 0.2324 0.1071
+Cumulative Proportion  0.4173 0.6498 0.7569
+> stopifnot(ncol(pZ$rotation) == 14, ncol(pz3$rotation) == 3,
++           all.equal(pz3$sdev, pZ$sdev, tolerance = 1e-15)) # exactly equal typically
+> 
+> 
+> 
+> 
+> cleanEx()
+> nameEx("predict.HoltWinters")
+> ### * predict.HoltWinters
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: predict.HoltWinters
+> ### Title: Prediction Function for Fitted Holt-Winters Models
+> ### Aliases: predict.HoltWinters
+> ### Keywords: ts
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> m <- HoltWinters(co2)
+> p <- predict(m, 50, prediction.interval = TRUE)
+> plot(m, p)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("predict")
+> ### * predict
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: predict
+> ### Title: Model Predictions
+> ### Aliases: predict
+> ### Keywords: methods
+> 
+> ### ** Examples
+> 
+> ## Don't show: 
+> old <- Sys.getlocale("LC_COLLATE")
+>        invisible(Sys.setlocale("LC_COLLATE", "C"))
+> ## End(Don't show)
+> require(utils)
+> 
+> ## All the "predict" methods found
+> ## NB most of the methods in the standard packages are hidden.
+> ## Output will depend on what namespaces are (or have been) loaded.
+> ## IGNORE_RDIFF_BEGIN
+> for(fn in methods("predict"))
++    try({
++        f <- eval(substitute(getAnywhere(fn)$objs[[1]], list(fn = fn)))
++        cat(fn, ":\n\t", deparse(args(f)), "\n")
++        }, silent = TRUE)
+predict.Arima :
+	 function (object, n.ahead = 1L, newxreg = NULL, se.fit = TRUE,      ...)  NULL 
+predict.HoltWinters :
+	 function (object, n.ahead = 1L, prediction.interval = FALSE,      level = 0.95, ...)  NULL 
+predict.StructTS :
+	 function (object, n.ahead = 1L, se.fit = TRUE, ...)  NULL 
+predict.ar :
+	 function (object, newdata, n.ahead = 1L, se.fit = TRUE, ...)  NULL 
+predict.arima0 :
+	 function (object, n.ahead = 1L, newxreg = NULL, se.fit = TRUE,      ...)  NULL 
+predict.bSpline :
+	 function (object, x, nseg = 50, deriv = 0, ...)  NULL 
+predict.bs :
+	 function (object, newx, ...)  NULL 
+predict.glm :
+	 function (object, newdata = NULL, type = c("link", "response",      "terms"), se.fit = FALSE, dispersion = NULL, terms = NULL,      na.action = na.pass, ...)  NULL 
+predict.glmmPQL :
+	 function (object, newdata = NULL, type = c("link", "response"),      level = Q, na.action = na.pass, ...)  NULL 
+predict.lda :
+	 function (object, newdata, prior = object$prior, dimen, method = c("plug-in",      "predictive", "debiased"), ...)  NULL 
+predict.lm :
+	 function (object, newdata, se.fit = FALSE, scale = NULL, df = Inf,      interval = c("none", "confidence", "prediction"), level = 0.95,      type = c("response", "terms"), terms = NULL, na.action = na.pass,      pred.var = res.var/weights, weights = 1, ...)  NULL 
+predict.loess :
+	 function (object, newdata = NULL, se = FALSE, na.action = na.pass,      ...)  NULL 
+predict.lqs :
+	 function (object, newdata, na.action = na.pass, ...)  NULL 
+predict.mca :
+	 function (object, newdata, type = c("row", "factor"), ...)  NULL 
+predict.mlm :
+	 function (object, newdata, se.fit = FALSE, na.action = na.pass,      ...)  NULL 
+predict.nbSpline :
+	 function (object, x, nseg = 50, deriv = 0, ...)  NULL 
+predict.nls :
+	 function (object, newdata, se.fit = FALSE, scale = NULL, df = Inf,      interval = c("none", "confidence", "prediction"), level = 0.95,      ...)  NULL 
+predict.npolySpline :
+	 function (object, x, nseg = 50, deriv = 0, ...)  NULL 
+predict.ns :
+	 function (object, newx, ...)  NULL 
+predict.pbSpline :
+	 function (object, x, nseg = 50, deriv = 0, ...)  NULL 
+predict.polr :
+	 function (object, newdata, type = c("class", "probs"), ...)  NULL 
+predict.poly :
+	 function (object, newdata, ...)  NULL 
+predict.polySpline :
+	 function (object, x, nseg = 50, deriv = 0, ...)  NULL 
+predict.ppolySpline :
+	 function (object, x, nseg = 50, deriv = 0, ...)  NULL 
+predict.ppr :
+	 function (object, newdata, ...)  NULL 
+predict.prcomp :
+	 function (object, newdata, ...)  NULL 
+predict.princomp :
+	 function (object, newdata, ...)  NULL 
+predict.qda :
+	 function (object, newdata, prior = object$prior, method = c("plug-in",      "predictive", "debiased", "looCV"), ...)  NULL 
+predict.rlm :
+	 function (object, newdata = NULL, scale = NULL, ...)  NULL 
+predict.smooth.spline :
+	 function (object, x, deriv = 0, ...)  NULL 
+predict.smooth.spline.fit :
+	 function (object, x, deriv = 0, ...)  NULL 
+> ## IGNORE_RDIFF_END
+> ## Don't show: 
+> invisible(Sys.setlocale("LC_COLLATE", old))
+> ## End(Don't show)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("predict.arima")
+> ### * predict.arima
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: predict.Arima
+> ### Title: Forecast from ARIMA fits
+> ### Aliases: predict.Arima
+> ### Keywords: ts
+> 
+> ### ** Examples
+> 
+> od <- options(digits = 5) # avoid too much spurious accuracy
+> predict(arima(lh, order = c(3,0,0)), n.ahead = 12)
+$pred
+Time Series:
+Start = 49 
+End = 60 
+Frequency = 1 
+ [1] 2.4602 2.2708 2.1986 2.2607 2.3470 2.4145 2.4389 2.4315 2.4102 2.3917
+[11] 2.3827 2.3827
+
+$se
+Time Series:
+Start = 49 
+End = 60 
+Frequency = 1 
+ [1] 0.42268 0.50293 0.52452 0.52472 0.53055 0.53692 0.53880 0.53884 0.53910
+[10] 0.53952 0.53970 0.53971
+
+> 
+> (fit <- arima(USAccDeaths, order = c(0,1,1),
++               seasonal = list(order = c(0,1,1))))
+
+Call:
+arima(x = USAccDeaths, order = c(0, 1, 1), seasonal = list(order = c(0, 1, 1)))
+
+Coefficients:
+         ma1    sma1
+      -0.430  -0.553
+s.e.   0.123   0.178
+
+sigma^2 estimated as 99347:  log likelihood = -425.44,  aic = 856.88
+> predict(fit, n.ahead = 6)
+$pred
+        Jan    Feb    Mar    Apr    May    Jun
+1979 8336.1 7531.8 8314.6 8616.9 9488.9 9859.8
+
+$se
+        Jan    Feb    Mar    Apr    May    Jun
+1979 315.45 363.01 405.02 443.06 478.09 510.72
+
+> options(od)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("predict.glm")
+> ### * predict.glm
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: predict.glm
+> ### Title: Predict Method for GLM Fits
+> ### Aliases: predict.glm
+> ### Keywords: models regression
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> ## example from Venables and Ripley (2002, pp. 190-2.)
+> ldose <- rep(0:5, 2)
+> numdead <- c(1, 4, 9, 13, 18, 20, 0, 2, 6, 10, 12, 16)
+> sex <- factor(rep(c("M", "F"), c(6, 6)))
+> SF <- cbind(numdead, numalive = 20-numdead)
+> budworm.lg <- glm(SF ~ sex*ldose, family = binomial)
+> summary(budworm.lg)
+
+Call:
+glm(formula = SF ~ sex * ldose, family = binomial)
+
+Deviance Residuals: 
+     Min        1Q    Median        3Q       Max  
+-1.39849  -0.32094  -0.07592   0.38220   1.10375  
+
+Coefficients:
+            Estimate Std. Error z value Pr(>|z|)    
+(Intercept)  -2.9935     0.5527  -5.416 6.09e-08 ***
+sexM          0.1750     0.7783   0.225    0.822    
+ldose         0.9060     0.1671   5.422 5.89e-08 ***
+sexM:ldose    0.3529     0.2700   1.307    0.191    
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+
+(Dispersion parameter for binomial family taken to be 1)
+
+    Null deviance: 124.8756  on 11  degrees of freedom
+Residual deviance:   4.9937  on  8  degrees of freedom
+AIC: 43.104
+
+Number of Fisher Scoring iterations: 4
+
+> 
+> plot(c(1,32), c(0,1), type = "n", xlab = "dose",
++      ylab = "prob", log = "x")
+> text(2^ldose, numdead/20, as.character(sex))
+> ld <- seq(0, 5, 0.1)
+> lines(2^ld, predict(budworm.lg, data.frame(ldose = ld,
++    sex = factor(rep("M", length(ld)), levels = levels(sex))),
++    type = "response"))
+> lines(2^ld, predict(budworm.lg, data.frame(ldose = ld,
++    sex = factor(rep("F", length(ld)), levels = levels(sex))),
++    type = "response"))
+> 
+> 
+> 
+> cleanEx()
+> nameEx("predict.lm")
+> ### * predict.lm
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: predict.lm
+> ### Title: Predict method for Linear Model Fits
+> ### Aliases: predict.lm
+> ### Keywords: regression
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> ## Predictions
+> x <- rnorm(15)
+> y <- x + rnorm(15)
+> predict(lm(y ~ x))
+         1          2          3          4          5          6          7 
+-0.6270917  0.2550840 -0.8548779  1.7923222  0.4139268 -0.8383687  0.5858991 
+         8          9         10         11         12         13         14 
+ 0.8591183  0.6821126 -0.2774594  1.7013932  0.4796306 -0.6214146 -2.3566523 
+        15 
+ 1.2801229 
+> new <- data.frame(x = seq(-3, 3, 0.5))
+> predict(lm(y ~ x), new, se.fit = TRUE)
+$fit
+          1           2           3           4           5           6 
+-3.21182462 -2.66733702 -2.12284942 -1.57836182 -1.03387422 -0.48938662 
+          7           8           9          10          11          12 
+ 0.05510098  0.59958858  1.14407618  1.68856379  2.23305139  2.77753899 
+         13 
+ 3.32202659 
+
+$se.fit
+        1         2         3         4         5         6         7         8 
+0.7545246 0.6449274 0.5380108 0.4357521 0.3423511 0.2672616 0.2292452 0.2461261 
+        9        10        11        12        13 
+0.3090353 0.3966456 0.4960370 0.6013965 0.7100725 
+
+$df
+[1] 13
+
+$residual.scale
+[1] 0.8832292
+
+> pred.w.plim <- predict(lm(y ~ x), new, interval = "prediction")
+> pred.w.clim <- predict(lm(y ~ x), new, interval = "confidence")
+> matplot(new$x, cbind(pred.w.clim, pred.w.plim[,-1]),
++         lty = c(1,2,2,3,3), type = "l", ylab = "predicted y")
+> 
+> ## Prediction intervals, special cases
+> ##  The first three of these throw warnings
+> w <- 1 + x^2
+> fit <- lm(y ~ x)
+> wfit <- lm(y ~ x, weights = w)
+> predict(fit, interval = "prediction")
+Warning in predict.lm(fit, interval = "prediction") :
+  predictions on current data refer to _future_ responses
+
+          fit        lwr         upr
+1  -0.6270917 -2.6311852  1.37700188
+2   0.2550840 -1.7160306  2.22619860
+3  -0.8548779 -2.8806560  1.17090027
+4   1.7923222 -0.3158417  3.90048609
+5   0.4139268 -1.5600794  2.38793297
+6  -0.8383687 -2.8624006  1.18566313
+7   0.5858991 -1.3942769  2.56607519
+8   0.8591183 -1.1372816  2.85551813
+9   0.6821126 -1.3028836  2.66710884
+10 -0.2774594 -2.2586227  1.70370390
+11  1.7013932 -0.3922734  3.79505973
+12  0.4796306 -1.4963611  2.45562227
+13 -0.6214146 -2.6250348  1.38220556
+14 -2.3566523 -4.6435457 -0.06975883
+15  1.2801229 -0.7562734  3.31651909
+> predict(wfit, interval = "prediction")
+Warning in predict.lm(wfit, interval = "prediction") :
+  predictions on current data refer to _future_ responses
+
+Warning in predict.lm(wfit, interval = "prediction") :
+  assuming prediction variance inversely proportional to weights used for fitting
+
+          fit        lwr        upr
+1  -0.6795401 -2.7152943  1.3562142
+2   0.2726114 -2.0676598  2.6128825
+3  -0.9253947 -2.7873163  0.9365269
+4   1.9317861  0.5179227  3.3456495
+5   0.4440538 -1.8206181  2.7087257
+6  -0.9075760 -2.7817747  0.9666227
+7   0.6296673 -1.5219043  2.7812390
+8   0.9245587 -1.0206112  2.8697287
+9   0.7335126 -1.3468740  2.8138992
+10 -0.3021743 -2.5805044  1.9761557
+11  1.8336444  0.3867018  3.2805870
+12  0.5149694 -1.7094216  2.7393604
+13 -0.6734127 -2.7135353  1.3667099
+14 -2.5462925 -3.8073357 -1.2852494
+15  1.3789581 -0.2749888  3.0329051
+> predict(wfit, new, interval = "prediction")
+Warning in predict.lm(wfit, new, interval = "prediction") :
+  Assuming constant prediction variance even though model fit is weighted
+
+           fit         lwr        upr
+1  -3.46929871 -6.02669183 -0.9119056
+2  -2.88162137 -5.38456191 -0.3786808
+3  -2.29394403 -4.75159401  0.1637059
+4  -1.70626669 -4.12830217  0.7157688
+5  -1.11858935 -3.51511782  1.2779391
+6  -0.53091201 -2.91236575  1.8505417
+7   0.05676532 -2.32024444  2.4337751
+8   0.64444266 -1.73881338  3.0276987
+9   1.23212000 -1.16798909  3.6322291
+10  1.81979734 -0.60755066  4.2471453
+11  2.40747468 -0.05715376  4.8721031
+12  2.99515202  0.48364874  5.5066553
+13  3.58282936  1.01538228  6.1502764
+> predict(wfit, new, interval = "prediction", weights = (new$x)^2)
+           fit        lwr         upr
+1  -3.46929871 -4.7661745 -2.17242292
+2  -2.88162137 -4.1752786 -1.58796414
+3  -2.29394403 -3.6870669 -0.90082115
+4  -1.70626669 -3.3884596 -0.02407382
+5  -1.11858935 -3.5151178  1.27793911
+6  -0.53091201 -5.2286061  4.16678211
+7   0.05676532       -Inf         Inf
+8   0.64444266 -4.0541654  5.34305071
+9   1.23212000 -1.1679891  3.63222909
+10  1.81979734  0.1299644  3.50963027
+11  2.40747468  1.0020775  3.81287188
+12  2.99515202  1.6850045  4.30529950
+13  3.58282936  2.2662384  4.89942029
+> predict(wfit, new, interval = "prediction", weights = ~x^2)
+           fit        lwr         upr
+1  -3.46929871 -4.7661745 -2.17242292
+2  -2.88162137 -4.1752786 -1.58796414
+3  -2.29394403 -3.6870669 -0.90082115
+4  -1.70626669 -3.3884596 -0.02407382
+5  -1.11858935 -3.5151178  1.27793911
+6  -0.53091201 -5.2286061  4.16678211
+7   0.05676532       -Inf         Inf
+8   0.64444266 -4.0541654  5.34305071
+9   1.23212000 -1.1679891  3.63222909
+10  1.81979734  0.1299644  3.50963027
+11  2.40747468  1.0020775  3.81287188
+12  2.99515202  1.6850045  4.30529950
+13  3.58282936  2.2662384  4.89942029
+> 
+> ##-- From  aov(.) example ---- predict(.. terms)
+> npk.aov <- aov(yield ~ block + N*P*K, npk)
+> (termL <- attr(terms(npk.aov), "term.labels"))
+[1] "block" "N"     "P"     "K"     "N:P"   "N:K"   "P:K"   "N:P:K"
+> (pt <- predict(npk.aov, type = "terms"))
+    block      N          P          K        N:P    N:K        P:K N:P:K
+1  -0.850 -4.925  0.2083333 -0.9583333  0.9416667  1.175  0.4250000     0
+2  -0.850  4.925  0.2083333  0.9583333 -2.8250000  1.175 -0.1416667     0
+3  -0.850 -4.925 -0.2083333  0.9583333  0.9416667  1.175 -0.1416667     0
+4  -0.850  4.925 -0.2083333 -0.9583333  0.9416667 -3.525 -0.1416667     0
+5   2.575  4.925 -0.2083333  0.9583333  0.9416667  1.175 -0.1416667     0
+6   2.575  4.925  0.2083333 -0.9583333 -2.8250000 -3.525  0.4250000     0
+7   2.575 -4.925 -0.2083333 -0.9583333  0.9416667  1.175 -0.1416667     0
+8   2.575 -4.925  0.2083333  0.9583333  0.9416667  1.175 -0.1416667     0
+9   5.900 -4.925  0.2083333  0.9583333  0.9416667  1.175 -0.1416667     0
+10  5.900  4.925  0.2083333 -0.9583333 -2.8250000 -3.525  0.4250000     0
+11  5.900  4.925 -0.2083333  0.9583333  0.9416667  1.175 -0.1416667     0
+12  5.900 -4.925 -0.2083333 -0.9583333  0.9416667  1.175 -0.1416667     0
+13 -4.750  4.925 -0.2083333  0.9583333  0.9416667  1.175 -0.1416667     0
+14 -4.750  4.925  0.2083333 -0.9583333 -2.8250000 -3.525  0.4250000     0
+15 -4.750 -4.925 -0.2083333 -0.9583333  0.9416667  1.175 -0.1416667     0
+16 -4.750 -4.925  0.2083333  0.9583333  0.9416667  1.175 -0.1416667     0
+17 -4.350  4.925  0.2083333  0.9583333 -2.8250000  1.175 -0.1416667     0
+18 -4.350 -4.925 -0.2083333  0.9583333  0.9416667  1.175 -0.1416667     0
+19 -4.350  4.925 -0.2083333 -0.9583333  0.9416667 -3.525 -0.1416667     0
+20 -4.350 -4.925  0.2083333 -0.9583333  0.9416667  1.175  0.4250000     0
+21  1.475  4.925 -0.2083333 -0.9583333  0.9416667 -3.525 -0.1416667     0
+22  1.475  4.925  0.2083333  0.9583333 -2.8250000  1.175 -0.1416667     0
+23  1.475 -4.925  0.2083333 -0.9583333  0.9416667  1.175  0.4250000     0
+24  1.475 -4.925 -0.2083333  0.9583333  0.9416667  1.175 -0.1416667     0
+attr(,"constant")
+[1] 54.875
+> pt. <- predict(npk.aov, type = "terms", terms = termL[1:4])
+> stopifnot(all.equal(pt[,1:4], pt.,
++                     tolerance = 1e-12, check.attributes = FALSE))
+> 
+> 
+> 
+> cleanEx()
+> nameEx("predict.loess")
+> ### * predict.loess
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: predict.loess
+> ### Title: Predict Loess Curve or Surface
+> ### Aliases: predict.loess
+> ### Keywords: smooth
+> 
+> ### ** Examples
+> 
+> cars.lo <- loess(dist ~ speed, cars)
+> predict(cars.lo, data.frame(speed = seq(5, 30, 1)), se = TRUE)
+$fit
+        1         2         3         4         5         6         7         8 
+ 7.797353 10.002308 12.499786 15.281082 18.446568 21.865315 25.517015 29.350386 
+        9        10        11        12        13        14        15        16 
+33.230660 37.167935 41.205226 45.055736 48.355889 49.824812 51.986702 56.461318 
+       17        18        19        20        21        22        23        24 
+61.959729 68.569313 76.316068 85.212121 95.324047        NA        NA        NA 
+       25        26 
+       NA        NA 
+
+$se.fit
+       1        2        3        4        5        6        7        8 
+7.568120 5.945831 4.990827 4.545284 4.308639 4.115049 3.789542 3.716231 
+       9       10       11       12       13       14       15       16 
+3.776947 4.091747 4.709568 4.245427 4.035929 3.753410 4.004705 4.043190 
+      17       18       19       20       21       22       23       24 
+4.026105 4.074664 4.570818 5.954217 8.302014       NA       NA       NA 
+      25       26 
+      NA       NA 
+
+$residual.scale
+[1] 15.29496
+
+$df
+[1] 44.6179
+
+> # to get extrapolation
+> cars.lo2 <- loess(dist ~ speed, cars,
++   control = loess.control(surface = "direct"))
+> predict(cars.lo2, data.frame(speed = seq(5, 30, 1)), se = TRUE)
+$fit
+         1          2          3          4          5          6          7 
+  7.741006   9.926596  12.442424  15.281082  18.425712  21.865315  25.713413 
+         8          9         10         11         12         13         14 
+ 29.350386  33.230660  37.167935  41.205226  45.781544  48.355889  50.067148 
+        15         16         17         18         19         20         21 
+ 51.986702  56.445263  62.025404  68.569313  76.193111  85.053364  95.300523 
+        22         23         24         25         26 
+106.974661 120.092581 134.665851 150.698545 168.190283 
+
+$se.fit
+        1         2         3         4         5         6         7         8 
+ 7.565991  5.959097  5.012013  4.550013  4.321596  4.119331  3.939804  3.720098 
+        9        10        11        12        13        14        15        16 
+ 3.780877  4.096004  4.714469  4.398936  4.040129  4.184257  4.008873  4.061865 
+       17        18        19        20        21        22        23        24 
+ 4.033998  4.078904  4.584606  5.952480  8.306901 11.601911 15.792480 20.864660 
+       25        26 
+26.823827 33.683999 
+
+$residual.scale
+[1] 15.31087
+
+$df
+[1] 44.55085
+
+> 
+> 
+> 
+> cleanEx()
+> nameEx("predict.nls")
+> ### * predict.nls
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: predict.nls
+> ### Title: Predicting from Nonlinear Least Squares Fits
+> ### Aliases: predict.nls
+> ### Keywords: nonlinear regression models
+> 
+> ### ** Examples
+> 
+> ## Don't show: 
+> od <- options(digits = 5)
+> ## End(Don't show)
+> require(graphics)
+> 
+> fm <- nls(demand ~ SSasympOrig(Time, A, lrc), data = BOD)
+> predict(fm)              # fitted values at observed times
+[1]  7.8874 12.5250 15.2517 16.8549 17.7975 18.6776
+> ## Form data plot and smooth line for the predictions
+> opar <- par(las = 1)
+> plot(demand ~ Time, data = BOD, col = 4,
++      main = "BOD data and fitted first-order curve",
++      xlim = c(0,7), ylim = c(0, 20) )
+> tt <- seq(0, 8, length.out = 101)
+> lines(tt, predict(fm, list(Time = tt)))
+> par(opar)
+> ## Don't show: 
+> options(od)
+> ## End(Don't show)
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("predict.smooth.spline")
+> ### * predict.smooth.spline
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: predict.smooth.spline
+> ### Title: Predict from Smoothing Spline Fit
+> ### Aliases: predict.smooth.spline
+> ### Keywords: smooth
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> attach(cars)
+> cars.spl <- smooth.spline(speed, dist, df = 6.4)
+> ## Don't show: 
+> print.default(cars.spl)
+$x
+ [1]  4  7  8  9 10 11 12 13 14 15 16 17 18 19 20 22 23 24 25
+
+$y
+ [1]  5.833836 12.575603 15.037250 17.795007 20.935898 24.228479 28.488199
+ [8] 33.969567 38.578804 40.986090 43.494687 47.156344 50.862366 52.692043
+[15] 54.754531 66.036824 75.010419 85.290273 95.014670
+
+$w
+ [1] 2 2 1 1 3 2 4 4 4 3 2 3 4 3 5 1 1 4 1
+
+$yin
+ [1]  6.00000 13.00000 16.00000 10.00000 26.00000 22.50000 21.50000 35.00000
+ [9] 50.50000 33.33333 36.00000 40.66667 64.50000 50.00000 50.40000 66.00000
+[17] 54.00000 93.75000 85.00000
+
+$tol
+[1] 7e-06
+
+$data
+$data$x
+ [1]  4  4  7  7  8  9 10 10 10 11 11 12 12 12 12 13 13 13 13 14 14 14 14 15 15
+[26] 15 16 16 17 17 17 18 18 18 18 19 19 19 20 20 20 20 20 22 23 24 24 24 24 25
+
+$data$y
+ [1]   2  10   4  22  16  10  18  26  34  17  28  14  20  24  28  26  34  34  46
+[20]  26  36  60  80  20  26  54  32  40  32  40  50  42  56  76  84  36  46  68
+[39]  32  48  52  56  64  66  54  70  92  93 120  85
+
+$data$w
+[1] 1
+
+
+$no.weights
+[1] TRUE
+
+$n
+[1] 50
+
+$lev
+ [1] 0.8934338 0.4379689 0.1842314 0.1529048 0.3641292 0.2022506 0.3399561
+ [8] 0.3123173 0.3248036 0.2745481 0.1965797 0.2777060 0.3368286 0.2546068
+[15] 0.5210306 0.1743541 0.1531692 0.6249904 0.3750748
+
+$cv
+[1] FALSE
+
+$cv.crit
+[1] 257.2678
+
+$pen.crit
+[1] 3015.936
+
+$crit
+[1] 3
+
+$df
+[1] 6.400884
+
+$spar
+[1] 0.4873957
+
+$ratio
+[1] 6.575971e-05
+
+$lambda
+[1] 0.0008526606
+
+$iparms
+ icrit  ispar   iter        errorI 
+     3      0     13      0     NA 
+
+$auxM
+NULL
+
+$fit
+$knot
+ [1] 0.0000000 0.0000000 0.0000000 0.0000000 0.1428571 0.1904762 0.2380952
+ [8] 0.2857143 0.3333333 0.3809524 0.4285714 0.4761905 0.5238095 0.5714286
+[15] 0.6190476 0.6666667 0.7142857 0.7619048 0.8571429 0.9047619 0.9523810
+[22] 1.0000000 1.0000000 1.0000000 1.0000000
+
+$nk
+[1] 21
+
+$min
+[1] 4
+
+$range
+[1] 21
+
+$coef
+ [1]  5.833836  8.018090 10.929996 14.991332 17.703639 20.964154 24.055137
+ [8] 28.186176 34.129352 39.113818 40.888197 43.249931 47.080201 51.367328
+[15] 52.624683 54.840036 62.675393 74.718525 85.502238 91.843521 95.014670
+
+attr(,"class")
+[1] "smooth.spline.fit"
+
+$call
+smooth.spline(x = speed, y = dist, df = 6.4)
+
+attr(,"class")
+[1] "smooth.spline"
+> ## End(Don't show)
+> 
+> ## "Proof" that the derivatives are okay, by comparing with approximation
+> diff.quot <- function(x, y) {
++   ## Difference quotient (central differences where available)
++   n <- length(x); i1 <- 1:2; i2 <- (n-1):n
++   c(diff(y[i1]) / diff(x[i1]), (y[-i1] - y[-i2]) / (x[-i1] - x[-i2]),
++     diff(y[i2]) / diff(x[i2]))
++ }
+> 
+> xx <- unique(sort(c(seq(0, 30, by = .2), kn <- unique(speed))))
+> i.kn <- match(kn, xx)   # indices of knots within xx
+> op <- par(mfrow = c(2,2))
+> plot(speed, dist, xlim = range(xx), main = "Smooth.spline & derivatives")
+> lines(pp <- predict(cars.spl, xx), col = "red")
+> points(kn, pp$y[i.kn], pch = 3, col = "dark red")
+> mtext("s(x)", col = "red")
+> for(d in 1:3){
++   n <- length(pp$x)
++   plot(pp$x, diff.quot(pp$x,pp$y), type = "l", xlab = "x", ylab = "",
++        col = "blue", col.main = "red",
++        main = paste0("s" ,paste(rep("'", d), collapse = ""), "(x)"))
++   mtext("Difference quotient approx.(last)", col = "blue")
++   lines(pp <- predict(cars.spl, xx, deriv = d), col = "red")
++ ## Don't show: 
++   print(pp)
++ ## End(Don't show)
++   points(kn, pp$y[i.kn], pch = 3, col = "dark red")
++   abline(h = 0, lty = 3, col = "gray")
++ }
+$x
+  [1]  0.0  0.2  0.4  0.6  0.8  1.0  1.2  1.4  1.6  1.8  2.0  2.2  2.4  2.6  2.8
+ [16]  3.0  3.2  3.4  3.6  3.8  4.0  4.2  4.4  4.6  4.8  5.0  5.2  5.4  5.6  5.8
+ [31]  6.0  6.2  6.4  6.6  6.8  7.0  7.2  7.4  7.6  7.8  8.0  8.2  8.4  8.6  8.8
+ [46]  9.0  9.2  9.4  9.6  9.8 10.0 10.2 10.4 10.6 10.8 11.0 11.2 11.4 11.6 11.8
+ [61] 12.0 12.2 12.4 12.6 12.8 13.0 13.2 13.4 13.6 13.8 14.0 14.2 14.4 14.6 14.8
+ [76] 15.0 15.2 15.4 15.6 15.8 16.0 16.2 16.4 16.6 16.8 17.0 17.2 17.4 17.6 17.8
+ [91] 18.0 18.2 18.4 18.6 18.8 19.0 19.2 19.4 19.6 19.8 20.0 20.2 20.4 20.6 20.8
+[106] 21.0 21.2 21.4 21.6 21.8 22.0 22.2 22.4 22.6 22.8 23.0 23.2 23.4 23.6 23.8
+[121] 24.0 24.2 24.4 24.6 24.8 25.0 25.2 25.4 25.6 25.8 26.0 26.2 26.4 26.6 26.8
+[136] 27.0 27.2 27.4 27.6 27.8 28.0 28.2 28.4 28.6 28.8 29.0 29.2 29.4 29.6 29.8
+[151] 30.0
+
+$y
+  [1]  2.184254  2.184254  2.184254  2.184254  2.184254  2.184254  2.184254
+  [8]  2.184254  2.184254  2.184254  2.184254  2.184254  2.184254  2.184254
+ [15]  2.184254  2.184254  2.184254  2.184254  2.184254  2.184254  2.184254
+ [22]  2.185055  2.187545  2.191723  2.197591  2.205146  2.214391  2.225324
+ [29]  2.237946  2.252257  2.268256  2.285944  2.305321  2.326387  2.349141
+ [36]  2.373584  2.401852  2.436084  2.476278  2.522435  2.574554  2.635109
+ [43]  2.706573  2.788944  2.882223  2.986411  3.081697  3.148275  3.186142
+ [50]  3.195300  3.175749  3.166034  3.204703  3.291756  3.427192  3.611011
+ [57]  3.834464  4.088800  4.374019  4.690122  5.037108  5.344118  5.540295
+ [64]  5.625638  5.600147  5.463821  5.227052  4.900227  4.483347  3.976412
+ [71]  3.379422  2.813354  2.399183  2.136910  2.026534  2.068056  2.203151
+ [78]  2.373493  2.579082  2.819918  3.096002  3.369475  3.602482  3.795021
+ [85]  3.947094  4.058699  4.080338  3.962512  3.705220  3.308463  2.772241
+ [92]  2.234965  1.835047  1.572485  1.447281  1.459435  1.588383  1.813566
+ [99]  2.134982  2.552632  3.066516  3.621455  4.162272  4.688967  5.201539
+[106]  5.699989  6.184317  6.654523  7.110606  7.552567  7.980405  8.394132
+[113]  8.793758  9.179284  9.550708  9.908031 10.197841 10.366724 10.414682
+[120] 10.341713 10.147818  9.918957  9.741090  9.614215  9.538335  9.513448
+[127]  9.513448  9.513448  9.513448  9.513448  9.513448  9.513448  9.513448
+[134]  9.513448  9.513448  9.513448  9.513448  9.513448  9.513448  9.513448
+[141]  9.513448  9.513448  9.513448  9.513448  9.513448  9.513448  9.513448
+[148]  9.513448  9.513448  9.513448  9.513448
+
+$x
+  [1]  0.0  0.2  0.4  0.6  0.8  1.0  1.2  1.4  1.6  1.8  2.0  2.2  2.4  2.6  2.8
+ [16]  3.0  3.2  3.4  3.6  3.8  4.0  4.2  4.4  4.6  4.8  5.0  5.2  5.4  5.6  5.8
+ [31]  6.0  6.2  6.4  6.6  6.8  7.0  7.2  7.4  7.6  7.8  8.0  8.2  8.4  8.6  8.8
+ [46]  9.0  9.2  9.4  9.6  9.8 10.0 10.2 10.4 10.6 10.8 11.0 11.2 11.4 11.6 11.8
+ [61] 12.0 12.2 12.4 12.6 12.8 13.0 13.2 13.4 13.6 13.8 14.0 14.2 14.4 14.6 14.8
+ [76] 15.0 15.2 15.4 15.6 15.8 16.0 16.2 16.4 16.6 16.8 17.0 17.2 17.4 17.6 17.8
+ [91] 18.0 18.2 18.4 18.6 18.8 19.0 19.2 19.4 19.6 19.8 20.0 20.2 20.4 20.6 20.8
+[106] 21.0 21.2 21.4 21.6 21.8 22.0 22.2 22.4 22.6 22.8 23.0 23.2 23.4 23.6 23.8
+[121] 24.0 24.2 24.4 24.6 24.8 25.0 25.2 25.4 25.6 25.8 26.0 26.2 26.4 26.6 26.8
+[136] 27.0 27.2 27.4 27.6 27.8 28.0 28.2 28.4 28.6 28.8 29.0 29.2 29.4 29.6 29.8
+[151] 30.0
+
+$y
+  [1]  0.0000000000  0.0000000000  0.0000000000  0.0000000000  0.0000000000
+  [6]  0.0000000000  0.0000000000  0.0000000000  0.0000000000  0.0000000000
+ [11]  0.0000000000  0.0000000000  0.0000000000  0.0000000000  0.0000000000
+ [16]  0.0000000000  0.0000000000  0.0000000000  0.0000000000  0.0000000000
+ [21] -0.0002165147  0.0082269950  0.0166705047  0.0251140144  0.0335575241
+ [26]  0.0420010338  0.0504445435  0.0588880532  0.0673315629  0.0757750726
+ [31]  0.0842185822  0.0926620919  0.1011056016  0.1095491113  0.1179926210
+ [36]  0.1264361307  0.1562499762  0.1860638217  0.2158776671  0.2456915126
+ [41]  0.2755053581  0.3300457726  0.3845861870  0.4391266015  0.4936670160
+ [46]  0.5482074305  0.4046596591  0.2611118877  0.1175641163 -0.0259836551
+ [51] -0.1695314264  0.0723860374  0.3143035013  0.5562209652  0.7981384291
+ [56]  1.0400558930  1.1944722898  1.3488886866  1.5033050835  1.6577214803
+ [61]  1.8121378771  1.2579681380  0.7037983989  0.1496286598 -0.4045410793
+ [66] -0.9587108185 -1.4089861032 -1.8592613879 -2.3095366727 -2.7598119574
+ [71] -3.2100872422 -2.4505987906 -1.6911103389 -0.9316218873 -0.1721334357
+ [76]  0.5873550159  0.7635912416  0.9398274674  1.1160636931  1.2922999189
+ [81]  1.4685361447  1.2662005031  1.0638648615  0.8615292198  0.6591935782
+ [86]  0.4568579366 -0.2404682740 -0.9377944846 -1.6351206952 -2.3324469058
+ [91] -3.0297731165 -2.3429865119 -1.6561999074 -0.9694133029 -0.2826266984
+ [96]  0.4041599061  0.8853283585  1.3664968109  1.8476652633  2.3288337157
+[101]  2.8100021681  2.7393907024  2.6687792367  2.5981677710  2.5275563053
+[106]  2.4569448396  2.3863333739  2.3157219082  2.2451104425  2.1744989768
+[111]  2.1038875112  2.0333827893  1.9628780674  1.8923733455  1.8218686237
+[116]  1.7513639018  1.1467332516  0.5421026014 -0.0625280487 -0.6671586989
+[121] -1.2717893491 -1.0168219086 -0.7618544680 -0.5068870274 -0.2519195869
+[126]  0.0030478537  0.0000000000  0.0000000000  0.0000000000  0.0000000000
+[131]  0.0000000000  0.0000000000  0.0000000000  0.0000000000  0.0000000000
+[136]  0.0000000000  0.0000000000  0.0000000000  0.0000000000  0.0000000000
+[141]  0.0000000000  0.0000000000  0.0000000000  0.0000000000  0.0000000000
+[146]  0.0000000000  0.0000000000  0.0000000000  0.0000000000  0.0000000000
+[151]  0.0000000000
+
+$x
+  [1]  0.0  0.2  0.4  0.6  0.8  1.0  1.2  1.4  1.6  1.8  2.0  2.2  2.4  2.6  2.8
+ [16]  3.0  3.2  3.4  3.6  3.8  4.0  4.2  4.4  4.6  4.8  5.0  5.2  5.4  5.6  5.8
+ [31]  6.0  6.2  6.4  6.6  6.8  7.0  7.2  7.4  7.6  7.8  8.0  8.2  8.4  8.6  8.8
+ [46]  9.0  9.2  9.4  9.6  9.8 10.0 10.2 10.4 10.6 10.8 11.0 11.2 11.4 11.6 11.8
+ [61] 12.0 12.2 12.4 12.6 12.8 13.0 13.2 13.4 13.6 13.8 14.0 14.2 14.4 14.6 14.8
+ [76] 15.0 15.2 15.4 15.6 15.8 16.0 16.2 16.4 16.6 16.8 17.0 17.2 17.4 17.6 17.8
+ [91] 18.0 18.2 18.4 18.6 18.8 19.0 19.2 19.4 19.6 19.8 20.0 20.2 20.4 20.6 20.8
+[106] 21.0 21.2 21.4 21.6 21.8 22.0 22.2 22.4 22.6 22.8 23.0 23.2 23.4 23.6 23.8
+[121] 24.0 24.2 24.4 24.6 24.8 25.0 25.2 25.4 25.6 25.8 26.0 26.2 26.4 26.6 26.8
+[136] 27.0 27.2 27.4 27.6 27.8 28.0 28.2 28.4 28.6 28.8 29.0 29.2 29.4 29.6 29.8
+[151] 30.0
+
+$y
+  [1]  0.00000000  0.00000000  0.00000000  0.00000000  0.00000000  0.00000000
+  [7]  0.00000000  0.00000000  0.00000000  0.00000000  0.00000000  0.00000000
+ [13]  0.00000000  0.00000000  0.00000000  0.00000000  0.00000000  0.00000000
+ [19]  0.00000000  0.00000000  0.04221755  0.04221755  0.04221755  0.04221755
+ [25]  0.04221755  0.04221755  0.04221755  0.04221755  0.04221755  0.04221755
+ [31]  0.04221755  0.04221755  0.04221755  0.04221755  0.04221755  0.14906923
+ [37]  0.14906923  0.14906923  0.14906923  0.14906923  0.27270207  0.27270207
+ [43]  0.27270207  0.27270207  0.27270207 -0.71773886 -0.71773886 -0.71773886
+ [49] -0.71773886 -0.71773886  1.20958732  1.20958732  1.20958732  1.20958732
+ [55]  1.20958732  0.77208198  0.77208198  0.77208198  0.77208198  0.77208198
+ [61] -2.77084870 -2.77084870 -2.77084870 -2.77084870 -2.77084870 -2.25137642
+ [67] -2.25137642 -2.25137642 -2.25137642 -2.25137642  3.79744226  3.79744226
+ [73]  3.79744226  3.79744226  3.79744226  0.88118113  0.88118113  0.88118113
+ [79]  0.88118113  0.88118113 -1.01167821 -1.01167821 -1.01167821 -1.01167821
+ [85] -1.01167821 -3.48663105 -3.48663105 -3.48663105 -3.48663105 -3.48663105
+ [91]  3.43393302  3.43393302  3.43393302  3.43393302  3.43393302  2.40584226
+ [97]  2.40584226  2.40584226  2.40584226  2.40584226 -0.35305733 -0.35305733
+[103] -0.35305733 -0.35305733 -0.35305733 -0.35305733 -0.35305733 -0.35305733
+[109] -0.35305733 -0.35305733 -0.35252361 -0.35252361 -0.35252361 -0.35252361
+[115] -0.35252361 -3.02315325 -3.02315325 -3.02315325 -3.02315325 -3.02315325
+[121]  1.27483720  1.27483720  1.27483720  1.27483720  1.27483720  1.27483720
+[127]  0.00000000  0.00000000  0.00000000  0.00000000  0.00000000  0.00000000
+[133]  0.00000000  0.00000000  0.00000000  0.00000000  0.00000000  0.00000000
+[139]  0.00000000  0.00000000  0.00000000  0.00000000  0.00000000  0.00000000
+[145]  0.00000000  0.00000000  0.00000000  0.00000000  0.00000000  0.00000000
+[151]  0.00000000
+
+> detach(); par(op)
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("princomp")
+> ### * princomp
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: princomp
+> ### Title: Principal Components Analysis
+> ### Aliases: princomp princomp.formula princomp.default plot.princomp
+> ###   print.princomp predict.princomp
+> ### Keywords: multivariate
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> ## The variances of the variables in the
+> ## USArrests data vary by orders of magnitude, so scaling is appropriate
+> (pc.cr <- princomp(USArrests))  # inappropriate
+Call:
+princomp(x = USArrests)
+
+Standard deviations:
+   Comp.1    Comp.2    Comp.3    Comp.4 
+82.890847 14.069560  6.424204  2.457837 
+
+ 4  variables and  50 observations.
+> princomp(USArrests, cor = TRUE) # =^= prcomp(USArrests, scale=TRUE)
+Call:
+princomp(x = USArrests, cor = TRUE)
+
+Standard deviations:
+   Comp.1    Comp.2    Comp.3    Comp.4 
+1.5748783 0.9948694 0.5971291 0.4164494 
+
+ 4  variables and  50 observations.
+> ## Similar, but different:
+> ## The standard deviations differ by a factor of sqrt(49/50)
+> 
+> summary(pc.cr <- princomp(USArrests, cor = TRUE))
+Importance of components:
+                          Comp.1    Comp.2    Comp.3     Comp.4
+Standard deviation     1.5748783 0.9948694 0.5971291 0.41644938
+Proportion of Variance 0.6200604 0.2474413 0.0891408 0.04335752
+Cumulative Proportion  0.6200604 0.8675017 0.9566425 1.00000000
+> loadings(pc.cr)  # note that blank entries are small but not zero
+
+Loadings:
+         Comp.1 Comp.2 Comp.3 Comp.4
+Murder    0.536  0.418  0.341  0.649
+Assault   0.583  0.188  0.268 -0.743
+UrbanPop  0.278 -0.873  0.378  0.134
+Rape      0.543 -0.167 -0.818       
+
+               Comp.1 Comp.2 Comp.3 Comp.4
+SS loadings      1.00   1.00   1.00   1.00
+Proportion Var   0.25   0.25   0.25   0.25
+Cumulative Var   0.25   0.50   0.75   1.00
+> ## The signs of the columns of the loadings are arbitrary
+> plot(pc.cr) # shows a screeplot.
+> biplot(pc.cr)
+> 
+> ## Formula interface
+> princomp(~ ., data = USArrests, cor = TRUE)
+Call:
+princomp(formula = ~., data = USArrests, cor = TRUE)
+
+Standard deviations:
+   Comp.1    Comp.2    Comp.3    Comp.4 
+1.5748783 0.9948694 0.5971291 0.4164494 
+
+ 4  variables and  50 observations.
+> 
+> ## NA-handling
+> USArrests[1, 2] <- NA
+> pc.cr <- princomp(~ Murder + Assault + UrbanPop,
++                   data = USArrests, na.action = na.exclude, cor = TRUE)
+> 
+> ## (Simple) Robust PCA:
+> ## Classical:
+> (pc.cl  <- princomp(stackloss))
+Call:
+princomp(x = stackloss)
+
+Standard deviations:
+   Comp.1    Comp.2    Comp.3    Comp.4 
+13.596589  4.676077  2.617533  1.366320 
+
+ 4  variables and  21 observations.
+> 
+> 
+> cleanEx()
+> nameEx("print.power.htest")
+> ### * print.power.htest
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: print.power.htest
+> ### Title: Print Methods for Hypothesis Tests and Power Calculation Objects
+> ### Aliases: print.htest print.power.htest
+> ### Keywords: htest
+> 
+> ### ** Examples
+> 
+> (ptt <- power.t.test(n = 20, delta = 1))
+
+     Two-sample t test power calculation 
+
+              n = 20
+          delta = 1
+             sd = 1
+      sig.level = 0.05
+          power = 0.8689528
+    alternative = two.sided
+
+NOTE: n is number in *each* group
+
+> print(ptt, digits =  4) # using less digits than default
+
+     Two-sample t test power calculation 
+
+              n = 20
+          delta = 1
+             sd = 1
+      sig.level = 0.05
+          power = 0.869
+    alternative = two.sided
+
+NOTE: n is number in *each* group
+
+> print(ptt, digits = 12) # using more  "       "     "
+
+     Two-sample t test power calculation 
+
+              n = 20
+          delta = 1
+             sd = 1
+      sig.level = 0.05
+          power = 0.868952801692
+    alternative = two.sided
+
+NOTE: n is number in *each* group
+
+> 
+> 
+> 
+> cleanEx()
+> nameEx("print.ts")
+> ### * print.ts
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: print.ts
+> ### Title: Printing and Formatting of Time-Series Objects
+> ### Aliases: .preformat.ts print.ts
+> ### Keywords: ts
+> 
+> ### ** Examples
+> 
+> print(ts(1:10, frequency = 7, start = c(12, 2)), calendar = TRUE)
+   p1 p2 p3 p4 p5 p6 p7
+12     1  2  3  4  5  6
+13  7  8  9 10         
+> 
+> print(sunsp.1 <- window(sunspot.month, end=c(1756, 12)))
+       Jan   Feb   Mar   Apr   May   Jun   Jul   Aug   Sep   Oct   Nov   Dec
+1749  58.0  62.6  70.0  55.7  85.0  83.5  94.8  66.3  75.9  75.5 158.6  85.2
+1750  73.3  75.9  89.2  88.3  90.0 100.0  85.4 103.0  91.2  65.7  63.3  75.4
+1751  70.0  43.5  45.3  56.4  60.7  50.7  66.3  59.8  23.5  23.2  28.5  44.0
+1752  35.0  50.0  71.0  59.3  59.7  39.6  78.4  29.3  27.1  46.6  37.6  40.0
+1753  44.0  32.0  45.7  38.0  36.0  31.7  22.0  39.0  28.0  25.0  20.0   6.7
+1754   0.0   3.0   1.7  13.7  20.7  26.7  18.8  12.3   8.2  24.1  13.2   4.2
+1755  10.2  11.2   6.8   6.5   0.0   0.0   8.6   3.2  17.8  23.7   6.8  20.0
+1756  12.5   7.1   5.4   9.4  12.5  12.9   3.6   6.4  11.8  14.3  17.0   9.4
+> m <- .preformat.ts(sunsp.1) # a character matrix
+> 
+> 
+> 
+> cleanEx()
+> nameEx("printCoefmat")
+> ### * printCoefmat
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: printCoefmat
+> ### Title: Print Coefficient Matrices
+> ### Aliases: printCoefmat
+> ### Keywords: print
+> 
+> ### ** Examples
+> 
+> cmat <- cbind(rnorm(3, 10), sqrt(rchisq(3, 12)))
+> cmat <- cbind(cmat, cmat[, 1]/cmat[, 2])
+> cmat <- cbind(cmat, 2*pnorm(-cmat[, 3]))
+> colnames(cmat) <- c("Estimate", "Std.Err", "Z value", "Pr(>z)")
+> printCoefmat(cmat[, 1:3])
+     Estimate Std.Err Z value
+[1,]   9.3735  4.4447  2.1089
+[2,]  10.1836  3.5496  2.8689
+[3,]   9.1644  2.7365  3.3490
+> printCoefmat(cmat)
+     Estimate Std.Err Z value    Pr(>z)    
+[1,]   9.3735  4.4447  2.1089 0.0349492 *  
+[2,]  10.1836  3.5496  2.8689 0.0041185 ** 
+[3,]   9.1644  2.7365  3.3490 0.0008111 ***
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+> op <- options(show.coef.Pvalues = FALSE)
+> printCoefmat(cmat, digits = 2)
+     Estimate Std.Err Z value
+[1,]      9.4     4.4     2.1
+[2,]     10.2     3.5     2.9
+[3,]      9.2     2.7     3.3
+> printCoefmat(cmat, digits = 2, P.values = TRUE)
+     Estimate Std.Err Z value Pr(>z)    
+[1,]      9.4     4.4     2.1  0.035 *  
+[2,]     10.2     3.5     2.9  0.004 ** 
+[3,]      9.2     2.7     3.3  8e-04 ***
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+> options(op) # restore
+> 
+> 
+> 
+> cleanEx()
+> nameEx("profile.nls")
+> ### * profile.nls
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: profile.nls
+> ### Title: Method for Profiling nls Objects
+> ### Aliases: profile.nls
+> ### Keywords: nonlinear regression models
+> 
+> ### ** Examples
+> 
+> ## Don't show: 
+> od <- options(digits = 4)
+> ## End(Don't show)
+> # obtain the fitted object
+> fm1 <- nls(demand ~ SSasympOrig(Time, A, lrc), data = BOD)
+> # get the profile for the fitted model: default level is too extreme
+> pr1 <- profile(fm1, alphamax = 0.05)
+> # profiled values for the two parameters
+> ## IGNORE_RDIFF_BEGIN
+> pr1$A
+       tau par.vals.A par.vals.lrc
+1  -3.0873   13.59751      0.14033
+2  -2.4957   14.46884      0.01607
+3  -1.8906   15.41836     -0.11787
+4  -1.2634   16.49088     -0.26877
+5  -0.6080   17.75662     -0.44553
+6   0.0000   19.14258     -0.63282
+7   0.4998   20.52853     -0.80750
+8   0.9465   22.06851     -0.98233
+9   1.3780   23.98253     -1.17103
+10  1.7908   26.44552     -1.37431
+11  2.1841   29.75928     -1.59599
+12  2.5559   34.43804     -1.84209
+13  2.9028   41.42542     -2.12176
+> pr1$lrc
+       tau par.vals.A par.vals.lrc
+1  -2.9550  42.395076    -2.184153
+2  -2.5201  33.446683    -1.836926
+3  -2.0570  28.124205    -1.547326
+4  -1.5710  24.656989    -1.293871
+5  -1.0653  22.245847    -1.063030
+6  -0.5412  20.482887    -0.845157
+7   0.0000  19.142578    -0.632822
+8   0.5539  18.095015    -0.420487
+9   1.1022  17.273414    -0.207623
+10  1.6298  16.621533     0.007939
+11  2.1335  16.086803     0.234850
+12  2.6052  15.638807     0.485009
+13  3.0276  15.265409     0.779458
+> ## IGNORE_RDIFF_END
+> # see also example(plot.profile.nls)
+> ## Don't show: 
+> options(od)
+> ## End(Don't show)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("proj")
+> ### * proj
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: proj
+> ### Title: Projections of Models
+> ### Aliases: proj proj.default proj.lm proj.aov proj.aovlist
+> ### Keywords: models
+> 
+> ### ** Examples
+> 
+> N <- c(0,1,0,1,1,1,0,0,0,1,1,0,1,1,0,0,1,0,1,0,1,1,0,0)
+> P <- c(1,1,0,0,0,1,0,1,1,1,0,0,0,1,0,1,1,0,0,1,0,1,1,0)
+> K <- c(1,0,0,1,0,1,1,0,0,1,0,1,0,1,1,0,0,0,1,1,1,0,1,0)
+> yield <- c(49.5,62.8,46.8,57.0,59.8,58.5,55.5,56.0,62.8,55.8,69.5,
++ 55.0, 62.0,48.8,45.5,44.2,52.0,51.5,49.8,48.8,57.2,59.0,53.2,56.0)
+> 
+> npk <- data.frame(block = gl(6,4), N = factor(N), P = factor(P),
++                   K = factor(K), yield = yield)
+> npk.aov <- aov(yield ~ block + N*P*K, npk)
+> proj(npk.aov)
+   (Intercept)  block         N          P         K        N:P    N:K
+1       54.875 -0.850 -2.808333 -0.5916667 -1.991667  0.9416667  1.175
+2       54.875 -0.850  2.808333 -0.5916667  1.991667 -0.9416667  1.175
+3       54.875 -0.850 -2.808333  0.5916667  1.991667 -0.9416667 -1.175
+4       54.875 -0.850  2.808333  0.5916667 -1.991667  0.9416667 -1.175
+5       54.875  2.575  2.808333  0.5916667  1.991667  0.9416667  1.175
+6       54.875  2.575  2.808333 -0.5916667 -1.991667 -0.9416667 -1.175
+7       54.875  2.575 -2.808333  0.5916667 -1.991667 -0.9416667  1.175
+8       54.875  2.575 -2.808333 -0.5916667  1.991667  0.9416667 -1.175
+9       54.875  5.900 -2.808333 -0.5916667  1.991667  0.9416667 -1.175
+10      54.875  5.900  2.808333 -0.5916667 -1.991667 -0.9416667 -1.175
+11      54.875  5.900  2.808333  0.5916667  1.991667  0.9416667  1.175
+12      54.875  5.900 -2.808333  0.5916667 -1.991667 -0.9416667  1.175
+13      54.875 -4.750  2.808333  0.5916667  1.991667  0.9416667  1.175
+14      54.875 -4.750  2.808333 -0.5916667 -1.991667 -0.9416667 -1.175
+15      54.875 -4.750 -2.808333  0.5916667 -1.991667 -0.9416667  1.175
+16      54.875 -4.750 -2.808333 -0.5916667  1.991667  0.9416667 -1.175
+17      54.875 -4.350  2.808333 -0.5916667  1.991667 -0.9416667  1.175
+18      54.875 -4.350 -2.808333  0.5916667  1.991667 -0.9416667 -1.175
+19      54.875 -4.350  2.808333  0.5916667 -1.991667  0.9416667 -1.175
+20      54.875 -4.350 -2.808333 -0.5916667 -1.991667  0.9416667  1.175
+21      54.875  1.475  2.808333  0.5916667 -1.991667  0.9416667 -1.175
+22      54.875  1.475  2.808333 -0.5916667  1.991667 -0.9416667  1.175
+23      54.875  1.475 -2.808333 -0.5916667 -1.991667  0.9416667  1.175
+24      54.875  1.475 -2.808333  0.5916667  1.991667 -0.9416667 -1.175
+          P:K   Residuals
+1   0.1416667 -1.39166667
+2  -0.1416667  4.47500000
+3   0.1416667 -5.02500000
+4  -0.1416667  1.94166667
+5   0.1416667 -5.30000000
+6   0.1416667  2.80000000
+7  -0.1416667  2.16666667
+8  -0.1416667  0.33333333
+9  -0.1416667  3.80833333
+10  0.1416667 -3.22500000
+11  0.1416667  1.07500000
+12 -0.1416667 -1.65833333
+13  0.1416667  4.22500000
+14  0.1416667  0.42500000
+15 -0.1416667 -0.50833333
+16 -0.1416667 -4.14166667
+17 -0.1416667 -2.82500000
+18  0.1416667  3.17500000
+19 -0.1416667 -1.75833333
+20  0.1416667  1.40833333
+21 -0.1416667 -0.18333333
+22 -0.1416667 -1.65000000
+23  0.1416667 -0.01666667
+24  0.1416667  1.85000000
+attr(,"df")
+(Intercept)       block           N           P           K         N:P 
+          1           5           1           1           1           1 
+        N:K         P:K   Residuals 
+          1           1          12 
+attr(,"formula")
+yield ~ block + N * P * K
+attr(,"onedf")
+[1] FALSE
+attr(,"factors")
+attr(,"factors")$`(Intercept)`
+[1] "(Intercept)"
+
+attr(,"factors")$block
+[1] "block"
+
+attr(,"factors")$N
+[1] "N"
+
+attr(,"factors")$P
+[1] "P"
+
+attr(,"factors")$K
+[1] "K"
+
+attr(,"factors")$`N:P`
+[1] "N" "P"
+
+attr(,"factors")$`N:K`
+[1] "N" "K"
+
+attr(,"factors")$`P:K`
+[1] "P" "K"
+
+attr(,"factors")$Residuals
+[1] "block"  "N"      "P"      "K"      "Within"
+
+attr(,"call")
+aov(formula = yield ~ block + N * P * K, data = npk)
+attr(,"t.factor")
+      block N P K N:P N:K P:K N:P:K
+yield     0 0 0 0   0   0   0     0
+block     1 0 0 0   0   0   0     0
+N         0 1 0 0   1   1   0     1
+P         0 0 1 0   1   0   1     1
+K         0 0 0 1   0   1   1     1
+attr(,"class")
+[1] "aovproj"
+> 
+> ## as a test, not particularly sensible
+> options(contrasts = c("contr.helmert", "contr.treatment"))
+> npk.aovE <- aov(yield ~  N*P*K + Error(block), npk)
+> proj(npk.aovE)
+(Intercept) :
+   (Intercept)
+1       54.875
+2       54.875
+3       54.875
+4       54.875
+5       54.875
+6       54.875
+7       54.875
+8       54.875
+9       54.875
+10      54.875
+11      54.875
+12      54.875
+13      54.875
+14      54.875
+15      54.875
+16      54.875
+17      54.875
+18      54.875
+19      54.875
+20      54.875
+21      54.875
+22      54.875
+23      54.875
+24      54.875
+attr(,"df")
+attr(,"df")$df
+(Intercept) 
+          1 
+
+attr(,"onedf")
+attr(,"onedf")$onedf
+[1] FALSE
+
+attr(,"factors")
+attr(,"factors")$`(Intercept)`
+[1] "(Intercept)"
+
+
+block :
+       N:P:K  Residuals
+1  -1.241667  0.3916667
+2  -1.241667  0.3916667
+3  -1.241667  0.3916667
+4  -1.241667  0.3916667
+5   1.241667  1.3333333
+6   1.241667  1.3333333
+7   1.241667  1.3333333
+8   1.241667  1.3333333
+9   1.241667  4.6583333
+10  1.241667  4.6583333
+11  1.241667  4.6583333
+12  1.241667  4.6583333
+13  1.241667 -5.9916667
+14  1.241667 -5.9916667
+15  1.241667 -5.9916667
+16  1.241667 -5.9916667
+17 -1.241667 -3.1083333
+18 -1.241667 -3.1083333
+19 -1.241667 -3.1083333
+20 -1.241667 -3.1083333
+21 -1.241667  2.7166667
+22 -1.241667  2.7166667
+23 -1.241667  2.7166667
+24 -1.241667  2.7166667
+attr(,"df")
+attr(,"df")$df
+    N:P:K Residuals 
+        1         4 
+
+attr(,"onedf")
+attr(,"onedf")$onedf
+[1] FALSE
+
+attr(,"factors")
+attr(,"factors")$`N:P:K`
+[1] "N" "P" "K"
+
+attr(,"factors")$Residuals
+[1] "block"
+
+
+Within :
+           N          P         K        N:P    N:K        P:K   Residuals
+1  -2.808333 -0.5916667 -1.991667  0.9416667  1.175  0.1416667 -1.39166667
+2   2.808333 -0.5916667  1.991667 -0.9416667  1.175 -0.1416667  4.47500000
+3  -2.808333  0.5916667  1.991667 -0.9416667 -1.175  0.1416667 -5.02500000
+4   2.808333  0.5916667 -1.991667  0.9416667 -1.175 -0.1416667  1.94166667
+5   2.808333  0.5916667  1.991667  0.9416667  1.175  0.1416667 -5.30000000
+6   2.808333 -0.5916667 -1.991667 -0.9416667 -1.175  0.1416667  2.80000000
+7  -2.808333  0.5916667 -1.991667 -0.9416667  1.175 -0.1416667  2.16666667
+8  -2.808333 -0.5916667  1.991667  0.9416667 -1.175 -0.1416667  0.33333333
+9  -2.808333 -0.5916667  1.991667  0.9416667 -1.175 -0.1416667  3.80833333
+10  2.808333 -0.5916667 -1.991667 -0.9416667 -1.175  0.1416667 -3.22500000
+11  2.808333  0.5916667  1.991667  0.9416667  1.175  0.1416667  1.07500000
+12 -2.808333  0.5916667 -1.991667 -0.9416667  1.175 -0.1416667 -1.65833333
+13  2.808333  0.5916667  1.991667  0.9416667  1.175  0.1416667  4.22500000
+14  2.808333 -0.5916667 -1.991667 -0.9416667 -1.175  0.1416667  0.42500000
+15 -2.808333  0.5916667 -1.991667 -0.9416667  1.175 -0.1416667 -0.50833333
+16 -2.808333 -0.5916667  1.991667  0.9416667 -1.175 -0.1416667 -4.14166667
+17  2.808333 -0.5916667  1.991667 -0.9416667  1.175 -0.1416667 -2.82500000
+18 -2.808333  0.5916667  1.991667 -0.9416667 -1.175  0.1416667  3.17500000
+19  2.808333  0.5916667 -1.991667  0.9416667 -1.175 -0.1416667 -1.75833333
+20 -2.808333 -0.5916667 -1.991667  0.9416667  1.175  0.1416667  1.40833333
+21  2.808333  0.5916667 -1.991667  0.9416667 -1.175 -0.1416667 -0.18333333
+22  2.808333 -0.5916667  1.991667 -0.9416667  1.175 -0.1416667 -1.65000000
+23 -2.808333 -0.5916667 -1.991667  0.9416667  1.175  0.1416667 -0.01666667
+24 -2.808333  0.5916667  1.991667 -0.9416667 -1.175  0.1416667  1.85000000
+attr(,"df")
+attr(,"df")$df
+        N         P         K       N:P       N:K       P:K Residuals 
+        1         1         1         1         1         1        12 
+
+attr(,"onedf")
+attr(,"onedf")$onedf
+[1] FALSE
+
+attr(,"factors")
+attr(,"factors")$N
+[1] "N"
+
+attr(,"factors")$P
+[1] "P"
+
+attr(,"factors")$K
+[1] "K"
+
+attr(,"factors")$`N:P`
+[1] "N" "P"
+
+attr(,"factors")$`N:K`
+[1] "N" "K"
+
+attr(,"factors")$`P:K`
+[1] "P" "K"
+
+attr(,"factors")$Residuals
+[1] "block"  "Within"
+
+
+> 
+> 
+> 
+> base::options(contrasts = c(unordered = "contr.treatment",ordered = "contr.poly"))
+> cleanEx()
+> nameEx("prop.test")
+> ### * prop.test
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: prop.test
+> ### Title: Test of Equal or Given Proportions
+> ### Aliases: prop.test
+> ### Keywords: htest
+> 
+> ### ** Examples
+> 
+> heads <- rbinom(1, size = 100, prob = .5)
+> prop.test(heads, 100)          # continuity correction TRUE by default
+
+	1-sample proportions test with continuity correction
+
+data:  heads out of 100, null probability 0.5
+X-squared = 0.09, df = 1, p-value = 0.7642
+alternative hypothesis: true p is not equal to 0.5
+95 percent confidence interval:
+ 0.4183183 0.6201278
+sample estimates:
+   p 
+0.52 
+
+> prop.test(heads, 100, correct = FALSE)
+
+	1-sample proportions test without continuity correction
+
+data:  heads out of 100, null probability 0.5
+X-squared = 0.16, df = 1, p-value = 0.6892
+alternative hypothesis: true p is not equal to 0.5
+95 percent confidence interval:
+ 0.4231658 0.6153545
+sample estimates:
+   p 
+0.52 
+
+> 
+> ## Data from Fleiss (1981), p. 139.
+> ## H0: The null hypothesis is that the four populations from which
+> ##     the patients were drawn have the same true proportion of smokers.
+> ## A:  The alternative is that this proportion is different in at
+> ##     least one of the populations.
+> 
+> smokers  <- c( 83, 90, 129, 70 )
+> patients <- c( 86, 93, 136, 82 )
+> prop.test(smokers, patients)
+
+	4-sample test for equality of proportions without continuity correction
+
+data:  smokers out of patients
+X-squared = 12.6, df = 3, p-value = 0.005585
+alternative hypothesis: two.sided
+sample estimates:
+   prop 1    prop 2    prop 3    prop 4 
+0.9651163 0.9677419 0.9485294 0.8536585 
+
+> 
+> 
+> 
+> cleanEx()
+> nameEx("prop.trend.test")
+> ### * prop.trend.test
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: prop.trend.test
+> ### Title: Test for trend in proportions
+> ### Aliases: prop.trend.test
+> ### Keywords: htest
+> 
+> ### ** Examples
+> 
+> smokers  <- c( 83, 90, 129, 70 )
+> patients <- c( 86, 93, 136, 82 )
+> prop.test(smokers, patients)
+
+	4-sample test for equality of proportions without continuity correction
+
+data:  smokers out of patients
+X-squared = 12.6, df = 3, p-value = 0.005585
+alternative hypothesis: two.sided
+sample estimates:
+   prop 1    prop 2    prop 3    prop 4 
+0.9651163 0.9677419 0.9485294 0.8536585 
+
+> prop.trend.test(smokers, patients)
+
+	Chi-squared Test for Trend in Proportions
+
+data:  smokers out of patients ,
+ using scores: 1 2 3 4
+X-squared = 8.2249, df = 1, p-value = 0.004132
+
+> prop.trend.test(smokers, patients, c(0,0,0,1))
+
+	Chi-squared Test for Trend in Proportions
+
+data:  smokers out of patients ,
+ using scores: 0 0 0 1
+X-squared = 12.173, df = 1, p-value = 0.0004848
+
+> 
+> 
+> 
+> cleanEx()
+> nameEx("qqnorm")
+> ### * qqnorm
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: qqnorm
+> ### Title: Quantile-Quantile Plots
+> ### Aliases: qqnorm qqnorm.default qqplot qqline
+> ### Keywords: hplot distribution
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> y <- rt(200, df = 5)
+> qqnorm(y); qqline(y, col = 2)
+> qqplot(y, rt(300, df = 5))
+> 
+> qqnorm(precip, ylab = "Precipitation [in/yr] for 70 US cities")
+> 
+> ## "QQ-Chisquare" : --------------------------
+> y <- rchisq(500, df = 3)
+> ## Q-Q plot for Chi^2 data against true theoretical distribution:
+> qqplot(qchisq(ppoints(500), df = 3), y,
++        main = expression("Q-Q plot for" ~~ {chi^2}[nu == 3]))
+> qqline(y, distribution = function(p) qchisq(p, df = 3),
++        probs = c(0.1, 0.6), col = 2)
+> mtext("qqline(*, dist = qchisq(., df=3), prob = c(0.1, 0.6))")
+> ## (Note that the above uses ppoints() with a = 1/2, giving the
+> ## probability points for quantile type 5: so theoretically, using
+> ## qqline(qtype = 5) might be preferable.) 
+> 
+> 
+> 
+> cleanEx()
+> nameEx("quade.test")
+> ### * quade.test
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: quade.test
+> ### Title: Quade Test
+> ### Aliases: quade.test quade.test.default quade.test.formula
+> ### Keywords: htest
+> 
+> ### ** Examples
+> 
+> ## Conover (1999, p. 375f):
+> ## Numbers of five brands of a new hand lotion sold in seven stores
+> ## during one week.
+> y <- matrix(c( 5,  4,  7, 10, 12,
++                1,  3,  1,  0,  2,
++               16, 12, 22, 22, 35,
++                5,  4,  3,  5,  4,
++               10,  9,  7, 13, 10,
++               19, 18, 28, 37, 58,
++               10,  7,  6,  8,  7),
++             nrow = 7, byrow = TRUE,
++             dimnames =
++             list(Store = as.character(1:7),
++                  Brand = LETTERS[1:5]))
+> y
+     Brand
+Store  A  B  C  D  E
+    1  5  4  7 10 12
+    2  1  3  1  0  2
+    3 16 12 22 22 35
+    4  5  4  3  5  4
+    5 10  9  7 13 10
+    6 19 18 28 37 58
+    7 10  7  6  8  7
+> (qTst <- quade.test(y))
+
+	Quade test
+
+data:  y
+Quade F = 3.8293, num df = 4, denom df = 24, p-value = 0.01519
+
+> 
+> ## Show equivalence of different versions of test :
+> utils::str(dy <- as.data.frame(as.table(y)))
+'data.frame':	35 obs. of  3 variables:
+ $ Store: Factor w/ 7 levels "1","2","3","4",..: 1 2 3 4 5 6 7 1 2 3 ...
+ $ Brand: Factor w/ 5 levels "A","B","C","D",..: 1 1 1 1 1 1 1 2 2 2 ...
+ $ Freq : num  5 1 16 5 10 19 10 4 3 12 ...
+> qT. <- quade.test(Freq ~ Brand|Store, data = dy)
+> qT.$data.name <- qTst$data.name
+> stopifnot(all.equal(qTst, qT., tolerance = 1e-15))
+> dys <- dy[order(dy[,"Freq"]),]
+> qTs <- quade.test(Freq ~ Brand|Store, data = dys)
+> qTs$data.name <- qTst$data.name
+> stopifnot(all.equal(qTst, qTs, tolerance = 1e-15))
+> 
+> 
+> 
+> cleanEx()
+> nameEx("quantile")
+> ### * quantile
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: quantile
+> ### Title: Sample Quantiles
+> ### Aliases: quantile quantile.default
+> ### Keywords: univar
+> 
+> ### ** Examples
+> 
+> quantile(x <- rnorm(1001)) # Extremes & Quartiles by default
+         0%         25%         50%         75%        100% 
+-3.00804860 -0.69731820 -0.03472603  0.68924373  3.81027668 
+> quantile(x,  probs = c(0.1, 0.5, 1, 2, 5, 10, 50, NA)/100)
+       0.1%        0.5%          1%          2%          5%         10% 
+-2.99694930 -2.59232767 -2.42431731 -2.24515257 -1.72663060 -1.33880074 
+        50%             
+-0.03472603          NA 
+> 
+> ### Compare different types
+> quantAll <- function(x, prob, ...)
++   t(vapply(1:9, function(typ) quantile(x, probs = prob, type = typ, ...),
++            quantile(x, prob, type=1, ...)))
+> p <- c(0.1, 0.5, 1, 2, 5, 10, 50)/100
+> signif(quantAll(x, p), 4)
+        0.1%   0.5%     1%     2%     5%    10%      50%
+ [1,] -2.997 -2.592 -2.424 -2.245 -1.727 -1.339 -0.03473
+ [2,] -2.997 -2.592 -2.424 -2.245 -1.727 -1.339 -0.03473
+ [3,] -3.008 -2.596 -2.433 -2.265 -1.733 -1.344 -0.03592
+ [4,] -3.008 -2.596 -2.433 -2.264 -1.733 -1.344 -0.03532
+ [5,] -3.002 -2.594 -2.428 -2.255 -1.730 -1.341 -0.03473
+ [6,] -3.008 -2.596 -2.432 -2.264 -1.733 -1.343 -0.03473
+ [7,] -2.997 -2.592 -2.424 -2.245 -1.727 -1.339 -0.03473
+ [8,] -3.004 -2.595 -2.430 -2.258 -1.731 -1.342 -0.03473
+ [9,] -3.004 -2.595 -2.429 -2.257 -1.730 -1.341 -0.03473
+> 
+> ## 0% and 100% are equal to min(), max() for all types:
+> stopifnot(t(quantAll(x, prob=0:1)) == range(x))
+> 
+> ## for complex numbers:
+> z <- complex(real = x, imaginary = -10*x)
+> signif(quantAll(z, p), 4)
+              0.1%         0.5%           1%           2%           5%
+ [1,] -3.00+29.97i -2.59+25.92i -2.42+24.24i -2.25+22.45i -1.73+17.27i
+ [2,] -3.00+29.97i -2.59+25.92i -2.42+24.24i -2.25+22.45i -1.73+17.27i
+ [3,] -3.01+30.08i -2.60+25.96i -2.43+24.33i -2.26+22.65i -1.73+17.33i
+ [4,] -3.01+30.08i -2.60+25.96i -2.43+24.33i -2.26+22.64i -1.73+17.33i
+ [5,] -3.00+30.02i -2.59+25.94i -2.43+24.28i -2.25+22.55i -1.73+17.30i
+ [6,] -3.01+30.08i -2.60+25.96i -2.43+24.32i -2.26+22.64i -1.73+17.33i
+ [7,] -3.00+29.97i -2.59+25.92i -2.42+24.24i -2.25+22.45i -1.73+17.27i
+ [8,] -3.00+30.04i -2.59+25.95i -2.43+24.30i -2.26+22.58i -1.73+17.31i
+ [9,] -3.00+30.04i -2.59+25.95i -2.43+24.29i -2.26+22.57i -1.73+17.30i
+               10%             50%
+ [1,] -1.34+13.39i -0.0347+0.3473i
+ [2,] -1.34+13.39i -0.0347+0.3473i
+ [3,] -1.34+13.44i -0.0359+0.3592i
+ [4,] -1.34+13.44i -0.0353+0.3532i
+ [5,] -1.34+13.41i -0.0347+0.3473i
+ [6,] -1.34+13.43i -0.0347+0.3473i
+ [7,] -1.34+13.39i -0.0347+0.3473i
+ [8,] -1.34+13.42i -0.0347+0.3473i
+ [9,] -1.34+13.41i -0.0347+0.3473i
+> 
+> 
+> 
+> cleanEx()
+> nameEx("r2dtable")
+> ### * r2dtable
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: r2dtable
+> ### Title: Random 2-way Tables with Given Marginals
+> ### Aliases: r2dtable
+> ### Keywords: distribution
+> 
+> ### ** Examples
+> 
+> ## Fisher's Tea Drinker data.
+> TeaTasting <-
++ matrix(c(3, 1, 1, 3),
++        nrow = 2,
++        dimnames = list(Guess = c("Milk", "Tea"),
++                        Truth = c("Milk", "Tea")))
+> ## Simulate permutation test for independence based on the maximum
+> ## Pearson residuals (rather than their sum).
+> rowTotals <- rowSums(TeaTasting)
+> colTotals <- colSums(TeaTasting)
+> nOfCases <- sum(rowTotals)
+> expected <- outer(rowTotals, colTotals) / nOfCases
+> maxSqResid <- function(x) max((x - expected) ^ 2 / expected)
+> simMaxSqResid <-
++     sapply(r2dtable(1000, rowTotals, colTotals), maxSqResid)
+> sum(simMaxSqResid >= maxSqResid(TeaTasting)) / 1000
+[1] 0.465
+> ## Fisher's exact test gives p = 0.4857 ...
+> 
+> 
+> 
+> cleanEx()
+> nameEx("rWishart")
+> ### * rWishart
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: rWishart
+> ### Title: Random Wishart Distributed Matrices
+> ### Aliases: rWishart
+> ### Keywords: multivariate
+> 
+> ### ** Examples
+> 
+> ## Artificial
+> S <- toeplitz((10:1)/10)
+> set.seed(11)
+> R <- rWishart(1000, 20, S)
+> dim(R)  #  10 10  1000
+[1]   10   10 1000
+> mR <- apply(R, 1:2, mean)  # ~= E[ Wish(S, 20) ] = 20 * S
+> stopifnot(all.equal(mR, 20*S, tolerance = .009))
+> 
+> ## See Details, the variance is
+> Va <- 20*(S^2 + tcrossprod(diag(S)))
+> vR <- apply(R, 1:2, var)
+> stopifnot(all.equal(vR, Va, tolerance = 1/16))
+> 
+> 
+> 
+> cleanEx()
+> nameEx("read.ftable")
+> ### * read.ftable
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: read.ftable
+> ### Title: Manipulate Flat Contingency Tables
+> ### Aliases: read.ftable write.ftable format.ftable print.ftable
+> ### Keywords: category
+> 
+> ### ** Examples
+> 
+> ## Agresti (1990), page 157, Table 5.8.
+> ## Not in ftable standard format, but o.k.
+> file <- tempfile()
+> cat("             Intercourse\n",
++     "Race  Gender     Yes  No\n",
++     "White Male        43 134\n",
++     "      Female      26 149\n",
++     "Black Male        29  23\n",
++     "      Female      22  36\n",
++     file = file)
+> ft1 <- read.ftable(file)
+> ft1
+             Intercourse Yes  No
+Race  Gender                    
+White Male                43 134
+      Female              26 149
+Black Male                29  23
+      Female              22  36
+> unlink(file)
+> 
+> ## Agresti (1990), page 297, Table 8.16.
+> ## Almost o.k., but misses the name of the row variable.
+> file <- tempfile()
+> cat("                      \"Tonsil Size\"\n",
++     "            \"Not Enl.\" \"Enl.\" \"Greatly Enl.\"\n",
++     "Noncarriers       497     560           269\n",
++     "Carriers           19      29            24\n",
++     file = file)
+> ft <- read.ftable(file, skip = 2,
++                   row.var.names = "Status",
++                   col.vars = list("Tonsil Size" =
++                       c("Not Enl.", "Enl.", "Greatly Enl.")))
+> ft
+            Tonsil Size Not Enl. Enl. Greatly Enl.
+Status                                            
+Noncarriers                  497  560          269
+Carriers                      19   29           24
+> unlink(file)
+> 
+> ft22 <- ftable(Titanic, row.vars = 2:1, col.vars = 4:3)
+> write.ftable(ft22, quote = FALSE) # is the same as
+             Survived    No         Yes      
+             Age      Child Adult Child Adult
+Sex    Class                                 
+Male   1st                0   118     5    57
+       2nd                0   154    11    14
+       3rd               35   387    13    75
+       Crew               0   670     0   192
+Female 1st                0     4     1   140
+       2nd                0    13    13    80
+       3rd               17    89    14    76
+       Crew               0     3     0    20
+> print(ft22)#method="non.compact" is default
+             Survived    No         Yes      
+             Age      Child Adult Child Adult
+Sex    Class                                 
+Male   1st                0   118     5    57
+       2nd                0   154    11    14
+       3rd               35   387    13    75
+       Crew               0   670     0   192
+Female 1st                0     4     1   140
+       2nd                0    13    13    80
+       3rd               17    89    14    76
+       Crew               0     3     0    20
+> print(ft22, method="row.compact")
+             Survived    No         Yes      
+Sex    Class Age      Child Adult Child Adult
+Male   1st                0   118     5    57
+       2nd                0   154    11    14
+       3rd               35   387    13    75
+       Crew               0   670     0   192
+Female 1st                0     4     1   140
+       2nd                0    13    13    80
+       3rd               17    89    14    76
+       Crew               0     3     0    20
+> print(ft22, method="col.compact")
+       Survived    No         Yes      
+       Age      Child Adult Child Adult
+Sex    Class                           
+Male   1st          0   118     5    57
+       2nd          0   154    11    14
+       3rd         35   387    13    75
+       Crew         0   670     0   192
+Female 1st          0     4     1   140
+       2nd          0    13    13    80
+       3rd         17    89    14    76
+       Crew         0     3     0    20
+> print(ft22, method="compact")
+       Survived       No         Yes      
+Sex    Class | Age Child Adult Child Adult
+Male   1st             0   118     5    57
+       2nd             0   154    11    14
+       3rd            35   387    13    75
+       Crew            0   670     0   192
+Female 1st             0     4     1   140
+       2nd             0    13    13    80
+       3rd            17    89    14    76
+       Crew            0     3     0    20
+> 
+> ## using 'justify' and 'quote' :
+> format(ftable(wool + tension ~ breaks, warpbreaks),
++        justify = "none", quote = FALSE)
+      [,1]     [,2]      [,3] [,4] [,5] [,6] [,7] [,8]
+ [1,] ""       "wool"    "A"  ""   ""   "B"  ""   ""  
+ [2,] ""       "tension" "L"  "M"  "H"  "L"  "M"  "H" 
+ [3,] "breaks" ""        ""   ""   ""   ""   ""   ""  
+ [4,] "10"     ""        "0"  "0"  "1"  "0"  "0"  "0" 
+ [5,] "12"     ""        "0"  "1"  "0"  "0"  "0"  "0" 
+ [6,] "13"     ""        "0"  "0"  "0"  "0"  "0"  "1" 
+ [7,] "14"     ""        "0"  "0"  "0"  "1"  "0"  "0" 
+ [8,] "15"     ""        "0"  "0"  "1"  "0"  "0"  "2" 
+ [9,] "16"     ""        "0"  "0"  "0"  "0"  "1"  "1" 
+[10,] "17"     ""        "0"  "1"  "0"  "0"  "0"  "1" 
+[11,] "18"     ""        "0"  "2"  "1"  "0"  "0"  "0" 
+[12,] "19"     ""        "0"  "0"  "0"  "1"  "1"  "0" 
+[13,] "20"     ""        "0"  "0"  "0"  "1"  "0"  "1" 
+[14,] "21"     ""        "0"  "1"  "1"  "0"  "1"  "1" 
+[15,] "24"     ""        "0"  "0"  "1"  "0"  "0"  "1" 
+[16,] "25"     ""        "1"  "0"  "0"  "0"  "0"  "0" 
+[17,] "26"     ""        "2"  "0"  "1"  "0"  "1"  "0" 
+[18,] "27"     ""        "0"  "0"  "0"  "1"  "0"  "0" 
+[19,] "28"     ""        "0"  "0"  "1"  "0"  "1"  "1" 
+[20,] "29"     ""        "0"  "1"  "0"  "2"  "1"  "0" 
+[21,] "30"     ""        "1"  "1"  "0"  "0"  "0"  "0" 
+[22,] "31"     ""        "0"  "0"  "0"  "1"  "0"  "0" 
+[23,] "35"     ""        "0"  "1"  "0"  "0"  "0"  "0" 
+[24,] "36"     ""        "0"  "1"  "1"  "0"  "0"  "0" 
+[25,] "39"     ""        "0"  "0"  "0"  "0"  "2"  "0" 
+[26,] "41"     ""        "0"  "0"  "0"  "1"  "0"  "0" 
+[27,] "42"     ""        "0"  "0"  "0"  "0"  "1"  "0" 
+[28,] "43"     ""        "0"  "0"  "1"  "0"  "0"  "0" 
+[29,] "44"     ""        "0"  "0"  "0"  "1"  "0"  "0" 
+[30,] "51"     ""        "1"  "0"  "0"  "0"  "0"  "0" 
+[31,] "52"     ""        "1"  "0"  "0"  "0"  "0"  "0" 
+[32,] "54"     ""        "1"  "0"  "0"  "0"  "0"  "0" 
+[33,] "67"     ""        "1"  "0"  "0"  "0"  "0"  "0" 
+[34,] "70"     ""        "1"  "0"  "0"  "0"  "0"  "0" 
+> ## Don't show: 
+>  op <- options(warn = 2) # no warnings allowed
+>  stopifnot(dim(format(ft)) == 4:5,
++ 	   dim(format(ftable(UCBAdmissions))) == c(6,9))
+>  meths <- c("non.compact", "row.compact", "col.compact", "compact")
+>  dimform <-
++     function(ft) sapply(meths, function(M) dim(format(ft, method = M)))
+>  m.eq    <- function(M,m) all.equal(unname(M), m, tolerance = 0)
+>  ## All format(..) w/o warnings:
+>  stopifnot(m.eq(print(dimform(ft22)),
++ 		rbind(11:10, rep(7:6, each = 2))),
++ 	   m.eq(print(dimform(ftable(Titanic, row.vars = integer()))),
++ 		rbind(rep(6:5,2), 33)))
+     non.compact row.compact col.compact compact
+[1,]          11          10          11      10
+[2,]           7           7           6       6
+     non.compact row.compact col.compact compact
+[1,]           6           5           6       5
+[2,]          33          33          33      33
+>  options(op)
+> ## End(Don't show)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("rect.hclust")
+> ### * rect.hclust
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: rect.hclust
+> ### Title: Draw Rectangles Around Hierarchical Clusters
+> ### Aliases: rect.hclust
+> ### Keywords: aplot cluster
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> hca <- hclust(dist(USArrests))
+> plot(hca)
+> rect.hclust(hca, k = 3, border = "red")
+> x <- rect.hclust(hca, h = 50, which = c(2,7), border = 3:4)
+> x
+[[1]]
+       Alabama         Alaska       Delaware      Louisiana    Mississippi 
+             1              2              8             18             24 
+South Carolina 
+            40 
+
+[[2]]
+ Connecticut        Idaho      Indiana       Kansas     Kentucky      Montana 
+           7           12           14           16           17           26 
+    Nebraska         Ohio Pennsylvania         Utah 
+          27           35           38           44 
+
+> 
+> 
+> 
+> cleanEx()
+> nameEx("relevel")
+> ### * relevel
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: relevel
+> ### Title: Reorder Levels of Factor
+> ### Aliases: relevel relevel.default relevel.factor relevel.ordered
+> ### Keywords: utilities models
+> 
+> ### ** Examples
+> 
+> warpbreaks$tension <- relevel(warpbreaks$tension, ref = "M")
+> summary(lm(breaks ~ wool + tension, data = warpbreaks))
+
+Call:
+lm(formula = breaks ~ wool + tension, data = warpbreaks)
+
+Residuals:
+    Min      1Q  Median      3Q     Max 
+-19.500  -8.083  -2.139   6.472  30.722 
+
+Coefficients:
+            Estimate Std. Error t value Pr(>|t|)    
+(Intercept)   29.278      3.162   9.260    2e-12 ***
+woolB         -5.778      3.162  -1.827   0.0736 .  
+tensionL      10.000      3.872   2.582   0.0128 *  
+tensionH      -4.722      3.872  -1.219   0.2284    
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+
+Residual standard error: 11.62 on 50 degrees of freedom
+Multiple R-squared:  0.2691,	Adjusted R-squared:  0.2253 
+F-statistic: 6.138 on 3 and 50 DF,  p-value: 0.00123
+
+> 
+> 
+> 
+> cleanEx()
+> nameEx("reorder.dendrogram")
+> ### * reorder.dendrogram
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: reorder.dendrogram
+> ### Title: Reorder a Dendrogram
+> ### Aliases: reorder.dendrogram
+> ### Keywords: manip
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> set.seed(123)
+> x <- rnorm(10)
+> hc <- hclust(dist(x))
+> dd <- as.dendrogram(hc)
+> dd.reorder <- reorder(dd, 10:1)
+> plot(dd, main = "random dendrogram 'dd'")
+> 
+> op <- par(mfcol = 1:2)
+> plot(dd.reorder, main = "reorder(dd, 10:1)")
+> plot(reorder(dd, 10:1, agglo.FUN = mean), main = "reorder(dd, 10:1, mean)")
+> par(op)
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("reorder.factor")
+> ### * reorder.factor
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: reorder.default
+> ### Title: Reorder Levels of a Factor
+> ### Aliases: reorder reorder.default
+> ### Keywords: utilities
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> bymedian <- with(InsectSprays, reorder(spray, count, median))
+> boxplot(count ~ bymedian, data = InsectSprays,
++         xlab = "Type of spray", ylab = "Insect count",
++         main = "InsectSprays data", varwidth = TRUE,
++         col = "lightgray")
+> 
+> bymedianR <- with(InsectSprays, reorder(spray, count, median, decreasing=TRUE))
+> stopifnot(exprs = {
++     identical(attr(bymedian, "scores") -> sc,
++               attr(bymedianR,"scores"))
++     identical(nms <- names(sc), LETTERS[1:6])
++     identical(levels(bymedian ), nms[isc <- order(sc)])
++     identical(levels(bymedianR), nms[rev(isc)])
++ })
+> 
+> 
+> 
+> cleanEx()
+> nameEx("replications")
+> ### * replications
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: replications
+> ### Title: Number of Replications of Terms
+> ### Aliases: replications
+> ### Keywords: models
+> 
+> ### ** Examples
+> 
+> ## From Venables and Ripley (2002) p.165.
+> N <- c(0,1,0,1,1,1,0,0,0,1,1,0,1,1,0,0,1,0,1,0,1,1,0,0)
+> P <- c(1,1,0,0,0,1,0,1,1,1,0,0,0,1,0,1,1,0,0,1,0,1,1,0)
+> K <- c(1,0,0,1,0,1,1,0,0,1,0,1,0,1,1,0,0,0,1,1,1,0,1,0)
+> yield <- c(49.5,62.8,46.8,57.0,59.8,58.5,55.5,56.0,62.8,55.8,69.5,
++ 55.0, 62.0,48.8,45.5,44.2,52.0,51.5,49.8,48.8,57.2,59.0,53.2,56.0)
+> 
+> npk <- data.frame(block = gl(6,4), N = factor(N), P = factor(P),
++                   K = factor(K), yield = yield)
+> replications(~ . - yield, npk)
+block     N     P     K 
+    4    12    12    12 
+> 
+> 
+> 
+> cleanEx()
+> nameEx("reshape")
+> ### * reshape
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: reshape
+> ### Title: Reshape Grouped Data
+> ### Aliases: reshape
+> ### Keywords: manip
+> 
+> ### ** Examples
+> 
+> summary(Indometh) # data in long format
+ Subject      time            conc       
+ 1:11    Min.   :0.250   Min.   :0.0500  
+ 4:11    1st Qu.:0.750   1st Qu.:0.1100  
+ 2:11    Median :2.000   Median :0.3400  
+ 5:11    Mean   :2.886   Mean   :0.5918  
+ 6:11    3rd Qu.:5.000   3rd Qu.:0.8325  
+ 3:11    Max.   :8.000   Max.   :2.7200  
+> 
+> ## long to wide (direction = "wide") requires idvar and timevar at a minimum
+> reshape(Indometh, direction = "wide", idvar = "Subject", timevar = "time")
+   Subject conc.0.25 conc.0.5 conc.0.75 conc.1 conc.1.25 conc.2 conc.3 conc.4
+1        1      1.50     0.94      0.78   0.48      0.37   0.19   0.12   0.11
+12       2      2.03     1.63      0.71   0.70      0.64   0.36   0.32   0.20
+23       3      2.72     1.49      1.16   0.80      0.80   0.39   0.22   0.12
+34       4      1.85     1.39      1.02   0.89      0.59   0.40   0.16   0.11
+45       5      2.05     1.04      0.81   0.39      0.30   0.23   0.13   0.11
+56       6      2.31     1.44      1.03   0.84      0.64   0.42   0.24   0.17
+   conc.5 conc.6 conc.8
+1    0.08   0.07   0.05
+12   0.25   0.12   0.08
+23   0.11   0.08   0.08
+34   0.10   0.07   0.07
+45   0.08   0.10   0.06
+56   0.13   0.10   0.09
+> 
+> ## can also explicitly specify name of combined variable
+> wide <- reshape(Indometh, direction = "wide", idvar = "Subject",
++                 timevar = "time", v.names = "conc", sep= "_")
+> wide
+   Subject conc_0.25 conc_0.5 conc_0.75 conc_1 conc_1.25 conc_2 conc_3 conc_4
+1        1      1.50     0.94      0.78   0.48      0.37   0.19   0.12   0.11
+12       2      2.03     1.63      0.71   0.70      0.64   0.36   0.32   0.20
+23       3      2.72     1.49      1.16   0.80      0.80   0.39   0.22   0.12
+34       4      1.85     1.39      1.02   0.89      0.59   0.40   0.16   0.11
+45       5      2.05     1.04      0.81   0.39      0.30   0.23   0.13   0.11
+56       6      2.31     1.44      1.03   0.84      0.64   0.42   0.24   0.17
+   conc_5 conc_6 conc_8
+1    0.08   0.07   0.05
+12   0.25   0.12   0.08
+23   0.11   0.08   0.08
+34   0.10   0.07   0.07
+45   0.08   0.10   0.06
+56   0.13   0.10   0.09
+> 
+> ## reverse transformation
+> reshape(wide, direction = "long")
+       Subject time conc
+1.0.25       1 0.25 1.50
+2.0.25       2 0.25 2.03
+3.0.25       3 0.25 2.72
+4.0.25       4 0.25 1.85
+5.0.25       5 0.25 2.05
+6.0.25       6 0.25 2.31
+1.0.5        1 0.50 0.94
+2.0.5        2 0.50 1.63
+3.0.5        3 0.50 1.49
+4.0.5        4 0.50 1.39
+5.0.5        5 0.50 1.04
+6.0.5        6 0.50 1.44
+1.0.75       1 0.75 0.78
+2.0.75       2 0.75 0.71
+3.0.75       3 0.75 1.16
+4.0.75       4 0.75 1.02
+5.0.75       5 0.75 0.81
+6.0.75       6 0.75 1.03
+1.1          1 1.00 0.48
+2.1          2 1.00 0.70
+3.1          3 1.00 0.80
+4.1          4 1.00 0.89
+5.1          5 1.00 0.39
+6.1          6 1.00 0.84
+1.1.25       1 1.25 0.37
+2.1.25       2 1.25 0.64
+3.1.25       3 1.25 0.80
+4.1.25       4 1.25 0.59
+5.1.25       5 1.25 0.30
+6.1.25       6 1.25 0.64
+1.2          1 2.00 0.19
+2.2          2 2.00 0.36
+3.2          3 2.00 0.39
+4.2          4 2.00 0.40
+5.2          5 2.00 0.23
+6.2          6 2.00 0.42
+1.3          1 3.00 0.12
+2.3          2 3.00 0.32
+3.3          3 3.00 0.22
+4.3          4 3.00 0.16
+5.3          5 3.00 0.13
+6.3          6 3.00 0.24
+1.4          1 4.00 0.11
+2.4          2 4.00 0.20
+3.4          3 4.00 0.12
+4.4          4 4.00 0.11
+5.4          5 4.00 0.11
+6.4          6 4.00 0.17
+1.5          1 5.00 0.08
+2.5          2 5.00 0.25
+3.5          3 5.00 0.11
+4.5          4 5.00 0.10
+5.5          5 5.00 0.08
+6.5          6 5.00 0.13
+1.6          1 6.00 0.07
+2.6          2 6.00 0.12
+3.6          3 6.00 0.08
+4.6          4 6.00 0.07
+5.6          5 6.00 0.10
+6.6          6 6.00 0.10
+1.8          1 8.00 0.05
+2.8          2 8.00 0.08
+3.8          3 8.00 0.08
+4.8          4 8.00 0.07
+5.8          5 8.00 0.06
+6.8          6 8.00 0.09
+> reshape(wide, idvar = "Subject", varying = list(2:12),
++         v.names = "conc", direction = "long")
+     Subject time conc
+1.1        1    1 1.50
+2.1        2    1 2.03
+3.1        3    1 2.72
+4.1        4    1 1.85
+5.1        5    1 2.05
+6.1        6    1 2.31
+1.2        1    2 0.94
+2.2        2    2 1.63
+3.2        3    2 1.49
+4.2        4    2 1.39
+5.2        5    2 1.04
+6.2        6    2 1.44
+1.3        1    3 0.78
+2.3        2    3 0.71
+3.3        3    3 1.16
+4.3        4    3 1.02
+5.3        5    3 0.81
+6.3        6    3 1.03
+1.4        1    4 0.48
+2.4        2    4 0.70
+3.4        3    4 0.80
+4.4        4    4 0.89
+5.4        5    4 0.39
+6.4        6    4 0.84
+1.5        1    5 0.37
+2.5        2    5 0.64
+3.5        3    5 0.80
+4.5        4    5 0.59
+5.5        5    5 0.30
+6.5        6    5 0.64
+1.6        1    6 0.19
+2.6        2    6 0.36
+3.6        3    6 0.39
+4.6        4    6 0.40
+5.6        5    6 0.23
+6.6        6    6 0.42
+1.7        1    7 0.12
+2.7        2    7 0.32
+3.7        3    7 0.22
+4.7        4    7 0.16
+5.7        5    7 0.13
+6.7        6    7 0.24
+1.8        1    8 0.11
+2.8        2    8 0.20
+3.8        3    8 0.12
+4.8        4    8 0.11
+5.8        5    8 0.11
+6.8        6    8 0.17
+1.9        1    9 0.08
+2.9        2    9 0.25
+3.9        3    9 0.11
+4.9        4    9 0.10
+5.9        5    9 0.08
+6.9        6    9 0.13
+1.10       1   10 0.07
+2.10       2   10 0.12
+3.10       3   10 0.08
+4.10       4   10 0.07
+5.10       5   10 0.10
+6.10       6   10 0.10
+1.11       1   11 0.05
+2.11       2   11 0.08
+3.11       3   11 0.08
+4.11       4   11 0.07
+5.11       5   11 0.06
+6.11       6   11 0.09
+> 
+> ## times need not be numeric
+> df <- data.frame(id = rep(1:4, rep(2,4)),
++                  visit = I(rep(c("Before","After"), 4)),
++                  x = rnorm(4), y = runif(4))
+> df
+  id  visit          x          y
+1  1 Before -0.6264538 0.62911404
+2  1  After  0.1836433 0.06178627
+3  2 Before -0.8356286 0.20597457
+4  2  After  1.5952808 0.17655675
+5  3 Before -0.6264538 0.62911404
+6  3  After  0.1836433 0.06178627
+7  4 Before -0.8356286 0.20597457
+8  4  After  1.5952808 0.17655675
+> reshape(df, timevar = "visit", idvar = "id", direction = "wide")
+  id   x.Before  y.Before   x.After    y.After
+1  1 -0.6264538 0.6291140 0.1836433 0.06178627
+3  2 -0.8356286 0.2059746 1.5952808 0.17655675
+5  3 -0.6264538 0.6291140 0.1836433 0.06178627
+7  4 -0.8356286 0.2059746 1.5952808 0.17655675
+> ## warns that y is really varying
+> reshape(df, timevar = "visit", idvar = "id", direction = "wide", v.names = "x")
+Warning in reshapeWide(data, idvar = idvar, timevar = timevar, varying = varying,  :
+  some constant variables (y) are really varying
+  id         y   x.Before   x.After
+1  1 0.6291140 -0.6264538 0.1836433
+3  2 0.2059746 -0.8356286 1.5952808
+5  3 0.6291140 -0.6264538 0.1836433
+7  4 0.2059746 -0.8356286 1.5952808
+> 
+> 
+> ##  unbalanced 'long' data leads to NA fill in 'wide' form
+> df2 <- df[1:7, ]
+> df2
+  id  visit          x          y
+1  1 Before -0.6264538 0.62911404
+2  1  After  0.1836433 0.06178627
+3  2 Before -0.8356286 0.20597457
+4  2  After  1.5952808 0.17655675
+5  3 Before -0.6264538 0.62911404
+6  3  After  0.1836433 0.06178627
+7  4 Before -0.8356286 0.20597457
+> reshape(df2, timevar = "visit", idvar = "id", direction = "wide")
+  id   x.Before  y.Before   x.After    y.After
+1  1 -0.6264538 0.6291140 0.1836433 0.06178627
+3  2 -0.8356286 0.2059746 1.5952808 0.17655675
+5  3 -0.6264538 0.6291140 0.1836433 0.06178627
+7  4 -0.8356286 0.2059746        NA         NA
+> 
+> ## Alternative regular expressions for guessing names
+> df3 <- data.frame(id = 1:4, age = c(40,50,60,50), dose1 = c(1,2,1,2),
++                   dose2 = c(2,1,2,1), dose4 = c(3,3,3,3))
+> reshape(df3, direction = "long", varying = 3:5, sep = "")
+    id age time dose
+1.1  1  40    1    1
+2.1  2  50    1    2
+3.1  3  60    1    1
+4.1  4  50    1    2
+1.2  1  40    2    2
+2.2  2  50    2    1
+3.2  3  60    2    2
+4.2  4  50    2    1
+1.4  1  40    4    3
+2.4  2  50    4    3
+3.4  3  60    4    3
+4.4  4  50    4    3
+> 
+> 
+> ## an example that isn't longitudinal data
+> state.x77 <- as.data.frame(state.x77)
+> long <- reshape(state.x77, idvar = "state", ids = row.names(state.x77),
++                 times = names(state.x77), timevar = "Characteristic",
++                 varying = list(names(state.x77)), direction = "long")
+> 
+> reshape(long, direction = "wide")
+                                   state Population Income Illiteracy Life Exp
+Alabama.Population               Alabama       3615   3624        2.1    69.05
+Alaska.Population                 Alaska        365   6315        1.5    69.31
+Arizona.Population               Arizona       2212   4530        1.8    70.55
+Arkansas.Population             Arkansas       2110   3378        1.9    70.66
+California.Population         California      21198   5114        1.1    71.71
+Colorado.Population             Colorado       2541   4884        0.7    72.06
+Connecticut.Population       Connecticut       3100   5348        1.1    72.48
+Delaware.Population             Delaware        579   4809        0.9    70.06
+Florida.Population               Florida       8277   4815        1.3    70.66
+Georgia.Population               Georgia       4931   4091        2.0    68.54
+Hawaii.Population                 Hawaii        868   4963        1.9    73.60
+Idaho.Population                   Idaho        813   4119        0.6    71.87
+Illinois.Population             Illinois      11197   5107        0.9    70.14
+Indiana.Population               Indiana       5313   4458        0.7    70.88
+Iowa.Population                     Iowa       2861   4628        0.5    72.56
+Kansas.Population                 Kansas       2280   4669        0.6    72.58
+Kentucky.Population             Kentucky       3387   3712        1.6    70.10
+Louisiana.Population           Louisiana       3806   3545        2.8    68.76
+Maine.Population                   Maine       1058   3694        0.7    70.39
+Maryland.Population             Maryland       4122   5299        0.9    70.22
+Massachusetts.Population   Massachusetts       5814   4755        1.1    71.83
+Michigan.Population             Michigan       9111   4751        0.9    70.63
+Minnesota.Population           Minnesota       3921   4675        0.6    72.96
+Mississippi.Population       Mississippi       2341   3098        2.4    68.09
+Missouri.Population             Missouri       4767   4254        0.8    70.69
+Montana.Population               Montana        746   4347        0.6    70.56
+Nebraska.Population             Nebraska       1544   4508        0.6    72.60
+Nevada.Population                 Nevada        590   5149        0.5    69.03
+New Hampshire.Population   New Hampshire        812   4281        0.7    71.23
+New Jersey.Population         New Jersey       7333   5237        1.1    70.93
+New Mexico.Population         New Mexico       1144   3601        2.2    70.32
+New York.Population             New York      18076   4903        1.4    70.55
+North Carolina.Population North Carolina       5441   3875        1.8    69.21
+North Dakota.Population     North Dakota        637   5087        0.8    72.78
+Ohio.Population                     Ohio      10735   4561        0.8    70.82
+Oklahoma.Population             Oklahoma       2715   3983        1.1    71.42
+Oregon.Population                 Oregon       2284   4660        0.6    72.13
+Pennsylvania.Population     Pennsylvania      11860   4449        1.0    70.43
+Rhode Island.Population     Rhode Island        931   4558        1.3    71.90
+South Carolina.Population South Carolina       2816   3635        2.3    67.96
+South Dakota.Population     South Dakota        681   4167        0.5    72.08
+Tennessee.Population           Tennessee       4173   3821        1.7    70.11
+Texas.Population                   Texas      12237   4188        2.2    70.90
+Utah.Population                     Utah       1203   4022        0.6    72.90
+Vermont.Population               Vermont        472   3907        0.6    71.64
+Virginia.Population             Virginia       4981   4701        1.4    70.08
+Washington.Population         Washington       3559   4864        0.6    71.72
+West Virginia.Population   West Virginia       1799   3617        1.4    69.48
+Wisconsin.Population           Wisconsin       4589   4468        0.7    72.48
+Wyoming.Population               Wyoming        376   4566        0.6    70.29
+                          Murder HS Grad Frost   Area
+Alabama.Population          15.1    41.3    20  50708
+Alaska.Population           11.3    66.7   152 566432
+Arizona.Population           7.8    58.1    15 113417
+Arkansas.Population         10.1    39.9    65  51945
+California.Population       10.3    62.6    20 156361
+Colorado.Population          6.8    63.9   166 103766
+Connecticut.Population       3.1    56.0   139   4862
+Delaware.Population          6.2    54.6   103   1982
+Florida.Population          10.7    52.6    11  54090
+Georgia.Population          13.9    40.6    60  58073
+Hawaii.Population            6.2    61.9     0   6425
+Idaho.Population             5.3    59.5   126  82677
+Illinois.Population         10.3    52.6   127  55748
+Indiana.Population           7.1    52.9   122  36097
+Iowa.Population              2.3    59.0   140  55941
+Kansas.Population            4.5    59.9   114  81787
+Kentucky.Population         10.6    38.5    95  39650
+Louisiana.Population        13.2    42.2    12  44930
+Maine.Population             2.7    54.7   161  30920
+Maryland.Population          8.5    52.3   101   9891
+Massachusetts.Population     3.3    58.5   103   7826
+Michigan.Population         11.1    52.8   125  56817
+Minnesota.Population         2.3    57.6   160  79289
+Mississippi.Population      12.5    41.0    50  47296
+Missouri.Population          9.3    48.8   108  68995
+Montana.Population           5.0    59.2   155 145587
+Nebraska.Population          2.9    59.3   139  76483
+Nevada.Population           11.5    65.2   188 109889
+New Hampshire.Population     3.3    57.6   174   9027
+New Jersey.Population        5.2    52.5   115   7521
+New Mexico.Population        9.7    55.2   120 121412
+New York.Population         10.9    52.7    82  47831
+North Carolina.Population   11.1    38.5    80  48798
+North Dakota.Population      1.4    50.3   186  69273
+Ohio.Population              7.4    53.2   124  40975
+Oklahoma.Population          6.4    51.6    82  68782
+Oregon.Population            4.2    60.0    44  96184
+Pennsylvania.Population      6.1    50.2   126  44966
+Rhode Island.Population      2.4    46.4   127   1049
+South Carolina.Population   11.6    37.8    65  30225
+South Dakota.Population      1.7    53.3   172  75955
+Tennessee.Population        11.0    41.8    70  41328
+Texas.Population            12.2    47.4    35 262134
+Utah.Population              4.5    67.3   137  82096
+Vermont.Population           5.5    57.1   168   9267
+Virginia.Population          9.5    47.8    85  39780
+Washington.Population        4.3    63.5    32  66570
+West Virginia.Population     6.7    41.6   100  24070
+Wisconsin.Population         3.0    54.5   149  54464
+Wyoming.Population           6.9    62.9   173  97203
+> 
+> reshape(long, direction = "wide", new.row.names = unique(long$state))
+                        state Population Income Illiteracy Life Exp Murder
+Alabama               Alabama       3615   3624        2.1    69.05   15.1
+Alaska                 Alaska        365   6315        1.5    69.31   11.3
+Arizona               Arizona       2212   4530        1.8    70.55    7.8
+Arkansas             Arkansas       2110   3378        1.9    70.66   10.1
+California         California      21198   5114        1.1    71.71   10.3
+Colorado             Colorado       2541   4884        0.7    72.06    6.8
+Connecticut       Connecticut       3100   5348        1.1    72.48    3.1
+Delaware             Delaware        579   4809        0.9    70.06    6.2
+Florida               Florida       8277   4815        1.3    70.66   10.7
+Georgia               Georgia       4931   4091        2.0    68.54   13.9
+Hawaii                 Hawaii        868   4963        1.9    73.60    6.2
+Idaho                   Idaho        813   4119        0.6    71.87    5.3
+Illinois             Illinois      11197   5107        0.9    70.14   10.3
+Indiana               Indiana       5313   4458        0.7    70.88    7.1
+Iowa                     Iowa       2861   4628        0.5    72.56    2.3
+Kansas                 Kansas       2280   4669        0.6    72.58    4.5
+Kentucky             Kentucky       3387   3712        1.6    70.10   10.6
+Louisiana           Louisiana       3806   3545        2.8    68.76   13.2
+Maine                   Maine       1058   3694        0.7    70.39    2.7
+Maryland             Maryland       4122   5299        0.9    70.22    8.5
+Massachusetts   Massachusetts       5814   4755        1.1    71.83    3.3
+Michigan             Michigan       9111   4751        0.9    70.63   11.1
+Minnesota           Minnesota       3921   4675        0.6    72.96    2.3
+Mississippi       Mississippi       2341   3098        2.4    68.09   12.5
+Missouri             Missouri       4767   4254        0.8    70.69    9.3
+Montana               Montana        746   4347        0.6    70.56    5.0
+Nebraska             Nebraska       1544   4508        0.6    72.60    2.9
+Nevada                 Nevada        590   5149        0.5    69.03   11.5
+New Hampshire   New Hampshire        812   4281        0.7    71.23    3.3
+New Jersey         New Jersey       7333   5237        1.1    70.93    5.2
+New Mexico         New Mexico       1144   3601        2.2    70.32    9.7
+New York             New York      18076   4903        1.4    70.55   10.9
+North Carolina North Carolina       5441   3875        1.8    69.21   11.1
+North Dakota     North Dakota        637   5087        0.8    72.78    1.4
+Ohio                     Ohio      10735   4561        0.8    70.82    7.4
+Oklahoma             Oklahoma       2715   3983        1.1    71.42    6.4
+Oregon                 Oregon       2284   4660        0.6    72.13    4.2
+Pennsylvania     Pennsylvania      11860   4449        1.0    70.43    6.1
+Rhode Island     Rhode Island        931   4558        1.3    71.90    2.4
+South Carolina South Carolina       2816   3635        2.3    67.96   11.6
+South Dakota     South Dakota        681   4167        0.5    72.08    1.7
+Tennessee           Tennessee       4173   3821        1.7    70.11   11.0
+Texas                   Texas      12237   4188        2.2    70.90   12.2
+Utah                     Utah       1203   4022        0.6    72.90    4.5
+Vermont               Vermont        472   3907        0.6    71.64    5.5
+Virginia             Virginia       4981   4701        1.4    70.08    9.5
+Washington         Washington       3559   4864        0.6    71.72    4.3
+West Virginia   West Virginia       1799   3617        1.4    69.48    6.7
+Wisconsin           Wisconsin       4589   4468        0.7    72.48    3.0
+Wyoming               Wyoming        376   4566        0.6    70.29    6.9
+               HS Grad Frost   Area
+Alabama           41.3    20  50708
+Alaska            66.7   152 566432
+Arizona           58.1    15 113417
+Arkansas          39.9    65  51945
+California        62.6    20 156361
+Colorado          63.9   166 103766
+Connecticut       56.0   139   4862
+Delaware          54.6   103   1982
+Florida           52.6    11  54090
+Georgia           40.6    60  58073
+Hawaii            61.9     0   6425
+Idaho             59.5   126  82677
+Illinois          52.6   127  55748
+Indiana           52.9   122  36097
+Iowa              59.0   140  55941
+Kansas            59.9   114  81787
+Kentucky          38.5    95  39650
+Louisiana         42.2    12  44930
+Maine             54.7   161  30920
+Maryland          52.3   101   9891
+Massachusetts     58.5   103   7826
+Michigan          52.8   125  56817
+Minnesota         57.6   160  79289
+Mississippi       41.0    50  47296
+Missouri          48.8   108  68995
+Montana           59.2   155 145587
+Nebraska          59.3   139  76483
+Nevada            65.2   188 109889
+New Hampshire     57.6   174   9027
+New Jersey        52.5   115   7521
+New Mexico        55.2   120 121412
+New York          52.7    82  47831
+North Carolina    38.5    80  48798
+North Dakota      50.3   186  69273
+Ohio              53.2   124  40975
+Oklahoma          51.6    82  68782
+Oregon            60.0    44  96184
+Pennsylvania      50.2   126  44966
+Rhode Island      46.4   127   1049
+South Carolina    37.8    65  30225
+South Dakota      53.3   172  75955
+Tennessee         41.8    70  41328
+Texas             47.4    35 262134
+Utah              67.3   137  82096
+Vermont           57.1   168   9267
+Virginia          47.8    85  39780
+Washington        63.5    32  66570
+West Virginia     41.6   100  24070
+Wisconsin         54.5   149  54464
+Wyoming           62.9   173  97203
+> 
+> ## multiple id variables
+> df3 <- data.frame(school = rep(1:3, each = 4), class = rep(9:10, 6),
++                   time = rep(c(1,1,2,2), 3), score = rnorm(12))
+> wide <- reshape(df3, idvar = c("school", "class"), direction = "wide")
+> wide
+   school class     score.1     score.2
+1       1     9  0.48742905  0.57578135
+2       1    10  0.73832471 -0.30538839
+5       2     9  1.51178117 -0.62124058
+6       2    10  0.38984324 -2.21469989
+9       3     9  1.12493092 -0.01619026
+10      3    10 -0.04493361  0.94383621
+> ## transform back
+> reshape(wide)
+       school class time     score.1
+1.9.1       1     9    1  0.48742905
+1.10.1      1    10    1  0.73832471
+2.9.1       2     9    1  1.51178117
+2.10.1      2    10    1  0.38984324
+3.9.1       3     9    1  1.12493092
+3.10.1      3    10    1 -0.04493361
+1.9.2       1     9    2  0.57578135
+1.10.2      1    10    2 -0.30538839
+2.9.2       2     9    2 -0.62124058
+2.10.2      2    10    2 -2.21469989
+3.9.2       3     9    2 -0.01619026
+3.10.2      3    10    2  0.94383621
+> 
+> 
+> 
+> 
+> cleanEx()
+> nameEx("runmed")
+> ### * runmed
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: runmed
+> ### Title: Running Medians - Robust Scatter Plot Smoothing
+> ### Aliases: runmed
+> ### Keywords: smooth robust
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> utils::example(nhtemp)
+
+nhtemp> require(stats); require(graphics)
+
+nhtemp> plot(nhtemp, main = "nhtemp data",
+nhtemp+   ylab = "Mean annual temperature in New Haven, CT (deg. F)")
+> myNHT <- as.vector(nhtemp)
+> myNHT[20] <- 2 * nhtemp[20]
+> plot(myNHT, type = "b", ylim = c(48, 60), main = "Running Medians Example")
+> lines(runmed(myNHT, 7), col = "red")
+> 
+> ## special: multiple y values for one x
+> plot(cars, main = "'cars' data and runmed(dist, 3)")
+> lines(cars, col = "light gray", type = "c")
+> with(cars, lines(speed, runmed(dist, k = 3), col = 2))
+> 
+> ## nice quadratic with a few outliers
+> y <- ys <- (-20:20)^2
+> y [c(1,10,21,41)] <- c(150, 30, 400, 450)
+> all(y == runmed(y, 1)) # 1-neighbourhood <==> interpolation
+[1] TRUE
+> plot(y) ## lines(y, lwd = .1, col = "light gray")
+> lines(lowess(seq(y), y, f = 0.3), col = "brown")
+> lines(runmed(y, 7), lwd = 2, col = "blue")
+> lines(runmed(y, 11), lwd = 2, col = "red")
+> 
+> ## Lowess is not robust
+> y <- ys ; y[21] <- 6666 ; x <- seq(y)
+> col <- c("black", "brown","blue")
+> plot(y, col = col[1])
+> lines(lowess(x, y, f = 0.3), col = col[2])
+> lines(runmed(y, 7),      lwd = 2, col = col[3])
+> legend(length(y),max(y), c("data", "lowess(y, f = 0.3)", "runmed(y, 7)"),
++        xjust = 1, col = col, lty = c(0, 1, 1), pch = c(1,NA,NA))
+> 
+> ## An example with initial NA's - used to fail badly (notably for "Turlach"):
+> x15 <- c(rep(NA, 4), c(9, 9, 4, 22, 6, 1, 7, 5, 2, 8, 3))
+> rS15 <- cbind(Sk.3 = runmed(x15, k = 3, algorithm="S"),
++               Sk.7 = runmed(x15, k = 7, algorithm="S"),
++               Sk.11= runmed(x15, k =11, algorithm="S"))
+> rT15 <- cbind(Tk.3 = runmed(x15, k = 3, algorithm="T", print.level=1),
++               Tk.7 = runmed(x15, k = 7, algorithm="T", print.level=1),
++               Tk.9 = runmed(x15, k = 9, algorithm="T", print.level=1),
++               Tk.11= runmed(x15, k =11, algorithm="T", print.level=1))
+runmed(x, k=3, endrule='median' ( => iend=0), algorithm='Turlach',
+       na.*='+Big_alternate' ( => iNAct=1))
+firstNA = 1.
+R_heapsort(1, 3,..): l=2:
+         j:      0     1     2     3     4     5     6
+ window []:    -2B   -2B  -BIG  +BIG  +BIG   +2B   +2B
+  nrlist[]: -12345     2     1     2     0-12345-12345
+ outlist[]:      4     2     3     2
+runmed(x, k=7, endrule='median' ( => iend=0), algorithm='Turlach',
+       na.*='+Big_alternate' ( => iNAct=1))
+firstNA = 1.
+R_heapsort(1, 7,..): l=4:
+         j:      0     1     2     3     4     5     6     7     8     9    10    11    12    13    14
+ window []:    -2B   -2B   -2B   -2B  -BIG  -BIG     4     9     9  +BIG  +BIG   +2B   +2B   +2B   +2B
+  nrlist[]: -12345     4     2     7     3     1     6     5     4     2     0-12345-12345-12345-12345
+ outlist[]:     10     5     9     4     8     7     6     3
+runmed(x, k=9, endrule='median' ( => iend=0), algorithm='Turlach',
+       na.*='+Big_alternate' ( => iNAct=1))
+firstNA = 1.
+R_heapsort(1, 9,..): l=5:
+         j:      0     1     2     3     4     5     6     7     8     9    10    11    12    13    14    15    16    17    18
+ window []:    -2B   -2B   -2B   -2B   -2B  -BIG  -BIG     4     6     9     9    22  +BIG  +BIG   +2B   +2B   +2B   +2B   +2B
+  nrlist[]: -12345     4     2     7     9     3     1     6     8     5     4     7     2     0-12345-12345-12345-12345-12345
+ outlist[]:     13     6    12     5    10     9     7    11     8     4
+runmed(x, k=11, endrule='median' ( => iend=0), algorithm='Turlach',
+       na.*='+Big_alternate' ( => iNAct=1))
+firstNA = 1.
+R_heapsort(1, 11,..): l=6:
+         j:      0     1     2     3     4     5     6     7     8     9    10    11    12    13    14    15    16    17    18    19    20    21    22
+ window []:    -2B   -2B   -2B   -2B   -2B   -2B  -BIG  -BIG     1     4     6     7     9     9    22  +BIG  +BIG   +2B   +2B   +2B   +2B   +2B   +2B
+  nrlist[]: -12345     2     4    10     7     9     1     3     9     6     8    10     5     4     7     2     0-12345-12345-12345-12345-12345-12345
+ outlist[]:     16     6    15     7    13    12     9    14    10     8    11     6
+> cbind(x15, rS15, rT15) # result for k=11  maybe a bit surprising ..
+      x15 Sk.3 Sk.7 Sk.11 Tk.3 Tk.7 Tk.9 Tk.11
+ [1,]  NA  NaN  NaN   NaN  NaN  NaN  NaN   NaN
+ [2,]  NA   NA  NaN   NaN   NA  NaN  NaN   NaN
+ [3,]  NA   NA    9     9   NA    9    9     9
+ [4,]  NA    9    9     7    9    9    7     7
+ [5,]   9    9    9     6    9    9    9     6
+ [6,]   9    9    9     7    9    9    6     7
+ [7,]   4    9    6     6    9    6    7     6
+ [8,]  22    6    7     6    6    7    6     6
+ [9,]   6    6    6     6    6    6    6     6
+[10,]   1    6    5     6    6    5    6     6
+[11,]   7    5    6     6    5    6    5     6
+[12,]   5    5    5     6    5    5    5     6
+[13,]   2    5    5     5    5    5    5     5
+[14,]   8    3    3     3    3    3    3     3
+[15,]   3    3    3     3    3    3    3     3
+> Tv <- rT15[-(1:3),]
+> stopifnot(3 <= Tv, Tv <= 9, 5 <= Tv[1:10,])
+> matplot(y = cbind(x15, rT15), type = "b", ylim = c(1,9), pch=1:5, xlab = NA,
++         main = "runmed(x15, k, algo = \"Turlach\")")
+> mtext(paste("x15 <-", deparse(x15)))
+> points(x15, cex=2)
+> legend("bottomleft", legend=c("data", paste("k = ", c(3,7,9,11))),
++        bty="n", col=1:5, lty=1:5, pch=1:5)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("scatter.smooth")
+> ### * scatter.smooth
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: scatter.smooth
+> ### Title: Scatter Plot with Smooth Curve Fitted by Loess
+> ### Aliases: scatter.smooth loess.smooth
+> ### Keywords: smooth
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> with(cars, scatter.smooth(speed, dist))
+> ## or with dotted thick smoothed line results :
+> with(cars, scatter.smooth(speed, dist, lpars =
++                     list(col = "red", lwd = 3, lty = 3)))
+> 
+> 
+> 
+> cleanEx()
+> nameEx("screeplot")
+> ### * screeplot
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: screeplot
+> ### Title: Screeplots
+> ### Aliases: screeplot screeplot.default
+> ### Keywords: multivariate
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> ## The variances of the variables in the
+> ## USArrests data vary by orders of magnitude, so scaling is appropriate
+> (pc.cr <- princomp(USArrests, cor = TRUE))  # inappropriate
+Call:
+princomp(x = USArrests, cor = TRUE)
+
+Standard deviations:
+   Comp.1    Comp.2    Comp.3    Comp.4 
+1.5748783 0.9948694 0.5971291 0.4164494 
+
+ 4  variables and  50 observations.
+> screeplot(pc.cr)
+> 
+> fit <- princomp(covmat = Harman74.cor)
+> screeplot(fit)
+> screeplot(fit, npcs = 24, type = "lines")
+> 
+> 
+> 
+> cleanEx()
+> nameEx("sd")
+> ### * sd
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: sd
+> ### Title: Standard Deviation
+> ### Aliases: sd
+> ### Keywords: univar
+> 
+> ### ** Examples
+> 
+> sd(1:2) ^ 2
+[1] 0.5
+> 
+> 
+> 
+> cleanEx()
+> nameEx("se.contrast")
+> ### * se.contrast
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: se.contrast
+> ### Title: Standard Errors for Contrasts in Model Terms
+> ### Aliases: se.contrast se.contrast.aov se.contrast.aovlist
+> ### Keywords: models
+> 
+> ### ** Examples
+> 
+> ## From Venables and Ripley (2002) p.165.
+> N <- c(0,1,0,1,1,1,0,0,0,1,1,0,1,1,0,0,1,0,1,0,1,1,0,0)
+> P <- c(1,1,0,0,0,1,0,1,1,1,0,0,0,1,0,1,1,0,0,1,0,1,1,0)
+> K <- c(1,0,0,1,0,1,1,0,0,1,0,1,0,1,1,0,0,0,1,1,1,0,1,0)
+> yield <- c(49.5,62.8,46.8,57.0,59.8,58.5,55.5,56.0,62.8,55.8,69.5,
++ 55.0, 62.0,48.8,45.5,44.2,52.0,51.5,49.8,48.8,57.2,59.0,53.2,56.0)
+> 
+> npk <- data.frame(block = gl(6,4), N = factor(N), P = factor(P),
++                   K = factor(K), yield = yield)
+> ## Set suitable contrasts.
+> options(contrasts = c("contr.helmert", "contr.poly"))
+> npk.aov1 <- aov(yield ~ block + N + K, data = npk)
+> se.contrast(npk.aov1, list(N == "0", N == "1"), data = npk)
+[1] 1.609175
+> # or via a matrix
+> cont <- matrix(c(-1,1), 2, 1, dimnames = list(NULL, "N"))
+> se.contrast(npk.aov1, cont[N, , drop = FALSE]/12, data = npk)
+       N 
+1.609175 
+> 
+> ## test a multi-stratum model
+> npk.aov2 <- aov(yield ~ N + K + Error(block/(N + K)), data = npk)
+> se.contrast(npk.aov2, list(N == "0", N == "1"))
+[1] 1.812166
+> 
+> 
+> ## an example looking at an interaction contrast
+> ## Dataset from R.E. Kirk (1995)
+> ## 'Experimental Design: procedures for the behavioral sciences'
+> score <- c(12, 8,10, 6, 8, 4,10,12, 8, 6,10,14, 9, 7, 9, 5,11,12,
++             7,13, 9, 9, 5,11, 8, 7, 3, 8,12,10,13,14,19, 9,16,14)
+> A <- gl(2, 18, labels = c("a1", "a2"))
+> B <- rep(gl(3, 6, labels = c("b1", "b2", "b3")), 2)
+> fit <- aov(score ~ A*B)
+> cont <- c(1, -1)[A] * c(1, -1, 0)[B]
+> sum(cont)       # 0
+[1] 0
+> sum(cont*score) # value of the contrast
+[1] -18
+> se.contrast(fit, as.matrix(cont))
+Contrast 1 
+  14.24547 
+> (t.stat <- sum(cont*score)/se.contrast(fit, as.matrix(cont)))
+Contrast 1 
+  -1.26356 
+> summary(fit, split = list(B = 1:2), expand.split = TRUE)
+            Df Sum Sq Mean Sq F value  Pr(>F)   
+A            1  18.78   18.78   2.221 0.14661   
+B            2  62.00   31.00   3.666 0.03763 * 
+  B: C1      1   1.50    1.50   0.177 0.67662   
+  B: C2      1  60.50   60.50   7.155 0.01199 * 
+A:B          2  81.56   40.78   4.823 0.01527 * 
+  A:B: C1    1  13.50   13.50   1.597 0.21612   
+  A:B: C2    1  68.06   68.06   8.049 0.00809 **
+Residuals   30 253.67    8.46                   
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+> ## t.stat^2 is the F value on the A:B: C1 line (with Helmert contrasts)
+> ## Now look at all three interaction contrasts
+> cont <- c(1, -1)[A] * cbind(c(1, -1, 0), c(1, 0, -1), c(0, 1, -1))[B,]
+> se.contrast(fit, cont)  # same, due to balance.
+Contrast 1 Contrast 2 Contrast 3 
+  14.24547   14.24547   14.24547 
+> rm(A, B, score)
+> 
+> 
+> ## multi-stratum example where efficiencies play a role
+> ## An example from Yates (1932),
+> ## a 2^3 design in 2 blocks replicated 4 times
+> 
+> Block <- gl(8, 4)
+> A <- factor(c(0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,
++               0,1,0,1,0,1,0,1,0,1,0,1))
+> B <- factor(c(0,0,1,1,0,0,1,1,0,1,0,1,1,0,1,0,0,0,1,1,
++               0,0,1,1,0,0,1,1,0,0,1,1))
+> C <- factor(c(0,1,1,0,1,0,0,1,0,0,1,1,0,0,1,1,0,1,0,1,
++               1,0,1,0,0,0,1,1,1,1,0,0))
+> Yield <- c(101, 373, 398, 291, 312, 106, 265, 450, 106, 306, 324, 449,
++            272, 89, 407, 338, 87, 324, 279, 471, 323, 128, 423, 334,
++            131, 103, 445, 437, 324, 361, 302, 272)
+> aovdat <- data.frame(Block, A, B, C, Yield)
+> fit <- aov(Yield ~ A + B * C + Error(Block), data = aovdat)
+> cont1 <- c(-1, 1)[A]/32  # Helmert contrasts
+> cont2 <- c(-1, 1)[B] * c(-1, 1)[C]/32
+> cont <- cbind(A = cont1, BC = cont2)
+> colSums(cont*Yield) # values of the contrasts
+        A        BC 
+ 10.40625 -20.90625 
+> se.contrast(fit, as.matrix(cont))
+       A       BC 
+3.377196 3.899650 
+> 
+> 
+> base::options(contrasts = c(unordered = "contr.treatment",ordered = "contr.poly"))
+> cleanEx()
+> nameEx("selfStart")
+> ### * selfStart
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: selfStart
+> ### Title: Construct Self-starting Nonlinear Models
+> ### Aliases: selfStart selfStart.default selfStart.formula
+> ### Keywords: models
+> 
+> ### ** Examples
+> 
+> ## self-starting logistic model
+> 
+> ## The "initializer" (finds initial values for parameters from data):
+> initLogis <- function(mCall, data, LHS, ...) {
++     xy <- sortedXyData(mCall[["x"]], LHS, data)
++     if(nrow(xy) < 4)
++         stop("too few distinct input values to fit a logistic model")
++     z <- xy[["y"]]
++     ## transform to proportion, i.e. in (0,1) :
++     rng <- range(z); dz <- diff(rng)
++     z <- (z - rng[1L] + 0.05 * dz)/(1.1 * dz)
++     xy[["z"]] <- log(z/(1 - z))		# logit transformation
++     aux <- coef(lm(x ~ z, xy))
++     pars <- coef(nls(y ~ 1/(1 + exp((xmid - x)/scal)),
++                      data = xy,
++                      start = list(xmid = aux[[1L]], scal = aux[[2L]]),
++                      algorithm = "plinear", ...))
++     setNames(pars [c(".lin", "xmid", "scal")],
++              mCall[c("Asym", "xmid", "scal")])
++ }
+> 
+> mySSlogis <- selfStart(~ Asym/(1 + exp((xmid - x)/scal)),
++                        initial = initLogis,
++                        parameters = c("Asym", "xmid", "scal"))
+> ## Don't show: 
+> ## IGNORE_RDIFF_BEGIN
+> ## End(Don't show)
+> getInitial(weight ~ mySSlogis(Time, Asym, xmid, scal),
++            data = subset(ChickWeight, Chick == 1))
+     Asym      xmid      scal 
+937.02983  35.22296  11.40521 
+> ## Don't show: 
+> ## IGNORE_RDIFF_END
+> ## End(Don't show)
+> 
+> # 'first.order.log.model' is a function object defining a first order
+> # compartment model
+> # 'first.order.log.initial' is a function object which calculates initial
+> # values for the parameters in 'first.order.log.model'
+> #
+> # self-starting first order compartment model
+> ## Not run: 
+> ##D SSfol <- selfStart(first.order.log.model, first.order.log.initial)
+> ## End(Not run)
+> 
+> ## Explore the self-starting models already available in R's  "stats":
+> pos.st <- which("package:stats" == search())
+> mSS <- apropos("^SS..", where = TRUE, ignore.case = FALSE)
+> (mSS <- unname(mSS[names(mSS) == pos.st]))
+ [1] "SSasymp"     "SSasympOff"  "SSasympOrig" "SSbiexp"     "SSfol"      
+ [6] "SSfpl"       "SSgompertz"  "SSlogis"     "SSmicmen"    "SSweibull"  
+> fSS <- sapply(mSS, get, pos = pos.st, mode = "function")
+> all(sapply(fSS, inherits, "selfStart"))  # -> TRUE
+[1] TRUE
+> 
+> ## Show the argument list of each self-starting function:
+> str(fSS, give.attr = FALSE)
+List of 10
+ $ SSasymp    :function (input, Asym, R0, lrc)  
+ $ SSasympOff :function (input, Asym, lrc, c0)  
+ $ SSasympOrig:function (input, Asym, lrc)  
+ $ SSbiexp    :function (input, A1, lrc1, A2, lrc2)  
+ $ SSfol      :function (Dose, input, lKe, lKa, lCl)  
+ $ SSfpl      :function (input, A, B, xmid, scal)  
+ $ SSgompertz :function (x, Asym, b2, b3)  
+ $ SSlogis    :function (input, Asym, xmid, scal)  
+ $ SSmicmen   :function (input, Vm, K)  
+ $ SSweibull  :function (x, Asym, Drop, lrc, pwr)  
+> 
+> 
+> 
+> cleanEx()
+> nameEx("setNames")
+> ### * setNames
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: setNames
+> ### Title: Set the Names in an Object
+> ### Aliases: setNames
+> ### Keywords: list
+> 
+> ### ** Examples
+> 
+> setNames( 1:3, c("foo", "bar", "baz") )
+foo bar baz 
+  1   2   3 
+> # this is just a short form of
+> tmp <- 1:3
+> names(tmp) <-  c("foo", "bar", "baz")
+> tmp
+foo bar baz 
+  1   2   3 
+> 
+> ## special case of character vector, using default
+> setNames(nm = c("First", "2nd"))
+  First     2nd 
+"First"   "2nd" 
+> 
+> 
+> 
+> cleanEx()
+> nameEx("shapiro.test")
+> ### * shapiro.test
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: shapiro.test
+> ### Title: Shapiro-Wilk Normality Test
+> ### Aliases: shapiro.test
+> ### Keywords: htest
+> 
+> ### ** Examples
+> 
+> shapiro.test(rnorm(100, mean = 5, sd = 3))
+
+	Shapiro-Wilk normality test
+
+data:  rnorm(100, mean = 5, sd = 3)
+W = 0.9956, p-value = 0.9876
+
+> shapiro.test(runif(100, min = 2, max = 4))
+
+	Shapiro-Wilk normality test
+
+data:  runif(100, min = 2, max = 4)
+W = 0.93092, p-value = 5.616e-05
+
+> 
+> 
+> 
+> cleanEx()
+> nameEx("sigma")
+> ### * sigma
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: sigma
+> ### Title: Extract Residual Standard Deviation 'Sigma'
+> ### Aliases: sigma sigma.default sigma.mlm
+> ### Keywords: models
+> 
+> ### ** Examples
+> 
+> ## -- lm() ------------------------------
+> lm1 <- lm(Fertility ~ . , data = swiss)
+> sigma(lm1) # ~= 7.165  = "Residual standard error"  printed from summary(lm1)
+[1] 7.165369
+> stopifnot(all.equal(sigma(lm1), summary(lm1)$sigma, tolerance=1e-15))
+> 
+> ## -- nls() -----------------------------
+> DNase1 <- subset(DNase, Run == 1)
+> fm.DN1 <- nls(density ~ SSlogis(log(conc), Asym, xmid, scal), DNase1)
+> sigma(fm.DN1) # ~= 0.01919  as from summary(..)
+[1] 0.01919449
+> stopifnot(all.equal(sigma(fm.DN1), summary(fm.DN1)$sigma, tolerance=1e-15))
+> 
+> ## -- glm() -----------------------------
+> ## -- a) Binomial -- Example from MASS
+> ldose <- rep(0:5, 2)
+> numdead <- c(1, 4, 9, 13, 18, 20, 0, 2, 6, 10, 12, 16)
+> sex <- factor(rep(c("M", "F"), c(6, 6)))
+> SF <- cbind(numdead, numalive = 20-numdead)
+> sigma(budworm.lg <- glm(SF ~ sex*ldose, family = binomial))
+[1] 0.7900734
+> 
+> ## -- b) Poisson -- from ?glm :
+> ## Dobson (1990) Page 93: Randomized Controlled Trial :
+> counts <- c(18,17,15,20,10,20,25,13,12)
+> outcome <- gl(3,1,9)
+> treatment <- gl(3,3)
+> sigma(glm.D93 <- glm(counts ~ outcome + treatment, family = poisson()))
+[1] 1.13238
+> ## (currently) *differs* from
+> summary(glm.D93)$dispersion # == 1
+[1] 1
+> ## and the *Quasi*poisson's dispersion
+> sigma(glm.qD93 <- update(glm.D93, family = quasipoisson()))
+[1] 1.13238
+> sigma (glm.qD93)^2 # 1.282285 is close, but not the same
+[1] 1.282285
+> summary(glm.qD93)$dispersion # == 1.2933
+[1] 1.2933
+> 
+> ## -- Multivariate lm() "mlm" -----------
+> utils::example("SSD", echo=FALSE)
+> sigma(mlmfit) # is the same as {but more efficient than}
+   deg0NA    deg4NA    deg8NA    deg0NP    deg4NP    deg8NP 
+ 56.92100  86.02325  78.99367  88.54377 109.54451 116.79041 
+> sqrt(diag(estVar(mlmfit)))
+   deg0NA    deg4NA    deg8NA    deg0NP    deg4NP    deg8NP 
+ 56.92100  86.02325  78.99367  88.54377 109.54451 116.79041 
+> ## Don't show: 
+> stopifnot(all.equal(sigma(mlmfit), sqrt(diag(estVar(mlmfit)))))
+> ## End(Don't show)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("simulate")
+> ### * simulate
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: simulate
+> ### Title: Simulate Responses
+> ### Aliases: simulate
+> ### Keywords: models datagen
+> 
+> ### ** Examples
+> 
+> x <- 1:5
+> mod1 <- lm(c(1:3, 7, 6) ~ x)
+> S1 <- simulate(mod1, nsim = 4)
+> ## repeat the simulation:
+> .Random.seed <- attr(S1, "seed")
+> identical(S1, simulate(mod1, nsim = 4))
+[1] TRUE
+> 
+> S2 <- simulate(mod1, nsim = 200, seed = 101)
+> rowMeans(S2) # should be about the same as
+        1         2         3         4         5 
+0.6885691 2.2329771 3.7790352 5.2775859 6.8131451 
+> fitted(mod1)
+  1   2   3   4   5 
+0.8 2.3 3.8 5.3 6.8 
+> 
+> ## repeat identically:
+> (sseed <- attr(S2, "seed")) # seed; RNGkind as attribute
+[1] 101
+attr(,"kind")
+attr(,"kind")[[1]]
+[1] "Mersenne-Twister"
+
+attr(,"kind")[[2]]
+[1] "Inversion"
+
+attr(,"kind")[[3]]
+[1] "Rejection"
+
+> stopifnot(identical(S2, simulate(mod1, nsim = 200, seed = sseed)))
+> 
+> ## To be sure about the proper RNGkind, e.g., after
+> RNGversion("2.7.0")
+Warning in RNGkind("Mersenne-Twister", "Inversion", "Rounding") :
+  non-uniform 'Rounding' sampler used
+> ## first set the RNG kind, then simulate
+> do.call(RNGkind, attr(sseed, "kind"))
+> identical(S2, simulate(mod1, nsim = 200, seed = sseed))
+[1] TRUE
+> 
+> ## Binomial GLM examples
+> yb1 <- matrix(c(4, 4, 5, 7, 8, 6, 6, 5, 3, 2), ncol = 2)
+> modb1 <- glm(yb1 ~ x, family = binomial)
+> S3 <- simulate(modb1, nsim = 4)
+> # each column of S3 is a two-column matrix.
+> 
+> x2 <- sort(runif(100))
+> yb2 <- rbinom(100, prob = plogis(2*(x2-1)), size = 1)
+> yb2 <- factor(1 + yb2, labels = c("failure", "success"))
+> modb2 <- glm(yb2 ~ x2, family = binomial)
+> S4 <- simulate(modb2, nsim = 4)
+> # each column of S4 is a factor
+> 
+> 
+> 
+> cleanEx()
+> nameEx("smooth")
+> ### * smooth
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: smooth
+> ### Title: Tukey's (Running Median) Smoothing
+> ### Aliases: smooth
+> ### Keywords: robust smooth
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> ## see also   demo(smooth) !
+> 
+> x1 <- c(4, 1, 3, 6, 6, 4, 1, 6, 2, 4, 2) # very artificial
+> (x3R <- smooth(x1, "3R")) # 2 iterations of "3"
+3R Tukey smoother resulting from  smooth(x = x1, kind = "3R") 
+ used 2 iterations
+ [1] 3 3 3 6 6 4 4 4 2 2 2
+> smooth(x3R, kind = "S")
+S Tukey smoother resulting from  smooth(x = x3R, kind = "S") 
+ changed
+ [1] 3 3 3 3 4 4 4 4 2 2 2
+> 
+> sm.3RS <- function(x, ...)
++    smooth(smooth(x, "3R", ...), "S", ...)
+> 
+> y <- c(1, 1, 19:1)
+> plot(y, main = "misbehaviour of \"3RSR\"", col.main = 3)
+> lines(sm.3RS(y))
+> lines(smooth(y))
+> lines(smooth(y, "3RSR"), col = 3, lwd = 2)  # the horror
+> 
+> x <- c(8:10, 10, 0, 0, 9, 9)
+> plot(x, main = "breakdown of  3R  and  S  and hence  3RSS")
+> matlines(cbind(smooth(x, "3R"), smooth(x, "S"), smooth(x, "3RSS"), smooth(x)))
+> 
+> presidents[is.na(presidents)] <- 0 # silly
+> summary(sm3 <- smooth(presidents, "3R"))
+3R Tukey smoother resulting from
+ smooth(x = presidents, kind = "3R") ;  n = 120 
+ used 4 iterations
+   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
+    0.0    44.0    57.0    54.2    71.0    82.0 
+> summary(sm2 <- smooth(presidents,"3RSS"))
+3RSS Tukey smoother resulting from
+ smooth(x = presidents, kind = "3RSS") ;  n = 120 
+ used 5 iterations
+   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
+   0.00   44.00   57.00   55.45   69.00   82.00 
+> summary(sm  <- smooth(presidents))
+3RS3R Tukey smoother resulting from
+ smooth(x = presidents) ;  n = 120 
+ used 7 iterations
+   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
+  24.00   44.00   57.00   55.88   69.00   82.00 
+> 
+> all.equal(c(sm2), c(smooth(smooth(sm3, "S"), "S")))  # 3RSS  === 3R S S
+[1] TRUE
+> all.equal(c(sm),  c(smooth(smooth(sm3, "S"), "3R"))) # 3RS3R === 3R S 3R
+[1] TRUE
+> 
+> plot(presidents, main = "smooth(presidents0, *) :  3R and default 3RS3R")
+> lines(sm3, col = 3, lwd = 1.5)
+> lines(sm, col = 2, lwd = 1.25)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("smooth.spline")
+> ### * smooth.spline
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: smooth.spline
+> ### Title: Fit a Smoothing Spline
+> ### Aliases: smooth.spline .nknots.smspl
+> ### Keywords: smooth
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> plot(dist ~ speed, data = cars, main = "data(cars)  &  smoothing splines")
+> cars.spl <- with(cars, smooth.spline(speed, dist))
+> cars.spl
+Call:
+smooth.spline(x = speed, y = dist)
+
+Smoothing Parameter  spar= 0.7801305  lambda= 0.1112206 (11 iterations)
+Equivalent Degrees of Freedom (Df): 2.635278
+Penalized Criterion (RSS): 4187.776
+GCV: 244.1044
+> ## This example has duplicate points, so avoid cv = TRUE
+> ## Don't show: 
+>   stopifnot(cars.spl $ w == table(cars$speed)) # weights = multiplicities
+>   utils::str(cars.spl, digits.d = 5, vec.len = 6)
+List of 21
+ $ x         : num [1:19] 4 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ...
+ $ y         : num [1:19] 1.6578 11.6829 15.0644 18.4823 21.9471 25.4656 29.0505 32.7076 ...
+ $ w         : num [1:19] 2 2 1 1 3 2 4 4 4 3 2 3 4 3 5 ...
+ $ yin       : num [1:19] 6 13 16 10 26 22.5 21.5 35 ...
+ $ tol       : num 7e-06
+ $ data      :List of 3
+  ..$ x: num [1:50] 4 4 7 7 8 9 10 10 10 11 11 12 12 12 12 ...
+  ..$ y: num [1:50] 2 10 4 22 16 10 18 26 34 17 28 14 20 24 28 ...
+  ..$ w: num 1
+ $ no.weights: logi TRUE
+ $ n         : int 50
+ $ lev       : num [1:19] 0.399342 0.179105 0.069771 0.055561 0.136721 0.077539 0.137252 0.126354 ...
+ $ cv        : logi FALSE
+ $ cv.crit   : num 244.1
+ $ pen.crit  : num 4187.8
+ $ crit      : num 244.1
+ $ df        : num 2.6353
+ $ spar      : num 0.78013
+ $ ratio     : num 6.576e-05
+ $ lambda    : num 0.11122
+ $ iparms    : Named int [1:5] 1 0 11 0 NA
+  ..- attr(*, "names")= chr [1:5] "icrit" "ispar" "iter" "" "errorI"
+ $ auxM      : NULL
+ $ fit       :List of 5
+  ..$ knot : num [1:25] 0 0 0 0 0.14286 0.19048 0.2381 0.28571 ...
+  ..$ nk   : int 21
+  ..$ min  : num 4
+  ..$ range: num 21
+  ..$ coef : num [1:21] 1.6578 4.9869 9.4256 15.0584 18.4743 21.9384 25.4544 29.0377 ...
+  ..- attr(*, "class")= chr "smooth.spline.fit"
+ $ call      : language smooth.spline(x = speed, y = dist)
+ - attr(*, "class")= chr "smooth.spline"
+>   cars.spl$fit
+$knot
+ [1] 0.0000000 0.0000000 0.0000000 0.0000000 0.1428571 0.1904762 0.2380952
+ [8] 0.2857143 0.3333333 0.3809524 0.4285714 0.4761905 0.5238095 0.5714286
+[15] 0.6190476 0.6666667 0.7142857 0.7619048 0.8571429 0.9047619 0.9523810
+[22] 1.0000000 1.0000000 1.0000000 1.0000000
+
+$nk
+[1] 21
+
+$min
+[1] 4
+
+$range
+[1] 21
+
+$coef
+ [1]  1.657809  4.986889  9.425578 15.058364 18.474307 21.938439 25.454405
+ [8] 29.037679 32.697985 36.415692 40.180057 44.035086 48.004725 52.097325
+[15] 56.299736 62.096055 68.215320 74.524063 79.313459 82.506943 84.103688
+
+attr(,"class")
+[1] "smooth.spline.fit"
+> ## End(Don't show)
+> lines(cars.spl, col = "blue")
+> ss10 <- smooth.spline(cars[,"speed"], cars[,"dist"], df = 10)
+> lines(ss10, lty = 2, col = "red")
+> legend(5,120,c(paste("default [C.V.] => df =",round(cars.spl$df,1)),
++                "s( * , df = 10)"), col = c("blue","red"), lty = 1:2,
++        bg = 'bisque')
+> 
+> 
+> ## Residual (Tukey Anscombe) plot:
+> plot(residuals(cars.spl) ~ fitted(cars.spl))
+> abline(h = 0, col = "gray")
+> 
+> ## consistency check:
+> stopifnot(all.equal(cars$dist,
++                     fitted(cars.spl) + residuals(cars.spl)))
+> ## The chosen inner knots in original x-scale :
+> with(cars.spl$fit, min + range * knot[-c(1:3, nk+1 +1:3)]) # == unique(cars$speed)
+ [1]  4  7  8  9 10 11 12 13 14 15 16 17 18 19 20 22 23 24 25
+> 
+> ## Visualize the behavior of  .nknots.smspl()
+> nKnots <- Vectorize(.nknots.smspl) ; c.. <- adjustcolor("gray20",.5)
+> curve(nKnots, 1, 250, n=250)
+> abline(0,1, lty=2, col=c..); text(90,90,"y = x", col=c.., adj=-.25)
+> abline(h=100,lty=2); abline(v=200, lty=2)
+> 
+> n <- c(1:799, seq(800, 3490, by=10), seq(3500, 10000, by = 50))
+> plot(n, nKnots(n), type="l", main = "Vectorize(.nknots.smspl) (n)")
+> abline(0,1, lty=2, col=c..); text(180,180,"y = x", col=c..)
+> n0 <- c(50, 200, 800, 3200); c0 <- adjustcolor("blue3", .5)
+> lines(n0, nKnots(n0), type="h", col=c0)
+> axis(1, at=n0, line=-2, col.ticks=c0, col=NA, col.axis=c0)
+> axis(4, at=.nknots.smspl(10000), line=-.5, col=c..,col.axis=c.., las=1)
+> 
+> ##-- artificial example
+> y18 <- c(1:3, 5, 4, 7:3, 2*(2:5), rep(10, 4))
+> xx  <- seq(1, length(y18), length.out = 201)
+> (s2   <- smooth.spline(y18)) # GCV
+Call:
+smooth.spline(x = y18)
+
+Smoothing Parameter  spar= 0.3928105  lambda= 9.672776e-05 (13 iterations)
+Equivalent Degrees of Freedom (Df): 8.494168
+Penalized Criterion (RSS): 3.59204
+GCV: 0.7155391
+> (s02  <- smooth.spline(y18, spar = 0.2))
+Call:
+smooth.spline(x = y18, spar = 0.2)
+
+Smoothing Parameter  spar= 0.2  lambda= 3.911187e-06
+Equivalent Degrees of Freedom (Df): 15.259
+Penalized Criterion (RSS): 0.4973656
+GCV: 1.191602
+> (s02. <- smooth.spline(y18, spar = 0.2, cv = NA))
+Call:
+smooth.spline(x = y18, spar = 0.2, cv = NA)
+
+Smoothing Parameter  spar= 0.2  lambda= 3.911187e-06
+Equivalent Degrees of Freedom (Df): NA
+Penalized Criterion (RSS): 0.4973656
+> plot(y18, main = deparse(s2$call), col.main = 2)
+> lines(s2, col = "gray"); lines(predict(s2, xx), col = 2)
+> lines(predict(s02, xx), col = 3); mtext(deparse(s02$call), col = 3)
+> 
+> ## Specifying 'lambda' instead of usual spar :
+> (s2. <- smooth.spline(y18, lambda = s2$lambda, tol = s2$tol))
+Call:
+smooth.spline(x = y18, lambda = s2$lambda, tol = s2$tol)
+
+Smoothing Parameter  spar= NA  lambda= 9.672776e-05
+Equivalent Degrees of Freedom (Df): 8.494168
+Penalized Criterion (RSS): 3.59204
+GCV: 0.7155391
+> 
+> ## Don't show: 
+> stopifnot(identical(
++     with(s2$fit, min + range * knot[-c(1:3, nk+1+1:3)]),
++     as.numeric(1:18)),
++     with(cars.spl$fit, min + range * knot[-c(1:3, nk+1+1:3)]) == unique(cars$speed))
+> 
+> nD <- c("spar", "ratio", "iparms", "call"); nn <- setdiff(names(s2), nD)
+> stopifnot(all.equal(s2[nn], s2.[nn], tolerance = 7e-7), # seen 6.86e-8
++           all.equal(predict(s02 , xx),
++ 		    predict(s02., xx), tolerance = 1e-15))
+> ## End(Don't show)
+> 
+> 
+> cleanEx()
+> nameEx("smoothEnds")
+> ### * smoothEnds
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: smoothEnds
+> ### Title: End Points Smoothing (for Running Medians)
+> ### Aliases: smoothEnds
+> ### Keywords: smooth robust
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> y <- ys <- (-20:20)^2
+> y [c(1,10,21,41)] <-  c(100, 30, 400, 470)
+> s7k <- runmed(y, 7, endrule = "keep")
+> s7. <- runmed(y, 7, endrule = "const")
+> s7m <- runmed(y, 7)
+> col3 <- c("midnightblue","blue","steelblue")
+> plot(y, main = "Running Medians -- runmed(*, k=7, endrule = X)")
+> lines(ys, col = "light gray")
+> matlines(cbind(s7k, s7.,s7m), lwd = 1.5, lty = 1, col = col3)
+> eRules <- c("keep","constant","median")
+> legend("topleft", paste("endrule", eRules, sep = " = "),
++        col = col3, lwd = 1.5, lty = 1, bty = "n")
+> 
+> stopifnot(identical(s7m, smoothEnds(s7k, 7)))
+> 
+> ## With missing values (for R >= 3.6.1):
+> yN <- y; yN[c(2,40)] <- NA
+> rN <- sapply(eRules, function(R) runmed(yN, 7, endrule=R))
+> matlines(rN, type = "b", pch = 4, lwd = 3, lty=2,
++          col = adjustcolor(c("red", "orange4", "orange1"), 0.5))
+> yN[c(1, 20:21)] <- NA # additionally
+> rN. <- sapply(eRules, function(R) runmed(yN, 7, endrule=R))
+> head(rN., 4); tail(rN.) # more NA's too, still not *so* many:
+     keep constant median
+[1,]   NA      256    392
+[2,]   NA      256    324
+[3,]  324      256    256
+[4,]  256      256    256
+      keep constant median
+[36,]  225      225    225
+[37,]  256      256    256
+[38,]  289      289    289
+[39,]  324      289    289
+[40,]   NA      289    397
+[41,]  470      289    470
+> stopifnot(exprs = {
++    !anyNA(rN[,2:3])
++    identical(which(is.na(rN[,"keep"])), c(2L, 40L))
++    identical(which(is.na(rN.), arr.ind=TRUE, useNames=FALSE),
++              cbind(c(1:2,40L), 1L))
++    identical(rN.[38:41, "median"], c(289,289, 397, 470))
++ })
+> 
+> 
+> 
+> cleanEx()
+> nameEx("sortedXyData")
+> ### * sortedXyData
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: sortedXyData
+> ### Title: Create a 'sortedXyData' Object
+> ### Aliases: sortedXyData sortedXyData.default
+> ### Keywords: manip
+> 
+> ### ** Examples
+> 
+> DNase.2 <- DNase[ DNase$Run == "2", ]
+> sortedXyData( expression(log(conc)), expression(density), DNase.2 )
+           x      y
+1 -3.0194489 0.0475
+2 -1.6331544 0.1300
+3 -0.9400073 0.2160
+4 -0.2468601 0.3920
+5  0.4462871 0.6765
+6  1.1394343 1.0970
+7  1.8325815 1.5400
+8  2.5257286 1.9230
+> 
+> 
+> 
+> cleanEx()
+> nameEx("spec.ar")
+> ### * spec.ar
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: spec.ar
+> ### Title: Estimate Spectral Density of a Time Series from AR Fit
+> ### Aliases: spec.ar
+> ### Keywords: ts
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> spec.ar(lh)
+> 
+> spec.ar(ldeaths)
+> spec.ar(ldeaths, method = "burg")
+> 
+> spec.ar(log(lynx))
+> spec.ar(log(lynx), method = "burg", add = TRUE, col = "purple")
+> spec.ar(log(lynx), method = "mle", add = TRUE, col = "forest green")
+> spec.ar(log(lynx), method = "ols", add = TRUE, col = "blue")
+> 
+> 
+> 
+> cleanEx()
+> nameEx("spec.pgram")
+> ### * spec.pgram
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: spec.pgram
+> ### Title: Estimate Spectral Density of a Time Series by a Smoothed
+> ###   Periodogram
+> ### Aliases: spec.pgram
+> ### Keywords: ts
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> ## Examples from Venables & Ripley
+> spectrum(ldeaths)
+> spectrum(ldeaths, spans = c(3,5))
+> spectrum(ldeaths, spans = c(5,7))
+> spectrum(mdeaths, spans = c(3,3))
+> spectrum(fdeaths, spans = c(3,3))
+> 
+> ## bivariate example
+> mfdeaths.spc <- spec.pgram(ts.union(mdeaths, fdeaths), spans = c(3,3))
+> # plots marginal spectra: now plot coherency and phase
+> plot(mfdeaths.spc, plot.type = "coherency")
+> plot(mfdeaths.spc, plot.type = "phase")
+> 
+> ## now impose a lack of alignment
+> mfdeaths.spc <- spec.pgram(ts.intersect(mdeaths, lag(fdeaths, 4)),
++    spans = c(3,3), plot = FALSE)
+> plot(mfdeaths.spc, plot.type = "coherency")
+> plot(mfdeaths.spc, plot.type = "phase")
+> 
+> stocks.spc <- spectrum(EuStockMarkets, kernel("daniell", c(30,50)),
++                        plot = FALSE)
+> plot(stocks.spc, plot.type = "marginal") # the default type
+> plot(stocks.spc, plot.type = "coherency")
+> plot(stocks.spc, plot.type = "phase")
+> 
+> sales.spc <- spectrum(ts.union(BJsales, BJsales.lead),
++                       kernel("modified.daniell", c(5,7)))
+> plot(sales.spc, plot.type = "coherency")
+> plot(sales.spc, plot.type = "phase")
+> 
+> 
+> 
+> cleanEx()
+> nameEx("spectrum")
+> ### * spectrum
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: spectrum
+> ### Title: Spectral Density Estimation
+> ### Aliases: spectrum spec
+> ### Keywords: ts
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> ## Examples from Venables & Ripley
+> ## spec.pgram
+> par(mfrow = c(2,2))
+> spectrum(lh)
+> spectrum(lh, spans = 3)
+> spectrum(lh, spans = c(3,3))
+> spectrum(lh, spans = c(3,5))
+> 
+> spectrum(ldeaths)
+> spectrum(ldeaths, spans = c(3,3))
+> spectrum(ldeaths, spans = c(3,5))
+> spectrum(ldeaths, spans = c(5,7))
+> spectrum(ldeaths, spans = c(5,7), log = "dB", ci = 0.8)
+> 
+> # for multivariate examples see the help for spec.pgram
+> 
+> ## spec.ar
+> spectrum(lh, method = "ar")
+> spectrum(ldeaths, method = "ar")
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("splinefun")
+> ### * splinefun
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: splinefun
+> ### Title: Interpolating Splines
+> ### Aliases: spline splinefun splinefunH
+> ### Keywords: math dplot
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> op <- par(mfrow = c(2,1), mgp = c(2,.8,0), mar = 0.1+c(3,3,3,1))
+> n <- 9
+> x <- 1:n
+> y <- rnorm(n)
+> plot(x, y, main = paste("spline[fun](.) through", n, "points"))
+> lines(spline(x, y))
+> lines(spline(x, y, n = 201), col = 2)
+> 
+> y <- (x-6)^2
+> plot(x, y, main = "spline(.) -- 3 methods")
+> lines(spline(x, y, n = 201), col = 2)
+> lines(spline(x, y, n = 201, method = "natural"), col = 3)
+> lines(spline(x, y, n = 201, method = "periodic"), col = 4)
+Warning in spline(x, y, n = 201, method = "periodic") :
+  spline: first and last y values differ - using y[1] for both
+> legend(6, 25, c("fmm","natural","periodic"), col = 2:4, lty = 1)
+> 
+> y <- sin((x-0.5)*pi)
+> f <- splinefun(x, y)
+> ls(envir = environment(f))
+[1] "z"
+> splinecoef <- get("z", envir = environment(f))
+> curve(f(x), 1, 10, col = "green", lwd = 1.5)
+> points(splinecoef, col = "purple", cex = 2)
+> curve(f(x, deriv = 1), 1, 10, col = 2, lwd = 1.5)
+> curve(f(x, deriv = 2), 1, 10, col = 2, lwd = 1.5, n = 401)
+> curve(f(x, deriv = 3), 1, 10, col = 2, lwd = 1.5, n = 401)
+> par(op)
+> 
+> ## Manual spline evaluation --- demo the coefficients :
+> .x <- splinecoef$x
+> u <- seq(3, 6, by = 0.25)
+> (ii <- findInterval(u, .x))
+ [1] 3 3 3 3 4 4 4 4 5 5 5 5 6
+> dx <- u - .x[ii]
+> f.u <- with(splinecoef,
++             y[ii] + dx*(b[ii] + dx*(c[ii] + dx* d[ii])))
+> stopifnot(all.equal(f(u), f.u))
+> 
+> ## An example with ties (non-unique  x values):
+> set.seed(1); x <- round(rnorm(30), 1); y <- sin(pi * x) + rnorm(30)/10
+> plot(x, y, main = "spline(x,y)  when x has ties")
+> lines(spline(x, y, n = 201), col = 2)
+Warning in regularize.values(x, y, ties, missing(ties)) :
+  collapsing to unique 'x' values
+> ## visualizes the non-unique ones:
+> tx <- table(x); mx <- as.numeric(names(tx[tx > 1]))
+> ry <- matrix(unlist(tapply(y, match(x, mx), range, simplify = FALSE)),
++              ncol = 2, byrow = TRUE)
+> segments(mx, ry[, 1], mx, ry[, 2], col = "blue", lwd = 2)
+> 
+> ## Another example with sorted x, but ties:
+> set.seed(8); x <- sort(round(rnorm(30), 1)); y <- round(sin(pi * x) + rnorm(30)/10, 3)
+> summary(diff(x) == 0) # -> 7 duplicated x-values
+   Mode   FALSE    TRUE 
+logical      22       7 
+> str(spline(x, y, n = 201, ties="ordered")) # all '$y' entries are NaN
+List of 2
+ $ x: num [1:201] -3 -2.98 -2.95 -2.92 -2.9 ...
+ $ y: num [1:201] NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
+> ## The default (ties=mean) is ok, but most efficient to use instead is
+> sxyo <- spline(x, y, n = 201, ties= list("ordered", mean))
+> sapply(sxyo, summary)# all fine now
+            x           y
+Min.    -3.00 -1.07800000
+1st Qu. -1.75 -0.57050000
+Median  -0.50 -0.13613265
+Mean    -0.50 -0.08208311
+3rd Qu.  0.75  0.50611122
+Max.     2.00  1.03072752
+> plot(x, y, main = "spline(x,y, ties=list(\"ordered\", mean))  for when x has ties")
+> lines(sxyo, col="blue")
+> 
+> ## An example of monotone interpolation
+> n <- 20
+> set.seed(11)
+> x. <- sort(runif(n)) ; y. <- cumsum(abs(rnorm(n)))
+> plot(x., y.)
+> curve(splinefun(x., y.)(x), add = TRUE, col = 2, n = 1001)
+> curve(splinefun(x., y., method = "monoH.FC")(x), add = TRUE, col = 3, n = 1001)
+> curve(splinefun(x., y., method = "hyman")   (x), add = TRUE, col = 4, n = 1001)
+> legend("topleft",
++        paste0("splinefun( \"", c("fmm", "monoH.FC", "hyman"), "\" )"),
++        col = 2:4, lty = 1, bty = "n")
+> 
+> ## and one from Fritsch and Carlson (1980), Dougherty et al (1989)
+> x. <- c(7.09, 8.09, 8.19, 8.7, 9.2, 10, 12, 15, 20)
+> f <- c(0, 2.76429e-5, 4.37498e-2, 0.169183, 0.469428, 0.943740,
++        0.998636, 0.999919, 0.999994)
+> s0 <- splinefun(x., f)
+> s1 <- splinefun(x., f, method = "monoH.FC")
+> s2 <- splinefun(x., f, method = "hyman")
+> plot(x., f, ylim = c(-0.2, 1.2))
+> curve(s0(x), add = TRUE, col = 2, n = 1001) -> m0
+> curve(s1(x), add = TRUE, col = 3, n = 1001)
+> curve(s2(x), add = TRUE, col = 4, n = 1001)
+> legend("right",
++        paste0("splinefun( \"", c("fmm", "monoH.FC", "hyman"), "\" )"),
++        col = 2:4, lty = 1, bty = "n")
+> 
+> ## they seem identical, but are not quite:
+> xx <- m0$x
+> plot(xx, s1(xx) - s2(xx), type = "l",  col = 2, lwd = 2,
++      main = "Difference   monoH.FC - hyman"); abline(h = 0, lty = 3)
+> 
+> x <- xx[xx < 10.2] ## full range: x <- xx .. does not show enough
+> ccol <- adjustcolor(2:4, 0.8)
+> matplot(x, cbind(s0(x, deriv = 2), s1(x, deriv = 2), s2(x, deriv = 2))^2,
++         lwd = 2, col = ccol, type = "l", ylab = quote({{f*second}(x)}^2),
++         main = expression({{f*second}(x)}^2 ~" for the three 'splines'"))
+> legend("topright",
++        paste0("splinefun( \"", c("fmm", "monoH.FC", "hyman"), "\" )"),
++        lwd = 2, col  =  ccol, lty = 1:3, bty = "n")
+> ## --> "hyman" has slightly smaller  Integral f''(x)^2 dx  than "FC",
+> ## here, and both are 'much worse' than the regular fmm spline.
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("stat.anova")
+> ### * stat.anova
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: stat.anova
+> ### Title: GLM Anova Statistics
+> ### Aliases: stat.anova
+> ### Keywords: regression models
+> 
+> ### ** Examples
+> 
+> ##-- Continued from '?glm':
+> ## Don't show: 
+> utils::example("glm", echo = FALSE)
+> ## End(Don't show)
+> print(ag <- anova(glm.D93))
+Analysis of Deviance Table
+
+Model: poisson, link: log
+
+Response: counts
+
+Terms added sequentially (first to last)
+
+
+          Df Deviance Resid. Df Resid. Dev
+NULL                          8    10.5814
+outcome    2   5.4523         6     5.1291
+treatment  2   0.0000         4     5.1291
+> stat.anova(ag$table, test = "Cp",
++            scale = sum(resid(glm.D93, "pearson")^2)/4,
++            df.scale = 4, n = 9)
+     table Cp
+> 
+> 
+> 
+> cleanEx()
+> nameEx("step")
+> ### * step
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: step
+> ### Title: Choose a model by AIC in a Stepwise Algorithm
+> ### Aliases: step
+> ### Keywords: models
+> 
+> ### ** Examples
+> 
+> 
+> cleanEx()
+> nameEx("stepfun")
+> ### * stepfun
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: stepfun
+> ### Title: Step Functions - Creation and Class
+> ### Aliases: stepfun is.stepfun as.stepfun print.stepfun summary.stepfun
+> ###   knots
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> y0 <- c(1., 2., 4., 3.)
+> sfun0  <- stepfun(1:3, y0, f = 0)
+> sfun.2 <- stepfun(1:3, y0, f = 0.2)
+> sfun1  <- stepfun(1:3, y0, f = 1)
+> sfun1c <- stepfun(1:3, y0, right = TRUE) # hence f=1
+> sfun0
+Step function
+Call: stepfun(1:3, y0, f = 0)
+ x[1:3] =      1,      2,      3
+4 plateau levels =      1,      2,      4,      3
+> summary(sfun0)
+Step function with continuity 'f'= 0 ,  3 knots at
+[1] 1 2 3
+  and	4 plateau levels (y) at
+[1] 1 2 4 3
+> summary(sfun.2)
+Step function with continuity 'f'= 0.2 ,  3 knots at
+[1] 1 2 3
+  and	4 plateau levels (y) at
+[1] 1 2 4 3
+> 
+> ## look at the internal structure:
+> unclass(sfun0)
+function (v) 
+.approxfun(x, y, v, method, yleft, yright, f, na.rm)
+<bytecode: 0x4127218>
+<environment: 0x8c9c5d8>
+attr(,"call")
+stepfun(1:3, y0, f = 0)
+> ls(envir = environment(sfun0))
+[1] "f"      "method" "na.rm"  "x"      "y"      "yleft"  "yright"
+> 
+> x0 <- seq(0.5, 3.5, by = 0.25)
+> rbind(x = x0, f.f0 = sfun0(x0), f.f02 = sfun.2(x0),
++       f.f1 = sfun1(x0), f.f1c = sfun1c(x0))
+      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13]
+x      0.5 0.75    1 1.25  1.5 1.75    2 2.25  2.5  2.75     3  3.25   3.5
+f.f0   1.0 1.00    2 2.00  2.0 2.00    4 4.00  4.0  4.00     3  3.00   3.0
+f.f02  1.0 1.00    2 2.40  2.4 2.40    4 3.80  3.8  3.80     3  3.00   3.0
+f.f1   1.0 1.00    2 4.00  4.0 4.00    4 3.00  3.0  3.00     3  3.00   3.0
+f.f1c  1.0 1.00    1 2.00  2.0 2.00    2 4.00  4.0  4.00     4  3.00   3.0
+> ## Identities :
+> stopifnot(identical(y0[-1], sfun0 (1:3)), # right = FALSE
++           identical(y0[-4], sfun1c(1:3))) # right = TRUE
+> 
+> 
+> 
+> cleanEx()
+> nameEx("stl")
+> ### * stl
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: stl
+> ### Title: Seasonal Decomposition of Time Series by Loess
+> ### Aliases: stl
+> ### Keywords: ts
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> plot(stl(nottem, "per"))
+> plot(stl(nottem, s.window = 7, t.window = 50, t.jump = 1))
+> 
+> plot(stllc <- stl(log(co2), s.window = 21))
+> summary(stllc)
+ Call:
+ stl(x = log(co2), s.window = 21)
+
+ Time.series components:
+    seasonal                trend            remainder            
+ Min.   :-0.009939103   Min.   :5.753541   Min.   :-0.0022554051  
+ 1st Qu.:-0.004536535   1st Qu.:5.778556   1st Qu.:-0.0004586796  
+ Median : 0.000877761   Median :5.815125   Median :-0.0000088674  
+ Mean   :-0.000001304   Mean   :5.819267   Mean   :-0.0000019655  
+ 3rd Qu.: 0.004997747   3rd Qu.:5.859806   3rd Qu.: 0.0004023465  
+ Max.   : 0.009114691   Max.   :5.898750   Max.   : 0.0019396260  
+ IQR:
+     STL.seasonal STL.trend STL.remainder data    
+     0.009534     0.081250  0.000861      0.079370
+   %  12.0        102.4       1.1         100.0   
+
+ Weights: all == 1
+
+ Other components: List of 5
+ $ win  : Named num [1:3] 21 21 13
+ $ deg  : Named int [1:3] 0 1 1
+ $ jump : Named num [1:3] 3 3 2
+ $ inner: int 2
+ $ outer: int 0
+> ## linear trend, strict period.
+> plot(stl(log(co2), s.window = "per", t.window = 1000))
+> 
+> ## Two STL plotted side by side :
+>         stmd <- stl(mdeaths, s.window = "per") # non-robust
+> summary(stmR <- stl(mdeaths, s.window = "per", robust = TRUE))
+ Call:
+ stl(x = mdeaths, s.window = "per", robust = TRUE)
+
+ Time.series components:
+    seasonal             trend            remainder        
+ Min.   :-446.8302   Min.   :1318.650   Min.   :-314.5835  
+ 1st Qu.:-301.5726   1st Qu.:1432.208   1st Qu.: -32.5392  
+ Median : -79.0561   Median :1448.891   Median :   5.7943  
+ Mean   :   0.0000   Mean   :1472.880   Mean   :  23.0646  
+ 3rd Qu.: 304.5673   3rd Qu.:1548.974   3rd Qu.:  47.5134  
+ Max.   : 544.7904   Max.   :1615.535   Max.   : 872.1992  
+ IQR:
+     STL.seasonal STL.trend STL.remainder data  
+     606.14       116.77     80.05        707.75
+   %  85.6         16.5      11.3         100.0 
+
+ Weights:
+   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
+ 0.0000  0.5594  0.9452  0.7312  0.9853  1.0000 
+
+ Other components: List of 5
+ $ win  : Named num [1:3] 721 19 13
+ $ deg  : Named int [1:3] 0 1 1
+ $ jump : Named num [1:3] 73 2 2
+ $ inner: int 1
+ $ outer: int 15
+> op <- par(mar = c(0, 4, 0, 3), oma = c(5, 0, 4, 0), mfcol = c(4, 2))
+> plot(stmd, set.pars = NULL, labels  =  NULL,
++      main = "stl(mdeaths, s.w = \"per\",  robust = FALSE / TRUE )")
+> plot(stmR, set.pars = NULL)
+> # mark the 'outliers' :
+> (iO <- which(stmR $ weights  < 1e-8)) # 10 were considered outliers
+ [1] 24 26 27 28 36 37 50 52 59 61
+> sts <- stmR$time.series
+> points(time(sts)[iO], 0.8* sts[,"remainder"][iO], pch = 4, col = "red")
+> par(op)   # reset
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("summary.aov")
+> ### * summary.aov
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: summary.aov
+> ### Title: Summarize an Analysis of Variance Model
+> ### Aliases: summary.aov summary.aovlist print.summary.aov
+> ###   print.summary.aovlist
+> ### Keywords: models regression
+> 
+> ### ** Examples
+> 
+> ## For a simple example see example(aov)
+> 
+> # Cochran and Cox (1957, p.164)
+> # 3x3 factorial with ordered factors, each is average of 12.
+> CC <- data.frame(
++     y = c(449, 413, 326, 409, 358, 291, 341, 278, 312)/12,
++     P = ordered(gl(3, 3)), N = ordered(gl(3, 1, 9))
++ )
+> CC.aov <- aov(y ~ N * P, data = CC , weights = rep(12, 9))
+> summary(CC.aov)
+            Df Sum Sq Mean Sq
+N            2 1016.7   508.3
+P            2  917.4   458.7
+N:P          4  399.3    99.8
+> 
+> # Split both main effects into linear and quadratic parts.
+> summary(CC.aov, split = list(N = list(L = 1, Q = 2),
++                              P = list(L = 1, Q = 2)))
+            Df Sum Sq Mean Sq
+N            2 1016.7   508.3
+  N: L       1 1012.5  1012.5
+  N: Q       1    4.2     4.2
+P            2  917.4   458.7
+  P: L       1  917.3   917.3
+  P: Q       1    0.0     0.0
+N:P          4  399.3    99.8
+  N:P: L.L   1  184.1   184.1
+  N:P: Q.L   1  152.1   152.1
+  N:P: L.Q   1   49.0    49.0
+  N:P: Q.Q   1   14.1    14.1
+> 
+> # Split only the interaction
+> summary(CC.aov, split = list("N:P" = list(L.L = 1, Q = 2:4)))
+            Df Sum Sq Mean Sq
+N            2 1016.7   508.3
+P            2  917.4   458.7
+N:P          4  399.3    99.8
+  N:P: L.L   1  184.1   184.1
+  N:P: Q     3  215.2    71.7
+> 
+> # split on just one var
+> summary(CC.aov, split = list(P = list(lin = 1, quad = 2)))
+            Df Sum Sq Mean Sq
+N            2 1016.7   508.3
+P            2  917.4   458.7
+  P: lin     1  917.3   917.3
+  P: quad    1    0.0     0.0
+N:P          4  399.3    99.8
+  N:P: lin   2  336.2   168.1
+  N:P: quad  2   63.1    31.5
+> summary(CC.aov, split = list(P = list(lin = 1, quad = 2)),
++         expand.split = FALSE)
+            Df Sum Sq Mean Sq
+N            2 1016.7   508.3
+P            2  917.4   458.7
+  P: lin     1  917.3   917.3
+  P: quad    1    0.0     0.0
+N:P          4  399.3    99.8
+> 
+> 
+> cleanEx()
+> nameEx("summary.glm")
+> ### * summary.glm
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: summary.glm
+> ### Title: Summarizing Generalized Linear Model Fits
+> ### Aliases: summary.glm print.summary.glm
+> ### Keywords: models regression
+> 
+> ### ** Examples
+> 
+> ## For examples see example(glm)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("summary.lm")
+> ### * summary.lm
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: summary.lm
+> ### Title: Summarizing Linear Model Fits
+> ### Aliases: summary.lm summary.mlm print.summary.lm
+> ### Keywords: regression models
+> 
+> ### ** Examples
+> 
+> ## Don't show: 
+> utils::example("lm", echo = FALSE)
+> ## End(Don't show)
+> ##-- Continuing the  lm(.) example:
+> coef(lm.D90)  # the bare coefficients
+groupCtl groupTrt 
+   5.032    4.661 
+> sld90 <- summary(lm.D90 <- lm(weight ~ group -1))  # omitting intercept
+> sld90
+
+Call:
+lm(formula = weight ~ group - 1)
+
+Residuals:
+    Min      1Q  Median      3Q     Max 
+-1.0710 -0.4938  0.0685  0.2462  1.3690 
+
+Coefficients:
+         Estimate Std. Error t value Pr(>|t|)    
+groupCtl   5.0320     0.2202   22.85 9.55e-15 ***
+groupTrt   4.6610     0.2202   21.16 3.62e-14 ***
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+
+Residual standard error: 0.6964 on 18 degrees of freedom
+Multiple R-squared:  0.9818,	Adjusted R-squared:  0.9798 
+F-statistic: 485.1 on 2 and 18 DF,  p-value: < 2.2e-16
+
+> coef(sld90)  # much more
+         Estimate Std. Error  t value     Pr(>|t|)
+groupCtl    5.032  0.2202177 22.85012 9.547128e-15
+groupTrt    4.661  0.2202177 21.16542 3.615345e-14
+> 
+> ## model with *aliased* coefficient:
+> lm.D9. <- lm(weight ~ group + I(group != "Ctl"))
+> Sm.D9. <- summary(lm.D9.)
+> Sm.D9. #  shows the NA NA NA NA  line
+
+Call:
+lm(formula = weight ~ group + I(group != "Ctl"))
+
+Residuals:
+    Min      1Q  Median      3Q     Max 
+-1.0710 -0.4938  0.0685  0.2462  1.3690 
+
+Coefficients: (1 not defined because of singularities)
+                      Estimate Std. Error t value Pr(>|t|)    
+(Intercept)             5.0320     0.2202  22.850 9.55e-15 ***
+groupTrt               -0.3710     0.3114  -1.191    0.249    
+I(group != "Ctl")TRUE       NA         NA      NA       NA    
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+
+Residual standard error: 0.6964 on 18 degrees of freedom
+Multiple R-squared:  0.07308,	Adjusted R-squared:  0.02158 
+F-statistic: 1.419 on 1 and 18 DF,  p-value: 0.249
+
+> stopifnot(length(cc <- coef(lm.D9.)) == 3, is.na(cc[3]),
++           dim(coef(Sm.D9.)) == c(2,4), Sm.D9.$df == c(2, 18, 3))
+> 
+> 
+> 
+> cleanEx()
+> nameEx("summary.manova")
+> ### * summary.manova
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: summary.manova
+> ### Title: Summary Method for Multivariate Analysis of Variance
+> ### Aliases: summary.manova print.summary.manova
+> ### Keywords: models
+> 
+> ### ** Examples
+> 
+> 
+> cleanEx()
+> nameEx("summary.princomp")
+> ### * summary.princomp
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: summary.princomp
+> ### Title: Summary method for Principal Components Analysis
+> ### Aliases: summary.princomp print.summary.princomp
+> ### Keywords: multivariate
+> 
+> ### ** Examples
+> 
+> summary(pc.cr <- princomp(USArrests, cor = TRUE))
+Importance of components:
+                          Comp.1    Comp.2    Comp.3     Comp.4
+Standard deviation     1.5748783 0.9948694 0.5971291 0.41644938
+Proportion of Variance 0.6200604 0.2474413 0.0891408 0.04335752
+Cumulative Proportion  0.6200604 0.8675017 0.9566425 1.00000000
+> ## The signs of the loading columns are arbitrary
+> print(summary(princomp(USArrests, cor = TRUE),
++               loadings = TRUE, cutoff = 0.2), digits = 2)
+Importance of components:
+                          Comp.1    Comp.2    Comp.3     Comp.4
+Standard deviation     1.5748783 0.9948694 0.5971291 0.41644938
+Proportion of Variance 0.6200604 0.2474413 0.0891408 0.04335752
+Cumulative Proportion  0.6200604 0.8675017 0.9566425 1.00000000
+
+Loadings:
+         Comp.1 Comp.2 Comp.3 Comp.4
+Murder    0.54   0.42   0.34   0.65 
+Assault   0.58          0.27  -0.74 
+UrbanPop  0.28  -0.87   0.38        
+Rape      0.54         -0.82        
+> 
+> 
+> 
+> cleanEx()
+> nameEx("supsmu")
+> ### * supsmu
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: supsmu
+> ### Title: Friedman's SuperSmoother
+> ### Aliases: supsmu
+> ### Keywords: smooth
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> with(cars, {
++     plot(speed, dist)
++     lines(supsmu(speed, dist))
++     lines(supsmu(speed, dist, bass = 7), lty = 2)
++     })
+> 
+> 
+> 
+> cleanEx()
+> nameEx("symnum")
+> ### * symnum
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: symnum
+> ### Title: Symbolic Number Coding
+> ### Aliases: symnum
+> ### Keywords: utilities character
+> 
+> ### ** Examples
+> 
+> ii <- setNames(0:8, 0:8)
+> symnum(ii, cutpoints =  2*(0:4), symbols = c(".", "-", "+", "$"))
+0 1 2 3 4 5 6 7 8 
+. . . - - + + $ $ 
+attr(,"legend")
+[1] 0 ‘.’ 2 ‘-’ 4 ‘+’ 6 ‘$’ 8
+> symnum(ii, cutpoints =  2*(0:4), symbols = c(".", "-", "+", "$"), show.max = TRUE)
+0 1 2 3 4 5 6 7 8 
+. . . - - + + $ 8 
+attr(,"legend")
+[1] 0 ‘.’ 2 ‘-’ 4 ‘+’ 6 ‘$’ 8
+> 
+> symnum(1:12 %% 3 == 0)  # --> "|" = TRUE, "." = FALSE  for logical
+ [1] . . | . . | . . | . . |
+> 
+> ## Pascal's Triangle modulo 2 -- odd and even numbers:
+> N <- 38
+> pascal <- t(sapply(0:N, function(n) round(choose(n, 0:N - (N-n)%/%2))))
+> rownames(pascal) <- rep("", 1+N) # <-- to improve "graphic"
+> symnum(pascal %% 2, symbols = c(" ", "A"), numeric.x = FALSE)
+                                                                              
+                                       A                                      
+                                     A A                                      
+                                     A   A                                    
+                                   A A A A                                    
+                                   A       A                                  
+                                 A A     A A                                  
+                                 A   A   A   A                                
+                               A A A A A A A A                                
+                               A               A                              
+                             A A             A A                              
+                             A   A           A   A                            
+                           A A A A         A A A A                            
+                           A       A       A       A                          
+                         A A     A A     A A     A A                          
+                         A   A   A   A   A   A   A   A                        
+                       A A A A A A A A A A A A A A A A                        
+                       A                               A                      
+                     A A                             A A                      
+                     A   A                           A   A                    
+                   A A A A                         A A A A                    
+                   A       A                       A       A                  
+                 A A     A A                     A A     A A                  
+                 A   A   A   A                   A   A   A   A                
+               A A A A A A A A                 A A A A A A A A                
+               A               A               A               A              
+             A A             A A             A A             A A              
+             A   A           A   A           A   A           A   A            
+           A A A A         A A A A         A A A A         A A A A            
+           A       A       A       A       A       A       A       A          
+         A A     A A     A A     A A     A A     A A     A A     A A          
+         A   A   A   A   A   A   A   A   A   A   A   A   A   A   A   A        
+       A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A        
+       A                                                               A      
+     A A                                                             A A      
+     A   A                                                           A   A    
+   A A A A                                                         A A A A    
+   A       A                                                       A       A  
+ A A     A A                                                     A A     A A  
+ A   A   A   A                                                   A   A   A   A
+> 
+> ##-- Symbolic correlation matrices:
+> symnum(cor(attitude), diag.lower.tri = FALSE)
+           rt cm p l rs cr a
+rating                      
+complaints +                
+privileges .  .             
+learning   ,  .  .          
+raises     .  ,  . ,        
+critical             .      
+advance          . . .      
+attr(,"legend")
+[1] 0 ‘ ’ 0.3 ‘.’ 0.6 ‘,’ 0.8 ‘+’ 0.9 ‘*’ 0.95 ‘B’ 1
+> symnum(cor(attitude), abbr.colnames = NULL)
+                        
+rating     1            
+complaints + 1          
+privileges . . 1        
+learning   , . . 1      
+raises     . , . , 1    
+critical           . 1  
+advance        . . .   1
+attr(,"legend")
+[1] 0 ‘ ’ 0.3 ‘.’ 0.6 ‘,’ 0.8 ‘+’ 0.9 ‘*’ 0.95 ‘B’ 1
+> symnum(cor(attitude), abbr.colnames = FALSE)
+           rating complaints privileges learning raises critical advance
+rating     1                                                            
+complaints +      1                                                     
+privileges .      .          1                                          
+learning   ,      .          .          1                               
+raises     .      ,          .          ,        1                      
+critical                                         .      1               
+advance                      .          .        .               1      
+attr(,"legend")
+[1] 0 ‘ ’ 0.3 ‘.’ 0.6 ‘,’ 0.8 ‘+’ 0.9 ‘*’ 0.95 ‘B’ 1
+> symnum(cor(attitude), abbr.colnames = 2)
+           rt cm pr lr rs cr ad
+rating     1                   
+complaints +  1                
+privileges .  .  1             
+learning   ,  .  .  1          
+raises     .  ,  .  ,  1       
+critical               .  1    
+advance          .  .  .     1 
+attr(,"legend")
+[1] 0 ‘ ’ 0.3 ‘.’ 0.6 ‘,’ 0.8 ‘+’ 0.9 ‘*’ 0.95 ‘B’ 1
+> 
+> symnum(cor(rbind(1, rnorm(25), rnorm(25)^2)))
+                                                       
+ [1,] 1                                                
+ [2,] + 1                                              
+ [3,] .   1                                            
+ [4,] .   B 1                                          
+ [5,] + B     1                                        
+ [6,] .   B B   1                                      
+ [7,] , * . . *   1                                    
+ [8,] . + . , + . B 1                                  
+ [9,] . + . , * . B B 1                                
+[10,] .   B B   B . . . 1                              
+[11,]     B B . * . , , B 1                            
+[12,] , B   . B   B + *   . 1                          
+[13,] 1 + . . + . , . . .   , 1                        
+[14,] , . * +   B       * +   , 1                      
+[15,]   . * B . + , + , * B .   , 1                    
+[16,] * B     B   + , ,     * * .   1                  
+[17,] * B     B   + , ,     * * .   B 1                
+[18,]   , , + , , * B * , + ,   . * . . 1              
+[19,] . + , , + . B B B , + + . . + , , B 1            
+[20,] + B     B   B + *   . B +   . B B , + 1          
+[21,]   , , + , , * B B , + +   . * . . B B , 1        
+[22,] . , , , + . B B B , + + . . + , , B B + B 1      
+[23,] B , , . , , .   . , . , B +   + +     ,     1    
+[24,] * , , . , , .     , . . * * . , ,     .     B 1  
+[25,] B + . . + . , . . .   , B ,   * *   . +   . B B 1
+attr(,"legend")
+[1] 0 ‘ ’ 0.3 ‘.’ 0.6 ‘,’ 0.8 ‘+’ 0.9 ‘*’ 0.95 ‘B’ 1
+> symnum(cor(matrix(rexp(30, 1), 5, 18))) # <<-- PATTERN ! --
+                                         
+ [1,] 1                                  
+ [2,] . 1                                
+ [3,]     1                              
+ [4,] . .   1                            
+ [5,]   , .   1                          
+ [6,]   ,     , 1                        
+ [7,] 1 .   .     1                      
+ [8,] . 1   . , , . 1                    
+ [9,]     1   .       1                  
+[10,] . .   1     . .   1                
+[11,]   , .   1 ,   , .   1              
+[12,]   ,     , 1   ,     , 1            
+[13,] 1 .   .     1 .   .     1          
+[14,] . 1   . , , . 1   . , , . 1        
+[15,]     1   .       1   .       1      
+[16,] . .   1     . .   1     . .   1    
+[17,]   , .   1 ,   , .   1 ,   , .   1  
+[18,]   ,     , 1   ,     , 1   ,     , 1
+attr(,"legend")
+[1] 0 ‘ ’ 0.3 ‘.’ 0.6 ‘,’ 0.8 ‘+’ 0.9 ‘*’ 0.95 ‘B’ 1
+> symnum(cm1 <- cor(matrix(rnorm(90) ,  5, 18))) # < White Noise SMALL n
+                                         
+ [1,] 1                                  
+ [2,] . 1                                
+ [3,] . . 1                              
+ [4,] , ,   1                            
+ [5,]   . ,   1                          
+ [6,]   . *   * 1                        
+ [7,] , .   . .   1                      
+ [8,] , .   .       1                    
+ [9,]   .   . . . . . 1                  
+[10,] , .   .     . B . 1                
+[11,] ,   + . + + ,   .   1              
+[12,]   , +   + *   .   . , 1            
+[13,] . +   +     ,   +   .   1          
+[14,]       .   .   . + ,     , 1        
+[15,]   .   .     .   . .     . + 1      
+[16,] .   , .   .   . . . .         1    
+[17,]   , +   , +       . . * .     . 1  
+[18,]   . .   * , . . .   , ,     .   . 1
+attr(,"legend")
+[1] 0 ‘ ’ 0.3 ‘.’ 0.6 ‘,’ 0.8 ‘+’ 0.9 ‘*’ 0.95 ‘B’ 1
+> symnum(cm1, diag.lower.tri = FALSE)
+                                        
+ [1,]                                   
+ [2,] .                                 
+ [3,] . .                               
+ [4,] , ,                               
+ [5,]   . ,                             
+ [6,]   . *   *                         
+ [7,] , .   . .                         
+ [8,] , .   .                           
+ [9,]   .   . . . . .                   
+[10,] , .   .     . B .                 
+[11,] ,   + . + + ,   .                 
+[12,]   , +   + *   .   . ,             
+[13,] . +   +     ,   +   .             
+[14,]       .   .   . + ,     ,         
+[15,]   .   .     .   . .     . +       
+[16,] .   , .   .   . . . .             
+[17,]   , +   , +       . . * .     .   
+[18,]   . .   * , . . .   , ,     .   . 
+attr(,"legend")
+[1] 0 ‘ ’ 0.3 ‘.’ 0.6 ‘,’ 0.8 ‘+’ 0.9 ‘*’ 0.95 ‘B’ 1
+> symnum(cm2 <- cor(matrix(rnorm(900), 50, 18))) # < White Noise "BIG" n
+                                         
+ [1,] 1                                  
+ [2,]   1                                
+ [3,]     1                              
+ [4,]       1                            
+ [5,]         1                          
+ [6,]           1                        
+ [7,]             1                      
+ [8,]               1                    
+ [9,]                 1                  
+[10,]                   1                
+[11,]                     1              
+[12,]                       1            
+[13,]               .     .   1          
+[14,]                           1        
+[15,]                             1      
+[16,]                               1    
+[17,]                                 1  
+[18,]                                   1
+attr(,"legend")
+[1] 0 ‘ ’ 0.3 ‘.’ 0.6 ‘,’ 0.8 ‘+’ 0.9 ‘*’ 0.95 ‘B’ 1
+> symnum(cm2, lower.triangular = FALSE)
+                                         
+ [1,] 1                                  
+ [2,]   1                                
+ [3,]     1                              
+ [4,]       1                            
+ [5,]         1                          
+ [6,]           1                        
+ [7,]             1                      
+ [8,]               1         .          
+ [9,]                 1                  
+[10,]                   1                
+[11,]                     1   .          
+[12,]                       1            
+[13,]               .     .   1          
+[14,]                           1        
+[15,]                             1      
+[16,]                               1    
+[17,]                                 1  
+[18,]                                   1
+attr(,"legend")
+[1] 0 ‘ ’ 0.3 ‘.’ 0.6 ‘,’ 0.8 ‘+’ 0.9 ‘*’ 0.95 ‘B’ 1
+> 
+> ## NA's:
+> Cm <- cor(matrix(rnorm(60),  10, 6)); Cm[c(3,6), 2] <- NA
+> symnum(Cm, show.max = NULL)
+               
+[1,]           
+[2,]           
+[3,] . ?       
+[4,] .   ,     
+[5,]     .     
+[6,] , ?       
+attr(,"legend")
+[1] 0 ‘ ’ 0.3 ‘.’ 0.6 ‘,’ 0.8 ‘+’ 0.9 ‘*’ 0.95 ‘B’ 1 \t    ## NA: ‘?’
+> 
+> ## Graphical P-values (aka "significance stars"):
+> pval <- rev(sort(c(outer(1:6, 10^-(1:3)))))
+> symp <- symnum(pval, corr = FALSE,
++                cutpoints = c(0,  .001,.01,.05, .1, 1),
++                symbols = c("***","**","*","."," "))
+> noquote(cbind(P.val = format(pval), Signif = symp))
+      P.val Signif
+ [1,] 0.600       
+ [2,] 0.500       
+ [3,] 0.400       
+ [4,] 0.300       
+ [5,] 0.200       
+ [6,] 0.100 .     
+ [7,] 0.060 .     
+ [8,] 0.050 *     
+ [9,] 0.040 *     
+[10,] 0.030 *     
+[11,] 0.020 *     
+[12,] 0.010 **    
+[13,] 0.006 **    
+[14,] 0.005 **    
+[15,] 0.004 **    
+[16,] 0.003 **    
+[17,] 0.002 **    
+[18,] 0.001 ***   
+> 
+> 
+> 
+> cleanEx()
+> nameEx("t.test")
+> ### * t.test
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: t.test
+> ### Title: Student's t-Test
+> ### Aliases: t.test t.test.default t.test.formula
+> ### Keywords: htest
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> t.test(1:10, y = c(7:20))      # P = .00001855
+
+	Welch Two Sample t-test
+
+data:  1:10 and c(7:20)
+t = -5.4349, df = 21.982, p-value = 1.855e-05
+alternative hypothesis: true difference in means is not equal to 0
+95 percent confidence interval:
+ -11.052802  -4.947198
+sample estimates:
+mean of x mean of y 
+      5.5      13.5 
+
+> t.test(1:10, y = c(7:20, 200)) # P = .1245    -- NOT significant anymore
+
+	Welch Two Sample t-test
+
+data:  1:10 and c(7:20, 200)
+t = -1.6329, df = 14.165, p-value = 0.1245
+alternative hypothesis: true difference in means is not equal to 0
+95 percent confidence interval:
+ -47.242900   6.376233
+sample estimates:
+mean of x mean of y 
+  5.50000  25.93333 
+
+> 
+> ## Classical example: Student's sleep data
+> plot(extra ~ group, data = sleep)
+> ## Traditional interface
+> with(sleep, t.test(extra[group == 1], extra[group == 2]))
+
+	Welch Two Sample t-test
+
+data:  extra[group == 1] and extra[group == 2]
+t = -1.8608, df = 17.776, p-value = 0.07939
+alternative hypothesis: true difference in means is not equal to 0
+95 percent confidence interval:
+ -3.3654832  0.2054832
+sample estimates:
+mean of x mean of y 
+     0.75      2.33 
+
+> 
+> ## Formula interface
+> t.test(extra ~ group, data = sleep)
+
+	Welch Two Sample t-test
+
+data:  extra by group
+t = -1.8608, df = 17.776, p-value = 0.07939
+alternative hypothesis: true difference in means between group 1 and group 2 is not equal to 0
+95 percent confidence interval:
+ -3.3654832  0.2054832
+sample estimates:
+mean in group 1 mean in group 2 
+           0.75            2.33 
+
+> 
+> ## Formula interface to one-sample test
+> t.test(extra ~ 1, data = sleep)
+
+	One Sample t-test
+
+data:  extra
+t = 3.413, df = 19, p-value = 0.002918
+alternative hypothesis: true mean is not equal to 0
+95 percent confidence interval:
+ 0.5955845 2.4844155
+sample estimates:
+mean of x 
+     1.54 
+
+> 
+> ## Formula interface to paired test
+> ## The sleep data are actually paired, so could have been in wide format:
+> sleep2 <- reshape(sleep, direction = "wide", 
++                   idvar = "ID", timevar = "group")
+> t.test(Pair(extra.1, extra.2) ~ 1, data = sleep2)
+
+	Paired t-test
+
+data:  Pair(extra.1, extra.2)
+t = -4.0621, df = 9, p-value = 0.002833
+alternative hypothesis: true mean difference is not equal to 0
+95 percent confidence interval:
+ -2.4598858 -0.7001142
+sample estimates:
+mean difference 
+          -1.58 
+
+> 
+> 
+> 
+> cleanEx()
+> nameEx("termplot")
+> ### * termplot
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: termplot
+> ### Title: Plot Regression Terms
+> ### Aliases: termplot
+> ### Keywords: hplot regression
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> had.splines <- "package:splines" %in% search()
+> if(!had.splines) rs <- require(splines)
+Loading required package: splines
+> x <- 1:100
+> z <- factor(rep(LETTERS[1:4], 25))
+> y <- rnorm(100, sin(x/10)+as.numeric(z))
+> model <- glm(y ~ ns(x, 6) + z)
+> 
+> par(mfrow = c(2,2)) ## 2 x 2 plots for same model :
+> termplot(model, main = paste("termplot( ", deparse(model$call)," ...)"))
+> termplot(model, rug = TRUE)
+> termplot(model, partial.resid = TRUE, se = TRUE, main = TRUE)
+> termplot(model, partial.resid = TRUE, smooth = panel.smooth, span.smth = 1/4)
+> if(!had.splines && rs) detach("package:splines")
+> 
+> if(requireNamespace("MASS", quietly = TRUE)) {
++ hills.lm <- lm(log(time) ~ log(climb)+log(dist), data = MASS::hills)
++ termplot(hills.lm, partial.resid = TRUE, smooth = panel.smooth,
++         terms = "log(dist)", main = "Original")
++ termplot(hills.lm, transform.x = TRUE,
++          partial.resid = TRUE, smooth = panel.smooth,
++ 	 terms = "log(dist)", main = "Transformed")
++ 
++ }
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("terms.object")
+> ### * terms.object
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: terms.object
+> ### Title: Description of Terms Objects
+> ### Aliases: terms.object
+> ### Keywords: models
+> 
+> ### ** Examples
+> 
+> ## use of specials (as used for gam() in packages mgcv and gam)
+> (tf <- terms(y ~ x + x:z + s(x), specials = "s"))
+y ~ x + x:z + s(x)
+attr(,"variables")
+list(y, x, z, s(x))
+attr(,"factors")
+     x s(x) x:z
+y    0    0   0
+x    1    0   2
+z    0    0   1
+s(x) 0    1   0
+attr(,"term.labels")
+[1] "x"    "s(x)" "x:z" 
+attr(,"specials")
+attr(,"specials")$s
+[1] 4
+
+attr(,"order")
+[1] 1 1 2
+attr(,"intercept")
+[1] 1
+attr(,"response")
+[1] 1
+attr(,".Environment")
+<environment: R_GlobalEnv>
+> ## Note that the "factors" attribute has variables as row names
+> ## and term labels as column names, both as character vectors.
+> attr(tf, "specials")    # index 's' variable(s)
+$s
+[1] 4
+
+> rownames(attr(tf, "factors"))[attr(tf, "specials")$s]
+[1] "s(x)"
+> 
+> ## we can keep the order by
+> terms(y ~ x + x:z + s(x), specials = "s", keep.order = TRUE)
+y ~ x + x:z + s(x)
+attr(,"variables")
+list(y, x, z, s(x))
+attr(,"factors")
+     x x:z s(x)
+y    0   0    0
+x    1   2    0
+z    0   1    0
+s(x) 0   0    1
+attr(,"term.labels")
+[1] "x"    "x:z"  "s(x)"
+attr(,"specials")
+attr(,"specials")$s
+[1] 4
+
+attr(,"order")
+[1] 1 2 1
+attr(,"intercept")
+[1] 1
+attr(,"response")
+[1] 1
+attr(,".Environment")
+<environment: R_GlobalEnv>
+> 
+> 
+> 
+> cleanEx()
+> nameEx("time")
+> ### * time
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: time
+> ### Title: Sampling Times of Time Series
+> ### Aliases: time cycle frequency deltat time.default
+> ### Keywords: ts
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> cycle(presidents)
+     Qtr1 Qtr2 Qtr3 Qtr4
+1945    1    2    3    4
+1946    1    2    3    4
+1947    1    2    3    4
+1948    1    2    3    4
+1949    1    2    3    4
+1950    1    2    3    4
+1951    1    2    3    4
+1952    1    2    3    4
+1953    1    2    3    4
+1954    1    2    3    4
+1955    1    2    3    4
+1956    1    2    3    4
+1957    1    2    3    4
+1958    1    2    3    4
+1959    1    2    3    4
+1960    1    2    3    4
+1961    1    2    3    4
+1962    1    2    3    4
+1963    1    2    3    4
+1964    1    2    3    4
+1965    1    2    3    4
+1966    1    2    3    4
+1967    1    2    3    4
+1968    1    2    3    4
+1969    1    2    3    4
+1970    1    2    3    4
+1971    1    2    3    4
+1972    1    2    3    4
+1973    1    2    3    4
+1974    1    2    3    4
+> # a simple series plot
+> plot(as.vector(time(presidents)), as.vector(presidents), type = "l")
+> 
+> 
+> 
+> cleanEx()
+> nameEx("toeplitz")
+> ### * toeplitz
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: toeplitz
+> ### Title: Form Symmetric Toeplitz Matrix
+> ### Aliases: toeplitz
+> ### Keywords: ts
+> 
+> ### ** Examples
+> 
+> x <- 1:5
+> toeplitz (x)
+     [,1] [,2] [,3] [,4] [,5]
+[1,]    1    2    3    4    5
+[2,]    2    1    2    3    4
+[3,]    3    2    1    2    3
+[4,]    4    3    2    1    2
+[5,]    5    4    3    2    1
+> 
+> 
+> 
+> cleanEx()
+> nameEx("ts")
+> ### * ts
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: ts
+> ### Title: Time-Series Objects
+> ### Aliases: ts as.ts as.ts.default is.ts Ops.ts cbind.ts is.mts [.ts t.ts
+> ### Keywords: ts
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> ts(1:10, frequency = 4, start = c(1959, 2)) # 2nd Quarter of 1959
+     Qtr1 Qtr2 Qtr3 Qtr4
+1959         1    2    3
+1960    4    5    6    7
+1961    8    9   10     
+> print( ts(1:10, frequency = 7, start = c(12, 2)), calendar = TRUE)
+   p1 p2 p3 p4 p5 p6 p7
+12     1  2  3  4  5  6
+13  7  8  9 10         
+> # print.ts(.)
+> ## Using July 1954 as start date:
+> gnp <- ts(cumsum(1 + round(rnorm(100), 2)),
++           start = c(1954, 7), frequency = 12)
+> plot(gnp) # using 'plot.ts' for time-series plot
+> 
+> ## Multivariate
+> z <- ts(matrix(rnorm(300), 100, 3), start = c(1961, 1), frequency = 12)
+> class(z)
+[1] "mts"    "ts"     "matrix"
+> head(z) # as "matrix"
+        Series 1   Series 2   Series 3
+[1,] -0.62036668  0.4094018  0.8936737
+[2,]  0.04211587  1.6888733 -1.0472981
+[3,] -0.91092165  1.5865884  1.9713374
+[4,]  0.15802877 -0.3309078 -0.3836321
+[5,] -0.65458464 -2.2852355  1.6541453
+[6,]  1.76728727  2.4976616  1.5122127
+> plot(z)
+> plot(z, plot.type = "single", lty = 1:3)
+> 
+> ## A phase plot:
+> plot(nhtemp, lag(nhtemp, 1), cex = .8, col = "blue",
++      main = "Lag plot of New Haven temperatures")
+> 
+> 
+> 
+> cleanEx()
+> nameEx("ts.plot")
+> ### * ts.plot
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: ts.plot
+> ### Title: Plot Multiple Time Series
+> ### Aliases: ts.plot
+> ### Keywords: ts
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> ts.plot(ldeaths, mdeaths, fdeaths,
++         gpars=list(xlab="year", ylab="deaths", lty=c(1:3)))
+> 
+> 
+> 
+> cleanEx()
+> nameEx("ts.union")
+> ### * ts.union
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: ts.union
+> ### Title: Bind Two or More Time Series
+> ### Aliases: ts.union ts.intersect
+> ### Keywords: ts
+> 
+> ### ** Examples
+> 
+> ts.union(mdeaths, fdeaths)
+         mdeaths fdeaths
+Jan 1974    2134     901
+Feb 1974    1863     689
+Mar 1974    1877     827
+Apr 1974    1877     677
+May 1974    1492     522
+Jun 1974    1249     406
+Jul 1974    1280     441
+Aug 1974    1131     393
+Sep 1974    1209     387
+Oct 1974    1492     582
+Nov 1974    1621     578
+Dec 1974    1846     666
+Jan 1975    2103     830
+Feb 1975    2137     752
+Mar 1975    2153     785
+Apr 1975    1833     664
+May 1975    1403     467
+Jun 1975    1288     438
+Jul 1975    1186     421
+Aug 1975    1133     412
+Sep 1975    1053     343
+Oct 1975    1347     440
+Nov 1975    1545     531
+Dec 1975    2066     771
+Jan 1976    2020     767
+Feb 1976    2750    1141
+Mar 1976    2283     896
+Apr 1976    1479     532
+May 1976    1189     447
+Jun 1976    1160     420
+Jul 1976    1113     376
+Aug 1976     970     330
+Sep 1976     999     357
+Oct 1976    1208     445
+Nov 1976    1467     546
+Dec 1976    2059     764
+Jan 1977    2240     862
+Feb 1977    1634     660
+Mar 1977    1722     663
+Apr 1977    1801     643
+May 1977    1246     502
+Jun 1977    1162     392
+Jul 1977    1087     411
+Aug 1977    1013     348
+Sep 1977     959     387
+Oct 1977    1179     385
+Nov 1977    1229     411
+Dec 1977    1655     638
+Jan 1978    2019     796
+Feb 1978    2284     853
+Mar 1978    1942     737
+Apr 1978    1423     546
+May 1978    1340     530
+Jun 1978    1187     446
+Jul 1978    1098     431
+Aug 1978    1004     362
+Sep 1978     970     387
+Oct 1978    1140     430
+Nov 1978    1110     425
+Dec 1978    1812     679
+Jan 1979    2263     821
+Feb 1979    1820     785
+Mar 1979    1846     727
+Apr 1979    1531     612
+May 1979    1215     478
+Jun 1979    1075     429
+Jul 1979    1056     405
+Aug 1979     975     379
+Sep 1979     940     393
+Oct 1979    1081     411
+Nov 1979    1294     487
+Dec 1979    1341     574
+> cbind(mdeaths, fdeaths) # same as the previous line
+         mdeaths fdeaths
+Jan 1974    2134     901
+Feb 1974    1863     689
+Mar 1974    1877     827
+Apr 1974    1877     677
+May 1974    1492     522
+Jun 1974    1249     406
+Jul 1974    1280     441
+Aug 1974    1131     393
+Sep 1974    1209     387
+Oct 1974    1492     582
+Nov 1974    1621     578
+Dec 1974    1846     666
+Jan 1975    2103     830
+Feb 1975    2137     752
+Mar 1975    2153     785
+Apr 1975    1833     664
+May 1975    1403     467
+Jun 1975    1288     438
+Jul 1975    1186     421
+Aug 1975    1133     412
+Sep 1975    1053     343
+Oct 1975    1347     440
+Nov 1975    1545     531
+Dec 1975    2066     771
+Jan 1976    2020     767
+Feb 1976    2750    1141
+Mar 1976    2283     896
+Apr 1976    1479     532
+May 1976    1189     447
+Jun 1976    1160     420
+Jul 1976    1113     376
+Aug 1976     970     330
+Sep 1976     999     357
+Oct 1976    1208     445
+Nov 1976    1467     546
+Dec 1976    2059     764
+Jan 1977    2240     862
+Feb 1977    1634     660
+Mar 1977    1722     663
+Apr 1977    1801     643
+May 1977    1246     502
+Jun 1977    1162     392
+Jul 1977    1087     411
+Aug 1977    1013     348
+Sep 1977     959     387
+Oct 1977    1179     385
+Nov 1977    1229     411
+Dec 1977    1655     638
+Jan 1978    2019     796
+Feb 1978    2284     853
+Mar 1978    1942     737
+Apr 1978    1423     546
+May 1978    1340     530
+Jun 1978    1187     446
+Jul 1978    1098     431
+Aug 1978    1004     362
+Sep 1978     970     387
+Oct 1978    1140     430
+Nov 1978    1110     425
+Dec 1978    1812     679
+Jan 1979    2263     821
+Feb 1979    1820     785
+Mar 1979    1846     727
+Apr 1979    1531     612
+May 1979    1215     478
+Jun 1979    1075     429
+Jul 1979    1056     405
+Aug 1979     975     379
+Sep 1979     940     393
+Oct 1979    1081     411
+Nov 1979    1294     487
+Dec 1979    1341     574
+> ts.intersect(window(mdeaths, 1976), window(fdeaths, 1974, 1978))
+         window(mdeaths, 1976) window(fdeaths, 1974, 1978)
+Jan 1976                  2020                         767
+Feb 1976                  2750                        1141
+Mar 1976                  2283                         896
+Apr 1976                  1479                         532
+May 1976                  1189                         447
+Jun 1976                  1160                         420
+Jul 1976                  1113                         376
+Aug 1976                   970                         330
+Sep 1976                   999                         357
+Oct 1976                  1208                         445
+Nov 1976                  1467                         546
+Dec 1976                  2059                         764
+Jan 1977                  2240                         862
+Feb 1977                  1634                         660
+Mar 1977                  1722                         663
+Apr 1977                  1801                         643
+May 1977                  1246                         502
+Jun 1977                  1162                         392
+Jul 1977                  1087                         411
+Aug 1977                  1013                         348
+Sep 1977                   959                         387
+Oct 1977                  1179                         385
+Nov 1977                  1229                         411
+Dec 1977                  1655                         638
+Jan 1978                  2019                         796
+> 
+> sales1 <- ts.union(BJsales, lead = BJsales.lead)
+> ts.intersect(sales1, lead3 = lag(BJsales.lead, -3))
+Time Series:
+Start = 4 
+End = 150 
+Frequency = 1 
+    sales1.BJsales sales1.lead lead3
+  4          198.9        9.75 10.01
+  5          199.0       10.33 10.07
+  6          200.2       10.13 10.32
+  7          198.6       10.36  9.75
+  8          200.0       10.32 10.33
+  9          200.3       10.13 10.13
+ 10          201.2       10.16 10.36
+ 11          201.6       10.58 10.32
+ 12          201.5       10.62 10.13
+ 13          201.5       10.86 10.16
+ 14          203.5       11.20 10.58
+ 15          204.9       10.74 10.62
+ 16          207.1       10.56 10.86
+ 17          210.5       10.48 11.20
+ 18          210.5       10.77 10.74
+ 19          209.8       11.33 10.56
+ 20          208.8       10.96 10.48
+ 21          209.5       11.16 10.77
+ 22          213.2       11.70 11.33
+ 23          213.7       11.39 10.96
+ 24          215.1       11.42 11.16
+ 25          218.7       11.94 11.70
+ 26          219.8       11.24 11.39
+ 27          220.5       11.59 11.42
+ 28          223.8       10.96 11.94
+ 29          222.8       11.40 11.24
+ 30          223.8       11.02 11.59
+ 31          221.7       11.01 10.96
+ 32          222.3       11.23 11.40
+ 33          220.8       11.33 11.02
+ 34          219.4       10.83 11.01
+ 35          220.1       10.84 11.23
+ 36          220.6       11.14 11.33
+ 37          218.9       10.38 10.83
+ 38          217.8       10.90 10.84
+ 39          217.7       11.05 11.14
+ 40          215.0       11.11 10.38
+ 41          215.3       11.01 10.90
+ 42          215.9       11.22 11.05
+ 43          216.7       11.21 11.11
+ 44          216.7       11.91 11.01
+ 45          217.7       11.69 11.22
+ 46          218.7       10.93 11.21
+ 47          222.9       10.99 11.91
+ 48          224.9       11.01 11.69
+ 49          222.2       10.84 10.93
+ 50          220.7       10.76 10.99
+ 51          220.0       10.77 11.01
+ 52          218.7       10.88 10.84
+ 53          217.0       10.49 10.76
+ 54          215.9       10.50 10.77
+ 55          215.8       11.00 10.88
+ 56          214.1       10.98 10.49
+ 57          212.3       10.61 10.50
+ 58          213.9       10.48 11.00
+ 59          214.6       10.53 10.98
+ 60          213.6       11.07 10.61
+ 61          212.1       10.61 10.48
+ 62          211.4       10.86 10.53
+ 63          213.1       10.34 11.07
+ 64          212.9       10.78 10.61
+ 65          213.3       10.80 10.86
+ 66          211.5       10.33 10.34
+ 67          212.3       10.44 10.78
+ 68          213.0       10.50 10.80
+ 69          211.0       10.75 10.33
+ 70          210.7       10.40 10.44
+ 71          210.1       10.40 10.50
+ 72          211.4       10.34 10.75
+ 73          210.0       10.55 10.40
+ 74          209.7       10.46 10.40
+ 75          208.8       10.82 10.34
+ 76          208.8       10.91 10.55
+ 77          208.8       10.87 10.46
+ 78          210.6       10.67 10.82
+ 79          211.9       11.11 10.91
+ 80          212.8       10.88 10.87
+ 81          212.5       11.28 10.67
+ 82          214.8       11.27 11.11
+ 83          215.3       11.44 10.88
+ 84          217.5       11.52 11.28
+ 85          218.8       12.10 11.27
+ 86          220.7       11.83 11.44
+ 87          222.2       12.62 11.52
+ 88          226.7       12.41 12.10
+ 89          228.4       12.43 11.83
+ 90          233.2       12.73 12.62
+ 91          235.7       13.01 12.41
+ 92          237.1       12.74 12.43
+ 93          240.6       12.73 12.73
+ 94          243.8       12.76 13.01
+ 95          245.3       12.92 12.74
+ 96          246.0       12.64 12.73
+ 97          246.3       12.79 12.76
+ 98          247.7       13.05 12.92
+ 99          247.6       12.69 12.64
+100          247.8       13.01 12.79
+101          249.4       12.90 13.05
+102          249.0       13.12 12.69
+103          249.9       12.47 13.01
+104          250.5       12.47 12.90
+105          251.5       12.94 13.12
+106          249.0       13.10 12.47
+107          247.6       12.91 12.47
+108          248.8       13.39 12.94
+109          250.4       13.13 13.10
+110          250.7       13.34 12.91
+111          253.0       13.34 13.39
+112          253.7       13.14 13.13
+113          255.0       13.49 13.34
+114          256.2       13.87 13.34
+115          256.0       13.39 13.14
+116          257.4       13.59 13.49
+117          260.4       13.27 13.87
+118          260.0       13.70 13.39
+119          261.3       13.20 13.59
+120          260.4       13.32 13.27
+121          261.6       13.15 13.70
+122          260.8       13.30 13.20
+123          259.8       12.94 13.32
+124          259.0       13.29 13.15
+125          258.9       13.26 13.30
+126          257.4       13.08 12.94
+127          257.7       13.24 13.29
+128          257.9       13.31 13.26
+129          257.4       13.52 13.08
+130          257.3       13.02 13.24
+131          257.6       13.25 13.31
+132          258.9       13.12 13.52
+133          257.8       13.26 13.02
+134          257.7       13.11 13.25
+135          257.2       13.30 13.12
+136          257.5       13.06 13.26
+137          256.8       13.32 13.11
+138          257.5       13.10 13.30
+139          257.0       13.27 13.06
+140          257.6       13.64 13.32
+141          257.3       13.58 13.10
+142          257.5       13.87 13.27
+143          259.6       13.53 13.64
+144          261.1       13.41 13.58
+145          262.9       13.25 13.87
+146          263.3       13.50 13.53
+147          262.8       13.58 13.41
+148          261.8       13.51 13.25
+149          262.2       13.77 13.50
+150          262.7       13.40 13.58
+> 
+> 
+> 
+> cleanEx()
+> nameEx("tsdiag")
+> ### * tsdiag
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: tsdiag
+> ### Title: Diagnostic Plots for Time-Series Fits
+> ### Aliases: tsdiag tsdiag.arima0 tsdiag.Arima tsdiag.StructTS
+> ### Keywords: ts
+> 
+> ### ** Examples
+> 
+> 
+> 
+> cleanEx()
+> nameEx("uniroot")
+> ### * uniroot
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: uniroot
+> ### Title: One Dimensional Root (Zero) Finding
+> ### Aliases: uniroot
+> ### Keywords: optimize
+> 
+> ### ** Examples
+> 
+> ##--- uniroot() with new interval extension + checking features: --------------
+> 
+> f1 <- function(x) (121 - x^2)/(x^2+1)
+> f2 <- function(x) exp(-x)*(x - 12)
+> 
+> try(uniroot(f1, c(0,10)))
+Error in uniroot(f1, c(0, 10)) : 
+  f() values at end points not of opposite sign
+> try(uniroot(f2, c(0, 2)))
+Error in uniroot(f2, c(0, 2)) : 
+  f() values at end points not of opposite sign
+> ##--> error: f() .. end points not of opposite sign
+> 
+> ## where as  'extendInt="yes"'  simply first enlarges the search interval:
+> u1 <- uniroot(f1, c(0,10),extendInt="yes", trace=1)
+search in [0,10] ... extended to [-1.5e-05, 11.5] in 4 steps
+> u2 <- uniroot(f2, c(0,2), extendInt="yes", trace=2)
+search in [0,2]
+ .. modified lower,upper: (         -1e-06,           2.02)
+ .. modified lower,upper: (         -3e-06,           2.06)
+ .. modified lower,upper: (         -7e-06,           2.14)
+ .. modified lower,upper: (       -1.5e-05,            2.3)
+ .. modified lower,upper: (       -3.1e-05,           2.62)
+ .. modified lower,upper: (       -6.3e-05,           3.26)
+ .. modified lower,upper: (      -0.000127,           4.54)
+ .. modified lower,upper: (      -0.000255,            7.1)
+ .. modified lower,upper: (      -0.000511,          12.22)
+> stopifnot(all.equal(u1$root, 11, tolerance = 1e-5),
++           all.equal(u2$root, 12, tolerance = 6e-6))
+> 
+> ## The *danger* of interval extension:
+> ## No way to find a zero of a positive function, but
+> ## numerically, f(-|M|) becomes zero :
+> u3 <- uniroot(exp, c(0,2), extendInt="yes", trace=TRUE)
+search in [0,2] ... extended to [-1073.74, 2.14748e+07] in 30 steps
+> 
+> ## Nonsense example (must give an error):
+> tools::assertCondition( uniroot(function(x) 1, 0:1, extendInt="yes"),
++                        "error", verbose=TRUE)
+assertCondition: caught “error”
+> 
+> ## Convergence checking :
+> sinc <- function(x) ifelse(x == 0, 1, sin(x)/x)
+> curve(sinc, -6,18); abline(h=0,v=0, lty=3, col=adjustcolor("gray", 0.8))
+> ## Don't show: 
+> tools::assertWarning(
++ ## End(Don't show)
++ uniroot(sinc, c(0,5), extendInt="yes", maxiter=4) #-> "just" a warning
++ ## Don't show: 
++  , verbose=TRUE)
+Asserted warning: _NOT_ converged in 4 iterations
+> ## End(Don't show)
+> 
+> ## now with  check.conv=TRUE, must signal a convergence error :
+> ## Don't show: 
+> tools::assertError(
++ ## End(Don't show)
++ uniroot(sinc, c(0,5), extendInt="yes", maxiter=4, check.conv=TRUE)
++ ## Don't show: 
++  , verbose=TRUE)
+Asserted error: _NOT_ converged in 4 iterations
+> ## End(Don't show)
+> 
+> ### Weibull cumulative hazard (example origin, Ravi Varadhan):
+> cumhaz <- function(t, a, b) b * (t/b)^a
+> froot <- function(x, u, a, b) cumhaz(x, a, b) - u
+> 
+> n <- 1000
+> u <- -log(runif(n))
+> a <- 1/2
+> b <- 1
+> ## Find failure times
+> ru <- sapply(u, function(x)
++    uniroot(froot, u=x, a=a, b=b, interval= c(1.e-14, 1e04),
++            extendInt="yes")$root)
+> ru2 <- sapply(u, function(x)
++    uniroot(froot, u=x, a=a, b=b, interval= c(0.01,  10),
++            extendInt="yes")$root)
+> stopifnot(all.equal(ru, ru2, tolerance = 6e-6))
+> 
+> r1 <- uniroot(froot, u= 0.99, a=a, b=b, interval= c(0.01, 10),
++              extendInt="up")
+> stopifnot(all.equal(0.99, cumhaz(r1$root, a=a, b=b)))
+> 
+> ## An error if 'extendInt' assumes "wrong zero-crossing direction":
+> ## Don't show: 
+> tools::assertError(
++ ## End(Don't show)
++ uniroot(froot, u= 0.99, a=a, b=b, interval= c(0.1, 10), extendInt="down")
++ ## Don't show: 
++  , verbose=TRUE)
+Asserted error: no sign change found in 1000 iterations
+> ## End(Don't show)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("update")
+> ### * update
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: update
+> ### Title: Update and Re-fit a Model Call
+> ### Aliases: update update.default getCall getCall.default
+> ### Keywords: models
+> 
+> ### ** Examples
+> 
+> oldcon <- options(contrasts = c("contr.treatment", "contr.poly"))
+> ## Annette Dobson (1990) "An Introduction to Generalized Linear Models".
+> ## Page 9: Plant Weight Data.
+> ctl <- c(4.17,5.58,5.18,6.11,4.50,4.61,5.17,4.53,5.33,5.14)
+> trt <- c(4.81,4.17,4.41,3.59,5.87,3.83,6.03,4.89,4.32,4.69)
+> group <- gl(2, 10, 20, labels = c("Ctl", "Trt"))
+> weight <- c(ctl, trt)
+> lm.D9 <- lm(weight ~ group)
+> lm.D9
+
+Call:
+lm(formula = weight ~ group)
+
+Coefficients:
+(Intercept)     groupTrt  
+      5.032       -0.371  
+
+> summary(lm.D90 <- update(lm.D9, . ~ . - 1))
+
+Call:
+lm(formula = weight ~ group - 1)
+
+Residuals:
+    Min      1Q  Median      3Q     Max 
+-1.0710 -0.4938  0.0685  0.2462  1.3690 
+
+Coefficients:
+         Estimate Std. Error t value Pr(>|t|)    
+groupCtl   5.0320     0.2202   22.85 9.55e-15 ***
+groupTrt   4.6610     0.2202   21.16 3.62e-14 ***
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+
+Residual standard error: 0.6964 on 18 degrees of freedom
+Multiple R-squared:  0.9818,	Adjusted R-squared:  0.9798 
+F-statistic: 485.1 on 2 and 18 DF,  p-value: < 2.2e-16
+
+> options(contrasts = c("contr.helmert", "contr.poly"))
+> update(lm.D9)
+
+Call:
+lm(formula = weight ~ group)
+
+Coefficients:
+(Intercept)       group1  
+     4.8465      -0.1855  
+
+> getCall(lm.D90)  # "through the origin"
+lm(formula = weight ~ group - 1)
+> 
+> options(oldcon)
+> 
+> 
+> 
+> base::options(contrasts = c(unordered = "contr.treatment",ordered = "contr.poly"))
+> cleanEx()
+> nameEx("update.formula")
+> ### * update.formula
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: update.formula
+> ### Title: Model Updating
+> ### Aliases: update.formula
+> ### Keywords: models
+> 
+> ### ** Examples
+> 
+> update(y ~ x,    ~ . + x2) #> y ~ x + x2
+y ~ x + x2
+> update(y ~ x, log(.) ~ . ) #> log(y) ~ x
+log(y) ~ x
+> update(. ~ u+v, res  ~ . ) #> res ~ u + v
+res ~ u + v
+> 
+> 
+> 
+> cleanEx()
+> nameEx("var.test")
+> ### * var.test
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: var.test
+> ### Title: F Test to Compare Two Variances
+> ### Aliases: var.test var.test.default var.test.formula
+> ### Keywords: htest
+> 
+> ### ** Examples
+> 
+> x <- rnorm(50, mean = 0, sd = 2)
+> y <- rnorm(30, mean = 1, sd = 1)
+> var.test(x, y)                  # Do x and y have the same variance?
+
+	F test to compare two variances
+
+data:  x and y
+F = 2.6522, num df = 49, denom df = 29, p-value = 0.006232
+alternative hypothesis: true ratio of variances is not equal to 1
+95 percent confidence interval:
+ 1.332510 4.989832
+sample estimates:
+ratio of variances 
+          2.652168 
+
+> var.test(lm(x ~ 1), lm(y ~ 1))  # The same.
+
+	F test to compare two variances
+
+data:  lm(x ~ 1) and lm(y ~ 1)
+F = 2.6522, num df = 49, denom df = 29, p-value = 0.006232
+alternative hypothesis: true ratio of variances is not equal to 1
+95 percent confidence interval:
+ 1.332510 4.989832
+sample estimates:
+ratio of variances 
+          2.652168 
+
+> 
+> 
+> 
+> cleanEx()
+> nameEx("varimax")
+> ### * varimax
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: varimax
+> ### Title: Rotation Methods for Factor Analysis
+> ### Aliases: promax varimax
+> ### Keywords: multivariate
+> 
+> ### ** Examples
+> 
+> ## varimax with normalize = TRUE is the default
+> fa <- factanal( ~., 2, data = swiss)
+> varimax(loadings(fa), normalize = FALSE)
+$loadings
+
+Loadings:
+                 Factor1 Factor2
+Fertility        -0.650   0.398 
+Agriculture      -0.628   0.337 
+Examination       0.681  -0.515 
+Education         0.997         
+Catholic         -0.117   0.962 
+Infant.Mortality          0.176 
+
+               Factor1 Factor2
+SS loadings      2.297   1.496
+Proportion Var   0.383   0.249
+Cumulative Var   0.383   0.632
+
+$rotmat
+            [,1]         [,2]
+[1,] 0.999973881 -0.007227595
+[2,] 0.007227595  0.999973881
+
+> promax(loadings(fa))
+$loadings
+
+Loadings:
+                 Factor1 Factor2
+Fertility        -0.595   0.227 
+Agriculture      -0.599   0.160 
+Examination       0.577  -0.360 
+Education         1.192   0.363 
+Catholic          0.326   1.147 
+Infant.Mortality          0.180 
+
+               Factor1 Factor2
+SS loadings      2.574   1.686
+Proportion Var   0.429   0.281
+Cumulative Var   0.429   0.710
+
+$rotmat
+          [,1]      [,2]
+[1,] 1.2114045 0.4029296
+[2,] 0.4956199 1.2453063
+
+> 
+> 
+> 
+> cleanEx()
+> nameEx("weighted.mean")
+> ### * weighted.mean
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: weighted.mean
+> ### Title: Weighted Arithmetic Mean
+> ### Aliases: weighted.mean weighted.mean.default
+> ### Keywords: univar
+> 
+> ### ** Examples
+> 
+> ## GPA from Siegel 1994
+> wt <- c(5,  5,  4,  1)/15
+> x <- c(3.7,3.3,3.5,2.8)
+> xm <- weighted.mean(x, wt)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("weighted.residuals")
+> ### * weighted.residuals
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: weighted.residuals
+> ### Title: Compute Weighted Residuals
+> ### Aliases: weighted.residuals
+> ### Keywords: regression
+> 
+> ### ** Examples
+> 
+> ## following on from example(lm)
+> ## Don't show: 
+> utils::example("lm", echo = FALSE)
+> ## End(Don't show)
+> all.equal(weighted.residuals(lm.D9),
++           residuals(lm.D9))
+[1] TRUE
+> x <- 1:10
+> w <- 0:9
+> y <- rnorm(x)
+> weighted.residuals(lmxy <- lm(y ~ x, weights = w))
+          2           3           4           5           6           7 
+-0.15744267 -1.63534445  2.24282864  0.09895229 -2.41528559  0.60771924 
+          8           9          10 
+ 1.37406419  1.06675699 -1.45098819 
+> weighted.residuals(lmxy, drop0 = FALSE)
+          1           2           3           4           5           6 
+ 0.00000000 -0.15744267 -1.63534445  2.24282864  0.09895229 -2.41528559 
+          7           8           9          10 
+ 0.60771924  1.37406419  1.06675699 -1.45098819 
+> 
+> 
+> 
+> cleanEx()
+> nameEx("wilcox.test")
+> ### * wilcox.test
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: wilcox.test
+> ### Title: Wilcoxon Rank Sum and Signed Rank Tests
+> ### Aliases: wilcox.test wilcox.test.default wilcox.test.formula
+> ### Keywords: htest
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> ## One-sample test.
+> ## Hollander & Wolfe (1973), 29f.
+> ## Hamilton depression scale factor measurements in 9 patients with
+> ##  mixed anxiety and depression, taken at the first (x) and second
+> ##  (y) visit after initiation of a therapy (administration of a
+> ##  tranquilizer).
+> x <- c(1.83,  0.50,  1.62,  2.48, 1.68, 1.88, 1.55, 3.06, 1.30)
+> y <- c(0.878, 0.647, 0.598, 2.05, 1.06, 1.29, 1.06, 3.14, 1.29)
+> wilcox.test(x, y, paired = TRUE, alternative = "greater")
+
+	Wilcoxon signed rank exact test
+
+data:  x and y
+V = 40, p-value = 0.01953
+alternative hypothesis: true location shift is greater than 0
+
+> wilcox.test(y - x, alternative = "less")    # The same.
+
+	Wilcoxon signed rank exact test
+
+data:  y - x
+V = 5, p-value = 0.01953
+alternative hypothesis: true location is less than 0
+
+> wilcox.test(y - x, alternative = "less",
++             exact = FALSE, correct = FALSE) # H&W large sample
+
+	Wilcoxon signed rank test
+
+data:  y - x
+V = 5, p-value = 0.01908
+alternative hypothesis: true location is less than 0
+
+>                                             # approximation
+> 
+> ## Formula interface to one-sample and paired tests
+> 
+> depression <- data.frame(first = x, second = y, change = y - x)
+> wilcox.test(change ~ 1, data = depression)
+
+	Wilcoxon signed rank exact test
+
+data:  change
+V = 5, p-value = 0.03906
+alternative hypothesis: true location is not equal to 0
+
+> wilcox.test(Pair(first, second) ~ 1, data = depression)
+
+	Wilcoxon signed rank exact test
+
+data:  Pair(first, second)
+V = 40, p-value = 0.03906
+alternative hypothesis: true location shift is not equal to 0
+
+> 
+> ## Two-sample test.
+> ## Hollander & Wolfe (1973), 69f.
+> ## Permeability constants of the human chorioamnion (a placental
+> ##  membrane) at term (x) and between 12 to 26 weeks gestational
+> ##  age (y).  The alternative of interest is greater permeability
+> ##  of the human chorioamnion for the term pregnancy.
+> x <- c(0.80, 0.83, 1.89, 1.04, 1.45, 1.38, 1.91, 1.64, 0.73, 1.46)
+> y <- c(1.15, 0.88, 0.90, 0.74, 1.21)
+> wilcox.test(x, y, alternative = "g")        # greater
+
+	Wilcoxon rank sum exact test
+
+data:  x and y
+W = 35, p-value = 0.1272
+alternative hypothesis: true location shift is greater than 0
+
+> wilcox.test(x, y, alternative = "greater",
++             exact = FALSE, correct = FALSE) # H&W large sample
+
+	Wilcoxon rank sum test
+
+data:  x and y
+W = 35, p-value = 0.1103
+alternative hypothesis: true location shift is greater than 0
+
+>                                             # approximation
+> 
+> wilcox.test(rnorm(10), rnorm(10, 2), conf.int = TRUE)
+
+	Wilcoxon rank sum exact test
+
+data:  rnorm(10) and rnorm(10, 2)
+W = 7, p-value = 0.0004871
+alternative hypothesis: true location shift is not equal to 0
+95 percent confidence interval:
+ -3.024352 -1.348555
+sample estimates:
+difference in location 
+             -2.262424 
+
+> 
+> ## Formula interface.
+> boxplot(Ozone ~ Month, data = airquality)
+> wilcox.test(Ozone ~ Month, data = airquality,
++             subset = Month %in% c(5, 8))
+Warning in wilcox.test.default(x = DATA[[1L]], y = DATA[[2L]], ...) :
+  cannot compute exact p-value with ties
+
+	Wilcoxon rank sum test with continuity correction
+
+data:  Ozone by Month
+W = 127.5, p-value = 0.0001208
+alternative hypothesis: true location shift is not equal to 0
+
+> 
+> ## accuracy in ties determination via 'digits.rank':
+> wilcox.test( 4:2,      3:1,     paired=TRUE) # Warning:  cannot compute exact p-value with ties
+Warning in wilcox.test.default(4:2, 3:1, paired = TRUE) :
+  cannot compute exact p-value with ties
+
+	Wilcoxon signed rank test with continuity correction
+
+data:  4:2 and 3:1
+V = 6, p-value = 0.1489
+alternative hypothesis: true location shift is not equal to 0
+
+> wilcox.test((4:2)/10, (3:1)/10, paired=TRUE) # no ties => *no* warning
+
+	Wilcoxon signed rank exact test
+
+data:  (4:2)/10 and (3:1)/10
+V = 6, p-value = 0.25
+alternative hypothesis: true location shift is not equal to 0
+
+> wilcox.test((4:2)/10, (3:1)/10, paired=TRUE, digits.rank = 9) # same ties as (4:2, 3:1)
+Warning in wilcox.test.default((4:2)/10, (3:1)/10, paired = TRUE, digits.rank = 9) :
+  cannot compute exact p-value with ties
+
+	Wilcoxon signed rank test with continuity correction
+
+data:  (4:2)/10 and (3:1)/10
+V = 6, p-value = 0.1489
+alternative hypothesis: true location shift is not equal to 0
+
+> 
+> 
+> 
+> cleanEx()
+> nameEx("window")
+> ### * window
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: window
+> ### Title: Time (Series) Windows
+> ### Aliases: window window.default window.ts window<- window<-.ts
+> ### Keywords: ts
+> 
+> ### ** Examples
+> 
+> window(presidents, 1960, c(1969,4)) # values in the 1960's
+     Qtr1 Qtr2 Qtr3 Qtr4
+1960   71   62   61   57
+1961   72   83   71   78
+1962   79   71   62   74
+1963   76   64   62   57
+1964   80   73   69   69
+1965   71   64   69   62
+1966   63   46   56   44
+1967   44   52   38   46
+1968   36   49   35   44
+1969   59   65   65   56
+> window(presidents, deltat = 1)  # All Qtr1s
+Time Series:
+Start = 1945 
+End = 1974 
+Frequency = 1 
+ [1] NA 63 35 36 69 45 36 25 59 71 71 76 79 60 57 71 72 79 76 80 71 63 44 36 59
+[26] 66 51 49 68 28
+> window(presidents, start = c(1945,3), deltat = 1)  # All Qtr3s
+Time Series:
+Start = 1945.5 
+End = 1974.5 
+Frequency = 1 
+ [1] 82 43 54 NA 57 46 32 NA 75 71 79 67 63 48 61 61 71 62 62 69 69 56 38 35 65
+[26] 61 54 NA 40 24
+> window(presidents, 1944, c(1979,2), extend = TRUE)
+     Qtr1 Qtr2 Qtr3 Qtr4
+1944   NA   NA   NA   NA
+1945   NA   87   82   75
+1946   63   50   43   32
+1947   35   60   54   55
+1948   36   39   NA   NA
+1949   69   57   57   51
+1950   45   37   46   39
+1951   36   24   32   23
+1952   25   32   NA   32
+1953   59   74   75   60
+1954   71   61   71   57
+1955   71   68   79   73
+1956   76   71   67   75
+1957   79   62   63   57
+1958   60   49   48   52
+1959   57   62   61   66
+1960   71   62   61   57
+1961   72   83   71   78
+1962   79   71   62   74
+1963   76   64   62   57
+1964   80   73   69   69
+1965   71   64   69   62
+1966   63   46   56   44
+1967   44   52   38   46
+1968   36   49   35   44
+1969   59   65   65   56
+1970   66   53   61   52
+1971   51   48   54   49
+1972   49   61   NA   NA
+1973   68   44   40   27
+1974   28   25   24   24
+1975   NA   NA   NA   NA
+1976   NA   NA   NA   NA
+1977   NA   NA   NA   NA
+1978   NA   NA   NA   NA
+1979   NA   NA          
+> 
+> pres <- window(presidents, 1945, c(1949,4)) # values in the 1940's
+> window(pres, 1945.25, 1945.50) <- c(60, 70)
+> window(pres, 1944, 1944.75) <- 0 # will generate a warning
+Warning: extending time series when replacing values
+> window(pres, c(1945,4), c(1949,4), frequency = 1) <- 85:89
+> pres
+     Qtr1 Qtr2 Qtr3 Qtr4
+1944    0    0    0    0
+1945   NA   60   70   85
+1946   63   50   43   86
+1947   35   60   54   87
+1948   36   39   NA   88
+1949   69   57   57   89
+> 
+> 
+> 
+> cleanEx()
+> nameEx("xtabs")
+> ### * xtabs
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: xtabs
+> ### Title: Cross Tabulation
+> ### Aliases: xtabs print.xtabs
+> ### Keywords: category
+> 
+> ### ** Examples
+> 
+> ## 'esoph' has the frequencies of cases and controls for all levels of
+> ## the variables 'agegp', 'alcgp', and 'tobgp'.
+> xtabs(cbind(ncases, ncontrols) ~ ., data = esoph)
+, , tobgp = 0-9g/day,  = ncases
+
+       alcgp
+agegp   0-39g/day 40-79 80-119 120+
+  25-34         0     0      0    0
+  35-44         0     0      0    2
+  45-54         1     6      3    4
+  55-64         2     9      9    5
+  65-74         5    17      6    3
+  75+           1     2      1    2
+
+, , tobgp = 10-19,  = ncases
+
+       alcgp
+agegp   0-39g/day 40-79 80-119 120+
+  25-34         0     0      0    1
+  35-44         1     3      0    0
+  45-54         0     4      6    3
+  55-64         3     6      8    6
+  65-74         4     3      4    1
+  75+           2     1      1    1
+
+, , tobgp = 20-29,  = ncases
+
+       alcgp
+agegp   0-39g/day 40-79 80-119 120+
+  25-34         0     0      0    0
+  35-44         0     1      0    2
+  45-54         0     5      1    2
+  55-64         3     4      3    2
+  65-74         2     5      2    1
+  75+           0     0      0    0
+
+, , tobgp = 30+,  = ncases
+
+       alcgp
+agegp   0-39g/day 40-79 80-119 120+
+  25-34         0     0      0    0
+  35-44         0     0      0    0
+  45-54         0     5      2    4
+  55-64         4     3      4    5
+  65-74         0     0      1    1
+  75+           1     1      0    0
+
+, , tobgp = 0-9g/day,  = ncontrols
+
+       alcgp
+agegp   0-39g/day 40-79 80-119 120+
+  25-34        40    27      2    1
+  35-44        60    35     11    1
+  45-54        45    32     13    0
+  55-64        47    31      9    5
+  65-74        43    17      7    1
+  75+          17     3      0    0
+
+, , tobgp = 10-19,  = ncontrols
+
+       alcgp
+agegp   0-39g/day 40-79 80-119 120+
+  25-34        10     7      1    0
+  35-44        13    20      6    3
+  45-54        18    17      8    1
+  55-64        19    15      7    1
+  65-74        10     7      8    1
+  75+           4     2      0    0
+
+, , tobgp = 20-29,  = ncontrols
+
+       alcgp
+agegp   0-39g/day 40-79 80-119 120+
+  25-34         6     4      0    1
+  35-44         7    13      2    2
+  45-54        10    10      4    1
+  55-64         9    13      3    1
+  65-74         5     4      1    0
+  75+           0     3      0    0
+
+, , tobgp = 30+,  = ncontrols
+
+       alcgp
+agegp   0-39g/day 40-79 80-119 120+
+  25-34         5     7      2    2
+  35-44         8     8      1    0
+  45-54         4     2      2    0
+  55-64         2     3      0    1
+  65-74         2     0      0    0
+  75+           2     0      0    0
+
+> ## Output is not really helpful ... flat tables are better:
+> ftable(xtabs(cbind(ncases, ncontrols) ~ ., data = esoph))
+                          ncases ncontrols
+agegp alcgp     tobgp                     
+25-34 0-39g/day 0-9g/day       0        40
+                10-19          0        10
+                20-29          0         6
+                30+            0         5
+      40-79     0-9g/day       0        27
+                10-19          0         7
+                20-29          0         4
+                30+            0         7
+      80-119    0-9g/day       0         2
+                10-19          0         1
+                20-29          0         0
+                30+            0         2
+      120+      0-9g/day       0         1
+                10-19          1         0
+                20-29          0         1
+                30+            0         2
+35-44 0-39g/day 0-9g/day       0        60
+                10-19          1        13
+                20-29          0         7
+                30+            0         8
+      40-79     0-9g/day       0        35
+                10-19          3        20
+                20-29          1        13
+                30+            0         8
+      80-119    0-9g/day       0        11
+                10-19          0         6
+                20-29          0         2
+                30+            0         1
+      120+      0-9g/day       2         1
+                10-19          0         3
+                20-29          2         2
+                30+            0         0
+45-54 0-39g/day 0-9g/day       1        45
+                10-19          0        18
+                20-29          0        10
+                30+            0         4
+      40-79     0-9g/day       6        32
+                10-19          4        17
+                20-29          5        10
+                30+            5         2
+      80-119    0-9g/day       3        13
+                10-19          6         8
+                20-29          1         4
+                30+            2         2
+      120+      0-9g/day       4         0
+                10-19          3         1
+                20-29          2         1
+                30+            4         0
+55-64 0-39g/day 0-9g/day       2        47
+                10-19          3        19
+                20-29          3         9
+                30+            4         2
+      40-79     0-9g/day       9        31
+                10-19          6        15
+                20-29          4        13
+                30+            3         3
+      80-119    0-9g/day       9         9
+                10-19          8         7
+                20-29          3         3
+                30+            4         0
+      120+      0-9g/day       5         5
+                10-19          6         1
+                20-29          2         1
+                30+            5         1
+65-74 0-39g/day 0-9g/day       5        43
+                10-19          4        10
+                20-29          2         5
+                30+            0         2
+      40-79     0-9g/day      17        17
+                10-19          3         7
+                20-29          5         4
+                30+            0         0
+      80-119    0-9g/day       6         7
+                10-19          4         8
+                20-29          2         1
+                30+            1         0
+      120+      0-9g/day       3         1
+                10-19          1         1
+                20-29          1         0
+                30+            1         0
+75+   0-39g/day 0-9g/day       1        17
+                10-19          2         4
+                20-29          0         0
+                30+            1         2
+      40-79     0-9g/day       2         3
+                10-19          1         2
+                20-29          0         3
+                30+            1         0
+      80-119    0-9g/day       1         0
+                10-19          1         0
+                20-29          0         0
+                30+            0         0
+      120+      0-9g/day       2         0
+                10-19          1         0
+                20-29          0         0
+                30+            0         0
+> ## In particular if we have fewer factors ...
+> ftable(xtabs(cbind(ncases, ncontrols) ~ agegp, data = esoph))
+       ncases ncontrols
+agegp                  
+25-34       1       115
+35-44       9       190
+45-54      46       167
+55-64      76       166
+65-74      55       106
+75+        13        31
+> 
+> ## This is already a contingency table in array form.
+> DF <- as.data.frame(UCBAdmissions)
+> ## Now 'DF' is a data frame with a grid of the factors and the counts
+> ## in variable 'Freq'.
+> DF
+      Admit Gender Dept Freq
+1  Admitted   Male    A  512
+2  Rejected   Male    A  313
+3  Admitted Female    A   89
+4  Rejected Female    A   19
+5  Admitted   Male    B  353
+6  Rejected   Male    B  207
+7  Admitted Female    B   17
+8  Rejected Female    B    8
+9  Admitted   Male    C  120
+10 Rejected   Male    C  205
+11 Admitted Female    C  202
+12 Rejected Female    C  391
+13 Admitted   Male    D  138
+14 Rejected   Male    D  279
+15 Admitted Female    D  131
+16 Rejected Female    D  244
+17 Admitted   Male    E   53
+18 Rejected   Male    E  138
+19 Admitted Female    E   94
+20 Rejected Female    E  299
+21 Admitted   Male    F   22
+22 Rejected   Male    F  351
+23 Admitted Female    F   24
+24 Rejected Female    F  317
+> ## Nice for taking margins ...
+> xtabs(Freq ~ Gender + Admit, DF)
+        Admit
+Gender   Admitted Rejected
+  Male       1198     1493
+  Female      557     1278
+> ## And for testing independence ...
+> summary(xtabs(Freq ~ ., DF))
+Call: xtabs(formula = Freq ~ ., data = DF)
+Number of cases in table: 4526 
+Number of factors: 3 
+Test for independence of all factors:
+	Chisq = 2000.3, df = 16, p-value = 0
+> 
+> ## with NA's
+> DN <- DF; DN[cbind(6:9, c(1:2,4,1))] <- NA
+> DN # 'Freq' is missing only for (Rejected, Female, B)
+      Admit Gender Dept Freq
+1  Admitted   Male    A  512
+2  Rejected   Male    A  313
+3  Admitted Female    A   89
+4  Rejected Female    A   19
+5  Admitted   Male    B  353
+6      <NA>   Male    B  207
+7  Admitted   <NA>    B   17
+8  Rejected Female    B   NA
+9      <NA>   Male    C  120
+10 Rejected   Male    C  205
+11 Admitted Female    C  202
+12 Rejected Female    C  391
+13 Admitted   Male    D  138
+14 Rejected   Male    D  279
+15 Admitted Female    D  131
+16 Rejected Female    D  244
+17 Admitted   Male    E   53
+18 Rejected   Male    E  138
+19 Admitted Female    E   94
+20 Rejected Female    E  299
+21 Admitted   Male    F   22
+22 Rejected   Male    F  351
+23 Admitted Female    F   24
+24 Rejected Female    F  317
+> tools::assertError(# 'na.fail' should fail :
++      xtabs(Freq ~ Gender + Admit, DN, na.action=na.fail), verbose=TRUE)
+Asserted error: missing values in object
+> op <- options(na.action = "na.omit") # the "factory" default
+> (xtabs(Freq ~ Gender + Admit, DN) -> xtD)
+        Admit
+Gender   Admitted Rejected
+  Male       1078     1286
+  Female      540     1270
+> noC <- function(O) `attr<-`(O, "call", NULL)
+> ident_noC <- function(x,y) identical(noC(x), noC(y))
+> stopifnot(exprs = {
++   ident_noC(xtD, xtabs(Freq ~ Gender + Admit, DN, na.action = na.omit))
++   ident_noC(xtD, xtabs(Freq ~ Gender + Admit, DN, na.action = NULL))
++ })
+> 
+> xtabs(Freq ~ Gender + Admit, DN, na.action = na.pass)
+        Admit
+Gender   Admitted Rejected
+  Male       1078     1286
+  Female      540         
+> ## The Female:Rejected combination has NA 'Freq' (and NA prints 'invisibly' as "")
+> (xtNA <- xtabs(Freq ~ Gender + Admit, DN, addNA = TRUE)) # ==> count NAs
+        Admit
+Gender   Admitted Rejected <NA>
+  Male       1078     1286  327
+  Female      540             0
+  <NA>         17        0    0
+> ## show NA's better via  na.print = ".." :
+> print(xtNA, na.print= "NA")
+        Admit
+Gender   Admitted Rejected <NA>
+  Male       1078     1286  327
+  Female      540       NA    0
+  <NA>         17        0    0
+> 
+> 
+> ## Create a nice display for the warp break data.
+> warpbreaks$replicate <- rep_len(1:9, 54)
+> ftable(xtabs(breaks ~ wool + tension + replicate, data = warpbreaks))
+             replicate  1  2  3  4  5  6  7  8  9
+wool tension                                     
+A    L                 26 30 54 25 70 52 51 26 67
+     M                 18 21 29 17 12 18 35 30 36
+     H                 36 21 24 18 10 43 28 15 26
+B    L                 27 14 29 19 29 31 41 20 44
+     M                 42 26 19 16 39 28 21 39 29
+     H                 20 21 24 17 13 15 15 16 28
+> 
+> ### ---- Sparse Examples ----
+> 
+> 
+> 
+> 
+> cleanEx()
+> nameEx("zC")
+> ### * zC
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: C
+> ### Title: Sets Contrasts for a Factor
+> ### Aliases: C
+> ### Keywords: models
+> 
+> ### ** Examples
+> 
+> ## reset contrasts to defaults
+> options(contrasts = c("contr.treatment", "contr.poly"))
+> tens <- with(warpbreaks, C(tension, poly, 1))
+> ## tension SHOULD be an ordered factor, but as it is not we can use
+> aov(breaks ~ wool + tens + tension, data = warpbreaks)
+Call:
+   aov(formula = breaks ~ wool + tens + tension, data = warpbreaks)
+
+Terms:
+                    wool     tens  tension Residuals
+Sum of Squares   450.667 1950.694   83.565  6747.889
+Deg. of Freedom        1        1        1        50
+
+Residual standard error: 11.61713
+1 out of 5 effects not estimable
+Estimated effects may be unbalanced
+> 
+> ## show the use of ...  The default contrast is contr.treatment here
+> summary(lm(breaks ~ wool + C(tension, base = 2), data = warpbreaks))
+
+Call:
+lm(formula = breaks ~ wool + C(tension, base = 2), data = warpbreaks)
+
+Residuals:
+    Min      1Q  Median      3Q     Max 
+-19.500  -8.083  -2.139   6.472  30.722 
+
+Coefficients:
+                      Estimate Std. Error t value Pr(>|t|)    
+(Intercept)             29.278      3.162   9.260    2e-12 ***
+woolB                   -5.778      3.162  -1.827   0.0736 .  
+C(tension, base = 2)1   10.000      3.872   2.582   0.0128 *  
+C(tension, base = 2)3   -4.722      3.872  -1.219   0.2284    
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+
+Residual standard error: 11.62 on 50 degrees of freedom
+Multiple R-squared:  0.2691,	Adjusted R-squared:  0.2253 
+F-statistic: 6.138 on 3 and 50 DF,  p-value: 0.00123
+
+> 
+> 
+> # following on from help(esoph)
+> model3 <- glm(cbind(ncases, ncontrols) ~ agegp + C(tobgp, , 1) +
++      C(alcgp, , 1), data = esoph, family = binomial())
+> summary(model3)
+
+Call:
+glm(formula = cbind(ncases, ncontrols) ~ agegp + C(tobgp, , 1) + 
+    C(alcgp, , 1), family = binomial(), data = esoph)
+
+Deviance Residuals: 
+    Min       1Q   Median       3Q      Max  
+-2.3018  -0.7234  -0.2306   0.5737   2.4290  
+
+Coefficients:
+                Estimate Std. Error z value Pr(>|z|)    
+(Intercept)     -1.15264    0.20326  -5.671 1.42e-08 ***
+agegp.L          3.81892    0.67862   5.627 1.83e-08 ***
+agegp.Q         -1.49473    0.60671  -2.464   0.0138 *  
+agegp.C          0.07923    0.46318   0.171   0.8642    
+agegp^4          0.12136    0.32203   0.377   0.7063    
+agegp^5         -0.24856    0.21153  -1.175   0.2400    
+C(tobgp, , 1).L  0.98287    0.21519   4.568 4.93e-06 ***
+C(alcgp, , 1).L  2.38736    0.23462  10.175  < 2e-16 ***
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+
+(Dispersion parameter for binomial family taken to be 1)
+
+    Null deviance: 367.953  on 87  degrees of freedom
+Residual deviance:  91.121  on 80  degrees of freedom
+AIC: 222.18
+
+Number of Fisher Scoring iterations: 6
+
+> 
+> 
+> 
+> base::options(contrasts = c(unordered = "contr.treatment",ordered = "contr.poly"))
+> ### * <FOOTER>
+> ###
+> cleanEx()
+> options(digits = 7L)
+> base::cat("Time elapsed: ", proc.time() - base::get("ptime", pos = 'CheckExEnv'),"\n")
+Time elapsed:  16.171 0.554 16.84 0 0 
+> grDevices::dev.off()
+null device 
+          1 
+> ###
+> ### Local variables: ***
+> ### mode: outline-minor ***
+> ### outline-regexp: "\\(> \\)?### [*]+" ***
+> ### End: ***
+> quit('no')
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/tests/Examples/graphics-Ex.Rout.save
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/tests/Examples/graphics-Ex.Rout.save	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/tests/Examples/graphics-Ex.Rout.save	(revision 3762)
@@ -0,0 +1,3171 @@
+
+R Under development (unstable) (2022-03-19 r81942) -- "Unsuffered Consequences"
+Copyright (C) 2022 The R Foundation for Statistical Computing
+Platform: x86_64-pc-linux-gnu (64-bit)
+
+R is free software and comes with ABSOLUTELY NO WARRANTY.
+You are welcome to redistribute it under certain conditions.
+Type 'license()' or 'licence()' for distribution details.
+
+  Natural language support but running in an English locale
+
+R is a collaborative project with many contributors.
+Type 'contributors()' for more information and
+'citation()' on how to cite R or R packages in publications.
+
+Type 'demo()' for some demos, 'help()' for on-line help, or
+'help.start()' for an HTML browser interface to help.
+Type 'q()' to quit R.
+
+> pkgname <- "graphics"
+> source(file.path(R.home("share"), "R", "examples-header.R"))
+> options(warn = 1)
+> library('graphics')
+> 
+> base::assign(".oldSearch", base::search(), pos = 'CheckExEnv')
+> base::assign(".old_wd", base::getwd(), pos = 'CheckExEnv')
+> cleanEx()
+> nameEx("abline")
+> ### * abline
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: abline
+> ### Title: Add Straight Lines to a Plot
+> ### Aliases: abline
+> ### Keywords: aplot
+> 
+> ### ** Examples
+> 
+> ## Setup up coordinate system (with x == y aspect ratio):
+> plot(c(-2,3), c(-1,5), type = "n", xlab = "x", ylab = "y", asp = 1)
+> ## the x- and y-axis, and an integer grid
+> abline(h = 0, v = 0, col = "gray60")
+> text(1,0, "abline( h = 0 )", col = "gray60", adj = c(0, -.1))
+> abline(h = -1:5, v = -2:3, col = "lightgray", lty = 3)
+> abline(a = 1, b = 2, col = 2)
+> text(1,3, "abline( 1, 2 )", col = 2, adj = c(-.1, -.1))
+> 
+> ## Simple Regression Lines:
+> require(stats)
+> sale5 <- c(6, 4, 9, 7, 6, 12, 8, 10, 9, 13)
+> plot(sale5)
+> abline(lsfit(1:10, sale5))
+> abline(lsfit(1:10, sale5, intercept = FALSE), col = 4) # less fitting
+> 
+> z <- lm(dist ~ speed, data = cars)
+> plot(cars)
+> abline(z) # equivalent to abline(reg = z) or
+> abline(coef = coef(z))
+> 
+> ## trivial intercept model
+> abline(mC <- lm(dist ~ 1, data = cars)) ## the same as
+> abline(a = coef(mC), b = 0, col = "blue")
+> 
+> 
+> 
+> cleanEx()
+> nameEx("arrows")
+> ### * arrows
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: arrows
+> ### Title: Add Arrows to a Plot
+> ### Aliases: arrows
+> ### Keywords: aplot
+> 
+> ### ** Examples
+> 
+> x <- stats::runif(12); y <- stats::rnorm(12)
+> i <- order(x, y); x <- x[i]; y <- y[i]
+> plot(x,y, main = "arrows(.) and segments(.)")
+> ## draw arrows from point to point :
+> s <- seq(length(x)-1)  # one shorter than data
+> arrows(x[s], y[s], x[s+1], y[s+1], col = 1:3)
+> s <- s[-length(s)]
+> segments(x[s], y[s], x[s+2], y[s+2], col = "pink")
+> 
+> 
+> 
+> cleanEx()
+> nameEx("assocplot")
+> ### * assocplot
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: assocplot
+> ### Title: Association Plots
+> ### Aliases: assocplot
+> ### Keywords: hplot
+> 
+> ### ** Examples
+> 
+> ## Aggregate over sex:
+> x <- marginSums(HairEyeColor, c(1, 2))
+> x
+       Eye
+Hair    Brown Blue Hazel Green
+  Black    68   20    15     5
+  Brown   119   84    54    29
+  Red      26   17    14    14
+  Blond     7   94    10    16
+> assocplot(x, main = "Relation between hair and eye color")
+> 
+> 
+> 
+> cleanEx()
+> nameEx("axTicks")
+> ### * axTicks
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: axTicks
+> ### Title: Compute Axis Tickmark Locations
+> ### Aliases: axTicks
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+>  plot(1:7, 10*21:27)
+>  axTicks(1)
+[1] 1 2 3 4 5 6 7
+>  axTicks(2)
+[1] 210 220 230 240 250 260 270
+>  stopifnot(identical(axTicks(1), axTicks(3)),
++            identical(axTicks(2), axTicks(4)))
+> 
+> ## Show how axTicks() and axis() correspond :
+> op <- par(mfrow = c(3, 1))
+> for(x in 9999 * c(1, 2, 8)) {
++     plot(x, 9, log = "x")
++     cat(formatC(par("xaxp"), width = 5),";", T <- axTicks(1),"\n")
++     rug(T, col =  adjustcolor("red", 0.5), lwd = 4)
++ }
+ 1000 1e+05     3 ; 200 500 1000 2000 5000 10000 20000 50000 1e+05 2e+05 5e+05 
+ 1000 1e+06     2 ; 500 1000 5000 10000 50000 1e+05 5e+05 1e+06 
+ 1000 1e+07     1 ; 1000 10000 1e+05 1e+06 1e+07 
+> par(op)
+> 
+> x <- 9.9*10^(-3:10)
+> plot(x, 1:14, log = "x")
+> axTicks(1) # now length 7, in R <= 2.13.x gave 'nintLog = Inf' res; then
+[1] 1e-02 1e+00 1e+02 1e+04 1e+06 1e+08 1e+10
+> ## 1e-01 1e+01 1e+03 1e+05 1e+07 1e+09 1e+11 ; since R 4.2.0: 1e-2 1e0 1e2 .. 1e10
+> axTicks(1, nintLog = Inf) # rather too many
+ [1] 1e-02 1e-01 1e+00 1e+01 1e+02 1e+03 1e+04 1e+05 1e+06 1e+07 1e+08 1e+09
+[13] 1e+10 1e+11
+> 
+> ## An example using axTicks() without reference to an existing plot
+> ## (copying R's internal procedures for setting axis ranges etc.),
+> ## You do need to supply _all_ of axp, usr, log, nintLog
+> ## standard logarithmic y axis labels
+> ylims <- c(0.2, 88)
+> get_axp <- function(x) 10^c(ceiling(x[1]), floor(x[2]))
+> ## mimic par("yaxs") == "i"
+> usr.i <- log10(ylims)
+> (aT.i <- axTicks(side = 2, usr = usr.i,
++                  axp = c(get_axp(usr.i), n = 3), log = TRUE, nintLog = 5))
+[1]  0.2  0.5  1.0  2.0  5.0 10.0 20.0 50.0
+> ## mimic (default) par("yaxs") == "r"
+> usr.r <- extendrange(r = log10(ylims), f = 0.04)
+> (aT.r <- axTicks(side = 2, usr = usr.r,
++                  axp = c(get_axp(usr.r), 3), log = TRUE, nintLog = 5))
+[1]   0.2   0.5   1.0   2.0   5.0  10.0  20.0  50.0 100.0
+> 
+> ## Prove that we got it right :
+> plot(0:1, ylims, log = "y", yaxs = "i")
+> stopifnot(all.equal(aT.i, axTicks(side = 2)))
+> 
+> plot(0:1, ylims, log = "y", yaxs = "r")
+> stopifnot(all.equal(aT.r, axTicks(side = 2)))
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("axis.POSIXct")
+> ### * axis.POSIXct
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: axis.POSIXct
+> ### Title: Date and Date-time Plotting Functions
+> ### Aliases: axis.POSIXct axis.Date
+> ### Keywords: utilities chron
+> 
+> ### ** Examples
+> 
+> with(beaver1, {
++ time <- strptime(paste(1990, day, time %/% 100, time %% 100),
++                  "%Y %j %H %M")
++ plot(time, temp, type = "l") # axis at 4-hour intervals.
++ # now label every hour on the time axis
++ plot(time, temp, type = "l", xaxt = "n")
++ r <- as.POSIXct(round(range(time), "hours"))
++ axis.POSIXct(1, at = seq(r[1], r[2], by = "hour"), format = "%H")
++ })
+> 
+> plot(.leap.seconds, seq_along(.leap.seconds), type = "n", yaxt = "n",
++      xlab = "leap seconds", ylab = "", bty = "n")
+> rug(.leap.seconds)
+> ## or as dates
+> lps <- as.Date(.leap.seconds)
+> plot(lps, seq_along(.leap.seconds),
++      type = "n", yaxt = "n", xlab = "leap seconds",
++      ylab = "", bty = "n")
+> rug(lps)
+> 
+> ## 100 random dates in a 10-week period
+> random.dates <- as.Date("2001/1/1") + 70*sort(stats::runif(100))
+> plot(random.dates, 1:100)
+> # or for a better axis labelling
+> plot(random.dates, 1:100, xaxt = "n")
+> axis.Date(1, at = seq(as.Date("2001/1/1"), max(random.dates)+6, "weeks"))
+> axis.Date(1, at = seq(as.Date("2001/1/1"), max(random.dates)+6, "days"),
++      labels = FALSE, tcl = -0.2)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("axis")
+> ### * axis
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: axis
+> ### Title: Add an Axis to a Plot
+> ### Aliases: axis
+> ### Keywords: aplot
+> 
+> ### ** Examples
+> 
+> require(stats) # for rnorm
+> plot(1:4, rnorm(4), axes = FALSE)
+> axis(1, 1:4, LETTERS[1:4])
+> axis(2)
+> box() #- to make it look "as usual"
+> 
+> plot(1:7, rnorm(7), main = "axis() examples",
++      type = "s", xaxt = "n", frame.plot = FALSE, col = "red")
+> axis(1, 1:7, LETTERS[1:7], col.axis = "blue")
+> # unusual options:
+> axis(4, col = "violet", col.axis = "dark violet", lwd = 2)
+> axis(3, col = "gold", lty = 2, lwd = 0.5)
+> 
+> # one way to have a custom x axis
+> plot(1:10, xaxt = "n")
+> axis(1, xaxp = c(2, 9, 7))
+> 
+> ## Changing default gap between labels:
+> plot(0:100, type="n", axes=FALSE, ann=FALSE)
+> title(quote("axis(1, .., gap.axis = f)," ~~ f >= 0))
+> axis(2, at = 5*(0:20), las = 1, gap.axis = 1/4)
+> gaps <- c(4, 2, 1, 1/2, 1/4, 0.1, 0)
+> chG <- paste0(ifelse(gaps == 1, "default:  ", ""),
++               "gap.axis=", formatC(gaps))
+> jj <- seq_along(gaps)
+> linG <- -2.5*(jj-1)
+> for(j in jj) {
++     isD <- gaps[j] == 1 # is default
++     axis (1, at=5*(0:20), gap.axis = gaps[j], padj=-1, line = linG[j],
++           col.axis = if(isD) "forest green" else 1, font.axis= 1+isD)
++ }
+> mtext(chG, side=1, padj=-1, line = linG -1/2, cex=3/4,
++       col = ifelse(gaps == 1, "forest green", "blue3"))
+> ## now shrink the window (in x- and y-direction) and observe the axis labels drawn
+> 
+> 
+> 
+> cleanEx()
+> nameEx("barplot")
+> ### * barplot
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: barplot
+> ### Title: Bar Plots
+> ### Aliases: barplot barplot.default barplot.formula
+> ### Keywords: hplot
+> 
+> ### ** Examples
+> 
+> # Formula method
+> barplot(GNP ~ Year, data = longley)
+> barplot(cbind(Employed, Unemployed) ~ Year, data = longley)
+> 
+> ## 3rd form of formula - 2 categories :
+> op <- par(mfrow = 2:1, mgp = c(3,1,0)/2, mar = .1+c(3,3:1))
+> summary(d.Titanic <- as.data.frame(Titanic))
+  Class       Sex        Age     Survived      Freq       
+ 1st :8   Male  :16   Child:16   No :16   Min.   :  0.00  
+ 2nd :8   Female:16   Adult:16   Yes:16   1st Qu.:  0.75  
+ 3rd :8                                   Median : 13.50  
+ Crew:8                                   Mean   : 68.78  
+                                          3rd Qu.: 77.00  
+                                          Max.   :670.00  
+> barplot(Freq ~ Class + Survived, data = d.Titanic,
++         subset = Age == "Adult" & Sex == "Male",
++         main = "barplot(Freq ~ Class + Survived, *)", ylab = "# {passengers}", legend.text = TRUE)
+> # Corresponding table :
+> (xt <- xtabs(Freq ~ Survived + Class + Sex, d.Titanic, subset = Age=="Adult"))
+, , Sex = Male
+
+        Class
+Survived 1st 2nd 3rd Crew
+     No  118 154 387  670
+     Yes  57  14  75  192
+
+, , Sex = Female
+
+        Class
+Survived 1st 2nd 3rd Crew
+     No    4  13  89    3
+     Yes 140  80  76   20
+
+> # Alternatively, a mosaic plot :
+> mosaicplot(xt[,,"Male"], main = "mosaicplot(Freq ~ Class + Survived, *)", color=TRUE)
+> par(op)
+> 
+> 
+> # Default method
+> require(grDevices) # for colours
+> tN <- table(Ni <- stats::rpois(100, lambda = 5))
+> r <- barplot(tN, col = rainbow(20))
+> #- type = "h" plotting *is* 'bar'plot
+> lines(r, tN, type = "h", col = "red", lwd = 2)
+> 
+> barplot(tN, space = 1.5, axisnames = FALSE,
++         sub = "barplot(..., space= 1.5, axisnames = FALSE)")
+> 
+> barplot(VADeaths, plot = FALSE)
+[1] 0.7 1.9 3.1 4.3
+> barplot(VADeaths, plot = FALSE, beside = TRUE)
+     [,1] [,2] [,3] [,4]
+[1,]  1.5  7.5 13.5 19.5
+[2,]  2.5  8.5 14.5 20.5
+[3,]  3.5  9.5 15.5 21.5
+[4,]  4.5 10.5 16.5 22.5
+[5,]  5.5 11.5 17.5 23.5
+> 
+> mp <- barplot(VADeaths) # default
+> tot <- colMeans(VADeaths)
+> text(mp, tot + 3, format(tot), xpd = TRUE, col = "blue")
+> barplot(VADeaths, beside = TRUE,
++         col = c("lightblue", "mistyrose", "lightcyan",
++                 "lavender", "cornsilk"),
++         legend.text = rownames(VADeaths), ylim = c(0, 100))
+> title(main = "Death Rates in Virginia", font.main = 4)
+> 
+> hh <- t(VADeaths)[, 5:1]
+> mybarcol <- "gray20"
+> mp <- barplot(hh, beside = TRUE,
++         col = c("lightblue", "mistyrose",
++                 "lightcyan", "lavender"),
++         legend.text = colnames(VADeaths), ylim = c(0,100),
++         main = "Death Rates in Virginia", font.main = 4,
++         sub = "Faked upper 2*sigma error bars", col.sub = mybarcol,
++         cex.names = 1.5)
+> segments(mp, hh, mp, hh + 2*sqrt(1000*hh/100), col = mybarcol, lwd = 1.5)
+> stopifnot(dim(mp) == dim(hh))  # corresponding matrices
+> mtext(side = 1, at = colMeans(mp), line = -2,
++       text = paste("Mean", formatC(colMeans(hh))), col = "red")
+> 
+> # Bar shading example
+> barplot(VADeaths, angle = 15+10*1:5, density = 20, col = "black",
++         legend.text = rownames(VADeaths))
+> title(main = list("Death Rates in Virginia", font = 4))
+> 
+> # Border color
+> barplot(VADeaths, border = "dark blue") 
+> 
+> # Log scales (not much sense here)
+> barplot(tN, col = heat.colors(12), log = "y")
+> barplot(tN, col = gray.colors(20), log = "xy")
+> 
+> # Legend location
+> barplot(height = cbind(x = c(465, 91) / 465 * 100,
++                        y = c(840, 200) / 840 * 100,
++                        z = c(37, 17) / 37 * 100),
++         beside = FALSE,
++         width = c(465, 840, 37),
++         col = c(1, 2),
++         legend.text = c("A", "B"),
++         args.legend = list(x = "topleft"))
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("box")
+> ### * box
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: box
+> ### Title: Draw a Box around a Plot
+> ### Aliases: box
+> ### Keywords: aplot
+> 
+> ### ** Examples
+> 
+> plot(1:7, abs(stats::rnorm(7)), type = "h", axes = FALSE)
+> axis(1, at = 1:7, labels = letters[1:7])
+> box(lty = '1373', col = 'red')
+> 
+> 
+> 
+> cleanEx()
+> nameEx("boxplot")
+> ### * boxplot
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: boxplot
+> ### Title: Box Plots
+> ### Aliases: boxplot boxplot.default boxplot.formula
+> ### Keywords: hplot
+> 
+> ### ** Examples
+> 
+> ## boxplot on a formula:
+> boxplot(count ~ spray, data = InsectSprays, col = "lightgray")
+> # *add* notches (somewhat funny here <--> warning "notches .. outside hinges"):
+> boxplot(count ~ spray, data = InsectSprays,
++         notch = TRUE, add = TRUE, col = "blue")
+Warning in (function (z, notch = FALSE, width = NULL, varwidth = FALSE,  :
+  some notches went outside hinges ('box'): maybe set notch=FALSE
+> 
+> boxplot(decrease ~ treatment, data = OrchardSprays, col = "bisque",
++         log = "y")
+> ## horizontal=TRUE, switching  y <--> x :
+> boxplot(decrease ~ treatment, data = OrchardSprays, col = "bisque",
++         log = "x", horizontal=TRUE)
+> 
+> rb <- boxplot(decrease ~ treatment, data = OrchardSprays, col = "bisque")
+> title("Comparing boxplot()s and non-robust mean +/- SD")
+> mn.t <- tapply(OrchardSprays$decrease, OrchardSprays$treatment, mean)
+> sd.t <- tapply(OrchardSprays$decrease, OrchardSprays$treatment, sd)
+> xi <- 0.3 + seq(rb$n)
+> points(xi, mn.t, col = "orange", pch = 18)
+> arrows(xi, mn.t - sd.t, xi, mn.t + sd.t,
++        code = 3, col = "pink", angle = 75, length = .1)
+> 
+> ## boxplot on a matrix:
+> mat <- cbind(Uni05 = (1:100)/21, Norm = rnorm(100),
++              `5T` = rt(100, df = 5), Gam2 = rgamma(100, shape = 2))
+> boxplot(mat) # directly, calling boxplot.matrix()
+> 
+> ## boxplot on a data frame:
+> df. <- as.data.frame(mat)
+> par(las = 1) # all axis labels horizontal
+> boxplot(df., main = "boxplot(*, horizontal = TRUE)", horizontal = TRUE)
+> 
+> ## Using 'at = ' and adding boxplots -- example idea by Roger Bivand :
+> boxplot(len ~ dose, data = ToothGrowth,
++         boxwex = 0.25, at = 1:3 - 0.2,
++         subset = supp == "VC", col = "yellow",
++         main = "Guinea Pigs' Tooth Growth",
++         xlab = "Vitamin C dose mg",
++         ylab = "tooth length",
++         xlim = c(0.5, 3.5), ylim = c(0, 35), yaxs = "i")
+> boxplot(len ~ dose, data = ToothGrowth, add = TRUE,
++         boxwex = 0.25, at = 1:3 + 0.2,
++         subset = supp == "OJ", col = "orange")
+> legend(2, 9, c("Ascorbic acid", "Orange juice"),
++        fill = c("yellow", "orange"))
+> 
+> ## With less effort (slightly different) using factor *interaction*:
+> boxplot(len ~ dose:supp, data = ToothGrowth,
++         boxwex = 0.5, col = c("orange", "yellow"),
++         main = "Guinea Pigs' Tooth Growth",
++         xlab = "Vitamin C dose mg", ylab = "tooth length",
++         sep = ":", lex.order = TRUE, ylim = c(0, 35), yaxs = "i")
+> 
+> ## more examples in  help(bxp)
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("boxplot.matrix")
+> ### * boxplot.matrix
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: boxplot.matrix
+> ### Title: Draw a Boxplot for each Column (Row) of a Matrix
+> ### Aliases: boxplot.matrix
+> ### Keywords: hplot
+> 
+> ### ** Examples
+> 
+> ## Very similar to the example in ?boxplot
+> mat <- cbind(Uni05 = (1:100)/21, Norm = rnorm(100),
++              T5 = rt(100, df = 5), Gam2 = rgamma(100, shape = 2))
+> boxplot(mat, main = "boxplot.matrix(...., main = ...)",
++         notch = TRUE, col = 1:4)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("bxp")
+> ### * bxp
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: bxp
+> ### Title: Draw Box Plots from Summaries
+> ### Aliases: bxp
+> ### Keywords: aplot
+> 
+> ### ** Examples
+> 
+> require(stats)
+> set.seed(753)
+> (bx.p <- boxplot(split(rt(100, 4), gl(5, 20))))
+$stats
+            [,1]        [,2]        [,3]        [,4]        [,5]
+[1,] -1.66391873 -2.02625162 -2.12785004 -2.76510496 -1.70034047
+[2,] -0.55308292 -0.65897584 -0.86705616 -1.63431484 -0.81848966
+[3,] -0.06763313  0.04887846  0.09674026 -0.06712275 -0.01150075
+[4,]  0.68813940  0.91705734  1.05562526  0.56746581  0.49017934
+[5,]  1.14222667  3.16270157  2.07574986  2.09523462  1.87734641
+
+$n
+[1] 20 20 20 20 20
+
+$conf
+           [,1]       [,2]       [,3]       [,4]       [,5]
+[1,] -0.5061554 -0.5079321 -0.5825407 -0.8450091 -0.4738519
+[2,]  0.3708891  0.6056890  0.7760212  0.7107636  0.4508504
+
+$out
+[1]  4.115274  3.224584  3.920438  4.168341 -4.357819  2.498006
+
+$group
+[1] 1 1 1 4 5 5
+
+$names
+[1] "1" "2" "3" "4" "5"
+
+> op <- par(mfrow =  c(2, 2))
+> bxp(bx.p, xaxt = "n")
+> bxp(bx.p, notch = TRUE, axes = FALSE, pch = 4, boxfill = 1:5)
+Warning in bxp(bx.p, notch = TRUE, axes = FALSE, pch = 4, boxfill = 1:5) :
+  some notches went outside hinges ('box'): maybe set notch=FALSE
+> bxp(bx.p, notch = TRUE, boxfill = "lightblue", frame.plot = FALSE,
++     outline = FALSE, main = "bxp(*, frame.plot= FALSE, outline= FALSE)")
+Warning in bxp(bx.p, notch = TRUE, boxfill = "lightblue", frame.plot = FALSE,  :
+  some notches went outside hinges ('box'): maybe set notch=FALSE
+> bxp(bx.p, notch = TRUE, boxfill = "lightblue", border = 2:6,
++     ylim = c(-4,4), pch = 22, bg = "green", log = "x",
++     main = "... log = 'x', ylim = *")
+Warning in bxp(bx.p, notch = TRUE, boxfill = "lightblue", border = 2:6,  :
+  some notches went outside hinges ('box'): maybe set notch=FALSE
+> par(op)
+> op <- par(mfrow = c(1, 2))
+> 
+> ## single group -- no label
+> boxplot (weight ~ group, data = PlantGrowth, subset = group == "ctrl")
+> ## with label
+> bx <- boxplot(weight ~ group, data = PlantGrowth,
++               subset = group == "ctrl", plot = FALSE)
+> bxp(bx, show.names=TRUE)
+> par(op)
+> 
+> ## passing gap.axis=* to axis(), PR#18109:
+> boxplot(matrix(100*rnorm(1e3), 50, 20),
++         cex.axis = 1.5, gap.axis = -1)# showing *all* labels
+> 
+> z <- split(rnorm(1000), rpois(1000, 2.2))
+> boxplot(z, whisklty = 3, main = "boxplot(z, whisklty = 3)")
+> 
+> ## Colour support similar to plot.default:
+> op <- par(mfrow = 1:2, bg = "light gray", fg = "midnight blue")
+> boxplot(z,   col.axis = "skyblue3", main = "boxplot(*, col.axis=..,main=..)")
+> plot(z[[1]], col.axis = "skyblue3", main =    "plot(*, col.axis=..,main=..)")
+> mtext("par(bg=\"light gray\", fg=\"midnight blue\")",
++       outer = TRUE, line = -1.2)
+> par(op)
+> 
+> ## Mimic S-Plus:
+> splus <- list(boxwex = 0.4, staplewex = 1, outwex = 1, boxfill = "grey40",
++               medlwd = 3, medcol = "white", whisklty = 3, outlty = 1, outpch = NA)
+> boxplot(z, pars = splus)
+> ## Recycled and "sweeping" parameters
+> op <- par(mfrow = c(1,2))
+>  boxplot(z, border = 1:5, lty = 3, medlty = 1, medlwd = 2.5)
+>  boxplot(z, boxfill = 1:3, pch = 1:5, lwd = 1.5, medcol = "white")
+> par(op)
+> ## too many possibilities
+> boxplot(z, boxfill = "light gray", outpch = 21:25, outlty = 2,
++         bg = "pink", lwd = 2,
++         medcol = "dark blue", medcex = 2, medpch = 20)
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("cdplot")
+> ### * cdplot
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: cdplot
+> ### Title: Conditional Density Plots
+> ### Aliases: cdplot cdplot.default cdplot.formula
+> ### Keywords: hplot
+> 
+> ### ** Examples
+> 
+> ## NASA space shuttle o-ring failures
+> fail <- factor(c(2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1,
++                  1, 2, 1, 1, 1, 1, 1),
++                levels = 1:2, labels = c("no", "yes"))
+> temperature <- c(53, 57, 58, 63, 66, 67, 67, 67, 68, 69, 70, 70,
++                  70, 70, 72, 73, 75, 75, 76, 76, 78, 79, 81)
+> 
+> ## CD plot
+> cdplot(fail ~ temperature)
+> cdplot(fail ~ temperature, bw = 2)
+> cdplot(fail ~ temperature, bw = "SJ")
+> 
+> ## compare with spinogram
+> (spineplot(fail ~ temperature, breaks = 3))
+           fail
+temperature no yes
+    [50,60]  0   3
+    (60,70]  8   3
+    (70,80]  7   1
+    (80,90]  1   0
+> 
+> ## highlighting for failures
+> cdplot(fail ~ temperature, ylevels = 2:1)
+> 
+> ## scatter plot with conditional density
+> cdens <- cdplot(fail ~ temperature, plot = FALSE)
+> plot(I(as.numeric(fail) - 1) ~ jitter(temperature, factor = 2),
++      xlab = "Temperature", ylab = "Conditional failure probability")
+> lines(53:81, 1 - cdens[[1]](53:81), col = 2)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("clip")
+> ### * clip
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: clip
+> ### Title: Set Clipping Region
+> ### Aliases: clip
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> x <- rnorm(1000)
+> hist(x, xlim = c(-4,4))
+> usr <- par("usr")
+> clip(usr[1], -2, usr[3], usr[4])
+> hist(x, col = 'red', add = TRUE)
+> clip(2, usr[2], usr[3], usr[4])
+> hist(x, col = 'blue', add = TRUE)
+> do.call("clip", as.list(usr))  # reset to plot region
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("contour")
+> ### * contour
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: contour
+> ### Title: Display Contours
+> ### Aliases: contour contour.default
+> ### Keywords: hplot aplot
+> 
+> ### ** Examples
+> 
+> require(grDevices) # for colours
+> x <- -6:16
+> op <- par(mfrow = c(2, 2))
+> contour(outer(x, x), method = "edge", vfont = c("sans serif", "plain"))
+> z <- outer(x, sqrt(abs(x)), FUN = `/`)
+> image(x, x, z)
+> contour(x, x, z, col = "pink", add = TRUE, method = "edge",
++         vfont = c("sans serif", "plain"))
+> contour(x, x, z, ylim = c(1, 6), method = "simple", labcex = 1,
++         xlab = quote(x[1]), ylab = quote(x[2]))
+> contour(x, x, z, ylim = c(-6, 6), nlevels = 20, lty = 2, method = "simple",
++         main = "20 levels; \"simple\" labelling method")
+> par(op)
+> 
+> ## Passing multiple colours / lty / lwd :
+> op <- par(mfrow = c(1, 2))
+> z <- outer(-9:25, -9:25)
+> ## Using default levels <- pretty(range(z, finite = TRUE), 10),
+> ##  the first and last of which typically are *not* drawn:
+> (levs <- pretty(z, n=10)) # -300 -200 ... 600 700
+ [1] -300 -200 -100    0  100  200  300  400  500  600  700
+> contour(z, col = 1:4)
+> ## Set levels explicitly; show that 'lwd' and 'lty' are recycled as well:
+> contour(z, levels=levs[-c(1,length(levs))], col = 1:5, lwd = 1:3 *1.5, lty = 1:3)
+> par(op)
+> 
+> ## Persian Rug Art:
+> x <- y <- seq(-4*pi, 4*pi, length.out = 27)
+> r <- sqrt(outer(x^2, y^2, `+`))
+> opar <- par(mfrow = c(2, 2), mar = rep(0, 4))
+> for(f in pi^(0:3))
++   contour(cos(r^2)*exp(-r/f),
++           drawlabels = FALSE, axes = FALSE, frame.plot = TRUE)
+> 
+> rx <- range(x <- 10*1:nrow(volcano))
+> ry <- range(y <- 10*1:ncol(volcano))
+> ry <- ry + c(-1, 1) * (diff(rx) - diff(ry))/2
+> tcol <- terrain.colors(12)
+> par(opar); opar <- par(pty = "s", bg = "lightcyan")
+> plot(x = 0, y = 0, type = "n", xlim = rx, ylim = ry, xlab = "", ylab = "")
+> u <- par("usr")
+> rect(u[1], u[3], u[2], u[4], col = tcol[8], border = "red")
+> contour(x, y, volcano, col = tcol[2], lty = "solid", add = TRUE,
++         vfont = c("sans serif", "plain"))
+> title("A Topographic Map of Maunga Whau", font = 4)
+> abline(h = 200*0:4, v = 200*0:4, col = "lightgray", lty = 2, lwd = 0.1)
+> 
+> ## contourLines produces the same contour lines as contour
+> plot(x = 0, y = 0, type = "n", xlim = rx, ylim = ry, xlab = "", ylab = "")
+> u <- par("usr")
+> rect(u[1], u[3], u[2], u[4], col = tcol[8], border = "red")
+> contour(x, y, volcano, col = tcol[1], lty = "solid", add = TRUE,
++         vfont = c("sans serif", "plain"))
+> line.list <- contourLines(x, y, volcano)
+> invisible(lapply(line.list, lines, lwd=3, col=adjustcolor(2, .3)))
+> par(opar)
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("convertXY")
+> ### * convertXY
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: convertXY
+> ### Title: Convert between Graphics Coordinate Systems
+> ### Aliases: grconvertX grconvertY
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> op <- par(omd=c(0.1, 0.9, 0.1, 0.9), mfrow = c(1, 2))
+> plot(1:4)
+> for(tp in c("in", "dev", "ndc", "nfc", "npc", "nic", "lines", "chars"))
++     print(grconvertX(c(1.0, 4.0), "user", tp))
+[1] 1.577778 3.022222
+[1] 113.6 217.6
+[1] 0.2253968 0.4317460
+[1] 0.3134921 0.8293651
+[1] 0.03703704 0.96296296
+[1] 0.1567460 0.4146825
+[1]  7.888889 15.111111
+[1]  7.888889 15.111111
+> par(op)
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("coplot")
+> ### * coplot
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: coplot
+> ### Title: Conditioning Plots
+> ### Aliases: coplot co.intervals
+> ### Keywords: hplot aplot
+> 
+> ### ** Examples
+> 
+> ## Tonga Trench Earthquakes
+> coplot(lat ~ long | depth, data = quakes)
+> given.depth <- co.intervals(quakes$depth, number = 4, overlap = .1)
+> coplot(lat ~ long | depth, data = quakes, given.values = given.depth, rows = 1)
+> 
+> ## Conditioning on 2 variables:
+> ll.dm <- lat ~ long | depth * mag
+> coplot(ll.dm, data = quakes)
+> coplot(ll.dm, data = quakes, number = c(4, 7), show.given = c(TRUE, FALSE))
+> coplot(ll.dm, data = quakes, number = c(3, 7),
++        overlap = c(-.5, .1)) # negative overlap DROPS values
+> 
+> ## given two factors
+> Index <- seq_len(nrow(warpbreaks)) # to get nicer default labels
+> coplot(breaks ~ Index | wool * tension, data = warpbreaks,
++        show.given = 0:1)
+> coplot(breaks ~ Index | wool * tension, data = warpbreaks,
++        col = "red", bg = "pink", pch = 21,
++        bar.bg = c(fac = "light blue"))
+> 
+> ## Example with empty panels:
+> with(data.frame(state.x77), {
++ coplot(Life.Exp ~ Income | Illiteracy * state.region, number = 3,
++        panel = function(x, y, ...) panel.smooth(x, y, span = .8, ...))
++ ## y ~ factor -- not really sensible, but 'show off':
++ coplot(Life.Exp ~ state.region | Income * state.division,
++        panel = panel.smooth)
++ })
+> 
+> 
+> 
+> cleanEx()
+> nameEx("curve")
+> ### * curve
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: curve
+> ### Title: Draw Function Plots
+> ### Aliases: curve plot.function
+> ### Keywords: hplot
+> 
+> ### ** Examples
+> 
+> plot(qnorm) # default range c(0, 1) is appropriate here,
+>             # but end values are -/+Inf and so are omitted.
+> plot(qlogis, main = "The Inverse Logit : qlogis()")
+> abline(h = 0, v = 0:2/2, lty = 3, col = "gray")
+> 
+> curve(sin, -2*pi, 2*pi, xname = "t")
+> curve(tan, xname = "t", add = NA,
++       main = "curve(tan)  --> same x-scale as previous plot")
+> 
+> op <- par(mfrow = c(2, 2))
+> curve(x^3 - 3*x, -2, 2)
+> curve(x^2 - 2, add = TRUE, col = "violet")
+> 
+> ## simple and advanced versions, quite similar:
+> plot(cos, -pi,  3*pi)
+> curve(cos, xlim = c(-pi, 3*pi), n = 1001, col = "blue", add = TRUE)
+> 
+> chippy <- function(x) sin(cos(x)*exp(-x/2))
+> curve(chippy, -8, 7, n = 2001)
+> plot (chippy, -8, -5)
+> 
+> for(ll in c("", "x", "y", "xy"))
++    curve(log(1+x), 1, 100, log = ll, sub = paste0("log = '", ll, "'"))
+> par(op)
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("dotchart")
+> ### * dotchart
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: dotchart
+> ### Title: Cleveland's Dot Plots
+> ### Aliases: dotchart
+> ### Keywords: hplot
+> 
+> ### ** Examples
+> 
+> dotchart(VADeaths, main = "Death Rates in Virginia - 1940")
+> 
+> op <- par(xaxs = "i")  # 0 -- 100%
+> dotchart(t(VADeaths), xlim = c(0,100), bg = "skyblue",
++          main = "Death Rates in Virginia - 1940", xlab = "rate [ % ]",
++          ylab = "Grouping:  Age  x   Urbanity . Gender")
+> par(op)
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("filled.contour")
+> ### * filled.contour
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: filled.contour
+> ### Title: Level (Contour) Plots
+> ### Aliases: filled.contour .filled.contour
+> ### Keywords: hplot aplot
+> 
+> ### ** Examples
+> 
+> require("grDevices") # for colours
+> filled.contour(volcano, asp = 1) # simple
+> 
+> x <- 10*1:nrow(volcano)
+> y <- 10*1:ncol(volcano)
+> filled.contour(x, y, volcano,
++     color.palette = function(n) hcl.colors(n, "terrain"),
++     plot.title = title(main = "The Topography of Maunga Whau",
++     xlab = "Meters North", ylab = "Meters West"),
++     plot.axes = { axis(1, seq(100, 800, by = 100))
++                   axis(2, seq(100, 600, by = 100)) },
++     key.title = title(main = "Height\n(meters)"),
++     key.axes = axis(4, seq(90, 190, by = 10)))  # maybe also asp = 1
+> mtext(paste("filled.contour(.) from", R.version.string),
++       side = 1, line = 4, adj = 1, cex = .66)
+> 
+> # Annotating a filled contour plot
+> a <- expand.grid(1:20, 1:20)
+> b <- matrix(a[,1] + a[,2], 20)
+> filled.contour(x = 1:20, y = 1:20, z = b,
++                plot.axes = { axis(1); axis(2); points(10, 10) })
+> 
+> ## Persian Rug Art:
+> x <- y <- seq(-4*pi, 4*pi, length.out = 27)
+> r <- sqrt(outer(x^2, y^2, `+`))
+> filled.contour(cos(r^2)*exp(-r/(2*pi)), axes = FALSE)
+> ## rather, the key *should* be labeled:
+> filled.contour(cos(r^2)*exp(-r/(2*pi)), frame.plot = FALSE,
++                plot.axes = {})
+> 
+> 
+> 
+> cleanEx()
+> nameEx("fourfoldplot")
+> ### * fourfoldplot
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: fourfoldplot
+> ### Title: Fourfold Plots
+> ### Aliases: fourfoldplot
+> ### Keywords: hplot
+> 
+> ### ** Examples
+> 
+> ## Use the Berkeley admission data as in Friendly (1995).
+> x <- aperm(UCBAdmissions, c(2, 1, 3))
+> dimnames(x)[[2]] <- c("Yes", "No")
+> names(dimnames(x)) <- c("Sex", "Admit?", "Department")
+> stats::ftable(x)
+              Department   A   B   C   D   E   F
+Sex    Admit?                                   
+Male   Yes               512 353 120 138  53  22
+       No                313 207 205 279 138 351
+Female Yes                89  17 202 131  94  24
+       No                 19   8 391 244 299 317
+> 
+> ## Fourfold display of data aggregated over departments, with
+> ## frequencies standardized to equate the margins for admission
+> ## and sex.
+> ## Figure 1 in Friendly (1994).
+> fourfoldplot(marginSums(x, c(1, 2)))
+> 
+> ## Fourfold display of x, with frequencies in each table
+> ## standardized to equate the margins for admission and sex.
+> ## Figure 2 in Friendly (1994).
+> fourfoldplot(x)
+> 
+> ## Fourfold display of x, with frequencies in each table
+> ## standardized to equate the margins for admission. but not
+> ## for sex.
+> ## Figure 3 in Friendly (1994).
+> fourfoldplot(x, margin = 2)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("grid")
+> ### * grid
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: grid
+> ### Title: Add Grid to a Plot
+> ### Aliases: grid
+> ### Keywords: aplot
+> 
+> ### ** Examples
+> 
+> plot(1:3)
+> grid(NA, 5, lwd = 2) # grid only in y-direction
+> 
+> ## maybe change the desired number of tick marks:  par(lab = c(mx, my, 7))
+> op <- par(mfcol = 1:2)
+> with(iris,
++      {
++      plot(Sepal.Length, Sepal.Width, col = as.integer(Species),
++           xlim = c(4, 8), ylim = c(2, 4.5), panel.first = grid(),
++           main = "with(iris,  plot(...., panel.first = grid(), ..) )")
++      plot(Sepal.Length, Sepal.Width, col = as.integer(Species),
++           panel.first = grid(3, lty = 1, lwd = 2),
++           main = "... panel.first = grid(3, lty = 1, lwd = 2), ..")
++      }
++     )
+> par(op)
+> 
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("hist.POSIXt")
+> ### * hist.POSIXt
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: hist.POSIXt
+> ### Title: Histogram of a Date or Date-Time Object
+> ### Aliases: hist.POSIXt hist.Date
+> ### Keywords: chron dplot hplot
+> 
+> ### ** Examples
+> 
+> hist(.leap.seconds, "years", freq = TRUE)
+> brks <- seq(ISOdate(1970, 1, 1), ISOdate(2030, 1, 1), "5 years")
+> hist(.leap.seconds, brks)
+> rug(.leap.seconds, lwd=2)
+> ## show that  'include.lowest' "works"
+> stopifnot(identical(c(2L, rep(1L,11)),
++    hist(brks, brks, plot=FALSE, include.lowest=TRUE )$counts))
+> tools::assertError(verbose=TRUE, ##--> 'breaks' do not span range of 'x'
++    hist(brks, brks, plot=FALSE, include.lowest=FALSE))
+Asserted error: some 'x' not counted; maybe 'breaks' do not span range of 'x'
+> ## The default fuzz in hist.default()  "kills" this, with a "wrong" message:
+> try ( hist(brks[-13] + 1, brks, include.lowest = FALSE) )
+Error in hist.default(unclass(x), unclass(breaks), plot = FALSE, warn.unused = FALSE,  : 
+  some 'x' not counted; maybe 'breaks' do not span range of 'x'
+> ## and decreasing 'fuzz' solves the issue:
+> hb <- hist(brks[-13] + 1, brks, include.lowest = FALSE, fuzz = 1e-10)
+> stopifnot(hb$counts == 1)
+> 
+> ## 100 random dates in a 10-week period
+> random.dates <- as.Date("2001/1/1") + 70*stats::runif(100)
+> hist(random.dates, "weeks", format = "%d %b")
+> 
+> 
+> 
+> cleanEx()
+> nameEx("hist")
+> ### * hist
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: hist
+> ### Title: Histograms
+> ### Aliases: hist hist.default
+> ### Keywords: dplot hplot distribution
+> 
+> ### ** Examples
+> 
+> op <- par(mfrow = c(2, 2))
+> hist(islands)
+> utils::str(hist(islands, col = "gray", labels = TRUE))
+List of 6
+ $ breaks  : num [1:10] 0 2000 4000 6000 8000 10000 12000 14000 16000 18000
+ $ counts  : int [1:9] 41 2 1 1 1 1 0 0 1
+ $ density : num [1:9] 4.27e-04 2.08e-05 1.04e-05 1.04e-05 1.04e-05 ...
+ $ mids    : num [1:9] 1000 3000 5000 7000 9000 11000 13000 15000 17000
+ $ xname   : chr "islands"
+ $ equidist: logi TRUE
+ - attr(*, "class")= chr "histogram"
+> 
+> hist(sqrt(islands), breaks = 12, col = "lightblue", border = "pink")
+> ##-- For non-equidistant breaks, counts should NOT be graphed unscaled:
+> r <- hist(sqrt(islands), breaks = c(4*0:5, 10*3:5, 70, 100, 140),
++           col = "blue1")
+> text(r$mids, r$density, r$counts, adj = c(.5, -.5), col = "blue3")
+> sapply(r[2:3], sum)
+   counts   density 
+48.000000  0.215625 
+> sum(r$density * diff(r$breaks)) # == 1
+[1] 1
+> lines(r, lty = 3, border = "purple") # -> lines.histogram(*)
+> par(op)
+> 
+> require(utils) # for str
+> str(hist(islands, breaks = 12, plot =  FALSE)) #-> 10 (~= 12) breaks
+List of 6
+ $ breaks  : num [1:10] 0 2000 4000 6000 8000 10000 12000 14000 16000 18000
+ $ counts  : int [1:9] 41 2 1 1 1 1 0 0 1
+ $ density : num [1:9] 4.27e-04 2.08e-05 1.04e-05 1.04e-05 1.04e-05 ...
+ $ mids    : num [1:9] 1000 3000 5000 7000 9000 11000 13000 15000 17000
+ $ xname   : chr "islands"
+ $ equidist: logi TRUE
+ - attr(*, "class")= chr "histogram"
+> str(hist(islands, breaks = c(12,20,36,80,200,1000,17000), plot = FALSE))
+List of 6
+ $ breaks  : num [1:7] 12 20 36 80 200 1000 17000
+ $ counts  : int [1:6] 12 11 8 6 4 7
+ $ density : num [1:6] 0.03125 0.014323 0.003788 0.001042 0.000104 ...
+ $ mids    : num [1:6] 16 28 58 140 600 9000
+ $ xname   : chr "islands"
+ $ equidist: logi FALSE
+ - attr(*, "class")= chr "histogram"
+> 
+> hist(islands, breaks = c(12,20,36,80,200,1000,17000), freq = TRUE,
++      main = "WRONG histogram") # and warning
+Warning in plot.histogram(r, freq = freq1, col = col, border = border, angle = angle,  :
+  the AREAS in the plot are wrong -- rather use 'freq = FALSE'
+> ## R >= 4.2.0: no "*.5" labels on y-axis:
+> hist(c(2,3,3,5,5,6,6,6,7))
+> 
+> require(stats)
+> set.seed(14)
+> x <- rchisq(100, df = 4)
+> 
+> ## Histogram with custom x-axis:
+> hist(x, xaxt = "n")
+> axis(1, at = 0:17)
+> 
+> ## Don't show: 
+> op <- par(mfrow = 2:1, mgp = c(1.5, 0.6, 0), mar = .1 + c(3,3:1))
+> ## End(Don't show)
+> ## Comparing data with a model distribution should be done with qqplot()!
+> qqplot(x, qchisq(ppoints(x), df = 4)); abline(0, 1, col = 2, lty = 2)
+> 
+> ## if you really insist on using hist() ... :
+> hist(x, freq = FALSE, ylim = c(0, 0.2))
+> curve(dchisq(x, df = 4), col = 2, lty = 2, lwd = 2, add = TRUE)
+> ## Don't show: 
+> par(op)
+> ## End(Don't show)
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("identify")
+> ### * identify
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: identify
+> ### Title: Identify Points in a Scatter Plot
+> ### Aliases: identify identify.default
+> ### Keywords: iplot
+> 
+> ### ** Examples
+> 
+> ## A function to use identify to select points, and overplot the
+> ## points with another symbol as they are selected
+> identifyPch <- function(x, y = NULL, n = length(x), plot = FALSE, pch = 19, ...)
++ {
++     xy <- xy.coords(x, y); x <- xy$x; y <- xy$y
++     sel <- rep(FALSE, length(x))
++     while(sum(sel) < n) {
++         ans <- identify(x[!sel], y[!sel], labels = which(!sel), n = 1, plot = plot, ...)
++         if(!length(ans)) break
++         ans <- which(!sel)[ans]
++         points(x[ans], y[ans], pch = pch)
++         sel[ans] <- TRUE
++     }
++     ## return indices of selected points
++     which(sel)
++ }
+> 
+> if(dev.interactive()) { ## use it
++   x <- rnorm(50); y <- rnorm(50)
++   plot(x,y); identifyPch(x,y) # how fast to get all?
++ }
+> 
+> 
+> 
+> 
+> cleanEx()
+> nameEx("image")
+> ### * image
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: image
+> ### Title: Display a Color Image
+> ### Aliases: image image.default
+> ### Keywords: hplot aplot
+> 
+> ### ** Examples
+> 
+> require("grDevices") # for colours
+> x <- y <- seq(-4*pi, 4*pi, length.out = 27)
+> r <- sqrt(outer(x^2, y^2, `+`))
+> image(z = z <- cos(r^2)*exp(-r/6), col = gray.colors(33))
+> image(z, axes = FALSE, main = "Math can be beautiful ...",
++       xlab = expression(cos(r^2) * e^{-r/6}))
+> contour(z, add = TRUE, drawlabels = FALSE)
+> 
+> # Volcano data visualized as matrix. Need to transpose and flip
+> # matrix horizontally.
+> image(t(volcano)[ncol(volcano):1,])
+> 
+> # A prettier display of the volcano
+> x <- 10*(1:nrow(volcano))
+> y <- 10*(1:ncol(volcano))
+> image(x, y, volcano, col = hcl.colors(100, "terrain"), axes = FALSE)
+> contour(x, y, volcano, levels = seq(90, 200, by = 5),
++         add = TRUE, col = "brown")
+> axis(1, at = seq(100, 800, by = 100))
+> axis(2, at = seq(100, 600, by = 100))
+> box()
+> title(main = "Maunga Whau Volcano", font.main = 4)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("layout")
+> ### * layout
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: layout
+> ### Title: Specifying Complex Plot Arrangements
+> ### Aliases: layout layout.show lcm
+> ### Keywords: iplot dplot environment
+> 
+> ### ** Examples
+> 
+> def.par <- par(no.readonly = TRUE) # save default, for resetting...
+> 
+> ## divide the device into two rows and two columns
+> ## allocate figure 1 all of row 1
+> ## allocate figure 2 the intersection of column 2 and row 2
+> layout(matrix(c(1,1,0,2), 2, 2, byrow = TRUE))
+> ## show the regions that have been allocated to each plot
+> layout.show(2)
+> 
+> ## divide device into two rows and two columns
+> ## allocate figure 1 and figure 2 as above
+> ## respect relations between widths and heights
+> nf <- layout(matrix(c(1,1,0,2), 2, 2, byrow = TRUE), respect = TRUE)
+> layout.show(nf)
+> 
+> ## create single figure which is 5cm square
+> nf <- layout(matrix(1), widths = lcm(5), heights = lcm(5))
+> layout.show(nf)
+> 
+> 
+> ##-- Create a scatterplot with marginal histograms -----
+> 
+> x <- pmin(3, pmax(-3, stats::rnorm(50)))
+> y <- pmin(3, pmax(-3, stats::rnorm(50)))
+> xhist <- hist(x, breaks = seq(-3,3,0.5), plot = FALSE)
+> yhist <- hist(y, breaks = seq(-3,3,0.5), plot = FALSE)
+> top <- max(c(xhist$counts, yhist$counts))
+> xrange <- c(-3, 3)
+> yrange <- c(-3, 3)
+> nf <- layout(matrix(c(2,0,1,3),2,2,byrow = TRUE), c(3,1), c(1,3), TRUE)
+> layout.show(nf)
+> 
+> par(mar = c(3,3,1,1))
+> plot(x, y, xlim = xrange, ylim = yrange, xlab = "", ylab = "")
+> par(mar = c(0,3,1,1))
+> barplot(xhist$counts, axes = FALSE, ylim = c(0, top), space = 0)
+> par(mar = c(3,0,1,1))
+> barplot(yhist$counts, axes = FALSE, xlim = c(0, top), space = 0, horiz = TRUE)
+> 
+> par(def.par)  #- reset to default
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("legend")
+> ### * legend
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: legend
+> ### Title: Add Legends to Plots
+> ### Aliases: legend
+> ### Keywords: aplot
+> 
+> ### ** Examples
+> 
+> ## Run the example in '?matplot' or the following:
+> leg.txt <- c("Setosa     Petals", "Setosa     Sepals",
++              "Versicolor Petals", "Versicolor Sepals")
+> y.leg <- c(4.5, 3, 2.1, 1.4, .7)
+> cexv  <- c(1.2, 1, 4/5, 2/3, 1/2)
+> matplot(c(1, 8), c(0, 4.5), type = "n", xlab = "Length", ylab = "Width",
++         main = "Petal and Sepal Dimensions in Iris Blossoms")
+> for (i in seq(cexv)) {
++   text  (1, y.leg[i] - 0.1, paste("cex=", formatC(cexv[i])), cex = 0.8, adj = 0)
++   legend(3, y.leg[i], leg.txt, pch = "sSvV", col = c(1, 3), cex = cexv[i])
++ }
+> ## cex *vector* [in R <= 3.5.1 has 'if(xc < 0)' w/ length(xc) == 2]
+> legend("right", leg.txt, pch = "sSvV", col = c(1, 3),
++        cex = 1+(-1:2)/8, trace = TRUE)# trace: show computed lengths & coords
+  xchar= 0.1723,0.1969,0.2215,0.2461 ; (yextra, ychar)= 0,0,0,0, 0.2355,0.2355,0.2355,0.2355 
+  rect2(5.559,2.839, w=2.721, h=1.177, ...)
+  points2( 5.732 5.756 5.781 5.805 , 2.603 2.368 2.132 1.897 , pch= s S v V , ...) 
+> 
+> ## 'merge = TRUE' for merging lines & points:
+> x <- seq(-pi, pi, length.out = 65)
+> for(reverse in c(FALSE, TRUE)) {  ## normal *and* reverse axes:
++   F <- if(reverse) rev else identity
++   plot(x, sin(x), type = "l", col = 3, lty = 2,
++        xlim = F(range(x)), ylim = F(c(-1.2, 1.8)))
++   points(x, cos(x), pch = 3, col = 4)
++   lines(x, tan(x), type = "b", lty = 1, pch = 4, col = 6)
++   title("legend('top', lty = c(2, -1, 1), pch = c(NA, 3, 4), merge = TRUE)",
++         cex.main = 1.1)
++   legend("top", c("sin", "cos", "tan"), col = c(3, 4, 6),
++        text.col = "green4", lty = c(2, -1, 1), pch = c(NA, 3, 4),
++        merge = TRUE, bg = "gray90", trace=TRUE)
++   ## Don't show: 
++  if(!reverse && interactive()) {
++     cat("waiting .."); Sys.sleep(2); cat(" done\n") }
++   
++ ## End(Don't show)
++ } # for(..)
+  xchar= 0.1767,0.1767,0.1767 ; (yextra, ychar)= 0,0,0, 0.1256,0.1256,0.1256 
+  rect2(-0.4885,1.92, w=0.977, h=0.5023, ...)
+  segments2( -0.4355 -0.4355 , 1.794 1.543 , dx= 0.3534 0.3534 , dy=0, ...) 
+  points2( -0.2588 -0.2588 , 1.669 1.543 , pch= 3 4 , ...) 
+  xchar= -0.1767,-0.1767,-0.1767 ; (yextra, ychar)= -0,-0,-0, -0.1256,-0.1256,-0.1256 
+  rect2(0.4885,-1.32, w=-0.977, h=-0.5023, ...)
+  segments2( 0.4355 0.4355 , -1.194 -0.9433 , dx= -0.3534 -0.3534 , dy=0, ...) 
+  points2( 0.2588 0.2588 , -1.069 -0.9433 , pch= 3 4 , ...) 
+> 
+> ## right-justifying a set of labels: thanks to Uwe Ligges
+> x <- 1:5; y1 <- 1/x; y2 <- 2/x
+> plot(rep(x, 2), c(y1, y2), type = "n", xlab = "x", ylab = "y")
+> lines(x, y1); lines(x, y2, lty = 2)
+> temp <- legend("topright", legend = c(" ", " "),
++                text.width = strwidth("1,000,000"),
++                lty = 1:2, xjust = 1, yjust = 1, inset = 1/10,
++                title = "Line Types", title.cex = 0.5, trace=TRUE)
+  xchar= 0.1125,0.1125 ; (yextra, ychar)= 0,0, 0.07535,0.07535 
+  rect2(3.666,1.878, w=1.062, h=0.2637, ...)
+  segments2( 3.778 3.778 , 1.765 1.689 , dx= 0.225 0.225 , dy=0, ...) 
+> text(temp$rect$left + temp$rect$w, temp$text$y,
++      c("1,000", "1,000,000"), pos = 2)
+> 
+> 
+> ##--- log scaled Examples ------------------------------
+> leg.txt <- c("a one", "a two")
+> 
+> par(mfrow = c(2, 2))
+> for(ll in c("","x","y","xy")) {
++   plot(2:10, log = ll, main = paste0("log = '", ll, "'"))
++   abline(1, 1)
++   lines(2:3, 3:4, col = 2)
++   points(2, 2, col = 3)
++   rect(2, 3, 3, 2, col = 4)
++   text(c(3,3), 2:3, c("rect(2,3,3,2, col=4)",
++                       "text(c(3,3),2:3,\"c(rect(...)\")"), adj = c(0, 0.3))
++   legend(list(x = 2,y = 8), legend = leg.txt, col = 2:3, pch = 1:2,
++          lty = 1)  #, trace = TRUE)
++ } #      ^^^^^^^ to force lines -> automatic merge=TRUE
+> par(mfrow = c(1,1))
+> 
+> ##-- Math expressions:  ------------------------------
+> x <- seq(-pi, pi, length.out = 65)
+> plot(x, sin(x), type = "l", col = 2, xlab = expression(phi),
++      ylab = expression(f(phi)))
+> abline(h = -1:1, v = pi/2*(-6:6), col = "gray90")
+> lines(x, cos(x), col = 3, lty = 2)
+> ex.cs1 <- expression(plain(sin) * phi,  paste("cos", phi))  # 2 ways
+> utils::str(legend(-3, .9, ex.cs1, lty = 1:2, plot = FALSE,
++            adj = c(0, 0.6)))  # adj y !
+List of 2
+ $ rect:List of 4
+  ..$ w   : num 1.2
+  ..$ h   : num 0.251
+  ..$ left: num -3
+  ..$ top : num 0.9
+ $ text:List of 2
+  ..$ x: num [1:2] -2.29 -2.29
+  ..$ y: num [1:2] 0.816 0.733
+> legend(-3, 0.9, ex.cs1, lty = 1:2, col = 2:3,  adj = c(0, 0.6))
+> 
+> require(stats)
+> x <- rexp(100, rate = .5)
+> hist(x, main = "Mean and Median of a Skewed Distribution")
+> abline(v = mean(x),   col = 2, lty = 2, lwd = 2)
+> abline(v = median(x), col = 3, lty = 3, lwd = 2)
+> ex12 <- expression(bar(x) == sum(over(x[i], n), i == 1, n),
++                    hat(x) == median(x[i], i == 1, n))
+> utils::str(legend(4.1, 30, ex12, col = 2:3, lty = 2:3, lwd = 2))
+List of 2
+ $ rect:List of 4
+  ..$ w   : num 4.27
+  ..$ h   : num 6.78
+  ..$ left: num 4.1
+  ..$ top : num 30
+ $ text:List of 2
+  ..$ x: num [1:2] 5.22 5.22
+  ..$ y: num [1:2] 27.3 24.6
+> 
+> ## 'Filled' boxes -- see also example(barplot) which may call legend(*, fill=)
+> barplot(VADeaths)
+> legend("topright", rownames(VADeaths), fill = gray.colors(nrow(VADeaths)))
+> 
+> ## Using 'ncol'
+> x <- 0:64/64
+> for(R in c(identity, rev)) { # normal *and* reverse x-axis works fine:
++   xl <- R(range(x)); x1 <- xl[1]
++ matplot(x, outer(x, 1:7, function(x, k) sin(k * pi * x)), xlim=xl,
++         type = "o", col = 1:7, ylim = c(-1, 1.5), pch = "*")
++ op <- par(bg = "antiquewhite1")
++ legend(x1, 1.5, paste("sin(", 1:7, "pi * x)"), col = 1:7, lty = 1:7,
++        pch = "*", ncol = 4, cex = 0.8)
++ legend("bottomright", paste("sin(", 1:7, "pi * x)"), col = 1:7, lty = 1:7,
++        pch = "*", cex = 0.8)
++ legend(x1, -.1, paste("sin(", 1:4, "pi * x)"), col = 1:4, lty = 1:4,
++        ncol = 2, cex = 0.8)
++ legend(x1, -.4, paste("sin(", 5:7, "pi * x)"), col = 4:6,  pch = 24,
++        ncol = 2, cex = 1.5, lwd = 2, pt.bg = "pink", pt.cex = 1:3)
++ par(op)
++   ## Don't show: 
++  if(interactive() && identical(R, identity)) {
++      cat("waiting .."); Sys.sleep(2); cat(" done\n") }
++ ## End(Don't show)
++ } # for(..)
+> 
+> ## point covering line :
+> y <- sin(3*pi*x)
+> plot(x, y, type = "l", col = "blue",
++     main = "points with bg & legend(*, pt.bg)")
+> points(x, y, pch = 21, bg = "white")
+> legend(.4,1, "sin(c x)", pch = 21, pt.bg = "white", lty = 1, col = "blue")
+> 
+> ## legends with titles at different locations
+> plot(x, y, type = "n")
+> legend("bottomright", "(x,y)", pch=1, title= "bottomright")
+> legend("bottom",      "(x,y)", pch=1, title= "bottom")
+> legend("bottomleft",  "(x,y)", pch=1, title= "bottomleft")
+> legend("left",        "(x,y)", pch=1, title= "left")
+> legend("topleft",     "(x,y)", pch=1, title= "topleft, inset = .05", inset = .05)
+> legend("top",         "(x,y)", pch=1, title= "top")
+> legend("topright",    "(x,y)", pch=1, title= "topright, inset = .02",inset = .02)
+> legend("right",       "(x,y)", pch=1, title= "right")
+> legend("center",      "(x,y)", pch=1, title= "center")
+> 
+> # using text.font (and text.col):
+> op <- par(mfrow = c(2, 2), mar = rep(2.1, 4))
+> c6 <- terrain.colors(10)[1:6]
+> for(i in 1:4) {
++    plot(1, type = "n", axes = FALSE, ann = FALSE); title(paste("text.font =",i))
++    legend("top", legend = LETTERS[1:6], col = c6,
++           ncol = 2, cex = 2, lwd = 3, text.font = i, text.col = c6)
++ }
+> par(op)
+> 
+> # using text.width for several columns
+> plot(1, type="n")
+> legend("topleft", c("This legend", "has", "equally sized", "columns."),
++        pch = 1:4, ncol = 4)
+> legend("bottomleft", c("This legend", "has", "optimally sized", "columns."),
++        pch = 1:4, ncol = 4, text.width = NA)
+> legend("right", letters[1:4], pch = 1:4, ncol = 4,
++        text.width = 1:4 / 50)
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("lines")
+> ### * lines
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: lines
+> ### Title: Add Connected Line Segments to a Plot
+> ### Aliases: lines lines.default
+> ### Keywords: aplot
+> 
+> ### ** Examples
+> 
+> # draw a smooth line through a scatter plot
+> plot(cars, main = "Stopping Distance versus Speed")
+> lines(stats::lowess(cars))
+> 
+> 
+> 
+> cleanEx()
+> nameEx("matplot")
+> ### * matplot
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: matplot
+> ### Title: Plot Columns of Matrices
+> ### Aliases: matplot matpoints matlines
+> ### Keywords: hplot aplot array
+> 
+> ### ** Examples
+> 
+> require(grDevices)
+> matplot((-4:5)^2, main = "Quadratic") # almost identical to plot(*)
+> sines <- outer(1:20, 1:4, function(x, y) sin(x / 20 * pi * y))
+> matplot(sines, pch = 1:4, type = "o", col = rainbow(ncol(sines)))
+> matplot(sines, type = "b", pch = 21:23, col = 2:5, bg = 2:5,
++         main = "matplot(...., pch = 21:23, bg = 2:5)")
+> 
+> x <- 0:50/50
+> matplot(x, outer(x, 1:8, function(x, k) sin(k*pi * x)),
++         ylim = c(-2,2), type = "plobcsSh",
++         main= "matplot(,type = \"plobcsSh\" )")
+> ## pch & type =  vector of 1-chars :
+> matplot(x, outer(x, 1:4, function(x, k) sin(k*pi * x)),
++         pch = letters[1:4], type = c("b","p","o"))
+> 
+> lends <- c("round","butt","square")
+> matplot(matrix(1:12, 4), type="c", lty=1, lwd=10, lend=lends)
+> text(cbind(2.5, 2*c(1,3,5)-.4), lends, col= 1:3, cex = 1.5)
+> 
+> table(iris$Species) # is data.frame with 'Species' factor
+
+    setosa versicolor  virginica 
+        50         50         50 
+> iS <- iris$Species == "setosa"
+> iV <- iris$Species == "versicolor"
+> op <- par(bg = "bisque")
+> matplot(c(1, 8), c(0, 4.5), type =  "n", xlab = "Length", ylab = "Width",
++         main = "Petal and Sepal Dimensions in Iris Blossoms")
+> matpoints(iris[iS,c(1,3)], iris[iS,c(2,4)], pch = "sS", col = c(2,4))
+> matpoints(iris[iV,c(1,3)], iris[iV,c(2,4)], pch = "vV", col = c(2,4))
+> legend(1, 4, c("    Setosa Petals", "    Setosa Sepals",
++                "Versicolor Petals", "Versicolor Sepals"),
++        pch = "sSvV", col = rep(c(2,4), 2))
+> 
+> nam.var <- colnames(iris)[-5]
+> nam.spec <- as.character(iris[1+50*0:2, "Species"])
+> iris.S <- array(NA, dim = c(50,4,3),
++                 dimnames = list(NULL, nam.var, nam.spec))
+> for(i in 1:3) iris.S[,,i] <- data.matrix(iris[1:50+50*(i-1), -5])
+> 
+> matplot(iris.S[, "Petal.Length",], iris.S[, "Petal.Width",], pch = "SCV",
++         col = rainbow(3, start = 0.8, end = 0.1),
++         sub = paste(c("S", "C", "V"), dimnames(iris.S)[[3]],
++                     sep = "=", collapse= ",  "),
++         main = "Fisher's Iris Data")
+> par(op)
+> 
+> ## 'x' a "Date" vector :
+> nd <- length(dv <- seq(as.Date("1959-02-21"), by = "weeks", length.out = 100))
+> mSC <- cbind(I=1, sin=sin(pi*(1:nd)/8), cos=cos(pi*(1:nd)/8))
+> matplot(dv, mSC, type = "b", main = "matplot(<Date>, y)")
+> 
+> ## 'x' a "POSIXct" date-time vector :
+> ct <- seq(c(ISOdate(2000,3,20)), by = "15 mins", length.out = 100)
+> matplot(ct, mSC, type = "b", main = "matplot(<POSIXct>, y)")
+> ## or the same with even more axis flexibility:
+> matplot(ct, mSC, type = "b", main = "matplot(<POSIXct>, y)", xaxt="n")
+> Axis(ct, side=1, at = ct[1+4*(0:24)])
+> 
+> ## Also works for data frame columns:
+> matplot(iris[1:50,1:4])
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("mosaicplot")
+> ### * mosaicplot
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: mosaicplot
+> ### Title: Mosaic Plots
+> ### Aliases: mosaicplot mosaicplot.default mosaicplot.formula
+> ### Keywords: hplot
+> 
+> ### ** Examples
+> 
+> require(stats)
+> mosaicplot(Titanic, main = "Survival on the Titanic", color = TRUE)
+> ## Formula interface for tabulated data:
+> mosaicplot(~ Sex + Age + Survived, data = Titanic, color = TRUE)
+> 
+> mosaicplot(HairEyeColor, shade = TRUE)
+> ## Independence model of hair and eye color and sex.  Indicates that
+> ## there are more blue eyed blonde females than expected in the case
+> ## of independence and too few brown eyed blonde females.
+> ## The corresponding model is:
+> fm <- loglin(HairEyeColor, list(1, 2, 3))
+2 iterations: deviation 5.684342e-14 
+> pchisq(fm$pearson, fm$df, lower.tail = FALSE)
+[1] 5.320872e-23
+> 
+> mosaicplot(HairEyeColor, shade = TRUE, margin = list(1:2, 3))
+> ## Model of joint independence of sex from hair and eye color.  Males
+> ## are underrepresented among people with brown hair and eyes, and are
+> ## overrepresented among people with brown hair and blue eyes.
+> ## The corresponding model is:
+> fm <- loglin(HairEyeColor, list(1:2, 3))
+2 iterations: deviation 5.684342e-14 
+> pchisq(fm$pearson, fm$df, lower.tail = FALSE)
+[1] 0.1891745
+> 
+> ## Formula interface for raw data: visualize cross-tabulation of numbers
+> ## of gears and carburettors in Motor Trend car data.
+> mosaicplot(~ gear + carb, data = mtcars, color = TRUE, las = 1)
+> # color recycling
+> mosaicplot(~ gear + carb, data = mtcars, color = 2:3, las = 1)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("mtext")
+> ### * mtext
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: mtext
+> ### Title: Write Text into the Margins of a Plot
+> ### Aliases: mtext
+> ### Keywords: aplot
+> 
+> ### ** Examples
+> 
+> plot(1:10, (-4:5)^2, main = "Parabola Points", xlab = "xlab")
+> mtext("10 of them")
+> for(s in 1:4)
++     mtext(paste("mtext(..., line= -1, {side, col, font} = ", s,
++           ", cex = ", (1+s)/2, ")"), line = -1,
++           side = s, col = s, font = s, cex = (1+s)/2)
+> mtext("mtext(..., line= -2)", line = -2)
+> mtext("mtext(..., line= -2, adj = 0)", line = -2, adj = 0)
+> ##--- log axis :
+> plot(1:10, exp(1:10), log = "y", main = "log =\"y\"", xlab = "xlab")
+> for(s in 1:4) mtext(paste("mtext(...,side=", s ,")"), side = s)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("pairs")
+> ### * pairs
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: pairs
+> ### Title: Scatterplot Matrices
+> ### Aliases: pairs pairs.default pairs.formula
+> ### Keywords: hplot
+> 
+> ### ** Examples
+> 
+> pairs(iris[1:4], main = "Anderson's Iris Data -- 3 species",
++       pch = 21, bg = c("red", "green3", "blue")[unclass(iris$Species)])
+> 
+> ## formula method, "graph" layout (row 1 at bottom):
+> pairs(~ Fertility + Education + Catholic, data = swiss, row1attop=FALSE,
++       subset = Education < 20, main = "Swiss data, Education < 20")
+> 
+> pairs(USJudgeRatings, gap=1/10) # (gap: not wasting plotting area)
+> ## show only lower triangle (and suppress labeling for whatever reason):
+> pairs(USJudgeRatings, text.panel = NULL, upper.panel = NULL)
+> 
+> ## put histograms on the diagonal
+> panel.hist <- function(x, ...)
++ {
++     usr <- par("usr")
++     par(usr = c(usr[1:2], 0, 1.5) )
++     h <- hist(x, plot = FALSE)
++     breaks <- h$breaks; nB <- length(breaks)
++     y <- h$counts; y <- y/max(y)
++     rect(breaks[-nB], 0, breaks[-1], y, col = "cyan", ...)
++ }
+> pairs(USJudgeRatings[1:5], panel = panel.smooth,
++       cex = 1.5, pch = 24, bg = "light blue", horOdd=TRUE,
++       diag.panel = panel.hist, cex.labels = 2, font.labels = 2)
+> 
+> ## put (absolute) correlations on the upper panels,
+> ## with size proportional to the correlations.
+> panel.cor <- function(x, y, digits = 2, prefix = "", cex.cor, ...)
++ {
++     par(usr = c(0, 1, 0, 1))
++     r <- abs(cor(x, y))
++     txt <- format(c(r, 0.123456789), digits = digits)[1]
++     txt <- paste0(prefix, txt)
++     if(missing(cex.cor)) cex.cor <- 0.8/strwidth(txt)
++     text(0.5, 0.5, txt, cex = cex.cor * r)
++ }
+> pairs(USJudgeRatings, lower.panel = panel.smooth, upper.panel = panel.cor,
++       gap=0, row1attop=FALSE)
+> 
+> pairs(iris[-5], log = "xy") # plot all variables on log scale
+> pairs(iris, log = 1:4, # log the first four
++       main = "Lengths and Widths in [log]", line.main=1.5, oma=c(2,2,3,2))
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("panel.smooth")
+> ### * panel.smooth
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: panel.smooth
+> ### Title: Simple Panel Plot
+> ### Aliases: panel.smooth
+> ### Keywords: hplot dplot
+> 
+> ### ** Examples
+> 
+> pairs(swiss, panel = panel.smooth, pch = ".")  # emphasize the smooths
+> pairs(swiss, panel = panel.smooth, lwd = 2, cex = 1.5, col = 4)  # hmm...
+> 
+> 
+> 
+> cleanEx()
+> nameEx("par")
+> ### * par
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: par
+> ### Title: Set or Query Graphical Parameters
+> ### Aliases: par .Pars 'graphical parameter' 'graphical parameters'
+> ### Keywords: iplot dplot environment
+> 
+> ### ** Examples
+> 
+> op <- par(mfrow = c(2, 2), # 2 x 2 pictures on one plot
++           pty = "s")       # square plotting region,
+>                            # independent of device size
+> 
+> ## At end of plotting, reset to previous settings:
+> par(op)
+> 
+> ## Alternatively,
+> op <- par(no.readonly = TRUE) # the whole list of settable par's.
+> ## do lots of plotting and par(.) calls, then reset:
+> par(op)
+> ## Note this is not in general good practice
+> 
+> par("ylog") # FALSE
+[1] FALSE
+> plot(1 : 12, log = "y")
+> par("ylog") # TRUE
+[1] TRUE
+> 
+> plot(1:2, xaxs = "i") # 'inner axis' w/o extra space
+> par(c("usr", "xaxp"))
+$usr
+[1] 1.00 2.00 0.96 2.04
+
+$xaxp
+[1] 1 2 5
+
+> 
+> ( nr.prof <-
++ c(prof.pilots = 16, lawyers = 11, farmers = 10, salesmen = 9, physicians = 9,
++   mechanics = 6, policemen = 6, managers = 6, engineers = 5, teachers = 4,
++   housewives = 3, students = 3, armed.forces = 1))
+ prof.pilots      lawyers      farmers     salesmen   physicians    mechanics 
+          16           11           10            9            9            6 
+   policemen     managers    engineers     teachers   housewives     students 
+           6            6            5            4            3            3 
+armed.forces 
+           1 
+> par(las = 3)
+> barplot(rbind(nr.prof)) # R 0.63.2: shows alignment problem
+> par(las = 0)  # reset to default
+> 
+> require(grDevices) # for gray
+> ## 'fg' use:
+> plot(1:12, type = "b", main = "'fg' : axes, ticks and box in gray",
++      fg = gray(0.7), bty = "7" , sub = R.version.string)
+> 
+> ex <- function() {
++    old.par <- par(no.readonly = TRUE) # all par settings which
++                                       # could be changed.
++    on.exit(par(old.par))
++    ## ...
++    ## ... do lots of par() settings and plots
++    ## ...
++    invisible() #-- now,  par(old.par)  will be executed
++ }
+> ex()
+> 
+> ## Line types
+> showLty <- function(ltys, xoff = 0, ...) {
++    stopifnot((n <- length(ltys)) >= 1)
++    op <- par(mar = rep(.5,4)); on.exit(par(op))
++    plot(0:1, 0:1, type = "n", axes = FALSE, ann = FALSE)
++    y <- (n:1)/(n+1)
++    clty <- as.character(ltys)
++    mytext <- function(x, y, txt)
++       text(x, y, txt, adj = c(0, -.3), cex = 0.8, ...)
++    abline(h = y, lty = ltys, ...); mytext(xoff, y, clty)
++    y <- y - 1/(3*(n+1))
++    abline(h = y, lty = ltys, lwd = 2, ...)
++    mytext(1/8+xoff, y, paste(clty," lwd = 2"))
++ }
+> showLty(c("solid", "dashed", "dotted", "dotdash", "longdash", "twodash"))
+> par(new = TRUE)  # the same:
+> showLty(c("solid", "44", "13", "1343", "73", "2262"), xoff = .2, col = 2)
+> showLty(c("11", "22", "33", "44",   "12", "13", "14",   "21", "31"))
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("persp")
+> ### * persp
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: persp
+> ### Title: Perspective Plots
+> ### Aliases: persp persp.default
+> ### Keywords: hplot aplot
+> 
+> ### ** Examples
+> 
+> require(grDevices) # for trans3d
+> ## More examples in  demo(persp) !!
+> ##                   -----------
+> 
+> # (1) The Obligatory Mathematical surface.
+> #     Rotated sinc function.
+> 
+> x <- seq(-10, 10, length.out = 30)
+> y <- x
+> f <- function(x, y) { r <- sqrt(x^2+y^2); 10 * sin(r)/r }
+> z <- outer(x, y, f)
+> z[is.na(z)] <- 1
+> op <- par(bg = "white")
+> persp(x, y, z, theta = 30, phi = 30, expand = 0.5, col = "lightblue")
+> persp(x, y, z, theta = 30, phi = 30, expand = 0.5, col = "lightblue",
++       ltheta = 120, shade = 0.75, ticktype = "detailed",
++       xlab = "X", ylab = "Y", zlab = "Sinc( r )"
++ ) -> res
+> round(res, 3)
+      [,1]   [,2]   [,3]   [,4]
+[1,] 0.087 -0.025  0.043 -0.043
+[2,] 0.050  0.043 -0.075  0.075
+[3,] 0.000  0.074  0.042 -0.042
+[4,] 0.000 -0.273 -2.890  3.890
+> 
+> # (2) Add to existing persp plot - using trans3d() :
+> 
+> xE <- c(-10,10); xy <- expand.grid(xE, xE)
+> points(trans3d(xy[,1], xy[,2], 6, pmat = res), col = 2, pch = 16)
+> lines (trans3d(x, y = 10, z = 6 + sin(x), pmat = res), col = 3)
+> 
+> phi <- seq(0, 2*pi, length.out = 201)
+> r1 <- 7.725 # radius of 2nd maximum
+> xr <- r1 * cos(phi)
+> yr <- r1 * sin(phi)
+> lines(trans3d(xr,yr, f(xr,yr), res), col = "pink", lwd = 2)
+> ## (no hidden lines)
+> 
+> # (3) Visualizing a simple DEM model
+> 
+> z <- 2 * volcano        # Exaggerate the relief
+> x <- 10 * (1:nrow(z))   # 10 meter spacing (S to N)
+> y <- 10 * (1:ncol(z))   # 10 meter spacing (E to W)
+> ## Don't draw the grid lines :  border = NA
+> par(bg = "slategray")
+> persp(x, y, z, theta = 135, phi = 30, col = "green3", scale = FALSE,
++       ltheta = -120, shade = 0.75, border = NA, box = FALSE)
+> 
+> # (4) Surface colours corresponding to z-values
+> 
+> par(bg = "white")
+> x <- seq(-1.95, 1.95, length.out = 30)
+> y <- seq(-1.95, 1.95, length.out = 35)
+> z <- outer(x, y, function(a, b) a*b^2)
+> nrz <- nrow(z)
+> ncz <- ncol(z)
+> # Create a function interpolating colors in the range of specified colors
+> jet.colors <- colorRampPalette( c("blue", "green") )
+> # Generate the desired number of colors from this palette
+> nbcol <- 100
+> color <- jet.colors(nbcol)
+> # Compute the z-value at the facet centres
+> zfacet <- z[-1, -1] + z[-1, -ncz] + z[-nrz, -1] + z[-nrz, -ncz]
+> # Recode facet z-values into color indices
+> facetcol <- cut(zfacet, nbcol)
+> persp(x, y, z, col = color[facetcol], phi = 30, theta = -30)
+> 
+> par(op)
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("pie")
+> ### * pie
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: pie
+> ### Title: Pie Charts
+> ### Aliases: pie
+> ### Keywords: hplot
+> 
+> ### ** Examples
+> 
+> require(grDevices)
+> pie(rep(1, 24), col = rainbow(24), radius = 0.9)
+> 
+> pie.sales <- c(0.12, 0.3, 0.26, 0.16, 0.04, 0.12)
+> names(pie.sales) <- c("Blueberry", "Cherry",
++     "Apple", "Boston Cream", "Other", "Vanilla Cream")
+> pie(pie.sales) # default colours
+> pie(pie.sales, col = c("purple", "violetred1", "green3",
++                        "cornsilk", "cyan", "white"))
+> pie(pie.sales, col = gray(seq(0.4, 1.0, length.out = 6)))
+> pie(pie.sales, density = 10, angle = 15 + 10 * 1:6)
+> pie(pie.sales, clockwise = TRUE, main = "pie(*, clockwise = TRUE)")
+> segments(0, 0, 0, 1, col = "red", lwd = 2)
+> text(0, 1, "init.angle = 90", col = "red")
+> 
+> n <- 200
+> pie(rep(1, n), labels = "", col = rainbow(n), border = NA,
++     main = "pie(*, labels=\"\", col=rainbow(n), border=NA,..")
+> 
+> ## Another case showing pie() is rather fun than science:
+> ## (original by FinalBackwardsGlance on http://imgur.com/gallery/wWrpU4X)
+> pie(c(Sky = 78, "Sunny side of pyramid" = 17, "Shady side of pyramid" = 5),
++     init.angle = 315, col = c("deepskyblue", "yellow", "yellow3"), border = FALSE)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("plot.dataframe")
+> ### * plot.dataframe
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: plot.data.frame
+> ### Title: Plot Method for Data Frames
+> ### Aliases: plot.data.frame
+> ### Keywords: hplot methods
+> 
+> ### ** Examples
+> 
+> plot(OrchardSprays[1], method = "jitter")
+> plot(OrchardSprays[c(4,1)])
+> plot(OrchardSprays)
+> 
+> plot(iris)
+> plot(iris[5:4])
+> plot(women)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("plot.default")
+> ### * plot.default
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: plot.default
+> ### Title: The Default Scatterplot Function
+> ### Aliases: plot.default plot
+> ### Keywords: hplot
+> 
+> ### ** Examples
+> 
+> Speed <- cars$speed
+> Distance <- cars$dist
+> plot(Speed, Distance, panel.first = grid(8, 8),
++      pch = 0, cex = 1.2, col = "blue")
+> plot(Speed, Distance,
++      panel.first = lines(stats::lowess(Speed, Distance), lty = "dashed"),
++      pch = 0, cex = 1.2, col = "blue")
+> 
+> ## Show the different plot types
+> x <- 0:12
+> y <- sin(pi/5 * x)
+> op <- par(mfrow = c(3,3), mar = .1+ c(2,2,3,1))
+> for (tp in c("p","l","b",  "c","o","h",  "s","S","n")) {
++    plot(y ~ x, type = tp, main = paste0("plot(*, type = \"", tp, "\")"))
++    if(tp == "S") {
++       lines(x, y, type = "s", col = "red", lty = 2)
++       mtext("lines(*, type = \"s\", ...)", col = "red", cex = 0.8)
++    }
++ }
+> par(op)
+> 
+> ##--- Log-Log Plot  with  custom axes
+> lx <- seq(1, 5, length.out = 41)
+> yl <- expression(e^{-frac(1,2) * {log[10](x)}^2})
+> y <- exp(-.5*lx^2)
+> op <- par(mfrow = c(2,1), mar = par("mar")-c(1,0,2,0), mgp = c(2, .7, 0))
+> plot(10^lx, y, log = "xy", type = "l", col = "purple",
++      main = "Log-Log plot", ylab = yl, xlab = "x")
+> plot(10^lx, y, log = "xy", type = "o", pch = ".", col = "forestgreen",
++      main = "Log-Log plot with custom axes", ylab = yl, xlab = "x",
++      axes = FALSE, frame.plot = TRUE)
+> my.at <- 10^(1:5)
+> axis(1, at = my.at, labels = formatC(my.at, format = "fg"))
+> e.y <- -5:-1 ; at.y <- 10^e.y
+> axis(2, at = at.y, col.axis = "red", las = 1,
++      labels = as.expression(lapply(e.y, function(E) bquote(10^.(E)))))
+> par(op)
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("plot.design")
+> ### * plot.design
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: plot.design
+> ### Title: Plot Univariate Effects of a Design or Model
+> ### Aliases: plot.design
+> ### Keywords: hplot
+> 
+> ### ** Examples
+> 
+> require(stats)
+> plot.design(warpbreaks)  # automatic for data frame with one numeric var.
+> 
+> Form <- breaks ~ wool + tension
+> summary(fm1 <- aov(Form, data = warpbreaks))
+            Df Sum Sq Mean Sq F value  Pr(>F)   
+wool         1    451   450.7   3.339 0.07361 . 
+tension      2   2034  1017.1   7.537 0.00138 **
+Residuals   50   6748   135.0                   
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+> plot.design(       Form, data = warpbreaks, col = 2)  # same as above
+> 
+> ## More than one y :
+> utils::str(esoph)
+'data.frame':	88 obs. of  5 variables:
+ $ agegp    : Ord.factor w/ 6 levels "25-34"<"35-44"<..: 1 1 1 1 1 1 1 1 1 1 ...
+ $ alcgp    : Ord.factor w/ 4 levels "0-39g/day"<"40-79"<..: 1 1 1 1 2 2 2 2 3 3 ...
+ $ tobgp    : Ord.factor w/ 4 levels "0-9g/day"<"10-19"<..: 1 2 3 4 1 2 3 4 1 2 ...
+ $ ncases   : num  0 0 0 0 0 0 0 0 0 0 ...
+ $ ncontrols: num  40 10 6 5 27 7 4 7 2 1 ...
+> plot.design(esoph) ## two plots; if interactive you are "ask"ed
+> 
+> ## or rather, compare mean and median:
+> op <- par(mfcol = 1:2)
+> plot.design(ncases/ncontrols ~ ., data = esoph, ylim = c(0, 0.8))
+> plot.design(ncases/ncontrols ~ ., data = esoph, ylim = c(0, 0.8),
++             fun = median)
+> par(op)
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("plot.factor")
+> ### * plot.factor
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: plot.factor
+> ### Title: Plotting Factor Variables
+> ### Aliases: plot.factor
+> ### Keywords: hplot
+> 
+> ### ** Examples
+> 
+> require(grDevices)
+> plot(weight ~ group, data = PlantGrowth)           # numeric vector ~ factor
+> plot(cut(weight, 2) ~ group, data = PlantGrowth)   # factor ~ factor
+> ## passing "..." to spineplot() eventually:
+> plot(cut(weight, 3) ~ group, data = PlantGrowth,
++      col = hcl(c(0, 120, 240), 50, 70))
+> 
+> plot(PlantGrowth$group, axes = FALSE, main = "no axes")  # extremely silly
+> 
+> 
+> 
+> cleanEx()
+> nameEx("plot.formula")
+> ### * plot.formula
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: plot.formula
+> ### Title: Formula Notation for Scatterplots
+> ### Aliases: plot.formula lines.formula points.formula text.formula
+> ### Keywords: hplot aplot
+> 
+> ### ** Examples
+> 
+> op <- par(mfrow = c(2,1))
+> plot(Ozone ~ Wind, data = airquality, pch = as.character(Month))
+> plot(Ozone ~ Wind, data = airquality, pch = as.character(Month),
++      subset = Month != 7)
+> par(op)
+> 
+> ## text.formula() can be very natural:
+> wb <- within(warpbreaks, {
++     time <- seq_along(breaks); W.T <- wool:tension })
+> plot(breaks ~ time, data = wb, type = "b")
+> text(breaks ~ time, data = wb, labels = W.T, col = 1+as.integer(wool))
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("plot.raster")
+> ### * plot.raster
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: plot.raster
+> ### Title: Plotting Raster Images
+> ### Aliases: plot.raster
+> ### Keywords: hplot
+> 
+> ### ** Examples
+> 
+> require(grDevices)
+> r <- as.raster(c(0.5, 1, 0.5))
+> plot(r)
+> # additional arguments to rasterImage()
+> plot(r, interpolate=FALSE)
+> # distort
+> plot(r, asp=NA)
+> # fill page
+> op <- par(mar=rep(0, 4))
+> plot(r, asp=NA)
+> par(op)
+> # normal annotations work
+> plot(r, asp=NA)
+> box()
+> title(main="This is my raster")
+> # add to existing plot
+> plot(1)
+> plot(r, add=TRUE)
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("plot.table")
+> ### * plot.table
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: plot.table
+> ### Title: Plot Methods for 'table' Objects
+> ### Aliases: plot.table lines.table points.table
+> ### Keywords: hplot category
+> 
+> ### ** Examples
+> 
+> ## 1-d tables
+> (Poiss.tab <- table(N = stats::rpois(200, lambda = 5)))
+N
+ 1  2  3  4  5  6  7  8  9 10 11 
+ 4 14 25 38 40 33 21 16  4  2  3 
+> plot(Poiss.tab, main = "plot(table(rpois(200, lambda = 5)))")
+> 
+> plot(table(state.division))
+> 
+> ## 4-D :
+> plot(Titanic, main ="plot(Titanic, main= *)")
+> 
+> 
+> 
+> 
+> cleanEx()
+> nameEx("plot.window")
+> ### * plot.window
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: plot.window
+> ### Title: Set up World Coordinates for Graphics Window
+> ### Aliases: plot.window xlim ylim asp
+> ### Keywords: aplot
+> 
+> ### ** Examples
+> 
+> ##--- An example for the use of 'asp' :
+> require(stats)  # normally loaded
+> loc <- cmdscale(eurodist)
+> rx <- range(x <- loc[,1])
+> ry <- range(y <- -loc[,2])
+> plot(x, y, type = "n", asp = 1, xlab = "", ylab = "")
+> abline(h = pretty(rx, 10), v = pretty(ry, 10), col = "lightgray")
+> text(x, y, labels(eurodist), cex = 0.8)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("plot.xy")
+> ### * plot.xy
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: plot.xy
+> ### Title: Basic Internal Plot Function
+> ### Aliases: plot.xy
+> ### Keywords: aplot
+> 
+> ### ** Examples
+> 
+> points.default # to see how it calls "plot.xy(xy.coords(x, y), ...)"
+function (x, y = NULL, type = "p", ...) 
+plot.xy(xy.coords(x, y), type = type, ...)
+<bytecode: 0x2931ea0>
+<environment: namespace:graphics>
+> 
+> 
+> 
+> cleanEx()
+> nameEx("plothistogram")
+> ### * plothistogram
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: plot.histogram
+> ### Title: Plot Histograms
+> ### Aliases: plot.histogram lines.histogram
+> ### Keywords: hplot iplot
+> 
+> ### ** Examples
+> 
+> (wwt <- hist(women$weight, nclass = 7, plot = FALSE))
+$breaks
+ [1] 115 120 125 130 135 140 145 150 155 160 165
+
+$counts
+ [1] 3 1 2 2 1 1 2 1 1 1
+
+$density
+ [1] 0.04000000 0.01333333 0.02666667 0.02666667 0.01333333 0.01333333
+ [7] 0.02666667 0.01333333 0.01333333 0.01333333
+
+$mids
+ [1] 117.5 122.5 127.5 132.5 137.5 142.5 147.5 152.5 157.5 162.5
+
+$xname
+[1] "women$weight"
+
+$equidist
+[1] TRUE
+
+attr(,"class")
+[1] "histogram"
+> plot(wwt, labels = TRUE) # default main & xlab using wwt$xname
+> plot(wwt, border = "dark blue", col = "light blue",
++      main = "Histogram of 15 women's weights", xlab = "weight [pounds]")
+> 
+> ## Fake "lines" example, using non-default labels:
+> w2 <- wwt; w2$counts <- w2$counts - 1
+> lines(w2, col = "Midnight Blue", labels = ifelse(w2$counts, "> 1", "1"))
+> 
+> 
+> 
+> cleanEx()
+> nameEx("points")
+> ### * points
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: points
+> ### Title: Add Points to a Plot
+> ### Aliases: points points.default pch
+> ### Keywords: aplot
+> 
+> ### ** Examples
+> 
+> require(stats) # for rnorm
+> plot(-4:4, -4:4, type = "n")  # setting up coord. system
+> points(rnorm(200), rnorm(200), col = "red")
+> points(rnorm(100)/2, rnorm(100)/2, col = "blue", cex = 1.5)
+> 
+> op <- par(bg = "light blue")
+> x <- seq(0, 2*pi, length.out = 51)
+> ## something "between type='b' and type='o'":
+> plot(x, sin(x), type = "o", pch = 21, bg = par("bg"), col = "blue", cex = .6,
++  main = 'plot(..., type="o", pch=21, bg=par("bg"))')
+> par(op)
+> 
+> ## Not run: 
+> ##D ## The figure was produced by calls like
+> ##D png("pch.png", height = 0.7, width = 7, res = 100, units = "in")
+> ##D par(mar = rep(0,4))
+> ##D plot(c(-1, 26), 0:1, type = "n", axes = FALSE)
+> ##D text(0:25, 0.6, 0:25, cex = 0.5)
+> ##D points(0:25, rep(0.3, 26), pch = 0:25, bg = "grey")
+> ## End(Not run)
+> 
+> ##-------- Showing all the extra & some char graphics symbols ---------
+> pchShow <-
++   function(extras = c("*",".", "o","O","0","+","-","|","%","#"),
++            cex = 3, ## good for both .Device=="postscript" and "x11"
++            col = "red3", bg = "gold", coltext = "brown", cextext = 1.2,
++            main = paste("plot symbols :  points (...  pch = *, cex =",
++                         cex,")"))
++   {
++     nex <- length(extras)
++     np  <- 26 + nex
++     ipch <- 0:(np-1)
++     k <- floor(sqrt(np))
++     dd <- c(-1,1)/2
++     rx <- dd + range(ix <- ipch %/% k)
++     ry <- dd + range(iy <- 3 + (k-1)- ipch %% k)
++     pch <- as.list(ipch) # list with integers & strings
++     if(nex > 0) pch[26+ 1:nex] <- as.list(extras)
++     plot(rx, ry, type = "n", axes  =  FALSE, xlab = "", ylab = "", main = main)
++     abline(v = ix, h = iy, col = "lightgray", lty = "dotted")
++     for(i in 1:np) {
++       pc <- pch[[i]]
++       ## 'col' symbols with a 'bg'-colored interior (where available) :
++       points(ix[i], iy[i], pch = pc, col = col, bg = bg, cex = cex)
++       if(cextext > 0)
++           text(ix[i] - 0.3, iy[i], pc, col = coltext, cex = cextext)
++     }
++   }
+> 
+> pchShow()
+> pchShow(c("o","O","0"), cex = 2.5)
+> pchShow(NULL, cex = 4, cextext = 0, main = NULL)
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("polygon")
+> ### * polygon
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: polygon
+> ### Title: Polygon Drawing
+> ### Aliases: polygon
+> ### Keywords: aplot
+> 
+> ### ** Examples
+> 
+> x <- c(1:9, 8:1)
+> y <- c(1, 2*(5:3), 2, -1, 17, 9, 8, 2:9)
+> op <- par(mfcol = c(3, 1))
+> for(xpd in c(FALSE, TRUE, NA)) {
++   plot(1:10, main = paste("xpd =", xpd))
++   box("figure", col = "pink", lwd = 3)
++   polygon(x, y, xpd = xpd, col = "orange", lty = 2, lwd = 2, border = "red")
++ }
+> par(op)
+> 
+> n <- 100
+> xx <- c(0:n, n:0)
+> yy <- c(c(0, cumsum(stats::rnorm(n))), rev(c(0, cumsum(stats::rnorm(n)))))
+> plot   (xx, yy, type = "n", xlab = "Time", ylab = "Distance")
+> polygon(xx, yy, col = "gray", border = "red")
+> title("Distance Between Brownian Motions")
+> 
+> # Multiple polygons from NA values
+> # and recycling of col, border, and lty
+> op <- par(mfrow = c(2, 1))
+> plot(c(1, 9), 1:2, type = "n")
+> polygon(1:9, c(2,1,2,1,1,2,1,2,1),
++         col = c("red", "blue"),
++         border = c("green", "yellow"),
++         lwd = 3, lty = c("dashed", "solid"))
+> plot(c(1, 9), 1:2, type = "n")
+> polygon(1:9, c(2,1,2,1,NA,2,1,2,1),
++         col = c("red", "blue"),
++         border = c("green", "yellow"),
++         lwd = 3, lty = c("dashed", "solid"))
+> par(op)
+> 
+> # Line-shaded polygons
+> plot(c(1, 9), 1:2, type = "n")
+> polygon(1:9, c(2,1,2,1,NA,2,1,2,1),
++         density = c(10, 20), angle = c(-45, 45))
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("polypath")
+> ### * polypath
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: polypath
+> ### Title: Path Drawing
+> ### Aliases: polypath
+> ### Keywords: aplot
+> 
+> ### ** Examples
+> 
+> plotPath <- function(x, y, col = "grey", rule = "winding") {
++     plot.new()
++     plot.window(range(x, na.rm = TRUE), range(y, na.rm = TRUE))
++     polypath(x, y, col = col, rule = rule)
++     if (!is.na(col))
++         mtext(paste("Rule:", rule), side = 1, line = 0)
++ }
+> 
+> plotRules <- function(x, y, title) {
++     plotPath(x, y)
++     plotPath(x, y, rule = "evenodd")
++     mtext(title, side = 3, line = 0)
++     plotPath(x, y, col = NA)
++ }
+> 
+> op <- par(mfrow = c(5, 3), mar = c(2, 1, 1, 1))
+> 
+> plotRules(c(.1, .1, .9, .9, NA, .2, .2, .8, .8),
++           c(.1, .9, .9, .1, NA, .2, .8, .8, .2),
++           "Nested rectangles, both clockwise")
+> plotRules(c(.1, .1, .9, .9, NA, .2, .8, .8, .2),
++           c(.1, .9, .9, .1, NA, .2, .2, .8, .8),
++           "Nested rectangles, outer clockwise, inner anti-clockwise")
+> plotRules(c(.1, .1, .4, .4, NA, .6, .9, .9, .6),
++           c(.1, .4, .4, .1, NA, .6, .6, .9, .9),
++           "Disjoint rectangles")
+> plotRules(c(.1, .1, .6, .6, NA, .4, .4, .9, .9),
++           c(.1, .6, .6, .1, NA, .4, .9, .9, .4),
++           "Overlapping rectangles, both clockwise")
+> plotRules(c(.1, .1, .6, .6, NA, .4, .9, .9, .4),
++           c(.1, .6, .6, .1, NA, .4, .4, .9, .9),
++           "Overlapping rectangles, one clockwise, other anti-clockwise")
+> 
+> par(op)
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("rasterImage")
+> ### * rasterImage
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: rasterImage
+> ### Title: Draw One or More Raster Images
+> ### Aliases: rasterImage
+> ### Keywords: aplot
+> 
+> ### ** Examples
+> 
+> require(grDevices)
+> ## set up the plot region:
+> op <- par(bg = "thistle")
+> plot(c(100, 250), c(300, 450), type = "n", xlab = "", ylab = "")
+> image <- as.raster(matrix(0:1, ncol = 5, nrow = 3))
+Warning in matrix(0:1, ncol = 5, nrow = 3) :
+  data length [2] is not a sub-multiple or multiple of the number of rows [3]
+> rasterImage(image, 100, 300, 150, 350, interpolate = FALSE)
+> rasterImage(image, 100, 400, 150, 450)
+> rasterImage(image, 200, 300, 200 + xinch(.5), 300 + yinch(.3),
++             interpolate = FALSE)
+> rasterImage(image, 200, 400, 250, 450, angle = 15, interpolate = FALSE)
+> par(op)
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("rect")
+> ### * rect
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: rect
+> ### Title: Draw One or More Rectangles
+> ### Aliases: rect
+> ### Keywords: aplot
+> 
+> ### ** Examples
+> 
+> require(grDevices)
+> ## set up the plot region:
+> op <- par(bg = "thistle")
+> plot(c(100, 250), c(300, 450), type = "n", xlab = "", ylab = "",
++      main = "2 x 11 rectangles; 'rect(100+i,300+i,  150+i,380+i)'")
+> i <- 4*(0:10)
+> ## draw rectangles with bottom left (100, 300)+i
+> ## and top right (150, 380)+i
+> rect(100+i, 300+i, 150+i, 380+i, col = rainbow(11, start = 0.7, end = 0.1))
+> rect(240-i, 320+i, 250-i, 410+i, col = heat.colors(11), lwd = i/5)
+> ## Background alternating  ( transparent / "bg" ) :
+> j <- 10*(0:5)
+> rect(125+j, 360+j,   141+j, 405+j/2, col = c(NA,0),
++      border = "gold", lwd = 2)
+> rect(125+j, 296+j/2, 141+j, 331+j/5, col = c(NA,"midnightblue"))
+> mtext("+  2 x 6 rect(*, col = c(NA,0)) and  col = c(NA,\"m..blue\")")
+> 
+> ## an example showing colouring and shading
+> plot(c(100, 200), c(300, 450), type= "n", xlab = "", ylab = "")
+> rect(100, 300, 125, 350) # transparent
+> rect(100, 400, 125, 450, col = "green", border = "blue") # coloured
+> rect(115, 375, 150, 425, col = par("bg"), border = "transparent")
+> rect(150, 300, 175, 350, density = 10, border = "red")
+> rect(150, 400, 175, 450, density = 30, col = "blue",
++      angle = -30, border = "transparent")
+> 
+> legend(180, 450, legend = 1:4, fill = c(NA, "green", par("fg"), "blue"),
++        density = c(NA, NA, 10, 30), angle = c(NA, NA, 30, -30))
+> 
+> par(op)
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("rug")
+> ### * rug
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: rug
+> ### Title: Add a Rug to a Plot
+> ### Aliases: rug
+> ### Keywords: aplot
+> 
+> ### ** Examples
+> 
+> require(stats)  # both 'density' and its default method
+> with(faithful, {
++     plot(density(eruptions, bw = 0.15))
++     rug(eruptions)
++     rug(jitter(eruptions, amount = 0.01), side = 3, col = "light blue")
++ })
+> 
+> 
+> 
+> cleanEx()
+> nameEx("screen")
+> ### * screen
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: screen
+> ### Title: Creating and Controlling Multiple Screens on a Single Device
+> ### Aliases: screen split.screen erase.screen close.screen
+> ### Keywords: aplot dplot device
+> 
+> ### ** Examples
+> 
+> if (interactive()) {
++ par(bg = "white")           # default is likely to be transparent
++ split.screen(c(2, 1))       # split display into two screens
++ split.screen(c(1, 3), screen = 2) # now split the bottom half into 3
++ screen(1) # prepare screen 1 for output
++ plot(10:1)
++ screen(4) # prepare screen 4 for output
++ plot(10:1)
++ close.screen(all = TRUE)    # exit split-screen mode
++ 
++ split.screen(c(2, 1))       # split display into two screens
++ split.screen(c(1, 2), 2)    # split bottom half in two
++ plot(1:10)                  # screen 3 is active, draw plot
++ erase.screen()              # forgot label, erase and redraw
++ plot(1:10, ylab = "ylab 3")
++ screen(1)                   # prepare screen 1 for output
++ plot(1:10)
++ screen(4)                   # prepare screen 4 for output
++ plot(1:10, ylab = "ylab 4")
++ screen(1, FALSE)            # return to screen 1, but do not clear
++ plot(10:1, axes = FALSE, lty = 2, ylab = "")  # overlay second plot
++ axis(4)                     # add tic marks to right-hand axis
++ title("Plot 1")
++ close.screen(all = TRUE)    # exit split-screen mode
++ }
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("segments")
+> ### * segments
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: segments
+> ### Title: Add Line Segments to a Plot
+> ### Aliases: segments
+> ### Keywords: aplot
+> 
+> ### ** Examples
+> 
+> x <- stats::runif(12); y <- stats::rnorm(12)
+> i <- order(x, y); x <- x[i]; y <- y[i]
+> plot(x, y, main = "arrows(.) and segments(.)")
+> ## draw arrows from point to point :
+> s <- seq(length(x)-1)  # one shorter than data
+> arrows(x[s], y[s], x[s+1], y[s+1], col= 1:3)
+> s <- s[-length(s)]
+> segments(x[s], y[s], x[s+2], y[s+2], col= 'pink')
+> 
+> 
+> 
+> cleanEx()
+> nameEx("smoothScatter")
+> ### * smoothScatter
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: smoothScatter
+> ### Title: Scatterplots with Smoothed Densities Color Representation
+> ### Aliases: smoothScatter
+> ### Keywords: hplot
+> 
+> ### ** Examples
+> 
+> 
+> cleanEx()
+> nameEx("spineplot")
+> ### * spineplot
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: spineplot
+> ### Title: Spine Plots and Spinograms
+> ### Aliases: spineplot spineplot.default spineplot.formula
+> ### Keywords: hplot
+> 
+> ### ** Examples
+> 
+> ## treatment and improvement of patients with rheumatoid arthritis
+> treatment <- factor(rep(c(1, 2), c(43, 41)), levels = c(1, 2),
++                     labels = c("placebo", "treated"))
+> improved <- factor(rep(c(1, 2, 3, 1, 2, 3), c(29, 7, 7, 13, 7, 21)),
++                    levels = c(1, 2, 3),
++                    labels = c("none", "some", "marked"))
+> 
+> ## (dependence on a categorical variable)
+> (spineplot(improved ~ treatment))
+         improved
+treatment none some marked
+  placebo   29    7      7
+  treated   13    7     21
+> 
+> ## applications and admissions by department at UC Berkeley
+> ## (two-way tables)
+> (spineplot(marginSums(UCBAdmissions, c(3, 2)),
++            main = "Applications at UCB"))
+    Gender
+Dept Male Female
+   A  825    108
+   B  560     25
+   C  325    593
+   D  417    375
+   E  191    393
+   F  373    341
+> (spineplot(marginSums(UCBAdmissions, c(3, 1)),
++            main = "Admissions at UCB"))
+    Admit
+Dept Admitted Rejected
+   A      601      332
+   B      370      215
+   C      322      596
+   D      269      523
+   E      147      437
+   F       46      668
+> 
+> ## NASA space shuttle o-ring failures
+> fail <- factor(c(2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1,
++                  1, 1, 1, 2, 1, 1, 1, 1, 1),
++                levels = c(1, 2), labels = c("no", "yes"))
+> temperature <- c(53, 57, 58, 63, 66, 67, 67, 67, 68, 69, 70, 70,
++                  70, 70, 72, 73, 75, 75, 76, 76, 78, 79, 81)
+> 
+> ## (dependence on a numerical variable)
+> (spineplot(fail ~ temperature))
+           fail
+temperature no yes
+    [50,55]  0   1
+    (55,60]  0   2
+    (60,65]  0   1
+    (65,70]  8   2
+    (70,75]  3   1
+    (75,80]  4   0
+    (80,85]  1   0
+> (spineplot(fail ~ temperature, breaks = 3))
+           fail
+temperature no yes
+    [50,60]  0   3
+    (60,70]  8   3
+    (70,80]  7   1
+    (80,90]  1   0
+> (spineplot(fail ~ temperature, breaks = quantile(temperature)))
+           fail
+temperature no yes
+    [53,67]  4   4
+    (67,70]  4   2
+    (70,75]  3   1
+    (75,81]  5   0
+> 
+> ## highlighting for failures
+> spineplot(fail ~ temperature, ylevels = 2:1)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("stars")
+> ### * stars
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: stars
+> ### Title: Star (Spider/Radar) Plots and Segment Diagrams
+> ### Aliases: stars
+> ### Keywords: hplot multivariate
+> 
+> ### ** Examples
+> 
+> require(grDevices)
+> stars(mtcars[, 1:7], key.loc = c(14, 2),
++       main = "Motor Trend Cars : stars(*, full = F)", full = FALSE)
+> stars(mtcars[, 1:7], key.loc = c(14, 1.5),
++       main = "Motor Trend Cars : full stars()", flip.labels = FALSE)
+> 
+> ## 'Spider' or 'Radar' plot:
+> stars(mtcars[, 1:7], locations = c(0, 0), radius = FALSE,
++       key.loc = c(0, 0), main = "Motor Trend Cars", lty = 2)
+> 
+> ## Segment Diagrams:
+> palette(rainbow(12, s = 0.6, v = 0.75))
+> stars(mtcars[, 1:7], len = 0.8, key.loc = c(12, 1.5),
++       main = "Motor Trend Cars", draw.segments = TRUE)
+> stars(mtcars[, 1:7], len = 0.6, key.loc = c(1.5, 0),
++       main = "Motor Trend Cars", draw.segments = TRUE,
++       frame.plot = TRUE, nrow = 4, cex = .7)
+> 
+> ## scale linearly (not affinely) to [0, 1]
+> USJudge <- apply(USJudgeRatings, 2, function(x) x/max(x))
+> Jnam <- row.names(USJudgeRatings)
+> Snam <- abbreviate(substring(Jnam, 1, regexpr("[,.]",Jnam) - 1), 7)
+> stars(USJudge, labels = Jnam, scale = FALSE,
++       key.loc = c(13, 1.5), main = "Judge not ...", len = 0.8)
+> stars(USJudge, labels = Snam, scale = FALSE,
++       key.loc = c(13, 1.5), radius = FALSE)
+> 
+> loc <- stars(USJudge, labels = NULL, scale = FALSE,
++              radius = FALSE, frame.plot = TRUE,
++              key.loc = c(13, 1.5), main = "Judge not ...", len = 1.2)
+> text(loc, Snam, col = "blue", cex = 0.8, xpd = TRUE)
+> 
+> ## 'Segments':
+> stars(USJudge, draw.segments = TRUE, scale = FALSE, key.loc = c(13,1.5))
+> 
+> ## 'Spider':
+> stars(USJudgeRatings, locations = c(0, 0), scale = FALSE, radius  =  FALSE,
++       col.stars = 1:10, key.loc = c(0, 0), main = "US Judges rated")
+> ## Same as above, but with colored lines instead of filled polygons.
+> stars(USJudgeRatings, locations = c(0, 0), scale = FALSE, radius  =  FALSE,
++       col.lines = 1:10, key.loc = c(0, 0), main = "US Judges rated")
+> ## 'Radar-Segments'
+> stars(USJudgeRatings[1:10,], locations = 0:1, scale = FALSE,
++       draw.segments = TRUE, col.segments = 0, col.stars = 1:10, key.loc =  0:1,
++       main = "US Judges 1-10 ")
+> palette("default")
+> stars(cbind(1:16, 10*(16:1)), draw.segments = TRUE,
++       main = "A Joke -- do *not* use symbols on 2D data!")
+> 
+> 
+> 
+> cleanEx()
+> nameEx("stem")
+> ### * stem
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: stem
+> ### Title: Stem-and-Leaf Plots
+> ### Aliases: stem
+> ### Keywords: univar distribution
+> 
+> ### ** Examples
+> 
+> stem(islands)
+
+  The decimal point is 3 digit(s) to the right of the |
+
+   0 | 00000000000000000000000000000111111222338
+   2 | 07
+   4 | 5
+   6 | 8
+   8 | 4
+  10 | 5
+  12 | 
+  14 | 
+  16 | 0
+
+> stem(log10(islands))
+
+  The decimal point is at the |
+
+  1 | 1111112222233444
+  1 | 5555556666667899999
+  2 | 3344
+  2 | 59
+  3 | 
+  3 | 5678
+  4 | 012
+
+> 
+> 
+> 
+> cleanEx()
+> nameEx("stripchart")
+> ### * stripchart
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: stripchart
+> ### Title: 1-D Scatter Plots
+> ### Aliases: stripchart stripchart.default stripchart.formula
+> ### Keywords: hplot
+> 
+> ### ** Examples
+> 
+> x <- stats::rnorm(50)
+> xr <- round(x, 1)
+> stripchart(x) ; m <- mean(par("usr")[1:2])
+> text(m, 1.04, "stripchart(x, \"overplot\")")
+> stripchart(xr, method = "stack", add = TRUE, at = 1.2)
+> text(m, 1.35, "stripchart(round(x,1), \"stack\")")
+> stripchart(xr, method = "jitter", add = TRUE, at = 0.7)
+> text(m, 0.85, "stripchart(round(x,1), \"jitter\")")
+> 
+> stripchart(decrease ~ treatment,
++     main = "stripchart(OrchardSprays)",
++     vertical = TRUE, log = "y", data = OrchardSprays)
+> 
+> stripchart(decrease ~ treatment, at = c(1:8)^2,
++     main = "stripchart(OrchardSprays)",
++     vertical = TRUE, log = "y", data = OrchardSprays)
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("strwidth")
+> ### * strwidth
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: strwidth
+> ### Title: Plotting Dimensions of Character Strings and Math Expressions
+> ### Aliases: strwidth strheight
+> ### Keywords: dplot character
+> 
+> ### ** Examples
+> 
+> str.ex <- c("W","w","I",".","WwI.")
+> op <- par(pty = "s"); plot(1:100, 1:100, type = "n")
+> sw <- strwidth(str.ex); sw
+[1] 3.2600930 2.4934186 0.9600698 0.9600698 7.6736512
+> all.equal(sum(sw[1:4]), sw[5])
+[1] TRUE
+> #- since the last string contains the others
+> 
+> sw.i <- strwidth(str.ex, "inches"); 25.4 * sw.i  # width in [mm]
+[1] 3.996267 3.056467 1.176867 1.176867 9.406467
+> unique(sw / sw.i)
+[1] 20.72093 20.72093
+> # constant factor: 1 value
+> mean(sw.i / strwidth(str.ex, "fig")) / par('fin')[1]  # = 1: are the same
+[1] 1
+> 
+> ## See how letters fall in classes
+> ##  -- depending on graphics device and font!
+> all.lett <- c(letters, LETTERS)
+> shL <- strheight(all.lett, units = "inches") * 72  # 'big points'
+> table(shL)  # all have same heights ...
+shL
+8.616 
+   52 
+> mean(shL)/par("cin")[2] # around 0.6
+[1] 43.08
+> 
+> (swL <- strwidth(all.lett, units = "inches") * 72)  # 'big points'
+ [1]  6.672  6.672  6.000  6.672  6.672  3.336  6.672  6.672  2.664  2.664
+[11]  6.000  2.664  9.996  6.672  6.672  6.672  6.672  3.996  6.000  3.336
+[21]  6.672  6.000  8.664  6.000  6.000  6.000  8.004  8.004  8.664  8.664
+[31]  8.004  7.332  9.336  8.664  3.336  6.000  8.004  6.672  9.996  8.664
+[41]  9.336  8.004  9.336  8.664  8.004  7.332  8.664  8.004 11.328  8.004
+[51]  8.004  7.332
+> split(all.lett, factor(round(swL, 2)))
+$`2.66`
+[1] "i" "j" "l"
+
+$`3.34`
+[1] "f" "t" "I"
+
+$`4`
+[1] "r"
+
+$`6`
+[1] "c" "k" "s" "v" "x" "y" "z" "J"
+
+$`6.67`
+ [1] "a" "b" "d" "e" "g" "h" "n" "o" "p" "q" "u" "L"
+
+$`7.33`
+[1] "F" "T" "Z"
+
+$`8`
+[1] "A" "B" "E" "K" "P" "S" "V" "X" "Y"
+
+$`8.66`
+[1] "w" "C" "D" "H" "N" "R" "U"
+
+$`9.34`
+[1] "G" "O" "Q"
+
+$`10`
+[1] "m" "M"
+
+$`11.33`
+[1] "W"
+
+> 
+> sumex <- expression(sum(x[i], i=1,n), e^{i * pi} == -1)
+> strwidth(sumex)
+[1]  5.795241 11.484959
+> strheight(sumex)
+[1] 8.057449 3.420738
+> 
+> par(op)  #- reset to previous setting
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("sunflowerplot")
+> ### * sunflowerplot
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: sunflowerplot
+> ### Title: Produce a Sunflower Scatter Plot
+> ### Aliases: sunflowerplot sunflowerplot.default sunflowerplot.formula
+> ### Keywords: hplot smooth nonparametric
+> 
+> ### ** Examples
+> 
+> require(stats) # for rnorm
+> require(grDevices)
+> 
+> ## 'number' is computed automatically:
+> sunflowerplot(iris[, 3:4])
+> ## Imitating Chambers et al, p.109, closely:
+> sunflowerplot(iris[, 3:4], cex = .2, cex.fact = 1, size = .035, seg.lwd = .8)
+> ## or
+> sunflowerplot(Petal.Width ~ Petal.Length, data = iris,
++               cex = .2, cex.fact = 1, size = .035, seg.lwd = .8)
+> 
+> 
+> sunflowerplot(x = sort(2*round(rnorm(100))), y = round(rnorm(100), 0),
++               main = "Sunflower Plot of Rounded N(0,1)")
+> ## Similarly using a "xyTable" argument:
+> xyT <- xyTable(x = sort(2*round(rnorm(100))), y = round(rnorm(100), 0),
++                digits = 3)
+> utils::str(xyT, vec.len = 20)
+List of 3
+ $ x     : num [1:25] -6 -4 -4 -4 -4 -2 -2 -2 -2 -2 0 0 0 0 0 0 2 2 2 2 2 4 4 4 4
+ $ y     : num [1:25] 0 -2 0 1 2 -2 -1 0 1 2 -3 -2 -1 0 1 2 -2 -1 0 1 3 -1 0 1 2
+ $ number: int [1:25] 1 1 1 1 3 1 4 8 4 1 1 3 5 17 12 2 1 8 12 6 1 1 3 2 1
+> sunflowerplot(xyT, main = "2nd Sunflower Plot of Rounded N(0,1)")
+> 
+> ## A 'marked point process' {explicit 'number' argument}:
+> sunflowerplot(rnorm(100), rnorm(100), number = rpois(n = 100, lambda = 2),
++               main = "Sunflower plot (marked point process)",
++               rotate = TRUE, col = "blue4")
+> 
+> 
+> 
+> cleanEx()
+> nameEx("symbols")
+> ### * symbols
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: symbols
+> ### Title: Draw Symbols (Circles, Squares, Stars, Thermometers, Boxplots)
+> ### Aliases: symbols
+> ### Keywords: aplot hplot multivariate
+> 
+> ### ** Examples
+> 
+> require(stats); require(grDevices)
+> x <- 1:10
+> y <- sort(10*runif(10))
+> z <- runif(10)
+> z3 <- cbind(z, 2*runif(10), runif(10))
+> symbols(x, y, thermometers = cbind(.5, 1, z), inches = .5, fg = 1:10)
+> symbols(x, y, thermometers = z3, inches = FALSE)
+> text(x, y, apply(format(round(z3, digits = 2)), 1, paste, collapse = ","),
++      adj = c(-.2,0), cex = .75, col = "purple", xpd = NA)
+> 
+> ## Note that  example(trees)  shows more sensible plots!
+> N <- nrow(trees)
+> with(trees, {
++ ## Girth is diameter in inches
++ symbols(Height, Volume, circles = Girth/24, inches = FALSE,
++         main = "Trees' Girth") # xlab and ylab automatically
++ ## Colours too:
++ op <- palette(rainbow(N, end = 0.9))
++ symbols(Height, Volume, circles = Girth/16, inches = FALSE, bg = 1:N,
++         fg = "gray30", main = "symbols(*, circles = Girth/16, bg = 1:N)")
++ palette(op)
++ })
+> 
+> 
+> 
+> cleanEx()
+> nameEx("title")
+> ### * title
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: title
+> ### Title: Plot Annotation
+> ### Aliases: title
+> ### Keywords: aplot
+> 
+> ### ** Examples
+> 
+> plot(cars, main = "") # here, could use main directly
+> title(main = "Stopping Distance versus Speed")
+> 
+> plot(cars, main = "")
+> title(main = list("Stopping Distance versus Speed", cex = 1.5,
++                   col = "red", font = 3))
+> 
+> ## Specifying "..." :
+> plot(1, col.axis = "sky blue", col.lab = "thistle")
+> title("Main Title", sub = "subtitle",
++       cex.main = 2,   font.main= 4, col.main= "blue",
++       cex.sub = 0.75, font.sub = 3, col.sub = "red")
+> 
+> 
+> x <- seq(-4, 4, length.out = 101)
+> y <- cbind(sin(x), cos(x))
+> matplot(x, y, type = "l", xaxt = "n",
++         main = expression(paste(plain(sin) * phi, "  and  ",
++                                 plain(cos) * phi)),
++         ylab = expression("sin" * phi, "cos" * phi), # only 1st is taken
++         xlab = expression(paste("Phase Angle ", phi)),
++         col.main = "blue")
+> axis(1, at = c(-pi, -pi/2, 0, pi/2, pi),
++      labels = expression(-pi, -pi/2, 0, pi/2, pi))
+> abline(h = 0, v = pi/2 * c(-1,1), lty = 2, lwd = .1, col = "gray70")
+> 
+> 
+> 
+> cleanEx()
+> nameEx("units")
+> ### * units
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: units
+> ### Title: Graphical Units
+> ### Aliases: xinch yinch xyinch
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> all(c(xinch(), yinch()) == xyinch()) # TRUE
+[1] TRUE
+> xyinch()
+[1] 1.5000000 0.4185559
+> xyinch #- to see that is really   delta{"usr"} / "pin"
+function (xy = 1, warn.log = TRUE) 
+{
+    if (warn.log && (par("xlog") || par("ylog"))) 
+        warning("log scale:  xyinch() is nonsense")
+    u <- par("usr")
+    xy * c(u[2L] - u[1L], u[4L] - u[3L])/par("pin")
+}
+<bytecode: 0x44b1200>
+<environment: namespace:graphics>
+> 
+> ## plot labels offset 0.12 inches to the right
+> ## of plotted symbols in a plot
+> with(mtcars, {
++     plot(mpg, disp, pch = 19, main = "Motor Trend Cars")
++     text(mpg + xinch(0.12), disp, row.names(mtcars),
++          adj = 0, cex = .7, col = "blue")
++     })
+> 
+> 
+> 
+> cleanEx()
+> nameEx("xspline")
+> ### * xspline
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: xspline
+> ### Title: Draw an X-spline
+> ### Aliases: xspline
+> ### Keywords: aplot
+> 
+> ### ** Examples
+> 
+> ## based on examples in ?grid.xspline
+> 
+> xsplineTest <- function(s, open = TRUE,
++                         x = c(1,1,3,3)/4,
++                         y = c(1,3,3,1)/4, ...) {
++     plot(c(0,1), c(0,1), type = "n", axes = FALSE, xlab = "", ylab = "")
++     points(x, y, pch = 19)
++     xspline(x, y, s, open, ...)
++     text(x+0.05*c(-1,-1,1,1), y+0.05*c(-1,1,1,-1), s)
++ }
+> op <- par(mfrow = c(3,3), mar = rep(0,4), oma = c(0,0,2,0))
+> xsplineTest(c(0, -1, -1, 0))
+> xsplineTest(c(0, -1,  0, 0))
+> xsplineTest(c(0, -1,  1, 0))
+> xsplineTest(c(0,  0, -1, 0))
+> xsplineTest(c(0,  0,  0, 0))
+> xsplineTest(c(0,  0,  1, 0))
+> xsplineTest(c(0,  1, -1, 0))
+> xsplineTest(c(0,  1,  0, 0))
+> xsplineTest(c(0,  1,  1, 0))
+> title("Open X-splines", outer = TRUE)
+> 
+> par(mfrow = c(3,3), mar = rep(0,4), oma = c(0,0,2,0))
+> xsplineTest(c(0, -1, -1, 0), FALSE, col = "grey80")
+> xsplineTest(c(0, -1,  0, 0), FALSE, col = "grey80")
+> xsplineTest(c(0, -1,  1, 0), FALSE, col = "grey80")
+> xsplineTest(c(0,  0, -1, 0), FALSE, col = "grey80")
+> xsplineTest(c(0,  0,  0, 0), FALSE, col = "grey80")
+> xsplineTest(c(0,  0,  1, 0), FALSE, col = "grey80")
+> xsplineTest(c(0,  1, -1, 0), FALSE, col = "grey80")
+> xsplineTest(c(0,  1,  0, 0), FALSE, col = "grey80")
+> xsplineTest(c(0,  1,  1, 0), FALSE, col = "grey80")
+> title("Closed X-splines", outer = TRUE)
+> 
+> par(op)
+> 
+> x <- sort(stats::rnorm(5))
+> y <- sort(stats::rnorm(5))
+> plot(x, y, pch = 19)
+> res <- xspline(x, y, 1, draw = FALSE)
+> lines(res)
+> ## the end points may be very close together,
+> ## so use last few for direction
+> nr <- length(res$x)
+> arrows(res$x[1], res$y[1], res$x[4], res$y[4], code = 1, length = 0.1)
+> arrows(res$x[nr-3], res$y[nr-3], res$x[nr], res$y[nr], code = 2, length = 0.1)
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> ### * <FOOTER>
+> ###
+> cleanEx()
+> options(digits = 7L)
+> base::cat("Time elapsed: ", proc.time() - base::get("ptime", pos = 'CheckExEnv'),"\n")
+Time elapsed:  7.891 0.169 8.114 0 0 
+> grDevices::dev.off()
+null device 
+          1 
+> ###
+> ### Local variables: ***
+> ### mode: outline-minor ***
+> ### outline-regexp: "\\(> \\)?### [*]+" ***
+> ### End: ***
+> quit('no')
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/tests/Examples/tools-Ex.Rout.save
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/tests/Examples/tools-Ex.Rout.save	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/tests/Examples/tools-Ex.Rout.save	(revision 3762)
@@ -0,0 +1,1121 @@
+
+R version 4.2.0 Patched (2022-06-01 r82440) -- "Vigorous Calisthenics"
+Copyright (C) 2022 The R Foundation for Statistical Computing
+Platform: aarch64-apple-darwin21.5.0 (64-bit)
+
+R is free software and comes with ABSOLUTELY NO WARRANTY.
+You are welcome to redistribute it under certain conditions.
+Type 'license()' or 'licence()' for distribution details.
+
+  Natural language support but running in an English locale
+
+R is a collaborative project with many contributors.
+Type 'contributors()' for more information and
+'citation()' on how to cite R or R packages in publications.
+
+Type 'demo()' for some demos, 'help()' for on-line help, or
+'help.start()' for an HTML browser interface to help.
+Type 'q()' to quit R.
+
+> pkgname <- "tools"
+> source(file.path(R.home("share"), "R", "examples-header.R"))
+> options(warn = 1)
+> library('tools')
+> 
+> base::assign(".oldSearch", base::search(), pos = 'CheckExEnv')
+> base::assign(".old_wd", base::getwd(), pos = 'CheckExEnv')
+> cleanEx()
+> nameEx("CRANtools")
+> ### * CRANtools
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: CRANtools
+> ### Title: CRAN Package Repository Tools
+> ### Aliases: CRAN_package_db CRAN_check_results CRAN_check_details
+> ###   CRAN_check_issues CRAN_memtest_notes summarize_CRAN_check_status
+> ###   R_CRAN_WEB R_CRAN_SRC
+> 
+> ### ** Examples
+> 
+> 
+> cleanEx()
+> nameEx("HTMLheader")
+> ### * HTMLheader
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: HTMLheader
+> ### Title: Generate a Standard HTML Header for R Help
+> ### Aliases: HTMLheader
+> ### Keywords: utilities documentation
+> 
+> ### ** Examples
+> 
+> cat(HTMLheader("This is a sample header"), sep="\n")
+<!DOCTYPE html>
+<html>
+<head><title>R: This is a sample header</title>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
+<link rel="stylesheet" type="text/css" href="/doc/html/R.css" />
+</head><body><div class="container">
+<h1> This is a sample header
+<img class="toplogo" src="/doc/html/Rlogo.svg" alt="[R logo]" />
+</h1>
+<hr/>
+<div style="text-align: center;">
+<a href="/doc/html/index.html"><img class="arrow" src="/doc/html/up.jpg" alt="[Top]" /></a>
+</div>
+> 
+> 
+> 
+> cleanEx()
+> nameEx("Rd2HTML")
+> ### * Rd2HTML
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: Rd2HTML
+> ### Title: Rd Converters
+> ### Aliases: Rd2txt Rd2HTML Rd2ex Rd2latex
+> ### Keywords: documentation
+> 
+> ### ** Examples
+> cleanEx()
+> nameEx("Rd2txt_options")
+> ### * Rd2txt_options
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: Rd2txt_options
+> ### Title: Set Formatting Options for Text Help
+> ### Aliases: Rd2txt_options
+> ### Keywords: documentation
+> 
+> ### ** Examples
+> 
+> 
+> 
+> 
+> cleanEx()
+> nameEx("Rdutils")
+> ### * Rdutils
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: Rdutils
+> ### Title: Rd Utilities
+> ### Aliases: Rd_db
+> ### Keywords: utilities documentation
+> 
+> ### ** Examples
+> 
+> 
+> cleanEx()
+> nameEx("assertCondition")
+> ### * assertCondition
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: assertCondition
+> ### Title: Asserting Error Conditions
+> ### Aliases: assertCondition assertWarning assertError
+> ### Keywords: programming error
+> 
+> ### ** Examples
+> 
+>   assertError(sqrt("abc"))
+>   assertWarning(matrix(1:8, 4,3))
+> 
+>   assertCondition( ""-1 ) # ok, any condition would satisfy this
+> 
+> try( assertCondition(sqrt(2), "warning") )
+Error in assertCondition(sqrt(2), "warning") : 
+  Failed to get warning in evaluating sqrt(2)
+> ## .. Failed to get warning in evaluating sqrt(2)
+>      assertCondition(sqrt("abc"), "error")   # ok
+> try( assertCondition(sqrt("abc"), "warning") )# -> error: had no warning
+Error in assertCondition(sqrt("abc"), "warning") : 
+  Got simpleError in evaluating sqrt("abc"); wanted warning
+>      assertCondition(sqrt("abc"), "error")
+>   ## identical to assertError() call above
+> 
+> assertCondition(matrix(1:5, 2,3), "warning")
+> try( assertCondition(matrix(1:8, 4,3), "error") )
+Error in assertCondition(matrix(1:8, 4, 3), "error") : 
+  Got simpleWarning in evaluating matrix(1:8, 4, 3); wanted error
+> ## .. Failed to get expected error ....
+> 
+> ## either warning or worse:
+> assertCondition(matrix(1:8, 4,3), "error","warning") # OK
+> assertCondition(matrix(1:8, 4, 3), "warning") # OK
+> 
+> ## when both are signalled:
+> ff <- function() { warning("my warning"); stop("my error") }
+>     assertCondition(ff(), "warning")
+> ## but assertWarning does not allow an error to follow
+> try(assertWarning(ff()))
+Error in assertWarning(ff()) : 
+  Got warning in evaluating ff(), but also an error
+>     assertCondition(ff(), "error")          # ok
+> assertCondition(ff(), "error", "warning") # ok (quietly, catching warning)
+> 
+> ## assert that assertC..() does not assert [and use *one* argument only]
+> assertCondition( assertCondition(sqrt( 2   ), "warning") )
+> assertCondition( assertCondition(sqrt("abc"), "warning"), "error")
+> assertCondition( assertCondition(matrix(1:8, 4,3), "error"),
++                 "error")
+> 
+> 
+> 
+> cleanEx()
+> nameEx("bibstyle")
+> ### * bibstyle
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: bibstyle
+> ### Title: Select or Define a Bibliography Style
+> ### Aliases: bibstyle getBibstyle
+> ### Keywords: utilties documentation
+> 
+> ### ** Examples
+> 
+> ## Don't show: 
+> options(useFancyQuotes = FALSE)
+> ## End(Don't show)
+> refs <-
++ c(bibentry(bibtype = "manual",
++     title = "R: A Language and Environment for Statistical Computing",
++     author = person("R Core Team"),
++     organization = "R Foundation for Statistical Computing",
++     address = "Vienna, Austria",
++     year = 2013,
++     url = "https://www.R-project.org"),
++   bibentry(bibtype = "article",
++     author = c(person(c("George", "E.", "P."), "Box"),
++                person(c("David",  "R."),      "Cox")),
++     year = 1964,
++     title = "An Analysis of Transformations",
++     journal = "Journal of the Royal Statistical Society, Series B",
++     volume = 26, number = 2, pages = "211--243",
++     doi = "10.1111/j.2517-6161.1964.tb00553.x"))
+> 
+> bibstyle("unsorted", sortKeys = function(refs) seq_along(refs),
++     fmtPrefix = function(paper) paste0("[", paper$.index, "]"),
++        .init = TRUE)
+<environment: 0x125130660>
+> print(refs, .bibstyle = "unsorted")
+[1] R Core Team (2013). _R: A Language and Environment for Statistical
+Computing_. R Foundation for Statistical Computing, Vienna, Austria.
+<https://www.R-project.org>.
+
+[2] Box GEP, Cox DR (1964). "An Analysis of Transformations." _Journal
+of the Royal Statistical Society, Series B_, *26*(2), 211-243.
+doi:10.1111/j.2517-6161.1964.tb00553.x
+<https://doi.org/10.1111/j.2517-6161.1964.tb00553.x>.
+> 
+> 
+> 
+> cleanEx()
+> nameEx("buildVignettes")
+> ### * buildVignettes
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: buildVignettes
+> ### Title: List and Build Package Vignettes
+> ### Aliases: buildVignettes pkgVignettes
+> ### Keywords: utilities documentation
+> 
+> ### ** Examples
+> 
+> gVigns <- pkgVignettes("grid")
+> 
+> 
+> 
+> cleanEx()
+> nameEx("charsets")
+> ### * charsets
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: charsets
+> ### Title: Conversion Tables between Character Sets
+> ### Aliases: Adobe_glyphs charset_to_Unicode
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> ## find Adobe names for ISOLatin2 chars.
+> latin2 <- charset_to_Unicode[, "ISOLatin2"]
+> aUnicode <- as.hexmode(paste0("0x", Adobe_glyphs$unicode))
+> keep <- aUnicode %in% latin2
+> aUnicode <- aUnicode[keep]
+> aAdobe <- Adobe_glyphs[keep, 1]
+> ## first match
+> aLatin2 <- aAdobe[match(latin2, aUnicode)]
+> ## all matches
+> bLatin2 <- lapply(1:256, function(x) aAdobe[aUnicode == latin2[x]])
+> format(bLatin2, justify = "none")
+  [1] ""                          "controlSTX"               
+  [3] "controlSOT"                "controlETX"               
+  [5] "controlEOT"                "controlENQ"               
+  [7] "controlACK"                "controlBEL"               
+  [9] "controlBS"                 "controlHT"                
+ [11] "controlLF"                 "controlVT"                
+ [13] "controlFF"                 "controlCR"                
+ [15] "controlSO"                 "controlSI"                
+ [17] "controlDLE"                "controlDC1"               
+ [19] "controlDC2"                "controlDC3"               
+ [21] "controlDC4"                "controlNAK"               
+ [23] "controlSYN"                "controlETB"               
+ [25] "controlCAN"                "controlEM"                
+ [27] "controlSUB"                "controlESC"               
+ [29] "controlFS"                 "controlGS"                
+ [31] "controlRS"                 "controlUS"                
+ [33] "space, spacehackarabic"    "exclam"                   
+ [35] "quotedbl"                  "numbersign"               
+ [37] "dollar"                    "percent"                  
+ [39] "ampersand"                 "quotesingle"              
+ [41] "parenleft"                 "parenright"               
+ [43] "asterisk"                  "plus"                     
+ [45] "comma"                     "hyphen"                   
+ [47] "period"                    "slash"                    
+ [49] "zero"                      "one"                      
+ [51] "two"                       "three"                    
+ [53] "four"                      "five"                     
+ [55] "six"                       "seven"                    
+ [57] "eight"                     "nine"                     
+ [59] "colon"                     "semicolon"                
+ [61] "less"                      "equal"                    
+ [63] "greater"                   "question"                 
+ [65] "at"                        "A"                        
+ [67] "B"                         "C"                        
+ [69] "D"                         "E"                        
+ [71] "F"                         "G"                        
+ [73] "H"                         "I"                        
+ [75] "J"                         "K"                        
+ [77] "L"                         "M"                        
+ [79] "N"                         "O"                        
+ [81] "P"                         "Q"                        
+ [83] "R"                         "S"                        
+ [85] "T"                         "U"                        
+ [87] "V"                         "W"                        
+ [89] "X"                         "Y"                        
+ [91] "Z"                         "bracketleft"              
+ [93] "backslash"                 "bracketright"             
+ [95] "asciicircum"               "underscore"               
+ [97] "grave"                     "a"                        
+ [99] "b"                         "c"                        
+[101] "d"                         "e"                        
+[103] "f"                         "g"                        
+[105] "h"                         "i"                        
+[107] "j"                         "k"                        
+[109] "l"                         "m"                        
+[111] "n"                         "o"                        
+[113] "p"                         "q"                        
+[115] "r"                         "s"                        
+[117] "t"                         "u"                        
+[119] "v"                         "w"                        
+[121] "x"                         "y"                        
+[123] "z"                         "braceleft"                
+[125] "bar, verticalbar"          "braceright"               
+[127] "asciitilde"                "controlDEL"               
+[129] ""                          ""                         
+[131] ""                          ""                         
+[133] ""                          ""                         
+[135] ""                          ""                         
+[137] ""                          ""                         
+[139] ""                          ""                         
+[141] ""                          ""                         
+[143] ""                          ""                         
+[145] ""                          ""                         
+[147] ""                          ""                         
+[149] ""                          ""                         
+[151] ""                          ""                         
+[153] ""                          ""                         
+[155] ""                          ""                         
+[157] ""                          ""                         
+[159] ""                          ""                         
+[161] "nbspace, nonbreakingspace" "Aogonek"                  
+[163] "breve"                     "Lslash"                   
+[165] "currency"                  "Lcaron"                   
+[167] "Sacute"                    "section"                  
+[169] "dieresis"                  "Scaron"                   
+[171] "Scedilla"                  "Tcaron"                   
+[173] "Zacute"                    "sfthyphen, softhyphen"    
+[175] "Zcaron"                    "Zdot, Zdotaccent"         
+[177] "degree"                    "aogonek"                  
+[179] "ogonek"                    "lslash"                   
+[181] "acute"                     "lcaron"                   
+[183] "sacute"                    "caron"                    
+[185] "cedilla"                   "scaron"                   
+[187] "scedilla"                  "tcaron"                   
+[189] "zacute"                    "hungarumlaut"             
+[191] "zcaron"                    "zdot, zdotaccent"         
+[193] "Racute"                    "Aacute"                   
+[195] "Acircumflex"               "Abreve"                   
+[197] "Adieresis"                 "Lacute"                   
+[199] "Cacute"                    "Ccedilla"                 
+[201] "Ccaron"                    "Eacute"                   
+[203] "Eogonek"                   "Edieresis"                
+[205] "Ecaron"                    "Iacute"                   
+[207] "Icircumflex"               "Dcaron"                   
+[209] "Dcroat, Dslash"            "Nacute"                   
+[211] "Ncaron"                    "Oacute"                   
+[213] "Ocircumflex"               "Odblacute, Ohungarumlaut" 
+[215] "Odieresis"                 "multiply"                 
+[217] "Rcaron"                    "Uring"                    
+[219] "Uacute"                    "Udblacute, Uhungarumlaut" 
+[221] "Udieresis"                 "Yacute"                   
+[223] "Tcedilla, Tcommaaccent"    "germandbls"               
+[225] "racute"                    "aacute"                   
+[227] "acircumflex"               "abreve"                   
+[229] "adieresis"                 "lacute"                   
+[231] "cacute"                    "ccedilla"                 
+[233] "ccaron"                    "eacute"                   
+[235] "eogonek"                   "edieresis"                
+[237] "ecaron"                    "iacute"                   
+[239] "icircumflex"               "dcaron"                   
+[241] "dcroat, dmacron"           "nacute"                   
+[243] "ncaron"                    "oacute"                   
+[245] "ocircumflex"               "odblacute, ohungarumlaut" 
+[247] "odieresis"                 "divide"                   
+[249] "rcaron"                    "uring"                    
+[251] "uacute"                    "udblacute, uhungarumlaut" 
+[253] "udieresis"                 "yacute"                   
+[255] "tcedilla, tcommaaccent"    "dotaccent"                
+> 
+> 
+> 
+> cleanEx()
+> nameEx("checkFF")
+> ### * checkFF
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: checkFF
+> ### Title: Check Foreign Function Calls
+> ### Aliases: checkFF print.checkFF
+> ### Keywords: programming utilities
+> 
+> ### ** Examples
+> 
+> 
+> cleanEx()
+> nameEx("checkPoFiles")
+> ### * checkPoFiles
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: checkPoFiles
+> ### Title: Check Translation Files for Inconsistent Format Strings
+> ### Aliases: checkPoFile checkPoFiles
+> ### Keywords: utilities
+> 
+> ### ** Examples
+> 
+> ## Not run: 
+> ##D checkPoFiles("de", "/path/to/R/src/directory")
+> ## End(Not run)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("checkRdaFiles")
+> ### * checkRdaFiles
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: checkRdaFiles
+> ### Title: Report on Details of Saved Images or Re-saves them
+> ### Aliases: checkRdaFiles resaveRdaFiles
+> ### Keywords: utilities
+> 
+> ### ** Examples
+> ## Not run: 
+> ##D ## from a package top-level source directory
+> ##D paths <- sort(Sys.glob(c("data/*.rda", "data/*.RData")))
+> ##D (res <- checkRdaFiles(paths))
+> ##D ## pick out some that may need attention
+> ##D bad <- is.na(res$ASCII) | res$ASCII | (res$size > 1e4 & res$compress == "none")
+> ##D res[bad, ]
+> ## End(Not run)
+> 
+> 
+> cleanEx()
+> nameEx("check_packages_in_dir")
+> ### * check_packages_in_dir
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: check_packages_in_dir
+> ### Title: Check Source Packages and Their Reverse Dependencies
+> ### Aliases: check_packages_in_dir summarize_check_packages_in_dir_depends
+> ###   summarize_check_packages_in_dir_results
+> ###   summarize_check_packages_in_dir_timings check_packages_in_dir_changes
+> ###   check_packages_in_dir_details
+> ### Keywords: utilities
+> 
+> ### ** Examples
+> 
+> ## Not run: 
+> ##D ## Check packages in dir without reverse dependencies:
+> ##D check_packages_in_dir(dir)
+> ##D ## Check packages in dir and their reverse dependencies using the
+> ##D ## defaults (all repositories in getOption("repos"), all "strong"
+> ##D ## reverse dependencies, no recursive reverse dependencies):
+> ##D check_packages_in_dir(dir, reverse = list())
+> ##D ## Check packages in dir with their reverse dependencies from CRAN,
+> ##D ## using all strong reverse dependencies and reverse suggests:
+> ##D check_packages_in_dir(dir,
+> ##D                       reverse = list(repos = getOption("repos")["CRAN"],
+> ##D                                      which = "most"))                   
+> ##D ## Check packages in dir with their reverse dependencies from CRAN,
+> ##D ## using '--as-cran' for the former but not the latter:
+> ##D check_packages_in_dir(dir,
+> ##D                       check_args = c("--as-cran", ""),
+> ##D                       reverse = list(repos = getOption("repos")["CRAN"]))
+> ## End(Not run)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("delimMatch")
+> ### * delimMatch
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: delimMatch
+> ### Title: Delimited Pattern Matching
+> ### Aliases: delimMatch
+> ### Keywords: character
+> 
+> ### ** Examples
+> 
+> x <- c("\\value{foo}", "function(bar)")
+> delimMatch(x)
+[1]  7 -1
+attr(,"match.length")
+[1]  5 -1
+> delimMatch(x, c("(", ")"))
+[1] -1  9
+attr(,"match.length")
+[1] -1  5
+> 
+> 
+> 
+> cleanEx()
+> nameEx("dependsOnPkgs")
+> ### * dependsOnPkgs
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: dependsOnPkgs
+> ### Title: Find Reverse Dependencies
+> ### Aliases: dependsOnPkgs
+> ### Keywords: utilities
+> 
+> ### ** Examples
+> 
+> 
+> cleanEx()
+> nameEx("encoded")
+> ### * encoded
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: encoded_text_to_latex
+> ### Title: Translate non-ASCII Text to LaTeX Escapes
+> ### Aliases: encoded_text_to_latex
+> ### Keywords: utilities
+> 
+> ### ** Examples
+> 
+> x <- "fa\xE7ile"
+> encoded_text_to_latex(x, "latin1")
+[1] "fa{\\c c}ile"
+> ## Not run: 
+> ##D ## create a tex file to show the upper half of 8-bit charsets
+> ##D x <- rawToChar(as.raw(160:255), multiple = TRUE)
+> ##D (x <- matrix(x, ncol = 16, byrow = TRUE))
+> ##D xx <- x
+> ##D xx[] <- encoded_text_to_latex(x, "latin1") # or latin2 or latin9
+> ##D xx <- apply(xx, 1, paste, collapse = "&")
+> ##D con <- file("test-encoding.tex", "w")
+> ##D header <- c(
+> ##D "\\documentclass{article}",
+> ##D "\\usepackage[T1]{fontenc}",
+> ##D "\\usepackage{Rd}",
+> ##D "\\begin{document}",
+> ##D "\\HeaderA{test}{}{test}",
+> ##D "\\begin{Details}\relax",
+> ##D "\\Tabular{cccccccccccccccc}{")
+> ##D trailer <- c("}", "\\end{Details}", "\\end{document}")
+> ##D writeLines(header, con)
+> ##D writeLines(paste0(xx, "\\"), con)
+> ##D writeLines(trailer, con)
+> ##D close(con)
+> ##D ## and some UTF_8 chars
+> ##D x <- intToUtf8(as.integer(
+> ##D     c(160:383,0x0192,0x02C6,0x02C7,0x02CA,0x02D8,
+> ##D       0x02D9, 0x02DD, 0x200C, 0x2018, 0x2019, 0x201C,
+> ##D       0x201D, 0x2020, 0x2022, 0x2026, 0x20AC)),
+> ##D                multiple = TRUE)
+> ##D x <- matrix(x, ncol = 16, byrow = TRUE)
+> ##D xx <- x
+> ##D xx[] <- encoded_text_to_latex(x, "UTF-8")
+> ##D xx <- apply(xx, 1, paste, collapse = "&")
+> ##D con <- file("test-utf8.tex", "w")
+> ##D writeLines(header, con)
+> ##D writeLines(paste(xx, "\\", sep = ""), con)
+> ##D writeLines(trailer, con)
+> ##D close(con)
+> ## End(Not run)
+> 
+> 
+> cleanEx()
+> nameEx("fileutils")
+> ### * fileutils
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: fileutils
+> ### Title: File Utilities
+> ### Aliases: file_ext file_path_as_absolute file_path_sans_ext
+> ###   list_files_with_exts list_files_with_type
+> ### Keywords: file
+> 
+> ### ** Examples
+> 
+> 
+> cleanEx()
+> nameEx("find_gs_cmd")
+> ### * find_gs_cmd
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: find_gs_cmd
+> ### Title: Find a GhostScript Executable
+> ### Aliases: find_gs_cmd R_GSCMD GSC
+> 
+> ### ** Examples
+> ## Not run: 
+> ##D ## Suppose a Solaris system has GhostScript 9.00 on the path and
+> ##D ## 9.07 in /opt/csw/bin.  Then one might set
+> ##D Sys.setenv(R_GSCMD = "/opt/csw/bin/gs")
+> ## End(Not run)
+> 
+> 
+> cleanEx()
+> nameEx("getVignetteInfo")
+> ### * getVignetteInfo
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: getVignetteInfo
+> ### Title: Get Information on Installed Vignettes
+> ### Aliases: getVignetteInfo
+> ### Keywords: utilities documentation
+> 
+> ### ** Examples
+> 
+> 
+> 
+> 
+> cleanEx()
+> nameEx("loadRdMacros")
+> ### * loadRdMacros
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: loadRdMacros
+> ### Title: Load User-defined Rd Help System Macros
+> ### Aliases: loadRdMacros loadPkgRdMacros
+> ### Keywords: utilities documentation
+> 
+> ### ** Examples
+> 
+> f <- tempfile()
+> writeLines(paste0(
++     r"(\newcommand{\Rlogo}{\if{html}{\figure{Rlogo.svg}{options: width=100 alt="R logo"}})",
++     r"(\if{latex}{\figure{Rlogo.pdf}{options: width=0.5in}}})"
++ ), f)
+> m <- loadRdMacros(f)
+> ls(m)
+[1] "\\Rlogo"
+> ls(parent.env(parent.env(m)))
+character(0)
+> parse_Rd(textConnection(r"(\Rlogo)"), fragment = TRUE, macros = m)
+\if{html}{\figure{Rlogo.svg}{options: width=100 alt="R logo"}}\if{latex}{\figure{Rlogo.pdf}{options: width=0.5in}}
+> 
+> 
+> 
+> cleanEx()
+> nameEx("makevars")
+> ### * makevars
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: makevars
+> ### Title: User and Site Compilation Variables
+> ### Aliases: makevars_user makevars_site
+> ### Keywords: utilities
+> 
+> ### ** Examples
+> ## Don't show: 
+> checkMV <- function(r)
++   stopifnot(is.character(r),
++             length(r) == 0 || (length(r) == 1 && file.exists(r)))
+> checkMV(makevars_user())
+> checkMV(makevars_site())
+> ## End(Don't show)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("md5sum")
+> ### * md5sum
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: md5sum
+> ### Title: Compute MD5 Checksums
+> ### Aliases: md5sum
+> ### Keywords: utilities
+> 
+> ### ** Examples
+> 
+> as.vector(md5sum(dir(R.home(), pattern = "^COPY", full.names = TRUE)))
+[1] "eb723b61539feef013de476e68b5c50a"
+> 
+> 
+> 
+> cleanEx()
+> nameEx("package_dependencies")
+> ### * package_dependencies
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: package_dependencies
+> ### Title: Computations on the Dependency Hierarchy of Packages
+> ### Aliases: package_dependencies
+> ### Keywords: utilities
+> 
+> ### ** Examples
+> 
+> 
+> 
+> 
+> cleanEx()
+> nameEx("package_native_routine_registration_skeleton")
+> ### * package_native_routine_registration_skeleton
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: package_native_routine_registration_skeleton
+> ### Title: Write Skeleton for Adding Native Routine Registration to a
+> ###   Package
+> ### Aliases: package_native_routine_registration_skeleton
+> 
+> ### ** Examples
+> ## Not run: 
+> ##D ## with a completed splines/DESCRIPTION file,
+> ##D tools::package_native_routine_registration_skeleton('splines',,,FALSE)
+> ##D ## produces
+> ##D #include <R.h>
+> ##D #include <Rinternals.h>
+> ##D #include <stdlib.h> // for NULL
+> ##D #include <R_ext/Rdynload.h>
+> ##D 
+> ##D /* FIXME: 
+> ##D    Check these declarations against the C/Fortran source code.
+> ##D */
+> ##D 
+> ##D /* .Call calls */
+> ##D extern SEXP spline_basis(SEXP, SEXP, SEXP, SEXP);
+> ##D extern SEXP spline_value(SEXP, SEXP, SEXP, SEXP, SEXP);
+> ##D 
+> ##D static const R_CallMethodDef CallEntries[] = {
+> ##D     {"spline_basis", (DL_FUNC) &spline_basis, 4},
+> ##D     {"spline_value", (DL_FUNC) &spline_value, 5},
+> ##D     {NULL, NULL, 0}
+> ##D };
+> ##D 
+> ##D void R_init_splines(DllInfo *dll)
+> ##D {
+> ##D     R_registerRoutines(dll, NULL, CallEntries, NULL, NULL);
+> ##D     R_useDynamicSymbols(dll, FALSE);
+> ##D }
+> ## End(Not run)
+> 
+> 
+> cleanEx()
+> nameEx("parseLatex")
+> ### * parseLatex
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: parseLatex
+> ### Title: Experimental Functions to Work with LaTeX Code
+> ### Aliases: parseLatex deparseLatex latexToUtf8
+> ### Keywords: utilities documentation
+> 
+> ### ** Examples
+> 
+> 
+> cleanEx()
+> nameEx("print.via.format")
+> ### * print.via.format
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: .print.via.format
+> ### Title: Printing Utilities
+> ### Aliases: .print.via.format
+> ### Keywords: utilities
+> 
+> ### ** Examples
+> 
+> ## The function is simply defined as
+>  function (x, ...) {
++     writeLines(format(x, ...))
++     invisible(x)
++  }
+function (x, ...) 
+{
+    writeLines(format(x, ...))
+    invisible(x)
+}
+> 
+> ## is used for simple print methods in R, and as prototype for new methods.
+> 
+> 
+> 
+> cleanEx()
+> nameEx("pskill")
+> ### * pskill
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: pskill
+> ### Title: Kill a Process
+> ### Aliases: pskill SIGHUP SIGINT SIGQUIT SIGKILL SIGTERM SIGSTOP SIGTSTP
+> ###   SIGCONT SIGCHLD SIGUSR1 SIGUSR2
+> ### Keywords: utilities
+> 
+> ### ** Examples
+> ## Not run: 
+> ##D pskill(c(237, 245), SIGKILL)
+> ## End(Not run)
+> 
+> 
+> cleanEx()
+> nameEx("showNonASCII")
+> ### * showNonASCII
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: showNonASCII
+> ### Title: Pick Out Non-ASCII Characters
+> ### Aliases: showNonASCII showNonASCIIfile
+> ### Keywords: utilities
+> 
+> ### ** Examples
+> 
+> out <- c(
++ "fa\xE7ile test of showNonASCII():",
++ "\\details{",
++ "   This is a good line",
++ "   This has an \xfcmlaut in it.",
++ "   OK again.",
++ "}")
+> f <- tempfile()
+> cat(out, file = f, sep = "\n")
+> 
+> showNonASCIIfile(f)
+1: fa<e7>ile test of showNonASCII():
+4:    This has an <fc>mlaut in it.
+> unlink(f)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("toHTML")
+> ### * toHTML
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: toHTML
+> ### Title: Display an Object in HTML
+> ### Aliases: toHTML toHTML.packageIQR toHTML.news_db
+> ### Keywords: utilities documentation
+> 
+> ### ** Examples
+> 
+> cat(toHTML(demo(package = "base")), sep = "\n")
+<!DOCTYPE html>
+<html>
+<head><title>R: R</title>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
+<link rel="stylesheet" type="text/css" href="/doc/html/R.css" />
+</head><body><div class="container">
+<h1> R
+<img class="toplogo" src="/doc/html/Rlogo.svg" alt="[R logo]" />
+</h1>
+<hr/>
+<div style="text-align: center;">
+<a href="/doc/html/index.html"><img class="arrow" src="/doc/html/up.jpg" alt="[Top]" /></a>
+</div>
+<h2>Demos in package &lsquo;base&rsquo;</h2>
+<table cols="2" style="width: 100%;">
+<tr>
+ <td style="text-align: left; vertical-align: top; width: 10%;">
+error.catching
+ </td>
+ <td style="text-align: left; vertical-align: top; width: 90%;">
+More examples on catching and handling errors
+ </td>
+</tr>
+
+<tr>
+ <td style="text-align: left; vertical-align: top; width: 10%;">
+is.things
+ </td>
+ <td style="text-align: left; vertical-align: top; width: 90%;">
+Explore some properties of R objects and is.FOO() functions. Not for newbies!
+ </td>
+</tr>
+
+<tr>
+ <td style="text-align: left; vertical-align: top; width: 10%;">
+recursion
+ </td>
+ <td style="text-align: left; vertical-align: top; width: 90%;">
+Using recursion for adaptive integration
+ </td>
+</tr>
+
+<tr>
+ <td style="text-align: left; vertical-align: top; width: 10%;">
+scoping
+ </td>
+ <td style="text-align: left; vertical-align: top; width: 90%;">
+An illustration of lexical scoping.
+ </td>
+</tr>
+
+</table>
+<p>
+</p>
+</div></body></html>
+> 
+> 
+> 
+> cleanEx()
+> nameEx("undoc")
+> ### * undoc
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: undoc
+> ### Title: Find Undocumented Objects
+> ### Aliases: undoc print.undoc
+> ### Keywords: documentation
+> 
+> ### ** Examples
+> 
+> undoc("tools")                  # Undocumented objects in 'tools'
+> 
+> 
+> 
+> cleanEx()
+> nameEx("updatePACKAGES")
+> ### * updatePACKAGES
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: update_PACKAGES
+> ### Title: Update Existing PACKAGES Files
+> ### Aliases: update_PACKAGES
+> ### Keywords: file utilities
+> 
+> ### ** Examples
+> 
+> ## Not run: 
+> ##D write_PACKAGES("c:/myFolder/myRepository") # on Windows
+> ##D update_PACKAGES("c:/myFolder/myRepository") # on Windows
+> ##D write_PACKAGES("/pub/RWin/bin/windows/contrib/2.9",
+> ##D type = "win.binary") # on Linux
+> ##D update_PACKAGES("/pub/RWin/bin/windows/contrib/2.9",
+> ##D type = "win.binary") # on Linux
+> ## End(Not run)
+> 
+> 
+> cleanEx()
+> nameEx("userdir")
+> ### * userdir
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: userdir
+> ### Title: R User Directories
+> ### Aliases: R_user_dir
+> 
+> ### ** Examples
+> 
+> ## IGNORE_RDIFF_BEGIN
+> R_user_dir("FOO", "cache")
+[1] "/Users/ripley/Library/Caches/org.R-project.R/R/FOO"
+> ## IGNORE_RDIFF_END
+> 
+> 
+> 
+> cleanEx()
+> nameEx("vignetteEngine")
+> ### * vignetteEngine
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: vignetteEngine
+> ### Title: Set or Get a Vignette Processing Engine
+> ### Aliases: vignetteEngine
+> ### Keywords: utilities documentation
+> 
+> ### ** Examples
+> 
+> str(vignetteEngine("Sweave"))
+List of 6
+ $ name   : chr "Sweave"
+ $ package: chr "utils"
+ $ pattern: chr "[.][rRsS](nw|tex)$"
+ $ weave  :function (...)  
+ $ tangle :function (...)  
+ $ aspell :List of 2
+  ..$ filter : chr "Sweave"
+  ..$ control: chr "-t"
+> 
+> 
+> 
+> cleanEx()
+> nameEx("vignetteInfo")
+> ### * vignetteInfo
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: vignetteInfo
+> ### Title: Basic Information about a Vignette
+> ### Aliases: vignetteInfo
+> ### Keywords: utilities
+> 
+> ### ** Examples
+> 
+>   gridEx <- system.file("doc", "grid.Rnw", package = "grid")
+>   vi <- vignetteInfo(gridEx)
+>   str(vi)
+List of 5
+ $ file    : chr "grid.Rnw"
+ $ title   : chr "Introduction to grid"
+ $ depends : chr(0) 
+ $ keywords: chr(0) 
+ $ engine  : chr "utils::Sweave"
+> 
+> 
+> 
+> cleanEx()
+> nameEx("writePACKAGES")
+> ### * writePACKAGES
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: write_PACKAGES
+> ### Title: Generate PACKAGES Files
+> ### Aliases: write_PACKAGES
+> ### Keywords: file utilities
+> 
+> ### ** Examples
+> 
+> ## Not run: 
+> ##D write_PACKAGES("c:/myFolder/myRepository")  # on Windows
+> ##D write_PACKAGES("/pub/RWin/bin/windows/contrib/2.9",
+> ##D                type = "win.binary")  # on Linux
+> ## End(Not run)
+> 
+> 
+> cleanEx()
+> nameEx("xgettext")
+> ### * xgettext
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: xgettext
+> ### Title: Extract Translatable Messages from R Files in a Package
+> ### Aliases: xgettext xngettext xgettext2pot
+> ### Keywords: utilities
+> 
+> ### ** Examples
+> ## Not run: 
+> ##D ## in a source-directory build (not typical!) of R;
+> ##D ## otherwise, download and unpack the R sources, and replace
+> ##D ## R.home()  by  "<my_path_to_source_R>" :
+> ##D xgettext(file.path(R.home(), "src", "library", "splines"))
+> ## End(Not run)
+> 
+> ## Create source package-like  <tmp>/R/foo.R  and get text from it:
+> tmpPkg <- tempdir()
+> tmpRDir <- file.path(tmpPkg, "R")
+> dir.create(tmpRDir, showWarnings = FALSE)
+> fnChar <- paste(sep = "\n",
++   "foo <- function(x) {",
++   "  if (x < -1)  stop('too small')",
++   "  # messages unduplicated (not so for ngettext)",
++   "  if (x < -.5) stop('too small')",
++   "  if (x < 0) {",
++   "    warning(",
++   "      'sqrt(x) is', sqrt(as.complex(x)),",
++   "      ', which may be too small'",
++   "    )",
++   "  }",
++   "  # calls with domain=NA are skipped",
++   "  if (x == 0) cat(gettext('x is 0!\n', domain=NA))",
++   "  # gettext strings may be ignored due to 'outer' domain=NA",
++   "  if (x > 10) stop('x is ', gettextf('%.2f', x), domain=NA)",
++   "  x",
++   "}")
+> 
+> writeLines(fnChar, con = file.path(tmpRDir, "foo.R"))
+> 
+> ## [[1]] : suppressing (tmpfile) name to make example Rdiff-able
+> xgettext(tmpPkg, asCall=TRUE )[[1]] # default; shows  ' sqrt(as.complex(x)) '
+too small
+sqrt(x) is
+sqrt(as.complex(x))
+, which may be too small
+> xgettext(tmpPkg, asCall=FALSE)[[1]] # doesn't ; but then ' %.2f '
+too small
+sqrt(x) is
+, which may be too small
+%.2f
+> 
+> unlink(tmpRDir, recursive=TRUE)
+> 
+> 
+> 
+> ### * <FOOTER>
+> ###
+> cleanEx()
+> options(digits = 7L)
+> base::cat("Time elapsed: ", proc.time() - base::get("ptime", pos = 'CheckExEnv'),"\n")
+Time elapsed:  0.149 0.013 0.163 0 0 
+> grDevices::dev.off()
+null device 
+          1 
+> ###
+> ### Local variables: ***
+> ### mode: outline-minor ***
+> ### outline-regexp: "\\(> \\)?### [*]+" ***
+> ### End: ***
+> quit('no')
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/tests/Examples/stats4-Ex.Rout.save
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/tests/Examples/stats4-Ex.Rout.save	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/tests/Examples/stats4-Ex.Rout.save	(revision 3762)
@@ -0,0 +1,340 @@
+
+R Under development (unstable) (2022-03-19 r81942) -- "Unsuffered Consequences"
+Copyright (C) 2022 The R Foundation for Statistical Computing
+Platform: x86_64-pc-linux-gnu (64-bit)
+
+R is free software and comes with ABSOLUTELY NO WARRANTY.
+You are welcome to redistribute it under certain conditions.
+Type 'license()' or 'licence()' for distribution details.
+
+  Natural language support but running in an English locale
+
+R is a collaborative project with many contributors.
+Type 'contributors()' for more information and
+'citation()' on how to cite R or R packages in publications.
+
+Type 'demo()' for some demos, 'help()' for on-line help, or
+'help.start()' for an HTML browser interface to help.
+Type 'q()' to quit R.
+
+> pkgname <- "stats4"
+> source(file.path(R.home("share"), "R", "examples-header.R"))
+> options(warn = 1)
+> library('stats4')
+> 
+> base::assign(".oldSearch", base::search(), pos = 'CheckExEnv')
+> base::assign(".old_wd", base::getwd(), pos = 'CheckExEnv')
+> cleanEx()
+> nameEx("mle")
+> ### * mle
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: mle
+> ### Title: Maximum Likelihood Estimation
+> ### Aliases: mle
+> ### Keywords: models
+> 
+> ### ** Examples
+> 
+> ## Avoid printing to unwarranted accuracy
+> od <- options(digits = 5)
+> 
+> ## Simulated EC50 experiment with count data
+> x <- 0:10
+> y <- c(26, 17, 13, 12, 20, 5, 9, 8, 5, 4, 8)
+> 
+> ## Easy one-dimensional MLE:
+> nLL <- function(lambda) -sum(stats::dpois(y, lambda, log = TRUE))
+> fit0 <- mle(nLL, start = list(lambda = 5), nobs = NROW(y))
+> 
+> ## sanity check --- notice that "nobs" must be input
+> ## (not guaranteed to be meaningful for any likelihood)
+> stopifnot(nobs(fit0) == length(y))
+> 
+> 
+> # For 1D, this is preferable:
+> fit1 <- mle(nLL, start = list(lambda = 5), nobs = NROW(y),
++             method = "Brent", lower = 1, upper = 20)
+> 
+> ## This needs a constrained parameter space: most methods will accept NA
+> ll <- function(ymax = 15, xhalf = 6) {
++     if(ymax > 0 && xhalf > 0)
++       -sum(stats::dpois(y, lambda = ymax/(1+x/xhalf), log = TRUE))
++     else NA
++ }
+> (fit <- mle(ll, nobs = length(y)))
+
+Call:
+mle(minuslogl = ll, nobs = length(y))
+
+Coefficients:
+   ymax   xhalf 
+24.9931  3.0571 
+> mle(ll, fixed = list(xhalf = 6))
+
+Call:
+mle(minuslogl = ll, fixed = list(xhalf = 6))
+
+Coefficients:
+  ymax  xhalf 
+19.288  6.000 
+> 
+> ## Alternative using bounds on optimization
+> ll2 <- function(ymax = 15, xhalf = 6)
++     -sum(stats::dpois(y, lambda = ymax/(1+x/xhalf), log = TRUE))
+> mle(ll2, lower = rep(0, 2))
+
+Call:
+mle(minuslogl = ll2, lower = rep(0, 2))
+
+Coefficients:
+   ymax   xhalf 
+24.9994  3.0558 
+> 
+> AIC(fit)
+[1] 61.208
+> BIC(fit)
+[1] 62.004
+> 
+> summary(fit)
+Maximum likelihood estimation
+
+Call:
+mle(minuslogl = ll, nobs = length(y))
+
+Coefficients:
+      Estimate Std. Error
+ymax   24.9931     4.2244
+xhalf   3.0571     1.0348
+
+-2 log L: 57.208 
+> logLik(fit)
+'log Lik.' -28.604 (df=2)
+> vcov(fit)
+         ymax   xhalf
+ymax  17.8459 -3.7206
+xhalf -3.7206  1.0708
+> plot(profile(fit), absVal = FALSE)
+> confint(fit)
+Profiling...
+        2.5 %  97.5 %
+ymax  17.8845 34.6194
+xhalf  1.6616  6.4792
+> 
+> ## Use bounded optimization
+> ## The lower bounds are really > 0,
+> ## but we use >=0 to stress-test profiling
+> (fit2 <- mle(ll2, lower = c(0, 0)))
+
+Call:
+mle(minuslogl = ll2, lower = c(0, 0))
+
+Coefficients:
+   ymax   xhalf 
+24.9994  3.0558 
+> plot(profile(fit2), absVal = FALSE)
+> 
+> ## A better parametrization:
+> ll3 <- function(lymax = log(15), lxhalf = log(6))
++     -sum(stats::dpois(y, lambda = exp(lymax)/(1+x/exp(lxhalf)), log = TRUE))
+> (fit3 <- mle(ll3))
+
+Call:
+mle(minuslogl = ll3)
+
+Coefficients:
+ lymax lxhalf 
+3.2189 1.1170 
+> plot(profile(fit3), absVal = FALSE)
+> exp(confint(fit3))
+Profiling...
+         2.5 %  97.5 %
+lymax  17.8815 34.6186
+lxhalf  1.6615  6.4794
+> 
+> # Regression tests for bounded cases (this was broken in R 3.x)
+> fit4 <- mle(ll, lower = c(0, 4)) # has max on boundary
+> confint(fit4)
+Profiling...
+       2.5 %  97.5 %
+ymax  17.446 26.5081
+xhalf     NA  6.9109
+> 
+> ## direct check that fixed= and constraints work together
+> mle(ll, lower = c(0, 4), fixed=list(ymax=23)) # has max on boundary
+
+Call:
+mle(minuslogl = ll, fixed = list(ymax = 23), lower = c(0, 4))
+
+Coefficients:
+ ymax xhalf 
+   23     4 
+> 
+> ## Linear regression using MLE
+> x <- 1:10 
+> y <- c(0.48, 2.24, 2.22, 5.15, 4.64, 5.53, 7, 8.8, 7.67, 9.23)
+> 
+> LM_mll <- function(formula, data = environment(formula))
++ {
++      y <- model.response(model.frame(formula, data))
++      X <- model.matrix(formula, data)
++      b0 <- numeric(NCOL(X))
++      names(b0) <- colnames(X)
++      function(b=b0, sigma=1)
++          -sum(dnorm(y, X %*% b, sigma, log=TRUE))
++ }
+> 
+> mll <- LM_mll(y ~ x)
+> 
+> summary(lm(y~x)) # for comparison -- notice variance bias in MLE
+
+Call:
+lm(formula = y ~ x)
+
+Residuals:
+   Min     1Q Median     3Q    Max 
+-0.937 -0.500 -0.211  0.278  1.273 
+
+Coefficients:
+            Estimate Std. Error t value Pr(>|t|)    
+(Intercept)   0.0927     0.5376    0.17     0.87    
+x             0.9461     0.0866   10.92  4.4e-06 ***
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+
+Residual standard error: 0.787 on 8 degrees of freedom
+Multiple R-squared:  0.937,	Adjusted R-squared:  0.929 
+F-statistic:  119 on 1 and 8 DF,  p-value: 4.39e-06
+
+> summary(mle(mll, lower=c(-Inf,-Inf, 0.01)))
+Maximum likelihood estimation
+
+Call:
+mle(minuslogl = mll, lower = c(-Inf, -Inf, 0.01))
+
+Coefficients:
+              Estimate Std. Error
+b.(Intercept) 0.092667   0.480869
+b.x           0.946061   0.077499
+sigma         0.703919   0.157400
+
+-2 log L: 21.357 
+> summary(mle(mll, lower=list(sigma = 0.01))) # alternative specification
+Maximum likelihood estimation
+
+Call:
+mle(minuslogl = mll, lower = list(sigma = 0.01))
+
+Coefficients:
+              Estimate Std. Error
+b.(Intercept) 0.092667   0.480869
+b.x           0.946061   0.077499
+sigma         0.703919   0.157400
+
+-2 log L: 21.357 
+> 
+> confint(mle(mll, lower=list(sigma = 0.01)))
+Profiling...
+                 2.5 % 97.5 %
+b.(Intercept) -0.94831 1.1336
+b.x            0.77829 1.1138
+sigma          0.48017 1.1755
+> plot(profile(mle(mll, lower=list(sigma = 0.01))))
+> 
+> Binom_mll <- function(x, n)
++ {
++     force(x); force(n) ## beware lazy evaluation
++     function(p=.5) -dbinom(x, n, p, log=TRUE)
++ }
+> 
+> ## Likelihood functions for different x.
+> ## This code goes wrong, if force(x) is not used in Binom_mll:
+> 
+> curve(Binom_mll(0, 10)(p), xname="p", ylim=c(0, 10))
+> mll_list <- list(10)
+> for (x in 1:10)
++     mll_list[[x]] <- Binom_mll(x, 10)
+> for (mll in mll_list)
++     curve(mll(p), xname="p", add=TRUE)
+> 
+> mll <- Binom_mll(4,10)
+> mle(mll, lower = 1e-16, upper = 1-1e-16) # limits must be inside (0,1)
+
+Call:
+mle(minuslogl = mll, lower = 1e-16, upper = 1 - 1e-16)
+
+Coefficients:
+  p 
+0.4 
+> 
+> ## Boundary case: This works, but fails if limits are set closer to 0 and 1  
+> mll <- Binom_mll(0, 10)
+> mle(mll, lower=.005, upper=.995)
+
+Call:
+mle(minuslogl = mll, lower = 0.005, upper = 0.995)
+
+Coefficients:
+    p 
+0.005 
+> 
+> ## Not run: 
+> ##D ## We can use limits closer to the boundaries if we use the
+> ##D ## drop-in replacement optimr() from the optimx package.
+> ##D 
+> ##D mle(mll, lower = 1e-16, upper = 1-1e-16, optim=optimx::optimr)
+> ## End(Not run)
+> 
+> 
+> options(od)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("update-methods")
+> ### * update-methods
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: update-methods
+> ### Title: Methods for Function 'update' in Package 'stats4'
+> ### Aliases: update-methods update,ANY-method update,mle-method
+> ### Keywords: methods
+> 
+> ### ** Examples
+> 
+> x <- 0:10
+> y <- c(26, 17, 13, 12, 20, 5, 9, 8, 5, 4, 8)
+> ll <- function(ymax = 15, xhalf = 6)
++     -sum(stats::dpois(y, lambda = ymax/(1+x/xhalf), log = TRUE))
+> fit <- mle(ll)
+Warning in stats::dpois(y, lambda = ymax/(1 + x/xhalf), log = TRUE) :
+  NaNs produced
+> ## note the recorded call contains ..1, a problem with S4 dispatch
+> update(fit, fixed = list(xhalf = 3))
+
+Call:
+mle(minuslogl = ll, fixed = ..1)
+
+Coefficients:
+    ymax    xhalf 
+25.19609  3.00000 
+> 
+> 
+> 
+> ### * <FOOTER>
+> ###
+> cleanEx()
+> options(digits = 7L)
+> base::cat("Time elapsed: ", proc.time() - base::get("ptime", pos = 'CheckExEnv'),"\n")
+Time elapsed:  2.16 0.024 2.2 0 0 
+> grDevices::dev.off()
+null device 
+          1 
+> ###
+> ### Local variables: ***
+> ### mode: outline-minor ***
+> ### outline-regexp: "\\(> \\)?### [*]+" ***
+> ### End: ***
+> quit('no')
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/tests/Examples/grid-Ex.Rout.save
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/tests/Examples/grid-Ex.Rout.save	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/tests/Examples/grid-Ex.Rout.save	(revision 3762)
@@ -0,0 +1,2448 @@
+
+R Under development (unstable) (2022-03-19 r81942) -- "Unsuffered Consequences"
+Copyright (C) 2022 The R Foundation for Statistical Computing
+Platform: x86_64-pc-linux-gnu (64-bit)
+
+R is free software and comes with ABSOLUTELY NO WARRANTY.
+You are welcome to redistribute it under certain conditions.
+Type 'license()' or 'licence()' for distribution details.
+
+  Natural language support but running in an English locale
+
+R is a collaborative project with many contributors.
+Type 'contributors()' for more information and
+'citation()' on how to cite R or R packages in publications.
+
+Type 'demo()' for some demos, 'help()' for on-line help, or
+'help.start()' for an HTML browser interface to help.
+Type 'q()' to quit R.
+
+> pkgname <- "grid"
+> source(file.path(R.home("share"), "R", "examples-header.R"))
+> options(warn = 1)
+> library('grid')
+> 
+> base::assign(".oldSearch", base::search(), pos = 'CheckExEnv')
+> base::assign(".old_wd", base::getwd(), pos = 'CheckExEnv')
+> cleanEx()
+> nameEx("Grid")
+> ### * Grid
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: Grid
+> ### Title: Grid Graphics
+> ### Aliases: Grid
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> ## Diagram of a simple layout
+> grid.show.layout(grid.layout(4,2,
++                      heights=unit(rep(1, 4),
++                                   c("lines", "lines", "lines", "null")),
++                      widths=unit(c(1, 1), "inches")))
+> ## Diagram of a sample viewport
+> grid.show.viewport(viewport(x=0.6, y=0.6,
++                             width=unit(1, "inches"), height=unit(1, "inches")))
+> ## A flash plotting example
+> grid.multipanel(vp=viewport(0.5, 0.5, 0.8, 0.8))
+> 
+> 
+> 
+> cleanEx()
+> nameEx("arrow")
+> ### * arrow
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: arrow
+> ### Title: Describe arrows to add to a line.
+> ### Aliases: arrow
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> arrow()
+$angle
+[1] 30
+
+$length
+[1] 0.25inches
+
+$ends
+[1] 2
+
+$type
+[1] 1
+
+attr(,"class")
+[1] "arrow"
+> 
+> 
+> 
+> cleanEx()
+> nameEx("as.mask")
+> ### * as.mask
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: as.mask
+> ### Title: Define a Soft Mask
+> ### Aliases: as.mask
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> ## NOTE: on devices without support for masks normal line segments 
+> ##       will be drawn
+> grid.newpage()
+> ## Alpha mask
+> grid.segments(y0=1, y1=0, gp=gpar(col=2, lwd=100))
+> pushViewport(viewport(mask=circleGrob(gp=gpar(fill=rgb(0,0,0,.5)))))
+> grid.segments(gp=gpar(col=3, lwd=100))
+> grid.newpage()
+> ## Luminance mask
+> grid.segments(y0=1, y1=0, gp=gpar(col=2, lwd=100))
+> pushViewport(viewport(mask=as.mask(circleGrob(gp=gpar(fill="grey50")),
++                                    "luminance")))
+> grid.segments(gp=gpar(col=3, lwd=100))
+> 
+> 
+> 
+> cleanEx()
+> nameEx("calcStringMetric")
+> ### * calcStringMetric
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: calcStringMetric
+> ### Title: Calculate Metric Information for Text
+> ### Aliases: calcStringMetric
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> grid.newpage()
+> grid.segments(.01, .5, .99, .5, gp=gpar(col="grey"))
+> metrics <- calcStringMetric(letters)
+> grid.rect(x=1:26/27,
++           width=unit(metrics$width, "inches"),
++           height=unit(metrics$ascent, "inches"),
++           just="bottom",
++           gp=gpar(col="red"))
+> grid.rect(x=1:26/27,
++           width=unit(metrics$width, "inches"),
++           height=unit(metrics$descent, "inches"),
++           just="top",
++           gp=gpar(col="red"))
+> grid.text(letters, x=1:26/27, just="bottom")
+> 
+> test <- function(x) {
++     grid.text(x, just="bottom")
++     metric <- calcStringMetric(x)
++     if (is.character(x)) {
++         grid.rect(width=unit(metric$width, "inches"),
++                   height=unit(metric$ascent, "inches"),
++                   just="bottom",
++                   gp=gpar(col=rgb(1,0,0,.5)))
++         grid.rect(width=unit(metric$width, "inches"),
++                   height=unit(metric$descent, "inches"),
++                   just="top",
++                   gp=gpar(col=rgb(1,0,0,.5)))
++     } else {
++         grid.rect(width=unit(metric$width, "inches"),
++                   y=unit(.5, "npc") + unit(metric[2], "inches"),
++                   height=unit(metric$ascent, "inches"),
++                   just="bottom",
++                   gp=gpar(col=rgb(1,0,0,.5)))
++         grid.rect(width=unit(metric$width, "inches"),
++                   height=unit(metric$descent, "inches"),
++                   just="bottom",
++                   gp=gpar(col=rgb(1,0,0,.5)))
++     }
++ }
+> 
+> tests <- list("t",
++               "test",
++               "testy",
++               "test\ntwo",
++               expression(x),
++               expression(y),
++               expression(x + y),
++               expression(a + b),
++               expression(atop(x + y, 2)))
+> 
+> grid.newpage()
+> nrowcol <- n2mfrow(length(tests))
+> pushViewport(viewport(layout=grid.layout(nrowcol[1], nrowcol[2]),
++                       gp=gpar(cex=5, lwd=.5)))
+> for (i in 1:length(tests)) {
++     col <- (i - 1) %% nrowcol[2] + 1
++     row <- (i - 1) %/% nrowcol[2] + 1
++     pushViewport(viewport(layout.pos.row=row, layout.pos.col=col))
++     test(tests[[i]])
++     popViewport()
++ }
+> 
+> 
+> 
+> 
+> cleanEx()
+> nameEx("current.viewport")
+> ### * current.viewport
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: Querying the Viewport Tree
+> ### Title: Get the Current Grid Viewport (Tree)
+> ### Aliases: current.viewport current.parent current.vpTree current.vpPath
+> ###   current.transform current.rotation
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> grid.newpage()
+> pushViewport(viewport(width=0.8, height=0.8, name="A"))
+> pushViewport(viewport(x=0.1, width=0.3, height=0.6,
++   just="left", name="B"))
+> upViewport(1)
+> pushViewport(viewport(x=0.5, width=0.4, height=0.8,
++   just="left", name="C"))
+> pushViewport(viewport(width=0.8, height=0.8, name="D"))
+> current.vpPath()
+GRID.VP.69::A::C::D 
+> upViewport(1)
+> current.vpPath()
+GRID.VP.69::A::C 
+> current.vpTree()
+viewport[ROOT]->(viewport[GRID.VP.69]->(viewport[A]->(viewport[B], viewport[C]->(viewport[D])))) 
+> current.viewport()
+viewport[C] 
+> current.vpTree(all=FALSE)
+viewport[C]->(viewport[D]) 
+> popViewport(0)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("depth")
+> ### * depth
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: depth
+> ### Title: Determine the number of levels in an object.
+> ### Aliases: depth depth.viewport depth.path
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> vp <- viewport()
+> depth(vp)
+[1] 1
+> depth(vpStack(vp, vp))
+[1] 2
+> depth(vpList(vpStack(vp, vp), vp))
+[1] 1
+> depth(vpPath("vp"))
+[1] 1
+> depth(vpPath("vp1", "vp2"))
+[1] 2
+> 
+> 
+> 
+> cleanEx()
+> nameEx("deviceLoc")
+> ### * deviceLoc
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: deviceLoc
+> ### Title: Convert Viewport Location to Device Location
+> ### Aliases: deviceLoc deviceDim
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> ## A tautology
+> grid.newpage()
+> pushViewport(viewport())
+> deviceLoc(unit(1, "inches"), unit(1, "inches"))
+$x
+[1] 1inches
+
+$y
+[1] 1inches
+
+> 
+> ## Something less obvious
+> grid.newpage()
+> pushViewport(viewport(width=.5, height=.5))
+> grid.rect()
+> x <- unit(1, "in")
+> y <- unit(1, "in")
+> grid.circle(x, y, r=unit(2, "mm"))
+> loc <- deviceLoc(x, y)
+> loc
+$x
+[1] 2.7inches
+
+$y
+[1] 2.75inches
+
+> upViewport()
+> grid.circle(loc$x, loc$y, r=unit(1, "mm"), gp=gpar(fill="black"))
+> 
+> ## Something even less obvious
+> grid.newpage()
+> pushViewport(viewport(width=.5, height=.5, angle=30))
+> grid.rect()
+> x <- unit(.2, "npc")
+> y <- unit(2, "in")
+> grid.circle(x, y, r=unit(2, "mm"))
+> loc <- deviceLoc(x, y)
+> loc
+$x
+[1] 2.39165408813987inches
+
+$y
+[1] 3.20650635094611inches
+
+> upViewport()
+> grid.circle(loc$x, loc$y, r=unit(1, "mm"), gp=gpar(fill="black"))
+> 
+> 
+> 
+> cleanEx()
+> nameEx("explode")
+> ### * explode
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: explode
+> ### Title: Explode a path into its components.
+> ### Aliases: explode explode.character explode.path
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> explode("vp1::vp2")
+[1] "vp1" "vp2"
+> explode(vpPath("vp1", "vp2"))
+[1] "vp1" "vp2"
+> 
+> 
+> 
+> cleanEx()
+> nameEx("gEdit")
+> ### * gEdit
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: gEdit
+> ### Title: Create and Apply Edit Objects
+> ### Aliases: gEdit gEditList applyEdit applyEdits
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> grid.rect(gp=gpar(col="red"))
+> # same thing, but more verbose
+> grid.draw(applyEdit(rectGrob(), gEdit(gp=gpar(col="red"))))
+> 
+> 
+> 
+> cleanEx()
+> nameEx("gPath")
+> ### * gPath
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: gPath
+> ### Title: Concatenate Grob Names
+> ### Aliases: gPath
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> gPath("g1", "g2")
+g1::g2 
+> 
+> 
+> 
+> cleanEx()
+> nameEx("getNames")
+> ### * getNames
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: getNames
+> ### Title: List the names of grobs on the display list
+> ### Aliases: getNames
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> grid.grill()
+> getNames()
+[1] "GRID.text.179"     "GRID.rect.180"     "GRID.circle.181"  
+[4] "GRID.circle.182"   "GRID.rect.183"     "GRID.rect.184"    
+[7] "GRID.segments.185" "GRID.segments.186"
+> 
+> 
+> 
+> cleanEx()
+> nameEx("gpar")
+> ### * gpar
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: gpar
+> ### Title: Handling Grid Graphical Parameters
+> ### Aliases: gpar get.gpar
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> gp <- get.gpar()
+> utils::str(gp)
+List of 14
+ $ fill      : chr "transparent"
+ $ col       : chr "black"
+ $ lty       : chr "solid"
+ $ lwd       : num 1
+ $ cex       : num 1
+ $ fontsize  : num 12
+ $ lineheight: num 1.2
+ $ font      : int 1
+ $ fontfamily: chr ""
+ $ alpha     : num 1
+ $ lineend   : chr "round"
+ $ linejoin  : chr "round"
+ $ linemitre : num 10
+ $ lex       : num 1
+ - attr(*, "class")= chr "gpar"
+> ## These *do* nothing but produce a "gpar" object:
+> gpar(col = "red")
+$col
+[1] "red"
+
+> gpar(col = "blue", lty = "solid", lwd = 3, fontsize = 16)
+$col
+[1] "blue"
+
+$lty
+[1] "solid"
+
+$lwd
+[1] 3
+
+$fontsize
+[1] 16
+
+> get.gpar(c("col", "lty"))
+$col
+[1] "black"
+
+$lty
+[1] "solid"
+
+> grid.newpage()
+> vp <- viewport(width = .8, height = .8, gp = gpar(col="blue"))
+> grid.draw(gTree(children=gList(rectGrob(gp = gpar(col="red")),
++                      textGrob(paste("The rect is its own colour (red)",
++                                     "but this text is the colour",
++                                     "set by the gTree (green)",
++                                     sep = "\n"))),
++       gp = gpar(col="green"), vp = vp))
+> grid.text("This text is the colour set by the viewport (blue)",
++           y = 1, just = c("center", "bottom"),
++           gp = gpar(fontsize=20), vp = vp)
+> grid.newpage()
+> ## example with multiple values for a parameter
+> pushViewport(viewport())
+> grid.points(1:10/11, 1:10/11, gp = gpar(col=1:10))
+> popViewport()
+> 
+> 
+> 
+> cleanEx()
+> nameEx("grid.DLapply")
+> ### * grid.DLapply
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: grid.DLapply
+> ### Title: Modify the Grid Display List
+> ### Aliases: grid.DLapply
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> grid.newpage()
+> grid.rect(width=.4, height=.4, x=.25, y=.75, gp=gpar(fill="black"), name="r1")
+> grid.rect(width=.4, height=.4, x=.5, y=.5, gp=gpar(fill="grey"), name="r2")
+> grid.rect(width=.4, height=.4, x=.75, y=.25, gp=gpar(fill="white"), name="r3")
+> grid.DLapply(function(x) { if (is.grob(x)) x$gp <- gpar(); x })
+NULL
+> grid.refresh()
+> 
+> 
+> 
+> cleanEx()
+> nameEx("grid.bezier")
+> ### * grid.bezier
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: grid.bezier
+> ### Title: Draw a Bezier Curve
+> ### Aliases: grid.bezier bezierGrob
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> x <- c(0.2, 0.2, 0.4, 0.4)
+> y <- c(0.2, 0.4, 0.4, 0.2)
+> 
+> grid.newpage()
+> grid.bezier(x, y)
+> grid.bezier(c(x, x + .4), c(y + .4, y + .4),
++             id=rep(1:2, each=4))
+> grid.segments(.4, .6, .6, .6)
+> grid.bezier(x, y,
++             gp=gpar(lwd=3, fill="black"),
++             arrow=arrow(type="closed"),
++             vp=viewport(x=.9))
+> 
+> 
+> 
+> cleanEx()
+> nameEx("grid.cap")
+> ### * grid.cap
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: grid.cap
+> ### Title: Capture a raster image
+> ### Aliases: grid.cap
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> 
+> 
+> 
+> cleanEx()
+> nameEx("grid.clip")
+> ### * grid.clip
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: grid.clip
+> ### Title: Set the Clipping Region
+> ### Aliases: grid.clip clipGrob
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> # draw across entire viewport, but clipped
+> grid.clip(x = 0.3, width = 0.1)
+> grid.lines(gp=gpar(col="green", lwd=5))
+> # draw across entire viewport, but clipped (in different place)
+> grid.clip(x = 0.7, width = 0.1)
+> grid.lines(gp=gpar(col="red", lwd=5))
+> # Viewport sets new clip region
+> pushViewport(viewport(width=0.5, height=0.5, clip=TRUE))
+> grid.lines(gp=gpar(col="grey", lwd=3))
+> # Return to original viewport;  get
+> # clip region from previous grid.clip()
+> # (NOT from previous viewport clip region)
+> popViewport()
+> grid.lines(gp=gpar(col="black"))
+> 
+> 
+> 
+> cleanEx()
+> nameEx("grid.convert")
+> ### * grid.convert
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: grid.convert
+> ### Title: Convert Between Different grid Coordinate Systems
+> ### Aliases: convertUnit convertX convertY convertWidth convertHeight
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> ## A tautology
+> convertX(unit(1, "inches"), "inches")
+[1] 1inches
+> ## The physical units
+> convertX(unit(2.54, "cm"), "inches")
+[1] 1inches
+> convertX(unit(25.4, "mm"), "inches")
+[1] 1inches
+> convertX(unit(72.27, "points"), "inches")
+[1] 1inches
+> convertX(unit(1/12*72.27, "picas"), "inches")
+[1] 1inches
+> convertX(unit(72, "bigpts"), "inches")
+[1] 1inches
+> convertX(unit(1157/1238*72.27, "dida"), "inches")
+[1] 1inches
+> convertX(unit(1/12*1157/1238*72.27, "cicero"), "inches")
+[1] 1inches
+> convertX(unit(65536*72.27, "scaledpts"), "inches")
+[1] 1inches
+> convertX(unit(1/2.54, "inches"), "cm")
+[1] 1cm
+> convertX(unit(1/25.4, "inches"), "mm")
+[1] 1mm
+> convertX(unit(1/72.27, "inches"), "points")
+[1] 1points
+> convertX(unit(1/(1/12*72.27), "inches"), "picas")
+[1] 1picas
+> convertX(unit(1/72, "inches"), "bigpts")
+[1] 1bigpts
+> convertX(unit(1/(1157/1238*72.27), "inches"), "dida")
+[1] 1dida
+> convertX(unit(1/(1/12*1157/1238*72.27), "inches"), "cicero")
+[1] 1cicero
+> convertX(unit(1/(65536*72.27), "inches"), "scaledpts")
+[1] 1scaledpts
+> 
+> pushViewport(viewport(width=unit(1, "inches"),
++                        height=unit(2, "inches"),
++                        xscale=c(0, 1),
++                        yscale=c(1, 3)))
+>   ## Location versus dimension
+>   convertY(unit(2, "native"), "inches")
+[1] 1inches
+>   convertHeight(unit(2, "native"), "inches")
+[1] 2inches
+>   ## From "x" to "y" (the conversion is via "inches")
+>   convertUnit(unit(1, "native"), "native",
++                axisFrom="x", axisTo="y")
+[1] 2native
+>   ## Convert several values at once
+>   convertX(unit(c(0.5, 2.54), c("npc", "cm")),
++                 c("inches", "native"))
+[1] 0.5inches 1native  
+> popViewport()
+> ## Convert a complex unit
+> convertX(unit(1, "strwidth", "Hello"), "native")
+[1] 0.0558333333333333native
+> 
+> 
+> 
+> cleanEx()
+> nameEx("grid.curve")
+> ### * grid.curve
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: grid.curve
+> ### Title: Draw a Curve Between Locations
+> ### Aliases: grid.curve curveGrob arcCurvature
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> curveTest <- function(i, j, ...) {
++   pushViewport(viewport(layout.pos.col=j, layout.pos.row=i))
++   do.call("grid.curve", c(list(x1=.25, y1=.25, x2=.75, y2=.75), list(...)))
++   grid.text(sub("list\\((.*)\\)", "\\1",
++                 deparse(substitute(list(...)))),
++             y=unit(1, "npc"))
++   popViewport()
++ }
+> # grid.newpage()
+> pushViewport(plotViewport(c(0, 0, 1, 0),
++                           layout=grid.layout(2, 1, heights=c(2, 1))))
+> pushViewport(viewport(layout.pos.row=1,
++                       layout=grid.layout(3, 3, respect=TRUE)))
+> curveTest(1, 1)
+> curveTest(1, 2, inflect=TRUE)
+> curveTest(1, 3, angle=135)
+> curveTest(2, 1, arrow=arrow())
+> curveTest(2, 2, ncp=8)
+> curveTest(2, 3, shape=0)
+> curveTest(3, 1, curvature=-1)
+> curveTest(3, 2, square=FALSE)
+> curveTest(3, 3, debug=TRUE)
+> popViewport()
+> pushViewport(viewport(layout.pos.row=2,
++                       layout=grid.layout(3, 3)))
+> curveTest(1, 1)
+> curveTest(1, 2, inflect=TRUE)
+> curveTest(1, 3, angle=135)
+> curveTest(2, 1, arrow=arrow())
+> curveTest(2, 2, ncp=8)
+> curveTest(2, 3, shape=0)
+> curveTest(3, 1, curvature=-1)
+> curveTest(3, 2, square=FALSE)
+> curveTest(3, 3, debug=TRUE)
+> popViewport(2)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("grid.delay")
+> ### * grid.delay
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: grid.delay
+> ### Title: Encapsulate calculations and generating a grob
+> ### Aliases: grid.delay delayGrob
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> grid.delay({
++               w <- convertWidth(unit(1, "inches"), "npc")
++               rectGrob(width=w)
++             },
++             list())
+> 
+> 
+> 
+> cleanEx()
+> nameEx("grid.draw")
+> ### * grid.draw
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: grid.draw
+> ### Title: Draw a grid grob
+> ### Aliases: grid.draw
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> grid.newpage()
+> ## Create a graphical object, but don't draw it
+> l <- linesGrob()
+> ## Draw it
+> grid.draw(l)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("grid.edit")
+> ### * grid.edit
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: grid.edit
+> ### Title: Edit the Description of a Grid Graphical Object
+> ### Aliases: grid.edit grid.gedit editGrob
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> grid.newpage()
+> grid.xaxis(name = "xa", vp = viewport(width=.5, height=.5))
+> grid.edit("xa", gp = gpar(col="red"))
+> # won't work because no ticks (at is NULL)
+> try(grid.edit(gPath("xa", "ticks"), gp = gpar(col="green")))
+Error in editDLfromGPath(gPath, specs, strict, grep, global, redraw) : 
+  'gPath' (xa::ticks) not found
+> grid.edit("xa", at = 1:4/5)
+> # Now it should work
+> try(grid.edit(gPath("xa", "ticks"), gp = gpar(col="green")))
+> 
+> 
+> 
+> cleanEx()
+> nameEx("grid.force")
+> ### * grid.force
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: grid.force
+> ### Title: Force a grob into its components
+> ### Aliases: grid.force grid.force.default grid.force.gPath grid.force.grob
+> ###   forceGrob grid.revert grid.revert.gPath grid.revert.grob
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> grid.newpage()
+> pushViewport(viewport(width=.5, height=.5))
+> # Draw xaxis
+> grid.xaxis(name="xax")
+> grid.ls()
+GRID.text.261
+xax
+> # Force xaxis
+> grid.force()
+> grid.ls()
+GRID.text.261
+xax
+  major
+  ticks
+  labels
+> # Revert xaxis
+> grid.revert()
+> grid.ls()
+GRID.text.261
+xax
+> # Draw and force yaxis
+> grid.force(yaxisGrob(), draw=TRUE)
+forcedgrob[GRID.yaxis.262] 
+> grid.ls()
+GRID.text.261
+xax
+GRID.yaxis.262
+  major
+  ticks
+  labels
+> # Revert yaxis
+> grid.revert()
+> grid.ls()
+GRID.text.261
+xax
+GRID.yaxis.262
+> # Force JUST xaxis
+> grid.force("xax")
+> grid.ls()
+GRID.text.261
+xax
+  major
+  ticks
+  labels
+GRID.yaxis.262
+> # Force ALL
+> grid.force()
+> grid.ls()
+GRID.text.261
+xax
+  major
+  ticks
+  labels
+GRID.yaxis.262
+  major
+  ticks
+  labels
+> # Revert JUST xaxis
+> grid.revert("xax")
+> grid.ls()
+GRID.text.261
+xax
+GRID.yaxis.262
+  major
+  ticks
+  labels
+> 
+> 
+> 
+> cleanEx()
+> nameEx("grid.frame")
+> ### * grid.frame
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: grid.frame
+> ### Title: Create a Frame for Packing Objects
+> ### Aliases: grid.frame frameGrob
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> grid.newpage()
+> grid.frame(name="gf", draw=TRUE)
+> grid.pack("gf", rectGrob(gp=gpar(fill="grey")), width=unit(1, "null"))
+> grid.pack("gf", textGrob("hi there"), side="right")
+> 
+> 
+> 
+> cleanEx()
+> nameEx("grid.function")
+> ### * grid.function
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: grid.function
+> ### Title: Draw a curve representing a function
+> ### Aliases: grid.function functionGrob grid.abline
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+>     # abline
+>     # NOTE: in ROOT viewport on screen, (0, 0) at top-left
+>     #       and "native" is pixels!
+>     grid.function(function(x) list(x=x, y=0 + 1*x))
+>     # a more "normal" viewport with default normalized "native" coords
+>     grid.newpage()
+>     pushViewport(viewport())
+>     grid.function(function(x) list(x=x, y=0 + 1*x))
+>     # slightly simpler
+>     grid.newpage()
+>     pushViewport(viewport())
+>     grid.abline()
+>     # sine curve
+>     grid.newpage()
+>     pushViewport(viewport(xscale=c(0, 2*pi), yscale=c(-1, 1)))
+>     grid.function(function(x) list(x=x, y=sin(x)))
+>     # constrained sine curve
+>     grid.newpage()
+>     pushViewport(viewport(xscale=c(0, 2*pi), yscale=c(-1, 1)))
+>     grid.function(function(x) list(x=x, y=sin(x)),
++                   range=0:1)
+>     # inverse sine curve
+>     grid.newpage()
+>     pushViewport(viewport(xscale=c(-1, 1), yscale=c(0, 2*pi)))
+>     grid.function(function(y) list(x=sin(y), y=y),
++                   range="y")
+>     # parametric function
+>     grid.newpage()
+>     pushViewport(viewport(xscale=c(-1, 1), yscale=c(-1, 1)))
+>     grid.function(function(t) list(x=cos(t), y=sin(t)),
++                   range=c(0, 9*pi/5))
+>     # physical abline
+>     grid.newpage()
+>     grid.function(function(x) list(x=x, y=0 + 1*x),
++                   units="in")
+> 
+> 
+> 
+> cleanEx()
+> nameEx("grid.get")
+> ### * grid.get
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: grid.get
+> ### Title: Get a Grid Graphical Object
+> ### Aliases: grid.get grid.gget getGrob
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> grid.xaxis(name="xa")
+> grid.get("xa")
+xaxis[xa] 
+> grid.get(gPath("xa", "ticks"))
+NULL
+> 
+> grid.draw(gTree(name="gt", children=gList(xaxisGrob(name="axis"))))
+> grid.get(gPath("gt", "axis", "ticks"))
+NULL
+> 
+> 
+> 
+> cleanEx()
+> nameEx("grid.grab")
+> ### * grid.grab
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: grid.grab
+> ### Title: Grab the current grid output
+> ### Aliases: grid.grab grid.grabExpr
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> pushViewport(viewport(width=.5, height=.5))
+> grid.rect()
+> grid.points(stats::runif(10), stats::runif(10))
+> popViewport()
+> grab <- grid.grab()
+> grid.newpage()
+> grid.draw(grab)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("grid.grep")
+> ### * grid.grep
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: grid.grep
+> ### Title: Search for Grobs and/or Viewports
+> ### Aliases: grid.grep
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> # A gTree, called "grandparent", with child gTree,
+> # called "parent", with childrenvp vpStack (vp2 within vp1)
+> # and child grob, called "child", with vp vpPath (down to vp2)
+> sampleGTree <- gTree(name="grandparent",
++                      children=gList(gTree(name="parent",
++                           children=gList(grob(name="child", vp="vp1::vp2")),
++                           childrenvp=vpStack(viewport(name="vp1"),
++                                              viewport(name="vp2")))))
+> # Searching for grobs
+> grid.grep("parent", sampleGTree)
+grandparent::parent 
+> grid.grep("parent", sampleGTree, strict=TRUE)
+character(0)
+> grid.grep("grandparent", sampleGTree, strict=TRUE)
+grandparent 
+> grid.grep("grandparent::parent", sampleGTree)
+grandparent::parent 
+> grid.grep("parent::child", sampleGTree)
+grandparent::parent::child 
+> grid.grep("[a-z]", sampleGTree, grep=TRUE)
+grandparent 
+> grid.grep("[a-z]", sampleGTree, grep=TRUE, global=TRUE)
+[[1]]
+grandparent 
+
+[[2]]
+grandparent::parent 
+
+[[3]]
+grandparent::parent::child 
+
+> # Searching for viewports
+> grid.grep("vp1", sampleGTree, viewports=TRUE)
+vp1 
+> grid.grep("vp2", sampleGTree, viewports=TRUE)
+vp1::vp2 
+> grid.grep("vp", sampleGTree, viewports=TRUE, grep=TRUE)
+vp1 
+> grid.grep("vp2", sampleGTree, viewports=TRUE, strict=TRUE)
+character(0)
+> grid.grep("vp1::vp2", sampleGTree, viewports=TRUE)
+vp1::vp2 
+> # Searching for both
+> grid.grep("[a-z]", sampleGTree, viewports=TRUE, grep=TRUE, global=TRUE)
+[[1]]
+grandparent 
+
+[[2]]
+grandparent::parent 
+
+[[3]]
+vp1 
+
+[[4]]
+vp1::vp2 
+
+[[5]]
+grandparent::parent::child 
+
+> 
+> 
+> 
+> cleanEx()
+> nameEx("grid.group")
+> ### * grid.group
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: grid.group
+> ### Title: Draw a Group
+> ### Aliases: grid.group groupGrob grid.define defineGrob grid.use useGrob
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> ## NOTE: on devices without support for groups (or masks or patterns),
+> ##       there will only be two overlapping opaque circles 
+> grid.newpage()
+> pat <- pattern(rasterGrob(matrix(c(.5, 1, 1, .5), nrow=2),
++                           width=unit(1, "cm"),
++                           height=unit(1, "cm"),
++                           interpolate=FALSE),
++                width=unit(1, "cm"), height=unit(1, "cm"),
++                extend="repeat")
+> grid.rect(gp=gpar(col=NA, fill=pat))
+> mask <- rectGrob(gp=gpar(col=NA, fill=rgb(0,0,0,.5)))
+> pushViewport(viewport(mask=mask))
+> pushViewport(viewport(y=.5, height=.5, just="bottom"))
+> grid.circle(1:2/3, r=.45, gp=gpar(fill=2:3))
+> popViewport()
+> pushViewport(viewport(y=0, height=.5, just="bottom"))
+> grid.group(circleGrob(1:2/3, r=.45, gp=gpar(fill=2:3)))
+> popViewport()
+> 
+> 
+> 
+> cleanEx()
+> nameEx("grid.layout")
+> ### * grid.layout
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: grid.layout
+> ### Title: Create a Grid Layout
+> ### Aliases: grid.layout
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> ## A variety of layouts (some a bit mid-bending ...)
+> layout.torture()
+> ## Demonstration of layout justification
+> grid.newpage()
+> testlay <- function(just="centre") {
++   pushViewport(viewport(layout=grid.layout(1, 1, widths=unit(1, "inches"),
++                           heights=unit(0.25, "npc"),
++                           just=just)))
++   pushViewport(viewport(layout.pos.col=1, layout.pos.row=1))
++   grid.rect()
++   grid.text(paste(just, collapse="-"))
++   popViewport(2)
++ }
+> testlay()
+> testlay(c("left", "top"))
+> testlay(c("right", "top"))
+> testlay(c("right", "bottom"))
+> testlay(c("left", "bottom"))
+> testlay(c("left"))
+> testlay(c("right"))
+> testlay(c("bottom"))
+> testlay(c("top"))
+> 
+> 
+> 
+> cleanEx()
+> nameEx("grid.lines")
+> ### * grid.lines
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: grid.lines
+> ### Title: Draw Lines in a Grid Viewport
+> ### Aliases: grid.lines linesGrob grid.polyline polylineGrob
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> grid.lines()
+> # Using id (NOTE: locations are not in consecutive blocks)
+> grid.newpage()
+> grid.polyline(x=c((0:4)/10, rep(.5, 5), (10:6)/10, rep(.5, 5)),
++              y=c(rep(.5, 5), (10:6/10), rep(.5, 5), (0:4)/10),
++              id=rep(1:5, 4),
++              gp=gpar(col=1:5, lwd=3))
+> # Using id.lengths
+> grid.newpage()
+> grid.polyline(x=outer(c(0, .5, 1, .5), 5:1/5),
++              y=outer(c(.5, 1, .5, 0), 5:1/5),
++              id.lengths=rep(4, 5),
++              gp=gpar(col=1:5, lwd=3))
+> 
+> 
+> 
+> cleanEx()
+> nameEx("grid.locator")
+> ### * grid.locator
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: grid.locator
+> ### Title: Capture a Mouse Click
+> ### Aliases: grid.locator
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> if (dev.interactive()) {
++   ## Need to write a more sophisticated unit as.character method
++   unittrim <- function(unit) {
++     sub("^([0-9]+|[0-9]+[.][0-9])[0-9]*", "\\1", as.character(unit))
++   }
++   do.click <- function(unit) {
++     click.locn <- grid.locator(unit)
++     grid.segments(unit.c(click.locn$x, unit(0, "npc")),
++                   unit.c(unit(0, "npc"), click.locn$y),
++                   click.locn$x, click.locn$y,
++                   gp=gpar(lty="dashed", col="grey"))
++     grid.points(click.locn$x, click.locn$y, pch=16, size=unit(1, "mm"))
++     clickx <- unittrim(click.locn$x)
++     clicky <- unittrim(click.locn$y)
++     grid.text(paste0("(", clickx, ", ", clicky, ")"),
++               click.locn$x + unit(2, "mm"), click.locn$y,
++               just="left")
++   }
++ 
++   grid.newpage() # (empty slate)
++   ## device
++   do.click("inches")
++   Sys.sleep(1)
++ 
++   pushViewport(viewport(width=0.5, height=0.5,
++                         xscale=c(0, 100), yscale=c(0, 10)))
++   grid.rect()
++   grid.xaxis()
++   grid.yaxis()
++   do.click("native")
++   popViewport()
++ }
+> 
+> 
+> 
+> cleanEx()
+> nameEx("grid.ls")
+> ### * grid.ls
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: grid.ls
+> ### Title: List the names of grobs or viewports
+> ### Aliases: grid.ls nestedListing pathListing grobPathListing
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> # A gTree, called "parent", with childrenvp vpTree (vp2 within vp1)
+> # and child grob, called "child", with vp vpPath (down to vp2)
+> sampleGTree <- gTree(name="parent",
++                      children=gList(grob(name="child", vp="vp1::vp2")),
++                      childrenvp=vpTree(parent=viewport(name="vp1"),
++                                        children=vpList(viewport(name="vp2"))))
+> grid.ls(sampleGTree)
+parent
+  child
+> # Show viewports too
+> grid.ls(sampleGTree, viewports=TRUE)
+parent
+  vp1
+    vp2
+      2
+  vp1
+    vp2
+      child
+      2
+> # Only show viewports
+> grid.ls(sampleGTree, viewports=TRUE, grobs=FALSE)
+vp1
+  vp2
+    2
+vp1
+  vp2
+    2
+> # Alternate displays
+> # nested listing, custom indent
+> grid.ls(sampleGTree, viewports=TRUE, print=nestedListing, gindent="--")
+parent
+--vp1
+----vp2
+------2
+--vp1
+----vp2
+------child
+------2
+> # path listing
+> grid.ls(sampleGTree, viewports=TRUE, print=pathListing)
+            | parent
+vp1
+vp1::vp2
+vp1::vp2::2
+vp1
+vp1::vp2
+vp1::vp2    | parent::child
+vp1::vp2::2
+> # path listing, without grobs aligned
+> grid.ls(sampleGTree, viewports=TRUE, print=pathListing, gAlign=FALSE)
+ | parent
+vp1
+vp1::vp2
+vp1::vp2::2
+vp1
+vp1::vp2
+vp1::vp2 | parent::child
+vp1::vp2::2
+> # grob path listing
+> grid.ls(sampleGTree, viewports=TRUE, print=grobPathListing)
+         | parent
+vp1::vp2 | parent::child
+> # path listing, grobs only
+> grid.ls(sampleGTree, print=pathListing)
+ | parent
+ | parent::child
+> # path listing, viewports only
+> grid.ls(sampleGTree, viewports=TRUE, grobs=FALSE, print=pathListing)
+vp1
+vp1::vp2
+vp1::vp2::2
+vp1
+vp1::vp2
+vp1::vp2::2
+> # raw flat listing
+> str(grid.ls(sampleGTree, viewports=TRUE, print=FALSE))
+List of 6
+ $ name   : chr [1:8] "parent" "vp1" "vp2" "2" ...
+ $ gDepth : num [1:8] 0 1 1 1 1 1 1 1
+ $ vpDepth: num [1:8] 0 0 1 2 0 1 2 2
+ $ gPath  : chr [1:8] "" "parent" "parent" "parent" ...
+ $ vpPath : chr [1:8] "" "" "vp1" "vp1::vp2" ...
+ $ type   : chr [1:8] "gTreeListing" "vpListing" "vpListing" "vpUpListing" ...
+ - attr(*, "class")= chr "flatGridListing"
+> 
+> 
+> 
+> cleanEx()
+> nameEx("grid.move.to")
+> ### * grid.move.to
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: grid.move.to
+> ### Title: Move or Draw to a Specified Position
+> ### Aliases: grid.move.to grid.line.to moveToGrob lineToGrob
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> grid.newpage()
+> grid.move.to(0.5, 0.5)
+> grid.line.to(1, 1)
+> grid.line.to(0.5, 0)
+> pushViewport(viewport(x=0, y=0, width=0.25, height=0.25, just=c("left", "bottom")))
+> grid.rect()
+> grid.grill()
+> grid.line.to(0.5, 0.5)
+> popViewport()
+> 
+> 
+> 
+> cleanEx()
+> nameEx("grid.null")
+> ### * grid.null
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: grid.null
+> ### Title: Null Graphical Object
+> ### Aliases: grid.null nullGrob
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> grid.newpage()
+> grid.null(name="ref")
+> grid.rect(height=grobHeight("ref"))
+> grid.segments(0, 0, grobX("ref", 0), grobY("ref", 0))
+> 
+> 
+> 
+> cleanEx()
+> nameEx("grid.path")
+> ### * grid.path
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: grid.path
+> ### Title: Draw a Path
+> ### Aliases: grid.path pathGrob
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> pathSample <- function(x, y, rule, gp = gpar()) {
++     if (is.na(rule))
++         grid.path(x, y, id = rep(1:2, each = 4), gp = gp)
++     else
++         grid.path(x, y, id = rep(1:2, each = 4), rule = rule, gp = gp)
++     if (!is.na(rule))
++         grid.text(paste("Rule:", rule), y = 0, just = "bottom")
++ }
+> 
+> pathTriplet <- function(x, y, title) {
++     pushViewport(viewport(height = 0.9, layout = grid.layout(1, 3),
++                           gp = gpar(cex = .7)))
++     grid.rect(y = 1, height = unit(1, "char"), just = "top",
++               gp = gpar(col = NA, fill = "grey"))
++     grid.text(title, y = 1, just = "top")
++     pushViewport(viewport(layout.pos.col = 1))
++     pathSample(x, y, rule = "winding",
++                gp = gpar(fill = "grey"))
++     popViewport()
++     pushViewport(viewport(layout.pos.col = 2))
++     pathSample(x, y, rule = "evenodd",
++                gp = gpar(fill = "grey"))
++     popViewport()
++     pushViewport(viewport(layout.pos.col = 3))
++     pathSample(x, y, rule = NA)
++     popViewport()
++     popViewport()
++ }
+> 
+> pathTest <- function() {
++     grid.newpage()
++     pushViewport(viewport(layout = grid.layout(5, 1)))
++     pushViewport(viewport(layout.pos.row = 1))
++     pathTriplet(c(.1, .1, .9, .9, .2, .2, .8, .8),
++                 c(.1, .9, .9, .1, .2, .8, .8, .2),
++                 "Nested rectangles, both clockwise")
++     popViewport()
++     pushViewport(viewport(layout.pos.row = 2))
++     pathTriplet(c(.1, .1, .9, .9, .2, .8, .8, .2),
++                 c(.1, .9, .9, .1, .2, .2, .8, .8),
++                 "Nested rectangles, outer clockwise, inner anti-clockwise")
++     popViewport()
++     pushViewport(viewport(layout.pos.row = 3))
++     pathTriplet(c(.1, .1, .4, .4, .6, .9, .9, .6),
++                 c(.1, .4, .4, .1, .6, .6, .9, .9),
++                 "Disjoint rectangles")
++     popViewport()
++     pushViewport(viewport(layout.pos.row = 4))
++     pathTriplet(c(.1, .1, .6, .6, .4, .4, .9, .9),
++                 c(.1, .6, .6, .1, .4, .9, .9, .4),
++                 "Overlapping rectangles, both clockwise")
++     popViewport()
++     pushViewport(viewport(layout.pos.row = 5))
++     pathTriplet(c(.1, .1, .6, .6, .4, .9, .9, .4),
++                 c(.1, .6, .6, .1, .4, .4, .9, .9),
++                 "Overlapping rectangles, one clockwise, other anti-clockwise")
++     popViewport()
++     popViewport()
++ }
+> 
+> pathTest()
+> 
+> # Drawing multiple paths at once
+> holed_rect <- cbind(c(.15, .15, -.15, -.15, .1, .1, -.1, -.1), 
++                     c(.15, -.15, -.15, .15, .1, -.1, -.1, .1))
+> holed_rects <- rbind(
++     holed_rect + matrix(c(.7, .2), nrow = 8, ncol = 2, byrow = TRUE),
++     holed_rect + matrix(c(.7, .8), nrow = 8, ncol = 2, byrow = TRUE),
++     holed_rect + matrix(c(.2, .5), nrow = 8, ncol = 2, byrow = TRUE)
++ )
+> grid.newpage()
+> grid.path(x = holed_rects[, 1], y = holed_rects[, 2], 
++           id = rep(1:6, each = 4), pathId = rep(1:3, each = 8),
++           gp = gpar(fill = c('red', 'blue', 'green')),
++           rule = 'evenodd')
+> 
+> # Not specifying pathId will treat all points as part of the same path, thus 
+> # having same fill
+> grid.newpage()
+> grid.path(x = holed_rects[, 1], y = holed_rects[, 2], 
++           id = rep(1:6, each = 4),
++           gp = gpar(fill = c('red', 'blue', 'green')),
++           rule = 'evenodd')
+> 
+> 
+> 
+> cleanEx()
+> nameEx("grid.plot.and.legend")
+> ### * grid.plot.and.legend
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: grid.plot.and.legend
+> ### Title: A Simple Plot and Legend Demo
+> ### Aliases: grid.plot.and.legend
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> grid.plot.and.legend()
+> 
+> 
+> 
+> cleanEx()
+> nameEx("grid.polygon")
+> ### * grid.polygon
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: grid.polygon
+> ### Title: Draw a Polygon
+> ### Aliases: grid.polygon polygonGrob
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> grid.polygon()
+> # Using id (NOTE: locations are not in consecutive blocks)
+> grid.newpage()
+> grid.polygon(x=c((0:4)/10, rep(.5, 5), (10:6)/10, rep(.5, 5)),
++              y=c(rep(.5, 5), (10:6/10), rep(.5, 5), (0:4)/10),
++              id=rep(1:5, 4),
++              gp=gpar(fill=1:5))
+> # Using id.lengths
+> grid.newpage()
+> grid.polygon(x=outer(c(0, .5, 1, .5), 5:1/5),
++              y=outer(c(.5, 1, .5, 0), 5:1/5),
++              id.lengths=rep(4, 5),
++              gp=gpar(fill=1:5))
+> 
+> 
+> 
+> cleanEx()
+> nameEx("grid.raster")
+> ### * grid.raster
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: grid.raster
+> ### Title: Render a raster object
+> ### Aliases: grid.raster rasterGrob
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> redGradient <- matrix(hcl(0, 80, seq(50, 80, 10)),
++                       nrow=4, ncol=5)
+> # interpolated
+> grid.newpage()
+> grid.raster(redGradient)
+> # blocky
+> grid.newpage()
+> grid.raster(redGradient, interpolate=FALSE)
+> # blocky and stretched
+> grid.newpage()
+> grid.raster(redGradient, interpolate=FALSE, height=unit(1, "npc"))
+> 
+> # The same raster drawn several times
+> grid.newpage()
+> grid.raster(0, x=1:3/4, y=1:3/4, width=.1, interpolate=FALSE)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("grid.record")
+> ### * grid.record
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: grid.record
+> ### Title: Encapsulate calculations and drawing
+> ### Aliases: grid.record recordGrob
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> grid.record({
++               w <- convertWidth(unit(1, "inches"), "npc")
++               grid.rect(width=w)
++             },
++             list())
+> 
+> 
+> 
+> cleanEx()
+> nameEx("grid.reorder")
+> ### * grid.reorder
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: grid.reorder
+> ### Title: Reorder the children of a gTree
+> ### Aliases: grid.reorder reorderGrob
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> # gTree with two children, "red-rect" and "blue-rect" (in that order)
+> gt <- gTree(children=gList(
++                 rectGrob(gp=gpar(col=NA, fill="red"),
++                          width=.8, height=.2, name="red-rect"),
++                 rectGrob(gp=gpar(col=NA, fill="blue"),
++                          width=.2, height=.8, name="blue-rect")),
++             name="gt")
+> grid.newpage()
+> grid.draw(gt)
+> # Spec entire order as numeric (blue-rect, red-rect)
+> grid.reorder("gt", 2:1)
+> # Spec entire order as character
+> grid.reorder("gt", c("red-rect", "blue-rect"))
+> # Only spec the one I want behind as character
+> grid.reorder("gt", "blue-rect")
+> # Only spec the one I want in front as character
+> grid.reorder("gt", "blue-rect", back=FALSE)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("grid.roundrect")
+> ### * grid.roundrect
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: roundrect
+> ### Title: Draw a rectangle with rounded corners
+> ### Aliases: roundrect grid.roundrect roundrectGrob
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> grid.roundrect(width=.5, height=.5, name="rr")
+> theta <- seq(0, 360, length.out=50)
+> for (i in 1:50)
++     grid.circle(x=grobX("rr", theta[i]),
++                 y=grobY("rr", theta[i]),
++                 r=unit(1, "mm"),
++                 gp=gpar(fill="black"))
+> 
+> 
+> 
+> cleanEx()
+> nameEx("grid.show.layout")
+> ### * grid.show.layout
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: grid.show.layout
+> ### Title: Draw a Diagram of a Grid Layout
+> ### Aliases: grid.show.layout
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> ## Diagram of a simple layout
+> grid.show.layout(grid.layout(4,2,
++                      heights=unit(rep(1, 4),
++                                   c("lines", "lines", "lines", "null")),
++                      widths=unit(c(1, 1), "inches")))
+> 
+> 
+> 
+> cleanEx()
+> nameEx("grid.show.viewport")
+> ### * grid.show.viewport
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: grid.show.viewport
+> ### Title: Draw a Diagram of a Grid Viewport
+> ### Aliases: grid.show.viewport
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> ## Diagram of a sample viewport
+> grid.show.viewport(viewport(x=0.6, y=0.6,
++                             width=unit(1, "inches"), height=unit(1, "inches")))
+> grid.show.viewport(viewport(layout.pos.row=2, layout.pos.col=2:3),
++                    grid.layout(3, 4))
+> 
+> 
+> 
+> cleanEx()
+> nameEx("grid.stroke")
+> ### * grid.stroke
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: grid.stroke
+> ### Title: Stroke or Fill a Path
+> ### Aliases: grid.stroke strokeGrob strokeGrob.grob strokeGrob.GridPath
+> ###   grid.fill fillGrob fillGrob.grob fillGrob.GridPath grid.fillStroke
+> ###   fillStrokeGrob fillStrokeGrob.grob fillStrokeGrob.GridPath as.path
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> ## NOTE: on devices without support for stroking and filling
+> ##       nothing will be drawn
+> grid.newpage()
+> grid.stroke(textGrob("hello", gp=gpar(cex=10)))
+> grid.fill(circleGrob(1:2/3, r=.3), gp=gpar(fill=rgb(1,0,0,.5)))
+> 
+> 
+> 
+> cleanEx()
+> nameEx("grid.text")
+> ### * grid.text
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: grid.text
+> ### Title: Draw Text
+> ### Aliases: grid.text textGrob
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> grid.newpage()
+> x <- stats::runif(20)
+> y <- stats::runif(20)
+> rot <- stats::runif(20, 0, 360)
+> grid.text("SOMETHING NICE AND BIG", x=x, y=y, rot=rot,
++           gp=gpar(fontsize=20, col="grey"))
+> grid.text("SOMETHING NICE AND BIG", x=x, y=y, rot=rot,
++           gp=gpar(fontsize=20), check.overlap=TRUE)
+> grid.newpage()
+> draw.text <- function(just, i, j) {
++   grid.text("ABCD", x=x[j], y=y[i], just=just)
++   grid.text(deparse(substitute(just)), x=x[j], y=y[i] + unit(2, "lines"),
++             gp=gpar(col="grey", fontsize=8))
++ }
+> x <- unit(1:4/5, "npc")
+> y <- unit(1:4/5, "npc")
+> grid.grill(h=y, v=x, gp=gpar(col="grey"))
+> draw.text(c("bottom"), 1, 1)
+> draw.text(c("left", "bottom"), 2, 1)
+> draw.text(c("right", "bottom"), 3, 1)
+> draw.text(c("centre", "bottom"), 4, 1)
+> draw.text(c("centre"), 1, 2)
+> draw.text(c("left", "centre"), 2, 2)
+> draw.text(c("right", "centre"), 3, 2)
+> draw.text(c("centre", "centre"), 4, 2)
+> draw.text(c("top"), 1, 3)
+> draw.text(c("left", "top"), 2, 3)
+> draw.text(c("right", "top"), 3, 3)
+> draw.text(c("centre", "top"), 4, 3)
+> draw.text(c(), 1, 4)
+> draw.text(c("left"), 2, 4)
+> draw.text(c("right"), 3, 4)
+> draw.text(c("centre"), 4, 4)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("grid.xspline")
+> ### * grid.xspline
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: grid.xspline
+> ### Title: Draw an Xspline
+> ### Aliases: grid.xspline xsplineGrob
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> x <- c(0.25, 0.25, 0.75, 0.75)
+> y <- c(0.25, 0.75, 0.75, 0.25)
+> 
+> xsplineTest <- function(s, i, j, open) {
++   pushViewport(viewport(layout.pos.col=j, layout.pos.row=i))
++   grid.points(x, y, default.units="npc", pch=16, size=unit(2, "mm"))
++   grid.xspline(x, y, shape=s, open=open, gp=gpar(fill="grey"))
++   grid.text(s, gp=gpar(col="grey"),
++             x=unit(x, "npc") + unit(c(-1, -1, 1, 1), "mm"),
++             y=unit(y, "npc") + unit(c(-1, 1, 1, -1), "mm"),
++             hjust=c(1, 1, 0, 0),
++             vjust=c(1, 0, 0, 1))
++   popViewport()
++ }
+> 
+> pushViewport(viewport(width=.5, x=0, just="left",
++                       layout=grid.layout(3, 3, respect=TRUE)))
+> pushViewport(viewport(layout.pos.row=1))
+> grid.text("Open Splines", y=1, just="bottom")
+> popViewport()
+> xsplineTest(c(0, -1, -1, 0), 1, 1, TRUE)
+> xsplineTest(c(0, -1,  0, 0), 1, 2, TRUE)
+> xsplineTest(c(0, -1,  1, 0), 1, 3, TRUE)
+> xsplineTest(c(0,  0, -1, 0), 2, 1, TRUE)
+> xsplineTest(c(0,  0,  0, 0), 2, 2, TRUE)
+> xsplineTest(c(0,  0,  1, 0), 2, 3, TRUE)
+> xsplineTest(c(0,  1, -1, 0), 3, 1, TRUE)
+> xsplineTest(c(0,  1,  0, 0), 3, 2, TRUE)
+> xsplineTest(c(0,  1,  1, 0), 3, 3, TRUE)
+> popViewport()
+> pushViewport(viewport(width=.5, x=1, just="right",
++                       layout=grid.layout(3, 3, respect=TRUE)))
+> pushViewport(viewport(layout.pos.row=1))
+> grid.text("Closed Splines", y=1, just="bottom")
+> popViewport()
+> xsplineTest(c(-1, -1, -1, -1), 1, 1, FALSE)
+> xsplineTest(c(-1, -1,  0, -1), 1, 2, FALSE)
+> xsplineTest(c(-1, -1,  1, -1), 1, 3, FALSE)
+> xsplineTest(c( 0,  0, -1,  0), 2, 1, FALSE)
+> xsplineTest(c( 0,  0,  0,  0), 2, 2, FALSE)
+> xsplineTest(c( 0,  0,  1,  0), 2, 3, FALSE)
+> xsplineTest(c( 1,  1, -1,  1), 3, 1, FALSE)
+> xsplineTest(c( 1,  1,  0,  1), 3, 2, FALSE)
+> xsplineTest(c( 1,  1,  1,  1), 3, 3, FALSE)
+> popViewport()
+> 
+> 
+> 
+> cleanEx()
+> nameEx("legendGrob")
+> ### * legendGrob
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: legendGrob
+> ### Title: Constructing a Legend Grob
+> ### Aliases: legendGrob grid.legend
+> ### Keywords: aplot
+> 
+> ### ** Examples
+> 
+>   ## Data:
+>   n <- 10
+>   x <- stats::runif(n) ; y1 <- stats::runif(n) ; y2 <- stats::runif(n)
+>   ## Construct the grobs :
+>   plot <- gTree(children=gList(rectGrob(),
++                   pointsGrob(x, y1, pch=21, gp=gpar(col=2, fill="gray")),
++                   pointsGrob(x, y2, pch=22, gp=gpar(col=3, fill="gray")),
++                   xaxisGrob(),
++                   yaxisGrob()))
+>   legd <- legendGrob(c("Girls", "Boys", "Other"), pch=21:23,
++                      gp=gpar(col = 2:4, fill = "gray"))
+>   gg <- packGrob(packGrob(frameGrob(), plot),
++                  legd, height=unit(1,"null"), side="right")
+> 
+>   ## Now draw it on a new device page:
+>   grid.newpage()
+>   pushViewport(viewport(width=0.8, height=0.8))
+>   grid.draw(gg)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("resolveRasterSize")
+> ### * resolveRasterSize
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: resolveRasterSize
+> ### Title: Utility function to resolve the size of a raster grob
+> ### Aliases: resolveRasterSize
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> # Square raster
+> rg <- rasterGrob(matrix(0))
+> # Fill the complete page (if page is square)
+> grid.newpage()
+> resolveRasterSize(rg)$height
+[1] 6.8inches
+> grid.draw(rg)
+> # Forced to fit tall thin region
+> grid.newpage()
+> pushViewport(viewport(width=.1))
+> resolveRasterSize(rg)$height
+[1] 0.68inches
+> grid.draw(rg)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("showGrob")
+> ### * showGrob
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: showGrob
+> ### Title: Label grid grobs.
+> ### Aliases: showGrob
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+>     grid.newpage()
+>     gt <- gTree(childrenvp=vpStack(
++                   viewport(x=0, width=.5, just="left", name="vp"),
++                   viewport(y=.5, height=.5, just="bottom", name="vp2")),
++                 children=gList(rectGrob(vp="vp::vp2", name="child")),
++                 name="parent")
+>     grid.draw(gt)
+>     showGrob()
+>     showGrob(gPath="child")
+>     showGrob(recurse=FALSE)
+>     showGrob(depth=1)
+>     showGrob(depth=2)
+>     showGrob(depth=1:2)
+>     showGrob(gt)
+>     showGrob(gt, gPath="child")
+>     showGrob(just="left", gp=gpar(col="red", cex=.5), rot=45)
+>     showGrob(labelfun=function(grob, ...) {
++         x <- grobX(grob, "west")
++         y <- grobY(grob, "north")
++         gTree(children=gList(rectGrob(x=x, y=y,
++                 width=stringWidth(grob$name) + unit(2, "mm"),
++                 height=stringHeight(grob$name) + unit(2, "mm"),
++                 gp=gpar(col=NA, fill=rgb(1, 0, 0, .5)),
++                 just=c("left", "top")),
++                 textGrob(grob$name,
++                          x=x + unit(1, "mm"), y=y - unit(1, "mm"),
++                          just=c("left", "top"))))
++     })
+> 
+> ## Not run: 
+> ##D     # Examples from higher-level packages
+> ##D 
+> ##D     library(lattice)
+> ##D     # Ctrl-c after first example
+> ##D     example(histogram)
+> ##D     showGrob()
+> ##D     showGrob(gPath="plot_01.ylab")
+> ##D 
+> ##D     library(ggplot2)
+> ##D     # Ctrl-c after first example
+> ##D     example(qplot)
+> ##D     showGrob()
+> ##D     showGrob(recurse=FALSE)
+> ##D     showGrob(gPath="panel-3-3")
+> ##D     showGrob(gPath="axis.title", grep=TRUE)
+> ##D     showGrob(depth=2)
+> ## End(Not run)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("showViewport")
+> ### * showViewport
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: showViewport
+> ### Title: Display grid viewports.
+> ### Aliases: showViewport
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> showViewport(viewport(width=.5, height=.5, name="vp"))
+> 
+> grid.newpage()
+> pushViewport(viewport(width=.5, height=.5, name="vp"))
+> upViewport()
+> showViewport(vpPath("vp"))
+> 
+> showViewport(vpStack(viewport(width=.5, height=.5, name="vp1"),
++                      viewport(width=.5, height=.5, name="vp2")),
++              newpage=TRUE)
+> 
+> showViewport(vpStack(viewport(width=.5, height=.5, name="vp1"),
++                      viewport(width=.5, height=.5, name="vp2")),
++              fill=rgb(1:0, 0:1, 0, .1),
++              newpage=TRUE)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("unit")
+> ### * unit
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: unit
+> ### Title: Function to Create a Unit Object
+> ### Aliases: unit
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> unit(1, "npc")
+[1] 1npc
+> unit(1:3/4, "npc")
+[1] 0.25npc 0.5npc  0.75npc
+> unit(1:3/4, "npc") + unit(1, "inches")
+[1] sum(0.25npc, 1inches) sum(0.5npc, 1inches)  sum(0.75npc, 1inches)
+> min(unit(0.5, "npc"), unit(1, "inches"))
+[1] min(0.5npc, 1inches)
+> unit.c(unit(0.5, "npc"), unit(2, "inches") + unit(1:3/4, "npc"),
++        unit(1, "strwidth", "hi there"))
+[1] 0.5npc                sum(2inches, 0.25npc) sum(2inches, 0.5npc) 
+[4] sum(2inches, 0.75npc) 1strwidth            
+> x <- unit(1:5, "npc")
+> x[2:4]
+[1] 2npc 3npc 4npc
+> x[2:4] <- unit(1, "mm")
+> x
+[1] 1npc 1mm  1mm  1mm  5npc
+> 
+> 
+> 
+> cleanEx()
+> nameEx("unit.length")
+> ### * unit.length
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: unit.length
+> ### Title: Length of a Unit Object
+> ### Aliases: unit.length
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> length(unit(1:3, "npc"))
+[1] 3
+> length(unit(1:3, "npc") + unit(1, "inches"))
+[1] 3
+> length(max(unit(1:3, "npc") + unit(1, "inches")))
+[1] 1
+> length(max(unit(1:3, "npc") + unit(1, "strwidth", "a"))*4)
+[1] 1
+> length(unit(1:3, "npc") + unit(1, "strwidth", "a")*4)
+[1] 3
+> 
+> 
+> 
+> cleanEx()
+> nameEx("unit.pmin")
+> ### * unit.pmin
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: unit.pmin
+> ### Title: Parallel Unit Minima and Maxima
+> ### Aliases: unit.pmin unit.pmax unit.psum
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> max(unit(1:3, "cm"), unit(0.5, "npc"))
+[1] max(1cm, 2cm, 3cm, 0.5npc)
+> unit.pmax(unit(1:3, "cm"), unit(0.5, "npc"))
+[1] max(1cm, 0.5npc) max(2cm, 0.5npc) max(3cm, 0.5npc)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("unit.rep")
+> ### * unit.rep
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: unit.rep
+> ### Title: Replicate Elements of Unit Objects
+> ### Aliases: unit.rep
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> rep(unit(1:3, "npc"), 3)
+[1] 1npc 2npc 3npc 1npc 2npc 3npc 1npc 2npc 3npc
+> rep(unit(1:3, "npc"), 1:3)
+[1] 1npc 2npc 2npc 3npc 3npc 3npc
+> rep(unit(1:3, "npc") + unit(1, "inches"), 3)
+[1] sum(1npc, 1inches) sum(2npc, 1inches) sum(3npc, 1inches) sum(1npc, 1inches)
+[5] sum(2npc, 1inches) sum(3npc, 1inches) sum(1npc, 1inches) sum(2npc, 1inches)
+[9] sum(3npc, 1inches)
+> rep(max(unit(1:3, "npc") + unit(1, "inches")), 3)
+[1] max(sum(1npc, 1inches), sum(2npc, 1inches), sum(3npc, 1inches))
+[2] max(sum(1npc, 1inches), sum(2npc, 1inches), sum(3npc, 1inches))
+[3] max(sum(1npc, 1inches), sum(2npc, 1inches), sum(3npc, 1inches))
+> rep(max(unit(1:3, "npc") + unit(1, "strwidth", "a"))*4, 3)
+[1] 4*max(sum(1npc, 1strwidth), sum(2npc, 1strwidth), sum(3npc, 1strwidth))
+[2] 4*max(sum(1npc, 1strwidth), sum(2npc, 1strwidth), sum(3npc, 1strwidth))
+[3] 4*max(sum(1npc, 1strwidth), sum(2npc, 1strwidth), sum(3npc, 1strwidth))
+> rep(unit(1:3, "npc") + unit(1, "strwidth", "a")*4, 3)
+[1] sum(1npc, 4strwidth) sum(2npc, 4strwidth) sum(3npc, 4strwidth)
+[4] sum(1npc, 4strwidth) sum(2npc, 4strwidth) sum(3npc, 4strwidth)
+[7] sum(1npc, 4strwidth) sum(2npc, 4strwidth) sum(3npc, 4strwidth)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("unitType")
+> ### * unitType
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: unitType
+> ### Title: Return the Units of a Unit Object
+> ### Aliases: unitType
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> u <- unit(1:5, c("cm", "mm", "in", "pt", "null"))
+> 
+> unitType(u)
+[1] "cm"     "mm"     "inches" "points" "null"  
+> unitType(unit(1, "npc"))
+[1] "npc"
+> unitType(unit(1:3/4, "npc"))
+[1] "npc" "npc" "npc"
+> unitType(unit(1:3/4, "npc") + unit(1, "inches"))
+[1] "sum" "sum" "sum"
+> unitType(min(unit(0.5, "npc"), unit(1, "inches")))
+[1] "min"
+> unitType(unit.c(unit(0.5, "npc"), unit(2, "inches") + unit(1:3/4, "npc"),
++                 unit(1, "strwidth", "hi there")))
+[1] "npc"      "sum"      "sum"      "sum"      "strwidth"
+> unitType(min(unit(1, "in"), unit(1, "npc") + unit(1, "mm")))
+[1] "min"
+> 
+> unitType(u, recurse=TRUE)
+$cm
+[1] "cm"
+
+$mm
+[1] "mm"
+
+$inches
+[1] "inches"
+
+$points
+[1] "points"
+
+$null
+[1] "null"
+
+> unitType(unit(1, "npc"), recurse=TRUE)
+$npc
+[1] "npc"
+
+> unitType(unit(1:3/4, "npc"), recurse=TRUE)
+$npc
+[1] "npc"
+
+$npc
+[1] "npc"
+
+$npc
+[1] "npc"
+
+> unitType(unit(1:3/4, "npc") + unit(1, "inches"), recurse=TRUE)
+$sum
+$sum$npc
+[1] "npc"
+
+$sum$inches
+[1] "inches"
+
+
+$sum
+$sum$npc
+[1] "npc"
+
+$sum$inches
+[1] "inches"
+
+
+$sum
+$sum$npc
+[1] "npc"
+
+$sum$inches
+[1] "inches"
+
+
+> unitType(min(unit(0.5, "npc"), unit(1, "inches")), recurse=TRUE)
+$min
+$min$npc
+[1] "npc"
+
+$min$inches
+[1] "inches"
+
+
+> unitType(unit.c(unit(0.5, "npc"), unit(2, "inches") + unit(1:3/4, "npc"),
++                 unit(1, "strwidth", "hi there")), recurse=TRUE)
+$npc
+[1] "npc"
+
+$sum
+$sum$inches
+[1] "inches"
+
+$sum$npc
+[1] "npc"
+
+
+$sum
+$sum$inches
+[1] "inches"
+
+$sum$npc
+[1] "npc"
+
+
+$sum
+$sum$inches
+[1] "inches"
+
+$sum$npc
+[1] "npc"
+
+
+$strwidth
+[1] "strwidth"
+
+> unitType(min(unit(1, "in"), unit(1, "npc") + unit(1, "mm")), recurse=TRUE)
+$min
+$min$inches
+[1] "inches"
+
+$min$sum
+$min$sum$npc
+[1] "npc"
+
+$min$sum$mm
+[1] "mm"
+
+
+
+> unlist(unitType(min(unit(1, "in"), unit(1, "npc") + unit(1, "mm")),
++                 recurse=TRUE))
+ min.inches min.sum.npc  min.sum.mm 
+   "inches"       "npc"        "mm" 
+> 
+> 
+> 
+> cleanEx()
+> nameEx("viewport")
+> ### * viewport
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: Grid Viewports
+> ### Title: Create a Grid Viewport
+> ### Aliases: viewport vpList vpStack vpTree
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> # Diagram of a sample viewport
+> grid.show.viewport(viewport(x=0.6, y=0.6,
++                    width=unit(1, "inches"), height=unit(1, "inches")))
+> # Demonstrate viewport clipping
+> clip.demo <- function(i, j, clip1, clip2) {
++   pushViewport(viewport(layout.pos.col=i,
++                          layout.pos.row=j))
++   pushViewport(viewport(width=0.6, height=0.6, clip=clip1))
++   grid.rect(gp=gpar(fill="white"))
++   grid.circle(r=0.55, gp=gpar(col="red", fill="pink"))
++   popViewport()
++   pushViewport(viewport(width=0.6, height=0.6, clip=clip2))
++   grid.polygon(x=c(0.5, 1.1, 0.6, 1.1, 0.5, -0.1, 0.4, -0.1),
++                y=c(0.6, 1.1, 0.5, -0.1, 0.4, -0.1, 0.5, 1.1),
++                gp=gpar(col="blue", fill="light blue"))
++   popViewport(2)
++ }
+> 
+> grid.newpage()
+> grid.rect(gp=gpar(fill="grey"))
+> pushViewport(viewport(layout=grid.layout(2, 2)))
+> clip.demo(1, 1, FALSE, FALSE)
+> clip.demo(1, 2, TRUE, FALSE)
+> clip.demo(2, 1, FALSE, TRUE)
+> clip.demo(2, 2, TRUE, TRUE)
+> popViewport()
+> # Demonstrate turning clipping off
+> grid.newpage()
+> pushViewport(viewport(width=.5, height=.5, clip="on"))
+> grid.rect()
+> grid.circle(r=.6, gp=gpar(lwd=10))
+> pushViewport(viewport(clip="inherit"))
+> grid.circle(r=.6, gp=gpar(lwd=5, col="grey"))
+> pushViewport(viewport(clip="off"))
+> grid.circle(r=.6)
+> popViewport(3)
+> # Demonstrate vpList, vpStack, and vpTree
+> grid.newpage()
+> tree <- vpTree(viewport(width=0.8, height=0.8, name="A"),
++                vpList(vpStack(viewport(x=0.1, y=0.1, width=0.5, height=0.5,
++                                        just=c("left", "bottom"), name="B"),
++                               viewport(x=0.1, y=0.1, width=0.5, height=0.5,
++                                        just=c("left", "bottom"), name="C"),
++                               viewport(x=0.1, y=0.1, width=0.5, height=0.5,
++                                        just=c("left", "bottom"), name="D")),
++                       viewport(x=0.5, width=0.4, height=0.9,
++                                just="left", name="E")))
+> pushViewport(tree)
+> for (i in LETTERS[1:5]) {
++   seekViewport(i)
++   grid.rect()
++   grid.text(current.vpTree(FALSE),
++             x=unit(1, "mm"), y=unit(1, "npc") - unit(1, "mm"),
++             just=c("left", "top"),
++             gp=gpar(fontsize=8))
++ }
+> 
+> 
+> 
+> cleanEx()
+> nameEx("viewportTransform")
+> ### * viewportTransform
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: viewportTransform
+> ### Title: Define a Group Transformation
+> ### Aliases: viewportTransform viewportTranslate viewportScale
+> ###   viewportRotate defnTranslate defnScale defnRotate useTranslate
+> ###   useScale useRotate groupTranslate groupScale groupRotate groupShear
+> ###   groupFlip
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> ## NOTE: on devices without support for groups nothing will be drawn
+> grid.newpage()
+> ## Define and use group in same viewport
+> pushViewport(viewport(width=.2, height=.2))
+> grid.define(circleGrob(gp=gpar(lwd=5)), name="circle")
+> grid.use("circle")
+> popViewport()
+> ## Use group in viewport that is translated and scaled
+> pushViewport(viewport(x=.2, y=.2, width=.1, height=.1))
+> grid.use("circle")
+> popViewport()
+> ## Use group in viewport that is translated and scaled
+> ## BUT only make use of the translation
+> pushViewport(viewport(x=.2, y=.8, width=.1, height=.1))
+> grid.use("circle", transform=viewportTranslate)
+> popViewport()
+> ## Use group in viewport that is translated and scaled
+> ## unevenly (distorted)
+> pushViewport(viewport(x=.8, y=.7, width=.2, height=.4))
+> grid.use("circle")
+> popViewport()
+> 
+> 
+> 
+> cleanEx()
+> nameEx("viewports")
+> ### * viewports
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: Working with Viewports
+> ### Title: Maintaining and Navigating the Grid Viewport Tree
+> ### Aliases: pushViewport downViewport seekViewport popViewport upViewport
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> # push the same viewport several times
+> grid.newpage()
+> vp <- viewport(width=0.5, height=0.5)
+> pushViewport(vp)
+> grid.rect(gp=gpar(col="blue"))
+> grid.text("Quarter of the device",
++   y=unit(1, "npc") - unit(1, "lines"), gp=gpar(col="blue"))
+> pushViewport(vp)
+> grid.rect(gp=gpar(col="red"))
+> grid.text("Quarter of the parent viewport",
++   y=unit(1, "npc") - unit(1, "lines"), gp=gpar(col="red"))
+> popViewport(2)
+> # push several viewports then navigate amongst them
+> grid.newpage()
+> grid.rect(gp=gpar(col="grey"))
+> grid.text("Top-level viewport",
++   y=unit(1, "npc") - unit(1, "lines"), gp=gpar(col="grey"))
+> if (interactive()) Sys.sleep(1.0)
+> pushViewport(viewport(width=0.8, height=0.7, name="A"))
+> grid.rect(gp=gpar(col="blue"))
+> grid.text("1. Push Viewport A",
++   y=unit(1, "npc") - unit(1, "lines"), gp=gpar(col="blue"))
+> if (interactive()) Sys.sleep(1.0)
+> pushViewport(viewport(x=0.1, width=0.3, height=0.6,
++   just="left", name="B"))
+> grid.rect(gp=gpar(col="red"))
+> grid.text("2. Push Viewport B (in A)",
++   y=unit(1, "npc") - unit(1, "lines"), gp=gpar(col="red"))
+> if (interactive()) Sys.sleep(1.0)
+> upViewport(1)
+> grid.text("3. Up from B to A",
++   y=unit(1, "npc") - unit(2, "lines"), gp=gpar(col="blue"))
+> if (interactive()) Sys.sleep(1.0)
+> pushViewport(viewport(x=0.5, width=0.4, height=0.8,
++   just="left", name="C"))
+> grid.rect(gp=gpar(col="green"))
+> grid.text("4. Push Viewport C (in A)",
++   y=unit(1, "npc") - unit(1, "lines"), gp=gpar(col="green"))
+> if (interactive()) Sys.sleep(1.0)
+> pushViewport(viewport(width=0.8, height=0.6, name="D"))
+> grid.rect()
+> grid.text("5. Push Viewport D (in C)",
++   y=unit(1, "npc") - unit(1, "lines"))
+> if (interactive()) Sys.sleep(1.0)
+> upViewport(0)
+> grid.text("6. Up from D to top-level",
++   y=unit(1, "npc") - unit(2, "lines"), gp=gpar(col="grey"))
+> if (interactive()) Sys.sleep(1.0)
+> downViewport("D")
+> grid.text("7. Down from top-level to D",
++   y=unit(1, "npc") - unit(2, "lines"))
+> if (interactive()) Sys.sleep(1.0)
+> seekViewport("B")
+> grid.text("8. Seek from D to B",
++   y=unit(1, "npc") - unit(2, "lines"), gp=gpar(col="red"))
+> pushViewport(viewport(width=0.9, height=0.5, name="A"))
+> grid.rect()
+> grid.text("9. Push Viewport A (in B)",
++   y=unit(1, "npc") - unit(1, "lines"))
+> if (interactive()) Sys.sleep(1.0)
+> seekViewport("A")
+> grid.text("10. Seek from B to A (in ROOT)",
++   y=unit(1, "npc") - unit(3, "lines"), gp=gpar(col="blue"))
+> if (interactive()) Sys.sleep(1.0)
+> seekViewport(vpPath("B", "A"))
+> grid.text("11. Seek from\nA (in ROOT)\nto A (in B)")
+> popViewport(0)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("vpPath")
+> ### * vpPath
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: vpPath
+> ### Title: Concatenate Viewport Names
+> ### Aliases: vpPath
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> vpPath("vp1", "vp2")
+vp1::vp2 
+> 
+> 
+> 
+> cleanEx()
+> nameEx("xsplinePoints")
+> ### * xsplinePoints
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: xsplinePoints
+> ### Title: Return the points that would be used to draw an Xspline (or a
+> ###   Bezier curve).
+> ### Aliases: xsplinePoints bezierPoints
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> grid.newpage()
+> xsg <- xsplineGrob(c(.1, .1, .9, .9), c(.1, .9, .9, .1), shape=1)
+> grid.draw(xsg)
+> trace <- xsplinePoints(xsg)
+> grid.circle(trace$x, trace$y, default.units="inches", r=unit(.5, "mm"))
+> 
+> grid.newpage()
+> vp <- viewport(width=.5)
+> xg <- xsplineGrob(x=c(0, .2, .4, .2, .5, .7, .9, .7),
++                   y=c(.5, 1, .5, 0, .5, 1, .5, 0),
++                   id=rep(1:2, each=4),
++                   shape=1,
++                   vp=vp)
+> grid.draw(xg)
+> trace <- xsplinePoints(xg)
+> pushViewport(vp)
+> invisible(lapply(trace, function(t) grid.lines(t$x, t$y, gp=gpar(col="red"))))
+> popViewport()
+> 
+> grid.newpage()
+> bg <- bezierGrob(c(.2, .2, .8, .8), c(.2, .8, .8, .2))
+> grid.draw(bg)
+> trace <- bezierPoints(bg)
+> grid.circle(trace$x, trace$y, default.units="inches", r=unit(.5, "mm"))
+> 
+> 
+> 
+> ### * <FOOTER>
+> ###
+> cleanEx()
+> options(digits = 7L)
+> base::cat("Time elapsed: ", proc.time() - base::get("ptime", pos = 'CheckExEnv'),"\n")
+Time elapsed:  3.471 0.055 3.552 0 0 
+> grDevices::dev.off()
+null device 
+          1 
+> ###
+> ### Local variables: ***
+> ### mode: outline-minor ***
+> ### outline-regexp: "\\(> \\)?### [*]+" ***
+> ### End: ***
+> quit('no')
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/tests/Examples/datasets-Ex.Rout.save
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/tests/Examples/datasets-Ex.Rout.save	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/tests/Examples/datasets-Ex.Rout.save	(revision 3762)
@@ -0,0 +1,3524 @@
+
+R Under development (unstable) (2022-03-19 r81942) -- "Unsuffered Consequences"
+Copyright (C) 2022 The R Foundation for Statistical Computing
+Platform: x86_64-pc-linux-gnu (64-bit)
+
+R is free software and comes with ABSOLUTELY NO WARRANTY.
+You are welcome to redistribute it under certain conditions.
+Type 'license()' or 'licence()' for distribution details.
+
+  Natural language support but running in an English locale
+
+R is a collaborative project with many contributors.
+Type 'contributors()' for more information and
+'citation()' on how to cite R or R packages in publications.
+
+Type 'demo()' for some demos, 'help()' for on-line help, or
+'help.start()' for an HTML browser interface to help.
+Type 'q()' to quit R.
+
+> pkgname <- "datasets"
+> source(file.path(R.home("share"), "R", "examples-header.R"))
+> options(warn = 1)
+> library('datasets')
+> 
+> base::assign(".oldSearch", base::search(), pos = 'CheckExEnv')
+> base::assign(".old_wd", base::getwd(), pos = 'CheckExEnv')
+> cleanEx()
+> nameEx("AirPassengers")
+> ### * AirPassengers
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: AirPassengers
+> ### Title: Monthly Airline Passenger Numbers 1949-1960
+> ### Aliases: AirPassengers
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> ## Not run: 
+> ##D ## These are quite slow and so not run by example(AirPassengers)
+> ##D 
+> ##D ## The classic 'airline model', by full ML
+> ##D (fit <- arima(log10(AirPassengers), c(0, 1, 1),
+> ##D               seasonal = list(order = c(0, 1, 1), period = 12)))
+> ##D update(fit, method = "CSS")
+> ##D update(fit, x = window(log10(AirPassengers), start = 1954))
+> ##D pred <- predict(fit, n.ahead = 24)
+> ##D tl <- pred$pred - 1.96 * pred$se
+> ##D tu <- pred$pred + 1.96 * pred$se
+> ##D ts.plot(AirPassengers, 10^tl, 10^tu, log = "y", lty = c(1, 2, 2))
+> ##D 
+> ##D ## full ML fit is the same if the series is reversed, CSS fit is not
+> ##D ap0 <- rev(log10(AirPassengers))
+> ##D attributes(ap0) <- attributes(AirPassengers)
+> ##D arima(ap0, c(0, 1, 1), seasonal = list(order = c(0, 1, 1), period = 12))
+> ##D arima(ap0, c(0, 1, 1), seasonal = list(order = c(0, 1, 1), period = 12),
+> ##D       method = "CSS")
+> ##D 
+> ##D ## Structural Time Series
+> ##D ap <- log10(AirPassengers) - 2
+> ##D (fit <- StructTS(ap, type = "BSM"))
+> ##D par(mfrow = c(1, 2))
+> ##D plot(cbind(ap, fitted(fit)), plot.type = "single")
+> ##D plot(cbind(ap, tsSmooth(fit)), plot.type = "single")
+> ## End(Not run)
+> 
+> 
+> cleanEx()
+> nameEx("BOD")
+> ### * BOD
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: BOD
+> ### Title: Biochemical Oxygen Demand
+> ### Aliases: BOD
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> ## Don't show: 
+> options(show.nls.convergence=FALSE)
+> old <- options(digits = 5)
+> ## End(Don't show)
+> require(stats)
+> # simplest form of fitting a first-order model to these data
+> fm1 <- nls(demand ~ A*(1-exp(-exp(lrc)*Time)), data = BOD,
++            start = c(A = 20, lrc = log(.35)))
+> coef(fm1)
+       A      lrc 
+19.14258 -0.63282 
+> fm1
+Nonlinear regression model
+  model: demand ~ A * (1 - exp(-exp(lrc) * Time))
+   data: BOD
+     A    lrc 
+19.143 -0.633 
+ residual sum-of-squares: 26
+> # using the plinear algorithm  (trace o/p differs by platform)
+> ## IGNORE_RDIFF_BEGIN
+> fm2 <- nls(demand ~ (1-exp(-exp(lrc)*Time)), data = BOD,
++            start = c(lrc = log(.35)), algorithm = "plinear", trace = TRUE)
+32.946    (7.09e-01): par = (-1.0498 22.126)
+25.992    (1.29e-02): par = (-0.62572 19.103)
+25.990    (2.13e-04): par = (-0.6327 19.142)
+25.990    (3.55e-06): par = (-0.63282 19.143)
+> ## IGNORE_RDIFF_END
+> # using a self-starting model
+> fm3 <- nls(demand ~ SSasympOrig(Time, A, lrc), data = BOD)
+> summary(fm3)
+
+Formula: demand ~ SSasympOrig(Time, A, lrc)
+
+Parameters:
+    Estimate Std. Error t value Pr(>|t|)   
+A     19.143      2.496    7.67   0.0016 **
+lrc   -0.633      0.382   -1.65   0.1733   
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+
+Residual standard error: 2.55 on 4 degrees of freedom
+
+> ## Don't show: 
+> options(old)
+> ## End(Don't show)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("ChickWeight")
+> ### * ChickWeight
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: ChickWeight
+> ### Title: Weight versus age of chicks on different diets
+> ### Aliases: ChickWeight
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> 
+> cleanEx()
+> nameEx("DNase")
+> ### * DNase
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: DNase
+> ### Title: Elisa assay of DNase
+> ### Aliases: DNase
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> require(stats); require(graphics)
+> ## Don't show: 
+> options(show.nls.convergence=FALSE)
+> ## End(Don't show)
+> coplot(density ~ conc | Run, data = DNase,
++        show.given = FALSE, type = "b")
+> coplot(density ~ log(conc) | Run, data = DNase,
++        show.given = FALSE, type = "b")
+> ## fit a representative run
+> fm1 <- nls(density ~ SSlogis( log(conc), Asym, xmid, scal ),
++     data = DNase, subset = Run == 1)
+> ## compare with a four-parameter logistic
+> fm2 <- nls(density ~ SSfpl( log(conc), A, B, xmid, scal ),
++     data = DNase, subset = Run == 1)
+> summary(fm2)
+
+Formula: density ~ SSfpl(log(conc), A, B, xmid, scal)
+
+Parameters:
+      Estimate Std. Error t value Pr(>|t|)    
+A    -0.007897   0.017200  -0.459    0.654    
+B     2.377239   0.109516  21.707 5.35e-11 ***
+xmid  1.507403   0.102080  14.767 4.65e-09 ***
+scal  1.062579   0.056996  18.643 3.16e-10 ***
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+
+Residual standard error: 0.01981 on 12 degrees of freedom
+
+> anova(fm1, fm2)
+Analysis of Variance Table
+
+Model 1: density ~ SSlogis(log(conc), Asym, xmid, scal)
+Model 2: density ~ SSfpl(log(conc), A, B, xmid, scal)
+  Res.Df Res.Sum Sq Df     Sum Sq F value Pr(>F)
+1     13  0.0047896                             
+2     12  0.0047073  1 8.2314e-05  0.2098 0.6551
+> 
+> 
+> 
+> cleanEx()
+> nameEx("Formaldehyde")
+> ### * Formaldehyde
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: Formaldehyde
+> ### Title: Determination of Formaldehyde
+> ### Aliases: Formaldehyde
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> require(stats); require(graphics)
+> plot(optden ~ carb, data = Formaldehyde,
++      xlab = "Carbohydrate (ml)", ylab = "Optical Density",
++      main = "Formaldehyde data", col = 4, las = 1)
+> abline(fm1 <- lm(optden ~ carb, data = Formaldehyde))
+> summary(fm1)
+
+Call:
+lm(formula = optden ~ carb, data = Formaldehyde)
+
+Residuals:
+        1         2         3         4         5         6 
+-0.006714  0.001029  0.002771  0.007143  0.007514 -0.011743 
+
+Coefficients:
+            Estimate Std. Error t value Pr(>|t|)    
+(Intercept) 0.005086   0.007834   0.649    0.552    
+carb        0.876286   0.013535  64.744 3.41e-07 ***
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+
+Residual standard error: 0.008649 on 4 degrees of freedom
+Multiple R-squared:  0.999,	Adjusted R-squared:  0.9988 
+F-statistic:  4192 on 1 and 4 DF,  p-value: 3.409e-07
+
+> opar <- par(mfrow = c(2, 2), oma = c(0, 0, 1.1, 0))
+> plot(fm1)
+> par(opar)
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("HairEyeColor")
+> ### * HairEyeColor
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: HairEyeColor
+> ### Title: Hair and Eye Color of Statistics Students
+> ### Aliases: HairEyeColor
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> ## Full mosaic
+> mosaicplot(HairEyeColor)
+> ## Aggregate over sex (as in Snee's original data)
+> x <- apply(HairEyeColor, c(1, 2), sum)
+> x
+       Eye
+Hair    Brown Blue Hazel Green
+  Black    68   20    15     5
+  Brown   119   84    54    29
+  Red      26   17    14    14
+  Blond     7   94    10    16
+> mosaicplot(x, main = "Relation between hair and eye color")
+> 
+> 
+> 
+> cleanEx()
+> nameEx("Harman23.cor")
+> ### * Harman23.cor
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: Harman23.cor
+> ### Title: Harman Example 2.3
+> ### Aliases: Harman23.cor
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> require(stats)
+> (Harman23.FA <- factanal(factors = 1, covmat = Harman23.cor))
+
+Call:
+factanal(factors = 1, covmat = Harman23.cor)
+
+Uniquenesses:
+        height       arm.span        forearm      lower.leg         weight 
+         0.158          0.135          0.190          0.187          0.760 
+bitro.diameter    chest.girth    chest.width 
+         0.829          0.877          0.801 
+
+Loadings:
+               Factor1
+height         0.918  
+arm.span       0.930  
+forearm        0.900  
+lower.leg      0.902  
+weight         0.490  
+bitro.diameter 0.413  
+chest.girth    0.351  
+chest.width    0.446  
+
+               Factor1
+SS loadings      4.064
+Proportion Var   0.508
+
+Test of the hypothesis that 1 factor is sufficient.
+The chi square statistic is 611.44 on 20 degrees of freedom.
+The p-value is 1.12e-116 
+> for(factors in 2:4) print(update(Harman23.FA, factors = factors))
+
+Call:
+factanal(factors = factors, covmat = Harman23.cor)
+
+Uniquenesses:
+        height       arm.span        forearm      lower.leg         weight 
+         0.170          0.107          0.166          0.199          0.089 
+bitro.diameter    chest.girth    chest.width 
+         0.364          0.416          0.537 
+
+Loadings:
+               Factor1 Factor2
+height         0.865   0.287  
+arm.span       0.927   0.181  
+forearm        0.895   0.179  
+lower.leg      0.859   0.252  
+weight         0.233   0.925  
+bitro.diameter 0.194   0.774  
+chest.girth    0.134   0.752  
+chest.width    0.278   0.621  
+
+               Factor1 Factor2
+SS loadings      3.335   2.617
+Proportion Var   0.417   0.327
+Cumulative Var   0.417   0.744
+
+Test of the hypothesis that 2 factors are sufficient.
+The chi square statistic is 75.74 on 13 degrees of freedom.
+The p-value is 6.94e-11 
+
+Call:
+factanal(factors = factors, covmat = Harman23.cor)
+
+Uniquenesses:
+        height       arm.span        forearm      lower.leg         weight 
+         0.127          0.005          0.193          0.157          0.090 
+bitro.diameter    chest.girth    chest.width 
+         0.359          0.411          0.490 
+
+Loadings:
+               Factor1 Factor2 Factor3
+height          0.886   0.267  -0.130 
+arm.span        0.937   0.195   0.280 
+forearm         0.874   0.188         
+lower.leg       0.877   0.230  -0.145 
+weight          0.242   0.916  -0.106 
+bitro.diameter  0.193   0.777         
+chest.girth     0.137   0.755         
+chest.width     0.261   0.646   0.159 
+
+               Factor1 Factor2 Factor3
+SS loadings      3.379   2.628   0.162
+Proportion Var   0.422   0.329   0.020
+Cumulative Var   0.422   0.751   0.771
+
+Test of the hypothesis that 3 factors are sufficient.
+The chi square statistic is 22.81 on 7 degrees of freedom.
+The p-value is 0.00184 
+
+Call:
+factanal(factors = factors, covmat = Harman23.cor)
+
+Uniquenesses:
+        height       arm.span        forearm      lower.leg         weight 
+         0.137          0.005          0.191          0.116          0.138 
+bitro.diameter    chest.girth    chest.width 
+         0.283          0.178          0.488 
+
+Loadings:
+               Factor1 Factor2 Factor3 Factor4
+height          0.879   0.277          -0.115 
+arm.span        0.937   0.194           0.277 
+forearm         0.875   0.191                 
+lower.leg       0.887   0.209   0.135  -0.188 
+weight          0.246   0.882   0.111  -0.109 
+bitro.diameter  0.187   0.822                 
+chest.girth     0.117   0.729   0.526         
+chest.width     0.263   0.644           0.141 
+
+               Factor1 Factor2 Factor3 Factor4
+SS loadings      3.382   2.595   0.323   0.165
+Proportion Var   0.423   0.324   0.040   0.021
+Cumulative Var   0.423   0.747   0.787   0.808
+
+Test of the hypothesis that 4 factors are sufficient.
+The chi square statistic is 4.63 on 2 degrees of freedom.
+The p-value is 0.0988 
+> 
+> 
+> 
+> cleanEx()
+> nameEx("Harman74.cor")
+> ### * Harman74.cor
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: Harman74.cor
+> ### Title: Harman Example 7.4
+> ### Aliases: Harman74.cor
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> require(stats)
+> (Harman74.FA <- factanal(factors = 1, covmat = Harman74.cor))
+
+Call:
+factanal(factors = 1, covmat = Harman74.cor)
+
+Uniquenesses:
+      VisualPerception                  Cubes         PaperFormBoard 
+                 0.677                  0.866                  0.830 
+                 Flags     GeneralInformation  PargraphComprehension 
+                 0.768                  0.487                  0.491 
+    SentenceCompletion     WordClassification            WordMeaning 
+                 0.500                  0.514                  0.474 
+              Addition                   Code           CountingDots 
+                 0.818                  0.731                  0.824 
+StraightCurvedCapitals        WordRecognition      NumberRecognition 
+                 0.681                  0.833                  0.863 
+     FigureRecognition           ObjectNumber           NumberFigure 
+                 0.775                  0.812                  0.778 
+            FigureWord              Deduction       NumericalPuzzles 
+                 0.816                  0.612                  0.676 
+      ProblemReasoning       SeriesCompletion     ArithmeticProblems 
+                 0.619                  0.524                  0.593 
+
+Loadings:
+                       Factor1
+VisualPerception       0.569  
+Cubes                  0.366  
+PaperFormBoard         0.412  
+Flags                  0.482  
+GeneralInformation     0.716  
+PargraphComprehension  0.713  
+SentenceCompletion     0.707  
+WordClassification     0.697  
+WordMeaning            0.725  
+Addition               0.426  
+Code                   0.519  
+CountingDots           0.419  
+StraightCurvedCapitals 0.565  
+WordRecognition        0.408  
+NumberRecognition      0.370  
+FigureRecognition      0.474  
+ObjectNumber           0.434  
+NumberFigure           0.471  
+FigureWord             0.429  
+Deduction              0.623  
+NumericalPuzzles       0.569  
+ProblemReasoning       0.617  
+SeriesCompletion       0.690  
+ArithmeticProblems     0.638  
+
+               Factor1
+SS loadings      7.438
+Proportion Var   0.310
+
+Test of the hypothesis that 1 factor is sufficient.
+The chi square statistic is 622.91 on 252 degrees of freedom.
+The p-value is 2.28e-33 
+> for(factors in 2:5) print(update(Harman74.FA, factors = factors))
+
+Call:
+factanal(factors = factors, covmat = Harman74.cor)
+
+Uniquenesses:
+      VisualPerception                  Cubes         PaperFormBoard 
+                 0.650                  0.864                  0.844 
+                 Flags     GeneralInformation  PargraphComprehension 
+                 0.778                  0.375                  0.316 
+    SentenceCompletion     WordClassification            WordMeaning 
+                 0.319                  0.503                  0.258 
+              Addition                   Code           CountingDots 
+                 0.670                  0.608                  0.581 
+StraightCurvedCapitals        WordRecognition      NumberRecognition 
+                 0.567                  0.832                  0.850 
+     FigureRecognition           ObjectNumber           NumberFigure 
+                 0.743                  0.770                  0.625 
+            FigureWord              Deduction       NumericalPuzzles 
+                 0.792                  0.629                  0.579 
+      ProblemReasoning       SeriesCompletion     ArithmeticProblems 
+                 0.634                  0.539                  0.553 
+
+Loadings:
+                       Factor1 Factor2
+VisualPerception       0.506   0.306  
+Cubes                  0.304   0.209  
+PaperFormBoard         0.297   0.260  
+Flags                  0.327   0.339  
+GeneralInformation     0.240   0.753  
+PargraphComprehension  0.171   0.809  
+SentenceCompletion     0.163   0.809  
+WordClassification     0.344   0.615  
+WordMeaning            0.148   0.849  
+Addition               0.563   0.115  
+Code                   0.591   0.207  
+CountingDots           0.647          
+StraightCurvedCapitals 0.612   0.241  
+WordRecognition        0.315   0.263  
+NumberRecognition      0.328   0.205  
+FigureRecognition      0.457   0.218  
+ObjectNumber           0.431   0.209  
+NumberFigure           0.601   0.116  
+FigureWord             0.399   0.222  
+Deduction              0.379   0.477  
+NumericalPuzzles       0.604   0.237  
+ProblemReasoning       0.390   0.462  
+SeriesCompletion       0.486   0.474  
+ArithmeticProblems     0.544   0.389  
+
+               Factor1 Factor2
+SS loadings      4.573   4.548
+Proportion Var   0.191   0.190
+Cumulative Var   0.191   0.380
+
+Test of the hypothesis that 2 factors are sufficient.
+The chi square statistic is 420.24 on 229 degrees of freedom.
+The p-value is 2.01e-13 
+
+Call:
+factanal(factors = factors, covmat = Harman74.cor)
+
+Uniquenesses:
+      VisualPerception                  Cubes         PaperFormBoard 
+                 0.500                  0.793                  0.662 
+                 Flags     GeneralInformation  PargraphComprehension 
+                 0.694                  0.352                  0.316 
+    SentenceCompletion     WordClassification            WordMeaning 
+                 0.300                  0.502                  0.256 
+              Addition                   Code           CountingDots 
+                 0.200                  0.586                  0.494 
+StraightCurvedCapitals        WordRecognition      NumberRecognition 
+                 0.569                  0.838                  0.848 
+     FigureRecognition           ObjectNumber           NumberFigure 
+                 0.643                  0.780                  0.635 
+            FigureWord              Deduction       NumericalPuzzles 
+                 0.788                  0.590                  0.580 
+      ProblemReasoning       SeriesCompletion     ArithmeticProblems 
+                 0.597                  0.498                  0.500 
+
+Loadings:
+                       Factor1 Factor2 Factor3
+VisualPerception        0.176   0.656   0.198 
+Cubes                   0.122   0.428         
+PaperFormBoard          0.145   0.563         
+Flags                   0.239   0.487   0.107 
+GeneralInformation      0.745   0.191   0.237 
+PargraphComprehension   0.780   0.249   0.118 
+SentenceCompletion      0.802   0.175   0.160 
+WordClassification      0.571   0.327   0.256 
+WordMeaning             0.821   0.248         
+Addition                0.162  -0.118   0.871 
+Code                    0.198   0.219   0.572 
+CountingDots                    0.179   0.688 
+StraightCurvedCapitals  0.190   0.381   0.499 
+WordRecognition         0.231   0.253   0.210 
+NumberRecognition       0.158   0.299   0.195 
+FigureRecognition       0.108   0.557   0.186 
+ObjectNumber            0.178   0.267   0.342 
+NumberFigure                    0.427   0.424 
+FigureWord              0.167   0.355   0.240 
+Deduction               0.392   0.472   0.181 
+NumericalPuzzles        0.178   0.406   0.473 
+ProblemReasoning        0.382   0.473   0.182 
+SeriesCompletion        0.379   0.528   0.283 
+ArithmeticProblems      0.377   0.226   0.554 
+
+               Factor1 Factor2 Factor3
+SS loadings      3.802   3.488   3.186
+Proportion Var   0.158   0.145   0.133
+Cumulative Var   0.158   0.304   0.436
+
+Test of the hypothesis that 3 factors are sufficient.
+The chi square statistic is 295.59 on 207 degrees of freedom.
+The p-value is 5.12e-05 
+
+Call:
+factanal(factors = factors, covmat = Harman74.cor)
+
+Uniquenesses:
+      VisualPerception                  Cubes         PaperFormBoard 
+                 0.438                  0.780                  0.644 
+                 Flags     GeneralInformation  PargraphComprehension 
+                 0.651                  0.352                  0.312 
+    SentenceCompletion     WordClassification            WordMeaning 
+                 0.283                  0.485                  0.257 
+              Addition                   Code           CountingDots 
+                 0.240                  0.551                  0.435 
+StraightCurvedCapitals        WordRecognition      NumberRecognition 
+                 0.491                  0.646                  0.696 
+     FigureRecognition           ObjectNumber           NumberFigure 
+                 0.549                  0.598                  0.593 
+            FigureWord              Deduction       NumericalPuzzles 
+                 0.762                  0.592                  0.583 
+      ProblemReasoning       SeriesCompletion     ArithmeticProblems 
+                 0.601                  0.497                  0.500 
+
+Loadings:
+                       Factor1 Factor2 Factor3 Factor4
+VisualPerception        0.160   0.689   0.187   0.160 
+Cubes                   0.117   0.436                 
+PaperFormBoard          0.137   0.570           0.110 
+Flags                   0.233   0.527                 
+GeneralInformation      0.739   0.185   0.213   0.150 
+PargraphComprehension   0.767   0.205           0.233 
+SentenceCompletion      0.806   0.197   0.153         
+WordClassification      0.569   0.339   0.242   0.132 
+WordMeaning             0.806   0.201           0.227 
+Addition                0.167  -0.118   0.831   0.166 
+Code                    0.180   0.120   0.512   0.374 
+CountingDots                    0.210   0.716         
+StraightCurvedCapitals  0.188   0.438   0.525         
+WordRecognition         0.197                   0.553 
+NumberRecognition       0.122   0.116           0.520 
+FigureRecognition               0.408           0.525 
+ObjectNumber            0.142           0.219   0.574 
+NumberFigure                    0.293   0.336   0.456 
+FigureWord              0.148   0.239   0.161   0.365 
+Deduction               0.378   0.402   0.118   0.301 
+NumericalPuzzles        0.175   0.381   0.438   0.223 
+ProblemReasoning        0.366   0.399   0.123   0.301 
+SeriesCompletion        0.369   0.500   0.244   0.239 
+ArithmeticProblems      0.370   0.158   0.496   0.304 
+
+               Factor1 Factor2 Factor3 Factor4
+SS loadings      3.647   2.872   2.657   2.290
+Proportion Var   0.152   0.120   0.111   0.095
+Cumulative Var   0.152   0.272   0.382   0.478
+
+Test of the hypothesis that 4 factors are sufficient.
+The chi square statistic is 226.68 on 186 degrees of freedom.
+The p-value is 0.0224 
+
+Call:
+factanal(factors = factors, covmat = Harman74.cor)
+
+Uniquenesses:
+      VisualPerception                  Cubes         PaperFormBoard 
+                 0.450                  0.781                  0.639 
+                 Flags     GeneralInformation  PargraphComprehension 
+                 0.649                  0.357                  0.288 
+    SentenceCompletion     WordClassification            WordMeaning 
+                 0.277                  0.485                  0.262 
+              Addition                   Code           CountingDots 
+                 0.215                  0.386                  0.444 
+StraightCurvedCapitals        WordRecognition      NumberRecognition 
+                 0.256                  0.639                  0.706 
+     FigureRecognition           ObjectNumber           NumberFigure 
+                 0.550                  0.614                  0.596 
+            FigureWord              Deduction       NumericalPuzzles 
+                 0.764                  0.521                  0.564 
+      ProblemReasoning       SeriesCompletion     ArithmeticProblems 
+                 0.580                  0.442                  0.478 
+
+Loadings:
+                       Factor1 Factor2 Factor3 Factor4 Factor5
+VisualPerception        0.161   0.658   0.136   0.182   0.199 
+Cubes                   0.113   0.435           0.107         
+PaperFormBoard          0.135   0.562           0.107   0.116 
+Flags                   0.231   0.533                         
+GeneralInformation      0.736   0.188   0.192   0.162         
+PargraphComprehension   0.775   0.187           0.251   0.113 
+SentenceCompletion      0.809   0.208   0.136                 
+WordClassification      0.568   0.348   0.223   0.131         
+WordMeaning             0.800   0.215           0.224         
+Addition                0.175  -0.100   0.844   0.176         
+Code                    0.185           0.438   0.451   0.426 
+CountingDots                    0.222   0.690   0.101   0.140 
+StraightCurvedCapitals  0.186   0.425   0.458           0.559 
+WordRecognition         0.197                   0.557         
+NumberRecognition       0.121   0.130           0.508         
+FigureRecognition               0.400           0.529         
+ObjectNumber            0.145           0.208   0.562         
+NumberFigure                    0.306   0.325   0.452         
+FigureWord              0.147   0.242   0.145   0.364         
+Deduction               0.370   0.452   0.139   0.287  -0.190 
+NumericalPuzzles        0.170   0.402   0.439   0.230         
+ProblemReasoning        0.358   0.423   0.126   0.302         
+SeriesCompletion        0.360   0.549   0.256   0.223  -0.107 
+ArithmeticProblems      0.371   0.185   0.502   0.307         
+
+               Factor1 Factor2 Factor3 Factor4 Factor5
+SS loadings      3.632   2.964   2.456   2.345   0.663
+Proportion Var   0.151   0.124   0.102   0.098   0.028
+Cumulative Var   0.151   0.275   0.377   0.475   0.503
+
+Test of the hypothesis that 5 factors are sufficient.
+The chi square statistic is 186.82 on 166 degrees of freedom.
+The p-value is 0.128 
+> Harman74.FA <- factanal(factors = 5, covmat = Harman74.cor,
++                         rotation = "promax")
+> print(Harman74.FA$loadings, sort = TRUE)
+
+Loadings:
+                       Factor1 Factor2 Factor3 Factor4 Factor5
+VisualPerception        0.831          -0.127           0.230 
+Cubes                   0.534                                 
+PaperFormBoard          0.736          -0.290           0.136 
+Flags                   0.647                  -0.104         
+SeriesCompletion        0.555   0.126   0.127                 
+GeneralInformation              0.764                         
+PargraphComprehension           0.845  -0.140   0.140         
+SentenceCompletion              0.872          -0.140         
+WordClassification      0.277   0.505   0.104                 
+WordMeaning                     0.846  -0.108                 
+Addition               -0.334           1.012                 
+CountingDots            0.206  -0.200   0.722           0.185 
+ArithmeticProblems              0.197   0.500   0.139         
+WordRecognition        -0.126   0.127  -0.103   0.657         
+NumberRecognition                               0.568         
+FigureRecognition       0.399  -0.142  -0.207   0.562         
+ObjectNumber           -0.108           0.107   0.613         
+StraightCurvedCapitals  0.542           0.247           0.618 
+Code                            0.112   0.288   0.486   0.424 
+NumberFigure            0.255  -0.230   0.211   0.413         
+FigureWord              0.187                   0.347         
+Deduction               0.404   0.169           0.117  -0.203 
+NumericalPuzzles        0.393           0.368                 
+ProblemReasoning        0.381   0.188           0.169         
+
+               Factor1 Factor2 Factor3 Factor4 Factor5
+SS loadings      3.529   3.311   2.367   2.109   0.762
+Proportion Var   0.147   0.138   0.099   0.088   0.032
+Cumulative Var   0.147   0.285   0.384   0.471   0.503
+> 
+> 
+> 
+> cleanEx()
+> nameEx("InsectSprays")
+> ### * InsectSprays
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: InsectSprays
+> ### Title: Effectiveness of Insect Sprays
+> ### Aliases: InsectSprays
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> require(stats); require(graphics)
+> boxplot(count ~ spray, data = InsectSprays,
++         xlab = "Type of spray", ylab = "Insect count",
++         main = "InsectSprays data", varwidth = TRUE, col = "lightgray")
+> fm1 <- aov(count ~ spray, data = InsectSprays)
+> summary(fm1)
+            Df Sum Sq Mean Sq F value Pr(>F)    
+spray        5   2669   533.8    34.7 <2e-16 ***
+Residuals   66   1015    15.4                   
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+> opar <- par(mfrow = c(2, 2), oma = c(0, 0, 1.1, 0))
+> plot(fm1)
+> fm2 <- aov(sqrt(count) ~ spray, data = InsectSprays)
+> summary(fm2)
+            Df Sum Sq Mean Sq F value Pr(>F)    
+spray        5  88.44  17.688    44.8 <2e-16 ***
+Residuals   66  26.06   0.395                   
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+> plot(fm2)
+> par(opar)
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("JohnsonJohnson")
+> ### * JohnsonJohnson
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: JohnsonJohnson
+> ### Title: Quarterly Earnings per Johnson & Johnson Share
+> ### Aliases: JohnsonJohnson
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> 
+> cleanEx()
+> nameEx("LifeCycleSavings")
+> ### * LifeCycleSavings
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: LifeCycleSavings
+> ### Title: Intercountry Life-Cycle Savings Data
+> ### Aliases: LifeCycleSavings
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> require(stats); require(graphics)
+> pairs(LifeCycleSavings, panel = panel.smooth,
++       main = "LifeCycleSavings data")
+> fm1 <- lm(sr ~ pop15 + pop75 + dpi + ddpi, data = LifeCycleSavings)
+> summary(fm1)
+
+Call:
+lm(formula = sr ~ pop15 + pop75 + dpi + ddpi, data = LifeCycleSavings)
+
+Residuals:
+    Min      1Q  Median      3Q     Max 
+-8.2422 -2.6857 -0.2488  2.4280  9.7509 
+
+Coefficients:
+              Estimate Std. Error t value Pr(>|t|)    
+(Intercept) 28.5660865  7.3545161   3.884 0.000334 ***
+pop15       -0.4611931  0.1446422  -3.189 0.002603 ** 
+pop75       -1.6914977  1.0835989  -1.561 0.125530    
+dpi         -0.0003369  0.0009311  -0.362 0.719173    
+ddpi         0.4096949  0.1961971   2.088 0.042471 *  
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+
+Residual standard error: 3.803 on 45 degrees of freedom
+Multiple R-squared:  0.3385,	Adjusted R-squared:  0.2797 
+F-statistic: 5.756 on 4 and 45 DF,  p-value: 0.0007904
+
+> 
+> 
+> 
+> cleanEx()
+> nameEx("Loblolly")
+> ### * Loblolly
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: Loblolly
+> ### Title: Growth of Loblolly pine trees
+> ### Aliases: Loblolly
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> require(stats); require(graphics)
+> plot(height ~ age, data = Loblolly, subset = Seed == 329,
++      xlab = "Tree age (yr)", las = 1,
++      ylab = "Tree height (ft)",
++      main = "Loblolly data and fitted curve (Seed 329 only)")
+> fm1 <- nls(height ~ SSasymp(age, Asym, R0, lrc),
++            data = Loblolly, subset = Seed == 329)
+> age <- seq(0, 30, length.out = 101)
+> lines(age, predict(fm1, list(age = age)))
+> 
+> 
+> 
+> cleanEx()
+> nameEx("Nile")
+> ### * Nile
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: Nile
+> ### Title: Flow of the River Nile
+> ### Aliases: Nile
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> require(stats); require(graphics)
+> par(mfrow = c(2, 2))
+> plot(Nile)
+> acf(Nile)
+> pacf(Nile)
+> ar(Nile) # selects order 2
+
+Call:
+ar(x = Nile)
+
+Coefficients:
+     1       2  
+0.4081  0.1812  
+
+Order selected 2  sigma^2 estimated as  21247
+> cpgram(ar(Nile)$resid)
+> par(mfrow = c(1, 1))
+> arima(Nile, c(2, 0, 0))
+
+Call:
+arima(x = Nile, order = c(2, 0, 0))
+
+Coefficients:
+         ar1     ar2  intercept
+      0.4096  0.1987   919.8397
+s.e.  0.0974  0.0990    35.6410
+
+sigma^2 estimated as 20291:  log likelihood = -637.98,  aic = 1283.96
+> 
+> ## Now consider missing values, following Durbin & Koopman
+> NileNA <- Nile
+> NileNA[c(21:40, 61:80)] <- NA
+> arima(NileNA, c(2, 0, 0))
+
+Call:
+arima(x = NileNA, order = c(2, 0, 0))
+
+Coefficients:
+         ar1     ar2  intercept
+      0.3622  0.1678   918.3103
+s.e.  0.1273  0.1323    39.5037
+
+sigma^2 estimated as 23676:  log likelihood = -387.7,  aic = 783.41
+> plot(NileNA)
+> pred <-
++    predict(arima(window(NileNA, 1871, 1890), c(2, 0, 0)), n.ahead = 20)
+> lines(pred$pred, lty = 3, col = "red")
+> lines(pred$pred + 2*pred$se, lty = 2, col = "blue")
+> lines(pred$pred - 2*pred$se, lty = 2, col = "blue")
+> pred <-
++    predict(arima(window(NileNA, 1871, 1930), c(2, 0, 0)), n.ahead = 20)
+> lines(pred$pred, lty = 3, col = "red")
+> lines(pred$pred + 2*pred$se, lty = 2, col = "blue")
+> lines(pred$pred - 2*pred$se, lty = 2, col = "blue")
+> 
+> ## Structural time series models
+> par(mfrow = c(3, 1))
+> plot(Nile)
+> ## local level model
+> (fit <- StructTS(Nile, type = "level"))
+
+Call:
+StructTS(x = Nile, type = "level")
+
+Variances:
+  level  epsilon  
+   1469    15099  
+> lines(fitted(fit), lty = 2)              # contemporaneous smoothing
+> lines(tsSmooth(fit), lty = 2, col = 4)   # fixed-interval smoothing
+> plot(residuals(fit)); abline(h = 0, lty = 3)
+> ## local trend model
+> (fit2 <- StructTS(Nile, type = "trend")) ## constant trend fitted
+
+Call:
+StructTS(x = Nile, type = "trend")
+
+Variances:
+  level    slope  epsilon  
+   1427        0    15047  
+> pred <- predict(fit, n.ahead = 30)
+> ## with 50% confidence interval
+> ts.plot(Nile, pred$pred,
++         pred$pred + 0.67*pred$se, pred$pred -0.67*pred$se)
+> 
+> ## Now consider missing values
+> plot(NileNA)
+> (fit3 <- StructTS(NileNA, type = "level"))
+
+Call:
+StructTS(x = NileNA, type = "level")
+
+Variances:
+  level  epsilon  
+  685.8  17899.8  
+> lines(fitted(fit3), lty = 2)
+> lines(tsSmooth(fit3), lty = 3)
+> plot(residuals(fit3)); abline(h = 0, lty = 3)
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("Orange")
+> ### * Orange
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: Orange
+> ### Title: Growth of Orange Trees
+> ### Aliases: Orange
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> require(stats); require(graphics)
+> coplot(circumference ~ age | Tree, data = Orange, show.given = FALSE)
+> fm1 <- nls(circumference ~ SSlogis(age, Asym, xmid, scal),
++            data = Orange, subset = Tree == 3)
+> plot(circumference ~ age, data = Orange, subset = Tree == 3,
++      xlab = "Tree age (days since 1968/12/31)",
++      ylab = "Tree circumference (mm)", las = 1,
++      main = "Orange tree data and fitted model (Tree 3 only)")
+> age <- seq(0, 1600, length.out = 101)
+> lines(age, predict(fm1, list(age = age)))
+> 
+> 
+> 
+> cleanEx()
+> nameEx("OrchardSprays")
+> ### * OrchardSprays
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: OrchardSprays
+> ### Title: Potency of Orchard Sprays
+> ### Aliases: OrchardSprays
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> pairs(OrchardSprays, main = "OrchardSprays data")
+> 
+> 
+> 
+> cleanEx()
+> nameEx("PlantGrowth")
+> ### * PlantGrowth
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: PlantGrowth
+> ### Title: Results from an Experiment on Plant Growth
+> ### Aliases: PlantGrowth
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> ## One factor ANOVA example from Dobson's book, cf. Table 7.4:
+> require(stats); require(graphics)
+> boxplot(weight ~ group, data = PlantGrowth, main = "PlantGrowth data",
++         ylab = "Dried weight of plants", col = "lightgray",
++         notch = TRUE, varwidth = TRUE)
+Warning in (function (z, notch = FALSE, width = NULL, varwidth = FALSE,  :
+  some notches went outside hinges ('box'): maybe set notch=FALSE
+> anova(lm(weight ~ group, data = PlantGrowth))
+Analysis of Variance Table
+
+Response: weight
+          Df  Sum Sq Mean Sq F value  Pr(>F)  
+group      2  3.7663  1.8832  4.8461 0.01591 *
+Residuals 27 10.4921  0.3886                  
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+> 
+> 
+> 
+> cleanEx()
+> nameEx("Puromycin")
+> ### * Puromycin
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: Puromycin
+> ### Title: Reaction Velocity of an Enzymatic Reaction
+> ### Aliases: Puromycin
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> require(stats); require(graphics)
+> ## Don't show: 
+> options(show.nls.convergence=FALSE)
+> ## End(Don't show)
+> plot(rate ~ conc, data = Puromycin, las = 1,
++      xlab = "Substrate concentration (ppm)",
++      ylab = "Reaction velocity (counts/min/min)",
++      pch = as.integer(Puromycin$state),
++      col = as.integer(Puromycin$state),
++      main = "Puromycin data and fitted Michaelis-Menten curves")
+> ## simplest form of fitting the Michaelis-Menten model to these data
+> fm1 <- nls(rate ~ Vm * conc/(K + conc), data = Puromycin,
++            subset = state == "treated",
++            start = c(Vm = 200, K = 0.05))
+> fm2 <- nls(rate ~ Vm * conc/(K + conc), data = Puromycin,
++            subset = state == "untreated",
++            start = c(Vm = 160, K = 0.05))
+> summary(fm1)
+
+Formula: rate ~ Vm * conc/(K + conc)
+
+Parameters:
+    Estimate Std. Error t value Pr(>|t|)    
+Vm 2.127e+02  6.947e+00  30.615 3.24e-11 ***
+K  6.412e-02  8.281e-03   7.743 1.57e-05 ***
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+
+Residual standard error: 10.93 on 10 degrees of freedom
+
+> summary(fm2)
+
+Formula: rate ~ Vm * conc/(K + conc)
+
+Parameters:
+    Estimate Std. Error t value Pr(>|t|)    
+Vm 1.603e+02  6.480e+00  24.734 1.38e-09 ***
+K  4.771e-02  7.782e-03   6.131 0.000173 ***
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+
+Residual standard error: 9.773 on 9 degrees of freedom
+
+> ## add fitted lines to the plot
+> conc <- seq(0, 1.2, length.out = 101)
+> lines(conc, predict(fm1, list(conc = conc)), lty = 1, col = 1)
+> lines(conc, predict(fm2, list(conc = conc)), lty = 2, col = 2)
+> legend(0.8, 120, levels(Puromycin$state),
++        col = 1:2, lty = 1:2, pch = 1:2)
+> 
+> ## using partial linearity
+> fm3 <- nls(rate ~ conc/(K + conc), data = Puromycin,
++            subset = state == "treated", start = c(K = 0.05),
++            algorithm = "plinear")
+> 
+> 
+> 
+> cleanEx()
+> nameEx("Theoph")
+> ### * Theoph
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: Theoph
+> ### Title: Pharmacokinetics of Theophylline
+> ### Aliases: Theoph
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> require(stats); require(graphics)
+> ## Don't show: 
+> options(show.nls.convergence=FALSE)
+> ## End(Don't show)
+> coplot(conc ~ Time | Subject, data = Theoph, show.given = FALSE)
+> Theoph.4 <- subset(Theoph, Subject == 4)
+> fm1 <- nls(conc ~ SSfol(Dose, Time, lKe, lKa, lCl),
++            data = Theoph.4)
+> summary(fm1)
+
+Formula: conc ~ SSfol(Dose, Time, lKe, lKa, lCl)
+
+Parameters:
+    Estimate Std. Error t value Pr(>|t|)    
+lKe  -2.4365     0.2257 -10.797 4.77e-06 ***
+lKa   0.1583     0.2297   0.689     0.51    
+lCl  -3.2861     0.1448 -22.695 1.51e-08 ***
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+
+Residual standard error: 0.8465 on 8 degrees of freedom
+
+> plot(conc ~ Time, data = Theoph.4,
++      xlab = "Time since drug administration (hr)",
++      ylab = "Theophylline concentration (mg/L)",
++      main = "Observed concentrations and fitted model",
++      sub  = "Theophylline data - Subject 4 only",
++      las = 1, col = 4)
+> xvals <- seq(0, par("usr")[2], length.out = 55)
+> lines(xvals, predict(fm1, newdata = list(Time = xvals)),
++       col = 4)
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("Titanic")
+> ### * Titanic
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: Titanic
+> ### Title: Survival of passengers on the Titanic
+> ### Aliases: Titanic
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> mosaicplot(Titanic, main = "Survival on the Titanic")
+> ## Higher survival rates in children?
+> apply(Titanic, c(3, 4), sum)
+       Survived
+Age       No Yes
+  Child   52  57
+  Adult 1438 654
+> ## Higher survival rates in females?
+> apply(Titanic, c(2, 4), sum)
+        Survived
+Sex        No Yes
+  Male   1364 367
+  Female  126 344
+> ## Use loglm() in package 'MASS' for further analysis ...
+> 
+> 
+> 
+> cleanEx()
+> nameEx("ToothGrowth")
+> ### * ToothGrowth
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: ToothGrowth
+> ### Title: The Effect of Vitamin C on Tooth Growth in Guinea Pigs
+> ### Aliases: ToothGrowth
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> coplot(len ~ dose | supp, data = ToothGrowth, panel = panel.smooth,
++        xlab = "ToothGrowth data: length vs dose, given type of supplement")
+> 
+> 
+> 
+> cleanEx()
+> nameEx("UCBAdmissions")
+> ### * UCBAdmissions
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: UCBAdmissions
+> ### Title: Student Admissions at UC Berkeley
+> ### Aliases: UCBAdmissions
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> ## Data aggregated over departments
+> apply(UCBAdmissions, c(1, 2), sum)
+          Gender
+Admit      Male Female
+  Admitted 1198    557
+  Rejected 1493   1278
+> mosaicplot(apply(UCBAdmissions, c(1, 2), sum),
++            main = "Student admissions at UC Berkeley")
+> ## Data for individual departments
+> opar <- par(mfrow = c(2, 3), oma = c(0, 0, 2, 0))
+> for(i in 1:6)
++   mosaicplot(UCBAdmissions[,,i],
++     xlab = "Admit", ylab = "Sex",
++     main = paste("Department", LETTERS[i]))
+> mtext(expression(bold("Student admissions at UC Berkeley")),
++       outer = TRUE, cex = 1.5)
+> par(opar)
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("UKDriverDeaths")
+> ### * UKDriverDeaths
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: UKDriverDeaths
+> ### Title: Road Casualties in Great Britain 1969-84
+> ### Aliases: UKDriverDeaths Seatbelts
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> require(stats); require(graphics)
+> ## work with pre-seatbelt period to identify a model, use logs
+> work <- window(log10(UKDriverDeaths), end = 1982+11/12)
+> par(mfrow = c(3, 1))
+> plot(work); acf(work); pacf(work)
+> par(mfrow = c(1, 1))
+> (fit <- arima(work, c(1, 0, 0), seasonal = list(order = c(1, 0, 0))))
+
+Call:
+arima(x = work, order = c(1, 0, 0), seasonal = list(order = c(1, 0, 0)))
+
+Coefficients:
+         ar1    sar1  intercept
+      0.4378  0.6281     3.2274
+s.e.  0.0764  0.0637     0.0131
+
+sigma^2 estimated as 0.00157:  log likelihood = 300.85,  aic = -593.7
+> z <- predict(fit, n.ahead = 24)
+> ts.plot(log10(UKDriverDeaths), z$pred, z$pred+2*z$se, z$pred-2*z$se,
++         lty = c(1, 3, 2, 2), col = c("black", "red", "blue", "blue"))
+> 
+> ## now see the effect of the explanatory variables
+> X <- Seatbelts[, c("kms", "PetrolPrice", "law")]
+> X[, 1] <- log10(X[, 1]) - 4
+> arima(log10(Seatbelts[, "drivers"]), c(1, 0, 0),
++       seasonal = list(order = c(1, 0, 0)), xreg = X)
+
+Call:
+arima(x = log10(Seatbelts[, "drivers"]), order = c(1, 0, 0), seasonal = list(order = c(1, 
+    0, 0)), xreg = X)
+
+Coefficients:
+         ar1    sar1  intercept     kms  PetrolPrice      law
+      0.3348  0.6672     3.3539  0.0082      -1.2224  -0.0963
+s.e.  0.0775  0.0612     0.0441  0.0902       0.3839   0.0166
+
+sigma^2 estimated as 0.001476:  log likelihood = 349.73,  aic = -685.46
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("UKLungDeaths")
+> ### * UKLungDeaths
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: UKLungDeaths
+> ### Title: Monthly Deaths from Lung Diseases in the UK
+> ### Aliases: UKLungDeaths ldeaths fdeaths mdeaths
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> require(stats); require(graphics) # for time
+> plot(ldeaths)
+> plot(mdeaths, fdeaths)
+> ## Better labels:
+> yr <- floor(tt <- time(mdeaths))
+> plot(mdeaths, fdeaths,
++      xy.labels = paste(month.abb[12*(tt - yr)], yr-1900, sep = "'"))
+> 
+> 
+> 
+> cleanEx()
+> nameEx("UKgas")
+> ### * UKgas
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: UKgas
+> ### Title: UK Quarterly Gas Consumption
+> ### Aliases: UKgas
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> ## maybe str(UKgas) ; plot(UKgas) ...
+> 
+> 
+> 
+> cleanEx()
+> nameEx("USArrests")
+> ### * USArrests
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: USArrests
+> ### Title: Violent Crime Rates by US State
+> ### Aliases: USArrests
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> summary(USArrests)
+     Murder          Assault         UrbanPop          Rape      
+ Min.   : 0.800   Min.   : 45.0   Min.   :32.00   Min.   : 7.30  
+ 1st Qu.: 4.075   1st Qu.:109.0   1st Qu.:54.50   1st Qu.:15.07  
+ Median : 7.250   Median :159.0   Median :66.00   Median :20.10  
+ Mean   : 7.788   Mean   :170.8   Mean   :65.54   Mean   :21.23  
+ 3rd Qu.:11.250   3rd Qu.:249.0   3rd Qu.:77.75   3rd Qu.:26.18  
+ Max.   :17.400   Max.   :337.0   Max.   :91.00   Max.   :46.00  
+> 
+> require(graphics)
+> pairs(USArrests, panel = panel.smooth, main = "USArrests data")
+> 
+> ## Difference between 'USArrests' and its correction
+> USArrests["Maryland", "UrbanPop"] # 67 -- the transcription error
+[1] 67
+> UA.C <- USArrests
+> UA.C["Maryland", "UrbanPop"] <- 76.6
+> 
+> ## also +/- 0.5 to restore the original  <n>.5  percentages
+> s5u <- c("Colorado", "Florida", "Mississippi", "Wyoming")
+> s5d <- c("Nebraska", "Pennsylvania")
+> UA.C[s5u, "UrbanPop"] <- UA.C[s5u, "UrbanPop"] + 0.5
+> UA.C[s5d, "UrbanPop"] <- UA.C[s5d, "UrbanPop"] - 0.5
+> 
+> ## ==> UA.C  is now a *C*orrected version of  USArrests
+> 
+> 
+> 
+> cleanEx()
+> nameEx("USJudgeRatings")
+> ### * USJudgeRatings
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: USJudgeRatings
+> ### Title: Lawyers' Ratings of State Judges in the US Superior Court
+> ### Aliases: USJudgeRatings
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> pairs(USJudgeRatings, main = "USJudgeRatings data")
+> 
+> 
+> 
+> cleanEx()
+> nameEx("USPersonalExpenditure")
+> ### * USPersonalExpenditure
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: USPersonalExpenditure
+> ### Title: Personal Expenditure Data
+> ### Aliases: USPersonalExpenditure
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> require(stats) # for medpolish
+> USPersonalExpenditure
+                      1940   1945  1950 1955  1960
+Food and Tobacco    22.200 44.500 59.60 73.2 86.80
+Household Operation 10.500 15.500 29.00 36.5 46.20
+Medical and Health   3.530  5.760  9.71 14.0 21.10
+Personal Care        1.040  1.980  2.45  3.4  5.40
+Private Education    0.341  0.974  1.80  2.6  3.64
+> medpolish(log10(USPersonalExpenditure))
+1: 1.126317
+2: 1.032421
+Final: 1.032421
+
+Median Polish Results (Dataset: "log10(USPersonalExpenditure)")
+
+Overall: 0.9872192
+
+Row Effects:
+   Food and Tobacco Household Operation  Medical and Health       Personal Care 
+          0.7880270           0.4327608           0.0000000          -0.5606543 
+  Private Education 
+         -0.7319467 
+
+Column Effects:
+      1940       1945       1950       1955       1960 
+-0.4288933 -0.2267967  0.0000000  0.1423128  0.3058289 
+
+Residuals:
+                         1940       1945      1950      1955      1960
+Food and Tobacco     0.000000  0.0999105  0.000000 -0.053048 -0.142555
+Household Operation  0.030103 -0.0028516  0.042418  0.000000 -0.061167
+Medical and Health  -0.010551  0.0000000  0.000000  0.016596  0.031234
+Personal Care        0.019362  0.0968971 -0.037399 -0.037399  0.000000
+Private Education   -0.293625 -0.0399168  0.000000  0.017388  0.000000
+
+> 
+> 
+> 
+> cleanEx()
+> nameEx("VADeaths")
+> ### * VADeaths
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: VADeaths
+> ### Title: Death Rates in Virginia (1940)
+> ### Aliases: VADeaths
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> require(stats); require(graphics)
+> n <- length(dr <- c(VADeaths))
+> nam <- names(VADeaths)
+> d.VAD <- data.frame(
++  Drate = dr,
++  age = rep(ordered(rownames(VADeaths)), length.out = n),
++  gender = gl(2, 5, n, labels = c("M", "F")),
++  site =  gl(2, 10, labels = c("rural", "urban")))
+> coplot(Drate ~ as.numeric(age) | gender * site, data = d.VAD,
++        panel = panel.smooth, xlab = "VADeaths data - Given: gender")
+> summary(aov.VAD <- aov(Drate ~ .^2, data = d.VAD))
+            Df Sum Sq Mean Sq F value   Pr(>F)    
+age          4   6288  1572.1 590.858 8.55e-06 ***
+gender       1    648   647.5 243.361 9.86e-05 ***
+site         1     77    76.8  28.876  0.00579 ** 
+age:gender   4     86    21.6   8.100  0.03358 *  
+age:site     4     43    10.6   3.996  0.10414    
+gender:site  1     73    73.0  27.422  0.00636 ** 
+Residuals    4     11     2.7                     
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+> opar <- par(mfrow = c(2, 2), oma = c(0, 0, 1.1, 0))
+> plot(aov.VAD)
+> par(opar)
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("WWWusage")
+> ### * WWWusage
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: WWWusage
+> ### Title: Internet Usage per Minute
+> ### Aliases: WWWusage
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> work <- diff(WWWusage)
+> par(mfrow = c(2, 1)); plot(WWWusage); plot(work)
+> ## Not run: 
+> ##D require(stats)
+> ##D aics <- matrix(, 6, 6, dimnames = list(p = 0:5, q = 0:5))
+> ##D for(q in 1:5) aics[1, 1+q] <- arima(WWWusage, c(0, 1, q),
+> ##D     optim.control = list(maxit = 500))$aic
+> ##D for(p in 1:5)
+> ##D    for(q in 0:5) aics[1+p, 1+q] <- arima(WWWusage, c(p, 1, q),
+> ##D        optim.control = list(maxit = 500))$aic
+> ##D round(aics - min(aics, na.rm = TRUE), 2)
+> ## End(Not run)
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("WorldPhones")
+> ### * WorldPhones
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: WorldPhones
+> ### Title: The World's Telephones
+> ### Aliases: WorldPhones
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> matplot(rownames(WorldPhones), WorldPhones, type = "b", log = "y",
++         xlab = "Year", ylab = "Number of telephones (1000's)")
+> legend(1951.5, 80000, colnames(WorldPhones), col = 1:6, lty = 1:5,
++        pch = rep(21, 7))
+> title(main = "World phones data: log scale for response")
+> 
+> 
+> 
+> cleanEx()
+> nameEx("ability.cov")
+> ### * ability.cov
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: ability.cov
+> ### Title: Ability and Intelligence Tests
+> ### Aliases: ability.cov
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> 
+> cleanEx()
+> nameEx("airmiles")
+> ### * airmiles
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: airmiles
+> ### Title: Passenger Miles on Commercial US Airlines, 1937-1960
+> ### Aliases: airmiles
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> plot(airmiles, main = "airmiles data",
++      xlab = "Passenger-miles flown by U.S. commercial airlines", col = 4)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("airquality")
+> ### * airquality
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: airquality
+> ### Title: New York Air Quality Measurements
+> ### Aliases: airquality
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> pairs(airquality, panel = panel.smooth, main = "airquality data")
+> 
+> 
+> 
+> cleanEx()
+> nameEx("anscombe")
+> ### * anscombe
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: anscombe
+> ### Title: Anscombe's Quartet of 'Identical' Simple Linear Regressions
+> ### Aliases: anscombe
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> require(stats); require(graphics)
+> summary(anscombe)
+       x1             x2             x3             x4           y1        
+ Min.   : 4.0   Min.   : 4.0   Min.   : 4.0   Min.   : 8   Min.   : 4.260  
+ 1st Qu.: 6.5   1st Qu.: 6.5   1st Qu.: 6.5   1st Qu.: 8   1st Qu.: 6.315  
+ Median : 9.0   Median : 9.0   Median : 9.0   Median : 8   Median : 7.580  
+ Mean   : 9.0   Mean   : 9.0   Mean   : 9.0   Mean   : 9   Mean   : 7.501  
+ 3rd Qu.:11.5   3rd Qu.:11.5   3rd Qu.:11.5   3rd Qu.: 8   3rd Qu.: 8.570  
+ Max.   :14.0   Max.   :14.0   Max.   :14.0   Max.   :19   Max.   :10.840  
+       y2              y3              y4        
+ Min.   :3.100   Min.   : 5.39   Min.   : 5.250  
+ 1st Qu.:6.695   1st Qu.: 6.25   1st Qu.: 6.170  
+ Median :8.140   Median : 7.11   Median : 7.040  
+ Mean   :7.501   Mean   : 7.50   Mean   : 7.501  
+ 3rd Qu.:8.950   3rd Qu.: 7.98   3rd Qu.: 8.190  
+ Max.   :9.260   Max.   :12.74   Max.   :12.500  
+> 
+> ##-- now some "magic" to do the 4 regressions in a loop:
+> ff <- y ~ x
+> mods <- setNames(as.list(1:4), paste0("lm", 1:4))
+> for(i in 1:4) {
++   ff[2:3] <- lapply(paste0(c("y","x"), i), as.name)
++   ## or   ff[[2]] <- as.name(paste0("y", i))
++   ##      ff[[3]] <- as.name(paste0("x", i))
++   mods[[i]] <- lmi <- lm(ff, data = anscombe)
++   print(anova(lmi))
++ }
+Analysis of Variance Table
+
+Response: y1
+          Df Sum Sq Mean Sq F value  Pr(>F)   
+x1         1 27.510 27.5100   17.99 0.00217 **
+Residuals  9 13.763  1.5292                   
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+Analysis of Variance Table
+
+Response: y2
+          Df Sum Sq Mean Sq F value   Pr(>F)   
+x2         1 27.500 27.5000  17.966 0.002179 **
+Residuals  9 13.776  1.5307                    
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+Analysis of Variance Table
+
+Response: y3
+          Df Sum Sq Mean Sq F value   Pr(>F)   
+x3         1 27.470 27.4700  17.972 0.002176 **
+Residuals  9 13.756  1.5285                    
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+Analysis of Variance Table
+
+Response: y4
+          Df Sum Sq Mean Sq F value   Pr(>F)   
+x4         1 27.490 27.4900  18.003 0.002165 **
+Residuals  9 13.742  1.5269                    
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+> 
+> ## See how close they are (numerically!)
+> sapply(mods, coef)
+                  lm1      lm2       lm3       lm4
+(Intercept) 3.0000909 3.000909 3.0024545 3.0017273
+x1          0.5000909 0.500000 0.4997273 0.4999091
+> lapply(mods, function(fm) coef(summary(fm)))
+$lm1
+             Estimate Std. Error  t value    Pr(>|t|)
+(Intercept) 3.0000909  1.1247468 2.667348 0.025734051
+x1          0.5000909  0.1179055 4.241455 0.002169629
+
+$lm2
+            Estimate Std. Error  t value    Pr(>|t|)
+(Intercept) 3.000909  1.1253024 2.666758 0.025758941
+x2          0.500000  0.1179637 4.238590 0.002178816
+
+$lm3
+             Estimate Std. Error  t value    Pr(>|t|)
+(Intercept) 3.0024545  1.1244812 2.670080 0.025619109
+x3          0.4997273  0.1178777 4.239372 0.002176305
+
+$lm4
+             Estimate Std. Error  t value    Pr(>|t|)
+(Intercept) 3.0017273  1.1239211 2.670763 0.025590425
+x4          0.4999091  0.1178189 4.243028 0.002164602
+
+> 
+> ## Now, do what you should have done in the first place: PLOTS
+> op <- par(mfrow = c(2, 2), mar = 0.1+c(4,4,1,1), oma =  c(0, 0, 2, 0))
+> for(i in 1:4) {
++   ff[2:3] <- lapply(paste0(c("y","x"), i), as.name)
++   plot(ff, data = anscombe, col = "red", pch = 21, bg = "orange", cex = 1.2,
++        xlim = c(3, 19), ylim = c(3, 13))
++   abline(mods[[i]], col = "blue")
++ }
+> mtext("Anscombe's 4 Regression data sets", outer = TRUE, cex = 1.5)
+> par(op)
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("attenu")
+> ### * attenu
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: attenu
+> ### Title: The Joyner-Boore Attenuation Data
+> ### Aliases: attenu
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> ## check the data class of the variables
+> sapply(attenu, data.class)
+    event       mag   station      dist     accel 
+"numeric" "numeric"  "factor" "numeric" "numeric" 
+> summary(attenu)
+     event            mag           station         dist       
+ Min.   : 1.00   Min.   :5.000   117    :  5   Min.   :  0.50  
+ 1st Qu.: 9.00   1st Qu.:5.300   1028   :  4   1st Qu.: 11.32  
+ Median :18.00   Median :6.100   113    :  4   Median : 23.40  
+ Mean   :14.74   Mean   :6.084   112    :  3   Mean   : 45.60  
+ 3rd Qu.:20.00   3rd Qu.:6.600   135    :  3   3rd Qu.: 47.55  
+ Max.   :23.00   Max.   :7.700   (Other):147   Max.   :370.00  
+                                 NA's   : 16                   
+     accel        
+ Min.   :0.00300  
+ 1st Qu.:0.04425  
+ Median :0.11300  
+ Mean   :0.15422  
+ 3rd Qu.:0.21925  
+ Max.   :0.81000  
+                  
+> pairs(attenu, main = "attenu data")
+> coplot(accel ~ dist | as.factor(event), data = attenu, show.given = FALSE)
+> coplot(log(accel) ~ log(dist) | as.factor(event),
++        data = attenu, panel = panel.smooth, show.given = FALSE)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("attitude")
+> ### * attitude
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: attitude
+> ### Title: The Chatterjee-Price Attitude Data
+> ### Aliases: attitude
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> require(stats); require(graphics)
+> pairs(attitude, main = "attitude data")
+> summary(attitude)
+     rating        complaints     privileges       learning         raises     
+ Min.   :40.00   Min.   :37.0   Min.   :30.00   Min.   :34.00   Min.   :43.00  
+ 1st Qu.:58.75   1st Qu.:58.5   1st Qu.:45.00   1st Qu.:47.00   1st Qu.:58.25  
+ Median :65.50   Median :65.0   Median :51.50   Median :56.50   Median :63.50  
+ Mean   :64.63   Mean   :66.6   Mean   :53.13   Mean   :56.37   Mean   :64.63  
+ 3rd Qu.:71.75   3rd Qu.:77.0   3rd Qu.:62.50   3rd Qu.:66.75   3rd Qu.:71.00  
+ Max.   :85.00   Max.   :90.0   Max.   :83.00   Max.   :75.00   Max.   :88.00  
+    critical        advance     
+ Min.   :49.00   Min.   :25.00  
+ 1st Qu.:69.25   1st Qu.:35.00  
+ Median :77.50   Median :41.00  
+ Mean   :74.77   Mean   :42.93  
+ 3rd Qu.:80.00   3rd Qu.:47.75  
+ Max.   :92.00   Max.   :72.00  
+> summary(fm1 <- lm(rating ~ ., data = attitude))
+
+Call:
+lm(formula = rating ~ ., data = attitude)
+
+Residuals:
+     Min       1Q   Median       3Q      Max 
+-10.9418  -4.3555   0.3158   5.5425  11.5990 
+
+Coefficients:
+            Estimate Std. Error t value Pr(>|t|)    
+(Intercept) 10.78708   11.58926   0.931 0.361634    
+complaints   0.61319    0.16098   3.809 0.000903 ***
+privileges  -0.07305    0.13572  -0.538 0.595594    
+learning     0.32033    0.16852   1.901 0.069925 .  
+raises       0.08173    0.22148   0.369 0.715480    
+critical     0.03838    0.14700   0.261 0.796334    
+advance     -0.21706    0.17821  -1.218 0.235577    
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+
+Residual standard error: 7.068 on 23 degrees of freedom
+Multiple R-squared:  0.7326,	Adjusted R-squared:  0.6628 
+F-statistic:  10.5 on 6 and 23 DF,  p-value: 1.24e-05
+
+> opar <- par(mfrow = c(2, 2), oma = c(0, 0, 1.1, 0),
++             mar = c(4.1, 4.1, 2.1, 1.1))
+> plot(fm1)
+> summary(fm2 <- lm(rating ~ complaints, data = attitude))
+
+Call:
+lm(formula = rating ~ complaints, data = attitude)
+
+Residuals:
+     Min       1Q   Median       3Q      Max 
+-12.8799  -5.9905   0.1783   6.2978   9.6294 
+
+Coefficients:
+            Estimate Std. Error t value Pr(>|t|)    
+(Intercept) 14.37632    6.61999   2.172   0.0385 *  
+complaints   0.75461    0.09753   7.737 1.99e-08 ***
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+
+Residual standard error: 6.993 on 28 degrees of freedom
+Multiple R-squared:  0.6813,	Adjusted R-squared:  0.6699 
+F-statistic: 59.86 on 1 and 28 DF,  p-value: 1.988e-08
+
+> plot(fm2)
+> par(opar)
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("beavers")
+> ### * beavers
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: beavers
+> ### Title: Body Temperature Series of Two Beavers
+> ### Aliases: beavers beaver1 beaver2
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> (yl <- range(beaver1$temp, beaver2$temp))
+[1] 36.33 38.35
+> 
+> beaver.plot <- function(bdat, ...) {
++   nam <- deparse(substitute(bdat))
++   with(bdat, {
++     # Hours since start of day:
++     hours <- time %/% 100 + 24*(day - day[1]) + (time %% 100)/60
++     plot (hours, temp, type = "l", ...,
++           main = paste(nam, "body temperature"))
++     abline(h = 37.5, col = "gray", lty = 2)
++     is.act <- activ == 1
++     points(hours[is.act], temp[is.act], col = 2, cex = .8)
++   })
++ }
+> op <- par(mfrow = c(2, 1), mar = c(3, 3, 4, 2), mgp = 0.9 * 2:0)
+>  beaver.plot(beaver1, ylim = yl)
+>  beaver.plot(beaver2, ylim = yl)
+> par(op)
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("cars")
+> ### * cars
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: cars
+> ### Title: Speed and Stopping Distances of Cars
+> ### Aliases: cars
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> require(stats); require(graphics)
+> plot(cars, xlab = "Speed (mph)", ylab = "Stopping distance (ft)",
++      las = 1)
+> lines(lowess(cars$speed, cars$dist, f = 2/3, iter = 3), col = "red")
+> title(main = "cars data")
+> plot(cars, xlab = "Speed (mph)", ylab = "Stopping distance (ft)",
++      las = 1, log = "xy")
+> title(main = "cars data (logarithmic scales)")
+> lines(lowess(cars$speed, cars$dist, f = 2/3, iter = 3), col = "red")
+> summary(fm1 <- lm(log(dist) ~ log(speed), data = cars))
+
+Call:
+lm(formula = log(dist) ~ log(speed), data = cars)
+
+Residuals:
+     Min       1Q   Median       3Q      Max 
+-1.00215 -0.24578 -0.02898  0.20717  0.88289 
+
+Coefficients:
+            Estimate Std. Error t value Pr(>|t|)    
+(Intercept)  -0.7297     0.3758  -1.941   0.0581 .  
+log(speed)    1.6024     0.1395  11.484 2.26e-15 ***
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+
+Residual standard error: 0.4053 on 48 degrees of freedom
+Multiple R-squared:  0.7331,	Adjusted R-squared:  0.7276 
+F-statistic: 131.9 on 1 and 48 DF,  p-value: 2.259e-15
+
+> opar <- par(mfrow = c(2, 2), oma = c(0, 0, 1.1, 0),
++             mar = c(4.1, 4.1, 2.1, 1.1))
+> plot(fm1)
+> par(opar)
+> 
+> ## An example of polynomial regression
+> plot(cars, xlab = "Speed (mph)", ylab = "Stopping distance (ft)",
++     las = 1, xlim = c(0, 25))
+> d <- seq(0, 25, length.out = 200)
+> for(degree in 1:4) {
++   fm <- lm(dist ~ poly(speed, degree), data = cars)
++   assign(paste("cars", degree, sep = "."), fm)
++   lines(d, predict(fm, data.frame(speed = d)), col = degree)
++ }
+> anova(cars.1, cars.2, cars.3, cars.4)
+Analysis of Variance Table
+
+Model 1: dist ~ poly(speed, degree)
+Model 2: dist ~ poly(speed, degree)
+Model 3: dist ~ poly(speed, degree)
+Model 4: dist ~ poly(speed, degree)
+  Res.Df   RSS Df Sum of Sq      F Pr(>F)
+1     48 11354                           
+2     47 10825  1    528.81 2.3108 0.1355
+3     46 10634  1    190.35 0.8318 0.3666
+4     45 10298  1    336.55 1.4707 0.2316
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("chickwts")
+> ### * chickwts
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: chickwts
+> ### Title: Chicken Weights by Feed Type
+> ### Aliases: chickwts
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> require(stats); require(graphics)
+> boxplot(weight ~ feed, data = chickwts, col = "lightgray",
++     varwidth = TRUE, notch = TRUE, main = "chickwt data",
++     ylab = "Weight at six weeks (gm)")
+Warning in (function (z, notch = FALSE, width = NULL, varwidth = FALSE,  :
+  some notches went outside hinges ('box'): maybe set notch=FALSE
+> anova(fm1 <- lm(weight ~ feed, data = chickwts))
+Analysis of Variance Table
+
+Response: weight
+          Df Sum Sq Mean Sq F value    Pr(>F)    
+feed       5 231129   46226  15.365 5.936e-10 ***
+Residuals 65 195556    3009                      
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+> opar <- par(mfrow = c(2, 2), oma = c(0, 0, 1.1, 0),
++             mar = c(4.1, 4.1, 2.1, 1.1))
+> plot(fm1)
+> par(opar)
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("co2")
+> ### * co2
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: co2
+> ### Title: Mauna Loa Atmospheric CO2 Concentration
+> ### Aliases: co2
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> plot(co2, ylab = expression("Atmospheric concentration of CO"[2]),
++      las = 1)
+> title(main = "co2 data set")
+> 
+> 
+> 
+> cleanEx()
+> nameEx("crimtab")
+> ### * crimtab
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: crimtab
+> ### Title: Student's 3000 Criminals Data
+> ### Aliases: crimtab
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> require(stats)
+> dim(crimtab)
+[1] 42 22
+> utils::str(crimtab)
+ 'table' int [1:42, 1:22] 0 0 0 0 0 0 1 0 0 0 ...
+ - attr(*, "dimnames")=List of 2
+  ..$ : chr [1:42] "9.4" "9.5" "9.6" "9.7" ...
+  ..$ : chr [1:22] "142.24" "144.78" "147.32" "149.86" ...
+> ## for nicer printing:
+> local({cT <- crimtab
++        colnames(cT) <- substring(colnames(cT), 2, 3)
++        print(cT, zero.print = " ")
++ })
+     42 44 47 49 52 54 57 60 62 65 67 70 72 75 77 80 82 85 87 90 93 95
+9.4                                                                   
+9.5                  1                                                
+9.6                                                                   
+9.7                                                                   
+9.8                     1                                             
+9.9         1     1     1                                             
+10    1        1  2     2        1                                    
+10.1           1  3  1     1  1                                       
+10.2        2  2  2  1     2     1                                    
+10.3     1  1  3  2  2  3  5                                          
+10.4        1  1  2  3  3  4  3  3                                    
+10.5           1  3  7  6  4  3  1  3  1     1                        
+10.6           1  4  5  9 14  6  3  1        1                        
+10.7        1  2  4  9 14 16 15  7  3  1  2                           
+10.8           2  5  6 14 27 10  7  1  2  1                           
+10.9              2  6 14 24 27 14 10  4  1                           
+11             2  6 12 15 31 37 27 17 10  6                           
+11.1           3  3 12 22 26 24 26 24  7  4  1                        
+11.2           3  2  7 21 30 38 29 27 20  4  1                       1
+11.3           1     5 10 24 26 39 26 24  7  2                        
+11.4              3  4  9 29 56 58 26 22 10 11                        
+11.5                 5 11 17 33 57 38 34 25 11  2                     
+11.6              2  1  4 13 37 39 48 38 27 12  2  2     1            
+11.7                 2  9 17 30 37 48 45 24  9  9  2                  
+11.8              1     2 11 15 35 41 34 29 10  5  1                  
+11.9              1  1  2 12 10 27 32 35 19 10  9  3  1               
+12                      1  4  8 19 42 39 22 16  8  2  2               
+12.1                       2  4 13 22 28 15 27 10  4  1               
+12.2                    1  2  5  6 23 17 16 11  8  1  1               
+12.3                          4  8 10 13 20 23  6  5                  
+12.4                    1  1  1  2  7 12  4  7  7  1        1         
+12.5                       1     1  3 12 11  8  6  8     2            
+12.6                             1     3  5  7  8  6  3  1  1         
+12.7                             1  1  7  5  5  8  2  2               
+12.8                                1  2  3  1  8  5  3  1  1         
+12.9                                   1  2  2     1  1               
+13                                  3     1     1     2  1            
+13.1                                   1  1                           
+13.2                                1  1     1     3                  
+13.3                                                  1     1         
+13.4                                                                  
+13.5                                                     1            
+> 
+> ## Repeat Student's experiment:
+> 
+> # 1) Reconstitute 3000 raw data for heights in inches and rounded to
+> #    nearest integer as in Student's paper:
+> 
+> (heIn <- round(as.numeric(colnames(crimtab)) / 2.54))
+ [1] 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
+> d.hei <- data.frame(height = rep(heIn, colSums(crimtab)))
+> 
+> # 2) shuffle the data:
+> 
+> set.seed(1)
+> d.hei <- d.hei[sample(1:3000), , drop = FALSE]
+> 
+> # 3) Make 750 samples each of size 4:
+> 
+> d.hei$sample <- as.factor(rep(1:750, each = 4))
+> 
+> # 4) Compute the means and standard deviations (n) for the 750 samples:
+> 
+> h.mean <- with(d.hei, tapply(height, sample, FUN = mean))
+> h.sd   <- with(d.hei, tapply(height, sample, FUN = sd)) * sqrt(3/4)
+> 
+> # 5) Compute the difference between the mean of each sample and
+> #    the mean of the population and then divide by the
+> #    standard deviation of the sample:
+> 
+> zobs <- (h.mean - mean(d.hei[,"height"]))/h.sd
+> 
+> # 6) Replace infinite values by +/- 6 as in Student's paper:
+> 
+> zobs[infZ <- is.infinite(zobs)] # none of them 
+named numeric(0)
+> zobs[infZ] <- 6 * sign(zobs[infZ])
+> 
+> # 7) Plot the distribution:
+> 
+> require(grDevices); require(graphics)
+> hist(x = zobs, probability = TRUE, xlab = "Student's z",
++      col = grey(0.8), border = grey(0.5),
++      main = "Distribution of Student's z score  for 'crimtab' data")
+> 
+> 
+> 
+> cleanEx()
+> nameEx("discoveries")
+> ### * discoveries
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: discoveries
+> ### Title: Yearly Numbers of Important Discoveries
+> ### Aliases: discoveries
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> plot(discoveries, ylab = "Number of important discoveries",
++      las = 1)
+> title(main = "discoveries data set")
+> 
+> 
+> 
+> cleanEx()
+> nameEx("esoph")
+> ### * esoph
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: esoph
+> ### Title: Smoking, Alcohol and (O)esophageal Cancer
+> ### Aliases: esoph
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> require(stats)
+> require(graphics) # for mosaicplot
+> summary(esoph)
+   agegp          alcgp         tobgp        ncases         ncontrols     
+ 25-34:15   0-39g/day:23   0-9g/day:24   Min.   : 0.000   Min.   : 0.000  
+ 35-44:15   40-79    :23   10-19   :24   1st Qu.: 0.000   1st Qu.: 1.000  
+ 45-54:16   80-119   :21   20-29   :20   Median : 1.000   Median : 4.000  
+ 55-64:16   120+     :21   30+     :20   Mean   : 2.273   Mean   : 8.807  
+ 65-74:15                                3rd Qu.: 4.000   3rd Qu.:10.000  
+ 75+  :11                                Max.   :17.000   Max.   :60.000  
+> ## effects of alcohol, tobacco and interaction, age-adjusted
+> model1 <- glm(cbind(ncases, ncontrols) ~ agegp + tobgp * alcgp,
++               data = esoph, family = binomial())
+> anova(model1)
+Analysis of Deviance Table
+
+Model: binomial, link: logit
+
+Response: cbind(ncases, ncontrols)
+
+Terms added sequentially (first to last)
+
+
+            Df Deviance Resid. Df Resid. Dev
+NULL                           87     367.95
+agegp        5  121.045        82     246.91
+tobgp        3   36.639        79     210.27
+alcgp        3  127.933        76      82.34
+tobgp:alcgp  9    5.451        67      76.89
+> ## Try a linear effect of alcohol and tobacco
+> model2 <- glm(cbind(ncases, ncontrols) ~ agegp + unclass(tobgp)
++                                          + unclass(alcgp),
++               data = esoph, family = binomial())
+> summary(model2)
+
+Call:
+glm(formula = cbind(ncases, ncontrols) ~ agegp + unclass(tobgp) + 
+    unclass(alcgp), family = binomial(), data = esoph)
+
+Deviance Residuals: 
+    Min       1Q   Median       3Q      Max  
+-2.3018  -0.7234  -0.2306   0.5737   2.4290  
+
+Coefficients:
+               Estimate Std. Error z value Pr(>|z|)    
+(Intercept)    -4.92067    0.37344 -13.177  < 2e-16 ***
+agegp.L         3.81892    0.67862   5.627 1.83e-08 ***
+agegp.Q        -1.49473    0.60671  -2.464   0.0138 *  
+agegp.C         0.07923    0.46318   0.171   0.8642    
+agegp^4         0.12136    0.32203   0.377   0.7063    
+agegp^5        -0.24856    0.21153  -1.175   0.2400    
+unclass(tobgp)  0.43955    0.09623   4.568 4.93e-06 ***
+unclass(alcgp)  1.06766    0.10493  10.175  < 2e-16 ***
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+
+(Dispersion parameter for binomial family taken to be 1)
+
+    Null deviance: 367.953  on 87  degrees of freedom
+Residual deviance:  91.121  on 80  degrees of freedom
+AIC: 222.18
+
+Number of Fisher Scoring iterations: 6
+
+> ## Re-arrange data for a mosaic plot
+> ttt <- table(esoph$agegp, esoph$alcgp, esoph$tobgp)
+> o <- with(esoph, order(tobgp, alcgp, agegp))
+> ttt[ttt == 1] <- esoph$ncases[o]
+> tt1 <- table(esoph$agegp, esoph$alcgp, esoph$tobgp)
+> tt1[tt1 == 1] <- esoph$ncontrols[o]
+> tt <- array(c(ttt, tt1), c(dim(ttt),2),
++             c(dimnames(ttt), list(c("Cancer", "control"))))
+> mosaicplot(tt, main = "esoph data set", color = TRUE)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("euro")
+> ### * euro
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: euro
+> ### Title: Conversion Rates of Euro Currencies
+> ### Aliases: euro euro.cross
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> cbind(euro)
+           euro
+ATS   13.760300
+BEF   40.339900
+DEM    1.955830
+ESP  166.386000
+FIM    5.945730
+FRF    6.559570
+IEP    0.787564
+ITL 1936.270000
+LUF   40.339900
+NLG    2.203710
+PTE  200.482000
+> 
+> ## These relations hold:
+> euro == signif(euro, 6) # [6 digit precision in Euro's definition]
+ ATS  BEF  DEM  ESP  FIM  FRF  IEP  ITL  LUF  NLG  PTE 
+TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE 
+> all(euro.cross == outer(1/euro, euro))
+[1] TRUE
+> 
+> ## Convert 20 Euro to Belgian Franc
+> 20 * euro["BEF"]
+    BEF 
+806.798 
+> ## Convert 20 Austrian Schilling to Euro
+> 20 / euro["ATS"]
+     ATS 
+1.453457 
+> ## Convert 20 Spanish Pesetas to Italian Lira
+> 20 * euro.cross["ESP", "ITL"]
+[1] 232.7443
+> 
+> require(graphics)
+> dotchart(euro,
++          main = "euro data: 1 Euro in currency unit")
+> dotchart(1/euro,
++          main = "euro data: 1 currency unit in Euros")
+> dotchart(log(euro, 10),
++          main = "euro data: log10(1 Euro in currency unit)")
+> 
+> 
+> 
+> cleanEx()
+> nameEx("faithful")
+> ### * faithful
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: faithful
+> ### Title: Old Faithful Geyser Data
+> ### Aliases: faithful
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> require(stats); require(graphics)
+> f.tit <-  "faithful data: Eruptions of Old Faithful"
+> 
+> ne60 <- round(e60 <- 60 * faithful$eruptions)
+> all.equal(e60, ne60)             # relative diff. ~ 1/10000
+[1] "Mean relative difference: 9.515332e-05"
+> table(zapsmall(abs(e60 - ne60))) # 0, 0.02 or 0.04
+
+   0 0.02 0.04 
+ 106  163    3 
+> faithful$better.eruptions <- ne60 / 60
+> te <- table(ne60)
+> te[te >= 4]                      # (too) many multiples of 5 !
+ne60
+105 108 110 112 113 120 216 230 240 245 249 250 255 260 261 262 265 270 272 275 
+  6   4   7   8   4   4   4   5   6   5   4   4   4   5   4   4   4   8   5   4 
+276 282 288 
+  4   6   6 
+> plot(names(te), te, type = "h", main = f.tit, xlab = "Eruption time (sec)")
+> 
+> plot(faithful[, -3], main = f.tit,
++      xlab = "Eruption time (min)",
++      ylab = "Waiting time to next eruption (min)")
+> lines(lowess(faithful$eruptions, faithful$waiting, f = 2/3, iter = 3),
++       col = "red")
+> 
+> 
+> 
+> cleanEx()
+> nameEx("freeny")
+> ### * freeny
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: freeny
+> ### Title: Freeny's Revenue Data
+> ### Aliases: freeny freeny.x freeny.y
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> require(stats); require(graphics)
+> summary(freeny)
+       y         lag.quarterly.revenue  price.index     income.level  
+ Min.   :8.791   Min.   :8.791         Min.   :4.278   Min.   :5.821  
+ 1st Qu.:9.045   1st Qu.:9.020         1st Qu.:4.392   1st Qu.:5.948  
+ Median :9.314   Median :9.284         Median :4.510   Median :6.061  
+ Mean   :9.306   Mean   :9.281         Mean   :4.496   Mean   :6.039  
+ 3rd Qu.:9.591   3rd Qu.:9.561         3rd Qu.:4.605   3rd Qu.:6.139  
+ Max.   :9.794   Max.   :9.775         Max.   :4.710   Max.   :6.200  
+ market.potential
+ Min.   :12.97   
+ 1st Qu.:13.01   
+ Median :13.07   
+ Mean   :13.07   
+ 3rd Qu.:13.12   
+ Max.   :13.17   
+> pairs(freeny, main = "freeny data")
+> # gives warning: freeny$y has class "ts"
+> 
+> summary(fm1 <- lm(y ~ ., data = freeny))
+
+Call:
+lm(formula = y ~ ., data = freeny)
+
+Residuals:
+       Min         1Q     Median         3Q        Max 
+-0.0259426 -0.0101033  0.0003824  0.0103236  0.0267124 
+
+Coefficients:
+                      Estimate Std. Error t value Pr(>|t|)    
+(Intercept)           -10.4726     6.0217  -1.739   0.0911 .  
+lag.quarterly.revenue   0.1239     0.1424   0.870   0.3904    
+price.index            -0.7542     0.1607  -4.693 4.28e-05 ***
+income.level            0.7675     0.1339   5.730 1.93e-06 ***
+market.potential        1.3306     0.5093   2.613   0.0133 *  
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+
+Residual standard error: 0.01473 on 34 degrees of freedom
+Multiple R-squared:  0.9981,	Adjusted R-squared:  0.9978 
+F-statistic:  4354 on 4 and 34 DF,  p-value: < 2.2e-16
+
+> opar <- par(mfrow = c(2, 2), oma = c(0, 0, 1.1, 0),
++             mar = c(4.1, 4.1, 2.1, 1.1))
+> plot(fm1)
+> par(opar)
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("infert")
+> ### * infert
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: infert
+> ### Title: Infertility after Spontaneous and Induced Abortion
+> ### Aliases: infert
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> require(stats)
+> model1 <- glm(case ~ spontaneous+induced, data = infert, family = binomial())
+> summary(model1)
+
+Call:
+glm(formula = case ~ spontaneous + induced, family = binomial(), 
+    data = infert)
+
+Deviance Residuals: 
+    Min       1Q   Median       3Q      Max  
+-1.6678  -0.8360  -0.5772   0.9030   1.9362  
+
+Coefficients:
+            Estimate Std. Error z value Pr(>|z|)    
+(Intercept)  -1.7079     0.2677  -6.380 1.78e-10 ***
+spontaneous   1.1972     0.2116   5.657 1.54e-08 ***
+induced       0.4181     0.2056   2.033    0.042 *  
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+
+(Dispersion parameter for binomial family taken to be 1)
+
+    Null deviance: 316.17  on 247  degrees of freedom
+Residual deviance: 279.61  on 245  degrees of freedom
+AIC: 285.61
+
+Number of Fisher Scoring iterations: 4
+
+> ## adjusted for other potential confounders:
+> summary(model2 <- glm(case ~ age+parity+education+spontaneous+induced,
++                      data = infert, family = binomial()))
+
+Call:
+glm(formula = case ~ age + parity + education + spontaneous + 
+    induced, family = binomial(), data = infert)
+
+Deviance Residuals: 
+    Min       1Q   Median       3Q      Max  
+-1.7603  -0.8162  -0.4956   0.8349   2.6536  
+
+Coefficients:
+                 Estimate Std. Error z value Pr(>|z|)    
+(Intercept)      -1.14924    1.41220  -0.814   0.4158    
+age               0.03958    0.03120   1.269   0.2046    
+parity           -0.82828    0.19649  -4.215 2.49e-05 ***
+education6-11yrs -1.04424    0.79255  -1.318   0.1876    
+education12+ yrs -1.40321    0.83416  -1.682   0.0925 .  
+spontaneous       2.04591    0.31016   6.596 4.21e-11 ***
+induced           1.28876    0.30146   4.275 1.91e-05 ***
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+
+(Dispersion parameter for binomial family taken to be 1)
+
+    Null deviance: 316.17  on 247  degrees of freedom
+Residual deviance: 257.80  on 241  degrees of freedom
+AIC: 271.8
+
+Number of Fisher Scoring iterations: 4
+
+> ## Really should be analysed by conditional logistic regression
+> ## which is in the survival package
+> 
+> 
+> 
+> cleanEx()
+> nameEx("iris")
+> ### * iris
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: iris
+> ### Title: Edgar Anderson's Iris Data
+> ### Aliases: iris iris3
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> dni3 <- dimnames(iris3)
+> ii <- data.frame(matrix(aperm(iris3, c(1,3,2)), ncol = 4,
++                         dimnames = list(NULL, sub(" L.",".Length",
++                                         sub(" W.",".Width", dni3[[2]])))),
++     Species = gl(3, 50, labels = sub("S", "s", sub("V", "v", dni3[[3]]))))
+> all.equal(ii, iris) # TRUE
+[1] TRUE
+> 
+> 
+> 
+> cleanEx()
+> nameEx("islands")
+> ### * islands
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: islands
+> ### Title: Areas of the World's Major Landmasses
+> ### Aliases: islands
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> dotchart(log(islands, 10),
++    main = "islands data: log10(area) (log10(sq. miles))")
+> dotchart(log(islands[order(islands)], 10),
++    main = "islands data: log10(area) (log10(sq. miles))")
+> 
+> 
+> 
+> cleanEx()
+> nameEx("longley")
+> ### * longley
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: longley
+> ### Title: Longley's Economic Regression Data
+> ### Aliases: longley
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> require(stats); require(graphics)
+> ## give the data set in the form it is used in S-PLUS:
+> longley.x <- data.matrix(longley[, 1:6])
+> longley.y <- longley[, "Employed"]
+> pairs(longley, main = "longley data")
+> summary(fm1 <- lm(Employed ~ ., data = longley))
+
+Call:
+lm(formula = Employed ~ ., data = longley)
+
+Residuals:
+     Min       1Q   Median       3Q      Max 
+-0.41011 -0.15767 -0.02816  0.10155  0.45539 
+
+Coefficients:
+               Estimate Std. Error t value Pr(>|t|)    
+(Intercept)  -3.482e+03  8.904e+02  -3.911 0.003560 ** 
+GNP.deflator  1.506e-02  8.492e-02   0.177 0.863141    
+GNP          -3.582e-02  3.349e-02  -1.070 0.312681    
+Unemployed   -2.020e-02  4.884e-03  -4.136 0.002535 ** 
+Armed.Forces -1.033e-02  2.143e-03  -4.822 0.000944 ***
+Population   -5.110e-02  2.261e-01  -0.226 0.826212    
+Year          1.829e+00  4.555e-01   4.016 0.003037 ** 
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+
+Residual standard error: 0.3049 on 9 degrees of freedom
+Multiple R-squared:  0.9955,	Adjusted R-squared:  0.9925 
+F-statistic: 330.3 on 6 and 9 DF,  p-value: 4.984e-10
+
+> opar <- par(mfrow = c(2, 2), oma = c(0, 0, 1.1, 0),
++             mar = c(4.1, 4.1, 2.1, 1.1))
+> plot(fm1)
+> par(opar)
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("morley")
+> ### * morley
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: morley
+> ### Title: Michelson Speed of Light Data
+> ### Aliases: morley
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> require(stats); require(graphics)
+> michelson <- transform(morley,
++                        Expt = factor(Expt), Run = factor(Run))
+> xtabs(~ Expt + Run, data = michelson)  # 5 x 20 balanced (two-way)
+    Run
+Expt 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
+   1 1 1 1 1 1 1 1 1 1  1  1  1  1  1  1  1  1  1  1  1
+   2 1 1 1 1 1 1 1 1 1  1  1  1  1  1  1  1  1  1  1  1
+   3 1 1 1 1 1 1 1 1 1  1  1  1  1  1  1  1  1  1  1  1
+   4 1 1 1 1 1 1 1 1 1  1  1  1  1  1  1  1  1  1  1  1
+   5 1 1 1 1 1 1 1 1 1  1  1  1  1  1  1  1  1  1  1  1
+> plot(Speed ~ Expt, data = michelson,
++      main = "Speed of Light Data", xlab = "Experiment No.")
+> fm <- aov(Speed ~ Run + Expt, data = michelson)
+> summary(fm)
+            Df Sum Sq Mean Sq F value  Pr(>F)   
+Run         19 113344    5965   1.105 0.36321   
+Expt         4  94514   23629   4.378 0.00307 **
+Residuals   76 410166    5397                   
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+> fm0 <- update(fm, . ~ . - Run)
+> anova(fm0, fm)
+Analysis of Variance Table
+
+Model 1: Speed ~ Expt
+Model 2: Speed ~ Run + Expt
+  Res.Df    RSS Df Sum of Sq      F Pr(>F)
+1     95 523510                           
+2     76 410166 19    113344 1.1053 0.3632
+> 
+> 
+> 
+> cleanEx()
+> nameEx("mtcars")
+> ### * mtcars
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: mtcars
+> ### Title: Motor Trend Car Road Tests
+> ### Aliases: mtcars
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> pairs(mtcars, main = "mtcars data", gap = 1/4)
+> coplot(mpg ~ disp | as.factor(cyl), data = mtcars,
++        panel = panel.smooth, rows = 1)
+> ## possibly more meaningful, e.g., for summary() or bivariate plots:
+> mtcars2 <- within(mtcars, {
++    vs <- factor(vs, labels = c("V", "S"))
++    am <- factor(am, labels = c("automatic", "manual"))
++    cyl  <- ordered(cyl)
++    gear <- ordered(gear)
++    carb <- ordered(carb)
++ })
+> summary(mtcars2)
+      mpg        cyl         disp             hp             drat      
+ Min.   :10.40   4:11   Min.   : 71.1   Min.   : 52.0   Min.   :2.760  
+ 1st Qu.:15.43   6: 7   1st Qu.:120.8   1st Qu.: 96.5   1st Qu.:3.080  
+ Median :19.20   8:14   Median :196.3   Median :123.0   Median :3.695  
+ Mean   :20.09          Mean   :230.7   Mean   :146.7   Mean   :3.597  
+ 3rd Qu.:22.80          3rd Qu.:326.0   3rd Qu.:180.0   3rd Qu.:3.920  
+ Max.   :33.90          Max.   :472.0   Max.   :335.0   Max.   :4.930  
+       wt             qsec       vs             am     gear   carb  
+ Min.   :1.513   Min.   :14.50   V:18   automatic:19   3:15   1: 7  
+ 1st Qu.:2.581   1st Qu.:16.89   S:14   manual   :13   4:12   2:10  
+ Median :3.325   Median :17.71                         5: 5   3: 3  
+ Mean   :3.217   Mean   :17.85                                4:10  
+ 3rd Qu.:3.610   3rd Qu.:18.90                                6: 1  
+ Max.   :5.424   Max.   :22.90                                8: 1  
+> 
+> 
+> 
+> cleanEx()
+> nameEx("nhtemp")
+> ### * nhtemp
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: nhtemp
+> ### Title: Average Yearly Temperatures in New Haven
+> ### Aliases: nhtemp
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> require(stats); require(graphics)
+> plot(nhtemp, main = "nhtemp data",
++   ylab = "Mean annual temperature in New Haven, CT (deg. F)")
+> 
+> 
+> 
+> cleanEx()
+> nameEx("nottem")
+> ### * nottem
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: nottem
+> ### Title: Average Monthly Temperatures at Nottingham, 1920-1939
+> ### Aliases: nottem
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> 
+> 
+> cleanEx()
+> nameEx("npk")
+> ### * npk
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: npk
+> ### Title: Classical N, P, K Factorial Experiment
+> ### Aliases: npk
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> 
+> cleanEx()
+> nameEx("occupationalStatus")
+> ### * occupationalStatus
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: occupationalStatus
+> ### Title: Occupational Status of Fathers and their Sons
+> ### Aliases: occupationalStatus
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> require(stats); require(graphics)
+> 
+> plot(occupationalStatus)
+> 
+> ##  Fit a uniform association model separating diagonal effects
+> Diag <- as.factor(diag(1:8))
+> Rscore <- scale(as.numeric(row(occupationalStatus)), scale = FALSE)
+> Cscore <- scale(as.numeric(col(occupationalStatus)), scale = FALSE)
+> modUnif <- glm(Freq ~ origin + destination + Diag + Rscore:Cscore,
++                family = poisson, data = occupationalStatus)
+> 
+> summary(modUnif)
+
+Call:
+glm(formula = Freq ~ origin + destination + Diag + Rscore:Cscore, 
+    family = poisson, data = occupationalStatus)
+
+Deviance Residuals: 
+    Min       1Q   Median       3Q      Max  
+-2.6521  -0.6267   0.0000   0.5913   2.0964  
+
+Coefficients:
+              Estimate Std. Error z value Pr(>|z|)    
+(Intercept)   0.568592   0.183358   3.101 0.001929 ** 
+origin2       0.431314   0.149415   2.887 0.003893 ** 
+origin3       1.461862   0.131141  11.147  < 2e-16 ***
+origin4       1.788731   0.126588  14.130  < 2e-16 ***
+origin5       0.441011   0.144844   3.045 0.002329 ** 
+origin6       2.491735   0.121219  20.556  < 2e-16 ***
+origin7       1.127536   0.129032   8.738  < 2e-16 ***
+origin8       0.796445   0.131863   6.040 1.54e-09 ***
+destination2  0.873202   0.166902   5.232 1.68e-07 ***
+destination3  1.813992   0.153861  11.790  < 2e-16 ***
+destination4  2.082515   0.150887  13.802  < 2e-16 ***
+destination5  1.366383   0.155590   8.782  < 2e-16 ***
+destination6  2.816369   0.146054  19.283  < 2e-16 ***
+destination7  1.903918   0.147810  12.881  < 2e-16 ***
+destination8  1.398585   0.151658   9.222  < 2e-16 ***
+Diag1         1.665495   0.237383   7.016 2.28e-12 ***
+Diag2         0.959681   0.212122   4.524 6.06e-06 ***
+Diag3         0.021750   0.156530   0.139 0.889490    
+Diag4         0.226399   0.124364   1.820 0.068689 .  
+Diag5         0.808646   0.229754   3.520 0.000432 ***
+Diag6         0.132277   0.077191   1.714 0.086597 .  
+Diag7         0.506709   0.115936   4.371 1.24e-05 ***
+Diag8         0.221880   0.134803   1.646 0.099771 .  
+Rscore:Cscore 0.136974   0.007489  18.289  < 2e-16 ***
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+
+(Dispersion parameter for poisson family taken to be 1)
+
+    Null deviance: 4679.004  on 63  degrees of freedom
+Residual deviance:   58.436  on 40  degrees of freedom
+AIC: 428.78
+
+Number of Fisher Scoring iterations: 4
+
+> plot(modUnif) # 4 plots, with warning about  h_ii ~= 1
+Warning: not plotting observations with leverage one:
+  1, 10, 19, 28, 37, 46, 55, 64
+> 
+> 
+> 
+> cleanEx()
+> nameEx("precip")
+> ### * precip
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: precip
+> ### Title: Annual Precipitation in US Cities
+> ### Aliases: precip
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> dotchart(precip[order(precip)], main = "precip data")
+> title(sub = "Average annual precipitation (in.)")
+> 
+> ## Old ("wrong") version of dataset (just name change):
+> precip.O <- local({
++    p <- precip; names(p)[names(p) == "Cincinnati"] <- "Cincinati" ; p })
+> stopifnot(all(precip == precip.O),
++ 	  match("Cincinnati", names(precip)) == 46,
++ 	  identical(names(precip)[-46], names(precip.O)[-46]))
+> 
+> 
+> 
+> cleanEx()
+> nameEx("presidents")
+> ### * presidents
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: presidents
+> ### Title: Quarterly Approval Ratings of US Presidents
+> ### Aliases: presidents
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> require(stats); require(graphics)
+> plot(presidents, las = 1, ylab = "Approval rating (%)",
++      main = "presidents data")
+> 
+> 
+> 
+> cleanEx()
+> nameEx("pressure")
+> ### * pressure
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: pressure
+> ### Title: Vapor Pressure of Mercury as a Function of Temperature
+> ### Aliases: pressure
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> plot(pressure, xlab = "Temperature (deg C)",
++      ylab = "Pressure (mm of Hg)",
++      main = "pressure data: Vapor Pressure of Mercury")
+> plot(pressure, xlab = "Temperature (deg C)",  log = "y",
++      ylab = "Pressure (mm of Hg)",
++      main = "pressure data: Vapor Pressure of Mercury")
+> 
+> 
+> 
+> cleanEx()
+> nameEx("quakes")
+> ### * quakes
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: quakes
+> ### Title: Locations of Earthquakes off Fiji
+> ### Aliases: quakes
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> pairs(quakes, main = "Fiji Earthquakes, N = 1000", cex.main = 1.2, pch = ".")
+> 
+> 
+> 
+> cleanEx()
+> nameEx("randu")
+> ### * randu
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: randu
+> ### Title: Random Numbers from Congruential Generator RANDU
+> ### Aliases: randu
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> 
+> 
+> 
+> cleanEx()
+> nameEx("sleep")
+> ### * sleep
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: sleep
+> ### Title: Student's Sleep Data
+> ### Aliases: sleep
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> require(stats)
+> ## Student's paired t-test
+> with(sleep,
++      t.test(extra[group == 1],
++             extra[group == 2], paired = TRUE))
+
+	Paired t-test
+
+data:  extra[group == 1] and extra[group == 2]
+t = -4.0621, df = 9, p-value = 0.002833
+alternative hypothesis: true mean difference is not equal to 0
+95 percent confidence interval:
+ -2.4598858 -0.7001142
+sample estimates:
+mean difference 
+          -1.58 
+
+> 
+> ## The sleep *prolongations*
+> sleep1 <- with(sleep, extra[group == 2] - extra[group == 1])
+> summary(sleep1)
+   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
+   0.00    1.05    1.30    1.58    1.70    4.60 
+> stripchart(sleep1, method = "stack", xlab = "hours",
++            main = "Sleep prolongation (n = 10)")
+> boxplot(sleep1, horizontal = TRUE, add = TRUE,
++         at = .6, pars = list(boxwex = 0.5, staplewex = 0.25))
+> 
+> 
+> 
+> cleanEx()
+> nameEx("stackloss")
+> ### * stackloss
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: stackloss
+> ### Title: Brownlee's Stack Loss Plant Data
+> ### Aliases: stackloss stack.loss stack.x
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> require(stats)
+> summary(lm.stack <- lm(stack.loss ~ stack.x))
+
+Call:
+lm(formula = stack.loss ~ stack.x)
+
+Residuals:
+    Min      1Q  Median      3Q     Max 
+-7.2377 -1.7117 -0.4551  2.3614  5.6978 
+
+Coefficients:
+                  Estimate Std. Error t value Pr(>|t|)    
+(Intercept)       -39.9197    11.8960  -3.356  0.00375 ** 
+stack.xAir.Flow     0.7156     0.1349   5.307  5.8e-05 ***
+stack.xWater.Temp   1.2953     0.3680   3.520  0.00263 ** 
+stack.xAcid.Conc.  -0.1521     0.1563  -0.973  0.34405    
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+
+Residual standard error: 3.243 on 17 degrees of freedom
+Multiple R-squared:  0.9136,	Adjusted R-squared:  0.8983 
+F-statistic:  59.9 on 3 and 17 DF,  p-value: 3.016e-09
+
+> 
+> 
+> 
+> cleanEx()
+> nameEx("sunspot.month")
+> ### * sunspot.month
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: sunspot.month
+> ### Title: Monthly Sunspot Data, from 1749 to "Present"
+> ### Aliases: sunspot.month
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> require(stats); require(graphics)
+> ## Compare the monthly series
+> plot (sunspot.month,
++       main="sunspot.month & sunspots [package'datasets']", col=2)
+> lines(sunspots) # -> faint differences where they overlap
+> 
+> ## Now look at the difference :
+> all(tsp(sunspots)     [c(1,3)] ==
++     tsp(sunspot.month)[c(1,3)]) ## Start & Periodicity are the same
+[1] TRUE
+> n1 <- length(sunspots)
+> table(eq <- sunspots == sunspot.month[1:n1]) #>  132  are different !
+
+FALSE  TRUE 
+  143  2677 
+> i <- which(!eq)
+> rug(time(eq)[i])
+> s1 <- sunspots[i] ; s2 <- sunspot.month[i]
+> cbind(i = i, time = time(sunspots)[i], sunspots = s1, ss.month = s2,
++       perc.diff = round(100*2*abs(s1-s2)/(s1+s2), 1))
+          i     time sunspots ss.month perc.diff
+  [1,]   55 1753.500     22.2     22.0       0.9
+  [2,]  838 1818.750     31.7     31.6       0.3
+  [3,]  841 1819.000     32.5     32.8       0.9
+  [4,]  862 1820.750      9.0      8.9       1.1
+  [5,]  864 1820.917      9.7      9.1       6.4
+  [6,]  866 1821.083      4.3      4.2       2.4
+  [7,]  876 1821.917      0.0      0.2     200.0
+  [8,]  901 1824.000     21.6     21.7       0.5
+  [9,]  917 1825.333     15.4     15.5       0.6
+ [10,]  920 1825.583     25.4     25.7       1.2
+ [11,]  943 1827.500     42.9     42.3       1.4
+ [12,]  946 1827.750     57.2     56.1       1.9
+ [13,]  955 1828.500     54.3     54.2       0.2
+ [14,]  960 1828.917     46.6     46.9       0.6
+ [15,]  965 1829.333     67.5     67.4       0.1
+ [16,]  968 1829.583     78.3     77.6       0.9
+ [17,]  976 1830.250    107.1    106.3       0.7
+ [18,]  988 1831.250     54.6     54.5       0.2
+ [19,]  992 1831.583     54.9     55.0       0.2
+ [20,]  994 1831.750     46.2     46.3       0.2
+ [21,]  998 1832.083     55.5     55.6       0.2
+ [22,] 1003 1832.500     13.9     14.0       0.7
+ [23,] 1047 1836.167     98.1     98.2       0.1
+ [24,] 1061 1837.333    111.3    111.7       0.4
+ [25,] 1081 1839.000    107.6    105.6       1.9
+ [26,] 1087 1839.500     84.7     84.8       0.1
+ [27,] 1090 1839.750     90.8     90.9       0.1
+ [28,] 1092 1839.917     63.6     63.7       0.2
+ [29,] 1095 1840.167     55.5     67.8      20.0
+ [30,] 1102 1840.750     49.8     55.0       9.9
+ [31,] 1105 1841.000     24.0     24.1       0.4
+ [32,] 1108 1841.250     42.6     40.2       5.8
+ [33,] 1109 1841.333     67.4     67.5       0.1
+ [34,] 1113 1841.667     35.1     36.5       3.9
+ [35,] 1124 1842.583     26.5     26.6       0.4
+ [36,] 1125 1842.667     18.5     18.4       0.5
+ [37,] 1132 1843.250      8.8      9.5       7.7
+ [38,] 1145 1844.333     12.0     11.6       3.4
+ [39,] 1149 1844.667      6.9      7.0       1.4
+ [40,] 1156 1845.250     56.9     57.0       0.2
+ [41,] 1168 1846.250     69.2     69.3       0.1
+ [42,] 1185 1847.667    161.2    160.9       0.2
+ [43,] 1191 1848.167    108.9    108.6       0.3
+ [44,] 1194 1848.417    123.8    129.0       4.1
+ [45,] 1196 1848.583    132.5    132.6       0.1
+ [46,] 1200 1848.917    159.9    159.5       0.3
+ [47,] 1201 1849.000    156.7    157.0       0.2
+ [48,] 1202 1849.083    131.7    131.8       0.1
+ [49,] 1203 1849.167     96.5     96.2       0.3
+ [50,] 1206 1849.417     81.2     81.1       0.1
+ [51,] 1208 1849.583     61.3     67.7       9.9
+ [52,] 1211 1849.833     99.7     99.0       0.7
+ [53,] 1224 1850.917     60.0     61.0       1.7
+ [54,] 1235 1851.833     50.9     51.0       0.2
+ [55,] 1238 1852.083     67.5     66.4       1.6
+ [56,] 1243 1852.500     42.0     42.1       0.2
+ [57,] 1256 1853.583     50.4     50.5       0.2
+ [58,] 1258 1853.750     42.3     42.4       0.2
+ [59,] 1264 1854.250     26.4     26.5       0.4
+ [60,] 1270 1854.750     12.7     12.6       0.8
+ [61,] 1272 1854.917     21.4     21.6       0.9
+ [62,] 1282 1855.750      9.7      9.6       1.0
+ [63,] 1283 1855.833      4.3      4.2       2.4
+ [64,] 1290 1856.417      5.0      5.2       3.9
+ [65,] 1301 1857.333     29.2     28.5       2.4
+ [66,] 1333 1860.000     81.5     82.4       1.1
+ [67,] 1334 1860.083     88.0     88.3       0.3
+ [68,] 1346 1861.083     77.8     77.7       0.1
+ [69,] 1350 1861.417     87.8     88.1       0.3
+ [70,] 1366 1862.750     42.0     41.9       0.2
+ [71,] 1407 1866.167     24.6     24.5       0.4
+ [72,] 1424 1867.583      4.9      4.8       2.1
+ [73,] 1427 1867.833      9.3      9.6       3.2
+ [74,] 1429 1868.000     15.6     15.5       0.6
+ [75,] 1430 1868.083     15.8     15.7       0.6
+ [76,] 1435 1868.500     28.6     29.0       1.4
+ [77,] 1437 1868.667     43.8     47.2       7.5
+ [78,] 1438 1868.750     61.7     61.6       0.2
+ [79,] 1442 1869.083     59.3     59.9       1.0
+ [80,] 1445 1869.333    104.0    103.9       0.1
+ [81,] 1450 1869.750     59.4     59.3       0.2
+ [82,] 1451 1869.833     77.4     78.1       0.9
+ [83,] 1452 1869.917    104.3    104.4       0.1
+ [84,] 1455 1870.167    159.4    157.5       1.2
+ [85,] 1472 1871.583    110.0    110.1       0.1
+ [86,] 1476 1871.917     90.3     90.4       0.1
+ [87,] 1486 1872.750    103.5    102.6       0.9
+ [88,] 1497 1873.667     47.5     47.1       0.8
+ [89,] 1498 1873.750     47.4     47.1       0.6
+ [90,] 1514 1875.083     22.2     21.5       3.2
+ [91,] 1527 1876.167     31.2     30.6       1.9
+ [92,] 1539 1877.167     11.7     11.9       1.7
+ [93,] 1541 1877.333     21.2     21.6       1.9
+ [94,] 1542 1877.417     13.4     14.2       5.8
+ [95,] 1543 1877.500      5.9      6.0       1.7
+ [96,] 1545 1877.667     16.4     16.9       3.0
+ [97,] 1547 1877.833     14.5     14.2       2.1
+ [98,] 1548 1877.917      2.3      2.2       4.4
+ [99,] 1550 1878.083      6.0      6.6       9.5
+[100,] 1553 1878.333      5.8      5.9       1.7
+[101,] 1561 1879.000      0.8      1.0      22.2
+[102,] 1571 1879.833     12.9     13.1       1.5
+[103,] 1572 1879.917      7.2      7.3       1.4
+[104,] 1574 1880.083     27.5     27.2       1.1
+[105,] 1575 1880.167     19.5     19.3       1.0
+[106,] 1576 1880.250     19.3     19.5       1.0
+[107,] 1588 1881.250     51.7     51.6       0.2
+[108,] 1592 1881.583     58.0     58.4       0.7
+[109,] 1594 1881.750     64.0     64.4       0.6
+[110,] 1598 1882.083     69.3     69.5       0.3
+[111,] 1599 1882.167     67.5     66.8       1.0
+[112,] 1613 1883.333     32.1     31.5       1.9
+[113,] 1614 1883.417     76.5     76.3       0.3
+[114,] 1623 1884.167     86.8     87.5       0.8
+[115,] 1643 1885.833     33.3     30.9       7.5
+[116,] 1656 1886.917     12.4     13.0       4.7
+[117,] 1663 1887.500     23.3     23.4       0.4
+[118,] 1683 1889.167      7.0      6.7       4.4
+[119,] 1687 1889.500      9.7      9.4       3.1
+[120,] 1712 1891.583     33.2     33.0       0.6
+[121,] 1716 1891.917     32.3     32.5       0.6
+[122,] 1723 1892.500     76.8     76.5       0.4
+[123,] 1734 1893.417     88.2     89.9       1.9
+[124,] 1735 1893.500     88.8     88.6       0.2
+[125,] 1738 1893.750     79.7     80.0       0.4
+[126,] 1774 1896.750     28.4     28.7       1.1
+[127,] 1837 1902.000      5.2      5.5       5.6
+[128,] 2126 1926.083     70.0     69.9       0.1
+[129,] 2151 1928.167     85.4     85.5       0.1
+[130,] 2153 1928.333     76.9     77.0       0.1
+[131,] 2162 1929.083     64.1     62.8       2.0
+[132,] 2174 1930.083     49.2     49.9       1.4
+[133,] 2233 1935.000     18.9     18.6       1.6
+[134,] 2315 1941.833     38.3     38.4       0.3
+[135,] 2329 1943.000     12.4     12.5       0.8
+[136,] 2378 1947.083    113.4    133.4      16.2
+[137,] 2427 1951.167     59.9     55.9       6.9
+[138,] 2498 1957.083    130.2    130.3       0.1
+[139,] 2552 1961.583     55.9     55.8       0.2
+[140,] 2556 1961.917     40.0     39.9       0.3
+[141,] 2594 1965.083     14.2     14.3       0.7
+[142,] 2790 1981.417     90.0     90.9       1.0
+[143,] 2819 1983.833     33.3     33.4       0.3
+> 
+> ## How to recreate the "old" sunspot.month (R <= 3.0.3):
+> .sunspot.diff <- cbind(
++     i = c(1202L, 1256L, 1258L, 1301L, 1407L, 1429L, 1452L, 1455L,
++           1663L, 2151L, 2329L, 2498L, 2594L, 2694L, 2819L),
++     res10 = c(1L, 1L, 1L, -1L, -1L, -1L, 1L, -1L,
++           1L, 1L, 1L, 1L, 1L, 20L, 1L))
+> ssm0 <- sunspot.month[1:2988]
+> with(as.data.frame(.sunspot.diff), ssm0[i] <<- ssm0[i] - res10/10)
+> sunspot.month.0 <- ts(ssm0, start = 1749, frequency = 12)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("sunspot.year")
+> ### * sunspot.year
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: sunspot.year
+> ### Title: Yearly Sunspot Data, 1700-1988
+> ### Aliases: sunspot.year
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> utils::str(sm <- sunspots)# the monthly version we keep unchanged
+ Time-Series [1:2820] from 1749 to 1984: 58 62.6 70 55.7 85 83.5 94.8 66.3 75.9 75.5 ...
+> utils::str(sy <- sunspot.year)
+ Time-Series [1:289] from 1700 to 1988: 5 11 16 23 36 58 29 20 10 8 ...
+> ## The common time interval
+> (t1 <- c(max(start(sm), start(sy)),     1)) # Jan 1749
+[1] 1749    1
+> (t2 <- c(min(  end(sm)[1],end(sy)[1]), 12)) # Dec 1983
+[1] 1983   12
+> s.m <- window(sm, start=t1, end=t2)
+> s.y <- window(sy, start=t1, end=t2[1]) # {irrelevant warning}
+> stopifnot(length(s.y) * 12 == length(s.m),
++           ## The yearly series *is* close to the averages of the monthly one:
++           all.equal(s.y, aggregate(s.m, FUN = mean), tolerance = 0.0020))
+> ## NOTE: Strangely, correctly weighting the number of days per month
+> ##       (using 28.25 for February) is *not* closer than the simple mean:
+> ndays <- c(31, 28.25, rep(c(31,30, 31,30, 31), 2))
+> all.equal(s.y, aggregate(s.m, FUN = mean))                     # 0.0013
+[1] "Mean relative difference: 0.001312539"
+> all.equal(s.y, aggregate(s.m, FUN = weighted.mean, w = ndays)) # 0.0017
+[1] "Mean relative difference: 0.001692215"
+> 
+> 
+> 
+> cleanEx()
+> nameEx("sunspots")
+> ### * sunspots
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: sunspots
+> ### Title: Monthly Sunspot Numbers, 1749-1983
+> ### Aliases: sunspots
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> plot(sunspots, main = "sunspots data", xlab = "Year",
++      ylab = "Monthly sunspot numbers")
+> 
+> 
+> 
+> cleanEx()
+> nameEx("swiss")
+> ### * swiss
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: swiss
+> ### Title: Swiss Fertility and Socioeconomic Indicators (1888) Data
+> ### Aliases: swiss
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> require(stats); require(graphics)
+> pairs(swiss, panel = panel.smooth, main = "swiss data",
++       col = 3 + (swiss$Catholic > 50))
+> summary(lm(Fertility ~ . , data = swiss))
+
+Call:
+lm(formula = Fertility ~ ., data = swiss)
+
+Residuals:
+     Min       1Q   Median       3Q      Max 
+-15.2743  -5.2617   0.5032   4.1198  15.3213 
+
+Coefficients:
+                 Estimate Std. Error t value Pr(>|t|)    
+(Intercept)      66.91518   10.70604   6.250 1.91e-07 ***
+Agriculture      -0.17211    0.07030  -2.448  0.01873 *  
+Examination      -0.25801    0.25388  -1.016  0.31546    
+Education        -0.87094    0.18303  -4.758 2.43e-05 ***
+Catholic          0.10412    0.03526   2.953  0.00519 ** 
+Infant.Mortality  1.07705    0.38172   2.822  0.00734 ** 
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+
+Residual standard error: 7.165 on 41 degrees of freedom
+Multiple R-squared:  0.7067,	Adjusted R-squared:  0.671 
+F-statistic: 19.76 on 5 and 41 DF,  p-value: 5.594e-10
+
+> 
+> 
+> 
+> cleanEx()
+> nameEx("trees")
+> ### * trees
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: trees
+> ### Title: Diameter, Height and Volume for Black Cherry Trees
+> ### Aliases: trees
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> require(stats); require(graphics)
+> pairs(trees, panel = panel.smooth, main = "trees data")
+> plot(Volume ~ Girth, data = trees, log = "xy")
+> coplot(log(Volume) ~ log(Girth) | Height, data = trees,
++        panel = panel.smooth)
+> summary(fm1 <- lm(log(Volume) ~ log(Girth), data = trees))
+
+Call:
+lm(formula = log(Volume) ~ log(Girth), data = trees)
+
+Residuals:
+      Min        1Q    Median        3Q       Max 
+-0.205999 -0.068702  0.001011  0.072585  0.247963 
+
+Coefficients:
+            Estimate Std. Error t value Pr(>|t|)    
+(Intercept) -2.35332    0.23066  -10.20 4.18e-11 ***
+log(Girth)   2.19997    0.08983   24.49  < 2e-16 ***
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+
+Residual standard error: 0.115 on 29 degrees of freedom
+Multiple R-squared:  0.9539,	Adjusted R-squared:  0.9523 
+F-statistic: 599.7 on 1 and 29 DF,  p-value: < 2.2e-16
+
+> summary(fm2 <- update(fm1, ~ . + log(Height), data = trees))
+
+Call:
+lm(formula = log(Volume) ~ log(Girth) + log(Height), data = trees)
+
+Residuals:
+      Min        1Q    Median        3Q       Max 
+-0.168561 -0.048488  0.002431  0.063637  0.129223 
+
+Coefficients:
+            Estimate Std. Error t value Pr(>|t|)    
+(Intercept) -6.63162    0.79979  -8.292 5.06e-09 ***
+log(Girth)   1.98265    0.07501  26.432  < 2e-16 ***
+log(Height)  1.11712    0.20444   5.464 7.81e-06 ***
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+
+Residual standard error: 0.08139 on 28 degrees of freedom
+Multiple R-squared:  0.9777,	Adjusted R-squared:  0.9761 
+F-statistic: 613.2 on 2 and 28 DF,  p-value: < 2.2e-16
+
+> step(fm2)
+Start:  AIC=-152.69
+log(Volume) ~ log(Girth) + log(Height)
+
+              Df Sum of Sq    RSS      AIC
+<none>                     0.1855 -152.685
+- log(Height)  1    0.1978 0.3832 -132.185
+- log(Girth)   1    4.6275 4.8130  -53.743
+
+Call:
+lm(formula = log(Volume) ~ log(Girth) + log(Height), data = trees)
+
+Coefficients:
+(Intercept)   log(Girth)  log(Height)  
+     -6.632        1.983        1.117  
+
+> ## i.e., Volume ~= c * Height * Girth^2  seems reasonable
+> 
+> 
+> 
+> cleanEx()
+> nameEx("uspop")
+> ### * uspop
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: uspop
+> ### Title: Populations Recorded by the US Census
+> ### Aliases: uspop
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> plot(uspop, log = "y", main = "uspop data", xlab = "Year",
++      ylab = "U.S. Population (millions)")
+> 
+> 
+> 
+> cleanEx()
+> nameEx("volcano")
+> ### * volcano
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: volcano
+> ### Title: Topographic Information on Auckland's Maunga Whau Volcano
+> ### Aliases: volcano
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> require(grDevices); require(graphics)
+> filled.contour(volcano, color.palette = terrain.colors, asp = 1)
+> title(main = "volcano data: filled contour map")
+> 
+> 
+> 
+> cleanEx()
+> nameEx("warpbreaks")
+> ### * warpbreaks
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: warpbreaks
+> ### Title: The Number of Breaks in Yarn during Weaving
+> ### Aliases: warpbreaks
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> require(stats); require(graphics)
+> summary(warpbreaks)
+     breaks      wool   tension
+ Min.   :10.00   A:27   L:18   
+ 1st Qu.:18.25   B:27   M:18   
+ Median :26.00          H:18   
+ Mean   :28.15                 
+ 3rd Qu.:34.00                 
+ Max.   :70.00                 
+> opar <- par(mfrow = c(1, 2), oma = c(0, 0, 1.1, 0))
+> plot(breaks ~ tension, data = warpbreaks, col = "lightgray",
++      varwidth = TRUE, subset = wool == "A", main = "Wool A")
+> plot(breaks ~ tension, data = warpbreaks, col = "lightgray",
++      varwidth = TRUE, subset = wool == "B", main = "Wool B")
+> mtext("warpbreaks data", side = 3, outer = TRUE)
+> par(opar)
+> summary(fm1 <- lm(breaks ~ wool*tension, data = warpbreaks))
+
+Call:
+lm(formula = breaks ~ wool * tension, data = warpbreaks)
+
+Residuals:
+     Min       1Q   Median       3Q      Max 
+-19.5556  -6.8889  -0.6667   7.1944  25.4444 
+
+Coefficients:
+               Estimate Std. Error t value Pr(>|t|)    
+(Intercept)      44.556      3.647  12.218 2.43e-16 ***
+woolB           -16.333      5.157  -3.167 0.002677 ** 
+tensionM        -20.556      5.157  -3.986 0.000228 ***
+tensionH        -20.000      5.157  -3.878 0.000320 ***
+woolB:tensionM   21.111      7.294   2.895 0.005698 ** 
+woolB:tensionH   10.556      7.294   1.447 0.154327    
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+
+Residual standard error: 10.94 on 48 degrees of freedom
+Multiple R-squared:  0.3778,	Adjusted R-squared:  0.3129 
+F-statistic: 5.828 on 5 and 48 DF,  p-value: 0.0002772
+
+> anova(fm1)
+Analysis of Variance Table
+
+Response: breaks
+             Df Sum Sq Mean Sq F value    Pr(>F)    
+wool          1  450.7  450.67  3.7653 0.0582130 .  
+tension       2 2034.3 1017.13  8.4980 0.0006926 ***
+wool:tension  2 1002.8  501.39  4.1891 0.0210442 *  
+Residuals    48 5745.1  119.69                      
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("women")
+> ### * women
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: women
+> ### Title: Average Heights and Weights for American Women
+> ### Aliases: women
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> plot(women, xlab = "Height (in)", ylab = "Weight (lb)",
++      main = "women data: American women aged 30-39")
+> 
+> 
+> 
+> cleanEx()
+> nameEx("zCO2")
+> ### * zCO2
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: CO2
+> ### Title: Carbon Dioxide Uptake in Grass Plants
+> ### Aliases: CO2
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> require(stats); require(graphics)
+> ## Don't show: 
+> options(show.nls.convergence=FALSE)
+> ## End(Don't show)
+> coplot(uptake ~ conc | Plant, data = CO2, show.given = FALSE, type = "b")
+> ## fit the data for the first plant
+> fm1 <- nls(uptake ~ SSasymp(conc, Asym, lrc, c0),
++    data = CO2, subset = Plant == "Qn1")
+> summary(fm1)
+
+Formula: uptake ~ SSasymp(conc, Asym, lrc, c0)
+
+Parameters:
+     Estimate Std. Error t value Pr(>|t|)    
+Asym  38.1398     0.9164  41.620 1.99e-06 ***
+lrc  -34.2766    18.9661  -1.807    0.145    
+c0    -4.3806     0.2042 -21.457 2.79e-05 ***
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+
+Residual standard error: 1.663 on 4 degrees of freedom
+
+> ## fit each plant separately
+> fmlist <- list()
+> for (pp in levels(CO2$Plant)) {
++   fmlist[[pp]] <- nls(uptake ~ SSasymp(conc, Asym, lrc, c0),
++       data = CO2, subset = Plant == pp)
++ }
+> ## check the coefficients by plant
+> print(sapply(fmlist, coef), digits = 3)
+        Qn1    Qn2    Qn3   Qc1    Qc3    Qc2    Mn3    Mn2   Mn1   Mc2     Mc3
+Asym  38.14  42.87  44.23 36.43  40.68  39.82  28.48  32.13 34.08 13.56   18.54
+lrc  -34.28 -29.66 -37.63 -9.90 -11.54 -51.53 -17.37 -29.04 -8.81 -1.98 -136.11
+c0    -4.38  -4.67  -4.49 -4.86  -4.95  -4.46  -4.59  -4.47 -5.06 -4.56   -3.47
+       Mc1
+Asym 21.79
+lrc   2.45
+c0   -5.14
+> 
+> 
+> 
+> ### * <FOOTER>
+> ###
+> cleanEx()
+> options(digits = 7L)
+> base::cat("Time elapsed: ", proc.time() - base::get("ptime", pos = 'CheckExEnv'),"\n")
+Time elapsed:  5.453 0.122 5.614 0 0 
+> grDevices::dev.off()
+null device 
+          1 
+> ###
+> ### Local variables: ***
+> ### mode: outline-minor ***
+> ### outline-regexp: "\\(> \\)?### [*]+" ***
+> ### End: ***
+> quit('no')
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/tests/Examples/grDevices-Ex.Rout.save
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/tests/Examples/grDevices-Ex.Rout.save	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/tests/Examples/grDevices-Ex.Rout.save	(revision 3762)
@@ -0,0 +1,4315 @@
+
+R Under development (unstable) (2022-03-19 r81942) -- "Unsuffered Consequences"
+Copyright (C) 2022 The R Foundation for Statistical Computing
+Platform: x86_64-pc-linux-gnu (64-bit)
+
+R is free software and comes with ABSOLUTELY NO WARRANTY.
+You are welcome to redistribute it under certain conditions.
+Type 'license()' or 'licence()' for distribution details.
+
+  Natural language support but running in an English locale
+
+R is a collaborative project with many contributors.
+Type 'contributors()' for more information and
+'citation()' on how to cite R or R packages in publications.
+
+Type 'demo()' for some demos, 'help()' for on-line help, or
+'help.start()' for an HTML browser interface to help.
+Type 'q()' to quit R.
+
+> pkgname <- "grDevices"
+> source(file.path(R.home("share"), "R", "examples-header.R"))
+> options(warn = 1)
+> library('grDevices')
+> 
+> base::assign(".oldSearch", base::search(), pos = 'CheckExEnv')
+> base::assign(".old_wd", base::getwd(), pos = 'CheckExEnv')
+> cleanEx()
+> nameEx("Devices")
+> ### * Devices
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: Devices
+> ### Title: List of Graphical Devices
+> ### Aliases: Devices device
+> ### Keywords: device
+> 
+> ### ** Examples
+> ## Not run: 
+> ##D ## open the default screen device on this platform if no device is
+> ##D ## open
+> ##D if(dev.cur() == 1) dev.new()
+> ## End(Not run)
+> 
+> 
+> cleanEx()
+> nameEx("Hershey")
+> ### * Hershey
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: Hershey
+> ### Title: Hershey Vector Fonts in R
+> ### Aliases: Hershey
+> ### Keywords: aplot
+> 
+> ### ** Examples
+> 
+> Hershey
+$typeface
+[1] "serif"             "sans serif"        "script"           
+[4] "gothic english"    "gothic german"     "gothic italian"   
+[7] "serif symbol"      "sans serif symbol"
+
+$fontindex
+[1] "plain"            "italic"           "bold"             "bold italic"     
+[5] "cyrillic"         "oblique cyrillic" "EUC"             
+
+$allowed
+      [,1] [,2]
+ [1,]    1    1
+ [2,]    1    2
+ [3,]    1    3
+ [4,]    1    4
+ [5,]    1    5
+ [6,]    1    6
+ [7,]    1    7
+ [8,]    2    1
+ [9,]    2    2
+[10,]    2    3
+[11,]    2    4
+[12,]    3    1
+[13,]    3    2
+[14,]    3    3
+[15,]    4    1
+[16,]    5    1
+[17,]    6    1
+[18,]    7    1
+[19,]    7    2
+[20,]    7    3
+[21,]    7    4
+[22,]    8    1
+[23,]    8    2
+
+> 
+> ## for tables of examples, see demo(Hershey)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("Japanese")
+> ### * Japanese
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: Japanese
+> ### Title: Japanese characters in R
+> ### Aliases: Japanese
+> ### Keywords: aplot
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> plot(1:9, type = "n", axes = FALSE, frame.plot = TRUE, ylab = "",
++      main = "example(Japanese)", xlab = "using Hershey fonts")
+> par(cex = 3)
+> Vf <- c("serif", "plain")
+> text(4, 2, "\\#J244b\\#J245b\\#J2473", vfont = Vf)
+> text(4, 4, "\\#J2538\\#J2563\\#J2551\\#J2573", vfont = Vf)
+> text(4, 6, "\\#J467c\\#J4b5c", vfont = Vf)
+> text(4, 8, "Japan", vfont = Vf)
+> par(cex = 1)
+> text(8, 2, "Hiragana")
+> text(8, 4, "Katakana")
+> text(8, 6, "Kanji")
+> text(8, 8, "English")
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("Type1Font")
+> ### * Type1Font
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: Type1Font
+> ### Title: Type 1 and CID Fonts
+> ### Aliases: Type1Font CIDFont
+> ### Keywords: device
+> 
+> ### ** Examples
+> 
+> ## This duplicates "ComputerModernItalic".
+> CMitalic <- Type1Font("ComputerModern2",
++                       c("CM_regular_10.afm", "CM_boldx_10.afm",
++                         "cmti10.afm", "cmbxti10.afm",
++                         "CM_symbol_10.afm"),
++                       encoding = "TeXtext.enc")
+> 
+> ## Not run: 
+> ##D ## This could be used by
+> ##D postscript(family = CMitalic)
+> ##D ## or
+> ##D postscriptFonts(CMitalic = CMitalic)  # once in a session
+> ##D postscript(family = "CMitalic", encoding = "TeXtext.enc")
+> ## End(Not run)
+> 
+> 
+> cleanEx()
+> nameEx("adjustcolor")
+> ### * adjustcolor
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: adjustcolor
+> ### Title: Adjust Colors in One or More Directions Conveniently.
+> ### Aliases: adjustcolor
+> 
+> ### ** Examples
+> 
+> ## Illustrative examples :
+> opal <- palette("default")
+> stopifnot(identical(adjustcolor(1:8,       0.75),
++                     adjustcolor(palette(), 0.75)))
+> cbind(palette(), adjustcolor(1:8, 0.75))
+     [,1]      [,2]       
+[1,] "black"   "#000000BF"
+[2,] "#DF536B" "#DF536BBF"
+[3,] "#61D04F" "#61D04FBF"
+[4,] "#2297E6" "#2297E6BF"
+[5,] "#28E2E5" "#28E2E5BF"
+[6,] "#CD0BBC" "#CD0BBCBF"
+[7,] "#F5C710" "#F5C710BF"
+[8,] "gray62"  "#9E9E9EBF"
+> 
+> ##  alpha = 1/2 * previous alpha --> opaque colors
+> x <- palette(adjustcolor(palette(), 0.5))
+> 
+> sines <- outer(1:20, 1:4, function(x, y) sin(x / 20 * pi * y))
+> matplot(sines, type = "b", pch = 21:23, col = 2:5, bg = 2:5,
++         main = "Using an 'opaque ('translucent') color palette")
+> 
+> x. <- adjustcolor(x, offset = c(0.5, 0.5, 0.5, 0), # <- "more white"
++                   transform = diag(c(.7, .7, .7, 0.6)))
+> cbind(x, x.)
+     x         x.         
+[1,] "black"   "#80808099"
+[2,] "#DF536B" "#FFBACA99"
+[3,] "#61D04F" "#C3FFB799"
+[4,] "#2297E6" "#97E9FF99"
+[5,] "#28E2E5" "#9BFFFF99"
+[6,] "#CD0BBC" "#FF87FF99"
+[7,] "#F5C710" "#FFFF8B99"
+[8,] "gray62"  "#EEEEEE99"
+> op <- par(bg = adjustcolor("goldenrod", offset = -rep(.4, 4)), xpd = NA)
+> plot(0:9, 0:9, type = "n", axes = FALSE, xlab = "", ylab = "",
++      main = "adjustcolor() -> translucent")
+> text(1:8, labels = paste0(x,"++"), col = x., cex = 8)
+> par(op)
+> 
+> ## and
+> 
+> (M <- cbind( rbind( matrix(1/3, 3, 3), 0), c(0, 0, 0, 1)))
+          [,1]      [,2]      [,3] [,4]
+[1,] 0.3333333 0.3333333 0.3333333    0
+[2,] 0.3333333 0.3333333 0.3333333    0
+[3,] 0.3333333 0.3333333 0.3333333    0
+[4,] 0.0000000 0.0000000 0.0000000    1
+> adjustcolor(x, transform = M)
+[1] "#000000FF" "#8A8A8AFF" "#808080FF" "#8A8A8AFF" "#A5A5A5FF" "#878787FF"
+[7] "#999999FF" "#9E9E9EFF"
+> 
+> ## revert to previous palette: active
+> palette(opal)
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("as.raster")
+> ### * as.raster
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: as.raster
+> ### Title: Create a Raster Object
+> ### Aliases: is.raster as.raster as.raster.logical as.raster.numeric
+> ###   as.raster.raw as.raster.character as.raster.matrix as.raster.array
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> # A red gradient
+> as.raster(matrix(hcl(0, 80, seq(50, 80, 10)),
++                  nrow = 4, ncol = 5))
+     [,1]      [,2]      [,3]      [,4]      [,5]     
+[1,] "#C54E6D" "#C54E6D" "#C54E6D" "#C54E6D" "#C54E6D"
+[2,] "#E16A86" "#E16A86" "#E16A86" "#E16A86" "#E16A86"
+[3,] "#FE86A1" "#FE86A1" "#FE86A1" "#FE86A1" "#FE86A1"
+[4,] "#FFA2BC" "#FFA2BC" "#FFA2BC" "#FFA2BC" "#FFA2BC"
+> 
+> # Vectors are 1-column matrices ...
+> #   character vectors are color names ...
+> as.raster(hcl(0, 80, seq(50, 80, 10)))
+     [,1]     
+[1,] "#C54E6D"
+[2,] "#E16A86"
+[3,] "#FE86A1"
+[4,] "#FFA2BC"
+> #   numeric vectors are greyscale ...
+> as.raster(1:5, max = 5)
+     [,1]     
+[1,] "#333333"
+[2,] "#666666"
+[3,] "#999999"
+[4,] "#CCCCCC"
+[5,] "#FFFFFF"
+> #   logical vectors are black and white ...
+> as.raster(1:10 %% 2 == 0)
+      [,1]     
+ [1,] "#000000"
+ [2,] "#FFFFFF"
+ [3,] "#000000"
+ [4,] "#FFFFFF"
+ [5,] "#000000"
+ [6,] "#FFFFFF"
+ [7,] "#000000"
+ [8,] "#FFFFFF"
+ [9,] "#000000"
+[10,] "#FFFFFF"
+> 
+> # ... unless nrow/ncol are supplied ...
+> as.raster(1:10 %% 2 == 0, nrow = 1)
+     [,1]      [,2]      [,3]      [,4]      [,5]      [,6]      [,7]     
+[1,] "#000000" "#FFFFFF" "#000000" "#FFFFFF" "#000000" "#FFFFFF" "#000000"
+     [,8]      [,9]      [,10]    
+[1,] "#FFFFFF" "#000000" "#FFFFFF"
+> 
+> # Matrix can also be logical or numeric (or raw) ...
+> as.raster(matrix(c(TRUE, FALSE), nrow = 3, ncol = 2))
+     [,1]      [,2]     
+[1,] "#FFFFFF" "#000000"
+[2,] "#000000" "#FFFFFF"
+[3,] "#FFFFFF" "#000000"
+> as.raster(matrix(1:3/4, nrow = 3, ncol = 4))
+     [,1]      [,2]      [,3]      [,4]     
+[1,] "#404040" "#404040" "#404040" "#404040"
+[2,] "#808080" "#808080" "#808080" "#808080"
+[3,] "#BFBFBF" "#BFBFBF" "#BFBFBF" "#BFBFBF"
+> 
+> # An array can be 3-plane numeric (R, G, B planes) ...
+> as.raster(array(c(0:1, rep(0.5, 4)), c(2, 1, 3)))
+     [,1]     
+[1,] "#008080"
+[2,] "#FF8080"
+> 
+> # ... or 4-plane numeric (R, G, B, A planes)
+> as.raster(array(c(0:1, rep(0.5, 6)), c(2, 1, 4)))
+     [,1]       
+[1,] "#00808080"
+[2,] "#FF808080"
+> 
+> # subsetting
+> r <- as.raster(matrix(colors()[1:100], ncol = 10))
+> r[, 2]
+      [,1]         
+ [1,] "aquamarine3"
+ [2,] "aquamarine4"
+ [3,] "azure"      
+ [4,] "azure1"     
+ [5,] "azure2"     
+ [6,] "azure3"     
+ [7,] "azure4"     
+ [8,] "beige"      
+ [9,] "bisque"     
+[10,] "bisque1"    
+> r[2:4, 2:5]
+     [,1]          [,2]      [,3]     [,4]        
+[1,] "aquamarine4" "bisque3" "brown"  "cadetblue" 
+[2,] "azure"       "bisque4" "brown1" "cadetblue1"
+[3,] "azure1"      "black"   "brown2" "cadetblue2"
+> 
+> # assigning to subset
+> r[2:4, 2:5] <- "white"
+> 
+> # comparison
+> r == "white"
+       [,1]  [,2]  [,3]  [,4]  [,5]  [,6]  [,7]  [,8]  [,9] [,10]
+ [1,]  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
+ [2,] FALSE  TRUE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE
+ [3,] FALSE  TRUE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE
+ [4,] FALSE  TRUE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE
+ [5,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
+ [6,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
+ [7,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
+ [8,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
+ [9,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
+[10,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
+> 
+> ## Don't show: 
+> stopifnot(r[] == r,
++           identical(r[3:5], colors()[3:5]))
+> r[2:4] <- "black"
+> stopifnot(identical(r[1:4, 1], as.raster(c("white", rep("black", 3)))))
+> ## End(Don't show)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("axisTicks")
+> ### * axisTicks
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: axisTicks
+> ### Title: Compute Pretty Axis Tick Scales
+> ### Aliases: axisTicks .axisPars
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> ##--- Demonstrating correspondence between graphics'
+> ##--- axis() and the graphics-engine agnostic  axisTicks() :
+> 
+> require("graphics")
+> plot(10*(0:10)); (pu <- par("usr"))
+[1]   0.6  11.4  -4.0 104.0
+> aX <- function(side, at, ...)
++     axis(side, at = at, labels = FALSE, lwd.ticks = 2, col.ticks = 2,
++          tck = 0.05, ...)
+> aX(1, print(xa <- axisTicks(pu[1:2], log = FALSE)))  # x axis
+[1]  2  4  6  8 10
+> aX(2, print(ya <- axisTicks(pu[3:4], log = FALSE)))  # y axis
+[1]   0  20  40  60  80 100
+> 
+> axisTicks(pu[3:4], log = FALSE, nint = 10)
+ [1]   0  10  20  30  40  50  60  70  80  90 100
+> 
+> plot(10*(0:10), log = "y"); (pu <- par("usr"))
+Warning in xy.coords(x, y, xlabel, ylabel, log) :
+  1 y value <= 0 omitted from logarithmic plot
+[1]  0.60 11.40  0.96  2.04
+> aX(2, print(ya <- axisTicks(pu[3:4], log = TRUE)))  # y axis
+[1]  10  20  50 100
+> 
+> plot(2^(0:9), log = "y"); (pu <- par("usr"))
+[1]  0.6400000 10.3600000 -0.1083708  2.8176408
+> aX(2, print(ya <- axisTicks(pu[3:4], log = TRUE)))  # y axis
+[1]   1   2   5  10  20  50 100 200 500
+> 
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("boxplot.stats")
+> ### * boxplot.stats
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: boxplot.stats
+> ### Title: Box Plot Statistics
+> ### Aliases: boxplot.stats
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> require(stats)
+> x <- c(1:100, 1000)
+> (b1 <- boxplot.stats(x))
+$stats
+[1]   1  26  51  76 100
+
+$n
+[1] 101
+
+$conf
+[1] 43.13921 58.86079
+
+$out
+[1] 1000
+
+> (b2 <- boxplot.stats(x, do.conf = FALSE, do.out = FALSE))
+$stats
+[1]   1  26  51  76 100
+
+$n
+[1] 101
+
+$conf
+NULL
+
+$out
+numeric(0)
+
+> stopifnot(b1 $ stats == b2 $ stats) # do.out = FALSE is still robust
+> boxplot.stats(x, coef = 3, do.conf = FALSE)
+$stats
+[1]   1  26  51  76 100
+
+$n
+[1] 101
+
+$conf
+NULL
+
+$out
+[1] 1000
+
+> ## no outlier treatment:
+> boxplot.stats(x, coef = 0)
+$stats
+[1]    1   26   51   76 1000
+
+$n
+[1] 101
+
+$conf
+[1] 43.13921 58.86079
+
+$out
+numeric(0)
+
+> 
+> boxplot.stats(c(x, NA)) # slight change : n is 101
+$stats
+[1]   1  26  51  76 100
+
+$n
+[1] 101
+
+$conf
+[1] 43.13921 58.86079
+
+$out
+[1] 1000
+
+> (r <- boxplot.stats(c(x, -1:1/0)))
+$stats
+[1]   1.0  25.5  51.0  76.5 100.0
+
+$n
+[1] 103
+
+$conf
+[1] 43.06022 58.93978
+
+$out
+[1] 1000 -Inf  Inf
+
+> stopifnot(r$out == c(1000, -Inf, Inf))
+> 
+> ## Don't show: 
+>  ## Difference between quartiles and hinges :
+>  nn <- 1:17 ;  n4 <- nn %% 4
+>  hin <- sapply(sapply(nn, seq), function(x) boxplot.stats(x)$stats[c(2,4)])
+>  q13 <- sapply(sapply(nn, seq), quantile, probs = c(1,3)/4, names = FALSE)
+>  m <- t(rbind(q13,hin))[, c(1,3,2,4)]
+>  dimnames(m) <- list(paste(nn), c("q1","lH", "q3","uH"))
+>  stopifnot(m[n4 == 1, 1:2] == (nn[n4 == 1] + 3)/4,   # quart. = hinge
++            m[n4 == 1, 3:4] == (3*nn[n4 == 1] + 1)/4,
++            m[,"lH"] == ( (nn+3) %/% 2) / 2,
++            m[,"uH"] == ((3*nn+2)%/% 2) / 2)
+>  cm <- noquote(format(m))
+>  cm[m[,2] == m[,1], 2] <- " = "
+>  cm[m[,4] == m[,3], 4] <- " = "
+>  cm
+   q1    lH    q3    uH   
+1   1.00  =     1.00  =   
+2   1.25  1.00  1.75  2.00
+3   1.50  =     2.50  =   
+4   1.75  1.50  3.25  3.50
+5   2.00  =     4.00  =   
+6   2.25  2.00  4.75  5.00
+7   2.50  =     5.50  =   
+8   2.75  2.50  6.25  6.50
+9   3.00  =     7.00  =   
+10  3.25  3.00  7.75  8.00
+11  3.50  =     8.50  =   
+12  3.75  3.50  9.25  9.50
+13  4.00  =    10.00  =   
+14  4.25  4.00 10.75 11.00
+15  4.50  =    11.50  =   
+16  4.75  4.50 12.25 12.50
+17  5.00  =    13.00  =   
+> ## End(Don't show)
+> 
+> 
+> 
+> 
+> cleanEx()
+> nameEx("cairoSymbolFont")
+> ### * cairoSymbolFont
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: cairoSymbolFont
+> ### Title: Specify a Symbol Font
+> ### Aliases: cairoSymbolFont
+> ### Keywords: device
+> 
+> ### ** Examples
+> 
+> ## Not run: 
+> ##D ## If a font uses PUA, we can just specify the font name ...
+> ##D cairo_pdf(symbolfamily="OpenSymbol")
+> ##D dev.off()
+> ##D ## ... or equivalently ...
+> ##D cairo_pdf(symbolfamily=cairoSymbolFont("OpenSymbol"))
+> ##D dev.off()
+> ##D 
+> ##D ## If a font does not use PUA, we must indicate that ...
+> ##D cairo_pdf(symbolfamily=cairoSymbolFont("Nimbus Sans", usePUA=FALSE))
+> ##D dev.off()
+> ## End(Not run)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("check.options")
+> ### * check.options
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: check.options
+> ### Title: Set Options with Consistency Checks
+> ### Aliases: check.options
+> ### Keywords: utilities programming
+> 
+> ### ** Examples
+> 
+> (L1 <- list(a = 1:3, b = pi, ch = "CH"))
+$a
+[1] 1 2 3
+
+$b
+[1] 3.141593
+
+$ch
+[1] "CH"
+
+> check.options(list(a = 0:2), name.opt = "L1")
+$a
+[1] 0 1 2
+
+$b
+[1] 3.141593
+
+$ch
+[1] "CH"
+
+> check.options(NULL, reset = TRUE, name.opt = "L1")
+$a
+[1] 1 2 3
+
+$b
+[1] 3.141593
+
+$ch
+[1] "CH"
+
+> 
+> 
+> 
+> cleanEx()
+> nameEx("chull")
+> ### * chull
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: chull
+> ### Title: Compute Convex Hull of a Set of Points
+> ### Aliases: chull
+> ### Keywords: graphs
+> 
+> ### ** Examples
+> 
+> X <- matrix(stats::rnorm(2000), ncol = 2)
+> chull(X)
+ [1]  61 442 165 899 697 446 975 656 232 557 938 295 495
+> ## Not run: 
+> ##D   # Example usage from graphics package
+> ##D   plot(X, cex = 0.5)
+> ##D   hpts <- chull(X)
+> ##D   hpts <- c(hpts, hpts[1])
+> ##D   lines(X[hpts, ])
+> ## End(Not run)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("cm")
+> ### * cm
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: cm
+> ### Title: Unit Transformation
+> ### Aliases: cm
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> cm(1)  # = 2.54
+[1] 2.54
+> 
+> ## Translate *from* cm *to* inches:
+> 
+> 10 / cm(1) # -> 10cm  are 3.937 inches
+[1] 3.937008
+> 
+> 
+> 
+> cleanEx()
+> nameEx("col2rgb")
+> ### * col2rgb
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: col2rgb
+> ### Title: Color to RGB Conversion
+> ### Aliases: col2rgb
+> ### Keywords: color dplot
+> 
+> ### ** Examples
+> 
+> col2rgb("peachpuff")
+      [,1]
+red    255
+green  218
+blue   185
+> col2rgb(c(blu = "royalblue", reddish = "tomato"))  # note: colnames
+      blu reddish
+red    65     255
+green 105      99
+blue  225      71
+> 
+> col2rgb(1:8)  # the ones from the palette() (if the default)
+      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
+red      0  223   97   34   40  205  245  158
+green    0   83  208  151  226   11  199  158
+blue     0  107   79  230  229  188   16  158
+> 
+> col2rgb(paste0("gold", 1:4))
+      [,1] [,2] [,3] [,4]
+red    255  238  205  139
+green  215  201  173  117
+blue     0    0    0    0
+> 
+> col2rgb("#08a0ff")
+      [,1]
+red      8
+green  160
+blue   255
+> ## all three kinds of color specifications:
+> col2rgb(c(red = "red", hex = "#abcdef"))
+      red hex
+red   255 171
+green   0 205
+blue    0 239
+> col2rgb(c(palette = 1:3))
+      palette1 palette2 palette3
+red          0      223       97
+green        0       83      208
+blue         0      107       79
+> 
+> ##-- NON-INTRODUCTORY examples --
+> 
+> grC <- col2rgb(paste0("gray", 0:100))
+> table(print(diff(grC["red",])))  # '2' or '3': almost equidistant
+  [1] 3 2 3 2 3 2 3 2 3 3 2 3 2 3 2 3 2 3 2 3 3 2 3 2 3 2 3 2 3 3 2 3 2 3 2 3 2
+ [38] 3 2 3 3 2 3 2 3 2 3 2 3 2 3 3 2 3 2 3 2 3 2 3 3 2 3 2 3 2 3 2 3 3 2 3 2 3
+ [75] 2 3 2 3 2 3 3 2 3 2 3 2 3 2 3 2 3 3 2 3 2 3 2 3 2 3
+
+ 2  3 
+45 55 
+> ## The 'named' grays are in between {"slate gray" is not gray, strictly}
+> col2rgb(c(g66 = "gray66", darkg =  "dark gray", g67 = "gray67",
++           g74 = "gray74", gray  =       "gray", g75 = "gray75",
++           g82 = "gray82", light = "light gray", g83 = "gray83"))
+      g66 darkg g67 g74 gray g75 g82 light g83
+red   168   169 171 189  190 191 209   211 212
+green 168   169 171 189  190 191 209   211 212
+blue  168   169 171 189  190 191 209   211 212
+> 
+> crgb <- col2rgb(cc <- colors())
+> colnames(crgb) <- cc
+> t(crgb)  # The whole table
+                     red green blue
+white                255   255  255
+aliceblue            240   248  255
+antiquewhite         250   235  215
+antiquewhite1        255   239  219
+antiquewhite2        238   223  204
+antiquewhite3        205   192  176
+antiquewhite4        139   131  120
+aquamarine           127   255  212
+aquamarine1          127   255  212
+aquamarine2          118   238  198
+aquamarine3          102   205  170
+aquamarine4           69   139  116
+azure                240   255  255
+azure1               240   255  255
+azure2               224   238  238
+azure3               193   205  205
+azure4               131   139  139
+beige                245   245  220
+bisque               255   228  196
+bisque1              255   228  196
+bisque2              238   213  183
+bisque3              205   183  158
+bisque4              139   125  107
+black                  0     0    0
+blanchedalmond       255   235  205
+blue                   0     0  255
+blue1                  0     0  255
+blue2                  0     0  238
+blue3                  0     0  205
+blue4                  0     0  139
+blueviolet           138    43  226
+brown                165    42   42
+brown1               255    64   64
+brown2               238    59   59
+brown3               205    51   51
+brown4               139    35   35
+burlywood            222   184  135
+burlywood1           255   211  155
+burlywood2           238   197  145
+burlywood3           205   170  125
+burlywood4           139   115   85
+cadetblue             95   158  160
+cadetblue1           152   245  255
+cadetblue2           142   229  238
+cadetblue3           122   197  205
+cadetblue4            83   134  139
+chartreuse           127   255    0
+chartreuse1          127   255    0
+chartreuse2          118   238    0
+chartreuse3          102   205    0
+chartreuse4           69   139    0
+chocolate            210   105   30
+chocolate1           255   127   36
+chocolate2           238   118   33
+chocolate3           205   102   29
+chocolate4           139    69   19
+coral                255   127   80
+coral1               255   114   86
+coral2               238   106   80
+coral3               205    91   69
+coral4               139    62   47
+cornflowerblue       100   149  237
+cornsilk             255   248  220
+cornsilk1            255   248  220
+cornsilk2            238   232  205
+cornsilk3            205   200  177
+cornsilk4            139   136  120
+cyan                   0   255  255
+cyan1                  0   255  255
+cyan2                  0   238  238
+cyan3                  0   205  205
+cyan4                  0   139  139
+darkblue               0     0  139
+darkcyan               0   139  139
+darkgoldenrod        184   134   11
+darkgoldenrod1       255   185   15
+darkgoldenrod2       238   173   14
+darkgoldenrod3       205   149   12
+darkgoldenrod4       139   101    8
+darkgray             169   169  169
+darkgreen              0   100    0
+darkgrey             169   169  169
+darkkhaki            189   183  107
+darkmagenta          139     0  139
+darkolivegreen        85   107   47
+darkolivegreen1      202   255  112
+darkolivegreen2      188   238  104
+darkolivegreen3      162   205   90
+darkolivegreen4      110   139   61
+darkorange           255   140    0
+darkorange1          255   127    0
+darkorange2          238   118    0
+darkorange3          205   102    0
+darkorange4          139    69    0
+darkorchid           153    50  204
+darkorchid1          191    62  255
+darkorchid2          178    58  238
+darkorchid3          154    50  205
+darkorchid4          104    34  139
+darkred              139     0    0
+darksalmon           233   150  122
+darkseagreen         143   188  143
+darkseagreen1        193   255  193
+darkseagreen2        180   238  180
+darkseagreen3        155   205  155
+darkseagreen4        105   139  105
+darkslateblue         72    61  139
+darkslategray         47    79   79
+darkslategray1       151   255  255
+darkslategray2       141   238  238
+darkslategray3       121   205  205
+darkslategray4        82   139  139
+darkslategrey         47    79   79
+darkturquoise          0   206  209
+darkviolet           148     0  211
+deeppink             255    20  147
+deeppink1            255    20  147
+deeppink2            238    18  137
+deeppink3            205    16  118
+deeppink4            139    10   80
+deepskyblue            0   191  255
+deepskyblue1           0   191  255
+deepskyblue2           0   178  238
+deepskyblue3           0   154  205
+deepskyblue4           0   104  139
+dimgray              105   105  105
+dimgrey              105   105  105
+dodgerblue            30   144  255
+dodgerblue1           30   144  255
+dodgerblue2           28   134  238
+dodgerblue3           24   116  205
+dodgerblue4           16    78  139
+firebrick            178    34   34
+firebrick1           255    48   48
+firebrick2           238    44   44
+firebrick3           205    38   38
+firebrick4           139    26   26
+floralwhite          255   250  240
+forestgreen           34   139   34
+gainsboro            220   220  220
+ghostwhite           248   248  255
+gold                 255   215    0
+gold1                255   215    0
+gold2                238   201    0
+gold3                205   173    0
+gold4                139   117    0
+goldenrod            218   165   32
+goldenrod1           255   193   37
+goldenrod2           238   180   34
+goldenrod3           205   155   29
+goldenrod4           139   105   20
+gray                 190   190  190
+gray0                  0     0    0
+gray1                  3     3    3
+gray2                  5     5    5
+gray3                  8     8    8
+gray4                 10    10   10
+gray5                 13    13   13
+gray6                 15    15   15
+gray7                 18    18   18
+gray8                 20    20   20
+gray9                 23    23   23
+gray10                26    26   26
+gray11                28    28   28
+gray12                31    31   31
+gray13                33    33   33
+gray14                36    36   36
+gray15                38    38   38
+gray16                41    41   41
+gray17                43    43   43
+gray18                46    46   46
+gray19                48    48   48
+gray20                51    51   51
+gray21                54    54   54
+gray22                56    56   56
+gray23                59    59   59
+gray24                61    61   61
+gray25                64    64   64
+gray26                66    66   66
+gray27                69    69   69
+gray28                71    71   71
+gray29                74    74   74
+gray30                77    77   77
+gray31                79    79   79
+gray32                82    82   82
+gray33                84    84   84
+gray34                87    87   87
+gray35                89    89   89
+gray36                92    92   92
+gray37                94    94   94
+gray38                97    97   97
+gray39                99    99   99
+gray40               102   102  102
+gray41               105   105  105
+gray42               107   107  107
+gray43               110   110  110
+gray44               112   112  112
+gray45               115   115  115
+gray46               117   117  117
+gray47               120   120  120
+gray48               122   122  122
+gray49               125   125  125
+gray50               127   127  127
+gray51               130   130  130
+gray52               133   133  133
+gray53               135   135  135
+gray54               138   138  138
+gray55               140   140  140
+gray56               143   143  143
+gray57               145   145  145
+gray58               148   148  148
+gray59               150   150  150
+gray60               153   153  153
+gray61               156   156  156
+gray62               158   158  158
+gray63               161   161  161
+gray64               163   163  163
+gray65               166   166  166
+gray66               168   168  168
+gray67               171   171  171
+gray68               173   173  173
+gray69               176   176  176
+gray70               179   179  179
+gray71               181   181  181
+gray72               184   184  184
+gray73               186   186  186
+gray74               189   189  189
+gray75               191   191  191
+gray76               194   194  194
+gray77               196   196  196
+gray78               199   199  199
+gray79               201   201  201
+gray80               204   204  204
+gray81               207   207  207
+gray82               209   209  209
+gray83               212   212  212
+gray84               214   214  214
+gray85               217   217  217
+gray86               219   219  219
+gray87               222   222  222
+gray88               224   224  224
+gray89               227   227  227
+gray90               229   229  229
+gray91               232   232  232
+gray92               235   235  235
+gray93               237   237  237
+gray94               240   240  240
+gray95               242   242  242
+gray96               245   245  245
+gray97               247   247  247
+gray98               250   250  250
+gray99               252   252  252
+gray100              255   255  255
+green                  0   255    0
+green1                 0   255    0
+green2                 0   238    0
+green3                 0   205    0
+green4                 0   139    0
+greenyellow          173   255   47
+grey                 190   190  190
+grey0                  0     0    0
+grey1                  3     3    3
+grey2                  5     5    5
+grey3                  8     8    8
+grey4                 10    10   10
+grey5                 13    13   13
+grey6                 15    15   15
+grey7                 18    18   18
+grey8                 20    20   20
+grey9                 23    23   23
+grey10                26    26   26
+grey11                28    28   28
+grey12                31    31   31
+grey13                33    33   33
+grey14                36    36   36
+grey15                38    38   38
+grey16                41    41   41
+grey17                43    43   43
+grey18                46    46   46
+grey19                48    48   48
+grey20                51    51   51
+grey21                54    54   54
+grey22                56    56   56
+grey23                59    59   59
+grey24                61    61   61
+grey25                64    64   64
+grey26                66    66   66
+grey27                69    69   69
+grey28                71    71   71
+grey29                74    74   74
+grey30                77    77   77
+grey31                79    79   79
+grey32                82    82   82
+grey33                84    84   84
+grey34                87    87   87
+grey35                89    89   89
+grey36                92    92   92
+grey37                94    94   94
+grey38                97    97   97
+grey39                99    99   99
+grey40               102   102  102
+grey41               105   105  105
+grey42               107   107  107
+grey43               110   110  110
+grey44               112   112  112
+grey45               115   115  115
+grey46               117   117  117
+grey47               120   120  120
+grey48               122   122  122
+grey49               125   125  125
+grey50               127   127  127
+grey51               130   130  130
+grey52               133   133  133
+grey53               135   135  135
+grey54               138   138  138
+grey55               140   140  140
+grey56               143   143  143
+grey57               145   145  145
+grey58               148   148  148
+grey59               150   150  150
+grey60               153   153  153
+grey61               156   156  156
+grey62               158   158  158
+grey63               161   161  161
+grey64               163   163  163
+grey65               166   166  166
+grey66               168   168  168
+grey67               171   171  171
+grey68               173   173  173
+grey69               176   176  176
+grey70               179   179  179
+grey71               181   181  181
+grey72               184   184  184
+grey73               186   186  186
+grey74               189   189  189
+grey75               191   191  191
+grey76               194   194  194
+grey77               196   196  196
+grey78               199   199  199
+grey79               201   201  201
+grey80               204   204  204
+grey81               207   207  207
+grey82               209   209  209
+grey83               212   212  212
+grey84               214   214  214
+grey85               217   217  217
+grey86               219   219  219
+grey87               222   222  222
+grey88               224   224  224
+grey89               227   227  227
+grey90               229   229  229
+grey91               232   232  232
+grey92               235   235  235
+grey93               237   237  237
+grey94               240   240  240
+grey95               242   242  242
+grey96               245   245  245
+grey97               247   247  247
+grey98               250   250  250
+grey99               252   252  252
+grey100              255   255  255
+honeydew             240   255  240
+honeydew1            240   255  240
+honeydew2            224   238  224
+honeydew3            193   205  193
+honeydew4            131   139  131
+hotpink              255   105  180
+hotpink1             255   110  180
+hotpink2             238   106  167
+hotpink3             205    96  144
+hotpink4             139    58   98
+indianred            205    92   92
+indianred1           255   106  106
+indianred2           238    99   99
+indianred3           205    85   85
+indianred4           139    58   58
+ivory                255   255  240
+ivory1               255   255  240
+ivory2               238   238  224
+ivory3               205   205  193
+ivory4               139   139  131
+khaki                240   230  140
+khaki1               255   246  143
+khaki2               238   230  133
+khaki3               205   198  115
+khaki4               139   134   78
+lavender             230   230  250
+lavenderblush        255   240  245
+lavenderblush1       255   240  245
+lavenderblush2       238   224  229
+lavenderblush3       205   193  197
+lavenderblush4       139   131  134
+lawngreen            124   252    0
+lemonchiffon         255   250  205
+lemonchiffon1        255   250  205
+lemonchiffon2        238   233  191
+lemonchiffon3        205   201  165
+lemonchiffon4        139   137  112
+lightblue            173   216  230
+lightblue1           191   239  255
+lightblue2           178   223  238
+lightblue3           154   192  205
+lightblue4           104   131  139
+lightcoral           240   128  128
+lightcyan            224   255  255
+lightcyan1           224   255  255
+lightcyan2           209   238  238
+lightcyan3           180   205  205
+lightcyan4           122   139  139
+lightgoldenrod       238   221  130
+lightgoldenrod1      255   236  139
+lightgoldenrod2      238   220  130
+lightgoldenrod3      205   190  112
+lightgoldenrod4      139   129   76
+lightgoldenrodyellow 250   250  210
+lightgray            211   211  211
+lightgreen           144   238  144
+lightgrey            211   211  211
+lightpink            255   182  193
+lightpink1           255   174  185
+lightpink2           238   162  173
+lightpink3           205   140  149
+lightpink4           139    95  101
+lightsalmon          255   160  122
+lightsalmon1         255   160  122
+lightsalmon2         238   149  114
+lightsalmon3         205   129   98
+lightsalmon4         139    87   66
+lightseagreen         32   178  170
+lightskyblue         135   206  250
+lightskyblue1        176   226  255
+lightskyblue2        164   211  238
+lightskyblue3        141   182  205
+lightskyblue4         96   123  139
+lightslateblue       132   112  255
+lightslategray       119   136  153
+lightslategrey       119   136  153
+lightsteelblue       176   196  222
+lightsteelblue1      202   225  255
+lightsteelblue2      188   210  238
+lightsteelblue3      162   181  205
+lightsteelblue4      110   123  139
+lightyellow          255   255  224
+lightyellow1         255   255  224
+lightyellow2         238   238  209
+lightyellow3         205   205  180
+lightyellow4         139   139  122
+limegreen             50   205   50
+linen                250   240  230
+magenta              255     0  255
+magenta1             255     0  255
+magenta2             238     0  238
+magenta3             205     0  205
+magenta4             139     0  139
+maroon               176    48   96
+maroon1              255    52  179
+maroon2              238    48  167
+maroon3              205    41  144
+maroon4              139    28   98
+mediumaquamarine     102   205  170
+mediumblue             0     0  205
+mediumorchid         186    85  211
+mediumorchid1        224   102  255
+mediumorchid2        209    95  238
+mediumorchid3        180    82  205
+mediumorchid4        122    55  139
+mediumpurple         147   112  219
+mediumpurple1        171   130  255
+mediumpurple2        159   121  238
+mediumpurple3        137   104  205
+mediumpurple4         93    71  139
+mediumseagreen        60   179  113
+mediumslateblue      123   104  238
+mediumspringgreen      0   250  154
+mediumturquoise       72   209  204
+mediumvioletred      199    21  133
+midnightblue          25    25  112
+mintcream            245   255  250
+mistyrose            255   228  225
+mistyrose1           255   228  225
+mistyrose2           238   213  210
+mistyrose3           205   183  181
+mistyrose4           139   125  123
+moccasin             255   228  181
+navajowhite          255   222  173
+navajowhite1         255   222  173
+navajowhite2         238   207  161
+navajowhite3         205   179  139
+navajowhite4         139   121   94
+navy                   0     0  128
+navyblue               0     0  128
+oldlace              253   245  230
+olivedrab            107   142   35
+olivedrab1           192   255   62
+olivedrab2           179   238   58
+olivedrab3           154   205   50
+olivedrab4           105   139   34
+orange               255   165    0
+orange1              255   165    0
+orange2              238   154    0
+orange3              205   133    0
+orange4              139    90    0
+orangered            255    69    0
+orangered1           255    69    0
+orangered2           238    64    0
+orangered3           205    55    0
+orangered4           139    37    0
+orchid               218   112  214
+orchid1              255   131  250
+orchid2              238   122  233
+orchid3              205   105  201
+orchid4              139    71  137
+palegoldenrod        238   232  170
+palegreen            152   251  152
+palegreen1           154   255  154
+palegreen2           144   238  144
+palegreen3           124   205  124
+palegreen4            84   139   84
+paleturquoise        175   238  238
+paleturquoise1       187   255  255
+paleturquoise2       174   238  238
+paleturquoise3       150   205  205
+paleturquoise4       102   139  139
+palevioletred        219   112  147
+palevioletred1       255   130  171
+palevioletred2       238   121  159
+palevioletred3       205   104  137
+palevioletred4       139    71   93
+papayawhip           255   239  213
+peachpuff            255   218  185
+peachpuff1           255   218  185
+peachpuff2           238   203  173
+peachpuff3           205   175  149
+peachpuff4           139   119  101
+peru                 205   133   63
+pink                 255   192  203
+pink1                255   181  197
+pink2                238   169  184
+pink3                205   145  158
+pink4                139    99  108
+plum                 221   160  221
+plum1                255   187  255
+plum2                238   174  238
+plum3                205   150  205
+plum4                139   102  139
+powderblue           176   224  230
+purple               160    32  240
+purple1              155    48  255
+purple2              145    44  238
+purple3              125    38  205
+purple4               85    26  139
+red                  255     0    0
+red1                 255     0    0
+red2                 238     0    0
+red3                 205     0    0
+red4                 139     0    0
+rosybrown            188   143  143
+rosybrown1           255   193  193
+rosybrown2           238   180  180
+rosybrown3           205   155  155
+rosybrown4           139   105  105
+royalblue             65   105  225
+royalblue1            72   118  255
+royalblue2            67   110  238
+royalblue3            58    95  205
+royalblue4            39    64  139
+saddlebrown          139    69   19
+salmon               250   128  114
+salmon1              255   140  105
+salmon2              238   130   98
+salmon3              205   112   84
+salmon4              139    76   57
+sandybrown           244   164   96
+seagreen              46   139   87
+seagreen1             84   255  159
+seagreen2             78   238  148
+seagreen3             67   205  128
+seagreen4             46   139   87
+seashell             255   245  238
+seashell1            255   245  238
+seashell2            238   229  222
+seashell3            205   197  191
+seashell4            139   134  130
+sienna               160    82   45
+sienna1              255   130   71
+sienna2              238   121   66
+sienna3              205   104   57
+sienna4              139    71   38
+skyblue              135   206  235
+skyblue1             135   206  255
+skyblue2             126   192  238
+skyblue3             108   166  205
+skyblue4              74   112  139
+slateblue            106    90  205
+slateblue1           131   111  255
+slateblue2           122   103  238
+slateblue3           105    89  205
+slateblue4            71    60  139
+slategray            112   128  144
+slategray1           198   226  255
+slategray2           185   211  238
+slategray3           159   182  205
+slategray4           108   123  139
+slategrey            112   128  144
+snow                 255   250  250
+snow1                255   250  250
+snow2                238   233  233
+snow3                205   201  201
+snow4                139   137  137
+springgreen            0   255  127
+springgreen1           0   255  127
+springgreen2           0   238  118
+springgreen3           0   205  102
+springgreen4           0   139   69
+steelblue             70   130  180
+steelblue1            99   184  255
+steelblue2            92   172  238
+steelblue3            79   148  205
+steelblue4            54   100  139
+tan                  210   180  140
+tan1                 255   165   79
+tan2                 238   154   73
+tan3                 205   133   63
+tan4                 139    90   43
+thistle              216   191  216
+thistle1             255   225  255
+thistle2             238   210  238
+thistle3             205   181  205
+thistle4             139   123  139
+tomato               255    99   71
+tomato1              255    99   71
+tomato2              238    92   66
+tomato3              205    79   57
+tomato4              139    54   38
+turquoise             64   224  208
+turquoise1             0   245  255
+turquoise2             0   229  238
+turquoise3             0   197  205
+turquoise4             0   134  139
+violet               238   130  238
+violetred            208    32  144
+violetred1           255    62  150
+violetred2           238    58  140
+violetred3           205    50  120
+violetred4           139    34   82
+wheat                245   222  179
+wheat1               255   231  186
+wheat2               238   216  174
+wheat3               205   186  150
+wheat4               139   126  102
+whitesmoke           245   245  245
+yellow               255   255    0
+yellow1              255   255    0
+yellow2              238   238    0
+yellow3              205   205    0
+yellow4              139   139    0
+yellowgreen          154   205   50
+> 
+> ccodes <- c(256^(2:0) %*% crgb)  # = internal codes
+> ## How many names are 'aliases' of each other:
+> table(tcc <- table(ccodes))
+
+  1   2   3   4 
+352 146   3   1 
+> length(uc <- unique(sort(ccodes))) # 502
+[1] 502
+> ## All the multiply named colors:
+> mult <- uc[tcc >= 2]
+> cl <- lapply(mult, function(m) cc[ccodes == m])
+> names(cl) <- apply(col2rgb(sapply(cl, function(x)x[1])),
++                    2, function(n)paste(n, collapse = ","))
+> utils::str(cl)
+List of 150
+ $ 0,0,0      : chr [1:3] "black" "gray0" "grey0"
+ $ 0,0,128    : chr [1:2] "navy" "navyblue"
+ $ 0,0,139    : chr [1:2] "blue4" "darkblue"
+ $ 0,0,205    : chr [1:2] "blue3" "mediumblue"
+ $ 0,0,255    : chr [1:2] "blue" "blue1"
+ $ 0,139,139  : chr [1:2] "cyan4" "darkcyan"
+ $ 0,191,255  : chr [1:2] "deepskyblue" "deepskyblue1"
+ $ 0,255,0    : chr [1:2] "green" "green1"
+ $ 0,255,127  : chr [1:2] "springgreen" "springgreen1"
+ $ 0,255,255  : chr [1:2] "cyan" "cyan1"
+ $ 3,3,3      : chr [1:2] "gray1" "grey1"
+ $ 5,5,5      : chr [1:2] "gray2" "grey2"
+ $ 8,8,8      : chr [1:2] "gray3" "grey3"
+ $ 10,10,10   : chr [1:2] "gray4" "grey4"
+ $ 13,13,13   : chr [1:2] "gray5" "grey5"
+ $ 15,15,15   : chr [1:2] "gray6" "grey6"
+ $ 18,18,18   : chr [1:2] "gray7" "grey7"
+ $ 20,20,20   : chr [1:2] "gray8" "grey8"
+ $ 23,23,23   : chr [1:2] "gray9" "grey9"
+ $ 26,26,26   : chr [1:2] "gray10" "grey10"
+ $ 28,28,28   : chr [1:2] "gray11" "grey11"
+ $ 30,144,255 : chr [1:2] "dodgerblue" "dodgerblue1"
+ $ 31,31,31   : chr [1:2] "gray12" "grey12"
+ $ 33,33,33   : chr [1:2] "gray13" "grey13"
+ $ 36,36,36   : chr [1:2] "gray14" "grey14"
+ $ 38,38,38   : chr [1:2] "gray15" "grey15"
+ $ 41,41,41   : chr [1:2] "gray16" "grey16"
+ $ 43,43,43   : chr [1:2] "gray17" "grey17"
+ $ 46,46,46   : chr [1:2] "gray18" "grey18"
+ $ 46,139,87  : chr [1:2] "seagreen" "seagreen4"
+ $ 47,79,79   : chr [1:2] "darkslategray" "darkslategrey"
+ $ 48,48,48   : chr [1:2] "gray19" "grey19"
+ $ 51,51,51   : chr [1:2] "gray20" "grey20"
+ $ 54,54,54   : chr [1:2] "gray21" "grey21"
+ $ 56,56,56   : chr [1:2] "gray22" "grey22"
+ $ 59,59,59   : chr [1:2] "gray23" "grey23"
+ $ 61,61,61   : chr [1:2] "gray24" "grey24"
+ $ 64,64,64   : chr [1:2] "gray25" "grey25"
+ $ 66,66,66   : chr [1:2] "gray26" "grey26"
+ $ 69,69,69   : chr [1:2] "gray27" "grey27"
+ $ 71,71,71   : chr [1:2] "gray28" "grey28"
+ $ 74,74,74   : chr [1:2] "gray29" "grey29"
+ $ 77,77,77   : chr [1:2] "gray30" "grey30"
+ $ 79,79,79   : chr [1:2] "gray31" "grey31"
+ $ 82,82,82   : chr [1:2] "gray32" "grey32"
+ $ 84,84,84   : chr [1:2] "gray33" "grey33"
+ $ 87,87,87   : chr [1:2] "gray34" "grey34"
+ $ 89,89,89   : chr [1:2] "gray35" "grey35"
+ $ 92,92,92   : chr [1:2] "gray36" "grey36"
+ $ 94,94,94   : chr [1:2] "gray37" "grey37"
+ $ 97,97,97   : chr [1:2] "gray38" "grey38"
+ $ 99,99,99   : chr [1:2] "gray39" "grey39"
+ $ 102,102,102: chr [1:2] "gray40" "grey40"
+ $ 102,205,170: chr [1:2] "aquamarine3" "mediumaquamarine"
+ $ 105,105,105: chr [1:4] "dimgray" "dimgrey" "gray41" "grey41"
+ $ 107,107,107: chr [1:2] "gray42" "grey42"
+ $ 110,110,110: chr [1:2] "gray43" "grey43"
+ $ 112,112,112: chr [1:2] "gray44" "grey44"
+ $ 112,128,144: chr [1:2] "slategray" "slategrey"
+ $ 115,115,115: chr [1:2] "gray45" "grey45"
+ $ 117,117,117: chr [1:2] "gray46" "grey46"
+ $ 119,136,153: chr [1:2] "lightslategray" "lightslategrey"
+ $ 120,120,120: chr [1:2] "gray47" "grey47"
+ $ 122,122,122: chr [1:2] "gray48" "grey48"
+ $ 125,125,125: chr [1:2] "gray49" "grey49"
+ $ 127,127,127: chr [1:2] "gray50" "grey50"
+ $ 127,255,0  : chr [1:2] "chartreuse" "chartreuse1"
+ $ 127,255,212: chr [1:2] "aquamarine" "aquamarine1"
+ $ 130,130,130: chr [1:2] "gray51" "grey51"
+ $ 133,133,133: chr [1:2] "gray52" "grey52"
+ $ 135,135,135: chr [1:2] "gray53" "grey53"
+ $ 138,138,138: chr [1:2] "gray54" "grey54"
+ $ 139,0,0    : chr [1:2] "darkred" "red4"
+ $ 139,0,139  : chr [1:2] "darkmagenta" "magenta4"
+ $ 139,69,19  : chr [1:2] "chocolate4" "saddlebrown"
+ $ 140,140,140: chr [1:2] "gray55" "grey55"
+ $ 143,143,143: chr [1:2] "gray56" "grey56"
+ $ 144,238,144: chr [1:2] "lightgreen" "palegreen2"
+ $ 145,145,145: chr [1:2] "gray57" "grey57"
+ $ 148,148,148: chr [1:2] "gray58" "grey58"
+ $ 150,150,150: chr [1:2] "gray59" "grey59"
+ $ 153,153,153: chr [1:2] "gray60" "grey60"
+ $ 154,205,50 : chr [1:2] "olivedrab3" "yellowgreen"
+ $ 156,156,156: chr [1:2] "gray61" "grey61"
+ $ 158,158,158: chr [1:2] "gray62" "grey62"
+ $ 161,161,161: chr [1:2] "gray63" "grey63"
+ $ 163,163,163: chr [1:2] "gray64" "grey64"
+ $ 166,166,166: chr [1:2] "gray65" "grey65"
+ $ 168,168,168: chr [1:2] "gray66" "grey66"
+ $ 169,169,169: chr [1:2] "darkgray" "darkgrey"
+ $ 171,171,171: chr [1:2] "gray67" "grey67"
+ $ 173,173,173: chr [1:2] "gray68" "grey68"
+ $ 176,176,176: chr [1:2] "gray69" "grey69"
+ $ 179,179,179: chr [1:2] "gray70" "grey70"
+ $ 181,181,181: chr [1:2] "gray71" "grey71"
+ $ 184,184,184: chr [1:2] "gray72" "grey72"
+ $ 186,186,186: chr [1:2] "gray73" "grey73"
+ $ 189,189,189: chr [1:2] "gray74" "grey74"
+ $ 190,190,190: chr [1:2] "gray" "grey"
+  [list output truncated]
+> ## Not run: 
+> ##D  if(require(xgobi)) { ## Look at the color cube dynamically :
+> ##D    tc <- t(crgb[, !duplicated(ccodes)])
+> ##D    table(is.gray <- tc[,1] == tc[,2] & tc[,2] == tc[,3])  # (397, 105)
+> ##D    xgobi(tc, color = c("gold", "gray")[1 + is.gray])
+> ##D  }
+> ## End(Not run)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("colorRamp")
+> ### * colorRamp
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: colorRamp
+> ### Title: Color interpolation
+> ### Aliases: colorRamp colorRampPalette
+> ### Keywords: color
+> 
+> ### ** Examples
+> 
+> ## Both return a *function* :
+> colorRamp(c("red", "green"))( (0:4)/4 ) ## (x) , x in [0,1]
+       [,1]   [,2] [,3]
+[1,] 255.00   0.00    0
+[2,] 191.25  63.75    0
+[3,] 127.50 127.50    0
+[4,]  63.75 191.25    0
+[5,]   0.00 255.00    0
+> colorRampPalette(c("blue", "red"))( 4 ) ## (n)
+[1] "#0000FF" "#5500AA" "#AA0055" "#FF0000"
+> ## a ramp in opacity of blue values
+> colorRampPalette(c(rgb(0,0,1,1), rgb(0,0,1,0)), alpha = TRUE)(8)
+[1] "#0000FFFF" "#0000FFDA" "#0000FFB6" "#0000FF91" "#0000FF6D" "#0000FF48"
+[7] "#0000FF24" "#0000FF00"
+> 
+> require(graphics)
+> 
+> ## Here space="rgb" gives palettes that vary only in saturation,
+> ## as intended.
+> ## With space="Lab" the steps are more uniform, but the hues
+> ## are slightly purple.
+> filled.contour(volcano,
++                color.palette =
++                    colorRampPalette(c("red", "white", "blue")),
++                asp = 1)
+> filled.contour(volcano,
++                color.palette =
++                    colorRampPalette(c("red", "white", "blue"),
++                                     space = "Lab"),
++                asp = 1)
+> 
+> ## Interpolating a 'sequential' ColorBrewer palette
+> YlOrBr <- c("#FFFFD4", "#FED98E", "#FE9929", "#D95F0E", "#993404")
+> filled.contour(volcano,
++                color.palette = colorRampPalette(YlOrBr, space = "Lab"),
++                asp = 1)
+> filled.contour(volcano,
++                color.palette = colorRampPalette(YlOrBr, space = "Lab",
++                                                 bias = 0.5),
++                asp = 1)
+> 
+> ## 'jet.colors' is "as in Matlab"
+> ## (and hurting the eyes by over-saturation)
+> jet.colors <-
++   colorRampPalette(c("#00007F", "blue", "#007FFF", "cyan",
++                      "#7FFF7F", "yellow", "#FF7F00", "red", "#7F0000"))
+> filled.contour(volcano, color.palette = jet.colors, asp = 1)
+> 
+> ## space="Lab" helps when colors don't form a natural sequence
+> m <- outer(1:20,1:20,function(x,y) sin(sqrt(x*y)/3))
+> rgb.palette <- colorRampPalette(c("red", "orange", "blue"),
++                                 space = "rgb")
+> Lab.palette <- colorRampPalette(c("red", "orange", "blue"),
++                                 space = "Lab")
+> filled.contour(m, col = rgb.palette(20))
+> filled.contour(m, col = Lab.palette(20))
+> 
+> 
+> 
+> cleanEx()
+> nameEx("colors")
+> ### * colors
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: colors
+> ### Title: Color Names
+> ### Aliases: colors colours
+> ### Keywords: color dplot sysdata
+> 
+> ### ** Examples
+> 
+> cl <- colors()
+> length(cl); cl[1:20]
+[1] 657
+ [1] "white"         "aliceblue"     "antiquewhite"  "antiquewhite1"
+ [5] "antiquewhite2" "antiquewhite3" "antiquewhite4" "aquamarine"   
+ [9] "aquamarine1"   "aquamarine2"   "aquamarine3"   "aquamarine4"  
+[13] "azure"         "azure1"        "azure2"        "azure3"       
+[17] "azure4"        "beige"         "bisque"        "bisque1"      
+> 
+> length(cl. <- colors(TRUE))
+[1] 502
+> ## only 502 of the 657 named ones
+> 
+> ## ----------- Show all named colors and more:
+> demo("colors")
+
+
+	demo(colors)
+	---- ~~~~~~
+
+> ### ----------- Show (almost) all named colors ---------------------
+> 
+> ## 1) with traditional 'graphics' package:
+> showCols1 <- function(bg = "gray", cex = 0.75, srt = 30) {
++     m <- ceiling(sqrt(n <- length(cl <- colors())))
++     length(cl) <- m*m; cm <- matrix(cl, m)
++     ##
++     require("graphics")
++     op <- par(mar=rep(0,4), ann=FALSE, bg = bg); on.exit(par(op))
++     plot(1:m,1:m, type="n", axes=FALSE)
++     text(col(cm), rev(row(cm)), cm,  col = cl, cex=cex, srt=srt)
++ }
+
+> showCols1()
+
+> ## 2) with 'grid' package:
+> showCols2 <- function(bg = "grey", cex = 0.75, rot = 30) {
++     m <- ceiling(sqrt(n <- length(cl <- colors())))
++     length(cl) <- m*m; cm <- matrix(cl, m)
++     ##
++     require("grid")
++     grid.newpage(); vp <- viewport(width = .92, height = .92)
++     grid.rect(gp=gpar(fill=bg))
++     grid.text(cm, x = col(cm)/m, y = rev(row(cm))/m, rot = rot,
++               vp=vp, gp=gpar(cex = cex, col = cm))
++ }
+
+> showCols2()
+Loading required package: grid
+
+> showCols2(bg = "gray33")
+
+> ###
+> 
+> ##' @title Comparing Colors
+> ##' @param col
+> ##' @param nrow
+> ##' @param ncol
+> ##' @param txt.col
+> ##' @return the grid layout, invisibly
+> ##' @author Marius Hofert, originally
+> plotCol <- function(col, nrow=1, ncol=ceiling(length(col) / nrow),
++                     txt.col="black") {
++     stopifnot(nrow >= 1, ncol >= 1)
++     if(length(col) > nrow*ncol)
++         warning("some colors will not be shown")
++     require(grid)
++     grid.newpage()
++     gl <- grid.layout(nrow, ncol)
++     pushViewport(viewport(layout=gl))
++     ic <- 1
++     for(i in 1:nrow) {
++         for(j in 1:ncol) {
++             pushViewport(viewport(layout.pos.row=i, layout.pos.col=j))
++             grid.rect(gp= gpar(fill=col[ic]))
++             grid.text(col[ic], gp=gpar(col=txt.col))
++             upViewport()
++             ic <- ic+1
++         }
++     }
++     upViewport()
++     invisible(gl)
++ }
+
+> ## A Chocolate Bar of colors:
+> plotCol(c("#CC8C3C", paste0("chocolate", 2:4),
++           paste0("darkorange", c("",1:2)), paste0("darkgoldenrod", 1:2),
++           "orange", "orange1", "sandybrown", "tan1", "tan2"),
++         nrow=2)
+
+> ##' Find close R colors() to a given color {original by Marius Hofert)
+> ##' using Euclidean norm in (HSV / RGB / ...) color space
+> nearRcolor <- function(rgb, cSpace = c("hsv", "rgb255", "Luv", "Lab"),
++                        dist = switch(cSpace, "hsv" = 0.10, "rgb255" = 30,
++                        "Luv" = 15, "Lab" = 12))
++ {
++     if(is.character(rgb)) rgb <- col2rgb(rgb)
++     stopifnot(length(rgb <- as.vector(rgb)) == 3)
++     Rcol <- col2rgb(.cc <- colors())
++     uniqC <- !duplicated(t(Rcol)) # gray9 == grey9 (etc)
++     Rcol <- Rcol[, uniqC] ; .cc <- .cc[uniqC]
++     cSpace <- match.arg(cSpace)
++     convRGB2 <- function(Rgb, to)
++         t(convertColor(t(Rgb), from="sRGB", to=to, scale.in=255))
++     ## the transformation,  rgb{0..255} --> cSpace :
++     TransF <- switch(cSpace,
++                      "rgb255" = identity,
++                      "hsv" = rgb2hsv,
++                      "Luv" = function(RGB) convRGB2(RGB, "Luv"),
++                      "Lab" = function(RGB) convRGB2(RGB, "Lab"))
++     d <- sqrt(colSums((TransF(Rcol) - as.vector(TransF(rgb)))^2))
++     iS <- sort.list(d[near <- d <= dist])# sorted: closest first
++     setNames(.cc[near][iS], format(zapsmall(d[near][iS]), digits=3))
++ }
+
+> nearRcolor(col2rgb("tan2"), "rgb")
+         0.0         21.1         25.8         29.5 
+      "tan2"       "tan1" "sandybrown"    "sienna1" 
+
+> nearRcolor(col2rgb("tan2"), "hsv")
+      0.0000       0.0410       0.0618       0.0638       0.0667       0.0766 
+      "tan2"    "sienna2"     "coral2"    "tomato2"       "tan1"      "coral" 
+      0.0778       0.0900       0.0912       0.0918 
+   "sienna1" "sandybrown"     "coral1"     "tomato" 
+
+> nearRcolor(col2rgb("tan2"), "Luv")
+        0.00         7.42         7.48        12.41        13.69 
+      "tan2"       "tan1" "sandybrown"    "orange3"    "orange2" 
+
+> nearRcolor(col2rgb("tan2"), "Lab")
+        0.00         5.56         8.08        11.31 
+      "tan2"       "tan1" "sandybrown"       "peru" 
+
+> nearRcolor("#334455")
+         0.0867 
+"darkslategray" 
+
+> ## Now, consider choosing a color by looking in the
+> ## neighborhood of one you know :
+> 
+> plotCol(nearRcolor("deepskyblue", "rgb", dist=50))
+
+> plotCol(nearRcolor("deepskyblue", dist=.1))
+
+> plotCol(nearRcolor("tomato", "rgb", dist= 50), nrow=3)
+
+> plotCol(nearRcolor("tomato", "hsv", dist=.12), nrow=3)
+
+> plotCol(nearRcolor("tomato", "Luv", dist= 25), nrow=3)
+
+> plotCol(nearRcolor("tomato", "Lab", dist= 18), nrow=3)
+> ## -----------
+> 
+> 
+> 
+> cleanEx()
+
+detaching ‘package:grid’
+
+> nameEx("contourLines")
+> ### * contourLines
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: contourLines
+> ### Title: Calculate Contour Lines
+> ### Aliases: contourLines
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> x <- 10*1:nrow(volcano)
+> y <- 10*1:ncol(volcano)
+> cl <- contourLines(x, y, volcano)
+> ## summarize the sizes of each the contour lines :
+> cbind(lev = vapply(cl, `[[`, .5, "level"),
++        n  = vapply(cl, function(l) length(l$x), 1))
+      lev   n
+ [1,] 100  47
+ [2,] 100  16
+ [3,] 100  11
+ [4,] 110  45
+ [5,] 110  48
+ [6,] 110 126
+ [7,] 110  14
+ [8,] 120 270
+ [9,] 130 259
+[10,] 140 245
+[11,] 150 207
+[12,] 150  13
+[13,] 160 165
+[14,] 160  31
+[15,] 170 169
+[16,] 170   5
+[17,] 170  21
+[18,] 180 105
+[19,] 180  15
+[20,] 190  49
+> 
+> z <- outer(-9:25, -9:25)
+> pretty(range(z), 10) # -300 -200 ... 600 700
+ [1] -300 -200 -100    0  100  200  300  400  500  600  700
+> utils::str(c2 <- contourLines(z))
+List of 12
+ $ :List of 3
+  ..$ level: num -200
+  ..$ x    : num [1:4] 0 0.00895 0.01961 0.02844
+  ..$ y    : num [1:4] 0.918 0.941 0.971 1
+ $ :List of 3
+  ..$ level: num -200
+  ..$ x    : num [1:4] 0.918 0.941 0.971 1
+  ..$ y    : num [1:4] 0 0.00895 0.01961 0.02844
+ $ :List of 3
+  ..$ level: num -100
+  ..$ x    : num [1:19] 0 0.0196 0.0294 0.0385 0.0546 ...
+  ..$ y    : num [1:19] 0.592 0.618 0.632 0.647 0.676 ...
+ $ :List of 3
+  ..$ level: num -100
+  ..$ x    : num [1:19] 0.592 0.618 0.632 0.647 0.676 ...
+  ..$ y    : num [1:19] 0 0.0196 0.0294 0.0385 0.0546 ...
+ $ :List of 3
+  ..$ level: num 0
+  ..$ x    : num [1:34] 0 0.0294 0.0588 0.0882 0.1176 ...
+  ..$ y    : num [1:34] 0.267 0.268 0.268 0.268 0.269 ...
+ $ :List of 3
+  ..$ level: num 0
+  ..$ x    : num [1:34] 0.267 0.268 0.268 0.268 0.269 ...
+  ..$ y    : num [1:34] 0 0.0294 0.0588 0.0882 0.1176 ...
+ $ :List of 3
+  ..$ level: num 100
+  ..$ x    : num [1:44] 1 0.995 0.971 0.941 0.912 ...
+  ..$ y    : num [1:44] 0.381 0.382 0.387 0.393 0.398 ...
+ $ :List of 3
+  ..$ level: num 200
+  ..$ x    : num [1:36] 1 0.997 0.971 0.941 0.918 ...
+  ..$ y    : num [1:36] 0.499 0.5 0.51 0.52 0.529 ...
+ $ :List of 3
+  ..$ level: num 300
+  ..$ x    : num [1:28] 1 0.998 0.971 0.943 0.941 ...
+  ..$ y    : num [1:28] 0.617 0.618 0.632 0.647 0.648 ...
+ $ :List of 3
+  ..$ level: num 400
+  ..$ x    : num [1:20] 1 0.999 0.971 0.957 0.941 ...
+  ..$ y    : num [1:20] 0.734 0.735 0.755 0.765 0.776 ...
+ $ :List of 3
+  ..$ level: num 500
+  ..$ x    : num [1:12] 1 0.999 0.971 0.965 0.941 ...
+  ..$ y    : num [1:12] 0.852 0.853 0.877 0.882 0.904 ...
+ $ :List of 3
+  ..$ level: num 600
+  ..$ x    : num [1:4] 1 0.999 0.971 0.97
+  ..$ y    : num [1:4] 0.97 0.971 0.999 1
+>    # no segments for {-300, 700};
+>    #  2 segments for {-200, -100, 0}
+>    #  1 segment  for  100:600
+> 
+> 
+> 
+> cleanEx()
+> nameEx("convertColor")
+> ### * convertColor
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: convertColor
+> ### Title: Convert between Colour Spaces
+> ### Aliases: convertColor colorspaces
+> ### Keywords: color
+> 
+> ### ** Examples
+> 
+> ## The displayable colors from four planes of Lab space
+> ab <- expand.grid(a = (-10:15)*10,
++                   b = (-15:10)*10)
+> require(graphics); require(stats) # for na.omit
+> par(mfrow = c(2, 2), mar = .1+c(3, 3, 3, .5), mgp = c(2,  .8,  0))
+> 
+> Lab <- cbind(L = 20, ab)
+> srgb <- convertColor(Lab, from = "Lab", to = "sRGB", clip = NA)
+> clipped <- attr(na.omit(srgb), "na.action")
+> srgb[clipped, ] <- 0
+> cols <- rgb(srgb[, 1], srgb[, 2], srgb[, 3])
+> image((-10:15)*10, (-15:10)*10, matrix(1:(26*26), ncol = 26), col = cols,
++   xlab = "a", ylab = "b", main = "Lab: L=20")
+> 
+> Lab <- cbind(L = 40, ab)
+> srgb <- convertColor(Lab, from = "Lab", to = "sRGB", clip = NA)
+> clipped <- attr(na.omit(srgb), "na.action")
+> srgb[clipped, ] <- 0
+> cols <- rgb(srgb[, 1], srgb[, 2], srgb[, 3])
+> image((-10:15)*10, (-15:10)*10, matrix(1:(26*26), ncol = 26), col = cols,
++   xlab = "a", ylab = "b", main = "Lab: L=40")
+> 
+> Lab <- cbind(L = 60, ab)
+> srgb <- convertColor(Lab, from = "Lab", to = "sRGB", clip = NA)
+> clipped <- attr(na.omit(srgb), "na.action")
+> srgb[clipped, ] <- 0
+> cols <- rgb(srgb[, 1], srgb[, 2], srgb[, 3])
+> image((-10:15)*10, (-15:10)*10, matrix(1:(26*26), ncol = 26), col = cols,
++   xlab = "a", ylab = "b", main = "Lab: L=60")
+> 
+> Lab <- cbind(L = 80, ab)
+> srgb <- convertColor(Lab, from = "Lab", to = "sRGB", clip = NA)
+> clipped <- attr(na.omit(srgb), "na.action")
+> srgb[clipped, ] <- 0
+> cols <- rgb(srgb[, 1], srgb[, 2], srgb[, 3])
+> image((-10:15)*10, (-15:10)*10, matrix(1:(26*26), ncol = 26), col = cols,
++   xlab = "a", ylab = "b", main = "Lab: L=80")
+> 
+> cols <- t(col2rgb(palette())); rownames(cols) <- palette(); cols
+        red green blue
+black     0     0    0
+#DF536B 223    83  107
+#61D04F  97   208   79
+#2297E6  34   151  230
+#28E2E5  40   226  229
+#CD0BBC 205    11  188
+#F5C710 245   199   16
+gray62  158   158  158
+> zapsmall(lab <- convertColor(cols, from = "sRGB", to = "Lab", scale.in = 255))
+               L         a         b
+black    0.00000   0.00000   0.00000
+#DF536B 55.16051  56.30900  16.18063
+#61D04F 74.89688 -55.97739  53.00681
+#2297E6 59.98342  -3.54255 -48.62932
+#28E2E5 82.01645 -41.73498 -14.10432
+#CD0BBC 48.23048  79.84315 -42.53326
+#F5C710 82.05072   2.31748  81.63638
+gray62  65.11425   0.00000   0.00000
+> stopifnot(all.equal(cols, # converting back.. getting the original:
++    round(convertColor(lab, from = "Lab", to = "sRGB", scale.out = 255)),
++                     check.attributes = FALSE))
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("densCols")
+> ### * densCols
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: densCols
+> ### Title: Colors for Smooth Density Plots
+> ### Aliases: densCols blues9
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> 
+> cleanEx()
+> nameEx("dev")
+> ### * dev
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: dev
+> ### Title: Control Multiple Devices
+> ### Aliases: dev.cur dev.list dev.next dev.prev dev.off dev.set dev.new
+> ###   graphics.off
+> ### Keywords: device iplot
+> 
+> ### ** Examples
+> 
+> ## Not run: 
+> ##D ## Unix-specific example
+> ##D x11()
+> ##D plot(1:10)
+> ##D x11()
+> ##D plot(rnorm(10))
+> ##D dev.set(dev.prev())
+> ##D abline(0, 1) # through the 1:10 points
+> ##D dev.set(dev.next())
+> ##D abline(h = 0, col = "gray") # for the residual plot
+> ##D dev.set(dev.prev())
+> ##D dev.off(); dev.off() #- close the two X devices
+> ## End(Not run)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("dev.capabilities")
+> ### * dev.capabilities
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: dev.capabilities
+> ### Title: Query Capabilities of the Current Graphics Device
+> ### Aliases: dev.capabilities
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> dev.capabilities()
+$semiTransparency
+[1] TRUE
+
+$transparentBackground
+[1] "semi"
+
+$rasterImage
+[1] "yes"
+
+$capture
+[1] FALSE
+
+$locator
+[1] FALSE
+
+$events
+character(0)
+
+$patterns
+[1] "LinearGradient" "RadialGradient" "TilingPattern" 
+
+$clippingPaths
+[1] TRUE
+
+$masks
+[1] "alpha"     "luminance"
+
+$compositing
+ [1] "multiply"    "screen"      "overlay"     "darken"      "lighten"    
+ [6] "color.dodge" "color.burn"  "hard.light"  "soft.light"  "difference" 
+[11] "exclusion"  
+
+$transformations
+[1] TRUE
+
+$paths
+[1] TRUE
+
+> 
+> 
+> 
+> cleanEx()
+> nameEx("dev.interactive")
+> ### * dev.interactive
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: dev.interactive
+> ### Title: Is the Current Graphics Device Interactive?
+> ### Aliases: dev.interactive deviceIsInteractive
+> ### Keywords: device
+> 
+> ### ** Examples
+> 
+> dev.interactive()
+[1] FALSE
+> print(deviceIsInteractive(NULL))
+[1] "X11"      "X11cairo" "quartz"   "windows"  "JavaGD"   "CairoWin" "CairoX11"
+> 
+> 
+> 
+> cleanEx()
+> nameEx("dev.size")
+> ### * dev.size
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: dev.size
+> ### Title: Find Size of Device Surface
+> ### Aliases: dev.size
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> dev.size("cm")
+[1] 17.78 17.78
+> 
+> 
+> 
+> cleanEx()
+> nameEx("dev2")
+> ### * dev2
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: dev2
+> ### Title: Copy Graphics Between Multiple Devices
+> ### Aliases: dev.copy dev.print dev.copy2eps dev.copy2pdf dev.control
+> ### Keywords: device
+> 
+> ### ** Examples
+> 
+> ## Not run: 
+> ##D x11() # on a Unix-alike
+> ##D plot(rnorm(10), main = "Plot 1")
+> ##D dev.copy(device = x11)
+> ##D mtext("Copy 1", 3)
+> ##D dev.print(width = 6, height = 6, horizontal = FALSE) # prints it
+> ##D dev.off(dev.prev())
+> ##D dev.off()
+> ## End(Not run)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("extendrange")
+> ### * extendrange
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: extendrange
+> ### Title: Extend a Numerical Range by a Small Percentage
+> ### Aliases: extendrange
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> x <- 1:5
+> (r <- range(x))         # 1    5
+[1] 1 5
+> extendrange(x)          # 0.8  5.2
+[1] 0.8 5.2
+> extendrange(x, f= 0.01) # 0.96 5.04
+[1] 0.96 5.04
+> 
+> ## extend more to the right:
+> extendrange(x, f=c(.01,.03)) # 0.96 5.12
+[1] 0.96 5.12
+> 
+> ## Use 'r' if you have it already:
+> stopifnot(identical(extendrange(r = r),
++                     extendrange(x)))
+> 
+> 
+> 
+> cleanEx()
+> nameEx("getGraphicsEvent")
+> ### * getGraphicsEvent
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: getGraphicsEvent
+> ### Title: Wait for a mouse or keyboard event from a graphics window
+> ### Aliases: getGraphicsEvent setGraphicsEventHandlers getGraphicsEventEnv
+> ###   setGraphicsEventEnv
+> ### Keywords: iplot
+> 
+> ### ** Examples
+> 
+> # This currently only works on the Windows, X11(type = "Xlib"), and
+> # X11(type = "cairo") screen devices...
+> ## Not run: 
+> ##D savepar <- par(ask = FALSE)
+> ##D dragplot <- function(..., xlim = NULL, ylim = NULL, xaxs = "r", yaxs = "r") {
+> ##D     plot(..., xlim = xlim, ylim = ylim, xaxs = xaxs, yaxs = yaxs)
+> ##D     startx <- NULL
+> ##D     starty <- NULL
+> ##D     prevx <- NULL
+> ##D     prevy <- NULL
+> ##D     usr <- NULL
+> ##D 
+> ##D     devset <- function()
+> ##D         if (dev.cur() != eventEnv$which) dev.set(eventEnv$which)
+> ##D 
+> ##D     dragmousedown <- function(buttons, x, y) {
+> ##D         startx <<- x
+> ##D         starty <<- y
+> ##D         prevx <<- 0
+> ##D         prevy <<- 0
+> ##D         devset()
+> ##D         usr <<- par("usr")
+> ##D         eventEnv$onMouseMove <- dragmousemove
+> ##D         NULL
+> ##D     }
+> ##D 
+> ##D     dragmousemove <- function(buttons, x, y) {
+> ##D         devset()
+> ##D         deltax <- diff(grconvertX(c(startx, x), "ndc", "user"))
+> ##D         deltay <- diff(grconvertY(c(starty, y), "ndc", "user"))
+> ##D 	if (abs(deltax-prevx) + abs(deltay-prevy) > 0) {
+> ##D 	    plot(..., xlim = usr[1:2]-deltax, xaxs = "i",
+> ##D 		      ylim = usr[3:4]-deltay, yaxs = "i")
+> ##D 	    prevx <<- deltax
+> ##D 	    prevy <<- deltay
+> ##D 	}
+> ##D         NULL
+> ##D     }
+> ##D 
+> ##D     mouseup <- function(buttons, x, y) {
+> ##D     	eventEnv$onMouseMove <- NULL
+> ##D     }	
+> ##D 
+> ##D     keydown <- function(key) {
+> ##D         if (key == "q") return(invisible(1))
+> ##D         eventEnv$onMouseMove <- NULL
+> ##D         NULL
+> ##D     }
+> ##D 
+> ##D     setGraphicsEventHandlers(prompt = "Click and drag, hit q to quit",
+> ##D                      onMouseDown = dragmousedown,
+> ##D                      onMouseUp = mouseup,
+> ##D                      onKeybd = keydown)
+> ##D     eventEnv <- getGraphicsEventEnv()
+> ##D }
+> ##D 
+> ##D dragplot(rnorm(1000), rnorm(1000))
+> ##D getGraphicsEvent()
+> ##D par(savepar)
+> ## End(Not run)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("grSoftVersion")
+> ### * grSoftVersion
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: grSoftVersion
+> ### Title: Report Versions of Graphics Software
+> ### Aliases: grSoftVersion
+> 
+> ### ** Examples
+> 
+> 
+> 
+> 
+> cleanEx()
+> nameEx("gray")
+> ### * gray
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: gray
+> ### Title: Gray Level Specification
+> ### Aliases: gray grey
+> ### Keywords: color
+> 
+> ### ** Examples
+> 
+> gray(0:8 / 8)
+[1] "#000000" "#202020" "#404040" "#606060" "#808080" "#9F9F9F" "#BFBFBF"
+[8] "#DFDFDF" "#FFFFFF"
+> 
+> 
+> 
+> cleanEx()
+> nameEx("gray.colors")
+> ### * gray.colors
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: gray.colors
+> ### Title: Gray Color Palette
+> ### Aliases: gray.colors grey.colors
+> ### Keywords: color
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> pie(rep(1, 12), col = gray.colors(12))
+> barplot(1:12, col = gray.colors(12))
+> 
+> 
+> 
+> cleanEx()
+> nameEx("hcl")
+> ### * hcl
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: hcl
+> ### Title: HCL Color Specification
+> ### Aliases: hcl
+> ### Keywords: color dplot
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> # The Foley and Van Dam PhD Data.
+> csd <- matrix(c( 4,2,4,6, 4,3,1,4, 4,7,7,1,
++                  0,7,3,2, 4,5,3,2, 5,4,2,2,
++                  3,1,3,0, 4,4,6,7, 1,10,8,7,
++                  1,5,3,2, 1,5,2,1, 4,1,4,3,
++                  0,3,0,6, 2,1,5,5), nrow = 4)
+> 
+> csphd <- function(colors)
++   barplot(csd, col = colors, ylim = c(0,30),
++           names.arg = 72:85, xlab = "Year", ylab = "Students",
++           legend.text = c("Winter", "Spring", "Summer", "Fall"),
++           main = "Computer Science PhD Graduates", las = 1)
+> 
+> # The Original (Metaphorical) Colors (Ouch!)
+> csphd(c("blue", "green", "yellow", "orange"))
+> 
+> # A Color Tetrad (Maximal Color Differences)
+> csphd(hcl(h = c(30, 120, 210, 300)))
+> 
+> # Same, but lighter and less colorful
+> # Turn off automatic correction to make sure
+> # that we have defined real colors.
+> csphd(hcl(h = c(30, 120, 210, 300),
++           c = 20, l = 90, fixup = FALSE))
+> 
+> # Analogous Colors
+> # Good for those with red/green color confusion
+> csphd(hcl(h = seq(60, 240, by = 60)))
+> 
+> # Metaphorical Colors
+> csphd(hcl(h = seq(210, 60, length.out = 4)))
+> 
+> # Cool Colors
+> csphd(hcl(h = seq(120, 0, length.out = 4) + 150))
+> 
+> # Warm Colors
+> csphd(hcl(h = seq(120, 0, length.out = 4) - 30))
+> 
+> # Single Color
+> hist(stats::rnorm(1000), col = hcl(240))
+> 
+> ## Exploring the hcl() color space {in its mapping to R's sRGB colors}:
+> demo(hclColors)
+
+
+	demo(hclColors)
+	---- ~~~~~~~~~
+
+> ### ------ hcl() explorations
+> 
+> hcl.wheel <-
++     function(chroma = 35, lums = 0:100, hues = 1:360, asp = 1,
++              p.cex = 0.6, do.label = FALSE, rev.lum = FALSE,
++              fixup = TRUE)
++ {
++     ## Purpose: show chroma "sections" of hcl() color space; see  ?hcl
++     ## ----------------------------------------------------------------------
++     ## Arguments: chroma: can be vector -> multiple plots are done,
++     ##            lums, hues, fixup : all corresponding to hcl()'s args
++     ##            rev.lum: logical indicating if luminance
++     ## 			should go from outer to inner
++     ## ----------------------------------------------------------------------
++     ## Author: Martin Maechler, Date: 24 Jun 2005
++ 
++     require("graphics")
++     stopifnot(is.numeric(lums), lums >= 0, lums <= 100,
++               is.numeric(hues), hues >= 0, hues <= 360,
++               is.numeric(chroma), chroma >= 0, (nch <- length(chroma)) >= 1)
++     if(is.unsorted(hues)) hues <- sort(hues)
++     if(nch > 1) {
++         op <- par(mfrow= n2mfrow(nch), mar = c(0,0,0,0), xpd = TRUE)
++         on.exit(par(op))
++     }
++     for(i.c in 1:nch) {
++         plot(-1:1,-1:1, type="n", axes = FALSE, xlab="",ylab="", asp = asp)
++         ## main = sprintf("hcl(h = <angle>, c = %g)", chroma[i.c]),
++         text(0.4, 0.99, paste("chroma =", format(chroma[i.c])),
++              adj = 0, font = 4)
++         l.s <- (if(rev.lum) rev(lums) else lums) / max(lums) # <= 1
++         for(ang in hues) { # could do all this using outer() instead of for()...
++             a. <- ang * pi/180
++             z.a <- exp(1i * a.)
++             cols <- hcl(ang, c = chroma[i.c], l = lums, fixup = fixup)
++             points(l.s * z.a, pch = 16, col = cols, cex = p.cex)
++             ##if(do."text") : draw the 0,45,90,... angle "lines"
++             if(do.label)
++                 text(z.a*1.05, labels = ang, col = cols[length(cols)/2],
++                      srt = ang)
++         }
++         if(!fixup) ## show the outline
++             lines(exp(1i * hues * pi/180))
++    }
++    invisible()
++ }
+
+> ## and now a few interesting calls :
+> 
+> hcl.wheel() # and watch it redraw when you fiddle with the graphic window
+
+> hcl.wheel(rev.lum= TRUE) # ditto
+
+> hcl.wheel(do.label = TRUE) # ditto
+
+> ## Now watch:
+> hcl.wheel(chroma = c(25,35,45,55))
+
+> hcl.wheel(chroma = seq(10, 90, by = 10), p.cex = 0.4)
+
+> hcl.wheel(chroma = seq(10, 90, by = 10), p.cex = 0.3, fixup = FALSE)
+
+> hcl.wheel(chroma = seq(10, 90, by = 10), p.cex = 0.3, rev.lum = TRUE)
+
+> if(dev.interactive()) # new "graphics window" -- to compare with previous :
++     dev.new()
+
+> hcl.wheel(chroma = seq(10, 90, by = 10), p.cex = 0.3, rev.lum = TRUE, fixup=FALSE)
+> 
+> 
+> 
+> 
+> cleanEx()
+> nameEx("hsv")
+> ### * hsv
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: hsv
+> ### Title: HSV Color Specification
+> ### Aliases: hsv
+> ### Keywords: color dplot
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> hsv(.5,.5,.5)
+[1] "#408080"
+> 
+> ## Red tones:
+> n <- 20;  y <- -sin(3*pi*((1:n)-1/2)/n)
+> op <- par(mar = rep(1.5, 4))
+> plot(y, axes = FALSE, frame.plot = TRUE,
++      xlab = "", ylab = "", pch = 21, cex = 30,
++      bg = rainbow(n, start = .85, end = .1),
++      main = "Red tones")
+> par(op)
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("make.rgb")
+> ### * make.rgb
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: make.rgb
+> ### Title: Create colour spaces
+> ### Aliases: make.rgb colorConverter
+> ### Keywords: color
+> 
+> ### ** Examples
+> 
+> (pal <- make.rgb(red =   c(0.6400, 0.3300),
++                  green = c(0.2900, 0.6000),
++                  blue =  c(0.1500, 0.0600),
++                  name = "PAL/SECAM RGB"))
+Color space converter: PAL/SECAM RGB
+Reference white: D65
+display gamma = 2.2
+> 
+> ## converter for sRGB in #rrggbb format
+> hexcolor <- colorConverter(toXYZ = function(hex, ...) {
++                             rgb <- t(col2rgb(hex))/255
++                             colorspaces$sRGB$toXYZ(rgb, ...) },
++                            fromXYZ = function(xyz, ...) {
++                               rgb <- colorspaces$sRGB$fromXYZ(xyz, ...)
++                               rgb <- round(rgb, 5)
++                               if (min(rgb) < 0 || max(rgb) > 1)
++                                    as.character(NA)
++                               else rgb(rgb[1], rgb[2], rgb[3])},
++                            white = "D65", name = "#rrggbb")
+> 
+> (cols <- t(col2rgb(palette())))
+     red green blue
+[1,]   0     0    0
+[2,] 223    83  107
+[3,]  97   208   79
+[4,]  34   151  230
+[5,]  40   226  229
+[6,] 205    11  188
+[7,] 245   199   16
+[8,] 158   158  158
+> zapsmall(luv <- convertColor(cols, from = "sRGB", to = "Luv", scale.in = 255))
+            L         u         v
+[1,]  0.00000   0.00000   0.00000
+[2,] 55.16051  99.94871   8.95299
+[3,] 74.89688 -51.95694  73.49647
+[4,] 59.98342 -36.43653 -76.74275
+[5,] 82.01645 -61.64283 -15.85619
+[6,] 48.23048  74.70628 -73.95136
+[7,] 82.05072  40.07525  84.92489
+[8,] 65.11425   0.00000   0.00000
+> (hex <- convertColor(luv, from = "Luv",  to = hexcolor, scale.out = NULL))
+     [,1]     
+[1,] "#000000"
+[2,] "#DF536B"
+[3,] "#61D04F"
+[4,] "#2297E6"
+[5,] "#28E2E5"
+[6,] "#CD0BBC"
+[7,] "#F5C710"
+[8,] "#9E9E9E"
+> 
+> ## must make hex a matrix before using it
+> (cc <- round(convertColor(as.matrix(hex), from = hexcolor, to = "sRGB",
++                           scale.in = NULL, scale.out = 255)))
+     [,1] [,2] [,3]
+[1,]    0    0    0
+[2,]  223   83  107
+[3,]   97  208   79
+[4,]   34  151  230
+[5,]   40  226  229
+[6,]  205   11  188
+[7,]  245  199   16
+[8,]  158  158  158
+> stopifnot(cc == cols)
+> 
+> ## Internally vectorized version of hexcolor, notice the use
+> ## of `vectorized = TRUE`:
+> 
+> hexcolorv <- colorConverter(toXYZ = function(hex, ...) {
++                             rgb <- t(col2rgb(hex))/255
++                             colorspaces$sRGB$toXYZ(rgb, ...) },
++                            fromXYZ = function(xyz, ...) {
++                               rgb <- colorspaces$sRGB$fromXYZ(xyz, ...)
++                               rgb <- round(rgb, 5)
++                               oob <- pmin(rgb[,1],rgb[,2],rgb[,3]) < 0 |
++                                      pmax(rgb[,1],rgb[,2],rgb[,3]) > 0
++                               res <- rep(NA_character_, nrow(rgb))
++                               res[!oob] <- rgb(rgb[!oob,,drop=FALSE])},
++                            white = "D65", name = "#rrggbb",
++                            vectorized=TRUE)
+> (ccv <- round(convertColor(as.matrix(hex), from = hexcolor, to = "sRGB",
++                            scale.in = NULL, scale.out = 255)))
+     [,1] [,2] [,3]
+[1,]    0    0    0
+[2,]  223   83  107
+[3,]   97  208   79
+[4,]   34  151  230
+[5,]   40  226  229
+[6,]  205   11  188
+[7,]  245  199   16
+[8,]  158  158  158
+> stopifnot(ccv == cols)
+> 
+> 
+> 
+> 
+> cleanEx()
+> nameEx("n2mfrow")
+> ### * n2mfrow
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: n2mfrow
+> ### Title: Compute Default 'mfrow' From Number of Plots
+> ### Aliases: n2mfrow
+> ### Keywords: dplot utilities
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> n2mfrow(8) # 3 x 3
+[1] 3 3
+> 
+> n <- 5 ; x <- seq(-2, 2, length.out = 51)
+> ## suppose now that 'n' is not known {inside function}
+> op <- par(mfrow = n2mfrow(n))
+> for (j in 1:n)
++    plot(x, x^j, main = substitute(x^ exp, list(exp = j)), type = "l",
++    col = "blue")
+> 
+> sapply(1:14, n2mfrow)
+     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14]
+[1,]    1    2    3    2    3    3    3    3    3     4     4     4     4     4
+[2,]    1    1    1    2    2    2    3    3    3     3     3     3     4     4
+> sapply(1:14, n2mfrow, asp=16/9)
+     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14]
+[1,]    1    2    2    2    2    2    2    3    3     3     3     3     3     3
+[2,]    1    1    2    2    3    3    4    3    3     4     4     4     5     5
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("nclass")
+> ### * nclass
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: nclass
+> ### Title: Compute the Number of Classes for a Histogram
+> ### Aliases: nclass.Sturges nclass.scott nclass.FD
+> ### Keywords: univar
+> 
+> ### ** Examples
+> 
+> set.seed(1)
+> x <- stats::rnorm(1111)
+> nclass.Sturges(x)
+[1] 12
+> 
+> ## Compare them:
+> NC <- function(x) c(Sturges = nclass.Sturges(x),
++       Scott = nclass.scott(x), FD = nclass.FD(x))
+> NC(x)
+Sturges   Scott      FD 
+     12      20      26 
+> onePt <- rep(1, 11)
+> NC(onePt) # no longer gives NaN
+Sturges   Scott      FD 
+      5       1       1 
+> 
+> 
+> 
+> cleanEx()
+> nameEx("palette")
+> ### * palette
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: palette
+> ### Title: Set or View the Graphics Palette
+> ### Aliases: palette palette.pals palette.colors
+> ### Keywords: color sysdata
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> palette()               # obtain the current palette
+[1] "black"   "#DF536B" "#61D04F" "#2297E6" "#28E2E5" "#CD0BBC" "#F5C710"
+[8] "gray62" 
+> palette("R3");palette() # old default palette
+[1] "black"   "red"     "green3"  "blue"    "cyan"    "magenta" "yellow" 
+[8] "gray"   
+> palette("ggplot2")      # ggplot2-style palette
+> palette()
+[1] "black"   "#F8766D" "#00BA38" "#619CFF" "#00BFC4" "#F564E3" "#B79F00"
+[8] "gray62" 
+> 
+> palette(hcl.colors(8, "viridis"))
+> 
+> (palette(gray(seq(0,.9,length.out = 25)))) # gray scales; print old palette
+[1] "#4B0055" "#3C3777" "#006290" "#008A98" "#00AC8E" "#25C771" "#A6DA42"
+[8] "#FDE333"
+> matplot(outer(1:100, 1:30), type = "l", lty = 1,lwd = 2, col = 1:30,
++         main = "Gray Scales Palette",
++         sub = "palette(gray(seq(0, .9, len=25)))")
+> palette("default")      # reset back to the default
+> 
+> ## on a device where alpha transparency is supported,
+> ##  use 'alpha = 0.3' transparency with the default palette :
+> mycols <- adjustcolor(palette(), alpha.f = 0.3)
+> opal <- palette(mycols)
+> x <- rnorm(1000); xy <- cbind(x, 3*x + rnorm(1000))
+> plot (xy, lwd = 2,
++        main = "Alpha-Transparency Palette\n alpha = 0.3")
+> xy[,1] <- -xy[,1]
+> points(xy, col = 8, pch = 16, cex = 1.5)
+> palette("default")
+> 
+> ## List available built-in palettes
+> palette.pals()
+ [1] "R3"              "R4"              "ggplot2"         "Okabe-Ito"      
+ [5] "Accent"          "Dark 2"          "Paired"          "Pastel 1"       
+ [9] "Pastel 2"        "Set 1"           "Set 2"           "Set 3"          
+[13] "Tableau 10"      "Classic Tableau" "Polychrome 36"   "Alphabet"       
+> 
+> ## Demonstrate the colors 1:8 in different palettes using a custom matplot()
+> sinplot <- function(main=NULL) {
++     x <- outer(
++ 	seq(-pi, pi, length.out = 50),
++ 	seq(0, pi, length.out = 8),
++ 	function(x, y) sin(x - y)
++     )
++     matplot(x, type = "l", lwd = 4, lty = 1, col = 1:8, ylab = "", main=main)
++ }
+> sinplot("default palette")
+> 
+> palette("R3");        sinplot("R3")
+> palette("Okabe-Ito"); sinplot("Okabe-Ito")
+> palette("Tableau")  ; sinplot("Tableau")
+> palette("default") # reset
+> 
+> ## color swatches for palette.colors()
+> palette.swatch <- function(palette = palette.pals(), n = 8, nrow = 8,
++                            border = "black", cex = 1, ...)
++ {
++      cols <- sapply(palette, palette.colors, n = n, recycle = TRUE)
++      ncol <- ncol(cols)
++      nswatch <- min(ncol, nrow)
++      op <- par(mar = rep(0.1, 4),
++                mfrow = c(1, min(5, ceiling(ncol/nrow))),
++      	       cex = cex, ...)
++      on.exit(par(op))
++      while (length(palette)) {
++  	subset <- seq_len(min(nrow, ncol(cols)))
++  	plot.new()
++  	plot.window(c(0, n), c(0.25, nrow + 0.25))
++  	y <- rev(subset)
++  	text(0, y + 0.1, palette[subset], adj = c(0, 0))
++  	y <- rep(y, each = n)
++  	rect(rep(0:(n-1), n), y, rep(1:n, n), y - 0.5,
++  	     col = cols[, subset], border = border)
++  	palette <- palette[-subset]
++  	cols    <- cols [, -subset, drop = FALSE]
++      }
++ }
+> 
+> palette.swatch()
+> 
+> palette.swatch(n = 26) # show full "Alphabet"; recycle most others
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("palettes")
+> ### * palettes
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: Palettes
+> ### Title: Color Palettes
+> ### Aliases: rainbow heat.colors terrain.colors topo.colors cm.colors
+> ###   hcl.colors hcl.pals
+> ### Keywords: color dplot
+> 
+> ### ** Examples
+> 
+> require("graphics")
+> 
+> # color wheels in RGB/HSV and HCL space
+> par(mfrow = c(2, 2))
+> pie(rep(1, 12), col = rainbow(12), main = "RGB/HSV")
+> pie(rep(1, 12), col = hcl.colors(12, "Set 2"), main = "HCL")
+> par(mfrow = c(1, 1))
+> 
+> ## color swatches for RGB/HSV palettes
+> demo.pal <-
++   function(n, border = if (n < 32) "light gray" else NA,
++            main = paste("color palettes;  n=", n),
++            ch.col = c("rainbow(n, start=.7, end=.1)", "heat.colors(n)",
++                       "terrain.colors(n)", "topo.colors(n)",
++                       "cm.colors(n)"))
++ {
++     nt <- length(ch.col)
++     i <- 1:n; j <- n / nt; d <- j/6; dy <- 2*d
++     plot(i, i+d, type = "n", yaxt = "n", ylab = "", main = main)
++     for (k in 1:nt) {
++         rect(i-.5, (k-1)*j+ dy, i+.4, k*j,
++              col = eval(str2lang(ch.col[k])), border = border)
++         text(2*j,  k * j + dy/4, ch.col[k])
++     }
++ }
+> demo.pal(16)
+> 
+> ## color swatches for HCL palettes
+> hcl.swatch <- function(type = NULL, n = 5, nrow = 11,
++   border = if (n < 15) "black" else NA) {
++     palette <- hcl.pals(type)
++     cols <- sapply(palette, hcl.colors, n = n)
++     ncol <- ncol(cols)
++     nswatch <- min(ncol, nrow)
++ 
++     par(mar = rep(0.1, 4),
++         mfrow = c(1, min(5, ceiling(ncol/nrow))),
++         pin = c(1, 0.5 * nswatch),
++         cex = 0.7)
++ 
++     while (length(palette)) {
++         subset <- 1:min(nrow, ncol(cols))
++         plot.new()
++         plot.window(c(0, n), c(0, nrow + 1))
++         text(0, rev(subset) + 0.1, palette[subset], adj = c(0, 0))
++         y <- rep(subset, each = n)
++         rect(rep(0:(n-1), n), rev(y), rep(1:n, n), rev(y) - 0.5,
++              col = cols[, subset], border = border)
++         palette <- palette[-subset]
++         cols <- cols[, -subset, drop = FALSE]
++     }
++ 
++     par(mfrow = c(1, 1), mar = c(5.1, 4.1, 4.1, 2.1), cex = 1)
++ }
+> hcl.swatch()
+> hcl.swatch("qualitative")
+> hcl.swatch("sequential")
+> hcl.swatch("diverging")
+> hcl.swatch("divergingx")
+> 
+> ## heat maps with sequential HCL palette (purple)
+> image(volcano, col = hcl.colors(11, "purples", rev = TRUE))
+> filled.contour(volcano, nlevels = 10,
++                color.palette = function(n, ...)
++                    hcl.colors(n, "purples", rev = TRUE, ...))
+> 
+> ## list available HCL color palettes
+> hcl.pals("qualitative")
+[1] "Pastel 1" "Dark 2"   "Dark 3"   "Set 2"    "Set 3"    "Warm"     "Cold"    
+[8] "Harmonic" "Dynamic" 
+> hcl.pals("sequential")
+ [1] "Grays"         "Light Grays"   "Blues 2"       "Blues 3"      
+ [5] "Purples 2"     "Purples 3"     "Reds 2"        "Reds 3"       
+ [9] "Greens 2"      "Greens 3"      "Oslo"          "Purple-Blue"  
+[13] "Red-Purple"    "Red-Blue"      "Purple-Orange" "Purple-Yellow"
+[17] "Blue-Yellow"   "Green-Yellow"  "Red-Yellow"    "Heat"         
+[21] "Heat 2"        "Terrain"       "Terrain 2"     "Viridis"      
+[25] "Plasma"        "Inferno"       "Rocket"        "Mako"         
+[29] "Dark Mint"     "Mint"          "BluGrn"        "Teal"         
+[33] "TealGrn"       "Emrld"         "BluYl"         "ag_GrnYl"     
+[37] "Peach"         "PinkYl"        "Burg"          "BurgYl"       
+[41] "RedOr"         "OrYel"         "Purp"          "PurpOr"       
+[45] "Sunset"        "Magenta"       "SunsetDark"    "ag_Sunset"    
+[49] "BrwnYl"        "YlOrRd"        "YlOrBr"        "OrRd"         
+[53] "Oranges"       "YlGn"          "YlGnBu"        "Reds"         
+[57] "RdPu"          "PuRd"          "Purples"       "PuBuGn"       
+[61] "PuBu"          "Greens"        "BuGn"          "GnBu"         
+[65] "BuPu"          "Blues"         "Lajolla"       "Turku"        
+[69] "Hawaii"        "Batlow"       
+> hcl.pals("diverging")
+ [1] "Blue-Red"      "Blue-Red 2"    "Blue-Red 3"    "Red-Green"    
+ [5] "Purple-Green"  "Purple-Brown"  "Green-Brown"   "Blue-Yellow 2"
+ [9] "Blue-Yellow 3" "Green-Orange"  "Cyan-Magenta"  "Tropic"       
+[13] "Broc"          "Cork"          "Vik"           "Berlin"       
+[17] "Lisbon"        "Tofino"       
+> hcl.pals("divergingx")
+ [1] "ArmyRose" "Earth"    "Fall"     "Geyser"   "TealRose" "Temps"   
+ [7] "PuOr"     "RdBu"     "RdGy"     "PiYG"     "PRGn"     "BrBG"    
+[13] "RdYlBu"   "RdYlGn"   "Spectral" "Zissou 1" "Cividis"  "Roma"    
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("pdf")
+> ### * pdf
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: pdf
+> ### Title: PDF Graphics Device
+> ### Aliases: pdf
+> ### Keywords: device
+> 
+> ### ** Examples
+> 
+> 
+> 
+> cleanEx()
+> nameEx("pdf.options")
+> ### * pdf.options
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: pdf.options
+> ### Title: Auxiliary Function to Set/View Defaults for Arguments of pdf
+> ### Aliases: pdf.options
+> ### Keywords: device
+> 
+> ### ** Examples
+> 
+> pdf.options(bg = "pink")
+> utils::str(pdf.options())
+List of 18
+ $ width      : num 7
+ $ height     : num 7
+ $ onefile    : logi TRUE
+ $ family     : chr "Helvetica"
+ $ title      : chr "R Graphics Output"
+ $ fonts      : NULL
+ $ version    : chr "1.4"
+ $ paper      : chr "special"
+ $ encoding   : chr "default"
+ $ bg         : chr "pink"
+ $ fg         : chr "black"
+ $ pointsize  : num 12
+ $ pagecentre : logi TRUE
+ $ colormodel : chr "srgb"
+ $ useDingbats: logi FALSE
+ $ useKerning : logi TRUE
+ $ fillOddEven: logi FALSE
+ $ compress   : logi TRUE
+> pdf.options(reset = TRUE) # back to factory-fresh
+> 
+> 
+> 
+> cleanEx()
+> nameEx("pictex")
+> ### * pictex
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: pictex
+> ### Title: A PicTeX Graphics Driver
+> ### Aliases: pictex
+> ### Keywords: device
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> ## Don't show: 
+> oldwd <- setwd(tempdir())
+> ## End(Don't show)
+> 
+> pictex()
+> plot(1:11, (-5:5)^2, type = "b", main = "Simple Example Plot")
+> dev.off()
+pdf 
+  2 
+> ##--------------------
+> ## Not run: 
+> ##D %% LaTeX Example
+> ##D \documentclass{article}
+> ##D \usepackage{pictex}
+> ##D \usepackage{graphics} % for \rotatebox
+> ##D \begin{document}
+> ##D %...
+> ##D \begin{figure}[h]
+> ##D   \centerline{\input{Rplots.tex}}
+> ##D   \caption{}
+> ##D \end{figure}
+> ##D %...
+> ##D \end{document}
+> ## End(Not run)
+> ##--------------------
+> unlink("Rplots.tex")
+> ## Don't show: 
+> setwd(oldwd)
+> ## End(Don't show)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("plotmath")
+> ### * plotmath
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: plotmath
+> ### Title: Mathematical Annotation in R
+> ### Aliases: plotmath symbol plain bold italic bolditalic hat bar dot ring
+> ###   widehat widetilde displaystyle textstyle scriptstyle
+> ###   scriptscriptstyle underline phantom over frac atop integral inf sup
+> ###   group bgroup
+> ### Keywords: aplot
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> x <- seq(-4, 4, length.out = 101)
+> y <- cbind(sin(x), cos(x))
+> matplot(x, y, type = "l", xaxt = "n",
++         main = expression(paste(plain(sin) * phi, "  and  ",
++                                 plain(cos) * phi)),
++         ylab = expression("sin" * phi, "cos" * phi), # only 1st is taken
++         xlab = expression(paste("Phase Angle ", phi)),
++         col.main = "blue")
+> axis(1, at = c(-pi, -pi/2, 0, pi/2, pi),
++      labels = expression(-pi, -pi/2, 0, pi/2, pi))
+> 
+> 
+> ## How to combine "math" and numeric variables :
+> plot(1:10, type="n", xlab="", ylab="", main = "plot math & numbers")
+> theta <- 1.23 ; mtext(bquote(hat(theta) == .(theta)), line= .25)
+> for(i in 2:9)
++     text(i, i+1, substitute(list(xi, eta) == group("(",list(x,y),")"),
++                             list(x = i, y = i+1)))
+> ## note that both of these use calls rather than expressions.
+> ##
+> text(1, 10,  "Derivatives:", adj = 0)
+> text(1, 9.6, expression(
++  "             first: {f * minute}(x) " == {f * minute}(x)), adj = 0)
+> text(1, 9.0, expression(
++  "     second: {f * second}(x) "        == {f * second}(x)), adj = 0)
+> 
+> 
+> plot(1:10, 1:10)
+> text(4, 9, expression(hat(beta) == (X^t * X)^{-1} * X^t * y))
+> text(4, 8.4, "expression(hat(beta) == (X^t * X)^{-1} * X^t * y)",
++      cex = .8)
+> text(4, 7, expression(bar(x) == sum(frac(x[i], n), i==1, n)))
+> text(4, 6.4, "expression(bar(x) == sum(frac(x[i], n), i==1, n))",
++      cex = .8)
+> text(8, 5, expression(paste(frac(1, sigma*sqrt(2*pi)), " ",
++                             plain(e)^{frac(-(x-mu)^2, 2*sigma^2)})),
++      cex = 1.2)
+> 
+> ## some other useful symbols
+> plot.new(); plot.window(c(0,4), c(15,1))
+> text(1, 1, "universal", adj = 0); text(2.5, 1,  "\\042")
+> text(3, 1, expression(symbol("\042")))
+> text(1, 2, "existential", adj = 0); text(2.5, 2,  "\\044")
+> text(3, 2, expression(symbol("\044")))
+> text(1, 3, "suchthat", adj = 0); text(2.5, 3,  "\\047")
+> text(3, 3, expression(symbol("\047")))
+> text(1, 4, "therefore", adj = 0); text(2.5, 4,  "\\134")
+> text(3, 4, expression(symbol("\134")))
+> text(1, 5, "perpendicular", adj = 0); text(2.5, 5,  "\\136")
+> text(3, 5, expression(symbol("\136")))
+> text(1, 6, "circlemultiply", adj = 0); text(2.5, 6,  "\\304")
+> text(3, 6, expression(symbol("\304")))
+> text(1, 7, "circleplus", adj = 0); text(2.5, 7,  "\\305")
+> text(3, 7, expression(symbol("\305")))
+> text(1, 8, "emptyset", adj = 0); text(2.5, 8,  "\\306")
+> text(3, 8, expression(symbol("\306")))
+> text(1, 9, "angle", adj = 0); text(2.5, 9,  "\\320")
+> text(3, 9, expression(symbol("\320")))
+> text(1, 10, "leftangle", adj = 0); text(2.5, 10,  "\\341")
+> text(3, 10, expression(symbol("\341")))
+> text(1, 11, "rightangle", adj = 0); text(2.5, 11,  "\\361")
+> text(3, 11, expression(symbol("\361")))
+> 
+> 
+> 
+> cleanEx()
+> nameEx("postscriptFonts")
+> ### * postscriptFonts
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: postscriptFonts
+> ### Title: PostScript and PDF Font Families
+> ### Aliases: postscriptFonts pdfFonts
+> ### Keywords: device
+> 
+> ### ** Examples
+> 
+> postscriptFonts()
+$serif
+$family
+[1] "Times"
+
+$metrics
+[1] "Times-Roman.afm"      "Times-Bold.afm"       "Times-Italic.afm"    
+[4] "Times-BoldItalic.afm" "Symbol.afm"          
+
+$encoding
+[1] "default"
+
+attr(,"class")
+[1] "Type1Font"
+
+$sans
+$family
+[1] "Helvetica"
+
+$metrics
+[1] "Helvetica.afm"             "Helvetica-Bold.afm"       
+[3] "Helvetica-Oblique.afm"     "Helvetica-BoldOblique.afm"
+[5] "Symbol.afm"               
+
+$encoding
+[1] "default"
+
+attr(,"class")
+[1] "Type1Font"
+
+$mono
+$family
+[1] "Courier"
+
+$metrics
+[1] "Courier.afm"             "Courier-Bold.afm"       
+[3] "Courier-Oblique.afm"     "Courier-BoldOblique.afm"
+[5] "Symbol.afm"             
+
+$encoding
+[1] "default"
+
+attr(,"class")
+[1] "Type1Font"
+
+$AvantGarde
+$family
+[1] "AvantGarde"
+
+$metrics
+[1] "agw_____.afm" "agd_____.afm" "agwo____.afm" "agdo____.afm" "Symbol.afm"  
+
+$encoding
+[1] "default"
+
+attr(,"class")
+[1] "Type1Font"
+
+$Bookman
+$family
+[1] "Bookman"
+
+$metrics
+[1] "bkl_____.afm" "bkd_____.afm" "bkli____.afm" "bkdi____.afm" "Symbol.afm"  
+
+$encoding
+[1] "default"
+
+attr(,"class")
+[1] "Type1Font"
+
+$Courier
+$family
+[1] "Courier"
+
+$metrics
+[1] "Courier.afm"             "Courier-Bold.afm"       
+[3] "Courier-Oblique.afm"     "Courier-BoldOblique.afm"
+[5] "Symbol.afm"             
+
+$encoding
+[1] "default"
+
+attr(,"class")
+[1] "Type1Font"
+
+$Helvetica
+$family
+[1] "Helvetica"
+
+$metrics
+[1] "Helvetica.afm"             "Helvetica-Bold.afm"       
+[3] "Helvetica-Oblique.afm"     "Helvetica-BoldOblique.afm"
+[5] "Symbol.afm"               
+
+$encoding
+[1] "default"
+
+attr(,"class")
+[1] "Type1Font"
+
+$`Helvetica-Narrow`
+$family
+[1] "Helvetica-Narrow"
+
+$metrics
+[1] "hvn_____.afm" "hvnb____.afm" "hvno____.afm" "hvnbo___.afm" "Symbol.afm"  
+
+$encoding
+[1] "default"
+
+attr(,"class")
+[1] "Type1Font"
+
+$NewCenturySchoolbook
+$family
+[1] "NewCenturySchoolbook"
+
+$metrics
+[1] "ncr_____.afm" "ncb_____.afm" "nci_____.afm" "ncbi____.afm" "Symbol.afm"  
+
+$encoding
+[1] "default"
+
+attr(,"class")
+[1] "Type1Font"
+
+$Palatino
+$family
+[1] "Palatino"
+
+$metrics
+[1] "por_____.afm" "pob_____.afm" "poi_____.afm" "pobi____.afm" "Symbol.afm"  
+
+$encoding
+[1] "default"
+
+attr(,"class")
+[1] "Type1Font"
+
+$Times
+$family
+[1] "Times"
+
+$metrics
+[1] "Times-Roman.afm"      "Times-Bold.afm"       "Times-Italic.afm"    
+[4] "Times-BoldItalic.afm" "Symbol.afm"          
+
+$encoding
+[1] "default"
+
+attr(,"class")
+[1] "Type1Font"
+
+$URWGothic
+$family
+[1] "URWGothic"
+
+$metrics
+[1] "a010013l.afm" "a010015l.afm" "a010033l.afm" "a010035l.afm" "s050000l.afm"
+
+$encoding
+[1] "default"
+
+attr(,"class")
+[1] "Type1Font"
+
+$URWBookman
+$family
+[1] "URWBookman"
+
+$metrics
+[1] "b018012l.afm" "b018015l.afm" "b018032l.afm" "b018035l.afm" "s050000l.afm"
+
+$encoding
+[1] "default"
+
+attr(,"class")
+[1] "Type1Font"
+
+$NimbusMon
+$family
+[1] "NimbusMon"
+
+$metrics
+[1] "n022003l.afm" "n022004l.afm" "n022023l.afm" "n022024l.afm" "s050000l.afm"
+
+$encoding
+[1] "default"
+
+attr(,"class")
+[1] "Type1Font"
+
+$NimbusSan
+$family
+[1] "NimbusSan"
+
+$metrics
+[1] "n019003l.afm" "n019004l.afm" "n019023l.afm" "n019024l.afm" "s050000l.afm"
+
+$encoding
+[1] "default"
+
+attr(,"class")
+[1] "Type1Font"
+
+$URWHelvetica
+$family
+[1] "URWHelvetica"
+
+$metrics
+[1] "n019003l.afm" "n019004l.afm" "n019023l.afm" "n019024l.afm" "s050000l.afm"
+
+$encoding
+[1] "default"
+
+attr(,"class")
+[1] "Type1Font"
+
+$NimbusSanCond
+$family
+[1] "NimbusSanCond"
+
+$metrics
+[1] "n019043l.afm" "n019044l.afm" "n019063l.afm" "n019064l.afm" "s050000l.afm"
+
+$encoding
+[1] "default"
+
+attr(,"class")
+[1] "Type1Font"
+
+$CenturySch
+$family
+[1] "CenturySch"
+
+$metrics
+[1] "c059013l.afm" "c059016l.afm" "c059033l.afm" "c059036l.afm" "s050000l.afm"
+
+$encoding
+[1] "default"
+
+attr(,"class")
+[1] "Type1Font"
+
+$URWPalladio
+$family
+[1] "URWPalladio"
+
+$metrics
+[1] "p052003l.afm" "p052004l.afm" "p052023l.afm" "p052024l.afm" "s050000l.afm"
+
+$encoding
+[1] "default"
+
+attr(,"class")
+[1] "Type1Font"
+
+$NimbusRom
+$family
+[1] "NimbusRom"
+
+$metrics
+[1] "n021003l.afm" "n021004l.afm" "n021023l.afm" "n021024l.afm" "s050000l.afm"
+
+$encoding
+[1] "default"
+
+attr(,"class")
+[1] "Type1Font"
+
+$URWTimes
+$family
+[1] "URWTimes"
+
+$metrics
+[1] "n021003l.afm" "n021004l.afm" "n021023l.afm" "n021024l.afm" "s050000l.afm"
+
+$encoding
+[1] "default"
+
+attr(,"class")
+[1] "Type1Font"
+
+$ArialMT
+$family
+[1] "ArialMT"
+
+$metrics
+[1] "ArialMT.afm"            "ArialMT-Bold.afm"       "ArialMT-Italic.afm"    
+[4] "ArialMT-BoldItalic.afm" "Symbol.afm"            
+
+$encoding
+[1] "default"
+
+attr(,"class")
+[1] "Type1Font"
+
+$ComputerModern
+$family
+[1] "ComputerModern"
+
+$metrics
+[1] "CM_regular_10.afm"      "CM_boldx_10.afm"        "CM_italic_10.afm"      
+[4] "CM_boldx_italic_10.afm" "CM_symbol_10.afm"      
+
+$encoding
+[1] "TeXtext.enc"
+
+attr(,"class")
+[1] "Type1Font"
+
+$ComputerModernItalic
+$family
+[1] "ComputerModernItalic"
+
+$metrics
+[1] "CM_regular_10.afm" "CM_boldx_10.afm"   "cmti10.afm"       
+[4] "cmbxti10.afm"      "CM_symbol_10.afm" 
+
+$encoding
+[1] "TeXtext.enc"
+
+attr(,"class")
+[1] "Type1Font"
+
+$Japan1
+$family
+[1] "HeiseiKakuGo-W5"
+
+$metrics
+[1] ""           ""           ""           ""           "Symbol.afm"
+
+$cmap
+[1] "EUC-H"
+
+$cmapEncoding
+[1] "EUC-JP"
+
+$pdfresource
+[1] ""
+
+attr(,"class")
+[1] "CIDFont"
+
+$Japan1HeiMin
+$family
+[1] "HeiseiMin-W3"
+
+$metrics
+[1] ""           ""           ""           ""           "Symbol.afm"
+
+$cmap
+[1] "EUC-H"
+
+$cmapEncoding
+[1] "EUC-JP"
+
+$pdfresource
+[1] ""
+
+attr(,"class")
+[1] "CIDFont"
+
+$Japan1GothicBBB
+$family
+[1] "GothicBBB-Medium"
+
+$metrics
+[1] ""           ""           ""           ""           "Symbol.afm"
+
+$cmap
+[1] "EUC-H"
+
+$cmapEncoding
+[1] "EUC-JP"
+
+$pdfresource
+[1] ""
+
+attr(,"class")
+[1] "CIDFont"
+
+$Japan1Ryumin
+$family
+[1] "Ryumin-Light"
+
+$metrics
+[1] ""           ""           ""           ""           "Symbol.afm"
+
+$cmap
+[1] "EUC-H"
+
+$cmapEncoding
+[1] "EUC-JP"
+
+$pdfresource
+[1] ""
+
+attr(,"class")
+[1] "CIDFont"
+
+$Korea1
+$family
+[1] "Baekmuk-Batang"
+
+$metrics
+[1] ""           ""           ""           ""           "Symbol.afm"
+
+$cmap
+[1] "KSCms-UHC-H"
+
+$cmapEncoding
+[1] "CP949"
+
+$pdfresource
+[1] ""
+
+attr(,"class")
+[1] "CIDFont"
+
+$Korea1deb
+$family
+[1] "Batang-Regular"
+
+$metrics
+[1] ""           ""           ""           ""           "Symbol.afm"
+
+$cmap
+[1] "KSCms-UHC-H"
+
+$cmapEncoding
+[1] "CP949"
+
+$pdfresource
+[1] ""
+
+attr(,"class")
+[1] "CIDFont"
+
+$CNS1
+$family
+[1] "MOESung-Regular"
+
+$metrics
+[1] ""           ""           ""           ""           "Symbol.afm"
+
+$cmap
+[1] "B5pc-H"
+
+$cmapEncoding
+[1] "CP950"
+
+$pdfresource
+[1] ""
+
+attr(,"class")
+[1] "CIDFont"
+
+$GB1
+$family
+[1] "BousungEG-Light-GB"
+
+$metrics
+[1] ""           ""           ""           ""           "Symbol.afm"
+
+$cmap
+[1] "GBK-EUC-H"
+
+$cmapEncoding
+[1] "GBK"
+
+$pdfresource
+[1] ""
+
+attr(,"class")
+[1] "CIDFont"
+
+> ## This duplicates "ComputerModernItalic".
+> CMitalic <- Type1Font("ComputerModern2",
++                       c("CM_regular_10.afm", "CM_boldx_10.afm",
++                         "cmti10.afm", "cmbxti10.afm",
++                          "CM_symbol_10.afm"),
++                       encoding = "TeXtext.enc")
+> postscriptFonts(CMitalic = CMitalic)
+> 
+> ## A CID font for Japanese using a different CMap and
+> ## corresponding cmapEncoding.
+> `Jp_UCS-2` <- CIDFont("TestUCS2",
++                   c("Adobe-Japan1-UniJIS-UCS2-H.afm",
++                     "Adobe-Japan1-UniJIS-UCS2-H.afm",
++                     "Adobe-Japan1-UniJIS-UCS2-H.afm",
++                     "Adobe-Japan1-UniJIS-UCS2-H.afm"),
++                   "UniJIS-UCS2-H", "UCS-2")
+> pdfFonts(`Jp_UCS-2` = `Jp_UCS-2`)
+> names(pdfFonts())
+ [1] "serif"                "sans"                 "mono"                
+ [4] "AvantGarde"           "Bookman"              "Courier"             
+ [7] "Helvetica"            "Helvetica-Narrow"     "NewCenturySchoolbook"
+[10] "Palatino"             "Times"                "URWGothic"           
+[13] "URWBookman"           "NimbusMon"            "NimbusSan"           
+[16] "URWHelvetica"         "NimbusSanCond"        "CenturySch"          
+[19] "URWPalladio"          "NimbusRom"            "URWTimes"            
+[22] "ArialMT"              "Japan1"               "Japan1HeiMin"        
+[25] "Japan1GothicBBB"      "Japan1Ryumin"         "Korea1"              
+[28] "Korea1deb"            "CNS1"                 "GB1"                 
+[31] "Jp_UCS-2"            
+> 
+> 
+> 
+> cleanEx()
+> nameEx("pretty.Date")
+> ### * pretty.Date
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: pretty.Date
+> ### Title: Pretty Breakpoints for Date-Time Classes
+> ### Aliases: pretty.Date pretty.POSIXt
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> ## time-dependent ==> ignore diffs:
+> ## IGNORE_RDIFF_BEGIN
+> pretty(Sys.Date())
+[1] "2022-03-17" "2022-03-18" "2022-03-19" "2022-03-20" "2022-03-21"
+[6] "2022-03-22"
+> pretty(Sys.time(), n = 10)
+ [1] "2022-03-19 21:26:43 GMT" "2022-03-19 21:26:44 GMT"
+ [3] "2022-03-19 21:26:45 GMT" "2022-03-19 21:26:46 GMT"
+ [5] "2022-03-19 21:26:47 GMT" "2022-03-19 21:26:48 GMT"
+ [7] "2022-03-19 21:26:49 GMT" "2022-03-19 21:26:50 GMT"
+ [9] "2022-03-19 21:26:51 GMT" "2022-03-19 21:26:52 GMT"
+[11] "2022-03-19 21:26:53 GMT"
+> ## IGNORE_RDIFF_END
+> 
+> pretty(as.Date("2000-03-01")) # R 1.0.0 came in a leap year
+[1] "2000-02-28" "2000-02-29" "2000-03-01" "2000-03-02" "2000-03-03"
+[6] "2000-03-04"
+> 
+> ## time ranges in diverse scales:% also in ../../../../tests/reg-tests-1c.R
+> require(stats)
+> steps <- setNames(,
++     c("10 secs", "1 min", "5 mins", "30 mins", "6 hours", "12 hours",
++       "1 DSTday", "2 weeks", "1 month", "6 months", "1 year",
++       "10 years", "50 years", "1000 years"))
+> x <- as.POSIXct("2002-02-02 02:02")
+> lapply(steps,
++        function(s) {
++            at <- pretty(seq(x, by = s, length.out = 2), n = 5)
++            attr(at, "labels")
++        })
+$`10 secs`
+[1] "00" "02" "04" "06" "08" "10"
+
+$`1 min`
+[1] "00" "10" "20" "30" "40" "50" "00"
+
+$`5 mins`
+[1] "02:02" "02:03" "02:04" "02:05" "02:06" "02:07"
+
+$`30 mins`
+[1] "02:00" "02:10" "02:20" "02:30" "02:40"
+
+$`6 hours`
+[1] "02:00" "03:00" "04:00" "05:00" "06:00" "07:00" "08:00" "09:00"
+
+$`12 hours`
+[1] "00:00" "03:00" "06:00" "09:00" "12:00" "15:00"
+
+$`1 DSTday`
+[1] "Feb 02 00:00" "Feb 02 06:00" "Feb 02 12:00" "Feb 02 18:00" "Feb 03 00:00"
+[6] "Feb 03 06:00"
+
+$`2 weeks`
+[1] "Jan 28" "Feb 04" "Feb 11" "Feb 18"
+
+$`1 month`
+[1] "Jan 28" "Feb 04" "Feb 11" "Feb 18" "Feb 25" "Mar 04"
+
+$`6 months`
+[1] "Feb" "Mar" "Apr" "May" "Jun" "Jul" "Aug" "Sep"
+
+$`1 year`
+[1] "Jan" "Apr" "Jul" "Oct" "Jan" "Apr"
+
+$`10 years`
+[1] "2002" "2004" "2006" "2008" "2010" "2012" "2014"
+
+$`50 years`
+[1] "2000" "2010" "2020" "2030" "2040" "2050" "2060"
+
+$`1000 years`
+[1] "2000" "2200" "2400" "2600" "2800" "3000" "3200"
+
+> 
+> 
+> 
+> cleanEx()
+> nameEx("ps.options")
+> ### * ps.options
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: ps.options
+> ### Title: Auxiliary Function to Set/View Defaults for Arguments of
+> ###   postscript
+> ### Aliases: ps.options setEPS setPS
+> ### Keywords: device
+> 
+> ### ** Examples
+> 
+> ps.options(bg = "pink")
+> utils::str(ps.options())
+List of 18
+ $ onefile    : logi TRUE
+ $ family     : chr "Helvetica"
+ $ title      : chr "R Graphics Output"
+ $ fonts      : NULL
+ $ encoding   : chr "default"
+ $ bg         : chr "pink"
+ $ fg         : chr "black"
+ $ width      : num 0
+ $ height     : num 0
+ $ horizontal : logi TRUE
+ $ pointsize  : num 12
+ $ paper      : chr "default"
+ $ pagecentre : logi TRUE
+ $ print.it   : logi FALSE
+ $ command    : chr "default"
+ $ colormodel : chr "srgb"
+ $ useKerning : logi TRUE
+ $ fillOddEven: logi FALSE
+> 
+> ### ---- error checking of arguments: ----
+> ps.options(width = 0:12, onefile = 0, bg = pi)
+Warning: ‘mode(onefile)’ and ‘mode(bg)’ differ between new and previous
+	 ==> NOT changing ‘onefile’ & ‘bg’
+Warning: ‘length(width)’ differs between new and previous
+	 ==> NOT changing ‘width’
+> # override the check for 'width', but not 'bg':
+> ps.options(width = 0:12, bg = pi, override.check = c(TRUE,FALSE))
+Warning: ‘mode(bg)’ differs between new and previous
+	 ==> NOT changing ‘bg’
+Warning: ‘length(width)’ differs between new and previous
+> utils::str(ps.options())
+List of 18
+ $ onefile    : logi TRUE
+ $ family     : chr "Helvetica"
+ $ title      : chr "R Graphics Output"
+ $ fonts      : NULL
+ $ encoding   : chr "default"
+ $ bg         : chr "pink"
+ $ fg         : chr "black"
+ $ width      : int [1:13] 0 1 2 3 4 5 6 7 8 9 ...
+ $ height     : num 0
+ $ horizontal : logi TRUE
+ $ pointsize  : num 12
+ $ paper      : chr "default"
+ $ pagecentre : logi TRUE
+ $ print.it   : logi FALSE
+ $ command    : chr "default"
+ $ colormodel : chr "srgb"
+ $ useKerning : logi TRUE
+ $ fillOddEven: logi FALSE
+> ps.options(reset = TRUE) # back to factory-fresh
+> 
+> 
+> 
+> cleanEx()
+> nameEx("quartz")
+> ### * quartz
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: quartz
+> ### Title: macOS Quartz Device
+> ### Aliases: quartz quartz.options quartz.save
+> ### Keywords: device
+> 
+> ### ** Examples
+> ## Not run: 
+> ##D ## Only on a Mac,
+> ##D ## put something like this is your .Rprofile to customize the defaults
+> ##D setHook(packageEvent("grDevices", "onLoad"),
+> ##D         function(...) grDevices::quartz.options(width = 8, height = 6,
+> ##D                                                 pointsize = 10))
+> ## End(Not run)
+> 
+> 
+> cleanEx()
+> nameEx("quartzFonts")
+> ### * quartzFonts
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: quartzFonts
+> ### Title: Quartz Fonts Setup
+> ### Aliases: quartzFont quartzFonts
+> ### Keywords: device
+> 
+> ### ** Examples
+> 
+> if(.Platform$OS.type == "unix") { # includes Mac
++ 
++  utils::str( quartzFonts() ) # a list(serif = .., sans = .., mono = ..)
++  quartzFonts("mono") # the list(mono = ..) sublist of quartzFonts()
++ ## Not run: 
++ ##D   ## for East Asian locales you can use something like
++ ##D   quartzFonts(sans = quartzFont(rep("AppleGothic", 4)),
++ ##D 	      serif = quartzFont(rep("AppleMyungjp", 4)))
++ ##D   ## since the default fonts may well not have the glyphs needed
++ ## End(Not run)
++ }
+List of 3
+ $ serif: chr [1:4] "Times-Roman" "Times-Bold" "Times-Italic" "Times-BoldItalic"
+ $ sans : chr [1:4] "Helvetica" "Helvetica-Bold" "Helvetica-Oblique" "Helvetica-BoldOblique"
+ $ mono : chr [1:4] "Courier" "Courier-Bold" "Courier-Oblique" "Courier-BoldOblique"
+$mono
+[1] "Courier"             "Courier-Bold"        "Courier-Oblique"    
+[4] "Courier-BoldOblique"
+
+> 
+> 
+> 
+> cleanEx()
+> nameEx("recordGraphics")
+> ### * recordGraphics
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: recordGraphics
+> ### Title: Record Graphics Operations
+> ### Aliases: recordGraphics
+> ### Keywords: device
+> 
+> ### ** Examples
+> 
+> require(graphics)
+> 
+> plot(1:10)
+> # This rectangle remains 1inch wide when the device is resized
+> recordGraphics(
++   {
++     rect(4, 2,
++          4 + diff(par("usr")[1:2])/par("pin")[1], 3)
++   },
++   list(),
++   getNamespace("graphics"))
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("rgb")
+> ### * rgb
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: rgb
+> ### Title: RGB Color Specification
+> ### Aliases: rgb
+> ### Keywords: color
+> 
+> ### ** Examples
+> 
+> rgb(0, 1, 0)
+[1] "#00FF00"
+> 
+> rgb((0:15)/15, green = 0, blue = 0, names = paste("red", 0:15, sep = "."))
+    red.0     red.1     red.2     red.3     red.4     red.5     red.6     red.7 
+"#000000" "#110000" "#220000" "#330000" "#440000" "#550000" "#660000" "#770000" 
+    red.8     red.9    red.10    red.11    red.12    red.13    red.14    red.15 
+"#880000" "#990000" "#AA0000" "#BB0000" "#CC0000" "#DD0000" "#EE0000" "#FF0000" 
+> 
+> rgb(0, 0:12, 0, maxColorValue = 255) # integer input
+ [1] "#000000" "#000100" "#000200" "#000300" "#000400" "#000500" "#000600"
+ [8] "#000700" "#000800" "#000900" "#000A00" "#000B00" "#000C00"
+> 
+> ramp <- colorRamp(c("red", "white"))
+> rgb( ramp(seq(0, 1, length.out = 5)), maxColorValue = 255)
+[1] "#FF0000" "#FF3F3F" "#FF7F7F" "#FFBFBF" "#FFFFFF"
+> 
+> 
+> 
+> cleanEx()
+> nameEx("rgb2hsv")
+> ### * rgb2hsv
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: rgb2hsv
+> ### Title: RGB to HSV Conversion
+> ### Aliases: rgb2hsv
+> ### Keywords: color dplot
+> 
+> ### ** Examples
+> 
+> ## These (saturated, bright ones) only differ by hue
+> (rc <- col2rgb(c("red", "yellow","green","cyan", "blue", "magenta")))
+      [,1] [,2] [,3] [,4] [,5] [,6]
+red    255  255    0    0    0  255
+green    0  255  255  255    0    0
+blue     0    0    0  255  255  255
+> (hc <- rgb2hsv(rc))
+  [,1]      [,2]      [,3] [,4]      [,5]      [,6]
+h    0 0.1666667 0.3333333  0.5 0.6666667 0.8333333
+s    1 1.0000000 1.0000000  1.0 1.0000000 1.0000000
+v    1 1.0000000 1.0000000  1.0 1.0000000 1.0000000
+> 6 * hc["h",] # the hues are equispaced
+[1] 0 1 2 3 4 5
+> 
+> ## Don't show: 
+> set.seed(151)
+> ## End(Don't show)
+> (rgb3 <- floor(256 * matrix(stats::runif(3*12), 3, 12)))
+     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]
+[1,]  122  137  116  244   20  153  191  250  134   117    27   202
+[2,]  221  113  210  200  218  151   64  182  195   103   218   254
+[3,]  199  157   88   76   39   91   80  146   22   105    17   239
+> (hsv3 <- rgb2hsv(rgb3))
+       [,1]      [,2]      [,3]      [,4]      [,5]      [,6]      [,7]
+h 0.4629630 0.7575758 0.2950820 0.1230159 0.3493266 0.1612903 0.9790026
+s 0.4479638 0.2802548 0.5809524 0.6885246 0.9082569 0.4052288 0.6649215
+v 0.8666667 0.6156863 0.8235294 0.9568627 0.8549020 0.6000000 0.7490196
+        [,8]      [,9]     [,10]     [,11]     [,12]
+h 0.05769231 0.2254335 0.9761905 0.3250415 0.4519231
+s 0.41600000 0.8871795 0.1196581 0.9220183 0.2047244
+v 0.98039216 0.7647059 0.4588235 0.8549020 0.9960784
+> ## Consistency :
+> stopifnot(rgb3 == col2rgb(hsv(h = hsv3[1,], s = hsv3[2,], v = hsv3[3,])),
++           all.equal(hsv3, rgb2hsv(rgb3/255, maxColorValue = 1)))
+> 
+> ## A (simplified) pure R version -- originally by Wolfram Fischer --
+> ## showing the exact algorithm:
+> rgb2hsvR <- function(rgb, gamma = 1, maxColorValue = 255)
++ {
++     if(!is.numeric(rgb)) stop("rgb matrix must be numeric")
++     d <- dim(rgb)
++     if(d[1] != 3) stop("rgb matrix must have 3 rows")
++     n <- d[2]
++     if(n == 0) return(cbind(c(h = 1, s = 1, v = 1))[,0])
++     rgb <- rgb/maxColorValue
++     if(gamma != 1) rgb <- rgb ^ (1/gamma)
++ 
++     ## get the max and min
++     v <- apply( rgb, 2, max)
++     s <- apply( rgb, 2, min)
++     D <- v - s # range
++ 
++     ## set hue to zero for undefined values (gray has no hue)
++     h <- numeric(n)
++     notgray <- ( s != v )
++ 
++     ## blue hue
++     idx <- (v == rgb[3,] & notgray )
++     if (any (idx))
++         h[idx] <- 2/3 + 1/6 * (rgb[1,idx] - rgb[2,idx]) / D[idx]
++     ## green hue
++     idx <- (v == rgb[2,] & notgray )
++     if (any (idx))
++         h[idx] <- 1/3 + 1/6 * (rgb[3,idx] - rgb[1,idx]) / D[idx]
++     ## red hue
++     idx <- (v == rgb[1,] & notgray )
++     if (any (idx))
++         h[idx] <-       1/6 * (rgb[2,idx] - rgb[3,idx]) / D[idx]
++ 
++     ## correct for negative red
++     idx <- (h < 0)
++     h[idx] <- 1+h[idx]
++ 
++     ## set the saturation
++     s[! notgray] <- 0;
++     s[notgray] <- 1 - s[notgray] / v[notgray]
++ 
++     rbind( h = h, s = s, v = v )
++ }
+> 
+> ## confirm the equivalence:
+> all.equal(rgb2hsv (rgb3),
++           rgb2hsvR(rgb3), tolerance = 1e-14) # TRUE
+[1] TRUE
+> 
+> 
+> 
+> cleanEx()
+> nameEx("trans3d")
+> ### * trans3d
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: trans3d
+> ### Title: 3D to 2D Transformation for Perspective Plots
+> ### Aliases: trans3d
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> ## See  help(persp) {after attaching the 'graphics' package}
+> ##      -----------
+> 
+> 
+> 
+> cleanEx()
+> nameEx("windows")
+> ### * windows
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: windows
+> ### Title: Windows Graphics Devices
+> ### Aliases: windows win.graph win.metafile win.print print.SavedPlots
+> ###   [.SavedPlots
+> ### Keywords: device
+> 
+> ### ** Examples
+> ## Not run: 
+> ##D ## A series of plots written to a sequence of metafiles
+> ##D if(.Platform$OS.type == "windows")
+> ##D    win.metafile("Rplot%02d.wmf", pointsize = 10)
+> ## End(Not run)
+> 
+> 
+> cleanEx()
+> nameEx("windows.options")
+> ### * windows.options
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: windows.options
+> ### Title: Auxiliary Function to Set/View Defaults for Arguments of
+> ###   windows()
+> ### Aliases: windows.options
+> ### Keywords: device
+> 
+> ### ** Examples
+> ## Not run: 
+> ##D ## put something like this is your .Rprofile to customize the defaults
+> ##D setHook(packageEvent("grDevices", "onLoad"),
+> ##D         function(...)
+> ##D             grDevices::windows.options(width = 8, height = 6,
+> ##D                                        xpos = 0, pointsize = 10,
+> ##D                                        bitmap.aa.win = "cleartype"))
+> ## End(Not run)
+> 
+> 
+> cleanEx()
+> nameEx("windowsFonts")
+> ### * windowsFonts
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: windowsFonts
+> ### Title: Windows Fonts
+> ### Aliases: windowsFont windowsFonts
+> ### Keywords: device
+> 
+> ### ** Examples
+> 
+> if(.Platform$OS.type == "windows") withAutoprint({
++   windowsFonts()
++   windowsFonts("mono")
++ })
+> ## Not run: 
+> ##D ## set up for Japanese: needs the fonts installed
+> ##D windows()  # make sure we have the right device type (available on Windows only)
+> ##D Sys.setlocale("LC_ALL", "ja")
+> ##D windowsFonts(JP1 = windowsFont("MS Mincho"),
+> ##D              JP2 = windowsFont("MS Gothic"),
+> ##D              JP3 = windowsFont("Arial Unicode MS"))
+> ##D plot(1:10)
+> ##D text(5, 2, "\u{4E10}\u{4E00}\u{4E01}", family = "JP1")
+> ##D text(7, 2, "\u{4E10}\u{4E00}\u{4E01}", family = "JP1", font = 2)
+> ##D text(5, 1.5, "\u{4E10}\u{4E00}\u{4E01}", family = "JP2")
+> ##D text(9, 2, "\u{5100}", family = "JP3")
+> ## End(Not run)
+> 
+> 
+> cleanEx()
+> nameEx("x11")
+> ### * x11
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: x11
+> ### Title: X Window System Graphics (X11)
+> ### Aliases: x11 X11 X11.options
+> ### Keywords: device
+> 
+> ### ** Examples
+> ## Not run: 
+> ##D if(.Platform$OS.type == "unix") { # Only on unix-alikes, possibly Mac,
+> ##D ## put something like this is your .Rprofile to customize the defaults
+> ##D setHook(packageEvent("grDevices", "onLoad"),
+> ##D         function(...) grDevices::X11.options(width = 8, height = 6, xpos = 0,
+> ##D                                              pointsize = 10))
+> ##D }
+> ## End(Not run)
+> 
+> 
+> cleanEx()
+> nameEx("x11Fonts")
+> ### * x11Fonts
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: X11Fonts
+> ### Title: X11 Fonts
+> ### Aliases: X11Font X11Fonts
+> ### Keywords: device
+> 
+> ### ** Examples
+> 
+> ## IGNORE_RDIFF_BEGIN
+> if(capabilities()[["X11"]]) withAutoprint({
++ X11Fonts()
++ X11Fonts("mono")
++ utopia <- X11Font("-*-utopia-*-*-*-*-*-*-*-*-*-*-*-*")
++ X11Fonts(utopia = utopia)
++ })
+> ## IGNORE_RDIFF_END
+> 
+> 
+> 
+> cleanEx()
+> nameEx("xy.coords")
+> ### * xy.coords
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: xy.coords
+> ### Title: Extracting Plotting Structures
+> ### Aliases: xy.coords
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> ff <- stats::fft(1:9)
+> xy.coords(ff)
+$x
+[1] 45.0 -4.5 -4.5 -4.5 -4.5 -4.5 -4.5 -4.5 -4.5
+
+$y
+[1]   0.0000000  12.3636484   5.3628912   2.5980762   0.7934714  -0.7934714
+[7]  -2.5980762  -5.3628912 -12.3636484
+
+$xlab
+[1] "Re()"
+
+$ylab
+[1] "Im()"
+
+> xy.coords(ff, xlab = "fft") # labels "Re(fft)",  "Im(fft)"
+$x
+[1] 45.0 -4.5 -4.5 -4.5 -4.5 -4.5 -4.5 -4.5 -4.5
+
+$y
+[1]   0.0000000  12.3636484   5.3628912   2.5980762   0.7934714  -0.7934714
+[7]  -2.5980762  -5.3628912 -12.3636484
+
+$xlab
+[1] "Re(fft)"
+
+$ylab
+[1] "Im(fft)"
+
+> ## Don't show: 
+> stopifnot(identical(xy.coords(ff, xlab = "fft"),
++                     xy.coords(ff, ylab = "fft")))
+> xy.labs <- function(...) xy.coords(...)[c("xlab","ylab")]
+> stopifnot(identical(xy.labs(ff, xlab = "fft", setLab = FALSE),
++                     list(xlab = "fft", ylab = "fft")),
++           identical(xy.labs(ff, ylab = "fft", setLab = FALSE),
++                     list(xlab = NULL, ylab = "fft")),
++           identical(xy.labs(ff, xlab = "Re(fft)", ylab = "Im(fft)", setLab = FALSE),
++                     list(xlab = "Re(fft)", ylab = "Im(fft)")))
+> ## End(Don't show)
+> with(cars, xy.coords(dist ~ speed, NULL)$xlab ) # = "speed"
+[1] "speed"
+> 
+> xy.coords(1:3, 1:2, recycle = TRUE) # otherwise error "lengths differ"
+$x
+[1] 1 2 3
+
+$y
+[1] 1 2 1
+
+$xlab
+NULL
+
+$ylab
+NULL
+
+> xy.coords(-2:10, log = "y")
+Warning in xy.coords(-2:10, log = "y") :
+  3 y values <= 0 omitted from logarithmic plot
+$x
+ [1]  1  2  3  4  5  6  7  8  9 10 11 12 13
+
+$y
+ [1] NA NA NA  1  2  3  4  5  6  7  8  9 10
+
+$xlab
+[1] "Index"
+
+$ylab
+NULL
+
+> ##> xlab: "Index"  \\  warning: 3 y values <= 0 omitted ..
+> 
+> 
+> 
+> cleanEx()
+> nameEx("xyTable")
+> ### * xyTable
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: xyTable
+> ### Title: Multiplicities of (x,y) Points, e.g., for a Sunflower Plot
+> ### Aliases: xyTable
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> xyTable(iris[, 3:4], digits = 6)
+$x
+  [1] 1.0 1.1 1.2 1.3 1.3 1.3 1.4 1.4 1.4 1.5 1.5 1.5 1.5 1.6 1.6 1.6 1.7 1.7
+ [19] 1.7 1.7 1.9 1.9 3.0 3.3 3.5 3.6 3.7 3.8 3.9 3.9 3.9 4.0 4.0 4.0 4.1 4.1
+ [37] 4.2 4.2 4.2 4.3 4.4 4.4 4.4 4.5 4.5 4.5 4.5 4.6 4.6 4.6 4.7 4.7 4.7 4.7
+ [55] 4.8 4.8 4.9 4.9 4.9 5.0 5.0 5.0 5.0 5.1 5.1 5.1 5.1 5.1 5.1 5.1 5.2 5.2
+ [73] 5.3 5.3 5.4 5.4 5.5 5.5 5.6 5.6 5.6 5.6 5.6 5.7 5.7 5.7 5.8 5.8 5.8 5.9
+ [91] 5.9 6.0 6.0 6.1 6.1 6.1 6.3 6.4 6.6 6.7 6.7 6.9
+
+$y
+  [1] 0.2 0.1 0.2 0.2 0.3 0.4 0.1 0.2 0.3 0.1 0.2 0.3 0.4 0.2 0.4 0.6 0.2 0.3
+ [19] 0.4 0.5 0.2 0.4 1.1 1.0 1.0 1.3 1.0 1.1 1.1 1.2 1.4 1.0 1.2 1.3 1.0 1.3
+ [37] 1.2 1.3 1.5 1.3 1.2 1.3 1.4 1.3 1.5 1.6 1.7 1.3 1.4 1.5 1.2 1.4 1.5 1.6
+ [55] 1.4 1.8 1.5 1.8 2.0 1.5 1.7 1.9 2.0 1.5 1.6 1.8 1.9 2.0 2.3 2.4 2.0 2.3
+ [73] 1.9 2.3 2.1 2.3 1.8 2.1 1.4 1.8 2.1 2.2 2.4 2.1 2.3 2.5 1.6 1.8 2.2 2.1
+ [91] 2.3 1.8 2.5 1.9 2.3 2.5 1.8 2.0 2.1 2.0 2.2 2.3
+
+$number
+  [1] 1 1 2 4 2 1 2 8 3 2 7 1 3 5 1 1 1 1 1 1 1 1 1 2 2 1 1 1 1 1 1 1 1 3 1 2 1
+ [38] 2 1 2 1 1 2 1 5 1 1 1 1 1 1 2 1 1 1 3 2 2 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1
+ [75] 1 1 2 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+
+> 
+> ## Discretized uncorrelated Gaussian:
+> ## Don't show: 
+> set.seed(1)
+> ## End(Don't show)
+> require(stats)
+> xy <- data.frame(x = round(sort(rnorm(100))), y = rnorm(100))
+> xyTable(xy, digits = 1)
+$x
+ [1] -2 -2 -2 -2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1  0  0  0  0  0  0  0  0
+[26]  0  0  0  0  0  0  0  0  0  0  0  0  0  0  1  1  1  1  1  1  1  1  1  1  1
+[51]  1  1  1  1  1  1  2  2  2  2
+
+$y
+ [1] -0.90 -0.60  0.04  0.20 -0.70 -0.60 -0.50 -0.40 -0.30 -0.20 -0.10  0.40
+[13]  0.50  0.70  0.90  1.00  2.00 -2.00 -1.00 -0.90 -0.80 -0.70 -0.60 -0.50
+[25] -0.30 -0.20 -0.07 -0.06 -0.04 -0.02  0.02  0.06  0.30  0.40  0.50  0.70
+[37]  0.90  1.00  2.00 -1.00 -0.90 -0.80 -0.70 -0.40 -0.30 -0.20 -0.10 -0.08
+[49] -0.03  0.10  0.20  0.40  0.50  0.80  1.00  2.00 -1.00 -0.40  0.40  1.00
+
+$number
+ [1] 1 1 1 1 2 1 2 1 2 4 1 1 1 1 1 2 2 5 5 1 1 2 3 2 3 1 1 1 1 1 1 1 1 1 2 1 1 3
+[39] 3 3 1 1 1 1 2 2 1 1 1 1 2 1 2 2 4 2 3 1 1 1
+
+> 
+> 
+> 
+> cleanEx()
+> nameEx("xyz.coords")
+> ### * xyz.coords
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: xyz.coords
+> ### Title: Extracting Plotting Structures
+> ### Aliases: xyz.coords
+> ### Keywords: dplot
+> 
+> ### ** Examples
+> 
+> xyz.coords(data.frame(10*1:9, -4), y = NULL, z = NULL)
+$x
+[1] 1 2 3 4 5 6 7 8 9
+
+$y
+[1] 10 20 30 40 50 60 70 80 90
+
+$z
+[1] -4 -4 -4 -4 -4 -4 -4 -4 -4
+
+$xlab
+[1] "Index"
+
+$ylab
+NULL
+
+$zlab
+NULL
+
+> 
+> xyz.coords(1:5, stats::fft(1:5), z = NULL, xlab = "X", ylab = "Y")
+$x
+[1] 15.0 -2.5 -2.5 -2.5 -2.5
+
+$y
+[1]  0.0000000  3.4409548  0.8122992 -0.8122992 -3.4409548
+
+$z
+[1] 1 2 3 4 5
+
+$xlab
+[1] "Re(Y)"
+
+$ylab
+[1] "Im(Y)"
+
+$zlab
+[1] "X"
+
+> 
+> y <- 2 * (x2 <- 10 + (x1 <- 1:10))
+> xyz.coords(y ~ x1 + x2, y = NULL, z = NULL)
+$x
+ [1]  1  2  3  4  5  6  7  8  9 10
+
+$y
+ [1] 11 12 13 14 15 16 17 18 19 20
+
+$z
+ [1] 22 24 26 28 30 32 34 36 38 40
+
+$xlab
+[1] "x1"
+
+$ylab
+[1] "x2"
+
+$zlab
+[1] "y"
+
+> 
+> xyz.coords(data.frame(x = -1:9, y = 2:12, z = 3:13), y = NULL, z = NULL,
++            log = "xy")
+Warning in xyz.coords(data.frame(x = -1:9, y = 2:12, z = 3:13), y = NULL,  :
+  2 x values <= 0 omitted from logarithmic plot
+$x
+ [1] NA NA  1  2  3  4  5  6  7  8  9
+
+$y
+ [1]  2  3  4  5  6  7  8  9 10 11 12
+
+$z
+ [1]  3  4  5  6  7  8  9 10 11 12 13
+
+$xlab
+[1] "x"
+
+$ylab
+[1] "y"
+
+$zlab
+[1] "z"
+
+> ##> Warning message: 2 x values <= 0 omitted ...
+> 
+> 
+> 
+> ### * <FOOTER>
+> ###
+> cleanEx()
+> options(digits = 7L)
+> base::cat("Time elapsed: ", proc.time() - base::get("ptime", pos = 'CheckExEnv'),"\n")
+Time elapsed:  83.971 1.605 86.106 0 0 
+> grDevices::dev.off()
+null device 
+          1 
+> ###
+> ### Local variables: ***
+> ### mode: outline-minor ***
+> ### outline-regexp: "\\(> \\)?### [*]+" ***
+> ### End: ***
+> quit('no')
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/foreign/tests/keep/codefile.sps
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/foreign/tests/keep/codefile.sps	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/foreign/tests/keep/codefile.sps	(revision 3762)
@@ -0,0 +1,16 @@
+SET DECIMAL=DOT.
+
+DATA LIST FILE= "datafile.dat"  free (",")
+ENCODING="Locale"
+/ X1 X2 * X3 (A8) 
+  .
+
+VARIABLE LABELS
+X1 "X1" 
+ X2 "X2" 
+ X3 "X3" 
+ .
+VARIABLE LEVEL X1, X2 
+ (scale).
+
+EXECUTE.
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/foreign/tests/keep/datafile.dat
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/foreign/tests/keep/datafile.dat	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/foreign/tests/keep/datafile.dat	(revision 3762)
@@ -0,0 +1,3 @@
+1,4,str_1,
+2,5,str_2,
+3,6,str_3,
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/rpart/tests/Examples/rpart-Ex.Rout.save
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/rpart/tests/Examples/rpart-Ex.Rout.save	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/rpart/tests/Examples/rpart-Ex.Rout.save	(revision 3762)
@@ -0,0 +1,1079 @@
+
+R Under development (unstable) (2019-04-05 r76323) -- "Unsuffered Consequences"
+Copyright (C) 2019 The R Foundation for Statistical Computing
+Platform: x86_64-pc-linux-gnu (64-bit)
+
+R is free software and comes with ABSOLUTELY NO WARRANTY.
+You are welcome to redistribute it under certain conditions.
+Type 'license()' or 'licence()' for distribution details.
+
+  Natural language support but running in an English locale
+
+R is a collaborative project with many contributors.
+Type 'contributors()' for more information and
+'citation()' on how to cite R or R packages in publications.
+
+Type 'demo()' for some demos, 'help()' for on-line help, or
+'help.start()' for an HTML browser interface to help.
+Type 'q()' to quit R.
+
+> pkgname <- "rpart"
+> source(file.path(R.home("share"), "R", "examples-header.R"))
+> options(warn = 1)
+> library('rpart')
+> 
+> base::assign(".oldSearch", base::search(), pos = 'CheckExEnv')
+> base::assign(".old_wd", base::getwd(), pos = 'CheckExEnv')
+> cleanEx()
+> nameEx("car.test.frame")
+> ### * car.test.frame
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: car.test.frame
+> ### Title: Automobile Data from 'Consumer Reports' 1990
+> ### Aliases: car.test.frame
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> z.auto <- rpart(Mileage ~ Weight, car.test.frame)
+> summary(z.auto)
+Call:
+rpart(formula = Mileage ~ Weight, data = car.test.frame)
+  n= 60 
+
+          CP nsplit rel error    xerror       xstd
+1 0.59534912      0 1.0000000 1.0337818 0.18046532
+2 0.13452819      1 0.4046509 0.5836606 0.10900973
+3 0.01282843      2 0.2701227 0.4409221 0.08652804
+4 0.01000000      3 0.2572943 0.4415805 0.08663003
+
+Variable importance
+Weight 
+   100 
+
+Node number 1: 60 observations,    complexity param=0.5953491
+  mean=24.58333, MSE=22.57639 
+  left son=2 (45 obs) right son=3 (15 obs)
+  Primary splits:
+      Weight < 2567.5 to the right, improve=0.5953491, (0 missing)
+
+Node number 2: 45 observations,    complexity param=0.1345282
+  mean=22.46667, MSE=8.026667 
+  left son=4 (22 obs) right son=5 (23 obs)
+  Primary splits:
+      Weight < 3087.5 to the right, improve=0.5045118, (0 missing)
+
+Node number 3: 15 observations
+  mean=30.93333, MSE=12.46222 
+
+Node number 4: 22 observations
+  mean=20.40909, MSE=2.78719 
+
+Node number 5: 23 observations,    complexity param=0.01282843
+  mean=24.43478, MSE=5.115312 
+  left son=10 (15 obs) right son=11 (8 obs)
+  Primary splits:
+      Weight < 2747.5 to the right, improve=0.1476996, (0 missing)
+
+Node number 10: 15 observations
+  mean=23.8, MSE=4.026667 
+
+Node number 11: 8 observations
+  mean=25.625, MSE=4.984375 
+
+> 
+> 
+> 
+> cleanEx()
+> nameEx("car90")
+> ### * car90
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: car90
+> ### Title: Automobile Data from 'Consumer Reports' 1990
+> ### Aliases: car90
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> data(car90)
+> plot(car90$Price/1000, car90$Weight,
++      xlab = "Price (thousands)", ylab = "Weight (lbs)")
+> mlowess <- function(x, y, ...) {
++     keep <- !(is.na(x) | is.na(y))
++     lowess(x[keep], y[keep], ...)
++ }
+> with(car90, lines(mlowess(Price/1000, Weight, f = 0.5)))
+> 
+> 
+> 
+> cleanEx()
+> nameEx("cu.summary")
+> ### * cu.summary
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: cu.summary
+> ### Title: Automobile Data from 'Consumer Reports' 1990
+> ### Aliases: cu.summary
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> fit <- rpart(Price ~ Mileage + Type + Country, cu.summary)
+> par(xpd = TRUE)
+> plot(fit, compress = TRUE)
+> text(fit, use.n = TRUE)
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("kyphosis")
+> ### * kyphosis
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: kyphosis
+> ### Title: Data on Children who have had Corrective Spinal Surgery
+> ### Aliases: kyphosis
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> fit <- rpart(Kyphosis ~ Age + Number + Start, data = kyphosis)
+> fit2 <- rpart(Kyphosis ~ Age + Number + Start, data = kyphosis,
++               parms = list(prior = c(0.65, 0.35), split = "information"))
+> fit3 <- rpart(Kyphosis ~ Age + Number + Start, data=kyphosis,
++               control = rpart.control(cp = 0.05))
+> par(mfrow = c(1,2), xpd = TRUE)
+> plot(fit)
+> text(fit, use.n = TRUE)
+> plot(fit2)
+> text(fit2, use.n = TRUE)
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("meanvar.rpart")
+> ### * meanvar.rpart
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: meanvar.rpart
+> ### Title: Mean-Variance Plot for an Rpart Object
+> ### Aliases: meanvar meanvar.rpart
+> ### Keywords: tree
+> 
+> ### ** Examples
+> 
+> z.auto <- rpart(Mileage ~ Weight, car.test.frame)
+> meanvar(z.auto, log = 'xy')
+> 
+> 
+> 
+> cleanEx()
+> nameEx("path.rpart")
+> ### * path.rpart
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: path.rpart
+> ### Title: Follow Paths to Selected Nodes of an Rpart Object
+> ### Aliases: path.rpart
+> ### Keywords: tree
+> 
+> ### ** Examples
+> 
+> fit <- rpart(Kyphosis ~ Age + Number + Start, data = kyphosis)
+> print(fit)
+n= 81 
+
+node), split, n, loss, yval, (yprob)
+      * denotes terminal node
+
+ 1) root 81 17 absent (0.79012346 0.20987654)  
+   2) Start>=8.5 62  6 absent (0.90322581 0.09677419)  
+     4) Start>=14.5 29  0 absent (1.00000000 0.00000000) *
+     5) Start< 14.5 33  6 absent (0.81818182 0.18181818)  
+      10) Age< 55 12  0 absent (1.00000000 0.00000000) *
+      11) Age>=55 21  6 absent (0.71428571 0.28571429)  
+        22) Age>=111 14  2 absent (0.85714286 0.14285714) *
+        23) Age< 111 7  3 present (0.42857143 0.57142857) *
+   3) Start< 8.5 19  8 present (0.42105263 0.57894737) *
+> path.rpart(fit, nodes = c(11, 22))
+
+ node number: 11 
+   root
+   Start>=8.5
+   Start< 14.5
+   Age>=55
+
+ node number: 22 
+   root
+   Start>=8.5
+   Start< 14.5
+   Age>=55
+   Age>=111
+> 
+> 
+> 
+> cleanEx()
+> nameEx("plot.rpart")
+> ### * plot.rpart
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: plot.rpart
+> ### Title: Plot an Rpart Object
+> ### Aliases: plot.rpart
+> ### Keywords: tree
+> 
+> ### ** Examples
+> 
+> fit <- rpart(Price ~ Mileage + Type + Country, cu.summary)
+> par(xpd = TRUE)
+> plot(fit, compress = TRUE)
+> text(fit, use.n = TRUE)
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("post.rpart")
+> ### * post.rpart
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: post.rpart
+> ### Title: PostScript Presentation Plot of an Rpart Object
+> ### Aliases: post.rpart post
+> ### Keywords: tree
+> 
+> ### ** Examples
+> 
+> ## Not run: 
+> ##D z.auto <- rpart(Mileage ~ Weight, car.test.frame)
+> ##D post(z.auto, file = "")   # display tree on active device
+> ##D    # now construct postscript version on file "pretty.ps"
+> ##D    # with no title
+> ##D post(z.auto, file = "pretty.ps", title = " ")
+> ##D z.hp <- rpart(Mileage ~ Weight + HP, car.test.frame)
+> ##D post(z.hp)
+> ## End(Not run)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("predict.rpart")
+> ### * predict.rpart
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: predict.rpart
+> ### Title: Predictions from a Fitted Rpart Object
+> ### Aliases: predict.rpart
+> ### Keywords: tree
+> 
+> ### ** Examples
+> 
+> z.auto <- rpart(Mileage ~ Weight, car.test.frame)
+> predict(z.auto)
+               Eagle Summit 4               Ford Escort   4 
+                     30.93333                      30.93333 
+               Ford Festiva 4                 Honda Civic 4 
+                     30.93333                      30.93333 
+              Mazda Protege 4              Mercury Tracer 4 
+                     30.93333                      30.93333 
+              Nissan Sentra 4              Pontiac LeMans 4 
+                     30.93333                      30.93333 
+              Subaru Loyale 4                Subaru Justy 3 
+                     30.93333                      30.93333 
+             Toyota Corolla 4               Toyota Tercel 4 
+                     30.93333                      30.93333 
+           Volkswagen Jetta 4           Chevrolet Camaro V8 
+                     30.93333                      20.40909 
+                Dodge Daytona               Ford Mustang V8 
+                     23.80000                      20.40909 
+                   Ford Probe          Honda Civic CRX Si 4 
+                     25.62500                      30.93333 
+       Honda Prelude Si 4WS 4                Nissan 240SX 4 
+                     25.62500                      23.80000 
+               Plymouth Laser                   Subaru XT 4 
+                     23.80000                      30.93333 
+                    Audi 80 4               Buick Skylark 4 
+                     25.62500                      25.62500 
+          Chevrolet Beretta 4          Chrysler Le Baron V6 
+                     25.62500                      23.80000 
+                 Ford Tempo 4                Honda Accord 4 
+                     23.80000                      23.80000 
+                  Mazda 626 4           Mitsubishi Galant 4 
+                     23.80000                      25.62500 
+          Mitsubishi Sigma V6               Nissan Stanza 4 
+                     20.40909                      23.80000 
+          Oldsmobile Calais 4                 Peugeot 405 4 
+                     25.62500                      25.62500 
+              Subaru Legacy 4                Toyota Camry 4 
+                     23.80000                      23.80000 
+                  Volvo 240 4               Acura Legend V6 
+                     23.80000                      20.40909 
+              Buick Century 4       Chrysler Le Baron Coupe 
+                     23.80000                      23.80000 
+       Chrysler New Yorker V6              Eagle Premier V6 
+                     20.40909                      20.40909 
+               Ford Taurus V6           Ford Thunderbird V6 
+                     20.40909                      20.40909 
+             Hyundai Sonata 4                  Mazda 929 V6 
+                     23.80000                      20.40909 
+             Nissan Maxima V6    Oldsmobile Cutlass Ciera 4 
+                     20.40909                      23.80000 
+Oldsmobile Cutlass Supreme V6             Toyota Cressida 6 
+                     20.40909                      20.40909 
+            Buick Le Sabre V6          Chevrolet Caprice V8 
+                     20.40909                      20.40909 
+   Ford LTD Crown Victoria V8       Chevrolet Lumina APV V6 
+                     20.40909                      20.40909 
+       Dodge Grand Caravan V6              Ford Aerostar V6 
+                     20.40909                      20.40909 
+                 Mazda MPV V6            Mitsubishi Wagon 4 
+                     20.40909                      20.40909 
+              Nissan Axxess 4                  Nissan Van 4 
+                     20.40909                      20.40909 
+> 
+> fit <- rpart(Kyphosis ~ Age + Number + Start, data = kyphosis)
+> predict(fit, type = "prob")   # class probabilities (default)
+      absent   present
+1  0.4210526 0.5789474
+2  0.8571429 0.1428571
+3  0.4210526 0.5789474
+4  0.4210526 0.5789474
+5  1.0000000 0.0000000
+6  1.0000000 0.0000000
+7  1.0000000 0.0000000
+8  1.0000000 0.0000000
+9  1.0000000 0.0000000
+10 0.4285714 0.5714286
+11 0.4285714 0.5714286
+12 1.0000000 0.0000000
+13 0.4210526 0.5789474
+14 1.0000000 0.0000000
+15 1.0000000 0.0000000
+16 1.0000000 0.0000000
+17 1.0000000 0.0000000
+18 0.8571429 0.1428571
+19 1.0000000 0.0000000
+20 1.0000000 0.0000000
+21 1.0000000 0.0000000
+22 0.4210526 0.5789474
+23 0.4285714 0.5714286
+24 0.4210526 0.5789474
+25 0.4210526 0.5789474
+26 1.0000000 0.0000000
+27 0.4210526 0.5789474
+28 0.4285714 0.5714286
+29 1.0000000 0.0000000
+30 1.0000000 0.0000000
+31 1.0000000 0.0000000
+32 0.8571429 0.1428571
+33 0.8571429 0.1428571
+34 1.0000000 0.0000000
+35 0.8571429 0.1428571
+36 1.0000000 0.0000000
+37 1.0000000 0.0000000
+38 0.4210526 0.5789474
+39 1.0000000 0.0000000
+40 0.4285714 0.5714286
+41 0.4210526 0.5789474
+42 1.0000000 0.0000000
+43 0.4210526 0.5789474
+44 0.4210526 0.5789474
+45 1.0000000 0.0000000
+46 0.8571429 0.1428571
+47 1.0000000 0.0000000
+48 0.8571429 0.1428571
+49 0.4210526 0.5789474
+50 0.8571429 0.1428571
+51 0.4285714 0.5714286
+52 1.0000000 0.0000000
+53 0.4210526 0.5789474
+54 1.0000000 0.0000000
+55 1.0000000 0.0000000
+56 1.0000000 0.0000000
+57 1.0000000 0.0000000
+58 0.4210526 0.5789474
+59 1.0000000 0.0000000
+60 0.4285714 0.5714286
+61 0.4210526 0.5789474
+62 0.4210526 0.5789474
+63 0.4210526 0.5789474
+64 1.0000000 0.0000000
+65 1.0000000 0.0000000
+66 1.0000000 0.0000000
+67 1.0000000 0.0000000
+68 0.8571429 0.1428571
+69 1.0000000 0.0000000
+70 1.0000000 0.0000000
+71 0.8571429 0.1428571
+72 0.8571429 0.1428571
+73 1.0000000 0.0000000
+74 0.8571429 0.1428571
+75 1.0000000 0.0000000
+76 1.0000000 0.0000000
+77 0.8571429 0.1428571
+78 1.0000000 0.0000000
+79 0.8571429 0.1428571
+80 0.4210526 0.5789474
+81 1.0000000 0.0000000
+> predict(fit, type = "vector") # level numbers
+ 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 
+ 2  1  2  2  1  1  1  1  1  2  2  1  2  1  1  1  1  1  1  1  1  2  2  2  2  1 
+27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 
+ 2  2  1  1  1  1  1  1  1  1  1  2  1  2  2  1  2  2  1  1  1  1  2  1  2  1 
+53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 
+ 2  1  1  1  1  2  1  2  2  2  2  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1 
+79 80 81 
+ 1  2  1 
+> predict(fit, type = "class")  # factor
+      1       2       3       4       5       6       7       8       9      10 
+present  absent present present  absent  absent  absent  absent  absent present 
+     11      12      13      14      15      16      17      18      19      20 
+present  absent present  absent  absent  absent  absent  absent  absent  absent 
+     21      22      23      24      25      26      27      28      29      30 
+ absent present present present present  absent present present  absent  absent 
+     31      32      33      34      35      36      37      38      39      40 
+ absent  absent  absent  absent  absent  absent  absent present  absent present 
+     41      42      43      44      45      46      47      48      49      50 
+present  absent present present  absent  absent  absent  absent present  absent 
+     51      52      53      54      55      56      57      58      59      60 
+present  absent present  absent  absent  absent  absent present  absent present 
+     61      62      63      64      65      66      67      68      69      70 
+present present present  absent  absent  absent  absent  absent  absent  absent 
+     71      72      73      74      75      76      77      78      79      80 
+ absent  absent  absent  absent  absent  absent  absent  absent  absent present 
+     81 
+ absent 
+Levels: absent present
+> predict(fit, type = "matrix") # level number, class frequencies, probabilities
+   [,1] [,2] [,3]      [,4]      [,5]       [,6]
+1     2    8   11 0.4210526 0.5789474 0.23456790
+2     1   12    2 0.8571429 0.1428571 0.17283951
+3     2    8   11 0.4210526 0.5789474 0.23456790
+4     2    8   11 0.4210526 0.5789474 0.23456790
+5     1   29    0 1.0000000 0.0000000 0.35802469
+6     1   29    0 1.0000000 0.0000000 0.35802469
+7     1   29    0 1.0000000 0.0000000 0.35802469
+8     1   29    0 1.0000000 0.0000000 0.35802469
+9     1   29    0 1.0000000 0.0000000 0.35802469
+10    2    3    4 0.4285714 0.5714286 0.08641975
+11    2    3    4 0.4285714 0.5714286 0.08641975
+12    1   29    0 1.0000000 0.0000000 0.35802469
+13    2    8   11 0.4210526 0.5789474 0.23456790
+14    1   12    0 1.0000000 0.0000000 0.14814815
+15    1   29    0 1.0000000 0.0000000 0.35802469
+16    1   29    0 1.0000000 0.0000000 0.35802469
+17    1   29    0 1.0000000 0.0000000 0.35802469
+18    1   12    2 0.8571429 0.1428571 0.17283951
+19    1   29    0 1.0000000 0.0000000 0.35802469
+20    1   12    0 1.0000000 0.0000000 0.14814815
+21    1   29    0 1.0000000 0.0000000 0.35802469
+22    2    8   11 0.4210526 0.5789474 0.23456790
+23    2    3    4 0.4285714 0.5714286 0.08641975
+24    2    8   11 0.4210526 0.5789474 0.23456790
+25    2    8   11 0.4210526 0.5789474 0.23456790
+26    1   12    0 1.0000000 0.0000000 0.14814815
+27    2    8   11 0.4210526 0.5789474 0.23456790
+28    2    3    4 0.4285714 0.5714286 0.08641975
+29    1   29    0 1.0000000 0.0000000 0.35802469
+30    1   29    0 1.0000000 0.0000000 0.35802469
+31    1   29    0 1.0000000 0.0000000 0.35802469
+32    1   12    2 0.8571429 0.1428571 0.17283951
+33    1   12    2 0.8571429 0.1428571 0.17283951
+34    1   29    0 1.0000000 0.0000000 0.35802469
+35    1   12    2 0.8571429 0.1428571 0.17283951
+36    1   29    0 1.0000000 0.0000000 0.35802469
+37    1   12    0 1.0000000 0.0000000 0.14814815
+38    2    8   11 0.4210526 0.5789474 0.23456790
+39    1   12    0 1.0000000 0.0000000 0.14814815
+40    2    3    4 0.4285714 0.5714286 0.08641975
+41    2    8   11 0.4210526 0.5789474 0.23456790
+42    1   12    0 1.0000000 0.0000000 0.14814815
+43    2    8   11 0.4210526 0.5789474 0.23456790
+44    2    8   11 0.4210526 0.5789474 0.23456790
+45    1   29    0 1.0000000 0.0000000 0.35802469
+46    1   12    2 0.8571429 0.1428571 0.17283951
+47    1   29    0 1.0000000 0.0000000 0.35802469
+48    1   12    2 0.8571429 0.1428571 0.17283951
+49    2    8   11 0.4210526 0.5789474 0.23456790
+50    1   12    2 0.8571429 0.1428571 0.17283951
+51    2    3    4 0.4285714 0.5714286 0.08641975
+52    1   29    0 1.0000000 0.0000000 0.35802469
+53    2    8   11 0.4210526 0.5789474 0.23456790
+54    1   29    0 1.0000000 0.0000000 0.35802469
+55    1   29    0 1.0000000 0.0000000 0.35802469
+56    1   29    0 1.0000000 0.0000000 0.35802469
+57    1   12    0 1.0000000 0.0000000 0.14814815
+58    2    8   11 0.4210526 0.5789474 0.23456790
+59    1   12    0 1.0000000 0.0000000 0.14814815
+60    2    3    4 0.4285714 0.5714286 0.08641975
+61    2    8   11 0.4210526 0.5789474 0.23456790
+62    2    8   11 0.4210526 0.5789474 0.23456790
+63    2    8   11 0.4210526 0.5789474 0.23456790
+64    1   29    0 1.0000000 0.0000000 0.35802469
+65    1   29    0 1.0000000 0.0000000 0.35802469
+66    1   12    0 1.0000000 0.0000000 0.14814815
+67    1   29    0 1.0000000 0.0000000 0.35802469
+68    1   12    2 0.8571429 0.1428571 0.17283951
+69    1   12    0 1.0000000 0.0000000 0.14814815
+70    1   29    0 1.0000000 0.0000000 0.35802469
+71    1   12    2 0.8571429 0.1428571 0.17283951
+72    1   12    2 0.8571429 0.1428571 0.17283951
+73    1   29    0 1.0000000 0.0000000 0.35802469
+74    1   12    2 0.8571429 0.1428571 0.17283951
+75    1   29    0 1.0000000 0.0000000 0.35802469
+76    1   29    0 1.0000000 0.0000000 0.35802469
+77    1   12    2 0.8571429 0.1428571 0.17283951
+78    1   12    0 1.0000000 0.0000000 0.14814815
+79    1   12    2 0.8571429 0.1428571 0.17283951
+80    2    8   11 0.4210526 0.5789474 0.23456790
+81    1   12    0 1.0000000 0.0000000 0.14814815
+> 
+> sub <- c(sample(1:50, 25), sample(51:100, 25), sample(101:150, 25))
+> fit <- rpart(Species ~ ., data = iris, subset = sub)
+> fit
+n= 75 
+
+node), split, n, loss, yval, (yprob)
+      * denotes terminal node
+
+1) root 75 50 setosa (0.33333333 0.33333333 0.33333333)  
+  2) Petal.Length< 2.5 25  0 setosa (1.00000000 0.00000000 0.00000000) *
+  3) Petal.Length>=2.5 50 25 versicolor (0.00000000 0.50000000 0.50000000)  
+    6) Petal.Length< 4.85 26  2 versicolor (0.00000000 0.92307692 0.07692308) *
+    7) Petal.Length>=4.85 24  1 virginica (0.00000000 0.04166667 0.95833333) *
+> table(predict(fit, iris[-sub,], type = "class"), iris[-sub, "Species"])
+            
+             setosa versicolor virginica
+  setosa         25          0         0
+  versicolor      0         22         1
+  virginica       0          3        24
+> 
+> 
+> 
+> cleanEx()
+> nameEx("print.rpart")
+> ### * print.rpart
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: print.rpart
+> ### Title: Print an Rpart Object
+> ### Aliases: print.rpart
+> ### Keywords: tree
+> 
+> ### ** Examples
+> 
+> z.auto <- rpart(Mileage ~ Weight, car.test.frame)
+> z.auto
+n= 60 
+
+node), split, n, deviance, yval
+      * denotes terminal node
+
+ 1) root 60 1354.58300 24.58333  
+   2) Weight>=2567.5 45  361.20000 22.46667  
+     4) Weight>=3087.5 22   61.31818 20.40909 *
+     5) Weight< 3087.5 23  117.65220 24.43478  
+      10) Weight>=2747.5 15   60.40000 23.80000 *
+      11) Weight< 2747.5 8   39.87500 25.62500 *
+   3) Weight< 2567.5 15  186.93330 30.93333 *
+> ## Not run: 
+> ##D node), split, n, deviance, yval
+> ##D       * denotes terminal node
+> ##D 
+> ##D  1) root 60 1354.58300 24.58333  
+> ##D    2) Weight>=2567.5 45  361.20000 22.46667  
+> ##D      4) Weight>=3087.5 22   61.31818 20.40909 *
+> ##D      5) Weight<3087.5 23  117.65220 24.43478  
+> ##D       10) Weight>=2747.5 15   60.40000 23.80000 *
+> ##D       11) Weight<2747.5 8   39.87500 25.62500 *
+> ##D    3) Weight<2567.5 15  186.93330 30.93333 *
+> ## End(Not run)
+> 
+> 
+> cleanEx()
+> nameEx("printcp")
+> ### * printcp
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: printcp
+> ### Title: Displays CP table for Fitted Rpart Object
+> ### Aliases: printcp
+> ### Keywords: tree
+> 
+> ### ** Examples
+> 
+> z.auto <- rpart(Mileage ~ Weight, car.test.frame)
+> printcp(z.auto)
+
+Regression tree:
+rpart(formula = Mileage ~ Weight, data = car.test.frame)
+
+Variables actually used in tree construction:
+[1] Weight
+
+Root node error: 1354.6/60 = 22.576
+
+n= 60 
+
+        CP nsplit rel error  xerror     xstd
+1 0.595349      0   1.00000 1.03378 0.180465
+2 0.134528      1   0.40465 0.58366 0.109010
+3 0.012828      2   0.27012 0.44092 0.086528
+4 0.010000      3   0.25729 0.44158 0.086630
+> ## Not run: 
+> ##D Regression tree:
+> ##D rpart(formula = Mileage ~ Weight, data = car.test.frame)
+> ##D 
+> ##D Variables actually used in tree construction:
+> ##D [1] Weight
+> ##D 
+> ##D Root node error: 1354.6/60 = 22.576
+> ##D 
+> ##D         CP nsplit rel error  xerror     xstd 
+> ##D 1 0.595349      0   1.00000 1.03436 0.178526
+> ##D 2 0.134528      1   0.40465 0.60508 0.105217
+> ##D 3 0.012828      2   0.27012 0.45153 0.083330
+> ##D 4 0.010000      3   0.25729 0.44826 0.076998
+> ## End(Not run)
+> 
+> 
+> cleanEx()
+> nameEx("prune.rpart")
+> ### * prune.rpart
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: prune.rpart
+> ### Title: Cost-complexity Pruning of an Rpart Object
+> ### Aliases: prune.rpart prune
+> ### Keywords: tree
+> 
+> ### ** Examples
+> 
+> z.auto <- rpart(Mileage ~ Weight, car.test.frame)
+> zp <- prune(z.auto, cp = 0.1)
+> plot(zp) #plot smaller rpart object
+> 
+> 
+> 
+> cleanEx()
+> nameEx("residuals.rpart")
+> ### * residuals.rpart
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: residuals.rpart
+> ### Title: Residuals From a Fitted Rpart Object
+> ### Aliases: residuals.rpart
+> ### Keywords: tree
+> 
+> ### ** Examples
+> 
+> fit <- rpart(skips ~ Opening + Solder + Mask + PadType + Panel,
++              data = solder.balance, method = "anova")
+> summary(residuals(fit))
+    Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
+-13.8000  -1.0361  -0.6833   0.0000   0.9639  16.2000 
+> plot(predict(fit),residuals(fit))
+> 
+> 
+> 
+> cleanEx()
+> nameEx("rpart")
+> ### * rpart
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: rpart
+> ### Title: Recursive Partitioning and Regression Trees
+> ### Aliases: rpart
+> ### Keywords: tree
+> 
+> ### ** Examples
+> 
+> fit <- rpart(Kyphosis ~ Age + Number + Start, data = kyphosis)
+> fit2 <- rpart(Kyphosis ~ Age + Number + Start, data = kyphosis,
++               parms = list(prior = c(.65,.35), split = "information"))
+> fit3 <- rpart(Kyphosis ~ Age + Number + Start, data = kyphosis,
++               control = rpart.control(cp = 0.05))
+> par(mfrow = c(1,2), xpd = NA) # otherwise on some devices the text is clipped
+> plot(fit)
+> text(fit, use.n = TRUE)
+> plot(fit2)
+> text(fit2, use.n = TRUE)
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("rsq.rpart")
+> ### * rsq.rpart
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: rsq.rpart
+> ### Title: Plots the Approximate R-Square for the Different Splits
+> ### Aliases: rsq.rpart
+> ### Keywords: tree
+> 
+> ### ** Examples
+> 
+> z.auto <- rpart(Mileage ~ Weight, car.test.frame)
+> rsq.rpart(z.auto)
+
+Regression tree:
+rpart(formula = Mileage ~ Weight, data = car.test.frame)
+
+Variables actually used in tree construction:
+[1] Weight
+
+Root node error: 1354.6/60 = 22.576
+
+n= 60 
+
+        CP nsplit rel error  xerror     xstd
+1 0.595349      0   1.00000 1.03378 0.180465
+2 0.134528      1   0.40465 0.58366 0.109010
+3 0.012828      2   0.27012 0.44092 0.086528
+4 0.010000      3   0.25729 0.44158 0.086630
+> 
+> 
+> 
+> cleanEx()
+> nameEx("snip.rpart")
+> ### * snip.rpart
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: snip.rpart
+> ### Title: Snip Subtrees of an Rpart Object
+> ### Aliases: snip.rpart
+> ### Keywords: tree
+> 
+> ### ** Examples
+> 
+> ## dataset not in R
+> ## Not run: 
+> ##D z.survey <- rpart(market.survey) # grow the rpart object
+> ##D plot(z.survey) # plot the tree
+> ##D z.survey2 <- snip.rpart(z.survey, toss = 2) # trim subtree at node 2
+> ##D plot(z.survey2) # plot new tree
+> ##D 
+> ##D # can also interactively select the node using the mouse in the
+> ##D # graphics window
+> ## End(Not run)
+> 
+> 
+> cleanEx()
+> nameEx("solder.balance")
+> ### * solder.balance
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: solder.balance
+> ### Title: Soldering of Components on Printed-Circuit Boards
+> ### Aliases: solder.balance solder
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> fit <- rpart(skips ~ Opening + Solder + Mask + PadType + Panel,
++              data = solder.balance, method = "anova")
+> summary(residuals(fit))
+    Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
+-13.8000  -1.0361  -0.6833   0.0000   0.9639  16.2000 
+> plot(predict(fit), residuals(fit))
+> 
+> 
+> 
+> cleanEx()
+> nameEx("stagec")
+> ### * stagec
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: stagec
+> ### Title: Stage C Prostate Cancer
+> ### Aliases: stagec
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> require(survival)
+Loading required package: survival
+> rpart(Surv(pgtime, pgstat) ~ ., stagec)
+n= 146 
+
+node), split, n, deviance, yval
+      * denotes terminal node
+
+ 1) root 146 192.111100 1.0000000  
+   2) grade< 2.5 61  44.799010 0.3634439  
+     4) g2< 11.36 33   9.117405 0.1229835 *
+     5) g2>=11.36 28  27.602190 0.7345610  
+      10) gleason< 5.5 20  14.297110 0.5304115 *
+      11) gleason>=5.5 8  11.094650 1.3069940 *
+   3) grade>=2.5 85 122.441500 1.6148600  
+     6) age>=56.5 75 103.062900 1.4255040  
+      12) gleason< 7.5 50  66.119800 1.1407320  
+        24) g2< 13.475 24  27.197170 0.8007306 *
+        25) g2>=13.475 26  36.790960 1.4570210  
+          50) g2>=17.915 15  20.332740 0.9789825 *
+          51) g2< 17.915 11  13.459010 2.1714480 *
+      13) gleason>=7.5 25  33.487250 2.0307290  
+        26) g2>=15.29 10  11.588480 1.2156230 *
+        27) g2< 15.29 15  18.939150 2.7053610 *
+     7) age< 56.5 10  13.769010 3.1822320 *
+> 
+> 
+> 
+> cleanEx()
+
+detaching ‘package:survival’
+
+> nameEx("summary.rpart")
+> ### * summary.rpart
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: summary.rpart
+> ### Title: Summarize a Fitted Rpart Object
+> ### Aliases: summary.rpart
+> ### Keywords: tree
+> 
+> ### ** Examples
+> 
+> ## a regression tree
+> z.auto <- rpart(Mileage ~ Weight, car.test.frame)
+> summary(z.auto)
+Call:
+rpart(formula = Mileage ~ Weight, data = car.test.frame)
+  n= 60 
+
+          CP nsplit rel error    xerror       xstd
+1 0.59534912      0 1.0000000 1.0337818 0.18046532
+2 0.13452819      1 0.4046509 0.5836606 0.10900973
+3 0.01282843      2 0.2701227 0.4409221 0.08652804
+4 0.01000000      3 0.2572943 0.4415805 0.08663003
+
+Variable importance
+Weight 
+   100 
+
+Node number 1: 60 observations,    complexity param=0.5953491
+  mean=24.58333, MSE=22.57639 
+  left son=2 (45 obs) right son=3 (15 obs)
+  Primary splits:
+      Weight < 2567.5 to the right, improve=0.5953491, (0 missing)
+
+Node number 2: 45 observations,    complexity param=0.1345282
+  mean=22.46667, MSE=8.026667 
+  left son=4 (22 obs) right son=5 (23 obs)
+  Primary splits:
+      Weight < 3087.5 to the right, improve=0.5045118, (0 missing)
+
+Node number 3: 15 observations
+  mean=30.93333, MSE=12.46222 
+
+Node number 4: 22 observations
+  mean=20.40909, MSE=2.78719 
+
+Node number 5: 23 observations,    complexity param=0.01282843
+  mean=24.43478, MSE=5.115312 
+  left son=10 (15 obs) right son=11 (8 obs)
+  Primary splits:
+      Weight < 2747.5 to the right, improve=0.1476996, (0 missing)
+
+Node number 10: 15 observations
+  mean=23.8, MSE=4.026667 
+
+Node number 11: 8 observations
+  mean=25.625, MSE=4.984375 
+
+> 
+> ## a classification tree with multiple variables and surrogate splits.
+> summary(rpart(Kyphosis ~ Age + Number + Start, data = kyphosis))
+Call:
+rpart(formula = Kyphosis ~ Age + Number + Start, data = kyphosis)
+  n= 81 
+
+          CP nsplit rel error   xerror      xstd
+1 0.17647059      0 1.0000000 1.000000 0.2155872
+2 0.01960784      1 0.8235294 1.058824 0.2200975
+3 0.01000000      4 0.7647059 1.058824 0.2200975
+
+Variable importance
+ Start    Age Number 
+    64     24     12 
+
+Node number 1: 81 observations,    complexity param=0.1764706
+  predicted class=absent   expected loss=0.2098765  P(node) =1
+    class counts:    64    17
+   probabilities: 0.790 0.210 
+  left son=2 (62 obs) right son=3 (19 obs)
+  Primary splits:
+      Start  < 8.5  to the right, improve=6.762330, (0 missing)
+      Number < 5.5  to the left,  improve=2.866795, (0 missing)
+      Age    < 39.5 to the left,  improve=2.250212, (0 missing)
+  Surrogate splits:
+      Number < 6.5  to the left,  agree=0.802, adj=0.158, (0 split)
+
+Node number 2: 62 observations,    complexity param=0.01960784
+  predicted class=absent   expected loss=0.09677419  P(node) =0.7654321
+    class counts:    56     6
+   probabilities: 0.903 0.097 
+  left son=4 (29 obs) right son=5 (33 obs)
+  Primary splits:
+      Start  < 14.5 to the right, improve=1.0205280, (0 missing)
+      Age    < 55   to the left,  improve=0.6848635, (0 missing)
+      Number < 4.5  to the left,  improve=0.2975332, (0 missing)
+  Surrogate splits:
+      Number < 3.5  to the left,  agree=0.645, adj=0.241, (0 split)
+      Age    < 16   to the left,  agree=0.597, adj=0.138, (0 split)
+
+Node number 3: 19 observations
+  predicted class=present  expected loss=0.4210526  P(node) =0.2345679
+    class counts:     8    11
+   probabilities: 0.421 0.579 
+
+Node number 4: 29 observations
+  predicted class=absent   expected loss=0  P(node) =0.3580247
+    class counts:    29     0
+   probabilities: 1.000 0.000 
+
+Node number 5: 33 observations,    complexity param=0.01960784
+  predicted class=absent   expected loss=0.1818182  P(node) =0.4074074
+    class counts:    27     6
+   probabilities: 0.818 0.182 
+  left son=10 (12 obs) right son=11 (21 obs)
+  Primary splits:
+      Age    < 55   to the left,  improve=1.2467530, (0 missing)
+      Start  < 12.5 to the right, improve=0.2887701, (0 missing)
+      Number < 3.5  to the right, improve=0.1753247, (0 missing)
+  Surrogate splits:
+      Start  < 9.5  to the left,  agree=0.758, adj=0.333, (0 split)
+      Number < 5.5  to the right, agree=0.697, adj=0.167, (0 split)
+
+Node number 10: 12 observations
+  predicted class=absent   expected loss=0  P(node) =0.1481481
+    class counts:    12     0
+   probabilities: 1.000 0.000 
+
+Node number 11: 21 observations,    complexity param=0.01960784
+  predicted class=absent   expected loss=0.2857143  P(node) =0.2592593
+    class counts:    15     6
+   probabilities: 0.714 0.286 
+  left son=22 (14 obs) right son=23 (7 obs)
+  Primary splits:
+      Age    < 111  to the right, improve=1.71428600, (0 missing)
+      Start  < 12.5 to the right, improve=0.79365080, (0 missing)
+      Number < 3.5  to the right, improve=0.07142857, (0 missing)
+
+Node number 22: 14 observations
+  predicted class=absent   expected loss=0.1428571  P(node) =0.1728395
+    class counts:    12     2
+   probabilities: 0.857 0.143 
+
+Node number 23: 7 observations
+  predicted class=present  expected loss=0.4285714  P(node) =0.08641975
+    class counts:     3     4
+   probabilities: 0.429 0.571 
+
+> 
+> 
+> 
+> cleanEx()
+> nameEx("text.rpart")
+> ### * text.rpart
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: text.rpart
+> ### Title: Place Text on a Dendrogram Plot
+> ### Aliases: text.rpart
+> ### Keywords: tree
+> 
+> ### ** Examples
+> 
+> freen.tr <- rpart(y ~ ., freeny)
+> par(xpd = TRUE)
+> plot(freen.tr)
+> text(freen.tr, use.n = TRUE, all = TRUE)
+> 
+> 
+> 
+> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
+> cleanEx()
+> nameEx("xpred.rpart")
+> ### * xpred.rpart
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: xpred.rpart
+> ### Title: Return Cross-Validated Predictions
+> ### Aliases: xpred.rpart
+> ### Keywords: tree
+> 
+> ### ** Examples
+> 
+> fit <- rpart(Mileage ~ Weight, car.test.frame)
+> xmat <- xpred.rpart(fit)
+> xerr <- (xmat - car.test.frame$Mileage)^2
+> apply(xerr, 2, sum)   # cross-validated error estimate
+0.79767456 0.28300396 0.04154257 0.01132626 
+ 1396.6687   773.1546   577.8990   594.1341 
+> 
+> # approx same result as rel. error from printcp(fit)
+> apply(xerr, 2, sum)/var(car.test.frame$Mileage) 
+0.79767456 0.28300396 0.04154257 0.01132626 
+  60.83306   33.67539   25.17087   25.87800 
+> printcp(fit)
+
+Regression tree:
+rpart(formula = Mileage ~ Weight, data = car.test.frame)
+
+Variables actually used in tree construction:
+[1] Weight
+
+Root node error: 1354.6/60 = 22.576
+
+n= 60 
+
+        CP nsplit rel error  xerror     xstd
+1 0.595349      0   1.00000 1.03378 0.180465
+2 0.134528      1   0.40465 0.58366 0.109010
+3 0.012828      2   0.27012 0.44092 0.086528
+4 0.010000      3   0.25729 0.44158 0.086630
+> 
+> 
+> 
+> ### * <FOOTER>
+> ###
+> cleanEx()
+> options(digits = 7L)
+> base::cat("Time elapsed: ", proc.time() - base::get("ptime", pos = 'CheckExEnv'),"\n")
+Time elapsed:  0.777 0.048 0.825 0 0 
+> grDevices::dev.off()
+null device 
+          1 
+> ###
+> ### Local variables: ***
+> ### mode: outline-minor ***
+> ### outline-regexp: "\\(> \\)?### [*]+" ***
+> ### End: ***
+> quit('no')
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/nona/nona.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/nona/nona.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/nona/nona.h	(revision 3762)
@@ -0,0 +1,88 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; tab-width: 4 -*-
+//
+// nona.h: Rcpp R/C++ interface class library -- noNA handling
+//
+// Copyright (C) 2010 - 2011 Dirk Eddelbuettel and Romain Francois
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+#ifndef RCPP_SUGAR_NONA_NONA_H
+#define RCPP_SUGAR_NONA_NONA_H
+
+namespace Rcpp{
+namespace sugar {
+
+    template <int RTYPE, bool NA, typename VECTOR>
+    class Nona : public Rcpp::VectorBase<RTYPE,false, Nona<RTYPE,NA,VECTOR> > {
+    public:
+        typedef typename Rcpp::VectorBase<RTYPE,NA,VECTOR> SUGAR_TYPE ;
+        typedef typename Rcpp::traits::storage_type<RTYPE>::type STORAGE ;
+
+        Nona( const SUGAR_TYPE& expr) : data(expr.get_ref()){}
+
+        inline R_xlen_t size() const { return data.size() ; }
+        inline STORAGE operator[](R_xlen_t i) const { return data[i] ; }
+
+    private:
+        const VECTOR& data ;
+    } ;
+
+    // specialization when the expression is actually a vector expression
+    template <int RTYPE, bool NA>
+    class Nona< RTYPE,NA,Rcpp::Vector<RTYPE> > : public Rcpp::VectorBase<RTYPE,false, Nona<RTYPE,NA,Rcpp::Vector<RTYPE> > > {
+    public:
+        typedef typename Rcpp::VectorBase<RTYPE,NA, Rcpp::Vector<RTYPE> > SUGAR_TYPE ;
+        typedef typename Rcpp::traits::storage_type<RTYPE>::type STORAGE ;
+        typedef typename Rcpp::Vector<RTYPE>::const_iterator iterator ;
+
+        Nona( const SUGAR_TYPE& expr) : data(expr.get_ref().begin()), n(expr.size()){}
+
+        inline R_xlen_t size() const { return n ; }
+        inline STORAGE operator[](R_xlen_t i) const { return data[i] ; }
+
+    private:
+        iterator data ;
+        R_xlen_t n ;
+    } ;
+
+    template <typename T>
+    class NonaPrimitive {
+    public:
+        NonaPrimitive( T t) : x(t){}
+        inline operator T(){ return x ; }
+
+    private:
+        T x ;
+    } ;
+
+}
+
+template <int RTYPE, bool NA, typename VECTOR>
+inline sugar::Nona<RTYPE,NA,VECTOR> noNA( const Rcpp::VectorBase<RTYPE,NA,VECTOR>& vec ){
+    return sugar::Nona<RTYPE,NA,VECTOR>( vec ) ;
+}
+
+inline sugar::NonaPrimitive<double> noNA( double x ){
+    return sugar::NonaPrimitive<double>( x ) ;
+}
+inline sugar::NonaPrimitive<int> noNA( int x ){
+    return sugar::NonaPrimitive<int>( x ) ;
+}
+
+
+}
+
+#endif
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/operators/Comparator.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/operators/Comparator.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/operators/Comparator.h	(revision 3762)
@@ -0,0 +1,117 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; tab-width: 8 -*-
+//
+// LessThan.h: Rcpp R/C++ interface class library -- vector operators
+//
+// Copyright (C) 2010 - 2011 Dirk Eddelbuettel and Romain Francois
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+#ifndef Rcpp__sugar__Comparator_h
+#define Rcpp__sugar__Comparator_h
+
+namespace Rcpp{
+namespace sugar{
+
+template <int RTYPE, typename Operator, bool LHS_NA, typename LHS_T, bool RHS_NA, typename RHS_T>
+class Comparator :
+	public ::Rcpp::VectorBase< LGLSXP, true, Comparator<RTYPE,Operator,LHS_NA,LHS_T,RHS_NA,RHS_T> > {
+
+public:
+	typedef typename Rcpp::VectorBase<RTYPE,LHS_NA,LHS_T> LHS_TYPE ;
+	typedef typename Rcpp::VectorBase<RTYPE,RHS_NA,RHS_T> RHS_TYPE ;
+	typedef typename traits::storage_type<RTYPE>::type STORAGE ;
+
+	Comparator( const LHS_TYPE& lhs_, const RHS_TYPE& rhs_) :
+		lhs(lhs_), rhs(rhs_), op() {}
+
+	inline int operator[]( R_xlen_t i ) const {
+		STORAGE x = lhs[i] ;
+		if( Rcpp::traits::is_na<RTYPE>( x ) ) return NA_LOGICAL ;
+		STORAGE y = rhs[i] ;
+		if( Rcpp::traits::is_na<RTYPE>( y ) ) return NA_LOGICAL ;
+		return op( x, y ) ;
+	}
+
+	inline R_xlen_t size() const { return lhs.size() ; }
+
+private:
+	const LHS_TYPE& lhs ;
+	const RHS_TYPE& rhs ;
+	Operator op ;
+
+} ;
+
+
+
+template <int RTYPE, typename Operator, typename LHS_T, bool RHS_NA, typename RHS_T>
+class Comparator<RTYPE,Operator,false,LHS_T,RHS_NA,RHS_T> :
+	public ::Rcpp::VectorBase< LGLSXP, true, Comparator<RTYPE,Operator,false,LHS_T,RHS_NA,RHS_T> > {
+
+public:
+	typedef typename Rcpp::VectorBase<RTYPE,false,LHS_T> LHS_TYPE ;
+	typedef typename Rcpp::VectorBase<RTYPE,RHS_NA,RHS_T> RHS_TYPE ;
+	typedef typename traits::storage_type<RTYPE>::type STORAGE ;
+
+	Comparator( const LHS_TYPE& lhs_, const RHS_TYPE& rhs_) :
+		lhs(lhs_), rhs(rhs_), op() {}
+
+	inline int operator[]( R_xlen_t i ) const {
+		STORAGE y = rhs[i] ;
+		if( Rcpp::traits::is_na<RTYPE>( y ) ) return NA_LOGICAL ;
+		return op( lhs[i], y ) ;
+	}
+
+	inline R_xlen_t size() const { return lhs.size() ; }
+
+private:
+	const LHS_TYPE& lhs ;
+	const RHS_TYPE& rhs ;
+	Operator op ;
+
+} ;
+
+
+template <int RTYPE, typename Operator, typename LHS_T, typename RHS_T>
+class Comparator<RTYPE,Operator,false,LHS_T,false,RHS_T> :
+	public ::Rcpp::VectorBase< LGLSXP, true, Comparator<RTYPE,Operator,false,LHS_T,false,RHS_T> > {
+
+public:
+	typedef typename Rcpp::VectorBase<RTYPE,false,LHS_T> LHS_TYPE ;
+	typedef typename Rcpp::VectorBase<RTYPE,false,RHS_T> RHS_TYPE ;
+	typedef typename traits::storage_type<RTYPE>::type STORAGE ;
+
+	Comparator( const LHS_TYPE& lhs_, const RHS_TYPE& rhs_) :
+		lhs(lhs_), rhs(rhs_), op() {}
+
+	inline int operator[]( R_xlen_t i ) const {
+		return op( lhs[i], rhs[i] ) ;
+	}
+
+	inline R_xlen_t size() const { return lhs.size() ; }
+
+private:
+	const LHS_TYPE& lhs ;
+	const RHS_TYPE& rhs ;
+	Operator op ;
+
+} ;
+
+
+}
+}
+
+
+#endif
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/operators/divides.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/operators/divides.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/operators/divides.h	(revision 3762)
@@ -0,0 +1,449 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; tab-width: 8 -*-
+//
+// divides.h: Rcpp R/C++ interface class library -- operator-
+//
+// Copyright (C) 2010 - 2011 Dirk Eddelbuettel and Romain Francois
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+#ifndef Rcpp__sugar__divides_h
+#define Rcpp__sugar__divides_h
+
+namespace Rcpp{
+namespace sugar{
+
+	template <int RTYPE, bool LHS_NA, typename LHS_T, bool RHS_NA, typename RHS_T >
+	class Divides_Vector_Vector : public Rcpp::VectorBase<RTYPE,true, Divides_Vector_Vector<RTYPE,LHS_NA,LHS_T,RHS_NA,RHS_T> > {
+	public:
+		typedef typename Rcpp::VectorBase<RTYPE,LHS_NA,LHS_T> LHS_TYPE ;
+		typedef typename Rcpp::VectorBase<RTYPE,RHS_NA,RHS_T> RHS_TYPE ;
+		typedef typename traits::storage_type<RTYPE>::type STORAGE ;
+		typedef typename Rcpp::traits::Extractor< RTYPE, LHS_NA, LHS_T>::type LHS_EXT ;
+		typedef typename Rcpp::traits::Extractor< RTYPE, RHS_NA, RHS_T>::type RHS_EXT ;
+
+		Divides_Vector_Vector( const LHS_TYPE& lhs_, const RHS_TYPE& rhs_ ) :
+			lhs(lhs_.get_ref()), rhs(rhs_.get_ref()) {}
+
+		inline STORAGE operator[]( R_xlen_t i ) const {
+			STORAGE x = lhs[i] ;
+			if( Rcpp::traits::is_na<RTYPE>( x ) ) return x ;
+			STORAGE y = rhs[i] ;
+			return Rcpp::traits::is_na<RTYPE>( y ) ? y : ( x / y ) ;
+		}
+
+		inline R_xlen_t size() const { return lhs.size() ; }
+
+	private:
+		const LHS_EXT& lhs ;
+		const RHS_EXT& rhs ;
+	} ;
+	// RTYPE = REALSXP
+	template <bool LHS_NA, typename LHS_T, bool RHS_NA, typename RHS_T >
+	class Divides_Vector_Vector<REALSXP,LHS_NA,LHS_T,RHS_NA,RHS_T> :
+	    public Rcpp::VectorBase<REALSXP,true, Divides_Vector_Vector<REALSXP,LHS_NA,LHS_T,RHS_NA,RHS_T> > {
+	public:
+		typedef typename Rcpp::VectorBase<REALSXP,LHS_NA,LHS_T> LHS_TYPE ;
+		typedef typename Rcpp::VectorBase<REALSXP,RHS_NA,RHS_T> RHS_TYPE ;
+		typedef typename Rcpp::traits::Extractor<REALSXP, LHS_NA, LHS_T>::type LHS_EXT ;
+		typedef typename Rcpp::traits::Extractor<REALSXP, RHS_NA, RHS_T>::type RHS_EXT ;
+
+		Divides_Vector_Vector( const LHS_TYPE& lhs_, const RHS_TYPE& rhs_ ) :
+			lhs(lhs_.get_ref()), rhs(rhs_.get_ref()) {}
+
+		inline double operator[]( R_xlen_t i ) const {
+			return lhs[i] / rhs[i] ;
+		}
+
+		inline R_xlen_t size() const { return lhs.size() ; }
+
+	private:
+		const LHS_EXT& lhs ;
+		const RHS_EXT& rhs ;
+	} ;
+
+
+	template <int RTYPE, typename LHS_T, bool RHS_NA, typename RHS_T >
+	class Divides_Vector_Vector<RTYPE,false,LHS_T,RHS_NA,RHS_T> : public Rcpp::VectorBase<RTYPE,true, Divides_Vector_Vector<RTYPE,false,LHS_T,RHS_NA,RHS_T> > {
+	public:
+		typedef typename Rcpp::VectorBase<RTYPE,false,LHS_T> LHS_TYPE ;
+		typedef typename Rcpp::VectorBase<RTYPE,RHS_NA,RHS_T> RHS_TYPE ;
+		typedef typename traits::storage_type<RTYPE>::type STORAGE ;
+		typedef typename Rcpp::traits::Extractor< RTYPE, false, LHS_T>::type LHS_EXT ;
+		typedef typename Rcpp::traits::Extractor< RTYPE, RHS_NA, RHS_T>::type RHS_EXT ;
+
+		Divides_Vector_Vector( const LHS_TYPE& lhs_, const RHS_TYPE& rhs_ ) :
+			lhs(lhs_.get_ref()), rhs(rhs_.get_ref()) {}
+
+		inline STORAGE operator[]( R_xlen_t i ) const {
+			STORAGE y = rhs[i] ;
+			if( Rcpp::traits::is_na<RTYPE>( y ) ) return y ;
+			return lhs[i] / y ;
+		}
+
+		inline R_xlen_t size() const { return lhs.size() ; }
+
+	private:
+		const LHS_EXT& lhs ;
+		const RHS_EXT& rhs ;
+	} ;
+	// RTYPE = REALSXP
+	template <typename LHS_T, bool RHS_NA, typename RHS_T >
+	class Divides_Vector_Vector<REALSXP,false,LHS_T,RHS_NA,RHS_T> :
+	    public Rcpp::VectorBase<REALSXP,true, Divides_Vector_Vector<REALSXP,false,LHS_T,RHS_NA,RHS_T> > {
+	public:
+		typedef typename Rcpp::VectorBase<REALSXP,false,LHS_T> LHS_TYPE ;
+		typedef typename Rcpp::VectorBase<REALSXP,RHS_NA,RHS_T> RHS_TYPE ;
+		typedef typename Rcpp::traits::Extractor<REALSXP, false, LHS_T>::type LHS_EXT ;
+		typedef typename Rcpp::traits::Extractor<REALSXP, RHS_NA, RHS_T>::type RHS_EXT ;
+
+		Divides_Vector_Vector( const LHS_TYPE& lhs_, const RHS_TYPE& rhs_ ) :
+			lhs(lhs_.get_ref()), rhs(rhs_.get_ref()) {}
+
+		inline double operator[]( R_xlen_t i ) const {
+			return lhs[i] / rhs[i] ;
+		}
+
+		inline R_xlen_t size() const { return lhs.size() ; }
+
+	private:
+		const LHS_EXT& lhs ;
+		const RHS_EXT& rhs ;
+	} ;
+
+
+	template <int RTYPE, bool LHS_NA, typename LHS_T, typename RHS_T >
+	class Divides_Vector_Vector<RTYPE,LHS_NA,LHS_T,false,RHS_T> :
+	    public Rcpp::VectorBase<RTYPE,true, Divides_Vector_Vector<RTYPE,LHS_NA,LHS_T,false,RHS_T> > {
+	public:
+		typedef typename Rcpp::VectorBase<RTYPE,LHS_NA,LHS_T> LHS_TYPE ;
+		typedef typename Rcpp::VectorBase<RTYPE,false,RHS_T> RHS_TYPE ;
+		typedef typename traits::storage_type<RTYPE>::type STORAGE ;
+		typedef typename Rcpp::traits::Extractor< RTYPE, LHS_NA, LHS_T>::type LHS_EXT ;
+		typedef typename Rcpp::traits::Extractor< RTYPE, false, RHS_T>::type RHS_EXT ;
+
+		Divides_Vector_Vector( const LHS_TYPE& lhs_, const RHS_TYPE& rhs_ ) :
+			lhs(lhs_.get_ref()), rhs(rhs_.get_ref()) {}
+
+		inline STORAGE operator[]( R_xlen_t i ) const {
+			STORAGE x = lhs[i] ;
+			if( Rcpp::traits::is_na<RTYPE>( x ) ) return x ;
+			return x / rhs[i] ;
+		}
+		inline R_xlen_t size() const { return lhs.size() ; }
+
+	private:
+		const LHS_EXT& lhs ;
+		const RHS_EXT& rhs ;
+	} ;
+	// RTYPE = REALSXP
+	template <bool LHS_NA, typename LHS_T, typename RHS_T >
+	class Divides_Vector_Vector<REALSXP,LHS_NA,LHS_T,false,RHS_T> :
+	    public Rcpp::VectorBase<REALSXP,true, Divides_Vector_Vector<REALSXP,LHS_NA,LHS_T,false,RHS_T> > {
+	public:
+		typedef typename Rcpp::VectorBase<REALSXP,LHS_NA,LHS_T> LHS_TYPE ;
+		typedef typename Rcpp::VectorBase<REALSXP,false,RHS_T> RHS_TYPE ;
+		typedef typename Rcpp::traits::Extractor<REALSXP, LHS_NA, LHS_T>::type LHS_EXT ;
+		typedef typename Rcpp::traits::Extractor<REALSXP, false, RHS_T>::type RHS_EXT ;
+
+		Divides_Vector_Vector( const LHS_TYPE& lhs_, const RHS_TYPE& rhs_ ) :
+			lhs(lhs_.get_ref()), rhs(rhs_.get_ref()) {}
+
+		inline double operator[]( R_xlen_t i ) const {
+			return lhs[i] / rhs[i] ;
+		}
+		inline R_xlen_t size() const { return lhs.size() ; }
+
+	private:
+		const LHS_EXT& lhs ;
+		const RHS_EXT& rhs ;
+	} ;
+
+
+	template <int RTYPE, typename LHS_T, typename RHS_T >
+	class Divides_Vector_Vector<RTYPE,false,LHS_T,false,RHS_T> :
+	    public Rcpp::VectorBase<RTYPE,false, Divides_Vector_Vector<RTYPE,false,LHS_T,false,RHS_T> > {
+	public:
+		typedef typename Rcpp::VectorBase<RTYPE,false,LHS_T> LHS_TYPE ;
+		typedef typename Rcpp::VectorBase<RTYPE,false,RHS_T> RHS_TYPE ;
+		typedef typename traits::storage_type<RTYPE>::type STORAGE ;
+		typedef typename Rcpp::traits::Extractor<RTYPE, false, LHS_T>::type LHS_EXT ;
+		typedef typename Rcpp::traits::Extractor<RTYPE, false, RHS_T>::type RHS_EXT ;
+
+		Divides_Vector_Vector( const LHS_TYPE& lhs_, const RHS_TYPE& rhs_ ) :
+			lhs(lhs_.get_ref()), rhs(rhs_.get_ref()) {}
+
+		inline STORAGE operator[]( R_xlen_t i ) const {
+			return lhs[i] / rhs[i] ;
+		}
+
+		inline R_xlen_t size() const { return lhs.size() ; }
+
+	private:
+		const LHS_EXT& lhs ;
+		const RHS_EXT& rhs ;
+	} ;
+    // RTYPE : REALSXP
+    template <typename LHS_T, typename RHS_T >
+	class Divides_Vector_Vector<REALSXP,false,LHS_T,false,RHS_T> :
+	    public Rcpp::VectorBase<REALSXP,false, Divides_Vector_Vector<REALSXP,false,LHS_T,false,RHS_T> > {
+	public:
+		typedef typename Rcpp::VectorBase<REALSXP,false,LHS_T> LHS_TYPE ;
+		typedef typename Rcpp::VectorBase<REALSXP,false,RHS_T> RHS_TYPE ;
+		typedef typename Rcpp::traits::Extractor<REALSXP, false, LHS_T>::type LHS_EXT ;
+		typedef typename Rcpp::traits::Extractor<REALSXP, false, RHS_T>::type RHS_EXT ;
+
+		Divides_Vector_Vector( const LHS_TYPE& lhs_, const RHS_TYPE& rhs_ ) :
+			lhs(lhs_.get_ref()), rhs(rhs_.get_ref()) {}
+
+		inline double operator[]( R_xlen_t i ) const {
+			return lhs[i] / rhs[i] ;
+		}
+
+		inline R_xlen_t size() const { return lhs.size() ; }
+
+	private:
+		const LHS_EXT& lhs ;
+		const RHS_EXT& rhs ;
+	} ;
+
+
+
+
+	template <int RTYPE, bool NA, typename T>
+	class Divides_Vector_Primitive :
+	    public Rcpp::VectorBase<RTYPE,true, Divides_Vector_Primitive<RTYPE,NA,T> > {
+	public:
+		typedef typename traits::storage_type<RTYPE>::type STORAGE ;
+		typedef typename Rcpp::VectorBase<RTYPE,NA,T> VEC_TYPE ;
+		typedef typename Rcpp::traits::Extractor<RTYPE,NA,T>::type VEC_EXT ;
+
+		Divides_Vector_Primitive( const VEC_TYPE& lhs_, STORAGE rhs_ ) :
+			lhs(lhs_.get_ref()), rhs(rhs_), rhs_na( Rcpp::traits::is_na<RTYPE>(rhs_) ) {
+		}
+
+		inline STORAGE operator[]( R_xlen_t i ) const {
+			if(rhs_na) return rhs ;
+			STORAGE x = lhs[i] ;
+			return Rcpp::traits::is_na<RTYPE>(x) ? x : (x / rhs) ;
+		}
+
+		inline R_xlen_t size() const { return lhs.size() ; }
+
+	private:
+		const VEC_EXT& lhs ;
+		STORAGE rhs ;
+		bool rhs_na ;
+	} ;
+	// RTYPE : REALSXP
+	template <bool NA, typename T>
+	class Divides_Vector_Primitive<REALSXP,NA,T> :
+	    public Rcpp::VectorBase<REALSXP,true, Divides_Vector_Primitive<REALSXP,NA,T> > {
+	public:
+		typedef typename Rcpp::VectorBase<REALSXP,NA,T> VEC_TYPE ;
+		typedef typename Rcpp::traits::Extractor<REALSXP,NA,T>::type VEC_EXT ;
+
+		Divides_Vector_Primitive( const VEC_TYPE& lhs_, double rhs_ ) :
+			lhs(lhs_.get_ref()), rhs(rhs_) {
+		}
+
+		inline double operator[]( R_xlen_t i ) const {
+			return lhs[i] / rhs ;
+		}
+
+		inline R_xlen_t size() const { return lhs.size() ; }
+
+	private:
+		const VEC_EXT& lhs ;
+		double rhs ;
+	} ;
+
+
+
+	template <int RTYPE, typename T>
+	class Divides_Vector_Primitive<RTYPE,false,T> :
+	    public Rcpp::VectorBase<RTYPE,true, Divides_Vector_Primitive<RTYPE,false,T> > {
+	public:
+		typedef typename traits::storage_type<RTYPE>::type STORAGE ;
+		typedef typename Rcpp::VectorBase<RTYPE,false,T> VEC_TYPE ;
+		typedef typename Rcpp::traits::Extractor<RTYPE,false,T>::type VEC_EXT ;
+
+		Divides_Vector_Primitive( const VEC_TYPE& lhs_, STORAGE rhs_ ) :
+			lhs(lhs_.get_ref()), rhs(rhs_), rhs_na( Rcpp::traits::is_na<RTYPE>(rhs_) ) {}
+
+		inline STORAGE operator[]( R_xlen_t i ) const {
+			if( rhs_na ) return rhs ;
+			STORAGE x = lhs[i] ;
+			return Rcpp::traits::is_na<RTYPE>(x) ? x : (x / rhs) ;
+		}
+		inline R_xlen_t size() const { return lhs.size() ; }
+
+	private:
+		const VEC_EXT& lhs ;
+		STORAGE rhs ;
+		bool rhs_na ;
+	} ;
+	// RTYPE = REALSXP
+	template <typename T>
+	class Divides_Vector_Primitive<REALSXP,false,T> :
+	    public Rcpp::VectorBase<REALSXP,true, Divides_Vector_Primitive<REALSXP,false,T> > {
+	public:
+		typedef typename Rcpp::VectorBase<REALSXP,false,T> VEC_TYPE ;
+		typedef typename Rcpp::traits::Extractor<REALSXP,false,T>::type VEC_EXT ;
+
+		Divides_Vector_Primitive( const VEC_TYPE& lhs_, double rhs_ ) :
+			lhs(lhs_), rhs(rhs_){}
+
+		inline double operator[]( R_xlen_t i ) const {
+			return lhs[i] / rhs ;
+		}
+		inline R_xlen_t size() const { return lhs.size() ; }
+
+	private:
+		const VEC_EXT& lhs ;
+		double rhs ;
+	} ;
+
+
+
+	template <int RTYPE, bool NA, typename T>
+	class Divides_Primitive_Vector :
+	    public Rcpp::VectorBase<RTYPE,true, Divides_Primitive_Vector<RTYPE,NA,T> > {
+	public:
+		typedef typename Rcpp::VectorBase<RTYPE,NA,T> VEC_TYPE ;
+		typedef typename Rcpp::traits::Extractor<RTYPE,NA,T>::type VEC_EXT ;
+		typedef typename traits::storage_type<RTYPE>::type STORAGE ;
+
+		Divides_Primitive_Vector( STORAGE lhs_, const VEC_TYPE& rhs_ ) :
+			lhs(lhs_), rhs(rhs_.get_ref()), lhs_na( Rcpp::traits::is_na<RTYPE>(lhs_) ) {}
+
+		inline STORAGE operator[]( R_xlen_t i ) const {
+			if( lhs_na ) return lhs ;
+			STORAGE x = rhs[i] ;
+			return Rcpp::traits::is_na<RTYPE>(x) ? x : (lhs / x) ;
+		}
+		inline R_xlen_t size() const { return rhs.size() ; }
+	private:
+		STORAGE lhs ;
+		const VEC_EXT& rhs ;
+		bool lhs_na ;
+	} ;
+	// RTYPE = REALSXP
+	template <bool NA, typename T>
+	class Divides_Primitive_Vector<REALSXP,NA,T> :
+	    public Rcpp::VectorBase<REALSXP,true, Divides_Primitive_Vector<REALSXP,NA,T> > {
+	public:
+		typedef typename Rcpp::VectorBase<REALSXP,NA,T> VEC_TYPE ;
+		typedef typename Rcpp::traits::Extractor<REALSXP,NA,T>::type VEC_EXT ;
+
+		Divides_Primitive_Vector( double lhs_, const VEC_TYPE& rhs_ ) :
+			lhs(lhs_), rhs(rhs_.get_ref()) {}
+
+		inline double operator[]( R_xlen_t i ) const {
+			return lhs / rhs[i] ;
+		}
+		inline R_xlen_t size() const { return rhs.size() ; }
+	private:
+		double lhs ;
+		const VEC_EXT& rhs ;
+	} ;
+
+
+
+	template <int RTYPE, typename T>
+	class Divides_Primitive_Vector<RTYPE,false,T> :
+	    public Rcpp::VectorBase<RTYPE,true, Divides_Primitive_Vector<RTYPE,false,T> > {
+	public:
+		typedef typename Rcpp::VectorBase<RTYPE,false,T> VEC_TYPE ;
+		typedef typename traits::storage_type<RTYPE>::type STORAGE ;
+		typedef typename Rcpp::traits::Extractor<RTYPE,false,T>::type VEC_EXT ;
+
+		Divides_Primitive_Vector( STORAGE lhs_, const VEC_TYPE& rhs_ ) :
+			lhs(lhs_), rhs(rhs_.get_ref()), lhs_na( Rcpp::traits::is_na<RTYPE>(lhs_) ) {}
+
+		inline STORAGE operator[]( R_xlen_t i ) const {
+			if( lhs_na ) return lhs ;
+			return lhs / rhs[i] ;
+		}
+		inline R_xlen_t size() const { return rhs.size() ; }
+
+	private:
+		STORAGE lhs ;
+		const VEC_EXT& rhs ;
+		bool lhs_na ;
+	} ;
+	// RTYPE = REALSXP
+	template <typename T>
+	class Divides_Primitive_Vector<REALSXP,false,T> :
+	    public Rcpp::VectorBase<REALSXP,true, Divides_Primitive_Vector<REALSXP,false,T> > {
+	public:
+		typedef typename Rcpp::VectorBase<REALSXP,false,T> VEC_TYPE ;
+		typedef typename Rcpp::traits::Extractor<REALSXP,false,T>::type VEC_EXT ;
+
+		Divides_Primitive_Vector( double lhs_, const VEC_TYPE& rhs_ ) :
+			lhs(lhs_), rhs(rhs_.get_ref()) {}
+
+		inline double operator[]( R_xlen_t i ) const {
+			return lhs / rhs[i] ;
+		}
+		inline R_xlen_t size() const { return rhs.size() ; }
+
+	private:
+		double lhs ;
+		const VEC_EXT& rhs ;
+	} ;
+
+
+}
+
+template <int RTYPE,bool NA, typename T, typename U>
+inline typename traits::enable_if<traits::is_convertible<typename traits::remove_const_and_reference<U>::type, typename traits::storage_type<RTYPE>::type>::value, sugar::Divides_Vector_Primitive< RTYPE , NA, T > >::type
+operator/(
+	const VectorBase<RTYPE,NA,T>& lhs,
+	const U &rhs
+) {
+	return sugar::Divides_Vector_Primitive<RTYPE,NA,T>( lhs, rhs ) ;
+}
+
+
+template <int RTYPE,bool NA, typename T, typename U>
+inline typename traits::enable_if< traits::is_convertible< typename traits::remove_const_and_reference<U>::type, typename traits::storage_type<RTYPE>::type>::value, sugar::Divides_Primitive_Vector< RTYPE , NA,T> >::type
+operator/(
+	const U &lhs,
+	const VectorBase<RTYPE,NA,T>& rhs
+) {
+	return sugar::Divides_Primitive_Vector<RTYPE,NA,T>( lhs, rhs ) ;
+}
+
+template <int RTYPE,bool LHS_NA, typename LHS_T, bool RHS_NA, typename RHS_T>
+inline sugar::Divides_Vector_Vector<
+	RTYPE ,
+	LHS_NA, LHS_T,
+	RHS_NA, RHS_T
+	>
+operator/(
+	const VectorBase<RTYPE,LHS_NA,LHS_T>& lhs,
+	const VectorBase<RTYPE,RHS_NA,RHS_T>& rhs
+) {
+	return sugar::Divides_Vector_Vector<
+		RTYPE,
+		LHS_NA,LHS_T,
+		RHS_NA,RHS_T
+		>( lhs, rhs ) ;
+}
+
+}
+
+#endif
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/operators/unary_minus.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/operators/unary_minus.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/operators/unary_minus.h	(revision 3762)
@@ -0,0 +1,120 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; tab-width: 8 -*-
+//
+// unary_minus.h: Rcpp R/C++ interface class library -- unary operator-
+//
+// Copyright (C) 2010 - 2011 Dirk Eddelbuettel and Romain Francois
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+#ifndef Rcpp__sugar__unary_minus_h
+#define Rcpp__sugar__unary_minus_h
+
+namespace Rcpp{
+namespace sugar{
+
+	template <int RTYPE>
+	struct unary_minus_result_type{
+		typedef typename traits::storage_type<RTYPE>::type type ;
+		enum{ value = RTYPE } ;
+	} ;
+	template <>
+	struct unary_minus_result_type<LGLSXP>{
+		typedef traits::storage_type<INTSXP>::type type ;
+		enum{ value = INTSXP } ;
+	} ;
+
+
+	template <int RTYPE,bool NA>
+	class unary_minus {
+	public:
+		typedef typename traits::storage_type<RTYPE>::type STORAGE ;
+		typedef typename unary_minus_result_type<RTYPE>::type RESULT ;
+		inline RESULT apply( STORAGE x ) const {
+			return Rcpp::traits::is_na<RTYPE>(x) ? x : ( -x ) ;
+		}
+	} ;
+	template <int RTYPE>
+	class unary_minus<RTYPE,false> {
+	public:
+		typedef typename Rcpp::traits::storage_type<RTYPE>::type STORAGE ;
+		typedef typename unary_minus_result_type<RTYPE>::type RESULT ;
+		inline RESULT apply( STORAGE x ) const {
+			return -x ;
+		}
+	} ;
+	template <bool NA>
+	class unary_minus<CPLXSXP,NA>{
+	public:
+		inline Rcomplex apply( Rcomplex x ) const {
+			if (Rcpp::traits::is_na<CPLXSXP>( x ) ) return x;
+
+			Rcomplex cx ;
+			cx.r = -x.r;
+			cx.i = -x.i ;
+			return cx ;
+		}
+	} ;
+	template <>
+	class unary_minus<CPLXSXP,false>{
+	public:
+		inline Rcomplex apply( Rcomplex x ) const {
+			Rcomplex cx ;
+			cx.r = -x.r;
+			cx.i = -x.i ;
+			return cx ;
+		}
+	} ;
+
+
+	template <int RTYPE, bool NA, typename T>
+	class UnaryMinus_Vector : public Rcpp::VectorBase<
+		unary_minus_result_type<RTYPE>::value ,
+		NA,
+		UnaryMinus_Vector< unary_minus_result_type<RTYPE>::value ,NA,T>
+		> {
+	public:
+		typedef typename Rcpp::VectorBase<RTYPE,NA,T> VEC_TYPE ;
+		typedef typename traits::storage_type<RTYPE>::type STORAGE ;
+		typedef typename unary_minus_result_type<RTYPE>::type RESULT ;
+		typedef unary_minus<RTYPE,NA> OPERATOR ;
+
+		UnaryMinus_Vector( const VEC_TYPE& lhs_ ) :
+			lhs(lhs_), op() {}
+
+		inline RESULT operator[]( R_xlen_t i ) const {
+			return op.apply( lhs[i] ) ;
+		}
+
+		inline R_xlen_t size() const { return lhs.size() ; }
+
+	private:
+		const VEC_TYPE& lhs ;
+		OPERATOR op ;
+	} ;
+
+}
+}
+
+template <int RTYPE,bool NA, typename T>
+inline Rcpp::sugar::UnaryMinus_Vector< RTYPE , NA , T >
+operator-(
+	const Rcpp::VectorBase<RTYPE,NA,T>& x
+) {
+	return Rcpp::sugar::UnaryMinus_Vector<RTYPE,NA, T >( x ) ;
+}
+
+
+#endif
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/operators/logical_operators__Vector__Vector.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/operators/logical_operators__Vector__Vector.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/operators/logical_operators__Vector__Vector.h	(revision 3762)
@@ -0,0 +1,153 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; tab-width: 8 -*-
+//
+// logical_operators__Vector__Vector.h: Rcpp R/C++ interface class library --
+//    logical operators for Vector to Vector comparisons
+//
+// Copyright (C) 2010 - 2011 Dirk Eddelbuettel and Romain Francois
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+#ifndef Rcpp__sugar__logical_operators__Vector__Vector_h
+#define Rcpp__sugar__logical_operators__Vector__Vector_h
+
+/* Vector < Vector */
+template <int RTYPE,bool LHS_NA,typename LHS_T,bool RHS_NA, typename RHS_T>
+inline Rcpp::sugar::Comparator<
+	RTYPE ,
+	Rcpp::sugar::less<RTYPE>,
+	LHS_NA, LHS_T,
+	RHS_NA, RHS_T
+	>
+operator<(
+	const Rcpp::VectorBase<RTYPE,LHS_NA,LHS_T>& lhs ,
+	const Rcpp::VectorBase<RTYPE,RHS_NA,RHS_T>& rhs
+	){
+	return Rcpp::sugar::Comparator<
+		RTYPE,
+		Rcpp::sugar::less<RTYPE>,
+		LHS_NA, LHS_T,
+		RHS_NA, RHS_T
+		>(
+		lhs, rhs
+		) ;
+}
+/* Vector > Vector */
+template <int RTYPE,bool LHS_NA,typename LHS_T,bool RHS_NA, typename RHS_T>
+inline Rcpp::sugar::Comparator<
+	RTYPE ,
+	Rcpp::sugar::greater<RTYPE>,
+	LHS_NA, LHS_T,
+	RHS_NA, RHS_T
+	>
+operator>(
+	const Rcpp::VectorBase<RTYPE,LHS_NA,LHS_T>& lhs ,
+	const Rcpp::VectorBase<RTYPE,RHS_NA,RHS_T>& rhs
+	){
+	return Rcpp::sugar::Comparator<
+		RTYPE,
+		Rcpp::sugar::greater<RTYPE>,
+		LHS_NA, LHS_T,
+		RHS_NA, RHS_T
+		>(
+		lhs, rhs
+		) ;
+}
+/* Vector <= Vector */
+template <int RTYPE,bool LHS_NA,typename LHS_T,bool RHS_NA, typename RHS_T>
+inline Rcpp::sugar::Comparator<
+	RTYPE ,
+	Rcpp::sugar::less_or_equal<RTYPE>,
+	LHS_NA, LHS_T,
+	RHS_NA, RHS_T
+	>
+operator<=(
+	const Rcpp::VectorBase<RTYPE,LHS_NA,LHS_T>& lhs ,
+	const Rcpp::VectorBase<RTYPE,RHS_NA,RHS_T>& rhs
+	){
+	return Rcpp::sugar::Comparator<
+		RTYPE,
+		Rcpp::sugar::less_or_equal<RTYPE>,
+		LHS_NA, LHS_T,
+		RHS_NA, RHS_T
+		>(
+		lhs, rhs
+		) ;
+}
+/* Vector >= Vector */
+template <int RTYPE,bool LHS_NA,typename LHS_T,bool RHS_NA, typename RHS_T>
+inline Rcpp::sugar::Comparator<
+	RTYPE ,
+	Rcpp::sugar::greater_or_equal<RTYPE>,
+	LHS_NA, LHS_T,
+	RHS_NA, RHS_T
+	>
+operator>=(
+	const Rcpp::VectorBase<RTYPE,LHS_NA,LHS_T>& lhs ,
+	const Rcpp::VectorBase<RTYPE,RHS_NA,RHS_T>& rhs
+	){
+	return Rcpp::sugar::Comparator<
+		RTYPE,
+		Rcpp::sugar::greater_or_equal<RTYPE>,
+		LHS_NA, LHS_T,
+		RHS_NA, RHS_T
+		>(
+		lhs, rhs
+		) ;
+}
+/* Vector == Vector */
+template <int RTYPE,bool LHS_NA,typename LHS_T,bool RHS_NA, typename RHS_T>
+inline Rcpp::sugar::Comparator<
+	RTYPE ,
+	Rcpp::sugar::equal<RTYPE>,
+	LHS_NA, LHS_T,
+	RHS_NA, RHS_T
+	>
+operator==(
+	const Rcpp::VectorBase<RTYPE,LHS_NA,LHS_T>& lhs ,
+	const Rcpp::VectorBase<RTYPE,RHS_NA,RHS_T>& rhs
+	){
+	return Rcpp::sugar::Comparator<
+		RTYPE,
+		Rcpp::sugar::equal<RTYPE>,
+		LHS_NA, LHS_T,
+		RHS_NA, RHS_T
+		>(
+		lhs, rhs
+		) ;
+}
+/* Vector != Vector */
+template <int RTYPE,bool LHS_NA,typename LHS_T,bool RHS_NA, typename RHS_T>
+inline Rcpp::sugar::Comparator<
+	RTYPE ,
+	Rcpp::sugar::not_equal<RTYPE>,
+	LHS_NA, LHS_T,
+	RHS_NA, RHS_T
+	>
+operator!=(
+	const Rcpp::VectorBase<RTYPE,LHS_NA,LHS_T>& lhs ,
+	const Rcpp::VectorBase<RTYPE,RHS_NA,RHS_T>& rhs
+	){
+	return Rcpp::sugar::Comparator<
+		RTYPE,
+		Rcpp::sugar::not_equal<RTYPE>,
+		LHS_NA, LHS_T,
+		RHS_NA, RHS_T
+		>(
+		lhs, rhs
+		) ;
+}
+
+#endif
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/operators/minus.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/operators/minus.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/operators/minus.h	(revision 3762)
@@ -0,0 +1,453 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; tab-width: 8 -*-
+//
+// minus.h: Rcpp R/C++ interface class library -- operator-
+//
+// Copyright (C) 2010 - 2011 Dirk Eddelbuettel and Romain Francois
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+#ifndef Rcpp__sugar__minus_h
+#define Rcpp__sugar__minus_h
+
+namespace Rcpp{
+namespace sugar{
+
+	template <int RTYPE, bool LHS_NA, typename LHS_T, bool RHS_NA, typename RHS_T >
+	class Minus_Vector_Vector :
+	    public Rcpp::VectorBase<RTYPE,true, Minus_Vector_Vector<RTYPE,LHS_NA,LHS_T,RHS_NA,RHS_T> > {
+	public:
+		typedef typename Rcpp::VectorBase<RTYPE,LHS_NA,LHS_T> LHS_TYPE ;
+		typedef typename Rcpp::VectorBase<RTYPE,RHS_NA,RHS_T> RHS_TYPE ;
+		typedef typename traits::storage_type<RTYPE>::type STORAGE ;
+		typedef typename Rcpp::traits::Extractor< RTYPE, LHS_NA, LHS_T>::type LHS_EXT ;
+		typedef typename Rcpp::traits::Extractor< RTYPE, RHS_NA, RHS_T>::type RHS_EXT ;
+
+		Minus_Vector_Vector( const LHS_TYPE& lhs_, const RHS_TYPE& rhs_ ) :
+			lhs(lhs_.get_ref()), rhs(rhs_.get_ref()) {}
+
+		inline STORAGE operator[]( R_xlen_t i ) const {
+			STORAGE x = lhs[i] ;
+			if( Rcpp::traits::is_na<RTYPE>( x ) ) return x ;
+			STORAGE y = rhs[i] ;
+			return Rcpp::traits::is_na<RTYPE>( y ) ? y : ( x - y ) ;
+		}
+
+		inline R_xlen_t size() const { return lhs.size() ; }
+
+	private:
+		const LHS_EXT& lhs ;
+		const RHS_EXT& rhs ;
+	} ;
+	// RTYPE = REALSXP
+	template <bool LHS_NA, typename LHS_T, bool RHS_NA, typename RHS_T >
+	class Minus_Vector_Vector<REALSXP,LHS_NA,LHS_T,RHS_NA,RHS_T> :
+	    public Rcpp::VectorBase<REALSXP,true, Minus_Vector_Vector<REALSXP,LHS_NA,LHS_T,RHS_NA,RHS_T> > {
+	public:
+		typedef typename Rcpp::VectorBase<REALSXP,LHS_NA,LHS_T> LHS_TYPE ;
+		typedef typename Rcpp::VectorBase<REALSXP,RHS_NA,RHS_T> RHS_TYPE ;
+		typedef typename Rcpp::traits::Extractor<REALSXP, LHS_NA, LHS_T>::type LHS_EXT ;
+		typedef typename Rcpp::traits::Extractor<REALSXP, RHS_NA, RHS_T>::type RHS_EXT ;
+
+		Minus_Vector_Vector( const LHS_TYPE& lhs_, const RHS_TYPE& rhs_ ) :
+			lhs(lhs_.get_ref()), rhs(rhs_.get_ref()) {}
+
+		inline double operator[]( R_xlen_t i ) const {
+		    return lhs[i] - rhs[i] ;
+		}
+
+		inline R_xlen_t size() const { return lhs.size() ; }
+
+	private:
+		const LHS_EXT& lhs ;
+		const RHS_EXT& rhs ;
+	} ;
+
+
+	template <int RTYPE, typename LHS_T, bool RHS_NA, typename RHS_T >
+	class Minus_Vector_Vector<RTYPE,false,LHS_T,RHS_NA,RHS_T> : public Rcpp::VectorBase<RTYPE,true, Minus_Vector_Vector<RTYPE,false,LHS_T,RHS_NA,RHS_T> > {
+	public:
+		typedef typename Rcpp::VectorBase<RTYPE,false,LHS_T> LHS_TYPE ;
+		typedef typename Rcpp::VectorBase<RTYPE,RHS_NA,RHS_T> RHS_TYPE ;
+		typedef typename traits::storage_type<RTYPE>::type STORAGE ;
+		typedef typename Rcpp::traits::Extractor<RTYPE, false, LHS_T>::type LHS_EXT ;
+		typedef typename Rcpp::traits::Extractor<RTYPE, RHS_NA, RHS_T>::type RHS_EXT ;
+
+		Minus_Vector_Vector( const LHS_TYPE& lhs_, const RHS_TYPE& rhs_ ) :
+			lhs(lhs_.get_ref()), rhs(rhs_.get_ref()) {}
+
+		inline STORAGE operator[]( R_xlen_t i ) const {
+			STORAGE y = rhs[i] ;
+			if( Rcpp::traits::is_na<RTYPE>( y ) ) return y ;
+			return lhs[i] - y ;
+		}
+
+		inline R_xlen_t size() const { return lhs.size() ; }
+
+	private:
+		const LHS_EXT& lhs ;
+		const RHS_EXT& rhs ;
+	} ;
+	// RTYPE = REALSXP
+	template <typename LHS_T, bool RHS_NA, typename RHS_T >
+	class Minus_Vector_Vector<REALSXP,false,LHS_T,RHS_NA,RHS_T> :
+	    public Rcpp::VectorBase<REALSXP,true, Minus_Vector_Vector<REALSXP,false,LHS_T,RHS_NA,RHS_T> > {
+	public:
+		typedef typename Rcpp::VectorBase<REALSXP,false,LHS_T> LHS_TYPE ;
+		typedef typename Rcpp::VectorBase<REALSXP,RHS_NA,RHS_T> RHS_TYPE ;
+		typedef typename Rcpp::traits::Extractor<REALSXP, false, LHS_T>::type LHS_EXT ;
+		typedef typename Rcpp::traits::Extractor<REALSXP, RHS_NA, RHS_T>::type RHS_EXT ;
+
+		Minus_Vector_Vector( const LHS_TYPE& lhs_, const RHS_TYPE& rhs_ ) :
+			lhs(lhs_.get_ref()), rhs(rhs_.get_ref()) {}
+
+		inline double operator[]( R_xlen_t i ) const {
+			return lhs[i] - rhs[i] ;
+		}
+
+		inline R_xlen_t size() const { return lhs.size() ; }
+
+	private:
+		const LHS_EXT& lhs ;
+		const RHS_EXT& rhs ;
+	} ;
+
+
+	template <int RTYPE, bool LHS_NA, typename LHS_T, typename RHS_T >
+	class Minus_Vector_Vector<RTYPE,LHS_NA,LHS_T,false,RHS_T> : public Rcpp::VectorBase<RTYPE,true, Minus_Vector_Vector<RTYPE,LHS_NA,LHS_T,false,RHS_T> > {
+	public:
+		typedef typename Rcpp::VectorBase<RTYPE,LHS_NA,LHS_T> LHS_TYPE ;
+		typedef typename Rcpp::VectorBase<RTYPE,false,RHS_T> RHS_TYPE ;
+		typedef typename traits::storage_type<RTYPE>::type STORAGE ;
+		typedef typename Rcpp::traits::Extractor<RTYPE, LHS_NA, LHS_T>::type LHS_EXT ;
+		typedef typename Rcpp::traits::Extractor<RTYPE, false, RHS_T>::type RHS_EXT ;
+
+		Minus_Vector_Vector( const LHS_TYPE& lhs_, const RHS_TYPE& rhs_ ) :
+			lhs(lhs_.get_ref()), rhs(rhs_.get_ref()) {}
+
+		inline STORAGE operator[]( R_xlen_t i ) const {
+			STORAGE x = lhs[i] ;
+			if( Rcpp::traits::is_na<RTYPE>( x ) ) return x ;
+			return x - rhs[i] ;
+		}
+
+		inline R_xlen_t size() const { return lhs.size() ; }
+
+	private:
+		const LHS_EXT& lhs ;
+		const RHS_EXT& rhs ;
+	} ;
+	// RTYPE = REALSXP
+	template <bool LHS_NA, typename LHS_T, typename RHS_T >
+	class Minus_Vector_Vector<REALSXP,LHS_NA,LHS_T,false,RHS_T> :
+	    public Rcpp::VectorBase<REALSXP,true, Minus_Vector_Vector<REALSXP,LHS_NA,LHS_T,false,RHS_T> > {
+	public:
+		typedef typename Rcpp::VectorBase<REALSXP,LHS_NA,LHS_T> LHS_TYPE ;
+		typedef typename Rcpp::VectorBase<REALSXP,false,RHS_T> RHS_TYPE ;
+		typedef typename Rcpp::traits::Extractor<REALSXP, LHS_NA, LHS_T>::type LHS_EXT ;
+		typedef typename Rcpp::traits::Extractor<REALSXP, false, RHS_T>::type RHS_EXT ;
+
+		Minus_Vector_Vector( const LHS_TYPE& lhs_, const RHS_TYPE& rhs_ ) :
+			lhs(lhs_.get_ref()), rhs(rhs_.get_ref()) {}
+
+		inline double operator[]( R_xlen_t i ) const {
+			return lhs[i] - rhs[i] ;
+		}
+
+		inline R_xlen_t size() const { return lhs.size() ; }
+
+	private:
+		const LHS_EXT& lhs ;
+		const RHS_EXT& rhs ;
+	} ;
+
+
+	template <int RTYPE, typename LHS_T, typename RHS_T >
+	class Minus_Vector_Vector<RTYPE,false,LHS_T,false,RHS_T> :
+	    public Rcpp::VectorBase<RTYPE,false, Minus_Vector_Vector<RTYPE,false,LHS_T,false,RHS_T> > {
+	public:
+		typedef typename Rcpp::VectorBase<RTYPE,false,LHS_T> LHS_TYPE ;
+		typedef typename Rcpp::VectorBase<RTYPE,false,RHS_T> RHS_TYPE ;
+		typedef typename traits::storage_type<RTYPE>::type STORAGE ;
+		typedef typename Rcpp::traits::Extractor<RTYPE, false, LHS_T>::type LHS_EXT ;
+		typedef typename Rcpp::traits::Extractor<RTYPE, false, RHS_T>::type RHS_EXT ;
+
+		Minus_Vector_Vector( const LHS_TYPE& lhs_, const RHS_TYPE& rhs_ ) :
+			lhs(lhs_.get_ref()), rhs(rhs_.get_ref()) {}
+
+		inline STORAGE operator[]( R_xlen_t i ) const {
+			return lhs[i] - rhs[i] ;
+		}
+
+		inline R_xlen_t size() const { return lhs.size() ; }
+
+	private:
+		const LHS_EXT& lhs ;
+		const RHS_EXT& rhs ;
+	} ;
+	template <typename LHS_T, typename RHS_T >
+	class Minus_Vector_Vector<REALSXP,false,LHS_T,false,RHS_T> :
+	    public Rcpp::VectorBase<REALSXP,false, Minus_Vector_Vector<REALSXP,false,LHS_T,false,RHS_T> > {
+	public:
+		typedef typename Rcpp::VectorBase<REALSXP,false,LHS_T> LHS_TYPE ;
+		typedef typename Rcpp::VectorBase<REALSXP,false,RHS_T> RHS_TYPE ;
+		typedef typename Rcpp::traits::Extractor<REALSXP, false, LHS_T>::type LHS_EXT ;
+		typedef typename Rcpp::traits::Extractor<REALSXP, false, RHS_T>::type RHS_EXT ;
+
+		Minus_Vector_Vector( const LHS_TYPE& lhs_, const RHS_TYPE& rhs_ ) :
+			lhs(lhs_.get_ref()), rhs(rhs_.get_ref()) {}
+
+		inline double operator[]( R_xlen_t i ) const {
+			return lhs[i] - rhs[i] ;
+		}
+
+		inline R_xlen_t size() const { return lhs.size() ; }
+
+	private:
+		const LHS_EXT& lhs ;
+		const RHS_EXT& rhs ;
+	} ;
+
+
+
+
+
+	template <int RTYPE, bool NA, typename T>
+	class Minus_Vector_Primitive :
+	    public Rcpp::VectorBase<RTYPE,true, Minus_Vector_Primitive<RTYPE,NA,T> > {
+	public:
+		typedef typename traits::storage_type<RTYPE>::type STORAGE ;
+		typedef typename Rcpp::VectorBase<RTYPE,NA,T> VEC_TYPE ;
+		typedef typename Rcpp::traits::Extractor<RTYPE,NA,T>::type VEC_EXT ;
+
+		Minus_Vector_Primitive( const VEC_TYPE& lhs_, STORAGE rhs_ ) :
+			lhs(lhs_.get_ref()), rhs(rhs_), rhs_na( Rcpp::traits::is_na<RTYPE>(rhs_) ) {}
+
+		inline STORAGE operator[]( R_xlen_t i ) const {
+			if( rhs_na ) return rhs ;
+			STORAGE x = lhs[i] ;
+			return Rcpp::traits::is_na<RTYPE>(x) ? x : (x - rhs) ;
+		}
+
+		inline R_xlen_t size() const { return lhs.size() ; }
+
+	private:
+		const VEC_EXT& lhs ;
+		STORAGE rhs ;
+		bool rhs_na ;
+	} ;
+	template <bool NA, typename T>
+	class Minus_Vector_Primitive<REALSXP,NA,T> :
+	    public Rcpp::VectorBase<REALSXP,true, Minus_Vector_Primitive<REALSXP,NA,T> > {
+	public:
+		typedef typename Rcpp::VectorBase<REALSXP,NA,T> VEC_TYPE ;
+		typedef typename Rcpp::traits::Extractor<REALSXP,NA,T>::type VEC_EXT ;
+
+		Minus_Vector_Primitive( const VEC_TYPE& lhs_, double rhs_ ) :
+			lhs(lhs_.get_ref()), rhs(rhs_){}
+
+		inline double operator[]( R_xlen_t i ) const {
+			return lhs[i] - rhs ;
+		}
+
+		inline R_xlen_t size() const { return lhs.size() ; }
+
+	private:
+		const VEC_EXT& lhs ;
+		double rhs ;
+	} ;
+
+
+	template <int RTYPE, typename T>
+	class Minus_Vector_Primitive<RTYPE,false,T> :
+	    public Rcpp::VectorBase<RTYPE,true, Minus_Vector_Primitive<RTYPE,false,T> > {
+	public:
+		typedef typename traits::storage_type<RTYPE>::type STORAGE ;
+		typedef typename Rcpp::VectorBase<RTYPE,false,T> VEC_TYPE ;
+		typedef typename Rcpp::traits::Extractor<RTYPE,false,T>::type VEC_EXT ;
+
+		Minus_Vector_Primitive( const VEC_TYPE& lhs_, STORAGE rhs_ ) :
+			lhs(lhs_.get_ref()), rhs(rhs_), rhs_na( Rcpp::traits::is_na<RTYPE>(rhs_) ) {}
+
+		inline STORAGE operator[]( R_xlen_t i ) const {
+			if( rhs_na ) return rhs ;
+			STORAGE x = lhs[i] ;
+			return Rcpp::traits::is_na<RTYPE>(x) ? x : (x - rhs) ;
+		}
+
+		inline R_xlen_t size() const { return lhs.size() ; }
+
+	private:
+		const VEC_EXT& lhs ;
+		STORAGE rhs ;
+		bool rhs_na ;
+	} ;
+	template <typename T>
+	class Minus_Vector_Primitive<REALSXP,false,T> :
+	    public Rcpp::VectorBase<REALSXP,true, Minus_Vector_Primitive<REALSXP,false,T> > {
+	public:
+		typedef typename Rcpp::VectorBase<REALSXP,false,T> VEC_TYPE ;
+		typedef typename Rcpp::traits::Extractor<REALSXP,false,T>::type VEC_EXT ;
+
+		Minus_Vector_Primitive( const VEC_TYPE& lhs_, double rhs_ ) :
+			lhs(lhs_.get_ref()), rhs(rhs_){}
+
+		inline double operator[]( R_xlen_t i ) const {
+			return lhs[i] - rhs ;
+		}
+
+		inline R_xlen_t size() const { return lhs.size() ; }
+
+	private:
+		const VEC_EXT& lhs ;
+		double rhs ;
+	} ;
+
+
+
+
+
+
+	template <int RTYPE, bool NA, typename T>
+	class Minus_Primitive_Vector :
+	    public Rcpp::VectorBase<RTYPE,true, Minus_Primitive_Vector<RTYPE,NA,T> > {
+	public:
+		typedef typename Rcpp::VectorBase<RTYPE,NA,T> VEC_TYPE ;
+		typedef typename traits::storage_type<RTYPE>::type STORAGE ;
+		typedef typename Rcpp::traits::Extractor<RTYPE,NA,T>::type VEC_EXT ;
+
+		Minus_Primitive_Vector( STORAGE lhs_, const VEC_TYPE& rhs_ ) :
+			lhs(lhs_), rhs(rhs_.get_ref()), lhs_na( Rcpp::traits::is_na<RTYPE>(lhs_) ) {}
+
+		inline STORAGE operator[]( R_xlen_t i ) const {
+			if( lhs_na ) return lhs ;
+			return lhs - rhs[i] ;
+		}
+		inline R_xlen_t size() const { return rhs.size() ; }
+
+	private:
+		STORAGE lhs ;
+		const VEC_EXT& rhs ;
+		bool lhs_na ;
+	} ;
+	template <bool NA, typename T>
+	class Minus_Primitive_Vector<REALSXP,NA,T> :
+	    public Rcpp::VectorBase<REALSXP,true, Minus_Primitive_Vector<REALSXP,NA,T> > {
+	public:
+		typedef typename Rcpp::VectorBase<REALSXP,NA,T> VEC_TYPE ;
+		typedef typename Rcpp::traits::Extractor<REALSXP,NA,T>::type VEC_EXT ;
+
+		Minus_Primitive_Vector( double lhs_, const VEC_TYPE& rhs_ ) :
+			lhs(lhs_), rhs(rhs_.get_ref()){}
+
+		inline double operator[]( R_xlen_t i ) const {
+			return lhs - rhs[i] ;
+		}
+		inline R_xlen_t size() const { return rhs.size() ; }
+
+	private:
+		double lhs ;
+		const VEC_EXT& rhs ;
+	} ;
+
+
+
+	template <int RTYPE, typename T>
+	class Minus_Primitive_Vector<RTYPE,false,T> :
+	    public Rcpp::VectorBase<RTYPE,true, Minus_Primitive_Vector<RTYPE,false,T> > {
+	public:
+		typedef typename Rcpp::VectorBase<RTYPE,false,T> VEC_TYPE ;
+		typedef typename traits::storage_type<RTYPE>::type STORAGE ;
+		typedef typename Rcpp::traits::Extractor<REALSXP,false,T>::type VEC_EXT ;
+
+		Minus_Primitive_Vector( STORAGE lhs_, const VEC_TYPE& rhs_ ) :
+			lhs(lhs_), rhs(rhs_.get_ref()), lhs_na( Rcpp::traits::is_na<RTYPE>(lhs_) ) {}
+
+		inline STORAGE operator[]( R_xlen_t i ) const {
+			if( lhs_na ) return lhs ;
+		    return lhs - rhs[i] ;
+		}
+
+		inline R_xlen_t size() const { return rhs.size() ; }
+
+	private:
+		STORAGE lhs ;
+		const VEC_EXT& rhs ;
+		bool lhs_na ;
+
+	} ;
+	template <typename T>
+	class Minus_Primitive_Vector<REALSXP,false,T> :
+	    public Rcpp::VectorBase<REALSXP,true, Minus_Primitive_Vector<REALSXP,false,T> > {
+	public:
+		typedef typename Rcpp::VectorBase<REALSXP,false,T> VEC_TYPE ;
+		typedef typename Rcpp::traits::Extractor<REALSXP,false,T>::type VEC_EXT ;
+
+		Minus_Primitive_Vector( double lhs_, const VEC_TYPE& rhs_ ) :
+			lhs(lhs_), rhs(rhs_.get_ref()){}
+
+		inline double operator[]( R_xlen_t i ) const {
+			return lhs - rhs[i] ;
+		}
+
+		inline R_xlen_t size() const { return rhs.size() ; }
+
+	private:
+		double lhs ;
+		const VEC_EXT& rhs ;
+	} ;
+
+
+}
+
+template <int RTYPE,bool NA, typename T, typename U>
+inline typename traits::enable_if<traits::is_convertible<typename traits::remove_const_and_reference<U>::type, typename traits::storage_type<RTYPE>::type>::value, sugar::Minus_Vector_Primitive< RTYPE , NA, T > >::type
+operator-(
+	const VectorBase<RTYPE,NA,T>& lhs,
+	const U &rhs
+) {
+	return sugar::Minus_Vector_Primitive<RTYPE,NA,T>( lhs, rhs ) ;
+}
+
+
+template <int RTYPE,bool NA, typename T, typename U>
+inline typename traits::enable_if<traits::is_convertible<typename traits::remove_const_and_reference<U>::type, typename traits::storage_type<RTYPE>::type>::value, sugar::Minus_Primitive_Vector< RTYPE , NA,T> >::type
+operator-(
+	const U &lhs,
+	const VectorBase<RTYPE,NA,T>& rhs
+) {
+	return sugar::Minus_Primitive_Vector<RTYPE,NA,T>( lhs, rhs ) ;
+}
+
+template <int RTYPE,bool LHS_NA, typename LHS_T, bool RHS_NA, typename RHS_T>
+inline sugar::Minus_Vector_Vector<
+	RTYPE ,
+	LHS_NA, LHS_T,
+	RHS_NA, RHS_T
+	>
+operator-(
+	const VectorBase<RTYPE,LHS_NA,LHS_T>& lhs,
+	const VectorBase<RTYPE,RHS_NA,RHS_T>& rhs
+) {
+	return sugar::Minus_Vector_Vector<
+		RTYPE,
+		LHS_NA,LHS_T,
+		RHS_NA,RHS_T
+		>( lhs, rhs ) ;
+}
+
+}
+
+#endif
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/operators/operators.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/operators/operators.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/operators/operators.h	(revision 3762)
@@ -0,0 +1,40 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; tab-width: 8 -*-
+//
+// any.h: Rcpp R/C++ interface class library -- any
+//
+// Copyright (C) 2010 - 2011 Dirk Eddelbuettel and Romain Francois
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+#ifndef Rcpp__sugar__operators__operators_h
+#define Rcpp__sugar__operators__operators_h
+
+// binary operators
+#include <Rcpp/sugar/operators/Comparator.h>
+#include <Rcpp/sugar/operators/Comparator_With_One_Value.h>
+
+#include <Rcpp/sugar/operators/logical_operators__Vector__Vector.h>
+#include <Rcpp/sugar/operators/logical_operators__Vector__primitive.h>
+#include <Rcpp/sugar/operators/plus.h>
+#include <Rcpp/sugar/operators/minus.h>
+#include <Rcpp/sugar/operators/times.h>
+#include <Rcpp/sugar/operators/divides.h>
+
+// unary operators
+#include <Rcpp/sugar/operators/not.h>
+#include <Rcpp/sugar/operators/unary_minus.h>
+
+#endif
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/operators/Comparator_With_One_Value.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/operators/Comparator_With_One_Value.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/operators/Comparator_With_One_Value.h	(revision 3762)
@@ -0,0 +1,110 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; tab-width: 8 -*-
+//
+// LessThan.h: Rcpp R/C++ interface class library -- vector operators
+//
+// Copyright (C) 2010 - 2011 Dirk Eddelbuettel and Romain Francois
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+#ifndef Rcpp__sugar__Comparator_With_One_Value_h
+#define Rcpp__sugar__Comparator_With_One_Value_h
+
+namespace Rcpp{
+namespace sugar{
+
+template <int RTYPE, typename Operator, bool NA, typename T>
+class Comparator_With_One_Value : public ::Rcpp::VectorBase< LGLSXP, true, Comparator_With_One_Value<RTYPE,Operator,NA,T> > {
+public:
+	typedef typename Rcpp::VectorBase<RTYPE,NA,T> VEC_TYPE ;
+	typedef typename traits::storage_type<RTYPE>::type STORAGE ;
+	typedef int (Comparator_With_One_Value::*METHOD)(int) const ;
+
+	Comparator_With_One_Value( const VEC_TYPE& lhs_, STORAGE rhs_ ) :
+		lhs(lhs_), rhs(rhs_), m(), op() {
+
+			m = Rcpp::traits::is_na<RTYPE>(rhs) ?
+				&Comparator_With_One_Value::rhs_is_na :
+				&Comparator_With_One_Value::rhs_is_not_na ;
+
+	}
+
+	inline int operator[]( R_xlen_t i ) const {
+		return (this->*m)(i) ;
+	}
+
+	inline R_xlen_t size() const { return lhs.size() ; }
+
+private:
+	const VEC_TYPE& lhs ;
+	STORAGE rhs ;
+	METHOD m ;
+	Operator op ;
+
+	inline int rhs_is_na(int i) const { return rhs ; }
+	inline int rhs_is_not_na(int i) const {
+		STORAGE x = lhs[i] ;
+		return Rcpp::traits::is_na<RTYPE>(x) ? x : op( x, rhs ) ;
+	}
+
+} ;
+
+
+template <int RTYPE, typename Operator, typename T>
+class Comparator_With_One_Value<RTYPE,Operator,false,T> :
+	public ::Rcpp::VectorBase< RTYPE, true, Comparator_With_One_Value<LGLSXP,Operator,false,T> > {
+
+public:
+	typedef typename Rcpp::VectorBase<RTYPE,false,T> VEC_TYPE ;
+	typedef typename traits::storage_type<RTYPE>::type STORAGE ;
+	typedef int (Comparator_With_One_Value::*METHOD)(int) const ;
+
+	Comparator_With_One_Value( const VEC_TYPE& lhs_, STORAGE rhs_ ) :
+		lhs(lhs_), rhs(rhs_), m(), op() {
+
+			m = Rcpp::traits::is_na<RTYPE>(rhs) ?
+				&Comparator_With_One_Value::rhs_is_na :
+				&Comparator_With_One_Value::rhs_is_not_na ;
+
+	}
+
+	inline int operator[]( R_xlen_t i ) const {
+		return (this->*m)(i) ;
+	}
+
+	inline R_xlen_t size() const { return lhs.size() ; }
+
+private:
+	const VEC_TYPE& lhs ;
+	STORAGE rhs ;
+	METHOD m ;
+	Operator op ;
+
+	inline int rhs_is_na(int i) const { return rhs ; }
+	inline int rhs_is_not_na(int i) const {
+		return op( lhs[i], rhs ) ;
+	}
+
+} ;
+
+
+} // sugar
+} // Rcpp
+
+
+
+
+
+#endif
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/operators/logical_operators__Vector__primitive.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/operators/logical_operators__Vector__primitive.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/operators/logical_operators__Vector__primitive.h	(revision 3762)
@@ -0,0 +1,290 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; tab-width: 8 -*-
+//
+// logical_operators__Vector__primitive.h: Rcpp R/C++ interface class library --
+//    logical operators for Vector to primitive comparisons
+//
+// Copyright (C) 2010 - 2011 Dirk Eddelbuettel and Romain Francois
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+#ifndef Rcpp__sugar__logical_operators__Vector__primitive_h
+#define Rcpp__sugar__logical_operators__Vector__primitive_h
+
+/* Vector < primitive */
+template <int RTYPE, bool NA, typename T>
+inline Rcpp::sugar::Comparator_With_One_Value<
+	RTYPE ,
+	Rcpp::sugar::less<RTYPE>,
+	NA,
+	T
+	>
+operator<(
+	const Rcpp::VectorBase<RTYPE,NA,T>& lhs ,
+	typename Rcpp::traits::storage_type<RTYPE>::type rhs
+	){
+	return Rcpp::sugar::Comparator_With_One_Value<
+		RTYPE,
+		Rcpp::sugar::less<RTYPE>,
+		NA,
+		T
+		>(
+			lhs, rhs
+		) ;
+}
+template <int RTYPE, bool NA, typename T>
+inline Rcpp::sugar::Comparator_With_One_Value<
+	RTYPE ,
+	Rcpp::sugar::less<RTYPE>,
+	NA,
+	T
+	>
+operator>(
+	typename Rcpp::traits::storage_type<RTYPE>::type rhs,
+	const Rcpp::VectorBase<RTYPE,NA,T>& lhs
+	){
+	return Rcpp::sugar::Comparator_With_One_Value<
+		RTYPE,
+		Rcpp::sugar::less<RTYPE>,
+		NA,
+		T
+		>(
+			lhs, rhs
+		) ;
+}
+
+
+
+/* Vector > primitive */
+template <int RTYPE, bool NA, typename T>
+inline Rcpp::sugar::Comparator_With_One_Value<
+	RTYPE ,
+	Rcpp::sugar::greater<RTYPE>,
+	NA,
+	T
+	>
+operator>(
+	const Rcpp::VectorBase<RTYPE,NA,T>& lhs ,
+	typename Rcpp::traits::storage_type<RTYPE>::type rhs
+	){
+	return Rcpp::sugar::Comparator_With_One_Value<
+		RTYPE,
+		Rcpp::sugar::greater<RTYPE>,
+		NA,
+		T
+		>(
+			lhs, rhs
+		) ;
+}
+template <int RTYPE, bool NA, typename T>
+inline Rcpp::sugar::Comparator_With_One_Value<
+	RTYPE ,
+	Rcpp::sugar::greater<RTYPE>,
+	NA,
+	T
+	>
+operator<(
+	typename Rcpp::traits::storage_type<RTYPE>::type rhs,
+	const Rcpp::VectorBase<RTYPE,NA,T>& lhs
+	){
+	return Rcpp::sugar::Comparator_With_One_Value<
+		RTYPE,
+		Rcpp::sugar::greater<RTYPE>,
+		NA,
+		T
+		>(
+			lhs, rhs
+		) ;
+}
+
+
+
+/* Vector <= primitive */
+template <int RTYPE, bool NA, typename T>
+inline Rcpp::sugar::Comparator_With_One_Value<
+	RTYPE ,
+	Rcpp::sugar::less_or_equal<RTYPE>,
+	NA,
+	T
+	>
+operator<=(
+	const Rcpp::VectorBase<RTYPE,NA,T>& lhs ,
+	typename Rcpp::traits::storage_type<RTYPE>::type rhs
+	){
+	return Rcpp::sugar::Comparator_With_One_Value<
+		RTYPE,
+		Rcpp::sugar::less_or_equal<RTYPE>,
+		NA,
+		T
+		>(
+			lhs, rhs
+		) ;
+}
+template <int RTYPE, bool NA, typename T>
+inline Rcpp::sugar::Comparator_With_One_Value<
+	RTYPE ,
+	Rcpp::sugar::less_or_equal<RTYPE>,
+	NA,
+	T
+	>
+operator>=(
+	typename Rcpp::traits::storage_type<RTYPE>::type rhs,
+	const Rcpp::VectorBase<RTYPE,NA,T>& lhs
+	){
+	return Rcpp::sugar::Comparator_With_One_Value<
+		RTYPE,
+		Rcpp::sugar::less_or_equal<RTYPE>,
+		NA,
+		T
+		>(
+			lhs, rhs
+		) ;
+}
+
+
+
+
+/* Vector >= primitive */
+template <int RTYPE, bool NA, typename T>
+inline Rcpp::sugar::Comparator_With_One_Value<
+	RTYPE ,
+	Rcpp::sugar::greater_or_equal<RTYPE>,
+	NA,
+	T
+	>
+operator>=(
+	const Rcpp::VectorBase<RTYPE,NA,T>& lhs ,
+	typename Rcpp::traits::storage_type<RTYPE>::type rhs
+	){
+	return Rcpp::sugar::Comparator_With_One_Value<
+		RTYPE,
+		Rcpp::sugar::greater_or_equal<RTYPE>,
+		NA,
+		T
+		>(
+			lhs, rhs
+		) ;
+}
+template <int RTYPE, bool NA, typename T>
+inline Rcpp::sugar::Comparator_With_One_Value<
+	RTYPE ,
+	Rcpp::sugar::greater_or_equal<RTYPE>,
+	NA,
+	T
+	>
+operator<=(
+	typename Rcpp::traits::storage_type<RTYPE>::type rhs,
+	const Rcpp::VectorBase<RTYPE,NA,T>& lhs
+	){
+	return Rcpp::sugar::Comparator_With_One_Value<
+		RTYPE,
+		Rcpp::sugar::greater_or_equal<RTYPE>,
+		NA,
+		T
+		>(
+			lhs, rhs
+		) ;
+}
+
+
+
+/* Vector == primitive */
+template <int RTYPE, bool NA, typename T>
+inline Rcpp::sugar::Comparator_With_One_Value<
+	RTYPE ,
+	Rcpp::sugar::equal<RTYPE>,
+	NA,
+	T
+	>
+operator==(
+	const Rcpp::VectorBase<RTYPE,NA,T>& lhs ,
+	typename Rcpp::traits::storage_type<RTYPE>::type rhs
+	){
+	return Rcpp::sugar::Comparator_With_One_Value<
+		RTYPE,
+		Rcpp::sugar::equal<RTYPE>,
+		NA,
+		T
+		>(
+			lhs, rhs
+		) ;
+}
+template <int RTYPE, bool NA, typename T>
+inline Rcpp::sugar::Comparator_With_One_Value<
+	RTYPE ,
+	Rcpp::sugar::equal<RTYPE>,
+	NA,
+	T
+	>
+operator==(
+	typename Rcpp::traits::storage_type<RTYPE>::type rhs,
+	const Rcpp::VectorBase<RTYPE,NA,T>& lhs
+	){
+	return Rcpp::sugar::Comparator_With_One_Value<
+		RTYPE,
+		Rcpp::sugar::equal<RTYPE>,
+		NA,
+		T
+		>(
+			lhs, rhs
+		) ;
+}
+
+
+
+/* Vector != primitive */
+template <int RTYPE, bool NA, typename T>
+inline Rcpp::sugar::Comparator_With_One_Value<
+	RTYPE ,
+	Rcpp::sugar::not_equal<RTYPE>,
+	NA,
+	T
+	>
+operator!=(
+	const Rcpp::VectorBase<RTYPE,NA,T>& lhs ,
+	typename Rcpp::traits::storage_type<RTYPE>::type rhs
+	){
+	return Rcpp::sugar::Comparator_With_One_Value<
+		RTYPE,
+		Rcpp::sugar::not_equal<RTYPE>,
+		NA,
+		T
+		>(
+			lhs, rhs
+		) ;
+}
+template <int RTYPE, bool NA, typename T>
+inline Rcpp::sugar::Comparator_With_One_Value<
+	RTYPE ,
+	Rcpp::sugar::not_equal<RTYPE>,
+	NA,
+	T
+	>
+operator!=(
+	typename Rcpp::traits::storage_type<RTYPE>::type rhs,
+	const Rcpp::VectorBase<RTYPE,NA,T>& lhs
+	){
+	return Rcpp::sugar::Comparator_With_One_Value<
+		RTYPE,
+		Rcpp::sugar::not_equal<RTYPE>,
+		NA,
+		T
+		>(
+			lhs, rhs
+		) ;
+}
+
+
+#endif
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/operators/not.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/operators/not.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/operators/not.h	(revision 3762)
@@ -0,0 +1,108 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; tab-width: 8 -*-
+//
+// not.h: Rcpp R/C++ interface class library -- unary operator!
+//
+// Copyright (C) 2010 - 2011 Dirk Eddelbuettel and Romain Francois
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+#ifndef Rcpp__sugar__not_h
+#define Rcpp__sugar__not_h
+
+namespace Rcpp{
+namespace sugar{
+
+	template <int RTYPE,bool NA>
+	class not_ {
+	public:
+		typedef typename traits::storage_type<RTYPE>::type STORAGE ;
+		inline int apply( STORAGE x ) const {
+			return Rcpp::traits::is_na<RTYPE>(x) ? NA_LOGICAL : (x ? FALSE : TRUE) ;
+		}
+	} ;
+	template <int RTYPE>
+	class not_<RTYPE,false> {
+	public:
+		typedef typename Rcpp::traits::storage_type<RTYPE>::type STORAGE ;
+		inline int apply( STORAGE x ) const {
+			return x ? FALSE : TRUE ;
+		}
+	} ;
+	template <bool NA>
+	class not_<REALSXP,NA>{
+	public:
+		inline int apply( double x ) const {
+			return Rcpp::traits::is_na<REALSXP>( x ) ? NA_LOGICAL : ( (x == 0) ? FALSE : TRUE ) ;
+		}
+	} ;
+	template <>
+	class not_<REALSXP,false>{
+	public:
+		inline int apply( double x ) const {
+			return ( x == 0.0 ? FALSE : TRUE ) ;
+		}
+	} ;
+	template <bool NA>
+	class not_<CPLXSXP,NA>{
+	public:
+		inline int apply( Rcomplex x ) const {
+			return Rcpp::traits::is_na<CPLXSXP>( x ) ? NA_LOGICAL : ( (x.r == 0.0 & x.i == 0.0 ) ? FALSE : TRUE ) ;
+		}
+	} ;
+	template <>
+	class not_<CPLXSXP,false>{
+	public:
+		inline int apply( Rcomplex x ) const {
+			return ((x.r == 0.0) & (x.i == 0.0) ) ? FALSE : TRUE ;
+		}
+	} ;
+
+
+
+	template <int RTYPE, bool NA, typename T>
+	class Not_Vector : public Rcpp::VectorBase<LGLSXP,NA, Not_Vector<RTYPE,NA,T> > {
+	public:
+		typedef typename Rcpp::VectorBase<RTYPE,NA,T> VEC_TYPE ;
+		typedef typename traits::storage_type<RTYPE>::type STORAGE ;
+		typedef not_<RTYPE,NA> OPERATOR ;
+
+		Not_Vector( const VEC_TYPE& lhs_ ) :
+			lhs(lhs_), op() {}
+
+		inline STORAGE operator[]( R_xlen_t i ) const {
+			return op.apply( lhs[i] ) ;
+		}
+
+		inline R_xlen_t size() const { return lhs.size() ; }
+
+	private:
+		const VEC_TYPE& lhs ;
+		OPERATOR op ;
+	} ;
+
+}
+}
+
+template <int RTYPE,bool NA, typename T>
+inline Rcpp::sugar::Not_Vector< RTYPE , NA , T >
+operator!(
+	const Rcpp::VectorBase<RTYPE,NA,T>& x
+) {
+	return Rcpp::sugar::Not_Vector<RTYPE,NA, T >( x ) ;
+}
+
+
+#endif
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/operators/times.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/operators/times.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/operators/times.h	(revision 3762)
@@ -0,0 +1,486 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; tab-width: 4 -*-
+//
+// times.h: Rcpp R/C++ interface class library -- operator*
+//
+// Copyright (C) 2010 - 2011 Dirk Eddelbuettel and Romain Francois
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+#ifndef Rcpp__sugar__times_h
+#define Rcpp__sugar__times_h
+
+namespace Rcpp{
+namespace sugar{
+
+	template <int RTYPE, bool LHS_NA, typename LHS_T, bool RHS_NA, typename RHS_T >
+	class Times_Vector_Vector : public Rcpp::VectorBase<RTYPE, true , Times_Vector_Vector<RTYPE,LHS_NA,LHS_T,RHS_NA,RHS_T> > {
+	public:
+		typedef typename traits::storage_type<RTYPE>::type STORAGE ;
+		typedef typename Rcpp::VectorBase<RTYPE,LHS_NA,LHS_T> LHS_TYPE ;
+		typedef typename Rcpp::VectorBase<RTYPE,RHS_NA,RHS_T> RHS_TYPE ;
+
+		typedef typename Rcpp::traits::Extractor< RTYPE, LHS_NA, LHS_T>::type LHS_EXT ;
+		typedef typename Rcpp::traits::Extractor< RTYPE, RHS_NA, RHS_T>::type RHS_EXT ;
+
+		Times_Vector_Vector( const LHS_TYPE& lhs_, const RHS_TYPE& rhs_ ) :
+			lhs(lhs_.get_ref()), rhs(rhs_.get_ref()) {
+		}
+
+		inline STORAGE operator[]( R_xlen_t i ) const {
+			STORAGE lhs_ = lhs[i] ;
+			if( traits::is_na<RTYPE>(lhs_) ) return lhs_ ;
+			STORAGE rhs_ = rhs[i] ;
+			return traits::is_na<RTYPE>(rhs_) ? rhs_ : (lhs_ * rhs_) ;
+		}
+
+		inline R_xlen_t size() const { return lhs.size() ; }
+
+	private:
+		const LHS_EXT& lhs ;
+		const RHS_EXT& rhs ;
+	} ;
+    // RTYPE = REALSXP
+    template <bool LHS_NA, typename LHS_T, bool RHS_NA, typename RHS_T >
+	class Times_Vector_Vector<REALSXP,LHS_NA,LHS_T,RHS_NA,RHS_T> :
+	    public Rcpp::VectorBase<REALSXP, true , Times_Vector_Vector<REALSXP,LHS_NA,LHS_T,RHS_NA,RHS_T> > {
+	public:
+		typedef typename Rcpp::VectorBase<REALSXP,LHS_NA,LHS_T> LHS_TYPE ;
+		typedef typename Rcpp::VectorBase<REALSXP,RHS_NA,RHS_T> RHS_TYPE ;
+
+		typedef typename Rcpp::traits::Extractor<REALSXP, LHS_NA, LHS_T>::type LHS_EXT ;
+		typedef typename Rcpp::traits::Extractor<REALSXP, RHS_NA, RHS_T>::type RHS_EXT ;
+
+		Times_Vector_Vector( const LHS_TYPE& lhs_, const RHS_TYPE& rhs_ ) :
+			lhs(lhs_.get_ref()), rhs(rhs_.get_ref()) {
+		}
+
+		inline double operator[]( R_xlen_t i ) const {
+			return lhs[i] * rhs[i];
+		}
+
+		inline R_xlen_t size() const { return lhs.size() ; }
+
+	private:
+		const LHS_EXT& lhs ;
+		const RHS_EXT& rhs ;
+	} ;
+
+
+	// specialization LHS_NA = false
+	template <int RTYPE, typename LHS_T, bool RHS_NA, typename RHS_T >
+	class Times_Vector_Vector<RTYPE,false,LHS_T,RHS_NA,RHS_T> : public Rcpp::VectorBase<RTYPE,true, Times_Vector_Vector<RTYPE,false,LHS_T,RHS_NA,RHS_T> > {
+	public:
+		typedef typename traits::storage_type<RTYPE>::type STORAGE ;
+		typedef typename Rcpp::VectorBase<RTYPE,false,LHS_T> LHS_TYPE ;
+		typedef typename Rcpp::VectorBase<RTYPE,RHS_NA,RHS_T> RHS_TYPE ;
+
+		typedef typename Rcpp::traits::Extractor< RTYPE, false, LHS_T>::type LHS_EXT ;
+		typedef typename Rcpp::traits::Extractor< RTYPE, RHS_NA, RHS_T>::type RHS_EXT ;
+
+		Times_Vector_Vector( const LHS_TYPE& lhs_, const RHS_TYPE& rhs_ ) :
+			lhs(lhs_.get_ref()), rhs(rhs_.get_ref()){}
+
+		inline STORAGE operator[]( R_xlen_t i ) const {
+			STORAGE rhs_ = rhs[i] ;
+			if( traits::is_na<RTYPE>(rhs_) ) return rhs_ ;
+			return lhs[i] * rhs_  ;
+		}
+
+		inline R_xlen_t size() const { return lhs.size() ; }
+
+	private:
+		const LHS_EXT& lhs ;
+		const RHS_EXT& rhs ;
+	} ;
+	// RTYPE = REALSXP
+	template <typename LHS_T, bool RHS_NA, typename RHS_T >
+	class Times_Vector_Vector<REALSXP,false,LHS_T,RHS_NA,RHS_T> :
+	    public Rcpp::VectorBase<REALSXP,true, Times_Vector_Vector<REALSXP,false,LHS_T,RHS_NA,RHS_T> > {
+	public:
+		typedef typename Rcpp::VectorBase<REALSXP,false,LHS_T> LHS_TYPE ;
+		typedef typename Rcpp::VectorBase<REALSXP,RHS_NA,RHS_T> RHS_TYPE ;
+
+		typedef typename Rcpp::traits::Extractor<REALSXP, false, LHS_T>::type LHS_EXT ;
+		typedef typename Rcpp::traits::Extractor<REALSXP, RHS_NA, RHS_T>::type RHS_EXT ;
+
+		Times_Vector_Vector( const LHS_TYPE& lhs_, const RHS_TYPE& rhs_ ) :
+			lhs(lhs_.get_ref()), rhs(rhs_.get_ref()){}
+
+		inline double operator[]( R_xlen_t i ) const {
+			return lhs[i] * rhs[i] ;
+		}
+
+		inline R_xlen_t size() const { return lhs.size() ; }
+
+	private:
+		const LHS_EXT& lhs ;
+		const RHS_EXT& rhs ;
+	} ;
+
+
+	// specialization for RHS_NA = false
+	template <int RTYPE, bool LHS_NA, typename LHS_T, typename RHS_T >
+	class Times_Vector_Vector<RTYPE,LHS_NA,LHS_T,false,RHS_T> : public Rcpp::VectorBase<RTYPE, true , Times_Vector_Vector<RTYPE,LHS_NA,LHS_T,false,RHS_T> > {
+	public:
+		typedef typename traits::storage_type<RTYPE>::type STORAGE ;
+		typedef typename Rcpp::VectorBase<RTYPE,LHS_NA,LHS_T> LHS_TYPE ;
+		typedef typename Rcpp::VectorBase<RTYPE,false,RHS_T> RHS_TYPE ;
+
+		typedef typename Rcpp::traits::Extractor< RTYPE, LHS_NA, LHS_T>::type LHS_EXT ;
+		typedef typename Rcpp::traits::Extractor< RTYPE, false, RHS_T>::type RHS_EXT ;
+
+		Times_Vector_Vector( const LHS_TYPE& lhs_, const RHS_TYPE& rhs_ ) :
+			lhs(lhs_.get_ref()), rhs(rhs_.get_ref()){}
+
+		inline STORAGE operator[]( R_xlen_t i ) const {
+			STORAGE lhs_ = lhs[i] ;
+			if( traits::is_na<RTYPE>(lhs_) ) return lhs_ ;
+			return lhs_ * rhs[i]  ;
+		}
+
+		inline R_xlen_t size() const { return lhs.size() ; }
+
+	private:
+		const LHS_EXT& lhs ;
+		const RHS_EXT& rhs ;
+	} ;
+	// RTYPE = REALSXP
+	template <bool LHS_NA, typename LHS_T, typename RHS_T >
+	class Times_Vector_Vector<REALSXP,LHS_NA,LHS_T,false,RHS_T> :
+	    public Rcpp::VectorBase<REALSXP, true , Times_Vector_Vector<REALSXP,LHS_NA,LHS_T,false,RHS_T> > {
+	public:
+		typedef typename Rcpp::VectorBase<REALSXP,LHS_NA,LHS_T> LHS_TYPE ;
+		typedef typename Rcpp::VectorBase<REALSXP,false,RHS_T> RHS_TYPE ;
+
+		typedef typename Rcpp::traits::Extractor<REALSXP, LHS_NA, LHS_T>::type LHS_EXT ;
+		typedef typename Rcpp::traits::Extractor<REALSXP, false, RHS_T>::type RHS_EXT ;
+
+		Times_Vector_Vector( const LHS_TYPE& lhs_, const RHS_TYPE& rhs_ ) :
+			lhs(lhs_.get_ref()), rhs(rhs_.get_ref()){}
+
+		inline double operator[]( R_xlen_t i ) const {
+			return lhs[i] * rhs[i] ;
+		}
+
+		inline R_xlen_t size() const { return lhs.size() ; }
+
+	private:
+		const LHS_EXT& lhs ;
+		const RHS_EXT& rhs ;
+	} ;
+
+	// specialization for RHS_NA = false  and LHS_NA = false
+	template <int RTYPE, typename LHS_T, typename RHS_T >
+	class Times_Vector_Vector<RTYPE,false,LHS_T,false,RHS_T> : public Rcpp::VectorBase<RTYPE, false , Times_Vector_Vector<RTYPE,false,LHS_T,false,RHS_T> > {
+	public:
+		typedef typename traits::storage_type<RTYPE>::type STORAGE ;
+		typedef typename Rcpp::VectorBase<RTYPE,false,LHS_T> LHS_TYPE ;
+		typedef typename Rcpp::VectorBase<RTYPE,false,RHS_T> RHS_TYPE ;
+
+		typedef typename Rcpp::traits::Extractor< RTYPE, false, LHS_T>::type LHS_EXT ;
+		typedef typename Rcpp::traits::Extractor< RTYPE, false, RHS_T>::type RHS_EXT ;
+
+		Times_Vector_Vector( const LHS_TYPE& lhs_, const RHS_TYPE& rhs_ ) :
+			lhs(lhs_.get_ref()), rhs(rhs_.get_ref()){}
+
+		inline STORAGE operator[]( R_xlen_t i ) const {
+			return lhs[i] * rhs[i]  ;
+		}
+
+		inline R_xlen_t size() const { return lhs.size() ; }
+
+	private:
+		const LHS_EXT& lhs ;
+		const RHS_EXT& rhs ;
+	} ;
+    // RTYPE = REALSXP
+	template <typename LHS_T, typename RHS_T >
+	class Times_Vector_Vector<REALSXP,false,LHS_T,false,RHS_T> :
+	    public Rcpp::VectorBase<REALSXP, false , Times_Vector_Vector<REALSXP,false,LHS_T,false,RHS_T> > {
+	public:
+		typedef typename Rcpp::VectorBase<REALSXP,false,LHS_T> LHS_TYPE ;
+		typedef typename Rcpp::VectorBase<REALSXP,false,RHS_T> RHS_TYPE ;
+
+		typedef typename Rcpp::traits::Extractor<REALSXP, false, LHS_T>::type LHS_EXT ;
+		typedef typename Rcpp::traits::Extractor<REALSXP, false, RHS_T>::type RHS_EXT ;
+
+		Times_Vector_Vector( const LHS_TYPE& lhs_, const RHS_TYPE& rhs_ ) :
+			lhs(lhs_.get_ref()), rhs(rhs_.get_ref()){}
+
+		inline double operator[]( R_xlen_t i ) const {
+			return lhs[i] * rhs[i]  ;
+		}
+
+		inline R_xlen_t size() const { return lhs.size() ; }
+
+	private:
+		const LHS_EXT& lhs ;
+		const RHS_EXT& rhs ;
+	} ;
+
+
+	template <int RTYPE, bool NA, typename T>
+	class Times_Vector_Primitive : public Rcpp::VectorBase<RTYPE,true, Times_Vector_Primitive<RTYPE,NA,T> > {
+	public:
+		typedef typename Rcpp::VectorBase<RTYPE,NA,T> VEC_TYPE ;
+		typedef typename traits::storage_type<RTYPE>::type STORAGE ;
+
+		typedef typename Rcpp::traits::Extractor< RTYPE, NA, T>::type EXT ;
+
+		Times_Vector_Primitive( const VEC_TYPE& lhs_, STORAGE rhs_ ) :
+			lhs(lhs_.get_ref()), rhs(rhs_), rhs_na( Rcpp::traits::is_na<RTYPE>(rhs_) )
+			{}
+
+		inline STORAGE operator[]( R_xlen_t i ) const {
+			if( rhs_na ) return rhs ;
+			STORAGE x = lhs[i] ;
+			return Rcpp::traits::is_na<RTYPE>(x) ? x : (x * rhs) ;
+		}
+
+		inline R_xlen_t size() const { return lhs.size() ; }
+
+	private:
+		const EXT& lhs ;
+		STORAGE rhs ;
+		bool rhs_na ;
+	} ;
+	// RTYPE = REALSXP
+	template <bool NA, typename T>
+	class Times_Vector_Primitive<REALSXP,NA,T> :
+	    public Rcpp::VectorBase<REALSXP,true, Times_Vector_Primitive<REALSXP,NA,T> > {
+	public:
+		typedef typename Rcpp::VectorBase<REALSXP,NA,T> VEC_TYPE ;
+		typedef typename Rcpp::traits::Extractor<REALSXP, NA, T>::type EXT ;
+
+		Times_Vector_Primitive( const VEC_TYPE& lhs_, double rhs_ ) :
+			lhs(lhs_.get_ref()), rhs(rhs_)
+			{}
+
+		inline double operator[]( R_xlen_t i ) const {
+			return rhs * lhs[i] ;
+		}
+
+		inline R_xlen_t size() const { return lhs.size() ; }
+
+	private:
+		const EXT& lhs ;
+		double rhs ;
+	} ;
+
+
+	template <int RTYPE, typename T>
+	class Times_Vector_Primitive<RTYPE,false,T> : public Rcpp::VectorBase<RTYPE,false, Times_Vector_Primitive<RTYPE,false,T> > {
+	public:
+		typedef typename Rcpp::VectorBase<RTYPE,false,T> VEC_TYPE ;
+		typedef typename traits::storage_type<RTYPE>::type STORAGE ;
+
+		typedef typename Rcpp::traits::Extractor< RTYPE, false, T>::type EXT ;
+
+		Times_Vector_Primitive( const VEC_TYPE& lhs_, STORAGE rhs_ ) :
+			lhs(lhs_.get_ref()), rhs(rhs_), rhs_na( Rcpp::traits::is_na<RTYPE>(rhs_) ) {}
+
+		inline STORAGE operator[]( R_xlen_t i ) const {
+			return rhs_na ? rhs : (rhs * lhs[i] ) ;
+		}
+
+		inline R_xlen_t size() const { return lhs.size() ; }
+
+	private:
+		const EXT& lhs ;
+		STORAGE rhs ;
+		bool rhs_na ;
+
+	} ;
+	// RTYPE = REALSXP
+	template <typename T>
+	class Times_Vector_Primitive<REALSXP,false,T> :
+	    public Rcpp::VectorBase<REALSXP,false, Times_Vector_Primitive<REALSXP,false,T> > {
+	public:
+		typedef typename Rcpp::VectorBase<REALSXP,false,T> VEC_TYPE ;
+		typedef typename Rcpp::traits::Extractor<REALSXP, false, T>::type EXT ;
+
+		Times_Vector_Primitive( const VEC_TYPE& lhs_, double rhs_ ) :
+			lhs(lhs_.get_ref()), rhs(rhs_) {}
+
+		inline double operator[]( R_xlen_t i ) const {
+			return rhs * lhs[i] ;
+		}
+
+		inline R_xlen_t size() const { return lhs.size() ; }
+
+	private:
+		const EXT& lhs ;
+		double rhs ;
+	} ;
+
+
+
+
+
+
+	// Vector * nona(primitive)
+	template <int RTYPE, bool NA, typename T>
+	class Times_Vector_Primitive_nona : public Rcpp::VectorBase<RTYPE,true, Times_Vector_Primitive_nona<RTYPE,NA,T> > {
+	public:
+		typedef typename Rcpp::VectorBase<RTYPE,NA,T> VEC_TYPE ;
+		typedef typename traits::storage_type<RTYPE>::type STORAGE ;
+		typedef typename Rcpp::traits::Extractor< RTYPE, NA, T>::type EXT ;
+
+		Times_Vector_Primitive_nona( const VEC_TYPE& lhs_, STORAGE rhs_ ) :
+			lhs(lhs_.get_ref()), rhs(rhs_)
+			{}
+
+		inline STORAGE operator[]( R_xlen_t i ) const {
+			STORAGE x = lhs[i] ;
+			return Rcpp::traits::is_na<RTYPE>(x) ? x : (x * rhs) ;
+		}
+
+		inline R_xlen_t size() const { return lhs.size() ; }
+
+	private:
+		const EXT& lhs ;
+		STORAGE rhs ;
+
+	} ;
+	// RTYPE = REALSXP
+	template <bool NA, typename T>
+	class Times_Vector_Primitive_nona<REALSXP,NA,T> :
+	    public Rcpp::VectorBase<REALSXP,true, Times_Vector_Primitive_nona<REALSXP,NA,T> > {
+	public:
+		typedef typename Rcpp::VectorBase<REALSXP,NA,T> VEC_TYPE ;
+		typedef typename Rcpp::traits::Extractor<REALSXP,NA,T>::type EXT ;
+
+		Times_Vector_Primitive_nona( const VEC_TYPE& lhs_, double rhs_ ) :
+			lhs(lhs_.get_ref()), rhs(rhs_)
+			{}
+
+		inline double operator[]( R_xlen_t i ) const {
+			return lhs[i] * rhs ;
+		}
+
+		inline R_xlen_t size() const { return lhs.size() ; }
+
+	private:
+		const EXT& lhs ;
+		double rhs ;
+	} ;
+
+
+	template <int RTYPE, typename T>
+	class Times_Vector_Primitive_nona<RTYPE,false,T> : public Rcpp::VectorBase<RTYPE,false, Times_Vector_Primitive_nona<RTYPE,false,T> > {
+	public:
+		typedef typename Rcpp::VectorBase<RTYPE,false,T> VEC_TYPE ;
+		typedef typename traits::storage_type<RTYPE>::type STORAGE ;
+
+		typedef typename Rcpp::traits::Extractor< RTYPE, false, T>::type EXT ;
+
+		Times_Vector_Primitive_nona( const VEC_TYPE& lhs_, STORAGE rhs_ ) :
+			lhs(lhs_.get_ref()), rhs(rhs_) {}
+
+		inline STORAGE operator[]( R_xlen_t i ) const {
+			return rhs * lhs[i] ;
+		}
+
+		inline R_xlen_t size() const { return lhs.size() ; }
+
+	private:
+		const EXT& lhs ;
+		STORAGE rhs ;
+
+	} ;
+	template <typename T>
+	class Times_Vector_Primitive_nona<REALSXP,false,T> :
+	    public Rcpp::VectorBase<REALSXP,false, Times_Vector_Primitive_nona<REALSXP,false,T> > {
+	public:
+		typedef typename Rcpp::VectorBase<REALSXP,false,T> VEC_TYPE ;
+		typedef typename Rcpp::traits::Extractor<REALSXP, false, T>::type EXT ;
+
+		Times_Vector_Primitive_nona( const VEC_TYPE& lhs_, double rhs_ ) :
+			lhs(lhs_.get_ref()), rhs(rhs_) {}
+
+		inline double operator[]( R_xlen_t i ) const {
+			return rhs * lhs[i] ;
+		}
+
+		inline R_xlen_t size() const { return lhs.size() ; }
+
+	private:
+		const EXT& lhs ;
+		double rhs ;
+	} ;
+
+}
+
+template <int RTYPE,bool NA, typename T, typename U>
+inline typename traits::enable_if<traits::is_convertible<typename traits::remove_const_and_reference<U>::type, typename traits::storage_type<RTYPE>::type>::value, sugar::Times_Vector_Primitive<RTYPE,NA,T> >::type
+operator*(
+	const VectorBase<RTYPE,NA,T>& lhs,
+	const U &rhs
+) {
+	return sugar::Times_Vector_Primitive<RTYPE,NA,T>( lhs, rhs ) ;
+}
+
+
+template <int RTYPE,bool NA, typename T, typename U>
+inline typename traits::enable_if<traits::is_convertible<typename traits::remove_const_and_reference<U>::type, typename traits::storage_type<RTYPE>::type>::value, sugar::Times_Vector_Primitive< RTYPE , NA , T > >::type
+operator*(
+	const U &rhs,
+	const VectorBase<RTYPE,NA,T>& lhs
+) {
+	return sugar::Times_Vector_Primitive<RTYPE,NA, T >( lhs, rhs ) ;
+}
+
+
+
+template <int RTYPE,bool NA, typename T, typename U>
+inline typename traits::enable_if<traits::is_convertible<typename traits::remove_const_and_reference<U>::type, typename traits::storage_type<RTYPE>::type>::value, sugar::Times_Vector_Primitive_nona<RTYPE,NA,T> >::type
+operator*(
+	const VectorBase<RTYPE,NA,T>& lhs,
+	const typename sugar::NonaPrimitive< U > &rhs
+) {
+	return sugar::Times_Vector_Primitive_nona<RTYPE,NA,T>( lhs, rhs ) ;
+}
+
+template <int RTYPE,bool NA, typename T, typename U>
+inline typename traits::enable_if<traits::is_convertible<typename traits::remove_const_and_reference<U>::type, typename traits::storage_type<RTYPE>::type>::value, sugar::Times_Vector_Primitive_nona< RTYPE , NA , T > >::type
+operator*(
+	const typename sugar::NonaPrimitive< U > &rhs,
+	const VectorBase<RTYPE,NA,T>& lhs
+) {
+	return sugar::Times_Vector_Primitive_nona<RTYPE,NA, T >( lhs, rhs ) ;
+}
+
+
+template <int RTYPE,bool LHS_NA, typename LHS_T, bool RHS_NA, typename RHS_T>
+inline sugar::Times_Vector_Vector<
+	RTYPE ,
+	LHS_NA, LHS_T,
+	RHS_NA, RHS_T
+	>
+operator*(
+	const VectorBase<RTYPE,LHS_NA,LHS_T>& lhs,
+	const VectorBase<RTYPE,RHS_NA,RHS_T>& rhs
+) {
+	return sugar::Times_Vector_Vector<
+		RTYPE,
+		LHS_NA, LHS_T,
+		RHS_NA, RHS_T
+		>( lhs, rhs ) ;
+}
+
+}
+
+#endif
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/operators/plus.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/operators/plus.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/operators/plus.h	(revision 3762)
@@ -0,0 +1,505 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; tab-width: 4 -*-
+//
+// plus.h: Rcpp R/C++ interface class library -- operator+
+//
+// Copyright (C) 2010 - 2011 Dirk Eddelbuettel and Romain Francois
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+#ifndef Rcpp__sugar__plus_h
+#define Rcpp__sugar__plus_h
+
+namespace Rcpp{
+namespace sugar{
+
+	template <int RTYPE, bool LHS_NA, typename LHS_T, bool RHS_NA, typename RHS_T >
+	class Plus_Vector_Vector : public Rcpp::VectorBase<RTYPE, true , Plus_Vector_Vector<RTYPE,LHS_NA,LHS_T,RHS_NA,RHS_T> > {
+	public:
+		typedef typename traits::storage_type<RTYPE>::type STORAGE ;
+		typedef typename Rcpp::VectorBase<RTYPE,LHS_NA,LHS_T> LHS_TYPE ;
+		typedef typename Rcpp::VectorBase<RTYPE,RHS_NA,RHS_T> RHS_TYPE ;
+
+		typedef typename Rcpp::traits::Extractor< RTYPE, LHS_NA, LHS_T>::type LHS_EXT ;
+		typedef typename Rcpp::traits::Extractor< RTYPE, RHS_NA, RHS_T>::type RHS_EXT ;
+
+		Plus_Vector_Vector( const LHS_TYPE& lhs_, const RHS_TYPE& rhs_ ) :
+			lhs(lhs_.get_ref()), rhs(rhs_.get_ref()) {}
+
+		inline STORAGE operator[]( R_xlen_t i ) const {
+			STORAGE lhs_ = lhs[i] ;
+			if( traits::is_na<RTYPE>(lhs_) ) return lhs_ ;
+			STORAGE rhs_ = rhs[i] ;
+			return traits::is_na<RTYPE>(rhs_) ? rhs_ : (lhs_ + rhs_) ;
+		}
+
+		inline R_xlen_t size() const { return lhs.size() ; }
+
+	private:
+		const LHS_EXT& lhs ;
+		const RHS_EXT& rhs ;
+	} ;
+	// specialization of the above for REALSXP because :
+	// NA_REAL + NA_REAL = NA_REAL
+	// NA_REAL + x = NA_REAL
+	// x + NA_REAL = NA_REAL
+	template <bool LHS_NA, typename LHS_T, bool RHS_NA, typename RHS_T >
+	class Plus_Vector_Vector<REALSXP,LHS_NA,LHS_T,RHS_NA,RHS_T> :
+	    public Rcpp::VectorBase<REALSXP, true , Plus_Vector_Vector<REALSXP,LHS_NA,LHS_T,RHS_NA,RHS_T> > {
+	public:
+		typedef typename Rcpp::VectorBase<REALSXP,LHS_NA,LHS_T> LHS_TYPE ;
+		typedef typename Rcpp::VectorBase<REALSXP,RHS_NA,RHS_T> RHS_TYPE ;
+
+		typedef typename Rcpp::traits::Extractor<REALSXP, LHS_NA, LHS_T>::type LHS_EXT ;
+		typedef typename Rcpp::traits::Extractor<REALSXP, RHS_NA, RHS_T>::type RHS_EXT ;
+
+		Plus_Vector_Vector( const LHS_TYPE& lhs_, const RHS_TYPE& rhs_ ) :
+			lhs(lhs_.get_ref()), rhs(rhs_.get_ref()) {}
+
+		inline double operator[]( R_xlen_t i ) const {
+			return lhs[i] + rhs[i] ;
+		}
+
+		inline R_xlen_t size() const { return lhs.size() ; }
+
+	private:
+		const LHS_EXT& lhs ;
+		const RHS_EXT& rhs ;
+	} ;
+
+
+
+
+	// specialization LHS_NA = false
+	template <int RTYPE, typename LHS_T, bool RHS_NA, typename RHS_T >
+	class Plus_Vector_Vector<RTYPE,false,LHS_T,RHS_NA,RHS_T> : public Rcpp::VectorBase<RTYPE,true, Plus_Vector_Vector<RTYPE,false,LHS_T,RHS_NA,RHS_T> > {
+	public:
+		typedef typename traits::storage_type<RTYPE>::type STORAGE ;
+		typedef typename Rcpp::VectorBase<RTYPE,false,LHS_T> LHS_TYPE ;
+		typedef typename Rcpp::VectorBase<RTYPE,RHS_NA,RHS_T> RHS_TYPE ;
+
+		typedef typename Rcpp::traits::Extractor< RTYPE, false, LHS_T>::type LHS_EXT ;
+		typedef typename Rcpp::traits::Extractor< RTYPE, RHS_NA, RHS_T>::type RHS_EXT ;
+
+		Plus_Vector_Vector( const LHS_TYPE& lhs_, const RHS_TYPE& rhs_ ) :
+			lhs(lhs_.get_ref()), rhs(rhs_.get_ref()){}
+
+		inline STORAGE operator[]( R_xlen_t i ) const {
+			STORAGE rhs_ = rhs[i] ;
+			if( traits::is_na<RTYPE>(rhs_) ) return rhs_ ;
+			return lhs[i] + rhs_  ;
+		}
+
+		inline R_xlen_t size() const { return lhs.size() ; }
+
+	private:
+		const LHS_EXT& lhs ;
+		const RHS_EXT& rhs ;
+	} ;
+	// LHS_NA = false & RTYPE = REALSXP
+	template <typename LHS_T, bool RHS_NA, typename RHS_T >
+	class Plus_Vector_Vector<REALSXP,false,LHS_T,RHS_NA,RHS_T> :
+	    public Rcpp::VectorBase<REALSXP,true, Plus_Vector_Vector<REALSXP,false,LHS_T,RHS_NA,RHS_T> > {
+	public:
+		typedef typename Rcpp::VectorBase<REALSXP,false,LHS_T> LHS_TYPE ;
+		typedef typename Rcpp::VectorBase<REALSXP,RHS_NA,RHS_T> RHS_TYPE ;
+
+		typedef typename Rcpp::traits::Extractor<REALSXP, false, LHS_T>::type LHS_EXT ;
+		typedef typename Rcpp::traits::Extractor<REALSXP, RHS_NA, RHS_T>::type RHS_EXT ;
+
+		Plus_Vector_Vector( const LHS_TYPE& lhs_, const RHS_TYPE& rhs_ ) :
+			lhs(lhs_.get_ref()), rhs(rhs_.get_ref()){}
+
+		inline double operator[]( R_xlen_t i ) const {
+			return lhs[i] + rhs[i] ;
+		}
+
+		inline R_xlen_t size() const { return lhs.size() ; }
+
+	private:
+		const LHS_EXT& lhs ;
+		const RHS_EXT& rhs ;
+	} ;
+
+
+
+	// specialization for RHS_NA = false
+	template <int RTYPE, bool LHS_NA, typename LHS_T, typename RHS_T >
+	class Plus_Vector_Vector<RTYPE,LHS_NA,LHS_T,false,RHS_T> : public Rcpp::VectorBase<RTYPE, true , Plus_Vector_Vector<RTYPE,LHS_NA,LHS_T,false,RHS_T> > {
+	public:
+		typedef typename traits::storage_type<RTYPE>::type STORAGE ;
+		typedef typename Rcpp::VectorBase<RTYPE,LHS_NA,LHS_T> LHS_TYPE ;
+		typedef typename Rcpp::VectorBase<RTYPE,false,RHS_T> RHS_TYPE ;
+
+		typedef typename Rcpp::traits::Extractor< RTYPE, LHS_NA, LHS_T>::type LHS_EXT ;
+		typedef typename Rcpp::traits::Extractor< RTYPE, false, RHS_T>::type RHS_EXT ;
+
+		Plus_Vector_Vector( const LHS_TYPE& lhs_, const RHS_TYPE& rhs_ ) :
+			lhs(lhs_.get_ref()), rhs(rhs_.get_ref()){}
+
+		inline STORAGE operator[]( R_xlen_t i ) const {
+			STORAGE lhs_ = lhs[i] ;
+			if( traits::is_na<RTYPE>(lhs_) ) return lhs_ ;
+			return lhs_ + rhs[i]  ;
+		}
+
+		inline R_xlen_t size() const { return lhs.size() ; }
+
+	private:
+		const LHS_EXT& lhs ;
+		const RHS_EXT& rhs ;
+	} ;
+    // RHS_NA = false, RTYPE = REALSXP
+	template <bool LHS_NA, typename LHS_T, typename RHS_T >
+	class Plus_Vector_Vector<REALSXP,LHS_NA,LHS_T,false,RHS_T> :
+	    public Rcpp::VectorBase<REALSXP, true , Plus_Vector_Vector<REALSXP,LHS_NA,LHS_T,false,RHS_T> > {
+	public:
+		typedef typename Rcpp::VectorBase<REALSXP,LHS_NA,LHS_T> LHS_TYPE ;
+		typedef typename Rcpp::VectorBase<REALSXP,false,RHS_T> RHS_TYPE ;
+
+		typedef typename Rcpp::traits::Extractor<REALSXP, LHS_NA, LHS_T>::type LHS_EXT ;
+		typedef typename Rcpp::traits::Extractor<REALSXP, false, RHS_T>::type RHS_EXT ;
+
+		Plus_Vector_Vector( const LHS_TYPE& lhs_, const RHS_TYPE& rhs_ ) :
+			lhs(lhs_.get_ref()), rhs(rhs_.get_ref()){}
+
+		inline double operator[]( R_xlen_t i ) const {
+			return lhs[i] + rhs[i] ;
+		}
+
+		inline R_xlen_t size() const { return lhs.size() ; }
+
+	private:
+		const LHS_EXT& lhs ;
+		const RHS_EXT& rhs ;
+	} ;
+
+
+
+
+	// specialization for RHS_NA = false  and LHS_NA = false
+	template <int RTYPE, typename LHS_T, typename RHS_T >
+	class Plus_Vector_Vector<RTYPE,false,LHS_T,false,RHS_T> : public Rcpp::VectorBase<RTYPE, false , Plus_Vector_Vector<RTYPE,false,LHS_T,false,RHS_T> > {
+	public:
+		typedef typename traits::storage_type<RTYPE>::type STORAGE ;
+		typedef typename Rcpp::VectorBase<RTYPE,false,LHS_T> LHS_TYPE ;
+		typedef typename Rcpp::VectorBase<RTYPE,false,RHS_T> RHS_TYPE ;
+
+		typedef typename Rcpp::traits::Extractor< RTYPE, false, LHS_T>::type LHS_EXT ;
+		typedef typename Rcpp::traits::Extractor< RTYPE, false, RHS_T>::type RHS_EXT ;
+
+		Plus_Vector_Vector( const LHS_TYPE& lhs_, const RHS_TYPE& rhs_ ) :
+			lhs(lhs_.get_ref()), rhs(rhs_.get_ref()){}
+
+		inline STORAGE operator[]( R_xlen_t i ) const {
+			return lhs[i] + rhs[i]  ;
+		}
+
+		inline R_xlen_t size() const { return lhs.size() ; }
+
+	private:
+		const LHS_EXT& lhs ;
+		const RHS_EXT& rhs ;
+	} ;
+	// specialization for RHS_NA = false  and LHS_NA = false, RTYPE = REALSXP
+	template <typename LHS_T, typename RHS_T >
+	class Plus_Vector_Vector<REALSXP,false,LHS_T,false,RHS_T> :
+	    public Rcpp::VectorBase<REALSXP, false , Plus_Vector_Vector<REALSXP,false,LHS_T,false,RHS_T> > {
+	public:
+		typedef typename Rcpp::VectorBase<REALSXP,false,LHS_T> LHS_TYPE ;
+		typedef typename Rcpp::VectorBase<REALSXP,false,RHS_T> RHS_TYPE ;
+
+		typedef typename Rcpp::traits::Extractor<REALSXP, false, LHS_T>::type LHS_EXT ;
+		typedef typename Rcpp::traits::Extractor<REALSXP, false, RHS_T>::type RHS_EXT ;
+
+		Plus_Vector_Vector( const LHS_TYPE& lhs_, const RHS_TYPE& rhs_ ) :
+			lhs(lhs_.get_ref()), rhs(rhs_.get_ref()){}
+
+		inline double operator[]( R_xlen_t i ) const {
+			return lhs[i] + rhs[i]  ;
+		}
+
+		inline R_xlen_t size() const { return lhs.size() ; }
+
+	private:
+		const LHS_EXT& lhs ;
+		const RHS_EXT& rhs ;
+	} ;
+
+
+
+
+
+
+
+	template <int RTYPE, bool NA, typename T>
+	class Plus_Vector_Primitive :
+	    public Rcpp::VectorBase<RTYPE,true, Plus_Vector_Primitive<RTYPE,NA,T> > {
+	public:
+		typedef typename Rcpp::VectorBase<RTYPE,NA,T> VEC_TYPE ;
+		typedef typename traits::storage_type<RTYPE>::type STORAGE ;
+
+		typedef typename Rcpp::traits::Extractor< RTYPE, NA, T>::type EXT ;
+
+		Plus_Vector_Primitive( const VEC_TYPE& lhs_, STORAGE rhs_ ) :
+			lhs(lhs_.get_ref()), rhs(rhs_), rhs_na( Rcpp::traits::is_na<RTYPE>(rhs_) )
+			{}
+
+		inline STORAGE operator[]( R_xlen_t i ) const {
+			if( rhs_na ) return rhs ;
+			STORAGE x = lhs[i] ;
+			return Rcpp::traits::is_na<RTYPE>(x) ? x : (x + rhs) ;
+		}
+
+		inline R_xlen_t size() const { return lhs.size() ; }
+
+	private:
+		const EXT& lhs ;
+		STORAGE rhs ;
+		bool rhs_na ;
+
+	} ;
+	// RTYPE = REALSXP
+	template <bool NA, typename T>
+	class Plus_Vector_Primitive<REALSXP,NA,T> :
+	    public Rcpp::VectorBase<REALSXP,true, Plus_Vector_Primitive<REALSXP,NA,T> > {
+	public:
+		typedef typename Rcpp::VectorBase<REALSXP,NA,T> VEC_TYPE ;
+		typedef typename Rcpp::traits::Extractor< REALSXP, NA, T>::type EXT ;
+
+		Plus_Vector_Primitive( const VEC_TYPE& lhs_, double rhs_ ) :
+			lhs(lhs_.get_ref()), rhs(rhs_)
+			{}
+
+		inline double operator[]( R_xlen_t i ) const {
+			return rhs + lhs[i] ;
+		}
+
+		inline R_xlen_t size() const { return lhs.size() ; }
+
+	private:
+		const EXT& lhs ;
+		double rhs ;
+	} ;
+
+
+
+	template <int RTYPE, typename T>
+	class Plus_Vector_Primitive<RTYPE,false,T> : public Rcpp::VectorBase<RTYPE,false, Plus_Vector_Primitive<RTYPE,false,T> > {
+	public:
+		typedef typename Rcpp::VectorBase<RTYPE,false,T> VEC_TYPE ;
+		typedef typename traits::storage_type<RTYPE>::type STORAGE ;
+
+		typedef typename Rcpp::traits::Extractor< RTYPE, false, T>::type EXT ;
+
+		Plus_Vector_Primitive( const VEC_TYPE& lhs_, STORAGE rhs_ ) :
+			lhs(lhs_.get_ref()), rhs(rhs_), rhs_na( Rcpp::traits::is_na<RTYPE>(rhs_) ) {}
+
+		inline STORAGE operator[]( R_xlen_t i ) const {
+			return rhs_na ? rhs : (rhs + lhs[i] ) ;
+		}
+
+		inline R_xlen_t size() const { return lhs.size() ; }
+
+	private:
+		const EXT& lhs ;
+		STORAGE rhs ;
+		bool rhs_na ;
+	} ;
+	// RTYPE = REALSXP
+	template <typename T>
+	class Plus_Vector_Primitive<REALSXP,false,T> :
+	    public Rcpp::VectorBase<REALSXP,false, Plus_Vector_Primitive<REALSXP,false,T> > {
+	public:
+		typedef typename Rcpp::VectorBase<REALSXP,false,T> VEC_TYPE ;
+
+		typedef typename Rcpp::traits::Extractor< REALSXP, false, T>::type EXT ;
+
+		Plus_Vector_Primitive( const VEC_TYPE& lhs_, double rhs_ ) :
+			lhs(lhs_.get_ref()), rhs(rhs_) {}
+
+		inline double operator[]( R_xlen_t i ) const {
+			return rhs + lhs[i] ;
+		}
+
+		inline R_xlen_t size() const { return lhs.size() ; }
+
+	private:
+		const EXT& lhs ;
+		double rhs ;
+	} ;
+
+
+
+
+
+
+	// Vector * nona(primitive)
+	template <int RTYPE, bool NA, typename T>
+	class Plus_Vector_Primitive_nona : public Rcpp::VectorBase<RTYPE,true, Plus_Vector_Primitive_nona<RTYPE,NA,T> > {
+	public:
+		typedef typename Rcpp::VectorBase<RTYPE,NA,T> VEC_TYPE ;
+		typedef typename traits::storage_type<RTYPE>::type STORAGE ;
+		typedef typename Rcpp::traits::Extractor< RTYPE, NA, T>::type EXT ;
+
+		Plus_Vector_Primitive_nona( const VEC_TYPE& lhs_, STORAGE rhs_ ) :
+			lhs(lhs_.get_ref()), rhs(rhs_)
+			{}
+
+		inline STORAGE operator[]( R_xlen_t i ) const {
+			STORAGE x = lhs[i] ;
+			return Rcpp::traits::is_na<RTYPE>(x) ? x : (x + rhs) ;
+		}
+
+		inline R_xlen_t size() const { return lhs.size() ; }
+
+	private:
+		const EXT& lhs ;
+		STORAGE rhs ;
+
+	} ;
+	template <bool NA, typename T>
+	class Plus_Vector_Primitive_nona<REALSXP,NA,T> :
+	    public Rcpp::VectorBase<REALSXP,true, Plus_Vector_Primitive_nona<REALSXP,NA,T> > {
+	public:
+		typedef typename Rcpp::VectorBase<REALSXP,NA,T> VEC_TYPE ;
+		typedef typename Rcpp::traits::Extractor<REALSXP, NA, T>::type EXT ;
+
+		Plus_Vector_Primitive_nona( const VEC_TYPE& lhs_, double rhs_ ) :
+			lhs(lhs_.get_ref()), rhs(rhs_)
+			{}
+
+		inline double operator[]( R_xlen_t i ) const {
+			return rhs + lhs[i] ;
+		}
+
+		inline R_xlen_t size() const { return lhs.size() ; }
+
+	private:
+		const EXT& lhs ;
+		double rhs ;
+
+	} ;
+
+
+
+	template <int RTYPE, typename T>
+	class Plus_Vector_Primitive_nona<RTYPE,false,T> : public Rcpp::VectorBase<RTYPE,false, Plus_Vector_Primitive_nona<RTYPE,false,T> > {
+	public:
+		typedef typename Rcpp::VectorBase<RTYPE,false,T> VEC_TYPE ;
+		typedef typename traits::storage_type<RTYPE>::type STORAGE ;
+
+		typedef typename Rcpp::traits::Extractor< RTYPE, false, T>::type EXT ;
+
+		Plus_Vector_Primitive_nona( const VEC_TYPE& lhs_, STORAGE rhs_ ) :
+			lhs(lhs_.get_ref()), rhs(rhs_) {}
+
+		inline STORAGE operator[]( R_xlen_t i ) const {
+			return rhs + lhs[i] ;
+		}
+
+		inline R_xlen_t size() const { return lhs.size() ; }
+
+	private:
+		const EXT& lhs ;
+		STORAGE rhs ;
+
+	} ;
+	// RTYPE = REALSXP
+	template <typename T>
+	class Plus_Vector_Primitive_nona<REALSXP,false,T> :
+	    public Rcpp::VectorBase<REALSXP,false, Plus_Vector_Primitive_nona<REALSXP,false,T> > {
+	public:
+		typedef typename Rcpp::VectorBase<REALSXP,false,T> VEC_TYPE ;
+		typedef typename Rcpp::traits::Extractor< REALSXP, false, T>::type EXT ;
+
+		Plus_Vector_Primitive_nona( const VEC_TYPE& lhs_, double rhs_ ) :
+			lhs(lhs_.get_ref()), rhs(rhs_) {}
+
+		inline double operator[]( R_xlen_t i ) const {
+			return rhs + lhs[i] ;
+		}
+
+		inline R_xlen_t size() const { return lhs.size() ; }
+
+	private:
+		const EXT& lhs ;
+		double rhs ;
+
+	} ;
+
+}
+
+
+template <int RTYPE,bool NA, typename T, typename U>
+inline typename traits::enable_if<traits::is_convertible<typename traits::remove_const_and_reference<U>::type, typename traits::storage_type<RTYPE>::type>::value, typename sugar::Plus_Vector_Primitive<RTYPE,NA,T> >::type
+operator+(
+	const VectorBase<RTYPE,NA,T>& lhs,
+	const U &rhs
+) {
+	return sugar::Plus_Vector_Primitive<RTYPE,NA,T>( lhs, rhs ) ;
+}
+
+
+template <int RTYPE,bool NA, typename T, typename U>
+inline typename traits::enable_if<traits::is_convertible<typename traits::remove_const_and_reference<U>::type, typename traits::storage_type<RTYPE>::type>::value, typename sugar::Plus_Vector_Primitive< RTYPE , NA , T> >::type
+operator+(
+	const U &rhs,
+	const VectorBase<RTYPE,NA,T>& lhs
+) {
+	return sugar::Plus_Vector_Primitive<RTYPE,NA, T >( lhs, rhs ) ;
+}
+
+
+
+template <int RTYPE,bool NA, typename T, typename U>
+inline typename traits::enable_if<traits::is_convertible<typename traits::remove_const_and_reference<U>::type, typename traits::storage_type<RTYPE>::type>::value, sugar::Plus_Vector_Primitive_nona<RTYPE,NA,T> >::type
+operator+(
+	const VectorBase<RTYPE,NA,T>& lhs,
+	const typename sugar::NonaPrimitive< U > &rhs
+) {
+	return sugar::Plus_Vector_Primitive_nona<RTYPE,NA,T>( lhs, rhs ) ;
+}
+
+template <int RTYPE,bool NA, typename T, typename U>
+inline typename traits::enable_if<traits::is_convertible<typename traits::remove_const_and_reference<U>::type, typename traits::storage_type<RTYPE>::type>::value, sugar::Plus_Vector_Primitive_nona< RTYPE , NA , T> >::type
+operator+(
+	const typename sugar::NonaPrimitive< U > &rhs,
+	const VectorBase<RTYPE,NA,T>& lhs
+) {
+	return sugar::Plus_Vector_Primitive_nona<RTYPE,NA, T >( lhs, rhs ) ;
+}
+
+
+template <int RTYPE,bool LHS_NA, typename LHS_T, bool RHS_NA, typename RHS_T>
+inline sugar::Plus_Vector_Vector<
+	RTYPE ,
+	LHS_NA, LHS_T,
+	RHS_NA, RHS_T
+	>
+operator+(
+	const VectorBase<RTYPE,LHS_NA,LHS_T>& lhs,
+	const VectorBase<RTYPE,RHS_NA,RHS_T>& rhs
+) {
+	return sugar::Plus_Vector_Vector<
+		RTYPE,
+		LHS_NA, LHS_T,
+		RHS_NA, RHS_T
+		>( lhs, rhs ) ;
+}
+
+}
+
+#endif
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/operators/r_binary_op.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/operators/r_binary_op.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/operators/r_binary_op.h	(revision 3762)
@@ -0,0 +1,50 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; tab-width: 8 -*-
+//
+// LessThan.h: Rcpp R/C++ interface class library -- vector operators
+//
+// Copyright (C) 2010 - 2011 Dirk Eddelbuettel and Romain Francois
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+#ifndef Rcpp__sugar__r_binary_op_h
+#define Rcpp__sugar__r_binary_op_h
+
+namespace Rcpp{
+namespace sugar{
+
+#undef RCPP_OP
+#define RCPP_OP(NAME,OP)   	                                     \
+template <int RTYPE>                                                \
+class NAME {                                                        \
+public:                                                             \
+	typedef typename traits::storage_type<RTYPE>::type STORAGE ;    \
+	inline int operator()( STORAGE lhs, STORAGE rhs) const {       \
+		return lhs OP rhs ;                                         \
+	}                                                               \
+} ;
+RCPP_OP(less,<)
+RCPP_OP(greater,>)
+RCPP_OP(less_or_equal,<=)
+RCPP_OP(greater_or_equal,>=)
+RCPP_OP(equal,==)
+RCPP_OP(not_equal,!=)
+#undef RCPP_OP
+
+
+} // sugar
+} // Rcpp
+
+#endif
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/tools/iterator.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/tools/iterator.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/tools/iterator.h	(revision 3762)
@@ -0,0 +1,155 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; tab-width: 8 -*-
+//
+// iterator.h: Rcpp R/C++ interface class library --
+//
+// Copyright (C) 2012 - 2013    Dirk Eddelbuettel and Romain Francois
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+#ifndef Rcpp__sugar__tools_iterator_h
+#define Rcpp__sugar__tools_iterator_h
+
+namespace Rcpp {
+namespace sugar {
+
+    /* generic sugar iterator type */
+    template <typename T>
+    class SugarIterator {
+    public:
+
+        typedef R_xlen_t difference_type ;
+        typedef typename Rcpp::traits::storage_type< Rcpp::traits::r_sexptype_traits<T>::rtype >::type STORAGE_TYPE ;
+        typedef STORAGE_TYPE reference ;
+        typedef STORAGE_TYPE* pointer ;
+        typedef std::random_access_iterator_tag iterator_category ;
+        typedef SugarIterator iterator ;
+
+        SugarIterator( const T& ref_ ) :ref(ref_), index(0) {}
+        SugarIterator( const T& ref_, R_xlen_t index_) : ref(ref_), index(index_) {}
+        SugarIterator( const SugarIterator& other) : ref(other.ref), index(other.index){}
+
+        inline iterator& operator++(){ index++; return *this ; }
+        inline iterator operator++(int){
+            iterator orig(*this) ;
+            ++(*this);
+            return orig ;
+        }
+        inline iterator& operator--(){ index--; return *this ; }
+        inline iterator operator--(int){
+            iterator orig(*this) ;
+            --(*this);
+            return orig ;
+        }
+        inline iterator operator+(difference_type n) const {
+			return iterator( ref, index+n ) ;
+		}
+		inline iterator operator-(difference_type n) const {
+			return iterator( ref, index-n ) ;
+		}
+		inline iterator& operator+=(difference_type n) {
+			index += n ;
+			return *this ;
+		}
+		inline iterator& operator-=(difference_type n) {
+			index -= n;
+			return *this ;
+		}
+        inline reference operator[](R_xlen_t i){
+		    return ref[index+i] ;
+		}
+
+		inline reference operator*() {
+			return ref[index] ;
+		}
+		inline pointer operator->(){
+			return &ref[index] ;
+		}
+
+		inline bool operator==( const iterator& y) const {
+			return ( index == y.index ) ;
+		}
+		inline bool operator!=( const iterator& y) const {
+			return ( index != y.index ) ;
+		}
+		inline bool operator<( const iterator& other ) const {
+			return index < other.index ;
+		}
+		inline bool operator>( const iterator& other ) const {
+			return index > other.index ;
+		}
+		inline bool operator<=( const iterator& other ) const {
+			return index <= other.index ;
+		}
+		inline bool operator>=( const iterator& other ) const {
+			return index >= other.index ;
+		}
+
+		inline difference_type operator-(const iterator& other) const {
+			return index - other.index ;
+		}
+
+
+    private:
+        const T& ref ;
+        R_xlen_t index ;
+    } ;
+
+    template <typename T> struct sugar_const_iterator_type {
+        typedef SugarIterator<T> type ;
+    } ;
+    template <int RTYPE> struct sugar_const_iterator_type< Rcpp::Vector<RTYPE> >{
+        typedef typename Rcpp::Vector<RTYPE>::const_iterator type ;
+    } ;
+    template <> struct sugar_const_iterator_type< CharacterVector >{
+        typedef SEXP* type ;
+    } ;
+
+
+    template <typename T> struct is_sugar_vector : public Rcpp::traits::false_type{} ;
+    template <int RTYPE> struct is_sugar_vector< Rcpp::Vector<RTYPE> > : public Rcpp::traits::true_type{} ;
+
+
+    template <typename T>
+    inline typename sugar_const_iterator_type<T>::type get_const_begin__impl(const T& obj, Rcpp::traits::true_type ){
+        return obj.begin() ;
+    }
+    template <typename T>
+    inline typename sugar_const_iterator_type<T>::type get_const_begin__impl(const T& obj, Rcpp::traits::false_type ){
+        typedef typename sugar_const_iterator_type<T>::type const_iterator ;
+        return const_iterator( obj ) ;
+    }
+
+
+
+    template <typename T>
+    inline typename sugar_const_iterator_type<T>::type get_const_begin(const T& obj){
+        return get_const_begin__impl( obj, typename is_sugar_vector<T>::type() ) ;
+    }
+    /* full specialization for character vectors */
+    template <>
+    inline SEXP* get_const_begin(const CharacterVector& obj){
+        return get_string_ptr(obj) ;
+    }
+
+    template <typename T>
+    inline typename sugar_const_iterator_type<T>::type get_const_end(const T& obj){
+        return get_const_begin<T>(obj) + obj.size() ;
+    }
+
+
+}
+}
+#endif
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/matrix/upper_tri.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/matrix/upper_tri.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/matrix/upper_tri.h	(revision 3762)
@@ -0,0 +1,69 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; indent-tabs-mode: nil; -*-
+//
+// upper_tri.h: Rcpp R/C++ interface class library -- upper.tri
+//
+// Copyright (C) 2010 - 2017 Dirk Eddelbuettel and Romain Francois
+// Copyright (C) 2017        Dirk Eddelbuettel, Romain Francois, and Nathan Russell
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+#ifndef Rcpp__sugar__upper_tri_h
+#define Rcpp__sugar__upper_tri_h
+
+namespace Rcpp {
+namespace sugar {
+
+template <int RTYPE, bool NA, typename T>
+class UpperTri : public MatrixBase<LGLSXP, false, UpperTri<RTYPE, NA, T> > {
+public:
+    typedef Rcpp::MatrixBase<RTYPE, NA, T> MatBase;
+
+    UpperTri(const T& lhs, bool diag)
+        : nr(lhs.nrow()),
+          nc(lhs.ncol()),
+          getter(diag ? (&UpperTri::get_diag_true) : (&UpperTri::get_diag_false))
+    {}
+
+    inline int operator()(int i, int j) const { return get(i, j); }
+
+    inline R_xlen_t size() const { return static_cast<R_xlen_t>(nr) * nc; }
+    inline int nrow() const { return nr; }
+    inline int ncol() const { return nc; }
+
+private:
+    typedef bool (UpperTri::*Method)(int, int) const;
+
+    int nr, nc;
+    Method getter;
+
+    inline bool get_diag_true(int i, int j) const { return i <= j; }
+
+    inline bool get_diag_false(int i, int j) const { return i < j; }
+
+    inline bool get(int i, int j) const { return (this->*getter)(i, j); }
+};
+
+} // sugar
+
+template <int RTYPE, bool NA, typename T>
+inline sugar::UpperTri<RTYPE, NA, T>
+upper_tri(const Rcpp::MatrixBase<RTYPE, NA, T>& lhs, bool diag = false) {
+    return sugar::UpperTri<RTYPE, NA, T>(lhs, diag);
+}
+
+} // Rcpp
+
+#endif // Rcpp__sugar__upper_tri_h
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/matrix/matrix_functions.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/matrix/matrix_functions.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/matrix/matrix_functions.h	(revision 3762)
@@ -0,0 +1,33 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; tab-width: 8 -*-
+//
+// matrix_functions.h: Rcpp R/C++ interface class library -- matrix sugar functions
+//
+// Copyright (C) 2010 - 2011 Dirk Eddelbuettel and Romain Francois
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+#ifndef RCPP_SUGAR_MATRIX_FUNCTIONS_H
+#define RCPP_SUGAR_MATRIX_FUNCTIONS_H
+
+#include <Rcpp/sugar/matrix/outer.h>
+#include <Rcpp/sugar/matrix/row.h>
+#include <Rcpp/sugar/matrix/col.h>
+#include <Rcpp/sugar/matrix/lower_tri.h>
+#include <Rcpp/sugar/matrix/upper_tri.h>
+#include <Rcpp/sugar/matrix/diag.h>
+#include <Rcpp/sugar/matrix/as_vector.h>
+
+#endif
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/matrix/col.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/matrix/col.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/matrix/col.h	(revision 3762)
@@ -0,0 +1,61 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; tab-width: 8 -*-
+//
+// col.h: Rcpp R/C++ interface class library -- col
+//
+// Copyright (C) 2010 - 2011 Dirk Eddelbuettel and Romain Francois
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+#ifndef Rcpp__sugar__col_h
+#define Rcpp__sugar__col_h
+
+namespace Rcpp{
+namespace sugar{
+
+template <int RTYPE, bool LHS_NA, typename LHS_T>
+class Col : public MatrixBase<
+	INTSXP ,
+	false ,
+	Col<RTYPE,LHS_NA,LHS_T>
+> {
+public:
+	typedef Rcpp::MatrixBase<RTYPE,LHS_NA,LHS_T> LHS_TYPE ;
+
+	Col( const LHS_TYPE& lhs) : nr( lhs.ncol() ), nc( lhs.ncol() ) {}
+
+	inline int operator()( int i, int j ) const {
+		return j + 1 ;
+	}
+
+	inline R_xlen_t size() const { return static_cast<R_xlen_t>(nr) * nc ; }
+	inline int nrow() const { return nr; }
+	inline int ncol() const { return nc; }
+
+private:
+	int nr, nc ;
+} ;
+
+} // sugar
+
+template <int RTYPE, bool LHS_NA, typename LHS_T>
+inline sugar::Col<RTYPE,LHS_NA,LHS_T>
+col( const Rcpp::MatrixBase<RTYPE,LHS_NA,LHS_T>& lhs){
+	return sugar::Col<RTYPE,LHS_NA,LHS_T>( lhs ) ;
+}
+
+} // Rcpp
+
+#endif
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/matrix/outer.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/matrix/outer.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/matrix/outer.h	(revision 3762)
@@ -0,0 +1,90 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; indent-tabs-mode: nil; -*-
+//
+// outer.h: Rcpp R/C++ interface class library -- outer
+//
+// Copyright (C) 2010 - 2011 Dirk Eddelbuettel and Romain Francois
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+#ifndef Rcpp__sugar__outer_h
+#define Rcpp__sugar__outer_h
+
+namespace Rcpp{
+namespace sugar{
+
+template <int RTYPE,
+          bool LHS_NA, typename LHS_T,
+          bool RHS_NA, typename RHS_T,
+          typename Function >
+class Outer : public MatrixBase<
+    Rcpp::traits::r_sexptype_traits<
+        typename ::Rcpp::traits::result_of<Function>::type
+	>::rtype ,
+            true ,
+    Outer<RTYPE,LHS_NA,LHS_T,RHS_NA,RHS_T,Function>
+> {
+public:
+    typedef typename ::Rcpp::traits::result_of<Function>::type result_type ;
+    const static int RESULT_R_TYPE =
+        Rcpp::traits::r_sexptype_traits<result_type>::rtype ;
+
+    typedef Rcpp::VectorBase<RTYPE,LHS_NA,LHS_T> LHS_TYPE ;
+    typedef Rcpp::VectorBase<RTYPE,RHS_NA,RHS_T> RHS_TYPE ;
+
+    typedef Rcpp::internal::LazyVector<LHS_TYPE> LHS_LAZY ;
+    typedef Rcpp::internal::LazyVector<RHS_TYPE> RHS_LAZY ;
+
+    typedef typename Rcpp::traits::r_vector_element_converter<RESULT_R_TYPE>::type converter_type ;
+    typedef typename Rcpp::traits::storage_type<RESULT_R_TYPE>::type STORAGE ;
+
+    Outer( const LHS_TYPE& lhs_, const RHS_TYPE& rhs_, Function fun_ ) :
+        lhs(lhs_), rhs(rhs_), fun(fun_), nr(lhs_.size()), nc(rhs_.size()) {}
+
+    inline STORAGE operator()( int i, int j ) const {
+        return converter_type::get( fun( lhs[i], rhs[j] ) );
+    }
+
+    inline R_xlen_t size() const { return static_cast<R_xlen_t>(nr) * nc ; }
+    inline int nrow() const { return nr; }
+    inline int ncol() const { return nc; }
+
+private:
+
+    LHS_LAZY lhs ;
+    RHS_LAZY rhs ;
+
+    Function fun ;
+    int nr, nc ;
+} ;
+
+} // sugar
+
+template <int RTYPE,
+          bool LHS_NA, typename LHS_T,
+          bool RHS_NA, typename RHS_T,
+          typename Function >
+inline sugar::Outer<RTYPE,LHS_NA,LHS_T,RHS_NA,RHS_T,Function>
+outer(
+      const Rcpp::VectorBase<RTYPE,LHS_NA,LHS_T>& lhs,
+      const Rcpp::VectorBase<RTYPE,RHS_NA,RHS_T>& rhs,
+      Function fun ){
+
+    return sugar::Outer<RTYPE,LHS_NA,LHS_T,RHS_NA,RHS_T,Function>( lhs, rhs, fun ) ;
+}
+
+} // Rcpp
+
+#endif
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/matrix/tools.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/matrix/tools.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/matrix/tools.h	(revision 3762)
@@ -0,0 +1,44 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; tab-width: 8 -*-
+//
+// matrix_functions.h: Rcpp R/C++ interface class library -- matrix sugar functions
+//
+// Copyright (C) 2010 - 2011 Dirk Eddelbuettel and Romain Francois
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+#ifndef RCPP_SUGAR_MATRIX_TOOLS_H
+#define RCPP_SUGAR_MATRIX_TOOLS_H
+
+namespace Rcpp{
+namespace internal{
+
+	inline int get_line( int index, int nr ){
+		return index % nr ;
+	}
+
+	inline int get_column( int index, int nr ){
+		int i = get_line( index, nr );
+		return (index-i) / nr ;
+	}
+
+	inline int get_column( int index, int nr, int i ){
+		return (index-i) / nr ;
+	}
+
+}
+}
+
+#endif
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/matrix/diag.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/matrix/diag.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/matrix/diag.h	(revision 3762)
@@ -0,0 +1,90 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; tab-width: 8 -*-
+//
+// diag.h: Rcpp R/C++ interface class library -- diag
+//
+// Copyright (C) 2010 - 2011 Dirk Eddelbuettel and Romain Francois
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+#ifndef Rcpp__sugar__diag_h
+#define Rcpp__sugar__diag_h
+
+namespace Rcpp{
+namespace sugar{
+
+template <int RTYPE, bool NA, typename T>
+class Diag_Extractor : public Rcpp::VectorBase< RTYPE ,NA, Diag_Extractor<RTYPE,NA,T> > {
+public:
+	typedef typename Rcpp::MatrixBase<RTYPE,NA,T> MAT_TYPE ;
+	typedef typename Rcpp::traits::storage_type<RTYPE>::type STORAGE ;
+
+	Diag_Extractor( const MAT_TYPE& object_ ) : object(object_), n(0) {
+		int nr = object.nrow() ;
+		int nc = object.ncol() ;
+		n = (nc < nr ) ? nc : nr ;
+	}
+
+	inline STORAGE operator[]( int i ) const {
+		return object( i, i ) ;
+	}
+	inline R_xlen_t size() const { return n; }
+
+private:
+	const MAT_TYPE& object ;
+	R_xlen_t n ;
+} ;
+
+
+template <int RTYPE, bool NA, typename T>
+class Diag_Maker : public Rcpp::MatrixBase< RTYPE ,NA, Diag_Maker<RTYPE,NA,T> > {
+public:
+	typedef typename Rcpp::VectorBase<RTYPE,NA,T> VEC_TYPE ;
+	typedef typename Rcpp::traits::storage_type<RTYPE>::type STORAGE ;
+
+	Diag_Maker( const VEC_TYPE& object_ ) : object(object_), n(object_.size()) {}
+
+	inline STORAGE operator()( int i, int j ) const {
+		return (i==j) ? object[i] : 0 ;
+	}
+	inline R_xlen_t size() const { return static_cast<R_xlen_t>(n) * n; }
+	inline int ncol() const { return n; }
+	inline int nrow() const { return n; }
+
+private:
+	const VEC_TYPE& object ;
+	int n ;
+} ;
+
+template <typename T> struct diag_result_type_trait{
+	typedef typename Rcpp::traits::if_<
+		Rcpp::traits::matrix_interface<T>::value,
+		Diag_Extractor< T::r_type::value , T::can_have_na::value , T >,
+		Diag_Maker< T::r_type::value , T::can_have_na::value , T >
+	>::type type ;
+} ;
+
+} // sugar
+
+template <typename T>
+inline typename sugar::diag_result_type_trait<T>::type
+diag( const T& t ){
+	return typename sugar::diag_result_type_trait<T>::type( t ) ;
+}
+
+
+} // Rcpp
+#endif
+
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/matrix/as_vector.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/matrix/as_vector.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/matrix/as_vector.h	(revision 3762)
@@ -0,0 +1,61 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; tab-width: 8 -*-
+//
+// as_vector.h: Rcpp R/C++ interface class library -- as_vector( sugar matrix expression )
+//
+// Copyright (C) 2010 - 2014 Dirk Eddelbuettel and Romain Francois
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+#ifndef Rcpp__sugar__matrix_as_vector_h
+#define Rcpp__sugar__matrix_as_vector_h
+
+namespace Rcpp{
+namespace internal{
+
+template <int RTYPE, bool NA, typename T>
+inline Rcpp::Vector<RTYPE>
+as_vector__impl( MatrixBase<RTYPE,NA,T>& t, Rcpp::traits::false_type ){
+    T& ref = t.get_ref() ;
+    int nc = ref.ncol(), nr = ref.nrow() ;
+    Vector<RTYPE> out (static_cast<R_xlen_t>(nr) * nc) ;
+    R_xlen_t k =0;
+    for( int col_index=0; col_index<nc; col_index++)
+        for( int row_index=0; row_index<nr; row_index++, k++)
+            out[k] = ref( row_index, col_index ) ;
+
+    return out ;
+}
+
+template <int RTYPE, bool NA, typename T>
+inline Rcpp::Vector<RTYPE>
+as_vector__impl( MatrixBase<RTYPE,NA,T>& t, Rcpp::traits::true_type ){
+    Matrix<RTYPE>& ref = t.get_ref() ;
+    R_xlen_t size = static_cast<R_xlen_t>(ref.ncol())*ref.nrow() ;
+    typename Rcpp::Vector<RTYPE>::const_iterator first(static_cast<const Rcpp::Vector<RTYPE>&>(ref).begin())  ;
+    return Vector<RTYPE>(first, first+size );
+}
+
+} // internal
+
+template <int RTYPE, bool NA, typename T>
+inline Rcpp::Vector<RTYPE>
+as_vector( const MatrixBase<RTYPE,NA,T>& t ){
+    return internal::as_vector__impl( const_cast< MatrixBase<RTYPE,NA,T>& >(t), typename Rcpp::traits::same_type< T , Matrix<RTYPE> >() ) ;
+}
+
+} // Rcpp
+#endif
+
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/matrix/lower_tri.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/matrix/lower_tri.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/matrix/lower_tri.h	(revision 3762)
@@ -0,0 +1,69 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; indent-tabs-mode: nil; -*-
+//
+// lower_tri.h: Rcpp R/C++ interface class library -- lower.tri
+//
+// Copyright (C) 2010 - 2017 Dirk Eddelbuettel and Romain Francois
+// Copyright (C) 2017    Dirk Eddelbuettel, Romain Francois, and Nathan Russell
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+#ifndef Rcpp__sugar__lower_tri_h
+#define Rcpp__sugar__lower_tri_h
+
+namespace Rcpp {
+namespace sugar {
+
+template <int RTYPE, bool NA, typename T>
+class LowerTri : public MatrixBase<LGLSXP, false, LowerTri<RTYPE, NA, T> > {
+public:
+    typedef Rcpp::MatrixBase<RTYPE, NA, T> MatBase;
+
+    LowerTri(const T& lhs, bool diag)
+        : nr(lhs.nrow()),
+          nc(lhs.ncol()),
+          getter(diag ? (&LowerTri::get_diag_true) : (&LowerTri::get_diag_false))
+    {}
+
+    inline int operator()(int i, int j) const { return get(i, j); }
+
+    inline R_xlen_t size() const { return static_cast<R_xlen_t>(nr) * nc; }
+    inline int nrow() const { return nr; }
+    inline int ncol() const { return nc; }
+
+private:
+    typedef bool (LowerTri::*Method)(int, int) const;
+
+    int nr, nc;
+    Method getter;
+
+    inline bool get_diag_true(int i, int j) const { return i >= j; }
+
+    inline bool get_diag_false(int i, int j) const { return i > j; }
+
+    inline bool get(int i, int j) const { return (this->*getter)(i, j); }
+};
+
+} // sugar
+
+template <int RTYPE, bool NA, typename T>
+inline sugar::LowerTri<RTYPE, NA, T>
+lower_tri(const Rcpp::MatrixBase<RTYPE, NA, T>& lhs, bool diag = false) {
+    return sugar::LowerTri<RTYPE, NA, T>(lhs, diag);
+}
+
+} // Rcpp
+
+#endif // Rcpp__sugar__lower_tri_h
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/matrix/row.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/matrix/row.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/matrix/row.h	(revision 3762)
@@ -0,0 +1,61 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; tab-width: 8 -*-
+//
+// row.h: Rcpp R/C++ interface class library -- row
+//
+// Copyright (C) 2010 - 2011 Dirk Eddelbuettel and Romain Francois
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+#ifndef Rcpp__sugar__row_h
+#define Rcpp__sugar__row_h
+
+namespace Rcpp{
+namespace sugar{
+
+template <int RTYPE, bool LHS_NA, typename LHS_T>
+class Row : public MatrixBase<
+	INTSXP ,
+	false ,
+	Row<RTYPE,LHS_NA,LHS_T>
+> {
+public:
+	typedef Rcpp::MatrixBase<RTYPE,LHS_NA,LHS_T> LHS_TYPE ;
+
+	Row( const LHS_TYPE& lhs) : nr( lhs.nrow() ), nc( lhs.ncol() ) {}
+
+	inline int operator()( int i, int j ) const {
+		return i + 1 ;
+	}
+
+	inline R_xlen_t size() const { return static_cast<R_xlen_t>(nr) * nc ; }
+	inline int nrow() const { return nr; }
+	inline int ncol() const { return nc; }
+
+private:
+	int nr, nc ;
+} ;
+
+} // sugar
+
+template <int RTYPE, bool LHS_NA, typename LHS_T>
+inline sugar::Row<RTYPE,LHS_NA,LHS_T>
+row( const Rcpp::MatrixBase<RTYPE,LHS_NA,LHS_T>& lhs){
+	return sugar::Row<RTYPE,LHS_NA,LHS_T>( lhs ) ;
+}
+
+} // Rcpp
+
+#endif
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/functions/strings/strings.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/functions/strings/strings.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/functions/strings/strings.h	(revision 3762)
@@ -0,0 +1,28 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; tab-width: 8 -*-
+//
+// strings.h: Rcpp R/C++ interface class library -- string sugar functions
+//
+// Copyright (C) 2012 Dirk Eddelbuettel and Romain Francois
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+#ifndef RCPP_SUGAR_FUNCTIONS_STRINGS_H
+#define RCPP_SUGAR_FUNCTIONS_STRINGS_H
+
+#include <Rcpp/sugar/functions/strings/collapse.h>
+#include <Rcpp/sugar/functions/strings/trimws.h>
+
+#endif
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/functions/strings/collapse.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/functions/strings/collapse.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/functions/strings/collapse.h	(revision 3762)
@@ -0,0 +1,46 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; tab-width: 8 -*-
+//
+// collapse.h: Rcpp R/C++ interface class library -- string sugar functions
+//
+// Copyright (C) 2012 Dirk Eddelbuettel and Romain Francois
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+#ifndef RCPP_SUGAR_FUNCTIONS_COLLAPSE_H
+#define RCPP_SUGAR_FUNCTIONS_COLLAPSE_H
+
+namespace Rcpp{
+    namespace sugar {
+        template <typename Iterator>
+        inline String collapse__impl( Iterator it, R_xlen_t n ){
+            static String buffer ;
+            buffer = "" ;
+            for( R_xlen_t i=0; i<n; i++ ){
+                buffer += it[i] ;
+            }
+            return buffer ;
+        }
+
+    } // sugar
+
+
+    template <bool NA, typename T>
+    inline String collapse( const VectorBase<STRSXP,NA,T>& vec ){
+        return sugar::collapse__impl( vec.get_ref().begin(), vec.size() ) ;
+    }
+
+}
+#endif
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/functions/strings/trimws.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/functions/strings/trimws.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/functions/strings/trimws.h	(revision 3762)
@@ -0,0 +1,220 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; indent-tabs-mode: nil; -*-
+//
+// trimws.h: Rcpp R/C++ interface class library -- trimws
+//
+// Copyright (C) 2017 Nathan Russell
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+#ifndef Rcpp__sugar__trimws_h
+#define Rcpp__sugar__trimws_h
+
+#include <string>
+#include <cstring>
+
+namespace Rcpp {
+namespace sugar {
+namespace detail {
+
+
+/*  NB: std::isspace is not used because it also counts
+    '\f' and '\v' as whitespace, whereas base::trimws only
+    checks for ' ', '\t', '\r', and '\n'  */
+inline bool isws(const char c) {
+    return c == ' ' || c == '\t' || c == '\n' || c == '\r';
+}
+
+inline const char* trim_left(const char* str) {
+    if (!str) {
+        return "";
+    }
+
+    while (isws(*str)) {
+        ++str;
+    }
+
+    return str;
+}
+
+inline const char* trim_right(const char* str, R_len_t sz, std::string* buff) {
+    if (!str) {
+        return "";
+    }
+
+    buff->clear();
+    const char* ptr = str + sz - 1;
+
+    for (; ptr > str && isws(*ptr); --sz, --ptr);
+
+    buff->append(str, sz - isws(*ptr));
+    return buff->c_str();
+}
+
+inline const char* trim_both(const char* str, R_len_t sz, std::string* buff) {
+    if (!str) {
+        return "";
+    }
+
+    buff->clear();
+
+    while (isws(*str)) {
+        ++str; --sz;
+    }
+
+    const char* ptr = str + sz - 1;
+
+    for (; ptr > str && isws(*ptr); --sz, --ptr);
+
+    buff->append(str, sz);
+    return buff->c_str();
+}
+
+
+} // detail
+} // sugar
+
+
+inline Vector<STRSXP> trimws(const Vector<STRSXP>& x, const char* which = "both") {
+    R_xlen_t i = 0, sz = x.size();
+    Vector<STRSXP> res = no_init(sz);
+    std::string buffer;
+
+    if (*which == 'b') {
+        for (; i < sz; i++) {
+            if (traits::is_na<STRSXP>(x[i])) {
+                res[i] = x[i];
+            } else {
+                res[i] = sugar::detail::trim_both(
+                    x[i],
+                    LENGTH(x[i]),
+                    &buffer
+                );
+            }
+        }
+    } else if (*which == 'l') {
+        for (; i < sz; i++) {
+            if (traits::is_na<STRSXP>(x[i])) {
+                res[i] = x[i];
+            } else {
+                res[i] = sugar::detail::trim_left(x[i]);
+            }
+        }
+    } else if (*which == 'r') {
+        for (; i < sz; i++) {
+            if (traits::is_na<STRSXP>(x[i])) {
+                res[i] = x[i];
+            } else {
+                res[i] = sugar::detail::trim_right(
+                    x[i],
+                    LENGTH(x[i]),
+                    &buffer
+                );
+            }
+        }
+    } else {
+        stop("Invalid `which` argument '%s'!", which);
+        return Vector<STRSXP>::create("Unreachable");
+    }
+
+    return res;
+}
+
+inline Matrix<STRSXP> trimws(const Matrix<STRSXP>& x, const char* which = "both") {
+    R_xlen_t i = 0, sz = x.size();
+    int nr = x.nrow(), nc = x.ncol();
+    Matrix<STRSXP> res = no_init(nr, nc);
+    std::string buffer;
+
+    if (*which == 'b') {
+        for (; i < sz; i++) {
+            if (traits::is_na<STRSXP>(x[i])) {
+                res[i] = x[i];
+            } else {
+                res[i] = sugar::detail::trim_both(
+                    x[i],
+                    LENGTH(x[i]),
+                    &buffer
+                );
+            }
+        }
+    } else if (*which == 'l') {
+        for (; i < sz; i++) {
+            if (traits::is_na<STRSXP>(x[i])) {
+                res[i] = x[i];
+            } else {
+                res[i] = sugar::detail::trim_left(x[i]);
+            }
+        }
+    } else if (*which == 'r') {
+        for (; i < sz; i++) {
+            if (traits::is_na<STRSXP>(x[i])) {
+                res[i] = x[i];
+            } else {
+                res[i] = sugar::detail::trim_right(
+                    x[i],
+                    LENGTH(x[i]),
+                    &buffer
+                );
+            }
+        }
+    } else {
+        stop("Invalid `which` argument '%s'!", which);
+        return Matrix<STRSXP>();
+    }
+
+    return res;
+}
+
+inline String trimws(const String& str, const char* which = "both") {
+    std::string buffer;
+
+    if (*which == 'b') {
+        if (traits::is_na<STRSXP>(str.get_sexp())) {
+            return String(str.get_sexp());
+        }
+        return sugar::detail::trim_both(
+            str.get_cstring(),
+            LENGTH(str.get_sexp()),
+            &buffer
+        );
+    }
+
+    if (*which == 'l') {
+        if (traits::is_na<STRSXP>(str.get_sexp())) {
+            return String(str.get_sexp());
+        }
+        return sugar::detail::trim_left(str.get_cstring());
+    }
+
+    if (*which == 'r') {
+        if (traits::is_na<STRSXP>(str.get_sexp())) {
+            return String(str.get_sexp());
+        }
+        return sugar::detail::trim_right(
+            str.get_cstring(),
+            LENGTH(str.get_sexp()),
+            &buffer
+        );
+    }
+
+    stop("Invalid `which` argument '%s'!", which);
+    return String("Unreachable");
+}
+
+
+} // Rcpp
+
+#endif // Rcpp__sugar__trimws_h
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/functions/mapply/mapply_3.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/functions/mapply/mapply_3.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/functions/mapply/mapply_3.h	(revision 3762)
@@ -0,0 +1,87 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; tab-width: 8 -*-
+//
+// mapply_3.h: Rcpp R/C++ interface class library -- mapply_3
+//
+// Copyright (C) 2012 Dirk Eddelbuettel and Romain Francois
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+#ifndef Rcpp__sugar__mapply_3_h
+#define Rcpp__sugar__mapply_3_h
+
+namespace Rcpp{
+namespace sugar{
+
+template <
+    int RTYPE_1, bool NA_1, typename T_1,
+    int RTYPE_2, bool NA_2, typename T_2,
+    int RTYPE_3, bool NA_3, typename T_3,
+    typename Function
+>
+class Mapply_3 : public VectorBase<
+	Rcpp::traits::r_sexptype_traits<
+		typename ::Rcpp::traits::result_of<Function>::type
+	>::rtype ,
+	true ,
+	Mapply_3<RTYPE_1,NA_1,T_1,RTYPE_2,NA_2,T_2,RTYPE_3,NA_3,T_3,Function>
+> {
+public:
+	typedef typename ::Rcpp::traits::result_of<Function>::type result_type ;
+
+    typedef Rcpp::VectorBase<RTYPE_1,NA_1,T_1> VEC_1 ;
+	typedef Rcpp::VectorBase<RTYPE_2,NA_2,T_2> VEC_2 ;
+	typedef Rcpp::VectorBase<RTYPE_3,NA_3,T_3> VEC_3 ;
+
+	typedef typename Rcpp::traits::Extractor<RTYPE_1,NA_1,T_1>::type EXT_1 ;
+	typedef typename Rcpp::traits::Extractor<RTYPE_2,NA_2,T_2>::type EXT_2 ;
+	typedef typename Rcpp::traits::Extractor<RTYPE_3,NA_3,T_3>::type EXT_3 ;
+
+	Mapply_3( const VEC_1& vec_1_, const VEC_2& vec_2_, const VEC_3& vec_3_, Function fun_ ) :
+		vec_1(vec_1_.get_ref()), vec_2(vec_2_.get_ref()), vec_3(vec_3_.get_ref()), fun(fun_){}
+
+        inline result_type operator[]( R_xlen_t i ) const {
+		return fun( vec_1[i], vec_2[i], vec_3[i] );
+	}
+        inline R_xlen_t size() const { return vec_1.size() ; }
+
+private:
+	const EXT_1& vec_1 ;
+	const EXT_2& vec_2 ;
+	const EXT_3& vec_3 ;
+	Function fun ;
+} ;
+
+} // sugar
+
+template <
+    int RTYPE_1, bool NA_1, typename T_1,
+    int RTYPE_2, bool NA_2, typename T_2,
+    int RTYPE_3, bool NA_3, typename T_3,
+    typename Function
+    >
+inline sugar::Mapply_3<RTYPE_1,NA_1,T_1,RTYPE_2,NA_2,T_2,RTYPE_3, NA_3,T_3,Function>
+mapply(
+    const Rcpp::VectorBase<RTYPE_1,NA_1,T_1>& t1,
+    const Rcpp::VectorBase<RTYPE_2,NA_2,T_2>& t2,
+    const Rcpp::VectorBase<RTYPE_3,NA_3,T_3>& t3,
+    Function fun
+){
+	return sugar::Mapply_3<RTYPE_1,NA_1,T_1,RTYPE_2,NA_2,T_2,RTYPE_3,NA_3,T_3,Function>( t1, t2, t3, fun ) ;
+}
+
+} // Rcpp
+
+#endif
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/functions/mapply/mapply_2.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/functions/mapply/mapply_2.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/functions/mapply/mapply_2.h	(revision 3762)
@@ -0,0 +1,146 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; tab-width: 8 -*-
+//
+// mapply_2.h: Rcpp R/C++ interface class library -- mapply_2
+//
+// Copyright (C) 2012 Dirk Eddelbuettel and Romain Francois
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+#ifndef Rcpp__sugar__mapply_2_h
+#define Rcpp__sugar__mapply_2_h
+
+namespace Rcpp{
+namespace sugar{
+
+template <int RTYPE,
+    bool NA_1, typename T_1,
+    bool NA_2, typename T_2,
+    typename Function
+>
+class Mapply_2 : public VectorBase<
+	Rcpp::traits::r_sexptype_traits<
+		typename ::Rcpp::traits::result_of<Function>::type
+	>::rtype ,
+	true ,
+	Mapply_2<RTYPE,NA_1,T_1,NA_2,T_2,Function>
+> {
+public:
+	typedef typename ::Rcpp::traits::result_of<Function>::type result_type ;
+
+	Mapply_2( const T_1& vec_1_, const T_2& vec_2_, Function fun_ ) :
+		vec_1(vec_1_), vec_2(vec_2_), fun(fun_){}
+
+        inline result_type operator[]( R_xlen_t i ) const {
+		return fun( vec_1[i], vec_2[i] );
+	}
+        inline R_xlen_t size() const { return vec_1.size() ; }
+
+private:
+	const T_1& vec_1 ;
+	const T_2& vec_2 ;
+	Function fun ;
+} ;
+
+template <int RTYPE,
+    bool NA_1, typename T_1,
+    typename PRIM_2 ,
+    typename Function
+>
+class Mapply_2_Vector_Primitive : public
+    VectorBase<
+	    Rcpp::traits::r_sexptype_traits<
+	    	typename ::Rcpp::traits::result_of<Function>::type
+	    >::rtype ,
+	    true ,
+	    Mapply_2_Vector_Primitive<RTYPE,NA_1,T_1,PRIM_2,Function>
+    >
+{
+public:
+	typedef typename ::Rcpp::traits::result_of<Function>::type result_type ;
+
+	Mapply_2_Vector_Primitive( const T_1& vec_1_, PRIM_2 prim_2_, Function fun_ ) :
+		vec_1(vec_1_), prim_2(prim_2_), fun(fun_){}
+
+        inline result_type operator[]( R_xlen_t i ) const {
+		return fun( vec_1[i], prim_2 );
+	}
+        inline R_xlen_t size() const { return vec_1.size() ; }
+
+private:
+	const T_1& vec_1 ;
+	PRIM_2 prim_2 ;
+	Function fun ;
+} ;
+
+template <int RTYPE,
+    typename PRIM_1,
+    bool NA_2, typename T_2,
+    typename Function
+>
+class Mapply_2_Primitive_Vector : public
+    VectorBase<
+	    Rcpp::traits::r_sexptype_traits<
+	    	typename ::Rcpp::traits::result_of<Function>::type
+	    >::rtype ,
+	    true ,
+	    Mapply_2_Primitive_Vector<RTYPE,PRIM_1,NA_2,T_2,Function>
+    >
+{
+public:
+	typedef typename ::Rcpp::traits::result_of<Function>::type result_type ;
+
+	Mapply_2_Primitive_Vector( PRIM_1 prim_1_, const T_2& vec_2_, Function fun_ ) :
+		prim_1(prim_1_), vec_2(vec_2_), fun(fun_){}
+
+        inline result_type operator[]( R_xlen_t i ) const {
+		return fun( prim_1, vec_2[i] );
+	}
+        inline R_xlen_t size() const { return vec_2.size() ; }
+
+private:
+	PRIM_1 prim_1 ;
+    const T_2& vec_2 ;
+	Function fun ;
+} ;
+
+
+
+} // sugar
+
+
+template <int RTYPE, bool NA_1, typename T_1, bool NA_2, typename T_2, typename Function >
+inline sugar::Mapply_2<RTYPE,NA_1,T_1,NA_2,T_2,Function>
+mapply( const Rcpp::VectorBase<RTYPE,NA_1,T_1>& t1, const Rcpp::VectorBase<RTYPE,NA_2,T_2>& t2, Function fun ){
+	return sugar::Mapply_2<RTYPE,NA_1,T_1,NA_2,T_2,Function>( t1.get_ref(), t2.get_ref(), fun ) ;
+}
+
+template <int RTYPE, bool NA_1, typename T_1, typename Function >
+inline sugar::Mapply_2_Vector_Primitive<RTYPE,NA_1,T_1,double,Function>
+mapply( const Rcpp::VectorBase<RTYPE,NA_1,T_1>& t1, double t2, Function fun ){
+	return sugar::Mapply_2_Vector_Primitive<RTYPE,NA_1,T_1,double,Function>( t1.get_ref(), t2, fun ) ;
+}
+
+template <int RTYPE, bool NA_2, typename T_2, typename Function >
+inline sugar::Mapply_2_Primitive_Vector<RTYPE,double, NA_2,T_2,Function>
+mapply( double t1, const Rcpp::VectorBase<RTYPE,NA_2,T_2>& t2, Function fun ){
+	return sugar::Mapply_2_Primitive_Vector<RTYPE,double, NA_2,T_2,Function>( t1, t2.get_ref(), fun ) ;
+}
+
+
+
+} // Rcpp
+
+#endif
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/logical/not.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/logical/not.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/logical/not.h	(revision 3762)
@@ -0,0 +1,67 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; tab-width: 8 -*-
+//
+// not.h: Rcpp R/C++ interface class library --
+//
+// Copyright (C) 2010 - 2011 Dirk Eddelbuettel and Romain Francois
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+#ifndef Rcpp__sugar__logical__not_h
+#define Rcpp__sugar__logical__not_h
+
+namespace Rcpp{
+namespace sugar{
+
+template <bool NA> struct negate{
+	static inline int apply( int x ){
+		return Rcpp::traits::is_na<LGLSXP>( x ) ? x :
+			( x ? FALSE : TRUE ) ;
+	}
+} ;
+template<> struct negate<false>{
+	static inline int apply( int x){
+		return x ? FALSE : TRUE ;
+	} ;
+} ;
+
+
+template <bool NA, typename T>
+class Negate_SingleLogicalResult : public SingleLogicalResult<NA, Negate_SingleLogicalResult<NA,T> >{
+public:
+	typedef SingleLogicalResult<NA,T> TYPE ;
+	typedef SingleLogicalResult<NA, Negate_SingleLogicalResult<NA,T> > BASE ;
+	Negate_SingleLogicalResult( const TYPE& orig_ ) : orig(orig_) {}
+
+	inline void apply(){
+		BASE::set( negate<NA>::apply( orig.get() ) );
+	}
+
+private:
+	const TYPE& orig ;
+
+} ;
+
+}
+}
+
+template <bool NA,typename T>
+inline Rcpp::sugar::Negate_SingleLogicalResult<NA,T>
+operator!( const Rcpp::sugar::SingleLogicalResult<NA,T>& x){
+	return Rcpp::sugar::Negate_SingleLogicalResult<NA,T>( x );
+}
+
+
+#endif
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/logical/or.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/logical/or.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/logical/or.h	(revision 3762)
@@ -0,0 +1,323 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; tab-width: 8 -*-
+//
+// or.h: Rcpp R/C++ interface class library --
+//
+// Copyright (C) 2010 - 2012 Dirk Eddelbuettel and Romain Francois
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+#ifndef Rcpp__sugar__logical_or_h
+#define Rcpp__sugar__logical_or_h
+
+namespace Rcpp{
+namespace sugar{
+
+template <bool LHS_NA, typename LHS_T, bool RHS_NA, typename RHS_T>
+class Or_SingleLogicalResult_SingleLogicalResult :
+public SingleLogicalResult<
+	(LHS_NA || RHS_NA) ,
+	Or_SingleLogicalResult_SingleLogicalResult<LHS_NA,LHS_T,RHS_NA,RHS_T>
+	>
+{
+public:
+	typedef SingleLogicalResult<LHS_NA,LHS_T> LHS_TYPE ;
+	typedef SingleLogicalResult<RHS_NA,RHS_T> RHS_TYPE ;
+	typedef SingleLogicalResult<
+		(LHS_NA || RHS_NA) ,
+		Or_SingleLogicalResult_SingleLogicalResult<LHS_NA,LHS_T,RHS_NA,RHS_T>
+	> BASE ;
+
+	Or_SingleLogicalResult_SingleLogicalResult( const LHS_TYPE& lhs_, const RHS_TYPE& rhs_) :
+		lhs(lhs_), rhs(rhs_){} ;
+
+	inline void apply(){
+		int left = lhs.get() ;
+		if( Rcpp::traits::is_na<LGLSXP>( left ) ){
+			BASE::set( left ) ;
+		} else if( left == TRUE ){
+			BASE::set( TRUE ) ;
+		} else {
+			BASE::set( rhs.get() ) ;
+		}
+	}
+
+private:
+	const LHS_TYPE& lhs ;
+	const RHS_TYPE& rhs ;
+
+} ;
+
+// special version when we know the rhs is not NA
+template <bool LHS_NA, typename LHS_T, typename RHS_T>
+class Or_SingleLogicalResult_SingleLogicalResult<LHS_NA,LHS_T,false,RHS_T> :
+public SingleLogicalResult<
+	LHS_NA ,
+	Or_SingleLogicalResult_SingleLogicalResult<LHS_NA,LHS_T,false,RHS_T>
+	>
+{
+public:
+	typedef SingleLogicalResult<LHS_NA,LHS_T> LHS_TYPE ;
+	typedef SingleLogicalResult<false,RHS_T> RHS_TYPE ;
+	typedef SingleLogicalResult<
+		LHS_NA,
+		Or_SingleLogicalResult_SingleLogicalResult<LHS_NA,LHS_T,false,RHS_T>
+	> BASE ;
+
+	Or_SingleLogicalResult_SingleLogicalResult( const LHS_TYPE& lhs_, const RHS_TYPE& rhs_) :
+		lhs(lhs_), rhs(rhs_){} ;
+
+	inline void apply(){
+		// here we know rhs does not have NA, so we start with the rhs
+		int right = rhs.get() ;
+		if( right == TRUE ){
+			BASE::set( TRUE ) ;
+		} else {
+			BASE::set( lhs.get() ) ;
+		}
+	}
+
+private:
+	const LHS_TYPE& lhs ;
+	const RHS_TYPE& rhs ;
+
+} ;
+
+
+// special version when we know the lhs is not NA
+template <typename LHS_T, bool RHS_NA, typename RHS_T>
+class Or_SingleLogicalResult_SingleLogicalResult<false,LHS_T,RHS_NA,RHS_T> :
+public SingleLogicalResult<
+	RHS_NA ,
+	Or_SingleLogicalResult_SingleLogicalResult<false,LHS_T,RHS_NA,RHS_T>
+	>
+{
+public:
+	typedef SingleLogicalResult<false,LHS_T> LHS_TYPE ;
+	typedef SingleLogicalResult<RHS_NA,RHS_T> RHS_TYPE ;
+	typedef SingleLogicalResult<
+		RHS_NA,
+		Or_SingleLogicalResult_SingleLogicalResult<false,LHS_T,RHS_NA,RHS_T>
+	> BASE ;
+
+	Or_SingleLogicalResult_SingleLogicalResult( const LHS_TYPE& lhs_, const RHS_TYPE& rhs_) :
+		lhs(lhs_), rhs(rhs_){} ;
+
+	inline void apply(){
+		// here we know lhs does not have NA, so we start with the rhs
+		int left = lhs.get() ;
+		if( left == TRUE ){
+			BASE::set( TRUE ) ;
+		} else {
+			BASE::set( rhs.get() ) ;
+		}
+	}
+
+private:
+	const LHS_TYPE& lhs ;
+	const RHS_TYPE& rhs ;
+
+} ;
+
+// special version when we know both the lhs and the rhs are not NA
+template <typename LHS_T, typename RHS_T>
+class Or_SingleLogicalResult_SingleLogicalResult<false,LHS_T,false,RHS_T> :
+public SingleLogicalResult<
+	false ,
+	Or_SingleLogicalResult_SingleLogicalResult<false,LHS_T,false,RHS_T>
+	>
+{
+public:
+	typedef SingleLogicalResult<false,LHS_T> LHS_TYPE ;
+	typedef SingleLogicalResult<false,RHS_T> RHS_TYPE ;
+	typedef SingleLogicalResult<
+		false,
+		Or_SingleLogicalResult_SingleLogicalResult<false,LHS_T,false,RHS_T>
+	> BASE ;
+
+	Or_SingleLogicalResult_SingleLogicalResult( const LHS_TYPE& lhs_, const RHS_TYPE& rhs_) :
+		lhs(lhs_), rhs(rhs_){} ;
+
+	inline void apply(){
+		int left = lhs.get() ;
+		if( left == TRUE ){
+			BASE::set( TRUE ) ;
+		} else {
+			BASE::set( rhs.get() ) ;
+		}
+	}
+
+private:
+	const LHS_TYPE& lhs ;
+	const RHS_TYPE& rhs ;
+
+} ;
+
+
+template <bool LHS_NA, typename LHS_T>
+class Or_SingleLogicalResult_bool :
+public SingleLogicalResult<
+	LHS_NA ,
+	And_SingleLogicalResult_bool<LHS_NA,LHS_T>
+	>
+{
+public:
+	typedef SingleLogicalResult<LHS_NA,LHS_T> LHS_TYPE ;
+	typedef SingleLogicalResult<
+		LHS_NA ,
+		Or_SingleLogicalResult_bool<LHS_NA,LHS_T>
+	> BASE ;
+
+	Or_SingleLogicalResult_bool( const LHS_TYPE& lhs_, bool rhs_) :
+		lhs(lhs_), rhs(rhs_){} ;
+
+	inline void apply(){
+		if( rhs ){
+			BASE::set( TRUE ) ;
+		} else{
+			BASE::set( lhs.get() ) ;
+		}
+	}
+
+private:
+	const LHS_TYPE& lhs ;
+	bool rhs ;
+
+} ;
+
+// (LogicalExpression) | (LogicalExpression)
+template <bool LHS_NA, typename LHS_T, bool RHS_NA, typename RHS_T>
+class Or_LogicalExpression_LogicalExpression : public Rcpp::VectorBase< LGLSXP, true, Or_LogicalExpression_LogicalExpression<LHS_NA,LHS_T,RHS_NA,RHS_T> >{
+public:
+    typedef typename Rcpp::VectorBase<LGLSXP,LHS_NA,LHS_T> LHS_TYPE ;
+    typedef typename Rcpp::VectorBase<LGLSXP,RHS_NA,RHS_T> RHS_TYPE ;
+
+    Or_LogicalExpression_LogicalExpression( const LHS_TYPE& lhs_, const RHS_TYPE& rhs_ ) : lhs(lhs_), rhs(rhs_){}
+
+    inline int operator[]( R_xlen_t i ) const{
+        if( lhs[i] == TRUE || rhs[i] == TRUE ) return TRUE ;
+        if( lhs[i] == FALSE && rhs[i] == FALSE ) return FALSE ;
+        return NA_LOGICAL;
+    }
+    inline R_xlen_t size() const { return lhs.size(); }
+
+private:
+    const LHS_TYPE& lhs ;
+    const RHS_TYPE& rhs ;
+} ;
+template <typename LHS_T, bool RHS_NA, typename RHS_T>
+class Or_LogicalExpression_LogicalExpression<false,LHS_T,RHS_NA,RHS_T>
+    : public Rcpp::VectorBase< LGLSXP, true, Or_LogicalExpression_LogicalExpression<false,LHS_T,RHS_NA,RHS_T> >{
+public:
+    typedef typename Rcpp::VectorBase<LGLSXP,false,LHS_T> LHS_TYPE ;
+    typedef typename Rcpp::VectorBase<LGLSXP,RHS_NA,RHS_T> RHS_TYPE ;
+
+    Or_LogicalExpression_LogicalExpression( const LHS_TYPE& lhs_, const RHS_TYPE& rhs_ ) : lhs(lhs_), rhs(rhs_){}
+
+    inline int operator[]( R_xlen_t i ) const{
+        if( lhs[i] == TRUE || rhs[i] == TRUE ) return TRUE ;
+        if( rhs[i] == NA_LOGICAL ) return NA_LOGICAL ;
+        return FALSE ;
+    }
+    inline R_xlen_t size() const { return lhs.size(); }
+
+private:
+    const LHS_TYPE& lhs ;
+    const RHS_TYPE& rhs ;
+} ;
+template <bool LHS_NA, typename LHS_T, typename RHS_T>
+class Or_LogicalExpression_LogicalExpression<LHS_NA,LHS_T,false,RHS_T>
+    : public Rcpp::VectorBase< LGLSXP, true, Or_LogicalExpression_LogicalExpression<LHS_NA,LHS_T,false,RHS_T> >{
+public:
+    typedef typename Rcpp::VectorBase<LGLSXP,LHS_NA,LHS_T> LHS_TYPE ;
+    typedef typename Rcpp::VectorBase<LGLSXP,false,RHS_T> RHS_TYPE ;
+
+    Or_LogicalExpression_LogicalExpression( const LHS_TYPE& lhs_, const RHS_TYPE& rhs_ ) : lhs(lhs_), rhs(rhs_){}
+
+    inline int operator[]( R_xlen_t i ) const{
+        if( lhs[i] == TRUE || rhs[i] == TRUE ) return TRUE ;
+        if( lhs[i] == NA_LOGICAL ) return NA_LOGICAL ;
+        return FALSE;
+    }
+    inline R_xlen_t size() const { return lhs.size(); }
+
+private:
+    const LHS_TYPE& lhs ;
+    const RHS_TYPE& rhs ;
+} ;
+template <typename LHS_T, typename RHS_T>
+class Or_LogicalExpression_LogicalExpression<false,LHS_T,false,RHS_T>
+    : public Rcpp::VectorBase< LGLSXP, false, Or_LogicalExpression_LogicalExpression<false,LHS_T,false,RHS_T> >{
+public:
+    typedef typename Rcpp::VectorBase<LGLSXP,false,LHS_T> LHS_TYPE ;
+    typedef typename Rcpp::VectorBase<LGLSXP,false,RHS_T> RHS_TYPE ;
+
+    Or_LogicalExpression_LogicalExpression( const LHS_TYPE& lhs_, const RHS_TYPE& rhs_ ) : lhs(lhs_), rhs(rhs_){}
+
+    inline int operator[]( R_xlen_t i ) const{
+        if( lhs[i] == TRUE || rhs[i] == TRUE ) return TRUE ;
+        return FALSE;
+    }
+    inline R_xlen_t size() const { return lhs.size(); }
+
+private:
+    const LHS_TYPE& lhs ;
+    const RHS_TYPE& rhs ;
+} ;
+
+
+
+} // sugar
+} // Rcpp
+
+template <bool LHS_NA, typename LHS_T, bool RHS_NA, typename RHS_T>
+inline Rcpp::sugar::Or_SingleLogicalResult_SingleLogicalResult<LHS_NA,LHS_T,RHS_NA,RHS_T>
+operator||(
+	const Rcpp::sugar::SingleLogicalResult<LHS_NA,LHS_T>& lhs,
+	const Rcpp::sugar::SingleLogicalResult<LHS_NA,LHS_T>& rhs
+){
+	return Rcpp::sugar::Or_SingleLogicalResult_SingleLogicalResult<LHS_NA,LHS_T,RHS_NA,RHS_T>( lhs, rhs ) ;
+}
+
+template <bool LHS_NA, typename LHS_T>
+inline Rcpp::sugar::Or_SingleLogicalResult_bool<LHS_NA,LHS_T>
+operator||(
+	const Rcpp::sugar::SingleLogicalResult<LHS_NA,LHS_T>& lhs,
+	bool rhs
+){
+	return Rcpp::sugar::Or_SingleLogicalResult_bool<LHS_NA,LHS_T>( lhs, rhs ) ;
+}
+
+template <bool LHS_NA, typename LHS_T>
+inline Rcpp::sugar::Or_SingleLogicalResult_bool<LHS_NA,LHS_T>
+operator||(
+	bool rhs,
+	const Rcpp::sugar::SingleLogicalResult<LHS_NA,LHS_T>& lhs
+){
+	return Rcpp::sugar::Or_SingleLogicalResult_bool<LHS_NA,LHS_T>( lhs, rhs ) ;
+}
+
+// (logical expression) | (logical expression)
+template <bool LHS_NA, typename LHS_T, bool RHS_NA, typename RHS_T>
+inline Rcpp::sugar::Or_LogicalExpression_LogicalExpression<LHS_NA,LHS_T,RHS_NA,RHS_T>
+operator|(
+    const Rcpp::VectorBase<LGLSXP,LHS_NA,LHS_T>& lhs,
+    const Rcpp::VectorBase<LGLSXP,RHS_NA,RHS_T>& rhs
+){
+    return Rcpp::sugar::Or_LogicalExpression_LogicalExpression<LHS_NA,LHS_T,RHS_NA,RHS_T>( lhs, rhs ) ;
+}
+
+
+#endif
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/logical/and.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/logical/and.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/logical/and.h	(revision 3762)
@@ -0,0 +1,324 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; tab-width: 8 -*-
+//
+// and.h: Rcpp R/C++ interface class library --
+//
+// Copyright (C) 2010 - 2012 Dirk Eddelbuettel and Romain Francois
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+#ifndef Rcpp__sugar__logical_and_h
+#define Rcpp__sugar__logical_and_h
+
+namespace Rcpp{
+namespace sugar{
+
+template <bool LHS_NA, typename LHS_T, bool RHS_NA, typename RHS_T>
+class And_SingleLogicalResult_SingleLogicalResult :
+public SingleLogicalResult<
+	(LHS_NA || RHS_NA) ,
+	And_SingleLogicalResult_SingleLogicalResult<LHS_NA,LHS_T,RHS_NA,RHS_T>
+	>
+{
+public:
+	typedef SingleLogicalResult<LHS_NA,LHS_T> LHS_TYPE ;
+	typedef SingleLogicalResult<RHS_NA,RHS_T> RHS_TYPE ;
+	typedef SingleLogicalResult<
+		(LHS_NA || RHS_NA) ,
+		And_SingleLogicalResult_SingleLogicalResult<LHS_NA,LHS_T,RHS_NA,RHS_T>
+	> BASE ;
+
+	And_SingleLogicalResult_SingleLogicalResult( const LHS_TYPE& lhs_, const RHS_TYPE& rhs_) :
+		lhs(lhs_), rhs(rhs_){} ;
+
+	inline void apply(){
+		int left = lhs.get() ;
+		if( Rcpp::traits::is_na<LGLSXP>( left ) ){
+			BASE::set( left ) ;
+		} else if( left == FALSE ){
+			BASE::set( FALSE ) ;
+		} else {
+			BASE::set( rhs.get() ) ;
+		}
+	}
+
+private:
+	const LHS_TYPE& lhs ;
+	const RHS_TYPE& rhs ;
+
+} ;
+
+// special version when we know the rhs is not NA
+template <bool LHS_NA, typename LHS_T, typename RHS_T>
+class And_SingleLogicalResult_SingleLogicalResult<LHS_NA,LHS_T,false,RHS_T> :
+public SingleLogicalResult<
+	LHS_NA ,
+	And_SingleLogicalResult_SingleLogicalResult<LHS_NA,LHS_T,false,RHS_T>
+	>
+{
+public:
+	typedef SingleLogicalResult<LHS_NA,LHS_T> LHS_TYPE ;
+	typedef SingleLogicalResult<false,RHS_T> RHS_TYPE ;
+	typedef SingleLogicalResult<
+		LHS_NA,
+		And_SingleLogicalResult_SingleLogicalResult<LHS_NA,LHS_T,false,RHS_T>
+	> BASE ;
+
+	And_SingleLogicalResult_SingleLogicalResult( const LHS_TYPE& lhs_, const RHS_TYPE& rhs_) :
+		lhs(lhs_), rhs(rhs_){} ;
+
+	inline void apply(){
+		// here we know rhs does not have NA, so we start with the rhs
+		int right = rhs.get() ;
+		if( right == FALSE ){
+			BASE::set( FALSE ) ;
+		} else {
+			BASE::set( lhs.get() ) ;
+		}
+	}
+
+private:
+	const LHS_TYPE& lhs ;
+	const RHS_TYPE& rhs ;
+
+} ;
+
+
+// special version when we know the lhs is not NA
+template <typename LHS_T, bool RHS_NA, typename RHS_T>
+class And_SingleLogicalResult_SingleLogicalResult<false,LHS_T,RHS_NA,RHS_T> :
+public SingleLogicalResult<
+	RHS_NA ,
+	And_SingleLogicalResult_SingleLogicalResult<false,LHS_T,RHS_NA,RHS_T>
+	>
+{
+public:
+	typedef SingleLogicalResult<false,LHS_T> LHS_TYPE ;
+	typedef SingleLogicalResult<RHS_NA,RHS_T> RHS_TYPE ;
+	typedef SingleLogicalResult<
+		RHS_NA,
+		And_SingleLogicalResult_SingleLogicalResult<false,LHS_T,RHS_NA,RHS_T>
+	> BASE ;
+
+	And_SingleLogicalResult_SingleLogicalResult( const LHS_TYPE& lhs_, const RHS_TYPE& rhs_) :
+		lhs(lhs_), rhs(rhs_){} ;
+
+	inline void apply(){
+		// here we know lhs does not have NA, so we start with the rhs
+		int left = lhs.get() ;
+		if( left == FALSE ){
+			BASE::set( FALSE ) ;
+		} else {
+			BASE::set( rhs.get() ) ;
+		}
+	}
+
+private:
+	const LHS_TYPE& lhs ;
+	const RHS_TYPE& rhs ;
+
+} ;
+
+// special version when we know both the lhs and the rhs are not NA
+template <typename LHS_T, typename RHS_T>
+class And_SingleLogicalResult_SingleLogicalResult<false,LHS_T,false,RHS_T> :
+public SingleLogicalResult<
+	false ,
+	And_SingleLogicalResult_SingleLogicalResult<false,LHS_T,false,RHS_T>
+	>
+{
+public:
+	typedef SingleLogicalResult<false,LHS_T> LHS_TYPE ;
+	typedef SingleLogicalResult<false,RHS_T> RHS_TYPE ;
+	typedef SingleLogicalResult<
+		false,
+		And_SingleLogicalResult_SingleLogicalResult<false,LHS_T,false,RHS_T>
+	> BASE ;
+
+	And_SingleLogicalResult_SingleLogicalResult( const LHS_TYPE& lhs_, const RHS_TYPE& rhs_) :
+		lhs(lhs_), rhs(rhs_){} ;
+
+	inline void apply(){
+		int left = lhs.get() ;
+		if( left == FALSE ){
+			BASE::set( FALSE ) ;
+		} else {
+			BASE::set( rhs.get() ) ;
+		}
+	}
+
+private:
+	const LHS_TYPE& lhs ;
+	const RHS_TYPE& rhs ;
+
+} ;
+
+
+
+template <bool LHS_NA, typename LHS_T>
+class And_SingleLogicalResult_bool :
+public SingleLogicalResult<
+	LHS_NA ,
+	And_SingleLogicalResult_bool<LHS_NA,LHS_T>
+	>
+{
+public:
+	typedef SingleLogicalResult<LHS_NA,LHS_T> LHS_TYPE ;
+	typedef SingleLogicalResult<
+		LHS_NA ,
+		And_SingleLogicalResult_bool<LHS_NA,LHS_T>
+	> BASE ;
+
+	And_SingleLogicalResult_bool( const LHS_TYPE& lhs_, bool rhs_) :
+		lhs(lhs_), rhs(rhs_){} ;
+
+	inline void apply(){
+		if( !rhs ){
+			BASE::set( FALSE ) ;
+		} else{
+			BASE::set( lhs.get() ) ;
+		}
+	}
+
+private:
+	const LHS_TYPE& lhs ;
+	bool rhs ;
+
+} ;
+
+
+
+// (LogicalExpression) & (LogicalExpression)
+template <bool LHS_NA, typename LHS_T, bool RHS_NA, typename RHS_T>
+class And_LogicalExpression_LogicalExpression : public Rcpp::VectorBase< LGLSXP, true, And_LogicalExpression_LogicalExpression<LHS_NA,LHS_T,RHS_NA,RHS_T> >{
+public:
+    typedef typename Rcpp::VectorBase<LGLSXP,LHS_NA,LHS_T> LHS_TYPE ;
+    typedef typename Rcpp::VectorBase<LGLSXP,RHS_NA,RHS_T> RHS_TYPE ;
+
+    And_LogicalExpression_LogicalExpression( const LHS_TYPE& lhs_, const RHS_TYPE& rhs_ ) : lhs(lhs_), rhs(rhs_){}
+
+    inline int operator[]( R_xlen_t i ) const{
+        if( lhs[i] == TRUE && rhs[i] == TRUE ) return TRUE ;
+        if( lhs[i] == NA_LOGICAL || rhs[i] == NA_LOGICAL ) return NA_LOGICAL ;
+        return FALSE ;
+    }
+    inline R_xlen_t size() const { return lhs.size(); }
+
+private:
+    const LHS_TYPE& lhs ;
+    const RHS_TYPE& rhs ;
+} ;
+template <typename LHS_T, bool RHS_NA, typename RHS_T>
+class And_LogicalExpression_LogicalExpression<false,LHS_T,RHS_NA,RHS_T>
+    : public Rcpp::VectorBase< LGLSXP, true, And_LogicalExpression_LogicalExpression<false,LHS_T,RHS_NA,RHS_T> >{
+public:
+    typedef typename Rcpp::VectorBase<LGLSXP,false,LHS_T> LHS_TYPE ;
+    typedef typename Rcpp::VectorBase<LGLSXP,RHS_NA,RHS_T> RHS_TYPE ;
+
+    And_LogicalExpression_LogicalExpression( const LHS_TYPE& lhs_, const RHS_TYPE& rhs_ ) : lhs(lhs_), rhs(rhs_){}
+
+    inline int operator[]( R_xlen_t i ) const{
+        if( lhs[i] == TRUE && rhs[i] == TRUE ) return TRUE ;
+        if( rhs[i] == NA_LOGICAL ) return NA_LOGICAL ;
+        return FALSE ;
+    }
+    inline R_xlen_t size() const { return lhs.size(); }
+
+private:
+    const LHS_TYPE& lhs ;
+    const RHS_TYPE& rhs ;
+} ;
+template <bool LHS_NA, typename LHS_T, typename RHS_T>
+class And_LogicalExpression_LogicalExpression<LHS_NA,LHS_T,false,RHS_T>
+    : public Rcpp::VectorBase< LGLSXP, true, And_LogicalExpression_LogicalExpression<LHS_NA,LHS_T,false,RHS_T> >{
+public:
+    typedef typename Rcpp::VectorBase<LGLSXP,LHS_NA,LHS_T> LHS_TYPE ;
+    typedef typename Rcpp::VectorBase<LGLSXP,false,RHS_T> RHS_TYPE ;
+
+    And_LogicalExpression_LogicalExpression( const LHS_TYPE& lhs_, const RHS_TYPE& rhs_ ) : lhs(lhs_), rhs(rhs_){}
+
+    inline int operator[]( R_xlen_t i ) const{
+        if( lhs[i] == TRUE && rhs[i] == TRUE ) return TRUE ;
+        if( lhs[i] == NA_LOGICAL ) return NA_LOGICAL ;
+        return FALSE;
+    }
+    inline R_xlen_t size() const { return lhs.size(); }
+
+private:
+    const LHS_TYPE& lhs ;
+    const RHS_TYPE& rhs ;
+} ;
+template <typename LHS_T, typename RHS_T>
+class And_LogicalExpression_LogicalExpression<false,LHS_T,false,RHS_T>
+    : public Rcpp::VectorBase< LGLSXP, false, And_LogicalExpression_LogicalExpression<false,LHS_T,false,RHS_T> >{
+public:
+    typedef typename Rcpp::VectorBase<LGLSXP,false,LHS_T> LHS_TYPE ;
+    typedef typename Rcpp::VectorBase<LGLSXP,false,RHS_T> RHS_TYPE ;
+
+    And_LogicalExpression_LogicalExpression( const LHS_TYPE& lhs_, const RHS_TYPE& rhs_ ) : lhs(lhs_), rhs(rhs_){}
+
+    inline int operator[]( R_xlen_t i ) const{
+        if( lhs[i] == TRUE && rhs[i] == TRUE ) return TRUE ;
+        return FALSE;
+    }
+    inline R_xlen_t size() const { return lhs.size(); }
+
+private:
+    const LHS_TYPE& lhs ;
+    const RHS_TYPE& rhs ;
+} ;
+
+}
+}
+
+template <bool LHS_NA, typename LHS_T, bool RHS_NA, typename RHS_T>
+inline Rcpp::sugar::And_SingleLogicalResult_SingleLogicalResult<LHS_NA,LHS_T,RHS_NA,RHS_T>
+operator&&(
+	const Rcpp::sugar::SingleLogicalResult<LHS_NA,LHS_T>& lhs,
+	const Rcpp::sugar::SingleLogicalResult<LHS_NA,LHS_T>& rhs
+){
+	return Rcpp::sugar::And_SingleLogicalResult_SingleLogicalResult<LHS_NA,LHS_T,RHS_NA,RHS_T>( lhs, rhs ) ;
+}
+
+template <bool LHS_NA, typename LHS_T>
+inline Rcpp::sugar::And_SingleLogicalResult_bool<LHS_NA,LHS_T>
+operator&&(
+	const Rcpp::sugar::SingleLogicalResult<LHS_NA,LHS_T>& lhs,
+	bool rhs
+){
+	return Rcpp::sugar::And_SingleLogicalResult_bool<LHS_NA,LHS_T>( lhs, rhs ) ;
+}
+
+template <bool LHS_NA, typename LHS_T>
+inline Rcpp::sugar::And_SingleLogicalResult_bool<LHS_NA,LHS_T>
+operator&&(
+	bool rhs,
+	const Rcpp::sugar::SingleLogicalResult<LHS_NA,LHS_T>& lhs
+){
+	return Rcpp::sugar::And_SingleLogicalResult_bool<LHS_NA,LHS_T>( lhs, rhs ) ;
+}
+
+// (logical expression) & (logical expression)
+template <bool LHS_NA, typename LHS_T, bool RHS_NA, typename RHS_T>
+inline Rcpp::sugar::And_LogicalExpression_LogicalExpression<LHS_NA,LHS_T,RHS_NA,RHS_T>
+operator&(
+    const Rcpp::VectorBase<LGLSXP,LHS_NA,LHS_T>& lhs,
+    const Rcpp::VectorBase<LGLSXP,RHS_NA,RHS_T>& rhs
+){
+    return Rcpp::sugar::And_LogicalExpression_LogicalExpression<LHS_NA,LHS_T,RHS_NA,RHS_T>( lhs, rhs ) ;
+}
+
+
+#endif
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/logical/can_have_na.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/logical/can_have_na.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/logical/can_have_na.h	(revision 3762)
@@ -0,0 +1,32 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; tab-width: 8 -*-
+//
+// can_have_na.h: Rcpp R/C++ interface class library --
+//
+// Copyright (C) 2010 - 2011 Dirk Eddelbuettel and Romain Francois
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+#ifndef Rcpp__sugar__can_have_na_h
+#define Rcpp__sugar__can_have_na_h
+
+namespace Rcpp{
+
+template <typename T>
+struct can_have_na :  T::can_have_na::type {} ;
+
+} // Rcpp
+#endif
+
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/logical/logical.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/logical/logical.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/logical/logical.h	(revision 3762)
@@ -0,0 +1,34 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; tab-width: 8 -*-
+//
+// logical.h: Rcpp R/C++ interface class library --
+//
+// Copyright (C) 2010 - 2011 Dirk Eddelbuettel and Romain Francois
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+#ifndef RCPP_SUGAR_LOGICAL_H
+#define RCPP_SUGAR_LOGICAL_H
+
+#include <Rcpp/sugar/logical/can_have_na.h>
+
+#include <Rcpp/sugar/logical/SingleLogicalResult.h>
+#include <Rcpp/sugar/logical/not.h>
+#include <Rcpp/sugar/logical/and.h>
+#include <Rcpp/sugar/logical/or.h>
+
+#include <Rcpp/sugar/logical/is.h>
+
+#endif
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/logical/SingleLogicalResult.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/logical/SingleLogicalResult.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/logical/SingleLogicalResult.h	(revision 3762)
@@ -0,0 +1,106 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; tab-width: 8 -*-
+//
+// SingleLogicalResult.h: Rcpp R/C++ interface class library --
+//
+// Copyright (C) 2010 - 2012 Dirk Eddelbuettel and Romain Francois
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+#ifndef Rcpp__sugar__SingleLogicalResult_h
+#define Rcpp__sugar__SingleLogicalResult_h
+
+namespace Rcpp{
+namespace sugar{
+
+template <bool>
+class forbidden_conversion ;
+
+template <>
+class forbidden_conversion<true>{} ;
+
+template <bool x>
+class conversion_to_bool_is_forbidden :
+	forbidden_conversion<x>{
+	public:
+		void touch(){}
+};
+
+template <bool NA,typename T>
+class SingleLogicalResult {
+public:
+	const static int UNRESOLVED = -5 ;
+
+	SingleLogicalResult() : result(UNRESOLVED) {} ;
+
+	void apply(){
+		if( result == UNRESOLVED ){
+			static_cast<T&>(*this).apply() ;
+		}
+	}
+
+	inline bool is_true(){
+		apply() ;
+		return result == TRUE ;
+	}
+
+	inline bool is_false(){
+		apply() ;
+		return result == FALSE ;
+	}
+
+	inline bool is_na(){
+		apply() ;
+		return Rcpp::traits::is_na<LGLSXP>( result ) ;
+	}
+
+	inline operator SEXP(){
+		return get_sexp() ;
+	}
+
+	inline operator bool(){
+		conversion_to_bool_is_forbidden<!NA> x ;
+		x.touch() ;
+		return is_true() ;
+	}
+
+	inline int size(){ return 1 ; }
+
+	inline int get(){
+		apply();
+		return result;
+	}
+
+	inline SEXP get_sexp(){
+	    apply() ;
+	    return Rf_ScalarLogical( result ) ;
+	}
+
+protected:
+	int result ;
+	inline void set(int x){ result = x ;}
+	inline void reset(){ set(UNRESOLVED) ; }
+	inline void set_true(){ set(TRUE); }
+	inline void set_false(){ set(FALSE); }
+	inline void set_na(){ set(NA_LOGICAL); }
+	inline bool is_unresolved(){ return result == UNRESOLVED ; }
+} ;
+
+}
+}
+
+
+
+#endif
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/logical/is.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/logical/is.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/Rcpp/include/Rcpp/sugar/logical/is.h	(revision 3762)
@@ -0,0 +1,44 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; tab-width: 8 -*-
+//
+// is.h: Rcpp R/C++ interface class library --
+//
+// Copyright (C) 2010 - 2011 Dirk Eddelbuettel and Romain Francois
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+#ifndef RCPP_SUGAR_LOGICAL_IS_H
+#define RCPP_SUGAR_LOGICAL_IS_H
+
+namespace Rcpp{
+
+	template <bool NA, typename T>
+	inline bool is_true( const Rcpp::sugar::SingleLogicalResult<NA,T>& x){
+		return const_cast< Rcpp::sugar::SingleLogicalResult<NA,T>& >(x).is_true() ;
+	}
+
+	template <bool NA, typename T>
+	inline bool is_false( const Rcpp::sugar::SingleLogicalResult<NA,T>& x){
+		return const_cast< Rcpp::sugar::SingleLogicalResult<NA,T>& >(x).is_false() ;
+	}
+
+	template <bool NA, typename T>
+	inline bool is_na( const Rcpp::sugar::SingleLogicalResult<NA,T>& x){
+		return const_cast< Rcpp::sugar::SingleLogicalResult<NA,T>& >(x).is_na() ;
+	}
+
+
+}
+#endif
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/survival/tests/Examples/survival-Ex.Rout.save
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/survival/tests/Examples/survival-Ex.Rout.save	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/survival/tests/Examples/survival-Ex.Rout.save	(revision 3762)
@@ -0,0 +1,3645 @@
+
+R Under development (unstable) (2022-06-20 r82505) -- "Unsuffered Consequences"
+Copyright (C) 2022 The R Foundation for Statistical Computing
+Platform: x86_64-pc-linux-gnu (64-bit)
+
+R is free software and comes with ABSOLUTELY NO WARRANTY.
+You are welcome to redistribute it under certain conditions.
+Type 'license()' or 'licence()' for distribution details.
+
+  Natural language support but running in an English locale
+
+R is a collaborative project with many contributors.
+Type 'contributors()' for more information and
+'citation()' on how to cite R or R packages in publications.
+
+Type 'demo()' for some demos, 'help()' for on-line help, or
+'help.start()' for an HTML browser interface to help.
+Type 'q()' to quit R.
+
+> pkgname <- "survival"
+> source(file.path(R.home("share"), "R", "examples-header.R"))
+> options(warn = 1)
+> library('survival')
+> 
+> base::assign(".oldSearch", base::search(), pos = 'CheckExEnv')
+> base::assign(".old_wd", base::getwd(), pos = 'CheckExEnv')
+> cleanEx()
+> nameEx("Surv")
+> ### * Surv
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: Surv
+> ### Title: Create a Survival Object
+> ### Aliases: Surv is.Surv [.Surv
+> ### Keywords: survival
+> 
+> ### ** Examples
+> 
+> with(aml, Surv(time, status))
+ [1]   9   13   13+  18   23   28+  31   34   45+  48  161+   5    5    8    8 
+[16]  12   16+  23   27   30   33   43   45 
+> survfit(Surv(time, status) ~ ph.ecog, data=lung)
+Call: survfit(formula = Surv(time, status) ~ ph.ecog, data = lung)
+
+   1 observation deleted due to missingness 
+            n events median 0.95LCL 0.95UCL
+ph.ecog=0  63     37    394     348     574
+ph.ecog=1 113     82    306     268     429
+ph.ecog=2  50     44    199     156     288
+ph.ecog=3   1      1    118      NA      NA
+> Surv(heart$start, heart$stop, heart$event) 
+  [1] (  0.0,  50.0]  (  0.0,   6.0]  (  0.0,   1.0+] (  1.0,  16.0] 
+  [5] (  0.0,  36.0+] ( 36.0,  39.0]  (  0.0,  18.0]  (  0.0,   3.0] 
+  [9] (  0.0,  51.0+] ( 51.0, 675.0]  (  0.0,  40.0]  (  0.0,  85.0] 
+ [13] (  0.0,  12.0+] ( 12.0,  58.0]  (  0.0,  26.0+] ( 26.0, 153.0] 
+ [17] (  0.0,   8.0]  (  0.0,  17.0+] ( 17.0,  81.0]  (  0.0,  37.0+]
+ [21] ( 37.0,1387.0]  (  0.0,   1.0]  (  0.0,  28.0+] ( 28.0, 308.0] 
+ [25] (  0.0,  36.0]  (  0.0,  20.0+] ( 20.0,  43.0]  (  0.0,  37.0] 
+ [29] (  0.0,  18.0+] ( 18.0,  28.0]  (  0.0,   8.0+] (  8.0,1032.0] 
+ [33] (  0.0,  12.0+] ( 12.0,  51.0]  (  0.0,   3.0+] (  3.0, 733.0] 
+ [37] (  0.0,  83.0+] ( 83.0, 219.0]  (  0.0,  25.0+] ( 25.0,1800.0+]
+ [41] (  0.0,1401.0+] (  0.0, 263.0]  (  0.0,  71.0+] ( 71.0,  72.0] 
+ [45] (  0.0,  35.0]  (  0.0,  16.0+] ( 16.0, 852.0]  (  0.0,  16.0] 
+ [49] (  0.0,  17.0+] ( 17.0,  77.0]  (  0.0,  51.0+] ( 51.0,1587.0+]
+ [53] (  0.0,  23.0+] ( 23.0,1572.0+] (  0.0,  12.0]  (  0.0,  46.0+]
+ [57] ( 46.0, 100.0]  (  0.0,  19.0+] ( 19.0,  66.0]  (  0.0,   4.5+]
+ [61] (  4.5,   5.0]  (  0.0,   2.0+] (  2.0,  53.0]  (  0.0,  41.0+]
+ [65] ( 41.0,1408.0+] (  0.0,  58.0+] ( 58.0,1322.0+] (  0.0,   3.0] 
+ [69] (  0.0,   2.0]  (  0.0,  40.0]  (  0.0,   1.0+] (  1.0,  45.0] 
+ [73] (  0.0,   2.0+] (  2.0, 996.0]  (  0.0,  21.0+] ( 21.0,  72.0] 
+ [77] (  0.0,   9.0]  (  0.0,  36.0+] ( 36.0,1142.0+] (  0.0,  83.0+]
+ [81] ( 83.0, 980.0]  (  0.0,  32.0+] ( 32.0, 285.0]  (  0.0, 102.0] 
+ [85] (  0.0,  41.0+] ( 41.0, 188.0]  (  0.0,   3.0]  (  0.0,  10.0+]
+ [89] ( 10.0,  61.0]  (  0.0,  67.0+] ( 67.0, 942.0+] (  0.0, 149.0] 
+ [93] (  0.0,  21.0+] ( 21.0, 343.0]  (  0.0,  78.0+] ( 78.0, 916.0+]
+ [97] (  0.0,   3.0+] (  3.0,  68.0]  (  0.0,   2.0]  (  0.0,  69.0] 
+[101] (  0.0,  27.0+] ( 27.0, 842.0+] (  0.0,  33.0+] ( 33.0, 584.0] 
+[105] (  0.0,  12.0+] ( 12.0,  78.0]  (  0.0,  32.0]  (  0.0,  57.0+]
+[109] ( 57.0, 285.0]  (  0.0,   3.0+] (  3.0,  68.0]  (  0.0,  10.0+]
+[113] ( 10.0, 670.0+] (  0.0,   5.0+] (  5.0,  30.0]  (  0.0,  31.0+]
+[117] ( 31.0, 620.0+] (  0.0,   4.0+] (  4.0, 596.0+] (  0.0,  27.0+]
+[121] ( 27.0,  90.0]  (  0.0,   5.0+] (  5.0,  17.0]  (  0.0,   2.0] 
+[125] (  0.0,  46.0+] ( 46.0, 545.0+] (  0.0,  21.0]  (  0.0, 210.0+]
+[129] (210.0, 515.0+] (  0.0,  67.0+] ( 67.0,  96.0]  (  0.0,  26.0+]
+[133] ( 26.0, 482.0+] (  0.0,   6.0+] (  6.0, 445.0+] (  0.0, 428.0+]
+[137] (  0.0,  32.0+] ( 32.0,  80.0]  (  0.0,  37.0+] ( 37.0, 334.0] 
+[141] (  0.0,   5.0]  (  0.0,   8.0+] (  8.0, 397.0+] (  0.0,  60.0+]
+[145] ( 60.0, 110.0]  (  0.0,  31.0+] ( 31.0, 370.0+] (  0.0, 139.0+]
+[149] (139.0, 207.0]  (  0.0, 160.0+] (160.0, 186.0]  (  0.0, 340.0] 
+[153] (  0.0, 310.0+] (310.0, 340.0+] (  0.0,  28.0+] ( 28.0, 265.0+]
+[157] (  0.0,   4.0+] (  4.0, 165.0]  (  0.0,   2.0+] (  2.0,  16.0] 
+[161] (  0.0,  13.0+] ( 13.0, 180.0+] (  0.0,  21.0+] ( 21.0, 131.0+]
+[165] (  0.0,  96.0+] ( 96.0, 109.0+] (  0.0,  21.0]  (  0.0,  38.0+]
+[169] ( 38.0,  39.0+] (  0.0,  31.0+] (  0.0,  11.0+] (  0.0,   6.0] 
+> 
+> 
+> 
+> cleanEx()
+> nameEx("aareg")
+> ### * aareg
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: aareg
+> ### Title: Aalen's additive regression model for censored data
+> ### Aliases: aareg
+> ### Keywords: survival
+> 
+> ### ** Examples
+> 
+> # Fit a model to the lung cancer data set
+> lfit <- aareg(Surv(time, status) ~ age + sex + ph.ecog, data=lung,
++                      nmin=1)
+> ## Not run: 
+> ##D lfit
+> ##D Call:
+> ##D aareg(formula = Surv(time, status) ~ age + sex + ph.ecog, data = lung, nmin = 1
+> ##D         )
+> ##D 
+> ##D   n=227 (1 observations deleted due to missing values)
+> ##D     138 out of 138 unique event times used
+> ##D 
+> ##D               slope      coef se(coef)     z        p 
+> ##D Intercept  5.26e-03  5.99e-03 4.74e-03  1.26 0.207000
+> ##D       age  4.26e-05  7.02e-05 7.23e-05  0.97 0.332000
+> ##D       sex -3.29e-03 -4.02e-03 1.22e-03 -3.30 0.000976
+> ##D   ph.ecog  3.14e-03  3.80e-03 1.03e-03  3.70 0.000214
+> ##D 
+> ##D Chisq=26.73 on 3 df, p=6.7e-06; test weights=aalen
+> ##D 
+> ##D plot(lfit[4], ylim=c(-4,4))  # Draw a plot of the function for ph.ecog
+> ## End(Not run)
+> lfit2 <- aareg(Surv(time, status) ~ age + sex + ph.ecog, data=lung,
++                   nmin=1, taper=1:10)
+> ## Not run: lines(lfit2[4], col=2)  # Nearly the same, until the last point
+> 
+> # A fit to the mulitple-infection data set of children with
+> # Chronic Granuomatous Disease.  See section 8.5 of Therneau and Grambsch.
+> fita2 <- aareg(Surv(tstart, tstop, status) ~ treat + age + inherit +
++                          steroids + cluster(id), data=cgd)
+> ## Not run: 
+> ##D   n= 203 
+> ##D     69 out of 70 unique event times used
+> ##D 
+> ##D                      slope      coef se(coef) robust se     z        p
+> ##D Intercept         0.004670  0.017800 0.002780  0.003910  4.55 5.30e-06
+> ##D treatrIFN-g      -0.002520 -0.010100 0.002290  0.003020 -3.36 7.87e-04
+> ##D age              -0.000101 -0.000317 0.000115  0.000117 -2.70 6.84e-03
+> ##D inheritautosomal  0.001330  0.003830 0.002800  0.002420  1.58 1.14e-01
+> ##D steroids          0.004620  0.013200 0.010600  0.009700  1.36 1.73e-01
+> ##D 
+> ##D Chisq=16.74 on 4 df, p=0.0022; test weights=aalen
+> ## End(Not run)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("aggregate.survfit")
+> ### * aggregate.survfit
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: aggregate.survfit
+> ### Title: Average survival curves
+> ### Aliases: aggregate.survfit
+> ### Keywords: survival
+> 
+> ### ** Examples
+> 
+> cfit <- coxph(Surv(futime, death) ~ sex + age*hgb, data=mgus2)
+> # marginal effect of sex, after adjusting for the others
+> dummy <- rbind(mgus2, mgus2)
+> dummy$sex <- rep(c("F", "M"), each=nrow(mgus2)) # population data set
+> dummy <- na.omit(dummy)   # don't count missing hgb in our "population
+> csurv <- survfit(cfit, newdata=dummy)
+> dim(csurv)  # 2 * 1384 survival curves
+data 
+2676 
+> csurv2 <- aggregate(csurv, dummy$sex)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("anova.coxph")
+> ### * anova.coxph
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: anova.coxph
+> ### Title: Analysis of Deviance for a Cox model.
+> ### Aliases: anova.coxph anova.coxphlist
+> ### Keywords: models regression survival
+> 
+> ### ** Examples
+> 
+> fit <- coxph(Surv(futime, fustat) ~ resid.ds *rx + ecog.ps, data = ovarian) 
+> anova(fit)
+Analysis of Deviance Table
+ Cox model: response is Surv(futime, fustat)
+Terms added sequentially (first to last)
+
+             loglik  Chisq Df Pr(>|Chi|)  
+NULL        -34.985                       
+resid.ds    -33.105 3.7594  1    0.05251 .
+rx          -32.269 1.6733  1    0.19582  
+ecog.ps     -31.970 0.5980  1    0.43934  
+resid.ds:rx -30.946 2.0469  1    0.15251  
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+> fit2 <- coxph(Surv(futime, fustat) ~ resid.ds +rx + ecog.ps, data=ovarian)
+> anova(fit2,fit)
+Analysis of Deviance Table
+ Cox model: response is  Surv(futime, fustat)
+ Model 1: ~ resid.ds + rx + ecog.ps
+ Model 2: ~ resid.ds * rx + ecog.ps
+   loglik  Chisq Df Pr(>|Chi|)
+1 -31.970                     
+2 -30.946 2.0469  1     0.1525
+>  
+> 
+> 
+> cleanEx()
+> nameEx("attrassign")
+> ### * attrassign
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: attrassign
+> ### Title: Create new-style "assign" attribute
+> ### Aliases: attrassign.default attrassign attrassign.lm
+> ### Keywords: models
+> 
+> ### ** Examples
+> 
+> formula <- Surv(time,status)~factor(ph.ecog)
+> tt <- terms(formula)
+> mf <- model.frame(tt,data=lung)
+> mm <- model.matrix(tt,mf)
+> ## a few rows of data
+> mm[1:3,]
+  (Intercept) factor(ph.ecog)1 factor(ph.ecog)2 factor(ph.ecog)3
+1           1                1                0                0
+2           1                0                0                0
+3           1                0                0                0
+> ## old-style assign attribute
+> attr(mm,"assign")
+[1] 0 1 1 1
+> ## alternate style assign attribute
+> attrassign(mm,tt)
+$`(Intercept)`
+[1] 1
+
+$`factor(ph.ecog)`
+[1] 2 3 4
+
+> 
+> 
+> 
+> cleanEx()
+> nameEx("blogit")
+> ### * blogit
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: blogit
+> ### Title: Bounded link functions
+> ### Aliases: blogit bcloglog bprobit blog
+> ### Keywords: survival
+> 
+> ### ** Examples
+> 
+> py <- pseudo(survfit(Surv(time, status) ~1, lung), time=730) #2 year survival
+> range(py)
+[1] -0.335248  1.693831
+> pfit <- glm(py ~ ph.ecog, data=lung, family=gaussian(link=blogit()))
+> # For each +1 change in performance score, the odds of 2 year survival
+> #  are multiplied by 1/2  = exp of the coefficient.
+> 
+> 
+> 
+> cleanEx()
+> nameEx("cch")
+> ### * cch
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: cch
+> ### Title: Fits proportional hazards regression model to case-cohort data
+> ### Aliases: cch
+> ### Keywords: survival
+> 
+> ### ** Examples
+> 
+> ## The complete Wilms Tumor Data 
+> ## (Breslow and Chatterjee, Applied Statistics, 1999)
+> ## subcohort selected by simple random sampling.
+> ##
+> 
+> subcoh <- nwtco$in.subcohort
+> selccoh <- with(nwtco, rel==1|subcoh==1)
+> ccoh.data <- nwtco[selccoh,]
+> ccoh.data$subcohort <- subcoh[selccoh]
+> ## central-lab histology 
+> ccoh.data$histol <- factor(ccoh.data$histol,labels=c("FH","UH"))
+> ## tumour stage
+> ccoh.data$stage <- factor(ccoh.data$stage,labels=c("I","II","III","IV"))
+> ccoh.data$age <- ccoh.data$age/12 # Age in years
+> 
+> ##
+> ## Standard case-cohort analysis: simple random subcohort 
+> ##
+> 
+> fit.ccP <- cch(Surv(edrel, rel) ~ stage + histol + age, data =ccoh.data,
++    subcoh = ~subcohort, id=~seqno, cohort.size=4028)
+> 
+> 
+> fit.ccP
+Case-cohort analysis,x$method, Prentice 
+ with subcohort of 668 from cohort of 4028 
+
+Call: cch(formula = Surv(edrel, rel) ~ stage + histol + age, data = ccoh.data, 
+    subcoh = ~subcohort, id = ~seqno, cohort.size = 4028)
+
+Coefficients:
+              Value         SE        Z            p
+stageII  0.73457084 0.16849620 4.359569 1.303187e-05
+stageIII 0.59708356 0.17345094 3.442377 5.766257e-04
+stageIV  1.38413197 0.20481982 6.757803 1.400990e-11
+histolUH 1.49806307 0.15970515 9.380180 0.000000e+00
+age      0.04326787 0.02373086 1.823274 6.826184e-02
+> 
+> fit.ccSP <- cch(Surv(edrel, rel) ~ stage + histol + age, data =ccoh.data,
++    subcoh = ~subcohort, id=~seqno, cohort.size=4028, method="SelfPren")
+> 
+> summary(fit.ccSP)
+Case-cohort analysis,x$method, SelfPrentice 
+ with subcohort of 668 from cohort of 4028 
+
+Call: cch(formula = Surv(edrel, rel) ~ stage + histol + age, data = ccoh.data, 
+    subcoh = ~subcohort, id = ~seqno, cohort.size = 4028, method = "SelfPren")
+
+Coefficients:
+          Coef    HR  (95%   CI)     p
+stageII  0.736 2.088 1.501 2.905 0.000
+stageIII 0.597 1.818 1.294 2.553 0.001
+stageIV  1.392 4.021 2.692 6.008 0.000
+histolUH 1.506 4.507 3.295 6.163 0.000
+age      0.043 1.044 0.997 1.094 0.069
+> 
+> ##
+> ## (post-)stratified on instit
+> ##
+> stratsizes<-table(nwtco$instit)
+> fit.BI<- cch(Surv(edrel, rel) ~ stage + histol + age, data =ccoh.data,
++    subcoh = ~subcohort, id=~seqno, stratum=~instit, cohort.size=stratsizes,
++    method="I.Borgan")
+> 
+> summary(fit.BI)
+Exposure-stratified case-cohort analysis, I.Borgan method.
+             1   2
+subcohort  952 202
+cohort    3622 406
+Call: cch(formula = Surv(edrel, rel) ~ stage + histol + age, data = ccoh.data, 
+    subcoh = ~subcohort, id = ~seqno, stratum = ~instit, cohort.size = stratsizes, 
+    method = "I.Borgan")
+
+Coefficients:
+          Coef    HR  (95%   CI)     p
+stageII  0.737 2.090 1.501 2.909 0.000
+stageIII 0.602 1.825 1.301 2.561 0.000
+stageIV  1.395 4.036 2.702 6.029 0.000
+histolUH 1.522 4.580 3.450 6.080 0.000
+age      0.043 1.044 0.996 1.093 0.072
+> 
+> 
+> 
+> cleanEx()
+> nameEx("cipoisson")
+> ### * cipoisson
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: cipoisson
+> ### Title: Confidence limits for the Poisson
+> ### Aliases: cipoisson
+> 
+> ### ** Examples
+> 
+> cipoisson(4) # 95% confidence limit 
+    lower     upper 
+ 1.089865 10.241589 
+> # lower    upper  
+> # 1.089865 10.24153 
+> ppois(4, 10.24153)     #chance of seeing 4 or fewer events with large rate  
+[1] 0.02500096
+> # [1] 0.02500096 
+> 1-ppois(3, 1.08986)    #chance of seeing 4 or more, with a small rate 
+[1] 0.02499961
+> # [1] 0.02499961
+> 
+> 
+> 
+> 
+> cleanEx()
+> nameEx("clogit")
+> ### * clogit
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: clogit
+> ### Title: Conditional logistic regression
+> ### Aliases: clogit
+> ### Keywords: survival models
+> 
+> ### ** Examples
+> 
+> ## Not run: clogit(case ~ spontaneous + induced + strata(stratum), data=infert)
+> 
+> # A multinomial response recoded to use clogit
+> #  The revised data set has one copy per possible outcome level, with new
+> #  variable tocc = target occupation for this copy, and case = whether
+> #  that is the actual outcome for each subject.
+> # See the reference below for the data.
+> resp <- levels(logan$occupation)
+> n <- nrow(logan)
+> indx <- rep(1:n, length(resp))
+> logan2 <- data.frame(logan[indx,],
++                      id = indx,
++                      tocc = factor(rep(resp, each=n)))
+> logan2$case <- (logan2$occupation == logan2$tocc)
+> clogit(case ~ tocc + tocc:education + strata(id), logan2)
+Call:
+clogit(case ~ tocc + tocc:education + strata(id), logan2)
+
+                                 coef  exp(coef)   se(coef)       z        p
+toccfarm                   -1.8964629  0.1500986  1.3807822  -1.373  0.16961
+toccoperatives              1.1667502  3.2115388  0.5656465   2.063  0.03914
+toccprofessional           -8.1005492  0.0003034  0.6987244 -11.593  < 2e-16
+toccsales                  -5.0292297  0.0065438  0.7700862  -6.531 6.54e-11
+tocccraftsmen:education    -0.3322842  0.7172835  0.0568682  -5.843 5.13e-09
+toccfarm:education         -0.3702858  0.6905370  0.1164100  -3.181  0.00147
+toccoperatives:education   -0.4222188  0.6555906  0.0584328  -7.226 4.98e-13
+toccprofessional:education  0.2782469  1.3208122  0.0510212   5.454 4.94e-08
+toccsales:education                NA         NA  0.0000000      NA       NA
+
+Likelihood ratio test=665.5  on 8 df, p=< 2.2e-16
+n= 4190, number of events= 838 
+> 
+> 
+> 
+> cleanEx()
+> nameEx("cluster")
+> ### * cluster
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: cluster
+> ### Title: Identify clusters.
+> ### Aliases: cluster
+> ### Keywords: survival
+> 
+> ### ** Examples
+> 
+> marginal.model <- coxph(Surv(time, status) ~ rx, data= rats, cluster=litter,
++                          subset=(sex=='f'))
+> frailty.model  <- coxph(Surv(time, status) ~ rx + frailty(litter), rats,
++                          subset=(sex=='f'))
+> 
+> 
+> 
+> cleanEx()
+> nameEx("concordance")
+> ### * concordance
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: concordance
+> ### Title: Compute the concordance statistic for data or a model
+> ### Aliases: concordance concordance.coxph concordance.formula
+> ###   concordance.lm concordance.survreg
+> ### Keywords: survival
+> 
+> ### ** Examples
+> 
+> fit1 <- coxph(Surv(ptime, pstat) ~ age + sex + mspike, mgus2)
+> concordance(fit1, timewt="n") 
+Call:
+concordance.coxph(object = fit1, timewt = "n")
+
+n= 1373 
+Concordance= 0.6577 se= 0.03057
+concordant discordant     tied.x     tied.y    tied.xy 
+     54083      28129         79         31          0 
+> 
+> # logistic regression
+> fit2 <- glm(pstat ~ age + sex + mspike, binomial, data= mgus2)
+> concordance(fit2)  # equal to the AUC
+Call:
+concordance.lm(object = fit2)
+
+n= 1373 
+Concordance= 0.6861 se= 0.02592
+concordant discordant     tied.x     tied.y    tied.xy 
+     99195      45360        115     796404        804 
+> 
+> 
+> 
+> cleanEx()
+> nameEx("cox.zph")
+> ### * cox.zph
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: cox.zph
+> ### Title: Test the Proportional Hazards Assumption of a Cox Regression
+> ### Aliases: cox.zph [.cox.zph print.cox.zph
+> ### Keywords: survival
+> 
+> ### ** Examples
+> 
+> fit <- coxph(Surv(futime, fustat) ~ age + ecog.ps,  
++              data=ovarian) 
+> temp <- cox.zph(fit) 
+> print(temp)                  # display the results 
+        chisq df    p
+age     0.698  1 0.40
+ecog.ps 2.371  1 0.12
+GLOBAL  3.633  2 0.16
+> plot(temp)                   # plot curves 
+> 
+> 
+> 
+> cleanEx()
+> nameEx("coxph")
+> ### * coxph
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: coxph
+> ### Title: Fit Proportional Hazards Regression Model
+> ### Aliases: coxph print.coxph.null print.coxph.penal coxph.penalty
+> ###   coxph.getdata summary.coxph.penal
+> ### Keywords: survival
+> 
+> ### ** Examples
+> 
+> # Create the simplest test data set 
+> test1 <- list(time=c(4,3,1,1,2,2,3), 
++               status=c(1,1,1,0,1,1,0), 
++               x=c(0,2,1,1,1,0,0), 
++               sex=c(0,0,0,0,1,1,1)) 
+> # Fit a stratified model 
+> coxph(Surv(time, status) ~ x + strata(sex), test1) 
+Call:
+coxph(formula = Surv(time, status) ~ x + strata(sex), data = test1)
+
+    coef exp(coef) se(coef)     z     p
+x 0.8023    2.2307   0.8224 0.976 0.329
+
+Likelihood ratio test=1.09  on 1 df, p=0.2971
+n= 7, number of events= 5 
+> # Create a simple data set for a time-dependent model 
+> test2 <- list(start=c(1,2,5,2,1,7,3,4,8,8), 
++               stop=c(2,3,6,7,8,9,9,9,14,17), 
++               event=c(1,1,1,1,1,1,1,0,0,0), 
++               x=c(1,0,0,1,0,1,1,1,0,0)) 
+> summary(coxph(Surv(start, stop, event) ~ x, test2)) 
+Call:
+coxph(formula = Surv(start, stop, event) ~ x, data = test2)
+
+  n= 10, number of events= 7 
+
+      coef exp(coef) se(coef)      z Pr(>|z|)
+x -0.02111   0.97912  0.79518 -0.027    0.979
+
+  exp(coef) exp(-coef) lower .95 upper .95
+x    0.9791      1.021    0.2061     4.653
+
+Concordance= 0.526  (se = 0.129 )
+Likelihood ratio test= 0  on 1 df,   p=1
+Wald test            = 0  on 1 df,   p=1
+Score (logrank) test = 0  on 1 df,   p=1
+
+> 
+> #
+> # Create a simple data set for a time-dependent model
+> #
+> test2 <- list(start=c(1, 2, 5, 2, 1, 7, 3, 4, 8, 8),
++                 stop =c(2, 3, 6, 7, 8, 9, 9, 9,14,17),
++                 event=c(1, 1, 1, 1, 1, 1, 1, 0, 0, 0),
++                 x    =c(1, 0, 0, 1, 0, 1, 1, 1, 0, 0) )
+> 
+> 
+> summary( coxph( Surv(start, stop, event) ~ x, test2))
+Call:
+coxph(formula = Surv(start, stop, event) ~ x, data = test2)
+
+  n= 10, number of events= 7 
+
+      coef exp(coef) se(coef)      z Pr(>|z|)
+x -0.02111   0.97912  0.79518 -0.027    0.979
+
+  exp(coef) exp(-coef) lower .95 upper .95
+x    0.9791      1.021    0.2061     4.653
+
+Concordance= 0.526  (se = 0.129 )
+Likelihood ratio test= 0  on 1 df,   p=1
+Wald test            = 0  on 1 df,   p=1
+Score (logrank) test = 0  on 1 df,   p=1
+
+> 
+> # Fit a stratified model, clustered on patients 
+> 
+> bladder1 <- bladder[bladder$enum < 5, ] 
+> coxph(Surv(stop, event) ~ (rx + size + number) * strata(enum),
++       cluster = id, bladder1)
+Call:
+coxph(formula = Surv(stop, event) ~ (rx + size + number) * strata(enum), 
+    data = bladder1, cluster = id)
+
+                              coef exp(coef) se(coef) robust se      z       p
+rx                        -0.52598   0.59097  0.31583   0.31524 -1.669 0.09521
+size                       0.06961   1.07209  0.10156   0.08863  0.785 0.43220
+number                     0.23818   1.26894  0.07588   0.07459  3.193 0.00141
+rx:strata(enum)enum=2     -0.10633   0.89913  0.50424   0.33396 -0.318 0.75019
+rx:strata(enum)enum=3     -0.17251   0.84155  0.55780   0.39868 -0.433 0.66523
+rx:strata(enum)enum=4     -0.10945   0.89632  0.65730   0.50636 -0.216 0.82886
+size:strata(enum)enum=2   -0.14737   0.86298  0.16803   0.11409 -1.292 0.19646
+size:strata(enum)enum=3   -0.28345   0.75318  0.20894   0.15220 -1.862 0.06255
+size:strata(enum)enum=4   -0.27607   0.75876  0.25222   0.18904 -1.460 0.14418
+number:strata(enum)enum=2 -0.10125   0.90370  0.11904   0.11759 -0.861 0.38920
+number:strata(enum)enum=3 -0.06467   0.93738  0.12925   0.12035 -0.537 0.59101
+number:strata(enum)enum=4  0.09429   1.09888  0.14594   0.11973  0.788 0.43097
+
+Likelihood ratio test=30.09  on 12 df, p=0.002708
+n= 340, number of events= 112 
+> 
+> # Fit a time transform model using current age
+> coxph(Surv(time, status) ~ ph.ecog + tt(age), data=lung,
++      tt=function(x,t,...) pspline(x + t/365.25))
+Call:
+coxph(formula = Surv(time, status) ~ ph.ecog + tt(age), data = lung, 
+    tt = function(x, t, ...) pspline(x + t/365.25))
+
+                   coef se(coef)     se2   Chisq   DF       p
+ph.ecog          0.4528   0.1178  0.1174 14.7704 1.00 0.00012
+tt(age), linear  0.0112   0.0093  0.0093  1.4414 1.00 0.22991
+tt(age), nonlin                           2.6992 3.08 0.45431
+
+Iterations: 4 outer, 10 Newton-Raphson
+     Theta= 0.796 
+Degrees of freedom for terms= 1.0 4.1 
+Likelihood ratio test=22.5  on 5.07 df, p=5e-04
+n= 227, number of events= 164 
+   (1 observation deleted due to missingness)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("coxph.detail")
+> ### * coxph.detail
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: coxph.detail
+> ### Title: Details of a Cox Model Fit
+> ### Aliases: coxph.detail
+> ### Keywords: survival
+> 
+> ### ** Examples
+> 
+> fit   <- coxph(Surv(futime,fustat) ~ age + rx + ecog.ps, ovarian, x=TRUE)
+> fitd  <- coxph.detail(fit)
+> #  There is one Schoenfeld residual for each unique death.  It is a
+> # vector (covariates for the subject who died) - (weighted mean covariate
+> # vector at that time).  The weighted mean is defined over the subjects
+> # still at risk, with exp(X beta) as the weight.
+> 
+> events <- fit$y[,2]==1
+> etime  <- fit$y[events,1]   #the event times --- may have duplicates
+> indx   <- match(etime, fitd$time)
+> schoen <- fit$x[events,] - fitd$means[indx,]
+> 
+> 
+> 
+> cleanEx()
+> nameEx("diabetic")
+> ### * diabetic
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: diabetic
+> ### Title: Ddiabetic retinopathy
+> ### Aliases: diabetic
+> ### Keywords: datasets survival
+> 
+> ### ** Examples
+> 
+> # juvenile diabetes is defined as and age less than 20
+> juvenile <- 1*(diabetic$age < 20)
+> coxph(Surv(time, status) ~ trt + juvenile, cluster= id,
++             data= diabetic)
+Call:
+coxph(formula = Surv(time, status) ~ trt + juvenile, data = diabetic, 
+    cluster = id)
+
+             coef exp(coef) se(coef) robust se      z        p
+trt      -0.77893   0.45890  0.16893   0.14851 -5.245 1.56e-07
+juvenile -0.05388   0.94754  0.16211   0.17864 -0.302    0.763
+
+Likelihood ratio test=22.48  on 2 df, p=1.312e-05
+n= 394, number of events= 155 
+> 
+> 
+> 
+> cleanEx()
+> nameEx("dsurvreg")
+> ### * dsurvreg
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: dsurvreg
+> ### Title: Distributions available in survreg.
+> ### Aliases: dsurvreg psurvreg qsurvreg rsurvreg
+> ### Keywords: distribution
+> 
+> ### ** Examples
+> 
+> # List of distributions available
+> names(survreg.distributions)
+ [1] "extreme"     "logistic"    "gaussian"    "weibull"     "exponential"
+ [6] "rayleigh"    "loggaussian" "lognormal"   "loglogistic" "t"          
+> ## Not run: 
+> ##D  [1] "extreme"     "logistic"    "gaussian"    "weibull"     "exponential"
+> ##D  [6] "rayleigh"    "loggaussian" "lognormal"   "loglogistic" "t"          
+> ## End(Not run)
+> # Compare results
+> all.equal(dsurvreg(1:10, 2, 5, dist='lognormal'), dlnorm(1:10, 2, 5))
+[1] TRUE
+> 
+> # Hazard function for a Weibull distribution
+> x   <- seq(.1, 3, length=30)
+> haz <- dsurvreg(x, 2, 3)/ (1-psurvreg(x, 2, 3))
+> ## Not run: 
+> ##D plot(x, haz, log='xy', ylab="Hazard") #line with slope (1/scale -1)
+> ## End(Not run)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("finegray")
+> ### * finegray
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: finegray
+> ### Title: Create data for a Fine-Gray model
+> ### Aliases: finegray
+> ### Keywords: survival
+> 
+> ### ** Examples
+> 
+> # Treat time to death and plasma cell malignancy as competing risks
+> etime <- with(mgus2, ifelse(pstat==0, futime, ptime))
+> event <- with(mgus2, ifelse(pstat==0, 2*death, 1))
+> event <- factor(event, 0:2, labels=c("censor", "pcm", "death"))
+> 
+> # FG model for PCM
+> pdata <- finegray(Surv(etime, event) ~ ., data=mgus2)
+> fgfit <- coxph(Surv(fgstart, fgstop, fgstatus) ~ age + sex,
++                      weight=fgwt, data=pdata)
+> 
+> # Compute the weights separately by sex
+> adata <- finegray(Surv(etime, event) ~ . + strata(sex),
++              data=mgus2, na.action=na.pass)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("flchain")
+> ### * flchain
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: flchain
+> ### Title: Assay of serum free light chain for 7874 subjects.
+> ### Aliases: flchain
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> data(flchain)
+> age.grp <-  cut(flchain$age, c(49,54, 59,64, 69,74,79, 89, 110),
++                labels= paste(c(50,55,60,65,70,75,80,90),
++                              c(54,59,64,69,74,79,89,109), sep='-'))
+> table(flchain$sex, age.grp)
+   age.grp
+    50-54 55-59 60-64 65-69 70-74 75-79 80-89 90-109
+  F   881   766   625   589   541   408   459     81
+  M   796   714   591   524   405   269   202     23
+> 
+> 
+> 
+> cleanEx()
+> nameEx("frailty")
+> ### * frailty
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: frailty
+> ### Title: Random effects terms
+> ### Aliases: frailty frailty.gamma frailty.gaussian frailty.t
+> ### Keywords: survival
+> 
+> ### ** Examples
+> 
+> # Random institutional effect
+> coxph(Surv(time, status) ~ age + frailty(inst, df=4), lung)
+Call:
+coxph(formula = Surv(time, status) ~ age + frailty(inst, df = 4), 
+    data = lung)
+
+                         coef se(coef)     se2   Chisq   DF     p
+age                   0.01937  0.00933 0.00925 4.31149 1.00 0.038
+frailty(inst, df = 4)                          3.33459 3.99 0.501
+
+Iterations: 3 outer, 10 Newton-Raphson
+     Variance of random effect= 0.038   I-likelihood = -743.6 
+Degrees of freedom for terms= 1 4 
+Likelihood ratio test=9.96  on 4.97 df, p=0.08
+n= 227, number of events= 164 
+   (1 observation deleted due to missingness)
+> 
+> # Litter effects for the rats data
+> rfit2a <- coxph(Surv(time, status) ~ rx +
++                   frailty.gaussian(litter, df=13, sparse=FALSE), rats,
++                   subset= (sex=='f'))
+> rfit2b <- coxph(Surv(time, status) ~ rx +
++                   frailty.gaussian(litter, df=13, sparse=TRUE), rats,
++                   subset= (sex=='f'))
+> 
+> 
+> 
+> cleanEx()
+> nameEx("is.ratetable")
+> ### * is.ratetable
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: is.ratetable
+> ### Title: Verify that an object is of class ratetable.
+> ### Aliases: is.ratetable Math.ratetable Ops.ratetable
+> ### Keywords: survival
+> 
+> ### ** Examples
+> 
+> is.ratetable(survexp.us)  # True
+[1] TRUE
+> is.ratetable(lung)        # False
+[1] FALSE
+> 
+> 
+> 
+> cleanEx()
+> nameEx("kidney")
+> ### * kidney
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: kidney
+> ### Title: Kidney catheter data
+> ### Aliases: kidney
+> ### Keywords: survival
+> 
+> ### ** Examples
+> 
+> kfit <- coxph(Surv(time, status)~ age + sex + disease + frailty(id), kidney)
+> kfit0 <- coxph(Surv(time, status)~ age + sex + disease, kidney)
+> kfitm1 <- coxph(Surv(time,status) ~ age + sex + disease + 
++ 		frailty(id, dist='gauss'), kidney)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("levels.Surv")
+> ### * levels.Surv
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: levels.Surv
+> ### Title: Return the states of a multi-state Surv object
+> ### Aliases: levels.Surv
+> ### Keywords: survival
+> 
+> ### ** Examples
+> 
+> y1 <- Surv(c(1,5, 9, 17,21, 30),
++            factor(c(0, 1, 2,1,0,2), 0:2, c("censored", "progression", "death")))
+> levels(y1)
+[1] "progression" "death"      
+> 
+> y2 <- Surv(1:6, rep(0:1, 3))
+> y2
+[1] 1+ 2  3+ 4  5+ 6 
+> levels(y2)
+NULL
+> 
+> 
+> 
+> cleanEx()
+> nameEx("lines.survfit")
+> ### * lines.survfit
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: lines.survfit
+> ### Title: Add Lines or Points to a Survival Plot
+> ### Aliases: lines.survfit points.survfit lines.survexp
+> ### Keywords: survival
+> 
+> ### ** Examples
+> 
+> fit <- survfit(Surv(time, status==2) ~ sex, pbc,subset=1:312)
+> plot(fit, mark.time=FALSE, xscale=365.25,
++         xlab='Years', ylab='Survival')
+> lines(fit[1], lwd=2)    #darken the first curve and add marks
+> 
+> 
+> # Add expected survival curves for the two groups,
+> #   based on the US census data
+> # The data set does not have entry date, use the midpoint of the study
+> efit <- survexp(~sex, data=pbc, times= (0:24)*182, ratetable=survexp.us, 
++                  rmap=list(sex=sex, age=age*365.35, year=as.Date('1979/01/01')))
+> temp <- lines(efit, lty=2, lwd=2:1)
+> text(temp, c("Male", "Female"), adj= -.1) #labels just past the ends
+> title(main="Primary Biliary Cirrhosis, Observed and Expected")
+> 
+> 
+> 
+> 
+> cleanEx()
+> nameEx("mgus")
+> ### * mgus
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: mgus
+> ### Title: Monoclonal gammopathy data
+> ### Aliases: mgus mgus1
+> ### Keywords: datasets survival
+> 
+> ### ** Examples
+> 
+> # Create the competing risk curves for time to first of death or PCM
+> sfit <- survfit(Surv(start, stop, event) ~ sex, mgus1, id=id,
++                 subset=(enum==1))
+> print(sfit)  # the order of printout is the order in which they plot
+Call: survfit(formula = Surv(start, stop, event) ~ sex, data = mgus1, 
+    subset = (enum == 1), id = id)
+
+                    n nevent   rmean*
+sex=female, (s0)  104      0 5762.379
+sex=male, (s0)    137      0 4543.293
+sex=female, pcm   104     33 2881.500
+sex=male, pcm     137     31 2478.026
+sex=female, death 104     63 5681.121
+sex=male, death   137    100 7303.682
+   *restricted mean time in state (max time = 14325 )
+> 
+> plot(sfit, xscale=365.25, lty=c(2,2,1,1), col=c(1,2,1,2),
++      xlab="Years after MGUS detection", ylab="Proportion")
+> legend(0, .8, c("Death/male", "Death/female", "PCM/male", "PCM/female"),
++        lty=c(1,1,2,2), col=c(2,1,2,1), bty='n')
+> 
+> title("Curves for the first of plasma cell malignancy or death")
+> # The plot shows that males have a higher death rate than females (no
+> # surprise) but their rates of conversion to PCM are essentially the same.
+> 
+> 
+> 
+> cleanEx()
+> nameEx("model.matrix.coxph")
+> ### * model.matrix.coxph
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: model.matrix.coxph
+> ### Title: Model.matrix method for coxph models
+> ### Aliases: model.matrix.coxph
+> ### Keywords: survival
+> 
+> ### ** Examples
+> 
+> fit1 <- coxph(Surv(time, status) ~ age + factor(ph.ecog), data=lung)
+> xfit <- model.matrix(fit1)
+> 
+> fit2 <- coxph(Surv(time, status) ~ age + factor(ph.ecog), data=lung,
++                                  x=TRUE)
+> all.equal(model.matrix(fit1), fit2$x)
+[1] TRUE
+> 
+> 
+> 
+> cleanEx()
+> nameEx("myeloid")
+> ### * myeloid
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: myeloid
+> ### Title: Acute myeloid leukemia
+> ### Aliases: myeloid
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> coxph(Surv(futime, death) ~ trt, data=myeloid)
+Call:
+coxph(formula = Surv(futime, death) ~ trt, data = myeloid)
+
+        coef exp(coef) se(coef)      z       p
+trtB -0.3457    0.7077   0.1122 -3.081 0.00206
+
+Likelihood ratio test=9.52  on 1 df, p=0.002029
+n= 646, number of events= 320 
+> # See the mstate vignette for a more complete analysis
+> 
+> 
+> 
+> cleanEx()
+> nameEx("myeloma")
+> ### * myeloma
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: myeloma
+> ### Title: Survival times of patients with multiple myeloma
+> ### Aliases: myeloma
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> # Incorrect survival curve, which ignores left truncation
+> fit1 <- survfit(Surv(futime, death) ~ 1, myeloma)
+> # Correct curve
+> fit2 <- survfit(Surv(entry, futime, death) ~1, myeloma)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("neardate")
+> ### * neardate
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: neardate
+> ### Title: Find the index of the closest value in data set 2, for each
+> ###   entry in data set one.
+> ### Aliases: neardate
+> ### Keywords: manip utilities
+> 
+> ### ** Examples
+> 
+> data1 <- data.frame(id = 1:10,
++                     entry.dt = as.Date(paste("2011", 1:10, "5", sep='-')))
+> temp1 <- c(1,4,5,1,3,6,9, 2,7,8,12,4,6,7,10,12,3)
+> data2 <- data.frame(id = c(1,1,1,2,2,4,4,5,5,5,6,8,8,9,10,10,12),
++                     lab.dt = as.Date(paste("2011", temp1, "1", sep='-')),
++                     chol = round(runif(17, 130, 280)))
+> 
+> #first cholesterol on or after enrollment
+> indx1 <- neardate(data1$id, data2$id, data1$entry.dt, data2$lab.dt)
+> data2[indx1, "chol"]
+ [1] 186 160  NA 265 224 161  NA  NA  NA 205
+> 
+> # Closest one, either before or after. 
+> # 
+> indx2 <- neardate(data1$id, data2$id, data1$entry.dt, data2$lab.dt, 
++                    best="prior")
+> ifelse(is.na(indx1), indx2, # none after, take before
++        ifelse(is.na(indx2), indx1, #none before
++        ifelse(abs(data2$lab.dt[indx2]- data1$entry.dt) <
++               abs(data2$lab.dt[indx1]- data1$entry.dt), indx2, indx1)))
+ [1]  1  5 NA  6  9 11 NA 13 14 15
+> 
+> # closest date before or after, but no more than 21 days prior to index
+> indx2 <- ifelse((data1$entry.dt - data2$lab.dt[indx2]) >21, NA, indx2)
+> ifelse(is.na(indx1), indx2, # none after, take before
++        ifelse(is.na(indx2), indx1, #none before
++        ifelse(abs(data2$lab.dt[indx2]- data1$entry.dt) <
++               abs(data2$lab.dt[indx1]- data1$entry.dt), indx2, indx1)))
+ [1]  1  5 NA  6  9 11 NA NA NA 15
+> 
+> 
+> 
+> cleanEx()
+> nameEx("nsk")
+> ### * nsk
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: nsk
+> ### Title: Natural splines with knot heights as the basis.
+> ### Aliases: nsk
+> ### Keywords: smooth
+> 
+> ### ** Examples
+> 
+> # make some dummy data
+> tdata <- data.frame(x= lung$age, y = 10*log(lung$age-35) + rnorm(228, 0, 2))
+> fit1 <- lm(y ~ -1 + nsk(x, df=4, intercept=TRUE) , data=tdata)
+> fit2 <- lm(y ~ nsk(x, df=3), data=tdata)
+> 
+> # the knots (same for both fits)
+> knots <- unlist(attributes(fit1$model[[2]])[c('Boundary.knots', 'knots')])
+> sort(unname(knots))
+[1] 45.35 59.00 67.00 75.00
+> unname(coef(fit1))  # predictions at the knot points
+[1] 22.23565 32.18784 34.82994 36.93020
+> 
+> unname(coef(fit1)[-1] - coef(fit1)[1])  # differences: yhat[2:4] - yhat[1]
+[1]  9.952189 12.594290 14.694549
+> unname(coef(fit2))[-1]                  # ditto
+[1]  9.952189 12.594290 14.694549
+> 
+> ## Not run: 
+> ##D plot(y ~ x, data=tdata)
+> ##D points(sort(knots), coef(fit1), col=2, pch=19)
+> ##D coef(fit)[1] + c(0, coef(fit)[-1])
+> ## End(Not run)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("nwtco")
+> ### * nwtco
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: nwtco
+> ### Title: Data from the National Wilm's Tumor Study
+> ### Aliases: nwtco
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> with(nwtco, table(instit,histol))
+      histol
+instit    1    2
+     1 3493  129
+     2   76  330
+> anova(coxph(Surv(edrel,rel)~histol+instit,data=nwtco))
+Analysis of Deviance Table
+ Cox model: response is Surv(edrel, rel)
+Terms added sequentially (first to last)
+
+        loglik    Chisq Df Pr(>|Chi|)    
+NULL   -4666.3                           
+histol -4532.5 267.6667  1    < 2e-16 ***
+instit -4531.0   3.0397  1    0.08125 .  
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+> anova(coxph(Surv(edrel,rel)~instit+histol,data=nwtco))
+Analysis of Deviance Table
+ Cox model: response is Surv(edrel, rel)
+Terms added sequentially (first to last)
+
+        loglik   Chisq Df Pr(>|Chi|)    
+NULL   -4666.3                          
+instit -4577.5 177.714  1  < 2.2e-16 ***
+histol -4531.0  92.992  1  < 2.2e-16 ***
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+> 
+> 
+> 
+> cleanEx()
+> nameEx("pbcseq")
+> ### * pbcseq
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: pbcseq
+> ### Title: Mayo Clinic Primary Biliary Cirrhosis, sequential data
+> ### Aliases: pbcseq
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> # Create the start-stop-event triplet needed for coxph
+> first <- with(pbcseq, c(TRUE, diff(id) !=0)) #first id for each subject
+> last  <- c(first[-1], TRUE)  #last id
+> 
+> time1 <- with(pbcseq, ifelse(first, 0, day))
+> time2 <- with(pbcseq, ifelse(last,  futime, c(day[-1], 0)))
+> event <- with(pbcseq, ifelse(last,  status, 0))
+> 
+> fit1 <- coxph(Surv(time1, time2, event) ~ age + sex + log(bili), pbcseq)
+Warning in Surv(time1, time2, event) :
+  Invalid status value, converted to NA
+> 
+> 
+> 
+> cleanEx()
+> nameEx("plot.cox.zph")
+> ### * plot.cox.zph
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: plot.cox.zph
+> ### Title: Graphical Test of Proportional Hazards
+> ### Aliases: plot.cox.zph
+> ### Keywords: survival
+> 
+> ### ** Examples
+> 
+> vfit <- coxph(Surv(time,status) ~ trt + factor(celltype) + 
++               karno + age, data=veteran, x=TRUE) 
+> temp <- cox.zph(vfit) 
+> plot(temp, var=3)      # Look at Karnofsy score, old way of doing plot 
+> plot(temp[3])     # New way with subscripting 
+> abline(0, 0, lty=3) 
+> # Add the linear fit as well  
+> abline(lm(temp$y[,3] ~ temp$x)$coefficients, lty=4, col=3)  
+> title(main="VA Lung Study") 
+> 
+> 
+> 
+> cleanEx()
+> nameEx("plot.survfit")
+> ### * plot.survfit
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: plot.survfit
+> ### Title: Plot method for 'survfit' objects
+> ### Aliases: plot.survfit
+> ### Keywords: survival hplot
+> 
+> ### ** Examples
+> 
+> leukemia.surv <- survfit(Surv(time, status) ~ x, data = aml) 
+> plot(leukemia.surv, lty = 2:3) 
+> legend(100, .9, c("Maintenance", "No Maintenance"), lty = 2:3) 
+> title("Kaplan-Meier Curves\nfor AML Maintenance Study") 
+> lsurv2 <- survfit(Surv(time, status) ~ x, aml, type='fleming') 
+> plot(lsurv2, lty=2:3, fun="cumhaz", 
++ 	xlab="Months", ylab="Cumulative Hazard") 
+> 
+> 
+> 
+> cleanEx()
+> nameEx("predict.coxph")
+> ### * predict.coxph
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: predict.coxph
+> ### Title: Predictions for a Cox model
+> ### Aliases: predict.coxph predict.coxph.penal
+> ### Keywords: survival
+> 
+> ### ** Examples
+> 
+> options(na.action=na.exclude) # retain NA in predictions
+> fit <- coxph(Surv(time, status) ~ age + ph.ecog + strata(inst), lung)
+> #lung data set has status coded as 1/2
+> mresid <- (lung$status-1) - predict(fit, type='expected') #Martingale resid 
+> predict(fit,type="lp")
+           1            2            3            4            5            6 
+ 0.215495605 -0.423532231 -0.559265038  0.183469551 -0.539432878  0.248095483 
+           7            8            9           10           11           12 
+ 0.406461814  0.489169379 -0.047448917  0.327284344  0.040389888  0.550315552 
+          13           14           15           16           17           18 
+-0.115925255           NA  0.055807340  0.110906025  0.050567124  0.493760215 
+          19           20           21           22           23           24 
+ 0.557645717 -0.004245606 -0.127236322 -0.621260082 -0.319524466 -0.575882288 
+          25           26           27           28           29           30 
+-0.345688084  0.202851214 -0.428371074  1.313400384 -0.021210624  0.761244928 
+          31           32           33           34           35           36 
+ 0.191540147  0.749933860  0.180240469  0.459827013  0.672213041  0.625512121 
+          37           38           39           40           41           42 
+ 0.565173220  0.085767683  0.761244928  0.076972823  0.330513426  0.511791514 
+          43           44           45           46           47           48 
+-0.439682141  0.660901974 -0.164699618  0.496950353 -0.381077937  0.091073865 
+          49           50           51           52           53           54 
+-0.354839644 -0.175654221  0.192873470 -0.447487689 -0.450985298 -0.562055013 
+          55           56           57           58           59           60 
+ 0.063012023 -0.516810744 -0.297203343  0.474684682  0.034518529  0.076972823 
+          61           62           63           64           65           66 
+ 0.678283893 -0.045992266  0.176731471 -0.149858457  0.158940268  0.718790633 
+          67           68           69           70           71           72 
+ 0.539004484 -0.308514410 -0.543216443  0.153500561 -0.479261384 -0.078592144 
+          73           74           75           76           77           78 
+ 0.946919127 -0.073531430 -0.049489875  0.214162281 -0.641232484  0.029078821 
+          79           80           81           82           83           84 
+-0.276488357 -0.392389004 -0.439682141  0.001411510 -0.410013004 -0.151289480 
+          85           86           87           88           89           90 
+-0.292311495  0.198744830 -0.039921414 -0.530162769 -0.123010230  0.738622793 
+          91           92           93           94           95           96 
+-0.743642023  0.050567124  0.285269157  0.108857156 -0.437633273  0.796634781 
+          97           98           99          100          101          102 
+ 0.158940268  0.214162281 -0.161169524 -0.400910096 -0.562055013  0.176122695 
+         103          104          105          106          107          108 
+ 0.012722577  0.108256292  0.617817211  0.157606945 -0.189452466  0.110906025 
+         109          110          111          112          113          114 
+-0.026867740  0.797968104 -0.411394980 -0.149248522  0.369011703 -0.344354760 
+         115          116          117          118          119          120 
+ 0.006456686  0.783867062  0.503880355  0.693378524  0.527693417  0.244122624 
+         121          122          123          124          125          126 
+-0.464038972  0.449575370  0.158940268  0.500480446 -0.426322206  0.005322855 
+         127          128          129          130          131          132 
+-0.368298829  0.134984810  0.652115157 -0.617153698  0.131479291 -0.190511890 
+         133          134          135          136          137          138 
+-0.643882217  0.001411510 -0.460255408  0.666972826  0.067118407  0.583884010 
+         139          140          141          142          143          144 
+-0.036137850 -0.399002948  0.747892903  0.215495605  0.630552446  0.088283890 
+         145          146          147          148          149          150 
+-0.240346995 -0.200763533 -0.558074111 -0.179200822 -0.232577411 -0.524505653 
+         151          152          153          154          155          156 
+ 0.171077519 -0.633704981 -0.331136545 -0.190511890  0.477441161           NA 
+         157          158          159          160          161          162 
+-0.031097524  0.736573925  0.123673743 -0.013515715 -0.585704233 -0.038186718 
+         163          164          165          166          167          168 
+ 0.466547245  0.108256292 -0.209943887 -0.716429053 -0.206413793 -0.699828778 
+         169          170          171          172          173          174 
+ 0.085634157 -0.424865554  0.069277914 -0.441093652  0.107445646 -0.874783994 
+         175          176          177          178          179          180 
+-0.047448917  0.046655779  0.557645717  0.001411510 -0.047448917 -0.667994646 
+         181          182          183          184          185          186 
+-0.513194586 -0.776965291 -0.614629447  0.019390401 -0.583220496 -0.651086900 
+         187          188          189          190          191          192 
+ 0.859584155 -0.536642904  0.063145548 -0.712882451  0.024398388  0.369338475 
+         193          194          195          196          197          198 
+-0.023370131  0.076972823  0.061878192 -0.368310218 -0.003231734  0.074931865 
+         199          200          201          202          203          204 
+-0.629921417 -0.037164935  0.063145548  0.084500326 -0.574393166 -0.627131442 
+         205          206          207          208          209          210 
+-0.658814293  0.302547317 -0.410314015  0.516017606  0.131487202 -0.302547317 
+         211          212          213          214          215          216 
+-0.539432878  0.153500561  0.119700884  0.409991908 -0.149858457 -0.149858457 
+         217          218          219          220          221          222 
+-0.156943432  0.781826105  0.477858312 -0.452404719  0.016633922 -0.081992053 
+         223          224          225          226          227          228 
+ 0.212705630  0.224016697 -0.750726998  0.703662506  0.142189494 -0.085165683 
+> predict(fit,type="expected")
+         1          2          3          4          5          6          7 
+0.74602570 0.57892506 1.28411487 0.65144995 2.53474317 2.59935704 0.94925558 
+         8          9         10         11         12         13         14 
+1.07812821 0.63137435 0.55866807 0.31809979 1.96068120 2.96879741         NA 
+        15         16         17         18         19         20         21 
+2.14464916 0.39248100 1.01652225 2.53985878 0.23734050 0.15454932 0.41781121 
+        22         23         24         25         26         27         28 
+0.03725873 1.07425239 0.73304358 0.71922541 1.96068538 0.91425760 0.50868712 
+        29         30         31         32         33         34         35 
+1.07651355 0.10727131 1.64348011 0.22335391 1.34246079 0.18355514 0.25427967 
+        36         37         38         39         40         41         42 
+0.57948554 3.87217595 1.42062915 0.50341133 2.84274107 1.90670187 0.39302876 
+        43         44         45         46         47         48         49 
+1.67374788 0.56009982 1.95081502 0.39930277 0.62185372 1.18384892 1.08920268 
+        50         51         52         53         54         55         56 
+1.36922169 2.72429090 0.31557423 0.04821232 0.41960993 3.07164840 0.12000994 
+        57         58         59         60         61         62         63 
+0.07406041 0.17908976 1.74520134 1.10195998 1.47697029 0.54523697 0.51461493 
+        64         65         66         67         68         69         70 
+0.14292300 0.18117365 0.20227027 0.70028855 1.00636733 0.31133532 0.64126839 
+        71         72         73         74         75         76         77 
+0.96177399 0.46743320 0.53451717 0.16345589 0.86294287 1.44797843 1.06953116 
+        78         79         80         81         82         83         84 
+1.19014609 0.03668315 0.33061179 1.90397464 0.08944145 0.20857044 0.28585781 
+        85         86         87         88         89         90         91 
+1.15723874 0.87295638 1.19851949 0.14216346 1.37338069 0.92021616 1.05096221 
+        92         93         94         95         96         97         98 
+0.27465006 0.47403241 0.26750987 1.01622540 0.08901343 0.32456045 0.93961618 
+        99        100        101        102        103        104        105 
+0.85179714 0.14362313 0.89733451 1.74403467 0.70225748 0.15754565 0.36065915 
+       106        107        108        109        110        111        112 
+0.41227011 0.29089093 0.02759911 2.54485283 1.57705739 0.02915789 0.51482474 
+       113        114        115        116        117        118        119 
+1.51254632 0.24392791 1.95773713 0.16855572 0.69132758 2.65613080 1.04014324 
+       120        121        122        123        124        125        126 
+0.89157179 0.40187641 0.23829273 1.56065440 0.17535194 1.02778525 0.18442460 
+       127        128        129        130        131        132        133 
+0.08051722 0.20596405 1.70473379 0.86354367 0.72017118 0.27146814 0.48487446 
+       134        135        136        137        138        139        140 
+1.10114414 0.51567846 1.46035831 0.93950468 1.54314328 1.12143879 0.60372302 
+       141        142        143        144        145        146        147 
+1.46022571 0.88081136 0.66047105 0.18347489 0.51981101 0.28761918 0.50825077 
+       148        149        150        151        152        153        154 
+0.15268490 0.06671446 0.32571666 0.39746179 0.39772440 0.38939509 0.20940447 
+       155        156        157        158        159        160        161 
+0.62171971         NA 0.34080256 0.46159657 0.47539058 1.00662370 0.21472196 
+       162        163        164        165        166        167        168 
+0.54619593 0.50111574 0.24481910 0.51248548 0.19954882 0.25566706 0.78817717 
+       169        170        171        172        173        174        175 
+0.44798249 0.43113659 0.44847984 1.48341994 0.46620310 0.37028208 0.86812344 
+       176        177        178        179        180        181        182 
+0.43844817 0.94494334 0.25935783 0.37625255 0.20649507 0.25048304 0.37569346 
+       183        184        185        186        187        188        189 
+0.40334526 0.39324727 0.36799524 0.39552828 1.77501387 0.24422514 0.38021709 
+       190        191        192        193        194        195        196 
+0.21501843 0.51818689 0.08032921 0.22774986 0.71502728 0.36774267 0.39500663 
+       197        198        199        200        201        202        203 
+0.38445105 0.97727710 0.43520510 0.16869554 0.17219830 0.05878035 0.21716448 
+       204        205        206        207        208        209        210 
+0.18384556 0.18192355 0.64682101 0.35975276 0.70106697 1.03414013 0.35317899 
+       211        212        213        214        215        216        217 
+0.42921059 0.47944086 0.40234009 0.25017393 0.04470913 0.27054309 0.22137404 
+       218        219        220        221        222        223        224 
+1.18698635 0.50681607 0.11190719 0.11327702 0.28954125 0.33611081 0.74776723 
+       225        226        227        228 
+0.12225025 0.00000000 0.35218786 0.10231300 
+> predict(fit,type="risk",se.fit=TRUE)
+$fit
+        1         2         3         4         5         6         7         8 
+1.2404765 0.6547301 0.5716290 1.2013784 0.5830788 1.2815823 1.5014958 1.6309609 
+        9        10        11        12        13        14        15        16 
+0.9536592 1.3871959 1.0412167 1.7338000 0.8905418        NA 1.0573939 1.1172899 
+       17        18        19        20        21        22        23        24 
+1.0518675 1.6384656 1.7465558 0.9957634 0.8805256 0.5372670 0.7264944 0.5622086 
+       25        26        27        28        29        30        31        32 
+0.7077332 1.2248902 0.6515696 3.7187976 0.9790127 2.1409399 1.2111135 2.1168600 
+       33        34        35        36        37        38        39        40 
+1.1975053 1.5838000 1.9585669 1.8692030 1.7597526 1.0895532 2.1409399 1.0800127 
+       41        42        43        44        45        46        47        48 
+1.3916825 1.6682773 0.6442412 1.9365383 0.8481484 1.6437009 0.6831246 1.0953499 
+       49        50        51        52        53        54        55        56 
+0.7012859 0.8389080 1.2127293 0.6392321 0.6370002 0.5700364 1.0650396 0.5964197 
+       57        58        59        60        61        62        63        64 
+0.7428929 1.6075072 1.0351212 1.0800127 1.9704933 0.9550493 1.1933106 0.8608298 
+       65        66        67        68        69        70        71        72 
+1.1722679 2.0519501 1.7142994 0.7345374 0.5808769 1.1659084 0.6192406 0.9244169 
+       73        74        75        76        77        78        79        80 
+2.5777557 0.9291069 0.9517148 1.2388237 0.5266429 1.0295057 0.7584424 0.6754413 
+       81        82        83        84        85        86        87        88 
+0.6442412 1.0014125 0.6636416 0.8595988 0.7465360 1.2198707 0.9608649 0.5885092 
+       89        90        91        92        93        94        95        96 
+0.8842546 2.0930510 0.4753794 1.0518675 1.3301200 1.1150031 0.6455625 2.2180641 
+       97        98        99       100       101       102       103       104 
+1.1722679 1.2388237 0.8511478 0.6697103 0.5700364 1.1925844 1.0128039 1.1143333 
+      105       106       107       108       109       110       111       112 
+1.8548748 1.1707060 0.8274120 1.1172899 0.9734900 2.2210235 0.6627251 0.8613550 
+      113       114       115       116       117       118       119       120 
+1.4463045 0.7086775 1.0064776 2.1899245 1.6551313 2.0004627 1.6950181 1.2765009 
+      121       122       123       124       125       126       127       128 
+0.6287391 1.5676464 1.1722679 1.6495136 0.6529059 1.0053370 0.6919104 1.1445194 
+      129       130       131       132       133       134       135       136 
+1.9195968 0.5394778 1.1405143 0.8265359 0.5252493 1.0014125 0.6311224 1.9483304 
+      137       138       139       140       141       142       143       144 
+1.0694221 1.7929889 0.9645073 0.6709887 2.1125440 1.2404765 1.8786481 1.0922982 
+      145       146       147       148       149       150       151       152 
+0.7863550 0.8181059 0.5723102 0.8359380 0.7924884 0.5918479 1.1865827 0.5306222 
+      153       154       155       156       157       158       159       160 
+0.7181071 0.8265359 1.6119444        NA 0.9693810 2.0887670 1.1316466 0.9865752 
+      161       162       163       164       165       166       167       168 
+0.5567137 0.9625332 1.5944793 1.1143333 0.8106297 0.4884935 0.8134964 0.4966703 
+      169       170       171       172       173       174       175       176 
+1.0894077 0.6538577 1.0717340 0.6433325 1.1134303 0.4169521 0.9536592 1.0477613 
+      177       178       179       180       181       182       183       184 
+1.7465558 1.0014125 0.9536592 0.5127358 0.5985803 0.4597993 0.5408413 1.0195796 
+      185       186       187       188       189       190       191       192 
+0.5580981 0.5214787 2.3621782 0.5847079 1.0651819 0.4902291 1.0246985 1.4467772 
+      193       194       195       196       197       198       199       200 
+0.9769008 1.0800127 1.0638328 0.6919025 0.9967735 1.0778107 0.5326337 0.9635172 
+      201       202       203       204       205       206       207       208 
+1.0651819 1.0881732 0.5630464 0.5341218 0.5174645 1.3533017 0.6634419 1.6753425 
+      209       210       211       212       213       214       215       216 
+1.1405233 0.7389335 0.5830788 1.1659084 1.1271597 1.5068056 0.8608298 0.8608298 
+      217       218       219       220       221       222       223       224 
+0.8547524 2.1854595 1.6126170 0.6360967 1.0167730 0.9212793 1.2370205 1.2510919 
+      225       226       227       228 
+0.4720233 2.0211416 1.1527951 0.9183601 
+
+$se.fit
+          1           2           3           4           5           6 
+0.094027169 0.096340319 0.096185061 0.110144705 0.091221886 0.124003567 
+          7           8           9          10          11          12 
+0.106470052 0.135893441 0.104263809 0.115204660 0.048057506 0.157626321 
+         13          14          15          16          17          18 
+0.058398830          NA 0.078593550 0.044525715 0.047523899 0.139753275 
+         19          20          21          22          23          24 
+0.246130195 0.051683778 0.050651208 0.106747848 0.121191090 0.095563151 
+         25          26          27          28          29          30 
+0.135232494 0.077970827 0.084316589 0.541641696 0.047411370 0.244541270 
+         31          32          33          34          35          36 
+0.067316853 0.236761412 0.222247496 0.143779967 0.246770836 0.214866749 
+         37          38          39          40          41          42 
+0.186808694 0.027994134 0.244541270 0.017746688 0.094899948 0.150429986 
+         43          44          45          46          47          48 
+0.082038635 0.251128992 0.071539989 0.172653479 0.157627962 0.046664065 
+         49          50          51          52          53          54 
+0.203630081 0.147427688 0.071868116 0.087051165 0.126710133 0.091078334 
+         55          56          57          58          59          60 
+0.030346404 0.094111921 0.072518580 0.232795318 0.092391388 0.017746688 
+         61          62          63          64          65          66 
+0.207337260 0.162712161 0.126511646 0.038549743 0.042876315 0.234595146 
+         67          68          69          70          71          72 
+0.151669341 0.068462840 0.112880428 0.068678027 0.124246473 0.184637680 
+         73          74          75          76          77          78 
+0.325442016 0.174862073 0.090441588 0.089040153 0.108376599 0.057550307 
+         79          80          81          82          83          84 
+0.188633743 0.150191651 0.082038635 0.027564795 0.181878087 0.172125872 
+         85          86          87          88          89          90 
+0.142365056 0.114741553 0.035859182 0.096819023 0.132484179 0.229864932 
+         91          92          93          94          95          96 
+0.120689668 0.047523899 0.070339929 0.055381362 0.123547581 0.253870138 
+         97          98          99         100         101         102 
+0.042876315 0.089040153 0.035190905 0.106227011 0.091078334 0.091298269 
+        103         104         105         106         107         108 
+0.017787711 0.028641480 0.194430169 0.039989624 0.075782969 0.044525715 
+        109         110         111         112         113         114 
+0.071209628 0.254965259 0.163546509 0.185211877 0.241649528 0.139074790 
+        115         116         117         118         119         120 
+0.076796420 0.262556790 0.348185429 0.211911041 0.146845572 0.149423594 
+        121         122         123         124         125         126 
+0.150969692 0.156065943 0.042876315 0.142648758 0.129688202 0.004890619 
+        127         128         129         130         131         132 
+0.113985419 0.031310085 0.248637733 0.121183075 0.041502912 0.067248608 
+        133         134         135         136         137         138 
+0.115359144 0.027564795 0.112511267 0.200585657 0.069255092 0.201817172 
+        139         140         141         142         143         144 
+0.094786456 0.075667327 0.240338975 0.094027169 0.216098624 0.024974398 
+        145         146         147         148         149         150 
+0.066191299 0.084423319 0.167625233 0.058808327 0.221289168 0.105873833 
+        151         152         153         154         155         156 
+0.140449741 0.098993713 0.063583542 0.067248608 0.230942129          NA 
+        157         158         159         160         161         162 
+0.067558237 0.245408761 0.032338223 0.075589234 0.101745759 0.174851413 
+        163         164         165         166         167         168 
+0.125897325 0.028641480 0.048065722 0.111659253 0.045260623 0.125085448 
+        169         170         171         172         173         174 
+0.020095538 0.093808006 0.037378627 0.093118562 0.031761359 0.135544076 
+        175         176         177         178         179         180 
+0.104263809 0.016586035 0.246130195 0.027564795 0.104263809 0.174088607 
+        181         182         183         184         185         186 
+0.109727836 0.166211707 0.139230772 0.017941579 0.106388490 0.137198131 
+        187         188         189         190         191         192 
+0.304795981 0.089505183 0.043311645 0.114439474 0.131445121 0.192173147 
+        193         194         195         196         197         198 
+0.144436340 0.017746688 0.058484070 0.121193159 0.002956631 0.025613128 
+        199         200         201         202         203         204 
+0.104623286 0.033429233 0.043311645 0.080773833 0.103942128 0.124008736 
+        205         206         207         208         209         210 
+0.118294076 0.078206752 0.080505144 0.235804861 0.079727031 0.057789591 
+        211         212         213         214         215         216 
+0.091221886 0.068678027 0.029421496 0.124248857 0.038549743 0.038549743 
+        217         218         219         220         221         222 
+0.158976598 0.269332667 0.130275218 0.089792820 0.015369862 0.085131550 
+        223         224         225         226         227         228 
+0.148494109 0.160862263 0.138362860 0.225740927 0.057778343 0.074788433 
+
+> predict(fit,type="terms",se.fit=TRUE)
+$fit
+             age     ph.ecog
+1    0.130878057  0.03032716
+2    0.063011653 -0.54083428
+3   -0.072721154 -0.54083428
+4   -0.061410086  0.03032716
+5   -0.027476885 -0.54083428
+6    0.130878057  0.03032716
+7    0.063011653  0.60148859
+8    0.096944855  0.60148859
+9   -0.106654355  0.03032716
+10  -0.016165817  0.60148859
+11  -0.061410086  0.03032716
+12   0.063011653  0.60148859
+13   0.063011653  0.03032716
+14            NA          NA
+15  -0.061410086  0.03032716
+16   0.051700586  0.03032716
+17   0.085633788  0.03032716
+18   0.006456317  0.60148859
+19  -0.072721154  0.60148859
+20  -0.061410086  0.03032716
+21   0.051700586  0.03032716
+22  -0.151898625 -0.54083428
+23  -0.140587557  0.03032716
+24  -0.050099019 -0.54083428
+25   0.108255923 -0.54083428
+26   0.085633788  0.03032716
+27  -0.027476885 -0.54083428
+28   0.085633788  1.17265002
+29  -0.106654355  0.03032716
+30   0.130878057  0.60148859
+31   0.074322721  0.03032716
+32   0.119566990  0.60148859
+33  -0.163209692  0.60148859
+34  -0.027476885  0.60148859
+35  -0.016165817  0.60148859
+36  -0.004854750  0.60148859
+37   0.029078452  0.60148859
+38   0.040389519  0.03032716
+39   0.130878057  0.60148859
+40   0.017767384  0.03032716
+41   0.085633788  0.03032716
+42   0.119566990  0.60148859
+43  -0.038787952 -0.54083428
+44  -0.027476885  0.60148859
+45   0.063011653  0.03032716
+46   0.153500192  0.60148859
+47   0.130878057 -0.54083428
+48   0.006456317  0.03032716
+49   0.130878057 -0.54083428
+50  -0.140587557  0.03032716
+51   0.108255923  0.03032716
+52   0.006456317 -0.54083428
+53   0.063011653 -0.54083428
+54  -0.050099019 -0.54083428
+55  -0.038787952  0.03032716
+56  -0.004854750 -0.54083428
+57   0.029078452 -0.54083428
+58  -0.061410086  0.60148859
+59  -0.050099019  0.03032716
+60   0.017767384  0.03032716
+61   0.142189124  0.60148859
+62  -0.163209692  0.03032716
+63   0.119566990  0.03032716
+64   0.029078452  0.03032716
+65   0.074322721  0.03032716
+66   0.063011653  0.60148859
+67   0.051700586  0.60148859
+68   0.017767384 -0.54083428
+69   0.063011653 -0.54083428
+70   0.051700586  0.03032716
+71   0.006456317 -0.54083428
+72  -0.163209692  0.03032716
+73   0.130878057  0.60148859
+74  -0.253698230  0.03032716
+75  -0.106654355  0.03032716
+76   0.096944855  0.03032716
+77  -0.129276490 -0.54083428
+78  -0.072721154  0.03032716
+79   0.210055528 -0.54083428
+80   0.119566990 -0.54083428
+81  -0.038787952 -0.54083428
+82  -0.084032221  0.03032716
+83  -0.231076095  0.03032716
+84  -0.208453961  0.03032716
+85  -0.208453961  0.03032716
+86   0.096944855  0.03032716
+87  -0.004854750  0.03032716
+88  -0.016165817 -0.54083428
+89  -0.208453961  0.03032716
+90   0.108255923  0.60148859
+91   0.006456317 -0.54083428
+92   0.085633788  0.03032716
+93   0.040389519  0.03032716
+94  -0.061410086  0.03032716
+95   0.074322721 -0.54083428
+96   0.108255923  0.60148859
+97   0.074322721  0.03032716
+98   0.096944855  0.03032716
+99   0.017767384  0.03032716
+100  0.085633788 -0.54083428
+101 -0.050099019 -0.54083428
+102  0.074322721  0.03032716
+103 -0.072721154  0.03032716
+104  0.006456317  0.03032716
+105 -0.038787952  0.60148859
+106  0.040389519  0.03032716
+107 -0.095343288  0.03032716
+108  0.051700586  0.03032716
+109 -0.084032221  0.03032716
+110  0.142189124  0.60148859
+111  0.074322721 -0.54083428
+112 -0.208453961  0.03032716
+113  0.198744461  0.03032716
+114  0.142189124 -0.54083428
+115 -0.095343288  0.03032716
+116  0.153500192  0.60148859
+117 -0.151898625  0.60148859
+118  0.063011653  0.60148859
+119  0.040389519  0.60148859
+120  0.198744461  0.03032716
+121  0.142189124 -0.54083428
+122 -0.027476885  0.60148859
+123  0.074322721  0.03032716
+124  0.108255923  0.60148859
+125  0.085633788 -0.54083428
+126  0.040389519  0.03032716
+127 -0.140587557  0.03032716
+128  0.017767384  0.03032716
+129  0.164811259  0.60148859
+130 -0.163209692 -0.54083428
+131 -0.038787952  0.03032716
+132 -0.106654355  0.03032716
+133 -0.174520759 -0.54083428
+134 -0.084032221  0.03032716
+135  0.051700586 -0.54083428
+136  0.130878057  0.60148859
+137 -0.050099019  0.03032716
+138 -0.072721154  0.60148859
+139 -0.095343288  0.03032716
+140 -0.072721154 -0.54083428
+141  0.119566990  0.60148859
+142  0.130878057  0.03032716
+143  0.153500192  0.60148859
+144  0.029078452  0.03032716
+145 -0.061410086  0.03032716
+146 -0.106654355  0.03032716
+147  0.096944855 -0.54083428
+148 -0.095343288  0.03032716
+149  0.221366595 -0.54083428
+150 -0.038787952 -0.54083428
+151  0.085633788  0.03032716
+152 -0.027476885 -0.54083428
+153 -0.004854750 -0.54083428
+154 -0.106654355  0.03032716
+155 -0.084032221  0.60148859
+156           NA          NA
+157  0.063011653  0.03032716
+158 -0.004854750  0.60148859
+159  0.006456317  0.03032716
+160 -0.072721154  0.03032716
+161 -0.004854750 -0.54083428
+162 -0.208453961  0.03032716
+163  0.074322721  0.60148859
+164  0.006456317  0.03032716
+165  0.017767384  0.03032716
+166 -0.061410086 -0.54083428
+167 -0.027476885  0.03032716
+168 -0.185831826 -0.54083428
+169 -0.016165817  0.03032716
+170  0.029078452 -0.54083428
+171 -0.016165817  0.03032716
+172 -0.050099019 -0.54083428
+173 -0.072721154  0.03032716
+174 -0.219765028 -0.54083428
+175 -0.106654355  0.03032716
+176 -0.038787952  0.03032716
+177 -0.072721154  0.60148859
+178 -0.084032221  0.03032716
+179 -0.106654355  0.03032716
+180  0.130878057 -0.54083428
+181 -0.027476885 -0.54083428
+182 -0.265009297 -0.54083428
+183  0.040389519 -0.54083428
+184  0.029078452  0.03032716
+185 -0.129276490 -0.54083428
+186 -0.197142894 -0.54083428
+187  0.108255923  0.60148859
+188 -0.050099019 -0.54083428
+189  0.017767384  0.03032716
+190 -0.106654355 -0.54083428
+191  0.108255923  0.03032716
+192 -0.117965423  0.60148859
+193 -0.140587557  0.03032716
+194  0.017767384  0.03032716
+195  0.096944855  0.03032716
+196  0.085633788 -0.54083428
+197  0.006456317  0.03032716
+198  0.017767384  0.03032716
+199 -0.117965423 -0.54083428
+200 -0.027476885  0.03032716
+201  0.017767384  0.03032716
+202  0.119566990  0.03032716
+203  0.006456317 -0.54083428
+204 -0.140587557 -0.54083428
+205  0.006456317 -0.54083428
+206 -0.004854750  0.60148859
+207 -0.084032221 -0.54083428
+208 -0.140587557  0.60148859
+209  0.074322721  0.03032716
+210 -0.038787952  0.03032716
+211 -0.027476885 -0.54083428
+212  0.051700586  0.03032716
+213  0.074322721  0.03032716
+214  0.017767384  0.60148859
+215  0.029078452  0.03032716
+216  0.029078452  0.03032716
+217 -0.242387163  0.03032716
+218  0.153500192  0.60148859
+219  0.085633788  0.60148859
+220 -0.061410086 -0.54083428
+221  0.051700586  0.03032716
+222  0.096944855  0.03032716
+223  0.153500192  0.03032716
+224  0.164811259  0.03032716
+225 -0.265009297 -0.54083428
+226  0.142189124  0.60148859
+227  0.040389519  0.03032716
+228 -0.050099019  0.03032716
+
+$se.fit
+            age     ph.ecog
+1   0.119930635 0.007395102
+2   0.057740983 0.131879319
+3   0.066638322 0.131879319
+4   0.056273380 0.007395102
+5   0.025178554 0.131879319
+6   0.119930635 0.007395102
+7   0.057740983 0.146669523
+8   0.088835809 0.146669523
+9   0.097733148 0.007395102
+10  0.014813612 0.146669523
+11  0.056273380 0.007395102
+12  0.057740983 0.146669523
+13  0.057740983 0.007395102
+14           NA          NA
+15  0.056273380 0.007395102
+16  0.047376041 0.007395102
+17  0.078470867 0.007395102
+18  0.005916272 0.146669523
+19  0.066638322 0.146669523
+20  0.056273380 0.007395102
+21  0.047376041 0.007395102
+22  0.139192917 0.131879319
+23  0.128827975 0.007395102
+24  0.045908438 0.131879319
+25  0.099200751 0.131879319
+26  0.078470867 0.007395102
+27  0.025178554 0.131879319
+28  0.078470867 0.285943945
+29  0.097733148 0.007395102
+30  0.119930635 0.146669523
+31  0.068105925 0.007395102
+32  0.109565693 0.146669523
+33  0.149557859 0.146669523
+34  0.025178554 0.146669523
+35  0.014813612 0.146669523
+36  0.004448670 0.146669523
+37  0.026646156 0.146669523
+38  0.037011098 0.007395102
+39  0.119930635 0.146669523
+40  0.016281214 0.007395102
+41  0.078470867 0.007395102
+42  0.109565693 0.146669523
+43  0.035543496 0.131879319
+44  0.025178554 0.146669523
+45  0.057740983 0.007395102
+46  0.140660519 0.146669523
+47  0.119930635 0.131879319
+48  0.005916272 0.007395102
+49  0.119930635 0.131879319
+50  0.128827975 0.007395102
+51  0.099200751 0.007395102
+52  0.005916272 0.131879319
+53  0.057740983 0.131879319
+54  0.045908438 0.131879319
+55  0.035543496 0.007395102
+56  0.004448670 0.131879319
+57  0.026646156 0.131879319
+58  0.056273380 0.146669523
+59  0.045908438 0.007395102
+60  0.016281214 0.007395102
+61  0.130295577 0.146669523
+62  0.149557859 0.007395102
+63  0.109565693 0.007395102
+64  0.026646156 0.007395102
+65  0.068105925 0.007395102
+66  0.057740983 0.146669523
+67  0.047376041 0.146669523
+68  0.016281214 0.131879319
+69  0.057740983 0.131879319
+70  0.047376041 0.007395102
+71  0.005916272 0.131879319
+72  0.149557859 0.007395102
+73  0.119930635 0.146669523
+74  0.232477395 0.007395102
+75  0.097733148 0.007395102
+76  0.088835809 0.007395102
+77  0.118463033 0.131879319
+78  0.066638322 0.007395102
+79  0.192485229 0.131879319
+80  0.109565693 0.131879319
+81  0.035543496 0.131879319
+82  0.077003264 0.007395102
+83  0.211747511 0.007395102
+84  0.191017627 0.007395102
+85  0.191017627 0.007395102
+86  0.088835809 0.007395102
+87  0.004448670 0.007395102
+88  0.014813612 0.131879319
+89  0.191017627 0.007395102
+90  0.099200751 0.146669523
+91  0.005916272 0.131879319
+92  0.078470867 0.007395102
+93  0.037011098 0.007395102
+94  0.056273380 0.007395102
+95  0.068105925 0.131879319
+96  0.099200751 0.146669523
+97  0.068105925 0.007395102
+98  0.088835809 0.007395102
+99  0.016281214 0.007395102
+100 0.078470867 0.131879319
+101 0.045908438 0.131879319
+102 0.068105925 0.007395102
+103 0.066638322 0.007395102
+104 0.005916272 0.007395102
+105 0.035543496 0.146669523
+106 0.037011098 0.007395102
+107 0.087368206 0.007395102
+108 0.047376041 0.007395102
+109 0.077003264 0.007395102
+110 0.130295577 0.146669523
+111 0.068105925 0.131879319
+112 0.191017627 0.007395102
+113 0.182120287 0.007395102
+114 0.130295577 0.131879319
+115 0.087368206 0.007395102
+116 0.140660519 0.146669523
+117 0.139192917 0.146669523
+118 0.057740983 0.146669523
+119 0.037011098 0.146669523
+120 0.182120287 0.007395102
+121 0.130295577 0.131879319
+122 0.025178554 0.146669523
+123 0.068105925 0.007395102
+124 0.099200751 0.146669523
+125 0.078470867 0.131879319
+126 0.037011098 0.007395102
+127 0.128827975 0.007395102
+128 0.016281214 0.007395102
+129 0.151025461 0.146669523
+130 0.149557859 0.131879319
+131 0.035543496 0.007395102
+132 0.097733148 0.007395102
+133 0.159922801 0.131879319
+134 0.077003264 0.007395102
+135 0.047376041 0.131879319
+136 0.119930635 0.146669523
+137 0.045908438 0.007395102
+138 0.066638322 0.146669523
+139 0.087368206 0.007395102
+140 0.066638322 0.131879319
+141 0.109565693 0.146669523
+142 0.119930635 0.007395102
+143 0.140660519 0.146669523
+144 0.026646156 0.007395102
+145 0.056273380 0.007395102
+146 0.097733148 0.007395102
+147 0.088835809 0.131879319
+148 0.087368206 0.007395102
+149 0.202850171 0.131879319
+150 0.035543496 0.131879319
+151 0.078470867 0.007395102
+152 0.025178554 0.131879319
+153 0.004448670 0.131879319
+154 0.097733148 0.007395102
+155 0.077003264 0.146669523
+156          NA          NA
+157 0.057740983 0.007395102
+158 0.004448670 0.146669523
+159 0.005916272 0.007395102
+160 0.066638322 0.007395102
+161 0.004448670 0.131879319
+162 0.191017627 0.007395102
+163 0.068105925 0.146669523
+164 0.005916272 0.007395102
+165 0.016281214 0.007395102
+166 0.056273380 0.131879319
+167 0.025178554 0.007395102
+168 0.170287743 0.131879319
+169 0.014813612 0.007395102
+170 0.026646156 0.131879319
+171 0.014813612 0.007395102
+172 0.045908438 0.131879319
+173 0.066638322 0.007395102
+174 0.201382569 0.131879319
+175 0.097733148 0.007395102
+176 0.035543496 0.007395102
+177 0.066638322 0.146669523
+178 0.077003264 0.007395102
+179 0.097733148 0.007395102
+180 0.119930635 0.131879319
+181 0.025178554 0.131879319
+182 0.242842337 0.131879319
+183 0.037011098 0.131879319
+184 0.026646156 0.007395102
+185 0.118463033 0.131879319
+186 0.180652685 0.131879319
+187 0.099200751 0.146669523
+188 0.045908438 0.131879319
+189 0.016281214 0.007395102
+190 0.097733148 0.131879319
+191 0.099200751 0.007395102
+192 0.108098090 0.146669523
+193 0.128827975 0.007395102
+194 0.016281214 0.007395102
+195 0.088835809 0.007395102
+196 0.078470867 0.131879319
+197 0.005916272 0.007395102
+198 0.016281214 0.007395102
+199 0.108098090 0.131879319
+200 0.025178554 0.007395102
+201 0.016281214 0.007395102
+202 0.109565693 0.007395102
+203 0.005916272 0.131879319
+204 0.128827975 0.131879319
+205 0.005916272 0.131879319
+206 0.004448670 0.146669523
+207 0.077003264 0.131879319
+208 0.128827975 0.146669523
+209 0.068105925 0.007395102
+210 0.035543496 0.007395102
+211 0.025178554 0.131879319
+212 0.047376041 0.007395102
+213 0.068105925 0.007395102
+214 0.016281214 0.146669523
+215 0.026646156 0.007395102
+216 0.026646156 0.007395102
+217 0.222112453 0.007395102
+218 0.140660519 0.146669523
+219 0.078470867 0.146669523
+220 0.056273380 0.131879319
+221 0.047376041 0.007395102
+222 0.088835809 0.007395102
+223 0.140660519 0.007395102
+224 0.151025461 0.007395102
+225 0.242842337 0.131879319
+226 0.130295577 0.146669523
+227 0.037011098 0.007395102
+228 0.045908438 0.007395102
+
+> 
+> # For someone who demands reference='zero'
+> pzero <- function(fit)
++   predict(fit, reference="sample") + sum(coef(fit) * fit$means, na.rm=TRUE)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("predict.survreg")
+> ### * predict.survreg
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: predict.survreg
+> ### Title: Predicted Values for a 'survreg' Object
+> ### Aliases: predict.survreg predict.survreg.penal
+> ### Keywords: survival
+> 
+> ### ** Examples
+> 
+> # Draw figure 1 from Escobar and Meeker, 1992.
+> fit <- survreg(Surv(time,status) ~ age + I(age^2), data=stanford2, 
++ 	dist='lognormal') 
+> with(stanford2, plot(age, time, xlab='Age', ylab='Days', 
++ 	xlim=c(0,65), ylim=c(.1, 10^5), log='y', type='n'))
+> with(stanford2, points(age, time, pch=c(2,4)[status+1], cex=.7))
+> pred <- predict(fit, newdata=list(age=1:65), type='quantile', 
++ 	         p=c(.1, .5, .9)) 
+> matlines(1:65, pred, lty=c(2,1,2), col=1) 
+> 
+> # Predicted Weibull survival curve for a lung cancer subject with
+> #  ECOG score of 2
+> lfit <- survreg(Surv(time, status) ~ ph.ecog, data=lung)
+> pct <- 1:98/100   # The 100th percentile of predicted survival is at +infinity
+> ptime <- predict(lfit, newdata=data.frame(ph.ecog=2), type='quantile',
++                  p=pct, se=TRUE)
+> matplot(cbind(ptime$fit, ptime$fit + 2*ptime$se.fit,
++                          ptime$fit - 2*ptime$se.fit)/30.5, 1-pct,
++         xlab="Months", ylab="Survival", type='l', lty=c(1,2,2), col=1)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("pseudo")
+> ### * pseudo
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: pseudo
+> ### Title: Pseudo values for survival.
+> ### Aliases: pseudo
+> ### Keywords: survival
+> 
+> ### ** Examples
+> 
+> fit1 <- survfit(Surv(time, status) ~ 1, data=lung)
+> yhat <- pseudo(fit1, times=c(365, 730))
+> dim(yhat)
+[1] 228   2
+> lfit <- lm(yhat[,1] ~ ph.ecog + age + sex, data=lung)
+> 
+> # Restricted Mean Time in State (RMST) 
+> rms <- pseudo(fit1, times= 730, type='RMST') # 2 years
+> rfit <- lm(rms ~ ph.ecog + sex, data=lung)
+> rhat <- predict(rfit, newdata=expand.grid(ph.ecog=0:3, sex=1:2), se.fit=TRUE)
+> # print it out nicely
+> temp1 <- cbind(matrix(rhat$fit, 4,2))
+> temp2 <- cbind(matrix(rhat$se.fit, 4, 2))
+> temp3 <- cbind(temp1[,1], temp2[,1], temp1[,2], temp2[,2])
+> dimnames(temp3) <- list(paste("ph.ecog", 0:3), 
++                         c("Male RMST", "(se)", "Female RMST", "(se)"))
+> 
+> round(temp3, 1)
+          Male RMST (se) Female RMST (se)
+ph.ecog 0     393.7 28.6       510.6 31.5
+ph.ecog 1     307.8 19.8       424.7 24.4
+ph.ecog 2     221.9 29.7       338.8 33.4
+ph.ecog 3     136.1 47.9       253.0 50.5
+> # compare this to the fully non-parametric estimate
+> fit2 <- survfit(Surv(time, status) ~ ph.ecog, data=lung)
+> print(fit2, rmean=730)
+Call: survfit(formula = Surv(time, status) ~ ph.ecog, data = lung)
+
+   1 observation deleted due to missingness 
+            n events rmean* se(rmean) median 0.95LCL 0.95UCL
+ph.ecog=0  63     37    429      32.2    394     348     574
+ph.ecog=1 113     82    366      22.4    306     268     429
+ph.ecog=2  50     44    256      30.0    199     156     288
+ph.ecog=3   1      1    118       0.0    118      NA      NA
+    * restricted mean with upper limit =  730 
+> # the estimate for ph.ecog=3 is very unstable (n=1), pseudovalues smooth it.
+> #
+> # In all the above we should be using the robust variance, e.g., svyglm, but
+> #  a recommended package can't depend on external libraries.
+> # See the vignette for a more complete exposition.
+> 
+> 
+> 
+> cleanEx()
+> nameEx("pspline")
+> ### * pspline
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: pspline
+> ### Title: Smoothing splines using a pspline basis
+> ### Aliases: pspline psplineinverse
+> ### Keywords: survival
+> 
+> ### ** Examples
+> 
+> lfit6 <- survreg(Surv(time, status)~pspline(age, df=2), lung)
+> plot(lung$age, predict(lfit6), xlab='Age', ylab="Spline prediction")
+> title("Cancer Data")
+> fit0 <- coxph(Surv(time, status) ~ ph.ecog + age, lung)
+> fit1 <- coxph(Surv(time, status) ~ ph.ecog + pspline(age,3), lung)
+> fit3 <- coxph(Surv(time, status) ~ ph.ecog + pspline(age,8), lung)
+> fit0
+Call:
+coxph(formula = Surv(time, status) ~ ph.ecog + age, data = lung)
+
+            coef exp(coef) se(coef)     z        p
+ph.ecog 0.443485  1.558128 0.115831 3.829 0.000129
+age     0.011281  1.011345 0.009319 1.211 0.226082
+
+Likelihood ratio test=19.06  on 2 df, p=7.279e-05
+n= 227, number of events= 164 
+   (1 observation deleted due to missingness)
+> fit1
+Call:
+coxph(formula = Surv(time, status) ~ ph.ecog + pspline(age, 3), 
+    data = lung)
+
+                            coef se(coef)      se2    Chisq   DF       p
+ph.ecog                  0.44802  0.11707  0.11678 14.64453 1.00 0.00013
+pspline(age, 3), linear  0.01126  0.00928  0.00928  1.47231 1.00 0.22498
+pspline(age, 3), nonlin                             2.07924 2.08 0.37143
+
+Iterations: 4 outer, 12 Newton-Raphson
+     Theta= 0.861 
+Degrees of freedom for terms= 1.0 3.1 
+Likelihood ratio test=21.9  on 4.08 df, p=2e-04
+n= 227, number of events= 164 
+   (1 observation deleted due to missingness)
+> fit3
+Call:
+coxph(formula = Surv(time, status) ~ ph.ecog + pspline(age, 8), 
+    data = lung)
+
+                            coef se(coef)      se2    Chisq   DF       p
+ph.ecog                  0.47640  0.12024  0.11925 15.69732 1.00 7.4e-05
+pspline(age, 8), linear  0.01172  0.00923  0.00923  1.61161 1.00    0.20
+pspline(age, 8), nonlin                             6.93188 6.99    0.43
+
+Iterations: 5 outer, 15 Newton-Raphson
+     Theta= 0.691 
+Degrees of freedom for terms= 1 8 
+Likelihood ratio test=27.6  on 8.97 df, p=0.001
+n= 227, number of events= 164 
+   (1 observation deleted due to missingness)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("pyears")
+> ### * pyears
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: pyears
+> ### Title: Person Years
+> ### Aliases: pyears
+> ### Keywords: survival
+> 
+> ### ** Examples
+> 
+> # Look at progression rates jointly by calendar date and age
+> # 
+> temp.yr  <- tcut(mgus$dxyr, 55:92, labels=as.character(55:91)) 
+> temp.age <- tcut(mgus$age, 34:101, labels=as.character(34:100))
+> ptime <- ifelse(is.na(mgus$pctime), mgus$futime, mgus$pctime)
+> pstat <- ifelse(is.na(mgus$pctime), 0, 1)
+> pfit <- pyears(Surv(ptime/365.25, pstat) ~ temp.yr + temp.age + sex,  mgus,
++      data.frame=TRUE) 
+> # Turn the factor back into numerics for regression
+> tdata <- pfit$data
+> tdata$age <- as.numeric(as.character(tdata$temp.age))
+> tdata$year<- as.numeric(as.character(tdata$temp.yr))
+> fit1 <- glm(event ~ year + age+ sex +offset(log(pyears)),
++              data=tdata, family=poisson)
+> ## Not run: 
+> ##D # fit a gam model 
+> ##D gfit.m <- gam(y ~ s(age) + s(year) + offset(log(time)),  
+> ##D                         family = poisson, data = tdata) 
+> ## End(Not run)
+> 
+> # Example #2  Create the hearta data frame: 
+> hearta <- by(heart, heart$id,  
++              function(x)x[x$stop == max(x$stop),]) 
+> hearta <- do.call("rbind", hearta) 
+> # Produce pyears table of death rates on the surgical arm
+> #  The first is by age at randomization, the second by current age
+> fit1 <- pyears(Surv(stop/365.25, event) ~ cut(age + 48, c(0,50,60,70,100)) + 
++        surgery, data = hearta, scale = 1)
+> fit2 <- pyears(Surv(stop/365.25, event) ~ tcut(age + 48, c(0,50,60,70,100)) + 
++        surgery, data = hearta, scale = 1)
+> fit1$event/fit1$pyears  #death rates on the surgery and non-surg arm
+                                    surgery
+cut(age + 48, c(0, 50, 60, 70, 100))         0         1
+                            (0,50]   0.7615378 0.3036881
+                            (50,60]  2.0068681 0.9979508
+                            (60,70]  5.1083916       NaN
+                            (70,100]       NaN       NaN
+> 
+> fit2$event/fit2$pyears  #death rates on the surgery and non-surg arm
+                                     surgery
+tcut(age + 48, c(0, 50, 60, 70, 100))         0         1
+                          0+ thru  50 0.8013285 0.2636994
+                         50+ thru  60 1.6119238 0.6564817
+                         60+ thru  70 3.9701087       NaN
+                         70+ thru 100       NaN       NaN
+> 
+> 
+> 
+> cleanEx()
+> nameEx("quantile.survfit")
+> ### * quantile.survfit
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: quantile.survfit
+> ### Title: Quantiles from a survfit object
+> ### Aliases: quantile.survfit quantile.survfitms median.survfit
+> ### Keywords: survival
+> 
+> ### ** Examples
+> 
+> fit <- survfit(Surv(time, status) ~ ph.ecog, data=lung)
+> quantile(fit)
+$quantile
+           25  50  75
+ph.ecog=0 285 394 655
+ph.ecog=1 181 306 550
+ph.ecog=2 105 199 351
+ph.ecog=3 118 118 118
+
+$lower
+           25  50  75
+ph.ecog=0 189 348 558
+ph.ecog=1 156 268 460
+ph.ecog=2  61 156 285
+ph.ecog=3  NA  NA  NA
+
+$upper
+           25  50  75
+ph.ecog=0 350 574  NA
+ph.ecog=1 223 429 689
+ph.ecog=2 163 288 654
+ph.ecog=3  NA  NA  NA
+
+> 
+> cfit <- coxph(Surv(time, status) ~ age + strata(ph.ecog), data=lung)
+> csurv<- survfit(cfit, newdata=data.frame(age=c(40, 60, 80)),
++                   conf.type ="none")
+> temp <- quantile(csurv, 1:5/10)
+> temp[2,3,]  # quantiles for second level of ph.ecog, age=80
+ 10  20  30  40  50 
+ 92 144 181 218 270 
+> quantile(csurv[2,3], 1:5/10)  # quantiles of a single curve, same result
+ 10  20  30  40  50 
+ 92 144 181 218 270 
+> 
+> 
+> 
+> cleanEx()
+> nameEx("reliability")
+> ### * reliability
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: reliability
+> ### Title: Reliability data sets
+> ### Aliases: reliability capacitor cracks genfan ifluid imotor turbine
+> ###   valveSeat
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> survreg(Surv(time, status) ~ temperature + voltage, capacitor)
+Call:
+survreg(formula = Surv(time, status) ~ temperature + voltage, 
+    data = capacitor)
+
+Coefficients:
+(Intercept) temperature     voltage 
+13.40701688 -0.02890466 -0.00591082 
+
+Scale= 0.3638092 
+
+Loglik(model)= -244.2   Loglik(intercept only)= -254.5
+	Chisq= 20.57 on 2 degrees of freedom, p= 3.41e-05 
+n= 64 
+> 
+> 
+> 
+> cleanEx()
+> nameEx("residuals.coxph")
+> ### * residuals.coxph
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: residuals.coxph
+> ### Title: Calculate Residuals for a 'coxph' Fit
+> ### Aliases: residuals.coxph.penal residuals.coxph.null residuals.coxph
+> ###   residuals.coxphms
+> ### Keywords: survival
+> 
+> ### ** Examples
+> 
+> 
+>  fit <- coxph(Surv(start, stop, event) ~ (age + surgery)* transplant,
++                data=heart)
+>  mresid <- resid(fit, collapse=heart$id)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("residuals.survfit")
+> ### * residuals.survfit
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: residuals.survfit
+> ### Title: IJ residuals from a survfit object.
+> ### Aliases: residuals.survfit
+> 
+> ### ** Examples
+> 
+> fit <- survfit(Surv(time, status) ~ x, aml)
+> resid(fit, times=c(24, 48), type="RMTS")
+            [,1]         [,2]
+ [1,] -1.0836777 -2.076652893
+ [2,] -0.7200413 -1.713016529
+ [3,]  0.2004132  0.421074380
+ [4,] -0.3237345 -1.468414256
+ [5,]  0.1876291 -0.957050620
+ [6,]  0.2899019  0.965676653
+ [7,]  0.2899019 -0.359777893
+ [8,]  0.2899019  0.008403926
+ [9,]  0.2899019  1.726585744
+[10,]  0.2899019  1.726585744
+[11,]  0.2899019  1.726585744
+[12,] -1.0057870 -1.475694444
+[13,] -1.0057870 -1.475694444
+[14,] -0.7557870 -1.225694444
+[15,] -0.7557870 -1.225694444
+[16,] -0.4224537 -0.892361111
+[17,]  0.5636574  0.899305556
+[18,]  0.4826389 -0.121527778
+[19,]  0.5798611  0.267361111
+[20,]  0.5798611  0.559027778
+[21,]  0.5798611  0.850694444
+[22,]  0.5798611  1.822916667
+[23,]  0.5798611  2.017361111
+> 
+> 
+> 
+> cleanEx()
+> nameEx("residuals.survreg")
+> ### * residuals.survreg
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: residuals.survreg
+> ### Title: Compute Residuals for 'survreg' Objects
+> ### Aliases: residuals.survreg residuals.survreg.penal
+> ### Keywords: survival
+> 
+> ### ** Examples
+> 
+> fit <- survreg(Surv(futime, death) ~ age + sex, mgus2)
+> summary(fit)   # age and sex are both important
+
+Call:
+survreg(formula = Surv(futime, death) ~ age + sex, data = mgus2)
+               Value Std. Error      z       p
+(Intercept)  8.85979    0.23842  37.16 < 2e-16
+age         -0.05360    0.00312 -17.19 < 2e-16
+sexM        -0.31874    0.06357  -5.01 5.3e-07
+Log(scale)  -0.02840    0.02787  -1.02    0.31
+
+Scale= 0.972 
+
+Weibull distribution
+Loglik(model)= -5528.3   Loglik(intercept only)= -5699
+	Chisq= 341.42 on 2 degrees of freedom, p= 7.3e-75 
+Number of Newton-Raphson Iterations: 5 
+n= 1384 
+
+> 
+> rr  <- residuals(fit, type='matrix')
+> sum(rr[,1]) - with(mgus2, sum(log(futime[death==1]))) # loglik
+[1] -5528.267
+> 
+> plot(mgus2$age, rr[,2], col= (1+mgus2$death)) # ldresp
+> 
+> 
+> 
+> cleanEx()
+> nameEx("retinopathy")
+> ### * retinopathy
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: retinopathy
+> ### Title: Diabetic Retinopathy
+> ### Aliases: retinopathy
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> coxph(Surv(futime, status) ~ type + trt, cluster= id, retinopathy)
+Call:
+coxph(formula = Surv(futime, status) ~ type + trt, data = retinopathy, 
+    cluster = id)
+
+              coef exp(coef) se(coef) robust se      z        p
+typeadult  0.05388   1.05536  0.16211   0.17864  0.302    0.763
+trt       -0.77893   0.45890  0.16893   0.14851 -5.245 1.56e-07
+
+Likelihood ratio test=22.48  on 2 df, p=1.312e-05
+n= 394, number of events= 155 
+> 
+> 
+> 
+> cleanEx()
+> nameEx("rhDNase")
+> ### * rhDNase
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: rhDNase
+> ### Title: rhDNASE data set
+> ### Aliases: rhDNase
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> # Build the start-stop data set for analysis, and
+> #  replicate line 2 of table 8.13
+> first <- subset(rhDNase, !duplicated(id)) #first row for each subject
+> dnase <- tmerge(first, first, id=id, tstop=as.numeric(end.dt -entry.dt))
+> 
+> # Subjects whose fu ended during the 6 day window are the reason for
+> #  this next line
+> temp.end <- with(rhDNase, pmin(ivstop+6, end.dt-entry.dt))
+> dnase <- tmerge(dnase, rhDNase, id=id,
++                        infect=event(ivstart),
++                        end=  event(temp.end))
+> # toss out the non-at-risk intervals, and extra variables
+> #  3 subjects had an event on their last day of fu, infect=1 and end=1
+> dnase <- subset(dnase, (infect==1 | end==0), c(id:trt, fev:infect))
+> agfit <- coxph(Surv(tstart, tstop, infect) ~ trt + fev, cluster=id,
++                  data=dnase)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("ridge")
+> ### * ridge
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: ridge
+> ### Title: Ridge regression
+> ### Aliases: ridge
+> ### Keywords: survival
+> 
+> ### ** Examples
+> 
+> 
+> coxph(Surv(futime, fustat) ~ rx + ridge(age, ecog.ps, theta=1),
++ 	      ovarian)
+Call:
+coxph(formula = Surv(futime, fustat) ~ rx + ridge(age, ecog.ps, 
+    theta = 1), data = ovarian)
+
+                  coef se(coef)     se2   Chisq DF      p
+rx             -0.8564   0.6161  0.6156  1.9323  1 0.1645
+ridge(age)      0.1229   0.0385  0.0354 10.2127  1 0.0014
+ridge(ecog.ps)  0.1093   0.5734  0.5484  0.0363  1 0.8488
+
+Iterations: 1 outer, 5 Newton-Raphson
+Degrees of freedom for terms= 1.0 1.8 
+Likelihood ratio test=15.6  on 2.76 df, p=0.001
+n= 26, number of events= 12 
+> 
+> lfit0 <- survreg(Surv(time, status) ~1, lung)
+> lfit1 <- survreg(Surv(time, status) ~ age + ridge(ph.ecog, theta=5), lung)
+> lfit2 <- survreg(Surv(time, status) ~ sex + ridge(age, ph.ecog, theta=1), lung)
+> lfit3 <- survreg(Surv(time, status) ~ sex + age + ph.ecog, lung)
+> 
+> 
+> 
+> 
+> cleanEx()
+> nameEx("rotterdam")
+> ### * rotterdam
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: rotterdam
+> ### Title: Breast cancer data set used in Royston and Altman (2013)
+> ### Aliases: rotterdam
+> ### Keywords: datasets survival
+> 
+> ### ** Examples
+> 
+> status  <- pmax(rotterdam$recur, rotterdam$death)
+> rfstime <- with(rotterdam, ifelse(recur==1, rtime, dtime))
+> fit1 <- coxph(Surv(rfstime, status) ~ pspline(age) + meno + size + 
++         pspline(nodes) + er,
++      data=rotterdam, subset = (nodes > 0))
+> # Royston and Altman used fractional polynomials for the nonlinear terms
+> 
+> 
+> 
+> cleanEx()
+> nameEx("royston")
+> ### * royston
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: royston
+> ### Title: Compute Royston's D for a Cox model
+> ### Aliases: royston
+> ### Keywords: survival
+> 
+> ### ** Examples
+> 
+> # An example used in Royston and Sauerbrei
+> pbc2 <- na.omit(pbc)  # no missing values
+> cfit <- coxph(Surv(time, status==2) ~ age + log(bili) + edema + albumin +
++                    stage + copper, data=pbc2, ties="breslow")
+> royston(cfit)
+        D     se(D)       R.D      R.KO       R.N      C.GH 
+2.6917766 0.2273352 0.6336693 0.5554885 0.4714442 0.7735923 
+> 
+> 
+> 
+> cleanEx()
+> nameEx("rttright")
+> ### * rttright
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: rttright
+> ### Title: Compute redistribute-to-the-right weights
+> ### Aliases: rttright
+> ### Keywords: survival
+> 
+> ### ** Examples
+> 
+> afit <- survfit(Surv(time, status) ~1, data=aml)
+> rwt  <- rttright(Surv(time, status) ~1, data=aml)
+> 
+> # Reproduce a Kaplan-Meier
+> index <- order(aml$time)
+> cdf <- cumsum(rwt[index])  # weighted CDF
+> cdf <- cdf[!duplicated(aml$time[index], fromLast=TRUE)]  # remove duplicate times
+> cbind(time=afit$time, KM= afit$surv, RTTR= 1-cdf)
+      time         KM       RTTR
+ [1,]    5 0.91304348  -1.000000
+ [2,]    8 0.82608696  -3.000000
+ [3,]    9 0.78260870  -4.000000
+ [4,]   12 0.73913043  -5.000000
+ [5,]   13 0.69565217  -6.000000
+ [6,]   16 0.69565217  -6.000000
+ [7,]   18 0.64596273  -7.142857
+ [8,]   23 0.54658385  -9.428571
+ [9,]   27 0.49689441 -10.571429
+[10,]   28 0.49689441 -10.571429
+[11,]   30 0.44168392 -11.841270
+[12,]   31 0.38647343 -13.111111
+[13,]   33 0.33126294 -14.380952
+[14,]   34 0.27605245 -15.650794
+[15,]   43 0.22084196 -16.920635
+[16,]   45 0.16563147 -18.190476
+[17,]   48 0.08281573 -20.095238
+[18,]  161 0.08281573 -20.095238
+> 
+> # Hormonal patients have a diffent censoring pattern
+> wt2 <- rttright(Surv(dtime, death) ~ hormon, rotterdam, times= 365*c(3, 5))
+> dim(wt2)
+[1] 2982    2
+> 
+> 
+> 
+> cleanEx()
+> nameEx("solder")
+> ### * solder
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: solder
+> ### Title: Data from a soldering experiment
+> ### Aliases: solder
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> # The balanced subset used by Chambers and Hastie
+> #   contains the first 180 of each mask and deletes mask A6. 
+> index <- 1 + (1:nrow(solder)) - match(solder$Mask, solder$Mask)
+> solder.balance <- droplevels(subset(solder, Mask != "A6" & index <= 180))
+> 
+> 
+> 
+> cleanEx()
+> nameEx("statefig")
+> ### * statefig
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: statefig
+> ### Title: Draw a state space figure.
+> ### Aliases: statefig
+> ### Keywords: survival hplot
+> 
+> ### ** Examples
+> 
+> # Draw a simple competing risks figure
+> states <- c("Entry", "Complete response", "Relapse", "Death")
+> connect <- matrix(0, 4, 4, dimnames=list(states, states))
+> connect[1, -1] <- c(1.1, 1, 0.9)
+> statefig(c(1, 3), connect)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("strata")
+> ### * strata
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: strata
+> ### Title: Identify Stratification Variables
+> ### Aliases: strata
+> ### Keywords: survival
+> 
+> ### ** Examples
+> 
+> a <- factor(rep(1:3,4), labels=c("low", "medium", "high"))
+> b <- factor(rep(1:4,3))
+> levels(strata(b))
+[1] "1" "2" "3" "4"
+> levels(strata(a,b,shortlabel=TRUE))
+ [1] "low, 1"    "low, 2"    "low, 3"    "low, 4"    "medium, 1" "medium, 2"
+ [7] "medium, 3" "medium, 4" "high, 1"   "high, 2"   "high, 3"   "high, 4"  
+> 
+> coxph(Surv(futime, fustat) ~ age + strata(rx), data=ovarian) 
+Call:
+coxph(formula = Surv(futime, fustat) ~ age + strata(rx), data = ovarian)
+
+       coef exp(coef) se(coef)     z       p
+age 0.13735   1.14723  0.04741 2.897 0.00376
+
+Likelihood ratio test=12.69  on 1 df, p=0.0003678
+n= 26, number of events= 12 
+> 
+> 
+> 
+> cleanEx()
+> nameEx("summary.aareg")
+> ### * summary.aareg
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: summary.aareg
+> ### Title: Summarize an aareg fit
+> ### Aliases: summary.aareg
+> ### Keywords: survival
+> 
+> ### ** Examples
+> 
+> afit <- aareg(Surv(time, status) ~ age + sex + ph.ecog, data=lung,
++      dfbeta=TRUE)
+> summary(afit)
+              slope      coef se(coef) robust se     z        p
+Intercept  5.05e-03  5.87e-03 4.74e-03   0.00477  1.23 0.219000
+age        4.01e-05  7.15e-05 7.23e-05   0.00007  1.02 0.307000
+sex       -3.16e-03 -4.03e-03 1.22e-03   0.00123 -3.28 0.001030
+ph.ecog    3.01e-03  3.67e-03 1.02e-03   0.00102  3.62 0.000299
+
+Chisq=22.84 on 3 df, p=4.36e-05; test weights=aalen
+> ## Not run: 
+> ##D               slope   test se(test) robust se     z        p 
+> ##D Intercept  5.05e-03    1.9     1.54      1.55  1.23 0.219000
+> ##D       age  4.01e-05  108.0   109.00    106.00  1.02 0.307000
+> ##D       sex -3.16e-03  -19.5     5.90      5.95 -3.28 0.001030
+> ##D   ph.ecog  3.01e-03   33.2     9.18      9.17  3.62 0.000299
+> ##D 
+> ##D Chisq=22.84 on 3 df, p=4.4e-05; test weights=aalen
+> ## End(Not run)
+> 
+> summary(afit, maxtime=600)
+              slope      coef se(coef) robust se      z        p
+Intercept  4.16e-03  6.67e-03 4.62e-03  0.004580  1.450 0.146000
+age        2.82e-05  5.74e-05 7.07e-05  0.000067  0.857 0.392000
+sex       -2.54e-03 -4.30e-03 1.17e-03  0.001180 -3.660 0.000256
+ph.ecog    2.47e-03  3.54e-03 9.99e-04  0.000972  3.640 0.000271
+
+Chisq=27.08 on 3 df, p=5.66e-06; test weights=aalen
+> ## Not run: 
+> ##D               slope   test se(test) robust se      z        p 
+> ##D Intercept  4.16e-03   2.13     1.48      1.47  1.450 0.146000
+> ##D       age  2.82e-05  85.80   106.00    100.00  0.857 0.392000
+> ##D       sex -2.54e-03 -20.60     5.61      5.63 -3.660 0.000256
+> ##D   ph.ecog  2.47e-03  31.60     8.91      8.67  3.640 0.000271
+> ##D 
+> ##D Chisq=27.08 on 3 df, p=5.7e-06; test weights=aalen
+> ## End(Not run)
+> 
+> 
+> cleanEx()
+> nameEx("summary.coxph")
+> ### * summary.coxph
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: summary.coxph
+> ### Title: Summary method for Cox models
+> ### Aliases: summary.coxph
+> ### Keywords: survival
+> 
+> ### ** Examples
+> 
+> fit <- coxph(Surv(time, status) ~ age + sex, lung) 
+> summary(fit)
+Call:
+coxph(formula = Surv(time, status) ~ age + sex, data = lung)
+
+  n= 228, number of events= 165 
+
+         coef exp(coef)  se(coef)      z Pr(>|z|)   
+age  0.017045  1.017191  0.009223  1.848  0.06459 . 
+sex -0.513219  0.598566  0.167458 -3.065  0.00218 **
+---
+Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
+
+    exp(coef) exp(-coef) lower .95 upper .95
+age    1.0172     0.9831    0.9990    1.0357
+sex    0.5986     1.6707    0.4311    0.8311
+
+Concordance= 0.603  (se = 0.025 )
+Likelihood ratio test= 14.12  on 2 df,   p=9e-04
+Wald test            = 13.47  on 2 df,   p=0.001
+Score (logrank) test = 13.72  on 2 df,   p=0.001
+
+> 
+> 
+> 
+> cleanEx()
+> nameEx("summary.survfit")
+> ### * summary.survfit
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: summary.survfit
+> ### Title: Summary of a Survival Curve
+> ### Aliases: summary.survfit
+> ### Keywords: survival
+> 
+> ### ** Examples
+> 
+> summary( survfit( Surv(futime, fustat)~1, data=ovarian))
+Call: survfit(formula = Surv(futime, fustat) ~ 1, data = ovarian)
+
+ time n.risk n.event survival std.err lower 95% CI upper 95% CI
+   59     26       1    0.962  0.0377        0.890        1.000
+  115     25       1    0.923  0.0523        0.826        1.000
+  156     24       1    0.885  0.0627        0.770        1.000
+  268     23       1    0.846  0.0708        0.718        0.997
+  329     22       1    0.808  0.0773        0.670        0.974
+  353     21       1    0.769  0.0826        0.623        0.949
+  365     20       1    0.731  0.0870        0.579        0.923
+  431     17       1    0.688  0.0919        0.529        0.894
+  464     15       1    0.642  0.0965        0.478        0.862
+  475     14       1    0.596  0.0999        0.429        0.828
+  563     12       1    0.546  0.1032        0.377        0.791
+  638     11       1    0.497  0.1051        0.328        0.752
+> summary( survfit( Surv(futime, fustat)~rx, data=ovarian))
+Call: survfit(formula = Surv(futime, fustat) ~ rx, data = ovarian)
+
+                rx=1 
+ time n.risk n.event survival std.err lower 95% CI upper 95% CI
+   59     13       1    0.923  0.0739        0.789        1.000
+  115     12       1    0.846  0.1001        0.671        1.000
+  156     11       1    0.769  0.1169        0.571        1.000
+  268     10       1    0.692  0.1280        0.482        0.995
+  329      9       1    0.615  0.1349        0.400        0.946
+  431      8       1    0.538  0.1383        0.326        0.891
+  638      5       1    0.431  0.1467        0.221        0.840
+
+                rx=2 
+ time n.risk n.event survival std.err lower 95% CI upper 95% CI
+  353     13       1    0.923  0.0739        0.789        1.000
+  365     12       1    0.846  0.1001        0.671        1.000
+  464      9       1    0.752  0.1256        0.542        1.000
+  475      8       1    0.658  0.1407        0.433        1.000
+  563      7       1    0.564  0.1488        0.336        0.946
+
+> 
+> 
+> 
+> cleanEx()
+> nameEx("survSplit")
+> ### * survSplit
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: survSplit
+> ### Title: Split a survival data set at specified times
+> ### Aliases: survSplit
+> ### Keywords: survival utilities
+> 
+> ### ** Examples
+> 
+> fit1 <- coxph(Surv(time, status) ~ karno + age + trt, veteran)
+> plot(cox.zph(fit1)[1])
+> # a cox.zph plot of the data suggests that the effect of Karnofsky score
+> #  begins to diminish by 60 days and has faded away by 120 days.
+> # Fit a model with separate coefficients for the three intervals.
+> #
+> vet2 <- survSplit(Surv(time, status) ~., veteran,
++                    cut=c(60, 120), episode ="timegroup")
+> fit2 <- coxph(Surv(tstart, time, status) ~ karno* strata(timegroup) +
++                 age + trt, data= vet2)
+> c(overall= coef(fit1)[1],
++   t0_60  = coef(fit2)[1],
++   t60_120= sum(coef(fit2)[c(1,4)]),
++   t120   = sum(coef(fit2)[c(1,5)]))
+overall.karno   t0_60.karno       t60_120          t120 
+ -0.034443897  -0.049176157  -0.011031558  -0.007629841 
+> 
+> 
+> 
+> cleanEx()
+> nameEx("survdiff")
+> ### * survdiff
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: survdiff
+> ### Title: Test Survival Curve Differences
+> ### Aliases: survdiff print.survdiff
+> ### Keywords: survival
+> 
+> ### ** Examples
+> 
+> ## Two-sample test
+> survdiff(Surv(futime, fustat) ~ rx,data=ovarian)
+Call:
+survdiff(formula = Surv(futime, fustat) ~ rx, data = ovarian)
+
+      N Observed Expected (O-E)^2/E (O-E)^2/V
+rx=1 13        7     5.23     0.596      1.06
+rx=2 13        5     6.77     0.461      1.06
+
+ Chisq= 1.1  on 1 degrees of freedom, p= 0.3 
+> 
+> ## Stratified 7-sample test
+> 
+> survdiff(Surv(time, status) ~ pat.karno + strata(inst), data=lung)
+Call:
+survdiff(formula = Surv(time, status) ~ pat.karno + strata(inst), 
+    data = lung)
+
+n=224, 4 observations deleted due to missingness.
+
+               N Observed Expected (O-E)^2/E (O-E)^2/V
+pat.karno=30   2        1    0.692   0.13720   0.15752
+pat.karno=40   2        1    1.099   0.00889   0.00973
+pat.karno=50   4        4    1.166   6.88314   7.45359
+pat.karno=60  30       27   16.298   7.02790   9.57333
+pat.karno=70  41       31   26.358   0.81742   1.14774
+pat.karno=80  50       38   41.938   0.36978   0.60032
+pat.karno=90  60       38   47.242   1.80800   3.23078
+pat.karno=100 35       21   26.207   1.03451   1.44067
+
+ Chisq= 21.4  on 7 degrees of freedom, p= 0.003 
+> 
+> ## Expected survival for heart transplant patients based on
+> ## US mortality tables
+> expect <- survexp(futime ~ 1, data=jasa, cohort=FALSE,
++                   rmap= list(age=(accept.dt - birth.dt), sex=1, year=accept.dt),
++                   ratetable=survexp.us)
+> ## actual survival is much worse (no surprise)
+> survdiff(Surv(jasa$futime, jasa$fustat) ~ offset(expect))
+Call:
+survdiff(formula = Surv(jasa$futime, jasa$fustat) ~ offset(expect))
+
+Observed Expected        Z        p 
+  75.000    0.644  -92.681    0.000 
+> 
+> 
+> 
+> cleanEx()
+> nameEx("survexp")
+> ### * survexp
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: survexp
+> ### Title: Compute Expected Survival
+> ### Aliases: survexp print.survexp
+> ### Keywords: survival
+> 
+> ### ** Examples
+> 
+> # 
+> # Stanford heart transplant data
+> #  We don't have sex in the data set, but know it to be nearly all males.
+> # Estimate of conditional survival  
+> fit1 <- survexp(futime ~ 1, rmap=list(sex="male", year=accept.dt,   
++           age=(accept.dt-birth.dt)), method='conditional', data=jasa)
+> summary(fit1, times=1:10*182.5, scale=365) #expected survival by 1/2 years
+Call: survexp(formula = futime ~ 1, data = jasa, rmap = list(sex = "male", 
+    year = accept.dt, age = (accept.dt - birth.dt)), method = "conditional")
+
+ time n.risk survival
+  0.5     41    0.996
+  1.0     28    0.993
+  1.5     21    0.989
+  2.0     16    0.986
+  2.5     13    0.983
+  3.0      8    0.980
+  3.5      7    0.977
+  4.0      3    0.972
+  4.5      1    0.969
+> 
+> # Estimate of expected  survival stratified by prior surgery 
+> survexp(~ surgery, rmap= list(sex="male", year=accept.dt,  
++ 	age=(accept.dt-birth.dt)), method='ederer', data=jasa,
++         times=1:10 * 182.5) 
+Call:
+survexp(formula = ~surgery, data = jasa, rmap = list(sex = "male", 
+    year = accept.dt, age = (accept.dt - birth.dt)), times = 1:10 * 
+    182.5, method = "ederer")
+
+  age ranges from 8.8 to 64.4 years
+  male: 103  female: 0 
+  date of entry from 1967-09-13 to 1974-03-22 
+
+ time nrisk1 nrisk2 surgery=0 surgery=1
+  182     87     16     0.996     0.996
+  365     87     16     0.991     0.993
+  548     87     16     0.987     0.989
+  730     87     16     0.982     0.985
+  912     87     16     0.978     0.981
+ 1095     87     16     0.973     0.977
+ 1278     87     16     0.968     0.973
+ 1460     87     16     0.963     0.969
+ 1642     87     16     0.958     0.964
+ 1825     87     16     0.952     0.960
+> 
+> ## Compare the survival curves for the Mayo PBC data to Cox model fit
+> ## 
+> pfit <-coxph(Surv(time,status>0) ~ trt + log(bili) + log(protime) + age +
++                 platelet, data=pbc)
+> plot(survfit(Surv(time, status>0) ~ trt, data=pbc), mark.time=FALSE)
+> lines(survexp( ~ trt, ratetable=pfit, data=pbc), col='purple')
+> 
+> 
+> 
+> cleanEx()
+> nameEx("survexp.us")
+> ### * survexp.us
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: ratetables
+> ### Title: Census Data Sets for the Expected Survival and Person Years
+> ###   Functions
+> ### Aliases: survexp.us survexp.usr survexp.mn
+> ### Keywords: survival datasets
+> 
+> ### ** Examples
+> 
+> survexp.uswhite <- survexp.usr[,,"white",]
+> 
+> 
+> 
+> cleanEx()
+> nameEx("survfit.formula")
+> ### * survfit.formula
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: survfit.formula
+> ### Title: Compute a Survival Curve for Censored Data
+> ### Aliases: survfit.formula [.survfit
+> ### Keywords: survival
+> 
+> ### ** Examples
+> 
+> #fit a Kaplan-Meier and plot it 
+> fit <- survfit(Surv(time, status) ~ x, data = aml) 
+> plot(fit, lty = 2:3) 
+> legend(100, .8, c("Maintained", "Nonmaintained"), lty = 2:3) 
+> 
+> #fit a Cox proportional hazards model and plot the  
+> #predicted survival for a 60 year old 
+> fit <- coxph(Surv(futime, fustat) ~ age, data = ovarian) 
+> plot(survfit(fit, newdata=data.frame(age=60)),
++      xscale=365.25, xlab = "Years", ylab="Survival") 
+> 
+> # Here is the data set from Turnbull
+> #  There are no interval censored subjects, only left-censored (status=3),
+> #  right-censored (status 0) and observed events (status 1)
+> #
+> #                             Time
+> #                         1    2   3   4
+> # Type of observation
+> #           death        12    6   2   3
+> #          losses         3    2   0   3
+> #      late entry         2    4   2   5
+> #
+> tdata <- data.frame(time  =c(1,1,1,2,2,2,3,3,3,4,4,4),
++                     status=rep(c(1,0,2),4),
++                     n     =c(12,3,2,6,2,4,2,0,2,3,3,5))
+> fit  <- survfit(Surv(time, time, status, type='interval') ~1, 
++               data=tdata, weight=n)
+> 
+> #
+> # Three curves for patients with monoclonal gammopathy.
+> #  1. KM of time to PCM, ignoring death (statistically incorrect)
+> #  2. Competing risk curves (also known as "cumulative incidence")
+> #  3. Multi-state, showing Pr(in each state, at time t)
+> #
+> fitKM <- survfit(Surv(stop, event=='pcm') ~1, data=mgus1,
++                     subset=(start==0))
+> fitCR <- survfit(Surv(stop, event) ~1,
++                     data=mgus1, subset=(start==0))
+> fitMS <- survfit(Surv(start, stop, event) ~ 1, id=id, data=mgus1)
+> ## Not run: 
+> ##D # CR curves show the competing risks
+> ##D plot(fitCR, xscale=365.25, xmax=7300, mark.time=FALSE,
+> ##D             col=2:3, xlab="Years post diagnosis of MGUS",
+> ##D             ylab="P(state)")
+> ##D lines(fitKM, fun='event', xmax=7300, mark.time=FALSE,
+> ##D             conf.int=FALSE)
+> ##D text(3652, .4, "Competing risk: death", col=3)
+> ##D text(5840, .15,"Competing risk: progression", col=2)
+> ##D text(5480, .30,"KM:prog")
+> ## End(Not run)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("survfit.matrix")
+> ### * survfit.matrix
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: survfit.matrix
+> ### Title: Create Aalen-Johansen estimates of multi-state survival from a
+> ###   matrix of hazards.
+> ### Aliases: survfit.matrix
+> ### Keywords: survival
+> 
+> ### ** Examples
+> 
+> etime <- with(mgus2, ifelse(pstat==0, futime, ptime))
+> event <- with(mgus2, ifelse(pstat==0, 2*death, 1))
+> event <- factor(event, 0:2, labels=c("censor", "pcm", "death"))
+> 
+> cfit1 <- coxph(Surv(etime, event=="pcm") ~ age + sex, mgus2)
+> cfit2 <- coxph(Surv(etime, event=="death") ~ age + sex, mgus2)
+> 
+> # predicted competing risk curves for a 72 year old with mspike of 1.2
+> # (median values), male and female.
+> # The survfit call is a bit faster without standard errors.
+> newdata <- expand.grid(sex=c("F", "M"), age=72, mspike=1.2)
+> 
+> AJmat <- matrix(list(), 3,3)
+> AJmat[1,2] <- list(survfit(cfit1, newdata, std.err=FALSE))
+> AJmat[1,3] <- list(survfit(cfit2, newdata, std.err=FALSE))
+> csurv  <- survfit(AJmat, p0 =c(entry=1, PCM=0, death=0))
+> 
+> 
+> 
+> cleanEx()
+> nameEx("survobrien")
+> ### * survobrien
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: survobrien
+> ### Title: O'Brien's Test for Association of a Single Variable with
+> ###   Survival
+> ### Aliases: survobrien
+> ### Keywords: survival
+> 
+> ### ** Examples
+> 
+> xx <- survobrien(Surv(futime, fustat) ~ age + factor(rx) + I(ecog.ps), 
++ 			       data=ovarian) 
+> coxph(Surv(time, status) ~ age + strata(.strata.), data=xx) 
+Call:
+coxph(formula = Surv(time, status) ~ age + strata(.strata.), 
+    data = xx)
+
+      coef exp(coef) se(coef)     z       p
+age 0.5681    1.7649   0.1816 3.128 0.00176
+
+Likelihood ratio test=10.55  on 1 df, p=0.001165
+n= 230, number of events= 12 
+> 
+> 
+> 
+> cleanEx()
+> nameEx("survreg")
+> ### * survreg
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: survreg
+> ### Title: Regression for a Parametric Survival Model
+> ### Aliases: survreg model.frame.survreg labels.survreg print.survreg.penal
+> ###   print.summary.survreg survReg anova.survreg anova.survreglist
+> ### Keywords: survival
+> 
+> ### ** Examples
+> 
+> # Fit an exponential model: the two fits are the same
+> survreg(Surv(futime, fustat) ~ ecog.ps + rx, ovarian, dist='weibull',
++                                     scale=1)
+Call:
+survreg(formula = Surv(futime, fustat) ~ ecog.ps + rx, data = ovarian, 
+    dist = "weibull", scale = 1)
+
+Coefficients:
+(Intercept)     ecog.ps          rx 
+  6.9618376  -0.4331347   0.5815027 
+
+Scale fixed at 1 
+
+Loglik(model)= -97.2   Loglik(intercept only)= -98
+	Chisq= 1.67 on 2 degrees of freedom, p= 0.434 
+n= 26 
+> survreg(Surv(futime, fustat) ~ ecog.ps + rx, ovarian,
++         dist="exponential")
+Call:
+survreg(formula = Surv(futime, fustat) ~ ecog.ps + rx, data = ovarian, 
+    dist = "exponential")
+
+Coefficients:
+(Intercept)     ecog.ps          rx 
+  6.9618376  -0.4331347   0.5815027 
+
+Scale fixed at 1 
+
+Loglik(model)= -97.2   Loglik(intercept only)= -98
+	Chisq= 1.67 on 2 degrees of freedom, p= 0.434 
+n= 26 
+> 
+> #
+> # A model with different baseline survival shapes for two groups, i.e.,
+> #   two different scale parameters
+> survreg(Surv(time, status) ~ ph.ecog + age + strata(sex), lung)
+Call:
+survreg(formula = Surv(time, status) ~ ph.ecog + age + strata(sex), 
+    data = lung)
+
+Coefficients:
+(Intercept)     ph.ecog         age 
+ 6.73234505 -0.32443043 -0.00580889 
+
+Scale:
+    sex=1     sex=2 
+0.7834211 0.6547830 
+
+Loglik(model)= -1137.3   Loglik(intercept only)= -1146.2
+	Chisq= 17.8 on 2 degrees of freedom, p= 0.000137 
+n=227 (1 observation deleted due to missingness)
+> 
+> # There are multiple ways to parameterize a Weibull distribution. The survreg 
+> # function embeds it in a general location-scale family, which is a 
+> # different parameterization than the rweibull function, and often leads
+> # to confusion.
+> #   survreg's scale  =    1/(rweibull shape)
+> #   survreg's intercept = log(rweibull scale)
+> #   For the log-likelihood all parameterizations lead to the same value.
+> y <- rweibull(1000, shape=2, scale=5)
+> survreg(Surv(y)~1, dist="weibull")
+Call:
+survreg(formula = Surv(y) ~ 1, dist = "weibull")
+
+Coefficients:
+(Intercept) 
+   1.604435 
+
+Scale= 0.4965001 
+
+Loglik(model)= -2199.4   Loglik(intercept only)= -2199.4
+n= 1000 
+> 
+> # Economists fit a model called `tobit regression', which is a standard
+> # linear regression with Gaussian errors, and left censored data.
+> tobinfit <- survreg(Surv(durable, durable>0, type='left') ~ age + quant,
++ 	            data=tobin, dist='gaussian')
+> 
+> 
+> 
+> cleanEx()
+> nameEx("survreg.distributions")
+> ### * survreg.distributions
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: survreg.distributions
+> ### Title: Parametric Survival Distributions
+> ### Aliases: survreg.distributions
+> ### Keywords: survival
+> 
+> ### ** Examples
+> 
+> # time transformation
+> survreg(Surv(time, status) ~ ph.ecog + sex, dist='weibull', data=lung)
+Call:
+survreg(formula = Surv(time, status) ~ ph.ecog + sex, data = lung, 
+    dist = "weibull")
+
+Coefficients:
+(Intercept)     ph.ecog         sex 
+  5.8195907  -0.3557319   0.4013684 
+
+Scale= 0.7310495 
+
+Loglik(model)= -1133.1   Loglik(intercept only)= -1147.4
+	Chisq= 28.73 on 2 degrees of freedom, p= 5.76e-07 
+n=227 (1 observation deleted due to missingness)
+> # change the transformation to work in years
+> # intercept changes by log(365), everything else stays the same
+> my.weibull <- survreg.distributions$weibull
+> my.weibull$trans <- function(y) log(y/365)
+> my.weibull$itrans <- function(y) 365*exp(y)
+> survreg(Surv(time, status) ~ ph.ecog + sex, lung, dist=my.weibull)
+Call:
+survreg(formula = Surv(time, status) ~ ph.ecog + sex, data = lung, 
+    dist = my.weibull)
+
+Coefficients:
+(Intercept)     ph.ecog         sex 
+-0.08030664 -0.35573188  0.40136844 
+
+Scale= 0.7310495 
+
+Loglik(model)= -1133.1   Loglik(intercept only)= -1147.4
+	Chisq= 28.73 on 2 degrees of freedom, p= 5.76e-07 
+n=227 (1 observation deleted due to missingness)
+> 
+> # Weibull parametrisation
+> y<-rweibull(1000, shape=2, scale=5)
+> survreg(Surv(y)~1, dist="weibull")
+Call:
+survreg(formula = Surv(y) ~ 1, dist = "weibull")
+
+Coefficients:
+(Intercept) 
+   1.604435 
+
+Scale= 0.4965001 
+
+Loglik(model)= -2199.4   Loglik(intercept only)= -2199.4
+n= 1000 
+> # survreg scale parameter maps to 1/shape, linear predictor to log(scale)
+> 
+> # Cauchy fit
+> mycauchy <- list(name='Cauchy',
++                  init= function(x, weights, ...) 
++                       c(median(x), mad(x)),
++                  density= function(x, parms) {
++                       temp <- 1/(1 + x^2)
++                       cbind(.5 + atan(x)/pi, .5+ atan(-x)/pi,
++                             temp/pi, -2 *x*temp, 2*temp*(4*x^2*temp -1))
++                       },
++                  quantile= function(p, parms) tan((p-.5)*pi),
++                  deviance= function(...) stop('deviance residuals not defined')
++                  )
+> survreg(Surv(log(time), status) ~ ph.ecog + sex, lung, dist=mycauchy)
+Call:
+survreg(formula = Surv(log(time), status) ~ ph.ecog + sex, data = lung, 
+    dist = mycauchy)
+
+Coefficients:
+(Intercept)     ph.ecog         sex 
+  5.4517240  -0.3979387   0.4692383 
+
+Scale= 0.4788955 
+
+Loglik(model)= -274.6   Loglik(intercept only)= -294.9
+	Chisq= 40.75 on 2 degrees of freedom, p= 1.42e-09 
+n=227 (1 observation deleted due to missingness)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("survregDtest")
+> ### * survregDtest
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: survregDtest
+> ### Title: Verify a survreg distribution
+> ### Aliases: survregDtest
+> ### Keywords: survival
+> 
+> ### ** Examples
+> 
+> # An invalid distribution (it should have "init =" on line 2)
+> #  surveg would give an error message
+> mycauchy <- list(name='Cauchy',
++                  init<- function(x, weights, ...) 
++                       c(median(x), mad(x)),
++                  density= function(x, parms) {
++                       temp <- 1/(1 + x^2)
++                       cbind(.5 + atan(temp)/pi, .5+ atan(-temp)/pi,
++                             temp/pi, -2 *x*temp, 2*temp^2*(4*x^2*temp -1))
++                       },
++                  quantile= function(p, parms) tan((p-.5)*pi),
++                  deviance= function(...) stop('deviance residuals not defined')
++                  )
+> 
+> survregDtest(mycauchy, TRUE)
+[1] "Missing or invalid init function"
+> 
+> 
+> 
+> cleanEx()
+> nameEx("tcut")
+> ### * tcut
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: tcut
+> ### Title: Factors for person-year calculations
+> ### Aliases: tcut [.tcut levels.tcut
+> ### Keywords: survival
+> 
+> ### ** Examples
+> 
+> # For pyears, all time variable need to be on the same scale; but
+> # futime is in months and age is in years
+> test <- mgus2
+> test$years <- test$futime/30.5   # follow-up in years
+> 
+> # first grouping based on years from starting age (= current age)
+> # second based on years since enrollment (all start at 0)
+> test$agegrp <- tcut(test$age, c(0,60, 70, 80, 100), 
++                      c("<=60", "60-70", "70-80", ">80"))
+> test$fgrp  <- tcut(rep(0, nrow(test)), c(0, 1, 5, 10, 100),
++                    c("0-1yr", "1-5yr", "5-10yr", ">10yr"))
+> 
+> # death rates per 1000, by age group
+> pfit1 <- pyears(Surv(years, death) ~ agegrp, scale =1000, data=test)
+> round(pfit1$event/ pfit1$pyears) 
+agegrp
+ <=60 60-70 70-80   >80 
+   89   128   245   479 
+> 
+> #death rates per 100, by follow-up year and age
+> # there are excess deaths in the first year, within each age stratum
+> pfit2 <- pyears(Surv(years, death) ~ fgrp + agegrp, scale =1000, data=test)
+> round(pfit2$event/ pfit2$pyears)  
+        agegrp
+fgrp     <=60 60-70 70-80  >80
+  0-1yr   139   137   234  437
+  1-5yr    68   117   241  499
+  5-10yr   91   145   300  476
+  >10yr     0   424     0 2440
+> 
+> 
+> 
+> cleanEx()
+> nameEx("tmerge")
+> ### * tmerge
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: tmerge
+> ### Title: Time based merge for survival data
+> ### Aliases: tmerge
+> ### Keywords: survival
+> 
+> ### ** Examples
+> 
+> # The pbc data set contains baseline data and follow-up status
+> # for a set of subjects with primary biliary cirrhosis, while the
+> # pbcseq data set contains repeated laboratory values for those
+> # subjects.  
+> # The first data set contains data on 312 subjects in a clinical trial plus
+> # 106 that agreed to be followed off protocol, the second data set has data
+> # only on the trial subjects.
+> temp <- subset(pbc, id <= 312, select=c(id:sex, stage)) # baseline data
+> pbc2 <- tmerge(temp, temp, id=id, endpt = event(time, status))
+> pbc2 <- tmerge(pbc2, pbcseq, id=id, ascites = tdc(day, ascites),
++                bili = tdc(day, bili), albumin = tdc(day, albumin),
++                protime = tdc(day, protime), alk.phos = tdc(day, alk.phos))
+> 
+> fit <- coxph(Surv(tstart, tstop, endpt==2) ~ protime + log(bili), data=pbc2)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("tobin")
+> ### * tobin
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: tobin
+> ### Title: Tobin's Tobit data
+> ### Aliases: tobin
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> tfit <- survreg(Surv(durable, durable>0, type='left') ~age + quant,
++                 data=tobin, dist='gaussian')
+> 
+> predict(tfit,type="response")
+ [1] -3.04968679 -4.31254182 -0.54163315 -0.25607164 -1.85017727 -2.40987803
+ [7] -3.50629220 -0.74041486 -4.05145594 -3.55880518 -0.32223237 -3.68044619
+[13] -3.65997456 -2.63254564  0.22382063  0.02177674 -0.09571284 -3.17696755
+[19] -0.61521215 -3.13913903
+> 
+> 
+> 
+> 
+> cleanEx()
+> nameEx("transplant")
+> ### * transplant
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: transplant
+> ### Title: Liver transplant waiting list
+> ### Aliases: transplant
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> #since event is a factor, survfit creates competing risk curves
+> pfit <- survfit(Surv(futime, event) ~ abo, transplant)
+> pfit[,2]  #time to liver transplant, by blood type
+Call: survfit(formula = Surv(futime, event) ~ abo, data = transplant)
+
+                n nevent   rmean*
+abo=A, death  325     21 164.9734
+abo=B, death  103     10 202.4902
+abo=AB, death  41      3 137.8293
+abo=O, death  346     32 182.1075
+   *restricted mean time in state (max time = 2055 )
+> plot(pfit[,2], mark.time=FALSE, col=1:4, lwd=2, xmax=735,
++        xscale=30.5, xlab="Months", ylab="Fraction transplanted",
++        xaxt = 'n')
+> temp <- c(0, 6, 12, 18, 24)
+> axis(1, temp*30.5, temp)
+> legend(450, .35, levels(transplant$abo), lty=1, col=1:4, lwd=2)
+> 
+> # competing risks for type O
+> plot(pfit[4,], xscale=30.5, xmax=735, col=1:3, lwd=2)
+> legend(450, .4, c("Death", "Transpant", "Withdrawal"), col=1:3, lwd=2)
+> 
+> 
+> 
+> cleanEx()
+> nameEx("udca")
+> ### * udca
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: udca
+> ### Title: Data from a trial of usrodeoxycholic acid
+> ### Aliases: udca udca1 udca2
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> # values found in table 8.3 of the book
+> fit1 <- coxph(Surv(futime, status) ~ trt + log(bili) + stage,
++           cluster =id , data=udca1)
+> fit2 <- coxph(Surv(futime, status) ~ trt + log(bili) + stage +
++           strata(endpoint), cluster=id,  data=udca2)
+> 
+> 
+> 
+> 
+> cleanEx()
+> nameEx("untangle.specials")
+> ### * untangle.specials
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: untangle.specials
+> ### Title: Help Process the 'specials' Argument of the 'terms' Function.
+> ### Aliases: untangle.specials
+> ### Keywords: survival
+> 
+> ### ** Examples
+> 
+> formula <- Surv(tt,ss) ~ x + z*strata(id)
+> tms <- terms(formula, specials="strata")
+> ## the specials attribute
+> attr(tms, "specials")
+$strata
+[1] 4
+
+> ## main effects 
+> untangle.specials(tms, "strata")
+$vars
+[1] "strata(id)"
+
+$tvar
+[1] 3
+
+$terms
+[1] 3
+
+> ## and interactions
+> untangle.specials(tms, "strata", order=1:2)
+$vars
+[1] "strata(id)"
+
+$tvar
+[1] 3
+
+$terms
+[1] 3 4
+
+> 
+> 
+> 
+> cleanEx()
+> nameEx("uspop2")
+> ### * uspop2
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: uspop2
+> ### Title: Projected US Population
+> ### Aliases: uspop2
+> ### Keywords: datasets
+> 
+> ### ** Examples
+> 
+> us50 <- uspop2[51:101,, "2000"]  #US 2000 population, 50 and over
+> age <- as.integer(dimnames(us50)[[1]])
+> smat <- model.matrix( ~ factor(floor(age/5)) -1)
+> ustot <- t(smat) %*% us50  #totals by 5 year age groups
+> temp <- c(50,55, 60, 65, 70, 75, 80, 85, 90, 95)
+> dimnames(ustot) <- list(c(paste(temp, temp+4, sep="-"), "100+"),
++                          c("male", "female"))
+> 
+> 
+> 
+> cleanEx()
+> nameEx("xtfrm.Surv")
+> ### * xtfrm.Surv
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: xtfrm.Surv
+> ### Title: Sorting order for Surv objects
+> ### Aliases: xtfrm.Surv sort.Surv order.Surv
+> ### Keywords: survival
+> 
+> ### ** Examples
+> 
+> test <- c(Surv(c(10, 9,9, 8,8,8,7,5,5,4), rep(1:0, 5)), Surv(6.2, NA))
+> test
+ [1] 10.0   9.0+  9.0   8.0+  8.0   8.0+  7.0   5.0+  5.0   4.0+  6.2?
+> sort(test)
+ [1]  4+  5   5+  7   8   8+  8+  9   9+ 10 
+> 
+> 
+> 
+> cleanEx()
+> nameEx("yates")
+> ### * yates
+> 
+> flush(stderr()); flush(stdout())
+> 
+> ### Name: yates
+> ### Title: Population prediction
+> ### Aliases: yates
+> ### Keywords: models survival
+> 
+> ### ** Examples
+> 
+> fit1 <- lm(skips ~ Solder*Opening + Mask, data = solder)
+> yates(fit1, ~Opening, population = "factorial")
+ Opening     pmm     std        test chisq df    ss      Pr
+       L  3.2638 0.33460      global 573.4  2 15980 < 1e-08
+       M  3.5700 0.30480                                   
+       S 12.3519 0.31251                                   
+> 
+> fit2 <- coxph(Surv(time, status) ~ factor(ph.ecog)*sex + age, lung)
+> yates(fit2, ~ ph.ecog, predict="risk")  # hazard ratio
+ factor(ph.ecog)     pmm      std                 test chisq df Pr
+               0 0.94238  0.46334      factor(ph.ecog)    NA NA NA
+               1 1.42677  0.75697                                 
+               2 1.74848  3.80017                                 
+               3      NA 74.01221                                 
+> 
+> 
+> 
+> ### * <FOOTER>
+> ###
+> cleanEx()
+> grDevices::dev.off()
+null device 
+          1 
+> ###
+> ### Local variables: ***
+> ### mode: outline-minor ***
+> ### outline-regexp: "\\(> \\)?### [*]+" ***
+> ### End: ***
+> quit('no')
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_vendor-prefixes.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_vendor-prefixes.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_vendor-prefixes.scss	(revision 3762)
@@ -0,0 +1,222 @@
+// Vendor Prefixes
+//
+// All vendor mixins are deprecated as of v3.2.0 due to the introduction of
+// Autoprefixer in our Gruntfile. They have been removed in v4.
+
+// - Animations
+// - Backface visibility
+// - Box shadow
+// - Box sizing
+// - Content columns
+// - Hyphens
+// - Placeholder text
+// - Transformations
+// - Transitions
+// - User Select
+
+
+// Animations
+@mixin animation($animation) {
+  -webkit-animation: $animation;
+       -o-animation: $animation;
+          animation: $animation;
+}
+@mixin animation-name($name) {
+  -webkit-animation-name: $name;
+          animation-name: $name;
+}
+@mixin animation-duration($duration) {
+  -webkit-animation-duration: $duration;
+          animation-duration: $duration;
+}
+@mixin animation-timing-function($timing-function) {
+  -webkit-animation-timing-function: $timing-function;
+          animation-timing-function: $timing-function;
+}
+@mixin animation-delay($delay) {
+  -webkit-animation-delay: $delay;
+          animation-delay: $delay;
+}
+@mixin animation-iteration-count($iteration-count) {
+  -webkit-animation-iteration-count: $iteration-count;
+          animation-iteration-count: $iteration-count;
+}
+@mixin animation-direction($direction) {
+  -webkit-animation-direction: $direction;
+          animation-direction: $direction;
+}
+@mixin animation-fill-mode($fill-mode) {
+  -webkit-animation-fill-mode: $fill-mode;
+          animation-fill-mode: $fill-mode;
+}
+
+// Backface visibility
+// Prevent browsers from flickering when using CSS 3D transforms.
+// Default value is `visible`, but can be changed to `hidden`
+
+@mixin backface-visibility($visibility) {
+  -webkit-backface-visibility: $visibility;
+     -moz-backface-visibility: $visibility;
+          backface-visibility: $visibility;
+}
+
+// Drop shadows
+//
+// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's
+// supported browsers that have box shadow capabilities now support it.
+
+@mixin box-shadow($shadow...) {
+  -webkit-box-shadow: $shadow; // iOS <4.3 & Android <4.1
+          box-shadow: $shadow;
+}
+
+// Box sizing
+@mixin box-sizing($boxmodel) {
+  -webkit-box-sizing: $boxmodel;
+     -moz-box-sizing: $boxmodel;
+          box-sizing: $boxmodel;
+}
+
+// CSS3 Content Columns
+@mixin content-columns($column-count, $column-gap: $grid-gutter-width) {
+  -webkit-column-count: $column-count;
+     -moz-column-count: $column-count;
+          column-count: $column-count;
+  -webkit-column-gap: $column-gap;
+     -moz-column-gap: $column-gap;
+          column-gap: $column-gap;
+}
+
+// Optional hyphenation
+@mixin hyphens($mode: auto) {
+  -webkit-hyphens: $mode;
+     -moz-hyphens: $mode;
+      -ms-hyphens: $mode; // IE10+
+       -o-hyphens: $mode;
+          hyphens: $mode;
+  word-wrap: break-word;
+}
+
+// Placeholder text
+@mixin placeholder($color: $input-color-placeholder) {
+  // Firefox
+  &::-moz-placeholder {
+    color: $color;
+    opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526
+  }
+  &:-ms-input-placeholder { color: $color; } // Internet Explorer 10+
+  &::-webkit-input-placeholder  { color: $color; } // Safari and Chrome
+}
+
+// Transformations
+@mixin scale($ratio...) {
+  -webkit-transform: scale($ratio);
+      -ms-transform: scale($ratio); // IE9 only
+       -o-transform: scale($ratio);
+          transform: scale($ratio);
+}
+
+@mixin scaleX($ratio) {
+  -webkit-transform: scaleX($ratio);
+      -ms-transform: scaleX($ratio); // IE9 only
+       -o-transform: scaleX($ratio);
+          transform: scaleX($ratio);
+}
+@mixin scaleY($ratio) {
+  -webkit-transform: scaleY($ratio);
+      -ms-transform: scaleY($ratio); // IE9 only
+       -o-transform: scaleY($ratio);
+          transform: scaleY($ratio);
+}
+@mixin skew($x, $y) {
+  -webkit-transform: skewX($x) skewY($y);
+      -ms-transform: skewX($x) skewY($y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+
+       -o-transform: skewX($x) skewY($y);
+          transform: skewX($x) skewY($y);
+}
+@mixin translate($x, $y) {
+  -webkit-transform: translate($x, $y);
+      -ms-transform: translate($x, $y); // IE9 only
+       -o-transform: translate($x, $y);
+          transform: translate($x, $y);
+}
+@mixin translate3d($x, $y, $z) {
+  -webkit-transform: translate3d($x, $y, $z);
+          transform: translate3d($x, $y, $z);
+}
+@mixin rotate($degrees) {
+  -webkit-transform: rotate($degrees);
+      -ms-transform: rotate($degrees); // IE9 only
+       -o-transform: rotate($degrees);
+          transform: rotate($degrees);
+}
+@mixin rotateX($degrees) {
+  -webkit-transform: rotateX($degrees);
+      -ms-transform: rotateX($degrees); // IE9 only
+       -o-transform: rotateX($degrees);
+          transform: rotateX($degrees);
+}
+@mixin rotateY($degrees) {
+  -webkit-transform: rotateY($degrees);
+      -ms-transform: rotateY($degrees); // IE9 only
+       -o-transform: rotateY($degrees);
+          transform: rotateY($degrees);
+}
+@mixin perspective($perspective) {
+  -webkit-perspective: $perspective;
+     -moz-perspective: $perspective;
+          perspective: $perspective;
+}
+@mixin perspective-origin($perspective) {
+  -webkit-perspective-origin: $perspective;
+     -moz-perspective-origin: $perspective;
+          perspective-origin: $perspective;
+}
+@mixin transform-origin($origin) {
+  -webkit-transform-origin: $origin;
+     -moz-transform-origin: $origin;
+      -ms-transform-origin: $origin; // IE9 only
+          transform-origin: $origin;
+}
+
+
+// Transitions
+
+@mixin transition($transition...) {
+  -webkit-transition: $transition;
+       -o-transition: $transition;
+          transition: $transition;
+}
+@mixin transition-property($transition-property...) {
+  -webkit-transition-property: $transition-property;
+          transition-property: $transition-property;
+}
+@mixin transition-delay($transition-delay) {
+  -webkit-transition-delay: $transition-delay;
+          transition-delay: $transition-delay;
+}
+@mixin transition-duration($transition-duration...) {
+  -webkit-transition-duration: $transition-duration;
+          transition-duration: $transition-duration;
+}
+@mixin transition-timing-function($timing-function) {
+  -webkit-transition-timing-function: $timing-function;
+          transition-timing-function: $timing-function;
+}
+@mixin transition-transform($transition...) {
+  -webkit-transition: -webkit-transform $transition;
+     -moz-transition: -moz-transform $transition;
+       -o-transition: -o-transform $transition;
+          transition: transform $transition;
+}
+
+
+// User select
+// For selecting text on the page
+
+@mixin user-select($select) {
+  -webkit-user-select: $select;
+     -moz-user-select: $select;
+      -ms-user-select: $select; // IE10+
+          user-select: $select;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_gradients.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_gradients.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_gradients.scss	(revision 3762)
@@ -0,0 +1,56 @@
+
+
+// Horizontal gradient, from left to right
+//
+// Creates two color stops, start and end, by specifying a color and position for each color stop.
+// Color stops are not available in IE9 and below.
+@mixin gradient-horizontal($start-color: #555, $end-color: #333, $start-percent: 0%, $end-percent: 100%) {
+  background-image: -webkit-linear-gradient(left, $start-color $start-percent, $end-color $end-percent); // Safari 5.1-6, Chrome 10+
+  background-image: -o-linear-gradient(left, $start-color $start-percent, $end-color $end-percent); // Opera 12
+  background-image: linear-gradient(to right, $start-color $start-percent, $end-color $end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}', GradientType=1); // IE9 and down
+  background-repeat: repeat-x;
+}
+
+// Vertical gradient, from top to bottom
+//
+// Creates two color stops, start and end, by specifying a color and position for each color stop.
+// Color stops are not available in IE9 and below.
+@mixin gradient-vertical($start-color: #555, $end-color: #333, $start-percent: 0%, $end-percent: 100%) {
+  background-image: -webkit-linear-gradient(top, $start-color $start-percent, $end-color $end-percent);  // Safari 5.1-6, Chrome 10+
+  background-image: -o-linear-gradient(top, $start-color $start-percent, $end-color $end-percent);  // Opera 12
+  background-image: linear-gradient(to bottom, $start-color $start-percent, $end-color $end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}', GradientType=0); // IE9 and down
+  background-repeat: repeat-x;
+}
+
+@mixin gradient-directional($start-color: #555, $end-color: #333, $deg: 45deg) {
+  background-image: -webkit-linear-gradient($deg, $start-color, $end-color); // Safari 5.1-6, Chrome 10+
+  background-image: -o-linear-gradient($deg, $start-color, $end-color); // Opera 12
+  background-image: linear-gradient($deg, $start-color, $end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+
+  background-repeat: repeat-x;
+}
+@mixin gradient-horizontal-three-colors($start-color: #00b3ee, $mid-color: #7a43b6, $color-stop: 50%, $end-color: #c3325f) {
+  background-image: -webkit-linear-gradient(left, $start-color, $mid-color $color-stop, $end-color);
+  background-image: -o-linear-gradient(left, $start-color, $mid-color $color-stop, $end-color);
+  background-image: linear-gradient(to right, $start-color, $mid-color $color-stop, $end-color);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}', GradientType=1); // IE9 and down, gets no color-stop at all for proper fallback
+  background-repeat: no-repeat;
+}
+@mixin gradient-vertical-three-colors($start-color: #00b3ee, $mid-color: #7a43b6, $color-stop: 50%, $end-color: #c3325f) {
+  background-image: -webkit-linear-gradient($start-color, $mid-color $color-stop, $end-color);
+  background-image: -o-linear-gradient($start-color, $mid-color $color-stop, $end-color);
+  background-image: linear-gradient($start-color, $mid-color $color-stop, $end-color);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}', GradientType=0); // IE9 and down, gets no color-stop at all for proper fallback
+  background-repeat: no-repeat;
+}
+@mixin gradient-radial($inner-color: #555, $outer-color: #333) {
+  background-image: -webkit-radial-gradient(circle, $inner-color, $outer-color);
+  background-image: radial-gradient(circle, $inner-color, $outer-color);
+  background-repeat: no-repeat;
+}
+@mixin gradient-striped($color: rgba(255, 255, 255, .15), $angle: 45deg) {
+  background-image: -webkit-linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);
+  background-image: -o-linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);
+  background-image: linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_grid-framework.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_grid-framework.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_grid-framework.scss	(revision 3762)
@@ -0,0 +1,81 @@
+// Framework grid generation
+//
+// Used only by Bootstrap to generate the correct number of grid classes given
+// any value of `$grid-columns`.
+
+// [converter] This is defined recursively in LESS, but Sass supports real loops
+@mixin make-grid-columns($i: 1, $list: ".col-xs-#{$i}, .col-sm-#{$i}, .col-md-#{$i}, .col-lg-#{$i}") {
+  @for $i from (1 + 1) through $grid-columns {
+    $list: "#{$list}, .col-xs-#{$i}, .col-sm-#{$i}, .col-md-#{$i}, .col-lg-#{$i}";
+  }
+  #{$list} {
+    position: relative;
+    // Prevent columns from collapsing when empty
+    min-height: 1px;
+    // Inner gutter via padding
+    padding-right: floor(($grid-gutter-width / 2));
+    padding-left: ceil(($grid-gutter-width / 2));
+  }
+}
+
+
+// [converter] This is defined recursively in LESS, but Sass supports real loops
+@mixin float-grid-columns($class, $i: 1, $list: ".col-#{$class}-#{$i}") {
+  @for $i from (1 + 1) through $grid-columns {
+    $list: "#{$list}, .col-#{$class}-#{$i}";
+  }
+  #{$list} {
+    float: left;
+  }
+}
+
+
+@mixin calc-grid-column($index, $class, $type) {
+  @if ($type == width) and ($index > 0) {
+    .col-#{$class}-#{$index} {
+      width: percentage(($index / $grid-columns));
+    }
+  }
+  @if ($type == push) and ($index > 0) {
+    .col-#{$class}-push-#{$index} {
+      left: percentage(($index / $grid-columns));
+    }
+  }
+  @if ($type == push) and ($index == 0) {
+    .col-#{$class}-push-0 {
+      left: auto;
+    }
+  }
+  @if ($type == pull) and ($index > 0) {
+    .col-#{$class}-pull-#{$index} {
+      right: percentage(($index / $grid-columns));
+    }
+  }
+  @if ($type == pull) and ($index == 0) {
+    .col-#{$class}-pull-0 {
+      right: auto;
+    }
+  }
+  @if ($type == offset) {
+    .col-#{$class}-offset-#{$index} {
+      margin-left: percentage(($index / $grid-columns));
+    }
+  }
+}
+
+// [converter] This is defined recursively in LESS, but Sass supports real loops
+@mixin loop-grid-columns($columns, $class, $type) {
+  @for $i from 0 through $columns {
+    @include calc-grid-column($i, $class, $type);
+  }
+}
+
+
+// Create grid for specific class
+@mixin make-grid($class) {
+  @include float-grid-columns($class);
+  @include loop-grid-columns($grid-columns, $class, width);
+  @include loop-grid-columns($grid-columns, $class, pull);
+  @include loop-grid-columns($grid-columns, $class, push);
+  @include loop-grid-columns($grid-columns, $class, offset);
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_background-variant.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_background-variant.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_background-variant.scss	(revision 3762)
@@ -0,0 +1,12 @@
+// Contextual backgrounds
+
+// [converter] $parent hack
+@mixin bg-variant($parent, $color) {
+  #{$parent} {
+    background-color: $color;
+  }
+  a#{$parent}:hover,
+  a#{$parent}:focus {
+    background-color: darken($color, 10%);
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_responsive-visibility.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_responsive-visibility.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_responsive-visibility.scss	(revision 3762)
@@ -0,0 +1,17 @@
+// [converter] $parent hack
+@mixin responsive-visibility($parent) {
+  #{$parent} {
+    display: block !important;
+  }
+  table#{$parent}  { display: table !important; }
+  tr#{$parent}     { display: table-row !important; }
+  th#{$parent},
+  td#{$parent}     { display: table-cell !important; }
+}
+
+// [converter] $parent hack
+@mixin responsive-invisibility($parent) {
+  #{$parent} {
+    display: none !important;
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_panels.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_panels.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_panels.scss	(revision 3762)
@@ -0,0 +1,24 @@
+// Panels
+
+@mixin panel-variant($border, $heading-text-color, $heading-bg-color, $heading-border) {
+  border-color: $border;
+
+  & > .panel-heading {
+    color: $heading-text-color;
+    background-color: $heading-bg-color;
+    border-color: $heading-border;
+
+    + .panel-collapse > .panel-body {
+      border-top-color: $border;
+    }
+    .badge {
+      color: $heading-bg-color;
+      background-color: $heading-text-color;
+    }
+  }
+  & > .panel-footer {
+    + .panel-collapse > .panel-body {
+      border-bottom-color: $border;
+    }
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_image.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_image.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_image.scss	(revision 3762)
@@ -0,0 +1,28 @@
+// Responsive image
+//
+// Keep images from scaling beyond the width of their parents.
+@mixin img-responsive($display: block) {
+  display: $display;
+  max-width: 100%; // Part 1: Set a maximum relative to the parent
+  height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching
+}
+
+
+// Retina image
+//
+// Short retina mixin for setting background-image and -size. Note that the
+// spelling of `min--moz-device-pixel-ratio` is intentional.
+@mixin img-retina($file-1x, $file-2x, $width-1x, $height-1x) {
+  background-image: url(if($bootstrap-sass-asset-helper, twbs-image-path("#{$file-1x}"), "#{$file-1x}"));
+
+  @media
+  only screen and (-webkit-min-device-pixel-ratio: 2),
+  only screen and ( min--moz-device-pixel-ratio: 2),
+  only screen and ( -o-min-device-pixel-ratio: 2/1),
+  only screen and ( min-device-pixel-ratio: 2),
+  only screen and ( min-resolution: 192dpi),
+  only screen and ( min-resolution: 2dppx) {
+    background-image: url(if($bootstrap-sass-asset-helper, twbs-image-path("#{$file-2x}"), "#{$file-2x}"));
+    background-size: $width-1x $height-1x;
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_tab-focus.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_tab-focus.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_tab-focus.scss	(revision 3762)
@@ -0,0 +1,9 @@
+// WebKit-style focus
+
+@mixin tab-focus() {
+  // WebKit-specific. Other browsers will keep their default outline style.
+  // (Initially tried to also force default via `outline: initial`,
+  // but that seems to erroneously remove the outline in Firefox altogether.)
+  outline: 5px auto -webkit-focus-ring-color;
+  outline-offset: -2px;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_nav-vertical-align.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_nav-vertical-align.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_nav-vertical-align.scss	(revision 3762)
@@ -0,0 +1,9 @@
+// Navbar vertical align
+//
+// Vertically center elements in the navbar.
+// Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin.
+
+@mixin navbar-vertical-align($element-height) {
+  margin-top: (($navbar-height - $element-height) / 2);
+  margin-bottom: (($navbar-height - $element-height) / 2);
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_text-overflow.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_text-overflow.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_text-overflow.scss	(revision 3762)
@@ -0,0 +1,8 @@
+// Text overflow
+// Requires inline-block or block for proper styling
+
+@mixin text-overflow() {
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_grid.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_grid.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_grid.scss	(revision 3762)
@@ -0,0 +1,122 @@
+// Grid system
+//
+// Generate semantic grid columns with these mixins.
+
+// Centered container element
+@mixin container-fixed($gutter: $grid-gutter-width) {
+  padding-right: ceil(($gutter / 2));
+  padding-left: floor(($gutter / 2));
+  margin-right: auto;
+  margin-left: auto;
+  @include clearfix;
+}
+
+// Creates a wrapper for a series of columns
+@mixin make-row($gutter: $grid-gutter-width) {
+  margin-right: floor(($gutter / -2));
+  margin-left: ceil(($gutter / -2));
+  @include clearfix;
+}
+
+// Generate the extra small columns
+@mixin make-xs-column($columns, $gutter: $grid-gutter-width) {
+  position: relative;
+  float: left;
+  width: percentage(($columns / $grid-columns));
+  min-height: 1px;
+  padding-right: ($gutter / 2);
+  padding-left: ($gutter / 2);
+}
+@mixin make-xs-column-offset($columns) {
+  margin-left: percentage(($columns / $grid-columns));
+}
+@mixin make-xs-column-push($columns) {
+  left: percentage(($columns / $grid-columns));
+}
+@mixin make-xs-column-pull($columns) {
+  right: percentage(($columns / $grid-columns));
+}
+
+// Generate the small columns
+@mixin make-sm-column($columns, $gutter: $grid-gutter-width) {
+  position: relative;
+  min-height: 1px;
+  padding-right: ($gutter / 2);
+  padding-left: ($gutter / 2);
+
+  @media (min-width: $screen-sm-min) {
+    float: left;
+    width: percentage(($columns / $grid-columns));
+  }
+}
+@mixin make-sm-column-offset($columns) {
+  @media (min-width: $screen-sm-min) {
+    margin-left: percentage(($columns / $grid-columns));
+  }
+}
+@mixin make-sm-column-push($columns) {
+  @media (min-width: $screen-sm-min) {
+    left: percentage(($columns / $grid-columns));
+  }
+}
+@mixin make-sm-column-pull($columns) {
+  @media (min-width: $screen-sm-min) {
+    right: percentage(($columns / $grid-columns));
+  }
+}
+
+// Generate the medium columns
+@mixin make-md-column($columns, $gutter: $grid-gutter-width) {
+  position: relative;
+  min-height: 1px;
+  padding-right: ($gutter / 2);
+  padding-left: ($gutter / 2);
+
+  @media (min-width: $screen-md-min) {
+    float: left;
+    width: percentage(($columns / $grid-columns));
+  }
+}
+@mixin make-md-column-offset($columns) {
+  @media (min-width: $screen-md-min) {
+    margin-left: percentage(($columns / $grid-columns));
+  }
+}
+@mixin make-md-column-push($columns) {
+  @media (min-width: $screen-md-min) {
+    left: percentage(($columns / $grid-columns));
+  }
+}
+@mixin make-md-column-pull($columns) {
+  @media (min-width: $screen-md-min) {
+    right: percentage(($columns / $grid-columns));
+  }
+}
+
+// Generate the large columns
+@mixin make-lg-column($columns, $gutter: $grid-gutter-width) {
+  position: relative;
+  min-height: 1px;
+  padding-right: ($gutter / 2);
+  padding-left: ($gutter / 2);
+
+  @media (min-width: $screen-lg-min) {
+    float: left;
+    width: percentage(($columns / $grid-columns));
+  }
+}
+@mixin make-lg-column-offset($columns) {
+  @media (min-width: $screen-lg-min) {
+    margin-left: percentage(($columns / $grid-columns));
+  }
+}
+@mixin make-lg-column-push($columns) {
+  @media (min-width: $screen-lg-min) {
+    left: percentage(($columns / $grid-columns));
+  }
+}
+@mixin make-lg-column-pull($columns) {
+  @media (min-width: $screen-lg-min) {
+    right: percentage(($columns / $grid-columns));
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_forms.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_forms.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_forms.scss	(revision 3762)
@@ -0,0 +1,88 @@
+// Form validation states
+//
+// Used in forms.less to generate the form validation CSS for warnings, errors,
+// and successes.
+
+@mixin form-control-validation($text-color: #555, $border-color: #ccc, $background-color: #f5f5f5) {
+  // Color the label and help text
+  .help-block,
+  .control-label,
+  .radio,
+  .checkbox,
+  .radio-inline,
+  .checkbox-inline,
+  &.radio label,
+  &.checkbox label,
+  &.radio-inline label,
+  &.checkbox-inline label  {
+    color: $text-color;
+  }
+  // Set the border and box shadow on specific inputs to match
+  .form-control {
+    border-color: $border-color;
+    @include box-shadow(inset 0 1px 1px rgba(0, 0, 0, .075)); // Redeclare so transitions work
+    &:focus {
+      border-color: darken($border-color, 10%);
+      $shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px lighten($border-color, 20%);
+      @include box-shadow($shadow);
+    }
+  }
+  // Set validation states also for addons
+  .input-group-addon {
+    color: $text-color;
+    background-color: $background-color;
+    border-color: $border-color;
+  }
+  // Optional feedback icon
+  .form-control-feedback {
+    color: $text-color;
+  }
+}
+
+
+// Form control focus state
+//
+// Generate a customized focus state and for any input with the specified color,
+// which defaults to the `$input-border-focus` variable.
+//
+// We highly encourage you to not customize the default value, but instead use
+// this to tweak colors on an as-needed basis. This aesthetic change is based on
+// WebKit's default styles, but applicable to a wider range of browsers. Its
+// usability and accessibility should be taken into account with any change.
+//
+// Example usage: change the default blue border and shadow to white for better
+// contrast against a dark gray background.
+@mixin form-control-focus($color: $input-border-focus) {
+  $color-rgba: rgba(red($color), green($color), blue($color), .6);
+  &:focus {
+    border-color: $color;
+    outline: 0;
+    @include box-shadow(inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px $color-rgba);
+  }
+}
+
+// Form control sizing
+//
+// Relative text size, padding, and border-radii changes for form controls. For
+// horizontal sizing, wrap controls in the predefined grid classes. `<select>`
+// element gets special love because it's special, and that's a fact!
+// [converter] $parent hack
+@mixin input-size($parent, $input-height, $padding-vertical, $padding-horizontal, $font-size, $line-height, $border-radius) {
+  #{$parent} {
+    height: $input-height;
+    padding: $padding-vertical $padding-horizontal;
+    font-size: $font-size;
+    line-height: $line-height;
+    border-radius: $border-radius;
+  }
+
+  select#{$parent} {
+    height: $input-height;
+    line-height: $input-height;
+  }
+
+  textarea#{$parent},
+  select[multiple]#{$parent} {
+    height: auto;
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_pagination.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_pagination.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_pagination.scss	(revision 3762)
@@ -0,0 +1,24 @@
+// Pagination
+
+@mixin pagination-size($padding-vertical, $padding-horizontal, $font-size, $line-height, $border-radius) {
+  > li {
+    > a,
+    > span {
+      padding: $padding-vertical $padding-horizontal;
+      font-size: $font-size;
+      line-height: $line-height;
+    }
+    &:first-child {
+      > a,
+      > span {
+        @include border-left-radius($border-radius);
+      }
+    }
+    &:last-child {
+      > a,
+      > span {
+        @include border-right-radius($border-radius);
+      }
+    }
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_alerts.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_alerts.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_alerts.scss	(revision 3762)
@@ -0,0 +1,15 @@
+// Alerts
+
+@mixin alert-variant($background, $border, $text-color) {
+  color: $text-color;
+  background-color: $background;
+  border-color: $border;
+
+  hr {
+    border-top-color: darken($border, 5%);
+  }
+
+  .alert-link {
+    color: darken($text-color, 10%);
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_hide-text.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_hide-text.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_hide-text.scss	(revision 3762)
@@ -0,0 +1,21 @@
+// CSS image replacement
+//
+// Heads up! v3 launched with only `.hide-text()`, but per our pattern for
+// mixins being reused as classes with the same name, this doesn't hold up. As
+// of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`.
+//
+// Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757
+
+// Deprecated as of v3.0.1 (has been removed in v4)
+@mixin hide-text() {
+  font: 0/0 a;
+  color: transparent;
+  text-shadow: none;
+  background-color: transparent;
+  border: 0;
+}
+
+// New mixin to use as of v3.0.1
+@mixin text-hide() {
+  @include hide-text;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss	(revision 3762)
@@ -0,0 +1,12 @@
+// Typography
+
+// [converter] $parent hack
+@mixin text-emphasis-variant($parent, $color) {
+  #{$parent} {
+    color: $color;
+  }
+  a#{$parent}:hover,
+  a#{$parent}:focus {
+    color: darken($color, 10%);
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_table-row.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_table-row.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_table-row.scss	(revision 3762)
@@ -0,0 +1,28 @@
+// Tables
+
+@mixin table-row-variant($state, $background) {
+  // Exact selectors below required to override `.table-striped` and prevent
+  // inheritance to nested tables.
+  .table > thead > tr,
+  .table > tbody > tr,
+  .table > tfoot > tr {
+    > td.#{$state},
+    > th.#{$state},
+    &.#{$state} > td,
+    &.#{$state} > th {
+      background-color: $background;
+    }
+  }
+
+  // Hover states for `.table-hover`
+  // Note: this is not available for cells or rows within `thead` or `tfoot`.
+  .table-hover > tbody > tr {
+    > td.#{$state}:hover,
+    > th.#{$state}:hover,
+    &.#{$state}:hover > td,
+    &:hover > .#{$state},
+    &.#{$state}:hover > th {
+      background-color: darken($background, 5%);
+    }
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_clearfix.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_clearfix.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_clearfix.scss	(revision 3762)
@@ -0,0 +1,22 @@
+// Clearfix
+//
+// For modern browsers
+// 1. The space content is one way to avoid an Opera bug when the
+//    contenteditable attribute is included anywhere else in the document.
+//    Otherwise it causes space to appear at the top and bottom of elements
+//    that are clearfixed.
+// 2. The use of `table` rather than `block` is only necessary if using
+//    `:before` to contain the top-margins of child elements.
+//
+// Source: http://nicolasgallagher.com/micro-clearfix-hack/
+
+@mixin clearfix() {
+  &:before,
+  &:after {
+    display: table; // 2
+    content: " "; // 1
+  }
+  &:after {
+    clear: both;
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_buttons.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_buttons.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_buttons.scss	(revision 3762)
@@ -0,0 +1,61 @@
+// Button variants
+//
+// Easily pump out default styles, as well as :hover, :focus, :active,
+// and disabled options for all buttons
+
+@mixin button-variant($color, $background, $border) {
+  color: $color;
+  background-color: $background;
+  border-color: $border;
+
+  &:focus,
+  &.focus {
+    color: $color;
+    background-color: darken($background, 10%);
+    border-color: darken($border, 25%);
+  }
+  &:hover {
+    color: $color;
+    background-color: darken($background, 10%);
+    border-color: darken($border, 12%);
+  }
+  &:active,
+  &.active,
+  .open > &.dropdown-toggle {
+    color: $color;
+    background-color: darken($background, 10%);
+    background-image: none;
+    border-color: darken($border, 12%);
+
+    &:hover,
+    &:focus,
+    &.focus {
+      color: $color;
+      background-color: darken($background, 17%);
+      border-color: darken($border, 25%);
+    }
+  }
+  &.disabled,
+  &[disabled],
+  fieldset[disabled] & {
+    &:hover,
+    &:focus,
+    &.focus {
+      background-color: $background;
+      border-color: $border;
+    }
+  }
+
+  .badge {
+    color: $background;
+    background-color: $color;
+  }
+}
+
+// Button sizes
+@mixin button-size($padding-vertical, $padding-horizontal, $font-size, $line-height, $border-radius) {
+  padding: $padding-vertical $padding-horizontal;
+  font-size: $font-size;
+  line-height: $line-height;
+  border-radius: $border-radius;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_resize.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_resize.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_resize.scss	(revision 3762)
@@ -0,0 +1,6 @@
+// Resize anything
+
+@mixin resizable($direction) {
+  overflow: auto; // Per CSS3 UI, `resize` only applies when `overflow` isn't `visible`
+  resize: $direction; // Options: horizontal, vertical, both
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_labels.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_labels.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_labels.scss	(revision 3762)
@@ -0,0 +1,12 @@
+// Labels
+
+@mixin label-variant($color) {
+  background-color: $color;
+
+  &[href] {
+    &:hover,
+    &:focus {
+      background-color: darken($color, 10%);
+    }
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_border-radius.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_border-radius.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_border-radius.scss	(revision 3762)
@@ -0,0 +1,18 @@
+// Single side border-radius
+
+@mixin border-top-radius($radius) {
+  border-top-left-radius: $radius;
+  border-top-right-radius: $radius;
+}
+@mixin border-right-radius($radius) {
+  border-top-right-radius: $radius;
+  border-bottom-right-radius: $radius;
+}
+@mixin border-bottom-radius($radius) {
+  border-bottom-right-radius: $radius;
+  border-bottom-left-radius: $radius;
+}
+@mixin border-left-radius($radius) {
+  border-top-left-radius: $radius;
+  border-bottom-left-radius: $radius;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_reset-text.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_reset-text.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_reset-text.scss	(revision 3762)
@@ -0,0 +1,18 @@
+@mixin reset-text() {
+  font-family: $font-family-base;
+  // We deliberately do NOT reset font-size.
+  font-style: normal;
+  font-weight: 400;
+  line-height: $line-height-base;
+  line-break: auto;
+  text-align: left; // Fallback for where `start` is not supported
+  text-align: start;
+  text-decoration: none;
+  text-shadow: none;
+  text-transform: none;
+  letter-spacing: normal;
+  word-break: normal;
+  word-spacing: normal;
+  word-wrap: normal;
+  white-space: normal;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_list-group.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_list-group.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_list-group.scss	(revision 3762)
@@ -0,0 +1,32 @@
+// List Groups
+
+@mixin list-group-item-variant($state, $background, $color) {
+  .list-group-item-#{$state} {
+    color: $color;
+    background-color: $background;
+
+    // [converter] extracted a&, button& to a.list-group-item-#{$state}, button.list-group-item-#{$state}
+  }
+
+  a.list-group-item-#{$state},
+  button.list-group-item-#{$state} {
+    color: $color;
+
+    .list-group-item-heading {
+      color: inherit;
+    }
+
+    &:hover,
+    &:focus {
+      color: $color;
+      background-color: darken($background, 5%);
+    }
+    &.active,
+    &.active:hover,
+    &.active:focus {
+      color: #fff;
+      background-color: $color;
+      border-color: $color;
+    }
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_reset-filter.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_reset-filter.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_reset-filter.scss	(revision 3762)
@@ -0,0 +1,8 @@
+// Reset filters for IE
+//
+// When you need to remove a gradient background, do not forget to use this to reset
+// the IE filter for IE9 and below.
+
+@mixin reset-filter() {
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_progress-bar.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_progress-bar.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_progress-bar.scss	(revision 3762)
@@ -0,0 +1,10 @@
+// Progress bars
+
+@mixin progress-bar-variant($color) {
+  background-color: $color;
+
+  // Deprecated parent class requirement as of v3.2.0
+  .progress-striped & {
+    @include gradient-striped;
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_opacity.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_opacity.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_opacity.scss	(revision 3762)
@@ -0,0 +1,7 @@
+// Opacity
+
+@mixin opacity($opacity) {
+  $opacity-ie: ($opacity * 100);  // IE8 filter
+  filter: alpha(opacity=$opacity-ie);
+  opacity: $opacity;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_center-block.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_center-block.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_center-block.scss	(revision 3762)
@@ -0,0 +1,7 @@
+// Center-align a block level element
+
+@mixin center-block() {
+  display: block;
+  margin-right: auto;
+  margin-left: auto;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_nav-divider.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_nav-divider.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_nav-divider.scss	(revision 3762)
@@ -0,0 +1,10 @@
+// Horizontal dividers
+//
+// Dividers (basically an hr) within dropdowns and nav lists
+
+@mixin nav-divider($color: #e5e5e5) {
+  height: 1px;
+  margin: (($line-height-computed / 2) - 1) 0;
+  overflow: hidden;
+  background-color: $color;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_size.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_size.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs3/assets/stylesheets/bootstrap/mixins/_size.scss	(revision 3762)
@@ -0,0 +1,10 @@
+// Sizing shortcuts
+
+@mixin size($width, $height) {
+  width: $width;
+  height: $height;
+}
+
+@mixin square($size) {
+  @include size($size, $size);
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/helpers/_vr.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/helpers/_vr.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/helpers/_vr.scss	(revision 3762)
@@ -0,0 +1,9 @@
+.vr {
+  display: inline-block;
+  align-self: stretch;
+  -webkit-align-self: stretch;
+  width: 1px;
+  min-height: 1em;
+  background-color: currentcolor;
+  opacity: $hr-opacity;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/helpers/_stacks.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/helpers/_stacks.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/helpers/_stacks.scss	(revision 3762)
@@ -0,0 +1,23 @@
+// scss-docs-start stacks
+.hstack {
+  display: flex;
+  display: -webkit-flex;
+  flex-direction: row;
+  -webkit-flex-direction: row;
+  align-items: center;
+  -webkit-align-items: center;
+  align-self: stretch;
+  -webkit-align-self: stretch;
+}
+
+.vstack {
+  display: flex;
+  display: -webkit-flex;
+  flex: 1 1 auto;
+  -webkit-flex: 1 1 auto;
+  flex-direction: column;
+  -webkit-flex-direction: column;
+  align-self: stretch;
+  -webkit-align-self: stretch;
+}
+// scss-docs-end stacks
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/helpers/_text-truncation.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/helpers/_text-truncation.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/helpers/_text-truncation.scss	(revision 3762)
@@ -0,0 +1,7 @@
+//
+// Text truncation
+//
+
+.text-truncate {
+  @include text-truncate();
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/helpers/_clearfix.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/helpers/_clearfix.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/helpers/_clearfix.scss	(revision 3762)
@@ -0,0 +1,3 @@
+.clearfix {
+  @include clearfix();
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/helpers/_ratio.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/helpers/_ratio.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/helpers/_ratio.scss	(revision 3762)
@@ -0,0 +1,26 @@
+// Credit: Nicolas Gallagher and SUIT CSS.
+
+.ratio {
+  position: relative;
+  width: 100%;
+
+  &::before {
+    display: block;
+    padding-top: var(--#{$prefix}aspect-ratio);
+    content: "";
+  }
+
+  > * {
+    position: absolute;
+    top: 0;
+    left: 0;
+    width: 100%;
+    height: 100%;
+  }
+}
+
+@each $key, $ratio in $aspect-ratios {
+  .ratio-#{$key} {
+    --#{$prefix}aspect-ratio: #{$ratio};
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/helpers/_stretched-link.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/helpers/_stretched-link.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/helpers/_stretched-link.scss	(revision 3762)
@@ -0,0 +1,15 @@
+//
+// Stretched link
+//
+
+.stretched-link {
+  &::#{$stretched-link-pseudo-element} {
+    position: absolute;
+    top: 0;
+    right: 0;
+    bottom: 0;
+    left: 0;
+    z-index: $stretched-link-z-index;
+    content: "";
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/helpers/_visually-hidden.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/helpers/_visually-hidden.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/helpers/_visually-hidden.scss	(revision 3762)
@@ -0,0 +1,8 @@
+//
+// Visually hidden
+//
+
+.visually-hidden,
+.visually-hidden-focusable:not(:focus):not(:focus-within) {
+  @include visually-hidden();
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/helpers/_color-bg.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/helpers/_color-bg.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/helpers/_color-bg.scss	(revision 3762)
@@ -0,0 +1,10 @@
+// stylelint-disable function-name-case
+
+// All-caps `RGBA()` function used because of this Sass bug: https://github.com/sass/node-sass/issues/2251
+@each $color, $value in $theme-colors {
+  $color-rgb: to-rgb($value);
+  .text-bg-#{$color} {
+    color: color-contrast($value) if($enable-important-utilities, !important, null);
+    background-color: RGBA($color-rgb, var(--#{$prefix}bg-opacity, 1)) if($enable-important-utilities, !important, null);
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/helpers/_position.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/helpers/_position.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/helpers/_position.scss	(revision 3762)
@@ -0,0 +1,36 @@
+// Shorthand
+
+.fixed-top {
+  position: fixed;
+  top: 0;
+  right: 0;
+  left: 0;
+  z-index: $zindex-fixed;
+}
+
+.fixed-bottom {
+  position: fixed;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  z-index: $zindex-fixed;
+}
+
+// Responsive sticky top and bottom
+@each $breakpoint in map-keys($grid-breakpoints) {
+  @include media-breakpoint-up($breakpoint) {
+    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
+
+    .sticky#{$infix}-top {
+      position: sticky;
+      top: 0;
+      z-index: $zindex-sticky;
+    }
+
+    .sticky#{$infix}-bottom {
+      position: sticky;
+      bottom: 0;
+      z-index: $zindex-sticky;
+    }
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/helpers/_colored-links.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/helpers/_colored-links.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/helpers/_colored-links.scss	(revision 3762)
@@ -0,0 +1,12 @@
+@each $color, $value in $theme-colors {
+  .link-#{$color} {
+    color: $value !important; // stylelint-disable-line declaration-no-important
+
+    @if $link-shade-percentage != 0 {
+      &:hover,
+      &:focus {
+        color: if(color-contrast($value) == $color-contrast-light, shade-color($value, $link-shade-percentage), tint-color($value, $link-shade-percentage)) !important; // stylelint-disable-line declaration-no-important
+      }
+    }
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_container.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_container.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_container.scss	(revision 3762)
@@ -0,0 +1,11 @@
+// Container mixins
+
+@mixin make-container($gutter: $container-padding-x) {
+  --#{$prefix}gutter-x: #{$gutter};
+  --#{$prefix}gutter-y: 0;
+  width: 100%;
+  padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list
+  padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list
+  margin-right: auto;
+  margin-left: auto;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_image.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_image.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_image.scss	(revision 3762)
@@ -0,0 +1,16 @@
+// Image Mixins
+// - Responsive image
+// - Retina image
+
+
+// Responsive image
+//
+// Keep images from scaling beyond the width of their parents.
+
+@mixin img-fluid {
+  // Part 1: Set a maximum relative to the parent
+  max-width: 100%;
+  // Part 2: Override the height to auto, otherwise images will be stretched
+  // when setting a width and height attribute on the img element.
+  height: auto;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_grid.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_grid.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_grid.scss	(revision 3762)
@@ -0,0 +1,159 @@
+// Grid system
+//
+// Generate semantic grid columns with these mixins.
+
+@mixin make-row($gutter: $grid-gutter-width) {
+  --#{$prefix}gutter-x: #{$gutter};
+  --#{$prefix}gutter-y: 0;
+  display: flex;
+  display: -webkit-flex;
+  flex-wrap: wrap;
+  -webkit-flex-wrap: wrap;
+  // TODO: Revisit calc order after https://github.com/react-bootstrap/react-bootstrap/issues/6039 is fixed
+  margin-top: calc(-1 * var(--#{$prefix}gutter-y)); // stylelint-disable-line function-disallowed-list
+  margin-right: calc(-.5 * var(--#{$prefix}gutter-x)); // stylelint-disable-line function-disallowed-list
+  margin-left: calc(-.5 * var(--#{$prefix}gutter-x)); // stylelint-disable-line function-disallowed-list
+}
+
+@mixin make-col-ready() {
+  // Add box sizing if only the grid is loaded
+  box-sizing: if(variable-exists(include-column-box-sizing) and $include-column-box-sizing, border-box, null);
+  // Prevent columns from becoming too narrow when at smaller grid tiers by
+  // always setting `width: 100%;`. This works because we set the width
+  // later on to override this initial width.
+  flex-shrink: 0;
+  -webkit-flex-shrink: 0;
+  width: 100%;
+  max-width: 100%; // Prevent `.col-auto`, `.col` (& responsive variants) from breaking out the grid
+  padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list
+  padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list
+  margin-top: var(--#{$prefix}gutter-y);
+}
+
+@mixin make-col($size: false, $columns: $grid-columns) {
+  @if $size {
+    flex: 0 0 auto;
+    -webkit-flex: 0 0 auto;
+    width: percentage(divide($size, $columns));
+
+  } @else {
+    flex: 1 1 0;
+    -webkit-flex: 1 1 0;
+    max-width: 100%;
+  }
+}
+
+@mixin make-col-auto() {
+  flex: 0 0 auto;
+  -webkit-flex: 0 0 auto;
+  width: auto;
+}
+
+@mixin make-col-offset($size, $columns: $grid-columns) {
+  $num: divide($size, $columns);
+  margin-left: if($num == 0, 0, percentage($num));
+}
+
+// Row columns
+//
+// Specify on a parent element(e.g., .row) to force immediate children into NN
+// number of columns. Supports wrapping to new lines, but does not do a Masonry
+// style grid.
+@mixin row-cols($count) {
+  > * {
+    flex: 0 0 auto;
+    -webkit-flex: 0 0 auto;
+    width: divide(100%, $count);
+  }
+}
+
+// Framework grid generation
+//
+// Used only by Bootstrap to generate the correct number of grid classes given
+// any value of `$grid-columns`.
+
+@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {
+  @each $breakpoint in map-keys($breakpoints) {
+    $infix: breakpoint-infix($breakpoint, $breakpoints);
+
+    @include media-breakpoint-up($breakpoint, $breakpoints) {
+      // Provide basic `.col-{bp}` classes for equal-width flexbox columns
+      .col#{$infix} {
+        flex: 1 0 0%; // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4
+        -webkit-flex: 1 0 0%; // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4
+      }
+
+      .row-cols#{$infix}-auto > * {
+        @include make-col-auto();
+      }
+
+      @if $grid-row-columns > 0 {
+        @for $i from 1 through $grid-row-columns {
+          .row-cols#{$infix}-#{$i} {
+            @include row-cols($i);
+          }
+        }
+      }
+
+      .col#{$infix}-auto {
+        @include make-col-auto();
+      }
+
+      @if $columns > 0 {
+        @for $i from 1 through $columns {
+          .col#{$infix}-#{$i} {
+            @include make-col($i, $columns);
+          }
+        }
+
+        // `$columns - 1` because offsetting by the width of an entire row isn't possible
+        @for $i from 0 through ($columns - 1) {
+          @if not ($infix == "" and $i == 0) { // Avoid emitting useless .offset-0
+            .offset#{$infix}-#{$i} {
+              @include make-col-offset($i, $columns);
+            }
+          }
+        }
+      }
+
+      // Gutters
+      //
+      // Make use of `.g-*`, `.gx-*` or `.gy-*` utilities to change spacing between the columns.
+      @each $key, $value in $gutters {
+        .g#{$infix}-#{$key},
+        .gx#{$infix}-#{$key} {
+          --#{$prefix}gutter-x: #{$value};
+        }
+
+        .g#{$infix}-#{$key},
+        .gy#{$infix}-#{$key} {
+          --#{$prefix}gutter-y: #{$value};
+        }
+      }
+    }
+  }
+}
+
+@mixin make-cssgrid($columns: $grid-columns, $breakpoints: $grid-breakpoints) {
+  @each $breakpoint in map-keys($breakpoints) {
+    $infix: breakpoint-infix($breakpoint, $breakpoints);
+
+    @include media-breakpoint-up($breakpoint, $breakpoints) {
+      @if $columns > 0 {
+        @for $i from 1 through $columns {
+          .g-col#{$infix}-#{$i} {
+            grid-column: auto / span $i;
+          }
+        }
+
+        // Start with `1` because `0` is and invalid value.
+        // Ends with `$columns - 1` because offsetting by the width of an entire row isn't possible.
+        @for $i from 1 through ($columns - 1) {
+          .g-start#{$infix}-#{$i} {
+            grid-column-start: $i;
+          }
+        }
+      }
+    }
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_backdrop.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_backdrop.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_backdrop.scss	(revision 3762)
@@ -0,0 +1,14 @@
+// Shared between modals and offcanvases
+@mixin overlay-backdrop($zindex, $backdrop-bg, $backdrop-opacity) {
+  position: fixed;
+  top: 0;
+  left: 0;
+  z-index: $zindex;
+  width: 100vw;
+  height: 100vh;
+  background-color: $backdrop-bg;
+
+  // Fade for backdrop
+  &.fade { opacity: 0; }
+  &.show { opacity: $backdrop-opacity; }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_forms.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_forms.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_forms.scss	(revision 3762)
@@ -0,0 +1,152 @@
+// This mixin uses an `if()` technique to be compatible with Dart Sass
+// See https://github.com/sass/sass/issues/1873#issuecomment-152293725 for more details
+
+// scss-docs-start form-validation-mixins
+@mixin form-validation-state-selector($state) {
+  @if ($state == "valid" or $state == "invalid") {
+    .was-validated #{if(&, "&", "")}:#{$state},
+    #{if(&, "&", "")}.is-#{$state} {
+      @content;
+    }
+  } @else {
+    #{if(&, "&", "")}.is-#{$state} {
+      @content;
+    }
+  }
+}
+
+@mixin form-validation-state(
+  $state,
+  $color,
+  $icon,
+  $tooltip-color: color-contrast($color),
+  $tooltip-bg-color: rgba($color, $form-feedback-tooltip-opacity),
+  $focus-box-shadow: 0 0 $input-btn-focus-blur $input-focus-width rgba($color, $input-btn-focus-color-opacity)
+) {
+  .#{$state}-feedback {
+    display: none;
+    width: 100%;
+    margin-top: $form-feedback-margin-top;
+    @include font-size($form-feedback-font-size);
+    font-style: $form-feedback-font-style;
+    color: $color;
+  }
+
+  .#{$state}-tooltip {
+    position: absolute;
+    top: 100%;
+    z-index: 5;
+    display: none;
+    max-width: 100%; // Contain to parent when possible
+    padding: $form-feedback-tooltip-padding-y $form-feedback-tooltip-padding-x;
+    margin-top: .1rem;
+    @include font-size($form-feedback-tooltip-font-size);
+    line-height: $form-feedback-tooltip-line-height;
+    color: $tooltip-color;
+    background-color: $tooltip-bg-color;
+    @include border-radius($form-feedback-tooltip-border-radius);
+  }
+
+  @include form-validation-state-selector($state) {
+    ~ .#{$state}-feedback,
+    ~ .#{$state}-tooltip {
+      display: block;
+    }
+  }
+
+  .form-control {
+    @include form-validation-state-selector($state) {
+      border-color: $color;
+
+      @if $enable-validation-icons {
+        padding-right: $input-height-inner;
+        background-image: escape-svg($icon);
+        background-repeat: no-repeat;
+        background-position: right $input-height-inner-quarter center;
+        background-size: $input-height-inner-half $input-height-inner-half;
+      }
+
+      &:focus {
+        border-color: $color;
+        box-shadow: $focus-box-shadow;
+      }
+    }
+  }
+
+  // stylelint-disable-next-line selector-no-qualifying-type
+  textarea.form-control {
+    @include form-validation-state-selector($state) {
+      @if $enable-validation-icons {
+        padding-right: $input-height-inner;
+        background-position: top $input-height-inner-quarter right $input-height-inner-quarter;
+      }
+    }
+  }
+
+  .form-select {
+    @include form-validation-state-selector($state) {
+      border-color: $color;
+
+      @if $enable-validation-icons {
+        &:not([multiple]):not([size]),
+        &:not([multiple])[size="1"] {
+          padding-right: $form-select-feedback-icon-padding-end;
+          background-image: escape-svg($form-select-indicator), escape-svg($icon);
+          background-position: $form-select-bg-position, $form-select-feedback-icon-position;
+          background-size: $form-select-bg-size, $form-select-feedback-icon-size;
+        }
+      }
+
+      &:focus {
+        border-color: $color;
+        box-shadow: $focus-box-shadow;
+      }
+    }
+  }
+
+  .form-control-color {
+    @include form-validation-state-selector($state) {
+      @if $enable-validation-icons {
+        width: add($form-color-width, $input-height-inner);
+      }
+    }
+  }
+
+  .form-check-input {
+    @include form-validation-state-selector($state) {
+      border-color: $color;
+
+      &:checked {
+        background-color: $color;
+      }
+
+      &:focus {
+        box-shadow: $focus-box-shadow;
+      }
+
+      ~ .form-check-label {
+        color: $color;
+      }
+    }
+  }
+  .form-check-inline .form-check-input {
+    ~ .#{$state}-feedback {
+      margin-left: .5em;
+    }
+  }
+
+  .input-group {
+    > .form-control:not(:focus),
+    > .form-select:not(:focus),
+    > .form-floating:not(:focus-within) {
+      @include form-validation-state-selector($state) {
+        @if $state == "valid" {
+          z-index: 3;
+        } @else if $state == "invalid" {
+          z-index: 4;
+        }
+      }
+    }
+  }
+}
+// scss-docs-end form-validation-mixins
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_pagination.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_pagination.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_pagination.scss	(revision 3762)
@@ -0,0 +1,10 @@
+// Pagination
+
+// scss-docs-start pagination-mixin
+@mixin pagination-size($padding-y, $padding-x, $font-size, $border-radius) {
+  --#{$prefix}pagination-padding-x: #{$padding-x};
+  --#{$prefix}pagination-padding-y: #{$padding-y};
+  @include rfs($font-size, --#{$prefix}pagination-font-size);
+  --#{$prefix}pagination-border-radius: #{$border-radius};
+}
+// scss-docs-end pagination-mixin
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_transition.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_transition.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_transition.scss	(revision 3762)
@@ -0,0 +1,26 @@
+// stylelint-disable property-disallowed-list
+@mixin transition($transition...) {
+  @if length($transition) == 0 {
+    $transition: $transition-base;
+  }
+
+  @if length($transition) > 1 {
+    @each $value in $transition {
+      @if $value == null or $value == none {
+        @warn "The keyword 'none' or 'null' must be used as a single argument.";
+      }
+    }
+  }
+
+  @if $enable-transitions {
+    @if nth($transition, 1) != null {
+      transition: $transition;
+    }
+
+    @if $enable-reduced-motion and nth($transition, 1) != null and nth($transition, 1) != none {
+      @media (prefers-reduced-motion: reduce) {
+        transition: none;
+      }
+    }
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_deprecate.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_deprecate.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_deprecate.scss	(revision 3762)
@@ -0,0 +1,10 @@
+// Deprecate mixin
+//
+// This mixin can be used to deprecate mixins or functions.
+// `$enable-deprecation-messages` is a global variable, `$ignore-warning` is a variable that can be passed to
+// some deprecated mixins to suppress the warning (for example if the mixin is still be used in the current version of Bootstrap)
+@mixin deprecate($name, $deprecate-version, $remove-version, $ignore-warning: false) {
+  @if ($enable-deprecation-messages != false and $ignore-warning != true) {
+    @warn "#{$name} has been deprecated as of #{$deprecate-version}. It will be removed entirely in #{$remove-version}.";
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_clearfix.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_clearfix.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_clearfix.scss	(revision 3762)
@@ -0,0 +1,9 @@
+// scss-docs-start clearfix
+@mixin clearfix() {
+  &::after {
+    display: block;
+    clear: both;
+    content: "";
+  }
+}
+// scss-docs-end clearfix
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_caret.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_caret.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_caret.scss	(revision 3762)
@@ -0,0 +1,64 @@
+// scss-docs-start caret-mixins
+@mixin caret-down {
+  border-top: $caret-width solid;
+  border-right: $caret-width solid transparent;
+  border-bottom: 0;
+  border-left: $caret-width solid transparent;
+}
+
+@mixin caret-up {
+  border-top: 0;
+  border-right: $caret-width solid transparent;
+  border-bottom: $caret-width solid;
+  border-left: $caret-width solid transparent;
+}
+
+@mixin caret-end {
+  border-top: $caret-width solid transparent;
+  border-right: 0;
+  border-bottom: $caret-width solid transparent;
+  border-left: $caret-width solid;
+}
+
+@mixin caret-start {
+  border-top: $caret-width solid transparent;
+  border-right: $caret-width solid;
+  border-bottom: $caret-width solid transparent;
+}
+
+@mixin caret($direction: down) {
+  @if $enable-caret {
+    &::after {
+      display: inline-block;
+      margin-left: $caret-spacing;
+      vertical-align: $caret-vertical-align;
+      content: "";
+      @if $direction == down {
+        @include caret-down();
+      } @else if $direction == up {
+        @include caret-up();
+      } @else if $direction == end {
+        @include caret-end();
+      }
+    }
+
+    @if $direction == start {
+      &::after {
+        display: none;
+      }
+
+      &::before {
+        display: inline-block;
+        margin-right: $caret-spacing;
+        vertical-align: $caret-vertical-align;
+        content: "";
+        @include caret-start();
+      }
+    }
+
+    &:empty::after {
+      margin-left: 0;
+    }
+  }
+}
+// scss-docs-end caret-mixins
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_buttons.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_buttons.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_buttons.scss	(revision 3762)
@@ -0,0 +1,71 @@
+// Button variants
+//
+// Easily pump out default styles, as well as :hover, :focus, :active,
+// and disabled options for all buttons
+
+// scss-docs-start btn-variant-mixin
+@mixin button-variant(
+  $background,
+  $border,
+  $color: color-contrast($background),
+  $hover-background: if($color == $color-contrast-light, shade-color($background, $btn-hover-bg-shade-amount), tint-color($background, $btn-hover-bg-tint-amount)),
+  $hover-border: if($color == $color-contrast-light, shade-color($border, $btn-hover-border-shade-amount), tint-color($border, $btn-hover-border-tint-amount)),
+  $hover-color: color-contrast($hover-background),
+  $active-background: if($color == $color-contrast-light, shade-color($background, $btn-active-bg-shade-amount), tint-color($background, $btn-active-bg-tint-amount)),
+  $active-border: if($color == $color-contrast-light, shade-color($border, $btn-active-border-shade-amount), tint-color($border, $btn-active-border-tint-amount)),
+  $active-color: color-contrast($active-background),
+  $disabled-background: $background,
+  $disabled-border: $border,
+  $disabled-color: color-contrast($disabled-background)
+) {
+  --#{$prefix}btn-color: #{$color};
+  --#{$prefix}btn-bg: #{$background};
+  --#{$prefix}btn-border-color: #{$border};
+  --#{$prefix}btn-hover-color: #{$hover-color};
+  --#{$prefix}btn-hover-bg: #{$hover-background};
+  --#{$prefix}btn-hover-border-color: #{$hover-border};
+  --#{$prefix}btn-focus-shadow-rgb: #{to-rgb(mix($color, $border, 15%))};
+  --#{$prefix}btn-active-color: #{$active-color};
+  --#{$prefix}btn-active-bg: #{$active-background};
+  --#{$prefix}btn-active-border-color: #{$active-border};
+  --#{$prefix}btn-active-shadow: #{$btn-active-box-shadow};
+  --#{$prefix}btn-disabled-color: #{$disabled-color};
+  --#{$prefix}btn-disabled-bg: #{$disabled-background};
+  --#{$prefix}btn-disabled-border-color: #{$disabled-border};
+}
+// scss-docs-end btn-variant-mixin
+
+// scss-docs-start btn-outline-variant-mixin
+@mixin button-outline-variant(
+  $color,
+  $color-hover: color-contrast($color),
+  $active-background: $color,
+  $active-border: $color,
+  $active-color: color-contrast($active-background)
+) {
+  --#{$prefix}btn-color: #{$color};
+  --#{$prefix}btn-border-color: #{$color};
+  --#{$prefix}btn-hover-color: #{$color-hover};
+  --#{$prefix}btn-hover-bg: #{$active-background};
+  --#{$prefix}btn-hover-border-color: #{$active-border};
+  --#{$prefix}btn-focus-shadow-rgb: #{to-rgb($color)};
+  --#{$prefix}btn-active-color: #{$active-color};
+  --#{$prefix}btn-active-bg: #{$active-background};
+  --#{$prefix}btn-active-border-color: #{$active-border};
+  --#{$prefix}btn-active-shadow: #{$btn-active-box-shadow};
+  --#{$prefix}btn-disabled-color: #{$color};
+  --#{$prefix}btn-disabled-bg: transparent;
+  --#{$prefix}btn-disabled-border-color: #{$color};
+  --#{$prefix}btn-bg: transparent;
+  --#{$prefix}gradient: none;
+}
+// scss-docs-end btn-outline-variant-mixin
+
+// scss-docs-start btn-size-mixin
+@mixin button-size($padding-y, $padding-x, $font-size, $border-radius) {
+  --#{$prefix}btn-padding-y: #{$padding-y};
+  --#{$prefix}btn-padding-x: #{$padding-x};
+  @include rfs($font-size, --#{$prefix}btn-font-size);
+  --#{$prefix}btn-border-radius: #{$border-radius};
+}
+// scss-docs-end btn-size-mixin
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_lists.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_lists.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_lists.scss	(revision 3762)
@@ -0,0 +1,7 @@
+// Lists
+
+// Unstyled keeps list items block level, just removes default browser padding and list-style
+@mixin list-unstyled {
+  padding-left: 0;
+  list-style: none;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_visually-hidden.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_visually-hidden.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_visually-hidden.scss	(revision 3762)
@@ -0,0 +1,29 @@
+// stylelint-disable declaration-no-important
+
+// Hide content visually while keeping it accessible to assistive technologies
+//
+// See: https://www.a11yproject.com/posts/2013-01-11-how-to-hide-content/
+// See: https://kittygiraudel.com/2016/10/13/css-hide-and-seek/
+
+@mixin visually-hidden() {
+  position: absolute !important;
+  width: 1px !important;
+  height: 1px !important;
+  padding: 0 !important;
+  margin: -1px !important; // Fix for https://github.com/twbs/bootstrap/issues/25686
+  overflow: hidden !important;
+  clip: rect(0, 0, 0, 0) !important;
+  white-space: nowrap !important;
+  border: 0 !important;
+}
+
+// Use to only display content when it's focused, or one of its child elements is focused
+// (i.e. when focus is within the element/container that the class was applied to)
+//
+// Useful for "Skip to main content" links; see https://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1
+
+@mixin visually-hidden-focusable() {
+  &:not(:focus):not(:focus-within) {
+    @include visually-hidden();
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_resize.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_resize.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_resize.scss	(revision 3762)
@@ -0,0 +1,6 @@
+// Resize anything
+
+@mixin resizable($direction) {
+  overflow: auto; // Per CSS3 UI, `resize` only applies when `overflow` isn't `visible`
+  resize: $direction; // Options: horizontal, vertical, both
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_border-radius.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_border-radius.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_border-radius.scss	(revision 3762)
@@ -0,0 +1,78 @@
+// stylelint-disable property-disallowed-list
+// Single side border-radius
+
+// Helper function to replace negative values with 0
+@function valid-radius($radius) {
+  $return: ();
+  @each $value in $radius {
+    @if type-of($value) == number {
+      $return: append($return, max($value, 0));
+    } @else {
+      $return: append($return, $value);
+    }
+  }
+  @return $return;
+}
+
+// scss-docs-start border-radius-mixins
+@mixin border-radius($radius: $border-radius, $fallback-border-radius: false) {
+  @if $enable-rounded {
+    border-radius: valid-radius($radius);
+  }
+  @else if $fallback-border-radius != false {
+    border-radius: $fallback-border-radius;
+  }
+}
+
+@mixin border-top-radius($radius: $border-radius) {
+  @if $enable-rounded {
+    border-top-left-radius: valid-radius($radius);
+    border-top-right-radius: valid-radius($radius);
+  }
+}
+
+@mixin border-end-radius($radius: $border-radius) {
+  @if $enable-rounded {
+    border-top-right-radius: valid-radius($radius);
+    border-bottom-right-radius: valid-radius($radius);
+  }
+}
+
+@mixin border-bottom-radius($radius: $border-radius) {
+  @if $enable-rounded {
+    border-bottom-right-radius: valid-radius($radius);
+    border-bottom-left-radius: valid-radius($radius);
+  }
+}
+
+@mixin border-start-radius($radius: $border-radius) {
+  @if $enable-rounded {
+    border-top-left-radius: valid-radius($radius);
+    border-bottom-left-radius: valid-radius($radius);
+  }
+}
+
+@mixin border-top-start-radius($radius: $border-radius) {
+  @if $enable-rounded {
+    border-top-left-radius: valid-radius($radius);
+  }
+}
+
+@mixin border-top-end-radius($radius: $border-radius) {
+  @if $enable-rounded {
+    border-top-right-radius: valid-radius($radius);
+  }
+}
+
+@mixin border-bottom-end-radius($radius: $border-radius) {
+  @if $enable-rounded {
+    border-bottom-right-radius: valid-radius($radius);
+  }
+}
+
+@mixin border-bottom-start-radius($radius: $border-radius) {
+  @if $enable-rounded {
+    border-bottom-left-radius: valid-radius($radius);
+  }
+}
+// scss-docs-end border-radius-mixins
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_reset-text.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_reset-text.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_reset-text.scss	(revision 3762)
@@ -0,0 +1,17 @@
+@mixin reset-text {
+  font-family: $font-family-base;
+  // We deliberately do NOT reset font-size or overflow-wrap / word-wrap.
+  font-style: normal;
+  font-weight: $font-weight-normal;
+  line-height: $line-height-base;
+  text-align: left; // Fallback for where `start` is not supported
+  text-align: start;
+  text-decoration: none;
+  text-shadow: none;
+  text-transform: none;
+  letter-spacing: normal;
+  word-break: normal;
+  white-space: normal;
+  word-spacing: normal;
+  line-break: auto;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_list-group.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_list-group.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_list-group.scss	(revision 3762)
@@ -0,0 +1,24 @@
+// List Groups
+
+// scss-docs-start list-group-mixin
+@mixin list-group-item-variant($state, $background, $color) {
+  .list-group-item-#{$state} {
+    color: $color;
+    background-color: $background;
+
+    &.list-group-item-action {
+      &:hover,
+      &:focus {
+        color: $color;
+        background-color: shade-color($background, 10%);
+      }
+
+      &.active {
+        color: $white;
+        background-color: $color;
+        border-color: $color;
+      }
+    }
+  }
+}
+// scss-docs-end list-group-mixin
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_banner.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_banner.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_banner.scss	(revision 3762)
@@ -0,0 +1,9 @@
+@mixin bsBanner($file) {
+  /*!
+   * Bootstrap #{$file} v5.2.2 (https://getbootstrap.com/)
+   * Copyright 2011-2022 The Bootstrap Authors
+   * Copyright 2011-2022 Twitter, Inc.
+   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+   */
+}
+
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_text-truncate.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_text-truncate.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_text-truncate.scss	(revision 3762)
@@ -0,0 +1,8 @@
+// Text truncate
+// Requires inline-block or block for proper styling
+
+@mixin text-truncate() {
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_alert.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_alert.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_alert.scss	(revision 3762)
@@ -0,0 +1,15 @@
+// scss-docs-start alert-variant-mixin
+@mixin alert-variant($background, $border, $color) {
+  --#{$prefix}alert-color: #{$color};
+  --#{$prefix}alert-bg: #{$background};
+  --#{$prefix}alert-border-color: #{$border};
+
+  @if $enable-gradients {
+    background-image: var(--#{$prefix}gradient);
+  }
+
+  .alert-link {
+    color: shade-color($color, 20%);
+  }
+}
+// scss-docs-end alert-variant-mixin
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_utilities.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_utilities.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_utilities.scss	(revision 3762)
@@ -0,0 +1,97 @@
+// Utility generator
+// Used to generate utilities & print utilities
+@mixin generate-utility($utility, $infix, $is-rfs-media-query: false) {
+  $values: map-get($utility, values);
+
+  // If the values are a list or string, convert it into a map
+  @if type-of($values) == "string" or type-of(nth($values, 1)) != "list" {
+    $values: zip($values, $values);
+  }
+
+  @each $key, $value in $values {
+    $properties: map-get($utility, property);
+
+    // Multiple properties are possible, for example with vertical or horizontal margins or paddings
+    @if type-of($properties) == "string" {
+      $properties: append((), $properties);
+    }
+
+    // Use custom class if present
+    $property-class: if(map-has-key($utility, class), map-get($utility, class), nth($properties, 1));
+    $property-class: if($property-class == null, "", $property-class);
+
+    // Use custom CSS variable name if present, otherwise default to `class`
+    $css-variable-name: if(map-has-key($utility, css-variable-name), map-get($utility, css-variable-name), map-get($utility, class));
+
+    // State params to generate pseudo-classes
+    $state: if(map-has-key($utility, state), map-get($utility, state), ());
+
+    $infix: if($property-class == "" and str-slice($infix, 1, 1) == "-", str-slice($infix, 2), $infix);
+
+    // Don't prefix if value key is null (e.g. with shadow class)
+    $property-class-modifier: if($key, if($property-class == "" and $infix == "", "", "-") + $key, "");
+
+    @if map-get($utility, rfs) {
+      // Inside the media query
+      @if $is-rfs-media-query {
+        $val: rfs-value($value);
+
+        // Do not render anything if fluid and non fluid values are the same
+        $value: if($val == rfs-fluid-value($value), null, $val);
+      }
+      @else {
+        $value: rfs-fluid-value($value);
+      }
+    }
+
+    $is-css-var: map-get($utility, css-var);
+    $is-local-vars: map-get($utility, local-vars);
+    $is-rtl: map-get($utility, rtl);
+
+    @if $value != null {
+      @if $is-rtl == false {
+        /* rtl:begin:remove */
+      }
+
+      @if $is-css-var {
+        .#{$property-class + $infix + $property-class-modifier} {
+          --#{$prefix}#{$css-variable-name}: #{$value};
+        }
+
+        @each $pseudo in $state {
+          .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {
+            --#{$prefix}#{$css-variable-name}: #{$value};
+          }
+        }
+      } @else {
+        .#{$property-class + $infix + $property-class-modifier} {
+          @each $property in $properties {
+            @if $is-local-vars {
+              @each $local-var, $variable in $is-local-vars {
+                --#{$prefix}#{$local-var}: #{$variable};
+              }
+            }
+            #{$property}: $value if($enable-important-utilities, !important, null);
+          }
+        }
+
+        @each $pseudo in $state {
+          .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {
+            @each $property in $properties {
+              @if $is-local-vars {
+                @each $local-var, $variable in $is-local-vars {
+                  --#{$prefix}#{$local-var}: #{$variable};
+                }
+              }
+              #{$property}: $value if($enable-important-utilities, !important, null);
+            }
+          }
+        }
+      }
+
+      @if $is-rtl == false {
+        /* rtl:end:remove */
+      }
+    }
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_box-shadow.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_box-shadow.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_box-shadow.scss	(revision 3762)
@@ -0,0 +1,18 @@
+@mixin box-shadow($shadow...) {
+  @if $enable-shadows {
+    $result: ();
+
+    @each $value in $shadow {
+      @if $value != null {
+        $result: append($result, $value, "comma");
+      }
+      @if $value == none and length($shadow) > 1 {
+        @warn "The keyword 'none' must be used as a single argument.";
+      }
+    }
+
+    @if (length($result) > 0) {
+      box-shadow: $result;
+    }
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_table-variants.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_table-variants.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_table-variants.scss	(revision 3762)
@@ -0,0 +1,24 @@
+// scss-docs-start table-variant
+@mixin table-variant($state, $background) {
+  .table-#{$state} {
+    $color: color-contrast(opaque($body-bg, $background));
+    $hover-bg: mix($color, $background, percentage($table-hover-bg-factor));
+    $striped-bg: mix($color, $background, percentage($table-striped-bg-factor));
+    $active-bg: mix($color, $background, percentage($table-active-bg-factor));
+    $table-border-color: mix($color, $background, percentage($table-border-factor));
+
+    --#{$prefix}table-color: #{$color};
+    --#{$prefix}table-bg: #{$background};
+    --#{$prefix}table-border-color: #{$table-border-color};
+    --#{$prefix}table-striped-bg: #{$striped-bg};
+    --#{$prefix}table-striped-color: #{color-contrast($striped-bg)};
+    --#{$prefix}table-active-bg: #{$active-bg};
+    --#{$prefix}table-active-color: #{color-contrast($active-bg)};
+    --#{$prefix}table-hover-bg: #{$hover-bg};
+    --#{$prefix}table-hover-color: #{color-contrast($hover-bg)};
+
+    color: var(--#{$prefix}table-color);
+    border-color: var(--#{$prefix}table-border-color);
+  }
+}
+// scss-docs-end table-variant
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_color-scheme.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_color-scheme.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_color-scheme.scss	(revision 3762)
@@ -0,0 +1,7 @@
+// scss-docs-start mixin-color-scheme
+@mixin color-scheme($name) {
+  @media (prefers-color-scheme: #{$name}) {
+    @content;
+  }
+}
+// scss-docs-end mixin-color-scheme
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_gradients.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_gradients.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_gradients.scss	(revision 3762)
@@ -0,0 +1,47 @@
+// Gradients
+
+// scss-docs-start gradient-bg-mixin
+@mixin gradient-bg($color: null) {
+  background-color: $color;
+
+  @if $enable-gradients {
+    background-image: var(--#{$prefix}gradient);
+  }
+}
+// scss-docs-end gradient-bg-mixin
+
+// scss-docs-start gradient-mixins
+// Horizontal gradient, from left to right
+//
+// Creates two color stops, start and end, by specifying a color and position for each color stop.
+@mixin gradient-x($start-color: $gray-700, $end-color: $gray-800, $start-percent: 0%, $end-percent: 100%) {
+  background-image: linear-gradient(to right, $start-color $start-percent, $end-color $end-percent);
+}
+
+// Vertical gradient, from top to bottom
+//
+// Creates two color stops, start and end, by specifying a color and position for each color stop.
+@mixin gradient-y($start-color: $gray-700, $end-color: $gray-800, $start-percent: null, $end-percent: null) {
+  background-image: linear-gradient(to bottom, $start-color $start-percent, $end-color $end-percent);
+}
+
+@mixin gradient-directional($start-color: $gray-700, $end-color: $gray-800, $deg: 45deg) {
+  background-image: linear-gradient($deg, $start-color, $end-color);
+}
+
+@mixin gradient-x-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {
+  background-image: linear-gradient(to right, $start-color, $mid-color $color-stop, $end-color);
+}
+
+@mixin gradient-y-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {
+  background-image: linear-gradient($start-color, $mid-color $color-stop, $end-color);
+}
+
+@mixin gradient-radial($inner-color: $gray-700, $outer-color: $gray-800) {
+  background-image: radial-gradient(circle, $inner-color, $outer-color);
+}
+
+@mixin gradient-striped($color: rgba($white, .15), $angle: 45deg) {
+  background-image: linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);
+}
+// scss-docs-end gradient-mixins
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_breakpoints.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_breakpoints.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/mixins/_breakpoints.scss	(revision 3762)
@@ -0,0 +1,127 @@
+// Breakpoint viewport sizes and media queries.
+//
+// Breakpoints are defined as a map of (name: minimum width), order from small to large:
+//
+//    (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px)
+//
+// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.
+
+// Name of the next breakpoint, or null for the last breakpoint.
+//
+//    >> breakpoint-next(sm)
+//    md
+//    >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))
+//    md
+//    >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl xxl))
+//    md
+@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {
+  $n: index($breakpoint-names, $name);
+  @if not $n {
+    @error "breakpoint `#{$name}` not found in `#{$breakpoints}`";
+  }
+  @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);
+}
+
+// Minimum breakpoint width. Null for the smallest (first) breakpoint.
+//
+//    >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))
+//    576px
+@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {
+  $min: map-get($breakpoints, $name);
+  @return if($min != 0, $min, null);
+}
+
+// Maximum breakpoint width.
+// The maximum value is reduced by 0.02px to work around the limitations of
+// `min-` and `max-` prefixes and viewports with fractional widths.
+// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max
+// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.
+// See https://bugs.webkit.org/show_bug.cgi?id=178261
+//
+//    >> breakpoint-max(md, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))
+//    767.98px
+@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {
+  $max: map-get($breakpoints, $name);
+  @return if($max and $max > 0, $max - .02, null);
+}
+
+// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.
+// Useful for making responsive utilities.
+//
+//    >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))
+//    ""  (Returns a blank string)
+//    >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))
+//    "-sm"
+@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {
+  @return if(breakpoint-min($name, $breakpoints) == null, "", "-#{$name}");
+}
+
+// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.
+// Makes the @content apply to the given breakpoint and wider.
+@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {
+  $min: breakpoint-min($name, $breakpoints);
+  @if $min {
+    @media (min-width: $min) {
+      @content;
+    }
+  } @else {
+    @content;
+  }
+}
+
+// Media of at most the maximum breakpoint width. No query for the largest breakpoint.
+// Makes the @content apply to the given breakpoint and narrower.
+@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {
+  $max: breakpoint-max($name, $breakpoints);
+  @if $max {
+    @media (max-width: $max) {
+      @content;
+    }
+  } @else {
+    @content;
+  }
+}
+
+// Media that spans multiple breakpoint widths.
+// Makes the @content apply between the min and max breakpoints
+@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {
+  $min: breakpoint-min($lower, $breakpoints);
+  $max: breakpoint-max($upper, $breakpoints);
+
+  @if $min != null and $max != null {
+    @media (min-width: $min) and (max-width: $max) {
+      @content;
+    }
+  } @else if $max == null {
+    @include media-breakpoint-up($lower, $breakpoints) {
+      @content;
+    }
+  } @else if $min == null {
+    @include media-breakpoint-down($upper, $breakpoints) {
+      @content;
+    }
+  }
+}
+
+// Media between the breakpoint's minimum and maximum widths.
+// No minimum for the smallest breakpoint, and no maximum for the largest one.
+// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.
+@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {
+  $min:  breakpoint-min($name, $breakpoints);
+  $next: breakpoint-next($name, $breakpoints);
+  $max:  breakpoint-max($next, $breakpoints);
+
+  @if $min != null and $max != null {
+    @media (min-width: $min) and (max-width: $max) {
+      @content;
+    }
+  } @else if $max == null {
+    @include media-breakpoint-up($name, $breakpoints) {
+      @content;
+    }
+  } @else if $min == null {
+    @include media-breakpoint-down($next, $breakpoints) {
+      @content;
+    }
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/forms/_labels.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/forms/_labels.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/forms/_labels.scss	(revision 3762)
@@ -0,0 +1,36 @@
+//
+// Labels
+//
+
+.form-label, .shiny-input-container .control-label {
+  margin-bottom: $form-label-margin-bottom;
+  @include font-size($form-label-font-size);
+  font-style: $form-label-font-style;
+  font-weight: $form-label-font-weight;
+  color: $form-label-color;
+}
+
+// For use with horizontal and inline forms, when you need the label (or legend)
+// text to align with the form controls.
+.col-form-label {
+  padding-top: add($input-padding-y, $input-border-width);
+  padding-bottom: add($input-padding-y, $input-border-width);
+  margin-bottom: 0; // Override the `<legend>` default
+  @include font-size(inherit); // Override the `<legend>` default
+  font-style: $form-label-font-style;
+  font-weight: $form-label-font-weight;
+  line-height: $input-line-height;
+  color: $form-label-color;
+}
+
+.col-form-label-lg {
+  padding-top: add($input-padding-y-lg, $input-border-width);
+  padding-bottom: add($input-padding-y-lg, $input-border-width);
+  @include font-size($input-font-size-lg);
+}
+
+.col-form-label-sm {
+  padding-top: add($input-padding-y-sm, $input-border-width);
+  padding-bottom: add($input-padding-y-sm, $input-border-width);
+  @include font-size($input-font-size-sm);
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/forms/_floating-labels.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/forms/_floating-labels.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/forms/_floating-labels.scss	(revision 3762)
@@ -0,0 +1,75 @@
+.form-floating {
+  position: relative;
+
+  > .form-control,
+  > .form-control-plaintext,
+  > .form-select {
+    height: $form-floating-height;
+    line-height: $form-floating-line-height;
+  }
+
+  > label {
+    position: absolute;
+    top: 0;
+    left: 0;
+    width: 100%;
+    height: 100%; // allow textareas
+    padding: $form-floating-padding-y $form-floating-padding-x;
+    overflow: hidden;
+    text-align: start;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+    pointer-events: none;
+    border: $input-border-width solid transparent; // Required for aligning label's text with the input as it affects inner box model
+    transform-origin: 0 0;
+    @include transition($form-floating-transition);
+  }
+
+  > .form-control,
+  > .form-control-plaintext {
+    padding: $form-floating-padding-y $form-floating-padding-x;
+
+    &::placeholder {
+      color: transparent;
+    }
+
+    &:focus,
+    &:not(:placeholder-shown) {
+      padding-top: $form-floating-input-padding-t;
+      padding-bottom: $form-floating-input-padding-b;
+    }
+    // Duplicated because `:-webkit-autofill` invalidates other selectors when grouped
+    &:-webkit-autofill {
+      padding-top: $form-floating-input-padding-t;
+      padding-bottom: $form-floating-input-padding-b;
+    }
+  }
+
+  > .form-select {
+    padding-top: $form-floating-input-padding-t;
+    padding-bottom: $form-floating-input-padding-b;
+  }
+
+  > .form-control:focus,
+  > .form-control:not(:placeholder-shown),
+  > .form-control-plaintext,
+  > .form-select {
+    ~ label {
+      opacity: $form-floating-label-opacity;
+      transform: $form-floating-label-transform;
+    }
+  }
+  // Duplicated because `:-webkit-autofill` invalidates other selectors when grouped
+  > .form-control:-webkit-autofill {
+    ~ label {
+      opacity: $form-floating-label-opacity;
+      transform: $form-floating-label-transform;
+    }
+  }
+
+  > .form-control-plaintext {
+    ~ label {
+      border-width: $input-border-width 0; // Required to properly position label text - as explained above
+    }
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/forms/_form-text.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/forms/_form-text.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/forms/_form-text.scss	(revision 3762)
@@ -0,0 +1,11 @@
+//
+// Form text
+//
+
+.form-text {
+  margin-top: $form-text-margin-top;
+  @include font-size($form-text-font-size);
+  font-style: $form-text-font-style;
+  font-weight: $form-text-font-weight;
+  color: $form-text-color;
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/forms/_input-group.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/forms/_input-group.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/forms/_input-group.scss	(revision 3762)
@@ -0,0 +1,138 @@
+//
+// Base styles
+//
+
+.input-group {
+  position: relative;
+  display: flex;
+  display: -webkit-flex;
+  flex-wrap: wrap; // For form validation feedback
+  -webkit-flex-wrap: wrap; // For form validation feedback
+  align-items: stretch;
+  -webkit-align-items: stretch;
+  width: 100%;
+
+  > .form-control,
+  > .form-select,
+  > .form-floating {
+    position: relative; // For focus state's z-index
+    flex: 1 1 auto;
+    -webkit-flex: 1 1 auto;
+    width: 1%;
+    min-width: 0; // https://stackoverflow.com/questions/36247140/why-dont-flex-items-shrink-past-content-size
+  }
+
+  // Bring the "active" form control to the top of surrounding elements
+  > .form-control:focus,
+  > .form-select:focus,
+  > .form-floating:focus-within {
+    z-index: 5;
+  }
+
+  // Ensure buttons are always above inputs for more visually pleasing borders.
+  // This isn't needed for `.input-group-text` since it shares the same border-color
+  // as our inputs.
+  .btn {
+    position: relative;
+    z-index: 2;
+
+    &:focus {
+      z-index: 5;
+    }
+  }
+}
+
+
+// Textual addons
+//
+// Serves as a catch-all element for any text or radio/checkbox input you wish
+// to prepend or append to an input.
+
+.input-group-text {
+  display: flex;
+  display: -webkit-flex;
+  align-items: center;
+  -webkit-align-items: center;
+  padding: $input-group-addon-padding-y $input-group-addon-padding-x;
+  @include font-size($input-font-size); // Match inputs
+  font-weight: $input-group-addon-font-weight;
+  line-height: $input-line-height;
+  color: $input-group-addon-color;
+  text-align: center;
+  white-space: nowrap;
+  background-color: $input-group-addon-bg;
+  border: $input-border-width solid $input-group-addon-border-color;
+  @include border-radius($input-border-radius);
+}
+
+
+// Sizing
+//
+// Remix the default form control sizing classes into new ones for easier
+// manipulation.
+
+.input-group-lg > .form-control,
+.input-group-lg > .form-select,
+.input-group-lg > .input-group-text,
+.input-group-lg > .btn {
+  padding: $input-padding-y-lg $input-padding-x-lg;
+  @include font-size($input-font-size-lg);
+  @include border-radius($input-border-radius-lg);
+}
+
+.input-group-sm > .form-control,
+.input-group-sm > .form-select,
+.input-group-sm > .input-group-text,
+.input-group-sm > .btn {
+  padding: $input-padding-y-sm $input-padding-x-sm;
+  @include font-size($input-font-size-sm);
+  @include border-radius($input-border-radius-sm);
+}
+
+.input-group-lg > .form-select,
+.input-group-sm > .form-select {
+  padding-right: $form-select-padding-x + $form-select-indicator-padding;
+}
+
+
+// Rounded corners
+//
+// These rulesets must come after the sizing ones to properly override sm and lg
+// border-radius values when extending. They're more specific than we'd like
+// with the `.input-group >` part, but without it, we cannot override the sizing.
+
+// stylelint-disable-next-line no-duplicate-selectors
+.input-group {
+  &:not(.has-validation) {
+    > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),
+    > .dropdown-toggle:nth-last-child(n + 3),
+    > .form-floating:not(:last-child) > .form-control,
+    > .form-floating:not(:last-child) > .form-select {
+      @include border-end-radius(0);
+    }
+  }
+
+  &.has-validation {
+    > :nth-last-child(n + 3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),
+    > .dropdown-toggle:nth-last-child(n + 4),
+    > .form-floating:nth-last-child(n + 3) > .form-control,
+    > .form-floating:nth-last-child(n + 3) > .form-select {
+      @include border-end-radius(0);
+    }
+  }
+
+  $validation-messages: "";
+  @each $state in map-keys($form-validation-states) {
+    $validation-messages: $validation-messages + ":not(." + unquote($state) + "-tooltip)" + ":not(." + unquote($state) + "-feedback)";
+  }
+
+  > :not(:first-child):not(.dropdown-menu)#{$validation-messages} {
+    margin-left: -$input-border-width;
+    @include border-start-radius(0);
+  }
+
+  > .form-floating:not(:first-child) > .form-control,
+  > .form-floating:not(:first-child) > .form-select {
+    @include border-start-radius(0);
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/forms/_validation.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/forms/_validation.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/forms/_validation.scss	(revision 3762)
@@ -0,0 +1,12 @@
+// Form validation
+//
+// Provide feedback to users when form field values are valid or invalid. Works
+// primarily for client-side validation via scoped `:invalid` and `:valid`
+// pseudo-classes but also includes `.is-invalid` and `.is-valid` classes for
+// server-side validation.
+
+// scss-docs-start form-validation-states-loop
+@each $state, $data in $form-validation-states {
+  @include form-validation-state($state, $data...);
+}
+// scss-docs-end form-validation-states-loop
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/forms/_form-range.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/forms/_form-range.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/forms/_form-range.scss	(revision 3762)
@@ -0,0 +1,103 @@
+// Range
+//
+// Style range inputs the same across browsers. Vendor-specific rules for pseudo
+// elements cannot be mixed. As such, there are no shared styles for focus or
+// active states on prefixed selectors.
+
+.form-range {
+  width: 100%;
+  height: add($form-range-thumb-height, $form-range-thumb-focus-box-shadow-width * 2);
+  padding: 0; // Need to reset padding
+  background-color: transparent;
+  appearance: none;
+  -webkit-appearance: none;
+  -moz-appearance: none;
+  -ms-appearance: none;
+  -o-appearance: none;
+
+  &:focus {
+    outline: 0;
+
+    // Pseudo-elements must be split across multiple rulesets to have an effect.
+    // No box-shadow() mixin for focus accessibility.
+    &::-webkit-slider-thumb { box-shadow: $form-range-thumb-focus-box-shadow; }
+    &::-moz-range-thumb     { box-shadow: $form-range-thumb-focus-box-shadow; }
+  }
+
+  &::-moz-focus-outer {
+    border: 0;
+  }
+
+  &::-webkit-slider-thumb {
+    width: $form-range-thumb-width;
+    height: $form-range-thumb-height;
+    margin-top: ($form-range-track-height - $form-range-thumb-height) * .5; // Webkit specific
+    @include gradient-bg($form-range-thumb-bg);
+    border: $form-range-thumb-border;
+    @include border-radius($form-range-thumb-border-radius);
+    @include box-shadow($form-range-thumb-box-shadow);
+    @include transition($form-range-thumb-transition);
+    appearance: none;
+    -webkit-appearance: none;
+    -moz-appearance: none;
+    -ms-appearance: none;
+    -o-appearance: none;
+
+    &:active {
+      @include gradient-bg($form-range-thumb-active-bg);
+    }
+  }
+
+  &::-webkit-slider-runnable-track {
+    width: $form-range-track-width;
+    height: $form-range-track-height;
+    color: transparent; // Why?
+    cursor: $form-range-track-cursor;
+    background-color: $form-range-track-bg;
+    border-color: transparent;
+    @include border-radius($form-range-track-border-radius);
+    @include box-shadow($form-range-track-box-shadow);
+  }
+
+  &::-moz-range-thumb {
+    width: $form-range-thumb-width;
+    height: $form-range-thumb-height;
+    @include gradient-bg($form-range-thumb-bg);
+    border: $form-range-thumb-border;
+    @include border-radius($form-range-thumb-border-radius);
+    @include box-shadow($form-range-thumb-box-shadow);
+    @include transition($form-range-thumb-transition);
+    appearance: none;
+    -webkit-appearance: none;
+    -moz-appearance: none;
+    -ms-appearance: none;
+    -o-appearance: none;
+
+    &:active {
+      @include gradient-bg($form-range-thumb-active-bg);
+    }
+  }
+
+  &::-moz-range-track {
+    width: $form-range-track-width;
+    height: $form-range-track-height;
+    color: transparent;
+    cursor: $form-range-track-cursor;
+    background-color: $form-range-track-bg;
+    border-color: transparent; // Firefox specific?
+    @include border-radius($form-range-track-border-radius);
+    @include box-shadow($form-range-track-box-shadow);
+  }
+
+  &:disabled {
+    pointer-events: none;
+
+    &::-webkit-slider-thumb {
+      background-color: $form-range-thumb-disabled-bg;
+    }
+
+    &::-moz-range-thumb {
+      background-color: $form-range-thumb-disabled-bg;
+    }
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/forms/_form-check.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/forms/_form-check.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/forms/_form-check.scss	(revision 3762)
@@ -0,0 +1,179 @@
+//
+// Check/radio
+//
+
+.form-check, #{$shiny-check}, #{$shiny-radio} {
+  display: block;
+  min-height: $form-check-min-height;
+  padding-left: $form-check-padding-start;
+  margin-bottom: $form-check-margin-bottom;
+
+  .form-check-input, #{$shiny-check} input, #{$shiny-radio} input {
+    float: left;
+    margin-left: $form-check-padding-start * -1;
+  }
+}
+
+.form-check-reverse {
+  padding-right: $form-check-padding-start;
+  padding-left: 0;
+  text-align: right;
+
+  .form-check-input {
+    float: right;
+    margin-right: $form-check-padding-start * -1;
+    margin-left: 0;
+  }
+}
+
+#{$form-check-input-selector} {
+  width: $form-check-input-width;
+  height: $form-check-input-width;
+  margin-top: ($line-height-base - $form-check-input-width) * .5; // line-height minus check height
+  vertical-align: top;
+  background-color: $form-check-input-bg;
+  background-repeat: no-repeat;
+  background-position: center;
+  background-size: contain;
+  border: $form-check-input-border;
+  appearance: none;
+  -webkit-appearance: none;
+  -moz-appearance: none;
+  -ms-appearance: none;
+  -o-appearance: none;
+  print-color-adjust: exact; // Keep themed appearance for print
+  @include transition($form-check-transition);
+
+  &[type="checkbox"] {
+    @include border-radius($form-check-input-border-radius);
+  }
+
+  &[type="radio"] {
+    // stylelint-disable-next-line property-disallowed-list
+    border-radius: $form-check-radio-border-radius;
+  }
+
+  &:active {
+    filter: $form-check-input-active-filter;
+  }
+
+  &:focus {
+    border-color: $form-check-input-focus-border;
+    outline: 0;
+    box-shadow: $form-check-input-focus-box-shadow;
+  }
+
+  &:checked {
+    background-color: $form-check-input-checked-bg-color;
+    border-color: $form-check-input-checked-border-color;
+
+    &[type="checkbox"] {
+      @if $enable-gradients {
+        background-image: escape-svg($form-check-input-checked-bg-image), var(--#{$prefix}gradient);
+      } @else {
+        background-image: escape-svg($form-check-input-checked-bg-image);
+      }
+    }
+
+    &[type="radio"] {
+      @if $enable-gradients {
+        background-image: escape-svg($form-check-radio-checked-bg-image), var(--#{$prefix}gradient);
+      } @else {
+        background-image: escape-svg($form-check-radio-checked-bg-image);
+      }
+    }
+  }
+
+  &[type="checkbox"]:indeterminate {
+    background-color: $form-check-input-indeterminate-bg-color;
+    border-color: $form-check-input-indeterminate-border-color;
+
+    @if $enable-gradients {
+      background-image: escape-svg($form-check-input-indeterminate-bg-image), var(--#{$prefix}gradient);
+    } @else {
+      background-image: escape-svg($form-check-input-indeterminate-bg-image);
+    }
+  }
+
+  &:disabled {
+    pointer-events: none;
+    filter: none;
+    opacity: $form-check-input-disabled-opacity;
+  }
+
+  // Use disabled attribute in addition of :disabled pseudo-class
+  // See: https://github.com/twbs/bootstrap/issues/28247
+  &[disabled],
+  &:disabled {
+    ~ .form-check-label, ~ span {
+      cursor: default;
+      opacity: $form-check-label-disabled-opacity;
+    }
+  }
+}
+
+#{$form-check-label-selector} {
+  color: $form-check-label-color;
+  cursor: $form-check-label-cursor;
+}
+
+//
+// Switch
+//
+
+.form-switch {
+  padding-left: $form-switch-padding-start;
+
+  .form-check-input {
+    width: $form-switch-width;
+    margin-left: $form-switch-padding-start * -1;
+    background-image: escape-svg($form-switch-bg-image);
+    background-position: left center;
+    @include border-radius($form-switch-border-radius);
+    @include transition($form-switch-transition);
+
+    &:focus {
+      background-image: escape-svg($form-switch-focus-bg-image);
+    }
+
+    &:checked {
+      background-position: $form-switch-checked-bg-position;
+
+      @if $enable-gradients {
+        background-image: escape-svg($form-switch-checked-bg-image), var(--#{$prefix}gradient);
+      } @else {
+        background-image: escape-svg($form-switch-checked-bg-image);
+      }
+    }
+  }
+
+  &.form-check-reverse {
+    padding-right: $form-switch-padding-start;
+    padding-left: 0;
+
+    .form-check-input {
+      margin-right: $form-switch-padding-start * -1;
+      margin-left: 0;
+    }
+  }
+}
+
+.form-check-inline {
+  display: inline-block;
+  margin-right: $form-check-inline-margin-end;
+}
+
+.btn-check {
+  position: absolute;
+  clip: rect(0, 0, 0, 0);
+  pointer-events: none;
+
+  &[disabled],
+  &:disabled {
+    + .btn {
+      pointer-events: none;
+      filter: none;
+      opacity: $form-check-btn-check-disabled-opacity;
+    }
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/forms/_form-select.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/forms/_form-select.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/forms/_form-select.scss	(revision 3762)
@@ -0,0 +1,75 @@
+// Select
+//
+// Replaces the browser default select with a custom one, mostly pulled from
+// https://primer.github.io/.
+
+.form-select {
+  display: block;
+  width: 100%;
+  padding: $form-select-padding-y $form-select-indicator-padding $form-select-padding-y $form-select-padding-x;
+  -moz-padding-start: subtract($form-select-padding-x, 3px); // See https://github.com/twbs/bootstrap/issues/32636
+  font-family: $form-select-font-family;
+  @include font-size($form-select-font-size);
+  font-weight: $form-select-font-weight;
+  line-height: $form-select-line-height;
+  color: $form-select-color;
+  background-color: $form-select-bg;
+  background-image: escape-svg($form-select-indicator);
+  background-repeat: no-repeat;
+  background-position: $form-select-bg-position;
+  background-size: $form-select-bg-size;
+  border: $form-select-border-width solid $form-select-border-color;
+  @include border-radius($form-select-border-radius, 0);
+  @include box-shadow($form-select-box-shadow);
+  @include transition($form-select-transition);
+  appearance: none;
+  -webkit-appearance: none;
+  -moz-appearance: none;
+  -ms-appearance: none;
+  -o-appearance: none;
+
+  &:focus {
+    border-color: $form-select-focus-border-color;
+    outline: 0;
+    @if $enable-shadows {
+      @include box-shadow($form-select-box-shadow, $form-select-focus-box-shadow);
+    } @else {
+      // Avoid using mixin so we can pass custom focus shadow properly
+      box-shadow: $form-select-focus-box-shadow;
+    }
+  }
+
+  &[multiple],
+  &[size]:not([size="1"]) {
+    padding-right: $form-select-padding-x;
+    background-image: none;
+  }
+
+  &:disabled {
+    color: $form-select-disabled-color;
+    background-color: $form-select-disabled-bg;
+    border-color: $form-select-disabled-border-color;
+  }
+
+  // Remove outline from select box in FF
+  &:-moz-focusring {
+    color: transparent;
+    text-shadow: 0 0 0 $form-select-color;
+  }
+}
+
+.form-select-sm {
+  padding-top: $form-select-padding-y-sm;
+  padding-bottom: $form-select-padding-y-sm;
+  padding-left: $form-select-padding-x-sm;
+  @include font-size($form-select-font-size-sm);
+  @include border-radius($form-select-border-radius-sm);
+}
+
+.form-select-lg {
+  padding-top: $form-select-padding-y-lg;
+  padding-bottom: $form-select-padding-y-lg;
+  padding-left: $form-select-padding-x-lg;
+  @include font-size($form-select-font-size-lg);
+  @include border-radius($form-select-border-radius-lg);
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/forms/_form-control.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/forms/_form-control.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/forms/_form-control.scss	(revision 3762)
@@ -0,0 +1,198 @@
+//
+// General form controls (plus a few specific high-level interventions)
+//
+
+.form-control {
+  display: block;
+  width: 100%;
+  padding: $input-padding-y $input-padding-x;
+  font-family: $input-font-family;
+  @include font-size($input-font-size);
+  font-weight: $input-font-weight;
+  line-height: $input-line-height;
+  color: $input-color;
+  background-color: $input-bg;
+  background-clip: padding-box;
+  border: $input-border-width solid $input-border-color;
+  appearance: none; // Fix appearance for date inputs in Safari
+  -webkit-appearance: none; // Fix appearance for date inputs in Safari
+  -moz-appearance: none; // Fix appearance for date inputs in Safari
+  -ms-appearance: none; // Fix appearance for date inputs in Safari
+  -o-appearance: none; // Fix appearance for date inputs in Safari
+
+  // Note: This has no effect on <select>s in some browsers, due to the limited stylability of `<select>`s in CSS.
+  @include border-radius($input-border-radius, 0);
+
+  @include box-shadow($input-box-shadow);
+  @include transition($input-transition);
+
+  &[type="file"] {
+    overflow: hidden; // prevent pseudo element button overlap
+
+    &:not(:disabled):not([readonly]) {
+      cursor: pointer;
+    }
+  }
+
+  // Customize the `:focus` state to imitate native WebKit styles.
+  &:focus {
+    color: $input-focus-color;
+    background-color: $input-focus-bg;
+    border-color: $input-focus-border-color;
+    outline: 0;
+    @if $enable-shadows {
+      @include box-shadow($input-box-shadow, $input-focus-box-shadow);
+    } @else {
+      // Avoid using mixin so we can pass custom focus shadow properly
+      box-shadow: $input-focus-box-shadow;
+    }
+  }
+
+  // Add some height to date inputs on iOS
+  // https://github.com/twbs/bootstrap/issues/23307
+  // TODO: we can remove this workaround once https://bugs.webkit.org/show_bug.cgi?id=198959 is resolved
+  &::-webkit-date-and-time-value {
+    // Multiply line-height by 1em if it has no unit
+    height: if(unit($input-line-height) == "", $input-line-height * 1em, $input-line-height);
+  }
+
+  // Placeholder
+  &::placeholder {
+    color: $input-placeholder-color;
+    // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526.
+    opacity: 1;
+  }
+
+  // Disabled inputs
+  //
+  // HTML5 says that controls under a fieldset > legend:first-child won't be
+  // disabled if the fieldset is disabled. Due to implementation difficulty, we
+  // don't honor that edge case; we style them as disabled anyway.
+  &:disabled {
+    color: $input-disabled-color;
+    background-color: $input-disabled-bg;
+    border-color: $input-disabled-border-color;
+    // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655.
+    opacity: 1;
+  }
+
+  // File input buttons theming
+  &::file-selector-button {
+    padding: $input-padding-y $input-padding-x;
+    margin: (-$input-padding-y) (-$input-padding-x);
+    margin-inline-end: $input-padding-x;
+    color: $form-file-button-color;
+    @include gradient-bg($form-file-button-bg);
+    pointer-events: none;
+    border-color: inherit;
+    border-style: solid;
+    border-width: 0;
+    border-inline-end-width: $input-border-width;
+    border-radius: 0; // stylelint-disable-line property-disallowed-list
+    @include transition($btn-transition);
+  }
+
+  &:hover:not(:disabled):not([readonly])::file-selector-button {
+    background-color: $form-file-button-hover-bg;
+  }
+}
+
+// Readonly controls as plain text
+//
+// Apply class to a readonly input to make it appear like regular plain
+// text (without any border, background color, focus indicator)
+
+.form-control-plaintext {
+  display: block;
+  width: 100%;
+  padding: $input-padding-y 0;
+  margin-bottom: 0; // match inputs if this class comes on inputs with default margins
+  line-height: $input-line-height;
+  color: $input-plaintext-color;
+  background-color: transparent;
+  border: solid transparent;
+  border-width: $input-border-width 0;
+
+  &:focus {
+    outline: 0;
+  }
+
+  &.form-control-sm,
+  &.form-control-lg {
+    padding-right: 0;
+    padding-left: 0;
+  }
+}
+
+// Form control sizing
+//
+// Build on `.form-control` with modifier classes to decrease or increase the
+// height and font-size of form controls.
+//
+// Repeated in `_input_group.scss` to avoid Sass extend issues.
+
+.form-control-sm {
+  min-height: $input-height-sm;
+  padding: $input-padding-y-sm $input-padding-x-sm;
+  @include font-size($input-font-size-sm);
+  @include border-radius($input-border-radius-sm);
+
+  &::file-selector-button {
+    padding: $input-padding-y-sm $input-padding-x-sm;
+    margin: (-$input-padding-y-sm) (-$input-padding-x-sm);
+    margin-inline-end: $input-padding-x-sm;
+  }
+}
+
+.form-control-lg {
+  min-height: $input-height-lg;
+  padding: $input-padding-y-lg $input-padding-x-lg;
+  @include font-size($input-font-size-lg);
+  @include border-radius($input-border-radius-lg);
+
+  &::file-selector-button {
+    padding: $input-padding-y-lg $input-padding-x-lg;
+    margin: (-$input-padding-y-lg) (-$input-padding-x-lg);
+    margin-inline-end: $input-padding-x-lg;
+  }
+}
+
+// Make sure textareas don't shrink too much when resized
+// https://github.com/twbs/bootstrap/pull/29124
+// stylelint-disable selector-no-qualifying-type
+textarea {
+  &.form-control {
+    min-height: $input-height;
+  }
+
+  &.form-control-sm {
+    min-height: $input-height-sm;
+  }
+
+  &.form-control-lg {
+    min-height: $input-height-lg;
+  }
+}
+// stylelint-enable selector-no-qualifying-type
+
+.form-control-color {
+  width: $form-color-width;
+  height: $input-height;
+  padding: $input-padding-y;
+
+  &:not(:disabled):not([readonly]) {
+    cursor: pointer;
+  }
+
+  &::-moz-color-swatch {
+    border: 0 !important; // stylelint-disable-line declaration-no-important
+    @include border-radius($input-border-radius);
+  }
+
+  &::-webkit-color-swatch {
+    @include border-radius($input-border-radius);
+  }
+
+  &.form-control-sm { height: $input-height-sm; }
+  &.form-control-lg { height: $input-height-lg; }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/utilities/_api.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/utilities/_api.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/utilities/_api.scss	(revision 3762)
@@ -0,0 +1,54 @@
+// Loop over each breakpoint
+@each $breakpoint in map-keys($grid-breakpoints) {
+
+  // Generate media query if needed
+  @include media-breakpoint-up($breakpoint) {
+    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
+
+    // Loop over each utility property
+    @each $key, $utility in $utilities {
+      // The utility can be disabled with `false`, thus check if the utility is a map first
+      // Only proceed if responsive media queries are enabled or if it's the base media query
+      @if type-of($utility) == "map" and (map-get($utility, responsive) or $infix == "") {
+        @include generate-utility($utility, $infix);
+      }
+    }
+  }
+}
+
+// Add fg contrasts for each bg utility class
+@each $key, $val in $utilities-colors {
+  .bg-#{$key} {
+    color: color-contrast(rgb(nth($val, 1), nth($val, 2), nth($val, 3)));
+  }
+}
+
+// RFS rescaling
+@media (min-width: $rfs-mq-value) {
+  @each $breakpoint in map-keys($grid-breakpoints) {
+    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
+
+    @if (map-get($grid-breakpoints, $breakpoint) < $rfs-breakpoint) {
+      // Loop over each utility property
+      @each $key, $utility in $utilities {
+        // The utility can be disabled with `false`, thus check if the utility is a map first
+        // Only proceed if responsive media queries are enabled or if it's the base media query
+        @if type-of($utility) == "map" and map-get($utility, rfs) and (map-get($utility, responsive) or $infix == "") {
+          @include generate-utility($utility, $infix, true);
+        }
+      }
+    }
+  }
+}
+
+
+// Print utilities
+@media print {
+  @each $key, $utility in $utilities {
+    // The utility can be disabled with `false`, thus check if the utility is a map first
+    // Then check if the utility needs print styles
+    @if type-of($utility) == "map" and map-get($utility, print) == true {
+      @include generate-utility($utility, "-print");
+    }
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/vendor/_rfs.scss
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/vendor/_rfs.scss	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/bslib/lib/bs5/scss/vendor/_rfs.scss	(revision 3762)
@@ -0,0 +1,354 @@
+// stylelint-disable property-blacklist, scss/dollar-variable-default
+
+// SCSS RFS mixin
+//
+// Automated responsive values for font sizes, paddings, margins and much more
+//
+// Licensed under MIT (https://github.com/twbs/rfs/blob/main/LICENSE)
+
+// Configuration
+
+// Base value
+$rfs-base-value: 1.25rem !default;
+$rfs-unit: rem !default;
+
+@if $rfs-unit != rem and $rfs-unit != px {
+  @error "`#{$rfs-unit}` is not a valid unit for $rfs-unit. Use `px` or `rem`.";
+}
+
+// Breakpoint at where values start decreasing if screen width is smaller
+$rfs-breakpoint: 1200px !default;
+$rfs-breakpoint-unit: px !default;
+
+@if $rfs-breakpoint-unit != px and $rfs-breakpoint-unit != em and $rfs-breakpoint-unit != rem {
+  @error "`#{$rfs-breakpoint-unit}` is not a valid unit for $rfs-breakpoint-unit. Use `px`, `em` or `rem`.";
+}
+
+// Resize values based on screen height and width
+$rfs-two-dimensional: false !default;
+
+// Factor of decrease
+$rfs-factor: 10 !default;
+
+@if type-of($rfs-factor) != number or $rfs-factor <= 1 {
+  @error "`#{$rfs-factor}` is not a valid  $rfs-factor, it must be greater than 1.";
+}
+
+// Mode. Possibilities: "min-media-query", "max-media-query"
+$rfs-mode: min-media-query !default;
+
+// Generate enable or disable classes. Possibilities: false, "enable" or "disable"
+$rfs-class: false !default;
+
+// 1 rem = $rfs-rem-value px
+$rfs-rem-value: 16 !default;
+
+// Safari iframe resize bug: https://github.com/twbs/rfs/issues/14
+$rfs-safari-iframe-resize-bug-fix: false !default;
+
+// Disable RFS by setting $enable-rfs to false
+$enable-rfs: true !default;
+
+// Cache $rfs-base-value unit
+$rfs-base-value-unit: unit($rfs-base-value);
+
+@function divide($dividend, $divisor, $precision: 10) {
+  $sign: if($dividend > 0 and $divisor > 0 or $dividend < 0 and $divisor < 0, 1, -1);
+  $dividend: abs($dividend);
+  $divisor: abs($divisor);
+  @if $dividend == 0 {
+    @return 0;
+  }
+  @if $divisor == 0 {
+    @error "Cannot divide by 0";
+  }
+  $remainder: $dividend;
+  $result: 0;
+  $factor: 10;
+  @while ($remainder > 0 and $precision >= 0) {
+    $quotient: 0;
+    @while ($remainder >= $divisor) {
+      $remainder: $remainder - $divisor;
+      $quotient: $quotient + 1;
+    }
+    $result: $result * 10 + $quotient;
+    $factor: $factor * .1;
+    $remainder: $remainder * 10;
+    $precision: $precision - 1;
+    @if ($precision < 0 and $remainder >= $divisor * 5) {
+      $result: $result + 1;
+    }
+  }
+  $result: $result * $factor * $sign;
+  $dividend-unit: unit($dividend);
+  $divisor-unit: unit($divisor);
+  $unit-map: (
+    "px": 1px,
+    "rem": 1rem,
+    "em": 1em,
+    "%": 1%
+  );
+  @if ($dividend-unit != $divisor-unit and map-has-key($unit-map, $dividend-unit)) {
+    $result: $result * map-get($unit-map, $dividend-unit);
+  }
+  @return $result;
+}
+
+// Remove px-unit from $rfs-base-value for calculations
+@if $rfs-base-value-unit == px {
+  $rfs-base-value: divide($rfs-base-value, $rfs-base-value * 0 + 1);
+}
+@else if $rfs-base-value-unit == rem {
+  $rfs-base-value: divide($rfs-base-value, divide($rfs-base-value * 0 + 1, $rfs-rem-value));
+}
+
+// Cache $rfs-breakpoint unit to prevent multiple calls
+$rfs-breakpoint-unit-cache: unit($rfs-breakpoint);
+
+// Remove unit from $rfs-breakpoint for calculations
+@if $rfs-breakpoint-unit-cache == px {
+  $rfs-breakpoint: divide($rfs-breakpoint, $rfs-breakpoint * 0 + 1);
+}
+@else if $rfs-breakpoint-unit-cache == rem or $rfs-breakpoint-unit-cache == "em" {
+  $rfs-breakpoint: divide($rfs-breakpoint, divide($rfs-breakpoint * 0 + 1, $rfs-rem-value));
+}
+
+// Calculate the media query value
+$rfs-mq-value: if($rfs-breakpoint-unit == px, #{$rfs-breakpoint}px, #{divide($rfs-breakpoint, $rfs-rem-value)}#{$rfs-breakpoint-unit});
+$rfs-mq-property-width: if($rfs-mode == max-media-query, max-width, min-width);
+$rfs-mq-property-height: if($rfs-mode == max-media-query, max-height, min-height);
+
+// Internal mixin used to determine which media query needs to be used
+@mixin _rfs-media-query {
+  @if $rfs-two-dimensional {
+    @if $rfs-mode == max-media-query {
+      @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}), (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {
+        @content;
+      }
+    }
+    @else {
+      @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) and (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {
+        @content;
+      }
+    }
+  }
+  @else {
+    @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) {
+      @content;
+    }
+  }
+}
+
+// Internal mixin that adds disable classes to the selector if needed.
+@mixin _rfs-rule {
+  @if $rfs-class == disable and $rfs-mode == max-media-query {
+    // Adding an extra class increases specificity, which prevents the media query to override the property
+    &,
+    .disable-rfs &,
+    &.disable-rfs {
+      @content;
+    }
+  }
+  @else if $rfs-class == enable and $rfs-mode == min-media-query {
+    .enable-rfs &,
+    &.enable-rfs {
+      @content;
+    }
+  }
+  @else {
+    @content;
+  }
+}
+
+// Internal mixin that adds enable classes to the selector if needed.
+@mixin _rfs-media-query-rule {
+
+  @if $rfs-class == enable {
+    @if $rfs-mode == min-media-query {
+      @content;
+    }
+
+    @include _rfs-media-query {
+      .enable-rfs &,
+      &.enable-rfs {
+        @content;
+      }
+    }
+  }
+  @else {
+    @if $rfs-class == disable and $rfs-mode == min-media-query {
+      .disable-rfs &,
+      &.disable-rfs {
+        @content;
+      }
+    }
+    @include _rfs-media-query {
+      @content;
+    }
+  }
+}
+
+// Helper function to get the formatted non-responsive value
+@function rfs-value($values) {
+  // Convert to list
+  $values: if(type-of($values) != list, ($values,), $values);
+
+  $val: '';
+
+  // Loop over each value and calculate value
+  @each $value in $values {
+    @if $value == 0 {
+      $val: $val + ' 0';
+    }
+    @else {
+      // Cache $value unit
+      $unit: if(type-of($value) == "number", unit($value), false);
+
+      @if $unit == px {
+        // Convert to rem if needed
+        $val: $val + ' ' + if($rfs-unit == rem, #{divide($value, $value * 0 + $rfs-rem-value)}rem, $value);
+      }
+      @else if $unit == rem {
+        // Convert to px if needed
+        $val: $val + ' ' + if($rfs-unit == px, #{divide($value, $value * 0 + 1) * $rfs-rem-value}px, $value);
+      }
+      @else {
+        // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value
+        $val: $val + ' ' + $value;
+      }
+    }
+  }
+
+  // Remove first space
+  @return unquote(str-slice($val, 2));
+}
+
+// Helper function to get the responsive value calculated by RFS
+@function rfs-fluid-value($values) {
+  // Convert to list
+  $values: if(type-of($values) != list, ($values,), $values);
+
+  $val: '';
+
+  // Loop over each value and calculate value
+  @each $value in $values {
+    @if $value == 0 {
+      $val: $val + ' 0';
+    }
+
+    @else {
+      // Cache $value unit
+      $unit: if(type-of($value) == "number", unit($value), false);
+
+      // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value
+      @if not $unit or $unit != px and $unit != rem {
+        $val: $val + ' ' + $value;
+      }
+
+      @else {
+        // Remove unit from $value for calculations
+        $value: divide($value, $value * 0 + if($unit == px, 1, divide(1, $rfs-rem-value)));
+
+        // Only add the media query if the value is greater than the minimum value
+        @if abs($value) <= $rfs-base-value or not $enable-rfs {
+          $val: $val + ' ' +  if($rfs-unit == rem, #{divide($value, $rfs-rem-value)}rem, #{$value}px);
+        }
+        @else {
+          // Calculate the minimum value
+          $value-min: $rfs-base-value + divide(abs($value) - $rfs-base-value, $rfs-factor);
+
+          // Calculate difference between $value and the minimum value
+          $value-diff: abs($value) - $value-min;
+
+          // Base value formatting
+          $min-width: if($rfs-unit == rem, #{divide($value-min, $rfs-rem-value)}rem, #{$value-min}px);
+
+          // Use negative value if needed
+          $min-width: if($value < 0, -$min-width, $min-width);
+
+          // Use `vmin` if two-dimensional is enabled
+          $variable-unit: if($rfs-two-dimensional, vmin, vw);
+
+          // Calculate the variable width between 0 and $rfs-breakpoint
+          $variable-width: #{divide($value-diff * 100, $rfs-breakpoint)}#{$variable-unit};
+
+          // Return the calculated value
+          $val: $val + ' calc(' + $min-width + if($value < 0, ' - ', ' + ') + $variable-width + ')';
+        }
+      }
+    }
+  }
+
+  // Remove first space
+  @return unquote(str-slice($val, 2));
+}
+
+// RFS mixin
+@mixin rfs($values, $property: font-size) {
+  @if $values != null {
+    $val: rfs-value($values);
+    $fluidVal: rfs-fluid-value($values);
+
+    // Do not print the media query if responsive & non-responsive values are the same
+    @if $val == $fluidVal {
+      #{$property}: $val;
+    }
+    @else {
+      @include _rfs-rule {
+        #{$property}: if($rfs-mode == max-media-query, $val, $fluidVal);
+
+        // Include safari iframe resize fix if needed
+        min-width: if($rfs-safari-iframe-resize-bug-fix, (0 * 1vw), null);
+      }
+
+      @include _rfs-media-query-rule {
+        #{$property}: if($rfs-mode == max-media-query, $fluidVal, $val);
+      }
+    }
+  }
+}
+
+// Shorthand helper mixins
+@mixin font-size($value) {
+  @include rfs($value);
+}
+
+@mixin padding($value) {
+  @include rfs($value, padding);
+}
+
+@mixin padding-top($value) {
+  @include rfs($value, padding-top);
+}
+
+@mixin padding-right($value) {
+  @include rfs($value, padding-right);
+}
+
+@mixin padding-bottom($value) {
+  @include rfs($value, padding-bottom);
+}
+
+@mixin padding-left($value) {
+  @include rfs($value, padding-left);
+}
+
+@mixin margin($value) {
+  @include rfs($value, margin);
+}
+
+@mixin margin-top($value) {
+  @include rfs($value, margin-top);
+}
+
+@mixin margin-right($value) {
+  @include rfs($value, margin-right);
+}
+
+@mixin margin-bottom($value) {
+  @include rfs($value, margin-bottom);
+}
+
+@mixin margin-left($value) {
+  @include rfs($value, margin-left);
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/pkgload/html/R.css
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/pkgload/html/R.css	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/pkgload/html/R.css	(revision 3762)
@@ -0,0 +1,120 @@
+@media screen {
+    .container {
+	padding-right: 10px;
+	padding-left: 10px;
+	margin-right: auto;
+	margin-left: auto;
+	max-width: 900px;
+    }
+}
+
+.rimage img { /* from knitr - for examples and demos */
+    width: 96%;
+    margin-left: 2%;
+} 	
+
+.katex { font-size: 1.1em; }
+
+code {
+    color: inherit;
+    background: inherit;
+}
+
+body {
+    line-height: 1.4;
+    background: white;
+    color: black;
+}
+
+a:link {
+    background: white;
+    color: blue;
+}
+
+a:visited {
+    background: white;
+    color: rgb(50%, 0%, 50%);
+}
+
+h1 {
+    background: white;
+    color: rgb(55%, 55%, 55%);
+    font-family: monospace;
+    font-size: 1.4em; /* x-large; */
+    text-align: center;
+}
+
+h2 {
+    background: white;
+    color: rgb(40%, 40%, 40%);
+    font-family: monospace;
+    font-size: 1.2em; /* large; */
+    text-align: center;
+}
+
+h3 {
+    background: white;
+    color: rgb(40%, 40%, 40%);
+    font-family: monospace;
+    font-size: 1.2em; /* large; */
+}
+
+h4 {
+    background: white;
+    color: rgb(40%, 40%, 40%);
+    font-family: monospace;
+    font-style: italic;
+    font-size: 1.2em; /* large; */
+}
+
+h5 {
+    background: white;
+    color: rgb(40%, 40%, 40%);
+    font-family: monospace;
+}
+
+h6 {
+    background: white;
+    color: rgb(40%, 40%, 40%);
+    font-family: monospace;
+    font-style: italic;
+}
+
+img.toplogo {
+    width: 4em;
+    vertical-align: middle;
+}
+
+img.arrow {
+    width: 30px;
+    height: 30px;
+    border: 0;
+}
+
+span.acronym {
+    font-size: small;
+}
+
+span.env {
+    font-family: monospace;
+}
+
+span.file {
+    font-family: monospace;
+}
+
+span.option{
+    font-family: monospace;
+}
+
+span.pkg {
+    font-weight: bold;
+}
+
+span.samp{
+    font-family: monospace;
+}
+
+div.vignettes a:hover {
+    background: rgb(85%, 85%, 85%);
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/pkgload/html/00Index.html
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/pkgload/html/00Index.html	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/pkgload/html/00Index.html	(revision 3762)
@@ -0,0 +1,79 @@
+<!DOCTYPE html>
+<html>
+<head><title>R: Simulate Package Installation and Attach</title>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
+<link rel="stylesheet" type="text/css" href="R.css" />
+</head><body><div class="container">
+<h1> Simulate Package Installation and Attach
+<img class="toplogo" src="../../../doc/html/Rlogo.svg" alt="[R logo]" />
+</h1>
+<hr/>
+<div style="text-align: center;">
+<a href="../../../doc/html/packages.html"><img class="arrow" src="../../../doc/html/left.jpg" alt="[Up]" /></a>
+<a href="../../../doc/html/index.html"><img class="arrow" src="../../../doc/html/up.jpg" alt="[Top]" /></a>
+</div><h2>Documentation for package &lsquo;pkgload&rsquo; version 1.3.2</h2>
+
+<ul><li><a href="../DESCRIPTION">DESCRIPTION file</a>.</li>
+</ul>
+
+<h2>Help Pages</h2>
+
+
+<table style="width: 100%;">
+<tr><td style="width: 25%;"><a href="help.html">?</a></td>
+<td>Drop-in replacements for help and ? functions</td></tr>
+<tr><td style="width: 25%;"><a href="dev_example.html">dev_example</a></td>
+<td>Run a examples for an in-development function.</td></tr>
+<tr><td style="width: 25%;"><a href="dev_help.html">dev_help</a></td>
+<td>In-development help for package loaded with devtools</td></tr>
+<tr><td style="width: 25%;"><a href="dev_help.html">dev_topic_find</a></td>
+<td>In-development help for package loaded with devtools</td></tr>
+<tr><td style="width: 25%;"><a href="dev_help.html">dev_topic_index_reset</a></td>
+<td>In-development help for package loaded with devtools</td></tr>
+<tr><td style="width: 25%;"><a href="help.html">help</a></td>
+<td>Drop-in replacements for help and ? functions</td></tr>
+<tr><td style="width: 25%;"><a href="inst.html">inst</a></td>
+<td>Get the installation path of a package</td></tr>
+<tr><td style="width: 25%;"><a href="is_dev_package.html">is_dev_package</a></td>
+<td>Is the package currently under development?</td></tr>
+<tr><td style="width: 25%;"><a href="load_all.html">is_loading</a></td>
+<td>Load complete package</td></tr>
+<tr><td style="width: 25%;"><a href="load_all.html">load_all</a></td>
+<td>Load complete package</td></tr>
+<tr><td style="width: 25%;"><a href="load_code.html">load_code</a></td>
+<td>Load R code.</td></tr>
+<tr><td style="width: 25%;"><a href="load_data.html">load_data</a></td>
+<td>Load data.</td></tr>
+<tr><td style="width: 25%;"><a href="load_dll.html">load_dll</a></td>
+<td>Load a compiled DLL</td></tr>
+<tr><td style="width: 25%;"><a href="packages.html">packages</a></td>
+<td>Helper functions for working with development packages.</td></tr>
+<tr><td style="width: 25%;"><a href="package_file.html">package_file</a></td>
+<td>Find file in a package.</td></tr>
+<tr><td style="width: 25%;"><a href="packages.html">pkg_desc</a></td>
+<td>Helper functions for working with development packages.</td></tr>
+<tr><td style="width: 25%;"><a href="packages.html">pkg_name</a></td>
+<td>Helper functions for working with development packages.</td></tr>
+<tr><td style="width: 25%;"><a href="packages.html">pkg_ns</a></td>
+<td>Helper functions for working with development packages.</td></tr>
+<tr><td style="width: 25%;"><a href="packages.html">pkg_path</a></td>
+<td>Helper functions for working with development packages.</td></tr>
+<tr><td style="width: 25%;"><a href="packages.html">pkg_version</a></td>
+<td>Helper functions for working with development packages.</td></tr>
+<tr><td style="width: 25%;"><a href="dev_example.html">run_example</a></td>
+<td>Run a examples for an in-development function.</td></tr>
+<tr><td style="width: 25%;"><a href="help.html">shim_help</a></td>
+<td>Drop-in replacements for help and ? functions</td></tr>
+<tr><td style="width: 25%;"><a href="help.html">shim_question</a></td>
+<td>Drop-in replacements for help and ? functions</td></tr>
+<tr><td style="width: 25%;"><a href="system.file.html">shim_system.file</a></td>
+<td>Replacement version of system.file</td></tr>
+<tr><td style="width: 25%;"><a href="system.file.html">system.file</a></td>
+<td>Replacement version of system.file</td></tr>
+<tr><td style="width: 25%;"><a href="unload.html">unload</a></td>
+<td>Unload a package</td></tr>
+<tr><td style="width: 25%;"><a href="unload.html">unregister</a></td>
+<td>Unload a package</td></tr>
+</table>
+</div></body></html>
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/pkgload/Meta/Rd.rds
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/pkgload/Meta/Rd.rds
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/pkgload/Meta/package.rds
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/pkgload/Meta/package.rds
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/pkgload/Meta/nsInfo.rds
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/pkgload/Meta/nsInfo.rds
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/pkgload/Meta/hsearch.rds
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/pkgload/Meta/hsearch.rds
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/pkgload/Meta/features.rds
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/pkgload/Meta/features.rds
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/pkgload/Meta/links.rds
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/pkgload/Meta/links.rds
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/pkgload/R/pkgload
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/pkgload/R/pkgload	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/pkgload/R/pkgload	(revision 3762)
@@ -0,0 +1,27 @@
+#  File share/R/nspackloader.R
+#  Part of the R package, https://www.R-project.org
+#
+#  Copyright (C) 1995-2012 The R Core Team
+#
+#  This program is free software; you can redistribute it and/or modify
+#  it under the terms of the GNU General Public License as published by
+#  the Free Software Foundation; either version 2 of the License, or
+#  (at your option) any later version.
+#
+#  This program is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#  GNU General Public License for more details.
+#
+#  A copy of the GNU General Public License is available at
+#  https://www.r-project.org/Licenses/
+
+local({
+    info <- loadingNamespaceInfo()
+    pkg <- info$pkgname
+    ns <- .getNamespace(as.name(pkg))
+    if (is.null(ns))
+        stop("cannot find namespace environment for ", pkg, domain = NA);
+    dbbase <- file.path(info$libname, pkg, "R", pkg)
+    lazyLoad(dbbase, ns, filter = function(n) n != ".__NAMESPACE__.")
+})
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/pkgload/R/pkgload.rdb
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/pkgload/R/pkgload.rdb
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/pkgload/R/pkgload.rdx
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/pkgload/R/pkgload.rdx
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/DT/examples/DT-edit/rsconnect/shinyapps.io/yihui/DT-edit.dcf
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/DT/examples/DT-edit/rsconnect/shinyapps.io/yihui/DT-edit.dcf	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/DT/examples/DT-edit/rsconnect/shinyapps.io/yihui/DT-edit.dcf	(revision 3762)
@@ -0,0 +1,12 @@
+name: DT-edit
+title: DT-edit
+username:
+account: yihui
+server: shinyapps.io
+hostUrl: https://api.shinyapps.io/v1
+appId: 258644
+bundleId: 2073373
+url: https://yihui.shinyapps.io/DT-edit/
+when: 1557434155.02923
+asMultiple: FALSE
+asStatic: FALSE
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/DT/examples/DT-scroller/www/large.txt
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/DT/examples/DT-scroller/www/large.txt	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/DT/examples/DT-scroller/www/large.txt	(revision 3762)
@@ -0,0 +1 @@
+{"aaData":[[1,1001,2001,3001],[2,1002,2002,3002],[3,1003,2003,3003],[4,1004,2004,3004],[5,1005,2005,3005],[6,1006,2006,3006],[7,1007,2007,3007],[8,1008,2008,3008],[9,1009,2009,3009],[10,1010,2010,3010],[11,1011,2011,3011],[12,1012,2012,3012],[13,1013,2013,3013],[14,1014,2014,3014],[15,1015,2015,3015],[16,1016,2016,3016],[17,1017,2017,3017],[18,1018,2018,3018],[19,1019,2019,3019],[20,1020,2020,3020],[21,1021,2021,3021],[22,1022,2022,3022],[23,1023,2023,3023],[24,1024,2024,3024],[25,1025,2025,3025],[26,1026,2026,3026],[27,1027,2027,3027],[28,1028,2028,3028],[29,1029,2029,3029],[30,1030,2030,3030],[31,1031,2031,3031],[32,1032,2032,3032],[33,1033,2033,3033],[34,1034,2034,3034],[35,1035,2035,3035],[36,1036,2036,3036],[37,1037,2037,3037],[38,1038,2038,3038],[39,1039,2039,3039],[40,1040,2040,3040],[41,1041,2041,3041],[42,1042,2042,3042],[43,1043,2043,3043],[44,1044,2044,3044],[45,1045,2045,3045],[46,1046,2046,3046],[47,1047,2047,3047],[48,1048,2048,3048],[49,1049,2049,3049],[50,1050,2050,3050],[51,1051,2051,3051],[52,1052,2052,3052],[53,1053,2053,3053],[54,1054,2054,3054],[55,1055,2055,3055],[56,1056,2056,3056],[57,1057,2057,3057],[58,1058,2058,3058],[59,1059,2059,3059],[60,1060,2060,3060],[61,1061,2061,3061],[62,1062,2062,3062],[63,1063,2063,3063],[64,1064,2064,3064],[65,1065,2065,3065],[66,1066,2066,3066],[67,1067,2067,3067],[68,1068,2068,3068],[69,1069,2069,3069],[70,1070,2070,3070],[71,1071,2071,3071],[72,1072,2072,3072],[73,1073,2073,3073],[74,1074,2074,3074],[75,1075,2075,3075],[76,1076,2076,3076],[77,1077,2077,3077],[78,1078,2078,3078],[79,1079,2079,3079],[80,1080,2080,3080],[81,1081,2081,3081],[82,1082,2082,3082],[83,1083,2083,3083],[84,1084,2084,3084],[85,1085,2085,3085],[86,1086,2086,3086],[87,1087,2087,3087],[88,1088,2088,3088],[89,1089,2089,3089],[90,1090,2090,3090],[91,1091,2091,3091],[92,1092,2092,3092],[93,1093,2093,3093],[94,1094,2094,3094],[95,1095,2095,3095],[96,1096,2096,3096],[97,1097,2097,3097],[98,1098,2098,3098],[99,1099,2099,3099],[100,1100,2100,3100],[101,1101,2101,3101],[102,1102,2102,3102],[103,1103,2103,3103],[104,1104,2104,3104],[105,1105,2105,3105],[106,1106,2106,3106],[107,1107,2107,3107],[108,1108,2108,3108],[109,1109,2109,3109],[110,1110,2110,3110],[111,1111,2111,3111],[112,1112,2112,3112],[113,1113,2113,3113],[114,1114,2114,3114],[115,1115,2115,3115],[116,1116,2116,3116],[117,1117,2117,3117],[118,1118,2118,3118],[119,1119,2119,3119],[120,1120,2120,3120],[121,1121,2121,3121],[122,1122,2122,3122],[123,1123,2123,3123],[124,1124,2124,3124],[125,1125,2125,3125],[126,1126,2126,3126],[127,1127,2127,3127],[128,1128,2128,3128],[129,1129,2129,3129],[130,1130,2130,3130],[131,1131,2131,3131],[132,1132,2132,3132],[133,1133,2133,3133],[134,1134,2134,3134],[135,1135,2135,3135],[136,1136,2136,3136],[137,1137,2137,3137],[138,1138,2138,3138],[139,1139,2139,3139],[140,1140,2140,3140],[141,1141,2141,3141],[142,1142,2142,3142],[143,1143,2143,3143],[144,1144,2144,3144],[145,1145,2145,3145],[146,1146,2146,3146],[147,1147,2147,3147],[148,1148,2148,3148],[149,1149,2149,3149],[150,1150,2150,3150],[151,1151,2151,3151],[152,1152,2152,3152],[153,1153,2153,3153],[154,1154,2154,3154],[155,1155,2155,3155],[156,1156,2156,3156],[157,1157,2157,3157],[158,1158,2158,3158],[159,1159,2159,3159],[160,1160,2160,3160],[161,1161,2161,3161],[162,1162,2162,3162],[163,1163,2163,3163],[164,1164,2164,3164],[165,1165,2165,3165],[166,1166,2166,3166],[167,1167,2167,3167],[168,1168,2168,3168],[169,1169,2169,3169],[170,1170,2170,3170],[171,1171,2171,3171],[172,1172,2172,3172],[173,1173,2173,3173],[174,1174,2174,3174],[175,1175,2175,3175],[176,1176,2176,3176],[177,1177,2177,3177],[178,1178,2178,3178],[179,1179,2179,3179],[180,1180,2180,3180],[181,1181,2181,3181],[182,1182,2182,3182],[183,1183,2183,3183],[184,1184,2184,3184],[185,1185,2185,3185],[186,1186,2186,3186],[187,1187,2187,3187],[188,1188,2188,3188],[189,1189,2189,3189],[190,1190,2190,3190],[191,1191,2191,3191],[192,1192,2192,3192],[193,1193,2193,3193],[194,1194,2194,3194],[195,1195,2195,3195],[196,1196,2196,3196],[197,1197,2197,3197],[198,1198,2198,3198],[199,1199,2199,3199],[200,1200,2200,3200],[201,1201,2201,3201],[202,1202,2202,3202],[203,1203,2203,3203],[204,1204,2204,3204],[205,1205,2205,3205],[206,1206,2206,3206],[207,1207,2207,3207],[208,1208,2208,3208],[209,1209,2209,3209],[210,1210,2210,3210],[211,1211,2211,3211],[212,1212,2212,3212],[213,1213,2213,3213],[214,1214,2214,3214],[215,1215,2215,3215],[216,1216,2216,3216],[217,1217,2217,3217],[218,1218,2218,3218],[219,1219,2219,3219],[220,1220,2220,3220],[221,1221,2221,3221],[222,1222,2222,3222],[223,1223,2223,3223],[224,1224,2224,3224],[225,1225,2225,3225],[226,1226,2226,3226],[227,1227,2227,3227],[228,1228,2228,3228],[229,1229,2229,3229],[230,1230,2230,3230],[231,1231,2231,3231],[232,1232,2232,3232],[233,1233,2233,3233],[234,1234,2234,3234],[235,1235,2235,3235],[236,1236,2236,3236],[237,1237,2237,3237],[238,1238,2238,3238],[239,1239,2239,3239],[240,1240,2240,3240],[241,1241,2241,3241],[242,1242,2242,3242],[243,1243,2243,3243],[244,1244,2244,3244],[245,1245,2245,3245],[246,1246,2246,3246],[247,1247,2247,3247],[248,1248,2248,3248],[249,1249,2249,3249],[250,1250,2250,3250],[251,1251,2251,3251],[252,1252,2252,3252],[253,1253,2253,3253],[254,1254,2254,3254],[255,1255,2255,3255],[256,1256,2256,3256],[257,1257,2257,3257],[258,1258,2258,3258],[259,1259,2259,3259],[260,1260,2260,3260],[261,1261,2261,3261],[262,1262,2262,3262],[263,1263,2263,3263],[264,1264,2264,3264],[265,1265,2265,3265],[266,1266,2266,3266],[267,1267,2267,3267],[268,1268,2268,3268],[269,1269,2269,3269],[270,1270,2270,3270],[271,1271,2271,3271],[272,1272,2272,3272],[273,1273,2273,3273],[274,1274,2274,3274],[275,1275,2275,3275],[276,1276,2276,3276],[277,1277,2277,3277],[278,1278,2278,3278],[279,1279,2279,3279],[280,1280,2280,3280],[281,1281,2281,3281],[282,1282,2282,3282],[283,1283,2283,3283],[284,1284,2284,3284],[285,1285,2285,3285],[286,1286,2286,3286],[287,1287,2287,3287],[288,1288,2288,3288],[289,1289,2289,3289],[290,1290,2290,3290],[291,1291,2291,3291],[292,1292,2292,3292],[293,1293,2293,3293],[294,1294,2294,3294],[295,1295,2295,3295],[296,1296,2296,3296],[297,1297,2297,3297],[298,1298,2298,3298],[299,1299,2299,3299],[300,1300,2300,3300],[301,1301,2301,3301],[302,1302,2302,3302],[303,1303,2303,3303],[304,1304,2304,3304],[305,1305,2305,3305],[306,1306,2306,3306],[307,1307,2307,3307],[308,1308,2308,3308],[309,1309,2309,3309],[310,1310,2310,3310],[311,1311,2311,3311],[312,1312,2312,3312],[313,1313,2313,3313],[314,1314,2314,3314],[315,1315,2315,3315],[316,1316,2316,3316],[317,1317,2317,3317],[318,1318,2318,3318],[319,1319,2319,3319],[320,1320,2320,3320],[321,1321,2321,3321],[322,1322,2322,3322],[323,1323,2323,3323],[324,1324,2324,3324],[325,1325,2325,3325],[326,1326,2326,3326],[327,1327,2327,3327],[328,1328,2328,3328],[329,1329,2329,3329],[330,1330,2330,3330],[331,1331,2331,3331],[332,1332,2332,3332],[333,1333,2333,3333],[334,1334,2334,3334],[335,1335,2335,3335],[336,1336,2336,3336],[337,1337,2337,3337],[338,1338,2338,3338],[339,1339,2339,3339],[340,1340,2340,3340],[341,1341,2341,3341],[342,1342,2342,3342],[343,1343,2343,3343],[344,1344,2344,3344],[345,1345,2345,3345],[346,1346,2346,3346],[347,1347,2347,3347],[348,1348,2348,3348],[349,1349,2349,3349],[350,1350,2350,3350],[351,1351,2351,3351],[352,1352,2352,3352],[353,1353,2353,3353],[354,1354,2354,3354],[355,1355,2355,3355],[356,1356,2356,3356],[357,1357,2357,3357],[358,1358,2358,3358],[359,1359,2359,3359],[360,1360,2360,3360],[361,1361,2361,3361],[362,1362,2362,3362],[363,1363,2363,3363],[364,1364,2364,3364],[365,1365,2365,3365],[366,1366,2366,3366],[367,1367,2367,3367],[368,1368,2368,3368],[369,1369,2369,3369],[370,1370,2370,3370],[371,1371,2371,3371],[372,1372,2372,3372],[373,1373,2373,3373],[374,1374,2374,3374],[375,1375,2375,3375],[376,1376,2376,3376],[377,1377,2377,3377],[378,1378,2378,3378],[379,1379,2379,3379],[380,1380,2380,3380],[381,1381,2381,3381],[382,1382,2382,3382],[383,1383,2383,3383],[384,1384,2384,3384],[385,1385,2385,3385],[386,1386,2386,3386],[387,1387,2387,3387],[388,1388,2388,3388],[389,1389,2389,3389],[390,1390,2390,3390],[391,1391,2391,3391],[392,1392,2392,3392],[393,1393,2393,3393],[394,1394,2394,3394],[395,1395,2395,3395],[396,1396,2396,3396],[397,1397,2397,3397],[398,1398,2398,3398],[399,1399,2399,3399],[400,1400,2400,3400],[401,1401,2401,3401],[402,1402,2402,3402],[403,1403,2403,3403],[404,1404,2404,3404],[405,1405,2405,3405],[406,1406,2406,3406],[407,1407,2407,3407],[408,1408,2408,3408],[409,1409,2409,3409],[410,1410,2410,3410],[411,1411,2411,3411],[412,1412,2412,3412],[413,1413,2413,3413],[414,1414,2414,3414],[415,1415,2415,3415],[416,1416,2416,3416],[417,1417,2417,3417],[418,1418,2418,3418],[419,1419,2419,3419],[420,1420,2420,3420],[421,1421,2421,3421],[422,1422,2422,3422],[423,1423,2423,3423],[424,1424,2424,3424],[425,1425,2425,3425],[426,1426,2426,3426],[427,1427,2427,3427],[428,1428,2428,3428],[429,1429,2429,3429],[430,1430,2430,3430],[431,1431,2431,3431],[432,1432,2432,3432],[433,1433,2433,3433],[434,1434,2434,3434],[435,1435,2435,3435],[436,1436,2436,3436],[437,1437,2437,3437],[438,1438,2438,3438],[439,1439,2439,3439],[440,1440,2440,3440],[441,1441,2441,3441],[442,1442,2442,3442],[443,1443,2443,3443],[444,1444,2444,3444],[445,1445,2445,3445],[446,1446,2446,3446],[447,1447,2447,3447],[448,1448,2448,3448],[449,1449,2449,3449],[450,1450,2450,3450],[451,1451,2451,3451],[452,1452,2452,3452],[453,1453,2453,3453],[454,1454,2454,3454],[455,1455,2455,3455],[456,1456,2456,3456],[457,1457,2457,3457],[458,1458,2458,3458],[459,1459,2459,3459],[460,1460,2460,3460],[461,1461,2461,3461],[462,1462,2462,3462],[463,1463,2463,3463],[464,1464,2464,3464],[465,1465,2465,3465],[466,1466,2466,3466],[467,1467,2467,3467],[468,1468,2468,3468],[469,1469,2469,3469],[470,1470,2470,3470],[471,1471,2471,3471],[472,1472,2472,3472],[473,1473,2473,3473],[474,1474,2474,3474],[475,1475,2475,3475],[476,1476,2476,3476],[477,1477,2477,3477],[478,1478,2478,3478],[479,1479,2479,3479],[480,1480,2480,3480],[481,1481,2481,3481],[482,1482,2482,3482],[483,1483,2483,3483],[484,1484,2484,3484],[485,1485,2485,3485],[486,1486,2486,3486],[487,1487,2487,3487],[488,1488,2488,3488],[489,1489,2489,3489],[490,1490,2490,3490],[491,1491,2491,3491],[492,1492,2492,3492],[493,1493,2493,3493],[494,1494,2494,3494],[495,1495,2495,3495],[496,1496,2496,3496],[497,1497,2497,3497],[498,1498,2498,3498],[499,1499,2499,3499],[500,1500,2500,3500],[501,1501,2501,3501],[502,1502,2502,3502],[503,1503,2503,3503],[504,1504,2504,3504],[505,1505,2505,3505],[506,1506,2506,3506],[507,1507,2507,3507],[508,1508,2508,3508],[509,1509,2509,3509],[510,1510,2510,3510],[511,1511,2511,3511],[512,1512,2512,3512],[513,1513,2513,3513],[514,1514,2514,3514],[515,1515,2515,3515],[516,1516,2516,3516],[517,1517,2517,3517],[518,1518,2518,3518],[519,1519,2519,3519],[520,1520,2520,3520],[521,1521,2521,3521],[522,1522,2522,3522],[523,1523,2523,3523],[524,1524,2524,3524],[525,1525,2525,3525],[526,1526,2526,3526],[527,1527,2527,3527],[528,1528,2528,3528],[529,1529,2529,3529],[530,1530,2530,3530],[531,1531,2531,3531],[532,1532,2532,3532],[533,1533,2533,3533],[534,1534,2534,3534],[535,1535,2535,3535],[536,1536,2536,3536],[537,1537,2537,3537],[538,1538,2538,3538],[539,1539,2539,3539],[540,1540,2540,3540],[541,1541,2541,3541],[542,1542,2542,3542],[543,1543,2543,3543],[544,1544,2544,3544],[545,1545,2545,3545],[546,1546,2546,3546],[547,1547,2547,3547],[548,1548,2548,3548],[549,1549,2549,3549],[550,1550,2550,3550],[551,1551,2551,3551],[552,1552,2552,3552],[553,1553,2553,3553],[554,1554,2554,3554],[555,1555,2555,3555],[556,1556,2556,3556],[557,1557,2557,3557],[558,1558,2558,3558],[559,1559,2559,3559],[560,1560,2560,3560],[561,1561,2561,3561],[562,1562,2562,3562],[563,1563,2563,3563],[564,1564,2564,3564],[565,1565,2565,3565],[566,1566,2566,3566],[567,1567,2567,3567],[568,1568,2568,3568],[569,1569,2569,3569],[570,1570,2570,3570],[571,1571,2571,3571],[572,1572,2572,3572],[573,1573,2573,3573],[574,1574,2574,3574],[575,1575,2575,3575],[576,1576,2576,3576],[577,1577,2577,3577],[578,1578,2578,3578],[579,1579,2579,3579],[580,1580,2580,3580],[581,1581,2581,3581],[582,1582,2582,3582],[583,1583,2583,3583],[584,1584,2584,3584],[585,1585,2585,3585],[586,1586,2586,3586],[587,1587,2587,3587],[588,1588,2588,3588],[589,1589,2589,3589],[590,1590,2590,3590],[591,1591,2591,3591],[592,1592,2592,3592],[593,1593,2593,3593],[594,1594,2594,3594],[595,1595,2595,3595],[596,1596,2596,3596],[597,1597,2597,3597],[598,1598,2598,3598],[599,1599,2599,3599],[600,1600,2600,3600],[601,1601,2601,3601],[602,1602,2602,3602],[603,1603,2603,3603],[604,1604,2604,3604],[605,1605,2605,3605],[606,1606,2606,3606],[607,1607,2607,3607],[608,1608,2608,3608],[609,1609,2609,3609],[610,1610,2610,3610],[611,1611,2611,3611],[612,1612,2612,3612],[613,1613,2613,3613],[614,1614,2614,3614],[615,1615,2615,3615],[616,1616,2616,3616],[617,1617,2617,3617],[618,1618,2618,3618],[619,1619,2619,3619],[620,1620,2620,3620],[621,1621,2621,3621],[622,1622,2622,3622],[623,1623,2623,3623],[624,1624,2624,3624],[625,1625,2625,3625],[626,1626,2626,3626],[627,1627,2627,3627],[628,1628,2628,3628],[629,1629,2629,3629],[630,1630,2630,3630],[631,1631,2631,3631],[632,1632,2632,3632],[633,1633,2633,3633],[634,1634,2634,3634],[635,1635,2635,3635],[636,1636,2636,3636],[637,1637,2637,3637],[638,1638,2638,3638],[639,1639,2639,3639],[640,1640,2640,3640],[641,1641,2641,3641],[642,1642,2642,3642],[643,1643,2643,3643],[644,1644,2644,3644],[645,1645,2645,3645],[646,1646,2646,3646],[647,1647,2647,3647],[648,1648,2648,3648],[649,1649,2649,3649],[650,1650,2650,3650],[651,1651,2651,3651],[652,1652,2652,3652],[653,1653,2653,3653],[654,1654,2654,3654],[655,1655,2655,3655],[656,1656,2656,3656],[657,1657,2657,3657],[658,1658,2658,3658],[659,1659,2659,3659],[660,1660,2660,3660],[661,1661,2661,3661],[662,1662,2662,3662],[663,1663,2663,3663],[664,1664,2664,3664],[665,1665,2665,3665],[666,1666,2666,3666],[667,1667,2667,3667],[668,1668,2668,3668],[669,1669,2669,3669],[670,1670,2670,3670],[671,1671,2671,3671],[672,1672,2672,3672],[673,1673,2673,3673],[674,1674,2674,3674],[675,1675,2675,3675],[676,1676,2676,3676],[677,1677,2677,3677],[678,1678,2678,3678],[679,1679,2679,3679],[680,1680,2680,3680],[681,1681,2681,3681],[682,1682,2682,3682],[683,1683,2683,3683],[684,1684,2684,3684],[685,1685,2685,3685],[686,1686,2686,3686],[687,1687,2687,3687],[688,1688,2688,3688],[689,1689,2689,3689],[690,1690,2690,3690],[691,1691,2691,3691],[692,1692,2692,3692],[693,1693,2693,3693],[694,1694,2694,3694],[695,1695,2695,3695],[696,1696,2696,3696],[697,1697,2697,3697],[698,1698,2698,3698],[699,1699,2699,3699],[700,1700,2700,3700],[701,1701,2701,3701],[702,1702,2702,3702],[703,1703,2703,3703],[704,1704,2704,3704],[705,1705,2705,3705],[706,1706,2706,3706],[707,1707,2707,3707],[708,1708,2708,3708],[709,1709,2709,3709],[710,1710,2710,3710],[711,1711,2711,3711],[712,1712,2712,3712],[713,1713,2713,3713],[714,1714,2714,3714],[715,1715,2715,3715],[716,1716,2716,3716],[717,1717,2717,3717],[718,1718,2718,3718],[719,1719,2719,3719],[720,1720,2720,3720],[721,1721,2721,3721],[722,1722,2722,3722],[723,1723,2723,3723],[724,1724,2724,3724],[725,1725,2725,3725],[726,1726,2726,3726],[727,1727,2727,3727],[728,1728,2728,3728],[729,1729,2729,3729],[730,1730,2730,3730],[731,1731,2731,3731],[732,1732,2732,3732],[733,1733,2733,3733],[734,1734,2734,3734],[735,1735,2735,3735],[736,1736,2736,3736],[737,1737,2737,3737],[738,1738,2738,3738],[739,1739,2739,3739],[740,1740,2740,3740],[741,1741,2741,3741],[742,1742,2742,3742],[743,1743,2743,3743],[744,1744,2744,3744],[745,1745,2745,3745],[746,1746,2746,3746],[747,1747,2747,3747],[748,1748,2748,3748],[749,1749,2749,3749],[750,1750,2750,3750],[751,1751,2751,3751],[752,1752,2752,3752],[753,1753,2753,3753],[754,1754,2754,3754],[755,1755,2755,3755],[756,1756,2756,3756],[757,1757,2757,3757],[758,1758,2758,3758],[759,1759,2759,3759],[760,1760,2760,3760],[761,1761,2761,3761],[762,1762,2762,3762],[763,1763,2763,3763],[764,1764,2764,3764],[765,1765,2765,3765],[766,1766,2766,3766],[767,1767,2767,3767],[768,1768,2768,3768],[769,1769,2769,3769],[770,1770,2770,3770],[771,1771,2771,3771],[772,1772,2772,3772],[773,1773,2773,3773],[774,1774,2774,3774],[775,1775,2775,3775],[776,1776,2776,3776],[777,1777,2777,3777],[778,1778,2778,3778],[779,1779,2779,3779],[780,1780,2780,3780],[781,1781,2781,3781],[782,1782,2782,3782],[783,1783,2783,3783],[784,1784,2784,3784],[785,1785,2785,3785],[786,1786,2786,3786],[787,1787,2787,3787],[788,1788,2788,3788],[789,1789,2789,3789],[790,1790,2790,3790],[791,1791,2791,3791],[792,1792,2792,3792],[793,1793,2793,3793],[794,1794,2794,3794],[795,1795,2795,3795],[796,1796,2796,3796],[797,1797,2797,3797],[798,1798,2798,3798],[799,1799,2799,3799],[800,1800,2800,3800],[801,1801,2801,3801],[802,1802,2802,3802],[803,1803,2803,3803],[804,1804,2804,3804],[805,1805,2805,3805],[806,1806,2806,3806],[807,1807,2807,3807],[808,1808,2808,3808],[809,1809,2809,3809],[810,1810,2810,3810],[811,1811,2811,3811],[812,1812,2812,3812],[813,1813,2813,3813],[814,1814,2814,3814],[815,1815,2815,3815],[816,1816,2816,3816],[817,1817,2817,3817],[818,1818,2818,3818],[819,1819,2819,3819],[820,1820,2820,3820],[821,1821,2821,3821],[822,1822,2822,3822],[823,1823,2823,3823],[824,1824,2824,3824],[825,1825,2825,3825],[826,1826,2826,3826],[827,1827,2827,3827],[828,1828,2828,3828],[829,1829,2829,3829],[830,1830,2830,3830],[831,1831,2831,3831],[832,1832,2832,3832],[833,1833,2833,3833],[834,1834,2834,3834],[835,1835,2835,3835],[836,1836,2836,3836],[837,1837,2837,3837],[838,1838,2838,3838],[839,1839,2839,3839],[840,1840,2840,3840],[841,1841,2841,3841],[842,1842,2842,3842],[843,1843,2843,3843],[844,1844,2844,3844],[845,1845,2845,3845],[846,1846,2846,3846],[847,1847,2847,3847],[848,1848,2848,3848],[849,1849,2849,3849],[850,1850,2850,3850],[851,1851,2851,3851],[852,1852,2852,3852],[853,1853,2853,3853],[854,1854,2854,3854],[855,1855,2855,3855],[856,1856,2856,3856],[857,1857,2857,3857],[858,1858,2858,3858],[859,1859,2859,3859],[860,1860,2860,3860],[861,1861,2861,3861],[862,1862,2862,3862],[863,1863,2863,3863],[864,1864,2864,3864],[865,1865,2865,3865],[866,1866,2866,3866],[867,1867,2867,3867],[868,1868,2868,3868],[869,1869,2869,3869],[870,1870,2870,3870],[871,1871,2871,3871],[872,1872,2872,3872],[873,1873,2873,3873],[874,1874,2874,3874],[875,1875,2875,3875],[876,1876,2876,3876],[877,1877,2877,3877],[878,1878,2878,3878],[879,1879,2879,3879],[880,1880,2880,3880],[881,1881,2881,3881],[882,1882,2882,3882],[883,1883,2883,3883],[884,1884,2884,3884],[885,1885,2885,3885],[886,1886,2886,3886],[887,1887,2887,3887],[888,1888,2888,3888],[889,1889,2889,3889],[890,1890,2890,3890],[891,1891,2891,3891],[892,1892,2892,3892],[893,1893,2893,3893],[894,1894,2894,3894],[895,1895,2895,3895],[896,1896,2896,3896],[897,1897,2897,3897],[898,1898,2898,3898],[899,1899,2899,3899],[900,1900,2900,3900],[901,1901,2901,3901],[902,1902,2902,3902],[903,1903,2903,3903],[904,1904,2904,3904],[905,1905,2905,3905],[906,1906,2906,3906],[907,1907,2907,3907],[908,1908,2908,3908],[909,1909,2909,3909],[910,1910,2910,3910],[911,1911,2911,3911],[912,1912,2912,3912],[913,1913,2913,3913],[914,1914,2914,3914],[915,1915,2915,3915],[916,1916,2916,3916],[917,1917,2917,3917],[918,1918,2918,3918],[919,1919,2919,3919],[920,1920,2920,3920],[921,1921,2921,3921],[922,1922,2922,3922],[923,1923,2923,3923],[924,1924,2924,3924],[925,1925,2925,3925],[926,1926,2926,3926],[927,1927,2927,3927],[928,1928,2928,3928],[929,1929,2929,3929],[930,1930,2930,3930],[931,1931,2931,3931],[932,1932,2932,3932],[933,1933,2933,3933],[934,1934,2934,3934],[935,1935,2935,3935],[936,1936,2936,3936],[937,1937,2937,3937],[938,1938,2938,3938],[939,1939,2939,3939],[940,1940,2940,3940],[941,1941,2941,3941],[942,1942,2942,3942],[943,1943,2943,3943],[944,1944,2944,3944],[945,1945,2945,3945],[946,1946,2946,3946],[947,1947,2947,3947],[948,1948,2948,3948],[949,1949,2949,3949],[950,1950,2950,3950],[951,1951,2951,3951],[952,1952,2952,3952],[953,1953,2953,3953],[954,1954,2954,3954],[955,1955,2955,3955],[956,1956,2956,3956],[957,1957,2957,3957],[958,1958,2958,3958],[959,1959,2959,3959],[960,1960,2960,3960],[961,1961,2961,3961],[962,1962,2962,3962],[963,1963,2963,3963],[964,1964,2964,3964],[965,1965,2965,3965],[966,1966,2966,3966],[967,1967,2967,3967],[968,1968,2968,3968],[969,1969,2969,3969],[970,1970,2970,3970],[971,1971,2971,3971],[972,1972,2972,3972],[973,1973,2973,3973],[974,1974,2974,3974],[975,1975,2975,3975],[976,1976,2976,3976],[977,1977,2977,3977],[978,1978,2978,3978],[979,1979,2979,3979],[980,1980,2980,3980],[981,1981,2981,3981],[982,1982,2982,3982],[983,1983,2983,3983],[984,1984,2984,3984],[985,1985,2985,3985],[986,1986,2986,3986],[987,1987,2987,3987],[988,1988,2988,3988],[989,1989,2989,3989],[990,1990,2990,3990],[991,1991,2991,3991],[992,1992,2992,3992],[993,1993,2993,3993],[994,1994,2994,3994],[995,1995,2995,3995],[996,1996,2996,3996],[997,1997,2997,3997],[998,1998,2998,3998],[999,1999,2999,3999],[1000,2000,3000,4000]]}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/DT/examples/DT-scroller/rsconnect/shinyapps.io/yihui/DT-scroller.dcf
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/DT/examples/DT-scroller/rsconnect/shinyapps.io/yihui/DT-scroller.dcf	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/DT/examples/DT-scroller/rsconnect/shinyapps.io/yihui/DT-scroller.dcf	(revision 3762)
@@ -0,0 +1,9 @@
+name: DT-scroller
+account: yihui
+server: shinyapps.io
+appId: 34078
+bundleId: 519189
+url: https://yihui.shinyapps.io/DT-scroller/
+when: 1469809120.66141
+asMultiple: FALSE
+asStatic: FALSE
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/DT/examples/DT-selection/rsconnect/shinyapps.io/yihui/DT-selection.dcf
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/DT/examples/DT-selection/rsconnect/shinyapps.io/yihui/DT-selection.dcf	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.win32/res/win32/library/DT/examples/DT-selection/rsconnect/shinyapps.io/yihui/DT-selection.dcf	(revision 3762)
@@ -0,0 +1,9 @@
+name: DT-selection
+account: yihui
+server: shinyapps.io
+appId: 51473
+bundleId: 519194
+url: https://yihui.shinyapps.io/DT-selection/
+when: 1469809303.27552
+asMultiple: FALSE
+asStatic: FALSE
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/Rcpp/include/Rcpp/sugar/sugar.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/Rcpp/include/Rcpp/sugar/sugar.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/Rcpp/include/Rcpp/sugar/sugar.h	(revision 3762)
@@ -0,0 +1,35 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; tab-width: 8 -*-
+//
+// sugar.h: Rcpp R/C++ interface class library -- main file for Rcpp::sugar
+//
+// Copyright (C) 2010 - 2012 Dirk Eddelbuettel and Romain Francois
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+#ifndef RCPP_SUGAR_H
+#define RCPP_SUGAR_H
+
+#include <Rcpp/sugar/tools/iterator.h>
+#include <Rcpp/sugar/block/block.h>
+
+#include <Rcpp/hash/hash.h>
+
+#include <Rcpp/sugar/operators/operators.h>
+#include <Rcpp/sugar/functions/functions.h>
+#include <Rcpp/sugar/matrix/matrix_functions.h>
+
+
+#endif
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/Rcpp/include/Rcpp/sugar/undoRmath.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/Rcpp/include/Rcpp/sugar/undoRmath.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/Rcpp/include/Rcpp/sugar/undoRmath.h	(revision 3762)
@@ -0,0 +1,167 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; tab-width: 8 -*-
+//
+// undoRmath.h: Rcpp R/C++ interface class library -- undo the macros set by Rmath.h
+//
+// Copyright (C) 2010 - 2011 Dirk Eddelbuettel and Romain Francois
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+#ifndef RCPP_SUGAR_UNDORMATH_H
+#define RCPP_SUGAR_UNDORMATH_H
+
+// undo some of the mess of Rmath
+#undef sign
+#undef trunc
+#undef rround
+#undef prec
+
+#undef bessel_i
+#undef bessel_j
+#undef bessel_k
+#undef bessel_y
+#undef bessel_i_ex
+#undef bessel_j_ex
+#undef bessel_k_ex
+#undef bessel_y_ex
+#undef beta
+#undef choose
+#undef dbeta
+#undef dbinom
+#undef dcauchy
+#undef dchisq
+#undef dexp
+#undef df
+#undef dgamma
+#undef dgeom
+#undef dhyper
+#undef digamma
+#undef dlnorm
+#undef dlogis
+#undef dnbeta
+#undef dnbinom
+#undef dnchisq
+#undef dnf
+#undef dnorm4
+#undef dnt
+#undef dpois
+#undef dpsifn
+#undef dsignrank
+#undef dt
+#undef dtukey
+#undef dunif
+#undef dweibull
+#undef dwilcox
+#undef fmax2
+#undef fmin2
+#undef fprec
+#undef fround
+#undef ftrunc
+#undef fsign
+#undef gammafn
+#undef imax2
+#undef imin2
+#undef lbeta
+#undef lchoose
+#undef lgammafn
+#undef lgammafn_sign
+#undef lgamma1p
+#undef log1pmx
+#undef logspace_add
+#undef logspace_sub
+#undef pbeta
+#undef pbeta_raw
+#undef pbinom
+#undef pcauchy
+#undef pchisq
+#undef pentagamma
+#undef pexp
+#undef pf
+#undef pgamma
+#undef pgeom
+#undef phyper
+#undef plnorm
+#undef plogis
+#undef pnbeta
+#undef pnbinom
+#undef pnchisq
+#undef pnf
+#undef pnorm5
+#undef pnorm_both
+#undef pnt
+#undef ppois
+#undef psignrank
+#undef psigamma
+#undef pt
+#undef ptukey
+#undef punif
+/* #undef pythag */
+#undef pweibull
+#undef pwilcox
+#undef qbeta
+#undef qbinom
+#undef qcauchy
+#undef qchisq
+#undef qchisq_appr
+#undef qexp
+#undef qf
+#undef qgamma
+#undef qgeom
+#undef qhyper
+#undef qlnorm
+#undef qlogis
+#undef qnbeta
+#undef qnbinom
+#undef qnchisq
+#undef qnf
+#undef qnorm5
+#undef qnt
+#undef qpois
+#undef qsignrank
+#undef qt
+#undef qtukey
+#undef qunif
+#undef qweibull
+#undef qwilcox
+#undef rbeta
+#undef rbinom
+#undef rcauchy
+#undef rchisq
+#undef rexp
+#undef rf
+#undef rgamma
+#undef rgeom
+#undef rhyper
+#undef rlnorm
+#undef rlogis
+#undef rnbeta
+#undef rnbinom
+#undef rnchisq
+#undef rnf
+#undef rnorm
+#undef rnt
+#undef rpois
+#undef rsignrank
+#undef rt
+#undef rtukey
+#undef runif
+#undef rweibull
+#undef rwilcox
+#undef sign
+#undef tetragamma
+#undef trigamma
+
+
+#endif
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/Rcpp/include/Rcpp/sugar/sugar_forward.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/Rcpp/include/Rcpp/sugar/sugar_forward.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/Rcpp/include/Rcpp/sugar/sugar_forward.h	(revision 3762)
@@ -0,0 +1,33 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; tab-width: 8 -*-
+//
+// sugar_forward.h: Rcpp R/C++ interface class library -- forward declaration for Rcpp::sugar
+//
+// Copyright (C) 2010 - 2011 Dirk Eddelbuettel and Romain Francois
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+#ifndef RCPP_SUGAR_FORWARD_H
+#define RCPP_SUGAR_FORWARD_H
+
+// traits
+#include <Rcpp/sugar/operators/r_binary_op.h>
+
+// abstractions
+#include <Rcpp/sugar/logical/logical.h>
+
+#include <Rcpp/sugar/Range.h>
+
+#endif
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/Rcpp/include/Rcpp/sugar/Range.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/Rcpp/include/Rcpp/sugar/Range.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/Rcpp/include/Rcpp/sugar/Range.h	(revision 3762)
@@ -0,0 +1,92 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; indent-tabs-mode: nil; -*-
+//
+// Range.h: Rcpp R/C++ interface class library --
+//
+// Copyright (C) 2010 - 2013 Dirk Eddelbuettel and Romain Francois
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+#ifndef RCPP_SUGAR_RANGE_H
+#define RCPP_SUGAR_RANGE_H
+
+namespace Rcpp{
+
+    class Range : public VectorBase<INTSXP,false, Range >{
+    public:
+        Range( R_xlen_t start_, R_xlen_t end__ ) : start(start_), end_(end__){
+            if( start_ > end__ ){
+                throw std::range_error( "upper value must be greater than lower value" ) ;
+            }
+        }
+
+        inline R_xlen_t size() const{
+            return end_ - start + 1;
+        }
+
+        inline R_xlen_t operator[]( R_xlen_t i) const {
+            return start + i ;
+        }
+
+        Range& operator++() {
+            start++ ; end_++ ;
+            return *this ;
+        }
+        Range operator++(int) {
+            Range orig(*this) ;
+            ++(*this);
+            return orig ;
+        }
+
+        Range& operator--() {
+            start-- ; end_-- ;
+            return *this ;
+        }
+        Range operator--(int) {
+            Range orig(*this) ;
+            --(*this);
+            return orig ;
+        }
+
+        Range& operator+=( int n ) {
+            start += n ; end_ += n ;
+            return *this ;
+        }
+
+        Range& operator-=( int n ) {
+            start -= n ; end_ -= n ;
+            return *this ;
+        }
+
+        Range operator+( int n ){
+            return Range( start + n, end_ + n ) ;
+        }
+
+        Range operator-( int n ){
+            return Range( start - n, end_ - n ) ;
+        }
+
+        inline R_xlen_t get_start() const { return start ; }
+
+        inline R_xlen_t get_end() const { return end_ ; }
+
+    private:
+        R_xlen_t start ;
+        R_xlen_t end_ ;
+    } ;
+
+}
+
+#endif
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/Rcpp/include/Rcpp/sugar/sets.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/Rcpp/include/Rcpp/sugar/sets.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/Rcpp/include/Rcpp/sugar/sets.h	(revision 3762)
@@ -0,0 +1,61 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; tab-width: 8 -*-
+//
+// sets.h: Rcpp R/C++ interface class library --
+//
+// Copyright (C) 2012   Dirk Eddelbuettel and Romain Francois
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+#ifndef Rcpp__sugar__sets_h
+#define Rcpp__sugar__sets_h
+
+#if __cplusplus >= 201103L
+    #define RCPP_UNORDERED_SET std::unordered_set
+    #define RCPP_UNORDERED_MAP std::unordered_map
+
+    namespace std {
+        template<>
+        struct hash<Rcpp::String> {
+            std::size_t operator()(const Rcpp::String& key) const {
+                return pointer_hasher( key.get_sexp() ) ;
+            }
+            hash<SEXP> pointer_hasher ;
+        };
+    }
+
+#elif defined(HAS_TR1_UNORDERED_SET)
+    #define RCPP_UNORDERED_SET std::tr1::unordered_set
+    #define RCPP_UNORDERED_MAP std::tr1::unordered_map
+
+    namespace std {
+        namespace tr1 {
+            template<>
+            struct hash<Rcpp::String> {
+                std::size_t operator()(const Rcpp::String& key) const {
+                    return pointer_hasher( key.get_sexp() ) ;
+                }
+                hash<SEXP> pointer_hasher ;
+            };
+        }
+    }
+
+
+#else
+    #define RCPP_UNORDERED_SET std::set
+    #define RCPP_UNORDERED_MAP std::map
+#endif
+
+#endif
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/bslib/lib/bs5/README.md
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/bslib/lib/bs5/README.md	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/bslib/lib/bs5/README.md	(revision 3762)
@@ -0,0 +1,246 @@
+<p align="center">
+  <a href="https://getbootstrap.com/">
+    <img src="https://getbootstrap.com/docs/5.2/assets/brand/bootstrap-logo-shadow.png" alt="Bootstrap logo" width="200" height="165">
+  </a>
+</p>
+
+<h3 align="center">Bootstrap</h3>
+
+<p align="center">
+  Sleek, intuitive, and powerful front-end framework for faster and easier web development.
+  <br>
+  <a href="https://getbootstrap.com/docs/5.2/"><strong>Explore Bootstrap docs »</strong></a>
+  <br>
+  <br>
+  <a href="https://github.com/twbs/bootstrap/issues/new?assignees=-&labels=bug&template=bug_report.yml">Report bug</a>
+  ·
+  <a href="https://github.com/twbs/bootstrap/issues/new?assignees=&labels=feature&template=feature_request.yml">Request feature</a>
+  ·
+  <a href="https://themes.getbootstrap.com/">Themes</a>
+  ·
+  <a href="https://blog.getbootstrap.com/">Blog</a>
+</p>
+
+
+## Bootstrap 5
+
+Our default branch is for development of our Bootstrap 5 release. Head to the [`v4-dev` branch](https://github.com/twbs/bootstrap/tree/v4-dev) to view the readme, documentation, and source code for Bootstrap 4.
+
+
+## Table of contents
+
+- [Quick start](#quick-start)
+- [Status](#status)
+- [What's included](#whats-included)
+- [Bugs and feature requests](#bugs-and-feature-requests)
+- [Documentation](#documentation)
+- [Contributing](#contributing)
+- [Community](#community)
+- [Versioning](#versioning)
+- [Creators](#creators)
+- [Thanks](#thanks)
+- [Copyright and license](#copyright-and-license)
+
+
+## Quick start
+
+Several quick start options are available:
+
+- [Download the latest release](https://github.com/twbs/bootstrap/archive/v5.2.2.zip)
+- Clone the repo: `git clone https://github.com/twbs/bootstrap.git`
+- Install with [npm](https://www.npmjs.com/): `npm install bootstrap@v5.2.2`
+- Install with [yarn](https://yarnpkg.com/): `yarn add bootstrap@v5.2.2`
+- Install with [Composer](https://getcomposer.org/): `composer require twbs/bootstrap:5.2.2`
+- Install with [NuGet](https://www.nuget.org/): CSS: `Install-Package bootstrap` Sass: `Install-Package bootstrap.sass`
+
+Read the [Getting started page](https://getbootstrap.com/docs/5.2/getting-started/introduction/) for information on the framework contents, templates, examples, and more.
+
+
+## Status
+
+[![Build Status](https://img.shields.io/github/workflow/status/twbs/bootstrap/JS%20Tests/main?label=JS%20Tests&logo=github)](https://github.com/twbs/bootstrap/actions?query=workflow%3AJS+Tests+branch%3Amain)
+[![npm version](https://img.shields.io/npm/v/bootstrap)](https://www.npmjs.com/package/bootstrap)
+[![Gem version](https://img.shields.io/gem/v/bootstrap)](https://rubygems.org/gems/bootstrap)
+[![Meteor Atmosphere](https://img.shields.io/badge/meteor-twbs%3Abootstrap-blue)](https://atmospherejs.com/twbs/bootstrap)
+[![Packagist Prerelease](https://img.shields.io/packagist/vpre/twbs/bootstrap)](https://packagist.org/packages/twbs/bootstrap)
+[![NuGet](https://img.shields.io/nuget/vpre/bootstrap)](https://www.nuget.org/packages/bootstrap/absoluteLatest)
+[![Coverage Status](https://img.shields.io/coveralls/github/twbs/bootstrap/main)](https://coveralls.io/github/twbs/bootstrap?branch=main)
+[![CSS gzip size](https://img.badgesize.io/twbs/bootstrap/main/dist/css/bootstrap.min.css?compression=gzip&label=CSS%20gzip%20size)](https://github.com/twbs/bootstrap/blob/main/dist/css/bootstrap.min.css)
+[![CSS Brotli size](https://img.badgesize.io/twbs/bootstrap/main/dist/css/bootstrap.min.css?compression=brotli&label=CSS%20Brotli%20size)](https://github.com/twbs/bootstrap/blob/main/dist/css/bootstrap.min.css)
+[![JS gzip size](https://img.badgesize.io/twbs/bootstrap/main/dist/js/bootstrap.min.js?compression=gzip&label=JS%20gzip%20size)](https://github.com/twbs/bootstrap/blob/main/dist/js/bootstrap.min.js)
+[![JS Brotli size](https://img.badgesize.io/twbs/bootstrap/main/dist/js/bootstrap.min.js?compression=brotli&label=JS%20Brotli%20size)](https://github.com/twbs/bootstrap/blob/main/dist/js/bootstrap.min.js)
+[![BrowserStack Status](https://www.browserstack.com/automate/badge.svg?badge_key=SkxZcStBeExEdVJqQ2hWYnlWckpkNmNEY213SFp6WHFETWk2bGFuY3pCbz0tLXhqbHJsVlZhQnRBdEpod3NLSDMzaHc9PQ==--3d0b75245708616eb93113221beece33e680b229)](https://www.browserstack.com/automate/public-build/SkxZcStBeExEdVJqQ2hWYnlWckpkNmNEY213SFp6WHFETWk2bGFuY3pCbz0tLXhqbHJsVlZhQnRBdEpod3NLSDMzaHc9PQ==--3d0b75245708616eb93113221beece33e680b229)
+[![Backers on Open Collective](https://img.shields.io/opencollective/backers/bootstrap)](#backers)
+[![Sponsors on Open Collective](https://img.shields.io/opencollective/sponsors/bootstrap)](#sponsors)
+
+
+## What's included
+
+Within the download you'll find the following directories and files, logically grouping common assets and providing both compiled and minified variations.
+
+<details>
+  <summary>Download contents</summary>
+
+  ```text
+  bootstrap/
+  ├── css/
+  │   ├── bootstrap-grid.css
+  │   ├── bootstrap-grid.css.map
+  │   ├── bootstrap-grid.min.css
+  │   ├── bootstrap-grid.min.css.map
+  │   ├── bootstrap-grid.rtl.css
+  │   ├── bootstrap-grid.rtl.css.map
+  │   ├── bootstrap-grid.rtl.min.css
+  │   ├── bootstrap-grid.rtl.min.css.map
+  │   ├── bootstrap-reboot.css
+  │   ├── bootstrap-reboot.css.map
+  │   ├── bootstrap-reboot.min.css
+  │   ├── bootstrap-reboot.min.css.map
+  │   ├── bootstrap-reboot.rtl.css
+  │   ├── bootstrap-reboot.rtl.css.map
+  │   ├── bootstrap-reboot.rtl.min.css
+  │   ├── bootstrap-reboot.rtl.min.css.map
+  │   ├── bootstrap-utilities.css
+  │   ├── bootstrap-utilities.css.map
+  │   ├── bootstrap-utilities.min.css
+  │   ├── bootstrap-utilities.min.css.map
+  │   ├── bootstrap-utilities.rtl.css
+  │   ├── bootstrap-utilities.rtl.css.map
+  │   ├── bootstrap-utilities.rtl.min.css
+  │   ├── bootstrap-utilities.rtl.min.css.map
+  │   ├── bootstrap.css
+  │   ├── bootstrap.css.map
+  │   ├── bootstrap.min.css
+  │   ├── bootstrap.min.css.map
+  │   ├── bootstrap.rtl.css
+  │   ├── bootstrap.rtl.css.map
+  │   ├── bootstrap.rtl.min.css
+  │   └── bootstrap.rtl.min.css.map
+  └── js/
+      ├── bootstrap.bundle.js
+      ├── bootstrap.bundle.js.map
+      ├── bootstrap.bundle.min.js
+      ├── bootstrap.bundle.min.js.map
+      ├── bootstrap.esm.js
+      ├── bootstrap.esm.js.map
+      ├── bootstrap.esm.min.js
+      ├── bootstrap.esm.min.js.map
+      ├── bootstrap.js
+      ├── bootstrap.js.map
+      ├── bootstrap.min.js
+      └── bootstrap.min.js.map
+  ```
+</details>
+
+We provide compiled CSS and JS (`bootstrap.*`), as well as compiled and minified CSS and JS (`bootstrap.min.*`). [Source maps](https://developers.google.com/web/tools/chrome-devtools/javascript/source-maps) (`bootstrap.*.map`) are available for use with certain browsers' developer tools. Bundled JS files (`bootstrap.bundle.js` and minified `bootstrap.bundle.min.js`) include [Popper](https://popper.js.org/).
+
+
+## Bugs and feature requests
+
+Have a bug or a feature request? Please first read the [issue guidelines](https://github.com/twbs/bootstrap/blob/main/.github/CONTRIBUTING.md#using-the-issue-tracker) and search for existing and closed issues. If your problem or idea is not addressed yet, [please open a new issue](https://github.com/twbs/bootstrap/issues/new/choose).
+
+
+## Documentation
+
+Bootstrap's documentation, included in this repo in the root directory, is built with [Hugo](https://gohugo.io/) and publicly hosted on GitHub Pages at <https://getbootstrap.com/>. The docs may also be run locally.
+
+Documentation search is powered by [Algolia's DocSearch](https://docsearch.algolia.com/). Working on our search? Be sure to set `debug: true` in `site/assets/js/search.js`.
+
+### Running documentation locally
+
+1. Run `npm install` to install the Node.js dependencies, including Hugo (the site builder).
+2. Run `npm run test` (or a specific npm script) to rebuild distributed CSS and JavaScript files, as well as our docs assets.
+3. From the root `/bootstrap` directory, run `npm run docs-serve` in the command line.
+4. Open `http://localhost:9001/` in your browser, and voilà.
+
+Learn more about using Hugo by reading its [documentation](https://gohugo.io/documentation/).
+
+### Documentation for previous releases
+
+You can find all our previous releases docs on <https://getbootstrap.com/docs/versions/>.
+
+[Previous releases](https://github.com/twbs/bootstrap/releases) and their documentation are also available for download.
+
+
+## Contributing
+
+Please read through our [contributing guidelines](https://github.com/twbs/bootstrap/blob/main/.github/CONTRIBUTING.md). Included are directions for opening issues, coding standards, and notes on development.
+
+Moreover, if your pull request contains JavaScript patches or features, you must include [relevant unit tests](https://github.com/twbs/bootstrap/tree/main/js/tests). All HTML and CSS should conform to the [Code Guide](https://github.com/mdo/code-guide), maintained by [Mark Otto](https://github.com/mdo).
+
+Editor preferences are available in the [editor config](https://github.com/twbs/bootstrap/blob/main/.editorconfig) for easy use in common text editors. Read more and download plugins at <https://editorconfig.org/>.
+
+
+## Community
+
+Get updates on Bootstrap's development and chat with the project maintainers and community members.
+
+- Follow [@getbootstrap on Twitter](https://twitter.com/getbootstrap).
+- Read and subscribe to [The Official Bootstrap Blog](https://blog.getbootstrap.com/).
+- Ask and explore [our GitHub Discussions](https://github.com/twbs/bootstrap/discussions).
+- Chat with fellow Bootstrappers in IRC. On the `irc.libera.chat` server, in the `#bootstrap` channel.
+- Implementation help may be found at Stack Overflow (tagged [`bootstrap-5`](https://stackoverflow.com/questions/tagged/bootstrap-5)).
+- Developers should use the keyword `bootstrap` on packages which modify or add to the functionality of Bootstrap when distributing through [npm](https://www.npmjs.com/browse/keyword/bootstrap) or similar delivery mechanisms for maximum discoverability.
+
+
+## Versioning
+
+For transparency into our release cycle and in striving to maintain backward compatibility, Bootstrap is maintained under [the Semantic Versioning guidelines](https://semver.org/). Sometimes we screw up, but we adhere to those rules whenever possible.
+
+See [the Releases section of our GitHub project](https://github.com/twbs/bootstrap/releases) for changelogs for each release version of Bootstrap. Release announcement posts on [the official Bootstrap blog](https://blog.getbootstrap.com/) contain summaries of the most noteworthy changes made in each release.
+
+
+## Creators
+
+**Mark Otto**
+
+- <https://twitter.com/mdo>
+- <https://github.com/mdo>
+
+**Jacob Thornton**
+
+- <https://twitter.com/fat>
+- <https://github.com/fat>
+
+
+## Thanks
+
+<a href="https://www.browserstack.com/">
+  <img src="https://live.browserstack.com/images/opensource/browserstack-logo.svg" alt="BrowserStack" width="192" height="42">
+</a>
+
+Thanks to [BrowserStack](https://www.browserstack.com/) for providing the infrastructure that allows us to test in real browsers!
+
+<a href="https://www.netlify.com/">
+  <img src="https://www.netlify.com/v3/img/components/full-logo-light.svg" alt="Netlify" width="147" height="40">
+</a>
+
+Thanks to [Netlify](https://www.netlify.com/) for providing us with Deploy Previews!
+
+
+## Sponsors
+
+Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/bootstrap#sponsor)]
+
+[![OC sponsor 0](https://opencollective.com/bootstrap/sponsor/0/avatar.svg)](https://opencollective.com/bootstrap/sponsor/0/website)
+[![OC sponsor 1](https://opencollective.com/bootstrap/sponsor/1/avatar.svg)](https://opencollective.com/bootstrap/sponsor/1/website)
+[![OC sponsor 2](https://opencollective.com/bootstrap/sponsor/2/avatar.svg)](https://opencollective.com/bootstrap/sponsor/2/website)
+[![OC sponsor 3](https://opencollective.com/bootstrap/sponsor/3/avatar.svg)](https://opencollective.com/bootstrap/sponsor/3/website)
+[![OC sponsor 4](https://opencollective.com/bootstrap/sponsor/4/avatar.svg)](https://opencollective.com/bootstrap/sponsor/4/website)
+[![OC sponsor 5](https://opencollective.com/bootstrap/sponsor/5/avatar.svg)](https://opencollective.com/bootstrap/sponsor/5/website)
+[![OC sponsor 6](https://opencollective.com/bootstrap/sponsor/6/avatar.svg)](https://opencollective.com/bootstrap/sponsor/6/website)
+[![OC sponsor 7](https://opencollective.com/bootstrap/sponsor/7/avatar.svg)](https://opencollective.com/bootstrap/sponsor/7/website)
+[![OC sponsor 8](https://opencollective.com/bootstrap/sponsor/8/avatar.svg)](https://opencollective.com/bootstrap/sponsor/8/website)
+[![OC sponsor 9](https://opencollective.com/bootstrap/sponsor/9/avatar.svg)](https://opencollective.com/bootstrap/sponsor/9/website)
+
+
+## Backers
+
+Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/bootstrap#backer)]
+
+[![Backers](https://opencollective.com/bootstrap/backers.svg?width=890)](https://opencollective.com/bootstrap#backers)
+
+
+## Copyright and license
+
+Code and documentation copyright 2011–2022 the [Bootstrap Authors](https://github.com/twbs/bootstrap/graphs/contributors) and [Twitter, Inc.](https://twitter.com) Code released under the [MIT License](https://github.com/twbs/bootstrap/blob/main/LICENSE). Docs released under [Creative Commons](https://creativecommons.org/licenses/by/3.0/).
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/bslib/lib/bs5/LICENSE
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/bslib/lib/bs5/LICENSE	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/bslib/lib/bs5/LICENSE	(revision 3762)
@@ -0,0 +1,22 @@
+The MIT License (MIT)
+
+Copyright (c) 2011-2022 Twitter, Inc.
+Copyright (c) 2011-2022 The Bootstrap Authors
+
+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.
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/bslib/lib/bs5/package.json
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/bslib/lib/bs5/package.json	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/bslib/lib/bs5/package.json	(revision 3762)
@@ -0,0 +1,116 @@
+{
+  "name": "bootstrap",
+  "description": "The most popular front-end framework for developing responsive, mobile first projects on the web.",
+  "version": "5.2.2",
+  "config": {
+    "version_short": "5.2"
+  },
+  "keywords": ["css", "sass", "mobile-first", "responsive", "front-end", "framework", "web"],
+  "homepage": "https://getbootstrap.com/",
+  "author": "The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)",
+  "contributors": "Twitter, Inc.",
+  "license": "MIT",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/twbs/bootstrap.git"
+  },
+  "bugs": {
+    "url": "https://github.com/twbs/bootstrap/issues"
+  },
+  "funding": [
+    {
+      "type": "github",
+      "url": "https://github.com/sponsors/twbs"
+    },
+    {
+      "type": "opencollective",
+      "url": "https://opencollective.com/bootstrap"
+    }
+  ],
+  "main": "dist/js/bootstrap.js",
+  "module": "dist/js/bootstrap.esm.js",
+  "sass": "scss/bootstrap.scss",
+  "style": "dist/css/bootstrap.css",
+  "scripts": {
+    "start": "npm-run-all --parallel watch docs-serve",
+    "bundlewatch": "bundlewatch --config .bundlewatch.config.json",
+    "css": "npm-run-all css-compile css-prefix css-rtl css-minify",
+    "css-compile": "sass --style expanded --source-map --embed-sources --no-error-css scss/:dist/css/",
+    "css-rtl": "cross-env NODE_ENV=RTL postcss --config build/postcss.config.js --dir \"dist/css\" --ext \".rtl.css\" \"dist/css/*.css\" \"!dist/css/*.min.css\" \"!dist/css/*.rtl.css\"",
+    "css-lint": "npm-run-all --aggregate-output --continue-on-error --parallel css-lint-*",
+    "css-lint-stylelint": "stylelint \"**/*.{css,scss}\" --cache --cache-location .cache/.stylelintcache --rd",
+    "css-lint-vars": "fusv scss/ site/assets/scss/",
+    "css-minify": "npm-run-all --aggregate-output --parallel css-minify-*",
+    "css-minify-main": "cleancss -O1 --format breakWith=lf --with-rebase --source-map --source-map-inline-sources --output dist/css/ --batch --batch-suffix \".min\" \"dist/css/*.css\" \"!dist/css/*.min.css\" \"!dist/css/*rtl*.css\"",
+    "css-minify-rtl": "cleancss -O1 --format breakWith=lf --with-rebase --source-map --source-map-inline-sources --output dist/css/ --batch --batch-suffix \".min\" \"dist/css/*rtl.css\" \"!dist/css/*.min.css\"",
+    "css-prefix": "npm-run-all --aggregate-output --parallel css-prefix-*",
+    "css-prefix-main": "postcss --config build/postcss.config.js --replace \"dist/css/*.css\" \"!dist/css/*.rtl*.css\" \"!dist/css/*.min.css\"",
+    "css-prefix-examples": "postcss --config build/postcss.config.js --replace \"site/content/**/*.css\"",
+    "css-prefix-examples-rtl": "cross-env-shell NODE_ENV=RTL postcss --config build/postcss.config.js --dir \"site/content/docs/$npm_package_config_version_short/examples/\" --ext \".rtl.css\" --base \"site/content/docs/$npm_package_config_version_short/examples/\" \"site/content/docs/$npm_package_config_version_short/examples/{blog,carousel,dashboard,cheatsheet}/*.css\" \"!site/content/docs/$npm_package_config_version_short/examples/{blog,carousel,dashboard,cheatsheet}/*.rtl.css\"",
+    "js": "npm-run-all js-compile js-minify",
+    "js-compile": "npm-run-all --aggregate-output --parallel js-compile-*",
+    "js-compile-standalone": "rollup --environment BUNDLE:false --config build/rollup.config.js --sourcemap",
+    "js-compile-standalone-esm": "rollup --environment ESM:true,BUNDLE:false --config build/rollup.config.js --sourcemap",
+    "js-compile-bundle": "rollup --environment BUNDLE:true --config build/rollup.config.js --sourcemap",
+    "js-compile-plugins": "node build/build-plugins.js",
+    "js-lint": "eslint --cache --cache-location .cache/.eslintcache --report-unused-disable-directives --ext .html,.js .",
+    "js-minify": "npm-run-all --aggregate-output --parallel js-minify-*",
+    "js-minify-standalone": "terser --compress passes=2 --mangle --comments \"/^!/\" --source-map \"content=dist/js/bootstrap.js.map,includeSources,url=bootstrap.min.js.map\" --output dist/js/bootstrap.min.js dist/js/bootstrap.js",
+    "js-minify-standalone-esm": "terser --compress passes=2 --mangle --comments \"/^!/\" --source-map \"content=dist/js/bootstrap.esm.js.map,includeSources,url=bootstrap.esm.min.js.map\" --output dist/js/bootstrap.esm.min.js dist/js/bootstrap.esm.js",
+    "js-minify-bundle": "terser --compress passes=2 --mangle --comments \"/^!/\" --source-map \"content=dist/js/bootstrap.bundle.js.map,includeSources,url=bootstrap.bundle.min.js.map\" --output dist/js/bootstrap.bundle.min.js dist/js/bootstrap.bundle.js",
+    "js-test": "npm-run-all --aggregate-output --parallel js-test-karma js-test-jquery js-test-integration-*",
+    "js-debug": "cross-env DEBUG=true npm run js-test-karma",
+    "js-test-karma": "karma start js/tests/karma.conf.js",
+    "js-test-integration-bundle": "rollup --config js/tests/integration/rollup.bundle.js",
+    "js-test-integration-modularity": "rollup --config js/tests/integration/rollup.bundle-modularity.js",
+    "js-test-cloud": "cross-env BROWSERSTACK=true npm run js-test-karma",
+    "js-test-jquery": "cross-env JQUERY=true npm run js-test-karma",
+    "lint": "npm-run-all --aggregate-output --continue-on-error --parallel js-lint css-lint lockfile-lint",
+    "docs": "npm-run-all docs-build docs-lint",
+    "docs-build": "hugo --cleanDestinationDir",
+    "docs-compile": "npm run docs-build",
+    "docs-vnu": "node build/vnu-jar.js",
+    "docs-lint": "npm run docs-vnu",
+    "docs-serve": "hugo server --port 9001 --disableFastRender",
+    "docs-serve-only": "npx sirv-cli _site --port 9001",
+    "lockfile-lint": "lockfile-lint --allowed-hosts npm --allowed-schemes https: --empty-hostname false --type npm --path package-lock.json",
+    "update-deps": "ncu -u -x globby,karma-browserstack-launcher,karma-rollup-preprocessor && echo Manually update site/assets/js/vendor",
+    "release": "npm-run-all dist release-sri docs-build release-zip*",
+    "release-sri": "node build/generate-sri.js",
+    "release-version": "node build/change-version.js",
+    "release-zip": "cross-env-shell \"rm -rf bootstrap-$npm_package_version-dist && cp -r dist/ bootstrap-$npm_package_version-dist && zip -r9 bootstrap-$npm_package_version-dist.zip bootstrap-$npm_package_version-dist && rm -rf bootstrap-$npm_package_version-dist\"",
+    "release-zip-examples": "node build/zip-examples.js",
+    "dist": "npm-run-all --aggregate-output --parallel css js",
+    "test": "npm-run-all lint dist js-test docs-build docs-lint",
+    "netlify": "cross-env-shell HUGO_BASEURL=$DEPLOY_PRIME_URL npm-run-all dist release-sri docs-build",
+    "watch": "npm-run-all --parallel watch-*",
+    "watch-css-main": "nodemon --watch scss/ --ext scss --exec \"npm-run-all css-lint css-compile css-prefix\"",
+    "watch-css-dist": "nodemon --watch dist/css/ --ext css --ignore \"dist/css/*.rtl.*\" --exec \"npm run css-rtl\"",
+    "watch-css-docs": "nodemon --watch site/assets/scss/ --ext scss --exec \"npm run css-lint\"",
+    "watch-js-main": "nodemon --watch js/src/ --ext js --exec \"npm-run-all js-lint js-compile\"",
+    "watch-js-docs": "nodemon --watch site/assets/js/ --ext js --exec \"npm run js-lint\""
+  },
+  "peerDependencies": {
+    "@popperjs/core": "^2.11.6"
+  },
+  "files": ["dist/{css,js}/*.{css,js,map}", "js/{src,dist}/**/*.{js,map}", "scss/**/*.scss"],
+  "hugo-bin": {
+    "buildTags": "extended"
+  },
+  "jspm": {
+    "registry": "npm",
+    "main": "js/bootstrap",
+    "directories": {
+      "lib": "dist"
+    },
+    "shim": {
+      "js/bootstrap": {
+        "deps": "@popperjs/core"
+      }
+    },
+    "dependencies": {},
+    "peerDependencies": {
+      "@popperjs/core": "^2.11.6"
+    }
+  }
+}
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/LU
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/LU	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/LU	(revision 3762)
@@ -0,0 +1,50 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_LU_MODULE_H
+#define EIGEN_LU_MODULE_H
+
+#include "Core"
+
+#include "src/Core/util/DisableStupidWarnings.h"
+
+/** \defgroup LU_Module LU module
+  * This module includes %LU decomposition and related notions such as matrix inversion and determinant.
+  * This module defines the following MatrixBase methods:
+  *  - MatrixBase::inverse()
+  *  - MatrixBase::determinant()
+  *
+  * \code
+  * #include <Eigen/LU>
+  * \endcode
+  */
+
+#include "src/misc/Kernel.h"
+#include "src/misc/Image.h"
+#include "src/LU/FullPivLU.h"
+#include "src/LU/PartialPivLU.h"
+#ifdef EIGEN_USE_LAPACKE
+#ifdef EIGEN_USE_MKL
+#include "mkl_lapacke.h"
+#else
+#include "src/misc/lapacke.h"
+#endif
+#include "src/LU/PartialPivLU_LAPACKE.h"
+#endif
+#include "src/LU/Determinant.h"
+#include "src/LU/InverseImpl.h"
+
+// Use the SSE optimized version whenever possible. At the moment the
+// SSE version doesn't compile when AVX is enabled
+#if defined EIGEN_VECTORIZE_SSE && !defined EIGEN_VECTORIZE_AVX
+  #include "src/LU/arch/Inverse_SSE.h"
+#endif
+
+#include "src/Core/util/ReenableStupidWarnings.h"
+
+#endif // EIGEN_LU_MODULE_H
+/* vim: set filetype=cpp et sw=2 ts=2 ai: */
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/Householder
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/Householder	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/Householder	(revision 3762)
@@ -0,0 +1,30 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_HOUSEHOLDER_MODULE_H
+#define EIGEN_HOUSEHOLDER_MODULE_H
+
+#include "Core"
+
+#include "src/Core/util/DisableStupidWarnings.h"
+
+/** \defgroup Householder_Module Householder module
+  * This module provides Householder transformations.
+  *
+  * \code
+  * #include <Eigen/Householder>
+  * \endcode
+  */
+
+#include "src/Householder/Householder.h"
+#include "src/Householder/HouseholderSequence.h"
+#include "src/Householder/BlockHouseholder.h"
+
+#include "src/Core/util/ReenableStupidWarnings.h"
+
+#endif // EIGEN_HOUSEHOLDER_MODULE_H
+/* vim: set filetype=cpp et sw=2 ts=2 ai: */
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/Cholesky
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/Cholesky	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/Cholesky	(revision 3762)
@@ -0,0 +1,46 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CHOLESKY_MODULE_H
+#define EIGEN_CHOLESKY_MODULE_H
+
+#include "Core"
+#include "Jacobi"
+
+#include "src/Core/util/DisableStupidWarnings.h"
+
+/** \defgroup Cholesky_Module Cholesky module
+  *
+  *
+  *
+  * This module provides two variants of the Cholesky decomposition for selfadjoint (hermitian) matrices.
+  * Those decompositions are also accessible via the following methods:
+  *  - MatrixBase::llt()
+  *  - MatrixBase::ldlt()
+  *  - SelfAdjointView::llt()
+  *  - SelfAdjointView::ldlt()
+  *
+  * \code
+  * #include <Eigen/Cholesky>
+  * \endcode
+  */
+
+#include "src/Cholesky/LLT.h"
+#include "src/Cholesky/LDLT.h"
+#ifdef EIGEN_USE_LAPACKE
+#ifdef EIGEN_USE_MKL
+#include "mkl_lapacke.h"
+#else
+#include "src/misc/lapacke.h"
+#endif
+#include "src/Cholesky/LLT_LAPACKE.h"
+#endif
+
+#include "src/Core/util/ReenableStupidWarnings.h"
+
+#endif // EIGEN_CHOLESKY_MODULE_H
+/* vim: set filetype=cpp et sw=2 ts=2 ai: */
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/SPQRSupport
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/SPQRSupport	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/SPQRSupport	(revision 3762)
@@ -0,0 +1,34 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_SPQRSUPPORT_MODULE_H
+#define EIGEN_SPQRSUPPORT_MODULE_H
+
+#include "SparseCore"
+
+#include "src/Core/util/DisableStupidWarnings.h"
+
+#include "SuiteSparseQR.hpp"
+
+/** \ingroup Support_modules
+  * \defgroup SPQRSupport_Module SuiteSparseQR module
+  * 
+  * This module provides an interface to the SPQR library, which is part of the <a href="http://www.suitesparse.com">suitesparse</a> package.
+  *
+  * \code
+  * #include <Eigen/SPQRSupport>
+  * \endcode
+  *
+  * In order to use this module, the SPQR headers must be accessible from the include paths, and your binary must be linked to the SPQR library and its dependencies (Cholmod, AMD, COLAMD,...).
+  * For a cmake based project, you can use our FindSPQR.cmake and FindCholmod.Cmake modules
+  *
+  */
+
+#include "src/CholmodSupport/CholmodSupport.h"
+#include "src/SPQRSupport/SuiteSparseQRSupport.h"
+
+#endif
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/CholmodSupport
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/CholmodSupport	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/CholmodSupport	(revision 3762)
@@ -0,0 +1,47 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CHOLMODSUPPORT_MODULE_H
+#define EIGEN_CHOLMODSUPPORT_MODULE_H
+
+#include "SparseCore"
+
+#include "src/Core/util/DisableStupidWarnings.h"
+
+extern "C" {
+  #include <RcppEigenCholmod.h>
+}
+
+/** \ingroup Support_modules
+  * \defgroup CholmodSupport_Module CholmodSupport module
+  *
+  * This module provides an interface to the Cholmod library which is part of the <a href="http://www.suitesparse.com">suitesparse</a> package.
+  * It provides the two following main factorization classes:
+  * - class CholmodSupernodalLLT: a supernodal LLT Cholesky factorization.
+  * - class CholmodDecomposiiton: a general L(D)LT Cholesky factorization with automatic or explicit runtime selection of the underlying factorization method (supernodal or simplicial).
+  *
+  * For the sake of completeness, this module also propose the two following classes:
+  * - class CholmodSimplicialLLT
+  * - class CholmodSimplicialLDLT
+  * Note that these classes does not bring any particular advantage compared to the built-in
+  * SimplicialLLT and SimplicialLDLT factorization classes.
+  *
+  * \code
+  * #include <Eigen/CholmodSupport>
+  * \endcode
+  *
+  * In order to use this module, the cholmod headers must be accessible from the include paths, and your binary must be linked to the cholmod library and its dependencies.
+  * The dependencies depend on how cholmod has been compiled.
+  * For a cmake based project, you can use our FindCholmod.cmake module to help you in this task.
+  *
+  */
+
+#include "src/CholmodSupport/CholmodSupport.h"
+
+#include "src/Core/util/ReenableStupidWarnings.h"
+
+#endif // EIGEN_CHOLMODSUPPORT_MODULE_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/QR
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/QR	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/QR	(revision 3762)
@@ -0,0 +1,51 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_QR_MODULE_H
+#define EIGEN_QR_MODULE_H
+
+#include "Core"
+
+#include "Cholesky"
+#include "Jacobi"
+#include "Householder"
+
+#include "src/Core/util/DisableStupidWarnings.h"
+
+/** \defgroup QR_Module QR module
+  *
+  *
+  *
+  * This module provides various QR decompositions
+  * This module also provides some MatrixBase methods, including:
+  *  - MatrixBase::householderQr()
+  *  - MatrixBase::colPivHouseholderQr()
+  *  - MatrixBase::fullPivHouseholderQr()
+  *
+  * \code
+  * #include <Eigen/QR>
+  * \endcode
+  */
+
+#include "src/QR/HouseholderQR.h"
+#include "src/QR/FullPivHouseholderQR.h"
+#include "src/QR/ColPivHouseholderQR.h"
+#include "src/QR/CompleteOrthogonalDecomposition.h"
+#ifdef EIGEN_USE_LAPACKE
+#ifdef EIGEN_USE_MKL
+#include "mkl_lapacke.h"
+#else
+#include "src/misc/lapacke.h"
+#endif
+#include "src/QR/HouseholderQR_LAPACKE.h"
+#include "src/QR/ColPivHouseholderQR_LAPACKE.h"
+#endif
+
+#include "src/Core/util/ReenableStupidWarnings.h"
+
+#endif // EIGEN_QR_MODULE_H
+/* vim: set filetype=cpp et sw=2 ts=2 ai: */
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/UmfPackSupport
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/UmfPackSupport	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/UmfPackSupport	(revision 3762)
@@ -0,0 +1,40 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_UMFPACKSUPPORT_MODULE_H
+#define EIGEN_UMFPACKSUPPORT_MODULE_H
+
+#include "SparseCore"
+
+#include "src/Core/util/DisableStupidWarnings.h"
+
+extern "C" {
+#include <umfpack.h>
+}
+
+/** \ingroup Support_modules
+  * \defgroup UmfPackSupport_Module UmfPackSupport module
+  *
+  * This module provides an interface to the UmfPack library which is part of the <a href="http://www.suitesparse.com">suitesparse</a> package.
+  * It provides the following factorization class:
+  * - class UmfPackLU: a multifrontal sequential LU factorization.
+  *
+  * \code
+  * #include <Eigen/UmfPackSupport>
+  * \endcode
+  *
+  * In order to use this module, the umfpack headers must be accessible from the include paths, and your binary must be linked to the umfpack library and its dependencies.
+  * The dependencies depend on how umfpack has been compiled.
+  * For a cmake based project, you can use our FindUmfPack.cmake module to help you in this task.
+  *
+  */
+
+#include "src/UmfPackSupport/UmfPackSupport.h"
+
+#include "src/Core/util/ReenableStupidWarnings.h"
+
+#endif // EIGEN_UMFPACKSUPPORT_MODULE_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/StdList
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/StdList	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/StdList	(revision 3762)
@@ -0,0 +1,26 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2009 Hauke Heibel <hauke.heibel@googlemail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_STDLIST_MODULE_H
+#define EIGEN_STDLIST_MODULE_H
+
+#include "Core"
+#include <list>
+
+#if EIGEN_COMP_MSVC && EIGEN_OS_WIN64 && (EIGEN_MAX_STATIC_ALIGN_BYTES<=16) /* MSVC auto aligns up to 16 bytes in 64 bit builds */
+
+#define EIGEN_DEFINE_STL_LIST_SPECIALIZATION(...)
+
+#else
+
+#include "src/StlSupport/StdList.h"
+
+#endif
+
+#endif // EIGEN_STDLIST_MODULE_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/Jacobi
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/Jacobi	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/Jacobi	(revision 3762)
@@ -0,0 +1,33 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_JACOBI_MODULE_H
+#define EIGEN_JACOBI_MODULE_H
+
+#include "Core"
+
+#include "src/Core/util/DisableStupidWarnings.h"
+
+/** \defgroup Jacobi_Module Jacobi module
+  * This module provides Jacobi and Givens rotations.
+  *
+  * \code
+  * #include <Eigen/Jacobi>
+  * \endcode
+  *
+  * In addition to listed classes, it defines the two following MatrixBase methods to apply a Jacobi or Givens rotation:
+  *  - MatrixBase::applyOnTheLeft()
+  *  - MatrixBase::applyOnTheRight().
+  */
+
+#include "src/Jacobi/Jacobi.h"
+
+#include "src/Core/util/ReenableStupidWarnings.h"
+
+#endif // EIGEN_JACOBI_MODULE_H
+/* vim: set filetype=cpp et sw=2 ts=2 ai: */
+
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/Core
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/Core	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/Core	(revision 3762)
@@ -0,0 +1,542 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2008 Gael Guennebaud <gael.guennebaud@inria.fr>
+// Copyright (C) 2007-2011 Benoit Jacob <jacob.benoit.1@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CORE_H
+#define EIGEN_CORE_H
+
+// first thing Eigen does: stop the compiler from committing suicide
+#include "src/Core/util/DisableStupidWarnings.h"
+
+#if defined(__CUDACC__) && !defined(EIGEN_NO_CUDA)
+  #define EIGEN_CUDACC __CUDACC__
+#endif
+
+#if defined(__CUDA_ARCH__) && !defined(EIGEN_NO_CUDA)
+  #define EIGEN_CUDA_ARCH __CUDA_ARCH__
+#endif
+
+#if defined(__CUDACC_VER_MAJOR__) && (__CUDACC_VER_MAJOR__ >= 9)
+#define EIGEN_CUDACC_VER  ((__CUDACC_VER_MAJOR__ * 10000) + (__CUDACC_VER_MINOR__ * 100))
+#elif defined(__CUDACC_VER__)
+#define EIGEN_CUDACC_VER __CUDACC_VER__
+#else
+#define EIGEN_CUDACC_VER 0
+#endif
+
+// Handle NVCC/CUDA/SYCL
+#if defined(__CUDACC__) || defined(__SYCL_DEVICE_ONLY__)
+  // Do not try asserts on CUDA and SYCL!
+  #ifndef EIGEN_NO_DEBUG
+  #define EIGEN_NO_DEBUG
+  #endif
+
+  #ifdef EIGEN_INTERNAL_DEBUGGING
+  #undef EIGEN_INTERNAL_DEBUGGING
+  #endif
+
+  #ifdef EIGEN_EXCEPTIONS
+  #undef EIGEN_EXCEPTIONS
+  #endif
+
+  // All functions callable from CUDA code must be qualified with __device__
+  #ifdef __CUDACC__
+    // Do not try to vectorize on CUDA and SYCL!
+    #ifndef EIGEN_DONT_VECTORIZE
+    #define EIGEN_DONT_VECTORIZE
+    #endif
+
+    #define EIGEN_DEVICE_FUNC __host__ __device__
+    // We need cuda_runtime.h to ensure that that EIGEN_USING_STD_MATH macro
+    // works properly on the device side
+    #include <cuda_runtime.h>
+  #else
+    #define EIGEN_DEVICE_FUNC
+  #endif
+
+#else
+  #define EIGEN_DEVICE_FUNC
+
+#endif
+
+// When compiling CUDA device code with NVCC, pull in math functions from the
+// global namespace.  In host mode, and when device doee with clang, use the
+// std versions.
+#if defined(__CUDA_ARCH__) && defined(__NVCC__)
+  #define EIGEN_USING_STD_MATH(FUNC) using ::FUNC;
+#else
+  #define EIGEN_USING_STD_MATH(FUNC) using std::FUNC;
+#endif
+
+#if (defined(_CPPUNWIND) || defined(__EXCEPTIONS)) && !defined(__CUDA_ARCH__) && !defined(EIGEN_EXCEPTIONS) && !defined(EIGEN_USE_SYCL)
+  #define EIGEN_EXCEPTIONS
+#endif
+
+#ifdef EIGEN_EXCEPTIONS
+  #include <new>
+#endif
+
+// then include this file where all our macros are defined. It's really important to do it first because
+// it's where we do all the alignment settings (platform detection and honoring the user's will if he
+// defined e.g. EIGEN_DONT_ALIGN) so it needs to be done before we do anything with vectorization.
+#include "src/Core/util/Macros.h"
+
+// Disable the ipa-cp-clone optimization flag with MinGW 6.x or newer (enabled by default with -O3)
+// See http://eigen.tuxfamily.org/bz/show_bug.cgi?id=556 for details.
+#if EIGEN_COMP_MINGW && EIGEN_GNUC_AT_LEAST(4,6)
+  #pragma GCC optimize ("-fno-ipa-cp-clone")
+#endif
+
+#include <complex>
+
+// this include file manages BLAS and MKL related macros
+// and inclusion of their respective header files
+#include "src/Core/util/MKL_support.h"
+
+// if alignment is disabled, then disable vectorization. Note: EIGEN_MAX_ALIGN_BYTES is the proper check, it takes into
+// account both the user's will (EIGEN_MAX_ALIGN_BYTES,EIGEN_DONT_ALIGN) and our own platform checks
+#if EIGEN_MAX_ALIGN_BYTES==0
+  #ifndef EIGEN_DONT_VECTORIZE
+    #define EIGEN_DONT_VECTORIZE
+  #endif
+#endif
+
+#if EIGEN_COMP_MSVC
+  #include <malloc.h> // for _aligned_malloc -- need it regardless of whether vectorization is enabled
+  #if (EIGEN_COMP_MSVC >= 1500) // 2008 or later
+    // Remember that usage of defined() in a #define is undefined by the standard.
+    // a user reported that in 64-bit mode, MSVC doesn't care to define _M_IX86_FP.
+    #if (defined(_M_IX86_FP) && (_M_IX86_FP >= 2)) || EIGEN_ARCH_x86_64
+      #define EIGEN_SSE2_ON_MSVC_2008_OR_LATER
+    #endif
+  #endif
+#else
+  // Remember that usage of defined() in a #define is undefined by the standard
+  #if (defined __SSE2__) && ( (!EIGEN_COMP_GNUC) || EIGEN_COMP_ICC || EIGEN_GNUC_AT_LEAST(4,2) )
+    #define EIGEN_SSE2_ON_NON_MSVC_BUT_NOT_OLD_GCC
+  #endif
+#endif
+
+#ifndef EIGEN_DONT_VECTORIZE
+
+  #if defined (EIGEN_SSE2_ON_NON_MSVC_BUT_NOT_OLD_GCC) || defined(EIGEN_SSE2_ON_MSVC_2008_OR_LATER)
+
+    // Defines symbols for compile-time detection of which instructions are
+    // used.
+    // EIGEN_VECTORIZE_YY is defined if and only if the instruction set YY is used
+    #define EIGEN_VECTORIZE
+    #define EIGEN_VECTORIZE_SSE
+    #define EIGEN_VECTORIZE_SSE2
+
+    // Detect sse3/ssse3/sse4:
+    // gcc and icc defines __SSE3__, ...
+    // there is no way to know about this on msvc. You can define EIGEN_VECTORIZE_SSE* if you
+    // want to force the use of those instructions with msvc.
+    #ifdef __SSE3__
+      #define EIGEN_VECTORIZE_SSE3
+    #endif
+    #ifdef __SSSE3__
+      #define EIGEN_VECTORIZE_SSSE3
+    #endif
+    #ifdef __SSE4_1__
+      #define EIGEN_VECTORIZE_SSE4_1
+    #endif
+    #ifdef __SSE4_2__
+      #define EIGEN_VECTORIZE_SSE4_2
+    #endif
+    #ifdef __AVX__
+      #define EIGEN_VECTORIZE_AVX
+      #define EIGEN_VECTORIZE_SSE3
+      #define EIGEN_VECTORIZE_SSSE3
+      #define EIGEN_VECTORIZE_SSE4_1
+      #define EIGEN_VECTORIZE_SSE4_2
+    #endif
+    #ifdef __AVX2__
+      #define EIGEN_VECTORIZE_AVX2
+    #endif
+    #ifdef __FMA__
+      #define EIGEN_VECTORIZE_FMA
+    #endif
+    #if defined(__AVX512F__) && defined(EIGEN_ENABLE_AVX512)
+      #define EIGEN_VECTORIZE_AVX512
+      #define EIGEN_VECTORIZE_AVX2
+      #define EIGEN_VECTORIZE_AVX
+      #define EIGEN_VECTORIZE_FMA
+      #ifdef __AVX512DQ__
+        #define EIGEN_VECTORIZE_AVX512DQ
+      #endif
+      #ifdef __AVX512ER__
+        #define EIGEN_VECTORIZE_AVX512ER
+      #endif
+    #endif
+
+    // include files
+
+    // This extern "C" works around a MINGW-w64 compilation issue
+    // https://sourceforge.net/tracker/index.php?func=detail&aid=3018394&group_id=202880&atid=983354
+    // In essence, intrin.h is included by windows.h and also declares intrinsics (just as emmintrin.h etc. below do).
+    // However, intrin.h uses an extern "C" declaration, and g++ thus complains of duplicate declarations
+    // with conflicting linkage.  The linkage for intrinsics doesn't matter, but at that stage the compiler doesn't know;
+    // so, to avoid compile errors when windows.h is included after Eigen/Core, ensure intrinsics are extern "C" here too.
+    // notice that since these are C headers, the extern "C" is theoretically needed anyways.
+    extern "C" {
+      // In theory we should only include immintrin.h and not the other *mmintrin.h header files directly.
+      // Doing so triggers some issues with ICC. However old gcc versions seems to not have this file, thus:
+      #if EIGEN_COMP_ICC >= 1110
+        #include <immintrin.h>
+      #else
+        #include <mmintrin.h>
+        #include <emmintrin.h>
+        #include <xmmintrin.h>
+        #ifdef  EIGEN_VECTORIZE_SSE3
+        #include <pmmintrin.h>
+        #endif
+        #ifdef EIGEN_VECTORIZE_SSSE3
+        #include <tmmintrin.h>
+        #endif
+        #ifdef EIGEN_VECTORIZE_SSE4_1
+        #include <smmintrin.h>
+        #endif
+        #ifdef EIGEN_VECTORIZE_SSE4_2
+        #include <nmmintrin.h>
+        #endif
+        #if defined(EIGEN_VECTORIZE_AVX) || defined(EIGEN_VECTORIZE_AVX512)
+        #include <immintrin.h>
+        #endif
+      #endif
+    } // end extern "C"
+  #elif defined __VSX__
+    #define EIGEN_VECTORIZE
+    #define EIGEN_VECTORIZE_VSX
+    #include <altivec.h>
+    // We need to #undef all these ugly tokens defined in <altivec.h>
+    // => use __vector instead of vector
+    #undef bool
+    #undef vector
+    #undef pixel
+  #elif defined __ALTIVEC__
+    #define EIGEN_VECTORIZE
+    #define EIGEN_VECTORIZE_ALTIVEC
+    #include <altivec.h>
+    // We need to #undef all these ugly tokens defined in <altivec.h>
+    // => use __vector instead of vector
+    #undef bool
+    #undef vector
+    #undef pixel
+  #elif (defined  __ARM_NEON) || (defined __ARM_NEON__)
+    #define EIGEN_VECTORIZE
+    #define EIGEN_VECTORIZE_NEON
+    #include <arm_neon.h>
+  #elif (defined __s390x__ && defined __VEC__)
+    #define EIGEN_VECTORIZE
+    #define EIGEN_VECTORIZE_ZVECTOR
+    #include <vecintrin.h>
+  #endif
+#endif
+
+#if defined(__F16C__) && !defined(EIGEN_COMP_CLANG)
+  // We can use the optimized fp16 to float and float to fp16 conversion routines
+  #define EIGEN_HAS_FP16_C
+#endif
+
+#if defined __CUDACC__
+  #define EIGEN_VECTORIZE_CUDA
+  #include <vector_types.h>
+  #if EIGEN_CUDACC_VER >= 70500
+    #define EIGEN_HAS_CUDA_FP16
+  #endif
+#endif
+
+#if defined EIGEN_HAS_CUDA_FP16
+  #include <host_defines.h>
+  #include <cuda_fp16.h>
+#endif
+
+#if (defined _OPENMP) && (!defined EIGEN_DONT_PARALLELIZE)
+  #define EIGEN_HAS_OPENMP
+#endif
+
+#ifdef EIGEN_HAS_OPENMP
+#include <omp.h>
+#endif
+
+// MSVC for windows mobile does not have the errno.h file
+#if !(EIGEN_COMP_MSVC && EIGEN_OS_WINCE) && !EIGEN_COMP_ARM
+#define EIGEN_HAS_ERRNO
+#endif
+
+#ifdef EIGEN_HAS_ERRNO
+#include <cerrno>
+#endif
+#include <cstddef>
+#include <cstdlib>
+#include <cmath>
+#include <cassert>
+#include <functional>
+#include <sstream>
+#ifndef EIGEN_NO_IO
+  #include <iosfwd>
+#endif
+#include <cstring>
+#include <string>
+#include <limits>
+#include <climits> // for CHAR_BIT
+// for min/max:
+#include <algorithm>
+
+// for std::is_nothrow_move_assignable
+#ifdef EIGEN_INCLUDE_TYPE_TRAITS
+#include <type_traits>
+#endif
+
+// for outputting debug info
+#ifdef EIGEN_DEBUG_ASSIGN
+#include <iostream>
+#endif
+
+// required for __cpuid, needs to be included after cmath
+#if EIGEN_COMP_MSVC && EIGEN_ARCH_i386_OR_x86_64 && !EIGEN_OS_WINCE
+  #include <intrin.h>
+#endif
+
+/** \brief Namespace containing all symbols from the %Eigen library. */
+namespace Eigen {
+
+inline static const char *SimdInstructionSetsInUse(void) {
+#if defined(EIGEN_VECTORIZE_AVX512)
+  return "AVX512, FMA, AVX2, AVX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2";
+#elif defined(EIGEN_VECTORIZE_AVX)
+  return "AVX SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2";
+#elif defined(EIGEN_VECTORIZE_SSE4_2)
+  return "SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2";
+#elif defined(EIGEN_VECTORIZE_SSE4_1)
+  return "SSE, SSE2, SSE3, SSSE3, SSE4.1";
+#elif defined(EIGEN_VECTORIZE_SSSE3)
+  return "SSE, SSE2, SSE3, SSSE3";
+#elif defined(EIGEN_VECTORIZE_SSE3)
+  return "SSE, SSE2, SSE3";
+#elif defined(EIGEN_VECTORIZE_SSE2)
+  return "SSE, SSE2";
+#elif defined(EIGEN_VECTORIZE_ALTIVEC)
+  return "AltiVec";
+#elif defined(EIGEN_VECTORIZE_VSX)
+  return "VSX";
+#elif defined(EIGEN_VECTORIZE_NEON)
+  return "ARM NEON";
+#elif defined(EIGEN_VECTORIZE_ZVECTOR)
+  return "S390X ZVECTOR";
+#else
+  return "None";
+#endif
+}
+
+} // end namespace Eigen
+
+#if defined EIGEN2_SUPPORT_STAGE40_FULL_EIGEN3_STRICTNESS || defined EIGEN2_SUPPORT_STAGE30_FULL_EIGEN3_API || defined EIGEN2_SUPPORT_STAGE20_RESOLVE_API_CONFLICTS || defined EIGEN2_SUPPORT_STAGE10_FULL_EIGEN2_API || defined EIGEN2_SUPPORT
+// This will generate an error message:
+#error Eigen2-support is only available up to version 3.2. Please go to "http://eigen.tuxfamily.org/index.php?title=Eigen2" for further information
+#endif
+
+namespace Eigen {
+
+// we use size_t frequently and we'll never remember to prepend it with std:: everytime just to
+// ensure QNX/QCC support
+using std::size_t;
+// gcc 4.6.0 wants std:: for ptrdiff_t
+using std::ptrdiff_t;
+
+}
+
+/** \defgroup Core_Module Core module
+  * This is the main module of Eigen providing dense matrix and vector support
+  * (both fixed and dynamic size) with all the features corresponding to a BLAS library
+  * and much more...
+  *
+  * \code
+  * #include <Eigen/Core>
+  * \endcode
+  */
+
+#include "src/Core/util/Constants.h"
+#include "src/Core/util/Meta.h"
+#include "src/Core/util/ForwardDeclarations.h"
+#include "src/Core/util/StaticAssert.h"
+#include "src/Core/util/XprHelper.h"
+#include "src/Core/util/Memory.h"
+
+#include "src/Core/NumTraits.h"
+#include "src/Core/MathFunctions.h"
+#include "src/Core/GenericPacketMath.h"
+#include "src/Core/MathFunctionsImpl.h"
+#include "src/Core/arch/Default/ConjHelper.h"
+
+#if defined EIGEN_VECTORIZE_AVX512
+  #include "src/Core/arch/SSE/PacketMath.h"
+  #include "src/Core/arch/SSE/MathFunctions.h"
+  #include "src/Core/arch/AVX/PacketMath.h"
+  #include "src/Core/arch/AVX/MathFunctions.h"
+  #include "src/Core/arch/AVX512/PacketMath.h"
+  #include "src/Core/arch/AVX512/MathFunctions.h"
+#elif defined EIGEN_VECTORIZE_AVX
+  // Use AVX for floats and doubles, SSE for integers
+  #include "src/Core/arch/SSE/PacketMath.h"
+  #include "src/Core/arch/SSE/Complex.h"
+  #include "src/Core/arch/SSE/MathFunctions.h"
+  #include "src/Core/arch/AVX/PacketMath.h"
+  #include "src/Core/arch/AVX/MathFunctions.h"
+  #include "src/Core/arch/AVX/Complex.h"
+  #include "src/Core/arch/AVX/TypeCasting.h"
+  #include "src/Core/arch/SSE/TypeCasting.h"
+#elif defined EIGEN_VECTORIZE_SSE
+  #include "src/Core/arch/SSE/PacketMath.h"
+  #include "src/Core/arch/SSE/MathFunctions.h"
+  #include "src/Core/arch/SSE/Complex.h"
+  #include "src/Core/arch/SSE/TypeCasting.h"
+#elif defined(EIGEN_VECTORIZE_ALTIVEC) || defined(EIGEN_VECTORIZE_VSX)
+  #include "src/Core/arch/AltiVec/PacketMath.h"
+  #include "src/Core/arch/AltiVec/MathFunctions.h"
+  #include "src/Core/arch/AltiVec/Complex.h"
+#elif defined EIGEN_VECTORIZE_NEON
+  #include "src/Core/arch/NEON/PacketMath.h"
+  #include "src/Core/arch/NEON/MathFunctions.h"
+  #include "src/Core/arch/NEON/Complex.h"
+#elif defined EIGEN_VECTORIZE_ZVECTOR
+  #include "src/Core/arch/ZVector/PacketMath.h"
+  #include "src/Core/arch/ZVector/MathFunctions.h"
+  #include "src/Core/arch/ZVector/Complex.h"
+#endif
+
+// Half float support
+#include "src/Core/arch/CUDA/Half.h"
+#include "src/Core/arch/CUDA/PacketMathHalf.h"
+#include "src/Core/arch/CUDA/TypeCasting.h"
+
+#if defined EIGEN_VECTORIZE_CUDA
+  #include "src/Core/arch/CUDA/PacketMath.h"
+  #include "src/Core/arch/CUDA/MathFunctions.h"
+#endif
+
+#include "src/Core/arch/Default/Settings.h"
+
+#include "src/Core/functors/TernaryFunctors.h"
+#include "src/Core/functors/BinaryFunctors.h"
+#include "src/Core/functors/UnaryFunctors.h"
+#include "src/Core/functors/NullaryFunctors.h"
+#include "src/Core/functors/StlFunctors.h"
+#include "src/Core/functors/AssignmentFunctors.h"
+
+// Specialized functors to enable the processing of complex numbers
+// on CUDA devices
+#include "src/Core/arch/CUDA/Complex.h"
+
+#include "src/Core/IO.h"
+#include "src/Core/DenseCoeffsBase.h"
+#include "src/Core/DenseBase.h"
+#include "src/Core/MatrixBase.h"
+#include "src/Core/EigenBase.h"
+
+#include "src/Core/Product.h"
+#include "src/Core/CoreEvaluators.h"
+#include "src/Core/AssignEvaluator.h"
+
+#ifndef EIGEN_PARSED_BY_DOXYGEN // work around Doxygen bug triggered by Assign.h r814874
+                                // at least confirmed with Doxygen 1.5.5 and 1.5.6
+  #include "src/Core/Assign.h"
+#endif
+
+#include "src/Core/ArrayBase.h"
+#include "src/Core/util/BlasUtil.h"
+#include "src/Core/DenseStorage.h"
+#include "src/Core/NestByValue.h"
+
+// #include "src/Core/ForceAlignedAccess.h"
+
+#include "src/Core/ReturnByValue.h"
+#include "src/Core/NoAlias.h"
+#include "src/Core/PlainObjectBase.h"
+#include "src/Core/Matrix.h"
+#include "src/Core/Array.h"
+#include "src/Core/CwiseTernaryOp.h"
+#include "src/Core/CwiseBinaryOp.h"
+#include "src/Core/CwiseUnaryOp.h"
+#include "src/Core/CwiseNullaryOp.h"
+#include "src/Core/CwiseUnaryView.h"
+#include "src/Core/SelfCwiseBinaryOp.h"
+#include "src/Core/Dot.h"
+#include "src/Core/StableNorm.h"
+#include "src/Core/Stride.h"
+#include "src/Core/MapBase.h"
+#include "src/Core/Map.h"
+#include "src/Core/Ref.h"
+#include "src/Core/Block.h"
+#include "src/Core/VectorBlock.h"
+#include "src/Core/Transpose.h"
+#include "src/Core/DiagonalMatrix.h"
+#include "src/Core/Diagonal.h"
+#include "src/Core/DiagonalProduct.h"
+#include "src/Core/Redux.h"
+#include "src/Core/Visitor.h"
+#include "src/Core/Fuzzy.h"
+#include "src/Core/Swap.h"
+#include "src/Core/CommaInitializer.h"
+#include "src/Core/GeneralProduct.h"
+#include "src/Core/Solve.h"
+#include "src/Core/Inverse.h"
+#include "src/Core/SolverBase.h"
+#include "src/Core/PermutationMatrix.h"
+#include "src/Core/Transpositions.h"
+#include "src/Core/TriangularMatrix.h"
+#include "src/Core/SelfAdjointView.h"
+#include "src/Core/products/GeneralBlockPanelKernel.h"
+#include "src/Core/products/Parallelizer.h"
+#include "src/Core/ProductEvaluators.h"
+#include "src/Core/products/GeneralMatrixVector.h"
+#include "src/Core/products/GeneralMatrixMatrix.h"
+#include "src/Core/SolveTriangular.h"
+#include "src/Core/products/GeneralMatrixMatrixTriangular.h"
+#include "src/Core/products/SelfadjointMatrixVector.h"
+#include "src/Core/products/SelfadjointMatrixMatrix.h"
+#include "src/Core/products/SelfadjointProduct.h"
+#include "src/Core/products/SelfadjointRank2Update.h"
+#include "src/Core/products/TriangularMatrixVector.h"
+#include "src/Core/products/TriangularMatrixMatrix.h"
+#include "src/Core/products/TriangularSolverMatrix.h"
+#include "src/Core/products/TriangularSolverVector.h"
+#include "src/Core/BandMatrix.h"
+#include "src/Core/CoreIterators.h"
+#include "src/Core/ConditionEstimator.h"
+
+#include "src/Core/BooleanRedux.h"
+#include "src/Core/Select.h"
+#include "src/Core/VectorwiseOp.h"
+#include "src/Core/Random.h"
+#include "src/Core/Replicate.h"
+#include "src/Core/Reverse.h"
+#include "src/Core/ArrayWrapper.h"
+
+#ifdef EIGEN_USE_BLAS
+#include "src/Core/products/GeneralMatrixMatrix_BLAS.h"
+#include "src/Core/products/GeneralMatrixVector_BLAS.h"
+#include "src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h"
+#include "src/Core/products/SelfadjointMatrixMatrix_BLAS.h"
+#include "src/Core/products/SelfadjointMatrixVector_BLAS.h"
+#include "src/Core/products/TriangularMatrixMatrix_BLAS.h"
+#include "src/Core/products/TriangularMatrixVector_BLAS.h"
+#include "src/Core/products/TriangularSolverMatrix_BLAS.h"
+#endif // EIGEN_USE_BLAS
+
+#ifdef EIGEN_USE_MKL_VML
+#include "src/Core/Assign_MKL.h"
+#endif
+
+#include "src/Core/GlobalFunctions.h"
+
+#include "src/Core/util/ReenableStupidWarnings.h"
+
+#endif // EIGEN_CORE_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/Geometry
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/Geometry	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/Geometry	(revision 3762)
@@ -0,0 +1,62 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_GEOMETRY_MODULE_H
+#define EIGEN_GEOMETRY_MODULE_H
+
+#include "Core"
+
+#include "SVD"
+#include "LU"
+#include <limits>
+
+#include "src/Core/util/DisableStupidWarnings.h"
+
+/** \defgroup Geometry_Module Geometry module
+  *
+  * This module provides support for:
+  *  - fixed-size homogeneous transformations
+  *  - translation, scaling, 2D and 3D rotations
+  *  - \link Quaternion quaternions \endlink
+  *  - cross products (\ref MatrixBase::cross, \ref MatrixBase::cross3)
+  *  - orthognal vector generation (\ref MatrixBase::unitOrthogonal)
+  *  - some linear components: \link ParametrizedLine parametrized-lines \endlink and \link Hyperplane hyperplanes \endlink
+  *  - \link AlignedBox axis aligned bounding boxes \endlink
+  *  - \link umeyama least-square transformation fitting \endlink
+  *
+  * \code
+  * #include <Eigen/Geometry>
+  * \endcode
+  */
+
+#include "src/Geometry/OrthoMethods.h"
+#include "src/Geometry/EulerAngles.h"
+
+#include "src/Geometry/Homogeneous.h"
+#include "src/Geometry/RotationBase.h"
+#include "src/Geometry/Rotation2D.h"
+#include "src/Geometry/Quaternion.h"
+#include "src/Geometry/AngleAxis.h"
+#include "src/Geometry/Transform.h"
+#include "src/Geometry/Translation.h"
+#include "src/Geometry/Scaling.h"
+#include "src/Geometry/Hyperplane.h"
+#include "src/Geometry/ParametrizedLine.h"
+#include "src/Geometry/AlignedBox.h"
+#include "src/Geometry/Umeyama.h"
+
+// Use the SSE optimized version whenever possible. At the moment the
+// SSE version doesn't compile when AVX is enabled
+#if defined EIGEN_VECTORIZE_SSE && !defined EIGEN_VECTORIZE_AVX
+#include "src/Geometry/arch/Geometry_SSE.h"
+#endif
+
+#include "src/Core/util/ReenableStupidWarnings.h"
+
+#endif // EIGEN_GEOMETRY_MODULE_H
+/* vim: set filetype=cpp et sw=2 ts=2 ai: */
+
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/SuperLUSupport
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/SuperLUSupport	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/SuperLUSupport	(revision 3762)
@@ -0,0 +1,64 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_SUPERLUSUPPORT_MODULE_H
+#define EIGEN_SUPERLUSUPPORT_MODULE_H
+
+#include "SparseCore"
+
+#include "src/Core/util/DisableStupidWarnings.h"
+
+#ifdef EMPTY
+#define EIGEN_EMPTY_WAS_ALREADY_DEFINED
+#endif
+
+typedef int int_t;
+#include <slu_Cnames.h>
+#include <supermatrix.h>
+#include <slu_util.h>
+
+// slu_util.h defines a preprocessor token named EMPTY which is really polluting,
+// so we remove it in favor of a SUPERLU_EMPTY token.
+// If EMPTY was already defined then we don't undef it.
+
+#if defined(EIGEN_EMPTY_WAS_ALREADY_DEFINED)
+# undef EIGEN_EMPTY_WAS_ALREADY_DEFINED
+#elif defined(EMPTY)
+# undef EMPTY
+#endif
+
+#define SUPERLU_EMPTY (-1)
+
+namespace Eigen { struct SluMatrix; }
+
+/** \ingroup Support_modules
+  * \defgroup SuperLUSupport_Module SuperLUSupport module
+  *
+  * This module provides an interface to the <a href="http://crd-legacy.lbl.gov/~xiaoye/SuperLU/">SuperLU</a> library.
+  * It provides the following factorization class:
+  * - class SuperLU: a supernodal sequential LU factorization.
+  * - class SuperILU: a supernodal sequential incomplete LU factorization (to be used as a preconditioner for iterative methods).
+  *
+  * \warning This wrapper requires at least versions 4.0 of SuperLU. The 3.x versions are not supported.
+  *
+  * \warning When including this module, you have to use SUPERLU_EMPTY instead of EMPTY which is no longer defined because it is too polluting.
+  *
+  * \code
+  * #include <Eigen/SuperLUSupport>
+  * \endcode
+  *
+  * In order to use this module, the superlu headers must be accessible from the include paths, and your binary must be linked to the superlu library and its dependencies.
+  * The dependencies depend on how superlu has been compiled.
+  * For a cmake based project, you can use our FindSuperLU.cmake module to help you in this task.
+  *
+  */
+
+#include "src/SuperLUSupport/SuperLUSupport.h"
+
+#include "src/Core/util/ReenableStupidWarnings.h"
+
+#endif // EIGEN_SUPERLUSUPPORT_MODULE_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/SVD
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/SVD	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/SVD	(revision 3762)
@@ -0,0 +1,51 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_SVD_MODULE_H
+#define EIGEN_SVD_MODULE_H
+
+#include "QR"
+#include "Householder"
+#include "Jacobi"
+
+#include "src/Core/util/DisableStupidWarnings.h"
+
+/** \defgroup SVD_Module SVD module
+  *
+  *
+  *
+  * This module provides SVD decomposition for matrices (both real and complex).
+  * Two decomposition algorithms are provided:
+  *  - JacobiSVD implementing two-sided Jacobi iterations is numerically very accurate, fast for small matrices, but very slow for larger ones.
+  *  - BDCSVD implementing a recursive divide & conquer strategy on top of an upper-bidiagonalization which remains fast for large problems.
+  * These decompositions are accessible via the respective classes and following MatrixBase methods:
+  *  - MatrixBase::jacobiSvd()
+  *  - MatrixBase::bdcSvd()
+  *
+  * \code
+  * #include <Eigen/SVD>
+  * \endcode
+  */
+
+#include "src/misc/RealSvd2x2.h"
+#include "src/SVD/UpperBidiagonalization.h"
+#include "src/SVD/SVDBase.h"
+#include "src/SVD/JacobiSVD.h"
+#include "src/SVD/BDCSVD.h"
+#if defined(EIGEN_USE_LAPACKE) && !defined(EIGEN_USE_LAPACKE_STRICT)
+#ifdef EIGEN_USE_MKL
+#include "mkl_lapacke.h"
+#else
+#include "src/misc/lapacke.h"
+#endif
+#include "src/SVD/JacobiSVD_LAPACKE.h"
+#endif
+
+#include "src/Core/util/ReenableStupidWarnings.h"
+
+#endif // EIGEN_SVD_MODULE_H
+/* vim: set filetype=cpp et sw=2 ts=2 ai: */
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/Sparse
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/Sparse	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/Sparse	(revision 3762)
@@ -0,0 +1,36 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_SPARSE_MODULE_H
+#define EIGEN_SPARSE_MODULE_H
+
+/** \defgroup Sparse_Module Sparse meta-module
+  *
+  * Meta-module including all related modules:
+  * - \ref SparseCore_Module
+  * - \ref OrderingMethods_Module
+  * - \ref SparseCholesky_Module
+  * - \ref SparseLU_Module
+  * - \ref SparseQR_Module
+  * - \ref IterativeLinearSolvers_Module
+  *
+    \code
+    #include <Eigen/Sparse>
+    \endcode
+  */
+
+#include "SparseCore"
+#include "OrderingMethods"
+#ifndef EIGEN_MPL2_ONLY
+#include "SparseCholesky"
+#endif
+#include "SparseLU"
+#include "SparseQR"
+#include "IterativeLinearSolvers"
+
+#endif // EIGEN_SPARSE_MODULE_H
+
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/OrderingMethods
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/OrderingMethods	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/OrderingMethods	(revision 3762)
@@ -0,0 +1,73 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_ORDERINGMETHODS_MODULE_H
+#define EIGEN_ORDERINGMETHODS_MODULE_H
+
+#include "SparseCore"
+
+#include "src/Core/util/DisableStupidWarnings.h"
+
+/** 
+  * \defgroup OrderingMethods_Module OrderingMethods module
+  *
+  * This module is currently for internal use only
+  * 
+  * It defines various built-in and external ordering methods for sparse matrices. 
+  * They are typically used to reduce the number of elements during 
+  * the sparse matrix decomposition (LLT, LU, QR).
+  * Precisely, in a preprocessing step, a permutation matrix P is computed using 
+  * those ordering methods and applied to the columns of the matrix. 
+  * Using for instance the sparse Cholesky decomposition, it is expected that 
+  * the nonzeros elements in LLT(A*P) will be much smaller than that in LLT(A).
+  * 
+  * 
+  * Usage : 
+  * \code
+  * #include <Eigen/OrderingMethods>
+  * \endcode
+  * 
+  * A simple usage is as a template parameter in the sparse decomposition classes : 
+  * 
+  * \code 
+  * SparseLU<MatrixType, COLAMDOrdering<int> > solver;
+  * \endcode 
+  * 
+  * \code 
+  * SparseQR<MatrixType, COLAMDOrdering<int> > solver;
+  * \endcode
+  * 
+  * It is possible as well to call directly a particular ordering method for your own purpose, 
+  * \code 
+  * AMDOrdering<int> ordering;
+  * PermutationMatrix<Dynamic, Dynamic, int> perm;
+  * SparseMatrix<double> A; 
+  * //Fill the matrix ...
+  * 
+  * ordering(A, perm); // Call AMD
+  * \endcode
+  * 
+  * \note Some of these methods (like AMD or METIS), need the sparsity pattern 
+  * of the input matrix to be symmetric. When the matrix is structurally unsymmetric, 
+  * Eigen computes internally the pattern of \f$A^T*A\f$ before calling the method.
+  * If your matrix is already symmetric (at leat in structure), you can avoid that
+  * by calling the method with a SelfAdjointView type.
+  * 
+  * \code
+  *  // Call the ordering on the pattern of the lower triangular matrix A
+  * ordering(A.selfadjointView<Lower>(), perm);
+  * \endcode
+  */
+
+#ifndef EIGEN_MPL2_ONLY
+#include "src/OrderingMethods/Amd.h"
+#endif
+
+#include "src/OrderingMethods/Ordering.h"
+#include "src/Core/util/ReenableStupidWarnings.h"
+
+#endif // EIGEN_ORDERINGMETHODS_MODULE_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/Dense
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/Dense	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/Dense	(revision 3762)
@@ -0,0 +1,7 @@
+#include "Core"
+#include "LU"
+#include "Cholesky"
+#include "QR"
+#include "SVD"
+#include "Geometry"
+#include "Eigenvalues"
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/PardisoSupport
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/PardisoSupport	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/PardisoSupport	(revision 3762)
@@ -0,0 +1,35 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_PARDISOSUPPORT_MODULE_H
+#define EIGEN_PARDISOSUPPORT_MODULE_H
+
+#include "SparseCore"
+
+#include "src/Core/util/DisableStupidWarnings.h"
+
+#include <mkl_pardiso.h>
+
+/** \ingroup Support_modules
+  * \defgroup PardisoSupport_Module PardisoSupport module
+  *
+  * This module brings support for the Intel(R) MKL PARDISO direct sparse solvers.
+  *
+  * \code
+  * #include <Eigen/PardisoSupport>
+  * \endcode
+  *
+  * In order to use this module, the MKL headers must be accessible from the include paths, and your binary must be linked to the MKL library and its dependencies.
+  * See this \ref TopicUsingIntelMKL "page" for more information on MKL-Eigen integration.
+  * 
+  */
+
+#include "src/PardisoSupport/PardisoSupport.h"
+
+#include "src/Core/util/ReenableStupidWarnings.h"
+
+#endif // EIGEN_PARDISOSUPPORT_MODULE_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/SparseLU
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/SparseLU	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/SparseLU	(revision 3762)
@@ -0,0 +1,46 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2012 Désiré Nuentsa-Wakam <desire.nuentsa_wakam@inria.fr>
+// Copyright (C) 2012 Gael Guennebaud <gael.guennebaud@inria.fr>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_SPARSELU_MODULE_H
+#define EIGEN_SPARSELU_MODULE_H
+
+#include "SparseCore"
+
+/** 
+  * \defgroup SparseLU_Module SparseLU module
+  * This module defines a supernodal factorization of general sparse matrices.
+  * The code is fully optimized for supernode-panel updates with specialized kernels.
+  * Please, see the documentation of the SparseLU class for more details.
+  */
+
+// Ordering interface
+#include "OrderingMethods"
+
+#include "src/SparseLU/SparseLU_gemm_kernel.h"
+
+#include "src/SparseLU/SparseLU_Structs.h"
+#include "src/SparseLU/SparseLU_SupernodalMatrix.h"
+#include "src/SparseLU/SparseLUImpl.h"
+#include "src/SparseCore/SparseColEtree.h"
+#include "src/SparseLU/SparseLU_Memory.h"
+#include "src/SparseLU/SparseLU_heap_relax_snode.h"
+#include "src/SparseLU/SparseLU_relax_snode.h"
+#include "src/SparseLU/SparseLU_pivotL.h"
+#include "src/SparseLU/SparseLU_panel_dfs.h"
+#include "src/SparseLU/SparseLU_kernel_bmod.h"
+#include "src/SparseLU/SparseLU_panel_bmod.h"
+#include "src/SparseLU/SparseLU_column_dfs.h"
+#include "src/SparseLU/SparseLU_column_bmod.h"
+#include "src/SparseLU/SparseLU_copy_to_ucol.h"
+#include "src/SparseLU/SparseLU_pruneL.h"
+#include "src/SparseLU/SparseLU_Utils.h"
+#include "src/SparseLU/SparseLU.h"
+
+#endif // EIGEN_SPARSELU_MODULE_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/SparseCholesky
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/SparseCholesky	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/SparseCholesky	(revision 3762)
@@ -0,0 +1,45 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2008-2013 Gael Guennebaud <gael.guennebaud@inria.fr>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_SPARSECHOLESKY_MODULE_H
+#define EIGEN_SPARSECHOLESKY_MODULE_H
+
+#include "SparseCore"
+#include "OrderingMethods"
+
+#include "src/Core/util/DisableStupidWarnings.h"
+
+/** 
+  * \defgroup SparseCholesky_Module SparseCholesky module
+  *
+  * This module currently provides two variants of the direct sparse Cholesky decomposition for selfadjoint (hermitian) matrices.
+  * Those decompositions are accessible via the following classes:
+  *  - SimplicialLLt,
+  *  - SimplicialLDLt
+  *
+  * Such problems can also be solved using the ConjugateGradient solver from the IterativeLinearSolvers module.
+  *
+  * \code
+  * #include <Eigen/SparseCholesky>
+  * \endcode
+  */
+
+#ifdef EIGEN_MPL2_ONLY
+#error The SparseCholesky module has nothing to offer in MPL2 only mode
+#endif
+
+#include "src/SparseCholesky/SimplicialCholesky.h"
+
+#ifndef EIGEN_MPL2_ONLY
+#include "src/SparseCholesky/SimplicialCholesky_impl.h"
+#endif
+
+#include "src/Core/util/ReenableStupidWarnings.h"
+
+#endif // EIGEN_SPARSECHOLESKY_MODULE_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/QtAlignedMalloc
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/QtAlignedMalloc	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/QtAlignedMalloc	(revision 3762)
@@ -0,0 +1,40 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_QTMALLOC_MODULE_H
+#define EIGEN_QTMALLOC_MODULE_H
+
+#include "Core"
+
+#if (!EIGEN_MALLOC_ALREADY_ALIGNED)
+
+#include "src/Core/util/DisableStupidWarnings.h"
+
+void *qMalloc(std::size_t size)
+{
+  return Eigen::internal::aligned_malloc(size);
+}
+
+void qFree(void *ptr)
+{
+  Eigen::internal::aligned_free(ptr);
+}
+
+void *qRealloc(void *ptr, std::size_t size)
+{
+  void* newPtr = Eigen::internal::aligned_malloc(size);
+  std::memcpy(newPtr, ptr, size);
+  Eigen::internal::aligned_free(ptr);
+  return newPtr;
+}
+
+#include "src/Core/util/ReenableStupidWarnings.h"
+
+#endif
+
+#endif // EIGEN_QTMALLOC_MODULE_H
+/* vim: set filetype=cpp et sw=2 ts=2 ai: */
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/SparseQR
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/SparseQR	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/SparseQR	(revision 3762)
@@ -0,0 +1,36 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_SPARSEQR_MODULE_H
+#define EIGEN_SPARSEQR_MODULE_H
+
+#include "SparseCore"
+#include "OrderingMethods"
+#include "src/Core/util/DisableStupidWarnings.h"
+
+/** \defgroup SparseQR_Module SparseQR module
+  * \brief Provides QR decomposition for sparse matrices
+  * 
+  * This module provides a simplicial version of the left-looking Sparse QR decomposition. 
+  * The columns of the input matrix should be reordered to limit the fill-in during the 
+  * decomposition. Built-in methods (COLAMD, AMD) or external  methods (METIS) can be used to this end.
+  * See the \link OrderingMethods_Module OrderingMethods\endlink module for the list 
+  * of built-in and external ordering methods.
+  * 
+  * \code
+  * #include <Eigen/SparseQR>
+  * \endcode
+  * 
+  * 
+  */
+
+#include "src/SparseCore/SparseColEtree.h"
+#include "src/SparseQR/SparseQR.h"
+
+#include "src/Core/util/ReenableStupidWarnings.h"
+
+#endif
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/PaStiXSupport
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/PaStiXSupport	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/PaStiXSupport	(revision 3762)
@@ -0,0 +1,48 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_PASTIXSUPPORT_MODULE_H
+#define EIGEN_PASTIXSUPPORT_MODULE_H
+
+#include "SparseCore"
+
+#include "src/Core/util/DisableStupidWarnings.h"
+
+extern "C" {
+#include <pastix_nompi.h>
+#include <pastix.h>
+}
+
+#ifdef complex
+#undef complex
+#endif
+
+/** \ingroup Support_modules
+  * \defgroup PaStiXSupport_Module PaStiXSupport module
+  * 
+  * This module provides an interface to the <a href="http://pastix.gforge.inria.fr/">PaSTiX</a> library.
+  * PaSTiX is a general \b supernodal, \b parallel and \b opensource sparse solver.
+  * It provides the two following main factorization classes:
+  * - class PastixLLT : a supernodal, parallel LLt Cholesky factorization.
+  * - class PastixLDLT: a supernodal, parallel LDLt Cholesky factorization.
+  * - class PastixLU : a supernodal, parallel LU factorization (optimized for a symmetric pattern).
+  * 
+  * \code
+  * #include <Eigen/PaStiXSupport>
+  * \endcode
+  *
+  * In order to use this module, the PaSTiX headers must be accessible from the include paths, and your binary must be linked to the PaSTiX library and its dependencies.
+  * The dependencies depend on how PaSTiX has been compiled.
+  * For a cmake based project, you can use our FindPaSTiX.cmake module to help you in this task.
+  *
+  */
+
+#include "src/PaStiXSupport/PaStiXSupport.h"
+
+#include "src/Core/util/ReenableStupidWarnings.h"
+
+#endif // EIGEN_PASTIXSUPPORT_MODULE_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/IterativeLinearSolvers
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/IterativeLinearSolvers	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/IterativeLinearSolvers	(revision 3762)
@@ -0,0 +1,48 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_ITERATIVELINEARSOLVERS_MODULE_H
+#define EIGEN_ITERATIVELINEARSOLVERS_MODULE_H
+
+#include "SparseCore"
+#include "OrderingMethods"
+
+#include "src/Core/util/DisableStupidWarnings.h"
+
+/** 
+  * \defgroup IterativeLinearSolvers_Module IterativeLinearSolvers module
+  *
+  * This module currently provides iterative methods to solve problems of the form \c A \c x = \c b, where \c A is a squared matrix, usually very large and sparse.
+  * Those solvers are accessible via the following classes:
+  *  - ConjugateGradient for selfadjoint (hermitian) matrices,
+  *  - LeastSquaresConjugateGradient for rectangular least-square problems,
+  *  - BiCGSTAB for general square matrices.
+  *
+  * These iterative solvers are associated with some preconditioners:
+  *  - IdentityPreconditioner - not really useful
+  *  - DiagonalPreconditioner - also called Jacobi preconditioner, work very well on diagonal dominant matrices.
+  *  - IncompleteLUT - incomplete LU factorization with dual thresholding
+  *
+  * Such problems can also be solved using the direct sparse decomposition modules: SparseCholesky, CholmodSupport, UmfPackSupport, SuperLUSupport.
+  *
+    \code
+    #include <Eigen/IterativeLinearSolvers>
+    \endcode
+  */
+
+#include "src/IterativeLinearSolvers/SolveWithGuess.h"
+#include "src/IterativeLinearSolvers/IterativeSolverBase.h"
+#include "src/IterativeLinearSolvers/BasicPreconditioners.h"
+#include "src/IterativeLinearSolvers/ConjugateGradient.h"
+#include "src/IterativeLinearSolvers/LeastSquareConjugateGradient.h"
+#include "src/IterativeLinearSolvers/BiCGSTAB.h"
+#include "src/IterativeLinearSolvers/IncompleteLUT.h"
+#include "src/IterativeLinearSolvers/IncompleteCholesky.h"
+
+#include "src/Core/util/ReenableStupidWarnings.h"
+
+#endif // EIGEN_ITERATIVELINEARSOLVERS_MODULE_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/SparseCore
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/SparseCore	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/SparseCore	(revision 3762)
@@ -0,0 +1,69 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_SPARSECORE_MODULE_H
+#define EIGEN_SPARSECORE_MODULE_H
+
+#include "Core"
+
+#include "src/Core/util/DisableStupidWarnings.h"
+
+#include <vector>
+#include <map>
+#include <cstdlib>
+#include <cstring>
+#include <algorithm>
+
+/** 
+  * \defgroup SparseCore_Module SparseCore module
+  *
+  * This module provides a sparse matrix representation, and basic associated matrix manipulations
+  * and operations.
+  *
+  * See the \ref TutorialSparse "Sparse tutorial"
+  *
+  * \code
+  * #include <Eigen/SparseCore>
+  * \endcode
+  *
+  * This module depends on: Core.
+  */
+
+#include "src/SparseCore/SparseUtil.h"
+#include "src/SparseCore/SparseMatrixBase.h"
+#include "src/SparseCore/SparseAssign.h"
+#include "src/SparseCore/CompressedStorage.h"
+#include "src/SparseCore/AmbiVector.h"
+#include "src/SparseCore/SparseCompressedBase.h"
+#include "src/SparseCore/SparseMatrix.h"
+#include "src/SparseCore/SparseMap.h"
+#include "src/SparseCore/MappedSparseMatrix.h"
+#include "src/SparseCore/SparseVector.h"
+#include "src/SparseCore/SparseRef.h"
+#include "src/SparseCore/SparseCwiseUnaryOp.h"
+#include "src/SparseCore/SparseCwiseBinaryOp.h"
+#include "src/SparseCore/SparseTranspose.h"
+#include "src/SparseCore/SparseBlock.h"
+#include "src/SparseCore/SparseDot.h"
+#include "src/SparseCore/SparseRedux.h"
+#include "src/SparseCore/SparseView.h"
+#include "src/SparseCore/SparseDiagonalProduct.h"
+#include "src/SparseCore/ConservativeSparseSparseProduct.h"
+#include "src/SparseCore/SparseSparseProductWithPruning.h"
+#include "src/SparseCore/SparseProduct.h"
+#include "src/SparseCore/SparseDenseProduct.h"
+#include "src/SparseCore/SparseSelfAdjointView.h"
+#include "src/SparseCore/SparseTriangularView.h"
+#include "src/SparseCore/TriangularSolver.h"
+#include "src/SparseCore/SparsePermutation.h"
+#include "src/SparseCore/SparseFuzzy.h"
+#include "src/SparseCore/SparseSolverBase.h"
+
+#include "src/Core/util/ReenableStupidWarnings.h"
+
+#endif // EIGEN_SPARSECORE_MODULE_H
+
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/Eigenvalues
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/Eigenvalues	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/Eigenvalues	(revision 3762)
@@ -0,0 +1,61 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_EIGENVALUES_MODULE_H
+#define EIGEN_EIGENVALUES_MODULE_H
+
+#include "Core"
+
+#include "Cholesky"
+#include "Jacobi"
+#include "Householder"
+#include "LU"
+#include "Geometry"
+
+#include "src/Core/util/DisableStupidWarnings.h"
+
+/** \defgroup Eigenvalues_Module Eigenvalues module
+  *
+  *
+  *
+  * This module mainly provides various eigenvalue solvers.
+  * This module also provides some MatrixBase methods, including:
+  *  - MatrixBase::eigenvalues(),
+  *  - MatrixBase::operatorNorm()
+  *
+  * \code
+  * #include <Eigen/Eigenvalues>
+  * \endcode
+  */
+
+#include "src/misc/RealSvd2x2.h"
+#include "src/Eigenvalues/Tridiagonalization.h"
+#include "src/Eigenvalues/RealSchur.h"
+#include "src/Eigenvalues/EigenSolver.h"
+#include "src/Eigenvalues/SelfAdjointEigenSolver.h"
+#include "src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h"
+#include "src/Eigenvalues/HessenbergDecomposition.h"
+#include "src/Eigenvalues/ComplexSchur.h"
+#include "src/Eigenvalues/ComplexEigenSolver.h"
+#include "src/Eigenvalues/RealQZ.h"
+#include "src/Eigenvalues/GeneralizedEigenSolver.h"
+#include "src/Eigenvalues/MatrixBaseEigenvalues.h"
+#ifdef EIGEN_USE_LAPACKE
+#ifdef EIGEN_USE_MKL
+#include "mkl_lapacke.h"
+#else
+#include "src/misc/lapacke.h"
+#endif
+#include "src/Eigenvalues/RealSchur_LAPACKE.h"
+#include "src/Eigenvalues/ComplexSchur_LAPACKE.h"
+#include "src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h"
+#endif
+
+#include "src/Core/util/ReenableStupidWarnings.h"
+
+#endif // EIGEN_EIGENVALUES_MODULE_H
+/* vim: set filetype=cpp et sw=2 ts=2 ai: */
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/StdVector
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/StdVector	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/StdVector	(revision 3762)
@@ -0,0 +1,27 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2009 Gael Guennebaud <gael.guennebaud@inria.fr>
+// Copyright (C) 2009 Hauke Heibel <hauke.heibel@googlemail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_STDVECTOR_MODULE_H
+#define EIGEN_STDVECTOR_MODULE_H
+
+#include "Core"
+#include <vector>
+
+#if EIGEN_COMP_MSVC && EIGEN_OS_WIN64 && (EIGEN_MAX_STATIC_ALIGN_BYTES<=16) /* MSVC auto aligns up to 16 bytes in 64 bit builds */
+
+#define EIGEN_DEFINE_STL_VECTOR_SPECIALIZATION(...)
+
+#else
+
+#include "src/StlSupport/StdVector.h"
+
+#endif
+
+#endif // EIGEN_STDVECTOR_MODULE_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/MetisSupport
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/MetisSupport	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/MetisSupport	(revision 3762)
@@ -0,0 +1,35 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_METISSUPPORT_MODULE_H
+#define EIGEN_METISSUPPORT_MODULE_H
+
+#include "SparseCore"
+
+#include "src/Core/util/DisableStupidWarnings.h"
+
+extern "C" {
+#include <metis.h>
+}
+
+
+/** \ingroup Support_modules
+  * \defgroup MetisSupport_Module MetisSupport module
+  *
+  * \code
+  * #include <Eigen/MetisSupport>
+  * \endcode
+  * This module defines an interface to the METIS reordering package (http://glaros.dtc.umn.edu/gkhome/views/metis). 
+  * It can be used just as any other built-in method as explained in \link OrderingMethods_Module here. \endlink
+  */
+
+
+#include "src/MetisSupport/MetisSupport.h"
+
+#include "src/Core/util/ReenableStupidWarnings.h"
+
+#endif // EIGEN_METISSUPPORT_MODULE_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/StdDeque
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/StdDeque	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/Eigen/StdDeque	(revision 3762)
@@ -0,0 +1,27 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2009 Gael Guennebaud <gael.guennebaud@inria.fr>
+// Copyright (C) 2009 Hauke Heibel <hauke.heibel@googlemail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_STDDEQUE_MODULE_H
+#define EIGEN_STDDEQUE_MODULE_H
+
+#include "Core"
+#include <deque>
+
+#if EIGEN_COMP_MSVC && EIGEN_OS_WIN64 && (EIGEN_MAX_STATIC_ALIGN_BYTES<=16) /* MSVC auto aligns up to 16 bytes in 64 bit builds */
+
+#define EIGEN_DEFINE_STL_DEQUE_SPECIALIZATION(...)
+
+#else
+
+#include "src/StlSupport/StdDeque.h"
+
+#endif
+
+#endif // EIGEN_STDDEQUE_MODULE_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/ThreadPool
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/ThreadPool	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/ThreadPool	(revision 3762)
@@ -0,0 +1,65 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2016 Benoit Steiner <benoit.steiner.goog@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CXX11_THREADPOOL_MODULE
+#define EIGEN_CXX11_THREADPOOL_MODULE
+
+#include "../../../Eigen/Core"
+
+#include <Eigen/src/Core/util/DisableStupidWarnings.h>
+
+/** \defgroup CXX11_ThreadPool_Module C++11 ThreadPool Module
+  *
+  * This module provides 2 threadpool implementations
+  *  - a simple reference implementation
+  *  - a faster non blocking implementation
+  *
+  * This module requires C++11.
+  *
+  * \code
+  * #include <Eigen/CXX11/ThreadPool>
+  * \endcode
+  */
+
+
+// The code depends on CXX11, so only include the module if the
+// compiler supports it.
+#if __cplusplus > 199711L || EIGEN_COMP_MSVC >= 1900
+#include <cstddef>
+#include <cstring>
+#include <stdint.h>
+#include <time.h>
+
+#include <vector>
+#include <atomic>
+#include <condition_variable>
+#include <deque>
+#include <mutex>
+#include <thread>
+#include <functional>
+#include <memory>
+
+#include "src/util/CXX11Meta.h"
+#include "src/util/MaxSizeVector.h"
+
+#include "src/ThreadPool/ThreadLocal.h"
+#include "src/ThreadPool/ThreadYield.h"
+#include "src/ThreadPool/EventCount.h"
+#include "src/ThreadPool/RunQueue.h"
+#include "src/ThreadPool/ThreadPoolInterface.h"
+#include "src/ThreadPool/ThreadEnvironment.h"
+#include "src/ThreadPool/SimpleThreadPool.h"
+#include "src/ThreadPool/NonBlockingThreadPool.h"
+
+#endif
+
+#include <Eigen/src/Core/util/ReenableStupidWarnings.h>
+
+#endif // EIGEN_CXX11_THREADPOOL_MODULE
+
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/TensorSymmetry
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/TensorSymmetry	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/TensorSymmetry	(revision 3762)
@@ -0,0 +1,42 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2013 Christian Seiler <christian@iwakd.de>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CXX11_TENSORSYMMETRY_MODULE
+#define EIGEN_CXX11_TENSORSYMMETRY_MODULE
+
+#include <unsupported/Eigen/CXX11/Tensor>
+
+#include <Eigen/src/Core/util/DisableStupidWarnings.h>
+
+#include "src/util/CXX11Meta.h"
+
+/** \defgroup CXX11_TensorSymmetry_Module Tensor Symmetry Module
+  *
+  * This module provides a classes that allow for the definition of
+  * symmetries w.r.t. tensor indices.
+  *
+  * Including this module will implicitly include the Tensor module.
+  *
+  * \code
+  * #include <Eigen/TensorSymmetry>
+  * \endcode
+  */
+
+#include "src/TensorSymmetry/util/TemplateGroupTheory.h"
+#include "src/TensorSymmetry/Symmetry.h"
+#include "src/TensorSymmetry/StaticSymmetry.h"
+#include "src/TensorSymmetry/DynamicSymmetry.h"
+
+#include <Eigen/src/Core/util/ReenableStupidWarnings.h>
+
+#endif // EIGEN_CXX11_TENSORSYMMETRY_MODULE
+
+/*
+ * kate: space-indent on; indent-width 2; mixedindent off; indent-mode cstyle;
+ */
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorIntDiv.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorIntDiv.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorIntDiv.h	(revision 3762)
@@ -0,0 +1,253 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2014 Benoit Steiner <benoit.steiner.goog@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CXX11_TENSOR_TENSOR_INTDIV_H
+#define EIGEN_CXX11_TENSOR_TENSOR_INTDIV_H
+
+
+namespace Eigen {
+
+/** \internal
+  *
+  * \class TensorIntDiv
+  * \ingroup CXX11_Tensor_Module
+  *
+  * \brief Fast integer division by a constant.
+  *
+  * See the paper from Granlund and Montgomery for explanation.
+  *   (at http://dx.doi.org/10.1145/773473.178249)
+  *
+  * \sa Tensor
+  */
+
+namespace internal {
+
+namespace {
+
+  // Note: result is undefined if val == 0
+  template <typename T>
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+  typename internal::enable_if<sizeof(T)==4,int>::type count_leading_zeros(const T val)
+  {
+#ifdef __CUDA_ARCH__
+    return __clz(val);
+#elif EIGEN_COMP_MSVC
+    unsigned long index;
+    _BitScanReverse(&index, val);
+    return 31 - index;
+#else
+    EIGEN_STATIC_ASSERT(sizeof(unsigned long long) == 8, YOU_MADE_A_PROGRAMMING_MISTAKE);
+    return __builtin_clz(static_cast<uint32_t>(val));
+#endif
+  }
+
+  template <typename T>
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+  typename internal::enable_if<sizeof(T)==8,int>::type count_leading_zeros(const T val)
+  {
+#ifdef __CUDA_ARCH__
+    return __clzll(val);
+#elif EIGEN_COMP_MSVC && EIGEN_ARCH_x86_64
+    unsigned long index;
+    _BitScanReverse64(&index, val);
+    return 63 - index;
+#elif EIGEN_COMP_MSVC
+    // MSVC's _BitScanReverse64 is not available for 32bits builds.
+    unsigned int lo = (unsigned int)(val&0xffffffff);
+    unsigned int hi = (unsigned int)((val>>32)&0xffffffff);
+    int n;
+    if(hi==0)
+      n = 32 + count_leading_zeros<unsigned int>(lo);
+    else
+      n = count_leading_zeros<unsigned int>(hi);
+    return n;
+#else
+    EIGEN_STATIC_ASSERT(sizeof(unsigned long long) == 8, YOU_MADE_A_PROGRAMMING_MISTAKE);
+    return __builtin_clzll(static_cast<uint64_t>(val));
+#endif
+  }
+
+  template <typename T>
+  struct UnsignedTraits {
+    typedef typename conditional<sizeof(T) == 8, uint64_t, uint32_t>::type type;
+  };
+
+  template <typename T>
+  struct DividerTraits {
+    typedef typename UnsignedTraits<T>::type type;
+    static const int N = sizeof(T) * 8;
+  };
+
+  template <typename T>
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE uint32_t muluh(const uint32_t a, const T b) {
+#if defined(__CUDA_ARCH__)
+    return __umulhi(a, b);
+#else
+    return (static_cast<uint64_t>(a) * b) >> 32;
+#endif
+  }
+
+  template <typename T>
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE uint64_t muluh(const uint64_t a, const T b) {
+#if defined(__CUDA_ARCH__)
+    return __umul64hi(a, b);
+#elif defined(__SIZEOF_INT128__)
+    __uint128_t v = static_cast<__uint128_t>(a) * static_cast<__uint128_t>(b);
+    return static_cast<uint64_t>(v >> 64);
+#else
+    return (TensorUInt128<static_val<0>, uint64_t>(a) * TensorUInt128<static_val<0>, uint64_t>(b)).upper();
+#endif
+  }
+
+  template <int N, typename T>
+  struct DividerHelper {
+    static EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE uint32_t computeMultiplier(const int log_div, const T divider) {
+      EIGEN_STATIC_ASSERT(N == 32, YOU_MADE_A_PROGRAMMING_MISTAKE);
+      return static_cast<uint32_t>((static_cast<uint64_t>(1) << (N+log_div)) / divider - (static_cast<uint64_t>(1) << N) + 1);
+    }
+  };
+
+  template <typename T>
+  struct DividerHelper<64, T> {
+    static EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE uint64_t computeMultiplier(const int log_div, const T divider) {
+#if defined(__SIZEOF_INT128__) && !defined(__CUDA_ARCH__)
+      return static_cast<uint64_t>((static_cast<__uint128_t>(1) << (64+log_div)) / static_cast<__uint128_t>(divider) - (static_cast<__uint128_t>(1) << 64) + 1);
+#else
+      const uint64_t shift = 1ULL << log_div;
+      TensorUInt128<uint64_t, uint64_t> result = TensorUInt128<uint64_t, static_val<0> >(shift, 0) / TensorUInt128<static_val<0>, uint64_t>(divider)
+                                               - TensorUInt128<static_val<1>, static_val<0> >(1, 0)
+                                               + TensorUInt128<static_val<0>, static_val<1> >(1);
+      return static_cast<uint64_t>(result);
+#endif
+    }
+  };
+}
+
+
+template <typename T, bool div_gt_one = false>
+struct TensorIntDivisor {
+ public:
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorIntDivisor() {
+    multiplier = 0;
+    shift1 = 0;
+    shift2 = 0;
+  }
+
+  // Must have 0 < divider < 2^31. This is relaxed to
+  // 0 < divider < 2^63 when using 64-bit indices on platforms that support
+  // the __uint128_t type.
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorIntDivisor(const T divider) {
+    const int N = DividerTraits<T>::N;
+    eigen_assert(static_cast<typename UnsignedTraits<T>::type>(divider) < NumTraits<UnsignedType>::highest()/2);
+    eigen_assert(divider > 0);
+
+    // fast ln2
+    const int leading_zeros = count_leading_zeros(static_cast<UnsignedType>(divider));
+    int log_div = N - leading_zeros;
+    // if divider is a power of two then log_div is 1 more than it should be.
+    if ((static_cast<typename UnsignedTraits<T>::type>(1) << (log_div-1)) == static_cast<typename UnsignedTraits<T>::type>(divider))
+      log_div--;
+
+    multiplier = DividerHelper<N, T>::computeMultiplier(log_div, divider);
+    shift1 = log_div > 1 ? 1 : log_div;
+    shift2 = log_div > 1 ? log_div-1 : 0;
+  }
+
+  // Must have 0 <= numerator. On platforms that dont support the __uint128_t
+  // type numerator should also be less than 2^32-1.
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T divide(const T numerator) const {
+    eigen_assert(static_cast<typename UnsignedTraits<T>::type>(numerator) < NumTraits<UnsignedType>::highest()/2);
+    //eigen_assert(numerator >= 0); // this is implicitly asserted by the line above
+
+    UnsignedType t1 = muluh(multiplier, numerator);
+    UnsignedType t = (static_cast<UnsignedType>(numerator) - t1) >> shift1;
+    return (t1 + t) >> shift2;
+  }
+
+ private:
+  typedef typename DividerTraits<T>::type UnsignedType;
+  UnsignedType multiplier;
+  int32_t shift1;
+  int32_t shift2;
+};
+
+
+// Optimized version for signed 32 bit integers.
+// Derived from Hacker's Delight.
+// Only works for divisors strictly greater than one
+template <>
+class TensorIntDivisor<int32_t, true> {
+ public:
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorIntDivisor() {
+    magic = 0;
+    shift = 0;
+  }
+  // Must have 2 <= divider
+  EIGEN_DEVICE_FUNC TensorIntDivisor(int32_t divider)  {
+    eigen_assert(divider >= 2);
+    calcMagic(divider);
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE int divide(const int32_t n) const {
+#ifdef __CUDA_ARCH__
+    return (__umulhi(magic, n) >> shift);
+#else
+    uint64_t v = static_cast<uint64_t>(magic) * static_cast<uint64_t>(n);
+    return (static_cast<uint32_t>(v >> 32) >> shift);
+#endif
+  }
+
+private:
+  // Compute the magic numbers. See Hacker's Delight section 10 for an in
+  // depth explanation.
+  EIGEN_DEVICE_FUNC void calcMagic(int32_t d) {
+   const unsigned two31 = 0x80000000;     // 2**31.
+   unsigned ad = d;
+   unsigned t = two31 + (ad >> 31);
+   unsigned anc = t - 1 - t%ad;     // Absolute value of nc.
+   int p = 31;                      // Init. p.
+   unsigned q1 = two31/anc;         // Init. q1 = 2**p/|nc|.
+   unsigned r1 = two31 - q1*anc;    // Init. r1 = rem(2**p, |nc|).
+   unsigned q2 = two31/ad;          // Init. q2 = 2**p/|d|.
+   unsigned r2 = two31 - q2*ad;     // Init. r2 = rem(2**p, |d|).
+   unsigned delta = 0;
+   do {
+      p = p + 1;
+      q1 = 2*q1;           // Update q1 = 2**p/|nc|.
+      r1 = 2*r1;           // Update r1 = rem(2**p, |nc|).
+      if (r1 >= anc) {     // (Must be an unsigned
+         q1 = q1 + 1;      // comparison here).
+         r1 = r1 - anc;}
+      q2 = 2*q2;           // Update q2 = 2**p/|d|.
+      r2 = 2*r2;           // Update r2 = rem(2**p, |d|).
+      if (r2 >= ad) {      // (Must be an unsigned
+         q2 = q2 + 1;      // comparison here).
+         r2 = r2 - ad;}
+      delta = ad - r2;
+   } while (q1 < delta || (q1 == delta && r1 == 0));
+
+   magic = (unsigned)(q2 + 1);
+   shift = p - 32;
+  }
+
+  uint32_t magic;
+  int32_t shift;
+};
+
+
+template <typename T, bool div_gt_one>
+static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T operator / (const T& numerator, const TensorIntDivisor<T, div_gt_one>& divisor) {
+  return divisor.divide(numerator);
+}
+
+
+} // end namespace internal
+} // end namespace Eigen
+
+#endif // EIGEN_CXX11_TENSOR_TENSOR_INTDIV_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorExecutor.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorExecutor.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorExecutor.h	(revision 3762)
@@ -0,0 +1,288 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2014 Benoit Steiner <benoit.steiner.goog@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CXX11_TENSOR_TENSOR_EXECUTOR_H
+#define EIGEN_CXX11_TENSOR_TENSOR_EXECUTOR_H
+
+namespace Eigen {
+
+/** \class TensorExecutor
+  * \ingroup CXX11_Tensor_Module
+  *
+  * \brief The tensor executor class.
+  *
+  * This class is responsible for launch the evaluation of the expression on
+  * the specified computing device.
+  */
+namespace internal {
+
+// Default strategy: the expression is evaluated with a single cpu thread.
+template<typename Expression, typename Device, bool Vectorizable>
+class TensorExecutor
+{
+ public:
+  typedef typename Expression::Index Index;
+  EIGEN_DEVICE_FUNC
+  static inline void run(const Expression& expr, const Device& device = Device())
+  {
+    TensorEvaluator<Expression, Device> evaluator(expr, device);
+    const bool needs_assign = evaluator.evalSubExprsIfNeeded(NULL);
+    if (needs_assign)
+    {
+      const Index size = array_prod(evaluator.dimensions());
+      for (Index i = 0; i < size; ++i) {
+        evaluator.evalScalar(i);
+      }
+    }
+    evaluator.cleanup();
+  }
+};
+
+
+template<typename Expression>
+class TensorExecutor<Expression, DefaultDevice, true>
+{
+ public:
+  typedef typename Expression::Index Index;
+  EIGEN_DEVICE_FUNC
+  static inline void run(const Expression& expr, const DefaultDevice& device = DefaultDevice())
+  {
+    TensorEvaluator<Expression, DefaultDevice> evaluator(expr, device);
+    const bool needs_assign = evaluator.evalSubExprsIfNeeded(NULL);
+    if (needs_assign)
+    {
+      const Index size = array_prod(evaluator.dimensions());
+      const int PacketSize = unpacket_traits<typename TensorEvaluator<Expression, DefaultDevice>::PacketReturnType>::size;
+      // Give the compiler a strong hint to unroll the loop. But don't insist
+      // on unrolling, because if the function is expensive the compiler should not
+      // unroll the loop at the expense of inlining.
+      const Index UnrolledSize = (size / (4 * PacketSize)) * 4 * PacketSize;
+      for (Index i = 0; i < UnrolledSize; i += 4*PacketSize) {
+        for (Index j = 0; j < 4; j++) {
+          evaluator.evalPacket(i + j * PacketSize);
+        }
+      }
+      const Index VectorizedSize = (size / PacketSize) * PacketSize;
+      for (Index i = UnrolledSize; i < VectorizedSize; i += PacketSize) {
+        evaluator.evalPacket(i);
+      }
+      for (Index i = VectorizedSize; i < size; ++i) {
+        evaluator.evalScalar(i);
+      }
+    }
+    evaluator.cleanup();
+  }
+};
+
+
+
+// Multicore strategy: the index space is partitioned and each partition is executed on a single core
+#ifdef EIGEN_USE_THREADS
+template <typename Evaluator, typename Index, bool Vectorizable>
+struct EvalRange {
+  static void run(Evaluator* evaluator_in, const Index first, const Index last) {
+    Evaluator evaluator = *evaluator_in;
+    eigen_assert(last >= first);
+    for (Index i = first; i < last; ++i) {
+      evaluator.evalScalar(i);
+    }
+  }
+
+  static Index alignBlockSize(Index size) {
+    return size;
+  }
+};
+
+template <typename Evaluator, typename Index>
+struct EvalRange<Evaluator, Index, true> {
+  static const int PacketSize = unpacket_traits<typename Evaluator::PacketReturnType>::size;
+
+  static void run(Evaluator* evaluator_in, const Index first, const Index last) {
+    Evaluator evaluator = *evaluator_in;
+    eigen_assert(last >= first);
+    Index i = first;
+    if (last - first >= PacketSize) {
+      eigen_assert(first % PacketSize == 0);
+      Index last_chunk_offset = last - 4 * PacketSize;
+      // Give the compiler a strong hint to unroll the loop. But don't insist
+      // on unrolling, because if the function is expensive the compiler should not
+      // unroll the loop at the expense of inlining.
+      for (; i <= last_chunk_offset; i += 4*PacketSize) {
+        for (Index j = 0; j < 4; j++) {
+          evaluator.evalPacket(i + j * PacketSize);
+        }
+      }
+      last_chunk_offset = last - PacketSize;
+      for (; i <= last_chunk_offset; i += PacketSize) {
+        evaluator.evalPacket(i);
+      }
+    }
+    for (; i < last; ++i) {
+      evaluator.evalScalar(i);
+    }
+  }
+
+  static Index alignBlockSize(Index size) {
+    // Align block size to packet size and account for unrolling in run above.
+    if (size >= 16 * PacketSize) {
+      return (size + 4 * PacketSize - 1) & ~(4 * PacketSize - 1);
+    }
+    // Aligning to 4 * PacketSize would increase block size by more than 25%.
+    return (size + PacketSize - 1) & ~(PacketSize - 1);
+  }
+};
+
+template <typename Expression, bool Vectorizable>
+class TensorExecutor<Expression, ThreadPoolDevice, Vectorizable> {
+ public:
+  typedef typename Expression::Index Index;
+  static inline void run(const Expression& expr, const ThreadPoolDevice& device)
+  {
+    typedef TensorEvaluator<Expression, ThreadPoolDevice> Evaluator;
+    Evaluator evaluator(expr, device);
+    const bool needs_assign = evaluator.evalSubExprsIfNeeded(NULL);
+    if (needs_assign)
+    {
+      const Index size = array_prod(evaluator.dimensions());
+#if !defined(EIGEN_USE_SIMPLE_THREAD_POOL)
+      device.parallelFor(size, evaluator.costPerCoeff(Vectorizable),
+                         EvalRange<Evaluator, Index, Vectorizable>::alignBlockSize,
+                         [&evaluator](Index first, Index last) {
+                           EvalRange<Evaluator, Index, Vectorizable>::run(&evaluator, first, last);
+                         });
+#else
+      size_t num_threads = device.numThreads();
+      if (num_threads > 1) {
+        num_threads = TensorCostModel<ThreadPoolDevice>::numThreads(
+            size, evaluator.costPerCoeff(Vectorizable), num_threads);
+      }
+      if (num_threads == 1) {
+        EvalRange<Evaluator, Index, Vectorizable>::run(&evaluator, 0, size);
+      } else {
+        const Index PacketSize = Vectorizable ? unpacket_traits<typename Evaluator::PacketReturnType>::size : 1;
+        Index blocksz = std::ceil<Index>(static_cast<float>(size)/num_threads) + PacketSize - 1;
+        const Index blocksize = numext::maxi<Index>(PacketSize, (blocksz - (blocksz % PacketSize)));
+        const Index numblocks = size / blocksize;
+
+        Barrier barrier(numblocks);
+        for (int i = 0; i < numblocks; ++i) {
+          device.enqueue_with_barrier(
+              &barrier, &EvalRange<Evaluator, Index, Vectorizable>::run,
+              &evaluator, i * blocksize, (i + 1) * blocksize);
+        }
+        if (numblocks * blocksize < size) {
+          EvalRange<Evaluator, Index, Vectorizable>::run(
+              &evaluator, numblocks * blocksize, size);
+        }
+        barrier.Wait();
+      }
+#endif  // defined(!EIGEN_USE_SIMPLE_THREAD_POOL)
+    }
+    evaluator.cleanup();
+  }
+};
+#endif  // EIGEN_USE_THREADS
+
+
+// GPU: the evaluation of the expression is offloaded to a GPU.
+#if defined(EIGEN_USE_GPU)
+
+template <typename Expression, bool Vectorizable>
+class TensorExecutor<Expression, GpuDevice, Vectorizable> {
+ public:
+  typedef typename Expression::Index Index;
+  static void run(const Expression& expr, const GpuDevice& device);
+};
+
+
+#if defined(__CUDACC__)
+template <typename Evaluator, typename Index, bool Vectorizable>
+struct EigenMetaKernelEval {
+  static __device__ EIGEN_ALWAYS_INLINE
+  void run(Evaluator& eval, Index first, Index last, Index step_size) {
+    for (Index i = first; i < last; i += step_size) {
+      eval.evalScalar(i);
+    }
+  }
+};
+
+template <typename Evaluator, typename Index>
+struct EigenMetaKernelEval<Evaluator, Index, true> {
+  static __device__ EIGEN_ALWAYS_INLINE
+  void run(Evaluator& eval, Index first, Index last, Index step_size) {
+    const Index PacketSize = unpacket_traits<typename Evaluator::PacketReturnType>::size;
+    const Index vectorized_size = (last / PacketSize) * PacketSize;
+    const Index vectorized_step_size = step_size * PacketSize;
+
+    // Use the vector path
+    for (Index i = first * PacketSize; i < vectorized_size;
+         i += vectorized_step_size) {
+      eval.evalPacket(i);
+    }
+    for (Index i = vectorized_size + first; i < last; i += step_size) {
+      eval.evalScalar(i);
+    }
+  }
+};
+
+template <typename Evaluator, typename Index>
+__global__ void
+__launch_bounds__(1024)
+EigenMetaKernel(Evaluator eval, Index size) {
+
+  const Index first_index = blockIdx.x * blockDim.x + threadIdx.x;
+  const Index step_size = blockDim.x * gridDim.x;
+
+  const bool vectorizable = Evaluator::PacketAccess & Evaluator::IsAligned;
+  EigenMetaKernelEval<Evaluator, Index, vectorizable>::run(eval, first_index, size, step_size);
+}
+
+/*static*/
+template <typename Expression, bool Vectorizable>
+inline void TensorExecutor<Expression, GpuDevice, Vectorizable>::run(
+    const Expression& expr, const GpuDevice& device) {
+  TensorEvaluator<Expression, GpuDevice> evaluator(expr, device);
+  const bool needs_assign = evaluator.evalSubExprsIfNeeded(NULL);
+  if (needs_assign) {
+    const int block_size = device.maxCudaThreadsPerBlock();
+    const int max_blocks = device.getNumCudaMultiProcessors() *
+                           device.maxCudaThreadsPerMultiProcessor() / block_size;
+    const Index size = array_prod(evaluator.dimensions());
+    // Create a least one block to ensure we won't crash when tensorflow calls with tensors of size 0.
+    const int num_blocks = numext::maxi<int>(numext::mini<int>(max_blocks, divup<int>(size, block_size)), 1);
+
+    LAUNCH_CUDA_KERNEL(
+        (EigenMetaKernel<TensorEvaluator<Expression, GpuDevice>, Index>),
+        num_blocks, block_size, 0, device, evaluator, size);
+  }
+  evaluator.cleanup();
+}
+
+#endif  // __CUDACC__
+#endif  // EIGEN_USE_GPU
+
+// SYCL Executor policy
+#ifdef EIGEN_USE_SYCL
+
+template <typename Expression, bool Vectorizable>
+class TensorExecutor<Expression, SyclDevice, Vectorizable> {
+public:
+  static inline void run(const Expression &expr, const SyclDevice &device) {
+    // call TensorSYCL module
+    TensorSycl::run(expr, device);
+  }
+};
+
+#endif
+
+} // end namespace internal
+
+} // end namespace Eigen
+
+#endif // EIGEN_CXX11_TENSOR_TENSOR_EXECUTOR_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorPatch.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorPatch.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorPatch.h	(revision 3762)
@@ -0,0 +1,269 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2014 Benoit Steiner <benoit.steiner.goog@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CXX11_TENSOR_TENSOR_PATCH_H
+#define EIGEN_CXX11_TENSOR_TENSOR_PATCH_H
+
+namespace Eigen {
+
+/** \class TensorPatch
+  * \ingroup CXX11_Tensor_Module
+  *
+  * \brief Tensor patch class.
+  *
+  *
+  */
+namespace internal {
+template<typename PatchDim, typename XprType>
+struct traits<TensorPatchOp<PatchDim, XprType> > : public traits<XprType>
+{
+  typedef typename XprType::Scalar Scalar;
+  typedef traits<XprType> XprTraits;
+  typedef typename XprTraits::StorageKind StorageKind;
+  typedef typename XprTraits::Index Index;
+  typedef typename XprType::Nested Nested;
+  typedef typename remove_reference<Nested>::type _Nested;
+  static const int NumDimensions = XprTraits::NumDimensions + 1;
+  static const int Layout = XprTraits::Layout;
+};
+
+template<typename PatchDim, typename XprType>
+struct eval<TensorPatchOp<PatchDim, XprType>, Eigen::Dense>
+{
+  typedef const TensorPatchOp<PatchDim, XprType>& type;
+};
+
+template<typename PatchDim, typename XprType>
+struct nested<TensorPatchOp<PatchDim, XprType>, 1, typename eval<TensorPatchOp<PatchDim, XprType> >::type>
+{
+  typedef TensorPatchOp<PatchDim, XprType> type;
+};
+
+}  // end namespace internal
+
+
+
+template<typename PatchDim, typename XprType>
+class TensorPatchOp : public TensorBase<TensorPatchOp<PatchDim, XprType>, ReadOnlyAccessors>
+{
+  public:
+  typedef typename Eigen::internal::traits<TensorPatchOp>::Scalar Scalar;
+  typedef typename Eigen::NumTraits<Scalar>::Real RealScalar;
+  typedef typename XprType::CoeffReturnType CoeffReturnType;
+  typedef typename Eigen::internal::nested<TensorPatchOp>::type Nested;
+  typedef typename Eigen::internal::traits<TensorPatchOp>::StorageKind StorageKind;
+  typedef typename Eigen::internal::traits<TensorPatchOp>::Index Index;
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorPatchOp(const XprType& expr, const PatchDim& patch_dims)
+      : m_xpr(expr), m_patch_dims(patch_dims) {}
+
+    EIGEN_DEVICE_FUNC
+    const PatchDim& patch_dims() const { return m_patch_dims; }
+
+    EIGEN_DEVICE_FUNC
+    const typename internal::remove_all<typename XprType::Nested>::type&
+    expression() const { return m_xpr; }
+
+  protected:
+    typename XprType::Nested m_xpr;
+    const PatchDim m_patch_dims;
+};
+
+
+// Eval as rvalue
+template<typename PatchDim, typename ArgType, typename Device>
+struct TensorEvaluator<const TensorPatchOp<PatchDim, ArgType>, Device>
+{
+  typedef TensorPatchOp<PatchDim, ArgType> XprType;
+  typedef typename XprType::Index Index;
+  static const int NumDims = internal::array_size<typename TensorEvaluator<ArgType, Device>::Dimensions>::value + 1;
+  typedef DSizes<Index, NumDims> Dimensions;
+  typedef typename XprType::Scalar Scalar;
+  typedef typename XprType::CoeffReturnType CoeffReturnType;
+  typedef typename PacketType<CoeffReturnType, Device>::type PacketReturnType;
+  static const int PacketSize = internal::unpacket_traits<PacketReturnType>::size;
+
+
+  enum {
+    IsAligned = false,
+    PacketAccess = TensorEvaluator<ArgType, Device>::PacketAccess,
+    Layout = TensorEvaluator<ArgType, Device>::Layout,
+    CoordAccess = false,
+    RawAccess = false
+ };
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorEvaluator(const XprType& op, const Device& device)
+      : m_impl(op.expression(), device)
+  {
+    Index num_patches = 1;
+    const typename TensorEvaluator<ArgType, Device>::Dimensions& input_dims = m_impl.dimensions();
+    const PatchDim& patch_dims = op.patch_dims();
+    if (static_cast<int>(Layout) == static_cast<int>(ColMajor)) {
+      for (int i = 0; i < NumDims-1; ++i) {
+        m_dimensions[i] = patch_dims[i];
+        num_patches *= (input_dims[i] - patch_dims[i] + 1);
+      }
+      m_dimensions[NumDims-1] = num_patches;
+
+      m_inputStrides[0] = 1;
+      m_patchStrides[0] = 1;
+      for (int i = 1; i < NumDims-1; ++i) {
+        m_inputStrides[i] = m_inputStrides[i-1] * input_dims[i-1];
+        m_patchStrides[i] = m_patchStrides[i-1] * (input_dims[i-1] - patch_dims[i-1] + 1);
+      }
+      m_outputStrides[0] = 1;
+      for (int i = 1; i < NumDims; ++i) {
+        m_outputStrides[i] = m_outputStrides[i-1] * m_dimensions[i-1];
+      }
+    } else {
+      for (int i = 0; i < NumDims-1; ++i) {
+        m_dimensions[i+1] = patch_dims[i];
+        num_patches *= (input_dims[i] - patch_dims[i] + 1);
+      }
+      m_dimensions[0] = num_patches;
+
+      m_inputStrides[NumDims-2] = 1;
+      m_patchStrides[NumDims-2] = 1;
+      for (int i = NumDims-3; i >= 0; --i) {
+        m_inputStrides[i] = m_inputStrides[i+1] * input_dims[i+1];
+        m_patchStrides[i] = m_patchStrides[i+1] * (input_dims[i+1] - patch_dims[i+1] + 1);
+      }
+      m_outputStrides[NumDims-1] = 1;
+      for (int i = NumDims-2; i >= 0; --i) {
+        m_outputStrides[i] = m_outputStrides[i+1] * m_dimensions[i+1];
+      }
+    }
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Dimensions& dimensions() const { return m_dimensions; }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool evalSubExprsIfNeeded(Scalar* /*data*/) {
+    m_impl.evalSubExprsIfNeeded(NULL);
+    return true;
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void cleanup() {
+    m_impl.cleanup();
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType coeff(Index index) const
+  {
+    Index output_stride_index = (static_cast<int>(Layout) == static_cast<int>(ColMajor)) ? NumDims - 1 : 0;
+    // Find the location of the first element of the patch.
+    Index patchIndex = index / m_outputStrides[output_stride_index];
+    // Find the offset of the element wrt the location of the first element.
+    Index patchOffset = index - patchIndex * m_outputStrides[output_stride_index];
+    Index inputIndex = 0;
+    if (static_cast<int>(Layout) == static_cast<int>(ColMajor)) {
+      for (int i = NumDims - 2; i > 0; --i) {
+        const Index patchIdx = patchIndex / m_patchStrides[i];
+        patchIndex -= patchIdx * m_patchStrides[i];
+        const Index offsetIdx = patchOffset / m_outputStrides[i];
+        patchOffset -= offsetIdx * m_outputStrides[i];
+        inputIndex += (patchIdx + offsetIdx) * m_inputStrides[i];
+      }
+    } else {
+      for (int i = 0; i < NumDims - 2; ++i) {
+        const Index patchIdx = patchIndex / m_patchStrides[i];
+        patchIndex -= patchIdx * m_patchStrides[i];
+        const Index offsetIdx = patchOffset / m_outputStrides[i+1];
+        patchOffset -= offsetIdx * m_outputStrides[i+1];
+        inputIndex += (patchIdx + offsetIdx) * m_inputStrides[i];
+      }
+    }
+    inputIndex += (patchIndex + patchOffset);
+    return m_impl.coeff(inputIndex);
+  }
+
+  template<int LoadMode>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketReturnType packet(Index index) const
+  {
+    EIGEN_STATIC_ASSERT((PacketSize > 1), YOU_MADE_A_PROGRAMMING_MISTAKE)
+    eigen_assert(index+PacketSize-1 < dimensions().TotalSize());
+
+    Index output_stride_index = (static_cast<int>(Layout) == static_cast<int>(ColMajor)) ? NumDims - 1 : 0;
+    Index indices[2] = {index, index + PacketSize - 1};
+    Index patchIndices[2] = {indices[0] / m_outputStrides[output_stride_index],
+                             indices[1] / m_outputStrides[output_stride_index]};
+    Index patchOffsets[2] = {indices[0] - patchIndices[0] * m_outputStrides[output_stride_index],
+                             indices[1] - patchIndices[1] * m_outputStrides[output_stride_index]};
+
+    Index inputIndices[2] = {0, 0};
+    if (static_cast<int>(Layout) == static_cast<int>(ColMajor)) {
+      for (int i = NumDims - 2; i > 0; --i) {
+        const Index patchIdx[2] = {patchIndices[0] / m_patchStrides[i],
+                                   patchIndices[1] / m_patchStrides[i]};
+        patchIndices[0] -= patchIdx[0] * m_patchStrides[i];
+        patchIndices[1] -= patchIdx[1] * m_patchStrides[i];
+
+        const Index offsetIdx[2] = {patchOffsets[0] / m_outputStrides[i],
+                                    patchOffsets[1] / m_outputStrides[i]};
+        patchOffsets[0] -= offsetIdx[0] * m_outputStrides[i];
+        patchOffsets[1] -= offsetIdx[1] * m_outputStrides[i];
+
+        inputIndices[0] += (patchIdx[0] + offsetIdx[0]) * m_inputStrides[i];
+        inputIndices[1] += (patchIdx[1] + offsetIdx[1]) * m_inputStrides[i];
+      }
+    } else {
+      for (int i = 0; i < NumDims - 2; ++i) {
+        const Index patchIdx[2] = {patchIndices[0] / m_patchStrides[i],
+                                   patchIndices[1] / m_patchStrides[i]};
+        patchIndices[0] -= patchIdx[0] * m_patchStrides[i];
+        patchIndices[1] -= patchIdx[1] * m_patchStrides[i];
+
+        const Index offsetIdx[2] = {patchOffsets[0] / m_outputStrides[i+1],
+                                    patchOffsets[1] / m_outputStrides[i+1]};
+        patchOffsets[0] -= offsetIdx[0] * m_outputStrides[i+1];
+        patchOffsets[1] -= offsetIdx[1] * m_outputStrides[i+1];
+
+        inputIndices[0] += (patchIdx[0] + offsetIdx[0]) * m_inputStrides[i];
+        inputIndices[1] += (patchIdx[1] + offsetIdx[1]) * m_inputStrides[i];
+      }
+    }
+    inputIndices[0] += (patchIndices[0] + patchOffsets[0]);
+    inputIndices[1] += (patchIndices[1] + patchOffsets[1]);
+
+    if (inputIndices[1] - inputIndices[0] == PacketSize - 1) {
+      PacketReturnType rslt = m_impl.template packet<Unaligned>(inputIndices[0]);
+      return rslt;
+    }
+    else {
+      EIGEN_ALIGN_MAX CoeffReturnType values[PacketSize];
+      values[0] = m_impl.coeff(inputIndices[0]);
+      values[PacketSize-1] = m_impl.coeff(inputIndices[1]);
+      for (int i = 1; i < PacketSize-1; ++i) {
+        values[i] = coeff(index+i);
+      }
+      PacketReturnType rslt = internal::pload<PacketReturnType>(values);
+      return rslt;
+    }
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorOpCost costPerCoeff(bool vectorized) const {
+    const double compute_cost = NumDims * (TensorOpCost::DivCost<Index>() +
+                                           TensorOpCost::MulCost<Index>() +
+                                           2 * TensorOpCost::AddCost<Index>());
+    return m_impl.costPerCoeff(vectorized) +
+           TensorOpCost(0, 0, compute_cost, vectorized, PacketSize);
+  }
+
+  EIGEN_DEVICE_FUNC Scalar* data() const { return NULL; }
+
+ protected:
+  Dimensions m_dimensions;
+  array<Index, NumDims> m_outputStrides;
+  array<Index, NumDims-1> m_inputStrides;
+  array<Index, NumDims-1> m_patchStrides;
+
+  TensorEvaluator<ArgType, Device> m_impl;
+};
+
+} // end namespace Eigen
+
+#endif // EIGEN_CXX11_TENSOR_TENSOR_PATCH_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorEvaluator.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorEvaluator.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorEvaluator.h	(revision 3762)
@@ -0,0 +1,633 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2014 Benoit Steiner <benoit.steiner.goog@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CXX11_TENSOR_TENSOR_EVALUATOR_H
+#define EIGEN_CXX11_TENSOR_TENSOR_EVALUATOR_H
+
+namespace Eigen {
+
+/** \class TensorEvaluator
+  * \ingroup CXX11_Tensor_Module
+  *
+  * \brief The tensor evaluator classes.
+  *
+  * These classes are responsible for the evaluation of the tensor expression.
+  *
+  * TODO: add support for more types of expressions, in particular expressions
+  * leading to lvalues (slicing, reshaping, etc...)
+  */
+
+// Generic evaluator
+template<typename Derived, typename Device>
+struct TensorEvaluator
+{
+  typedef typename Derived::Index Index;
+  typedef typename Derived::Scalar Scalar;
+  typedef typename Derived::Scalar CoeffReturnType;
+  typedef typename PacketType<CoeffReturnType, Device>::type PacketReturnType;
+  typedef typename Derived::Dimensions Dimensions;
+
+  // NumDimensions is -1 for variable dim tensors
+  static const int NumCoords = internal::traits<Derived>::NumDimensions > 0 ?
+                               internal::traits<Derived>::NumDimensions : 0;
+
+  enum {
+    IsAligned = Derived::IsAligned,
+    PacketAccess = (internal::unpacket_traits<PacketReturnType>::size > 1),
+    Layout = Derived::Layout,
+    CoordAccess = NumCoords > 0,
+    RawAccess = true
+  };
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorEvaluator(const Derived& m, const Device& device)
+      : m_data(const_cast<typename internal::traits<Derived>::template MakePointer<Scalar>::Type>(m.data())), m_dims(m.dimensions()), m_device(device), m_impl(m)
+  { }
+
+  // Used for accessor extraction in SYCL Managed TensorMap:
+  const Derived& derived() const { return m_impl; }
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Dimensions& dimensions() const { return m_dims; }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool evalSubExprsIfNeeded(CoeffReturnType* dest) {
+    if (dest) {
+      m_device.memcpy((void*)dest, m_data, sizeof(Scalar) * m_dims.TotalSize());
+      return false;
+    }
+    return true;
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void cleanup() { }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType coeff(Index index) const {
+    eigen_assert(m_data);
+    return m_data[index];
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar& coeffRef(Index index) {
+    eigen_assert(m_data);
+    return m_data[index];
+  }
+
+  template<int LoadMode> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  PacketReturnType packet(Index index) const
+  {
+    return internal::ploadt<PacketReturnType, LoadMode>(m_data + index);
+  }
+
+  template <int StoreMode> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  void writePacket(Index index, const PacketReturnType& x)
+  {
+    return internal::pstoret<Scalar, PacketReturnType, StoreMode>(m_data + index, x);
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType coeff(const array<DenseIndex, NumCoords>& coords) const {
+    eigen_assert(m_data);
+    if (static_cast<int>(Layout) == static_cast<int>(ColMajor)) {
+      return m_data[m_dims.IndexOfColMajor(coords)];
+    } else {
+      return m_data[m_dims.IndexOfRowMajor(coords)];
+    }
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar& coeffRef(const array<DenseIndex, NumCoords>& coords) {
+    eigen_assert(m_data);
+    if (static_cast<int>(Layout) == static_cast<int>(ColMajor)) {
+      return m_data[m_dims.IndexOfColMajor(coords)];
+    } else {
+      return m_data[m_dims.IndexOfRowMajor(coords)];
+    }
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorOpCost costPerCoeff(bool vectorized) const {
+    return TensorOpCost(sizeof(CoeffReturnType), 0, 0, vectorized,
+                        internal::unpacket_traits<PacketReturnType>::size);
+  }
+
+  EIGEN_DEVICE_FUNC typename internal::traits<Derived>::template MakePointer<Scalar>::Type data() const { return m_data; }
+
+  /// required by sycl in order to construct sycl buffer from raw pointer
+  const Device& device() const{return m_device;}
+
+ protected:
+  typename internal::traits<Derived>::template MakePointer<Scalar>::Type m_data;
+  Dimensions m_dims;
+  const Device& m_device;
+  const Derived& m_impl;
+};
+
+namespace {
+template <typename T> EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+T loadConstant(const T* address) {
+  return *address;
+}
+// Use the texture cache on CUDA devices whenever possible
+#if defined(__CUDA_ARCH__) && __CUDA_ARCH__ >= 350
+template <> EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+float loadConstant(const float* address) {
+  return __ldg(address);
+}
+template <> EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+double loadConstant(const double* address) {
+  return __ldg(address);
+}
+template <> EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+Eigen::half loadConstant(const Eigen::half* address) {
+  return Eigen::half(half_impl::raw_uint16_to_half(__ldg(&address->x)));
+}
+#endif
+}
+
+
+// Default evaluator for rvalues
+template<typename Derived, typename Device>
+struct TensorEvaluator<const Derived, Device>
+{
+  typedef typename Derived::Index Index;
+  typedef typename Derived::Scalar Scalar;
+  typedef typename Derived::Scalar CoeffReturnType;
+  typedef typename PacketType<CoeffReturnType, Device>::type PacketReturnType;
+  typedef typename Derived::Dimensions Dimensions;
+
+  // NumDimensions is -1 for variable dim tensors
+  static const int NumCoords = internal::traits<Derived>::NumDimensions > 0 ?
+                               internal::traits<Derived>::NumDimensions : 0;
+
+  enum {
+    IsAligned = Derived::IsAligned,
+    PacketAccess = (internal::unpacket_traits<PacketReturnType>::size > 1),
+    Layout = Derived::Layout,
+    CoordAccess = NumCoords > 0,
+    RawAccess = true
+  };
+
+  // Used for accessor extraction in SYCL Managed TensorMap:
+  const Derived& derived() const { return m_impl; }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorEvaluator(const Derived& m, const Device& device)
+      : m_data(m.data()), m_dims(m.dimensions()), m_device(device), m_impl(m)
+  { }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Dimensions& dimensions() const { return m_dims; }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool evalSubExprsIfNeeded(CoeffReturnType* data) {
+    if (!NumTraits<typename internal::remove_const<Scalar>::type>::RequireInitialization && data) {
+      m_device.memcpy((void*)data, m_data, m_dims.TotalSize() * sizeof(Scalar));
+      return false;
+    }
+    return true;
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void cleanup() { }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType coeff(Index index) const {
+    eigen_assert(m_data);
+    return loadConstant(m_data+index);
+  }
+
+  template<int LoadMode> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  PacketReturnType packet(Index index) const
+  {
+    return internal::ploadt_ro<PacketReturnType, LoadMode>(m_data + index);
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType coeff(const array<DenseIndex, NumCoords>& coords) const {
+    eigen_assert(m_data);
+    const Index index = (static_cast<int>(Layout) == static_cast<int>(ColMajor)) ? m_dims.IndexOfColMajor(coords)
+                        : m_dims.IndexOfRowMajor(coords);
+    return loadConstant(m_data+index);
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorOpCost costPerCoeff(bool vectorized) const {
+    return TensorOpCost(sizeof(CoeffReturnType), 0, 0, vectorized,
+                        internal::unpacket_traits<PacketReturnType>::size);
+  }
+
+  EIGEN_DEVICE_FUNC typename internal::traits<Derived>::template MakePointer<const Scalar>::Type data() const { return m_data; }
+
+  /// added for sycl in order to construct the buffer from the sycl device
+  const Device& device() const{return m_device;}
+
+ protected:
+  typename internal::traits<Derived>::template MakePointer<const Scalar>::Type m_data;
+  Dimensions m_dims;
+  const Device& m_device;
+  const Derived& m_impl;
+};
+
+
+
+
+// -------------------- CwiseNullaryOp --------------------
+
+template<typename NullaryOp, typename ArgType, typename Device>
+struct TensorEvaluator<const TensorCwiseNullaryOp<NullaryOp, ArgType>, Device>
+{
+  typedef TensorCwiseNullaryOp<NullaryOp, ArgType> XprType;
+
+  enum {
+    IsAligned = true,
+    PacketAccess = internal::functor_traits<NullaryOp>::PacketAccess,
+    Layout = TensorEvaluator<ArgType, Device>::Layout,
+    CoordAccess = false,  // to be implemented
+    RawAccess = false
+  };
+
+  EIGEN_DEVICE_FUNC
+  TensorEvaluator(const XprType& op, const Device& device)
+      : m_functor(op.functor()), m_argImpl(op.nestedExpression(), device), m_wrapper()
+  { }
+
+  typedef typename XprType::Index Index;
+  typedef typename XprType::Scalar Scalar;
+  typedef typename internal::traits<XprType>::Scalar CoeffReturnType;
+  typedef typename PacketType<CoeffReturnType, Device>::type PacketReturnType;
+  static const int PacketSize = internal::unpacket_traits<PacketReturnType>::size;
+  typedef typename TensorEvaluator<ArgType, Device>::Dimensions Dimensions;
+
+  EIGEN_DEVICE_FUNC const Dimensions& dimensions() const { return m_argImpl.dimensions(); }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool evalSubExprsIfNeeded(CoeffReturnType*) { return true; }
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void cleanup() { }
+
+  EIGEN_DEVICE_FUNC CoeffReturnType coeff(Index index) const
+  {
+    return m_wrapper(m_functor, index);
+  }
+
+  template<int LoadMode>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketReturnType packet(Index index) const
+  {
+    return m_wrapper.template packetOp<PacketReturnType, Index>(m_functor, index);
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorOpCost
+  costPerCoeff(bool vectorized) const {
+    return TensorOpCost(sizeof(CoeffReturnType), 0, 0, vectorized,
+                        internal::unpacket_traits<PacketReturnType>::size);
+  }
+
+  EIGEN_DEVICE_FUNC CoeffReturnType* data() const { return NULL; }
+
+  /// required by sycl in order to extract the accessor
+  const TensorEvaluator<ArgType, Device>& impl() const { return m_argImpl; }
+  /// required by sycl in order to extract the accessor
+  NullaryOp functor() const { return m_functor; }
+
+
+ private:
+  const NullaryOp m_functor;
+  TensorEvaluator<ArgType, Device> m_argImpl;
+  const internal::nullary_wrapper<CoeffReturnType,NullaryOp> m_wrapper;
+};
+
+
+
+// -------------------- CwiseUnaryOp --------------------
+
+template<typename UnaryOp, typename ArgType, typename Device>
+struct TensorEvaluator<const TensorCwiseUnaryOp<UnaryOp, ArgType>, Device>
+{
+  typedef TensorCwiseUnaryOp<UnaryOp, ArgType> XprType;
+
+  enum {
+    IsAligned = TensorEvaluator<ArgType, Device>::IsAligned,
+    PacketAccess = TensorEvaluator<ArgType, Device>::PacketAccess & internal::functor_traits<UnaryOp>::PacketAccess,
+    Layout = TensorEvaluator<ArgType, Device>::Layout,
+    CoordAccess = false,  // to be implemented
+    RawAccess = false
+  };
+
+  EIGEN_DEVICE_FUNC TensorEvaluator(const XprType& op, const Device& device)
+    : m_functor(op.functor()),
+      m_argImpl(op.nestedExpression(), device)
+  { }
+
+  typedef typename XprType::Index Index;
+  typedef typename XprType::Scalar Scalar;
+  typedef typename internal::traits<XprType>::Scalar CoeffReturnType;
+  typedef typename PacketType<CoeffReturnType, Device>::type PacketReturnType;
+  static const int PacketSize = internal::unpacket_traits<PacketReturnType>::size;
+  typedef typename TensorEvaluator<ArgType, Device>::Dimensions Dimensions;
+
+  EIGEN_DEVICE_FUNC const Dimensions& dimensions() const { return m_argImpl.dimensions(); }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool evalSubExprsIfNeeded(Scalar*) {
+    m_argImpl.evalSubExprsIfNeeded(NULL);
+    return true;
+  }
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void cleanup() {
+    m_argImpl.cleanup();
+  }
+
+  EIGEN_DEVICE_FUNC CoeffReturnType coeff(Index index) const
+  {
+    return m_functor(m_argImpl.coeff(index));
+  }
+
+  template<int LoadMode>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketReturnType packet(Index index) const
+  {
+    return m_functor.packetOp(m_argImpl.template packet<LoadMode>(index));
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorOpCost costPerCoeff(bool vectorized) const {
+    const double functor_cost = internal::functor_traits<UnaryOp>::Cost;
+    return m_argImpl.costPerCoeff(vectorized) +
+        TensorOpCost(0, 0, functor_cost, vectorized, PacketSize);
+  }
+
+  EIGEN_DEVICE_FUNC CoeffReturnType* data() const { return NULL; }
+
+  /// required by sycl in order to extract the accessor
+  const TensorEvaluator<ArgType, Device> & impl() const { return m_argImpl; }
+  /// added for sycl in order to construct the buffer from sycl device
+  UnaryOp functor() const { return m_functor; }
+
+
+ private:
+  const UnaryOp m_functor;
+  TensorEvaluator<ArgType, Device> m_argImpl;
+};
+
+
+// -------------------- CwiseBinaryOp --------------------
+
+template<typename BinaryOp, typename LeftArgType, typename RightArgType, typename Device>
+struct TensorEvaluator<const TensorCwiseBinaryOp<BinaryOp, LeftArgType, RightArgType>, Device>
+{
+  typedef TensorCwiseBinaryOp<BinaryOp, LeftArgType, RightArgType> XprType;
+
+  enum {
+    IsAligned = TensorEvaluator<LeftArgType, Device>::IsAligned & TensorEvaluator<RightArgType, Device>::IsAligned,
+    PacketAccess = TensorEvaluator<LeftArgType, Device>::PacketAccess & TensorEvaluator<RightArgType, Device>::PacketAccess &
+                   internal::functor_traits<BinaryOp>::PacketAccess,
+    Layout = TensorEvaluator<LeftArgType, Device>::Layout,
+    CoordAccess = false,  // to be implemented
+    RawAccess = false
+  };
+
+  EIGEN_DEVICE_FUNC TensorEvaluator(const XprType& op, const Device& device)
+    : m_functor(op.functor()),
+      m_leftImpl(op.lhsExpression(), device),
+      m_rightImpl(op.rhsExpression(), device)
+  {
+    EIGEN_STATIC_ASSERT((static_cast<int>(TensorEvaluator<LeftArgType, Device>::Layout) == static_cast<int>(TensorEvaluator<RightArgType, Device>::Layout) || internal::traits<XprType>::NumDimensions <= 1), YOU_MADE_A_PROGRAMMING_MISTAKE);
+    eigen_assert(dimensions_match(m_leftImpl.dimensions(), m_rightImpl.dimensions()));
+  }
+
+  typedef typename XprType::Index Index;
+  typedef typename XprType::Scalar Scalar;
+  typedef typename internal::traits<XprType>::Scalar CoeffReturnType;
+  typedef typename PacketType<CoeffReturnType, Device>::type PacketReturnType;
+  static const int PacketSize = internal::unpacket_traits<PacketReturnType>::size;
+  typedef typename TensorEvaluator<LeftArgType, Device>::Dimensions Dimensions;
+
+  EIGEN_DEVICE_FUNC const Dimensions& dimensions() const
+  {
+    // TODO: use right impl instead if right impl dimensions are known at compile time.
+    return m_leftImpl.dimensions();
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool evalSubExprsIfNeeded(CoeffReturnType*) {
+    m_leftImpl.evalSubExprsIfNeeded(NULL);
+    m_rightImpl.evalSubExprsIfNeeded(NULL);
+    return true;
+  }
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void cleanup() {
+    m_leftImpl.cleanup();
+    m_rightImpl.cleanup();
+  }
+
+  EIGEN_DEVICE_FUNC CoeffReturnType coeff(Index index) const
+  {
+    return m_functor(m_leftImpl.coeff(index), m_rightImpl.coeff(index));
+  }
+  template<int LoadMode>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketReturnType packet(Index index) const
+  {
+    return m_functor.packetOp(m_leftImpl.template packet<LoadMode>(index), m_rightImpl.template packet<LoadMode>(index));
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorOpCost
+  costPerCoeff(bool vectorized) const {
+    const double functor_cost = internal::functor_traits<BinaryOp>::Cost;
+    return m_leftImpl.costPerCoeff(vectorized) +
+           m_rightImpl.costPerCoeff(vectorized) +
+           TensorOpCost(0, 0, functor_cost, vectorized, PacketSize);
+  }
+
+  EIGEN_DEVICE_FUNC CoeffReturnType* data() const { return NULL; }
+  /// required by sycl in order to extract the accessor
+  const TensorEvaluator<LeftArgType, Device>& left_impl() const { return m_leftImpl; }
+  /// required by sycl in order to extract the accessor
+  const TensorEvaluator<RightArgType, Device>& right_impl() const { return m_rightImpl; }
+  /// required by sycl in order to extract the accessor
+  BinaryOp functor() const { return m_functor; }
+
+ private:
+  const BinaryOp m_functor;
+  TensorEvaluator<LeftArgType, Device> m_leftImpl;
+  TensorEvaluator<RightArgType, Device> m_rightImpl;
+};
+
+// -------------------- CwiseTernaryOp --------------------
+
+template<typename TernaryOp, typename Arg1Type, typename Arg2Type, typename Arg3Type, typename Device>
+struct TensorEvaluator<const TensorCwiseTernaryOp<TernaryOp, Arg1Type, Arg2Type, Arg3Type>, Device>
+{
+  typedef TensorCwiseTernaryOp<TernaryOp, Arg1Type, Arg2Type, Arg3Type> XprType;
+
+  enum {
+    IsAligned = TensorEvaluator<Arg1Type, Device>::IsAligned & TensorEvaluator<Arg2Type, Device>::IsAligned & TensorEvaluator<Arg3Type, Device>::IsAligned,
+    PacketAccess = TensorEvaluator<Arg1Type, Device>::PacketAccess & TensorEvaluator<Arg2Type, Device>::PacketAccess & TensorEvaluator<Arg3Type, Device>::PacketAccess &
+                   internal::functor_traits<TernaryOp>::PacketAccess,
+    Layout = TensorEvaluator<Arg1Type, Device>::Layout,
+    CoordAccess = false,  // to be implemented
+    RawAccess = false
+  };
+
+  EIGEN_DEVICE_FUNC TensorEvaluator(const XprType& op, const Device& device)
+    : m_functor(op.functor()),
+      m_arg1Impl(op.arg1Expression(), device),
+      m_arg2Impl(op.arg2Expression(), device),
+      m_arg3Impl(op.arg3Expression(), device)
+  {
+    EIGEN_STATIC_ASSERT((static_cast<int>(TensorEvaluator<Arg1Type, Device>::Layout) == static_cast<int>(TensorEvaluator<Arg3Type, Device>::Layout) || internal::traits<XprType>::NumDimensions <= 1), YOU_MADE_A_PROGRAMMING_MISTAKE);
+
+    EIGEN_STATIC_ASSERT((internal::is_same<typename internal::traits<Arg1Type>::StorageKind,
+                         typename internal::traits<Arg2Type>::StorageKind>::value),
+                        STORAGE_KIND_MUST_MATCH)
+    EIGEN_STATIC_ASSERT((internal::is_same<typename internal::traits<Arg1Type>::StorageKind,
+                         typename internal::traits<Arg3Type>::StorageKind>::value),
+                        STORAGE_KIND_MUST_MATCH)
+    EIGEN_STATIC_ASSERT((internal::is_same<typename internal::traits<Arg1Type>::Index,
+                         typename internal::traits<Arg2Type>::Index>::value),
+                        STORAGE_INDEX_MUST_MATCH)
+    EIGEN_STATIC_ASSERT((internal::is_same<typename internal::traits<Arg1Type>::Index,
+                         typename internal::traits<Arg3Type>::Index>::value),
+                        STORAGE_INDEX_MUST_MATCH)
+
+    eigen_assert(dimensions_match(m_arg1Impl.dimensions(), m_arg2Impl.dimensions()) && dimensions_match(m_arg1Impl.dimensions(), m_arg3Impl.dimensions()));
+  }
+
+  typedef typename XprType::Index Index;
+  typedef typename XprType::Scalar Scalar;
+  typedef typename internal::traits<XprType>::Scalar CoeffReturnType;
+  typedef typename PacketType<CoeffReturnType, Device>::type PacketReturnType;
+  static const int PacketSize = internal::unpacket_traits<PacketReturnType>::size;
+  typedef typename TensorEvaluator<Arg1Type, Device>::Dimensions Dimensions;
+
+  EIGEN_DEVICE_FUNC const Dimensions& dimensions() const
+  {
+    // TODO: use arg2 or arg3 dimensions if they are known at compile time.
+    return m_arg1Impl.dimensions();
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool evalSubExprsIfNeeded(CoeffReturnType*) {
+    m_arg1Impl.evalSubExprsIfNeeded(NULL);
+    m_arg2Impl.evalSubExprsIfNeeded(NULL);
+    m_arg3Impl.evalSubExprsIfNeeded(NULL);
+    return true;
+  }
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void cleanup() {
+    m_arg1Impl.cleanup();
+    m_arg2Impl.cleanup();
+    m_arg3Impl.cleanup();
+  }
+
+  EIGEN_DEVICE_FUNC CoeffReturnType coeff(Index index) const
+  {
+    return m_functor(m_arg1Impl.coeff(index), m_arg2Impl.coeff(index), m_arg3Impl.coeff(index));
+  }
+  template<int LoadMode>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketReturnType packet(Index index) const
+  {
+    return m_functor.packetOp(m_arg1Impl.template packet<LoadMode>(index),
+                              m_arg2Impl.template packet<LoadMode>(index),
+                              m_arg3Impl.template packet<LoadMode>(index));
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorOpCost
+  costPerCoeff(bool vectorized) const {
+    const double functor_cost = internal::functor_traits<TernaryOp>::Cost;
+    return m_arg1Impl.costPerCoeff(vectorized) +
+           m_arg2Impl.costPerCoeff(vectorized) +
+           m_arg3Impl.costPerCoeff(vectorized) +
+           TensorOpCost(0, 0, functor_cost, vectorized, PacketSize);
+  }
+
+  EIGEN_DEVICE_FUNC CoeffReturnType* data() const { return NULL; }
+
+  /// required by sycl in order to extract the accessor
+  const TensorEvaluator<Arg1Type, Device> & arg1Impl() const { return m_arg1Impl; }
+  /// required by sycl in order to extract the accessor
+  const TensorEvaluator<Arg2Type, Device>& arg2Impl() const { return m_arg2Impl; }
+  /// required by sycl in order to extract the accessor
+  const TensorEvaluator<Arg3Type, Device>& arg3Impl() const { return m_arg3Impl; }
+
+ private:
+  const TernaryOp m_functor;
+  TensorEvaluator<Arg1Type, Device> m_arg1Impl;
+  TensorEvaluator<Arg2Type, Device> m_arg2Impl;
+  TensorEvaluator<Arg3Type, Device> m_arg3Impl;
+};
+
+
+// -------------------- SelectOp --------------------
+
+template<typename IfArgType, typename ThenArgType, typename ElseArgType, typename Device>
+struct TensorEvaluator<const TensorSelectOp<IfArgType, ThenArgType, ElseArgType>, Device>
+{
+  typedef TensorSelectOp<IfArgType, ThenArgType, ElseArgType> XprType;
+  typedef typename XprType::Scalar Scalar;
+
+  enum {
+    IsAligned = TensorEvaluator<ThenArgType, Device>::IsAligned & TensorEvaluator<ElseArgType, Device>::IsAligned,
+    PacketAccess = TensorEvaluator<ThenArgType, Device>::PacketAccess & TensorEvaluator<ElseArgType, Device>::PacketAccess &
+                   internal::packet_traits<Scalar>::HasBlend,
+    Layout = TensorEvaluator<IfArgType, Device>::Layout,
+    CoordAccess = false,  // to be implemented
+    RawAccess = false
+  };
+
+  EIGEN_DEVICE_FUNC TensorEvaluator(const XprType& op, const Device& device)
+    : m_condImpl(op.ifExpression(), device),
+      m_thenImpl(op.thenExpression(), device),
+      m_elseImpl(op.elseExpression(), device)
+  {
+    EIGEN_STATIC_ASSERT((static_cast<int>(TensorEvaluator<IfArgType, Device>::Layout) == static_cast<int>(TensorEvaluator<ThenArgType, Device>::Layout)), YOU_MADE_A_PROGRAMMING_MISTAKE);
+    EIGEN_STATIC_ASSERT((static_cast<int>(TensorEvaluator<IfArgType, Device>::Layout) == static_cast<int>(TensorEvaluator<ElseArgType, Device>::Layout)), YOU_MADE_A_PROGRAMMING_MISTAKE);
+    eigen_assert(dimensions_match(m_condImpl.dimensions(), m_thenImpl.dimensions()));
+    eigen_assert(dimensions_match(m_thenImpl.dimensions(), m_elseImpl.dimensions()));
+  }
+
+  typedef typename XprType::Index Index;
+  typedef typename internal::traits<XprType>::Scalar CoeffReturnType;
+  typedef typename PacketType<CoeffReturnType, Device>::type PacketReturnType;
+  static const int PacketSize = internal::unpacket_traits<PacketReturnType>::size;
+  typedef typename TensorEvaluator<IfArgType, Device>::Dimensions Dimensions;
+
+  EIGEN_DEVICE_FUNC const Dimensions& dimensions() const
+  {
+    // TODO: use then or else impl instead if they happen to be known at compile time.
+    return m_condImpl.dimensions();
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool evalSubExprsIfNeeded(CoeffReturnType*) {
+    m_condImpl.evalSubExprsIfNeeded(NULL);
+    m_thenImpl.evalSubExprsIfNeeded(NULL);
+    m_elseImpl.evalSubExprsIfNeeded(NULL);
+    return true;
+  }
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void cleanup() {
+    m_condImpl.cleanup();
+    m_thenImpl.cleanup();
+    m_elseImpl.cleanup();
+  }
+
+  EIGEN_DEVICE_FUNC CoeffReturnType coeff(Index index) const
+  {
+    return m_condImpl.coeff(index) ? m_thenImpl.coeff(index) : m_elseImpl.coeff(index);
+  }
+  template<int LoadMode>
+  EIGEN_DEVICE_FUNC PacketReturnType packet(Index index) const
+  {
+    internal::Selector<PacketSize> select;
+    for (Index i = 0; i < PacketSize; ++i) {
+      select.select[i] = m_condImpl.coeff(index+i);
+    }
+    return internal::pblend(select,
+                            m_thenImpl.template packet<LoadMode>(index),
+                            m_elseImpl.template packet<LoadMode>(index));
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorOpCost
+  costPerCoeff(bool vectorized) const {
+    return m_condImpl.costPerCoeff(vectorized) +
+           m_thenImpl.costPerCoeff(vectorized)
+        .cwiseMax(m_elseImpl.costPerCoeff(vectorized));
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType* data() const { return NULL; }
+  /// required by sycl in order to extract the accessor
+  const TensorEvaluator<IfArgType, Device> & cond_impl() const { return m_condImpl; }
+  /// required by sycl in order to extract the accessor
+  const TensorEvaluator<ThenArgType, Device>& then_impl() const { return m_thenImpl; }
+  /// required by sycl in order to extract the accessor
+  const TensorEvaluator<ElseArgType, Device>& else_impl() const { return m_elseImpl; }
+
+ private:
+  TensorEvaluator<IfArgType, Device> m_condImpl;
+  TensorEvaluator<ThenArgType, Device> m_thenImpl;
+  TensorEvaluator<ElseArgType, Device> m_elseImpl;
+};
+
+
+} // end namespace Eigen
+
+#endif // EIGEN_CXX11_TENSOR_TENSOR_EVALUATOR_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorLayoutSwap.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorLayoutSwap.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorLayoutSwap.h	(revision 3762)
@@ -0,0 +1,209 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2014 Benoit Steiner <benoit.steiner.goog@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CXX11_TENSOR_TENSOR_LAYOUT_SWAP_H
+#define EIGEN_CXX11_TENSOR_TENSOR_LAYOUT_SWAP_H
+
+namespace Eigen {
+
+/** \class TensorLayoutSwap
+  * \ingroup CXX11_Tensor_Module
+  *
+  * \brief Swap the layout from col-major to row-major, or row-major
+  * to col-major, and invert the order of the dimensions.
+  *
+  * Beware: the dimensions are reversed by this operation. If you want to
+  * preserve the ordering of the dimensions, you need to combine this
+  * operation with a shuffle.
+  *
+  * \example:
+  * Tensor<float, 2, ColMajor> input(2, 4);
+  * Tensor<float, 2, RowMajor> output = input.swap_layout();
+  * eigen_assert(output.dimension(0) == 4);
+  * eigen_assert(output.dimension(1) == 2);
+  *
+  * array<int, 2> shuffle(1, 0);
+  * output = input.swap_layout().shuffle(shuffle);
+  * eigen_assert(output.dimension(0) == 2);
+  * eigen_assert(output.dimension(1) == 4);
+  *
+  */
+namespace internal {
+template<typename XprType>
+struct traits<TensorLayoutSwapOp<XprType> > : public traits<XprType>
+{
+  typedef typename XprType::Scalar Scalar;
+  typedef traits<XprType> XprTraits;
+  typedef typename XprTraits::StorageKind StorageKind;
+  typedef typename XprTraits::Index Index;
+  typedef typename XprType::Nested Nested;
+  typedef typename remove_reference<Nested>::type _Nested;
+  static const int NumDimensions = traits<XprType>::NumDimensions;
+  static const int Layout = (traits<XprType>::Layout == ColMajor) ? RowMajor : ColMajor;
+};
+
+template<typename XprType>
+struct eval<TensorLayoutSwapOp<XprType>, Eigen::Dense>
+{
+  typedef const TensorLayoutSwapOp<XprType>& type;
+};
+
+template<typename XprType>
+struct nested<TensorLayoutSwapOp<XprType>, 1, typename eval<TensorLayoutSwapOp<XprType> >::type>
+{
+  typedef TensorLayoutSwapOp<XprType> type;
+};
+
+}  // end namespace internal
+
+
+
+template<typename XprType>
+class TensorLayoutSwapOp : public TensorBase<TensorLayoutSwapOp<XprType>, WriteAccessors>
+{
+  public:
+  typedef typename Eigen::internal::traits<TensorLayoutSwapOp>::Scalar Scalar;
+  typedef typename Eigen::NumTraits<Scalar>::Real RealScalar;
+  typedef typename internal::remove_const<typename XprType::CoeffReturnType>::type CoeffReturnType;
+  typedef typename Eigen::internal::nested<TensorLayoutSwapOp>::type Nested;
+  typedef typename Eigen::internal::traits<TensorLayoutSwapOp>::StorageKind StorageKind;
+  typedef typename Eigen::internal::traits<TensorLayoutSwapOp>::Index Index;
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorLayoutSwapOp(const XprType& expr)
+      : m_xpr(expr) {}
+
+    EIGEN_DEVICE_FUNC
+    const typename internal::remove_all<typename XprType::Nested>::type&
+    expression() const { return m_xpr; }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE TensorLayoutSwapOp& operator = (const TensorLayoutSwapOp& other)
+    {
+      typedef TensorAssignOp<TensorLayoutSwapOp, const TensorLayoutSwapOp> Assign;
+      Assign assign(*this, other);
+      internal::TensorExecutor<const Assign, DefaultDevice>::run(assign, DefaultDevice());
+      return *this;
+    }
+
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE TensorLayoutSwapOp& operator = (const OtherDerived& other)
+    {
+      typedef TensorAssignOp<TensorLayoutSwapOp, const OtherDerived> Assign;
+      Assign assign(*this, other);
+      internal::TensorExecutor<const Assign, DefaultDevice>::run(assign, DefaultDevice());
+      return *this;
+    }
+
+  protected:
+    typename XprType::Nested m_xpr;
+};
+
+
+// Eval as rvalue
+template<typename ArgType, typename Device>
+struct TensorEvaluator<const TensorLayoutSwapOp<ArgType>, Device>
+{
+  typedef TensorLayoutSwapOp<ArgType> XprType;
+  typedef typename XprType::Index Index;
+  static const int NumDims = internal::array_size<typename TensorEvaluator<ArgType, Device>::Dimensions>::value;
+  typedef DSizes<Index, NumDims> Dimensions;
+
+  enum {
+    IsAligned = TensorEvaluator<ArgType, Device>::IsAligned,
+    PacketAccess = TensorEvaluator<ArgType, Device>::PacketAccess,
+    Layout = (static_cast<int>(TensorEvaluator<ArgType, Device>::Layout) == static_cast<int>(ColMajor)) ? RowMajor : ColMajor,
+    CoordAccess = false,  // to be implemented
+    RawAccess = TensorEvaluator<ArgType, Device>::RawAccess
+  };
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorEvaluator(const XprType& op, const Device& device)
+      : m_impl(op.expression(), device)
+  {
+    for(int i = 0; i < NumDims; ++i) {
+      m_dimensions[i] = m_impl.dimensions()[NumDims-1-i];
+    }
+  }
+
+  typedef typename XprType::Scalar Scalar;
+  typedef typename XprType::CoeffReturnType CoeffReturnType;
+  typedef typename PacketType<CoeffReturnType, Device>::type PacketReturnType;
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Dimensions& dimensions() const { return m_dimensions; }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool evalSubExprsIfNeeded(CoeffReturnType* data) {
+    return m_impl.evalSubExprsIfNeeded(data);
+  }
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void cleanup() {
+    m_impl.cleanup();
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType coeff(Index index) const
+  {
+    return m_impl.coeff(index);
+  }
+
+  template<int LoadMode>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketReturnType packet(Index index) const
+  {
+    return m_impl.template packet<LoadMode>(index);
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorOpCost costPerCoeff(bool vectorized) const {
+    return m_impl.costPerCoeff(vectorized);
+  }
+
+  EIGEN_DEVICE_FUNC Scalar* data() const { return m_impl.data(); }
+
+  const TensorEvaluator<ArgType, Device>& impl() const { return m_impl; }
+
+ protected:
+  TensorEvaluator<ArgType, Device> m_impl;
+  Dimensions m_dimensions;
+};
+
+
+// Eval as lvalue
+template<typename ArgType, typename Device>
+  struct TensorEvaluator<TensorLayoutSwapOp<ArgType>, Device>
+  : public TensorEvaluator<const TensorLayoutSwapOp<ArgType>, Device>
+{
+  typedef TensorEvaluator<const TensorLayoutSwapOp<ArgType>, Device> Base;
+  typedef TensorLayoutSwapOp<ArgType> XprType;
+
+  enum {
+    IsAligned = TensorEvaluator<ArgType, Device>::IsAligned,
+    PacketAccess = TensorEvaluator<ArgType, Device>::PacketAccess,
+    Layout = (static_cast<int>(TensorEvaluator<ArgType, Device>::Layout) == static_cast<int>(ColMajor)) ? RowMajor : ColMajor,
+    CoordAccess = false  // to be implemented
+  };
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorEvaluator(const XprType& op, const Device& device)
+    : Base(op, device)
+  { }
+
+  typedef typename XprType::Index Index;
+  typedef typename XprType::Scalar Scalar;
+  typedef typename XprType::CoeffReturnType CoeffReturnType;
+  typedef typename PacketType<CoeffReturnType, Device>::type PacketReturnType;
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType& coeffRef(Index index)
+  {
+    return this->m_impl.coeffRef(index);
+  }
+  template <int StoreMode> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  void writePacket(Index index, const PacketReturnType& x)
+  {
+    this->m_impl.template writePacket<StoreMode>(index, x);
+  }
+};
+
+} // end namespace Eigen
+
+#endif // EIGEN_CXX11_TENSOR_TENSOR_LAYOUT_SWAP_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorDimensions.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorDimensions.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorDimensions.h	(revision 3762)
@@ -0,0 +1,428 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2014 Benoit Steiner <benoit.steiner.goog@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CXX11_TENSOR_TENSOR_DIMENSIONS_H
+#define EIGEN_CXX11_TENSOR_TENSOR_DIMENSIONS_H
+
+
+namespace Eigen {
+
+/** \internal
+  *
+  * \class TensorDimensions
+  * \ingroup CXX11_Tensor_Module
+  *
+  * \brief Set of classes used to encode and store the dimensions of a Tensor.
+  *
+  * The Sizes class encodes as part of the type the number of dimensions and the
+  * sizes corresponding to each dimension. It uses no storage space since it is
+  * entirely known at compile time.
+  * The DSizes class is its dynamic sibling: the number of dimensions is known
+  * at compile time but the sizes are set during execution.
+  *
+  * \sa Tensor
+  */
+
+// Boilerplate code
+namespace internal {
+
+template<std::size_t n, typename Dimension> struct dget {
+  static const std::size_t value = get<n, Dimension>::value;
+};
+
+
+template<typename Index, std::size_t NumIndices, std::size_t n, bool RowMajor>
+struct fixed_size_tensor_index_linearization_helper
+{
+  template <typename Dimensions> EIGEN_DEVICE_FUNC
+  static inline Index run(array<Index, NumIndices> const& indices,
+                          const Dimensions& dimensions)
+  {
+    return array_get<RowMajor ? n - 1 : (NumIndices - n)>(indices) +
+        dget<RowMajor ? n - 1 : (NumIndices - n), Dimensions>::value *
+        fixed_size_tensor_index_linearization_helper<Index, NumIndices, n - 1, RowMajor>::run(indices, dimensions);
+  }
+};
+
+template<typename Index, std::size_t NumIndices, bool RowMajor>
+struct fixed_size_tensor_index_linearization_helper<Index, NumIndices, 0, RowMajor>
+{
+  template <typename Dimensions> EIGEN_DEVICE_FUNC
+  static inline Index run(array<Index, NumIndices> const&, const Dimensions&)
+  {
+    return 0;
+  }
+};
+
+template<typename Index, std::size_t n>
+struct fixed_size_tensor_index_extraction_helper
+{
+  template <typename Dimensions> EIGEN_DEVICE_FUNC
+  static inline Index run(const Index index,
+                          const Dimensions& dimensions)
+  {
+    const Index mult = (index == n-1) ? 1 : 0;
+    return array_get<n-1>(dimensions) * mult +
+        fixed_size_tensor_index_extraction_helper<Index, n - 1>::run(index, dimensions);
+  }
+};
+
+template<typename Index>
+struct fixed_size_tensor_index_extraction_helper<Index, 0>
+{
+  template <typename Dimensions> EIGEN_DEVICE_FUNC
+  static inline Index run(const Index,
+                          const Dimensions&)
+  {
+    return 0;
+  }
+  };
+
+}  // end namespace internal
+
+
+// Fixed size
+#ifndef EIGEN_EMULATE_CXX11_META_H
+template <typename std::ptrdiff_t... Indices>
+struct Sizes : internal::numeric_list<std::ptrdiff_t, Indices...> {
+  typedef internal::numeric_list<std::ptrdiff_t, Indices...> Base;
+  static const std::ptrdiff_t total_size = internal::arg_prod(Indices...);
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE std::ptrdiff_t rank() const {
+    return Base::count;
+  }
+
+  static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE std::ptrdiff_t TotalSize() {
+    return internal::arg_prod(Indices...);
+  }
+
+  EIGEN_DEVICE_FUNC Sizes() { }
+  template <typename DenseIndex>
+  explicit EIGEN_DEVICE_FUNC Sizes(const array<DenseIndex, Base::count>& /*indices*/) {
+    // todo: add assertion
+  }
+#if EIGEN_HAS_VARIADIC_TEMPLATES
+  template <typename... DenseIndex> EIGEN_DEVICE_FUNC Sizes(DenseIndex...) { }
+  explicit EIGEN_DEVICE_FUNC Sizes(std::initializer_list<std::ptrdiff_t> /*l*/) {
+    // todo: add assertion
+  }
+#endif
+
+  template <typename T> Sizes& operator = (const T& /*other*/) {
+    // add assertion failure if the size of other is different
+    return *this;
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE std::ptrdiff_t operator[] (const std::size_t index) const {
+    return internal::fixed_size_tensor_index_extraction_helper<std::ptrdiff_t, Base::count>::run(index, *this);
+  }
+
+  template <typename DenseIndex> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  size_t IndexOfColMajor(const array<DenseIndex, Base::count>& indices) const {
+    return internal::fixed_size_tensor_index_linearization_helper<DenseIndex, Base::count, Base::count, false>::run(indices, *static_cast<const Base*>(this));
+  }
+  template <typename DenseIndex> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  size_t IndexOfRowMajor(const array<DenseIndex, Base::count>& indices) const {
+    return internal::fixed_size_tensor_index_linearization_helper<DenseIndex, Base::count, Base::count, true>::run(indices, *static_cast<const Base*>(this));
+  }
+};
+
+namespace internal {
+template <typename std::ptrdiff_t... Indices>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE std::ptrdiff_t array_prod(const Sizes<Indices...>&) {
+  return Sizes<Indices...>::total_size;
+}
+}
+
+#else
+
+template <std::size_t n>
+struct non_zero_size {
+  typedef internal::type2val<std::size_t, n> type;
+};
+template <>
+struct non_zero_size<0> {
+  typedef internal::null_type type;
+};
+
+template <std::size_t V1=0, std::size_t V2=0, std::size_t V3=0, std::size_t V4=0, std::size_t V5=0> struct Sizes {
+  typedef typename internal::make_type_list<typename non_zero_size<V1>::type, typename non_zero_size<V2>::type, typename non_zero_size<V3>::type, typename non_zero_size<V4>::type, typename non_zero_size<V5>::type >::type Base;
+  static const size_t count = Base::count;
+  static const std::size_t total_size = internal::arg_prod<Base>::value;
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE size_t rank() const {
+    return count;
+  }
+
+  static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE size_t TotalSize() {
+    return internal::arg_prod<Base>::value;
+  }
+
+  Sizes() { }
+  template <typename DenseIndex>
+  explicit Sizes(const array<DenseIndex, Base::count>& /*indices*/) {
+    // todo: add assertion
+  }
+  template <typename T> Sizes& operator = (const T& /*other*/) {
+    // add assertion failure if the size of other is different
+    return *this;
+  }
+
+#if EIGEN_HAS_VARIADIC_TEMPLATES
+  template <typename... DenseIndex> Sizes(DenseIndex... /*indices*/) { }
+  explicit Sizes(std::initializer_list<std::size_t>) {
+    // todo: add assertion
+  }
+#else
+  EIGEN_DEVICE_FUNC explicit Sizes(const DenseIndex) {
+  }
+  EIGEN_DEVICE_FUNC Sizes(const DenseIndex, const DenseIndex) {
+  }
+  EIGEN_DEVICE_FUNC Sizes(const DenseIndex, const DenseIndex, const DenseIndex) {
+  }
+  EIGEN_DEVICE_FUNC Sizes(const DenseIndex, const DenseIndex, const DenseIndex, const DenseIndex) {
+  }
+  EIGEN_DEVICE_FUNC Sizes(const DenseIndex, const DenseIndex, const DenseIndex, const DenseIndex, const DenseIndex) {
+  }
+#endif
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Index operator[] (const Index index) const {
+    switch (index) {
+      case 0:
+        return internal::get<0, Base>::value;
+      case 1:
+        return internal::get<1, Base>::value;
+      case 2:
+        return internal::get<2, Base>::value;
+      case 3:
+        return internal::get<3, Base>::value;
+      case 4:
+        return internal::get<4, Base>::value;
+      default:
+        eigen_assert(false && "index overflow");
+        return static_cast<Index>(-1);
+    }
+  }
+
+  template <typename DenseIndex> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  size_t IndexOfColMajor(const array<DenseIndex, Base::count>& indices) const {
+    return internal::fixed_size_tensor_index_linearization_helper<DenseIndex, Base::count, Base::count, false>::run(indices, *reinterpret_cast<const Base*>(this));
+  }
+  template <typename DenseIndex> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  size_t IndexOfRowMajor(const array<DenseIndex, Base::count>& indices) const {
+    return internal::fixed_size_tensor_index_linearization_helper<DenseIndex, Base::count, Base::count, true>::run(indices, *reinterpret_cast<const Base*>(this));
+  }
+};
+
+namespace internal {
+template <std::size_t V1, std::size_t V2, std::size_t V3, std::size_t V4, std::size_t V5>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE std::size_t array_prod(const Sizes<V1, V2, V3, V4, V5>&) {
+  return Sizes<V1, V2, V3, V4, V5>::total_size;
+}
+}
+
+#endif
+
+// Boilerplate
+namespace internal {
+template<typename Index, std::size_t NumIndices, std::size_t n, bool RowMajor>
+struct tensor_index_linearization_helper
+{
+  static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  Index run(array<Index, NumIndices> const& indices, array<Index, NumIndices> const& dimensions)
+  {
+    return array_get<RowMajor ? n : (NumIndices - n - 1)>(indices) +
+      array_get<RowMajor ? n : (NumIndices - n - 1)>(dimensions) *
+        tensor_index_linearization_helper<Index, NumIndices, n - 1, RowMajor>::run(indices, dimensions);
+  }
+};
+
+template<typename Index, std::size_t NumIndices, bool RowMajor>
+struct tensor_index_linearization_helper<Index, NumIndices, 0, RowMajor>
+{
+  static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  Index run(array<Index, NumIndices> const& indices, array<Index, NumIndices> const&)
+  {
+    return array_get<RowMajor ? 0 : NumIndices - 1>(indices);
+  }
+};
+}  // end namespace internal
+
+
+
+// Dynamic size
+template <typename DenseIndex, int NumDims>
+struct DSizes : array<DenseIndex, NumDims> {
+  typedef array<DenseIndex, NumDims> Base;
+  static const int count = NumDims;
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE size_t rank() const {
+    return NumDims;
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE DenseIndex TotalSize() const {
+    return (NumDims == 0) ? 1 : internal::array_prod(*static_cast<const Base*>(this));
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE DSizes() {
+    for (int i = 0 ; i < NumDims; ++i) {
+      (*this)[i] = 0;
+    }
+  }
+  EIGEN_DEVICE_FUNC explicit DSizes(const array<DenseIndex, NumDims>& a) : Base(a) { }
+
+  EIGEN_DEVICE_FUNC explicit DSizes(const DenseIndex i0) {
+    eigen_assert(NumDims == 1);
+    (*this)[0] = i0;
+  }
+
+#if EIGEN_HAS_VARIADIC_TEMPLATES
+  template<typename... IndexTypes> EIGEN_DEVICE_FUNC
+  EIGEN_STRONG_INLINE explicit DSizes(DenseIndex firstDimension, DenseIndex secondDimension, IndexTypes... otherDimensions) : Base({{firstDimension, secondDimension, otherDimensions...}}) {
+    EIGEN_STATIC_ASSERT(sizeof...(otherDimensions) + 2 == NumDims, YOU_MADE_A_PROGRAMMING_MISTAKE)
+  }
+#else
+  EIGEN_DEVICE_FUNC DSizes(const DenseIndex i0, const DenseIndex i1) {
+    eigen_assert(NumDims == 2);
+    (*this)[0] = i0;
+    (*this)[1] = i1;
+  }
+  EIGEN_DEVICE_FUNC DSizes(const DenseIndex i0, const DenseIndex i1, const DenseIndex i2) {
+    eigen_assert(NumDims == 3);
+    (*this)[0] = i0;
+    (*this)[1] = i1;
+    (*this)[2] = i2;
+  }
+  EIGEN_DEVICE_FUNC DSizes(const DenseIndex i0, const DenseIndex i1, const DenseIndex i2, const DenseIndex i3) {
+    eigen_assert(NumDims == 4);
+    (*this)[0] = i0;
+    (*this)[1] = i1;
+    (*this)[2] = i2;
+    (*this)[3] = i3;
+  }
+  EIGEN_DEVICE_FUNC DSizes(const DenseIndex i0, const DenseIndex i1, const DenseIndex i2, const DenseIndex i3, const DenseIndex i4) {
+    eigen_assert(NumDims == 5);
+    (*this)[0] = i0;
+    (*this)[1] = i1;
+    (*this)[2] = i2;
+    (*this)[3] = i3;
+    (*this)[4] = i4;
+  }
+#endif
+
+  EIGEN_DEVICE_FUNC DSizes& operator = (const array<DenseIndex, NumDims>& other) {
+    *static_cast<Base*>(this) = other;
+    return *this;
+  }
+
+  // A constexpr would be so much better here
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE DenseIndex IndexOfColMajor(const array<DenseIndex, NumDims>& indices) const {
+    return internal::tensor_index_linearization_helper<DenseIndex, NumDims, NumDims - 1, false>::run(indices, *static_cast<const Base*>(this));
+  }
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE DenseIndex IndexOfRowMajor(const array<DenseIndex, NumDims>& indices) const {
+    return internal::tensor_index_linearization_helper<DenseIndex, NumDims, NumDims - 1, true>::run(indices, *static_cast<const Base*>(this));
+  }
+};
+
+
+
+
+// Boilerplate
+namespace internal {
+template<typename Index, std::size_t NumIndices, std::size_t n, bool RowMajor>
+struct tensor_vsize_index_linearization_helper
+{
+  static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  Index run(array<Index, NumIndices> const& indices, std::vector<DenseIndex> const& dimensions)
+  {
+    return array_get<RowMajor ? n : (NumIndices - n - 1)>(indices) +
+      array_get<RowMajor ? n : (NumIndices - n - 1)>(dimensions) *
+        tensor_vsize_index_linearization_helper<Index, NumIndices, n - 1, RowMajor>::run(indices, dimensions);
+  }
+};
+
+template<typename Index, std::size_t NumIndices, bool RowMajor>
+struct tensor_vsize_index_linearization_helper<Index, NumIndices, 0, RowMajor>
+{
+  static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  Index run(array<Index, NumIndices> const& indices, std::vector<DenseIndex> const&)
+  {
+    return array_get<RowMajor ? 0 : NumIndices - 1>(indices);
+  }
+};
+}  // end namespace internal
+
+
+namespace internal {
+
+template <typename DenseIndex, int NumDims> struct array_size<const DSizes<DenseIndex, NumDims> > {
+  static const size_t value = NumDims;
+};
+template <typename DenseIndex, int NumDims> struct array_size<DSizes<DenseIndex, NumDims> > {
+  static const size_t value = NumDims;
+};
+#ifndef EIGEN_EMULATE_CXX11_META_H
+template <typename std::ptrdiff_t... Indices> struct array_size<const Sizes<Indices...> > {
+static const std::ptrdiff_t value = Sizes<Indices...>::count;
+};
+template <typename std::ptrdiff_t... Indices> struct array_size<Sizes<Indices...> > {
+static const std::ptrdiff_t value = Sizes<Indices...>::count;
+};
+template <std::ptrdiff_t n, typename std::ptrdiff_t... Indices> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE std::ptrdiff_t array_get(const Sizes<Indices...>&) {
+  return get<n, internal::numeric_list<std::size_t, Indices...> >::value;
+}
+template <std::ptrdiff_t n> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE std::ptrdiff_t array_get(const Sizes<>&) {
+  eigen_assert(false && "should never be called");
+  return -1;
+}
+#else
+template <std::size_t V1, std::size_t V2, std::size_t V3, std::size_t V4, std::size_t V5> struct array_size<const Sizes<V1,V2,V3,V4,V5> > {
+  static const size_t value = Sizes<V1,V2,V3,V4,V5>::count;
+};
+template <std::size_t V1, std::size_t V2, std::size_t V3, std::size_t V4, std::size_t V5> struct array_size<Sizes<V1,V2,V3,V4,V5> > {
+  static const size_t value = Sizes<V1,V2,V3,V4,V5>::count;
+};
+template <std::size_t n, std::size_t V1, std::size_t V2, std::size_t V3, std::size_t V4, std::size_t V5> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE std::size_t array_get(const Sizes<V1,V2,V3,V4,V5>&) {
+  return get<n, typename Sizes<V1,V2,V3,V4,V5>::Base>::value;
+}
+
+#endif
+
+
+template <typename Dims1, typename Dims2, size_t n, size_t m>
+struct sizes_match_below_dim {
+  static EIGEN_DEVICE_FUNC  inline bool run(Dims1&, Dims2&) {
+    return false;
+  }
+};
+template <typename Dims1, typename Dims2, size_t n>
+struct sizes_match_below_dim<Dims1, Dims2, n, n> {
+  static EIGEN_DEVICE_FUNC  inline bool run(Dims1& dims1, Dims2& dims2) {
+    return (array_get<n-1>(dims1) == array_get<n-1>(dims2)) &
+        sizes_match_below_dim<Dims1, Dims2, n-1, n-1>::run(dims1, dims2);
+  }
+};
+template <typename Dims1, typename Dims2>
+struct sizes_match_below_dim<Dims1, Dims2, 0, 0> {
+  static EIGEN_DEVICE_FUNC  inline bool run(Dims1&, Dims2&) {
+    return true;
+  }
+};
+
+} // end namespace internal
+
+
+template <typename Dims1, typename Dims2>
+EIGEN_DEVICE_FUNC bool dimensions_match(Dims1& dims1, Dims2& dims2) {
+  return internal::sizes_match_below_dim<Dims1, Dims2, internal::array_size<Dims1>::value, internal::array_size<Dims2>::value>::run(dims1, dims2);
+}
+
+} // end namespace Eigen
+
+#endif // EIGEN_CXX11_TENSOR_TENSOR_DIMENSIONS_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorSyclLeafCount.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorSyclLeafCount.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorSyclLeafCount.h	(revision 3762)
@@ -0,0 +1,114 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Mehdi Goli    Codeplay Software Ltd.
+// Ralph Potter  Codeplay Software Ltd.
+// Luke Iwanski  Codeplay Software Ltd.
+// Contact: <eigen@codeplay.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+/*****************************************************************
+ * TensorSyclLeafCount.h
+ *
+ * \brief:
+ *  The leaf count used the pre-order expression tree traverse in order to name
+ *  count the number of leaf nodes in the expression
+ *
+*****************************************************************/
+
+#ifndef UNSUPPORTED_EIGEN_CXX11_SRC_TENSOR_TENSORSYCL_LEAF_COUNT_HPP
+#define UNSUPPORTED_EIGEN_CXX11_SRC_TENSOR_TENSORSYCL_LEAF_COUNT_HPP
+
+namespace Eigen {
+namespace TensorSycl {
+namespace internal {
+/// \brief LeafCount used to counting terminal nodes. The total number of
+/// leaf nodes is used by MakePlaceHolderExprHelper to find the order
+/// of the leaf node in a expression tree at compile time.
+template <typename Expr>
+struct LeafCount;
+
+template<typename... Args> struct CategoryCount;
+
+template<> struct CategoryCount<>
+{
+  static const size_t Count =0;
+};
+
+template<typename Arg, typename... Args>
+struct CategoryCount<Arg,Args...>{
+  static const size_t Count = LeafCount<Arg>::Count + CategoryCount<Args...>::Count;
+};
+
+/// specialisation of the \ref LeafCount struct when the node type is const TensorMap
+template <typename PlainObjectType, int Options_, template <class> class MakePointer_>
+struct LeafCount<const TensorMap<PlainObjectType, Options_, MakePointer_> > {
+  static const size_t Count =1;
+};
+
+/// specialisation of the \ref LeafCount struct when the node type is TensorMap
+template <typename PlainObjectType, int Options_, template <class> class MakePointer_>
+struct LeafCount<TensorMap<PlainObjectType, Options_, MakePointer_> > :LeafCount<const TensorMap<PlainObjectType, Options_, MakePointer_> >{};
+
+// const TensorCwiseUnaryOp, const TensorCwiseNullaryOp, const TensorCwiseBinaryOp, const TensorCwiseTernaryOp, and Const TensorBroadcastingOp
+template <template <class, class...> class CategoryExpr, typename OP, typename... RHSExpr>
+struct LeafCount<const CategoryExpr<OP, RHSExpr...> >: CategoryCount<RHSExpr...> {};
+// TensorCwiseUnaryOp,  TensorCwiseNullaryOp,  TensorCwiseBinaryOp,  TensorCwiseTernaryOp, and  TensorBroadcastingOp
+template <template <class, class...> class CategoryExpr, typename OP, typename... RHSExpr>
+struct LeafCount<CategoryExpr<OP, RHSExpr...> > :LeafCount<const CategoryExpr<OP, RHSExpr...> >{};
+
+/// specialisation of the \ref LeafCount struct when the node type is const TensorSelectOp is an exception
+template <typename IfExpr, typename ThenExpr, typename ElseExpr>
+struct LeafCount<const TensorSelectOp<IfExpr, ThenExpr, ElseExpr> > : CategoryCount<IfExpr, ThenExpr, ElseExpr> {};
+/// specialisation of the \ref LeafCount struct when the node type is TensorSelectOp
+template <typename IfExpr, typename ThenExpr, typename ElseExpr>
+struct LeafCount<TensorSelectOp<IfExpr, ThenExpr, ElseExpr> >: LeafCount<const TensorSelectOp<IfExpr, ThenExpr, ElseExpr> > {};
+
+
+/// specialisation of the \ref LeafCount struct when the node type is const TensorAssignOp
+template <typename LHSExpr, typename RHSExpr>
+struct LeafCount<const TensorAssignOp<LHSExpr, RHSExpr> >: CategoryCount<LHSExpr,RHSExpr> {};
+
+/// specialisation of the \ref LeafCount struct when the node type is
+/// TensorAssignOp is an exception. It is not the same as Unary
+template <typename LHSExpr, typename RHSExpr>
+struct LeafCount<TensorAssignOp<LHSExpr, RHSExpr> > :LeafCount<const TensorAssignOp<LHSExpr, RHSExpr> >{};
+
+/// specialisation of the \ref LeafCount struct when the node type is const TensorForcedEvalOp
+template <typename Expr>
+struct LeafCount<const TensorForcedEvalOp<Expr> > {
+    static const size_t Count =1;
+};
+
+/// specialisation of the \ref LeafCount struct when the node type is TensorForcedEvalOp
+template <typename Expr>
+struct LeafCount<TensorForcedEvalOp<Expr> >: LeafCount<const TensorForcedEvalOp<Expr> > {};
+
+/// specialisation of the \ref LeafCount struct when the node type is const TensorEvalToOp
+template <typename Expr>
+struct LeafCount<const TensorEvalToOp<Expr> > {
+  static const size_t Count = 1 + CategoryCount<Expr>::Count;
+};
+
+/// specialisation of the \ref LeafCount struct when the node type is const TensorReductionOp
+template <typename OP, typename Dim, typename Expr>
+struct LeafCount<const TensorReductionOp<OP, Dim, Expr> > {
+    static const size_t Count =1;
+};
+
+/// specialisation of the \ref LeafCount struct when the node type is TensorReductionOp
+template <typename OP, typename Dim, typename Expr>
+struct LeafCount<TensorReductionOp<OP, Dim, Expr> >: LeafCount<const TensorReductionOp<OP, Dim, Expr> >{};
+
+/// specialisation of the \ref LeafCount struct when the node type is TensorEvalToOp
+template <typename Expr>
+struct LeafCount<TensorEvalToOp<Expr> >: LeafCount<const TensorEvalToOp<Expr> >{};
+
+} /// namespace TensorSycl
+} /// namespace internal
+} /// namespace Eigen
+
+#endif  // UNSUPPORTED_EIGEN_CXX11_SRC_TENSOR_TENSORSYCL_LEAF_COUNT_HPP
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorSyclPlaceHolderExpr.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorSyclPlaceHolderExpr.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorSyclPlaceHolderExpr.h	(revision 3762)
@@ -0,0 +1,181 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Mehdi Goli    Codeplay Software Ltd.
+// Ralph Potter  Codeplay Software Ltd.
+// Luke Iwanski  Codeplay Software Ltd.
+// Contact: <eigen@codeplay.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+/*****************************************************************
+ * TensorSyclPlaceHolderExpr.h
+ *
+ * \brief:
+ *  This is the specialisation of the placeholder expression based on the
+ * operation type
+ *
+*****************************************************************/
+
+#ifndef UNSUPPORTED_EIGEN_CXX11_SRC_TENSOR_TENSORSYCL_PLACEHOLDER_EXPR_HPP
+#define UNSUPPORTED_EIGEN_CXX11_SRC_TENSOR_TENSORSYCL_PLACEHOLDER_EXPR_HPP
+
+namespace Eigen {
+namespace TensorSycl {
+namespace internal {
+
+/// \struct PlaceHolder
+/// \brief PlaceHolder is used to replace the \ref TensorMap in the expression
+/// tree.
+/// PlaceHolder contains the order of the leaf node in the expression tree.
+template <typename Scalar, size_t N>
+struct PlaceHolder {
+  static constexpr size_t I = N;
+  typedef Scalar Type;
+};
+
+/// \sttruct PlaceHolderExpression
+/// \brief it is used to create the PlaceHolder expression. The PlaceHolder
+/// expression is a copy of expression type in which the TensorMap of the has
+/// been replaced with PlaceHolder.
+template <typename Expr, size_t N>
+struct PlaceHolderExpression;
+
+template<size_t N, typename... Args>
+struct CalculateIndex;
+
+template<size_t N, typename Arg>
+struct CalculateIndex<N, Arg>{
+  typedef typename PlaceHolderExpression<Arg, N>::Type ArgType;
+  typedef utility::tuple::Tuple<ArgType> ArgsTuple;
+};
+
+template<size_t N, typename Arg1, typename Arg2>
+struct CalculateIndex<N, Arg1, Arg2>{
+  static const size_t Arg2LeafCount = LeafCount<Arg2>::Count;
+  typedef typename PlaceHolderExpression<Arg1, N - Arg2LeafCount>::Type Arg1Type;
+  typedef typename PlaceHolderExpression<Arg2, N>::Type Arg2Type;
+  typedef utility::tuple::Tuple<Arg1Type, Arg2Type> ArgsTuple;
+};
+
+template<size_t N, typename Arg1, typename Arg2, typename Arg3>
+struct CalculateIndex<N, Arg1, Arg2, Arg3> {
+  static const size_t Arg3LeafCount = LeafCount<Arg3>::Count;
+  static const size_t Arg2LeafCount = LeafCount<Arg2>::Count;
+  typedef typename PlaceHolderExpression<Arg1, N - Arg3LeafCount - Arg2LeafCount>::Type Arg1Type;
+  typedef typename PlaceHolderExpression<Arg2, N - Arg3LeafCount>::Type Arg2Type;
+  typedef typename PlaceHolderExpression<Arg3, N>::Type Arg3Type;
+  typedef utility::tuple::Tuple<Arg1Type, Arg2Type, Arg3Type> ArgsTuple;
+};
+
+template<template<class...> class Category , class OP, class TPL>
+struct CategoryHelper;
+
+template<template<class...> class Category , class OP, class ...T >
+struct CategoryHelper<Category, OP, utility::tuple::Tuple<T...> > {
+  typedef Category<OP, T... > Type;
+};
+
+template<template<class...> class Category , class ...T >
+struct CategoryHelper<Category, NoOP, utility::tuple::Tuple<T...> > {
+  typedef Category<T... > Type;
+};
+
+/// specialisation of the \ref PlaceHolderExpression when the node is
+/// TensorCwiseNullaryOp, TensorCwiseUnaryOp, TensorBroadcastingOp, TensorCwiseBinaryOp,  TensorCwiseTernaryOp
+#define OPEXPRCATEGORY(CVQual)\
+template <template <class, class... > class Category, typename OP, typename... SubExpr, size_t N>\
+struct PlaceHolderExpression<CVQual Category<OP, SubExpr...>, N>{\
+  typedef CVQual typename CategoryHelper<Category, OP, typename CalculateIndex<N, SubExpr...>::ArgsTuple>::Type Type;\
+};
+
+OPEXPRCATEGORY(const)
+OPEXPRCATEGORY()
+#undef OPEXPRCATEGORY
+
+/// specialisation of the \ref PlaceHolderExpression when the node is
+/// TensorCwiseSelectOp
+#define SELECTEXPR(CVQual)\
+template <typename IfExpr, typename ThenExpr, typename ElseExpr, size_t N>\
+struct PlaceHolderExpression<CVQual TensorSelectOp<IfExpr, ThenExpr, ElseExpr>, N> {\
+  typedef CVQual typename CategoryHelper<TensorSelectOp, NoOP, typename CalculateIndex<N, IfExpr, ThenExpr, ElseExpr>::ArgsTuple>::Type Type;\
+};
+
+SELECTEXPR(const)
+SELECTEXPR()
+#undef SELECTEXPR
+
+/// specialisation of the \ref PlaceHolderExpression when the node is
+/// TensorAssignOp
+#define ASSIGNEXPR(CVQual)\
+template <typename LHSExpr, typename RHSExpr, size_t N>\
+struct PlaceHolderExpression<CVQual TensorAssignOp<LHSExpr, RHSExpr>, N> {\
+  typedef CVQual typename CategoryHelper<TensorAssignOp, NoOP, typename CalculateIndex<N, LHSExpr, RHSExpr>::ArgsTuple>::Type Type;\
+};
+
+ASSIGNEXPR(const)
+ASSIGNEXPR()
+#undef ASSIGNEXPR
+
+/// specialisation of the \ref PlaceHolderExpression when the node is
+/// TensorMap
+#define TENSORMAPEXPR(CVQual)\
+template <typename Scalar_, int Options_, int Options2_, int NumIndices_, typename IndexType_, template <class> class MakePointer_, size_t N>\
+struct PlaceHolderExpression< CVQual TensorMap< Tensor<Scalar_, NumIndices_, Options_, IndexType_>, Options2_, MakePointer_>, N> {\
+  typedef CVQual PlaceHolder<CVQual TensorMap<Tensor<Scalar_, NumIndices_, Options_, IndexType_>, Options2_, MakePointer_>, N> Type;\
+};
+
+TENSORMAPEXPR(const)
+TENSORMAPEXPR()
+#undef TENSORMAPEXPR
+
+/// specialisation of the \ref PlaceHolderExpression when the node is
+/// TensorForcedEvalOp
+#define FORCEDEVAL(CVQual)\
+template <typename Expr, size_t N>\
+struct PlaceHolderExpression<CVQual TensorForcedEvalOp<Expr>, N> {\
+  typedef CVQual PlaceHolder<CVQual TensorForcedEvalOp<Expr>, N> Type;\
+};
+
+FORCEDEVAL(const)
+FORCEDEVAL()
+#undef FORCEDEVAL
+
+/// specialisation of the \ref PlaceHolderExpression when the node is
+/// TensorEvalToOp
+#define EVALTO(CVQual)\
+template <typename Expr, size_t N>\
+struct PlaceHolderExpression<CVQual TensorEvalToOp<Expr>, N> {\
+  typedef CVQual TensorEvalToOp<typename CalculateIndex <N, Expr>::ArgType> Type;\
+};
+
+EVALTO(const)
+EVALTO()
+#undef EVALTO
+
+
+/// specialisation of the \ref PlaceHolderExpression when the node is
+/// TensorReductionOp
+#define SYCLREDUCTION(CVQual)\
+template <typename OP, typename Dims, typename Expr, size_t N>\
+struct PlaceHolderExpression<CVQual TensorReductionOp<OP, Dims, Expr>, N>{\
+  typedef CVQual PlaceHolder<CVQual TensorReductionOp<OP, Dims,Expr>, N> Type;\
+};
+SYCLREDUCTION(const)
+SYCLREDUCTION()
+#undef SYCLREDUCTION
+
+/// template deduction for \ref PlaceHolderExpression struct
+template <typename Expr>
+struct createPlaceHolderExpression {
+  static const size_t TotalLeaves = LeafCount<Expr>::Count;
+  typedef typename PlaceHolderExpression<Expr, TotalLeaves - 1>::Type Type;
+};
+
+}  // internal
+}  // TensorSycl
+}  // namespace Eigen
+
+#endif  // UNSUPPORTED_EIGEN_CXX11_SRC_TENSOR_TENSORSYCL_PLACEHOLDER_EXPR_HPP
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorRef.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorRef.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorRef.h	(revision 3762)
@@ -0,0 +1,429 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2014 Benoit Steiner <benoit.steiner.goog@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CXX11_TENSOR_TENSOR_REF_H
+#define EIGEN_CXX11_TENSOR_TENSOR_REF_H
+
+namespace Eigen {
+
+namespace internal {
+
+template <typename Dimensions, typename Scalar>
+class TensorLazyBaseEvaluator {
+ public:
+  TensorLazyBaseEvaluator() : m_refcount(0) { }
+  virtual ~TensorLazyBaseEvaluator() { }
+
+  EIGEN_DEVICE_FUNC virtual const Dimensions& dimensions() const = 0;
+  EIGEN_DEVICE_FUNC virtual const Scalar* data() const = 0;
+
+  EIGEN_DEVICE_FUNC virtual const Scalar coeff(DenseIndex index) const = 0;
+  EIGEN_DEVICE_FUNC virtual Scalar& coeffRef(DenseIndex index) = 0;
+
+  void incrRefCount() { ++m_refcount; }
+  void decrRefCount() { --m_refcount; }
+  int refCount() const { return m_refcount; }
+
+ private:
+  // No copy, no assigment;
+  TensorLazyBaseEvaluator(const TensorLazyBaseEvaluator& other);
+  TensorLazyBaseEvaluator& operator = (const TensorLazyBaseEvaluator& other);
+
+  int m_refcount;
+};
+
+
+template <typename Dimensions, typename Expr, typename Device>
+class TensorLazyEvaluatorReadOnly : public TensorLazyBaseEvaluator<Dimensions, typename TensorEvaluator<Expr, Device>::Scalar> {
+ public:
+  //  typedef typename TensorEvaluator<Expr, Device>::Dimensions Dimensions;
+  typedef typename TensorEvaluator<Expr, Device>::Scalar Scalar;
+
+  TensorLazyEvaluatorReadOnly(const Expr& expr, const Device& device) : m_impl(expr, device), m_dummy(Scalar(0)) {
+    m_dims = m_impl.dimensions();
+    m_impl.evalSubExprsIfNeeded(NULL);
+  }
+  virtual ~TensorLazyEvaluatorReadOnly() {
+    m_impl.cleanup();
+  }
+
+  EIGEN_DEVICE_FUNC virtual const Dimensions& dimensions() const {
+    return m_dims;
+  }
+  EIGEN_DEVICE_FUNC virtual const Scalar* data() const {
+    return m_impl.data();
+  }
+
+  EIGEN_DEVICE_FUNC virtual const Scalar coeff(DenseIndex index) const {
+    return m_impl.coeff(index);
+  }
+  EIGEN_DEVICE_FUNC virtual Scalar& coeffRef(DenseIndex /*index*/) {
+    eigen_assert(false && "can't reference the coefficient of a rvalue");
+    return m_dummy;
+  };
+
+ protected:
+  TensorEvaluator<Expr, Device> m_impl;
+  Dimensions m_dims;
+  Scalar m_dummy;
+};
+
+template <typename Dimensions, typename Expr, typename Device>
+class TensorLazyEvaluatorWritable : public TensorLazyEvaluatorReadOnly<Dimensions, Expr, Device> {
+ public:
+  typedef TensorLazyEvaluatorReadOnly<Dimensions, Expr, Device> Base;
+  typedef typename Base::Scalar Scalar;
+
+  TensorLazyEvaluatorWritable(const Expr& expr, const Device& device) : Base(expr, device) {
+  }
+  virtual ~TensorLazyEvaluatorWritable() {
+  }
+
+  EIGEN_DEVICE_FUNC virtual Scalar& coeffRef(DenseIndex index) {
+    return this->m_impl.coeffRef(index);
+  }
+};
+
+template <typename Dimensions, typename Expr, typename Device>
+class TensorLazyEvaluator : public internal::conditional<bool(internal::is_lvalue<Expr>::value),
+                            TensorLazyEvaluatorWritable<Dimensions, Expr, Device>,
+                            TensorLazyEvaluatorReadOnly<Dimensions, const Expr, Device> >::type {
+ public:
+  typedef typename internal::conditional<bool(internal::is_lvalue<Expr>::value),
+                                         TensorLazyEvaluatorWritable<Dimensions, Expr, Device>,
+                                         TensorLazyEvaluatorReadOnly<Dimensions, const Expr, Device> >::type Base;
+  typedef typename Base::Scalar Scalar;
+
+  TensorLazyEvaluator(const Expr& expr, const Device& device) : Base(expr, device) {
+  }
+  virtual ~TensorLazyEvaluator() {
+  }
+};
+
+}  // namespace internal
+
+
+/** \class TensorRef
+  * \ingroup CXX11_Tensor_Module
+  *
+  * \brief A reference to a tensor expression
+  * The expression will be evaluated lazily (as much as possible).
+  *
+  */
+template<typename PlainObjectType> class TensorRef : public TensorBase<TensorRef<PlainObjectType> >
+{
+  public:
+    typedef TensorRef<PlainObjectType> Self;
+    typedef typename PlainObjectType::Base Base;
+    typedef typename Eigen::internal::nested<Self>::type Nested;
+    typedef typename internal::traits<PlainObjectType>::StorageKind StorageKind;
+    typedef typename internal::traits<PlainObjectType>::Index Index;
+    typedef typename internal::traits<PlainObjectType>::Scalar Scalar;
+    typedef typename NumTraits<Scalar>::Real RealScalar;
+    typedef typename Base::CoeffReturnType CoeffReturnType;
+    typedef Scalar* PointerType;
+    typedef PointerType PointerArgType;
+
+    static const Index NumIndices = PlainObjectType::NumIndices;
+    typedef typename PlainObjectType::Dimensions Dimensions;
+
+    enum {
+      IsAligned = false,
+      PacketAccess = false,
+      Layout = PlainObjectType::Layout,
+      CoordAccess = false,  // to be implemented
+      RawAccess = false
+    };
+
+    EIGEN_STRONG_INLINE TensorRef() : m_evaluator(NULL) {
+    }
+
+    template <typename Expression>
+    EIGEN_STRONG_INLINE TensorRef(const Expression& expr) : m_evaluator(new internal::TensorLazyEvaluator<Dimensions, Expression, DefaultDevice>(expr, DefaultDevice())) {
+      m_evaluator->incrRefCount();
+    }
+
+    template <typename Expression>
+    EIGEN_STRONG_INLINE TensorRef& operator = (const Expression& expr) {
+      unrefEvaluator();
+      m_evaluator = new internal::TensorLazyEvaluator<Dimensions, Expression, DefaultDevice>(expr, DefaultDevice());
+      m_evaluator->incrRefCount();
+      return *this;
+    }
+
+    ~TensorRef() {
+      unrefEvaluator();
+    }
+
+    TensorRef(const TensorRef& other) : m_evaluator(other.m_evaluator) {
+      eigen_assert(m_evaluator->refCount() > 0);
+      m_evaluator->incrRefCount();
+    }
+
+    TensorRef& operator = (const TensorRef& other) {
+      if (this != &other) {
+        unrefEvaluator();
+        m_evaluator = other.m_evaluator;
+        eigen_assert(m_evaluator->refCount() > 0);
+        m_evaluator->incrRefCount();
+      }
+      return *this;
+    }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Index rank() const { return m_evaluator->dimensions().size(); }
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Index dimension(Index n) const { return m_evaluator->dimensions()[n]; }
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const Dimensions& dimensions() const { return m_evaluator->dimensions(); }
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Index size() const { return m_evaluator->dimensions().TotalSize(); }
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const Scalar* data() const { return m_evaluator->data(); }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const Scalar operator()(Index index) const
+    {
+      return m_evaluator->coeff(index);
+    }
+
+#if EIGEN_HAS_VARIADIC_TEMPLATES
+    template<typename... IndexTypes> EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const Scalar operator()(Index firstIndex, IndexTypes... otherIndices) const
+    {
+      const std::size_t num_indices = (sizeof...(otherIndices) + 1);
+      const array<Index, num_indices> indices{{firstIndex, otherIndices...}};
+      return coeff(indices);
+    }
+    template<typename... IndexTypes> EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Scalar& coeffRef(Index firstIndex, IndexTypes... otherIndices)
+    {
+      const std::size_t num_indices = (sizeof...(otherIndices) + 1);
+      const array<Index, num_indices> indices{{firstIndex, otherIndices...}};
+      return coeffRef(indices);
+    }
+#else
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const Scalar operator()(Index i0, Index i1) const
+    {
+      array<Index, 2> indices;
+      indices[0] = i0;
+      indices[1] = i1;
+      return coeff(indices);
+    }
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const Scalar operator()(Index i0, Index i1, Index i2) const
+    {
+      array<Index, 3> indices;
+      indices[0] = i0;
+      indices[1] = i1;
+      indices[2] = i2;
+      return coeff(indices);
+    }
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const Scalar operator()(Index i0, Index i1, Index i2, Index i3) const
+    {
+      array<Index, 4> indices;
+      indices[0] = i0;
+      indices[1] = i1;
+      indices[2] = i2;
+      indices[3] = i3;
+      return coeff(indices);
+    }
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const Scalar operator()(Index i0, Index i1, Index i2, Index i3, Index i4) const
+    {
+      array<Index, 5> indices;
+      indices[0] = i0;
+      indices[1] = i1;
+      indices[2] = i2;
+      indices[3] = i3;
+      indices[4] = i4;
+      return coeff(indices);
+    }
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Scalar& coeffRef(Index i0, Index i1)
+    {
+      array<Index, 2> indices;
+      indices[0] = i0;
+      indices[1] = i1;
+      return coeffRef(indices);
+    }
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Scalar& coeffRef(Index i0, Index i1, Index i2)
+    {
+      array<Index, 3> indices;
+      indices[0] = i0;
+      indices[1] = i1;
+      indices[2] = i2;
+      return coeffRef(indices);
+    }
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Scalar& operator()(Index i0, Index i1, Index i2, Index i3)
+    {
+      array<Index, 4> indices;
+      indices[0] = i0;
+      indices[1] = i1;
+      indices[2] = i2;
+      indices[3] = i3;
+      return coeffRef(indices);
+    }
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Scalar& coeffRef(Index i0, Index i1, Index i2, Index i3, Index i4)
+    {
+      array<Index, 5> indices;
+      indices[0] = i0;
+      indices[1] = i1;
+      indices[2] = i2;
+      indices[3] = i3;
+      indices[4] = i4;
+      return coeffRef(indices);
+    }
+#endif
+
+    template <std::size_t NumIndices> EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const Scalar coeff(const array<Index, NumIndices>& indices) const
+    {
+      const Dimensions& dims = this->dimensions();
+      Index index = 0;
+      if (PlainObjectType::Options & RowMajor) {
+        index += indices[0];
+        for (size_t i = 1; i < NumIndices; ++i) {
+          index = index * dims[i] + indices[i];
+        }
+      } else {
+        index += indices[NumIndices-1];
+        for (int i = NumIndices-2; i >= 0; --i) {
+          index = index * dims[i] + indices[i];
+        }
+      }
+      return m_evaluator->coeff(index);
+    }
+    template <std::size_t NumIndices> EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Scalar& coeffRef(const array<Index, NumIndices>& indices)
+    {
+      const Dimensions& dims = this->dimensions();
+      Index index = 0;
+      if (PlainObjectType::Options & RowMajor) {
+        index += indices[0];
+        for (size_t i = 1; i < NumIndices; ++i) {
+          index = index * dims[i] + indices[i];
+        }
+      } else {
+        index += indices[NumIndices-1];
+        for (int i = NumIndices-2; i >= 0; --i) {
+          index = index * dims[i] + indices[i];
+        }
+      }
+      return m_evaluator->coeffRef(index);
+    }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const Scalar coeff(Index index) const
+    {
+      return m_evaluator->coeff(index);
+    }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Scalar& coeffRef(Index index)
+    {
+      return m_evaluator->coeffRef(index);
+    }
+
+  private:
+    EIGEN_STRONG_INLINE void unrefEvaluator() {
+      if (m_evaluator) {
+        m_evaluator->decrRefCount();
+        if (m_evaluator->refCount() == 0) {
+          delete m_evaluator;
+        }
+      }
+    }
+
+  internal::TensorLazyBaseEvaluator<Dimensions, Scalar>* m_evaluator;
+};
+
+
+// evaluator for rvalues
+template<typename Derived, typename Device>
+struct TensorEvaluator<const TensorRef<Derived>, Device>
+{
+  typedef typename Derived::Index Index;
+  typedef typename Derived::Scalar Scalar;
+  typedef typename Derived::Scalar CoeffReturnType;
+  typedef typename PacketType<CoeffReturnType, Device>::type PacketReturnType;
+  typedef typename Derived::Dimensions Dimensions;
+
+  enum {
+    IsAligned = false,
+    PacketAccess = false,
+    Layout = TensorRef<Derived>::Layout,
+    CoordAccess = false,  // to be implemented
+    RawAccess = false
+  };
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorEvaluator(const TensorRef<Derived>& m, const Device&)
+      : m_ref(m)
+  { }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Dimensions& dimensions() const { return m_ref.dimensions(); }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool evalSubExprsIfNeeded(Scalar*) {
+    return true;
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void cleanup() { }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType coeff(Index index) const {
+    return m_ref.coeff(index);
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar& coeffRef(Index index) {
+    return m_ref.coeffRef(index);
+  }
+
+  EIGEN_DEVICE_FUNC Scalar* data() const { return m_ref.data(); }
+
+ protected:
+  TensorRef<Derived> m_ref;
+};
+
+
+// evaluator for lvalues
+template<typename Derived, typename Device>
+struct TensorEvaluator<TensorRef<Derived>, Device> : public TensorEvaluator<const TensorRef<Derived>, Device>
+{
+  typedef typename Derived::Index Index;
+  typedef typename Derived::Scalar Scalar;
+  typedef typename Derived::Scalar CoeffReturnType;
+  typedef typename PacketType<CoeffReturnType, Device>::type PacketReturnType;
+  typedef typename Derived::Dimensions Dimensions;
+
+  typedef TensorEvaluator<const TensorRef<Derived>, Device> Base;
+
+  enum {
+    IsAligned = false,
+    PacketAccess = false,
+    RawAccess = false
+  };
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorEvaluator(TensorRef<Derived>& m, const Device& d) : Base(m, d)
+  { }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar& coeffRef(Index index) {
+    return this->m_ref.coeffRef(index);
+  }
+};
+
+
+
+} // end namespace Eigen
+
+#endif // EIGEN_CXX11_TENSOR_TENSOR_REF_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorMap.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorMap.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorMap.h	(revision 3762)
@@ -0,0 +1,323 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2014 Benoit Steiner <benoit.steiner.goog@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CXX11_TENSOR_TENSOR_MAP_H
+#define EIGEN_CXX11_TENSOR_TENSOR_MAP_H
+
+namespace Eigen {
+
+// FIXME use proper doxygen documentation (e.g. \tparam MakePointer_)
+
+/** \class TensorMap
+  * \ingroup CXX11_Tensor_Module
+  *
+  * \brief A tensor expression mapping an existing array of data.
+  *
+  */
+/// `template <class> class MakePointer_` is added to convert the host pointer to the device pointer.
+/// It is added due to the fact that for our device compiler `T*` is not allowed.
+/// If we wanted to use the same Evaluator functions we have to convert that type to our pointer `T`.
+/// This is done through our `MakePointer_` class. By default the Type in the `MakePointer_<T>` is `T*` .
+/// Therefore, by adding the default value, we managed to convert the type and it does not break any
+/// existing code as its default value is `T*`.
+template<typename PlainObjectType, int Options_, template <class> class MakePointer_> class TensorMap : public TensorBase<TensorMap<PlainObjectType, Options_, MakePointer_> >
+{
+  public:
+    typedef TensorMap<PlainObjectType, Options_, MakePointer_> Self;
+    typedef typename PlainObjectType::Base Base;
+    typedef typename Eigen::internal::nested<Self>::type Nested;
+    typedef typename internal::traits<PlainObjectType>::StorageKind StorageKind;
+    typedef typename internal::traits<PlainObjectType>::Index Index;
+    typedef typename internal::traits<PlainObjectType>::Scalar Scalar;
+    typedef typename NumTraits<Scalar>::Real RealScalar;
+    typedef typename Base::CoeffReturnType CoeffReturnType;
+
+  /*    typedef typename internal::conditional<
+                         bool(internal::is_lvalue<PlainObjectType>::value),
+                         Scalar *,
+                         const Scalar *>::type
+                     PointerType;*/
+    typedef typename MakePointer_<Scalar>::Type PointerType;
+    typedef PointerType PointerArgType;
+
+    static const int Options = Options_;
+
+    static const Index NumIndices = PlainObjectType::NumIndices;
+    typedef typename PlainObjectType::Dimensions Dimensions;
+
+    enum {
+      IsAligned = ((int(Options_)&Aligned)==Aligned),
+      Layout = PlainObjectType::Layout,
+      CoordAccess = true,
+      RawAccess = true
+    };
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE TensorMap(PointerArgType dataPtr) : m_data(dataPtr), m_dimensions() {
+      // The number of dimensions used to construct a tensor must be equal to the rank of the tensor.
+      EIGEN_STATIC_ASSERT((0 == NumIndices || NumIndices == Dynamic), YOU_MADE_A_PROGRAMMING_MISTAKE)
+    }
+
+#if EIGEN_HAS_VARIADIC_TEMPLATES
+    template<typename... IndexTypes> EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE TensorMap(PointerArgType dataPtr, Index firstDimension, IndexTypes... otherDimensions) : m_data(dataPtr), m_dimensions(firstDimension, otherDimensions...) {
+      // The number of dimensions used to construct a tensor must be equal to the rank of the tensor.
+      EIGEN_STATIC_ASSERT((sizeof...(otherDimensions) + 1 == NumIndices || NumIndices == Dynamic), YOU_MADE_A_PROGRAMMING_MISTAKE)
+    }
+#else
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE TensorMap(PointerArgType dataPtr, Index firstDimension) : m_data(dataPtr), m_dimensions(firstDimension) {
+      // The number of dimensions used to construct a tensor must be equal to the rank of the tensor.
+      EIGEN_STATIC_ASSERT((1 == NumIndices || NumIndices == Dynamic), YOU_MADE_A_PROGRAMMING_MISTAKE)
+    }
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE TensorMap(PointerArgType dataPtr, Index dim1, Index dim2) : m_data(dataPtr), m_dimensions(dim1, dim2) {
+      EIGEN_STATIC_ASSERT(2 == NumIndices || NumIndices == Dynamic, YOU_MADE_A_PROGRAMMING_MISTAKE)
+    }
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE TensorMap(PointerArgType dataPtr, Index dim1, Index dim2, Index dim3) : m_data(dataPtr), m_dimensions(dim1, dim2, dim3) {
+      EIGEN_STATIC_ASSERT(3 == NumIndices || NumIndices == Dynamic, YOU_MADE_A_PROGRAMMING_MISTAKE)
+    }
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE TensorMap(PointerArgType dataPtr, Index dim1, Index dim2, Index dim3, Index dim4) : m_data(dataPtr), m_dimensions(dim1, dim2, dim3, dim4) {
+      EIGEN_STATIC_ASSERT(4 == NumIndices || NumIndices == Dynamic, YOU_MADE_A_PROGRAMMING_MISTAKE)
+    }
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE TensorMap(PointerArgType dataPtr, Index dim1, Index dim2, Index dim3, Index dim4, Index dim5) : m_data(dataPtr), m_dimensions(dim1, dim2, dim3, dim4, dim5) {
+      EIGEN_STATIC_ASSERT(5 == NumIndices || NumIndices == Dynamic, YOU_MADE_A_PROGRAMMING_MISTAKE)
+    }
+#endif
+
+   EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorMap(PointerArgType dataPtr, const array<Index, NumIndices>& dimensions)
+      : m_data(dataPtr), m_dimensions(dimensions)
+    { }
+
+    template <typename Dimensions>
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorMap(PointerArgType dataPtr, const Dimensions& dimensions)
+      : m_data(dataPtr), m_dimensions(dimensions)
+    { }
+
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorMap(PlainObjectType& tensor)
+      : m_data(tensor.data()), m_dimensions(tensor.dimensions())
+    { }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Index rank() const { return m_dimensions.rank(); }
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Index dimension(Index n) const { return m_dimensions[n]; }
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const Dimensions& dimensions() const { return m_dimensions; }
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Index size() const { return m_dimensions.TotalSize(); }
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE PointerType data() { return m_data; }
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const PointerType data() const { return m_data; }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const Scalar& operator()(const array<Index, NumIndices>& indices) const
+    {
+      //      eigen_assert(checkIndexRange(indices));
+      if (PlainObjectType::Options&RowMajor) {
+        const Index index = m_dimensions.IndexOfRowMajor(indices);
+        return m_data[index];
+      } else {
+        const Index index = m_dimensions.IndexOfColMajor(indices);
+        return m_data[index];
+      }
+    }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const Scalar& operator()() const
+    {
+      EIGEN_STATIC_ASSERT(NumIndices == 0, YOU_MADE_A_PROGRAMMING_MISTAKE)
+      return m_data[0];
+    }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const Scalar& operator()(Index index) const
+    {
+      eigen_internal_assert(index >= 0 && index < size());
+      return m_data[index];
+    }
+
+#if EIGEN_HAS_VARIADIC_TEMPLATES
+    template<typename... IndexTypes> EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const Scalar& operator()(Index firstIndex, Index secondIndex, IndexTypes... otherIndices) const
+    {
+      EIGEN_STATIC_ASSERT(sizeof...(otherIndices) + 2 == NumIndices, YOU_MADE_A_PROGRAMMING_MISTAKE)
+      if (PlainObjectType::Options&RowMajor) {
+        const Index index = m_dimensions.IndexOfRowMajor(array<Index, NumIndices>{{firstIndex, secondIndex, otherIndices...}});
+        return m_data[index];
+      } else {
+        const Index index = m_dimensions.IndexOfColMajor(array<Index, NumIndices>{{firstIndex, secondIndex, otherIndices...}});
+        return m_data[index];
+      }
+    }
+#else
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const Scalar& operator()(Index i0, Index i1) const
+    {
+      if (PlainObjectType::Options&RowMajor) {
+        const Index index = i1 + i0 * m_dimensions[1];
+        return m_data[index];
+      } else {
+        const Index index = i0 + i1 * m_dimensions[0];
+        return m_data[index];
+      }
+    }
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const Scalar& operator()(Index i0, Index i1, Index i2) const
+    {
+      if (PlainObjectType::Options&RowMajor) {
+         const Index index = i2 + m_dimensions[2] * (i1 + m_dimensions[1] * i0);
+         return m_data[index];
+      } else {
+         const Index index = i0 + m_dimensions[0] * (i1 + m_dimensions[1] * i2);
+        return m_data[index];
+      }
+    }
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const Scalar& operator()(Index i0, Index i1, Index i2, Index i3) const
+    {
+      if (PlainObjectType::Options&RowMajor) {
+        const Index index = i3 + m_dimensions[3] * (i2 + m_dimensions[2] * (i1 + m_dimensions[1] * i0));
+        return m_data[index];
+      } else {
+        const Index index = i0 + m_dimensions[0] * (i1 + m_dimensions[1] * (i2 + m_dimensions[2] * i3));
+        return m_data[index];
+      }
+    }
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const Scalar& operator()(Index i0, Index i1, Index i2, Index i3, Index i4) const
+    {
+      if (PlainObjectType::Options&RowMajor) {
+        const Index index = i4 + m_dimensions[4] * (i3 + m_dimensions[3] * (i2 + m_dimensions[2] * (i1 + m_dimensions[1] * i0)));
+        return m_data[index];
+      } else {
+        const Index index = i0 + m_dimensions[0] * (i1 + m_dimensions[1] * (i2 + m_dimensions[2] * (i3 + m_dimensions[3] * i4)));
+        return m_data[index];
+      }
+    }
+#endif
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Scalar& operator()(const array<Index, NumIndices>& indices)
+    {
+      //      eigen_assert(checkIndexRange(indices));
+      if (PlainObjectType::Options&RowMajor) {
+        const Index index = m_dimensions.IndexOfRowMajor(indices);
+        return m_data[index];
+      } else {
+        const Index index = m_dimensions.IndexOfColMajor(indices);
+        return m_data[index];
+      }
+    }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Scalar& operator()()
+    {
+      EIGEN_STATIC_ASSERT(NumIndices == 0, YOU_MADE_A_PROGRAMMING_MISTAKE)
+      return m_data[0];
+    }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Scalar& operator()(Index index)
+    {
+      eigen_internal_assert(index >= 0 && index < size());
+      return m_data[index];
+    }
+
+#if EIGEN_HAS_VARIADIC_TEMPLATES
+    template<typename... IndexTypes> EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Scalar& operator()(Index firstIndex, Index secondIndex, IndexTypes... otherIndices)
+    {
+      static_assert(sizeof...(otherIndices) + 2 == NumIndices || NumIndices == Dynamic, "Number of indices used to access a tensor coefficient must be equal to the rank of the tensor.");
+      const std::size_t NumDims = sizeof...(otherIndices) + 2;
+      if (PlainObjectType::Options&RowMajor) {
+        const Index index = m_dimensions.IndexOfRowMajor(array<Index, NumDims>{{firstIndex, secondIndex, otherIndices...}});
+        return m_data[index];
+      } else {
+        const Index index = m_dimensions.IndexOfColMajor(array<Index, NumDims>{{firstIndex, secondIndex, otherIndices...}});
+        return m_data[index];
+      }
+    }
+#else
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Scalar& operator()(Index i0, Index i1)
+    {
+       if (PlainObjectType::Options&RowMajor) {
+         const Index index = i1 + i0 * m_dimensions[1];
+        return m_data[index];
+      } else {
+        const Index index = i0 + i1 * m_dimensions[0];
+        return m_data[index];
+      }
+    }
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Scalar& operator()(Index i0, Index i1, Index i2)
+    {
+       if (PlainObjectType::Options&RowMajor) {
+         const Index index = i2 + m_dimensions[2] * (i1 + m_dimensions[1] * i0);
+        return m_data[index];
+      } else {
+         const Index index = i0 + m_dimensions[0] * (i1 + m_dimensions[1] * i2);
+        return m_data[index];
+      }
+    }
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Scalar& operator()(Index i0, Index i1, Index i2, Index i3)
+    {
+      if (PlainObjectType::Options&RowMajor) {
+        const Index index = i3 + m_dimensions[3] * (i2 + m_dimensions[2] * (i1 + m_dimensions[1] * i0));
+        return m_data[index];
+      } else {
+        const Index index = i0 + m_dimensions[0] * (i1 + m_dimensions[1] * (i2 + m_dimensions[2] * i3));
+        return m_data[index];
+      }
+    }
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Scalar& operator()(Index i0, Index i1, Index i2, Index i3, Index i4)
+    {
+      if (PlainObjectType::Options&RowMajor) {
+        const Index index = i4 + m_dimensions[4] * (i3 + m_dimensions[3] * (i2 + m_dimensions[2] * (i1 + m_dimensions[1] * i0)));
+        return m_data[index];
+      } else {
+        const Index index = i0 + m_dimensions[0] * (i1 + m_dimensions[1] * (i2 + m_dimensions[2] * (i3 + m_dimensions[3] * i4)));
+        return m_data[index];
+      }
+    }
+#endif
+
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Self& operator=(const Self& other)
+    {
+      typedef TensorAssignOp<Self, const Self> Assign;
+      Assign assign(*this, other);
+      internal::TensorExecutor<const Assign, DefaultDevice>::run(assign, DefaultDevice());
+      return *this;
+    }
+
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    Self& operator=(const OtherDerived& other)
+    {
+      typedef TensorAssignOp<Self, const OtherDerived> Assign;
+      Assign assign(*this, other);
+      internal::TensorExecutor<const Assign, DefaultDevice>::run(assign, DefaultDevice());
+      return *this;
+    }
+
+  private:
+    typename MakePointer_<Scalar>::Type m_data;
+    Dimensions m_dimensions;
+};
+
+} // end namespace Eigen
+
+#endif // EIGEN_CXX11_TENSOR_TENSOR_MAP_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorContractionCuda.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorContractionCuda.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorContractionCuda.h	(revision 3762)
@@ -0,0 +1,1391 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2014-2015 Benoit Steiner <benoit.steiner.goog@gmail.com>
+// Copyright (C) 2015 Navdeep Jaitly <ndjaitly@google.com>
+// Copyright (C) 2014 Eric Martin <eric@ericmart.in>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CXX11_TENSOR_TENSOR_CONTRACTION_CUDA_H
+#define EIGEN_CXX11_TENSOR_TENSOR_CONTRACTION_CUDA_H
+
+#if defined(EIGEN_USE_GPU) && defined(__CUDACC__)
+
+namespace Eigen {
+
+template<typename Scalar, typename Index, typename LhsMapper,
+         typename RhsMapper, typename OutputMapper, bool needs_edge_check>
+__device__ EIGEN_STRONG_INLINE void
+EigenContractionKernelInternal(const LhsMapper lhs, const RhsMapper rhs,
+                               const OutputMapper output, Scalar* lhs_shmem, Scalar* rhs_shmem,
+                       const Index m_size, const Index n_size, const Index k_size) {
+
+  const Index m_block_idx = blockIdx.x;
+  const Index n_block_idx = blockIdx.y;
+
+  const Index base_m = 64 * m_block_idx;
+  const Index base_n = 64 * n_block_idx;
+
+  // declare and initialize 64 registers for output 8x8 block
+
+  // prefetch registers
+  Scalar lhs_pf0;
+  Scalar lhs_pf1;
+  Scalar lhs_pf2;
+  Scalar lhs_pf3;
+  Scalar lhs_pf4;
+  Scalar lhs_pf5;
+  Scalar lhs_pf6;
+  Scalar lhs_pf7;
+
+  Scalar rhs_pf0;
+  Scalar rhs_pf1;
+  Scalar rhs_pf2;
+  Scalar rhs_pf3;
+  Scalar rhs_pf4;
+  Scalar rhs_pf5;
+  Scalar rhs_pf6;
+  Scalar rhs_pf7;
+
+  // shared memory is formatted
+  // (contract idx in block, nocontract idx in block, block idx)
+  // where block idx is column major. This transposition limits the number of
+  // bank conflicts when reading the LHS. The core idea is that since the contracting
+  // index is shared by both sides, then the contracting index should be in threadIdx.x.
+
+  // On the LHS, we pad each row inside of each block with an extra element. This makes
+  // each block 8 rows of 9 elements, which is 72 elements. This gives no bank conflicts
+  // on writes and very few 2-way conflicts on reads. There is an 8x8 grid of these blocks.
+
+  // On the RHS we just add 8 padding elements to the end of each block. This gives no bank
+  // conflicts on writes and also none on reads.
+
+  // storage indices
+  const Index lhs_store_idx_base = threadIdx.y * 72 + threadIdx.x * 9 + threadIdx.z;
+  const Index rhs_store_idx_base = threadIdx.y * 72 + threadIdx.z * 8 + threadIdx.x;
+
+  const Index lhs_store_idx_0 = lhs_store_idx_base + 576 * 0;
+  const Index lhs_store_idx_1 = lhs_store_idx_base + 576 * 1;
+  const Index lhs_store_idx_2 = lhs_store_idx_base + 576 * 2;
+  const Index lhs_store_idx_3 = lhs_store_idx_base + 576 * 3;
+  const Index lhs_store_idx_4 = lhs_store_idx_base + 576 * 4;
+  const Index lhs_store_idx_5 = lhs_store_idx_base + 576 * 5;
+  const Index lhs_store_idx_6 = lhs_store_idx_base + 576 * 6;
+  const Index lhs_store_idx_7 = lhs_store_idx_base + 576 * 7;
+
+  const Index rhs_store_idx_0 = rhs_store_idx_base + 576 * 0;
+  const Index rhs_store_idx_1 = rhs_store_idx_base + 576 * 1;
+  const Index rhs_store_idx_2 = rhs_store_idx_base + 576 * 2;
+  const Index rhs_store_idx_3 = rhs_store_idx_base + 576 * 3;
+  const Index rhs_store_idx_4 = rhs_store_idx_base + 576 * 4;
+  const Index rhs_store_idx_5 = rhs_store_idx_base + 576 * 5;
+  const Index rhs_store_idx_6 = rhs_store_idx_base + 576 * 6;
+  const Index rhs_store_idx_7 = rhs_store_idx_base + 576 * 7;
+
+  // in the loading code, the following variables are important:
+  // threadIdx.x: the vertical position in an 8x8 block
+  // threadIdx.y: the vertical index of the 8x8 block in the grid
+  // threadIdx.z: the horizontal position in an 8x8 block
+  // k: the horizontal index of the 8x8 block in the grid
+  //
+  // The k parameter is implicit (it was the loop counter for a loop that went
+  // from 0 to <8, but now that loop is unrolled in the below code.
+
+  const Index load_idx_vert = threadIdx.x + 8 * threadIdx.y;
+  const Index lhs_vert = base_m + load_idx_vert;
+
+#define prefetchIntoRegisters(base_k)                           \
+  {                                                             \
+    lhs_pf0 = conv(0);                                          \
+    lhs_pf1 = conv(0);                                          \
+    lhs_pf2 = conv(0);                                          \
+    lhs_pf3 = conv(0);                                          \
+    lhs_pf4 = conv(0);                                          \
+    lhs_pf5 = conv(0);                                          \
+    lhs_pf6 = conv(0);                                          \
+    lhs_pf7 = conv(0);                                          \
+                                                                \
+    rhs_pf0 = conv(0);                                          \
+    rhs_pf1 = conv(0);                                          \
+    rhs_pf2 = conv(0);                                          \
+    rhs_pf3 = conv(0);                                          \
+    rhs_pf4 = conv(0);                                          \
+    rhs_pf5 = conv(0);                                          \
+    rhs_pf6 = conv(0);                                          \
+    rhs_pf7 = conv(0);                                          \
+                                                                \
+    if (!needs_edge_check || lhs_vert < m_size) {               \
+      const Index lhs_horiz_0 = base_k + threadIdx.z + 0 * 8;   \
+      const Index lhs_horiz_1 = base_k + threadIdx.z + 1 * 8;   \
+      const Index lhs_horiz_2 = base_k + threadIdx.z + 2 * 8;   \
+      const Index lhs_horiz_3 = base_k + threadIdx.z + 3 * 8;   \
+      const Index lhs_horiz_4 = base_k + threadIdx.z + 4 * 8;   \
+      const Index lhs_horiz_5 = base_k + threadIdx.z + 5 * 8;   \
+      const Index lhs_horiz_6 = base_k + threadIdx.z + 6 * 8;   \
+      const Index lhs_horiz_7 = base_k + threadIdx.z + 7 * 8;   \
+                                                                \
+      if (!needs_edge_check || lhs_horiz_7 < k_size) {          \
+        lhs_pf0 = lhs(lhs_vert, lhs_horiz_0);                   \
+        lhs_pf1 = lhs(lhs_vert, lhs_horiz_1);                   \
+        lhs_pf2 = lhs(lhs_vert, lhs_horiz_2);                   \
+        lhs_pf3 = lhs(lhs_vert, lhs_horiz_3);                   \
+        lhs_pf4 = lhs(lhs_vert, lhs_horiz_4);                   \
+        lhs_pf5 = lhs(lhs_vert, lhs_horiz_5);                   \
+        lhs_pf6 = lhs(lhs_vert, lhs_horiz_6);                   \
+        lhs_pf7 = lhs(lhs_vert, lhs_horiz_7);                   \
+      } else if (lhs_horiz_6 < k_size) {                        \
+        lhs_pf0 = lhs(lhs_vert, lhs_horiz_0);                   \
+        lhs_pf1 = lhs(lhs_vert, lhs_horiz_1);                   \
+        lhs_pf2 = lhs(lhs_vert, lhs_horiz_2);                   \
+        lhs_pf3 = lhs(lhs_vert, lhs_horiz_3);                   \
+        lhs_pf4 = lhs(lhs_vert, lhs_horiz_4);                   \
+        lhs_pf5 = lhs(lhs_vert, lhs_horiz_5);                   \
+        lhs_pf6 = lhs(lhs_vert, lhs_horiz_6);                   \
+      } else if (lhs_horiz_5 < k_size) {                        \
+        lhs_pf0 = lhs(lhs_vert, lhs_horiz_0);                   \
+        lhs_pf1 = lhs(lhs_vert, lhs_horiz_1);                   \
+        lhs_pf2 = lhs(lhs_vert, lhs_horiz_2);                   \
+        lhs_pf3 = lhs(lhs_vert, lhs_horiz_3);                   \
+        lhs_pf4 = lhs(lhs_vert, lhs_horiz_4);                   \
+        lhs_pf5 = lhs(lhs_vert, lhs_horiz_5);                   \
+      } else if (lhs_horiz_4 < k_size) {                        \
+        lhs_pf0 = lhs(lhs_vert, lhs_horiz_0);                   \
+        lhs_pf1 = lhs(lhs_vert, lhs_horiz_1);                   \
+        lhs_pf2 = lhs(lhs_vert, lhs_horiz_2);                   \
+        lhs_pf3 = lhs(lhs_vert, lhs_horiz_3);                   \
+        lhs_pf4 = lhs(lhs_vert, lhs_horiz_4);                   \
+      } else if (lhs_horiz_3 < k_size) {                        \
+        lhs_pf0 = lhs(lhs_vert, lhs_horiz_0);                   \
+        lhs_pf1 = lhs(lhs_vert, lhs_horiz_1);                   \
+        lhs_pf2 = lhs(lhs_vert, lhs_horiz_2);                   \
+        lhs_pf3 = lhs(lhs_vert, lhs_horiz_3);                   \
+      } else if (lhs_horiz_2 < k_size) {                        \
+        lhs_pf0 = lhs(lhs_vert, lhs_horiz_0);                   \
+        lhs_pf1 = lhs(lhs_vert, lhs_horiz_1);                   \
+        lhs_pf2 = lhs(lhs_vert, lhs_horiz_2);                   \
+      } else if (lhs_horiz_1 < k_size) {                        \
+        lhs_pf0 = lhs(lhs_vert, lhs_horiz_0);                   \
+        lhs_pf1 = lhs(lhs_vert, lhs_horiz_1);                   \
+      } else if (lhs_horiz_0 < k_size) {                        \
+        lhs_pf0 = lhs(lhs_vert, lhs_horiz_0);                   \
+      }                                                         \
+    }                                                           \
+                                                                \
+    const Index rhs_vert = base_k + load_idx_vert;              \
+    if (!needs_edge_check || rhs_vert < k_size) {               \
+      const Index rhs_horiz_0 = base_n + threadIdx.z + 0 * 8;   \
+      const Index rhs_horiz_1 = base_n + threadIdx.z + 1 * 8;   \
+      const Index rhs_horiz_2 = base_n + threadIdx.z + 2 * 8;   \
+      const Index rhs_horiz_3 = base_n + threadIdx.z + 3 * 8;   \
+      const Index rhs_horiz_4 = base_n + threadIdx.z + 4 * 8;   \
+      const Index rhs_horiz_5 = base_n + threadIdx.z + 5 * 8;   \
+      const Index rhs_horiz_6 = base_n + threadIdx.z + 6 * 8;   \
+      const Index rhs_horiz_7 = base_n + threadIdx.z + 7 * 8;   \
+                                                                \
+      if (rhs_horiz_7 < n_size) {                               \
+        rhs_pf0 = rhs(rhs_vert, rhs_horiz_0);                   \
+        rhs_pf1 = rhs(rhs_vert, rhs_horiz_1);                   \
+        rhs_pf2 = rhs(rhs_vert, rhs_horiz_2);                   \
+        rhs_pf3 = rhs(rhs_vert, rhs_horiz_3);                   \
+        rhs_pf4 = rhs(rhs_vert, rhs_horiz_4);                   \
+        rhs_pf5 = rhs(rhs_vert, rhs_horiz_5);                   \
+        rhs_pf6 = rhs(rhs_vert, rhs_horiz_6);                   \
+        rhs_pf7 = rhs(rhs_vert, rhs_horiz_7);                   \
+      } else if (rhs_horiz_6 < n_size) {                        \
+        rhs_pf0 = rhs(rhs_vert, rhs_horiz_0);                   \
+        rhs_pf1 = rhs(rhs_vert, rhs_horiz_1);                   \
+        rhs_pf2 = rhs(rhs_vert, rhs_horiz_2);                   \
+        rhs_pf3 = rhs(rhs_vert, rhs_horiz_3);                   \
+        rhs_pf4 = rhs(rhs_vert, rhs_horiz_4);                   \
+        rhs_pf5 = rhs(rhs_vert, rhs_horiz_5);                   \
+        rhs_pf6 = rhs(rhs_vert, rhs_horiz_6);                   \
+      } else if (rhs_horiz_5 < n_size) {                        \
+        rhs_pf0 = rhs(rhs_vert, rhs_horiz_0);                   \
+        rhs_pf1 = rhs(rhs_vert, rhs_horiz_1);                   \
+        rhs_pf2 = rhs(rhs_vert, rhs_horiz_2);                   \
+        rhs_pf3 = rhs(rhs_vert, rhs_horiz_3);                   \
+        rhs_pf4 = rhs(rhs_vert, rhs_horiz_4);                   \
+        rhs_pf5 = rhs(rhs_vert, rhs_horiz_5);                   \
+      } else if (rhs_horiz_4 < n_size) {                        \
+        rhs_pf0 = rhs(rhs_vert, rhs_horiz_0);                   \
+        rhs_pf1 = rhs(rhs_vert, rhs_horiz_1);                   \
+        rhs_pf2 = rhs(rhs_vert, rhs_horiz_2);                   \
+        rhs_pf3 = rhs(rhs_vert, rhs_horiz_3);                   \
+        rhs_pf4 = rhs(rhs_vert, rhs_horiz_4);                   \
+      } else if (rhs_horiz_3 < n_size) {                        \
+        rhs_pf0 = rhs(rhs_vert, rhs_horiz_0);                   \
+        rhs_pf1 = rhs(rhs_vert, rhs_horiz_1);                   \
+        rhs_pf2 = rhs(rhs_vert, rhs_horiz_2);                   \
+        rhs_pf3 = rhs(rhs_vert, rhs_horiz_3);                   \
+      } else if (rhs_horiz_2 < n_size) {                        \
+        rhs_pf0 = rhs(rhs_vert, rhs_horiz_0);                   \
+        rhs_pf1 = rhs(rhs_vert, rhs_horiz_1);                   \
+        rhs_pf2 = rhs(rhs_vert, rhs_horiz_2);                   \
+      } else if (rhs_horiz_1 < n_size) {                        \
+        rhs_pf0 = rhs(rhs_vert, rhs_horiz_0);                   \
+        rhs_pf1 = rhs(rhs_vert, rhs_horiz_1);                   \
+      } else if (rhs_horiz_0 < n_size) {                        \
+        rhs_pf0 = rhs(rhs_vert, rhs_horiz_0);                   \
+      }                                                         \
+    }                                                           \
+  }                                                             \
+
+#define writeRegToShmem(_)                      \
+  lhs_shmem[lhs_store_idx_0] = lhs_pf0;         \
+  rhs_shmem[rhs_store_idx_0] = rhs_pf0;         \
+                                                \
+  lhs_shmem[lhs_store_idx_1] = lhs_pf1;         \
+  rhs_shmem[rhs_store_idx_1] = rhs_pf1;         \
+                                                \
+  lhs_shmem[lhs_store_idx_2] = lhs_pf2;         \
+  rhs_shmem[rhs_store_idx_2] = rhs_pf2;         \
+                                                \
+  lhs_shmem[lhs_store_idx_3] = lhs_pf3;         \
+  rhs_shmem[rhs_store_idx_3] = rhs_pf3;         \
+                                                \
+  lhs_shmem[lhs_store_idx_4] = lhs_pf4;         \
+  rhs_shmem[rhs_store_idx_4] = rhs_pf4;         \
+                                                \
+  lhs_shmem[lhs_store_idx_5] = lhs_pf5;         \
+  rhs_shmem[rhs_store_idx_5] = rhs_pf5;         \
+                                                \
+  lhs_shmem[lhs_store_idx_6] = lhs_pf6;         \
+  rhs_shmem[rhs_store_idx_6] = rhs_pf6;         \
+                                                \
+  lhs_shmem[lhs_store_idx_7] = lhs_pf7;         \
+  rhs_shmem[rhs_store_idx_7] = rhs_pf7;         \
+
+  // declare and initialize result array
+#define res(i, j) _res_##i##j
+#define initResultRow(i)                        \
+  Scalar res(i, 0) = conv(0);                   \
+  Scalar res(i, 1) = conv(0);                   \
+  Scalar res(i, 2) = conv(0);                   \
+  Scalar res(i, 3) = conv(0);                   \
+  Scalar res(i, 4) = conv(0);                   \
+  Scalar res(i, 5) = conv(0);                   \
+  Scalar res(i, 6) = conv(0);                   \
+  Scalar res(i, 7) = conv(0);                   \
+
+  internal::scalar_cast_op<int, Scalar> conv;
+  initResultRow(0);
+  initResultRow(1);
+  initResultRow(2);
+  initResultRow(3);
+  initResultRow(4);
+  initResultRow(5);
+  initResultRow(6);
+  initResultRow(7);
+#undef initResultRow
+
+  for (Index base_k = 0; base_k < k_size; base_k += 64) {
+    // wait for previous iteration to finish with shmem. Despite common sense,
+    // the code is a bit faster with this here then at bottom of loop
+    __syncthreads();
+
+    prefetchIntoRegisters(base_k);
+    writeRegToShmem();
+
+    #undef prefetchIntoRegisters
+    #undef writeRegToShmem
+
+    // wait for shared mem packing to be done before starting computation
+    __syncthreads();
+
+    // compute 8x8 matrix product by outer product. This involves packing one column
+    // of LHS and one row of RHS into registers (takes 16 registers).
+
+#define lcol(i) _lcol##i
+    Scalar lcol(0);
+    Scalar lcol(1);
+    Scalar lcol(2);
+    Scalar lcol(3);
+    Scalar lcol(4);
+    Scalar lcol(5);
+    Scalar lcol(6);
+    Scalar lcol(7);
+
+#define rrow(j) _rrow##j
+    Scalar rrow(0);
+    Scalar rrow(1);
+    Scalar rrow(2);
+    Scalar rrow(3);
+    Scalar rrow(4);
+    Scalar rrow(5);
+    Scalar rrow(6);
+    Scalar rrow(7);
+
+    // Now x corresponds to k, y to m, and z to n
+    const Scalar* lhs_block = &lhs_shmem[threadIdx.x + 9 * threadIdx.y];
+    const Scalar* rhs_block = &rhs_shmem[threadIdx.x + 8 * threadIdx.z];
+
+#define lhs_element(i, j) lhs_block[72 * ((i) + 8 * (j))]
+#define rhs_element(i, j) rhs_block[72 * ((i) + 8 * (j))]
+
+#define loadData(i, j)                          \
+    lcol(0) = lhs_element(0, j);               \
+    rrow(0) = rhs_element(i, 0);               \
+    lcol(1) = lhs_element(1, j);               \
+    rrow(1) = rhs_element(i, 1);               \
+    lcol(2) = lhs_element(2, j);               \
+    rrow(2) = rhs_element(i, 2);               \
+    lcol(3) = lhs_element(3, j);               \
+    rrow(3) = rhs_element(i, 3);               \
+    lcol(4) = lhs_element(4, j);               \
+    rrow(4) = rhs_element(i, 4);               \
+    lcol(5) = lhs_element(5, j);               \
+    rrow(5) = rhs_element(i, 5);               \
+    lcol(6) = lhs_element(6, j);               \
+    rrow(6) = rhs_element(i, 6);               \
+    lcol(7) = lhs_element(7, j);               \
+    rrow(7) = rhs_element(i, 7);               \
+
+#define computeCol(j)                           \
+    res(0, j) += lcol(0) * rrow(j);             \
+    res(1, j) += lcol(1) * rrow(j);             \
+    res(2, j) += lcol(2) * rrow(j);             \
+    res(3, j) += lcol(3) * rrow(j);             \
+    res(4, j) += lcol(4) * rrow(j);             \
+    res(5, j) += lcol(5) * rrow(j);             \
+    res(6, j) += lcol(6) * rrow(j);             \
+    res(7, j) += lcol(7) * rrow(j);             \
+
+#define computePass(i)                          \
+    loadData(i, i);                             \
+                                                \
+    computeCol(0);                              \
+    computeCol(1);                              \
+    computeCol(2);                              \
+    computeCol(3);                              \
+    computeCol(4);                              \
+    computeCol(5);                              \
+    computeCol(6);                              \
+    computeCol(7);                              \
+
+    computePass(0);
+    computePass(1);
+    computePass(2);
+    computePass(3);
+    computePass(4);
+    computePass(5);
+    computePass(6);
+    computePass(7);
+
+#undef lcol
+#undef rrow
+#undef lhs_element
+#undef rhs_element
+#undef loadData
+#undef computeCol
+#undef computePass
+  } // end loop over k
+
+  // we've now iterated over all of the large (ie width 64) k blocks and
+  // accumulated results in registers. At this point thread (x, y, z) contains
+  // the sum across all big k blocks of the product of little k block of index (x, y)
+  // with block of index (y, z). To compute the final output, we need to reduce
+  // the 8 threads over y by summation.
+#define shuffleInc(i, j, mask) res(i, j) += __shfl_xor(res(i, j), mask)
+
+#define reduceRow(i, mask)                      \
+  shuffleInc(i, 0, mask);                       \
+  shuffleInc(i, 1, mask);                       \
+  shuffleInc(i, 2, mask);                       \
+  shuffleInc(i, 3, mask);                       \
+  shuffleInc(i, 4, mask);                       \
+  shuffleInc(i, 5, mask);                       \
+  shuffleInc(i, 6, mask);                       \
+  shuffleInc(i, 7, mask);                       \
+
+#define reduceMatrix(mask)                      \
+  reduceRow(0, mask);                           \
+  reduceRow(1, mask);                           \
+  reduceRow(2, mask);                           \
+  reduceRow(3, mask);                           \
+  reduceRow(4, mask);                           \
+  reduceRow(5, mask);                           \
+  reduceRow(6, mask);                           \
+  reduceRow(7, mask);                           \
+
+  // actually perform the reduction, now each thread of index (_, y, z)
+  // contains the correct values in its registers that belong in the output
+  // block
+  reduceMatrix(1);
+  reduceMatrix(2);
+  reduceMatrix(4);
+
+#undef shuffleInc
+#undef reduceRow
+#undef reduceMatrix
+
+  // now we need to copy the 64 values into main memory. We can't split work
+  // among threads because all variables are in registers. There's 2 ways
+  // to do this:
+  // (1) have 1 thread do 64 writes from registers into global memory
+  // (2) have 1 thread do 64 writes into shared memory, and then 8 threads
+  //     each do 8 writes into global memory. We can just overwrite the shared
+  //     memory from the problem we just solved.
+  // (2) is slightly faster than (1) due to less branching and more ILP
+
+  // TODO: won't yield much gain, but could just use currently unused shared mem
+  //       and then we won't have to sync
+  // wait for shared mem to be out of use
+  __syncthreads();
+
+#define writeResultShmem(i, j)                                          \
+  lhs_shmem[i + 8 * threadIdx.y + 64 * threadIdx.z + 512 * j] = res(i, j); \
+
+#define writeRow(i)                             \
+  writeResultShmem(i, 0);                       \
+  writeResultShmem(i, 1);                       \
+  writeResultShmem(i, 2);                       \
+  writeResultShmem(i, 3);                       \
+  writeResultShmem(i, 4);                       \
+  writeResultShmem(i, 5);                       \
+  writeResultShmem(i, 6);                       \
+  writeResultShmem(i, 7);                       \
+
+  if (threadIdx.x == 0) {
+    writeRow(0);
+    writeRow(1);
+    writeRow(2);
+    writeRow(3);
+    writeRow(4);
+    writeRow(5);
+    writeRow(6);
+    writeRow(7);
+  }
+#undef writeResultShmem
+#undef writeRow
+
+  const int max_i_write = numext::mini((int)((m_size - base_m - threadIdx.y + 7) / 8), 8);
+  const int max_j_write = numext::mini((int)((n_size - base_n - threadIdx.z + 7) / 8), 8);
+
+  if (threadIdx.x < max_i_write) {
+    if (max_j_write == 8) {
+      // TODO: can i trade bank conflicts for coalesced writes?
+      Scalar val0 = lhs_shmem[threadIdx.x + 8 * threadIdx.y + 64 * threadIdx.z + 512 * 0];
+      Scalar val1 = lhs_shmem[threadIdx.x + 8 * threadIdx.y + 64 * threadIdx.z + 512 * 1];
+      Scalar val2 = lhs_shmem[threadIdx.x + 8 * threadIdx.y + 64 * threadIdx.z + 512 * 2];
+      Scalar val3 = lhs_shmem[threadIdx.x + 8 * threadIdx.y + 64 * threadIdx.z + 512 * 3];
+      Scalar val4 = lhs_shmem[threadIdx.x + 8 * threadIdx.y + 64 * threadIdx.z + 512 * 4];
+      Scalar val5 = lhs_shmem[threadIdx.x + 8 * threadIdx.y + 64 * threadIdx.z + 512 * 5];
+      Scalar val6 = lhs_shmem[threadIdx.x + 8 * threadIdx.y + 64 * threadIdx.z + 512 * 6];
+      Scalar val7 = lhs_shmem[threadIdx.x + 8 * threadIdx.y + 64 * threadIdx.z + 512 * 7];
+
+      output(base_m + threadIdx.y + 8 * threadIdx.x, base_n + threadIdx.z + 8 * 0) = val0;
+      output(base_m + threadIdx.y + 8 * threadIdx.x, base_n + threadIdx.z + 8 * 1) = val1;
+      output(base_m + threadIdx.y + 8 * threadIdx.x, base_n + threadIdx.z + 8 * 2) = val2;
+      output(base_m + threadIdx.y + 8 * threadIdx.x, base_n + threadIdx.z + 8 * 3) = val3;
+      output(base_m + threadIdx.y + 8 * threadIdx.x, base_n + threadIdx.z + 8 * 4) = val4;
+      output(base_m + threadIdx.y + 8 * threadIdx.x, base_n + threadIdx.z + 8 * 5) = val5;
+      output(base_m + threadIdx.y + 8 * threadIdx.x, base_n + threadIdx.z + 8 * 6) = val6;
+      output(base_m + threadIdx.y + 8 * threadIdx.x, base_n + threadIdx.z + 8 * 7) = val7;
+    } else {
+#pragma unroll 7
+      for (int j = 0; j < max_j_write; j++) {
+        Scalar val = lhs_shmem[threadIdx.x + 8 * threadIdx.y + 64 * threadIdx.z + 512 * j];
+        output(base_m + threadIdx.y + 8 * threadIdx.x, base_n + threadIdx.z + 8 * j) = val;
+      }
+    }
+  }
+#undef res
+}
+
+
+template<typename Scalar, typename Index, typename LhsMapper,
+         typename RhsMapper, typename OutputMapper>
+__global__ void
+__launch_bounds__(512)
+EigenContractionKernel(const LhsMapper lhs, const RhsMapper rhs,
+                       const OutputMapper output,
+                       const Index m_size, const Index n_size, const Index k_size) {
+  __shared__ Scalar lhs_shmem[72 * 64];
+  __shared__ Scalar rhs_shmem[72 * 64];
+
+  const Index m_block_idx = blockIdx.x;
+  const Index n_block_idx = blockIdx.y;
+
+  const Index base_m = 64 * m_block_idx;
+  const Index base_n = 64 * n_block_idx;
+
+  if (base_m + 63 < m_size && base_n + 63 < n_size) {
+    EigenContractionKernelInternal<Scalar, Index, LhsMapper, RhsMapper, OutputMapper, false>(lhs, rhs, output, lhs_shmem, rhs_shmem, m_size, n_size, k_size);
+  } else {
+    EigenContractionKernelInternal<Scalar, Index, LhsMapper, RhsMapper, OutputMapper, true>(lhs, rhs, output, lhs_shmem, rhs_shmem, m_size, n_size, k_size);
+  }
+}
+
+
+template<typename Index, typename LhsMapper,
+         typename RhsMapper, typename OutputMapper, bool CHECK_LHS_BOUNDARY,
+         bool CHECK_RHS_BOUNDARY>
+__device__ EIGEN_STRONG_INLINE void
+EigenFloatContractionKernelInternal16x16(const LhsMapper lhs, const RhsMapper rhs,
+                       const OutputMapper output, float2 lhs_shmem2[][16],
+                       float2 rhs_shmem2[][8], const Index m_size,
+                       const Index n_size, const Index k_size,
+                       const Index base_m, const Index base_n) {
+  typedef float Scalar;
+
+  // prefetch registers
+  float4 lhs_pf0, rhs_pf0;
+
+  float4 results[4];
+  for (int i=0; i < 4; i++) {
+    results[i].x = results[i].y = results[i].z = results[i].w = 0;
+  }
+
+
+#define prefetch_lhs(reg, row, col)                   \
+    if (!CHECK_LHS_BOUNDARY) {                        \
+      if (col < k_size) {                             \
+        reg =lhs.loadPacket<Unaligned>(row, col);     \
+      }                                               \
+    } else {                                          \
+      if (col < k_size) {                             \
+        if (row + 3 < m_size) {                       \
+          reg =lhs.loadPacket<Unaligned>(row, col);   \
+        } else if (row + 2 < m_size) {                \
+          reg.x =lhs(row + 0, col);                   \
+          reg.y =lhs(row + 1, col);                   \
+          reg.z =lhs(row + 2, col);                   \
+        } else if (row + 1 < m_size) {                \
+          reg.x =lhs(row + 0, col);                   \
+          reg.y =lhs(row + 1, col);                   \
+        } else if (row  < m_size) {                   \
+          reg.x =lhs(row + 0, col);                   \
+        }                                             \
+      }                                               \
+    }                                                 \
+
+
+  Index lhs_vert = base_m+threadIdx.x*4;
+
+  for (Index k = 0; k < k_size; k += 16) {
+    lhs_pf0 = internal::pset1<float4>(0);
+    rhs_pf0 = internal::pset1<float4>(0);
+
+    Index lhs_horiz = threadIdx.y+k;
+    prefetch_lhs(lhs_pf0, lhs_vert, lhs_horiz)
+
+    Index rhs_vert = k+(threadIdx.x%4)*4;
+    Index rhs_horiz0 = (threadIdx.x>>2)+threadIdx.y*4+base_n;
+
+    if (!CHECK_RHS_BOUNDARY) {
+      if ((rhs_vert + 3) < k_size) {
+        // just CHECK_RHS_BOUNDARY
+        rhs_pf0 = rhs.loadPacket<Unaligned>(rhs_vert, rhs_horiz0);
+      } else if (rhs_vert + 2 < k_size) {
+        // just CHECK_RHS_BOUNDARY
+        rhs_pf0.x = rhs(rhs_vert, rhs_horiz0);
+        rhs_pf0.y = rhs(rhs_vert + 1, rhs_horiz0);
+        rhs_pf0.z = rhs(rhs_vert + 2, rhs_horiz0);
+      } else if (rhs_vert + 1 < k_size) {
+        rhs_pf0.x = rhs(rhs_vert, rhs_horiz0);
+        rhs_pf0.y = rhs(rhs_vert + 1, rhs_horiz0);
+      } else if (rhs_vert  < k_size) {
+        rhs_pf0.x = rhs(rhs_vert, rhs_horiz0);
+      }
+    } else {
+      if (rhs_horiz0 < n_size) {
+        if ((rhs_vert + 3) < k_size) {
+          rhs_pf0 = rhs.loadPacket<Unaligned>(rhs_vert, rhs_horiz0);
+        } else if ((rhs_vert + 2) < k_size) {
+          rhs_pf0.x = rhs(rhs_vert, rhs_horiz0);
+          rhs_pf0.y = rhs(rhs_vert + 1, rhs_horiz0);
+          rhs_pf0.z = rhs(rhs_vert + 2, rhs_horiz0);
+        } else if ((rhs_vert + 1) < k_size) {
+          rhs_pf0.x = rhs(rhs_vert, rhs_horiz0);
+          rhs_pf0.y = rhs(rhs_vert + 1, rhs_horiz0);
+        } else if (rhs_vert  < k_size) {
+          rhs_pf0.x = rhs(rhs_vert, rhs_horiz0);
+        }
+      }
+    }
+    float x1, x2 ;
+    // the following can be a bitwise operation..... some day.
+    if((threadIdx.x%8) < 4) {
+      x1 = rhs_pf0.y;
+      x2 = rhs_pf0.w;
+    } else {
+      x1 = rhs_pf0.x;
+      x2 = rhs_pf0.z;
+    }
+    x1 = __shfl_xor(x1, 4);
+    x2 = __shfl_xor(x2, 4);
+    if((threadIdx.x%8) < 4) {
+      rhs_pf0.y = x1;
+      rhs_pf0.w = x2;
+    } else {
+      rhs_pf0.x = x1;
+      rhs_pf0.z = x2;
+    }
+
+    // We have 64 features.
+    // Row 0 -> times (0, 4, 8, 12, 1, 5, 9, 13) for features 0, 1.
+    // Row 1 -> times (0, 4, 8, 12, 1, 5, 9, 13) for features 2, 3.
+    // ...
+    // Row 31 -> times (0, 4, 8, 12, 1, 5, 9, 13) for features 62, 63
+    // Row 32 -> times (2, 6, 10, 14, 3, 7, 11, 15) for features 0, 1
+    // ...
+    rhs_shmem2[(threadIdx.x>>3)+ threadIdx.y*2][threadIdx.x%8] = make_float2(rhs_pf0.x, rhs_pf0.y);
+    rhs_shmem2[(threadIdx.x>>3)+ threadIdx.y*2+32][threadIdx.x%8] = make_float2(rhs_pf0.z, rhs_pf0.w);
+
+    // Row 0 (time 0) -> features (0, 1), (4, 5), .. (28, 29), (32, 33), ..  (60, 61)
+    // Row 1 (time 1) -> features (0, 1), (4, 5), .. (28, 29), (32, 33), ..  (60, 61)
+    // ...
+    // Row 15 (time 15) -> features (0, 1), (4, 5), .. (28, 29), (32, 33), ..  (60, 61)
+    // Row 16 (time 0) -> features (2, 3), (6, 7), .. (30, 31), (34, 35), ..  (62, 63)
+    // ...
+
+    lhs_shmem2[threadIdx.y][threadIdx.x] = make_float2(lhs_pf0.x, lhs_pf0.y);
+    lhs_shmem2[threadIdx.y+16][threadIdx.x] = make_float2(lhs_pf0.z, lhs_pf0.w);
+
+
+#define add_vals(fl1, fl2, fr1, fr2)\
+    results[0].x += fl1.x * fr1.x;\
+    results[0].y += fl1.y * fr1.x;\
+    results[0].z += fl2.x * fr1.x;\
+    results[0].w += fl2.y * fr1.x;\
+\
+    results[1].x += fl1.x * fr1.y;\
+    results[1].y += fl1.y * fr1.y;\
+    results[1].z += fl2.x * fr1.y;\
+    results[1].w += fl2.y * fr1.y;\
+\
+    results[2].x += fl1.x * fr2.x;\
+    results[2].y += fl1.y * fr2.x;\
+    results[2].z += fl2.x * fr2.x;\
+    results[2].w += fl2.y * fr2.x;\
+\
+    results[3].x += fl1.x * fr2.y;\
+    results[3].y += fl1.y * fr2.y;\
+    results[3].z += fl2.x * fr2.y;\
+    results[3].w += fl2.y * fr2.y;\
+
+    __syncthreads();
+
+    // Do the multiplies.
+    #pragma unroll
+    for (int koff = 0; koff < 16; koff ++) {
+      // 32 x threads.
+      float2 fl1 = lhs_shmem2[koff][threadIdx.x];
+      float2 fl2 = lhs_shmem2[koff + 16][threadIdx.x];
+
+      int start_feature = threadIdx.y * 4;
+      float2 fr1 = rhs_shmem2[(start_feature>>1) + 32*((koff%4)/2)][koff/4 + (koff%2)*4];
+      float2 fr2 = rhs_shmem2[(start_feature>>1) + 1 + 32*((koff%4)/2)][koff/4 + (koff%2)*4];
+
+      add_vals(fl1, fl2, fr1, fr2)
+    }
+    __syncthreads();
+  }
+
+#undef prefetch_lhs
+#undef add_vals
+
+  Index horiz_base = threadIdx.y*4+base_n;
+  if (!CHECK_LHS_BOUNDARY && !CHECK_RHS_BOUNDARY) {
+    for (int i = 0; i < 4; i++) {
+      output(lhs_vert, horiz_base + i) = results[i].x;
+      output(lhs_vert + 1, horiz_base + i) = results[i].y;
+      output(lhs_vert + 2, horiz_base + i) = results[i].z;
+      output(lhs_vert + 3, horiz_base + i) = results[i].w;
+    }
+  } else if (!CHECK_RHS_BOUNDARY) {
+    // CHECK LHS
+    if (lhs_vert + 3 < m_size) {
+      for (int i = 0; i < 4; i++) {
+        output(lhs_vert, horiz_base + i) = results[i].x;
+        output(lhs_vert + 1, horiz_base + i) = results[i].y;
+        output(lhs_vert + 2, horiz_base + i) = results[i].z;
+        output(lhs_vert + 3, horiz_base + i) = results[i].w;
+      }
+    } else if (lhs_vert + 2 < m_size) {
+      for (int i = 0; i < 4; i++) {
+        output(lhs_vert, horiz_base + i) = results[i].x;
+        output(lhs_vert + 1, horiz_base + i) = results[i].y;
+        output(lhs_vert + 2, horiz_base + i) = results[i].z;
+      }
+    } else if (lhs_vert + 1 < m_size) {
+      for (int i = 0; i < 4; i++) {
+        output(lhs_vert, horiz_base + i) = results[i].x;
+        output(lhs_vert + 1, horiz_base + i) = results[i].y;
+      }
+    } else if (lhs_vert  < m_size) {
+      for (int i = 0; i < 4; i++) {
+        output(lhs_vert, horiz_base + i) = results[i].x;
+      }
+    }
+  } else if (!CHECK_LHS_BOUNDARY) {
+    // CHECK RHS
+    /*
+    int ncols_rem = fminf(n_size- horiz_base, 4);
+    for (int i = 0; i < ncols_rem; i++) {
+      output(lhs_vert, horiz_base + i) = results[i].x;
+      output(lhs_vert + 1, horiz_base + i) = results[i].y;
+      output(lhs_vert + 2, horiz_base + i) = results[i].z;
+      output(lhs_vert + 3, horiz_base + i) = results[i].w;
+    }*/
+    for (int i = 0; i < 4; i++) {
+      if (horiz_base+i < n_size) {
+        output(lhs_vert, horiz_base + i) = results[i].x;
+        output(lhs_vert + 1, horiz_base + i) = results[i].y;
+        output(lhs_vert + 2, horiz_base + i) = results[i].z;
+        output(lhs_vert + 3, horiz_base + i) = results[i].w;
+       }
+    }
+  } else {
+    // CHECK both boundaries.
+    for (int i = 0; i < 4; i++) {
+      if (horiz_base+i < n_size) {
+        if (lhs_vert < m_size)
+          output(lhs_vert, horiz_base + i) = results[i].x;
+        if (lhs_vert + 1 < m_size)
+          output(lhs_vert + 1, horiz_base + i) = results[i].y;
+        if (lhs_vert + 2 < m_size)
+          output(lhs_vert + 2, horiz_base + i) = results[i].z;
+        if (lhs_vert + 3 < m_size)
+          output(lhs_vert + 3, horiz_base + i) = results[i].w;
+      }
+    }
+  }
+}
+
+
+template<typename Index, typename LhsMapper,
+         typename RhsMapper, typename OutputMapper, bool CHECK_LHS_BOUNDARY,
+         bool CHECK_RHS_BOUNDARY>
+__device__ EIGEN_STRONG_INLINE void
+EigenFloatContractionKernelInternal(const LhsMapper lhs, const RhsMapper rhs,
+                       const OutputMapper output, float2 lhs_shmem2[][32],
+                       float2 rhs_shmem2[][8], const Index m_size,
+                       const Index n_size, const Index k_size,
+                       const Index base_m, const Index base_n) {
+  typedef float Scalar;
+
+  // prefetch registers
+  float4 lhs_pf0, lhs_pf1, lhs_pf2, lhs_pf3;
+  float4 rhs_pf0, rhs_pf1;
+
+  float4 results[8];
+  for (int i=0; i < 8; i++) {
+    results[i].x = results[i].y = results[i].z = results[i].w = 0;
+  }
+
+
+  Index lhs_vert = base_m+threadIdx.x*4+(threadIdx.y%4)*32;
+  for (Index k = 0; k < k_size; k += 32) {
+    lhs_pf0 = internal::pset1<float4>(0);
+    lhs_pf1 = internal::pset1<float4>(0);
+    lhs_pf2 = internal::pset1<float4>(0);
+    lhs_pf3 = internal::pset1<float4>(0);
+
+    rhs_pf0 = internal::pset1<float4>(0);
+    rhs_pf1 = internal::pset1<float4>(0);
+
+     if (!CHECK_LHS_BOUNDARY) {
+      if ((threadIdx.y/4+k+24) < k_size) {
+        lhs_pf0 =lhs.loadPacket<Unaligned>(lhs_vert, (threadIdx.y/4+k));
+        lhs_pf1 =lhs.loadPacket<Unaligned>(lhs_vert, (threadIdx.y/4+k+8));
+        lhs_pf2 =lhs.loadPacket<Unaligned>(lhs_vert, (threadIdx.y/4+k+16));
+        lhs_pf3 =lhs.loadPacket<Unaligned>(lhs_vert, (threadIdx.y/4+k+24));
+      } else if ((threadIdx.y/4+k+16) < k_size) {
+        lhs_pf0 =lhs.loadPacket<Unaligned>(lhs_vert, (threadIdx.y/4+k));
+        lhs_pf1 =lhs.loadPacket<Unaligned>(lhs_vert, (threadIdx.y/4+k+8));
+        lhs_pf2 =lhs.loadPacket<Unaligned>(lhs_vert, (threadIdx.y/4+k+16));
+      } else if ((threadIdx.y/4+k+8) < k_size) {
+        lhs_pf0 =lhs.loadPacket<Unaligned>(lhs_vert, (threadIdx.y/4+k));
+        lhs_pf1 =lhs.loadPacket<Unaligned>(lhs_vert, (threadIdx.y/4+k+8));
+      } else if ((threadIdx.y/4+k) < k_size) {
+        lhs_pf0 =lhs.loadPacket<Unaligned>(lhs_vert, (threadIdx.y/4+k));
+      }
+    } else {
+      // just CHECK_LHS_BOUNDARY
+      if (lhs_vert + 3 < m_size) {
+        if ((threadIdx.y/4+k+24) < k_size) {
+          lhs_pf0 =lhs.loadPacket<Unaligned>(lhs_vert, (threadIdx.y/4+k));
+          lhs_pf1 =lhs.loadPacket<Unaligned>(lhs_vert, (threadIdx.y/4+k+8));
+          lhs_pf2 =lhs.loadPacket<Unaligned>(lhs_vert, (threadIdx.y/4+k+16));
+          lhs_pf3 =lhs.loadPacket<Unaligned>(lhs_vert, (threadIdx.y/4+k+24));
+        } else if ((threadIdx.y/4+k+16) < k_size) {
+          lhs_pf0 =lhs.loadPacket<Unaligned>(lhs_vert, (threadIdx.y/4+k));
+          lhs_pf1 =lhs.loadPacket<Unaligned>(lhs_vert, (threadIdx.y/4+k+8));
+          lhs_pf2 =lhs.loadPacket<Unaligned>(lhs_vert, (threadIdx.y/4+k+16));
+        } else if ((threadIdx.y/4+k+8) < k_size) {
+          lhs_pf0 =lhs.loadPacket<Unaligned>(lhs_vert, (threadIdx.y/4+k));
+          lhs_pf1 =lhs.loadPacket<Unaligned>(lhs_vert, (threadIdx.y/4+k+8));
+        } else if ((threadIdx.y/4+k) < k_size) {
+          lhs_pf0 =lhs.loadPacket<Unaligned>(lhs_vert, (threadIdx.y/4+k));
+        }
+      } else if (lhs_vert + 2 < m_size) {
+        if ((threadIdx.y/4+k+24) < k_size) {
+          lhs_pf0.x =lhs(lhs_vert + 0, (threadIdx.y/4+k));
+          lhs_pf0.y =lhs(lhs_vert + 1, (threadIdx.y/4+k));
+          lhs_pf0.z =lhs(lhs_vert + 2, (threadIdx.y/4+k));
+          lhs_pf1.x =lhs(lhs_vert + 0, (threadIdx.y/4+k+8));
+          lhs_pf1.y =lhs(lhs_vert + 1, (threadIdx.y/4+k+8));
+          lhs_pf1.z =lhs(lhs_vert + 2, (threadIdx.y/4+k+8));
+          lhs_pf2.x =lhs(lhs_vert + 0, (threadIdx.y/4+k+16));
+          lhs_pf2.y =lhs(lhs_vert + 1, (threadIdx.y/4+k+16));
+          lhs_pf2.z =lhs(lhs_vert + 2, (threadIdx.y/4+k+16));
+          lhs_pf3.x =lhs(lhs_vert + 0, (threadIdx.y/4+k+24));
+          lhs_pf3.y =lhs(lhs_vert + 1, (threadIdx.y/4+k+24));
+          lhs_pf3.z =lhs(lhs_vert + 2, (threadIdx.y/4+k+24));
+        } else if ((threadIdx.y/4+k+16) < k_size) {
+          lhs_pf0.x =lhs(lhs_vert + 0, (threadIdx.y/4+k));
+          lhs_pf0.y =lhs(lhs_vert + 1, (threadIdx.y/4+k));
+          lhs_pf0.z =lhs(lhs_vert + 2, (threadIdx.y/4+k));
+          lhs_pf1.x =lhs(lhs_vert + 0, (threadIdx.y/4+k+8));
+          lhs_pf1.y =lhs(lhs_vert + 1, (threadIdx.y/4+k+8));
+          lhs_pf1.z =lhs(lhs_vert + 2, (threadIdx.y/4+k+8));
+          lhs_pf2.x =lhs(lhs_vert + 0, (threadIdx.y/4+k+16));
+          lhs_pf2.y =lhs(lhs_vert + 1, (threadIdx.y/4+k+16));
+          lhs_pf2.z =lhs(lhs_vert + 2, (threadIdx.y/4+k+16));
+        } else if ((threadIdx.y/4+k+8) < k_size) {
+          lhs_pf0.x =lhs(lhs_vert + 0, (threadIdx.y/4+k));
+          lhs_pf0.y =lhs(lhs_vert + 1, (threadIdx.y/4+k));
+          lhs_pf0.z =lhs(lhs_vert + 2, (threadIdx.y/4+k));
+          lhs_pf1.x =lhs(lhs_vert + 0, (threadIdx.y/4+k+8));
+          lhs_pf1.y =lhs(lhs_vert + 1, (threadIdx.y/4+k+8));
+          lhs_pf1.z =lhs(lhs_vert + 2, (threadIdx.y/4+k+8));
+        } else if ((threadIdx.y/4+k) < k_size) {
+          lhs_pf0.x =lhs(lhs_vert + 0, (threadIdx.y/4+k));
+          lhs_pf0.y =lhs(lhs_vert + 1, (threadIdx.y/4+k));
+          lhs_pf0.z =lhs(lhs_vert + 2, (threadIdx.y/4+k));
+        }
+      } else if (lhs_vert + 1 < m_size) {
+        if ((threadIdx.y/4+k+24) < k_size) {
+          lhs_pf0.x =lhs(lhs_vert + 0, (threadIdx.y/4+k));
+          lhs_pf0.y =lhs(lhs_vert + 1, (threadIdx.y/4+k));
+          lhs_pf1.x =lhs(lhs_vert + 0, (threadIdx.y/4+k+8));
+          lhs_pf1.y =lhs(lhs_vert + 1, (threadIdx.y/4+k+8));
+          lhs_pf2.x =lhs(lhs_vert + 0, (threadIdx.y/4+k+16));
+          lhs_pf2.y =lhs(lhs_vert + 1, (threadIdx.y/4+k+16));
+          lhs_pf3.x =lhs(lhs_vert + 0, (threadIdx.y/4+k+24));
+          lhs_pf3.y =lhs(lhs_vert + 1, (threadIdx.y/4+k+24));
+        } else if ((threadIdx.y/4+k+16) < k_size) {
+          lhs_pf0.x =lhs(lhs_vert + 0, (threadIdx.y/4+k));
+          lhs_pf0.y =lhs(lhs_vert + 1, (threadIdx.y/4+k));
+          lhs_pf1.x =lhs(lhs_vert + 0, (threadIdx.y/4+k+8));
+          lhs_pf1.y =lhs(lhs_vert + 1, (threadIdx.y/4+k+8));
+          lhs_pf2.x =lhs(lhs_vert + 0, (threadIdx.y/4+k+16));
+          lhs_pf2.y =lhs(lhs_vert + 1, (threadIdx.y/4+k+16));
+        } else if ((threadIdx.y/4+k+8) < k_size) {
+          lhs_pf0.x =lhs(lhs_vert + 0, (threadIdx.y/4+k));
+          lhs_pf0.y =lhs(lhs_vert + 1, (threadIdx.y/4+k));
+          lhs_pf1.x =lhs(lhs_vert + 0, (threadIdx.y/4+k+8));
+          lhs_pf1.y =lhs(lhs_vert + 1, (threadIdx.y/4+k+8));
+        } else if ((threadIdx.y/4+k) < k_size) {
+          lhs_pf0.x =lhs(lhs_vert + 0, (threadIdx.y/4+k));
+          lhs_pf0.y =lhs(lhs_vert + 1, (threadIdx.y/4+k));
+        }
+      } else if (lhs_vert < m_size) {
+        if ((threadIdx.y/4+k+24) < k_size) {
+          lhs_pf0.x =lhs(lhs_vert + 0, (threadIdx.y/4+k));
+          lhs_pf1.x =lhs(lhs_vert + 0, (threadIdx.y/4+k+8));
+          lhs_pf2.x =lhs(lhs_vert + 0, (threadIdx.y/4+k+16));
+          lhs_pf3.x =lhs(lhs_vert + 0, (threadIdx.y/4+k+24));
+        } else if ((threadIdx.y/4+k+16) < k_size) {
+          lhs_pf0.x =lhs(lhs_vert + 0, (threadIdx.y/4+k));
+          lhs_pf1.x =lhs(lhs_vert + 0, (threadIdx.y/4+k+8));
+          lhs_pf2.x =lhs(lhs_vert + 0, (threadIdx.y/4+k+16));
+        } else if ((threadIdx.y/4+k+8) < k_size) {
+          lhs_pf0.x =lhs(lhs_vert + 0, (threadIdx.y/4+k));
+          lhs_pf1.x =lhs(lhs_vert + 0, (threadIdx.y/4+k+8));
+        } else if ((threadIdx.y/4+k) < k_size) {
+          lhs_pf0.x =lhs(lhs_vert + 0, (threadIdx.y/4+k));
+        }
+      }
+    }
+    __syncthreads();
+    Index rhs_vert = k+threadIdx.x*4;
+    Index rhs_horiz0 = threadIdx.y*2+base_n;
+    Index rhs_horiz1 = threadIdx.y*2+1+base_n;
+    if (!CHECK_RHS_BOUNDARY) {
+      if ((rhs_vert + 3) < k_size) {
+        // just CHECK_RHS_BOUNDARY
+        rhs_pf0 = rhs.loadPacket<Unaligned>(rhs_vert, rhs_horiz0);
+        rhs_pf1 = rhs.loadPacket<Unaligned>(rhs_vert, rhs_horiz1);
+      } else if (rhs_vert + 2 < k_size) {
+        // just CHECK_RHS_BOUNDARY
+        rhs_pf0.x = rhs(rhs_vert, rhs_horiz0);
+        rhs_pf0.y = rhs(rhs_vert + 1, rhs_horiz0);
+        rhs_pf0.z = rhs(rhs_vert + 2, rhs_horiz0);
+        rhs_pf1.x = rhs(rhs_vert, rhs_horiz1);
+        rhs_pf1.y = rhs(rhs_vert + 1, rhs_horiz1);
+        rhs_pf1.z = rhs(rhs_vert + 2, rhs_horiz1);
+      } else if (rhs_vert + 1 < k_size) {
+        rhs_pf0.x = rhs(rhs_vert, rhs_horiz0);
+        rhs_pf0.y = rhs(rhs_vert + 1, rhs_horiz0);
+        rhs_pf1.x = rhs(rhs_vert, rhs_horiz1);
+        rhs_pf1.y = rhs(rhs_vert + 1, rhs_horiz1);
+      } else if (rhs_vert  < k_size) {
+        rhs_pf0.x = rhs(rhs_vert, rhs_horiz0);
+        rhs_pf1.x = rhs(rhs_vert, rhs_horiz1);
+      }
+    } else {
+      if (rhs_horiz1 < n_size) {
+        if ((rhs_vert + 3) < k_size) {
+          // just CHECK_RHS_BOUNDARY
+          rhs_pf0 = rhs.loadPacket<Unaligned>(rhs_vert, rhs_horiz0);
+          rhs_pf1 = rhs.loadPacket<Unaligned>(rhs_vert, rhs_horiz1);
+        } else if (rhs_vert + 2 < k_size) {
+          // just CHECK_RHS_BOUNDARY
+          rhs_pf0.x = rhs(rhs_vert, rhs_horiz0);
+          rhs_pf0.y = rhs(rhs_vert + 1, rhs_horiz0);
+          rhs_pf0.z = rhs(rhs_vert + 2, rhs_horiz0);
+          rhs_pf1.x = rhs(rhs_vert, rhs_horiz1);
+          rhs_pf1.y = rhs(rhs_vert + 1, rhs_horiz1);
+          rhs_pf1.z = rhs(rhs_vert + 2, rhs_horiz1);
+        } else if (k+threadIdx.x*4 + 1 < k_size) {
+          rhs_pf0.x = rhs(rhs_vert, rhs_horiz0);
+          rhs_pf0.y = rhs(rhs_vert + 1, rhs_horiz0);
+          rhs_pf1.x = rhs(rhs_vert, rhs_horiz1);
+          rhs_pf1.y = rhs(rhs_vert + 1, rhs_horiz1);
+        } else if (k+threadIdx.x*4  < k_size) {
+          rhs_pf0.x = rhs(rhs_vert, rhs_horiz0);
+          rhs_pf1.x = rhs(rhs_vert, rhs_horiz1);
+        }
+      } else if (rhs_horiz0 < n_size) {
+        if ((rhs_vert + 3) < k_size) {
+          // just CHECK_RHS_BOUNDARY
+          rhs_pf0 = rhs.loadPacket<Unaligned>(rhs_vert, rhs_horiz0);
+        } else if ((rhs_vert + 2) < k_size) {
+          // just CHECK_RHS_BOUNDARY
+          rhs_pf0.x = rhs(rhs_vert, rhs_horiz0);
+          rhs_pf0.y = rhs(rhs_vert + 1, rhs_horiz0);
+          rhs_pf0.z = rhs(rhs_vert + 2, rhs_horiz0);
+        } else if ((rhs_vert + 1) < k_size) {
+          rhs_pf0.x = rhs(rhs_vert, rhs_horiz0);
+          rhs_pf0.y = rhs(rhs_vert + 1, rhs_horiz0);
+        } else if (rhs_vert  < k_size) {
+          rhs_pf0.x = rhs(rhs_vert, rhs_horiz0);
+        }
+      }
+    }
+    __syncthreads();
+    // Loaded. Do computation
+    // Row 0 -> times (0, 4, 8, .. 28) for features 0, 1.
+    // Row 1 -> times (0, 4, 8, .. 28) for features 2, 3.
+    // ..
+    // Row 31 -> times (0, 4, 8, .. 28) for features 62, 63
+    rhs_shmem2[threadIdx.y][threadIdx.x] = make_float2(rhs_pf0.x, rhs_pf1.x);
+    // Row 32 -> times (1, 5, 9, .. 29) for features 0, 1.
+    // Row 33 -> times (1, 5, 9, .. 29) for features 2, 3.
+    // ..
+    rhs_shmem2[threadIdx.y+32][threadIdx.x] = make_float2(rhs_pf0.y, rhs_pf1.y);
+    // Row 64 -> times (2, 6, 10, .. 30) for features 0, 1.
+    // Row 65 -> times (2, 6, 10, .. 30) for features 2, 3.
+    rhs_shmem2[threadIdx.y+64][threadIdx.x] = make_float2(rhs_pf0.z, rhs_pf1.z);
+    // Row 96 -> times (3, 7, 11, .. 31) for features 0, 1.
+    // Row 97 -> times (3, 7, 11, .. 31) for features 2, 3.
+    rhs_shmem2[threadIdx.y+96][threadIdx.x] = make_float2(rhs_pf0.w, rhs_pf1.w);
+
+    // LHS.
+    // Row 0 (time 0) -> features (0, 1), (4, 5), .. (28, 29), (32, 33), ..  (60, 61) .. (124, 125)
+    // Row 1 (time 1) -> features (0, 1), (4, 5), .. (28, 29), (32, 33), ..  (60, 61) .. (124, 125)
+    // ...
+    // Row 8 (time 0) -> features (2, 3), (6, 7), .. (30, 31), (34, 35), ..  (62, 63) .. (126, 127)
+    // Row 15 (time 7) -> features (2, 3), (6, 7), .. (30, 31), (34, 35), ..  (62, 63) .. (126, 127)
+
+
+#define add_vals(a_feat1, a_feat2, f1, f2, f3, f4)\
+      results[0].x += a_feat1.x * f1.x;\
+      results[1].x += a_feat1.x * f1.y;\
+      results[2].x += a_feat1.x * f2.x;\
+      results[3].x += a_feat1.x * f2.y;\
+      results[4].x += a_feat1.x * f3.x;\
+      results[5].x += a_feat1.x * f3.y;\
+      results[6].x += a_feat1.x * f4.x;\
+      results[7].x += a_feat1.x * f4.y;\
+\
+      results[0].y += a_feat1.y * f1.x;\
+      results[1].y += a_feat1.y * f1.y;\
+      results[2].y += a_feat1.y * f2.x;\
+      results[3].y += a_feat1.y * f2.y;\
+      results[4].y += a_feat1.y * f3.x;\
+      results[5].y += a_feat1.y * f3.y;\
+      results[6].y += a_feat1.y * f4.x;\
+      results[7].y += a_feat1.y * f4.y;\
+\
+      results[0].z += a_feat2.x * f1.x;\
+      results[1].z += a_feat2.x * f1.y;\
+      results[2].z += a_feat2.x * f2.x;\
+      results[3].z += a_feat2.x * f2.y;\
+      results[4].z += a_feat2.x * f3.x;\
+      results[5].z += a_feat2.x * f3.y;\
+      results[6].z += a_feat2.x * f4.x;\
+      results[7].z += a_feat2.x * f4.y;\
+\
+      results[0].w += a_feat2.y * f1.x;\
+      results[1].w += a_feat2.y * f1.y;\
+      results[2].w += a_feat2.y * f2.x;\
+      results[3].w += a_feat2.y * f2.y;\
+      results[4].w += a_feat2.y * f3.x;\
+      results[5].w += a_feat2.y * f3.y;\
+      results[6].w += a_feat2.y * f4.x;\
+      results[7].w += a_feat2.y * f4.y;\
+
+    lhs_shmem2[threadIdx.y/4][threadIdx.x+(threadIdx.y%4)*8] = make_float2(lhs_pf0.x, lhs_pf0.y);
+    lhs_shmem2[threadIdx.y/4+8][threadIdx.x+(threadIdx.y%4)*8] = make_float2(lhs_pf1.x, lhs_pf1.y);
+    lhs_shmem2[threadIdx.y/4+16][threadIdx.x+(threadIdx.y%4)*8] = make_float2(lhs_pf2.x, lhs_pf2.y);
+    lhs_shmem2[threadIdx.y/4+24][threadIdx.x+(threadIdx.y%4)*8] = make_float2(lhs_pf3.x, lhs_pf3.y);
+
+    lhs_shmem2[threadIdx.y/4 + 32][threadIdx.x+(threadIdx.y%4)*8] = make_float2(lhs_pf0.z, lhs_pf0.w);
+    lhs_shmem2[threadIdx.y/4 + 40][threadIdx.x+(threadIdx.y%4)*8] = make_float2(lhs_pf1.z, lhs_pf1.w);
+    lhs_shmem2[threadIdx.y/4 + 48][threadIdx.x+(threadIdx.y%4)*8] = make_float2(lhs_pf2.z, lhs_pf2.w);
+    lhs_shmem2[threadIdx.y/4 + 56][threadIdx.x+(threadIdx.y%4)*8] = make_float2(lhs_pf3.z, lhs_pf3.w);
+
+    __syncthreads();
+
+    // Do the multiplies.
+    #pragma unroll
+    for (int koff = 0; koff < 32; koff ++) {
+      float2 a3 = lhs_shmem2[koff][threadIdx.x + (threadIdx.y % 4) * 8];
+      float2 a4 = lhs_shmem2[koff + 32][threadIdx.x + (threadIdx.y % 4) * 8];
+
+      // first feature is at (threadIdx.y/4) * 8 last is at start + 8.
+      int start_feature = (threadIdx.y / 4) * 8;
+
+      float2 br1 = rhs_shmem2[start_feature/2 +     (koff % 4) * 32][koff/4];
+      float2 br2 = rhs_shmem2[start_feature/2 + 1 + (koff % 4) * 32][koff/4];
+      float2 br3 = rhs_shmem2[start_feature/2 + 2 + (koff % 4) * 32][koff/4];
+      float2 br4 = rhs_shmem2[start_feature/2 + 3 + (koff % 4) * 32][koff/4];
+
+      add_vals(a3, a4, br1, br2, br3, br4)
+    }
+    __syncthreads();
+  } // end loop over k
+
+
+  __syncthreads();
+  Index horiz_base = (threadIdx.y/4)*8+base_n;
+  if (!CHECK_LHS_BOUNDARY && !CHECK_RHS_BOUNDARY) {
+    for (int i = 0; i < 8; i++) {
+      output(lhs_vert, horiz_base + i) = results[i].x;
+      output(lhs_vert + 1, horiz_base + i) = results[i].y;
+      output(lhs_vert + 2, horiz_base + i) = results[i].z;
+      output(lhs_vert + 3, horiz_base + i) = results[i].w;
+    }
+  } else if (!CHECK_RHS_BOUNDARY) {
+    if (lhs_vert + 3 < m_size) {
+      for (int i = 0; i < 8; i++) {
+        output(lhs_vert, horiz_base + i) = results[i].x;
+        output(lhs_vert + 1, horiz_base + i) = results[i].y;
+        output(lhs_vert + 2, horiz_base + i) = results[i].z;
+        output(lhs_vert + 3, horiz_base + i) = results[i].w;
+      }
+    } else if (lhs_vert + 2 < m_size) {
+      for (int i = 0; i < 8; i++) {
+        output(lhs_vert, horiz_base + i) = results[i].x;
+        output(lhs_vert + 1, horiz_base + i) = results[i].y;
+        output(lhs_vert + 2, horiz_base + i) = results[i].z;
+      }
+    } else if (lhs_vert + 1 < m_size) {
+      for (int i = 0; i < 8; i++) {
+        output(lhs_vert, horiz_base + i) = results[i].x;
+        output(lhs_vert + 1, horiz_base + i) = results[i].y;
+      }
+    } else if (lhs_vert  < m_size) {
+      for (int i = 0; i < 8; i++) {
+        output(lhs_vert, horiz_base + i) = results[i].x;
+      }
+    }
+  } else if (!CHECK_LHS_BOUNDARY) {
+    // CHECK BOUNDARY_B
+    for (int i = 0; i < 8; i++) {
+      if (horiz_base + i < n_size) {
+        output(lhs_vert, horiz_base + i) = results[i].x;
+        output(lhs_vert + 1, horiz_base + i) = results[i].y;
+        output(lhs_vert + 2, horiz_base + i) = results[i].z;
+        output(lhs_vert + 3, horiz_base + i) = results[i].w;
+      }
+    }
+  } else {
+    // CHECK both boundaries.
+    for (int i = 0; i < 8; i++) {
+      if (horiz_base + i < n_size) {
+        if (lhs_vert < m_size)
+          output(lhs_vert, horiz_base + i) = results[i].x;
+        if (lhs_vert + 1 < m_size)
+          output(lhs_vert + 1, horiz_base + i) = results[i].y;
+        if (lhs_vert + 2 < m_size)
+          output(lhs_vert + 2, horiz_base + i) = results[i].z;
+        if (lhs_vert + 3 < m_size)
+          output(lhs_vert + 3, horiz_base + i) = results[i].w;
+      }
+    }
+  }
+}
+
+
+template<typename Index, typename LhsMapper,
+         typename RhsMapper, typename OutputMapper>
+__global__ void
+__launch_bounds__(256)
+EigenFloatContractionKernel(const LhsMapper lhs, const RhsMapper rhs,
+                       const OutputMapper output,
+                       const Index m_size, const Index n_size, const Index k_size) {
+  __shared__ float2 lhs_shmem[64*32];
+  __shared__ float2 rhs_shmem[128*8];
+
+  typedef float2 LHS_MEM[64][32];
+  typedef float2 RHS_MEM[128][8];
+
+  typedef float2 LHS_MEM16x16[32][16];
+  typedef float2 RHS_MEM16x16[64][8];
+
+  const Index m_block_idx = blockIdx.x;
+  const Index n_block_idx = blockIdx.y;
+
+  const Index base_m = 128 * m_block_idx;
+  const Index base_n = 64 * n_block_idx;
+
+  bool check_rhs = (base_n + 63) >= n_size;
+  bool check_lhs128 = (base_m + 127) >= m_size;
+
+  if (!check_rhs) {
+    if (!check_lhs128) {
+      // >= 128 rows left
+      EigenFloatContractionKernelInternal<Index, LhsMapper, RhsMapper, OutputMapper, false, false>(
+                     lhs, rhs, output, *((LHS_MEM *) lhs_shmem), *((RHS_MEM *) rhs_shmem), m_size, n_size, k_size, base_m, base_n);
+    } else {
+      EigenFloatContractionKernelInternal<Index, LhsMapper, RhsMapper, OutputMapper, true, false>(
+                     lhs, rhs, output, *((LHS_MEM *) lhs_shmem), *((RHS_MEM *) rhs_shmem), m_size, n_size, k_size, base_m, base_n);
+    }
+  } else {
+    if (!check_lhs128) {
+      // >= 128 rows left
+      EigenFloatContractionKernelInternal<Index, LhsMapper, RhsMapper, OutputMapper, false, true>(
+                     lhs, rhs, output, *((LHS_MEM *) lhs_shmem), *((RHS_MEM *) rhs_shmem), m_size, n_size, k_size, base_m, base_n);
+    } else {
+      EigenFloatContractionKernelInternal<Index, LhsMapper, RhsMapper, OutputMapper, true, true>(
+                     lhs, rhs, output, *((LHS_MEM *) lhs_shmem), *((RHS_MEM *) rhs_shmem), m_size, n_size, k_size, base_m, base_n);
+    }
+  }
+}
+
+template<typename Index, typename LhsMapper,
+         typename RhsMapper, typename OutputMapper>
+__global__ void
+__launch_bounds__(256)
+EigenFloatContractionKernel16x16(const LhsMapper lhs, const RhsMapper rhs,
+                       const OutputMapper output,
+                       const Index m_size, const Index n_size, const Index k_size) {
+  __shared__ float2 lhs_shmem[32][16];
+  __shared__ float2 rhs_shmem[64][8];
+
+  const Index m_block_idx = blockIdx.x;
+  const Index n_block_idx = blockIdx.y;
+
+  const Index base_m = 64 * m_block_idx;
+  const Index base_n = 64 * n_block_idx;
+
+  if (base_m + 63 < m_size) {
+    if (base_n + 63 < n_size) {
+      EigenFloatContractionKernelInternal16x16<Index, LhsMapper, RhsMapper, OutputMapper, false, false>(lhs, rhs, output, lhs_shmem, rhs_shmem, m_size, n_size, k_size, base_m, base_n);
+    } else {
+      EigenFloatContractionKernelInternal16x16<Index, LhsMapper, RhsMapper, OutputMapper, false, true>(lhs, rhs, output, lhs_shmem, rhs_shmem, m_size, n_size, k_size, base_m, base_n);
+    }
+  } else {
+    if (base_n + 63 < n_size) {
+      EigenFloatContractionKernelInternal16x16<Index, LhsMapper, RhsMapper, OutputMapper, true, false>(lhs, rhs, output, lhs_shmem, rhs_shmem, m_size, n_size, k_size, base_m, base_n);
+    } else {
+      EigenFloatContractionKernelInternal16x16<Index, LhsMapper, RhsMapper, OutputMapper, true, true>(lhs, rhs, output, lhs_shmem, rhs_shmem, m_size, n_size, k_size, base_m, base_n);
+    }
+  }
+}
+
+
+template<typename Indices, typename LeftArgType, typename RightArgType>
+struct TensorEvaluator<const TensorContractionOp<Indices, LeftArgType, RightArgType>, GpuDevice> :
+    public TensorContractionEvaluatorBase<TensorEvaluator<const TensorContractionOp<Indices, LeftArgType, RightArgType>, GpuDevice> > {
+
+  typedef GpuDevice Device;
+
+  typedef TensorEvaluator<const TensorContractionOp<Indices, LeftArgType, RightArgType>, Device> Self;
+  typedef TensorContractionEvaluatorBase<Self> Base;
+
+  typedef TensorContractionOp<Indices, LeftArgType, RightArgType> XprType;
+  typedef typename internal::remove_const<typename XprType::Scalar>::type Scalar;
+  typedef typename XprType::Index Index;
+  typedef typename XprType::CoeffReturnType CoeffReturnType;
+  typedef typename PacketType<CoeffReturnType, GpuDevice>::type PacketReturnType;
+
+  enum {
+    Layout = TensorEvaluator<LeftArgType, Device>::Layout,
+  };
+
+  // Most of the code is assuming that both input tensors are ColMajor. If the
+  // inputs are RowMajor, we will "cheat" by swapping the LHS and RHS:
+  // If we want to compute A * B = C, where A is LHS and B is RHS, the code
+  // will pretend B is LHS and A is RHS.
+  typedef typename internal::conditional<
+    static_cast<int>(Layout) == static_cast<int>(ColMajor), LeftArgType, RightArgType>::type EvalLeftArgType;
+  typedef typename internal::conditional<
+    static_cast<int>(Layout) == static_cast<int>(ColMajor), RightArgType, LeftArgType>::type EvalRightArgType;
+
+  static const int LDims =
+      internal::array_size<typename TensorEvaluator<EvalLeftArgType, Device>::Dimensions>::value;
+  static const int RDims =
+      internal::array_size<typename TensorEvaluator<EvalRightArgType, Device>::Dimensions>::value;
+  static const int ContractDims = internal::array_size<Indices>::value;
+
+  typedef array<Index, LDims> left_dim_mapper_t;
+  typedef array<Index, RDims> right_dim_mapper_t;
+
+  typedef array<Index, ContractDims> contract_t;
+  typedef array<Index, LDims - ContractDims> left_nocontract_t;
+  typedef array<Index, RDims - ContractDims> right_nocontract_t;
+
+  static const int NumDims = LDims + RDims - 2 * ContractDims;
+
+  typedef DSizes<Index, NumDims> Dimensions;
+
+  // typedefs needed in evalTo
+  typedef typename internal::remove_const<typename EvalLeftArgType::Scalar>::type LhsScalar;
+  typedef typename internal::remove_const<typename EvalRightArgType::Scalar>::type RhsScalar;
+
+  typedef TensorEvaluator<EvalLeftArgType, Device> LeftEvaluator;
+  typedef TensorEvaluator<EvalRightArgType, Device> RightEvaluator;
+
+  typedef typename LeftEvaluator::Dimensions LeftDimensions;
+  typedef typename RightEvaluator::Dimensions RightDimensions;
+
+  EIGEN_DEVICE_FUNC TensorEvaluator(const XprType& op, const Device& device) :
+      Base(op, device) {}
+
+  // We need to redefine this method to make nvcc happy
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool evalSubExprsIfNeeded(Scalar* data) {
+    this->m_leftImpl.evalSubExprsIfNeeded(NULL);
+    this->m_rightImpl.evalSubExprsIfNeeded(NULL);
+    if (data) {
+      evalTo(data);
+      return false;
+    } else {
+      this->m_result = static_cast<Scalar *>(this->m_device.allocate(this->dimensions().TotalSize() * sizeof(Scalar)));
+      evalTo(this->m_result);
+      return true;
+    }
+  }
+
+  void evalTo(Scalar* buffer) const {
+    if (this->m_lhs_inner_dim_contiguous) {
+      if (this->m_rhs_inner_dim_contiguous) {
+        if (this->m_rhs_inner_dim_reordered) {
+          evalTyped<true, true, true, Unaligned>(buffer);
+        }
+        else {
+          evalTyped<true, true, false, Unaligned>(buffer);
+        }
+      }
+      else {
+       if (this->m_rhs_inner_dim_reordered) {
+          evalTyped<true, false, true, Unaligned>(buffer);
+        }
+        else {
+          evalTyped<true, false, false, Unaligned>(buffer);
+        }
+      }
+    }
+    else {
+      if (this->m_rhs_inner_dim_contiguous) {
+        if (this->m_rhs_inner_dim_reordered) {
+          evalTyped<false, true, true, Unaligned>(buffer);
+        }
+        else {
+          evalTyped<false, true, false, Unaligned>(buffer);
+        }
+      }
+      else {
+       if (this->m_rhs_inner_dim_reordered) {
+          evalTyped<false, false, true, Unaligned>(buffer);
+        }
+        else {
+          evalTyped<false, false, false, Unaligned>(buffer);
+        }
+      }
+    }
+  }
+
+  template <typename LhsScalar, typename RhsScalar, typename Index, typename LhsMapper, typename RhsMapper, typename OutputMapper> struct LaunchKernels {
+    static void Run(const LhsMapper& lhs, const RhsMapper& rhs, const OutputMapper& output, Index m, Index n, Index k, const GpuDevice& device) {
+    const Index m_blocks = (m + 63) / 64;
+    const Index n_blocks = (n + 63) / 64;
+    const dim3 num_blocks(m_blocks, n_blocks, 1);
+    const dim3 block_size(8, 8, 8);
+    LAUNCH_CUDA_KERNEL((EigenContractionKernel<Scalar, Index, LhsMapper, RhsMapper, OutputMapper>), num_blocks, block_size, 0, device, lhs, rhs, output, m, n, k);
+    }
+  };
+
+  template <typename Index, typename LhsMapper, typename RhsMapper, typename OutputMapper> struct LaunchKernels<float, float, Index, LhsMapper, RhsMapper, OutputMapper> {
+    static void Run(const LhsMapper& lhs, const RhsMapper& rhs, const OutputMapper& output, Index m, Index n, Index k, const GpuDevice& device) {
+      if (m < 768 || n < 768) {
+        const Index m_blocks = (m + 63) / 64;
+        const Index n_blocks = (n + 63) / 64;
+        const dim3 num_blocks(m_blocks, n_blocks, 1);
+        const dim3 block_size(16, 16, 1);
+        LAUNCH_CUDA_KERNEL((EigenFloatContractionKernel16x16<Index, LhsMapper, RhsMapper, OutputMapper>), num_blocks, block_size, 0, device, lhs, rhs, output, m, n, k);
+      } else {
+        const Index m_blocks = (m + 127) / 128;
+        const Index n_blocks = (n + 63) / 64;
+        const dim3 num_blocks(m_blocks, n_blocks, 1);
+        const dim3 block_size(8, 32, 1);
+        LAUNCH_CUDA_KERNEL((EigenFloatContractionKernel<Index, LhsMapper, RhsMapper, OutputMapper>), num_blocks, block_size, 0, device, lhs, rhs, output, m, n, k);
+      }
+    }
+  };
+
+  template <bool lhs_inner_dim_contiguous, bool rhs_inner_dim_contiguous, bool rhs_inner_dim_reordered, int Alignment>
+  void evalTyped(Scalar* buffer) const {
+    // columns in left side, rows in right side
+    const Index k = this->m_k_size;
+    EIGEN_UNUSED_VARIABLE(k)
+
+    // rows in left side
+    const Index m = this->m_i_size;
+
+    // columns in right side
+    const Index n = this->m_j_size;
+
+    // zero out the result buffer (which must be of size at least m * n * sizeof(Scalar)
+    this->m_device.memset(buffer, 0, m * n * sizeof(Scalar));
+
+    typedef internal::TensorContractionInputMapper<LhsScalar, Index, internal::Lhs,
+                                                   LeftEvaluator, left_nocontract_t,
+                                                   contract_t, 4,
+                                                   lhs_inner_dim_contiguous,
+                                                   false, Unaligned> LhsMapper;
+
+    typedef internal::TensorContractionInputMapper<RhsScalar, Index, internal::Rhs,
+                                                   RightEvaluator, right_nocontract_t,
+                                                   contract_t, 4,
+                                                   rhs_inner_dim_contiguous,
+                                                   rhs_inner_dim_reordered, Unaligned> RhsMapper;
+
+    typedef internal::blas_data_mapper<Scalar, Index, ColMajor> OutputMapper;
+
+
+    // initialize data mappers
+    LhsMapper lhs(this->m_leftImpl, this->m_left_nocontract_strides, this->m_i_strides,
+                  this->m_left_contracting_strides, this->m_k_strides);
+
+    RhsMapper rhs(this->m_rightImpl, this->m_right_nocontract_strides, this->m_j_strides,
+                  this->m_right_contracting_strides, this->m_k_strides);
+
+    OutputMapper output(buffer, m);
+
+    setCudaSharedMemConfig(cudaSharedMemBankSizeEightByte);
+    LaunchKernels<LhsScalar, RhsScalar, Index, LhsMapper, RhsMapper, OutputMapper>::Run(lhs, rhs, output,  m, n, k, this->m_device);
+  }
+};
+
+} // end namespace Eigen
+
+#endif // EIGEN_USE_GPU and __CUDACC__
+#endif // EIGEN_CXX11_TENSOR_TENSOR_CONTRACTION_CUDA_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceThreadPool.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceThreadPool.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceThreadPool.h	(revision 3762)
@@ -0,0 +1,282 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2014 Benoit Steiner <benoit.steiner.goog@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#if defined(EIGEN_USE_THREADS) && !defined(EIGEN_CXX11_TENSOR_TENSOR_DEVICE_THREAD_POOL_H)
+#define EIGEN_CXX11_TENSOR_TENSOR_DEVICE_THREAD_POOL_H
+
+namespace Eigen {
+
+// Use the SimpleThreadPool by default. We'll switch to the new non blocking
+// thread pool later.
+#ifndef EIGEN_USE_SIMPLE_THREAD_POOL
+template <typename Env> using ThreadPoolTempl = NonBlockingThreadPoolTempl<Env>;
+typedef NonBlockingThreadPool ThreadPool;
+#else
+template <typename Env> using ThreadPoolTempl = SimpleThreadPoolTempl<Env>;
+typedef SimpleThreadPool ThreadPool;
+#endif
+
+
+// Barrier is an object that allows one or more threads to wait until
+// Notify has been called a specified number of times.
+class Barrier {
+ public:
+  Barrier(unsigned int count) : state_(count << 1), notified_(false) {
+    eigen_assert(((count << 1) >> 1) == count);
+  }
+  ~Barrier() {
+    eigen_plain_assert((state_>>1) == 0);
+  }
+
+  void Notify() {
+    unsigned int v = state_.fetch_sub(2, std::memory_order_acq_rel) - 2;
+    if (v != 1) {
+      eigen_assert(((v + 2) & ~1) != 0);
+      return;  // either count has not dropped to 0, or waiter is not waiting
+    }
+    std::unique_lock<std::mutex> l(mu_);
+    eigen_assert(!notified_);
+    notified_ = true;
+    cv_.notify_all();
+  }
+
+  void Wait() {
+    unsigned int v = state_.fetch_or(1, std::memory_order_acq_rel);
+    if ((v >> 1) == 0) return;
+    std::unique_lock<std::mutex> l(mu_);
+    while (!notified_) {
+      cv_.wait(l);
+    }
+  }
+
+ private:
+  std::mutex mu_;
+  std::condition_variable cv_;
+  std::atomic<unsigned int> state_;  // low bit is waiter flag
+  bool notified_;
+};
+
+
+// Notification is an object that allows a user to to wait for another
+// thread to signal a notification that an event has occurred.
+//
+// Multiple threads can wait on the same Notification object,
+// but only one caller must call Notify() on the object.
+struct Notification : Barrier {
+  Notification() : Barrier(1) {};
+};
+
+
+// Runs an arbitrary function and then calls Notify() on the passed in
+// Notification.
+template <typename Function, typename... Args> struct FunctionWrapperWithNotification
+{
+  static void run(Notification* n, Function f, Args... args) {
+    f(args...);
+    if (n) {
+      n->Notify();
+    }
+  }
+};
+
+template <typename Function, typename... Args> struct FunctionWrapperWithBarrier
+{
+  static void run(Barrier* b, Function f, Args... args) {
+    f(args...);
+    if (b) {
+      b->Notify();
+    }
+  }
+};
+
+template <typename SyncType>
+static EIGEN_STRONG_INLINE void wait_until_ready(SyncType* n) {
+  if (n) {
+    n->Wait();
+  }
+}
+
+
+// Build a thread pool device on top the an existing pool of threads.
+struct ThreadPoolDevice {
+  // The ownership of the thread pool remains with the caller.
+  ThreadPoolDevice(ThreadPoolInterface* pool, int num_cores) : pool_(pool), num_threads_(num_cores) { }
+
+  EIGEN_STRONG_INLINE void* allocate(size_t num_bytes) const {
+    return internal::aligned_malloc(num_bytes);
+  }
+
+  EIGEN_STRONG_INLINE void deallocate(void* buffer) const {
+    internal::aligned_free(buffer);
+  }
+
+  EIGEN_STRONG_INLINE void memcpy(void* dst, const void* src, size_t n) const {
+    ::memcpy(dst, src, n);
+  }
+  EIGEN_STRONG_INLINE void memcpyHostToDevice(void* dst, const void* src, size_t n) const {
+    memcpy(dst, src, n);
+  }
+  EIGEN_STRONG_INLINE void memcpyDeviceToHost(void* dst, const void* src, size_t n) const {
+    memcpy(dst, src, n);
+  }
+
+  EIGEN_STRONG_INLINE void memset(void* buffer, int c, size_t n) const {
+    ::memset(buffer, c, n);
+  }
+
+  EIGEN_STRONG_INLINE int numThreads() const {
+    return num_threads_;
+  }
+
+  EIGEN_STRONG_INLINE size_t firstLevelCacheSize() const {
+    return l1CacheSize();
+  }
+
+  EIGEN_STRONG_INLINE size_t lastLevelCacheSize() const {
+    // The l3 cache size is shared between all the cores.
+    return l3CacheSize() / num_threads_;
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE int majorDeviceVersion() const {
+    // Should return an enum that encodes the ISA supported by the CPU
+    return 1;
+  }
+
+  template <class Function, class... Args>
+  EIGEN_STRONG_INLINE Notification* enqueue(Function&& f, Args&&... args) const {
+    Notification* n = new Notification();
+    pool_->Schedule(std::bind(&FunctionWrapperWithNotification<Function, Args...>::run, n, f, args...));
+    return n;
+  }
+
+  template <class Function, class... Args>
+  EIGEN_STRONG_INLINE void enqueue_with_barrier(Barrier* b,
+                                                Function&& f,
+                                                Args&&... args) const {
+    pool_->Schedule(std::bind(
+        &FunctionWrapperWithBarrier<Function, Args...>::run, b, f, args...));
+  }
+
+  template <class Function, class... Args>
+  EIGEN_STRONG_INLINE void enqueueNoNotification(Function&& f, Args&&... args) const {
+    pool_->Schedule(std::bind(f, args...));
+  }
+
+  // Returns a logical thread index between 0 and pool_->NumThreads() - 1 if
+  // called from one of the threads in pool_. Returns -1 otherwise.
+  EIGEN_STRONG_INLINE int currentThreadId() const {
+    return pool_->CurrentThreadId();
+  }
+
+  // parallelFor executes f with [0, n) arguments in parallel and waits for
+  // completion. F accepts a half-open interval [first, last).
+  // Block size is choosen based on the iteration cost and resulting parallel
+  // efficiency. If block_align is not nullptr, it is called to round up the
+  // block size.
+  void parallelFor(Index n, const TensorOpCost& cost,
+                   std::function<Index(Index)> block_align,
+                   std::function<void(Index, Index)> f) const {
+    typedef TensorCostModel<ThreadPoolDevice> CostModel;
+    if (n <= 1 || numThreads() == 1 ||
+        CostModel::numThreads(n, cost, static_cast<int>(numThreads())) == 1) {
+      f(0, n);
+      return;
+    }
+
+    // Calculate block size based on (1) the iteration cost and (2) parallel
+    // efficiency. We want blocks to be not too small to mitigate
+    // parallelization overheads; not too large to mitigate tail
+    // effect and potential load imbalance and we also want number
+    // of blocks to be evenly dividable across threads.
+
+    double block_size_f = 1.0 / CostModel::taskSize(1, cost);
+    const Index max_oversharding_factor = 4;
+    Index block_size = numext::mini(
+        n, numext::maxi<Index>(divup<Index>(n, max_oversharding_factor * numThreads()),
+                               block_size_f));
+    const Index max_block_size = numext::mini(n, 2 * block_size);
+    if (block_align) {
+      Index new_block_size = block_align(block_size);
+      eigen_assert(new_block_size >= block_size);
+      block_size = numext::mini(n, new_block_size);
+    }
+    Index block_count = divup(n, block_size);
+    // Calculate parallel efficiency as fraction of total CPU time used for
+    // computations:
+    double max_efficiency =
+        static_cast<double>(block_count) /
+        (divup<int>(block_count, numThreads()) * numThreads());
+    // Now try to increase block size up to max_block_size as long as it
+    // doesn't decrease parallel efficiency.
+    for (Index prev_block_count = block_count;
+         max_efficiency < 1.0 && prev_block_count > 1;) {
+      // This is the next block size that divides size into a smaller number
+      // of blocks than the current block_size.
+      Index coarser_block_size = divup(n, prev_block_count - 1);
+      if (block_align) {
+        Index new_block_size = block_align(coarser_block_size);
+        eigen_assert(new_block_size >= coarser_block_size);
+        coarser_block_size = numext::mini(n, new_block_size);
+      }
+      if (coarser_block_size > max_block_size) {
+        break;  // Reached max block size. Stop.
+      }
+      // Recalculate parallel efficiency.
+      const Index coarser_block_count = divup(n, coarser_block_size);
+      eigen_assert(coarser_block_count < prev_block_count);
+      prev_block_count = coarser_block_count;
+      const double coarser_efficiency =
+          static_cast<double>(coarser_block_count) /
+          (divup<int>(coarser_block_count, numThreads()) * numThreads());
+      if (coarser_efficiency + 0.01 >= max_efficiency) {
+        // Taking it.
+        block_size = coarser_block_size;
+        block_count = coarser_block_count;
+        if (max_efficiency < coarser_efficiency) {
+          max_efficiency = coarser_efficiency;
+        }
+      }
+    }
+
+    // Recursively divide size into halves until we reach block_size.
+    // Division code rounds mid to block_size, so we are guaranteed to get
+    // block_count leaves that do actual computations.
+    Barrier barrier(static_cast<unsigned int>(block_count));
+    std::function<void(Index, Index)> handleRange;
+    handleRange = [=, &handleRange, &barrier, &f](Index first, Index last) {
+      if (last - first <= block_size) {
+        // Single block or less, execute directly.
+        f(first, last);
+        barrier.Notify();
+        return;
+      }
+      // Split into halves and submit to the pool.
+      Index mid = first + divup((last - first) / 2, block_size) * block_size;
+      pool_->Schedule([=, &handleRange]() { handleRange(mid, last); });
+      pool_->Schedule([=, &handleRange]() { handleRange(first, mid); });
+    };
+    handleRange(0, n);
+    barrier.Wait();
+  }
+
+  // Convenience wrapper for parallelFor that does not align blocks.
+  void parallelFor(Index n, const TensorOpCost& cost,
+                   std::function<void(Index, Index)> f) const {
+    parallelFor(n, cost, nullptr, std::move(f));
+  }
+
+ private:
+  ThreadPoolInterface* pool_;
+  int num_threads_;
+};
+
+
+}  // end namespace Eigen
+
+#endif // EIGEN_CXX11_TENSOR_TENSOR_DEVICE_THREAD_POOL_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorConversion.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorConversion.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorConversion.h	(revision 3762)
@@ -0,0 +1,279 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2015 Benoit Steiner <benoit.steiner.goog@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CXX11_TENSOR_TENSOR_CONVERSION_H
+#define EIGEN_CXX11_TENSOR_TENSOR_CONVERSION_H
+
+namespace Eigen {
+
+/** \class TensorConversionOp
+  * \ingroup CXX11_Tensor_Module
+  *
+  * \brief Tensor conversion class. This class makes it possible to vectorize
+  * type casting operations when the number of scalars per packet in the source
+  * and the destination type differ
+  */
+namespace internal {
+template<typename TargetType, typename XprType>
+struct traits<TensorConversionOp<TargetType, XprType> >
+{
+  // Type promotion to handle the case where the types of the lhs and the rhs are different.
+  typedef TargetType Scalar;
+  typedef typename traits<XprType>::StorageKind StorageKind;
+  typedef typename traits<XprType>::Index Index;
+  typedef typename XprType::Nested Nested;
+  typedef typename remove_reference<Nested>::type _Nested;
+  static const int NumDimensions = traits<XprType>::NumDimensions;
+  static const int Layout = traits<XprType>::Layout;
+  enum { Flags = 0 };
+};
+
+template<typename TargetType, typename XprType>
+struct eval<TensorConversionOp<TargetType, XprType>, Eigen::Dense>
+{
+  typedef const TensorConversionOp<TargetType, XprType>& type;
+};
+
+template<typename TargetType, typename XprType>
+struct nested<TensorConversionOp<TargetType, XprType>, 1, typename eval<TensorConversionOp<TargetType, XprType> >::type>
+{
+  typedef TensorConversionOp<TargetType, XprType> type;
+};
+
+}  // end namespace internal
+
+
+template <typename TensorEvaluator, typename SrcPacket, typename TgtPacket, int SrcCoeffRatio, int TgtCoeffRatio>
+struct PacketConverter {
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  PacketConverter(const TensorEvaluator& impl)
+      : m_impl(impl) {}
+
+  template<int LoadMode, typename Index>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TgtPacket packet(Index index) const {
+    return internal::pcast<SrcPacket, TgtPacket>(m_impl.template packet<LoadMode>(index));
+  }
+
+ private:
+  const TensorEvaluator& m_impl;
+};
+
+
+template <typename TensorEvaluator, typename SrcPacket, typename TgtPacket>
+struct PacketConverter<TensorEvaluator, SrcPacket, TgtPacket, 2, 1> {
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  PacketConverter(const TensorEvaluator& impl)
+      : m_impl(impl) {}
+
+  template<int LoadMode, typename Index>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TgtPacket packet(Index index) const {
+    const int SrcPacketSize = internal::unpacket_traits<SrcPacket>::size;
+
+    SrcPacket src1 = m_impl.template packet<LoadMode>(index);
+    SrcPacket src2 = m_impl.template packet<LoadMode>(index + SrcPacketSize);
+    TgtPacket result = internal::pcast<SrcPacket, TgtPacket>(src1, src2);
+    return result;
+  }
+
+ private:
+  const TensorEvaluator& m_impl;
+};
+
+template <typename TensorEvaluator, typename SrcPacket, typename TgtPacket>
+struct PacketConverter<TensorEvaluator, SrcPacket, TgtPacket, 4, 1> {
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  PacketConverter(const TensorEvaluator& impl)
+      : m_impl(impl) {}
+
+  template<int LoadMode, typename Index>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TgtPacket packet(Index index) const {
+    const int SrcPacketSize = internal::unpacket_traits<SrcPacket>::size;
+
+    SrcPacket src1 = m_impl.template packet<LoadMode>(index);
+    SrcPacket src2 = m_impl.template packet<LoadMode>(index + SrcPacketSize);
+    SrcPacket src3 = m_impl.template packet<LoadMode>(index + 2 * SrcPacketSize);
+    SrcPacket src4 = m_impl.template packet<LoadMode>(index + 3 * SrcPacketSize);
+    TgtPacket result = internal::pcast<SrcPacket, TgtPacket>(src1, src2, src3, src4);
+    return result;
+  }
+
+ private:
+  const TensorEvaluator& m_impl;
+};
+
+template <typename TensorEvaluator, typename SrcPacket, typename TgtPacket>
+struct PacketConverter<TensorEvaluator, SrcPacket, TgtPacket, 1, 2> {
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  PacketConverter(const TensorEvaluator& impl)
+      : m_impl(impl), m_maxIndex(impl.dimensions().TotalSize()) {}
+
+  template<int LoadMode, typename Index>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TgtPacket packet(Index index) const {
+    const int SrcPacketSize = internal::unpacket_traits<SrcPacket>::size;
+    // Only call m_impl.packet() when we have direct access to the underlying data. This
+    // ensures that we don't compute the subexpression twice. We may however load some
+    // coefficients twice, but in practice this doesn't negatively impact performance.
+    if (m_impl.data() && (index + SrcPacketSize < m_maxIndex)) {
+      // Force unaligned memory loads since we can't ensure alignment anymore
+      return internal::pcast<SrcPacket, TgtPacket>(m_impl.template packet<Unaligned>(index));
+    } else {
+      const int TgtPacketSize = internal::unpacket_traits<TgtPacket>::size;
+      typedef typename internal::unpacket_traits<SrcPacket>::type SrcType;
+      typedef typename internal::unpacket_traits<TgtPacket>::type TgtType;
+      internal::scalar_cast_op<SrcType, TgtType> converter;
+      EIGEN_ALIGN_MAX typename internal::unpacket_traits<TgtPacket>::type values[TgtPacketSize];
+      for (int i = 0; i < TgtPacketSize; ++i) {
+        values[i] = converter(m_impl.coeff(index+i));
+      }
+      TgtPacket rslt = internal::pload<TgtPacket>(values);
+      return rslt;
+    }
+  }
+
+ private:
+  const TensorEvaluator& m_impl;
+  const typename TensorEvaluator::Index m_maxIndex;
+};
+
+template<typename TargetType, typename XprType>
+class TensorConversionOp : public TensorBase<TensorConversionOp<TargetType, XprType>, ReadOnlyAccessors>
+{
+  public:
+    typedef typename internal::traits<TensorConversionOp>::Scalar Scalar;
+    typedef typename internal::traits<TensorConversionOp>::StorageKind StorageKind;
+    typedef typename internal::traits<TensorConversionOp>::Index Index;
+    typedef typename internal::nested<TensorConversionOp>::type Nested;
+    typedef Scalar CoeffReturnType;
+    typedef typename NumTraits<Scalar>::Real RealScalar;
+
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorConversionOp(const XprType& xpr)
+        : m_xpr(xpr) {}
+
+    EIGEN_DEVICE_FUNC
+    const typename internal::remove_all<typename XprType::Nested>::type&
+    expression() const { return m_xpr; }
+
+  protected:
+    typename XprType::Nested m_xpr;
+};
+
+template <bool SameType, typename Eval, typename Scalar> struct ConversionSubExprEval {
+  static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool run(Eval& impl, Scalar*) {
+    impl.evalSubExprsIfNeeded(NULL);
+    return true;
+  }
+};
+
+template <typename Eval, typename Scalar> struct ConversionSubExprEval<true, Eval, Scalar> {
+  static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool run(Eval& impl, Scalar* data) {
+    return impl.evalSubExprsIfNeeded(data);
+  }
+};
+
+
+// Eval as rvalue
+template<typename TargetType, typename ArgType, typename Device>
+struct TensorEvaluator<const TensorConversionOp<TargetType, ArgType>, Device>
+{
+  typedef TensorConversionOp<TargetType, ArgType> XprType;
+  typedef typename XprType::Index Index;
+  typedef typename TensorEvaluator<ArgType, Device>::Dimensions Dimensions;
+  typedef TargetType Scalar;
+  typedef TargetType CoeffReturnType;
+  typedef typename internal::remove_all<typename internal::traits<ArgType>::Scalar>::type SrcType;
+  typedef typename PacketType<CoeffReturnType, Device>::type PacketReturnType;
+  typedef typename PacketType<SrcType, Device>::type PacketSourceType;
+  static const int PacketSize = internal::unpacket_traits<PacketReturnType>::size;
+
+  enum {
+    IsAligned = false,
+    PacketAccess = true,
+    Layout = TensorEvaluator<ArgType, Device>::Layout,
+    RawAccess = false
+  };
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorEvaluator(const XprType& op, const Device& device)
+    : m_impl(op.expression(), device)
+  {
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Dimensions& dimensions() const { return m_impl.dimensions(); }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool evalSubExprsIfNeeded(Scalar* data)
+  {
+    return ConversionSubExprEval<internal::is_same<TargetType, SrcType>::value, TensorEvaluator<ArgType, Device>, Scalar>::run(m_impl, data);
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void cleanup()
+  {
+    m_impl.cleanup();
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType coeff(Index index) const
+  {
+    internal::scalar_cast_op<SrcType, TargetType> converter;
+    return converter(m_impl.coeff(index));
+  }
+
+  template<int LoadMode>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketReturnType packet(Index index) const
+  {
+    const bool Vectorizable = TensorEvaluator<ArgType, Device>::PacketAccess &
+        internal::type_casting_traits<SrcType, TargetType>::VectorizedCast;
+    return PacketConv<LoadMode, Vectorizable>::run(m_impl, index);
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorOpCost
+  costPerCoeff(bool vectorized) const {
+    const double cast_cost = TensorOpCost::CastCost<SrcType, TargetType>();
+    if (vectorized) {
+      const double SrcCoeffRatio =
+          internal::type_casting_traits<SrcType, TargetType>::SrcCoeffRatio;
+      const double TgtCoeffRatio =
+          internal::type_casting_traits<SrcType, TargetType>::TgtCoeffRatio;
+      return m_impl.costPerCoeff(vectorized) * (SrcCoeffRatio / PacketSize) +
+          TensorOpCost(0, 0, TgtCoeffRatio * (cast_cost / PacketSize));
+    } else {
+      return m_impl.costPerCoeff(vectorized) + TensorOpCost(0, 0, cast_cost);
+    }
+  }
+
+  EIGEN_DEVICE_FUNC Scalar* data() const { return NULL; }
+
+  protected:
+  template <int LoadMode, bool ActuallyVectorize>
+  struct PacketConv {
+    static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketReturnType run(const TensorEvaluator<ArgType, Device>& impl, Index index) {
+      internal::scalar_cast_op<SrcType, TargetType> converter;
+      EIGEN_ALIGN_MAX typename internal::remove_const<CoeffReturnType>::type values[PacketSize];
+      for (int i = 0; i < PacketSize; ++i) {
+        values[i] = converter(impl.coeff(index+i));
+      }
+      PacketReturnType rslt = internal::pload<PacketReturnType>(values);
+      return rslt;
+    }
+  };
+
+  template <int LoadMode>
+  struct PacketConv<LoadMode, true> {
+    static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketReturnType run(const TensorEvaluator<ArgType, Device>& impl, Index index) {
+      const int SrcCoeffRatio = internal::type_casting_traits<SrcType, TargetType>::SrcCoeffRatio;
+      const int TgtCoeffRatio = internal::type_casting_traits<SrcType, TargetType>::TgtCoeffRatio;
+      PacketConverter<TensorEvaluator<ArgType, Device>, PacketSourceType, PacketReturnType,
+                      SrcCoeffRatio, TgtCoeffRatio> converter(impl);
+      return converter.template packet<LoadMode>(index);
+    }
+  };
+
+  TensorEvaluator<ArgType, Device> m_impl;
+};
+
+} // end namespace Eigen
+
+#endif // EIGEN_CXX11_TENSOR_TENSOR_CONVERSION_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorMeta.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorMeta.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorMeta.h	(revision 3762)
@@ -0,0 +1,218 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2015 Benoit Steiner <benoit.steiner.goog@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CXX11_TENSOR_TENSOR_META_H
+#define EIGEN_CXX11_TENSOR_TENSOR_META_H
+
+namespace Eigen {
+
+template<bool cond> struct Cond {};
+
+template<typename T1, typename T2> EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+const T1& choose(Cond<true>, const T1& first, const T2&) {
+  return first;
+}
+
+template<typename T1, typename T2> EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+const T2& choose(Cond<false>, const T1&, const T2& second) {
+  return second;
+}
+
+
+template <typename T, typename X, typename Y>
+EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+T divup(const X x, const Y y) {
+  return static_cast<T>((x + y - 1) / y);
+}
+
+template <typename T>
+EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+T divup(const T x, const T y) {
+  return static_cast<T>((x + y - 1) / y);
+}
+
+template <size_t n> struct max_n_1 {
+  static const size_t size = n;
+};
+template <> struct max_n_1<0> {
+  static const size_t size = 1;
+};
+
+
+// Default packet types
+template <typename Scalar, typename Device>
+struct PacketType : internal::packet_traits<Scalar> {
+  typedef typename internal::packet_traits<Scalar>::type type;
+};
+
+// For CUDA packet types when using a GpuDevice
+#if defined(EIGEN_USE_GPU) && defined(__CUDACC__) && defined(EIGEN_HAS_CUDA_FP16)
+template <>
+struct PacketType<half, GpuDevice> {
+  typedef half2 type;
+  static const int size = 2;
+  enum {
+    HasAdd    = 1,
+    HasSub    = 1,
+    HasMul    = 1,
+    HasNegate = 1,
+    HasAbs    = 1,
+    HasArg    = 0,
+    HasAbs2   = 0,
+    HasMin    = 1,
+    HasMax    = 1,
+    HasConj   = 0,
+    HasSetLinear = 0,
+    HasBlend  = 0,
+
+    HasDiv    = 1,
+    HasSqrt   = 1,
+    HasRsqrt  = 1,
+    HasExp    = 1,
+    HasLog    = 1,
+    HasLog1p  = 0,
+    HasLog10  = 0,
+    HasPow    = 1,
+  };
+};
+#endif
+
+#if defined(EIGEN_USE_SYCL)
+template <typename T>
+  struct PacketType<T, SyclDevice> {
+  typedef T type;
+  static const int size = 1;
+  enum {
+    HasAdd    = 0,
+    HasSub    = 0,
+    HasMul    = 0,
+    HasNegate = 0,
+    HasAbs    = 0,
+    HasArg    = 0,
+    HasAbs2   = 0,
+    HasMin    = 0,
+    HasMax    = 0,
+    HasConj   = 0,
+    HasSetLinear = 0,
+    HasBlend  = 0
+  };
+};
+#endif
+
+
+// Tuple mimics std::pair but works on e.g. nvcc.
+template <typename U, typename V> struct Tuple {
+ public:
+  U first;
+  V second;
+
+  typedef U first_type;
+  typedef V second_type;
+
+  EIGEN_CONSTEXPR EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  Tuple() : first(), second() {}
+
+  EIGEN_CONSTEXPR EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  Tuple(const U& f, const V& s) : first(f), second(s) {}
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  Tuple& operator= (const Tuple& rhs) {
+    if (&rhs == this) return *this;
+    first = rhs.first;
+    second = rhs.second;
+    return *this;
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  void swap(Tuple& rhs) {
+    using numext::swap;
+    swap(first, rhs.first);
+    swap(second, rhs.second);
+  }
+};
+
+template <typename U, typename V>
+EIGEN_CONSTEXPR EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+bool operator==(const Tuple<U, V>& x, const Tuple<U, V>& y) {
+  return (x.first == y.first && x.second == y.second);
+}
+
+template <typename U, typename V>
+EIGEN_CONSTEXPR EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+bool operator!=(const Tuple<U, V>& x, const Tuple<U, V>& y) {
+  return !(x == y);
+}
+
+
+// Can't use std::pairs on cuda devices
+template <typename Idx> struct IndexPair {
+  EIGEN_CONSTEXPR EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE IndexPair() : first(0), second(0) {}
+  EIGEN_CONSTEXPR EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE IndexPair(Idx f, Idx s) : first(f), second(s) {}
+
+  EIGEN_DEVICE_FUNC void set(IndexPair<Idx> val) {
+    first = val.first;
+    second = val.second;
+  }
+
+  Idx first;
+  Idx second;
+};
+
+
+#ifdef EIGEN_HAS_SFINAE
+namespace internal {
+
+  template<typename IndexType, Index... Is>
+  EIGEN_CONSTEXPR EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  array<Index, sizeof...(Is)> customIndices2Array(IndexType& idx, numeric_list<Index, Is...>) {
+    return { idx[Is]... };
+  }
+  template<typename IndexType>
+  EIGEN_CONSTEXPR EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  array<Index, 0> customIndices2Array(IndexType&, numeric_list<Index>) {
+    return array<Index, 0>();
+  }
+
+  /** Make an array (for index/dimensions) out of a custom index */
+  template<typename Index, std::size_t NumIndices, typename IndexType>
+  EIGEN_CONSTEXPR EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  array<Index, NumIndices> customIndices2Array(IndexType& idx) {
+    return customIndices2Array(idx, typename gen_numeric_list<Index, NumIndices>::type{});
+  }
+
+
+  template <typename B, typename D>
+  struct is_base_of
+  {
+
+    typedef char (&yes)[1];
+    typedef char (&no)[2];
+
+    template <typename BB, typename DD>
+    struct Host
+    {
+      operator BB*() const;
+      operator DD*();
+    };
+
+    template<typename T>
+    static yes check(D*, T);
+    static no check(B*, int);
+
+    static const bool value = sizeof(check(Host<B,D>(), int())) == sizeof(yes);
+  };
+
+}
+#endif
+
+
+
+}  // namespace Eigen
+
+#endif  // EIGEN_CXX11_TENSOR_TENSOR_META_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorContractionMapper.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorContractionMapper.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorContractionMapper.h	(revision 3762)
@@ -0,0 +1,469 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2014 Benoit Steiner <benoit.steiner.goog@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CXX11_TENSOR_TENSOR_CONTRACTION_MAPPER_H
+#define EIGEN_CXX11_TENSOR_TENSOR_CONTRACTION_MAPPER_H
+
+namespace Eigen {
+
+namespace internal {
+
+enum {
+  Rhs = 0,
+  Lhs = 1
+};
+
+/*
+ * Implementation of the Eigen blas_data_mapper class for tensors.
+ */
+
+template <typename Tensor, bool HasRawAccess> struct CoeffLoader {
+  enum {
+    DirectOffsets = false
+  };
+
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE CoeffLoader(const Tensor& tensor) : m_tensor(tensor) { }
+
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE void offsetBuffer(typename Tensor::Index) {
+    eigen_assert(false && "unsupported");
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE typename Tensor::Scalar coeff(typename Tensor::Index index) const { return m_tensor.coeff(index); }
+
+ template<int LoadMode> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+ typename Tensor::PacketReturnType packet(typename Tensor::Index index) const
+  {
+    return m_tensor.template packet<LoadMode>(index);
+  }
+
+
+ private:
+  const Tensor m_tensor;
+};
+
+template <typename Tensor> struct CoeffLoader<Tensor, true> {
+  enum {
+    DirectOffsets = true
+  };
+
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE CoeffLoader(const Tensor& tensor) : m_data(tensor.data()) {}
+
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE void offsetBuffer(typename Tensor::Index offset) {
+    m_data += offset;
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE typename Tensor::Scalar coeff(typename Tensor::Index index) const { return loadConstant(m_data+index); }
+
+ template<int LoadMode> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+ typename Tensor::PacketReturnType packet(typename Tensor::Index index) const
+  {
+    return internal::ploadt_ro<typename Tensor::PacketReturnType, LoadMode>(m_data + index);
+  }
+ private:
+  typedef typename Tensor::Scalar Scalar;
+  const Scalar* m_data;
+};
+
+template<typename Scalar, typename Index, int side,
+         typename Tensor,
+         typename nocontract_t, typename contract_t,
+         int packet_size, bool inner_dim_contiguous, int Alignment>
+class SimpleTensorContractionMapper {
+  public:
+  EIGEN_DEVICE_FUNC
+  SimpleTensorContractionMapper(const Tensor& tensor,
+                                const nocontract_t& nocontract_strides,
+                                const nocontract_t& ij_strides,
+                                const contract_t& contract_strides,
+                                const contract_t& k_strides) :
+      m_tensor(tensor),
+      m_nocontract_strides(nocontract_strides),
+      m_ij_strides(ij_strides),
+      m_contract_strides(contract_strides),
+      m_k_strides(k_strides) { }
+
+  enum {
+    DirectOffsets = CoeffLoader<Tensor, Tensor::RawAccess>::DirectOffsets
+  };
+
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE void offsetBuffer(typename Tensor::Index offset) {
+    m_tensor.offsetBuffer(offset);
+  }
+
+  EIGEN_DEVICE_FUNC
+  EIGEN_STRONG_INLINE void prefetch(Index /*i*/) { }
+
+  EIGEN_DEVICE_FUNC
+  EIGEN_STRONG_INLINE Scalar operator()(Index row) const {
+    // column major assumption
+    return operator()(row, 0);
+  }
+
+  EIGEN_DEVICE_FUNC
+  EIGEN_STRONG_INLINE Scalar operator()(Index row, Index col) const {
+    return m_tensor.coeff(computeIndex(row, col));
+  }
+
+  EIGEN_DEVICE_FUNC
+  EIGEN_STRONG_INLINE Index computeIndex(Index row, Index col) const {
+    const bool left = (side == Lhs);
+    EIGEN_UNUSED_VARIABLE(left); // annoying bug in g++8.1: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85963
+    Index nocontract_val = left ? row : col;
+    Index linidx = 0;
+    for (int i = static_cast<int>(array_size<nocontract_t>::value) - 1; i > 0; i--) {
+      const Index idx = nocontract_val / m_ij_strides[i];
+      linidx += idx * m_nocontract_strides[i];
+      nocontract_val -= idx * m_ij_strides[i];
+    }
+    if (array_size<typename Tensor::Dimensions>::value > array_size<contract_t>::value) {
+      if (side == Lhs && inner_dim_contiguous) {
+        eigen_assert(m_nocontract_strides[0] == 1);
+        linidx += nocontract_val;
+      } else {
+        linidx += nocontract_val * m_nocontract_strides[0];
+      }
+    }
+
+    Index contract_val = left ? col : row;
+    if(array_size<contract_t>::value > 0) {
+      for (int i = static_cast<int>(array_size<contract_t>::value) - 1; i > 0; i--) {
+        const Index idx = contract_val / m_k_strides[i];
+        linidx += idx * m_contract_strides[i];
+        contract_val -= idx * m_k_strides[i];
+      }
+
+      if (side == Rhs && inner_dim_contiguous) {
+        eigen_assert(m_contract_strides[0] == 1);
+        linidx += contract_val;
+      } else {
+        linidx += contract_val * m_contract_strides[0];
+      }
+    }
+
+    return linidx;
+  }
+
+  EIGEN_DEVICE_FUNC
+  EIGEN_STRONG_INLINE IndexPair<Index> computeIndexPair(Index row, Index col, const Index distance) const {
+    const bool left = (side == Lhs);
+    EIGEN_UNUSED_VARIABLE(left); // annoying bug in g++8.1: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85963
+    Index nocontract_val[2] = {left ? row : col, left ? row + distance : col};
+    Index linidx[2] = {0, 0};
+    if (array_size<typename Tensor::Dimensions>::value > array_size<contract_t>::value) {
+      for (int i = static_cast<int>(array_size<nocontract_t>::value) - 1; i > 0; i--) {
+        const Index idx0 = nocontract_val[0] / m_ij_strides[i];
+        const Index idx1 = nocontract_val[1] / m_ij_strides[i];
+        linidx[0] += idx0 * m_nocontract_strides[i];
+        linidx[1] += idx1 * m_nocontract_strides[i];
+        nocontract_val[0] -= idx0 * m_ij_strides[i];
+        nocontract_val[1] -= idx1 * m_ij_strides[i];
+      }
+      if (side == Lhs && inner_dim_contiguous) {
+        eigen_assert(m_nocontract_strides[0] == 1);
+        linidx[0] += nocontract_val[0];
+        linidx[1] += nocontract_val[1];
+      } else {
+        linidx[0] += nocontract_val[0] * m_nocontract_strides[0];
+        linidx[1] += nocontract_val[1] * m_nocontract_strides[0];
+      }
+    }
+
+    Index contract_val[2] = {left ? col : row, left ? col : row + distance};
+    if (array_size<contract_t>::value> 0) {
+      for (int i = static_cast<int>(array_size<contract_t>::value) - 1; i > 0; i--) {
+        const Index idx0 = contract_val[0] / m_k_strides[i];
+        const Index idx1 = contract_val[1] / m_k_strides[i];
+        linidx[0] += idx0 * m_contract_strides[i];
+        linidx[1] += idx1 * m_contract_strides[i];
+        contract_val[0] -= idx0 * m_k_strides[i];
+        contract_val[1] -= idx1 * m_k_strides[i];
+      }
+
+      if (side == Rhs && inner_dim_contiguous) {
+        eigen_assert(m_contract_strides[0] == 1);
+        linidx[0] += contract_val[0];
+        linidx[1] += contract_val[1];
+      } else {
+        linidx[0] += contract_val[0] * m_contract_strides[0];
+        linidx[1] += contract_val[1] * m_contract_strides[0];
+      }
+    }
+    return IndexPair<Index>(linidx[0], linidx[1]);
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE Index firstAligned(Index size) const {
+    // Only claim alignment when we can compute the actual stride (ie when we're
+    // dealing with the lhs with inner_dim_contiguous. This is because the
+    // matrix-vector product relies on the stride when dealing with aligned inputs.
+    return (Alignment == Aligned) && (side == Lhs) && inner_dim_contiguous ? 0 : size;
+  }
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE Index stride() const {
+    return ((side == Lhs) && inner_dim_contiguous && array_size<contract_t>::value > 0) ? m_contract_strides[0] : 1;
+  }
+
+ protected:
+  CoeffLoader<Tensor, Tensor::RawAccess> m_tensor;
+  const nocontract_t m_nocontract_strides;
+  const nocontract_t m_ij_strides;
+  const contract_t m_contract_strides;
+  const contract_t m_k_strides;
+};
+
+
+template<typename Scalar, typename Index, int side,
+         typename Tensor,
+         typename nocontract_t, typename contract_t,
+         int packet_size, bool inner_dim_contiguous,
+         bool inner_dim_reordered, int Alignment>
+class BaseTensorContractionMapper : public SimpleTensorContractionMapper<Scalar, Index, side, Tensor, nocontract_t, contract_t, packet_size, inner_dim_contiguous, Alignment>
+{
+ public:
+  typedef SimpleTensorContractionMapper<Scalar, Index, side, Tensor, nocontract_t, contract_t, packet_size, inner_dim_contiguous, Alignment> ParentMapper;
+
+  EIGEN_DEVICE_FUNC
+  BaseTensorContractionMapper(const Tensor& tensor,
+                              const nocontract_t& nocontract_strides,
+                              const nocontract_t& ij_strides,
+                              const contract_t& contract_strides,
+                              const contract_t& k_strides) :
+  ParentMapper(tensor, nocontract_strides, ij_strides, contract_strides, k_strides) { }
+
+  typedef typename Tensor::PacketReturnType Packet;
+  typedef typename unpacket_traits<Packet>::half HalfPacket;
+
+  template <int AlignmentType>
+  EIGEN_DEVICE_FUNC
+  EIGEN_STRONG_INLINE Packet loadPacket(Index i, Index j) const {
+    // whole method makes column major assumption
+
+    // don't need to add offsets for now (because operator handles that)
+    // current code assumes packet size must be a multiple of 2
+    EIGEN_STATIC_ASSERT(packet_size % 2 == 0, YOU_MADE_A_PROGRAMMING_MISTAKE);
+
+    if (Tensor::PacketAccess && inner_dim_contiguous && !inner_dim_reordered) {
+      const Index index = this->computeIndex(i, j);
+      eigen_assert(this->computeIndex(i+packet_size-1, j) == index + packet_size-1);
+      return this->m_tensor.template packet<AlignmentType>(index);
+    }
+
+    const IndexPair<Index> indexPair = this->computeIndexPair(i, j, packet_size - 1);
+    const Index first = indexPair.first;
+    const Index last = indexPair.second;
+
+    // We can always do optimized packet reads from left hand side right now, because
+    // the vertical matrix dimension on the left hand side is never contracting.
+    // On the right hand side we need to check if the contracting dimensions may have
+    // been shuffled first.
+    if (Tensor::PacketAccess &&
+        (side == Lhs || internal::array_size<contract_t>::value <= 1 || !inner_dim_reordered) &&
+        (last - first) == (packet_size - 1)) {
+
+      return this->m_tensor.template packet<AlignmentType>(first);
+    }
+
+    EIGEN_ALIGN_MAX Scalar data[packet_size];
+
+    data[0] = this->m_tensor.coeff(first);
+    for (Index k = 1; k < packet_size - 1; k += 2) {
+      const IndexPair<Index> internal_pair = this->computeIndexPair(i + k, j, 1);
+      data[k] = this->m_tensor.coeff(internal_pair.first);
+      data[k + 1] = this->m_tensor.coeff(internal_pair.second);
+    }
+    data[packet_size - 1] = this->m_tensor.coeff(last);
+
+    return pload<Packet>(data);
+  }
+
+  template <int AlignmentType>
+  EIGEN_DEVICE_FUNC
+  EIGEN_STRONG_INLINE HalfPacket loadHalfPacket(Index i, Index j) const {
+    // whole method makes column major assumption
+
+    // don't need to add offsets for now (because operator handles that)
+    const Index half_packet_size = unpacket_traits<HalfPacket>::size;
+    if (half_packet_size == packet_size) {
+      return loadPacket<AlignmentType>(i, j);
+    }
+    EIGEN_ALIGN_MAX Scalar data[half_packet_size];
+    for (Index k = 0; k < half_packet_size; k++) {
+      data[k] = operator()(i + k, j);
+    }
+    return pload<HalfPacket>(data);
+  }
+};
+
+
+template<typename Scalar, typename Index, int side,
+         typename Tensor,
+         typename nocontract_t, typename contract_t,
+         bool inner_dim_contiguous,
+         bool inner_dim_reordered, int Alignment>
+class BaseTensorContractionMapper<Scalar, Index, side, Tensor, nocontract_t, contract_t, 1, inner_dim_contiguous, inner_dim_reordered, Alignment> : public SimpleTensorContractionMapper<Scalar, Index, side, Tensor, nocontract_t, contract_t, 1, inner_dim_contiguous, Alignment>
+{
+ public:
+  typedef SimpleTensorContractionMapper<Scalar, Index, side, Tensor, nocontract_t, contract_t, 1, inner_dim_contiguous, Alignment> ParentMapper;
+
+  EIGEN_DEVICE_FUNC
+  BaseTensorContractionMapper(const Tensor& tensor,
+                              const nocontract_t& nocontract_strides,
+                              const nocontract_t& ij_strides,
+                              const contract_t& contract_strides,
+                              const contract_t& k_strides) :
+  ParentMapper(tensor, nocontract_strides, ij_strides, contract_strides, k_strides) { }
+
+  typedef typename Tensor::PacketReturnType Packet;
+  template <int> EIGEN_DEVICE_FUNC
+  EIGEN_STRONG_INLINE Packet loadPacket(Index i, Index j) const {
+    EIGEN_ALIGN_MAX Scalar data[1];
+    data[0] = this->m_tensor.coeff(this->computeIndex(i, j));
+    return pload<typename Tensor::PacketReturnType>(data);
+  }
+  template <int> EIGEN_DEVICE_FUNC
+  EIGEN_STRONG_INLINE Packet loadHalfPacket(Index i, Index j) const {
+    return loadPacket(i, j);
+  }
+};
+
+
+template<typename Scalar, typename Index, int side,
+         typename Tensor,
+         typename nocontract_t, typename contract_t,
+         int packet_size,
+         bool inner_dim_contiguous, bool inner_dim_reordered, int Alignment>
+class TensorContractionSubMapper {
+ public:
+  typedef typename Tensor::PacketReturnType Packet;
+  typedef typename unpacket_traits<Packet>::half HalfPacket;
+
+  typedef BaseTensorContractionMapper<Scalar, Index, side, Tensor, nocontract_t, contract_t, packet_size, inner_dim_contiguous, inner_dim_reordered, Alignment> ParentMapper;
+  typedef TensorContractionSubMapper<Scalar, Index, side, Tensor, nocontract_t, contract_t, packet_size, inner_dim_contiguous, inner_dim_reordered, Alignment> Self;
+  typedef Self LinearMapper;
+
+  enum {
+    // We can use direct offsets iff the parent mapper supports then and we can compute the strides.
+    // TODO: we should also enable direct offsets for the Rhs case.
+    UseDirectOffsets = ParentMapper::DirectOffsets && (side == Lhs) && inner_dim_contiguous && (array_size<contract_t>::value > 0)
+  };
+
+  EIGEN_DEVICE_FUNC TensorContractionSubMapper(const ParentMapper& base_mapper, Index vert_offset, Index horiz_offset)
+      : m_base_mapper(base_mapper), m_vert_offset(vert_offset), m_horiz_offset(horiz_offset) {
+    // Bake the offsets into the buffer used by the base mapper whenever possible. This avoids the need to recompute
+    // this offset every time we attempt to access a coefficient.
+    if (UseDirectOffsets) {
+      Index stride = m_base_mapper.stride();
+      m_base_mapper.offsetBuffer(vert_offset + horiz_offset * stride);
+    }
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE Scalar operator()(Index i) const {
+    if (UseDirectOffsets) {
+      return m_base_mapper(i, 0);
+    }
+    return m_base_mapper(i + m_vert_offset, m_horiz_offset);
+  }
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE Scalar operator()(Index i, Index j) const {
+    if (UseDirectOffsets) {
+      return m_base_mapper(i, j);
+    }
+    return m_base_mapper(i + m_vert_offset, j + m_horiz_offset);
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE Packet loadPacket(Index i) const {
+    if (UseDirectOffsets) {
+      return m_base_mapper.template loadPacket<Alignment>(i, 0);
+    }
+    return m_base_mapper.template loadPacket<Alignment>(i + m_vert_offset, m_horiz_offset);
+  }
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE Packet loadPacket(Index i, Index j) const {
+    if (UseDirectOffsets) {
+      return m_base_mapper.template loadPacket<Alignment>(i, j);
+    }
+    return m_base_mapper.template loadPacket<Alignment>(i + m_vert_offset, j + m_horiz_offset);
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE HalfPacket loadHalfPacket(Index i) const {
+    if (UseDirectOffsets) {
+      return m_base_mapper.template loadHalfPacket<Alignment>(i, 0);
+    }
+    return m_base_mapper.template loadHalfPacket<Alignment>(i + m_vert_offset, m_horiz_offset);
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE void storePacket(Index i, Packet p) const {
+    if (UseDirectOffsets) {
+      m_base_mapper.storePacket(i, 0, p);
+    }
+    m_base_mapper.storePacket(i + m_vert_offset, m_horiz_offset, p);
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE LinearMapper getLinearMapper(Index i, Index j) const {
+    if (UseDirectOffsets) {
+      return LinearMapper(m_base_mapper, i, j);
+    }
+    return LinearMapper(m_base_mapper, i + m_vert_offset, j + m_horiz_offset);
+  }
+
+  template <typename PacketT, int AlignmentType>
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE PacketT load(Index i) const {
+    EIGEN_STATIC_ASSERT((internal::is_same<PacketT, Packet>::value), YOU_MADE_A_PROGRAMMING_MISTAKE);
+    const int ActualAlignment = (AlignmentType == Aligned) && (Alignment == Aligned) ? Aligned : Unaligned;
+    if (UseDirectOffsets) {
+     return m_base_mapper.template loadPacket<ActualAlignment>(i, 0);
+    }
+    return m_base_mapper.template loadPacket<ActualAlignment>(i + m_vert_offset, m_horiz_offset);
+  }
+
+  template <typename Packet>
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE bool aligned(Index) const {
+    return false;
+  }
+
+ private:
+  ParentMapper m_base_mapper;
+  const Index m_vert_offset;
+  const Index m_horiz_offset;
+};
+
+
+template<typename Scalar_, typename Index, int side,
+         typename Tensor,
+         typename nocontract_t, typename contract_t,
+         int packet_size,
+         bool inner_dim_contiguous, bool inner_dim_reordered, int Alignment>
+class TensorContractionInputMapper
+  : public BaseTensorContractionMapper<Scalar_, Index, side, Tensor, nocontract_t, contract_t, packet_size, inner_dim_contiguous, inner_dim_reordered, Alignment> {
+
+ public:
+  typedef Scalar_ Scalar;
+  typedef BaseTensorContractionMapper<Scalar, Index, side, Tensor, nocontract_t, contract_t, packet_size, inner_dim_contiguous, inner_dim_reordered, Alignment> Base;
+  typedef TensorContractionSubMapper<Scalar, Index, side, Tensor, nocontract_t, contract_t, packet_size, inner_dim_contiguous, inner_dim_reordered, Alignment> SubMapper;
+  typedef SubMapper VectorMapper;
+
+  EIGEN_DEVICE_FUNC TensorContractionInputMapper(const Tensor& tensor,
+                               const nocontract_t& nocontract_strides,
+                               const nocontract_t& ij_strides,
+                               const contract_t& contract_strides,
+                               const contract_t& k_strides)
+      : Base(tensor, nocontract_strides, ij_strides, contract_strides, k_strides) { }
+
+  EIGEN_DEVICE_FUNC
+  EIGEN_STRONG_INLINE SubMapper getSubMapper(Index i, Index j) const {
+    return SubMapper(*this, i, j);
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE VectorMapper getVectorMapper(Index i, Index j) const {
+    return VectorMapper(*this, i, j);
+  }
+};
+
+
+
+}  // end namespace internal
+}  // end namespace Eigen
+
+#endif // EIGEN_CXX11_TENSOR_TENSOR_CONTRACTION_MAPPER_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorSyclExtractFunctors.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorSyclExtractFunctors.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorSyclExtractFunctors.h	(revision 3762)
@@ -0,0 +1,177 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Mehdi Goli    Codeplay Software Ltd.
+// Ralph Potter  Codeplay Software Ltd.
+// Luke Iwanski  Codeplay Software Ltd.
+// Contact: <eigen@codeplay.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+/*****************************************************************
+ * TensorSyclextractFunctors.h
+ *
+ * \brief:
+ *  Used to extract all the functors allocated to each node of the expression
+*tree.
+ *
+*****************************************************************/
+
+#ifndef UNSUPPORTED_EIGEN_CXX11_SRC_TENSOR_TENSORSYCL_EXTRACT_FUNCTORS_HPP
+#define UNSUPPORTED_EIGEN_CXX11_SRC_TENSOR_TENSORSYCL_EXTRACT_FUNCTORS_HPP
+
+namespace Eigen {
+namespace TensorSycl {
+namespace internal {
+/// struct FunctorExtractor:  This struct is used to extract the functors
+/// constructed on
+/// the host-side, to pack them and reuse them in reconstruction of the
+/// expression on the device.
+/// We have to do that as in Eigen the functors are not stateless so we cannot
+/// re-instantiate them on the device.
+/// We have to pass instantiated functors to the device.
+// This struct is used for leafNode (TensorMap) and nodes behaving like leafNode (TensorForcedEval).
+template <typename Evaluator> struct FunctorExtractor{
+  typedef typename Evaluator::Dimensions Dimensions;
+  const Dimensions m_dimensions;
+  const Dimensions& dimensions() const { return m_dimensions; }
+  FunctorExtractor(const Evaluator& expr)
+  : m_dimensions(expr.dimensions()) {}
+
+};
+
+/// specialisation of the \ref FunctorExtractor struct when the node type is
+/// const TensorCwiseNullaryOp, const TensorCwiseUnaryOp, and const TensorBroadcastingOp
+template <template <class, class> class UnaryCategory, typename OP, typename RHSExpr, typename Dev>
+struct FunctorExtractor<TensorEvaluator<const UnaryCategory<OP, RHSExpr>, Dev> > {
+  FunctorExtractor<TensorEvaluator<RHSExpr, Dev> > rhsExpr;
+  OP func;
+  FunctorExtractor(const TensorEvaluator<const UnaryCategory<OP, RHSExpr>, Dev>& expr)
+  : rhsExpr(expr.impl()), func(expr.functor()) {}
+};
+/// specialisation of the \ref FunctorExtractor struct when the node type is
+/// TensorCwiseNullaryOp, TensorCwiseUnaryOp, and TensorBroadcastingOp
+template <template <class, class> class UnaryCategory, typename OP, typename RHSExpr, typename Dev>
+struct FunctorExtractor<TensorEvaluator<UnaryCategory<OP, RHSExpr>, Dev> >
+: FunctorExtractor<TensorEvaluator<const UnaryCategory<OP, RHSExpr>, Dev> >{};
+
+/// specialisation of the \ref FunctorExtractor struct when the node type is
+/// const TensorCwiseBinaryOp
+template <template<class, class, class> class BinaryCategory, typename OP, typename LHSExpr, typename RHSExpr, typename Dev>
+struct FunctorExtractor<TensorEvaluator<const BinaryCategory<OP, LHSExpr, RHSExpr>, Dev> > {
+  FunctorExtractor<TensorEvaluator<LHSExpr, Dev> > lhsExpr;
+  FunctorExtractor<TensorEvaluator<RHSExpr, Dev> > rhsExpr;
+  OP func;
+  FunctorExtractor(const TensorEvaluator<const BinaryCategory<OP, LHSExpr, RHSExpr>, Dev>& expr)
+  : lhsExpr(expr.left_impl()),rhsExpr(expr.right_impl()),func(expr.functor()) {}
+};
+
+/// specialisation of the \ref FunctorExtractor struct when the node type is
+/// const TensorCwiseBinaryOp
+template <template <class, class, class> class BinaryCategory, typename OP, typename LHSExpr, typename RHSExpr, typename Dev>
+struct FunctorExtractor<TensorEvaluator<BinaryCategory<OP,  LHSExpr, RHSExpr>, Dev> >
+: FunctorExtractor<TensorEvaluator<const BinaryCategory<OP,  LHSExpr, RHSExpr>, Dev> >{};
+
+/// specialisation of the \ref FunctorExtractor struct when the node type is
+/// const TensorCwiseTernaryOp
+template <template <class, class, class, class> class TernaryCategory, typename OP, typename Arg1Expr, typename Arg2Expr, typename Arg3Expr,typename Dev>
+struct FunctorExtractor<TensorEvaluator<const TernaryCategory<OP, Arg1Expr, Arg2Expr, Arg3Expr>, Dev> > {
+  FunctorExtractor<TensorEvaluator<Arg1Expr, Dev> > arg1Expr;
+  FunctorExtractor<TensorEvaluator<Arg2Expr, Dev> > arg2Expr;
+  FunctorExtractor<TensorEvaluator<Arg3Expr, Dev> > arg3Expr;
+  OP func;
+  FunctorExtractor(const TensorEvaluator<const TernaryCategory<OP, Arg1Expr, Arg2Expr, Arg3Expr>, Dev>& expr)
+  : arg1Expr(expr.arg1Impl()), arg2Expr(expr.arg2Impl()), arg3Expr(expr.arg3Impl()), func(expr.functor()) {}
+};
+
+/// specialisation of the \ref FunctorExtractor struct when the node type is
+/// TensorCwiseTernaryOp
+template <template <class, class, class, class> class TernaryCategory, typename OP, typename Arg1Expr, typename Arg2Expr, typename Arg3Expr, typename Dev>
+struct FunctorExtractor<TensorEvaluator< TernaryCategory<OP, Arg1Expr, Arg2Expr, Arg3Expr>, Dev> >
+:FunctorExtractor<TensorEvaluator<const TernaryCategory<OP, Arg1Expr, Arg2Expr, Arg3Expr>, Dev> >{};
+
+/// specialisation of the \ref FunctorExtractor struct when the node type is
+/// const TensorCwiseSelectOp. This is an specialisation without OP so it has to be separated.
+template <typename IfExpr, typename ThenExpr, typename ElseExpr, typename Dev>
+struct FunctorExtractor< TensorEvaluator<const TensorSelectOp<IfExpr, ThenExpr, ElseExpr>, Dev> > {
+  FunctorExtractor<TensorEvaluator<IfExpr, Dev> > ifExpr;
+  FunctorExtractor<TensorEvaluator<ThenExpr, Dev> > thenExpr;
+  FunctorExtractor<TensorEvaluator<ElseExpr, Dev> > elseExpr;
+  FunctorExtractor(const TensorEvaluator<const TensorSelectOp<IfExpr, ThenExpr, ElseExpr>, Dev>& expr)
+  : ifExpr(expr.cond_impl()), thenExpr(expr.then_impl()), elseExpr(expr.else_impl()) {}
+};
+
+/// specialisation of the \ref FunctorExtractor struct when the node type is
+/// TensorCwiseSelectOp. This is an specialisation without OP so it has to be separated
+template <typename IfExpr, typename ThenExpr, typename ElseExpr, typename Dev>
+struct FunctorExtractor<TensorEvaluator<TensorSelectOp<IfExpr, ThenExpr, ElseExpr>, Dev> >
+:FunctorExtractor< TensorEvaluator<const TensorSelectOp<IfExpr, ThenExpr, ElseExpr>, Dev> > {};
+
+/// specialisation of the \ref FunctorExtractor struct when the node type is
+/// const TensorAssignOp. This is an specialisation without OP so it has to be separated.
+template <typename LHSExpr, typename RHSExpr, typename Dev>
+struct FunctorExtractor<TensorEvaluator<const TensorAssignOp<LHSExpr, RHSExpr>, Dev> > {
+  FunctorExtractor<TensorEvaluator<LHSExpr, Dev> > lhsExpr;
+  FunctorExtractor<TensorEvaluator<RHSExpr, Dev> > rhsExpr;
+  FunctorExtractor(const TensorEvaluator<const TensorAssignOp<LHSExpr, RHSExpr>, Dev>& expr)
+  : lhsExpr(expr.left_impl()), rhsExpr(expr.right_impl()) {}
+};
+
+/// specialisation of the \ref FunctorExtractor struct when the node type is
+/// TensorAssignOp. This is an specialisation without OP so it has to be separated.
+template <typename LHSExpr, typename RHSExpr, typename Dev>
+struct FunctorExtractor<TensorEvaluator<TensorAssignOp<LHSExpr, RHSExpr>, Dev> >
+:FunctorExtractor<TensorEvaluator<const TensorAssignOp<LHSExpr, RHSExpr>, Dev> >{};
+
+
+/// specialisation of the \ref FunctorExtractor struct when the node type is
+/// const TensorEvalToOp, This is an specialisation without OP so it has to be separated.
+template <typename RHSExpr, typename Dev>
+struct FunctorExtractor<TensorEvaluator<const TensorEvalToOp<RHSExpr>, Dev> > {
+  FunctorExtractor<TensorEvaluator<RHSExpr, Dev> > rhsExpr;
+  FunctorExtractor(const TensorEvaluator<const TensorEvalToOp<RHSExpr>, Dev>& expr)
+  : rhsExpr(expr.impl()) {}
+};
+
+/// specialisation of the \ref FunctorExtractor struct when the node type is
+/// TensorEvalToOp. This is a specialisation without OP so it has to be separated.
+template <typename RHSExpr, typename Dev>
+struct FunctorExtractor<TensorEvaluator<TensorEvalToOp<RHSExpr>, Dev> >
+: FunctorExtractor<TensorEvaluator<const TensorEvalToOp<RHSExpr>, Dev> > {};
+
+template<typename Dim, size_t NumOutputDim> struct DimConstr {
+template<typename InDim>
+  static inline Dim getDim(InDim dims ) {return dims;}
+};
+
+template<typename Dim> struct DimConstr<Dim, 0> {
+  template<typename InDim>
+    static inline Dim getDim(InDim dims ) {return Dim(dims.TotalSize());}
+};
+
+template<typename Op, typename Dims, typename ArgType, template <class> class MakePointer_, typename Device>
+struct FunctorExtractor<TensorEvaluator<const TensorReductionOp<Op, Dims, ArgType, MakePointer_>, Device>>{
+  typedef TensorEvaluator<const TensorReductionOp<Op, Dims, ArgType, MakePointer_>, Device> Evaluator;
+  typedef typename Eigen::internal::conditional<Evaluator::NumOutputDims==0, DSizes<typename Evaluator::Index, 1>, typename Evaluator::Dimensions >::type Dimensions;
+  const Dimensions m_dimensions;
+  const Dimensions& dimensions() const { return m_dimensions; }
+  FunctorExtractor(const TensorEvaluator<const TensorReductionOp<Op, Dims, ArgType, MakePointer_>, Device>& expr)
+  : m_dimensions(DimConstr<Dimensions, Evaluator::NumOutputDims>::getDim(expr.dimensions())) {}
+};
+
+
+template<typename Op, typename Dims, typename ArgType, template <class> class MakePointer_, typename Device>
+struct FunctorExtractor<TensorEvaluator<TensorReductionOp<Op, Dims, ArgType, MakePointer_>, Device>>
+: FunctorExtractor<TensorEvaluator<const TensorReductionOp<Op, Dims, ArgType, MakePointer_>, Device>>{};
+/// template deduction function for FunctorExtractor
+template <typename Evaluator>
+auto inline extractFunctors(const Evaluator& evaluator)-> FunctorExtractor<Evaluator> {
+  return FunctorExtractor<Evaluator>(evaluator);
+}
+}  // namespace internal
+}  // namespace TensorSycl
+}  // namespace Eigen
+
+#endif  // UNSUPPORTED_EIGEN_CXX11_SRC_TENSOR_TENSORSYCL_EXTRACT_FUNCTORS_HPP
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorContractionBlocking.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorContractionBlocking.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorContractionBlocking.h	(revision 3762)
@@ -0,0 +1,56 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2014 Benoit Steiner <benoit.steiner.goog@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CXX11_TENSOR_TENSOR_CONTRACTION_BLOCKING_H
+#define EIGEN_CXX11_TENSOR_TENSOR_CONTRACTION_BLOCKING_H
+
+
+namespace Eigen {
+namespace internal {
+
+enum {
+  ShardByRow = 0,
+  ShardByCol = 1
+};
+
+
+// Default Blocking Strategy
+template <typename LhsMapper, typename RhsMapper, typename Index, int ShardingType=ShardByCol>
+class TensorContractionBlocking {
+ public:
+
+  typedef typename LhsMapper::Scalar LhsScalar;
+  typedef typename RhsMapper::Scalar RhsScalar;
+
+  EIGEN_DEVICE_FUNC TensorContractionBlocking(Index k, Index m, Index n, Index num_threads = 1) :
+      kc_(k), mc_(m), nc_(n)
+  {
+    if (ShardingType == ShardByCol) {
+      computeProductBlockingSizes<LhsScalar, RhsScalar, 1>(kc_, mc_, nc_, num_threads);
+    }
+    else {
+      computeProductBlockingSizes<LhsScalar, RhsScalar, 1>(kc_, nc_, mc_, num_threads);
+    }
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE Index kc() const { return kc_; }
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE Index mc() const { return mc_; }
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE Index nc() const { return nc_; }
+
+ private:
+  Index kc_;
+  Index mc_;
+  Index nc_;
+};
+
+
+} // end namespace internal
+} // end namespace Eigen
+
+#endif // EIGEN_CXX11_TENSOR_TENSOR_CONTRACTION_BLOCKING_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorDevice.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorDevice.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorDevice.h	(revision 3762)
@@ -0,0 +1,68 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2014 Benoit Steiner <benoit.steiner.goog@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CXX11_TENSOR_TENSOR_DEVICE_H
+#define EIGEN_CXX11_TENSOR_TENSOR_DEVICE_H
+
+namespace Eigen {
+
+/** \class TensorDevice
+  * \ingroup CXX11_Tensor_Module
+  *
+  * \brief Pseudo expression providing an operator = that will evaluate its argument
+  * on the specified computing 'device' (GPU, thread pool, ...)
+  *
+  * Example:
+  *    C.device(EIGEN_GPU) = A + B;
+  *
+  * Todo: operator *= and /=.
+  */
+
+template <typename ExpressionType, typename DeviceType> class TensorDevice {
+  public:
+    TensorDevice(const DeviceType& device, ExpressionType& expression) : m_device(device), m_expression(expression) {}
+
+    template<typename OtherDerived>
+    EIGEN_STRONG_INLINE TensorDevice& operator=(const OtherDerived& other) {
+      typedef TensorAssignOp<ExpressionType, const OtherDerived> Assign;
+      Assign assign(m_expression, other);
+      internal::TensorExecutor<const Assign, DeviceType>::run(assign, m_device);
+      return *this;
+    }
+
+    template<typename OtherDerived>
+    EIGEN_STRONG_INLINE TensorDevice& operator+=(const OtherDerived& other) {
+      typedef typename OtherDerived::Scalar Scalar;
+      typedef TensorCwiseBinaryOp<internal::scalar_sum_op<Scalar>, const ExpressionType, const OtherDerived> Sum;
+      Sum sum(m_expression, other);
+      typedef TensorAssignOp<ExpressionType, const Sum> Assign;
+      Assign assign(m_expression, sum);
+      internal::TensorExecutor<const Assign, DeviceType>::run(assign, m_device);
+      return *this;
+    }
+
+    template<typename OtherDerived>
+    EIGEN_STRONG_INLINE TensorDevice& operator-=(const OtherDerived& other) {
+      typedef typename OtherDerived::Scalar Scalar;
+      typedef TensorCwiseBinaryOp<internal::scalar_difference_op<Scalar>, const ExpressionType, const OtherDerived> Difference;
+      Difference difference(m_expression, other);
+      typedef TensorAssignOp<ExpressionType, const Difference> Assign;
+      Assign assign(m_expression, difference);
+      internal::TensorExecutor<const Assign, DeviceType>::run(assign, m_device);
+      return *this;
+    }
+
+  protected:
+    const DeviceType& m_device;
+    ExpressionType& m_expression;
+};
+
+} // end namespace Eigen
+
+#endif // EIGEN_CXX11_TENSOR_TENSOR_DEVICE_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorChipping.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorChipping.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorChipping.h	(revision 3762)
@@ -0,0 +1,384 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2014 Benoit Steiner <benoit.steiner.goog@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CXX11_TENSOR_TENSOR_CHIPPING_H
+#define EIGEN_CXX11_TENSOR_TENSOR_CHIPPING_H
+
+namespace Eigen {
+
+/** \class TensorKChippingReshaping
+  * \ingroup CXX11_Tensor_Module
+  *
+  * \brief A chip is a thin slice, corresponding to a column or a row in a 2-d tensor.
+  *
+  *
+  */
+
+namespace internal {
+template<DenseIndex DimId, typename XprType>
+struct traits<TensorChippingOp<DimId, XprType> > : public traits<XprType>
+{
+  typedef typename XprType::Scalar Scalar;
+  typedef traits<XprType> XprTraits;
+  typedef typename XprTraits::StorageKind StorageKind;
+  typedef typename XprTraits::Index Index;
+  typedef typename XprType::Nested Nested;
+  typedef typename remove_reference<Nested>::type _Nested;
+  static const int NumDimensions = XprTraits::NumDimensions - 1;
+  static const int Layout = XprTraits::Layout;
+};
+
+template<DenseIndex DimId, typename XprType>
+struct eval<TensorChippingOp<DimId, XprType>, Eigen::Dense>
+{
+  typedef const TensorChippingOp<DimId, XprType>& type;
+};
+
+template<DenseIndex DimId, typename XprType>
+struct nested<TensorChippingOp<DimId, XprType>, 1, typename eval<TensorChippingOp<DimId, XprType> >::type>
+{
+  typedef TensorChippingOp<DimId, XprType> type;
+};
+
+template <DenseIndex DimId>
+struct DimensionId
+{
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE DimensionId(DenseIndex dim) {
+    eigen_assert(dim == DimId);
+  }
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE DenseIndex actualDim() const {
+    return DimId;
+  }
+};
+template <>
+struct DimensionId<Dynamic>
+{
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE DimensionId(DenseIndex dim) : actual_dim(dim) {
+    eigen_assert(dim >= 0);
+  }
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE DenseIndex actualDim() const {
+    return actual_dim;
+  }
+ private:
+  const DenseIndex actual_dim;
+};
+
+
+}  // end namespace internal
+
+
+
+template<DenseIndex DimId, typename XprType>
+class TensorChippingOp : public TensorBase<TensorChippingOp<DimId, XprType> >
+{
+  public:
+  typedef typename Eigen::internal::traits<TensorChippingOp>::Scalar Scalar;
+  typedef typename Eigen::NumTraits<Scalar>::Real RealScalar;
+  typedef typename XprType::CoeffReturnType CoeffReturnType;
+  typedef typename Eigen::internal::nested<TensorChippingOp>::type Nested;
+  typedef typename Eigen::internal::traits<TensorChippingOp>::StorageKind StorageKind;
+  typedef typename Eigen::internal::traits<TensorChippingOp>::Index Index;
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorChippingOp(const XprType& expr, const Index offset, const Index dim)
+      : m_xpr(expr), m_offset(offset), m_dim(dim) {
+  }
+
+  EIGEN_DEVICE_FUNC
+  const Index offset() const { return m_offset; }
+  EIGEN_DEVICE_FUNC
+  const Index dim() const { return m_dim.actualDim(); }
+
+  EIGEN_DEVICE_FUNC
+  const typename internal::remove_all<typename XprType::Nested>::type&
+  expression() const { return m_xpr; }
+
+  EIGEN_DEVICE_FUNC
+  EIGEN_STRONG_INLINE TensorChippingOp& operator = (const TensorChippingOp& other)
+  {
+    typedef TensorAssignOp<TensorChippingOp, const TensorChippingOp> Assign;
+    Assign assign(*this, other);
+    internal::TensorExecutor<const Assign, DefaultDevice>::run(assign, DefaultDevice());
+    return *this;
+  }
+
+  template<typename OtherDerived>
+  EIGEN_DEVICE_FUNC
+  EIGEN_STRONG_INLINE TensorChippingOp& operator = (const OtherDerived& other)
+  {
+    typedef TensorAssignOp<TensorChippingOp, const OtherDerived> Assign;
+    Assign assign(*this, other);
+    internal::TensorExecutor<const Assign, DefaultDevice>::run(assign, DefaultDevice());
+    return *this;
+  }
+
+  protected:
+    typename XprType::Nested m_xpr;
+    const Index m_offset;
+    const internal::DimensionId<DimId> m_dim;
+};
+
+
+// Eval as rvalue
+template<DenseIndex DimId, typename ArgType, typename Device>
+struct TensorEvaluator<const TensorChippingOp<DimId, ArgType>, Device>
+{
+  typedef TensorChippingOp<DimId, ArgType> XprType;
+  static const int NumInputDims = internal::array_size<typename TensorEvaluator<ArgType, Device>::Dimensions>::value;
+  static const int NumDims = NumInputDims-1;
+  typedef typename XprType::Index Index;
+  typedef DSizes<Index, NumDims> Dimensions;
+  typedef typename XprType::Scalar Scalar;
+  typedef typename XprType::CoeffReturnType CoeffReturnType;
+  typedef typename PacketType<CoeffReturnType, Device>::type PacketReturnType;
+  static const int PacketSize = internal::unpacket_traits<PacketReturnType>::size;
+
+
+  enum {
+    // Alignment can't be guaranteed at compile time since it depends on the
+    // slice offsets.
+    IsAligned = false,
+    PacketAccess = TensorEvaluator<ArgType, Device>::PacketAccess,
+    Layout = TensorEvaluator<ArgType, Device>::Layout,
+    CoordAccess = false,  // to be implemented
+    RawAccess = false
+  };
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorEvaluator(const XprType& op, const Device& device)
+      : m_impl(op.expression(), device), m_dim(op.dim()), m_device(device)
+  {
+    EIGEN_STATIC_ASSERT((NumInputDims >= 1), YOU_MADE_A_PROGRAMMING_MISTAKE);
+    eigen_assert(NumInputDims > m_dim.actualDim());
+
+    const typename TensorEvaluator<ArgType, Device>::Dimensions& input_dims = m_impl.dimensions();
+    eigen_assert(op.offset() < input_dims[m_dim.actualDim()]);
+
+    int j = 0;
+    for (int i = 0; i < NumInputDims; ++i) {
+      if (i != m_dim.actualDim()) {
+        m_dimensions[j] = input_dims[i];
+        ++j;
+      }
+    }
+
+    m_stride = 1;
+    m_inputStride = 1;
+    if (static_cast<int>(Layout) == static_cast<int>(ColMajor)) {
+      for (int i = 0; i < m_dim.actualDim(); ++i) {
+        m_stride *= input_dims[i];
+        m_inputStride *= input_dims[i];
+      }
+    } else {
+      for (int i = NumInputDims-1; i > m_dim.actualDim(); --i) {
+        m_stride *= input_dims[i];
+        m_inputStride *= input_dims[i];
+      }
+    }
+    m_inputStride *= input_dims[m_dim.actualDim()];
+    m_inputOffset = m_stride * op.offset();
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Dimensions& dimensions() const { return m_dimensions; }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool evalSubExprsIfNeeded(Scalar* /*data*/) {
+    m_impl.evalSubExprsIfNeeded(NULL);
+    return true;
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void cleanup() {
+    m_impl.cleanup();
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType coeff(Index index) const
+  {
+    return m_impl.coeff(srcCoeff(index));
+  }
+
+  template<int LoadMode>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketReturnType packet(Index index) const
+  {
+    EIGEN_STATIC_ASSERT((PacketSize > 1), YOU_MADE_A_PROGRAMMING_MISTAKE)
+    eigen_assert(index+PacketSize-1 < dimensions().TotalSize());
+
+    if ((static_cast<int>(Layout) == static_cast<int>(ColMajor) && m_dim.actualDim() == 0) ||
+	(static_cast<int>(Layout) == static_cast<int>(RowMajor) && m_dim.actualDim() == NumInputDims-1)) {
+      // m_stride is equal to 1, so let's avoid the integer division.
+      eigen_assert(m_stride == 1);
+      Index inputIndex = index * m_inputStride + m_inputOffset;
+      EIGEN_ALIGN_MAX typename internal::remove_const<CoeffReturnType>::type values[PacketSize];
+      for (int i = 0; i < PacketSize; ++i) {
+        values[i] = m_impl.coeff(inputIndex);
+        inputIndex += m_inputStride;
+      }
+      PacketReturnType rslt = internal::pload<PacketReturnType>(values);
+      return rslt;
+    } else if ((static_cast<int>(Layout) == static_cast<int>(ColMajor) && m_dim.actualDim() == NumInputDims - 1) ||
+	       (static_cast<int>(Layout) == static_cast<int>(RowMajor) && m_dim.actualDim() == 0)) {
+      // m_stride is aways greater than index, so let's avoid the integer division.
+      eigen_assert(m_stride > index);
+      return m_impl.template packet<LoadMode>(index + m_inputOffset);
+    } else {
+      const Index idx = index / m_stride;
+      const Index rem = index - idx * m_stride;
+      if (rem + PacketSize <= m_stride) {
+        Index inputIndex = idx * m_inputStride + m_inputOffset + rem;
+        return m_impl.template packet<LoadMode>(inputIndex);
+      } else {
+        // Cross the stride boundary. Fallback to slow path.
+        EIGEN_ALIGN_MAX typename internal::remove_const<CoeffReturnType>::type values[PacketSize];
+        for (int i = 0; i < PacketSize; ++i) {
+          values[i] = coeff(index);
+          ++index;
+        }
+        PacketReturnType rslt = internal::pload<PacketReturnType>(values);
+        return rslt;
+      }
+    }
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorOpCost
+  costPerCoeff(bool vectorized) const {
+    double cost = 0;
+    if ((static_cast<int>(Layout) == static_cast<int>(ColMajor) &&
+         m_dim.actualDim() == 0) ||
+        (static_cast<int>(Layout) == static_cast<int>(RowMajor) &&
+         m_dim.actualDim() == NumInputDims - 1)) {
+      cost += TensorOpCost::MulCost<Index>() + TensorOpCost::AddCost<Index>();
+    } else if ((static_cast<int>(Layout) == static_cast<int>(ColMajor) &&
+                m_dim.actualDim() == NumInputDims - 1) ||
+               (static_cast<int>(Layout) == static_cast<int>(RowMajor) &&
+                m_dim.actualDim() == 0)) {
+      cost += TensorOpCost::AddCost<Index>();
+    } else {
+      cost += 3 * TensorOpCost::MulCost<Index>() + TensorOpCost::DivCost<Index>() +
+              3 * TensorOpCost::AddCost<Index>();
+    }
+
+    return m_impl.costPerCoeff(vectorized) +
+           TensorOpCost(0, 0, cost, vectorized, PacketSize);
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType* data() const {
+    CoeffReturnType* result = const_cast<CoeffReturnType*>(m_impl.data());
+    if (((static_cast<int>(Layout) == static_cast<int>(ColMajor) && m_dim.actualDim() == NumDims) ||
+         (static_cast<int>(Layout) == static_cast<int>(RowMajor) && m_dim.actualDim() == 0)) &&
+        result) {
+      return result + m_inputOffset;
+    } else {
+      return NULL;
+    }
+  }
+
+ protected:
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Index srcCoeff(Index index) const
+  {
+    Index inputIndex;
+    if ((static_cast<int>(Layout) == static_cast<int>(ColMajor) && m_dim.actualDim() == 0) ||
+	(static_cast<int>(Layout) == static_cast<int>(RowMajor) && m_dim.actualDim() == NumInputDims-1)) {
+      // m_stride is equal to 1, so let's avoid the integer division.
+      eigen_assert(m_stride == 1);
+      inputIndex = index * m_inputStride + m_inputOffset;
+    } else if ((static_cast<int>(Layout) == static_cast<int>(ColMajor) && m_dim.actualDim() == NumInputDims-1) ||
+	       (static_cast<int>(Layout) == static_cast<int>(RowMajor) && m_dim.actualDim() == 0)) {
+      // m_stride is aways greater than index, so let's avoid the integer division.
+      eigen_assert(m_stride > index);
+      inputIndex = index + m_inputOffset;
+    } else {
+      const Index idx = index / m_stride;
+      inputIndex = idx * m_inputStride + m_inputOffset;
+      index -= idx * m_stride;
+      inputIndex += index;
+    }
+    return inputIndex;
+  }
+
+  Dimensions m_dimensions;
+  Index m_stride;
+  Index m_inputOffset;
+  Index m_inputStride;
+  TensorEvaluator<ArgType, Device> m_impl;
+  const internal::DimensionId<DimId> m_dim;
+  const Device& m_device;
+};
+
+
+// Eval as lvalue
+template<DenseIndex DimId, typename ArgType, typename Device>
+struct TensorEvaluator<TensorChippingOp<DimId, ArgType>, Device>
+  : public TensorEvaluator<const TensorChippingOp<DimId, ArgType>, Device>
+{
+  typedef TensorEvaluator<const TensorChippingOp<DimId, ArgType>, Device> Base;
+  typedef TensorChippingOp<DimId, ArgType> XprType;
+  static const int NumInputDims = internal::array_size<typename TensorEvaluator<ArgType, Device>::Dimensions>::value;
+  static const int NumDims = NumInputDims-1;
+  typedef typename XprType::Index Index;
+  typedef DSizes<Index, NumDims> Dimensions;
+  typedef typename XprType::Scalar Scalar;
+  typedef typename XprType::CoeffReturnType CoeffReturnType;
+  typedef typename PacketType<CoeffReturnType, Device>::type PacketReturnType;
+  static const int PacketSize = internal::unpacket_traits<PacketReturnType>::size;
+
+  enum {
+    IsAligned = false,
+    PacketAccess = TensorEvaluator<ArgType, Device>::PacketAccess,
+    RawAccess = false
+  };
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorEvaluator(const XprType& op, const Device& device)
+    : Base(op, device)
+    { }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType& coeffRef(Index index)
+  {
+    return this->m_impl.coeffRef(this->srcCoeff(index));
+  }
+
+  template <int StoreMode> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  void writePacket(Index index, const PacketReturnType& x)
+  {
+    EIGEN_STATIC_ASSERT((PacketSize > 1), YOU_MADE_A_PROGRAMMING_MISTAKE)
+
+    if ((static_cast<int>(this->Layout) == static_cast<int>(ColMajor) && this->m_dim.actualDim() == 0) ||
+	(static_cast<int>(this->Layout) == static_cast<int>(RowMajor) && this->m_dim.actualDim() == NumInputDims-1)) {
+      // m_stride is equal to 1, so let's avoid the integer division.
+      eigen_assert(this->m_stride == 1);
+      EIGEN_ALIGN_MAX typename internal::remove_const<CoeffReturnType>::type values[PacketSize];
+      internal::pstore<CoeffReturnType, PacketReturnType>(values, x);
+      Index inputIndex = index * this->m_inputStride + this->m_inputOffset;
+      for (int i = 0; i < PacketSize; ++i) {
+        this->m_impl.coeffRef(inputIndex) = values[i];
+        inputIndex += this->m_inputStride;
+      }
+    } else if ((static_cast<int>(this->Layout) == static_cast<int>(ColMajor) && this->m_dim.actualDim() == NumInputDims-1) ||
+	       (static_cast<int>(this->Layout) == static_cast<int>(RowMajor) && this->m_dim.actualDim() == 0)) {
+      // m_stride is aways greater than index, so let's avoid the integer division.
+      eigen_assert(this->m_stride > index);
+      this->m_impl.template writePacket<StoreMode>(index + this->m_inputOffset, x);
+    } else {
+      const Index idx = index / this->m_stride;
+      const Index rem = index - idx * this->m_stride;
+      if (rem + PacketSize <= this->m_stride) {
+        const Index inputIndex = idx * this->m_inputStride + this->m_inputOffset + rem;
+        this->m_impl.template writePacket<StoreMode>(inputIndex, x);
+      } else {
+        // Cross stride boundary. Fallback to slow path.
+        EIGEN_ALIGN_MAX typename internal::remove_const<CoeffReturnType>::type values[PacketSize];
+        internal::pstore<CoeffReturnType, PacketReturnType>(values, x);
+        for (int i = 0; i < PacketSize; ++i) {
+          this->coeffRef(index) = values[i];
+          ++index;
+        }
+      }
+    }
+  }
+};
+
+
+} // end namespace Eigen
+
+#endif // EIGEN_CXX11_TENSOR_TENSOR_CHIPPING_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorImagePatch.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorImagePatch.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorImagePatch.h	(revision 3762)
@@ -0,0 +1,509 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2014 Benoit Steiner <benoit.steiner.goog@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CXX11_TENSOR_TENSOR_IMAGE_PATCH_H
+#define EIGEN_CXX11_TENSOR_TENSOR_IMAGE_PATCH_H
+
+namespace Eigen {
+
+/** \class TensorImagePatch
+  * \ingroup CXX11_Tensor_Module
+  *
+  * \brief Patch extraction specialized for image processing.
+  * This assumes that the input has a least 3 dimensions ordered as follow:
+  *  1st dimension: channels (of size d)
+  *  2nd dimension: rows (of size r)
+  *  3rd dimension: columns (of size c)
+  *  There can be additional dimensions such as time (for video) or batch (for
+  * bulk processing after the first 3.
+  * Calling the image patch code with patch_rows and patch_cols is equivalent
+  * to calling the regular patch extraction code with parameters d, patch_rows,
+  * patch_cols, and 1 for all the additional dimensions.
+  */
+namespace internal {
+template<DenseIndex Rows, DenseIndex Cols, typename XprType>
+struct traits<TensorImagePatchOp<Rows, Cols, XprType> > : public traits<XprType>
+{
+  typedef typename internal::remove_const<typename XprType::Scalar>::type Scalar;
+  typedef traits<XprType> XprTraits;
+  typedef typename XprTraits::StorageKind StorageKind;
+  typedef typename XprTraits::Index Index;
+  typedef typename XprType::Nested Nested;
+  typedef typename remove_reference<Nested>::type _Nested;
+  static const int NumDimensions = XprTraits::NumDimensions + 1;
+  static const int Layout = XprTraits::Layout;
+};
+
+template<DenseIndex Rows, DenseIndex Cols, typename XprType>
+struct eval<TensorImagePatchOp<Rows, Cols, XprType>, Eigen::Dense>
+{
+  typedef const TensorImagePatchOp<Rows, Cols, XprType>& type;
+};
+
+template<DenseIndex Rows, DenseIndex Cols, typename XprType>
+struct nested<TensorImagePatchOp<Rows, Cols, XprType>, 1, typename eval<TensorImagePatchOp<Rows, Cols, XprType> >::type>
+{
+  typedef TensorImagePatchOp<Rows, Cols, XprType> type;
+};
+
+}  // end namespace internal
+
+template<DenseIndex Rows, DenseIndex Cols, typename XprType>
+class TensorImagePatchOp : public TensorBase<TensorImagePatchOp<Rows, Cols, XprType>, ReadOnlyAccessors>
+{
+  public:
+  typedef typename Eigen::internal::traits<TensorImagePatchOp>::Scalar Scalar;
+  typedef typename Eigen::NumTraits<Scalar>::Real RealScalar;
+  typedef typename XprType::CoeffReturnType CoeffReturnType;
+  typedef typename Eigen::internal::nested<TensorImagePatchOp>::type Nested;
+  typedef typename Eigen::internal::traits<TensorImagePatchOp>::StorageKind StorageKind;
+  typedef typename Eigen::internal::traits<TensorImagePatchOp>::Index Index;
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorImagePatchOp(const XprType& expr, DenseIndex patch_rows, DenseIndex patch_cols,
+                                                           DenseIndex row_strides, DenseIndex col_strides,
+                                                           DenseIndex in_row_strides, DenseIndex in_col_strides,
+                                                           DenseIndex row_inflate_strides, DenseIndex col_inflate_strides,
+                                                           PaddingType padding_type, Scalar padding_value)
+      : m_xpr(expr), m_patch_rows(patch_rows), m_patch_cols(patch_cols),
+        m_row_strides(row_strides), m_col_strides(col_strides),
+        m_in_row_strides(in_row_strides), m_in_col_strides(in_col_strides),
+        m_row_inflate_strides(row_inflate_strides), m_col_inflate_strides(col_inflate_strides),
+        m_padding_explicit(false), m_padding_top(0), m_padding_bottom(0), m_padding_left(0), m_padding_right(0),
+        m_padding_type(padding_type), m_padding_value(padding_value) {}
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorImagePatchOp(const XprType& expr, DenseIndex patch_rows, DenseIndex patch_cols,
+                                                           DenseIndex row_strides, DenseIndex col_strides,
+                                                           DenseIndex in_row_strides, DenseIndex in_col_strides,
+                                                           DenseIndex row_inflate_strides, DenseIndex col_inflate_strides,
+                                                           DenseIndex padding_top, DenseIndex padding_bottom,
+                                                           DenseIndex padding_left, DenseIndex padding_right,
+                                                           Scalar padding_value)
+      : m_xpr(expr), m_patch_rows(patch_rows), m_patch_cols(patch_cols),
+        m_row_strides(row_strides), m_col_strides(col_strides),
+        m_in_row_strides(in_row_strides), m_in_col_strides(in_col_strides),
+        m_row_inflate_strides(row_inflate_strides), m_col_inflate_strides(col_inflate_strides),
+        m_padding_explicit(true), m_padding_top(padding_top), m_padding_bottom(padding_bottom),
+        m_padding_left(padding_left), m_padding_right(padding_right),
+        m_padding_type(PADDING_VALID), m_padding_value(padding_value) {}
+
+    EIGEN_DEVICE_FUNC
+    DenseIndex patch_rows() const { return m_patch_rows; }
+    EIGEN_DEVICE_FUNC
+    DenseIndex patch_cols() const { return m_patch_cols; }
+    EIGEN_DEVICE_FUNC
+    DenseIndex row_strides() const { return m_row_strides; }
+    EIGEN_DEVICE_FUNC
+    DenseIndex col_strides() const { return m_col_strides; }
+    EIGEN_DEVICE_FUNC
+    DenseIndex in_row_strides() const { return m_in_row_strides; }
+    EIGEN_DEVICE_FUNC
+    DenseIndex in_col_strides() const { return m_in_col_strides; }
+    EIGEN_DEVICE_FUNC
+    DenseIndex row_inflate_strides() const { return m_row_inflate_strides; }
+    EIGEN_DEVICE_FUNC
+    DenseIndex col_inflate_strides() const { return m_col_inflate_strides; }
+    EIGEN_DEVICE_FUNC
+    bool padding_explicit() const { return m_padding_explicit; }
+    EIGEN_DEVICE_FUNC
+    DenseIndex padding_top() const { return m_padding_top; }
+    EIGEN_DEVICE_FUNC
+    DenseIndex padding_bottom() const { return m_padding_bottom; }
+    EIGEN_DEVICE_FUNC
+    DenseIndex padding_left() const { return m_padding_left; }
+    EIGEN_DEVICE_FUNC
+    DenseIndex padding_right() const { return m_padding_right; }
+    EIGEN_DEVICE_FUNC
+    PaddingType padding_type() const { return m_padding_type; }
+    EIGEN_DEVICE_FUNC
+    Scalar padding_value() const { return m_padding_value; }
+
+    EIGEN_DEVICE_FUNC
+    const typename internal::remove_all<typename XprType::Nested>::type&
+    expression() const { return m_xpr; }
+
+  protected:
+    typename XprType::Nested m_xpr;
+    const DenseIndex m_patch_rows;
+    const DenseIndex m_patch_cols;
+    const DenseIndex m_row_strides;
+    const DenseIndex m_col_strides;
+    const DenseIndex m_in_row_strides;
+    const DenseIndex m_in_col_strides;
+    const DenseIndex m_row_inflate_strides;
+    const DenseIndex m_col_inflate_strides;
+    const bool m_padding_explicit;
+    const DenseIndex m_padding_top;
+    const DenseIndex m_padding_bottom;
+    const DenseIndex m_padding_left;
+    const DenseIndex m_padding_right;
+    const PaddingType m_padding_type;
+    const Scalar m_padding_value;
+};
+
+// Eval as rvalue
+template<DenseIndex Rows, DenseIndex Cols, typename ArgType, typename Device>
+struct TensorEvaluator<const TensorImagePatchOp<Rows, Cols, ArgType>, Device>
+{
+  typedef TensorImagePatchOp<Rows, Cols, ArgType> XprType;
+  typedef typename XprType::Index Index;
+  static const int NumInputDims = internal::array_size<typename TensorEvaluator<ArgType, Device>::Dimensions>::value;
+  static const int NumDims = NumInputDims + 1;
+  typedef DSizes<Index, NumDims> Dimensions;
+  typedef typename internal::remove_const<typename XprType::Scalar>::type Scalar;
+  typedef TensorEvaluator<const TensorImagePatchOp<Rows, Cols, ArgType>,
+                          Device> Self;
+  typedef TensorEvaluator<ArgType, Device> Impl;
+  typedef typename XprType::CoeffReturnType CoeffReturnType;
+  typedef typename PacketType<CoeffReturnType, Device>::type PacketReturnType;
+  static const int PacketSize = internal::unpacket_traits<PacketReturnType>::size;
+
+  enum {
+    IsAligned = false,
+    PacketAccess = TensorEvaluator<ArgType, Device>::PacketAccess,
+    Layout = TensorEvaluator<ArgType, Device>::Layout,
+    CoordAccess = false,
+    RawAccess = false
+  };
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorEvaluator(const XprType& op, const Device& device)
+      : m_impl(op.expression(), device)
+  {
+    EIGEN_STATIC_ASSERT((NumDims >= 4), YOU_MADE_A_PROGRAMMING_MISTAKE);
+
+    m_paddingValue = op.padding_value();
+
+    const typename TensorEvaluator<ArgType, Device>::Dimensions& input_dims = m_impl.dimensions();
+
+    // Caches a few variables.
+    if (static_cast<int>(Layout) == static_cast<int>(ColMajor)) {
+      m_inputDepth = input_dims[0];
+      m_inputRows = input_dims[1];
+      m_inputCols = input_dims[2];
+    } else {
+      m_inputDepth = input_dims[NumInputDims-1];
+      m_inputRows = input_dims[NumInputDims-2];
+      m_inputCols = input_dims[NumInputDims-3];
+    }
+
+    m_row_strides = op.row_strides();
+    m_col_strides = op.col_strides();
+
+    // Input strides and effective input/patch size
+    m_in_row_strides = op.in_row_strides();
+    m_in_col_strides = op.in_col_strides();
+    m_row_inflate_strides = op.row_inflate_strides();
+    m_col_inflate_strides = op.col_inflate_strides();
+    // The "effective" input rows and input cols are the input rows and cols
+    // after inflating them with zeros.
+    // For examples, a 2x3 matrix with row_inflate_strides and
+    // col_inflate_strides of 2 comes from:
+    //   A B C
+    //   D E F
+    //
+    // to a matrix is 3 x 5:
+    //
+    //   A . B . C
+    //   . . . . .
+    //   D . E . F
+
+    m_input_rows_eff = (m_inputRows - 1) * m_row_inflate_strides + 1;
+    m_input_cols_eff = (m_inputCols - 1) * m_col_inflate_strides + 1;
+    m_patch_rows_eff = op.patch_rows() + (op.patch_rows() - 1) * (m_in_row_strides - 1);
+    m_patch_cols_eff = op.patch_cols() + (op.patch_cols() - 1) * (m_in_col_strides - 1);
+
+    if (op.padding_explicit()) {
+      m_outputRows = numext::ceil((m_input_rows_eff + op.padding_top() + op.padding_bottom() - m_patch_rows_eff + 1.f) / static_cast<float>(m_row_strides));
+      m_outputCols = numext::ceil((m_input_cols_eff + op.padding_left() + op.padding_right() - m_patch_cols_eff + 1.f) / static_cast<float>(m_col_strides));
+      m_rowPaddingTop = op.padding_top();
+      m_colPaddingLeft = op.padding_left();
+    } else {
+      // Computing padding from the type
+      switch (op.padding_type()) {
+        case PADDING_VALID:
+          m_outputRows = numext::ceil((m_input_rows_eff - m_patch_rows_eff + 1.f) / static_cast<float>(m_row_strides));
+          m_outputCols = numext::ceil((m_input_cols_eff - m_patch_cols_eff + 1.f) / static_cast<float>(m_col_strides));
+          // Calculate the padding
+          m_rowPaddingTop = numext::maxi<Index>(0, ((m_outputRows - 1) * m_row_strides + m_patch_rows_eff - m_input_rows_eff) / 2);
+          m_colPaddingLeft = numext::maxi<Index>(0, ((m_outputCols - 1) * m_col_strides + m_patch_cols_eff - m_input_cols_eff) / 2);
+          break;
+        case PADDING_SAME:
+          m_outputRows = numext::ceil(m_input_rows_eff / static_cast<float>(m_row_strides));
+          m_outputCols = numext::ceil(m_input_cols_eff / static_cast<float>(m_col_strides));
+          // Calculate the padding
+          m_rowPaddingTop = ((m_outputRows - 1) * m_row_strides + m_patch_rows_eff - m_input_rows_eff) / 2;
+          m_colPaddingLeft = ((m_outputCols - 1) * m_col_strides + m_patch_cols_eff - m_input_cols_eff) / 2;
+          break;
+        default:
+          eigen_assert(false && "unexpected padding");
+      }
+    }
+    eigen_assert(m_outputRows > 0);
+    eigen_assert(m_outputCols > 0);
+
+    // Dimensions for result of extraction.
+    if (static_cast<int>(Layout) == static_cast<int>(ColMajor)) {
+      // ColMajor
+      // 0: depth
+      // 1: patch_rows
+      // 2: patch_cols
+      // 3: number of patches
+      // 4 and beyond: anything else (such as batch).
+      m_dimensions[0] = input_dims[0];
+      m_dimensions[1] = op.patch_rows();
+      m_dimensions[2] = op.patch_cols();
+      m_dimensions[3] = m_outputRows * m_outputCols;
+      for (int i = 4; i < NumDims; ++i) {
+        m_dimensions[i] = input_dims[i-1];
+      }
+    } else {
+      // RowMajor
+      // NumDims-1: depth
+      // NumDims-2: patch_rows
+      // NumDims-3: patch_cols
+      // NumDims-4: number of patches
+      // NumDims-5 and beyond: anything else (such as batch).
+      m_dimensions[NumDims-1] = input_dims[NumInputDims-1];
+      m_dimensions[NumDims-2] = op.patch_rows();
+      m_dimensions[NumDims-3] = op.patch_cols();
+      m_dimensions[NumDims-4] = m_outputRows * m_outputCols;
+      for (int i = NumDims-5; i >= 0; --i) {
+        m_dimensions[i] = input_dims[i];
+      }
+    }
+
+    // Strides for moving the patch in various dimensions.
+    if (static_cast<int>(Layout) == static_cast<int>(ColMajor)) {
+      m_colStride = m_dimensions[1];
+      m_patchStride = m_colStride * m_dimensions[2] * m_dimensions[0];
+      m_otherStride = m_patchStride * m_dimensions[3];
+    } else {
+      m_colStride = m_dimensions[NumDims-2];
+      m_patchStride = m_colStride * m_dimensions[NumDims-3] * m_dimensions[NumDims-1];
+      m_otherStride = m_patchStride * m_dimensions[NumDims-4];
+    }
+
+    // Strides for navigating through the input tensor.
+    m_rowInputStride = m_inputDepth;
+    m_colInputStride = m_inputDepth * m_inputRows;
+    m_patchInputStride = m_inputDepth * m_inputRows * m_inputCols;
+
+    // Fast representations of different variables.
+    m_fastOtherStride = internal::TensorIntDivisor<Index>(m_otherStride);
+    m_fastPatchStride = internal::TensorIntDivisor<Index>(m_patchStride);
+    m_fastColStride = internal::TensorIntDivisor<Index>(m_colStride);
+    m_fastInflateRowStride = internal::TensorIntDivisor<Index>(m_row_inflate_strides);
+    m_fastInflateColStride = internal::TensorIntDivisor<Index>(m_col_inflate_strides);
+    m_fastInputColsEff = internal::TensorIntDivisor<Index>(m_input_cols_eff);
+
+    // Number of patches in the width dimension.
+    m_fastOutputRows = internal::TensorIntDivisor<Index>(m_outputRows);
+    if (static_cast<int>(Layout) == static_cast<int>(ColMajor)) {
+      m_fastOutputDepth = internal::TensorIntDivisor<Index>(m_dimensions[0]);
+    } else {
+      m_fastOutputDepth = internal::TensorIntDivisor<Index>(m_dimensions[NumDims-1]);
+    }
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Dimensions& dimensions() const { return m_dimensions; }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool evalSubExprsIfNeeded(Scalar* /*data*/) {
+    m_impl.evalSubExprsIfNeeded(NULL);
+    return true;
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void cleanup() {
+    m_impl.cleanup();
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType coeff(Index index) const
+  {
+    // Patch index corresponding to the passed in index.
+    const Index patchIndex = index / m_fastPatchStride;
+    // Find the offset of the element wrt the location of the first element.
+    const Index patchOffset = (index - patchIndex * m_patchStride) / m_fastOutputDepth;
+
+    // Other ways to index this element.
+    const Index otherIndex = (NumDims == 4) ? 0 : index / m_fastOtherStride;
+    const Index patch2DIndex = (NumDims == 4) ? patchIndex : (index - otherIndex * m_otherStride) / m_fastPatchStride;
+
+    // Calculate col index in the input original tensor.
+    const Index colIndex = patch2DIndex / m_fastOutputRows;
+    const Index colOffset = patchOffset / m_fastColStride;
+    const Index inputCol = colIndex * m_col_strides + colOffset * m_in_col_strides - m_colPaddingLeft;
+    const Index origInputCol = (m_col_inflate_strides == 1) ? inputCol : ((inputCol >= 0) ? (inputCol / m_fastInflateColStride) : 0);
+    if (inputCol < 0 || inputCol >= m_input_cols_eff ||
+        ((m_col_inflate_strides != 1) && (inputCol != origInputCol * m_col_inflate_strides))) {
+      return Scalar(m_paddingValue);
+    }
+
+    // Calculate row index in the original input tensor.
+    const Index rowIndex = patch2DIndex - colIndex * m_outputRows;
+    const Index rowOffset = patchOffset - colOffset * m_colStride;
+    const Index inputRow = rowIndex * m_row_strides + rowOffset * m_in_row_strides - m_rowPaddingTop;
+    const Index origInputRow = (m_row_inflate_strides == 1) ? inputRow : ((inputRow >= 0) ? (inputRow / m_fastInflateRowStride) : 0);
+    if (inputRow < 0 || inputRow >= m_input_rows_eff ||
+        ((m_row_inflate_strides != 1) && (inputRow != origInputRow * m_row_inflate_strides))) {
+      return Scalar(m_paddingValue);
+    }
+
+    const int depth_index = static_cast<int>(Layout) == static_cast<int>(ColMajor) ? 0 : NumDims - 1;
+    const Index depth = index - (index / m_fastOutputDepth) * m_dimensions[depth_index];
+
+    const Index inputIndex = depth + origInputRow * m_rowInputStride + origInputCol * m_colInputStride + otherIndex * m_patchInputStride;
+    return m_impl.coeff(inputIndex);
+  }
+
+  template<int LoadMode>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketReturnType packet(Index index) const
+  {
+    EIGEN_STATIC_ASSERT((PacketSize > 1), YOU_MADE_A_PROGRAMMING_MISTAKE)
+    eigen_assert(index+PacketSize-1 < dimensions().TotalSize());
+
+    if (m_in_row_strides != 1 || m_in_col_strides != 1 || m_row_inflate_strides != 1 || m_col_inflate_strides != 1) {
+      return packetWithPossibleZero(index);
+    }
+
+    const Index indices[2] = {index, index + PacketSize - 1};
+    const Index patchIndex = indices[0] / m_fastPatchStride;
+    if (patchIndex != indices[1] / m_fastPatchStride) {
+      return packetWithPossibleZero(index);
+    }
+    const Index otherIndex = (NumDims == 4) ? 0 : indices[0] / m_fastOtherStride;
+    eigen_assert(otherIndex == indices[1] / m_fastOtherStride);
+
+    // Find the offset of the element wrt the location of the first element.
+    const Index patchOffsets[2] = {(indices[0] - patchIndex * m_patchStride) / m_fastOutputDepth,
+                                   (indices[1] - patchIndex * m_patchStride) / m_fastOutputDepth};
+
+    const Index patch2DIndex = (NumDims == 4) ? patchIndex : (indices[0] - otherIndex * m_otherStride) / m_fastPatchStride;
+    eigen_assert(patch2DIndex == (indices[1] - otherIndex * m_otherStride) / m_fastPatchStride);
+
+    const Index colIndex = patch2DIndex / m_fastOutputRows;
+    const Index colOffsets[2] = {patchOffsets[0] / m_fastColStride, patchOffsets[1] / m_fastColStride};
+
+    // Calculate col indices in the original input tensor.
+    const Index inputCols[2] = {colIndex * m_col_strides + colOffsets[0] -
+      m_colPaddingLeft, colIndex * m_col_strides + colOffsets[1] - m_colPaddingLeft};
+    if (inputCols[1] < 0 || inputCols[0] >= m_inputCols) {
+      return internal::pset1<PacketReturnType>(Scalar(m_paddingValue));
+    }
+
+    if (inputCols[0] == inputCols[1]) {
+      const Index rowIndex = patch2DIndex - colIndex * m_outputRows;
+      const Index rowOffsets[2] = {patchOffsets[0] - colOffsets[0]*m_colStride, patchOffsets[1] - colOffsets[1]*m_colStride};
+      eigen_assert(rowOffsets[0] <= rowOffsets[1]);
+      // Calculate col indices in the original input tensor.
+      const Index inputRows[2] = {rowIndex * m_row_strides + rowOffsets[0] -
+        m_rowPaddingTop, rowIndex * m_row_strides + rowOffsets[1] - m_rowPaddingTop};
+
+      if (inputRows[1] < 0 || inputRows[0] >= m_inputRows) {
+        return internal::pset1<PacketReturnType>(Scalar(m_paddingValue));
+      }
+
+      if (inputRows[0] >= 0 && inputRows[1] < m_inputRows) {
+        // no padding
+        const int depth_index = static_cast<int>(Layout) == static_cast<int>(ColMajor) ? 0 : NumDims - 1;
+        const Index depth = index - (index / m_fastOutputDepth) * m_dimensions[depth_index];
+        const Index inputIndex = depth + inputRows[0] * m_rowInputStride + inputCols[0] * m_colInputStride + otherIndex * m_patchInputStride;
+        return m_impl.template packet<Unaligned>(inputIndex);
+      }
+    }
+
+    return packetWithPossibleZero(index);
+  }
+
+  EIGEN_DEVICE_FUNC Scalar* data() const { return NULL; }
+
+  const TensorEvaluator<ArgType, Device>& impl() const { return m_impl; }
+
+  Index rowPaddingTop() const { return m_rowPaddingTop; }
+  Index colPaddingLeft() const { return m_colPaddingLeft; }
+  Index outputRows() const { return m_outputRows; }
+  Index outputCols() const { return m_outputCols; }
+  Index userRowStride() const { return m_row_strides; }
+  Index userColStride() const { return m_col_strides; }
+  Index userInRowStride() const { return m_in_row_strides; }
+  Index userInColStride() const { return m_in_col_strides; }
+  Index rowInflateStride() const { return m_row_inflate_strides; }
+  Index colInflateStride() const { return m_col_inflate_strides; }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorOpCost
+  costPerCoeff(bool vectorized) const {
+    // We conservatively estimate the cost for the code path where the computed
+    // index is inside the original image and
+    // TensorEvaluator<ArgType, Device>::CoordAccess is false.
+    const double compute_cost = 3 * TensorOpCost::DivCost<Index>() +
+                                6 * TensorOpCost::MulCost<Index>() +
+                                8 * TensorOpCost::MulCost<Index>();
+    return m_impl.costPerCoeff(vectorized) +
+           TensorOpCost(0, 0, compute_cost, vectorized, PacketSize);
+  }
+
+ protected:
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketReturnType packetWithPossibleZero(Index index) const
+  {
+    EIGEN_ALIGN_MAX typename internal::remove_const<CoeffReturnType>::type values[PacketSize];
+    for (int i = 0; i < PacketSize; ++i) {
+      values[i] = coeff(index+i);
+    }
+    PacketReturnType rslt = internal::pload<PacketReturnType>(values);
+    return rslt;
+  }
+
+  Dimensions m_dimensions;
+
+  Index m_otherStride;
+  Index m_patchStride;
+  Index m_colStride;
+  Index m_row_strides;
+  Index m_col_strides;
+
+  Index m_in_row_strides;
+  Index m_in_col_strides;
+  Index m_row_inflate_strides;
+  Index m_col_inflate_strides;
+
+  Index m_input_rows_eff;
+  Index m_input_cols_eff;
+  Index m_patch_rows_eff;
+  Index m_patch_cols_eff;
+
+  internal::TensorIntDivisor<Index> m_fastOtherStride;
+  internal::TensorIntDivisor<Index> m_fastPatchStride;
+  internal::TensorIntDivisor<Index> m_fastColStride;
+  internal::TensorIntDivisor<Index> m_fastInflateRowStride;
+  internal::TensorIntDivisor<Index> m_fastInflateColStride;
+  internal::TensorIntDivisor<Index> m_fastInputColsEff;
+
+  Index m_rowInputStride;
+  Index m_colInputStride;
+  Index m_patchInputStride;
+
+  Index m_inputDepth;
+  Index m_inputRows;
+  Index m_inputCols;
+
+  Index m_outputRows;
+  Index m_outputCols;
+
+  Index m_rowPaddingTop;
+  Index m_colPaddingLeft;
+
+  internal::TensorIntDivisor<Index> m_fastOutputRows;
+  internal::TensorIntDivisor<Index> m_fastOutputDepth;
+
+  Scalar m_paddingValue;
+
+  TensorEvaluator<ArgType, Device> m_impl;
+};
+
+
+} // end namespace Eigen
+
+#endif // EIGEN_CXX11_TENSOR_TENSOR_IMAGE_PATCH_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorPadding.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorPadding.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorPadding.h	(revision 3762)
@@ -0,0 +1,397 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2014 Benoit Steiner <benoit.steiner.goog@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CXX11_TENSOR_TENSOR_PADDING_H
+#define EIGEN_CXX11_TENSOR_TENSOR_PADDING_H
+
+namespace Eigen {
+
+/** \class TensorPadding
+  * \ingroup CXX11_Tensor_Module
+  *
+  * \brief Tensor padding class.
+  * At the moment only padding with a constant value is supported.
+  *
+  */
+namespace internal {
+template<typename PaddingDimensions, typename XprType>
+struct traits<TensorPaddingOp<PaddingDimensions, XprType> > : public traits<XprType>
+{
+  typedef typename XprType::Scalar Scalar;
+  typedef traits<XprType> XprTraits;
+  typedef typename XprTraits::StorageKind StorageKind;
+  typedef typename XprTraits::Index Index;
+  typedef typename XprType::Nested Nested;
+  typedef typename remove_reference<Nested>::type _Nested;
+  static const int NumDimensions = XprTraits::NumDimensions;
+  static const int Layout = XprTraits::Layout;
+};
+
+template<typename PaddingDimensions, typename XprType>
+struct eval<TensorPaddingOp<PaddingDimensions, XprType>, Eigen::Dense>
+{
+  typedef const TensorPaddingOp<PaddingDimensions, XprType>& type;
+};
+
+template<typename PaddingDimensions, typename XprType>
+struct nested<TensorPaddingOp<PaddingDimensions, XprType>, 1, typename eval<TensorPaddingOp<PaddingDimensions, XprType> >::type>
+{
+  typedef TensorPaddingOp<PaddingDimensions, XprType> type;
+};
+
+}  // end namespace internal
+
+
+
+template<typename PaddingDimensions, typename XprType>
+class TensorPaddingOp : public TensorBase<TensorPaddingOp<PaddingDimensions, XprType>, ReadOnlyAccessors>
+{
+  public:
+  typedef typename Eigen::internal::traits<TensorPaddingOp>::Scalar Scalar;
+  typedef typename Eigen::NumTraits<Scalar>::Real RealScalar;
+  typedef typename XprType::CoeffReturnType CoeffReturnType;
+  typedef typename Eigen::internal::nested<TensorPaddingOp>::type Nested;
+  typedef typename Eigen::internal::traits<TensorPaddingOp>::StorageKind StorageKind;
+  typedef typename Eigen::internal::traits<TensorPaddingOp>::Index Index;
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorPaddingOp(const XprType& expr, const PaddingDimensions& padding_dims, const Scalar padding_value)
+      : m_xpr(expr), m_padding_dims(padding_dims), m_padding_value(padding_value) {}
+
+    EIGEN_DEVICE_FUNC
+    const PaddingDimensions& padding() const { return m_padding_dims; }
+    EIGEN_DEVICE_FUNC
+    Scalar padding_value() const { return m_padding_value; }
+
+    EIGEN_DEVICE_FUNC
+    const typename internal::remove_all<typename XprType::Nested>::type&
+    expression() const { return m_xpr; }
+
+  protected:
+    typename XprType::Nested m_xpr;
+    const PaddingDimensions m_padding_dims;
+    const Scalar m_padding_value;
+};
+
+
+// Eval as rvalue
+template<typename PaddingDimensions, typename ArgType, typename Device>
+struct TensorEvaluator<const TensorPaddingOp<PaddingDimensions, ArgType>, Device>
+{
+  typedef TensorPaddingOp<PaddingDimensions, ArgType> XprType;
+  typedef typename XprType::Index Index;
+  static const int NumDims = internal::array_size<PaddingDimensions>::value;
+  typedef DSizes<Index, NumDims> Dimensions;
+  typedef typename XprType::Scalar Scalar;
+  typedef typename XprType::CoeffReturnType CoeffReturnType;
+  typedef typename PacketType<CoeffReturnType, Device>::type PacketReturnType;
+  static const int PacketSize = internal::unpacket_traits<PacketReturnType>::size;
+
+  enum {
+    IsAligned = true,
+    PacketAccess = TensorEvaluator<ArgType, Device>::PacketAccess,
+    Layout = TensorEvaluator<ArgType, Device>::Layout,
+    CoordAccess = true,
+    RawAccess = false
+  };
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorEvaluator(const XprType& op, const Device& device)
+      : m_impl(op.expression(), device), m_padding(op.padding()), m_paddingValue(op.padding_value())
+  {
+    // The padding op doesn't change the rank of the tensor. Directly padding a scalar would lead
+    // to a vector, which doesn't make sense. Instead one should reshape the scalar into a vector
+    // of 1 element first and then pad.
+    EIGEN_STATIC_ASSERT((NumDims > 0), YOU_MADE_A_PROGRAMMING_MISTAKE);
+
+    // Compute dimensions
+    m_dimensions = m_impl.dimensions();
+    for (int i = 0; i < NumDims; ++i) {
+      m_dimensions[i] += m_padding[i].first + m_padding[i].second;
+    }
+    const typename TensorEvaluator<ArgType, Device>::Dimensions& input_dims = m_impl.dimensions();
+    if (static_cast<int>(Layout) == static_cast<int>(ColMajor)) {
+      m_inputStrides[0] = 1;
+      m_outputStrides[0] = 1;
+      for (int i = 1; i < NumDims; ++i) {
+        m_inputStrides[i] = m_inputStrides[i-1] * input_dims[i-1];
+        m_outputStrides[i] = m_outputStrides[i-1] * m_dimensions[i-1];
+      }
+      m_outputStrides[NumDims] = m_outputStrides[NumDims-1] * m_dimensions[NumDims-1];
+    } else {
+      m_inputStrides[NumDims - 1] = 1;
+      m_outputStrides[NumDims] = 1;
+      for (int i = NumDims - 2; i >= 0; --i) {
+        m_inputStrides[i] = m_inputStrides[i+1] * input_dims[i+1];
+        m_outputStrides[i+1] = m_outputStrides[i+2] * m_dimensions[i+1];
+      }
+      m_outputStrides[0] = m_outputStrides[1] * m_dimensions[0];
+    }
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Dimensions& dimensions() const { return m_dimensions; }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool evalSubExprsIfNeeded(Scalar*) {
+    m_impl.evalSubExprsIfNeeded(NULL);
+    return true;
+  }
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void cleanup() {
+    m_impl.cleanup();
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType coeff(Index index) const
+  {
+    eigen_assert(index < dimensions().TotalSize());
+    Index inputIndex = 0;
+    if (static_cast<int>(Layout) == static_cast<int>(ColMajor)) {
+      for (int i = NumDims - 1; i > 0; --i) {
+        const Index idx = index / m_outputStrides[i];
+        if (isPaddingAtIndexForDim(idx, i)) {
+          return m_paddingValue;
+        }
+        inputIndex += (idx - m_padding[i].first) * m_inputStrides[i];
+        index -= idx * m_outputStrides[i];
+      }
+      if (isPaddingAtIndexForDim(index, 0)) {
+        return m_paddingValue;
+      }
+      inputIndex += (index - m_padding[0].first);
+    } else {
+      for (int i = 0; i < NumDims - 1; ++i) {
+        const Index idx = index / m_outputStrides[i+1];
+        if (isPaddingAtIndexForDim(idx, i)) {
+          return m_paddingValue;
+        }
+        inputIndex += (idx - m_padding[i].first) * m_inputStrides[i];
+        index -= idx * m_outputStrides[i+1];
+      }
+      if (isPaddingAtIndexForDim(index, NumDims-1)) {
+        return m_paddingValue;
+      }
+      inputIndex += (index - m_padding[NumDims-1].first);
+    }
+    return m_impl.coeff(inputIndex);
+  }
+
+  template<int LoadMode>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketReturnType packet(Index index) const
+  {
+    if (static_cast<int>(Layout) == static_cast<int>(ColMajor)) {
+      return packetColMajor(index);
+    }
+    return packetRowMajor(index);
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorOpCost costPerCoeff(bool vectorized) const {
+    TensorOpCost cost = m_impl.costPerCoeff(vectorized);
+    if (static_cast<int>(Layout) == static_cast<int>(ColMajor)) {
+      for (int i = 0; i < NumDims; ++i)
+        updateCostPerDimension(cost, i, i == 0);
+    } else {
+      for (int i = NumDims - 1; i >= 0; --i)
+        updateCostPerDimension(cost, i, i == NumDims - 1);
+    }
+    return cost;
+  }
+
+  EIGEN_DEVICE_FUNC Scalar* data() const { return NULL; }
+
+ private:
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE bool isPaddingAtIndexForDim(
+      Index index, int dim_index) const {
+#if defined(EIGEN_HAS_INDEX_LIST)
+    return (!internal::index_pair_first_statically_eq<PaddingDimensions>(dim_index, 0) &&
+            index < m_padding[dim_index].first) ||
+        (!internal::index_pair_second_statically_eq<PaddingDimensions>(dim_index, 0) &&
+         index >= m_dimensions[dim_index] - m_padding[dim_index].second);
+#else
+    return (index < m_padding[dim_index].first) ||
+           (index >= m_dimensions[dim_index] - m_padding[dim_index].second);
+#endif
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE bool isLeftPaddingCompileTimeZero(
+      int dim_index) const {
+#if defined(EIGEN_HAS_INDEX_LIST)
+    return internal::index_pair_first_statically_eq<PaddingDimensions>(dim_index, 0);
+#else
+    EIGEN_UNUSED_VARIABLE(dim_index);
+    return false;
+#endif
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE bool isRightPaddingCompileTimeZero(
+      int dim_index) const {
+#if defined(EIGEN_HAS_INDEX_LIST)
+    return internal::index_pair_second_statically_eq<PaddingDimensions>(dim_index, 0);
+#else
+    EIGEN_UNUSED_VARIABLE(dim_index);
+    return false;
+#endif
+  }
+
+
+  void updateCostPerDimension(TensorOpCost& cost, int i, bool first) const {
+    const double in = static_cast<double>(m_impl.dimensions()[i]);
+    const double out = in + m_padding[i].first + m_padding[i].second;
+    if (out == 0)
+      return;
+    const double reduction = in / out;
+    cost *= reduction;
+    if (first) {
+      cost += TensorOpCost(0, 0, 2 * TensorOpCost::AddCost<Index>() +
+                    reduction * (1 * TensorOpCost::AddCost<Index>()));
+    } else {
+      cost += TensorOpCost(0, 0, 2 * TensorOpCost::AddCost<Index>() +
+                                 2 * TensorOpCost::MulCost<Index>() +
+                    reduction * (2 * TensorOpCost::MulCost<Index>() +
+                                 1 * TensorOpCost::DivCost<Index>()));
+    }
+  }
+
+ protected:
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketReturnType packetColMajor(Index index) const
+  {
+    EIGEN_STATIC_ASSERT((PacketSize > 1), YOU_MADE_A_PROGRAMMING_MISTAKE)
+    eigen_assert(index+PacketSize-1 < dimensions().TotalSize());
+
+    const Index initialIndex = index;
+    Index inputIndex = 0;
+    for (int i = NumDims - 1; i > 0; --i) {
+      const Index first = index;
+      const Index last = index + PacketSize - 1;
+      const Index lastPaddedLeft = m_padding[i].first * m_outputStrides[i];
+      const Index firstPaddedRight = (m_dimensions[i] - m_padding[i].second) * m_outputStrides[i];
+      const Index lastPaddedRight = m_outputStrides[i+1];
+
+      if (!isLeftPaddingCompileTimeZero(i) && last < lastPaddedLeft) {
+        // all the coefficient are in the padding zone.
+        return internal::pset1<PacketReturnType>(m_paddingValue);
+      }
+      else if (!isRightPaddingCompileTimeZero(i) && first >= firstPaddedRight && last < lastPaddedRight) {
+        // all the coefficient are in the padding zone.
+        return internal::pset1<PacketReturnType>(m_paddingValue);
+      }
+      else if ((isLeftPaddingCompileTimeZero(i) && isRightPaddingCompileTimeZero(i)) || (first >= lastPaddedLeft && last < firstPaddedRight)) {
+        // all the coefficient are between the 2 padding zones.
+        const Index idx = index / m_outputStrides[i];
+        inputIndex += (idx - m_padding[i].first) * m_inputStrides[i];
+        index -= idx * m_outputStrides[i];
+      }
+      else {
+        // Every other case
+        return packetWithPossibleZero(initialIndex);
+      }
+    }
+
+    const Index last = index + PacketSize - 1;
+    const Index first = index;
+    const Index lastPaddedLeft = m_padding[0].first;
+    const Index firstPaddedRight = (m_dimensions[0] - m_padding[0].second);
+    const Index lastPaddedRight = m_outputStrides[1];
+
+    if (!isLeftPaddingCompileTimeZero(0) && last < lastPaddedLeft) {
+      // all the coefficient are in the padding zone.
+      return internal::pset1<PacketReturnType>(m_paddingValue);
+    }
+    else if (!isRightPaddingCompileTimeZero(0) && first >= firstPaddedRight && last < lastPaddedRight) {
+      // all the coefficient are in the padding zone.
+      return internal::pset1<PacketReturnType>(m_paddingValue);
+    }
+    else if ((isLeftPaddingCompileTimeZero(0) && isRightPaddingCompileTimeZero(0)) || (first >= lastPaddedLeft && last < firstPaddedRight)) {
+      // all the coefficient are between the 2 padding zones.
+      inputIndex += (index - m_padding[0].first);
+      return m_impl.template packet<Unaligned>(inputIndex);
+    }
+    // Every other case
+    return packetWithPossibleZero(initialIndex);
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketReturnType packetRowMajor(Index index) const
+  {
+    EIGEN_STATIC_ASSERT((PacketSize > 1), YOU_MADE_A_PROGRAMMING_MISTAKE)
+    eigen_assert(index+PacketSize-1 < dimensions().TotalSize());
+
+    const Index initialIndex = index;
+    Index inputIndex = 0;
+
+    for (int i = 0; i < NumDims - 1; ++i) {
+      const Index first = index;
+      const Index last = index + PacketSize - 1;
+      const Index lastPaddedLeft = m_padding[i].first * m_outputStrides[i+1];
+      const Index firstPaddedRight = (m_dimensions[i] - m_padding[i].second) * m_outputStrides[i+1];
+      const Index lastPaddedRight = m_outputStrides[i];
+
+      if (!isLeftPaddingCompileTimeZero(i) && last < lastPaddedLeft) {
+        // all the coefficient are in the padding zone.
+        return internal::pset1<PacketReturnType>(m_paddingValue);
+      }
+      else if (!isRightPaddingCompileTimeZero(i) && first >= firstPaddedRight && last < lastPaddedRight) {
+        // all the coefficient are in the padding zone.
+        return internal::pset1<PacketReturnType>(m_paddingValue);
+      }
+      else if ((isLeftPaddingCompileTimeZero(i) && isRightPaddingCompileTimeZero(i)) || (first >= lastPaddedLeft && last < firstPaddedRight)) {
+        // all the coefficient are between the 2 padding zones.
+        const Index idx = index / m_outputStrides[i+1];
+        inputIndex += (idx - m_padding[i].first) * m_inputStrides[i];
+        index -= idx * m_outputStrides[i+1];
+      }
+      else {
+        // Every other case
+        return packetWithPossibleZero(initialIndex);
+      }
+    }
+
+    const Index last = index + PacketSize - 1;
+    const Index first = index;
+    const Index lastPaddedLeft = m_padding[NumDims-1].first;
+    const Index firstPaddedRight = (m_dimensions[NumDims-1] - m_padding[NumDims-1].second);
+    const Index lastPaddedRight = m_outputStrides[NumDims-1];
+
+    if (!isLeftPaddingCompileTimeZero(NumDims-1) && last < lastPaddedLeft) {
+      // all the coefficient are in the padding zone.
+      return internal::pset1<PacketReturnType>(m_paddingValue);
+    }
+    else if (!isRightPaddingCompileTimeZero(NumDims-1) && first >= firstPaddedRight && last < lastPaddedRight) {
+      // all the coefficient are in the padding zone.
+      return internal::pset1<PacketReturnType>(m_paddingValue);
+    }
+    else if ((isLeftPaddingCompileTimeZero(NumDims-1) && isRightPaddingCompileTimeZero(NumDims-1)) || (first >= lastPaddedLeft && last < firstPaddedRight)) {
+      // all the coefficient are between the 2 padding zones.
+      inputIndex += (index - m_padding[NumDims-1].first);
+      return m_impl.template packet<Unaligned>(inputIndex);
+    }
+    // Every other case
+    return packetWithPossibleZero(initialIndex);
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketReturnType packetWithPossibleZero(Index index) const
+  {
+    EIGEN_ALIGN_MAX typename internal::remove_const<CoeffReturnType>::type values[PacketSize];
+    for (int i = 0; i < PacketSize; ++i) {
+      values[i] = coeff(index+i);
+    }
+    PacketReturnType rslt = internal::pload<PacketReturnType>(values);
+    return rslt;
+  }
+
+  Dimensions m_dimensions;
+  array<Index, NumDims+1> m_outputStrides;
+  array<Index, NumDims> m_inputStrides;
+  TensorEvaluator<ArgType, Device> m_impl;
+  PaddingDimensions m_padding;
+
+  Scalar m_paddingValue;
+};
+
+
+
+
+} // end namespace Eigen
+
+#endif // EIGEN_CXX11_TENSOR_TENSOR_PADDING_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorIO.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorIO.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorIO.h	(revision 3762)
@@ -0,0 +1,79 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2014 Benoit Steiner <benoit.steiner.goog@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CXX11_TENSOR_TENSOR_IO_H
+#define EIGEN_CXX11_TENSOR_TENSOR_IO_H
+
+namespace Eigen {
+
+namespace internal {
+
+// Print the tensor as a 2d matrix
+template <typename Tensor, int Rank>
+struct TensorPrinter {
+  static void run (std::ostream& os, const Tensor& tensor) {
+    typedef typename internal::remove_const<typename Tensor::Scalar>::type Scalar;
+    typedef typename Tensor::Index Index;
+    const Index total_size = internal::array_prod(tensor.dimensions());
+    if (total_size > 0) {
+      const Index first_dim = Eigen::internal::array_get<0>(tensor.dimensions());
+      static const int layout = Tensor::Layout;
+      Map<const Array<Scalar, Dynamic, Dynamic, layout> > matrix(const_cast<Scalar*>(tensor.data()), first_dim, total_size/first_dim);
+      os << matrix;
+    }
+  }
+};
+
+
+// Print the tensor as a vector
+template <typename Tensor>
+struct TensorPrinter<Tensor, 1> {
+  static void run (std::ostream& os, const Tensor& tensor) {
+    typedef typename internal::remove_const<typename Tensor::Scalar>::type Scalar;
+    typedef typename Tensor::Index Index;
+    const Index total_size = internal::array_prod(tensor.dimensions());
+    if (total_size > 0) {
+      Map<const Array<Scalar, Dynamic, 1> > array(const_cast<Scalar*>(tensor.data()), total_size);
+      os << array;
+    }
+  }
+};
+
+
+// Print the tensor as a scalar
+template <typename Tensor>
+struct TensorPrinter<Tensor, 0> {
+  static void run (std::ostream& os, const Tensor& tensor) {
+    os << tensor.coeff(0);
+  }
+};
+}
+
+template <typename T>
+std::ostream& operator << (std::ostream& os, const TensorBase<T, ReadOnlyAccessors>& expr) {
+  typedef TensorEvaluator<const TensorForcedEvalOp<const T>, DefaultDevice> Evaluator;
+  typedef typename Evaluator::Dimensions Dimensions;
+
+  // Evaluate the expression if needed
+  TensorForcedEvalOp<const T> eval = expr.eval();
+  Evaluator tensor(eval, DefaultDevice());
+  tensor.evalSubExprsIfNeeded(NULL);
+
+  // Print the result
+  static const int rank = internal::array_size<Dimensions>::value;
+  internal::TensorPrinter<Evaluator, rank>::run(os, tensor);
+
+  // Cleanup.
+  tensor.cleanup();
+  return os;
+}
+
+} // end namespace Eigen
+
+#endif // EIGEN_CXX11_TENSOR_TENSOR_IO_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/Tensor.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/Tensor.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/Tensor.h	(revision 3762)
@@ -0,0 +1,527 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2014 Benoit Steiner <benoit.steiner.goog@gmail.com>
+// Copyright (C) 2013 Christian Seiler <christian@iwakd.de>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CXX11_TENSOR_TENSOR_H
+#define EIGEN_CXX11_TENSOR_TENSOR_H
+
+namespace Eigen {
+
+/** \class Tensor
+  * \ingroup CXX11_Tensor_Module
+  *
+  * \brief The tensor class.
+  *
+  * The %Tensor class is the work-horse for all \em dense tensors within Eigen.
+  *
+  * The %Tensor class encompasses only dynamic-size objects so far.
+  *
+  * The first two template parameters are required:
+  * \tparam Scalar_  Numeric type, e.g. float, double, int or `std::complex<float>`.
+  *                 User defined scalar types are supported as well (see \ref user_defined_scalars "here").
+  * \tparam NumIndices_ Number of indices (i.e. rank of the tensor)
+  *
+  * The remaining template parameters are optional -- in most cases you don't have to worry about them.
+  * \tparam Options_  A combination of either \b #RowMajor or \b #ColMajor, and of either
+  *                 \b #AutoAlign or \b #DontAlign.
+  *                 The former controls \ref TopicStorageOrders "storage order", and defaults to column-major. The latter controls alignment, which is required
+  *                 for vectorization. It defaults to aligning tensors. Note that tensors currently do not support any operations that profit from vectorization.
+  *                 Support for such operations (i.e. adding two tensors etc.) is planned.
+  *
+  * You can access elements of tensors using normal subscripting:
+  *
+  * \code
+  * Eigen::Tensor<double, 4> t(10, 10, 10, 10);
+  * t(0, 1, 2, 3) = 42.0;
+  * \endcode
+  *
+  * This class can be extended with the help of the plugin mechanism described on the page
+  * \ref TopicCustomizing_Plugins by defining the preprocessor symbol \c EIGEN_TENSOR_PLUGIN.
+  *
+  * <i><b>Some notes:</b></i>
+  *
+  * <dl>
+  * <dt><b>Relation to other parts of Eigen:</b></dt>
+  * <dd>The midterm development goal for this class is to have a similar hierarchy as Eigen uses for matrices, so that
+  * taking blocks or using tensors in expressions is easily possible, including an interface with the vector/matrix code
+  * by providing .asMatrix() and .asVector() (or similar) methods for rank 2 and 1 tensors. However, currently, the %Tensor
+  * class does not provide any of these features and is only available as a stand-alone class that just allows for
+  * coefficient access. Also, when fixed-size tensors are implemented, the number of template arguments is likely to
+  * change dramatically.</dd>
+  * </dl>
+  *
+  * \ref TopicStorageOrders
+  */
+
+template<typename Scalar_, int NumIndices_, int Options_, typename IndexType_>
+class Tensor : public TensorBase<Tensor<Scalar_, NumIndices_, Options_, IndexType_> >
+{
+  public:
+    typedef Tensor<Scalar_, NumIndices_, Options_, IndexType_> Self;
+    typedef TensorBase<Tensor<Scalar_, NumIndices_, Options_, IndexType_> > Base;
+    typedef typename Eigen::internal::nested<Self>::type Nested;
+    typedef typename internal::traits<Self>::StorageKind StorageKind;
+    typedef typename internal::traits<Self>::Index Index;
+    typedef Scalar_ Scalar;
+    typedef typename NumTraits<Scalar>::Real RealScalar;
+    typedef typename Base::CoeffReturnType CoeffReturnType;
+
+    enum {
+      IsAligned = bool(EIGEN_MAX_ALIGN_BYTES>0) & !(Options_&DontAlign),
+      Layout = Options_ & RowMajor ? RowMajor : ColMajor,
+      CoordAccess = true,
+      RawAccess = true
+    };
+
+    static const int Options = Options_;
+    static const int NumIndices = NumIndices_;
+    typedef DSizes<Index, NumIndices_> Dimensions;
+
+  protected:
+    TensorStorage<Scalar, Dimensions, Options> m_storage;
+
+#ifdef EIGEN_HAS_SFINAE
+    template<typename CustomIndices>
+    struct isOfNormalIndex{
+      static const bool is_array = internal::is_base_of<array<Index, NumIndices>, CustomIndices>::value;
+      static const bool is_int = NumTraits<CustomIndices>::IsInteger;
+      static const bool value = is_array | is_int;
+    };
+#endif
+
+  public:
+    // Metadata
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Index                         rank()                   const { return NumIndices; }
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Index                         dimension(std::size_t n) const { return m_storage.dimensions()[n]; }
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Dimensions&             dimensions()             const { return m_storage.dimensions(); }
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Index                         size()                   const { return m_storage.size(); }
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar                        *data()                        { return m_storage.data(); }
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Scalar                  *data()                  const { return m_storage.data(); }
+
+    // This makes EIGEN_INITIALIZE_COEFFS_IF_THAT_OPTION_IS_ENABLED
+    // work, because that uses base().coeffRef() - and we don't yet
+    // implement a similar class hierarchy
+    inline Self& base()             { return *this; }
+    inline const Self& base() const { return *this; }
+
+#if EIGEN_HAS_VARIADIC_TEMPLATES
+    template<typename... IndexTypes>
+    EIGEN_DEVICE_FUNC inline const Scalar& coeff(Index firstIndex, Index secondIndex, IndexTypes... otherIndices) const
+    {
+      // The number of indices used to access a tensor coefficient must be equal to the rank of the tensor.
+      EIGEN_STATIC_ASSERT(sizeof...(otherIndices) + 2 == NumIndices, YOU_MADE_A_PROGRAMMING_MISTAKE)
+      return coeff(array<Index, NumIndices>{{firstIndex, secondIndex, otherIndices...}});
+    }
+#endif
+
+    // normal indices
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Scalar& coeff(const array<Index, NumIndices>& indices) const
+    {
+      eigen_internal_assert(checkIndexRange(indices));
+      return m_storage.data()[linearizedIndex(indices)];
+    }
+
+    // custom indices
+#ifdef EIGEN_HAS_SFINAE
+    template<typename CustomIndices,
+             EIGEN_SFINAE_ENABLE_IF( !(isOfNormalIndex<CustomIndices>::value) )
+    >
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Scalar& coeff(CustomIndices& indices) const
+    {
+        return coeff(internal::customIndices2Array<Index,NumIndices>(indices));
+    }
+#endif
+
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Scalar& coeff() const
+    {
+      EIGEN_STATIC_ASSERT(NumIndices == 0, YOU_MADE_A_PROGRAMMING_MISTAKE);
+      return m_storage.data()[0];
+    }
+
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Scalar& coeff(Index index) const
+    {
+      eigen_internal_assert(index >= 0 && index < size());
+      return m_storage.data()[index];
+    }
+
+#if EIGEN_HAS_VARIADIC_TEMPLATES
+    template<typename... IndexTypes>
+    inline Scalar& coeffRef(Index firstIndex, Index secondIndex, IndexTypes... otherIndices)
+    {
+      // The number of indices used to access a tensor coefficient must be equal to the rank of the tensor.
+      EIGEN_STATIC_ASSERT(sizeof...(otherIndices) + 2 == NumIndices, YOU_MADE_A_PROGRAMMING_MISTAKE)
+      return coeffRef(array<Index, NumIndices>{{firstIndex, secondIndex, otherIndices...}});
+    }
+#endif
+
+    // normal indices
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar& coeffRef(const array<Index, NumIndices>& indices)
+    {
+      eigen_internal_assert(checkIndexRange(indices));
+      return m_storage.data()[linearizedIndex(indices)];
+    }
+
+    // custom indices
+#ifdef EIGEN_HAS_SFINAE
+    template<typename CustomIndices,
+             EIGEN_SFINAE_ENABLE_IF( !(isOfNormalIndex<CustomIndices>::value) )
+             >
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar& coeffRef(CustomIndices& indices)
+    {
+        return coeffRef(internal::customIndices2Array<Index,NumIndices>(indices));
+    }
+#endif
+
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar& coeffRef()
+    {
+      EIGEN_STATIC_ASSERT(NumIndices == 0, YOU_MADE_A_PROGRAMMING_MISTAKE);
+      return m_storage.data()[0];
+    }
+
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar& coeffRef(Index index)
+    {
+      eigen_internal_assert(index >= 0 && index < size());
+      return m_storage.data()[index];
+    }
+
+#if EIGEN_HAS_VARIADIC_TEMPLATES
+    template<typename... IndexTypes>
+    inline const Scalar& operator()(Index firstIndex, Index secondIndex, IndexTypes... otherIndices) const
+    {
+      // The number of indices used to access a tensor coefficient must be equal to the rank of the tensor.
+      EIGEN_STATIC_ASSERT(sizeof...(otherIndices) + 2 == NumIndices, YOU_MADE_A_PROGRAMMING_MISTAKE)
+      return this->operator()(array<Index, NumIndices>{{firstIndex, secondIndex, otherIndices...}});
+    }
+#else
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const Scalar& operator()(Index i0, Index i1) const
+    {
+      return coeff(array<Index, 2>(i0, i1));
+    }
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const Scalar& operator()(Index i0, Index i1, Index i2) const
+    {
+      return coeff(array<Index, 3>(i0, i1, i2));
+    }
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const Scalar& operator()(Index i0, Index i1, Index i2, Index i3) const
+    {
+      return coeff(array<Index, 4>(i0, i1, i2, i3));
+    }
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const Scalar& operator()(Index i0, Index i1, Index i2, Index i3, Index i4) const
+    {
+      return coeff(array<Index, 5>(i0, i1, i2, i3, i4));
+    }
+#endif
+
+    // custom indices
+#ifdef EIGEN_HAS_SFINAE
+    template<typename CustomIndices,
+             EIGEN_SFINAE_ENABLE_IF( !(isOfNormalIndex<CustomIndices>::value) )
+    >
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Scalar& operator()(CustomIndices& indices) const
+    {
+        return coeff(internal::customIndices2Array<Index,NumIndices>(indices));
+    }
+#endif
+
+    // normal indices
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Scalar& operator()(const array<Index, NumIndices>& indices) const
+    {
+      return coeff(indices);
+    }
+
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Scalar& operator()(Index index) const
+    {
+      eigen_internal_assert(index >= 0 && index < size());
+      return coeff(index);
+    }
+
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Scalar& operator()() const
+    {
+      EIGEN_STATIC_ASSERT(NumIndices == 0, YOU_MADE_A_PROGRAMMING_MISTAKE);
+      return coeff();
+    }
+
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Scalar& operator[](Index index) const
+    {
+      // The bracket operator is only for vectors, use the parenthesis operator instead.
+      EIGEN_STATIC_ASSERT(NumIndices == 1, YOU_MADE_A_PROGRAMMING_MISTAKE);
+      return coeff(index);
+    }
+
+#if EIGEN_HAS_VARIADIC_TEMPLATES
+    template<typename... IndexTypes>
+    inline Scalar& operator()(Index firstIndex, Index secondIndex, IndexTypes... otherIndices)
+    {
+      // The number of indices used to access a tensor coefficient must be equal to the rank of the tensor.
+      EIGEN_STATIC_ASSERT(sizeof...(otherIndices) + 2 == NumIndices, YOU_MADE_A_PROGRAMMING_MISTAKE)
+      return operator()(array<Index, NumIndices>{{firstIndex, secondIndex, otherIndices...}});
+    }
+#else
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Scalar& operator()(Index i0, Index i1)
+    {
+      return coeffRef(array<Index, 2>(i0, i1));
+    }
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Scalar& operator()(Index i0, Index i1, Index i2)
+    {
+      return coeffRef(array<Index, 3>(i0, i1, i2));
+    }
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Scalar& operator()(Index i0, Index i1, Index i2, Index i3)
+    {
+      return coeffRef(array<Index, 4>(i0, i1, i2, i3));
+    }
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Scalar& operator()(Index i0, Index i1, Index i2, Index i3, Index i4)
+    {
+      return coeffRef(array<Index, 5>(i0, i1, i2, i3, i4));
+    }
+#endif
+
+    // normal indices
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar& operator()(const array<Index, NumIndices>& indices)
+    {
+      return coeffRef(indices);
+    }
+
+    // custom indices
+#ifdef EIGEN_HAS_SFINAE
+    template<typename CustomIndices,
+             EIGEN_SFINAE_ENABLE_IF( !(isOfNormalIndex<CustomIndices>::value) )
+    >
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar& operator()(CustomIndices& indices)
+    {
+      return coeffRef(internal::customIndices2Array<Index,NumIndices>(indices));
+    }
+#endif
+
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar& operator()(Index index)
+    {
+      eigen_assert(index >= 0 && index < size());
+      return coeffRef(index);
+    }
+
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar& operator()()
+    {
+      EIGEN_STATIC_ASSERT(NumIndices == 0, YOU_MADE_A_PROGRAMMING_MISTAKE);
+      return coeffRef();
+    }
+
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar& operator[](Index index)
+    {
+      // The bracket operator is only for vectors, use the parenthesis operator instead
+      EIGEN_STATIC_ASSERT(NumIndices == 1, YOU_MADE_A_PROGRAMMING_MISTAKE)
+      return coeffRef(index);
+    }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Tensor()
+      : m_storage()
+    {
+    }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Tensor(const Self& other)
+      : m_storage(other.m_storage)
+    {
+    }
+
+#if EIGEN_HAS_VARIADIC_TEMPLATES
+    template<typename... IndexTypes>
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Tensor(Index firstDimension, IndexTypes... otherDimensions)
+        : m_storage(firstDimension, otherDimensions...)
+    {
+      // The number of dimensions used to construct a tensor must be equal to the rank of the tensor.
+      EIGEN_STATIC_ASSERT(sizeof...(otherDimensions) + 1 == NumIndices, YOU_MADE_A_PROGRAMMING_MISTAKE)
+    }
+#else
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE explicit Tensor(Index dim1)
+      : m_storage(dim1, array<Index, 1>(dim1))
+    {
+      EIGEN_STATIC_ASSERT(1 == NumIndices, YOU_MADE_A_PROGRAMMING_MISTAKE)
+    }
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Tensor(Index dim1, Index dim2)
+      : m_storage(dim1*dim2, array<Index, 2>(dim1, dim2))
+    {
+      EIGEN_STATIC_ASSERT(2 == NumIndices, YOU_MADE_A_PROGRAMMING_MISTAKE)
+    }
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Tensor(Index dim1, Index dim2, Index dim3)
+      : m_storage(dim1*dim2*dim3, array<Index, 3>(dim1, dim2, dim3))
+    {
+      EIGEN_STATIC_ASSERT(3 == NumIndices, YOU_MADE_A_PROGRAMMING_MISTAKE)
+    }
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Tensor(Index dim1, Index dim2, Index dim3, Index dim4)
+      : m_storage(dim1*dim2*dim3*dim4, array<Index, 4>(dim1, dim2, dim3, dim4))
+    {
+      EIGEN_STATIC_ASSERT(4 == NumIndices, YOU_MADE_A_PROGRAMMING_MISTAKE)
+    }
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Tensor(Index dim1, Index dim2, Index dim3, Index dim4, Index dim5)
+      : m_storage(dim1*dim2*dim3*dim4*dim5, array<Index, 5>(dim1, dim2, dim3, dim4, dim5))
+    {
+      EIGEN_STATIC_ASSERT(5 == NumIndices, YOU_MADE_A_PROGRAMMING_MISTAKE)
+    }
+#endif
+
+    /** Normal Dimension */
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE explicit Tensor(const array<Index, NumIndices>& dimensions)
+        : m_storage(internal::array_prod(dimensions), dimensions)
+    {
+      EIGEN_INITIALIZE_COEFFS_IF_THAT_OPTION_IS_ENABLED
+    }
+
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Tensor(const TensorBase<OtherDerived, ReadOnlyAccessors>& other)
+    {
+      typedef TensorAssignOp<Tensor, const OtherDerived> Assign;
+      Assign assign(*this, other.derived());
+      resize(TensorEvaluator<const Assign, DefaultDevice>(assign, DefaultDevice()).dimensions());
+      internal::TensorExecutor<const Assign, DefaultDevice>::run(assign, DefaultDevice());
+    }
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Tensor(const TensorBase<OtherDerived, WriteAccessors>& other)
+    {
+      typedef TensorAssignOp<Tensor, const OtherDerived> Assign;
+      Assign assign(*this, other.derived());
+      resize(TensorEvaluator<const Assign, DefaultDevice>(assign, DefaultDevice()).dimensions());
+      internal::TensorExecutor<const Assign, DefaultDevice>::run(assign, DefaultDevice());
+    }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Tensor& operator=(const Tensor& other)
+    {
+      typedef TensorAssignOp<Tensor, const Tensor> Assign;
+      Assign assign(*this, other);
+      resize(TensorEvaluator<const Assign, DefaultDevice>(assign, DefaultDevice()).dimensions());
+      internal::TensorExecutor<const Assign, DefaultDevice>::run(assign, DefaultDevice());
+      return *this;
+    }
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Tensor& operator=(const OtherDerived& other)
+    {
+      typedef TensorAssignOp<Tensor, const OtherDerived> Assign;
+      Assign assign(*this, other);
+      resize(TensorEvaluator<const Assign, DefaultDevice>(assign, DefaultDevice()).dimensions());
+      internal::TensorExecutor<const Assign, DefaultDevice>::run(assign, DefaultDevice());
+      return *this;
+    }
+
+#if EIGEN_HAS_VARIADIC_TEMPLATES
+    template<typename... IndexTypes> EIGEN_DEVICE_FUNC
+    void resize(Index firstDimension, IndexTypes... otherDimensions)
+    {
+      // The number of dimensions used to resize a tensor must be equal to the rank of the tensor.
+      EIGEN_STATIC_ASSERT(sizeof...(otherDimensions) + 1 == NumIndices, YOU_MADE_A_PROGRAMMING_MISTAKE)
+      resize(array<Index, NumIndices>{{firstDimension, otherDimensions...}});
+    }
+#endif
+
+    /** Normal Dimension */
+    EIGEN_DEVICE_FUNC void resize(const array<Index, NumIndices>& dimensions)
+    {
+      int i;
+      Index size = Index(1);
+      for (i = 0; i < NumIndices; i++) {
+        internal::check_rows_cols_for_overflow<Dynamic>::run(size, dimensions[i]);
+        size *= dimensions[i];
+      }
+      #ifdef EIGEN_INITIALIZE_COEFFS
+        bool size_changed = size != this->size();
+        m_storage.resize(size, dimensions);
+        if(size_changed) EIGEN_INITIALIZE_COEFFS_IF_THAT_OPTION_IS_ENABLED
+      #else
+        m_storage.resize(size, dimensions);
+      #endif
+    }
+
+    // Why this overload, DSizes is derived from array ??? //
+    EIGEN_DEVICE_FUNC void resize(const DSizes<Index, NumIndices>& dimensions) {
+      array<Index, NumIndices> dims;
+      for (int i = 0; i < NumIndices; ++i) {
+        dims[i] = dimensions[i];
+      }
+      resize(dims);
+    }
+
+    EIGEN_DEVICE_FUNC
+    void resize()
+    {
+      EIGEN_STATIC_ASSERT(NumIndices == 0, YOU_MADE_A_PROGRAMMING_MISTAKE);
+      // Nothing to do: rank 0 tensors have fixed size
+    }
+
+    /** Custom Dimension */
+#ifdef EIGEN_HAS_SFINAE
+    template<typename CustomDimension,
+             EIGEN_SFINAE_ENABLE_IF( !(isOfNormalIndex<CustomDimension>::value) )
+    >
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void resize(CustomDimension& dimensions)
+    {
+      resize(internal::customIndices2Array<Index,NumIndices>(dimensions));
+    }
+#endif
+
+#ifndef EIGEN_EMULATE_CXX11_META_H
+    template <typename std::ptrdiff_t... Indices>
+    EIGEN_DEVICE_FUNC
+    void resize(const Sizes<Indices...>& dimensions) {
+      array<Index, NumIndices> dims;
+      for (int i = 0; i < NumIndices; ++i) {
+        dims[i] = static_cast<Index>(dimensions[i]);
+      }
+      resize(dims);
+    }
+#else
+    template <std::size_t V1, std::size_t V2, std::size_t V3, std::size_t V4, std::size_t V5>
+    EIGEN_DEVICE_FUNC
+    void resize(const Sizes<V1, V2, V3, V4, V5>& dimensions) {
+      array<Index, NumIndices> dims;
+      for (int i = 0; i < NumIndices; ++i) {
+        dims[i] = static_cast<Index>(dimensions[i]);
+      }
+      resize(dims);
+    }
+#endif
+
+  protected:
+
+    bool checkIndexRange(const array<Index, NumIndices>& indices) const
+    {
+      using internal::array_apply_and_reduce;
+      using internal::array_zip_and_reduce;
+      using internal::greater_equal_zero_op;
+      using internal::logical_and_op;
+      using internal::lesser_op;
+
+      return
+        // check whether the indices are all >= 0
+        array_apply_and_reduce<logical_and_op, greater_equal_zero_op>(indices) &&
+        // check whether the indices fit in the dimensions
+        array_zip_and_reduce<logical_and_op, lesser_op>(indices, m_storage.dimensions());
+    }
+
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Index linearizedIndex(const array<Index, NumIndices>& indices) const
+    {
+      if (Options&RowMajor) {
+        return m_storage.dimensions().IndexOfRowMajor(indices);
+      } else {
+        return m_storage.dimensions().IndexOfColMajor(indices);
+      }
+    }
+};
+
+} // end namespace Eigen
+
+#endif // EIGEN_CXX11_TENSOR_TENSOR_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorFFT.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorFFT.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorFFT.h	(revision 3762)
@@ -0,0 +1,651 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2015 Jianwei Cui <thucjw@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CXX11_TENSOR_TENSOR_FFT_H
+#define EIGEN_CXX11_TENSOR_TENSOR_FFT_H
+
+// This code requires the ability to initialize arrays of constant
+// values directly inside a class.
+#if __cplusplus >= 201103L || EIGEN_COMP_MSVC >= 1900
+
+namespace Eigen {
+
+/** \class TensorFFT
+  * \ingroup CXX11_Tensor_Module
+  *
+  * \brief Tensor FFT class.
+  *
+  * TODO:
+  * Vectorize the Cooley Tukey and the Bluestein algorithm
+  * Add support for multithreaded evaluation
+  * Improve the performance on GPU
+  */
+
+template <bool NeedUprade> struct MakeComplex {
+  template <typename T>
+  EIGEN_DEVICE_FUNC
+  T operator() (const T& val) const { return val; }
+};
+
+template <> struct MakeComplex<true> {
+  template <typename T>
+  EIGEN_DEVICE_FUNC
+  std::complex<T> operator() (const T& val) const { return std::complex<T>(val, 0); }
+};
+
+template <> struct MakeComplex<false> {
+  template <typename T>
+  EIGEN_DEVICE_FUNC
+  std::complex<T> operator() (const std::complex<T>& val) const { return val; }
+};
+
+template <int ResultType> struct PartOf {
+  template <typename T> T operator() (const T& val) const { return val; }
+};
+
+template <> struct PartOf<RealPart> {
+  template <typename T> T operator() (const std::complex<T>& val) const { return val.real(); }
+};
+
+template <> struct PartOf<ImagPart> {
+  template <typename T> T operator() (const std::complex<T>& val) const { return val.imag(); }
+};
+
+namespace internal {
+template <typename FFT, typename XprType, int FFTResultType, int FFTDir>
+struct traits<TensorFFTOp<FFT, XprType, FFTResultType, FFTDir> > : public traits<XprType> {
+  typedef traits<XprType> XprTraits;
+  typedef typename NumTraits<typename XprTraits::Scalar>::Real RealScalar;
+  typedef typename std::complex<RealScalar> ComplexScalar;
+  typedef typename XprTraits::Scalar InputScalar;
+  typedef typename conditional<FFTResultType == RealPart || FFTResultType == ImagPart, RealScalar, ComplexScalar>::type OutputScalar;
+  typedef typename XprTraits::StorageKind StorageKind;
+  typedef typename XprTraits::Index Index;
+  typedef typename XprType::Nested Nested;
+  typedef typename remove_reference<Nested>::type _Nested;
+  static const int NumDimensions = XprTraits::NumDimensions;
+  static const int Layout = XprTraits::Layout;
+};
+
+template <typename FFT, typename XprType, int FFTResultType, int FFTDirection>
+struct eval<TensorFFTOp<FFT, XprType, FFTResultType, FFTDirection>, Eigen::Dense> {
+  typedef const TensorFFTOp<FFT, XprType, FFTResultType, FFTDirection>& type;
+};
+
+template <typename FFT, typename XprType, int FFTResultType, int FFTDirection>
+struct nested<TensorFFTOp<FFT, XprType, FFTResultType, FFTDirection>, 1, typename eval<TensorFFTOp<FFT, XprType, FFTResultType, FFTDirection> >::type> {
+  typedef TensorFFTOp<FFT, XprType, FFTResultType, FFTDirection> type;
+};
+
+}  // end namespace internal
+
+template <typename FFT, typename XprType, int FFTResultType, int FFTDir>
+class TensorFFTOp : public TensorBase<TensorFFTOp<FFT, XprType, FFTResultType, FFTDir>, ReadOnlyAccessors> {
+ public:
+  typedef typename Eigen::internal::traits<TensorFFTOp>::Scalar Scalar;
+  typedef typename Eigen::NumTraits<Scalar>::Real RealScalar;
+  typedef typename std::complex<RealScalar> ComplexScalar;
+  typedef typename internal::conditional<FFTResultType == RealPart || FFTResultType == ImagPart, RealScalar, ComplexScalar>::type OutputScalar;
+  typedef OutputScalar CoeffReturnType;
+  typedef typename Eigen::internal::nested<TensorFFTOp>::type Nested;
+  typedef typename Eigen::internal::traits<TensorFFTOp>::StorageKind StorageKind;
+  typedef typename Eigen::internal::traits<TensorFFTOp>::Index Index;
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorFFTOp(const XprType& expr, const FFT& fft)
+      : m_xpr(expr), m_fft(fft) {}
+
+  EIGEN_DEVICE_FUNC
+  const FFT& fft() const { return m_fft; }
+
+  EIGEN_DEVICE_FUNC
+  const typename internal::remove_all<typename XprType::Nested>::type& expression() const {
+    return m_xpr;
+  }
+
+ protected:
+  typename XprType::Nested m_xpr;
+  const FFT m_fft;
+};
+
+// Eval as rvalue
+template <typename FFT, typename ArgType, typename Device, int FFTResultType, int FFTDir>
+struct TensorEvaluator<const TensorFFTOp<FFT, ArgType, FFTResultType, FFTDir>, Device> {
+  typedef TensorFFTOp<FFT, ArgType, FFTResultType, FFTDir> XprType;
+  typedef typename XprType::Index Index;
+  static const int NumDims = internal::array_size<typename TensorEvaluator<ArgType, Device>::Dimensions>::value;
+  typedef DSizes<Index, NumDims> Dimensions;
+  typedef typename XprType::Scalar Scalar;
+  typedef typename Eigen::NumTraits<Scalar>::Real RealScalar;
+  typedef typename std::complex<RealScalar> ComplexScalar;
+  typedef typename TensorEvaluator<ArgType, Device>::Dimensions InputDimensions;
+  typedef internal::traits<XprType> XprTraits;
+  typedef typename XprTraits::Scalar InputScalar;
+  typedef typename internal::conditional<FFTResultType == RealPart || FFTResultType == ImagPart, RealScalar, ComplexScalar>::type OutputScalar;
+  typedef OutputScalar CoeffReturnType;
+  typedef typename PacketType<OutputScalar, Device>::type PacketReturnType;
+  static const int PacketSize = internal::unpacket_traits<PacketReturnType>::size;
+
+  enum {
+    IsAligned = false,
+    PacketAccess = true,
+    BlockAccess = false,
+    Layout = TensorEvaluator<ArgType, Device>::Layout,
+    CoordAccess = false,
+    RawAccess = false
+  };
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorEvaluator(const XprType& op, const Device& device) : m_fft(op.fft()), m_impl(op.expression(), device), m_data(NULL), m_device(device) {
+    const typename TensorEvaluator<ArgType, Device>::Dimensions& input_dims = m_impl.dimensions();
+    for (int i = 0; i < NumDims; ++i) {
+      eigen_assert(input_dims[i] > 0);
+      m_dimensions[i] = input_dims[i];
+    }
+
+    if (static_cast<int>(Layout) == static_cast<int>(ColMajor)) {
+      m_strides[0] = 1;
+      for (int i = 1; i < NumDims; ++i) {
+        m_strides[i] = m_strides[i - 1] * m_dimensions[i - 1];
+      }
+    } else {
+      m_strides[NumDims - 1] = 1;
+      for (int i = NumDims - 2; i >= 0; --i) {
+        m_strides[i] = m_strides[i + 1] * m_dimensions[i + 1];
+      }
+    }
+    m_size = m_dimensions.TotalSize();
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Dimensions& dimensions() const {
+    return m_dimensions;
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool evalSubExprsIfNeeded(OutputScalar* data) {
+    m_impl.evalSubExprsIfNeeded(NULL);
+    if (data) {
+      evalToBuf(data);
+      return false;
+    } else {
+      m_data = (CoeffReturnType*)m_device.allocate(sizeof(CoeffReturnType) * m_size);
+      evalToBuf(m_data);
+      return true;
+    }
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void cleanup() {
+    if (m_data) {
+      m_device.deallocate(m_data);
+      m_data = NULL;
+    }
+    m_impl.cleanup();
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE CoeffReturnType coeff(Index index) const {
+    return m_data[index];
+  }
+
+  template <int LoadMode>
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE PacketReturnType
+  packet(Index index) const {
+    return internal::ploadt<PacketReturnType, LoadMode>(m_data + index);
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorOpCost
+  costPerCoeff(bool vectorized) const {
+    return TensorOpCost(sizeof(CoeffReturnType), 0, 0, vectorized, PacketSize);
+  }
+
+  EIGEN_DEVICE_FUNC Scalar* data() const { return m_data; }
+
+
+ private:
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void evalToBuf(OutputScalar* data) {
+    const bool write_to_out = internal::is_same<OutputScalar, ComplexScalar>::value;
+    ComplexScalar* buf = write_to_out ? (ComplexScalar*)data : (ComplexScalar*)m_device.allocate(sizeof(ComplexScalar) * m_size);
+
+    for (Index i = 0; i < m_size; ++i) {
+      buf[i] = MakeComplex<internal::is_same<InputScalar, RealScalar>::value>()(m_impl.coeff(i));
+    }
+
+    for (size_t i = 0; i < m_fft.size(); ++i) {
+      Index dim = m_fft[i];
+      eigen_assert(dim >= 0 && dim < NumDims);
+      Index line_len = m_dimensions[dim];
+      eigen_assert(line_len >= 1);
+      ComplexScalar* line_buf = (ComplexScalar*)m_device.allocate(sizeof(ComplexScalar) * line_len);
+      const bool is_power_of_two = isPowerOfTwo(line_len);
+      const Index good_composite = is_power_of_two ? 0 : findGoodComposite(line_len);
+      const Index log_len = is_power_of_two ? getLog2(line_len) : getLog2(good_composite);
+
+      ComplexScalar* a = is_power_of_two ? NULL : (ComplexScalar*)m_device.allocate(sizeof(ComplexScalar) * good_composite);
+      ComplexScalar* b = is_power_of_two ? NULL : (ComplexScalar*)m_device.allocate(sizeof(ComplexScalar) * good_composite);
+      ComplexScalar* pos_j_base_powered = is_power_of_two ? NULL : (ComplexScalar*)m_device.allocate(sizeof(ComplexScalar) * (line_len + 1));
+      if (!is_power_of_two) {
+        // Compute twiddle factors
+        //   t_n = exp(sqrt(-1) * pi * n^2 / line_len)
+        // for n = 0, 1,..., line_len-1.
+        // For n > 2 we use the recurrence t_n = t_{n-1}^2 / t_{n-2} * t_1^2
+        pos_j_base_powered[0] = ComplexScalar(1, 0);
+        if (line_len > 1) {
+          const RealScalar pi_over_len(EIGEN_PI / line_len);
+          const ComplexScalar pos_j_base = ComplexScalar(
+	       std::cos(pi_over_len), std::sin(pi_over_len));
+          pos_j_base_powered[1] = pos_j_base;
+          if (line_len > 2) {
+            const ComplexScalar pos_j_base_sq = pos_j_base * pos_j_base;
+            for (int j = 2; j < line_len + 1; ++j) {
+              pos_j_base_powered[j] = pos_j_base_powered[j - 1] *
+                                      pos_j_base_powered[j - 1] /
+                                      pos_j_base_powered[j - 2] * pos_j_base_sq;
+            }
+          }
+        }
+      }
+
+      for (Index partial_index = 0; partial_index < m_size / line_len; ++partial_index) {
+        const Index base_offset = getBaseOffsetFromIndex(partial_index, dim);
+
+        // get data into line_buf
+        const Index stride = m_strides[dim];
+        if (stride == 1) {
+          memcpy(line_buf, &buf[base_offset], line_len*sizeof(ComplexScalar));
+        } else {
+          Index offset = base_offset;
+          for (int j = 0; j < line_len; ++j, offset += stride) {
+            line_buf[j] = buf[offset];
+          }
+        }
+
+        // processs the line
+        if (is_power_of_two) {
+          processDataLineCooleyTukey(line_buf, line_len, log_len);
+        }
+        else {
+          processDataLineBluestein(line_buf, line_len, good_composite, log_len, a, b, pos_j_base_powered);
+        }
+
+        // write back
+        if (FFTDir == FFT_FORWARD && stride == 1) {
+          memcpy(&buf[base_offset], line_buf, line_len*sizeof(ComplexScalar));
+        } else {
+          Index offset = base_offset;
+          const ComplexScalar div_factor =  ComplexScalar(1.0 / line_len, 0);
+          for (int j = 0; j < line_len; ++j, offset += stride) {
+             buf[offset] = (FFTDir == FFT_FORWARD) ? line_buf[j] : line_buf[j] * div_factor;
+          }
+        }
+      }
+      m_device.deallocate(line_buf);
+      if (!is_power_of_two) {
+        m_device.deallocate(a);
+        m_device.deallocate(b);
+        m_device.deallocate(pos_j_base_powered);
+      }
+    }
+
+    if(!write_to_out) {
+      for (Index i = 0; i < m_size; ++i) {
+        data[i] = PartOf<FFTResultType>()(buf[i]);
+      }
+      m_device.deallocate(buf);
+    }
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE static bool isPowerOfTwo(Index x) {
+    eigen_assert(x > 0);
+    return !(x & (x - 1));
+  }
+
+  // The composite number for padding, used in Bluestein's FFT algorithm
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE static Index findGoodComposite(Index n) {
+    Index i = 2;
+    while (i < 2 * n - 1) i *= 2;
+    return i;
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE static Index getLog2(Index m) {
+    Index log2m = 0;
+    while (m >>= 1) log2m++;
+    return log2m;
+  }
+
+  // Call Cooley Tukey algorithm directly, data length must be power of 2
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void processDataLineCooleyTukey(ComplexScalar* line_buf, Index line_len, Index log_len) {
+    eigen_assert(isPowerOfTwo(line_len));
+    scramble_FFT(line_buf, line_len);
+    compute_1D_Butterfly<FFTDir>(line_buf, line_len, log_len);
+  }
+
+  // Call Bluestein's FFT algorithm, m is a good composite number greater than (2 * n - 1), used as the padding length
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void processDataLineBluestein(ComplexScalar* line_buf, Index line_len, Index good_composite, Index log_len, ComplexScalar* a, ComplexScalar* b, const ComplexScalar* pos_j_base_powered) {
+    Index n = line_len;
+    Index m = good_composite;
+    ComplexScalar* data = line_buf;
+
+    for (Index i = 0; i < n; ++i) {
+      if(FFTDir == FFT_FORWARD) {
+        a[i] = data[i] * numext::conj(pos_j_base_powered[i]);
+      }
+      else {
+        a[i] = data[i] * pos_j_base_powered[i];
+      }
+    }
+    for (Index i = n; i < m; ++i) {
+      a[i] = ComplexScalar(0, 0);
+    }
+
+    for (Index i = 0; i < n; ++i) {
+      if(FFTDir == FFT_FORWARD) {
+        b[i] = pos_j_base_powered[i];
+      }
+      else {
+        b[i] = numext::conj(pos_j_base_powered[i]);
+      }
+    }
+    for (Index i = n; i < m - n; ++i) {
+      b[i] = ComplexScalar(0, 0);
+    }
+    for (Index i = m - n; i < m; ++i) {
+      if(FFTDir == FFT_FORWARD) {
+        b[i] = pos_j_base_powered[m-i];
+      }
+      else {
+        b[i] = numext::conj(pos_j_base_powered[m-i]);
+      }
+    }
+
+    scramble_FFT(a, m);
+    compute_1D_Butterfly<FFT_FORWARD>(a, m, log_len);
+
+    scramble_FFT(b, m);
+    compute_1D_Butterfly<FFT_FORWARD>(b, m, log_len);
+
+    for (Index i = 0; i < m; ++i) {
+      a[i] *= b[i];
+    }
+
+    scramble_FFT(a, m);
+    compute_1D_Butterfly<FFT_REVERSE>(a, m, log_len);
+
+    //Do the scaling after ifft
+    for (Index i = 0; i < m; ++i) {
+      a[i] /= m;
+    }
+
+    for (Index i = 0; i < n; ++i) {
+      if(FFTDir == FFT_FORWARD) {
+        data[i] = a[i] * numext::conj(pos_j_base_powered[i]);
+      }
+      else {
+        data[i] = a[i] * pos_j_base_powered[i];
+      }
+    }
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE static void scramble_FFT(ComplexScalar* data, Index n) {
+    eigen_assert(isPowerOfTwo(n));
+    Index j = 1;
+    for (Index i = 1; i < n; ++i){
+      if (j > i) {
+        std::swap(data[j-1], data[i-1]);
+      }
+      Index m = n >> 1;
+      while (m >= 2 && j > m) {
+        j -= m;
+        m >>= 1;
+      }
+      j += m;
+    }
+  }
+
+  template <int Dir>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void butterfly_2(ComplexScalar* data) {
+    ComplexScalar tmp = data[1];
+    data[1] = data[0] - data[1];
+    data[0] += tmp;
+  }
+
+  template <int Dir>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void butterfly_4(ComplexScalar* data) {
+    ComplexScalar tmp[4];
+    tmp[0] = data[0] + data[1];
+    tmp[1] = data[0] - data[1];
+    tmp[2] = data[2] + data[3];
+    if (Dir == FFT_FORWARD) {
+      tmp[3] = ComplexScalar(0.0, -1.0) * (data[2] - data[3]);
+    } else {
+      tmp[3] = ComplexScalar(0.0, 1.0) * (data[2] - data[3]);
+    }
+    data[0] = tmp[0] + tmp[2];
+    data[1] = tmp[1] + tmp[3];
+    data[2] = tmp[0] - tmp[2];
+    data[3] = tmp[1] - tmp[3];
+  }
+
+  template <int Dir>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void butterfly_8(ComplexScalar* data) {
+    ComplexScalar tmp_1[8];
+    ComplexScalar tmp_2[8];
+
+    tmp_1[0] = data[0] + data[1];
+    tmp_1[1] = data[0] - data[1];
+    tmp_1[2] = data[2] + data[3];
+    if (Dir == FFT_FORWARD) {
+      tmp_1[3] = (data[2] - data[3]) * ComplexScalar(0, -1);
+    } else {
+      tmp_1[3] = (data[2] - data[3]) * ComplexScalar(0, 1);
+    }
+    tmp_1[4] = data[4] + data[5];
+    tmp_1[5] = data[4] - data[5];
+    tmp_1[6] = data[6] + data[7];
+    if (Dir == FFT_FORWARD) {
+      tmp_1[7] = (data[6] - data[7]) * ComplexScalar(0, -1);
+    } else {
+      tmp_1[7] = (data[6] - data[7]) * ComplexScalar(0, 1);
+    }
+    tmp_2[0] = tmp_1[0] + tmp_1[2];
+    tmp_2[1] = tmp_1[1] + tmp_1[3];
+    tmp_2[2] = tmp_1[0] - tmp_1[2];
+    tmp_2[3] = tmp_1[1] - tmp_1[3];
+    tmp_2[4] = tmp_1[4] + tmp_1[6];
+// SQRT2DIV2 = sqrt(2)/2
+#define SQRT2DIV2 0.7071067811865476
+    if (Dir == FFT_FORWARD) {
+      tmp_2[5] = (tmp_1[5] + tmp_1[7]) * ComplexScalar(SQRT2DIV2, -SQRT2DIV2);
+      tmp_2[6] = (tmp_1[4] - tmp_1[6]) * ComplexScalar(0, -1);
+      tmp_2[7] = (tmp_1[5] - tmp_1[7]) * ComplexScalar(-SQRT2DIV2, -SQRT2DIV2);
+    } else {
+      tmp_2[5] = (tmp_1[5] + tmp_1[7]) * ComplexScalar(SQRT2DIV2, SQRT2DIV2);
+      tmp_2[6] = (tmp_1[4] - tmp_1[6]) * ComplexScalar(0, 1);
+      tmp_2[7] = (tmp_1[5] - tmp_1[7]) * ComplexScalar(-SQRT2DIV2, SQRT2DIV2);
+    }
+    data[0] = tmp_2[0] + tmp_2[4];
+    data[1] = tmp_2[1] + tmp_2[5];
+    data[2] = tmp_2[2] + tmp_2[6];
+    data[3] = tmp_2[3] + tmp_2[7];
+    data[4] = tmp_2[0] - tmp_2[4];
+    data[5] = tmp_2[1] - tmp_2[5];
+    data[6] = tmp_2[2] - tmp_2[6];
+    data[7] = tmp_2[3] - tmp_2[7];
+  }
+
+  template <int Dir>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void butterfly_1D_merge(
+      ComplexScalar* data, Index n, Index n_power_of_2) {
+    // Original code:
+    // RealScalar wtemp = std::sin(M_PI/n);
+    // RealScalar wpi =  -std::sin(2 * M_PI/n);
+    const RealScalar wtemp = m_sin_PI_div_n_LUT[n_power_of_2];
+    const RealScalar wpi = (Dir == FFT_FORWARD)
+                               ? m_minus_sin_2_PI_div_n_LUT[n_power_of_2]
+                               : -m_minus_sin_2_PI_div_n_LUT[n_power_of_2];
+
+    const ComplexScalar wp(wtemp, wpi);
+    const ComplexScalar wp_one = wp + ComplexScalar(1, 0);
+    const ComplexScalar wp_one_2 = wp_one * wp_one;
+    const ComplexScalar wp_one_3 = wp_one_2 * wp_one;
+    const ComplexScalar wp_one_4 = wp_one_3 * wp_one;
+    const Index n2 = n / 2;
+    ComplexScalar w(1.0, 0.0);
+    for (Index i = 0; i < n2; i += 4) {
+       ComplexScalar temp0(data[i + n2] * w);
+       ComplexScalar temp1(data[i + 1 + n2] * w * wp_one);
+       ComplexScalar temp2(data[i + 2 + n2] * w * wp_one_2);
+       ComplexScalar temp3(data[i + 3 + n2] * w * wp_one_3);
+       w = w * wp_one_4;
+
+       data[i + n2] = data[i] - temp0;
+       data[i] += temp0;
+
+       data[i + 1 + n2] = data[i + 1] - temp1;
+       data[i + 1] += temp1;
+
+       data[i + 2 + n2] = data[i + 2] - temp2;
+       data[i + 2] += temp2;
+
+       data[i + 3 + n2] = data[i + 3] - temp3;
+       data[i + 3] += temp3;
+    }
+  }
+
+ template <int Dir>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void compute_1D_Butterfly(
+      ComplexScalar* data, Index n, Index n_power_of_2) {
+    eigen_assert(isPowerOfTwo(n));
+    if (n > 8) {
+      compute_1D_Butterfly<Dir>(data, n / 2, n_power_of_2 - 1);
+      compute_1D_Butterfly<Dir>(data + n / 2, n / 2, n_power_of_2 - 1);
+      butterfly_1D_merge<Dir>(data, n, n_power_of_2);
+    } else if (n == 8) {
+      butterfly_8<Dir>(data);
+    } else if (n == 4) {
+      butterfly_4<Dir>(data);
+    } else if (n == 2) {
+      butterfly_2<Dir>(data);
+    }
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Index getBaseOffsetFromIndex(Index index, Index omitted_dim) const {
+    Index result = 0;
+
+    if (static_cast<int>(Layout) == static_cast<int>(ColMajor)) {
+      for (int i = NumDims - 1; i > omitted_dim; --i) {
+        const Index partial_m_stride = m_strides[i] / m_dimensions[omitted_dim];
+        const Index idx = index / partial_m_stride;
+        index -= idx * partial_m_stride;
+        result += idx * m_strides[i];
+      }
+      result += index;
+    }
+    else {
+      for (Index i = 0; i < omitted_dim; ++i) {
+        const Index partial_m_stride = m_strides[i] / m_dimensions[omitted_dim];
+        const Index idx = index / partial_m_stride;
+        index -= idx * partial_m_stride;
+        result += idx * m_strides[i];
+      }
+      result += index;
+    }
+    // Value of index_coords[omitted_dim] is not determined to this step
+    return result;
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Index getIndexFromOffset(Index base, Index omitted_dim, Index offset) const {
+    Index result = base + offset * m_strides[omitted_dim] ;
+    return result;
+  }
+
+ protected:
+  Index m_size;
+  const FFT& m_fft;
+  Dimensions m_dimensions;
+  array<Index, NumDims> m_strides;
+  TensorEvaluator<ArgType, Device> m_impl;
+  CoeffReturnType* m_data;
+  const Device& m_device;
+
+  // This will support a maximum FFT size of 2^32 for each dimension
+  // m_sin_PI_div_n_LUT[i] = (-2) * std::sin(M_PI / std::pow(2,i)) ^ 2;
+  const RealScalar m_sin_PI_div_n_LUT[32] = {
+    RealScalar(0.0),
+    RealScalar(-2),
+    RealScalar(-0.999999999999999),
+    RealScalar(-0.292893218813453),
+    RealScalar(-0.0761204674887130),
+    RealScalar(-0.0192147195967696),
+    RealScalar(-0.00481527332780311),
+    RealScalar(-0.00120454379482761),
+    RealScalar(-3.01181303795779e-04),
+    RealScalar(-7.52981608554592e-05),
+    RealScalar(-1.88247173988574e-05),
+    RealScalar(-4.70619042382852e-06),
+    RealScalar(-1.17654829809007e-06),
+    RealScalar(-2.94137117780840e-07),
+    RealScalar(-7.35342821488550e-08),
+    RealScalar(-1.83835707061916e-08),
+    RealScalar(-4.59589268710903e-09),
+    RealScalar(-1.14897317243732e-09),
+    RealScalar(-2.87243293150586e-10),
+    RealScalar( -7.18108232902250e-11),
+    RealScalar(-1.79527058227174e-11),
+    RealScalar(-4.48817645568941e-12),
+    RealScalar(-1.12204411392298e-12),
+    RealScalar(-2.80511028480785e-13),
+    RealScalar(-7.01277571201985e-14),
+    RealScalar(-1.75319392800498e-14),
+    RealScalar(-4.38298482001247e-15),
+    RealScalar(-1.09574620500312e-15),
+    RealScalar(-2.73936551250781e-16),
+    RealScalar(-6.84841378126949e-17),
+    RealScalar(-1.71210344531737e-17),
+    RealScalar(-4.28025861329343e-18)
+  };
+
+  // m_minus_sin_2_PI_div_n_LUT[i] = -std::sin(2 * M_PI / std::pow(2,i));
+  const RealScalar m_minus_sin_2_PI_div_n_LUT[32] = {
+    RealScalar(0.0),
+    RealScalar(0.0),
+    RealScalar(-1.00000000000000e+00),
+    RealScalar(-7.07106781186547e-01),
+    RealScalar(-3.82683432365090e-01),
+    RealScalar(-1.95090322016128e-01),
+    RealScalar(-9.80171403295606e-02),
+    RealScalar(-4.90676743274180e-02),
+    RealScalar(-2.45412285229123e-02),
+    RealScalar(-1.22715382857199e-02),
+    RealScalar(-6.13588464915448e-03),
+    RealScalar(-3.06795676296598e-03),
+    RealScalar(-1.53398018628477e-03),
+    RealScalar(-7.66990318742704e-04),
+    RealScalar(-3.83495187571396e-04),
+    RealScalar(-1.91747597310703e-04),
+    RealScalar(-9.58737990959773e-05),
+    RealScalar(-4.79368996030669e-05),
+    RealScalar(-2.39684498084182e-05),
+    RealScalar(-1.19842249050697e-05),
+    RealScalar(-5.99211245264243e-06),
+    RealScalar(-2.99605622633466e-06),
+    RealScalar(-1.49802811316901e-06),
+    RealScalar(-7.49014056584716e-07),
+    RealScalar(-3.74507028292384e-07),
+    RealScalar(-1.87253514146195e-07),
+    RealScalar(-9.36267570730981e-08),
+    RealScalar(-4.68133785365491e-08),
+    RealScalar(-2.34066892682746e-08),
+    RealScalar(-1.17033446341373e-08),
+    RealScalar(-5.85167231706864e-09),
+    RealScalar(-2.92583615853432e-09)
+  };
+};
+
+}  // end namespace Eigen
+
+#endif  // EIGEN_HAS_CONSTEXPR
+
+
+#endif  // EIGEN_CXX11_TENSOR_TENSOR_FFT_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorDimensionList.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorDimensionList.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorDimensionList.h	(revision 3762)
@@ -0,0 +1,236 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2015 Benoit Steiner <benoit.steiner.goog@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CXX11_TENSOR_TENSOR_DIMENSION_LIST_H
+#define EIGEN_CXX11_TENSOR_TENSOR_DIMENSION_LIST_H
+
+namespace Eigen {
+
+/** \internal
+  *
+  * \class TensorDimensionList
+  * \ingroup CXX11_Tensor_Module
+  *
+  * \brief Special case of tensor index list used to list all the dimensions of a tensor of rank n.
+  *
+  * \sa Tensor
+  */
+
+template <typename Index, std::size_t Rank> struct DimensionList {
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+  const Index operator[] (const Index i) const { return i; }
+};
+
+namespace internal {
+
+template<typename Index, std::size_t Rank> struct array_size<DimensionList<Index, Rank> > {
+  static const size_t value = Rank;
+};
+template<typename Index, std::size_t Rank> struct array_size<const DimensionList<Index, Rank> > {
+  static const size_t value = Rank;
+};
+
+template<DenseIndex n, typename Index, std::size_t Rank> const Index array_get(DimensionList<Index, Rank>&) {
+  return n;
+}
+template<DenseIndex n, typename Index, std::size_t Rank> const Index array_get(const DimensionList<Index, Rank>&) {
+  return n;
+}
+
+
+#if EIGEN_HAS_CONSTEXPR
+template <typename Index, std::size_t Rank>
+struct index_known_statically_impl<DimensionList<Index, Rank> > {
+  EIGEN_DEVICE_FUNC static constexpr bool run(const DenseIndex) {
+    return true;
+  }
+};
+template <typename Index, std::size_t Rank>
+struct index_known_statically_impl<const DimensionList<Index, Rank> > {
+  EIGEN_DEVICE_FUNC static constexpr bool run(const DenseIndex) {
+    return true;
+  }
+};
+
+template <typename Index, std::size_t Rank>
+struct all_indices_known_statically_impl<DimensionList<Index, Rank> > {
+  EIGEN_DEVICE_FUNC static constexpr bool run() {
+    return true;
+  }
+};
+template <typename Index, std::size_t Rank>
+struct all_indices_known_statically_impl<const DimensionList<Index, Rank> > {
+  EIGEN_DEVICE_FUNC static constexpr bool run() {
+    return true;
+  }
+};
+
+template <typename Index, std::size_t Rank>
+struct indices_statically_known_to_increase_impl<DimensionList<Index, Rank> > {
+  EIGEN_DEVICE_FUNC static constexpr bool run() {
+    return true;
+  }
+};
+template <typename Index, std::size_t Rank>
+struct indices_statically_known_to_increase_impl<const DimensionList<Index, Rank> > {
+  EIGEN_DEVICE_FUNC static constexpr bool run() {
+    return true;
+  }
+};
+
+template <typename Index, std::size_t Rank>
+struct index_statically_eq_impl<DimensionList<Index, Rank> > {
+  static constexpr bool run(const DenseIndex i, const DenseIndex value) {
+    return i == value;
+  }
+};
+template <typename Index, std::size_t Rank>
+struct index_statically_eq_impl<const DimensionList<Index, Rank> > {
+  EIGEN_DEVICE_FUNC static constexpr bool run(const DenseIndex i, const DenseIndex value) {
+    return i == value;
+  }
+};
+
+template <typename Index, std::size_t Rank>
+struct index_statically_ne_impl<DimensionList<Index, Rank> > {
+  EIGEN_DEVICE_FUNC static constexpr bool run(const DenseIndex i, const DenseIndex value) {
+    return i != value;
+  }
+};
+template <typename Index, std::size_t Rank>
+struct index_statically_ne_impl<const DimensionList<Index, Rank> > {
+  static constexpr bool run(const DenseIndex i, const DenseIndex value) {
+    return i != value;
+  }
+};
+
+template <typename Index, std::size_t Rank>
+struct index_statically_gt_impl<DimensionList<Index, Rank> > {
+  EIGEN_DEVICE_FUNC static constexpr bool run(const DenseIndex i, const DenseIndex value) {
+    return i > value;
+  }
+};
+template <typename Index, std::size_t Rank>
+struct index_statically_gt_impl<const DimensionList<Index, Rank> > {
+  EIGEN_DEVICE_FUNC static constexpr bool run(const DenseIndex i, const DenseIndex value) {
+    return i > value;
+  }
+};
+
+template <typename Index, std::size_t Rank>
+struct index_statically_lt_impl<DimensionList<Index, Rank> > {
+  EIGEN_DEVICE_FUNC static constexpr bool run(const DenseIndex i, const DenseIndex value) {
+    return i < value;
+  }
+};
+template <typename Index, std::size_t Rank>
+struct index_statically_lt_impl<const DimensionList<Index, Rank> > {
+  EIGEN_DEVICE_FUNC static constexpr bool run(const DenseIndex i, const DenseIndex value) {
+    return i < value;
+  }
+};
+
+#else
+template <typename Index, std::size_t Rank>
+struct index_known_statically_impl<DimensionList<Index, Rank> > {
+  EIGEN_DEVICE_FUNC static EIGEN_ALWAYS_INLINE bool run(const DenseIndex) {
+    return true;
+  }
+};
+template <typename Index, std::size_t Rank>
+struct index_known_statically_impl<const DimensionList<Index, Rank> > {
+  EIGEN_DEVICE_FUNC static EIGEN_ALWAYS_INLINE bool run(const DenseIndex) {
+    return true;
+  }
+};
+
+template <typename Index, std::size_t Rank>
+struct all_indices_known_statically_impl<DimensionList<Index, Rank> > {
+  EIGEN_DEVICE_FUNC static EIGEN_ALWAYS_INLINE bool run() {
+    return true;
+  }
+};
+template <typename Index, std::size_t Rank>
+struct all_indices_known_statically_impl<const DimensionList<Index, Rank> > {
+  EIGEN_DEVICE_FUNC static EIGEN_ALWAYS_INLINE bool run() {
+    return true;
+  }
+};
+
+template <typename Index, std::size_t Rank>
+struct indices_statically_known_to_increase_impl<DimensionList<Index, Rank> > {
+  static EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE bool run() {
+    return true;
+  }
+};
+template <typename Index, std::size_t Rank>
+struct indices_statically_known_to_increase_impl<const DimensionList<Index, Rank> > {
+  static EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE bool run() {
+    return true;
+  }
+};
+
+template <typename Index, std::size_t Rank>
+struct index_statically_eq_impl<DimensionList<Index, Rank> > {
+  static EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE bool run(const DenseIndex, const DenseIndex) {
+    return false;
+  }
+};
+template <typename Index, std::size_t Rank>
+struct index_statically_eq_impl<const DimensionList<Index, Rank> > {
+  static EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE bool run(const DenseIndex, const DenseIndex) {
+    return false;
+  }
+};
+
+template <typename Index, std::size_t Rank>
+struct index_statically_ne_impl<DimensionList<Index, Rank> > {
+  static EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE bool run(const DenseIndex, const DenseIndex){
+    return false;
+  }
+};
+template <typename Index, std::size_t Rank>
+struct index_statically_ne_impl<const DimensionList<Index, Rank> > {
+  static EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE bool run(const DenseIndex, const DenseIndex) {
+    return false;
+  }
+};
+
+template <typename Index, std::size_t Rank>
+struct index_statically_gt_impl<DimensionList<Index, Rank> > {
+  static EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE bool run(const DenseIndex, const DenseIndex) {
+    return false;
+  }
+};
+template <typename Index, std::size_t Rank>
+struct index_statically_gt_impl<const DimensionList<Index, Rank> > {
+  static EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE bool run(const DenseIndex, const DenseIndex) {
+    return false;
+  }
+};
+
+template <typename Index, std::size_t Rank>
+struct index_statically_lt_impl<DimensionList<Index, Rank> > {
+  static EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE bool run(const DenseIndex, const DenseIndex) {
+    return false;
+  }
+};
+template <typename Index, std::size_t Rank>
+struct index_statically_lt_impl<const DimensionList<Index, Rank> > {
+  static EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE bool run(const DenseIndex, const DenseIndex) {
+    return false;
+  }
+};
+#endif
+
+}  // end namespace internal
+}  // end namespace Eigen
+
+
+#endif // EIGEN_CXX11_TENSOR_TENSOR_DIMENSION_LIST_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorSyclTuple.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorSyclTuple.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorSyclTuple.h	(revision 3762)
@@ -0,0 +1,237 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Mehdi Goli    Codeplay Software Ltd.
+// Ralph Potter  Codeplay Software Ltd.
+// Luke Iwanski  Codeplay Software Ltd.
+// Contact: <eigen@codeplay.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+/*****************************************************************
+ * TensroSyclTuple.h
+ *
+ * \brief:
+ *  Minimal implementation of std::tuple that can be used inside a SYCL kernel.
+ *
+*****************************************************************/
+
+#ifndef UNSUPPORTED_EIGEN_CXX11_SRC_TENSOR_TENSORSYCL_TUPLE_HPP
+#define UNSUPPORTED_EIGEN_CXX11_SRC_TENSOR_TENSORSYCL_TUPLE_HPP
+namespace utility {
+namespace tuple {
+/// \struct StaticIf
+/// \brief The StaticIf struct is used to statically choose the type based on the
+/// condition.
+template <bool, typename T = void> struct StaticIf;
+/// \brief specialisation of the \ref StaticIf when the condition is true
+template <typename T>
+struct StaticIf<true, T> {
+  typedef T type;
+};
+
+/// \struct Tuple
+/// \brief is a fixed-size collection of heterogeneous values
+/// \tparam Ts...	-	the types of the elements that the tuple stores.
+/// Empty list is supported.
+template <class... Ts>
+struct Tuple {};
+
+/// \brief specialisation of the \ref Tuple class when the tuple has at least
+/// one element.
+/// \tparam T : the type of the first element in the tuple.
+/// \tparam Ts... the rest of the elements in the tuple. Ts... can be empty.
+template <class T, class... Ts>
+struct Tuple<T, Ts...> {
+  Tuple(T t, Ts... ts) : head(t), tail(ts...) {}
+  T head;
+  Tuple<Ts...> tail;
+};
+
+///\ struct ElemTypeHolder
+/// \brief ElemTypeHolder class is used to specify the types of the
+/// elements inside the tuple
+/// \tparam size_t the number of elements inside the tuple
+/// \tparam class the tuple class
+template <size_t, class>
+struct ElemTypeHolder;
+
+/// \brief specialisation of the \ref ElemTypeHolder class when the number of
+/// elements inside the tuple is 1
+template <class T, class... Ts>
+struct ElemTypeHolder<0, Tuple<T, Ts...> > {
+  typedef T type;
+};
+
+/// \brief specialisation of the \ref ElemTypeHolder class when the number of
+/// elements inside the tuple is bigger than 1. It recursively calls itself to
+/// detect the type of each element in the tuple
+/// \tparam T : the type of the first element in the tuple.
+/// \tparam Ts... the rest of the elements in the tuple. Ts... can be empty.
+/// \tparam K is the Kth element in the tuple
+template <size_t k, class T, class... Ts>
+struct ElemTypeHolder<k, Tuple<T, Ts...> > {
+  typedef typename ElemTypeHolder<k - 1, Tuple<Ts...> >::type type;
+};
+
+/// get
+/// \brief Extracts the first element from the tuple.
+/// K=0 represents the first element of the tuple. The tuple cannot be empty.
+/// \tparam Ts... are the type of the elements in the tuple.
+/// \param t is the tuple whose contents to extract
+/// \return  typename ElemTypeHolder<0, Tuple<Ts...> >::type &>::type
+
+#define TERMINATE_CONDS_TUPLE_GET(CVQual) \
+template <size_t k, class... Ts> \
+typename StaticIf<k == 0, CVQual typename ElemTypeHolder<0, Tuple<Ts...> >::type &>::type \
+get(CVQual Tuple<Ts...> &t) { \
+  static_assert(sizeof...(Ts)!=0, "The requseted value is bigger than the size of the tuple"); \
+  return t.head; \
+}
+
+TERMINATE_CONDS_TUPLE_GET(const)
+TERMINATE_CONDS_TUPLE_GET()
+#undef TERMINATE_CONDS_TUPLE_GET
+/// get
+/// \brief Extracts the Kth element from the tuple.
+///\tparam K is an integer value in [0,sizeof...(Types)).
+/// \tparam T is the (sizeof...(Types) -(K+1)) element in the tuple
+/// \tparam Ts... are the type of the elements  in the tuple.
+/// \param t is the tuple whose contents to extract
+/// \return  typename ElemTypeHolder<K, Tuple<Ts...> >::type &>::type
+#define RECURSIVE_TUPLE_GET(CVQual) \
+template <size_t k, class T, class... Ts> \
+typename StaticIf<k != 0, CVQual typename ElemTypeHolder<k, Tuple<T, Ts...> >::type &>::type \
+get(CVQual Tuple<T, Ts...> &t) { \
+  return utility::tuple::get<k - 1>(t.tail); \
+}
+RECURSIVE_TUPLE_GET(const)
+RECURSIVE_TUPLE_GET()
+#undef RECURSIVE_TUPLE_GET
+
+/// make_tuple
+/// \brief Creates a tuple object, deducing the target type from the types of
+/// arguments.
+/// \tparam Args the type of the arguments to construct the tuple from
+/// \param args zero or more arguments to construct the tuple from
+/// \return Tuple<Args...>
+template <typename... Args>
+Tuple<Args...> make_tuple(Args... args) {
+  return Tuple<Args...>(args...);
+}
+
+/// size
+/// \brief Provides access to the number of elements in a tuple as a
+/// compile-time constant expression.
+/// \tparam Args the type of the arguments to construct the tuple from
+/// \return size_t
+template <typename... Args>
+static constexpr size_t size(Tuple<Args...> &) {
+  return sizeof...(Args);
+}
+
+/// \struct IndexList
+/// \brief Creates a list of index from the elements in the tuple
+/// \tparam Is... a list of index from [0 to sizeof...(tuple elements))
+template <size_t... Is>
+struct IndexList {};
+
+/// \struct RangeBuilder
+/// \brief Collects internal details for generating index ranges [MIN, MAX)
+/// Declare primary template for index range builder
+/// \tparam MIN is the starting index in the tuple
+/// \tparam N represents sizeof..(elemens)- sizeof...(Is)
+/// \tparam Is... are the list of generated index so far
+template <size_t MIN, size_t N, size_t... Is>
+struct RangeBuilder;
+
+// FIXME Doxygen has problems with recursive inheritance
+#ifndef EIGEN_PARSED_BY_DOXYGEN
+/// \brief base Step: Specialisation of the \ref RangeBuilder when the
+/// MIN==MAX. In this case the Is... is [0 to sizeof...(tuple elements))
+/// \tparam MIN is the starting index of the tuple
+/// \tparam Is is [0 to sizeof...(tuple elements))
+template <size_t MIN, size_t... Is>
+struct RangeBuilder<MIN, MIN, Is...> {
+  typedef IndexList<Is...> type;
+};
+
+/// Induction step: Specialisation of the RangeBuilder class when N!=MIN
+/// in this case we are recursively subtracting N by one and adding one
+/// index to Is... list until MIN==N
+/// \tparam MIN is the starting index in the tuple
+/// \tparam N represents sizeof..(elemens)- sizeof...(Is)
+/// \tparam Is... are the list of generated index so far
+template <size_t MIN, size_t N, size_t... Is>
+struct RangeBuilder : public RangeBuilder<MIN, N - 1, N - 1, Is...> {};
+#endif // EIGEN_PARSED_BY_DOXYGEN
+
+/// \brief IndexRange that returns a [MIN, MAX) index range
+/// \tparam MIN is the starting index in the tuple
+/// \tparam MAX is the size of the tuple
+template <size_t MIN, size_t MAX>
+struct IndexRange: RangeBuilder<MIN, MAX>::type {};
+
+/// append_base
+/// \brief unpacking the elements of the input tuple t and creating a new tuple
+/// by adding element a at the end of it.
+///\tparam Args... the type of the elements inside the tuple t
+/// \tparam T the type of the new element going to be added at the end of tuple
+/// \tparam I... is the list of index from [0 to sizeof...(t))
+/// \param t the tuple on which we want to append a.
+/// \param a the new elements going to be added to the tuple
+/// \return Tuple<Args..., T>
+template <typename... Args, typename T, size_t... I>
+Tuple<Args..., T> append_base(Tuple<Args...> t, T a,IndexList<I...>) {
+  return utility::tuple::make_tuple(get<I>(t)..., a);
+}
+
+/// append
+/// \brief the deduction function for \ref append_base that automatically
+/// generate the \ref IndexRange
+///\tparam Args... the type of the elements inside the tuple t
+/// \tparam T the type of the new element going to be added at the end of tuple
+/// \param t the tuple on which we want to append a.
+/// \param a the new elements going to be added to the tuple
+/// \return Tuple<Args..., T>
+template <typename... Args, typename T>
+Tuple<Args..., T> append(Tuple<Args...> t, T a) {
+  return utility::tuple::append_base(t, a,  IndexRange<0, sizeof...(Args)>());
+}
+
+/// append_base
+/// \brief This is a specialisation of \ref append_base when we want to
+/// concatenate
+/// tuple t2 at the end of the tuple t1. Here we unpack both tuples, generate the
+/// IndexRange for each of them and create an output tuple T that contains both
+/// elements of t1 and t2.
+///\tparam Args1... the type of the elements inside the tuple t1
+///\tparam Args2... the type of the elements inside the tuple t2
+/// \tparam I1... is the list of index from [0 to sizeof...(t1))
+/// \tparam I2... is the list of index from [0 to sizeof...(t2))
+/// \param t1 is the tuple on which we want to append t2.
+/// \param t2 is the tuple that is going to be added on t1.
+/// \return Tuple<Args1..., Args2...>
+template <typename... Args1, typename... Args2, size_t... I1, size_t... I2>
+Tuple<Args1..., Args2...> append_base(Tuple<Args1...> t1, Tuple<Args2...> t2, IndexList<I1...>, IndexList<I2...>) {
+  return utility::tuple::make_tuple(get<I1>(t1)...,get<I2>(t2)...);
+}
+
+/// append
+/// \brief deduction function for \ref append_base when we are appending tuple
+/// t1 by tuple t2. In this case the \ref IndexRange for both tuple are
+/// automatically generated.
+///\tparam Args1... the type of the elements inside the tuple t1
+///\tparam Args2... the type of the elements inside the tuple t2
+/// \param t1 is the tuple on which we want to append t2.
+/// \param t2 is the tuple that is going to be added on t1.
+/// \return Tuple<Args1..., Args2...>
+template <typename... Args1, typename... Args2>
+Tuple<Args1..., Args2...> append(Tuple<Args1...> t1,Tuple<Args2...> t2) {
+  return utility::tuple::append_base(t1, t2, IndexRange<0, sizeof...(Args1)>(), IndexRange<0, sizeof...(Args2)>());
+}
+}  // tuple
+}  // utility
+#endif  // UNSUPPORTED_EIGEN_CXX11_SRC_TENSOR_TENSORSYCL_TUPLE_HPP
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorMacros.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorMacros.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorMacros.h	(revision 3762)
@@ -0,0 +1,54 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2015 Benoit Steiner <benoit.steiner.goog@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CXX11_TENSOR_TENSOR_META_MACROS_H
+#define EIGEN_CXX11_TENSOR_TENSOR_META_MACROS_H
+
+
+/** use this macro in sfinae selection in templated functions
+ *
+ *   template<typename T,
+ *            typename std::enable_if< isBanana<T>::value , int >::type = 0
+ *   >
+ *   void foo(){}
+ *
+ *   becomes =>
+ *
+ *   template<typename TopoType,
+ *           SFINAE_ENABLE_IF( isBanana<T>::value )
+ *   >
+ *   void foo(){}
+ */
+
+// SFINAE requires variadic templates
+#ifndef __CUDACC__
+#if EIGEN_HAS_VARIADIC_TEMPLATES
+  // SFINAE doesn't work for gcc <= 4.7
+  #ifdef EIGEN_COMP_GNUC
+    #if EIGEN_GNUC_AT_LEAST(4,8)
+      #define EIGEN_HAS_SFINAE
+    #endif
+  #else
+    #define EIGEN_HAS_SFINAE
+  #endif
+#endif
+#endif
+
+#define EIGEN_SFINAE_ENABLE_IF( __condition__ ) \
+    typename internal::enable_if< ( __condition__ ) , int >::type = 0
+
+
+#if EIGEN_HAS_CONSTEXPR
+#define EIGEN_CONSTEXPR constexpr
+#else
+#define EIGEN_CONSTEXPR
+#endif
+
+
+#endif
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorConcatenation.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorConcatenation.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorConcatenation.h	(revision 3762)
@@ -0,0 +1,361 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2014 Benoit Steiner <benoit.steiner.goog@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CXX11_TENSOR_TENSOR_CONCATENATION_H
+#define EIGEN_CXX11_TENSOR_TENSOR_CONCATENATION_H
+
+namespace Eigen {
+
+/** \class TensorConcatenationOp
+  * \ingroup CXX11_Tensor_Module
+  *
+  * \brief Tensor concatenation class.
+  *
+  *
+  */
+namespace internal {
+template<typename Axis, typename LhsXprType, typename RhsXprType>
+struct traits<TensorConcatenationOp<Axis, LhsXprType, RhsXprType> >
+{
+  // Type promotion to handle the case where the types of the lhs and the rhs are different.
+  typedef typename promote_storage_type<typename LhsXprType::Scalar,
+                                        typename RhsXprType::Scalar>::ret Scalar;
+  typedef typename promote_storage_type<typename traits<LhsXprType>::StorageKind,
+                                        typename traits<RhsXprType>::StorageKind>::ret StorageKind;
+  typedef typename promote_index_type<typename traits<LhsXprType>::Index,
+                                      typename traits<RhsXprType>::Index>::type Index;
+  typedef typename LhsXprType::Nested LhsNested;
+  typedef typename RhsXprType::Nested RhsNested;
+  typedef typename remove_reference<LhsNested>::type _LhsNested;
+  typedef typename remove_reference<RhsNested>::type _RhsNested;
+  static const int NumDimensions = traits<LhsXprType>::NumDimensions;
+  static const int Layout = traits<LhsXprType>::Layout;
+  enum { Flags = 0 };
+};
+
+template<typename Axis, typename LhsXprType, typename RhsXprType>
+struct eval<TensorConcatenationOp<Axis, LhsXprType, RhsXprType>, Eigen::Dense>
+{
+  typedef const TensorConcatenationOp<Axis, LhsXprType, RhsXprType>& type;
+};
+
+template<typename Axis, typename LhsXprType, typename RhsXprType>
+struct nested<TensorConcatenationOp<Axis, LhsXprType, RhsXprType>, 1, typename eval<TensorConcatenationOp<Axis, LhsXprType, RhsXprType> >::type>
+{
+  typedef TensorConcatenationOp<Axis, LhsXprType, RhsXprType> type;
+};
+
+}  // end namespace internal
+
+
+template<typename Axis, typename LhsXprType, typename RhsXprType>
+class TensorConcatenationOp : public TensorBase<TensorConcatenationOp<Axis, LhsXprType, RhsXprType>, WriteAccessors>
+{
+  public:
+    typedef typename internal::traits<TensorConcatenationOp>::Scalar Scalar;
+    typedef typename internal::traits<TensorConcatenationOp>::StorageKind StorageKind;
+    typedef typename internal::traits<TensorConcatenationOp>::Index Index;
+    typedef typename internal::nested<TensorConcatenationOp>::type Nested;
+    typedef typename internal::promote_storage_type<typename LhsXprType::CoeffReturnType,
+                                                    typename RhsXprType::CoeffReturnType>::ret CoeffReturnType;
+    typedef typename NumTraits<Scalar>::Real RealScalar;
+
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorConcatenationOp(const LhsXprType& lhs, const RhsXprType& rhs, Axis axis)
+        : m_lhs_xpr(lhs), m_rhs_xpr(rhs), m_axis(axis) {}
+
+    EIGEN_DEVICE_FUNC
+    const typename internal::remove_all<typename LhsXprType::Nested>::type&
+    lhsExpression() const { return m_lhs_xpr; }
+
+    EIGEN_DEVICE_FUNC
+    const typename internal::remove_all<typename RhsXprType::Nested>::type&
+    rhsExpression() const { return m_rhs_xpr; }
+
+    EIGEN_DEVICE_FUNC const Axis& axis() const { return m_axis; }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE TensorConcatenationOp& operator = (const TensorConcatenationOp& other)
+    {
+      typedef TensorAssignOp<TensorConcatenationOp, const TensorConcatenationOp> Assign;
+      Assign assign(*this, other);
+      internal::TensorExecutor<const Assign, DefaultDevice>::run(assign, DefaultDevice());
+      return *this;
+    }
+
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE TensorConcatenationOp& operator = (const OtherDerived& other)
+    {
+      typedef TensorAssignOp<TensorConcatenationOp, const OtherDerived> Assign;
+      Assign assign(*this, other);
+      internal::TensorExecutor<const Assign, DefaultDevice>::run(assign, DefaultDevice());
+      return *this;
+    }
+
+  protected:
+    typename LhsXprType::Nested m_lhs_xpr;
+    typename RhsXprType::Nested m_rhs_xpr;
+    const Axis m_axis;
+};
+
+
+// Eval as rvalue
+template<typename Axis, typename LeftArgType, typename RightArgType, typename Device>
+struct TensorEvaluator<const TensorConcatenationOp<Axis, LeftArgType, RightArgType>, Device>
+{
+  typedef TensorConcatenationOp<Axis, LeftArgType, RightArgType> XprType;
+  typedef typename XprType::Index Index;
+  static const int NumDims = internal::array_size<typename TensorEvaluator<LeftArgType, Device>::Dimensions>::value;
+  static const int RightNumDims = internal::array_size<typename TensorEvaluator<RightArgType, Device>::Dimensions>::value;
+  typedef DSizes<Index, NumDims> Dimensions;
+  typedef typename XprType::Scalar Scalar;
+  typedef typename XprType::CoeffReturnType CoeffReturnType;
+  typedef typename PacketType<CoeffReturnType, Device>::type PacketReturnType;
+  enum {
+    IsAligned = false,
+    PacketAccess = TensorEvaluator<LeftArgType, Device>::PacketAccess & TensorEvaluator<RightArgType, Device>::PacketAccess,
+    Layout = TensorEvaluator<LeftArgType, Device>::Layout,
+    RawAccess = false
+  };
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorEvaluator(const XprType& op, const Device& device)
+    : m_leftImpl(op.lhsExpression(), device), m_rightImpl(op.rhsExpression(), device), m_axis(op.axis())
+  {
+    EIGEN_STATIC_ASSERT((static_cast<int>(TensorEvaluator<LeftArgType, Device>::Layout) == static_cast<int>(TensorEvaluator<RightArgType, Device>::Layout) || NumDims == 1), YOU_MADE_A_PROGRAMMING_MISTAKE);
+    EIGEN_STATIC_ASSERT((NumDims == RightNumDims), YOU_MADE_A_PROGRAMMING_MISTAKE);
+    EIGEN_STATIC_ASSERT((NumDims > 0), YOU_MADE_A_PROGRAMMING_MISTAKE);
+
+    eigen_assert(0 <= m_axis && m_axis < NumDims);
+    const Dimensions& lhs_dims = m_leftImpl.dimensions();
+    const Dimensions& rhs_dims = m_rightImpl.dimensions();
+    {
+      int i = 0;
+      for (; i < m_axis; ++i) {
+        eigen_assert(lhs_dims[i] > 0);
+        eigen_assert(lhs_dims[i] == rhs_dims[i]);
+        m_dimensions[i] = lhs_dims[i];
+      }
+      eigen_assert(lhs_dims[i] > 0);  // Now i == m_axis.
+      eigen_assert(rhs_dims[i] > 0);
+      m_dimensions[i] = lhs_dims[i] + rhs_dims[i];
+      for (++i; i < NumDims; ++i) {
+        eigen_assert(lhs_dims[i] > 0);
+        eigen_assert(lhs_dims[i] == rhs_dims[i]);
+        m_dimensions[i] = lhs_dims[i];
+      }
+    }
+
+    if (static_cast<int>(Layout) == static_cast<int>(ColMajor)) {
+      m_leftStrides[0] = 1;
+      m_rightStrides[0] = 1;
+      m_outputStrides[0] = 1;
+
+      for (int j = 1; j < NumDims; ++j) {
+        m_leftStrides[j] = m_leftStrides[j-1] * lhs_dims[j-1];
+        m_rightStrides[j] = m_rightStrides[j-1] * rhs_dims[j-1];
+        m_outputStrides[j] = m_outputStrides[j-1] * m_dimensions[j-1];
+      }
+    } else {
+      m_leftStrides[NumDims - 1] = 1;
+      m_rightStrides[NumDims - 1] = 1;
+      m_outputStrides[NumDims - 1] = 1;
+
+      for (int j = NumDims - 2; j >= 0; --j) {
+        m_leftStrides[j] = m_leftStrides[j+1] * lhs_dims[j+1];
+        m_rightStrides[j] = m_rightStrides[j+1] * rhs_dims[j+1];
+        m_outputStrides[j] = m_outputStrides[j+1] * m_dimensions[j+1];
+      }
+    }
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Dimensions& dimensions() const { return m_dimensions; }
+
+  // TODO(phli): Add short-circuit memcpy evaluation if underlying data are linear?
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool evalSubExprsIfNeeded(Scalar* /*data*/)
+  {
+    m_leftImpl.evalSubExprsIfNeeded(NULL);
+    m_rightImpl.evalSubExprsIfNeeded(NULL);
+    return true;
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void cleanup()
+  {
+    m_leftImpl.cleanup();
+    m_rightImpl.cleanup();
+  }
+
+  // TODO(phli): attempt to speed this up. The integer divisions and modulo are slow.
+  // See CL/76180724 comments for more ideas.
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType coeff(Index index) const
+  {
+    // Collect dimension-wise indices (subs).
+    array<Index, NumDims> subs;
+    if (static_cast<int>(Layout) == static_cast<int>(ColMajor)) {
+      for (int i = NumDims - 1; i > 0; --i) {
+        subs[i] = index / m_outputStrides[i];
+        index -= subs[i] * m_outputStrides[i];
+      }
+      subs[0] = index;
+    } else {
+      for (int i = 0; i < NumDims - 1; ++i) {
+        subs[i] = index / m_outputStrides[i];
+        index -= subs[i] * m_outputStrides[i];
+      }
+      subs[NumDims - 1] = index;
+    }
+
+    const Dimensions& left_dims = m_leftImpl.dimensions();
+    if (subs[m_axis] < left_dims[m_axis]) {
+      Index left_index;
+      if (static_cast<int>(Layout) == static_cast<int>(ColMajor)) {
+        left_index = subs[0];
+        for (int i = 1; i < NumDims; ++i) {
+          left_index += (subs[i] % left_dims[i]) * m_leftStrides[i];
+        }
+      } else {
+        left_index = subs[NumDims - 1];
+        for (int i = NumDims - 2; i >= 0; --i) {
+          left_index += (subs[i] % left_dims[i]) * m_leftStrides[i];
+        }
+      }
+      return m_leftImpl.coeff(left_index);
+    } else {
+      subs[m_axis] -= left_dims[m_axis];
+      const Dimensions& right_dims = m_rightImpl.dimensions();
+      Index right_index;
+      if (static_cast<int>(Layout) == static_cast<int>(ColMajor)) {
+        right_index = subs[0];
+        for (int i = 1; i < NumDims; ++i) {
+          right_index += (subs[i] % right_dims[i]) * m_rightStrides[i];
+        }
+      } else {
+        right_index = subs[NumDims - 1];
+        for (int i = NumDims - 2; i >= 0; --i) {
+          right_index += (subs[i] % right_dims[i]) * m_rightStrides[i];
+        }
+      }
+      return m_rightImpl.coeff(right_index);
+    }
+  }
+
+  // TODO(phli): Add a real vectorization.
+  template<int LoadMode>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketReturnType packet(Index index) const
+  {
+    const int packetSize = internal::unpacket_traits<PacketReturnType>::size;
+    EIGEN_STATIC_ASSERT((packetSize > 1), YOU_MADE_A_PROGRAMMING_MISTAKE)
+    eigen_assert(index + packetSize - 1 < dimensions().TotalSize());
+
+    EIGEN_ALIGN_MAX CoeffReturnType values[packetSize];
+    for (int i = 0; i < packetSize; ++i) {
+      values[i] = coeff(index+i);
+    }
+    PacketReturnType rslt = internal::pload<PacketReturnType>(values);
+    return rslt;
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorOpCost
+  costPerCoeff(bool vectorized) const {
+    const double compute_cost = NumDims * (2 * TensorOpCost::AddCost<Index>() +
+                                           2 * TensorOpCost::MulCost<Index>() +
+                                           TensorOpCost::DivCost<Index>() +
+                                           TensorOpCost::ModCost<Index>());
+    const double lhs_size = m_leftImpl.dimensions().TotalSize();
+    const double rhs_size = m_rightImpl.dimensions().TotalSize();
+    return (lhs_size / (lhs_size + rhs_size)) *
+               m_leftImpl.costPerCoeff(vectorized) +
+           (rhs_size / (lhs_size + rhs_size)) *
+               m_rightImpl.costPerCoeff(vectorized) +
+           TensorOpCost(0, 0, compute_cost);
+  }
+
+  EIGEN_DEVICE_FUNC Scalar* data() const { return NULL; }
+
+  protected:
+    Dimensions m_dimensions;
+    array<Index, NumDims> m_outputStrides;
+    array<Index, NumDims> m_leftStrides;
+    array<Index, NumDims> m_rightStrides;
+    TensorEvaluator<LeftArgType, Device> m_leftImpl;
+    TensorEvaluator<RightArgType, Device> m_rightImpl;
+    const Axis m_axis;
+};
+
+// Eval as lvalue
+template<typename Axis, typename LeftArgType, typename RightArgType, typename Device>
+  struct TensorEvaluator<TensorConcatenationOp<Axis, LeftArgType, RightArgType>, Device>
+  : public TensorEvaluator<const TensorConcatenationOp<Axis, LeftArgType, RightArgType>, Device>
+{
+  typedef TensorEvaluator<const TensorConcatenationOp<Axis, LeftArgType, RightArgType>, Device> Base;
+  typedef TensorConcatenationOp<Axis, LeftArgType, RightArgType> XprType;
+  typedef typename Base::Dimensions Dimensions;
+  enum {
+    IsAligned = false,
+    PacketAccess = TensorEvaluator<LeftArgType, Device>::PacketAccess & TensorEvaluator<RightArgType, Device>::PacketAccess,
+    Layout = TensorEvaluator<LeftArgType, Device>::Layout,
+    RawAccess = false
+  };
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorEvaluator(XprType& op, const Device& device)
+    : Base(op, device)
+  {
+    EIGEN_STATIC_ASSERT((static_cast<int>(Layout) == static_cast<int>(ColMajor)), YOU_MADE_A_PROGRAMMING_MISTAKE);
+  }
+
+  typedef typename XprType::Index Index;
+  typedef typename XprType::Scalar Scalar;
+  typedef typename XprType::CoeffReturnType CoeffReturnType;
+  typedef typename PacketType<CoeffReturnType, Device>::type PacketReturnType;
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType& coeffRef(Index index)
+  {
+    // Collect dimension-wise indices (subs).
+    array<Index, Base::NumDims> subs;
+    for (int i = Base::NumDims - 1; i > 0; --i) {
+      subs[i] = index / this->m_outputStrides[i];
+      index -= subs[i] * this->m_outputStrides[i];
+    }
+    subs[0] = index;
+
+    const Dimensions& left_dims = this->m_leftImpl.dimensions();
+    if (subs[this->m_axis] < left_dims[this->m_axis]) {
+      Index left_index = subs[0];
+      for (int i = 1; i < Base::NumDims; ++i) {
+        left_index += (subs[i] % left_dims[i]) * this->m_leftStrides[i];
+      }
+      return this->m_leftImpl.coeffRef(left_index);
+    } else {
+      subs[this->m_axis] -= left_dims[this->m_axis];
+      const Dimensions& right_dims = this->m_rightImpl.dimensions();
+      Index right_index = subs[0];
+      for (int i = 1; i < Base::NumDims; ++i) {
+        right_index += (subs[i] % right_dims[i]) * this->m_rightStrides[i];
+      }
+      return this->m_rightImpl.coeffRef(right_index);
+    }
+  }
+
+  template <int StoreMode> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  void writePacket(Index index, const PacketReturnType& x)
+  {
+    const int packetSize = internal::unpacket_traits<PacketReturnType>::size;
+    EIGEN_STATIC_ASSERT((packetSize > 1), YOU_MADE_A_PROGRAMMING_MISTAKE)
+    eigen_assert(index + packetSize - 1 < this->dimensions().TotalSize());
+
+    EIGEN_ALIGN_MAX CoeffReturnType values[packetSize];
+    internal::pstore<CoeffReturnType, PacketReturnType>(values, x);
+    for (int i = 0; i < packetSize; ++i) {
+      coeffRef(index+i) = values[i];
+    }
+  }
+};
+
+} // end namespace Eigen
+
+#endif // EIGEN_CXX11_TENSOR_TENSOR_CONCATENATION_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorSyclExtractAccessor.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorSyclExtractAccessor.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorSyclExtractAccessor.h	(revision 3762)
@@ -0,0 +1,204 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Mehdi Goli    Codeplay Software Ltd.
+// Ralph Potter  Codeplay Software Ltd.
+// Luke Iwanski  Codeplay Software Ltd.
+// Contact: <eigen@codeplay.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+/*****************************************************************
+ * TensorSyclExtractAccessor.h
+ *
+ * \brief:
+ * ExtractAccessor takes Expression placeHolder expression and the tuple of sycl
+ * buffers as an input. Using pre-order tree traversal, ExtractAccessor
+ * recursively calls itself for its children in the expression tree. The
+ * leaf node in the PlaceHolder expression is nothing but a container preserving
+ * the order of the actual data in the tuple of sycl buffer. By invoking the
+ * extract accessor for the PlaceHolder<N>, an accessor is created for the Nth
+ * buffer in the tuple of buffers. This accessor is then added as an Nth
+ * element in the tuple of accessors. In this case we preserve the order of data
+ * in the expression tree.
+ *
+ * This is the specialisation of extract accessor method for different operation
+ * type in the PlaceHolder expression.
+ *
+*****************************************************************/
+
+#ifndef UNSUPPORTED_EIGEN_CXX11_SRC_TENSOR_TENSORSYCL_EXTRACT_ACCESSOR_HPP
+#define UNSUPPORTED_EIGEN_CXX11_SRC_TENSOR_TENSORSYCL_EXTRACT_ACCESSOR_HPP
+
+namespace Eigen {
+namespace TensorSycl {
+namespace internal {
+/// struct ExtractAccessor: Extract Accessor Class is used to extract the
+/// accessor from a buffer.
+/// Depending on the type of the leaf node we can get a read accessor or a
+/// read_write accessor
+template <typename Evaluator>
+struct ExtractAccessor;
+
+struct AccessorConstructor{
+  template<typename Arg> static inline auto getTuple(cl::sycl::handler& cgh, Arg eval)
+  -> decltype(ExtractAccessor<Arg>::getTuple(cgh, eval)) {
+  return ExtractAccessor<Arg>::getTuple(cgh, eval);
+  }
+
+  template<typename Arg1, typename Arg2> static inline auto getTuple(cl::sycl::handler& cgh, Arg1 eval1, Arg2 eval2)
+  -> decltype(utility::tuple::append(ExtractAccessor<Arg1>::getTuple(cgh, eval1), ExtractAccessor<Arg2>::getTuple(cgh, eval2))) {
+    return utility::tuple::append(ExtractAccessor<Arg1>::getTuple(cgh, eval1), ExtractAccessor<Arg2>::getTuple(cgh, eval2));
+  }
+  template<typename Arg1, typename Arg2, typename Arg3>	static inline auto getTuple(cl::sycl::handler& cgh, Arg1 eval1 , Arg2 eval2 , Arg3 eval3)
+  -> decltype(utility::tuple::append(ExtractAccessor<Arg1>::getTuple(cgh, eval1),utility::tuple::append(ExtractAccessor<Arg2>::getTuple(cgh, eval2), ExtractAccessor<Arg3>::getTuple(cgh, eval3)))) {
+    return utility::tuple::append(ExtractAccessor<Arg1>::getTuple(cgh, eval1),utility::tuple::append(ExtractAccessor<Arg2>::getTuple(cgh, eval2), ExtractAccessor<Arg3>::getTuple(cgh, eval3)));
+  }
+  template< cl::sycl::access::mode AcM, typename Arg> static inline auto getAccessor(cl::sycl::handler& cgh, Arg eval)
+  -> decltype(utility::tuple::make_tuple( eval.device().template get_sycl_accessor<AcM,
+  typename Eigen::internal::remove_all<typename Arg::CoeffReturnType>::type>(eval.dimensions().TotalSize(), cgh,eval.data()))){
+    return utility::tuple::make_tuple(eval.device().template get_sycl_accessor<AcM, typename Eigen::internal::remove_all<typename Arg::CoeffReturnType>::type>(eval.dimensions().TotalSize(), cgh,eval.data()));
+  }
+};
+
+/// specialisation of the \ref ExtractAccessor struct when the node type is
+/// const TensorCwiseNullaryOp, const TensorCwiseUnaryOp and const TensorBroadcastingOp
+template <template<class, class> class UnaryCategory, typename OP, typename RHSExpr, typename Dev>
+struct ExtractAccessor<TensorEvaluator<const UnaryCategory<OP, RHSExpr>, Dev> > {
+  static inline auto getTuple(cl::sycl::handler& cgh, const TensorEvaluator<const UnaryCategory<OP, RHSExpr>, Dev> eval)
+  -> decltype(AccessorConstructor::getTuple(cgh, eval.impl())){
+    return AccessorConstructor::getTuple(cgh, eval.impl());
+  }
+};
+
+/// specialisation of the \ref ExtractAccessor struct when the node type is TensorCwiseNullaryOp,  TensorCwiseUnaryOp and  TensorBroadcastingOp
+template <template<class, class> class UnaryCategory, typename OP, typename RHSExpr, typename Dev>
+struct ExtractAccessor<TensorEvaluator<UnaryCategory<OP, RHSExpr>, Dev> >
+: ExtractAccessor<TensorEvaluator<const UnaryCategory<OP, RHSExpr>, Dev> > {};
+
+/// specialisation of the \ref ExtractAccessor struct when the node type is const TensorCwiseBinaryOp
+template <template<class, class, class> class BinaryCategory, typename OP,  typename LHSExpr, typename RHSExpr, typename Dev>
+struct ExtractAccessor<TensorEvaluator<const BinaryCategory<OP, LHSExpr, RHSExpr>, Dev> > {
+  static inline auto getTuple(cl::sycl::handler& cgh, const TensorEvaluator<const BinaryCategory<OP, LHSExpr, RHSExpr>, Dev> eval)
+  -> decltype(AccessorConstructor::getTuple(cgh, eval.left_impl(), eval.right_impl())){
+    return AccessorConstructor::getTuple(cgh, eval.left_impl(), eval.right_impl());
+  }
+};
+/// specialisation of the \ref ExtractAccessor struct when the node type is TensorCwiseBinaryOp
+template <template<class, class, class> class BinaryCategory, typename OP,  typename LHSExpr, typename RHSExpr, typename Dev>
+struct ExtractAccessor<TensorEvaluator<BinaryCategory<OP, LHSExpr, RHSExpr>, Dev> >
+: ExtractAccessor<TensorEvaluator<const BinaryCategory<OP, LHSExpr, RHSExpr>, Dev> >{};
+
+/// specialisation of the \ref ExtractAccessor struct when the node type is
+/// const TensorCwiseTernaryOp
+template <template<class, class, class, class> class TernaryCategory, typename OP, typename Arg1Expr, typename Arg2Expr, typename Arg3Expr, typename Dev>
+struct ExtractAccessor<TensorEvaluator<const TernaryCategory<OP, Arg1Expr, Arg2Expr, Arg3Expr>, Dev> > {
+  static inline auto getTuple(cl::sycl::handler& cgh, const TensorEvaluator<const TernaryCategory<OP, Arg1Expr, Arg2Expr, Arg3Expr>, Dev> eval)
+  -> decltype(AccessorConstructor::getTuple(cgh, eval.arg1Impl(), eval.arg2Impl(), eval.arg3Impl())){
+    return AccessorConstructor::getTuple(cgh, eval.arg1Impl(), eval.arg2Impl(), eval.arg3Impl());
+  }
+};
+
+/// specialisation of the \ref ExtractAccessor struct when the node type is TensorCwiseTernaryOp
+template <template<class, class, class, class> class TernaryCategory, typename OP, typename Arg1Expr, typename Arg2Expr, typename Arg3Expr, typename Dev>
+struct ExtractAccessor<TensorEvaluator<TernaryCategory<OP, Arg1Expr, Arg2Expr, Arg3Expr>, Dev> >
+: ExtractAccessor<TensorEvaluator<const TernaryCategory<OP, Arg1Expr, Arg2Expr, Arg3Expr>, Dev> >{};
+
+/// specialisation of the \ref ExtractAccessor struct when the node type is
+/// const TensorCwiseSelectOp. This is a special case where there is no OP
+template <typename IfExpr, typename ThenExpr, typename ElseExpr, typename Dev>
+struct ExtractAccessor<TensorEvaluator<const TensorSelectOp<IfExpr, ThenExpr, ElseExpr>, Dev> > {
+  static inline auto getTuple(cl::sycl::handler& cgh, const TensorEvaluator<const TensorSelectOp<IfExpr, ThenExpr, ElseExpr>, Dev> eval)
+  -> decltype(AccessorConstructor::getTuple(cgh, eval.cond_impl(), eval.then_impl(), eval.else_impl())){
+    return AccessorConstructor::getTuple(cgh, eval.cond_impl(), eval.then_impl(), eval.else_impl());
+  }
+};
+
+/// specialisation of the \ref ExtractAccessor struct when the node type is
+/// TensorCwiseSelectOp. This is a special case where there is no OP
+template <typename IfExpr, typename ThenExpr, typename ElseExpr, typename Dev>
+struct ExtractAccessor<TensorEvaluator<TensorSelectOp<IfExpr, ThenExpr, ElseExpr>, Dev> >
+: ExtractAccessor<TensorEvaluator<const TensorSelectOp<IfExpr, ThenExpr, ElseExpr>, Dev> >{};
+
+/// specialisation of the \ref ExtractAccessor struct when the node type is const TensorAssignOp
+template <typename LHSExpr, typename RHSExpr, typename Dev>
+struct ExtractAccessor<TensorEvaluator<const TensorAssignOp<LHSExpr, RHSExpr>, Dev> > {
+  static inline auto getTuple(cl::sycl::handler& cgh, const TensorEvaluator<const TensorAssignOp<LHSExpr, RHSExpr>, Dev> eval)
+  -> decltype(AccessorConstructor::getTuple(cgh, eval.left_impl(), eval.right_impl())){
+    return AccessorConstructor::getTuple(cgh, eval.left_impl(), eval.right_impl());
+ }
+};
+
+/// specialisation of the \ref ExtractAccessor struct when the node type is TensorAssignOp
+template <typename LHSExpr, typename RHSExpr, typename Dev>
+struct ExtractAccessor<TensorEvaluator<TensorAssignOp<LHSExpr, RHSExpr>, Dev> >
+: ExtractAccessor<TensorEvaluator<const TensorAssignOp<LHSExpr, RHSExpr>, Dev> >{};
+
+/// specialisation of the \ref ExtractAccessor struct when the node type is const TensorMap
+#define TENSORMAPEXPR(CVQual, ACCType)\
+template <typename PlainObjectType, int Options_, typename Dev>\
+struct ExtractAccessor<TensorEvaluator<CVQual TensorMap<PlainObjectType, Options_>, Dev> > {\
+  static inline auto getTuple(cl::sycl::handler& cgh,const TensorEvaluator<CVQual TensorMap<PlainObjectType, Options_>, Dev> eval)\
+  -> decltype(AccessorConstructor::template getAccessor<ACCType>(cgh, eval)){\
+    return AccessorConstructor::template getAccessor<ACCType>(cgh, eval);\
+  }\
+};
+TENSORMAPEXPR(const, cl::sycl::access::mode::read)
+TENSORMAPEXPR(, cl::sycl::access::mode::read_write)
+#undef TENSORMAPEXPR
+
+/// specialisation of the \ref ExtractAccessor struct when the node type is const TensorForcedEvalOp
+template <typename Expr, typename Dev>
+struct ExtractAccessor<TensorEvaluator<const TensorForcedEvalOp<Expr>, Dev> > {
+  static inline auto getTuple(cl::sycl::handler& cgh, const TensorEvaluator<const TensorForcedEvalOp<Expr>, Dev> eval)
+  -> decltype(AccessorConstructor::template getAccessor<cl::sycl::access::mode::read>(cgh, eval)){
+    return AccessorConstructor::template getAccessor<cl::sycl::access::mode::read>(cgh, eval);
+  }
+};
+
+/// specialisation of the \ref ExtractAccessor struct when the node type is TensorForcedEvalOp
+template <typename Expr, typename Dev>
+struct ExtractAccessor<TensorEvaluator<TensorForcedEvalOp<Expr>, Dev> >
+: ExtractAccessor<TensorEvaluator<const TensorForcedEvalOp<Expr>, Dev> >{};
+
+/// specialisation of the \ref ExtractAccessor struct when the node type is const TensorEvalToOp
+template <typename Expr, typename Dev>
+struct ExtractAccessor<TensorEvaluator<const TensorEvalToOp<Expr>, Dev> > {
+  static inline auto getTuple(cl::sycl::handler& cgh,const TensorEvaluator<const TensorEvalToOp<Expr>, Dev> eval)
+  -> decltype(utility::tuple::append(AccessorConstructor::template getAccessor<cl::sycl::access::mode::write>(cgh, eval), AccessorConstructor::getTuple(cgh, eval.impl()))){
+    return utility::tuple::append(AccessorConstructor::template getAccessor<cl::sycl::access::mode::write>(cgh, eval), AccessorConstructor::getTuple(cgh, eval.impl()));
+  }
+};
+
+/// specialisation of the \ref ExtractAccessor struct when the node type is TensorEvalToOp
+template <typename Expr, typename Dev>
+struct ExtractAccessor<TensorEvaluator<TensorEvalToOp<Expr>, Dev> >
+: ExtractAccessor<TensorEvaluator<const TensorEvalToOp<Expr>, Dev> >{};
+
+/// specialisation of the \ref ExtractAccessor struct when the node type is const TensorReductionOp
+template <typename OP, typename Dim, typename Expr, typename Dev>
+struct ExtractAccessor<TensorEvaluator<const TensorReductionOp<OP, Dim, Expr>, Dev> > {
+  static inline auto getTuple(cl::sycl::handler& cgh, const TensorEvaluator<const TensorReductionOp<OP, Dim, Expr>, Dev> eval)
+  -> decltype(AccessorConstructor::template getAccessor<cl::sycl::access::mode::read>(cgh, eval)){
+    return AccessorConstructor::template getAccessor<cl::sycl::access::mode::read>(cgh, eval);
+  }
+};
+
+/// specialisation of the \ref ExtractAccessor struct when the node type is TensorReductionOp
+template <typename OP, typename Dim, typename Expr, typename Dev>
+struct ExtractAccessor<TensorEvaluator<TensorReductionOp<OP, Dim, Expr>, Dev> >
+: ExtractAccessor<TensorEvaluator<const TensorReductionOp<OP, Dim, Expr>, Dev> >{};
+
+/// template deduction for \ref ExtractAccessor
+template <typename Evaluator>
+auto createTupleOfAccessors(cl::sycl::handler& cgh, const Evaluator& expr)
+-> decltype(ExtractAccessor<Evaluator>::getTuple(cgh, expr)) {
+  return ExtractAccessor<Evaluator>::getTuple(cgh, expr);
+}
+
+} /// namespace TensorSycl
+} /// namespace internal
+} /// namespace Eigen
+#endif  // UNSUPPORTED_EIGEN_CXX11_SRC_TENSOR_TENSORSYCL_EXTRACT_ACCESSOR_HPP
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorFixedSize.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorFixedSize.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorFixedSize.h	(revision 3762)
@@ -0,0 +1,389 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2014 Benoit Steiner <benoit.steiner.goog@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CXX11_TENSOR_TENSOR_FIXED_SIZE_H
+#define EIGEN_CXX11_TENSOR_TENSOR_FIXED_SIZE_H
+
+namespace Eigen {
+
+/** \class TensorFixedSize
+  * \ingroup CXX11_Tensor_Module
+  *
+  * \brief The fixed sized version of the tensor class.
+  *
+  * The fixed sized equivalent of
+  * Eigen::Tensor<float, 3> t(3, 5, 7);
+  * is
+  * Eigen::TensorFixedSize<float, Size<3,5,7>> t;
+  */
+
+template<typename Scalar_, typename Dimensions_, int Options_, typename IndexType>
+class TensorFixedSize : public TensorBase<TensorFixedSize<Scalar_, Dimensions_, Options_, IndexType> >
+{
+  public:
+    typedef TensorFixedSize<Scalar_, Dimensions_, Options_, IndexType> Self;
+    typedef TensorBase<TensorFixedSize<Scalar_, Dimensions_, Options_, IndexType> > Base;
+    typedef typename Eigen::internal::nested<Self>::type Nested;
+    typedef typename internal::traits<Self>::StorageKind StorageKind;
+    typedef typename internal::traits<Self>::Index Index;
+    typedef Scalar_ Scalar;
+    typedef typename NumTraits<Scalar>::Real RealScalar;
+    typedef typename Base::CoeffReturnType CoeffReturnType;
+
+    static const int Options = Options_;
+
+    enum {
+      IsAligned = bool(EIGEN_MAX_ALIGN_BYTES>0),
+      Layout = Options_ & RowMajor ? RowMajor : ColMajor,
+      CoordAccess = true,
+      RawAccess = true
+    };
+
+  typedef Dimensions_ Dimensions;
+  static const std::size_t NumIndices = Dimensions::count;
+
+  protected:
+  TensorStorage<Scalar, Dimensions, Options> m_storage;
+
+  public:
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Index                    rank()                   const { return NumIndices; }
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Index                    dimension(std::size_t n) const { return m_storage.dimensions()[n]; }
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Dimensions&        dimensions()             const { return m_storage.dimensions(); }
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Index                    size()                   const { return m_storage.size(); }
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar                   *data()                        { return m_storage.data(); }
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Scalar             *data()                  const { return m_storage.data(); }
+
+    // This makes EIGEN_INITIALIZE_COEFFS_IF_THAT_OPTION_IS_ENABLED
+    // work, because that uses base().coeffRef() - and we don't yet
+    // implement a similar class hierarchy
+    inline Self& base()             { return *this; }
+    inline const Self& base() const { return *this; }
+
+#if EIGEN_HAS_VARIADIC_TEMPLATES
+    template<typename... IndexTypes>
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Scalar& coeff(Index firstIndex, IndexTypes... otherIndices) const
+    {
+      // The number of indices used to access a tensor coefficient must be equal to the rank of the tensor.
+      EIGEN_STATIC_ASSERT(sizeof...(otherIndices) + 1 == NumIndices, YOU_MADE_A_PROGRAMMING_MISTAKE)
+      return coeff(array<Index, NumIndices>{{firstIndex, otherIndices...}});
+    }
+#endif
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const Scalar& coeff(const array<Index, NumIndices>& indices) const
+    {
+      eigen_internal_assert(checkIndexRange(indices));
+      return m_storage.data()[linearizedIndex(indices)];
+    }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const Scalar& coeff(Index index) const
+    {
+      eigen_internal_assert(index >= 0 && index < size());
+      return m_storage.data()[index];
+    }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const Scalar& coeff() const
+    {
+      EIGEN_STATIC_ASSERT(NumIndices == 0, YOU_MADE_A_PROGRAMMING_MISTAKE);
+      return m_storage.data()[0];
+    }
+
+
+#if EIGEN_HAS_VARIADIC_TEMPLATES
+    template<typename... IndexTypes>
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar& coeffRef(Index firstIndex, IndexTypes... otherIndices)
+    {
+      // The number of indices used to access a tensor coefficient must be equal to the rank of the tensor.
+      EIGEN_STATIC_ASSERT(sizeof...(otherIndices) + 1 == NumIndices, YOU_MADE_A_PROGRAMMING_MISTAKE)
+      return coeffRef(array<Index, NumIndices>{{firstIndex, otherIndices...}});
+    }
+#endif
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Scalar& coeffRef(const array<Index, NumIndices>& indices)
+    {
+      eigen_internal_assert(checkIndexRange(indices));
+      return m_storage.data()[linearizedIndex(indices)];
+    }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Scalar& coeffRef(Index index)
+    {
+      eigen_internal_assert(index >= 0 && index < size());
+      return m_storage.data()[index];
+    }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Scalar& coeffRef()
+    {
+      EIGEN_STATIC_ASSERT(NumIndices == 0, YOU_MADE_A_PROGRAMMING_MISTAKE);
+      return m_storage.data()[0];
+    }
+
+#if EIGEN_HAS_VARIADIC_TEMPLATES
+    template<typename... IndexTypes>
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Scalar& operator()(Index firstIndex, IndexTypes... otherIndices) const
+    {
+      // The number of indices used to access a tensor coefficient must be equal to the rank of the tensor.
+      EIGEN_STATIC_ASSERT(sizeof...(otherIndices) + 1 == NumIndices, YOU_MADE_A_PROGRAMMING_MISTAKE)
+      return this->operator()(array<Index, NumIndices>{{firstIndex, otherIndices...}});
+    }
+#else
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const Scalar& operator()(Index i0, Index i1) const
+    {
+      if (Options&RowMajor) {
+        const Index index = i1 + i0 * m_storage.dimensions()[1];
+        return m_storage.data()[index];
+      } else {
+        const Index index = i0 + i1 * m_storage.dimensions()[0];
+        return m_storage.data()[index];
+      }
+    }
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const Scalar& operator()(Index i0, Index i1, Index i2) const
+    {
+      if (Options&RowMajor) {
+         const Index index = i2 + m_storage.dimensions()[2] * (i1 + m_storage.dimensions()[1] * i0);
+         return m_storage.data()[index];
+      } else {
+         const Index index = i0 + m_storage.dimensions()[0] * (i1 + m_storage.dimensions()[1] * i2);
+        return m_storage.data()[index];
+      }
+    }
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const Scalar& operator()(Index i0, Index i1, Index i2, Index i3) const
+    {
+      if (Options&RowMajor) {
+        const Index index = i3 + m_storage.dimensions()[3] * (i2 + m_storage.dimensions()[2] * (i1 + m_storage.dimensions()[1] * i0));
+        return m_storage.data()[index];
+      } else {
+        const Index index = i0 + m_storage.dimensions()[0] * (i1 + m_storage.dimensions()[1] * (i2 + m_storage.dimensions()[2] * i3));
+        return m_storage.data()[index];
+      }
+    }
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const Scalar& operator()(Index i0, Index i1, Index i2, Index i3, Index i4) const
+    {
+      if (Options&RowMajor) {
+        const Index index = i4 + m_storage.dimensions()[4] * (i3 + m_storage.dimensions()[3] * (i2 + m_storage.dimensions()[2] * (i1 + m_storage.dimensions()[1] * i0)));
+        return m_storage.data()[index];
+      } else {
+        const Index index = i0 + m_storage.dimensions()[0] * (i1 + m_storage.dimensions()[1] * (i2 + m_storage.dimensions()[2] * (i3 + m_storage.dimensions()[3] * i4)));
+        return m_storage.data()[index];
+      }
+    }
+#endif
+
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const Scalar& operator()(const array<Index, NumIndices>& indices) const
+    {
+      eigen_assert(checkIndexRange(indices));
+      return coeff(indices);
+    }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const Scalar& operator()(Index index) const
+    {
+      eigen_internal_assert(index >= 0 && index < size());
+      return coeff(index);
+    }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const Scalar& operator()() const
+    {
+      EIGEN_STATIC_ASSERT(NumIndices == 0, YOU_MADE_A_PROGRAMMING_MISTAKE);
+      return coeff();
+    }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const Scalar& operator[](Index index) const
+    {
+      // The bracket operator is only for vectors, use the parenthesis operator instead.
+      EIGEN_STATIC_ASSERT(NumIndices == 1, YOU_MADE_A_PROGRAMMING_MISTAKE);
+      return coeff(index);
+    }
+
+#if EIGEN_HAS_VARIADIC_TEMPLATES
+    template<typename... IndexTypes>
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar& operator()(Index firstIndex, IndexTypes... otherIndices)
+    {
+      // The number of indices used to access a tensor coefficient must be equal to the rank of the tensor.
+      EIGEN_STATIC_ASSERT(sizeof...(otherIndices) + 1 == NumIndices, YOU_MADE_A_PROGRAMMING_MISTAKE)
+      return operator()(array<Index, NumIndices>{{firstIndex, otherIndices...}});
+    }
+#else
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Scalar& operator()(Index i0, Index i1)
+    {
+       if (Options&RowMajor) {
+         const Index index = i1 + i0 * m_storage.dimensions()[1];
+        return m_storage.data()[index];
+      } else {
+        const Index index = i0 + i1 * m_storage.dimensions()[0];
+        return m_storage.data()[index];
+      }
+    }
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Scalar& operator()(Index i0, Index i1, Index i2)
+    {
+       if (Options&RowMajor) {
+         const Index index = i2 + m_storage.dimensions()[2] * (i1 + m_storage.dimensions()[1] * i0);
+        return m_storage.data()[index];
+      } else {
+         const Index index = i0 + m_storage.dimensions()[0] * (i1 + m_storage.dimensions()[1] * i2);
+        return m_storage.data()[index];
+      }
+    }
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Scalar& operator()(Index i0, Index i1, Index i2, Index i3)
+    {
+      if (Options&RowMajor) {
+        const Index index = i3 + m_storage.dimensions()[3] * (i2 + m_storage.dimensions()[2] * (i1 + m_storage.dimensions()[1] * i0));
+        return m_storage.data()[index];
+      } else {
+        const Index index = i0 + m_storage.dimensions()[0] * (i1 + m_storage.dimensions()[1] * (i2 + m_storage.dimensions()[2] * i3));
+        return m_storage.data()[index];
+      }
+    }
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Scalar& operator()(Index i0, Index i1, Index i2, Index i3, Index i4)
+    {
+      if (Options&RowMajor) {
+        const Index index = i4 + m_storage.dimensions()[4] * (i3 + m_storage.dimensions()[3] * (i2 + m_storage.dimensions()[2] * (i1 + m_storage.dimensions()[1] * i0)));
+        return m_storage.data()[index];
+      } else {
+        const Index index = i0 + m_storage.dimensions()[0] * (i1 + m_storage.dimensions()[1] * (i2 + m_storage.dimensions()[2] * (i3 + m_storage.dimensions()[3] * i4)));
+        return m_storage.data()[index];
+      }
+    }
+#endif
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Scalar& operator()(const array<Index, NumIndices>& indices)
+    {
+      eigen_assert(checkIndexRange(indices));
+      return coeffRef(indices);
+    }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Scalar& operator()(Index index)
+    {
+      eigen_assert(index >= 0 && index < size());
+      return coeffRef(index);
+    }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Scalar& operator()()
+    {
+      EIGEN_STATIC_ASSERT(NumIndices == 0, YOU_MADE_A_PROGRAMMING_MISTAKE);
+      return coeffRef();
+    }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Scalar& operator[](Index index)
+    {
+      // The bracket operator is only for vectors, use the parenthesis operator instead
+      EIGEN_STATIC_ASSERT(NumIndices == 1, YOU_MADE_A_PROGRAMMING_MISTAKE)
+      return coeffRef(index);
+    }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE TensorFixedSize()
+      : m_storage()
+    {
+    }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE TensorFixedSize(const Self& other)
+      : m_storage(other.m_storage)
+    {
+    }
+
+#if EIGEN_HAS_RVALUE_REFERENCES
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorFixedSize(Self&& other)
+      : m_storage(other.m_storage)
+    {
+    }
+#endif
+
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE TensorFixedSize(const TensorBase<OtherDerived, ReadOnlyAccessors>& other)
+    {
+      typedef TensorAssignOp<TensorFixedSize, const OtherDerived> Assign;
+      Assign assign(*this, other.derived());
+      internal::TensorExecutor<const Assign, DefaultDevice>::run(assign, DefaultDevice());
+    }
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE TensorFixedSize(const TensorBase<OtherDerived, WriteAccessors>& other)
+    {
+      typedef TensorAssignOp<TensorFixedSize, const OtherDerived> Assign;
+      Assign assign(*this, other.derived());
+      internal::TensorExecutor<const Assign, DefaultDevice>::run(assign, DefaultDevice());
+    }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE TensorFixedSize& operator=(const TensorFixedSize& other)
+    {
+      // FIXME: check that the dimensions of other match the dimensions of *this.
+      // Unfortunately this isn't possible yet when the rhs is an expression.
+      typedef TensorAssignOp<Self, const TensorFixedSize> Assign;
+      Assign assign(*this, other);
+      internal::TensorExecutor<const Assign, DefaultDevice>::run(assign, DefaultDevice());
+      return *this;
+    }
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE TensorFixedSize& operator=(const OtherDerived& other)
+    {
+      // FIXME: check that the dimensions of other match the dimensions of *this.
+      // Unfortunately this isn't possible yet when the rhs is an expression.
+      typedef TensorAssignOp<Self, const OtherDerived> Assign;
+      Assign assign(*this, other);
+      internal::TensorExecutor<const Assign, DefaultDevice>::run(assign, DefaultDevice());
+      return *this;
+    }
+
+  protected:
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE bool checkIndexRange(const array<Index, NumIndices>& /*indices*/) const
+    {
+      using internal::array_apply_and_reduce;
+      using internal::array_zip_and_reduce;
+      using internal::greater_equal_zero_op;
+      using internal::logical_and_op;
+      using internal::lesser_op;
+
+      return true;
+        // check whether the indices are all >= 0
+          /*       array_apply_and_reduce<logical_and_op, greater_equal_zero_op>(indices) &&
+        // check whether the indices fit in the dimensions
+        array_zip_and_reduce<logical_and_op, lesser_op>(indices, m_storage.dimensions());*/
+    }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Index linearizedIndex(const array<Index, NumIndices>& indices) const
+    {
+      if (Options&RowMajor) {
+        return m_storage.dimensions().IndexOfRowMajor(indices);
+      } else {
+        return m_storage.dimensions().IndexOfColMajor(indices);
+      }
+    }
+};
+
+
+} // end namespace Eigen
+
+#endif // EIGEN_CXX11_TENSOR_TENSOR_FIXED_SIZE_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceSycl.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceSycl.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceSycl.h	(revision 3762)
@@ -0,0 +1,122 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Mehdi Goli    Codeplay Software Ltd.
+// Ralph Potter  Codeplay Software Ltd.
+// Luke Iwanski  Codeplay Software Ltd.
+// Contact: <eigen@codeplay.com>
+// Copyright (C) 2016 Benoit Steiner <benoit.steiner.goog@gmail.com>
+
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#if defined(EIGEN_USE_SYCL) && !defined(EIGEN_CXX11_TENSOR_TENSOR_DEVICE_SYCL_H)
+#define EIGEN_CXX11_TENSOR_TENSOR_DEVICE_SYCL_H
+
+namespace Eigen {
+struct SyclDevice {
+  /// class members
+  /// sycl queue
+  mutable cl::sycl::queue m_queue;
+  /// std::map is the container used to make sure that we create only one buffer
+  /// per pointer. The lifespan of the buffer now depends on the lifespan of SyclDevice.
+  /// If a non-read-only pointer is needed to be accessed on the host we should manually deallocate it.
+  mutable std::map<const void *, std::shared_ptr<void>> buffer_map;
+  /// creating device by using selector
+  template<typename dev_Selector> SyclDevice(dev_Selector s)
+  :
+#ifdef EIGEN_EXCEPTIONS
+  m_queue(cl::sycl::queue(s, [=](cl::sycl::exception_list l) {
+    for (const auto& e : l) {
+      try {
+        std::rethrow_exception(e);
+      } catch (cl::sycl::exception e) {
+          std::cout << e.what() << std::endl;
+        }
+    }
+  }))
+#else
+  m_queue(cl::sycl::queue(s))
+#endif
+  {}
+  // destructor
+  ~SyclDevice() { deallocate_all(); }
+
+  template <typename T> void deallocate(T *p) const {
+    auto it = buffer_map.find(p);
+    if (it != buffer_map.end()) {
+      buffer_map.erase(it);
+      internal::aligned_free(p);
+    }
+  }
+  void deallocate_all() const {
+    std::map<const void *, std::shared_ptr<void>>::iterator it=buffer_map.begin();
+    while (it!=buffer_map.end()) {
+      auto p=it->first;
+      buffer_map.erase(it);
+      internal::aligned_free(const_cast<void*>(p));
+      it=buffer_map.begin();
+    }
+    buffer_map.clear();
+  }
+
+  /// creation of sycl accessor for a buffer. This function first tries to find
+  /// the buffer in the buffer_map. If found it gets the accessor from it, if not,
+  ///the function then adds an entry by creating a sycl buffer for that particular pointer.
+  template <cl::sycl::access::mode AcMd, typename T> inline cl::sycl::accessor<T, 1, AcMd, cl::sycl::access::target::global_buffer>
+  get_sycl_accessor(size_t num_bytes, cl::sycl::handler &cgh, const T * ptr) const {
+    return (get_sycl_buffer<T>(num_bytes, ptr)->template get_access<AcMd, cl::sycl::access::target::global_buffer>(cgh));
+  }
+
+  template<typename T> inline  std::pair<std::map<const void *, std::shared_ptr<void>>::iterator,bool> add_sycl_buffer(const T *ptr, size_t num_bytes) const {
+    using Type = cl::sycl::buffer<T, 1>;
+    std::pair<std::map<const void *, std::shared_ptr<void>>::iterator,bool> ret = buffer_map.insert(std::pair<const void *, std::shared_ptr<void>>(ptr, std::shared_ptr<void>(new Type(cl::sycl::range<1>(num_bytes)),
+      [](void *dataMem) { delete static_cast<Type*>(dataMem); })));
+    (static_cast<Type*>(buffer_map.at(ptr).get()))->set_final_data(nullptr);
+    return ret;
+  }
+
+  template <typename T> inline cl::sycl::buffer<T, 1>* get_sycl_buffer(size_t num_bytes,const T * ptr) const {
+    return static_cast<cl::sycl::buffer<T, 1>*>(add_sycl_buffer(ptr, num_bytes).first->second.get());
+  }
+
+  /// allocating memory on the cpu
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void *allocate(size_t) const {
+    return internal::aligned_malloc(8);
+  }
+
+  // some runtime conditions that can be applied here
+  bool isDeviceSuitable() const { return true; }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void memcpy(void *dst, const void *src, size_t n) const {
+    ::memcpy(dst, src, n);
+  }
+
+  template<typename T> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void memcpyHostToDevice(T *dst, const T *src, size_t n) const {
+    auto host_acc= (static_cast<cl::sycl::buffer<T, 1>*>(add_sycl_buffer(dst, n).first->second.get()))-> template get_access<cl::sycl::access::mode::discard_write, cl::sycl::access::target::host_buffer>();
+    memcpy(host_acc.get_pointer(), src, n);
+  }
+ /// whith the current implementation of sycl, the data is copied twice from device to host. This will be fixed soon.
+  template<typename T> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void memcpyDeviceToHost(T *dst, const T *src, size_t n) const {
+    auto it = buffer_map.find(src);
+    if (it != buffer_map.end()) {
+      auto host_acc= (static_cast<cl::sycl::buffer<T, 1>*>(it->second.get()))-> template get_access<cl::sycl::access::mode::read, cl::sycl::access::target::host_buffer>();
+      memcpy(dst,host_acc.get_pointer(),  n);
+    } else{
+      eigen_assert("no device memory found. The memory might be destroyed before creation");
+    }
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void memset(void *buffer, int c, size_t n) const {
+    ::memset(buffer, c, n);
+  }
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE int majorDeviceVersion() const {
+  return 1;
+  }
+};
+
+}  // end namespace Eigen
+
+#endif  // EIGEN_CXX11_TENSOR_TENSOR_DEVICE_SYCL_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceCuda.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceCuda.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceCuda.h	(revision 3762)
@@ -0,0 +1,337 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2014 Benoit Steiner <benoit.steiner.goog@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#if defined(EIGEN_USE_GPU) && !defined(EIGEN_CXX11_TENSOR_TENSOR_DEVICE_CUDA_H)
+#define EIGEN_CXX11_TENSOR_TENSOR_DEVICE_CUDA_H
+
+namespace Eigen {
+
+static const int kCudaScratchSize = 1024;
+
+// This defines an interface that GPUDevice can take to use
+// CUDA streams underneath.
+class StreamInterface {
+ public:
+  virtual ~StreamInterface() {}
+
+  virtual const cudaStream_t& stream() const = 0;
+  virtual const cudaDeviceProp& deviceProperties() const = 0;
+
+  // Allocate memory on the actual device where the computation will run
+  virtual void* allocate(size_t num_bytes) const = 0;
+  virtual void deallocate(void* buffer) const = 0;
+
+  // Return a scratchpad buffer of size 1k
+  virtual void* scratchpad() const = 0;
+
+  // Return a semaphore. The semaphore is initially initialized to 0, and
+  // each kernel using it is responsible for resetting to 0 upon completion
+  // to maintain the invariant that the semaphore is always equal to 0 upon
+  // each kernel start.
+  virtual unsigned int* semaphore() const = 0;
+};
+
+static cudaDeviceProp* m_deviceProperties;
+static bool m_devicePropInitialized = false;
+
+static void initializeDeviceProp() {
+  if (!m_devicePropInitialized) {
+    // Attempts to ensure proper behavior in the case of multiple threads
+    // calling this function simultaneously. This would be trivial to
+    // implement if we could use std::mutex, but unfortunately mutex don't
+    // compile with nvcc, so we resort to atomics and thread fences instead.
+    // Note that if the caller uses a compiler that doesn't support c++11 we
+    // can't ensure that the initialization is thread safe.
+#if __cplusplus >= 201103L
+    static std::atomic<bool> first(true);
+    if (first.exchange(false)) {
+#else
+    static bool first = true;
+    if (first) {
+      first = false;
+#endif
+      // We're the first thread to reach this point.
+      int num_devices;
+      cudaError_t status = cudaGetDeviceCount(&num_devices);
+      if (status != cudaSuccess) {
+        std::cerr << "Failed to get the number of CUDA devices: "
+                  << cudaGetErrorString(status)
+                  << std::endl;
+        assert(status == cudaSuccess);
+      }
+      m_deviceProperties = new cudaDeviceProp[num_devices];
+      for (int i = 0; i < num_devices; ++i) {
+        status = cudaGetDeviceProperties(&m_deviceProperties[i], i);
+        if (status != cudaSuccess) {
+          std::cerr << "Failed to initialize CUDA device #"
+                    << i
+                    << ": "
+                    << cudaGetErrorString(status)
+                    << std::endl;
+          assert(status == cudaSuccess);
+        }
+      }
+
+#if __cplusplus >= 201103L
+      std::atomic_thread_fence(std::memory_order_release);
+#endif
+      m_devicePropInitialized = true;
+    } else {
+      // Wait for the other thread to inititialize the properties.
+      while (!m_devicePropInitialized) {
+#if __cplusplus >= 201103L
+        std::atomic_thread_fence(std::memory_order_acquire);
+#endif
+        sleep(1);
+      }
+    }
+  }
+}
+
+static const cudaStream_t default_stream = cudaStreamDefault;
+
+class CudaStreamDevice : public StreamInterface {
+ public:
+  // Use the default stream on the current device
+  CudaStreamDevice() : stream_(&default_stream), scratch_(NULL), semaphore_(NULL) {
+    cudaGetDevice(&device_);
+    initializeDeviceProp();
+  }
+  // Use the default stream on the specified device
+  CudaStreamDevice(int device) : stream_(&default_stream), device_(device), scratch_(NULL), semaphore_(NULL) {
+    initializeDeviceProp();
+  }
+  // Use the specified stream. Note that it's the
+  // caller responsibility to ensure that the stream can run on
+  // the specified device. If no device is specified the code
+  // assumes that the stream is associated to the current gpu device.
+  CudaStreamDevice(const cudaStream_t* stream, int device = -1)
+      : stream_(stream), device_(device), scratch_(NULL), semaphore_(NULL) {
+    if (device < 0) {
+      cudaGetDevice(&device_);
+    } else {
+      int num_devices;
+      cudaError_t err = cudaGetDeviceCount(&num_devices);
+      EIGEN_UNUSED_VARIABLE(err)
+      assert(err == cudaSuccess);
+      assert(device < num_devices);
+      device_ = device;
+    }
+    initializeDeviceProp();
+  }
+
+  virtual ~CudaStreamDevice() {
+    if (scratch_) {
+      deallocate(scratch_);
+    }
+  }
+
+  const cudaStream_t& stream() const { return *stream_; }
+  const cudaDeviceProp& deviceProperties() const {
+    return m_deviceProperties[device_];
+  }
+  virtual void* allocate(size_t num_bytes) const {
+    cudaError_t err = cudaSetDevice(device_);
+    EIGEN_UNUSED_VARIABLE(err)
+    assert(err == cudaSuccess);
+    void* result;
+    err = cudaMalloc(&result, num_bytes);
+    assert(err == cudaSuccess);
+    assert(result != NULL);
+    return result;
+  }
+  virtual void deallocate(void* buffer) const {
+    cudaError_t err = cudaSetDevice(device_);
+    EIGEN_UNUSED_VARIABLE(err)
+    assert(err == cudaSuccess);
+    assert(buffer != NULL);
+    err = cudaFree(buffer);
+    assert(err == cudaSuccess);
+  }
+
+  virtual void* scratchpad() const {
+    if (scratch_ == NULL) {
+      scratch_ = allocate(kCudaScratchSize + sizeof(unsigned int));
+    }
+    return scratch_;
+  }
+
+  virtual unsigned int* semaphore() const {
+    if (semaphore_ == NULL) {
+      char* scratch = static_cast<char*>(scratchpad()) + kCudaScratchSize;
+      semaphore_ = reinterpret_cast<unsigned int*>(scratch);
+      cudaError_t err = cudaMemsetAsync(semaphore_, 0, sizeof(unsigned int), *stream_);
+      EIGEN_UNUSED_VARIABLE(err)
+      assert(err == cudaSuccess);
+    }
+    return semaphore_;
+  }
+
+ private:
+  const cudaStream_t* stream_;
+  int device_;
+  mutable void* scratch_;
+  mutable unsigned int* semaphore_;
+};
+
+struct GpuDevice {
+  // The StreamInterface is not owned: the caller is
+  // responsible for its initialization and eventual destruction.
+  explicit GpuDevice(const StreamInterface* stream) : stream_(stream), max_blocks_(INT_MAX) {
+    eigen_assert(stream);
+  }
+  explicit GpuDevice(const StreamInterface* stream, int num_blocks) : stream_(stream), max_blocks_(num_blocks) {
+    eigen_assert(stream);
+  }
+  // TODO(bsteiner): This is an internal API, we should not expose it.
+  EIGEN_STRONG_INLINE const cudaStream_t& stream() const {
+    return stream_->stream();
+  }
+
+  EIGEN_STRONG_INLINE void* allocate(size_t num_bytes) const {
+    return stream_->allocate(num_bytes);
+  }
+
+  EIGEN_STRONG_INLINE void deallocate(void* buffer) const {
+    stream_->deallocate(buffer);
+  }
+
+  EIGEN_STRONG_INLINE void* scratchpad() const {
+    return stream_->scratchpad();
+  }
+
+  EIGEN_STRONG_INLINE unsigned int* semaphore() const {
+    return stream_->semaphore();
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void memcpy(void* dst, const void* src, size_t n) const {
+#ifndef __CUDA_ARCH__
+    cudaError_t err = cudaMemcpyAsync(dst, src, n, cudaMemcpyDeviceToDevice,
+                                      stream_->stream());
+    EIGEN_UNUSED_VARIABLE(err)
+    assert(err == cudaSuccess);
+#else
+  eigen_assert(false && "The default device should be used instead to generate kernel code");
+#endif
+  }
+
+  EIGEN_STRONG_INLINE void memcpyHostToDevice(void* dst, const void* src, size_t n) const {
+    cudaError_t err =
+        cudaMemcpyAsync(dst, src, n, cudaMemcpyHostToDevice, stream_->stream());
+    EIGEN_UNUSED_VARIABLE(err)
+    assert(err == cudaSuccess);
+  }
+
+  EIGEN_STRONG_INLINE void memcpyDeviceToHost(void* dst, const void* src, size_t n) const {
+    cudaError_t err =
+        cudaMemcpyAsync(dst, src, n, cudaMemcpyDeviceToHost, stream_->stream());
+    EIGEN_UNUSED_VARIABLE(err)
+    assert(err == cudaSuccess);
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void memset(void* buffer, int c, size_t n) const {
+#ifndef __CUDA_ARCH__
+    cudaError_t err = cudaMemsetAsync(buffer, c, n, stream_->stream());
+    EIGEN_UNUSED_VARIABLE(err)
+    assert(err == cudaSuccess);
+#else
+  eigen_assert(false && "The default device should be used instead to generate kernel code");
+#endif
+  }
+
+  EIGEN_STRONG_INLINE size_t numThreads() const {
+    // FIXME
+    return 32;
+  }
+
+  EIGEN_STRONG_INLINE size_t firstLevelCacheSize() const {
+    // FIXME
+    return 48*1024;
+  }
+
+  EIGEN_STRONG_INLINE size_t lastLevelCacheSize() const {
+    // We won't try to take advantage of the l2 cache for the time being, and
+    // there is no l3 cache on cuda devices.
+    return firstLevelCacheSize();
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void synchronize() const {
+#if defined(__CUDACC__) && !defined(__CUDA_ARCH__)
+    cudaError_t err = cudaStreamSynchronize(stream_->stream());
+    if (err != cudaSuccess) {
+      std::cerr << "Error detected in CUDA stream: "
+                << cudaGetErrorString(err)
+                << std::endl;
+      assert(err == cudaSuccess);
+    }
+#else
+    assert(false && "The default device should be used instead to generate kernel code");
+#endif
+  }
+
+  EIGEN_STRONG_INLINE int getNumCudaMultiProcessors() const {
+    return stream_->deviceProperties().multiProcessorCount;
+  }
+  EIGEN_STRONG_INLINE int maxCudaThreadsPerBlock() const {
+    return stream_->deviceProperties().maxThreadsPerBlock;
+  }
+  EIGEN_STRONG_INLINE int maxCudaThreadsPerMultiProcessor() const {
+    return stream_->deviceProperties().maxThreadsPerMultiProcessor;
+  }
+  EIGEN_STRONG_INLINE int sharedMemPerBlock() const {
+    return stream_->deviceProperties().sharedMemPerBlock;
+  }
+  EIGEN_STRONG_INLINE int majorDeviceVersion() const {
+    return stream_->deviceProperties().major;
+  }
+  EIGEN_STRONG_INLINE int minorDeviceVersion() const {
+    return stream_->deviceProperties().minor;
+  }
+
+  EIGEN_STRONG_INLINE int maxBlocks() const {
+    return max_blocks_;
+  }
+
+  // This function checks if the CUDA runtime recorded an error for the
+  // underlying stream device.
+  inline bool ok() const {
+#ifdef __CUDACC__
+    cudaError_t error = cudaStreamQuery(stream_->stream());
+    return (error == cudaSuccess) || (error == cudaErrorNotReady);
+#else
+    return false;
+#endif
+  }
+
+ private:
+  const StreamInterface* stream_;
+  int max_blocks_;
+};
+
+#define LAUNCH_CUDA_KERNEL(kernel, gridsize, blocksize, sharedmem, device, ...)             \
+  (kernel) <<< (gridsize), (blocksize), (sharedmem), (device).stream() >>> (__VA_ARGS__);   \
+  assert(cudaGetLastError() == cudaSuccess);
+
+
+// FIXME: Should be device and kernel specific.
+#ifdef __CUDACC__
+static EIGEN_DEVICE_FUNC inline void setCudaSharedMemConfig(cudaSharedMemConfig config) {
+#ifndef __CUDA_ARCH__
+  cudaError_t status = cudaDeviceSetSharedMemConfig(config);
+  EIGEN_UNUSED_VARIABLE(status)
+  assert(status == cudaSuccess);
+#else
+  EIGEN_UNUSED_VARIABLE(config)
+#endif
+}
+#endif
+
+}  // end namespace Eigen
+
+#endif  // EIGEN_CXX11_TENSOR_TENSOR_DEVICE_CUDA_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorForwardDeclarations.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorForwardDeclarations.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorForwardDeclarations.h	(revision 3762)
@@ -0,0 +1,109 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2014 Benoit Steiner <benoit.steiner.goog@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CXX11_TENSOR_TENSOR_FORWARD_DECLARATIONS_H
+#define EIGEN_CXX11_TENSOR_TENSOR_FORWARD_DECLARATIONS_H
+
+namespace Eigen {
+
+// MakePointer class is used as a container of the adress space of the pointer
+// on the host and on the device. From the host side it generates the T* pointer
+// and when EIGEN_USE_SYCL is used it construct a buffer with a map_allocator to
+// T* m_data on the host. It is always called on the device.
+// Specialisation of MakePointer class for creating the sycl buffer with
+// map_allocator.
+template<typename T> struct MakePointer {
+  typedef T* Type;
+};
+
+template<typename PlainObjectType, int Options_ = Unaligned, template <class> class MakePointer_ = MakePointer> class TensorMap;
+template<typename Scalar_, int NumIndices_, int Options_ = 0, typename IndexType = DenseIndex> class Tensor;
+template<typename Scalar_, typename Dimensions, int Options_ = 0, typename IndexType = DenseIndex> class TensorFixedSize;
+template<typename PlainObjectType> class TensorRef;
+template<typename Derived, int AccessLevel> class TensorBase;
+
+template<typename NullaryOp, typename PlainObjectType> class TensorCwiseNullaryOp;
+template<typename UnaryOp, typename XprType> class TensorCwiseUnaryOp;
+template<typename BinaryOp, typename LeftXprType, typename RightXprType> class TensorCwiseBinaryOp;
+template<typename TernaryOp, typename Arg1XprType, typename Arg2XprType, typename Arg3XprType> class TensorCwiseTernaryOp;
+template<typename IfXprType, typename ThenXprType, typename ElseXprType> class TensorSelectOp;
+template<typename Op, typename Dims, typename XprType, template <class> class MakePointer_ = MakePointer > class TensorReductionOp;
+template<typename XprType> class TensorIndexTupleOp;
+template<typename ReduceOp, typename Dims, typename XprType> class TensorTupleReducerOp;
+template<typename Axis, typename LeftXprType, typename RightXprType> class TensorConcatenationOp;
+template<typename Dimensions, typename LeftXprType, typename RightXprType> class TensorContractionOp;
+template<typename TargetType, typename XprType> class TensorConversionOp;
+template<typename Dimensions, typename InputXprType, typename KernelXprType> class TensorConvolutionOp;
+template<typename FFT, typename XprType, int FFTDataType, int FFTDirection> class TensorFFTOp;
+template<typename PatchDim, typename XprType> class TensorPatchOp;
+template<DenseIndex Rows, DenseIndex Cols, typename XprType> class TensorImagePatchOp;
+template<DenseIndex Planes, DenseIndex Rows, DenseIndex Cols, typename XprType> class TensorVolumePatchOp;
+template<typename Broadcast, typename XprType> class TensorBroadcastingOp;
+template<DenseIndex DimId, typename XprType> class TensorChippingOp;
+template<typename NewDimensions, typename XprType> class TensorReshapingOp;
+template<typename XprType> class TensorLayoutSwapOp;
+template<typename StartIndices, typename Sizes, typename XprType> class TensorSlicingOp;
+template<typename ReverseDimensions, typename XprType> class TensorReverseOp;
+template<typename PaddingDimensions, typename XprType> class TensorPaddingOp;
+template<typename Shuffle, typename XprType> class TensorShufflingOp;
+template<typename Strides, typename XprType> class TensorStridingOp;
+template<typename StartIndices, typename StopIndices, typename Strides, typename XprType> class TensorStridingSlicingOp;
+template<typename Strides, typename XprType> class TensorInflationOp;
+template<typename Generator, typename XprType> class TensorGeneratorOp;
+template<typename LeftXprType, typename RightXprType> class TensorAssignOp;
+template<typename Op, typename XprType> class TensorScanOp;
+
+template<typename CustomUnaryFunc, typename XprType> class TensorCustomUnaryOp;
+template<typename CustomBinaryFunc, typename LhsXprType, typename RhsXprType> class TensorCustomBinaryOp;
+
+template<typename XprType, template <class> class MakePointer_ = MakePointer> class TensorEvalToOp;
+template<typename XprType, template <class> class MakePointer_ = MakePointer> class TensorForcedEvalOp;
+
+template<typename ExpressionType, typename DeviceType> class TensorDevice;
+template<typename Derived, typename Device> struct TensorEvaluator;
+
+struct DefaultDevice;
+struct ThreadPoolDevice;
+struct GpuDevice;
+struct SyclDevice;
+
+enum FFTResultType {
+  RealPart = 0,
+  ImagPart = 1,
+  BothParts = 2
+};
+
+enum FFTDirection {
+    FFT_FORWARD = 0,
+    FFT_REVERSE = 1
+};
+
+
+namespace internal {
+
+template <typename Device, typename Expression>
+struct IsVectorizable {
+  static const bool value = TensorEvaluator<Expression, Device>::PacketAccess;
+};
+
+template <typename Expression>
+struct IsVectorizable<GpuDevice, Expression> {
+  static const bool value = TensorEvaluator<Expression, GpuDevice>::PacketAccess &&
+                            TensorEvaluator<Expression, GpuDevice>::IsAligned;
+};
+
+template <typename Expression, typename Device,
+          bool Vectorizable = IsVectorizable<Device, Expression>::value>
+class TensorExecutor;
+
+}  // end namespace internal
+
+}  // end namespace Eigen
+
+#endif // EIGEN_CXX11_TENSOR_TENSOR_FORWARD_DECLARATIONS_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorBroadcasting.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorBroadcasting.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorBroadcasting.h	(revision 3762)
@@ -0,0 +1,392 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2014 Benoit Steiner <benoit.steiner.goog@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CXX11_TENSOR_TENSOR_BROADCASTING_H
+#define EIGEN_CXX11_TENSOR_TENSOR_BROADCASTING_H
+
+namespace Eigen {
+
+/** \class TensorBroadcasting
+  * \ingroup CXX11_Tensor_Module
+  *
+  * \brief Tensor broadcasting class.
+  *
+  *
+  */
+namespace internal {
+template<typename Broadcast, typename XprType>
+struct traits<TensorBroadcastingOp<Broadcast, XprType> > : public traits<XprType>
+{
+  typedef typename XprType::Scalar Scalar;
+  typedef traits<XprType> XprTraits;
+  typedef typename XprTraits::StorageKind StorageKind;
+  typedef typename XprTraits::Index Index;
+  typedef typename XprType::Nested Nested;
+  typedef typename remove_reference<Nested>::type _Nested;
+  static const int NumDimensions = XprTraits::NumDimensions;
+  static const int Layout = XprTraits::Layout;
+};
+
+template<typename Broadcast, typename XprType>
+struct eval<TensorBroadcastingOp<Broadcast, XprType>, Eigen::Dense>
+{
+  typedef const TensorBroadcastingOp<Broadcast, XprType>& type;
+};
+
+template<typename Broadcast, typename XprType>
+struct nested<TensorBroadcastingOp<Broadcast, XprType>, 1, typename eval<TensorBroadcastingOp<Broadcast, XprType> >::type>
+{
+  typedef TensorBroadcastingOp<Broadcast, XprType> type;
+};
+
+template <typename Dims>
+struct is_input_scalar {
+  static const bool value = false;
+};
+template <>
+struct is_input_scalar<Sizes<> > {
+  static const bool value = true;
+};
+#ifndef EIGEN_EMULATE_CXX11_META_H
+template <typename std::size_t... Indices>
+struct is_input_scalar<Sizes<Indices...> > {
+  static const bool value = (Sizes<Indices...>::total_size == 1);
+};
+#endif
+
+}  // end namespace internal
+
+
+
+template<typename Broadcast, typename XprType>
+class TensorBroadcastingOp : public TensorBase<TensorBroadcastingOp<Broadcast, XprType>, ReadOnlyAccessors>
+{
+  public:
+  typedef typename Eigen::internal::traits<TensorBroadcastingOp>::Scalar Scalar;
+  typedef typename Eigen::NumTraits<Scalar>::Real RealScalar;
+  typedef typename XprType::CoeffReturnType CoeffReturnType;
+  typedef typename Eigen::internal::nested<TensorBroadcastingOp>::type Nested;
+  typedef typename Eigen::internal::traits<TensorBroadcastingOp>::StorageKind StorageKind;
+  typedef typename Eigen::internal::traits<TensorBroadcastingOp>::Index Index;
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorBroadcastingOp(const XprType& expr, const Broadcast& broadcast)
+      : m_xpr(expr), m_broadcast(broadcast) {}
+
+    EIGEN_DEVICE_FUNC
+    const Broadcast& broadcast() const { return m_broadcast; }
+
+    EIGEN_DEVICE_FUNC
+    const typename internal::remove_all<typename XprType::Nested>::type&
+    expression() const { return m_xpr; }
+
+  protected:
+    typename XprType::Nested m_xpr;
+    const Broadcast m_broadcast;
+};
+
+
+// Eval as rvalue
+template<typename Broadcast, typename ArgType, typename Device>
+struct TensorEvaluator<const TensorBroadcastingOp<Broadcast, ArgType>, Device>
+{
+  typedef TensorBroadcastingOp<Broadcast, ArgType> XprType;
+  typedef typename XprType::Index Index;
+  static const int NumDims = internal::array_size<typename TensorEvaluator<ArgType, Device>::Dimensions>::value;
+  typedef DSizes<Index, NumDims> Dimensions;
+  typedef typename XprType::Scalar Scalar;
+  typedef typename TensorEvaluator<ArgType, Device>::Dimensions InputDimensions;
+  typedef typename XprType::CoeffReturnType CoeffReturnType;
+  typedef typename PacketType<CoeffReturnType, Device>::type PacketReturnType;
+  static const int PacketSize = internal::unpacket_traits<PacketReturnType>::size;
+
+  enum {
+    IsAligned = true,
+    PacketAccess = TensorEvaluator<ArgType, Device>::PacketAccess,
+    Layout = TensorEvaluator<ArgType, Device>::Layout,
+    RawAccess = false
+  };
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorEvaluator(const XprType& op, const Device& device)
+    : m_broadcast(op.broadcast()),m_impl(op.expression(), device)
+  {
+    // The broadcasting op doesn't change the rank of the tensor. One can't broadcast a scalar
+    // and store the result in a scalar. Instead one should reshape the scalar into a a N-D
+    // tensor with N >= 1 of 1 element first and then broadcast.
+    EIGEN_STATIC_ASSERT((NumDims > 0), YOU_MADE_A_PROGRAMMING_MISTAKE);
+    const InputDimensions& input_dims = m_impl.dimensions();
+    const Broadcast& broadcast = op.broadcast();
+    for (int i = 0; i < NumDims; ++i) {
+      eigen_assert(input_dims[i] > 0);
+      m_dimensions[i] = input_dims[i] * broadcast[i];
+    }
+
+    if (static_cast<int>(Layout) == static_cast<int>(ColMajor)) {
+      m_inputStrides[0] = 1;
+      m_outputStrides[0] = 1;
+      for (int i = 1; i < NumDims; ++i) {
+        m_inputStrides[i] = m_inputStrides[i-1] * input_dims[i-1];
+        m_outputStrides[i] = m_outputStrides[i-1] * m_dimensions[i-1];
+      }
+    } else {
+      m_inputStrides[NumDims-1] = 1;
+      m_outputStrides[NumDims-1] = 1;
+      for (int i = NumDims-2; i >= 0; --i) {
+        m_inputStrides[i] = m_inputStrides[i+1] * input_dims[i+1];
+        m_outputStrides[i] = m_outputStrides[i+1] * m_dimensions[i+1];
+      }
+    }
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Dimensions& dimensions() const { return m_dimensions; }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool evalSubExprsIfNeeded(Scalar* /*data*/) {
+    m_impl.evalSubExprsIfNeeded(NULL);
+    return true;
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void cleanup() {
+    m_impl.cleanup();
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE CoeffReturnType coeff(Index index) const
+  {
+    if (internal::is_input_scalar<typename internal::remove_all<InputDimensions>::type>::value) {
+      return m_impl.coeff(0);
+    }
+
+    if (static_cast<int>(Layout) == static_cast<int>(ColMajor)) {
+      return coeffColMajor(index);
+    } else {
+      return coeffRowMajor(index);
+    }
+  }
+
+  // TODO: attempt to speed this up. The integer divisions and modulo are slow
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType coeffColMajor(Index index) const
+  {
+    Index inputIndex = 0;
+    for (int i = NumDims - 1; i > 0; --i) {
+      const Index idx = index / m_outputStrides[i];
+      if (internal::index_statically_eq<Broadcast>(i, 1)) {
+        eigen_assert(idx < m_impl.dimensions()[i]);
+        inputIndex += idx * m_inputStrides[i];
+      } else {
+        if (internal::index_statically_eq<InputDimensions>(i, 1)) {
+          eigen_assert(idx % m_impl.dimensions()[i] == 0);
+        } else {
+          inputIndex += (idx % m_impl.dimensions()[i]) * m_inputStrides[i];
+        }
+      }
+      index -= idx * m_outputStrides[i];
+    }
+    if (internal::index_statically_eq<Broadcast>(0, 1)) {
+      eigen_assert(index < m_impl.dimensions()[0]);
+      inputIndex += index;
+    } else {
+      if (internal::index_statically_eq<InputDimensions>(0, 1)) {
+        eigen_assert(index % m_impl.dimensions()[0] == 0);
+      } else {
+        inputIndex += (index % m_impl.dimensions()[0]);
+      }
+    }
+    return m_impl.coeff(inputIndex);
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType coeffRowMajor(Index index) const
+  {
+    Index inputIndex = 0;
+    for (int i = 0; i < NumDims - 1; ++i) {
+      const Index idx = index / m_outputStrides[i];
+      if (internal::index_statically_eq<Broadcast>(i, 1)) {
+        eigen_assert(idx < m_impl.dimensions()[i]);
+        inputIndex += idx * m_inputStrides[i];
+      } else {
+        if (internal::index_statically_eq<InputDimensions>(i, 1)) {
+          eigen_assert(idx % m_impl.dimensions()[i] == 0);
+        } else {
+          inputIndex += (idx % m_impl.dimensions()[i]) * m_inputStrides[i];
+        }
+      }
+      index -= idx * m_outputStrides[i];
+    }
+    if (internal::index_statically_eq<Broadcast>(NumDims-1, 1)) {
+      eigen_assert(index < m_impl.dimensions()[NumDims-1]);
+      inputIndex += index;
+    } else {
+      if (internal::index_statically_eq<InputDimensions>(NumDims-1, 1)) {
+        eigen_assert(index % m_impl.dimensions()[NumDims-1] == 0);
+      } else {
+        inputIndex += (index % m_impl.dimensions()[NumDims-1]);
+      }
+    }
+    return m_impl.coeff(inputIndex);
+  }
+
+  template<int LoadMode>
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE PacketReturnType packet(Index index) const
+  {
+    if (internal::is_input_scalar<typename internal::remove_all<InputDimensions>::type>::value) {
+      return internal::pset1<PacketReturnType>(m_impl.coeff(0));
+    }
+
+    if (static_cast<int>(Layout) == static_cast<int>(ColMajor)) {
+      return packetColMajor<LoadMode>(index);
+    } else {
+      return packetRowMajor<LoadMode>(index);
+    }
+  }
+
+  // Ignore the LoadMode and always use unaligned loads since we can't guarantee
+  // the alignment at compile time.
+  template<int LoadMode>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketReturnType packetColMajor(Index index) const
+  {
+    EIGEN_STATIC_ASSERT((PacketSize > 1), YOU_MADE_A_PROGRAMMING_MISTAKE)
+    eigen_assert(index+PacketSize-1 < dimensions().TotalSize());
+
+    const Index originalIndex = index;
+
+    Index inputIndex = 0;
+    for (int i = NumDims - 1; i > 0; --i) {
+      const Index idx = index / m_outputStrides[i];
+      if (internal::index_statically_eq<Broadcast>(i, 1)) {
+        eigen_assert(idx < m_impl.dimensions()[i]);
+        inputIndex += idx * m_inputStrides[i];
+      } else {
+        if (internal::index_statically_eq<InputDimensions>(i, 1)) {
+          eigen_assert(idx % m_impl.dimensions()[i] == 0);
+        } else {
+          inputIndex += (idx % m_impl.dimensions()[i]) * m_inputStrides[i];
+        }
+      }
+      index -= idx * m_outputStrides[i];
+    }
+    Index innermostLoc;
+    if (internal::index_statically_eq<Broadcast>(0, 1)) {
+      eigen_assert(index < m_impl.dimensions()[0]);
+      innermostLoc = index;
+    } else {
+      if (internal::index_statically_eq<InputDimensions>(0, 1)) {
+        eigen_assert(index % m_impl.dimensions()[0] == 0);
+        innermostLoc = 0;
+      } else {
+        innermostLoc = index % m_impl.dimensions()[0];
+      }
+    }
+    inputIndex += innermostLoc;
+
+    // Todo: this could be extended to the second dimension if we're not
+    // broadcasting alongside the first dimension, and so on.
+    if (innermostLoc + PacketSize <= m_impl.dimensions()[0]) {
+      return m_impl.template packet<Unaligned>(inputIndex);
+    } else {
+      EIGEN_ALIGN_MAX typename internal::remove_const<CoeffReturnType>::type values[PacketSize];
+      values[0] = m_impl.coeff(inputIndex);
+      for (int i = 1; i < PacketSize; ++i) {
+        values[i] = coeffColMajor(originalIndex+i);
+      }
+      PacketReturnType rslt = internal::pload<PacketReturnType>(values);
+      return rslt;
+    }
+  }
+
+  template<int LoadMode>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketReturnType packetRowMajor(Index index) const
+  {
+    EIGEN_STATIC_ASSERT((PacketSize > 1), YOU_MADE_A_PROGRAMMING_MISTAKE)
+    eigen_assert(index+PacketSize-1 < dimensions().TotalSize());
+
+    const Index originalIndex = index;
+
+    Index inputIndex = 0;
+    for (int i = 0; i < NumDims - 1; ++i) {
+      const Index idx = index / m_outputStrides[i];
+      if (internal::index_statically_eq<Broadcast>(i, 1)) {
+        eigen_assert(idx < m_impl.dimensions()[i]);
+        inputIndex += idx * m_inputStrides[i];
+      } else {
+        if (internal::index_statically_eq<InputDimensions>(i, 1)) {
+          eigen_assert(idx % m_impl.dimensions()[i] == 0);
+        } else {
+          inputIndex += (idx % m_impl.dimensions()[i]) * m_inputStrides[i];
+        }
+      }
+      index -= idx * m_outputStrides[i];
+    }
+    Index innermostLoc;
+    if (internal::index_statically_eq<Broadcast>(NumDims-1, 1)) {
+      eigen_assert(index < m_impl.dimensions()[NumDims-1]);
+      innermostLoc = index;
+    } else {
+      if (internal::index_statically_eq<InputDimensions>(NumDims-1, 1)) {
+        eigen_assert(index % m_impl.dimensions()[NumDims-1] == 0);
+        innermostLoc = 0;
+      } else {
+        innermostLoc = index % m_impl.dimensions()[NumDims-1];
+      }
+    }
+    inputIndex += innermostLoc;
+
+    // Todo: this could be extended to the second dimension if we're not
+    // broadcasting alongside the first dimension, and so on.
+    if (innermostLoc + PacketSize <= m_impl.dimensions()[NumDims-1]) {
+      return m_impl.template packet<Unaligned>(inputIndex);
+    } else {
+      EIGEN_ALIGN_MAX typename internal::remove_const<CoeffReturnType>::type values[PacketSize];
+      values[0] = m_impl.coeff(inputIndex);
+      for (int i = 1; i < PacketSize; ++i) {
+        values[i] = coeffRowMajor(originalIndex+i);
+      }
+      PacketReturnType rslt = internal::pload<PacketReturnType>(values);
+      return rslt;
+    }
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorOpCost
+  costPerCoeff(bool vectorized) const {
+    double compute_cost = TensorOpCost::AddCost<Index>();
+    if (NumDims > 0) {
+      for (int i = NumDims - 1; i > 0; --i) {
+        compute_cost += TensorOpCost::DivCost<Index>();
+        if (internal::index_statically_eq<Broadcast>(i, 1)) {
+          compute_cost +=
+              TensorOpCost::MulCost<Index>() + TensorOpCost::AddCost<Index>();
+        } else {
+          if (!internal::index_statically_eq<InputDimensions>(i, 1)) {
+            compute_cost += TensorOpCost::MulCost<Index>() +
+                            TensorOpCost::ModCost<Index>() +
+                            TensorOpCost::AddCost<Index>();
+          }
+        }
+        compute_cost +=
+            TensorOpCost::MulCost<Index>() + TensorOpCost::AddCost<Index>();
+      }
+    }
+    return m_impl.costPerCoeff(vectorized) +
+           TensorOpCost(0, 0, compute_cost, vectorized, PacketSize);
+  }
+
+  EIGEN_DEVICE_FUNC Scalar* data() const { return NULL; }
+
+  const TensorEvaluator<ArgType, Device>& impl() const { return m_impl; }
+
+  Broadcast functor() const { return m_broadcast; }
+
+ protected:
+  const Broadcast m_broadcast;
+  Dimensions m_dimensions;
+  array<Index, NumDims> m_outputStrides;
+  array<Index, NumDims> m_inputStrides;
+  TensorEvaluator<ArgType, Device> m_impl;
+};
+
+
+} // end namespace Eigen
+
+#endif // EIGEN_CXX11_TENSOR_TENSOR_BROADCASTING_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorFunctors.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorFunctors.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorFunctors.h	(revision 3762)
@@ -0,0 +1,489 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2014 Benoit Steiner <benoit.steiner.goog@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CXX11_TENSOR_TENSOR_FUNCTORS_H
+#define EIGEN_CXX11_TENSOR_TENSOR_FUNCTORS_H
+
+namespace Eigen {
+namespace internal {
+
+
+/** \internal
+ * \brief Template functor to compute the modulo between an array and a scalar.
+ */
+template <typename Scalar>
+struct scalar_mod_op {
+  EIGEN_DEVICE_FUNC scalar_mod_op(const Scalar& divisor) : m_divisor(divisor) {}
+  EIGEN_DEVICE_FUNC inline Scalar operator() (const Scalar& a) const { return a % m_divisor; }
+  const Scalar m_divisor;
+};
+template <typename Scalar>
+struct functor_traits<scalar_mod_op<Scalar> >
+{ enum { Cost = scalar_div_cost<Scalar,false>::value, PacketAccess = false }; };
+
+
+/** \internal
+ * \brief Template functor to compute the modulo between 2 arrays.
+ */
+template <typename Scalar>
+struct scalar_mod2_op {
+  EIGEN_EMPTY_STRUCT_CTOR(scalar_mod2_op);
+  EIGEN_DEVICE_FUNC inline Scalar operator() (const Scalar& a, const Scalar& b) const { return a % b; }
+};
+template <typename Scalar>
+struct functor_traits<scalar_mod2_op<Scalar> >
+{ enum { Cost = scalar_div_cost<Scalar,false>::value, PacketAccess = false }; };
+
+template <typename Scalar>
+struct scalar_fmod_op {
+  EIGEN_EMPTY_STRUCT_CTOR(scalar_fmod_op);
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar
+  operator()(const Scalar& a, const Scalar& b) const {
+    return numext::fmod(a, b);
+  }
+};
+template <typename Scalar>
+struct functor_traits<scalar_fmod_op<Scalar> > {
+  enum { Cost = 13,  // Reciprocal throughput of FPREM on Haswell.
+         PacketAccess = false };
+};
+
+
+/** \internal
+  * \brief Template functor to compute the sigmoid of a scalar
+  * \sa class CwiseUnaryOp, ArrayBase::sigmoid()
+  */
+template <typename T>
+struct scalar_sigmoid_op {
+  EIGEN_EMPTY_STRUCT_CTOR(scalar_sigmoid_op)
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T operator()(const T& x) const {
+    const T one = T(1);
+    return one / (one + numext::exp(-x));
+  }
+
+  template <typename Packet> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  Packet packetOp(const Packet& x) const {
+    const Packet one = pset1<Packet>(T(1));
+    return pdiv(one, padd(one, pexp(pnegate(x))));
+  }
+};
+
+template <typename T>
+struct functor_traits<scalar_sigmoid_op<T> > {
+  enum {
+    Cost = NumTraits<T>::AddCost * 2 + NumTraits<T>::MulCost * 6,
+    PacketAccess = packet_traits<T>::HasAdd && packet_traits<T>::HasDiv &&
+                   packet_traits<T>::HasNegate && packet_traits<T>::HasExp
+  };
+};
+
+
+template<typename Reducer, typename Device>
+struct reducer_traits {
+  enum {
+    Cost = 1,
+    PacketAccess = false
+  };
+};
+
+// Standard reduction functors
+template <typename T> struct SumReducer
+{
+  static const bool PacketAccess = packet_traits<T>::HasAdd;
+  static const bool IsStateful = false;
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reduce(const T t, T* accum) const {
+    internal::scalar_sum_op<T> sum_op;
+    *accum = sum_op(*accum, t);
+  }
+  template <typename Packet>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reducePacket(const Packet& p, Packet* accum) const {
+    (*accum) = padd<Packet>(*accum, p);
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T initialize() const {
+    internal::scalar_cast_op<int, T> conv;
+    return conv(0);
+  }
+  template <typename Packet>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet initializePacket() const {
+    return pset1<Packet>(initialize());
+  }
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T finalize(const T accum) const {
+    return accum;
+  }
+  template <typename Packet>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet finalizePacket(const Packet& vaccum) const {
+    return vaccum;
+  }
+  template <typename Packet>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T finalizeBoth(const T saccum, const Packet& vaccum) const {
+    internal::scalar_sum_op<T> sum_op;
+    return sum_op(saccum, predux(vaccum));
+  }
+};
+
+template <typename T, typename Device>
+struct reducer_traits<SumReducer<T>, Device> {
+  enum {
+    Cost = NumTraits<T>::AddCost,
+    PacketAccess = PacketType<T, Device>::HasAdd
+  };
+};
+
+
+template <typename T> struct MeanReducer
+{
+  static const bool PacketAccess = packet_traits<T>::HasAdd && !NumTraits<T>::IsInteger;
+  static const bool IsStateful = true;
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  MeanReducer() : scalarCount_(0), packetCount_(0) { }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reduce(const T t, T* accum) {
+    internal::scalar_sum_op<T> sum_op;
+    *accum = sum_op(*accum, t);
+    scalarCount_++;
+  }
+  template <typename Packet>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reducePacket(const Packet& p, Packet* accum) {
+    (*accum) = padd<Packet>(*accum, p);
+    packetCount_++;
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T initialize() const {
+    internal::scalar_cast_op<int, T> conv;
+    return conv(0);
+  }
+  template <typename Packet>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet initializePacket() const {
+    return pset1<Packet>(initialize());
+  }
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T finalize(const T accum) const {
+    return accum / scalarCount_;
+  }
+  template <typename Packet>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet finalizePacket(const Packet& vaccum) const {
+    return pdiv(vaccum, pset1<Packet>(packetCount_));
+  }
+  template <typename Packet>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T finalizeBoth(const T saccum, const Packet& vaccum) const {
+    internal::scalar_sum_op<T> sum_op;
+    return sum_op(saccum, predux(vaccum)) / (scalarCount_ + packetCount_ * unpacket_traits<Packet>::size);
+  }
+
+  protected:
+    DenseIndex scalarCount_;
+    DenseIndex packetCount_;
+};
+
+template <typename T, typename Device>
+struct reducer_traits<MeanReducer<T>, Device> {
+  enum {
+    Cost = NumTraits<T>::AddCost,
+    PacketAccess = PacketType<T, Device>::HasAdd
+  };
+};
+
+
+template <typename T, bool IsMax = true, bool IsInteger = true>
+struct MinMaxBottomValue {
+  EIGEN_DEVICE_FUNC static EIGEN_STRONG_INLINE T bottom_value() {
+    return Eigen::NumTraits<T>::lowest();
+  }
+};
+template <typename T>
+struct MinMaxBottomValue<T, true, false> {
+  EIGEN_DEVICE_FUNC static EIGEN_STRONG_INLINE T bottom_value() {
+    return -Eigen::NumTraits<T>::infinity();
+  }
+};
+template <typename T>
+struct MinMaxBottomValue<T, false, true> {
+  EIGEN_DEVICE_FUNC static EIGEN_STRONG_INLINE T bottom_value() {
+    return Eigen::NumTraits<T>::highest();
+  }
+};
+template <typename T>
+struct MinMaxBottomValue<T, false, false> {
+  EIGEN_DEVICE_FUNC static EIGEN_STRONG_INLINE T bottom_value() {
+    return Eigen::NumTraits<T>::infinity();
+  }
+};
+
+
+template <typename T> struct MaxReducer
+{
+  static const bool PacketAccess = packet_traits<T>::HasMax;
+  static const bool IsStateful = false;
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reduce(const T t, T* accum) const {
+    if (t > *accum) { *accum = t; }
+  }
+  template <typename Packet>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reducePacket(const Packet& p, Packet* accum) const {
+    (*accum) = pmax<Packet>(*accum, p);
+  }
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T initialize() const {
+    return MinMaxBottomValue<T, true, Eigen::NumTraits<T>::IsInteger>::bottom_value();
+  }
+  template <typename Packet>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet initializePacket() const {
+    return pset1<Packet>(initialize());
+  }
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T finalize(const T accum) const {
+    return accum;
+  }
+  template <typename Packet>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet finalizePacket(const Packet& vaccum) const {
+    return vaccum;
+  }
+  template <typename Packet>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T finalizeBoth(const T saccum, const Packet& vaccum) const {
+    return numext::maxi(saccum, predux_max(vaccum));
+  }
+};
+
+template <typename T, typename Device>
+struct reducer_traits<MaxReducer<T>, Device> {
+  enum {
+    Cost = NumTraits<T>::AddCost,
+    PacketAccess = PacketType<T, Device>::HasMax
+  };
+};
+
+
+template <typename T> struct MinReducer
+{
+  static const bool PacketAccess = packet_traits<T>::HasMin;
+  static const bool IsStateful = false;
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reduce(const T t, T* accum) const {
+    if (t < *accum) { *accum = t; }
+  }
+  template <typename Packet>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reducePacket(const Packet& p, Packet* accum) const {
+    (*accum) = pmin<Packet>(*accum, p);
+  }
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T initialize() const {
+    return MinMaxBottomValue<T, false, Eigen::NumTraits<T>::IsInteger>::bottom_value();
+  }
+  template <typename Packet>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet initializePacket() const {
+    return pset1<Packet>(initialize());
+  }
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T finalize(const T accum) const {
+    return accum;
+  }
+  template <typename Packet>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet finalizePacket(const Packet& vaccum) const {
+    return vaccum;
+  }
+  template <typename Packet>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T finalizeBoth(const T saccum, const Packet& vaccum) const {
+    return numext::mini(saccum, predux_min(vaccum));
+  }
+};
+
+template <typename T, typename Device>
+struct reducer_traits<MinReducer<T>, Device> {
+  enum {
+    Cost = NumTraits<T>::AddCost,
+    PacketAccess = PacketType<T, Device>::HasMin
+  };
+};
+
+
+template <typename T> struct ProdReducer
+{
+  static const bool PacketAccess = packet_traits<T>::HasMul;
+  static const bool IsStateful = false;
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reduce(const T t, T* accum) const {
+    internal::scalar_product_op<T> prod_op;
+    (*accum) = prod_op(*accum, t);
+  }
+  template <typename Packet>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reducePacket(const Packet& p, Packet* accum) const {
+    (*accum) = pmul<Packet>(*accum, p);
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T initialize() const {
+    internal::scalar_cast_op<int, T> conv;
+    return conv(1);
+  }
+  template <typename Packet>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet initializePacket() const {
+    return pset1<Packet>(initialize());
+  }
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T finalize(const T accum) const {
+    return accum;
+  }
+  template <typename Packet>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet finalizePacket(const Packet& vaccum) const {
+    return vaccum;
+  }
+  template <typename Packet>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T finalizeBoth(const T saccum, const Packet& vaccum) const {
+    internal::scalar_product_op<T> prod_op;
+    return prod_op(saccum, predux_mul(vaccum));
+  }
+};
+
+template <typename T, typename Device>
+struct reducer_traits<ProdReducer<T>, Device> {
+  enum {
+    Cost = NumTraits<T>::MulCost,
+    PacketAccess = PacketType<T, Device>::HasMul
+  };
+};
+
+
+struct AndReducer
+{
+  static const bool PacketAccess = false;
+  static const bool IsStateful = false;
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reduce(bool t, bool* accum) const {
+    *accum = *accum && t;
+  }
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool initialize() const {
+    return true;
+  }
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool finalize(bool accum) const {
+    return accum;
+  }
+};
+
+template <typename Device>
+struct reducer_traits<AndReducer, Device> {
+  enum {
+    Cost = 1,
+    PacketAccess = false
+  };
+};
+
+
+struct OrReducer {
+  static const bool PacketAccess = false;
+  static const bool IsStateful = false;
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reduce(bool t, bool* accum) const {
+    *accum = *accum || t;
+  }
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool initialize() const {
+    return false;
+  }
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool finalize(bool accum) const {
+    return accum;
+  }
+};
+
+template <typename Device>
+struct reducer_traits<OrReducer, Device> {
+  enum {
+    Cost = 1,
+    PacketAccess = false
+  };
+};
+
+
+// Argmin/Argmax reducers
+template <typename T> struct ArgMaxTupleReducer
+{
+  static const bool PacketAccess = false;
+  static const bool IsStateful = false;
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reduce(const T t, T* accum) const {
+    if (t.second > accum->second) { *accum = t; }
+  }
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T initialize() const {
+    return T(0, NumTraits<typename T::second_type>::lowest());
+  }
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T finalize(const T& accum) const {
+    return accum;
+  }
+};
+
+template <typename T, typename Device>
+struct reducer_traits<ArgMaxTupleReducer<T>, Device> {
+  enum {
+    Cost = NumTraits<T>::AddCost,
+    PacketAccess = false
+  };
+};
+
+
+template <typename T> struct ArgMinTupleReducer
+{
+  static const bool PacketAccess = false;
+  static const bool IsStateful = false;
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reduce(const T& t, T* accum) const {
+    if (t.second < accum->second) { *accum = t; }
+  }
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T initialize() const {
+    return T(0, NumTraits<typename T::second_type>::highest());
+  }
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T finalize(const T& accum) const {
+    return accum;
+  }
+};
+
+template <typename T, typename Device>
+struct reducer_traits<ArgMinTupleReducer<T>, Device> {
+  enum {
+    Cost = NumTraits<T>::AddCost,
+    PacketAccess = false
+  };
+};
+
+
+template <typename T, typename Index, size_t NumDims>
+class GaussianGenerator {
+ public:
+  static const bool PacketAccess = false;
+
+  EIGEN_DEVICE_FUNC GaussianGenerator(const array<T, NumDims>& means,
+                                      const array<T, NumDims>& std_devs)
+      : m_means(means)
+  {
+    for (size_t i = 0; i < NumDims; ++i) {
+      m_two_sigmas[i] = std_devs[i] * std_devs[i] * 2;
+    }
+  }
+
+  EIGEN_DEVICE_FUNC T operator()(const array<Index, NumDims>& coordinates) const {
+    T tmp = T(0);
+    for (size_t i = 0; i < NumDims; ++i) {
+      T offset = coordinates[i] - m_means[i];
+      tmp += offset * offset / m_two_sigmas[i];
+    }
+    return numext::exp(-tmp);
+  }
+
+ private:
+  array<T, NumDims> m_means;
+  array<T, NumDims> m_two_sigmas;
+};
+
+template <typename T, typename Index, size_t NumDims>
+struct functor_traits<GaussianGenerator<T, Index, NumDims> > {
+  enum {
+    Cost = NumDims * (2 * NumTraits<T>::AddCost + NumTraits<T>::MulCost +
+                      functor_traits<scalar_quotient_op<T, T> >::Cost) +
+           functor_traits<scalar_exp_op<T> >::Cost,
+    PacketAccess = GaussianGenerator<T, Index, NumDims>::PacketAccess
+  };
+};
+
+} // end namespace internal
+} // end namespace Eigen
+
+#endif // EIGEN_CXX11_TENSOR_TENSOR_FUNCTORS_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceDefault.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceDefault.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceDefault.h	(revision 3762)
@@ -0,0 +1,81 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2014 Benoit Steiner <benoit.steiner.goog@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CXX11_TENSOR_TENSOR_DEVICE_DEFAULT_H
+#define EIGEN_CXX11_TENSOR_TENSOR_DEVICE_DEFAULT_H
+
+
+namespace Eigen {
+
+// Default device for the machine (typically a single cpu core)
+struct DefaultDevice {
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void* allocate(size_t num_bytes) const {
+    return internal::aligned_malloc(num_bytes);
+  }
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void deallocate(void* buffer) const {
+    internal::aligned_free(buffer);
+  }
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void memcpy(void* dst, const void* src, size_t n) const {
+    ::memcpy(dst, src, n);
+  }
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void memcpyHostToDevice(void* dst, const void* src, size_t n) const {
+    memcpy(dst, src, n);
+  }
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void memcpyDeviceToHost(void* dst, const void* src, size_t n) const {
+    memcpy(dst, src, n);
+  }
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void memset(void* buffer, int c, size_t n) const {
+    ::memset(buffer, c, n);
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE size_t numThreads() const {
+#ifndef __CUDA_ARCH__
+    // Running on the host CPU
+    return 1;
+#else
+    // Running on a CUDA device
+    return 32;
+#endif
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE size_t firstLevelCacheSize() const {
+#ifndef __CUDA_ARCH__
+    // Running on the host CPU
+    return l1CacheSize();
+#else
+    // Running on a CUDA device, return the amount of shared memory available.
+    return 48*1024;
+#endif
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE size_t lastLevelCacheSize() const {
+#ifndef __CUDA_ARCH__
+    // Running single threaded on the host CPU
+    return l3CacheSize();
+#else
+    // Running on a CUDA device
+    return firstLevelCacheSize();
+#endif
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE int majorDeviceVersion() const {
+#ifndef __CUDA_ARCH__
+    // Running single threaded on the host CPU
+    // Should return an enum that encodes the ISA supported by the CPU
+    return 1;
+#else
+    // Running on a CUDA device
+    return __CUDA_ARCH__ / 100;
+#endif
+  }
+};
+
+}  // namespace Eigen
+
+#endif // EIGEN_CXX11_TENSOR_TENSOR_DEVICE_DEFAULT_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorStorage.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorStorage.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorStorage.h	(revision 3762)
@@ -0,0 +1,146 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2013 Christian Seiler <christian@iwakd.de>
+// Copyright (C) 2014-2015 Benoit Steiner <benoit.steiner.goog@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CXX11_TENSOR_TENSORSTORAGE_H
+#define EIGEN_CXX11_TENSOR_TENSORSTORAGE_H
+
+#ifdef EIGEN_TENSOR_STORAGE_CTOR_PLUGIN
+  #define EIGEN_INTERNAL_TENSOR_STORAGE_CTOR_PLUGIN EIGEN_TENSOR_STORAGE_CTOR_PLUGIN;
+#else
+  #define EIGEN_INTERNAL_TENSOR_STORAGE_CTOR_PLUGIN
+#endif
+
+namespace Eigen {
+
+/** \internal
+  *
+  * \class TensorStorage
+  * \ingroup CXX11_Tensor_Module
+  *
+  * \brief Stores the data of a tensor
+  *
+  * This class stores the data of fixed-size, dynamic-size or mixed tensors
+  * in a way as compact as possible.
+  *
+  * \sa Tensor
+  */
+template<typename T, typename Dimensions, int Options> class TensorStorage;
+
+
+// Pure fixed-size storage
+template<typename T, typename FixedDimensions, int Options_>
+class TensorStorage
+{
+ private:
+  static const std::size_t Size = FixedDimensions::total_size;
+
+  // Allocate an array of size at least one to prevent compiler warnings.
+  static const std::size_t MinSize = max_n_1<Size>::size;
+  EIGEN_ALIGN_MAX T m_data[MinSize];
+
+  FixedDimensions m_dimensions;
+
+ public:
+  EIGEN_DEVICE_FUNC
+  EIGEN_STRONG_INLINE TensorStorage() {
+  }
+
+  EIGEN_DEVICE_FUNC
+  EIGEN_STRONG_INLINE T *data() { return m_data; }
+  EIGEN_DEVICE_FUNC
+  EIGEN_STRONG_INLINE const T *data() const { return m_data; }
+
+  EIGEN_DEVICE_FUNC
+  EIGEN_STRONG_INLINE const FixedDimensions& dimensions() const { return m_dimensions; }
+
+  EIGEN_DEVICE_FUNC
+  EIGEN_STRONG_INLINE DenseIndex size() const { return m_dimensions.TotalSize(); }
+};
+
+
+// pure dynamic
+template<typename T, typename IndexType, int NumIndices_, int Options_>
+class TensorStorage<T, DSizes<IndexType, NumIndices_>, Options_>
+{
+  public:
+    typedef IndexType Index;
+    typedef DSizes<IndexType, NumIndices_> Dimensions;
+    typedef TensorStorage<T, DSizes<IndexType, NumIndices_>, Options_> Self;
+
+    EIGEN_DEVICE_FUNC TensorStorage() : m_data(0), m_dimensions() {
+      if (NumIndices_ == 0) {
+	m_data = internal::conditional_aligned_new_auto<T,(Options_&DontAlign)==0>(1);
+      }
+    }
+    EIGEN_DEVICE_FUNC TensorStorage(internal::constructor_without_unaligned_array_assert)
+      : m_data(0), m_dimensions(internal::template repeat<NumIndices_, Index>(0)) {}
+    EIGEN_DEVICE_FUNC TensorStorage(Index size, const array<Index, NumIndices_>& dimensions)
+        : m_data(internal::conditional_aligned_new_auto<T,(Options_&DontAlign)==0>(size)), m_dimensions(dimensions)
+      { EIGEN_INTERNAL_TENSOR_STORAGE_CTOR_PLUGIN }
+
+#if EIGEN_HAS_VARIADIC_TEMPLATES
+    template <typename... DenseIndex>
+    EIGEN_DEVICE_FUNC TensorStorage(DenseIndex... indices) : m_dimensions(indices...) {
+      m_data = internal::conditional_aligned_new_auto<T,(Options_&DontAlign)==0>(internal::array_prod(m_dimensions));
+    }
+#endif
+
+    EIGEN_DEVICE_FUNC TensorStorage(const Self& other)
+      : m_data(internal::conditional_aligned_new_auto<T,(Options_&DontAlign)==0>(internal::array_prod(other.m_dimensions)))
+      , m_dimensions(other.m_dimensions)
+    {
+      internal::smart_copy(other.m_data, other.m_data+internal::array_prod(other.m_dimensions), m_data);
+    }
+    EIGEN_DEVICE_FUNC Self& operator=(const Self& other)
+    {
+      if (this != &other) {
+        Self tmp(other);
+        this->swap(tmp);
+      }
+      return *this;
+    }
+
+    EIGEN_DEVICE_FUNC  ~TensorStorage() { internal::conditional_aligned_delete_auto<T,(Options_&DontAlign)==0>(m_data, internal::array_prod(m_dimensions)); }
+    EIGEN_DEVICE_FUNC  void swap(Self& other)
+    { numext::swap(m_data,other.m_data); numext::swap(m_dimensions,other.m_dimensions); }
+
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Dimensions& dimensions() const {return m_dimensions;}
+
+    EIGEN_DEVICE_FUNC void resize(Index size, const array<Index, NumIndices_>& nbDimensions)
+    {
+      const Index currentSz = internal::array_prod(m_dimensions);
+      if(size != currentSz)
+      {
+        internal::conditional_aligned_delete_auto<T,(Options_&DontAlign)==0>(m_data, currentSz);
+        if (size)
+          m_data = internal::conditional_aligned_new_auto<T,(Options_&DontAlign)==0>(size);
+        else if (NumIndices_ == 0) {
+	  m_data = internal::conditional_aligned_new_auto<T,(Options_&DontAlign)==0>(1);
+	}
+	else 
+          m_data = 0;
+        EIGEN_INTERNAL_DENSE_STORAGE_CTOR_PLUGIN({})
+      }
+      m_dimensions = nbDimensions;
+    }
+
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T *data() { return m_data; }
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const T *data() const { return m_data; }
+
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Index size() const { return m_dimensions.TotalSize(); }
+
+ private:
+  T *m_data;
+  Dimensions m_dimensions;
+};
+
+} // end namespace Eigen
+
+#endif // EIGEN_CXX11_TENSOR_TENSORSTORAGE_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorTraits.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorTraits.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorTraits.h	(revision 3762)
@@ -0,0 +1,272 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2014 Benoit Steiner <benoit.steiner.goog@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CXX11_TENSOR_TENSOR_TRAITS_H
+#define EIGEN_CXX11_TENSOR_TENSOR_TRAITS_H
+
+namespace Eigen {
+namespace internal {
+
+
+template<typename Scalar, int Options>
+class compute_tensor_flags
+{
+  enum {
+    is_dynamic_size_storage = 1,
+
+    is_aligned =
+    (
+        ((Options&DontAlign)==0) && (
+#if EIGEN_MAX_STATIC_ALIGN_BYTES>0
+            (!is_dynamic_size_storage)
+#else
+            0
+#endif
+            |
+#if EIGEN_MAX_ALIGN_BYTES>0
+            is_dynamic_size_storage
+#else
+            0
+#endif
+      )
+     ),
+    packet_access_bit = packet_traits<Scalar>::Vectorizable && is_aligned ? PacketAccessBit : 0
+  };
+
+  public:
+    enum { ret = packet_access_bit };
+};
+
+
+template<typename Scalar_, int NumIndices_, int Options_, typename IndexType_>
+struct traits<Tensor<Scalar_, NumIndices_, Options_, IndexType_> >
+{
+  typedef Scalar_ Scalar;
+  typedef Dense StorageKind;
+  typedef IndexType_ Index;
+  static const int NumDimensions = NumIndices_;
+  static const int Layout = Options_ & RowMajor ? RowMajor : ColMajor;
+  enum {
+    Options = Options_,
+    Flags = compute_tensor_flags<Scalar_, Options_>::ret | (is_const<Scalar_>::value ? 0 : LvalueBit)
+  };
+  template <typename T> struct MakePointer {
+    typedef T* Type;
+  };
+};
+
+
+template<typename Scalar_, typename Dimensions, int Options_, typename IndexType_>
+struct traits<TensorFixedSize<Scalar_, Dimensions, Options_, IndexType_> >
+{
+  typedef Scalar_ Scalar;
+  typedef Dense StorageKind;
+  typedef IndexType_ Index;
+  static const int NumDimensions = array_size<Dimensions>::value;
+  static const int Layout = Options_ & RowMajor ? RowMajor : ColMajor;
+  enum {
+    Options = Options_,
+    Flags = compute_tensor_flags<Scalar_, Options_>::ret | (is_const<Scalar_>::value ? 0: LvalueBit)
+  };
+  template <typename T> struct MakePointer {
+    typedef T* Type;
+  };
+};
+
+
+template<typename PlainObjectType, int Options_, template <class> class MakePointer_>
+struct traits<TensorMap<PlainObjectType, Options_, MakePointer_> >
+  : public traits<PlainObjectType>
+{
+  typedef traits<PlainObjectType> BaseTraits;
+  typedef typename BaseTraits::Scalar Scalar;
+  typedef typename BaseTraits::StorageKind StorageKind;
+  typedef typename BaseTraits::Index Index;
+  static const int NumDimensions = BaseTraits::NumDimensions;
+  static const int Layout = BaseTraits::Layout;
+  enum {
+    Options = Options_,
+    Flags = BaseTraits::Flags
+  };
+  template <class T> struct MakePointer {
+    // Intermediate typedef to workaround MSVC issue.
+    typedef MakePointer_<T> MakePointerT;
+    typedef typename MakePointerT::Type Type;
+  };
+};
+
+template<typename PlainObjectType>
+struct traits<TensorRef<PlainObjectType> >
+  : public traits<PlainObjectType>
+{
+  typedef traits<PlainObjectType> BaseTraits;
+  typedef typename BaseTraits::Scalar Scalar;
+  typedef typename BaseTraits::StorageKind StorageKind;
+  typedef typename BaseTraits::Index Index;
+  static const int NumDimensions = BaseTraits::NumDimensions;
+  static const int Layout = BaseTraits::Layout;
+  enum {
+    Options = BaseTraits::Options,
+    Flags = BaseTraits::Flags
+  };
+};
+
+
+template<typename _Scalar, int NumIndices_, int Options, typename IndexType_>
+struct eval<Tensor<_Scalar, NumIndices_, Options, IndexType_>, Eigen::Dense>
+{
+  typedef const Tensor<_Scalar, NumIndices_, Options, IndexType_>& type;
+};
+
+template<typename _Scalar, int NumIndices_, int Options, typename IndexType_>
+struct eval<const Tensor<_Scalar, NumIndices_, Options, IndexType_>, Eigen::Dense>
+{
+  typedef const Tensor<_Scalar, NumIndices_, Options, IndexType_>& type;
+};
+
+template<typename Scalar_, typename Dimensions, int Options, typename IndexType_>
+struct eval<TensorFixedSize<Scalar_, Dimensions, Options, IndexType_>, Eigen::Dense>
+{
+  typedef const TensorFixedSize<Scalar_, Dimensions, Options, IndexType_>& type;
+};
+
+template<typename Scalar_, typename Dimensions, int Options, typename IndexType_>
+struct eval<const TensorFixedSize<Scalar_, Dimensions, Options, IndexType_>, Eigen::Dense>
+{
+  typedef const TensorFixedSize<Scalar_, Dimensions, Options, IndexType_>& type;
+};
+
+template<typename PlainObjectType, int Options, template <class> class MakePointer>
+struct eval<TensorMap<PlainObjectType, Options, MakePointer>, Eigen::Dense>
+{
+  typedef const TensorMap<PlainObjectType, Options, MakePointer>& type;
+};
+
+template<typename PlainObjectType, int Options, template <class> class MakePointer>
+struct eval<const TensorMap<PlainObjectType, Options, MakePointer>, Eigen::Dense>
+{
+  typedef const TensorMap<PlainObjectType, Options, MakePointer>& type;
+};
+
+template<typename PlainObjectType>
+struct eval<TensorRef<PlainObjectType>, Eigen::Dense>
+{
+  typedef const TensorRef<PlainObjectType>& type;
+};
+
+template<typename PlainObjectType>
+struct eval<const TensorRef<PlainObjectType>, Eigen::Dense>
+{
+  typedef const TensorRef<PlainObjectType>& type;
+};
+
+// TODO nested<> does not exist anymore in Eigen/Core, and it thus has to be removed in favor of ref_selector.
+template<typename T, int n=1, typename PlainObject = void> struct nested
+{
+  typedef typename ref_selector<T>::type type;
+};
+
+template <typename Scalar_, int NumIndices_, int Options_, typename IndexType_>
+struct nested<Tensor<Scalar_, NumIndices_, Options_, IndexType_> >
+{
+  typedef const Tensor<Scalar_, NumIndices_, Options_, IndexType_>& type;
+};
+
+template <typename Scalar_, int NumIndices_, int Options_, typename IndexType_>
+struct nested<const Tensor<Scalar_, NumIndices_, Options_, IndexType_> >
+{
+  typedef const Tensor<Scalar_, NumIndices_, Options_, IndexType_>& type;
+};
+
+template <typename Scalar_, typename Dimensions, int Options, typename IndexType_>
+struct nested<TensorFixedSize<Scalar_, Dimensions, Options, IndexType_> >
+{
+  typedef const TensorFixedSize<Scalar_, Dimensions, Options, IndexType_>& type;
+};
+
+template <typename Scalar_, typename Dimensions, int Options, typename IndexType_>
+struct nested<const TensorFixedSize<Scalar_, Dimensions, Options, IndexType_> >
+{
+  typedef const TensorFixedSize<Scalar_, Dimensions, Options, IndexType_>& type;
+};
+
+
+template <typename PlainObjectType, int Options, template <class> class MakePointer>
+struct nested<TensorMap<PlainObjectType, Options, MakePointer> >
+{
+  typedef const TensorMap<PlainObjectType, Options, MakePointer>& type;
+};
+
+template <typename PlainObjectType, int Options, template <class> class MakePointer>
+struct nested<const TensorMap<PlainObjectType, Options, MakePointer> >
+{
+  typedef const TensorMap<PlainObjectType, Options, MakePointer>& type;
+};
+
+template <typename PlainObjectType>
+struct nested<TensorRef<PlainObjectType> >
+{
+  typedef const TensorRef<PlainObjectType>& type;
+};
+
+template <typename PlainObjectType>
+struct nested<const TensorRef<PlainObjectType> >
+{
+  typedef const TensorRef<PlainObjectType>& type;
+};
+
+}  // end namespace internal
+
+// Convolutional layers take in an input tensor of shape (D, R, C, B), or (D, C,
+// R, B), and convolve it with a set of filters, which can also be presented as
+// a tensor (D, K, K, M), where M is the number of filters, K is the filter
+// size, and each 3-dimensional tensor of size (D, K, K) is a filter. For
+// simplicity we assume that we always use square filters (which is usually the
+// case in images), hence the two Ks in the tensor dimension.  It also takes in
+// a few additional parameters:
+// Stride (S): The convolution stride is the offset between locations where we
+//             apply the filters.  A larger stride means that the output will be
+//             spatially smaller.
+// Padding (P): The padding we apply to the input tensor along the R and C
+//              dimensions.  This is usually used to make sure that the spatial
+//              dimensions of the output matches our intention.
+//
+// Two types of padding are often used:
+//   SAME: The pad value is computed so that the output will have size
+//         R/S and C/S.
+//   VALID: no padding is carried out.
+// When we do padding, the padded values at the padded locations are usually
+// zero.
+//
+// The output dimensions for convolution, when given all the parameters above,
+// are as follows:
+// When Padding = SAME: the output size is (B, R', C', M), where
+//   R' = ceil(float(R) / float(S))
+//   C' = ceil(float(C) / float(S))
+// where ceil is the ceiling function.  The input tensor is padded with 0 as
+// needed.  The number of padded rows and columns are computed as:
+//   Pr = ((R' - 1) * S + K - R) / 2
+//   Pc = ((C' - 1) * S + K - C) / 2
+// when the stride is 1, we have the simplified case R'=R, C'=C, Pr=Pc=(K-1)/2.
+// This is where SAME comes from - the output has the same size as the input has.
+// When Padding = VALID: the output size is computed as
+//   R' = ceil(float(R - K + 1) / float(S))
+//   C' = ceil(float(C - K + 1) / float(S))
+// and the number of padded rows and columns are computed in the same way as in
+// the SAME case.
+// When the stride is 1, we have the simplified case R'=R-K+1, C'=C-K+1, Pr=0,
+// Pc=0.
+typedef enum {
+  PADDING_VALID = 1,
+  PADDING_SAME = 2
+} PaddingType;
+
+}  // end namespace Eigen
+
+#endif // EIGEN_CXX11_TENSOR_TENSOR_TRAITS_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorUInt128.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorUInt128.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorUInt128.h	(revision 3762)
@@ -0,0 +1,248 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2015 Benoit Steiner <benoit.steiner.goog@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CXX11_TENSOR_TENSOR_UINT128_H
+#define EIGEN_CXX11_TENSOR_TENSOR_UINT128_H
+
+namespace Eigen {
+namespace internal {
+
+
+template <uint64_t n>
+struct static_val {
+  static const uint64_t value = n;
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE operator uint64_t() const { return n; }
+
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE static_val() { }
+
+  template <typename T>
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE static_val(const T& v) {
+    eigen_assert(v == n);
+  }
+};
+
+
+template <typename HIGH = uint64_t, typename LOW = uint64_t>
+struct TensorUInt128
+{
+  HIGH high;
+  LOW low;
+
+  template<typename OTHER_HIGH, typename OTHER_LOW>
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+  TensorUInt128(const TensorUInt128<OTHER_HIGH, OTHER_LOW>& other) : high(other.high), low(other.low) {
+    EIGEN_STATIC_ASSERT(sizeof(OTHER_HIGH) <= sizeof(HIGH), YOU_MADE_A_PROGRAMMING_MISTAKE);
+    EIGEN_STATIC_ASSERT(sizeof(OTHER_LOW) <= sizeof(LOW), YOU_MADE_A_PROGRAMMING_MISTAKE);
+  }
+
+  template<typename OTHER_HIGH, typename OTHER_LOW>
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+  TensorUInt128& operator = (const TensorUInt128<OTHER_HIGH, OTHER_LOW>& other) {
+    EIGEN_STATIC_ASSERT(sizeof(OTHER_HIGH) <= sizeof(HIGH), YOU_MADE_A_PROGRAMMING_MISTAKE);
+    EIGEN_STATIC_ASSERT(sizeof(OTHER_LOW) <= sizeof(LOW), YOU_MADE_A_PROGRAMMING_MISTAKE);
+    high = other.high;
+    low = other.low;
+    return *this;
+  }
+
+  template<typename T>
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+  explicit TensorUInt128(const T& x) : high(0), low(x) {
+    eigen_assert((static_cast<typename conditional<sizeof(T) == 8, uint64_t, uint32_t>::type>(x) <= NumTraits<uint64_t>::highest()));
+    eigen_assert(x >= 0);
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+  TensorUInt128(HIGH y, LOW x) : high(y), low(x) { }
+
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE operator LOW() const {
+    return low;
+  }
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE LOW lower() const {
+    return low;
+  }
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE HIGH upper() const {
+    return high;
+  }
+};
+
+
+template <typename HL, typename LL, typename HR, typename LR>
+EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+bool operator == (const TensorUInt128<HL, LL>& lhs, const TensorUInt128<HR, LR>& rhs)
+{
+  return (lhs.high == rhs.high) & (lhs.low == rhs.low);
+}
+
+template <typename HL, typename LL, typename HR, typename LR>
+EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+bool operator != (const TensorUInt128<HL, LL>& lhs, const TensorUInt128<HR, LR>& rhs)
+{
+  return (lhs.high != rhs.high) | (lhs.low != rhs.low);
+}
+
+template <typename HL, typename LL, typename HR, typename LR>
+EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+bool operator >= (const TensorUInt128<HL, LL>& lhs, const TensorUInt128<HR, LR>& rhs)
+{
+  if (lhs.high != rhs.high) {
+    return lhs.high > rhs.high;
+  }
+  return lhs.low >= rhs.low;
+}
+
+template <typename HL, typename LL, typename HR, typename LR>
+EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+bool operator < (const TensorUInt128<HL, LL>& lhs, const TensorUInt128<HR, LR>& rhs)
+{
+  if (lhs.high != rhs.high) {
+    return lhs.high < rhs.high;
+  }
+  return lhs.low < rhs.low;
+}
+
+template <typename HL, typename LL, typename HR, typename LR>
+EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+TensorUInt128<uint64_t, uint64_t> operator + (const TensorUInt128<HL, LL>& lhs, const TensorUInt128<HR, LR>& rhs)
+{
+  TensorUInt128<uint64_t, uint64_t> result(lhs.high + rhs.high, lhs.low + rhs.low);
+  if (result.low < rhs.low) {
+    result.high += 1;
+  }
+  return result;
+}
+
+template <typename HL, typename LL, typename HR, typename LR>
+EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+TensorUInt128<uint64_t, uint64_t> operator - (const TensorUInt128<HL, LL>& lhs, const TensorUInt128<HR, LR>& rhs)
+{
+  TensorUInt128<uint64_t, uint64_t> result(lhs.high - rhs.high, lhs.low - rhs.low);
+  if (result.low > lhs.low) {
+    result.high -= 1;
+  }
+  return result;
+}
+
+
+template <typename HL, typename LL, typename HR, typename LR>
+static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+TensorUInt128<uint64_t, uint64_t> operator * (const TensorUInt128<HL, LL>& lhs, const TensorUInt128<HR, LR>& rhs)
+{
+  // Split each 128-bit integer into 4 32-bit integers, and then do the
+  // multiplications by hand as follow:
+  //   lhs      a  b  c  d
+  //   rhs      e  f  g  h
+  //           -----------
+  //           ah bh ch dh
+  //           bg cg dg
+  //           cf df
+  //           de
+  // The result is stored in 2 64bit integers, high and low.
+
+  const uint64_t LOW = 0x00000000FFFFFFFFLL;
+  const uint64_t HIGH = 0xFFFFFFFF00000000LL;
+
+  uint64_t d = lhs.low & LOW;
+  uint64_t c = (lhs.low & HIGH) >> 32LL;
+  uint64_t b = lhs.high & LOW;
+  uint64_t a = (lhs.high & HIGH) >> 32LL;
+
+  uint64_t h = rhs.low & LOW;
+  uint64_t g = (rhs.low & HIGH) >> 32LL;
+  uint64_t f = rhs.high & LOW;
+  uint64_t e = (rhs.high & HIGH) >> 32LL;
+
+  // Compute the low 32 bits of low
+  uint64_t acc = d * h;
+  uint64_t low = acc & LOW;
+  //  Compute the high 32 bits of low. Add a carry every time we wrap around
+  acc >>= 32LL;
+  uint64_t carry = 0;
+  uint64_t acc2 = acc + c * h;
+  if (acc2 < acc) {
+    carry++;
+  }
+  acc = acc2 + d * g;
+  if (acc < acc2) {
+    carry++;
+  }
+  low |= (acc << 32LL);
+
+  // Carry forward the high bits of acc to initiate the computation of the
+  // low 32 bits of high
+  acc2 = (acc >> 32LL) | (carry << 32LL);
+  carry = 0;
+
+  acc = acc2 + b * h;
+  if (acc < acc2) {
+    carry++;
+  }
+  acc2 = acc + c * g;
+  if (acc2 < acc) {
+    carry++;
+  }
+  acc = acc2 + d * f;
+  if (acc < acc2) {
+    carry++;
+  }
+  uint64_t high = acc & LOW;
+
+  // Start to compute the high 32 bits of high.
+  acc2 = (acc >> 32LL) | (carry << 32LL);
+
+  acc = acc2 + a * h;
+  acc2 = acc + b * g;
+  acc = acc2 + c * f;
+  acc2 = acc + d * e;
+  high |= (acc2 << 32LL);
+
+  return TensorUInt128<uint64_t, uint64_t>(high, low);
+}
+
+template <typename HL, typename LL, typename HR, typename LR>
+static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+TensorUInt128<uint64_t, uint64_t> operator / (const TensorUInt128<HL, LL>& lhs, const TensorUInt128<HR, LR>& rhs)
+{
+  if (rhs == TensorUInt128<static_val<0>, static_val<1> >(1)) {
+    return TensorUInt128<uint64_t, uint64_t>(lhs.high, lhs.low);
+  } else if (lhs < rhs) {
+    return TensorUInt128<uint64_t, uint64_t>(0);
+  } else {
+    // calculate the biggest power of 2 times rhs that's less than or equal to lhs
+    TensorUInt128<uint64_t, uint64_t> power2(1);
+    TensorUInt128<uint64_t, uint64_t> d(rhs);
+    TensorUInt128<uint64_t, uint64_t> tmp(lhs - d);
+    while (lhs >= d) {
+      tmp = tmp - d;
+      d = d + d;
+      power2 = power2 + power2;
+    }
+
+    tmp = TensorUInt128<uint64_t, uint64_t>(lhs.high, lhs.low);
+    TensorUInt128<uint64_t, uint64_t> result(0);
+    while (power2 != TensorUInt128<static_val<0>, static_val<0> >(0)) {
+      if (tmp >= d) {
+        tmp = tmp - d;
+        result = result + power2;
+      }
+      // Shift right
+      power2 = TensorUInt128<uint64_t, uint64_t>(power2.high >> 1, (power2.low >> 1) | (power2.high << 63));
+      d = TensorUInt128<uint64_t, uint64_t>(d.high >> 1, (d.low >> 1) | (d.high << 63));
+    }
+
+    return result;
+  }
+}
+
+
+}  // namespace internal
+}  // namespace Eigen
+
+
+#endif  // EIGEN_CXX11_TENSOR_TENSOR_UINT128_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorSycl.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorSycl.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorSycl.h	(revision 3762)
@@ -0,0 +1,82 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Mehdi Goli    Codeplay Software Ltd.
+// Ralph Potter  Codeplay Software Ltd.
+// Luke Iwanski  Codeplay Software Ltd.
+// Contact: eigen@codeplay.com
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+// General include header of SYCL target for Tensor Module
+#ifndef UNSUPPORTED_EIGEN_CXX11_SRC_TENSOR_TENSORSYCL_H
+#define UNSUPPORTED_EIGEN_CXX11_SRC_TENSOR_TENSORSYCL_H
+
+#ifdef EIGEN_USE_SYCL
+
+// global pointer to set different attribute state for a class
+template <class T>
+struct MakeGlobalPointer {
+  typedef typename cl::sycl::global_ptr<T>::pointer_t Type;
+};
+
+// global pointer to set different attribute state for a class
+template <class T>
+struct MakeLocalPointer {
+  typedef typename cl::sycl::local_ptr<T>::pointer_t Type;
+};
+
+
+namespace Eigen {
+namespace TensorSycl {
+namespace internal {
+
+/// This struct is used for special expression nodes with no operations (for example assign and selectOP).
+  struct NoOP;
+
+template<bool IsConst, typename T> struct GetType{
+  typedef const T Type;
+};
+template<typename T> struct GetType<false, T>{
+  typedef T Type;
+};
+
+}
+}
+}
+
+// tuple construction
+#include "TensorSyclTuple.h"
+
+// counting number of leaf at compile time
+#include "TensorSyclLeafCount.h"
+
+// The index PlaceHolder takes the actual expression and replaces the actual
+// data on it with the place holder. It uses the same pre-order expression tree
+// traverse as the leaf count in order to give the right access number to each
+// node in the expression
+#include "TensorSyclPlaceHolderExpr.h"
+
+// creation of an accessor tuple from a tuple of SYCL buffers
+#include "TensorSyclExtractAccessor.h"
+
+// this is used to change the address space type in tensor map for GPU
+#include "TensorSyclConvertToDeviceExpression.h"
+
+// this is used to extract the functors
+#include "TensorSyclExtractFunctors.h"
+
+// this is used to create tensormap on the device
+// this is used to construct the expression on the device
+#include "TensorSyclExprConstructor.h"
+
+/// this is used for extracting tensor reduction
+#include "TensorReductionSycl.h"
+
+// kernel execution using fusion
+#include "TensorSyclRun.h"
+
+#endif  // end of EIGEN_USE_SYCL
+#endif  // UNSUPPORTED_EIGEN_CXX11_SRC_TENSOR_TENSORSYCL_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorBase.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorBase.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorBase.h	(revision 3762)
@@ -0,0 +1,1012 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2014 Benoit Steiner <benoit.steiner.goog@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CXX11_TENSOR_TENSOR_BASE_H
+#define EIGEN_CXX11_TENSOR_TENSOR_BASE_H
+
+// clang-format off
+
+namespace Eigen {
+
+/** \class TensorBase
+  * \ingroup CXX11_Tensor_Module
+  *
+  * \brief The tensor base class.
+  *
+  * This class is the common parent of the Tensor and TensorMap class, thus
+  * making it possible to use either class interchangably in expressions.
+  */
+#ifndef EIGEN_PARSED_BY_DOXYGEN
+// FIXME Doxygen does not like the inheritance with different template parameters
+// Since there is no doxygen documentation inside, we disable it for now
+template<typename Derived>
+class TensorBase<Derived, ReadOnlyAccessors>
+{
+  public:
+    typedef internal::traits<Derived> DerivedTraits;
+    typedef typename DerivedTraits::Scalar Scalar;
+    typedef typename DerivedTraits::Index Index;
+    typedef typename internal::remove_const<Scalar>::type CoeffReturnType;
+    static const int NumDimensions = DerivedTraits::NumDimensions;
+
+    // Generic nullary operation support.
+    template <typename CustomNullaryOp> EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const TensorCwiseNullaryOp<CustomNullaryOp, const Derived>
+    nullaryExpr(const CustomNullaryOp& func) const {
+      return TensorCwiseNullaryOp<CustomNullaryOp, const Derived>(derived(), func);
+    }
+
+    // Coefficient-wise nullary operators
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const TensorCwiseNullaryOp<internal::scalar_constant_op<Scalar>, const Derived>
+    constant(const Scalar& value) const {
+      return nullaryExpr(internal::scalar_constant_op<Scalar>(value));
+    }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const TensorCwiseNullaryOp<internal::UniformRandomGenerator<Scalar>, const Derived>
+    random() const {
+      return nullaryExpr(internal::UniformRandomGenerator<Scalar>());
+    }
+    template <typename RandomGenerator> EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const TensorCwiseNullaryOp<RandomGenerator, const Derived>
+    random(const RandomGenerator& gen = RandomGenerator()) const {
+      return nullaryExpr(gen);
+    }
+
+    // Tensor generation
+    template <typename Generator> EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const TensorGeneratorOp<Generator, const Derived>
+    generate(const Generator& generator) const {
+      return TensorGeneratorOp<Generator, const Derived>(derived(), generator);
+    }
+
+    // Generic unary operation support.
+    template <typename CustomUnaryOp> EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const TensorCwiseUnaryOp<CustomUnaryOp, const Derived>
+    unaryExpr(const CustomUnaryOp& func) const {
+      return TensorCwiseUnaryOp<CustomUnaryOp, const Derived>(derived(), func);
+    }
+
+    // Coefficient-wise unary operators
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const TensorCwiseUnaryOp<internal::scalar_opposite_op<Scalar>, const Derived>
+    operator-() const {
+      return unaryExpr(internal::scalar_opposite_op<Scalar>());
+    }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const TensorCwiseUnaryOp<internal::scalar_sqrt_op<Scalar>, const Derived>
+    sqrt() const {
+      return unaryExpr(internal::scalar_sqrt_op<Scalar>());
+    }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const TensorCwiseUnaryOp<internal::scalar_sign_op<Scalar>, const Derived>
+    sign() const {
+      return unaryExpr(internal::scalar_sign_op<Scalar>());
+    }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const TensorCwiseUnaryOp<internal::scalar_rsqrt_op<Scalar>, const Derived>
+    rsqrt() const {
+      return unaryExpr(internal::scalar_rsqrt_op<Scalar>());
+    }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const TensorCwiseUnaryOp<internal::scalar_square_op<Scalar>, const Derived>
+    square() const {
+      return unaryExpr(internal::scalar_square_op<Scalar>());
+    }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const TensorCwiseUnaryOp<internal::scalar_cube_op<Scalar>, const Derived>
+    cube() const {
+      return unaryExpr(internal::scalar_cube_op<Scalar>());
+    }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const TensorCwiseUnaryOp<internal::scalar_inverse_op<Scalar>, const Derived>
+    inverse() const {
+      return unaryExpr(internal::scalar_inverse_op<Scalar>());
+    }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const TensorCwiseUnaryOp<internal::scalar_tanh_op<Scalar>, const Derived>
+    tanh() const {
+      return unaryExpr(internal::scalar_tanh_op<Scalar>());
+    }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const TensorCwiseUnaryOp<internal::scalar_lgamma_op<Scalar>, const Derived>
+    lgamma() const {
+      return unaryExpr(internal::scalar_lgamma_op<Scalar>());
+    }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const TensorCwiseUnaryOp<internal::scalar_digamma_op<Scalar>, const Derived>
+    digamma() const {
+      return unaryExpr(internal::scalar_digamma_op<Scalar>());
+    }
+
+    // igamma(a = this, x = other)
+    template<typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorCwiseBinaryOp<internal::scalar_igamma_op<Scalar>, const Derived, const OtherDerived>
+    igamma(const OtherDerived& other) const {
+      return binaryExpr(other.derived(), internal::scalar_igamma_op<Scalar>());
+    }
+
+    // igammac(a = this, x = other)
+    template<typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorCwiseBinaryOp<internal::scalar_igammac_op<Scalar>, const Derived, const OtherDerived>
+    igammac(const OtherDerived& other) const {
+      return binaryExpr(other.derived(), internal::scalar_igammac_op<Scalar>());
+    }
+
+    // zeta(x = this, q = other)
+    template<typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorCwiseBinaryOp<internal::scalar_zeta_op<Scalar>, const Derived, const OtherDerived>
+    zeta(const OtherDerived& other) const {
+      return binaryExpr(other.derived(), internal::scalar_zeta_op<Scalar>());
+    }
+
+    // polygamma(n = this, x = other)
+    template<typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorCwiseBinaryOp<internal::scalar_polygamma_op<Scalar>, const Derived, const OtherDerived>
+    polygamma(const OtherDerived& other) const {
+      return binaryExpr(other.derived(), internal::scalar_polygamma_op<Scalar>());
+    }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const TensorCwiseUnaryOp<internal::scalar_erf_op<Scalar>, const Derived>
+    erf() const {
+      return unaryExpr(internal::scalar_erf_op<Scalar>());
+    }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const TensorCwiseUnaryOp<internal::scalar_erfc_op<Scalar>, const Derived>
+    erfc() const {
+      return unaryExpr(internal::scalar_erfc_op<Scalar>());
+    }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const TensorCwiseUnaryOp<internal::scalar_sigmoid_op<Scalar>, const Derived>
+    sigmoid() const {
+      return unaryExpr(internal::scalar_sigmoid_op<Scalar>());
+    }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const TensorCwiseUnaryOp<internal::scalar_exp_op<Scalar>, const Derived>
+    exp() const {
+      return unaryExpr(internal::scalar_exp_op<Scalar>());
+    }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const TensorCwiseUnaryOp<internal::scalar_log_op<Scalar>, const Derived>
+    log() const {
+      return unaryExpr(internal::scalar_log_op<Scalar>());
+    }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const TensorCwiseUnaryOp<internal::scalar_log1p_op<Scalar>, const Derived>
+    log1p() const {
+      return unaryExpr(internal::scalar_log1p_op<Scalar>());
+    }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const TensorCwiseUnaryOp<internal::scalar_abs_op<Scalar>, const Derived>
+    abs() const {
+      return unaryExpr(internal::scalar_abs_op<Scalar>());
+    }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const TensorCwiseUnaryOp<internal::scalar_conjugate_op<Scalar>, const Derived>
+    conjugate() const {
+      return unaryExpr(internal::scalar_conjugate_op<Scalar>());
+    }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const TensorCwiseUnaryOp<internal::bind2nd_op<internal::scalar_pow_op<Scalar,Scalar> >, const Derived>
+    pow(Scalar exponent) const {
+      return unaryExpr(internal::bind2nd_op<internal::scalar_pow_op<Scalar,Scalar> >(exponent));
+    }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const TensorCwiseUnaryOp<internal::scalar_real_op<Scalar>, const Derived>
+    real() const {
+      return unaryExpr(internal::scalar_real_op<Scalar>());
+    }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const TensorCwiseUnaryOp<internal::scalar_imag_op<Scalar>, const Derived>
+    imag() const {
+      return unaryExpr(internal::scalar_imag_op<Scalar>());
+    }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const TensorCwiseUnaryOp<internal::bind2nd_op<internal::scalar_sum_op<Scalar,Scalar> >, const Derived>
+    operator+ (Scalar rhs) const {
+      return unaryExpr(internal::bind2nd_op<internal::scalar_sum_op<Scalar,Scalar> >(rhs));
+    }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE friend
+    const TensorCwiseUnaryOp<internal::bind1st_op<internal::scalar_sum_op<Scalar> >, const Derived>
+    operator+ (Scalar lhs, const Derived& rhs) {
+      return rhs.unaryExpr(internal::bind1st_op<internal::scalar_sum_op<Scalar> >(lhs));
+    }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const TensorCwiseUnaryOp<internal::bind2nd_op<internal::scalar_difference_op<Scalar,Scalar> >, const Derived>
+    operator- (Scalar rhs) const {
+      EIGEN_STATIC_ASSERT((NumTraits<Scalar>::IsSigned || internal::is_same<Scalar, const std::complex<float> >::value), YOU_MADE_A_PROGRAMMING_MISTAKE);
+      return unaryExpr(internal::bind2nd_op<internal::scalar_difference_op<Scalar,Scalar> >(rhs));
+    }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE friend
+    const TensorCwiseUnaryOp<internal::bind1st_op<internal::scalar_difference_op<Scalar> >, const Derived>
+    operator- (Scalar lhs, const Derived& rhs) {
+      return rhs.unaryExpr(internal::bind1st_op<internal::scalar_difference_op<Scalar> >(lhs));
+    }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const TensorCwiseUnaryOp<internal::bind2nd_op<internal::scalar_product_op<Scalar,Scalar> >, const Derived>
+    operator* (Scalar rhs) const {
+      return unaryExpr(internal::bind2nd_op<internal::scalar_product_op<Scalar,Scalar> >(rhs));
+    }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE friend
+    const TensorCwiseUnaryOp<internal::bind1st_op<internal::scalar_product_op<Scalar> >, const Derived>
+    operator* (Scalar lhs, const Derived& rhs) {
+      return rhs.unaryExpr(internal::bind1st_op<internal::scalar_product_op<Scalar> >(lhs));
+    }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const TensorCwiseUnaryOp<internal::bind2nd_op<internal::scalar_quotient_op<Scalar,Scalar> >, const Derived>
+    operator/ (Scalar rhs) const {
+      return unaryExpr(internal::bind2nd_op<internal::scalar_quotient_op<Scalar,Scalar> >(rhs));
+    }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE friend
+    const TensorCwiseUnaryOp<internal::bind1st_op<internal::scalar_quotient_op<Scalar> >, const Derived>
+    operator/ (Scalar lhs, const Derived& rhs) {
+      return rhs.unaryExpr(internal::bind1st_op<internal::scalar_quotient_op<Scalar> >(lhs));
+    }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const TensorCwiseUnaryOp<internal::scalar_mod_op<Scalar>, const Derived>
+    operator% (Scalar rhs) const {
+      EIGEN_STATIC_ASSERT(NumTraits<Scalar>::IsInteger, YOU_MADE_A_PROGRAMMING_MISTAKE_TRY_MOD);
+      return unaryExpr(internal::scalar_mod_op<Scalar>(rhs));
+    }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const TensorCwiseBinaryOp<internal::scalar_max_op<Scalar>, const Derived, const TensorCwiseNullaryOp<internal::scalar_constant_op<Scalar>, const Derived> >
+    cwiseMax(Scalar threshold) const {
+      return cwiseMax(constant(threshold));
+    }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const TensorCwiseBinaryOp<internal::scalar_min_op<Scalar>, const Derived, const TensorCwiseNullaryOp<internal::scalar_constant_op<Scalar>, const Derived> >
+    cwiseMin(Scalar threshold) const {
+      return cwiseMin(constant(threshold));
+    }
+
+    template <typename NewType> EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const TensorConversionOp<NewType, const Derived>
+    cast() const {
+      return TensorConversionOp<NewType, const Derived>(derived());
+    }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const TensorCwiseUnaryOp<internal::scalar_round_op<Scalar>, const Derived>
+    round() const {
+      return unaryExpr(internal::scalar_round_op<Scalar>());
+    }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const TensorCwiseUnaryOp<internal::scalar_ceil_op<Scalar>, const Derived>
+    ceil() const {
+      return unaryExpr(internal::scalar_ceil_op<Scalar>());
+    }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const TensorCwiseUnaryOp<internal::scalar_floor_op<Scalar>, const Derived>
+    floor() const {
+      return unaryExpr(internal::scalar_floor_op<Scalar>());
+    }
+
+    // Generic binary operation support.
+    template <typename CustomBinaryOp, typename OtherDerived> EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const TensorCwiseBinaryOp<CustomBinaryOp, const Derived, const OtherDerived>
+    binaryExpr(const OtherDerived& other, const CustomBinaryOp& func) const {
+      return TensorCwiseBinaryOp<CustomBinaryOp, const Derived, const OtherDerived>(derived(), other, func);
+    }
+
+    // Coefficient-wise binary operators.
+    template<typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorCwiseBinaryOp<internal::scalar_sum_op<Scalar>, const Derived, const OtherDerived>
+    operator+(const OtherDerived& other) const {
+      return binaryExpr(other.derived(), internal::scalar_sum_op<Scalar>());
+    }
+
+    template<typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorCwiseBinaryOp<internal::scalar_difference_op<Scalar>, const Derived, const OtherDerived>
+    operator-(const OtherDerived& other) const {
+      return binaryExpr(other.derived(), internal::scalar_difference_op<Scalar>());
+    }
+
+    template<typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorCwiseBinaryOp<internal::scalar_product_op<Scalar>, const Derived, const OtherDerived>
+    operator*(const OtherDerived& other) const {
+      return binaryExpr(other.derived(), internal::scalar_product_op<Scalar>());
+    }
+
+    template<typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorCwiseBinaryOp<internal::scalar_quotient_op<Scalar>, const Derived, const OtherDerived>
+    operator/(const OtherDerived& other) const {
+      return binaryExpr(other.derived(), internal::scalar_quotient_op<Scalar>());
+    }
+
+    template<typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorCwiseBinaryOp<internal::scalar_max_op<Scalar>, const Derived, const OtherDerived>
+    cwiseMax(const OtherDerived& other) const {
+      return binaryExpr(other.derived(), internal::scalar_max_op<Scalar>());
+    }
+
+    template<typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorCwiseBinaryOp<internal::scalar_min_op<Scalar>, const Derived, const OtherDerived>
+    cwiseMin(const OtherDerived& other) const {
+      return binaryExpr(other.derived(), internal::scalar_min_op<Scalar>());
+    }
+
+    template<typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorCwiseBinaryOp<internal::scalar_boolean_and_op, const Derived, const OtherDerived>
+    operator&&(const OtherDerived& other) const {
+      return binaryExpr(other.derived(), internal::scalar_boolean_and_op());
+    }
+
+    template<typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorCwiseBinaryOp<internal::scalar_boolean_or_op, const Derived, const OtherDerived>
+    operator||(const OtherDerived& other) const {
+      return binaryExpr(other.derived(), internal::scalar_boolean_or_op());
+    }
+
+    template<typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorCwiseBinaryOp<internal::scalar_boolean_xor_op, const Derived, const OtherDerived>
+    operator^(const OtherDerived& other) const {
+      return binaryExpr(other.derived(), internal::scalar_boolean_xor_op());
+    }
+
+    // Comparisons and tests.
+    template<typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorCwiseBinaryOp<internal::scalar_cmp_op<Scalar, Scalar, internal::cmp_LT>, const Derived, const OtherDerived>
+    operator<(const OtherDerived& other) const {
+      return binaryExpr(other.derived(), internal::scalar_cmp_op<Scalar, Scalar, internal::cmp_LT>());
+    }
+    template<typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorCwiseBinaryOp<internal::scalar_cmp_op<Scalar, Scalar, internal::cmp_LE>, const Derived, const OtherDerived>
+    operator<=(const OtherDerived& other) const {
+      return binaryExpr(other.derived(), internal::scalar_cmp_op<Scalar, Scalar, internal::cmp_LE>());
+    }
+    template<typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorCwiseBinaryOp<internal::scalar_cmp_op<Scalar, Scalar, internal::cmp_GT>, const Derived, const OtherDerived>
+    operator>(const OtherDerived& other) const {
+      return binaryExpr(other.derived(), internal::scalar_cmp_op<Scalar, Scalar, internal::cmp_GT>());
+    }
+    template<typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorCwiseBinaryOp<internal::scalar_cmp_op<Scalar, Scalar, internal::cmp_GE>, const Derived, const OtherDerived>
+    operator>=(const OtherDerived& other) const {
+      return binaryExpr(other.derived(), internal::scalar_cmp_op<Scalar, Scalar, internal::cmp_GE>());
+    }
+
+    template<typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorCwiseBinaryOp<internal::scalar_cmp_op<Scalar, Scalar, internal::cmp_EQ>, const Derived, const OtherDerived>
+    operator==(const OtherDerived& other) const {
+      return binaryExpr(other.derived(), internal::scalar_cmp_op<Scalar, Scalar, internal::cmp_EQ>());
+    }
+
+    template<typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorCwiseBinaryOp<internal::scalar_cmp_op<Scalar, Scalar, internal::cmp_NEQ>, const Derived, const OtherDerived>
+    operator!=(const OtherDerived& other) const {
+      return binaryExpr(other.derived(), internal::scalar_cmp_op<Scalar, Scalar, internal::cmp_NEQ>());
+    }
+
+    // comparisons and tests for Scalars
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const TensorCwiseBinaryOp<internal::scalar_cmp_op<Scalar, Scalar, internal::cmp_LT>, const Derived, const TensorCwiseNullaryOp<internal::scalar_constant_op<Scalar>, const Derived> >
+    operator<(Scalar threshold) const {
+      return operator<(constant(threshold));
+    }
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const TensorCwiseBinaryOp<internal::scalar_cmp_op<Scalar, Scalar, internal::cmp_LE>, const Derived, const TensorCwiseNullaryOp<internal::scalar_constant_op<Scalar>, const Derived> >
+    operator<=(Scalar threshold) const {
+      return operator<=(constant(threshold));
+    }
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const TensorCwiseBinaryOp<internal::scalar_cmp_op<Scalar, Scalar, internal::cmp_GT>, const Derived, const TensorCwiseNullaryOp<internal::scalar_constant_op<Scalar>, const Derived> >
+    operator>(Scalar threshold) const {
+      return operator>(constant(threshold));
+    }
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const TensorCwiseBinaryOp<internal::scalar_cmp_op<Scalar, Scalar, internal::cmp_GE>, const Derived, const TensorCwiseNullaryOp<internal::scalar_constant_op<Scalar>, const Derived> >
+    operator>=(Scalar threshold) const {
+      return operator>=(constant(threshold));
+    }
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const TensorCwiseBinaryOp<internal::scalar_cmp_op<Scalar, Scalar, internal::cmp_EQ>, const Derived, const TensorCwiseNullaryOp<internal::scalar_constant_op<Scalar>, const Derived> >
+    operator==(Scalar threshold) const {
+      return operator==(constant(threshold));
+    }
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const TensorCwiseBinaryOp<internal::scalar_cmp_op<Scalar, Scalar, internal::cmp_NEQ>, const Derived, const TensorCwiseNullaryOp<internal::scalar_constant_op<Scalar>, const Derived> >
+    operator!=(Scalar threshold) const {
+      return operator!=(constant(threshold));
+    }
+
+    // Checks
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const TensorCwiseUnaryOp<internal::scalar_isnan_op<Scalar>, const Derived>
+    (isnan)() const {
+      return unaryExpr(internal::scalar_isnan_op<Scalar>());
+    }
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const TensorCwiseUnaryOp<internal::scalar_isinf_op<Scalar>, const Derived>
+    (isinf)() const {
+      return unaryExpr(internal::scalar_isinf_op<Scalar>());
+    }
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const TensorCwiseUnaryOp<internal::scalar_isfinite_op<Scalar>, const Derived>
+    (isfinite)() const {
+      return unaryExpr(internal::scalar_isfinite_op<Scalar>());
+    }
+
+    // Coefficient-wise ternary operators.
+    template<typename ThenDerived, typename ElseDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorSelectOp<const Derived, const ThenDerived, const ElseDerived>
+    select(const ThenDerived& thenTensor, const ElseDerived& elseTensor) const {
+      return TensorSelectOp<const Derived, const ThenDerived, const ElseDerived>(derived(), thenTensor.derived(), elseTensor.derived());
+    }
+
+    // Contractions.
+    typedef Eigen::IndexPair<Index> DimensionPair;
+
+    template<typename OtherDerived, typename Dimensions> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorContractionOp<const Dimensions, const Derived, const OtherDerived>
+    contract(const OtherDerived& other, const Dimensions& dims) const {
+      return TensorContractionOp<const Dimensions, const Derived, const OtherDerived>(derived(), other.derived(), dims);
+    }
+
+    // Convolutions.
+    template<typename KernelDerived, typename Dimensions> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorConvolutionOp<const Dimensions, const Derived, const KernelDerived>
+    convolve(const KernelDerived& kernel, const Dimensions& dims) const {
+      return TensorConvolutionOp<const Dimensions, const Derived, const KernelDerived>(derived(), kernel.derived(), dims);
+    }
+
+    // Fourier transforms
+    template <int FFTDataType, int FFTDirection, typename FFT> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorFFTOp<const FFT, const Derived, FFTDataType, FFTDirection>
+    fft(const FFT& fft) const {
+      return TensorFFTOp<const FFT, const Derived, FFTDataType, FFTDirection>(derived(), fft);
+    }
+
+    // Scan.
+    typedef TensorScanOp<internal::SumReducer<CoeffReturnType>, const Derived> TensorScanSumOp;
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorScanSumOp
+    cumsum(const Index& axis, bool exclusive = false) const {
+      return TensorScanSumOp(derived(), axis, exclusive);
+    }
+
+    typedef TensorScanOp<internal::ProdReducer<CoeffReturnType>, const Derived> TensorScanProdOp;
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorScanProdOp
+    cumprod(const Index& axis, bool exclusive = false) const {
+      return TensorScanProdOp(derived(), axis, exclusive);
+    }
+
+    template <typename Reducer>
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorScanOp<Reducer, const Derived>
+    scan(const Index& axis, const Reducer& reducer, bool exclusive = false) const {
+      return TensorScanOp<Reducer, const Derived>(derived(), axis, exclusive, reducer);
+    }
+
+    // Reductions.
+    template <typename Dims> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorReductionOp<internal::SumReducer<CoeffReturnType>, const Dims, const Derived>
+    sum(const Dims& dims) const {
+      return TensorReductionOp<internal::SumReducer<CoeffReturnType>, const Dims, const Derived>(derived(), dims, internal::SumReducer<CoeffReturnType>());
+    }
+
+    const TensorReductionOp<internal::SumReducer<CoeffReturnType>, const DimensionList<Index, NumDimensions>, const Derived>
+    sum() const {
+      DimensionList<Index, NumDimensions> in_dims;
+      return TensorReductionOp<internal::SumReducer<CoeffReturnType>, const DimensionList<Index, NumDimensions>, const Derived>(derived(), in_dims, internal::SumReducer<CoeffReturnType>());
+    }
+
+    template <typename Dims> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorReductionOp<internal::MeanReducer<CoeffReturnType>, const Dims, const Derived>
+    mean(const Dims& dims) const {
+      return TensorReductionOp<internal::MeanReducer<CoeffReturnType>, const Dims, const Derived>(derived(), dims, internal::MeanReducer<CoeffReturnType>());
+    }
+
+    const TensorReductionOp<internal::MeanReducer<CoeffReturnType>, const DimensionList<Index, NumDimensions>, const Derived>
+    mean() const {
+      DimensionList<Index, NumDimensions> in_dims;
+      return TensorReductionOp<internal::MeanReducer<CoeffReturnType>, const DimensionList<Index, NumDimensions>, const Derived>(derived(), in_dims, internal::MeanReducer<CoeffReturnType>());
+    }
+
+    template <typename Dims> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorReductionOp<internal::ProdReducer<CoeffReturnType>, const Dims, const Derived>
+    prod(const Dims& dims) const {
+      return TensorReductionOp<internal::ProdReducer<CoeffReturnType>, const Dims, const Derived>(derived(), dims, internal::ProdReducer<CoeffReturnType>());
+    }
+
+    const TensorReductionOp<internal::ProdReducer<CoeffReturnType>, const DimensionList<Index, NumDimensions>, const Derived>
+    prod() const {
+      DimensionList<Index, NumDimensions> in_dims;
+      return TensorReductionOp<internal::ProdReducer<CoeffReturnType>, const DimensionList<Index, NumDimensions>, const Derived>(derived(), in_dims, internal::ProdReducer<CoeffReturnType>());
+    }
+
+    template <typename Dims> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorReductionOp<internal::MaxReducer<CoeffReturnType>, const Dims, const Derived>
+    maximum(const Dims& dims) const {
+      return TensorReductionOp<internal::MaxReducer<CoeffReturnType>, const Dims, const Derived>(derived(), dims, internal::MaxReducer<CoeffReturnType>());
+    }
+
+    const TensorReductionOp<internal::MaxReducer<CoeffReturnType>, const DimensionList<Index, NumDimensions>, const Derived>
+    maximum() const {
+      DimensionList<Index, NumDimensions> in_dims;
+      return TensorReductionOp<internal::MaxReducer<CoeffReturnType>, const DimensionList<Index, NumDimensions>, const Derived>(derived(), in_dims, internal::MaxReducer<CoeffReturnType>());
+    }
+
+    template <typename Dims> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorReductionOp<internal::MinReducer<CoeffReturnType>, const Dims, const Derived>
+    minimum(const Dims& dims) const {
+      return TensorReductionOp<internal::MinReducer<CoeffReturnType>, const Dims, const Derived>(derived(), dims, internal::MinReducer<CoeffReturnType>());
+    }
+
+    const TensorReductionOp<internal::MinReducer<CoeffReturnType>, const DimensionList<Index, NumDimensions>, const Derived>
+    minimum() const {
+      DimensionList<Index, NumDimensions> in_dims;
+      return TensorReductionOp<internal::MinReducer<CoeffReturnType>, const DimensionList<Index, NumDimensions>, const Derived>(derived(), in_dims, internal::MinReducer<CoeffReturnType>());
+    }
+
+    template <typename Dims> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorReductionOp<internal::AndReducer, const Dims, const TensorConversionOp<bool, const Derived> >
+    all(const Dims& dims) const {
+      return cast<bool>().reduce(dims, internal::AndReducer());
+    }
+
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorReductionOp<internal::AndReducer, const DimensionList<Index, NumDimensions>, const TensorConversionOp<bool, const Derived> >
+    all() const {
+      DimensionList<Index, NumDimensions> in_dims;
+      return cast<bool>().reduce(in_dims, internal::AndReducer());
+    }
+
+    template <typename Dims> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorReductionOp<internal::OrReducer, const Dims, const TensorConversionOp<bool, const Derived> >
+    any(const Dims& dims) const {
+      return cast<bool>().reduce(dims, internal::OrReducer());
+    }
+
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorReductionOp<internal::OrReducer, const DimensionList<Index, NumDimensions>, const TensorConversionOp<bool, const Derived> >
+    any() const {
+      DimensionList<Index, NumDimensions> in_dims;
+      return cast<bool>().reduce(in_dims, internal::OrReducer());
+    }
+
+   EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorTupleReducerOp<
+      internal::ArgMaxTupleReducer<Tuple<Index, CoeffReturnType> >,
+      const array<Index, NumDimensions>, const Derived>
+    argmax() const {
+      array<Index, NumDimensions> in_dims;
+      for (int d = 0; d < NumDimensions; ++d) in_dims[d] = d;
+      return TensorTupleReducerOp<
+        internal::ArgMaxTupleReducer<Tuple<Index, CoeffReturnType> >,
+        const array<Index, NumDimensions>,
+        const Derived>(derived(), internal::ArgMaxTupleReducer<Tuple<Index, CoeffReturnType> >(), -1, in_dims);
+    }
+
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorTupleReducerOp<
+      internal::ArgMinTupleReducer<Tuple<Index, CoeffReturnType> >,
+      const array<Index, NumDimensions>, const Derived>
+    argmin() const {
+      array<Index, NumDimensions> in_dims;
+      for (int d = 0; d < NumDimensions; ++d) in_dims[d] = d;
+      return TensorTupleReducerOp<
+        internal::ArgMinTupleReducer<Tuple<Index, CoeffReturnType> >,
+        const array<Index, NumDimensions>,
+        const Derived>(derived(), internal::ArgMinTupleReducer<Tuple<Index, CoeffReturnType> >(), -1, in_dims);
+    }
+
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorTupleReducerOp<
+      internal::ArgMaxTupleReducer<Tuple<Index, CoeffReturnType> >,
+      const array<Index, 1>, const Derived>
+    argmax(const int return_dim) const {
+      array<Index, 1> in_dims;
+      in_dims[0] = return_dim;
+      return TensorTupleReducerOp<
+        internal::ArgMaxTupleReducer<Tuple<Index, CoeffReturnType> >,
+        const array<Index, 1>,
+        const Derived>(derived(), internal::ArgMaxTupleReducer<Tuple<Index, CoeffReturnType> >(), return_dim, in_dims);
+    }
+
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorTupleReducerOp<
+      internal::ArgMinTupleReducer<Tuple<Index, CoeffReturnType> >,
+      const array<Index, 1>, const Derived>
+    argmin(const int return_dim) const {
+      array<Index, 1> in_dims;
+      in_dims[0] = return_dim;
+      return TensorTupleReducerOp<
+        internal::ArgMinTupleReducer<Tuple<Index, CoeffReturnType> >,
+        const array<Index, 1>,
+        const Derived>(derived(), internal::ArgMinTupleReducer<Tuple<Index, CoeffReturnType> >(), return_dim, in_dims);
+    }
+
+    template <typename Reducer, typename Dims> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorReductionOp<Reducer, const Dims, const Derived>
+    reduce(const Dims& dims, const Reducer& reducer) const {
+      return TensorReductionOp<Reducer, const Dims, const Derived>(derived(), dims, reducer);
+    }
+
+    template <typename Broadcast> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorBroadcastingOp<const Broadcast, const Derived>
+    broadcast(const Broadcast& broadcast) const {
+      return TensorBroadcastingOp<const Broadcast, const Derived>(derived(), broadcast);
+    }
+
+    template <typename Axis, typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorConcatenationOp<Axis, const Derived, const OtherDerived>
+    concatenate(const OtherDerived& other, Axis axis) const {
+      return TensorConcatenationOp<Axis, const Derived, const OtherDerived>(derived(), other.derived(), axis);
+    }
+
+    template <typename PatchDims> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorPatchOp<const PatchDims, const Derived>
+    extract_patches(const PatchDims& patch_dims) const {
+      return TensorPatchOp<const PatchDims, const Derived>(derived(), patch_dims);
+    }
+
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorImagePatchOp<Dynamic, Dynamic, const Derived>
+    extract_image_patches(const Index patch_rows = 1, const Index patch_cols = 1,
+                          const Index row_stride = 1, const Index col_stride = 1,
+                          const Index in_row_stride = 1, const Index in_col_stride = 1,
+                          const PaddingType padding_type = PADDING_SAME, const Scalar padding_value = Scalar(0)) const {
+      return TensorImagePatchOp<Dynamic, Dynamic, const Derived>(derived(), patch_rows, patch_cols, row_stride, col_stride,
+                                                                 in_row_stride, in_col_stride, 1, 1, padding_type, padding_value);
+    }
+
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorImagePatchOp<Dynamic, Dynamic, const Derived>
+    extract_image_patches(const Index patch_rows, const Index patch_cols,
+                          const Index row_stride, const Index col_stride,
+                          const Index in_row_stride, const Index in_col_stride,
+                          const Index row_inflate_stride, const Index col_inflate_stride,
+                          const Index padding_top, const Index padding_bottom,
+                          const Index padding_left,const Index padding_right,
+                          const Scalar padding_value) const {
+      return TensorImagePatchOp<Dynamic, Dynamic, const Derived>(derived(), patch_rows, patch_cols, row_stride, col_stride,
+                                                                 in_row_stride, in_col_stride, row_inflate_stride, col_inflate_stride,
+                                                                 padding_top, padding_bottom, padding_left, padding_right, padding_value);
+    }
+
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorVolumePatchOp<Dynamic, Dynamic, Dynamic, const Derived>
+    extract_volume_patches(const Index patch_planes, const Index patch_rows, const Index patch_cols,
+                           const Index plane_stride = 1, const Index row_stride = 1, const Index col_stride = 1,
+                           const PaddingType padding_type = PADDING_SAME, const Scalar padding_value = Scalar(0)) const {
+      return TensorVolumePatchOp<Dynamic, Dynamic, Dynamic, const Derived>(derived(), patch_planes, patch_rows, patch_cols, plane_stride, row_stride, col_stride, 1, 1, 1, 1, 1, 1, padding_type, padding_value);
+    }
+
+
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorVolumePatchOp<Dynamic, Dynamic, Dynamic, const Derived>
+    extract_volume_patches(const Index patch_planes, const Index patch_rows, const Index patch_cols,
+                           const Index plane_stride, const Index row_stride, const Index col_stride,
+                           const Index plane_inflate_stride, const Index row_inflate_stride, const Index col_inflate_stride,
+                           const Index padding_top_z, const Index padding_bottom_z,
+                           const Index padding_top, const Index padding_bottom,
+                           const Index padding_left, const Index padding_right, const Scalar padding_value = Scalar(0)) const {
+      return TensorVolumePatchOp<Dynamic, Dynamic, Dynamic, const Derived>(derived(), patch_planes, patch_rows, patch_cols, plane_stride, row_stride, col_stride, 1, 1, 1, plane_inflate_stride, row_inflate_stride, col_inflate_stride, padding_top_z, padding_bottom_z, padding_top, padding_bottom, padding_left, padding_right, padding_value);
+    }
+
+    // Morphing operators.
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorLayoutSwapOp<const Derived>
+    swap_layout() const {
+      return TensorLayoutSwapOp<const Derived>(derived());
+    }
+    template <typename NewDimensions> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorReshapingOp<const NewDimensions, const Derived>
+    reshape(const NewDimensions& newDimensions) const {
+      return TensorReshapingOp<const NewDimensions, const Derived>(derived(), newDimensions);
+    }
+    template <typename StartIndices, typename Sizes> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorSlicingOp<const StartIndices, const Sizes, const Derived>
+    slice(const StartIndices& startIndices, const Sizes& sizes) const {
+      return TensorSlicingOp<const StartIndices, const Sizes, const Derived>(derived(), startIndices, sizes);
+    }
+    template <typename StartIndices, typename StopIndices, typename Strides> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorStridingSlicingOp<const StartIndices, const StopIndices, const Strides, const Derived>
+    stridedSlice(const StartIndices& startIndices, const StopIndices& stopIndices, const Strides& strides) const {
+      return TensorStridingSlicingOp<const StartIndices, const StopIndices, const Strides,
+                                const Derived>(derived(), startIndices, stopIndices, strides);
+    }
+    template <Index DimId> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorChippingOp<DimId, const Derived>
+    chip(const Index offset) const {
+      return TensorChippingOp<DimId, const Derived>(derived(), offset, DimId);
+    }
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorChippingOp<Dynamic, const Derived>
+    chip(const Index offset, const Index dim) const {
+      return TensorChippingOp<Dynamic, const Derived>(derived(), offset, dim);
+    }
+    template <typename ReverseDimensions> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorReverseOp<const ReverseDimensions, const Derived>
+    reverse(const ReverseDimensions& rev) const {
+      return TensorReverseOp<const ReverseDimensions, const Derived>(derived(), rev);
+    }
+    template <typename PaddingDimensions> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorPaddingOp<const PaddingDimensions, const Derived>
+    pad(const PaddingDimensions& padding) const {
+      return TensorPaddingOp<const PaddingDimensions, const Derived>(derived(), padding, internal::scalar_cast_op<int, Scalar>()(0));
+    }
+    template <typename PaddingDimensions> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorPaddingOp<const PaddingDimensions, const Derived>
+    pad(const PaddingDimensions& padding, const Scalar padding_value) const {
+      return TensorPaddingOp<const PaddingDimensions, const Derived>(derived(), padding, padding_value);
+    }
+    template <typename Shuffle> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorShufflingOp<const Shuffle, const Derived>
+    shuffle(const Shuffle& shuffle) const {
+      return TensorShufflingOp<const Shuffle, const Derived>(derived(), shuffle);
+    }
+    template <typename Strides> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorStridingOp<const Strides, const Derived>
+    stride(const Strides& strides) const {
+      return TensorStridingOp<const Strides, const Derived>(derived(), strides);
+    }
+    template <typename Strides> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorInflationOp<const Strides, const Derived>
+    inflate(const Strides& strides) const {
+      return TensorInflationOp<const Strides, const Derived>(derived(), strides);
+    }
+
+    // Returns a tensor containing index/value tuples
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorIndexTupleOp<const Derived>
+    index_tuples() const {
+      return TensorIndexTupleOp<const Derived>(derived());
+    }
+
+    // Support for custom unary and binary operations
+    template <typename CustomUnaryFunc>
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorCustomUnaryOp<const CustomUnaryFunc, const Derived> customOp(const CustomUnaryFunc& op) const {
+      return TensorCustomUnaryOp<const CustomUnaryFunc, const Derived>(derived(), op);
+    }
+    template <typename OtherDerived, typename CustomBinaryFunc>
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorCustomBinaryOp<const CustomBinaryFunc, const Derived, const OtherDerived> customOp(const OtherDerived& other, const CustomBinaryFunc& op) const {
+      return TensorCustomBinaryOp<const CustomBinaryFunc, const Derived, const OtherDerived>(derived(), other, op);
+    }
+
+    // Force the evaluation of the expression.
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorForcedEvalOp<const Derived> eval() const {
+      return TensorForcedEvalOp<const Derived>(derived());
+    }
+
+  protected:
+    template <typename Scalar, int NumIndices, int Options, typename IndexType> friend class Tensor;
+    template <typename Scalar, typename Dimensions, int Option, typename IndexTypes> friend class TensorFixedSize;
+    template <typename OtherDerived, int AccessLevel> friend class TensorBase;
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const Derived& derived() const { return *static_cast<const Derived*>(this); }
+};
+
+template<typename Derived, int AccessLevel = internal::accessors_level<Derived>::value>
+class TensorBase : public TensorBase<Derived, ReadOnlyAccessors> {
+ public:
+    typedef internal::traits<Derived> DerivedTraits;
+    typedef typename DerivedTraits::Scalar Scalar;
+    typedef typename DerivedTraits::Index Index;
+    typedef Scalar CoeffReturnType;
+    static const int NumDimensions = DerivedTraits::NumDimensions;
+
+    template <typename Scalar, int NumIndices, int Options, typename IndexType> friend class Tensor;
+    template <typename Scalar, typename Dimensions, int Option, typename IndexTypes> friend class TensorFixedSize;
+    template <typename OtherDerived, int OtherAccessLevel> friend class TensorBase;
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Derived& setZero() {
+      return setConstant(Scalar(0));
+    }
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Derived& setConstant(const Scalar& val) {
+      return derived() = this->constant(val);
+    }
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Derived& setRandom() {
+      return derived() = this->random();
+    }
+    template <typename RandomGenerator> EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Derived& setRandom() {
+      return derived() = this->template random<RandomGenerator>();
+    }
+
+#if EIGEN_HAS_VARIADIC_TEMPLATES
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Derived& setValues(
+        const typename internal::Initializer<Derived, NumDimensions>::InitList& vals) {
+      TensorEvaluator<Derived, DefaultDevice> eval(derived(), DefaultDevice());
+      internal::initialize_tensor<Derived, NumDimensions>(eval, vals);
+      return derived();
+    }
+#endif  // EIGEN_HAS_VARIADIC_TEMPLATES
+
+    template<typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    Derived& operator+=(const OtherDerived& other) {
+      return derived() = derived() + other.derived();
+    }
+    template<typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    Derived& operator-=(const OtherDerived& other) {
+      return derived() = derived() - other.derived();
+    }
+    template<typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    Derived& operator*=(const OtherDerived& other) {
+      return derived() = derived() * other.derived();
+    }
+    template<typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    Derived& operator/=(const OtherDerived& other) {
+      return derived() = derived() / other.derived();
+    }
+
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorLayoutSwapOp<const Derived>
+    swap_layout() const {
+      return TensorLayoutSwapOp<const Derived>(derived());
+    }
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    TensorLayoutSwapOp<Derived>
+    swap_layout() {
+      return TensorLayoutSwapOp<Derived>(derived());
+    }
+
+    template <typename Axis, typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorConcatenationOp<const Axis, const Derived, const OtherDerived>
+    concatenate(const OtherDerived& other, const Axis& axis) const {
+      return TensorConcatenationOp<const Axis, const Derived, const OtherDerived>(derived(), other, axis);
+    }
+    template <typename Axis, typename OtherDerived> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    TensorConcatenationOp<const Axis, Derived, OtherDerived>
+    concatenate(const OtherDerived& other, const Axis& axis) {
+      return TensorConcatenationOp<const Axis, Derived, OtherDerived>(derived(), other, axis);
+    }
+
+    template <typename NewDimensions> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorReshapingOp<const NewDimensions, const Derived>
+    reshape(const NewDimensions& newDimensions) const {
+      return TensorReshapingOp<const NewDimensions, const Derived>(derived(), newDimensions);
+    }
+    template <typename NewDimensions> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    TensorReshapingOp<const NewDimensions, Derived>
+    reshape(const NewDimensions& newDimensions) {
+      return TensorReshapingOp<const NewDimensions, Derived>(derived(), newDimensions);
+    }
+
+    template <typename StartIndices, typename Sizes> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorSlicingOp<const StartIndices, const Sizes, const Derived>
+    slice(const StartIndices& startIndices, const Sizes& sizes) const {
+      return TensorSlicingOp<const StartIndices, const Sizes, const Derived>(derived(), startIndices, sizes);
+    }
+    template <typename StartIndices, typename Sizes> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    TensorSlicingOp<const StartIndices, const Sizes, Derived>
+    slice(const StartIndices& startIndices, const Sizes& sizes) {
+      return TensorSlicingOp<const StartIndices, const Sizes, Derived>(derived(), startIndices, sizes);
+    }
+
+    template <typename StartIndices, typename StopIndices, typename Strides> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorStridingSlicingOp<const StartIndices, const StopIndices, const Strides, const Derived>
+    stridedSlice(const StartIndices& startIndices, const StopIndices& stopIndices, const Strides& strides) const {
+      return TensorStridingSlicingOp<const StartIndices, const StopIndices, const Strides,
+                                const Derived>(derived(), startIndices, stopIndices, strides);
+    }
+    template <typename StartIndices, typename StopIndices, typename Strides> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    TensorStridingSlicingOp<const StartIndices, const StopIndices, const Strides, Derived>
+    stridedSlice(const StartIndices& startIndices, const StopIndices& stopIndices, const Strides& strides) {
+      return TensorStridingSlicingOp<const StartIndices, const StopIndices, const Strides,
+                                Derived>(derived(), startIndices, stopIndices, strides);
+    }
+
+    template <DenseIndex DimId> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorChippingOp<DimId, const Derived>
+    chip(const Index offset) const {
+      return TensorChippingOp<DimId, const Derived>(derived(), offset, DimId);
+    }
+    template <Index DimId> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    TensorChippingOp<DimId, Derived>
+    chip(const Index offset) {
+      return TensorChippingOp<DimId, Derived>(derived(), offset, DimId);
+    }
+
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorChippingOp<Dynamic, const Derived>
+    chip(const Index offset, const Index dim) const {
+      return TensorChippingOp<Dynamic, const Derived>(derived(), offset, dim);
+    }
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    TensorChippingOp<Dynamic, Derived>
+    chip(const Index offset, const Index dim) {
+      return TensorChippingOp<Dynamic, Derived>(derived(), offset, dim);
+    }
+
+    template <typename ReverseDimensions> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorReverseOp<const ReverseDimensions, const Derived>
+    reverse(const ReverseDimensions& rev) const {
+      return TensorReverseOp<const ReverseDimensions, const Derived>(derived(), rev);
+    }
+    template <typename ReverseDimensions> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    TensorReverseOp<const ReverseDimensions, Derived>
+    reverse(const ReverseDimensions& rev) {
+      return TensorReverseOp<const ReverseDimensions, Derived>(derived(), rev);
+    }
+
+    template <typename Shuffle> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorShufflingOp<const Shuffle, const Derived>
+    shuffle(const Shuffle& shuffle) const {
+      return TensorShufflingOp<const Shuffle, const Derived>(derived(), shuffle);
+    }
+    template <typename Shuffle> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    TensorShufflingOp<const Shuffle, Derived>
+    shuffle(const Shuffle& shuffle) {
+      return TensorShufflingOp<const Shuffle, Derived>(derived(), shuffle);
+    }
+
+    template <typename Strides> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const TensorStridingOp<const Strides, const Derived>
+    stride(const Strides& strides) const {
+      return TensorStridingOp<const Strides, const Derived>(derived(), strides);
+    }
+    template <typename Strides> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    TensorStridingOp<const Strides, Derived>
+    stride(const Strides& strides) {
+      return TensorStridingOp<const Strides, Derived>(derived(), strides);
+    }
+
+    // Select the device on which to evaluate the expression.
+    template <typename DeviceType>
+    TensorDevice<Derived, DeviceType> device(const DeviceType& device) {
+      return TensorDevice<Derived, DeviceType>(device, derived());
+    }
+
+ protected:
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE Derived& derived() { return *static_cast<Derived*>(this); }
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE const Derived& derived() const { return *static_cast<const Derived*>(this); }
+};
+#endif // EIGEN_PARSED_BY_DOXYGEN
+} // end namespace Eigen
+
+#endif // EIGEN_CXX11_TENSOR_TENSOR_BASE_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/README.md
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/README.md	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/README.md	(revision 3762)
@@ -0,0 +1,1760 @@
+# Eigen Tensors {#eigen_tensors}
+
+Tensors are multidimensional arrays of elements. Elements are typically scalars,
+but more complex types such as strings are also supported.
+
+[TOC]
+
+## Tensor Classes
+
+You can manipulate a tensor with one of the following classes.  They all are in
+the namespace `::Eigen.`
+
+
+### Class Tensor<data_type, rank>
+
+This is the class to use to create a tensor and allocate memory for it.  The
+class is templatized with the tensor datatype, such as float or int, and the
+tensor rank.  The rank is the number of dimensions, for example rank 2 is a
+matrix.
+
+Tensors of this class are resizable.  For example, if you assign a tensor of a
+different size to a Tensor, that tensor is resized to match its new value.
+
+#### Constructor `Tensor<data_type, rank>(size0, size1, ...)`
+
+Constructor for a Tensor.  The constructor must be passed `rank` integers
+indicating the sizes of the instance along each of the the `rank`
+dimensions.
+
+    // Create a tensor of rank 3 of sizes 2, 3, 4.  This tensor owns
+    // memory to hold 24 floating point values (24 = 2 x 3 x 4).
+    Tensor<float, 3> t_3d(2, 3, 4);
+
+    // Resize t_3d by assigning a tensor of different sizes, but same rank.
+    t_3d = Tensor<float, 3>(3, 4, 3);
+
+#### Constructor `Tensor<data_type, rank>(size_array)`
+
+Constructor where the sizes for the constructor are specified as an array of
+values instead of an explicitly list of parameters.  The array type to use is
+`Eigen::array<Eigen::Index>`.  The array can be constructed automatically
+from an initializer list.
+
+    // Create a tensor of strings of rank 2 with sizes 5, 7.
+    Tensor<string, 2> t_2d({5, 7});
+
+
+### Class `TensorFixedSize<data_type, Sizes<size0, size1, ...>>`
+
+Class to use for tensors of fixed size, where the size is known at compile
+time.  Fixed sized tensors can provide very fast computations because all their
+dimensions are known by the compiler.  FixedSize tensors are not resizable.
+
+If the total number of elements in a fixed size tensor is small enough the
+tensor data is held onto the stack and does not cause heap allocation and free.
+
+    // Create a 4 x 3 tensor of floats.
+    TensorFixedSize<float, Sizes<4, 3>> t_4x3;
+
+### Class `TensorMap<Tensor<data_type, rank>>`
+
+This is the class to use to create a tensor on top of memory allocated and
+owned by another part of your code.  It allows to view any piece of allocated
+memory as a Tensor.  Instances of this class do not own the memory where the
+data are stored.
+
+A TensorMap is not resizable because it does not own the memory where its data
+are stored.
+
+#### Constructor `TensorMap<Tensor<data_type, rank>>(data, size0, size1, ...)`
+
+Constructor for a Tensor.  The constructor must be passed a pointer to the
+storage for the data, and "rank" size attributes.  The storage has to be
+large enough to hold all the data.
+
+    // Map a tensor of ints on top of stack-allocated storage.
+    int storage[128];  // 2 x 4 x 2 x 8 = 128
+    TensorMap<Tensor<int, 4>> t_4d(storage, 2, 4, 2, 8);
+
+    // The same storage can be viewed as a different tensor.
+    // You can also pass the sizes as an array.
+    TensorMap<Tensor<int, 2>> t_2d(storage, 16, 8);
+
+    // You can also map fixed-size tensors.  Here we get a 1d view of
+    // the 2d fixed-size tensor.
+    TensorFixedSize<float, Sizes<4, 5>> t_4x3;
+    TensorMap<Tensor<float, 1>> t_12(t_4x3.data(), 12);
+
+
+#### Class `TensorRef`
+
+See Assigning to a TensorRef below.
+
+## Accessing Tensor Elements
+
+#### `<data_type> tensor(index0, index1...)`
+
+Return the element at position `(index0, index1...)` in tensor
+`tensor`.  You must pass as many parameters as the rank of `tensor`.
+The expression can be used as an l-value to set the value of the element at the
+specified position.  The value returned is of the datatype of the tensor.
+
+    // Set the value of the element at position (0, 1, 0);
+    Tensor<float, 3> t_3d(2, 3, 4);
+    t_3d(0, 1, 0) = 12.0f;
+
+    // Initialize all elements to random values.
+    for (int i = 0; i < 2; ++i) {
+      for (int j = 0; j < 3; ++j) {
+        for (int k = 0; k < 4; ++k) {
+          t_3d(i, j, k) = ...some random value...;
+        }
+      }
+    }
+
+    // Print elements of a tensor.
+    for (int i = 0; i < 2; ++i) {
+      LOG(INFO) << t_3d(i, 0, 0);
+    }
+
+
+## TensorLayout
+
+The tensor library supports 2 layouts: `ColMajor` (the default) and
+`RowMajor`.  Only the default column major layout is currently fully
+supported, and it is therefore not recommended to attempt to use the row major
+layout at the moment.
+
+The layout of a tensor is optionally specified as part of its type. If not
+specified explicitly column major is assumed.
+
+    Tensor<float, 3, ColMajor> col_major;  // equivalent to Tensor<float, 3>
+    TensorMap<Tensor<float, 3, RowMajor> > row_major(data, ...);
+
+All the arguments to an expression must use the same layout. Attempting to mix
+different layouts will result in a compilation error.
+
+It is possible to change the layout of a tensor or an expression using the
+`swap_layout()` method.  Note that this will also reverse the order of the
+dimensions.
+
+    Tensor<float, 2, ColMajor> col_major(2, 4);
+    Tensor<float, 2, RowMajor> row_major(2, 4);
+
+    Tensor<float, 2> col_major_result = col_major;  // ok, layouts match
+    Tensor<float, 2> col_major_result = row_major;  // will not compile
+
+    // Simple layout swap
+    col_major_result = row_major.swap_layout();
+    eigen_assert(col_major_result.dimension(0) == 4);
+    eigen_assert(col_major_result.dimension(1) == 2);
+
+    // Swap the layout and preserve the order of the dimensions
+    array<int, 2> shuffle(1, 0);
+    col_major_result = row_major.swap_layout().shuffle(shuffle);
+    eigen_assert(col_major_result.dimension(0) == 2);
+    eigen_assert(col_major_result.dimension(1) == 4);
+
+
+## Tensor Operations
+
+The Eigen Tensor library provides a vast library of operations on Tensors:
+numerical operations such as addition and multiplication, geometry operations
+such as slicing and shuffling, etc.  These operations are available as methods
+of the Tensor classes, and in some cases as operator overloads.  For example
+the following code computes the elementwise addition of two tensors:
+
+    Tensor<float, 3> t1(2, 3, 4);
+    ...set some values in t1...
+    Tensor<float, 3> t2(2, 3, 4);
+    ...set some values in t2...
+    // Set t3 to the element wise sum of t1 and t2
+    Tensor<float, 3> t3 = t1 + t2;
+
+While the code above looks easy enough, it is important to understand that the
+expression `t1 + t2` is not actually adding the values of the tensors.  The
+expression instead constructs a "tensor operator" object of the class
+TensorCwiseBinaryOp<scalar_sum>, which has references to the tensors
+`t1` and `t2`.  This is a small C++ object that knows how to add
+`t1` and `t2`.  It is only when the value of the expression is assigned
+to the tensor `t3` that the addition is actually performed.  Technically,
+this happens through the overloading of `operator=()` in the Tensor class.
+
+This mechanism for computing tensor expressions allows for lazy evaluation and
+optimizations which are what make the tensor library very fast.
+
+Of course, the tensor operators do nest, and the expression `t1 + t2 * 0.3f`
+is actually represented with the (approximate) tree of operators:
+
+    TensorCwiseBinaryOp<scalar_sum>(t1, TensorCwiseUnaryOp<scalar_mul>(t2, 0.3f))
+
+
+### Tensor Operations and C++ "auto"
+
+Because Tensor operations create tensor operators, the C++ `auto` keyword
+does not have its intuitive meaning.  Consider these 2 lines of code:
+
+    Tensor<float, 3> t3 = t1 + t2;
+    auto t4 = t1 + t2;
+
+In the first line we allocate the tensor `t3` and it will contain the
+result of the addition of `t1` and `t2`.  In the second line, `t4`
+is actually the tree of tensor operators that will compute the addition of
+`t1` and `t2`.  In fact, `t4` is *not* a tensor and you cannot get
+the values of its elements:
+
+    Tensor<float, 3> t3 = t1 + t2;
+    cout << t3(0, 0, 0);  // OK prints the value of t1(0, 0, 0) + t2(0, 0, 0)
+
+    auto t4 = t1 + t2;
+    cout << t4(0, 0, 0);  // Compilation error!
+
+When you use `auto` you do not get a Tensor as a result but instead a
+non-evaluated expression.  So only use `auto` to delay evaluation.
+
+Unfortunately, there is no single underlying concrete type for holding
+non-evaluated expressions, hence you have to use auto in the case when you do
+want to hold non-evaluated expressions.
+
+When you need the results of set of tensor computations you have to assign the
+result to a Tensor that will be capable of holding onto them.  This can be
+either a normal Tensor, a fixed size Tensor, or a TensorMap on an existing
+piece of memory.  All the following will work:
+
+    auto t4 = t1 + t2;
+
+    Tensor<float, 3> result = t4;  // Could also be: result(t4);
+    cout << result(0, 0, 0);
+
+    TensorMap<float, 4> result(<a float* with enough space>, <size0>, ...) = t4;
+    cout << result(0, 0, 0);
+
+    TensorFixedSize<float, Sizes<size0, ...>> result = t4;
+    cout << result(0, 0, 0);
+
+Until you need the results, you can keep the operation around, and even reuse
+it for additional operations.  As long as you keep the expression as an
+operation, no computation is performed.
+
+    // One way to compute exp((t1 + t2) * 0.2f);
+    auto t3 = t1 + t2;
+    auto t4 = t3 * 0.2f;
+    auto t5 = t4.exp();
+    Tensor<float, 3> result = t5;
+
+    // Another way, exactly as efficient as the previous one:
+    Tensor<float, 3> result = ((t1 + t2) * 0.2f).exp();
+
+### Controlling When Expression are Evaluated
+
+There are several ways to control when expressions are evaluated:
+
+*   Assignment to a Tensor, TensorFixedSize, or TensorMap.
+*   Use of the eval() method.
+*   Assignment to a TensorRef.
+
+#### Assigning to a Tensor, TensorFixedSize, or TensorMap.
+
+The most common way to evaluate an expression is to assign it to a Tensor.  In
+the example below, the `auto` declarations make the intermediate values
+"Operations", not Tensors, and do not cause the expressions to be evaluated.
+The assignment to the Tensor `result` causes the evaluation of all the
+operations.
+
+    auto t3 = t1 + t2;             // t3 is an Operation.
+    auto t4 = t3 * 0.2f;           // t4 is an Operation.
+    auto t5 = t4.exp();            // t5 is an Operation.
+    Tensor<float, 3> result = t5;  // The operations are evaluated.
+
+If you know the ranks and sizes of the Operation value you can assign the
+Operation to a TensorFixedSize instead of a Tensor, which is a bit more
+efficient.
+
+    // We know that the result is a 4x4x2 tensor!
+    TensorFixedSize<float, Sizes<4, 4, 2>> result = t5;
+
+Simiarly, assigning an expression to a TensorMap causes its evaluation.  Like
+tensors of type TensorFixedSize, TensorMaps cannot be resized so they have to
+have the rank and sizes of the expression that are assigned to them.
+
+#### Calling `eval()`.
+
+When you compute large composite expressions, you sometimes want to tell Eigen
+that an intermediate value in the expression tree is worth evaluating ahead of
+time.  This is done by inserting a call to the `eval()` method of the
+expression Operation.
+
+    // The previous example could have been written:
+    Tensor<float, 3> result = ((t1 + t2) * 0.2f).exp();
+
+    // If you want to compute (t1 + t2) once ahead of time you can write:
+    Tensor<float, 3> result = ((t1 + t2).eval() * 0.2f).exp();
+
+Semantically, calling `eval()` is equivalent to materializing the value of
+the expression in a temporary Tensor of the right size.  The code above in
+effect does:
+
+    // .eval() knows the size!
+    TensorFixedSize<float, Sizes<4, 4, 2>> tmp = t1 + t2;
+    Tensor<float, 3> result = (tmp * 0.2f).exp();
+
+Note that the return value of `eval()` is itself an Operation, so the
+following code does not do what you may think:
+
+    // Here t3 is an evaluation Operation.  t3 has not been evaluated yet.
+    auto t3 = (t1 + t2).eval();
+
+    // You can use t3 in another expression.  Still no evaluation.
+    auto t4 = (t3 * 0.2f).exp();
+
+    // The value is evaluated when you assign the Operation to a Tensor, using
+    // an intermediate tensor to represent t3.x
+    Tensor<float, 3> result = t4;
+
+While in the examples above calling `eval()` does not make a difference in
+performance, in other cases it can make a huge difference.  In the expression
+below the `broadcast()` expression causes the `X.maximum()` expression
+to be evaluated many times:
+
+    Tensor<...> X ...;
+    Tensor<...> Y = ((X - X.maximum(depth_dim).reshape(dims2d).broadcast(bcast))
+                     * beta).exp();
+
+Inserting a call to `eval()` between the `maximum()` and
+`reshape()` calls guarantees that maximum() is only computed once and
+greatly speeds-up execution:
+
+    Tensor<...> Y =
+      ((X - X.maximum(depth_dim).eval().reshape(dims2d).broadcast(bcast))
+        * beta).exp();
+
+In the other example below, the tensor `Y` is both used in the expression
+and its assignment.  This is an aliasing problem and if the evaluation is not
+done in the right order Y will be updated incrementally during the evaluation
+resulting in bogus results:
+
+     Tensor<...> Y ...;
+     Y = Y / (Y.sum(depth_dim).reshape(dims2d).broadcast(bcast));
+
+Inserting a call to `eval()` between the `sum()` and `reshape()`
+expressions ensures that the sum is computed before any updates to `Y` are
+done.
+
+     Y = Y / (Y.sum(depth_dim).eval().reshape(dims2d).broadcast(bcast));
+
+Note that an eval around the full right hand side expression is not needed
+because the generated has to compute the i-th value of the right hand side
+before assigning it to the left hand side.
+
+However, if you were assigning the expression value to a shuffle of `Y`
+then you would need to force an eval for correctness by adding an `eval()`
+call for the right hand side:
+
+     Y.shuffle(...) =
+        (Y / (Y.sum(depth_dim).eval().reshape(dims2d).broadcast(bcast))).eval();
+
+
+#### Assigning to a `TensorRef`.
+
+If you need to access only a few elements from the value of an expression you
+can avoid materializing the value in a full tensor by using a TensorRef.
+
+A TensorRef is a small wrapper class for any Eigen Operation.  It provides
+overloads for the `()` operator that let you access individual values in
+the expression.  TensorRef is convenient, because the Operation themselves do
+not provide a way to access individual elements.
+
+    // Create a TensorRef for the expression.  The expression is not
+    // evaluated yet.
+    TensorRef<Tensor<float, 3> > ref = ((t1 + t2) * 0.2f).exp();
+
+    // Use "ref" to access individual elements.  The expression is evaluated
+    // on the fly.
+    float at_0 = ref(0, 0, 0);
+    cout << ref(0, 1, 0);
+
+Only use TensorRef when you need a subset of the values of the expression.
+TensorRef only computes the values you access.  However note that if you are
+going to access all the values it will be much faster to materialize the
+results in a Tensor first.
+
+In some cases, if the full Tensor result would be very large, you may save
+memory by accessing it as a TensorRef.  But not always.  So don't count on it.
+
+
+### Controlling How Expressions Are Evaluated
+
+The tensor library provides several implementations of the various operations
+such as contractions and convolutions.  The implementations are optimized for
+different environments: single threaded on CPU, multi threaded on CPU, or on a
+GPU using cuda.  Additional implementations may be added later.
+
+You can choose which implementation to use with the `device()` call.  If
+you do not choose an implementation explicitly the default implementation that
+uses a single thread on the CPU is used.
+
+The default implementation has been optimized for recent Intel CPUs, taking
+advantage of SSE, AVX, and FMA instructions.  Work is ongoing to tune the
+library on ARM CPUs.  Note that you need to pass compiler-dependent flags
+to enable the use of SSE, AVX, and other instructions.
+
+For example, the following code adds two tensors using the default
+single-threaded CPU implementation:
+
+    Tensor<float, 2> a(30, 40);
+    Tensor<float, 2> b(30, 40);
+    Tensor<float, 2> c = a + b;
+
+To choose a different implementation you have to insert a `device()` call
+before the assignment of the result.  For technical C++ reasons this requires
+that the Tensor for the result be declared on its own.  This means that you
+have to know the size of the result.
+
+    Eigen::Tensor<float, 2> c(30, 40);
+    c.device(...) = a + b;
+
+The call to `device()` must be the last call on the left of the operator=.
+
+You must pass to the `device()` call an Eigen device object.  There are
+presently three devices you can use: DefaultDevice, ThreadPoolDevice and
+GpuDevice.
+
+
+#### Evaluating With the DefaultDevice
+
+This is exactly the same as not inserting a `device()` call.
+
+    DefaultDevice my_device;
+    c.device(my_device) = a + b;
+
+#### Evaluating with a Thread Pool
+
+    // Create the Eigen ThreadPoolDevice.
+    Eigen::ThreadPoolDevice my_device(4 /* number of threads to use */);
+
+    // Now just use the device when evaluating expressions.
+    Eigen::Tensor<float, 2> c(30, 50);
+    c.device(my_device) = a.contract(b, dot_product_dims);
+
+
+#### Evaluating On GPU
+
+This is presently a bit more complicated than just using a thread pool device.
+You need to create a GPU device but you also need to explicitly allocate the
+memory for tensors with cuda.
+
+
+## API Reference
+
+### Datatypes
+
+In the documentation of the tensor methods and Operation we mention datatypes
+that are tensor-type specific:
+
+#### `<Tensor-Type>::``Dimensions`
+
+Acts like an array of ints.  Has an `int size` attribute, and can be
+indexed like an array to access individual values.  Used to represent the
+dimensions of a tensor.  See `dimensions()`.
+
+#### `<Tensor-Type>::``Index`
+
+Acts like an `int`.  Used for indexing tensors along their dimensions.  See
+`operator()`, `dimension()`, and `size()`.
+
+#### `<Tensor-Type>::``Scalar`
+
+Represents the datatype of individual tensor elements.  For example, for a
+`Tensor<float>`, `Scalar` is the type `float`.  See
+`setConstant()`.
+
+#### `<Operation>`
+
+We use this pseudo type to indicate that a tensor Operation is returned by a
+method.  We indicate in the text the type and dimensions of the tensor that the
+Operation returns after evaluation.
+
+The Operation will have to be evaluated, for example by assigning it to a
+tensor, before you can access the values of the resulting tensor.  You can also
+access the values through a TensorRef.
+
+
+## Built-in Tensor Methods
+
+These are usual C++ methods that act on tensors immediately.  They are not
+Operations which provide delayed evaluation of their results.  Unless specified
+otherwise, all the methods listed below are available on all tensor classes:
+Tensor, TensorFixedSize, and TensorMap.
+
+## Metadata
+
+### `int NumDimensions`
+
+Constant value indicating the number of dimensions of a Tensor.  This is also
+known as the tensor "rank".
+
+      Eigen::Tensor<float, 2> a(3, 4);
+      cout << "Dims " << a.NumDimensions;
+      => Dims 2
+
+### `Dimensions dimensions()`
+
+Returns an array-like object representing the dimensions of the tensor.
+The actual type of the `dimensions()` result is `<Tensor-Type>::``Dimensions`.
+
+    Eigen::Tensor<float, 2> a(3, 4);
+    const Eigen::Tensor<float, 2>::Dimensions& d = a.dimensions();
+    cout << "Dim size: " << d.size << ", dim 0: " << d[0]
+         << ", dim 1: " << d[1];
+    => Dim size: 2, dim 0: 3, dim 1: 4
+
+If you use a C++11 compiler, you can use `auto` to simplify the code:
+
+    const auto& d = a.dimensions();
+    cout << "Dim size: " << d.size << ", dim 0: " << d[0]
+         << ", dim 1: " << d[1];
+    => Dim size: 2, dim 0: 3, dim 1: 4
+
+### `Index dimension(Index n)`
+
+Returns the n-th dimension of the tensor.  The actual type of the
+`dimension()` result is `<Tensor-Type>::``Index`, but you can
+always use it like an int.
+
+      Eigen::Tensor<float, 2> a(3, 4);
+      int dim1 = a.dimension(1);
+      cout << "Dim 1: " << dim1;
+      => Dim 1: 4
+
+### `Index size()`
+
+Returns the total number of elements in the tensor.  This is the product of all
+the tensor dimensions.  The actual type of the `size()` result is
+`<Tensor-Type>::``Index`, but you can always use it like an int.
+
+    Eigen::Tensor<float, 2> a(3, 4);
+    cout << "Size: " << a.size();
+    => Size: 12
+
+
+### Getting Dimensions From An Operation
+
+A few operations provide `dimensions()` directly,
+e.g. `TensorReslicingOp`.  Most operations defer calculating dimensions
+until the operation is being evaluated.  If you need access to the dimensions
+of a deferred operation, you can wrap it in a TensorRef (see Assigning to a
+TensorRef above), which provides `dimensions()` and `dimension()` as
+above.
+
+TensorRef can also wrap the plain Tensor types, so this is a useful idiom in
+templated contexts where the underlying object could be either a raw Tensor
+or some deferred operation (e.g. a slice of a Tensor).  In this case, the
+template code can wrap the object in a TensorRef and reason about its
+dimensionality while remaining agnostic to the underlying type.
+
+
+## Constructors
+
+### Tensor
+
+Creates a tensor of the specified size. The number of arguments must be equal
+to the rank of the tensor. The content of the tensor is not initialized.
+
+    Eigen::Tensor<float, 2> a(3, 4);
+    cout << "NumRows: " << a.dimension(0) << " NumCols: " << a.dimension(1) << endl;
+    => NumRows: 3 NumCols: 4
+
+### TensorFixedSize
+
+Creates a tensor of the specified size. The number of arguments in the Sizes<>
+template parameter determines the rank of the tensor. The content of the tensor
+is not initialized.
+
+    Eigen::TensorFixedSize<float, Sizes<3, 4>> a;
+    cout << "Rank: " << a.rank() << endl;
+    => Rank: 2
+    cout << "NumRows: " << a.dimension(0) << " NumCols: " << a.dimension(1) << endl;
+    => NumRows: 3 NumCols: 4
+
+### TensorMap
+
+Creates a tensor mapping an existing array of data. The data must not be freed
+until the TensorMap is discarded, and the size of the data must be large enough
+to accommodate the coefficients of the tensor.
+
+    float data[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
+    Eigen::TensorMap<Tensor<float, 2>> a(data, 3, 4);
+    cout << "NumRows: " << a.dimension(0) << " NumCols: " << a.dimension(1) << endl;
+    => NumRows: 3 NumCols: 4
+    cout << "a(1, 2): " << a(1, 2) << endl;
+    => a(1, 2): 7
+
+
+## Contents Initialization
+
+When a new Tensor or a new TensorFixedSize are created, memory is allocated to
+hold all the tensor elements, but the memory is not initialized.  Similarly,
+when a new TensorMap is created on top of non-initialized memory the memory its
+contents are not initialized.
+
+You can use one of the methods below to initialize the tensor memory.  These
+have an immediate effect on the tensor and return the tensor itself as a
+result.  These are not tensor Operations which delay evaluation.
+
+### `<Tensor-Type> setConstant(const Scalar& val)`
+
+Sets all elements of the tensor to the constant value `val`.  `Scalar`
+is the type of data stored in the tensor.  You can pass any value that is
+convertible to that type.
+
+Returns the tensor itself in case you want to chain another call.
+
+    a.setConstant(12.3f);
+    cout << "Constant: " << endl << a << endl << endl;
+    =>
+    Constant:
+    12.3 12.3 12.3 12.3
+    12.3 12.3 12.3 12.3
+    12.3 12.3 12.3 12.3
+
+Note that `setConstant()` can be used on any tensor where the element type
+has a copy constructor and an `operator=()`:
+
+    Eigen::Tensor<string, 2> a(2, 3);
+    a.setConstant("yolo");
+    cout << "String tensor: " << endl << a << endl << endl;
+    =>
+    String tensor:
+    yolo yolo yolo
+    yolo yolo yolo
+
+
+### `<Tensor-Type> setZero()`
+
+Fills the tensor with zeros.  Equivalent to `setConstant(Scalar(0))`.
+Returns the tensor itself in case you want to chain another call.
+
+    a.setZero();
+    cout << "Zeros: " << endl << a << endl << endl;
+    =>
+    Zeros:
+    0 0 0 0
+    0 0 0 0
+    0 0 0 0
+
+
+### `<Tensor-Type> setValues({..initializer_list})`
+
+Fills the tensor with explicit values specified in a std::initializer_list.
+The type of the initializer list depends on the type and rank of the tensor.
+
+If the tensor has rank N, the initializer list must be nested N times.  The
+most deeply nested lists must contains P scalars of the Tensor type where P is
+the size of the last dimension of the Tensor.
+
+For example, for a `TensorFixedSize<float, 2, 3>` the initializer list must
+contains 2 lists of 3 floats each.
+
+`setValues()` returns the tensor itself in case you want to chain another
+call.
+
+    Eigen::Tensor<float, 2> a(2, 3);
+    a.setValues({{0.0f, 1.0f, 2.0f}, {3.0f, 4.0f, 5.0f}});
+    cout << "a" << endl << a << endl << endl;
+    =>
+    a
+    0 1 2
+    3 4 5
+
+If a list is too short, the corresponding elements of the tensor will not be
+changed.  This is valid at each level of nesting.  For example the following
+code only sets the values of the first row of the tensor.
+
+    Eigen::Tensor<int, 2> a(2, 3);
+    a.setConstant(1000);
+    a.setValues({{10, 20, 30}});
+    cout << "a" << endl << a << endl << endl;
+    =>
+    a
+    10   20   30
+    1000 1000 1000
+
+### `<Tensor-Type> setRandom()`
+
+Fills the tensor with random values.  Returns the tensor itself in case you
+want to chain another call.
+
+    a.setRandom();
+    cout << "Random: " << endl << a << endl << endl;
+    =>
+    Random:
+      0.680375    0.59688  -0.329554    0.10794
+     -0.211234   0.823295   0.536459 -0.0452059
+      0.566198  -0.604897  -0.444451   0.257742
+
+You can customize `setRandom()` by providing your own random number
+generator as a template argument:
+
+    a.setRandom<MyRandomGenerator>();
+
+Here, `MyRandomGenerator` must be a struct with the following member
+functions, where Scalar and Index are the same as `<Tensor-Type>::``Scalar`
+and `<Tensor-Type>::``Index`.
+
+See `struct UniformRandomGenerator` in TensorFunctors.h for an example.
+
+    // Custom number generator for use with setRandom().
+    struct MyRandomGenerator {
+      // Default and copy constructors. Both are needed
+      MyRandomGenerator() { }
+      MyRandomGenerator(const MyRandomGenerator& ) { }
+
+      // Return a random value to be used.  "element_location" is the
+      // location of the entry to set in the tensor, it can typically
+      // be ignored.
+      Scalar operator()(Eigen::DenseIndex element_location,
+                        Eigen::DenseIndex /*unused*/ = 0) const {
+        return <randomly generated value of type T>;
+      }
+
+      // Same as above but generates several numbers at a time.
+      typename internal::packet_traits<Scalar>::type packetOp(
+          Eigen::DenseIndex packet_location, Eigen::DenseIndex /*unused*/ = 0) const {
+        return <a packet of randomly generated values>;
+      }
+    };
+
+You can also use one of the 2 random number generators that are part of the
+tensor library:
+*   UniformRandomGenerator
+*   NormalRandomGenerator
+
+
+## Data Access
+
+The Tensor, TensorFixedSize, and TensorRef classes provide the following
+accessors to access the tensor coefficients:
+
+    const Scalar& operator()(const array<Index, NumIndices>& indices)
+    const Scalar& operator()(Index firstIndex, IndexTypes... otherIndices)
+    Scalar& operator()(const array<Index, NumIndices>& indices)
+    Scalar& operator()(Index firstIndex, IndexTypes... otherIndices)
+
+The number of indices must be equal to the rank of the tensor. Moreover, these
+accessors are not available on tensor expressions. In order to access the
+values of a tensor expression, the expression must either be evaluated or
+wrapped in a TensorRef.
+
+
+### `Scalar* data()` and `const Scalar* data() const`
+
+Returns a pointer to the storage for the tensor.  The pointer is const if the
+tensor was const.  This allows direct access to the data.  The layout of the
+data depends on the tensor layout: RowMajor or ColMajor.
+
+This access is usually only needed for special cases, for example when mixing
+Eigen Tensor code with other libraries.
+
+Scalar is the type of data stored in the tensor.
+
+    Eigen::Tensor<float, 2> a(3, 4);
+    float* a_data = a.data();
+    a_data[0] = 123.45f;
+    cout << "a(0, 0): " << a(0, 0);
+    => a(0, 0): 123.45
+
+
+## Tensor Operations
+
+All the methods documented below return non evaluated tensor `Operations`.
+These can be chained: you can apply another Tensor Operation to the value
+returned by the method.
+
+The chain of Operation is evaluated lazily, typically when it is assigned to a
+tensor.  See "Controlling when Expression are Evaluated" for more details about
+their evaluation.
+
+### `<Operation> constant(const Scalar& val)`
+
+Returns a tensor of the same type and dimensions as the original tensor but
+where all elements have the value `val`.
+
+This is useful, for example, when you want to add or subtract a constant from a
+tensor, or multiply every element of a tensor by a scalar.
+
+    Eigen::Tensor<float, 2> a(2, 3);
+    a.setConstant(1.0f);
+    Eigen::Tensor<float, 2> b = a + a.constant(2.0f);
+    Eigen::Tensor<float, 2> c = b * b.constant(0.2f);
+    cout << "a" << endl << a << endl << endl;
+    cout << "b" << endl << b << endl << endl;
+    cout << "c" << endl << c << endl << endl;
+    =>
+    a
+    1 1 1
+    1 1 1
+
+    b
+    3 3 3
+    3 3 3
+
+    c
+    0.6 0.6 0.6
+    0.6 0.6 0.6
+
+### `<Operation> random()`
+
+Returns a tensor of the same type and dimensions as the current tensor
+but where all elements have random values.
+
+This is for example useful to add random values to an existing tensor.
+The generation of random values can be customized in the same manner
+as for `setRandom()`.
+
+    Eigen::Tensor<float, 2> a(2, 3);
+    a.setConstant(1.0f);
+    Eigen::Tensor<float, 2> b = a + a.random();
+    cout << "a" << endl << a << endl << endl;
+    cout << "b" << endl << b << endl << endl;
+    =>
+    a
+    1 1 1
+    1 1 1
+
+    b
+    1.68038   1.5662  1.82329
+    0.788766  1.59688 0.395103
+
+
+## Unary Element Wise Operations
+
+All these operations take a single input tensor as argument and return a tensor
+of the same type and dimensions as the tensor to which they are applied.  The
+requested operations are applied to each element independently.
+
+### `<Operation> operator-()`
+
+Returns a tensor of the same type and dimensions as the original tensor
+containing the opposite values of the original tensor.
+
+    Eigen::Tensor<float, 2> a(2, 3);
+    a.setConstant(1.0f);
+    Eigen::Tensor<float, 2> b = -a;
+    cout << "a" << endl << a << endl << endl;
+    cout << "b" << endl << b << endl << endl;
+    =>
+    a
+    1 1 1
+    1 1 1
+
+    b
+    -1 -1 -1
+    -1 -1 -1
+
+### `<Operation> sqrt()`
+
+Returns a tensor of the same type and dimensions as the original tensor
+containing the square roots of the original tensor.
+
+### `<Operation> rsqrt()`
+
+Returns a tensor of the same type and dimensions as the original tensor
+containing the inverse square roots of the original tensor.
+
+### `<Operation> square()`
+
+Returns a tensor of the same type and dimensions as the original tensor
+containing the squares of the original tensor values.
+
+### `<Operation> inverse()`
+
+Returns a tensor of the same type and dimensions as the original tensor
+containing the inverse of the original tensor values.
+
+### `<Operation> exp()`
+
+Returns a tensor of the same type and dimensions as the original tensor
+containing the exponential of the original tensor.
+
+### `<Operation> log()`
+
+Returns a tensor of the same type and dimensions as the original tensor
+containing the natural logarithms of the original tensor.
+
+### `<Operation> abs()`
+
+Returns a tensor of the same type and dimensions as the original tensor
+containing the absolute values of the original tensor.
+
+### `<Operation> pow(Scalar exponent)`
+
+Returns a tensor of the same type and dimensions as the original tensor
+containing the coefficients of the original tensor to the power of the
+exponent.
+
+The type of the exponent, Scalar, is always the same as the type of the
+tensor coefficients.  For example, only integer exponents can be used in
+conjuntion with tensors of integer values.
+
+You can use cast() to lift this restriction.  For example this computes
+cubic roots of an int Tensor:
+
+    Eigen::Tensor<int, 2> a(2, 3);
+    a.setValues({{0, 1, 8}, {27, 64, 125}});
+    Eigen::Tensor<double, 2> b = a.cast<double>().pow(1.0 / 3.0);
+    cout << "a" << endl << a << endl << endl;
+    cout << "b" << endl << b << endl << endl;
+    =>
+    a
+    0   1   8
+    27  64 125
+
+    b
+    0 1 2
+    3 4 5
+
+### `<Operation>  operator * (Scalar scale)`
+
+Multiplies all the coefficients of the input tensor by the provided scale.
+
+### `<Operation>  cwiseMax(Scalar threshold)`
+TODO
+
+### `<Operation>  cwiseMin(Scalar threshold)`
+TODO
+
+### `<Operation>  unaryExpr(const CustomUnaryOp& func)`
+TODO
+
+
+## Binary Element Wise Operations
+
+These operations take two input tensors as arguments. The 2 input tensors should
+be of the same type and dimensions. The result is a tensor of the same
+dimensions as the tensors to which they are applied, and unless otherwise
+specified it is also of the same type. The requested operations are applied to
+each pair of elements independently.
+
+### `<Operation> operator+(const OtherDerived& other)`
+
+Returns a tensor of the same type and dimensions as the input tensors
+containing the coefficient wise sums of the inputs.
+
+### `<Operation> operator-(const OtherDerived& other)`
+
+Returns a tensor of the same type and dimensions as the input tensors
+containing the coefficient wise differences of the inputs.
+
+### `<Operation> operator*(const OtherDerived& other)`
+
+Returns a tensor of the same type and dimensions as the input tensors
+containing the coefficient wise products of the inputs.
+
+### `<Operation> operator/(const OtherDerived& other)`
+
+Returns a tensor of the same type and dimensions as the input tensors
+containing the coefficient wise quotients of the inputs.
+
+This operator is not supported for integer types.
+
+### `<Operation> cwiseMax(const OtherDerived& other)`
+
+Returns a tensor of the same type and dimensions as the input tensors
+containing the coefficient wise maximums of the inputs.
+
+### `<Operation> cwiseMin(const OtherDerived& other)`
+
+Returns a tensor of the same type and dimensions as the input tensors
+containing the coefficient wise mimimums of the inputs.
+
+### `<Operation> Logical operators`
+
+The following logical operators are supported as well:
+
+*   operator&&(const OtherDerived& other)
+*   operator||(const OtherDerived& other)
+*   operator<(const OtherDerived& other)
+*   operator<=(const OtherDerived& other)
+*   operator>(const OtherDerived& other)
+*   operator>=(const OtherDerived& other)
+*   operator==(const OtherDerived& other)
+*   operator!=(const OtherDerived& other)
+
+They all return a tensor of boolean values.
+
+
+## Selection (select(const ThenDerived& thenTensor, const ElseDerived& elseTensor)
+
+Selection is a coefficient-wise ternary operator that is the tensor equivalent
+to the if-then-else operation.
+
+    Tensor<bool, 3> if = ...;
+    Tensor<float, 3> then = ...;
+    Tensor<float, 3> else = ...;
+    Tensor<float, 3> result = if.select(then, else);
+
+The 3 arguments must be of the same dimensions, which will also be the dimension
+of the result.  The 'if' tensor must be of type boolean, the 'then' and the
+'else' tensor must be of the same type, which will also be the type of the
+result.
+
+Each coefficient in the result is equal to the corresponding coefficient in the
+'then' tensor if the corresponding value in the 'if' tensor is true. If not, the
+resulting coefficient will come from the 'else' tensor.
+
+
+## Contraction
+
+Tensor *contractions* are a generalization of the matrix product to the
+multidimensional case.
+
+    // Create 2 matrices using tensors of rank 2
+    Eigen::Tensor<int, 2> a(2, 3);
+    a.setValues({{1, 2, 3}, {6, 5, 4}});
+    Eigen::Tensor<int, 2> b(3, 2);
+    b.setValues({{1, 2}, {4, 5}, {5, 6}});
+
+    // Compute the traditional matrix product
+    Eigen::array<Eigen::IndexPair<int>, 1> product_dims = { Eigen::IndexPair<int>(1, 0) };
+    Eigen::Tensor<int, 2> AB = a.contract(b, product_dims);
+
+    // Compute the product of the transpose of the matrices
+    Eigen::array<Eigen::IndexPair<int>, 1> transposed_product_dims = { Eigen::IndexPair<int>(0, 1) };
+    Eigen::Tensor<int, 2> AtBt = a.contract(b, transposed_product_dims);
+
+    // Contraction to scalar value using a double contraction.
+    // First coordinate of both tensors are contracted as well as both second coordinates, i.e., this computes the sum of the squares of the elements.
+    Eigen::array<Eigen::IndexPair<int>, 2> double_contraction_product_dims = { Eigen::IndexPair<int>(0, 0), Eigen::IndexPair<int>(1, 1) };
+    Eigen::Tensor<int, 0> AdoubleContractedA = a.contract(a, double_contraction_product_dims);
+
+    // Extracting the scalar value of the tensor contraction for further usage
+    int value = AdoubleContractedA(0);
+
+## Reduction Operations
+
+A *Reduction* operation returns a tensor with fewer dimensions than the
+original tensor.  The values in the returned tensor are computed by applying a
+*reduction operator* to slices of values from the original tensor.  You specify
+the dimensions along which the slices are made.
+
+The Eigen Tensor library provides a set of predefined reduction operators such
+as `maximum()` and `sum()` and lets you define additional operators by
+implementing a few methods from a reductor template.
+
+### Reduction Dimensions
+
+All reduction operations take a single parameter of type
+`<TensorType>::``Dimensions` which can always be specified as an array of
+ints.  These are called the "reduction dimensions."  The values are the indices
+of the dimensions of the input tensor over which the reduction is done.  The
+parameter can have at most as many element as the rank of the input tensor;
+each element must be less than the tensor rank, as it indicates one of the
+dimensions to reduce.
+
+Each dimension of the input tensor should occur at most once in the reduction
+dimensions as the implementation does not remove duplicates.
+
+The order of the values in the reduction dimensions does not affect the
+results, but the code may execute faster if you list the dimensions in
+increasing order.
+
+Example: Reduction along one dimension.
+
+    // Create a tensor of 2 dimensions
+    Eigen::Tensor<int, 2> a(2, 3);
+    a.setValues({{1, 2, 3}, {6, 5, 4}});
+    // Reduce it along the second dimension (1)...
+    Eigen::array<int, 1> dims({1 /* dimension to reduce */});
+    // ...using the "maximum" operator.
+    // The result is a tensor with one dimension.  The size of
+    // that dimension is the same as the first (non-reduced) dimension of a.
+    Eigen::Tensor<int, 1> b = a.maximum(dims);
+    cout << "a" << endl << a << endl << endl;
+    cout << "b" << endl << b << endl << endl;
+    =>
+    a
+    1 2 3
+    6 5 4
+
+    b
+    3
+    6
+
+Example: Reduction along two dimensions.
+
+    Eigen::Tensor<float, 3, Eigen::ColMajor> a(2, 3, 4);
+    a.setValues({{{0.0f, 1.0f, 2.0f, 3.0f},
+                  {7.0f, 6.0f, 5.0f, 4.0f},
+                  {8.0f, 9.0f, 10.0f, 11.0f}},
+                 {{12.0f, 13.0f, 14.0f, 15.0f},
+                  {19.0f, 18.0f, 17.0f, 16.0f},
+                  {20.0f, 21.0f, 22.0f, 23.0f}}});
+    // The tensor a has 3 dimensions.  We reduce along the
+    // first 2, resulting in a tensor with a single dimension
+    // of size 4 (the last dimension of a.)
+    // Note that we pass the array of reduction dimensions
+    // directly to the maximum() call.
+    Eigen::Tensor<float, 1, Eigen::ColMajor> b =
+        a.maximum(Eigen::array<int, 2>({0, 1}));
+    cout << "b" << endl << b << endl << endl;
+    =>
+    b
+    20
+    21
+    22
+    23
+
+#### Reduction along all dimensions
+
+As a special case, if you pass no parameter to a reduction operation the
+original tensor is reduced along *all* its dimensions.  The result is a
+scalar, represented as a zero-dimension tensor.
+
+    Eigen::Tensor<float, 3> a(2, 3, 4);
+    a.setValues({{{0.0f, 1.0f, 2.0f, 3.0f},
+                  {7.0f, 6.0f, 5.0f, 4.0f},
+                  {8.0f, 9.0f, 10.0f, 11.0f}},
+                 {{12.0f, 13.0f, 14.0f, 15.0f},
+                  {19.0f, 18.0f, 17.0f, 16.0f},
+                  {20.0f, 21.0f, 22.0f, 23.0f}}});
+    // Reduce along all dimensions using the sum() operator.
+    Eigen::Tensor<float, 0> b = a.sum();
+    cout << "b" << endl << b << endl << endl;
+    =>
+    b
+    276
+
+
+### `<Operation> sum(const Dimensions& new_dims)`
+### `<Operation> sum()`
+
+Reduce a tensor using the sum() operator.  The resulting values
+are the sum of the reduced values.
+
+### `<Operation> mean(const Dimensions& new_dims)`
+### `<Operation> mean()`
+
+Reduce a tensor using the mean() operator.  The resulting values
+are the mean of the reduced values.
+
+### `<Operation> maximum(const Dimensions& new_dims)`
+### `<Operation> maximum()`
+
+Reduce a tensor using the maximum() operator.  The resulting values are the
+largest of the reduced values.
+
+### `<Operation> minimum(const Dimensions& new_dims)`
+### `<Operation> minimum()`
+
+Reduce a tensor using the minimum() operator.  The resulting values
+are the smallest of the reduced values.
+
+### `<Operation> prod(const Dimensions& new_dims)`
+### `<Operation> prod()`
+
+Reduce a tensor using the prod() operator.  The resulting values
+are the product of the reduced values.
+
+### `<Operation> all(const Dimensions& new_dims)`
+### `<Operation> all()`
+Reduce a tensor using the all() operator.  Casts tensor to bool and then checks
+whether all elements are true.  Runs through all elements rather than
+short-circuiting, so may be significantly inefficient.
+
+### `<Operation> any(const Dimensions& new_dims)`
+### `<Operation> any()`
+Reduce a tensor using the any() operator.  Casts tensor to bool and then checks
+whether any element is true.  Runs through all elements rather than
+short-circuiting, so may be significantly inefficient.
+
+
+### `<Operation> reduce(const Dimensions& new_dims, const Reducer& reducer)`
+
+Reduce a tensor using a user-defined reduction operator.  See `SumReducer`
+in TensorFunctors.h for information on how to implement a reduction operator.
+
+
+## Scan Operations
+
+A *Scan* operation returns a tensor with the same dimensions as the original
+tensor. The operation performs an inclusive scan along the specified
+axis, which means it computes a running total along the axis for a given
+reduction operation.
+If the reduction operation corresponds to summation, then this computes the
+prefix sum of the tensor along the given axis.
+
+Example:
+dd a comment to this line
+
+    // Create a tensor of 2 dimensions
+    Eigen::Tensor<int, 2> a(2, 3);
+    a.setValues({{1, 2, 3}, {4, 5, 6}});
+    // Scan it along the second dimension (1) using summation
+    Eigen::Tensor<int, 2> b = a.cumsum(1);
+    // The result is a tensor with the same size as the input
+    cout << "a" << endl << a << endl << endl;
+    cout << "b" << endl << b << endl << endl;
+    =>
+    a
+    1 2 3
+    4 5 6
+
+    b
+    1  3  6
+    4  9 15
+
+### `<Operation> cumsum(const Index& axis)`
+
+Perform a scan by summing consecutive entries.
+
+### `<Operation> cumprod(const Index& axis)`
+
+Perform a scan by multiplying consecutive entries.
+
+
+## Convolutions
+
+### `<Operation> convolve(const Kernel& kernel, const Dimensions& dims)`
+
+Returns a tensor that is the output of the convolution of the input tensor with the kernel,
+along the specified dimensions of the input tensor. The dimension size for dimensions of the output tensor
+which were part of the convolution will be reduced by the formula:
+output_dim_size = input_dim_size - kernel_dim_size + 1 (requires: input_dim_size >= kernel_dim_size).
+The dimension sizes for dimensions that were not part of the convolution will remain the same.
+Performance of the convolution can depend on the length of the stride(s) of the input tensor dimension(s) along which the
+convolution is computed (the first dimension has the shortest stride for ColMajor, whereas RowMajor's shortest stride is
+for the last dimension).
+
+    // Compute convolution along the second and third dimension.
+    Tensor<float, 4, DataLayout> input(3, 3, 7, 11);
+    Tensor<float, 2, DataLayout> kernel(2, 2);
+    Tensor<float, 4, DataLayout> output(3, 2, 6, 11);
+    input.setRandom();
+    kernel.setRandom();
+
+    Eigen::array<ptrdiff_t, 2> dims({1, 2});  // Specify second and third dimension for convolution.
+    output = input.convolve(kernel, dims);
+
+    for (int i = 0; i < 3; ++i) {
+      for (int j = 0; j < 2; ++j) {
+        for (int k = 0; k < 6; ++k) {
+          for (int l = 0; l < 11; ++l) {
+            const float result = output(i,j,k,l);
+            const float expected = input(i,j+0,k+0,l) * kernel(0,0) +
+                                   input(i,j+1,k+0,l) * kernel(1,0) +
+                                   input(i,j+0,k+1,l) * kernel(0,1) +
+                                   input(i,j+1,k+1,l) * kernel(1,1);
+            VERIFY_IS_APPROX(result, expected);
+          }
+        }
+      }
+    }
+
+
+## Geometrical Operations
+
+These operations return a Tensor with different dimensions than the original
+Tensor.  They can be used to access slices of tensors, see them with different
+dimensions, or pad tensors with additional data.
+
+### `<Operation> reshape(const Dimensions& new_dims)`
+
+Returns a view of the input tensor that has been reshaped to the specified
+new dimensions.  The argument new_dims is an array of Index values.  The
+rank of the resulting tensor is equal to the number of elements in new_dims.
+
+The product of all the sizes in the new dimension array must be equal to
+the number of elements in the input tensor.
+
+    // Increase the rank of the input tensor by introducing a new dimension
+    // of size 1.
+    Tensor<float, 2> input(7, 11);
+    array<int, 3> three_dims{{7, 11, 1}};
+    Tensor<float, 3> result = input.reshape(three_dims);
+
+    // Decrease the rank of the input tensor by merging 2 dimensions;
+    array<int, 1> one_dim{{7 * 11}};
+    Tensor<float, 1> result = input.reshape(one_dim);
+
+This operation does not move any data in the input tensor, so the resulting
+contents of a reshaped Tensor depend on the data layout of the original Tensor.
+
+For example this is what happens when you `reshape()` a 2D ColMajor tensor
+to one dimension:
+
+    Eigen::Tensor<float, 2, Eigen::ColMajor> a(2, 3);
+    a.setValues({{0.0f, 100.0f, 200.0f}, {300.0f, 400.0f, 500.0f}});
+    Eigen::array<Eigen::DenseIndex, 1> one_dim({3 * 2});
+    Eigen::Tensor<float, 1, Eigen::ColMajor> b = a.reshape(one_dim);
+    cout << "b" << endl << b << endl;
+    =>
+    b
+      0
+    300
+    100
+    400
+    200
+    500
+
+This is what happens when the 2D Tensor is RowMajor:
+
+    Eigen::Tensor<float, 2, Eigen::RowMajor> a(2, 3);
+    a.setValues({{0.0f, 100.0f, 200.0f}, {300.0f, 400.0f, 500.0f}});
+    Eigen::array<Eigen::DenseIndex, 1> one_dim({3 * 2});
+    Eigen::Tensor<float, 1, Eigen::RowMajor> b = a.reshape(one_dim);
+    cout << "b" << endl << b << endl;
+    =>
+    b
+      0
+    100
+    200
+    300
+    400
+    500
+
+The reshape operation is a lvalue. In other words, it can be used on the left
+side of the assignment operator.
+
+The previous example can be rewritten as follow:
+
+    Eigen::Tensor<float, 2, Eigen::ColMajor> a(2, 3);
+    a.setValues({{0.0f, 100.0f, 200.0f}, {300.0f, 400.0f, 500.0f}});
+    Eigen::array<Eigen::DenseIndex, 2> two_dim({2, 3});
+    Eigen::Tensor<float, 1, Eigen::ColMajor> b(6);
+    b.reshape(two_dim) = a;
+    cout << "b" << endl << b << endl;
+    =>
+    b
+      0
+    300
+    100
+    400
+    200
+    500
+
+Note that "b" itself was not reshaped but that instead the assignment is done to
+the reshape view of b.
+
+
+### `<Operation> shuffle(const Shuffle& shuffle)`
+
+Returns a copy of the input tensor whose dimensions have been
+reordered according to the specified permutation. The argument shuffle
+is an array of Index values. Its size is the rank of the input
+tensor. It must contain a permutation of 0, 1, ..., rank - 1. The i-th
+dimension of the output tensor equals to the size of the shuffle[i]-th
+dimension of the input tensor. For example:
+
+    // Shuffle all dimensions to the left by 1.
+    Tensor<float, 3> input(20, 30, 50);
+    // ... set some values in input.
+    Tensor<float, 3> output = input.shuffle({1, 2, 0})
+
+    eigen_assert(output.dimension(0) == 30);
+    eigen_assert(output.dimension(1) == 50);
+    eigen_assert(output.dimension(2) == 20);
+
+Indices into the output tensor are shuffled accordingly to formulate
+indices into the input tensor. For example, one can assert in the above
+code snippet that:
+
+    eigen_assert(output(3, 7, 11) == input(11, 3, 7));
+
+In general, one can assert that
+
+    eigen_assert(output(..., indices[shuffle[i]], ...) ==
+                 input(..., indices[i], ...))
+
+The shuffle operation results in a lvalue, which means that it can be assigned
+to. In other words, it can be used on the left side of the assignment operator.
+
+Let's rewrite the previous example to take advantage of this feature:
+
+    // Shuffle all dimensions to the left by 1.
+    Tensor<float, 3> input(20, 30, 50);
+    // ... set some values in input.
+    Tensor<float, 3> output(30, 50, 20);
+    output.shuffle({2, 0, 1}) = input;
+
+
+### `<Operation> stride(const Strides& strides)`
+
+Returns a view of the input tensor that strides (skips stride-1
+elements) along each of the dimensions.  The argument strides is an
+array of Index values.  The dimensions of the resulting tensor are
+ceil(input_dimensions[i] / strides[i]).
+
+For example this is what happens when you `stride()` a 2D tensor:
+
+    Eigen::Tensor<int, 2> a(4, 3);
+    a.setValues({{0, 100, 200}, {300, 400, 500}, {600, 700, 800}, {900, 1000, 1100}});
+    Eigen::array<Eigen::DenseIndex, 2> strides({3, 2});
+    Eigen::Tensor<int, 2> b = a.stride(strides);
+    cout << "b" << endl << b << endl;
+    =>
+    b
+       0   200
+     900  1100
+
+It is possible to assign a tensor to a stride:
+    Tensor<float, 3> input(20, 30, 50);
+    // ... set some values in input.
+    Tensor<float, 3> output(40, 90, 200);
+    output.stride({2, 3, 4}) = input;
+
+
+### `<Operation> slice(const StartIndices& offsets, const Sizes& extents)`
+
+Returns a sub-tensor of the given tensor. For each dimension i, the slice is
+made of the coefficients stored between offset[i] and offset[i] + extents[i] in
+the input tensor.
+
+    Eigen::Tensor<int, 2> a(4, 3);
+    a.setValues({{0, 100, 200}, {300, 400, 500},
+                 {600, 700, 800}, {900, 1000, 1100}});
+    Eigen::array<int, 2> offsets = {1, 0};
+    Eigen::array<int, 2> extents = {2, 2};
+    Eigen::Tensor<int, 1> slice = a.slice(offsets, extents);
+    cout << "a" << endl << a << endl;
+    =>
+    a
+       0   100   200
+     300   400   500
+     600   700   800
+     900  1000  1100
+    cout << "slice" << endl << slice << endl;
+    =>
+    slice
+     300   400
+     600   700
+
+
+### `<Operation> chip(const Index offset, const Index dim)`
+
+A chip is a special kind of slice. It is the subtensor at the given offset in
+the dimension dim. The returned tensor has one fewer dimension than the input
+tensor: the dimension dim is removed.
+
+For example, a matrix chip would be either a row or a column of the input
+matrix.
+
+    Eigen::Tensor<int, 2> a(4, 3);
+    a.setValues({{0, 100, 200}, {300, 400, 500},
+                 {600, 700, 800}, {900, 1000, 1100}});
+    Eigen::Tensor<int, 1> row_3 = a.chip(2, 0);
+    Eigen::Tensor<int, 1> col_2 = a.chip(1, 1);
+    cout << "a" << endl << a << endl;
+    =>
+    a
+       0   100   200
+     300   400   500
+     600   700   800
+     900  1000  1100
+    cout << "row_3" << endl << row_3 << endl;
+    =>
+    row_3
+       600   700   800
+    cout << "col_2" << endl << col_2 << endl;
+    =>
+    col_2
+       100   400   700    1000
+
+It is possible to assign values to a tensor chip since the chip operation is a
+lvalue. For example:
+
+    Eigen::Tensor<int, 1> a(3);
+    a.setValues({{100, 200, 300}});
+    Eigen::Tensor<int, 2> b(2, 3);
+    b.setZero();
+    b.chip(0, 0) = a;
+    cout << "a" << endl << a << endl;
+    =>
+    a
+     100
+     200
+     300
+    cout << "b" << endl << b << endl;
+    =>
+    b
+       100   200   300
+         0     0     0
+
+
+### `<Operation> reverse(const ReverseDimensions& reverse)`
+
+Returns a view of the input tensor that reverses the order of the coefficients
+along a subset of the dimensions.  The argument reverse is an array of boolean
+values that indicates whether or not the order of the coefficients should be
+reversed along each of the dimensions.  This operation preserves the dimensions
+of the input tensor.
+
+For example this is what happens when you `reverse()` the first dimension
+of a 2D tensor:
+
+    Eigen::Tensor<int, 2> a(4, 3);
+    a.setValues({{0, 100, 200}, {300, 400, 500},
+                {600, 700, 800}, {900, 1000, 1100}});
+    Eigen::array<bool, 2> reverse({true, false});
+    Eigen::Tensor<int, 2> b = a.reverse(reverse);
+    cout << "a" << endl << a << endl << "b" << endl << b << endl;
+    =>
+    a
+       0   100   200
+     300   400   500
+     600   700   800
+     900  1000  1100
+    b
+     900  1000  1100
+     600   700   800
+     300   400   500
+       0   100   200
+
+
+### `<Operation> broadcast(const Broadcast& broadcast)`
+
+Returns a view of the input tensor in which the input is replicated one to many
+times.
+The broadcast argument specifies how many copies of the input tensor need to be
+made in each of the dimensions.
+
+    Eigen::Tensor<int, 2> a(2, 3);
+    a.setValues({{0, 100, 200}, {300, 400, 500}});
+    Eigen::array<int, 2> bcast({3, 2});
+    Eigen::Tensor<int, 2> b = a.broadcast(bcast);
+    cout << "a" << endl << a << endl << "b" << endl << b << endl;
+    =>
+    a
+       0   100   200
+     300   400   500
+    b
+       0   100   200    0   100   200
+     300   400   500  300   400   500
+       0   100   200    0   100   200
+     300   400   500  300   400   500
+       0   100   200    0   100   200
+     300   400   500  300   400   500
+
+### `<Operation> concatenate(const OtherDerived& other, Axis axis)`
+
+TODO
+
+### `<Operation>  pad(const PaddingDimensions& padding)`
+
+Returns a view of the input tensor in which the input is padded with zeros.
+
+    Eigen::Tensor<int, 2> a(2, 3);
+    a.setValues({{0, 100, 200}, {300, 400, 500}});
+    Eigen::array<pair<int, int>, 2> paddings;
+    paddings[0] = make_pair(0, 1);
+    paddings[1] = make_pair(2, 3);
+    Eigen::Tensor<int, 2> b = a.pad(paddings);
+    cout << "a" << endl << a << endl << "b" << endl << b << endl;
+    =>
+    a
+       0   100   200
+     300   400   500
+    b
+       0     0     0    0
+       0     0     0    0
+       0   100   200    0
+     300   400   500    0
+       0     0     0    0
+       0     0     0    0
+       0     0     0    0
+
+
+### `<Operation>  extract_patches(const PatchDims& patch_dims)`
+
+Returns a tensor of coefficient patches extracted from the input tensor, where
+each patch is of dimension specified by 'patch_dims'. The returned tensor has
+one greater dimension than the input tensor, which is used to index each patch.
+The patch index in the output tensor depends on the data layout of the input
+tensor: the patch index is the last dimension ColMajor layout, and the first
+dimension in RowMajor layout.
+
+For example, given the following input tensor:
+
+  Eigen::Tensor<float, 2, DataLayout> tensor(3,4);
+  tensor.setValues({{0.0f, 1.0f, 2.0f, 3.0f},
+                    {4.0f, 5.0f, 6.0f, 7.0f},
+                    {8.0f, 9.0f, 10.0f, 11.0f}});
+
+  cout << "tensor: " << endl << tensor << endl;
+=>
+tensor:
+ 0   1   2   3
+ 4   5   6   7
+ 8   9  10  11
+
+Six 2x2 patches can be extracted and indexed using the following code:
+
+  Eigen::Tensor<float, 3, DataLayout> patch;
+  Eigen::array<ptrdiff_t, 2> patch_dims;
+  patch_dims[0] = 2;
+  patch_dims[1] = 2;
+  patch = tensor.extract_patches(patch_dims);
+  for (int k = 0; k < 6; ++k) {
+    cout << "patch index: " << k << endl;
+    for (int i = 0; i < 2; ++i) {
+      for (int j = 0; j < 2; ++j) {
+        if (DataLayout == ColMajor) {
+          cout << patch(i, j, k) << " ";
+        } else {
+          cout << patch(k, i, j) << " ";
+        }
+      }
+      cout << endl;
+    }
+  }
+
+This code results in the following output when the data layout is ColMajor:
+
+patch index: 0
+0 1
+4 5
+patch index: 1
+4 5
+8 9
+patch index: 2
+1 2
+5 6
+patch index: 3
+5 6
+9 10
+patch index: 4
+2 3
+6 7
+patch index: 5
+6 7
+10 11
+
+This code results in the following output when the data layout is RowMajor:
+(NOTE: the set of patches is the same as in ColMajor, but are indexed differently).
+
+patch index: 0
+0 1
+4 5
+patch index: 1
+1 2
+5 6
+patch index: 2
+2 3
+6 7
+patch index: 3
+4 5
+8 9
+patch index: 4
+5 6
+9 10
+patch index: 5
+6 7
+10 11
+
+### `<Operation>  extract_image_patches(const Index patch_rows, const Index patch_cols, const Index row_stride, const Index col_stride, const PaddingType padding_type)`
+
+Returns a tensor of coefficient image patches extracted from the input tensor,
+which is expected to have dimensions ordered as follows (depending on the data
+layout of the input tensor, and the number of additional dimensions 'N'):
+
+*) ColMajor
+1st dimension: channels (of size d)
+2nd dimension: rows (of size r)
+3rd dimension: columns (of size c)
+4th-Nth dimension: time (for video) or batch (for bulk processing).
+
+*) RowMajor (reverse order of ColMajor)
+1st-Nth dimension: time (for video) or batch (for bulk processing).
+N+1'th dimension: columns (of size c)
+N+2'th dimension: rows (of size r)
+N+3'th dimension: channels (of size d)
+
+The returned tensor has one greater dimension than the input tensor, which is
+used to index each patch. The patch index in the output tensor depends on the
+data layout of the input tensor: the patch index is the 4'th dimension in
+ColMajor layout, and the 4'th from the last dimension in RowMajor layout.
+
+For example, given the following input tensor with the following dimension
+sizes:
+ *) depth:   2
+ *) rows:    3
+ *) columns: 5
+ *) batch:   7
+
+  Tensor<float, 4> tensor(2,3,5,7);
+  Tensor<float, 4, RowMajor> tensor_row_major = tensor.swap_layout();
+
+2x2 image patches can be extracted and indexed using the following code:
+
+*) 2D patch: ColMajor (patch indexed by second-to-last dimension)
+  Tensor<float, 5> twod_patch;
+  twod_patch = tensor.extract_image_patches<2, 2>();
+  // twod_patch.dimension(0) == 2
+  // twod_patch.dimension(1) == 2
+  // twod_patch.dimension(2) == 2
+  // twod_patch.dimension(3) == 3*5
+  // twod_patch.dimension(4) == 7
+
+*) 2D patch: RowMajor (patch indexed by the second dimension)
+  Tensor<float, 5, RowMajor> twod_patch_row_major;
+  twod_patch_row_major = tensor_row_major.extract_image_patches<2, 2>();
+  // twod_patch_row_major.dimension(0) == 7
+  // twod_patch_row_major.dimension(1) == 3*5
+  // twod_patch_row_major.dimension(2) == 2
+  // twod_patch_row_major.dimension(3) == 2
+  // twod_patch_row_major.dimension(4) == 2
+
+## Special Operations
+
+### `<Operation> cast<T>()`
+
+Returns a tensor of type T with the same dimensions as the original tensor.
+The returned tensor contains the values of the original tensor converted to
+type T.
+
+    Eigen::Tensor<float, 2> a(2, 3);
+    Eigen::Tensor<int, 2> b = a.cast<int>();
+
+This can be useful for example if you need to do element-wise division of
+Tensors of integers.  This is not currently supported by the Tensor library
+but you can easily cast the tensors to floats to do the division:
+
+    Eigen::Tensor<int, 2> a(2, 3);
+    a.setValues({{0, 1, 2}, {3, 4, 5}});
+    Eigen::Tensor<int, 2> b =
+        (a.cast<float>() / a.constant(2).cast<float>()).cast<int>();
+    cout << "a" << endl << a << endl << endl;
+    cout << "b" << endl << b << endl << endl;
+    =>
+    a
+    0 1 2
+    3 4 5
+
+    b
+    0 0 1
+    1 2 2
+
+
+### `<Operation>     eval()`
+
+TODO
+
+
+## Representation of scalar values
+
+Scalar values are often represented by tensors of size 1 and rank 0.For example
+Tensor<T, N>::maximum() currently returns a Tensor<T, 0>. Similarly, the inner
+product of 2 1d tensors (through contractions) returns a 0d tensor.
+
+## Limitations
+
+*   The number of tensor dimensions is currently limited to 250 when using a
+    compiler that supports cxx11. It is limited to only 5 for older compilers.
+*   The IndexList class requires a cxx11 compliant compiler. You can use an
+    array of indices instead if you don't have access to a modern compiler.
+*   On GPUs only floating point values are properly tested and optimized for.
+*   Complex and integer values are known to be broken on GPUs. If you try to use
+    them you'll most likely end up triggering a static assertion failure such as
+    EIGEN_STATIC_ASSERT(packetSize > 1, YOU_MADE_A_PROGRAMMING_MISTAKE)
+
+
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorReverse.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorReverse.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorReverse.h	(revision 3762)
@@ -0,0 +1,288 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2014 Navdeep Jaitly <ndjaitly@google.com>
+//                    Benoit Steiner <benoit.steiner.goog@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CXX11_TENSOR_TENSOR_REVERSE_H
+#define EIGEN_CXX11_TENSOR_TENSOR_REVERSE_H
+namespace Eigen {
+
+/** \class TensorReverse
+  * \ingroup CXX11_Tensor_Module
+  *
+  * \brief Tensor reverse elements class.
+  *
+  */
+namespace internal {
+template<typename ReverseDimensions, typename XprType>
+struct traits<TensorReverseOp<ReverseDimensions,
+                              XprType> > : public traits<XprType>
+{
+  typedef typename XprType::Scalar Scalar;
+  typedef traits<XprType> XprTraits;
+  typedef typename XprTraits::StorageKind StorageKind;
+  typedef typename XprTraits::Index Index;
+  typedef typename XprType::Nested Nested;
+  typedef typename remove_reference<Nested>::type _Nested;
+  static const int NumDimensions = XprTraits::NumDimensions;
+  static const int Layout = XprTraits::Layout;
+};
+
+template<typename ReverseDimensions, typename XprType>
+struct eval<TensorReverseOp<ReverseDimensions, XprType>, Eigen::Dense>
+{
+  typedef const TensorReverseOp<ReverseDimensions, XprType>& type;
+};
+
+template<typename ReverseDimensions, typename XprType>
+struct nested<TensorReverseOp<ReverseDimensions, XprType>, 1,
+            typename eval<TensorReverseOp<ReverseDimensions, XprType> >::type>
+{
+  typedef TensorReverseOp<ReverseDimensions, XprType> type;
+};
+
+}  // end namespace internal
+
+template<typename ReverseDimensions, typename XprType>
+class TensorReverseOp : public TensorBase<TensorReverseOp<ReverseDimensions,
+                                          XprType>, WriteAccessors>
+{
+  public:
+  typedef typename Eigen::internal::traits<TensorReverseOp>::Scalar Scalar;
+  typedef typename Eigen::NumTraits<Scalar>::Real RealScalar;
+  typedef typename XprType::CoeffReturnType CoeffReturnType;
+  typedef typename Eigen::internal::nested<TensorReverseOp>::type Nested;
+  typedef typename Eigen::internal::traits<TensorReverseOp>::StorageKind
+                                                                    StorageKind;
+  typedef typename Eigen::internal::traits<TensorReverseOp>::Index Index;
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorReverseOp(
+      const XprType& expr, const ReverseDimensions& reverse_dims)
+      : m_xpr(expr), m_reverse_dims(reverse_dims) { }
+
+    EIGEN_DEVICE_FUNC
+    const ReverseDimensions& reverse() const { return m_reverse_dims; }
+
+    EIGEN_DEVICE_FUNC
+    const typename internal::remove_all<typename XprType::Nested>::type&
+    expression() const { return m_xpr; }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE TensorReverseOp& operator = (const TensorReverseOp& other)
+    {
+      typedef TensorAssignOp<TensorReverseOp, const TensorReverseOp> Assign;
+      Assign assign(*this, other);
+      internal::TensorExecutor<const Assign, DefaultDevice>::run(assign, DefaultDevice());
+      return *this;
+    }
+
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE TensorReverseOp& operator = (const OtherDerived& other)
+    {
+      typedef TensorAssignOp<TensorReverseOp, const OtherDerived> Assign;
+      Assign assign(*this, other);
+      internal::TensorExecutor<const Assign, DefaultDevice>::run(assign, DefaultDevice());
+      return *this;
+    }
+
+  protected:
+    typename XprType::Nested m_xpr;
+    const ReverseDimensions m_reverse_dims;
+};
+
+// Eval as rvalue
+template<typename ReverseDimensions, typename ArgType, typename Device>
+struct TensorEvaluator<const TensorReverseOp<ReverseDimensions, ArgType>, Device>
+{
+  typedef TensorReverseOp<ReverseDimensions, ArgType> XprType;
+  typedef typename XprType::Index Index;
+  static const int NumDims = internal::array_size<ReverseDimensions>::value;
+  typedef DSizes<Index, NumDims> Dimensions;
+  typedef typename XprType::Scalar Scalar;
+  typedef typename XprType::CoeffReturnType CoeffReturnType;
+  typedef typename PacketType<CoeffReturnType, Device>::type PacketReturnType;
+  static const int PacketSize = internal::unpacket_traits<PacketReturnType>::size;
+
+  enum {
+    IsAligned = false,
+    PacketAccess = TensorEvaluator<ArgType, Device>::PacketAccess,
+    Layout = TensorEvaluator<ArgType, Device>::Layout,
+    CoordAccess = false,  // to be implemented
+    RawAccess = false
+  };
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorEvaluator(const XprType& op,
+                                                        const Device& device)
+      : m_impl(op.expression(), device), m_reverse(op.reverse())
+  {
+    // Reversing a scalar isn't supported yet. It would be a no-op anyway.
+    EIGEN_STATIC_ASSERT((NumDims > 0), YOU_MADE_A_PROGRAMMING_MISTAKE);
+
+    // Compute strides
+    m_dimensions = m_impl.dimensions();
+    if (static_cast<int>(Layout) == static_cast<int>(ColMajor)) {
+      m_strides[0] = 1;
+      for (int i = 1; i < NumDims; ++i) {
+        m_strides[i] = m_strides[i-1] * m_dimensions[i-1];
+      }
+    } else {
+      m_strides[NumDims-1] = 1;
+      for (int i = NumDims - 2; i >= 0; --i) {
+        m_strides[i] = m_strides[i+1] * m_dimensions[i+1];
+      }
+    }
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  const Dimensions& dimensions() const { return m_dimensions; }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool evalSubExprsIfNeeded(Scalar*) {
+    m_impl.evalSubExprsIfNeeded(NULL);
+    return true;
+  }
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void cleanup() {
+    m_impl.cleanup();
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Index reverseIndex(
+      Index index) const {
+    eigen_assert(index < dimensions().TotalSize());
+    Index inputIndex = 0;
+    if (static_cast<int>(Layout) == static_cast<int>(ColMajor)) {
+      for (int i = NumDims - 1; i > 0; --i) {
+        Index idx = index / m_strides[i];
+        index -= idx * m_strides[i];
+        if (m_reverse[i]) {
+          idx = m_dimensions[i] - idx - 1;
+        }
+        inputIndex += idx * m_strides[i] ;
+      }
+      if (m_reverse[0]) {
+        inputIndex += (m_dimensions[0] - index - 1);
+      } else {
+        inputIndex += index;
+      }
+    } else {
+      for (int i = 0; i < NumDims - 1; ++i) {
+        Index idx = index / m_strides[i];
+        index -= idx * m_strides[i];
+        if (m_reverse[i]) {
+          idx = m_dimensions[i] - idx - 1;
+        }
+        inputIndex += idx * m_strides[i] ;
+      }
+      if (m_reverse[NumDims-1]) {
+        inputIndex += (m_dimensions[NumDims-1] - index - 1);
+      } else {
+        inputIndex += index;
+      }
+    }
+    return inputIndex;
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType coeff(
+      Index index) const  {
+    return m_impl.coeff(reverseIndex(index));
+  }
+
+  template<int LoadMode>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  PacketReturnType packet(Index index) const
+  {
+    EIGEN_STATIC_ASSERT((PacketSize > 1), YOU_MADE_A_PROGRAMMING_MISTAKE)
+    eigen_assert(index+PacketSize-1 < dimensions().TotalSize());
+
+    // TODO(ndjaitly): write a better packing routine that uses
+    // local structure.
+    EIGEN_ALIGN_MAX typename internal::remove_const<CoeffReturnType>::type
+                                                            values[PacketSize];
+    for (int i = 0; i < PacketSize; ++i) {
+      values[i] = coeff(index+i);
+    }
+    PacketReturnType rslt = internal::pload<PacketReturnType>(values);
+    return rslt;
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorOpCost costPerCoeff(bool vectorized) const {
+    double compute_cost = NumDims * (2 * TensorOpCost::AddCost<Index>() +
+                                     2 * TensorOpCost::MulCost<Index>() +
+                                     TensorOpCost::DivCost<Index>());
+    for (int i = 0; i < NumDims; ++i) {
+      if (m_reverse[i]) {
+        compute_cost += 2 * TensorOpCost::AddCost<Index>();
+      }
+    }
+    return m_impl.costPerCoeff(vectorized) +
+           TensorOpCost(0, 0, compute_cost, false /* vectorized */, PacketSize);
+  }
+
+  EIGEN_DEVICE_FUNC Scalar* data() const { return NULL; }
+
+ protected:
+  Dimensions m_dimensions;
+  array<Index, NumDims> m_strides;
+  TensorEvaluator<ArgType, Device> m_impl;
+  ReverseDimensions m_reverse;
+};
+
+// Eval as lvalue
+
+template <typename ReverseDimensions, typename ArgType, typename Device>
+struct TensorEvaluator<TensorReverseOp<ReverseDimensions, ArgType>, Device>
+    : public TensorEvaluator<const TensorReverseOp<ReverseDimensions, ArgType>,
+                             Device> {
+  typedef TensorEvaluator<const TensorReverseOp<ReverseDimensions, ArgType>,
+                          Device> Base;
+  typedef TensorReverseOp<ReverseDimensions, ArgType> XprType;
+  typedef typename XprType::Index Index;
+  static const int NumDims = internal::array_size<ReverseDimensions>::value;
+  typedef DSizes<Index, NumDims> Dimensions;
+
+  enum {
+    IsAligned = false,
+    PacketAccess = TensorEvaluator<ArgType, Device>::PacketAccess,
+    Layout = TensorEvaluator<ArgType, Device>::Layout,
+    CoordAccess = false,  // to be implemented
+    RawAccess = false
+  };
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorEvaluator(const XprType& op,
+                                                        const Device& device)
+      : Base(op, device) {}
+
+  typedef typename XprType::Scalar Scalar;
+  typedef typename XprType::CoeffReturnType CoeffReturnType;
+  typedef typename PacketType<CoeffReturnType, Device>::type PacketReturnType;
+  static const int PacketSize = internal::unpacket_traits<PacketReturnType>::size;
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  const Dimensions& dimensions() const { return this->m_dimensions; }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar& coeffRef(Index index) {
+    return this->m_impl.coeffRef(this->reverseIndex(index));
+  }
+
+  template <int StoreMode> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  void writePacket(Index index, const PacketReturnType& x) {
+    EIGEN_STATIC_ASSERT((PacketSize > 1), YOU_MADE_A_PROGRAMMING_MISTAKE)
+    eigen_assert(index+PacketSize-1 < dimensions().TotalSize());
+
+    // This code is pilfered from TensorMorphing.h
+    EIGEN_ALIGN_MAX CoeffReturnType values[PacketSize];
+    internal::pstore<CoeffReturnType, PacketReturnType>(values, x);
+    for (int i = 0; i < PacketSize; ++i) {
+      this->coeffRef(index+i) = values[i];
+    }
+  }
+
+};
+
+
+}  // end namespace Eigen
+
+#endif // EIGEN_CXX11_TENSOR_TENSOR_REVERSE_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorArgMax.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorArgMax.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorArgMax.h	(revision 3762)
@@ -0,0 +1,299 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2015 Eugene Brevdo <ebrevdo@gmail.com>
+//                    Benoit Steiner <benoit.steiner.goog@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CXX11_TENSOR_TENSOR_ARG_MAX_H
+#define EIGEN_CXX11_TENSOR_TENSOR_ARG_MAX_H
+
+namespace Eigen {
+namespace internal {
+
+/** \class TensorIndexTuple
+  * \ingroup CXX11_Tensor_Module
+  *
+  * \brief Tensor + Index Tuple class.
+  *
+  *
+  */
+template<typename XprType>
+struct traits<TensorIndexTupleOp<XprType> > : public traits<XprType>
+{
+  typedef traits<XprType> XprTraits;
+  typedef typename XprTraits::StorageKind StorageKind;
+  typedef typename XprTraits::Index Index;
+  typedef Tuple<Index, typename XprTraits::Scalar> Scalar;
+  typedef typename XprType::Nested Nested;
+  typedef typename remove_reference<Nested>::type _Nested;
+  static const int NumDimensions = XprTraits::NumDimensions;
+  static const int Layout = XprTraits::Layout;
+};
+
+template<typename XprType>
+struct eval<TensorIndexTupleOp<XprType>, Eigen::Dense>
+{
+  typedef const TensorIndexTupleOp<XprType>& type;
+};
+
+template<typename XprType>
+struct nested<TensorIndexTupleOp<XprType>, 1,
+              typename eval<TensorIndexTupleOp<XprType> >::type>
+{
+  typedef TensorIndexTupleOp<XprType> type;
+};
+
+}  // end namespace internal
+
+template<typename XprType>
+class TensorIndexTupleOp : public TensorBase<TensorIndexTupleOp<XprType>, ReadOnlyAccessors>
+{
+  public:
+  typedef typename Eigen::internal::traits<TensorIndexTupleOp>::Scalar Scalar;
+  typedef typename Eigen::NumTraits<Scalar>::Real RealScalar;
+  typedef typename Eigen::internal::nested<TensorIndexTupleOp>::type Nested;
+  typedef typename Eigen::internal::traits<TensorIndexTupleOp>::StorageKind StorageKind;
+  typedef typename Eigen::internal::traits<TensorIndexTupleOp>::Index Index;
+  typedef Tuple<Index, typename XprType::CoeffReturnType> CoeffReturnType;
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorIndexTupleOp(const XprType& expr)
+      : m_xpr(expr) {}
+
+  EIGEN_DEVICE_FUNC
+  const typename internal::remove_all<typename XprType::Nested>::type&
+  expression() const { return m_xpr; }
+
+  protected:
+    typename XprType::Nested m_xpr;
+};
+
+// Eval as rvalue
+template<typename ArgType, typename Device>
+struct TensorEvaluator<const TensorIndexTupleOp<ArgType>, Device>
+{
+  typedef TensorIndexTupleOp<ArgType> XprType;
+  typedef typename XprType::Index Index;
+  typedef typename XprType::Scalar Scalar;
+  typedef typename XprType::CoeffReturnType CoeffReturnType;
+
+  typedef typename TensorEvaluator<ArgType, Device>::Dimensions Dimensions;
+  static const int NumDims = internal::array_size<Dimensions>::value;
+
+  enum {
+    IsAligned = /*TensorEvaluator<ArgType, Device>::IsAligned*/ false,
+    PacketAccess = /*TensorEvaluator<ArgType, Device>::PacketAccess*/ false,
+    BlockAccess = false,
+    Layout = TensorEvaluator<ArgType, Device>::Layout,
+    CoordAccess = false,  // to be implemented
+    RawAccess = false
+  };
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorEvaluator(const XprType& op, const Device& device)
+      : m_impl(op.expression(), device) { }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Dimensions& dimensions() const {
+    return m_impl.dimensions();
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool evalSubExprsIfNeeded(Scalar* /*data*/) {
+    m_impl.evalSubExprsIfNeeded(NULL);
+    return true;
+  }
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void cleanup() {
+    m_impl.cleanup();
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType coeff(Index index) const
+  {
+    return CoeffReturnType(index, m_impl.coeff(index));
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorOpCost
+  costPerCoeff(bool vectorized) const {
+    return m_impl.costPerCoeff(vectorized) + TensorOpCost(0, 0, 1);
+  }
+
+  EIGEN_DEVICE_FUNC Scalar* data() const { return NULL; }
+
+ protected:
+  TensorEvaluator<ArgType, Device> m_impl;
+};
+
+namespace internal {
+
+/** \class TensorTupleIndex
+  * \ingroup CXX11_Tensor_Module
+  *
+  * \brief Converts to Tensor<Tuple<Index, Scalar> > and reduces to Tensor<Index>.
+  *
+  */
+template<typename ReduceOp, typename Dims, typename XprType>
+struct traits<TensorTupleReducerOp<ReduceOp, Dims, XprType> > : public traits<XprType>
+{
+  typedef traits<XprType> XprTraits;
+  typedef typename XprTraits::StorageKind StorageKind;
+  typedef typename XprTraits::Index Index;
+  typedef Index Scalar;
+  typedef typename XprType::Nested Nested;
+  typedef typename remove_reference<Nested>::type _Nested;
+  static const int NumDimensions = XprTraits::NumDimensions - array_size<Dims>::value;
+  static const int Layout = XprTraits::Layout;
+};
+
+template<typename ReduceOp, typename Dims, typename XprType>
+struct eval<TensorTupleReducerOp<ReduceOp, Dims, XprType>, Eigen::Dense>
+{
+  typedef const TensorTupleReducerOp<ReduceOp, Dims, XprType>& type;
+};
+
+template<typename ReduceOp, typename Dims, typename XprType>
+struct nested<TensorTupleReducerOp<ReduceOp, Dims, XprType>, 1,
+              typename eval<TensorTupleReducerOp<ReduceOp, Dims, XprType> >::type>
+{
+  typedef TensorTupleReducerOp<ReduceOp, Dims, XprType> type;
+};
+
+}  // end namespace internal
+
+template<typename ReduceOp, typename Dims, typename XprType>
+class TensorTupleReducerOp : public TensorBase<TensorTupleReducerOp<ReduceOp, Dims, XprType>, ReadOnlyAccessors>
+{
+  public:
+  typedef typename Eigen::internal::traits<TensorTupleReducerOp>::Scalar Scalar;
+  typedef typename Eigen::NumTraits<Scalar>::Real RealScalar;
+  typedef typename Eigen::internal::nested<TensorTupleReducerOp>::type Nested;
+  typedef typename Eigen::internal::traits<TensorTupleReducerOp>::StorageKind StorageKind;
+  typedef typename Eigen::internal::traits<TensorTupleReducerOp>::Index Index;
+  typedef Index CoeffReturnType;
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorTupleReducerOp(const XprType& expr,
+                                                          const ReduceOp& reduce_op,
+                                                          const int return_dim,
+                                                          const Dims& reduce_dims)
+      : m_xpr(expr), m_reduce_op(reduce_op), m_return_dim(return_dim), m_reduce_dims(reduce_dims) {}
+
+  EIGEN_DEVICE_FUNC
+  const typename internal::remove_all<typename XprType::Nested>::type&
+  expression() const { return m_xpr; }
+
+  EIGEN_DEVICE_FUNC
+  const ReduceOp& reduce_op() const { return m_reduce_op; }
+
+  EIGEN_DEVICE_FUNC
+  const Dims& reduce_dims() const { return m_reduce_dims; }
+
+  EIGEN_DEVICE_FUNC
+  int return_dim() const { return m_return_dim; }
+
+  protected:
+    typename XprType::Nested m_xpr;
+    const ReduceOp m_reduce_op;
+    const int m_return_dim;
+    const Dims m_reduce_dims;
+};
+
+// Eval as rvalue
+template<typename ReduceOp, typename Dims, typename ArgType, typename Device>
+struct TensorEvaluator<const TensorTupleReducerOp<ReduceOp, Dims, ArgType>, Device>
+{
+  typedef TensorTupleReducerOp<ReduceOp, Dims, ArgType> XprType;
+  typedef typename XprType::Index Index;
+  typedef typename XprType::Scalar Scalar;
+  typedef typename XprType::CoeffReturnType CoeffReturnType;
+  typedef typename TensorIndexTupleOp<ArgType>::CoeffReturnType TupleType;
+  typedef typename TensorEvaluator<const TensorReductionOp<ReduceOp, Dims, const TensorIndexTupleOp<ArgType> >, Device>::Dimensions Dimensions;
+  typedef typename TensorEvaluator<const TensorIndexTupleOp<ArgType> , Device>::Dimensions InputDimensions;
+  static const int NumDims = internal::array_size<InputDimensions>::value;
+  typedef array<Index, NumDims> StrideDims;
+
+  enum {
+    IsAligned = /*TensorEvaluator<ArgType, Device>::IsAligned*/ false,
+    PacketAccess = /*TensorEvaluator<ArgType, Device>::PacketAccess*/ false,
+    BlockAccess = false,
+    Layout = TensorEvaluator<const TensorReductionOp<ReduceOp, Dims, const TensorIndexTupleOp<ArgType> >, Device>::Layout,
+    CoordAccess = false,  // to be implemented
+    RawAccess = false
+  };
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorEvaluator(const XprType& op, const Device& device)
+      : m_orig_impl(op.expression(), device),
+        m_impl(op.expression().index_tuples().reduce(op.reduce_dims(), op.reduce_op()), device),
+        m_return_dim(op.return_dim()) {
+
+    gen_strides(m_orig_impl.dimensions(), m_strides);
+    if (Layout == static_cast<int>(ColMajor)) {
+      const Index total_size = internal::array_prod(m_orig_impl.dimensions());
+      m_stride_mod = (m_return_dim < NumDims - 1) ? m_strides[m_return_dim + 1] : total_size;
+    } else {
+      const Index total_size = internal::array_prod(m_orig_impl.dimensions());
+      m_stride_mod = (m_return_dim > 0) ? m_strides[m_return_dim - 1] : total_size;
+    }
+    m_stride_div = m_strides[m_return_dim];
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Dimensions& dimensions() const {
+    return m_impl.dimensions();
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool evalSubExprsIfNeeded(Scalar* /*data*/) {
+    m_impl.evalSubExprsIfNeeded(NULL);
+    return true;
+  }
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void cleanup() {
+    m_impl.cleanup();
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType coeff(Index index) const {
+    const TupleType v = m_impl.coeff(index);
+    return (m_return_dim < 0) ? v.first : (v.first % m_stride_mod) / m_stride_div;
+  }
+
+  EIGEN_DEVICE_FUNC Scalar* data() const { return NULL; }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorOpCost
+  costPerCoeff(bool vectorized) const {
+    const double compute_cost = 1.0 +
+        (m_return_dim < 0 ? 0.0 : (TensorOpCost::ModCost<Index>() + TensorOpCost::DivCost<Index>()));
+    return m_orig_impl.costPerCoeff(vectorized) +
+           m_impl.costPerCoeff(vectorized) + TensorOpCost(0, 0, compute_cost);
+  }
+
+ private:
+  EIGEN_DEVICE_FUNC void gen_strides(const InputDimensions& dims, StrideDims& strides) {
+    if (m_return_dim < 0) {
+      return;  // Won't be using the strides.
+    }
+    eigen_assert(m_return_dim < NumDims &&
+                 "Asking to convert index to a dimension outside of the rank");
+
+    // Calculate m_stride_div and m_stride_mod, which are used to
+    // calculate the value of an index w.r.t. the m_return_dim.
+    if (Layout == static_cast<int>(ColMajor)) {
+      strides[0] = 1;
+      for (int i = 1; i < NumDims; ++i) {
+        strides[i] = strides[i-1] * dims[i-1];
+      }
+    } else {
+      strides[NumDims-1] = 1;
+      for (int i = NumDims - 2; i >= 0; --i) {
+        strides[i] = strides[i+1] * dims[i+1];
+      }
+    }
+  }
+
+ protected:
+  TensorEvaluator<const TensorIndexTupleOp<ArgType>, Device> m_orig_impl;
+  TensorEvaluator<const TensorReductionOp<ReduceOp, Dims, const TensorIndexTupleOp<ArgType> >, Device> m_impl;
+  const int m_return_dim;
+  StrideDims m_strides;
+  Index m_stride_mod;
+  Index m_stride_div;
+};
+
+} // end namespace Eigen
+
+#endif // EIGEN_CXX11_TENSOR_TENSOR_ARG_MAX_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorSyclExprConstructor.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorSyclExprConstructor.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorSyclExprConstructor.h	(revision 3762)
@@ -0,0 +1,239 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Mehdi Goli    Codeplay Software Ltd.
+// Ralph Potter  Codeplay Software Ltd.
+// Luke Iwanski  Codeplay Software Ltd.
+// Contact: <eigen@codeplay.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+/*****************************************************************
+ * TensorSyclExprConstructor.h
+ *
+ * \brief:
+ *  This file re-create an expression on the SYCL device in order
+ *  to use the original tensor evaluator.
+ *
+*****************************************************************/
+
+#ifndef UNSUPPORTED_EIGEN_CXX11_SRC_TENSOR_TENSORSYCL_EXPR_CONSTRUCTOR_HPP
+#define UNSUPPORTED_EIGEN_CXX11_SRC_TENSOR_TENSORSYCL_EXPR_CONSTRUCTOR_HPP
+
+namespace Eigen {
+namespace TensorSycl {
+namespace internal {
+/// this class is used by EvalToOp in order to create an lhs expression which is
+/// a pointer from an accessor on device-only buffer
+template <typename PtrType, size_t N, typename... Params>
+struct EvalToLHSConstructor {
+  PtrType expr;
+  EvalToLHSConstructor(const utility::tuple::Tuple<Params...> &t): expr((&(*(utility::tuple::get<N>(t).get_pointer())))) {}
+};
+
+/// struct ExprConstructor is used to reconstruct the expression on the device and
+/// recreate the expression with MakeGlobalPointer containing the device address
+/// space for the TensorMap pointers used in eval function.
+/// It receives the original expression type, the functor of the node, the tuple
+/// of accessors, and the device expression type to re-instantiate the
+/// expression tree for the device
+template <typename OrigExpr, typename IndexExpr, typename... Params>
+struct ExprConstructor;
+
+/// specialisation of the \ref ExprConstructor struct when the node type is
+/// TensorMap
+#define TENSORMAP(CVQual)\
+template <typename Scalar_, int Options_, int Options2_, int Options3_, int NumIndices_, typename IndexType_,\
+template <class> class MakePointer_, size_t N, typename... Params>\
+struct ExprConstructor< CVQual TensorMap<Tensor<Scalar_, NumIndices_, Options_, IndexType_>, Options2_, MakeGlobalPointer>,\
+CVQual PlaceHolder<CVQual TensorMap<Tensor<Scalar_, NumIndices_, Options_, IndexType_>, Options3_, MakePointer_>, N>, Params...>{\
+  typedef  CVQual TensorMap<Tensor<Scalar_, NumIndices_, Options_, IndexType_>, Options2_, MakeGlobalPointer>  Type;\
+  Type expr;\
+  template <typename FuncDetector>\
+  ExprConstructor(FuncDetector &fd, const utility::tuple::Tuple<Params...> &t)\
+  : expr(Type((&(*(utility::tuple::get<N>(t).get_pointer()))), fd.dimensions())) {}\
+};
+
+TENSORMAP(const)
+TENSORMAP()
+#undef TENSORMAP
+
+#define UNARYCATEGORY(CVQual)\
+template <template<class, class> class UnaryCategory, typename OP, typename OrigRHSExpr, typename RHSExpr, typename... Params>\
+struct ExprConstructor<CVQual UnaryCategory<OP, OrigRHSExpr>, CVQual UnaryCategory<OP, RHSExpr>, Params...> {\
+  typedef  ExprConstructor<OrigRHSExpr, RHSExpr, Params...> my_type;\
+  my_type rhsExpr;\
+  typedef CVQual UnaryCategory<OP, typename my_type::Type> Type;\
+  Type expr;\
+  template <typename FuncDetector>\
+  ExprConstructor(FuncDetector &funcD, const utility::tuple::Tuple<Params...> &t)\
+  : rhsExpr(funcD.rhsExpr, t), expr(rhsExpr.expr, funcD.func) {}\
+};
+
+UNARYCATEGORY(const)
+UNARYCATEGORY()
+#undef UNARYCATEGORY
+
+/// specialisation of the \ref ExprConstructor struct when the node type is
+/// TensorBinaryOp
+#define BINARYCATEGORY(CVQual)\
+template <template<class, class, class> class BinaryCategory, typename OP, typename OrigLHSExpr, typename OrigRHSExpr, typename LHSExpr,\
+typename RHSExpr, typename... Params>\
+struct ExprConstructor<CVQual BinaryCategory<OP, OrigLHSExpr, OrigRHSExpr>,  CVQual BinaryCategory<OP, LHSExpr, RHSExpr>, Params...> {\
+  typedef  ExprConstructor<OrigLHSExpr, LHSExpr, Params...> my_left_type;\
+  typedef  ExprConstructor<OrigRHSExpr, RHSExpr, Params...> my_right_type;\
+  typedef  CVQual BinaryCategory<OP, typename my_left_type::Type, typename my_right_type::Type> Type;\
+  my_left_type lhsExpr;\
+  my_right_type rhsExpr;\
+  Type expr;\
+  template <typename FuncDetector>\
+  ExprConstructor(FuncDetector &funcD, const utility::tuple::Tuple<Params...> &t)\
+  : lhsExpr(funcD.lhsExpr, t),rhsExpr(funcD.rhsExpr, t), expr(lhsExpr.expr, rhsExpr.expr, funcD.func) {}\
+};
+
+BINARYCATEGORY(const)
+BINARYCATEGORY()
+#undef BINARYCATEGORY
+
+/// specialisation of the \ref ExprConstructor struct when the node type is
+/// TensorCwiseTernaryOp
+#define TERNARYCATEGORY(CVQual)\
+template <template <class, class, class, class> class TernaryCategory, typename OP, typename OrigArg1Expr, typename OrigArg2Expr,typename OrigArg3Expr,\
+typename Arg1Expr, typename Arg2Expr, typename Arg3Expr, typename... Params>\
+struct ExprConstructor<CVQual TernaryCategory<OP, OrigArg1Expr, OrigArg2Expr, OrigArg3Expr>, CVQual TernaryCategory<OP, Arg1Expr, Arg2Expr, Arg3Expr>, Params...> {\
+  typedef ExprConstructor<OrigArg1Expr, Arg1Expr, Params...> my_arg1_type;\
+  typedef ExprConstructor<OrigArg2Expr, Arg2Expr, Params...> my_arg2_type;\
+  typedef ExprConstructor<OrigArg3Expr, Arg3Expr, Params...> my_arg3_type;\
+  typedef  CVQual TernaryCategory<OP, typename my_arg1_type::Type, typename my_arg2_type::Type, typename my_arg3_type::Type> Type;\
+  my_arg1_type arg1Expr;\
+  my_arg2_type arg2Expr;\
+  my_arg3_type arg3Expr;\
+  Type expr;\
+  template <typename FuncDetector>\
+  ExprConstructor(FuncDetector &funcD,const utility::tuple::Tuple<Params...> &t)\
+  : arg1Expr(funcD.arg1Expr, t), arg2Expr(funcD.arg2Expr, t), arg3Expr(funcD.arg3Expr, t), expr(arg1Expr.expr, arg2Expr.expr, arg3Expr.expr, funcD.func) {}\
+};
+
+TERNARYCATEGORY(const)
+TERNARYCATEGORY()
+#undef TERNARYCATEGORY
+
+/// specialisation of the \ref ExprConstructor struct when the node type is
+/// TensorCwiseSelectOp
+#define SELECTOP(CVQual)\
+template <typename OrigIfExpr, typename OrigThenExpr, typename OrigElseExpr, typename IfExpr, typename ThenExpr, typename ElseExpr, typename... Params>\
+struct ExprConstructor< CVQual TensorSelectOp<OrigIfExpr, OrigThenExpr, OrigElseExpr>, CVQual TensorSelectOp<IfExpr, ThenExpr, ElseExpr>, Params...> {\
+  typedef  ExprConstructor<OrigIfExpr, IfExpr, Params...> my_if_type;\
+  typedef  ExprConstructor<OrigThenExpr, ThenExpr, Params...> my_then_type;\
+  typedef  ExprConstructor<OrigElseExpr, ElseExpr, Params...> my_else_type;\
+  typedef CVQual TensorSelectOp<typename my_if_type::Type, typename my_then_type::Type, typename my_else_type::Type> Type;\
+  my_if_type ifExpr;\
+  my_then_type thenExpr;\
+  my_else_type elseExpr;\
+  Type expr;\
+  template <typename FuncDetector>\
+  ExprConstructor(FuncDetector &funcD, const utility::tuple::Tuple<Params...> &t)\
+  : ifExpr(funcD.ifExpr, t), thenExpr(funcD.thenExpr, t), elseExpr(funcD.elseExpr, t), expr(ifExpr.expr, thenExpr.expr, elseExpr.expr) {}\
+};
+
+SELECTOP(const)
+SELECTOP()
+#undef SELECTOP
+
+/// specialisation of the \ref ExprConstructor struct when the node type is
+/// const TensorAssignOp
+#define ASSIGN(CVQual)\
+template <typename OrigLHSExpr, typename OrigRHSExpr, typename LHSExpr, typename RHSExpr, typename... Params>\
+struct ExprConstructor<CVQual TensorAssignOp<OrigLHSExpr, OrigRHSExpr>,  CVQual TensorAssignOp<LHSExpr, RHSExpr>, Params...> {\
+  typedef ExprConstructor<OrigLHSExpr, LHSExpr, Params...> my_left_type;\
+  typedef ExprConstructor<OrigRHSExpr, RHSExpr, Params...> my_right_type;\
+  typedef CVQual TensorAssignOp<typename my_left_type::Type, typename my_right_type::Type>  Type;\
+  my_left_type lhsExpr;\
+  my_right_type rhsExpr;\
+  Type expr;\
+  template <typename FuncDetector>\
+  ExprConstructor(FuncDetector &funcD, const utility::tuple::Tuple<Params...> &t)\
+  : lhsExpr(funcD.lhsExpr, t), rhsExpr(funcD.rhsExpr, t), expr(lhsExpr.expr, rhsExpr.expr) {}\
+ };
+
+ ASSIGN(const)
+ ASSIGN()
+ #undef ASSIGN
+/// specialisation of the \ref ExprConstructor struct when the node type is
+///  TensorEvalToOp
+#define EVALTO(CVQual)\
+template <typename OrigExpr, typename Expr, typename... Params>\
+struct ExprConstructor<CVQual TensorEvalToOp<OrigExpr, MakeGlobalPointer>, CVQual TensorEvalToOp<Expr>, Params...> {\
+  typedef ExprConstructor<OrigExpr, Expr, Params...> my_expr_type;\
+  typedef typename TensorEvalToOp<OrigExpr, MakeGlobalPointer>::PointerType my_buffer_type;\
+  typedef CVQual TensorEvalToOp<typename my_expr_type::Type, MakeGlobalPointer> Type;\
+  my_expr_type nestedExpression;\
+  EvalToLHSConstructor<my_buffer_type, 0, Params...> buffer;\
+  Type expr;\
+  template <typename FuncDetector>\
+  ExprConstructor(FuncDetector &funcD, const utility::tuple::Tuple<Params...> &t)\
+  : nestedExpression(funcD.rhsExpr, t), buffer(t), expr(buffer.expr, nestedExpression.expr) {}\
+};
+
+EVALTO(const)
+EVALTO()
+#undef EVALTO
+
+/// specialisation of the \ref ExprConstructor struct when the node type is
+/// TensorForcedEvalOp
+#define FORCEDEVAL(CVQual)\
+template <typename OrigExpr, typename DevExpr, size_t N, typename... Params>\
+struct ExprConstructor<CVQual TensorForcedEvalOp<OrigExpr, MakeGlobalPointer>,\
+CVQual PlaceHolder<CVQual TensorForcedEvalOp<DevExpr>, N>, Params...> {\
+  typedef CVQual TensorMap<Tensor<typename TensorForcedEvalOp<DevExpr, MakeGlobalPointer>::Scalar,\
+  TensorForcedEvalOp<DevExpr, MakeGlobalPointer>::NumDimensions, 0, typename TensorForcedEvalOp<DevExpr>::Index>, 0, MakeGlobalPointer> Type;\
+  Type expr;\
+  template <typename FuncDetector>\
+  ExprConstructor(FuncDetector &fd, const utility::tuple::Tuple<Params...> &t)\
+  : expr(Type((&(*(utility::tuple::get<N>(t).get_pointer()))), fd.dimensions())) {}\
+};
+
+FORCEDEVAL(const)
+FORCEDEVAL()
+#undef FORCEDEVAL
+
+template <bool Conds,  size_t X , size_t Y > struct ValueCondition {
+  static const size_t Res =X;
+};
+template<size_t X, size_t Y> struct ValueCondition<false, X , Y> {
+  static const size_t Res =Y;
+};
+
+/// specialisation of the \ref ExprConstructor struct when the node type is TensorReductionOp
+#define SYCLREDUCTIONEXPR(CVQual)\
+template <typename OP, typename Dim, typename OrigExpr, typename DevExpr, size_t N, typename... Params>\
+struct ExprConstructor<CVQual TensorReductionOp<OP, Dim, OrigExpr, MakeGlobalPointer>,\
+CVQual PlaceHolder<CVQual TensorReductionOp<OP, Dim, DevExpr>, N>, Params...> {\
+  static const size_t NumIndices= ValueCondition< TensorReductionOp<OP, Dim, DevExpr, MakeGlobalPointer>::NumDimensions==0,  1, TensorReductionOp<OP, Dim, DevExpr, MakeGlobalPointer>::NumDimensions >::Res;\
+  typedef CVQual TensorMap<Tensor<typename TensorReductionOp<OP, Dim, DevExpr, MakeGlobalPointer>::Scalar,\
+  NumIndices, 0, typename TensorReductionOp<OP, Dim, DevExpr>::Index>, 0, MakeGlobalPointer> Type;\
+  Type expr;\
+  template <typename FuncDetector>\
+  ExprConstructor(FuncDetector &fd, const utility::tuple::Tuple<Params...> &t)\
+  : expr(Type((&(*(utility::tuple::get<N>(t).get_pointer()))), fd.dimensions())) {}\
+};
+
+SYCLREDUCTIONEXPR(const)
+SYCLREDUCTIONEXPR()
+#undef SYCLREDUCTIONEXPR
+
+/// template deduction for \ref ExprConstructor struct
+template <typename OrigExpr, typename IndexExpr, typename FuncD, typename... Params>
+auto createDeviceExpression(FuncD &funcD, const utility::tuple::Tuple<Params...> &t)
+    -> decltype(ExprConstructor<OrigExpr, IndexExpr, Params...>(funcD, t)) {
+  return ExprConstructor<OrigExpr, IndexExpr, Params...>(funcD, t);
+}
+
+} /// namespace TensorSycl
+} /// namespace internal
+} /// namespace Eigen
+
+
+#endif  // UNSUPPORTED_EIGEN_CXX11_SRC_TENSOR_TENSORSYCL_EXPR_CONSTRUCTOR_HPP
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorInflation.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorInflation.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorInflation.h	(revision 3762)
@@ -0,0 +1,229 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2015 Ke Yang <yangke@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CXX11_TENSOR_TENSOR_INFLATION_H
+#define EIGEN_CXX11_TENSOR_TENSOR_INFLATION_H
+
+namespace Eigen {
+
+/** \class TensorInflation
+  * \ingroup CXX11_Tensor_Module
+  *
+  * \brief Tensor inflation class.
+  *
+  *
+  */
+namespace internal {
+template<typename Strides, typename XprType>
+struct traits<TensorInflationOp<Strides, XprType> > : public traits<XprType>
+{
+  typedef typename XprType::Scalar Scalar;
+  typedef traits<XprType> XprTraits;
+  typedef typename XprTraits::StorageKind StorageKind;
+  typedef typename XprTraits::Index Index;
+  typedef typename XprType::Nested Nested;
+  typedef typename remove_reference<Nested>::type _Nested;
+  static const int NumDimensions = XprTraits::NumDimensions;
+  static const int Layout = XprTraits::Layout;
+};
+
+template<typename Strides, typename XprType>
+struct eval<TensorInflationOp<Strides, XprType>, Eigen::Dense>
+{
+  typedef const TensorInflationOp<Strides, XprType>& type;
+};
+
+template<typename Strides, typename XprType>
+struct nested<TensorInflationOp<Strides, XprType>, 1, typename eval<TensorInflationOp<Strides, XprType> >::type>
+{
+  typedef TensorInflationOp<Strides, XprType> type;
+};
+
+}  // end namespace internal
+
+template<typename Strides, typename XprType>
+class TensorInflationOp : public TensorBase<TensorInflationOp<Strides, XprType>, ReadOnlyAccessors>
+{
+  public:
+  typedef typename Eigen::internal::traits<TensorInflationOp>::Scalar Scalar;
+  typedef typename Eigen::NumTraits<Scalar>::Real RealScalar;
+  typedef typename XprType::CoeffReturnType CoeffReturnType;
+  typedef typename Eigen::internal::nested<TensorInflationOp>::type Nested;
+  typedef typename Eigen::internal::traits<TensorInflationOp>::StorageKind StorageKind;
+  typedef typename Eigen::internal::traits<TensorInflationOp>::Index Index;
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorInflationOp(const XprType& expr, const Strides& strides)
+      : m_xpr(expr), m_strides(strides) {}
+
+    EIGEN_DEVICE_FUNC
+    const Strides& strides() const { return m_strides; }
+
+    EIGEN_DEVICE_FUNC
+    const typename internal::remove_all<typename XprType::Nested>::type&
+    expression() const { return m_xpr; }
+
+  protected:
+    typename XprType::Nested m_xpr;
+    const Strides m_strides;
+};
+
+// Eval as rvalue
+template<typename Strides, typename ArgType, typename Device>
+struct TensorEvaluator<const TensorInflationOp<Strides, ArgType>, Device>
+{
+  typedef TensorInflationOp<Strides, ArgType> XprType;
+  typedef typename XprType::Index Index;
+  static const int NumDims = internal::array_size<typename TensorEvaluator<ArgType, Device>::Dimensions>::value;
+  typedef DSizes<Index, NumDims> Dimensions;
+  typedef typename XprType::Scalar Scalar;
+  typedef typename XprType::CoeffReturnType CoeffReturnType;
+  typedef typename PacketType<CoeffReturnType, Device>::type PacketReturnType;
+  static const int PacketSize = internal::unpacket_traits<PacketReturnType>::size;
+
+  enum {
+    IsAligned = /*TensorEvaluator<ArgType, Device>::IsAligned*/ false,
+    PacketAccess = TensorEvaluator<ArgType, Device>::PacketAccess,
+    BlockAccess = false,
+    Layout = TensorEvaluator<ArgType, Device>::Layout,
+    CoordAccess = false,  // to be implemented
+    RawAccess = false
+  };
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorEvaluator(const XprType& op, const Device& device)
+      : m_impl(op.expression(), device), m_strides(op.strides())
+  {
+    m_dimensions = m_impl.dimensions();
+    // Expand each dimension to the inflated dimension.
+    for (int i = 0; i < NumDims; ++i) {
+      m_dimensions[i] = (m_dimensions[i] - 1) * op.strides()[i] + 1;
+    }
+
+    // Remember the strides for fast division.
+    for (int i = 0; i < NumDims; ++i) {
+      m_fastStrides[i] = internal::TensorIntDivisor<Index>(m_strides[i]);
+    }
+
+    const typename TensorEvaluator<ArgType, Device>::Dimensions& input_dims = m_impl.dimensions();
+    if (static_cast<int>(Layout) == static_cast<int>(ColMajor)) {
+      m_outputStrides[0] = 1;
+      m_inputStrides[0] = 1;
+      for (int i = 1; i < NumDims; ++i) {
+        m_outputStrides[i] = m_outputStrides[i-1] * m_dimensions[i-1];
+        m_inputStrides[i] = m_inputStrides[i-1] * input_dims[i-1];
+      }
+    } else {  // RowMajor
+      m_outputStrides[NumDims-1] = 1;
+      m_inputStrides[NumDims-1] = 1;
+      for (int i = NumDims - 2; i >= 0; --i) {
+        m_outputStrides[i] = m_outputStrides[i+1] * m_dimensions[i+1];
+        m_inputStrides[i] = m_inputStrides[i+1] * input_dims[i+1];
+      }
+    }
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Dimensions& dimensions() const { return m_dimensions; }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool evalSubExprsIfNeeded(Scalar* /*data*/) {
+    m_impl.evalSubExprsIfNeeded(NULL);
+    return true;
+  }
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void cleanup() {
+    m_impl.cleanup();
+  }
+
+  // Computes the input index given the output index. Returns true if the output
+  // index doesn't fall into a hole.
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool getInputIndex(Index index, Index* inputIndex) const
+  {
+    eigen_assert(index < dimensions().TotalSize());
+    *inputIndex = 0;
+    if (static_cast<int>(Layout) == static_cast<int>(ColMajor)) {
+      for (int i = NumDims - 1; i > 0; --i) {
+        const Index idx = index / m_outputStrides[i];
+        if (idx != idx / m_fastStrides[i] * m_strides[i]) {
+          return false;
+        }
+        *inputIndex += idx / m_strides[i] * m_inputStrides[i];
+        index -= idx * m_outputStrides[i];
+      }
+      if (index != index / m_fastStrides[0] * m_strides[0]) {
+        return false;
+      }
+      *inputIndex += index / m_strides[0];
+      return true;
+    } else {
+      for (int i = 0; i < NumDims - 1; ++i) {
+        const Index idx = index / m_outputStrides[i];
+        if (idx != idx / m_fastStrides[i] * m_strides[i]) {
+          return false;
+        }
+        *inputIndex += idx / m_strides[i] * m_inputStrides[i];
+        index -= idx * m_outputStrides[i];
+      }
+      if (index != index / m_fastStrides[NumDims-1] * m_strides[NumDims-1]) {
+        return false;
+      }
+      *inputIndex += index / m_strides[NumDims - 1];
+    }
+    return true;
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType coeff(Index index) const
+  {
+    Index inputIndex = 0;
+    if (getInputIndex(index, &inputIndex)) {
+     return m_impl.coeff(inputIndex);
+    } else {
+     return Scalar(0);
+    }
+  }
+
+  // TODO(yangke): optimize this function so that we can detect and produce
+  // all-zero packets
+  template<int LoadMode>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketReturnType packet(Index index) const
+  {
+    EIGEN_STATIC_ASSERT((PacketSize > 1), YOU_MADE_A_PROGRAMMING_MISTAKE)
+    eigen_assert(index+PacketSize-1 < dimensions().TotalSize());
+
+    EIGEN_ALIGN_MAX typename internal::remove_const<CoeffReturnType>::type values[PacketSize];
+    for (int i = 0; i < PacketSize; ++i) {
+      values[i] = coeff(index+i);
+    }
+    PacketReturnType rslt = internal::pload<PacketReturnType>(values);
+    return rslt;
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorOpCost costPerCoeff(bool vectorized) const {
+    const double compute_cost = NumDims * (3 * TensorOpCost::DivCost<Index>() +
+                                           3 * TensorOpCost::MulCost<Index>() +
+                                           2 * TensorOpCost::AddCost<Index>());
+    const double input_size = m_impl.dimensions().TotalSize();
+    const double output_size = m_dimensions.TotalSize();
+    if (output_size == 0)
+      return TensorOpCost();
+    return m_impl.costPerCoeff(vectorized) +
+           TensorOpCost(sizeof(CoeffReturnType) * input_size / output_size, 0,
+                        compute_cost, vectorized, PacketSize);
+  }
+
+  EIGEN_DEVICE_FUNC Scalar* data() const { return NULL; }
+
+ protected:
+  Dimensions m_dimensions;
+  array<Index, NumDims> m_outputStrides;
+  array<Index, NumDims> m_inputStrides;
+  TensorEvaluator<ArgType, Device> m_impl;
+  const Strides m_strides;
+  array<internal::TensorIntDivisor<Index>, NumDims> m_fastStrides;
+};
+
+} // end namespace Eigen
+
+#endif // EIGEN_CXX11_TENSOR_TENSOR_INFLATION_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorMorphing.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorMorphing.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorMorphing.h	(revision 3762)
@@ -0,0 +1,888 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2014 Benoit Steiner <benoit.steiner.goog@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CXX11_TENSOR_TENSOR_MORPHING_H
+#define EIGEN_CXX11_TENSOR_TENSOR_MORPHING_H
+
+namespace Eigen {
+
+/** \class TensorReshaping
+  * \ingroup CXX11_Tensor_Module
+  *
+  * \brief Tensor reshaping class.
+  *
+  *
+  */
+namespace internal {
+template<typename NewDimensions, typename XprType>
+struct traits<TensorReshapingOp<NewDimensions, XprType> > : public traits<XprType>
+{
+  typedef typename XprType::Scalar Scalar;
+  typedef traits<XprType> XprTraits;
+  typedef typename XprTraits::StorageKind StorageKind;
+  typedef typename XprTraits::Index Index;
+  typedef typename XprType::Nested Nested;
+  typedef typename remove_reference<Nested>::type _Nested;
+  static const int NumDimensions = array_size<NewDimensions>::value;
+  static const int Layout = XprTraits::Layout;
+};
+
+template<typename NewDimensions, typename XprType>
+struct eval<TensorReshapingOp<NewDimensions, XprType>, Eigen::Dense>
+{
+  typedef const TensorReshapingOp<NewDimensions, XprType>& type;
+};
+
+template<typename NewDimensions, typename XprType>
+struct nested<TensorReshapingOp<NewDimensions, XprType>, 1, typename eval<TensorReshapingOp<NewDimensions, XprType> >::type>
+{
+  typedef TensorReshapingOp<NewDimensions, XprType> type;
+};
+
+}  // end namespace internal
+
+
+
+template<typename NewDimensions, typename XprType>
+class TensorReshapingOp : public TensorBase<TensorReshapingOp<NewDimensions, XprType>, WriteAccessors>
+{
+  public:
+  typedef typename Eigen::internal::traits<TensorReshapingOp>::Scalar Scalar;
+  typedef typename internal::remove_const<typename XprType::CoeffReturnType>::type CoeffReturnType;
+  typedef typename Eigen::internal::nested<TensorReshapingOp>::type Nested;
+  typedef typename Eigen::internal::traits<TensorReshapingOp>::StorageKind StorageKind;
+  typedef typename Eigen::internal::traits<TensorReshapingOp>::Index Index;
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorReshapingOp(const XprType& expr, const NewDimensions& dims)
+      : m_xpr(expr), m_dims(dims) {}
+
+    EIGEN_DEVICE_FUNC
+    const NewDimensions& dimensions() const { return m_dims; }
+
+    EIGEN_DEVICE_FUNC
+    const typename internal::remove_all<typename XprType::Nested>::type&
+    expression() const { return m_xpr; }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE TensorReshapingOp& operator = (const TensorReshapingOp& other)
+    {
+      typedef TensorAssignOp<TensorReshapingOp, const TensorReshapingOp> Assign;
+      Assign assign(*this, other);
+      internal::TensorExecutor<const Assign, DefaultDevice>::run(assign, DefaultDevice());
+      return *this;
+    }
+
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE TensorReshapingOp& operator = (const OtherDerived& other)
+    {
+      typedef TensorAssignOp<TensorReshapingOp, const OtherDerived> Assign;
+      Assign assign(*this, other);
+      internal::TensorExecutor<const Assign, DefaultDevice>::run(assign, DefaultDevice());
+      return *this;
+    }
+
+  protected:
+    typename XprType::Nested m_xpr;
+    const NewDimensions m_dims;
+};
+
+
+// Eval as rvalue
+template<typename NewDimensions, typename ArgType, typename Device>
+struct TensorEvaluator<const TensorReshapingOp<NewDimensions, ArgType>, Device>
+{
+  typedef TensorReshapingOp<NewDimensions, ArgType> XprType;
+  typedef NewDimensions Dimensions;
+
+  enum {
+    IsAligned = TensorEvaluator<ArgType, Device>::IsAligned,
+    PacketAccess = TensorEvaluator<ArgType, Device>::PacketAccess,
+    Layout = TensorEvaluator<ArgType, Device>::Layout,
+    CoordAccess = false,  // to be implemented
+    RawAccess = TensorEvaluator<ArgType, Device>::RawAccess
+  };
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorEvaluator(const XprType& op, const Device& device)
+      : m_impl(op.expression(), device), m_dimensions(op.dimensions())
+  {
+    // The total size of the reshaped tensor must be equal to the total size
+    // of the input tensor.
+    eigen_assert(internal::array_prod(m_impl.dimensions()) == internal::array_prod(op.dimensions()));
+  }
+
+  typedef typename XprType::Index Index;
+  typedef typename XprType::Scalar Scalar;
+  typedef typename XprType::CoeffReturnType CoeffReturnType;
+  typedef typename PacketType<CoeffReturnType, Device>::type PacketReturnType;
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Dimensions& dimensions() const { return m_dimensions; }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool evalSubExprsIfNeeded(CoeffReturnType* data) {
+    return m_impl.evalSubExprsIfNeeded(data);
+  }
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void cleanup() {
+    m_impl.cleanup();
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType coeff(Index index) const
+  {
+    return m_impl.coeff(index);
+  }
+
+  template<int LoadMode>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketReturnType packet(Index index) const
+  {
+    return m_impl.template packet<LoadMode>(index);
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorOpCost costPerCoeff(bool vectorized) const {
+    return m_impl.costPerCoeff(vectorized);
+  }
+
+  EIGEN_DEVICE_FUNC Scalar* data() const { return const_cast<Scalar*>(m_impl.data()); }
+
+  EIGEN_DEVICE_FUNC const TensorEvaluator<ArgType, Device>& impl() const { return m_impl; }
+
+ protected:
+  TensorEvaluator<ArgType, Device> m_impl;
+  NewDimensions m_dimensions;
+};
+
+
+// Eval as lvalue
+template<typename NewDimensions, typename ArgType, typename Device>
+  struct TensorEvaluator<TensorReshapingOp<NewDimensions, ArgType>, Device>
+  : public TensorEvaluator<const TensorReshapingOp<NewDimensions, ArgType>, Device>
+
+{
+  typedef TensorEvaluator<const TensorReshapingOp<NewDimensions, ArgType>, Device> Base;
+  typedef TensorReshapingOp<NewDimensions, ArgType> XprType;
+  typedef NewDimensions Dimensions;
+
+  enum {
+    IsAligned = TensorEvaluator<ArgType, Device>::IsAligned,
+    PacketAccess = TensorEvaluator<ArgType, Device>::PacketAccess,
+    Layout = TensorEvaluator<ArgType, Device>::Layout,
+    CoordAccess = false,  // to be implemented
+    RawAccess = TensorEvaluator<ArgType, Device>::RawAccess
+  };
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorEvaluator(const XprType& op, const Device& device)
+    : Base(op, device)
+  { }
+
+  typedef typename XprType::Index Index;
+  typedef typename XprType::Scalar Scalar;
+  typedef typename XprType::CoeffReturnType CoeffReturnType;
+  typedef typename PacketType<CoeffReturnType, Device>::type PacketReturnType;
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType& coeffRef(Index index)
+  {
+    return this->m_impl.coeffRef(index);
+  }
+  template <int StoreMode> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  void writePacket(Index index, const PacketReturnType& x)
+  {
+    this->m_impl.template writePacket<StoreMode>(index, x);
+  }
+};
+
+
+/** \class TensorSlicing
+  * \ingroup CXX11_Tensor_Module
+  *
+  * \brief Tensor slicing class.
+  *
+  *
+  */
+namespace internal {
+template<typename StartIndices, typename Sizes, typename XprType>
+struct traits<TensorSlicingOp<StartIndices, Sizes, XprType> > : public traits<XprType>
+{
+  typedef typename XprType::Scalar Scalar;
+  typedef traits<XprType> XprTraits;
+  typedef typename XprTraits::StorageKind StorageKind;
+  typedef typename XprTraits::Index Index;
+  typedef typename XprType::Nested Nested;
+  typedef typename remove_reference<Nested>::type _Nested;
+  static const int NumDimensions = array_size<StartIndices>::value;
+  static const int Layout = XprTraits::Layout;
+};
+
+template<typename StartIndices, typename Sizes, typename XprType>
+struct eval<TensorSlicingOp<StartIndices, Sizes, XprType>, Eigen::Dense>
+{
+  typedef const TensorSlicingOp<StartIndices, Sizes, XprType>& type;
+};
+
+template<typename StartIndices, typename Sizes, typename XprType>
+struct nested<TensorSlicingOp<StartIndices, Sizes, XprType>, 1, typename eval<TensorSlicingOp<StartIndices, Sizes, XprType> >::type>
+{
+  typedef TensorSlicingOp<StartIndices, Sizes, XprType> type;
+};
+
+}  // end namespace internal
+
+
+
+template<typename StartIndices, typename Sizes, typename XprType>
+class TensorSlicingOp : public TensorBase<TensorSlicingOp<StartIndices, Sizes, XprType> >
+{
+  public:
+  typedef typename Eigen::internal::traits<TensorSlicingOp>::Scalar Scalar;
+  typedef typename XprType::CoeffReturnType CoeffReturnType;
+  typedef typename Eigen::internal::nested<TensorSlicingOp>::type Nested;
+  typedef typename Eigen::internal::traits<TensorSlicingOp>::StorageKind StorageKind;
+  typedef typename Eigen::internal::traits<TensorSlicingOp>::Index Index;
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorSlicingOp(const XprType& expr, const StartIndices& indices, const Sizes& sizes)
+      : m_xpr(expr), m_indices(indices), m_sizes(sizes) {}
+
+    EIGEN_DEVICE_FUNC
+    const StartIndices& startIndices() const { return m_indices; }
+    EIGEN_DEVICE_FUNC
+    const Sizes& sizes() const { return m_sizes; }
+
+    EIGEN_DEVICE_FUNC
+    const typename internal::remove_all<typename XprType::Nested>::type&
+    expression() const { return m_xpr; }
+
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE TensorSlicingOp& operator = (const OtherDerived& other)
+    {
+      typedef TensorAssignOp<TensorSlicingOp, const OtherDerived> Assign;
+      Assign assign(*this, other);
+      internal::TensorExecutor<const Assign, DefaultDevice>::run(assign, DefaultDevice());
+      return *this;
+    }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE TensorSlicingOp& operator = (const TensorSlicingOp& other)
+    {
+      typedef TensorAssignOp<TensorSlicingOp, const TensorSlicingOp> Assign;
+      Assign assign(*this, other);
+      internal::TensorExecutor<const Assign, DefaultDevice>::run(assign, DefaultDevice());
+      return *this;
+    }
+
+
+  protected:
+    typename XprType::Nested m_xpr;
+    const StartIndices m_indices;
+    const Sizes m_sizes;
+};
+
+
+// Fixme: figure out the exact threshold
+namespace {
+template <typename Index, typename Device> struct MemcpyTriggerForSlicing {
+  EIGEN_DEVICE_FUNC MemcpyTriggerForSlicing(const Device& device) : threshold_(2 * device.numThreads()) { }
+  EIGEN_DEVICE_FUNC bool operator ()(Index val) const { return val > threshold_; }
+
+ private:
+  Index threshold_;
+};
+
+// It is very expensive to start the memcpy kernel on GPU: we therefore only
+// use it for large copies.
+#ifdef EIGEN_USE_GPU
+template <typename Index> struct MemcpyTriggerForSlicing<Index, GpuDevice>  {
+  EIGEN_DEVICE_FUNC MemcpyTriggerForSlicing(const GpuDevice&) { }
+  EIGEN_DEVICE_FUNC bool operator ()(Index val) const { return val > 4*1024*1024; }
+};
+#endif
+}
+
+// Eval as rvalue
+template<typename StartIndices, typename Sizes, typename ArgType, typename Device>
+struct TensorEvaluator<const TensorSlicingOp<StartIndices, Sizes, ArgType>, Device>
+{
+  typedef TensorSlicingOp<StartIndices, Sizes, ArgType> XprType;
+  static const int NumDims = internal::array_size<Sizes>::value;
+
+  enum {
+    // Alignment can't be guaranteed at compile time since it depends on the
+    // slice offsets and sizes.
+    IsAligned = /*TensorEvaluator<ArgType, Device>::IsAligned*/false,
+    PacketAccess = TensorEvaluator<ArgType, Device>::PacketAccess,
+    Layout = TensorEvaluator<ArgType, Device>::Layout,
+    CoordAccess = false,
+    RawAccess = false
+  };
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorEvaluator(const XprType& op, const Device& device)
+      : m_impl(op.expression(), device), m_device(device), m_dimensions(op.sizes()), m_offsets(op.startIndices())
+  {
+    for (std::size_t i = 0; i < internal::array_size<Dimensions>::value; ++i) {
+      eigen_assert(m_impl.dimensions()[i] >= op.sizes()[i] + op.startIndices()[i]);
+    }
+
+    const typename TensorEvaluator<ArgType, Device>::Dimensions& input_dims = m_impl.dimensions();
+    const Sizes& output_dims = op.sizes();
+    if (static_cast<int>(Layout) == static_cast<int>(ColMajor)) {
+      m_inputStrides[0] = 1;
+      for (int i = 1; i < NumDims; ++i) {
+        m_inputStrides[i] = m_inputStrides[i-1] * input_dims[i-1];
+      }
+
+     // Don't initialize m_fastOutputStrides[0] since it won't ever be accessed.
+      m_outputStrides[0] = 1;
+      for (int i = 1; i < NumDims; ++i) {
+        m_outputStrides[i] = m_outputStrides[i-1] * output_dims[i-1];
+        m_fastOutputStrides[i] = internal::TensorIntDivisor<Index>(m_outputStrides[i]);
+      }
+    } else {
+      m_inputStrides[NumDims-1] = 1;
+      for (int i = NumDims - 2; i >= 0; --i) {
+        m_inputStrides[i] = m_inputStrides[i+1] * input_dims[i+1];
+      }
+
+     // Don't initialize m_fastOutputStrides[NumDims-1] since it won't ever be accessed.
+      m_outputStrides[NumDims-1] = 1;
+      for (int i = NumDims - 2; i >= 0; --i) {
+        m_outputStrides[i] = m_outputStrides[i+1] * output_dims[i+1];
+        m_fastOutputStrides[i] = internal::TensorIntDivisor<Index>(m_outputStrides[i]);
+      }
+    }
+  }
+
+  typedef typename XprType::Index Index;
+  typedef typename XprType::Scalar Scalar;
+  typedef typename XprType::CoeffReturnType CoeffReturnType;
+  typedef typename PacketType<CoeffReturnType, Device>::type PacketReturnType;
+  typedef Sizes Dimensions;
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Dimensions& dimensions() const { return m_dimensions; }
+
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool evalSubExprsIfNeeded(CoeffReturnType* data) {
+    m_impl.evalSubExprsIfNeeded(NULL);
+    if (!NumTraits<typename internal::remove_const<Scalar>::type>::RequireInitialization && data && m_impl.data()) {
+      Index contiguous_values = 1;
+      if (static_cast<int>(Layout) == static_cast<int>(ColMajor)) {
+        for (int i = 0; i < NumDims; ++i) {
+          contiguous_values *= dimensions()[i];
+          if (dimensions()[i] != m_impl.dimensions()[i]) {
+            break;
+          }
+        }
+      } else {
+        for (int i = NumDims-1; i >= 0; --i) {
+          contiguous_values *= dimensions()[i];
+          if (dimensions()[i] != m_impl.dimensions()[i]) {
+            break;
+          }
+        }
+      }
+      // Use memcpy if it's going to be faster than using the regular evaluation.
+      const MemcpyTriggerForSlicing<Index, Device> trigger(m_device);
+      if (trigger(contiguous_values)) {
+        Scalar* src = (Scalar*)m_impl.data();
+        for (int i = 0; i < internal::array_prod(dimensions()); i += contiguous_values) {
+          Index offset = srcCoeff(i);
+          m_device.memcpy((void*)(data+i), src+offset, contiguous_values * sizeof(Scalar));
+        }
+        return false;
+      }
+    }
+    return true;
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void cleanup() {
+    m_impl.cleanup();
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType coeff(Index index) const
+  {
+    return m_impl.coeff(srcCoeff(index));
+  }
+
+  template<int LoadMode>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketReturnType packet(Index index) const
+  {
+    const int packetSize = internal::unpacket_traits<PacketReturnType>::size;
+    EIGEN_STATIC_ASSERT((packetSize > 1), YOU_MADE_A_PROGRAMMING_MISTAKE)
+    eigen_assert(index+packetSize-1 < internal::array_prod(dimensions()));
+
+    Index inputIndices[] = {0, 0};
+    Index indices[] = {index, index + packetSize - 1};
+    if (static_cast<int>(Layout) == static_cast<int>(ColMajor)) {
+      for (int i = NumDims - 1; i > 0; --i) {
+        const Index idx0 = indices[0] / m_fastOutputStrides[i];
+        const Index idx1 = indices[1] / m_fastOutputStrides[i];
+        inputIndices[0] += (idx0 + m_offsets[i]) * m_inputStrides[i];
+        inputIndices[1] += (idx1 + m_offsets[i]) * m_inputStrides[i];
+        indices[0] -= idx0 * m_outputStrides[i];
+        indices[1] -= idx1 * m_outputStrides[i];
+      }
+      inputIndices[0] += (indices[0] + m_offsets[0]);
+      inputIndices[1] += (indices[1] + m_offsets[0]);
+    } else {
+      for (int i = 0; i < NumDims - 1; ++i) {
+        const Index idx0 = indices[0] / m_fastOutputStrides[i];
+        const Index idx1 = indices[1] / m_fastOutputStrides[i];
+        inputIndices[0] += (idx0 + m_offsets[i]) * m_inputStrides[i];
+        inputIndices[1] += (idx1 + m_offsets[i]) * m_inputStrides[i];
+        indices[0] -= idx0 * m_outputStrides[i];
+        indices[1] -= idx1 * m_outputStrides[i];
+      }
+      inputIndices[0] += (indices[0] + m_offsets[NumDims-1]);
+      inputIndices[1] += (indices[1] + m_offsets[NumDims-1]);
+    }
+    if (inputIndices[1] - inputIndices[0] == packetSize - 1) {
+      PacketReturnType rslt = m_impl.template packet<Unaligned>(inputIndices[0]);
+      return rslt;
+    }
+    else {
+      EIGEN_ALIGN_MAX typename internal::remove_const<CoeffReturnType>::type values[packetSize];
+      values[0] = m_impl.coeff(inputIndices[0]);
+      values[packetSize-1] = m_impl.coeff(inputIndices[1]);
+      for (int i = 1; i < packetSize-1; ++i) {
+        values[i] = coeff(index+i);
+      }
+      PacketReturnType rslt = internal::pload<PacketReturnType>(values);
+      return rslt;
+    }
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorOpCost costPerCoeff(bool vectorized) const {
+    return m_impl.costPerCoeff(vectorized) + TensorOpCost(0, 0, NumDims);
+  }
+
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar* data() const {
+    Scalar* result = m_impl.data();
+    if (result) {
+      Index offset = 0;
+      if (static_cast<int>(Layout) == static_cast<int>(ColMajor)) {
+        for (int i = 0; i < NumDims; ++i) {
+          if (m_dimensions[i] != m_impl.dimensions()[i]) {
+            offset += m_offsets[i] * m_inputStrides[i];
+            for (int j = i+1; j < NumDims; ++j) {
+              if (m_dimensions[j] > 1) {
+                return NULL;
+              }
+              offset += m_offsets[j] * m_inputStrides[j];
+            }
+            break;
+          }
+        }
+      } else {
+        for (int i = NumDims - 1; i >= 0; --i) {
+          if (m_dimensions[i] != m_impl.dimensions()[i]) {
+            offset += m_offsets[i] * m_inputStrides[i];
+            for (int j = i-1; j >= 0; --j) {
+              if (m_dimensions[j] > 1) {
+                return NULL;
+              }
+              offset += m_offsets[j] * m_inputStrides[j];
+            }
+            break;
+          }
+        }
+      }
+      return result + offset;
+    }
+    return NULL;
+  }
+
+ protected:
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Index srcCoeff(Index index) const
+  {
+    Index inputIndex = 0;
+    if (static_cast<int>(Layout) == static_cast<int>(ColMajor)) {
+      for (int i = NumDims - 1; i > 0; --i) {
+        const Index idx = index / m_fastOutputStrides[i];
+        inputIndex += (idx + m_offsets[i]) * m_inputStrides[i];
+        index -= idx * m_outputStrides[i];
+      }
+      inputIndex += (index + m_offsets[0]);
+    } else {
+      for (int i = 0; i < NumDims - 1; ++i) {
+        const Index idx = index / m_fastOutputStrides[i];
+        inputIndex += (idx + m_offsets[i]) * m_inputStrides[i];
+        index -= idx * m_outputStrides[i];
+      }
+      inputIndex += (index + m_offsets[NumDims-1]);
+    }
+    return inputIndex;
+  }
+
+  array<Index, NumDims> m_outputStrides;
+  array<internal::TensorIntDivisor<Index>, NumDims> m_fastOutputStrides;
+  array<Index, NumDims> m_inputStrides;
+  TensorEvaluator<ArgType, Device> m_impl;
+  const Device& m_device;
+  Dimensions m_dimensions;
+  const StartIndices m_offsets;
+};
+
+
+// Eval as lvalue
+template<typename StartIndices, typename Sizes, typename ArgType, typename Device>
+struct TensorEvaluator<TensorSlicingOp<StartIndices, Sizes, ArgType>, Device>
+  : public TensorEvaluator<const TensorSlicingOp<StartIndices, Sizes, ArgType>, Device>
+{
+  typedef TensorEvaluator<const TensorSlicingOp<StartIndices, Sizes, ArgType>, Device> Base;
+  typedef TensorSlicingOp<StartIndices, Sizes, ArgType> XprType;
+  static const int NumDims = internal::array_size<Sizes>::value;
+
+  enum {
+    IsAligned = /*TensorEvaluator<ArgType, Device>::IsAligned*/false,
+    PacketAccess = TensorEvaluator<ArgType, Device>::PacketAccess,
+    Layout = TensorEvaluator<ArgType, Device>::Layout,
+    CoordAccess = false,
+    RawAccess = false
+  };
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorEvaluator(const XprType& op, const Device& device)
+    : Base(op, device)
+    { }
+
+  typedef typename XprType::Index Index;
+  typedef typename XprType::Scalar Scalar;
+  typedef typename XprType::CoeffReturnType CoeffReturnType;
+  typedef typename PacketType<CoeffReturnType, Device>::type PacketReturnType;
+  typedef Sizes Dimensions;
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType& coeffRef(Index index)
+  {
+    return this->m_impl.coeffRef(this->srcCoeff(index));
+  }
+
+  template <int StoreMode> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  void writePacket(Index index, const PacketReturnType& x)
+  {
+    const int packetSize = internal::unpacket_traits<PacketReturnType>::size;
+    Index inputIndices[] = {0, 0};
+    Index indices[] = {index, index + packetSize - 1};
+    if (static_cast<int>(Layout) == static_cast<int>(ColMajor)) {
+      for (int i = NumDims - 1; i > 0; --i) {
+        const Index idx0 = indices[0] / this->m_fastOutputStrides[i];
+        const Index idx1 = indices[1] / this->m_fastOutputStrides[i];
+        inputIndices[0] += (idx0 + this->m_offsets[i]) * this->m_inputStrides[i];
+        inputIndices[1] += (idx1 + this->m_offsets[i]) * this->m_inputStrides[i];
+        indices[0] -= idx0 * this->m_outputStrides[i];
+        indices[1] -= idx1 * this->m_outputStrides[i];
+      }
+      inputIndices[0] += (indices[0] + this->m_offsets[0]);
+      inputIndices[1] += (indices[1] + this->m_offsets[0]);
+    } else {
+      for (int i = 0; i < NumDims - 1; ++i) {
+        const Index idx0 = indices[0] / this->m_fastOutputStrides[i];
+        const Index idx1 = indices[1] / this->m_fastOutputStrides[i];
+        inputIndices[0] += (idx0 + this->m_offsets[i]) * this->m_inputStrides[i];
+        inputIndices[1] += (idx1 + this->m_offsets[i]) * this->m_inputStrides[i];
+        indices[0] -= idx0 * this->m_outputStrides[i];
+        indices[1] -= idx1 * this->m_outputStrides[i];
+      }
+      inputIndices[0] += (indices[0] + this->m_offsets[NumDims-1]);
+      inputIndices[1] += (indices[1] + this->m_offsets[NumDims-1]);
+    }
+    if (inputIndices[1] - inputIndices[0] == packetSize - 1) {
+      this->m_impl.template writePacket<StoreMode>(inputIndices[0], x);
+    }
+    else {
+      EIGEN_ALIGN_MAX CoeffReturnType values[packetSize];
+      internal::pstore<CoeffReturnType, PacketReturnType>(values, x);
+      this->m_impl.coeffRef(inputIndices[0]) = values[0];
+      this->m_impl.coeffRef(inputIndices[1]) = values[packetSize-1];
+      for (int i = 1; i < packetSize-1; ++i) {
+        this->coeffRef(index+i) = values[i];
+      }
+    }
+  }
+};
+
+
+
+namespace internal {
+template<typename StartIndices, typename StopIndices, typename Strides, typename XprType>
+struct traits<TensorStridingSlicingOp<StartIndices, StopIndices, Strides, XprType> > : public traits<XprType>
+{
+  typedef typename XprType::Scalar Scalar;
+  typedef traits<XprType> XprTraits;
+  typedef typename XprTraits::StorageKind StorageKind;
+  typedef typename XprTraits::Index Index;
+  typedef typename XprType::Nested Nested;
+  typedef typename remove_reference<Nested>::type _Nested;
+  static const int NumDimensions = array_size<StartIndices>::value;
+  static const int Layout = XprTraits::Layout;
+};
+
+template<typename StartIndices, typename StopIndices, typename Strides, typename XprType>
+struct eval<TensorStridingSlicingOp<StartIndices, StopIndices, Strides, XprType>, Eigen::Dense>
+{
+  typedef const TensorStridingSlicingOp<StartIndices, StopIndices, Strides, XprType>& type;
+};
+
+template<typename StartIndices, typename StopIndices, typename Strides, typename XprType>
+struct nested<TensorStridingSlicingOp<StartIndices, StopIndices, Strides, XprType>, 1, typename eval<TensorStridingSlicingOp<StartIndices, StopIndices, Strides, XprType> >::type>
+{
+  typedef TensorStridingSlicingOp<StartIndices, StopIndices, Strides, XprType> type;
+};
+
+}  // end namespace internal
+
+
+template<typename StartIndices, typename StopIndices, typename Strides, typename XprType>
+class TensorStridingSlicingOp : public TensorBase<TensorStridingSlicingOp<StartIndices, StopIndices, Strides, XprType> >
+{
+  public:
+  typedef typename internal::traits<TensorStridingSlicingOp>::Scalar Scalar;
+  typedef typename XprType::CoeffReturnType CoeffReturnType;
+  typedef typename internal::nested<TensorStridingSlicingOp>::type Nested;
+  typedef typename internal::traits<TensorStridingSlicingOp>::StorageKind StorageKind;
+  typedef typename internal::traits<TensorStridingSlicingOp>::Index Index;
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorStridingSlicingOp(
+    const XprType& expr, const StartIndices& startIndices,
+    const StopIndices& stopIndices, const Strides& strides)
+      : m_xpr(expr), m_startIndices(startIndices), m_stopIndices(stopIndices),
+        m_strides(strides) {}
+
+    EIGEN_DEVICE_FUNC
+    const StartIndices& startIndices() const { return m_startIndices; }
+    EIGEN_DEVICE_FUNC
+    const StartIndices& stopIndices() const { return m_stopIndices; }
+    EIGEN_DEVICE_FUNC
+    const StartIndices& strides() const { return m_strides; }
+
+    EIGEN_DEVICE_FUNC
+    const typename internal::remove_all<typename XprType::Nested>::type&
+    expression() const { return m_xpr; }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE TensorStridingSlicingOp& operator = (const TensorStridingSlicingOp& other)
+    {
+      typedef TensorAssignOp<TensorStridingSlicingOp, const TensorStridingSlicingOp> Assign;
+      Assign assign(*this, other);
+      internal::TensorExecutor<const Assign, DefaultDevice>::run(
+          assign, DefaultDevice());
+      return *this;
+    }
+
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE TensorStridingSlicingOp& operator = (const OtherDerived& other)
+    {
+      typedef TensorAssignOp<TensorStridingSlicingOp, const OtherDerived> Assign;
+      Assign assign(*this, other);
+      internal::TensorExecutor<const Assign, DefaultDevice>::run(
+          assign, DefaultDevice());
+      return *this;
+    }
+
+  protected:
+    typename XprType::Nested m_xpr;
+    const StartIndices m_startIndices;
+    const StopIndices m_stopIndices;
+    const Strides m_strides;
+};
+
+// Eval as rvalue
+template<typename StartIndices, typename StopIndices, typename Strides, typename ArgType, typename Device>
+struct TensorEvaluator<const TensorStridingSlicingOp<StartIndices, StopIndices, Strides, ArgType>, Device>
+{
+  typedef TensorStridingSlicingOp<StartIndices, StopIndices, Strides, ArgType> XprType;
+  static const int NumDims = internal::array_size<Strides>::value;
+
+  enum {
+    // Alignment can't be guaranteed at compile time since it depends on the
+    // slice offsets and sizes.
+    IsAligned = false,
+    PacketAccess = false,
+    BlockAccess = false,
+    Layout = TensorEvaluator<ArgType, Device>::Layout,
+    RawAccess = false
+  };
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorEvaluator(const XprType& op, const Device& device)
+      : m_impl(op.expression(), device), m_device(device), m_strides(op.strides())
+  {
+    // Handle degenerate intervals by gracefully clamping and allowing m_dimensions to be zero
+    DSizes<Index,NumDims> startIndicesClamped, stopIndicesClamped;
+    for (size_t i = 0; i < internal::array_size<Dimensions>::value; ++i) {
+      eigen_assert(m_strides[i] != 0 && "0 stride is invalid");
+      if(m_strides[i]>0){
+        startIndicesClamped[i] = clamp(op.startIndices()[i], 0, m_impl.dimensions()[i]);
+        stopIndicesClamped[i] = clamp(op.stopIndices()[i], 0, m_impl.dimensions()[i]);
+      }else{
+        /* implies m_strides[i]<0 by assert */
+        startIndicesClamped[i] = clamp(op.startIndices()[i], -1, m_impl.dimensions()[i] - 1);
+        stopIndicesClamped[i] = clamp(op.stopIndices()[i], -1, m_impl.dimensions()[i] - 1);
+      }
+      m_startIndices[i] = startIndicesClamped[i];
+    }
+
+    const typename TensorEvaluator<ArgType, Device>::Dimensions& input_dims = m_impl.dimensions();
+
+    // check for degenerate intervals and compute output tensor shape
+    bool degenerate = false;;
+    for(int i = 0; i < NumDims; i++){
+      Index interval = stopIndicesClamped[i] - startIndicesClamped[i];
+      if(interval == 0 || ((interval<0) != (m_strides[i]<0))){
+        m_dimensions[i] = 0;
+        degenerate = true;
+      }else{
+        m_dimensions[i] = interval / m_strides[i]
+                          + (interval % m_strides[i] != 0 ? 1 : 0);
+        eigen_assert(m_dimensions[i] >= 0);
+      }
+    }
+    Strides output_dims = m_dimensions;
+
+    if (static_cast<int>(Layout) == static_cast<int>(ColMajor)) {
+      m_inputStrides[0] = m_strides[0];
+      m_offsets[0] = startIndicesClamped[0];
+      Index previousDimProduct = 1;
+      for (int i = 1; i < NumDims; ++i) {
+        previousDimProduct *= input_dims[i-1];
+        m_inputStrides[i] = previousDimProduct * m_strides[i];
+        m_offsets[i] = startIndicesClamped[i] * previousDimProduct;
+      }
+
+      // Don't initialize m_fastOutputStrides[0] since it won't ever be accessed.
+      m_outputStrides[0] = 1;
+      for (int i = 1; i < NumDims; ++i) {
+        m_outputStrides[i] = m_outputStrides[i-1] * output_dims[i-1];
+        // NOTE: if tensor is degenerate, we send 1 to prevent TensorIntDivisor constructor crash
+        m_fastOutputStrides[i] = internal::TensorIntDivisor<Index>(degenerate ? 1 : m_outputStrides[i]);
+      }
+    } else {
+      m_inputStrides[NumDims-1] = m_strides[NumDims-1];
+      m_offsets[NumDims-1] = startIndicesClamped[NumDims-1];
+      Index previousDimProduct = 1;
+      for (int i = NumDims - 2; i >= 0; --i) {
+        previousDimProduct *= input_dims[i+1];
+        m_inputStrides[i] = previousDimProduct * m_strides[i];
+        m_offsets[i] = startIndicesClamped[i] * previousDimProduct;
+      }
+
+      m_outputStrides[NumDims-1] = 1;
+      for (int i = NumDims - 2; i >= 0; --i) {
+        m_outputStrides[i] = m_outputStrides[i+1] * output_dims[i+1];
+        // NOTE: if tensor is degenerate, we send 1 to prevent TensorIntDivisor constructor crash
+        m_fastOutputStrides[i] = internal::TensorIntDivisor<Index>(degenerate ? 1 : m_outputStrides[i]);
+      }
+    }
+    m_block_total_size_max = numext::maxi(static_cast<std::size_t>(1),
+                                          device.lastLevelCacheSize() /
+                                          sizeof(Scalar));
+  }
+
+  typedef typename XprType::Index Index;
+  typedef typename XprType::Scalar Scalar;
+  typedef typename internal::remove_const<Scalar>::type ScalarNonConst;
+  typedef typename XprType::CoeffReturnType CoeffReturnType;
+  typedef typename PacketType<CoeffReturnType, Device>::type PacketReturnType;
+  typedef Strides Dimensions;
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Dimensions& dimensions() const { return m_dimensions; }
+
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool evalSubExprsIfNeeded(CoeffReturnType*) {
+    m_impl.evalSubExprsIfNeeded(NULL);
+    return true;
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void cleanup() {
+    m_impl.cleanup();
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType coeff(Index index) const
+  {
+    return m_impl.coeff(srcCoeff(index));
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorOpCost costPerCoeff(bool vectorized) const {
+    return m_impl.costPerCoeff(vectorized) + TensorOpCost(0, 0, NumDims);
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar* data() const {
+    return NULL;
+  }
+
+ protected:
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Index srcCoeff(Index index) const
+  {
+    Index inputIndex = 0;
+    if (static_cast<int>(Layout) == static_cast<int>(ColMajor)) {
+      for (int i = NumDims - 1; i >= 0; --i) {
+        const Index idx = index / m_fastOutputStrides[i];
+        inputIndex += idx * m_inputStrides[i] + m_offsets[i];
+        index -= idx * m_outputStrides[i];
+      }
+    } else {
+      for (int i = 0; i < NumDims; ++i) {
+        const Index idx = index / m_fastOutputStrides[i];
+        inputIndex += idx * m_inputStrides[i] + m_offsets[i];
+        index -= idx * m_outputStrides[i];
+      }
+    }
+    return inputIndex;
+  }
+
+  static EIGEN_STRONG_INLINE Index clamp(Index value, Index min, Index max) {
+    return numext::maxi(min, numext::mini(max,value));
+  }
+
+  array<Index, NumDims> m_outputStrides;
+  array<internal::TensorIntDivisor<Index>, NumDims> m_fastOutputStrides;
+  array<Index, NumDims> m_inputStrides;
+  TensorEvaluator<ArgType, Device> m_impl;
+  const Device& m_device;
+  DSizes<Index, NumDims> m_startIndices; // clamped startIndices
+  DSizes<Index, NumDims> m_dimensions;
+  DSizes<Index, NumDims> m_offsets; // offset in a flattened shape
+  const Strides m_strides;
+  std::size_t m_block_total_size_max;
+};
+
+// Eval as lvalue
+template<typename StartIndices, typename StopIndices, typename Strides, typename ArgType, typename Device>
+struct TensorEvaluator<TensorStridingSlicingOp<StartIndices, StopIndices, Strides, ArgType>, Device>
+  : public TensorEvaluator<const TensorStridingSlicingOp<StartIndices, StopIndices, Strides, ArgType>, Device>
+{
+  typedef TensorEvaluator<const TensorStridingSlicingOp<StartIndices, StopIndices, Strides, ArgType>, Device> Base;
+  typedef TensorStridingSlicingOp<StartIndices, StopIndices, Strides, ArgType> XprType;
+  static const int NumDims = internal::array_size<Strides>::value;
+
+  enum {
+    IsAligned = false,
+    PacketAccess = false,
+    BlockAccess = false,
+    Layout = TensorEvaluator<ArgType, Device>::Layout,
+    CoordAccess = TensorEvaluator<ArgType, Device>::CoordAccess,
+    RawAccess = false
+  };
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorEvaluator(const XprType& op, const Device& device)
+    : Base(op, device)
+    { }
+
+  typedef typename XprType::Index Index;
+  typedef typename XprType::Scalar Scalar;
+  typedef typename internal::remove_const<Scalar>::type ScalarNonConst;
+  typedef typename XprType::CoeffReturnType CoeffReturnType;
+  typedef typename PacketType<CoeffReturnType, Device>::type PacketReturnType;
+  typedef Strides Dimensions;
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType& coeffRef(Index index)
+  {
+    return this->m_impl.coeffRef(this->srcCoeff(index));
+  }
+};
+
+
+} // end namespace Eigen
+
+#endif // EIGEN_CXX11_TENSOR_TENSOR_MORPHING_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorStriding.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorStriding.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorStriding.h	(revision 3762)
@@ -0,0 +1,338 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2014 Benoit Steiner <benoit.steiner.goog@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CXX11_TENSOR_TENSOR_STRIDING_H
+#define EIGEN_CXX11_TENSOR_TENSOR_STRIDING_H
+
+namespace Eigen {
+
+/** \class TensorStriding
+  * \ingroup CXX11_Tensor_Module
+  *
+  * \brief Tensor striding class.
+  *
+  *
+  */
+namespace internal {
+template<typename Strides, typename XprType>
+struct traits<TensorStridingOp<Strides, XprType> > : public traits<XprType>
+{
+  typedef typename XprType::Scalar Scalar;
+  typedef traits<XprType> XprTraits;
+  typedef typename XprTraits::StorageKind StorageKind;
+  typedef typename XprTraits::Index Index;
+  typedef typename XprType::Nested Nested;
+  typedef typename remove_reference<Nested>::type _Nested;
+  static const int NumDimensions = XprTraits::NumDimensions;
+  static const int Layout = XprTraits::Layout;
+};
+
+template<typename Strides, typename XprType>
+struct eval<TensorStridingOp<Strides, XprType>, Eigen::Dense>
+{
+  typedef const TensorStridingOp<Strides, XprType>& type;
+};
+
+template<typename Strides, typename XprType>
+struct nested<TensorStridingOp<Strides, XprType>, 1, typename eval<TensorStridingOp<Strides, XprType> >::type>
+{
+  typedef TensorStridingOp<Strides, XprType> type;
+};
+
+}  // end namespace internal
+
+
+
+template<typename Strides, typename XprType>
+class TensorStridingOp : public TensorBase<TensorStridingOp<Strides, XprType> >
+{
+  public:
+  typedef typename Eigen::internal::traits<TensorStridingOp>::Scalar Scalar;
+  typedef typename Eigen::NumTraits<Scalar>::Real RealScalar;
+  typedef typename XprType::CoeffReturnType CoeffReturnType;
+  typedef typename Eigen::internal::nested<TensorStridingOp>::type Nested;
+  typedef typename Eigen::internal::traits<TensorStridingOp>::StorageKind StorageKind;
+  typedef typename Eigen::internal::traits<TensorStridingOp>::Index Index;
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorStridingOp(const XprType& expr, const Strides& dims)
+      : m_xpr(expr), m_dims(dims) {}
+
+    EIGEN_DEVICE_FUNC
+    const Strides& strides() const { return m_dims; }
+
+    EIGEN_DEVICE_FUNC
+    const typename internal::remove_all<typename XprType::Nested>::type&
+    expression() const { return m_xpr; }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE TensorStridingOp& operator = (const TensorStridingOp& other)
+    {
+      typedef TensorAssignOp<TensorStridingOp, const TensorStridingOp> Assign;
+      Assign assign(*this, other);
+      internal::TensorExecutor<const Assign, DefaultDevice>::run(assign, DefaultDevice());
+      return *this;
+    }
+
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE TensorStridingOp& operator = (const OtherDerived& other)
+    {
+      typedef TensorAssignOp<TensorStridingOp, const OtherDerived> Assign;
+      Assign assign(*this, other);
+      internal::TensorExecutor<const Assign, DefaultDevice>::run(assign, DefaultDevice());
+      return *this;
+    }
+
+  protected:
+    typename XprType::Nested m_xpr;
+    const Strides m_dims;
+};
+
+
+// Eval as rvalue
+template<typename Strides, typename ArgType, typename Device>
+struct TensorEvaluator<const TensorStridingOp<Strides, ArgType>, Device>
+{
+  typedef TensorStridingOp<Strides, ArgType> XprType;
+  typedef typename XprType::Index Index;
+  static const int NumDims = internal::array_size<typename TensorEvaluator<ArgType, Device>::Dimensions>::value;
+  typedef DSizes<Index, NumDims> Dimensions;
+  typedef typename XprType::Scalar Scalar;
+  typedef typename XprType::CoeffReturnType CoeffReturnType;
+  typedef typename PacketType<CoeffReturnType, Device>::type PacketReturnType;
+  static const int PacketSize = internal::unpacket_traits<PacketReturnType>::size;
+
+  enum {
+    IsAligned = /*TensorEvaluator<ArgType, Device>::IsAligned*/false,
+    PacketAccess = TensorEvaluator<ArgType, Device>::PacketAccess,
+    Layout = TensorEvaluator<ArgType, Device>::Layout,
+    CoordAccess = false,  // to be implemented
+    RawAccess = false
+  };
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorEvaluator(const XprType& op, const Device& device)
+      : m_impl(op.expression(), device)
+  {
+    m_dimensions = m_impl.dimensions();
+    for (int i = 0; i < NumDims; ++i) {
+      m_dimensions[i] = ceilf(static_cast<float>(m_dimensions[i]) / op.strides()[i]);
+    }
+
+    const typename TensorEvaluator<ArgType, Device>::Dimensions& input_dims = m_impl.dimensions();
+    if (static_cast<int>(Layout) == static_cast<int>(ColMajor)) {
+      m_outputStrides[0] = 1;
+      m_inputStrides[0] = 1;
+      for (int i = 1; i < NumDims; ++i) {
+        m_outputStrides[i] = m_outputStrides[i-1] * m_dimensions[i-1];
+        m_inputStrides[i] = m_inputStrides[i-1] * input_dims[i-1];
+        m_inputStrides[i-1] *= op.strides()[i-1];
+      }
+      m_inputStrides[NumDims-1] *= op.strides()[NumDims-1];
+    } else {  // RowMajor
+      m_outputStrides[NumDims-1] = 1;
+      m_inputStrides[NumDims-1] = 1;
+      for (int i = NumDims - 2; i >= 0; --i) {
+        m_outputStrides[i] = m_outputStrides[i+1] * m_dimensions[i+1];
+        m_inputStrides[i] = m_inputStrides[i+1] * input_dims[i+1];
+        m_inputStrides[i+1] *= op.strides()[i+1];
+      }
+      m_inputStrides[0] *= op.strides()[0];
+    }
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Dimensions& dimensions() const { return m_dimensions; }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool evalSubExprsIfNeeded(Scalar* /*data*/) {
+    m_impl.evalSubExprsIfNeeded(NULL);
+    return true;
+  }
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void cleanup() {
+    m_impl.cleanup();
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType coeff(Index index) const
+  {
+    return m_impl.coeff(srcCoeff(index));
+  }
+
+  template<int LoadMode>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketReturnType packet(Index index) const
+  {
+    EIGEN_STATIC_ASSERT((PacketSize > 1), YOU_MADE_A_PROGRAMMING_MISTAKE)
+    eigen_assert(index+PacketSize-1 < dimensions().TotalSize());
+
+    Index inputIndices[] = {0, 0};
+    Index indices[] = {index, index + PacketSize - 1};
+    if (static_cast<int>(Layout) == static_cast<int>(ColMajor)) {
+      for (int i = NumDims - 1; i > 0; --i) {
+        const Index idx0 = indices[0] / m_outputStrides[i];
+        const Index idx1 = indices[1] / m_outputStrides[i];
+        inputIndices[0] += idx0 * m_inputStrides[i];
+        inputIndices[1] += idx1 * m_inputStrides[i];
+        indices[0] -= idx0 * m_outputStrides[i];
+        indices[1] -= idx1 * m_outputStrides[i];
+      }
+      inputIndices[0] += indices[0] * m_inputStrides[0];
+      inputIndices[1] += indices[1] * m_inputStrides[0];
+    } else {  // RowMajor
+      for (int i = 0; i < NumDims - 1; ++i) {
+        const Index idx0 = indices[0] / m_outputStrides[i];
+        const Index idx1 = indices[1] / m_outputStrides[i];
+        inputIndices[0] += idx0 * m_inputStrides[i];
+        inputIndices[1] += idx1 * m_inputStrides[i];
+        indices[0] -= idx0 * m_outputStrides[i];
+        indices[1] -= idx1 * m_outputStrides[i];
+      }
+      inputIndices[0] += indices[0] * m_inputStrides[NumDims-1];
+      inputIndices[1] += indices[1] * m_inputStrides[NumDims-1];
+    }
+    if (inputIndices[1] - inputIndices[0] == PacketSize - 1) {
+      PacketReturnType rslt = m_impl.template packet<Unaligned>(inputIndices[0]);
+      return rslt;
+    }
+    else {
+      EIGEN_ALIGN_MAX typename internal::remove_const<CoeffReturnType>::type values[PacketSize];
+      values[0] = m_impl.coeff(inputIndices[0]);
+      values[PacketSize-1] = m_impl.coeff(inputIndices[1]);
+      for (int i = 1; i < PacketSize-1; ++i) {
+        values[i] = coeff(index+i);
+      }
+      PacketReturnType rslt = internal::pload<PacketReturnType>(values);
+      return rslt;
+    }
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorOpCost costPerCoeff(bool vectorized) const {
+    double compute_cost = (NumDims - 1) * (TensorOpCost::AddCost<Index>() +
+                                           TensorOpCost::MulCost<Index>() +
+                                           TensorOpCost::DivCost<Index>()) +
+        TensorOpCost::MulCost<Index>();
+    if (vectorized) {
+      compute_cost *= 2;  // packet() computes two indices
+    }
+    const int innerDim = (static_cast<int>(Layout) == static_cast<int>(ColMajor)) ? 0 : (NumDims - 1);
+    return m_impl.costPerCoeff(vectorized && m_inputStrides[innerDim] == 1) +
+        // Computation is not vectorized per se, but it is done once per packet.
+        TensorOpCost(0, 0, compute_cost, vectorized, PacketSize);
+  }
+
+  EIGEN_DEVICE_FUNC Scalar* data() const { return NULL; }
+
+ protected:
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Index srcCoeff(Index index) const
+  {
+    Index inputIndex = 0;
+    if (static_cast<int>(Layout) == static_cast<int>(ColMajor)) {
+      for (int i = NumDims - 1; i > 0; --i) {
+        const Index idx = index / m_outputStrides[i];
+        inputIndex += idx * m_inputStrides[i];
+        index -= idx * m_outputStrides[i];
+      }
+      inputIndex += index * m_inputStrides[0];
+    } else {  // RowMajor
+      for (int i = 0; i < NumDims - 1; ++i) {
+        const Index idx = index / m_outputStrides[i];
+        inputIndex += idx * m_inputStrides[i];
+        index -= idx * m_outputStrides[i];
+      }
+      inputIndex += index * m_inputStrides[NumDims-1];
+    }
+    return inputIndex;
+  }
+
+  Dimensions m_dimensions;
+  array<Index, NumDims> m_outputStrides;
+  array<Index, NumDims> m_inputStrides;
+  TensorEvaluator<ArgType, Device> m_impl;
+};
+
+
+// Eval as lvalue
+template<typename Strides, typename ArgType, typename Device>
+struct TensorEvaluator<TensorStridingOp<Strides, ArgType>, Device>
+    : public TensorEvaluator<const TensorStridingOp<Strides, ArgType>, Device>
+{
+  typedef TensorStridingOp<Strides, ArgType> XprType;
+  typedef TensorEvaluator<const XprType, Device> Base;
+  //  typedef typename XprType::Index Index;
+  static const int NumDims = internal::array_size<typename TensorEvaluator<ArgType, Device>::Dimensions>::value;
+  //  typedef DSizes<Index, NumDims> Dimensions;
+
+  enum {
+    IsAligned = /*TensorEvaluator<ArgType, Device>::IsAligned*/false,
+    PacketAccess = TensorEvaluator<ArgType, Device>::PacketAccess,
+    Layout = TensorEvaluator<ArgType, Device>::Layout,
+    CoordAccess = false,  // to be implemented
+    RawAccess = false
+  };
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorEvaluator(const XprType& op, const Device& device)
+      : Base(op, device) { }
+
+  typedef typename XprType::Index Index;
+  typedef typename XprType::Scalar Scalar;
+  typedef typename XprType::CoeffReturnType CoeffReturnType;
+  typedef typename PacketType<CoeffReturnType, Device>::type PacketReturnType;
+  static const int PacketSize = internal::unpacket_traits<PacketReturnType>::size;
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar& coeffRef(Index index)
+  {
+    return this->m_impl.coeffRef(this->srcCoeff(index));
+  }
+
+  template <int StoreMode> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  void writePacket(Index index, const PacketReturnType& x)
+  {
+    EIGEN_STATIC_ASSERT((PacketSize > 1), YOU_MADE_A_PROGRAMMING_MISTAKE)
+    eigen_assert(index+PacketSize-1 < this->dimensions().TotalSize());
+
+    Index inputIndices[] = {0, 0};
+    Index indices[] = {index, index + PacketSize - 1};
+    if (static_cast<int>(Layout) == static_cast<int>(ColMajor)) {
+      for (int i = NumDims - 1; i > 0; --i) {
+        const Index idx0 = indices[0] / this->m_outputStrides[i];
+        const Index idx1 = indices[1] / this->m_outputStrides[i];
+        inputIndices[0] += idx0 * this->m_inputStrides[i];
+        inputIndices[1] += idx1 * this->m_inputStrides[i];
+        indices[0] -= idx0 * this->m_outputStrides[i];
+        indices[1] -= idx1 * this->m_outputStrides[i];
+      }
+      inputIndices[0] += indices[0] * this->m_inputStrides[0];
+      inputIndices[1] += indices[1] * this->m_inputStrides[0];
+    } else {  // RowMajor
+      for (int i = 0; i < NumDims - 1; ++i) {
+        const Index idx0 = indices[0] / this->m_outputStrides[i];
+        const Index idx1 = indices[1] / this->m_outputStrides[i];
+        inputIndices[0] += idx0 * this->m_inputStrides[i];
+        inputIndices[1] += idx1 * this->m_inputStrides[i];
+        indices[0] -= idx0 * this->m_outputStrides[i];
+        indices[1] -= idx1 * this->m_outputStrides[i];
+      }
+      inputIndices[0] += indices[0] * this->m_inputStrides[NumDims-1];
+      inputIndices[1] += indices[1] * this->m_inputStrides[NumDims-1];
+    }
+    if (inputIndices[1] - inputIndices[0] == PacketSize - 1) {
+      this->m_impl.template writePacket<Unaligned>(inputIndices[0], x);
+    }
+    else {
+      EIGEN_ALIGN_MAX Scalar values[PacketSize];
+      internal::pstore<Scalar, PacketReturnType>(values, x);
+      this->m_impl.coeffRef(inputIndices[0]) = values[0];
+      this->m_impl.coeffRef(inputIndices[1]) = values[PacketSize-1];
+      for (int i = 1; i < PacketSize-1; ++i) {
+        this->coeffRef(index+i) = values[i];
+      }
+    }
+  }
+};
+
+
+} // end namespace Eigen
+
+#endif // EIGEN_CXX11_TENSOR_TENSOR_STRIDING_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorVolumePatch.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorVolumePatch.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorVolumePatch.h	(revision 3762)
@@ -0,0 +1,608 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+
+#ifndef EIGEN_CXX11_TENSOR_TENSOR_VOLUME_PATCH_H
+#define EIGEN_CXX11_TENSOR_TENSOR_VOLUME_PATCH_H
+
+namespace Eigen {
+
+/** \class TensorVolumePatch
+  * \ingroup CXX11_Tensor_Module
+  *
+  * \brief Patch extraction specialized for processing of volumetric data.
+  * This assumes that the input has a least 4 dimensions ordered as follows:
+  *  - channels
+  *  - planes
+  *  - rows
+  *  - columns
+  *  - (optional) additional dimensions such as time or batch size.
+  * Calling the volume patch code with patch_planes, patch_rows, and patch_cols
+  * is equivalent to calling the regular patch extraction code with parameters
+  * d, patch_planes, patch_rows, patch_cols, and 1 for all the additional
+  * dimensions.
+  */
+namespace internal {
+template<DenseIndex Planes, DenseIndex Rows, DenseIndex Cols, typename XprType>
+struct traits<TensorVolumePatchOp<Planes, Rows, Cols, XprType> > : public traits<XprType>
+{
+  typedef typename internal::remove_const<typename XprType::Scalar>::type Scalar;
+  typedef traits<XprType> XprTraits;
+  typedef typename XprTraits::StorageKind StorageKind;
+  typedef typename XprTraits::Index Index;
+  typedef typename XprType::Nested Nested;
+  typedef typename remove_reference<Nested>::type _Nested;
+  static const int NumDimensions = XprTraits::NumDimensions + 1;
+  static const int Layout = XprTraits::Layout;
+};
+
+template<DenseIndex Planes, DenseIndex Rows, DenseIndex Cols, typename XprType>
+struct eval<TensorVolumePatchOp<Planes, Rows, Cols, XprType>, Eigen::Dense>
+{
+  typedef const TensorVolumePatchOp<Planes, Rows, Cols, XprType>& type;
+};
+
+template<DenseIndex Planes, DenseIndex Rows, DenseIndex Cols, typename XprType>
+struct nested<TensorVolumePatchOp<Planes, Rows, Cols, XprType>, 1, typename eval<TensorVolumePatchOp<Planes, Rows, Cols, XprType> >::type>
+{
+  typedef TensorVolumePatchOp<Planes, Rows, Cols, XprType> type;
+};
+
+}  // end namespace internal
+
+template<DenseIndex Planes, DenseIndex Rows, DenseIndex Cols, typename XprType>
+class TensorVolumePatchOp : public TensorBase<TensorVolumePatchOp<Planes, Rows, Cols, XprType>, ReadOnlyAccessors>
+{
+  public:
+  typedef typename Eigen::internal::traits<TensorVolumePatchOp>::Scalar Scalar;
+  typedef typename Eigen::NumTraits<Scalar>::Real RealScalar;
+  typedef typename XprType::CoeffReturnType CoeffReturnType;
+  typedef typename Eigen::internal::nested<TensorVolumePatchOp>::type Nested;
+  typedef typename Eigen::internal::traits<TensorVolumePatchOp>::StorageKind StorageKind;
+  typedef typename Eigen::internal::traits<TensorVolumePatchOp>::Index Index;
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorVolumePatchOp(const XprType& expr, DenseIndex patch_planes, DenseIndex patch_rows, DenseIndex patch_cols,
+                                                            DenseIndex plane_strides, DenseIndex row_strides, DenseIndex col_strides,
+                                                            DenseIndex in_plane_strides, DenseIndex in_row_strides, DenseIndex in_col_strides,
+                                                            DenseIndex plane_inflate_strides, DenseIndex row_inflate_strides, DenseIndex col_inflate_strides,
+                                                            PaddingType padding_type, Scalar padding_value)
+      : m_xpr(expr), m_patch_planes(patch_planes), m_patch_rows(patch_rows), m_patch_cols(patch_cols),
+        m_plane_strides(plane_strides), m_row_strides(row_strides), m_col_strides(col_strides),
+        m_in_plane_strides(in_plane_strides), m_in_row_strides(in_row_strides), m_in_col_strides(in_col_strides),
+        m_plane_inflate_strides(plane_inflate_strides), m_row_inflate_strides(row_inflate_strides), m_col_inflate_strides(col_inflate_strides),
+        m_padding_explicit(false), m_padding_top_z(0), m_padding_bottom_z(0), m_padding_top(0), m_padding_bottom(0), m_padding_left(0), m_padding_right(0),
+        m_padding_type(padding_type), m_padding_value(padding_value) {}
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorVolumePatchOp(const XprType& expr, DenseIndex patch_planes, DenseIndex patch_rows, DenseIndex patch_cols,
+                                                           DenseIndex plane_strides, DenseIndex row_strides, DenseIndex col_strides,
+                                                           DenseIndex in_plane_strides, DenseIndex in_row_strides, DenseIndex in_col_strides,
+                                                           DenseIndex plane_inflate_strides, DenseIndex row_inflate_strides, DenseIndex col_inflate_strides,
+                                                           DenseIndex padding_top_z, DenseIndex padding_bottom_z,
+                                                           DenseIndex padding_top, DenseIndex padding_bottom,
+                                                           DenseIndex padding_left, DenseIndex padding_right,
+                                                           Scalar padding_value)
+      : m_xpr(expr), m_patch_planes(patch_planes), m_patch_rows(patch_rows), m_patch_cols(patch_cols),
+        m_plane_strides(plane_strides), m_row_strides(row_strides), m_col_strides(col_strides),
+        m_in_plane_strides(in_plane_strides), m_in_row_strides(in_row_strides), m_in_col_strides(in_col_strides),
+        m_plane_inflate_strides(plane_inflate_strides), m_row_inflate_strides(row_inflate_strides), m_col_inflate_strides(col_inflate_strides),
+        m_padding_explicit(true), m_padding_top_z(padding_top_z), m_padding_bottom_z(padding_bottom_z), m_padding_top(padding_top), m_padding_bottom(padding_bottom),
+        m_padding_left(padding_left), m_padding_right(padding_right),
+        m_padding_type(PADDING_VALID), m_padding_value(padding_value) {}
+
+    EIGEN_DEVICE_FUNC
+    DenseIndex patch_planes() const { return m_patch_planes; }
+    EIGEN_DEVICE_FUNC
+    DenseIndex patch_rows() const { return m_patch_rows; }
+    EIGEN_DEVICE_FUNC
+    DenseIndex patch_cols() const { return m_patch_cols; }
+    EIGEN_DEVICE_FUNC
+    DenseIndex plane_strides() const { return m_plane_strides; }
+    EIGEN_DEVICE_FUNC
+    DenseIndex row_strides() const { return m_row_strides; }
+    EIGEN_DEVICE_FUNC
+    DenseIndex col_strides() const { return m_col_strides; }
+    EIGEN_DEVICE_FUNC
+    DenseIndex in_plane_strides() const { return m_in_plane_strides; }
+    EIGEN_DEVICE_FUNC
+    DenseIndex in_row_strides() const { return m_in_row_strides; }
+    EIGEN_DEVICE_FUNC
+    DenseIndex in_col_strides() const { return m_in_col_strides; }
+    EIGEN_DEVICE_FUNC
+    DenseIndex plane_inflate_strides() const { return m_plane_inflate_strides; }
+    EIGEN_DEVICE_FUNC
+    DenseIndex row_inflate_strides() const { return m_row_inflate_strides; }
+    EIGEN_DEVICE_FUNC
+    DenseIndex col_inflate_strides() const { return m_col_inflate_strides; }
+    EIGEN_DEVICE_FUNC
+    bool padding_explicit() const { return m_padding_explicit; }
+    EIGEN_DEVICE_FUNC
+    DenseIndex padding_top_z() const { return m_padding_top_z; }
+    EIGEN_DEVICE_FUNC
+    DenseIndex padding_bottom_z() const { return m_padding_bottom_z; }
+    EIGEN_DEVICE_FUNC
+    DenseIndex padding_top() const { return m_padding_top; }
+    EIGEN_DEVICE_FUNC
+    DenseIndex padding_bottom() const { return m_padding_bottom; }
+    EIGEN_DEVICE_FUNC
+    DenseIndex padding_left() const { return m_padding_left; }
+    EIGEN_DEVICE_FUNC
+    DenseIndex padding_right() const { return m_padding_right; }
+    EIGEN_DEVICE_FUNC
+    PaddingType padding_type() const { return m_padding_type; }
+    EIGEN_DEVICE_FUNC
+    Scalar padding_value() const { return m_padding_value; }
+
+    EIGEN_DEVICE_FUNC
+    const typename internal::remove_all<typename XprType::Nested>::type&
+    expression() const { return m_xpr; }
+
+  protected:
+    typename XprType::Nested m_xpr;
+    const DenseIndex m_patch_planes;
+    const DenseIndex m_patch_rows;
+    const DenseIndex m_patch_cols;
+    const DenseIndex m_plane_strides;
+    const DenseIndex m_row_strides;
+    const DenseIndex m_col_strides;
+    const DenseIndex m_in_plane_strides;
+    const DenseIndex m_in_row_strides;
+    const DenseIndex m_in_col_strides;
+    const DenseIndex m_plane_inflate_strides;
+    const DenseIndex m_row_inflate_strides;
+    const DenseIndex m_col_inflate_strides;
+    const bool m_padding_explicit;
+    const DenseIndex m_padding_top_z;
+    const DenseIndex m_padding_bottom_z;
+    const DenseIndex m_padding_top;
+    const DenseIndex m_padding_bottom;
+    const DenseIndex m_padding_left;
+    const DenseIndex m_padding_right;
+    const PaddingType m_padding_type;
+    const Scalar m_padding_value;
+};
+
+
+// Eval as rvalue
+template<DenseIndex Planes, DenseIndex Rows, DenseIndex Cols, typename ArgType, typename Device>
+struct TensorEvaluator<const TensorVolumePatchOp<Planes, Rows, Cols, ArgType>, Device>
+{
+  typedef TensorVolumePatchOp<Planes, Rows, Cols, ArgType> XprType;
+  typedef typename XprType::Index Index;
+  static const int NumInputDims = internal::array_size<typename TensorEvaluator<ArgType, Device>::Dimensions>::value;
+  static const int NumDims = NumInputDims + 1;
+  typedef DSizes<Index, NumDims> Dimensions;
+  typedef typename internal::remove_const<typename XprType::Scalar>::type Scalar;
+  typedef typename XprType::CoeffReturnType CoeffReturnType;
+  typedef typename PacketType<CoeffReturnType, Device>::type PacketReturnType;
+  static const int PacketSize = internal::unpacket_traits<PacketReturnType>::size;
+
+  enum {
+    IsAligned = false,
+    PacketAccess = TensorEvaluator<ArgType, Device>::PacketAccess,
+    BlockAccess = false,
+    Layout = TensorEvaluator<ArgType, Device>::Layout,
+    CoordAccess = false,
+    RawAccess = false
+  };
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorEvaluator(const XprType& op, const Device& device)
+      : m_impl(op.expression(), device)
+  {
+    EIGEN_STATIC_ASSERT((NumDims >= 5), YOU_MADE_A_PROGRAMMING_MISTAKE);
+
+    m_paddingValue = op.padding_value();
+
+    const typename TensorEvaluator<ArgType, Device>::Dimensions& input_dims = m_impl.dimensions();
+
+    // Cache a few variables.
+    if (static_cast<int>(Layout) == static_cast<int>(ColMajor)) {
+      m_inputDepth = input_dims[0];
+      m_inputPlanes = input_dims[1];
+      m_inputRows = input_dims[2];
+      m_inputCols = input_dims[3];
+    } else {
+      m_inputDepth = input_dims[NumInputDims-1];
+      m_inputPlanes = input_dims[NumInputDims-2];
+      m_inputRows = input_dims[NumInputDims-3];
+      m_inputCols = input_dims[NumInputDims-4];
+    }
+
+    m_plane_strides = op.plane_strides();
+    m_row_strides = op.row_strides();
+    m_col_strides = op.col_strides();
+
+    // Input strides and effective input/patch size
+    m_in_plane_strides = op.in_plane_strides();
+    m_in_row_strides = op.in_row_strides();
+    m_in_col_strides = op.in_col_strides();
+    m_plane_inflate_strides = op.plane_inflate_strides();
+    m_row_inflate_strides = op.row_inflate_strides();
+    m_col_inflate_strides = op.col_inflate_strides();
+
+    // The "effective" spatial size after inflating data with zeros.
+    m_input_planes_eff = (m_inputPlanes - 1) * m_plane_inflate_strides + 1;
+    m_input_rows_eff = (m_inputRows - 1) * m_row_inflate_strides + 1;
+    m_input_cols_eff = (m_inputCols - 1) * m_col_inflate_strides + 1;
+    m_patch_planes_eff = op.patch_planes() + (op.patch_planes() - 1) * (m_in_plane_strides - 1);
+    m_patch_rows_eff = op.patch_rows() + (op.patch_rows() - 1) * (m_in_row_strides - 1);
+    m_patch_cols_eff = op.patch_cols() + (op.patch_cols() - 1) * (m_in_col_strides - 1);
+
+    if (op.padding_explicit()) {
+      m_outputPlanes = numext::ceil((m_input_planes_eff + op.padding_top_z() + op.padding_bottom_z() - m_patch_planes_eff + 1.f) / static_cast<float>(m_plane_strides));
+      m_outputRows = numext::ceil((m_input_rows_eff + op.padding_top() + op.padding_bottom() - m_patch_rows_eff + 1.f) / static_cast<float>(m_row_strides));
+      m_outputCols = numext::ceil((m_input_cols_eff + op.padding_left() + op.padding_right() - m_patch_cols_eff + 1.f) / static_cast<float>(m_col_strides));
+      m_planePaddingTop = op.padding_top_z();
+      m_rowPaddingTop = op.padding_top();
+      m_colPaddingLeft = op.padding_left();
+    } else {
+      // Computing padding from the type
+      switch (op.padding_type()) {
+        case PADDING_VALID:
+          m_outputPlanes = numext::ceil((m_input_planes_eff - m_patch_planes_eff + 1.f) / static_cast<float>(m_plane_strides));
+          m_outputRows = numext::ceil((m_input_rows_eff - m_patch_rows_eff + 1.f) / static_cast<float>(m_row_strides));
+          m_outputCols = numext::ceil((m_input_cols_eff - m_patch_cols_eff + 1.f) / static_cast<float>(m_col_strides));
+          m_planePaddingTop = 0;
+          m_rowPaddingTop = 0;
+          m_colPaddingLeft = 0;
+          break;
+        case PADDING_SAME: {
+          m_outputPlanes = numext::ceil(m_input_planes_eff / static_cast<float>(m_plane_strides));
+          m_outputRows = numext::ceil(m_input_rows_eff / static_cast<float>(m_row_strides));
+          m_outputCols = numext::ceil(m_input_cols_eff / static_cast<float>(m_col_strides));
+          const Index dz = m_outputPlanes * m_plane_strides + m_patch_planes_eff - 1 - m_input_planes_eff;
+          const Index dy = m_outputRows * m_row_strides + m_patch_rows_eff - 1 - m_input_rows_eff;
+          const Index dx = m_outputCols * m_col_strides + m_patch_cols_eff - 1 - m_input_cols_eff;
+          m_planePaddingTop = dz - dz / 2;
+          m_rowPaddingTop = dy - dy / 2;
+          m_colPaddingLeft = dx - dx / 2;
+          break;
+        }
+        default:
+          eigen_assert(false && "unexpected padding");
+      }
+    }
+    eigen_assert(m_outputRows > 0);
+    eigen_assert(m_outputCols > 0);
+    eigen_assert(m_outputPlanes > 0);
+
+    // Dimensions for result of extraction.
+    if (static_cast<int>(Layout) == static_cast<int>(ColMajor)) {
+      // ColMajor
+      // 0: depth
+      // 1: patch_planes
+      // 2: patch_rows
+      // 3: patch_cols
+      // 4: number of patches
+      // 5 and beyond: anything else (such as batch).
+      m_dimensions[0] = input_dims[0];
+      m_dimensions[1] = op.patch_planes();
+      m_dimensions[2] = op.patch_rows();
+      m_dimensions[3] = op.patch_cols();
+      m_dimensions[4] = m_outputPlanes * m_outputRows * m_outputCols;
+      for (int i = 5; i < NumDims; ++i) {
+        m_dimensions[i] = input_dims[i-1];
+      }
+    } else {
+      // RowMajor
+      // NumDims-1: depth
+      // NumDims-2: patch_planes
+      // NumDims-3: patch_rows
+      // NumDims-4: patch_cols
+      // NumDims-5: number of patches
+      // NumDims-6 and beyond: anything else (such as batch).
+      m_dimensions[NumDims-1] = input_dims[NumInputDims-1];
+      m_dimensions[NumDims-2] = op.patch_planes();
+      m_dimensions[NumDims-3] = op.patch_rows();
+      m_dimensions[NumDims-4] = op.patch_cols();
+      m_dimensions[NumDims-5] = m_outputPlanes * m_outputRows * m_outputCols;
+      for (int i = NumDims-6; i >= 0; --i) {
+        m_dimensions[i] = input_dims[i];
+      }
+    }
+
+    // Strides for the output tensor.
+    if (static_cast<int>(Layout) == static_cast<int>(ColMajor)) {
+      m_rowStride = m_dimensions[1];
+      m_colStride = m_dimensions[2] * m_rowStride;
+      m_patchStride = m_colStride * m_dimensions[3] * m_dimensions[0];
+      m_otherStride = m_patchStride * m_dimensions[4];
+    } else {
+      m_rowStride = m_dimensions[NumDims-2];
+      m_colStride = m_dimensions[NumDims-3] * m_rowStride;
+      m_patchStride = m_colStride * m_dimensions[NumDims-4] * m_dimensions[NumDims-1];
+      m_otherStride = m_patchStride * m_dimensions[NumDims-5];
+    }
+
+    // Strides for navigating through the input tensor.
+    m_planeInputStride = m_inputDepth;
+    m_rowInputStride = m_inputDepth * m_inputPlanes;
+    m_colInputStride = m_inputDepth * m_inputRows * m_inputPlanes;
+    m_otherInputStride = m_inputDepth * m_inputRows * m_inputCols * m_inputPlanes;
+
+    m_outputPlanesRows = m_outputPlanes * m_outputRows;
+
+    // Fast representations of different variables.
+    m_fastOtherStride = internal::TensorIntDivisor<Index>(m_otherStride);
+    m_fastPatchStride = internal::TensorIntDivisor<Index>(m_patchStride);
+    m_fastColStride = internal::TensorIntDivisor<Index>(m_colStride);
+    m_fastRowStride = internal::TensorIntDivisor<Index>(m_rowStride);
+    m_fastInputRowStride = internal::TensorIntDivisor<Index>(m_row_inflate_strides);
+    m_fastInputColStride = internal::TensorIntDivisor<Index>(m_col_inflate_strides);
+    m_fastInputPlaneStride = internal::TensorIntDivisor<Index>(m_plane_inflate_strides);
+    m_fastInputColsEff = internal::TensorIntDivisor<Index>(m_input_cols_eff);
+    m_fastOutputPlanes = internal::TensorIntDivisor<Index>(m_outputPlanes);
+    m_fastOutputPlanesRows = internal::TensorIntDivisor<Index>(m_outputPlanesRows);
+
+    if (static_cast<int>(Layout) == static_cast<int>(ColMajor)) {
+      m_fastOutputDepth = internal::TensorIntDivisor<Index>(m_dimensions[0]);
+    } else {
+      m_fastOutputDepth = internal::TensorIntDivisor<Index>(m_dimensions[NumDims-1]);
+    }
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Dimensions& dimensions() const { return m_dimensions; }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool evalSubExprsIfNeeded(Scalar* /*data*/) {
+    m_impl.evalSubExprsIfNeeded(NULL);
+    return true;
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void cleanup() {
+    m_impl.cleanup();
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType coeff(Index index) const
+  {
+    // Patch index corresponding to the passed in index.
+    const Index patchIndex = index / m_fastPatchStride;
+
+    // Spatial offset within the patch. This has to be translated into 3D
+    // coordinates within the patch.
+    const Index patchOffset = (index - patchIndex * m_patchStride) / m_fastOutputDepth;
+
+    // Batch, etc.
+    const Index otherIndex = (NumDims == 5) ? 0 : index / m_fastOtherStride;
+    const Index patch3DIndex = (NumDims == 5) ? patchIndex : (index - otherIndex * m_otherStride) / m_fastPatchStride;
+
+    // Calculate column index in the input original tensor.
+    const Index colIndex = patch3DIndex / m_fastOutputPlanesRows;
+    const Index colOffset = patchOffset / m_fastColStride;
+    const Index inputCol = colIndex * m_col_strides + colOffset * m_in_col_strides - m_colPaddingLeft;
+    const Index origInputCol = (m_col_inflate_strides == 1) ? inputCol : ((inputCol >= 0) ? (inputCol / m_fastInputColStride) : 0);
+    if (inputCol < 0 || inputCol >= m_input_cols_eff ||
+        ((m_col_inflate_strides != 1) && (inputCol != origInputCol * m_col_inflate_strides))) {
+      return Scalar(m_paddingValue);
+    }
+
+    // Calculate row index in the original input tensor.
+    const Index rowIndex = (patch3DIndex - colIndex * m_outputPlanesRows) / m_fastOutputPlanes;
+    const Index rowOffset = (patchOffset - colOffset * m_colStride) / m_fastRowStride;
+    const Index inputRow = rowIndex * m_row_strides + rowOffset * m_in_row_strides - m_rowPaddingTop;
+    const Index origInputRow = (m_row_inflate_strides == 1) ? inputRow : ((inputRow >= 0) ? (inputRow / m_fastInputRowStride) : 0);
+    if (inputRow < 0 || inputRow >= m_input_rows_eff ||
+        ((m_row_inflate_strides != 1) && (inputRow != origInputRow * m_row_inflate_strides))) {
+      return Scalar(m_paddingValue);
+    }
+
+    // Calculate plane index in the original input tensor.
+    const Index planeIndex = (patch3DIndex - m_outputPlanes * (colIndex * m_outputRows + rowIndex));
+    const Index planeOffset = patchOffset - colOffset * m_colStride - rowOffset * m_rowStride;
+    const Index inputPlane = planeIndex * m_plane_strides + planeOffset * m_in_plane_strides - m_planePaddingTop;
+    const Index origInputPlane = (m_plane_inflate_strides == 1) ? inputPlane : ((inputPlane >= 0) ? (inputPlane / m_fastInputPlaneStride) : 0);
+    if (inputPlane < 0 || inputPlane >= m_input_planes_eff ||
+        ((m_plane_inflate_strides != 1) && (inputPlane != origInputPlane * m_plane_inflate_strides))) {
+      return Scalar(m_paddingValue);
+    }
+
+    const int depth_index = static_cast<int>(Layout) == static_cast<int>(ColMajor) ? 0 : NumDims - 1;
+    const Index depth = index - (index / m_fastOutputDepth) * m_dimensions[depth_index];
+
+    const Index inputIndex = depth +
+        origInputRow * m_rowInputStride +
+        origInputCol * m_colInputStride +
+        origInputPlane * m_planeInputStride +
+        otherIndex * m_otherInputStride;
+
+    return m_impl.coeff(inputIndex);
+  }
+
+  template<int LoadMode>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketReturnType packet(Index index) const
+  {
+    EIGEN_STATIC_ASSERT((PacketSize > 1), YOU_MADE_A_PROGRAMMING_MISTAKE)
+    eigen_assert(index+PacketSize-1 < dimensions().TotalSize());
+
+    if (m_in_row_strides != 1 || m_in_col_strides != 1 || m_row_inflate_strides != 1 || m_col_inflate_strides != 1 ||
+        m_in_plane_strides != 1 || m_plane_inflate_strides != 1) {
+      return packetWithPossibleZero(index);
+    }
+
+    const Index indices[2] = {index, index + PacketSize - 1};
+    const Index patchIndex = indices[0] / m_fastPatchStride;
+    if (patchIndex != indices[1] / m_fastPatchStride) {
+      return packetWithPossibleZero(index);
+    }
+    const Index otherIndex = (NumDims == 5) ? 0 : indices[0] / m_fastOtherStride;
+    eigen_assert(otherIndex == indices[1] / m_fastOtherStride);
+
+    // Find the offset of the element wrt the location of the first element.
+    const Index patchOffsets[2] = {(indices[0] - patchIndex * m_patchStride) / m_fastOutputDepth,
+                                   (indices[1] - patchIndex * m_patchStride) / m_fastOutputDepth};
+
+    const Index patch3DIndex = (NumDims == 5) ? patchIndex : (indices[0] - otherIndex * m_otherStride) / m_fastPatchStride;
+    eigen_assert(patch3DIndex == (indices[1] - otherIndex * m_otherStride) / m_fastPatchStride);
+
+    const Index colIndex = patch3DIndex / m_fastOutputPlanesRows;
+    const Index colOffsets[2] = {
+      patchOffsets[0] / m_fastColStride,
+      patchOffsets[1] / m_fastColStride};
+
+    // Calculate col indices in the original input tensor.
+    const Index inputCols[2] = {
+      colIndex * m_col_strides + colOffsets[0] - m_colPaddingLeft,
+      colIndex * m_col_strides + colOffsets[1] - m_colPaddingLeft};
+    if (inputCols[1] < 0 || inputCols[0] >= m_inputCols) {
+      return internal::pset1<PacketReturnType>(Scalar(m_paddingValue));
+    }
+
+    if (inputCols[0] != inputCols[1]) {
+      return packetWithPossibleZero(index);
+    }
+
+    const Index rowIndex = (patch3DIndex - colIndex * m_outputPlanesRows) / m_fastOutputPlanes;
+    const Index rowOffsets[2] = {
+      (patchOffsets[0] - colOffsets[0] * m_colStride) / m_fastRowStride,
+      (patchOffsets[1] - colOffsets[1] * m_colStride) / m_fastRowStride};
+    eigen_assert(rowOffsets[0] <= rowOffsets[1]);
+    // Calculate col indices in the original input tensor.
+    const Index inputRows[2] = {
+      rowIndex * m_row_strides + rowOffsets[0] - m_rowPaddingTop,
+      rowIndex * m_row_strides + rowOffsets[1] - m_rowPaddingTop};
+
+    if (inputRows[1] < 0 || inputRows[0] >= m_inputRows) {
+      return internal::pset1<PacketReturnType>(Scalar(m_paddingValue));
+    }
+
+    if (inputRows[0] != inputRows[1]) {
+      return packetWithPossibleZero(index);
+    }
+
+    const Index planeIndex = (patch3DIndex - m_outputPlanes * (colIndex * m_outputRows + rowIndex));
+    const Index planeOffsets[2] = {
+      patchOffsets[0] - colOffsets[0] * m_colStride - rowOffsets[0] * m_rowStride,
+      patchOffsets[1] - colOffsets[1] * m_colStride - rowOffsets[1] * m_rowStride};
+    eigen_assert(planeOffsets[0] <= planeOffsets[1]);
+    const Index inputPlanes[2] = {
+      planeIndex * m_plane_strides + planeOffsets[0] - m_planePaddingTop,
+      planeIndex * m_plane_strides + planeOffsets[1] - m_planePaddingTop};
+
+    if (inputPlanes[1] < 0 || inputPlanes[0] >= m_inputPlanes) {
+      return internal::pset1<PacketReturnType>(Scalar(m_paddingValue));
+    }
+
+    if (inputPlanes[0] >= 0 && inputPlanes[1] < m_inputPlanes) {
+      // no padding
+      const int depth_index = static_cast<int>(Layout) == static_cast<int>(ColMajor) ? 0 : NumDims - 1;
+      const Index depth = index - (index / m_fastOutputDepth) * m_dimensions[depth_index];
+      const Index inputIndex = depth +
+          inputRows[0] * m_rowInputStride +
+          inputCols[0] * m_colInputStride +
+          m_planeInputStride * inputPlanes[0] +
+          otherIndex * m_otherInputStride;
+      return m_impl.template packet<Unaligned>(inputIndex);
+    }
+
+    return packetWithPossibleZero(index);
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorOpCost
+  costPerCoeff(bool vectorized) const {
+    const double compute_cost =
+        10 * TensorOpCost::DivCost<Index>() + 21 * TensorOpCost::MulCost<Index>() +
+        8 * TensorOpCost::AddCost<Index>();
+    return TensorOpCost(0, 0, compute_cost, vectorized, PacketSize);
+  }
+
+  EIGEN_DEVICE_FUNC Scalar* data() const { return NULL; }
+
+  const TensorEvaluator<ArgType, Device>& impl() const { return m_impl; }
+
+  Index planePaddingTop() const { return m_planePaddingTop; }
+  Index rowPaddingTop() const { return m_rowPaddingTop; }
+  Index colPaddingLeft() const { return m_colPaddingLeft; }
+  Index outputPlanes() const { return m_outputPlanes; }
+  Index outputRows() const { return m_outputRows; }
+  Index outputCols() const { return m_outputCols; }
+  Index userPlaneStride() const { return m_plane_strides; }
+  Index userRowStride() const { return m_row_strides; }
+  Index userColStride() const { return m_col_strides; }
+  Index userInPlaneStride() const { return m_in_plane_strides; }
+  Index userInRowStride() const { return m_in_row_strides; }
+  Index userInColStride() const { return m_in_col_strides; }
+  Index planeInflateStride() const { return m_plane_inflate_strides; }
+  Index rowInflateStride() const { return m_row_inflate_strides; }
+  Index colInflateStride() const { return m_col_inflate_strides; }
+
+ protected:
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketReturnType packetWithPossibleZero(Index index) const
+  {
+    EIGEN_ALIGN_MAX typename internal::remove_const<CoeffReturnType>::type values[PacketSize];
+    for (int i = 0; i < PacketSize; ++i) {
+      values[i] = coeff(index+i);
+    }
+    PacketReturnType rslt = internal::pload<PacketReturnType>(values);
+    return rslt;
+  }
+
+  Dimensions m_dimensions;
+
+  // Parameters passed to the costructor.
+  Index m_plane_strides;
+  Index m_row_strides;
+  Index m_col_strides;
+
+  Index m_outputPlanes;
+  Index m_outputRows;
+  Index m_outputCols;
+
+  Index m_planePaddingTop;
+  Index m_rowPaddingTop;
+  Index m_colPaddingLeft;
+
+  Index m_in_plane_strides;
+  Index m_in_row_strides;
+  Index m_in_col_strides;
+
+  Index m_plane_inflate_strides;
+  Index m_row_inflate_strides;
+  Index m_col_inflate_strides;
+
+  // Cached input size.
+  Index m_inputDepth;
+  Index m_inputPlanes;
+  Index m_inputRows;
+  Index m_inputCols;
+
+  // Other cached variables.
+  Index m_outputPlanesRows;
+
+  // Effective input/patch post-inflation size.
+  Index m_input_planes_eff;
+  Index m_input_rows_eff;
+  Index m_input_cols_eff;
+  Index m_patch_planes_eff;
+  Index m_patch_rows_eff;
+  Index m_patch_cols_eff;
+
+  // Strides for the output tensor.
+  Index m_otherStride;
+  Index m_patchStride;
+  Index m_rowStride;
+  Index m_colStride;
+
+  // Strides for the input tensor.
+  Index m_planeInputStride;
+  Index m_rowInputStride;
+  Index m_colInputStride;
+  Index m_otherInputStride;
+
+  internal::TensorIntDivisor<Index> m_fastOtherStride;
+  internal::TensorIntDivisor<Index> m_fastPatchStride;
+  internal::TensorIntDivisor<Index> m_fastColStride;
+  internal::TensorIntDivisor<Index> m_fastRowStride;
+  internal::TensorIntDivisor<Index> m_fastInputPlaneStride;
+  internal::TensorIntDivisor<Index> m_fastInputRowStride;
+  internal::TensorIntDivisor<Index> m_fastInputColStride;
+  internal::TensorIntDivisor<Index> m_fastInputColsEff;
+  internal::TensorIntDivisor<Index> m_fastOutputPlanesRows;
+  internal::TensorIntDivisor<Index> m_fastOutputPlanes;
+  internal::TensorIntDivisor<Index> m_fastOutputDepth;
+
+  Scalar m_paddingValue;
+
+  TensorEvaluator<ArgType, Device> m_impl;
+};
+
+
+} // end namespace Eigen
+
+#endif // EIGEN_CXX11_TENSOR_TENSOR_VOLUME_PATCH_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorReduction.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorReduction.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorReduction.h	(revision 3762)
@@ -0,0 +1,781 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2014 Benoit Steiner <benoit.steiner.goog@gmail.com>
+// Copyright (C) 2016 Mehdi Goli, Codeplay Software Ltd <eigen@codeplay.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CXX11_TENSOR_TENSOR_REDUCTION_H
+#define EIGEN_CXX11_TENSOR_TENSOR_REDUCTION_H
+
+namespace Eigen {
+
+/** \class TensorReduction
+  * \ingroup CXX11_Tensor_Module
+  *
+  * \brief Tensor reduction class.
+  *
+  */
+
+namespace internal {
+  template<typename Op, typename Dims, typename XprType,template <class> class MakePointer_ >
+  struct traits<TensorReductionOp<Op, Dims, XprType, MakePointer_> >
+ : traits<XprType>
+{
+  typedef traits<XprType> XprTraits;
+  typedef typename XprTraits::Scalar Scalar;
+  typedef typename XprTraits::StorageKind StorageKind;
+  typedef typename XprTraits::Index Index;
+  typedef typename XprType::Nested Nested;
+  static const int NumDimensions = XprTraits::NumDimensions - array_size<Dims>::value;
+  static const int Layout = XprTraits::Layout;
+
+  template <class T> struct MakePointer {
+    // Intermediate typedef to workaround MSVC issue.
+    typedef MakePointer_<T> MakePointerT;
+    typedef typename MakePointerT::Type Type;
+  };
+};
+
+template<typename Op, typename Dims, typename XprType, template <class> class MakePointer_>
+struct eval<TensorReductionOp<Op, Dims, XprType, MakePointer_>, Eigen::Dense>
+{
+  typedef const TensorReductionOp<Op, Dims, XprType, MakePointer_>& type;
+};
+
+template<typename Op, typename Dims, typename XprType, template <class> class MakePointer_>
+struct nested<TensorReductionOp<Op, Dims, XprType, MakePointer_>, 1, typename eval<TensorReductionOp<Op, Dims, XprType, MakePointer_> >::type>
+{
+  typedef TensorReductionOp<Op, Dims, XprType, MakePointer_> type;
+};
+
+
+template <typename OutputDims> struct DimInitializer {
+  template <typename InputDims, typename ReducedDims> EIGEN_DEVICE_FUNC
+  static void run(const InputDims& input_dims,
+                  const array<bool, internal::array_size<InputDims>::value>& reduced,
+                  OutputDims* output_dims, ReducedDims* reduced_dims) {
+    const int NumInputDims = internal::array_size<InputDims>::value;
+    int outputIndex = 0;
+    int reduceIndex = 0;
+    for (int i = 0; i < NumInputDims; ++i) {
+      if (reduced[i]) {
+        (*reduced_dims)[reduceIndex] = input_dims[i];
+        ++reduceIndex;
+      } else {
+        (*output_dims)[outputIndex] = input_dims[i];
+        ++outputIndex;
+      }
+    }
+  }
+};
+
+template <> struct DimInitializer<Sizes<> > {
+  template <typename InputDims, typename Index, size_t Rank> EIGEN_DEVICE_FUNC
+  static void run(const InputDims& input_dims, const array<bool, Rank>&,
+                  Sizes<>*, array<Index, Rank>* reduced_dims) {
+    const int NumInputDims = internal::array_size<InputDims>::value;
+    for (int i = 0; i < NumInputDims; ++i) {
+      (*reduced_dims)[i] = input_dims[i];
+    }
+  }
+};
+
+
+template <typename ReducedDims, int NumTensorDims, int Layout>
+struct are_inner_most_dims {
+  static const bool value = false;
+};
+template <typename ReducedDims, int NumTensorDims, int Layout>
+struct preserve_inner_most_dims {
+  static const bool value = false;
+};
+
+#if EIGEN_HAS_CONSTEXPR && EIGEN_HAS_VARIADIC_TEMPLATES
+template <typename ReducedDims, int NumTensorDims>
+struct are_inner_most_dims<ReducedDims, NumTensorDims, ColMajor>{
+  static const bool tmp1 = indices_statically_known_to_increase<ReducedDims>();
+  static const bool tmp2 = index_statically_eq<ReducedDims>(0, 0);
+  static const bool tmp3 = index_statically_eq<ReducedDims>(array_size<ReducedDims>::value-1, array_size<ReducedDims>::value-1);
+  static const bool value = tmp1 & tmp2 & tmp3;
+};
+template <typename ReducedDims, int NumTensorDims>
+struct are_inner_most_dims<ReducedDims, NumTensorDims, RowMajor>{
+  static const bool tmp1 = indices_statically_known_to_increase<ReducedDims>();
+  static const bool tmp2 = index_statically_eq<ReducedDims>(0, NumTensorDims - array_size<ReducedDims>::value);
+  static const bool tmp3 = index_statically_eq<ReducedDims>(array_size<ReducedDims>::value - 1, NumTensorDims - 1);
+  static const bool value = tmp1 & tmp2 & tmp3;
+
+};
+template <typename ReducedDims, int NumTensorDims>
+struct preserve_inner_most_dims<ReducedDims, NumTensorDims, ColMajor>{
+  static const bool tmp1 = indices_statically_known_to_increase<ReducedDims>();
+  static const bool tmp2 = index_statically_gt<ReducedDims>(0, 0);
+  static const bool value = tmp1 & tmp2;
+
+};
+template <typename ReducedDims, int NumTensorDims>
+struct preserve_inner_most_dims<ReducedDims, NumTensorDims, RowMajor>{
+  static const bool tmp1 = indices_statically_known_to_increase<ReducedDims>();
+  static const bool tmp2 = index_statically_lt<ReducedDims>(array_size<ReducedDims>::value - 1, NumTensorDims - 1);
+  static const bool value = tmp1 & tmp2;
+};
+#endif
+
+
+template <int DimIndex, typename Self, typename Op>
+struct GenericDimReducer {
+  static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reduce(const Self& self, typename Self::Index firstIndex, Op& reducer, typename Self::CoeffReturnType* accum) {
+    EIGEN_STATIC_ASSERT((DimIndex > 0), YOU_MADE_A_PROGRAMMING_MISTAKE);
+    for (int j = 0; j < self.m_reducedDims[DimIndex]; ++j) {
+      const typename Self::Index input = firstIndex + j * self.m_reducedStrides[DimIndex];
+      GenericDimReducer<DimIndex-1, Self, Op>::reduce(self, input, reducer, accum);
+    }
+  }
+};
+template <typename Self, typename Op>
+struct GenericDimReducer<0, Self, Op> {
+  static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reduce(const Self& self, typename Self::Index firstIndex, Op& reducer, typename Self::CoeffReturnType* accum) {
+    for (int j = 0; j < self.m_reducedDims[0]; ++j) {
+      const typename Self::Index input = firstIndex + j * self.m_reducedStrides[0];
+      reducer.reduce(self.m_impl.coeff(input), accum);
+    }
+  }
+};
+template <typename Self, typename Op>
+struct GenericDimReducer<-1, Self, Op> {
+  static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reduce(const Self& self, typename Self::Index index, Op& reducer, typename Self::CoeffReturnType* accum) {
+    reducer.reduce(self.m_impl.coeff(index), accum);
+  }
+};
+
+template <typename Self, typename Op, bool Vectorizable = (Self::InputPacketAccess & Op::PacketAccess)>
+struct InnerMostDimReducer {
+  static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE typename Self::CoeffReturnType reduce(const Self& self, typename Self::Index firstIndex, typename Self::Index numValuesToReduce, Op& reducer) {
+    typename Self::CoeffReturnType accum = reducer.initialize();
+    for (typename Self::Index j = 0; j < numValuesToReduce; ++j) {
+      reducer.reduce(self.m_impl.coeff(firstIndex + j), &accum);
+    }
+    return reducer.finalize(accum);
+  }
+};
+
+template <typename Self, typename Op>
+struct InnerMostDimReducer<Self, Op, true> {
+  static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE typename Self::CoeffReturnType reduce(const Self& self, typename Self::Index firstIndex, typename Self::Index numValuesToReduce, Op& reducer) {
+    const int packetSize = internal::unpacket_traits<typename Self::PacketReturnType>::size;
+    const typename Self::Index VectorizedSize = (numValuesToReduce / packetSize) * packetSize;
+    typename Self::PacketReturnType p = reducer.template initializePacket<typename Self::PacketReturnType>();
+    for (typename Self::Index j = 0; j < VectorizedSize; j += packetSize) {
+      reducer.reducePacket(self.m_impl.template packet<Unaligned>(firstIndex + j), &p);
+    }
+    typename Self::CoeffReturnType accum = reducer.initialize();
+    for (typename Self::Index j = VectorizedSize; j < numValuesToReduce; ++j) {
+      reducer.reduce(self.m_impl.coeff(firstIndex + j), &accum);
+    }
+    return reducer.finalizeBoth(accum, p);
+  }
+};
+
+template <int DimIndex, typename Self, typename Op, bool vectorizable = (Self::InputPacketAccess & Op::PacketAccess)>
+struct InnerMostDimPreserver {
+  static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reduce(const Self&, typename Self::Index, Op&, typename Self::PacketReturnType*) {
+    eigen_assert(false && "should never be called");
+  }
+};
+
+template <int DimIndex, typename Self, typename Op>
+struct InnerMostDimPreserver<DimIndex, Self, Op, true> {
+  static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reduce(const Self& self, typename Self::Index firstIndex, Op& reducer, typename Self::PacketReturnType* accum) {
+    EIGEN_STATIC_ASSERT((DimIndex > 0), YOU_MADE_A_PROGRAMMING_MISTAKE);
+    for (typename Self::Index j = 0; j < self.m_reducedDims[DimIndex]; ++j) {
+      const typename Self::Index input = firstIndex + j * self.m_reducedStrides[DimIndex];
+      InnerMostDimPreserver<DimIndex-1, Self, Op>::reduce(self, input, reducer, accum);
+    }
+  }
+};
+
+template <typename Self, typename Op>
+struct InnerMostDimPreserver<0, Self, Op, true> {
+  static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reduce(const Self& self, typename Self::Index firstIndex, Op& reducer, typename Self::PacketReturnType* accum) {
+    for (typename Self::Index j = 0; j < self.m_reducedDims[0]; ++j) {
+      const typename Self::Index input = firstIndex + j * self.m_reducedStrides[0];
+      reducer.reducePacket(self.m_impl.template packet<Unaligned>(input), accum);
+    }
+  }
+};
+template <typename Self, typename Op>
+struct InnerMostDimPreserver<-1, Self, Op, true> {
+  static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reduce(const Self&, typename Self::Index, Op&, typename Self::PacketReturnType*) {
+    eigen_assert(false && "should never be called");
+  }
+};
+
+// Default full reducer
+template <typename Self, typename Op, typename Device, bool Vectorizable = (Self::InputPacketAccess & Op::PacketAccess)>
+struct FullReducer {
+  static const bool HasOptimizedImplementation = false;
+
+  static EIGEN_DEVICE_FUNC void run(const Self& self, Op& reducer, const Device&, typename Self::CoeffReturnType* output) {
+    const typename Self::Index num_coeffs = array_prod(self.m_impl.dimensions());
+    *output = InnerMostDimReducer<Self, Op, Vectorizable>::reduce(self, 0, num_coeffs, reducer);
+  }
+};
+
+
+#ifdef EIGEN_USE_THREADS
+// Multithreaded full reducers
+template <typename Self, typename Op,
+          bool Vectorizable = (Self::InputPacketAccess & Op::PacketAccess)>
+struct FullReducerShard {
+  static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(const Self& self, typename Self::Index firstIndex,
+                  typename Self::Index numValuesToReduce, Op& reducer,
+                  typename Self::CoeffReturnType* output) {
+    *output = InnerMostDimReducer<Self, Op, Vectorizable>::reduce(
+        self, firstIndex, numValuesToReduce, reducer);
+  }
+};
+
+// Multithreaded full reducer
+template <typename Self, typename Op, bool Vectorizable>
+struct FullReducer<Self, Op, ThreadPoolDevice, Vectorizable> {
+  static const bool HasOptimizedImplementation = !Op::IsStateful;
+  static const int PacketSize =
+      unpacket_traits<typename Self::PacketReturnType>::size;
+
+  // launch one reducer per thread and accumulate the result.
+  static void run(const Self& self, Op& reducer, const ThreadPoolDevice& device,
+                  typename Self::CoeffReturnType* output) {
+    typedef typename Self::Index Index;
+    const Index num_coeffs = array_prod(self.m_impl.dimensions());
+    if (num_coeffs == 0) {
+      *output = reducer.finalize(reducer.initialize());
+      return;
+    }
+    const TensorOpCost cost =
+        self.m_impl.costPerCoeff(Vectorizable) +
+        TensorOpCost(0, 0, internal::functor_traits<Op>::Cost, Vectorizable,
+                     PacketSize);
+    const int num_threads = TensorCostModel<ThreadPoolDevice>::numThreads(
+        num_coeffs, cost, device.numThreads());
+    if (num_threads == 1) {
+      *output =
+          InnerMostDimReducer<Self, Op, Vectorizable>::reduce(self, 0, num_coeffs, reducer);
+      return;
+    }
+    const Index blocksize =
+        std::floor<Index>(static_cast<float>(num_coeffs) / num_threads);
+    const Index numblocks = blocksize > 0 ? num_coeffs / blocksize : 0;
+    eigen_assert(num_coeffs >= numblocks * blocksize);
+
+    Barrier barrier(internal::convert_index<unsigned int>(numblocks));
+    MaxSizeVector<typename Self::CoeffReturnType> shards(numblocks, reducer.initialize());
+    for (Index i = 0; i < numblocks; ++i) {
+      device.enqueue_with_barrier(&barrier, &FullReducerShard<Self, Op, Vectorizable>::run,
+                                  self, i * blocksize, blocksize, reducer,
+                                  &shards[i]);
+    }
+    typename Self::CoeffReturnType finalShard;
+    if (numblocks * blocksize < num_coeffs) {
+      finalShard = InnerMostDimReducer<Self, Op, Vectorizable>::reduce(
+          self, numblocks * blocksize, num_coeffs - numblocks * blocksize,
+          reducer);
+    } else {
+      finalShard = reducer.initialize();
+    }
+    barrier.Wait();
+
+    for (Index i = 0; i < numblocks; ++i) {
+      reducer.reduce(shards[i], &finalShard);
+    }
+    *output = reducer.finalize(finalShard);
+  }
+};
+
+#endif
+
+
+// Default inner reducer
+template <typename Self, typename Op, typename Device>
+struct InnerReducer {
+  static const bool HasOptimizedImplementation = false;
+
+  EIGEN_DEVICE_FUNC static bool run(const Self&, Op&, const Device&, typename Self::CoeffReturnType*, typename Self::Index, typename Self::Index) {
+    eigen_assert(false && "Not implemented");
+    return true;
+  }
+};
+
+// Default outer reducer
+template <typename Self, typename Op, typename Device>
+struct OuterReducer {
+  static const bool HasOptimizedImplementation = false;
+
+  EIGEN_DEVICE_FUNC static bool run(const Self&, Op&, const Device&, typename Self::CoeffReturnType*, typename Self::Index, typename Self::Index) {
+    eigen_assert(false && "Not implemented");
+    return true;
+  }
+};
+
+
+#if defined(EIGEN_USE_GPU) && defined(__CUDACC__)
+template <int B, int N, typename S, typename R, typename I>
+__global__ void FullReductionKernel(R, const S, I, typename S::CoeffReturnType*, unsigned int*);
+
+
+#ifdef EIGEN_HAS_CUDA_FP16
+template <typename S, typename R, typename I>
+__global__ void ReductionInitFullReduxKernelHalfFloat(R, const S, I, half2*);
+template <int B, int N, typename S, typename R, typename I>
+__global__ void FullReductionKernelHalfFloat(R, const S, I, half*, half2*);
+template <int NPT, typename S, typename R, typename I>
+__global__ void InnerReductionKernelHalfFloat(R, const S, I, I, half*);
+
+#endif
+
+template <int NPT, typename S, typename R, typename I>
+__global__ void InnerReductionKernel(R, const S, I, I, typename S::CoeffReturnType*);
+
+template <int NPT, typename S, typename R, typename I>
+__global__ void OuterReductionKernel(R, const S, I, I, typename S::CoeffReturnType*);
+#endif
+
+}  // end namespace internal
+
+
+template <typename Op, typename Dims, typename XprType,  template <class> class MakePointer_>
+class TensorReductionOp : public TensorBase<TensorReductionOp<Op, Dims, XprType, MakePointer_>, ReadOnlyAccessors> {
+  public:
+    typedef typename Eigen::internal::traits<TensorReductionOp>::Scalar Scalar;
+    typedef typename Eigen::NumTraits<Scalar>::Real RealScalar;
+    typedef typename internal::remove_const<typename XprType::CoeffReturnType>::type CoeffReturnType;
+    typedef typename Eigen::internal::nested<TensorReductionOp>::type Nested;
+    typedef typename Eigen::internal::traits<TensorReductionOp>::StorageKind StorageKind;
+    typedef typename Eigen::internal::traits<TensorReductionOp>::Index Index;
+
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    TensorReductionOp(const XprType& expr, const Dims& dims) : m_expr(expr), m_dims(dims)
+    { }
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    TensorReductionOp(const XprType& expr, const Dims& dims, const Op& reducer) : m_expr(expr), m_dims(dims), m_reducer(reducer)
+    { }
+
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const XprType& expression() const { return m_expr; }
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const Dims& dims() const { return m_dims; }
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const Op& reducer() const { return m_reducer; }
+
+  protected:
+    typename XprType::Nested m_expr;
+    const Dims m_dims;
+    const Op m_reducer;
+};
+
+
+// Eval as rvalue
+template<typename Op, typename Dims, typename ArgType, template <class> class MakePointer_, typename Device>
+struct TensorEvaluator<const TensorReductionOp<Op, Dims, ArgType, MakePointer_>, Device>
+{
+  typedef TensorReductionOp<Op, Dims, ArgType, MakePointer_> XprType;
+  typedef typename XprType::Index Index;
+  typedef ArgType ChildType;
+  typedef typename TensorEvaluator<ArgType, Device>::Dimensions InputDimensions;
+  static const int NumInputDims = internal::array_size<InputDimensions>::value;
+  static const int NumReducedDims = internal::array_size<Dims>::value;
+  static const int NumOutputDims = NumInputDims - NumReducedDims;
+  typedef typename internal::conditional<NumOutputDims==0, Sizes<>, DSizes<Index, NumOutputDims> >::type Dimensions;
+  typedef typename XprType::Scalar Scalar;
+  typedef TensorEvaluator<const TensorReductionOp<Op, Dims, ArgType, MakePointer_>, Device> Self;
+  static const bool InputPacketAccess = TensorEvaluator<ArgType, Device>::PacketAccess;
+  typedef typename internal::remove_const<typename XprType::CoeffReturnType>::type CoeffReturnType;
+  typedef typename PacketType<CoeffReturnType, Device>::type PacketReturnType;
+  static const int PacketSize = internal::unpacket_traits<PacketReturnType>::size;
+
+  enum {
+    IsAligned = false,
+    PacketAccess = Self::InputPacketAccess && Op::PacketAccess,
+    Layout = TensorEvaluator<ArgType, Device>::Layout,
+    CoordAccess = false,  // to be implemented
+    RawAccess = false
+  };
+
+  static const bool ReducingInnerMostDims = internal::are_inner_most_dims<Dims, NumInputDims, Layout>::value;
+  static const bool PreservingInnerMostDims = internal::preserve_inner_most_dims<Dims, NumInputDims, Layout>::value;
+  static const bool RunningFullReduction = (NumOutputDims==0);
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorEvaluator(const XprType& op, const Device& device)
+      : m_impl(op.expression(), device), m_reducer(op.reducer()), m_result(NULL), m_device(device), m_xpr_dims(op.dims())
+  {
+    EIGEN_STATIC_ASSERT((NumInputDims >= NumReducedDims), YOU_MADE_A_PROGRAMMING_MISTAKE);
+    EIGEN_STATIC_ASSERT((!ReducingInnerMostDims | !PreservingInnerMostDims | (NumReducedDims == NumInputDims)),
+                        YOU_MADE_A_PROGRAMMING_MISTAKE);
+
+    // Build the bitmap indicating if an input dimension is reduced or not.
+    for (int i = 0; i < NumInputDims; ++i) {
+      m_reduced[i] = false;
+    }
+    for (int i = 0; i < NumReducedDims; ++i) {
+      eigen_assert(op.dims()[i] >= 0);
+      eigen_assert(op.dims()[i] < NumInputDims);
+      m_reduced[op.dims()[i]] = true;
+    }
+
+    const typename TensorEvaluator<ArgType, Device>::Dimensions& input_dims = m_impl.dimensions();
+    internal::DimInitializer<Dimensions>::run(input_dims, m_reduced, &m_dimensions, &m_reducedDims);
+
+    // Precompute output strides.
+    if (NumOutputDims > 0) {
+      if (static_cast<int>(Layout) == static_cast<int>(ColMajor)) {
+        m_outputStrides[0] = 1;
+        for (int i = 1; i < NumOutputDims; ++i) {
+          m_outputStrides[i] = m_outputStrides[i - 1] * m_dimensions[i - 1];
+        }
+      } else {
+        m_outputStrides.back() = 1;
+        for (int i = NumOutputDims - 2; i >= 0; --i) {
+          m_outputStrides[i] = m_outputStrides[i + 1] * m_dimensions[i + 1];
+        }
+      }
+    }
+
+    // Precompute input strides.
+    if (NumInputDims > 0) {
+      array<Index, NumInputDims> input_strides;
+      if (static_cast<int>(Layout) == static_cast<int>(ColMajor)) {
+        input_strides[0] = 1;
+        for (int i = 1; i < NumInputDims; ++i) {
+          input_strides[i] = input_strides[i-1] * input_dims[i-1];
+        }
+      } else {
+        input_strides.back() = 1;
+        for (int i = NumInputDims - 2; i >= 0; --i) {
+          input_strides[i] = input_strides[i + 1] * input_dims[i + 1];
+        }
+      }
+
+      int outputIndex = 0;
+      int reduceIndex = 0;
+      for (int i = 0; i < NumInputDims; ++i) {
+        if (m_reduced[i]) {
+          m_reducedStrides[reduceIndex] = input_strides[i];
+          ++reduceIndex;
+        } else {
+          m_preservedStrides[outputIndex] = input_strides[i];
+          ++outputIndex;
+        }
+      }
+    }
+
+    // Special case for full reductions
+    if (NumOutputDims == 0) {
+      m_preservedStrides[0] = internal::array_prod(input_dims);
+    }
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Dimensions& dimensions() const { return m_dimensions; }
+
+  EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC bool evalSubExprsIfNeeded(typename MakePointer_<CoeffReturnType>::Type data) {
+    m_impl.evalSubExprsIfNeeded(NULL);
+
+    // Use the FullReducer if possible.
+    if ((RunningFullReduction && RunningOnSycl) ||(RunningFullReduction &&
+        internal::FullReducer<Self, Op, Device>::HasOptimizedImplementation &&
+        ((RunningOnGPU && (m_device.majorDeviceVersion() >= 3)) ||
+         !RunningOnGPU))) {
+      bool need_assign = false;
+      if (!data) {
+        m_result = static_cast<CoeffReturnType*>(m_device.allocate(sizeof(CoeffReturnType)));
+        data = m_result;
+        need_assign = true;
+      }
+      Op reducer(m_reducer);
+      internal::FullReducer<Self, Op, Device>::run(*this, reducer, m_device, data);
+      return need_assign;
+    }
+    else if(RunningOnSycl){
+      const Index num_values_to_reduce = internal::array_prod(m_reducedDims);
+      const Index num_coeffs_to_preserve = internal::array_prod(m_dimensions);
+      if (!data) {
+        data = static_cast<CoeffReturnType*>(m_device.allocate(sizeof(CoeffReturnType) * num_coeffs_to_preserve));
+        m_result = data;
+      }
+      Op reducer(m_reducer);
+      internal::InnerReducer<Self, Op, Device>::run(*this, reducer, m_device, data, num_values_to_reduce, num_coeffs_to_preserve);
+      return (m_result != NULL);
+    }
+
+    // Attempt to use an optimized reduction.
+    else if (RunningOnGPU && (m_device.majorDeviceVersion() >= 3)) {
+      bool reducing_inner_dims = true;
+      for (int i = 0; i < NumReducedDims; ++i) {
+        if (static_cast<int>(Layout) == static_cast<int>(ColMajor)) {
+          reducing_inner_dims &= m_reduced[i];
+        } else {
+          reducing_inner_dims &= m_reduced[NumInputDims - 1 - i];
+        }
+      }
+      if (internal::InnerReducer<Self, Op, Device>::HasOptimizedImplementation &&
+          (reducing_inner_dims || ReducingInnerMostDims)) {
+        const Index num_values_to_reduce = internal::array_prod(m_reducedDims);
+        const Index num_coeffs_to_preserve = internal::array_prod(m_dimensions);
+        if (!data) {
+          if (num_coeffs_to_preserve < 1024 && num_values_to_reduce > num_coeffs_to_preserve && num_values_to_reduce > 128) {
+            data = static_cast<CoeffReturnType*>(m_device.allocate(sizeof(CoeffReturnType) * num_coeffs_to_preserve));
+            m_result = data;
+          }
+          else {
+            return true;
+          }
+        }
+        Op reducer(m_reducer);
+        if (internal::InnerReducer<Self, Op, Device>::run(*this, reducer, m_device, data, num_values_to_reduce, num_coeffs_to_preserve)) {
+          if (m_result) {
+            m_device.deallocate(m_result);
+            m_result = NULL;
+          }
+          return true;
+        } else {
+          return (m_result != NULL);
+        }
+      }
+
+      bool preserving_inner_dims = true;
+      for (int i = 0; i < NumReducedDims; ++i) {
+        if (static_cast<int>(Layout) == static_cast<int>(ColMajor)) {
+          preserving_inner_dims &= m_reduced[NumInputDims - 1 - i];
+        } else {
+          preserving_inner_dims &= m_reduced[i];
+        }
+      }
+      if (internal::OuterReducer<Self, Op, Device>::HasOptimizedImplementation &&
+          preserving_inner_dims) {
+        const Index num_values_to_reduce = internal::array_prod(m_reducedDims);
+        const Index num_coeffs_to_preserve = internal::array_prod(m_dimensions);
+        if (!data) {
+          if (num_coeffs_to_preserve < 1024 && num_values_to_reduce > num_coeffs_to_preserve && num_values_to_reduce > 32) {
+            data = static_cast<CoeffReturnType*>(m_device.allocate(sizeof(CoeffReturnType) * num_coeffs_to_preserve));
+            m_result = data;
+          }
+          else {
+            return true;
+          }
+        }
+        Op reducer(m_reducer);
+        if (internal::OuterReducer<Self, Op, Device>::run(*this, reducer, m_device, data, num_values_to_reduce, num_coeffs_to_preserve)) {
+          if (m_result) {
+            m_device.deallocate(m_result);
+            m_result = NULL;
+          }
+          return true;
+        } else {
+          return (m_result != NULL);
+        }
+      }
+    }
+    return true;
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void cleanup() {
+    m_impl.cleanup();
+    if (m_result) {
+      m_device.deallocate(m_result);
+      m_result = NULL;
+    }
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType coeff(Index index) const
+  {
+    if ((RunningOnSycl || RunningFullReduction || RunningOnGPU) && m_result) {
+      return *(m_result + index);
+    }
+    Op reducer(m_reducer);
+    if (ReducingInnerMostDims || RunningFullReduction) {
+      const Index num_values_to_reduce =
+        (static_cast<int>(Layout) == static_cast<int>(ColMajor)) ? m_preservedStrides[0] : m_preservedStrides[NumPreservedStrides - 1];
+      return internal::InnerMostDimReducer<Self, Op>::reduce(*this, firstInput(index),
+                                                             num_values_to_reduce, reducer);
+    } else {
+      typename Self::CoeffReturnType accum = reducer.initialize();
+      internal::GenericDimReducer<NumReducedDims-1, Self, Op>::reduce(*this, firstInput(index), reducer, &accum);
+      return reducer.finalize(accum);
+    }
+  }
+
+  // TODO(bsteiner): provide a more efficient implementation.
+  template<int LoadMode>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketReturnType packet(Index index) const
+  {
+    EIGEN_STATIC_ASSERT((PacketSize > 1), YOU_MADE_A_PROGRAMMING_MISTAKE)
+    eigen_assert(index + PacketSize - 1 < Index(internal::array_prod(dimensions())));
+
+    if (RunningOnGPU && m_result) {
+      return internal::pload<PacketReturnType>(m_result + index);
+    }
+
+    EIGEN_ALIGN_MAX typename internal::remove_const<CoeffReturnType>::type values[PacketSize];
+    if (ReducingInnerMostDims) {
+      const Index num_values_to_reduce =
+        (static_cast<int>(Layout) == static_cast<int>(ColMajor)) ? m_preservedStrides[0] : m_preservedStrides[NumPreservedStrides - 1];
+      const Index firstIndex = firstInput(index);
+      for (Index i = 0; i < PacketSize; ++i) {
+        Op reducer(m_reducer);
+        values[i] = internal::InnerMostDimReducer<Self, Op>::reduce(*this, firstIndex + i * num_values_to_reduce,
+                                                                    num_values_to_reduce, reducer);
+      }
+    } else if (PreservingInnerMostDims) {
+      const Index firstIndex = firstInput(index);
+      const int innermost_dim = (static_cast<int>(Layout) == static_cast<int>(ColMajor)) ? 0 : NumOutputDims - 1;
+      // TBD: extend this the the n innermost dimensions that we preserve.
+      if (((firstIndex % m_dimensions[innermost_dim]) + PacketSize - 1) < m_dimensions[innermost_dim]) {
+        Op reducer(m_reducer);
+        typename Self::PacketReturnType accum = reducer.template initializePacket<typename Self::PacketReturnType>();
+        internal::InnerMostDimPreserver<NumReducedDims-1, Self, Op>::reduce(*this, firstIndex, reducer, &accum);
+        return reducer.finalizePacket(accum);
+      } else {
+        for (int i = 0; i < PacketSize; ++i) {
+          values[i] = coeff(index + i);
+        }
+      }
+    } else {
+      for (int i = 0; i < PacketSize; ++i) {
+        values[i] = coeff(index + i);
+      }
+    }
+    PacketReturnType rslt = internal::pload<PacketReturnType>(values);
+    return rslt;
+  }
+
+  // Must be called after evalSubExprsIfNeeded().
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorOpCost costPerCoeff(bool vectorized) const {
+    if (RunningFullReduction && m_result) {
+      return TensorOpCost(sizeof(CoeffReturnType), 0, 0, vectorized, PacketSize);
+    } else {
+      const Index num_values_to_reduce = internal::array_prod(m_reducedDims);
+      const double compute_cost = num_values_to_reduce * internal::functor_traits<Op>::Cost;
+      return m_impl.costPerCoeff(vectorized) * num_values_to_reduce +
+          TensorOpCost(0, 0, compute_cost, vectorized, PacketSize);
+    }
+  }
+
+  EIGEN_DEVICE_FUNC typename MakePointer_<Scalar>::Type data() const { return m_result; }
+  /// required by sycl in order to extract the accessor
+  const TensorEvaluator<ArgType, Device>& impl() const { return m_impl; }
+  /// added for sycl in order to construct the buffer from the sycl device
+  const Device& device() const{return m_device;}
+  /// added for sycl in order to re-construct the reduction eval on the device for the sub-kernel
+  const Dims& xprDims() const {return m_xpr_dims;}
+
+
+  private:
+  template <int, typename, typename> friend struct internal::GenericDimReducer;
+  template <typename, typename, bool> friend struct internal::InnerMostDimReducer;
+  template <int, typename, typename, bool> friend struct internal::InnerMostDimPreserver;
+  template <typename S, typename O, typename D, bool V> friend struct internal::FullReducer;
+#ifdef EIGEN_USE_THREADS
+  template <typename S, typename O, bool V> friend struct internal::FullReducerShard;
+#endif
+#if defined(EIGEN_USE_GPU) && defined(__CUDACC__)
+  template <int B, int N, typename S, typename R, typename I> friend void internal::FullReductionKernel(R, const S, I, typename S::CoeffReturnType*, unsigned int*);
+#ifdef EIGEN_HAS_CUDA_FP16
+  template <typename S, typename R, typename I> friend void internal::ReductionInitFullReduxKernelHalfFloat(R, const S, I, half2*);
+  template <int B, int N, typename S, typename R, typename I> friend void internal::FullReductionKernelHalfFloat(R, const S, I, half*, half2*);
+  template <int NPT, typename S, typename R, typename I> friend void internal::InnerReductionKernelHalfFloat(R, const S, I, I, half*);
+#endif
+  template <int NPT, typename S, typename R, typename I> friend void internal::InnerReductionKernel(R, const S, I, I, typename S::CoeffReturnType*);
+
+  template <int NPT, typename S, typename R, typename I> friend void internal::OuterReductionKernel(R, const S, I, I, typename S::CoeffReturnType*);
+#endif
+
+  template <typename S, typename O, typename D> friend struct internal::InnerReducer;
+
+  // Returns the Index in the input tensor of the first value that needs to be
+  // used to compute the reduction at output index "index".
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Index firstInput(Index index) const {
+    if (ReducingInnerMostDims) {
+      if (static_cast<int>(Layout) == static_cast<int>(ColMajor)) {
+        return index * m_preservedStrides[0];
+      } else {
+        return index * m_preservedStrides[NumPreservedStrides - 1];
+      }
+    }
+    // TBD: optimize the case where we preserve the innermost dimensions.
+    Index startInput = 0;
+    if (static_cast<int>(Layout) == static_cast<int>(ColMajor)) {
+      for (int i = NumOutputDims - 1; i > 0; --i) {
+        // This is index_i in the output tensor.
+        const Index idx = index / m_outputStrides[i];
+        startInput += idx * m_preservedStrides[i];
+        index -= idx * m_outputStrides[i];
+      }
+      if (PreservingInnerMostDims) {
+        eigen_assert(m_preservedStrides[0] == 1);
+        startInput += index;
+      } else {
+        startInput += index * m_preservedStrides[0];
+      }
+    } else {
+      for (int i = 0; i < NumOutputDims - 1; ++i) {
+        // This is index_i in the output tensor.
+        const Index idx = index / m_outputStrides[i];
+        startInput += idx * m_preservedStrides[i];
+        index -= idx * m_outputStrides[i];
+      }
+      if (PreservingInnerMostDims) {
+        eigen_assert(m_preservedStrides[NumPreservedStrides - 1] == 1);
+        startInput += index;
+      } else {
+        startInput += index * m_preservedStrides[NumPreservedStrides - 1];
+      }
+    }
+    return startInput;
+  }
+
+  // Bitmap indicating if an input dimension is reduced or not.
+  array<bool, NumInputDims> m_reduced;
+  // Dimensions of the output of the operation.
+  Dimensions m_dimensions;
+  // Precomputed strides for the output tensor.
+  array<Index, NumOutputDims> m_outputStrides;
+  // Subset of strides of the input tensor for the non-reduced dimensions.
+  // Indexed by output dimensions.
+  static const int NumPreservedStrides = max_n_1<NumOutputDims>::size;
+  array<Index, NumPreservedStrides> m_preservedStrides;
+
+  // Subset of strides of the input tensor for the reduced dimensions.
+  // Indexed by reduced dimensions.
+  array<Index, NumReducedDims> m_reducedStrides;
+  // Size of the input dimensions that are reduced.
+  // Indexed by reduced dimensions.
+  array<Index, NumReducedDims> m_reducedDims;
+
+  // Evaluator for the input expression.
+  TensorEvaluator<ArgType, Device> m_impl;
+
+  // Operation to apply for computing the reduction.
+  Op m_reducer;
+
+  // For full reductions
+#if defined(EIGEN_USE_GPU) && defined(__CUDACC__)
+  static const bool RunningOnGPU = internal::is_same<Device, Eigen::GpuDevice>::value;
+  static const bool RunningOnSycl = false;
+#elif defined(EIGEN_USE_SYCL)
+static const bool RunningOnSycl = internal::is_same<typename internal::remove_all<Device>::type, Eigen::SyclDevice>::value;
+static const bool RunningOnGPU = false;
+#else
+  static const bool RunningOnGPU = false;
+  static const bool RunningOnSycl = false;
+#endif
+  typename MakePointer_<CoeffReturnType>::Type m_result;
+
+  const Device& m_device;
+  const Dims& m_xpr_dims;
+};
+
+} // end namespace Eigen
+
+#endif // EIGEN_CXX11_TENSOR_TENSOR_REDUCTION_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorSyclRun.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorSyclRun.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorSyclRun.h	(revision 3762)
@@ -0,0 +1,70 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Mehdi Goli    Codeplay Software Ltd.
+// Ralph Potter  Codeplay Software Ltd.
+// Luke Iwanski  Codeplay Software Ltd.
+// Cummins Chris PhD student at The University of Edinburgh.
+// Contact: <eigen@codeplay.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+/*****************************************************************
+ * TensorSyclRun.h
+ *
+ * \brief:
+ * Schedule_kernel invoke an specialised version of kernel struct. The
+ * specialisation is based on the data dimension in sycl buffer
+ *
+*****************************************************************/
+
+#ifndef UNSUPPORTED_EIGEN_CXX11_SRC_TENSOR_TENSORSYCL_SYCLRUN_HPP
+#define UNSUPPORTED_EIGEN_CXX11_SRC_TENSOR_TENSORSYCL_SYCLRUN_HPP
+
+namespace Eigen {
+namespace TensorSycl {
+/// The run function in tensor sycl convert the expression tree to a buffer
+/// based expression tree;
+/// creates the expression tree for the device with accessor to buffers;
+/// construct the kernel and submit it to the sycl queue.
+template <typename Expr, typename Dev>
+void run(Expr &expr, Dev &dev) {
+  Eigen::TensorEvaluator<Expr, Dev> evaluator(expr, dev);
+  const bool needs_assign = evaluator.evalSubExprsIfNeeded(NULL);
+  if (needs_assign) {
+    typedef  typename internal::createPlaceHolderExpression<Expr>::Type PlaceHolderExpr;
+    auto functors = internal::extractFunctors(evaluator);
+
+    size_t tileSize =dev.m_queue.get_device(). template get_info<cl::sycl::info::device::max_work_group_size>()/2;
+    dev.m_queue.submit([&](cl::sycl::handler &cgh) {
+
+      // create a tuple of accessors from Evaluator
+      auto tuple_of_accessors = internal::createTupleOfAccessors<decltype(evaluator)>(cgh, evaluator);
+      const auto range = utility::tuple::get<0>(tuple_of_accessors).get_range()[0];
+      size_t GRange=range;
+      if (tileSize>GRange) tileSize=GRange;
+      else if(GRange>tileSize){
+        size_t xMode = GRange % tileSize;
+        if (xMode != 0) GRange += (tileSize - xMode);
+      }
+      // run the kernel
+      cgh.parallel_for<PlaceHolderExpr>( cl::sycl::nd_range<1>(cl::sycl::range<1>(GRange), cl::sycl::range<1>(tileSize)), [=](cl::sycl::nd_item<1> itemID) {
+        typedef  typename internal::ConvertToDeviceExpression<Expr>::Type DevExpr;
+        auto device_expr =internal::createDeviceExpression<DevExpr, PlaceHolderExpr>(functors, tuple_of_accessors);
+        auto device_evaluator = Eigen::TensorEvaluator<decltype(device_expr.expr), Eigen::DefaultDevice>(device_expr.expr, Eigen::DefaultDevice());
+        if (itemID.get_global_linear_id() < range) {
+          device_evaluator.evalScalar(static_cast<int>(itemID.get_global_linear_id()));
+        }
+      });
+    });
+    dev.m_queue.throw_asynchronous();
+  }
+
+  evaluator.cleanup();
+}
+}  // namespace TensorSycl
+}  // namespace Eigen
+
+#endif  // UNSUPPORTED_EIGEN_CXX11_SRC_TENSOR_TENSORSYCL_SYCLRUN_HPP
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorIndexList.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorIndexList.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorIndexList.h	(revision 3762)
@@ -0,0 +1,725 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2014 Benoit Steiner <benoit.steiner.goog@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CXX11_TENSOR_TENSOR_INDEX_LIST_H
+#define EIGEN_CXX11_TENSOR_TENSOR_INDEX_LIST_H
+
+
+#if EIGEN_HAS_CONSTEXPR && EIGEN_HAS_VARIADIC_TEMPLATES
+
+#define EIGEN_HAS_INDEX_LIST
+
+namespace Eigen {
+
+/** \internal
+  *
+  * \class TensorIndexList
+  * \ingroup CXX11_Tensor_Module
+  *
+  * \brief Set of classes used to encode a set of Tensor dimensions/indices.
+  *
+  * The indices in the list can be known at compile time or at runtime. A mix
+  * of static and dynamic indices can also be provided if needed. The tensor
+  * code will attempt to take advantage of the indices that are known at
+  * compile time to optimize the code it generates.
+  *
+  * This functionality requires a c++11 compliant compiler. If your compiler
+  * is older you need to use arrays of indices instead.
+  *
+  * Several examples are provided in the cxx11_tensor_index_list.cpp file.
+  *
+  * \sa Tensor
+  */
+
+template <DenseIndex n>
+struct type2index {
+  static const DenseIndex value = n;
+  EIGEN_DEVICE_FUNC constexpr operator DenseIndex() const { return n; }
+  EIGEN_DEVICE_FUNC void set(DenseIndex val) {
+    eigen_assert(val == n);
+  }
+};
+
+// This can be used with IndexPairList to get compile-time constant pairs,
+// such as IndexPairList<type2indexpair<1,2>, type2indexpair<3,4>>().
+template <DenseIndex f, DenseIndex s>
+struct type2indexpair {
+  static const DenseIndex first = f;
+  static const DenseIndex second = s;
+
+  constexpr EIGEN_DEVICE_FUNC operator IndexPair<DenseIndex>() const {
+    return IndexPair<DenseIndex>(f, s);
+  }
+
+  EIGEN_DEVICE_FUNC void set(const IndexPair<DenseIndex>& val) {
+    eigen_assert(val.first == f);
+    eigen_assert(val.second == s);
+  }
+};
+
+
+template<DenseIndex n> struct NumTraits<type2index<n> >
+{
+  typedef DenseIndex Real;
+  enum {
+    IsComplex = 0,
+    RequireInitialization = false,
+    ReadCost = 1,
+    AddCost = 1,
+    MulCost = 1
+  };
+
+  EIGEN_DEVICE_FUNC static inline Real epsilon() { return 0; }
+  EIGEN_DEVICE_FUNC static inline Real dummy_precision() { return 0; }
+  EIGEN_DEVICE_FUNC static inline Real highest() { return n; }
+  EIGEN_DEVICE_FUNC static inline Real lowest() { return n; }
+};
+
+namespace internal {
+template <typename T>
+EIGEN_DEVICE_FUNC void update_value(T& val, DenseIndex new_val) {
+  val = new_val;
+}
+template <DenseIndex n>
+EIGEN_DEVICE_FUNC void update_value(type2index<n>& val, DenseIndex new_val) {
+  val.set(new_val);
+}
+
+template <typename T>
+EIGEN_DEVICE_FUNC void update_value(T& val, IndexPair<DenseIndex> new_val) {
+  val = new_val;
+}
+template <DenseIndex f, DenseIndex s>
+EIGEN_DEVICE_FUNC void update_value(type2indexpair<f, s>& val, IndexPair<DenseIndex> new_val) {
+  val.set(new_val);
+}
+
+
+template <typename T>
+struct is_compile_time_constant {
+  static constexpr bool value = false;
+};
+
+template <DenseIndex idx>
+struct is_compile_time_constant<type2index<idx> > {
+  static constexpr bool value = true;
+};
+template <DenseIndex idx>
+struct is_compile_time_constant<const type2index<idx> > {
+  static constexpr bool value = true;
+};
+template <DenseIndex idx>
+struct is_compile_time_constant<type2index<idx>& > {
+  static constexpr bool value = true;
+};
+template <DenseIndex idx>
+struct is_compile_time_constant<const type2index<idx>& > {
+  static constexpr bool value = true;
+};
+
+template <DenseIndex f, DenseIndex s>
+struct is_compile_time_constant<type2indexpair<f, s> > {
+  static constexpr bool value = true;
+};
+template <DenseIndex f, DenseIndex s>
+struct is_compile_time_constant<const type2indexpair<f, s> > {
+  static constexpr bool value = true;
+};
+template <DenseIndex f, DenseIndex s>
+struct is_compile_time_constant<type2indexpair<f, s>& > {
+  static constexpr bool value = true;
+};
+template <DenseIndex f, DenseIndex s>
+struct is_compile_time_constant<const type2indexpair<f, s>& > {
+  static constexpr bool value = true;
+};
+
+
+template<typename... T>
+struct IndexTuple;
+
+template<typename T, typename... O>
+struct IndexTuple<T, O...> {
+  EIGEN_DEVICE_FUNC constexpr IndexTuple() : head(), others() { }
+  EIGEN_DEVICE_FUNC constexpr IndexTuple(const T& v, const O... o) : head(v), others(o...) { }
+
+  constexpr static int count = 1 + sizeof...(O);
+  T head;
+  IndexTuple<O...> others;
+  typedef T Head;
+  typedef IndexTuple<O...> Other;
+};
+
+template<typename T>
+  struct IndexTuple<T> {
+  EIGEN_DEVICE_FUNC constexpr IndexTuple() : head() { }
+  EIGEN_DEVICE_FUNC constexpr IndexTuple(const T& v) : head(v) { }
+
+  constexpr static int count = 1;
+  T head;
+  typedef T Head;
+};
+
+
+template<int N, typename... T>
+struct IndexTupleExtractor;
+
+template<int N, typename T, typename... O>
+struct IndexTupleExtractor<N, T, O...> {
+
+  typedef typename IndexTupleExtractor<N-1, O...>::ValType ValType;
+
+  EIGEN_DEVICE_FUNC static constexpr ValType& get_val(IndexTuple<T, O...>& val) {
+    return IndexTupleExtractor<N-1, O...>::get_val(val.others);
+  }
+
+  EIGEN_DEVICE_FUNC static constexpr const ValType& get_val(const IndexTuple<T, O...>& val) {
+    return IndexTupleExtractor<N-1, O...>::get_val(val.others);
+  }
+  template <typename V>
+  EIGEN_DEVICE_FUNC static void set_val(IndexTuple<T, O...>& val, V& new_val) {
+    IndexTupleExtractor<N-1, O...>::set_val(val.others, new_val);
+  }
+
+};
+
+template<typename T, typename... O>
+  struct IndexTupleExtractor<0, T, O...> {
+
+  typedef T ValType;
+
+  EIGEN_DEVICE_FUNC static constexpr ValType& get_val(IndexTuple<T, O...>& val) {
+    return val.head;
+  }
+  EIGEN_DEVICE_FUNC static constexpr const ValType& get_val(const IndexTuple<T, O...>& val) {
+    return val.head;
+  }
+  template <typename V>
+  EIGEN_DEVICE_FUNC static void set_val(IndexTuple<T, O...>& val, V& new_val) {
+    val.head = new_val;
+  }
+};
+
+
+
+template <int N, typename T, typename... O>
+EIGEN_DEVICE_FUNC constexpr typename IndexTupleExtractor<N, T, O...>::ValType& array_get(IndexTuple<T, O...>& tuple) {
+  return IndexTupleExtractor<N, T, O...>::get_val(tuple);
+}
+template <int N, typename T, typename... O>
+EIGEN_DEVICE_FUNC constexpr const typename IndexTupleExtractor<N, T, O...>::ValType& array_get(const IndexTuple<T, O...>& tuple) {
+  return IndexTupleExtractor<N, T, O...>::get_val(tuple);
+}
+template <typename T, typename... O>
+  struct array_size<IndexTuple<T, O...> > {
+  static const size_t value = IndexTuple<T, O...>::count;
+};
+template <typename T, typename... O>
+  struct array_size<const IndexTuple<T, O...> > {
+  static const size_t value = IndexTuple<T, O...>::count;
+};
+
+
+
+
+template <DenseIndex Idx, typename ValueT>
+struct tuple_coeff {
+  template <typename... T>
+  EIGEN_DEVICE_FUNC static constexpr ValueT get(const DenseIndex i, const IndexTuple<T...>& t) {
+    //    return array_get<Idx>(t) * (i == Idx) + tuple_coeff<Idx-1>::get(i, t) * (i != Idx);
+    return (i == Idx ? array_get<Idx>(t) : tuple_coeff<Idx-1, ValueT>::get(i, t));
+  }
+  template <typename... T>
+  EIGEN_DEVICE_FUNC static void set(const DenseIndex i, IndexTuple<T...>& t, const ValueT& value) {
+    if (i == Idx) {
+      update_value(array_get<Idx>(t), value);
+    } else {
+      tuple_coeff<Idx-1, ValueT>::set(i, t, value);
+    }
+  }
+
+  template <typename... T>
+  EIGEN_DEVICE_FUNC static constexpr bool value_known_statically(const DenseIndex i, const IndexTuple<T...>& t) {
+    return ((i == Idx) & is_compile_time_constant<typename IndexTupleExtractor<Idx, T...>::ValType>::value) ||
+        tuple_coeff<Idx-1, ValueT>::value_known_statically(i, t);
+  }
+
+  template <typename... T>
+  EIGEN_DEVICE_FUNC static constexpr bool values_up_to_known_statically(const IndexTuple<T...>& t) {
+    return is_compile_time_constant<typename IndexTupleExtractor<Idx, T...>::ValType>::value &&
+        tuple_coeff<Idx-1, ValueT>::values_up_to_known_statically(t);
+  }
+
+  template <typename... T>
+  EIGEN_DEVICE_FUNC static constexpr bool values_up_to_statically_known_to_increase(const IndexTuple<T...>& t) {
+    return is_compile_time_constant<typename IndexTupleExtractor<Idx, T...>::ValType>::value &&
+           is_compile_time_constant<typename IndexTupleExtractor<Idx, T...>::ValType>::value &&
+           array_get<Idx>(t) > array_get<Idx-1>(t) &&
+           tuple_coeff<Idx-1, ValueT>::values_up_to_statically_known_to_increase(t);
+  }
+};
+
+template <typename ValueT>
+struct tuple_coeff<0, ValueT> {
+  template <typename... T>
+  EIGEN_DEVICE_FUNC static constexpr ValueT get(const DenseIndex /*i*/, const IndexTuple<T...>& t) {
+    //  eigen_assert (i == 0);  // gcc fails to compile assertions in constexpr
+    return array_get<0>(t)/* * (i == 0)*/;
+  }
+  template <typename... T>
+  EIGEN_DEVICE_FUNC static void set(const DenseIndex i, IndexTuple<T...>& t, const ValueT value) {
+    eigen_assert (i == 0);
+    update_value(array_get<0>(t), value);
+  }
+  template <typename... T>
+  EIGEN_DEVICE_FUNC static constexpr bool value_known_statically(const DenseIndex i, const IndexTuple<T...>&) {
+    return is_compile_time_constant<typename IndexTupleExtractor<0, T...>::ValType>::value & (i == 0);
+  }
+
+  template <typename... T>
+  EIGEN_DEVICE_FUNC static constexpr bool values_up_to_known_statically(const IndexTuple<T...>&) {
+    return is_compile_time_constant<typename IndexTupleExtractor<0, T...>::ValType>::value;
+  }
+
+  template <typename... T>
+  EIGEN_DEVICE_FUNC static constexpr bool values_up_to_statically_known_to_increase(const IndexTuple<T...>&) {
+    return true;
+  }
+};
+}  // namespace internal
+
+
+
+template<typename FirstType, typename... OtherTypes>
+struct IndexList : internal::IndexTuple<FirstType, OtherTypes...> {
+  EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC constexpr DenseIndex operator[] (const DenseIndex i) const {
+    return internal::tuple_coeff<internal::array_size<internal::IndexTuple<FirstType, OtherTypes...> >::value-1, DenseIndex>::get(i, *this);
+  }
+  EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC constexpr DenseIndex get(const DenseIndex i) const {
+    return internal::tuple_coeff<internal::array_size<internal::IndexTuple<FirstType, OtherTypes...> >::value-1, DenseIndex>::get(i, *this);
+  }
+  EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC void set(const DenseIndex i, const DenseIndex value) {
+    return internal::tuple_coeff<internal::array_size<internal::IndexTuple<FirstType, OtherTypes...> >::value-1, DenseIndex>::set(i, *this, value);
+  }
+
+  EIGEN_DEVICE_FUNC constexpr IndexList(const internal::IndexTuple<FirstType, OtherTypes...>& other) : internal::IndexTuple<FirstType, OtherTypes...>(other) { }
+  EIGEN_DEVICE_FUNC constexpr IndexList(FirstType& first, OtherTypes... other) : internal::IndexTuple<FirstType, OtherTypes...>(first, other...) { }
+  EIGEN_DEVICE_FUNC constexpr IndexList() : internal::IndexTuple<FirstType, OtherTypes...>() { }
+
+  EIGEN_DEVICE_FUNC constexpr bool value_known_statically(const DenseIndex i) const {
+    return internal::tuple_coeff<internal::array_size<internal::IndexTuple<FirstType, OtherTypes...> >::value-1, DenseIndex>::value_known_statically(i, *this);
+  }
+  EIGEN_DEVICE_FUNC constexpr bool all_values_known_statically() const {
+    return internal::tuple_coeff<internal::array_size<internal::IndexTuple<FirstType, OtherTypes...> >::value-1, DenseIndex>::values_up_to_known_statically(*this);
+  }
+
+  EIGEN_DEVICE_FUNC constexpr bool values_statically_known_to_increase() const {
+    return internal::tuple_coeff<internal::array_size<internal::IndexTuple<FirstType, OtherTypes...> >::value-1, DenseIndex>::values_up_to_statically_known_to_increase(*this);
+  }
+};
+
+
+template<typename FirstType, typename... OtherTypes>
+constexpr IndexList<FirstType, OtherTypes...> make_index_list(FirstType val1, OtherTypes... other_vals) {
+  return IndexList<FirstType, OtherTypes...>(val1, other_vals...);
+}
+
+
+template<typename FirstType, typename... OtherTypes>
+struct IndexPairList : internal::IndexTuple<FirstType, OtherTypes...> {
+  EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC constexpr IndexPair<DenseIndex> operator[] (const DenseIndex i) const {
+    return internal::tuple_coeff<internal::array_size<internal::IndexTuple<FirstType, OtherTypes...> >::value-1, IndexPair<DenseIndex>>::get(i, *this);
+  }
+  EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC void set(const DenseIndex i, const IndexPair<DenseIndex> value) {
+    return internal::tuple_coeff<internal::array_size<internal::IndexTuple<FirstType, OtherTypes...>>::value-1, IndexPair<DenseIndex> >::set(i, *this, value);
+  }
+
+  EIGEN_DEVICE_FUNC  constexpr IndexPairList(const internal::IndexTuple<FirstType, OtherTypes...>& other) : internal::IndexTuple<FirstType, OtherTypes...>(other) { }
+  EIGEN_DEVICE_FUNC  constexpr IndexPairList() : internal::IndexTuple<FirstType, OtherTypes...>() { }
+
+  EIGEN_DEVICE_FUNC constexpr bool value_known_statically(const DenseIndex i) const {
+    return internal::tuple_coeff<internal::array_size<internal::IndexTuple<FirstType, OtherTypes...> >::value-1, DenseIndex>::value_known_statically(i, *this);
+  }
+};
+
+namespace internal {
+
+template<typename FirstType, typename... OtherTypes> size_t array_prod(const IndexList<FirstType, OtherTypes...>& sizes) {
+  size_t result = 1;
+  for (int i = 0; i < array_size<IndexList<FirstType, OtherTypes...> >::value; ++i) {
+    result *= sizes[i];
+  }
+  return result;
+}
+
+template<typename FirstType, typename... OtherTypes> struct array_size<IndexList<FirstType, OtherTypes...> > {
+  static const size_t value = array_size<IndexTuple<FirstType, OtherTypes...> >::value;
+};
+template<typename FirstType, typename... OtherTypes> struct array_size<const IndexList<FirstType, OtherTypes...> > {
+  static const size_t value = array_size<IndexTuple<FirstType, OtherTypes...> >::value;
+};
+
+template<typename FirstType, typename... OtherTypes> struct array_size<IndexPairList<FirstType, OtherTypes...> > {
+  static const size_t value = std::tuple_size<std::tuple<FirstType, OtherTypes...> >::value;
+};
+template<typename FirstType, typename... OtherTypes> struct array_size<const IndexPairList<FirstType, OtherTypes...> > {
+  static const size_t value = std::tuple_size<std::tuple<FirstType, OtherTypes...> >::value;
+};
+
+template<DenseIndex N, typename FirstType, typename... OtherTypes> EIGEN_DEVICE_FUNC constexpr DenseIndex array_get(IndexList<FirstType, OtherTypes...>& a) {
+  return IndexTupleExtractor<N, FirstType, OtherTypes...>::get_val(a);
+}
+template<DenseIndex N, typename FirstType, typename... OtherTypes> EIGEN_DEVICE_FUNC constexpr DenseIndex array_get(const IndexList<FirstType, OtherTypes...>& a) {
+  return IndexTupleExtractor<N, FirstType, OtherTypes...>::get_val(a);
+}
+
+template <typename T>
+struct index_known_statically_impl {
+  EIGEN_DEVICE_FUNC static constexpr bool run(const DenseIndex) {
+    return false;
+  }
+};
+
+template <typename FirstType, typename... OtherTypes>
+struct index_known_statically_impl<IndexList<FirstType, OtherTypes...> > {
+  EIGEN_DEVICE_FUNC static constexpr bool run(const DenseIndex i) {
+    return IndexList<FirstType, OtherTypes...>().value_known_statically(i);
+  }
+};
+
+template <typename FirstType, typename... OtherTypes>
+struct index_known_statically_impl<const IndexList<FirstType, OtherTypes...> > {
+  EIGEN_DEVICE_FUNC static constexpr bool run(const DenseIndex i) {
+    return IndexList<FirstType, OtherTypes...>().value_known_statically(i);
+  }
+};
+
+
+template <typename T>
+struct all_indices_known_statically_impl {
+  static constexpr bool run() {
+    return false;
+  }
+};
+
+template <typename FirstType, typename... OtherTypes>
+struct all_indices_known_statically_impl<IndexList<FirstType, OtherTypes...> > {
+  EIGEN_DEVICE_FUNC static constexpr bool run() {
+    return IndexList<FirstType, OtherTypes...>().all_values_known_statically();
+  }
+};
+
+template <typename FirstType, typename... OtherTypes>
+struct all_indices_known_statically_impl<const IndexList<FirstType, OtherTypes...> > {
+  EIGEN_DEVICE_FUNC static constexpr bool run() {
+    return IndexList<FirstType, OtherTypes...>().all_values_known_statically();
+  }
+};
+
+
+template <typename T>
+struct indices_statically_known_to_increase_impl {
+  EIGEN_DEVICE_FUNC static constexpr bool run() {
+    return false;
+  }
+};
+
+template <typename FirstType, typename... OtherTypes>
+  struct indices_statically_known_to_increase_impl<IndexList<FirstType, OtherTypes...> > {
+  EIGEN_DEVICE_FUNC static constexpr bool run() {
+    return Eigen::IndexList<FirstType, OtherTypes...>().values_statically_known_to_increase();
+  }
+};
+
+template <typename FirstType, typename... OtherTypes>
+  struct indices_statically_known_to_increase_impl<const IndexList<FirstType, OtherTypes...> > {
+  EIGEN_DEVICE_FUNC static constexpr bool run() {
+    return Eigen::IndexList<FirstType, OtherTypes...>().values_statically_known_to_increase();
+  }
+};
+
+
+template <typename Tx>
+struct index_statically_eq_impl {
+  EIGEN_DEVICE_FUNC static constexpr bool run(DenseIndex, DenseIndex) {
+    return false;
+  }
+};
+
+template <typename FirstType, typename... OtherTypes>
+struct index_statically_eq_impl<IndexList<FirstType, OtherTypes...> > {
+  EIGEN_DEVICE_FUNC static constexpr bool run(const DenseIndex i, const DenseIndex value) {
+    return IndexList<FirstType, OtherTypes...>().value_known_statically(i) &
+        (IndexList<FirstType, OtherTypes...>().get(i) == value);
+  }
+};
+
+template <typename FirstType, typename... OtherTypes>
+struct index_statically_eq_impl<const IndexList<FirstType, OtherTypes...> > {
+  EIGEN_DEVICE_FUNC static constexpr bool run(const DenseIndex i, const DenseIndex value) {
+    return IndexList<FirstType, OtherTypes...>().value_known_statically(i) &
+        (IndexList<FirstType, OtherTypes...>().get(i) == value);
+  }
+};
+
+
+template <typename T>
+struct index_statically_ne_impl {
+  EIGEN_DEVICE_FUNC static constexpr bool run(DenseIndex, DenseIndex) {
+    return false;
+  }
+};
+
+template <typename FirstType, typename... OtherTypes>
+struct index_statically_ne_impl<IndexList<FirstType, OtherTypes...> > {
+  EIGEN_DEVICE_FUNC static constexpr bool run(const DenseIndex i, const DenseIndex value) {
+    return IndexList<FirstType, OtherTypes...>().value_known_statically(i) &
+        (IndexList<FirstType, OtherTypes...>().get(i) != value);
+  }
+};
+
+template <typename FirstType, typename... OtherTypes>
+struct index_statically_ne_impl<const IndexList<FirstType, OtherTypes...> > {
+  EIGEN_DEVICE_FUNC static constexpr bool run(const DenseIndex i, const DenseIndex value) {
+    return IndexList<FirstType, OtherTypes...>().value_known_statically(i) &
+        (IndexList<FirstType, OtherTypes...>().get(i) != value);
+  }
+};
+
+
+template <typename T>
+struct index_statically_gt_impl {
+  EIGEN_DEVICE_FUNC static constexpr bool run(DenseIndex, DenseIndex) {
+    return false;
+  }
+};
+
+template <typename FirstType, typename... OtherTypes>
+struct index_statically_gt_impl<IndexList<FirstType, OtherTypes...> > {
+  EIGEN_DEVICE_FUNC static constexpr bool run(const DenseIndex i, const DenseIndex value) {
+    return IndexList<FirstType, OtherTypes...>().value_known_statically(i) &
+        (IndexList<FirstType, OtherTypes...>().get(i) > value);
+  }
+};
+
+template <typename FirstType, typename... OtherTypes>
+struct index_statically_gt_impl<const IndexList<FirstType, OtherTypes...> > {
+  EIGEN_DEVICE_FUNC static constexpr bool run(const DenseIndex i, const DenseIndex value) {
+    return IndexList<FirstType, OtherTypes...>().value_known_statically(i) &
+        (IndexList<FirstType, OtherTypes...>().get(i) > value);
+  }
+};
+
+
+
+template <typename T>
+struct index_statically_lt_impl {
+  EIGEN_DEVICE_FUNC static constexpr bool run(DenseIndex, DenseIndex) {
+    return false;
+  }
+};
+
+template <typename FirstType, typename... OtherTypes>
+struct index_statically_lt_impl<IndexList<FirstType, OtherTypes...> > {
+  EIGEN_DEVICE_FUNC static constexpr bool run(const DenseIndex i, const DenseIndex value) {
+    return IndexList<FirstType, OtherTypes...>().value_known_statically(i) &
+        (IndexList<FirstType, OtherTypes...>().get(i) < value);
+  }
+};
+
+template <typename FirstType, typename... OtherTypes>
+struct index_statically_lt_impl<const IndexList<FirstType, OtherTypes...> > {
+  EIGEN_DEVICE_FUNC static constexpr bool run(const DenseIndex i, const DenseIndex value) {
+    return IndexList<FirstType, OtherTypes...>().value_known_statically(i) &
+        (IndexList<FirstType, OtherTypes...>().get(i) < value);
+  }
+};
+
+
+
+template <typename Tx>
+struct index_pair_first_statically_eq_impl {
+  EIGEN_DEVICE_FUNC static constexpr bool run(DenseIndex, DenseIndex) {
+    return false;
+  }
+};
+
+template <typename FirstType, typename... OtherTypes>
+struct index_pair_first_statically_eq_impl<IndexPairList<FirstType, OtherTypes...> > {
+  EIGEN_DEVICE_FUNC static constexpr bool run(const DenseIndex i, const DenseIndex value) {
+    return IndexPairList<FirstType, OtherTypes...>().value_known_statically(i) &
+        (IndexPairList<FirstType, OtherTypes...>().operator[](i).first == value);
+  }
+};
+
+template <typename FirstType, typename... OtherTypes>
+struct index_pair_first_statically_eq_impl<const IndexPairList<FirstType, OtherTypes...> > {
+  EIGEN_DEVICE_FUNC static constexpr bool run(const DenseIndex i, const DenseIndex value) {
+    return IndexPairList<FirstType, OtherTypes...>().value_known_statically(i) &
+        (IndexPairList<FirstType, OtherTypes...>().operator[](i).first == value);
+  }
+};
+
+
+
+template <typename Tx>
+struct index_pair_second_statically_eq_impl {
+  EIGEN_DEVICE_FUNC static constexpr bool run(DenseIndex, DenseIndex) {
+    return false;
+  }
+};
+
+template <typename FirstType, typename... OtherTypes>
+struct index_pair_second_statically_eq_impl<IndexPairList<FirstType, OtherTypes...> > {
+  EIGEN_DEVICE_FUNC static constexpr bool run(const DenseIndex i, const DenseIndex value) {
+    return IndexPairList<FirstType, OtherTypes...>().value_known_statically(i) &
+        (IndexPairList<FirstType, OtherTypes...>().operator[](i).second == value);
+  }
+};
+
+template <typename FirstType, typename... OtherTypes>
+struct index_pair_second_statically_eq_impl<const IndexPairList<FirstType, OtherTypes...> > {
+  EIGEN_DEVICE_FUNC static constexpr bool run(const DenseIndex i, const DenseIndex value) {
+    return IndexPairList<FirstType, OtherTypes...>().value_known_statically(i) &
+        (IndexPairList<FirstType, OtherTypes...>().operator[](i).second == value);
+  }
+};
+
+
+}  // end namespace internal
+}  // end namespace Eigen
+
+#else
+
+namespace Eigen {
+namespace internal {
+
+template <typename T>
+struct index_known_statically_impl {
+  static EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE bool run(const DenseIndex) {
+    return false;
+  }
+};
+
+template <typename T>
+struct all_indices_known_statically_impl {
+  static EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE bool run() {
+    return false;
+  }
+};
+
+template <typename T>
+struct indices_statically_known_to_increase_impl {
+  static EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE bool run() {
+    return false;
+  }
+};
+
+template <typename T>
+struct index_statically_eq_impl {
+  static EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE bool run(DenseIndex, DenseIndex) {
+    return false;
+  }
+};
+
+template <typename T>
+struct index_statically_ne_impl {
+  static EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE bool run(DenseIndex, DenseIndex) {
+    return false;
+  }
+};
+
+template <typename T>
+struct index_statically_gt_impl {
+  static EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE bool run(DenseIndex, DenseIndex) {
+    return false;
+  }
+};
+
+template <typename T>
+struct index_statically_lt_impl {
+  static EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE bool run(DenseIndex, DenseIndex) {
+    return false;
+  }
+};
+
+template <typename Tx>
+struct index_pair_first_statically_eq_impl {
+  static EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE bool run(DenseIndex, DenseIndex) {
+    return false;
+  }
+};
+
+template <typename Tx>
+struct index_pair_second_statically_eq_impl {
+  static EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE bool run(DenseIndex, DenseIndex) {
+    return false;
+  }
+};
+
+
+
+}  // end namespace internal
+}  // end namespace Eigen
+
+#endif
+
+
+namespace Eigen {
+namespace internal {
+template <typename T>
+static EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR bool index_known_statically(DenseIndex i) {
+  return index_known_statically_impl<T>::run(i);
+}
+
+template <typename T>
+static EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR bool all_indices_known_statically() {
+  return all_indices_known_statically_impl<T>::run();
+}
+
+template <typename T>
+static EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR bool indices_statically_known_to_increase() {
+  return indices_statically_known_to_increase_impl<T>::run();
+}
+
+template <typename T>
+static EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR bool index_statically_eq(DenseIndex i, DenseIndex value) {
+  return index_statically_eq_impl<T>::run(i, value);
+}
+
+template <typename T>
+static EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR bool index_statically_ne(DenseIndex i, DenseIndex value) {
+  return index_statically_ne_impl<T>::run(i, value);
+}
+
+template <typename T>
+static EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR bool index_statically_gt(DenseIndex i, DenseIndex value) {
+  return index_statically_gt_impl<T>::run(i, value);
+}
+
+template <typename T>
+static EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR bool index_statically_lt(DenseIndex i, DenseIndex value) {
+  return index_statically_lt_impl<T>::run(i, value);
+}
+
+template <typename T>
+static EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR bool index_pair_first_statically_eq(DenseIndex i, DenseIndex value) {
+  return index_pair_first_statically_eq_impl<T>::run(i, value);
+}
+
+template <typename T>
+static EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR bool index_pair_second_statically_eq(DenseIndex i, DenseIndex value) {
+  return index_pair_second_statically_eq_impl<T>::run(i, value);
+}
+
+}  // end namespace internal
+}  // end namespace Eigen
+
+
+#endif // EIGEN_CXX11_TENSOR_TENSOR_INDEX_LIST_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorContractionThreadPool.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorContractionThreadPool.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorContractionThreadPool.h	(revision 3762)
@@ -0,0 +1,1043 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2014 Benoit Steiner <benoit.steiner.goog@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CXX11_TENSOR_TENSOR_CONTRACTION_THREAD_POOL_H
+#define EIGEN_CXX11_TENSOR_TENSOR_CONTRACTION_THREAD_POOL_H
+
+// evaluator for thread pool device
+#ifdef EIGEN_USE_THREADS
+
+namespace Eigen {
+
+#ifdef EIGEN_USE_SIMPLE_THREAD_POOL
+namespace internal {
+
+template<typename LhsScalar, typename LhsMapper, typename Index>
+struct packLhsArg {
+  LhsScalar* blockA;
+  const LhsMapper& lhs;
+  const Index m_start;
+  const Index k_start;
+  const Index mc;
+  const Index kc;
+};
+
+template<typename LhsScalar, typename RhsScalar, typename RhsMapper, typename OutputMapper, typename Index>
+struct packRhsAndKernelArg {
+  const MaxSizeVector<LhsScalar*>* blockAs;
+  RhsScalar* blockB;
+  const RhsMapper& rhs;
+  OutputMapper& output;
+  const Index m;
+  const Index k;
+  const Index n;
+  const Index mc;
+  const Index kc;
+  const Index nc;
+  const Index num_threads;
+  const Index num_blockAs;
+  const Index max_m;
+  const Index k_block_idx;
+  const Index m_block_idx;
+  const Index n_block_idx;
+  const Index m_blocks;
+  const Index n_blocks;
+  MaxSizeVector<Notification*>* kernel_notifications;
+  const MaxSizeVector<Notification*>* lhs_notifications;
+  const bool need_to_pack;
+};
+
+}  // end namespace internal
+#endif  // EIGEN_USE_SIMPLE_THREAD_POOL
+
+template<typename Indices, typename LeftArgType, typename RightArgType>
+struct TensorEvaluator<const TensorContractionOp<Indices, LeftArgType, RightArgType>, ThreadPoolDevice> :
+    public TensorContractionEvaluatorBase<TensorEvaluator<const TensorContractionOp<Indices, LeftArgType, RightArgType>, ThreadPoolDevice> > {
+
+  typedef ThreadPoolDevice Device;
+
+  typedef TensorEvaluator<const TensorContractionOp<Indices, LeftArgType, RightArgType>, Device> Self;
+  typedef TensorContractionEvaluatorBase<Self> Base;
+
+  typedef TensorContractionOp<Indices, LeftArgType, RightArgType> XprType;
+  typedef typename internal::remove_const<typename XprType::Scalar>::type Scalar;
+  typedef typename XprType::Index Index;
+  typedef typename XprType::CoeffReturnType CoeffReturnType;
+  typedef typename PacketType<CoeffReturnType, Device>::type PacketReturnType;
+
+  enum {
+    Layout = TensorEvaluator<LeftArgType, Device>::Layout,
+  };
+
+  // Most of the code is assuming that both input tensors are ColMajor. If the
+  // inputs are RowMajor, we will "cheat" by swapping the LHS and RHS:
+  // If we want to compute A * B = C, where A is LHS and B is RHS, the code
+  // will pretend B is LHS and A is RHS.
+  typedef typename internal::conditional<
+    static_cast<int>(Layout) == static_cast<int>(ColMajor), LeftArgType, RightArgType>::type EvalLeftArgType;
+  typedef typename internal::conditional<
+    static_cast<int>(Layout) == static_cast<int>(ColMajor), RightArgType, LeftArgType>::type EvalRightArgType;
+
+  static const int LDims =
+      internal::array_size<typename TensorEvaluator<EvalLeftArgType, Device>::Dimensions>::value;
+  static const int RDims =
+      internal::array_size<typename TensorEvaluator<EvalRightArgType, Device>::Dimensions>::value;
+  static const int ContractDims = internal::array_size<Indices>::value;
+
+  typedef array<Index, LDims> left_dim_mapper_t;
+  typedef array<Index, RDims> right_dim_mapper_t;
+
+  typedef array<Index, ContractDims> contract_t;
+  typedef array<Index, LDims - ContractDims> left_nocontract_t;
+  typedef array<Index, RDims - ContractDims> right_nocontract_t;
+
+  static const int NumDims = LDims + RDims - 2 * ContractDims;
+
+  typedef DSizes<Index, NumDims> Dimensions;
+
+  // typedefs needed in evalTo
+  typedef typename internal::remove_const<typename EvalLeftArgType::Scalar>::type LhsScalar;
+  typedef typename internal::remove_const<typename EvalRightArgType::Scalar>::type RhsScalar;
+  typedef typename internal::gebp_traits<LhsScalar, RhsScalar> Traits;
+
+  typedef TensorEvaluator<EvalLeftArgType, Device> LeftEvaluator;
+  typedef TensorEvaluator<EvalRightArgType, Device> RightEvaluator;
+
+  TensorEvaluator(const XprType& op, const Device& device) :
+      Base(op, device) {}
+
+#ifndef EIGEN_USE_SIMPLE_THREAD_POOL
+  template <bool lhs_inner_dim_contiguous, bool rhs_inner_dim_contiguous,
+            bool rhs_inner_dim_reordered, int Alignment>
+  void evalProduct(Scalar* buffer) const {
+    typedef internal::TensorContractionInputMapper<
+        LhsScalar, Index, internal::Lhs, LeftEvaluator, left_nocontract_t,
+        contract_t, internal::packet_traits<LhsScalar>::size,
+        lhs_inner_dim_contiguous, false, Unaligned>
+        LhsMapper;
+    typedef internal::TensorContractionInputMapper<
+        RhsScalar, Index, internal::Rhs, RightEvaluator, right_nocontract_t,
+        contract_t, internal::packet_traits<RhsScalar>::size,
+        rhs_inner_dim_contiguous, rhs_inner_dim_reordered, Unaligned>
+        RhsMapper;
+    typedef internal::blas_data_mapper<Scalar, Index, ColMajor> OutputMapper;
+    typedef internal::gemm_pack_lhs<LhsScalar, Index,
+                                    typename LhsMapper::SubMapper, Traits::mr,
+                                    Traits::LhsProgress, ColMajor>
+        LhsPacker;
+    typedef internal::gemm_pack_rhs<
+        RhsScalar, Index, typename RhsMapper::SubMapper, Traits::nr, ColMajor>
+        RhsPacker;
+    typedef internal::gebp_kernel<LhsScalar, RhsScalar, Index, OutputMapper,
+                                  Traits::mr, Traits::nr, false, false>
+        GebpKernel;
+
+    const Index m = this->m_i_size;
+    const Index n = this->m_j_size;
+    const Index k = this->m_k_size;
+    if (m == 0 || n == 0 || k == 0) return;
+
+    // Compute a set of algorithm parameters:
+    // - kernel block sizes (bm, bn, bk)
+    // - task grain sizes (number of kernels executed per task: gm, gn)
+    // - number of threads
+    // - sharding by row/column
+    // - parallel packing or first lhs then rhs
+    // and some derived parameters:
+    // - number of tasks (nm, nn, nk)
+    // - number of kernels (nm0, nn0)
+    // Unfortunately, all these parameters are tightly interdependent.
+    // So in some cases we first compute approximate values, then compute other
+    // values based on these approximations and then refine the approximations.
+
+    // There are lots of heuristics here. There is some reasoning behind them,
+    // but ultimately they are just tuned on contraction benchmarks for
+    // different input configurations, thread counts and instruction sets.
+    // So feel free to question any of them.
+
+    // Compute whether we want to shard by row or by column.
+    // This is a first approximation, it will be refined later. Since we don't
+    // know number of threads yet we use 2, because what's we are most
+    // interested in at this point is whether it makes sense to use
+    // parallelization at all or not.
+    bool shard_by_col = shardByCol(m, n, 2);
+
+    // First approximation of kernel blocking sizes.
+    // Again, we don't know number of threads yet, so we use 2.
+    Index bm, bn, bk;
+    if (shard_by_col) {
+      internal::TensorContractionBlocking<LhsMapper, RhsMapper, Index,
+                                          internal::ShardByCol>
+          blocking(k, m, n, 2);
+      bm = blocking.mc();
+      bn = blocking.nc();
+      bk = blocking.kc();
+    } else {
+      internal::TensorContractionBlocking<LhsMapper, RhsMapper, Index,
+                                          internal::ShardByRow>
+          blocking(k, m, n, 2);
+      bm = blocking.mc();
+      bn = blocking.nc();
+      bk = blocking.kc();
+    }
+
+    // Compute optimal number of threads.
+    // Note: we use bk instead of k here because we are interested in amount of
+    // _parallelizable_ computations, and computations are not parallelizable
+    // across k dimension.
+    const TensorOpCost cost =
+        contractionCost(m, n, bm, bn, bk, shard_by_col, false);
+    int num_threads = TensorCostModel<ThreadPoolDevice>::numThreads(
+        static_cast<double>(n) * m, cost, this->m_device.numThreads());
+
+    // TODO(dvyukov): this is a stop-gap to prevent regressions while the cost
+    // model is not tuned. Remove this when the cost model is tuned.
+    if (n == 1) num_threads = 1;
+
+    if (num_threads == 1) {
+      // The single-threaded algorithm should be faster in this case.
+      if (n == 1)
+        this->template evalGemv<lhs_inner_dim_contiguous,
+                                rhs_inner_dim_contiguous,
+                                rhs_inner_dim_reordered, Alignment>(buffer);
+      else
+        this->template evalGemm<lhs_inner_dim_contiguous,
+                                rhs_inner_dim_contiguous,
+                                rhs_inner_dim_reordered, Alignment>(buffer);
+      return;
+    }
+
+    // Now that we know number of threads, recalculate sharding and blocking.
+    shard_by_col = shardByCol(m, n, num_threads);
+    if (shard_by_col) {
+      internal::TensorContractionBlocking<LhsMapper, RhsMapper, Index,
+                                          internal::ShardByCol>
+          blocking(k, m, n, num_threads);
+      bm = blocking.mc();
+      bn = blocking.nc();
+      bk = blocking.kc();
+    } else {
+      internal::TensorContractionBlocking<LhsMapper, RhsMapper, Index,
+                                          internal::ShardByRow>
+          blocking(k, m, n, num_threads);
+      bm = blocking.mc();
+      bn = blocking.nc();
+      bk = blocking.kc();
+    }
+
+    // Number of kernels for each dimension.
+    Index nm0 = divup(m, bm);
+    Index nn0 = divup(n, bn);
+    Index nk = divup(k, bk);
+
+    // Calculate task grain size (number of kernels executed per task).
+    // This task size coarsening serves two purposes:
+    // 1. It reduces per-task overheads including synchronization overheads.
+    // 2. It allows to use caches better (reuse the same packed rhs in several
+    // consecutive kernels).
+    Index gm = 1;
+    Index gn = 1;
+    // If we are sharding by column, then we prefer to reduce rows first.
+    if (shard_by_col) {
+      gm = coarsenM(m, n, bm, bn, bk, gn, num_threads, shard_by_col);
+      gn = coarsenN(m, n, bm, bn, bk, gm, num_threads, shard_by_col);
+    } else {
+      gn = coarsenN(m, n, bm, bn, bk, gm, num_threads, shard_by_col);
+      gm = coarsenM(m, n, bm, bn, bk, gn, num_threads, shard_by_col);
+    }
+    // Number of tasks in each dimension.
+    Index nm = divup(nm0, gm);
+    Index nn = divup(nn0, gn);
+
+    // Last by not least, decide whether we want to issue both lhs and rhs
+    // packing in parallel; or issue lhs packing first, and then issue rhs
+    // packing when lhs packing completes (for !shard_by_col lhs and rhs are
+    // swapped). Parallel packing allows more parallelism (for both packing and
+    // kernels), while sequential packing provides better locality (once
+    // a thread finishes rhs packing it proceed to kernels with that rhs).
+    // First, we are interested in parallel packing if there are few tasks.
+    bool parallel_pack = num_threads >= nm * nn;
+    // Also do parallel packing if all data fits into L2$.
+    if (m * bk * Index(sizeof(LhsScalar)) + n * bk * Index(sizeof(RhsScalar)) <=
+        l2CacheSize() * num_threads)
+      parallel_pack = true;
+    // But don't do it if we will use each rhs only once. Locality seems to be
+    // more important in this case.
+    if ((shard_by_col ? nm : nn) == 1) parallel_pack = false;
+
+    LhsMapper lhs(this->m_leftImpl, this->m_left_nocontract_strides,
+                  this->m_i_strides, this->m_left_contracting_strides,
+                  this->m_k_strides);
+
+    RhsMapper rhs(this->m_rightImpl, this->m_right_nocontract_strides,
+                  this->m_j_strides, this->m_right_contracting_strides,
+                  this->m_k_strides);
+
+    Context<LhsPacker, RhsPacker, GebpKernel, LhsMapper, RhsMapper,
+            OutputMapper>(this->m_device, num_threads, lhs, rhs, buffer, m, n,
+                          k, bm, bn, bk, nm, nn, nk, gm, gn, nm0, nn0,
+                          shard_by_col, parallel_pack)
+        .run();
+  }
+
+  // Context coordinates a single parallel gemm operation.
+  template <typename LhsPacker, typename RhsPacker, typename GebpKernel,
+            typename LhsMapper, typename RhsMapper, typename OutputMapper>
+  class Context {
+   public:
+    Context(const Device& device, int num_threads, LhsMapper& lhs,
+            RhsMapper& rhs, Scalar* buffer, Index tm, Index tn, Index tk, Index bm,
+            Index bn, Index bk, Index nm, Index nn, Index nk, Index gm,
+            Index gn, Index nm0, Index nn0, bool shard_by_col,
+            bool parallel_pack)
+        : device_(device),
+          lhs_(lhs),
+          rhs_(rhs),
+          buffer_(buffer),
+          output_(buffer, tm),
+          num_threads_(num_threads),
+          shard_by_col_(shard_by_col),
+          parallel_pack_(parallel_pack),
+          m_(tm),
+          n_(tn),
+          k_(tk),
+          bm_(bm),
+          bn_(bn),
+          bk_(bk),
+          nm_(nm),
+          nn_(nn),
+          nk_(nk),
+          gm_(gm),
+          gn_(gn),
+          nm0_(nm0),
+          nn0_(nn0)
+  {
+      for (Index x = 0; x < P; x++) {
+        // Normal number of notifications for k slice switch is
+        // nm_ + nn_ + nm_ * nn_. However, first P - 1 slices will receive only
+        // nm_ + nn_ notifications, because they will not receive notifications
+        // from preceeding kernels.
+        state_switch_[x] =
+            x == 0
+                ? 1
+                : (parallel_pack_ ? nn_ + nm_ : (shard_by_col_ ? nn_ : nm_)) +
+                      (x == P - 1 ? nm_ * nn_ : 0);
+        state_packing_ready_[x] =
+            parallel_pack_ ? 0 : (shard_by_col_ ? nm_ : nn_);
+        state_kernel_[x] = new std::atomic<uint8_t>*[nm_];
+        for (Index m = 0; m < nm_; m++) {
+          state_kernel_[x][m] = new std::atomic<uint8_t>[nn_];
+          // Kernels generally receive 3 notifications (previous kernel + 2
+          // packing), but the first slice won't get notifications from previous
+          // kernels.
+          for (Index n = 0; n < nn_; n++)
+            state_kernel_[x][m][n].store(
+                (x == 0 ? 0 : 1) + (parallel_pack_ ? 2 : 1),
+                std::memory_order_relaxed);
+        }
+      }
+
+      // Allocate memory for packed rhs/lhs matrices.
+      size_t align = numext::maxi(EIGEN_MAX_ALIGN_BYTES, 1);
+      size_t lhs_size =
+          divup<size_t>(bm_ * bk_ * sizeof(LhsScalar), align) * align;
+      size_t rhs_size =
+          divup<size_t>(bn_ * bk_ * sizeof(RhsScalar), align) * align;
+      packed_mem_ = static_cast<char*>(internal::aligned_malloc(
+          (nm0_ * lhs_size + nn0_ * rhs_size) * std::min<size_t>(nk_, P - 1)));
+      char* mem = static_cast<char*>(packed_mem_);
+      for (Index x = 0; x < numext::mini<Index>(nk_, P - 1); x++) {
+        packed_lhs_[x].resize(nm0_);
+        for (Index m = 0; m < nm0_; m++) {
+          packed_lhs_[x][m] = reinterpret_cast<LhsScalar*>(mem);
+          mem += lhs_size;
+        }
+        packed_rhs_[x].resize(nn0_);
+        for (Index n = 0; n < nn0_; n++) {
+          packed_rhs_[x][n] = reinterpret_cast<RhsScalar*>(mem);
+          mem += rhs_size;
+        }
+      }
+    }
+
+    ~Context() {
+      for (Index x = 0; x < P; x++) {
+        for (Index m = 0; m < nm_; m++) delete[] state_kernel_[x][m];
+        delete[] state_kernel_[x];
+      }
+      internal::aligned_free(packed_mem_);
+    }
+
+    void run() {
+      // Kick off packing of the first slice.
+      signal_switch(0, 1);
+      // Wait for overall completion.
+      // TODO(dvyukov): this wait can lead to deadlock.
+      // If nthreads contractions are concurrently submitted from worker
+      // threads, this wait will block all worker threads and the system will
+      // deadlock.
+      done_.Wait();
+    }
+
+   private:
+    Notification done_;
+    const Device& device_;
+    LhsMapper& lhs_;
+    RhsMapper& rhs_;
+    Scalar* const buffer_;
+    OutputMapper output_;
+    const int num_threads_;
+    const bool shard_by_col_;
+    const bool parallel_pack_;
+    // Matrix sizes.
+    const Index m_;
+    const Index n_;
+    const Index k_;
+    // Block sizes.
+    const Index bm_;
+    const Index bn_;
+    const Index bk_;
+    // Number of tasks.
+    const Index nm_;
+    const Index nn_;
+    const Index nk_;
+    // Task grain sizes (number of kernels executed per task).
+    const Index gm_;
+    const Index gn_;
+    // Number of blocks (this is different from ni_/nn_ because of task size
+    // coarsening).
+    const Index nm0_;
+    const Index nn0_;
+
+    // Parallelization strategy.
+    //
+    // Blocks related to the same k block can run in parallel because they write
+    // to different output blocks. So we parallelize within k slices, this
+    // gives us parallelism level of m x n. Before we can start any kernels
+    // related to k-th slice, we need to issue m lhs packing tasks and n rhs
+    // packing tasks.
+    //
+    // However, there is a bottleneck when we are finishing kernels for k-th
+    // slice (at the very end there is only 1 runnable kernel). To mitigate this
+    // bottleneck we allow kernels from k-th and k+1-th slices to run in
+    // parallel. Note that (m, n, k) and (m, n, k+1) kernels write to the same
+    // output block, so they must not run in parallel.
+    //
+    // This gives us the following dependency graph.
+    // On each k slice we have m x n kernel tasks, m lhs paking tasks and n rhs
+    // packing tasks.
+    // Kernel (m, n, k) can start when:
+    //  - kernel (m, n, k-1) has finished
+    //  - lhs packing (m, k) has finished
+    //  - rhs packing (n, k) has finished
+    // Lhs/rhs packing can start when:
+    //  - all k-1 packing has finished (artificially imposed to limit amount of
+    //  parallel packing)
+    //
+    // On top of that we limit runnable tasks to two consecutive k slices.
+    // This is done to limit amount of memory we need for packed lhs/rhs
+    // (for each k slice we need m*bk + n*bk memory in packed_lhs_/packed_rhs_).
+    //
+    // state_switch_ tracks when we are ready to switch to the next k slice.
+    // state_kernel_[m][n] tracks when we are ready to kick off kernel (m, n).
+    // These variable are rolling over 3 consecutive k slices: first two we are
+    // actively executing + one to track completion of kernels in the second
+    // slice.
+    static const Index P = 3;
+    void* packed_mem_;
+    std::vector<LhsScalar*> packed_lhs_[P - 1];
+    std::vector<RhsScalar*> packed_rhs_[P - 1];
+    std::atomic<uint8_t>** state_kernel_[P];
+    // state_switch_ is frequently modified by worker threads, while other
+    // fields are read-only after constructor. Let's move it to a separate cache
+    // line to reduce cache-coherency traffic.
+    char pad_[128];
+    std::atomic<Index> state_packing_ready_[P];
+    std::atomic<Index> state_switch_[P];
+
+    void pack_lhs(Index m, Index k) {
+      const Index mend = m * gm_ + gm(m);
+      for (Index m1 = m * gm_; m1 < mend; m1++)
+        LhsPacker()(packed_lhs_[k % (P - 1)][m1],
+                    lhs_.getSubMapper(m1 * bm_, k * bk_), bk(k), bm(m1));
+
+      if (!parallel_pack_ && shard_by_col_) {
+        signal_packing(k);
+      } else {
+        signal_switch(k + 1);
+        for (Index n = nn_ - 1; n >= 0; n--) signal_kernel(m, n, k, n == 0);
+      }
+    }
+
+    void pack_rhs(Index n, Index k) {
+      const Index nend = n * gn_ + gn(n);
+      for (Index n1 = n * gn_; n1 < nend; n1++) {
+        if (k == 0) {
+          // Zero the output memory in parallel.
+          // On 10000x2x10000 mm zeroing can easily take half of time.
+          // Zero (bn x m) row. Safe to do here because all kernels that will
+          // write to this memory depend on completion of this task.
+          // Note: don't call device_.memset() here. device_.memset() blocks on
+          // thread pool worker thread, which can lead to underutilization and
+          // deadlocks.
+          memset(buffer_ + n1 * bn_ * m_, 0, bn(n1) * m_ * sizeof(Scalar));
+        }
+        RhsPacker()(packed_rhs_[k % (P - 1)][n1],
+                    rhs_.getSubMapper(k * bk_, n1 * bn_), bk(k), bn(n1));
+      }
+
+      if (parallel_pack_ || shard_by_col_) {
+        signal_switch(k + 1);
+        for (Index m = nm_ - 1; m >= 0; m--) signal_kernel(m, n, k, m == 0);
+      } else {
+        signal_packing(k);
+      }
+    }
+
+    void kernel(Index m, Index n, Index k) {
+      // Note: order of iteration matters here. Iteration over m is innermost
+      // because we want to reuse the same packed rhs in consequetive tasks
+      // (rhs fits into L2$ while lhs only into L3$).
+      const Index nend = n * gn_ + gn(n);
+      const Index mend = m * gm_ + gm(m);
+      if (shard_by_col_) {
+        for (Index n1 = n * gn_; n1 < nend; n1++) {
+          for (Index m1 = m * gm_; m1 < mend; m1++)
+            GebpKernel()(output_.getSubMapper(m1 * bm_, n1 * bn_),
+                         packed_lhs_[k % (P - 1)][m1],
+                         packed_rhs_[k % (P - 1)][n1], bm(m1), bk(k), bn(n1),
+                         Scalar(1), -1, -1, 0, 0);
+        }
+      } else {
+        for (Index m1 = m * gm_; m1 < mend; m1++)
+          for (Index n1 = n * gn_; n1 < nend; n1++) {
+            GebpKernel()(output_.getSubMapper(m1 * bm_, n1 * bn_),
+                         packed_lhs_[k % (P - 1)][m1],
+                         packed_rhs_[k % (P - 1)][n1], bm(m1), bk(k), bn(n1),
+                         Scalar(1), -1, -1, 0, 0);
+          }
+      }
+      signal_kernel(m, n, k + 1, false);
+      signal_switch(k + 2);
+    }
+
+    void signal_packing(Index k) {
+      eigen_assert(!parallel_pack_);
+      Index s = state_packing_ready_[k % P].fetch_sub(1);
+      eigen_assert(s > 0);
+      if (s != 1) return;
+      state_packing_ready_[k % P] = shard_by_col_ ? nm_ : nn_;
+      enqueue_packing(k, shard_by_col_);
+    }
+
+    void signal_kernel(Index m, Index n, Index k, bool sync) {
+      std::atomic<uint8_t>* state = &state_kernel_[k % P][m][n];
+      Index s = state->load();
+      eigen_assert(s > 0);
+      if (s != 1 && state->fetch_sub(1) != 1) return;
+      state->store(parallel_pack_ ? 3 : 2, std::memory_order_relaxed);
+      if (sync)
+        kernel(m, n, k);
+      else
+        device_.enqueueNoNotification([=]() { kernel(m, n, k); });
+    }
+
+    void signal_switch(Index k, Index v = 1) {
+      Index s = state_switch_[k % P].fetch_sub(v);
+      eigen_assert(s >= v);
+      if (s != v) return;
+
+      // Ready to switch to the next k slice.
+      // Reset counter for the next iteration.
+      state_switch_[k % P] =
+          (parallel_pack_ ? nm_ + nn_ : (shard_by_col_ ? nn_ : nm_)) +
+          nm_ * nn_;
+      if (k < nk_) {
+        // Issue lhs/rhs packing. Their completion will in turn kick off
+        // kernels.
+        if (parallel_pack_) {
+          enqueue_packing(k, !shard_by_col_);
+          enqueue_packing(k, shard_by_col_);
+        } else if (shard_by_col_) {
+          enqueue_packing(k, false);
+        } else {
+          enqueue_packing(k, true);
+        }
+
+        // Termination handling.
+        // Because kernel completion signals k + 2 switch, we need to finish nk
+        // + 2 slices without issuing any tasks on nk + 1 slice. So here we
+        // pretend that all nk + 1 packing tasks just finish instantly; so that
+        // nk + 2 switch only waits for completion of nk kernels.
+      } else if (k == nk_) {
+        signal_switch(k + 1,
+                      parallel_pack_ ? nm_ + nn_ : (shard_by_col_ ? nn_ : nm_));
+      } else {
+        done_.Notify();
+      }
+    }
+
+    // Enqueue all rhs/lhs packing for k-th slice.
+    void enqueue_packing(Index k, bool rhs) {
+      enqueue_packing_helper(0, rhs ? nn_ : nm_, k, rhs);
+    }
+
+    void enqueue_packing_helper(Index start, Index end, Index k, bool rhs) {
+      if (end - start == 1) {
+        if (rhs)
+          pack_rhs(start, k);
+        else
+          pack_lhs(start, k);
+      } else {
+        Index mid = (start + end) / 2;
+        device_.enqueueNoNotification(
+            [=]() { enqueue_packing_helper(mid, end, k, rhs); });
+        device_.enqueueNoNotification(
+            [=]() { enqueue_packing_helper(start, mid, k, rhs); });
+      }
+    }
+
+    // Block sizes with accounting for potentially incomplete last block.
+    Index bm(Index m) const { return m + 1 < nm0_ ? bm_ : m_ + bm_ - bm_ * nm0_; }
+    Index bn(Index n) const { return n + 1 < nn0_ ? bn_ : n_ + bn_ - bn_ * nn0_; }
+    Index bk(Index k) const { return k + 1 < nk_ ? bk_ : k_ + bk_ - bk_ * nk_; }
+    // Task grain sizes accounting for potentially incomplete last task.
+    Index gm(Index m) const { return m + 1 < nm_ ? gm_ : nm0_ + gm_ - gm_ * nm_; }
+    Index gn(Index n) const { return n + 1 < nn_ ? gn_ : nn0_ + gn_ - gn_ * nn_; }
+
+    Context(const Context&) = delete;
+    void operator=(const Context&) = delete;
+  };
+
+  // Decide whether we want to shard m x n contraction by columns or by rows.
+  static bool shardByCol(Index m, Index n, Index num_threads) {
+    // Note: we are comparing both n and m against Traits::nr, it is not
+    // a mistake. We are trying to figure out how both n and m will fit into
+    // the main sharding dimension.
+
+    // Sharding by column is the default
+    // ... unless there is enough data for vectorization over rows
+    if (m / num_threads >= Traits::nr &&
+        // and not enough data for vectorization over columns
+        (n / num_threads < Traits::nr ||
+         // ... or barely enough data for vectorization over columns,
+         // but it is not evenly dividable across threads
+         (n / num_threads < 4 * Traits::nr &&
+          (n % (num_threads * Traits::nr)) != 0 &&
+          // ... and it is evenly dividable across threads for rows
+          ((m % (num_threads * Traits::nr)) == 0 ||
+           // .. or it is not evenly dividable for both dimensions but
+           // there is much more data over rows so that corner effects are
+           // mitigated.
+           (m / n >= 6)))))
+      return false;
+    // Wait, or if matrices are just substantially prolonged over the other
+    // dimension.
+    if (n / num_threads < 16 * Traits::nr && m > n * 32) return false;
+    return true;
+  }
+
+  Index coarsenM(Index m, Index n, Index bm, Index bn, Index bk, Index gn,
+                 int num_threads, bool shard_by_col) const {
+    Index gm = 1;
+    Index gm1 = 1;
+    Index nm0 = divup(m, bm);
+    Index nm1 = nm0;
+    for (;;) {
+      // Find the next candidate for m grain size. It needs to result in
+      // different number of blocks. E.g. if we have 10 kernels, we want to try
+      // 5 and 10, but not 6, 7, 8 and 9.
+      while (gm1 <= nm0 && nm1 == divup(nm0, gm1)) gm1++;
+      if (gm1 > nm0) break;
+      // Check the candidate.
+      int res = checkGrain(m, n, bm, bn, bk, gm1, gn, gm, gn, num_threads,
+                           shard_by_col);
+      if (res < 0) break;
+      nm1 = divup(nm0, gm1);
+      if (res == 0) continue;
+      // Commit new grain size.
+      gm = gm1;
+    }
+    return gm;
+  }
+
+  Index coarsenN(Index m, Index n, Index bm, Index bn, Index bk, Index gm,
+                 int num_threads, bool shard_by_col) const {
+    Index gn = 1;
+    Index gn1 = 1;
+    Index nn0 = divup(n, bn);
+    Index nn1 = nn0;
+    for (;;) {
+      while (gn1 <= nn0 && nn1 == divup(nn0, gn1)) gn1++;
+      if (gn1 > nn0) break;
+      int res = checkGrain(m, n, bm, bn, bk, gm, gn1, gm, gn, num_threads,
+                           shard_by_col);
+      if (res < 0) break;
+      nn1 = divup(nn0, gn1);
+      if (res == 0) continue;
+      gn = gn1;
+    }
+    return gn;
+  }
+
+  // checkGrain checks whether grain (gm, gn) is suitable and is better than
+  // (oldgm, oldgn).
+  int checkGrain(Index m, Index n, Index bm, Index bn, Index bk, Index gm,
+                 Index gn, Index oldgm, Index oldgn, int num_threads,
+                 bool shard_by_col) const {
+    const TensorOpCost cost =
+        contractionCost(bm * gm, bn * gn, bm, bn, bk, shard_by_col, true);
+    double taskSize = TensorCostModel<ThreadPoolDevice>::taskSize(
+        static_cast<double>(bm) * gm * bn * gn, cost);
+    // If the task is too small, then we agree on it regardless of anything
+    // else. Otherwise synchronization overheads will dominate.
+    if (taskSize < 1) return 1;
+    // If it is too large, then we reject it and all larger tasks.
+    if (taskSize > 2) return -1;
+    // Now we are in presumably good task size range.
+    // The main deciding factor here is parallelism. Consider that we have 12
+    // kernels and 4 threads. Grains of 2, 3 and 4 all yield good task sizes.
+    // But 2/4 yield 6/3 tasks, which gives us parallelism of 0.75 (at most 3/4
+    // of cores will be busy). While grain size 3 gives us 4 tasks, which gives
+    // us parallelism of 1 (we can load all cores).
+    Index nm0 = divup(m, bm);
+    Index nn0 = divup(n, bn);
+    Index new_tasks = divup(nm0, gm) * divup(nn0, gn);
+    double new_parallelism = static_cast<double>(new_tasks) /
+                             (divup<int>(new_tasks, num_threads) * num_threads);
+    Index old_tasks = divup(nm0, oldgm) * divup(nn0, oldgn);
+    double old_parallelism = static_cast<double>(old_tasks) /
+                             (divup<int>(old_tasks, num_threads) * num_threads);
+    if (new_parallelism > old_parallelism || new_parallelism == 1) return 1;
+    return 0;
+  }
+
+#else  // EIGEN_USE_SIMPLE_THREAD_POOL
+
+  template <bool lhs_inner_dim_contiguous, bool rhs_inner_dim_contiguous, bool rhs_inner_dim_reordered, int Alignment>
+  void evalProduct(Scalar* buffer) const {
+    if (this->m_j_size == 1) {
+      this->template evalGemv<lhs_inner_dim_contiguous, rhs_inner_dim_contiguous, rhs_inner_dim_reordered, Alignment>(buffer);
+      return;
+    }
+
+    evalGemm<lhs_inner_dim_contiguous, rhs_inner_dim_contiguous, rhs_inner_dim_reordered, Alignment>(buffer);
+  }
+
+  template <bool lhs_inner_dim_contiguous, bool rhs_inner_dim_contiguous, bool rhs_inner_dim_reordered, int Alignment>
+  void evalGemm(Scalar* buffer) const {
+    // columns in left side, rows in right side
+    const Index k = this->m_k_size;
+
+    // rows in left side
+    const Index m = this->m_i_size;
+
+    // columns in right side
+    const Index n = this->m_j_size;
+
+    // zero out the result buffer (which must be of size at least m * n * sizeof(Scalar)
+    this->m_device.memset(buffer, 0, m * n * sizeof(Scalar));
+
+
+    const int lhs_packet_size = internal::unpacket_traits<typename LeftEvaluator::PacketReturnType>::size;
+    const int rhs_packet_size = internal::unpacket_traits<typename RightEvaluator::PacketReturnType>::size;
+
+    typedef internal::TensorContractionInputMapper<LhsScalar, Index, internal::Lhs,
+                                                   LeftEvaluator, left_nocontract_t,
+                                                   contract_t, lhs_packet_size,
+                                                   lhs_inner_dim_contiguous,
+                                                   false, Unaligned> LhsMapper;
+
+    typedef internal::TensorContractionInputMapper<RhsScalar, Index, internal::Rhs,
+                                                   RightEvaluator, right_nocontract_t,
+                                                   contract_t, rhs_packet_size,
+                                                   rhs_inner_dim_contiguous,
+                                                   rhs_inner_dim_reordered, Unaligned> RhsMapper;
+
+    typedef internal::blas_data_mapper<Scalar, Index, ColMajor> OutputMapper;
+
+    // TODO: packing could be faster sometimes if we supported row major tensor mappers
+    typedef internal::gemm_pack_lhs<LhsScalar, Index, typename LhsMapper::SubMapper, Traits::mr,
+                                    Traits::LhsProgress, ColMajor> LhsPacker;
+    typedef internal::gemm_pack_rhs<RhsScalar, Index, typename RhsMapper::SubMapper, Traits::nr, ColMajor> RhsPacker;
+
+    // TODO: replace false, false with conjugate values?
+    typedef internal::gebp_kernel<LhsScalar, RhsScalar, Index, OutputMapper,
+                                  Traits::mr, Traits::nr, false, false> GebpKernel;
+
+    typedef internal::packLhsArg<LhsScalar, LhsMapper, Index> packLArg;
+    typedef internal::packRhsAndKernelArg<LhsScalar, RhsScalar, RhsMapper, OutputMapper, Index> packRKArg;
+
+    // initialize data mappers
+    LhsMapper lhs(this->m_leftImpl, this->m_left_nocontract_strides, this->m_i_strides,
+                  this->m_left_contracting_strides, this->m_k_strides);
+
+    RhsMapper rhs(this->m_rightImpl, this->m_right_nocontract_strides, this->m_j_strides,
+                  this->m_right_contracting_strides, this->m_k_strides);
+
+    OutputMapper output(buffer, m);
+
+    // compute block sizes (which depend on number of threads)
+    const Index num_threads = this->m_device.numThreads();
+    internal::TensorContractionBlocking<LhsMapper, RhsMapper, Index, internal::ShardByCol> blocking(k, m, n, num_threads);
+    Index mc = blocking.mc();
+    Index nc = blocking.nc();
+    Index kc = blocking.kc();
+    eigen_assert(mc <= m);
+    eigen_assert(nc <= n);
+    eigen_assert(kc <= k);
+
+#define CEIL_DIV(a, b) (((a) + (b) - 1) / (b))
+    const Index k_blocks = CEIL_DIV(k, kc);
+    const Index n_blocks = CEIL_DIV(n, nc);
+    const Index m_blocks = CEIL_DIV(m, mc);
+    const Index sizeA = mc * kc;
+    const Index sizeB = kc * nc;
+
+    /*    cout << "m: " << m << " n: " << n << " k: " << k << endl;
+    cout << "mc: " << mc << " nc: " << nc << " kc: " << kc << endl;
+    cout << "m_blocks: " << m_blocks << " n_blocks: " << n_blocks << " k_blocks: " << k_blocks << endl;
+    cout << "num threads: " << num_threads << endl;
+    */
+
+    // note: m_device.allocate should return 16 byte aligned pointers, but if blockA and blockB
+    //       aren't 16 byte aligned segfaults will happen due to SIMD instructions
+    // note: You can get away with allocating just a single blockA and offsets and meet the
+    //       the alignment requirements with the assumption that
+    //       (Traits::mr * sizeof(ResScalar)) % 16 == 0
+    const Index numBlockAs = numext::mini(num_threads, m_blocks);
+    MaxSizeVector<LhsScalar *> blockAs(num_threads);
+    for (int i = 0; i < num_threads; i++) {
+      blockAs.push_back(static_cast<LhsScalar *>(this->m_device.allocate(sizeA * sizeof(LhsScalar))));
+    }
+
+    // To circumvent alignment issues, I'm just going to separately allocate the memory for each thread
+    // TODO: is this too much memory to allocate? This simplifies coding a lot, but is wasteful.
+    //       Other options: (1) reuse memory when a thread finishes. con: tricky
+    //                      (2) allocate block B memory in each thread. con: overhead
+    MaxSizeVector<RhsScalar *> blockBs(n_blocks);
+    for (int i = 0; i < n_blocks; i++) {
+      blockBs.push_back(static_cast<RhsScalar *>(this->m_device.allocate(sizeB * sizeof(RhsScalar))));
+    }
+
+    // lhs_notifications starts with all null Notifications
+    MaxSizeVector<Notification*> lhs_notifications(num_threads, nullptr);
+
+    // this should really be numBlockAs * n_blocks;
+    const Index num_kernel_notifications = num_threads * n_blocks;
+    MaxSizeVector<Notification*> kernel_notifications(num_kernel_notifications,
+                                                    nullptr);
+
+    for (Index k_block_idx = 0; k_block_idx < k_blocks; k_block_idx++) {
+      const Index k_start = k_block_idx * kc;
+      // make sure we don't overshoot right edge of left matrix
+      const Index actual_kc = numext::mini(k_start + kc, k) - k_start;
+
+      for (Index m_block_idx = 0; m_block_idx < m_blocks; m_block_idx += numBlockAs) {
+        const Index num_blocks = numext::mini(m_blocks-m_block_idx, numBlockAs);
+
+        for (Index mt_block_idx = m_block_idx; mt_block_idx < m_block_idx+num_blocks; mt_block_idx++) {
+          const Index m_start = mt_block_idx * mc;
+          const Index actual_mc = numext::mini(m_start + mc, m) - m_start;
+          eigen_assert(actual_mc > 0);
+
+          Index blockAId = (k_block_idx * m_blocks + mt_block_idx) % num_threads;
+
+          for (int i = 0; i < n_blocks; ++i) {
+            Index notification_id = (blockAId * n_blocks + i);
+            // Wait for any current kernels using this slot to complete
+            // before using it.
+            if (kernel_notifications[notification_id]) {
+              wait_until_ready(kernel_notifications[notification_id]);
+              delete kernel_notifications[notification_id];
+            }
+            kernel_notifications[notification_id] = new Notification();
+          }
+          const packLArg arg = {
+            blockAs[blockAId], // blockA
+            lhs,        // lhs
+            m_start,    // m
+            k_start,    // k
+            actual_mc,  // mc
+            actual_kc,  // kc
+          };
+
+          // Delete any existing notification since we may be
+          // replacing it.  The algorithm should ensure that there are
+          // no existing waiters on this notification.
+          delete lhs_notifications[blockAId];
+          lhs_notifications[blockAId] =
+          this->m_device.enqueue(&Self::packLhs<packLArg, LhsPacker>, arg);
+        }
+
+        // now start kernels.
+        const Index m_base_start = m_block_idx * mc;
+        const bool need_to_pack = m_block_idx == 0;
+
+        for (Index n_block_idx = 0; n_block_idx < n_blocks; n_block_idx++) {
+          const Index n_start = n_block_idx * nc;
+          const Index actual_nc = numext::mini(n_start + nc, n) - n_start;
+
+          // first make sure the previous kernels are all done before overwriting rhs. Also wait if
+          // we're going to start new k. In both cases need_to_pack is true.
+          if (need_to_pack) {
+            for (Index i = num_blocks; i < num_threads; ++i) {
+              Index blockAId = (k_block_idx * m_blocks + i + m_block_idx) % num_threads;
+              Index future_id = (blockAId * n_blocks + n_block_idx);
+              wait_until_ready(kernel_notifications[future_id]);
+            }
+          }
+
+          packRKArg arg = {
+            &blockAs, // blockA
+            blockBs[n_block_idx], // blockB
+            rhs,          // rhs
+            output,       // output
+            m_base_start, // m
+            k_start,      // k
+            n_start,      // n
+            mc,           // mc
+            actual_kc,    // kc
+            actual_nc,    // nc
+            num_threads,
+            numBlockAs,
+            m,
+            k_block_idx,
+            m_block_idx,
+            n_block_idx, // n_block_idx
+            m_blocks, // m_blocks
+            n_blocks, // n_blocks
+            &kernel_notifications, // kernel notifications
+            &lhs_notifications,    // lhs notifications
+            need_to_pack, // need_to_pack
+          };
+
+          // We asynchronously kick off this function, which ends up
+          // notifying the appropriate kernel_notifications objects,
+          // which this thread waits on before exiting.
+          this->m_device.enqueueNoNotification(&Self::packRhsAndKernel<packRKArg, RhsPacker, GebpKernel>, arg);
+        }
+      }
+    }
+
+    // Make sure all the kernels are done.
+    for (size_t i = 0; i < kernel_notifications.size(); ++i) {
+      wait_until_ready(kernel_notifications[i]);
+      delete kernel_notifications[i];
+    }
+
+    // No need to wait for lhs notifications since they should have
+    // already been waited on.  Just clean them up.
+    for (size_t i = 0; i < lhs_notifications.size(); ++i) {
+      delete lhs_notifications[i];
+    }
+
+    // deallocate all of the memory for both A and B's
+    for (size_t i = 0; i < blockAs.size(); i++) {
+      this->m_device.deallocate(blockAs[i]);
+    }
+    for (size_t i = 0; i < blockBs.size(); i++) {
+      this->m_device.deallocate(blockBs[i]);
+    }
+
+#undef CEIL_DIV
+  }
+
+  /*
+   * Packs a LHS block of size (mt, kc) starting at lhs(m, k). Before packing
+   * the LHS block, check that all of the kernels that worked on the same
+   * mt_block_idx in the previous m_block are done.
+   */
+  template <typename packLArg, typename LhsPacker>
+  static void packLhs(const packLArg arg) {
+    // perform actual packing
+    LhsPacker pack_lhs;
+    pack_lhs(arg.blockA, arg.lhs.getSubMapper(arg.m_start, arg.k_start), arg.kc, arg.mc);
+  }
+
+  /*
+   * Packs a RHS block of size (kc, nc) starting at (k, n) after checking that
+   * all kernels in the previous block are done.
+   * Then for each LHS future, we wait on the future and then call GEBP
+   * on the area packed by the future (which starts at
+   * blockA + future_idx * mt * kc) on the LHS and with the full packed
+   * RHS block.
+   * The output of this GEBP is written to output(m + i * mt, n).
+   */
+  template <typename packRKArg, typename RhsPacker, typename GebpKernel>
+  static void packRhsAndKernel(packRKArg arg) {
+    if (arg.need_to_pack) {
+      RhsPacker pack_rhs;
+      pack_rhs(arg.blockB, arg.rhs.getSubMapper(arg.k, arg.n), arg.kc, arg.nc);
+    }
+
+    GebpKernel gebp;
+    for (Index mt_block_idx = 0; mt_block_idx < arg.num_blockAs; mt_block_idx++) {
+      const Index m_base_start = arg.m + arg.mc*mt_block_idx;
+      if (m_base_start < arg.max_m) {
+        Index blockAId = (arg.k_block_idx * arg.m_blocks + mt_block_idx + arg.m_block_idx) % arg.num_threads;
+        wait_until_ready((*arg.lhs_notifications)[blockAId]);
+        const Index actual_mc = numext::mini(m_base_start + arg.mc, arg.max_m) - m_base_start;
+        gebp(arg.output.getSubMapper(m_base_start, arg.n),
+             (*arg.blockAs)[blockAId], arg.blockB,
+             actual_mc, arg.kc, arg.nc, Scalar(1), -1, -1, 0, 0);
+
+        // Notify that the kernel is done.
+        const Index set_idx = blockAId * arg.n_blocks + arg.n_block_idx;
+        (*arg.kernel_notifications)[set_idx]->Notify();
+      }
+    }
+  }
+#endif  // EIGEN_USE_SIMPLE_THREAD_POOL
+
+  TensorOpCost contractionCost(Index m, Index n, Index bm, Index bn, Index bk,
+                               bool shard_by_col, bool prepacked) const {
+    const int packed_size = std::min<int>(PacketType<LhsScalar, Device>::size,
+                                          PacketType<RhsScalar, Device>::size);
+    const int output_packet_size = internal::unpacket_traits<PacketReturnType>::size;
+    const double kd = static_cast<double>(bk);
+    // Peak VFMA bandwidth is 0.5. However if we have not enough data for
+    // vectorization bandwidth drops. The 4.0 and 2.0 bandwidth is determined
+    // experimentally.
+    double computeBandwidth = bk == 1 ? 4.0 :
+          (shard_by_col ? bn : bm) < Traits::nr ||
+          (shard_by_col ? bm : bn) < Traits::mr ? 2.0 : 0.5;
+#ifndef EIGEN_VECTORIZE_FMA
+    // Bandwidth of all of VFMA/MULPS/ADDPS is 0.5 on latest Intel processors.
+    // However for MULPS/ADDPS we have dependent sequence of 2 such instructions,
+    // so overall bandwidth is 1.0.
+    if (computeBandwidth == 0.5) computeBandwidth = 1.0;
+#endif
+    // Computations.
+    TensorOpCost cost = TensorOpCost(0, 0, kd * computeBandwidth, true, packed_size);
+    // Output stores.
+    cost += TensorOpCost(0, sizeof(CoeffReturnType), 0, true, output_packet_size);
+    if (prepacked) {
+      // Packing and kernels are executed in different tasks. When we calculate
+      // task grain size we look only at kernel cost assuming that kernel
+      // is more expensive than packing.
+      return cost;
+    }
+    // Lhs/rhs loads + computations.
+    TensorOpCost lhsCost = this->m_leftImpl.costPerCoeff(true) * (kd / n);
+    TensorOpCost rhsCost = this->m_rightImpl.costPerCoeff(true) * (kd / m);
+    // Lhs packing memory cost does not contribute considerably to overall
+    // execution time because lhs is prefetched early and accessed sequentially.
+    if (shard_by_col)
+      lhsCost.dropMemoryCost();
+    else
+      rhsCost.dropMemoryCost();
+    return cost + lhsCost + rhsCost;
+  }
+};
+
+} // end namespace Eigen
+
+#endif  // EIGEN_USE_THREADS
+#endif // EIGEN_CXX11_TENSOR_TENSOR_CONTRACTION_THREAD_POOL_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorCustomOp.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorCustomOp.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorCustomOp.h	(revision 3762)
@@ -0,0 +1,313 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2014 Benoit Steiner <benoit.steiner.goog@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CXX11_TENSOR_TENSOR_CUSTOM_OP_H
+#define EIGEN_CXX11_TENSOR_TENSOR_CUSTOM_OP_H
+
+namespace Eigen {
+
+/** \class TensorCustomUnaryOp
+  * \ingroup CXX11_Tensor_Module
+  *
+  * \brief Tensor custom class.
+  *
+  *
+  */
+namespace internal {
+template<typename CustomUnaryFunc, typename XprType>
+struct traits<TensorCustomUnaryOp<CustomUnaryFunc, XprType> >
+{
+  typedef typename XprType::Scalar Scalar;
+  typedef typename XprType::StorageKind StorageKind;
+  typedef typename XprType::Index Index;
+  typedef typename XprType::Nested Nested;
+  typedef typename remove_reference<Nested>::type _Nested;
+  static const int NumDimensions = traits<XprType>::NumDimensions;
+  static const int Layout = traits<XprType>::Layout;
+};
+
+template<typename CustomUnaryFunc, typename XprType>
+struct eval<TensorCustomUnaryOp<CustomUnaryFunc, XprType>, Eigen::Dense>
+{
+  typedef const TensorCustomUnaryOp<CustomUnaryFunc, XprType>& type;
+};
+
+template<typename CustomUnaryFunc, typename XprType>
+struct nested<TensorCustomUnaryOp<CustomUnaryFunc, XprType> >
+{
+  typedef TensorCustomUnaryOp<CustomUnaryFunc, XprType> type;
+};
+
+}  // end namespace internal
+
+
+
+template<typename CustomUnaryFunc, typename XprType>
+class TensorCustomUnaryOp : public TensorBase<TensorCustomUnaryOp<CustomUnaryFunc, XprType>, ReadOnlyAccessors>
+{
+  public:
+  typedef typename internal::traits<TensorCustomUnaryOp>::Scalar Scalar;
+  typedef typename Eigen::NumTraits<Scalar>::Real RealScalar;
+  typedef typename XprType::CoeffReturnType CoeffReturnType;
+  typedef typename internal::nested<TensorCustomUnaryOp>::type Nested;
+  typedef typename internal::traits<TensorCustomUnaryOp>::StorageKind StorageKind;
+  typedef typename internal::traits<TensorCustomUnaryOp>::Index Index;
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorCustomUnaryOp(const XprType& expr, const CustomUnaryFunc& func)
+      : m_expr(expr), m_func(func) {}
+
+  EIGEN_DEVICE_FUNC
+  const CustomUnaryFunc& func() const { return m_func; }
+
+  EIGEN_DEVICE_FUNC
+  const typename internal::remove_all<typename XprType::Nested>::type&
+  expression() const { return m_expr; }
+
+  protected:
+    typename XprType::Nested m_expr;
+    const CustomUnaryFunc m_func;
+};
+
+
+// Eval as rvalue
+template<typename CustomUnaryFunc, typename XprType, typename Device>
+struct TensorEvaluator<const TensorCustomUnaryOp<CustomUnaryFunc, XprType>, Device>
+{
+  typedef TensorCustomUnaryOp<CustomUnaryFunc, XprType> ArgType;
+  typedef typename internal::traits<ArgType>::Index Index;
+  static const int NumDims = internal::traits<ArgType>::NumDimensions;
+  typedef DSizes<Index, NumDims> Dimensions;
+  typedef typename internal::remove_const<typename ArgType::Scalar>::type Scalar;
+  typedef typename internal::remove_const<typename XprType::CoeffReturnType>::type CoeffReturnType;
+  typedef typename PacketType<CoeffReturnType, Device>::type PacketReturnType;
+  static const int PacketSize = internal::unpacket_traits<PacketReturnType>::size;
+
+  enum {
+    IsAligned = false,
+    PacketAccess = (internal::packet_traits<Scalar>::size > 1),
+    BlockAccess = false,
+    Layout = TensorEvaluator<XprType, Device>::Layout,
+    CoordAccess = false,  // to be implemented
+    RawAccess = false
+  };
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorEvaluator(const ArgType& op, const Device& device)
+      : m_op(op), m_device(device), m_result(NULL)
+  {
+    m_dimensions = op.func().dimensions(op.expression());
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Dimensions& dimensions() const { return m_dimensions; }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool evalSubExprsIfNeeded(CoeffReturnType* data) {
+    if (data) {
+      evalTo(data);
+      return false;
+    } else {
+      m_result = static_cast<CoeffReturnType*>(
+          m_device.allocate(dimensions().TotalSize() * sizeof(Scalar)));
+      evalTo(m_result);
+      return true;
+    }
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void cleanup() {
+    if (m_result != NULL) {
+      m_device.deallocate(m_result);
+      m_result = NULL;
+    }
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType coeff(Index index) const {
+    return m_result[index];
+  }
+
+  template<int LoadMode>
+  EIGEN_DEVICE_FUNC PacketReturnType packet(Index index) const {
+    return internal::ploadt<PacketReturnType, LoadMode>(m_result + index);
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorOpCost costPerCoeff(bool vectorized) const {
+    // TODO(rmlarsen): Extend CustomOp API to return its cost estimate.
+    return TensorOpCost(sizeof(CoeffReturnType), 0, 0, vectorized, PacketSize);
+  }
+
+  EIGEN_DEVICE_FUNC CoeffReturnType* data() const { return m_result; }
+
+ protected:
+  EIGEN_DEVICE_FUNC void evalTo(Scalar* data) {
+    TensorMap<Tensor<CoeffReturnType, NumDims, Layout, Index> > result(
+        data, m_dimensions);
+    m_op.func().eval(m_op.expression(), result, m_device);
+  }
+
+  Dimensions m_dimensions;
+  const ArgType m_op;
+  const Device& m_device;
+  CoeffReturnType* m_result;
+};
+
+
+
+/** \class TensorCustomBinaryOp
+  * \ingroup CXX11_Tensor_Module
+  *
+  * \brief Tensor custom class.
+  *
+  *
+  */
+namespace internal {
+template<typename CustomBinaryFunc, typename LhsXprType, typename RhsXprType>
+struct traits<TensorCustomBinaryOp<CustomBinaryFunc, LhsXprType, RhsXprType> >
+{
+  typedef typename internal::promote_storage_type<typename LhsXprType::Scalar,
+                                                  typename RhsXprType::Scalar>::ret Scalar;
+  typedef typename internal::promote_storage_type<typename LhsXprType::CoeffReturnType,
+                                                  typename RhsXprType::CoeffReturnType>::ret CoeffReturnType;
+  typedef typename promote_storage_type<typename traits<LhsXprType>::StorageKind,
+                                        typename traits<RhsXprType>::StorageKind>::ret StorageKind;
+  typedef typename promote_index_type<typename traits<LhsXprType>::Index,
+                                      typename traits<RhsXprType>::Index>::type Index;
+  typedef typename LhsXprType::Nested LhsNested;
+  typedef typename RhsXprType::Nested RhsNested;
+  typedef typename remove_reference<LhsNested>::type _LhsNested;
+  typedef typename remove_reference<RhsNested>::type _RhsNested;
+  static const int NumDimensions = traits<LhsXprType>::NumDimensions;
+  static const int Layout = traits<LhsXprType>::Layout;
+};
+
+template<typename CustomBinaryFunc, typename LhsXprType, typename RhsXprType>
+struct eval<TensorCustomBinaryOp<CustomBinaryFunc, LhsXprType, RhsXprType>, Eigen::Dense>
+{
+  typedef const TensorCustomBinaryOp<CustomBinaryFunc, LhsXprType, RhsXprType>& type;
+};
+
+template<typename CustomBinaryFunc, typename LhsXprType, typename RhsXprType>
+struct nested<TensorCustomBinaryOp<CustomBinaryFunc, LhsXprType, RhsXprType> >
+{
+  typedef TensorCustomBinaryOp<CustomBinaryFunc, LhsXprType, RhsXprType> type;
+};
+
+}  // end namespace internal
+
+
+
+template<typename CustomBinaryFunc, typename LhsXprType, typename RhsXprType>
+class TensorCustomBinaryOp : public TensorBase<TensorCustomBinaryOp<CustomBinaryFunc, LhsXprType, RhsXprType>, ReadOnlyAccessors>
+{
+  public:
+  typedef typename internal::traits<TensorCustomBinaryOp>::Scalar Scalar;
+  typedef typename Eigen::NumTraits<Scalar>::Real RealScalar;
+  typedef typename internal::traits<TensorCustomBinaryOp>::CoeffReturnType CoeffReturnType;
+  typedef typename internal::nested<TensorCustomBinaryOp>::type Nested;
+  typedef typename internal::traits<TensorCustomBinaryOp>::StorageKind StorageKind;
+  typedef typename internal::traits<TensorCustomBinaryOp>::Index Index;
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorCustomBinaryOp(const LhsXprType& lhs, const RhsXprType& rhs, const CustomBinaryFunc& func)
+
+      : m_lhs_xpr(lhs), m_rhs_xpr(rhs), m_func(func) {}
+
+  EIGEN_DEVICE_FUNC
+  const CustomBinaryFunc& func() const { return m_func; }
+
+  EIGEN_DEVICE_FUNC
+  const typename internal::remove_all<typename LhsXprType::Nested>::type&
+  lhsExpression() const { return m_lhs_xpr; }
+
+  EIGEN_DEVICE_FUNC
+  const typename internal::remove_all<typename RhsXprType::Nested>::type&
+  rhsExpression() const { return m_rhs_xpr; }
+
+  protected:
+    typename LhsXprType::Nested m_lhs_xpr;
+    typename RhsXprType::Nested m_rhs_xpr;
+    const CustomBinaryFunc m_func;
+};
+
+
+// Eval as rvalue
+template<typename CustomBinaryFunc, typename LhsXprType, typename RhsXprType, typename Device>
+struct TensorEvaluator<const TensorCustomBinaryOp<CustomBinaryFunc, LhsXprType, RhsXprType>, Device>
+{
+  typedef TensorCustomBinaryOp<CustomBinaryFunc, LhsXprType, RhsXprType> XprType;
+  typedef typename internal::traits<XprType>::Index Index;
+  static const int NumDims = internal::traits<XprType>::NumDimensions;
+  typedef DSizes<Index, NumDims> Dimensions;
+  typedef typename XprType::Scalar Scalar;
+  typedef typename internal::remove_const<typename XprType::CoeffReturnType>::type CoeffReturnType;
+  typedef typename PacketType<CoeffReturnType, Device>::type PacketReturnType;
+  static const int PacketSize = internal::unpacket_traits<PacketReturnType>::size;
+
+  enum {
+    IsAligned = false,
+    PacketAccess = (internal::packet_traits<Scalar>::size > 1),
+    BlockAccess = false,
+    Layout = TensorEvaluator<LhsXprType, Device>::Layout,
+    CoordAccess = false,  // to be implemented
+    RawAccess = false
+  };
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorEvaluator(const XprType& op, const Device& device)
+      : m_op(op), m_device(device), m_result(NULL)
+  {
+    m_dimensions = op.func().dimensions(op.lhsExpression(), op.rhsExpression());
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Dimensions& dimensions() const { return m_dimensions; }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool evalSubExprsIfNeeded(CoeffReturnType* data) {
+    if (data) {
+      evalTo(data);
+      return false;
+    } else {
+      m_result = static_cast<Scalar *>(m_device.allocate(dimensions().TotalSize() * sizeof(Scalar)));
+      evalTo(m_result);
+      return true;
+    }
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void cleanup() {
+    if (m_result != NULL) {
+      m_device.deallocate(m_result);
+      m_result = NULL;
+    }
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType coeff(Index index) const {
+    return m_result[index];
+  }
+
+  template<int LoadMode>
+  EIGEN_DEVICE_FUNC PacketReturnType packet(Index index) const {
+    return internal::ploadt<PacketReturnType, LoadMode>(m_result + index);
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorOpCost costPerCoeff(bool vectorized) const {
+    // TODO(rmlarsen): Extend CustomOp API to return its cost estimate.
+    return TensorOpCost(sizeof(CoeffReturnType), 0, 0, vectorized, PacketSize);
+  }
+
+  EIGEN_DEVICE_FUNC CoeffReturnType* data() const { return m_result; }
+
+ protected:
+  EIGEN_DEVICE_FUNC void evalTo(Scalar* data) {
+    TensorMap<Tensor<Scalar, NumDims, Layout> > result(data, m_dimensions);
+    m_op.func().eval(m_op.lhsExpression(), m_op.rhsExpression(), result, m_device);
+  }
+
+  Dimensions m_dimensions;
+  const XprType m_op;
+  const Device& m_device;
+  CoeffReturnType* m_result;
+};
+
+
+} // end namespace Eigen
+
+#endif // EIGEN_CXX11_TENSOR_TENSOR_CUSTOM_OP_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorForcedEval.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorForcedEval.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorForcedEval.h	(revision 3762)
@@ -0,0 +1,169 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2014 Benoit Steiner <benoit.steiner.goog@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CXX11_TENSOR_TENSOR_FORCED_EVAL_H
+#define EIGEN_CXX11_TENSOR_TENSOR_FORCED_EVAL_H
+
+namespace Eigen {
+
+namespace internal {
+template<typename XprType, template <class> class MakePointer_>
+struct traits<TensorForcedEvalOp<XprType, MakePointer_> >
+{
+  // Type promotion to handle the case where the types of the lhs and the rhs are different.
+  typedef typename XprType::Scalar Scalar;
+  typedef traits<XprType> XprTraits;
+  typedef typename traits<XprType>::StorageKind StorageKind;
+  typedef typename traits<XprType>::Index Index;
+  typedef typename XprType::Nested Nested;
+  typedef typename remove_reference<Nested>::type _Nested;
+  static const int NumDimensions = XprTraits::NumDimensions;
+  static const int Layout = XprTraits::Layout;
+
+  enum {
+    Flags = 0
+  };
+  template <class T> struct MakePointer {
+    // Intermediate typedef to workaround MSVC issue.
+    typedef MakePointer_<T> MakePointerT;
+    typedef typename MakePointerT::Type Type;
+  };
+};
+
+template<typename XprType, template <class> class MakePointer_>
+struct eval<TensorForcedEvalOp<XprType, MakePointer_>, Eigen::Dense>
+{
+  typedef const TensorForcedEvalOp<XprType, MakePointer_>& type;
+};
+
+template<typename XprType, template <class> class MakePointer_>
+struct nested<TensorForcedEvalOp<XprType, MakePointer_>, 1, typename eval<TensorForcedEvalOp<XprType, MakePointer_> >::type>
+{
+  typedef TensorForcedEvalOp<XprType, MakePointer_> type;
+};
+
+}  // end namespace internal
+
+
+
+// FIXME use proper doxygen documentation (e.g. \tparam MakePointer_)
+
+/** \class TensorForcedEvalOp
+  * \ingroup CXX11_Tensor_Module
+  *
+  * \brief Tensor reshaping class.
+  *
+  *
+  */
+/// `template <class> class MakePointer_` is added to convert the host pointer to the device pointer.
+/// It is added due to the fact that for our device compiler `T*` is not allowed.
+/// If we wanted to use the same Evaluator functions we have to convert that type to our pointer `T`.
+/// This is done through our `MakePointer_` class. By default the Type in the `MakePointer_<T>` is `T*` .
+/// Therefore, by adding the default value, we managed to convert the type and it does not break any
+/// existing code as its default value is `T*`.
+template<typename XprType, template <class> class MakePointer_>
+class TensorForcedEvalOp : public TensorBase<TensorForcedEvalOp<XprType, MakePointer_>, ReadOnlyAccessors>
+{
+  public:
+  typedef typename Eigen::internal::traits<TensorForcedEvalOp>::Scalar Scalar;
+  typedef typename Eigen::NumTraits<Scalar>::Real RealScalar;
+  typedef typename internal::remove_const<typename XprType::CoeffReturnType>::type CoeffReturnType;
+  typedef typename Eigen::internal::nested<TensorForcedEvalOp>::type Nested;
+  typedef typename Eigen::internal::traits<TensorForcedEvalOp>::StorageKind StorageKind;
+  typedef typename Eigen::internal::traits<TensorForcedEvalOp>::Index Index;
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorForcedEvalOp(const XprType& expr)
+      : m_xpr(expr) {}
+
+    EIGEN_DEVICE_FUNC
+    const typename internal::remove_all<typename XprType::Nested>::type&
+    expression() const { return m_xpr; }
+
+  protected:
+    typename XprType::Nested m_xpr;
+};
+
+
+template<typename ArgType, typename Device, template <class> class MakePointer_>
+struct TensorEvaluator<const TensorForcedEvalOp<ArgType, MakePointer_>, Device>
+{
+  typedef TensorForcedEvalOp<ArgType, MakePointer_> XprType;
+  typedef typename ArgType::Scalar Scalar;
+  typedef typename TensorEvaluator<ArgType, Device>::Dimensions Dimensions;
+  typedef typename XprType::Index Index;
+  typedef typename XprType::CoeffReturnType CoeffReturnType;
+  typedef typename PacketType<CoeffReturnType, Device>::type PacketReturnType;
+  static const int PacketSize = internal::unpacket_traits<PacketReturnType>::size;
+
+  enum {
+    IsAligned = true,
+    PacketAccess = (PacketSize > 1),
+    Layout = TensorEvaluator<ArgType, Device>::Layout,
+    RawAccess = true
+  };
+
+  EIGEN_DEVICE_FUNC TensorEvaluator(const XprType& op, const Device& device)
+	/// op_ is used for sycl
+      : m_impl(op.expression(), device), m_op(op.expression()), m_device(device), m_buffer(NULL)
+  { }
+
+  EIGEN_DEVICE_FUNC const Dimensions& dimensions() const { return m_impl.dimensions(); }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool evalSubExprsIfNeeded(CoeffReturnType*) {
+    const Index numValues =  internal::array_prod(m_impl.dimensions());
+    m_buffer = (CoeffReturnType*)m_device.allocate(numValues * sizeof(CoeffReturnType));
+    // Should initialize the memory in case we're dealing with non POD types.
+    if (NumTraits<CoeffReturnType>::RequireInitialization) {
+      for (Index i = 0; i < numValues; ++i) {
+        new(m_buffer+i) CoeffReturnType();
+      }
+    }
+    typedef TensorEvalToOp< const typename internal::remove_const<ArgType>::type > EvalTo;
+    EvalTo evalToTmp(m_buffer, m_op);
+    const bool PacketAccess = internal::IsVectorizable<Device, const ArgType>::value;
+    internal::TensorExecutor<const EvalTo, typename internal::remove_const<Device>::type, PacketAccess>::run(evalToTmp, m_device);
+    return true;
+  }
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void cleanup() {
+    m_device.deallocate(m_buffer);
+    m_buffer = NULL;
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType coeff(Index index) const
+  {
+    return m_buffer[index];
+  }
+
+  template<int LoadMode>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketReturnType packet(Index index) const
+  {
+    return internal::ploadt<PacketReturnType, LoadMode>(m_buffer + index);
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorOpCost costPerCoeff(bool vectorized) const {
+    return TensorOpCost(sizeof(CoeffReturnType), 0, 0, vectorized, PacketSize);
+  }
+
+  EIGEN_DEVICE_FUNC typename MakePointer<Scalar>::Type data() const { return m_buffer; }
+
+  /// required by sycl in order to extract the sycl accessor
+  const TensorEvaluator<ArgType, Device>& impl() { return m_impl; }
+  /// used by sycl in order to build the sycl buffer
+  const Device& device() const{return m_device;}
+ private:
+  TensorEvaluator<ArgType, Device> m_impl;
+  const ArgType m_op;
+  const Device& m_device;
+  typename MakePointer<CoeffReturnType>::Type m_buffer;
+};
+
+
+} // end namespace Eigen
+
+#endif // EIGEN_CXX11_TENSOR_TENSOR_FORCED_EVAL_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorExpr.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorExpr.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorExpr.h	(revision 3762)
@@ -0,0 +1,371 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2014 Benoit Steiner <benoit.steiner.goog@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CXX11_TENSOR_TENSOR_EXPR_H
+#define EIGEN_CXX11_TENSOR_TENSOR_EXPR_H
+
+namespace Eigen {
+
+/** \class TensorExpr
+  * \ingroup CXX11_Tensor_Module
+  *
+  * \brief Tensor expression classes.
+  *
+  * The TensorCwiseNullaryOp class applies a nullary operators to an expression.
+  * This is typically used to generate constants.
+  *
+  * The TensorCwiseUnaryOp class represents an expression where a unary operator
+  * (e.g. cwiseSqrt) is applied to an expression.
+  *
+  * The TensorCwiseBinaryOp class represents an expression where a binary
+  * operator (e.g. addition) is applied to a lhs and a rhs expression.
+  *
+  */
+namespace internal {
+template<typename NullaryOp, typename XprType>
+struct traits<TensorCwiseNullaryOp<NullaryOp, XprType> >
+    : traits<XprType>
+{
+  typedef traits<XprType> XprTraits;
+  typedef typename XprType::Scalar Scalar;
+  typedef typename XprType::Nested XprTypeNested;
+  typedef typename remove_reference<XprTypeNested>::type _XprTypeNested;
+  static const int NumDimensions = XprTraits::NumDimensions;
+  static const int Layout = XprTraits::Layout;
+
+  enum {
+    Flags = 0
+  };
+};
+
+}  // end namespace internal
+
+
+
+template<typename NullaryOp, typename XprType>
+class TensorCwiseNullaryOp : public TensorBase<TensorCwiseNullaryOp<NullaryOp, XprType>, ReadOnlyAccessors>
+{
+  public:
+    typedef typename Eigen::internal::traits<TensorCwiseNullaryOp>::Scalar Scalar;
+    typedef typename Eigen::NumTraits<Scalar>::Real RealScalar;
+    typedef typename XprType::CoeffReturnType CoeffReturnType;
+    typedef TensorCwiseNullaryOp<NullaryOp, XprType> Nested;
+    typedef typename Eigen::internal::traits<TensorCwiseNullaryOp>::StorageKind StorageKind;
+    typedef typename Eigen::internal::traits<TensorCwiseNullaryOp>::Index Index;
+
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorCwiseNullaryOp(const XprType& xpr, const NullaryOp& func = NullaryOp())
+        : m_xpr(xpr), m_functor(func) {}
+
+    EIGEN_DEVICE_FUNC
+    const typename internal::remove_all<typename XprType::Nested>::type&
+    nestedExpression() const { return m_xpr; }
+
+    EIGEN_DEVICE_FUNC
+    const NullaryOp& functor() const { return m_functor; }
+
+  protected:
+    typename XprType::Nested m_xpr;
+    const NullaryOp m_functor;
+};
+
+
+
+namespace internal {
+template<typename UnaryOp, typename XprType>
+struct traits<TensorCwiseUnaryOp<UnaryOp, XprType> >
+    : traits<XprType>
+{
+  // TODO(phli): Add InputScalar, InputPacket.  Check references to
+  // current Scalar/Packet to see if the intent is Input or Output.
+  typedef typename result_of<UnaryOp(typename XprType::Scalar)>::type Scalar;
+  typedef traits<XprType> XprTraits;
+  typedef typename XprType::Nested XprTypeNested;
+  typedef typename remove_reference<XprTypeNested>::type _XprTypeNested;
+  static const int NumDimensions = XprTraits::NumDimensions;
+  static const int Layout = XprTraits::Layout;
+};
+
+template<typename UnaryOp, typename XprType>
+struct eval<TensorCwiseUnaryOp<UnaryOp, XprType>, Eigen::Dense>
+{
+  typedef const TensorCwiseUnaryOp<UnaryOp, XprType>& type;
+};
+
+template<typename UnaryOp, typename XprType>
+struct nested<TensorCwiseUnaryOp<UnaryOp, XprType>, 1, typename eval<TensorCwiseUnaryOp<UnaryOp, XprType> >::type>
+{
+  typedef TensorCwiseUnaryOp<UnaryOp, XprType> type;
+};
+
+}  // end namespace internal
+
+
+
+template<typename UnaryOp, typename XprType>
+class TensorCwiseUnaryOp : public TensorBase<TensorCwiseUnaryOp<UnaryOp, XprType>, ReadOnlyAccessors>
+{
+  public:
+    // TODO(phli): Add InputScalar, InputPacket.  Check references to
+    // current Scalar/Packet to see if the intent is Input or Output.
+    typedef typename Eigen::internal::traits<TensorCwiseUnaryOp>::Scalar Scalar;
+    typedef typename Eigen::NumTraits<Scalar>::Real RealScalar;
+    typedef Scalar CoeffReturnType;
+    typedef typename Eigen::internal::nested<TensorCwiseUnaryOp>::type Nested;
+    typedef typename Eigen::internal::traits<TensorCwiseUnaryOp>::StorageKind StorageKind;
+    typedef typename Eigen::internal::traits<TensorCwiseUnaryOp>::Index Index;
+
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorCwiseUnaryOp(const XprType& xpr, const UnaryOp& func = UnaryOp())
+      : m_xpr(xpr), m_functor(func) {}
+
+    EIGEN_DEVICE_FUNC
+    const UnaryOp& functor() const { return m_functor; }
+
+    /** \returns the nested expression */
+    EIGEN_DEVICE_FUNC
+    const typename internal::remove_all<typename XprType::Nested>::type&
+    nestedExpression() const { return m_xpr; }
+
+  protected:
+    typename XprType::Nested m_xpr;
+    const UnaryOp m_functor;
+};
+
+
+namespace internal {
+template<typename BinaryOp, typename LhsXprType, typename RhsXprType>
+struct traits<TensorCwiseBinaryOp<BinaryOp, LhsXprType, RhsXprType> >
+{
+  // Type promotion to handle the case where the types of the lhs and the rhs
+  // are different.
+  // TODO(phli): Add Lhs/RhsScalar, Lhs/RhsPacket.  Check references to
+  // current Scalar/Packet to see if the intent is Inputs or Output.
+  typedef typename result_of<
+      BinaryOp(typename LhsXprType::Scalar,
+               typename RhsXprType::Scalar)>::type Scalar;
+  typedef traits<LhsXprType> XprTraits;
+  typedef typename promote_storage_type<
+      typename traits<LhsXprType>::StorageKind,
+      typename traits<RhsXprType>::StorageKind>::ret StorageKind;
+  typedef typename promote_index_type<
+      typename traits<LhsXprType>::Index,
+      typename traits<RhsXprType>::Index>::type Index;
+  typedef typename LhsXprType::Nested LhsNested;
+  typedef typename RhsXprType::Nested RhsNested;
+  typedef typename remove_reference<LhsNested>::type _LhsNested;
+  typedef typename remove_reference<RhsNested>::type _RhsNested;
+  static const int NumDimensions = XprTraits::NumDimensions;
+  static const int Layout = XprTraits::Layout;
+
+  enum {
+    Flags = 0
+  };
+};
+
+template<typename BinaryOp, typename LhsXprType, typename RhsXprType>
+struct eval<TensorCwiseBinaryOp<BinaryOp, LhsXprType, RhsXprType>, Eigen::Dense>
+{
+  typedef const TensorCwiseBinaryOp<BinaryOp, LhsXprType, RhsXprType>& type;
+};
+
+template<typename BinaryOp, typename LhsXprType, typename RhsXprType>
+struct nested<TensorCwiseBinaryOp<BinaryOp, LhsXprType, RhsXprType>, 1, typename eval<TensorCwiseBinaryOp<BinaryOp, LhsXprType, RhsXprType> >::type>
+{
+  typedef TensorCwiseBinaryOp<BinaryOp, LhsXprType, RhsXprType> type;
+};
+
+}  // end namespace internal
+
+
+
+template<typename BinaryOp, typename LhsXprType, typename RhsXprType>
+class TensorCwiseBinaryOp : public TensorBase<TensorCwiseBinaryOp<BinaryOp, LhsXprType, RhsXprType>, ReadOnlyAccessors>
+{
+  public:
+    // TODO(phli): Add Lhs/RhsScalar, Lhs/RhsPacket.  Check references to
+    // current Scalar/Packet to see if the intent is Inputs or Output.
+    typedef typename Eigen::internal::traits<TensorCwiseBinaryOp>::Scalar Scalar;
+    typedef typename Eigen::NumTraits<Scalar>::Real RealScalar;
+    typedef Scalar CoeffReturnType;
+    typedef typename Eigen::internal::nested<TensorCwiseBinaryOp>::type Nested;
+    typedef typename Eigen::internal::traits<TensorCwiseBinaryOp>::StorageKind StorageKind;
+    typedef typename Eigen::internal::traits<TensorCwiseBinaryOp>::Index Index;
+
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorCwiseBinaryOp(const LhsXprType& lhs, const RhsXprType& rhs, const BinaryOp& func = BinaryOp())
+        : m_lhs_xpr(lhs), m_rhs_xpr(rhs), m_functor(func) {}
+
+    EIGEN_DEVICE_FUNC
+    const BinaryOp& functor() const { return m_functor; }
+
+    /** \returns the nested expressions */
+    EIGEN_DEVICE_FUNC
+    const typename internal::remove_all<typename LhsXprType::Nested>::type&
+    lhsExpression() const { return m_lhs_xpr; }
+
+    EIGEN_DEVICE_FUNC
+    const typename internal::remove_all<typename RhsXprType::Nested>::type&
+    rhsExpression() const { return m_rhs_xpr; }
+
+  protected:
+    typename LhsXprType::Nested m_lhs_xpr;
+    typename RhsXprType::Nested m_rhs_xpr;
+    const BinaryOp m_functor;
+};
+
+
+namespace internal {
+template<typename TernaryOp, typename Arg1XprType, typename Arg2XprType, typename Arg3XprType>
+struct traits<TensorCwiseTernaryOp<TernaryOp, Arg1XprType, Arg2XprType, Arg3XprType> >
+{
+  // Type promotion to handle the case where the types of the args are different.
+  typedef typename result_of<
+      TernaryOp(typename Arg1XprType::Scalar,
+                typename Arg2XprType::Scalar,
+                typename Arg3XprType::Scalar)>::type Scalar;
+  typedef traits<Arg1XprType> XprTraits;
+  typedef typename traits<Arg1XprType>::StorageKind StorageKind;
+  typedef typename traits<Arg1XprType>::Index Index;
+  typedef typename Arg1XprType::Nested Arg1Nested;
+  typedef typename Arg2XprType::Nested Arg2Nested;
+  typedef typename Arg3XprType::Nested Arg3Nested;
+  typedef typename remove_reference<Arg1Nested>::type _Arg1Nested;
+  typedef typename remove_reference<Arg2Nested>::type _Arg2Nested;
+  typedef typename remove_reference<Arg3Nested>::type _Arg3Nested;
+  static const int NumDimensions = XprTraits::NumDimensions;
+  static const int Layout = XprTraits::Layout;
+
+  enum {
+    Flags = 0
+  };
+};
+
+template<typename TernaryOp, typename Arg1XprType, typename Arg2XprType, typename Arg3XprType>
+struct eval<TensorCwiseTernaryOp<TernaryOp, Arg1XprType, Arg2XprType, Arg3XprType>, Eigen::Dense>
+{
+  typedef const TensorCwiseTernaryOp<TernaryOp, Arg1XprType, Arg2XprType, Arg3XprType>& type;
+};
+
+template<typename TernaryOp, typename Arg1XprType, typename Arg2XprType, typename Arg3XprType>
+struct nested<TensorCwiseTernaryOp<TernaryOp, Arg1XprType, Arg2XprType, Arg3XprType>, 1, typename eval<TensorCwiseTernaryOp<TernaryOp, Arg1XprType, Arg2XprType, Arg3XprType> >::type>
+{
+  typedef TensorCwiseTernaryOp<TernaryOp, Arg1XprType, Arg2XprType, Arg3XprType> type;
+};
+
+}  // end namespace internal
+
+
+
+template<typename TernaryOp, typename Arg1XprType, typename Arg2XprType, typename Arg3XprType>
+class TensorCwiseTernaryOp : public TensorBase<TensorCwiseTernaryOp<TernaryOp, Arg1XprType, Arg2XprType, Arg3XprType>, ReadOnlyAccessors>
+{
+  public:
+    typedef typename Eigen::internal::traits<TensorCwiseTernaryOp>::Scalar Scalar;
+    typedef typename Eigen::NumTraits<Scalar>::Real RealScalar;
+    typedef Scalar CoeffReturnType;
+    typedef typename Eigen::internal::nested<TensorCwiseTernaryOp>::type Nested;
+    typedef typename Eigen::internal::traits<TensorCwiseTernaryOp>::StorageKind StorageKind;
+    typedef typename Eigen::internal::traits<TensorCwiseTernaryOp>::Index Index;
+
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorCwiseTernaryOp(const Arg1XprType& arg1, const Arg2XprType& arg2, const Arg3XprType& arg3, const TernaryOp& func = TernaryOp())
+        : m_arg1_xpr(arg1), m_arg2_xpr(arg2), m_arg3_xpr(arg3), m_functor(func) {}
+
+    EIGEN_DEVICE_FUNC
+    const TernaryOp& functor() const { return m_functor; }
+
+    /** \returns the nested expressions */
+    EIGEN_DEVICE_FUNC
+    const typename internal::remove_all<typename Arg1XprType::Nested>::type&
+    arg1Expression() const { return m_arg1_xpr; }
+
+    EIGEN_DEVICE_FUNC
+    const typename internal::remove_all<typename Arg2XprType::Nested>::type&
+    arg2Expression() const { return m_arg2_xpr; }
+
+    EIGEN_DEVICE_FUNC
+    const typename internal::remove_all<typename Arg3XprType::Nested>::type&
+    arg3Expression() const { return m_arg3_xpr; }
+
+  protected:
+    typename Arg1XprType::Nested m_arg1_xpr;
+    typename Arg2XprType::Nested m_arg2_xpr;
+    typename Arg3XprType::Nested m_arg3_xpr;
+    const TernaryOp m_functor;
+};
+
+
+namespace internal {
+template<typename IfXprType, typename ThenXprType, typename ElseXprType>
+struct traits<TensorSelectOp<IfXprType, ThenXprType, ElseXprType> >
+    : traits<ThenXprType>
+{
+  typedef typename traits<ThenXprType>::Scalar Scalar;
+  typedef traits<ThenXprType> XprTraits;
+  typedef typename promote_storage_type<typename traits<ThenXprType>::StorageKind,
+                                        typename traits<ElseXprType>::StorageKind>::ret StorageKind;
+  typedef typename promote_index_type<typename traits<ElseXprType>::Index,
+                                      typename traits<ThenXprType>::Index>::type Index;
+  typedef typename IfXprType::Nested IfNested;
+  typedef typename ThenXprType::Nested ThenNested;
+  typedef typename ElseXprType::Nested ElseNested;
+  static const int NumDimensions = XprTraits::NumDimensions;
+  static const int Layout = XprTraits::Layout;
+};
+
+template<typename IfXprType, typename ThenXprType, typename ElseXprType>
+struct eval<TensorSelectOp<IfXprType, ThenXprType, ElseXprType>, Eigen::Dense>
+{
+  typedef const TensorSelectOp<IfXprType, ThenXprType, ElseXprType>& type;
+};
+
+template<typename IfXprType, typename ThenXprType, typename ElseXprType>
+struct nested<TensorSelectOp<IfXprType, ThenXprType, ElseXprType>, 1, typename eval<TensorSelectOp<IfXprType, ThenXprType, ElseXprType> >::type>
+{
+  typedef TensorSelectOp<IfXprType, ThenXprType, ElseXprType> type;
+};
+
+}  // end namespace internal
+
+
+template<typename IfXprType, typename ThenXprType, typename ElseXprType>
+class TensorSelectOp : public TensorBase<TensorSelectOp<IfXprType, ThenXprType, ElseXprType>, ReadOnlyAccessors>
+{
+  public:
+    typedef typename Eigen::internal::traits<TensorSelectOp>::Scalar Scalar;
+    typedef typename Eigen::NumTraits<Scalar>::Real RealScalar;
+    typedef typename internal::promote_storage_type<typename ThenXprType::CoeffReturnType,
+                                                    typename ElseXprType::CoeffReturnType>::ret CoeffReturnType;
+    typedef typename Eigen::internal::nested<TensorSelectOp>::type Nested;
+    typedef typename Eigen::internal::traits<TensorSelectOp>::StorageKind StorageKind;
+    typedef typename Eigen::internal::traits<TensorSelectOp>::Index Index;
+
+    EIGEN_DEVICE_FUNC
+    TensorSelectOp(const IfXprType& a_condition,
+                   const ThenXprType& a_then,
+                   const ElseXprType& a_else)
+      : m_condition(a_condition), m_then(a_then), m_else(a_else)
+    { }
+
+    EIGEN_DEVICE_FUNC
+    const IfXprType& ifExpression() const { return m_condition; }
+
+    EIGEN_DEVICE_FUNC
+    const ThenXprType& thenExpression() const { return m_then; }
+
+    EIGEN_DEVICE_FUNC
+    const ElseXprType& elseExpression() const { return m_else; }
+
+  protected:
+    typename IfXprType::Nested m_condition;
+    typename ThenXprType::Nested m_then;
+    typename ElseXprType::Nested m_else;
+};
+
+
+} // end namespace Eigen
+
+#endif // EIGEN_CXX11_TENSOR_TENSOR_EXPR_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorSyclConvertToDeviceExpression.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorSyclConvertToDeviceExpression.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorSyclConvertToDeviceExpression.h	(revision 3762)
@@ -0,0 +1,121 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Mehdi Goli    Codeplay Software Ltd.
+// Ralph Potter  Codeplay Software Ltd.
+// Luke Iwanski  Codeplay Software Ltd.
+// Contact: <eigen@codeplay.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+/*****************************************************************
+ * TensorSyclConvertToDeviceExpression.h
+ *
+ * \brief:
+ *  Conversion from host pointer to device pointer
+ *  inside leaf nodes of the expression.
+ *
+*****************************************************************/
+
+#ifndef UNSUPPORTED_EIGEN_CXX11_SRC_TENSOR_TENSORSYCL_CONVERT_TO_DEVICE_EXPRESSION_HPP
+#define UNSUPPORTED_EIGEN_CXX11_SRC_TENSOR_TENSORSYCL_CONVERT_TO_DEVICE_EXPRESSION_HPP
+
+namespace Eigen {
+namespace TensorSycl {
+namespace internal {
+
+/// \struct ConvertToDeviceExpression
+/// \brief This struct is used to convert the MakePointer in the host expression
+/// to the MakeGlobalPointer for the device expression. For the leafNodes
+/// containing the pointer. This is due to the fact that the address space of
+/// the pointer T* is different on the host and the device.
+template <typename Expr>
+struct ConvertToDeviceExpression;
+
+template<template<class...> class NonOpCategory, bool IsConst, typename... Args>
+struct NonOpConversion{
+  typedef typename GetType<IsConst, NonOpCategory<typename ConvertToDeviceExpression<Args>::Type...> >::Type Type;
+};
+
+
+template<template<class, template <class> class > class NonOpCategory, bool IsConst, typename Args>
+struct DeviceConvertor{
+  typedef typename GetType<IsConst, NonOpCategory<typename ConvertToDeviceExpression<Args>::Type, MakeGlobalPointer> >::Type Type;
+};
+
+/// specialisation of the \ref ConvertToDeviceExpression struct when the node
+/// type is TensorMap
+#define TENSORMAPCONVERT(CVQual)\
+template <typename Scalar_, int Options_, int Options2_, int NumIndices_, typename IndexType_, template <class> class MakePointer_>\
+struct ConvertToDeviceExpression<CVQual TensorMap<Tensor<Scalar_, NumIndices_, Options_, IndexType_>, Options2_, MakePointer_> > {\
+  typedef CVQual TensorMap<Tensor<Scalar_, NumIndices_, Options_, IndexType_>, Options2_, MakeGlobalPointer> Type;\
+};
+
+TENSORMAPCONVERT(const)
+TENSORMAPCONVERT()
+#undef TENSORMAPCONVERT
+
+/// specialisation of the \ref ConvertToDeviceExpression struct when the node
+/// type is TensorCwiseNullaryOp, TensorCwiseUnaryOp, TensorCwiseBinaryOp, TensorCwiseTernaryOp, TensorBroadcastingOp
+#define CATEGORYCONVERT(CVQual)\
+template <template<class, class...> class Category, typename OP, typename... subExprs>\
+struct ConvertToDeviceExpression<CVQual Category<OP, subExprs...> > {\
+  typedef CVQual Category<OP, typename ConvertToDeviceExpression<subExprs>::Type... > Type;\
+};
+CATEGORYCONVERT(const)
+CATEGORYCONVERT()
+#undef CATEGORYCONVERT
+
+
+/// specialisation of the \ref ConvertToDeviceExpression struct when the node
+/// type is  TensorCwiseSelectOp
+#define SELECTOPCONVERT(CVQual, Res)\
+template <typename IfExpr, typename ThenExpr, typename ElseExpr>\
+struct ConvertToDeviceExpression<CVQual TensorSelectOp<IfExpr, ThenExpr, ElseExpr> >\
+: NonOpConversion<TensorSelectOp, Res, IfExpr, ThenExpr, ElseExpr> {};
+SELECTOPCONVERT(const, true)
+SELECTOPCONVERT(, false)
+#undef SELECTOPCONVERT
+
+/// specialisation of the \ref ConvertToDeviceExpression struct when the node
+/// type is const AssingOP
+#define ASSIGNCONVERT(CVQual, Res)\
+template <typename LHSExpr, typename RHSExpr>\
+struct ConvertToDeviceExpression<CVQual TensorAssignOp<LHSExpr, RHSExpr> >\
+: NonOpConversion<TensorAssignOp, Res, LHSExpr, RHSExpr>{};
+
+ASSIGNCONVERT(const, true)
+ASSIGNCONVERT(, false)
+#undef ASSIGNCONVERT
+
+/// specialisation of the \ref ConvertToDeviceExpression struct when the node
+/// type is either TensorForcedEvalOp or TensorEvalToOp
+#define KERNELBROKERCONVERT(CVQual, Res, ExprNode)\
+template <typename Expr>\
+struct ConvertToDeviceExpression<CVQual ExprNode<Expr> > \
+: DeviceConvertor<ExprNode, Res, Expr>{};
+
+KERNELBROKERCONVERT(const, true, TensorForcedEvalOp)
+KERNELBROKERCONVERT(, false, TensorForcedEvalOp)
+KERNELBROKERCONVERT(const, true, TensorEvalToOp)
+KERNELBROKERCONVERT(, false, TensorEvalToOp)
+#undef KERNELBROKERCONVERT
+
+/// specialisation of the \ref ConvertToDeviceExpression struct when the node type is TensorReductionOp
+#define KERNELBROKERCONVERTREDUCTION(CVQual)\
+template <typename OP, typename Dim, typename subExpr, template <class> class MakePointer_>\
+struct ConvertToDeviceExpression<CVQual TensorReductionOp<OP, Dim, subExpr, MakePointer_> > {\
+  typedef CVQual TensorReductionOp<OP, Dim, typename ConvertToDeviceExpression<subExpr>::Type, MakeGlobalPointer> Type;\
+};
+
+KERNELBROKERCONVERTREDUCTION(const)
+KERNELBROKERCONVERTREDUCTION()
+#undef KERNELBROKERCONVERTREDUCTION
+
+}  // namespace internal
+}  // namespace TensorSycl
+}  // namespace Eigen
+
+#endif  // UNSUPPORTED_EIGEN_CXX1
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorConvolution.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorConvolution.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorConvolution.h	(revision 3762)
@@ -0,0 +1,1104 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2014 Benoit Steiner <benoit.steiner.goog@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CXX11_TENSOR_TENSOR_CONVOLUTION_H
+#define EIGEN_CXX11_TENSOR_TENSOR_CONVOLUTION_H
+
+namespace Eigen {
+
+/** \class TensorConvolution
+  * \ingroup CXX11_Tensor_Module
+  *
+  * \brief Tensor convolution class.
+  *
+  *
+  */
+namespace internal {
+
+template <typename Index, typename InputDims, int NumKernelDims, int Layout>
+class IndexMapper {
+ public:
+  IndexMapper(const InputDims& input_dims, const array<Index, NumKernelDims>& kernel_dims,
+              const array<Index, NumKernelDims>& indices) {
+
+    array<Index, NumDims> dimensions = input_dims;
+    for (int i = 0; i < NumKernelDims; ++i) {
+      const Index index = indices[i];
+      const Index input_dim = input_dims[index];
+      const Index kernel_dim = kernel_dims[i];
+      const Index result_dim = input_dim - kernel_dim + 1;
+      dimensions[index] = result_dim;
+    }
+
+    array<Index, NumDims> inputStrides;
+    array<Index, NumDims> outputStrides;
+    if (static_cast<int>(Layout) == static_cast<int>(ColMajor)) {
+      inputStrides[0] = 1;
+      outputStrides[0] = 1;
+      for (int i = 1; i < NumDims; ++i) {
+        inputStrides[i] = inputStrides[i-1] * input_dims[i-1];
+        outputStrides[i] = outputStrides[i-1] * dimensions[i-1];
+      }
+    } else {
+      inputStrides[NumDims - 1] = 1;
+      outputStrides[NumDims - 1] = 1;
+      for (int i = static_cast<int>(NumDims) - 2; i >= 0; --i) {
+        inputStrides[i] = inputStrides[i + 1] * input_dims[i + 1];
+        outputStrides[i] = outputStrides[i + 1] * dimensions[i + 1];
+      }
+    }
+
+    array<Index, NumDims> cudaInputDimensions;
+    array<Index, NumDims> cudaOutputDimensions;
+    array<Index, NumDims> tmp = dimensions;
+    array<Index, NumDims> ordering;
+    const size_t offset = static_cast<int>(Layout) == static_cast<int>(ColMajor)
+                              ? 0
+                              : NumDims - NumKernelDims;
+    for (int i = 0; i < NumKernelDims; ++i) {
+      const Index index = i + offset;
+      ordering[index] = indices[i];
+      tmp[indices[i]] = -1;
+      cudaInputDimensions[index] = input_dims[indices[i]];
+      cudaOutputDimensions[index] = dimensions[indices[i]];
+    }
+
+    int written = static_cast<int>(Layout) == static_cast<int>(ColMajor)
+                      ? NumKernelDims
+                      : 0;
+    for (int i = 0; i < NumDims; ++i) {
+      if (tmp[i] >= 0) {
+        ordering[written] = i;
+        cudaInputDimensions[written] = input_dims[i];
+        cudaOutputDimensions[written] = dimensions[i];
+        ++written;
+      }
+    }
+
+    for (int i = 0; i < NumDims; ++i) {
+      m_inputStrides[i] = inputStrides[ordering[i]];
+      m_outputStrides[i] = outputStrides[ordering[i]];
+    }
+
+    if (static_cast<int>(Layout) == static_cast<int>(ColMajor)) {
+      for (int i = 0; i < NumDims; ++i) {
+        if (i > NumKernelDims) {
+          m_cudaInputStrides[i] =
+              m_cudaInputStrides[i - 1] * cudaInputDimensions[i - 1];
+          m_cudaOutputStrides[i] =
+              m_cudaOutputStrides[i - 1] * cudaOutputDimensions[i - 1];
+        } else {
+          m_cudaInputStrides[i] = 1;
+          m_cudaOutputStrides[i] = 1;
+        }
+      }
+    } else {
+      for (int i = NumDims - 1; i >= 0; --i) {
+        if (i + 1 < offset) {
+          m_cudaInputStrides[i] =
+              m_cudaInputStrides[i + 1] * cudaInputDimensions[i + 1];
+          m_cudaOutputStrides[i] =
+              m_cudaOutputStrides[i + 1] * cudaOutputDimensions[i + 1];
+        } else {
+          m_cudaInputStrides[i] = 1;
+          m_cudaOutputStrides[i] = 1;
+        }
+      }
+    }
+  }
+
+  EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Index mapCudaInputPlaneToTensorInputOffset(Index p) const {
+    Index inputIndex = 0;
+    if (static_cast<int>(Layout) == static_cast<int>(ColMajor)) {
+      for (int d = NumDims - 1; d > NumKernelDims; --d) {
+        const Index idx = p / m_cudaInputStrides[d];
+        inputIndex += idx * m_inputStrides[d];
+        p -= idx * m_cudaInputStrides[d];
+      }
+      inputIndex += p * m_inputStrides[NumKernelDims];
+    } else {
+      std::ptrdiff_t limit = 0;
+      if (NumKernelDims < NumDims) {
+        limit = NumDims - NumKernelDims - 1;
+      }
+      for (int d = 0; d < limit; ++d) {
+        const Index idx = p / m_cudaInputStrides[d];
+        inputIndex += idx * m_inputStrides[d];
+        p -= idx * m_cudaInputStrides[d];
+      }
+      inputIndex += p * m_inputStrides[limit];
+    }
+    return inputIndex;
+  }
+
+  EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Index mapCudaOutputPlaneToTensorOutputOffset(Index p) const {
+    Index outputIndex = 0;
+    if (static_cast<int>(Layout) == static_cast<int>(ColMajor)) {
+      for (int d = NumDims - 1; d > NumKernelDims; --d) {
+        const Index idx = p / m_cudaOutputStrides[d];
+        outputIndex += idx * m_outputStrides[d];
+        p -= idx * m_cudaOutputStrides[d];
+      }
+      outputIndex += p * m_outputStrides[NumKernelDims];
+    } else {
+      std::ptrdiff_t limit = 0;
+      if (NumKernelDims < NumDims) {
+        limit = NumDims - NumKernelDims - 1;
+      }
+      for (int d = 0; d < limit; ++d) {
+        const Index idx = p / m_cudaOutputStrides[d];
+        outputIndex += idx * m_outputStrides[d];
+        p -= idx * m_cudaOutputStrides[d];
+      }
+      outputIndex += p * m_outputStrides[limit];
+    }
+    return outputIndex;
+  }
+
+  EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Index mapCudaInputKernelToTensorInputOffset(Index i) const {
+    const size_t offset = static_cast<int>(Layout) == static_cast<int>(ColMajor)
+                              ? 0
+                              : NumDims - NumKernelDims;
+    return i * m_inputStrides[offset];
+  }
+
+  EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Index mapCudaOutputKernelToTensorOutputOffset(Index i) const {
+    const size_t offset = static_cast<int>(Layout) == static_cast<int>(ColMajor)
+                              ? 0
+                              : NumDims - NumKernelDims;
+    return i * m_outputStrides[offset];
+  }
+
+  EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Index mapCudaInputKernelToTensorInputOffset(Index i, Index j) const {
+    const size_t offset = static_cast<int>(Layout) == static_cast<int>(ColMajor)
+                              ? 0
+                              : NumDims - NumKernelDims;
+    return i * m_inputStrides[offset] + j * m_inputStrides[offset + 1];
+  }
+
+  EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Index mapCudaOutputKernelToTensorOutputOffset(Index i, Index j) const {
+    const size_t offset = static_cast<int>(Layout) == static_cast<int>(ColMajor)
+                              ? 0
+                              : NumDims - NumKernelDims;
+    return i * m_outputStrides[offset] + j * m_outputStrides[offset + 1];
+  }
+
+  EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Index mapCudaInputKernelToTensorInputOffset(Index i, Index j, Index k) const {
+    const size_t offset = static_cast<int>(Layout) == static_cast<int>(ColMajor)
+                              ? 0
+                              : NumDims - NumKernelDims;
+    return i * m_inputStrides[offset] + j * m_inputStrides[offset + 1] +
+           k * m_inputStrides[offset + 2];
+  }
+
+  EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Index mapCudaOutputKernelToTensorOutputOffset(Index i, Index j, Index k) const {
+    const size_t offset = static_cast<int>(Layout) == static_cast<int>(ColMajor)
+                              ? 0
+                              : NumDims - NumKernelDims;
+    return i * m_outputStrides[offset] + j * m_outputStrides[offset + 1] +
+           k * m_outputStrides[offset + 2];
+  }
+
+ private:
+  static const int NumDims = internal::array_size<InputDims>::value;
+  array<Index, NumDims> m_inputStrides;
+  array<Index, NumDims> m_outputStrides;
+  array<Index, NumDims> m_cudaInputStrides;
+  array<Index, NumDims> m_cudaOutputStrides;
+};
+
+
+
+template<typename Dimensions, typename InputXprType, typename KernelXprType>
+struct traits<TensorConvolutionOp<Dimensions, InputXprType, KernelXprType> >
+{
+  // Type promotion to handle the case where the types of the lhs and the rhs are different.
+  typedef typename promote_storage_type<typename InputXprType::Scalar,
+                                        typename KernelXprType::Scalar>::ret Scalar;
+  typedef typename promote_storage_type<typename traits<InputXprType>::StorageKind,
+                                        typename traits<KernelXprType>::StorageKind>::ret StorageKind;
+  typedef typename promote_index_type<typename traits<InputXprType>::Index,
+                                      typename traits<KernelXprType>::Index>::type Index;
+  typedef typename InputXprType::Nested LhsNested;
+  typedef typename KernelXprType::Nested RhsNested;
+  typedef typename remove_reference<LhsNested>::type _LhsNested;
+  typedef typename remove_reference<RhsNested>::type _RhsNested;
+  static const int NumDimensions = traits<InputXprType>::NumDimensions;
+  static const int Layout = traits<InputXprType>::Layout;
+
+  enum {
+    Flags = 0
+  };
+};
+
+template<typename Dimensions, typename InputXprType, typename KernelXprType>
+struct eval<TensorConvolutionOp<Dimensions, InputXprType, KernelXprType>, Eigen::Dense>
+{
+  typedef const TensorConvolutionOp<Dimensions, InputXprType, KernelXprType>& type;
+};
+
+template<typename Dimensions, typename InputXprType, typename KernelXprType>
+struct nested<TensorConvolutionOp<Dimensions, InputXprType, KernelXprType>, 1, typename eval<TensorConvolutionOp<Dimensions, InputXprType, KernelXprType> >::type>
+{
+  typedef TensorConvolutionOp<Dimensions, InputXprType, KernelXprType> type;
+};
+
+}  // end namespace internal
+
+
+
+template<typename Indices, typename InputXprType, typename KernelXprType>
+class TensorConvolutionOp : public TensorBase<TensorConvolutionOp<Indices, InputXprType, KernelXprType>, ReadOnlyAccessors>
+{
+  public:
+  typedef typename Eigen::internal::traits<TensorConvolutionOp>::Scalar Scalar;
+  typedef typename Eigen::NumTraits<Scalar>::Real RealScalar;
+  typedef typename internal::promote_storage_type<typename InputXprType::CoeffReturnType,
+                                                  typename KernelXprType::CoeffReturnType>::ret CoeffReturnType;
+  typedef typename Eigen::internal::nested<TensorConvolutionOp>::type Nested;
+  typedef typename Eigen::internal::traits<TensorConvolutionOp>::StorageKind StorageKind;
+  typedef typename Eigen::internal::traits<TensorConvolutionOp>::Index Index;
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorConvolutionOp(const InputXprType& input, const KernelXprType& kernel, const Indices& dims)
+      : m_input_xpr(input), m_kernel_xpr(kernel), m_indices(dims) {}
+
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const Indices& indices() const { return m_indices; }
+
+    /** \returns the nested expressions */
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const typename internal::remove_all<typename InputXprType::Nested>::type&
+    inputExpression() const { return m_input_xpr; }
+
+    EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+    const typename internal::remove_all<typename KernelXprType::Nested>::type&
+    kernelExpression() const { return m_kernel_xpr; }
+
+  protected:
+    typename InputXprType::Nested m_input_xpr;
+    typename KernelXprType::Nested m_kernel_xpr;
+    const Indices m_indices;
+};
+
+
+template<typename Indices, typename InputArgType, typename KernelArgType, typename Device>
+struct TensorEvaluator<const TensorConvolutionOp<Indices, InputArgType, KernelArgType>, Device>
+{
+  typedef TensorConvolutionOp<Indices, InputArgType, KernelArgType> XprType;
+
+  static const int NumDims = internal::array_size<typename TensorEvaluator<InputArgType, Device>::Dimensions>::value;
+  static const int NumKernelDims = internal::array_size<Indices>::value;
+  typedef typename XprType::Index Index;
+  typedef DSizes<Index, NumDims> Dimensions;
+
+  typedef typename XprType::Scalar Scalar;
+  typedef typename XprType::CoeffReturnType CoeffReturnType;
+  typedef typename PacketType<CoeffReturnType, Device>::type PacketReturnType;
+  static const int PacketSize = internal::unpacket_traits<PacketReturnType>::size;
+
+  enum {
+    IsAligned = TensorEvaluator<InputArgType, Device>::IsAligned & TensorEvaluator<KernelArgType, Device>::IsAligned,
+    PacketAccess = TensorEvaluator<InputArgType, Device>::PacketAccess & TensorEvaluator<KernelArgType, Device>::PacketAccess,
+    Layout = TensorEvaluator<InputArgType, Device>::Layout,
+    CoordAccess = false,  // to be implemented
+    RawAccess = false
+  };
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorEvaluator(const XprType& op, const Device& device)
+      : m_inputImpl(op.inputExpression(), device), m_kernelImpl(op.kernelExpression(), device), m_kernelArg(op.kernelExpression()), m_kernel(NULL), m_local_kernel(false), m_device(device)
+  {
+    EIGEN_STATIC_ASSERT((static_cast<int>(TensorEvaluator<InputArgType, Device>::Layout) == static_cast<int>(TensorEvaluator<KernelArgType, Device>::Layout)), YOU_MADE_A_PROGRAMMING_MISTAKE);
+
+    const typename TensorEvaluator<InputArgType, Device>::Dimensions& input_dims = m_inputImpl.dimensions();
+    const typename TensorEvaluator<KernelArgType, Device>::Dimensions& kernel_dims = m_kernelImpl.dimensions();
+
+    if (static_cast<int>(Layout) == static_cast<int>(ColMajor)) {
+      m_inputStride[0] = 1;
+      for (int i = 1; i < NumDims; ++i) {
+        m_inputStride[i] = m_inputStride[i - 1] * input_dims[i - 1];
+      }
+    } else {
+      m_inputStride[NumDims - 1] = 1;
+      for (int i = NumDims - 2; i >= 0; --i) {
+        m_inputStride[i] = m_inputStride[i + 1] * input_dims[i + 1];
+      }
+    }
+
+    m_dimensions = m_inputImpl.dimensions();
+    if (static_cast<int>(Layout) == static_cast<int>(ColMajor)) {
+      for (int i = 0; i < NumKernelDims; ++i) {
+        const Index index = op.indices()[i];
+        const Index input_dim = input_dims[index];
+        const Index kernel_dim = kernel_dims[i];
+        const Index result_dim = input_dim - kernel_dim + 1;
+        m_dimensions[index] = result_dim;
+        if (i > 0) {
+          m_kernelStride[i] = m_kernelStride[i - 1] * kernel_dims[i - 1];
+        } else {
+          m_kernelStride[0] = 1;
+        }
+        m_indexStride[i] = m_inputStride[index];
+      }
+
+      m_outputStride[0] = 1;
+      for (int i = 1; i < NumDims; ++i) {
+        m_outputStride[i] = m_outputStride[i - 1] * m_dimensions[i - 1];
+      }
+    } else {
+      for (int i = NumKernelDims - 1; i >= 0; --i) {
+        const Index index = op.indices()[i];
+        const Index input_dim = input_dims[index];
+        const Index kernel_dim = kernel_dims[i];
+        const Index result_dim = input_dim - kernel_dim + 1;
+        m_dimensions[index] = result_dim;
+        if (i < NumKernelDims - 1) {
+          m_kernelStride[i] = m_kernelStride[i + 1] * kernel_dims[i + 1];
+        } else {
+          m_kernelStride[NumKernelDims - 1] = 1;
+        }
+        m_indexStride[i] = m_inputStride[index];
+      }
+
+      m_outputStride[NumDims - 1] = 1;
+      for (int i = NumDims - 2; i >= 0; --i) {
+        m_outputStride[i] = m_outputStride[i + 1] * m_dimensions[i + 1];
+      }
+    }
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Dimensions& dimensions() const { return m_dimensions; }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool evalSubExprsIfNeeded(Scalar*) {
+    m_inputImpl.evalSubExprsIfNeeded(NULL);
+    preloadKernel();
+    return true;
+  }
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void cleanup() {
+    m_inputImpl.cleanup();
+    if (m_local_kernel) {
+      m_device.deallocate((void*)m_kernel);
+      m_local_kernel = false;
+    }
+    m_kernel = NULL;
+  }
+
+  void evalTo(typename XprType::Scalar* buffer) {
+    evalSubExprsIfNeeded(NULL);
+    for (int i = 0; i < dimensions().TotalSize(); ++i) {
+      buffer[i] += coeff(i);
+    }
+    cleanup();
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType coeff(Index index) const
+  {
+    CoeffReturnType result = CoeffReturnType(0);
+    convolve(firstInput(index), 0, NumKernelDims-1, result);
+    return result;
+  }
+
+  template<int LoadMode>
+  EIGEN_DEVICE_FUNC PacketReturnType packet(const Index index) const
+  {
+    Index indices[2] = {index, index+PacketSize-1};
+    Index startInputs[2] = {0, 0};
+    if (static_cast<int>(Layout) == static_cast<int>(ColMajor)) {
+      for (int i = NumDims - 1; i > 0; --i) {
+        const Index idx0 = indices[0] / m_outputStride[i];
+        const Index idx1 = indices[1] / m_outputStride[i];
+        startInputs[0] += idx0 * m_inputStride[i];
+        startInputs[1] += idx1 * m_inputStride[i];
+        indices[0] -= idx0 * m_outputStride[i];
+        indices[1] -= idx1 * m_outputStride[i];
+      }
+    } else {
+      for (int i = 0; i < NumDims - 1; ++i) {
+        const Index idx0 = indices[0] / m_outputStride[i];
+        const Index idx1 = indices[1] / m_outputStride[i];
+        startInputs[0] += idx0 * m_inputStride[i];
+        startInputs[1] += idx1 * m_inputStride[i];
+        indices[0] -= idx0 * m_outputStride[i];
+        indices[1] -= idx1 * m_outputStride[i];
+      }
+    }
+    startInputs[0] += indices[0];
+    startInputs[1] += indices[1];
+
+    if (startInputs[1]-startInputs[0] == PacketSize-1) {
+      PacketReturnType result = internal::pset1<PacketReturnType>(0);
+      convolvePacket(startInputs[0], 0, NumKernelDims-1, result);
+      return result;
+    } else {
+      EIGEN_ALIGN_MAX Scalar data[PacketSize];
+      data[0] = Scalar(0);
+      convolve(startInputs[0], 0, NumKernelDims-1, data[0]);
+      for (int i = 1; i < PacketSize-1; ++i) {
+        data[i] = Scalar(0);
+        convolve(firstInput(index+i), 0, NumKernelDims-1, data[i]);
+      }
+      data[PacketSize-1] = Scalar(0);
+      convolve(startInputs[1], 0, NumKernelDims-1, data[PacketSize-1]);
+      return internal::pload<PacketReturnType>(data);
+    }
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorOpCost
+  costPerCoeff(bool vectorized) const {
+    const double kernel_size = m_kernelImpl.dimensions().TotalSize();
+    // We ignore the use of fused multiply-add.
+    const double convolve_compute_cost =
+        TensorOpCost::AddCost<Scalar>() + TensorOpCost::MulCost<Scalar>();
+    const double firstIndex_compute_cost =
+        NumDims *
+        (2 * TensorOpCost::AddCost<Index>() + 2 * TensorOpCost::MulCost<Index>() +
+         TensorOpCost::DivCost<Index>());
+    return TensorOpCost(0, 0, firstIndex_compute_cost, vectorized, PacketSize) +
+           kernel_size * (m_inputImpl.costPerCoeff(vectorized) +
+                          m_kernelImpl.costPerCoeff(vectorized) +
+                          TensorOpCost(0, 0, convolve_compute_cost, vectorized,
+                                       PacketSize));
+  }
+
+  EIGEN_DEVICE_FUNC Scalar* data() const { return NULL; }
+
+ private:
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Index firstInput(Index index) const {
+    Index startInput = 0;
+    if (static_cast<int>(Layout) == static_cast<int>(ColMajor)) {
+      for (int i = NumDims - 1; i > 0; --i) {
+        const Index idx = index / m_outputStride[i];
+        startInput += idx * m_inputStride[i];
+        index -= idx * m_outputStride[i];
+      }
+    } else {
+      for (int i = 0; i < NumDims - 1; ++i) {
+        const Index idx = index / m_outputStride[i];
+        startInput += idx * m_inputStride[i];
+        index -= idx * m_outputStride[i];
+      }
+    }
+    startInput += index;
+    return startInput;
+  }
+
+  EIGEN_DEVICE_FUNC void convolve(Index firstIndex, Index firstKernel, int DimIndex, CoeffReturnType& accum) const {
+    for (int j = 0; j < m_kernelImpl.dimensions()[DimIndex]; ++j) {
+      const Index input = firstIndex + j * m_indexStride[DimIndex];
+      const Index kernel = firstKernel + j * m_kernelStride[DimIndex];
+      if (DimIndex > 0) {
+        convolve(input, kernel, DimIndex-1, accum);
+      } else {
+        accum += m_inputImpl.coeff(input) * m_kernel[kernel];
+      }
+    }
+  }
+
+  template <typename Packet>
+  EIGEN_DEVICE_FUNC void convolvePacket(Index firstIndex, Index firstKernel, int DimIndex, Packet& accum) const {
+    for (int j = 0; j < m_kernelImpl.dimensions()[DimIndex]; ++j) {
+      const Index input = firstIndex + j * m_indexStride[DimIndex];
+      const Index kernel = firstKernel + j * m_kernelStride[DimIndex];
+      if (DimIndex > 0) {
+        convolvePacket(input, kernel, DimIndex-1, accum);
+      } else {
+        accum = internal::pmadd<Packet>(m_inputImpl.template packet<Unaligned>(input), internal::pset1<Packet>(m_kernel[kernel]), accum);
+      }
+    }
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void preloadKernel() {
+    // Don't make a local copy of the kernel unless we have to (i.e. it's an
+    // expression that needs to be evaluated)
+    const Scalar* in_place = m_kernelImpl.data();
+    if (in_place) {
+      m_kernel = in_place;
+      m_local_kernel = false;
+    } else {
+      size_t kernel_sz = m_kernelImpl.dimensions().TotalSize() * sizeof(Scalar);
+      Scalar* local = (Scalar*)m_device.allocate(kernel_sz);
+      typedef TensorEvalToOp<const KernelArgType> EvalTo;
+      EvalTo evalToTmp(local, m_kernelArg);
+      const bool PacketAccess = internal::IsVectorizable<Device, KernelArgType>::value;
+      internal::TensorExecutor<const EvalTo, Device, PacketAccess>::run(evalToTmp, m_device);
+
+      m_kernel = local;
+      m_local_kernel = true;
+    }
+  }
+
+  array<Index, NumDims> m_inputStride;
+  array<Index, NumDims> m_outputStride;
+
+  array<Index, NumKernelDims> m_indexStride;
+  array<Index, NumKernelDims> m_kernelStride;
+  TensorEvaluator<InputArgType, Device> m_inputImpl;
+  TensorEvaluator<KernelArgType, Device> m_kernelImpl;
+  Dimensions m_dimensions;
+
+  KernelArgType m_kernelArg;
+  const Scalar* m_kernel;
+  bool m_local_kernel;
+  const Device& m_device;
+};
+
+
+
+
+// Use an optimized implementation of the evaluation code for GPUs whenever possible.
+#if defined(EIGEN_USE_GPU) && defined(__CUDACC__)
+
+template <int StaticKernelSize>
+struct GetKernelSize {
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE int operator() (const int /*kernelSize*/) const {
+    return StaticKernelSize;
+  }
+};
+template <>
+struct GetKernelSize<Dynamic> {
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE int operator() (const int kernelSize) const {
+    return kernelSize;
+  }
+};
+
+template <typename InputEvaluator, typename Index, typename InputDims,
+          int StaticKernelSize>
+__global__ void EigenConvolutionKernel1D(
+    InputEvaluator eval,
+    const internal::IndexMapper<Index, InputDims, 1, InputEvaluator::Layout>
+        indexMapper,
+    const float* __restrict kernel, const int numPlanes, const int numX,
+    const int maxX, const int kernelSize, float* buffer) {
+  extern __shared__ float s[];
+
+  const int first_x = blockIdx.x * maxX;
+  const int last_x = (first_x + maxX < numX ? first_x + maxX : numX) - 1;
+  const int num_x_input = last_x - first_x + GetKernelSize<StaticKernelSize>()(kernelSize);
+  const int num_x_output = last_x - first_x + 1;
+
+  const int first_plane = blockIdx.y * blockDim.y;
+  const int plane_stride = blockDim.y * gridDim.y;
+
+  for (int p = first_plane + threadIdx.y; p < numPlanes; p += plane_stride) {
+    // Load inputs to shared memory
+    const int plane_input_offset = indexMapper.mapCudaInputPlaneToTensorInputOffset(p);
+    const int plane_kernel_offset = threadIdx.y * num_x_input;
+    #pragma unroll
+    for (int i = threadIdx.x; i < num_x_input; i += blockDim.x) {
+      const int tensor_index = plane_input_offset + indexMapper.mapCudaInputKernelToTensorInputOffset(i+first_x);
+      s[i + plane_kernel_offset] = eval.coeff(tensor_index);
+    }
+
+    __syncthreads();
+
+    // Compute the convolution
+    const int plane_output_offset = indexMapper.mapCudaOutputPlaneToTensorOutputOffset(p);
+
+    #pragma unroll
+    for (int i = threadIdx.x; i < num_x_output; i += blockDim.x) {
+      const int kernel_offset = plane_kernel_offset + i;
+      float result = 0.0f;
+      #pragma unroll
+      for (int k = 0; k < GetKernelSize<StaticKernelSize>()(kernelSize); ++k) {
+        result += s[k + kernel_offset] * kernel[k];
+      }
+      const int tensor_index = plane_output_offset + indexMapper.mapCudaOutputKernelToTensorOutputOffset(i+first_x);
+      buffer[tensor_index] = result;
+    }
+    __syncthreads();
+  }
+};
+
+template <typename InputEvaluator, typename Index, typename InputDims,
+          int StaticKernelSizeX, int StaticKernelSizeY>
+__global__ void EigenConvolutionKernel2D(
+    InputEvaluator eval,
+    const internal::IndexMapper<Index, InputDims, 2, InputEvaluator::Layout>
+        indexMapper,
+    const float* __restrict kernel, const int numPlanes, const int numX,
+    const int maxX, const int numY, const int maxY, const int kernelSizeX,
+    const int kernelSizeY, float* buffer) {
+  extern __shared__ float s[];
+
+  const int first_x = blockIdx.x * maxX;
+  const int last_x = (first_x + maxX < numX ? first_x + maxX : numX) - 1;
+  const int num_x_input = last_x - first_x + GetKernelSize<StaticKernelSizeX>()(kernelSizeX);
+  const int num_x_output = last_x - first_x + 1;
+
+  const int first_y = blockIdx.y * maxY;
+  const int last_y = (first_y + maxY < numY ? first_y + maxY : numY) - 1;
+  const int num_y_input = last_y - first_y + GetKernelSize<StaticKernelSizeY>()(kernelSizeY);
+  const int num_y_output = last_y - first_y + 1;
+
+  const int first_plane = blockIdx.z * blockDim.z;
+  const int plane_stride = blockDim.z * gridDim.z;
+
+  for (int p = first_plane + threadIdx.z; p < numPlanes; p += plane_stride) {
+
+    const int plane_input_offset = indexMapper.mapCudaInputPlaneToTensorInputOffset(p);
+    const int plane_kernel_offset = threadIdx.z * num_y_input;
+
+    // Load inputs to shared memory
+    #pragma unroll
+    for (int j = threadIdx.y; j < num_y_input; j += blockDim.y) {
+      const int input_offset = num_x_input * (j + plane_kernel_offset);
+      #pragma unroll
+      for (int i = threadIdx.x; i < num_x_input; i += blockDim.x) {
+        const int tensor_index = plane_input_offset + indexMapper.mapCudaInputKernelToTensorInputOffset(i+first_x, j+first_y);
+        s[i + input_offset] = eval.coeff(tensor_index);
+      }
+    }
+
+    __syncthreads();
+
+    // Convolution
+    const int plane_output_offset = indexMapper.mapCudaOutputPlaneToTensorOutputOffset(p);
+
+    #pragma unroll
+    for (int j = threadIdx.y; j < num_y_output; j += blockDim.y) {
+      #pragma unroll
+      for (int i = threadIdx.x; i < num_x_output; i += blockDim.x) {
+        float result = 0.0f;
+        #pragma unroll
+        for (int l = 0; l < GetKernelSize<StaticKernelSizeY>()(kernelSizeY); ++l) {
+          const int kernel_offset = kernelSizeX * l;
+          const int input_offset = i + num_x_input * (j + l + plane_kernel_offset);
+          #pragma unroll
+          for (int k = 0; k < GetKernelSize<StaticKernelSizeX>()(kernelSizeX); ++k) {
+            result += s[k + input_offset] * kernel[k + kernel_offset];
+          }
+        }
+        const int tensor_index = plane_output_offset + indexMapper.mapCudaOutputKernelToTensorOutputOffset(i+first_x, j+first_y);
+        buffer[tensor_index] = result;
+      }
+    }
+
+    __syncthreads();
+  }
+};
+
+template <typename InputEvaluator, typename Index, typename InputDims>
+__global__ void EigenConvolutionKernel3D(
+    InputEvaluator eval,
+    const internal::IndexMapper<Index, InputDims, 3, InputEvaluator::Layout>
+        indexMapper,
+    const float* __restrict kernel, const size_t numPlanes, const size_t numX,
+    const size_t maxX, const size_t numY, const size_t maxY, const size_t numZ,
+    const size_t maxZ, const size_t kernelSizeX, const size_t kernelSizeY,
+    const size_t kernelSizeZ, float* buffer) {
+  extern __shared__ float s[];
+
+  // Load inputs to shared memory
+  const int first_x = blockIdx.x * maxX;
+  const int last_x = (first_x + maxX < numX ? first_x + maxX : numX) - 1;
+  const int num_x_input = last_x - first_x + kernelSizeX;
+
+  const int first_y = blockIdx.y * maxY;
+  const int last_y = (first_y + maxY < numY ? first_y + maxY : numY) - 1;
+  const int num_y_input = last_y - first_y + kernelSizeY;
+
+  const int first_z = blockIdx.z * maxZ;
+  const int last_z = (first_z + maxZ < numZ ? first_z + maxZ : numZ) - 1;
+  const int num_z_input = last_z - first_z + kernelSizeZ;
+
+  for (int p = 0; p < numPlanes; ++p) {
+
+    const int plane_input_offset = indexMapper.mapCudaInputPlaneToTensorInputOffset(p);
+    const int plane_kernel_offset = 0;
+
+    for (int k = threadIdx.z; k < num_z_input; k += blockDim.z) {
+      for (int j = threadIdx.y; j < num_y_input; j += blockDim.y) {
+        for (int i = threadIdx.x; i < num_x_input; i += blockDim.x) {
+          const int tensor_index = plane_input_offset + indexMapper.mapCudaInputKernelToTensorInputOffset(i+first_x, j+first_y, k+first_z);
+          s[i + num_x_input * (j + num_y_input * (k + plane_kernel_offset))] = eval.coeff(tensor_index);
+        }
+      }
+    }
+
+    __syncthreads();
+
+    // Convolution
+    const int num_z_output = last_z - first_z + 1;
+    const int num_y_output = last_y - first_y + 1;
+    const int num_x_output = last_x - first_x + 1;
+    const int plane_output_offset = indexMapper.mapCudaOutputPlaneToTensorOutputOffset(p);
+
+    for (int k = threadIdx.z; k < num_z_output; k += blockDim.z) {
+      for (int j = threadIdx.y; j < num_y_output; j += blockDim.y) {
+        for (int i = threadIdx.x; i < num_x_output; i += blockDim.x) {
+          float result = 0.0f;
+          for (int n = 0; n < kernelSizeZ; ++n) {
+            for (int m = 0; m < kernelSizeY; ++m) {
+              for (int l = 0; l < kernelSizeX; ++l) {
+                result += s[i + l + num_x_input * (j + m + num_y_input * (k + n + plane_kernel_offset))] * kernel[l + kernelSizeX * (m + kernelSizeY * n)];
+              }
+            }
+          }
+          const int tensor_index = plane_output_offset + indexMapper.mapCudaOutputKernelToTensorOutputOffset(i+first_x, j+first_y, k+first_z);
+          buffer[tensor_index] = result;
+        }
+      }
+    }
+    __syncthreads();
+  }
+};
+
+
+
+template<typename Indices, typename InputArgType, typename KernelArgType>
+struct TensorEvaluator<const TensorConvolutionOp<Indices, InputArgType, KernelArgType>, GpuDevice>
+{
+  typedef TensorConvolutionOp<Indices, InputArgType, KernelArgType> XprType;
+
+  static const int NumDims =  internal::array_size<typename TensorEvaluator<InputArgType, GpuDevice>::Dimensions>::value;
+  static const int NumKernelDims = internal::array_size<Indices>::value;
+  typedef typename XprType::Index Index;
+  typedef DSizes<Index, NumDims> Dimensions;
+  typedef typename TensorEvaluator<KernelArgType, GpuDevice>::Dimensions KernelDimensions;
+
+  enum {
+    IsAligned = TensorEvaluator<InputArgType, GpuDevice>::IsAligned & TensorEvaluator<KernelArgType, GpuDevice>::IsAligned,
+    PacketAccess = false,
+    Layout = TensorEvaluator<InputArgType, GpuDevice>::Layout,
+    CoordAccess = false,  // to be implemented
+    RawAccess = false
+  };
+
+  EIGEN_DEVICE_FUNC TensorEvaluator(const XprType& op, const GpuDevice& device)
+      : m_inputImpl(op.inputExpression(), device), m_kernelArg(op.kernelExpression()), m_kernelImpl(op.kernelExpression(), device), m_indices(op.indices()), m_buf(NULL), m_kernel(NULL), m_local_kernel(false), m_device(device)
+  {
+    EIGEN_STATIC_ASSERT((static_cast<int>(TensorEvaluator<InputArgType, GpuDevice>::Layout) == static_cast<int>(TensorEvaluator<KernelArgType, GpuDevice>::Layout)), YOU_MADE_A_PROGRAMMING_MISTAKE);
+
+    const typename TensorEvaluator<InputArgType, GpuDevice>::Dimensions& input_dims = m_inputImpl.dimensions();
+    const typename TensorEvaluator<KernelArgType, GpuDevice>::Dimensions& kernel_dims = m_kernelImpl.dimensions();
+
+    m_dimensions = m_inputImpl.dimensions();
+    for (int i = 0; i < NumKernelDims; ++i) {
+      const Index index = op.indices()[i];
+      const Index input_dim = input_dims[index];
+      const Index kernel_dim = kernel_dims[i];
+      const Index result_dim = input_dim - kernel_dim + 1;
+      m_dimensions[index] = result_dim;
+    }
+  }
+
+  typedef typename XprType::CoeffReturnType CoeffReturnType;
+  typedef typename PacketType<CoeffReturnType, GpuDevice>::type PacketReturnType;
+  typedef typename InputArgType::Scalar Scalar;
+  static const int PacketSize = internal::unpacket_traits<PacketReturnType>::size;
+
+  EIGEN_DEVICE_FUNC const Dimensions& dimensions() const { return m_dimensions; }
+
+  EIGEN_STRONG_INLINE bool evalSubExprsIfNeeded(Scalar* data) {
+    preloadKernel();
+    m_inputImpl.evalSubExprsIfNeeded(NULL);
+    if (data) {
+      executeEval(data);
+      return false;
+    } else {
+      m_buf = (Scalar*)m_device.allocate(dimensions().TotalSize() * sizeof(Scalar));
+      executeEval(m_buf);
+      return true;
+    }
+  }
+
+  EIGEN_STRONG_INLINE void cleanup() {
+    m_inputImpl.cleanup();
+    if (m_buf) {
+      m_device.deallocate(m_buf);
+      m_buf = NULL;
+    }
+    if (m_local_kernel) {
+      m_device.deallocate((void*)m_kernel);
+      m_local_kernel = false;
+    }
+    m_kernel = NULL;
+  }
+
+  EIGEN_STRONG_INLINE void preloadKernel() {
+    // Don't make a local copy of the kernel unless we have to (i.e. it's an
+    // expression that needs to be evaluated)
+    const Scalar* in_place = m_kernelImpl.data();
+    if (in_place) {
+      m_kernel = in_place;
+      m_local_kernel = false;
+    } else {
+      size_t kernel_sz = m_kernelImpl.dimensions().TotalSize() * sizeof(Scalar);
+      Scalar* local = (Scalar*)m_device.allocate(kernel_sz);
+      typedef TensorEvalToOp<const KernelArgType> EvalTo;
+      EvalTo evalToTmp(local, m_kernelArg);
+      const bool PacketAccess = internal::IsVectorizable<GpuDevice, KernelArgType>::value;
+      internal::TensorExecutor<const EvalTo, GpuDevice, PacketAccess>::run(evalToTmp, m_device);
+
+      m_kernel = local;
+      m_local_kernel = true;
+    }
+  }
+
+  static unsigned int ceil(unsigned int num, unsigned int denom) {
+    const unsigned int rounded_toward_zero = num / denom;
+    if (num > rounded_toward_zero * denom) {
+      return rounded_toward_zero + 1;
+    }
+    return rounded_toward_zero;
+  }
+
+  void executeEval(Scalar* data) const {
+    typedef typename TensorEvaluator<InputArgType, GpuDevice>::Dimensions InputDims;
+
+    const int maxSharedMem = m_device.sharedMemPerBlock();
+    const int maxThreadsPerBlock = m_device.maxCudaThreadsPerBlock();
+    const int maxBlocksPerProcessor = m_device.maxCudaThreadsPerMultiProcessor() / maxThreadsPerBlock;
+    const int numMultiProcessors = m_device.getNumCudaMultiProcessors();
+    const int warpSize = 32;
+
+    switch (NumKernelDims) {
+      case 1: {
+        const int kernel_size = m_kernelImpl.dimensions().TotalSize();
+
+        const int numX = dimensions()[m_indices[0]];
+        const int numP = dimensions().TotalSize() / numX;
+        int maxX;
+        dim3 block_size;
+
+        const int single_stride_dim =
+            static_cast<int>(Layout) == static_cast<int>(ColMajor)
+                ? 0
+                : m_inputImpl.dimensions().rank() - 1;
+        if (m_indices[0] == single_stride_dim) {
+          // Maximum the reuse
+          const int inner_dim = ((maxSharedMem / (sizeof(Scalar)) - kernel_size + 1 + 31) / 32) * 32;
+          maxX = numext::mini<int>(inner_dim, numX);
+          const int maxP = numext::mini<int>(maxSharedMem / ((kernel_size - 1 + maxX) * sizeof(Scalar)), numP);
+          block_size.x = numext::mini(maxThreadsPerBlock, maxX);
+          block_size.y = numext::mini<int>(maxThreadsPerBlock / block_size.x, maxP);
+        }
+        else {
+          // Read as much as possible alongside the inner most dimension, that is the plane
+          const int inner_dim = maxSharedMem / ((warpSize + kernel_size) * sizeof(Scalar));
+          const int maxP = numext::mini<int>(inner_dim, numP);
+          maxX = numext::mini<int>(maxSharedMem / (inner_dim * sizeof(Scalar)) - kernel_size + 1, numX);
+
+          block_size.x = numext::mini(warpSize, maxX);
+          block_size.y = numext::mini<int>(maxThreadsPerBlock/block_size.x, maxP);
+        }
+
+        const int shared_mem = block_size.y * (maxX + kernel_size - 1) * sizeof(Scalar);
+        assert(shared_mem <= maxSharedMem);
+
+        const int num_x_blocks = ceil(numX, maxX);
+        const int blocksPerProcessor = numext::mini(maxBlocksPerProcessor, maxSharedMem / shared_mem);
+        const int num_y_blocks = ceil(numMultiProcessors * blocksPerProcessor, num_x_blocks);
+
+        dim3 num_blocks(num_x_blocks, numext::mini<int>(num_y_blocks, ceil(numP, block_size.y)));
+
+
+        //cout << "launching 1D kernel with block_size.x: " << block_size.x << " block_size.y: " << block_size.y << " num_blocks.x: " << num_blocks.x << " num_blocks.y: " << num_blocks.y << " maxX: " << maxX << " shared_mem: " << shared_mem << " in stream " << m_device.stream() << endl;
+
+        const array<Index, 1> indices(m_indices[0]);
+        const array<Index, 1> kernel_dims(m_kernelImpl.dimensions()[0]);
+        internal::IndexMapper<Index, InputDims, 1, Layout> indexMapper(
+            m_inputImpl.dimensions(), kernel_dims, indices);
+        switch(kernel_size) {
+          case 4: {
+            LAUNCH_CUDA_KERNEL((EigenConvolutionKernel1D<TensorEvaluator<InputArgType, GpuDevice>, Index, InputDims, 4>), num_blocks, block_size, shared_mem, m_device, m_inputImpl, indexMapper, m_kernel, numP, numX, maxX, 4, data);
+            break;
+          }
+          case 7: {
+            LAUNCH_CUDA_KERNEL((EigenConvolutionKernel1D<TensorEvaluator<InputArgType, GpuDevice>, Index, InputDims, 7>), num_blocks, block_size, shared_mem, m_device, m_inputImpl, indexMapper, m_kernel, numP, numX, maxX, 7, data);
+            break;
+          }
+          default: {
+            LAUNCH_CUDA_KERNEL((EigenConvolutionKernel1D<TensorEvaluator<InputArgType, GpuDevice>, Index, InputDims, Dynamic>), num_blocks, block_size, shared_mem, m_device, m_inputImpl, indexMapper, m_kernel, numP, numX, maxX, kernel_size, data);
+          }
+        }
+        break;
+      }
+
+      case 2: {
+        const int idxX =
+            static_cast<int>(Layout) == static_cast<int>(ColMajor) ? 0 : 1;
+        const int idxY =
+            static_cast<int>(Layout) == static_cast<int>(ColMajor) ? 1 : 0;
+        const int kernel_size_x = m_kernelImpl.dimensions()[idxX];
+        const int kernel_size_y = m_kernelImpl.dimensions()[idxY];
+
+        const int numX = dimensions()[m_indices[idxX]];
+        const int numY = dimensions()[m_indices[idxY]];
+        const int numP = dimensions().TotalSize() / (numX*numY);
+
+        const float scaling_factor = sqrtf(static_cast<float>(maxSharedMem) / (sizeof(Scalar) * kernel_size_y * kernel_size_x));
+
+        // Snap maxX to warp size
+        int inner_dim = ((static_cast<int>(scaling_factor * kernel_size_x) - kernel_size_x + 1 + 32) / 32) * 32;
+        const int maxX = numext::mini<int>(inner_dim, numX);
+        const int maxY = numext::mini<int>(maxSharedMem / (sizeof(Scalar) * (maxX + kernel_size_x - 1)) - kernel_size_y + 1, numY);
+        const int maxP = numext::mini<int>(maxSharedMem / ((kernel_size_x - 1 + maxX) * (kernel_size_y - 1 + maxY) * sizeof(Scalar)), numP);
+
+        dim3 block_size;
+        block_size.x = numext::mini(1024, maxX);
+        block_size.y = numext::mini<int>(1024/block_size.x, maxY);
+        block_size.z = numext::mini<int>(1024/(block_size.x*block_size.y), maxP);
+
+        const int shared_mem = block_size.z * (maxX + kernel_size_x - 1) * (maxY + kernel_size_y - 1) * sizeof(Scalar);
+        assert(shared_mem <= maxSharedMem);
+
+        const int num_x_blocks = ceil(numX, maxX);
+        const int num_y_blocks = ceil(numY, maxY);
+        const int blocksPerProcessor = numext::mini(maxBlocksPerProcessor, maxSharedMem / shared_mem);
+        const int num_z_blocks = ceil(numMultiProcessors * blocksPerProcessor, num_x_blocks * num_y_blocks);
+
+        dim3 num_blocks(num_x_blocks, num_y_blocks, numext::mini<int>(num_z_blocks, ceil(numP, block_size.z)));
+
+
+        //cout << "launching 2D kernel with block_size.x: " << block_size.x << " block_size.y: " << block_size.y  << " block_size.z: " << block_size.z << " num_blocks.x: " << num_blocks.x << " num_blocks.y: " << num_blocks.y << " num_blocks.z: " << num_blocks.z << " maxX: " << maxX << " maxY: " << maxY << " maxP: " << maxP << " shared_mem: " << shared_mem << " in stream " << m_device.stream() << endl;
+
+        const array<Index, 2> indices(m_indices[idxX], m_indices[idxY]);
+        const array<Index, 2> kernel_dims(m_kernelImpl.dimensions()[idxX],
+                                          m_kernelImpl.dimensions()[idxY]);
+        internal::IndexMapper<Index, InputDims, 2, Layout> indexMapper(
+            m_inputImpl.dimensions(), kernel_dims, indices);
+        switch (kernel_size_x) {
+          case 4: {
+            switch (kernel_size_y) {
+              case 7: {
+                LAUNCH_CUDA_KERNEL((EigenConvolutionKernel2D<TensorEvaluator<InputArgType, GpuDevice>, Index, InputDims, 4, 7>), num_blocks, block_size, shared_mem, m_device, m_inputImpl, indexMapper, m_kernel, numP, numX, maxX, numY, maxY, 4, 7, data);
+                break;
+              }
+              default: {
+                LAUNCH_CUDA_KERNEL((EigenConvolutionKernel2D<TensorEvaluator<InputArgType, GpuDevice>, Index, InputDims, 4, Dynamic>), num_blocks, block_size, shared_mem, m_device, m_inputImpl, indexMapper, m_kernel, numP, numX, maxX, numY, maxY, 4, kernel_size_y, data);
+                break;
+              }
+            }
+            break;
+          }
+          case 7: {
+            switch (kernel_size_y) {
+              case 4: {
+                LAUNCH_CUDA_KERNEL((EigenConvolutionKernel2D<TensorEvaluator<InputArgType, GpuDevice>, Index, InputDims, 7, 4>), num_blocks, block_size, shared_mem, m_device, m_inputImpl, indexMapper, m_kernel, numP, numX, maxX, numY, maxY, 7, 4, data);
+                break;
+              }
+              default: {
+                LAUNCH_CUDA_KERNEL((EigenConvolutionKernel2D<TensorEvaluator<InputArgType, GpuDevice>, Index, InputDims, 7, Dynamic>), num_blocks, block_size, shared_mem, m_device, m_inputImpl, indexMapper, m_kernel, numP, numX, maxX, numY, maxY, 7, kernel_size_y, data);
+                break;
+              }
+            }
+            break;
+          }
+          default: {
+            LAUNCH_CUDA_KERNEL((EigenConvolutionKernel2D<TensorEvaluator<InputArgType, GpuDevice>, Index, InputDims, Dynamic, Dynamic>), num_blocks, block_size, shared_mem, m_device, m_inputImpl, indexMapper, m_kernel, numP, numX, maxX, numY, maxY, kernel_size_x, kernel_size_y, data);
+            break;
+          }
+        }
+        break;
+      }
+
+      case 3: {
+        const int idxX =
+            static_cast<int>(Layout) == static_cast<int>(ColMajor) ? 0 : 2;
+        const int idxY =
+            static_cast<int>(Layout) == static_cast<int>(ColMajor) ? 1 : 1;
+        const int idxZ =
+            static_cast<int>(Layout) == static_cast<int>(ColMajor) ? 2 : 0;
+
+        const int kernel_size_x = m_kernelImpl.dimensions()[idxX];
+        const int kernel_size_y = m_kernelImpl.dimensions()[idxY];
+        const int kernel_size_z = m_kernelImpl.dimensions()[idxZ];
+
+        const int numX = dimensions()[m_indices[idxX]];
+        const int numY = dimensions()[m_indices[idxY]];
+        const int numZ = dimensions()[m_indices[idxZ]];
+        const int numP = dimensions().TotalSize() / (numX*numY*numZ);
+
+        const int maxX = numext::mini<int>(128, numext::mini<int>(maxSharedMem / (sizeof(Scalar) * kernel_size_y * kernel_size_z) - kernel_size_x + 1, numX));
+        const int maxY = numext::mini<int>(128, numext::mini<int>(maxSharedMem / (sizeof(Scalar) * (maxX + kernel_size_x - 1) * kernel_size_z) - kernel_size_y + 1, numY));
+        const int maxZ = numext::mini<int>(128, numext::mini<int>(maxSharedMem / (sizeof(Scalar) * (maxX + kernel_size_x - 1) * (maxY + kernel_size_y - 1)) - kernel_size_z + 1, numZ));
+
+        dim3 block_size;
+        block_size.x = numext::mini(32, maxX);
+        block_size.y = numext::mini(32, maxY);
+        block_size.z = numext::mini<int>(1024/(block_size.x*block_size.y), maxZ);
+        dim3 num_blocks(ceil(numX, maxX), ceil(numY, maxY), ceil(numZ, maxZ));
+
+        const int shared_mem = (maxX + kernel_size_x - 1) * (maxY + kernel_size_y - 1) * (maxZ + kernel_size_z - 1) * sizeof(Scalar);
+        assert(shared_mem <= maxSharedMem);
+
+        //cout << "launching 3D kernel with block_size.x: " << block_size.x << " block_size.y: " << block_size.y  << " block_size.z: " << block_size.z << " num_blocks.x: " << num_blocks.x << " num_blocks.y: " << num_blocks.y << " num_blocks.z: " << num_blocks.z  << " shared_mem: " << shared_mem << " in stream " << m_device.stream() << endl;
+        const array<Index, 3> indices(m_indices[idxX], m_indices[idxY],
+                                      m_indices[idxZ]);
+        const array<Index, 3> kernel_dims(m_kernelImpl.dimensions()[idxX],
+                                          m_kernelImpl.dimensions()[idxY],
+                                          m_kernelImpl.dimensions()[idxZ]);
+        internal::IndexMapper<Index, InputDims, 3, Layout> indexMapper(
+            m_inputImpl.dimensions(), kernel_dims, indices);
+
+        LAUNCH_CUDA_KERNEL((EigenConvolutionKernel3D<TensorEvaluator<InputArgType, GpuDevice>, Index, InputDims>), num_blocks, block_size, shared_mem, m_device, m_inputImpl, indexMapper, m_kernel, numP, numX, maxX, numY, maxY, numZ, maxZ, kernel_size_x, kernel_size_y, kernel_size_z, data);
+        break;
+      }
+
+      default: {
+        EIGEN_STATIC_ASSERT((NumKernelDims >= 1 && NumKernelDims <= 3), THIS_METHOD_IS_ONLY_FOR_OBJECTS_OF_A_SPECIFIC_SIZE);
+      }
+    }
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType coeff(Index index) const
+  {
+    eigen_assert(m_buf);
+    eigen_assert(index < m_dimensions.TotalSize());
+    return m_buf[index];
+  }
+
+  template<int LoadMode>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketReturnType packet(const Index index) const
+  {
+    eigen_assert(m_buf);
+    eigen_assert(index < m_dimensions.TotalSize());
+    return internal::ploadt<PacketReturnType, LoadMode>(m_buf+index);
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorOpCost
+  costPerCoeff(bool vectorized) const {
+    // TODO(rmlarsen): FIXME: For now, this is just a copy of the CPU cost
+    // model.
+    const double kernel_size = m_kernelImpl.dimensions().TotalSize();
+    // We ignore the use of fused multiply-add.
+    const double convolve_compute_cost =
+        TensorOpCost::AddCost<Scalar>() + TensorOpCost::MulCost<Scalar>();
+    const double firstIndex_compute_cost =
+        NumDims *
+        (2 * TensorOpCost::AddCost<Index>() + 2 * TensorOpCost::MulCost<Index>() +
+         TensorOpCost::DivCost<Index>());
+    return TensorOpCost(0, 0, firstIndex_compute_cost, vectorized, PacketSize) +
+           kernel_size * (m_inputImpl.costPerCoeff(vectorized) +
+                          m_kernelImpl.costPerCoeff(vectorized) +
+                          TensorOpCost(0, 0, convolve_compute_cost, vectorized,
+                                       PacketSize));
+  }
+
+ private:
+  // No assignment (copies are needed by the kernels)
+  TensorEvaluator& operator = (const TensorEvaluator&);
+
+  TensorEvaluator<InputArgType, GpuDevice> m_inputImpl;
+  TensorEvaluator<KernelArgType, GpuDevice> m_kernelImpl;
+  KernelArgType m_kernelArg;
+  Indices m_indices;
+  Dimensions m_dimensions;
+  Scalar* m_buf;
+  const Scalar* m_kernel;
+  bool m_local_kernel;
+
+  const GpuDevice& m_device;
+};
+#endif
+
+
+} // end namespace Eigen
+
+#endif // EIGEN_CXX11_TENSOR_TENSOR_CONVOLUTION_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorRandom.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorRandom.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorRandom.h	(revision 3762)
@@ -0,0 +1,276 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2016 Benoit Steiner <benoit.steiner.goog@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CXX11_TENSOR_TENSOR_RANDOM_H
+#define EIGEN_CXX11_TENSOR_TENSOR_RANDOM_H
+
+namespace Eigen {
+namespace internal {
+
+namespace {
+
+EIGEN_DEVICE_FUNC uint64_t get_random_seed() {
+#ifdef __CUDA_ARCH__
+  // We don't support 3d kernels since we currently only use 1 and
+  // 2d kernels.
+  assert(threadIdx.z == 0);
+  return clock64() +
+      blockIdx.x * blockDim.x + threadIdx.x +
+      gridDim.x * blockDim.x * (blockIdx.y * blockDim.y + threadIdx.y);
+
+#elif defined _WIN32
+  // Use the current time as a baseline.
+  SYSTEMTIME st;
+  GetSystemTime(&st);
+  int time = st.wSecond + 1000 * st.wMilliseconds;
+  // Mix in a random number to make sure that we get different seeds if
+  // we try to generate seeds faster than the clock resolution.
+  // We need 2 random values since the generator only generate 16 bits at
+  // a time (https://msdn.microsoft.com/en-us/library/398ax69y.aspx)
+  int rnd1 = ::rand();
+  int rnd2 = ::rand();
+  uint64_t rnd = (rnd1 | rnd2 << 16) ^ time;
+  return rnd;
+
+#elif defined __APPLE__
+  // Same approach as for win32, except that the random number generator
+  // is better (// https://developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man3/random.3.html#//apple_ref/doc/man/3/random).
+  uint64_t rnd = ::random() ^ mach_absolute_time();
+  return rnd;
+
+#else
+  // Augment the current time with pseudo random number generation
+  // to ensure that we get different seeds if we try to generate seeds
+  // faster than the clock resolution.
+  timespec ts;
+  clock_gettime(CLOCK_REALTIME, &ts);
+  uint64_t rnd = ::random() ^ ts.tv_nsec;
+  return rnd;
+#endif
+}
+
+static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE unsigned PCG_XSH_RS_generator(uint64_t* state) {
+  // TODO: Unify with the implementation in the non blocking thread pool.
+  uint64_t current = *state;
+  // Update the internal state
+  *state = current * 6364136223846793005ULL + 0xda3e39cb94b95bdbULL;
+  // Generate the random output (using the PCG-XSH-RS scheme)
+  return static_cast<unsigned>((current ^ (current >> 22)) >> (22 + (current >> 61)));
+}
+
+static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE uint64_t PCG_XSH_RS_state(uint64_t seed) {
+  seed = seed ? seed : get_random_seed();
+  return seed * 6364136223846793005ULL + 0xda3e39cb94b95bdbULL;
+}
+
+}  // namespace
+
+
+template <typename T> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+T RandomToTypeUniform(uint64_t* state) {
+  unsigned rnd = PCG_XSH_RS_generator(state);
+  return static_cast<T>(rnd);
+}
+
+
+template <> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+Eigen::half RandomToTypeUniform<Eigen::half>(uint64_t* state) {
+  Eigen::half result;
+  // Generate 10 random bits for the mantissa
+  unsigned rnd = PCG_XSH_RS_generator(state);
+  result.x = static_cast<uint16_t>(rnd & 0x3ffu);
+  // Set the exponent
+  result.x |= (static_cast<uint16_t>(15) << 10);
+  // Return the final result
+  return result - Eigen::half(1.0f);
+}
+
+
+template <> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+float RandomToTypeUniform<float>(uint64_t* state) {
+  typedef union {
+    uint32_t raw;
+    float fp;
+  } internal;
+  internal result;
+  // Generate 23 random bits for the mantissa mantissa
+  const unsigned rnd = PCG_XSH_RS_generator(state);
+  result.raw = rnd & 0x7fffffu;
+  // Set the exponent
+  result.raw |= (static_cast<uint32_t>(127) << 23);
+  // Return the final result
+  return result.fp - 1.0f;
+}
+
+template <> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+double RandomToTypeUniform<double>(uint64_t* state) {
+  typedef union {
+    uint64_t raw;
+    double dp;
+  } internal;
+  internal result;
+  result.raw = 0;
+  // Generate 52 random bits for the mantissa
+  // First generate the upper 20 bits
+  unsigned rnd1 = PCG_XSH_RS_generator(state) & 0xfffffu;
+  // The generate the lower 32 bits
+  unsigned rnd2 = PCG_XSH_RS_generator(state);
+  result.raw = (static_cast<uint64_t>(rnd1) << 32) | rnd2;
+  // Set the exponent
+  result.raw |= (static_cast<uint64_t>(1023) << 52);
+  // Return the final result
+  return result.dp - 1.0;
+}
+
+template <> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+std::complex<float> RandomToTypeUniform<std::complex<float> >(uint64_t* state) {
+  return std::complex<float>(RandomToTypeUniform<float>(state),
+                             RandomToTypeUniform<float>(state));
+}
+template <> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+std::complex<double> RandomToTypeUniform<std::complex<double> >(uint64_t* state) {
+  return std::complex<double>(RandomToTypeUniform<double>(state),
+                              RandomToTypeUniform<double>(state));
+}
+
+template <typename T> class UniformRandomGenerator {
+ public:
+  static const bool PacketAccess = true;
+
+  // Uses the given "seed" if non-zero, otherwise uses a random seed.
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE UniformRandomGenerator(
+      uint64_t seed = 0) {
+    m_state = PCG_XSH_RS_state(seed);
+  }
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE UniformRandomGenerator(
+      const UniformRandomGenerator& other) {
+    m_state = other.m_state;
+  }
+
+  template<typename Index> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  T operator()(Index i) const {
+    uint64_t local_state = m_state + i;
+    T result = RandomToTypeUniform<T>(&local_state);
+    m_state = local_state;
+    return result;
+  }
+
+  template<typename Packet, typename Index> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  Packet packetOp(Index i) const {
+    const int packetSize = internal::unpacket_traits<Packet>::size;
+    EIGEN_ALIGN_MAX T values[packetSize];
+    uint64_t local_state = m_state + i;
+    for (int j = 0; j < packetSize; ++j) {
+      values[j] = RandomToTypeUniform<T>(&local_state);
+    }
+    m_state = local_state;
+    return internal::pload<Packet>(values);
+  }
+
+ private:
+  mutable uint64_t m_state;
+};
+
+template <typename Scalar>
+struct functor_traits<UniformRandomGenerator<Scalar> > {
+  enum {
+    // Rough estimate for floating point, multiplied by ceil(sizeof(T) / sizeof(float)).
+    Cost = 12 * NumTraits<Scalar>::AddCost *
+           ((sizeof(Scalar) + sizeof(float) - 1) / sizeof(float)),
+    PacketAccess = UniformRandomGenerator<Scalar>::PacketAccess
+  };
+};
+
+
+
+template <typename T> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+T RandomToTypeNormal(uint64_t* state) {
+  // Use the ratio of uniform method to generate numbers following a normal
+  // distribution. See for example Numerical Recipes chapter 7.3.9 for the
+  // details.
+  T u, v, q;
+  do {
+    u = RandomToTypeUniform<T>(state);
+    v = T(1.7156) * (RandomToTypeUniform<T>(state) - T(0.5));
+    const T x = u - T(0.449871);
+    const T y = numext::abs(v) + T(0.386595);
+    q = x*x + y * (T(0.196)*y - T(0.25472)*x);
+  } while (q > T(0.27597) &&
+           (q > T(0.27846) || v*v > T(-4) * numext::log(u) * u*u));
+
+  return v/u;
+}
+
+template <> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+std::complex<float> RandomToTypeNormal<std::complex<float> >(uint64_t* state) {
+  return std::complex<float>(RandomToTypeNormal<float>(state),
+                             RandomToTypeNormal<float>(state));
+}
+template <> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+std::complex<double> RandomToTypeNormal<std::complex<double> >(uint64_t* state) {
+  return std::complex<double>(RandomToTypeNormal<double>(state),
+                              RandomToTypeNormal<double>(state));
+}
+
+
+template <typename T> class NormalRandomGenerator {
+ public:
+  static const bool PacketAccess = true;
+
+  // Uses the given "seed" if non-zero, otherwise uses a random seed.
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE NormalRandomGenerator(uint64_t seed = 0) {
+    m_state = PCG_XSH_RS_state(seed);
+  }
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE NormalRandomGenerator(
+      const NormalRandomGenerator& other) {
+    m_state = other.m_state;
+  }
+
+ template<typename Index> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  T operator()(Index i) const {
+    uint64_t local_state = m_state + i;
+    T result = RandomToTypeNormal<T>(&local_state);
+    m_state = local_state;
+    return result;
+  }
+
+  template<typename Packet, typename Index> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  Packet packetOp(Index i) const {
+    const int packetSize = internal::unpacket_traits<Packet>::size;
+    EIGEN_ALIGN_MAX T values[packetSize];
+    uint64_t local_state = m_state + i;
+    for (int j = 0; j < packetSize; ++j) {
+      values[j] = RandomToTypeNormal<T>(&local_state);
+    }
+    m_state = local_state;
+    return internal::pload<Packet>(values);
+  }
+
+ private:
+  mutable uint64_t m_state;
+};
+
+
+template <typename Scalar>
+struct functor_traits<NormalRandomGenerator<Scalar> > {
+  enum {
+    // On average, we need to generate about 3 random numbers
+    // 15 mul, 8 add, 1.5 logs
+    Cost = 3 * functor_traits<UniformRandomGenerator<Scalar> >::Cost +
+           15 * NumTraits<Scalar>::AddCost + 8 * NumTraits<Scalar>::AddCost +
+           3 * functor_traits<scalar_log_op<Scalar> >::Cost / 2,
+    PacketAccess = NormalRandomGenerator<Scalar>::PacketAccess
+  };
+};
+
+
+} // end namespace internal
+} // end namespace Eigen
+
+#endif // EIGEN_CXX11_TENSOR_TENSOR_RANDOM_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorContraction.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorContraction.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorContraction.h	(revision 3762)
@@ -0,0 +1,628 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2014 Benoit Steiner <benoit.steiner.goog@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CXX11_TENSOR_TENSOR_CONTRACTION_H
+#define EIGEN_CXX11_TENSOR_TENSOR_CONTRACTION_H
+
+namespace Eigen {
+
+/** \class TensorContraction
+  * \ingroup CXX11_Tensor_Module
+  *
+  * \brief Tensor contraction class.
+  *
+  *
+  */
+namespace internal {
+
+template<typename Dimensions, typename LhsXprType, typename RhsXprType>
+struct traits<TensorContractionOp<Dimensions, LhsXprType, RhsXprType> >
+{
+  // Type promotion to handle the case where the types of the lhs and the rhs are different.
+  typedef typename gebp_traits<typename remove_const<typename LhsXprType::Scalar>::type,
+                               typename remove_const<typename RhsXprType::Scalar>::type>::ResScalar Scalar;
+
+  typedef typename promote_storage_type<typename traits<LhsXprType>::StorageKind,
+                                        typename traits<RhsXprType>::StorageKind>::ret StorageKind;
+  typedef typename promote_index_type<typename traits<LhsXprType>::Index,
+                                      typename traits<RhsXprType>::Index>::type Index;
+  typedef typename LhsXprType::Nested LhsNested;
+  typedef typename RhsXprType::Nested RhsNested;
+  typedef typename remove_reference<LhsNested>::type _LhsNested;
+  typedef typename remove_reference<RhsNested>::type _RhsNested;
+
+  // From NumDims below.
+  static const int NumDimensions = traits<RhsXprType>::NumDimensions + traits<RhsXprType>::NumDimensions - 2 * array_size<Dimensions>::value;
+  static const int Layout = traits<LhsXprType>::Layout;
+
+  enum {
+    Flags = 0
+  };
+};
+
+template<typename Dimensions, typename LhsXprType, typename RhsXprType>
+struct eval<TensorContractionOp<Dimensions, LhsXprType, RhsXprType>, Eigen::Dense>
+{
+  typedef const TensorContractionOp<Dimensions, LhsXprType, RhsXprType>& type;
+};
+
+template<typename Dimensions, typename LhsXprType, typename RhsXprType>
+struct nested<TensorContractionOp<Dimensions, LhsXprType, RhsXprType>, 1, typename eval<TensorContractionOp<Dimensions, LhsXprType, RhsXprType> >::type>
+{
+  typedef TensorContractionOp<Dimensions, LhsXprType, RhsXprType> type;
+};
+
+template<typename Indices_, typename LeftArgType_, typename RightArgType_, typename Device_>
+struct traits<TensorEvaluator<const TensorContractionOp<Indices_, LeftArgType_, RightArgType_>, Device_> > {
+  typedef Indices_ Indices;
+  typedef LeftArgType_ LeftArgType;
+  typedef RightArgType_ RightArgType;
+  typedef Device_ Device;
+
+  // From NumDims below.
+  static const int NumDimensions = traits<LeftArgType_>::NumDimensions + traits<RightArgType_>::NumDimensions - 2 * array_size<Indices_>::value;
+};
+
+}  // end namespace internal
+
+template<typename Indices, typename LhsXprType, typename RhsXprType>
+class TensorContractionOp : public TensorBase<TensorContractionOp<Indices, LhsXprType, RhsXprType>, ReadOnlyAccessors>
+{
+  public:
+  typedef typename Eigen::internal::traits<TensorContractionOp>::Scalar Scalar;
+  typedef typename internal::gebp_traits<typename LhsXprType::CoeffReturnType,
+                                                   typename RhsXprType::CoeffReturnType>::ResScalar CoeffReturnType;
+  typedef typename Eigen::internal::nested<TensorContractionOp>::type Nested;
+  typedef typename Eigen::internal::traits<TensorContractionOp>::StorageKind StorageKind;
+  typedef typename Eigen::internal::traits<TensorContractionOp>::Index Index;
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorContractionOp(
+      const LhsXprType& lhs, const RhsXprType& rhs, const Indices& dims)
+      : m_lhs_xpr(lhs), m_rhs_xpr(rhs), m_indices(dims) {}
+
+  EIGEN_DEVICE_FUNC
+  const Indices& indices() const { return m_indices; }
+
+  /** \returns the nested expressions */
+  EIGEN_DEVICE_FUNC
+  const typename internal::remove_all<typename LhsXprType::Nested>::type&
+  lhsExpression() const { return m_lhs_xpr; }
+
+  EIGEN_DEVICE_FUNC
+  const typename internal::remove_all<typename RhsXprType::Nested>::type&
+  rhsExpression() const { return m_rhs_xpr; }
+
+  protected:
+    typename LhsXprType::Nested m_lhs_xpr;
+    typename RhsXprType::Nested m_rhs_xpr;
+    const Indices m_indices;
+};
+
+
+template<typename Derived>
+struct TensorContractionEvaluatorBase
+{
+  typedef typename internal::traits<Derived>::Indices Indices;
+  typedef typename internal::traits<Derived>::LeftArgType LeftArgType;
+  typedef typename internal::traits<Derived>::RightArgType RightArgType;
+  typedef typename internal::traits<Derived>::Device Device;
+
+  typedef TensorContractionOp<Indices, LeftArgType, RightArgType> XprType;
+  typedef typename internal::remove_const<typename XprType::Scalar>::type Scalar;
+  typedef typename XprType::Index Index;
+  typedef typename XprType::CoeffReturnType CoeffReturnType;
+  typedef typename PacketType<CoeffReturnType, Device>::type PacketReturnType;
+
+  enum {
+    IsAligned = true,
+    PacketAccess = (internal::unpacket_traits<PacketReturnType>::size > 1),
+    Layout = TensorEvaluator<LeftArgType, Device>::Layout,
+    CoordAccess = false,  // to be implemented
+    RawAccess = true
+  };
+
+  // Most of the code is assuming that both input tensors are ColMajor. If the
+  // inputs are RowMajor, we will "cheat" by swapping the LHS and RHS:
+  // If we want to compute A * B = C, where A is LHS and B is RHS, the code
+  // will pretend B is LHS and A is RHS.
+  typedef typename internal::conditional<
+    static_cast<int>(Layout) == static_cast<int>(ColMajor), LeftArgType, RightArgType>::type EvalLeftArgType;
+  typedef typename internal::conditional<
+    static_cast<int>(Layout) == static_cast<int>(ColMajor), RightArgType, LeftArgType>::type EvalRightArgType;
+
+  static const int LDims =
+      internal::array_size<typename TensorEvaluator<EvalLeftArgType, Device>::Dimensions>::value;
+  static const int RDims =
+      internal::array_size<typename TensorEvaluator<EvalRightArgType, Device>::Dimensions>::value;
+  static const int ContractDims = internal::array_size<Indices>::value;
+  static const int NumDims = LDims + RDims - 2 * ContractDims;
+
+  typedef array<Index, ContractDims> contract_t;
+  typedef array<Index, LDims - ContractDims> left_nocontract_t;
+  typedef array<Index, RDims - ContractDims> right_nocontract_t;
+
+  typedef DSizes<Index, NumDims> Dimensions;
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  TensorContractionEvaluatorBase(const XprType& op, const Device& device)
+    : m_leftImpl(choose(Cond<static_cast<int>(Layout) == static_cast<int>(ColMajor)>(),
+                          op.lhsExpression(), op.rhsExpression()), device),
+    m_rightImpl(choose(Cond<static_cast<int>(Layout) == static_cast<int>(ColMajor)>(),
+                          op.rhsExpression(), op.lhsExpression()), device),
+        m_device(device),
+        m_result(NULL) {
+    EIGEN_STATIC_ASSERT((static_cast<int>(TensorEvaluator<LeftArgType, Device>::Layout) ==
+			   static_cast<int>(TensorEvaluator<RightArgType, Device>::Layout)),
+                        YOU_MADE_A_PROGRAMMING_MISTAKE);
+
+
+    DSizes<Index, LDims> eval_left_dims;
+    DSizes<Index, RDims> eval_right_dims;
+    array<IndexPair<Index>, ContractDims> eval_op_indices;
+    if (static_cast<int>(Layout) == static_cast<int>(ColMajor)) {
+      // For ColMajor, we keep using the existing dimensions
+      for (int i = 0; i < LDims; i++) {
+        eval_left_dims[i] = m_leftImpl.dimensions()[i];
+      }
+      for (int i = 0; i < RDims; i++) {
+        eval_right_dims[i] = m_rightImpl.dimensions()[i];
+      }
+      // We keep the pairs of contracting indices.
+      for (int i = 0; i < ContractDims; i++) {
+        eval_op_indices[i].first = op.indices()[i].first;
+        eval_op_indices[i].second = op.indices()[i].second;
+      }
+    } else {
+      // For RowMajor, we need to reverse the existing dimensions
+      for (int i = 0; i < LDims; i++) {
+        eval_left_dims[i] = m_leftImpl.dimensions()[LDims - i - 1];
+      }
+      for (int i = 0; i < RDims; i++) {
+        eval_right_dims[i] = m_rightImpl.dimensions()[RDims - i - 1];
+      }
+      // We need to flip all the pairs of contracting indices as well as
+      // reversing the dimensions.
+      for (int i = 0; i < ContractDims; i++) {
+        eval_op_indices[i].first = LDims - 1 - op.indices()[ContractDims - 1 - i].second;
+        eval_op_indices[i].second = RDims - 1 - op.indices()[ContractDims - 1 - i].first;
+      }
+    }
+
+    // Check for duplicate axes and make sure the first index in eval_op_indices
+    // is increasing. Using O(n^2) sorting is OK since ContractDims is small
+    for (int i = 0; i < ContractDims; i++) {
+      for (int j = i + 1; j < ContractDims; j++) {
+        eigen_assert(eval_op_indices[j].first != eval_op_indices[i].first &&
+                     eval_op_indices[j].second != eval_op_indices[i].second &&
+                     "contraction axes should be unique");
+        if (eval_op_indices[j].first < eval_op_indices[i].first) {
+          numext::swap(eval_op_indices[j], eval_op_indices[i]);
+        }
+      }
+    }
+
+    array<Index, LDims> lhs_strides;
+    lhs_strides[0] = 1;
+    for (int i = 0; i < LDims-1; ++i) {
+      lhs_strides[i+1] = lhs_strides[i] * eval_left_dims[i];
+    }
+
+    array<Index, RDims> rhs_strides;
+    rhs_strides[0] = 1;
+    for (int i = 0; i < RDims-1; ++i) {
+      rhs_strides[i+1] = rhs_strides[i] * eval_right_dims[i];
+    }
+
+    if (m_i_strides.size() > 0) m_i_strides[0] = 1;
+    if (m_j_strides.size() > 0) m_j_strides[0] = 1;
+    if (m_k_strides.size() > 0) m_k_strides[0] = 1;
+
+    m_i_size = 1;
+    m_j_size = 1;
+    m_k_size = 1;
+
+    // To compute the dimension, we simply concatenate the non-contracting
+    // dimensions of the left and then the right tensor. Additionally, we also
+    // compute the strides corresponding to the left non-contracting
+    // dimensions and right non-contracting dimensions.
+    m_lhs_inner_dim_contiguous = true;
+    int dim_idx = 0;
+    unsigned int nocontract_idx = 0;
+
+    for (int i = 0; i < LDims; i++) {
+      // find if we are contracting on index i of left tensor
+      bool contracting = false;
+      for (int j = 0; j < ContractDims; j++) {
+        if (eval_op_indices[j].first == i) {
+          contracting = true;
+          break;
+        }
+      }
+      if (!contracting) {
+        // add dimension size to output dimensions
+        m_dimensions[dim_idx] = eval_left_dims[i];
+        m_left_nocontract_strides[nocontract_idx] = lhs_strides[i];
+        if (dim_idx != i) {
+          m_lhs_inner_dim_contiguous = false;
+        }
+        if (nocontract_idx+1 < internal::array_size<left_nocontract_t>::value) {
+          m_i_strides[nocontract_idx+1] =
+              m_i_strides[nocontract_idx] * eval_left_dims[i];
+        } else {
+          m_i_size = m_i_strides[nocontract_idx] * eval_left_dims[i];
+        }
+        dim_idx++;
+        nocontract_idx++;
+      }
+    }
+
+    nocontract_idx = 0;
+    for (int i = 0; i < RDims; i++) {
+      bool contracting = false;
+      // find if we are contracting on index i of right tensor
+      for (int j = 0; j < ContractDims; j++) {
+        if (eval_op_indices[j].second == i) {
+          contracting = true;
+          break;
+        }
+      }
+      if (!contracting) {
+        m_dimensions[dim_idx] = eval_right_dims[i];
+        if (nocontract_idx+1 < internal::array_size<right_nocontract_t>::value) {
+          m_j_strides[nocontract_idx+1] =
+              m_j_strides[nocontract_idx] * eval_right_dims[i];
+        } else {
+          m_j_size = m_j_strides[nocontract_idx] * eval_right_dims[i];
+        }
+        m_right_nocontract_strides[nocontract_idx] = rhs_strides[i];
+        dim_idx++;
+        nocontract_idx++;
+      }
+    }
+
+    // Now compute the strides corresponding to the contracting dimensions. We
+    // assumed above that non-contracting axes are represented in the same order
+    // in the matrix as they are in the tensor. This is not the case for
+    // contracting axes. As the contracting axes must be of the same size in
+    // each tensor, we'll only look at the first tensor here.
+    m_rhs_inner_dim_contiguous = true;
+    m_rhs_inner_dim_reordered = false;
+    for (int i = 0; i < ContractDims; i++) {
+      Index left = eval_op_indices[i].first;
+      Index right = eval_op_indices[i].second;
+
+      Index size = eval_left_dims[left];
+      eigen_assert(size == eval_right_dims[right] &&
+                   "Contraction axes must be same size");
+
+      if (i+1 < static_cast<int>(internal::array_size<contract_t>::value)) {
+        m_k_strides[i+1] = m_k_strides[i] * size;
+      } else {
+        m_k_size = m_k_strides[i] * size;
+      }
+      m_left_contracting_strides[i] = lhs_strides[left];
+      m_right_contracting_strides[i] = rhs_strides[right];
+
+      if (i > 0 && right < eval_op_indices[i-1].second) {
+        m_rhs_inner_dim_reordered = true;
+      }
+      if (right != i) {
+        m_rhs_inner_dim_contiguous = false;
+      }
+    }
+
+    // If the layout is RowMajor, we need to reverse the m_dimensions
+    if (static_cast<int>(Layout) == static_cast<int>(RowMajor)) {
+      for (int i = 0, j = NumDims - 1; i < j; i++, j--) {
+        numext::swap(m_dimensions[i], m_dimensions[j]);
+      }
+    }
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Dimensions& dimensions() const { return m_dimensions; }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool evalSubExprsIfNeeded(Scalar* data) {
+    m_leftImpl.evalSubExprsIfNeeded(NULL);
+    m_rightImpl.evalSubExprsIfNeeded(NULL);
+    if (data) {
+      evalTo(data);
+      return false;
+    } else {
+      m_result = static_cast<Scalar *>(m_device.allocate(dimensions().TotalSize() * sizeof(Scalar)));
+      evalTo(m_result);
+      return true;
+    }
+  }
+
+  EIGEN_DEVICE_FUNC void evalTo(Scalar* buffer) const {
+    if (this->m_lhs_inner_dim_contiguous) {
+      if (this->m_rhs_inner_dim_contiguous) {
+        if (this->m_rhs_inner_dim_reordered) {
+          static_cast<const Derived*>(this)->template evalProduct<true, true, true, Unaligned>(buffer);
+        }
+        else {
+          static_cast<const Derived*>(this)->template evalProduct<true, true, false, Unaligned>(buffer);
+        }
+      }
+      else {
+       if (this->m_rhs_inner_dim_reordered) {
+          static_cast<const Derived*>(this)->template evalProduct<true, false, true, Unaligned>(buffer);
+        }
+        else {
+          static_cast<const Derived*>(this)->template evalProduct<true, false, false, Unaligned>(buffer);
+        }
+      }
+    }
+    else {
+      if (this->m_rhs_inner_dim_contiguous) {
+        if (this->m_rhs_inner_dim_reordered) {
+          static_cast<const Derived*>(this)->template evalProduct<false, true, true, Unaligned>(buffer);
+        }
+        else {
+          static_cast<const Derived*>(this)->template evalProduct<false, true, false, Unaligned>(buffer);
+        }
+      }
+      else {
+       if (this->m_rhs_inner_dim_reordered) {
+          static_cast<const Derived*>(this)->template evalProduct<false, false, true, Unaligned>(buffer);
+        }
+        else {
+          static_cast<const Derived*>(this)->template evalProduct<false, false, false, Unaligned>(buffer);
+        }
+      }
+    }
+  }
+
+  template <bool lhs_inner_dim_contiguous, bool rhs_inner_dim_contiguous, bool rhs_inner_dim_reordered, int Alignment>
+  EIGEN_DEVICE_FUNC void evalGemv(Scalar* buffer) const {
+    const Index rows = m_i_size;
+    const Index cols = m_k_size;
+
+    typedef typename internal::remove_const<typename EvalLeftArgType::Scalar>::type LhsScalar;
+    typedef typename internal::remove_const<typename EvalRightArgType::Scalar>::type RhsScalar;
+    typedef TensorEvaluator<EvalLeftArgType, Device> LeftEvaluator;
+    typedef TensorEvaluator<EvalRightArgType, Device> RightEvaluator;
+    const Index lhs_packet_size = internal::unpacket_traits<typename LeftEvaluator::PacketReturnType>::size;
+    const Index rhs_packet_size = internal::unpacket_traits<typename RightEvaluator::PacketReturnType>::size;
+    const int lhs_alignment = LeftEvaluator::IsAligned ? Aligned : Unaligned;
+    const int rhs_alignment = RightEvaluator::IsAligned ? Aligned : Unaligned;
+    typedef internal::TensorContractionInputMapper<LhsScalar, Index, internal::Lhs,
+                                                   LeftEvaluator, left_nocontract_t,
+                                                   contract_t, lhs_packet_size,
+                                                   lhs_inner_dim_contiguous,
+                                                   false, lhs_alignment> LhsMapper;
+
+    typedef internal::TensorContractionInputMapper<RhsScalar, Index, internal::Rhs,
+                                                   RightEvaluator, right_nocontract_t,
+                                                   contract_t, rhs_packet_size,
+                                                   rhs_inner_dim_contiguous,
+                                                   rhs_inner_dim_reordered, rhs_alignment> RhsMapper;
+
+    LhsMapper lhs(m_leftImpl, m_left_nocontract_strides, m_i_strides,
+                  m_left_contracting_strides, m_k_strides);
+    RhsMapper rhs(m_rightImpl, m_right_nocontract_strides, m_j_strides,
+                  m_right_contracting_strides, m_k_strides);
+
+    const Scalar alpha(1);
+    const Index resIncr(1);
+
+    // zero out the result buffer (which must be of size at least rows * sizeof(Scalar)
+    m_device.memset(buffer, 0, rows * sizeof(Scalar));
+
+    internal::general_matrix_vector_product<Index,LhsScalar,LhsMapper,ColMajor,false,RhsScalar,RhsMapper,false>::run(
+        rows, cols, lhs, rhs,
+        buffer, resIncr, alpha);
+  }
+
+  template <bool lhs_inner_dim_contiguous, bool rhs_inner_dim_contiguous, bool rhs_inner_dim_reordered, int Alignment>
+  EIGEN_DEVICE_FUNC void evalGemm(Scalar* buffer) const {
+    // columns in left side, rows in right side
+    const Index k = this->m_k_size;
+
+    // rows in left side
+    const Index m = this->m_i_size;
+
+    // columns in right side
+    const Index n = this->m_j_size;
+
+    // zero out the result buffer (which must be of size at least m * n * sizeof(Scalar)
+    this->m_device.memset(buffer, 0, m * n * sizeof(Scalar));
+
+    // define mr, nr, and all of my data mapper types
+    typedef typename internal::remove_const<typename EvalLeftArgType::Scalar>::type LhsScalar;
+    typedef typename internal::remove_const<typename EvalRightArgType::Scalar>::type RhsScalar;
+    typedef typename internal::gebp_traits<LhsScalar, RhsScalar> Traits;
+
+    const Index nr = Traits::nr;
+    const Index mr = Traits::mr;
+
+    typedef TensorEvaluator<EvalLeftArgType, Device> LeftEvaluator;
+    typedef TensorEvaluator<EvalRightArgType, Device> RightEvaluator;
+
+    const Index lhs_packet_size = internal::unpacket_traits<typename LeftEvaluator::PacketReturnType>::size;
+    const Index rhs_packet_size = internal::unpacket_traits<typename RightEvaluator::PacketReturnType>::size;
+
+    typedef internal::TensorContractionInputMapper<LhsScalar, Index, internal::Lhs,
+                                                   LeftEvaluator, left_nocontract_t,
+                                                   contract_t, lhs_packet_size,
+                                                   lhs_inner_dim_contiguous,
+                                                   false, Unaligned> LhsMapper;
+
+    typedef internal::TensorContractionInputMapper<RhsScalar, Index, internal::Rhs,
+                                                   RightEvaluator, right_nocontract_t,
+                                                   contract_t, rhs_packet_size,
+                                                   rhs_inner_dim_contiguous,
+                                                   rhs_inner_dim_reordered, Unaligned> RhsMapper;
+
+    typedef internal::blas_data_mapper<Scalar, Index, ColMajor> OutputMapper;
+
+    // Declare GEBP packing and kernel structs
+    internal::gemm_pack_lhs<LhsScalar, Index, typename LhsMapper::SubMapper, mr, Traits::LhsProgress, ColMajor> pack_lhs;
+    internal::gemm_pack_rhs<RhsScalar, Index, typename RhsMapper::SubMapper, nr, ColMajor> pack_rhs;
+
+    internal::gebp_kernel<LhsScalar, RhsScalar, Index, OutputMapper, mr, nr, false, false> gebp;
+
+    // initialize data mappers
+    LhsMapper lhs(this->m_leftImpl, this->m_left_nocontract_strides, this->m_i_strides,
+                  this->m_left_contracting_strides, this->m_k_strides);
+
+    RhsMapper rhs(this->m_rightImpl, this->m_right_nocontract_strides, this->m_j_strides,
+                  this->m_right_contracting_strides, this->m_k_strides);
+
+    OutputMapper output(buffer, m);
+
+    // Sizes of the blocks to load in cache. See the Goto paper for details.
+    internal::TensorContractionBlocking<LhsMapper, RhsMapper, Index, internal::ShardByCol> blocking(k, m, n, 1);
+    const Index kc = blocking.kc();
+    const Index mc = numext::mini(m, blocking.mc());
+    const Index nc = numext::mini(n, blocking.nc());
+    const Index sizeA = mc * kc;
+    const Index sizeB = kc * nc;
+
+    LhsScalar* blockA = static_cast<LhsScalar *>(this->m_device.allocate(sizeA * sizeof(LhsScalar)));
+    RhsScalar* blockB = static_cast<RhsScalar *>(this->m_device.allocate(sizeB * sizeof(RhsScalar)));
+
+    for(Index i2=0; i2<m; i2+=mc)
+    {
+      const Index actual_mc = numext::mini(i2+mc,m)-i2;
+      for (Index k2 = 0; k2 < k; k2 += kc) {
+        // make sure we don't overshoot right edge of left matrix, then pack vertical panel
+        const Index actual_kc = numext::mini(k2 + kc, k) - k2;
+        pack_lhs(blockA, lhs.getSubMapper(i2, k2), actual_kc, actual_mc, 0, 0);
+
+        // series of horizontal blocks
+        for (Index j2 = 0; j2 < n; j2 += nc) {
+          // make sure we don't overshoot right edge of right matrix, then pack block
+          const Index actual_nc = numext::mini(j2 + nc, n) - j2;
+          pack_rhs(blockB, rhs.getSubMapper(k2, j2), actual_kc, actual_nc, 0, 0);
+
+          // call gebp (matrix kernel)
+          // The parameters here are copied from Eigen's GEMM implementation
+          gebp(output.getSubMapper(i2, j2), blockA, blockB, actual_mc, actual_kc, actual_nc, Scalar(1), -1, -1, 0, 0);
+        }
+      }
+    }
+
+    this->m_device.deallocate(blockA);
+    this->m_device.deallocate(blockB);
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void cleanup() {
+    m_leftImpl.cleanup();
+    m_rightImpl.cleanup();
+
+    if (m_result != NULL) {
+      m_device.deallocate(m_result);
+      m_result = NULL;
+    }
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType coeff(Index index) const {
+    return m_result[index];
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorOpCost costPerCoeff(bool) const {
+    return TensorOpCost(sizeof(CoeffReturnType), 0, 0);
+  }
+
+  template<int LoadMode>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketReturnType packet(Index index) const {
+    return internal::ploadt<PacketReturnType, LoadMode>(m_result + index);
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar* data() const { return m_result; }
+
+  protected:
+  // Prevent assignment
+  TensorContractionEvaluatorBase& operator = (const TensorContractionEvaluatorBase&);
+  Dimensions m_dimensions;
+
+  contract_t m_k_strides;
+  contract_t m_left_contracting_strides;
+  contract_t m_right_contracting_strides;
+
+  bool m_lhs_inner_dim_contiguous;
+  bool m_rhs_inner_dim_contiguous;
+  bool m_rhs_inner_dim_reordered;
+
+  left_nocontract_t m_i_strides;
+  right_nocontract_t m_j_strides;
+  left_nocontract_t m_left_nocontract_strides;
+  right_nocontract_t m_right_nocontract_strides;
+
+  Index m_i_size;
+  Index m_j_size;
+  Index m_k_size;
+
+  TensorEvaluator<EvalLeftArgType, Device> m_leftImpl;
+  TensorEvaluator<EvalRightArgType, Device> m_rightImpl;
+  const Device& m_device;
+  Scalar* m_result;
+};
+
+
+// evaluator for default device
+template<typename Indices, typename LeftArgType, typename RightArgType, typename Device>
+struct TensorEvaluator<const TensorContractionOp<Indices, LeftArgType, RightArgType>, Device> :
+    public TensorContractionEvaluatorBase<
+      TensorEvaluator<const TensorContractionOp<Indices, LeftArgType, RightArgType>, Device> > {
+  typedef TensorEvaluator<const TensorContractionOp<Indices, LeftArgType, RightArgType>, Device> Self;
+  typedef TensorContractionEvaluatorBase<Self> Base;
+
+  typedef TensorContractionOp<Indices, LeftArgType, RightArgType> XprType;
+  typedef typename internal::remove_const<typename XprType::Scalar>::type Scalar;
+  typedef typename XprType::Index Index;
+  typedef typename XprType::CoeffReturnType CoeffReturnType;
+  typedef typename PacketType<CoeffReturnType, Device>::type PacketReturnType;
+
+  enum {
+    Layout = TensorEvaluator<LeftArgType, Device>::Layout
+  };
+
+  // Most of the code is assuming that both input tensors are ColMajor. If the
+  // inputs are RowMajor, we will "cheat" by swapping the LHS and RHS:
+  // If we want to compute A * B = C, where A is LHS and B is RHS, the code
+  // will pretend B is LHS and A is RHS.
+  typedef typename internal::conditional<
+    static_cast<int>(Layout) == static_cast<int>(ColMajor), LeftArgType, RightArgType>::type EvalLeftArgType;
+  typedef typename internal::conditional<
+    static_cast<int>(Layout) == static_cast<int>(ColMajor), RightArgType, LeftArgType>::type EvalRightArgType;
+
+  static const int LDims =
+      internal::array_size<typename TensorEvaluator<EvalLeftArgType, Device>::Dimensions>::value;
+  static const int RDims =
+      internal::array_size<typename TensorEvaluator<EvalRightArgType, Device>::Dimensions>::value;
+  static const int ContractDims = internal::array_size<Indices>::value;
+
+  typedef array<Index, ContractDims> contract_t;
+  typedef array<Index, LDims - ContractDims> left_nocontract_t;
+  typedef array<Index, RDims - ContractDims> right_nocontract_t;
+
+  static const int NumDims = LDims + RDims - 2 * ContractDims;
+
+  // Could we use NumDimensions here?
+  typedef DSizes<Index, NumDims> Dimensions;
+
+  EIGEN_DEVICE_FUNC TensorEvaluator(const XprType& op, const Device& device) :
+      Base(op, device) { }
+
+  template <bool lhs_inner_dim_contiguous, bool rhs_inner_dim_contiguous, bool rhs_inner_dim_reordered, int Alignment>
+  EIGEN_DEVICE_FUNC void evalProduct(Scalar* buffer) const {
+    if (this->m_j_size == 1) {
+      this->template evalGemv<lhs_inner_dim_contiguous, rhs_inner_dim_contiguous, rhs_inner_dim_reordered, Alignment>(buffer);
+      return;
+    }
+
+    this->template evalGemm<lhs_inner_dim_contiguous, rhs_inner_dim_contiguous, rhs_inner_dim_reordered, Alignment>(buffer);
+  }
+};
+
+} // end namespace Eigen
+
+#endif // EIGEN_CXX11_TENSOR_TENSOR_CONTRACTION_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorInitializer.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorInitializer.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorInitializer.h	(revision 3762)
@@ -0,0 +1,82 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2014 Benoit Steiner <benoit.steiner.goog@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CXX11_TENSOR_TENSOR_INITIALIZER_H
+#define EIGEN_CXX11_TENSOR_TENSOR_INITIALIZER_H
+
+#if EIGEN_HAS_VARIADIC_TEMPLATES
+
+#include <initializer_list>
+
+namespace Eigen {
+
+/** \class TensorInitializer
+  * \ingroup CXX11_Tensor_Module
+  *
+  * \brief Helper template to initialize Tensors from std::initializer_lists.
+  */
+namespace internal {
+
+template <typename Derived, int N>
+struct Initializer {
+  typedef std::initializer_list<
+    typename Initializer<Derived, N - 1>::InitList> InitList;
+
+  static void run(TensorEvaluator<Derived, DefaultDevice>& tensor,
+                  Eigen::array<typename traits<Derived>::Index, traits<Derived>::NumDimensions>* indices,
+                  const InitList& vals) {
+    int i = 0;
+    for (auto v : vals) {
+      (*indices)[traits<Derived>::NumDimensions - N] = i++;
+      Initializer<Derived, N - 1>::run(tensor, indices, v);
+    }
+  }
+};
+
+template <typename Derived>
+struct Initializer<Derived, 1> {
+  typedef std::initializer_list<typename traits<Derived>::Scalar> InitList;
+
+  static void run(TensorEvaluator<Derived, DefaultDevice>& tensor,
+                  Eigen::array<typename traits<Derived>::Index, traits<Derived>::NumDimensions>* indices,
+                  const InitList& vals) {
+    int i = 0;
+    // There is likely a faster way to do that than iterating.
+    for (auto v : vals) {
+      (*indices)[traits<Derived>::NumDimensions - 1] = i++;
+      tensor.coeffRef(*indices) = v;
+    }
+  }
+};
+
+template <typename Derived>
+struct Initializer<Derived, 0> {
+  typedef typename traits<Derived>::Scalar InitList;
+
+  static void run(TensorEvaluator<Derived, DefaultDevice>& tensor,
+                  Eigen::array<typename traits<Derived>::Index, traits<Derived>::NumDimensions>*,
+                  const InitList& v) {
+    tensor.coeffRef(0) = v;
+  }
+};
+
+
+template <typename Derived, int N>
+void initialize_tensor(TensorEvaluator<Derived, DefaultDevice>& tensor,
+                       const typename Initializer<Derived, traits<Derived>::NumDimensions>::InitList& vals) {
+  Eigen::array<typename traits<Derived>::Index, traits<Derived>::NumDimensions> indices;
+  Initializer<Derived, traits<Derived>::NumDimensions>::run(tensor, &indices, vals);
+}
+
+}  // namespace internal
+}  // namespace Eigen
+
+#endif  // EIGEN_HAS_VARIADIC_TEMPLATES
+
+#endif  // EIGEN_CXX11_TENSOR_TENSOR_INITIALIZER_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorAssign.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorAssign.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorAssign.h	(revision 3762)
@@ -0,0 +1,181 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2014 Benoit Steiner <benoit.steiner.goog@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CXX11_TENSOR_TENSOR_ASSIGN_H
+#define EIGEN_CXX11_TENSOR_TENSOR_ASSIGN_H
+
+namespace Eigen {
+
+/** \class TensorAssign
+  * \ingroup CXX11_Tensor_Module
+  *
+  * \brief The tensor assignment class.
+  *
+  * This class is represents the assignment of the values resulting from the evaluation of
+  * the rhs expression to the memory locations denoted by the lhs expression.
+  */
+namespace internal {
+template<typename LhsXprType, typename RhsXprType>
+struct traits<TensorAssignOp<LhsXprType, RhsXprType> >
+{
+  typedef typename LhsXprType::Scalar Scalar;
+  typedef typename traits<LhsXprType>::StorageKind StorageKind;
+  typedef typename promote_index_type<typename traits<LhsXprType>::Index,
+                                      typename traits<RhsXprType>::Index>::type Index;
+  typedef typename LhsXprType::Nested LhsNested;
+  typedef typename RhsXprType::Nested RhsNested;
+  typedef typename remove_reference<LhsNested>::type _LhsNested;
+  typedef typename remove_reference<RhsNested>::type _RhsNested;
+  static const std::size_t NumDimensions = internal::traits<LhsXprType>::NumDimensions;
+  static const int Layout = internal::traits<LhsXprType>::Layout;
+
+  enum {
+    Flags = 0
+  };
+};
+
+template<typename LhsXprType, typename RhsXprType>
+struct eval<TensorAssignOp<LhsXprType, RhsXprType>, Eigen::Dense>
+{
+  typedef const TensorAssignOp<LhsXprType, RhsXprType>& type;
+};
+
+template<typename LhsXprType, typename RhsXprType>
+struct nested<TensorAssignOp<LhsXprType, RhsXprType>, 1, typename eval<TensorAssignOp<LhsXprType, RhsXprType> >::type>
+{
+  typedef TensorAssignOp<LhsXprType, RhsXprType> type;
+};
+
+}  // end namespace internal
+
+
+
+template<typename LhsXprType, typename RhsXprType>
+class TensorAssignOp : public TensorBase<TensorAssignOp<LhsXprType, RhsXprType> >
+{
+  public:
+  typedef typename Eigen::internal::traits<TensorAssignOp>::Scalar Scalar;
+  typedef typename Eigen::NumTraits<Scalar>::Real RealScalar;
+  typedef typename LhsXprType::CoeffReturnType CoeffReturnType;
+  typedef typename Eigen::internal::nested<TensorAssignOp>::type Nested;
+  typedef typename Eigen::internal::traits<TensorAssignOp>::StorageKind StorageKind;
+  typedef typename Eigen::internal::traits<TensorAssignOp>::Index Index;
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorAssignOp(LhsXprType& lhs, const RhsXprType& rhs)
+      : m_lhs_xpr(lhs), m_rhs_xpr(rhs) {}
+
+    /** \returns the nested expressions */
+    EIGEN_DEVICE_FUNC
+    typename internal::remove_all<typename LhsXprType::Nested>::type&
+    lhsExpression() const { return *((typename internal::remove_all<typename LhsXprType::Nested>::type*)&m_lhs_xpr); }
+
+    EIGEN_DEVICE_FUNC
+    const typename internal::remove_all<typename RhsXprType::Nested>::type&
+    rhsExpression() const { return m_rhs_xpr; }
+
+  protected:
+    typename internal::remove_all<typename LhsXprType::Nested>::type& m_lhs_xpr;
+    const typename internal::remove_all<typename RhsXprType::Nested>::type& m_rhs_xpr;
+};
+
+
+template<typename LeftArgType, typename RightArgType, typename Device>
+struct TensorEvaluator<const TensorAssignOp<LeftArgType, RightArgType>, Device>
+{
+  typedef TensorAssignOp<LeftArgType, RightArgType> XprType;
+  typedef typename XprType::Index Index;
+  typedef typename XprType::Scalar Scalar;
+  typedef typename XprType::CoeffReturnType CoeffReturnType;
+  typedef typename PacketType<CoeffReturnType, Device>::type PacketReturnType;
+  typedef typename TensorEvaluator<RightArgType, Device>::Dimensions Dimensions;
+  static const int PacketSize = internal::unpacket_traits<PacketReturnType>::size;
+
+  enum {
+    IsAligned = TensorEvaluator<LeftArgType, Device>::IsAligned & TensorEvaluator<RightArgType, Device>::IsAligned,
+    PacketAccess = TensorEvaluator<LeftArgType, Device>::PacketAccess & TensorEvaluator<RightArgType, Device>::PacketAccess,
+    Layout = TensorEvaluator<LeftArgType, Device>::Layout,
+    RawAccess = TensorEvaluator<LeftArgType, Device>::RawAccess
+  };
+
+  EIGEN_DEVICE_FUNC TensorEvaluator(const XprType& op, const Device& device) :
+      m_leftImpl(op.lhsExpression(), device),
+      m_rightImpl(op.rhsExpression(), device)
+  {
+    EIGEN_STATIC_ASSERT((static_cast<int>(TensorEvaluator<LeftArgType, Device>::Layout) == static_cast<int>(TensorEvaluator<RightArgType, Device>::Layout)), YOU_MADE_A_PROGRAMMING_MISTAKE);
+  }
+
+  EIGEN_DEVICE_FUNC const Dimensions& dimensions() const
+  {
+    // The dimensions of the lhs and the rhs tensors should be equal to prevent
+    // overflows and ensure the result is fully initialized.
+    // TODO: use left impl instead if right impl dimensions are known at compile time.
+    return m_rightImpl.dimensions();
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool evalSubExprsIfNeeded(Scalar*) {
+    eigen_assert(dimensions_match(m_leftImpl.dimensions(), m_rightImpl.dimensions()));
+    m_leftImpl.evalSubExprsIfNeeded(NULL);
+    // If the lhs provides raw access to its storage area (i.e. if m_leftImpl.data() returns a non
+    // null value), attempt to evaluate the rhs expression in place. Returns true iff in place
+    // evaluation isn't supported and the caller still needs to manually assign the values generated
+    // by the rhs to the lhs.
+    return m_rightImpl.evalSubExprsIfNeeded(m_leftImpl.data());
+  }
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void cleanup() {
+    m_leftImpl.cleanup();
+    m_rightImpl.cleanup();
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void evalScalar(Index i) {
+    m_leftImpl.coeffRef(i) = m_rightImpl.coeff(i);
+  }
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void evalPacket(Index i) {
+    const int LhsStoreMode = TensorEvaluator<LeftArgType, Device>::IsAligned ? Aligned : Unaligned;
+    const int RhsLoadMode = TensorEvaluator<RightArgType, Device>::IsAligned ? Aligned : Unaligned;
+    m_leftImpl.template writePacket<LhsStoreMode>(i, m_rightImpl.template packet<RhsLoadMode>(i));
+  }
+  EIGEN_DEVICE_FUNC CoeffReturnType coeff(Index index) const
+  {
+    return m_leftImpl.coeff(index);
+  }
+  template<int LoadMode>
+  EIGEN_DEVICE_FUNC PacketReturnType packet(Index index) const
+  {
+    return m_leftImpl.template packet<LoadMode>(index);
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorOpCost
+  costPerCoeff(bool vectorized) const {
+    // We assume that evalPacket or evalScalar is called to perform the
+    // assignment and account for the cost of the write here, but reduce left
+    // cost by one load because we are using m_leftImpl.coeffRef.
+    TensorOpCost left = m_leftImpl.costPerCoeff(vectorized);
+    return m_rightImpl.costPerCoeff(vectorized) +
+           TensorOpCost(
+               numext::maxi(0.0, left.bytes_loaded() - sizeof(CoeffReturnType)),
+               left.bytes_stored(), left.compute_cycles()) +
+           TensorOpCost(0, sizeof(CoeffReturnType), 0, vectorized, PacketSize);
+  }
+
+  /// required by sycl in order to extract the accessor
+  const TensorEvaluator<LeftArgType, Device>& left_impl() const { return m_leftImpl; }
+  /// required by sycl in order to extract the accessor
+  const TensorEvaluator<RightArgType, Device>& right_impl() const { return m_rightImpl; }
+
+  EIGEN_DEVICE_FUNC CoeffReturnType* data() const { return m_leftImpl.data(); }
+
+ private:
+  TensorEvaluator<LeftArgType, Device> m_leftImpl;
+  TensorEvaluator<RightArgType, Device> m_rightImpl;
+};
+
+}
+
+
+#endif // EIGEN_CXX11_TENSOR_TENSOR_ASSIGN_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorScan.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorScan.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorScan.h	(revision 3762)
@@ -0,0 +1,287 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2016 Igor Babuschkin <igor@babuschk.in>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CXX11_TENSOR_TENSOR_SCAN_H
+#define EIGEN_CXX11_TENSOR_TENSOR_SCAN_H
+
+namespace Eigen {
+
+namespace internal {
+
+template <typename Op, typename XprType>
+struct traits<TensorScanOp<Op, XprType> >
+    : public traits<XprType> {
+  typedef typename XprType::Scalar Scalar;
+  typedef traits<XprType> XprTraits;
+  typedef typename XprTraits::StorageKind StorageKind;
+  typedef typename XprType::Nested Nested;
+  typedef typename remove_reference<Nested>::type _Nested;
+  static const int NumDimensions = XprTraits::NumDimensions;
+  static const int Layout = XprTraits::Layout;
+};
+
+template<typename Op, typename XprType>
+struct eval<TensorScanOp<Op, XprType>, Eigen::Dense>
+{
+  typedef const TensorScanOp<Op, XprType>& type;
+};
+
+template<typename Op, typename XprType>
+struct nested<TensorScanOp<Op, XprType>, 1,
+            typename eval<TensorScanOp<Op, XprType> >::type>
+{
+  typedef TensorScanOp<Op, XprType> type;
+};
+} // end namespace internal
+
+/** \class TensorScan
+  * \ingroup CXX11_Tensor_Module
+  *
+  * \brief Tensor scan class.
+  */
+template <typename Op, typename XprType>
+class TensorScanOp
+    : public TensorBase<TensorScanOp<Op, XprType>, ReadOnlyAccessors> {
+public:
+  typedef typename Eigen::internal::traits<TensorScanOp>::Scalar Scalar;
+  typedef typename Eigen::NumTraits<Scalar>::Real RealScalar;
+  typedef typename XprType::CoeffReturnType CoeffReturnType;
+  typedef typename Eigen::internal::nested<TensorScanOp>::type Nested;
+  typedef typename Eigen::internal::traits<TensorScanOp>::StorageKind StorageKind;
+  typedef typename Eigen::internal::traits<TensorScanOp>::Index Index;
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorScanOp(
+      const XprType& expr, const Index& axis, bool exclusive = false, const Op& op = Op())
+      : m_expr(expr), m_axis(axis), m_accumulator(op), m_exclusive(exclusive) {}
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  const Index axis() const { return m_axis; }
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  const XprType& expression() const { return m_expr; }
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  const Op accumulator() const { return m_accumulator; }
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  bool exclusive() const { return m_exclusive; }
+
+protected:
+  typename XprType::Nested m_expr;
+  const Index m_axis;
+  const Op m_accumulator;
+  const bool m_exclusive;
+};
+
+template <typename Self, typename Reducer, typename Device>
+struct ScanLauncher;
+
+// Eval as rvalue
+template <typename Op, typename ArgType, typename Device>
+struct TensorEvaluator<const TensorScanOp<Op, ArgType>, Device> {
+
+  typedef TensorScanOp<Op, ArgType> XprType;
+  typedef typename XprType::Index Index;
+  static const int NumDims = internal::array_size<typename TensorEvaluator<ArgType, Device>::Dimensions>::value;
+  typedef DSizes<Index, NumDims> Dimensions;
+  typedef typename internal::remove_const<typename XprType::Scalar>::type Scalar;
+  typedef typename XprType::CoeffReturnType CoeffReturnType;
+  typedef typename PacketType<CoeffReturnType, Device>::type PacketReturnType;
+  typedef TensorEvaluator<const TensorScanOp<Op, ArgType>, Device> Self;
+
+  enum {
+    IsAligned = false,
+    PacketAccess = (internal::unpacket_traits<PacketReturnType>::size > 1),
+    BlockAccess = false,
+    Layout = TensorEvaluator<ArgType, Device>::Layout,
+    CoordAccess = false,
+    RawAccess = true
+  };
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorEvaluator(const XprType& op,
+                                                        const Device& device)
+      : m_impl(op.expression(), device),
+        m_device(device),
+        m_exclusive(op.exclusive()),
+        m_accumulator(op.accumulator()),
+        m_size(m_impl.dimensions()[op.axis()]),
+        m_stride(1),
+        m_output(NULL) {
+
+    // Accumulating a scalar isn't supported.
+    EIGEN_STATIC_ASSERT((NumDims > 0), YOU_MADE_A_PROGRAMMING_MISTAKE);
+    eigen_assert(op.axis() >= 0 && op.axis() < NumDims);
+
+    // Compute stride of scan axis
+    const Dimensions& dims = m_impl.dimensions();
+    if (static_cast<int>(Layout) == static_cast<int>(ColMajor)) {
+      for (int i = 0; i < op.axis(); ++i) {
+        m_stride = m_stride * dims[i];
+      }
+    } else {
+      for (int i = NumDims - 1; i > op.axis(); --i) {
+        m_stride = m_stride * dims[i];
+      }
+    }
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Dimensions& dimensions() const {
+    return m_impl.dimensions();
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Index& stride() const {
+    return m_stride;
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Index& size() const {
+    return m_size;
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Op& accumulator() const {
+    return m_accumulator;
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool exclusive() const {
+    return m_exclusive;
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorEvaluator<ArgType, Device>& inner() const {
+    return m_impl;
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Device& device() const {
+    return m_device;
+  }
+
+  EIGEN_STRONG_INLINE bool evalSubExprsIfNeeded(Scalar* data) {
+    m_impl.evalSubExprsIfNeeded(NULL);
+    ScanLauncher<Self, Op, Device> launcher;
+    if (data) {
+      launcher(*this, data);
+      return false;
+    }
+
+    const Index total_size = internal::array_prod(dimensions());
+    m_output = static_cast<CoeffReturnType*>(m_device.allocate(total_size * sizeof(Scalar)));
+    launcher(*this, m_output);
+    return true;
+  }
+
+  template<int LoadMode>
+  EIGEN_DEVICE_FUNC PacketReturnType packet(Index index) const {
+    return internal::ploadt<PacketReturnType, LoadMode>(m_output + index);
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType* data() const
+  {
+    return m_output;
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType coeff(Index index) const
+  {
+    return m_output[index];
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorOpCost costPerCoeff(bool) const {
+    return TensorOpCost(sizeof(CoeffReturnType), 0, 0);
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void cleanup() {
+    if (m_output != NULL) {
+      m_device.deallocate(m_output);
+      m_output = NULL;
+    }
+    m_impl.cleanup();
+  }
+
+protected:
+  TensorEvaluator<ArgType, Device> m_impl;
+  const Device& m_device;
+  const bool m_exclusive;
+  Op m_accumulator;
+  const Index m_size;
+  Index m_stride;
+  CoeffReturnType* m_output;
+};
+
+// CPU implementation of scan
+// TODO(ibab) This single-threaded implementation should be parallelized,
+// at least by running multiple scans at the same time.
+template <typename Self, typename Reducer, typename Device>
+struct ScanLauncher {
+  void operator()(Self& self, typename Self::CoeffReturnType *data) {
+    Index total_size = internal::array_prod(self.dimensions());
+
+    // We fix the index along the scan axis to 0 and perform a
+    // scan per remaining entry. The iteration is split into two nested
+    // loops to avoid an integer division by keeping track of each idx1 and idx2.
+    for (Index idx1 = 0; idx1 < total_size; idx1 += self.stride() * self.size()) {
+      for (Index idx2 = 0; idx2 < self.stride(); idx2++) {
+        // Calculate the starting offset for the scan
+        Index offset = idx1 + idx2;
+
+        // Compute the scan along the axis, starting at the calculated offset
+        typename Self::CoeffReturnType accum = self.accumulator().initialize();
+        for (Index idx3 = 0; idx3 < self.size(); idx3++) {
+          Index curr = offset + idx3 * self.stride();
+
+          if (self.exclusive()) {
+            data[curr] = self.accumulator().finalize(accum);
+            self.accumulator().reduce(self.inner().coeff(curr), &accum);
+          } else {
+            self.accumulator().reduce(self.inner().coeff(curr), &accum);
+            data[curr] = self.accumulator().finalize(accum);
+          }
+        }
+      }
+    }
+  }
+};
+
+#if defined(EIGEN_USE_GPU) && defined(__CUDACC__)
+
+// GPU implementation of scan
+// TODO(ibab) This placeholder implementation performs multiple scans in
+// parallel, but it would be better to use a parallel scan algorithm and
+// optimize memory access.
+template <typename Self, typename Reducer>
+__global__ void ScanKernel(Self self, Index total_size, typename Self::CoeffReturnType* data) {
+  // Compute offset as in the CPU version
+  Index val = threadIdx.x + blockIdx.x * blockDim.x;
+  Index offset = (val / self.stride()) * self.stride() * self.size() + val % self.stride();
+
+  if (offset + (self.size() - 1) * self.stride() < total_size) {
+    // Compute the scan along the axis, starting at the calculated offset
+    typename Self::CoeffReturnType accum = self.accumulator().initialize();
+    for (Index idx = 0; idx < self.size(); idx++) {
+      Index curr = offset + idx * self.stride();
+      if (self.exclusive()) {
+        data[curr] = self.accumulator().finalize(accum);
+        self.accumulator().reduce(self.inner().coeff(curr), &accum);
+      } else {
+        self.accumulator().reduce(self.inner().coeff(curr), &accum);
+        data[curr] = self.accumulator().finalize(accum);
+      }
+    }
+  }
+  __syncthreads();
+
+}
+
+template <typename Self, typename Reducer>
+struct ScanLauncher<Self, Reducer, GpuDevice> {
+  void operator()(const Self& self, typename Self::CoeffReturnType* data) {
+     Index total_size = internal::array_prod(self.dimensions());
+     Index num_blocks = (total_size / self.size() + 63) / 64;
+     Index block_size = 64;
+     LAUNCH_CUDA_KERNEL((ScanKernel<Self, Reducer>), num_blocks, block_size, 0, self.device(), self, total_size, data);
+  }
+};
+#endif  // EIGEN_USE_GPU && __CUDACC__
+
+}  // end namespace Eigen
+
+#endif  // EIGEN_CXX11_TENSOR_TENSOR_SCAN_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorShuffling.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorShuffling.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorShuffling.h	(revision 3762)
@@ -0,0 +1,264 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2014 Benoit Steiner <benoit.steiner.goog@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CXX11_TENSOR_TENSOR_SHUFFLING_H
+#define EIGEN_CXX11_TENSOR_TENSOR_SHUFFLING_H
+
+namespace Eigen {
+
+/** \class TensorShuffling
+  * \ingroup CXX11_Tensor_Module
+  *
+  * \brief Tensor shuffling class.
+  *
+  *
+  */
+namespace internal {
+template<typename Shuffle, typename XprType>
+struct traits<TensorShufflingOp<Shuffle, XprType> > : public traits<XprType>
+{
+  typedef typename XprType::Scalar Scalar;
+  typedef traits<XprType> XprTraits;
+  typedef typename XprTraits::StorageKind StorageKind;
+  typedef typename XprTraits::Index Index;
+  typedef typename XprType::Nested Nested;
+  typedef typename remove_reference<Nested>::type _Nested;
+  static const int NumDimensions = XprTraits::NumDimensions;
+  static const int Layout = XprTraits::Layout;
+};
+
+template<typename Shuffle, typename XprType>
+struct eval<TensorShufflingOp<Shuffle, XprType>, Eigen::Dense>
+{
+  typedef const TensorShufflingOp<Shuffle, XprType>& type;
+};
+
+template<typename Shuffle, typename XprType>
+struct nested<TensorShufflingOp<Shuffle, XprType>, 1, typename eval<TensorShufflingOp<Shuffle, XprType> >::type>
+{
+  typedef TensorShufflingOp<Shuffle, XprType> type;
+};
+
+}  // end namespace internal
+
+
+
+template<typename Shuffle, typename XprType>
+class TensorShufflingOp : public TensorBase<TensorShufflingOp<Shuffle, XprType> >
+{
+  public:
+  typedef typename Eigen::internal::traits<TensorShufflingOp>::Scalar Scalar;
+  typedef typename Eigen::NumTraits<Scalar>::Real RealScalar;
+  typedef typename XprType::CoeffReturnType CoeffReturnType;
+  typedef typename Eigen::internal::nested<TensorShufflingOp>::type Nested;
+  typedef typename Eigen::internal::traits<TensorShufflingOp>::StorageKind StorageKind;
+  typedef typename Eigen::internal::traits<TensorShufflingOp>::Index Index;
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorShufflingOp(const XprType& expr, const Shuffle& shuffle)
+      : m_xpr(expr), m_shuffle(shuffle) {}
+
+    EIGEN_DEVICE_FUNC
+    const Shuffle& shufflePermutation() const { return m_shuffle; }
+
+    EIGEN_DEVICE_FUNC
+    const typename internal::remove_all<typename XprType::Nested>::type&
+    expression() const { return m_xpr; }
+
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE TensorShufflingOp& operator = (const TensorShufflingOp& other)
+    {
+      typedef TensorAssignOp<TensorShufflingOp, const TensorShufflingOp> Assign;
+      Assign assign(*this, other);
+      internal::TensorExecutor<const Assign, DefaultDevice>::run(assign, DefaultDevice());
+      return *this;
+    }
+
+    template<typename OtherDerived>
+    EIGEN_DEVICE_FUNC
+    EIGEN_STRONG_INLINE TensorShufflingOp& operator = (const OtherDerived& other)
+    {
+      typedef TensorAssignOp<TensorShufflingOp, const OtherDerived> Assign;
+      Assign assign(*this, other);
+      internal::TensorExecutor<const Assign, DefaultDevice>::run(assign, DefaultDevice());
+      return *this;
+    }
+
+  protected:
+    typename XprType::Nested m_xpr;
+    const Shuffle m_shuffle;
+};
+
+
+// Eval as rvalue
+template<typename Shuffle, typename ArgType, typename Device>
+struct TensorEvaluator<const TensorShufflingOp<Shuffle, ArgType>, Device>
+{
+  typedef TensorShufflingOp<Shuffle, ArgType> XprType;
+  typedef typename XprType::Index Index;
+  static const int NumDims = internal::array_size<typename TensorEvaluator<ArgType, Device>::Dimensions>::value;
+  typedef DSizes<Index, NumDims> Dimensions;
+  typedef typename XprType::Scalar Scalar;
+  typedef typename XprType::CoeffReturnType CoeffReturnType;
+  typedef typename PacketType<CoeffReturnType, Device>::type PacketReturnType;
+  static const int PacketSize = internal::unpacket_traits<PacketReturnType>::size;
+
+  enum {
+    IsAligned = false,
+    PacketAccess = (internal::packet_traits<Scalar>::size > 1),
+    Layout = TensorEvaluator<ArgType, Device>::Layout,
+    CoordAccess = false,  // to be implemented
+    RawAccess = false
+  };
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorEvaluator(const XprType& op, const Device& device)
+      : m_impl(op.expression(), device)
+  {
+    const typename TensorEvaluator<ArgType, Device>::Dimensions& input_dims = m_impl.dimensions();
+    const Shuffle& shuffle = op.shufflePermutation();
+    for (int i = 0; i < NumDims; ++i) {
+      m_dimensions[i] = input_dims[shuffle[i]];
+    }
+
+    array<Index, NumDims> inputStrides;
+
+    if (static_cast<int>(Layout) == static_cast<int>(ColMajor)) {
+      inputStrides[0] = 1;
+      m_outputStrides[0] = 1;
+      for (int i = 1; i < NumDims; ++i) {
+        inputStrides[i] = inputStrides[i - 1] * input_dims[i - 1];
+        m_outputStrides[i] = m_outputStrides[i - 1] * m_dimensions[i - 1];
+      }
+    } else {
+      inputStrides[NumDims - 1] = 1;
+      m_outputStrides[NumDims - 1] = 1;
+      for (int i = NumDims - 2; i >= 0; --i) {
+        inputStrides[i] = inputStrides[i + 1] * input_dims[i + 1];
+        m_outputStrides[i] = m_outputStrides[i + 1] * m_dimensions[i + 1];
+      }
+    }
+
+    for (int i = 0; i < NumDims; ++i) {
+      m_inputStrides[i] = inputStrides[shuffle[i]];
+    }
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Dimensions& dimensions() const { return m_dimensions; }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool evalSubExprsIfNeeded(Scalar* /*data*/) {
+    m_impl.evalSubExprsIfNeeded(NULL);
+    return true;
+  }
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void cleanup() {
+    m_impl.cleanup();
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType coeff(Index index) const
+  {
+    return m_impl.coeff(srcCoeff(index));
+  }
+
+  template<int LoadMode>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketReturnType packet(Index index) const
+  {
+    EIGEN_STATIC_ASSERT((PacketSize > 1), YOU_MADE_A_PROGRAMMING_MISTAKE)
+    eigen_assert(index+PacketSize-1 < dimensions().TotalSize());
+
+    EIGEN_ALIGN_MAX typename internal::remove_const<CoeffReturnType>::type values[PacketSize];
+    for (int i = 0; i < PacketSize; ++i) {
+      values[i] = coeff(index+i);
+    }
+    PacketReturnType rslt = internal::pload<PacketReturnType>(values);
+    return rslt;
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorOpCost costPerCoeff(bool vectorized) const {
+    const double compute_cost = NumDims * (2 * TensorOpCost::AddCost<Index>() +
+                                           2 * TensorOpCost::MulCost<Index>() +
+                                           TensorOpCost::DivCost<Index>());
+    return m_impl.costPerCoeff(vectorized) +
+           TensorOpCost(0, 0, compute_cost, false /* vectorized */, PacketSize);
+  }
+
+  EIGEN_DEVICE_FUNC Scalar* data() const { return NULL; }
+
+ protected:
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Index srcCoeff(Index index) const {
+    Index inputIndex = 0;
+    if (static_cast<int>(Layout) == static_cast<int>(ColMajor)) {
+      for (int i = NumDims - 1; i > 0; --i) {
+        const Index idx = index / m_outputStrides[i];
+        inputIndex += idx * m_inputStrides[i];
+        index -= idx * m_outputStrides[i];
+      }
+      return inputIndex + index * m_inputStrides[0];
+    } else {
+      for (int i = 0; i < NumDims - 1; ++i) {
+        const Index idx = index / m_outputStrides[i];
+        inputIndex += idx * m_inputStrides[i];
+        index -= idx * m_outputStrides[i];
+      }
+      return inputIndex + index * m_inputStrides[NumDims - 1];
+    }
+  }
+
+  Dimensions m_dimensions;
+  array<Index, NumDims> m_outputStrides;
+  array<Index, NumDims> m_inputStrides;
+  TensorEvaluator<ArgType, Device> m_impl;
+};
+
+
+// Eval as lvalue
+template<typename Shuffle, typename ArgType, typename Device>
+struct TensorEvaluator<TensorShufflingOp<Shuffle, ArgType>, Device>
+    : public TensorEvaluator<const TensorShufflingOp<Shuffle, ArgType>, Device>
+{
+  typedef TensorEvaluator<const TensorShufflingOp<Shuffle, ArgType>, Device> Base;
+
+  typedef TensorShufflingOp<Shuffle, ArgType> XprType;
+  typedef typename XprType::Index Index;
+  static const int NumDims = internal::array_size<typename TensorEvaluator<ArgType, Device>::Dimensions>::value;
+  typedef DSizes<Index, NumDims> Dimensions;
+  typedef typename XprType::Scalar Scalar;
+  typedef typename XprType::CoeffReturnType CoeffReturnType;
+  typedef typename PacketType<CoeffReturnType, Device>::type PacketReturnType;
+  static const int PacketSize = internal::unpacket_traits<PacketReturnType>::size;
+
+  enum {
+    IsAligned = false,
+    PacketAccess = (internal::packet_traits<Scalar>::size > 1),
+    RawAccess = false
+  };
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorEvaluator(const XprType& op, const Device& device)
+      : Base(op, device)
+  { }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType& coeffRef(Index index)
+  {
+    return this->m_impl.coeffRef(this->srcCoeff(index));
+  }
+
+  template <int StoreMode> EIGEN_STRONG_INLINE
+  void writePacket(Index index, const PacketReturnType& x)
+  {
+    EIGEN_STATIC_ASSERT((PacketSize > 1), YOU_MADE_A_PROGRAMMING_MISTAKE)
+
+    EIGEN_ALIGN_MAX typename internal::remove_const<CoeffReturnType>::type values[PacketSize];
+    internal::pstore<CoeffReturnType, PacketReturnType>(values, x);
+    for (int i = 0; i < PacketSize; ++i) {
+      this->coeffRef(index+i) = values[i];
+    }
+  }
+};
+
+
+} // end namespace Eigen
+
+#endif // EIGEN_CXX11_TENSOR_TENSOR_SHUFFLING_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorGenerator.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorGenerator.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorGenerator.h	(revision 3762)
@@ -0,0 +1,185 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2015 Benoit Steiner <benoit.steiner.goog@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CXX11_TENSOR_TENSOR_GENERATOR_H
+#define EIGEN_CXX11_TENSOR_TENSOR_GENERATOR_H
+
+namespace Eigen {
+
+/** \class TensorGeneratorOp
+  * \ingroup CXX11_Tensor_Module
+  *
+  * \brief Tensor generator class.
+  *
+  *
+  */
+namespace internal {
+template<typename Generator, typename XprType>
+struct traits<TensorGeneratorOp<Generator, XprType> > : public traits<XprType>
+{
+  typedef typename XprType::Scalar Scalar;
+  typedef traits<XprType> XprTraits;
+  typedef typename XprTraits::StorageKind StorageKind;
+  typedef typename XprTraits::Index Index;
+  typedef typename XprType::Nested Nested;
+  typedef typename remove_reference<Nested>::type _Nested;
+  static const int NumDimensions = XprTraits::NumDimensions;
+  static const int Layout = XprTraits::Layout;
+};
+
+template<typename Generator, typename XprType>
+struct eval<TensorGeneratorOp<Generator, XprType>, Eigen::Dense>
+{
+  typedef const TensorGeneratorOp<Generator, XprType>& type;
+};
+
+template<typename Generator, typename XprType>
+struct nested<TensorGeneratorOp<Generator, XprType>, 1, typename eval<TensorGeneratorOp<Generator, XprType> >::type>
+{
+  typedef TensorGeneratorOp<Generator, XprType> type;
+};
+
+}  // end namespace internal
+
+
+
+template<typename Generator, typename XprType>
+class TensorGeneratorOp : public TensorBase<TensorGeneratorOp<Generator, XprType>, ReadOnlyAccessors>
+{
+  public:
+  typedef typename Eigen::internal::traits<TensorGeneratorOp>::Scalar Scalar;
+  typedef typename Eigen::NumTraits<Scalar>::Real RealScalar;
+  typedef typename XprType::CoeffReturnType CoeffReturnType;
+  typedef typename Eigen::internal::nested<TensorGeneratorOp>::type Nested;
+  typedef typename Eigen::internal::traits<TensorGeneratorOp>::StorageKind StorageKind;
+  typedef typename Eigen::internal::traits<TensorGeneratorOp>::Index Index;
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorGeneratorOp(const XprType& expr, const Generator& generator)
+      : m_xpr(expr), m_generator(generator) {}
+
+    EIGEN_DEVICE_FUNC
+    const Generator& generator() const { return m_generator; }
+
+    EIGEN_DEVICE_FUNC
+    const typename internal::remove_all<typename XprType::Nested>::type&
+    expression() const { return m_xpr; }
+
+  protected:
+    typename XprType::Nested m_xpr;
+    const Generator m_generator;
+};
+
+
+// Eval as rvalue
+template<typename Generator, typename ArgType, typename Device>
+struct TensorEvaluator<const TensorGeneratorOp<Generator, ArgType>, Device>
+{
+  typedef TensorGeneratorOp<Generator, ArgType> XprType;
+  typedef typename XprType::Index Index;
+  typedef typename TensorEvaluator<ArgType, Device>::Dimensions Dimensions;
+  static const int NumDims = internal::array_size<Dimensions>::value;
+  typedef typename XprType::Scalar Scalar;
+  typedef typename XprType::CoeffReturnType CoeffReturnType;
+  typedef typename PacketType<CoeffReturnType, Device>::type PacketReturnType;
+  enum {
+    IsAligned = false,
+    PacketAccess = (internal::unpacket_traits<PacketReturnType>::size > 1),
+    BlockAccess = false,
+    Layout = TensorEvaluator<ArgType, Device>::Layout,
+    CoordAccess = false,  // to be implemented
+    RawAccess = false
+  };
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorEvaluator(const XprType& op, const Device& device)
+      : m_generator(op.generator())
+  {
+    TensorEvaluator<ArgType, Device> impl(op.expression(), device);
+    m_dimensions = impl.dimensions();
+
+    if (static_cast<int>(Layout) == static_cast<int>(ColMajor)) {
+      m_strides[0] = 1;
+      for (int i = 1; i < NumDims; ++i) {
+        m_strides[i] = m_strides[i - 1] * m_dimensions[i - 1];
+      }
+    } else {
+      m_strides[NumDims - 1] = 1;
+      for (int i = NumDims - 2; i >= 0; --i) {
+        m_strides[i] = m_strides[i + 1] * m_dimensions[i + 1];
+      }
+    }
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Dimensions& dimensions() const { return m_dimensions; }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool evalSubExprsIfNeeded(Scalar* /*data*/) {
+    return true;
+  }
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void cleanup() {
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType coeff(Index index) const
+  {
+    array<Index, NumDims> coords;
+    extract_coordinates(index, coords);
+    return m_generator(coords);
+  }
+
+  template<int LoadMode>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketReturnType packet(Index index) const
+  {
+    const int packetSize = internal::unpacket_traits<PacketReturnType>::size;
+    EIGEN_STATIC_ASSERT((packetSize > 1), YOU_MADE_A_PROGRAMMING_MISTAKE)
+    eigen_assert(index+packetSize-1 < dimensions().TotalSize());
+
+    EIGEN_ALIGN_MAX typename internal::remove_const<CoeffReturnType>::type values[packetSize];
+    for (int i = 0; i < packetSize; ++i) {
+      values[i] = coeff(index+i);
+    }
+    PacketReturnType rslt = internal::pload<PacketReturnType>(values);
+    return rslt;
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorOpCost
+  costPerCoeff(bool) const {
+    // TODO(rmlarsen): This is just a placeholder. Define interface to make
+    // generators return their cost.
+    return TensorOpCost(0, 0, TensorOpCost::AddCost<Scalar>() +
+                                  TensorOpCost::MulCost<Scalar>());
+  }
+
+  EIGEN_DEVICE_FUNC Scalar* data() const { return NULL; }
+
+ protected:
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  void extract_coordinates(Index index, array<Index, NumDims>& coords) const {
+    if (static_cast<int>(Layout) == static_cast<int>(ColMajor)) {
+      for (int i = NumDims - 1; i > 0; --i) {
+        const Index idx = index / m_strides[i];
+        index -= idx * m_strides[i];
+        coords[i] = idx;
+      }
+      coords[0] = index;
+    } else {
+      for (int i = 0; i < NumDims - 1; ++i) {
+        const Index idx = index / m_strides[i];
+        index -= idx * m_strides[i];
+        coords[i] = idx;
+      }
+      coords[NumDims-1] = index;
+    }
+  }
+
+  Dimensions m_dimensions;
+  array<Index, NumDims> m_strides;
+  Generator m_generator;
+};
+
+} // end namespace Eigen
+
+#endif // EIGEN_CXX11_TENSOR_TENSOR_GENERATOR_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorReductionSycl.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorReductionSycl.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorReductionSycl.h	(revision 3762)
@@ -0,0 +1,242 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Mehdi Goli    Codeplay Software Ltd.
+// Ralph Potter  Codeplay Software Ltd.
+// Luke Iwanski  Codeplay Software Ltd.
+// Contact: <eigen@codeplay.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+/*****************************************************************
+ * TensorSyclPlaceHolderExpr.h
+ *
+ * \brief:
+ *  This is the specialisation of the placeholder expression based on the
+ * operation type
+ *
+*****************************************************************/
+
+#ifndef UNSUPPORTED_EIGEN_CXX11_SRC_TENSOR_TENSOR_REDUCTION_SYCL_HPP
+#define UNSUPPORTED_EIGEN_CXX11_SRC_TENSOR_TENSOR_REDUCTION_SYCL_HPP
+
+namespace Eigen {
+namespace internal {
+
+template<typename CoeffReturnType, typename KernelName> struct syclGenericBufferReducer{
+template<typename BufferTOut, typename BufferTIn>
+static void run(BufferTOut* bufOut, BufferTIn& bufI, const Eigen::SyclDevice& dev, size_t length, size_t local){
+  do {
+          auto f = [length, local, bufOut, &bufI](cl::sycl::handler& h) mutable {
+            cl::sycl::nd_range<1> r{cl::sycl::range<1>{std::max(length, local)},
+                                    cl::sycl::range<1>{std::min(length, local)}};
+            /* Two accessors are used: one to the buffer that is being reduced,
+             * and a second to local memory, used to store intermediate data. */
+            auto aI =
+                bufI.template get_access<cl::sycl::access::mode::read_write>(h);
+            auto aOut =
+                bufOut->template get_access<cl::sycl::access::mode::discard_write>(h);
+            cl::sycl::accessor<CoeffReturnType, 1, cl::sycl::access::mode::read_write,
+                               cl::sycl::access::target::local>
+                scratch(cl::sycl::range<1>(local), h);
+
+            /* The parallel_for invocation chosen is the variant with an nd_item
+             * parameter, since the code requires barriers for correctness. */
+            h.parallel_for<KernelName>(
+                r, [aOut, aI, scratch, local, length](cl::sycl::nd_item<1> id) {
+                  size_t globalid = id.get_global(0);
+                  size_t localid = id.get_local(0);
+                  /* All threads collectively read from global memory into local.
+                   * The barrier ensures all threads' IO is resolved before
+                   * execution continues (strictly speaking, all threads within
+                   * a single work-group - there is no co-ordination between
+                   * work-groups, only work-items). */
+                  if (globalid < length) {
+                    scratch[localid] = aI[globalid];
+                  }
+                  id.barrier(cl::sycl::access::fence_space::local_space);
+
+                  /* Apply the reduction operation between the current local
+                   * id and the one on the other half of the vector. */
+                  if (globalid < length) {
+                    int min = (length < local) ? length : local;
+                    for (size_t offset = min / 2; offset > 0; offset /= 2) {
+                      if (localid < offset) {
+                        scratch[localid] += scratch[localid + offset];
+                      }
+                      id.barrier(cl::sycl::access::fence_space::local_space);
+                    }
+                    /* The final result will be stored in local id 0. */
+                    if (localid == 0) {
+                      aI[id.get_group(0)] = scratch[localid];
+                      if((length<=local) && globalid ==0){
+                        aOut[globalid]=scratch[localid];
+                      }
+                    }
+                  }
+                });
+          };
+            dev.m_queue.submit(f);
+            dev.m_queue.throw_asynchronous();
+
+          /* At this point, you could queue::wait_and_throw() to ensure that
+           * errors are caught quickly. However, this would likely impact
+           * performance negatively. */
+          length = length / local;
+
+        } while (length > 1);
+
+
+
+}
+
+};
+
+/// For now let's start with a full reducer
+/// Self is useless here because in expression construction we are going to treat reduction as a leafnode.
+/// we want to take reduction child and then build a construction and apply the full reducer function on it. Fullreducre applies the
+/// reduction operation on the child of the reduction. once it is done the reduction is an empty shell and can be thrown away and treated as
+// a leafNode.
+template <typename Self, typename Op, bool Vectorizable>
+struct FullReducer<Self, Op, const Eigen::SyclDevice, Vectorizable> {
+
+  typedef typename Self::CoeffReturnType CoeffReturnType;
+  static const bool HasOptimizedImplementation = false;
+
+  static void run(const Self& self, Op& reducer, const Eigen::SyclDevice& dev, CoeffReturnType* output) {
+    typedef const typename Self::ChildType HostExpr; /// this is the child of reduction
+    typedef  typename TensorSycl::internal::createPlaceHolderExpression<HostExpr>::Type PlaceHolderExpr;
+    auto functors = TensorSycl::internal::extractFunctors(self.impl());
+    int red_factor =256; /// initial reduction. If the size is less than red_factor we only creates one thread.
+    size_t inputSize =self.impl().dimensions().TotalSize();
+    size_t rng = inputSize/red_factor; // the total number of thread initially is half the size of the input
+    size_t remaining = inputSize% red_factor;
+    if(rng ==0) {
+      red_factor=1;
+    };
+    size_t tileSize =dev.m_queue.get_device(). template get_info<cl::sycl::info::device::max_work_group_size>()/2;
+    size_t GRange=std::max((size_t )1, rng);
+
+    // convert global range to power of 2 for redecution
+    GRange--;
+    GRange |= GRange >> 1;
+    GRange |= GRange >> 2;
+    GRange |= GRange >> 4;
+    GRange |= GRange >> 8;
+    GRange |= GRange >> 16;
+#if __x86_64__ || __ppc64__ || _WIN64
+    GRange |= GRange >> 32;
+#endif
+    GRange++;
+    size_t  outTileSize = tileSize;
+    /// if the shared memory is less than the GRange, we set shared_mem size to the TotalSize and in this case one kernel would be created for recursion to reduce all to one.
+    if (GRange < outTileSize) outTileSize=GRange;
+    // getting final out buffer at the moment the created buffer is true because there is no need for assign
+    auto out_buffer =dev.template get_sycl_buffer<typename Eigen::internal::remove_all<CoeffReturnType>::type>(self.dimensions().TotalSize(), output);
+    /// creating the shared memory for calculating reduction.
+    /// This one is used to collect all the reduced value of shared memory as we dont have global barrier on GPU. Once it is saved we can
+    /// recursively apply reduction on it in order to reduce the whole.
+    auto temp_global_buffer =cl::sycl::buffer<CoeffReturnType, 1>(cl::sycl::range<1>(GRange));
+    typedef typename Eigen::internal::remove_all<decltype(self.xprDims())>::type Dims;
+    Dims dims= self.xprDims();
+    Op functor = reducer;
+    dev.m_queue.submit([&](cl::sycl::handler &cgh) {
+      // create a tuple of accessors from Evaluator
+      auto tuple_of_accessors =  TensorSycl::internal::createTupleOfAccessors(cgh, self.impl());
+      auto tmp_global_accessor = temp_global_buffer. template get_access<cl::sycl::access::mode::read_write, cl::sycl::access::target::global_buffer>(cgh);
+
+      cgh.parallel_for<PlaceHolderExpr>( cl::sycl::nd_range<1>(cl::sycl::range<1>(GRange), cl::sycl::range<1>(outTileSize)), [=](cl::sycl::nd_item<1> itemID) {
+        typedef typename TensorSycl::internal::ConvertToDeviceExpression<const HostExpr>::Type DevExpr;
+        auto device_expr = TensorSycl::internal::createDeviceExpression<DevExpr, PlaceHolderExpr>(functors, tuple_of_accessors);
+        /// reduction cannot be captured automatically through our device conversion recursion. The reason is that reduction has two behaviour
+        /// the first behaviour is when it is used as a root to lauch the sub-kernel. The second one is when it is treated as a leafnode to pass the
+        /// calculated result to its parent kernel. While the latter is automatically detected through our device expression generator. The former is created here.
+        const auto device_self_expr= TensorReductionOp<Op, Dims, decltype(device_expr.expr) ,MakeGlobalPointer>(device_expr.expr, dims, functor);
+        /// This is the evaluator for device_self_expr. This is exactly similar to the self which has been passed to run function. The difference is
+        /// the device_evaluator is detectable and recognisable on the device.
+        auto device_self_evaluator = Eigen::TensorEvaluator<decltype(device_self_expr), Eigen::DefaultDevice>(device_self_expr, Eigen::DefaultDevice());
+        /// const cast added as a naive solution to solve the qualifier drop error
+        auto globalid=itemID.get_global_linear_id();
+
+        if(globalid<rng)
+          tmp_global_accessor.get_pointer()[globalid]=InnerMostDimReducer<decltype(device_self_evaluator), Op, false>::reduce(device_self_evaluator, red_factor*globalid, red_factor, const_cast<Op&>(functor));
+        else
+          tmp_global_accessor.get_pointer()[globalid]=static_cast<CoeffReturnType>(0);
+
+        if(remaining!=0 && globalid==0 )
+          // this will add the rest of input buffer when the input size is not devidable to red_factor.
+          tmp_global_accessor.get_pointer()[globalid]+=InnerMostDimReducer<decltype(device_self_evaluator), Op, false>::reduce(device_self_evaluator, red_factor*(rng), remaining, const_cast<Op&>(functor));
+      });
+    });
+  dev.m_queue.throw_asynchronous();
+
+/// This is used to recursively reduce the tmp value to an element of 1;
+  syclGenericBufferReducer<CoeffReturnType,HostExpr>::run(out_buffer, temp_global_buffer,dev, GRange,  outTileSize);
+  }
+
+};
+
+template <typename Self, typename Op>
+struct InnerReducer<Self, Op, const Eigen::SyclDevice> {
+
+  typedef typename Self::CoeffReturnType CoeffReturnType;
+  static const bool HasOptimizedImplementation = false;
+
+  static bool run(const Self& self, Op& reducer, const Eigen::SyclDevice& dev, CoeffReturnType* output, typename Self::Index , typename Self::Index num_coeffs_to_preserve) {
+    typedef const typename Self::ChildType HostExpr; /// this is the child of reduction
+    typedef  typename TensorSycl::internal::createPlaceHolderExpression<HostExpr>::Type PlaceHolderExpr;
+    auto functors = TensorSycl::internal::extractFunctors(self.impl());
+
+    size_t tileSize =dev.m_queue.get_device(). template get_info<cl::sycl::info::device::max_work_group_size>()/2;
+
+    size_t GRange=num_coeffs_to_preserve;
+    if (tileSize>GRange) tileSize=GRange;
+    else if(GRange>tileSize){
+      size_t xMode = GRange % tileSize;
+      if (xMode != 0) GRange += (tileSize - xMode);
+    }
+    // getting final out buffer at the moment the created buffer is true because there is no need for assign
+    /// creating the shared memory for calculating reduction.
+    /// This one is used to collect all the reduced value of shared memory as we dont have global barrier on GPU. Once it is saved we can
+    /// recursively apply reduction on it in order to reduce the whole.
+    typedef typename Eigen::internal::remove_all<decltype(self.xprDims())>::type Dims;
+    Dims dims= self.xprDims();
+    Op functor = reducer;
+
+    dev.m_queue.submit([&](cl::sycl::handler &cgh) {
+      // create a tuple of accessors from Evaluator
+      auto tuple_of_accessors =  TensorSycl::internal::createTupleOfAccessors(cgh, self.impl());
+      auto output_accessor = dev.template get_sycl_accessor<cl::sycl::access::mode::discard_write>(num_coeffs_to_preserve,cgh, output);
+
+      cgh.parallel_for<Self>( cl::sycl::nd_range<1>(cl::sycl::range<1>(GRange), cl::sycl::range<1>(tileSize)), [=](cl::sycl::nd_item<1> itemID) {
+        typedef typename TensorSycl::internal::ConvertToDeviceExpression<const HostExpr>::Type DevExpr;
+        auto device_expr = TensorSycl::internal::createDeviceExpression<DevExpr, PlaceHolderExpr>(functors, tuple_of_accessors);
+        /// reduction cannot be captured automatically through our device conversion recursion. The reason is that reduction has two behaviour
+        /// the first behaviour is when it is used as a root to lauch the sub-kernel. The second one is when it is treated as a leafnode to pass the
+        /// calculated result to its parent kernel. While the latter is automatically detected through our device expression generator. The former is created here.
+        const auto device_self_expr= TensorReductionOp<Op, Dims, decltype(device_expr.expr) ,MakeGlobalPointer>(device_expr.expr, dims, functor);
+        /// This is the evaluator for device_self_expr. This is exactly similar to the self which has been passed to run function. The difference is
+        /// the device_evaluator is detectable and recognisable on the device.
+        typedef Eigen::TensorEvaluator<decltype(device_self_expr), Eigen::DefaultDevice> DeiceSelf;
+        auto device_self_evaluator = Eigen::TensorEvaluator<decltype(device_self_expr), Eigen::DefaultDevice>(device_self_expr, Eigen::DefaultDevice());
+        /// const cast added as a naive solution to solve the qualifier drop error
+        auto globalid=itemID.get_global_linear_id();
+        if (globalid< static_cast<size_t>(num_coeffs_to_preserve)) {
+          typename DeiceSelf::CoeffReturnType accum = functor.initialize();
+          GenericDimReducer<DeiceSelf::NumReducedDims-1, DeiceSelf, Op>::reduce(device_self_evaluator, device_self_evaluator.firstInput(globalid),const_cast<Op&>(functor), &accum);
+          functor.finalize(accum);
+          output_accessor.get_pointer()[globalid]= accum;
+        }
+      });
+    });
+  dev.m_queue.throw_asynchronous();
+    return false;
+  }
+};
+
+}  // end namespace internal
+}  // namespace Eigen
+
+#endif  // UNSUPPORTED_EIGEN_CXX11_SRC_TENSOR_TENSOR_REDUCTION_SYCL_HPP
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorGlobalFunctions.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorGlobalFunctions.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorGlobalFunctions.h	(revision 3762)
@@ -0,0 +1,33 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2016 Eugene Brevdo <ebrevdo@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CXX11_TENSOR_TENSOR_GLOBAL_FUNCTIONS_H
+#define EIGEN_CXX11_TENSOR_TENSOR_GLOBAL_FUNCTIONS_H
+
+namespace Eigen {
+
+/** \cpp11 \returns an expression of the coefficient-wise betainc(\a x, \a a, \a b) to the given tensors.
+ *
+ * This function computes the regularized incomplete beta function (integral).
+ *
+ */
+template <typename ADerived, typename BDerived, typename XDerived>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const
+    TensorCwiseTernaryOp<internal::scalar_betainc_op<typename XDerived::Scalar>,
+                         const ADerived, const BDerived, const XDerived>
+    betainc(const ADerived& a, const BDerived& b, const XDerived& x) {
+  return TensorCwiseTernaryOp<
+      internal::scalar_betainc_op<typename XDerived::Scalar>, const ADerived,
+      const BDerived, const XDerived>(
+      a, b, x, internal::scalar_betainc_op<typename XDerived::Scalar>());
+}
+
+} // end namespace Eigen
+
+#endif // EIGEN_CXX11_TENSOR_TENSOR_GLOBAL_FUNCTIONS_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorCostModel.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorCostModel.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorCostModel.h	(revision 3762)
@@ -0,0 +1,212 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2016 Rasmus Munk Larsen <rmlarsen@google.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CXX11_TENSOR_TENSOR_COST_MODEL_H
+#define EIGEN_CXX11_TENSOR_TENSOR_COST_MODEL_H
+
+namespace Eigen {
+
+/** \class TensorEvaluator
+  * \ingroup CXX11_Tensor_Module
+  *
+  * \brief A cost model used to limit the number of threads used for evaluating
+  * tensor expression.
+  *
+  */
+
+// Class storing the cost of evaluating a tensor expression in terms of the
+// estimated number of operand bytes loads, bytes stored, and compute cycles.
+class TensorOpCost {
+ public:
+  // TODO(rmlarsen): Fix the scalar op costs in Eigen proper. Even a simple
+  // model based on minimal reciprocal throughput numbers from Intel or
+  // Agner Fog's tables would be better than what is there now.
+  template <typename ArgType>
+  static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE int MulCost() {
+    return internal::functor_traits<
+        internal::scalar_product_op<ArgType, ArgType> >::Cost;
+  }
+  template <typename ArgType>
+  static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE int AddCost() {
+    return internal::functor_traits<internal::scalar_sum_op<ArgType> >::Cost;
+  }
+  template <typename ArgType>
+  static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE int DivCost() {
+    return internal::functor_traits<
+        internal::scalar_quotient_op<ArgType, ArgType> >::Cost;
+  }
+  template <typename ArgType>
+  static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE int ModCost() {
+    return internal::functor_traits<internal::scalar_mod_op<ArgType> >::Cost;
+  }
+  template <typename SrcType, typename TargetType>
+  static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE int CastCost() {
+    return internal::functor_traits<
+        internal::scalar_cast_op<SrcType, TargetType> >::Cost;
+  }
+
+  EIGEN_DEVICE_FUNC
+  TensorOpCost() : bytes_loaded_(0), bytes_stored_(0), compute_cycles_(0) {}
+  EIGEN_DEVICE_FUNC
+  TensorOpCost(double bytes_loaded, double bytes_stored, double compute_cycles)
+      : bytes_loaded_(bytes_loaded),
+        bytes_stored_(bytes_stored),
+        compute_cycles_(compute_cycles) {}
+
+  EIGEN_DEVICE_FUNC
+  TensorOpCost(double bytes_loaded, double bytes_stored, double compute_cycles,
+               bool vectorized, double packet_size)
+      : bytes_loaded_(bytes_loaded),
+        bytes_stored_(bytes_stored),
+        compute_cycles_(vectorized ? compute_cycles / packet_size
+                                   : compute_cycles) {
+    eigen_assert(bytes_loaded >= 0 && (numext::isfinite)(bytes_loaded));
+    eigen_assert(bytes_stored >= 0 && (numext::isfinite)(bytes_stored));
+    eigen_assert(compute_cycles >= 0 && (numext::isfinite)(compute_cycles));
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE double bytes_loaded() const {
+    return bytes_loaded_;
+  }
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE double bytes_stored() const {
+    return bytes_stored_;
+  }
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE double compute_cycles() const {
+    return compute_cycles_;
+  }
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE double total_cost(
+      double load_cost, double store_cost, double compute_cost) const {
+    return load_cost * bytes_loaded_ + store_cost * bytes_stored_ +
+           compute_cost * compute_cycles_;
+  }
+
+  // Drop memory access component. Intended for cases when memory accesses are
+  // sequential or are completely masked by computations.
+  EIGEN_DEVICE_FUNC void dropMemoryCost() {
+    bytes_loaded_ = 0;
+    bytes_stored_ = 0;
+  }
+
+  // TODO(rmlarsen): Define min in terms of total cost, not elementwise.
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorOpCost cwiseMin(
+      const TensorOpCost& rhs) const {
+    double bytes_loaded = numext::mini(bytes_loaded_, rhs.bytes_loaded());
+    double bytes_stored = numext::mini(bytes_stored_, rhs.bytes_stored());
+    double compute_cycles = numext::mini(compute_cycles_, rhs.compute_cycles());
+    return TensorOpCost(bytes_loaded, bytes_stored, compute_cycles);
+  }
+
+  // TODO(rmlarsen): Define max in terms of total cost, not elementwise.
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorOpCost cwiseMax(
+      const TensorOpCost& rhs) const {
+    double bytes_loaded = numext::maxi(bytes_loaded_, rhs.bytes_loaded());
+    double bytes_stored = numext::maxi(bytes_stored_, rhs.bytes_stored());
+    double compute_cycles = numext::maxi(compute_cycles_, rhs.compute_cycles());
+    return TensorOpCost(bytes_loaded, bytes_stored, compute_cycles);
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorOpCost& operator+=(
+      const TensorOpCost& rhs) {
+    bytes_loaded_ += rhs.bytes_loaded();
+    bytes_stored_ += rhs.bytes_stored();
+    compute_cycles_ += rhs.compute_cycles();
+    return *this;
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorOpCost& operator*=(double rhs) {
+    bytes_loaded_ *= rhs;
+    bytes_stored_ *= rhs;
+    compute_cycles_ *= rhs;
+    return *this;
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE friend TensorOpCost operator+(
+      TensorOpCost lhs, const TensorOpCost& rhs) {
+    lhs += rhs;
+    return lhs;
+  }
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE friend TensorOpCost operator*(
+      TensorOpCost lhs, double rhs) {
+    lhs *= rhs;
+    return lhs;
+  }
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE friend TensorOpCost operator*(
+      double lhs, TensorOpCost rhs) {
+    rhs *= lhs;
+    return rhs;
+  }
+
+  friend std::ostream& operator<<(std::ostream& os, const TensorOpCost& tc) {
+    return os << "[bytes_loaded = " << tc.bytes_loaded()
+              << ", bytes_stored = " << tc.bytes_stored()
+              << ", compute_cycles = " << tc.compute_cycles() << "]";
+  }
+
+ private:
+  double bytes_loaded_;
+  double bytes_stored_;
+  double compute_cycles_;
+};
+
+// TODO(rmlarsen): Implement a policy that chooses an "optimal" number of theads
+// in [1:max_threads] instead of just switching multi-threading off for small
+// work units.
+template <typename Device>
+class TensorCostModel {
+ public:
+  // Scaling from Eigen compute cost to device cycles.
+  static const int kDeviceCyclesPerComputeCycle = 1;
+
+ // Costs in device cycles.
+  static const int kStartupCycles = 100000;
+  static const int kPerThreadCycles = 100000;
+  static const int kTaskSize = 40000;
+
+  // Returns the number of threads in [1:max_threads] to use for
+  // evaluating an expression with the given output size and cost per
+  // coefficient.
+  static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE int numThreads(
+      double output_size, const TensorOpCost& cost_per_coeff, int max_threads) {
+    double cost = totalCost(output_size, cost_per_coeff);
+    int threads = (cost - kStartupCycles) / kPerThreadCycles + 0.9;
+    return numext::mini(max_threads, numext::maxi(1, threads));
+  }
+
+  // taskSize assesses parallel task size.
+  // Value of 1.0 means ideal parallel task size. Values < 1.0 mean that task
+  // granularity needs to be increased to mitigate parallelization overheads.
+  static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE double taskSize(
+      double output_size, const TensorOpCost& cost_per_coeff) {
+    return totalCost(output_size, cost_per_coeff) / kTaskSize;
+  }
+
+ private:
+  static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE double totalCost(
+      double output_size, const TensorOpCost& cost_per_coeff) {
+    // Cost of memory fetches from L2 cache. 64 is typical cache line size.
+    // 11 is L2 cache latency on Haswell.
+    // We don't know whether data is in L1, L2 or L3. But we are most interested
+    // in single-threaded computational time around 100us-10ms (smaller time
+    // is too small for parallelization, larger time is not intersting
+    // either because we are probably using all available threads already).
+    // And for the target time range, L2 seems to be what matters. Data set
+    // fitting into L1 is too small to take noticeable time. Data set fitting
+    // only into L3 presumably will take more than 10ms to load and process.
+    const double kLoadCycles = 1.0 / 64 * 11;
+    const double kStoreCycles = 1.0 / 64 * 11;
+    // Scaling from Eigen compute cost to device cycles.
+    return output_size *
+        cost_per_coeff.total_cost(kLoadCycles, kStoreCycles,
+                                  kDeviceCyclesPerComputeCycle);
+  }
+};
+
+}  // namespace Eigen
+
+#endif  // EIGEN_CXX11_TENSOR_TENSOR_COST_MODEL_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorReductionCuda.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorReductionCuda.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorReductionCuda.h	(revision 3762)
@@ -0,0 +1,750 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2014 Benoit Steiner <benoit.steiner.goog@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CXX11_TENSOR_TENSOR_REDUCTION_CUDA_H
+#define EIGEN_CXX11_TENSOR_TENSOR_REDUCTION_CUDA_H
+
+namespace Eigen {
+namespace internal {
+
+
+#if defined(EIGEN_USE_GPU) && defined(__CUDACC__)
+// Full reducers for GPU, don't vectorize for now
+
+// Reducer function that enables multiple cuda thread to safely accumulate at the same
+// output address. It basically reads the current value of the output variable, and
+// attempts to update it with the new value. If in the meantime another cuda thread
+// updated the content of the output address it will try again.
+template <typename T, typename R>
+__device__ EIGEN_ALWAYS_INLINE void atomicReduce(T* output, T accum, R& reducer) {
+#if __CUDA_ARCH__ >= 300
+  if (sizeof(T) == 4)
+  {
+    unsigned int oldval = *reinterpret_cast<unsigned int*>(output);
+    unsigned int newval = oldval;
+    reducer.reduce(accum, reinterpret_cast<T*>(&newval));
+    if (newval == oldval) {
+      return;
+    }
+    unsigned int readback;
+    while ((readback = atomicCAS((unsigned int*)output, oldval, newval)) != oldval) {
+      oldval = readback;
+      newval = oldval;
+      reducer.reduce(accum, reinterpret_cast<T*>(&newval));
+      if (newval == oldval) {
+        return;
+      }
+    }
+  }
+  else if (sizeof(T) == 8) {
+    unsigned long long oldval = *reinterpret_cast<unsigned long long*>(output);
+    unsigned long long newval = oldval;
+    reducer.reduce(accum, reinterpret_cast<T*>(&newval));
+    if (newval == oldval) {
+      return;
+    }
+    unsigned long long readback;
+    while ((readback = atomicCAS((unsigned long long*)output, oldval, newval)) != oldval) {
+      oldval = readback;
+      newval = oldval;
+      reducer.reduce(accum, reinterpret_cast<T*>(&newval));
+      if (newval == oldval) {
+        return;
+      }
+    }
+  }
+  else {
+    assert(0 && "Wordsize not supported");
+  }
+#else
+  assert(0 && "Shouldn't be called on unsupported device");
+#endif
+}
+
+// We extend atomicExch to support extra data types
+template <typename Type>
+__device__ inline Type atomicExchCustom(Type* address, Type val) {
+  return atomicExch(address, val);
+}
+
+template <>
+__device__ inline double atomicExchCustom(double* address, double val) {
+  unsigned long long int* address_as_ull = reinterpret_cast<unsigned long long int*>(address);
+  return __longlong_as_double(atomicExch(address_as_ull, __double_as_longlong(val)));
+}
+
+#ifdef EIGEN_HAS_CUDA_FP16
+template <template <typename T> class R>
+__device__ inline void atomicReduce(half2* output, half2 accum, R<half>& reducer) {
+  unsigned int oldval = *reinterpret_cast<unsigned int*>(output);
+  unsigned int newval = oldval;
+  reducer.reducePacket(accum, reinterpret_cast<half2*>(&newval));
+  if (newval == oldval) {
+    return;
+  }
+  unsigned int readback;
+  while ((readback = atomicCAS((unsigned int*)output, oldval, newval)) != oldval) {
+    oldval = readback;
+    newval = oldval;
+    reducer.reducePacket(accum, reinterpret_cast<half2*>(&newval));
+    if (newval == oldval) {
+      return;
+    }
+  }
+}
+#endif
+
+template <>
+__device__ inline void atomicReduce(float* output, float accum, SumReducer<float>&) {
+#if __CUDA_ARCH__ >= 300
+  atomicAdd(output, accum);
+#else
+  assert(0 && "Shouldn't be called on unsupported device");
+#endif
+}
+
+
+template <typename CoeffType, typename Index>
+__global__ void ReductionInitKernel(const CoeffType val, Index num_preserved_coeffs, CoeffType* output) {
+  const Index thread_id = blockIdx.x * blockDim.x + threadIdx.x;
+  const Index num_threads = blockDim.x * gridDim.x;
+  for (Index i = thread_id; i < num_preserved_coeffs; i += num_threads) {
+    output[i] = val;
+  }
+}
+
+
+template <int BlockSize, int NumPerThread, typename Self,
+          typename Reducer, typename Index>
+__global__ void FullReductionKernel(Reducer reducer, const Self input, Index num_coeffs,
+                                    typename Self::CoeffReturnType* output, unsigned int* semaphore) {
+#if __CUDA_ARCH__ >= 300
+  // Initialize the output value
+  const Index first_index = blockIdx.x * BlockSize * NumPerThread + threadIdx.x;
+  if (gridDim.x == 1) {
+    if (first_index == 0) {
+      *output = reducer.initialize();
+    }
+  }
+  else {
+    if (threadIdx.x == 0) {
+      unsigned int block = atomicCAS(semaphore, 0u, 1u);
+      if (block == 0) {
+        // We're the first block to run, initialize the output value
+        atomicExchCustom(output, reducer.initialize());
+        __threadfence();
+        atomicExch(semaphore, 2u);
+      }
+      else {
+        // Wait for the first block to initialize the output value.
+        // Use atomicCAS here to ensure that the reads aren't cached
+        unsigned int val;
+        do {
+          val = atomicCAS(semaphore, 2u, 2u);
+        }
+        while (val < 2u);
+      }
+    }
+  }
+
+  __syncthreads();
+
+  eigen_assert(gridDim.x == 1 || *semaphore >= 2u);
+
+  typename Self::CoeffReturnType accum = reducer.initialize();
+  Index max_iter = numext::mini<Index>(num_coeffs - first_index, NumPerThread*BlockSize);
+  for (Index i = 0; i < max_iter; i+=BlockSize) {
+    const Index index = first_index + i;
+    eigen_assert(index < num_coeffs);
+    typename Self::CoeffReturnType val = input.m_impl.coeff(index);
+    reducer.reduce(val, &accum);
+  }
+
+#pragma unroll
+  for (int offset = warpSize/2; offset > 0; offset /= 2) {
+    reducer.reduce(__shfl_down(accum, offset, warpSize), &accum);
+  }
+
+  if ((threadIdx.x & (warpSize - 1)) == 0) {
+    atomicReduce(output, accum, reducer);
+  }
+
+  if (gridDim.x > 1 && threadIdx.x == 0) {
+    // Let the last block reset the semaphore
+    atomicInc(semaphore, gridDim.x + 1);
+  }
+#else
+  assert(0 && "Shouldn't be called on unsupported device");
+#endif
+}
+
+
+#ifdef EIGEN_HAS_CUDA_FP16
+template <typename Self,
+          typename Reducer, typename Index>
+__global__ void ReductionInitFullReduxKernelHalfFloat(Reducer reducer, const Self input, Index num_coeffs, half2* scratch) {
+  eigen_assert(blockDim.x == 1);
+  eigen_assert(gridDim.x == 1);
+  if (num_coeffs % 2 != 0) {
+    half last = input.m_impl.coeff(num_coeffs-1);
+    *scratch = __halves2half2(last, reducer.initialize());
+  } else {
+    *scratch = reducer.template initializePacket<half2>();
+  }
+}
+
+template <typename Self,
+          typename Reducer, typename Index>
+__global__ void ReductionInitKernelHalfFloat(Reducer reducer, const Self input, Index num_coeffs, half* output) {
+  const Index thread_id = blockIdx.x * blockDim.x + threadIdx.x;
+  const Index num_threads = blockDim.x * gridDim.x;
+  const Index num_packets = num_coeffs / 2;
+  for (Index i = thread_id; i < num_packets; i += num_threads) {
+    ((half2*)output)[i] = reducer.template initializePacket<half2>();
+  }
+
+  if (thread_id == 0 && num_coeffs % 2 != 0) {
+    output[num_coeffs-1] = reducer.initialize();
+  }
+}
+
+template <int BlockSize, int NumPerThread, typename Self,
+          typename Reducer, typename Index>
+__global__ void FullReductionKernelHalfFloat(Reducer reducer, const Self input, Index num_coeffs,
+                                    half* output, half2* scratch) {
+  eigen_assert(NumPerThread % 2 == 0);
+
+  const Index first_index = blockIdx.x * BlockSize * NumPerThread + 2*threadIdx.x;
+
+  // Initialize the output value if it wasn't initialized by the ReductionInitKernel
+  if (gridDim.x == 1 && first_index == 0) {
+    if (num_coeffs % 2 != 0) {
+      half last = input.m_impl.coeff(num_coeffs-1);
+      *scratch = __halves2half2(last, reducer.initialize());
+    } else {
+      *scratch = reducer.template initializePacket<half2>();
+    }
+    __syncthreads();
+  }
+
+  half2 accum = reducer.template initializePacket<half2>();
+  const Index max_iter = numext::mini<Index>((num_coeffs - first_index) / 2, NumPerThread*BlockSize / 2);
+  for (Index i = 0; i < max_iter; i += BlockSize) {
+    const Index index = first_index + 2*i;
+    eigen_assert(index + 1 < num_coeffs);
+    half2 val = input.m_impl.template packet<Unaligned>(index);
+    reducer.reducePacket(val, &accum);
+  }
+
+#pragma unroll
+  for (int offset = warpSize/2; offset > 0; offset /= 2) {
+    reducer.reducePacket(__shfl_down(accum, offset, warpSize), &accum);
+  }
+
+  if ((threadIdx.x & (warpSize - 1)) == 0) {
+    atomicReduce(scratch, accum, reducer);
+  }
+
+  __syncthreads();
+
+  if (gridDim.x == 1 && first_index == 0) {
+    half tmp = __low2half(*scratch);
+    reducer.reduce(__high2half(*scratch), &tmp);
+    *output = tmp;
+  }
+}
+
+template <typename Op>
+__global__ void ReductionCleanupKernelHalfFloat(Op& reducer, half* output, half2* scratch) {
+  eigen_assert(threadIdx.x == 1);
+  half tmp = __low2half(*scratch);
+  reducer.reduce(__high2half(*scratch), &tmp);
+  *output = tmp;
+}
+
+#endif
+
+template <typename Self, typename Op, typename OutputType, bool PacketAccess, typename Enabled = void>
+struct FullReductionLauncher {
+  static void run(const Self&, Op&, const GpuDevice&, OutputType*, typename Self::Index) {
+    assert(false && "Should only be called on doubles, floats and half floats");
+  }
+};
+
+// Specialization for float and double
+template <typename Self, typename Op, typename OutputType, bool PacketAccess>
+struct FullReductionLauncher<
+    Self, Op, OutputType, PacketAccess,
+    typename internal::enable_if<
+      internal::is_same<float, OutputType>::value ||
+      internal::is_same<double, OutputType>::value,
+    void>::type> {
+  static void run(const Self& self, Op& reducer, const GpuDevice& device, OutputType* output, typename Self::Index num_coeffs) {
+    typedef typename Self::Index Index;
+    typedef typename Self::CoeffReturnType Scalar;
+    const int block_size = 256;
+    const int num_per_thread = 128;
+    const int num_blocks = divup<int>(num_coeffs, block_size * num_per_thread);
+
+    unsigned int* semaphore = NULL;
+    if (num_blocks > 1) {
+      semaphore = device.semaphore();
+    }
+
+    LAUNCH_CUDA_KERNEL((FullReductionKernel<block_size, num_per_thread, Self, Op, Index>),
+                       num_blocks, block_size, 0, device, reducer, self, num_coeffs, output, semaphore);
+  }
+};
+
+#ifdef EIGEN_HAS_CUDA_FP16
+template <typename Self, typename Op>
+struct FullReductionLauncher<Self, Op, Eigen::half, false> {
+  static void run(const Self&, Op&, const GpuDevice&, half*, typename Self::Index) {
+    assert(false && "Should not be called since there is no packet accessor");
+  }
+};
+
+template <typename Self, typename Op>
+struct FullReductionLauncher<Self, Op, Eigen::half, true> {
+  static void run(const Self& self, Op& reducer, const GpuDevice& device, half* output, typename Self::Index num_coeffs) {
+    typedef typename Self::Index Index;
+
+    const int block_size = 256;
+    const int num_per_thread = 128;
+    const int num_blocks = divup<int>(num_coeffs, block_size * num_per_thread);
+    half2* scratch = static_cast<half2*>(device.scratchpad());
+
+    if (num_blocks > 1) {
+      // We initialize the output and the scrathpad outside the reduction kernel when we can't be sure that there
+      // won't be a race conditions between multiple thread blocks.
+      LAUNCH_CUDA_KERNEL((ReductionInitFullReduxKernelHalfFloat<Self, Op, Index>),
+                         1, 1, 0, device, reducer, self, num_coeffs, scratch);
+    }
+
+    LAUNCH_CUDA_KERNEL((FullReductionKernelHalfFloat<block_size, num_per_thread, Self, Op, Index>),
+                       num_blocks, block_size, 0, device, reducer, self, num_coeffs, output, scratch);
+
+    if (num_blocks > 1) {
+      LAUNCH_CUDA_KERNEL((ReductionCleanupKernelHalfFloat<Op>),
+                         1, 1, 0, device, reducer, output, scratch);
+    }
+  }
+};
+#endif
+
+
+template <typename Self, typename Op, bool Vectorizable>
+struct FullReducer<Self, Op, GpuDevice, Vectorizable> {
+  // Unfortunately nvidia doesn't support well exotic types such as complex,
+  // so reduce the scope of the optimized version of the code to the simple cases
+  // of doubles, floats and half floats
+#ifdef EIGEN_HAS_CUDA_FP16
+  static const bool HasOptimizedImplementation = !Op::IsStateful &&
+      (internal::is_same<typename Self::CoeffReturnType, float>::value ||
+       internal::is_same<typename Self::CoeffReturnType, double>::value ||
+       (internal::is_same<typename Self::CoeffReturnType, Eigen::half>::value && reducer_traits<Op, GpuDevice>::PacketAccess));
+#else
+  static const bool HasOptimizedImplementation = !Op::IsStateful &&
+                                                (internal::is_same<typename Self::CoeffReturnType, float>::value ||
+                                                 internal::is_same<typename Self::CoeffReturnType, double>::value);
+#endif
+
+  template <typename OutputType>
+  static void run(const Self& self, Op& reducer, const GpuDevice& device, OutputType* output) {
+    assert(HasOptimizedImplementation && "Should only be called on doubles, floats or half floats");
+    const Index num_coeffs = array_prod(self.m_impl.dimensions());
+    // Don't crash when we're called with an input tensor of size 0.
+    if (num_coeffs == 0) {
+      return;
+    }
+
+    FullReductionLauncher<Self, Op, OutputType, reducer_traits<Op, GpuDevice>::PacketAccess>::run(self, reducer, device, output, num_coeffs);
+  }
+};
+
+
+template <int NumPerThread, typename Self,
+          typename Reducer, typename Index>
+__global__ void InnerReductionKernel(Reducer reducer, const Self input, Index num_coeffs_to_reduce, Index num_preserved_coeffs,
+                                         typename Self::CoeffReturnType* output) {
+#if __CUDA_ARCH__ >= 300
+  typedef typename Self::CoeffReturnType Type;
+  eigen_assert(blockDim.y == 1);
+  eigen_assert(blockDim.z == 1);
+  eigen_assert(gridDim.y == 1);
+  eigen_assert(gridDim.z == 1);
+
+  const int unroll_times = 16;
+  eigen_assert(NumPerThread % unroll_times == 0);
+
+  const Index input_col_blocks = divup<Index>(num_coeffs_to_reduce, blockDim.x * NumPerThread);
+  const Index num_input_blocks = input_col_blocks * num_preserved_coeffs;
+
+  const Index num_threads = blockDim.x * gridDim.x;
+  const Index thread_id = blockIdx.x * blockDim.x + threadIdx.x;
+
+  // Initialize the output values if they weren't initialized by the ReductionInitKernel
+  if (gridDim.x == 1) {
+    for (Index i = thread_id; i < num_preserved_coeffs; i += num_threads) {
+      output[i] = reducer.initialize();
+    }
+    __syncthreads();
+  }
+
+  for (Index i = blockIdx.x; i < num_input_blocks; i += gridDim.x) {
+    const Index row = i / input_col_blocks;
+
+    if (row < num_preserved_coeffs) {
+      const Index col_block = i % input_col_blocks;
+      const Index col_begin = col_block * blockDim.x * NumPerThread + threadIdx.x;
+
+      Type reduced_val = reducer.initialize();
+
+      for (Index j = 0; j < NumPerThread; j += unroll_times) {
+        const Index last_col = col_begin + blockDim.x * (j + unroll_times - 1);
+        if (last_col >= num_coeffs_to_reduce) {
+          for (Index col = col_begin + blockDim.x * j; col < num_coeffs_to_reduce; col += blockDim.x) {
+            const Type val = input.m_impl.coeff(row * num_coeffs_to_reduce + col);
+            reducer.reduce(val, &reduced_val);
+          }
+          break;
+        } else {
+          // Faster version of the loop with no branches after unrolling.
+#pragma unroll
+          for (int k = 0; k < unroll_times; ++k) {
+            const Index col = col_begin + blockDim.x * (j + k);
+            reducer.reduce(input.m_impl.coeff(row * num_coeffs_to_reduce + col), &reduced_val);
+          }
+        }
+      }
+
+#pragma unroll
+      for (int offset = warpSize/2; offset > 0; offset /= 2) {
+        reducer.reduce(__shfl_down(reduced_val, offset), &reduced_val);
+      }
+
+      if ((threadIdx.x & (warpSize - 1)) == 0) {
+        atomicReduce(&(output[row]), reduced_val, reducer);
+      }
+    }
+  }
+#else
+  assert(0 && "Shouldn't be called on unsupported device");
+#endif
+}
+
+#ifdef EIGEN_HAS_CUDA_FP16
+
+template <int NumPerThread, typename Self,
+          typename Reducer, typename Index>
+__global__ void InnerReductionKernelHalfFloat(Reducer reducer, const Self input, Index num_coeffs_to_reduce, Index num_preserved_coeffs,
+                                              half* output) {
+  eigen_assert(blockDim.y == 1);
+  eigen_assert(blockDim.z == 1);
+  eigen_assert(gridDim.y == 1);
+  eigen_assert(gridDim.z == 1);
+
+  const int unroll_times = 16;
+  eigen_assert(NumPerThread % unroll_times == 0);
+  eigen_assert(unroll_times % 2 == 0);
+
+  const Index input_col_blocks = divup<Index>(num_coeffs_to_reduce, blockDim.x * NumPerThread * 2);
+  const Index num_input_blocks = divup<Index>(input_col_blocks * num_preserved_coeffs, 2);
+
+  const Index num_threads = blockDim.x * gridDim.x;
+  const Index thread_id = blockIdx.x * blockDim.x + threadIdx.x;
+
+  // Initialize the output values if they weren't initialized by the ReductionInitKernel
+  if (gridDim.x == 1) {
+    Index i = 2*thread_id;
+    for (; i + 1 < num_preserved_coeffs; i += 2*num_threads) {
+      half* loc = output + i;
+      *((half2*)loc) = reducer.template initializePacket<half2>();
+    }
+    if (i < num_preserved_coeffs) {
+      output[i] = reducer.initialize();
+    }
+    __syncthreads();
+  }
+
+  for (Index i = blockIdx.x; i < num_input_blocks; i += gridDim.x) {
+    const Index row = 2 * (i / input_col_blocks);
+
+    if (row + 1 < num_preserved_coeffs) {
+      const Index col_block = i % input_col_blocks;
+      const Index col_begin = 2 * (col_block * blockDim.x * NumPerThread + threadIdx.x);
+
+      half2 reduced_val1 = reducer.template initializePacket<half2>();
+      half2 reduced_val2 = reducer.template initializePacket<half2>();
+
+      for (Index j = 0; j < NumPerThread; j += unroll_times) {
+        const Index last_col = col_begin + blockDim.x * (j + unroll_times - 1) * 2;
+        if (last_col >= num_coeffs_to_reduce) {
+          Index col = col_begin + blockDim.x * j;
+          for (; col + 1 < num_coeffs_to_reduce; col += blockDim.x) {
+            const half2 val1 = input.m_impl.template packet<Unaligned>(row * num_coeffs_to_reduce + col);
+            reducer.reducePacket(val1, &reduced_val1);
+            const half2 val2 = input.m_impl.template packet<Unaligned>((row+1) * num_coeffs_to_reduce + col);
+            reducer.reducePacket(val2, &reduced_val2);
+          }
+          if (col < num_coeffs_to_reduce) {
+            // Peel;
+            const half last1 = input.m_impl.coeff(row * num_coeffs_to_reduce + col);
+            const half2 val1 = __halves2half2(last1, reducer.initialize());
+            reducer.reducePacket(val1, &reduced_val1);
+            const half last2 = input.m_impl.coeff((row+1) * num_coeffs_to_reduce + col);
+            const half2 val2 = __halves2half2(last2, reducer.initialize());
+            reducer.reducePacket(val2, &reduced_val2);
+          }
+          break;
+        } else {
+          // Faster version of the loop with no branches after unrolling.
+#pragma unroll
+          for (int k = 0; k < unroll_times; ++k) {
+            const Index col = col_begin + blockDim.x * (j + k) * 2;
+            reducer.reducePacket(input.m_impl.template packet<Unaligned>(row * num_coeffs_to_reduce + col), &reduced_val1);
+            reducer.reducePacket(input.m_impl.template packet<Unaligned>((row + 1)* num_coeffs_to_reduce + col), &reduced_val2);
+          }
+        }
+      }
+
+#pragma unroll
+      for (int offset = warpSize/2; offset > 0; offset /= 2) {
+        reducer.reducePacket(__shfl_down(reduced_val1, offset, warpSize), &reduced_val1);
+        reducer.reducePacket(__shfl_down(reduced_val2, offset, warpSize), &reduced_val2);
+      }
+
+      half val1 =  __low2half(reduced_val1);
+      reducer.reduce(__high2half(reduced_val1), &val1);
+      half val2 =  __low2half(reduced_val2);
+      reducer.reduce(__high2half(reduced_val2), &val2);
+      half2 val = __halves2half2(val1, val2);
+
+      if ((threadIdx.x & (warpSize - 1)) == 0) {
+        half* loc = output + row;
+        atomicReduce((half2*)loc, val, reducer);
+      }
+    }
+  }
+}
+
+#endif
+
+template <typename Self, typename Op, typename OutputType, bool PacketAccess, typename Enabled = void>
+struct InnerReductionLauncher {
+  static EIGEN_DEVICE_FUNC bool run(const Self&, Op&, const GpuDevice&, OutputType*, typename Self::Index, typename Self::Index) {
+    assert(false && "Should only be called to reduce doubles, floats and half floats on a gpu device");
+    return true;
+  }
+};
+
+// Specialization for float and double
+template <typename Self, typename Op, typename OutputType, bool PacketAccess>
+struct InnerReductionLauncher<
+  Self, Op, OutputType, PacketAccess,
+  typename internal::enable_if<
+    internal::is_same<float, OutputType>::value ||
+    internal::is_same<double, OutputType>::value,
+  void>::type> {
+  static bool run(const Self& self, Op& reducer, const GpuDevice& device, OutputType* output, typename Self::Index num_coeffs_to_reduce, typename Self::Index num_preserved_vals) {
+    typedef typename Self::Index Index;
+
+    const Index num_coeffs = num_coeffs_to_reduce * num_preserved_vals;
+    const int block_size = 256;
+    const int num_per_thread = 128;
+    const int dyn_blocks = divup<int>(num_coeffs, block_size * num_per_thread);
+    const int max_blocks = device.getNumCudaMultiProcessors() *
+                           device.maxCudaThreadsPerMultiProcessor() / block_size;
+    const int num_blocks = numext::mini<int>(max_blocks, dyn_blocks);
+
+    if (num_blocks > 1) {
+      // We initialize the outputs outside the reduction kernel when we can't be sure that there
+      // won't be a race conditions between multiple thread blocks.
+      const int dyn_blocks = divup<int>(num_preserved_vals, 1024);
+      const int max_blocks = device.getNumCudaMultiProcessors() *
+                           device.maxCudaThreadsPerMultiProcessor() / 1024;
+      const int num_blocks = numext::mini<int>(max_blocks, dyn_blocks);
+      LAUNCH_CUDA_KERNEL((ReductionInitKernel<OutputType, Index>),
+                         num_blocks, 1024, 0, device, reducer.initialize(),
+                         num_preserved_vals, output);
+    }
+
+    LAUNCH_CUDA_KERNEL((InnerReductionKernel<num_per_thread, Self, Op, Index>),
+                       num_blocks, block_size, 0, device, reducer, self, num_coeffs_to_reduce, num_preserved_vals, output);
+
+    return false;
+  }
+};
+
+#ifdef EIGEN_HAS_CUDA_FP16
+template <typename Self, typename Op>
+struct InnerReductionLauncher<Self, Op, Eigen::half, false> {
+  static bool run(const Self&, Op&, const GpuDevice&, half*, typename Self::Index, typename Self::Index) {
+    assert(false && "Should not be called since there is no packet accessor");
+    return true;
+  }
+};
+
+template <typename Self, typename Op>
+struct InnerReductionLauncher<Self, Op, Eigen::half, true> {
+  static bool run(const Self& self, Op& reducer, const GpuDevice& device, half* output, typename Self::Index num_coeffs_to_reduce, typename Self::Index num_preserved_vals) {
+    typedef typename Self::Index Index;
+
+    if (num_preserved_vals % 2 != 0) {
+      // Not supported yet, revert to the slower code path
+      return true;
+    }
+
+    const Index num_coeffs = num_coeffs_to_reduce * num_preserved_vals;
+    const int block_size = /*256*/128;
+    const int num_per_thread = /*128*/64;
+    const int dyn_blocks = divup<int>(num_coeffs, block_size * num_per_thread);
+    const int max_blocks = device.getNumCudaMultiProcessors() *
+                           device.maxCudaThreadsPerMultiProcessor() / block_size;
+    const int num_blocks = numext::mini<int>(max_blocks, dyn_blocks);
+
+    if (num_blocks > 1) {
+      // We initialize the outputs outside the reduction kernel when we can't be sure that there
+      // won't be a race conditions between multiple thread blocks.
+      const int dyn_blocks = divup<int>(num_preserved_vals, 1024);
+      const int max_blocks = device.getNumCudaMultiProcessors() *
+                           device.maxCudaThreadsPerMultiProcessor() / 1024;
+      const int num_blocks = numext::mini<int>(max_blocks, dyn_blocks);
+      LAUNCH_CUDA_KERNEL((ReductionInitKernelHalfFloat<Self, Op, Index>),
+                         1, 1, 0, device, reducer, self, num_preserved_vals, output);
+    }
+
+    LAUNCH_CUDA_KERNEL((InnerReductionKernelHalfFloat<num_per_thread, Self, Op, Index>),
+                       num_blocks, block_size, 0, device, reducer, self, num_coeffs_to_reduce, num_preserved_vals, output);
+
+    return false;
+  }
+};
+#endif
+
+
+template <typename Self, typename Op>
+struct InnerReducer<Self, Op, GpuDevice> {
+  // Unfortunately nvidia doesn't support well exotic types such as complex,
+  // so reduce the scope of the optimized version of the code to the simple case
+  // of floats and half floats.
+#ifdef EIGEN_HAS_CUDA_FP16
+  static const bool HasOptimizedImplementation = !Op::IsStateful &&
+      (internal::is_same<typename Self::CoeffReturnType, float>::value ||
+       internal::is_same<typename Self::CoeffReturnType, double>::value ||
+       (internal::is_same<typename Self::CoeffReturnType, Eigen::half>::value && reducer_traits<Op, GpuDevice>::PacketAccess));
+#else
+  static const bool HasOptimizedImplementation = !Op::IsStateful &&
+                                                 (internal::is_same<typename Self::CoeffReturnType, float>::value ||
+                                                  internal::is_same<typename Self::CoeffReturnType, double>::value);
+#endif
+
+  template <typename OutputType>
+  static bool run(const Self& self, Op& reducer, const GpuDevice& device, OutputType* output, typename Self::Index num_coeffs_to_reduce, typename Self::Index num_preserved_vals) {
+    assert(HasOptimizedImplementation && "Should only be called on doubles, floats or half floats");
+    const Index num_coeffs = array_prod(self.m_impl.dimensions());
+    // Don't crash when we're called with an input tensor of size 0.
+    if (num_coeffs == 0) {
+      return true;
+    }
+    // It's faster to use the usual code.
+    if (num_coeffs_to_reduce <= 128) {
+      return true;
+    }
+
+    return InnerReductionLauncher<Self, Op, OutputType, reducer_traits<Op, GpuDevice>::PacketAccess>::run(self, reducer, device, output, num_coeffs_to_reduce, num_preserved_vals);
+  }
+};
+
+template <int NumPerThread, typename Self,
+          typename Reducer, typename Index>
+__global__ void OuterReductionKernel(Reducer reducer, const Self input, Index num_coeffs_to_reduce, Index num_preserved_coeffs,
+                                     typename Self::CoeffReturnType* output) {
+  const Index num_threads = blockDim.x * gridDim.x;
+  const Index thread_id = blockIdx.x * blockDim.x + threadIdx.x;
+  // Initialize the output values if they weren't initialized by the ReductionInitKernel
+  if (gridDim.x == 1) {
+    for (Index i = thread_id; i < num_preserved_coeffs; i += num_threads) {
+      output[i] = reducer.initialize();
+    }
+    __syncthreads();
+  }
+
+  // Do the reduction.
+  const Index max_iter = num_preserved_coeffs * divup<Index>(num_coeffs_to_reduce, NumPerThread);
+  for (Index i = thread_id; i < max_iter; i += num_threads) {
+    const Index input_col = i % num_preserved_coeffs;
+    const Index input_row = (i / num_preserved_coeffs) * NumPerThread;
+    typename Self::CoeffReturnType reduced_val = reducer.initialize();
+    const Index max_row = numext::mini(input_row + NumPerThread, num_coeffs_to_reduce);
+    for (Index j = input_row; j < max_row; j++) {
+      typename Self::CoeffReturnType val = input.m_impl.coeff(j * num_preserved_coeffs + input_col);
+      reducer.reduce(val, &reduced_val);
+    }
+    atomicReduce(&(output[input_col]), reduced_val, reducer);
+  }
+}
+
+
+template <typename Self, typename Op>
+struct OuterReducer<Self, Op, GpuDevice> {
+  // Unfortunately nvidia doesn't support well exotic types such as complex,
+  // so reduce the scope of the optimized version of the code to the simple case
+  // of floats.
+  static const bool HasOptimizedImplementation = !Op::IsStateful &&
+                                                 (internal::is_same<typename Self::CoeffReturnType, float>::value ||
+                                                  internal::is_same<typename Self::CoeffReturnType, double>::value);
+  template <typename Device, typename OutputType>
+  static EIGEN_DEVICE_FUNC bool run(const Self&, Op&, const Device&, OutputType*, typename Self::Index, typename Self::Index) {
+    assert(false && "Should only be called to reduce doubles or floats on a gpu device");
+    return true;
+  }
+
+  static bool run(const Self& self, Op& reducer, const GpuDevice& device, float* output, typename Self::Index num_coeffs_to_reduce, typename Self::Index num_preserved_vals) {
+    typedef typename Self::Index Index;
+
+    // It's faster to use the usual code.
+    if (num_coeffs_to_reduce <= 32) {
+      return true;
+    }
+
+    const Index num_coeffs = num_coeffs_to_reduce * num_preserved_vals;
+    const int block_size = 256;
+    const int num_per_thread = 16;
+    const int dyn_blocks = divup<int>(num_coeffs, block_size * num_per_thread);
+    const int max_blocks = device.getNumCudaMultiProcessors() *
+                           device.maxCudaThreadsPerMultiProcessor() / block_size;
+    const int num_blocks = numext::mini<int>(max_blocks, dyn_blocks);
+
+    if (num_blocks > 1) {
+      // We initialize the outputs in the reduction kernel itself when we don't have to worry
+      // about race conditions between multiple thread blocks.
+      const int dyn_blocks = divup<int>(num_preserved_vals, 1024);
+      const int max_blocks = device.getNumCudaMultiProcessors() *
+                             device.maxCudaThreadsPerMultiProcessor() / 1024;
+      const int num_blocks = numext::mini<int>(max_blocks, dyn_blocks);
+      LAUNCH_CUDA_KERNEL((ReductionInitKernel<float, Index>),
+                         num_blocks, 1024, 0, device, reducer.initialize(),
+                         num_preserved_vals, output);
+    }
+
+    LAUNCH_CUDA_KERNEL((OuterReductionKernel<num_per_thread, Self, Op, Index>),
+                       num_blocks, block_size, 0, device, reducer, self, num_coeffs_to_reduce, num_preserved_vals, output);
+
+    return false;
+  }
+};
+
+#endif
+
+
+} // end namespace internal
+} // end namespace Eigen
+
+#endif // EIGEN_CXX11_TENSOR_TENSOR_REDUCTION_CUDA_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorEvalTo.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorEvalTo.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/Tensor/TensorEvalTo.h	(revision 3762)
@@ -0,0 +1,181 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2014 Benoit Steiner <benoit.steiner.goog@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CXX11_TENSOR_TENSOR_EVAL_TO_H
+#define EIGEN_CXX11_TENSOR_TENSOR_EVAL_TO_H
+
+namespace Eigen {
+
+/** \class TensorForcedEval
+  * \ingroup CXX11_Tensor_Module
+  *
+  * \brief Tensor reshaping class.
+  *
+  *
+  */
+namespace internal {
+template<typename XprType, template <class> class MakePointer_>
+struct traits<TensorEvalToOp<XprType, MakePointer_> >
+{
+  // Type promotion to handle the case where the types of the lhs and the rhs are different.
+  typedef typename XprType::Scalar Scalar;
+  typedef traits<XprType> XprTraits;
+  typedef typename XprTraits::StorageKind StorageKind;
+  typedef typename XprTraits::Index Index;
+  typedef typename XprType::Nested Nested;
+  typedef typename remove_reference<Nested>::type _Nested;
+  static const int NumDimensions = XprTraits::NumDimensions;
+  static const int Layout = XprTraits::Layout;
+
+  enum {
+    Flags = 0
+  };
+  template <class T>
+  struct MakePointer {
+    // Intermediate typedef to workaround MSVC issue.
+    typedef MakePointer_<T> MakePointerT;
+    typedef typename MakePointerT::Type Type;
+  };
+};
+
+template<typename XprType, template <class> class MakePointer_>
+struct eval<TensorEvalToOp<XprType, MakePointer_>, Eigen::Dense>
+{
+  typedef const TensorEvalToOp<XprType, MakePointer_>& type;
+};
+
+template<typename XprType, template <class> class MakePointer_>
+struct nested<TensorEvalToOp<XprType, MakePointer_>, 1, typename eval<TensorEvalToOp<XprType, MakePointer_> >::type>
+{
+  typedef TensorEvalToOp<XprType, MakePointer_> type;
+};
+
+}  // end namespace internal
+
+
+
+
+template<typename XprType, template <class> class MakePointer_>
+class TensorEvalToOp : public TensorBase<TensorEvalToOp<XprType, MakePointer_>, ReadOnlyAccessors>
+{
+  public:
+  typedef typename Eigen::internal::traits<TensorEvalToOp>::Scalar Scalar;
+  typedef typename Eigen::NumTraits<Scalar>::Real RealScalar;
+  typedef typename internal::remove_const<typename XprType::CoeffReturnType>::type CoeffReturnType;
+  typedef typename MakePointer_<CoeffReturnType>::Type PointerType;
+  typedef typename Eigen::internal::nested<TensorEvalToOp>::type Nested;
+  typedef typename Eigen::internal::traits<TensorEvalToOp>::StorageKind StorageKind;
+  typedef typename Eigen::internal::traits<TensorEvalToOp>::Index Index;
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorEvalToOp(PointerType buffer, const XprType& expr)
+      : m_xpr(expr), m_buffer(buffer) {}
+
+    EIGEN_DEVICE_FUNC
+    const typename internal::remove_all<typename XprType::Nested>::type&
+    expression() const { return m_xpr; }
+
+    EIGEN_DEVICE_FUNC PointerType buffer() const { return m_buffer; }
+
+  protected:
+    typename XprType::Nested m_xpr;
+    PointerType m_buffer;
+};
+
+
+
+template<typename ArgType, typename Device, template <class> class MakePointer_>
+struct TensorEvaluator<const TensorEvalToOp<ArgType, MakePointer_>, Device>
+{
+  typedef TensorEvalToOp<ArgType, MakePointer_> XprType;
+  typedef typename ArgType::Scalar Scalar;
+  typedef typename TensorEvaluator<ArgType, Device>::Dimensions Dimensions;
+  typedef typename XprType::Index Index;
+  typedef typename internal::remove_const<typename XprType::CoeffReturnType>::type CoeffReturnType;
+  typedef typename PacketType<CoeffReturnType, Device>::type PacketReturnType;
+  static const int PacketSize = internal::unpacket_traits<PacketReturnType>::size;
+
+  enum {
+    IsAligned = TensorEvaluator<ArgType, Device>::IsAligned,
+    PacketAccess = TensorEvaluator<ArgType, Device>::PacketAccess,
+    Layout = TensorEvaluator<ArgType, Device>::Layout,
+    CoordAccess = false,  // to be implemented
+    RawAccess = true
+  };
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorEvaluator(const XprType& op, const Device& device)
+      : m_impl(op.expression(), device), m_device(device),
+          m_buffer(op.buffer()), m_op(op), m_expression(op.expression())
+  { }
+
+  // Used for accessor extraction in SYCL Managed TensorMap:
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const XprType& op() const {
+    return m_op;
+  }
+  
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE ~TensorEvaluator() {
+  }
+
+  typedef typename internal::traits<const TensorEvalToOp<ArgType, MakePointer_> >::template MakePointer<CoeffReturnType>::Type DevicePointer;
+  EIGEN_DEVICE_FUNC const Dimensions& dimensions() const { return m_impl.dimensions(); }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool evalSubExprsIfNeeded(DevicePointer scalar) {
+    EIGEN_UNUSED_VARIABLE(scalar);
+    eigen_assert(scalar == NULL);
+    return m_impl.evalSubExprsIfNeeded(m_buffer);
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void evalScalar(Index i) {
+    m_buffer[i] = m_impl.coeff(i);
+  }
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void evalPacket(Index i) {
+    internal::pstoret<CoeffReturnType, PacketReturnType, Aligned>(m_buffer + i, m_impl.template packet<TensorEvaluator<ArgType, Device>::IsAligned ? Aligned : Unaligned>(i));
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void cleanup() {
+    m_impl.cleanup();
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE CoeffReturnType coeff(Index index) const
+  {
+    return m_buffer[index];
+  }
+
+  template<int LoadMode>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE PacketReturnType packet(Index index) const
+  {
+    return internal::ploadt<PacketReturnType, LoadMode>(m_buffer + index);
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorOpCost costPerCoeff(bool vectorized) const {
+    // We assume that evalPacket or evalScalar is called to perform the
+    // assignment and account for the cost of the write here.
+    return m_impl.costPerCoeff(vectorized) +
+        TensorOpCost(0, sizeof(CoeffReturnType), 0, vectorized, PacketSize);
+  }
+
+  EIGEN_DEVICE_FUNC DevicePointer data() const { return m_buffer; }
+  ArgType expression() const { return m_expression; }
+
+  /// required by sycl in order to extract the accessor
+  const TensorEvaluator<ArgType, Device>& impl() const { return m_impl; }
+  /// added for sycl in order to construct the buffer from the sycl device
+  const Device& device() const{return m_device;}
+
+ private:
+  TensorEvaluator<ArgType, Device> m_impl;
+  const Device& m_device;
+  DevicePointer m_buffer;
+  const XprType& m_op;
+  const ArgType m_expression;
+};
+
+
+} // end namespace Eigen
+
+#endif // EIGEN_CXX11_TENSOR_TENSOR_EVAL_TO_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/util/CXX11Workarounds.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/util/CXX11Workarounds.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/util/CXX11Workarounds.h	(revision 3762)
@@ -0,0 +1,88 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2013 Christian Seiler <christian@iwakd.de>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CXX11WORKAROUNDS_H
+#define EIGEN_CXX11WORKAROUNDS_H
+
+/* COMPATIBILITY CHECKS
+ * (so users of compilers that are too old get some realistic error messages)
+ */
+#if defined(__INTEL_COMPILER) && (__INTEL_COMPILER < 1310)
+#error Intel Compiler only supports required C++ features since version 13.1.
+// note that most stuff in principle works with 13.0 but when combining
+// some features, at some point 13.0 will just fail with an internal assertion
+#elif defined(__GNUC__) && !defined(__clang__) && !defined(__INTEL_COMPILER) && (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 6))
+// G++ < 4.6 by default will continue processing the source files - even if we use #error to make
+// it error out. For this reason, we use the pragma to make sure G++ aborts at the first error
+// it sees. Unfortunately, that is still not our #error directive, but at least the output is
+// short enough the user has a chance to see that the compiler version is not sufficient for
+// the funky template mojo we use.
+#pragma GCC diagnostic error "-Wfatal-errors"
+#error GNU C++ Compiler (g++) only supports required C++ features since version 4.6.
+#endif
+
+/* Check that the compiler at least claims to support C++11. It might not be sufficient
+ * because the compiler may not implement it correctly, but at least we'll know.
+ * On the other hand, visual studio still doesn't claim to support C++11 although it's
+ * compliant enugh for our purpose.
+ */
+#if (__cplusplus <= 199711L) && (EIGEN_COMP_MSVC < 1900)
+#if defined(__GNUC__) && !defined(__clang__) && !defined(__INTEL_COMPILER)
+#pragma GCC diagnostic error "-Wfatal-errors"
+#endif
+#error This library needs at least a C++11 compliant compiler. If you use g++/clang, please enable the -std=c++11 compiler flag. (-std=c++0x on older versions.)
+#endif
+
+namespace Eigen {
+
+namespace internal {
+
+/* std::get is only constexpr in C++14, not yet in C++11
+ */
+
+
+template<std::size_t I, class T> constexpr inline T&       array_get(std::vector<T>&       a) { return a[I]; }
+template<std::size_t I, class T> constexpr inline T&&      array_get(std::vector<T>&&      a) { return a[I]; }
+template<std::size_t I, class T> constexpr inline T const& array_get(std::vector<T> const& a) { return a[I]; }
+
+/* Suppose you have a template of the form
+ * template<typename T> struct X;
+ * And you want to specialize it in such a way:
+ *    template<typename S1, typename... SN> struct X<Foo<S1, SN...>> { ::: };
+ *    template<>                            struct X<Foo<>>          { ::: };
+ * This will work in Intel's compiler 13.0, but only to some extent in g++ 4.6, since
+ * g++ can only match templates called with parameter packs if the number of template
+ * arguments is not a fixed size (so inside the first specialization, referencing
+ * X<Foo<Sn...>> will fail in g++). On the other hand, g++ will accept the following:
+ *    template<typename S...> struct X<Foo<S...>> { ::: }:
+ * as an additional (!) specialization, which will then only match the empty case.
+ * But Intel's compiler 13.0 won't accept that, it will only accept the empty syntax,
+ * so we have to create a workaround for this.
+ */
+#if defined(__GNUC__) && !defined(__INTEL_COMPILER)
+#define EIGEN_TPL_PP_SPEC_HACK_DEF(mt, n)    mt... n
+#define EIGEN_TPL_PP_SPEC_HACK_DEFC(mt, n)   , EIGEN_TPL_PP_SPEC_HACK_DEF(mt, n)
+#define EIGEN_TPL_PP_SPEC_HACK_USE(n)        n...
+#define EIGEN_TPL_PP_SPEC_HACK_USEC(n)       , n...
+#else
+#define EIGEN_TPL_PP_SPEC_HACK_DEF(mt, n)
+#define EIGEN_TPL_PP_SPEC_HACK_DEFC(mt, n)
+#define EIGEN_TPL_PP_SPEC_HACK_USE(n)
+#define EIGEN_TPL_PP_SPEC_HACK_USEC(n)
+#endif
+
+} // end namespace internal
+
+} // end namespace Eigen
+
+#endif // EIGEN_CXX11WORKAROUNDS_H
+
+/*
+ * kate: space-indent on; indent-width 2; mixedindent off; indent-mode cstyle;
+ */
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/util/MaxSizeVector.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/util/MaxSizeVector.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/util/MaxSizeVector.h	(revision 3762)
@@ -0,0 +1,141 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2014 Benoit Steiner <benoit.steiner.goog@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_FIXEDSIZEVECTOR_H
+#define EIGEN_FIXEDSIZEVECTOR_H
+
+namespace Eigen {
+
+/** \class MaxSizeVector
+  * \ingroup Core
+  *
+  * \brief The MaxSizeVector class.
+  *
+  * The %MaxSizeVector provides a subset of std::vector functionality.
+  *
+  * The goal is to provide basic std::vector operations when using
+  * std::vector is not an option (e.g. on GPU or when compiling using
+  * FMA/AVX, as this can cause either compilation failures or illegal
+  * instruction failures).
+  *
+  * Beware: The constructors are not API compatible with these of
+  * std::vector.
+  */
+template <typename T>
+class MaxSizeVector {
+ public:
+  // Construct a new MaxSizeVector, reserve n elements.
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  explicit MaxSizeVector(size_t n)
+      : reserve_(n), size_(0),
+        data_(static_cast<T*>(internal::aligned_malloc(n * sizeof(T)))) {
+    for (size_t i = 0; i < n; ++i) { new (&data_[i]) T; }
+  }
+
+  // Construct a new MaxSizeVector, reserve and resize to n.
+  // Copy the init value to all elements.
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  MaxSizeVector(size_t n, const T& init)
+      : reserve_(n), size_(n),
+        data_(static_cast<T*>(internal::aligned_malloc(n * sizeof(T)))) {
+    for (size_t i = 0; i < n; ++i) { new (&data_[i]) T(init); }
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  ~MaxSizeVector() {
+    for (size_t i = 0; i < size_; ++i) {
+      data_[i].~T();
+    }
+    internal::aligned_free(data_);
+  }
+
+  void resize(size_t n) {
+    eigen_assert(n <= reserve_);
+    for (size_t i = size_; i < n; ++i) {
+      new (&data_[i]) T;
+    }
+    for (size_t i = n; i < size_; ++i) {
+      data_[i].~T();
+    }
+    size_ = n;
+  }
+
+  // Append new elements (up to reserved size).
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  void push_back(const T& t) {
+    eigen_assert(size_ < reserve_);
+    data_[size_++] = t;
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  const T& operator[] (size_t i) const {
+    eigen_assert(i < size_);
+    return data_[i];
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  T& operator[] (size_t i) {
+    eigen_assert(i < size_);
+    return data_[i];
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  T& back() {
+    eigen_assert(size_ > 0);
+    return data_[size_ - 1];
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  const T& back() const {
+    eigen_assert(size_ > 0);
+    return data_[size_ - 1];
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  void pop_back() {
+    // NOTE: This does not destroy the value at the end the way
+    // std::vector's version of pop_back() does.  That happens when
+    // the Vector is destroyed.
+    eigen_assert(size_ > 0);
+    size_--;
+  }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  size_t size() const { return size_; }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  bool empty() const { return size_ == 0; }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  T* data() { return data_; }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  const T* data() const { return data_; }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  T* begin() { return data_; }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  T* end() { return data_ + size_; }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  const T* begin() const { return data_; }
+
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+  const T* end() const { return data_ + size_; }
+
+ private:
+  size_t reserve_;
+  size_t size_;
+  T* data_;
+};
+
+}  // namespace Eigen
+
+#endif  // EIGEN_FIXEDSIZEVECTOR_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/util/EmulateCXX11Meta.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/util/EmulateCXX11Meta.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/util/EmulateCXX11Meta.h	(revision 3762)
@@ -0,0 +1,311 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2014 Benoit Steiner <benoit.steiner.goog@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_EMULATE_CXX11_META_H
+#define EIGEN_EMULATE_CXX11_META_H
+
+
+
+namespace Eigen {
+
+namespace internal {
+
+/** \internal
+  * \file CXX11/util/EmulateCXX11Meta.h
+  * This file emulates a subset of the functionality provided by CXXMeta.h for
+  * compilers that don't yet support cxx11 such as nvcc.
+  */
+
+struct empty_list { static const std::size_t count = 0; };
+
+template<typename T, typename Tail=empty_list> struct type_list {
+  typedef T HeadType;
+  typedef Tail TailType;
+  static const T head;
+  static const Tail tail;
+  static const std::size_t count = 1 + Tail::count;
+};
+
+struct null_type { };
+
+template<typename T1 = null_type, typename T2 = null_type, typename T3 = null_type,
+         typename T4 = null_type, typename T5 = null_type, typename T6 = null_type,
+         typename T7 = null_type, typename T8 = null_type>
+struct make_type_list {
+  typedef typename make_type_list<T2, T3, T4, T5, T6, T7, T8>::type tailresult;
+
+  typedef type_list<T1, tailresult> type;
+};
+
+template<> struct make_type_list<> {
+  typedef empty_list type;
+};
+
+
+template <std::size_t index, class TList> struct get_type;
+
+template <class Head, class Tail>
+struct get_type<0, type_list<Head, Tail> >
+{
+  typedef Head type;
+};
+
+template <std::size_t i, class Head, class Tail>
+struct get_type<i, type_list<Head, Tail> >
+{
+  typedef typename get_type<i-1, Tail>::type type;
+};
+
+
+/* numeric list */
+template <typename T, T n>
+struct type2val {
+  typedef T type;
+  static const T value = n;
+};
+
+
+template<typename T, size_t n, T V> struct gen_numeric_list_repeated;
+
+template<typename T, T V> struct gen_numeric_list_repeated<T, 1, V> {
+  typedef typename make_type_list<type2val<T, V> >::type type;
+};
+
+template<typename T, T V> struct gen_numeric_list_repeated<T, 2, V> {
+  typedef typename make_type_list<type2val<T, V>, type2val<T, V> >::type type;
+};
+
+template<typename T, T V> struct gen_numeric_list_repeated<T, 3, V> {
+  typedef typename make_type_list<type2val<T, V>, type2val<T, V>, type2val<T, V> >::type type;
+};
+
+template<typename T, T V> struct gen_numeric_list_repeated<T, 4, V> {
+  typedef typename make_type_list<type2val<T, V>, type2val<T, V>, type2val<T, V>, type2val<T, V> >::type type;
+};
+
+template<typename T, T V> struct gen_numeric_list_repeated<T, 5, V> {
+  typedef typename make_type_list<type2val<T, V>, type2val<T, V>, type2val<T, V>, type2val<T, V>, type2val<T, V> >::type type;
+};
+
+template<typename T, T V> struct gen_numeric_list_repeated<T, 6, V> {
+  typedef typename make_type_list<type2val<T, V>, type2val<T, V>, type2val<T, V>,
+                                  type2val<T, V>, type2val<T, V>, type2val<T, V> >::type type;
+};
+
+template<typename T, T V> struct gen_numeric_list_repeated<T, 7, V> {
+  typedef typename make_type_list<type2val<T, V>, type2val<T, V>, type2val<T, V>,
+                                  type2val<T, V>, type2val<T, V>, type2val<T, V>,
+                                  type2val<T, V> >::type type;
+};
+
+template<typename T, T V> struct gen_numeric_list_repeated<T, 8, V> {
+  typedef typename make_type_list<type2val<T, V>, type2val<T, V>, type2val<T, V>,
+                                  type2val<T, V>, type2val<T, V>, type2val<T, V>,
+                                  type2val<T, V>, type2val<T, V> >::type type;
+};
+
+
+template <std::size_t index, class NList> struct get;
+
+template <std::size_t i>
+struct get<i, empty_list>
+{
+  get() { eigen_assert(false && "index overflow"); }
+  typedef void type;
+  static const char value = '\0';
+};
+
+template <std::size_t i, class Head>
+struct get<i, type_list<Head, empty_list> >
+{
+  get() { eigen_assert(false && "index overflow"); }
+  typedef void type;
+  static const char value = '\0';
+};
+
+template <class Head>
+struct get<0, type_list<Head, empty_list> >
+{
+  typedef typename Head::type type;
+  static const type value = Head::value;
+};
+
+template <class Head, class Tail>
+struct get<0, type_list<Head, Tail> >
+{
+  typedef typename Head::type type;
+  static const type value = Head::value;
+};
+
+template <std::size_t i, class Head, class Tail>
+struct get<i, type_list<Head, Tail> >
+{
+  typedef typename Tail::HeadType::type type;
+  static const type value = get<i-1, Tail>::value;
+};
+
+
+template <class NList> struct arg_prod {
+  static const typename NList::HeadType::type value = get<0, NList>::value * arg_prod<typename NList::TailType>::value;
+};
+template <> struct arg_prod<empty_list> {
+  static const int value = 1;
+};
+
+
+template<int n, typename t>
+array<t, n> repeat(t v) {
+  array<t, n> array;
+  array.fill(v);
+  return array;
+}
+
+template<std::size_t I, class Head, class Tail>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE typename Head::type array_get(type_list<Head, Tail>&) {
+  return get<I, type_list<Head, Tail> >::value;
+}
+template<std::size_t I, class Head, class Tail>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE typename Head::type array_get(const type_list<Head, Tail>&) {
+  return get<I, type_list<Head, Tail> >::value;
+}
+
+template <class NList>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE typename NList::HeadType::type array_prod(const NList&) {
+  return arg_prod<NList>::value;
+}
+
+template<typename t, std::size_t n>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE t array_prod(const array<t, n>& a) {
+  t prod = 1;
+  for (size_t i = 0; i < n; ++i) { prod *= a[i]; }
+  return prod;
+}
+template<typename t>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE t array_prod(const array<t, 0>& /*a*/) {
+  return 1;
+}
+
+template<typename t>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE t array_prod(const std::vector<t>& a) {
+  eigen_assert(a.size() > 0);
+  t prod = 1;
+  for (size_t i = 0; i < a.size(); ++i) { prod *= a[i]; }
+  return prod;
+}
+
+
+template<std::size_t I, class T>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T& array_get(std::vector<T>& a) {
+  return a[I];
+}
+template<std::size_t I, class T>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const T& array_get(const std::vector<T>& a) {
+  return a[I];
+}
+
+struct sum_op {
+  template<typename A, typename B> static inline bool run(A a, B b) { return a + b; }
+};
+struct product_op {
+  template<typename A, typename B> static inline bool run(A a, B b) { return a * b; }
+};
+
+struct logical_and_op {
+  template<typename A, typename B> static inline bool run(A a, B b) { return a && b; }
+};
+struct logical_or_op {
+  template<typename A, typename B> static inline bool run(A a, B b) { return a || b; }
+};
+
+struct equal_op {
+  template<typename A, typename B> static inline bool run(A a, B b) { return a == b; }
+};
+struct not_equal_op {
+  template<typename A, typename B> static inline bool run(A a, B b) { return a != b; }
+};
+struct lesser_op {
+  template<typename A, typename B> static inline bool run(A a, B b) { return a < b; }
+};
+struct lesser_equal_op {
+  template<typename A, typename B> static inline bool run(A a, B b) { return a <= b; }
+};
+
+struct greater_op {
+  template<typename A, typename B> static inline bool run(A a, B b) { return a > b; }
+};
+struct greater_equal_op {
+  template<typename A, typename B> static inline bool run(A a, B b) { return a >= b; }
+};
+
+struct not_op {
+  template<typename A> static inline bool run(A a) { return !a; }
+};
+struct negation_op {
+  template<typename A> static inline bool run(A a) { return -a; }
+};
+struct greater_equal_zero_op {
+  template<typename A> static inline bool run(A a) { return a >= 0; }
+};
+
+
+template<typename Reducer, typename Op, typename A, std::size_t N>
+struct ArrayApplyAndReduce {
+  static inline bool run(const array<A, N>& a) {
+    EIGEN_STATIC_ASSERT(N >= 2, YOU_MADE_A_PROGRAMMING_MISTAKE);
+    bool result = Reducer::run(Op::run(a[0]), Op::run(a[1]));
+    for (size_t i = 2; i < N; ++i) {
+      result = Reducer::run(result, Op::run(a[i]));
+    }
+    return result;
+  }
+};
+
+template<typename Reducer, typename Op, typename A>
+struct ArrayApplyAndReduce<Reducer, Op, A, 1>  {
+  static inline bool run(const array<A, 1>& a) {
+    return Op::run(a[0]);
+  }
+};
+
+template<typename Reducer, typename Op, typename A, std::size_t N>
+inline bool array_apply_and_reduce(const array<A, N>& a) {
+  return ArrayApplyAndReduce<Reducer, Op, A, N>::run(a);
+}
+
+template<typename Reducer, typename Op, typename A, typename B, std::size_t N>
+struct ArrayZipAndReduce {
+  static inline bool run(const array<A, N>& a, const array<B, N>& b) {
+    EIGEN_STATIC_ASSERT(N >= 2, YOU_MADE_A_PROGRAMMING_MISTAKE);
+    bool result = Reducer::run(Op::run(a[0], b[0]), Op::run(a[1], b[1]));
+    for (size_t i = 2; i < N; ++i) {
+      result = Reducer::run(result, Op::run(a[i], b[i]));
+    }
+    return result;
+  }
+};
+
+template<typename Reducer, typename Op, typename A, typename B>
+struct ArrayZipAndReduce<Reducer, Op, A, B, 1> {
+  static inline bool run(const array<A, 1>& a, const array<B, 1>& b) {
+    return Op::run(a[0], b[0]);
+  }
+};
+
+template<typename Reducer, typename Op, typename A, typename B, std::size_t N>
+inline bool array_zip_and_reduce(const array<A, N>& a, const array<B, N>& b) {
+  return ArrayZipAndReduce<Reducer, Op, A, B, N>::run(a, b);
+}
+
+}  // end namespace internal
+
+}  // end namespace Eigen
+
+
+
+#endif  // EIGEN_EMULATE_CXX11_META_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/util/CXX11Meta.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/util/CXX11Meta.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/util/CXX11Meta.h	(revision 3762)
@@ -0,0 +1,542 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2013 Christian Seiler <christian@iwakd.de>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CXX11META_H
+#define EIGEN_CXX11META_H
+
+#include <vector>
+#include "EmulateArray.h"
+
+// Emulate the cxx11 functionality that we need if the compiler doesn't support it.
+// Visual studio 2015 doesn't advertise itself as cxx11 compliant, although it
+// supports enough of the standard for our needs
+#if __cplusplus > 199711L || EIGEN_COMP_MSVC >= 1900
+
+#include "CXX11Workarounds.h"
+
+namespace Eigen {
+
+namespace internal {
+
+/** \internal
+  * \file CXX11/util/CXX11Meta.h
+  * This file contains generic metaprogramming classes which are not specifically related to Eigen.
+  * This file expands upon Core/util/Meta.h and adds support for C++11 specific features.
+  */
+
+template<typename... tt>
+struct type_list { constexpr static int count = sizeof...(tt); };
+
+template<typename t, typename... tt>
+struct type_list<t, tt...> { constexpr static int count = sizeof...(tt) + 1; typedef t first_type; };
+
+template<typename T, T... nn>
+struct numeric_list { constexpr static std::size_t count = sizeof...(nn); };
+
+template<typename T, T n, T... nn>
+struct numeric_list<T, n, nn...> { constexpr static std::size_t count = sizeof...(nn) + 1; constexpr static T first_value = n; };
+
+/* numeric list constructors
+ *
+ * equivalencies:
+ *     constructor                                              result
+ *     typename gen_numeric_list<int, 5>::type                  numeric_list<int, 0,1,2,3,4>
+ *     typename gen_numeric_list_reversed<int, 5>::type         numeric_list<int, 4,3,2,1,0>
+ *     typename gen_numeric_list_swapped_pair<int, 5,1,2>::type numeric_list<int, 0,2,1,3,4>
+ *     typename gen_numeric_list_repeated<int, 0, 5>::type      numeric_list<int, 0,0,0,0,0>
+ */
+
+template<typename T, std::size_t n, T start = 0, T... ii> struct gen_numeric_list                     : gen_numeric_list<T, n-1, start, start + n-1, ii...> {};
+template<typename T, T start, T... ii>                    struct gen_numeric_list<T, 0, start, ii...> { typedef numeric_list<T, ii...> type; };
+
+template<typename T, std::size_t n, T start = 0, T... ii> struct gen_numeric_list_reversed                     : gen_numeric_list_reversed<T, n-1, start, ii..., start + n-1> {};
+template<typename T, T start, T... ii>                    struct gen_numeric_list_reversed<T, 0, start, ii...> { typedef numeric_list<T, ii...> type; };
+
+template<typename T, std::size_t n, T a, T b, T start = 0, T... ii> struct gen_numeric_list_swapped_pair                           : gen_numeric_list_swapped_pair<T, n-1, a, b, start, (start + n-1) == a ? b : ((start + n-1) == b ? a : (start + n-1)), ii...> {};
+template<typename T, T a, T b, T start, T... ii>                    struct gen_numeric_list_swapped_pair<T, 0, a, b, start, ii...> { typedef numeric_list<T, ii...> type; };
+
+template<typename T, std::size_t n, T V, T... nn> struct gen_numeric_list_repeated                 : gen_numeric_list_repeated<T, n-1, V, V, nn...> {};
+template<typename T, T V, T... nn>                struct gen_numeric_list_repeated<T, 0, V, nn...> { typedef numeric_list<T, nn...> type; };
+
+/* list manipulation: concatenate */
+
+template<class a, class b> struct concat;
+
+template<typename... as, typename... bs> struct concat<type_list<as...>,       type_list<bs...>>        { typedef type_list<as..., bs...> type; };
+template<typename T, T... as, T... bs>   struct concat<numeric_list<T, as...>, numeric_list<T, bs...> > { typedef numeric_list<T, as..., bs...> type; };
+
+template<typename... p> struct mconcat;
+template<typename a>                             struct mconcat<a>           { typedef a type; };
+template<typename a, typename b>                 struct mconcat<a, b>        : concat<a, b> {};
+template<typename a, typename b, typename... cs> struct mconcat<a, b, cs...> : concat<a, typename mconcat<b, cs...>::type> {};
+
+/* list manipulation: extract slices */
+
+template<int n, typename x> struct take;
+template<int n, typename a, typename... as> struct take<n, type_list<a, as...>> : concat<type_list<a>, typename take<n-1, type_list<as...>>::type> {};
+template<int n>                             struct take<n, type_list<>>         { typedef type_list<> type; };
+template<typename a, typename... as>        struct take<0, type_list<a, as...>> { typedef type_list<> type; };
+template<>                                  struct take<0, type_list<>>         { typedef type_list<> type; };
+
+template<typename T, int n, T a, T... as> struct take<n, numeric_list<T, a, as...>> : concat<numeric_list<T, a>, typename take<n-1, numeric_list<T, as...>>::type> {};
+template<typename T, int n>               struct take<n, numeric_list<T>>           { typedef numeric_list<T> type; };
+template<typename T, T a, T... as>        struct take<0, numeric_list<T, a, as...>> { typedef numeric_list<T> type; };
+template<typename T>                      struct take<0, numeric_list<T>>           { typedef numeric_list<T> type; };
+
+template<typename T, int n, T... ii>      struct h_skip_helper_numeric;
+template<typename T, int n, T i, T... ii> struct h_skip_helper_numeric<T, n, i, ii...> : h_skip_helper_numeric<T, n-1, ii...> {};
+template<typename T, T i, T... ii>        struct h_skip_helper_numeric<T, 0, i, ii...> { typedef numeric_list<T, i, ii...> type; };
+template<typename T, int n>               struct h_skip_helper_numeric<T, n>           { typedef numeric_list<T> type; };
+template<typename T>                      struct h_skip_helper_numeric<T, 0>           { typedef numeric_list<T> type; };
+
+template<int n, typename... tt>             struct h_skip_helper_type;
+template<int n, typename t, typename... tt> struct h_skip_helper_type<n, t, tt...> : h_skip_helper_type<n-1, tt...> {};
+template<typename t, typename... tt>        struct h_skip_helper_type<0, t, tt...> { typedef type_list<t, tt...> type; };
+template<int n>                             struct h_skip_helper_type<n>           { typedef type_list<> type; };
+template<>                                  struct h_skip_helper_type<0>           { typedef type_list<> type; };
+
+template<int n>
+struct h_skip {
+  template<typename T, T... ii>
+  constexpr static inline typename h_skip_helper_numeric<T, n, ii...>::type helper(numeric_list<T, ii...>) { return typename h_skip_helper_numeric<T, n, ii...>::type(); }
+  template<typename... tt>
+  constexpr static inline typename h_skip_helper_type<n, tt...>::type helper(type_list<tt...>) { return typename h_skip_helper_type<n, tt...>::type(); }
+};
+
+template<int n, typename a> struct skip { typedef decltype(h_skip<n>::helper(a())) type; };
+
+template<int start, int count, typename a> struct slice : take<count, typename skip<start, a>::type> {};
+
+/* list manipulation: retrieve single element from list */
+
+template<int n, typename x> struct get;
+
+template<int n, typename a, typename... as>               struct get<n, type_list<a, as...>>   : get<n-1, type_list<as...>> {};
+template<typename a, typename... as>                      struct get<0, type_list<a, as...>>   { typedef a type; };
+
+template<typename T, int n, T a, T... as>                        struct get<n, numeric_list<T, a, as...>>   : get<n-1, numeric_list<T, as...>> {};
+template<typename T, T a, T... as>                               struct get<0, numeric_list<T, a, as...>>   { constexpr static T value = a; };
+
+/* always get type, regardless of dummy; good for parameter pack expansion */
+
+template<typename T, T dummy, typename t> struct id_numeric  { typedef t type; };
+template<typename dummy, typename t>      struct id_type     { typedef t type; };
+
+/* equality checking, flagged version */
+
+template<typename a, typename b> struct is_same_gf : is_same<a, b> { constexpr static int global_flags = 0; };
+
+/* apply_op to list */
+
+template<
+  bool from_left, // false
+  template<typename, typename> class op,
+  typename additional_param,
+  typename... values
+>
+struct h_apply_op_helper                                        { typedef type_list<typename op<values, additional_param>::type...> type; };
+template<
+  template<typename, typename> class op,
+  typename additional_param,
+  typename... values
+>
+struct h_apply_op_helper<true, op, additional_param, values...> { typedef type_list<typename op<additional_param, values>::type...> type; };
+
+template<
+  bool from_left,
+  template<typename, typename> class op,
+  typename additional_param
+>
+struct h_apply_op
+{
+  template<typename... values>
+  constexpr static typename h_apply_op_helper<from_left, op, additional_param, values...>::type helper(type_list<values...>)
+  { return typename h_apply_op_helper<from_left, op, additional_param, values...>::type(); }
+};
+
+template<
+  template<typename, typename> class op,
+  typename additional_param,
+  typename a
+>
+struct apply_op_from_left { typedef decltype(h_apply_op<true, op, additional_param>::helper(a())) type; };
+
+template<
+  template<typename, typename> class op,
+  typename additional_param,
+  typename a
+>
+struct apply_op_from_right { typedef decltype(h_apply_op<false, op, additional_param>::helper(a())) type; };
+
+/* see if an element is in a list */
+
+template<
+  template<typename, typename> class test,
+  typename check_against,
+  typename h_list,
+  bool last_check_positive = false
+>
+struct contained_in_list;
+
+template<
+  template<typename, typename> class test,
+  typename check_against,
+  typename h_list
+>
+struct contained_in_list<test, check_against, h_list, true>
+{
+  constexpr static bool value = true;
+};
+
+template<
+  template<typename, typename> class test,
+  typename check_against,
+  typename a,
+  typename... as
+>
+struct contained_in_list<test, check_against, type_list<a, as...>, false> : contained_in_list<test, check_against, type_list<as...>, test<check_against, a>::value> {};
+
+template<
+  template<typename, typename> class test,
+  typename check_against
+  EIGEN_TPL_PP_SPEC_HACK_DEFC(typename, empty)
+>
+struct contained_in_list<test, check_against, type_list<EIGEN_TPL_PP_SPEC_HACK_USE(empty)>, false> { constexpr static bool value = false; };
+
+/* see if an element is in a list and check for global flags */
+
+template<
+  template<typename, typename> class test,
+  typename check_against,
+  typename h_list,
+  int default_flags = 0,
+  bool last_check_positive = false,
+  int last_check_flags = default_flags
+>
+struct contained_in_list_gf;
+
+template<
+  template<typename, typename> class test,
+  typename check_against,
+  typename h_list,
+  int default_flags,
+  int last_check_flags
+>
+struct contained_in_list_gf<test, check_against, h_list, default_flags, true, last_check_flags>
+{
+  constexpr static bool value = true;
+  constexpr static int global_flags = last_check_flags;
+};
+
+template<
+  template<typename, typename> class test,
+  typename check_against,
+  typename a,
+  typename... as,
+  int default_flags,
+  int last_check_flags
+>
+struct contained_in_list_gf<test, check_against, type_list<a, as...>, default_flags, false, last_check_flags> : contained_in_list_gf<test, check_against, type_list<as...>, default_flags, test<check_against, a>::value, test<check_against, a>::global_flags> {};
+
+template<
+  template<typename, typename> class test,
+  typename check_against
+  EIGEN_TPL_PP_SPEC_HACK_DEFC(typename, empty),
+  int default_flags,
+  int last_check_flags
+>
+struct contained_in_list_gf<test, check_against, type_list<EIGEN_TPL_PP_SPEC_HACK_USE(empty)>, default_flags, false, last_check_flags> { constexpr static bool value = false; constexpr static int global_flags = default_flags; };
+
+/* generic reductions */
+
+template<
+  typename Reducer,
+  typename... Ts
+> struct reduce;
+
+template<
+  typename Reducer
+> struct reduce<Reducer>
+{
+  constexpr static inline int run() { return Reducer::Identity; }
+};
+
+template<
+  typename Reducer,
+  typename A
+> struct reduce<Reducer, A>
+{
+  constexpr static inline A run(A a) { return a; }
+};
+
+template<
+  typename Reducer,
+  typename A,
+  typename... Ts
+> struct reduce<Reducer, A, Ts...>
+{
+  constexpr static inline auto run(A a, Ts... ts) -> decltype(Reducer::run(a, reduce<Reducer, Ts...>::run(ts...))) {
+    return Reducer::run(a, reduce<Reducer, Ts...>::run(ts...));
+  }
+};
+
+/* generic binary operations */
+
+struct sum_op           {
+  template<typename A, typename B> EIGEN_DEVICE_FUNC constexpr static inline auto run(A a, B b) -> decltype(a + b)   { return a + b;   }
+  static constexpr int Identity = 0;
+};
+struct product_op       {
+  template<typename A, typename B> EIGEN_DEVICE_FUNC constexpr static inline auto run(A a, B b) -> decltype(a * b)   { return a * b;   }
+  static constexpr int Identity = 1;
+};
+
+struct logical_and_op   { template<typename A, typename B> constexpr static inline auto run(A a, B b) -> decltype(a && b)  { return a && b;  } };
+struct logical_or_op    { template<typename A, typename B> constexpr static inline auto run(A a, B b) -> decltype(a || b)  { return a || b;  } };
+
+struct equal_op         { template<typename A, typename B> constexpr static inline auto run(A a, B b) -> decltype(a == b)  { return a == b;  } };
+struct not_equal_op     { template<typename A, typename B> constexpr static inline auto run(A a, B b) -> decltype(a != b)  { return a != b;  } };
+struct lesser_op        { template<typename A, typename B> constexpr static inline auto run(A a, B b) -> decltype(a < b)   { return a < b;   } };
+struct lesser_equal_op  { template<typename A, typename B> constexpr static inline auto run(A a, B b) -> decltype(a <= b)  { return a <= b;  } };
+struct greater_op       { template<typename A, typename B> constexpr static inline auto run(A a, B b) -> decltype(a > b)   { return a > b;   } };
+struct greater_equal_op { template<typename A, typename B> constexpr static inline auto run(A a, B b) -> decltype(a >= b)  { return a >= b;  } };
+
+/* generic unary operations */
+
+struct not_op                { template<typename A> constexpr static inline auto run(A a) -> decltype(!a)      { return !a;      } };
+struct negation_op           { template<typename A> constexpr static inline auto run(A a) -> decltype(-a)      { return -a;      } };
+struct greater_equal_zero_op { template<typename A> constexpr static inline auto run(A a) -> decltype(a >= 0)  { return a >= 0;  } };
+
+
+/* reductions for lists */
+
+// using auto -> return value spec makes ICC 13.0 and 13.1 crash here, so we have to hack it
+// together in front... (13.0 doesn't work with array_prod/array_reduce/... anyway, but 13.1
+// does...
+template<typename... Ts>
+constexpr inline decltype(reduce<product_op, Ts...>::run((*((Ts*)0))...)) arg_prod(Ts... ts)
+{
+  return reduce<product_op, Ts...>::run(ts...);
+}
+
+template<typename... Ts>
+constexpr inline decltype(reduce<sum_op, Ts...>::run((*((Ts*)0))...)) arg_sum(Ts... ts)
+{
+  return reduce<sum_op, Ts...>::run(ts...);
+}
+
+/* reverse arrays */
+
+template<typename Array, int... n>
+constexpr inline Array h_array_reverse(Array arr, numeric_list<int, n...>)
+{
+  return {{array_get<sizeof...(n) - n - 1>(arr)...}};
+}
+
+template<typename T, std::size_t N>
+constexpr inline array<T, N> array_reverse(array<T, N> arr)
+{
+  return h_array_reverse(arr, typename gen_numeric_list<int, N>::type());
+}
+
+
+/* generic array reductions */
+
+// can't reuse standard reduce() interface above because Intel's Compiler
+// *really* doesn't like it, so we just reimplement the stuff
+// (start from N - 1 and work down to 0 because specialization for
+// n == N - 1 also doesn't work in Intel's compiler, so it goes into
+// an infinite loop)
+template<typename Reducer, typename T, std::size_t N, std::size_t n = N - 1>
+struct h_array_reduce {
+  EIGEN_DEVICE_FUNC constexpr static inline auto run(array<T, N> arr, T identity) -> decltype(Reducer::run(h_array_reduce<Reducer, T, N, n - 1>::run(arr, identity), array_get<n>(arr)))
+  {
+    return Reducer::run(h_array_reduce<Reducer, T, N, n - 1>::run(arr, identity), array_get<n>(arr));
+  }
+};
+
+template<typename Reducer, typename T, std::size_t N>
+struct h_array_reduce<Reducer, T, N, 0>
+{
+  EIGEN_DEVICE_FUNC constexpr static inline T run(const array<T, N>& arr, T)
+  {
+    return array_get<0>(arr);
+  }
+};
+
+template<typename Reducer, typename T>
+struct h_array_reduce<Reducer, T, 0>
+{
+  EIGEN_DEVICE_FUNC constexpr static inline T run(const array<T, 0>&, T identity)
+  {
+    return identity;
+  }
+};
+
+template<typename Reducer, typename T, std::size_t N>
+EIGEN_DEVICE_FUNC constexpr inline auto array_reduce(const array<T, N>& arr, T identity) -> decltype(h_array_reduce<Reducer, T, N>::run(arr, identity))
+{
+  return h_array_reduce<Reducer, T, N>::run(arr, identity);
+}
+
+/* standard array reductions */
+
+template<typename T, std::size_t N>
+EIGEN_DEVICE_FUNC constexpr inline auto array_sum(const array<T, N>& arr) -> decltype(array_reduce<sum_op, T, N>(arr, static_cast<T>(0)))
+{
+  return array_reduce<sum_op, T, N>(arr, static_cast<T>(0));
+}
+
+template<typename T, std::size_t N>
+EIGEN_DEVICE_FUNC constexpr inline auto array_prod(const array<T, N>& arr) -> decltype(array_reduce<product_op, T, N>(arr, static_cast<T>(1)))
+{
+  return array_reduce<product_op, T, N>(arr, static_cast<T>(1));
+}
+
+template<typename t>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE t array_prod(const std::vector<t>& a) {
+  eigen_assert(a.size() > 0);
+  t prod = 1;
+  for (size_t i = 0; i < a.size(); ++i) { prod *= a[i]; }
+  return prod;
+}
+
+/* zip an array */
+
+template<typename Op, typename A, typename B, std::size_t N, int... n>
+constexpr inline array<decltype(Op::run(A(), B())),N> h_array_zip(array<A, N> a, array<B, N> b, numeric_list<int, n...>)
+{
+  return array<decltype(Op::run(A(), B())),N>{{ Op::run(array_get<n>(a), array_get<n>(b))... }};
+}
+
+template<typename Op, typename A, typename B, std::size_t N>
+constexpr inline array<decltype(Op::run(A(), B())),N> array_zip(array<A, N> a, array<B, N> b)
+{
+  return h_array_zip<Op>(a, b, typename gen_numeric_list<int, N>::type());
+}
+
+/* zip an array and reduce the result */
+
+template<typename Reducer, typename Op, typename A, typename B, std::size_t N, int... n>
+constexpr inline auto h_array_zip_and_reduce(array<A, N> a, array<B, N> b, numeric_list<int, n...>) -> decltype(reduce<Reducer, typename id_numeric<int,n,decltype(Op::run(A(), B()))>::type...>::run(Op::run(array_get<n>(a), array_get<n>(b))...))
+{
+  return reduce<Reducer, typename id_numeric<int,n,decltype(Op::run(A(), B()))>::type...>::run(Op::run(array_get<n>(a), array_get<n>(b))...);
+}
+
+template<typename Reducer, typename Op, typename A, typename B, std::size_t N>
+constexpr inline auto array_zip_and_reduce(array<A, N> a, array<B, N> b) -> decltype(h_array_zip_and_reduce<Reducer, Op, A, B, N>(a, b, typename gen_numeric_list<int, N>::type()))
+{
+  return h_array_zip_and_reduce<Reducer, Op, A, B, N>(a, b, typename gen_numeric_list<int, N>::type());
+}
+
+/* apply stuff to an array */
+
+template<typename Op, typename A, std::size_t N, int... n>
+constexpr inline array<decltype(Op::run(A())),N> h_array_apply(array<A, N> a, numeric_list<int, n...>)
+{
+  return array<decltype(Op::run(A())),N>{{ Op::run(array_get<n>(a))... }};
+}
+
+template<typename Op, typename A, std::size_t N>
+constexpr inline array<decltype(Op::run(A())),N> array_apply(array<A, N> a)
+{
+  return h_array_apply<Op>(a, typename gen_numeric_list<int, N>::type());
+}
+
+/* apply stuff to an array and reduce */
+
+template<typename Reducer, typename Op, typename A, std::size_t N, int... n>
+constexpr inline auto h_array_apply_and_reduce(array<A, N> arr, numeric_list<int, n...>) -> decltype(reduce<Reducer, typename id_numeric<int,n,decltype(Op::run(A()))>::type...>::run(Op::run(array_get<n>(arr))...))
+{
+  return reduce<Reducer, typename id_numeric<int,n,decltype(Op::run(A()))>::type...>::run(Op::run(array_get<n>(arr))...);
+}
+
+template<typename Reducer, typename Op, typename A, std::size_t N>
+constexpr inline auto array_apply_and_reduce(array<A, N> a) -> decltype(h_array_apply_and_reduce<Reducer, Op, A, N>(a, typename gen_numeric_list<int, N>::type()))
+{
+  return h_array_apply_and_reduce<Reducer, Op, A, N>(a, typename gen_numeric_list<int, N>::type());
+}
+
+/* repeat a value n times (and make an array out of it
+ * usage:
+ *   array<int, 16> = repeat<16>(42);
+ */
+
+template<int n>
+struct h_repeat
+{
+  template<typename t, int... ii>
+  constexpr static inline array<t, n> run(t v, numeric_list<int, ii...>)
+  {
+    return {{ typename id_numeric<int, ii, t>::type(v)... }};
+  }
+};
+
+template<int n, typename t>
+constexpr array<t, n> repeat(t v) { return h_repeat<n>::run(v, typename gen_numeric_list<int, n>::type()); }
+
+/* instantiate a class by a C-style array */
+template<class InstType, typename ArrType, std::size_t N, bool Reverse, typename... Ps>
+struct h_instantiate_by_c_array;
+
+template<class InstType, typename ArrType, std::size_t N, typename... Ps>
+struct h_instantiate_by_c_array<InstType, ArrType, N, false, Ps...>
+{
+  static InstType run(ArrType* arr, Ps... args)
+  {
+    return h_instantiate_by_c_array<InstType, ArrType, N - 1, false, Ps..., ArrType>::run(arr + 1, args..., arr[0]);
+  }
+};
+
+template<class InstType, typename ArrType, std::size_t N, typename... Ps>
+struct h_instantiate_by_c_array<InstType, ArrType, N, true, Ps...>
+{
+  static InstType run(ArrType* arr, Ps... args)
+  {
+    return h_instantiate_by_c_array<InstType, ArrType, N - 1, false, ArrType, Ps...>::run(arr + 1, arr[0], args...);
+  }
+};
+
+template<class InstType, typename ArrType, typename... Ps>
+struct h_instantiate_by_c_array<InstType, ArrType, 0, false, Ps...>
+{
+  static InstType run(ArrType* arr, Ps... args)
+  {
+    (void)arr;
+    return InstType(args...);
+  }
+};
+
+template<class InstType, typename ArrType, typename... Ps>
+struct h_instantiate_by_c_array<InstType, ArrType, 0, true, Ps...>
+{
+  static InstType run(ArrType* arr, Ps... args)
+  {
+    (void)arr;
+    return InstType(args...);
+  }
+};
+
+template<class InstType, typename ArrType, std::size_t N, bool Reverse = false>
+InstType instantiate_by_c_array(ArrType* arr)
+{
+  return h_instantiate_by_c_array<InstType, ArrType, N, Reverse>::run(arr);
+}
+
+} // end namespace internal
+
+} // end namespace Eigen
+
+#else // Non C++11, fallback to emulation mode
+
+#include "EmulateCXX11Meta.h"
+
+#endif
+
+#endif // EIGEN_CXX11META_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/util/EmulateArray.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/util/EmulateArray.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/util/EmulateArray.h	(revision 3762)
@@ -0,0 +1,267 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2014 Benoit Steiner <benoit.steiner.goog@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_EMULATE_ARRAY_H
+#define EIGEN_EMULATE_ARRAY_H
+
+
+
+// The array class is only available starting with cxx11. Emulate our own here
+// if needed. Beware, msvc still doesn't advertise itself as a c++11 compiler!
+// Moreover, CUDA doesn't support the STL containers, so we use our own instead.
+#if (__cplusplus <= 199711L && EIGEN_COMP_MSVC < 1900) || defined(__CUDACC__) || defined(EIGEN_AVOID_STL_ARRAY)
+
+namespace Eigen {
+template <typename T, size_t n> class array {
+ public:
+  EIGEN_DEVICE_FUNC
+  EIGEN_STRONG_INLINE T& operator[] (size_t index) { return values[index]; }
+  EIGEN_DEVICE_FUNC
+  EIGEN_STRONG_INLINE const T& operator[] (size_t index) const { return values[index]; }
+
+  EIGEN_DEVICE_FUNC
+  EIGEN_STRONG_INLINE T& front() { return values[0]; }
+  EIGEN_DEVICE_FUNC
+  EIGEN_STRONG_INLINE const T& front() const { return values[0]; }
+
+  EIGEN_DEVICE_FUNC
+  EIGEN_STRONG_INLINE T& back() { return values[n-1]; }
+  EIGEN_DEVICE_FUNC
+  EIGEN_STRONG_INLINE const T& back() const { return values[n-1]; }
+
+  EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
+  static std::size_t size() { return n; }
+
+  T values[n];
+
+  EIGEN_DEVICE_FUNC
+  EIGEN_STRONG_INLINE array() { }
+  EIGEN_DEVICE_FUNC
+  EIGEN_STRONG_INLINE array(const T& v) {
+    EIGEN_STATIC_ASSERT(n==1, YOU_MADE_A_PROGRAMMING_MISTAKE)
+    values[0] = v;
+  }
+  EIGEN_DEVICE_FUNC
+  EIGEN_STRONG_INLINE array(const T& v1, const T& v2) {
+    EIGEN_STATIC_ASSERT(n==2, YOU_MADE_A_PROGRAMMING_MISTAKE)
+    values[0] = v1;
+    values[1] = v2;
+  }
+  EIGEN_DEVICE_FUNC
+  EIGEN_STRONG_INLINE array(const T& v1, const T& v2, const T& v3) {
+    EIGEN_STATIC_ASSERT(n==3, YOU_MADE_A_PROGRAMMING_MISTAKE)
+    values[0] = v1;
+    values[1] = v2;
+    values[2] = v3;
+  }
+  EIGEN_DEVICE_FUNC
+  EIGEN_STRONG_INLINE array(const T& v1, const T& v2, const T& v3,
+                            const T& v4) {
+    EIGEN_STATIC_ASSERT(n==4, YOU_MADE_A_PROGRAMMING_MISTAKE)
+    values[0] = v1;
+    values[1] = v2;
+    values[2] = v3;
+    values[3] = v4;
+  }
+  EIGEN_DEVICE_FUNC
+  EIGEN_STRONG_INLINE array(const T& v1, const T& v2, const T& v3, const T& v4,
+                            const T& v5) {
+    EIGEN_STATIC_ASSERT(n==5, YOU_MADE_A_PROGRAMMING_MISTAKE)
+    values[0] = v1;
+    values[1] = v2;
+    values[2] = v3;
+    values[3] = v4;
+    values[4] = v5;
+  }
+  EIGEN_DEVICE_FUNC
+  EIGEN_STRONG_INLINE array(const T& v1, const T& v2, const T& v3, const T& v4,
+                            const T& v5, const T& v6) {
+    EIGEN_STATIC_ASSERT(n==6, YOU_MADE_A_PROGRAMMING_MISTAKE)
+    values[0] = v1;
+    values[1] = v2;
+    values[2] = v3;
+    values[3] = v4;
+    values[4] = v5;
+    values[5] = v6;
+  }
+  EIGEN_DEVICE_FUNC
+  EIGEN_STRONG_INLINE array(const T& v1, const T& v2, const T& v3, const T& v4,
+                            const T& v5, const T& v6, const T& v7) {
+    EIGEN_STATIC_ASSERT(n==7, YOU_MADE_A_PROGRAMMING_MISTAKE)
+    values[0] = v1;
+    values[1] = v2;
+    values[2] = v3;
+    values[3] = v4;
+    values[4] = v5;
+    values[5] = v6;
+    values[6] = v7;
+  }
+  EIGEN_DEVICE_FUNC
+  EIGEN_STRONG_INLINE array(
+      const T& v1, const T& v2, const T& v3, const T& v4,
+      const T& v5, const T& v6, const T& v7, const T& v8) {
+    EIGEN_STATIC_ASSERT(n==8, YOU_MADE_A_PROGRAMMING_MISTAKE)
+    values[0] = v1;
+    values[1] = v2;
+    values[2] = v3;
+    values[3] = v4;
+    values[4] = v5;
+    values[5] = v6;
+    values[6] = v7;
+    values[7] = v8;
+  }
+
+#if EIGEN_HAS_VARIADIC_TEMPLATES
+  EIGEN_DEVICE_FUNC
+  EIGEN_STRONG_INLINE array(std::initializer_list<T> l) {
+    eigen_assert(l.size() == n);
+    internal::smart_copy(l.begin(), l.end(), values);
+  }
+#endif
+};
+
+
+// Specialize array for zero size
+template <typename T> class array<T, 0> {
+ public:
+  EIGEN_DEVICE_FUNC
+  EIGEN_STRONG_INLINE T& operator[] (size_t) {
+    eigen_assert(false && "Can't index a zero size array");
+    return dummy;
+  }
+  EIGEN_DEVICE_FUNC
+  EIGEN_STRONG_INLINE const T& operator[] (size_t) const {
+    eigen_assert(false && "Can't index a zero size array");
+    return dummy;
+  }
+
+  EIGEN_DEVICE_FUNC
+  EIGEN_STRONG_INLINE T& front() {
+    eigen_assert(false && "Can't index a zero size array");
+    return dummy;
+  }
+  EIGEN_DEVICE_FUNC
+  EIGEN_STRONG_INLINE const T& front() const {
+    eigen_assert(false && "Can't index a zero size array");
+    return dummy;
+  }
+  EIGEN_DEVICE_FUNC
+  EIGEN_STRONG_INLINE T& back() {
+    eigen_assert(false && "Can't index a zero size array");
+    return dummy;
+  }
+  EIGEN_DEVICE_FUNC
+  EIGEN_STRONG_INLINE const T& back() const {
+    eigen_assert(false && "Can't index a zero size array");
+    return dummy;
+  }
+
+  static EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE std::size_t size() { return 0; }
+
+  EIGEN_DEVICE_FUNC
+  EIGEN_STRONG_INLINE array() : dummy() { }
+
+#if EIGEN_HAS_VARIADIC_TEMPLATES
+  EIGEN_DEVICE_FUNC array(std::initializer_list<T> l) : dummy() {
+    eigen_assert(l.size() == 0);
+  }
+#endif
+
+ private:
+  T dummy;
+};
+
+// Comparison operator
+// Todo: implement !=, <, <=, >,  and >=
+template<class T, std::size_t N>
+EIGEN_DEVICE_FUNC bool operator==(const array<T,N>& lhs, const array<T,N>& rhs) {
+  for (std::size_t i = 0; i < N; ++i) {
+    if (lhs[i] != rhs[i]) {
+      return false;
+    }
+  }
+  return true;
+}
+
+
+namespace internal {
+template<std::size_t I, class T, std::size_t N>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T& array_get(array<T,N>& a) {
+  return a[I];
+}
+template<std::size_t I, class T, std::size_t N>
+EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const T& array_get(const array<T,N>& a) {
+  return a[I];
+}
+
+template <typename T> struct array_size;
+template<class T, std::size_t N> struct array_size<array<T,N> > {
+  static const size_t value = N;
+};
+template <typename T> struct array_size;
+template<class T, std::size_t N> struct array_size<array<T,N>& > {
+  static const size_t value = N;
+};
+template <typename T> struct array_size;
+template<class T, std::size_t N> struct array_size<const array<T,N> > {
+  static const size_t value = N;
+};
+template <typename T> struct array_size;
+template<class T, std::size_t N> struct array_size<const array<T,N>& > {
+  static const size_t value = N;
+};
+
+}  // end namespace internal
+}  // end namespace Eigen
+
+#else
+
+// The compiler supports c++11, and we're not targetting cuda: use std::array as Eigen::array
+#include <array>
+namespace Eigen {
+
+template <typename T, std::size_t N> using array = std::array<T, N>;
+
+namespace internal {
+/* std::get is only constexpr in C++14, not yet in C++11
+ *     - libstdc++ from version 4.7 onwards has it nevertheless,
+ *                                          so use that
+ *     - libstdc++ older versions: use _M_instance directly
+ *     - libc++ all versions so far: use __elems_ directly
+ *     - all other libs: use std::get to be portable, but
+ *                       this may not be constexpr
+ */
+#if defined(__GLIBCXX__) && __GLIBCXX__ < 20120322
+#define STD_GET_ARR_HACK             a._M_instance[I]
+#elif defined(_LIBCPP_VERSION)
+#define STD_GET_ARR_HACK             a.__elems_[I]
+#else
+#define STD_GET_ARR_HACK             std::template get<I, T, N>(a)
+#endif
+
+template<std::size_t I, class T, std::size_t N> constexpr inline T&       array_get(std::array<T,N>&       a) { return (T&)       STD_GET_ARR_HACK; }
+template<std::size_t I, class T, std::size_t N> constexpr inline T&&      array_get(std::array<T,N>&&      a) { return (T&&)      STD_GET_ARR_HACK; }
+template<std::size_t I, class T, std::size_t N> constexpr inline T const& array_get(std::array<T,N> const& a) { return (T const&) STD_GET_ARR_HACK; }
+
+#undef STD_GET_ARR_HACK
+
+template <typename T> struct array_size;
+template<class T, std::size_t N> struct array_size<const std::array<T,N> > {
+  static const size_t value = N;
+};
+template <typename T> struct array_size;
+template<class T, std::size_t N> struct array_size<std::array<T,N> > {
+  static const size_t value = N;
+};
+}  // end namespace internal
+}  // end namespace Eigen
+
+#endif
+
+#endif  // EIGEN_EMULATE_ARRAY_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/ThreadPool/ThreadYield.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/ThreadPool/ThreadYield.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/ThreadPool/ThreadYield.h	(revision 3762)
@@ -0,0 +1,20 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2016 Benoit Steiner <benoit.steiner.goog@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CXX11_THREADPOOL_THREAD_YIELD_H
+#define EIGEN_CXX11_THREADPOOL_THREAD_YIELD_H
+
+// Try to come up with a portable way to yield
+#if EIGEN_COMP_GNUC && EIGEN_GNUC_AT_MOST(4, 7)
+#define EIGEN_THREAD_YIELD() sched_yield()
+#else
+#define EIGEN_THREAD_YIELD() std::this_thread::yield()
+#endif
+
+#endif  // EIGEN_CXX11_THREADPOOL_THREAD_YIELD_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/ThreadPool/ThreadLocal.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/ThreadPool/ThreadLocal.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/ThreadPool/ThreadLocal.h	(revision 3762)
@@ -0,0 +1,22 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2016 Benoit Steiner <benoit.steiner.goog@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CXX11_THREADPOOL_THREAD_LOCAL_H
+#define EIGEN_CXX11_THREADPOOL_THREAD_LOCAL_H
+
+// Try to come up with a portable implementation of thread local variables
+#if EIGEN_COMP_GNUC && EIGEN_GNUC_AT_MOST(4, 7)
+#define EIGEN_THREAD_LOCAL static __thread
+#elif EIGEN_COMP_CLANG
+#define EIGEN_THREAD_LOCAL static __thread
+#else
+#define EIGEN_THREAD_LOCAL static thread_local
+#endif
+
+#endif  // EIGEN_CXX11_THREADPOOL_THREAD_LOCAL_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/ThreadPool/ThreadPoolInterface.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/ThreadPool/ThreadPoolInterface.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/ThreadPool/ThreadPoolInterface.h	(revision 3762)
@@ -0,0 +1,33 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2014 Benoit Steiner <benoit.steiner.goog@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CXX11_THREADPOOL_THREAD_POOL_INTERFACE_H
+#define EIGEN_CXX11_THREADPOOL_THREAD_POOL_INTERFACE_H
+
+namespace Eigen {
+
+// This defines an interface that ThreadPoolDevice can take to use
+// custom thread pools underneath.
+class ThreadPoolInterface {
+ public:
+  virtual void Schedule(std::function<void()> fn) = 0;
+
+  // Returns the number of threads in the pool.
+  virtual int NumThreads() const = 0;
+
+  // Returns a logical thread index between 0 and NumThreads() - 1 if called
+  // from one of the threads in the pool. Returns -1 otherwise.
+  virtual int CurrentThreadId() const = 0;
+
+  virtual ~ThreadPoolInterface() {}
+};
+
+}  // namespace Eigen
+
+#endif  // EIGEN_CXX11_THREADPOOL_THREAD_POOL_INTERFACE_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/ThreadPool/NonBlockingThreadPool.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/ThreadPool/NonBlockingThreadPool.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/ThreadPool/NonBlockingThreadPool.h	(revision 3762)
@@ -0,0 +1,274 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2016 Dmitry Vyukov <dvyukov@google.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CXX11_THREADPOOL_NONBLOCKING_THREAD_POOL_H
+#define EIGEN_CXX11_THREADPOOL_NONBLOCKING_THREAD_POOL_H
+
+
+namespace Eigen {
+
+template <typename Environment>
+class NonBlockingThreadPoolTempl : public Eigen::ThreadPoolInterface {
+ public:
+  typedef typename Environment::Task Task;
+  typedef RunQueue<Task, 1024> Queue;
+
+  NonBlockingThreadPoolTempl(int num_threads, Environment env = Environment())
+      : env_(env),
+        threads_(num_threads),
+        queues_(num_threads),
+        coprimes_(num_threads),
+        waiters_(num_threads),
+        blocked_(0),
+        spinning_(0),
+        done_(false),
+        ec_(waiters_) {
+    waiters_.resize(num_threads);
+
+    // Calculate coprimes of num_threads.
+    // Coprimes are used for a random walk over all threads in Steal
+    // and NonEmptyQueueIndex. Iteration is based on the fact that if we take
+    // a walk starting thread index t and calculate num_threads - 1 subsequent
+    // indices as (t + coprime) % num_threads, we will cover all threads without
+    // repetitions (effectively getting a presudo-random permutation of thread
+    // indices).
+    for (int i = 1; i <= num_threads; i++) {
+      unsigned a = i;
+      unsigned b = num_threads;
+      // If GCD(a, b) == 1, then a and b are coprimes.
+      while (b != 0) {
+        unsigned tmp = a;
+        a = b;
+        b = tmp % b;
+      }
+      if (a == 1) {
+        coprimes_.push_back(i);
+      }
+    }
+    for (int i = 0; i < num_threads; i++) {
+      queues_.push_back(new Queue());
+    }
+    for (int i = 0; i < num_threads; i++) {
+      threads_.push_back(env_.CreateThread([this, i]() { WorkerLoop(i); }));
+    }
+  }
+
+  ~NonBlockingThreadPoolTempl() {
+    done_ = true;
+    // Now if all threads block without work, they will start exiting.
+    // But note that threads can continue to work arbitrary long,
+    // block, submit new work, unblock and otherwise live full life.
+    ec_.Notify(true);
+
+    // Join threads explicitly to avoid destruction order issues.
+    for (size_t i = 0; i < threads_.size(); i++) delete threads_[i];
+    for (size_t i = 0; i < threads_.size(); i++) delete queues_[i];
+  }
+
+  void Schedule(std::function<void()> fn) {
+    Task t = env_.CreateTask(std::move(fn));
+    PerThread* pt = GetPerThread();
+    if (pt->pool == this) {
+      // Worker thread of this pool, push onto the thread's queue.
+      Queue* q = queues_[pt->thread_id];
+      t = q->PushFront(std::move(t));
+    } else {
+      // A free-standing thread (or worker of another pool), push onto a random
+      // queue.
+      Queue* q = queues_[Rand(&pt->rand) % queues_.size()];
+      t = q->PushBack(std::move(t));
+    }
+    // Note: below we touch this after making w available to worker threads.
+    // Strictly speaking, this can lead to a racy-use-after-free. Consider that
+    // Schedule is called from a thread that is neither main thread nor a worker
+    // thread of this pool. Then, execution of w directly or indirectly
+    // completes overall computations, which in turn leads to destruction of
+    // this. We expect that such scenario is prevented by program, that is,
+    // this is kept alive while any threads can potentially be in Schedule.
+    if (!t.f)
+      ec_.Notify(false);
+    else
+      env_.ExecuteTask(t);  // Push failed, execute directly.
+  }
+
+  int NumThreads() const final {
+    return static_cast<int>(threads_.size());
+  }
+
+  int CurrentThreadId() const final {
+    const PerThread* pt =
+        const_cast<NonBlockingThreadPoolTempl*>(this)->GetPerThread();
+    if (pt->pool == this) {
+      return pt->thread_id;
+    } else {
+      return -1;
+    }
+  }
+
+ private:
+  typedef typename Environment::EnvThread Thread;
+
+  struct PerThread {
+    constexpr PerThread() : pool(NULL), rand(0), thread_id(-1) { }
+    NonBlockingThreadPoolTempl* pool;  // Parent pool, or null for normal threads.
+    uint64_t rand;  // Random generator state.
+    int thread_id;  // Worker thread index in pool.
+  };
+
+  Environment env_;
+  MaxSizeVector<Thread*> threads_;
+  MaxSizeVector<Queue*> queues_;
+  MaxSizeVector<unsigned> coprimes_;
+  MaxSizeVector<EventCount::Waiter> waiters_;
+  std::atomic<unsigned> blocked_;
+  std::atomic<bool> spinning_;
+  std::atomic<bool> done_;
+  EventCount ec_;
+
+  // Main worker thread loop.
+  void WorkerLoop(int thread_id) {
+    PerThread* pt = GetPerThread();
+    pt->pool = this;
+    pt->rand = std::hash<std::thread::id>()(std::this_thread::get_id());
+    pt->thread_id = thread_id;
+    Queue* q = queues_[thread_id];
+    EventCount::Waiter* waiter = &waiters_[thread_id];
+    for (;;) {
+      Task t = q->PopFront();
+      if (!t.f) {
+        t = Steal();
+        if (!t.f) {
+          // Leave one thread spinning. This reduces latency.
+          // TODO(dvyukov): 1000 iterations is based on fair dice roll, tune it.
+          // Also, the time it takes to attempt to steal work 1000 times depends
+          // on the size of the thread pool. However the speed at which the user
+          // of the thread pool submit tasks is independent of the size of the
+          // pool. Consider a time based limit instead.
+          if (!spinning_ && !spinning_.exchange(true)) {
+            for (int i = 0; i < 1000 && !t.f; i++) {
+              t = Steal();
+            }
+            spinning_ = false;
+          }
+          if (!t.f) {
+            if (!WaitForWork(waiter, &t)) {
+              return;
+            }
+          }
+        }
+      }
+      if (t.f) {
+        env_.ExecuteTask(t);
+      }
+    }
+  }
+
+  // Steal tries to steal work from other worker threads in best-effort manner.
+  Task Steal() {
+    PerThread* pt = GetPerThread();
+    const size_t size = queues_.size();
+    unsigned r = Rand(&pt->rand);
+    unsigned inc = coprimes_[r % coprimes_.size()];
+    unsigned victim = r % size;
+    for (unsigned i = 0; i < size; i++) {
+      Task t = queues_[victim]->PopBack();
+      if (t.f) {
+        return t;
+      }
+      victim += inc;
+      if (victim >= size) {
+        victim -= size;
+      }
+    }
+    return Task();
+  }
+
+  // WaitForWork blocks until new work is available (returns true), or if it is
+  // time to exit (returns false). Can optionally return a task to execute in t
+  // (in such case t.f != nullptr on return).
+  bool WaitForWork(EventCount::Waiter* waiter, Task* t) {
+    eigen_assert(!t->f);
+    // We already did best-effort emptiness check in Steal, so prepare for
+    // blocking.
+    ec_.Prewait(waiter);
+    // Now do a reliable emptiness check.
+    int victim = NonEmptyQueueIndex();
+    if (victim != -1) {
+      ec_.CancelWait(waiter);
+      *t = queues_[victim]->PopBack();
+      return true;
+    }
+    // Number of blocked threads is used as termination condition.
+    // If we are shutting down and all worker threads blocked without work,
+    // that's we are done.
+    blocked_++;
+    if (done_ && blocked_ == threads_.size()) {
+      ec_.CancelWait(waiter);
+      // Almost done, but need to re-check queues.
+      // Consider that all queues are empty and all worker threads are preempted
+      // right after incrementing blocked_ above. Now a free-standing thread
+      // submits work and calls destructor (which sets done_). If we don't
+      // re-check queues, we will exit leaving the work unexecuted.
+      if (NonEmptyQueueIndex() != -1) {
+        // Note: we must not pop from queues before we decrement blocked_,
+        // otherwise the following scenario is possible. Consider that instead
+        // of checking for emptiness we popped the only element from queues.
+        // Now other worker threads can start exiting, which is bad if the
+        // work item submits other work. So we just check emptiness here,
+        // which ensures that all worker threads exit at the same time.
+        blocked_--;
+        return true;
+      }
+      // Reached stable termination state.
+      ec_.Notify(true);
+      return false;
+    }
+    ec_.CommitWait(waiter);
+    blocked_--;
+    return true;
+  }
+
+  int NonEmptyQueueIndex() {
+    PerThread* pt = GetPerThread();
+    const size_t size = queues_.size();
+    unsigned r = Rand(&pt->rand);
+    unsigned inc = coprimes_[r % coprimes_.size()];
+    unsigned victim = r % size;
+    for (unsigned i = 0; i < size; i++) {
+      if (!queues_[victim]->Empty()) {
+        return victim;
+      }
+      victim += inc;
+      if (victim >= size) {
+        victim -= size;
+      }
+    }
+    return -1;
+  }
+
+  static EIGEN_STRONG_INLINE PerThread* GetPerThread() {
+    EIGEN_THREAD_LOCAL PerThread per_thread_;
+    PerThread* pt = &per_thread_;
+    return pt;
+  }
+
+  static EIGEN_STRONG_INLINE unsigned Rand(uint64_t* state) {
+    uint64_t current = *state;
+    // Update the internal state
+    *state = current * 6364136223846793005ULL + 0xda3e39cb94b95bdbULL;
+    // Generate the random output (using the PCG-XSH-RS scheme)
+    return static_cast<unsigned>((current ^ (current >> 22)) >> (22 + (current >> 61)));
+  }
+};
+
+typedef NonBlockingThreadPoolTempl<StlThreadEnvironment> NonBlockingThreadPool;
+
+}  // namespace Eigen
+
+#endif  // EIGEN_CXX11_THREADPOOL_NONBLOCKING_THREAD_POOL_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/ThreadPool/RunQueue.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/ThreadPool/RunQueue.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/ThreadPool/RunQueue.h	(revision 3762)
@@ -0,0 +1,210 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2016 Dmitry Vyukov <dvyukov@google.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CXX11_THREADPOOL_RUNQUEUE_H_
+#define EIGEN_CXX11_THREADPOOL_RUNQUEUE_H_
+
+
+namespace Eigen {
+
+// RunQueue is a fixed-size, partially non-blocking deque or Work items.
+// Operations on front of the queue must be done by a single thread (owner),
+// operations on back of the queue can be done by multiple threads concurrently.
+//
+// Algorithm outline:
+// All remote threads operating on the queue back are serialized by a mutex.
+// This ensures that at most two threads access state: owner and one remote
+// thread (Size aside). The algorithm ensures that the occupied region of the
+// underlying array is logically continuous (can wraparound, but no stray
+// occupied elements). Owner operates on one end of this region, remote thread
+// operates on the other end. Synchronization between these threads
+// (potential consumption of the last element and take up of the last empty
+// element) happens by means of state variable in each element. States are:
+// empty, busy (in process of insertion of removal) and ready. Threads claim
+// elements (empty->busy and ready->busy transitions) by means of a CAS
+// operation. The finishing transition (busy->empty and busy->ready) are done
+// with plain store as the element is exclusively owned by the current thread.
+//
+// Note: we could permit only pointers as elements, then we would not need
+// separate state variable as null/non-null pointer value would serve as state,
+// but that would require malloc/free per operation for large, complex values
+// (and this is designed to store std::function<()>).
+template <typename Work, unsigned kSize>
+class RunQueue {
+ public:
+  RunQueue() : front_(0), back_(0) {
+    // require power-of-two for fast masking
+    eigen_assert((kSize & (kSize - 1)) == 0);
+    eigen_assert(kSize > 2);            // why would you do this?
+    eigen_assert(kSize <= (64 << 10));  // leave enough space for counter
+    for (unsigned i = 0; i < kSize; i++)
+      array_[i].state.store(kEmpty, std::memory_order_relaxed);
+  }
+
+  ~RunQueue() { eigen_plain_assert(Size() == 0); }
+
+  // PushFront inserts w at the beginning of the queue.
+  // If queue is full returns w, otherwise returns default-constructed Work.
+  Work PushFront(Work w) {
+    unsigned front = front_.load(std::memory_order_relaxed);
+    Elem* e = &array_[front & kMask];
+    uint8_t s = e->state.load(std::memory_order_relaxed);
+    if (s != kEmpty ||
+        !e->state.compare_exchange_strong(s, kBusy, std::memory_order_acquire))
+      return w;
+    front_.store(front + 1 + (kSize << 1), std::memory_order_relaxed);
+    e->w = std::move(w);
+    e->state.store(kReady, std::memory_order_release);
+    return Work();
+  }
+
+  // PopFront removes and returns the first element in the queue.
+  // If the queue was empty returns default-constructed Work.
+  Work PopFront() {
+    unsigned front = front_.load(std::memory_order_relaxed);
+    Elem* e = &array_[(front - 1) & kMask];
+    uint8_t s = e->state.load(std::memory_order_relaxed);
+    if (s != kReady ||
+        !e->state.compare_exchange_strong(s, kBusy, std::memory_order_acquire))
+      return Work();
+    Work w = std::move(e->w);
+    e->state.store(kEmpty, std::memory_order_release);
+    front = ((front - 1) & kMask2) | (front & ~kMask2);
+    front_.store(front, std::memory_order_relaxed);
+    return w;
+  }
+
+  // PushBack adds w at the end of the queue.
+  // If queue is full returns w, otherwise returns default-constructed Work.
+  Work PushBack(Work w) {
+    std::unique_lock<std::mutex> lock(mutex_);
+    unsigned back = back_.load(std::memory_order_relaxed);
+    Elem* e = &array_[(back - 1) & kMask];
+    uint8_t s = e->state.load(std::memory_order_relaxed);
+    if (s != kEmpty ||
+        !e->state.compare_exchange_strong(s, kBusy, std::memory_order_acquire))
+      return w;
+    back = ((back - 1) & kMask2) | (back & ~kMask2);
+    back_.store(back, std::memory_order_relaxed);
+    e->w = std::move(w);
+    e->state.store(kReady, std::memory_order_release);
+    return Work();
+  }
+
+  // PopBack removes and returns the last elements in the queue.
+  // Can fail spuriously.
+  Work PopBack() {
+    if (Empty()) return Work();
+    std::unique_lock<std::mutex> lock(mutex_, std::try_to_lock);
+    if (!lock) return Work();
+    unsigned back = back_.load(std::memory_order_relaxed);
+    Elem* e = &array_[back & kMask];
+    uint8_t s = e->state.load(std::memory_order_relaxed);
+    if (s != kReady ||
+        !e->state.compare_exchange_strong(s, kBusy, std::memory_order_acquire))
+      return Work();
+    Work w = std::move(e->w);
+    e->state.store(kEmpty, std::memory_order_release);
+    back_.store(back + 1 + (kSize << 1), std::memory_order_relaxed);
+    return w;
+  }
+
+  // PopBackHalf removes and returns half last elements in the queue.
+  // Returns number of elements removed. But can also fail spuriously.
+  unsigned PopBackHalf(std::vector<Work>* result) {
+    if (Empty()) return 0;
+    std::unique_lock<std::mutex> lock(mutex_, std::try_to_lock);
+    if (!lock) return 0;
+    unsigned back = back_.load(std::memory_order_relaxed);
+    unsigned size = Size();
+    unsigned mid = back;
+    if (size > 1) mid = back + (size - 1) / 2;
+    unsigned n = 0;
+    unsigned start = 0;
+    for (; static_cast<int>(mid - back) >= 0; mid--) {
+      Elem* e = &array_[mid & kMask];
+      uint8_t s = e->state.load(std::memory_order_relaxed);
+      if (n == 0) {
+        if (s != kReady ||
+            !e->state.compare_exchange_strong(s, kBusy,
+                                              std::memory_order_acquire))
+          continue;
+        start = mid;
+      } else {
+        // Note: no need to store temporal kBusy, we exclusively own these
+        // elements.
+        eigen_assert(s == kReady);
+      }
+      result->push_back(std::move(e->w));
+      e->state.store(kEmpty, std::memory_order_release);
+      n++;
+    }
+    if (n != 0)
+      back_.store(start + 1 + (kSize << 1), std::memory_order_relaxed);
+    return n;
+  }
+
+  // Size returns current queue size.
+  // Can be called by any thread at any time.
+  unsigned Size() const {
+    // Emptiness plays critical role in thread pool blocking. So we go to great
+    // effort to not produce false positives (claim non-empty queue as empty).
+    for (;;) {
+      // Capture a consistent snapshot of front/tail.
+      unsigned front = front_.load(std::memory_order_acquire);
+      unsigned back = back_.load(std::memory_order_acquire);
+      unsigned front1 = front_.load(std::memory_order_relaxed);
+      if (front != front1) continue;
+      int size = (front & kMask2) - (back & kMask2);
+      // Fix overflow.
+      if (size < 0) size += 2 * kSize;
+      // Order of modification in push/pop is crafted to make the queue look
+      // larger than it is during concurrent modifications. E.g. pop can
+      // decrement size before the corresponding push has incremented it.
+      // So the computed size can be up to kSize + 1, fix it.
+      if (size > static_cast<int>(kSize)) size = kSize;
+      return size;
+    }
+  }
+
+  // Empty tests whether container is empty.
+  // Can be called by any thread at any time.
+  bool Empty() const { return Size() == 0; }
+
+ private:
+  static const unsigned kMask = kSize - 1;
+  static const unsigned kMask2 = (kSize << 1) - 1;
+  struct Elem {
+    std::atomic<uint8_t> state;
+    Work w;
+  };
+  enum {
+    kEmpty,
+    kBusy,
+    kReady,
+  };
+  std::mutex mutex_;
+  // Low log(kSize) + 1 bits in front_ and back_ contain rolling index of
+  // front/back, repsectively. The remaining bits contain modification counters
+  // that are incremented on Push operations. This allows us to (1) distinguish
+  // between empty and full conditions (if we would use log(kSize) bits for
+  // position, these conditions would be indistinguishable); (2) obtain
+  // consistent snapshot of front_/back_ for Size operation using the
+  // modification counters.
+  std::atomic<unsigned> front_;
+  std::atomic<unsigned> back_;
+  Elem array_[kSize];
+
+  RunQueue(const RunQueue&) = delete;
+  void operator=(const RunQueue&) = delete;
+};
+
+}  // namespace Eigen
+
+#endif  // EIGEN_CXX11_THREADPOOL_RUNQUEUE_H_
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/ThreadPool/EventCount.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/ThreadPool/EventCount.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/ThreadPool/EventCount.h	(revision 3762)
@@ -0,0 +1,233 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2016 Dmitry Vyukov <dvyukov@google.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CXX11_THREADPOOL_EVENTCOUNT_H_
+#define EIGEN_CXX11_THREADPOOL_EVENTCOUNT_H_
+
+namespace Eigen {
+
+// EventCount allows to wait for arbitrary predicates in non-blocking
+// algorithms. Think of condition variable, but wait predicate does not need to
+// be protected by a mutex. Usage:
+// Waiting thread does:
+//
+//   if (predicate)
+//     return act();
+//   EventCount::Waiter& w = waiters[my_index];
+//   ec.Prewait(&w);
+//   if (predicate) {
+//     ec.CancelWait(&w);
+//     return act();
+//   }
+//   ec.CommitWait(&w);
+//
+// Notifying thread does:
+//
+//   predicate = true;
+//   ec.Notify(true);
+//
+// Notify is cheap if there are no waiting threads. Prewait/CommitWait are not
+// cheap, but they are executed only if the preceeding predicate check has
+// failed.
+//
+// Algorihtm outline:
+// There are two main variables: predicate (managed by user) and state_.
+// Operation closely resembles Dekker mutual algorithm:
+// https://en.wikipedia.org/wiki/Dekker%27s_algorithm
+// Waiting thread sets state_ then checks predicate, Notifying thread sets
+// predicate then checks state_. Due to seq_cst fences in between these
+// operations it is guaranteed than either waiter will see predicate change
+// and won't block, or notifying thread will see state_ change and will unblock
+// the waiter, or both. But it can't happen that both threads don't see each
+// other changes, which would lead to deadlock.
+class EventCount {
+ public:
+  class Waiter;
+
+  EventCount(MaxSizeVector<Waiter>& waiters) : waiters_(waiters) {
+    eigen_assert(waiters.size() < (1 << kWaiterBits) - 1);
+    // Initialize epoch to something close to overflow to test overflow.
+    state_ = kStackMask | (kEpochMask - kEpochInc * waiters.size() * 2);
+  }
+
+  ~EventCount() {
+    // Ensure there are no waiters.
+    eigen_plain_assert((state_.load() & (kStackMask | kWaiterMask)) == kStackMask);
+  }
+
+  // Prewait prepares for waiting.
+  // After calling this function the thread must re-check the wait predicate
+  // and call either CancelWait or CommitWait passing the same Waiter object.
+  void Prewait(Waiter* w) {
+    w->epoch = state_.fetch_add(kWaiterInc, std::memory_order_relaxed);
+    std::atomic_thread_fence(std::memory_order_seq_cst);
+  }
+
+  // CommitWait commits waiting.
+  void CommitWait(Waiter* w) {
+    w->state = Waiter::kNotSignaled;
+    // Modification epoch of this waiter.
+    uint64_t epoch =
+        (w->epoch & kEpochMask) +
+        (((w->epoch & kWaiterMask) >> kWaiterShift) << kEpochShift);
+    uint64_t state = state_.load(std::memory_order_seq_cst);
+    for (;;) {
+      if (int64_t((state & kEpochMask) - epoch) < 0) {
+        // The preceeding waiter has not decided on its fate. Wait until it
+        // calls either CancelWait or CommitWait, or is notified.
+        EIGEN_THREAD_YIELD();
+        state = state_.load(std::memory_order_seq_cst);
+        continue;
+      }
+      // We've already been notified.
+      if (int64_t((state & kEpochMask) - epoch) > 0) return;
+      // Remove this thread from prewait counter and add it to the waiter list.
+      eigen_assert((state & kWaiterMask) != 0);
+      uint64_t newstate = state - kWaiterInc + kEpochInc;
+      newstate = (newstate & ~kStackMask) | (w - &waiters_[0]);
+      if ((state & kStackMask) == kStackMask)
+        w->next.store(nullptr, std::memory_order_relaxed);
+      else
+        w->next.store(&waiters_[state & kStackMask], std::memory_order_relaxed);
+      if (state_.compare_exchange_weak(state, newstate,
+                                       std::memory_order_release))
+        break;
+    }
+    Park(w);
+  }
+
+  // CancelWait cancels effects of the previous Prewait call.
+  void CancelWait(Waiter* w) {
+    uint64_t epoch =
+        (w->epoch & kEpochMask) +
+        (((w->epoch & kWaiterMask) >> kWaiterShift) << kEpochShift);
+    uint64_t state = state_.load(std::memory_order_relaxed);
+    for (;;) {
+      if (int64_t((state & kEpochMask) - epoch) < 0) {
+        // The preceeding waiter has not decided on its fate. Wait until it
+        // calls either CancelWait or CommitWait, or is notified.
+        EIGEN_THREAD_YIELD();
+        state = state_.load(std::memory_order_relaxed);
+        continue;
+      }
+      // We've already been notified.
+      if (int64_t((state & kEpochMask) - epoch) > 0) return;
+      // Remove this thread from prewait counter.
+      eigen_assert((state & kWaiterMask) != 0);
+      if (state_.compare_exchange_weak(state, state - kWaiterInc + kEpochInc,
+                                       std::memory_order_relaxed))
+        return;
+    }
+  }
+
+  // Notify wakes one or all waiting threads.
+  // Must be called after changing the associated wait predicate.
+  void Notify(bool all) {
+    std::atomic_thread_fence(std::memory_order_seq_cst);
+    uint64_t state = state_.load(std::memory_order_acquire);
+    for (;;) {
+      // Easy case: no waiters.
+      if ((state & kStackMask) == kStackMask && (state & kWaiterMask) == 0)
+        return;
+      uint64_t waiters = (state & kWaiterMask) >> kWaiterShift;
+      uint64_t newstate;
+      if (all) {
+        // Reset prewait counter and empty wait list.
+        newstate = (state & kEpochMask) + (kEpochInc * waiters) + kStackMask;
+      } else if (waiters) {
+        // There is a thread in pre-wait state, unblock it.
+        newstate = state + kEpochInc - kWaiterInc;
+      } else {
+        // Pop a waiter from list and unpark it.
+        Waiter* w = &waiters_[state & kStackMask];
+        Waiter* wnext = w->next.load(std::memory_order_relaxed);
+        uint64_t next = kStackMask;
+        if (wnext != nullptr) next = wnext - &waiters_[0];
+        // Note: we don't add kEpochInc here. ABA problem on the lock-free stack
+        // can't happen because a waiter is re-pushed onto the stack only after
+        // it was in the pre-wait state which inevitably leads to epoch
+        // increment.
+        newstate = (state & kEpochMask) + next;
+      }
+      if (state_.compare_exchange_weak(state, newstate,
+                                       std::memory_order_acquire)) {
+        if (!all && waiters) return;  // unblocked pre-wait thread
+        if ((state & kStackMask) == kStackMask) return;
+        Waiter* w = &waiters_[state & kStackMask];
+        if (!all) w->next.store(nullptr, std::memory_order_relaxed);
+        Unpark(w);
+        return;
+      }
+    }
+  }
+
+  class Waiter {
+    friend class EventCount;
+    // Align to 128 byte boundary to prevent false sharing with other Waiter objects in the same vector.
+    EIGEN_ALIGN_TO_BOUNDARY(128) std::atomic<Waiter*> next;
+    std::mutex mu;
+    std::condition_variable cv;
+    uint64_t epoch;
+    unsigned state;
+    enum {
+      kNotSignaled,
+      kWaiting,
+      kSignaled,
+    };
+  };
+
+ private:
+  // State_ layout:
+  // - low kStackBits is a stack of waiters committed wait.
+  // - next kWaiterBits is count of waiters in prewait state.
+  // - next kEpochBits is modification counter.
+  static const uint64_t kStackBits = 16;
+  static const uint64_t kStackMask = (1ull << kStackBits) - 1;
+  static const uint64_t kWaiterBits = 16;
+  static const uint64_t kWaiterShift = 16;
+  static const uint64_t kWaiterMask = ((1ull << kWaiterBits) - 1)
+                                      << kWaiterShift;
+  static const uint64_t kWaiterInc = 1ull << kWaiterBits;
+  static const uint64_t kEpochBits = 32;
+  static const uint64_t kEpochShift = 32;
+  static const uint64_t kEpochMask = ((1ull << kEpochBits) - 1) << kEpochShift;
+  static const uint64_t kEpochInc = 1ull << kEpochShift;
+  std::atomic<uint64_t> state_;
+  MaxSizeVector<Waiter>& waiters_;
+
+  void Park(Waiter* w) {
+    std::unique_lock<std::mutex> lock(w->mu);
+    while (w->state != Waiter::kSignaled) {
+      w->state = Waiter::kWaiting;
+      w->cv.wait(lock);
+    }
+  }
+
+  void Unpark(Waiter* waiters) {
+    Waiter* next = nullptr;
+    for (Waiter* w = waiters; w; w = next) {
+      next = w->next.load(std::memory_order_relaxed);
+      unsigned state;
+      {
+        std::unique_lock<std::mutex> lock(w->mu);
+        state = w->state;
+        w->state = Waiter::kSignaled;
+      }
+      // Avoid notifying if it wasn't waiting.
+      if (state == Waiter::kWaiting) w->cv.notify_one();
+    }
+  }
+
+  EventCount(const EventCount&) = delete;
+  void operator=(const EventCount&) = delete;
+};
+
+}  // namespace Eigen
+
+#endif  // EIGEN_CXX11_THREADPOOL_EVENTCOUNT_H_
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/ThreadPool/SimpleThreadPool.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/ThreadPool/SimpleThreadPool.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/ThreadPool/SimpleThreadPool.h	(revision 3762)
@@ -0,0 +1,154 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2014 Benoit Steiner <benoit.steiner.goog@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CXX11_THREADPOOL_SIMPLE_THREAD_POOL_H
+#define EIGEN_CXX11_THREADPOOL_SIMPLE_THREAD_POOL_H
+
+namespace Eigen {
+
+// The implementation of the ThreadPool type ensures that the Schedule method
+// runs the functions it is provided in FIFO order when the scheduling is done
+// by a single thread.
+// Environment provides a way to create threads and also allows to intercept
+// task submission and execution.
+template <typename Environment>
+class SimpleThreadPoolTempl : public ThreadPoolInterface {
+ public:
+  // Construct a pool that contains "num_threads" threads.
+  explicit SimpleThreadPoolTempl(int num_threads, Environment env = Environment())
+      : env_(env), threads_(num_threads), waiters_(num_threads) {
+    for (int i = 0; i < num_threads; i++) {
+      threads_.push_back(env.CreateThread([this, i]() { WorkerLoop(i); }));
+    }
+  }
+
+  // Wait until all scheduled work has finished and then destroy the
+  // set of threads.
+  ~SimpleThreadPoolTempl() {
+    {
+      // Wait for all work to get done.
+      std::unique_lock<std::mutex> l(mu_);
+      while (!pending_.empty()) {
+        empty_.wait(l);
+      }
+      exiting_ = true;
+
+      // Wakeup all waiters.
+      for (auto w : waiters_) {
+        w->ready = true;
+        w->task.f = nullptr;
+        w->cv.notify_one();
+      }
+    }
+
+    // Wait for threads to finish.
+    for (auto t : threads_) {
+      delete t;
+    }
+  }
+
+  // Schedule fn() for execution in the pool of threads. The functions are
+  // executed in the order in which they are scheduled.
+  void Schedule(std::function<void()> fn) final {
+    Task t = env_.CreateTask(std::move(fn));
+    std::unique_lock<std::mutex> l(mu_);
+    if (waiters_.empty()) {
+      pending_.push_back(std::move(t));
+    } else {
+      Waiter* w = waiters_.back();
+      waiters_.pop_back();
+      w->ready = true;
+      w->task = std::move(t);
+      w->cv.notify_one();
+    }
+  }
+
+  int NumThreads() const final {
+    return static_cast<int>(threads_.size());
+  }
+
+  int CurrentThreadId() const final {
+    const PerThread* pt = this->GetPerThread();
+    if (pt->pool == this) {
+      return pt->thread_id;
+    } else {
+      return -1;
+    }
+  }
+
+ protected:
+  void WorkerLoop(int thread_id) {
+    std::unique_lock<std::mutex> l(mu_);
+    PerThread* pt = GetPerThread();
+    pt->pool = this;
+    pt->thread_id = thread_id;
+    Waiter w;
+    Task t;
+    while (!exiting_) {
+      if (pending_.empty()) {
+        // Wait for work to be assigned to me
+        w.ready = false;
+        waiters_.push_back(&w);
+        while (!w.ready) {
+          w.cv.wait(l);
+        }
+        t = w.task;
+        w.task.f = nullptr;
+      } else {
+        // Pick up pending work
+        t = std::move(pending_.front());
+        pending_.pop_front();
+        if (pending_.empty()) {
+          empty_.notify_all();
+        }
+      }
+      if (t.f) {
+        mu_.unlock();
+        env_.ExecuteTask(t);
+        t.f = nullptr;
+        mu_.lock();
+      }
+    }
+  }
+
+ private:
+  typedef typename Environment::Task Task;
+  typedef typename Environment::EnvThread Thread;
+
+  struct Waiter {
+    std::condition_variable cv;
+    Task task;
+    bool ready;
+  };
+
+  struct PerThread {
+    constexpr PerThread() : pool(NULL), thread_id(-1) { }
+    SimpleThreadPoolTempl* pool;  // Parent pool, or null for normal threads.
+    int thread_id;                // Worker thread index in pool.
+  };
+
+  Environment env_;
+  std::mutex mu_;
+  MaxSizeVector<Thread*> threads_;  // All threads
+  MaxSizeVector<Waiter*> waiters_;  // Stack of waiting threads.
+  std::deque<Task> pending_;        // Queue of pending work
+  std::condition_variable empty_;   // Signaled on pending_.empty()
+  bool exiting_ = false;
+
+  PerThread* GetPerThread() const {
+    EIGEN_THREAD_LOCAL PerThread per_thread;
+    return &per_thread;
+  }
+};
+
+typedef SimpleThreadPoolTempl<StlThreadEnvironment> SimpleThreadPool;
+
+}  // namespace Eigen
+
+#endif  // EIGEN_CXX11_THREADPOOL_SIMPLE_THREAD_POOL_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/ThreadPool/ThreadEnvironment.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/ThreadPool/ThreadEnvironment.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/src/ThreadPool/ThreadEnvironment.h	(revision 3762)
@@ -0,0 +1,38 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2014 Benoit Steiner <benoit.steiner.goog@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_CXX11_THREADPOOL_THREAD_ENVIRONMENT_H
+#define EIGEN_CXX11_THREADPOOL_THREAD_ENVIRONMENT_H
+
+namespace Eigen {
+
+struct StlThreadEnvironment {
+  struct Task {
+    std::function<void()> f;
+  };
+
+  // EnvThread constructor must start the thread,
+  // destructor must join the thread.
+  class EnvThread {
+   public:
+    EnvThread(std::function<void()> f) : thr_(std::move(f)) {}
+    ~EnvThread() { thr_.join(); }
+
+   private:
+    std::thread thr_;
+  };
+
+  EnvThread* CreateThread(std::function<void()> f) { return new EnvThread(std::move(f)); }
+  Task CreateTask(std::function<void()> f) { return Task{std::move(f)}; }
+  void ExecuteTask(const Task& t) { t.f(); }
+};
+
+}  // namespace Eigen
+
+#endif  // EIGEN_CXX11_THREADPOOL_THREAD_ENVIRONMENT_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/Tensor
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/Tensor	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/CXX11/Tensor	(revision 3762)
@@ -0,0 +1,154 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2014 Benoit Steiner <benoit.steiner.goog@gmail.com>
+// Copyright (C) 2013 Christian Seiler <christian@iwakd.de>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+//#ifndef EIGEN_CXX11_TENSOR_MODULE
+//#define EIGEN_CXX11_TENSOR_MODULE
+
+#include "../../../Eigen/Core"
+
+#ifdef EIGEN_USE_SYCL
+#undef min
+#undef max
+#undef isnan
+#undef isinf
+#undef isfinite
+#include <SYCL/sycl.hpp>
+#include <map>
+#include <memory>
+#include <utility>
+#endif
+
+#include <Eigen/src/Core/util/DisableStupidWarnings.h>
+
+#include "../SpecialFunctions"
+#include "src/util/CXX11Meta.h"
+#include "src/util/MaxSizeVector.h"
+
+/** \defgroup CXX11_Tensor_Module Tensor Module
+  *
+  * This module provides a Tensor class for storing arbitrarily indexed
+  * objects.
+  *
+  * \code
+  * #include <Eigen/CXX11/Tensor>
+  * \endcode
+  *
+  * Much of the documentation can be found \ref eigen_tensors "here".
+  */
+
+#include <cmath>
+#include <cstddef>
+#include <cstring>
+
+#ifdef _WIN32
+typedef __int16 int16_t;
+typedef unsigned __int16 uint16_t;
+typedef __int32 int32_t;
+typedef unsigned __int32 uint32_t;
+typedef __int64 int64_t;
+typedef unsigned __int64 uint64_t;
+#else
+#include <stdint.h>
+#endif
+
+#if __cplusplus > 199711 || EIGEN_COMP_MSVC >= 1900
+#include <random>
+#endif
+
+#ifdef _WIN32
+#include <windows.h>
+#elif defined(__APPLE__)
+#include <mach/mach_time.h>
+#else
+#include <time.h>
+#endif
+
+#ifdef EIGEN_USE_THREADS
+#include "ThreadPool"
+#endif
+
+#ifdef EIGEN_USE_GPU
+#include <iostream>
+#include <cuda_runtime.h>
+#if __cplusplus >= 201103L
+#include <atomic>
+#include <unistd.h>
+#endif
+#endif
+
+#include "src/Tensor/TensorMacros.h"
+#include "src/Tensor/TensorForwardDeclarations.h"
+#include "src/Tensor/TensorMeta.h"
+#include "src/Tensor/TensorFunctors.h"
+#include "src/Tensor/TensorCostModel.h"
+#include "src/Tensor/TensorDeviceDefault.h"
+#include "src/Tensor/TensorDeviceThreadPool.h"
+#include "src/Tensor/TensorDeviceCuda.h"
+#include "src/Tensor/TensorDeviceSycl.h"
+#include "src/Tensor/TensorIndexList.h"
+#include "src/Tensor/TensorDimensionList.h"
+#include "src/Tensor/TensorDimensions.h"
+#include "src/Tensor/TensorInitializer.h"
+#include "src/Tensor/TensorTraits.h"
+#include "src/Tensor/TensorRandom.h"
+#include "src/Tensor/TensorUInt128.h"
+#include "src/Tensor/TensorIntDiv.h"
+#include "src/Tensor/TensorGlobalFunctions.h"
+
+#include "src/Tensor/TensorBase.h"
+
+#include "src/Tensor/TensorEvaluator.h"
+#include "src/Tensor/TensorExpr.h"
+#include "src/Tensor/TensorReduction.h"
+#include "src/Tensor/TensorReductionCuda.h"
+#include "src/Tensor/TensorArgMax.h"
+#include "src/Tensor/TensorConcatenation.h"
+#include "src/Tensor/TensorContractionMapper.h"
+#include "src/Tensor/TensorContractionBlocking.h"
+#include "src/Tensor/TensorContraction.h"
+#include "src/Tensor/TensorContractionThreadPool.h"
+#include "src/Tensor/TensorContractionCuda.h"
+#include "src/Tensor/TensorConversion.h"
+#include "src/Tensor/TensorConvolution.h"
+#include "src/Tensor/TensorFFT.h"
+#include "src/Tensor/TensorPatch.h"
+#include "src/Tensor/TensorImagePatch.h"
+#include "src/Tensor/TensorVolumePatch.h"
+#include "src/Tensor/TensorBroadcasting.h"
+#include "src/Tensor/TensorChipping.h"
+#include "src/Tensor/TensorInflation.h"
+#include "src/Tensor/TensorLayoutSwap.h"
+#include "src/Tensor/TensorMorphing.h"
+#include "src/Tensor/TensorPadding.h"
+#include "src/Tensor/TensorReverse.h"
+#include "src/Tensor/TensorShuffling.h"
+#include "src/Tensor/TensorStriding.h"
+#include "src/Tensor/TensorCustomOp.h"
+#include "src/Tensor/TensorEvalTo.h"
+#include "src/Tensor/TensorForcedEval.h"
+#include "src/Tensor/TensorGenerator.h"
+#include "src/Tensor/TensorAssign.h"
+#include "src/Tensor/TensorScan.h"
+
+#include "src/Tensor/TensorSycl.h"
+#include "src/Tensor/TensorExecutor.h"
+#include "src/Tensor/TensorDevice.h"
+
+#include "src/Tensor/TensorStorage.h"
+#include "src/Tensor/Tensor.h"
+#include "src/Tensor/TensorFixedSize.h"
+#include "src/Tensor/TensorMap.h"
+#include "src/Tensor/TensorRef.h"
+
+#include "src/Tensor/TensorIO.h"
+
+#include <Eigen/src/Core/util/ReenableStupidWarnings.h>
+
+//#endif // EIGEN_CXX11_TENSOR_MODULE
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/IterativeSolvers/GMRES.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/IterativeSolvers/GMRES.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/IterativeSolvers/GMRES.h	(revision 3762)
@@ -0,0 +1,343 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2011 Gael Guennebaud <gael.guennebaud@inria.fr>
+// Copyright (C) 2012, 2014 Kolja Brix <brix@igpm.rwth-aaachen.de>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_GMRES_H
+#define EIGEN_GMRES_H
+
+namespace Eigen {
+
+namespace internal {
+
+/**
+* Generalized Minimal Residual Algorithm based on the
+* Arnoldi algorithm implemented with Householder reflections.
+*
+* Parameters:
+*  \param mat       matrix of linear system of equations
+*  \param rhs       right hand side vector of linear system of equations
+*  \param x         on input: initial guess, on output: solution
+*  \param precond   preconditioner used
+*  \param iters     on input: maximum number of iterations to perform
+*                   on output: number of iterations performed
+*  \param restart   number of iterations for a restart
+*  \param tol_error on input: relative residual tolerance
+*                   on output: residuum achieved
+*
+* \sa IterativeMethods::bicgstab()
+*
+*
+* For references, please see:
+*
+* Saad, Y. and Schultz, M. H.
+* GMRES: A Generalized Minimal Residual Algorithm for Solving Nonsymmetric Linear Systems.
+* SIAM J.Sci.Stat.Comp. 7, 1986, pp. 856 - 869.
+*
+* Saad, Y.
+* Iterative Methods for Sparse Linear Systems.
+* Society for Industrial and Applied Mathematics, Philadelphia, 2003.
+*
+* Walker, H. F.
+* Implementations of the GMRES method.
+* Comput.Phys.Comm. 53, 1989, pp. 311 - 320.
+*
+* Walker, H. F.
+* Implementation of the GMRES Method using Householder Transformations.
+* SIAM J.Sci.Stat.Comp. 9, 1988, pp. 152 - 163.
+*
+*/
+template<typename MatrixType, typename Rhs, typename Dest, typename Preconditioner>
+bool gmres(const MatrixType & mat, const Rhs & rhs, Dest & x, const Preconditioner & precond,
+    Index &iters, const Index &restart, typename Dest::RealScalar & tol_error) {
+
+  using std::sqrt;
+  using std::abs;
+
+  typedef typename Dest::RealScalar RealScalar;
+  typedef typename Dest::Scalar Scalar;
+  typedef Matrix < Scalar, Dynamic, 1 > VectorType;
+  typedef Matrix < Scalar, Dynamic, Dynamic, ColMajor> FMatrixType;
+
+  RealScalar tol = tol_error;
+  const Index maxIters = iters;
+  iters = 0;
+
+  const Index m = mat.rows();
+
+  // residual and preconditioned residual
+  VectorType p0 = rhs - mat*x;
+  VectorType r0 = precond.solve(p0);
+
+  const RealScalar r0Norm = r0.norm();
+
+  // is initial guess already good enough?
+  if(r0Norm == 0)
+  {
+    tol_error = 0;
+    return true;
+  }
+
+  // storage for Hessenberg matrix and Householder data
+  FMatrixType H   = FMatrixType::Zero(m, restart + 1);
+  VectorType w    = VectorType::Zero(restart + 1);
+  VectorType tau  = VectorType::Zero(restart + 1);
+
+  // storage for Jacobi rotations
+  std::vector < JacobiRotation < Scalar > > G(restart);
+  
+  // storage for temporaries
+  VectorType t(m), v(m), workspace(m), x_new(m);
+
+  // generate first Householder vector
+  Ref<VectorType> H0_tail = H.col(0).tail(m - 1);
+  RealScalar beta;
+  r0.makeHouseholder(H0_tail, tau.coeffRef(0), beta);
+  w(0) = Scalar(beta);
+  
+  for (Index k = 1; k <= restart; ++k)
+  {
+    ++iters;
+
+    v = VectorType::Unit(m, k - 1);
+
+    // apply Householder reflections H_{1} ... H_{k-1} to v
+    // TODO: use a HouseholderSequence
+    for (Index i = k - 1; i >= 0; --i) {
+      v.tail(m - i).applyHouseholderOnTheLeft(H.col(i).tail(m - i - 1), tau.coeffRef(i), workspace.data());
+    }
+
+    // apply matrix M to v:  v = mat * v;
+    t.noalias() = mat * v;
+    v = precond.solve(t);
+
+    // apply Householder reflections H_{k-1} ... H_{1} to v
+    // TODO: use a HouseholderSequence
+    for (Index i = 0; i < k; ++i) {
+      v.tail(m - i).applyHouseholderOnTheLeft(H.col(i).tail(m - i - 1), tau.coeffRef(i), workspace.data());
+    }
+
+    if (v.tail(m - k).norm() != 0.0)
+    {
+      if (k <= restart)
+      {
+        // generate new Householder vector
+        Ref<VectorType> Hk_tail = H.col(k).tail(m - k - 1);
+        v.tail(m - k).makeHouseholder(Hk_tail, tau.coeffRef(k), beta);
+
+        // apply Householder reflection H_{k} to v
+        v.tail(m - k).applyHouseholderOnTheLeft(Hk_tail, tau.coeffRef(k), workspace.data());
+      }
+    }
+
+    if (k > 1)
+    {
+      for (Index i = 0; i < k - 1; ++i)
+      {
+        // apply old Givens rotations to v
+        v.applyOnTheLeft(i, i + 1, G[i].adjoint());
+      }
+    }
+
+    if (k<m && v(k) != (Scalar) 0)
+    {
+      // determine next Givens rotation
+      G[k - 1].makeGivens(v(k - 1), v(k));
+
+      // apply Givens rotation to v and w
+      v.applyOnTheLeft(k - 1, k, G[k - 1].adjoint());
+      w.applyOnTheLeft(k - 1, k, G[k - 1].adjoint());
+    }
+
+    // insert coefficients into upper matrix triangle
+    H.col(k-1).head(k) = v.head(k);
+
+    tol_error = abs(w(k)) / r0Norm;
+    bool stop = (k==m || tol_error < tol || iters == maxIters);
+
+    if (stop || k == restart)
+    {
+      // solve upper triangular system
+      Ref<VectorType> y = w.head(k);
+      H.topLeftCorner(k, k).template triangularView <Upper>().solveInPlace(y);
+
+      // use Horner-like scheme to calculate solution vector
+      x_new.setZero();
+      for (Index i = k - 1; i >= 0; --i)
+      {
+        x_new(i) += y(i);
+        // apply Householder reflection H_{i} to x_new
+        x_new.tail(m - i).applyHouseholderOnTheLeft(H.col(i).tail(m - i - 1), tau.coeffRef(i), workspace.data());
+      }
+
+      x += x_new;
+
+      if(stop)
+      {
+        return true;
+      }
+      else
+      {
+        k=0;
+
+        // reset data for restart
+        p0.noalias() = rhs - mat*x;
+        r0 = precond.solve(p0);
+
+        // clear Hessenberg matrix and Householder data
+        H.setZero();
+        w.setZero();
+        tau.setZero();
+
+        // generate first Householder vector
+        r0.makeHouseholder(H0_tail, tau.coeffRef(0), beta);
+        w(0) = Scalar(beta);
+      }
+    }
+  }
+
+  return false;
+
+}
+
+}
+
+template< typename _MatrixType,
+          typename _Preconditioner = DiagonalPreconditioner<typename _MatrixType::Scalar> >
+class GMRES;
+
+namespace internal {
+
+template< typename _MatrixType, typename _Preconditioner>
+struct traits<GMRES<_MatrixType,_Preconditioner> >
+{
+  typedef _MatrixType MatrixType;
+  typedef _Preconditioner Preconditioner;
+};
+
+}
+
+/** \ingroup IterativeLinearSolvers_Module
+  * \brief A GMRES solver for sparse square problems
+  *
+  * This class allows to solve for A.x = b sparse linear problems using a generalized minimal
+  * residual method. The vectors x and b can be either dense or sparse.
+  *
+  * \tparam _MatrixType the type of the sparse matrix A, can be a dense or a sparse matrix.
+  * \tparam _Preconditioner the type of the preconditioner. Default is DiagonalPreconditioner
+  *
+  * The maximal number of iterations and tolerance value can be controlled via the setMaxIterations()
+  * and setTolerance() methods. The defaults are the size of the problem for the maximal number of iterations
+  * and NumTraits<Scalar>::epsilon() for the tolerance.
+  *
+  * This class can be used as the direct solver classes. Here is a typical usage example:
+  * \code
+  * int n = 10000;
+  * VectorXd x(n), b(n);
+  * SparseMatrix<double> A(n,n);
+  * // fill A and b
+  * GMRES<SparseMatrix<double> > solver(A);
+  * x = solver.solve(b);
+  * std::cout << "#iterations:     " << solver.iterations() << std::endl;
+  * std::cout << "estimated error: " << solver.error()      << std::endl;
+  * // update b, and solve again
+  * x = solver.solve(b);
+  * \endcode
+  *
+  * By default the iterations start with x=0 as an initial guess of the solution.
+  * One can control the start using the solveWithGuess() method.
+  * 
+  * GMRES can also be used in a matrix-free context, see the following \link MatrixfreeSolverExample example \endlink.
+  *
+  * \sa class SimplicialCholesky, DiagonalPreconditioner, IdentityPreconditioner
+  */
+template< typename _MatrixType, typename _Preconditioner>
+class GMRES : public IterativeSolverBase<GMRES<_MatrixType,_Preconditioner> >
+{
+  typedef IterativeSolverBase<GMRES> Base;
+  using Base::matrix;
+  using Base::m_error;
+  using Base::m_iterations;
+  using Base::m_info;
+  using Base::m_isInitialized;
+
+private:
+  Index m_restart;
+
+public:
+  using Base::_solve_impl;
+  typedef _MatrixType MatrixType;
+  typedef typename MatrixType::Scalar Scalar;
+  typedef typename MatrixType::RealScalar RealScalar;
+  typedef _Preconditioner Preconditioner;
+
+public:
+
+  /** Default constructor. */
+  GMRES() : Base(), m_restart(30) {}
+
+  /** Initialize the solver with matrix \a A for further \c Ax=b solving.
+    *
+    * This constructor is a shortcut for the default constructor followed
+    * by a call to compute().
+    *
+    * \warning this class stores a reference to the matrix A as well as some
+    * precomputed values that depend on it. Therefore, if \a A is changed
+    * this class becomes invalid. Call compute() to update it with the new
+    * matrix A, or modify a copy of A.
+    */
+  template<typename MatrixDerived>
+  explicit GMRES(const EigenBase<MatrixDerived>& A) : Base(A.derived()), m_restart(30) {}
+
+  ~GMRES() {}
+
+  /** Get the number of iterations after that a restart is performed.
+    */
+  Index get_restart() { return m_restart; }
+
+  /** Set the number of iterations after that a restart is performed.
+    *  \param restart   number of iterations for a restarti, default is 30.
+    */
+  void set_restart(const Index restart) { m_restart=restart; }
+
+  /** \internal */
+  template<typename Rhs,typename Dest>
+  void _solve_with_guess_impl(const Rhs& b, Dest& x) const
+  {
+    bool failed = false;
+    for(Index j=0; j<b.cols(); ++j)
+    {
+      m_iterations = Base::maxIterations();
+      m_error = Base::m_tolerance;
+
+      typename Dest::ColXpr xj(x,j);
+      if(!internal::gmres(matrix(), b.col(j), xj, Base::m_preconditioner, m_iterations, m_restart, m_error))
+        failed = true;
+    }
+    m_info = failed ? NumericalIssue
+          : m_error <= Base::m_tolerance ? Success
+          : NoConvergence;
+    m_isInitialized = true;
+  }
+
+  /** \internal */
+  template<typename Rhs,typename Dest>
+  void _solve_impl(const Rhs& b, MatrixBase<Dest> &x) const
+  {
+    x = b;
+    if(x.squaredNorm() == 0) return; // Check Zero right hand side
+    _solve_with_guess_impl(b,x.derived());
+  }
+
+protected:
+
+};
+
+} // end namespace Eigen
+
+#endif // EIGEN_GMRES_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/IterativeSolvers/MINRES.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/IterativeSolvers/MINRES.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/IterativeSolvers/MINRES.h	(revision 3762)
@@ -0,0 +1,289 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2012 Giacomo Po <gpo@ucla.edu>
+// Copyright (C) 2011-2014 Gael Guennebaud <gael.guennebaud@inria.fr>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+#ifndef EIGEN_MINRES_H_
+#define EIGEN_MINRES_H_
+
+
+namespace Eigen {
+    
+    namespace internal {
+        
+        /** \internal Low-level MINRES algorithm
+         * \param mat The matrix A
+         * \param rhs The right hand side vector b
+         * \param x On input and initial solution, on output the computed solution.
+         * \param precond A right preconditioner being able to efficiently solve for an
+         *                approximation of Ax=b (regardless of b)
+         * \param iters On input the max number of iteration, on output the number of performed iterations.
+         * \param tol_error On input the tolerance error, on output an estimation of the relative error.
+         */
+        template<typename MatrixType, typename Rhs, typename Dest, typename Preconditioner>
+        EIGEN_DONT_INLINE
+        void minres(const MatrixType& mat, const Rhs& rhs, Dest& x,
+                    const Preconditioner& precond, Index& iters,
+                    typename Dest::RealScalar& tol_error)
+        {
+            using std::sqrt;
+            typedef typename Dest::RealScalar RealScalar;
+            typedef typename Dest::Scalar Scalar;
+            typedef Matrix<Scalar,Dynamic,1> VectorType;
+
+            // Check for zero rhs
+            const RealScalar rhsNorm2(rhs.squaredNorm());
+            if(rhsNorm2 == 0)
+            {
+                x.setZero();
+                iters = 0;
+                tol_error = 0;
+                return;
+            }
+            
+            // initialize
+            const Index maxIters(iters);  // initialize maxIters to iters
+            const Index N(mat.cols());    // the size of the matrix
+            const RealScalar threshold2(tol_error*tol_error*rhsNorm2); // convergence threshold (compared to residualNorm2)
+            
+            // Initialize preconditioned Lanczos
+            VectorType v_old(N); // will be initialized inside loop
+            VectorType v( VectorType::Zero(N) ); //initialize v
+            VectorType v_new(rhs-mat*x); //initialize v_new
+            RealScalar residualNorm2(v_new.squaredNorm());
+            VectorType w(N); // will be initialized inside loop
+            VectorType w_new(precond.solve(v_new)); // initialize w_new
+//            RealScalar beta; // will be initialized inside loop
+            RealScalar beta_new2(v_new.dot(w_new));
+            eigen_assert(beta_new2 >= 0.0 && "PRECONDITIONER IS NOT POSITIVE DEFINITE");
+            RealScalar beta_new(sqrt(beta_new2));
+            const RealScalar beta_one(beta_new);
+            v_new /= beta_new;
+            w_new /= beta_new;
+            // Initialize other variables
+            RealScalar c(1.0); // the cosine of the Givens rotation
+            RealScalar c_old(1.0);
+            RealScalar s(0.0); // the sine of the Givens rotation
+            RealScalar s_old(0.0); // the sine of the Givens rotation
+            VectorType p_oold(N); // will be initialized in loop
+            VectorType p_old(VectorType::Zero(N)); // initialize p_old=0
+            VectorType p(p_old); // initialize p=0
+            RealScalar eta(1.0);
+                        
+            iters = 0; // reset iters
+            while ( iters < maxIters )
+            {
+                // Preconditioned Lanczos
+                /* Note that there are 4 variants on the Lanczos algorithm. These are
+                 * described in Paige, C. C. (1972). Computational variants of
+                 * the Lanczos method for the eigenproblem. IMA Journal of Applied
+                 * Mathematics, 10(3), 373–381. The current implementation corresponds 
+                 * to the case A(2,7) in the paper. It also corresponds to 
+                 * algorithm 6.14 in Y. Saad, Iterative Methods ￼￼￼for Sparse Linear
+                 * Systems, 2003 p.173. For the preconditioned version see 
+                 * A. Greenbaum, Iterative Methods for Solving Linear Systems, SIAM (1987).
+                 */
+                const RealScalar beta(beta_new);
+                v_old = v; // update: at first time step, this makes v_old = 0 so value of beta doesn't matter
+//                const VectorType v_old(v); // NOT SURE IF CREATING v_old EVERY ITERATION IS EFFICIENT
+                v = v_new; // update
+                w = w_new; // update
+//                const VectorType w(w_new); // NOT SURE IF CREATING w EVERY ITERATION IS EFFICIENT
+                v_new.noalias() = mat*w - beta*v_old; // compute v_new
+                const RealScalar alpha = v_new.dot(w);
+                v_new -= alpha*v; // overwrite v_new
+                w_new = precond.solve(v_new); // overwrite w_new
+                beta_new2 = v_new.dot(w_new); // compute beta_new
+                eigen_assert(beta_new2 >= 0.0 && "PRECONDITIONER IS NOT POSITIVE DEFINITE");
+                beta_new = sqrt(beta_new2); // compute beta_new
+                v_new /= beta_new; // overwrite v_new for next iteration
+                w_new /= beta_new; // overwrite w_new for next iteration
+                
+                // Givens rotation
+                const RealScalar r2 =s*alpha+c*c_old*beta; // s, s_old, c and c_old are still from previous iteration
+                const RealScalar r3 =s_old*beta; // s, s_old, c and c_old are still from previous iteration
+                const RealScalar r1_hat=c*alpha-c_old*s*beta;
+                const RealScalar r1 =sqrt( std::pow(r1_hat,2) + std::pow(beta_new,2) );
+                c_old = c; // store for next iteration
+                s_old = s; // store for next iteration
+                c=r1_hat/r1; // new cosine
+                s=beta_new/r1; // new sine
+                
+                // Update solution
+                p_oold = p_old;
+//                const VectorType p_oold(p_old); // NOT SURE IF CREATING p_oold EVERY ITERATION IS EFFICIENT
+                p_old = p;
+                p.noalias()=(w-r2*p_old-r3*p_oold) /r1; // IS NOALIAS REQUIRED?
+                x += beta_one*c*eta*p;
+                
+                /* Update the squared residual. Note that this is the estimated residual.
+                The real residual |Ax-b|^2 may be slightly larger */
+                residualNorm2 *= s*s;
+                
+                if ( residualNorm2 < threshold2)
+                {
+                    break;
+                }
+                
+                eta=-s*eta; // update eta
+                iters++; // increment iteration number (for output purposes)
+            }
+            
+            /* Compute error. Note that this is the estimated error. The real 
+             error |Ax-b|/|b| may be slightly larger */
+            tol_error = std::sqrt(residualNorm2 / rhsNorm2);
+        }
+        
+    }
+    
+    template< typename _MatrixType, int _UpLo=Lower,
+    typename _Preconditioner = IdentityPreconditioner>
+    class MINRES;
+    
+    namespace internal {
+        
+        template< typename _MatrixType, int _UpLo, typename _Preconditioner>
+        struct traits<MINRES<_MatrixType,_UpLo,_Preconditioner> >
+        {
+            typedef _MatrixType MatrixType;
+            typedef _Preconditioner Preconditioner;
+        };
+        
+    }
+    
+    /** \ingroup IterativeLinearSolvers_Module
+     * \brief A minimal residual solver for sparse symmetric problems
+     *
+     * This class allows to solve for A.x = b sparse linear problems using the MINRES algorithm
+     * of Paige and Saunders (1975). The sparse matrix A must be symmetric (possibly indefinite).
+     * The vectors x and b can be either dense or sparse.
+     *
+     * \tparam _MatrixType the type of the sparse matrix A, can be a dense or a sparse matrix.
+     * \tparam _UpLo the triangular part that will be used for the computations. It can be Lower,
+     *               Upper, or Lower|Upper in which the full matrix entries will be considered. Default is Lower.
+     * \tparam _Preconditioner the type of the preconditioner. Default is DiagonalPreconditioner
+     *
+     * The maximal number of iterations and tolerance value can be controlled via the setMaxIterations()
+     * and setTolerance() methods. The defaults are the size of the problem for the maximal number of iterations
+     * and NumTraits<Scalar>::epsilon() for the tolerance.
+     *
+     * This class can be used as the direct solver classes. Here is a typical usage example:
+     * \code
+     * int n = 10000;
+     * VectorXd x(n), b(n);
+     * SparseMatrix<double> A(n,n);
+     * // fill A and b
+     * MINRES<SparseMatrix<double> > mr;
+     * mr.compute(A);
+     * x = mr.solve(b);
+     * std::cout << "#iterations:     " << mr.iterations() << std::endl;
+     * std::cout << "estimated error: " << mr.error()      << std::endl;
+     * // update b, and solve again
+     * x = mr.solve(b);
+     * \endcode
+     *
+     * By default the iterations start with x=0 as an initial guess of the solution.
+     * One can control the start using the solveWithGuess() method.
+     *
+     * MINRES can also be used in a matrix-free context, see the following \link MatrixfreeSolverExample example \endlink.
+     *
+     * \sa class ConjugateGradient, BiCGSTAB, SimplicialCholesky, DiagonalPreconditioner, IdentityPreconditioner
+     */
+    template< typename _MatrixType, int _UpLo, typename _Preconditioner>
+    class MINRES : public IterativeSolverBase<MINRES<_MatrixType,_UpLo,_Preconditioner> >
+    {
+        
+        typedef IterativeSolverBase<MINRES> Base;
+        using Base::matrix;
+        using Base::m_error;
+        using Base::m_iterations;
+        using Base::m_info;
+        using Base::m_isInitialized;
+    public:
+        using Base::_solve_impl;
+        typedef _MatrixType MatrixType;
+        typedef typename MatrixType::Scalar Scalar;
+        typedef typename MatrixType::RealScalar RealScalar;
+        typedef _Preconditioner Preconditioner;
+        
+        enum {UpLo = _UpLo};
+        
+    public:
+        
+        /** Default constructor. */
+        MINRES() : Base() {}
+        
+        /** Initialize the solver with matrix \a A for further \c Ax=b solving.
+         *
+         * This constructor is a shortcut for the default constructor followed
+         * by a call to compute().
+         *
+         * \warning this class stores a reference to the matrix A as well as some
+         * precomputed values that depend on it. Therefore, if \a A is changed
+         * this class becomes invalid. Call compute() to update it with the new
+         * matrix A, or modify a copy of A.
+         */
+        template<typename MatrixDerived>
+        explicit MINRES(const EigenBase<MatrixDerived>& A) : Base(A.derived()) {}
+        
+        /** Destructor. */
+        ~MINRES(){}
+
+        /** \internal */
+        template<typename Rhs,typename Dest>
+        void _solve_with_guess_impl(const Rhs& b, Dest& x) const
+        {
+            typedef typename Base::MatrixWrapper MatrixWrapper;
+            typedef typename Base::ActualMatrixType ActualMatrixType;
+            enum {
+              TransposeInput  =   (!MatrixWrapper::MatrixFree)
+                              &&  (UpLo==(Lower|Upper))
+                              &&  (!MatrixType::IsRowMajor)
+                              &&  (!NumTraits<Scalar>::IsComplex)
+            };
+            typedef typename internal::conditional<TransposeInput,Transpose<const ActualMatrixType>, ActualMatrixType const&>::type RowMajorWrapper;
+            EIGEN_STATIC_ASSERT(EIGEN_IMPLIES(MatrixWrapper::MatrixFree,UpLo==(Lower|Upper)),MATRIX_FREE_CONJUGATE_GRADIENT_IS_COMPATIBLE_WITH_UPPER_UNION_LOWER_MODE_ONLY);
+            typedef typename internal::conditional<UpLo==(Lower|Upper),
+                                                  RowMajorWrapper,
+                                                  typename MatrixWrapper::template ConstSelfAdjointViewReturnType<UpLo>::Type
+                                            >::type SelfAdjointWrapper;
+
+            m_iterations = Base::maxIterations();
+            m_error = Base::m_tolerance;
+            RowMajorWrapper row_mat(matrix());
+            for(int j=0; j<b.cols(); ++j)
+            {
+                m_iterations = Base::maxIterations();
+                m_error = Base::m_tolerance;
+                
+                typename Dest::ColXpr xj(x,j);
+                internal::minres(SelfAdjointWrapper(row_mat), b.col(j), xj,
+                                 Base::m_preconditioner, m_iterations, m_error);
+            }
+            
+            m_isInitialized = true;
+            m_info = m_error <= Base::m_tolerance ? Success : NoConvergence;
+        }
+        
+        /** \internal */
+        template<typename Rhs,typename Dest>
+        void _solve_impl(const Rhs& b, MatrixBase<Dest> &x) const
+        {
+            x.setZero();
+            _solve_with_guess_impl(b,x.derived());
+        }
+        
+    protected:
+        
+    };
+
+} // end namespace Eigen
+
+#endif // EIGEN_MINRES_H
+
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/IterativeSolvers/IncompleteLU.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/IterativeSolvers/IncompleteLU.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/IterativeSolvers/IncompleteLU.h	(revision 3762)
@@ -0,0 +1,90 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2011 Gael Guennebaud <gael.guennebaud@inria.fr>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_INCOMPLETE_LU_H
+#define EIGEN_INCOMPLETE_LU_H
+
+namespace Eigen { 
+
+template <typename _Scalar>
+class IncompleteLU : public SparseSolverBase<IncompleteLU<_Scalar> >
+{
+  protected:
+    typedef SparseSolverBase<IncompleteLU<_Scalar> > Base;
+    using Base::m_isInitialized;
+    
+    typedef _Scalar Scalar;
+    typedef Matrix<Scalar,Dynamic,1> Vector;
+    typedef typename Vector::Index Index;
+    typedef SparseMatrix<Scalar,RowMajor> FactorType;
+
+  public:
+    typedef Matrix<Scalar,Dynamic,Dynamic> MatrixType;
+
+    IncompleteLU() {}
+
+    template<typename MatrixType>
+    IncompleteLU(const MatrixType& mat)
+    {
+      compute(mat);
+    }
+
+    Index rows() const { return m_lu.rows(); }
+    Index cols() const { return m_lu.cols(); }
+
+    template<typename MatrixType>
+    IncompleteLU& compute(const MatrixType& mat)
+    {
+      m_lu = mat;
+      int size = mat.cols();
+      Vector diag(size);
+      for(int i=0; i<size; ++i)
+      {
+        typename FactorType::InnerIterator k_it(m_lu,i);
+        for(; k_it && k_it.index()<i; ++k_it)
+        {
+          int k = k_it.index();
+          k_it.valueRef() /= diag(k);
+
+          typename FactorType::InnerIterator j_it(k_it);
+          typename FactorType::InnerIterator kj_it(m_lu, k);
+          while(kj_it && kj_it.index()<=k) ++kj_it;
+          for(++j_it; j_it; )
+          {
+            if(kj_it.index()==j_it.index())
+            {
+              j_it.valueRef() -= k_it.value() * kj_it.value();
+              ++j_it;
+              ++kj_it;
+            }
+            else if(kj_it.index()<j_it.index()) ++kj_it;
+            else                                ++j_it;
+          }
+        }
+        if(k_it && k_it.index()==i) diag(i) = k_it.value();
+        else                        diag(i) = 1;
+      }
+      m_isInitialized = true;
+      return *this;
+    }
+
+    template<typename Rhs, typename Dest>
+    void _solve_impl(const Rhs& b, Dest& x) const
+    {
+      x = m_lu.template triangularView<UnitLower>().solve(b);
+      x = m_lu.template triangularView<Upper>().solve(x);
+    }
+
+  protected:
+    FactorType m_lu;
+};
+
+} // end namespace Eigen
+
+#endif // EIGEN_INCOMPLETE_LU_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/IterativeSolvers/Scaling.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/IterativeSolvers/Scaling.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/IterativeSolvers/Scaling.h	(revision 3762)
@@ -0,0 +1,187 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2012 Desire NUENTSA WAKAM <desire.nuentsa_wakam@inria.fr
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_ITERSCALING_H
+#define EIGEN_ITERSCALING_H
+
+namespace Eigen {
+
+/**
+  * \ingroup IterativeSolvers_Module
+  * \brief iterative scaling algorithm to equilibrate rows and column norms in matrices
+  * 
+  * This class can be used as a preprocessing tool to accelerate the convergence of iterative methods 
+  * 
+  * This feature is  useful to limit the pivoting amount during LU/ILU factorization
+  * The  scaling strategy as presented here preserves the symmetry of the problem
+  * NOTE It is assumed that the matrix does not have empty row or column, 
+  * 
+  * Example with key steps 
+  * \code
+  * VectorXd x(n), b(n);
+  * SparseMatrix<double> A;
+  * // fill A and b;
+  * IterScaling<SparseMatrix<double> > scal; 
+  * // Compute the left and right scaling vectors. The matrix is equilibrated at output
+  * scal.computeRef(A); 
+  * // Scale the right hand side
+  * b = scal.LeftScaling().cwiseProduct(b); 
+  * // Now, solve the equilibrated linear system with any available solver
+  * 
+  * // Scale back the computed solution
+  * x = scal.RightScaling().cwiseProduct(x); 
+  * \endcode
+  * 
+  * \tparam _MatrixType the type of the matrix. It should be a real square sparsematrix
+  * 
+  * References : D. Ruiz and B. Ucar, A Symmetry Preserving Algorithm for Matrix Scaling, INRIA Research report RR-7552
+  * 
+  * \sa \ref IncompleteLUT 
+  */
+template<typename _MatrixType>
+class IterScaling
+{
+  public:
+    typedef _MatrixType MatrixType; 
+    typedef typename MatrixType::Scalar Scalar;
+    typedef typename MatrixType::Index Index;
+    
+  public:
+    IterScaling() { init(); }
+    
+    IterScaling(const MatrixType& matrix)
+    {
+      init();
+      compute(matrix);
+    }
+    
+    ~IterScaling() { }
+    
+    /** 
+     * Compute the left and right diagonal matrices to scale the input matrix @p mat
+     * 
+     * FIXME This algorithm will be modified such that the diagonal elements are permuted on the diagonal. 
+     * 
+     * \sa LeftScaling() RightScaling()
+     */
+    void compute (const MatrixType& mat)
+    {
+      using std::abs;
+      int m = mat.rows(); 
+      int n = mat.cols();
+      eigen_assert((m>0 && m == n) && "Please give a non - empty matrix");
+      m_left.resize(m); 
+      m_right.resize(n);
+      m_left.setOnes();
+      m_right.setOnes();
+      m_matrix = mat;
+      VectorXd Dr, Dc, DrRes, DcRes; // Temporary Left and right scaling vectors
+      Dr.resize(m); Dc.resize(n);
+      DrRes.resize(m); DcRes.resize(n);
+      double EpsRow = 1.0, EpsCol = 1.0;
+      int its = 0; 
+      do
+      { // Iterate until the infinite norm of each row and column is approximately 1
+        // Get the maximum value in each row and column
+        Dr.setZero(); Dc.setZero();
+        for (int k=0; k<m_matrix.outerSize(); ++k)
+        {
+          for (typename MatrixType::InnerIterator it(m_matrix, k); it; ++it)
+          {
+            if ( Dr(it.row()) < abs(it.value()) )
+              Dr(it.row()) = abs(it.value());
+            
+            if ( Dc(it.col()) < abs(it.value()) )
+              Dc(it.col()) = abs(it.value());
+          }
+        }
+        for (int i = 0; i < m; ++i) 
+        {
+          Dr(i) = std::sqrt(Dr(i));
+          Dc(i) = std::sqrt(Dc(i));
+        }
+        // Save the scaling factors 
+        for (int i = 0; i < m; ++i) 
+        {
+          m_left(i) /= Dr(i);
+          m_right(i) /= Dc(i);
+        }
+        // Scale the rows and the columns of the matrix
+        DrRes.setZero(); DcRes.setZero(); 
+        for (int k=0; k<m_matrix.outerSize(); ++k)
+        {
+          for (typename MatrixType::InnerIterator it(m_matrix, k); it; ++it)
+          {
+            it.valueRef() = it.value()/( Dr(it.row()) * Dc(it.col()) );
+            // Accumulate the norms of the row and column vectors   
+            if ( DrRes(it.row()) < abs(it.value()) )
+              DrRes(it.row()) = abs(it.value());
+            
+            if ( DcRes(it.col()) < abs(it.value()) )
+              DcRes(it.col()) = abs(it.value());
+          }
+        }  
+        DrRes.array() = (1-DrRes.array()).abs();
+        EpsRow = DrRes.maxCoeff();
+        DcRes.array() = (1-DcRes.array()).abs();
+        EpsCol = DcRes.maxCoeff();
+        its++;
+      }while ( (EpsRow >m_tol || EpsCol > m_tol) && (its < m_maxits) );
+      m_isInitialized = true;
+    }
+    /** Compute the left and right vectors to scale the vectors
+     * the input matrix is scaled with the computed vectors at output
+     * 
+     * \sa compute()
+     */
+    void computeRef (MatrixType& mat)
+    {
+      compute (mat);
+      mat = m_matrix;
+    }
+    /** Get the vector to scale the rows of the matrix 
+     */
+    VectorXd& LeftScaling()
+    {
+      return m_left;
+    }
+    
+    /** Get the vector to scale the columns of the matrix 
+     */
+    VectorXd& RightScaling()
+    {
+      return m_right;
+    }
+    
+    /** Set the tolerance for the convergence of the iterative scaling algorithm
+     */
+    void setTolerance(double tol)
+    {
+      m_tol = tol; 
+    }
+      
+  protected:
+    
+    void init()
+    {
+      m_tol = 1e-10;
+      m_maxits = 5;
+      m_isInitialized = false;
+    }
+    
+    MatrixType m_matrix;
+    mutable ComputationInfo m_info; 
+    bool m_isInitialized; 
+    VectorXd m_left; // Left scaling vector
+    VectorXd m_right; // m_right scaling vector
+    double m_tol; 
+    int m_maxits; // Maximum number of iterations allowed
+};
+}
+#endif
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/IterativeSolvers/ConstrainedConjGrad.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/IterativeSolvers/ConstrainedConjGrad.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/IterativeSolvers/ConstrainedConjGrad.h	(revision 3762)
@@ -0,0 +1,189 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2008 Gael Guennebaud <gael.guennebaud@inria.fr>
+
+/* NOTE The functions of this file have been adapted from the GMM++ library */
+
+//========================================================================
+//
+// Copyright (C) 2002-2007 Yves Renard
+//
+// This file is a part of GETFEM++
+//
+// Getfem++ is free software; you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as
+// published by the Free Software Foundation; version 2.1 of the License.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU Lesser General Public License for more details.
+// You should have received a copy of the GNU Lesser General Public
+// License along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301,
+// USA.
+//
+//========================================================================
+
+#include "../../../../Eigen/src/Core/util/NonMPL2.h"
+
+#ifndef EIGEN_CONSTRAINEDCG_H
+#define EIGEN_CONSTRAINEDCG_H
+
+#include <Eigen/Core>
+
+namespace Eigen { 
+
+namespace internal {
+
+/** \ingroup IterativeSolvers_Module
+  * Compute the pseudo inverse of the non-square matrix C such that
+  * \f$ CINV = (C * C^T)^{-1} * C \f$ based on a conjugate gradient method.
+  *
+  * This function is internally used by constrained_cg.
+  */
+template <typename CMatrix, typename CINVMatrix>
+void pseudo_inverse(const CMatrix &C, CINVMatrix &CINV)
+{
+  // optimisable : copie de la ligne, precalcul de C * trans(C).
+  typedef typename CMatrix::Scalar Scalar;
+  typedef typename CMatrix::Index Index;
+  // FIXME use sparse vectors ?
+  typedef Matrix<Scalar,Dynamic,1> TmpVec;
+
+  Index rows = C.rows(), cols = C.cols();
+
+  TmpVec d(rows), e(rows), l(cols), p(rows), q(rows), r(rows);
+  Scalar rho, rho_1, alpha;
+  d.setZero();
+
+  typedef Triplet<double> T;
+  std::vector<T> tripletList;
+    
+  for (Index i = 0; i < rows; ++i)
+  {
+    d[i] = 1.0;
+    rho = 1.0;
+    e.setZero();
+    r = d;
+    p = d;
+
+    while (rho >= 1e-38)
+    { /* conjugate gradient to compute e             */
+      /* which is the i-th row of inv(C * trans(C))  */
+      l = C.transpose() * p;
+      q = C * l;
+      alpha = rho / p.dot(q);
+      e +=  alpha * p;
+      r += -alpha * q;
+      rho_1 = rho;
+      rho = r.dot(r);
+      p = (rho/rho_1) * p + r;
+    }
+
+    l = C.transpose() * e; // l is the i-th row of CINV
+    // FIXME add a generic "prune/filter" expression for both dense and sparse object to sparse
+    for (Index j=0; j<l.size(); ++j)
+      if (l[j]<1e-15)
+	tripletList.push_back(T(i,j,l(j)));
+
+	
+    d[i] = 0.0;
+  }
+  CINV.setFromTriplets(tripletList.begin(), tripletList.end());
+}
+
+
+
+/** \ingroup IterativeSolvers_Module
+  * Constrained conjugate gradient
+  *
+  * Computes the minimum of \f$ 1/2((Ax).x) - bx \f$ under the contraint \f$ Cx \le f \f$
+  */
+template<typename TMatrix, typename CMatrix,
+         typename VectorX, typename VectorB, typename VectorF>
+void constrained_cg(const TMatrix& A, const CMatrix& C, VectorX& x,
+                       const VectorB& b, const VectorF& f, IterationController &iter)
+{
+  using std::sqrt;
+  typedef typename TMatrix::Scalar Scalar;
+  typedef typename TMatrix::Index Index;
+  typedef Matrix<Scalar,Dynamic,1>  TmpVec;
+
+  Scalar rho = 1.0, rho_1, lambda, gamma;
+  Index xSize = x.size();
+  TmpVec  p(xSize), q(xSize), q2(xSize),
+          r(xSize), old_z(xSize), z(xSize),
+          memox(xSize);
+  std::vector<bool> satured(C.rows());
+  p.setZero();
+  iter.setRhsNorm(sqrt(b.dot(b))); // gael vect_sp(PS, b, b)
+  if (iter.rhsNorm() == 0.0) iter.setRhsNorm(1.0);
+
+  SparseMatrix<Scalar,RowMajor> CINV(C.rows(), C.cols());
+  pseudo_inverse(C, CINV);
+
+  while(true)
+  {
+    // computation of residual
+    old_z = z;
+    memox = x;
+    r = b;
+    r += A * -x;
+    z = r;
+    bool transition = false;
+    for (Index i = 0; i < C.rows(); ++i)
+    {
+      Scalar al = C.row(i).dot(x) - f.coeff(i);
+      if (al >= -1.0E-15)
+      {
+        if (!satured[i])
+        {
+          satured[i] = true;
+          transition = true;
+        }
+        Scalar bb = CINV.row(i).dot(z);
+        if (bb > 0.0)
+          // FIXME: we should allow that: z += -bb * C.row(i);
+          for (typename CMatrix::InnerIterator it(C,i); it; ++it)
+            z.coeffRef(it.index()) -= bb*it.value();
+      }
+      else
+        satured[i] = false;
+    }
+
+    // descent direction
+    rho_1 = rho;
+    rho = r.dot(z);
+
+    if (iter.finished(rho)) break;
+
+    if (iter.noiseLevel() > 0 && transition) std::cerr << "CCG: transition\n";
+    if (transition || iter.first()) gamma = 0.0;
+    else gamma = (std::max)(0.0, (rho - old_z.dot(z)) / rho_1);
+    p = z + gamma*p;
+
+    ++iter;
+    // one dimensionnal optimization
+    q = A * p;
+    lambda = rho / q.dot(p);
+    for (Index i = 0; i < C.rows(); ++i)
+    {
+      if (!satured[i])
+      {
+        Scalar bb = C.row(i).dot(p) - f[i];
+        if (bb > 0.0)
+          lambda = (std::min)(lambda, (f.coeff(i)-C.row(i).dot(x)) / bb);
+      }
+    }
+    x += lambda * p;
+    memox -= x;
+  }
+}
+
+} // end namespace internal
+
+} // end namespace Eigen
+
+#endif // EIGEN_CONSTRAINEDCG_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/IterativeSolvers/DGMRES.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/IterativeSolvers/DGMRES.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/IterativeSolvers/DGMRES.h	(revision 3762)
@@ -0,0 +1,510 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2012 Désiré Nuentsa-Wakam <desire.nuentsa_wakam@inria.fr>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_DGMRES_H
+#define EIGEN_DGMRES_H
+
+#include <Eigen/Eigenvalues>
+
+namespace Eigen { 
+  
+template< typename _MatrixType,
+          typename _Preconditioner = DiagonalPreconditioner<typename _MatrixType::Scalar> >
+class DGMRES;
+
+namespace internal {
+
+template< typename _MatrixType, typename _Preconditioner>
+struct traits<DGMRES<_MatrixType,_Preconditioner> >
+{
+  typedef _MatrixType MatrixType;
+  typedef _Preconditioner Preconditioner;
+};
+
+/** \brief Computes a permutation vector to have a sorted sequence
+  * \param vec The vector to reorder.
+  * \param perm gives the sorted sequence on output. Must be initialized with 0..n-1
+  * \param ncut Put  the ncut smallest elements at the end of the vector
+  * WARNING This is an expensive sort, so should be used only 
+  * for small size vectors
+  * TODO Use modified QuickSplit or std::nth_element to get the smallest values 
+  */
+template <typename VectorType, typename IndexType>
+void sortWithPermutation (VectorType& vec, IndexType& perm, typename IndexType::Scalar& ncut)
+{
+  eigen_assert(vec.size() == perm.size());
+  bool flag; 
+  for (Index k  = 0; k < ncut; k++)
+  {
+    flag = false;
+    for (Index j = 0; j < vec.size()-1; j++)
+    {
+      if ( vec(perm(j)) < vec(perm(j+1)) )
+      {
+        std::swap(perm(j),perm(j+1)); 
+        flag = true;
+      }
+      if (!flag) break; // The vector is in sorted order
+    }
+  }
+}
+
+}
+/**
+ * \ingroup IterativeLInearSolvers_Module
+ * \brief A Restarted GMRES with deflation.
+ * This class implements a modification of the GMRES solver for
+ * sparse linear systems. The basis is built with modified 
+ * Gram-Schmidt. At each restart, a few approximated eigenvectors
+ * corresponding to the smallest eigenvalues are used to build a
+ * preconditioner for the next cycle. This preconditioner 
+ * for deflation can be combined with any other preconditioner, 
+ * the IncompleteLUT for instance. The preconditioner is applied 
+ * at right of the matrix and the combination is multiplicative.
+ * 
+ * \tparam _MatrixType the type of the sparse matrix A, can be a dense or a sparse matrix.
+ * \tparam _Preconditioner the type of the preconditioner. Default is DiagonalPreconditioner
+ * Typical usage :
+ * \code
+ * SparseMatrix<double> A;
+ * VectorXd x, b; 
+ * //Fill A and b ...
+ * DGMRES<SparseMatrix<double> > solver;
+ * solver.set_restart(30); // Set restarting value
+ * solver.setEigenv(1); // Set the number of eigenvalues to deflate
+ * solver.compute(A);
+ * x = solver.solve(b);
+ * \endcode
+ * 
+ * DGMRES can also be used in a matrix-free context, see the following \link MatrixfreeSolverExample example \endlink.
+ *
+ * References :
+ * [1] D. NUENTSA WAKAM and F. PACULL, Memory Efficient Hybrid
+ *  Algebraic Solvers for Linear Systems Arising from Compressible
+ *  Flows, Computers and Fluids, In Press,
+ *  http://dx.doi.org/10.1016/j.compfluid.2012.03.023   
+ * [2] K. Burrage and J. Erhel, On the performance of various 
+ * adaptive preconditioned GMRES strategies, 5(1998), 101-121.
+ * [3] J. Erhel, K. Burrage and B. Pohl, Restarted GMRES 
+ *  preconditioned by deflation,J. Computational and Applied
+ *  Mathematics, 69(1996), 303-318. 
+
+ * 
+ */
+template< typename _MatrixType, typename _Preconditioner>
+class DGMRES : public IterativeSolverBase<DGMRES<_MatrixType,_Preconditioner> >
+{
+    typedef IterativeSolverBase<DGMRES> Base;
+    using Base::matrix;
+    using Base::m_error;
+    using Base::m_iterations;
+    using Base::m_info;
+    using Base::m_isInitialized;
+    using Base::m_tolerance; 
+  public:
+    using Base::_solve_impl;
+    typedef _MatrixType MatrixType;
+    typedef typename MatrixType::Scalar Scalar;
+    typedef typename MatrixType::StorageIndex StorageIndex;
+    typedef typename MatrixType::RealScalar RealScalar;
+    typedef _Preconditioner Preconditioner;
+    typedef Matrix<Scalar,Dynamic,Dynamic> DenseMatrix; 
+    typedef Matrix<RealScalar,Dynamic,Dynamic> DenseRealMatrix; 
+    typedef Matrix<Scalar,Dynamic,1> DenseVector;
+    typedef Matrix<RealScalar,Dynamic,1> DenseRealVector; 
+    typedef Matrix<std::complex<RealScalar>, Dynamic, 1> ComplexVector;
+ 
+    
+  /** Default constructor. */
+  DGMRES() : Base(),m_restart(30),m_neig(0),m_r(0),m_maxNeig(5),m_isDeflAllocated(false),m_isDeflInitialized(false) {}
+
+  /** Initialize the solver with matrix \a A for further \c Ax=b solving.
+    * 
+    * This constructor is a shortcut for the default constructor followed
+    * by a call to compute().
+    * 
+    * \warning this class stores a reference to the matrix A as well as some
+    * precomputed values that depend on it. Therefore, if \a A is changed
+    * this class becomes invalid. Call compute() to update it with the new
+    * matrix A, or modify a copy of A.
+    */
+  template<typename MatrixDerived>
+  explicit DGMRES(const EigenBase<MatrixDerived>& A) : Base(A.derived()), m_restart(30),m_neig(0),m_r(0),m_maxNeig(5),m_isDeflAllocated(false),m_isDeflInitialized(false) {}
+
+  ~DGMRES() {}
+  
+  /** \internal */
+  template<typename Rhs,typename Dest>
+  void _solve_with_guess_impl(const Rhs& b, Dest& x) const
+  {    
+    bool failed = false;
+    for(Index j=0; j<b.cols(); ++j)
+    {
+      m_iterations = Base::maxIterations();
+      m_error = Base::m_tolerance;
+      
+      typename Dest::ColXpr xj(x,j);
+      dgmres(matrix(), b.col(j), xj, Base::m_preconditioner);
+    }
+    m_info = failed ? NumericalIssue
+           : m_error <= Base::m_tolerance ? Success
+           : NoConvergence;
+    m_isInitialized = true;
+  }
+
+  /** \internal */
+  template<typename Rhs,typename Dest>
+  void _solve_impl(const Rhs& b, MatrixBase<Dest>& x) const
+  {
+    x = b;
+    _solve_with_guess_impl(b,x.derived());
+  }
+  /** 
+   * Get the restart value
+    */
+  Index restart() { return m_restart; }
+  
+  /** 
+   * Set the restart value (default is 30)  
+   */
+  void set_restart(const Index restart) { m_restart=restart; }
+  
+  /** 
+   * Set the number of eigenvalues to deflate at each restart 
+   */
+  void setEigenv(const Index neig) 
+  {
+    m_neig = neig;
+    if (neig+1 > m_maxNeig) m_maxNeig = neig+1; // To allow for complex conjugates
+  }
+  
+  /** 
+   * Get the size of the deflation subspace size
+   */ 
+  Index deflSize() {return m_r; }
+  
+  /**
+   * Set the maximum size of the deflation subspace
+   */
+  void setMaxEigenv(const Index maxNeig) { m_maxNeig = maxNeig; }
+  
+  protected:
+    // DGMRES algorithm 
+    template<typename Rhs, typename Dest>
+    void dgmres(const MatrixType& mat,const Rhs& rhs, Dest& x, const Preconditioner& precond) const;
+    // Perform one cycle of GMRES
+    template<typename Dest>
+    Index dgmresCycle(const MatrixType& mat, const Preconditioner& precond, Dest& x, DenseVector& r0, RealScalar& beta, const RealScalar& normRhs, Index& nbIts) const; 
+    // Compute data to use for deflation 
+    Index dgmresComputeDeflationData(const MatrixType& mat, const Preconditioner& precond, const Index& it, StorageIndex& neig) const;
+    // Apply deflation to a vector
+    template<typename RhsType, typename DestType>
+    Index dgmresApplyDeflation(const RhsType& In, DestType& Out) const; 
+    ComplexVector schurValues(const ComplexSchur<DenseMatrix>& schurofH) const;
+    ComplexVector schurValues(const RealSchur<DenseMatrix>& schurofH) const;
+    // Init data for deflation
+    void dgmresInitDeflation(Index& rows) const; 
+    mutable DenseMatrix m_V; // Krylov basis vectors
+    mutable DenseMatrix m_H; // Hessenberg matrix 
+    mutable DenseMatrix m_Hes; // Initial hessenberg matrix wihout Givens rotations applied
+    mutable Index m_restart; // Maximum size of the Krylov subspace
+    mutable DenseMatrix m_U; // Vectors that form the basis of the invariant subspace 
+    mutable DenseMatrix m_MU; // matrix operator applied to m_U (for next cycles)
+    mutable DenseMatrix m_T; /* T=U^T*M^{-1}*A*U */
+    mutable PartialPivLU<DenseMatrix> m_luT; // LU factorization of m_T
+    mutable StorageIndex m_neig; //Number of eigenvalues to extract at each restart
+    mutable Index m_r; // Current number of deflated eigenvalues, size of m_U
+    mutable Index m_maxNeig; // Maximum number of eigenvalues to deflate
+    mutable RealScalar m_lambdaN; //Modulus of the largest eigenvalue of A
+    mutable bool m_isDeflAllocated;
+    mutable bool m_isDeflInitialized;
+    
+    //Adaptive strategy 
+    mutable RealScalar m_smv; // Smaller multiple of the remaining number of steps allowed
+    mutable bool m_force; // Force the use of deflation at each restart
+    
+}; 
+/** 
+ * \brief Perform several cycles of restarted GMRES with modified Gram Schmidt, 
+ * 
+ * A right preconditioner is used combined with deflation.
+ * 
+ */
+template< typename _MatrixType, typename _Preconditioner>
+template<typename Rhs, typename Dest>
+void DGMRES<_MatrixType, _Preconditioner>::dgmres(const MatrixType& mat,const Rhs& rhs, Dest& x,
+              const Preconditioner& precond) const
+{
+  //Initialization
+  Index n = mat.rows(); 
+  DenseVector r0(n); 
+  Index nbIts = 0; 
+  m_H.resize(m_restart+1, m_restart);
+  m_Hes.resize(m_restart, m_restart);
+  m_V.resize(n,m_restart+1);
+  //Initial residual vector and intial norm
+  x = precond.solve(x);
+  r0 = rhs - mat * x; 
+  RealScalar beta = r0.norm(); 
+  RealScalar normRhs = rhs.norm();
+  m_error = beta/normRhs; 
+  if(m_error < m_tolerance)
+    m_info = Success; 
+  else
+    m_info = NoConvergence;
+  
+  // Iterative process
+  while (nbIts < m_iterations && m_info == NoConvergence)
+  {
+    dgmresCycle(mat, precond, x, r0, beta, normRhs, nbIts); 
+    
+    // Compute the new residual vector for the restart 
+    if (nbIts < m_iterations && m_info == NoConvergence)
+      r0 = rhs - mat * x; 
+  }
+} 
+
+/**
+ * \brief Perform one restart cycle of DGMRES
+ * \param mat The coefficient matrix
+ * \param precond The preconditioner
+ * \param x the new approximated solution
+ * \param r0 The initial residual vector
+ * \param beta The norm of the residual computed so far
+ * \param normRhs The norm of the right hand side vector
+ * \param nbIts The number of iterations
+ */
+template< typename _MatrixType, typename _Preconditioner>
+template<typename Dest>
+Index DGMRES<_MatrixType, _Preconditioner>::dgmresCycle(const MatrixType& mat, const Preconditioner& precond, Dest& x, DenseVector& r0, RealScalar& beta, const RealScalar& normRhs, Index& nbIts) const
+{
+  //Initialization 
+  DenseVector g(m_restart+1); // Right hand side of the least square problem
+  g.setZero();  
+  g(0) = Scalar(beta); 
+  m_V.col(0) = r0/beta; 
+  m_info = NoConvergence; 
+  std::vector<JacobiRotation<Scalar> >gr(m_restart); // Givens rotations
+  Index it = 0; // Number of inner iterations 
+  Index n = mat.rows();
+  DenseVector tv1(n), tv2(n);  //Temporary vectors
+  while (m_info == NoConvergence && it < m_restart && nbIts < m_iterations)
+  {    
+    // Apply preconditioner(s) at right
+    if (m_isDeflInitialized )
+    {
+      dgmresApplyDeflation(m_V.col(it), tv1); // Deflation
+      tv2 = precond.solve(tv1); 
+    }
+    else
+    {
+      tv2 = precond.solve(m_V.col(it)); // User's selected preconditioner
+    }
+    tv1 = mat * tv2; 
+   
+    // Orthogonalize it with the previous basis in the basis using modified Gram-Schmidt
+    Scalar coef; 
+    for (Index i = 0; i <= it; ++i)
+    { 
+      coef = tv1.dot(m_V.col(i));
+      tv1 = tv1 - coef * m_V.col(i); 
+      m_H(i,it) = coef; 
+      m_Hes(i,it) = coef; 
+    }
+    // Normalize the vector 
+    coef = tv1.norm(); 
+    m_V.col(it+1) = tv1/coef;
+    m_H(it+1, it) = coef;
+//     m_Hes(it+1,it) = coef; 
+    
+    // FIXME Check for happy breakdown 
+    
+    // Update Hessenberg matrix with Givens rotations
+    for (Index i = 1; i <= it; ++i) 
+    {
+      m_H.col(it).applyOnTheLeft(i-1,i,gr[i-1].adjoint());
+    }
+    // Compute the new plane rotation 
+    gr[it].makeGivens(m_H(it, it), m_H(it+1,it)); 
+    // Apply the new rotation
+    m_H.col(it).applyOnTheLeft(it,it+1,gr[it].adjoint());
+    g.applyOnTheLeft(it,it+1, gr[it].adjoint()); 
+    
+    beta = std::abs(g(it+1));
+    m_error = beta/normRhs; 
+    // std::cerr << nbIts << " Relative Residual Norm " << m_error << std::endl;
+    it++; nbIts++; 
+    
+    if (m_error < m_tolerance)
+    {
+      // The method has converged
+      m_info = Success;
+      break;
+    }
+  }
+  
+  // Compute the new coefficients by solving the least square problem
+//   it++;
+  //FIXME  Check first if the matrix is singular ... zero diagonal
+  DenseVector nrs(m_restart); 
+  nrs = m_H.topLeftCorner(it,it).template triangularView<Upper>().solve(g.head(it)); 
+  
+  // Form the new solution
+  if (m_isDeflInitialized)
+  {
+    tv1 = m_V.leftCols(it) * nrs; 
+    dgmresApplyDeflation(tv1, tv2); 
+    x = x + precond.solve(tv2);
+  }
+  else
+    x = x + precond.solve(m_V.leftCols(it) * nrs); 
+  
+  // Go for a new cycle and compute data for deflation
+  if(nbIts < m_iterations && m_info == NoConvergence && m_neig > 0 && (m_r+m_neig) < m_maxNeig)
+    dgmresComputeDeflationData(mat, precond, it, m_neig); 
+  return 0; 
+  
+}
+
+
+template< typename _MatrixType, typename _Preconditioner>
+void DGMRES<_MatrixType, _Preconditioner>::dgmresInitDeflation(Index& rows) const
+{
+  m_U.resize(rows, m_maxNeig);
+  m_MU.resize(rows, m_maxNeig); 
+  m_T.resize(m_maxNeig, m_maxNeig);
+  m_lambdaN = 0.0; 
+  m_isDeflAllocated = true; 
+}
+
+template< typename _MatrixType, typename _Preconditioner>
+inline typename DGMRES<_MatrixType, _Preconditioner>::ComplexVector DGMRES<_MatrixType, _Preconditioner>::schurValues(const ComplexSchur<DenseMatrix>& schurofH) const
+{
+  return schurofH.matrixT().diagonal();
+}
+
+template< typename _MatrixType, typename _Preconditioner>
+inline typename DGMRES<_MatrixType, _Preconditioner>::ComplexVector DGMRES<_MatrixType, _Preconditioner>::schurValues(const RealSchur<DenseMatrix>& schurofH) const
+{
+  const DenseMatrix& T = schurofH.matrixT();
+  Index it = T.rows();
+  ComplexVector eig(it);
+  Index j = 0;
+  while (j < it-1)
+  {
+    if (T(j+1,j) ==Scalar(0))
+    {
+      eig(j) = std::complex<RealScalar>(T(j,j),RealScalar(0)); 
+      j++; 
+    }
+    else
+    {
+      eig(j) = std::complex<RealScalar>(T(j,j),T(j+1,j)); 
+      eig(j+1) = std::complex<RealScalar>(T(j,j+1),T(j+1,j+1));
+      j++;
+    }
+  }
+  if (j < it-1) eig(j) = std::complex<RealScalar>(T(j,j),RealScalar(0));
+  return eig;
+}
+
+template< typename _MatrixType, typename _Preconditioner>
+Index DGMRES<_MatrixType, _Preconditioner>::dgmresComputeDeflationData(const MatrixType& mat, const Preconditioner& precond, const Index& it, StorageIndex& neig) const
+{
+  // First, find the Schur form of the Hessenberg matrix H
+  typename internal::conditional<NumTraits<Scalar>::IsComplex, ComplexSchur<DenseMatrix>, RealSchur<DenseMatrix> >::type schurofH; 
+  bool computeU = true;
+  DenseMatrix matrixQ(it,it); 
+  matrixQ.setIdentity();
+  schurofH.computeFromHessenberg(m_Hes.topLeftCorner(it,it), matrixQ, computeU); 
+  
+  ComplexVector eig(it);
+  Matrix<StorageIndex,Dynamic,1>perm(it);
+  eig = this->schurValues(schurofH);
+  
+  // Reorder the absolute values of Schur values
+  DenseRealVector modulEig(it); 
+  for (Index j=0; j<it; ++j) modulEig(j) = std::abs(eig(j)); 
+  perm.setLinSpaced(it,0,internal::convert_index<StorageIndex>(it-1));
+  internal::sortWithPermutation(modulEig, perm, neig);
+  
+  if (!m_lambdaN)
+  {
+    m_lambdaN = (std::max)(modulEig.maxCoeff(), m_lambdaN);
+  }
+  //Count the real number of extracted eigenvalues (with complex conjugates)
+  Index nbrEig = 0; 
+  while (nbrEig < neig)
+  {
+    if(eig(perm(it-nbrEig-1)).imag() == RealScalar(0)) nbrEig++; 
+    else nbrEig += 2; 
+  }
+  // Extract the  Schur vectors corresponding to the smallest Ritz values
+  DenseMatrix Sr(it, nbrEig); 
+  Sr.setZero();
+  for (Index j = 0; j < nbrEig; j++)
+  {
+    Sr.col(j) = schurofH.matrixU().col(perm(it-j-1));
+  }
+  
+  // Form the Schur vectors of the initial matrix using the Krylov basis
+  DenseMatrix X; 
+  X = m_V.leftCols(it) * Sr;
+  if (m_r)
+  {
+   // Orthogonalize X against m_U using modified Gram-Schmidt
+   for (Index j = 0; j < nbrEig; j++)
+     for (Index k =0; k < m_r; k++)
+      X.col(j) = X.col(j) - (m_U.col(k).dot(X.col(j)))*m_U.col(k); 
+  }
+  
+  // Compute m_MX = A * M^-1 * X
+  Index m = m_V.rows();
+  if (!m_isDeflAllocated) 
+    dgmresInitDeflation(m); 
+  DenseMatrix MX(m, nbrEig);
+  DenseVector tv1(m);
+  for (Index j = 0; j < nbrEig; j++)
+  {
+    tv1 = mat * X.col(j);
+    MX.col(j) = precond.solve(tv1);
+  }
+  
+  //Update m_T = [U'MU U'MX; X'MU X'MX]
+  m_T.block(m_r, m_r, nbrEig, nbrEig) = X.transpose() * MX; 
+  if(m_r)
+  {
+    m_T.block(0, m_r, m_r, nbrEig) = m_U.leftCols(m_r).transpose() * MX; 
+    m_T.block(m_r, 0, nbrEig, m_r) = X.transpose() * m_MU.leftCols(m_r);
+  }
+  
+  // Save X into m_U and m_MX in m_MU
+  for (Index j = 0; j < nbrEig; j++) m_U.col(m_r+j) = X.col(j);
+  for (Index j = 0; j < nbrEig; j++) m_MU.col(m_r+j) = MX.col(j);
+  // Increase the size of the invariant subspace
+  m_r += nbrEig; 
+  
+  // Factorize m_T into m_luT
+  m_luT.compute(m_T.topLeftCorner(m_r, m_r));
+  
+  //FIXME CHeck if the factorization was correctly done (nonsingular matrix)
+  m_isDeflInitialized = true;
+  return 0; 
+}
+template<typename _MatrixType, typename _Preconditioner>
+template<typename RhsType, typename DestType>
+Index DGMRES<_MatrixType, _Preconditioner>::dgmresApplyDeflation(const RhsType &x, DestType &y) const
+{
+  DenseVector x1 = m_U.leftCols(m_r).transpose() * x; 
+  y = x + m_U.leftCols(m_r) * ( m_lambdaN * m_luT.solve(x1) - x1);
+  return 0; 
+}
+
+} // end namespace Eigen
+#endif 
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/IterativeSolvers/IterationController.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/IterativeSolvers/IterationController.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/IterativeSolvers/IterationController.h	(revision 3762)
@@ -0,0 +1,154 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2008-2009 Gael Guennebaud <gael.guennebaud@inria.fr>
+
+/* NOTE The class IterationController has been adapted from the iteration
+ *      class of the GMM++ and ITL libraries.
+ */
+
+//=======================================================================
+// Copyright (C) 1997-2001
+// Authors: Andrew Lumsdaine <lums@osl.iu.edu> 
+//          Lie-Quan Lee     <llee@osl.iu.edu>
+//
+// This file is part of the Iterative Template Library
+//
+// You should have received a copy of the License Agreement for the
+// Iterative Template Library along with the software;  see the
+// file LICENSE.  
+//
+// Permission to modify the code and to distribute modified code is
+// granted, provided the text of this NOTICE is retained, a notice that
+// the code was modified is included with the above COPYRIGHT NOTICE and
+// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE
+// file is distributed with the modified code.
+//
+// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED.
+// By way of example, but not limitation, Licensor MAKES NO
+// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY
+// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS
+// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS
+// OR OTHER RIGHTS.
+//=======================================================================
+
+//========================================================================
+//
+// Copyright (C) 2002-2007 Yves Renard
+//
+// This file is a part of GETFEM++
+//
+// Getfem++ is free software; you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as
+// published by the Free Software Foundation; version 2.1 of the License.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU Lesser General Public License for more details.
+// You should have received a copy of the GNU Lesser General Public
+// License along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301,
+// USA.
+//
+//========================================================================
+
+#include "../../../../Eigen/src/Core/util/NonMPL2.h"
+
+#ifndef EIGEN_ITERATION_CONTROLLER_H
+#define EIGEN_ITERATION_CONTROLLER_H
+
+namespace Eigen { 
+
+/** \ingroup IterativeSolvers_Module
+  * \class IterationController
+  *
+  * \brief Controls the iterations of the iterative solvers
+  *
+  * This class has been adapted from the iteration class of GMM++ and ITL libraries.
+  *
+  */
+class IterationController
+{
+  protected :
+    double m_rhsn;        ///< Right hand side norm
+    size_t m_maxiter;     ///< Max. number of iterations
+    int m_noise;          ///< if noise > 0 iterations are printed
+    double m_resmax;      ///< maximum residual
+    double m_resminreach, m_resadd;
+    size_t m_nit;         ///< iteration number
+    double m_res;         ///< last computed residual
+    bool m_written;
+    void (*m_callback)(const IterationController&);
+  public :
+
+    void init()
+    {
+      m_nit = 0; m_res = 0.0; m_written = false;
+      m_resminreach = 1E50; m_resadd = 0.0;
+      m_callback = 0;
+    }
+
+    IterationController(double r = 1.0E-8, int noi = 0, size_t mit = size_t(-1))
+      : m_rhsn(1.0), m_maxiter(mit), m_noise(noi), m_resmax(r) { init(); }
+
+    void operator ++(int) { m_nit++; m_written = false; m_resadd += m_res; }
+    void operator ++() { (*this)++; }
+
+    bool first() { return m_nit == 0; }
+
+    /* get/set the "noisyness" (verbosity) of the solvers */
+    int noiseLevel() const { return m_noise; }
+    void setNoiseLevel(int n) { m_noise = n; }
+    void reduceNoiseLevel() { if (m_noise > 0) m_noise--; }
+
+    double maxResidual() const { return m_resmax; }
+    void setMaxResidual(double r) { m_resmax = r; }
+
+    double residual() const { return m_res; }
+
+    /* change the user-definable callback, called after each iteration */
+    void setCallback(void (*t)(const IterationController&))
+    {
+      m_callback = t;
+    }
+
+    size_t iteration() const { return m_nit; }
+    void setIteration(size_t i) { m_nit = i; }
+
+    size_t maxIterarions() const { return m_maxiter; }
+    void setMaxIterations(size_t i) { m_maxiter = i; }
+
+    double rhsNorm() const { return m_rhsn; }
+    void setRhsNorm(double r) { m_rhsn = r; }
+
+    bool converged() const { return m_res <= m_rhsn * m_resmax; }
+    bool converged(double nr)
+    {
+      using std::abs;
+      m_res = abs(nr); 
+      m_resminreach = (std::min)(m_resminreach, m_res);
+      return converged();
+    }
+    template<typename VectorType> bool converged(const VectorType &v)
+    { return converged(v.squaredNorm()); }
+
+    bool finished(double nr)
+    {
+      if (m_callback) m_callback(*this);
+      if (m_noise > 0 && !m_written)
+      {
+        converged(nr);
+        m_written = true;
+      }
+      return (m_nit >= m_maxiter || converged(nr));
+    }
+    template <typename VectorType>
+    bool finished(const MatrixBase<VectorType> &v)
+    { return finished(double(v.squaredNorm())); }
+
+};
+
+} // end namespace Eigen
+
+#endif // EIGEN_ITERATION_CONTROLLER_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/LevenbergMarquardt/LMqrsolv.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/LevenbergMarquardt/LMqrsolv.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/LevenbergMarquardt/LMqrsolv.h	(revision 3762)
@@ -0,0 +1,188 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2009 Thomas Capricelli <orzel@freehackers.org>
+// Copyright (C) 2012 Desire Nuentsa <desire.nuentsa_wakam@inria.fr>
+//
+// This code initially comes from MINPACK whose original authors are:
+// Copyright Jorge More - Argonne National Laboratory
+// Copyright Burt Garbow - Argonne National Laboratory
+// Copyright Ken Hillstrom - Argonne National Laboratory
+//
+// This Source Code Form is subject to the terms of the Minpack license
+// (a BSD-like license) described in the campaigned CopyrightMINPACK.txt file.
+
+#ifndef EIGEN_LMQRSOLV_H
+#define EIGEN_LMQRSOLV_H
+
+namespace Eigen { 
+
+namespace internal {
+
+template <typename Scalar,int Rows, int Cols, typename PermIndex>
+void lmqrsolv(
+  Matrix<Scalar,Rows,Cols> &s,
+  const PermutationMatrix<Dynamic,Dynamic,PermIndex> &iPerm,
+  const Matrix<Scalar,Dynamic,1> &diag,
+  const Matrix<Scalar,Dynamic,1> &qtb,
+  Matrix<Scalar,Dynamic,1> &x,
+  Matrix<Scalar,Dynamic,1> &sdiag)
+{
+    /* Local variables */
+    Index i, j, k;
+    Scalar temp;
+    Index n = s.cols();
+    Matrix<Scalar,Dynamic,1>  wa(n);
+    JacobiRotation<Scalar> givens;
+
+    /* Function Body */
+    // the following will only change the lower triangular part of s, including
+    // the diagonal, though the diagonal is restored afterward
+
+    /*     copy r and (q transpose)*b to preserve input and initialize s. */
+    /*     in particular, save the diagonal elements of r in x. */
+    x = s.diagonal();
+    wa = qtb;
+    
+   
+    s.topLeftCorner(n,n).template triangularView<StrictlyLower>() = s.topLeftCorner(n,n).transpose();
+    /*     eliminate the diagonal matrix d using a givens rotation. */
+    for (j = 0; j < n; ++j) {
+
+        /*        prepare the row of d to be eliminated, locating the */
+        /*        diagonal element using p from the qr factorization. */
+        const PermIndex l = iPerm.indices()(j);
+        if (diag[l] == 0.)
+            break;
+        sdiag.tail(n-j).setZero();
+        sdiag[j] = diag[l];
+
+        /*        the transformations to eliminate the row of d */
+        /*        modify only a single element of (q transpose)*b */
+        /*        beyond the first n, which is initially zero. */
+        Scalar qtbpj = 0.;
+        for (k = j; k < n; ++k) {
+            /*           determine a givens rotation which eliminates the */
+            /*           appropriate element in the current row of d. */
+            givens.makeGivens(-s(k,k), sdiag[k]);
+
+            /*           compute the modified diagonal element of r and */
+            /*           the modified element of ((q transpose)*b,0). */
+            s(k,k) = givens.c() * s(k,k) + givens.s() * sdiag[k];
+            temp = givens.c() * wa[k] + givens.s() * qtbpj;
+            qtbpj = -givens.s() * wa[k] + givens.c() * qtbpj;
+            wa[k] = temp;
+
+            /*           accumulate the tranformation in the row of s. */
+            for (i = k+1; i<n; ++i) {
+                temp = givens.c() * s(i,k) + givens.s() * sdiag[i];
+                sdiag[i] = -givens.s() * s(i,k) + givens.c() * sdiag[i];
+                s(i,k) = temp;
+            }
+        }
+    }
+  
+    /*     solve the triangular system for z. if the system is */
+    /*     singular, then obtain a least squares solution. */
+    Index nsing;
+    for(nsing=0; nsing<n && sdiag[nsing]!=0; nsing++) {}
+
+    wa.tail(n-nsing).setZero();
+    s.topLeftCorner(nsing, nsing).transpose().template triangularView<Upper>().solveInPlace(wa.head(nsing));
+  
+    // restore
+    sdiag = s.diagonal();
+    s.diagonal() = x;
+
+    /* permute the components of z back to components of x. */
+    x = iPerm * wa; 
+}
+
+template <typename Scalar, int _Options, typename Index>
+void lmqrsolv(
+  SparseMatrix<Scalar,_Options,Index> &s,
+  const PermutationMatrix<Dynamic,Dynamic> &iPerm,
+  const Matrix<Scalar,Dynamic,1> &diag,
+  const Matrix<Scalar,Dynamic,1> &qtb,
+  Matrix<Scalar,Dynamic,1> &x,
+  Matrix<Scalar,Dynamic,1> &sdiag)
+{
+  /* Local variables */
+  typedef SparseMatrix<Scalar,RowMajor,Index> FactorType;
+    Index i, j, k, l;
+    Scalar temp;
+    Index n = s.cols();
+    Matrix<Scalar,Dynamic,1>  wa(n);
+    JacobiRotation<Scalar> givens;
+
+    /* Function Body */
+    // the following will only change the lower triangular part of s, including
+    // the diagonal, though the diagonal is restored afterward
+
+    /*     copy r and (q transpose)*b to preserve input and initialize R. */
+    wa = qtb;
+    FactorType R(s);
+    // Eliminate the diagonal matrix d using a givens rotation
+    for (j = 0; j < n; ++j)
+    {
+      // Prepare the row of d to be eliminated, locating the 
+      // diagonal element using p from the qr factorization
+      l = iPerm.indices()(j);
+      if (diag(l) == Scalar(0)) 
+        break; 
+      sdiag.tail(n-j).setZero();
+      sdiag[j] = diag[l];
+      // the transformations to eliminate the row of d
+      // modify only a single element of (q transpose)*b
+      // beyond the first n, which is initially zero. 
+      
+      Scalar qtbpj = 0; 
+      // Browse the nonzero elements of row j of the upper triangular s
+      for (k = j; k < n; ++k)
+      {
+        typename FactorType::InnerIterator itk(R,k);
+        for (; itk; ++itk){
+          if (itk.index() < k) continue;
+          else break;
+        }
+        //At this point, we have the diagonal element R(k,k)
+        // Determine a givens rotation which eliminates 
+        // the appropriate element in the current row of d
+        givens.makeGivens(-itk.value(), sdiag(k));
+        
+        // Compute the modified diagonal element of r and 
+        // the modified element of ((q transpose)*b,0).
+        itk.valueRef() = givens.c() * itk.value() + givens.s() * sdiag(k);
+        temp = givens.c() * wa(k) + givens.s() * qtbpj; 
+        qtbpj = -givens.s() * wa(k) + givens.c() * qtbpj;
+        wa(k) = temp;
+        
+        // Accumulate the transformation in the remaining k row/column of R
+        for (++itk; itk; ++itk)
+        {
+          i = itk.index();
+          temp = givens.c() *  itk.value() + givens.s() * sdiag(i);
+          sdiag(i) = -givens.s() * itk.value() + givens.c() * sdiag(i);
+          itk.valueRef() = temp;
+        }
+      }
+    }
+    
+    // Solve the triangular system for z. If the system is 
+    // singular, then obtain a least squares solution
+    Index nsing;
+    for(nsing = 0; nsing<n && sdiag(nsing) !=0; nsing++) {}
+    
+    wa.tail(n-nsing).setZero();
+//     x = wa; 
+    wa.head(nsing) = R.topLeftCorner(nsing,nsing).template triangularView<Upper>().solve/*InPlace*/(wa.head(nsing));
+    
+    sdiag = R.diagonal();
+    // Permute the components of z back to components of x
+    x = iPerm * wa; 
+}
+} // end namespace internal
+
+} // end namespace Eigen
+
+#endif // EIGEN_LMQRSOLV_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/LevenbergMarquardt/CopyrightMINPACK.txt
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/LevenbergMarquardt/CopyrightMINPACK.txt	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/LevenbergMarquardt/CopyrightMINPACK.txt	(revision 3762)
@@ -0,0 +1,52 @@
+Minpack Copyright Notice (1999) University of Chicago.  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. The end-user documentation included with the
+redistribution, if any, must include the following
+acknowledgment:
+
+   "This product includes software developed by the
+   University of Chicago, as Operator of Argonne National
+   Laboratory.
+
+Alternately, this acknowledgment may appear in the software
+itself, if and wherever such third-party acknowledgments
+normally appear.
+
+4. WARRANTY DISCLAIMER. THE SOFTWARE IS SUPPLIED "AS IS"
+WITHOUT WARRANTY OF ANY KIND. THE COPYRIGHT HOLDER, THE
+UNITED STATES, THE UNITED STATES DEPARTMENT OF ENERGY, AND
+THEIR EMPLOYEES: (1) DISCLAIM ANY WARRANTIES, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO ANY IMPLIED WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE
+OR NON-INFRINGEMENT, (2) DO NOT ASSUME ANY LEGAL LIABILITY
+OR RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR
+USEFULNESS OF THE SOFTWARE, (3) DO NOT REPRESENT THAT USE OF
+THE SOFTWARE WOULD NOT INFRINGE PRIVATELY OWNED RIGHTS, (4)
+DO NOT WARRANT THAT THE SOFTWARE WILL FUNCTION
+UNINTERRUPTED, THAT IT IS ERROR-FREE OR THAT ANY ERRORS WILL
+BE CORRECTED.
+
+5. LIMITATION OF LIABILITY. IN NO EVENT WILL THE COPYRIGHT
+HOLDER, THE UNITED STATES, THE UNITED STATES DEPARTMENT OF
+ENERGY, OR THEIR EMPLOYEES: BE LIABLE FOR ANY INDIRECT,
+INCIDENTAL, CONSEQUENTIAL, SPECIAL OR PUNITIVE DAMAGES OF
+ANY KIND OR NATURE, INCLUDING BUT NOT LIMITED TO LOSS OF
+PROFITS OR LOSS OF DATA, FOR ANY REASON WHATSOEVER, WHETHER
+SUCH LIABILITY IS ASSERTED ON THE BASIS OF CONTRACT, TORT
+(INCLUDING NEGLIGENCE OR STRICT LIABILITY), OR OTHERWISE,
+EVEN IF ANY OF SAID PARTIES HAS BEEN WARNED OF THE
+POSSIBILITY OF SUCH LOSS OR DAMAGES.
+

Property changes on: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/LevenbergMarquardt/CopyrightMINPACK.txt
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/LevenbergMarquardt/LMcovar.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/LevenbergMarquardt/LMcovar.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/LevenbergMarquardt/LMcovar.h	(revision 3762)
@@ -0,0 +1,84 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// This code initially comes from MINPACK whose original authors are:
+// Copyright Jorge More - Argonne National Laboratory
+// Copyright Burt Garbow - Argonne National Laboratory
+// Copyright Ken Hillstrom - Argonne National Laboratory
+//
+// This Source Code Form is subject to the terms of the Minpack license
+// (a BSD-like license) described in the campaigned CopyrightMINPACK.txt file.
+
+#ifndef EIGEN_LMCOVAR_H
+#define EIGEN_LMCOVAR_H
+
+namespace Eigen { 
+
+namespace internal {
+
+template <typename Scalar>
+void covar(
+        Matrix< Scalar, Dynamic, Dynamic > &r,
+        const VectorXi& ipvt,
+        Scalar tol = std::sqrt(NumTraits<Scalar>::epsilon()) )
+{
+    using std::abs;
+    /* Local variables */
+    Index i, j, k, l, ii, jj;
+    bool sing;
+    Scalar temp;
+
+    /* Function Body */
+    const Index n = r.cols();
+    const Scalar tolr = tol * abs(r(0,0));
+    Matrix< Scalar, Dynamic, 1 > wa(n);
+    eigen_assert(ipvt.size()==n);
+
+    /* form the inverse of r in the full upper triangle of r. */
+    l = -1;
+    for (k = 0; k < n; ++k)
+        if (abs(r(k,k)) > tolr) {
+            r(k,k) = 1. / r(k,k);
+            for (j = 0; j <= k-1; ++j) {
+                temp = r(k,k) * r(j,k);
+                r(j,k) = 0.;
+                r.col(k).head(j+1) -= r.col(j).head(j+1) * temp;
+            }
+            l = k;
+        }
+
+    /* form the full upper triangle of the inverse of (r transpose)*r */
+    /* in the full upper triangle of r. */
+    for (k = 0; k <= l; ++k) {
+        for (j = 0; j <= k-1; ++j)
+            r.col(j).head(j+1) += r.col(k).head(j+1) * r(j,k);
+        r.col(k).head(k+1) *= r(k,k);
+    }
+
+    /* form the full lower triangle of the covariance matrix */
+    /* in the strict lower triangle of r and in wa. */
+    for (j = 0; j < n; ++j) {
+        jj = ipvt[j];
+        sing = j > l;
+        for (i = 0; i <= j; ++i) {
+            if (sing)
+                r(i,j) = 0.;
+            ii = ipvt[i];
+            if (ii > jj)
+                r(ii,jj) = r(i,j);
+            if (ii < jj)
+                r(jj,ii) = r(i,j);
+        }
+        wa[jj] = r(j,j);
+    }
+
+    /* symmetrize the covariance matrix in r. */
+    r.topLeftCorner(n,n).template triangularView<StrictlyUpper>() = r.topLeftCorner(n,n).transpose();
+    r.diagonal() = wa;
+}
+
+} // end namespace internal
+
+} // end namespace Eigen
+
+#endif // EIGEN_LMCOVAR_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/LevenbergMarquardt/LMonestep.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/LevenbergMarquardt/LMonestep.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/LevenbergMarquardt/LMonestep.h	(revision 3762)
@@ -0,0 +1,202 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2009 Thomas Capricelli <orzel@freehackers.org>
+//
+// This code initially comes from MINPACK whose original authors are:
+// Copyright Jorge More - Argonne National Laboratory
+// Copyright Burt Garbow - Argonne National Laboratory
+// Copyright Ken Hillstrom - Argonne National Laboratory
+//
+// This Source Code Form is subject to the terms of the Minpack license
+// (a BSD-like license) described in the campaigned CopyrightMINPACK.txt file.
+
+#ifndef EIGEN_LMONESTEP_H
+#define EIGEN_LMONESTEP_H
+
+namespace Eigen {
+
+template<typename FunctorType>
+LevenbergMarquardtSpace::Status
+LevenbergMarquardt<FunctorType>::minimizeOneStep(FVectorType  &x)
+{
+  using std::abs;
+  using std::sqrt;
+  RealScalar temp, temp1,temp2; 
+  RealScalar ratio; 
+  RealScalar pnorm, xnorm, fnorm1, actred, dirder, prered;
+  eigen_assert(x.size()==n); // check the caller is not cheating us
+
+  temp = 0.0; xnorm = 0.0;
+  /* calculate the jacobian matrix. */
+  Index df_ret = m_functor.df(x, m_fjac);
+  if (df_ret<0)
+      return LevenbergMarquardtSpace::UserAsked;
+  if (df_ret>0)
+      // numerical diff, we evaluated the function df_ret times
+      m_nfev += df_ret;
+  else m_njev++;
+
+  /* compute the qr factorization of the jacobian. */
+  for (int j = 0; j < x.size(); ++j)
+    m_wa2(j) = m_fjac.col(j).blueNorm();
+  QRSolver qrfac(m_fjac);
+  if(qrfac.info() != Success) {
+    m_info = NumericalIssue;
+    return LevenbergMarquardtSpace::ImproperInputParameters;
+  }
+  // Make a copy of the first factor with the associated permutation
+  m_rfactor = qrfac.matrixR();
+  m_permutation = (qrfac.colsPermutation());
+
+  /* on the first iteration and if external scaling is not used, scale according */
+  /* to the norms of the columns of the initial jacobian. */
+  if (m_iter == 1) {
+      if (!m_useExternalScaling)
+          for (Index j = 0; j < n; ++j)
+              m_diag[j] = (m_wa2[j]==0.)? 1. : m_wa2[j];
+
+      /* on the first iteration, calculate the norm of the scaled x */
+      /* and initialize the step bound m_delta. */
+      xnorm = m_diag.cwiseProduct(x).stableNorm();
+      m_delta = m_factor * xnorm;
+      if (m_delta == 0.)
+          m_delta = m_factor;
+  }
+
+  /* form (q transpose)*m_fvec and store the first n components in */
+  /* m_qtf. */
+  m_wa4 = m_fvec;
+  m_wa4 = qrfac.matrixQ().adjoint() * m_fvec; 
+  m_qtf = m_wa4.head(n);
+
+  /* compute the norm of the scaled gradient. */
+  m_gnorm = 0.;
+  if (m_fnorm != 0.)
+      for (Index j = 0; j < n; ++j)
+          if (m_wa2[m_permutation.indices()[j]] != 0.)
+              m_gnorm = (std::max)(m_gnorm, abs( m_rfactor.col(j).head(j+1).dot(m_qtf.head(j+1)/m_fnorm) / m_wa2[m_permutation.indices()[j]]));
+
+  /* test for convergence of the gradient norm. */
+  if (m_gnorm <= m_gtol) {
+    m_info = Success;
+    return LevenbergMarquardtSpace::CosinusTooSmall;
+  }
+
+  /* rescale if necessary. */
+  if (!m_useExternalScaling)
+      m_diag = m_diag.cwiseMax(m_wa2);
+
+  do {
+    /* determine the levenberg-marquardt parameter. */
+    internal::lmpar2(qrfac, m_diag, m_qtf, m_delta, m_par, m_wa1);
+
+    /* store the direction p and x + p. calculate the norm of p. */
+    m_wa1 = -m_wa1;
+    m_wa2 = x + m_wa1;
+    pnorm = m_diag.cwiseProduct(m_wa1).stableNorm();
+
+    /* on the first iteration, adjust the initial step bound. */
+    if (m_iter == 1)
+        m_delta = (std::min)(m_delta,pnorm);
+
+    /* evaluate the function at x + p and calculate its norm. */
+    if ( m_functor(m_wa2, m_wa4) < 0)
+        return LevenbergMarquardtSpace::UserAsked;
+    ++m_nfev;
+    fnorm1 = m_wa4.stableNorm();
+
+    /* compute the scaled actual reduction. */
+    actred = -1.;
+    if (Scalar(.1) * fnorm1 < m_fnorm)
+        actred = 1. - numext::abs2(fnorm1 / m_fnorm);
+
+    /* compute the scaled predicted reduction and */
+    /* the scaled directional derivative. */
+    m_wa3 = m_rfactor.template triangularView<Upper>() * (m_permutation.inverse() *m_wa1);
+    temp1 = numext::abs2(m_wa3.stableNorm() / m_fnorm);
+    temp2 = numext::abs2(sqrt(m_par) * pnorm / m_fnorm);
+    prered = temp1 + temp2 / Scalar(.5);
+    dirder = -(temp1 + temp2);
+
+    /* compute the ratio of the actual to the predicted */
+    /* reduction. */
+    ratio = 0.;
+    if (prered != 0.)
+        ratio = actred / prered;
+
+    /* update the step bound. */
+    if (ratio <= Scalar(.25)) {
+        if (actred >= 0.)
+            temp = RealScalar(.5);
+        if (actred < 0.)
+            temp = RealScalar(.5) * dirder / (dirder + RealScalar(.5) * actred);
+        if (RealScalar(.1) * fnorm1 >= m_fnorm || temp < RealScalar(.1))
+            temp = Scalar(.1);
+        /* Computing MIN */
+        m_delta = temp * (std::min)(m_delta, pnorm / RealScalar(.1));
+        m_par /= temp;
+    } else if (!(m_par != 0. && ratio < RealScalar(.75))) {
+        m_delta = pnorm / RealScalar(.5);
+        m_par = RealScalar(.5) * m_par;
+    }
+
+    /* test for successful iteration. */
+    if (ratio >= RealScalar(1e-4)) {
+        /* successful iteration. update x, m_fvec, and their norms. */
+        x = m_wa2;
+        m_wa2 = m_diag.cwiseProduct(x);
+        m_fvec = m_wa4;
+        xnorm = m_wa2.stableNorm();
+        m_fnorm = fnorm1;
+        ++m_iter;
+    }
+
+    /* tests for convergence. */
+    if (abs(actred) <= m_ftol && prered <= m_ftol && Scalar(.5) * ratio <= 1. && m_delta <= m_xtol * xnorm)
+    {
+       m_info = Success;
+      return LevenbergMarquardtSpace::RelativeErrorAndReductionTooSmall;
+    }
+    if (abs(actred) <= m_ftol && prered <= m_ftol && Scalar(.5) * ratio <= 1.) 
+    {
+      m_info = Success;
+      return LevenbergMarquardtSpace::RelativeReductionTooSmall;
+    }
+    if (m_delta <= m_xtol * xnorm)
+    {
+      m_info = Success;
+      return LevenbergMarquardtSpace::RelativeErrorTooSmall;
+    }
+
+    /* tests for termination and stringent tolerances. */
+    if (m_nfev >= m_maxfev) 
+    {
+      m_info = NoConvergence;
+      return LevenbergMarquardtSpace::TooManyFunctionEvaluation;
+    }
+    if (abs(actred) <= NumTraits<Scalar>::epsilon() && prered <= NumTraits<Scalar>::epsilon() && Scalar(.5) * ratio <= 1.)
+    {
+      m_info = Success;
+      return LevenbergMarquardtSpace::FtolTooSmall;
+    }
+    if (m_delta <= NumTraits<Scalar>::epsilon() * xnorm) 
+    {
+      m_info = Success;
+      return LevenbergMarquardtSpace::XtolTooSmall;
+    }
+    if (m_gnorm <= NumTraits<Scalar>::epsilon())
+    {
+      m_info = Success;
+      return LevenbergMarquardtSpace::GtolTooSmall;
+    }
+
+  } while (ratio < Scalar(1e-4));
+
+  return LevenbergMarquardtSpace::Running;
+}
+
+  
+} // end namespace Eigen
+
+#endif // EIGEN_LMONESTEP_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/LevenbergMarquardt/LevenbergMarquardt.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/LevenbergMarquardt/LevenbergMarquardt.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/LevenbergMarquardt/LevenbergMarquardt.h	(revision 3762)
@@ -0,0 +1,396 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2009 Thomas Capricelli <orzel@freehackers.org>
+// Copyright (C) 2012 Desire Nuentsa <desire.nuentsa_wakam@inria.fr>
+//
+// The algorithm of this class initially comes from MINPACK whose original authors are:
+// Copyright Jorge More - Argonne National Laboratory
+// Copyright Burt Garbow - Argonne National Laboratory
+// Copyright Ken Hillstrom - Argonne National Laboratory
+//
+// This Source Code Form is subject to the terms of the Minpack license
+// (a BSD-like license) described in the campaigned CopyrightMINPACK.txt file.
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_LEVENBERGMARQUARDT_H
+#define EIGEN_LEVENBERGMARQUARDT_H
+
+
+namespace Eigen {
+namespace LevenbergMarquardtSpace {
+    enum Status {
+        NotStarted = -2,
+        Running = -1,
+        ImproperInputParameters = 0,
+        RelativeReductionTooSmall = 1,
+        RelativeErrorTooSmall = 2,
+        RelativeErrorAndReductionTooSmall = 3,
+        CosinusTooSmall = 4,
+        TooManyFunctionEvaluation = 5,
+        FtolTooSmall = 6,
+        XtolTooSmall = 7,
+        GtolTooSmall = 8,
+        UserAsked = 9
+    };
+}
+
+template <typename _Scalar, int NX=Dynamic, int NY=Dynamic>
+struct DenseFunctor
+{
+  typedef _Scalar Scalar;
+  enum {
+    InputsAtCompileTime = NX,
+    ValuesAtCompileTime = NY
+  };
+  typedef Matrix<Scalar,InputsAtCompileTime,1> InputType;
+  typedef Matrix<Scalar,ValuesAtCompileTime,1> ValueType;
+  typedef Matrix<Scalar,ValuesAtCompileTime,InputsAtCompileTime> JacobianType;
+  typedef ColPivHouseholderQR<JacobianType> QRSolver;
+  const int m_inputs, m_values;
+
+  DenseFunctor() : m_inputs(InputsAtCompileTime), m_values(ValuesAtCompileTime) {}
+  DenseFunctor(int inputs, int values) : m_inputs(inputs), m_values(values) {}
+
+  int inputs() const { return m_inputs; }
+  int values() const { return m_values; }
+
+  //int operator()(const InputType &x, ValueType& fvec) { }
+  // should be defined in derived classes
+  
+  //int df(const InputType &x, JacobianType& fjac) { }
+  // should be defined in derived classes
+};
+
+template <typename _Scalar, typename _Index>
+struct SparseFunctor
+{
+  typedef _Scalar Scalar;
+  typedef _Index Index;
+  typedef Matrix<Scalar,Dynamic,1> InputType;
+  typedef Matrix<Scalar,Dynamic,1> ValueType;
+  typedef SparseMatrix<Scalar, ColMajor, Index> JacobianType;
+  typedef SparseQR<JacobianType, COLAMDOrdering<int> > QRSolver;
+  enum {
+    InputsAtCompileTime = Dynamic,
+    ValuesAtCompileTime = Dynamic
+  };
+  
+  SparseFunctor(int inputs, int values) : m_inputs(inputs), m_values(values) {}
+
+  int inputs() const { return m_inputs; }
+  int values() const { return m_values; }
+  
+  const int m_inputs, m_values;
+  //int operator()(const InputType &x, ValueType& fvec) { }
+  // to be defined in the functor
+  
+  //int df(const InputType &x, JacobianType& fjac) { }
+  // to be defined in the functor if no automatic differentiation
+  
+};
+namespace internal {
+template <typename QRSolver, typename VectorType>
+void lmpar2(const QRSolver &qr, const VectorType  &diag, const VectorType  &qtb,
+	    typename VectorType::Scalar m_delta, typename VectorType::Scalar &par,
+	    VectorType  &x);
+    }
+/**
+  * \ingroup NonLinearOptimization_Module
+  * \brief Performs non linear optimization over a non-linear function,
+  * using a variant of the Levenberg Marquardt algorithm.
+  *
+  * Check wikipedia for more information.
+  * http://en.wikipedia.org/wiki/Levenberg%E2%80%93Marquardt_algorithm
+  */
+template<typename _FunctorType>
+class LevenbergMarquardt : internal::no_assignment_operator
+{
+  public:
+    typedef _FunctorType FunctorType;
+    typedef typename FunctorType::QRSolver QRSolver;
+    typedef typename FunctorType::JacobianType JacobianType;
+    typedef typename JacobianType::Scalar Scalar;
+    typedef typename JacobianType::RealScalar RealScalar; 
+    typedef typename QRSolver::StorageIndex PermIndex;
+    typedef Matrix<Scalar,Dynamic,1> FVectorType;
+    typedef PermutationMatrix<Dynamic,Dynamic> PermutationType;
+  public:
+    LevenbergMarquardt(FunctorType& functor) 
+    : m_functor(functor),m_nfev(0),m_njev(0),m_fnorm(0.0),m_gnorm(0),
+      m_isInitialized(false),m_info(InvalidInput)
+    {
+      resetParameters();
+      m_useExternalScaling=false; 
+    }
+    
+    LevenbergMarquardtSpace::Status minimize(FVectorType &x);
+    LevenbergMarquardtSpace::Status minimizeInit(FVectorType &x);
+    LevenbergMarquardtSpace::Status minimizeOneStep(FVectorType &x);
+    LevenbergMarquardtSpace::Status lmder1(
+      FVectorType  &x, 
+      const Scalar tol = std::sqrt(NumTraits<Scalar>::epsilon())
+    );
+    static LevenbergMarquardtSpace::Status lmdif1(
+            FunctorType &functor,
+            FVectorType  &x,
+            Index *nfev,
+            const Scalar tol = std::sqrt(NumTraits<Scalar>::epsilon())
+            );
+    
+    /** Sets the default parameters */
+    void resetParameters() 
+    {
+      using std::sqrt;        
+
+      m_factor = 100.; 
+      m_maxfev = 400; 
+      m_ftol = sqrt(NumTraits<RealScalar>::epsilon());
+      m_xtol = sqrt(NumTraits<RealScalar>::epsilon());
+      m_gtol = 0. ; 
+      m_epsfcn = 0. ;
+    }
+    
+    /** Sets the tolerance for the norm of the solution vector*/
+    void setXtol(RealScalar xtol) { m_xtol = xtol; }
+    
+    /** Sets the tolerance for the norm of the vector function*/
+    void setFtol(RealScalar ftol) { m_ftol = ftol; }
+    
+    /** Sets the tolerance for the norm of the gradient of the error vector*/
+    void setGtol(RealScalar gtol) { m_gtol = gtol; }
+    
+    /** Sets the step bound for the diagonal shift */
+    void setFactor(RealScalar factor) { m_factor = factor; }    
+    
+    /** Sets the error precision  */
+    void setEpsilon (RealScalar epsfcn) { m_epsfcn = epsfcn; }
+    
+    /** Sets the maximum number of function evaluation */
+    void setMaxfev(Index maxfev) {m_maxfev = maxfev; }
+    
+    /** Use an external Scaling. If set to true, pass a nonzero diagonal to diag() */
+    void setExternalScaling(bool value) {m_useExternalScaling  = value; }
+    
+    /** \returns the tolerance for the norm of the solution vector */
+    RealScalar xtol() const {return m_xtol; }
+    
+    /** \returns the tolerance for the norm of the vector function */
+    RealScalar ftol() const {return m_ftol; }
+    
+    /** \returns the tolerance for the norm of the gradient of the error vector */
+    RealScalar gtol() const {return m_gtol; }
+    
+    /** \returns the step bound for the diagonal shift */
+    RealScalar factor() const {return m_factor; }
+    
+    /** \returns the error precision */
+    RealScalar epsilon() const {return m_epsfcn; }
+    
+    /** \returns the maximum number of function evaluation */
+    Index maxfev() const {return m_maxfev; }
+    
+    /** \returns a reference to the diagonal of the jacobian */
+    FVectorType& diag() {return m_diag; }
+    
+    /** \returns the number of iterations performed */
+    Index iterations() { return m_iter; }
+    
+    /** \returns the number of functions evaluation */
+    Index nfev() { return m_nfev; }
+    
+    /** \returns the number of jacobian evaluation */
+    Index njev() { return m_njev; }
+    
+    /** \returns the norm of current vector function */
+    RealScalar fnorm() {return m_fnorm; }
+    
+    /** \returns the norm of the gradient of the error */
+    RealScalar gnorm() {return m_gnorm; }
+    
+    /** \returns the LevenbergMarquardt parameter */
+    RealScalar lm_param(void) { return m_par; }
+    
+    /** \returns a reference to the  current vector function 
+     */
+    FVectorType& fvec() {return m_fvec; }
+    
+    /** \returns a reference to the matrix where the current Jacobian matrix is stored
+     */
+    JacobianType& jacobian() {return m_fjac; }
+    
+    /** \returns a reference to the triangular matrix R from the QR of the jacobian matrix.
+     * \sa jacobian()
+     */
+    JacobianType& matrixR() {return m_rfactor; }
+    
+    /** the permutation used in the QR factorization
+     */
+    PermutationType permutation() {return m_permutation; }
+    
+    /** 
+     * \brief Reports whether the minimization was successful
+     * \returns \c Success if the minimization was succesful,
+     *         \c NumericalIssue if a numerical problem arises during the 
+     *          minimization process, for exemple during the QR factorization
+     *         \c NoConvergence if the minimization did not converge after 
+     *          the maximum number of function evaluation allowed
+     *          \c InvalidInput if the input matrix is invalid
+     */
+    ComputationInfo info() const
+    {
+      
+      return m_info;
+    }
+  private:
+    JacobianType m_fjac; 
+    JacobianType m_rfactor; // The triangular matrix R from the QR of the jacobian matrix m_fjac
+    FunctorType &m_functor;
+    FVectorType m_fvec, m_qtf, m_diag; 
+    Index n;
+    Index m; 
+    Index m_nfev;
+    Index m_njev; 
+    RealScalar m_fnorm; // Norm of the current vector function
+    RealScalar m_gnorm; //Norm of the gradient of the error 
+    RealScalar m_factor; //
+    Index m_maxfev; // Maximum number of function evaluation
+    RealScalar m_ftol; //Tolerance in the norm of the vector function
+    RealScalar m_xtol; // 
+    RealScalar m_gtol; //tolerance of the norm of the error gradient
+    RealScalar m_epsfcn; //
+    Index m_iter; // Number of iterations performed
+    RealScalar m_delta;
+    bool m_useExternalScaling;
+    PermutationType m_permutation;
+    FVectorType m_wa1, m_wa2, m_wa3, m_wa4; //Temporary vectors
+    RealScalar m_par;
+    bool m_isInitialized; // Check whether the minimization step has been called
+    ComputationInfo m_info; 
+};
+
+template<typename FunctorType>
+LevenbergMarquardtSpace::Status
+LevenbergMarquardt<FunctorType>::minimize(FVectorType  &x)
+{
+    LevenbergMarquardtSpace::Status status = minimizeInit(x);
+    if (status==LevenbergMarquardtSpace::ImproperInputParameters) {
+      m_isInitialized = true;
+      return status;
+    }
+    do {
+//       std::cout << " uv " << x.transpose() << "\n";
+        status = minimizeOneStep(x);
+    } while (status==LevenbergMarquardtSpace::Running);
+     m_isInitialized = true;
+     return status;
+}
+
+template<typename FunctorType>
+LevenbergMarquardtSpace::Status
+LevenbergMarquardt<FunctorType>::minimizeInit(FVectorType  &x)
+{
+    n = x.size();
+    m = m_functor.values();
+
+    m_wa1.resize(n); m_wa2.resize(n); m_wa3.resize(n);
+    m_wa4.resize(m);
+    m_fvec.resize(m);
+    //FIXME Sparse Case : Allocate space for the jacobian
+    m_fjac.resize(m, n);
+//     m_fjac.reserve(VectorXi::Constant(n,5)); // FIXME Find a better alternative
+    if (!m_useExternalScaling)
+        m_diag.resize(n);
+    eigen_assert( (!m_useExternalScaling || m_diag.size()==n) && "When m_useExternalScaling is set, the caller must provide a valid 'm_diag'");
+    m_qtf.resize(n);
+
+    /* Function Body */
+    m_nfev = 0;
+    m_njev = 0;
+
+    /*     check the input parameters for errors. */
+    if (n <= 0 || m < n || m_ftol < 0. || m_xtol < 0. || m_gtol < 0. || m_maxfev <= 0 || m_factor <= 0.){
+      m_info = InvalidInput;
+      return LevenbergMarquardtSpace::ImproperInputParameters;
+    }
+
+    if (m_useExternalScaling)
+        for (Index j = 0; j < n; ++j)
+            if (m_diag[j] <= 0.) 
+            {
+              m_info = InvalidInput;
+              return LevenbergMarquardtSpace::ImproperInputParameters;
+            }
+
+    /*     evaluate the function at the starting point */
+    /*     and calculate its norm. */
+    m_nfev = 1;
+    if ( m_functor(x, m_fvec) < 0)
+        return LevenbergMarquardtSpace::UserAsked;
+    m_fnorm = m_fvec.stableNorm();
+
+    /*     initialize levenberg-marquardt parameter and iteration counter. */
+    m_par = 0.;
+    m_iter = 1;
+
+    return LevenbergMarquardtSpace::NotStarted;
+}
+
+template<typename FunctorType>
+LevenbergMarquardtSpace::Status
+LevenbergMarquardt<FunctorType>::lmder1(
+        FVectorType  &x,
+        const Scalar tol
+        )
+{
+    n = x.size();
+    m = m_functor.values();
+
+    /* check the input parameters for errors. */
+    if (n <= 0 || m < n || tol < 0.)
+        return LevenbergMarquardtSpace::ImproperInputParameters;
+
+    resetParameters();
+    m_ftol = tol;
+    m_xtol = tol;
+    m_maxfev = 100*(n+1);
+
+    return minimize(x);
+}
+
+
+template<typename FunctorType>
+LevenbergMarquardtSpace::Status
+LevenbergMarquardt<FunctorType>::lmdif1(
+        FunctorType &functor,
+        FVectorType  &x,
+        Index *nfev,
+        const Scalar tol
+        )
+{
+    Index n = x.size();
+    Index m = functor.values();
+
+    /* check the input parameters for errors. */
+    if (n <= 0 || m < n || tol < 0.)
+        return LevenbergMarquardtSpace::ImproperInputParameters;
+
+    NumericalDiff<FunctorType> numDiff(functor);
+    // embedded LevenbergMarquardt
+    LevenbergMarquardt<NumericalDiff<FunctorType> > lm(numDiff);
+    lm.setFtol(tol);
+    lm.setXtol(tol);
+    lm.setMaxfev(200*(n+1));
+
+    LevenbergMarquardtSpace::Status info = LevenbergMarquardtSpace::Status(lm.minimize(x));
+    if (nfev)
+        * nfev = lm.nfev();
+    return info;
+}
+
+} // end namespace Eigen
+
+#endif // EIGEN_LEVENBERGMARQUARDT_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/LevenbergMarquardt/LMpar.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/LevenbergMarquardt/LMpar.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/LevenbergMarquardt/LMpar.h	(revision 3762)
@@ -0,0 +1,160 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// This code initially comes from MINPACK whose original authors are:
+// Copyright Jorge More - Argonne National Laboratory
+// Copyright Burt Garbow - Argonne National Laboratory
+// Copyright Ken Hillstrom - Argonne National Laboratory
+//
+// This Source Code Form is subject to the terms of the Minpack license
+// (a BSD-like license) described in the campaigned CopyrightMINPACK.txt file.
+
+#ifndef EIGEN_LMPAR_H
+#define EIGEN_LMPAR_H
+
+namespace Eigen {
+
+namespace internal {
+  
+  template <typename QRSolver, typename VectorType>
+    void lmpar2(
+    const QRSolver &qr,
+    const VectorType  &diag,
+    const VectorType  &qtb,
+    typename VectorType::Scalar m_delta,
+    typename VectorType::Scalar &par,
+    VectorType  &x)
+
+  {
+    using std::sqrt;
+    using std::abs;
+    typedef typename QRSolver::MatrixType MatrixType;
+    typedef typename QRSolver::Scalar Scalar;
+//    typedef typename QRSolver::StorageIndex StorageIndex;
+
+    /* Local variables */
+    Index j;
+    Scalar fp;
+    Scalar parc, parl;
+    Index iter;
+    Scalar temp, paru;
+    Scalar gnorm;
+    Scalar dxnorm;
+    
+    // Make a copy of the triangular factor. 
+    // This copy is modified during call the qrsolv
+    MatrixType s;
+    s = qr.matrixR();
+
+    /* Function Body */
+    const Scalar dwarf = (std::numeric_limits<Scalar>::min)();
+    const Index n = qr.matrixR().cols();
+    eigen_assert(n==diag.size());
+    eigen_assert(n==qtb.size());
+
+    VectorType  wa1, wa2;
+
+    /* compute and store in x the gauss-newton direction. if the */
+    /* jacobian is rank-deficient, obtain a least squares solution. */
+
+    //    const Index rank = qr.nonzeroPivots(); // exactly double(0.)
+    const Index rank = qr.rank(); // use a threshold
+    wa1 = qtb;
+    wa1.tail(n-rank).setZero();
+    //FIXME There is no solve in place for sparse triangularView
+    wa1.head(rank) = s.topLeftCorner(rank,rank).template triangularView<Upper>().solve(qtb.head(rank));
+
+    x = qr.colsPermutation()*wa1;
+
+    /* initialize the iteration counter. */
+    /* evaluate the function at the origin, and test */
+    /* for acceptance of the gauss-newton direction. */
+    iter = 0;
+    wa2 = diag.cwiseProduct(x);
+    dxnorm = wa2.blueNorm();
+    fp = dxnorm - m_delta;
+    if (fp <= Scalar(0.1) * m_delta) {
+      par = 0;
+      return;
+    }
+
+    /* if the jacobian is not rank deficient, the newton */
+    /* step provides a lower bound, parl, for the zero of */
+    /* the function. otherwise set this bound to zero. */
+    parl = 0.;
+    if (rank==n) {
+      wa1 = qr.colsPermutation().inverse() *  diag.cwiseProduct(wa2)/dxnorm;
+      s.topLeftCorner(n,n).transpose().template triangularView<Lower>().solveInPlace(wa1);
+      temp = wa1.blueNorm();
+      parl = fp / m_delta / temp / temp;
+    }
+
+    /* calculate an upper bound, paru, for the zero of the function. */
+    for (j = 0; j < n; ++j)
+      wa1[j] = s.col(j).head(j+1).dot(qtb.head(j+1)) / diag[qr.colsPermutation().indices()(j)];
+
+    gnorm = wa1.stableNorm();
+    paru = gnorm / m_delta;
+    if (paru == 0.)
+      paru = dwarf / (std::min)(m_delta,Scalar(0.1));
+
+    /* if the input par lies outside of the interval (parl,paru), */
+    /* set par to the closer endpoint. */
+    par = (std::max)(par,parl);
+    par = (std::min)(par,paru);
+    if (par == 0.)
+      par = gnorm / dxnorm;
+
+    /* beginning of an iteration. */
+    while (true) {
+      ++iter;
+
+      /* evaluate the function at the current value of par. */
+      if (par == 0.)
+        par = (std::max)(dwarf,Scalar(.001) * paru); /* Computing MAX */
+      wa1 = sqrt(par)* diag;
+
+      VectorType sdiag(n);
+      lmqrsolv(s, qr.colsPermutation(), wa1, qtb, x, sdiag);
+
+      wa2 = diag.cwiseProduct(x);
+      dxnorm = wa2.blueNorm();
+      temp = fp;
+      fp = dxnorm - m_delta;
+
+      /* if the function is small enough, accept the current value */
+      /* of par. also test for the exceptional cases where parl */
+      /* is zero or the number of iterations has reached 10. */
+      if (abs(fp) <= Scalar(0.1) * m_delta || (parl == 0. && fp <= temp && temp < 0.) || iter == 10)
+        break;
+
+      /* compute the newton correction. */
+      wa1 = qr.colsPermutation().inverse() * diag.cwiseProduct(wa2/dxnorm);
+      // we could almost use this here, but the diagonal is outside qr, in sdiag[]
+      for (j = 0; j < n; ++j) {
+        wa1[j] /= sdiag[j];
+        temp = wa1[j];
+        for (Index i = j+1; i < n; ++i)
+          wa1[i] -= s.coeff(i,j) * temp;
+      }
+      temp = wa1.blueNorm();
+      parc = fp / m_delta / temp / temp;
+
+      /* depending on the sign of the function, update parl or paru. */
+      if (fp > 0.)
+        parl = (std::max)(parl,par);
+      if (fp < 0.)
+        paru = (std::min)(paru,par);
+
+      /* compute an improved estimate for par. */
+      par = (std::max)(parl,par+parc);
+    }
+    if (iter == 0)
+      par = 0.;
+    return;
+  }
+} // end namespace internal
+
+} // end namespace Eigen
+
+#endif // EIGEN_LMPAR_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/NonLinearOptimization/fdjac1.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/NonLinearOptimization/fdjac1.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/NonLinearOptimization/fdjac1.h	(revision 3762)
@@ -0,0 +1,79 @@
+namespace Eigen { 
+
+namespace internal {
+
+template<typename FunctorType, typename Scalar>
+DenseIndex fdjac1(
+        const FunctorType &Functor,
+        Matrix< Scalar, Dynamic, 1 >  &x,
+        Matrix< Scalar, Dynamic, 1 >  &fvec,
+        Matrix< Scalar, Dynamic, Dynamic > &fjac,
+        DenseIndex ml, DenseIndex mu,
+        Scalar epsfcn)
+{
+    using std::sqrt;
+    using std::abs;
+    
+    typedef DenseIndex Index;
+
+    /* Local variables */
+    Scalar h;
+    Index j, k;
+    Scalar eps, temp;
+    Index msum;
+    int iflag;
+    Index start, length;
+
+    /* Function Body */
+    const Scalar epsmch = NumTraits<Scalar>::epsilon();
+    const Index n = x.size();
+    eigen_assert(fvec.size()==n);
+    Matrix< Scalar, Dynamic, 1 >  wa1(n);
+    Matrix< Scalar, Dynamic, 1 >  wa2(n);
+
+    eps = sqrt((std::max)(epsfcn,epsmch));
+    msum = ml + mu + 1;
+    if (msum >= n) {
+        /* computation of dense approximate jacobian. */
+        for (j = 0; j < n; ++j) {
+            temp = x[j];
+            h = eps * abs(temp);
+            if (h == 0.)
+                h = eps;
+            x[j] = temp + h;
+            iflag = Functor(x, wa1);
+            if (iflag < 0)
+                return iflag;
+            x[j] = temp;
+            fjac.col(j) = (wa1-fvec)/h;
+        }
+
+    }else {
+        /* computation of banded approximate jacobian. */
+        for (k = 0; k < msum; ++k) {
+            for (j = k; (msum<0) ? (j>n): (j<n); j += msum) {
+                wa2[j] = x[j];
+                h = eps * abs(wa2[j]);
+                if (h == 0.) h = eps;
+                x[j] = wa2[j] + h;
+            }
+            iflag = Functor(x, wa1);
+            if (iflag < 0)
+                return iflag;
+            for (j = k; (msum<0) ? (j>n): (j<n); j += msum) {
+                x[j] = wa2[j];
+                h = eps * abs(wa2[j]);
+                if (h == 0.) h = eps;
+                fjac.col(j).setZero();
+                start = std::max<Index>(0,j-mu);
+                length = (std::min)(n-1, j+ml) - start + 1;
+                fjac.col(j).segment(start, length) = ( wa1.segment(start, length)-fvec.segment(start, length))/h;
+            }
+        }
+    }
+    return 0;
+}
+
+} // end namespace internal
+
+} // end namespace Eigen
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/NonLinearOptimization/r1mpyq.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/NonLinearOptimization/r1mpyq.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/NonLinearOptimization/r1mpyq.h	(revision 3762)
@@ -0,0 +1,30 @@
+namespace Eigen { 
+
+namespace internal {
+
+// TODO : move this to GivensQR once there's such a thing in Eigen
+
+template <typename Scalar>
+void r1mpyq(DenseIndex m, DenseIndex n, Scalar *a, const std::vector<JacobiRotation<Scalar> > &v_givens, const std::vector<JacobiRotation<Scalar> > &w_givens)
+{
+    typedef DenseIndex Index;
+
+    /*     apply the first set of givens rotations to a. */
+    for (Index j = n-2; j>=0; --j)
+        for (Index i = 0; i<m; ++i) {
+            Scalar temp = v_givens[j].c() * a[i+m*j] - v_givens[j].s() * a[i+m*(n-1)];
+            a[i+m*(n-1)] = v_givens[j].s() * a[i+m*j] + v_givens[j].c() * a[i+m*(n-1)];
+            a[i+m*j] = temp;
+        }
+    /*     apply the second set of givens rotations to a. */
+    for (Index j = 0; j<n-1; ++j)
+        for (Index i = 0; i<m; ++i) {
+            Scalar temp = w_givens[j].c() * a[i+m*j] + w_givens[j].s() * a[i+m*(n-1)];
+            a[i+m*(n-1)] = -w_givens[j].s() * a[i+m*j] + w_givens[j].c() * a[i+m*(n-1)];
+            a[i+m*j] = temp;
+        }
+}
+
+} // end namespace internal
+
+} // end namespace Eigen
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/NonLinearOptimization/LevenbergMarquardt.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/NonLinearOptimization/LevenbergMarquardt.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/NonLinearOptimization/LevenbergMarquardt.h	(revision 3762)
@@ -0,0 +1,657 @@
+// -*- coding: utf-8
+// vim: set fileencoding=utf-8
+
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2009 Thomas Capricelli <orzel@freehackers.org>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_LEVENBERGMARQUARDT__H
+#define EIGEN_LEVENBERGMARQUARDT__H
+
+namespace Eigen { 
+
+namespace LevenbergMarquardtSpace {
+    enum Status {
+        NotStarted = -2,
+        Running = -1,
+        ImproperInputParameters = 0,
+        RelativeReductionTooSmall = 1,
+        RelativeErrorTooSmall = 2,
+        RelativeErrorAndReductionTooSmall = 3,
+        CosinusTooSmall = 4,
+        TooManyFunctionEvaluation = 5,
+        FtolTooSmall = 6,
+        XtolTooSmall = 7,
+        GtolTooSmall = 8,
+        UserAsked = 9
+    };
+}
+
+
+
+/**
+  * \ingroup NonLinearOptimization_Module
+  * \brief Performs non linear optimization over a non-linear function,
+  * using a variant of the Levenberg Marquardt algorithm.
+  *
+  * Check wikipedia for more information.
+  * http://en.wikipedia.org/wiki/Levenberg%E2%80%93Marquardt_algorithm
+  */
+template<typename FunctorType, typename Scalar=double>
+class LevenbergMarquardt
+{
+    static Scalar sqrt_epsilon()
+    {
+      using std::sqrt;
+      return sqrt(NumTraits<Scalar>::epsilon());
+    }
+    
+public:
+    LevenbergMarquardt(FunctorType &_functor)
+        : functor(_functor) { nfev = njev = iter = 0;  fnorm = gnorm = 0.; useExternalScaling=false; }
+
+    typedef DenseIndex Index;
+    
+    struct Parameters {
+        Parameters()
+            : factor(Scalar(100.))
+            , maxfev(400)
+            , ftol(sqrt_epsilon())
+            , xtol(sqrt_epsilon())
+            , gtol(Scalar(0.))
+            , epsfcn(Scalar(0.)) {}
+        Scalar factor;
+        Index maxfev;   // maximum number of function evaluation
+        Scalar ftol;
+        Scalar xtol;
+        Scalar gtol;
+        Scalar epsfcn;
+    };
+
+    typedef Matrix< Scalar, Dynamic, 1 > FVectorType;
+    typedef Matrix< Scalar, Dynamic, Dynamic > JacobianType;
+
+    LevenbergMarquardtSpace::Status lmder1(
+            FVectorType &x,
+            const Scalar tol = sqrt_epsilon()
+            );
+
+    LevenbergMarquardtSpace::Status minimize(FVectorType &x);
+    LevenbergMarquardtSpace::Status minimizeInit(FVectorType &x);
+    LevenbergMarquardtSpace::Status minimizeOneStep(FVectorType &x);
+
+    static LevenbergMarquardtSpace::Status lmdif1(
+            FunctorType &functor,
+            FVectorType &x,
+            Index *nfev,
+            const Scalar tol = sqrt_epsilon()
+            );
+
+    LevenbergMarquardtSpace::Status lmstr1(
+            FVectorType  &x,
+            const Scalar tol = sqrt_epsilon()
+            );
+
+    LevenbergMarquardtSpace::Status minimizeOptimumStorage(FVectorType  &x);
+    LevenbergMarquardtSpace::Status minimizeOptimumStorageInit(FVectorType  &x);
+    LevenbergMarquardtSpace::Status minimizeOptimumStorageOneStep(FVectorType  &x);
+
+    void resetParameters(void) { parameters = Parameters(); }
+
+    Parameters parameters;
+    FVectorType  fvec, qtf, diag;
+    JacobianType fjac;
+    PermutationMatrix<Dynamic,Dynamic> permutation;
+    Index nfev;
+    Index njev;
+    Index iter;
+    Scalar fnorm, gnorm;
+    bool useExternalScaling; 
+
+    Scalar lm_param(void) { return par; }
+private:
+    
+    FunctorType &functor;
+    Index n;
+    Index m;
+    FVectorType wa1, wa2, wa3, wa4;
+
+    Scalar par, sum;
+    Scalar temp, temp1, temp2;
+    Scalar delta;
+    Scalar ratio;
+    Scalar pnorm, xnorm, fnorm1, actred, dirder, prered;
+
+    LevenbergMarquardt& operator=(const LevenbergMarquardt&);
+};
+
+template<typename FunctorType, typename Scalar>
+LevenbergMarquardtSpace::Status
+LevenbergMarquardt<FunctorType,Scalar>::lmder1(
+        FVectorType  &x,
+        const Scalar tol
+        )
+{
+    n = x.size();
+    m = functor.values();
+
+    /* check the input parameters for errors. */
+    if (n <= 0 || m < n || tol < 0.)
+        return LevenbergMarquardtSpace::ImproperInputParameters;
+
+    resetParameters();
+    parameters.ftol = tol;
+    parameters.xtol = tol;
+    parameters.maxfev = 100*(n+1);
+
+    return minimize(x);
+}
+
+
+template<typename FunctorType, typename Scalar>
+LevenbergMarquardtSpace::Status
+LevenbergMarquardt<FunctorType,Scalar>::minimize(FVectorType  &x)
+{
+    LevenbergMarquardtSpace::Status status = minimizeInit(x);
+    if (status==LevenbergMarquardtSpace::ImproperInputParameters)
+        return status;
+    do {
+        status = minimizeOneStep(x);
+    } while (status==LevenbergMarquardtSpace::Running);
+    return status;
+}
+
+template<typename FunctorType, typename Scalar>
+LevenbergMarquardtSpace::Status
+LevenbergMarquardt<FunctorType,Scalar>::minimizeInit(FVectorType  &x)
+{
+    n = x.size();
+    m = functor.values();
+
+    wa1.resize(n); wa2.resize(n); wa3.resize(n);
+    wa4.resize(m);
+    fvec.resize(m);
+    fjac.resize(m, n);
+    if (!useExternalScaling)
+        diag.resize(n);
+    eigen_assert( (!useExternalScaling || diag.size()==n) && "When useExternalScaling is set, the caller must provide a valid 'diag'");
+    qtf.resize(n);
+
+    /* Function Body */
+    nfev = 0;
+    njev = 0;
+
+    /*     check the input parameters for errors. */
+    if (n <= 0 || m < n || parameters.ftol < 0. || parameters.xtol < 0. || parameters.gtol < 0. || parameters.maxfev <= 0 || parameters.factor <= 0.)
+        return LevenbergMarquardtSpace::ImproperInputParameters;
+
+    if (useExternalScaling)
+        for (Index j = 0; j < n; ++j)
+            if (diag[j] <= 0.)
+                return LevenbergMarquardtSpace::ImproperInputParameters;
+
+    /*     evaluate the function at the starting point */
+    /*     and calculate its norm. */
+    nfev = 1;
+    if ( functor(x, fvec) < 0)
+        return LevenbergMarquardtSpace::UserAsked;
+    fnorm = fvec.stableNorm();
+
+    /*     initialize levenberg-marquardt parameter and iteration counter. */
+    par = 0.;
+    iter = 1;
+
+    return LevenbergMarquardtSpace::NotStarted;
+}
+
+template<typename FunctorType, typename Scalar>
+LevenbergMarquardtSpace::Status
+LevenbergMarquardt<FunctorType,Scalar>::minimizeOneStep(FVectorType  &x)
+{
+    using std::abs;
+    using std::sqrt;
+
+    eigen_assert(x.size()==n); // check the caller is not cheating us
+
+    /* calculate the jacobian matrix. */
+    Index df_ret = functor.df(x, fjac);
+    if (df_ret<0)
+        return LevenbergMarquardtSpace::UserAsked;
+    if (df_ret>0)
+        // numerical diff, we evaluated the function df_ret times
+        nfev += df_ret;
+    else njev++;
+
+    /* compute the qr factorization of the jacobian. */
+    wa2 = fjac.colwise().blueNorm();
+    ColPivHouseholderQR<JacobianType> qrfac(fjac);
+    fjac = qrfac.matrixQR();
+    permutation = qrfac.colsPermutation();
+
+    /* on the first iteration and if external scaling is not used, scale according */
+    /* to the norms of the columns of the initial jacobian. */
+    if (iter == 1) {
+        if (!useExternalScaling)
+            for (Index j = 0; j < n; ++j)
+                diag[j] = (wa2[j]==0.)? 1. : wa2[j];
+
+        /* on the first iteration, calculate the norm of the scaled x */
+        /* and initialize the step bound delta. */
+        xnorm = diag.cwiseProduct(x).stableNorm();
+        delta = parameters.factor * xnorm;
+        if (delta == 0.)
+            delta = parameters.factor;
+    }
+
+    /* form (q transpose)*fvec and store the first n components in */
+    /* qtf. */
+    wa4 = fvec;
+    wa4.applyOnTheLeft(qrfac.householderQ().adjoint());
+    qtf = wa4.head(n);
+
+    /* compute the norm of the scaled gradient. */
+    gnorm = 0.;
+    if (fnorm != 0.)
+        for (Index j = 0; j < n; ++j)
+            if (wa2[permutation.indices()[j]] != 0.)
+                gnorm = (std::max)(gnorm, abs( fjac.col(j).head(j+1).dot(qtf.head(j+1)/fnorm) / wa2[permutation.indices()[j]]));
+
+    /* test for convergence of the gradient norm. */
+    if (gnorm <= parameters.gtol)
+        return LevenbergMarquardtSpace::CosinusTooSmall;
+
+    /* rescale if necessary. */
+    if (!useExternalScaling)
+        diag = diag.cwiseMax(wa2);
+
+    do {
+
+        /* determine the levenberg-marquardt parameter. */
+        internal::lmpar2<Scalar>(qrfac, diag, qtf, delta, par, wa1);
+
+        /* store the direction p and x + p. calculate the norm of p. */
+        wa1 = -wa1;
+        wa2 = x + wa1;
+        pnorm = diag.cwiseProduct(wa1).stableNorm();
+
+        /* on the first iteration, adjust the initial step bound. */
+        if (iter == 1)
+            delta = (std::min)(delta,pnorm);
+
+        /* evaluate the function at x + p and calculate its norm. */
+        if ( functor(wa2, wa4) < 0)
+            return LevenbergMarquardtSpace::UserAsked;
+        ++nfev;
+        fnorm1 = wa4.stableNorm();
+
+        /* compute the scaled actual reduction. */
+        actred = -1.;
+        if (Scalar(.1) * fnorm1 < fnorm)
+            actred = 1. - numext::abs2(fnorm1 / fnorm);
+
+        /* compute the scaled predicted reduction and */
+        /* the scaled directional derivative. */
+        wa3 = fjac.template triangularView<Upper>() * (qrfac.colsPermutation().inverse() *wa1);
+        temp1 = numext::abs2(wa3.stableNorm() / fnorm);
+        temp2 = numext::abs2(sqrt(par) * pnorm / fnorm);
+        prered = temp1 + temp2 / Scalar(.5);
+        dirder = -(temp1 + temp2);
+
+        /* compute the ratio of the actual to the predicted */
+        /* reduction. */
+        ratio = 0.;
+        if (prered != 0.)
+            ratio = actred / prered;
+
+        /* update the step bound. */
+        if (ratio <= Scalar(.25)) {
+            if (actred >= 0.)
+                temp = Scalar(.5);
+            if (actred < 0.)
+                temp = Scalar(.5) * dirder / (dirder + Scalar(.5) * actred);
+            if (Scalar(.1) * fnorm1 >= fnorm || temp < Scalar(.1))
+                temp = Scalar(.1);
+            /* Computing MIN */
+            delta = temp * (std::min)(delta, pnorm / Scalar(.1));
+            par /= temp;
+        } else if (!(par != 0. && ratio < Scalar(.75))) {
+            delta = pnorm / Scalar(.5);
+            par = Scalar(.5) * par;
+        }
+
+        /* test for successful iteration. */
+        if (ratio >= Scalar(1e-4)) {
+            /* successful iteration. update x, fvec, and their norms. */
+            x = wa2;
+            wa2 = diag.cwiseProduct(x);
+            fvec = wa4;
+            xnorm = wa2.stableNorm();
+            fnorm = fnorm1;
+            ++iter;
+        }
+
+        /* tests for convergence. */
+        if (abs(actred) <= parameters.ftol && prered <= parameters.ftol && Scalar(.5) * ratio <= 1. && delta <= parameters.xtol * xnorm)
+            return LevenbergMarquardtSpace::RelativeErrorAndReductionTooSmall;
+        if (abs(actred) <= parameters.ftol && prered <= parameters.ftol && Scalar(.5) * ratio <= 1.)
+            return LevenbergMarquardtSpace::RelativeReductionTooSmall;
+        if (delta <= parameters.xtol * xnorm)
+            return LevenbergMarquardtSpace::RelativeErrorTooSmall;
+
+        /* tests for termination and stringent tolerances. */
+        if (nfev >= parameters.maxfev)
+            return LevenbergMarquardtSpace::TooManyFunctionEvaluation;
+        if (abs(actred) <= NumTraits<Scalar>::epsilon() && prered <= NumTraits<Scalar>::epsilon() && Scalar(.5) * ratio <= 1.)
+            return LevenbergMarquardtSpace::FtolTooSmall;
+        if (delta <= NumTraits<Scalar>::epsilon() * xnorm)
+            return LevenbergMarquardtSpace::XtolTooSmall;
+        if (gnorm <= NumTraits<Scalar>::epsilon())
+            return LevenbergMarquardtSpace::GtolTooSmall;
+
+    } while (ratio < Scalar(1e-4));
+
+    return LevenbergMarquardtSpace::Running;
+}
+
+template<typename FunctorType, typename Scalar>
+LevenbergMarquardtSpace::Status
+LevenbergMarquardt<FunctorType,Scalar>::lmstr1(
+        FVectorType  &x,
+        const Scalar tol
+        )
+{
+    n = x.size();
+    m = functor.values();
+
+    /* check the input parameters for errors. */
+    if (n <= 0 || m < n || tol < 0.)
+        return LevenbergMarquardtSpace::ImproperInputParameters;
+
+    resetParameters();
+    parameters.ftol = tol;
+    parameters.xtol = tol;
+    parameters.maxfev = 100*(n+1);
+
+    return minimizeOptimumStorage(x);
+}
+
+template<typename FunctorType, typename Scalar>
+LevenbergMarquardtSpace::Status
+LevenbergMarquardt<FunctorType,Scalar>::minimizeOptimumStorageInit(FVectorType  &x)
+{
+    n = x.size();
+    m = functor.values();
+
+    wa1.resize(n); wa2.resize(n); wa3.resize(n);
+    wa4.resize(m);
+    fvec.resize(m);
+    // Only R is stored in fjac. Q is only used to compute 'qtf', which is
+    // Q.transpose()*rhs. qtf will be updated using givens rotation,
+    // instead of storing them in Q.
+    // The purpose it to only use a nxn matrix, instead of mxn here, so
+    // that we can handle cases where m>>n :
+    fjac.resize(n, n);
+    if (!useExternalScaling)
+        diag.resize(n);
+    eigen_assert( (!useExternalScaling || diag.size()==n) && "When useExternalScaling is set, the caller must provide a valid 'diag'");
+    qtf.resize(n);
+
+    /* Function Body */
+    nfev = 0;
+    njev = 0;
+
+    /*     check the input parameters for errors. */
+    if (n <= 0 || m < n || parameters.ftol < 0. || parameters.xtol < 0. || parameters.gtol < 0. || parameters.maxfev <= 0 || parameters.factor <= 0.)
+        return LevenbergMarquardtSpace::ImproperInputParameters;
+
+    if (useExternalScaling)
+        for (Index j = 0; j < n; ++j)
+            if (diag[j] <= 0.)
+                return LevenbergMarquardtSpace::ImproperInputParameters;
+
+    /*     evaluate the function at the starting point */
+    /*     and calculate its norm. */
+    nfev = 1;
+    if ( functor(x, fvec) < 0)
+        return LevenbergMarquardtSpace::UserAsked;
+    fnorm = fvec.stableNorm();
+
+    /*     initialize levenberg-marquardt parameter and iteration counter. */
+    par = 0.;
+    iter = 1;
+
+    return LevenbergMarquardtSpace::NotStarted;
+}
+
+
+template<typename FunctorType, typename Scalar>
+LevenbergMarquardtSpace::Status
+LevenbergMarquardt<FunctorType,Scalar>::minimizeOptimumStorageOneStep(FVectorType  &x)
+{
+    using std::abs;
+    using std::sqrt;
+    
+    eigen_assert(x.size()==n); // check the caller is not cheating us
+
+    Index i, j;
+    bool sing;
+
+    /* compute the qr factorization of the jacobian matrix */
+    /* calculated one row at a time, while simultaneously */
+    /* forming (q transpose)*fvec and storing the first */
+    /* n components in qtf. */
+    qtf.fill(0.);
+    fjac.fill(0.);
+    Index rownb = 2;
+    for (i = 0; i < m; ++i) {
+        if (functor.df(x, wa3, rownb) < 0) return LevenbergMarquardtSpace::UserAsked;
+        internal::rwupdt<Scalar>(fjac, wa3, qtf, fvec[i]);
+        ++rownb;
+    }
+    ++njev;
+
+    /* if the jacobian is rank deficient, call qrfac to */
+    /* reorder its columns and update the components of qtf. */
+    sing = false;
+    for (j = 0; j < n; ++j) {
+        if (fjac(j,j) == 0.)
+            sing = true;
+        wa2[j] = fjac.col(j).head(j).stableNorm();
+    }
+    permutation.setIdentity(n);
+    if (sing) {
+        wa2 = fjac.colwise().blueNorm();
+        // TODO We have no unit test covering this code path, do not modify
+        // until it is carefully tested
+        ColPivHouseholderQR<JacobianType> qrfac(fjac);
+        fjac = qrfac.matrixQR();
+        wa1 = fjac.diagonal();
+        fjac.diagonal() = qrfac.hCoeffs();
+        permutation = qrfac.colsPermutation();
+        // TODO : avoid this:
+        for(Index ii=0; ii< fjac.cols(); ii++) fjac.col(ii).segment(ii+1, fjac.rows()-ii-1) *= fjac(ii,ii); // rescale vectors
+
+        for (j = 0; j < n; ++j) {
+            if (fjac(j,j) != 0.) {
+                sum = 0.;
+                for (i = j; i < n; ++i)
+                    sum += fjac(i,j) * qtf[i];
+                temp = -sum / fjac(j,j);
+                for (i = j; i < n; ++i)
+                    qtf[i] += fjac(i,j) * temp;
+            }
+            fjac(j,j) = wa1[j];
+        }
+    }
+
+    /* on the first iteration and if external scaling is not used, scale according */
+    /* to the norms of the columns of the initial jacobian. */
+    if (iter == 1) {
+        if (!useExternalScaling)
+            for (j = 0; j < n; ++j)
+                diag[j] = (wa2[j]==0.)? 1. : wa2[j];
+
+        /* on the first iteration, calculate the norm of the scaled x */
+        /* and initialize the step bound delta. */
+        xnorm = diag.cwiseProduct(x).stableNorm();
+        delta = parameters.factor * xnorm;
+        if (delta == 0.)
+            delta = parameters.factor;
+    }
+
+    /* compute the norm of the scaled gradient. */
+    gnorm = 0.;
+    if (fnorm != 0.)
+        for (j = 0; j < n; ++j)
+            if (wa2[permutation.indices()[j]] != 0.)
+                gnorm = (std::max)(gnorm, abs( fjac.col(j).head(j+1).dot(qtf.head(j+1)/fnorm) / wa2[permutation.indices()[j]]));
+
+    /* test for convergence of the gradient norm. */
+    if (gnorm <= parameters.gtol)
+        return LevenbergMarquardtSpace::CosinusTooSmall;
+
+    /* rescale if necessary. */
+    if (!useExternalScaling)
+        diag = diag.cwiseMax(wa2);
+
+    do {
+
+        /* determine the levenberg-marquardt parameter. */
+        internal::lmpar<Scalar>(fjac, permutation.indices(), diag, qtf, delta, par, wa1);
+
+        /* store the direction p and x + p. calculate the norm of p. */
+        wa1 = -wa1;
+        wa2 = x + wa1;
+        pnorm = diag.cwiseProduct(wa1).stableNorm();
+
+        /* on the first iteration, adjust the initial step bound. */
+        if (iter == 1)
+            delta = (std::min)(delta,pnorm);
+
+        /* evaluate the function at x + p and calculate its norm. */
+        if ( functor(wa2, wa4) < 0)
+            return LevenbergMarquardtSpace::UserAsked;
+        ++nfev;
+        fnorm1 = wa4.stableNorm();
+
+        /* compute the scaled actual reduction. */
+        actred = -1.;
+        if (Scalar(.1) * fnorm1 < fnorm)
+            actred = 1. - numext::abs2(fnorm1 / fnorm);
+
+        /* compute the scaled predicted reduction and */
+        /* the scaled directional derivative. */
+        wa3 = fjac.topLeftCorner(n,n).template triangularView<Upper>() * (permutation.inverse() * wa1);
+        temp1 = numext::abs2(wa3.stableNorm() / fnorm);
+        temp2 = numext::abs2(sqrt(par) * pnorm / fnorm);
+        prered = temp1 + temp2 / Scalar(.5);
+        dirder = -(temp1 + temp2);
+
+        /* compute the ratio of the actual to the predicted */
+        /* reduction. */
+        ratio = 0.;
+        if (prered != 0.)
+            ratio = actred / prered;
+
+        /* update the step bound. */
+        if (ratio <= Scalar(.25)) {
+            if (actred >= 0.)
+                temp = Scalar(.5);
+            if (actred < 0.)
+                temp = Scalar(.5) * dirder / (dirder + Scalar(.5) * actred);
+            if (Scalar(.1) * fnorm1 >= fnorm || temp < Scalar(.1))
+                temp = Scalar(.1);
+            /* Computing MIN */
+            delta = temp * (std::min)(delta, pnorm / Scalar(.1));
+            par /= temp;
+        } else if (!(par != 0. && ratio < Scalar(.75))) {
+            delta = pnorm / Scalar(.5);
+            par = Scalar(.5) * par;
+        }
+
+        /* test for successful iteration. */
+        if (ratio >= Scalar(1e-4)) {
+            /* successful iteration. update x, fvec, and their norms. */
+            x = wa2;
+            wa2 = diag.cwiseProduct(x);
+            fvec = wa4;
+            xnorm = wa2.stableNorm();
+            fnorm = fnorm1;
+            ++iter;
+        }
+
+        /* tests for convergence. */
+        if (abs(actred) <= parameters.ftol && prered <= parameters.ftol && Scalar(.5) * ratio <= 1. && delta <= parameters.xtol * xnorm)
+            return LevenbergMarquardtSpace::RelativeErrorAndReductionTooSmall;
+        if (abs(actred) <= parameters.ftol && prered <= parameters.ftol && Scalar(.5) * ratio <= 1.)
+            return LevenbergMarquardtSpace::RelativeReductionTooSmall;
+        if (delta <= parameters.xtol * xnorm)
+            return LevenbergMarquardtSpace::RelativeErrorTooSmall;
+
+        /* tests for termination and stringent tolerances. */
+        if (nfev >= parameters.maxfev)
+            return LevenbergMarquardtSpace::TooManyFunctionEvaluation;
+        if (abs(actred) <= NumTraits<Scalar>::epsilon() && prered <= NumTraits<Scalar>::epsilon() && Scalar(.5) * ratio <= 1.)
+            return LevenbergMarquardtSpace::FtolTooSmall;
+        if (delta <= NumTraits<Scalar>::epsilon() * xnorm)
+            return LevenbergMarquardtSpace::XtolTooSmall;
+        if (gnorm <= NumTraits<Scalar>::epsilon())
+            return LevenbergMarquardtSpace::GtolTooSmall;
+
+    } while (ratio < Scalar(1e-4));
+
+    return LevenbergMarquardtSpace::Running;
+}
+
+template<typename FunctorType, typename Scalar>
+LevenbergMarquardtSpace::Status
+LevenbergMarquardt<FunctorType,Scalar>::minimizeOptimumStorage(FVectorType  &x)
+{
+    LevenbergMarquardtSpace::Status status = minimizeOptimumStorageInit(x);
+    if (status==LevenbergMarquardtSpace::ImproperInputParameters)
+        return status;
+    do {
+        status = minimizeOptimumStorageOneStep(x);
+    } while (status==LevenbergMarquardtSpace::Running);
+    return status;
+}
+
+template<typename FunctorType, typename Scalar>
+LevenbergMarquardtSpace::Status
+LevenbergMarquardt<FunctorType,Scalar>::lmdif1(
+        FunctorType &functor,
+        FVectorType  &x,
+        Index *nfev,
+        const Scalar tol
+        )
+{
+    Index n = x.size();
+    Index m = functor.values();
+
+    /* check the input parameters for errors. */
+    if (n <= 0 || m < n || tol < 0.)
+        return LevenbergMarquardtSpace::ImproperInputParameters;
+
+    NumericalDiff<FunctorType> numDiff(functor);
+    // embedded LevenbergMarquardt
+    LevenbergMarquardt<NumericalDiff<FunctorType>, Scalar > lm(numDiff);
+    lm.parameters.ftol = tol;
+    lm.parameters.xtol = tol;
+    lm.parameters.maxfev = 200*(n+1);
+
+    LevenbergMarquardtSpace::Status info = LevenbergMarquardtSpace::Status(lm.minimize(x));
+    if (nfev)
+        * nfev = lm.nfev;
+    return info;
+}
+
+} // end namespace Eigen
+
+#endif // EIGEN_LEVENBERGMARQUARDT__H
+
+//vim: ai ts=4 sts=4 et sw=4
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/NonLinearOptimization/covar.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/NonLinearOptimization/covar.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/NonLinearOptimization/covar.h	(revision 3762)
@@ -0,0 +1,70 @@
+namespace Eigen { 
+
+namespace internal {
+
+template <typename Scalar>
+void covar(
+        Matrix< Scalar, Dynamic, Dynamic > &r,
+        const VectorXi &ipvt,
+        Scalar tol = std::sqrt(NumTraits<Scalar>::epsilon()) )
+{
+    using std::abs;
+    typedef DenseIndex Index;
+
+    /* Local variables */
+    Index i, j, k, l, ii, jj;
+    bool sing;
+    Scalar temp;
+
+    /* Function Body */
+    const Index n = r.cols();
+    const Scalar tolr = tol * abs(r(0,0));
+    Matrix< Scalar, Dynamic, 1 > wa(n);
+    eigen_assert(ipvt.size()==n);
+
+    /* form the inverse of r in the full upper triangle of r. */
+    l = -1;
+    for (k = 0; k < n; ++k)
+        if (abs(r(k,k)) > tolr) {
+            r(k,k) = 1. / r(k,k);
+            for (j = 0; j <= k-1; ++j) {
+                temp = r(k,k) * r(j,k);
+                r(j,k) = 0.;
+                r.col(k).head(j+1) -= r.col(j).head(j+1) * temp;
+            }
+            l = k;
+        }
+
+    /* form the full upper triangle of the inverse of (r transpose)*r */
+    /* in the full upper triangle of r. */
+    for (k = 0; k <= l; ++k) {
+        for (j = 0; j <= k-1; ++j)
+            r.col(j).head(j+1) += r.col(k).head(j+1) * r(j,k);
+        r.col(k).head(k+1) *= r(k,k);
+    }
+
+    /* form the full lower triangle of the covariance matrix */
+    /* in the strict lower triangle of r and in wa. */
+    for (j = 0; j < n; ++j) {
+        jj = ipvt[j];
+        sing = j > l;
+        for (i = 0; i <= j; ++i) {
+            if (sing)
+                r(i,j) = 0.;
+            ii = ipvt[i];
+            if (ii > jj)
+                r(ii,jj) = r(i,j);
+            if (ii < jj)
+                r(jj,ii) = r(i,j);
+        }
+        wa[jj] = r(j,j);
+    }
+
+    /* symmetrize the covariance matrix in r. */
+    r.topLeftCorner(n,n).template triangularView<StrictlyUpper>() = r.topLeftCorner(n,n).transpose();
+    r.diagonal() = wa;
+}
+
+} // end namespace internal
+
+} // end namespace Eigen
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/NonLinearOptimization/lmpar.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/NonLinearOptimization/lmpar.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/NonLinearOptimization/lmpar.h	(revision 3762)
@@ -0,0 +1,298 @@
+namespace Eigen { 
+
+namespace internal {
+
+template <typename Scalar>
+void lmpar(
+        Matrix< Scalar, Dynamic, Dynamic > &r,
+        const VectorXi &ipvt,
+        const Matrix< Scalar, Dynamic, 1 >  &diag,
+        const Matrix< Scalar, Dynamic, 1 >  &qtb,
+        Scalar delta,
+        Scalar &par,
+        Matrix< Scalar, Dynamic, 1 >  &x)
+{
+    using std::abs;
+    using std::sqrt;
+    typedef DenseIndex Index;
+
+    /* Local variables */
+    Index i, j, l;
+    Scalar fp;
+    Scalar parc, parl;
+    Index iter;
+    Scalar temp, paru;
+    Scalar gnorm;
+    Scalar dxnorm;
+
+
+    /* Function Body */
+    const Scalar dwarf = (std::numeric_limits<Scalar>::min)();
+    const Index n = r.cols();
+    eigen_assert(n==diag.size());
+    eigen_assert(n==qtb.size());
+    eigen_assert(n==x.size());
+
+    Matrix< Scalar, Dynamic, 1 >  wa1, wa2;
+
+    /* compute and store in x the gauss-newton direction. if the */
+    /* jacobian is rank-deficient, obtain a least squares solution. */
+    Index nsing = n-1;
+    wa1 = qtb;
+    for (j = 0; j < n; ++j) {
+        if (r(j,j) == 0. && nsing == n-1)
+            nsing = j - 1;
+        if (nsing < n-1)
+            wa1[j] = 0.;
+    }
+    for (j = nsing; j>=0; --j) {
+        wa1[j] /= r(j,j);
+        temp = wa1[j];
+        for (i = 0; i < j ; ++i)
+            wa1[i] -= r(i,j) * temp;
+    }
+
+    for (j = 0; j < n; ++j)
+        x[ipvt[j]] = wa1[j];
+
+    /* initialize the iteration counter. */
+    /* evaluate the function at the origin, and test */
+    /* for acceptance of the gauss-newton direction. */
+    iter = 0;
+    wa2 = diag.cwiseProduct(x);
+    dxnorm = wa2.blueNorm();
+    fp = dxnorm - delta;
+    if (fp <= Scalar(0.1) * delta) {
+        par = 0;
+        return;
+    }
+
+    /* if the jacobian is not rank deficient, the newton */
+    /* step provides a lower bound, parl, for the zero of */
+    /* the function. otherwise set this bound to zero. */
+    parl = 0.;
+    if (nsing >= n-1) {
+        for (j = 0; j < n; ++j) {
+            l = ipvt[j];
+            wa1[j] = diag[l] * (wa2[l] / dxnorm);
+        }
+        // it's actually a triangularView.solveInplace(), though in a weird
+        // way:
+        for (j = 0; j < n; ++j) {
+            Scalar sum = 0.;
+            for (i = 0; i < j; ++i)
+                sum += r(i,j) * wa1[i];
+            wa1[j] = (wa1[j] - sum) / r(j,j);
+        }
+        temp = wa1.blueNorm();
+        parl = fp / delta / temp / temp;
+    }
+
+    /* calculate an upper bound, paru, for the zero of the function. */
+    for (j = 0; j < n; ++j)
+        wa1[j] = r.col(j).head(j+1).dot(qtb.head(j+1)) / diag[ipvt[j]];
+
+    gnorm = wa1.stableNorm();
+    paru = gnorm / delta;
+    if (paru == 0.)
+        paru = dwarf / (std::min)(delta,Scalar(0.1));
+
+    /* if the input par lies outside of the interval (parl,paru), */
+    /* set par to the closer endpoint. */
+    par = (std::max)(par,parl);
+    par = (std::min)(par,paru);
+    if (par == 0.)
+        par = gnorm / dxnorm;
+
+    /* beginning of an iteration. */
+    while (true) {
+        ++iter;
+
+        /* evaluate the function at the current value of par. */
+        if (par == 0.)
+            par = (std::max)(dwarf,Scalar(.001) * paru); /* Computing MAX */
+        wa1 = sqrt(par)* diag;
+
+        Matrix< Scalar, Dynamic, 1 > sdiag(n);
+        qrsolv<Scalar>(r, ipvt, wa1, qtb, x, sdiag);
+
+        wa2 = diag.cwiseProduct(x);
+        dxnorm = wa2.blueNorm();
+        temp = fp;
+        fp = dxnorm - delta;
+
+        /* if the function is small enough, accept the current value */
+        /* of par. also test for the exceptional cases where parl */
+        /* is zero or the number of iterations has reached 10. */
+        if (abs(fp) <= Scalar(0.1) * delta || (parl == 0. && fp <= temp && temp < 0.) || iter == 10)
+            break;
+
+        /* compute the newton correction. */
+        for (j = 0; j < n; ++j) {
+            l = ipvt[j];
+            wa1[j] = diag[l] * (wa2[l] / dxnorm);
+        }
+        for (j = 0; j < n; ++j) {
+            wa1[j] /= sdiag[j];
+            temp = wa1[j];
+            for (i = j+1; i < n; ++i)
+                wa1[i] -= r(i,j) * temp;
+        }
+        temp = wa1.blueNorm();
+        parc = fp / delta / temp / temp;
+
+        /* depending on the sign of the function, update parl or paru. */
+        if (fp > 0.)
+            parl = (std::max)(parl,par);
+        if (fp < 0.)
+            paru = (std::min)(paru,par);
+
+        /* compute an improved estimate for par. */
+        /* Computing MAX */
+        par = (std::max)(parl,par+parc);
+
+        /* end of an iteration. */
+    }
+
+    /* termination. */
+    if (iter == 0)
+        par = 0.;
+    return;
+}
+
+template <typename Scalar>
+void lmpar2(
+        const ColPivHouseholderQR<Matrix< Scalar, Dynamic, Dynamic> > &qr,
+        const Matrix< Scalar, Dynamic, 1 >  &diag,
+        const Matrix< Scalar, Dynamic, 1 >  &qtb,
+        Scalar delta,
+        Scalar &par,
+        Matrix< Scalar, Dynamic, 1 >  &x)
+
+{
+    using std::sqrt;
+    using std::abs;
+    typedef DenseIndex Index;
+
+    /* Local variables */
+    Index j;
+    Scalar fp;
+    Scalar parc, parl;
+    Index iter;
+    Scalar temp, paru;
+    Scalar gnorm;
+    Scalar dxnorm;
+
+
+    /* Function Body */
+    const Scalar dwarf = (std::numeric_limits<Scalar>::min)();
+    const Index n = qr.matrixQR().cols();
+    eigen_assert(n==diag.size());
+    eigen_assert(n==qtb.size());
+
+    Matrix< Scalar, Dynamic, 1 >  wa1, wa2;
+
+    /* compute and store in x the gauss-newton direction. if the */
+    /* jacobian is rank-deficient, obtain a least squares solution. */
+
+//    const Index rank = qr.nonzeroPivots(); // exactly double(0.)
+    const Index rank = qr.rank(); // use a threshold
+    wa1 = qtb;
+    wa1.tail(n-rank).setZero();
+    qr.matrixQR().topLeftCorner(rank, rank).template triangularView<Upper>().solveInPlace(wa1.head(rank));
+
+    x = qr.colsPermutation()*wa1;
+
+    /* initialize the iteration counter. */
+    /* evaluate the function at the origin, and test */
+    /* for acceptance of the gauss-newton direction. */
+    iter = 0;
+    wa2 = diag.cwiseProduct(x);
+    dxnorm = wa2.blueNorm();
+    fp = dxnorm - delta;
+    if (fp <= Scalar(0.1) * delta) {
+        par = 0;
+        return;
+    }
+
+    /* if the jacobian is not rank deficient, the newton */
+    /* step provides a lower bound, parl, for the zero of */
+    /* the function. otherwise set this bound to zero. */
+    parl = 0.;
+    if (rank==n) {
+        wa1 = qr.colsPermutation().inverse() *  diag.cwiseProduct(wa2)/dxnorm;
+        qr.matrixQR().topLeftCorner(n, n).transpose().template triangularView<Lower>().solveInPlace(wa1);
+        temp = wa1.blueNorm();
+        parl = fp / delta / temp / temp;
+    }
+
+    /* calculate an upper bound, paru, for the zero of the function. */
+    for (j = 0; j < n; ++j)
+        wa1[j] = qr.matrixQR().col(j).head(j+1).dot(qtb.head(j+1)) / diag[qr.colsPermutation().indices()(j)];
+
+    gnorm = wa1.stableNorm();
+    paru = gnorm / delta;
+    if (paru == 0.)
+        paru = dwarf / (std::min)(delta,Scalar(0.1));
+
+    /* if the input par lies outside of the interval (parl,paru), */
+    /* set par to the closer endpoint. */
+    par = (std::max)(par,parl);
+    par = (std::min)(par,paru);
+    if (par == 0.)
+        par = gnorm / dxnorm;
+
+    /* beginning of an iteration. */
+    Matrix< Scalar, Dynamic, Dynamic > s = qr.matrixQR();
+    while (true) {
+        ++iter;
+
+        /* evaluate the function at the current value of par. */
+        if (par == 0.)
+            par = (std::max)(dwarf,Scalar(.001) * paru); /* Computing MAX */
+        wa1 = sqrt(par)* diag;
+
+        Matrix< Scalar, Dynamic, 1 > sdiag(n);
+        qrsolv<Scalar>(s, qr.colsPermutation().indices(), wa1, qtb, x, sdiag);
+
+        wa2 = diag.cwiseProduct(x);
+        dxnorm = wa2.blueNorm();
+        temp = fp;
+        fp = dxnorm - delta;
+
+        /* if the function is small enough, accept the current value */
+        /* of par. also test for the exceptional cases where parl */
+        /* is zero or the number of iterations has reached 10. */
+        if (abs(fp) <= Scalar(0.1) * delta || (parl == 0. && fp <= temp && temp < 0.) || iter == 10)
+            break;
+
+        /* compute the newton correction. */
+        wa1 = qr.colsPermutation().inverse() * diag.cwiseProduct(wa2/dxnorm);
+        // we could almost use this here, but the diagonal is outside qr, in sdiag[]
+        // qr.matrixQR().topLeftCorner(n, n).transpose().template triangularView<Lower>().solveInPlace(wa1);
+        for (j = 0; j < n; ++j) {
+            wa1[j] /= sdiag[j];
+            temp = wa1[j];
+            for (Index i = j+1; i < n; ++i)
+                wa1[i] -= s(i,j) * temp;
+        }
+        temp = wa1.blueNorm();
+        parc = fp / delta / temp / temp;
+
+        /* depending on the sign of the function, update parl or paru. */
+        if (fp > 0.)
+            parl = (std::max)(parl,par);
+        if (fp < 0.)
+            paru = (std::min)(paru,par);
+
+        /* compute an improved estimate for par. */
+        par = (std::max)(parl,par+parc);
+    }
+    if (iter == 0)
+        par = 0.;
+    return;
+}
+
+} // end namespace internal
+
+} // end namespace Eigen
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/NonLinearOptimization/r1updt.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/NonLinearOptimization/r1updt.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/NonLinearOptimization/r1updt.h	(revision 3762)
@@ -0,0 +1,99 @@
+namespace Eigen { 
+
+namespace internal {
+
+template <typename Scalar>
+void r1updt(
+        Matrix< Scalar, Dynamic, Dynamic > &s,
+        const Matrix< Scalar, Dynamic, 1> &u,
+        std::vector<JacobiRotation<Scalar> > &v_givens,
+        std::vector<JacobiRotation<Scalar> > &w_givens,
+        Matrix< Scalar, Dynamic, 1> &v,
+        Matrix< Scalar, Dynamic, 1> &w,
+        bool *sing)
+{
+    typedef DenseIndex Index;
+    const JacobiRotation<Scalar> IdentityRotation = JacobiRotation<Scalar>(1,0);
+
+    /* Local variables */
+    const Index m = s.rows();
+    const Index n = s.cols();
+    Index i, j=1;
+    Scalar temp;
+    JacobiRotation<Scalar> givens;
+
+    // r1updt had a broader usecase, but we dont use it here. And, more
+    // importantly, we can not test it.
+    eigen_assert(m==n);
+    eigen_assert(u.size()==m);
+    eigen_assert(v.size()==n);
+    eigen_assert(w.size()==n);
+
+    /* move the nontrivial part of the last column of s into w. */
+    w[n-1] = s(n-1,n-1);
+
+    /* rotate the vector v into a multiple of the n-th unit vector */
+    /* in such a way that a spike is introduced into w. */
+    for (j=n-2; j>=0; --j) {
+        w[j] = 0.;
+        if (v[j] != 0.) {
+            /* determine a givens rotation which eliminates the */
+            /* j-th element of v. */
+            givens.makeGivens(-v[n-1], v[j]);
+
+            /* apply the transformation to v and store the information */
+            /* necessary to recover the givens rotation. */
+            v[n-1] = givens.s() * v[j] + givens.c() * v[n-1];
+            v_givens[j] = givens;
+
+            /* apply the transformation to s and extend the spike in w. */
+            for (i = j; i < m; ++i) {
+                temp = givens.c() * s(j,i) - givens.s() * w[i];
+                w[i] = givens.s() * s(j,i) + givens.c() * w[i];
+                s(j,i) = temp;
+            }
+        } else
+            v_givens[j] = IdentityRotation;
+    }
+
+    /* add the spike from the rank 1 update to w. */
+    w += v[n-1] * u;
+
+    /* eliminate the spike. */
+    *sing = false;
+    for (j = 0; j < n-1; ++j) {
+        if (w[j] != 0.) {
+            /* determine a givens rotation which eliminates the */
+            /* j-th element of the spike. */
+            givens.makeGivens(-s(j,j), w[j]);
+
+            /* apply the transformation to s and reduce the spike in w. */
+            for (i = j; i < m; ++i) {
+                temp = givens.c() * s(j,i) + givens.s() * w[i];
+                w[i] = -givens.s() * s(j,i) + givens.c() * w[i];
+                s(j,i) = temp;
+            }
+
+            /* store the information necessary to recover the */
+            /* givens rotation. */
+            w_givens[j] = givens;
+        } else
+            v_givens[j] = IdentityRotation;
+
+        /* test for zero diagonal elements in the output s. */
+        if (s(j,j) == 0.) {
+            *sing = true;
+        }
+    }
+    /* move w back into the last column of the output s. */
+    s(n-1,n-1) = w[n-1];
+
+    if (s(j,j) == 0.) {
+        *sing = true;
+    }
+    return;
+}
+
+} // end namespace internal
+
+} // end namespace Eigen
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/NonLinearOptimization/chkder.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/NonLinearOptimization/chkder.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/NonLinearOptimization/chkder.h	(revision 3762)
@@ -0,0 +1,66 @@
+#define chkder_log10e 0.43429448190325182765
+#define chkder_factor 100.
+
+namespace Eigen { 
+
+namespace internal {
+
+template<typename Scalar>
+void chkder(
+        const Matrix< Scalar, Dynamic, 1 >  &x,
+        const Matrix< Scalar, Dynamic, 1 >  &fvec,
+        const Matrix< Scalar, Dynamic, Dynamic > &fjac,
+        Matrix< Scalar, Dynamic, 1 >  &xp,
+        const Matrix< Scalar, Dynamic, 1 >  &fvecp,
+        int mode,
+        Matrix< Scalar, Dynamic, 1 >  &err
+        )
+{
+    using std::sqrt;
+    using std::abs;
+    using std::log;
+    
+    typedef DenseIndex Index;
+
+    const Scalar eps = sqrt(NumTraits<Scalar>::epsilon());
+    const Scalar epsf = chkder_factor * NumTraits<Scalar>::epsilon();
+    const Scalar epslog = chkder_log10e * log(eps);
+    Scalar temp;
+
+    const Index m = fvec.size(), n = x.size();
+
+    if (mode != 2) {
+        /* mode = 1. */
+        xp.resize(n);
+        for (Index j = 0; j < n; ++j) {
+            temp = eps * abs(x[j]);
+            if (temp == 0.)
+                temp = eps;
+            xp[j] = x[j] + temp;
+        }
+    }
+    else {
+        /* mode = 2. */
+        err.setZero(m); 
+        for (Index j = 0; j < n; ++j) {
+            temp = abs(x[j]);
+            if (temp == 0.)
+                temp = 1.;
+            err += temp * fjac.col(j);
+        }
+        for (Index i = 0; i < m; ++i) {
+            temp = 1.;
+            if (fvec[i] != 0. && fvecp[i] != 0. && abs(fvecp[i] - fvec[i]) >= epsf * abs(fvec[i]))
+                temp = eps * abs((fvecp[i] - fvec[i]) / eps - err[i]) / (abs(fvec[i]) + abs(fvecp[i]));
+            err[i] = 1.;
+            if (temp > NumTraits<Scalar>::epsilon() && temp < eps)
+                err[i] = (chkder_log10e * log(temp) - epslog) / epslog;
+            if (temp >= eps)
+                err[i] = 0.;
+        }
+    }
+}
+
+} // end namespace internal
+
+} // end namespace Eigen
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/NonLinearOptimization/dogleg.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/NonLinearOptimization/dogleg.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/NonLinearOptimization/dogleg.h	(revision 3762)
@@ -0,0 +1,107 @@
+namespace Eigen { 
+
+namespace internal {
+
+template <typename Scalar>
+void dogleg(
+        const Matrix< Scalar, Dynamic, Dynamic >  &qrfac,
+        const Matrix< Scalar, Dynamic, 1 >  &diag,
+        const Matrix< Scalar, Dynamic, 1 >  &qtb,
+        Scalar delta,
+        Matrix< Scalar, Dynamic, 1 >  &x)
+{
+    using std::abs;
+    using std::sqrt;
+    
+    typedef DenseIndex Index;
+
+    /* Local variables */
+    Index i, j;
+    Scalar sum, temp, alpha, bnorm;
+    Scalar gnorm, qnorm;
+    Scalar sgnorm;
+
+    /* Function Body */
+    const Scalar epsmch = NumTraits<Scalar>::epsilon();
+    const Index n = qrfac.cols();
+    eigen_assert(n==qtb.size());
+    eigen_assert(n==x.size());
+    eigen_assert(n==diag.size());
+    Matrix< Scalar, Dynamic, 1 >  wa1(n), wa2(n);
+
+    /* first, calculate the gauss-newton direction. */
+    for (j = n-1; j >=0; --j) {
+        temp = qrfac(j,j);
+        if (temp == 0.) {
+            temp = epsmch * qrfac.col(j).head(j+1).maxCoeff();
+            if (temp == 0.)
+                temp = epsmch;
+        }
+        if (j==n-1)
+            x[j] = qtb[j] / temp;
+        else
+            x[j] = (qtb[j] - qrfac.row(j).tail(n-j-1).dot(x.tail(n-j-1))) / temp;
+    }
+
+    /* test whether the gauss-newton direction is acceptable. */
+    qnorm = diag.cwiseProduct(x).stableNorm();
+    if (qnorm <= delta)
+        return;
+
+    // TODO : this path is not tested by Eigen unit tests
+
+    /* the gauss-newton direction is not acceptable. */
+    /* next, calculate the scaled gradient direction. */
+
+    wa1.fill(0.);
+    for (j = 0; j < n; ++j) {
+        wa1.tail(n-j) += qrfac.row(j).tail(n-j) * qtb[j];
+        wa1[j] /= diag[j];
+    }
+
+    /* calculate the norm of the scaled gradient and test for */
+    /* the special case in which the scaled gradient is zero. */
+    gnorm = wa1.stableNorm();
+    sgnorm = 0.;
+    alpha = delta / qnorm;
+    if (gnorm == 0.)
+        goto algo_end;
+
+    /* calculate the point along the scaled gradient */
+    /* at which the quadratic is minimized. */
+    wa1.array() /= (diag*gnorm).array();
+    // TODO : once unit tests cover this part,:
+    // wa2 = qrfac.template triangularView<Upper>() * wa1;
+    for (j = 0; j < n; ++j) {
+        sum = 0.;
+        for (i = j; i < n; ++i) {
+            sum += qrfac(j,i) * wa1[i];
+        }
+        wa2[j] = sum;
+    }
+    temp = wa2.stableNorm();
+    sgnorm = gnorm / temp / temp;
+
+    /* test whether the scaled gradient direction is acceptable. */
+    alpha = 0.;
+    if (sgnorm >= delta)
+        goto algo_end;
+
+    /* the scaled gradient direction is not acceptable. */
+    /* finally, calculate the point along the dogleg */
+    /* at which the quadratic is minimized. */
+    bnorm = qtb.stableNorm();
+    temp = bnorm / gnorm * (bnorm / qnorm) * (sgnorm / delta);
+    temp = temp - delta / qnorm * numext::abs2(sgnorm / delta) + sqrt(numext::abs2(temp - delta / qnorm) + (1.-numext::abs2(delta / qnorm)) * (1.-numext::abs2(sgnorm / delta)));
+    alpha = delta / qnorm * (1. - numext::abs2(sgnorm / delta)) / temp;
+algo_end:
+
+    /* form appropriate convex combination of the gauss-newton */
+    /* direction and the scaled gradient direction. */
+    temp = (1.-alpha) * (std::min)(sgnorm,delta);
+    x = temp * wa1 + alpha * x;
+}
+
+} // end namespace internal
+
+} // end namespace Eigen
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/NonLinearOptimization/HybridNonLinearSolver.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/NonLinearOptimization/HybridNonLinearSolver.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/NonLinearOptimization/HybridNonLinearSolver.h	(revision 3762)
@@ -0,0 +1,601 @@
+// -*- coding: utf-8
+// vim: set fileencoding=utf-8
+
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2009 Thomas Capricelli <orzel@freehackers.org>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_HYBRIDNONLINEARSOLVER_H
+#define EIGEN_HYBRIDNONLINEARSOLVER_H
+
+namespace Eigen { 
+
+namespace HybridNonLinearSolverSpace { 
+    enum Status {
+        Running = -1,
+        ImproperInputParameters = 0,
+        RelativeErrorTooSmall = 1,
+        TooManyFunctionEvaluation = 2,
+        TolTooSmall = 3,
+        NotMakingProgressJacobian = 4,
+        NotMakingProgressIterations = 5,
+        UserAsked = 6
+    };
+}
+
+/**
+  * \ingroup NonLinearOptimization_Module
+  * \brief Finds a zero of a system of n
+  * nonlinear functions in n variables by a modification of the Powell
+  * hybrid method ("dogleg").
+  *
+  * The user must provide a subroutine which calculates the
+  * functions. The Jacobian is either provided by the user, or approximated
+  * using a forward-difference method.
+  *
+  */
+template<typename FunctorType, typename Scalar=double>
+class HybridNonLinearSolver
+{
+public:
+    typedef DenseIndex Index;
+
+    HybridNonLinearSolver(FunctorType &_functor)
+        : functor(_functor) { nfev=njev=iter = 0;  fnorm= 0.; useExternalScaling=false;}
+
+    struct Parameters {
+        Parameters()
+            : factor(Scalar(100.))
+            , maxfev(1000)
+            , xtol(std::sqrt(NumTraits<Scalar>::epsilon()))
+            , nb_of_subdiagonals(-1)
+            , nb_of_superdiagonals(-1)
+            , epsfcn(Scalar(0.)) {}
+        Scalar factor;
+        Index maxfev;   // maximum number of function evaluation
+        Scalar xtol;
+        Index nb_of_subdiagonals;
+        Index nb_of_superdiagonals;
+        Scalar epsfcn;
+    };
+    typedef Matrix< Scalar, Dynamic, 1 > FVectorType;
+    typedef Matrix< Scalar, Dynamic, Dynamic > JacobianType;
+    /* TODO: if eigen provides a triangular storage, use it here */
+    typedef Matrix< Scalar, Dynamic, Dynamic > UpperTriangularType;
+
+    HybridNonLinearSolverSpace::Status hybrj1(
+            FVectorType  &x,
+            const Scalar tol = std::sqrt(NumTraits<Scalar>::epsilon())
+            );
+
+    HybridNonLinearSolverSpace::Status solveInit(FVectorType  &x);
+    HybridNonLinearSolverSpace::Status solveOneStep(FVectorType  &x);
+    HybridNonLinearSolverSpace::Status solve(FVectorType  &x);
+
+    HybridNonLinearSolverSpace::Status hybrd1(
+            FVectorType  &x,
+            const Scalar tol = std::sqrt(NumTraits<Scalar>::epsilon())
+            );
+
+    HybridNonLinearSolverSpace::Status solveNumericalDiffInit(FVectorType  &x);
+    HybridNonLinearSolverSpace::Status solveNumericalDiffOneStep(FVectorType  &x);
+    HybridNonLinearSolverSpace::Status solveNumericalDiff(FVectorType  &x);
+
+    void resetParameters(void) { parameters = Parameters(); }
+    Parameters parameters;
+    FVectorType  fvec, qtf, diag;
+    JacobianType fjac;
+    UpperTriangularType R;
+    Index nfev;
+    Index njev;
+    Index iter;
+    Scalar fnorm;
+    bool useExternalScaling; 
+private:
+    FunctorType &functor;
+    Index n;
+    Scalar sum;
+    bool sing;
+    Scalar temp;
+    Scalar delta;
+    bool jeval;
+    Index ncsuc;
+    Scalar ratio;
+    Scalar pnorm, xnorm, fnorm1;
+    Index nslow1, nslow2;
+    Index ncfail;
+    Scalar actred, prered;
+    FVectorType wa1, wa2, wa3, wa4;
+
+    HybridNonLinearSolver& operator=(const HybridNonLinearSolver&);
+};
+
+
+
+template<typename FunctorType, typename Scalar>
+HybridNonLinearSolverSpace::Status
+HybridNonLinearSolver<FunctorType,Scalar>::hybrj1(
+        FVectorType  &x,
+        const Scalar tol
+        )
+{
+    n = x.size();
+
+    /* check the input parameters for errors. */
+    if (n <= 0 || tol < 0.)
+        return HybridNonLinearSolverSpace::ImproperInputParameters;
+
+    resetParameters();
+    parameters.maxfev = 100*(n+1);
+    parameters.xtol = tol;
+    diag.setConstant(n, 1.);
+    useExternalScaling = true;
+    return solve(x);
+}
+
+template<typename FunctorType, typename Scalar>
+HybridNonLinearSolverSpace::Status
+HybridNonLinearSolver<FunctorType,Scalar>::solveInit(FVectorType  &x)
+{
+    n = x.size();
+
+    wa1.resize(n); wa2.resize(n); wa3.resize(n); wa4.resize(n);
+    fvec.resize(n);
+    qtf.resize(n);
+    fjac.resize(n, n);
+    if (!useExternalScaling)
+        diag.resize(n);
+    eigen_assert( (!useExternalScaling || diag.size()==n) && "When useExternalScaling is set, the caller must provide a valid 'diag'");
+
+    /* Function Body */
+    nfev = 0;
+    njev = 0;
+
+    /*     check the input parameters for errors. */
+    if (n <= 0 || parameters.xtol < 0. || parameters.maxfev <= 0 || parameters.factor <= 0. )
+        return HybridNonLinearSolverSpace::ImproperInputParameters;
+    if (useExternalScaling)
+        for (Index j = 0; j < n; ++j)
+            if (diag[j] <= 0.)
+                return HybridNonLinearSolverSpace::ImproperInputParameters;
+
+    /*     evaluate the function at the starting point */
+    /*     and calculate its norm. */
+    nfev = 1;
+    if ( functor(x, fvec) < 0)
+        return HybridNonLinearSolverSpace::UserAsked;
+    fnorm = fvec.stableNorm();
+
+    /*     initialize iteration counter and monitors. */
+    iter = 1;
+    ncsuc = 0;
+    ncfail = 0;
+    nslow1 = 0;
+    nslow2 = 0;
+
+    return HybridNonLinearSolverSpace::Running;
+}
+
+template<typename FunctorType, typename Scalar>
+HybridNonLinearSolverSpace::Status
+HybridNonLinearSolver<FunctorType,Scalar>::solveOneStep(FVectorType  &x)
+{
+    using std::abs;
+    
+    eigen_assert(x.size()==n); // check the caller is not cheating us
+
+    Index j;
+    std::vector<JacobiRotation<Scalar> > v_givens(n), w_givens(n);
+
+    jeval = true;
+
+    /* calculate the jacobian matrix. */
+    if ( functor.df(x, fjac) < 0)
+        return HybridNonLinearSolverSpace::UserAsked;
+    ++njev;
+
+    wa2 = fjac.colwise().blueNorm();
+
+    /* on the first iteration and if external scaling is not used, scale according */
+    /* to the norms of the columns of the initial jacobian. */
+    if (iter == 1) {
+        if (!useExternalScaling)
+            for (j = 0; j < n; ++j)
+                diag[j] = (wa2[j]==0.) ? 1. : wa2[j];
+
+        /* on the first iteration, calculate the norm of the scaled x */
+        /* and initialize the step bound delta. */
+        xnorm = diag.cwiseProduct(x).stableNorm();
+        delta = parameters.factor * xnorm;
+        if (delta == 0.)
+            delta = parameters.factor;
+    }
+
+    /* compute the qr factorization of the jacobian. */
+    HouseholderQR<JacobianType> qrfac(fjac); // no pivoting:
+
+    /* copy the triangular factor of the qr factorization into r. */
+    R = qrfac.matrixQR();
+
+    /* accumulate the orthogonal factor in fjac. */
+    fjac = qrfac.householderQ();
+
+    /* form (q transpose)*fvec and store in qtf. */
+    qtf = fjac.transpose() * fvec;
+
+    /* rescale if necessary. */
+    if (!useExternalScaling)
+        diag = diag.cwiseMax(wa2);
+
+    while (true) {
+        /* determine the direction p. */
+        internal::dogleg<Scalar>(R, diag, qtf, delta, wa1);
+
+        /* store the direction p and x + p. calculate the norm of p. */
+        wa1 = -wa1;
+        wa2 = x + wa1;
+        pnorm = diag.cwiseProduct(wa1).stableNorm();
+
+        /* on the first iteration, adjust the initial step bound. */
+        if (iter == 1)
+            delta = (std::min)(delta,pnorm);
+
+        /* evaluate the function at x + p and calculate its norm. */
+        if ( functor(wa2, wa4) < 0)
+            return HybridNonLinearSolverSpace::UserAsked;
+        ++nfev;
+        fnorm1 = wa4.stableNorm();
+
+        /* compute the scaled actual reduction. */
+        actred = -1.;
+        if (fnorm1 < fnorm) /* Computing 2nd power */
+            actred = 1. - numext::abs2(fnorm1 / fnorm);
+
+        /* compute the scaled predicted reduction. */
+        wa3 = R.template triangularView<Upper>()*wa1 + qtf;
+        temp = wa3.stableNorm();
+        prered = 0.;
+        if (temp < fnorm) /* Computing 2nd power */
+            prered = 1. - numext::abs2(temp / fnorm);
+
+        /* compute the ratio of the actual to the predicted reduction. */
+        ratio = 0.;
+        if (prered > 0.)
+            ratio = actred / prered;
+
+        /* update the step bound. */
+        if (ratio < Scalar(.1)) {
+            ncsuc = 0;
+            ++ncfail;
+            delta = Scalar(.5) * delta;
+        } else {
+            ncfail = 0;
+            ++ncsuc;
+            if (ratio >= Scalar(.5) || ncsuc > 1)
+                delta = (std::max)(delta, pnorm / Scalar(.5));
+            if (abs(ratio - 1.) <= Scalar(.1)) {
+                delta = pnorm / Scalar(.5);
+            }
+        }
+
+        /* test for successful iteration. */
+        if (ratio >= Scalar(1e-4)) {
+            /* successful iteration. update x, fvec, and their norms. */
+            x = wa2;
+            wa2 = diag.cwiseProduct(x);
+            fvec = wa4;
+            xnorm = wa2.stableNorm();
+            fnorm = fnorm1;
+            ++iter;
+        }
+
+        /* determine the progress of the iteration. */
+        ++nslow1;
+        if (actred >= Scalar(.001))
+            nslow1 = 0;
+        if (jeval)
+            ++nslow2;
+        if (actred >= Scalar(.1))
+            nslow2 = 0;
+
+        /* test for convergence. */
+        if (delta <= parameters.xtol * xnorm || fnorm == 0.)
+            return HybridNonLinearSolverSpace::RelativeErrorTooSmall;
+
+        /* tests for termination and stringent tolerances. */
+        if (nfev >= parameters.maxfev)
+            return HybridNonLinearSolverSpace::TooManyFunctionEvaluation;
+        if (Scalar(.1) * (std::max)(Scalar(.1) * delta, pnorm) <= NumTraits<Scalar>::epsilon() * xnorm)
+            return HybridNonLinearSolverSpace::TolTooSmall;
+        if (nslow2 == 5)
+            return HybridNonLinearSolverSpace::NotMakingProgressJacobian;
+        if (nslow1 == 10)
+            return HybridNonLinearSolverSpace::NotMakingProgressIterations;
+
+        /* criterion for recalculating jacobian. */
+        if (ncfail == 2)
+            break; // leave inner loop and go for the next outer loop iteration
+
+        /* calculate the rank one modification to the jacobian */
+        /* and update qtf if necessary. */
+        wa1 = diag.cwiseProduct( diag.cwiseProduct(wa1)/pnorm );
+        wa2 = fjac.transpose() * wa4;
+        if (ratio >= Scalar(1e-4))
+            qtf = wa2;
+        wa2 = (wa2-wa3)/pnorm;
+
+        /* compute the qr factorization of the updated jacobian. */
+        internal::r1updt<Scalar>(R, wa1, v_givens, w_givens, wa2, wa3, &sing);
+        internal::r1mpyq<Scalar>(n, n, fjac.data(), v_givens, w_givens);
+        internal::r1mpyq<Scalar>(1, n, qtf.data(), v_givens, w_givens);
+
+        jeval = false;
+    }
+    return HybridNonLinearSolverSpace::Running;
+}
+
+template<typename FunctorType, typename Scalar>
+HybridNonLinearSolverSpace::Status
+HybridNonLinearSolver<FunctorType,Scalar>::solve(FVectorType  &x)
+{
+    HybridNonLinearSolverSpace::Status status = solveInit(x);
+    if (status==HybridNonLinearSolverSpace::ImproperInputParameters)
+        return status;
+    while (status==HybridNonLinearSolverSpace::Running)
+        status = solveOneStep(x);
+    return status;
+}
+
+
+
+template<typename FunctorType, typename Scalar>
+HybridNonLinearSolverSpace::Status
+HybridNonLinearSolver<FunctorType,Scalar>::hybrd1(
+        FVectorType  &x,
+        const Scalar tol
+        )
+{
+    n = x.size();
+
+    /* check the input parameters for errors. */
+    if (n <= 0 || tol < 0.)
+        return HybridNonLinearSolverSpace::ImproperInputParameters;
+
+    resetParameters();
+    parameters.maxfev = 200*(n+1);
+    parameters.xtol = tol;
+
+    diag.setConstant(n, 1.);
+    useExternalScaling = true;
+    return solveNumericalDiff(x);
+}
+
+template<typename FunctorType, typename Scalar>
+HybridNonLinearSolverSpace::Status
+HybridNonLinearSolver<FunctorType,Scalar>::solveNumericalDiffInit(FVectorType  &x)
+{
+    n = x.size();
+
+    if (parameters.nb_of_subdiagonals<0) parameters.nb_of_subdiagonals= n-1;
+    if (parameters.nb_of_superdiagonals<0) parameters.nb_of_superdiagonals= n-1;
+
+    wa1.resize(n); wa2.resize(n); wa3.resize(n); wa4.resize(n);
+    qtf.resize(n);
+    fjac.resize(n, n);
+    fvec.resize(n);
+    if (!useExternalScaling)
+        diag.resize(n);
+    eigen_assert( (!useExternalScaling || diag.size()==n) && "When useExternalScaling is set, the caller must provide a valid 'diag'");
+
+    /* Function Body */
+    nfev = 0;
+    njev = 0;
+
+    /*     check the input parameters for errors. */
+    if (n <= 0 || parameters.xtol < 0. || parameters.maxfev <= 0 || parameters.nb_of_subdiagonals< 0 || parameters.nb_of_superdiagonals< 0 || parameters.factor <= 0. )
+        return HybridNonLinearSolverSpace::ImproperInputParameters;
+    if (useExternalScaling)
+        for (Index j = 0; j < n; ++j)
+            if (diag[j] <= 0.)
+                return HybridNonLinearSolverSpace::ImproperInputParameters;
+
+    /*     evaluate the function at the starting point */
+    /*     and calculate its norm. */
+    nfev = 1;
+    if ( functor(x, fvec) < 0)
+        return HybridNonLinearSolverSpace::UserAsked;
+    fnorm = fvec.stableNorm();
+
+    /*     initialize iteration counter and monitors. */
+    iter = 1;
+    ncsuc = 0;
+    ncfail = 0;
+    nslow1 = 0;
+    nslow2 = 0;
+
+    return HybridNonLinearSolverSpace::Running;
+}
+
+template<typename FunctorType, typename Scalar>
+HybridNonLinearSolverSpace::Status
+HybridNonLinearSolver<FunctorType,Scalar>::solveNumericalDiffOneStep(FVectorType  &x)
+{
+    using std::sqrt;
+    using std::abs;
+    
+    assert(x.size()==n); // check the caller is not cheating us
+
+    Index j;
+    std::vector<JacobiRotation<Scalar> > v_givens(n), w_givens(n);
+
+    jeval = true;
+    if (parameters.nb_of_subdiagonals<0) parameters.nb_of_subdiagonals= n-1;
+    if (parameters.nb_of_superdiagonals<0) parameters.nb_of_superdiagonals= n-1;
+
+    /* calculate the jacobian matrix. */
+    if (internal::fdjac1(functor, x, fvec, fjac, parameters.nb_of_subdiagonals, parameters.nb_of_superdiagonals, parameters.epsfcn) <0)
+        return HybridNonLinearSolverSpace::UserAsked;
+    nfev += (std::min)(parameters.nb_of_subdiagonals+parameters.nb_of_superdiagonals+ 1, n);
+
+    wa2 = fjac.colwise().blueNorm();
+
+    /* on the first iteration and if external scaling is not used, scale according */
+    /* to the norms of the columns of the initial jacobian. */
+    if (iter == 1) {
+        if (!useExternalScaling)
+            for (j = 0; j < n; ++j)
+                diag[j] = (wa2[j]==0.) ? 1. : wa2[j];
+
+        /* on the first iteration, calculate the norm of the scaled x */
+        /* and initialize the step bound delta. */
+        xnorm = diag.cwiseProduct(x).stableNorm();
+        delta = parameters.factor * xnorm;
+        if (delta == 0.)
+            delta = parameters.factor;
+    }
+
+    /* compute the qr factorization of the jacobian. */
+    HouseholderQR<JacobianType> qrfac(fjac); // no pivoting:
+
+    /* copy the triangular factor of the qr factorization into r. */
+    R = qrfac.matrixQR();
+
+    /* accumulate the orthogonal factor in fjac. */
+    fjac = qrfac.householderQ();
+
+    /* form (q transpose)*fvec and store in qtf. */
+    qtf = fjac.transpose() * fvec;
+
+    /* rescale if necessary. */
+    if (!useExternalScaling)
+        diag = diag.cwiseMax(wa2);
+
+    while (true) {
+        /* determine the direction p. */
+        internal::dogleg<Scalar>(R, diag, qtf, delta, wa1);
+
+        /* store the direction p and x + p. calculate the norm of p. */
+        wa1 = -wa1;
+        wa2 = x + wa1;
+        pnorm = diag.cwiseProduct(wa1).stableNorm();
+
+        /* on the first iteration, adjust the initial step bound. */
+        if (iter == 1)
+            delta = (std::min)(delta,pnorm);
+
+        /* evaluate the function at x + p and calculate its norm. */
+        if ( functor(wa2, wa4) < 0)
+            return HybridNonLinearSolverSpace::UserAsked;
+        ++nfev;
+        fnorm1 = wa4.stableNorm();
+
+        /* compute the scaled actual reduction. */
+        actred = -1.;
+        if (fnorm1 < fnorm) /* Computing 2nd power */
+            actred = 1. - numext::abs2(fnorm1 / fnorm);
+
+        /* compute the scaled predicted reduction. */
+        wa3 = R.template triangularView<Upper>()*wa1 + qtf;
+        temp = wa3.stableNorm();
+        prered = 0.;
+        if (temp < fnorm) /* Computing 2nd power */
+            prered = 1. - numext::abs2(temp / fnorm);
+
+        /* compute the ratio of the actual to the predicted reduction. */
+        ratio = 0.;
+        if (prered > 0.)
+            ratio = actred / prered;
+
+        /* update the step bound. */
+        if (ratio < Scalar(.1)) {
+            ncsuc = 0;
+            ++ncfail;
+            delta = Scalar(.5) * delta;
+        } else {
+            ncfail = 0;
+            ++ncsuc;
+            if (ratio >= Scalar(.5) || ncsuc > 1)
+                delta = (std::max)(delta, pnorm / Scalar(.5));
+            if (abs(ratio - 1.) <= Scalar(.1)) {
+                delta = pnorm / Scalar(.5);
+            }
+        }
+
+        /* test for successful iteration. */
+        if (ratio >= Scalar(1e-4)) {
+            /* successful iteration. update x, fvec, and their norms. */
+            x = wa2;
+            wa2 = diag.cwiseProduct(x);
+            fvec = wa4;
+            xnorm = wa2.stableNorm();
+            fnorm = fnorm1;
+            ++iter;
+        }
+
+        /* determine the progress of the iteration. */
+        ++nslow1;
+        if (actred >= Scalar(.001))
+            nslow1 = 0;
+        if (jeval)
+            ++nslow2;
+        if (actred >= Scalar(.1))
+            nslow2 = 0;
+
+        /* test for convergence. */
+        if (delta <= parameters.xtol * xnorm || fnorm == 0.)
+            return HybridNonLinearSolverSpace::RelativeErrorTooSmall;
+
+        /* tests for termination and stringent tolerances. */
+        if (nfev >= parameters.maxfev)
+            return HybridNonLinearSolverSpace::TooManyFunctionEvaluation;
+        if (Scalar(.1) * (std::max)(Scalar(.1) * delta, pnorm) <= NumTraits<Scalar>::epsilon() * xnorm)
+            return HybridNonLinearSolverSpace::TolTooSmall;
+        if (nslow2 == 5)
+            return HybridNonLinearSolverSpace::NotMakingProgressJacobian;
+        if (nslow1 == 10)
+            return HybridNonLinearSolverSpace::NotMakingProgressIterations;
+
+        /* criterion for recalculating jacobian. */
+        if (ncfail == 2)
+            break; // leave inner loop and go for the next outer loop iteration
+
+        /* calculate the rank one modification to the jacobian */
+        /* and update qtf if necessary. */
+        wa1 = diag.cwiseProduct( diag.cwiseProduct(wa1)/pnorm );
+        wa2 = fjac.transpose() * wa4;
+        if (ratio >= Scalar(1e-4))
+            qtf = wa2;
+        wa2 = (wa2-wa3)/pnorm;
+
+        /* compute the qr factorization of the updated jacobian. */
+        internal::r1updt<Scalar>(R, wa1, v_givens, w_givens, wa2, wa3, &sing);
+        internal::r1mpyq<Scalar>(n, n, fjac.data(), v_givens, w_givens);
+        internal::r1mpyq<Scalar>(1, n, qtf.data(), v_givens, w_givens);
+
+        jeval = false;
+    }
+    return HybridNonLinearSolverSpace::Running;
+}
+
+template<typename FunctorType, typename Scalar>
+HybridNonLinearSolverSpace::Status
+HybridNonLinearSolver<FunctorType,Scalar>::solveNumericalDiff(FVectorType  &x)
+{
+    HybridNonLinearSolverSpace::Status status = solveNumericalDiffInit(x);
+    if (status==HybridNonLinearSolverSpace::ImproperInputParameters)
+        return status;
+    while (status==HybridNonLinearSolverSpace::Running)
+        status = solveNumericalDiffOneStep(x);
+    return status;
+}
+
+} // end namespace Eigen
+
+#endif // EIGEN_HYBRIDNONLINEARSOLVER_H
+
+//vim: ai ts=4 sts=4 et sw=4
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/NonLinearOptimization/rwupdt.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/NonLinearOptimization/rwupdt.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/NonLinearOptimization/rwupdt.h	(revision 3762)
@@ -0,0 +1,49 @@
+namespace Eigen { 
+
+namespace internal {
+
+template <typename Scalar>
+void rwupdt(
+        Matrix< Scalar, Dynamic, Dynamic >  &r,
+        const Matrix< Scalar, Dynamic, 1>  &w,
+        Matrix< Scalar, Dynamic, 1>  &b,
+        Scalar alpha)
+{
+    typedef DenseIndex Index;
+
+    const Index n = r.cols();
+    eigen_assert(r.rows()>=n);
+    std::vector<JacobiRotation<Scalar> > givens(n);
+
+    /* Local variables */
+    Scalar temp, rowj;
+
+    /* Function Body */
+    for (Index j = 0; j < n; ++j) {
+        rowj = w[j];
+
+        /* apply the previous transformations to */
+        /* r(i,j), i=0,1,...,j-1, and to w(j). */
+        for (Index i = 0; i < j; ++i) {
+            temp = givens[i].c() * r(i,j) + givens[i].s() * rowj;
+            rowj = -givens[i].s() * r(i,j) + givens[i].c() * rowj;
+            r(i,j) = temp;
+        }
+
+        /* determine a givens rotation which eliminates w(j). */
+        givens[j].makeGivens(-r(j,j), rowj);
+
+        if (rowj == 0.)
+            continue; // givens[j] is identity
+
+        /* apply the current transformation to r(j,j), b(j), and alpha. */
+        r(j,j) = givens[j].c() * r(j,j) + givens[j].s() * rowj;
+        temp = givens[j].c() * b[j] + givens[j].s() * alpha;
+        alpha = -givens[j].s() * b[j] + givens[j].c() * alpha;
+        b[j] = temp;
+    }
+}
+
+} // end namespace internal
+
+} // end namespace Eigen
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/NonLinearOptimization/qrsolv.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/NonLinearOptimization/qrsolv.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/NonLinearOptimization/qrsolv.h	(revision 3762)
@@ -0,0 +1,91 @@
+namespace Eigen { 
+
+namespace internal {
+
+// TODO : once qrsolv2 is removed, use ColPivHouseholderQR or PermutationMatrix instead of ipvt
+template <typename Scalar>
+void qrsolv(
+        Matrix< Scalar, Dynamic, Dynamic > &s,
+        // TODO : use a PermutationMatrix once lmpar is no more:
+        const VectorXi &ipvt,
+        const Matrix< Scalar, Dynamic, 1 >  &diag,
+        const Matrix< Scalar, Dynamic, 1 >  &qtb,
+        Matrix< Scalar, Dynamic, 1 >  &x,
+        Matrix< Scalar, Dynamic, 1 >  &sdiag)
+
+{
+    typedef DenseIndex Index;
+
+    /* Local variables */
+    Index i, j, k, l;
+    Scalar temp;
+    Index n = s.cols();
+    Matrix< Scalar, Dynamic, 1 >  wa(n);
+    JacobiRotation<Scalar> givens;
+
+    /* Function Body */
+    // the following will only change the lower triangular part of s, including
+    // the diagonal, though the diagonal is restored afterward
+
+    /*     copy r and (q transpose)*b to preserve input and initialize s. */
+    /*     in particular, save the diagonal elements of r in x. */
+    x = s.diagonal();
+    wa = qtb;
+
+    s.topLeftCorner(n,n).template triangularView<StrictlyLower>() = s.topLeftCorner(n,n).transpose();
+
+    /*     eliminate the diagonal matrix d using a givens rotation. */
+    for (j = 0; j < n; ++j) {
+
+        /*        prepare the row of d to be eliminated, locating the */
+        /*        diagonal element using p from the qr factorization. */
+        l = ipvt[j];
+        if (diag[l] == 0.)
+            break;
+        sdiag.tail(n-j).setZero();
+        sdiag[j] = diag[l];
+
+        /*        the transformations to eliminate the row of d */
+        /*        modify only a single element of (q transpose)*b */
+        /*        beyond the first n, which is initially zero. */
+        Scalar qtbpj = 0.;
+        for (k = j; k < n; ++k) {
+            /*           determine a givens rotation which eliminates the */
+            /*           appropriate element in the current row of d. */
+            givens.makeGivens(-s(k,k), sdiag[k]);
+
+            /*           compute the modified diagonal element of r and */
+            /*           the modified element of ((q transpose)*b,0). */
+            s(k,k) = givens.c() * s(k,k) + givens.s() * sdiag[k];
+            temp = givens.c() * wa[k] + givens.s() * qtbpj;
+            qtbpj = -givens.s() * wa[k] + givens.c() * qtbpj;
+            wa[k] = temp;
+
+            /*           accumulate the tranformation in the row of s. */
+            for (i = k+1; i<n; ++i) {
+                temp = givens.c() * s(i,k) + givens.s() * sdiag[i];
+                sdiag[i] = -givens.s() * s(i,k) + givens.c() * sdiag[i];
+                s(i,k) = temp;
+            }
+        }
+    }
+
+    /*     solve the triangular system for z. if the system is */
+    /*     singular, then obtain a least squares solution. */
+    Index nsing;
+    for(nsing=0; nsing<n && sdiag[nsing]!=0; nsing++) {}
+
+    wa.tail(n-nsing).setZero();
+    s.topLeftCorner(nsing, nsing).transpose().template triangularView<Upper>().solveInPlace(wa.head(nsing));
+
+    // restore
+    sdiag = s.diagonal();
+    s.diagonal() = x;
+
+    /*     permute the components of z back to components of x. */
+    for (j = 0; j < n; ++j) x[ipvt[j]] = wa[j];
+}
+
+} // end namespace internal
+
+} // end namespace Eigen
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h	(revision 3762)
@@ -0,0 +1,368 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2011, 2013 Jitse Niesen <jitse@maths.leeds.ac.uk>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_MATRIX_SQUARE_ROOT
+#define EIGEN_MATRIX_SQUARE_ROOT
+
+namespace Eigen { 
+
+namespace internal {
+
+// pre:  T.block(i,i,2,2) has complex conjugate eigenvalues
+// post: sqrtT.block(i,i,2,2) is square root of T.block(i,i,2,2)
+template <typename MatrixType, typename ResultType>
+void matrix_sqrt_quasi_triangular_2x2_diagonal_block(const MatrixType& T, typename MatrixType::Index i, ResultType& sqrtT)
+{
+  // TODO: This case (2-by-2 blocks with complex conjugate eigenvalues) is probably hidden somewhere
+  //       in EigenSolver. If we expose it, we could call it directly from here.
+  typedef typename traits<MatrixType>::Scalar Scalar;
+  Matrix<Scalar,2,2> block = T.template block<2,2>(i,i);
+  EigenSolver<Matrix<Scalar,2,2> > es(block);
+  sqrtT.template block<2,2>(i,i)
+    = (es.eigenvectors() * es.eigenvalues().cwiseSqrt().asDiagonal() * es.eigenvectors().inverse()).real();
+}
+
+// pre:  block structure of T is such that (i,j) is a 1x1 block,
+//       all blocks of sqrtT to left of and below (i,j) are correct
+// post: sqrtT(i,j) has the correct value
+template <typename MatrixType, typename ResultType>
+void matrix_sqrt_quasi_triangular_1x1_off_diagonal_block(const MatrixType& T, typename MatrixType::Index i, typename MatrixType::Index j, ResultType& sqrtT)
+{
+  typedef typename traits<MatrixType>::Scalar Scalar;
+  Scalar tmp = (sqrtT.row(i).segment(i+1,j-i-1) * sqrtT.col(j).segment(i+1,j-i-1)).value();
+  sqrtT.coeffRef(i,j) = (T.coeff(i,j) - tmp) / (sqrtT.coeff(i,i) + sqrtT.coeff(j,j));
+}
+
+// similar to compute1x1offDiagonalBlock()
+template <typename MatrixType, typename ResultType>
+void matrix_sqrt_quasi_triangular_1x2_off_diagonal_block(const MatrixType& T, typename MatrixType::Index i, typename MatrixType::Index j, ResultType& sqrtT)
+{
+  typedef typename traits<MatrixType>::Scalar Scalar;
+  Matrix<Scalar,1,2> rhs = T.template block<1,2>(i,j);
+  if (j-i > 1)
+    rhs -= sqrtT.block(i, i+1, 1, j-i-1) * sqrtT.block(i+1, j, j-i-1, 2);
+  Matrix<Scalar,2,2> A = sqrtT.coeff(i,i) * Matrix<Scalar,2,2>::Identity();
+  A += sqrtT.template block<2,2>(j,j).transpose();
+  sqrtT.template block<1,2>(i,j).transpose() = A.fullPivLu().solve(rhs.transpose());
+}
+
+// similar to compute1x1offDiagonalBlock()
+template <typename MatrixType, typename ResultType>
+void matrix_sqrt_quasi_triangular_2x1_off_diagonal_block(const MatrixType& T, typename MatrixType::Index i, typename MatrixType::Index j, ResultType& sqrtT)
+{
+  typedef typename traits<MatrixType>::Scalar Scalar;
+  Matrix<Scalar,2,1> rhs = T.template block<2,1>(i,j);
+  if (j-i > 2)
+    rhs -= sqrtT.block(i, i+2, 2, j-i-2) * sqrtT.block(i+2, j, j-i-2, 1);
+  Matrix<Scalar,2,2> A = sqrtT.coeff(j,j) * Matrix<Scalar,2,2>::Identity();
+  A += sqrtT.template block<2,2>(i,i);
+  sqrtT.template block<2,1>(i,j) = A.fullPivLu().solve(rhs);
+}
+
+// solves the equation A X + X B = C where all matrices are 2-by-2
+template <typename MatrixType>
+void matrix_sqrt_quasi_triangular_solve_auxiliary_equation(MatrixType& X, const MatrixType& A, const MatrixType& B, const MatrixType& C)
+{
+  typedef typename traits<MatrixType>::Scalar Scalar;
+  Matrix<Scalar,4,4> coeffMatrix = Matrix<Scalar,4,4>::Zero();
+  coeffMatrix.coeffRef(0,0) = A.coeff(0,0) + B.coeff(0,0);
+  coeffMatrix.coeffRef(1,1) = A.coeff(0,0) + B.coeff(1,1);
+  coeffMatrix.coeffRef(2,2) = A.coeff(1,1) + B.coeff(0,0);
+  coeffMatrix.coeffRef(3,3) = A.coeff(1,1) + B.coeff(1,1);
+  coeffMatrix.coeffRef(0,1) = B.coeff(1,0);
+  coeffMatrix.coeffRef(0,2) = A.coeff(0,1);
+  coeffMatrix.coeffRef(1,0) = B.coeff(0,1);
+  coeffMatrix.coeffRef(1,3) = A.coeff(0,1);
+  coeffMatrix.coeffRef(2,0) = A.coeff(1,0);
+  coeffMatrix.coeffRef(2,3) = B.coeff(1,0);
+  coeffMatrix.coeffRef(3,1) = A.coeff(1,0);
+  coeffMatrix.coeffRef(3,2) = B.coeff(0,1);
+
+  Matrix<Scalar,4,1> rhs;
+  rhs.coeffRef(0) = C.coeff(0,0);
+  rhs.coeffRef(1) = C.coeff(0,1);
+  rhs.coeffRef(2) = C.coeff(1,0);
+  rhs.coeffRef(3) = C.coeff(1,1);
+
+  Matrix<Scalar,4,1> result;
+  result = coeffMatrix.fullPivLu().solve(rhs);
+
+  X.coeffRef(0,0) = result.coeff(0);
+  X.coeffRef(0,1) = result.coeff(1);
+  X.coeffRef(1,0) = result.coeff(2);
+  X.coeffRef(1,1) = result.coeff(3);
+}
+
+// similar to compute1x1offDiagonalBlock()
+template <typename MatrixType, typename ResultType>
+void matrix_sqrt_quasi_triangular_2x2_off_diagonal_block(const MatrixType& T, typename MatrixType::Index i, typename MatrixType::Index j, ResultType& sqrtT)
+{
+  typedef typename traits<MatrixType>::Scalar Scalar;
+  Matrix<Scalar,2,2> A = sqrtT.template block<2,2>(i,i);
+  Matrix<Scalar,2,2> B = sqrtT.template block<2,2>(j,j);
+  Matrix<Scalar,2,2> C = T.template block<2,2>(i,j);
+  if (j-i > 2)
+    C -= sqrtT.block(i, i+2, 2, j-i-2) * sqrtT.block(i+2, j, j-i-2, 2);
+  Matrix<Scalar,2,2> X;
+  matrix_sqrt_quasi_triangular_solve_auxiliary_equation(X, A, B, C);
+  sqrtT.template block<2,2>(i,j) = X;
+}
+
+// pre:  T is quasi-upper-triangular and sqrtT is a zero matrix of the same size
+// post: the diagonal blocks of sqrtT are the square roots of the diagonal blocks of T
+template <typename MatrixType, typename ResultType>
+void matrix_sqrt_quasi_triangular_diagonal(const MatrixType& T, ResultType& sqrtT)
+{
+  using std::sqrt;
+  const Index size = T.rows();
+  for (Index i = 0; i < size; i++) {
+    if (i == size - 1 || T.coeff(i+1, i) == 0) {
+      eigen_assert(T(i,i) >= 0);
+      sqrtT.coeffRef(i,i) = sqrt(T.coeff(i,i));
+    }
+    else {
+      matrix_sqrt_quasi_triangular_2x2_diagonal_block(T, i, sqrtT);
+      ++i;
+    }
+  }
+}
+
+// pre:  T is quasi-upper-triangular and diagonal blocks of sqrtT are square root of diagonal blocks of T.
+// post: sqrtT is the square root of T.
+template <typename MatrixType, typename ResultType>
+void matrix_sqrt_quasi_triangular_off_diagonal(const MatrixType& T, ResultType& sqrtT)
+{
+  const Index size = T.rows();
+  for (Index j = 1; j < size; j++) {
+      if (T.coeff(j, j-1) != 0)  // if T(j-1:j, j-1:j) is a 2-by-2 block
+	continue;
+    for (Index i = j-1; i >= 0; i--) {
+      if (i > 0 && T.coeff(i, i-1) != 0)  // if T(i-1:i, i-1:i) is a 2-by-2 block
+	continue;
+      bool iBlockIs2x2 = (i < size - 1) && (T.coeff(i+1, i) != 0);
+      bool jBlockIs2x2 = (j < size - 1) && (T.coeff(j+1, j) != 0);
+      if (iBlockIs2x2 && jBlockIs2x2) 
+        matrix_sqrt_quasi_triangular_2x2_off_diagonal_block(T, i, j, sqrtT);
+      else if (iBlockIs2x2 && !jBlockIs2x2) 
+        matrix_sqrt_quasi_triangular_2x1_off_diagonal_block(T, i, j, sqrtT);
+      else if (!iBlockIs2x2 && jBlockIs2x2) 
+        matrix_sqrt_quasi_triangular_1x2_off_diagonal_block(T, i, j, sqrtT);
+      else if (!iBlockIs2x2 && !jBlockIs2x2) 
+        matrix_sqrt_quasi_triangular_1x1_off_diagonal_block(T, i, j, sqrtT);
+    }
+  }
+}
+
+} // end of namespace internal
+
+/** \ingroup MatrixFunctions_Module
+  * \brief Compute matrix square root of quasi-triangular matrix.
+  *
+  * \tparam  MatrixType  type of \p arg, the argument of matrix square root,
+  *                      expected to be an instantiation of the Matrix class template.
+  * \tparam  ResultType  type of \p result, where result is to be stored.
+  * \param[in]  arg      argument of matrix square root.
+  * \param[out] result   matrix square root of upper Hessenberg part of \p arg.
+  *
+  * This function computes the square root of the upper quasi-triangular matrix stored in the upper
+  * Hessenberg part of \p arg.  Only the upper Hessenberg part of \p result is updated, the rest is
+  * not touched.  See MatrixBase::sqrt() for details on how this computation is implemented.
+  *
+  * \sa MatrixSquareRoot, MatrixSquareRootQuasiTriangular
+  */
+template <typename MatrixType, typename ResultType> 
+void matrix_sqrt_quasi_triangular(const MatrixType &arg, ResultType &result)
+{
+  eigen_assert(arg.rows() == arg.cols());
+  result.resize(arg.rows(), arg.cols());
+  internal::matrix_sqrt_quasi_triangular_diagonal(arg, result);
+  internal::matrix_sqrt_quasi_triangular_off_diagonal(arg, result);
+}
+
+
+/** \ingroup MatrixFunctions_Module
+  * \brief Compute matrix square root of triangular matrix.
+  *
+  * \tparam  MatrixType  type of \p arg, the argument of matrix square root,
+  *                      expected to be an instantiation of the Matrix class template.
+  * \tparam  ResultType  type of \p result, where result is to be stored.
+  * \param[in]  arg      argument of matrix square root.
+  * \param[out] result   matrix square root of upper triangular part of \p arg.
+  *
+  * Only the upper triangular part (including the diagonal) of \p result is updated, the rest is not
+  * touched.  See MatrixBase::sqrt() for details on how this computation is implemented.
+  *
+  * \sa MatrixSquareRoot, MatrixSquareRootQuasiTriangular
+  */
+template <typename MatrixType, typename ResultType> 
+void matrix_sqrt_triangular(const MatrixType &arg, ResultType &result)
+{
+  using std::sqrt;
+      typedef typename MatrixType::Scalar Scalar;
+
+  eigen_assert(arg.rows() == arg.cols());
+
+  // Compute square root of arg and store it in upper triangular part of result
+  // This uses that the square root of triangular matrices can be computed directly.
+  result.resize(arg.rows(), arg.cols());
+  for (Index i = 0; i < arg.rows(); i++) {
+    result.coeffRef(i,i) = sqrt(arg.coeff(i,i));
+  }
+  for (Index j = 1; j < arg.cols(); j++) {
+    for (Index i = j-1; i >= 0; i--) {
+      // if i = j-1, then segment has length 0 so tmp = 0
+      Scalar tmp = (result.row(i).segment(i+1,j-i-1) * result.col(j).segment(i+1,j-i-1)).value();
+      // denominator may be zero if original matrix is singular
+      result.coeffRef(i,j) = (arg.coeff(i,j) - tmp) / (result.coeff(i,i) + result.coeff(j,j));
+    }
+  }
+}
+
+
+namespace internal {
+
+/** \ingroup MatrixFunctions_Module
+  * \brief Helper struct for computing matrix square roots of general matrices.
+  * \tparam  MatrixType  type of the argument of the matrix square root,
+  *                      expected to be an instantiation of the Matrix class template.
+  *
+  * \sa MatrixSquareRootTriangular, MatrixSquareRootQuasiTriangular, MatrixBase::sqrt()
+  */
+template <typename MatrixType, int IsComplex = NumTraits<typename internal::traits<MatrixType>::Scalar>::IsComplex>
+struct matrix_sqrt_compute
+{
+  /** \brief Compute the matrix square root
+    *
+    * \param[in]  arg     matrix whose square root is to be computed.
+    * \param[out] result  square root of \p arg.
+    *
+    * See MatrixBase::sqrt() for details on how this computation is implemented.
+    */
+  template <typename ResultType> static void run(const MatrixType &arg, ResultType &result);    
+};
+
+
+// ********** Partial specialization for real matrices **********
+
+template <typename MatrixType>
+struct matrix_sqrt_compute<MatrixType, 0>
+{
+  typedef typename MatrixType::PlainObject PlainType;
+  template <typename ResultType>
+  static void run(const MatrixType &arg, ResultType &result)
+  {
+    eigen_assert(arg.rows() == arg.cols());
+
+    // Compute Schur decomposition of arg
+    const RealSchur<PlainType> schurOfA(arg);
+    const PlainType& T = schurOfA.matrixT();
+    const PlainType& U = schurOfA.matrixU();
+    
+    // Compute square root of T
+    PlainType sqrtT = PlainType::Zero(arg.rows(), arg.cols());
+    matrix_sqrt_quasi_triangular(T, sqrtT);
+    
+    // Compute square root of arg
+    result = U * sqrtT * U.adjoint();
+  }
+};
+
+
+// ********** Partial specialization for complex matrices **********
+
+template <typename MatrixType>
+struct matrix_sqrt_compute<MatrixType, 1>
+{
+  typedef typename MatrixType::PlainObject PlainType;
+  template <typename ResultType>
+  static void run(const MatrixType &arg, ResultType &result)
+  {
+    eigen_assert(arg.rows() == arg.cols());
+
+    // Compute Schur decomposition of arg
+    const ComplexSchur<PlainType> schurOfA(arg);
+    const PlainType& T = schurOfA.matrixT();
+    const PlainType& U = schurOfA.matrixU();
+    
+    // Compute square root of T
+    PlainType sqrtT;
+    matrix_sqrt_triangular(T, sqrtT);
+    
+    // Compute square root of arg
+    result = U * (sqrtT.template triangularView<Upper>() * U.adjoint());
+  }
+};
+
+} // end namespace internal
+
+/** \ingroup MatrixFunctions_Module
+  *
+  * \brief Proxy for the matrix square root of some matrix (expression).
+  *
+  * \tparam Derived  Type of the argument to the matrix square root.
+  *
+  * This class holds the argument to the matrix square root until it
+  * is assigned or evaluated for some other reason (so the argument
+  * should not be changed in the meantime). It is the return type of
+  * MatrixBase::sqrt() and most of the time this is the only way it is
+  * used.
+  */
+template<typename Derived> class MatrixSquareRootReturnValue
+: public ReturnByValue<MatrixSquareRootReturnValue<Derived> >
+{
+  protected:
+    typedef typename internal::ref_selector<Derived>::type DerivedNested;
+
+  public:
+    /** \brief Constructor.
+      *
+      * \param[in]  src  %Matrix (expression) forming the argument of the
+      * matrix square root.
+      */
+    explicit MatrixSquareRootReturnValue(const Derived& src) : m_src(src) { }
+
+    /** \brief Compute the matrix square root.
+      *
+      * \param[out]  result  the matrix square root of \p src in the
+      * constructor.
+      */
+    template <typename ResultType>
+    inline void evalTo(ResultType& result) const
+    {
+      typedef typename internal::nested_eval<Derived, 10>::type DerivedEvalType;
+      typedef typename internal::remove_all<DerivedEvalType>::type DerivedEvalTypeClean;
+      DerivedEvalType tmp(m_src);
+      internal::matrix_sqrt_compute<DerivedEvalTypeClean>::run(tmp, result);
+    }
+
+    Index rows() const { return m_src.rows(); }
+    Index cols() const { return m_src.cols(); }
+
+  protected:
+    const DerivedNested m_src;
+};
+
+namespace internal {
+template<typename Derived>
+struct traits<MatrixSquareRootReturnValue<Derived> >
+{
+  typedef typename Derived::PlainObject ReturnType;
+};
+}
+
+template <typename Derived>
+const MatrixSquareRootReturnValue<Derived> MatrixBase<Derived>::sqrt() const
+{
+  eigen_assert(rows() == cols());
+  return MatrixSquareRootReturnValue<Derived>(derived());
+}
+
+} // end namespace Eigen
+
+#endif // EIGEN_MATRIX_FUNCTION
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/MatrixFunctions/MatrixFunction.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/MatrixFunctions/MatrixFunction.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/MatrixFunctions/MatrixFunction.h	(revision 3762)
@@ -0,0 +1,580 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2009-2011, 2013 Jitse Niesen <jitse@maths.leeds.ac.uk>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_MATRIX_FUNCTION_H
+#define EIGEN_MATRIX_FUNCTION_H
+
+#include "StemFunction.h"
+
+
+namespace Eigen { 
+
+namespace internal {
+
+/** \brief Maximum distance allowed between eigenvalues to be considered "close". */
+static const float matrix_function_separation = 0.1f;
+
+/** \ingroup MatrixFunctions_Module
+  * \class MatrixFunctionAtomic
+  * \brief Helper class for computing matrix functions of atomic matrices.
+  *
+  * Here, an atomic matrix is a triangular matrix whose diagonal entries are close to each other.
+  */
+template <typename MatrixType>
+class MatrixFunctionAtomic 
+{
+  public:
+
+    typedef typename MatrixType::Scalar Scalar;
+    typedef typename stem_function<Scalar>::type StemFunction;
+
+    /** \brief Constructor
+      * \param[in]  f  matrix function to compute.
+      */
+    MatrixFunctionAtomic(StemFunction f) : m_f(f) { }
+
+    /** \brief Compute matrix function of atomic matrix
+      * \param[in]  A  argument of matrix function, should be upper triangular and atomic
+      * \returns  f(A), the matrix function evaluated at the given matrix
+      */
+    MatrixType compute(const MatrixType& A);
+
+  private:
+    StemFunction* m_f;
+};
+
+template <typename MatrixType>
+typename NumTraits<typename MatrixType::Scalar>::Real matrix_function_compute_mu(const MatrixType& A)
+{
+  typedef typename plain_col_type<MatrixType>::type VectorType;
+  typename MatrixType::Index rows = A.rows();
+  const MatrixType N = MatrixType::Identity(rows, rows) - A;
+  VectorType e = VectorType::Ones(rows);
+  N.template triangularView<Upper>().solveInPlace(e);
+  return e.cwiseAbs().maxCoeff();
+}
+
+template <typename MatrixType>
+MatrixType MatrixFunctionAtomic<MatrixType>::compute(const MatrixType& A)
+{
+  // TODO: Use that A is upper triangular
+  typedef typename NumTraits<Scalar>::Real RealScalar;
+  typedef typename MatrixType::Index Index;
+  Index rows = A.rows();
+  Scalar avgEival = A.trace() / Scalar(RealScalar(rows));
+  MatrixType Ashifted = A - avgEival * MatrixType::Identity(rows, rows);
+  RealScalar mu = matrix_function_compute_mu(Ashifted);
+  MatrixType F = m_f(avgEival, 0) * MatrixType::Identity(rows, rows);
+  MatrixType P = Ashifted;
+  MatrixType Fincr;
+  for (Index s = 1; s < 1.1 * rows + 10; s++) { // upper limit is fairly arbitrary
+    Fincr = m_f(avgEival, static_cast<int>(s)) * P;
+    F += Fincr;
+    P = Scalar(RealScalar(1.0/(s + 1))) * P * Ashifted;
+
+    // test whether Taylor series converged
+    const RealScalar F_norm = F.cwiseAbs().rowwise().sum().maxCoeff();
+    const RealScalar Fincr_norm = Fincr.cwiseAbs().rowwise().sum().maxCoeff();
+    if (Fincr_norm < NumTraits<Scalar>::epsilon() * F_norm) {
+      RealScalar delta = 0;
+      RealScalar rfactorial = 1;
+      for (Index r = 0; r < rows; r++) {
+        RealScalar mx = 0;
+        for (Index i = 0; i < rows; i++)
+          mx = (std::max)(mx, std::abs(m_f(Ashifted(i, i) + avgEival, static_cast<int>(s+r))));
+        if (r != 0)
+          rfactorial *= RealScalar(r);
+        delta = (std::max)(delta, mx / rfactorial);
+      }
+      const RealScalar P_norm = P.cwiseAbs().rowwise().sum().maxCoeff();
+      if (mu * delta * P_norm < NumTraits<Scalar>::epsilon() * F_norm) // series converged
+        break;
+    }
+  }
+  return F;
+}
+
+/** \brief Find cluster in \p clusters containing some value 
+  * \param[in] key Value to find
+  * \returns Iterator to cluster containing \p key, or \c clusters.end() if no cluster in \p m_clusters
+  * contains \p key.
+  */
+template <typename Index, typename ListOfClusters>
+typename ListOfClusters::iterator matrix_function_find_cluster(Index key, ListOfClusters& clusters)
+{
+  typename std::list<Index>::iterator j;
+  for (typename ListOfClusters::iterator i = clusters.begin(); i != clusters.end(); ++i) {
+    j = std::find(i->begin(), i->end(), key);
+    if (j != i->end())
+      return i;
+  }
+  return clusters.end();
+}
+
+/** \brief Partition eigenvalues in clusters of ei'vals close to each other
+  * 
+  * \param[in]  eivals    Eigenvalues
+  * \param[out] clusters  Resulting partition of eigenvalues
+  *
+  * The partition satisfies the following two properties:
+  * # Any eigenvalue in a certain cluster is at most matrix_function_separation() away from another eigenvalue
+  *   in the same cluster.
+  * # The distance between two eigenvalues in different clusters is more than matrix_function_separation().  
+  * The implementation follows Algorithm 4.1 in the paper of Davies and Higham.
+  */
+template <typename EivalsType, typename Cluster>
+void matrix_function_partition_eigenvalues(const EivalsType& eivals, std::list<Cluster>& clusters)
+{
+  typedef typename EivalsType::Index Index;
+  typedef typename EivalsType::RealScalar RealScalar;
+  for (Index i=0; i<eivals.rows(); ++i) {
+    // Find cluster containing i-th ei'val, adding a new cluster if necessary
+    typename std::list<Cluster>::iterator qi = matrix_function_find_cluster(i, clusters);
+    if (qi == clusters.end()) {
+      Cluster l;
+      l.push_back(i);
+      clusters.push_back(l);
+      qi = clusters.end();
+      --qi;
+    }
+
+    // Look for other element to add to the set
+    for (Index j=i+1; j<eivals.rows(); ++j) {
+      if (abs(eivals(j) - eivals(i)) <= RealScalar(matrix_function_separation)
+          && std::find(qi->begin(), qi->end(), j) == qi->end()) {
+        typename std::list<Cluster>::iterator qj = matrix_function_find_cluster(j, clusters);
+        if (qj == clusters.end()) {
+          qi->push_back(j);
+        } else {
+          qi->insert(qi->end(), qj->begin(), qj->end());
+          clusters.erase(qj);
+        }
+      }
+    }
+  }
+}
+
+/** \brief Compute size of each cluster given a partitioning */
+template <typename ListOfClusters, typename Index>
+void matrix_function_compute_cluster_size(const ListOfClusters& clusters, Matrix<Index, Dynamic, 1>& clusterSize)
+{
+  const Index numClusters = static_cast<Index>(clusters.size());
+  clusterSize.setZero(numClusters);
+  Index clusterIndex = 0;
+  for (typename ListOfClusters::const_iterator cluster = clusters.begin(); cluster != clusters.end(); ++cluster) {
+    clusterSize[clusterIndex] = cluster->size();
+    ++clusterIndex;
+  }
+}
+
+/** \brief Compute start of each block using clusterSize */
+template <typename VectorType>
+void matrix_function_compute_block_start(const VectorType& clusterSize, VectorType& blockStart)
+{
+  blockStart.resize(clusterSize.rows());
+  blockStart(0) = 0;
+  for (typename VectorType::Index i = 1; i < clusterSize.rows(); i++) {
+    blockStart(i) = blockStart(i-1) + clusterSize(i-1);
+  }
+}
+
+/** \brief Compute mapping of eigenvalue indices to cluster indices */
+template <typename EivalsType, typename ListOfClusters, typename VectorType>
+void matrix_function_compute_map(const EivalsType& eivals, const ListOfClusters& clusters, VectorType& eivalToCluster)
+{
+  typedef typename EivalsType::Index Index;
+  eivalToCluster.resize(eivals.rows());
+  Index clusterIndex = 0;
+  for (typename ListOfClusters::const_iterator cluster = clusters.begin(); cluster != clusters.end(); ++cluster) {
+    for (Index i = 0; i < eivals.rows(); ++i) {
+      if (std::find(cluster->begin(), cluster->end(), i) != cluster->end()) {
+        eivalToCluster[i] = clusterIndex;
+      }
+    }
+    ++clusterIndex;
+  }
+}
+
+/** \brief Compute permutation which groups ei'vals in same cluster together */
+template <typename DynVectorType, typename VectorType>
+void matrix_function_compute_permutation(const DynVectorType& blockStart, const DynVectorType& eivalToCluster, VectorType& permutation)
+{
+  typedef typename VectorType::Index Index;
+  DynVectorType indexNextEntry = blockStart;
+  permutation.resize(eivalToCluster.rows());
+  for (Index i = 0; i < eivalToCluster.rows(); i++) {
+    Index cluster = eivalToCluster[i];
+    permutation[i] = indexNextEntry[cluster];
+    ++indexNextEntry[cluster];
+  }
+}  
+
+/** \brief Permute Schur decomposition in U and T according to permutation */
+template <typename VectorType, typename MatrixType>
+void matrix_function_permute_schur(VectorType& permutation, MatrixType& U, MatrixType& T)
+{
+  typedef typename VectorType::Index Index;
+  for (Index i = 0; i < permutation.rows() - 1; i++) {
+    Index j;
+    for (j = i; j < permutation.rows(); j++) {
+      if (permutation(j) == i) break;
+    }
+    eigen_assert(permutation(j) == i);
+    for (Index k = j-1; k >= i; k--) {
+      JacobiRotation<typename MatrixType::Scalar> rotation;
+      rotation.makeGivens(T(k, k+1), T(k+1, k+1) - T(k, k));
+      T.applyOnTheLeft(k, k+1, rotation.adjoint());
+      T.applyOnTheRight(k, k+1, rotation);
+      U.applyOnTheRight(k, k+1, rotation);
+      std::swap(permutation.coeffRef(k), permutation.coeffRef(k+1));
+    }
+  }
+}
+
+/** \brief Compute block diagonal part of matrix function.
+  *
+  * This routine computes the matrix function applied to the block diagonal part of \p T (which should be
+  * upper triangular), with the blocking given by \p blockStart and \p clusterSize. The matrix function of
+  * each diagonal block is computed by \p atomic. The off-diagonal parts of \p fT are set to zero.
+  */
+template <typename MatrixType, typename AtomicType, typename VectorType>
+void matrix_function_compute_block_atomic(const MatrixType& T, AtomicType& atomic, const VectorType& blockStart, const VectorType& clusterSize, MatrixType& fT)
+{ 
+  fT.setZero(T.rows(), T.cols());
+  for (typename VectorType::Index i = 0; i < clusterSize.rows(); ++i) {
+    fT.block(blockStart(i), blockStart(i), clusterSize(i), clusterSize(i))
+      = atomic.compute(T.block(blockStart(i), blockStart(i), clusterSize(i), clusterSize(i)));
+  }
+}
+
+/** \brief Solve a triangular Sylvester equation AX + XB = C 
+  *
+  * \param[in]  A  the matrix A; should be square and upper triangular
+  * \param[in]  B  the matrix B; should be square and upper triangular
+  * \param[in]  C  the matrix C; should have correct size.
+  *
+  * \returns the solution X.
+  *
+  * If A is m-by-m and B is n-by-n, then both C and X are m-by-n.  The (i,j)-th component of the Sylvester
+  * equation is
+  * \f[ 
+  *     \sum_{k=i}^m A_{ik} X_{kj} + \sum_{k=1}^j X_{ik} B_{kj} = C_{ij}. 
+  * \f]
+  * This can be re-arranged to yield:
+  * \f[ 
+  *     X_{ij} = \frac{1}{A_{ii} + B_{jj}} \Bigl( C_{ij}
+  *     - \sum_{k=i+1}^m A_{ik} X_{kj} - \sum_{k=1}^{j-1} X_{ik} B_{kj} \Bigr).
+  * \f]
+  * It is assumed that A and B are such that the numerator is never zero (otherwise the Sylvester equation
+  * does not have a unique solution). In that case, these equations can be evaluated in the order 
+  * \f$ i=m,\ldots,1 \f$ and \f$ j=1,\ldots,n \f$.
+  */
+template <typename MatrixType>
+MatrixType matrix_function_solve_triangular_sylvester(const MatrixType& A, const MatrixType& B, const MatrixType& C)
+{
+  eigen_assert(A.rows() == A.cols());
+  eigen_assert(A.isUpperTriangular());
+  eigen_assert(B.rows() == B.cols());
+  eigen_assert(B.isUpperTriangular());
+  eigen_assert(C.rows() == A.rows());
+  eigen_assert(C.cols() == B.rows());
+
+  typedef typename MatrixType::Index Index;
+  typedef typename MatrixType::Scalar Scalar;
+
+  Index m = A.rows();
+  Index n = B.rows();
+  MatrixType X(m, n);
+
+  for (Index i = m - 1; i >= 0; --i) {
+    for (Index j = 0; j < n; ++j) {
+
+      // Compute AX = \sum_{k=i+1}^m A_{ik} X_{kj}
+      Scalar AX;
+      if (i == m - 1) {
+	AX = 0; 
+      } else {
+	Matrix<Scalar,1,1> AXmatrix = A.row(i).tail(m-1-i) * X.col(j).tail(m-1-i);
+	AX = AXmatrix(0,0);
+      }
+
+      // Compute XB = \sum_{k=1}^{j-1} X_{ik} B_{kj}
+      Scalar XB;
+      if (j == 0) {
+	XB = 0; 
+      } else {
+	Matrix<Scalar,1,1> XBmatrix = X.row(i).head(j) * B.col(j).head(j);
+	XB = XBmatrix(0,0);
+      }
+
+      X(i,j) = (C(i,j) - AX - XB) / (A(i,i) + B(j,j));
+    }
+  }
+  return X;
+}
+
+/** \brief Compute part of matrix function above block diagonal.
+  *
+  * This routine completes the computation of \p fT, denoting a matrix function applied to the triangular
+  * matrix \p T. It assumes that the block diagonal part of \p fT has already been computed. The part below
+  * the diagonal is zero, because \p T is upper triangular.
+  */
+template <typename MatrixType, typename VectorType>
+void matrix_function_compute_above_diagonal(const MatrixType& T, const VectorType& blockStart, const VectorType& clusterSize, MatrixType& fT)
+{ 
+  typedef internal::traits<MatrixType> Traits;
+  typedef typename MatrixType::Scalar Scalar;
+  typedef typename MatrixType::Index Index;
+  static const int RowsAtCompileTime = Traits::RowsAtCompileTime;
+  static const int ColsAtCompileTime = Traits::ColsAtCompileTime;
+  static const int Options = MatrixType::Options;
+  typedef Matrix<Scalar, Dynamic, Dynamic, Options, RowsAtCompileTime, ColsAtCompileTime> DynMatrixType;
+
+  for (Index k = 1; k < clusterSize.rows(); k++) {
+    for (Index i = 0; i < clusterSize.rows() - k; i++) {
+      // compute (i, i+k) block
+      DynMatrixType A = T.block(blockStart(i), blockStart(i), clusterSize(i), clusterSize(i));
+      DynMatrixType B = -T.block(blockStart(i+k), blockStart(i+k), clusterSize(i+k), clusterSize(i+k));
+      DynMatrixType C = fT.block(blockStart(i), blockStart(i), clusterSize(i), clusterSize(i))
+        * T.block(blockStart(i), blockStart(i+k), clusterSize(i), clusterSize(i+k));
+      C -= T.block(blockStart(i), blockStart(i+k), clusterSize(i), clusterSize(i+k))
+        * fT.block(blockStart(i+k), blockStart(i+k), clusterSize(i+k), clusterSize(i+k));
+      for (Index m = i + 1; m < i + k; m++) {
+        C += fT.block(blockStart(i), blockStart(m), clusterSize(i), clusterSize(m))
+          * T.block(blockStart(m), blockStart(i+k), clusterSize(m), clusterSize(i+k));
+        C -= T.block(blockStart(i), blockStart(m), clusterSize(i), clusterSize(m))
+          * fT.block(blockStart(m), blockStart(i+k), clusterSize(m), clusterSize(i+k));
+      }
+      fT.block(blockStart(i), blockStart(i+k), clusterSize(i), clusterSize(i+k))
+        = matrix_function_solve_triangular_sylvester(A, B, C);
+    }
+  }
+}
+
+/** \ingroup MatrixFunctions_Module
+  * \brief Class for computing matrix functions.
+  * \tparam  MatrixType  type of the argument of the matrix function,
+  *                      expected to be an instantiation of the Matrix class template.
+  * \tparam  AtomicType  type for computing matrix function of atomic blocks.
+  * \tparam  IsComplex   used internally to select correct specialization.
+  *
+  * This class implements the Schur-Parlett algorithm for computing matrix functions. The spectrum of the
+  * matrix is divided in clustered of eigenvalues that lies close together. This class delegates the
+  * computation of the matrix function on every block corresponding to these clusters to an object of type
+  * \p AtomicType and uses these results to compute the matrix function of the whole matrix. The class
+  * \p AtomicType should have a \p compute() member function for computing the matrix function of a block.
+  *
+  * \sa class MatrixFunctionAtomic, class MatrixLogarithmAtomic
+  */
+template <typename MatrixType, int IsComplex = NumTraits<typename internal::traits<MatrixType>::Scalar>::IsComplex>
+struct matrix_function_compute
+{  
+    /** \brief Compute the matrix function.
+      *
+      * \param[in]  A       argument of matrix function, should be a square matrix.
+      * \param[in]  atomic  class for computing matrix function of atomic blocks.
+      * \param[out] result  the function \p f applied to \p A, as
+      * specified in the constructor.
+      *
+      * See MatrixBase::matrixFunction() for details on how this computation
+      * is implemented.
+      */
+    template <typename AtomicType, typename ResultType> 
+    static void run(const MatrixType& A, AtomicType& atomic, ResultType &result);    
+};
+
+/** \internal \ingroup MatrixFunctions_Module 
+  * \brief Partial specialization of MatrixFunction for real matrices
+  *
+  * This converts the real matrix to a complex matrix, compute the matrix function of that matrix, and then
+  * converts the result back to a real matrix.
+  */
+template <typename MatrixType>
+struct matrix_function_compute<MatrixType, 0>
+{  
+  template <typename MatA, typename AtomicType, typename ResultType>
+  static void run(const MatA& A, AtomicType& atomic, ResultType &result)
+  {
+    typedef internal::traits<MatrixType> Traits;
+    typedef typename Traits::Scalar Scalar;
+    static const int Rows = Traits::RowsAtCompileTime, Cols = Traits::ColsAtCompileTime;
+    static const int MaxRows = Traits::MaxRowsAtCompileTime, MaxCols = Traits::MaxColsAtCompileTime;
+
+    typedef std::complex<Scalar> ComplexScalar;
+    typedef Matrix<ComplexScalar, Rows, Cols, 0, MaxRows, MaxCols> ComplexMatrix;
+
+    ComplexMatrix CA = A.template cast<ComplexScalar>();
+    ComplexMatrix Cresult;
+    matrix_function_compute<ComplexMatrix>::run(CA, atomic, Cresult);
+    result = Cresult.real();
+  }
+};
+
+/** \internal \ingroup MatrixFunctions_Module 
+  * \brief Partial specialization of MatrixFunction for complex matrices
+  */
+template <typename MatrixType>
+struct matrix_function_compute<MatrixType, 1>
+{
+  template <typename MatA, typename AtomicType, typename ResultType>
+  static void run(const MatA& A, AtomicType& atomic, ResultType &result)
+  {
+    typedef internal::traits<MatrixType> Traits;
+    
+    // compute Schur decomposition of A
+    const ComplexSchur<MatrixType> schurOfA(A);  
+    MatrixType T = schurOfA.matrixT();
+    MatrixType U = schurOfA.matrixU();
+
+    // partition eigenvalues into clusters of ei'vals "close" to each other
+    std::list<std::list<Index> > clusters; 
+    matrix_function_partition_eigenvalues(T.diagonal(), clusters);
+
+    // compute size of each cluster
+    Matrix<Index, Dynamic, 1> clusterSize;
+    matrix_function_compute_cluster_size(clusters, clusterSize);
+
+    // blockStart[i] is row index at which block corresponding to i-th cluster starts 
+    Matrix<Index, Dynamic, 1> blockStart; 
+    matrix_function_compute_block_start(clusterSize, blockStart);
+
+    // compute map so that eivalToCluster[i] = j means that i-th ei'val is in j-th cluster 
+    Matrix<Index, Dynamic, 1> eivalToCluster;
+    matrix_function_compute_map(T.diagonal(), clusters, eivalToCluster);
+
+    // compute permutation which groups ei'vals in same cluster together 
+    Matrix<Index, Traits::RowsAtCompileTime, 1> permutation;
+    matrix_function_compute_permutation(blockStart, eivalToCluster, permutation);
+
+    // permute Schur decomposition
+    matrix_function_permute_schur(permutation, U, T);
+
+    // compute result
+    MatrixType fT; // matrix function applied to T
+    matrix_function_compute_block_atomic(T, atomic, blockStart, clusterSize, fT);
+    matrix_function_compute_above_diagonal(T, blockStart, clusterSize, fT);
+    result = U * (fT.template triangularView<Upper>() * U.adjoint());
+  }
+};
+
+} // end of namespace internal
+
+/** \ingroup MatrixFunctions_Module
+  *
+  * \brief Proxy for the matrix function of some matrix (expression).
+  *
+  * \tparam Derived  Type of the argument to the matrix function.
+  *
+  * This class holds the argument to the matrix function until it is assigned or evaluated for some other
+  * reason (so the argument should not be changed in the meantime). It is the return type of
+  * matrixBase::matrixFunction() and related functions and most of the time this is the only way it is used.
+  */
+template<typename Derived> class MatrixFunctionReturnValue
+: public ReturnByValue<MatrixFunctionReturnValue<Derived> >
+{
+  public:
+    typedef typename Derived::Scalar Scalar;
+    typedef typename Derived::Index Index;
+    typedef typename internal::stem_function<Scalar>::type StemFunction;
+
+  protected:
+    typedef typename internal::ref_selector<Derived>::type DerivedNested;
+
+  public:
+
+    /** \brief Constructor.
+      *
+      * \param[in] A  %Matrix (expression) forming the argument of the matrix function.
+      * \param[in] f  Stem function for matrix function under consideration.
+      */
+    MatrixFunctionReturnValue(const Derived& A, StemFunction f) : m_A(A), m_f(f) { }
+
+    /** \brief Compute the matrix function.
+      *
+      * \param[out] result \p f applied to \p A, where \p f and \p A are as in the constructor.
+      */
+    template <typename ResultType>
+    inline void evalTo(ResultType& result) const
+    {
+      typedef typename internal::nested_eval<Derived, 10>::type NestedEvalType;
+      typedef typename internal::remove_all<NestedEvalType>::type NestedEvalTypeClean;
+      typedef internal::traits<NestedEvalTypeClean> Traits;
+      static const int RowsAtCompileTime = Traits::RowsAtCompileTime;
+      static const int ColsAtCompileTime = Traits::ColsAtCompileTime;
+      typedef std::complex<typename NumTraits<Scalar>::Real> ComplexScalar;
+      typedef Matrix<ComplexScalar, Dynamic, Dynamic, 0, RowsAtCompileTime, ColsAtCompileTime> DynMatrixType;
+
+      typedef internal::MatrixFunctionAtomic<DynMatrixType> AtomicType;
+      AtomicType atomic(m_f);
+
+      internal::matrix_function_compute<typename NestedEvalTypeClean::PlainObject>::run(m_A, atomic, result);
+    }
+
+    Index rows() const { return m_A.rows(); }
+    Index cols() const { return m_A.cols(); }
+
+  private:
+    const DerivedNested m_A;
+    StemFunction *m_f;
+};
+
+namespace internal {
+template<typename Derived>
+struct traits<MatrixFunctionReturnValue<Derived> >
+{
+  typedef typename Derived::PlainObject ReturnType;
+};
+}
+
+
+/********** MatrixBase methods **********/
+
+
+template <typename Derived>
+const MatrixFunctionReturnValue<Derived> MatrixBase<Derived>::matrixFunction(typename internal::stem_function<typename internal::traits<Derived>::Scalar>::type f) const
+{
+  eigen_assert(rows() == cols());
+  return MatrixFunctionReturnValue<Derived>(derived(), f);
+}
+
+template <typename Derived>
+const MatrixFunctionReturnValue<Derived> MatrixBase<Derived>::sin() const
+{
+  eigen_assert(rows() == cols());
+  typedef typename internal::stem_function<Scalar>::ComplexScalar ComplexScalar;
+  return MatrixFunctionReturnValue<Derived>(derived(), internal::stem_function_sin<ComplexScalar>);
+}
+
+template <typename Derived>
+const MatrixFunctionReturnValue<Derived> MatrixBase<Derived>::cos() const
+{
+  eigen_assert(rows() == cols());
+  typedef typename internal::stem_function<Scalar>::ComplexScalar ComplexScalar;
+  return MatrixFunctionReturnValue<Derived>(derived(), internal::stem_function_cos<ComplexScalar>);
+}
+
+template <typename Derived>
+const MatrixFunctionReturnValue<Derived> MatrixBase<Derived>::sinh() const
+{
+  eigen_assert(rows() == cols());
+  typedef typename internal::stem_function<Scalar>::ComplexScalar ComplexScalar;
+  return MatrixFunctionReturnValue<Derived>(derived(), internal::stem_function_sinh<ComplexScalar>);
+}
+
+template <typename Derived>
+const MatrixFunctionReturnValue<Derived> MatrixBase<Derived>::cosh() const
+{
+  eigen_assert(rows() == cols());
+  typedef typename internal::stem_function<Scalar>::ComplexScalar ComplexScalar;
+  return MatrixFunctionReturnValue<Derived>(derived(), internal::stem_function_cosh<ComplexScalar>);
+}
+
+} // end namespace Eigen
+
+#endif // EIGEN_MATRIX_FUNCTION_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/MatrixFunctions/MatrixExponential.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/MatrixFunctions/MatrixExponential.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/MatrixFunctions/MatrixExponential.h	(revision 3762)
@@ -0,0 +1,442 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2009, 2010, 2013 Jitse Niesen <jitse@maths.leeds.ac.uk>
+// Copyright (C) 2011, 2013 Chen-Pang He <jdh8@ms63.hinet.net>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_MATRIX_EXPONENTIAL
+#define EIGEN_MATRIX_EXPONENTIAL
+
+#include "StemFunction.h"
+
+namespace Eigen {
+namespace internal {
+
+/** \brief Scaling operator.
+ *
+ * This struct is used by CwiseUnaryOp to scale a matrix by \f$ 2^{-s} \f$.
+ */
+template <typename RealScalar>
+struct MatrixExponentialScalingOp
+{
+  /** \brief Constructor.
+   *
+   * \param[in] squarings  The integer \f$ s \f$ in this document.
+   */
+  MatrixExponentialScalingOp(int squarings) : m_squarings(squarings) { }
+
+
+  /** \brief Scale a matrix coefficient.
+   *
+   * \param[in,out] x  The scalar to be scaled, becoming \f$ 2^{-s} x \f$.
+   */
+  inline const RealScalar operator() (const RealScalar& x) const
+  {
+    using std::ldexp;
+    return ldexp(x, -m_squarings);
+  }
+
+  typedef std::complex<RealScalar> ComplexScalar;
+
+  /** \brief Scale a matrix coefficient.
+   *
+   * \param[in,out] x  The scalar to be scaled, becoming \f$ 2^{-s} x \f$.
+   */
+  inline const ComplexScalar operator() (const ComplexScalar& x) const
+  {
+    using std::ldexp;
+    return ComplexScalar(ldexp(x.real(), -m_squarings), ldexp(x.imag(), -m_squarings));
+  }
+
+  private:
+    int m_squarings;
+};
+
+/** \brief Compute the (3,3)-Pad&eacute; approximant to the exponential.
+ *
+ *  After exit, \f$ (V+U)(V-U)^{-1} \f$ is the Pad&eacute;
+ *  approximant of \f$ \exp(A) \f$ around \f$ A = 0 \f$.
+ */
+template <typename MatA, typename MatU, typename MatV>
+void matrix_exp_pade3(const MatA& A, MatU& U, MatV& V)
+{
+  typedef typename MatA::PlainObject MatrixType;
+  typedef typename NumTraits<typename traits<MatA>::Scalar>::Real RealScalar;
+  const RealScalar b[] = {120.L, 60.L, 12.L, 1.L};
+  const MatrixType A2 = A * A;
+  const MatrixType tmp = b[3] * A2 + b[1] * MatrixType::Identity(A.rows(), A.cols());
+  U.noalias() = A * tmp;
+  V = b[2] * A2 + b[0] * MatrixType::Identity(A.rows(), A.cols());
+}
+
+/** \brief Compute the (5,5)-Pad&eacute; approximant to the exponential.
+ *
+ *  After exit, \f$ (V+U)(V-U)^{-1} \f$ is the Pad&eacute;
+ *  approximant of \f$ \exp(A) \f$ around \f$ A = 0 \f$.
+ */
+template <typename MatA, typename MatU, typename MatV>
+void matrix_exp_pade5(const MatA& A, MatU& U, MatV& V)
+{
+  typedef typename MatA::PlainObject MatrixType;
+  typedef typename NumTraits<typename traits<MatrixType>::Scalar>::Real RealScalar;
+  const RealScalar b[] = {30240.L, 15120.L, 3360.L, 420.L, 30.L, 1.L};
+  const MatrixType A2 = A * A;
+  const MatrixType A4 = A2 * A2;
+  const MatrixType tmp = b[5] * A4 + b[3] * A2 + b[1] * MatrixType::Identity(A.rows(), A.cols());
+  U.noalias() = A * tmp;
+  V = b[4] * A4 + b[2] * A2 + b[0] * MatrixType::Identity(A.rows(), A.cols());
+}
+
+/** \brief Compute the (7,7)-Pad&eacute; approximant to the exponential.
+ *
+ *  After exit, \f$ (V+U)(V-U)^{-1} \f$ is the Pad&eacute;
+ *  approximant of \f$ \exp(A) \f$ around \f$ A = 0 \f$.
+ */
+template <typename MatA, typename MatU, typename MatV>
+void matrix_exp_pade7(const MatA& A, MatU& U, MatV& V)
+{
+  typedef typename MatA::PlainObject MatrixType;
+  typedef typename NumTraits<typename traits<MatrixType>::Scalar>::Real RealScalar;
+  const RealScalar b[] = {17297280.L, 8648640.L, 1995840.L, 277200.L, 25200.L, 1512.L, 56.L, 1.L};
+  const MatrixType A2 = A * A;
+  const MatrixType A4 = A2 * A2;
+  const MatrixType A6 = A4 * A2;
+  const MatrixType tmp = b[7] * A6 + b[5] * A4 + b[3] * A2 
+    + b[1] * MatrixType::Identity(A.rows(), A.cols());
+  U.noalias() = A * tmp;
+  V = b[6] * A6 + b[4] * A4 + b[2] * A2 + b[0] * MatrixType::Identity(A.rows(), A.cols());
+
+}
+
+/** \brief Compute the (9,9)-Pad&eacute; approximant to the exponential.
+ *
+ *  After exit, \f$ (V+U)(V-U)^{-1} \f$ is the Pad&eacute;
+ *  approximant of \f$ \exp(A) \f$ around \f$ A = 0 \f$.
+ */
+template <typename MatA, typename MatU, typename MatV>
+void matrix_exp_pade9(const MatA& A, MatU& U, MatV& V)
+{
+  typedef typename MatA::PlainObject MatrixType;
+  typedef typename NumTraits<typename traits<MatrixType>::Scalar>::Real RealScalar;
+  const RealScalar b[] = {17643225600.L, 8821612800.L, 2075673600.L, 302702400.L, 30270240.L,
+                          2162160.L, 110880.L, 3960.L, 90.L, 1.L};
+  const MatrixType A2 = A * A;
+  const MatrixType A4 = A2 * A2;
+  const MatrixType A6 = A4 * A2;
+  const MatrixType A8 = A6 * A2;
+  const MatrixType tmp = b[9] * A8 + b[7] * A6 + b[5] * A4 + b[3] * A2 
+    + b[1] * MatrixType::Identity(A.rows(), A.cols());
+  U.noalias() = A * tmp;
+  V = b[8] * A8 + b[6] * A6 + b[4] * A4 + b[2] * A2 + b[0] * MatrixType::Identity(A.rows(), A.cols());
+}
+
+/** \brief Compute the (13,13)-Pad&eacute; approximant to the exponential.
+ *
+ *  After exit, \f$ (V+U)(V-U)^{-1} \f$ is the Pad&eacute;
+ *  approximant of \f$ \exp(A) \f$ around \f$ A = 0 \f$.
+ */
+template <typename MatA, typename MatU, typename MatV>
+void matrix_exp_pade13(const MatA& A, MatU& U, MatV& V)
+{
+  typedef typename MatA::PlainObject MatrixType;
+  typedef typename NumTraits<typename traits<MatrixType>::Scalar>::Real RealScalar;
+  const RealScalar b[] = {64764752532480000.L, 32382376266240000.L, 7771770303897600.L,
+                          1187353796428800.L, 129060195264000.L, 10559470521600.L, 670442572800.L,
+                          33522128640.L, 1323241920.L, 40840800.L, 960960.L, 16380.L, 182.L, 1.L};
+  const MatrixType A2 = A * A;
+  const MatrixType A4 = A2 * A2;
+  const MatrixType A6 = A4 * A2;
+  V = b[13] * A6 + b[11] * A4 + b[9] * A2; // used for temporary storage
+  MatrixType tmp = A6 * V;
+  tmp += b[7] * A6 + b[5] * A4 + b[3] * A2 + b[1] * MatrixType::Identity(A.rows(), A.cols());
+  U.noalias() = A * tmp;
+  tmp = b[12] * A6 + b[10] * A4 + b[8] * A2;
+  V.noalias() = A6 * tmp;
+  V += b[6] * A6 + b[4] * A4 + b[2] * A2 + b[0] * MatrixType::Identity(A.rows(), A.cols());
+}
+
+/** \brief Compute the (17,17)-Pad&eacute; approximant to the exponential.
+ *
+ *  After exit, \f$ (V+U)(V-U)^{-1} \f$ is the Pad&eacute;
+ *  approximant of \f$ \exp(A) \f$ around \f$ A = 0 \f$.
+ *
+ *  This function activates only if your long double is double-double or quadruple.
+ */
+#if LDBL_MANT_DIG > 64
+template <typename MatA, typename MatU, typename MatV>
+void matrix_exp_pade17(const MatA& A, MatU& U, MatV& V)
+{
+  typedef typename MatA::PlainObject MatrixType;
+  typedef typename NumTraits<typename traits<MatrixType>::Scalar>::Real RealScalar;
+  const RealScalar b[] = {830034394580628357120000.L, 415017197290314178560000.L,
+                          100610229646136770560000.L, 15720348382208870400000.L,
+                          1774878043152614400000.L, 153822763739893248000.L, 10608466464820224000.L,
+                          595373117923584000.L, 27563570274240000.L, 1060137318240000.L,
+                          33924394183680.L, 899510451840.L, 19554575040.L, 341863200.L, 4651200.L,
+                          46512.L, 306.L, 1.L};
+  const MatrixType A2 = A * A;
+  const MatrixType A4 = A2 * A2;
+  const MatrixType A6 = A4 * A2;
+  const MatrixType A8 = A4 * A4;
+  V = b[17] * A8 + b[15] * A6 + b[13] * A4 + b[11] * A2; // used for temporary storage
+  MatrixType tmp = A8 * V;
+  tmp += b[9] * A8 + b[7] * A6 + b[5] * A4 + b[3] * A2 
+    + b[1] * MatrixType::Identity(A.rows(), A.cols());
+  U.noalias() = A * tmp;
+  tmp = b[16] * A8 + b[14] * A6 + b[12] * A4 + b[10] * A2;
+  V.noalias() = tmp * A8;
+  V += b[8] * A8 + b[6] * A6 + b[4] * A4 + b[2] * A2 
+    + b[0] * MatrixType::Identity(A.rows(), A.cols());
+}
+#endif
+
+template <typename MatrixType, typename RealScalar = typename NumTraits<typename traits<MatrixType>::Scalar>::Real>
+struct matrix_exp_computeUV
+{
+  /** \brief Compute Pad&eacute; approximant to the exponential.
+    *
+    * Computes \c U, \c V and \c squarings such that \f$ (V+U)(V-U)^{-1} \f$ is a Pad&eacute;
+    * approximant of \f$ \exp(2^{-\mbox{squarings}}M) \f$ around \f$ M = 0 \f$, where \f$ M \f$
+    * denotes the matrix \c arg. The degree of the Pad&eacute; approximant and the value of squarings
+    * are chosen such that the approximation error is no more than the round-off error.
+    */
+  static void run(const MatrixType& arg, MatrixType& U, MatrixType& V, int& squarings);
+};
+
+template <typename MatrixType>
+struct matrix_exp_computeUV<MatrixType, float>
+{
+  template <typename ArgType>
+  static void run(const ArgType& arg, MatrixType& U, MatrixType& V, int& squarings)
+  {
+    using std::frexp;
+    using std::pow;
+    const float l1norm = arg.cwiseAbs().colwise().sum().maxCoeff();
+    squarings = 0;
+    if (l1norm < 4.258730016922831e-001f) {
+      matrix_exp_pade3(arg, U, V);
+    } else if (l1norm < 1.880152677804762e+000f) {
+      matrix_exp_pade5(arg, U, V);
+    } else {
+      const float maxnorm = 3.925724783138660f;
+      frexp(l1norm / maxnorm, &squarings);
+      if (squarings < 0) squarings = 0;
+      MatrixType A = arg.unaryExpr(MatrixExponentialScalingOp<float>(squarings));
+      matrix_exp_pade7(A, U, V);
+    }
+  }
+};
+
+template <typename MatrixType>
+struct matrix_exp_computeUV<MatrixType, double>
+{
+  typedef typename NumTraits<typename traits<MatrixType>::Scalar>::Real RealScalar;
+  template <typename ArgType>
+  static void run(const ArgType& arg, MatrixType& U, MatrixType& V, int& squarings)
+  {
+    using std::frexp;
+    using std::pow;
+    const RealScalar l1norm = arg.cwiseAbs().colwise().sum().maxCoeff();
+    squarings = 0;
+    if (l1norm < 1.495585217958292e-002) {
+      matrix_exp_pade3(arg, U, V);
+    } else if (l1norm < 2.539398330063230e-001) {
+      matrix_exp_pade5(arg, U, V);
+    } else if (l1norm < 9.504178996162932e-001) {
+      matrix_exp_pade7(arg, U, V);
+    } else if (l1norm < 2.097847961257068e+000) {
+      matrix_exp_pade9(arg, U, V);
+    } else {
+      const RealScalar maxnorm = 5.371920351148152;
+      frexp(l1norm / maxnorm, &squarings);
+      if (squarings < 0) squarings = 0;
+      MatrixType A = arg.unaryExpr(MatrixExponentialScalingOp<RealScalar>(squarings));
+      matrix_exp_pade13(A, U, V);
+    }
+  }
+};
+  
+template <typename MatrixType>
+struct matrix_exp_computeUV<MatrixType, long double>
+{
+  template <typename ArgType>
+  static void run(const ArgType& arg, MatrixType& U, MatrixType& V, int& squarings)
+  {
+#if   LDBL_MANT_DIG == 53   // double precision
+    matrix_exp_computeUV<MatrixType, double>::run(arg, U, V, squarings);
+  
+#else
+  
+    using std::frexp;
+    using std::pow;
+    const long double l1norm = arg.cwiseAbs().colwise().sum().maxCoeff();
+    squarings = 0;
+  
+#if LDBL_MANT_DIG <= 64   // extended precision
+  
+    if (l1norm < 4.1968497232266989671e-003L) {
+      matrix_exp_pade3(arg, U, V);
+    } else if (l1norm < 1.1848116734693823091e-001L) {
+      matrix_exp_pade5(arg, U, V);
+    } else if (l1norm < 5.5170388480686700274e-001L) {
+      matrix_exp_pade7(arg, U, V);
+    } else if (l1norm < 1.3759868875587845383e+000L) {
+      matrix_exp_pade9(arg, U, V);
+    } else {
+      const long double maxnorm = 4.0246098906697353063L;
+      frexp(l1norm / maxnorm, &squarings);
+      if (squarings < 0) squarings = 0;
+      MatrixType A = arg.unaryExpr(MatrixExponentialScalingOp<long double>(squarings));
+      matrix_exp_pade13(A, U, V);
+    }
+  
+#elif LDBL_MANT_DIG <= 106  // double-double
+  
+    if (l1norm < 3.2787892205607026992947488108213e-005L) {
+      matrix_exp_pade3(arg, U, V);
+    } else if (l1norm < 6.4467025060072760084130906076332e-003L) {
+      matrix_exp_pade5(arg, U, V);
+    } else if (l1norm < 6.8988028496595374751374122881143e-002L) {
+      matrix_exp_pade7(arg, U, V);
+    } else if (l1norm < 2.7339737518502231741495857201670e-001L) {
+      matrix_exp_pade9(arg, U, V);
+    } else if (l1norm < 1.3203382096514474905666448850278e+000L) {
+      matrix_exp_pade13(arg, U, V);
+    } else {
+      const long double maxnorm = 3.2579440895405400856599663723517L;
+      frexp(l1norm / maxnorm, &squarings);
+      if (squarings < 0) squarings = 0;
+      MatrixType A = arg.unaryExpr(MatrixExponentialScalingOp<long double>(squarings));
+      matrix_exp_pade17(A, U, V);
+    }
+  
+#elif LDBL_MANT_DIG <= 112  // quadruple precison
+  
+    if (l1norm < 1.639394610288918690547467954466970e-005L) {
+      matrix_exp_pade3(arg, U, V);
+    } else if (l1norm < 4.253237712165275566025884344433009e-003L) {
+      matrix_exp_pade5(arg, U, V);
+    } else if (l1norm < 5.125804063165764409885122032933142e-002L) {
+      matrix_exp_pade7(arg, U, V);
+    } else if (l1norm < 2.170000765161155195453205651889853e-001L) {
+      matrix_exp_pade9(arg, U, V);
+    } else if (l1norm < 1.125358383453143065081397882891878e+000L) {
+      matrix_exp_pade13(arg, U, V);
+    } else {
+      const long double maxnorm = 2.884233277829519311757165057717815L;
+      frexp(l1norm / maxnorm, &squarings);
+      if (squarings < 0) squarings = 0;
+      MatrixType A = arg.unaryExpr(MatrixExponentialScalingOp<long double>(squarings));
+      matrix_exp_pade17(A, U, V);
+    }
+  
+#else
+  
+    // this case should be handled in compute()
+    eigen_assert(false && "Bug in MatrixExponential"); 
+  
+#endif
+#endif  // LDBL_MANT_DIG
+  }
+};
+
+template<typename T> struct is_exp_known_type : false_type {};
+template<> struct is_exp_known_type<float> : true_type {};
+template<> struct is_exp_known_type<double> : true_type {};
+#if LDBL_MANT_DIG <= 112
+template<> struct is_exp_known_type<long double> : true_type {};
+#endif
+
+template <typename ArgType, typename ResultType>
+void matrix_exp_compute(const ArgType& arg, ResultType &result, true_type) // natively supported scalar type
+{
+  typedef typename ArgType::PlainObject MatrixType;
+  MatrixType U, V;
+  int squarings;
+  matrix_exp_computeUV<MatrixType>::run(arg, U, V, squarings); // Pade approximant is (U+V) / (-U+V)
+  MatrixType numer = U + V;
+  MatrixType denom = -U + V;
+  result = denom.partialPivLu().solve(numer);
+  for (int i=0; i<squarings; i++)
+    result *= result;   // undo scaling by repeated squaring
+}
+
+
+/* Computes the matrix exponential
+ *
+ * \param arg    argument of matrix exponential (should be plain object)
+ * \param result variable in which result will be stored
+ */
+template <typename ArgType, typename ResultType>
+void matrix_exp_compute(const ArgType& arg, ResultType &result, false_type) // default
+{
+  typedef typename ArgType::PlainObject MatrixType;
+  typedef typename traits<MatrixType>::Scalar Scalar;
+  typedef typename NumTraits<Scalar>::Real RealScalar;
+  typedef typename std::complex<RealScalar> ComplexScalar;
+  result = arg.matrixFunction(internal::stem_function_exp<ComplexScalar>);
+}
+
+} // end namespace Eigen::internal
+
+/** \ingroup MatrixFunctions_Module
+  *
+  * \brief Proxy for the matrix exponential of some matrix (expression).
+  *
+  * \tparam Derived  Type of the argument to the matrix exponential.
+  *
+  * This class holds the argument to the matrix exponential until it is assigned or evaluated for
+  * some other reason (so the argument should not be changed in the meantime). It is the return type
+  * of MatrixBase::exp() and most of the time this is the only way it is used.
+  */
+template<typename Derived> struct MatrixExponentialReturnValue
+: public ReturnByValue<MatrixExponentialReturnValue<Derived> >
+{
+    typedef typename Derived::Index Index;
+  public:
+    /** \brief Constructor.
+      *
+      * \param src %Matrix (expression) forming the argument of the matrix exponential.
+      */
+    MatrixExponentialReturnValue(const Derived& src) : m_src(src) { }
+
+    /** \brief Compute the matrix exponential.
+      *
+      * \param result the matrix exponential of \p src in the constructor.
+      */
+    template <typename ResultType>
+    inline void evalTo(ResultType& result) const
+    {
+      const typename internal::nested_eval<Derived, 10>::type tmp(m_src);
+      internal::matrix_exp_compute(tmp, result, internal::is_exp_known_type<typename Derived::RealScalar>());
+    }
+
+    Index rows() const { return m_src.rows(); }
+    Index cols() const { return m_src.cols(); }
+
+  protected:
+    const typename internal::ref_selector<Derived>::type m_src;
+};
+
+namespace internal {
+template<typename Derived>
+struct traits<MatrixExponentialReturnValue<Derived> >
+{
+  typedef typename Derived::PlainObject ReturnType;
+};
+}
+
+template <typename Derived>
+const MatrixExponentialReturnValue<Derived> MatrixBase<Derived>::exp() const
+{
+  eigen_assert(rows() == cols());
+  return MatrixExponentialReturnValue<Derived>(derived());
+}
+
+} // end namespace Eigen
+
+#endif // EIGEN_MATRIX_EXPONENTIAL
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/MatrixFunctions/MatrixLogarithm.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/MatrixFunctions/MatrixLogarithm.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/MatrixFunctions/MatrixLogarithm.h	(revision 3762)
@@ -0,0 +1,373 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2011, 2013 Jitse Niesen <jitse@maths.leeds.ac.uk>
+// Copyright (C) 2011 Chen-Pang He <jdh8@ms63.hinet.net>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_MATRIX_LOGARITHM
+#define EIGEN_MATRIX_LOGARITHM
+
+namespace Eigen { 
+
+namespace internal { 
+
+template <typename Scalar>
+struct matrix_log_min_pade_degree 
+{
+  static const int value = 3;
+};
+
+template <typename Scalar>
+struct matrix_log_max_pade_degree 
+{
+  typedef typename NumTraits<Scalar>::Real RealScalar;
+  static const int value = std::numeric_limits<RealScalar>::digits<= 24?  5:  // single precision
+                           std::numeric_limits<RealScalar>::digits<= 53?  7:  // double precision
+                           std::numeric_limits<RealScalar>::digits<= 64?  8:  // extended precision
+                           std::numeric_limits<RealScalar>::digits<=106? 10:  // double-double
+                                                                         11;  // quadruple precision
+};
+
+/** \brief Compute logarithm of 2x2 triangular matrix. */
+template <typename MatrixType>
+void matrix_log_compute_2x2(const MatrixType& A, MatrixType& result)
+{
+  typedef typename MatrixType::Scalar Scalar;
+  typedef typename MatrixType::RealScalar RealScalar;
+  using std::abs;
+  using std::ceil;
+  using std::imag;
+  using std::log;
+
+  Scalar logA00 = log(A(0,0));
+  Scalar logA11 = log(A(1,1));
+
+  result(0,0) = logA00;
+  result(1,0) = Scalar(0);
+  result(1,1) = logA11;
+
+  Scalar y = A(1,1) - A(0,0);
+  if (y==Scalar(0))
+  {
+    result(0,1) = A(0,1) / A(0,0);
+  }
+  else if ((abs(A(0,0)) < RealScalar(0.5)*abs(A(1,1))) || (abs(A(0,0)) > 2*abs(A(1,1))))
+  {
+    result(0,1) = A(0,1) * (logA11 - logA00) / y;
+  }
+  else
+  {
+    // computation in previous branch is inaccurate if A(1,1) \approx A(0,0)
+    int unwindingNumber = static_cast<int>(ceil((imag(logA11 - logA00) - RealScalar(EIGEN_PI)) / RealScalar(2*EIGEN_PI)));
+    result(0,1) = A(0,1) * (numext::log1p(y/A(0,0)) + Scalar(0,2*EIGEN_PI*unwindingNumber)) / y;
+  }
+}
+
+/* \brief Get suitable degree for Pade approximation. (specialized for RealScalar = float) */
+inline int matrix_log_get_pade_degree(float normTminusI)
+{
+  const float maxNormForPade[] = { 2.5111573934555054e-1 /* degree = 3 */ , 4.0535837411880493e-1,
+            5.3149729967117310e-1 };
+  const int minPadeDegree = matrix_log_min_pade_degree<float>::value;
+  const int maxPadeDegree = matrix_log_max_pade_degree<float>::value;
+  int degree = minPadeDegree;
+  for (; degree <= maxPadeDegree; ++degree) 
+    if (normTminusI <= maxNormForPade[degree - minPadeDegree])
+      break;
+  return degree;
+}
+
+/* \brief Get suitable degree for Pade approximation. (specialized for RealScalar = double) */
+inline int matrix_log_get_pade_degree(double normTminusI)
+{
+  const double maxNormForPade[] = { 1.6206284795015624e-2 /* degree = 3 */ , 5.3873532631381171e-2,
+            1.1352802267628681e-1, 1.8662860613541288e-1, 2.642960831111435e-1 };
+  const int minPadeDegree = matrix_log_min_pade_degree<double>::value;
+  const int maxPadeDegree = matrix_log_max_pade_degree<double>::value;
+  int degree = minPadeDegree;
+  for (; degree <= maxPadeDegree; ++degree)
+    if (normTminusI <= maxNormForPade[degree - minPadeDegree])
+      break;
+  return degree;
+}
+
+/* \brief Get suitable degree for Pade approximation. (specialized for RealScalar = long double) */
+inline int matrix_log_get_pade_degree(long double normTminusI)
+{
+#if   LDBL_MANT_DIG == 53         // double precision
+  const long double maxNormForPade[] = { 1.6206284795015624e-2L /* degree = 3 */ , 5.3873532631381171e-2L,
+            1.1352802267628681e-1L, 1.8662860613541288e-1L, 2.642960831111435e-1L };
+#elif LDBL_MANT_DIG <= 64         // extended precision
+  const long double maxNormForPade[] = { 5.48256690357782863103e-3L /* degree = 3 */, 2.34559162387971167321e-2L,
+            5.84603923897347449857e-2L, 1.08486423756725170223e-1L, 1.68385767881294446649e-1L,
+            2.32777776523703892094e-1L };
+#elif LDBL_MANT_DIG <= 106        // double-double
+  const long double maxNormForPade[] = { 8.58970550342939562202529664318890e-5L /* degree = 3 */,
+            9.34074328446359654039446552677759e-4L, 4.26117194647672175773064114582860e-3L,
+            1.21546224740281848743149666560464e-2L, 2.61100544998339436713088248557444e-2L,
+            4.66170074627052749243018566390567e-2L, 7.32585144444135027565872014932387e-2L,
+            1.05026503471351080481093652651105e-1L };
+#else                             // quadruple precision
+  const long double maxNormForPade[] = { 4.7419931187193005048501568167858103e-5L /* degree = 3 */,
+            5.8853168473544560470387769480192666e-4L, 2.9216120366601315391789493628113520e-3L,
+            8.8415758124319434347116734705174308e-3L, 1.9850836029449446668518049562565291e-2L,
+            3.6688019729653446926585242192447447e-2L, 5.9290962294020186998954055264528393e-2L,
+            8.6998436081634343903250580992127677e-2L, 1.1880960220216759245467951592883642e-1L };
+#endif
+  const int minPadeDegree = matrix_log_min_pade_degree<long double>::value;
+  const int maxPadeDegree = matrix_log_max_pade_degree<long double>::value;
+  int degree = minPadeDegree;
+  for (; degree <= maxPadeDegree; ++degree)
+    if (normTminusI <= maxNormForPade[degree - minPadeDegree])
+      break;
+  return degree;
+}
+
+/* \brief Compute Pade approximation to matrix logarithm */
+template <typename MatrixType>
+void matrix_log_compute_pade(MatrixType& result, const MatrixType& T, int degree)
+{
+  typedef typename NumTraits<typename MatrixType::Scalar>::Real RealScalar;
+  const int minPadeDegree = 3;
+  const int maxPadeDegree = 11;
+  assert(degree >= minPadeDegree && degree <= maxPadeDegree);
+
+  const RealScalar nodes[][maxPadeDegree] = { 
+    { 0.1127016653792583114820734600217600L, 0.5000000000000000000000000000000000L,  // degree 3
+      0.8872983346207416885179265399782400L }, 
+    { 0.0694318442029737123880267555535953L, 0.3300094782075718675986671204483777L,  // degree 4
+      0.6699905217924281324013328795516223L, 0.9305681557970262876119732444464048L },
+    { 0.0469100770306680036011865608503035L, 0.2307653449471584544818427896498956L,  // degree 5
+      0.5000000000000000000000000000000000L, 0.7692346550528415455181572103501044L,
+      0.9530899229693319963988134391496965L },
+    { 0.0337652428984239860938492227530027L, 0.1693953067668677431693002024900473L,  // degree 6
+      0.3806904069584015456847491391596440L, 0.6193095930415984543152508608403560L,
+      0.8306046932331322568306997975099527L, 0.9662347571015760139061507772469973L },
+    { 0.0254460438286207377369051579760744L, 0.1292344072003027800680676133596058L,  // degree 7
+      0.2970774243113014165466967939615193L, 0.5000000000000000000000000000000000L,
+      0.7029225756886985834533032060384807L, 0.8707655927996972199319323866403942L,
+      0.9745539561713792622630948420239256L },
+    { 0.0198550717512318841582195657152635L, 0.1016667612931866302042230317620848L,  // degree 8
+      0.2372337950418355070911304754053768L, 0.4082826787521750975302619288199080L,
+      0.5917173212478249024697380711800920L, 0.7627662049581644929088695245946232L,
+      0.8983332387068133697957769682379152L, 0.9801449282487681158417804342847365L },
+    { 0.0159198802461869550822118985481636L, 0.0819844463366821028502851059651326L,  // degree 9
+      0.1933142836497048013456489803292629L, 0.3378732882980955354807309926783317L,
+      0.5000000000000000000000000000000000L, 0.6621267117019044645192690073216683L,
+      0.8066857163502951986543510196707371L, 0.9180155536633178971497148940348674L,
+      0.9840801197538130449177881014518364L },
+    { 0.0130467357414141399610179939577740L, 0.0674683166555077446339516557882535L,  // degree 10
+      0.1602952158504877968828363174425632L, 0.2833023029353764046003670284171079L,
+      0.4255628305091843945575869994351400L, 0.5744371694908156054424130005648600L,
+      0.7166976970646235953996329715828921L, 0.8397047841495122031171636825574368L,
+      0.9325316833444922553660483442117465L, 0.9869532642585858600389820060422260L },
+    { 0.0108856709269715035980309994385713L, 0.0564687001159523504624211153480364L,  // degree 11
+      0.1349239972129753379532918739844233L, 0.2404519353965940920371371652706952L,
+      0.3652284220238275138342340072995692L, 0.5000000000000000000000000000000000L,
+      0.6347715779761724861657659927004308L, 0.7595480646034059079628628347293048L,
+      0.8650760027870246620467081260155767L, 0.9435312998840476495375788846519636L,
+      0.9891143290730284964019690005614287L } };
+
+  const RealScalar weights[][maxPadeDegree] = { 
+    { 0.2777777777777777777777777777777778L, 0.4444444444444444444444444444444444L,  // degree 3
+      0.2777777777777777777777777777777778L },
+    { 0.1739274225687269286865319746109997L, 0.3260725774312730713134680253890003L,  // degree 4
+      0.3260725774312730713134680253890003L, 0.1739274225687269286865319746109997L },
+    { 0.1184634425280945437571320203599587L, 0.2393143352496832340206457574178191L,  // degree 5
+      0.2844444444444444444444444444444444L, 0.2393143352496832340206457574178191L,
+      0.1184634425280945437571320203599587L },
+    { 0.0856622461895851725201480710863665L, 0.1803807865240693037849167569188581L,  // degree 6
+      0.2339569672863455236949351719947755L, 0.2339569672863455236949351719947755L,
+      0.1803807865240693037849167569188581L, 0.0856622461895851725201480710863665L },
+    { 0.0647424830844348466353057163395410L, 0.1398526957446383339507338857118898L,  // degree 7
+      0.1909150252525594724751848877444876L, 0.2089795918367346938775510204081633L,
+      0.1909150252525594724751848877444876L, 0.1398526957446383339507338857118898L,
+      0.0647424830844348466353057163395410L },
+    { 0.0506142681451881295762656771549811L, 0.1111905172266872352721779972131204L,  // degree 8
+      0.1568533229389436436689811009933007L, 0.1813418916891809914825752246385978L,
+      0.1813418916891809914825752246385978L, 0.1568533229389436436689811009933007L,
+      0.1111905172266872352721779972131204L, 0.0506142681451881295762656771549811L },
+    { 0.0406371941807872059859460790552618L, 0.0903240803474287020292360156214564L,  // degree 9
+      0.1303053482014677311593714347093164L, 0.1561735385200014200343152032922218L,
+      0.1651196775006298815822625346434870L, 0.1561735385200014200343152032922218L,
+      0.1303053482014677311593714347093164L, 0.0903240803474287020292360156214564L,
+      0.0406371941807872059859460790552618L },
+    { 0.0333356721543440687967844049466659L, 0.0747256745752902965728881698288487L,  // degree 10
+      0.1095431812579910219977674671140816L, 0.1346333596549981775456134607847347L,
+      0.1477621123573764350869464973256692L, 0.1477621123573764350869464973256692L,
+      0.1346333596549981775456134607847347L, 0.1095431812579910219977674671140816L,
+      0.0747256745752902965728881698288487L, 0.0333356721543440687967844049466659L },
+    { 0.0278342835580868332413768602212743L, 0.0627901847324523123173471496119701L,  // degree 11
+      0.0931451054638671257130488207158280L, 0.1165968822959952399592618524215876L,
+      0.1314022722551233310903444349452546L, 0.1364625433889503153572417641681711L,
+      0.1314022722551233310903444349452546L, 0.1165968822959952399592618524215876L,
+      0.0931451054638671257130488207158280L, 0.0627901847324523123173471496119701L,
+      0.0278342835580868332413768602212743L } };
+
+  MatrixType TminusI = T - MatrixType::Identity(T.rows(), T.rows());
+  result.setZero(T.rows(), T.rows());
+  for (int k = 0; k < degree; ++k) {
+    RealScalar weight = weights[degree-minPadeDegree][k];
+    RealScalar node = nodes[degree-minPadeDegree][k];
+    result += weight * (MatrixType::Identity(T.rows(), T.rows()) + node * TminusI)
+                       .template triangularView<Upper>().solve(TminusI);
+  }
+} 
+
+/** \brief Compute logarithm of triangular matrices with size > 2. 
+  * \details This uses a inverse scale-and-square algorithm. */
+template <typename MatrixType>
+void matrix_log_compute_big(const MatrixType& A, MatrixType& result)
+{
+  typedef typename MatrixType::Scalar Scalar;
+  typedef typename NumTraits<Scalar>::Real RealScalar;
+  using std::pow;
+
+  int numberOfSquareRoots = 0;
+  int numberOfExtraSquareRoots = 0;
+  int degree;
+  MatrixType T = A, sqrtT;
+
+  int maxPadeDegree = matrix_log_max_pade_degree<Scalar>::value;
+  const RealScalar maxNormForPade = maxPadeDegree<= 5? 5.3149729967117310e-1L:                    // single precision
+                                    maxPadeDegree<= 7? 2.6429608311114350e-1L:                    // double precision
+                                    maxPadeDegree<= 8? 2.32777776523703892094e-1L:                // extended precision
+                                    maxPadeDegree<=10? 1.05026503471351080481093652651105e-1L:    // double-double
+                                                       1.1880960220216759245467951592883642e-1L;  // quadruple precision
+
+  while (true) {
+    RealScalar normTminusI = (T - MatrixType::Identity(T.rows(), T.rows())).cwiseAbs().colwise().sum().maxCoeff();
+    if (normTminusI < maxNormForPade) {
+      degree = matrix_log_get_pade_degree(normTminusI);
+      int degree2 = matrix_log_get_pade_degree(normTminusI / RealScalar(2));
+      if ((degree - degree2 <= 1) || (numberOfExtraSquareRoots == 1)) 
+        break;
+      ++numberOfExtraSquareRoots;
+    }
+    matrix_sqrt_triangular(T, sqrtT);
+    T = sqrtT.template triangularView<Upper>();
+    ++numberOfSquareRoots;
+  }
+
+  matrix_log_compute_pade(result, T, degree);
+  result *= pow(RealScalar(2), numberOfSquareRoots);
+}
+
+/** \ingroup MatrixFunctions_Module
+  * \class MatrixLogarithmAtomic
+  * \brief Helper class for computing matrix logarithm of atomic matrices.
+  *
+  * Here, an atomic matrix is a triangular matrix whose diagonal entries are close to each other.
+  *
+  * \sa class MatrixFunctionAtomic, MatrixBase::log()
+  */
+template <typename MatrixType>
+class MatrixLogarithmAtomic
+{
+public:
+  /** \brief Compute matrix logarithm of atomic matrix
+    * \param[in]  A  argument of matrix logarithm, should be upper triangular and atomic
+    * \returns  The logarithm of \p A.
+    */
+  MatrixType compute(const MatrixType& A);
+};
+
+template <typename MatrixType>
+MatrixType MatrixLogarithmAtomic<MatrixType>::compute(const MatrixType& A)
+{
+  using std::log;
+  MatrixType result(A.rows(), A.rows());
+  if (A.rows() == 1)
+    result(0,0) = log(A(0,0));
+  else if (A.rows() == 2)
+    matrix_log_compute_2x2(A, result);
+  else
+    matrix_log_compute_big(A, result);
+  return result;
+}
+
+} // end of namespace internal
+
+/** \ingroup MatrixFunctions_Module
+  *
+  * \brief Proxy for the matrix logarithm of some matrix (expression).
+  *
+  * \tparam Derived  Type of the argument to the matrix function.
+  *
+  * This class holds the argument to the matrix function until it is
+  * assigned or evaluated for some other reason (so the argument
+  * should not be changed in the meantime). It is the return type of
+  * MatrixBase::log() and most of the time this is the only way it
+  * is used.
+  */
+template<typename Derived> class MatrixLogarithmReturnValue
+: public ReturnByValue<MatrixLogarithmReturnValue<Derived> >
+{
+public:
+  typedef typename Derived::Scalar Scalar;
+  typedef typename Derived::Index Index;
+
+protected:
+  typedef typename internal::ref_selector<Derived>::type DerivedNested;
+
+public:
+
+  /** \brief Constructor.
+    *
+    * \param[in]  A  %Matrix (expression) forming the argument of the matrix logarithm.
+    */
+  explicit MatrixLogarithmReturnValue(const Derived& A) : m_A(A) { }
+  
+  /** \brief Compute the matrix logarithm.
+    *
+    * \param[out]  result  Logarithm of \c A, where \c A is as specified in the constructor.
+    */
+  template <typename ResultType>
+  inline void evalTo(ResultType& result) const
+  {
+    typedef typename internal::nested_eval<Derived, 10>::type DerivedEvalType;
+    typedef typename internal::remove_all<DerivedEvalType>::type DerivedEvalTypeClean;
+    typedef internal::traits<DerivedEvalTypeClean> Traits;
+    static const int RowsAtCompileTime = Traits::RowsAtCompileTime;
+    static const int ColsAtCompileTime = Traits::ColsAtCompileTime;
+    typedef std::complex<typename NumTraits<Scalar>::Real> ComplexScalar;
+    typedef Matrix<ComplexScalar, Dynamic, Dynamic, 0, RowsAtCompileTime, ColsAtCompileTime> DynMatrixType;
+    typedef internal::MatrixLogarithmAtomic<DynMatrixType> AtomicType;
+    AtomicType atomic;
+    
+    internal::matrix_function_compute<typename DerivedEvalTypeClean::PlainObject>::run(m_A, atomic, result);
+  }
+
+  Index rows() const { return m_A.rows(); }
+  Index cols() const { return m_A.cols(); }
+  
+private:
+  const DerivedNested m_A;
+};
+
+namespace internal {
+  template<typename Derived>
+  struct traits<MatrixLogarithmReturnValue<Derived> >
+  {
+    typedef typename Derived::PlainObject ReturnType;
+  };
+}
+
+
+/********** MatrixBase method **********/
+
+
+template <typename Derived>
+const MatrixLogarithmReturnValue<Derived> MatrixBase<Derived>::log() const
+{
+  eigen_assert(rows() == cols());
+  return MatrixLogarithmReturnValue<Derived>(derived());
+}
+
+} // end namespace Eigen
+
+#endif // EIGEN_MATRIX_LOGARITHM
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/MatrixFunctions/StemFunction.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/MatrixFunctions/StemFunction.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/MatrixFunctions/StemFunction.h	(revision 3762)
@@ -0,0 +1,117 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2010, 2013 Jitse Niesen <jitse@maths.leeds.ac.uk>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_STEM_FUNCTION
+#define EIGEN_STEM_FUNCTION
+
+namespace Eigen { 
+
+namespace internal {
+
+/** \brief The exponential function (and its derivatives). */
+template <typename Scalar>
+Scalar stem_function_exp(Scalar x, int)
+{
+  using std::exp;
+  return exp(x);
+}
+
+/** \brief Cosine (and its derivatives). */
+template <typename Scalar>
+Scalar stem_function_cos(Scalar x, int n)
+{
+  using std::cos;
+  using std::sin;
+  Scalar res;
+
+  switch (n % 4) {
+  case 0: 
+    res = std::cos(x);
+    break;
+  case 1:
+    res = -std::sin(x);
+    break;
+  case 2:
+    res = -std::cos(x);
+    break;
+  case 3:
+    res = std::sin(x);
+    break;
+  }
+  return res;
+}
+
+/** \brief Sine (and its derivatives). */
+template <typename Scalar>
+Scalar stem_function_sin(Scalar x, int n)
+{
+  using std::cos;
+  using std::sin;
+  Scalar res;
+
+  switch (n % 4) {
+  case 0:
+    res = std::sin(x);
+    break;
+  case 1:
+    res = std::cos(x);
+    break;
+  case 2:
+    res = -std::sin(x);
+    break;
+  case 3:
+    res = -std::cos(x);
+    break;
+  }
+  return res;
+}
+
+/** \brief Hyperbolic cosine (and its derivatives). */
+template <typename Scalar>
+Scalar stem_function_cosh(Scalar x, int n)
+{
+  using std::cosh;
+  using std::sinh;
+  Scalar res;
+  
+  switch (n % 2) {
+  case 0:
+    res = std::cosh(x);
+    break;
+  case 1:
+    res = std::sinh(x);
+    break;
+  }
+  return res;
+}
+	
+/** \brief Hyperbolic sine (and its derivatives). */
+template <typename Scalar>
+Scalar stem_function_sinh(Scalar x, int n)
+{
+  using std::cosh;
+  using std::sinh;
+  Scalar res;
+  
+  switch (n % 2) {
+  case 0:
+    res = std::sinh(x);
+    break;
+  case 1:
+    res = std::cosh(x);
+    break;
+  }
+  return res;
+}
+
+} // end namespace internal
+
+} // end namespace Eigen
+
+#endif // EIGEN_STEM_FUNCTION
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/MatrixFunctions/MatrixPower.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/MatrixFunctions/MatrixPower.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/MatrixFunctions/MatrixPower.h	(revision 3762)
@@ -0,0 +1,709 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2012, 2013 Chen-Pang He <jdh8@ms63.hinet.net>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_MATRIX_POWER
+#define EIGEN_MATRIX_POWER
+
+namespace Eigen {
+
+template<typename MatrixType> class MatrixPower;
+
+/**
+ * \ingroup MatrixFunctions_Module
+ *
+ * \brief Proxy for the matrix power of some matrix.
+ *
+ * \tparam MatrixType  type of the base, a matrix.
+ *
+ * This class holds the arguments to the matrix power until it is
+ * assigned or evaluated for some other reason (so the argument
+ * should not be changed in the meantime). It is the return type of
+ * MatrixPower::operator() and related functions and most of the
+ * time this is the only way it is used.
+ */
+/* TODO This class is only used by MatrixPower, so it should be nested
+ * into MatrixPower, like MatrixPower::ReturnValue. However, my
+ * compiler complained about unused template parameter in the
+ * following declaration in namespace internal.
+ *
+ * template<typename MatrixType>
+ * struct traits<MatrixPower<MatrixType>::ReturnValue>;
+ */
+template<typename MatrixType>
+class MatrixPowerParenthesesReturnValue : public ReturnByValue< MatrixPowerParenthesesReturnValue<MatrixType> >
+{
+  public:
+    typedef typename MatrixType::RealScalar RealScalar;
+    typedef typename MatrixType::Index Index;
+
+    /**
+     * \brief Constructor.
+     *
+     * \param[in] pow  %MatrixPower storing the base.
+     * \param[in] p    scalar, the exponent of the matrix power.
+     */
+    MatrixPowerParenthesesReturnValue(MatrixPower<MatrixType>& pow, RealScalar p) : m_pow(pow), m_p(p)
+    { }
+
+    /**
+     * \brief Compute the matrix power.
+     *
+     * \param[out] result
+     */
+    template<typename ResultType>
+    inline void evalTo(ResultType& result) const
+    { m_pow.compute(result, m_p); }
+
+    Index rows() const { return m_pow.rows(); }
+    Index cols() const { return m_pow.cols(); }
+
+  private:
+    MatrixPower<MatrixType>& m_pow;
+    const RealScalar m_p;
+};
+
+/**
+ * \ingroup MatrixFunctions_Module
+ *
+ * \brief Class for computing matrix powers.
+ *
+ * \tparam MatrixType  type of the base, expected to be an instantiation
+ * of the Matrix class template.
+ *
+ * This class is capable of computing triangular real/complex matrices
+ * raised to a power in the interval \f$ (-1, 1) \f$.
+ *
+ * \note Currently this class is only used by MatrixPower. One may
+ * insist that this be nested into MatrixPower. This class is here to
+ * faciliate future development of triangular matrix functions.
+ */
+template<typename MatrixType>
+class MatrixPowerAtomic : internal::noncopyable
+{
+  private:
+    enum {
+      RowsAtCompileTime = MatrixType::RowsAtCompileTime,
+      MaxRowsAtCompileTime = MatrixType::MaxRowsAtCompileTime
+    };
+    typedef typename MatrixType::Scalar Scalar;
+    typedef typename MatrixType::RealScalar RealScalar;
+    typedef std::complex<RealScalar> ComplexScalar;
+    typedef typename MatrixType::Index Index;
+    typedef Block<MatrixType,Dynamic,Dynamic> ResultType;
+
+    const MatrixType& m_A;
+    RealScalar m_p;
+
+    void computePade(int degree, const MatrixType& IminusT, ResultType& res) const;
+    void compute2x2(ResultType& res, RealScalar p) const;
+    void computeBig(ResultType& res) const;
+    static int getPadeDegree(float normIminusT);
+    static int getPadeDegree(double normIminusT);
+    static int getPadeDegree(long double normIminusT);
+    static ComplexScalar computeSuperDiag(const ComplexScalar&, const ComplexScalar&, RealScalar p);
+    static RealScalar computeSuperDiag(RealScalar, RealScalar, RealScalar p);
+
+  public:
+    /**
+     * \brief Constructor.
+     *
+     * \param[in] T  the base of the matrix power.
+     * \param[in] p  the exponent of the matrix power, should be in
+     * \f$ (-1, 1) \f$.
+     *
+     * The class stores a reference to T, so it should not be changed
+     * (or destroyed) before evaluation. Only the upper triangular
+     * part of T is read.
+     */
+    MatrixPowerAtomic(const MatrixType& T, RealScalar p);
+    
+    /**
+     * \brief Compute the matrix power.
+     *
+     * \param[out] res  \f$ A^p \f$ where A and p are specified in the
+     * constructor.
+     */
+    void compute(ResultType& res) const;
+};
+
+template<typename MatrixType>
+MatrixPowerAtomic<MatrixType>::MatrixPowerAtomic(const MatrixType& T, RealScalar p) :
+  m_A(T), m_p(p)
+{
+  eigen_assert(T.rows() == T.cols());
+  eigen_assert(p > -1 && p < 1);
+}
+
+template<typename MatrixType>
+void MatrixPowerAtomic<MatrixType>::compute(ResultType& res) const
+{
+  using std::pow;
+  switch (m_A.rows()) {
+    case 0:
+      break;
+    case 1:
+      res(0,0) = pow(m_A(0,0), m_p);
+      break;
+    case 2:
+      compute2x2(res, m_p);
+      break;
+    default:
+      computeBig(res);
+  }
+}
+
+template<typename MatrixType>
+void MatrixPowerAtomic<MatrixType>::computePade(int degree, const MatrixType& IminusT, ResultType& res) const
+{
+  int i = 2*degree;
+  res = (m_p-degree) / (2*i-2) * IminusT;
+
+  for (--i; i; --i) {
+    res = (MatrixType::Identity(IminusT.rows(), IminusT.cols()) + res).template triangularView<Upper>()
+	.solve((i==1 ? -m_p : i&1 ? (-m_p-i/2)/(2*i) : (m_p-i/2)/(2*i-2)) * IminusT).eval();
+  }
+  res += MatrixType::Identity(IminusT.rows(), IminusT.cols());
+}
+
+// This function assumes that res has the correct size (see bug 614)
+template<typename MatrixType>
+void MatrixPowerAtomic<MatrixType>::compute2x2(ResultType& res, RealScalar p) const
+{
+  using std::abs;
+  using std::pow;
+  res.coeffRef(0,0) = pow(m_A.coeff(0,0), p);
+
+  for (Index i=1; i < m_A.cols(); ++i) {
+    res.coeffRef(i,i) = pow(m_A.coeff(i,i), p);
+    if (m_A.coeff(i-1,i-1) == m_A.coeff(i,i))
+      res.coeffRef(i-1,i) = p * pow(m_A.coeff(i,i), p-1);
+    else if (2*abs(m_A.coeff(i-1,i-1)) < abs(m_A.coeff(i,i)) || 2*abs(m_A.coeff(i,i)) < abs(m_A.coeff(i-1,i-1)))
+      res.coeffRef(i-1,i) = (res.coeff(i,i)-res.coeff(i-1,i-1)) / (m_A.coeff(i,i)-m_A.coeff(i-1,i-1));
+    else
+      res.coeffRef(i-1,i) = computeSuperDiag(m_A.coeff(i,i), m_A.coeff(i-1,i-1), p);
+    res.coeffRef(i-1,i) *= m_A.coeff(i-1,i);
+  }
+}
+
+template<typename MatrixType>
+void MatrixPowerAtomic<MatrixType>::computeBig(ResultType& res) const
+{
+  using std::ldexp;
+  const int digits = std::numeric_limits<RealScalar>::digits;
+  const RealScalar maxNormForPade = digits <=  24? 4.3386528e-1L                            // single precision
+                                  : digits <=  53? 2.789358995219730e-1L                    // double precision
+                                  : digits <=  64? 2.4471944416607995472e-1L                // extended precision
+                                  : digits <= 106? 1.1016843812851143391275867258512e-1L    // double-double
+                                  :                9.134603732914548552537150753385375e-2L; // quadruple precision
+  MatrixType IminusT, sqrtT, T = m_A.template triangularView<Upper>();
+  RealScalar normIminusT;
+  int degree, degree2, numberOfSquareRoots = 0;
+  bool hasExtraSquareRoot = false;
+
+  for (Index i=0; i < m_A.cols(); ++i)
+    eigen_assert(m_A(i,i) != RealScalar(0));
+
+  while (true) {
+    IminusT = MatrixType::Identity(m_A.rows(), m_A.cols()) - T;
+    normIminusT = IminusT.cwiseAbs().colwise().sum().maxCoeff();
+    if (normIminusT < maxNormForPade) {
+      degree = getPadeDegree(normIminusT);
+      degree2 = getPadeDegree(normIminusT/2);
+      if (degree - degree2 <= 1 || hasExtraSquareRoot)
+	break;
+      hasExtraSquareRoot = true;
+    }
+    matrix_sqrt_triangular(T, sqrtT);
+    T = sqrtT.template triangularView<Upper>();
+    ++numberOfSquareRoots;
+  }
+  computePade(degree, IminusT, res);
+
+  for (; numberOfSquareRoots; --numberOfSquareRoots) {
+    compute2x2(res, ldexp(m_p, -numberOfSquareRoots));
+    res = res.template triangularView<Upper>() * res;
+  }
+  compute2x2(res, m_p);
+}
+  
+template<typename MatrixType>
+inline int MatrixPowerAtomic<MatrixType>::getPadeDegree(float normIminusT)
+{
+  const float maxNormForPade[] = { 2.8064004e-1f /* degree = 3 */ , 4.3386528e-1f };
+  int degree = 3;
+  for (; degree <= 4; ++degree)
+    if (normIminusT <= maxNormForPade[degree - 3])
+      break;
+  return degree;
+}
+
+template<typename MatrixType>
+inline int MatrixPowerAtomic<MatrixType>::getPadeDegree(double normIminusT)
+{
+  const double maxNormForPade[] = { 1.884160592658218e-2 /* degree = 3 */ , 6.038881904059573e-2, 1.239917516308172e-1,
+      1.999045567181744e-1, 2.789358995219730e-1 };
+  int degree = 3;
+  for (; degree <= 7; ++degree)
+    if (normIminusT <= maxNormForPade[degree - 3])
+      break;
+  return degree;
+}
+
+template<typename MatrixType>
+inline int MatrixPowerAtomic<MatrixType>::getPadeDegree(long double normIminusT)
+{
+#if   LDBL_MANT_DIG == 53
+  const int maxPadeDegree = 7;
+  const double maxNormForPade[] = { 1.884160592658218e-2L /* degree = 3 */ , 6.038881904059573e-2L, 1.239917516308172e-1L,
+      1.999045567181744e-1L, 2.789358995219730e-1L };
+#elif LDBL_MANT_DIG <= 64
+  const int maxPadeDegree = 8;
+  const long double maxNormForPade[] = { 6.3854693117491799460e-3L /* degree = 3 */ , 2.6394893435456973676e-2L,
+      6.4216043030404063729e-2L, 1.1701165502926694307e-1L, 1.7904284231268670284e-1L, 2.4471944416607995472e-1L };
+#elif LDBL_MANT_DIG <= 106
+  const int maxPadeDegree = 10;
+  const double maxNormForPade[] = { 1.0007161601787493236741409687186e-4L /* degree = 3 */ ,
+      1.0007161601787493236741409687186e-3L, 4.7069769360887572939882574746264e-3L, 1.3220386624169159689406653101695e-2L,
+      2.8063482381631737920612944054906e-2L, 4.9625993951953473052385361085058e-2L, 7.7367040706027886224557538328171e-2L,
+      1.1016843812851143391275867258512e-1L };
+#else
+  const int maxPadeDegree = 10;
+  const double maxNormForPade[] = { 5.524506147036624377378713555116378e-5L /* degree = 3 */ ,
+      6.640600568157479679823602193345995e-4L, 3.227716520106894279249709728084626e-3L,
+      9.619593944683432960546978734646284e-3L, 2.134595382433742403911124458161147e-2L,
+      3.908166513900489428442993794761185e-2L, 6.266780814639442865832535460550138e-2L,
+      9.134603732914548552537150753385375e-2L };
+#endif
+  int degree = 3;
+  for (; degree <= maxPadeDegree; ++degree)
+    if (normIminusT <= maxNormForPade[degree - 3])
+      break;
+  return degree;
+}
+
+template<typename MatrixType>
+inline typename MatrixPowerAtomic<MatrixType>::ComplexScalar
+MatrixPowerAtomic<MatrixType>::computeSuperDiag(const ComplexScalar& curr, const ComplexScalar& prev, RealScalar p)
+{
+  using std::ceil;
+  using std::exp;
+  using std::log;
+  using std::sinh;
+
+  ComplexScalar logCurr = log(curr);
+  ComplexScalar logPrev = log(prev);
+  int unwindingNumber = ceil((numext::imag(logCurr - logPrev) - RealScalar(EIGEN_PI)) / RealScalar(2*EIGEN_PI));
+  ComplexScalar w = numext::log1p((curr-prev)/prev)/RealScalar(2) + ComplexScalar(0, EIGEN_PI*unwindingNumber);
+  return RealScalar(2) * exp(RealScalar(0.5) * p * (logCurr + logPrev)) * sinh(p * w) / (curr - prev);
+}
+
+template<typename MatrixType>
+inline typename MatrixPowerAtomic<MatrixType>::RealScalar
+MatrixPowerAtomic<MatrixType>::computeSuperDiag(RealScalar curr, RealScalar prev, RealScalar p)
+{
+  using std::exp;
+  using std::log;
+  using std::sinh;
+
+  RealScalar w = numext::log1p((curr-prev)/prev)/RealScalar(2);
+  return 2 * exp(p * (log(curr) + log(prev)) / 2) * sinh(p * w) / (curr - prev);
+}
+
+/**
+ * \ingroup MatrixFunctions_Module
+ *
+ * \brief Class for computing matrix powers.
+ *
+ * \tparam MatrixType  type of the base, expected to be an instantiation
+ * of the Matrix class template.
+ *
+ * This class is capable of computing real/complex matrices raised to
+ * an arbitrary real power. Meanwhile, it saves the result of Schur
+ * decomposition if an non-integral power has even been calculated.
+ * Therefore, if you want to compute multiple (>= 2) matrix powers
+ * for the same matrix, using the class directly is more efficient than
+ * calling MatrixBase::pow().
+ *
+ * Example:
+ * \include MatrixPower_optimal.cpp
+ * Output: \verbinclude MatrixPower_optimal.out
+ */
+template<typename MatrixType>
+class MatrixPower : internal::noncopyable
+{
+  private:
+    typedef typename MatrixType::Scalar Scalar;
+    typedef typename MatrixType::RealScalar RealScalar;
+    typedef typename MatrixType::Index Index;
+
+  public:
+    /**
+     * \brief Constructor.
+     *
+     * \param[in] A  the base of the matrix power.
+     *
+     * The class stores a reference to A, so it should not be changed
+     * (or destroyed) before evaluation.
+     */
+    explicit MatrixPower(const MatrixType& A) :
+      m_A(A),
+      m_conditionNumber(0),
+      m_rank(A.cols()),
+      m_nulls(0)
+    { eigen_assert(A.rows() == A.cols()); }
+
+    /**
+     * \brief Returns the matrix power.
+     *
+     * \param[in] p  exponent, a real scalar.
+     * \return The expression \f$ A^p \f$, where A is specified in the
+     * constructor.
+     */
+    const MatrixPowerParenthesesReturnValue<MatrixType> operator()(RealScalar p)
+    { return MatrixPowerParenthesesReturnValue<MatrixType>(*this, p); }
+
+    /**
+     * \brief Compute the matrix power.
+     *
+     * \param[in]  p    exponent, a real scalar.
+     * \param[out] res  \f$ A^p \f$ where A is specified in the
+     * constructor.
+     */
+    template<typename ResultType>
+    void compute(ResultType& res, RealScalar p);
+    
+    Index rows() const { return m_A.rows(); }
+    Index cols() const { return m_A.cols(); }
+
+  private:
+    typedef std::complex<RealScalar> ComplexScalar;
+    typedef Matrix<ComplexScalar, Dynamic, Dynamic, 0,
+              MatrixType::RowsAtCompileTime, MatrixType::ColsAtCompileTime> ComplexMatrix;
+
+    /** \brief Reference to the base of matrix power. */
+    typename MatrixType::Nested m_A;
+
+    /** \brief Temporary storage. */
+    MatrixType m_tmp;
+
+    /** \brief Store the result of Schur decomposition. */
+    ComplexMatrix m_T, m_U;
+    
+    /** \brief Store fractional power of m_T. */
+    ComplexMatrix m_fT;
+
+    /**
+     * \brief Condition number of m_A.
+     *
+     * It is initialized as 0 to avoid performing unnecessary Schur
+     * decomposition, which is the bottleneck.
+     */
+    RealScalar m_conditionNumber;
+
+    /** \brief Rank of m_A. */
+    Index m_rank;
+    
+    /** \brief Rank deficiency of m_A. */
+    Index m_nulls;
+
+    /**
+     * \brief Split p into integral part and fractional part.
+     *
+     * \param[in]  p        The exponent.
+     * \param[out] p        The fractional part ranging in \f$ (-1, 1) \f$.
+     * \param[out] intpart  The integral part.
+     *
+     * Only if the fractional part is nonzero, it calls initialize().
+     */
+    void split(RealScalar& p, RealScalar& intpart);
+
+    /** \brief Perform Schur decomposition for fractional power. */
+    void initialize();
+
+    template<typename ResultType>
+    void computeIntPower(ResultType& res, RealScalar p);
+
+    template<typename ResultType>
+    void computeFracPower(ResultType& res, RealScalar p);
+
+    template<int Rows, int Cols, int Options, int MaxRows, int MaxCols>
+    static void revertSchur(
+        Matrix<ComplexScalar, Rows, Cols, Options, MaxRows, MaxCols>& res,
+        const ComplexMatrix& T,
+        const ComplexMatrix& U);
+
+    template<int Rows, int Cols, int Options, int MaxRows, int MaxCols>
+    static void revertSchur(
+        Matrix<RealScalar, Rows, Cols, Options, MaxRows, MaxCols>& res,
+        const ComplexMatrix& T,
+        const ComplexMatrix& U);
+};
+
+template<typename MatrixType>
+template<typename ResultType>
+void MatrixPower<MatrixType>::compute(ResultType& res, RealScalar p)
+{
+  using std::pow;
+  switch (cols()) {
+    case 0:
+      break;
+    case 1:
+      res(0,0) = pow(m_A.coeff(0,0), p);
+      break;
+    default:
+      RealScalar intpart;
+      split(p, intpart);
+
+      res = MatrixType::Identity(rows(), cols());
+      computeIntPower(res, intpart);
+      if (p) computeFracPower(res, p);
+  }
+}
+
+template<typename MatrixType>
+void MatrixPower<MatrixType>::split(RealScalar& p, RealScalar& intpart)
+{
+  using std::floor;
+  using std::pow;
+
+  intpart = floor(p);
+  p -= intpart;
+
+  // Perform Schur decomposition if it is not yet performed and the power is
+  // not an integer.
+  if (!m_conditionNumber && p)
+    initialize();
+
+  // Choose the more stable of intpart = floor(p) and intpart = ceil(p).
+  if (p > RealScalar(0.5) && p > (1-p) * pow(m_conditionNumber, p)) {
+    --p;
+    ++intpart;
+  }
+}
+
+template<typename MatrixType>
+void MatrixPower<MatrixType>::initialize()
+{
+  const ComplexSchur<MatrixType> schurOfA(m_A);
+  JacobiRotation<ComplexScalar> rot;
+  ComplexScalar eigenvalue;
+
+  m_fT.resizeLike(m_A);
+  m_T = schurOfA.matrixT();
+  m_U = schurOfA.matrixU();
+  m_conditionNumber = m_T.diagonal().array().abs().maxCoeff() / m_T.diagonal().array().abs().minCoeff();
+
+  // Move zero eigenvalues to the bottom right corner.
+  for (Index i = cols()-1; i>=0; --i) {
+    if (m_rank <= 2)
+      return;
+    if (m_T.coeff(i,i) == RealScalar(0)) {
+      for (Index j=i+1; j < m_rank; ++j) {
+        eigenvalue = m_T.coeff(j,j);
+        rot.makeGivens(m_T.coeff(j-1,j), eigenvalue);
+        m_T.applyOnTheRight(j-1, j, rot);
+        m_T.applyOnTheLeft(j-1, j, rot.adjoint());
+        m_T.coeffRef(j-1,j-1) = eigenvalue;
+        m_T.coeffRef(j,j) = RealScalar(0);
+        m_U.applyOnTheRight(j-1, j, rot);
+      }
+      --m_rank;
+    }
+  }
+
+  m_nulls = rows() - m_rank;
+  if (m_nulls) {
+    eigen_assert(m_T.bottomRightCorner(m_nulls, m_nulls).isZero()
+        && "Base of matrix power should be invertible or with a semisimple zero eigenvalue.");
+    m_fT.bottomRows(m_nulls).fill(RealScalar(0));
+  }
+}
+
+template<typename MatrixType>
+template<typename ResultType>
+void MatrixPower<MatrixType>::computeIntPower(ResultType& res, RealScalar p)
+{
+  using std::abs;
+  using std::fmod;
+  RealScalar pp = abs(p);
+
+  if (p<0) 
+    m_tmp = m_A.inverse();
+  else     
+    m_tmp = m_A;
+
+  while (true) {
+    if (fmod(pp, 2) >= 1)
+      res = m_tmp * res;
+    pp /= 2;
+    if (pp < 1)
+      break;
+    m_tmp *= m_tmp;
+  }
+}
+
+template<typename MatrixType>
+template<typename ResultType>
+void MatrixPower<MatrixType>::computeFracPower(ResultType& res, RealScalar p)
+{
+  Block<ComplexMatrix,Dynamic,Dynamic> blockTp(m_fT, 0, 0, m_rank, m_rank);
+  eigen_assert(m_conditionNumber);
+  eigen_assert(m_rank + m_nulls == rows());
+
+  MatrixPowerAtomic<ComplexMatrix>(m_T.topLeftCorner(m_rank, m_rank), p).compute(blockTp);
+  if (m_nulls) {
+    m_fT.topRightCorner(m_rank, m_nulls) = m_T.topLeftCorner(m_rank, m_rank).template triangularView<Upper>()
+        .solve(blockTp * m_T.topRightCorner(m_rank, m_nulls));
+  }
+  revertSchur(m_tmp, m_fT, m_U);
+  res = m_tmp * res;
+}
+
+template<typename MatrixType>
+template<int Rows, int Cols, int Options, int MaxRows, int MaxCols>
+inline void MatrixPower<MatrixType>::revertSchur(
+    Matrix<ComplexScalar, Rows, Cols, Options, MaxRows, MaxCols>& res,
+    const ComplexMatrix& T,
+    const ComplexMatrix& U)
+{ res.noalias() = U * (T.template triangularView<Upper>() * U.adjoint()); }
+
+template<typename MatrixType>
+template<int Rows, int Cols, int Options, int MaxRows, int MaxCols>
+inline void MatrixPower<MatrixType>::revertSchur(
+    Matrix<RealScalar, Rows, Cols, Options, MaxRows, MaxCols>& res,
+    const ComplexMatrix& T,
+    const ComplexMatrix& U)
+{ res.noalias() = (U * (T.template triangularView<Upper>() * U.adjoint())).real(); }
+
+/**
+ * \ingroup MatrixFunctions_Module
+ *
+ * \brief Proxy for the matrix power of some matrix (expression).
+ *
+ * \tparam Derived  type of the base, a matrix (expression).
+ *
+ * This class holds the arguments to the matrix power until it is
+ * assigned or evaluated for some other reason (so the argument
+ * should not be changed in the meantime). It is the return type of
+ * MatrixBase::pow() and related functions and most of the
+ * time this is the only way it is used.
+ */
+template<typename Derived>
+class MatrixPowerReturnValue : public ReturnByValue< MatrixPowerReturnValue<Derived> >
+{
+  public:
+    typedef typename Derived::PlainObject PlainObject;
+    typedef typename Derived::RealScalar RealScalar;
+    typedef typename Derived::Index Index;
+
+    /**
+     * \brief Constructor.
+     *
+     * \param[in] A  %Matrix (expression), the base of the matrix power.
+     * \param[in] p  real scalar, the exponent of the matrix power.
+     */
+    MatrixPowerReturnValue(const Derived& A, RealScalar p) : m_A(A), m_p(p)
+    { }
+
+    /**
+     * \brief Compute the matrix power.
+     *
+     * \param[out] result  \f$ A^p \f$ where \p A and \p p are as in the
+     * constructor.
+     */
+    template<typename ResultType>
+    inline void evalTo(ResultType& result) const
+    { MatrixPower<PlainObject>(m_A.eval()).compute(result, m_p); }
+
+    Index rows() const { return m_A.rows(); }
+    Index cols() const { return m_A.cols(); }
+
+  private:
+    const Derived& m_A;
+    const RealScalar m_p;
+};
+
+/**
+ * \ingroup MatrixFunctions_Module
+ *
+ * \brief Proxy for the matrix power of some matrix (expression).
+ *
+ * \tparam Derived  type of the base, a matrix (expression).
+ *
+ * This class holds the arguments to the matrix power until it is
+ * assigned or evaluated for some other reason (so the argument
+ * should not be changed in the meantime). It is the return type of
+ * MatrixBase::pow() and related functions and most of the
+ * time this is the only way it is used.
+ */
+template<typename Derived>
+class MatrixComplexPowerReturnValue : public ReturnByValue< MatrixComplexPowerReturnValue<Derived> >
+{
+  public:
+    typedef typename Derived::PlainObject PlainObject;
+    typedef typename std::complex<typename Derived::RealScalar> ComplexScalar;
+    typedef typename Derived::Index Index;
+
+    /**
+     * \brief Constructor.
+     *
+     * \param[in] A  %Matrix (expression), the base of the matrix power.
+     * \param[in] p  complex scalar, the exponent of the matrix power.
+     */
+    MatrixComplexPowerReturnValue(const Derived& A, const ComplexScalar& p) : m_A(A), m_p(p)
+    { }
+
+    /**
+     * \brief Compute the matrix power.
+     *
+     * Because \p p is complex, \f$ A^p \f$ is simply evaluated as \f$
+     * \exp(p \log(A)) \f$.
+     *
+     * \param[out] result  \f$ A^p \f$ where \p A and \p p are as in the
+     * constructor.
+     */
+    template<typename ResultType>
+    inline void evalTo(ResultType& result) const
+    { result = (m_p * m_A.log()).exp(); }
+
+    Index rows() const { return m_A.rows(); }
+    Index cols() const { return m_A.cols(); }
+
+  private:
+    const Derived& m_A;
+    const ComplexScalar m_p;
+};
+
+namespace internal {
+
+template<typename MatrixPowerType>
+struct traits< MatrixPowerParenthesesReturnValue<MatrixPowerType> >
+{ typedef typename MatrixPowerType::PlainObject ReturnType; };
+
+template<typename Derived>
+struct traits< MatrixPowerReturnValue<Derived> >
+{ typedef typename Derived::PlainObject ReturnType; };
+
+template<typename Derived>
+struct traits< MatrixComplexPowerReturnValue<Derived> >
+{ typedef typename Derived::PlainObject ReturnType; };
+
+}
+
+template<typename Derived>
+const MatrixPowerReturnValue<Derived> MatrixBase<Derived>::pow(const RealScalar& p) const
+{ return MatrixPowerReturnValue<Derived>(derived(), p); }
+
+template<typename Derived>
+const MatrixComplexPowerReturnValue<Derived> MatrixBase<Derived>::pow(const std::complex<RealScalar>& p) const
+{ return MatrixComplexPowerReturnValue<Derived>(derived(), p); }
+
+} // namespace Eigen
+
+#endif // EIGEN_MATRIX_POWER
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/Splines/Spline.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/Splines/Spline.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/Splines/Spline.h	(revision 3762)
@@ -0,0 +1,507 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 20010-2011 Hauke Heibel <hauke.heibel@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_SPLINE_H
+#define EIGEN_SPLINE_H
+
+#include "SplineFwd.h"
+
+namespace Eigen
+{
+    /**
+     * \ingroup Splines_Module
+     * \class Spline
+     * \brief A class representing multi-dimensional spline curves.
+     *
+     * The class represents B-splines with non-uniform knot vectors. Each control
+     * point of the B-spline is associated with a basis function
+     * \f{align*}
+     *   C(u) & = \sum_{i=0}^{n}N_{i,p}(u)P_i
+     * \f}
+     *
+     * \tparam _Scalar The underlying data type (typically float or double)
+     * \tparam _Dim The curve dimension (e.g. 2 or 3)
+     * \tparam _Degree Per default set to Dynamic; could be set to the actual desired
+     *                degree for optimization purposes (would result in stack allocation
+     *                of several temporary variables).
+     **/
+  template <typename _Scalar, int _Dim, int _Degree>
+  class Spline
+  {
+  public:
+    typedef _Scalar Scalar; /*!< The spline curve's scalar type. */
+    enum { Dimension = _Dim /*!< The spline curve's dimension. */ };
+    enum { Degree = _Degree /*!< The spline curve's degree. */ };
+
+    /** \brief The point type the spline is representing. */
+    typedef typename SplineTraits<Spline>::PointType PointType;
+    
+    /** \brief The data type used to store knot vectors. */
+    typedef typename SplineTraits<Spline>::KnotVectorType KnotVectorType;
+
+    /** \brief The data type used to store parameter vectors. */
+    typedef typename SplineTraits<Spline>::ParameterVectorType ParameterVectorType;
+    
+    /** \brief The data type used to store non-zero basis functions. */
+    typedef typename SplineTraits<Spline>::BasisVectorType BasisVectorType;
+
+    /** \brief The data type used to store the values of the basis function derivatives. */
+    typedef typename SplineTraits<Spline>::BasisDerivativeType BasisDerivativeType;
+    
+    /** \brief The data type representing the spline's control points. */
+    typedef typename SplineTraits<Spline>::ControlPointVectorType ControlPointVectorType;
+    
+    /**
+    * \brief Creates a (constant) zero spline.
+    * For Splines with dynamic degree, the resulting degree will be 0.
+    **/
+    Spline() 
+    : m_knots(1, (Degree==Dynamic ? 2 : 2*Degree+2))
+    , m_ctrls(ControlPointVectorType::Zero(Dimension,(Degree==Dynamic ? 1 : Degree+1))) 
+    {
+      // in theory this code can go to the initializer list but it will get pretty
+      // much unreadable ...
+      enum { MinDegree = (Degree==Dynamic ? 0 : Degree) };
+      m_knots.template segment<MinDegree+1>(0) = Array<Scalar,1,MinDegree+1>::Zero();
+      m_knots.template segment<MinDegree+1>(MinDegree+1) = Array<Scalar,1,MinDegree+1>::Ones();
+    }
+
+    /**
+    * \brief Creates a spline from a knot vector and control points.
+    * \param knots The spline's knot vector.
+    * \param ctrls The spline's control point vector.
+    **/
+    template <typename OtherVectorType, typename OtherArrayType>
+    Spline(const OtherVectorType& knots, const OtherArrayType& ctrls) : m_knots(knots), m_ctrls(ctrls) {}
+
+    /**
+    * \brief Copy constructor for splines.
+    * \param spline The input spline.
+    **/
+    template <int OtherDegree>
+    Spline(const Spline<Scalar, Dimension, OtherDegree>& spline) : 
+    m_knots(spline.knots()), m_ctrls(spline.ctrls()) {}
+
+    /**
+     * \brief Returns the knots of the underlying spline.
+     **/
+    const KnotVectorType& knots() const { return m_knots; }
+    
+    /**
+     * \brief Returns the ctrls of the underlying spline.
+     **/    
+    const ControlPointVectorType& ctrls() const { return m_ctrls; }
+
+    /**
+     * \brief Returns the spline value at a given site \f$u\f$.
+     *
+     * The function returns
+     * \f{align*}
+     *   C(u) & = \sum_{i=0}^{n}N_{i,p}P_i
+     * \f}
+     *
+     * \param u Parameter \f$u \in [0;1]\f$ at which the spline is evaluated.
+     * \return The spline value at the given location \f$u\f$.
+     **/
+    PointType operator()(Scalar u) const;
+
+    /**
+     * \brief Evaluation of spline derivatives of up-to given order.
+     *
+     * The function returns
+     * \f{align*}
+     *   \frac{d^i}{du^i}C(u) & = \sum_{i=0}^{n} \frac{d^i}{du^i} N_{i,p}(u)P_i
+     * \f}
+     * for i ranging between 0 and order.
+     *
+     * \param u Parameter \f$u \in [0;1]\f$ at which the spline derivative is evaluated.
+     * \param order The order up to which the derivatives are computed.
+     **/
+    typename SplineTraits<Spline>::DerivativeType
+      derivatives(Scalar u, DenseIndex order) const;
+
+    /**
+     * \copydoc Spline::derivatives
+     * Using the template version of this function is more efficieent since
+     * temporary objects are allocated on the stack whenever this is possible.
+     **/    
+    template <int DerivativeOrder>
+    typename SplineTraits<Spline,DerivativeOrder>::DerivativeType
+      derivatives(Scalar u, DenseIndex order = DerivativeOrder) const;
+
+    /**
+     * \brief Computes the non-zero basis functions at the given site.
+     *
+     * Splines have local support and a point from their image is defined
+     * by exactly \f$p+1\f$ control points \f$P_i\f$ where \f$p\f$ is the
+     * spline degree.
+     *
+     * This function computes the \f$p+1\f$ non-zero basis function values
+     * for a given parameter value \f$u\f$. It returns
+     * \f{align*}{
+     *   N_{i,p}(u), \hdots, N_{i+p+1,p}(u)
+     * \f}
+     *
+     * \param u Parameter \f$u \in [0;1]\f$ at which the non-zero basis functions 
+     *          are computed.
+     **/
+    typename SplineTraits<Spline>::BasisVectorType
+      basisFunctions(Scalar u) const;
+
+    /**
+     * \brief Computes the non-zero spline basis function derivatives up to given order.
+     *
+     * The function computes
+     * \f{align*}{
+     *   \frac{d^i}{du^i} N_{i,p}(u), \hdots, \frac{d^i}{du^i} N_{i+p+1,p}(u)
+     * \f}
+     * with i ranging from 0 up to the specified order.
+     *
+     * \param u Parameter \f$u \in [0;1]\f$ at which the non-zero basis function
+     *          derivatives are computed.
+     * \param order The order up to which the basis function derivatives are computes.
+     **/
+    typename SplineTraits<Spline>::BasisDerivativeType
+      basisFunctionDerivatives(Scalar u, DenseIndex order) const;
+
+    /**
+     * \copydoc Spline::basisFunctionDerivatives
+     * Using the template version of this function is more efficieent since
+     * temporary objects are allocated on the stack whenever this is possible.
+     **/    
+    template <int DerivativeOrder>
+    typename SplineTraits<Spline,DerivativeOrder>::BasisDerivativeType
+      basisFunctionDerivatives(Scalar u, DenseIndex order = DerivativeOrder) const;
+
+    /**
+     * \brief Returns the spline degree.
+     **/ 
+    DenseIndex degree() const;
+
+    /** 
+     * \brief Returns the span within the knot vector in which u is falling.
+     * \param u The site for which the span is determined.
+     **/
+    DenseIndex span(Scalar u) const;
+
+    /**
+     * \brief Computes the span within the provided knot vector in which u is falling.
+     **/
+    static DenseIndex Span(typename SplineTraits<Spline>::Scalar u, DenseIndex degree, const typename SplineTraits<Spline>::KnotVectorType& knots);
+    
+    /**
+     * \brief Returns the spline's non-zero basis functions.
+     *
+     * The function computes and returns
+     * \f{align*}{
+     *   N_{i,p}(u), \hdots, N_{i+p+1,p}(u)
+     * \f}
+     *
+     * \param u The site at which the basis functions are computed.
+     * \param degree The degree of the underlying spline.
+     * \param knots The underlying spline's knot vector.
+     **/
+    static BasisVectorType BasisFunctions(Scalar u, DenseIndex degree, const KnotVectorType& knots);
+
+    /**
+     * \copydoc Spline::basisFunctionDerivatives
+     * \param degree The degree of the underlying spline
+     * \param knots The underlying spline's knot vector.
+     **/    
+    static BasisDerivativeType BasisFunctionDerivatives(
+      const Scalar u, const DenseIndex order, const DenseIndex degree, const KnotVectorType& knots);
+
+  private:
+    KnotVectorType m_knots; /*!< Knot vector. */
+    ControlPointVectorType  m_ctrls; /*!< Control points. */
+
+    template <typename DerivativeType>
+    static void BasisFunctionDerivativesImpl(
+      const typename Spline<_Scalar, _Dim, _Degree>::Scalar u,
+      const DenseIndex order,
+      const DenseIndex p, 
+      const typename Spline<_Scalar, _Dim, _Degree>::KnotVectorType& U,
+      DerivativeType& N_);
+  };
+
+  template <typename _Scalar, int _Dim, int _Degree>
+  DenseIndex Spline<_Scalar, _Dim, _Degree>::Span(
+    typename SplineTraits< Spline<_Scalar, _Dim, _Degree> >::Scalar u,
+    DenseIndex degree,
+    const typename SplineTraits< Spline<_Scalar, _Dim, _Degree> >::KnotVectorType& knots)
+  {
+    // Piegl & Tiller, "The NURBS Book", A2.1 (p. 68)
+    if (u <= knots(0)) return degree;
+    const Scalar* pos = std::upper_bound(knots.data()+degree-1, knots.data()+knots.size()-degree-1, u);
+    return static_cast<DenseIndex>( std::distance(knots.data(), pos) - 1 );
+  }
+
+  template <typename _Scalar, int _Dim, int _Degree>
+  typename Spline<_Scalar, _Dim, _Degree>::BasisVectorType
+    Spline<_Scalar, _Dim, _Degree>::BasisFunctions(
+    typename Spline<_Scalar, _Dim, _Degree>::Scalar u,
+    DenseIndex degree,
+    const typename Spline<_Scalar, _Dim, _Degree>::KnotVectorType& knots)
+  {
+    const DenseIndex p = degree;
+    const DenseIndex i = Spline::Span(u, degree, knots);
+
+    const KnotVectorType& U = knots;
+
+    BasisVectorType left(p+1); left(0) = Scalar(0);
+    BasisVectorType right(p+1); right(0) = Scalar(0);        
+
+    VectorBlock<BasisVectorType,Degree>(left,1,p) = u - VectorBlock<const KnotVectorType,Degree>(U,i+1-p,p).reverse();
+    VectorBlock<BasisVectorType,Degree>(right,1,p) = VectorBlock<const KnotVectorType,Degree>(U,i+1,p) - u;
+
+    BasisVectorType N(1,p+1);
+    N(0) = Scalar(1);
+    for (DenseIndex j=1; j<=p; ++j)
+    {
+      Scalar saved = Scalar(0);
+      for (DenseIndex r=0; r<j; r++)
+      {
+        const Scalar tmp = N(r)/(right(r+1)+left(j-r));
+        N[r] = saved + right(r+1)*tmp;
+        saved = left(j-r)*tmp;
+      }
+      N(j) = saved;
+    }
+    return N;
+  }
+
+  template <typename _Scalar, int _Dim, int _Degree>
+  DenseIndex Spline<_Scalar, _Dim, _Degree>::degree() const
+  {
+    if (_Degree == Dynamic)
+      return m_knots.size() - m_ctrls.cols() - 1;
+    else
+      return _Degree;
+  }
+
+  template <typename _Scalar, int _Dim, int _Degree>
+  DenseIndex Spline<_Scalar, _Dim, _Degree>::span(Scalar u) const
+  {
+    return Spline::Span(u, degree(), knots());
+  }
+
+  template <typename _Scalar, int _Dim, int _Degree>
+  typename Spline<_Scalar, _Dim, _Degree>::PointType Spline<_Scalar, _Dim, _Degree>::operator()(Scalar u) const
+  {
+    enum { Order = SplineTraits<Spline>::OrderAtCompileTime };
+
+    const DenseIndex span = this->span(u);
+    const DenseIndex p = degree();
+    const BasisVectorType basis_funcs = basisFunctions(u);
+
+    const Replicate<BasisVectorType,Dimension,1> ctrl_weights(basis_funcs);
+    const Block<const ControlPointVectorType,Dimension,Order> ctrl_pts(ctrls(),0,span-p,Dimension,p+1);
+    return (ctrl_weights * ctrl_pts).rowwise().sum();
+  }
+
+  /* --------------------------------------------------------------------------------------------- */
+
+  template <typename SplineType, typename DerivativeType>
+  void derivativesImpl(const SplineType& spline, typename SplineType::Scalar u, DenseIndex order, DerivativeType& der)
+  {    
+    enum { Dimension = SplineTraits<SplineType>::Dimension };
+    enum { Order = SplineTraits<SplineType>::OrderAtCompileTime };
+    enum { DerivativeOrder = DerivativeType::ColsAtCompileTime };
+
+    typedef typename SplineTraits<SplineType>::ControlPointVectorType ControlPointVectorType;
+    typedef typename SplineTraits<SplineType,DerivativeOrder>::BasisDerivativeType BasisDerivativeType;
+    typedef typename BasisDerivativeType::ConstRowXpr BasisDerivativeRowXpr;    
+
+    const DenseIndex p = spline.degree();
+    const DenseIndex span = spline.span(u);
+
+    const DenseIndex n = (std::min)(p, order);
+
+    der.resize(Dimension,n+1);
+
+    // Retrieve the basis function derivatives up to the desired order...    
+    const BasisDerivativeType basis_func_ders = spline.template basisFunctionDerivatives<DerivativeOrder>(u, n+1);
+
+    // ... and perform the linear combinations of the control points.
+    for (DenseIndex der_order=0; der_order<n+1; ++der_order)
+    {
+      const Replicate<BasisDerivativeRowXpr,Dimension,1> ctrl_weights( basis_func_ders.row(der_order) );
+      const Block<const ControlPointVectorType,Dimension,Order> ctrl_pts(spline.ctrls(),0,span-p,Dimension,p+1);
+      der.col(der_order) = (ctrl_weights * ctrl_pts).rowwise().sum();
+    }
+  }
+
+  template <typename _Scalar, int _Dim, int _Degree>
+  typename SplineTraits< Spline<_Scalar, _Dim, _Degree> >::DerivativeType
+    Spline<_Scalar, _Dim, _Degree>::derivatives(Scalar u, DenseIndex order) const
+  {
+    typename SplineTraits< Spline >::DerivativeType res;
+    derivativesImpl(*this, u, order, res);
+    return res;
+  }
+
+  template <typename _Scalar, int _Dim, int _Degree>
+  template <int DerivativeOrder>
+  typename SplineTraits< Spline<_Scalar, _Dim, _Degree>, DerivativeOrder >::DerivativeType
+    Spline<_Scalar, _Dim, _Degree>::derivatives(Scalar u, DenseIndex order) const
+  {
+    typename SplineTraits< Spline, DerivativeOrder >::DerivativeType res;
+    derivativesImpl(*this, u, order, res);
+    return res;
+  }
+
+  template <typename _Scalar, int _Dim, int _Degree>
+  typename SplineTraits< Spline<_Scalar, _Dim, _Degree> >::BasisVectorType
+    Spline<_Scalar, _Dim, _Degree>::basisFunctions(Scalar u) const
+  {
+    return Spline::BasisFunctions(u, degree(), knots());
+  }
+
+  /* --------------------------------------------------------------------------------------------- */
+  
+  
+  template <typename _Scalar, int _Dim, int _Degree>
+  template <typename DerivativeType>
+  void Spline<_Scalar, _Dim, _Degree>::BasisFunctionDerivativesImpl(
+    const typename Spline<_Scalar, _Dim, _Degree>::Scalar u,
+    const DenseIndex order,
+    const DenseIndex p, 
+    const typename Spline<_Scalar, _Dim, _Degree>::KnotVectorType& U,
+    DerivativeType& N_)
+  {
+    typedef Spline<_Scalar, _Dim, _Degree> SplineType;
+    enum { Order = SplineTraits<SplineType>::OrderAtCompileTime };
+
+    const DenseIndex span = SplineType::Span(u, p, U);
+
+    const DenseIndex n = (std::min)(p, order);
+
+    N_.resize(n+1, p+1);
+
+    BasisVectorType left = BasisVectorType::Zero(p+1);
+    BasisVectorType right = BasisVectorType::Zero(p+1);
+
+    Matrix<Scalar,Order,Order> ndu(p+1,p+1);
+
+    Scalar saved, temp; // FIXME These were double instead of Scalar. Was there a reason for that?
+
+    ndu(0,0) = 1.0;
+
+    DenseIndex j;
+    for (j=1; j<=p; ++j)
+    {
+      left[j] = u-U[span+1-j];
+      right[j] = U[span+j]-u;
+      saved = 0.0;
+
+      for (DenseIndex r=0; r<j; ++r)
+      {
+        /* Lower triangle */
+        ndu(j,r) = right[r+1]+left[j-r];
+        temp = ndu(r,j-1)/ndu(j,r);
+        /* Upper triangle */
+        ndu(r,j) = static_cast<Scalar>(saved+right[r+1] * temp);
+        saved = left[j-r] * temp;
+      }
+
+      ndu(j,j) = static_cast<Scalar>(saved);
+    }
+
+    for (j = p; j>=0; --j) 
+      N_(0,j) = ndu(j,p);
+
+    // Compute the derivatives
+    DerivativeType a(n+1,p+1);
+    DenseIndex r=0;
+    for (; r<=p; ++r)
+    {
+      DenseIndex s1,s2;
+      s1 = 0; s2 = 1; // alternate rows in array a
+      a(0,0) = 1.0;
+
+      // Compute the k-th derivative
+      for (DenseIndex k=1; k<=static_cast<DenseIndex>(n); ++k)
+      {
+        Scalar d = 0.0;
+        DenseIndex rk,pk,j1,j2;
+        rk = r-k; pk = p-k;
+
+        if (r>=k)
+        {
+          a(s2,0) = a(s1,0)/ndu(pk+1,rk);
+          d = a(s2,0)*ndu(rk,pk);
+        }
+
+        if (rk>=-1) j1 = 1;
+        else        j1 = -rk;
+
+        if (r-1 <= pk) j2 = k-1;
+        else           j2 = p-r;
+
+        for (j=j1; j<=j2; ++j)
+        {
+          a(s2,j) = (a(s1,j)-a(s1,j-1))/ndu(pk+1,rk+j);
+          d += a(s2,j)*ndu(rk+j,pk);
+        }
+
+        if (r<=pk)
+        {
+          a(s2,k) = -a(s1,k-1)/ndu(pk+1,r);
+          d += a(s2,k)*ndu(r,pk);
+        }
+
+        N_(k,r) = static_cast<Scalar>(d);
+        j = s1; s1 = s2; s2 = j; // Switch rows
+      }
+    }
+
+    /* Multiply through by the correct factors */
+    /* (Eq. [2.9])                             */
+    r = p;
+    for (DenseIndex k=1; k<=static_cast<DenseIndex>(n); ++k)
+    {
+      for (j=p; j>=0; --j) N_(k,j) *= r;
+      r *= p-k;
+    }
+  }
+
+  template <typename _Scalar, int _Dim, int _Degree>
+  typename SplineTraits< Spline<_Scalar, _Dim, _Degree> >::BasisDerivativeType
+    Spline<_Scalar, _Dim, _Degree>::basisFunctionDerivatives(Scalar u, DenseIndex order) const
+  {
+    typename SplineTraits<Spline<_Scalar, _Dim, _Degree> >::BasisDerivativeType der;
+    BasisFunctionDerivativesImpl(u, order, degree(), knots(), der);
+    return der;
+  }
+
+  template <typename _Scalar, int _Dim, int _Degree>
+  template <int DerivativeOrder>
+  typename SplineTraits< Spline<_Scalar, _Dim, _Degree>, DerivativeOrder >::BasisDerivativeType
+    Spline<_Scalar, _Dim, _Degree>::basisFunctionDerivatives(Scalar u, DenseIndex order) const
+  {
+    typename SplineTraits< Spline<_Scalar, _Dim, _Degree>, DerivativeOrder >::BasisDerivativeType der;
+    BasisFunctionDerivativesImpl(u, order, degree(), knots(), der);
+    return der;
+  }
+
+  template <typename _Scalar, int _Dim, int _Degree>
+  typename SplineTraits<Spline<_Scalar, _Dim, _Degree> >::BasisDerivativeType
+  Spline<_Scalar, _Dim, _Degree>::BasisFunctionDerivatives(
+    const typename Spline<_Scalar, _Dim, _Degree>::Scalar u,
+    const DenseIndex order,
+    const DenseIndex degree,
+    const typename Spline<_Scalar, _Dim, _Degree>::KnotVectorType& knots)
+  {
+    typename SplineTraits<Spline>::BasisDerivativeType der;
+    BasisFunctionDerivativesImpl(u, order, degree, knots, der);
+    return der;
+  }
+}
+
+#endif // EIGEN_SPLINE_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/Splines/SplineFwd.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/Splines/SplineFwd.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/Splines/SplineFwd.h	(revision 3762)
@@ -0,0 +1,93 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 20010-2011 Hauke Heibel <hauke.heibel@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_SPLINES_FWD_H
+#define EIGEN_SPLINES_FWD_H
+
+#include <Eigen/Core>
+
+namespace Eigen
+{
+    template <typename Scalar, int Dim, int Degree = Dynamic> class Spline;
+
+    template < typename SplineType, int DerivativeOrder = Dynamic > struct SplineTraits {};
+
+    /**
+     * \ingroup Splines_Module
+     * \brief Compile-time attributes of the Spline class for Dynamic degree.
+     **/
+    template <typename _Scalar, int _Dim, int _Degree>
+    struct SplineTraits< Spline<_Scalar, _Dim, _Degree>, Dynamic >
+    {
+      typedef _Scalar Scalar; /*!< The spline curve's scalar type. */
+      enum { Dimension = _Dim /*!< The spline curve's dimension. */ };
+      enum { Degree = _Degree /*!< The spline curve's degree. */ };
+
+      enum { OrderAtCompileTime = _Degree==Dynamic ? Dynamic : _Degree+1 /*!< The spline curve's order at compile-time. */ };
+      enum { NumOfDerivativesAtCompileTime = OrderAtCompileTime /*!< The number of derivatives defined for the current spline. */ };
+      
+      enum { DerivativeMemoryLayout = Dimension==1 ? RowMajor : ColMajor /*!< The derivative type's memory layout. */ };
+
+      /** \brief The data type used to store non-zero basis functions. */
+      typedef Array<Scalar,1,OrderAtCompileTime> BasisVectorType;
+
+      /** \brief The data type used to store the values of the basis function derivatives. */
+      typedef Array<Scalar,Dynamic,Dynamic,RowMajor,NumOfDerivativesAtCompileTime,OrderAtCompileTime> BasisDerivativeType;
+      
+      /** \brief The data type used to store the spline's derivative values. */
+      typedef Array<Scalar,Dimension,Dynamic,DerivativeMemoryLayout,Dimension,NumOfDerivativesAtCompileTime> DerivativeType;
+
+      /** \brief The point type the spline is representing. */
+      typedef Array<Scalar,Dimension,1> PointType;
+      
+      /** \brief The data type used to store knot vectors. */
+      typedef Array<Scalar,1,Dynamic> KnotVectorType;
+
+      /** \brief The data type used to store parameter vectors. */
+      typedef Array<Scalar,1,Dynamic> ParameterVectorType;
+      
+      /** \brief The data type representing the spline's control points. */
+      typedef Array<Scalar,Dimension,Dynamic> ControlPointVectorType;
+    };
+
+    /**
+     * \ingroup Splines_Module
+     * \brief Compile-time attributes of the Spline class for fixed degree.
+     *
+     * The traits class inherits all attributes from the SplineTraits of Dynamic degree.
+     **/
+    template < typename _Scalar, int _Dim, int _Degree, int _DerivativeOrder >
+    struct SplineTraits< Spline<_Scalar, _Dim, _Degree>, _DerivativeOrder > : public SplineTraits< Spline<_Scalar, _Dim, _Degree> >
+    {
+      enum { OrderAtCompileTime = _Degree==Dynamic ? Dynamic : _Degree+1 /*!< The spline curve's order at compile-time. */ };
+      enum { NumOfDerivativesAtCompileTime = _DerivativeOrder==Dynamic ? Dynamic : _DerivativeOrder+1 /*!< The number of derivatives defined for the current spline. */ };
+      
+      enum { DerivativeMemoryLayout = _Dim==1 ? RowMajor : ColMajor /*!< The derivative type's memory layout. */ };
+
+      /** \brief The data type used to store the values of the basis function derivatives. */
+      typedef Array<_Scalar,Dynamic,Dynamic,RowMajor,NumOfDerivativesAtCompileTime,OrderAtCompileTime> BasisDerivativeType;
+      
+      /** \brief The data type used to store the spline's derivative values. */      
+      typedef Array<_Scalar,_Dim,Dynamic,DerivativeMemoryLayout,_Dim,NumOfDerivativesAtCompileTime> DerivativeType;
+    };
+
+    /** \brief 2D float B-spline with dynamic degree. */
+    typedef Spline<float,2> Spline2f;
+    
+    /** \brief 3D float B-spline with dynamic degree. */
+    typedef Spline<float,3> Spline3f;
+
+    /** \brief 2D double B-spline with dynamic degree. */
+    typedef Spline<double,2> Spline2d;
+    
+    /** \brief 3D double B-spline with dynamic degree. */
+    typedef Spline<double,3> Spline3d;
+}
+
+#endif // EIGEN_SPLINES_FWD_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/Splines/SplineFitting.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/Splines/SplineFitting.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/Splines/SplineFitting.h	(revision 3762)
@@ -0,0 +1,430 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 20010-2011 Hauke Heibel <hauke.heibel@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_SPLINE_FITTING_H
+#define EIGEN_SPLINE_FITTING_H
+
+#include <algorithm>
+#include <functional>
+#include <numeric>
+#include <vector>
+
+#include "SplineFwd.h"
+
+#include <Eigen/LU>
+#include <Eigen/QR>
+
+namespace Eigen
+{
+  /**
+   * \brief Computes knot averages.
+   * \ingroup Splines_Module
+   *
+   * The knots are computed as
+   * \f{align*}
+   *  u_0 & = \hdots = u_p = 0 \\
+   *  u_{m-p} & = \hdots = u_{m} = 1 \\
+   *  u_{j+p} & = \frac{1}{p}\sum_{i=j}^{j+p-1}\bar{u}_i \quad\quad j=1,\hdots,n-p
+   * \f}
+   * where \f$p\f$ is the degree and \f$m+1\f$ the number knots
+   * of the desired interpolating spline.
+   *
+   * \param[in] parameters The input parameters. During interpolation one for each data point.
+   * \param[in] degree The spline degree which is used during the interpolation.
+   * \param[out] knots The output knot vector.
+   *
+   * \sa Les Piegl and Wayne Tiller, The NURBS book (2nd ed.), 1997, 9.2.1 Global Curve Interpolation to Point Data
+   **/
+  template <typename KnotVectorType>
+  void KnotAveraging(const KnotVectorType& parameters, DenseIndex degree, KnotVectorType& knots)
+  {
+    knots.resize(parameters.size()+degree+1);      
+
+    for (DenseIndex j=1; j<parameters.size()-degree; ++j)
+      knots(j+degree) = parameters.segment(j,degree).mean();
+
+    knots.segment(0,degree+1) = KnotVectorType::Zero(degree+1);
+    knots.segment(knots.size()-degree-1,degree+1) = KnotVectorType::Ones(degree+1);
+  }
+
+  /**
+   * \brief Computes knot averages when derivative constraints are present.
+   * Note that this is a technical interpretation of the referenced article
+   * since the algorithm contained therein is incorrect as written.
+   * \ingroup Splines_Module
+   *
+   * \param[in] parameters The parameters at which the interpolation B-Spline
+   *            will intersect the given interpolation points. The parameters
+   *            are assumed to be a non-decreasing sequence.
+   * \param[in] degree The degree of the interpolating B-Spline. This must be
+   *            greater than zero.
+   * \param[in] derivativeIndices The indices corresponding to parameters at
+   *            which there are derivative constraints. The indices are assumed
+   *            to be a non-decreasing sequence.
+   * \param[out] knots The calculated knot vector. These will be returned as a
+   *             non-decreasing sequence
+   *
+   * \sa Les A. Piegl, Khairan Rajab, Volha Smarodzinana. 2008.
+   * Curve interpolation with directional constraints for engineering design. 
+   * Engineering with Computers
+   **/
+  template <typename KnotVectorType, typename ParameterVectorType, typename IndexArray>
+  void KnotAveragingWithDerivatives(const ParameterVectorType& parameters,
+                                    const unsigned int degree,
+                                    const IndexArray& derivativeIndices,
+                                    KnotVectorType& knots)
+  {
+    typedef typename ParameterVectorType::Scalar Scalar;
+
+    DenseIndex numParameters = parameters.size();
+    DenseIndex numDerivatives = derivativeIndices.size();
+
+    if (numDerivatives < 1)
+    {
+      KnotAveraging(parameters, degree, knots);
+      return;
+    }
+
+    DenseIndex startIndex;
+    DenseIndex endIndex;
+  
+    DenseIndex numInternalDerivatives = numDerivatives;
+    
+    if (derivativeIndices[0] == 0)
+    {
+      startIndex = 0;
+      --numInternalDerivatives;
+    }
+    else
+    {
+      startIndex = 1;
+    }
+    if (derivativeIndices[numDerivatives - 1] == numParameters - 1)
+    {
+      endIndex = numParameters - degree;
+      --numInternalDerivatives;
+    }
+    else
+    {
+      endIndex = numParameters - degree - 1;
+    }
+
+    // There are (endIndex - startIndex + 1) knots obtained from the averaging
+    // and 2 for the first and last parameters.
+    DenseIndex numAverageKnots = endIndex - startIndex + 3;
+    KnotVectorType averageKnots(numAverageKnots);
+    averageKnots[0] = parameters[0];
+
+    int newKnotIndex = 0;
+    for (DenseIndex i = startIndex; i <= endIndex; ++i)
+      averageKnots[++newKnotIndex] = parameters.segment(i, degree).mean();
+    averageKnots[++newKnotIndex] = parameters[numParameters - 1];
+
+    newKnotIndex = -1;
+  
+    ParameterVectorType temporaryParameters(numParameters + 1);
+    KnotVectorType derivativeKnots(numInternalDerivatives);
+    for (DenseIndex i = 0; i < numAverageKnots - 1; ++i)
+    {
+      temporaryParameters[0] = averageKnots[i];
+      ParameterVectorType parameterIndices(numParameters);
+      int temporaryParameterIndex = 1;
+      for (DenseIndex j = 0; j < numParameters; ++j)
+      {
+        Scalar parameter = parameters[j];
+        if (parameter >= averageKnots[i] && parameter < averageKnots[i + 1])
+        {
+          parameterIndices[temporaryParameterIndex] = j;
+          temporaryParameters[temporaryParameterIndex++] = parameter;
+        }
+      }
+      temporaryParameters[temporaryParameterIndex] = averageKnots[i + 1];
+
+      for (int j = 0; j <= temporaryParameterIndex - 2; ++j)
+      {
+        for (DenseIndex k = 0; k < derivativeIndices.size(); ++k)
+        {
+          if (parameterIndices[j + 1] == derivativeIndices[k]
+              && parameterIndices[j + 1] != 0
+              && parameterIndices[j + 1] != numParameters - 1)
+          {
+            derivativeKnots[++newKnotIndex] = temporaryParameters.segment(j, 3).mean();
+            break;
+          }
+        }
+      }
+    }
+    
+    KnotVectorType temporaryKnots(averageKnots.size() + derivativeKnots.size());
+
+    std::merge(averageKnots.data(), averageKnots.data() + averageKnots.size(),
+               derivativeKnots.data(), derivativeKnots.data() + derivativeKnots.size(),
+               temporaryKnots.data());
+
+    // Number of knots (one for each point and derivative) plus spline order.
+    DenseIndex numKnots = numParameters + numDerivatives + degree + 1;
+    knots.resize(numKnots);
+
+    knots.head(degree).fill(temporaryKnots[0]);
+    knots.tail(degree).fill(temporaryKnots.template tail<1>()[0]);
+    knots.segment(degree, temporaryKnots.size()) = temporaryKnots;
+  }
+
+  /**
+   * \brief Computes chord length parameters which are required for spline interpolation.
+   * \ingroup Splines_Module
+   *
+   * \param[in] pts The data points to which a spline should be fit.
+   * \param[out] chord_lengths The resulting chord lenggth vector.
+   *
+   * \sa Les Piegl and Wayne Tiller, The NURBS book (2nd ed.), 1997, 9.2.1 Global Curve Interpolation to Point Data
+   **/   
+  template <typename PointArrayType, typename KnotVectorType>
+  void ChordLengths(const PointArrayType& pts, KnotVectorType& chord_lengths)
+  {
+    typedef typename KnotVectorType::Scalar Scalar;
+
+    const DenseIndex n = pts.cols();
+
+    // 1. compute the column-wise norms
+    chord_lengths.resize(pts.cols());
+    chord_lengths[0] = 0;
+    chord_lengths.rightCols(n-1) = (pts.array().leftCols(n-1) - pts.array().rightCols(n-1)).matrix().colwise().norm();
+
+    // 2. compute the partial sums
+    std::partial_sum(chord_lengths.data(), chord_lengths.data()+n, chord_lengths.data());
+
+    // 3. normalize the data
+    chord_lengths /= chord_lengths(n-1);
+    chord_lengths(n-1) = Scalar(1);
+  }
+
+  /**
+   * \brief Spline fitting methods.
+   * \ingroup Splines_Module
+   **/     
+  template <typename SplineType>
+  struct SplineFitting
+  {
+    typedef typename SplineType::KnotVectorType KnotVectorType;
+    typedef typename SplineType::ParameterVectorType ParameterVectorType;
+
+    /**
+     * \brief Fits an interpolating Spline to the given data points.
+     *
+     * \param pts The points for which an interpolating spline will be computed.
+     * \param degree The degree of the interpolating spline.
+     *
+     * \returns A spline interpolating the initially provided points.
+     **/
+    template <typename PointArrayType>
+    static SplineType Interpolate(const PointArrayType& pts, DenseIndex degree);
+
+    /**
+     * \brief Fits an interpolating Spline to the given data points.
+     *
+     * \param pts The points for which an interpolating spline will be computed.
+     * \param degree The degree of the interpolating spline.
+     * \param knot_parameters The knot parameters for the interpolation.
+     *
+     * \returns A spline interpolating the initially provided points.
+     **/
+    template <typename PointArrayType>
+    static SplineType Interpolate(const PointArrayType& pts, DenseIndex degree, const KnotVectorType& knot_parameters);
+
+    /**
+     * \brief Fits an interpolating spline to the given data points and
+     * derivatives.
+     * 
+     * \param points The points for which an interpolating spline will be computed.
+     * \param derivatives The desired derivatives of the interpolating spline at interpolation
+     *                    points.
+     * \param derivativeIndices An array indicating which point each derivative belongs to. This
+     *                          must be the same size as @a derivatives.
+     * \param degree The degree of the interpolating spline.
+     *
+     * \returns A spline interpolating @a points with @a derivatives at those points.
+     *
+     * \sa Les A. Piegl, Khairan Rajab, Volha Smarodzinana. 2008.
+     * Curve interpolation with directional constraints for engineering design. 
+     * Engineering with Computers
+     **/
+    template <typename PointArrayType, typename IndexArray>
+    static SplineType InterpolateWithDerivatives(const PointArrayType& points,
+                                                 const PointArrayType& derivatives,
+                                                 const IndexArray& derivativeIndices,
+                                                 const unsigned int degree);
+
+    /**
+     * \brief Fits an interpolating spline to the given data points and derivatives.
+     * 
+     * \param points The points for which an interpolating spline will be computed.
+     * \param derivatives The desired derivatives of the interpolating spline at interpolation points.
+     * \param derivativeIndices An array indicating which point each derivative belongs to. This
+     *                          must be the same size as @a derivatives.
+     * \param degree The degree of the interpolating spline.
+     * \param parameters The parameters corresponding to the interpolation points.
+     *
+     * \returns A spline interpolating @a points with @a derivatives at those points.
+     *
+     * \sa Les A. Piegl, Khairan Rajab, Volha Smarodzinana. 2008.
+     * Curve interpolation with directional constraints for engineering design. 
+     * Engineering with Computers
+     */
+    template <typename PointArrayType, typename IndexArray>
+    static SplineType InterpolateWithDerivatives(const PointArrayType& points,
+                                                 const PointArrayType& derivatives,
+                                                 const IndexArray& derivativeIndices,
+                                                 const unsigned int degree,
+                                                 const ParameterVectorType& parameters);
+  };
+
+  template <typename SplineType>
+  template <typename PointArrayType>
+  SplineType SplineFitting<SplineType>::Interpolate(const PointArrayType& pts, DenseIndex degree, const KnotVectorType& knot_parameters)
+  {
+    typedef typename SplineType::KnotVectorType::Scalar Scalar;      
+    typedef typename SplineType::ControlPointVectorType ControlPointVectorType;      
+
+    typedef Matrix<Scalar,Dynamic,Dynamic> MatrixType;
+
+    KnotVectorType knots;
+    KnotAveraging(knot_parameters, degree, knots);
+
+    DenseIndex n = pts.cols();
+    MatrixType A = MatrixType::Zero(n,n);
+    for (DenseIndex i=1; i<n-1; ++i)
+    {
+      const DenseIndex span = SplineType::Span(knot_parameters[i], degree, knots);
+
+      // The segment call should somehow be told the spline order at compile time.
+      A.row(i).segment(span-degree, degree+1) = SplineType::BasisFunctions(knot_parameters[i], degree, knots);
+    }
+    A(0,0) = 1.0;
+    A(n-1,n-1) = 1.0;
+
+    HouseholderQR<MatrixType> qr(A);
+
+    // Here, we are creating a temporary due to an Eigen issue.
+    ControlPointVectorType ctrls = qr.solve(MatrixType(pts.transpose())).transpose();
+
+    return SplineType(knots, ctrls);
+  }
+
+  template <typename SplineType>
+  template <typename PointArrayType>
+  SplineType SplineFitting<SplineType>::Interpolate(const PointArrayType& pts, DenseIndex degree)
+  {
+    KnotVectorType chord_lengths; // knot parameters
+    ChordLengths(pts, chord_lengths);
+    return Interpolate(pts, degree, chord_lengths);
+  }
+  
+  template <typename SplineType>
+  template <typename PointArrayType, typename IndexArray>
+  SplineType 
+  SplineFitting<SplineType>::InterpolateWithDerivatives(const PointArrayType& points,
+                                                        const PointArrayType& derivatives,
+                                                        const IndexArray& derivativeIndices,
+                                                        const unsigned int degree,
+                                                        const ParameterVectorType& parameters)
+  {
+    typedef typename SplineType::KnotVectorType::Scalar Scalar;      
+    typedef typename SplineType::ControlPointVectorType ControlPointVectorType;
+
+    typedef Matrix<Scalar, Dynamic, Dynamic> MatrixType;
+
+    const DenseIndex n = points.cols() + derivatives.cols();
+    
+    KnotVectorType knots;
+
+    KnotAveragingWithDerivatives(parameters, degree, derivativeIndices, knots);
+    
+    // fill matrix
+    MatrixType A = MatrixType::Zero(n, n);
+
+    // Use these dimensions for quicker populating, then transpose for solving.
+    MatrixType b(points.rows(), n);
+
+    DenseIndex startRow;
+    DenseIndex derivativeStart;
+
+    // End derivatives.
+    if (derivativeIndices[0] == 0)
+    {
+      A.template block<1, 2>(1, 0) << -1, 1;
+      
+      Scalar y = (knots(degree + 1) - knots(0)) / degree;
+      b.col(1) = y*derivatives.col(0);
+      
+      startRow = 2;
+      derivativeStart = 1;
+    }
+    else
+    {
+      startRow = 1;
+      derivativeStart = 0;
+    }
+    if (derivativeIndices[derivatives.cols() - 1] == points.cols() - 1)
+    {
+      A.template block<1, 2>(n - 2, n - 2) << -1, 1;
+
+      Scalar y = (knots(knots.size() - 1) - knots(knots.size() - (degree + 2))) / degree;
+      b.col(b.cols() - 2) = y*derivatives.col(derivatives.cols() - 1);
+    }
+    
+    DenseIndex row = startRow;
+    DenseIndex derivativeIndex = derivativeStart;
+    for (DenseIndex i = 1; i < parameters.size() - 1; ++i)
+    {
+      const DenseIndex span = SplineType::Span(parameters[i], degree, knots);
+
+      if (derivativeIndices[derivativeIndex] == i)
+      {
+        A.block(row, span - degree, 2, degree + 1)
+          = SplineType::BasisFunctionDerivatives(parameters[i], 1, degree, knots);
+
+        b.col(row++) = points.col(i);
+        b.col(row++) = derivatives.col(derivativeIndex++);
+      }
+      else
+      {
+        A.row(row++).segment(span - degree, degree + 1)
+          = SplineType::BasisFunctions(parameters[i], degree, knots);
+      }
+    }
+    b.col(0) = points.col(0);
+    b.col(b.cols() - 1) = points.col(points.cols() - 1);
+    A(0,0) = 1;
+    A(n - 1, n - 1) = 1;
+    
+    // Solve
+    FullPivLU<MatrixType> lu(A);
+    ControlPointVectorType controlPoints = lu.solve(MatrixType(b.transpose())).transpose();
+
+    SplineType spline(knots, controlPoints);
+    
+    return spline;
+  }
+  
+  template <typename SplineType>
+  template <typename PointArrayType, typename IndexArray>
+  SplineType
+  SplineFitting<SplineType>::InterpolateWithDerivatives(const PointArrayType& points,
+                                                        const PointArrayType& derivatives,
+                                                        const IndexArray& derivativeIndices,
+                                                        const unsigned int degree)
+  {
+    ParameterVectorType parameters;
+    ChordLengths(points, parameters);
+    return InterpolateWithDerivatives(points, derivatives, derivativeIndices, degree, parameters);
+  }
+}
+
+#endif // EIGEN_SPLINE_FITTING_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/FFT/ei_fftw_impl.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/FFT/ei_fftw_impl.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/FFT/ei_fftw_impl.h	(revision 3762)
@@ -0,0 +1,263 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra. 
+//
+// Copyright (C) 2009 Mark Borgerding mark a borgerding net
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+namespace Eigen { 
+
+namespace internal {
+
+  // FFTW uses non-const arguments
+  // so we must use ugly const_cast calls for all the args it uses
+  //
+  // This should be safe as long as 
+  // 1. we use FFTW_ESTIMATE for all our planning
+  //       see the FFTW docs section 4.3.2 "Planner Flags"
+  // 2. fftw_complex is compatible with std::complex
+  //    This assumes std::complex<T> layout is array of size 2 with real,imag
+  template <typename T> 
+  inline 
+  T * fftw_cast(const T* p)
+  { 
+      return const_cast<T*>( p); 
+  }
+
+  inline 
+  fftw_complex * fftw_cast( const std::complex<double> * p)
+  {
+      return const_cast<fftw_complex*>( reinterpret_cast<const fftw_complex*>(p) ); 
+  }
+
+  inline 
+  fftwf_complex * fftw_cast( const std::complex<float> * p)
+  { 
+      return const_cast<fftwf_complex*>( reinterpret_cast<const fftwf_complex*>(p) ); 
+  }
+
+  inline 
+  fftwl_complex * fftw_cast( const std::complex<long double> * p)
+  { 
+      return const_cast<fftwl_complex*>( reinterpret_cast<const fftwl_complex*>(p) ); 
+  }
+
+  template <typename T> 
+  struct fftw_plan {};
+
+  template <> 
+  struct fftw_plan<float>
+  {
+      typedef float scalar_type;
+      typedef fftwf_complex complex_type;
+      fftwf_plan m_plan;
+      fftw_plan() :m_plan(NULL) {}
+      ~fftw_plan() {if (m_plan) fftwf_destroy_plan(m_plan);}
+
+      inline
+      void fwd(complex_type * dst,complex_type * src,int nfft) {
+          if (m_plan==NULL) m_plan = fftwf_plan_dft_1d(nfft,src,dst, FFTW_FORWARD, FFTW_ESTIMATE|FFTW_PRESERVE_INPUT);
+          fftwf_execute_dft( m_plan, src,dst);
+      }
+      inline
+      void inv(complex_type * dst,complex_type * src,int nfft) {
+          if (m_plan==NULL) m_plan = fftwf_plan_dft_1d(nfft,src,dst, FFTW_BACKWARD , FFTW_ESTIMATE|FFTW_PRESERVE_INPUT);
+          fftwf_execute_dft( m_plan, src,dst);
+      }
+      inline
+      void fwd(complex_type * dst,scalar_type * src,int nfft) {
+          if (m_plan==NULL) m_plan = fftwf_plan_dft_r2c_1d(nfft,src,dst,FFTW_ESTIMATE|FFTW_PRESERVE_INPUT);
+          fftwf_execute_dft_r2c( m_plan,src,dst);
+      }
+      inline
+      void inv(scalar_type * dst,complex_type * src,int nfft) {
+          if (m_plan==NULL)
+              m_plan = fftwf_plan_dft_c2r_1d(nfft,src,dst,FFTW_ESTIMATE|FFTW_PRESERVE_INPUT);
+          fftwf_execute_dft_c2r( m_plan, src,dst);
+      }
+
+      inline 
+      void fwd2( complex_type * dst,complex_type * src,int n0,int n1) {
+          if (m_plan==NULL) m_plan = fftwf_plan_dft_2d(n0,n1,src,dst,FFTW_FORWARD,FFTW_ESTIMATE|FFTW_PRESERVE_INPUT);
+          fftwf_execute_dft( m_plan, src,dst);
+      }
+      inline 
+      void inv2( complex_type * dst,complex_type * src,int n0,int n1) {
+          if (m_plan==NULL) m_plan = fftwf_plan_dft_2d(n0,n1,src,dst,FFTW_BACKWARD,FFTW_ESTIMATE|FFTW_PRESERVE_INPUT);
+          fftwf_execute_dft( m_plan, src,dst);
+      }
+
+  };
+  template <> 
+  struct fftw_plan<double>
+  {
+      typedef double scalar_type;
+      typedef fftw_complex complex_type;
+      ::fftw_plan m_plan;
+      fftw_plan() :m_plan(NULL) {}
+      ~fftw_plan() {if (m_plan) fftw_destroy_plan(m_plan);}
+
+      inline
+      void fwd(complex_type * dst,complex_type * src,int nfft) {
+          if (m_plan==NULL) m_plan = fftw_plan_dft_1d(nfft,src,dst, FFTW_FORWARD, FFTW_ESTIMATE|FFTW_PRESERVE_INPUT);
+          fftw_execute_dft( m_plan, src,dst);
+      }
+      inline
+      void inv(complex_type * dst,complex_type * src,int nfft) {
+          if (m_plan==NULL) m_plan = fftw_plan_dft_1d(nfft,src,dst, FFTW_BACKWARD , FFTW_ESTIMATE|FFTW_PRESERVE_INPUT);
+          fftw_execute_dft( m_plan, src,dst);
+      }
+      inline
+      void fwd(complex_type * dst,scalar_type * src,int nfft) {
+          if (m_plan==NULL) m_plan = fftw_plan_dft_r2c_1d(nfft,src,dst,FFTW_ESTIMATE|FFTW_PRESERVE_INPUT);
+          fftw_execute_dft_r2c( m_plan,src,dst);
+      }
+      inline
+      void inv(scalar_type * dst,complex_type * src,int nfft) {
+          if (m_plan==NULL)
+              m_plan = fftw_plan_dft_c2r_1d(nfft,src,dst,FFTW_ESTIMATE|FFTW_PRESERVE_INPUT);
+          fftw_execute_dft_c2r( m_plan, src,dst);
+      }
+      inline 
+      void fwd2( complex_type * dst,complex_type * src,int n0,int n1) {
+          if (m_plan==NULL) m_plan = fftw_plan_dft_2d(n0,n1,src,dst,FFTW_FORWARD,FFTW_ESTIMATE|FFTW_PRESERVE_INPUT);
+          fftw_execute_dft( m_plan, src,dst);
+      }
+      inline 
+      void inv2( complex_type * dst,complex_type * src,int n0,int n1) {
+          if (m_plan==NULL) m_plan = fftw_plan_dft_2d(n0,n1,src,dst,FFTW_BACKWARD,FFTW_ESTIMATE|FFTW_PRESERVE_INPUT);
+          fftw_execute_dft( m_plan, src,dst);
+      }
+  };
+  template <> 
+  struct fftw_plan<long double>
+  {
+      typedef long double scalar_type;
+      typedef fftwl_complex complex_type;
+      fftwl_plan m_plan;
+      fftw_plan() :m_plan(NULL) {}
+      ~fftw_plan() {if (m_plan) fftwl_destroy_plan(m_plan);}
+
+      inline
+      void fwd(complex_type * dst,complex_type * src,int nfft) {
+          if (m_plan==NULL) m_plan = fftwl_plan_dft_1d(nfft,src,dst, FFTW_FORWARD, FFTW_ESTIMATE|FFTW_PRESERVE_INPUT);
+          fftwl_execute_dft( m_plan, src,dst);
+      }
+      inline
+      void inv(complex_type * dst,complex_type * src,int nfft) {
+          if (m_plan==NULL) m_plan = fftwl_plan_dft_1d(nfft,src,dst, FFTW_BACKWARD , FFTW_ESTIMATE|FFTW_PRESERVE_INPUT);
+          fftwl_execute_dft( m_plan, src,dst);
+      }
+      inline
+      void fwd(complex_type * dst,scalar_type * src,int nfft) {
+          if (m_plan==NULL) m_plan = fftwl_plan_dft_r2c_1d(nfft,src,dst,FFTW_ESTIMATE|FFTW_PRESERVE_INPUT);
+          fftwl_execute_dft_r2c( m_plan,src,dst);
+      }
+      inline
+      void inv(scalar_type * dst,complex_type * src,int nfft) {
+          if (m_plan==NULL)
+              m_plan = fftwl_plan_dft_c2r_1d(nfft,src,dst,FFTW_ESTIMATE|FFTW_PRESERVE_INPUT);
+          fftwl_execute_dft_c2r( m_plan, src,dst);
+      }
+      inline 
+      void fwd2( complex_type * dst,complex_type * src,int n0,int n1) {
+          if (m_plan==NULL) m_plan = fftwl_plan_dft_2d(n0,n1,src,dst,FFTW_FORWARD,FFTW_ESTIMATE|FFTW_PRESERVE_INPUT);
+          fftwl_execute_dft( m_plan, src,dst);
+      }
+      inline 
+      void inv2( complex_type * dst,complex_type * src,int n0,int n1) {
+          if (m_plan==NULL) m_plan = fftwl_plan_dft_2d(n0,n1,src,dst,FFTW_BACKWARD,FFTW_ESTIMATE|FFTW_PRESERVE_INPUT);
+          fftwl_execute_dft( m_plan, src,dst);
+      }
+  };
+
+  template <typename _Scalar>
+  struct fftw_impl
+  {
+      typedef _Scalar Scalar;
+      typedef std::complex<Scalar> Complex;
+
+      inline
+      void clear() 
+      {
+        m_plans.clear();
+      }
+
+      // complex-to-complex forward FFT
+      inline
+      void fwd( Complex * dst,const Complex *src,int nfft)
+      {
+        get_plan(nfft,false,dst,src).fwd(fftw_cast(dst), fftw_cast(src),nfft );
+      }
+
+      // real-to-complex forward FFT
+      inline
+      void fwd( Complex * dst,const Scalar * src,int nfft) 
+      {
+          get_plan(nfft,false,dst,src).fwd(fftw_cast(dst), fftw_cast(src) ,nfft);
+      }
+
+      // 2-d complex-to-complex
+      inline
+      void fwd2(Complex * dst, const Complex * src, int n0,int n1)
+      {
+          get_plan(n0,n1,false,dst,src).fwd2(fftw_cast(dst), fftw_cast(src) ,n0,n1);
+      }
+
+      // inverse complex-to-complex
+      inline
+      void inv(Complex * dst,const Complex  *src,int nfft)
+      {
+        get_plan(nfft,true,dst,src).inv(fftw_cast(dst), fftw_cast(src),nfft );
+      }
+
+      // half-complex to scalar
+      inline
+      void inv( Scalar * dst,const Complex * src,int nfft) 
+      {
+        get_plan(nfft,true,dst,src).inv(fftw_cast(dst), fftw_cast(src),nfft );
+      }
+
+      // 2-d complex-to-complex
+      inline
+      void inv2(Complex * dst, const Complex * src, int n0,int n1)
+      {
+        get_plan(n0,n1,true,dst,src).inv2(fftw_cast(dst), fftw_cast(src) ,n0,n1);
+      }
+
+
+  protected:
+      typedef fftw_plan<Scalar> PlanData;
+
+      typedef Eigen::numext::int64_t int64_t;
+
+      typedef std::map<int64_t,PlanData> PlanMap;
+
+      PlanMap m_plans;
+
+      inline
+      PlanData & get_plan(int nfft,bool inverse,void * dst,const void * src)
+      {
+          bool inplace = (dst==src);
+          bool aligned = ( (reinterpret_cast<size_t>(src)&15) | (reinterpret_cast<size_t>(dst)&15) ) == 0;
+          int64_t key = ( (nfft<<3 ) | (inverse<<2) | (inplace<<1) | aligned ) << 1;
+          return m_plans[key];
+      }
+
+      inline
+      PlanData & get_plan(int n0,int n1,bool inverse,void * dst,const void * src)
+      {
+          bool inplace = (dst==src);
+          bool aligned = ( (reinterpret_cast<size_t>(src)&15) | (reinterpret_cast<size_t>(dst)&15) ) == 0;
+          int64_t key = ( ( (((int64_t)n0) << 30)|(n1<<3 ) | (inverse<<2) | (inplace<<1) | aligned ) << 1 ) + 1;
+          return m_plans[key];
+      }
+  };
+
+} // end namespace internal
+
+} // end namespace Eigen
+
+/* vim: set filetype=cpp et sw=2 ts=2 ai: */
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/FFT/ei_kissfft_impl.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/FFT/ei_kissfft_impl.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/FFT/ei_kissfft_impl.h	(revision 3762)
@@ -0,0 +1,420 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2009 Mark Borgerding mark a borgerding net
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+namespace Eigen { 
+
+namespace internal {
+
+  // This FFT implementation was derived from kissfft http:sourceforge.net/projects/kissfft
+  // Copyright 2003-2009 Mark Borgerding
+
+template <typename _Scalar>
+struct kiss_cpx_fft
+{
+  typedef _Scalar Scalar;
+  typedef std::complex<Scalar> Complex;
+  std::vector<Complex> m_twiddles;
+  std::vector<int> m_stageRadix;
+  std::vector<int> m_stageRemainder;
+  std::vector<Complex> m_scratchBuf;
+  bool m_inverse;
+
+  inline
+    void make_twiddles(int nfft,bool inverse)
+    {
+      using std::acos;
+      m_inverse = inverse;
+      m_twiddles.resize(nfft);
+      Scalar phinc =  (inverse?2:-2)* acos( (Scalar) -1)  / nfft;
+      for (int i=0;i<nfft;++i)
+        m_twiddles[i] = exp( Complex(0,i*phinc) );
+    }
+
+  void factorize(int nfft)
+  {
+    //start factoring out 4's, then 2's, then 3,5,7,9,...
+    int n= nfft;
+    int p=4;
+    do {
+      while (n % p) {
+        switch (p) {
+          case 4: p = 2; break;
+          case 2: p = 3; break;
+          default: p += 2; break;
+        }
+        if (p*p>n)
+          p=n;// impossible to have a factor > sqrt(n)
+      }
+      n /= p;
+      m_stageRadix.push_back(p);
+      m_stageRemainder.push_back(n);
+      if ( p > 5 )
+        m_scratchBuf.resize(p); // scratchbuf will be needed in bfly_generic
+    }while(n>1);
+  }
+
+  template <typename _Src>
+    inline
+    void work( int stage,Complex * xout, const _Src * xin, size_t fstride,size_t in_stride)
+    {
+      int p = m_stageRadix[stage];
+      int m = m_stageRemainder[stage];
+      Complex * Fout_beg = xout;
+      Complex * Fout_end = xout + p*m;
+
+      if (m>1) {
+        do{
+          // recursive call:
+          // DFT of size m*p performed by doing
+          // p instances of smaller DFTs of size m, 
+          // each one takes a decimated version of the input
+          work(stage+1, xout , xin, fstride*p,in_stride);
+          xin += fstride*in_stride;
+        }while( (xout += m) != Fout_end );
+      }else{
+        do{
+          *xout = *xin;
+          xin += fstride*in_stride;
+        }while(++xout != Fout_end );
+      }
+      xout=Fout_beg;
+
+      // recombine the p smaller DFTs 
+      switch (p) {
+        case 2: bfly2(xout,fstride,m); break;
+        case 3: bfly3(xout,fstride,m); break;
+        case 4: bfly4(xout,fstride,m); break;
+        case 5: bfly5(xout,fstride,m); break;
+        default: bfly_generic(xout,fstride,m,p); break;
+      }
+    }
+
+  inline
+    void bfly2( Complex * Fout, const size_t fstride, int m)
+    {
+      for (int k=0;k<m;++k) {
+        Complex t = Fout[m+k] * m_twiddles[k*fstride];
+        Fout[m+k] = Fout[k] - t;
+        Fout[k] += t;
+      }
+    }
+
+  inline
+    void bfly4( Complex * Fout, const size_t fstride, const size_t m)
+    {
+      Complex scratch[6];
+      int negative_if_inverse = m_inverse * -2 +1;
+      for (size_t k=0;k<m;++k) {
+        scratch[0] = Fout[k+m] * m_twiddles[k*fstride];
+        scratch[1] = Fout[k+2*m] * m_twiddles[k*fstride*2];
+        scratch[2] = Fout[k+3*m] * m_twiddles[k*fstride*3];
+        scratch[5] = Fout[k] - scratch[1];
+
+        Fout[k] += scratch[1];
+        scratch[3] = scratch[0] + scratch[2];
+        scratch[4] = scratch[0] - scratch[2];
+        scratch[4] = Complex( scratch[4].imag()*negative_if_inverse , -scratch[4].real()* negative_if_inverse );
+
+        Fout[k+2*m]  = Fout[k] - scratch[3];
+        Fout[k] += scratch[3];
+        Fout[k+m] = scratch[5] + scratch[4];
+        Fout[k+3*m] = scratch[5] - scratch[4];
+      }
+    }
+
+  inline
+    void bfly3( Complex * Fout, const size_t fstride, const size_t m)
+    {
+      size_t k=m;
+      const size_t m2 = 2*m;
+      Complex *tw1,*tw2;
+      Complex scratch[5];
+      Complex epi3;
+      epi3 = m_twiddles[fstride*m];
+
+      tw1=tw2=&m_twiddles[0];
+
+      do{
+        scratch[1]=Fout[m] * *tw1;
+        scratch[2]=Fout[m2] * *tw2;
+
+        scratch[3]=scratch[1]+scratch[2];
+        scratch[0]=scratch[1]-scratch[2];
+        tw1 += fstride;
+        tw2 += fstride*2;
+        Fout[m] = Complex( Fout->real() - Scalar(.5)*scratch[3].real() , Fout->imag() - Scalar(.5)*scratch[3].imag() );
+        scratch[0] *= epi3.imag();
+        *Fout += scratch[3];
+        Fout[m2] = Complex(  Fout[m].real() + scratch[0].imag() , Fout[m].imag() - scratch[0].real() );
+        Fout[m] += Complex( -scratch[0].imag(),scratch[0].real() );
+        ++Fout;
+      }while(--k);
+    }
+
+  inline
+    void bfly5( Complex * Fout, const size_t fstride, const size_t m)
+    {
+      Complex *Fout0,*Fout1,*Fout2,*Fout3,*Fout4;
+      size_t u;
+      Complex scratch[13];
+      Complex * twiddles = &m_twiddles[0];
+      Complex *tw;
+      Complex ya,yb;
+      ya = twiddles[fstride*m];
+      yb = twiddles[fstride*2*m];
+
+      Fout0=Fout;
+      Fout1=Fout0+m;
+      Fout2=Fout0+2*m;
+      Fout3=Fout0+3*m;
+      Fout4=Fout0+4*m;
+
+      tw=twiddles;
+      for ( u=0; u<m; ++u ) {
+        scratch[0] = *Fout0;
+
+        scratch[1]  = *Fout1 * tw[u*fstride];
+        scratch[2]  = *Fout2 * tw[2*u*fstride];
+        scratch[3]  = *Fout3 * tw[3*u*fstride];
+        scratch[4]  = *Fout4 * tw[4*u*fstride];
+
+        scratch[7] = scratch[1] + scratch[4];
+        scratch[10] = scratch[1] - scratch[4];
+        scratch[8] = scratch[2] + scratch[3];
+        scratch[9] = scratch[2] - scratch[3];
+
+        *Fout0 +=  scratch[7];
+        *Fout0 +=  scratch[8];
+
+        scratch[5] = scratch[0] + Complex(
+            (scratch[7].real()*ya.real() ) + (scratch[8].real() *yb.real() ),
+            (scratch[7].imag()*ya.real()) + (scratch[8].imag()*yb.real())
+            );
+
+        scratch[6] = Complex(
+            (scratch[10].imag()*ya.imag()) + (scratch[9].imag()*yb.imag()),
+            -(scratch[10].real()*ya.imag()) - (scratch[9].real()*yb.imag())
+            );
+
+        *Fout1 = scratch[5] - scratch[6];
+        *Fout4 = scratch[5] + scratch[6];
+
+        scratch[11] = scratch[0] +
+          Complex(
+              (scratch[7].real()*yb.real()) + (scratch[8].real()*ya.real()),
+              (scratch[7].imag()*yb.real()) + (scratch[8].imag()*ya.real())
+              );
+
+        scratch[12] = Complex(
+            -(scratch[10].imag()*yb.imag()) + (scratch[9].imag()*ya.imag()),
+            (scratch[10].real()*yb.imag()) - (scratch[9].real()*ya.imag())
+            );
+
+        *Fout2=scratch[11]+scratch[12];
+        *Fout3=scratch[11]-scratch[12];
+
+        ++Fout0;++Fout1;++Fout2;++Fout3;++Fout4;
+      }
+    }
+
+  /* perform the butterfly for one stage of a mixed radix FFT */
+  inline
+    void bfly_generic(
+        Complex * Fout,
+        const size_t fstride,
+        int m,
+        int p
+        )
+    {
+      int u,k,q1,q;
+      Complex * twiddles = &m_twiddles[0];
+      Complex t;
+      int Norig = static_cast<int>(m_twiddles.size());
+      Complex * scratchbuf = &m_scratchBuf[0];
+
+      for ( u=0; u<m; ++u ) {
+        k=u;
+        for ( q1=0 ; q1<p ; ++q1 ) {
+          scratchbuf[q1] = Fout[ k  ];
+          k += m;
+        }
+
+        k=u;
+        for ( q1=0 ; q1<p ; ++q1 ) {
+          int twidx=0;
+          Fout[ k ] = scratchbuf[0];
+          for (q=1;q<p;++q ) {
+            twidx += static_cast<int>(fstride) * k;
+            if (twidx>=Norig) twidx-=Norig;
+            t=scratchbuf[q] * twiddles[twidx];
+            Fout[ k ] += t;
+          }
+          k += m;
+        }
+      }
+    }
+};
+
+template <typename _Scalar>
+struct kissfft_impl
+{
+  typedef _Scalar Scalar;
+  typedef std::complex<Scalar> Complex;
+
+  void clear() 
+  {
+    m_plans.clear();
+    m_realTwiddles.clear();
+  }
+
+  inline
+    void fwd( Complex * dst,const Complex *src,int nfft)
+    {
+      get_plan(nfft,false).work(0, dst, src, 1,1);
+    }
+
+  inline
+    void fwd2( Complex * dst,const Complex *src,int n0,int n1)
+    {
+        EIGEN_UNUSED_VARIABLE(dst);
+        EIGEN_UNUSED_VARIABLE(src);
+        EIGEN_UNUSED_VARIABLE(n0);
+        EIGEN_UNUSED_VARIABLE(n1);
+    }
+
+  inline
+    void inv2( Complex * dst,const Complex *src,int n0,int n1)
+    {
+        EIGEN_UNUSED_VARIABLE(dst);
+        EIGEN_UNUSED_VARIABLE(src);
+        EIGEN_UNUSED_VARIABLE(n0);
+        EIGEN_UNUSED_VARIABLE(n1);
+    }
+
+  // real-to-complex forward FFT
+  // perform two FFTs of src even and src odd
+  // then twiddle to recombine them into the half-spectrum format
+  // then fill in the conjugate symmetric half
+  inline
+    void fwd( Complex * dst,const Scalar * src,int nfft) 
+    {
+      if ( nfft&3  ) {
+        // use generic mode for odd
+        m_tmpBuf1.resize(nfft);
+        get_plan(nfft,false).work(0, &m_tmpBuf1[0], src, 1,1);
+        std::copy(m_tmpBuf1.begin(),m_tmpBuf1.begin()+(nfft>>1)+1,dst );
+      }else{
+        int ncfft = nfft>>1;
+        int ncfft2 = nfft>>2;
+        Complex * rtw = real_twiddles(ncfft2);
+
+        // use optimized mode for even real
+        fwd( dst, reinterpret_cast<const Complex*> (src), ncfft);
+        Complex dc = dst[0].real() +  dst[0].imag();
+        Complex nyquist = dst[0].real() -  dst[0].imag();
+        int k;
+        for ( k=1;k <= ncfft2 ; ++k ) {
+          Complex fpk = dst[k];
+          Complex fpnk = conj(dst[ncfft-k]);
+          Complex f1k = fpk + fpnk;
+          Complex f2k = fpk - fpnk;
+          Complex tw= f2k * rtw[k-1];
+          dst[k] =  (f1k + tw) * Scalar(.5);
+          dst[ncfft-k] =  conj(f1k -tw)*Scalar(.5);
+        }
+        dst[0] = dc;
+        dst[ncfft] = nyquist;
+      }
+    }
+
+  // inverse complex-to-complex
+  inline
+    void inv(Complex * dst,const Complex  *src,int nfft)
+    {
+      get_plan(nfft,true).work(0, dst, src, 1,1);
+    }
+
+  // half-complex to scalar
+  inline
+    void inv( Scalar * dst,const Complex * src,int nfft) 
+    {
+      if (nfft&3) {
+        m_tmpBuf1.resize(nfft);
+        m_tmpBuf2.resize(nfft);
+        std::copy(src,src+(nfft>>1)+1,m_tmpBuf1.begin() );
+        for (int k=1;k<(nfft>>1)+1;++k)
+          m_tmpBuf1[nfft-k] = conj(m_tmpBuf1[k]);
+        inv(&m_tmpBuf2[0],&m_tmpBuf1[0],nfft);
+        for (int k=0;k<nfft;++k)
+          dst[k] = m_tmpBuf2[k].real();
+      }else{
+        // optimized version for multiple of 4
+        int ncfft = nfft>>1;
+        int ncfft2 = nfft>>2;
+        Complex * rtw = real_twiddles(ncfft2);
+        m_tmpBuf1.resize(ncfft);
+        m_tmpBuf1[0] = Complex( src[0].real() + src[ncfft].real(), src[0].real() - src[ncfft].real() );
+        for (int k = 1; k <= ncfft / 2; ++k) {
+          Complex fk = src[k];
+          Complex fnkc = conj(src[ncfft-k]);
+          Complex fek = fk + fnkc;
+          Complex tmp = fk - fnkc;
+          Complex fok = tmp * conj(rtw[k-1]);
+          m_tmpBuf1[k] = fek + fok;
+          m_tmpBuf1[ncfft-k] = conj(fek - fok);
+        }
+        get_plan(ncfft,true).work(0, reinterpret_cast<Complex*>(dst), &m_tmpBuf1[0], 1,1);
+      }
+    }
+
+  protected:
+  typedef kiss_cpx_fft<Scalar> PlanData;
+  typedef std::map<int,PlanData> PlanMap;
+
+  PlanMap m_plans;
+  std::map<int, std::vector<Complex> > m_realTwiddles;
+  std::vector<Complex> m_tmpBuf1;
+  std::vector<Complex> m_tmpBuf2;
+
+  inline
+    int PlanKey(int nfft, bool isinverse) const { return (nfft<<1) | int(isinverse); }
+
+  inline
+    PlanData & get_plan(int nfft, bool inverse)
+    {
+      // TODO look for PlanKey(nfft, ! inverse) and conjugate the twiddles
+      PlanData & pd = m_plans[ PlanKey(nfft,inverse) ];
+      if ( pd.m_twiddles.size() == 0 ) {
+        pd.make_twiddles(nfft,inverse);
+        pd.factorize(nfft);
+      }
+      return pd;
+    }
+
+  inline
+    Complex * real_twiddles(int ncfft2)
+    {
+      using std::acos;
+      std::vector<Complex> & twidref = m_realTwiddles[ncfft2];// creates new if not there
+      if ( (int)twidref.size() != ncfft2 ) {
+        twidref.resize(ncfft2);
+        int ncfft= ncfft2<<1;
+        Scalar pi =  acos( Scalar(-1) );
+        for (int k=1;k<=ncfft2;++k) 
+          twidref[k-1] = exp( Complex(0,-pi * (Scalar(k) / ncfft + Scalar(.5)) ) );
+      }
+      return &twidref[0];
+    }
+};
+
+} // end namespace internal
+
+} // end namespace Eigen
+
+/* vim: set filetype=cpp et sw=2 ts=2 ai: */
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/AutoDiff/AutoDiffVector.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/AutoDiff/AutoDiffVector.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/AutoDiff/AutoDiffVector.h	(revision 3762)
@@ -0,0 +1,220 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2009 Gael Guennebaud <gael.guennebaud@inria.fr>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_AUTODIFF_VECTOR_H
+#define EIGEN_AUTODIFF_VECTOR_H
+
+namespace Eigen {
+
+/* \class AutoDiffScalar
+  * \brief A scalar type replacement with automatic differentation capability
+  *
+  * \param DerType the vector type used to store/represent the derivatives (e.g. Vector3f)
+  *
+  * This class represents a scalar value while tracking its respective derivatives.
+  *
+  * It supports the following list of global math function:
+  *  - std::abs, std::sqrt, std::pow, std::exp, std::log, std::sin, std::cos,
+  *  - internal::abs, internal::sqrt, numext::pow, internal::exp, internal::log, internal::sin, internal::cos,
+  *  - internal::conj, internal::real, internal::imag, numext::abs2.
+  *
+  * AutoDiffScalar can be used as the scalar type of an Eigen::Matrix object. However,
+  * in that case, the expression template mechanism only occurs at the top Matrix level,
+  * while derivatives are computed right away.
+  *
+  */
+template<typename ValueType, typename JacobianType>
+class AutoDiffVector
+{
+  public:
+    //typedef typename internal::traits<ValueType>::Scalar Scalar;
+    typedef typename internal::traits<ValueType>::Scalar BaseScalar;
+    typedef AutoDiffScalar<Matrix<BaseScalar,JacobianType::RowsAtCompileTime,1> > ActiveScalar;
+    typedef ActiveScalar Scalar;
+    typedef AutoDiffScalar<typename JacobianType::ColXpr> CoeffType;
+    typedef typename JacobianType::Index Index;
+
+    inline AutoDiffVector() {}
+
+    inline AutoDiffVector(const ValueType& values)
+      : m_values(values)
+    {
+      m_jacobian.setZero();
+    }
+
+
+    CoeffType operator[] (Index i) { return CoeffType(m_values[i], m_jacobian.col(i)); }
+    const CoeffType operator[] (Index i) const { return CoeffType(m_values[i], m_jacobian.col(i)); }
+
+    CoeffType operator() (Index i) { return CoeffType(m_values[i], m_jacobian.col(i)); }
+    const CoeffType operator() (Index i) const { return CoeffType(m_values[i], m_jacobian.col(i)); }
+
+    CoeffType coeffRef(Index i) { return CoeffType(m_values[i], m_jacobian.col(i)); }
+    const CoeffType coeffRef(Index i) const { return CoeffType(m_values[i], m_jacobian.col(i)); }
+
+    Index size() const { return m_values.size(); }
+
+    // FIXME here we could return an expression of the sum
+    Scalar sum() const { /*std::cerr << "sum \n\n";*/ /*std::cerr << m_jacobian.rowwise().sum() << "\n\n";*/ return Scalar(m_values.sum(), m_jacobian.rowwise().sum()); }
+
+
+    inline AutoDiffVector(const ValueType& values, const JacobianType& jac)
+      : m_values(values), m_jacobian(jac)
+    {}
+
+    template<typename OtherValueType, typename OtherJacobianType>
+    inline AutoDiffVector(const AutoDiffVector<OtherValueType, OtherJacobianType>& other)
+      : m_values(other.values()), m_jacobian(other.jacobian())
+    {}
+
+    inline AutoDiffVector(const AutoDiffVector& other)
+      : m_values(other.values()), m_jacobian(other.jacobian())
+    {}
+
+    template<typename OtherValueType, typename OtherJacobianType>
+    inline AutoDiffVector& operator=(const AutoDiffVector<OtherValueType, OtherJacobianType>& other)
+    {
+      m_values = other.values();
+      m_jacobian = other.jacobian();
+      return *this;
+    }
+
+    inline AutoDiffVector& operator=(const AutoDiffVector& other)
+    {
+      m_values = other.values();
+      m_jacobian = other.jacobian();
+      return *this;
+    }
+
+    inline const ValueType& values() const { return m_values; }
+    inline ValueType& values() { return m_values; }
+
+    inline const JacobianType& jacobian() const { return m_jacobian; }
+    inline JacobianType& jacobian() { return m_jacobian; }
+
+    template<typename OtherValueType,typename OtherJacobianType>
+    inline const AutoDiffVector<
+      typename MakeCwiseBinaryOp<internal::scalar_sum_op<BaseScalar>,ValueType,OtherValueType>::Type,
+      typename MakeCwiseBinaryOp<internal::scalar_sum_op<BaseScalar>,JacobianType,OtherJacobianType>::Type >
+    operator+(const AutoDiffVector<OtherValueType,OtherJacobianType>& other) const
+    {
+      return AutoDiffVector<
+      typename MakeCwiseBinaryOp<internal::scalar_sum_op<BaseScalar>,ValueType,OtherValueType>::Type,
+      typename MakeCwiseBinaryOp<internal::scalar_sum_op<BaseScalar>,JacobianType,OtherJacobianType>::Type >(
+        m_values + other.values(),
+        m_jacobian + other.jacobian());
+    }
+
+    template<typename OtherValueType, typename OtherJacobianType>
+    inline AutoDiffVector&
+    operator+=(const AutoDiffVector<OtherValueType,OtherJacobianType>& other)
+    {
+      m_values += other.values();
+      m_jacobian += other.jacobian();
+      return *this;
+    }
+
+    template<typename OtherValueType,typename OtherJacobianType>
+    inline const AutoDiffVector<
+      typename MakeCwiseBinaryOp<internal::scalar_difference_op<Scalar>,ValueType,OtherValueType>::Type,
+      typename MakeCwiseBinaryOp<internal::scalar_difference_op<Scalar>,JacobianType,OtherJacobianType>::Type >
+    operator-(const AutoDiffVector<OtherValueType,OtherJacobianType>& other) const
+    {
+      return AutoDiffVector<
+        typename MakeCwiseBinaryOp<internal::scalar_difference_op<Scalar>,ValueType,OtherValueType>::Type,
+        typename MakeCwiseBinaryOp<internal::scalar_difference_op<Scalar>,JacobianType,OtherJacobianType>::Type >(
+          m_values - other.values(),
+          m_jacobian - other.jacobian());
+    }
+
+    template<typename OtherValueType, typename OtherJacobianType>
+    inline AutoDiffVector&
+    operator-=(const AutoDiffVector<OtherValueType,OtherJacobianType>& other)
+    {
+      m_values -= other.values();
+      m_jacobian -= other.jacobian();
+      return *this;
+    }
+
+    inline const AutoDiffVector<
+      typename MakeCwiseUnaryOp<internal::scalar_opposite_op<Scalar>, ValueType>::Type,
+      typename MakeCwiseUnaryOp<internal::scalar_opposite_op<Scalar>, JacobianType>::Type >
+    operator-() const
+    {
+      return AutoDiffVector<
+        typename MakeCwiseUnaryOp<internal::scalar_opposite_op<Scalar>, ValueType>::Type,
+        typename MakeCwiseUnaryOp<internal::scalar_opposite_op<Scalar>, JacobianType>::Type >(
+          -m_values,
+          -m_jacobian);
+    }
+
+    inline const AutoDiffVector<
+      typename MakeCwiseUnaryOp<internal::scalar_multiple_op<Scalar>, ValueType>::Type,
+      typename MakeCwiseUnaryOp<internal::scalar_multiple_op<Scalar>, JacobianType>::Type>
+    operator*(const BaseScalar& other) const
+    {
+      return AutoDiffVector<
+        typename MakeCwiseUnaryOp<internal::scalar_multiple_op<Scalar>, ValueType>::Type,
+        typename MakeCwiseUnaryOp<internal::scalar_multiple_op<Scalar>, JacobianType>::Type >(
+          m_values * other,
+          m_jacobian * other);
+    }
+
+    friend inline const AutoDiffVector<
+      typename MakeCwiseUnaryOp<internal::scalar_multiple_op<Scalar>, ValueType>::Type,
+      typename MakeCwiseUnaryOp<internal::scalar_multiple_op<Scalar>, JacobianType>::Type >
+    operator*(const Scalar& other, const AutoDiffVector& v)
+    {
+      return AutoDiffVector<
+        typename MakeCwiseUnaryOp<internal::scalar_multiple_op<Scalar>, ValueType>::Type,
+        typename MakeCwiseUnaryOp<internal::scalar_multiple_op<Scalar>, JacobianType>::Type >(
+          v.values() * other,
+          v.jacobian() * other);
+    }
+
+//     template<typename OtherValueType,typename OtherJacobianType>
+//     inline const AutoDiffVector<
+//       CwiseBinaryOp<internal::scalar_multiple_op<Scalar>, ValueType, OtherValueType>
+//       CwiseBinaryOp<internal::scalar_sum_op<Scalar>,
+//         CwiseUnaryOp<internal::scalar_multiple_op<Scalar>, JacobianType>,
+//         CwiseUnaryOp<internal::scalar_multiple_op<Scalar>, OtherJacobianType> > >
+//     operator*(const AutoDiffVector<OtherValueType,OtherJacobianType>& other) const
+//     {
+//       return AutoDiffVector<
+//         CwiseBinaryOp<internal::scalar_multiple_op<Scalar>, ValueType, OtherValueType>
+//         CwiseBinaryOp<internal::scalar_sum_op<Scalar>,
+//           CwiseUnaryOp<internal::scalar_multiple_op<Scalar>, JacobianType>,
+//           CwiseUnaryOp<internal::scalar_multiple_op<Scalar>, OtherJacobianType> > >(
+//             m_values.cwise() * other.values(),
+//             (m_jacobian * other.values()) + (m_values * other.jacobian()));
+//     }
+
+    inline AutoDiffVector& operator*=(const Scalar& other)
+    {
+      m_values *= other;
+      m_jacobian *= other;
+      return *this;
+    }
+
+    template<typename OtherValueType,typename OtherJacobianType>
+    inline AutoDiffVector& operator*=(const AutoDiffVector<OtherValueType,OtherJacobianType>& other)
+    {
+      *this = *this * other;
+      return *this;
+    }
+
+  protected:
+    ValueType m_values;
+    JacobianType m_jacobian;
+
+};
+
+}
+
+#endif // EIGEN_AUTODIFF_VECTOR_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/AutoDiff/AutoDiffScalar.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/AutoDiff/AutoDiffScalar.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/AutoDiff/AutoDiffScalar.h	(revision 3762)
@@ -0,0 +1,720 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2009 Gael Guennebaud <gael.guennebaud@inria.fr>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_AUTODIFF_SCALAR_H
+#define EIGEN_AUTODIFF_SCALAR_H
+
+namespace Eigen {
+
+namespace internal {
+
+template<typename A, typename B>
+struct make_coherent_impl {
+  static void run(A&, B&) {}
+};
+
+// resize a to match b is a.size()==0, and conversely.
+template<typename A, typename B>
+void make_coherent(const A& a, const B&b)
+{
+  make_coherent_impl<A,B>::run(a.const_cast_derived(), b.const_cast_derived());
+}
+
+template<typename _DerType, bool Enable> struct auto_diff_special_op;
+
+} // end namespace internal
+
+template<typename _DerType> class AutoDiffScalar;
+
+template<typename NewDerType>
+inline AutoDiffScalar<NewDerType> MakeAutoDiffScalar(const typename NewDerType::Scalar& value, const NewDerType &der) {
+  return AutoDiffScalar<NewDerType>(value,der);
+}
+
+/** \class AutoDiffScalar
+  * \brief A scalar type replacement with automatic differentation capability
+  *
+  * \param _DerType the vector type used to store/represent the derivatives. The base scalar type
+  *                 as well as the number of derivatives to compute are determined from this type.
+  *                 Typical choices include, e.g., \c Vector4f for 4 derivatives, or \c VectorXf
+  *                 if the number of derivatives is not known at compile time, and/or, the number
+  *                 of derivatives is large.
+  *                 Note that _DerType can also be a reference (e.g., \c VectorXf&) to wrap a
+  *                 existing vector into an AutoDiffScalar.
+  *                 Finally, _DerType can also be any Eigen compatible expression.
+  *
+  * This class represents a scalar value while tracking its respective derivatives using Eigen's expression
+  * template mechanism.
+  *
+  * It supports the following list of global math function:
+  *  - std::abs, std::sqrt, std::pow, std::exp, std::log, std::sin, std::cos,
+  *  - internal::abs, internal::sqrt, numext::pow, internal::exp, internal::log, internal::sin, internal::cos,
+  *  - internal::conj, internal::real, internal::imag, numext::abs2.
+  *
+  * AutoDiffScalar can be used as the scalar type of an Eigen::Matrix object. However,
+  * in that case, the expression template mechanism only occurs at the top Matrix level,
+  * while derivatives are computed right away.
+  *
+  */
+
+template<typename _DerType>
+class AutoDiffScalar
+  : public internal::auto_diff_special_op
+            <_DerType, !internal::is_same<typename internal::traits<typename internal::remove_all<_DerType>::type>::Scalar,
+                                          typename NumTraits<typename internal::traits<typename internal::remove_all<_DerType>::type>::Scalar>::Real>::value>
+{
+  public:
+    typedef internal::auto_diff_special_op
+            <_DerType, !internal::is_same<typename internal::traits<typename internal::remove_all<_DerType>::type>::Scalar,
+                       typename NumTraits<typename internal::traits<typename internal::remove_all<_DerType>::type>::Scalar>::Real>::value> Base;
+    typedef typename internal::remove_all<_DerType>::type DerType;
+    typedef typename internal::traits<DerType>::Scalar Scalar;
+    typedef typename NumTraits<Scalar>::Real Real;
+
+    using Base::operator+;
+    using Base::operator*;
+
+    /** Default constructor without any initialization. */
+    AutoDiffScalar() {}
+
+    /** Constructs an active scalar from its \a value,
+        and initializes the \a nbDer derivatives such that it corresponds to the \a derNumber -th variable */
+    AutoDiffScalar(const Scalar& value, int nbDer, int derNumber)
+      : m_value(value), m_derivatives(DerType::Zero(nbDer))
+    {
+      m_derivatives.coeffRef(derNumber) = Scalar(1);
+    }
+
+    /** Conversion from a scalar constant to an active scalar.
+      * The derivatives are set to zero. */
+    /*explicit*/ AutoDiffScalar(const Real& value)
+      : m_value(value)
+    {
+      if(m_derivatives.size()>0)
+        m_derivatives.setZero();
+    }
+
+    /** Constructs an active scalar from its \a value and derivatives \a der */
+    AutoDiffScalar(const Scalar& value, const DerType& der)
+      : m_value(value), m_derivatives(der)
+    {}
+
+    template<typename OtherDerType>
+    AutoDiffScalar(const AutoDiffScalar<OtherDerType>& other
+#ifndef EIGEN_PARSED_BY_DOXYGEN
+    , typename internal::enable_if<
+            internal::is_same<Scalar, typename internal::traits<typename internal::remove_all<OtherDerType>::type>::Scalar>::value
+        &&  internal::is_convertible<OtherDerType,DerType>::value , void*>::type = 0
+#endif
+    )
+      : m_value(other.value()), m_derivatives(other.derivatives())
+    {}
+
+    friend  std::ostream & operator << (std::ostream & s, const AutoDiffScalar& a)
+    {
+      return s << a.value();
+    }
+
+    AutoDiffScalar(const AutoDiffScalar& other)
+      : m_value(other.value()), m_derivatives(other.derivatives())
+    {}
+
+    template<typename OtherDerType>
+    inline AutoDiffScalar& operator=(const AutoDiffScalar<OtherDerType>& other)
+    {
+      m_value = other.value();
+      m_derivatives = other.derivatives();
+      return *this;
+    }
+
+    inline AutoDiffScalar& operator=(const AutoDiffScalar& other)
+    {
+      m_value = other.value();
+      m_derivatives = other.derivatives();
+      return *this;
+    }
+
+    inline AutoDiffScalar& operator=(const Scalar& other)
+    {
+      m_value = other;
+      if(m_derivatives.size()>0)
+        m_derivatives.setZero();
+      return *this;
+    }
+
+//     inline operator const Scalar& () const { return m_value; }
+//     inline operator Scalar& () { return m_value; }
+
+    inline const Scalar& value() const { return m_value; }
+    inline Scalar& value() { return m_value; }
+
+    inline const DerType& derivatives() const { return m_derivatives; }
+    inline DerType& derivatives() { return m_derivatives; }
+
+    inline bool operator< (const Scalar& other) const  { return m_value <  other; }
+    inline bool operator<=(const Scalar& other) const  { return m_value <= other; }
+    inline bool operator> (const Scalar& other) const  { return m_value >  other; }
+    inline bool operator>=(const Scalar& other) const  { return m_value >= other; }
+    inline bool operator==(const Scalar& other) const  { return m_value == other; }
+    inline bool operator!=(const Scalar& other) const  { return m_value != other; }
+
+    friend inline bool operator< (const Scalar& a, const AutoDiffScalar& b) { return a <  b.value(); }
+    friend inline bool operator<=(const Scalar& a, const AutoDiffScalar& b) { return a <= b.value(); }
+    friend inline bool operator> (const Scalar& a, const AutoDiffScalar& b) { return a >  b.value(); }
+    friend inline bool operator>=(const Scalar& a, const AutoDiffScalar& b) { return a >= b.value(); }
+    friend inline bool operator==(const Scalar& a, const AutoDiffScalar& b) { return a == b.value(); }
+    friend inline bool operator!=(const Scalar& a, const AutoDiffScalar& b) { return a != b.value(); }
+
+    template<typename OtherDerType> inline bool operator< (const AutoDiffScalar<OtherDerType>& b) const  { return m_value <  b.value(); }
+    template<typename OtherDerType> inline bool operator<=(const AutoDiffScalar<OtherDerType>& b) const  { return m_value <= b.value(); }
+    template<typename OtherDerType> inline bool operator> (const AutoDiffScalar<OtherDerType>& b) const  { return m_value >  b.value(); }
+    template<typename OtherDerType> inline bool operator>=(const AutoDiffScalar<OtherDerType>& b) const  { return m_value >= b.value(); }
+    template<typename OtherDerType> inline bool operator==(const AutoDiffScalar<OtherDerType>& b) const  { return m_value == b.value(); }
+    template<typename OtherDerType> inline bool operator!=(const AutoDiffScalar<OtherDerType>& b) const  { return m_value != b.value(); }
+
+    inline const AutoDiffScalar<DerType&> operator+(const Scalar& other) const
+    {
+      return AutoDiffScalar<DerType&>(m_value + other, m_derivatives);
+    }
+
+    friend inline const AutoDiffScalar<DerType&> operator+(const Scalar& a, const AutoDiffScalar& b)
+    {
+      return AutoDiffScalar<DerType&>(a + b.value(), b.derivatives());
+    }
+
+//     inline const AutoDiffScalar<DerType&> operator+(const Real& other) const
+//     {
+//       return AutoDiffScalar<DerType&>(m_value + other, m_derivatives);
+//     }
+
+//     friend inline const AutoDiffScalar<DerType&> operator+(const Real& a, const AutoDiffScalar& b)
+//     {
+//       return AutoDiffScalar<DerType&>(a + b.value(), b.derivatives());
+//     }
+
+    inline AutoDiffScalar& operator+=(const Scalar& other)
+    {
+      value() += other;
+      return *this;
+    }
+
+    template<typename OtherDerType>
+    inline const AutoDiffScalar<CwiseBinaryOp<internal::scalar_sum_op<Scalar>,const DerType,const typename internal::remove_all<OtherDerType>::type> >
+    operator+(const AutoDiffScalar<OtherDerType>& other) const
+    {
+      internal::make_coherent(m_derivatives, other.derivatives());
+      return AutoDiffScalar<CwiseBinaryOp<internal::scalar_sum_op<Scalar>,const DerType,const typename internal::remove_all<OtherDerType>::type> >(
+        m_value + other.value(),
+        m_derivatives + other.derivatives());
+    }
+
+    template<typename OtherDerType>
+    inline AutoDiffScalar&
+    operator+=(const AutoDiffScalar<OtherDerType>& other)
+    {
+      (*this) = (*this) + other;
+      return *this;
+    }
+
+    inline const AutoDiffScalar<DerType&> operator-(const Scalar& b) const
+    {
+      return AutoDiffScalar<DerType&>(m_value - b, m_derivatives);
+    }
+
+    friend inline const AutoDiffScalar<CwiseUnaryOp<internal::scalar_opposite_op<Scalar>, const DerType> >
+    operator-(const Scalar& a, const AutoDiffScalar& b)
+    {
+      return AutoDiffScalar<CwiseUnaryOp<internal::scalar_opposite_op<Scalar>, const DerType> >
+            (a - b.value(), -b.derivatives());
+    }
+
+    inline AutoDiffScalar& operator-=(const Scalar& other)
+    {
+      value() -= other;
+      return *this;
+    }
+
+    template<typename OtherDerType>
+    inline const AutoDiffScalar<CwiseBinaryOp<internal::scalar_difference_op<Scalar>, const DerType,const typename internal::remove_all<OtherDerType>::type> >
+    operator-(const AutoDiffScalar<OtherDerType>& other) const
+    {
+      internal::make_coherent(m_derivatives, other.derivatives());
+      return AutoDiffScalar<CwiseBinaryOp<internal::scalar_difference_op<Scalar>, const DerType,const typename internal::remove_all<OtherDerType>::type> >(
+        m_value - other.value(),
+        m_derivatives - other.derivatives());
+    }
+
+    template<typename OtherDerType>
+    inline AutoDiffScalar&
+    operator-=(const AutoDiffScalar<OtherDerType>& other)
+    {
+      *this = *this - other;
+      return *this;
+    }
+
+    inline const AutoDiffScalar<CwiseUnaryOp<internal::scalar_opposite_op<Scalar>, const DerType> >
+    operator-() const
+    {
+      return AutoDiffScalar<CwiseUnaryOp<internal::scalar_opposite_op<Scalar>, const DerType> >(
+        -m_value,
+        -m_derivatives);
+    }
+
+    inline const AutoDiffScalar<EIGEN_EXPR_BINARYOP_SCALAR_RETURN_TYPE(DerType,Scalar,product) >
+    operator*(const Scalar& other) const
+    {
+      return MakeAutoDiffScalar(m_value * other, m_derivatives * other);
+    }
+
+    friend inline const AutoDiffScalar<EIGEN_EXPR_BINARYOP_SCALAR_RETURN_TYPE(DerType,Scalar,product) >
+    operator*(const Scalar& other, const AutoDiffScalar& a)
+    {
+      return MakeAutoDiffScalar(a.value() * other, a.derivatives() * other);
+    }
+
+//     inline const AutoDiffScalar<typename CwiseUnaryOp<internal::scalar_multiple_op<Real>, DerType>::Type >
+//     operator*(const Real& other) const
+//     {
+//       return AutoDiffScalar<typename CwiseUnaryOp<internal::scalar_multiple_op<Real>, DerType>::Type >(
+//         m_value * other,
+//         (m_derivatives * other));
+//     }
+//
+//     friend inline const AutoDiffScalar<typename CwiseUnaryOp<internal::scalar_multiple_op<Real>, DerType>::Type >
+//     operator*(const Real& other, const AutoDiffScalar& a)
+//     {
+//       return AutoDiffScalar<typename CwiseUnaryOp<internal::scalar_multiple_op<Real>, DerType>::Type >(
+//         a.value() * other,
+//         a.derivatives() * other);
+//     }
+
+    inline const AutoDiffScalar<EIGEN_EXPR_BINARYOP_SCALAR_RETURN_TYPE(DerType,Scalar,product) >
+    operator/(const Scalar& other) const
+    {
+      return MakeAutoDiffScalar(m_value / other, (m_derivatives * (Scalar(1)/other)));
+    }
+
+    friend inline const AutoDiffScalar<EIGEN_EXPR_BINARYOP_SCALAR_RETURN_TYPE(DerType,Scalar,product) >
+    operator/(const Scalar& other, const AutoDiffScalar& a)
+    {
+      return MakeAutoDiffScalar(other / a.value(), a.derivatives() * (Scalar(-other) / (a.value()*a.value())));
+    }
+
+//     inline const AutoDiffScalar<typename CwiseUnaryOp<internal::scalar_multiple_op<Real>, DerType>::Type >
+//     operator/(const Real& other) const
+//     {
+//       return AutoDiffScalar<typename CwiseUnaryOp<internal::scalar_multiple_op<Real>, DerType>::Type >(
+//         m_value / other,
+//         (m_derivatives * (Real(1)/other)));
+//     }
+//
+//     friend inline const AutoDiffScalar<typename CwiseUnaryOp<internal::scalar_multiple_op<Real>, DerType>::Type >
+//     operator/(const Real& other, const AutoDiffScalar& a)
+//     {
+//       return AutoDiffScalar<typename CwiseUnaryOp<internal::scalar_multiple_op<Real>, DerType>::Type >(
+//         other / a.value(),
+//         a.derivatives() * (-Real(1)/other));
+//     }
+
+    template<typename OtherDerType>
+    inline const AutoDiffScalar<EIGEN_EXPR_BINARYOP_SCALAR_RETURN_TYPE(
+        CwiseBinaryOp<internal::scalar_difference_op<Scalar> EIGEN_COMMA
+          const EIGEN_EXPR_BINARYOP_SCALAR_RETURN_TYPE(DerType,Scalar,product) EIGEN_COMMA
+          const EIGEN_EXPR_BINARYOP_SCALAR_RETURN_TYPE(typename internal::remove_all<OtherDerType>::type,Scalar,product) >,Scalar,product) >
+    operator/(const AutoDiffScalar<OtherDerType>& other) const
+    {
+      internal::make_coherent(m_derivatives, other.derivatives());
+      return MakeAutoDiffScalar(
+        m_value / other.value(),
+          ((m_derivatives * other.value()) - (other.derivatives() * m_value))
+        * (Scalar(1)/(other.value()*other.value())));
+    }
+
+    template<typename OtherDerType>
+    inline const AutoDiffScalar<CwiseBinaryOp<internal::scalar_sum_op<Scalar>,
+        const EIGEN_EXPR_BINARYOP_SCALAR_RETURN_TYPE(DerType,Scalar,product),
+        const EIGEN_EXPR_BINARYOP_SCALAR_RETURN_TYPE(typename internal::remove_all<OtherDerType>::type,Scalar,product) > >
+    operator*(const AutoDiffScalar<OtherDerType>& other) const
+    {
+      internal::make_coherent(m_derivatives, other.derivatives());
+      return MakeAutoDiffScalar(
+        m_value * other.value(),
+        (m_derivatives * other.value()) + (other.derivatives() * m_value));
+    }
+
+    inline AutoDiffScalar& operator*=(const Scalar& other)
+    {
+      *this = *this * other;
+      return *this;
+    }
+
+    template<typename OtherDerType>
+    inline AutoDiffScalar& operator*=(const AutoDiffScalar<OtherDerType>& other)
+    {
+      *this = *this * other;
+      return *this;
+    }
+
+    inline AutoDiffScalar& operator/=(const Scalar& other)
+    {
+      *this = *this / other;
+      return *this;
+    }
+
+    template<typename OtherDerType>
+    inline AutoDiffScalar& operator/=(const AutoDiffScalar<OtherDerType>& other)
+    {
+      *this = *this / other;
+      return *this;
+    }
+
+  protected:
+    Scalar m_value;
+    DerType m_derivatives;
+
+};
+
+namespace internal {
+
+template<typename _DerType>
+struct auto_diff_special_op<_DerType, true>
+//   : auto_diff_scalar_op<_DerType, typename NumTraits<Scalar>::Real,
+//                            is_same<Scalar,typename NumTraits<Scalar>::Real>::value>
+{
+  typedef typename remove_all<_DerType>::type DerType;
+  typedef typename traits<DerType>::Scalar Scalar;
+  typedef typename NumTraits<Scalar>::Real Real;
+
+//   typedef auto_diff_scalar_op<_DerType, typename NumTraits<Scalar>::Real,
+//                            is_same<Scalar,typename NumTraits<Scalar>::Real>::value> Base;
+
+//   using Base::operator+;
+//   using Base::operator+=;
+//   using Base::operator-;
+//   using Base::operator-=;
+//   using Base::operator*;
+//   using Base::operator*=;
+
+  const AutoDiffScalar<_DerType>& derived() const { return *static_cast<const AutoDiffScalar<_DerType>*>(this); }
+  AutoDiffScalar<_DerType>& derived() { return *static_cast<AutoDiffScalar<_DerType>*>(this); }
+
+
+  inline const AutoDiffScalar<DerType&> operator+(const Real& other) const
+  {
+    return AutoDiffScalar<DerType&>(derived().value() + other, derived().derivatives());
+  }
+
+  friend inline const AutoDiffScalar<DerType&> operator+(const Real& a, const AutoDiffScalar<_DerType>& b)
+  {
+    return AutoDiffScalar<DerType&>(a + b.value(), b.derivatives());
+  }
+
+  inline AutoDiffScalar<_DerType>& operator+=(const Real& other)
+  {
+    derived().value() += other;
+    return derived();
+  }
+
+
+  inline const AutoDiffScalar<typename CwiseUnaryOp<bind2nd_op<scalar_product_op<Scalar,Real> >, DerType>::Type >
+  operator*(const Real& other) const
+  {
+    return AutoDiffScalar<typename CwiseUnaryOp<bind2nd_op<scalar_product_op<Scalar,Real> >, DerType>::Type >(
+      derived().value() * other,
+      derived().derivatives() * other);
+  }
+
+  friend inline const AutoDiffScalar<typename CwiseUnaryOp<bind1st_op<scalar_product_op<Real,Scalar> >, DerType>::Type >
+  operator*(const Real& other, const AutoDiffScalar<_DerType>& a)
+  {
+    return AutoDiffScalar<typename CwiseUnaryOp<bind1st_op<scalar_product_op<Real,Scalar> >, DerType>::Type >(
+      a.value() * other,
+      a.derivatives() * other);
+  }
+
+  inline AutoDiffScalar<_DerType>& operator*=(const Scalar& other)
+  {
+    *this = *this * other;
+    return derived();
+  }
+};
+
+template<typename _DerType>
+struct auto_diff_special_op<_DerType, false>
+{
+  void operator*() const;
+  void operator-() const;
+  void operator+() const;
+};
+
+template<typename BinOp, typename A, typename B, typename RefType>
+void make_coherent_expression(CwiseBinaryOp<BinOp,A,B> xpr, const RefType &ref)
+{
+  make_coherent(xpr.const_cast_derived().lhs(), ref);
+  make_coherent(xpr.const_cast_derived().rhs(), ref);
+}
+
+template<typename UnaryOp, typename A, typename RefType>
+void make_coherent_expression(const CwiseUnaryOp<UnaryOp,A> &xpr, const RefType &ref)
+{
+  make_coherent(xpr.nestedExpression().const_cast_derived(), ref);
+}
+
+// needed for compilation only
+template<typename UnaryOp, typename A, typename RefType>
+void make_coherent_expression(const CwiseNullaryOp<UnaryOp,A> &, const RefType &)
+{}
+
+template<typename A_Scalar, int A_Rows, int A_Cols, int A_Options, int A_MaxRows, int A_MaxCols, typename B>
+struct make_coherent_impl<Matrix<A_Scalar, A_Rows, A_Cols, A_Options, A_MaxRows, A_MaxCols>, B> {
+  typedef Matrix<A_Scalar, A_Rows, A_Cols, A_Options, A_MaxRows, A_MaxCols> A;
+  static void run(A& a, B& b) {
+    if((A_Rows==Dynamic || A_Cols==Dynamic) && (a.size()==0))
+    {
+      a.resize(b.size());
+      a.setZero();
+    }
+    else if (B::SizeAtCompileTime==Dynamic && a.size()!=0 && b.size()==0)
+    {
+      make_coherent_expression(b,a);
+    }
+  }
+};
+
+template<typename A, typename B_Scalar, int B_Rows, int B_Cols, int B_Options, int B_MaxRows, int B_MaxCols>
+struct make_coherent_impl<A, Matrix<B_Scalar, B_Rows, B_Cols, B_Options, B_MaxRows, B_MaxCols> > {
+  typedef Matrix<B_Scalar, B_Rows, B_Cols, B_Options, B_MaxRows, B_MaxCols> B;
+  static void run(A& a, B& b) {
+    if((B_Rows==Dynamic || B_Cols==Dynamic) && (b.size()==0))
+    {
+      b.resize(a.size());
+      b.setZero();
+    }
+    else if (A::SizeAtCompileTime==Dynamic && b.size()!=0 && a.size()==0)
+    {
+      make_coherent_expression(a,b);
+    }
+  }
+};
+
+template<typename A_Scalar, int A_Rows, int A_Cols, int A_Options, int A_MaxRows, int A_MaxCols,
+         typename B_Scalar, int B_Rows, int B_Cols, int B_Options, int B_MaxRows, int B_MaxCols>
+struct make_coherent_impl<Matrix<A_Scalar, A_Rows, A_Cols, A_Options, A_MaxRows, A_MaxCols>,
+                          Matrix<B_Scalar, B_Rows, B_Cols, B_Options, B_MaxRows, B_MaxCols> > {
+  typedef Matrix<A_Scalar, A_Rows, A_Cols, A_Options, A_MaxRows, A_MaxCols> A;
+  typedef Matrix<B_Scalar, B_Rows, B_Cols, B_Options, B_MaxRows, B_MaxCols> B;
+  static void run(A& a, B& b) {
+    if((A_Rows==Dynamic || A_Cols==Dynamic) && (a.size()==0))
+    {
+      a.resize(b.size());
+      a.setZero();
+    }
+    else if((B_Rows==Dynamic || B_Cols==Dynamic) && (b.size()==0))
+    {
+      b.resize(a.size());
+      b.setZero();
+    }
+  }
+};
+
+} // end namespace internal
+
+template<typename DerType, typename BinOp>
+struct ScalarBinaryOpTraits<AutoDiffScalar<DerType>,typename DerType::Scalar,BinOp>
+{
+  typedef AutoDiffScalar<DerType> ReturnType;
+};
+
+template<typename DerType, typename BinOp>
+struct ScalarBinaryOpTraits<typename DerType::Scalar,AutoDiffScalar<DerType>, BinOp>
+{
+  typedef AutoDiffScalar<DerType> ReturnType;
+};
+
+
+// The following is an attempt to let Eigen's known about expression template, but that's more tricky!
+
+// template<typename DerType, typename BinOp>
+// struct ScalarBinaryOpTraits<AutoDiffScalar<DerType>,AutoDiffScalar<DerType>, BinOp>
+// {
+//   enum { Defined = 1 };
+//   typedef AutoDiffScalar<typename DerType::PlainObject> ReturnType;
+// };
+//
+// template<typename DerType1,typename DerType2, typename BinOp>
+// struct ScalarBinaryOpTraits<AutoDiffScalar<DerType1>,AutoDiffScalar<DerType2>, BinOp>
+// {
+//   enum { Defined = 1 };//internal::is_same<typename DerType1::Scalar,typename DerType2::Scalar>::value };
+//   typedef AutoDiffScalar<typename DerType1::PlainObject> ReturnType;
+// };
+
+#define EIGEN_AUTODIFF_DECLARE_GLOBAL_UNARY(FUNC,CODE) \
+  template<typename DerType> \
+  inline const Eigen::AutoDiffScalar< \
+  EIGEN_EXPR_BINARYOP_SCALAR_RETURN_TYPE(typename Eigen::internal::remove_all<DerType>::type, typename Eigen::internal::traits<typename Eigen::internal::remove_all<DerType>::type>::Scalar, product) > \
+  FUNC(const Eigen::AutoDiffScalar<DerType>& x) { \
+    using namespace Eigen; \
+    typedef typename Eigen::internal::traits<typename Eigen::internal::remove_all<DerType>::type>::Scalar Scalar; \
+    EIGEN_UNUSED_VARIABLE(sizeof(Scalar)); \
+    CODE; \
+  }
+
+template<typename DerType>
+inline const AutoDiffScalar<DerType>& conj(const AutoDiffScalar<DerType>& x)  { return x; }
+template<typename DerType>
+inline const AutoDiffScalar<DerType>& real(const AutoDiffScalar<DerType>& x)  { return x; }
+template<typename DerType>
+inline typename DerType::Scalar imag(const AutoDiffScalar<DerType>&)    { return 0.; }
+template<typename DerType, typename T>
+inline AutoDiffScalar<typename Eigen::internal::remove_all<DerType>::type::PlainObject> (min)(const AutoDiffScalar<DerType>& x, const T& y) {
+  typedef AutoDiffScalar<typename Eigen::internal::remove_all<DerType>::type::PlainObject> ADS;
+  return (x <= y ? ADS(x) : ADS(y));
+}
+template<typename DerType, typename T>
+inline AutoDiffScalar<typename Eigen::internal::remove_all<DerType>::type::PlainObject> (max)(const AutoDiffScalar<DerType>& x, const T& y) {
+  typedef AutoDiffScalar<typename Eigen::internal::remove_all<DerType>::type::PlainObject> ADS;
+  return (x >= y ? ADS(x) : ADS(y));
+}
+template<typename DerType, typename T>
+inline AutoDiffScalar<typename Eigen::internal::remove_all<DerType>::type::PlainObject> (min)(const T& x, const AutoDiffScalar<DerType>& y) {
+  typedef AutoDiffScalar<typename Eigen::internal::remove_all<DerType>::type::PlainObject> ADS;
+  return (x < y ? ADS(x) : ADS(y));
+}
+template<typename DerType, typename T>
+inline AutoDiffScalar<typename Eigen::internal::remove_all<DerType>::type::PlainObject> (max)(const T& x, const AutoDiffScalar<DerType>& y) {
+  typedef AutoDiffScalar<typename Eigen::internal::remove_all<DerType>::type::PlainObject> ADS;
+  return (x > y ? ADS(x) : ADS(y));
+}
+template<typename DerType>
+inline AutoDiffScalar<typename Eigen::internal::remove_all<DerType>::type::PlainObject> (min)(const AutoDiffScalar<DerType>& x, const AutoDiffScalar<DerType>& y) {
+  return (x.value() < y.value() ? x : y);
+}
+template<typename DerType>
+inline AutoDiffScalar<typename Eigen::internal::remove_all<DerType>::type::PlainObject> (max)(const AutoDiffScalar<DerType>& x, const AutoDiffScalar<DerType>& y) {
+  return (x.value() >= y.value() ? x : y);
+}
+
+
+EIGEN_AUTODIFF_DECLARE_GLOBAL_UNARY(abs,
+  using std::abs;
+  return Eigen::MakeAutoDiffScalar(abs(x.value()), x.derivatives() * (x.value()<0 ? -1 : 1) );)
+
+EIGEN_AUTODIFF_DECLARE_GLOBAL_UNARY(abs2,
+  using numext::abs2;
+  return Eigen::MakeAutoDiffScalar(abs2(x.value()), x.derivatives() * (Scalar(2)*x.value()));)
+
+EIGEN_AUTODIFF_DECLARE_GLOBAL_UNARY(sqrt,
+  using std::sqrt;
+  Scalar sqrtx = sqrt(x.value());
+  return Eigen::MakeAutoDiffScalar(sqrtx,x.derivatives() * (Scalar(0.5) / sqrtx));)
+
+EIGEN_AUTODIFF_DECLARE_GLOBAL_UNARY(cos,
+  using std::cos;
+  using std::sin;
+  return Eigen::MakeAutoDiffScalar(cos(x.value()), x.derivatives() * (-sin(x.value())));)
+
+EIGEN_AUTODIFF_DECLARE_GLOBAL_UNARY(sin,
+  using std::sin;
+  using std::cos;
+  return Eigen::MakeAutoDiffScalar(sin(x.value()),x.derivatives() * cos(x.value()));)
+
+EIGEN_AUTODIFF_DECLARE_GLOBAL_UNARY(exp,
+  using std::exp;
+  Scalar expx = exp(x.value());
+  return Eigen::MakeAutoDiffScalar(expx,x.derivatives() * expx);)
+
+EIGEN_AUTODIFF_DECLARE_GLOBAL_UNARY(log,
+  using std::log;
+  return Eigen::MakeAutoDiffScalar(log(x.value()),x.derivatives() * (Scalar(1)/x.value()));)
+
+template<typename DerType>
+inline const Eigen::AutoDiffScalar<
+EIGEN_EXPR_BINARYOP_SCALAR_RETURN_TYPE(typename internal::remove_all<DerType>::type,typename internal::traits<typename internal::remove_all<DerType>::type>::Scalar,product) >
+pow(const Eigen::AutoDiffScalar<DerType> &x, const typename internal::traits<typename internal::remove_all<DerType>::type>::Scalar &y)
+{
+  using namespace Eigen;
+  using std::pow;
+  return Eigen::MakeAutoDiffScalar(pow(x.value(),y), x.derivatives() * (y * pow(x.value(),y-1)));
+}
+
+
+template<typename DerTypeA,typename DerTypeB>
+inline const AutoDiffScalar<Matrix<typename internal::traits<typename internal::remove_all<DerTypeA>::type>::Scalar,Dynamic,1> >
+atan2(const AutoDiffScalar<DerTypeA>& a, const AutoDiffScalar<DerTypeB>& b)
+{
+  using std::atan2;
+  typedef typename internal::traits<typename internal::remove_all<DerTypeA>::type>::Scalar Scalar;
+  typedef AutoDiffScalar<Matrix<Scalar,Dynamic,1> > PlainADS;
+  PlainADS ret;
+  ret.value() = atan2(a.value(), b.value());
+  
+  Scalar squared_hypot = a.value() * a.value() + b.value() * b.value();
+  
+  // if (squared_hypot==0) the derivation is undefined and the following results in a NaN:
+  ret.derivatives() = (a.derivatives() * b.value() - a.value() * b.derivatives()) / squared_hypot;
+
+  return ret;
+}
+
+EIGEN_AUTODIFF_DECLARE_GLOBAL_UNARY(tan,
+  using std::tan;
+  using std::cos;
+  return Eigen::MakeAutoDiffScalar(tan(x.value()),x.derivatives() * (Scalar(1)/numext::abs2(cos(x.value()))));)
+
+EIGEN_AUTODIFF_DECLARE_GLOBAL_UNARY(asin,
+  using std::sqrt;
+  using std::asin;
+  return Eigen::MakeAutoDiffScalar(asin(x.value()),x.derivatives() * (Scalar(1)/sqrt(1-numext::abs2(x.value()))));)
+  
+EIGEN_AUTODIFF_DECLARE_GLOBAL_UNARY(acos,
+  using std::sqrt;
+  using std::acos;
+  return Eigen::MakeAutoDiffScalar(acos(x.value()),x.derivatives() * (Scalar(-1)/sqrt(1-numext::abs2(x.value()))));)
+
+EIGEN_AUTODIFF_DECLARE_GLOBAL_UNARY(tanh,
+  using std::cosh;
+  using std::tanh;
+  return Eigen::MakeAutoDiffScalar(tanh(x.value()),x.derivatives() * (Scalar(1)/numext::abs2(cosh(x.value()))));)
+
+EIGEN_AUTODIFF_DECLARE_GLOBAL_UNARY(sinh,
+  using std::sinh;
+  using std::cosh;
+  return Eigen::MakeAutoDiffScalar(sinh(x.value()),x.derivatives() * cosh(x.value()));)
+
+EIGEN_AUTODIFF_DECLARE_GLOBAL_UNARY(cosh,
+  using std::sinh;
+  using std::cosh;
+  return Eigen::MakeAutoDiffScalar(cosh(x.value()),x.derivatives() * sinh(x.value()));)
+
+#undef EIGEN_AUTODIFF_DECLARE_GLOBAL_UNARY
+
+template<typename DerType> struct NumTraits<AutoDiffScalar<DerType> >
+  : NumTraits< typename NumTraits<typename internal::remove_all<DerType>::type::Scalar>::Real >
+{
+  typedef typename internal::remove_all<DerType>::type DerTypeCleaned;
+  typedef AutoDiffScalar<Matrix<typename NumTraits<typename DerTypeCleaned::Scalar>::Real,DerTypeCleaned::RowsAtCompileTime,DerTypeCleaned::ColsAtCompileTime,
+                                0, DerTypeCleaned::MaxRowsAtCompileTime, DerTypeCleaned::MaxColsAtCompileTime> > Real;
+  typedef AutoDiffScalar<DerType> NonInteger;
+  typedef AutoDiffScalar<DerType> Nested;
+  typedef typename NumTraits<typename DerTypeCleaned::Scalar>::Literal Literal;
+  enum{
+    RequireInitialization = 1
+  };
+};
+
+}
+
+namespace std {
+template <typename T>
+class numeric_limits<Eigen::AutoDiffScalar<T> >
+  : public numeric_limits<typename T::Scalar> {};
+
+}  // namespace std
+
+#endif // EIGEN_AUTODIFF_SCALAR_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/AutoDiff/AutoDiffJacobian.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/AutoDiff/AutoDiffJacobian.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/AutoDiff/AutoDiffJacobian.h	(revision 3762)
@@ -0,0 +1,108 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2009 Gael Guennebaud <gael.guennebaud@inria.fr>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_AUTODIFF_JACOBIAN_H
+#define EIGEN_AUTODIFF_JACOBIAN_H
+
+namespace Eigen
+{
+
+template<typename Functor> class AutoDiffJacobian : public Functor
+{
+public:
+  AutoDiffJacobian() : Functor() {}
+  AutoDiffJacobian(const Functor& f) : Functor(f) {}
+
+  // forward constructors
+#if EIGEN_HAS_VARIADIC_TEMPLATES
+  template<typename... T>
+  AutoDiffJacobian(const T& ...Values) : Functor(Values...) {}
+#else
+  template<typename T0>
+  AutoDiffJacobian(const T0& a0) : Functor(a0) {}
+  template<typename T0, typename T1>
+  AutoDiffJacobian(const T0& a0, const T1& a1) : Functor(a0, a1) {}
+  template<typename T0, typename T1, typename T2>
+  AutoDiffJacobian(const T0& a0, const T1& a1, const T2& a2) : Functor(a0, a1, a2) {}
+#endif
+
+  typedef typename Functor::InputType InputType;
+  typedef typename Functor::ValueType ValueType;
+  typedef typename ValueType::Scalar Scalar;
+
+  enum {
+    InputsAtCompileTime = InputType::RowsAtCompileTime,
+    ValuesAtCompileTime = ValueType::RowsAtCompileTime
+  };
+
+  typedef Matrix<Scalar, ValuesAtCompileTime, InputsAtCompileTime> JacobianType;
+  typedef typename JacobianType::Index Index;
+
+  typedef Matrix<Scalar, InputsAtCompileTime, 1> DerivativeType;
+  typedef AutoDiffScalar<DerivativeType> ActiveScalar;
+
+  typedef Matrix<ActiveScalar, InputsAtCompileTime, 1> ActiveInput;
+  typedef Matrix<ActiveScalar, ValuesAtCompileTime, 1> ActiveValue;
+
+#if EIGEN_HAS_VARIADIC_TEMPLATES
+  // Some compilers don't accept variadic parameters after a default parameter,
+  // i.e., we can't just write _jac=0 but we need to overload operator():
+  EIGEN_STRONG_INLINE
+  void operator() (const InputType& x, ValueType* v) const
+  {
+      this->operator()(x, v, 0);
+  }
+  template<typename... ParamsType>
+  void operator() (const InputType& x, ValueType* v, JacobianType* _jac,
+                   const ParamsType&... Params) const
+#else
+  void operator() (const InputType& x, ValueType* v, JacobianType* _jac=0) const
+#endif
+  {
+    eigen_assert(v!=0);
+
+    if (!_jac)
+    {
+#if EIGEN_HAS_VARIADIC_TEMPLATES
+      Functor::operator()(x, v, Params...);
+#else
+      Functor::operator()(x, v);
+#endif
+      return;
+    }
+
+    JacobianType& jac = *_jac;
+
+    ActiveInput ax = x.template cast<ActiveScalar>();
+    ActiveValue av(jac.rows());
+
+    if(InputsAtCompileTime==Dynamic)
+      for (Index j=0; j<jac.rows(); j++)
+        av[j].derivatives().resize(x.rows());
+
+    for (Index i=0; i<jac.cols(); i++)
+      ax[i].derivatives() = DerivativeType::Unit(x.rows(),i);
+
+#if EIGEN_HAS_VARIADIC_TEMPLATES
+    Functor::operator()(ax, &av, Params...);
+#else
+    Functor::operator()(ax, &av);
+#endif
+
+    for (Index i=0; i<jac.rows(); i++)
+    {
+      (*v)[i] = av[i].value();
+      jac.row(i) = av[i].derivatives();
+    }
+  }
+};
+
+}
+
+#endif // EIGEN_AUTODIFF_JACOBIAN_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/SparseExtra/BlockOfDynamicSparseMatrix.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/SparseExtra/BlockOfDynamicSparseMatrix.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/SparseExtra/BlockOfDynamicSparseMatrix.h	(revision 3762)
@@ -0,0 +1,122 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2008-2009 Gael Guennebaud <gael.guennebaud@inria.fr>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_SPARSE_BLOCKFORDYNAMICMATRIX_H
+#define EIGEN_SPARSE_BLOCKFORDYNAMICMATRIX_H
+
+namespace Eigen { 
+
+#if 0
+
+// NOTE Have to be reimplemented as a specialization of BlockImpl< DynamicSparseMatrix<_Scalar, _Options, _Index>, ... >
+// See SparseBlock.h for an example
+
+
+/***************************************************************************
+* specialisation for DynamicSparseMatrix
+***************************************************************************/
+
+template<typename _Scalar, int _Options, typename _Index, int Size>
+class SparseInnerVectorSet<DynamicSparseMatrix<_Scalar, _Options, _Index>, Size>
+  : public SparseMatrixBase<SparseInnerVectorSet<DynamicSparseMatrix<_Scalar, _Options, _Index>, Size> >
+{
+    typedef DynamicSparseMatrix<_Scalar, _Options, _Index> MatrixType;
+  public:
+
+    enum { IsRowMajor = internal::traits<SparseInnerVectorSet>::IsRowMajor };
+
+    EIGEN_SPARSE_PUBLIC_INTERFACE(SparseInnerVectorSet)
+    class InnerIterator: public MatrixType::InnerIterator
+    {
+      public:
+        inline InnerIterator(const SparseInnerVectorSet& xpr, Index outer)
+          : MatrixType::InnerIterator(xpr.m_matrix, xpr.m_outerStart + outer), m_outer(outer)
+        {}
+        inline Index row() const { return IsRowMajor ? m_outer : this->index(); }
+        inline Index col() const { return IsRowMajor ? this->index() : m_outer; }
+      protected:
+        Index m_outer;
+    };
+
+    inline SparseInnerVectorSet(const MatrixType& matrix, Index outerStart, Index outerSize)
+      : m_matrix(matrix), m_outerStart(outerStart), m_outerSize(outerSize)
+    {
+      eigen_assert( (outerStart>=0) && ((outerStart+outerSize)<=matrix.outerSize()) );
+    }
+
+    inline SparseInnerVectorSet(const MatrixType& matrix, Index outer)
+      : m_matrix(matrix), m_outerStart(outer), m_outerSize(Size)
+    {
+      eigen_assert(Size!=Dynamic);
+      eigen_assert( (outer>=0) && (outer<matrix.outerSize()) );
+    }
+
+    template<typename OtherDerived>
+    inline SparseInnerVectorSet& operator=(const SparseMatrixBase<OtherDerived>& other)
+    {
+      if (IsRowMajor != ((OtherDerived::Flags&RowMajorBit)==RowMajorBit))
+      {
+        // need to transpose => perform a block evaluation followed by a big swap
+        DynamicSparseMatrix<Scalar,IsRowMajor?RowMajorBit:0> aux(other);
+        *this = aux.markAsRValue();
+      }
+      else
+      {
+        // evaluate/copy vector per vector
+        for (Index j=0; j<m_outerSize.value(); ++j)
+        {
+          SparseVector<Scalar,IsRowMajor ? RowMajorBit : 0> aux(other.innerVector(j));
+          m_matrix.const_cast_derived()._data()[m_outerStart+j].swap(aux._data());
+        }
+      }
+      return *this;
+    }
+
+    inline SparseInnerVectorSet& operator=(const SparseInnerVectorSet& other)
+    {
+      return operator=<SparseInnerVectorSet>(other);
+    }
+
+    Index nonZeros() const
+    {
+      Index count = 0;
+      for (Index j=0; j<m_outerSize.value(); ++j)
+        count += m_matrix._data()[m_outerStart+j].size();
+      return count;
+    }
+
+    const Scalar& lastCoeff() const
+    {
+      EIGEN_STATIC_ASSERT_VECTOR_ONLY(SparseInnerVectorSet);
+      eigen_assert(m_matrix.data()[m_outerStart].size()>0);
+      return m_matrix.data()[m_outerStart].vale(m_matrix.data()[m_outerStart].size()-1);
+    }
+
+//     template<typename Sparse>
+//     inline SparseInnerVectorSet& operator=(const SparseMatrixBase<OtherDerived>& other)
+//     {
+//       return *this;
+//     }
+
+    EIGEN_STRONG_INLINE Index rows() const { return IsRowMajor ? m_outerSize.value() : m_matrix.rows(); }
+    EIGEN_STRONG_INLINE Index cols() const { return IsRowMajor ? m_matrix.cols() : m_outerSize.value(); }
+
+  protected:
+
+    const typename MatrixType::Nested m_matrix;
+    Index m_outerStart;
+    const internal::variable_if_dynamic<Index, Size> m_outerSize;
+
+};
+
+#endif
+
+} // end namespace Eigen
+
+#endif // EIGEN_SPARSE_BLOCKFORDYNAMICMATRIX_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/SparseExtra/DynamicSparseMatrix.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/SparseExtra/DynamicSparseMatrix.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/SparseExtra/DynamicSparseMatrix.h	(revision 3762)
@@ -0,0 +1,404 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2008-2009 Gael Guennebaud <gael.guennebaud@inria.fr>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_DYNAMIC_SPARSEMATRIX_H
+#define EIGEN_DYNAMIC_SPARSEMATRIX_H
+
+namespace Eigen { 
+
+/** \deprecated use a SparseMatrix in an uncompressed mode
+  *
+  * \class DynamicSparseMatrix
+  *
+  * \brief A sparse matrix class designed for matrix assembly purpose
+  *
+  * \param _Scalar the scalar type, i.e. the type of the coefficients
+  *
+  * Unlike SparseMatrix, this class provides a much higher degree of flexibility. In particular, it allows
+  * random read/write accesses in log(rho*outer_size) where \c rho is the probability that a coefficient is
+  * nonzero and outer_size is the number of columns if the matrix is column-major and the number of rows
+  * otherwise.
+  *
+  * Internally, the data are stored as a std::vector of compressed vector. The performances of random writes might
+  * decrease as the number of nonzeros per inner-vector increase. In practice, we observed very good performance
+  * till about 100 nonzeros/vector, and the performance remains relatively good till 500 nonzeros/vectors.
+  *
+  * \see SparseMatrix
+  */
+
+namespace internal {
+template<typename _Scalar, int _Options, typename _StorageIndex>
+struct traits<DynamicSparseMatrix<_Scalar, _Options, _StorageIndex> >
+{
+  typedef _Scalar Scalar;
+  typedef _StorageIndex StorageIndex;
+  typedef Sparse StorageKind;
+  typedef MatrixXpr XprKind;
+  enum {
+    RowsAtCompileTime = Dynamic,
+    ColsAtCompileTime = Dynamic,
+    MaxRowsAtCompileTime = Dynamic,
+    MaxColsAtCompileTime = Dynamic,
+    Flags = _Options | NestByRefBit | LvalueBit,
+    CoeffReadCost = NumTraits<Scalar>::ReadCost,
+    SupportedAccessPatterns = OuterRandomAccessPattern
+  };
+};
+}
+
+template<typename _Scalar, int _Options, typename _StorageIndex>
+ class  DynamicSparseMatrix
+  : public SparseMatrixBase<DynamicSparseMatrix<_Scalar, _Options, _StorageIndex> >
+{
+    typedef SparseMatrixBase<DynamicSparseMatrix> Base;
+    using Base::convert_index;
+  public:
+    EIGEN_SPARSE_PUBLIC_INTERFACE(DynamicSparseMatrix)
+    // FIXME: why are these operator already alvailable ???
+    // EIGEN_SPARSE_INHERIT_ASSIGNMENT_OPERATOR(DynamicSparseMatrix, +=)
+    // EIGEN_SPARSE_INHERIT_ASSIGNMENT_OPERATOR(DynamicSparseMatrix, -=)
+    typedef MappedSparseMatrix<Scalar,Flags> Map;
+    using Base::IsRowMajor;
+    using Base::operator=;
+    enum {
+      Options = _Options
+    };
+
+  protected:
+
+    typedef DynamicSparseMatrix<Scalar,(Flags&~RowMajorBit)|(IsRowMajor?RowMajorBit:0), StorageIndex> TransposedSparseMatrix;
+
+    Index m_innerSize;
+    std::vector<internal::CompressedStorage<Scalar,StorageIndex> > m_data;
+
+  public:
+
+    inline Index rows() const { return IsRowMajor ? outerSize() : m_innerSize; }
+    inline Index cols() const { return IsRowMajor ? m_innerSize : outerSize(); }
+    inline Index innerSize() const { return m_innerSize; }
+    inline Index outerSize() const { return convert_index(m_data.size()); }
+    inline Index innerNonZeros(Index j) const { return m_data[j].size(); }
+
+    std::vector<internal::CompressedStorage<Scalar,StorageIndex> >& _data() { return m_data; }
+    const std::vector<internal::CompressedStorage<Scalar,StorageIndex> >& _data() const { return m_data; }
+
+    /** \returns the coefficient value at given position \a row, \a col
+      * This operation involes a log(rho*outer_size) binary search.
+      */
+    inline Scalar coeff(Index row, Index col) const
+    {
+      const Index outer = IsRowMajor ? row : col;
+      const Index inner = IsRowMajor ? col : row;
+      return m_data[outer].at(inner);
+    }
+
+    /** \returns a reference to the coefficient value at given position \a row, \a col
+      * This operation involes a log(rho*outer_size) binary search. If the coefficient does not
+      * exist yet, then a sorted insertion into a sequential buffer is performed.
+      */
+    inline Scalar& coeffRef(Index row, Index col)
+    {
+      const Index outer = IsRowMajor ? row : col;
+      const Index inner = IsRowMajor ? col : row;
+      return m_data[outer].atWithInsertion(inner);
+    }
+
+    class InnerIterator;
+    class ReverseInnerIterator;
+
+    void setZero()
+    {
+      for (Index j=0; j<outerSize(); ++j)
+        m_data[j].clear();
+    }
+
+    /** \returns the number of non zero coefficients */
+    Index nonZeros() const
+    {
+      Index res = 0;
+      for (Index j=0; j<outerSize(); ++j)
+        res += m_data[j].size();
+      return res;
+    }
+
+
+
+    void reserve(Index reserveSize = 1000)
+    {
+      if (outerSize()>0)
+      {
+        Index reserveSizePerVector = (std::max)(reserveSize/outerSize(),Index(4));
+        for (Index j=0; j<outerSize(); ++j)
+        {
+          m_data[j].reserve(reserveSizePerVector);
+        }
+      }
+    }
+
+    /** Does nothing: provided for compatibility with SparseMatrix */
+    inline void startVec(Index /*outer*/) {}
+
+    /** \returns a reference to the non zero coefficient at position \a row, \a col assuming that:
+      * - the nonzero does not already exist
+      * - the new coefficient is the last one of the given inner vector.
+      *
+      * \sa insert, insertBackByOuterInner */
+    inline Scalar& insertBack(Index row, Index col)
+    {
+      return insertBackByOuterInner(IsRowMajor?row:col, IsRowMajor?col:row);
+    }
+
+    /** \sa insertBack */
+    inline Scalar& insertBackByOuterInner(Index outer, Index inner)
+    {
+      eigen_assert(outer<Index(m_data.size()) && inner<m_innerSize && "out of range");
+      eigen_assert(((m_data[outer].size()==0) || (m_data[outer].index(m_data[outer].size()-1)<inner))
+                && "wrong sorted insertion");
+      m_data[outer].append(0, inner);
+      return m_data[outer].value(m_data[outer].size()-1);
+    }
+
+    inline Scalar& insert(Index row, Index col)
+    {
+      const Index outer = IsRowMajor ? row : col;
+      const Index inner = IsRowMajor ? col : row;
+
+      Index startId = 0;
+      Index id = static_cast<Index>(m_data[outer].size()) - 1;
+      m_data[outer].resize(id+2,1);
+
+      while ( (id >= startId) && (m_data[outer].index(id) > inner) )
+      {
+        m_data[outer].index(id+1) = m_data[outer].index(id);
+        m_data[outer].value(id+1) = m_data[outer].value(id);
+        --id;
+      }
+      m_data[outer].index(id+1) = inner;
+      m_data[outer].value(id+1) = 0;
+      return m_data[outer].value(id+1);
+    }
+
+    /** Does nothing: provided for compatibility with SparseMatrix */
+    inline void finalize() {}
+
+    /** Suppress all nonzeros which are smaller than \a reference under the tolerence \a epsilon */
+    void prune(Scalar reference, RealScalar epsilon = NumTraits<RealScalar>::dummy_precision())
+    {
+      for (Index j=0; j<outerSize(); ++j)
+        m_data[j].prune(reference,epsilon);
+    }
+
+    /** Resize the matrix without preserving the data (the matrix is set to zero)
+      */
+    void resize(Index rows, Index cols)
+    {
+      const Index outerSize = IsRowMajor ? rows : cols;
+      m_innerSize = convert_index(IsRowMajor ? cols : rows);
+      setZero();
+      if (Index(m_data.size()) != outerSize)
+      {
+        m_data.resize(outerSize);
+      }
+    }
+
+    void resizeAndKeepData(Index rows, Index cols)
+    {
+      const Index outerSize = IsRowMajor ? rows : cols;
+      const Index innerSize = IsRowMajor ? cols : rows;
+      if (m_innerSize>innerSize)
+      {
+        // remove all coefficients with innerCoord>=innerSize
+        // TODO
+        //std::cerr << "not implemented yet\n";
+        exit(2);
+      }
+      if (m_data.size() != outerSize)
+      {
+        m_data.resize(outerSize);
+      }
+    }
+
+    /** The class DynamicSparseMatrix is deprectaed */
+    EIGEN_DEPRECATED inline DynamicSparseMatrix()
+      : m_innerSize(0), m_data(0)
+    {
+      #ifdef EIGEN_SPARSE_CREATE_TEMPORARY_PLUGIN
+        EIGEN_SPARSE_CREATE_TEMPORARY_PLUGIN
+      #endif
+      eigen_assert(innerSize()==0 && outerSize()==0);
+    }
+
+    /** The class DynamicSparseMatrix is deprectaed */
+    EIGEN_DEPRECATED inline DynamicSparseMatrix(Index rows, Index cols)
+      : m_innerSize(0)
+    {
+      #ifdef EIGEN_SPARSE_CREATE_TEMPORARY_PLUGIN
+        EIGEN_SPARSE_CREATE_TEMPORARY_PLUGIN
+      #endif
+      resize(rows, cols);
+    }
+
+    /** The class DynamicSparseMatrix is deprectaed */
+    template<typename OtherDerived>
+    EIGEN_DEPRECATED explicit inline DynamicSparseMatrix(const SparseMatrixBase<OtherDerived>& other)
+      : m_innerSize(0)
+    {
+      #ifdef EIGEN_SPARSE_CREATE_TEMPORARY_PLUGIN
+        EIGEN_SPARSE_CREATE_TEMPORARY_PLUGIN
+      #endif
+      Base::operator=(other.derived());
+    }
+
+    inline DynamicSparseMatrix(const DynamicSparseMatrix& other)
+      : Base(), m_innerSize(0)
+    {
+      #ifdef EIGEN_SPARSE_CREATE_TEMPORARY_PLUGIN
+        EIGEN_SPARSE_CREATE_TEMPORARY_PLUGIN
+      #endif
+      *this = other.derived();
+    }
+
+    inline void swap(DynamicSparseMatrix& other)
+    {
+      //EIGEN_DBG_SPARSE(std::cout << "SparseMatrix:: swap\n");
+      std::swap(m_innerSize, other.m_innerSize);
+      //std::swap(m_outerSize, other.m_outerSize);
+      m_data.swap(other.m_data);
+    }
+
+    inline DynamicSparseMatrix& operator=(const DynamicSparseMatrix& other)
+    {
+      if (other.isRValue())
+      {
+        swap(other.const_cast_derived());
+      }
+      else
+      {
+        resize(other.rows(), other.cols());
+        m_data = other.m_data;
+      }
+      return *this;
+    }
+
+    /** Destructor */
+    inline ~DynamicSparseMatrix() {}
+
+  public:
+
+    /** \deprecated
+      * Set the matrix to zero and reserve the memory for \a reserveSize nonzero coefficients. */
+    EIGEN_DEPRECATED void startFill(Index reserveSize = 1000)
+    {
+      setZero();
+      reserve(reserveSize);
+    }
+
+    /** \deprecated use insert()
+      * inserts a nonzero coefficient at given coordinates \a row, \a col and returns its reference assuming that:
+      *  1 - the coefficient does not exist yet
+      *  2 - this the coefficient with greater inner coordinate for the given outer coordinate.
+      * In other words, assuming \c *this is column-major, then there must not exists any nonzero coefficient of coordinates
+      * \c i \c x \a col such that \c i >= \a row. Otherwise the matrix is invalid.
+      *
+      * \see fillrand(), coeffRef()
+      */
+    EIGEN_DEPRECATED Scalar& fill(Index row, Index col)
+    {
+      const Index outer = IsRowMajor ? row : col;
+      const Index inner = IsRowMajor ? col : row;
+      return insertBack(outer,inner);
+    }
+
+    /** \deprecated use insert()
+      * Like fill() but with random inner coordinates.
+      * Compared to the generic coeffRef(), the unique limitation is that we assume
+      * the coefficient does not exist yet.
+      */
+    EIGEN_DEPRECATED Scalar& fillrand(Index row, Index col)
+    {
+      return insert(row,col);
+    }
+
+    /** \deprecated use finalize()
+      * Does nothing. Provided for compatibility with SparseMatrix. */
+    EIGEN_DEPRECATED void endFill() {}
+    
+#   ifdef EIGEN_DYNAMICSPARSEMATRIX_PLUGIN
+#     include EIGEN_DYNAMICSPARSEMATRIX_PLUGIN
+#   endif
+ };
+
+template<typename Scalar, int _Options, typename _StorageIndex>
+class DynamicSparseMatrix<Scalar,_Options,_StorageIndex>::InnerIterator : public SparseVector<Scalar,_Options,_StorageIndex>::InnerIterator
+{
+    typedef typename SparseVector<Scalar,_Options,_StorageIndex>::InnerIterator Base;
+  public:
+    InnerIterator(const DynamicSparseMatrix& mat, Index outer)
+      : Base(mat.m_data[outer]), m_outer(outer)
+    {}
+
+    inline Index row() const { return IsRowMajor ? m_outer : Base::index(); }
+    inline Index col() const { return IsRowMajor ? Base::index() : m_outer; }
+    inline Index outer() const { return m_outer; }
+
+  protected:
+    const Index m_outer;
+};
+
+template<typename Scalar, int _Options, typename _StorageIndex>
+class DynamicSparseMatrix<Scalar,_Options,_StorageIndex>::ReverseInnerIterator : public SparseVector<Scalar,_Options,_StorageIndex>::ReverseInnerIterator
+{
+    typedef typename SparseVector<Scalar,_Options,_StorageIndex>::ReverseInnerIterator Base;
+  public:
+    ReverseInnerIterator(const DynamicSparseMatrix& mat, Index outer)
+      : Base(mat.m_data[outer]), m_outer(outer)
+    {}
+
+    inline Index row() const { return IsRowMajor ? m_outer : Base::index(); }
+    inline Index col() const { return IsRowMajor ? Base::index() : m_outer; }
+    inline Index outer() const { return m_outer; }
+
+  protected:
+    const Index m_outer;
+};
+
+namespace internal {
+
+template<typename _Scalar, int _Options, typename _StorageIndex>
+struct evaluator<DynamicSparseMatrix<_Scalar,_Options,_StorageIndex> >
+  : evaluator_base<DynamicSparseMatrix<_Scalar,_Options,_StorageIndex> >
+{
+  typedef _Scalar Scalar;
+  typedef DynamicSparseMatrix<_Scalar,_Options,_StorageIndex> SparseMatrixType;
+  typedef typename SparseMatrixType::InnerIterator InnerIterator;
+  typedef typename SparseMatrixType::ReverseInnerIterator ReverseInnerIterator;
+  
+  enum {
+    CoeffReadCost = NumTraits<_Scalar>::ReadCost,
+    Flags = SparseMatrixType::Flags
+  };
+  
+  evaluator() : m_matrix(0) {}
+  evaluator(const SparseMatrixType &mat) : m_matrix(&mat) {}
+  
+  operator SparseMatrixType&() { return m_matrix->const_cast_derived(); }
+  operator const SparseMatrixType&() const { return *m_matrix; }
+  
+  Scalar coeff(Index row, Index col) const { return m_matrix->coeff(row,col); }
+  
+  Index nonZerosEstimate() const { return m_matrix->nonZeros(); }
+
+  const SparseMatrixType *m_matrix;
+};
+
+}
+
+} // end namespace Eigen
+
+#endif // EIGEN_DYNAMIC_SPARSEMATRIX_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/SparseExtra/RandomSetter.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/SparseExtra/RandomSetter.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/SparseExtra/RandomSetter.h	(revision 3762)
@@ -0,0 +1,327 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2008 Gael Guennebaud <gael.guennebaud@inria.fr>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_RANDOMSETTER_H
+#define EIGEN_RANDOMSETTER_H
+
+namespace Eigen { 
+
+/** Represents a std::map
+  *
+  * \see RandomSetter
+  */
+template<typename Scalar> struct StdMapTraits
+{
+  typedef int KeyType;
+  typedef std::map<KeyType,Scalar> Type;
+  enum {
+    IsSorted = 1
+  };
+
+  static void setInvalidKey(Type&, const KeyType&) {}
+};
+
+#ifdef EIGEN_UNORDERED_MAP_SUPPORT
+/** Represents a std::unordered_map
+  *
+  * To use it you need to both define EIGEN_UNORDERED_MAP_SUPPORT and include the unordered_map header file
+  * yourself making sure that unordered_map is defined in the std namespace.
+  *
+  * For instance, with current version of gcc you can either enable C++0x standard (-std=c++0x) or do:
+  * \code
+  * #include <tr1/unordered_map>
+  * #define EIGEN_UNORDERED_MAP_SUPPORT
+  * namespace std {
+  *   using std::tr1::unordered_map;
+  * }
+  * \endcode
+  *
+  * \see RandomSetter
+  */
+template<typename Scalar> struct StdUnorderedMapTraits
+{
+  typedef int KeyType;
+  typedef std::unordered_map<KeyType,Scalar> Type;
+  enum {
+    IsSorted = 0
+  };
+
+  static void setInvalidKey(Type&, const KeyType&) {}
+};
+#endif // EIGEN_UNORDERED_MAP_SUPPORT
+
+#ifdef _DENSE_HASH_MAP_H_
+/** Represents a google::dense_hash_map
+  *
+  * \see RandomSetter
+  */
+template<typename Scalar> struct GoogleDenseHashMapTraits
+{
+  typedef int KeyType;
+  typedef google::dense_hash_map<KeyType,Scalar> Type;
+  enum {
+    IsSorted = 0
+  };
+
+  static void setInvalidKey(Type& map, const KeyType& k)
+  { map.set_empty_key(k); }
+};
+#endif
+
+#ifdef _SPARSE_HASH_MAP_H_
+/** Represents a google::sparse_hash_map
+  *
+  * \see RandomSetter
+  */
+template<typename Scalar> struct GoogleSparseHashMapTraits
+{
+  typedef int KeyType;
+  typedef google::sparse_hash_map<KeyType,Scalar> Type;
+  enum {
+    IsSorted = 0
+  };
+
+  static void setInvalidKey(Type&, const KeyType&) {}
+};
+#endif
+
+/** \class RandomSetter
+  *
+  * \brief The RandomSetter is a wrapper object allowing to set/update a sparse matrix with random access
+  *
+  * \tparam SparseMatrixType the type of the sparse matrix we are updating
+  * \tparam MapTraits a traits class representing the map implementation used for the temporary sparse storage.
+  *                  Its default value depends on the system.
+  * \tparam OuterPacketBits defines the number of rows (or columns) manage by a single map object
+  *                        as a power of two exponent.
+  *
+  * This class temporarily represents a sparse matrix object using a generic map implementation allowing for
+  * efficient random access. The conversion from the compressed representation to a hash_map object is performed
+  * in the RandomSetter constructor, while the sparse matrix is updated back at destruction time. This strategy
+  * suggest the use of nested blocks as in this example:
+  *
+  * \code
+  * SparseMatrix<double> m(rows,cols);
+  * {
+  *   RandomSetter<SparseMatrix<double> > w(m);
+  *   // don't use m but w instead with read/write random access to the coefficients:
+  *   for(;;)
+  *     w(rand(),rand()) = rand;
+  * }
+  * // when w is deleted, the data are copied back to m
+  * // and m is ready to use.
+  * \endcode
+  *
+  * Since hash_map objects are not fully sorted, representing a full matrix as a single hash_map would
+  * involve a big and costly sort to update the compressed matrix back. To overcome this issue, a RandomSetter
+  * use multiple hash_map, each representing 2^OuterPacketBits columns or rows according to the storage order.
+  * To reach optimal performance, this value should be adjusted according to the average number of nonzeros
+  * per rows/columns.
+  *
+  * The possible values for the template parameter MapTraits are:
+  *  - \b StdMapTraits: corresponds to std::map. (does not perform very well)
+  *  - \b GnuHashMapTraits: corresponds to __gnu_cxx::hash_map (available only with GCC)
+  *  - \b GoogleDenseHashMapTraits: corresponds to google::dense_hash_map (best efficiency, reasonable memory consumption)
+  *  - \b GoogleSparseHashMapTraits: corresponds to google::sparse_hash_map (best memory consumption, relatively good performance)
+  *
+  * The default map implementation depends on the availability, and the preferred order is:
+  * GoogleSparseHashMapTraits, GnuHashMapTraits, and finally StdMapTraits.
+  *
+  * For performance and memory consumption reasons it is highly recommended to use one of
+  * the Google's hash_map implementation. To enable the support for them, you have two options:
+  *  - \#include <google/dense_hash_map> yourself \b before Eigen/Sparse header
+  *  - define EIGEN_GOOGLEHASH_SUPPORT
+  * In the later case the inclusion of <google/dense_hash_map> is made for you.
+  *
+  * \see http://code.google.com/p/google-sparsehash/
+  */
+template<typename SparseMatrixType,
+         template <typename T> class MapTraits =
+#if defined _DENSE_HASH_MAP_H_
+          GoogleDenseHashMapTraits
+#elif defined _HASH_MAP
+          GnuHashMapTraits
+#else
+          StdMapTraits
+#endif
+         ,int OuterPacketBits = 6>
+class RandomSetter
+{
+    typedef typename SparseMatrixType::Scalar Scalar;
+    typedef typename SparseMatrixType::StorageIndex StorageIndex;
+
+    struct ScalarWrapper
+    {
+      ScalarWrapper() : value(0) {}
+      Scalar value;
+    };
+    typedef typename MapTraits<ScalarWrapper>::KeyType KeyType;
+    typedef typename MapTraits<ScalarWrapper>::Type HashMapType;
+    static const int OuterPacketMask = (1 << OuterPacketBits) - 1;
+    enum {
+      SwapStorage = 1 - MapTraits<ScalarWrapper>::IsSorted,
+      TargetRowMajor = (SparseMatrixType::Flags & RowMajorBit) ? 1 : 0,
+      SetterRowMajor = SwapStorage ? 1-TargetRowMajor : TargetRowMajor
+    };
+
+  public:
+
+    /** Constructs a random setter object from the sparse matrix \a target
+      *
+      * Note that the initial value of \a target are imported. If you want to re-set
+      * a sparse matrix from scratch, then you must set it to zero first using the
+      * setZero() function.
+      */
+    inline RandomSetter(SparseMatrixType& target)
+      : mp_target(&target)
+    {
+      const Index outerSize = SwapStorage ? target.innerSize() : target.outerSize();
+      const Index innerSize = SwapStorage ? target.outerSize() : target.innerSize();
+      m_outerPackets = outerSize >> OuterPacketBits;
+      if (outerSize&OuterPacketMask)
+        m_outerPackets += 1;
+      m_hashmaps = new HashMapType[m_outerPackets];
+      // compute number of bits needed to store inner indices
+      Index aux = innerSize - 1;
+      m_keyBitsOffset = 0;
+      while (aux)
+      {
+        ++m_keyBitsOffset;
+        aux = aux >> 1;
+      }
+      KeyType ik = (1<<(OuterPacketBits+m_keyBitsOffset));
+      for (Index k=0; k<m_outerPackets; ++k)
+        MapTraits<ScalarWrapper>::setInvalidKey(m_hashmaps[k],ik);
+
+      // insert current coeffs
+      for (Index j=0; j<mp_target->outerSize(); ++j)
+        for (typename SparseMatrixType::InnerIterator it(*mp_target,j); it; ++it)
+          (*this)(TargetRowMajor?j:it.index(), TargetRowMajor?it.index():j) = it.value();
+    }
+
+    /** Destructor updating back the sparse matrix target */
+    ~RandomSetter()
+    {
+      KeyType keyBitsMask = (1<<m_keyBitsOffset)-1;
+      if (!SwapStorage) // also means the map is sorted
+      {
+        mp_target->setZero();
+        mp_target->makeCompressed();
+        mp_target->reserve(nonZeros());
+        Index prevOuter = -1;
+        for (Index k=0; k<m_outerPackets; ++k)
+        {
+          const Index outerOffset = (1<<OuterPacketBits) * k;
+          typename HashMapType::iterator end = m_hashmaps[k].end();
+          for (typename HashMapType::iterator it = m_hashmaps[k].begin(); it!=end; ++it)
+          {
+            const Index outer = (it->first >> m_keyBitsOffset) + outerOffset;
+            const Index inner = it->first & keyBitsMask;
+            if (prevOuter!=outer)
+            {
+              for (Index j=prevOuter+1;j<=outer;++j)
+                mp_target->startVec(j);
+              prevOuter = outer;
+            }
+            mp_target->insertBackByOuterInner(outer, inner) = it->second.value;
+          }
+        }
+        mp_target->finalize();
+      }
+      else
+      {
+        VectorXi positions(mp_target->outerSize());
+        positions.setZero();
+        // pass 1
+        for (Index k=0; k<m_outerPackets; ++k)
+        {
+          typename HashMapType::iterator end = m_hashmaps[k].end();
+          for (typename HashMapType::iterator it = m_hashmaps[k].begin(); it!=end; ++it)
+          {
+            const Index outer = it->first & keyBitsMask;
+            ++positions[outer];
+          }
+        }
+        // prefix sum
+        Index count = 0;
+        for (Index j=0; j<mp_target->outerSize(); ++j)
+        {
+          Index tmp = positions[j];
+          mp_target->outerIndexPtr()[j] = count;
+          positions[j] = count;
+          count += tmp;
+        }
+        mp_target->makeCompressed();
+        mp_target->outerIndexPtr()[mp_target->outerSize()] = count;
+        mp_target->resizeNonZeros(count);
+        // pass 2
+        for (Index k=0; k<m_outerPackets; ++k)
+        {
+          const Index outerOffset = (1<<OuterPacketBits) * k;
+          typename HashMapType::iterator end = m_hashmaps[k].end();
+          for (typename HashMapType::iterator it = m_hashmaps[k].begin(); it!=end; ++it)
+          {
+            const Index inner = (it->first >> m_keyBitsOffset) + outerOffset;
+            const Index outer = it->first & keyBitsMask;
+            // sorted insertion
+            // Note that we have to deal with at most 2^OuterPacketBits unsorted coefficients,
+            // moreover those 2^OuterPacketBits coeffs are likely to be sparse, an so only a
+            // small fraction of them have to be sorted, whence the following simple procedure:
+            Index posStart = mp_target->outerIndexPtr()[outer];
+            Index i = (positions[outer]++) - 1;
+            while ( (i >= posStart) && (mp_target->innerIndexPtr()[i] > inner) )
+            {
+              mp_target->valuePtr()[i+1] = mp_target->valuePtr()[i];
+              mp_target->innerIndexPtr()[i+1] = mp_target->innerIndexPtr()[i];
+              --i;
+            }
+            mp_target->innerIndexPtr()[i+1] = inner;
+            mp_target->valuePtr()[i+1] = it->second.value;
+          }
+        }
+      }
+      delete[] m_hashmaps;
+    }
+
+    /** \returns a reference to the coefficient at given coordinates \a row, \a col */
+    Scalar& operator() (Index row, Index col)
+    {
+      const Index outer = SetterRowMajor ? row : col;
+      const Index inner = SetterRowMajor ? col : row;
+      const Index outerMajor = outer >> OuterPacketBits; // index of the packet/map
+      const Index outerMinor = outer & OuterPacketMask;  // index of the inner vector in the packet
+      const KeyType key = internal::convert_index<KeyType>((outerMinor<<m_keyBitsOffset) | inner);
+      return m_hashmaps[outerMajor][key].value;
+    }
+
+    /** \returns the number of non zero coefficients
+      *
+      * \note According to the underlying map/hash_map implementation,
+      * this function might be quite expensive.
+      */
+    Index nonZeros() const
+    {
+      Index nz = 0;
+      for (Index k=0; k<m_outerPackets; ++k)
+        nz += static_cast<Index>(m_hashmaps[k].size());
+      return nz;
+    }
+
+
+  protected:
+
+    HashMapType* m_hashmaps;
+    SparseMatrixType* mp_target;
+    Index m_outerPackets;
+    unsigned char m_keyBitsOffset;
+};
+
+} // end namespace Eigen
+
+#endif // EIGEN_RANDOMSETTER_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/SparseExtra/MarketIO.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/SparseExtra/MarketIO.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/SparseExtra/MarketIO.h	(revision 3762)
@@ -0,0 +1,275 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2011 Gael Guennebaud <gael.guennebaud@inria.fr>
+// Copyright (C) 2012 Desire NUENTSA WAKAM <desire.nuentsa_wakam@inria.fr>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_SPARSE_MARKET_IO_H
+#define EIGEN_SPARSE_MARKET_IO_H
+
+#include <iostream>
+
+namespace Eigen { 
+
+namespace internal 
+{
+  template <typename Scalar,typename IndexType>
+  inline bool GetMarketLine (std::stringstream& line, IndexType& M, IndexType& N, IndexType& i, IndexType& j, Scalar& value)
+  {
+    line >> i >> j >> value;
+    i--;
+    j--;
+    if(i>=0 && j>=0 && i<M && j<N)
+    {
+      return true; 
+    }
+    else
+      return false;
+  }
+  template <typename Scalar,typename IndexType>
+  inline bool GetMarketLine (std::stringstream& line, IndexType& M, IndexType& N, IndexType& i, IndexType& j, std::complex<Scalar>& value)
+  {
+    Scalar valR, valI;
+    line >> i >> j >> valR >> valI;
+    i--;
+    j--;
+    if(i>=0 && j>=0 && i<M && j<N)
+    {
+      value = std::complex<Scalar>(valR, valI);
+      return true; 
+    }
+    else
+      return false;
+  }
+
+  template <typename RealScalar>
+  inline void  GetVectorElt (const std::string& line, RealScalar& val)
+  {
+    std::istringstream newline(line);
+    newline >> val;  
+  }
+
+  template <typename RealScalar>
+  inline void GetVectorElt (const std::string& line, std::complex<RealScalar>& val)
+  {
+    RealScalar valR, valI; 
+    std::istringstream newline(line);
+    newline >> valR >> valI; 
+    val = std::complex<RealScalar>(valR, valI);
+  }
+  
+  template<typename Scalar>
+  inline void putMarketHeader(std::string& header,int sym)
+  {
+    header= "%%MatrixMarket matrix coordinate ";
+    if(internal::is_same<Scalar, std::complex<float> >::value || internal::is_same<Scalar, std::complex<double> >::value)
+    {
+      header += " complex"; 
+      if(sym == Symmetric) header += " symmetric";
+      else if (sym == SelfAdjoint) header += " Hermitian";
+      else header += " general";
+    }
+    else
+    {
+      header += " real"; 
+      if(sym == Symmetric) header += " symmetric";
+      else header += " general";
+    }
+  }
+
+  template<typename Scalar>
+  inline void PutMatrixElt(Scalar value, int row, int col, std::ofstream& out)
+  {
+    out << row << " "<< col << " " << value << "\n";
+  }
+  template<typename Scalar>
+  inline void PutMatrixElt(std::complex<Scalar> value, int row, int col, std::ofstream& out)
+  {
+    out << row << " " << col << " " << value.real() << " " << value.imag() << "\n";
+  }
+
+
+  template<typename Scalar>
+  inline void putVectorElt(Scalar value, std::ofstream& out)
+  {
+    out << value << "\n"; 
+  }
+  template<typename Scalar>
+  inline void putVectorElt(std::complex<Scalar> value, std::ofstream& out)
+  {
+    out << value.real << " " << value.imag()<< "\n"; 
+  }
+
+} // end namepsace internal
+
+inline bool getMarketHeader(const std::string& filename, int& sym, bool& iscomplex, bool& isvector)
+{
+  sym = 0; 
+  iscomplex = false;
+  isvector = false;
+  std::ifstream in(filename.c_str(),std::ios::in);
+  if(!in)
+    return false;
+  
+  std::string line; 
+  // The matrix header is always the first line in the file 
+  std::getline(in, line); eigen_assert(in.good());
+  
+  std::stringstream fmtline(line); 
+  std::string substr[5];
+  fmtline>> substr[0] >> substr[1] >> substr[2] >> substr[3] >> substr[4];
+  if(substr[2].compare("array") == 0) isvector = true;
+  if(substr[3].compare("complex") == 0) iscomplex = true;
+  if(substr[4].compare("symmetric") == 0) sym = Symmetric;
+  else if (substr[4].compare("Hermitian") == 0) sym = SelfAdjoint;
+  
+  return true;
+}
+  
+template<typename SparseMatrixType>
+bool loadMarket(SparseMatrixType& mat, const std::string& filename)
+{
+  typedef typename SparseMatrixType::Scalar Scalar;
+  typedef typename SparseMatrixType::StorageIndex StorageIndex;
+  std::ifstream input(filename.c_str(),std::ios::in);
+  if(!input)
+    return false;
+  
+  const int maxBuffersize = 2048;
+  char buffer[maxBuffersize];
+  
+  bool readsizes = false;
+
+  typedef Triplet<Scalar,StorageIndex> T;
+  std::vector<T> elements;
+  
+  StorageIndex M(-1), N(-1), NNZ(-1);
+  StorageIndex count = 0;
+  while(input.getline(buffer, maxBuffersize))
+  {
+    // skip comments   
+    //NOTE An appropriate test should be done on the header to get the  symmetry
+    if(buffer[0]=='%')
+      continue;
+    
+    std::stringstream line(buffer);
+    
+    if(!readsizes)
+    {
+      line >> M >> N >> NNZ;
+      if(M > 0 && N > 0 && NNZ > 0) 
+      {
+        readsizes = true;
+        //std::cout << "sizes: " << M << "," << N << "," << NNZ << "\n";
+        mat.resize(M,N);
+        mat.reserve(NNZ);
+      }
+    }
+    else
+    { 
+      StorageIndex i(-1), j(-1);
+      Scalar value; 
+      if( internal::GetMarketLine(line, M, N, i, j, value) ) 
+      {
+        ++ count;
+        elements.push_back(T(i,j,value));
+      }
+      else 
+        std::cerr << "Invalid read: " << i << "," << j << "\n";        
+    }
+  }
+  mat.setFromTriplets(elements.begin(), elements.end());
+  if(count!=NNZ)
+    std::cerr << count << "!=" << NNZ << "\n";
+  
+  input.close();
+  return true;
+}
+
+template<typename VectorType>
+bool loadMarketVector(VectorType& vec, const std::string& filename)
+{
+   typedef typename VectorType::Scalar Scalar;
+  std::ifstream in(filename.c_str(), std::ios::in);
+  if(!in)
+    return false;
+  
+  std::string line; 
+  int n(0), col(0); 
+  do 
+  { // Skip comments
+    std::getline(in, line); eigen_assert(in.good());
+  } while (line[0] == '%');
+  std::istringstream newline(line);
+  newline  >> n >> col; 
+  eigen_assert(n>0 && col>0);
+  vec.resize(n);
+  int i = 0; 
+  Scalar value; 
+  while ( std::getline(in, line) && (i < n) ){
+    internal::GetVectorElt(line, value); 
+    vec(i++) = value; 
+  }
+  in.close();
+  if (i!=n){
+    std::cerr<< "Unable to read all elements from file " << filename << "\n";
+    return false;
+  }
+  return true;
+}
+
+template<typename SparseMatrixType>
+bool saveMarket(const SparseMatrixType& mat, const std::string& filename, int sym = 0)
+{
+  typedef typename SparseMatrixType::Scalar Scalar;
+  std::ofstream out(filename.c_str(),std::ios::out);
+  if(!out)
+    return false;
+  
+  out.flags(std::ios_base::scientific);
+  out.precision(64);
+  std::string header; 
+  internal::putMarketHeader<Scalar>(header, sym); 
+  out << header << std::endl; 
+  out << mat.rows() << " " << mat.cols() << " " << mat.nonZeros() << "\n";
+  int count = 0;
+  for(int j=0; j<mat.outerSize(); ++j)
+    for(typename SparseMatrixType::InnerIterator it(mat,j); it; ++it)
+    {
+      ++ count;
+      internal::PutMatrixElt(it.value(), it.row()+1, it.col()+1, out);
+      // out << it.row()+1 << " " << it.col()+1 << " " << it.value() << "\n";
+    }
+  out.close();
+  return true;
+}
+
+template<typename VectorType>
+bool saveMarketVector (const VectorType& vec, const std::string& filename)
+{
+ typedef typename VectorType::Scalar Scalar; 
+ std::ofstream out(filename.c_str(),std::ios::out);
+  if(!out)
+    return false;
+  
+  out.flags(std::ios_base::scientific);
+  out.precision(64);
+  if(internal::is_same<Scalar, std::complex<float> >::value || internal::is_same<Scalar, std::complex<double> >::value)
+      out << "%%MatrixMarket matrix array complex general\n"; 
+  else
+    out << "%%MatrixMarket matrix array real general\n"; 
+  out << vec.size() << " "<< 1 << "\n";
+  for (int i=0; i < vec.size(); i++){
+    internal::putVectorElt(vec(i), out); 
+  }
+  out.close();
+  return true; 
+}
+
+} // end namespace Eigen
+
+#endif // EIGEN_SPARSE_MARKET_IO_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/SparseExtra/BlockSparseMatrix.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/SparseExtra/BlockSparseMatrix.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/SparseExtra/BlockSparseMatrix.h	(revision 3762)
@@ -0,0 +1,1079 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2013 Desire Nuentsa <desire.nuentsa_wakam@inria.fr>
+// Copyright (C) 2013 Gael Guennebaud <gael.guennebaud@inria.fr>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_SPARSEBLOCKMATRIX_H
+#define EIGEN_SPARSEBLOCKMATRIX_H
+
+namespace Eigen { 
+/** \ingroup SparseCore_Module
+  *
+  * \class BlockSparseMatrix
+  *
+  * \brief A versatile sparse matrix representation where each element is a block
+  *
+  * This class provides routines to manipulate block sparse matrices stored in a
+  * BSR-like representation. There are two main types :
+  *
+  * 1. All blocks have the same number of rows and columns, called block size
+  * in the following. In this case, if this block size is known at compile time,
+  * it can be given as a template parameter like
+  * \code
+  * BlockSparseMatrix<Scalar, 3, ColMajor> bmat(b_rows, b_cols);
+  * \endcode
+  * Here, bmat is a b_rows x b_cols block sparse matrix
+  * where each coefficient is a 3x3 dense matrix.
+  * If the block size is fixed but will be given at runtime,
+  * \code
+  * BlockSparseMatrix<Scalar, Dynamic, ColMajor> bmat(b_rows, b_cols);
+  * bmat.setBlockSize(block_size);
+  * \endcode
+  *
+  * 2. The second case is for variable-block sparse matrices.
+  * Here each block has its own dimensions. The only restriction is that all the blocks
+  * in a row (resp. a column) should have the same number of rows (resp. of columns).
+  * It is thus required in this case to describe the layout of the matrix by calling
+  * setBlockLayout(rowBlocks, colBlocks).
+  *
+  * In any of the previous case, the matrix can be filled by calling setFromTriplets().
+  * A regular sparse matrix can be converted to a block sparse matrix and vice versa.
+  * It is obviously required to describe the block layout beforehand by calling either
+  * setBlockSize() for fixed-size blocks or setBlockLayout for variable-size blocks.
+  *
+  * \tparam _Scalar The Scalar type
+  * \tparam _BlockAtCompileTime The block layout option. It takes the following values
+  * Dynamic : block size known at runtime
+  * a numeric number : fixed-size block known at compile time
+  */
+template<typename _Scalar, int _BlockAtCompileTime=Dynamic, int _Options=ColMajor, typename _StorageIndex=int> class BlockSparseMatrix;
+
+template<typename BlockSparseMatrixT> class BlockSparseMatrixView;
+
+namespace internal {
+template<typename _Scalar, int _BlockAtCompileTime, int _Options, typename _Index>
+struct traits<BlockSparseMatrix<_Scalar,_BlockAtCompileTime,_Options, _Index> >
+{
+  typedef _Scalar Scalar;
+  typedef _Index Index;
+  typedef Sparse StorageKind; // FIXME Where is it used ??
+  typedef MatrixXpr XprKind;
+  enum {
+    RowsAtCompileTime = Dynamic,
+    ColsAtCompileTime = Dynamic,
+    MaxRowsAtCompileTime = Dynamic,
+    MaxColsAtCompileTime = Dynamic,
+    BlockSize = _BlockAtCompileTime,
+    Flags = _Options | NestByRefBit | LvalueBit,
+    CoeffReadCost = NumTraits<Scalar>::ReadCost,
+    SupportedAccessPatterns = InnerRandomAccessPattern
+  };
+};
+template<typename BlockSparseMatrixT>
+struct traits<BlockSparseMatrixView<BlockSparseMatrixT> >
+{
+  typedef Ref<Matrix<typename BlockSparseMatrixT::Scalar, BlockSparseMatrixT::BlockSize, BlockSparseMatrixT::BlockSize> > Scalar;
+  typedef Ref<Matrix<typename BlockSparseMatrixT::RealScalar, BlockSparseMatrixT::BlockSize, BlockSparseMatrixT::BlockSize> > RealScalar;
+
+};
+
+// Function object to sort a triplet list
+template<typename Iterator, bool IsColMajor>
+struct TripletComp
+{
+  typedef typename Iterator::value_type Triplet;
+  bool operator()(const Triplet& a, const Triplet& b)
+  { if(IsColMajor)
+      return ((a.col() == b.col() && a.row() < b.row()) || (a.col() < b.col()));
+    else
+      return ((a.row() == b.row() && a.col() < b.col()) || (a.row() < b.row()));
+  }
+};
+} // end namespace internal
+
+
+/* Proxy to view the block sparse matrix as a regular sparse matrix */
+template<typename BlockSparseMatrixT>
+class BlockSparseMatrixView : public SparseMatrixBase<BlockSparseMatrixT>
+{
+  public:
+    typedef Ref<typename BlockSparseMatrixT::BlockScalar> Scalar;
+    typedef Ref<typename BlockSparseMatrixT::BlockRealScalar> RealScalar;
+    typedef typename BlockSparseMatrixT::Index Index;
+    typedef  BlockSparseMatrixT Nested;
+    enum {
+      Flags = BlockSparseMatrixT::Options,
+      Options = BlockSparseMatrixT::Options,
+      RowsAtCompileTime = BlockSparseMatrixT::RowsAtCompileTime,
+      ColsAtCompileTime = BlockSparseMatrixT::ColsAtCompileTime,
+      MaxColsAtCompileTime = BlockSparseMatrixT::MaxColsAtCompileTime,
+      MaxRowsAtCompileTime = BlockSparseMatrixT::MaxRowsAtCompileTime
+    };
+  public:
+    BlockSparseMatrixView(const BlockSparseMatrixT& spblockmat)
+     : m_spblockmat(spblockmat)
+    {}
+
+    Index outerSize() const
+    {
+      return (Flags&RowMajorBit) == 1 ? this->rows() : this->cols();
+    }
+    Index cols() const
+    {
+      return m_spblockmat.blockCols();
+    }
+    Index rows() const
+    {
+      return m_spblockmat.blockRows();
+    }
+    Scalar coeff(Index row, Index col)
+    {
+      return m_spblockmat.coeff(row, col);
+    }
+    Scalar coeffRef(Index row, Index col)
+    {
+      return m_spblockmat.coeffRef(row, col);
+    }
+    // Wrapper to iterate over all blocks
+    class InnerIterator : public BlockSparseMatrixT::BlockInnerIterator
+    {
+      public:
+      InnerIterator(const BlockSparseMatrixView& mat, Index outer)
+          : BlockSparseMatrixT::BlockInnerIterator(mat.m_spblockmat, outer)
+      {}
+
+    };
+
+  protected:
+    const BlockSparseMatrixT& m_spblockmat;
+};
+
+// Proxy to view a regular vector as a block vector
+template<typename BlockSparseMatrixT, typename VectorType>
+class BlockVectorView
+{
+  public:
+    enum {
+      BlockSize = BlockSparseMatrixT::BlockSize,
+      ColsAtCompileTime = VectorType::ColsAtCompileTime,
+      RowsAtCompileTime = VectorType::RowsAtCompileTime,
+      Flags = VectorType::Flags
+    };
+    typedef Ref<const Matrix<typename BlockSparseMatrixT::Scalar, (RowsAtCompileTime==1)? 1 : BlockSize, (ColsAtCompileTime==1)? 1 : BlockSize> >Scalar;
+    typedef typename BlockSparseMatrixT::Index Index;
+  public:
+    BlockVectorView(const BlockSparseMatrixT& spblockmat, const VectorType& vec)
+    : m_spblockmat(spblockmat),m_vec(vec)
+    { }
+    inline Index cols() const
+    {
+      return m_vec.cols();
+    }
+    inline Index size() const
+    {
+      return m_spblockmat.blockRows();
+    }
+    inline Scalar coeff(Index bi) const
+    {
+      Index startRow = m_spblockmat.blockRowsIndex(bi);
+      Index rowSize = m_spblockmat.blockRowsIndex(bi+1) - startRow;
+      return m_vec.middleRows(startRow, rowSize);
+    }
+    inline Scalar coeff(Index bi, Index j) const
+    {
+      Index startRow = m_spblockmat.blockRowsIndex(bi);
+      Index rowSize = m_spblockmat.blockRowsIndex(bi+1) - startRow;
+      return m_vec.block(startRow, j, rowSize, 1);
+    }
+  protected:
+    const BlockSparseMatrixT& m_spblockmat;
+    const VectorType& m_vec;
+};
+
+template<typename VectorType, typename Index> class BlockVectorReturn;
+
+
+// Proxy to view a regular vector as a block vector
+template<typename BlockSparseMatrixT, typename VectorType>
+class BlockVectorReturn
+{
+  public:
+    enum {
+      ColsAtCompileTime = VectorType::ColsAtCompileTime,
+      RowsAtCompileTime = VectorType::RowsAtCompileTime,
+      Flags = VectorType::Flags
+    };
+    typedef Ref<Matrix<typename VectorType::Scalar, RowsAtCompileTime, ColsAtCompileTime> > Scalar;
+    typedef typename BlockSparseMatrixT::Index Index;
+  public:
+    BlockVectorReturn(const BlockSparseMatrixT& spblockmat, VectorType& vec)
+    : m_spblockmat(spblockmat),m_vec(vec)
+    { }
+    inline Index size() const
+    {
+      return m_spblockmat.blockRows();
+    }
+    inline Scalar coeffRef(Index bi)
+    {
+      Index startRow = m_spblockmat.blockRowsIndex(bi);
+      Index rowSize = m_spblockmat.blockRowsIndex(bi+1) - startRow;
+      return m_vec.middleRows(startRow, rowSize);
+    }
+    inline Scalar coeffRef(Index bi, Index j)
+    {
+      Index startRow = m_spblockmat.blockRowsIndex(bi);
+      Index rowSize = m_spblockmat.blockRowsIndex(bi+1) - startRow;
+      return m_vec.block(startRow, j, rowSize, 1);
+    }
+
+  protected:
+    const BlockSparseMatrixT& m_spblockmat;
+    VectorType& m_vec;
+};
+
+// Block version of the sparse dense product
+template<typename Lhs, typename Rhs>
+class BlockSparseTimeDenseProduct;
+
+namespace internal {
+
+template<typename BlockSparseMatrixT, typename VecType>
+struct traits<BlockSparseTimeDenseProduct<BlockSparseMatrixT, VecType> >
+{
+  typedef Dense StorageKind;
+  typedef MatrixXpr XprKind;
+  typedef typename BlockSparseMatrixT::Scalar Scalar;
+  typedef typename BlockSparseMatrixT::Index Index;
+  enum {
+    RowsAtCompileTime = Dynamic,
+    ColsAtCompileTime = Dynamic,
+    MaxRowsAtCompileTime = Dynamic,
+    MaxColsAtCompileTime = Dynamic,
+    Flags = 0,
+    CoeffReadCost = internal::traits<BlockSparseMatrixT>::CoeffReadCost
+  };
+};
+} // end namespace internal
+
+template<typename Lhs, typename Rhs>
+class BlockSparseTimeDenseProduct
+  : public ProductBase<BlockSparseTimeDenseProduct<Lhs,Rhs>, Lhs, Rhs>
+{
+  public:
+    EIGEN_PRODUCT_PUBLIC_INTERFACE(BlockSparseTimeDenseProduct)
+
+    BlockSparseTimeDenseProduct(const Lhs& lhs, const Rhs& rhs) : Base(lhs,rhs)
+    {}
+
+    template<typename Dest> void scaleAndAddTo(Dest& dest, const typename Rhs::Scalar& alpha) const
+    {
+      BlockVectorReturn<Lhs,Dest> tmpDest(m_lhs, dest);
+      internal::sparse_time_dense_product( BlockSparseMatrixView<Lhs>(m_lhs),  BlockVectorView<Lhs, Rhs>(m_lhs, m_rhs), tmpDest, alpha);
+    }
+
+  private:
+    BlockSparseTimeDenseProduct& operator=(const BlockSparseTimeDenseProduct&);
+};
+
+template<typename _Scalar, int _BlockAtCompileTime, int _Options, typename _StorageIndex>
+class BlockSparseMatrix : public SparseMatrixBase<BlockSparseMatrix<_Scalar,_BlockAtCompileTime, _Options,_StorageIndex> >
+{
+  public:
+    typedef _Scalar Scalar;
+    typedef typename NumTraits<Scalar>::Real RealScalar;
+    typedef _StorageIndex StorageIndex;
+    typedef typename internal::ref_selector<BlockSparseMatrix<_Scalar, _BlockAtCompileTime, _Options, _StorageIndex> >::type Nested;
+
+    enum {
+      Options = _Options,
+      Flags = Options,
+      BlockSize=_BlockAtCompileTime,
+      RowsAtCompileTime = Dynamic,
+      ColsAtCompileTime = Dynamic,
+      MaxRowsAtCompileTime = Dynamic,
+      MaxColsAtCompileTime = Dynamic,
+      IsVectorAtCompileTime = 0,
+      IsColMajor = Flags&RowMajorBit ? 0 : 1
+    };
+    typedef Matrix<Scalar, _BlockAtCompileTime, _BlockAtCompileTime,IsColMajor ? ColMajor : RowMajor> BlockScalar;
+    typedef Matrix<RealScalar, _BlockAtCompileTime, _BlockAtCompileTime,IsColMajor ? ColMajor : RowMajor> BlockRealScalar;
+    typedef typename internal::conditional<_BlockAtCompileTime==Dynamic, Scalar, BlockScalar>::type BlockScalarReturnType;
+    typedef BlockSparseMatrix<Scalar, BlockSize, IsColMajor ? ColMajor : RowMajor, StorageIndex> PlainObject;
+  public:
+    // Default constructor
+    BlockSparseMatrix()
+    : m_innerBSize(0),m_outerBSize(0),m_innerOffset(0),m_outerOffset(0),
+      m_nonzerosblocks(0),m_values(0),m_blockPtr(0),m_indices(0),
+      m_outerIndex(0),m_blockSize(BlockSize)
+    { }
+
+
+    /**
+     * \brief Construct and resize
+     *
+     */
+    BlockSparseMatrix(Index brow, Index bcol)
+      : m_innerBSize(IsColMajor ? brow : bcol),
+        m_outerBSize(IsColMajor ? bcol : brow),
+        m_innerOffset(0),m_outerOffset(0),m_nonzerosblocks(0),
+        m_values(0),m_blockPtr(0),m_indices(0),
+        m_outerIndex(0),m_blockSize(BlockSize)
+    { }
+
+    /**
+     * \brief Copy-constructor
+     */
+    BlockSparseMatrix(const BlockSparseMatrix& other)
+      : m_innerBSize(other.m_innerBSize),m_outerBSize(other.m_outerBSize),
+        m_nonzerosblocks(other.m_nonzerosblocks),m_nonzeros(other.m_nonzeros),
+        m_blockPtr(0),m_blockSize(other.m_blockSize)
+    {
+      // should we allow copying between variable-size blocks and fixed-size blocks ??
+      eigen_assert(m_blockSize == BlockSize && " CAN NOT COPY BETWEEN FIXED-SIZE AND VARIABLE-SIZE BLOCKS");
+
+      std::copy(other.m_innerOffset, other.m_innerOffset+m_innerBSize+1, m_innerOffset);
+      std::copy(other.m_outerOffset, other.m_outerOffset+m_outerBSize+1, m_outerOffset);
+      std::copy(other.m_values, other.m_values+m_nonzeros, m_values);
+
+      if(m_blockSize != Dynamic)
+        std::copy(other.m_blockPtr, other.m_blockPtr+m_nonzerosblocks, m_blockPtr);
+
+      std::copy(other.m_indices, other.m_indices+m_nonzerosblocks, m_indices);
+      std::copy(other.m_outerIndex, other.m_outerIndex+m_outerBSize, m_outerIndex);
+    }
+
+    friend void swap(BlockSparseMatrix& first, BlockSparseMatrix& second)
+    {
+      std::swap(first.m_innerBSize, second.m_innerBSize);
+      std::swap(first.m_outerBSize, second.m_outerBSize);
+      std::swap(first.m_innerOffset, second.m_innerOffset);
+      std::swap(first.m_outerOffset, second.m_outerOffset);
+      std::swap(first.m_nonzerosblocks, second.m_nonzerosblocks);
+      std::swap(first.m_nonzeros, second.m_nonzeros);
+      std::swap(first.m_values, second.m_values);
+      std::swap(first.m_blockPtr, second.m_blockPtr);
+      std::swap(first.m_indices, second.m_indices);
+      std::swap(first.m_outerIndex, second.m_outerIndex);
+      std::swap(first.m_BlockSize, second.m_blockSize);
+    }
+
+    BlockSparseMatrix& operator=(BlockSparseMatrix other)
+    {
+      //Copy-and-swap paradigm ... avoid leaked data if thrown
+      swap(*this, other);
+      return *this;
+    }
+
+    // Destructor
+    ~BlockSparseMatrix()
+    {
+      delete[] m_outerIndex;
+      delete[] m_innerOffset;
+      delete[] m_outerOffset;
+      delete[] m_indices;
+      delete[] m_blockPtr;
+      delete[] m_values;
+    }
+
+
+    /**
+      * \brief Constructor from a sparse matrix
+      *
+      */
+    template<typename MatrixType>
+    inline BlockSparseMatrix(const MatrixType& spmat) : m_blockSize(BlockSize)
+    {
+      EIGEN_STATIC_ASSERT((m_blockSize != Dynamic), THIS_METHOD_IS_ONLY_FOR_FIXED_SIZE);
+
+      *this = spmat;
+    }
+
+    /**
+      * \brief Assignment from a sparse matrix with the same storage order
+      *
+      * Convert from a sparse matrix to block sparse matrix.
+      * \warning Before calling this function, tt is necessary to call
+      * either setBlockLayout() (matrices with variable-size blocks)
+      * or setBlockSize() (for fixed-size blocks).
+      */
+    template<typename MatrixType>
+    inline BlockSparseMatrix& operator=(const MatrixType& spmat)
+    {
+      eigen_assert((m_innerBSize != 0 && m_outerBSize != 0)
+                   && "Trying to assign to a zero-size matrix, call resize() first");
+      eigen_assert(((MatrixType::Options&RowMajorBit) != IsColMajor) && "Wrong storage order");
+      typedef SparseMatrix<bool,MatrixType::Options,typename MatrixType::Index> MatrixPatternType;
+      MatrixPatternType  blockPattern(blockRows(), blockCols());
+      m_nonzeros = 0;
+
+      // First, compute the number of nonzero blocks and their locations
+      for(StorageIndex bj = 0; bj < m_outerBSize; ++bj)
+      {
+        // Browse each outer block and compute the structure
+        std::vector<bool> nzblocksFlag(m_innerBSize,false);  // Record the existing blocks
+        blockPattern.startVec(bj);
+        for(StorageIndex j = blockOuterIndex(bj); j < blockOuterIndex(bj+1); ++j)
+        {
+          typename MatrixType::InnerIterator it_spmat(spmat, j);
+          for(; it_spmat; ++it_spmat)
+          {
+            StorageIndex bi = innerToBlock(it_spmat.index()); // Index of the current nonzero block
+            if(!nzblocksFlag[bi])
+            {
+              // Save the index of this nonzero block
+              nzblocksFlag[bi] = true;
+              blockPattern.insertBackByOuterInnerUnordered(bj, bi) = true;
+              // Compute the total number of nonzeros (including explicit zeros in blocks)
+              m_nonzeros += blockOuterSize(bj) * blockInnerSize(bi);
+            }
+          }
+        } // end current outer block
+      }
+      blockPattern.finalize();
+
+      // Allocate the internal arrays
+      setBlockStructure(blockPattern);
+
+      for(StorageIndex nz = 0; nz < m_nonzeros; ++nz) m_values[nz] = Scalar(0);
+      for(StorageIndex bj = 0; bj < m_outerBSize; ++bj)
+      {
+        // Now copy the values
+        for(StorageIndex j = blockOuterIndex(bj); j < blockOuterIndex(bj+1); ++j)
+        {
+          // Browse the outer block column by column (for column-major matrices)
+          typename MatrixType::InnerIterator it_spmat(spmat, j);
+          for(; it_spmat; ++it_spmat)
+          {
+            StorageIndex idx = 0; // Position of this block in the column block
+            StorageIndex bi = innerToBlock(it_spmat.index()); // Index of the current nonzero block
+            // Go to the inner block where this element belongs to
+            while(bi > m_indices[m_outerIndex[bj]+idx]) ++idx; // Not expensive for ordered blocks
+            StorageIndex idxVal;// Get the right position in the array of values for this element
+            if(m_blockSize == Dynamic)
+            {
+              // Offset from all blocks before ...
+              idxVal =  m_blockPtr[m_outerIndex[bj]+idx];
+              // ... and offset inside the block
+              idxVal += (j - blockOuterIndex(bj)) * blockOuterSize(bj) + it_spmat.index() - m_innerOffset[bi];
+            }
+            else
+            {
+              // All blocks before
+              idxVal = (m_outerIndex[bj] + idx) * m_blockSize * m_blockSize;
+              // inside the block
+              idxVal += (j - blockOuterIndex(bj)) * m_blockSize + (it_spmat.index()%m_blockSize);
+            }
+            // Insert the value
+            m_values[idxVal] = it_spmat.value();
+          } // end of this column
+        } // end of this block
+      } // end of this outer block
+
+      return *this;
+    }
+
+    /**
+      * \brief Set the nonzero block pattern of the matrix
+      *
+      * Given a sparse matrix describing the nonzero block pattern,
+      * this function prepares the internal pointers for values.
+      * After calling this function, any *nonzero* block (bi, bj) can be set
+      * with a simple call to coeffRef(bi,bj).
+      *
+      *
+      * \warning Before calling this function, tt is necessary to call
+      * either setBlockLayout() (matrices with variable-size blocks)
+      * or setBlockSize() (for fixed-size blocks).
+      *
+      * \param blockPattern Sparse matrix of boolean elements describing the block structure
+      *
+      * \sa setBlockLayout() \sa setBlockSize()
+      */
+    template<typename MatrixType>
+    void setBlockStructure(const MatrixType& blockPattern)
+    {
+      resize(blockPattern.rows(), blockPattern.cols());
+      reserve(blockPattern.nonZeros());
+
+      // Browse the block pattern and set up the various pointers
+      m_outerIndex[0] = 0;
+      if(m_blockSize == Dynamic) m_blockPtr[0] = 0;
+      for(StorageIndex nz = 0; nz < m_nonzeros; ++nz) m_values[nz] = Scalar(0);
+      for(StorageIndex bj = 0; bj < m_outerBSize; ++bj)
+      {
+        //Browse each outer block
+
+        //First, copy and save the indices of nonzero blocks
+        //FIXME : find a way to avoid this ...
+        std::vector<int> nzBlockIdx;
+        typename MatrixType::InnerIterator it(blockPattern, bj);
+        for(; it; ++it)
+        {
+          nzBlockIdx.push_back(it.index());
+        }
+        std::sort(nzBlockIdx.begin(), nzBlockIdx.end());
+
+        // Now, fill block indices and (eventually) pointers to blocks
+        for(StorageIndex idx = 0; idx < nzBlockIdx.size(); ++idx)
+        {
+          StorageIndex offset = m_outerIndex[bj]+idx; // offset in m_indices
+          m_indices[offset] = nzBlockIdx[idx];
+          if(m_blockSize == Dynamic)
+            m_blockPtr[offset] = m_blockPtr[offset-1] + blockInnerSize(nzBlockIdx[idx]) * blockOuterSize(bj);
+          // There is no blockPtr for fixed-size blocks... not needed !???
+        }
+        // Save the pointer to the next outer block
+        m_outerIndex[bj+1] = m_outerIndex[bj] + nzBlockIdx.size();
+      }
+    }
+
+    /**
+      * \brief Set the number of rows and columns blocks
+      */
+    inline void resize(Index brow, Index bcol)
+    {
+      m_innerBSize = IsColMajor ? brow : bcol;
+      m_outerBSize = IsColMajor ? bcol : brow;
+    }
+
+    /**
+      * \brief set the block size at runtime for fixed-size block layout
+      *
+      * Call this only for fixed-size blocks
+      */
+    inline void setBlockSize(Index blockSize)
+    {
+      m_blockSize = blockSize;
+    }
+
+    /**
+      * \brief Set the row and column block layouts,
+      *
+      * This function set the size of each row and column block.
+      * So this function should be used only for blocks with variable size.
+      * \param rowBlocks : Number of rows per row block
+      * \param colBlocks : Number of columns per column block
+      * \sa resize(), setBlockSize()
+      */
+    inline void setBlockLayout(const VectorXi& rowBlocks, const VectorXi& colBlocks)
+    {
+      const VectorXi& innerBlocks = IsColMajor ? rowBlocks : colBlocks;
+      const VectorXi& outerBlocks = IsColMajor ? colBlocks : rowBlocks;
+      eigen_assert(m_innerBSize == innerBlocks.size() && "CHECK THE NUMBER OF ROW OR COLUMN BLOCKS");
+      eigen_assert(m_outerBSize == outerBlocks.size() && "CHECK THE NUMBER OF ROW OR COLUMN BLOCKS");
+      m_outerBSize = outerBlocks.size();
+      //  starting index of blocks... cumulative sums
+      m_innerOffset = new StorageIndex[m_innerBSize+1];
+      m_outerOffset = new StorageIndex[m_outerBSize+1];
+      m_innerOffset[0] = 0;
+      m_outerOffset[0] = 0;
+      std::partial_sum(&innerBlocks[0], &innerBlocks[m_innerBSize-1]+1, &m_innerOffset[1]);
+      std::partial_sum(&outerBlocks[0], &outerBlocks[m_outerBSize-1]+1, &m_outerOffset[1]);
+
+      // Compute the total number of nonzeros
+      m_nonzeros = 0;
+      for(StorageIndex bj = 0; bj < m_outerBSize; ++bj)
+        for(StorageIndex bi = 0; bi < m_innerBSize; ++bi)
+          m_nonzeros += outerBlocks[bj] * innerBlocks[bi];
+
+    }
+
+    /**
+      * \brief Allocate the internal array of pointers to blocks and their inner indices
+      *
+      * \note For fixed-size blocks, call setBlockSize() to set the block.
+      * And For variable-size blocks, call setBlockLayout() before using this function
+      *
+      * \param nonzerosblocks Number of nonzero blocks. The total number of nonzeros is
+      * is computed in setBlockLayout() for variable-size blocks
+      * \sa setBlockSize()
+      */
+    inline void reserve(const Index nonzerosblocks)
+    {
+      eigen_assert((m_innerBSize != 0 && m_outerBSize != 0) &&
+          "TRYING TO RESERVE ZERO-SIZE MATRICES, CALL resize() first");
+
+      //FIXME Should free if already allocated
+      m_outerIndex = new StorageIndex[m_outerBSize+1];
+
+      m_nonzerosblocks = nonzerosblocks;
+      if(m_blockSize != Dynamic)
+      {
+        m_nonzeros = nonzerosblocks * (m_blockSize * m_blockSize);
+        m_blockPtr = 0;
+      }
+      else
+      {
+        // m_nonzeros  is already computed in setBlockLayout()
+        m_blockPtr = new StorageIndex[m_nonzerosblocks+1];
+      }
+      m_indices = new StorageIndex[m_nonzerosblocks+1];
+      m_values = new Scalar[m_nonzeros];
+    }
+
+
+    /**
+      * \brief Fill values in a matrix  from a triplet list.
+      *
+      * Each triplet item has a block stored in an Eigen dense matrix.
+      * The InputIterator class should provide the functions row(), col() and value()
+      *
+      * \note For fixed-size blocks, call setBlockSize() before this function.
+      *
+      * FIXME Do not accept duplicates
+      */
+    template<typename InputIterator>
+    void setFromTriplets(const InputIterator& begin, const InputIterator& end)
+    {
+      eigen_assert((m_innerBSize!=0 && m_outerBSize !=0) && "ZERO BLOCKS, PLEASE CALL resize() before");
+
+      /* First, sort the triplet list
+        * FIXME This can be unnecessarily expensive since only the inner indices have to be sorted
+        * The best approach is like in SparseMatrix::setFromTriplets()
+        */
+      internal::TripletComp<InputIterator, IsColMajor> tripletcomp;
+      std::sort(begin, end, tripletcomp);
+
+      /* Count the number of rows and column blocks,
+       * and the number of nonzero blocks per outer dimension
+       */
+      VectorXi rowBlocks(m_innerBSize); // Size of each block row
+      VectorXi colBlocks(m_outerBSize); // Size of each block column
+      rowBlocks.setZero(); colBlocks.setZero();
+      VectorXi nzblock_outer(m_outerBSize); // Number of nz blocks per outer vector
+      VectorXi nz_outer(m_outerBSize); // Number of nz per outer vector...for variable-size blocks
+      nzblock_outer.setZero();
+      nz_outer.setZero();
+      for(InputIterator it(begin); it !=end; ++it)
+      {
+        eigen_assert(it->row() >= 0 && it->row() < this->blockRows() && it->col() >= 0 && it->col() < this->blockCols());
+        eigen_assert((it->value().rows() == it->value().cols() && (it->value().rows() == m_blockSize))
+                     || (m_blockSize == Dynamic));
+
+        if(m_blockSize == Dynamic)
+        {
+          eigen_assert((rowBlocks[it->row()] == 0 || rowBlocks[it->row()] == it->value().rows()) &&
+              "NON CORRESPONDING SIZES FOR ROW BLOCKS");
+          eigen_assert((colBlocks[it->col()] == 0 || colBlocks[it->col()] == it->value().cols()) &&
+              "NON CORRESPONDING SIZES FOR COLUMN BLOCKS");
+          rowBlocks[it->row()] =it->value().rows();
+          colBlocks[it->col()] = it->value().cols();
+        }
+        nz_outer(IsColMajor ? it->col() : it->row()) += it->value().rows() * it->value().cols();
+        nzblock_outer(IsColMajor ? it->col() : it->row())++;
+      }
+      // Allocate member arrays
+      if(m_blockSize == Dynamic) setBlockLayout(rowBlocks, colBlocks);
+      StorageIndex nzblocks = nzblock_outer.sum();
+      reserve(nzblocks);
+
+       // Temporary markers
+      VectorXi block_id(m_outerBSize); // To be used as a block marker during insertion
+
+      // Setup outer index pointers and markers
+      m_outerIndex[0] = 0;
+      if (m_blockSize == Dynamic)  m_blockPtr[0] =  0;
+      for(StorageIndex bj = 0; bj < m_outerBSize; ++bj)
+      {
+        m_outerIndex[bj+1] = m_outerIndex[bj] + nzblock_outer(bj);
+        block_id(bj) = m_outerIndex[bj];
+        if(m_blockSize==Dynamic)
+        {
+          m_blockPtr[m_outerIndex[bj+1]] = m_blockPtr[m_outerIndex[bj]] + nz_outer(bj);
+        }
+      }
+
+      // Fill the matrix
+      for(InputIterator it(begin); it!=end; ++it)
+      {
+        StorageIndex outer = IsColMajor ? it->col() : it->row();
+        StorageIndex inner = IsColMajor ? it->row() : it->col();
+        m_indices[block_id(outer)] = inner;
+        StorageIndex block_size = it->value().rows()*it->value().cols();
+        StorageIndex nz_marker = blockPtr(block_id[outer]);
+        memcpy(&(m_values[nz_marker]), it->value().data(), block_size * sizeof(Scalar));
+        if(m_blockSize == Dynamic)
+        {
+          m_blockPtr[block_id(outer)+1] = m_blockPtr[block_id(outer)] + block_size;
+        }
+        block_id(outer)++;
+      }
+
+      // An alternative when the outer indices are sorted...no need to use an array of markers
+//      for(Index bcol = 0; bcol < m_outerBSize; ++bcol)
+//      {
+//      Index id = 0, id_nz = 0, id_nzblock = 0;
+//      for(InputIterator it(begin); it!=end; ++it)
+//      {
+//        while (id<bcol) // one pass should do the job unless there are empty columns
+//        {
+//          id++;
+//          m_outerIndex[id+1]=m_outerIndex[id];
+//        }
+//        m_outerIndex[id+1] += 1;
+//        m_indices[id_nzblock]=brow;
+//        Index block_size = it->value().rows()*it->value().cols();
+//        m_blockPtr[id_nzblock+1] = m_blockPtr[id_nzblock] + block_size;
+//        id_nzblock++;
+//        memcpy(&(m_values[id_nz]),it->value().data(), block_size*sizeof(Scalar));
+//        id_nz += block_size;
+//      }
+//      while(id < m_outerBSize-1) // Empty columns at the end
+//      {
+//        id++;
+//        m_outerIndex[id+1]=m_outerIndex[id];
+//      }
+//      }
+    }
+
+
+    /**
+      * \returns the number of rows
+      */
+    inline Index rows() const
+    {
+//      return blockRows();
+      return (IsColMajor ? innerSize() : outerSize());
+    }
+
+    /**
+      * \returns the number of cols
+      */
+    inline Index cols() const
+    {
+//      return blockCols();
+      return (IsColMajor ? outerSize() : innerSize());
+    }
+
+    inline Index innerSize() const
+    {
+      if(m_blockSize == Dynamic) return m_innerOffset[m_innerBSize];
+      else return  (m_innerBSize * m_blockSize) ;
+    }
+
+    inline Index outerSize() const
+    {
+      if(m_blockSize == Dynamic) return m_outerOffset[m_outerBSize];
+      else return  (m_outerBSize * m_blockSize) ;
+    }
+    /** \returns the number of rows grouped by blocks */
+    inline Index blockRows() const
+    {
+      return (IsColMajor ? m_innerBSize : m_outerBSize);
+    }
+    /** \returns the number of columns grouped by blocks */
+    inline Index blockCols() const
+    {
+      return (IsColMajor ? m_outerBSize : m_innerBSize);
+    }
+
+    inline Index outerBlocks() const { return m_outerBSize; }
+    inline Index innerBlocks() const { return m_innerBSize; }
+
+    /** \returns the block index where outer belongs to */
+    inline Index outerToBlock(Index outer) const
+    {
+      eigen_assert(outer < outerSize() && "OUTER INDEX OUT OF BOUNDS");
+
+      if(m_blockSize != Dynamic)
+        return (outer / m_blockSize); // Integer division
+
+      StorageIndex b_outer = 0;
+      while(m_outerOffset[b_outer] <= outer) ++b_outer;
+      return b_outer - 1;
+    }
+    /** \returns  the block index where inner belongs to */
+    inline Index innerToBlock(Index inner) const
+    {
+      eigen_assert(inner < innerSize() && "OUTER INDEX OUT OF BOUNDS");
+
+      if(m_blockSize != Dynamic)
+        return (inner / m_blockSize); // Integer division
+
+      StorageIndex b_inner = 0;
+      while(m_innerOffset[b_inner] <= inner) ++b_inner;
+      return b_inner - 1;
+    }
+
+    /**
+      *\returns a reference to the (i,j) block as an Eigen Dense Matrix
+      */
+    Ref<BlockScalar> coeffRef(Index brow, Index bcol)
+    {
+      eigen_assert(brow < blockRows() && "BLOCK ROW INDEX OUT OF BOUNDS");
+      eigen_assert(bcol < blockCols() && "BLOCK nzblocksFlagCOLUMN OUT OF BOUNDS");
+
+      StorageIndex rsize = IsColMajor ? blockInnerSize(brow): blockOuterSize(bcol);
+      StorageIndex csize = IsColMajor ? blockOuterSize(bcol) : blockInnerSize(brow);
+      StorageIndex inner = IsColMajor ? brow : bcol;
+      StorageIndex outer = IsColMajor ? bcol : brow;
+      StorageIndex offset = m_outerIndex[outer];
+      while(offset < m_outerIndex[outer+1] && m_indices[offset] != inner)
+        offset++;
+      if(m_indices[offset] == inner)
+      {
+        return Map<BlockScalar>(&(m_values[blockPtr(offset)]), rsize, csize);
+      }
+      else
+      {
+        //FIXME the block does not exist, Insert it !!!!!!!!!
+        eigen_assert("DYNAMIC INSERTION IS NOT YET SUPPORTED");
+      }
+    }
+
+    /**
+      * \returns the value of the (i,j) block as an Eigen Dense Matrix
+      */
+    Map<const BlockScalar> coeff(Index brow, Index bcol) const
+    {
+      eigen_assert(brow < blockRows() && "BLOCK ROW INDEX OUT OF BOUNDS");
+      eigen_assert(bcol < blockCols() && "BLOCK COLUMN OUT OF BOUNDS");
+
+      StorageIndex rsize = IsColMajor ? blockInnerSize(brow): blockOuterSize(bcol);
+      StorageIndex csize = IsColMajor ? blockOuterSize(bcol) : blockInnerSize(brow);
+      StorageIndex inner = IsColMajor ? brow : bcol;
+      StorageIndex outer = IsColMajor ? bcol : brow;
+      StorageIndex offset = m_outerIndex[outer];
+      while(offset < m_outerIndex[outer+1] && m_indices[offset] != inner) offset++;
+      if(m_indices[offset] == inner)
+      {
+        return Map<const BlockScalar> (&(m_values[blockPtr(offset)]), rsize, csize);
+      }
+      else
+//        return BlockScalar::Zero(rsize, csize);
+        eigen_assert("NOT YET SUPPORTED");
+    }
+
+    // Block Matrix times vector product
+    template<typename VecType>
+    BlockSparseTimeDenseProduct<BlockSparseMatrix, VecType> operator*(const VecType& lhs) const
+    {
+      return BlockSparseTimeDenseProduct<BlockSparseMatrix, VecType>(*this, lhs);
+    }
+
+    /** \returns the number of nonzero blocks */
+    inline Index nonZerosBlocks() const { return m_nonzerosblocks; }
+    /** \returns the total number of nonzero elements, including eventual explicit zeros in blocks */
+    inline Index nonZeros() const { return m_nonzeros; }
+
+    inline BlockScalarReturnType *valuePtr() {return static_cast<BlockScalarReturnType *>(m_values);}
+//    inline Scalar *valuePtr(){ return m_values; }
+    inline StorageIndex *innerIndexPtr() {return m_indices; }
+    inline const StorageIndex *innerIndexPtr() const {return m_indices; }
+    inline StorageIndex *outerIndexPtr() {return m_outerIndex; }
+    inline const StorageIndex* outerIndexPtr() const {return m_outerIndex; }
+
+    /** \brief for compatibility purposes with the SparseMatrix class */
+    inline bool isCompressed() const {return true;}
+    /**
+      * \returns the starting index of the bi row block
+      */
+    inline Index blockRowsIndex(Index bi) const
+    {
+      return IsColMajor ? blockInnerIndex(bi) : blockOuterIndex(bi);
+    }
+
+    /**
+      * \returns the starting index of the bj col block
+      */
+    inline Index blockColsIndex(Index bj) const
+    {
+      return IsColMajor ? blockOuterIndex(bj) : blockInnerIndex(bj);
+    }
+
+    inline Index blockOuterIndex(Index bj) const
+    {
+      return (m_blockSize == Dynamic) ? m_outerOffset[bj] : (bj * m_blockSize);
+    }
+    inline Index blockInnerIndex(Index bi) const
+    {
+      return (m_blockSize == Dynamic) ? m_innerOffset[bi] : (bi * m_blockSize);
+    }
+
+    // Not needed ???
+    inline Index blockInnerSize(Index bi) const
+    {
+      return (m_blockSize == Dynamic) ? (m_innerOffset[bi+1] - m_innerOffset[bi]) : m_blockSize;
+    }
+    inline Index blockOuterSize(Index bj) const
+    {
+      return (m_blockSize == Dynamic) ? (m_outerOffset[bj+1]- m_outerOffset[bj]) : m_blockSize;
+    }
+
+    /**
+      * \brief Browse the matrix by outer index
+      */
+    class InnerIterator; // Browse column by column
+
+    /**
+      * \brief Browse the matrix by block outer index
+      */
+    class BlockInnerIterator; // Browse block by block
+
+    friend std::ostream & operator << (std::ostream & s, const BlockSparseMatrix& m)
+    {
+      for (StorageIndex j = 0; j < m.outerBlocks(); ++j)
+      {
+        BlockInnerIterator itb(m, j);
+        for(; itb; ++itb)
+        {
+          s << "("<<itb.row() << ", " << itb.col() << ")\n";
+          s << itb.value() <<"\n";
+        }
+      }
+      s << std::endl;
+      return s;
+    }
+
+    /**
+      * \returns the starting position of the block \p id in the array of values
+      */
+    Index blockPtr(Index id) const
+    {
+      if(m_blockSize == Dynamic) return m_blockPtr[id];
+      else return id * m_blockSize * m_blockSize;
+      //return blockDynIdx(id, typename internal::conditional<(BlockSize==Dynamic), internal::true_type, internal::false_type>::type());
+    }
+
+
+  protected:
+//    inline Index blockDynIdx(Index id, internal::true_type) const
+//    {
+//      return m_blockPtr[id];
+//    }
+//    inline Index blockDynIdx(Index id, internal::false_type) const
+//    {
+//      return id * BlockSize * BlockSize;
+//    }
+
+    // To be implemented
+    // Insert a block at a particular location... need to make a room for that
+    Map<BlockScalar> insert(Index brow, Index bcol);
+
+    Index m_innerBSize; // Number of block rows
+    Index m_outerBSize; // Number of block columns
+    StorageIndex *m_innerOffset; // Starting index of each inner block (size m_innerBSize+1)
+    StorageIndex *m_outerOffset; // Starting index of each outer block (size m_outerBSize+1)
+    Index m_nonzerosblocks; // Total nonzeros blocks (lower than  m_innerBSize x m_outerBSize)
+    Index m_nonzeros; // Total nonzeros elements
+    Scalar *m_values; //Values stored block column after block column (size m_nonzeros)
+    StorageIndex *m_blockPtr; // Pointer to the beginning of each block in m_values, size m_nonzeroblocks ... null for fixed-size blocks
+    StorageIndex *m_indices; //Inner block indices, size m_nonzerosblocks ... OK
+    StorageIndex *m_outerIndex; // Starting pointer of each block column in m_indices (size m_outerBSize)... OK
+    Index m_blockSize; // Size of a block for fixed-size blocks, otherwise -1
+};
+
+template<typename _Scalar, int _BlockAtCompileTime, int _Options, typename _StorageIndex>
+class BlockSparseMatrix<_Scalar, _BlockAtCompileTime, _Options, _StorageIndex>::BlockInnerIterator
+{
+  public:
+
+    enum{
+      Flags = _Options
+    };
+
+    BlockInnerIterator(const BlockSparseMatrix& mat, const Index outer)
+    : m_mat(mat),m_outer(outer),
+      m_id(mat.m_outerIndex[outer]),
+      m_end(mat.m_outerIndex[outer+1])
+    {
+    }
+
+    inline BlockInnerIterator& operator++() {m_id++; return *this; }
+
+    inline const Map<const BlockScalar> value() const
+    {
+      return Map<const BlockScalar>(&(m_mat.m_values[m_mat.blockPtr(m_id)]),
+          rows(),cols());
+    }
+    inline Map<BlockScalar> valueRef()
+    {
+      return Map<BlockScalar>(&(m_mat.m_values[m_mat.blockPtr(m_id)]),
+          rows(),cols());
+    }
+    // Block inner index
+    inline Index index() const {return m_mat.m_indices[m_id]; }
+    inline Index outer() const { return m_outer; }
+    // block row index
+    inline Index row() const  {return index(); }
+    // block column index
+    inline Index col() const {return outer(); }
+    // FIXME Number of rows in the current block
+    inline Index rows() const { return (m_mat.m_blockSize==Dynamic) ? (m_mat.m_innerOffset[index()+1] - m_mat.m_innerOffset[index()]) : m_mat.m_blockSize; }
+    // Number of columns in the current block ...
+    inline Index cols() const { return (m_mat.m_blockSize==Dynamic) ? (m_mat.m_outerOffset[m_outer+1]-m_mat.m_outerOffset[m_outer]) : m_mat.m_blockSize;}
+    inline operator bool() const { return (m_id < m_end); }
+
+  protected:
+    const BlockSparseMatrix<_Scalar, _BlockAtCompileTime, _Options, StorageIndex>& m_mat;
+    const Index m_outer;
+    Index m_id;
+    Index m_end;
+};
+
+template<typename _Scalar, int _BlockAtCompileTime, int _Options, typename _StorageIndex>
+class BlockSparseMatrix<_Scalar, _BlockAtCompileTime, _Options, _StorageIndex>::InnerIterator
+{
+  public:
+    InnerIterator(const BlockSparseMatrix& mat, Index outer)
+    : m_mat(mat),m_outerB(mat.outerToBlock(outer)),m_outer(outer),
+      itb(mat, mat.outerToBlock(outer)),
+      m_offset(outer - mat.blockOuterIndex(m_outerB))
+     {
+        if (itb)
+        {
+          m_id = m_mat.blockInnerIndex(itb.index());
+          m_start = m_id;
+          m_end = m_mat.blockInnerIndex(itb.index()+1);
+        }
+     }
+    inline InnerIterator& operator++()
+    {
+      m_id++;
+      if (m_id >= m_end)
+      {
+        ++itb;
+        if (itb)
+        {
+          m_id = m_mat.blockInnerIndex(itb.index());
+          m_start = m_id;
+          m_end = m_mat.blockInnerIndex(itb.index()+1);
+        }
+      }
+      return *this;
+    }
+    inline const Scalar& value() const
+    {
+      return itb.value().coeff(m_id - m_start, m_offset);
+    }
+    inline Scalar& valueRef()
+    {
+      return itb.valueRef().coeff(m_id - m_start, m_offset);
+    }
+    inline Index index() const { return m_id; }
+    inline Index outer() const {return m_outer; }
+    inline Index col() const {return outer(); }
+    inline Index row() const { return index();}
+    inline operator bool() const
+    {
+      return itb;
+    }
+  protected:
+    const BlockSparseMatrix& m_mat;
+    const Index m_outer;
+    const Index m_outerB;
+    BlockInnerIterator itb; // Iterator through the blocks
+    const Index m_offset; // Position of this column in the block
+    Index m_start; // starting inner index of this block
+    Index m_id; // current inner index in the block
+    Index m_end; // starting inner index of the next block
+
+};
+} // end namespace Eigen
+
+#endif // EIGEN_SPARSEBLOCKMATRIX_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/SparseExtra/MatrixMarketIterator.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/SparseExtra/MatrixMarketIterator.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/SparseExtra/MatrixMarketIterator.h	(revision 3762)
@@ -0,0 +1,249 @@
+
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2012 Desire NUENTSA WAKAM <desire.nuentsa_wakam@inria.fr>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_BROWSE_MATRICES_H
+#define EIGEN_BROWSE_MATRICES_H
+
+namespace Eigen {
+
+enum {
+  SPD = 0x100,
+  NonSymmetric = 0x0
+};
+
+/**
+ * @brief Iterator to browse matrices from a specified folder
+ *
+ * This is used to load all the matrices from a folder.
+ * The matrices should be in Matrix Market format
+ * It is assumed that the matrices are named as matname.mtx
+ * and matname_SPD.mtx if the matrix is Symmetric and positive definite (or Hermitian)
+ * The right hand side vectors are loaded as well, if they exist.
+ * They should be named as matname_b.mtx.
+ * Note that the right hand side for a SPD matrix is named as matname_SPD_b.mtx
+ *
+ * Sometimes a reference solution is available. In this case, it should be named as matname_x.mtx
+ *
+ * Sample code
+ * \code
+ *
+ * \endcode
+ *
+ * \tparam Scalar The scalar type
+ */
+template <typename Scalar>
+class MatrixMarketIterator
+{
+    typedef typename NumTraits<Scalar>::Real RealScalar;
+  public:
+    typedef Matrix<Scalar,Dynamic,1> VectorType;
+    typedef SparseMatrix<Scalar,ColMajor> MatrixType;
+
+  public:
+    MatrixMarketIterator(const std::string &folder)
+      : m_sym(0), m_isvalid(false), m_matIsLoaded(false), m_hasRhs(false), m_hasrefX(false), m_folder(folder)
+    {
+      m_folder_id = opendir(folder.c_str());
+      if(m_folder_id)
+        Getnextvalidmatrix();
+    }
+
+    ~MatrixMarketIterator()
+    {
+      if (m_folder_id) closedir(m_folder_id);
+    }
+
+    inline MatrixMarketIterator& operator++()
+    {
+      m_matIsLoaded = false;
+      m_hasrefX = false;
+      m_hasRhs = false;
+      Getnextvalidmatrix();
+      return *this;
+    }
+    inline operator bool() const { return m_isvalid;}
+
+    /** Return the sparse matrix corresponding to the current file */
+    inline MatrixType& matrix()
+    {
+      // Read the matrix
+      if (m_matIsLoaded) return m_mat;
+
+      std::string matrix_file = m_folder + "/" + m_matname + ".mtx";
+      if ( !loadMarket(m_mat, matrix_file))
+      {
+        std::cerr << "Warning loadMarket failed when loading \"" << matrix_file << "\"" << std::endl;
+        m_matIsLoaded = false;
+        return m_mat;
+      }
+      m_matIsLoaded = true;
+
+      if (m_sym != NonSymmetric)
+      {
+        // Check whether we need to restore a full matrix:
+        RealScalar diag_norm  = m_mat.diagonal().norm();
+        RealScalar lower_norm = m_mat.template triangularView<Lower>().norm();
+        RealScalar upper_norm = m_mat.template triangularView<Upper>().norm();
+        if(lower_norm>diag_norm && upper_norm==diag_norm)
+        {
+          // only the lower part is stored
+          MatrixType tmp(m_mat);
+          m_mat = tmp.template selfadjointView<Lower>();
+        }
+        else if(upper_norm>diag_norm && lower_norm==diag_norm)
+        {
+          // only the upper part is stored
+          MatrixType tmp(m_mat);
+          m_mat = tmp.template selfadjointView<Upper>();
+        }
+      }
+      return m_mat;
+    }
+
+    /** Return the right hand side corresponding to the current matrix.
+     * If the rhs file is not provided, a random rhs is generated
+     */
+    inline VectorType& rhs()
+    {
+       // Get the right hand side
+      if (m_hasRhs) return m_rhs;
+
+      std::string rhs_file;
+      rhs_file = m_folder + "/" + m_matname + "_b.mtx"; // The pattern is matname_b.mtx
+      m_hasRhs = Fileexists(rhs_file);
+      if (m_hasRhs)
+      {
+        m_rhs.resize(m_mat.cols());
+        m_hasRhs = loadMarketVector(m_rhs, rhs_file);
+      }
+      if (!m_hasRhs)
+      {
+        // Generate a random right hand side
+        if (!m_matIsLoaded) this->matrix();
+        m_refX.resize(m_mat.cols());
+        m_refX.setRandom();
+        m_rhs = m_mat * m_refX;
+        m_hasrefX = true;
+        m_hasRhs = true;
+      }
+      return m_rhs;
+    }
+
+    /** Return a reference solution
+     * If it is not provided and if the right hand side is not available
+     * then refX is randomly generated such that A*refX = b
+     * where A and b are the matrix and the rhs.
+     * Note that when a rhs is provided, refX is not available
+     */
+    inline VectorType& refX()
+    {
+      // Check if a reference solution is provided
+      if (m_hasrefX) return m_refX;
+
+      std::string lhs_file;
+      lhs_file = m_folder + "/" + m_matname + "_x.mtx";
+      m_hasrefX = Fileexists(lhs_file);
+      if (m_hasrefX)
+      {
+        m_refX.resize(m_mat.cols());
+        m_hasrefX = loadMarketVector(m_refX, lhs_file);
+      }
+      else
+        m_refX.resize(0);
+      return m_refX;
+    }
+
+    inline std::string& matname() { return m_matname; }
+
+    inline int sym() { return m_sym; }
+
+    bool hasRhs() {return m_hasRhs; }
+    bool hasrefX() {return m_hasrefX; }
+    bool isFolderValid() { return bool(m_folder_id); }
+
+  protected:
+
+    inline bool Fileexists(std::string file)
+    {
+      std::ifstream file_id(file.c_str());
+      if (!file_id.good() )
+      {
+        return false;
+      }
+      else
+      {
+        file_id.close();
+        return true;
+      }
+    }
+
+    void Getnextvalidmatrix( )
+    {
+      m_isvalid = false;
+      // Here, we return with the next valid matrix in the folder
+      while ( (m_curs_id = readdir(m_folder_id)) != NULL) {
+        m_isvalid = false;
+        std::string curfile;
+        curfile = m_folder + "/" + m_curs_id->d_name;
+        // Discard if it is a folder
+#if !(defined(__sun) || defined(_AIX) || defined(__hpux) || defined(__sgi) || defined(__HAIKU__))
+        if (m_curs_id->d_type == DT_DIR) continue; //FIXME This may not be available on non BSD systems
+#endif
+//         struct stat st_buf;
+//         stat (curfile.c_str(), &st_buf);
+//         if (S_ISDIR(st_buf.st_mode)) continue;
+
+        // Determine from the header if it is a matrix or a right hand side
+        bool isvector,iscomplex=false;
+        if(!getMarketHeader(curfile,m_sym,iscomplex,isvector)) continue;
+        if(isvector) continue;
+        if (!iscomplex)
+        {
+          if(internal::is_same<Scalar, std::complex<float> >::value || internal::is_same<Scalar, std::complex<double> >::value)
+            continue;
+        }
+        if (iscomplex)
+        {
+          if(internal::is_same<Scalar, float>::value || internal::is_same<Scalar, double>::value)
+            continue;
+        }
+
+
+        // Get the matrix name
+        std::string filename = m_curs_id->d_name;
+        m_matname = filename.substr(0, filename.length()-4);
+
+        // Find if the matrix is SPD
+        size_t found = m_matname.find("SPD");
+        if( (found!=std::string::npos) && (m_sym != NonSymmetric) )
+          m_sym = SPD;
+
+        m_isvalid = true;
+        break;
+      }
+    }
+    int m_sym; // Symmetry of the matrix
+    MatrixType m_mat; // Current matrix
+    VectorType m_rhs;  // Current vector
+    VectorType m_refX; // The reference solution, if exists
+    std::string m_matname; // Matrix Name
+    bool m_isvalid;
+    bool m_matIsLoaded; // Determine if the matrix has already been loaded from the file
+    bool m_hasRhs; // The right hand side exists
+    bool m_hasrefX; // A reference solution is provided
+    std::string m_folder;
+    DIR * m_folder_id;
+    struct dirent *m_curs_id;
+
+};
+
+} // end namespace Eigen
+
+#endif
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/MoreVectorization/MathFunctions.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/MoreVectorization/MathFunctions.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/MoreVectorization/MathFunctions.h	(revision 3762)
@@ -0,0 +1,95 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2009 Rohit Garg <rpg.314@gmail.com>
+// Copyright (C) 2009 Benoit Jacob <jacob.benoit.1@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_MOREVECTORIZATION_MATHFUNCTIONS_H
+#define EIGEN_MOREVECTORIZATION_MATHFUNCTIONS_H
+
+namespace Eigen { 
+
+namespace internal {
+
+/** \internal \returns the arcsin of \a a (coeff-wise) */
+template<typename Packet> inline static Packet pasin(Packet a) { return std::asin(a); }
+
+#ifdef EIGEN_VECTORIZE_SSE
+
+template<> EIGEN_DONT_INLINE Packet4f pasin(Packet4f x)
+{
+  _EIGEN_DECLARE_CONST_Packet4f(half, 0.5);
+  _EIGEN_DECLARE_CONST_Packet4f(minus_half, -0.5);
+  _EIGEN_DECLARE_CONST_Packet4f(3half, 1.5);
+
+  _EIGEN_DECLARE_CONST_Packet4f_FROM_INT(sign_mask, 0x80000000);
+
+  _EIGEN_DECLARE_CONST_Packet4f(pi, 3.141592654);
+  _EIGEN_DECLARE_CONST_Packet4f(pi_over_2, 3.141592654*0.5);
+
+  _EIGEN_DECLARE_CONST_Packet4f(asin1, 4.2163199048E-2);
+  _EIGEN_DECLARE_CONST_Packet4f(asin2, 2.4181311049E-2);
+  _EIGEN_DECLARE_CONST_Packet4f(asin3, 4.5470025998E-2);
+  _EIGEN_DECLARE_CONST_Packet4f(asin4, 7.4953002686E-2);
+  _EIGEN_DECLARE_CONST_Packet4f(asin5, 1.6666752422E-1);
+
+  Packet4f a = pabs(x);//got the absolute value
+
+  Packet4f sign_bit= _mm_and_ps(x, p4f_sign_mask);//extracted the sign bit
+
+  Packet4f z1,z2;//will need them during computation    
+
+
+//will compute the two branches for asin
+//so first compare with half
+
+  Packet4f branch_mask= _mm_cmpgt_ps(a, p4f_half);//this is to select which branch to take
+//both will be taken, and finally results will be merged
+//the branch for values >0.5
+
+    {
+//the core series expansion 
+    z1=pmadd(p4f_minus_half,a,p4f_half);
+    Packet4f x1=psqrt(z1);
+    Packet4f s1=pmadd(p4f_asin1, z1, p4f_asin2);
+    Packet4f s2=pmadd(s1, z1, p4f_asin3);
+    Packet4f s3=pmadd(s2,z1, p4f_asin4);
+    Packet4f s4=pmadd(s3,z1, p4f_asin5);
+    Packet4f temp=pmul(s4,z1);//not really a madd but a mul by z so that the next term can be a madd
+    z1=pmadd(temp,x1,x1);
+    z1=padd(z1,z1);
+    z1=psub(p4f_pi_over_2,z1);
+    }
+
+    {
+//the core series expansion 
+    Packet4f x2=a;
+    z2=pmul(x2,x2);
+    Packet4f s1=pmadd(p4f_asin1, z2, p4f_asin2);
+    Packet4f s2=pmadd(s1, z2, p4f_asin3);
+    Packet4f s3=pmadd(s2,z2, p4f_asin4);
+    Packet4f s4=pmadd(s3,z2, p4f_asin5);
+    Packet4f temp=pmul(s4,z2);//not really a madd but a mul by z so that the next term can be a madd
+    z2=pmadd(temp,x2,x2);
+    }
+
+/* select the correct result from the two branch evaluations */
+  z1  = _mm_and_ps(branch_mask, z1);
+  z2  = _mm_andnot_ps(branch_mask, z2);
+  Packet4f z  = _mm_or_ps(z1,z2);
+
+/* update the sign */
+  return _mm_xor_ps(z, sign_bit);
+}
+
+#endif // EIGEN_VECTORIZE_SSE
+
+} // end namespace internal
+
+} // end namespace Eigen
+
+#endif // EIGEN_MOREVECTORIZATION_MATHFUNCTIONS_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/EulerAngles/EulerSystem.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/EulerAngles/EulerSystem.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/EulerAngles/EulerSystem.h	(revision 3762)
@@ -0,0 +1,326 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2015 Tal Hadad <tal_hd@hotmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_EULERSYSTEM_H
+#define EIGEN_EULERSYSTEM_H
+
+namespace Eigen
+{
+  // Forward declerations
+  template <typename _Scalar, class _System>
+  class EulerAngles;
+  
+  namespace internal
+  {
+    // TODO: Check if already exists on the rest API
+    template <int Num, bool IsPositive = (Num > 0)>
+    struct Abs
+    {
+      enum { value = Num };
+    };
+  
+    template <int Num>
+    struct Abs<Num, false>
+    {
+      enum { value = -Num };
+    };
+
+    template <int Axis>
+    struct IsValidAxis
+    {
+      enum { value = Axis != 0 && Abs<Axis>::value <= 3 };
+    };
+  }
+  
+  #define EIGEN_EULER_ANGLES_CLASS_STATIC_ASSERT(COND,MSG) typedef char static_assertion_##MSG[(COND)?1:-1]
+  
+  /** \brief Representation of a fixed signed rotation axis for EulerSystem.
+    *
+    * \ingroup EulerAngles_Module
+    *
+    * Values here represent:
+    *  - The axis of the rotation: X, Y or Z.
+    *  - The sign (i.e. direction of the rotation along the axis): positive(+) or negative(-)
+    *
+    * Therefore, this could express all the axes {+X,+Y,+Z,-X,-Y,-Z}
+    *
+    * For positive axis, use +EULER_{axis}, and for negative axis use -EULER_{axis}.
+    */
+  enum EulerAxis
+  {
+    EULER_X = 1, /*!< the X axis */
+    EULER_Y = 2, /*!< the Y axis */
+    EULER_Z = 3  /*!< the Z axis */
+  };
+  
+  /** \class EulerSystem
+    *
+    * \ingroup EulerAngles_Module
+    *
+    * \brief Represents a fixed Euler rotation system.
+    *
+    * This meta-class goal is to represent the Euler system in compilation time, for EulerAngles.
+    *
+    * You can use this class to get two things:
+    *  - Build an Euler system, and then pass it as a template parameter to EulerAngles.
+    *  - Query some compile time data about an Euler system. (e.g. Whether it's tait bryan)
+    *
+    * Euler rotation is a set of three rotation on fixed axes. (see \ref EulerAngles)
+    * This meta-class store constantly those signed axes. (see \ref EulerAxis)
+    *
+    * ### Types of Euler systems ###
+    *
+    * All and only valid 3 dimension Euler rotation over standard
+    *  signed axes{+X,+Y,+Z,-X,-Y,-Z} are supported:
+    *  - all axes X, Y, Z in each valid order (see below what order is valid)
+    *  - rotation over the axis is supported both over the positive and negative directions.
+    *  - both tait bryan and proper/classic Euler angles (i.e. the opposite).
+    *
+    * Since EulerSystem support both positive and negative directions,
+    *  you may call this rotation distinction in other names:
+    *  - _right handed_ or _left handed_
+    *  - _counterclockwise_ or _clockwise_
+    *
+    * Notice all axed combination are valid, and would trigger a static assertion.
+    * Same unsigned axes can't be neighbors, e.g. {X,X,Y} is invalid.
+    * This yield two and only two classes:
+    *  - _tait bryan_ - all unsigned axes are distinct, e.g. {X,Y,Z}
+    *  - _proper/classic Euler angles_ - The first and the third unsigned axes is equal,
+    *     and the second is different, e.g. {X,Y,X}
+    *
+    * ### Intrinsic vs extrinsic Euler systems ###
+    *
+    * Only intrinsic Euler systems are supported for simplicity.
+    *  If you want to use extrinsic Euler systems,
+    *   just use the equal intrinsic opposite order for axes and angles.
+    *  I.e axes (A,B,C) becomes (C,B,A), and angles (a,b,c) becomes (c,b,a).
+    *
+    * ### Convenient user typedefs ###
+    *
+    * Convenient typedefs for EulerSystem exist (only for positive axes Euler systems),
+    *  in a form of EulerSystem{A}{B}{C}, e.g. \ref EulerSystemXYZ.
+    *
+    * ### Additional reading ###
+    *
+    * More information about Euler angles: https://en.wikipedia.org/wiki/Euler_angles
+    *
+    * \tparam _AlphaAxis the first fixed EulerAxis
+    *
+    * \tparam _AlphaAxis the second fixed EulerAxis
+    *
+    * \tparam _AlphaAxis the third fixed EulerAxis
+    */
+  template <int _AlphaAxis, int _BetaAxis, int _GammaAxis>
+  class EulerSystem
+  {
+    public:
+    // It's defined this way and not as enum, because I think
+    //  that enum is not guerantee to support negative numbers
+    
+    /** The first rotation axis */
+    static const int AlphaAxis = _AlphaAxis;
+    
+    /** The second rotation axis */
+    static const int BetaAxis = _BetaAxis;
+    
+    /** The third rotation axis */
+    static const int GammaAxis = _GammaAxis;
+
+    enum
+    {
+      AlphaAxisAbs = internal::Abs<AlphaAxis>::value, /*!< the first rotation axis unsigned */
+      BetaAxisAbs = internal::Abs<BetaAxis>::value, /*!< the second rotation axis unsigned */
+      GammaAxisAbs = internal::Abs<GammaAxis>::value, /*!< the third rotation axis unsigned */
+      
+      IsAlphaOpposite = (AlphaAxis < 0) ? 1 : 0, /*!< weather alpha axis is negative */
+      IsBetaOpposite = (BetaAxis < 0) ? 1 : 0, /*!< weather beta axis is negative */
+      IsGammaOpposite = (GammaAxis < 0) ? 1 : 0, /*!< weather gamma axis is negative */
+      
+      IsOdd = ((AlphaAxisAbs)%3 == (BetaAxisAbs - 1)%3) ? 0 : 1, /*!< weather the Euler system is odd */
+      IsEven = IsOdd ? 0 : 1, /*!< weather the Euler system is even */
+
+      IsTaitBryan = ((unsigned)AlphaAxisAbs != (unsigned)GammaAxisAbs) ? 1 : 0 /*!< weather the Euler system is tait bryan */
+    };
+    
+    private:
+    
+    EIGEN_EULER_ANGLES_CLASS_STATIC_ASSERT(internal::IsValidAxis<AlphaAxis>::value,
+      ALPHA_AXIS_IS_INVALID);
+      
+    EIGEN_EULER_ANGLES_CLASS_STATIC_ASSERT(internal::IsValidAxis<BetaAxis>::value,
+      BETA_AXIS_IS_INVALID);
+      
+    EIGEN_EULER_ANGLES_CLASS_STATIC_ASSERT(internal::IsValidAxis<GammaAxis>::value,
+      GAMMA_AXIS_IS_INVALID);
+      
+    EIGEN_EULER_ANGLES_CLASS_STATIC_ASSERT((unsigned)AlphaAxisAbs != (unsigned)BetaAxisAbs,
+      ALPHA_AXIS_CANT_BE_EQUAL_TO_BETA_AXIS);
+      
+    EIGEN_EULER_ANGLES_CLASS_STATIC_ASSERT((unsigned)BetaAxisAbs != (unsigned)GammaAxisAbs,
+      BETA_AXIS_CANT_BE_EQUAL_TO_GAMMA_AXIS);
+
+    enum
+    {
+      // I, J, K are the pivot indexes permutation for the rotation matrix, that match this Euler system. 
+      // They are used in this class converters.
+      // They are always different from each other, and their possible values are: 0, 1, or 2.
+      I = AlphaAxisAbs - 1,
+      J = (AlphaAxisAbs - 1 + 1 + IsOdd)%3,
+      K = (AlphaAxisAbs - 1 + 2 - IsOdd)%3
+    };
+    
+    // TODO: Get @mat parameter in form that avoids double evaluation.
+    template <typename Derived>
+    static void CalcEulerAngles_imp(Matrix<typename MatrixBase<Derived>::Scalar, 3, 1>& res, const MatrixBase<Derived>& mat, internal::true_type /*isTaitBryan*/)
+    {
+      using std::atan2;
+      using std::sin;
+      using std::cos;
+      
+      typedef typename Derived::Scalar Scalar;
+      typedef Matrix<Scalar,2,1> Vector2;
+      
+      res[0] = atan2(mat(J,K), mat(K,K));
+      Scalar c2 = Vector2(mat(I,I), mat(I,J)).norm();
+      if((IsOdd && res[0]<Scalar(0)) || ((!IsOdd) && res[0]>Scalar(0))) {
+        if(res[0] > Scalar(0)) {
+          res[0] -= Scalar(EIGEN_PI);
+        }
+        else {
+          res[0] += Scalar(EIGEN_PI);
+        }
+        res[1] = atan2(-mat(I,K), -c2);
+      }
+      else
+        res[1] = atan2(-mat(I,K), c2);
+      Scalar s1 = sin(res[0]);
+      Scalar c1 = cos(res[0]);
+      res[2] = atan2(s1*mat(K,I)-c1*mat(J,I), c1*mat(J,J) - s1 * mat(K,J));
+    }
+
+    template <typename Derived>
+    static void CalcEulerAngles_imp(Matrix<typename MatrixBase<Derived>::Scalar,3,1>& res, const MatrixBase<Derived>& mat, internal::false_type /*isTaitBryan*/)
+    {
+      using std::atan2;
+      using std::sin;
+      using std::cos;
+
+      typedef typename Derived::Scalar Scalar;
+      typedef Matrix<Scalar,2,1> Vector2;
+      
+      res[0] = atan2(mat(J,I), mat(K,I));
+      if((IsOdd && res[0]<Scalar(0)) || ((!IsOdd) && res[0]>Scalar(0)))
+      {
+        if(res[0] > Scalar(0)) {
+          res[0] -= Scalar(EIGEN_PI);
+        }
+        else {
+          res[0] += Scalar(EIGEN_PI);
+        }
+        Scalar s2 = Vector2(mat(J,I), mat(K,I)).norm();
+        res[1] = -atan2(s2, mat(I,I));
+      }
+      else
+      {
+        Scalar s2 = Vector2(mat(J,I), mat(K,I)).norm();
+        res[1] = atan2(s2, mat(I,I));
+      }
+
+      // With a=(0,1,0), we have i=0; j=1; k=2, and after computing the first two angles,
+      // we can compute their respective rotation, and apply its inverse to M. Since the result must
+      // be a rotation around x, we have:
+      //
+      //  c2  s1.s2 c1.s2                   1  0   0 
+      //  0   c1    -s1       *    M    =   0  c3  s3
+      //  -s2 s1.c2 c1.c2                   0 -s3  c3
+      //
+      //  Thus:  m11.c1 - m21.s1 = c3  &   m12.c1 - m22.s1 = s3
+
+      Scalar s1 = sin(res[0]);
+      Scalar c1 = cos(res[0]);
+      res[2] = atan2(c1*mat(J,K)-s1*mat(K,K), c1*mat(J,J) - s1 * mat(K,J));
+    }
+    
+    template<typename Scalar>
+    static void CalcEulerAngles(
+      EulerAngles<Scalar, EulerSystem>& res,
+      const typename EulerAngles<Scalar, EulerSystem>::Matrix3& mat)
+    {
+      CalcEulerAngles(res, mat, false, false, false);
+    }
+    
+    template<
+      bool PositiveRangeAlpha,
+      bool PositiveRangeBeta,
+      bool PositiveRangeGamma,
+      typename Scalar>
+    static void CalcEulerAngles(
+      EulerAngles<Scalar, EulerSystem>& res,
+      const typename EulerAngles<Scalar, EulerSystem>::Matrix3& mat)
+    {
+      CalcEulerAngles(res, mat, PositiveRangeAlpha, PositiveRangeBeta, PositiveRangeGamma);
+    }
+    
+    template<typename Scalar>
+    static void CalcEulerAngles(
+      EulerAngles<Scalar, EulerSystem>& res,
+      const typename EulerAngles<Scalar, EulerSystem>::Matrix3& mat,
+      bool PositiveRangeAlpha,
+      bool PositiveRangeBeta,
+      bool PositiveRangeGamma)
+    {
+      CalcEulerAngles_imp(
+        res.angles(), mat,
+        typename internal::conditional<IsTaitBryan, internal::true_type, internal::false_type>::type());
+
+      if (IsAlphaOpposite == IsOdd)
+        res.alpha() = -res.alpha();
+        
+      if (IsBetaOpposite == IsOdd)
+        res.beta() = -res.beta();
+        
+      if (IsGammaOpposite == IsOdd)
+        res.gamma() = -res.gamma();
+      
+      // Saturate results to the requested range
+      if (PositiveRangeAlpha && (res.alpha() < 0))
+        res.alpha() += Scalar(2 * EIGEN_PI);
+      
+      if (PositiveRangeBeta && (res.beta() < 0))
+        res.beta() += Scalar(2 * EIGEN_PI);
+      
+      if (PositiveRangeGamma && (res.gamma() < 0))
+        res.gamma() += Scalar(2 * EIGEN_PI);
+    }
+    
+    template <typename _Scalar, class _System>
+    friend class Eigen::EulerAngles;
+  };
+
+#define EIGEN_EULER_SYSTEM_TYPEDEF(A, B, C) \
+  /** \ingroup EulerAngles_Module */ \
+  typedef EulerSystem<EULER_##A, EULER_##B, EULER_##C> EulerSystem##A##B##C;
+  
+  EIGEN_EULER_SYSTEM_TYPEDEF(X,Y,Z)
+  EIGEN_EULER_SYSTEM_TYPEDEF(X,Y,X)
+  EIGEN_EULER_SYSTEM_TYPEDEF(X,Z,Y)
+  EIGEN_EULER_SYSTEM_TYPEDEF(X,Z,X)
+  
+  EIGEN_EULER_SYSTEM_TYPEDEF(Y,Z,X)
+  EIGEN_EULER_SYSTEM_TYPEDEF(Y,Z,Y)
+  EIGEN_EULER_SYSTEM_TYPEDEF(Y,X,Z)
+  EIGEN_EULER_SYSTEM_TYPEDEF(Y,X,Y)
+  
+  EIGEN_EULER_SYSTEM_TYPEDEF(Z,X,Y)
+  EIGEN_EULER_SYSTEM_TYPEDEF(Z,X,Z)
+  EIGEN_EULER_SYSTEM_TYPEDEF(Z,Y,X)
+  EIGEN_EULER_SYSTEM_TYPEDEF(Z,Y,Z)
+}
+
+#endif // EIGEN_EULERSYSTEM_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/EulerAngles/EulerAngles.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/EulerAngles/EulerAngles.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/EulerAngles/EulerAngles.h	(revision 3762)
@@ -0,0 +1,386 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2015 Tal Hadad <tal_hd@hotmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_EULERANGLESCLASS_H// TODO: Fix previous "EIGEN_EULERANGLES_H" definition?
+#define EIGEN_EULERANGLESCLASS_H
+
+namespace Eigen
+{
+  /*template<typename Other,
+         int OtherRows=Other::RowsAtCompileTime,
+         int OtherCols=Other::ColsAtCompileTime>
+  struct ei_eulerangles_assign_impl;*/
+
+  /** \class EulerAngles
+    *
+    * \ingroup EulerAngles_Module
+    *
+    * \brief Represents a rotation in a 3 dimensional space as three Euler angles.
+    *
+    * Euler rotation is a set of three rotation of three angles over three fixed axes, defined by the EulerSystem given as a template parameter.
+    * 
+    * Here is how intrinsic Euler angles works:
+    *  - first, rotate the axes system over the alpha axis in angle alpha
+    *  - then, rotate the axes system over the beta axis(which was rotated in the first stage) in angle beta
+    *  - then, rotate the axes system over the gamma axis(which was rotated in the two stages above) in angle gamma
+    *
+    * \note This class support only intrinsic Euler angles for simplicity,
+    *  see EulerSystem how to easily overcome this for extrinsic systems.
+    *
+    * ### Rotation representation and conversions ###
+    *
+    * It has been proved(see Wikipedia link below) that every rotation can be represented
+    *  by Euler angles, but there is no singular representation (e.g. unlike rotation matrices).
+    * Therefore, you can convert from Eigen rotation and to them
+    *  (including rotation matrices, which is not called "rotations" by Eigen design).
+    *
+    * Euler angles usually used for:
+    *  - convenient human representation of rotation, especially in interactive GUI.
+    *  - gimbal systems and robotics
+    *  - efficient encoding(i.e. 3 floats only) of rotation for network protocols.
+    *
+    * However, Euler angles are slow comparing to quaternion or matrices,
+    *  because their unnatural math definition, although it's simple for human.
+    * To overcome this, this class provide easy movement from the math friendly representation
+    *  to the human friendly representation, and vise-versa.
+    *
+    * All the user need to do is a safe simple C++ type conversion,
+    *  and this class take care for the math.
+    * Additionally, some axes related computation is done in compile time.
+    *
+    * #### Euler angles ranges in conversions ####
+    *
+    * When converting some rotation to Euler angles, there are some ways you can guarantee
+    *  the Euler angles ranges.
+    *
+    * #### implicit ranges ####
+    * When using implicit ranges, all angles are guarantee to be in the range [-PI, +PI],
+    *  unless you convert from some other Euler angles.
+    * In this case, the range is __undefined__ (might be even less than -PI or greater than +2*PI).
+    * \sa EulerAngles(const MatrixBase<Derived>&)
+    * \sa EulerAngles(const RotationBase<Derived, 3>&)
+    *
+    * #### explicit ranges ####
+    * When using explicit ranges, all angles are guarantee to be in the range you choose.
+    * In the range Boolean parameter, you're been ask whether you prefer the positive range or not:
+    * - _true_ - force the range between [0, +2*PI]
+    * - _false_ - force the range between [-PI, +PI]
+    *
+    * ##### compile time ranges #####
+    * This is when you have compile time ranges and you prefer to
+    *  use template parameter. (e.g. for performance)
+    * \sa FromRotation()
+    *
+    * ##### run-time time ranges #####
+    * Run-time ranges are also supported.
+    * \sa EulerAngles(const MatrixBase<Derived>&, bool, bool, bool)
+    * \sa EulerAngles(const RotationBase<Derived, 3>&, bool, bool, bool)
+    *
+    * ### Convenient user typedefs ###
+    *
+    * Convenient typedefs for EulerAngles exist for float and double scalar,
+    *  in a form of EulerAngles{A}{B}{C}{scalar},
+    *  e.g. \ref EulerAnglesXYZd, \ref EulerAnglesZYZf.
+    *
+    * Only for positive axes{+x,+y,+z} Euler systems are have convenient typedef.
+    * If you need negative axes{-x,-y,-z}, it is recommended to create you own typedef with
+    *  a word that represent what you need.
+    *
+    * ### Example ###
+    *
+    * \include EulerAngles.cpp
+    * Output: \verbinclude EulerAngles.out
+    *
+    * ### Additional reading ###
+    *
+    * If you're want to get more idea about how Euler system work in Eigen see EulerSystem.
+    *
+    * More information about Euler angles: https://en.wikipedia.org/wiki/Euler_angles
+    *
+    * \tparam _Scalar the scalar type, i.e., the type of the angles.
+    *
+    * \tparam _System the EulerSystem to use, which represents the axes of rotation.
+    */
+  template <typename _Scalar, class _System>
+  class EulerAngles : public RotationBase<EulerAngles<_Scalar, _System>, 3>
+  {
+    public:
+      /** the scalar type of the angles */
+      typedef _Scalar Scalar;
+      
+      /** the EulerSystem to use, which represents the axes of rotation. */
+      typedef _System System;
+    
+      typedef Matrix<Scalar,3,3> Matrix3; /*!< the equivalent rotation matrix type */
+      typedef Matrix<Scalar,3,1> Vector3; /*!< the equivalent 3 dimension vector type */
+      typedef Quaternion<Scalar> QuaternionType; /*!< the equivalent quaternion type */
+      typedef AngleAxis<Scalar> AngleAxisType; /*!< the equivalent angle-axis type */
+      
+      /** \returns the axis vector of the first (alpha) rotation */
+      static Vector3 AlphaAxisVector() {
+        const Vector3& u = Vector3::Unit(System::AlphaAxisAbs - 1);
+        return System::IsAlphaOpposite ? -u : u;
+      }
+      
+      /** \returns the axis vector of the second (beta) rotation */
+      static Vector3 BetaAxisVector() {
+        const Vector3& u = Vector3::Unit(System::BetaAxisAbs - 1);
+        return System::IsBetaOpposite ? -u : u;
+      }
+      
+      /** \returns the axis vector of the third (gamma) rotation */
+      static Vector3 GammaAxisVector() {
+        const Vector3& u = Vector3::Unit(System::GammaAxisAbs - 1);
+        return System::IsGammaOpposite ? -u : u;
+      }
+
+    private:
+      Vector3 m_angles;
+
+    public:
+      /** Default constructor without initialization. */
+      EulerAngles() {}
+      /** Constructs and initialize Euler angles(\p alpha, \p beta, \p gamma). */
+      EulerAngles(const Scalar& alpha, const Scalar& beta, const Scalar& gamma) :
+        m_angles(alpha, beta, gamma) {}
+      
+      /** Constructs and initialize Euler angles from a 3x3 rotation matrix \p m.
+        *
+        * \note All angles will be in the range [-PI, PI].
+      */
+      template<typename Derived>
+      EulerAngles(const MatrixBase<Derived>& m) { *this = m; }
+      
+      /** Constructs and initialize Euler angles from a 3x3 rotation matrix \p m,
+        *  with options to choose for each angle the requested range.
+        *
+        * If positive range is true, then the specified angle will be in the range [0, +2*PI].
+        * Otherwise, the specified angle will be in the range [-PI, +PI].
+        *
+        * \param m The 3x3 rotation matrix to convert
+        * \param positiveRangeAlpha If true, alpha will be in [0, 2*PI]. Otherwise, in [-PI, +PI].
+        * \param positiveRangeBeta If true, beta will be in [0, 2*PI]. Otherwise, in [-PI, +PI].
+        * \param positiveRangeGamma If true, gamma will be in [0, 2*PI]. Otherwise, in [-PI, +PI].
+      */
+      template<typename Derived>
+      EulerAngles(
+        const MatrixBase<Derived>& m,
+        bool positiveRangeAlpha,
+        bool positiveRangeBeta,
+        bool positiveRangeGamma) {
+        
+        System::CalcEulerAngles(*this, m, positiveRangeAlpha, positiveRangeBeta, positiveRangeGamma);
+      }
+      
+      /** Constructs and initialize Euler angles from a rotation \p rot.
+        *
+        * \note All angles will be in the range [-PI, PI], unless \p rot is an EulerAngles.
+        *  If rot is an EulerAngles, expected EulerAngles range is __undefined__.
+        *  (Use other functions here for enforcing range if this effect is desired)
+      */
+      template<typename Derived>
+      EulerAngles(const RotationBase<Derived, 3>& rot) { *this = rot; }
+      
+      /** Constructs and initialize Euler angles from a rotation \p rot,
+        *  with options to choose for each angle the requested range.
+        *
+        * If positive range is true, then the specified angle will be in the range [0, +2*PI].
+        * Otherwise, the specified angle will be in the range [-PI, +PI].
+        *
+        * \param rot The 3x3 rotation matrix to convert
+        * \param positiveRangeAlpha If true, alpha will be in [0, 2*PI]. Otherwise, in [-PI, +PI].
+        * \param positiveRangeBeta If true, beta will be in [0, 2*PI]. Otherwise, in [-PI, +PI].
+        * \param positiveRangeGamma If true, gamma will be in [0, 2*PI]. Otherwise, in [-PI, +PI].
+      */
+      template<typename Derived>
+      EulerAngles(
+        const RotationBase<Derived, 3>& rot,
+        bool positiveRangeAlpha,
+        bool positiveRangeBeta,
+        bool positiveRangeGamma) {
+        
+        System::CalcEulerAngles(*this, rot.toRotationMatrix(), positiveRangeAlpha, positiveRangeBeta, positiveRangeGamma);
+      }
+
+      /** \returns The angle values stored in a vector (alpha, beta, gamma). */
+      const Vector3& angles() const { return m_angles; }
+      /** \returns A read-write reference to the angle values stored in a vector (alpha, beta, gamma). */
+      Vector3& angles() { return m_angles; }
+
+      /** \returns The value of the first angle. */
+      Scalar alpha() const { return m_angles[0]; }
+      /** \returns A read-write reference to the angle of the first angle. */
+      Scalar& alpha() { return m_angles[0]; }
+
+      /** \returns The value of the second angle. */
+      Scalar beta() const { return m_angles[1]; }
+      /** \returns A read-write reference to the angle of the second angle. */
+      Scalar& beta() { return m_angles[1]; }
+
+      /** \returns The value of the third angle. */
+      Scalar gamma() const { return m_angles[2]; }
+      /** \returns A read-write reference to the angle of the third angle. */
+      Scalar& gamma() { return m_angles[2]; }
+
+      /** \returns The Euler angles rotation inverse (which is as same as the negative),
+        *  (-alpha, -beta, -gamma).
+      */
+      EulerAngles inverse() const
+      {
+        EulerAngles res;
+        res.m_angles = -m_angles;
+        return res;
+      }
+
+      /** \returns The Euler angles rotation negative (which is as same as the inverse),
+        *  (-alpha, -beta, -gamma).
+      */
+      EulerAngles operator -() const
+      {
+        return inverse();
+      }
+      
+      /** Constructs and initialize Euler angles from a 3x3 rotation matrix \p m,
+        *  with options to choose for each angle the requested range (__only in compile time__).
+        *
+        * If positive range is true, then the specified angle will be in the range [0, +2*PI].
+        * Otherwise, the specified angle will be in the range [-PI, +PI].
+        *
+        * \param m The 3x3 rotation matrix to convert
+        * \tparam positiveRangeAlpha If true, alpha will be in [0, 2*PI]. Otherwise, in [-PI, +PI].
+        * \tparam positiveRangeBeta If true, beta will be in [0, 2*PI]. Otherwise, in [-PI, +PI].
+        * \tparam positiveRangeGamma If true, gamma will be in [0, 2*PI]. Otherwise, in [-PI, +PI].
+        */
+      template<
+        bool PositiveRangeAlpha,
+        bool PositiveRangeBeta,
+        bool PositiveRangeGamma,
+        typename Derived>
+      static EulerAngles FromRotation(const MatrixBase<Derived>& m)
+      {
+        EIGEN_STATIC_ASSERT_MATRIX_SPECIFIC_SIZE(Derived, 3, 3)
+        
+        EulerAngles e;
+        System::template CalcEulerAngles<
+          PositiveRangeAlpha, PositiveRangeBeta, PositiveRangeGamma, _Scalar>(e, m);
+        return e;
+      }
+      
+      /** Constructs and initialize Euler angles from a rotation \p rot,
+        *  with options to choose for each angle the requested range (__only in compile time__).
+        *
+        * If positive range is true, then the specified angle will be in the range [0, +2*PI].
+        * Otherwise, the specified angle will be in the range [-PI, +PI].
+        *
+        * \param rot The 3x3 rotation matrix to convert
+        * \tparam positiveRangeAlpha If true, alpha will be in [0, 2*PI]. Otherwise, in [-PI, +PI].
+        * \tparam positiveRangeBeta If true, beta will be in [0, 2*PI]. Otherwise, in [-PI, +PI].
+        * \tparam positiveRangeGamma If true, gamma will be in [0, 2*PI]. Otherwise, in [-PI, +PI].
+      */
+      template<
+        bool PositiveRangeAlpha,
+        bool PositiveRangeBeta,
+        bool PositiveRangeGamma,
+        typename Derived>
+      static EulerAngles FromRotation(const RotationBase<Derived, 3>& rot)
+      {
+        return FromRotation<PositiveRangeAlpha, PositiveRangeBeta, PositiveRangeGamma>(rot.toRotationMatrix());
+      }
+      
+      /*EulerAngles& fromQuaternion(const QuaternionType& q)
+      {
+        // TODO: Implement it in a faster way for quaternions
+        // According to http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToEuler/
+        //  we can compute only the needed matrix cells and then convert to euler angles. (see ZYX example below)
+        // Currently we compute all matrix cells from quaternion.
+
+        // Special case only for ZYX
+        //Scalar y2 = q.y() * q.y();
+        //m_angles[0] = std::atan2(2*(q.w()*q.z() + q.x()*q.y()), (1 - 2*(y2 + q.z()*q.z())));
+        //m_angles[1] = std::asin( 2*(q.w()*q.y() - q.z()*q.x()));
+        //m_angles[2] = std::atan2(2*(q.w()*q.x() + q.y()*q.z()), (1 - 2*(q.x()*q.x() + y2)));
+      }*/
+      
+      /** Set \c *this from a rotation matrix(i.e. pure orthogonal matrix with determinant of +1). */
+      template<typename Derived>
+      EulerAngles& operator=(const MatrixBase<Derived>& m) {
+        EIGEN_STATIC_ASSERT_MATRIX_SPECIFIC_SIZE(Derived, 3, 3)
+        
+        System::CalcEulerAngles(*this, m);
+        return *this;
+      }
+
+      // TODO: Assign and construct from another EulerAngles (with different system)
+      
+      /** Set \c *this from a rotation. */
+      template<typename Derived>
+      EulerAngles& operator=(const RotationBase<Derived, 3>& rot) {
+        System::CalcEulerAngles(*this, rot.toRotationMatrix());
+        return *this;
+      }
+      
+      // TODO: Support isApprox function
+
+      /** \returns an equivalent 3x3 rotation matrix. */
+      Matrix3 toRotationMatrix() const
+      {
+        return static_cast<QuaternionType>(*this).toRotationMatrix();
+      }
+
+      /** Convert the Euler angles to quaternion. */
+      operator QuaternionType() const
+      {
+        return
+          AngleAxisType(alpha(), AlphaAxisVector()) *
+          AngleAxisType(beta(), BetaAxisVector())   *
+          AngleAxisType(gamma(), GammaAxisVector());
+      }
+      
+      friend std::ostream& operator<<(std::ostream& s, const EulerAngles<Scalar, System>& eulerAngles)
+      {
+        s << eulerAngles.angles().transpose();
+        return s;
+      }
+  };
+
+#define EIGEN_EULER_ANGLES_SINGLE_TYPEDEF(AXES, SCALAR_TYPE, SCALAR_POSTFIX) \
+  /** \ingroup EulerAngles_Module */ \
+  typedef EulerAngles<SCALAR_TYPE, EulerSystem##AXES> EulerAngles##AXES##SCALAR_POSTFIX;
+
+#define EIGEN_EULER_ANGLES_TYPEDEFS(SCALAR_TYPE, SCALAR_POSTFIX) \
+  EIGEN_EULER_ANGLES_SINGLE_TYPEDEF(XYZ, SCALAR_TYPE, SCALAR_POSTFIX) \
+  EIGEN_EULER_ANGLES_SINGLE_TYPEDEF(XYX, SCALAR_TYPE, SCALAR_POSTFIX) \
+  EIGEN_EULER_ANGLES_SINGLE_TYPEDEF(XZY, SCALAR_TYPE, SCALAR_POSTFIX) \
+  EIGEN_EULER_ANGLES_SINGLE_TYPEDEF(XZX, SCALAR_TYPE, SCALAR_POSTFIX) \
+ \
+  EIGEN_EULER_ANGLES_SINGLE_TYPEDEF(YZX, SCALAR_TYPE, SCALAR_POSTFIX) \
+  EIGEN_EULER_ANGLES_SINGLE_TYPEDEF(YZY, SCALAR_TYPE, SCALAR_POSTFIX) \
+  EIGEN_EULER_ANGLES_SINGLE_TYPEDEF(YXZ, SCALAR_TYPE, SCALAR_POSTFIX) \
+  EIGEN_EULER_ANGLES_SINGLE_TYPEDEF(YXY, SCALAR_TYPE, SCALAR_POSTFIX) \
+ \
+  EIGEN_EULER_ANGLES_SINGLE_TYPEDEF(ZXY, SCALAR_TYPE, SCALAR_POSTFIX) \
+  EIGEN_EULER_ANGLES_SINGLE_TYPEDEF(ZXZ, SCALAR_TYPE, SCALAR_POSTFIX) \
+  EIGEN_EULER_ANGLES_SINGLE_TYPEDEF(ZYX, SCALAR_TYPE, SCALAR_POSTFIX) \
+  EIGEN_EULER_ANGLES_SINGLE_TYPEDEF(ZYZ, SCALAR_TYPE, SCALAR_POSTFIX)
+
+EIGEN_EULER_ANGLES_TYPEDEFS(float, f)
+EIGEN_EULER_ANGLES_TYPEDEFS(double, d)
+
+  namespace internal
+  {
+    template<typename _Scalar, class _System>
+    struct traits<EulerAngles<_Scalar, _System> >
+    {
+      typedef _Scalar Scalar;
+    };
+  }
+  
+}
+
+#endif // EIGEN_EULERANGLESCLASS_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/Polynomials/PolynomialSolver.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/Polynomials/PolynomialSolver.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/Polynomials/PolynomialSolver.h	(revision 3762)
@@ -0,0 +1,428 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2010 Manuel Yguel <manuel.yguel@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_POLYNOMIAL_SOLVER_H
+#define EIGEN_POLYNOMIAL_SOLVER_H
+
+namespace Eigen { 
+
+/** \ingroup Polynomials_Module
+ *  \class PolynomialSolverBase.
+ *
+ * \brief Defined to be inherited by polynomial solvers: it provides
+ * convenient methods such as
+ *  - real roots,
+ *  - greatest, smallest complex roots,
+ *  - real roots with greatest, smallest absolute real value,
+ *  - greatest, smallest real roots.
+ *
+ * It stores the set of roots as a vector of complexes.
+ *
+ */
+template< typename _Scalar, int _Deg >
+class PolynomialSolverBase
+{
+  public:
+    EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF_VECTORIZABLE_FIXED_SIZE(_Scalar,_Deg==Dynamic ? Dynamic : _Deg)
+
+    typedef _Scalar                             Scalar;
+    typedef typename NumTraits<Scalar>::Real    RealScalar;
+    typedef std::complex<RealScalar>            RootType;
+    typedef Matrix<RootType,_Deg,1>             RootsType;
+
+    typedef DenseIndex Index;
+
+  protected:
+    template< typename OtherPolynomial >
+    inline void setPolynomial( const OtherPolynomial& poly ){
+      m_roots.resize(poly.size()-1); }
+
+  public:
+    template< typename OtherPolynomial >
+    inline PolynomialSolverBase( const OtherPolynomial& poly ){
+      setPolynomial( poly() ); }
+
+    inline PolynomialSolverBase(){}
+
+  public:
+    /** \returns the complex roots of the polynomial */
+    inline const RootsType& roots() const { return m_roots; }
+
+  public:
+    /** Clear and fills the back insertion sequence with the real roots of the polynomial
+     * i.e. the real part of the complex roots that have an imaginary part which
+     * absolute value is smaller than absImaginaryThreshold.
+     * absImaginaryThreshold takes the dummy_precision associated
+     * with the _Scalar template parameter of the PolynomialSolver class as the default value.
+     *
+     * \param[out] bi_seq : the back insertion sequence (stl concept)
+     * \param[in]  absImaginaryThreshold : the maximum bound of the imaginary part of a complex
+     *  number that is considered as real.
+     * */
+    template<typename Stl_back_insertion_sequence>
+    inline void realRoots( Stl_back_insertion_sequence& bi_seq,
+        const RealScalar& absImaginaryThreshold = NumTraits<Scalar>::dummy_precision() ) const
+    {
+      using std::abs;
+      bi_seq.clear();
+      for(Index i=0; i<m_roots.size(); ++i )
+      {
+        if( abs( m_roots[i].imag() ) < absImaginaryThreshold ){
+          bi_seq.push_back( m_roots[i].real() ); }
+      }
+    }
+
+  protected:
+    template<typename squaredNormBinaryPredicate>
+    inline const RootType& selectComplexRoot_withRespectToNorm( squaredNormBinaryPredicate& pred ) const
+    {
+      Index res=0;
+      RealScalar norm2 = numext::abs2( m_roots[0] );
+      for( Index i=1; i<m_roots.size(); ++i )
+      {
+        const RealScalar currNorm2 = numext::abs2( m_roots[i] );
+        if( pred( currNorm2, norm2 ) ){
+          res=i; norm2=currNorm2; }
+      }
+      return m_roots[res];
+    }
+
+  public:
+    /**
+     * \returns the complex root with greatest norm.
+     */
+    inline const RootType& greatestRoot() const
+    {
+      std::greater<RealScalar> greater;
+      return selectComplexRoot_withRespectToNorm( greater );
+    }
+
+    /**
+     * \returns the complex root with smallest norm.
+     */
+    inline const RootType& smallestRoot() const
+    {
+      std::less<RealScalar> less;
+      return selectComplexRoot_withRespectToNorm( less );
+    }
+
+  protected:
+    template<typename squaredRealPartBinaryPredicate>
+    inline const RealScalar& selectRealRoot_withRespectToAbsRealPart(
+        squaredRealPartBinaryPredicate& pred,
+        bool& hasArealRoot,
+        const RealScalar& absImaginaryThreshold = NumTraits<Scalar>::dummy_precision() ) const
+    {
+      using std::abs;
+      hasArealRoot = false;
+      Index res=0;
+      RealScalar abs2(0);
+
+      for( Index i=0; i<m_roots.size(); ++i )
+      {
+        if( abs( m_roots[i].imag() ) <= absImaginaryThreshold )
+        {
+          if( !hasArealRoot )
+          {
+            hasArealRoot = true;
+            res = i;
+            abs2 = m_roots[i].real() * m_roots[i].real();
+          }
+          else
+          {
+            const RealScalar currAbs2 = m_roots[i].real() * m_roots[i].real();
+            if( pred( currAbs2, abs2 ) )
+            {
+              abs2 = currAbs2;
+              res = i;
+            }
+          }
+        }
+        else if(!hasArealRoot)
+        {
+          if( abs( m_roots[i].imag() ) < abs( m_roots[res].imag() ) ){
+            res = i;}
+        }
+      }
+      return numext::real_ref(m_roots[res]);
+    }
+
+
+    template<typename RealPartBinaryPredicate>
+    inline const RealScalar& selectRealRoot_withRespectToRealPart(
+        RealPartBinaryPredicate& pred,
+        bool& hasArealRoot,
+        const RealScalar& absImaginaryThreshold = NumTraits<Scalar>::dummy_precision() ) const
+    {
+      using std::abs;
+      hasArealRoot = false;
+      Index res=0;
+      RealScalar val(0);
+
+      for( Index i=0; i<m_roots.size(); ++i )
+      {
+        if( abs( m_roots[i].imag() ) <= absImaginaryThreshold )
+        {
+          if( !hasArealRoot )
+          {
+            hasArealRoot = true;
+            res = i;
+            val = m_roots[i].real();
+          }
+          else
+          {
+            const RealScalar curr = m_roots[i].real();
+            if( pred( curr, val ) )
+            {
+              val = curr;
+              res = i;
+            }
+          }
+        }
+        else
+        {
+          if( abs( m_roots[i].imag() ) < abs( m_roots[res].imag() ) ){
+            res = i; }
+        }
+      }
+      return numext::real_ref(m_roots[res]);
+    }
+
+  public:
+    /**
+     * \returns a real root with greatest absolute magnitude.
+     * A real root is defined as the real part of a complex root with absolute imaginary
+     * part smallest than absImaginaryThreshold.
+     * absImaginaryThreshold takes the dummy_precision associated
+     * with the _Scalar template parameter of the PolynomialSolver class as the default value.
+     * If no real root is found the boolean hasArealRoot is set to false and the real part of
+     * the root with smallest absolute imaginary part is returned instead.
+     *
+     * \param[out] hasArealRoot : boolean true if a real root is found according to the
+     *  absImaginaryThreshold criterion, false otherwise.
+     * \param[in] absImaginaryThreshold : threshold on the absolute imaginary part to decide
+     *  whether or not a root is real.
+     */
+    inline const RealScalar& absGreatestRealRoot(
+        bool& hasArealRoot,
+        const RealScalar& absImaginaryThreshold = NumTraits<Scalar>::dummy_precision() ) const
+    {
+      std::greater<RealScalar> greater;
+      return selectRealRoot_withRespectToAbsRealPart( greater, hasArealRoot, absImaginaryThreshold );
+    }
+
+
+    /**
+     * \returns a real root with smallest absolute magnitude.
+     * A real root is defined as the real part of a complex root with absolute imaginary
+     * part smallest than absImaginaryThreshold.
+     * absImaginaryThreshold takes the dummy_precision associated
+     * with the _Scalar template parameter of the PolynomialSolver class as the default value.
+     * If no real root is found the boolean hasArealRoot is set to false and the real part of
+     * the root with smallest absolute imaginary part is returned instead.
+     *
+     * \param[out] hasArealRoot : boolean true if a real root is found according to the
+     *  absImaginaryThreshold criterion, false otherwise.
+     * \param[in] absImaginaryThreshold : threshold on the absolute imaginary part to decide
+     *  whether or not a root is real.
+     */
+    inline const RealScalar& absSmallestRealRoot(
+        bool& hasArealRoot,
+        const RealScalar& absImaginaryThreshold = NumTraits<Scalar>::dummy_precision() ) const
+    {
+      std::less<RealScalar> less;
+      return selectRealRoot_withRespectToAbsRealPart( less, hasArealRoot, absImaginaryThreshold );
+    }
+
+
+    /**
+     * \returns the real root with greatest value.
+     * A real root is defined as the real part of a complex root with absolute imaginary
+     * part smallest than absImaginaryThreshold.
+     * absImaginaryThreshold takes the dummy_precision associated
+     * with the _Scalar template parameter of the PolynomialSolver class as the default value.
+     * If no real root is found the boolean hasArealRoot is set to false and the real part of
+     * the root with smallest absolute imaginary part is returned instead.
+     *
+     * \param[out] hasArealRoot : boolean true if a real root is found according to the
+     *  absImaginaryThreshold criterion, false otherwise.
+     * \param[in] absImaginaryThreshold : threshold on the absolute imaginary part to decide
+     *  whether or not a root is real.
+     */
+    inline const RealScalar& greatestRealRoot(
+        bool& hasArealRoot,
+        const RealScalar& absImaginaryThreshold = NumTraits<Scalar>::dummy_precision() ) const
+    {
+      std::greater<RealScalar> greater;
+      return selectRealRoot_withRespectToRealPart( greater, hasArealRoot, absImaginaryThreshold );
+    }
+
+
+    /**
+     * \returns the real root with smallest value.
+     * A real root is defined as the real part of a complex root with absolute imaginary
+     * part smallest than absImaginaryThreshold.
+     * absImaginaryThreshold takes the dummy_precision associated
+     * with the _Scalar template parameter of the PolynomialSolver class as the default value.
+     * If no real root is found the boolean hasArealRoot is set to false and the real part of
+     * the root with smallest absolute imaginary part is returned instead.
+     *
+     * \param[out] hasArealRoot : boolean true if a real root is found according to the
+     *  absImaginaryThreshold criterion, false otherwise.
+     * \param[in] absImaginaryThreshold : threshold on the absolute imaginary part to decide
+     *  whether or not a root is real.
+     */
+    inline const RealScalar& smallestRealRoot(
+        bool& hasArealRoot,
+        const RealScalar& absImaginaryThreshold = NumTraits<Scalar>::dummy_precision() ) const
+    {
+      std::less<RealScalar> less;
+      return selectRealRoot_withRespectToRealPart( less, hasArealRoot, absImaginaryThreshold );
+    }
+
+  protected:
+    RootsType               m_roots;
+};
+
+#define EIGEN_POLYNOMIAL_SOLVER_BASE_INHERITED_TYPES( BASE )  \
+  typedef typename BASE::Scalar                 Scalar;       \
+  typedef typename BASE::RealScalar             RealScalar;   \
+  typedef typename BASE::RootType               RootType;     \
+  typedef typename BASE::RootsType              RootsType;
+
+
+
+/** \ingroup Polynomials_Module
+  *
+  * \class PolynomialSolver
+  *
+  * \brief A polynomial solver
+  *
+  * Computes the complex roots of a real polynomial.
+  *
+  * \param _Scalar the scalar type, i.e., the type of the polynomial coefficients
+  * \param _Deg the degree of the polynomial, can be a compile time value or Dynamic.
+  *             Notice that the number of polynomial coefficients is _Deg+1.
+  *
+  * This class implements a polynomial solver and provides convenient methods such as
+  * - real roots,
+  * - greatest, smallest complex roots,
+  * - real roots with greatest, smallest absolute real value.
+  * - greatest, smallest real roots.
+  *
+  * WARNING: this polynomial solver is experimental, part of the unsupported Eigen modules.
+  *
+  *
+  * Currently a QR algorithm is used to compute the eigenvalues of the companion matrix of
+  * the polynomial to compute its roots.
+  * This supposes that the complex moduli of the roots are all distinct: e.g. there should
+  * be no multiple roots or conjugate roots for instance.
+  * With 32bit (float) floating types this problem shows up frequently.
+  * However, almost always, correct accuracy is reached even in these cases for 64bit
+  * (double) floating types and small polynomial degree (<20).
+  */
+template<typename _Scalar, int _Deg>
+class PolynomialSolver : public PolynomialSolverBase<_Scalar,_Deg>
+{
+  public:
+    EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF_VECTORIZABLE_FIXED_SIZE(_Scalar,_Deg==Dynamic ? Dynamic : _Deg)
+
+    typedef PolynomialSolverBase<_Scalar,_Deg>    PS_Base;
+    EIGEN_POLYNOMIAL_SOLVER_BASE_INHERITED_TYPES( PS_Base )
+
+    typedef Matrix<Scalar,_Deg,_Deg>                 CompanionMatrixType;
+    typedef typename internal::conditional<NumTraits<Scalar>::IsComplex,
+                                          ComplexEigenSolver<CompanionMatrixType>,
+                                          EigenSolver<CompanionMatrixType> >::type EigenSolverType;
+    typedef typename internal::conditional<NumTraits<Scalar>::IsComplex, Scalar, std::complex<Scalar> >::type ComplexScalar;
+
+  public:
+    /** Computes the complex roots of a new polynomial. */
+    template< typename OtherPolynomial >
+    void compute( const OtherPolynomial& poly )
+    {
+      eigen_assert( Scalar(0) != poly[poly.size()-1] );
+      eigen_assert( poly.size() > 1 );
+      if(poly.size() >  2 )
+      {
+        internal::companion<Scalar,_Deg> companion( poly );
+        companion.balance();
+        m_eigenSolver.compute( companion.denseMatrix() );
+        m_roots = m_eigenSolver.eigenvalues();
+        // cleanup noise in imaginary part of real roots:
+        // if the imaginary part is rather small compared to the real part
+        // and that cancelling the imaginary part yield a smaller evaluation,
+        // then it's safe to keep the real part only.
+        RealScalar coarse_prec = RealScalar(std::pow(4,poly.size()+1))*NumTraits<RealScalar>::epsilon();
+        for(Index i = 0; i<m_roots.size(); ++i)
+        {
+          if( internal::isMuchSmallerThan(numext::abs(numext::imag(m_roots[i])),
+                                          numext::abs(numext::real(m_roots[i])),
+                                          coarse_prec) )
+          {
+            ComplexScalar as_real_root = ComplexScalar(numext::real(m_roots[i]));
+            if(    numext::abs(poly_eval(poly, as_real_root))
+                <= numext::abs(poly_eval(poly, m_roots[i])))
+            {
+              m_roots[i] = as_real_root;
+            }
+          }
+        }
+      }
+      else if(poly.size () == 2)
+      {
+        m_roots.resize(1);
+        m_roots[0] = -poly[0]/poly[1];
+      }
+    }
+
+  public:
+    template< typename OtherPolynomial >
+    inline PolynomialSolver( const OtherPolynomial& poly ){
+      compute( poly ); }
+
+    inline PolynomialSolver(){}
+
+  protected:
+    using                   PS_Base::m_roots;
+    EigenSolverType         m_eigenSolver;
+};
+
+
+template< typename _Scalar >
+class PolynomialSolver<_Scalar,1> : public PolynomialSolverBase<_Scalar,1>
+{
+  public:
+    typedef PolynomialSolverBase<_Scalar,1>    PS_Base;
+    EIGEN_POLYNOMIAL_SOLVER_BASE_INHERITED_TYPES( PS_Base )
+
+  public:
+    /** Computes the complex roots of a new polynomial. */
+    template< typename OtherPolynomial >
+    void compute( const OtherPolynomial& poly )
+    {
+      eigen_assert( poly.size() == 2 );
+      eigen_assert( Scalar(0) != poly[1] );
+      m_roots[0] = -poly[0]/poly[1];
+    }
+
+  public:
+    template< typename OtherPolynomial >
+    inline PolynomialSolver( const OtherPolynomial& poly ){
+      compute( poly ); }
+
+    inline PolynomialSolver(){}
+
+  protected:
+    using                   PS_Base::m_roots;
+};
+
+} // end namespace Eigen
+
+#endif // EIGEN_POLYNOMIAL_SOLVER_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/Polynomials/Companion.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/Polynomials/Companion.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/Polynomials/Companion.h	(revision 3762)
@@ -0,0 +1,275 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2010 Manuel Yguel <manuel.yguel@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_COMPANION_H
+#define EIGEN_COMPANION_H
+
+// This file requires the user to include
+// * Eigen/Core
+// * Eigen/src/PolynomialSolver.h
+
+namespace Eigen { 
+
+namespace internal {
+
+#ifndef EIGEN_PARSED_BY_DOXYGEN
+
+template <typename T>
+T radix(){ return 2; }
+
+template <typename T>
+T radix2(){ return radix<T>()*radix<T>(); }
+
+template<int Size>
+struct decrement_if_fixed_size
+{
+  enum {
+    ret = (Size == Dynamic) ? Dynamic : Size-1 };
+};
+
+#endif
+
+template< typename _Scalar, int _Deg >
+class companion
+{
+  public:
+    EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF_VECTORIZABLE_FIXED_SIZE(_Scalar,_Deg==Dynamic ? Dynamic : _Deg)
+
+    enum {
+      Deg = _Deg,
+      Deg_1=decrement_if_fixed_size<Deg>::ret
+    };
+
+    typedef _Scalar                                Scalar;
+    typedef typename NumTraits<Scalar>::Real       RealScalar;
+    typedef Matrix<Scalar, Deg, 1>                 RightColumn;
+    //typedef DiagonalMatrix< Scalar, Deg_1, Deg_1 > BottomLeftDiagonal;
+    typedef Matrix<Scalar, Deg_1, 1>               BottomLeftDiagonal;
+
+    typedef Matrix<Scalar, Deg, Deg>               DenseCompanionMatrixType;
+    typedef Matrix< Scalar, _Deg, Deg_1 >          LeftBlock;
+    typedef Matrix< Scalar, Deg_1, Deg_1 >         BottomLeftBlock;
+    typedef Matrix< Scalar, 1, Deg_1 >             LeftBlockFirstRow;
+
+    typedef DenseIndex Index;
+
+  public:
+    EIGEN_STRONG_INLINE const _Scalar operator()(Index row, Index col ) const
+    {
+      if( m_bl_diag.rows() > col )
+      {
+        if( 0 < row ){ return m_bl_diag[col]; }
+        else{ return 0; }
+      }
+      else{ return m_monic[row]; }
+    }
+
+  public:
+    template<typename VectorType>
+    void setPolynomial( const VectorType& poly )
+    {
+      const Index deg = poly.size()-1;
+      m_monic = -poly.head(deg)/poly[deg];
+      m_bl_diag.setOnes(deg-1);
+    }
+
+    template<typename VectorType>
+    companion( const VectorType& poly ){
+      setPolynomial( poly ); }
+
+  public:
+    DenseCompanionMatrixType denseMatrix() const
+    {
+      const Index deg   = m_monic.size();
+      const Index deg_1 = deg-1;
+      DenseCompanionMatrixType companMat(deg,deg);
+      companMat <<
+        ( LeftBlock(deg,deg_1)
+          << LeftBlockFirstRow::Zero(1,deg_1),
+          BottomLeftBlock::Identity(deg-1,deg-1)*m_bl_diag.asDiagonal() ).finished()
+        , m_monic;
+      return companMat;
+    }
+
+
+
+  protected:
+    /** Helper function for the balancing algorithm.
+     * \returns true if the row and the column, having colNorm and rowNorm
+     * as norms, are balanced, false otherwise.
+     * colB and rowB are repectively the multipliers for
+     * the column and the row in order to balance them.
+     * */
+    bool balanced( RealScalar colNorm, RealScalar rowNorm,
+        bool& isBalanced, RealScalar& colB, RealScalar& rowB );
+
+    /** Helper function for the balancing algorithm.
+     * \returns true if the row and the column, having colNorm and rowNorm
+     * as norms, are balanced, false otherwise.
+     * colB and rowB are repectively the multipliers for
+     * the column and the row in order to balance them.
+     * */
+    bool balancedR( RealScalar colNorm, RealScalar rowNorm,
+        bool& isBalanced, RealScalar& colB, RealScalar& rowB );
+
+  public:
+    /**
+     * Balancing algorithm from B. N. PARLETT and C. REINSCH (1969)
+     * "Balancing a matrix for calculation of eigenvalues and eigenvectors"
+     * adapted to the case of companion matrices.
+     * A matrix with non zero row and non zero column is balanced
+     * for a certain norm if the i-th row and the i-th column
+     * have same norm for all i.
+     */
+    void balance();
+
+  protected:
+      RightColumn                m_monic;
+      BottomLeftDiagonal         m_bl_diag;
+};
+
+
+
+template< typename _Scalar, int _Deg >
+inline
+bool companion<_Scalar,_Deg>::balanced( RealScalar colNorm, RealScalar rowNorm,
+    bool& isBalanced, RealScalar& colB, RealScalar& rowB )
+{
+  if( RealScalar(0) == colNorm || RealScalar(0) == rowNorm ){ return true; }
+  else
+  {
+    //To find the balancing coefficients, if the radix is 2,
+    //one finds \f$ \sigma \f$ such that
+    // \f$ 2^{2\sigma-1} < rowNorm / colNorm \le 2^{2\sigma+1} \f$
+    // then the balancing coefficient for the row is \f$ 1/2^{\sigma} \f$
+    // and the balancing coefficient for the column is \f$ 2^{\sigma} \f$
+    rowB = rowNorm / radix<RealScalar>();
+    colB = RealScalar(1);
+    const RealScalar s = colNorm + rowNorm;
+
+    while (colNorm < rowB)
+    {
+      colB *= radix<RealScalar>();
+      colNorm *= radix2<RealScalar>();
+    }
+
+    rowB = rowNorm * radix<RealScalar>();
+
+    while (colNorm >= rowB)
+    {
+      colB /= radix<RealScalar>();
+      colNorm /= radix2<RealScalar>();
+    }
+
+    //This line is used to avoid insubstantial balancing
+    if ((rowNorm + colNorm) < RealScalar(0.95) * s * colB)
+    {
+      isBalanced = false;
+      rowB = RealScalar(1) / colB;
+      return false;
+    }
+    else{
+      return true; }
+  }
+}
+
+template< typename _Scalar, int _Deg >
+inline
+bool companion<_Scalar,_Deg>::balancedR( RealScalar colNorm, RealScalar rowNorm,
+    bool& isBalanced, RealScalar& colB, RealScalar& rowB )
+{
+  if( RealScalar(0) == colNorm || RealScalar(0) == rowNorm ){ return true; }
+  else
+  {
+    /**
+     * Set the norm of the column and the row to the geometric mean
+     * of the row and column norm
+     */
+    const RealScalar q = colNorm/rowNorm;
+    if( !isApprox( q, _Scalar(1) ) )
+    {
+      rowB = sqrt( colNorm/rowNorm );
+      colB = RealScalar(1)/rowB;
+
+      isBalanced = false;
+      return false;
+    }
+    else{
+      return true; }
+  }
+}
+
+
+template< typename _Scalar, int _Deg >
+void companion<_Scalar,_Deg>::balance()
+{
+  using std::abs;
+  EIGEN_STATIC_ASSERT( Deg == Dynamic || 1 < Deg, YOU_MADE_A_PROGRAMMING_MISTAKE );
+  const Index deg   = m_monic.size();
+  const Index deg_1 = deg-1;
+
+  bool hasConverged=false;
+  while( !hasConverged )
+  {
+    hasConverged = true;
+    RealScalar colNorm,rowNorm;
+    RealScalar colB,rowB;
+
+    //First row, first column excluding the diagonal
+    //==============================================
+    colNorm = abs(m_bl_diag[0]);
+    rowNorm = abs(m_monic[0]);
+
+    //Compute balancing of the row and the column
+    if( !balanced( colNorm, rowNorm, hasConverged, colB, rowB ) )
+    {
+      m_bl_diag[0] *= colB;
+      m_monic[0] *= rowB;
+    }
+
+    //Middle rows and columns excluding the diagonal
+    //==============================================
+    for( Index i=1; i<deg_1; ++i )
+    {
+      // column norm, excluding the diagonal
+      colNorm = abs(m_bl_diag[i]);
+
+      // row norm, excluding the diagonal
+      rowNorm = abs(m_bl_diag[i-1]) + abs(m_monic[i]);
+
+      //Compute balancing of the row and the column
+      if( !balanced( colNorm, rowNorm, hasConverged, colB, rowB ) )
+      {
+        m_bl_diag[i]   *= colB;
+        m_bl_diag[i-1] *= rowB;
+        m_monic[i]     *= rowB;
+      }
+    }
+
+    //Last row, last column excluding the diagonal
+    //============================================
+    const Index ebl = m_bl_diag.size()-1;
+    VectorBlock<RightColumn,Deg_1> headMonic( m_monic, 0, deg_1 );
+    colNorm = headMonic.array().abs().sum();
+    rowNorm = abs( m_bl_diag[ebl] );
+
+    //Compute balancing of the row and the column
+    if( !balanced( colNorm, rowNorm, hasConverged, colB, rowB ) )
+    {
+      headMonic      *= colB;
+      m_bl_diag[ebl] *= rowB;
+    }
+  }
+}
+
+} // end namespace internal
+
+} // end namespace Eigen
+
+#endif // EIGEN_COMPANION_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/Polynomials/PolynomialUtils.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/Polynomials/PolynomialUtils.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/Polynomials/PolynomialUtils.h	(revision 3762)
@@ -0,0 +1,143 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2010 Manuel Yguel <manuel.yguel@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_POLYNOMIAL_UTILS_H
+#define EIGEN_POLYNOMIAL_UTILS_H
+
+namespace Eigen { 
+
+/** \ingroup Polynomials_Module
+ * \returns the evaluation of the polynomial at x using Horner algorithm.
+ *
+ * \param[in] poly : the vector of coefficients of the polynomial ordered
+ *  by degrees i.e. poly[i] is the coefficient of degree i of the polynomial
+ *  e.g. \f$ 1 + 3x^2 \f$ is stored as a vector \f$ [ 1, 0, 3 ] \f$.
+ * \param[in] x : the value to evaluate the polynomial at.
+ *
+ * \note for stability:
+ *   \f$ |x| \le 1 \f$
+ */
+template <typename Polynomials, typename T>
+inline
+T poly_eval_horner( const Polynomials& poly, const T& x )
+{
+  T val=poly[poly.size()-1];
+  for(DenseIndex i=poly.size()-2; i>=0; --i ){
+    val = val*x + poly[i]; }
+  return val;
+}
+
+/** \ingroup Polynomials_Module
+ * \returns the evaluation of the polynomial at x using stabilized Horner algorithm.
+ *
+ * \param[in] poly : the vector of coefficients of the polynomial ordered
+ *  by degrees i.e. poly[i] is the coefficient of degree i of the polynomial
+ *  e.g. \f$ 1 + 3x^2 \f$ is stored as a vector \f$ [ 1, 0, 3 ] \f$.
+ * \param[in] x : the value to evaluate the polynomial at.
+ */
+template <typename Polynomials, typename T>
+inline
+T poly_eval( const Polynomials& poly, const T& x )
+{
+  typedef typename NumTraits<T>::Real Real;
+
+  if( numext::abs2( x ) <= Real(1) ){
+    return poly_eval_horner( poly, x ); }
+  else
+  {
+    T val=poly[0];
+    T inv_x = T(1)/x;
+    for( DenseIndex i=1; i<poly.size(); ++i ){
+      val = val*inv_x + poly[i]; }
+
+    return numext::pow(x,(T)(poly.size()-1)) * val;
+  }
+}
+
+/** \ingroup Polynomials_Module
+ * \returns a maximum bound for the absolute value of any root of the polynomial.
+ *
+ * \param[in] poly : the vector of coefficients of the polynomial ordered
+ *  by degrees i.e. poly[i] is the coefficient of degree i of the polynomial
+ *  e.g. \f$ 1 + 3x^2 \f$ is stored as a vector \f$ [ 1, 0, 3 ] \f$.
+ *
+ *  \pre
+ *   the leading coefficient of the input polynomial poly must be non zero
+ */
+template <typename Polynomial>
+inline
+typename NumTraits<typename Polynomial::Scalar>::Real cauchy_max_bound( const Polynomial& poly )
+{
+  using std::abs;
+  typedef typename Polynomial::Scalar Scalar;
+  typedef typename NumTraits<Scalar>::Real Real;
+
+  eigen_assert( Scalar(0) != poly[poly.size()-1] );
+  const Scalar inv_leading_coeff = Scalar(1)/poly[poly.size()-1];
+  Real cb(0);
+
+  for( DenseIndex i=0; i<poly.size()-1; ++i ){
+    cb += abs(poly[i]*inv_leading_coeff); }
+  return cb + Real(1);
+}
+
+/** \ingroup Polynomials_Module
+ * \returns a minimum bound for the absolute value of any non zero root of the polynomial.
+ * \param[in] poly : the vector of coefficients of the polynomial ordered
+ *  by degrees i.e. poly[i] is the coefficient of degree i of the polynomial
+ *  e.g. \f$ 1 + 3x^2 \f$ is stored as a vector \f$ [ 1, 0, 3 ] \f$.
+ */
+template <typename Polynomial>
+inline
+typename NumTraits<typename Polynomial::Scalar>::Real cauchy_min_bound( const Polynomial& poly )
+{
+  using std::abs;
+  typedef typename Polynomial::Scalar Scalar;
+  typedef typename NumTraits<Scalar>::Real Real;
+
+  DenseIndex i=0;
+  while( i<poly.size()-1 && Scalar(0) == poly(i) ){ ++i; }
+  if( poly.size()-1 == i ){
+    return Real(1); }
+
+  const Scalar inv_min_coeff = Scalar(1)/poly[i];
+  Real cb(1);
+  for( DenseIndex j=i+1; j<poly.size(); ++j ){
+    cb += abs(poly[j]*inv_min_coeff); }
+  return Real(1)/cb;
+}
+
+/** \ingroup Polynomials_Module
+ * Given the roots of a polynomial compute the coefficients in the
+ * monomial basis of the monic polynomial with same roots and minimal degree.
+ * If RootVector is a vector of complexes, Polynomial should also be a vector
+ * of complexes.
+ * \param[in] rv : a vector containing the roots of a polynomial.
+ * \param[out] poly : the vector of coefficients of the polynomial ordered
+ *  by degrees i.e. poly[i] is the coefficient of degree i of the polynomial
+ *  e.g. \f$ 3 + x^2 \f$ is stored as a vector \f$ [ 3, 0, 1 ] \f$.
+ */
+template <typename RootVector, typename Polynomial>
+void roots_to_monicPolynomial( const RootVector& rv, Polynomial& poly )
+{
+
+  typedef typename Polynomial::Scalar Scalar;
+
+  poly.setZero( rv.size()+1 );
+  poly[0] = -rv[0]; poly[1] = Scalar(1);
+  for( DenseIndex i=1; i< rv.size(); ++i )
+  {
+    for( DenseIndex j=i+1; j>0; --j ){ poly[j] = poly[j-1] - rv[i]*poly[j]; }
+    poly[0] = -rv[i]*poly[0];
+  }
+}
+
+} // end namespace Eigen
+
+#endif // EIGEN_POLYNOMIAL_UTILS_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h	(revision 3762)
@@ -0,0 +1,236 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2016 Eugene Brevdo <ebrevdo@gmail.com>
+// Copyright (C) 2016 Gael Guennebaud <gael.guennebaud@inria.fr>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_SPECIALFUNCTIONS_FUNCTORS_H
+#define EIGEN_SPECIALFUNCTIONS_FUNCTORS_H
+
+namespace Eigen {
+
+namespace internal {
+
+
+/** \internal
+  * \brief Template functor to compute the incomplete gamma function igamma(a, x)
+  *
+  * \sa class CwiseBinaryOp, Cwise::igamma
+  */
+template<typename Scalar> struct scalar_igamma_op : binary_op_base<Scalar,Scalar>
+{
+  EIGEN_EMPTY_STRUCT_CTOR(scalar_igamma_op)
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Scalar operator() (const Scalar& a, const Scalar& x) const {
+    using numext::igamma; return igamma(a, x);
+  }
+  template<typename Packet>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Packet packetOp(const Packet& a, const Packet& x) const {
+    return internal::pigamma(a, x);
+  }
+};
+template<typename Scalar>
+struct functor_traits<scalar_igamma_op<Scalar> > {
+  enum {
+    // Guesstimate
+    Cost = 20 * NumTraits<Scalar>::MulCost + 10 * NumTraits<Scalar>::AddCost,
+    PacketAccess = packet_traits<Scalar>::HasIGamma
+  };
+};
+
+
+/** \internal
+  * \brief Template functor to compute the complementary incomplete gamma function igammac(a, x)
+  *
+  * \sa class CwiseBinaryOp, Cwise::igammac
+  */
+template<typename Scalar> struct scalar_igammac_op : binary_op_base<Scalar,Scalar>
+{
+  EIGEN_EMPTY_STRUCT_CTOR(scalar_igammac_op)
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Scalar operator() (const Scalar& a, const Scalar& x) const {
+    using numext::igammac; return igammac(a, x);
+  }
+  template<typename Packet>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Packet packetOp(const Packet& a, const Packet& x) const
+  {
+    return internal::pigammac(a, x);
+  }
+};
+template<typename Scalar>
+struct functor_traits<scalar_igammac_op<Scalar> > {
+  enum {
+    // Guesstimate
+    Cost = 20 * NumTraits<Scalar>::MulCost + 10 * NumTraits<Scalar>::AddCost,
+    PacketAccess = packet_traits<Scalar>::HasIGammac
+  };
+};
+
+
+/** \internal
+  * \brief Template functor to compute the incomplete beta integral betainc(a, b, x)
+  *
+  */
+template<typename Scalar> struct scalar_betainc_op {
+  EIGEN_EMPTY_STRUCT_CTOR(scalar_betainc_op)
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Scalar operator() (const Scalar& x, const Scalar& a, const Scalar& b) const {
+    using numext::betainc; return betainc(x, a, b);
+  }
+  template<typename Packet>
+  EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Packet packetOp(const Packet& x, const Packet& a, const Packet& b) const
+  {
+    return internal::pbetainc(x, a, b);
+  }
+};
+template<typename Scalar>
+struct functor_traits<scalar_betainc_op<Scalar> > {
+  enum {
+    // Guesstimate
+    Cost = 400 * NumTraits<Scalar>::MulCost + 400 * NumTraits<Scalar>::AddCost,
+    PacketAccess = packet_traits<Scalar>::HasBetaInc
+  };
+};
+
+
+/** \internal
+ * \brief Template functor to compute the natural log of the absolute
+ * value of Gamma of a scalar
+ * \sa class CwiseUnaryOp, Cwise::lgamma()
+ */
+template<typename Scalar> struct scalar_lgamma_op {
+  EIGEN_EMPTY_STRUCT_CTOR(scalar_lgamma_op)
+  EIGEN_DEVICE_FUNC inline const Scalar operator() (const Scalar& a) const {
+    using numext::lgamma; return lgamma(a);
+  }
+  typedef typename packet_traits<Scalar>::type Packet;
+  EIGEN_DEVICE_FUNC inline Packet packetOp(const Packet& a) const { return internal::plgamma(a); }
+};
+template<typename Scalar>
+struct functor_traits<scalar_lgamma_op<Scalar> >
+{
+  enum {
+    // Guesstimate
+    Cost = 10 * NumTraits<Scalar>::MulCost + 5 * NumTraits<Scalar>::AddCost,
+    PacketAccess = packet_traits<Scalar>::HasLGamma
+  };
+};
+
+/** \internal
+ * \brief Template functor to compute psi, the derivative of lgamma of a scalar.
+ * \sa class CwiseUnaryOp, Cwise::digamma()
+ */
+template<typename Scalar> struct scalar_digamma_op {
+  EIGEN_EMPTY_STRUCT_CTOR(scalar_digamma_op)
+  EIGEN_DEVICE_FUNC inline const Scalar operator() (const Scalar& a) const {
+    using numext::digamma; return digamma(a);
+  }
+  typedef typename packet_traits<Scalar>::type Packet;
+  EIGEN_DEVICE_FUNC inline Packet packetOp(const Packet& a) const { return internal::pdigamma(a); }
+};
+template<typename Scalar>
+struct functor_traits<scalar_digamma_op<Scalar> >
+{
+  enum {
+    // Guesstimate
+    Cost = 10 * NumTraits<Scalar>::MulCost + 5 * NumTraits<Scalar>::AddCost,
+    PacketAccess = packet_traits<Scalar>::HasDiGamma
+  };
+};
+
+/** \internal
+ * \brief Template functor to compute the Riemann Zeta function of two arguments.
+ * \sa class CwiseUnaryOp, Cwise::zeta()
+ */
+template<typename Scalar> struct scalar_zeta_op {
+    EIGEN_EMPTY_STRUCT_CTOR(scalar_zeta_op)
+    EIGEN_DEVICE_FUNC inline const Scalar operator() (const Scalar& x, const Scalar& q) const {
+        using numext::zeta; return zeta(x, q);
+    }
+    typedef typename packet_traits<Scalar>::type Packet;
+    EIGEN_DEVICE_FUNC inline Packet packetOp(const Packet& x, const Packet& q) const { return internal::pzeta(x, q); }
+};
+template<typename Scalar>
+struct functor_traits<scalar_zeta_op<Scalar> >
+{
+    enum {
+        // Guesstimate
+        Cost = 10 * NumTraits<Scalar>::MulCost + 5 * NumTraits<Scalar>::AddCost,
+        PacketAccess = packet_traits<Scalar>::HasZeta
+    };
+};
+
+/** \internal
+ * \brief Template functor to compute the polygamma function.
+ * \sa class CwiseUnaryOp, Cwise::polygamma()
+ */
+template<typename Scalar> struct scalar_polygamma_op {
+    EIGEN_EMPTY_STRUCT_CTOR(scalar_polygamma_op)
+    EIGEN_DEVICE_FUNC inline const Scalar operator() (const Scalar& n, const Scalar& x) const {
+        using numext::polygamma; return polygamma(n, x);
+    }
+    typedef typename packet_traits<Scalar>::type Packet;
+    EIGEN_DEVICE_FUNC inline Packet packetOp(const Packet& n, const Packet& x) const { return internal::ppolygamma(n, x); }
+};
+template<typename Scalar>
+struct functor_traits<scalar_polygamma_op<Scalar> >
+{
+    enum {
+        // Guesstimate
+        Cost = 10 * NumTraits<Scalar>::MulCost + 5 * NumTraits<Scalar>::AddCost,
+        PacketAccess = packet_traits<Scalar>::HasPolygamma
+    };
+};
+
+/** \internal
+ * \brief Template functor to compute the Gauss error function of a
+ * scalar
+ * \sa class CwiseUnaryOp, Cwise::erf()
+ */
+template<typename Scalar> struct scalar_erf_op {
+  EIGEN_EMPTY_STRUCT_CTOR(scalar_erf_op)
+  EIGEN_DEVICE_FUNC inline const Scalar operator() (const Scalar& a) const {
+    using numext::erf; return erf(a);
+  }
+  typedef typename packet_traits<Scalar>::type Packet;
+  EIGEN_DEVICE_FUNC inline Packet packetOp(const Packet& a) const { return internal::perf(a); }
+};
+template<typename Scalar>
+struct functor_traits<scalar_erf_op<Scalar> >
+{
+  enum {
+    // Guesstimate
+    Cost = 10 * NumTraits<Scalar>::MulCost + 5 * NumTraits<Scalar>::AddCost,
+    PacketAccess = packet_traits<Scalar>::HasErf
+  };
+};
+
+/** \internal
+ * \brief Template functor to compute the Complementary Error Function
+ * of a scalar
+ * \sa class CwiseUnaryOp, Cwise::erfc()
+ */
+template<typename Scalar> struct scalar_erfc_op {
+  EIGEN_EMPTY_STRUCT_CTOR(scalar_erfc_op)
+  EIGEN_DEVICE_FUNC inline const Scalar operator() (const Scalar& a) const {
+    using numext::erfc; return erfc(a);
+  }
+  typedef typename packet_traits<Scalar>::type Packet;
+  EIGEN_DEVICE_FUNC inline Packet packetOp(const Packet& a) const { return internal::perfc(a); }
+};
+template<typename Scalar>
+struct functor_traits<scalar_erfc_op<Scalar> >
+{
+  enum {
+    // Guesstimate
+    Cost = 10 * NumTraits<Scalar>::MulCost + 5 * NumTraits<Scalar>::AddCost,
+    PacketAccess = packet_traits<Scalar>::HasErfc
+  };
+};
+
+} // end namespace internal
+
+} // end namespace Eigen
+
+#endif // EIGEN_SPECIALFUNCTIONS_FUNCTORS_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsArrayAPI.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsArrayAPI.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsArrayAPI.h	(revision 3762)
@@ -0,0 +1,124 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2016 Gael Guennebaud <gael.guennebaud@inria.fr>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+#ifndef EIGEN_SPECIALFUNCTIONS_ARRAYAPI_H
+#define EIGEN_SPECIALFUNCTIONS_ARRAYAPI_H
+
+namespace Eigen {
+
+/** \cpp11 \returns an expression of the coefficient-wise igamma(\a a, \a x) to the given arrays.
+  *
+  * This function computes the coefficient-wise incomplete gamma function.
+  *
+  * \note This function supports only float and double scalar types in c++11 mode. To support other scalar types,
+  * or float/double in non c++11 mode, the user has to provide implementations of igammac(T,T) for any scalar
+  * type T to be supported.
+  *
+  * \sa Eigen::igammac(), Eigen::lgamma()
+  */
+template<typename Derived,typename ExponentDerived>
+inline const Eigen::CwiseBinaryOp<Eigen::internal::scalar_igamma_op<typename Derived::Scalar>, const Derived, const ExponentDerived>
+igamma(const Eigen::ArrayBase<Derived>& a, const Eigen::ArrayBase<ExponentDerived>& x)
+{
+  return Eigen::CwiseBinaryOp<Eigen::internal::scalar_igamma_op<typename Derived::Scalar>, const Derived, const ExponentDerived>(
+    a.derived(),
+    x.derived()
+  );
+}
+
+/** \cpp11 \returns an expression of the coefficient-wise igammac(\a a, \a x) to the given arrays.
+  *
+  * This function computes the coefficient-wise complementary incomplete gamma function.
+  *
+  * \note This function supports only float and double scalar types in c++11 mode. To support other scalar types,
+  * or float/double in non c++11 mode, the user has to provide implementations of igammac(T,T) for any scalar
+  * type T to be supported.
+  *
+  * \sa Eigen::igamma(), Eigen::lgamma()
+  */
+template<typename Derived,typename ExponentDerived>
+inline const Eigen::CwiseBinaryOp<Eigen::internal::scalar_igammac_op<typename Derived::Scalar>, const Derived, const ExponentDerived>
+igammac(const Eigen::ArrayBase<Derived>& a, const Eigen::ArrayBase<ExponentDerived>& x)
+{
+  return Eigen::CwiseBinaryOp<Eigen::internal::scalar_igammac_op<typename Derived::Scalar>, const Derived, const ExponentDerived>(
+    a.derived(),
+    x.derived()
+  );
+}
+
+/** \cpp11 \returns an expression of the coefficient-wise polygamma(\a n, \a x) to the given arrays.
+  *
+  * It returns the \a n -th derivative of the digamma(psi) evaluated at \c x.
+  *
+  * \note This function supports only float and double scalar types in c++11 mode. To support other scalar types,
+  * or float/double in non c++11 mode, the user has to provide implementations of polygamma(T,T) for any scalar
+  * type T to be supported.
+  *
+  * \sa Eigen::digamma()
+  */
+// * \warning Be careful with the order of the parameters: x.polygamma(n) is equivalent to polygamma(n,x)
+// * \sa ArrayBase::polygamma()
+template<typename DerivedN,typename DerivedX>
+inline const Eigen::CwiseBinaryOp<Eigen::internal::scalar_polygamma_op<typename DerivedX::Scalar>, const DerivedN, const DerivedX>
+polygamma(const Eigen::ArrayBase<DerivedN>& n, const Eigen::ArrayBase<DerivedX>& x)
+{
+  return Eigen::CwiseBinaryOp<Eigen::internal::scalar_polygamma_op<typename DerivedX::Scalar>, const DerivedN, const DerivedX>(
+    n.derived(),
+    x.derived()
+  );
+}
+
+/** \cpp11 \returns an expression of the coefficient-wise betainc(\a x, \a a, \a b) to the given arrays.
+  *
+  * This function computes the regularized incomplete beta function (integral).
+  *
+  * \note This function supports only float and double scalar types in c++11 mode. To support other scalar types,
+  * or float/double in non c++11 mode, the user has to provide implementations of betainc(T,T,T) for any scalar
+  * type T to be supported.
+  *
+  * \sa Eigen::betainc(), Eigen::lgamma()
+  */
+template<typename ArgADerived, typename ArgBDerived, typename ArgXDerived>
+inline const Eigen::CwiseTernaryOp<Eigen::internal::scalar_betainc_op<typename ArgXDerived::Scalar>, const ArgADerived, const ArgBDerived, const ArgXDerived>
+betainc(const Eigen::ArrayBase<ArgADerived>& a, const Eigen::ArrayBase<ArgBDerived>& b, const Eigen::ArrayBase<ArgXDerived>& x)
+{
+  return Eigen::CwiseTernaryOp<Eigen::internal::scalar_betainc_op<typename ArgXDerived::Scalar>, const ArgADerived, const ArgBDerived, const ArgXDerived>(
+    a.derived(),
+    b.derived(),
+    x.derived()
+  );
+}
+
+
+/** \returns an expression of the coefficient-wise zeta(\a x, \a q) to the given arrays.
+  *
+  * It returns the Riemann zeta function of two arguments \a x and \a q:
+  *
+  * \param x is the exposent, it must be > 1
+  * \param q is the shift, it must be > 0
+  *
+  * \note This function supports only float and double scalar types. To support other scalar types, the user has
+  * to provide implementations of zeta(T,T) for any scalar type T to be supported.
+  *
+  * \sa ArrayBase::zeta()
+  */
+template<typename DerivedX,typename DerivedQ>
+inline const Eigen::CwiseBinaryOp<Eigen::internal::scalar_zeta_op<typename DerivedX::Scalar>, const DerivedX, const DerivedQ>
+zeta(const Eigen::ArrayBase<DerivedX>& x, const Eigen::ArrayBase<DerivedQ>& q)
+{
+  return Eigen::CwiseBinaryOp<Eigen::internal::scalar_zeta_op<typename DerivedX::Scalar>, const DerivedX, const DerivedQ>(
+    x.derived(),
+    q.derived()
+  );
+}
+
+} // end namespace Eigen
+
+#endif // EIGEN_SPECIALFUNCTIONS_ARRAYAPI_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsHalf.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsHalf.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsHalf.h	(revision 3762)
@@ -0,0 +1,47 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_SPECIALFUNCTIONS_HALF_H
+#define EIGEN_SPECIALFUNCTIONS_HALF_H
+
+namespace Eigen {
+namespace numext {
+
+#if EIGEN_HAS_C99_MATH
+template<> EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::half lgamma(const Eigen::half& a) {
+  return Eigen::half(Eigen::numext::lgamma(static_cast<float>(a)));
+}
+template<> EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::half digamma(const Eigen::half& a) {
+  return Eigen::half(Eigen::numext::digamma(static_cast<float>(a)));
+}
+template<> EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::half zeta(const Eigen::half& x, const Eigen::half& q) {
+  return Eigen::half(Eigen::numext::zeta(static_cast<float>(x), static_cast<float>(q)));
+}
+template<> EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::half polygamma(const Eigen::half& n, const Eigen::half& x) {
+  return Eigen::half(Eigen::numext::polygamma(static_cast<float>(n), static_cast<float>(x)));
+}
+template<> EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::half erf(const Eigen::half& a) {
+  return Eigen::half(Eigen::numext::erf(static_cast<float>(a)));
+}
+template<> EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::half erfc(const Eigen::half& a) {
+  return Eigen::half(Eigen::numext::erfc(static_cast<float>(a)));
+}
+template<> EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::half igamma(const Eigen::half& a, const Eigen::half& x) {
+  return Eigen::half(Eigen::numext::igamma(static_cast<float>(a), static_cast<float>(x)));
+}
+template<> EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::half igammac(const Eigen::half& a, const Eigen::half& x) {
+  return Eigen::half(Eigen::numext::igammac(static_cast<float>(a), static_cast<float>(x)));
+}
+template<> EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC Eigen::half betainc(const Eigen::half& a, const Eigen::half& b, const Eigen::half& x) {
+  return Eigen::half(Eigen::numext::betainc(static_cast<float>(a), static_cast<float>(b), static_cast<float>(x)));
+}
+#endif
+
+}  // end namespace numext
+}  // end namespace Eigen
+
+#endif  // EIGEN_SPECIALFUNCTIONS_HALF_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h	(revision 3762)
@@ -0,0 +1,1565 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2015 Eugene Brevdo <ebrevdo@gmail.com>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_SPECIAL_FUNCTIONS_H
+#define EIGEN_SPECIAL_FUNCTIONS_H
+
+namespace Eigen {
+namespace internal {
+
+//  Parts of this code are based on the Cephes Math Library.
+//
+//  Cephes Math Library Release 2.8:  June, 2000
+//  Copyright 1984, 1987, 1992, 2000 by Stephen L. Moshier
+//
+//  Permission has been kindly provided by the original author
+//  to incorporate the Cephes software into the Eigen codebase:
+//
+//    From: Stephen Moshier
+//    To: Eugene Brevdo
+//    Subject: Re: Permission to wrap several cephes functions in Eigen
+//
+//    Hello Eugene,
+//
+//    Thank you for writing.
+//
+//    If your licensing is similar to BSD, the formal way that has been
+//    handled is simply to add a statement to the effect that you are incorporating
+//    the Cephes software by permission of the author.
+//
+//    Good luck with your project,
+//    Steve
+
+namespace cephes {
+
+/* polevl (modified for Eigen)
+ *
+ *      Evaluate polynomial
+ *
+ *
+ *
+ * SYNOPSIS:
+ *
+ * int N;
+ * Scalar x, y, coef[N+1];
+ *
+ * y = polevl<decltype(x), N>( x, coef);
+ *
+ *
+ *
+ * DESCRIPTION:
+ *
+ * Evaluates polynomial of degree N:
+ *
+ *                     2          N
+ * y  =  C  + C x + C x  +...+ C x
+ *        0    1     2          N
+ *
+ * Coefficients are stored in reverse order:
+ *
+ * coef[0] = C  , ..., coef[N] = C  .
+ *            N                   0
+ *
+ *  The function p1evl() assumes that coef[N] = 1.0 and is
+ * omitted from the array.  Its calling arguments are
+ * otherwise the same as polevl().
+ *
+ *
+ * The Eigen implementation is templatized.  For best speed, store
+ * coef as a const array (constexpr), e.g.
+ *
+ * const double coef[] = {1.0, 2.0, 3.0, ...};
+ *
+ */
+template <typename Scalar, int N>
+struct polevl {
+  EIGEN_DEVICE_FUNC
+  static EIGEN_STRONG_INLINE Scalar run(const Scalar x, const Scalar coef[]) {
+    EIGEN_STATIC_ASSERT((N > 0), YOU_MADE_A_PROGRAMMING_MISTAKE);
+
+    return polevl<Scalar, N - 1>::run(x, coef) * x + coef[N];
+  }
+};
+
+template <typename Scalar>
+struct polevl<Scalar, 0> {
+  EIGEN_DEVICE_FUNC
+  static EIGEN_STRONG_INLINE Scalar run(const Scalar, const Scalar coef[]) {
+    return coef[0];
+  }
+};
+
+}  // end namespace cephes
+
+/****************************************************************************
+ * Implementation of lgamma, requires C++11/C99                             *
+ ****************************************************************************/
+
+template <typename Scalar>
+struct lgamma_impl {
+  EIGEN_DEVICE_FUNC
+  static EIGEN_STRONG_INLINE Scalar run(const Scalar) {
+    EIGEN_STATIC_ASSERT((internal::is_same<Scalar, Scalar>::value == false),
+                        THIS_TYPE_IS_NOT_SUPPORTED);
+    return Scalar(0);
+  }
+};
+
+template <typename Scalar>
+struct lgamma_retval {
+  typedef Scalar type;
+};
+
+#if EIGEN_HAS_C99_MATH
+template <>
+struct lgamma_impl<float> {
+  EIGEN_DEVICE_FUNC
+  static EIGEN_STRONG_INLINE float run(float x) {
+#if !defined(__CUDA_ARCH__) && (defined(_BSD_SOURCE) || defined(_SVID_SOURCE)) && !defined(__APPLE__)
+    int signgam;
+    return ::lgammaf_r(x, &signgam);
+#else
+    return ::lgammaf(x);
+#endif
+  }
+};
+
+template <>
+struct lgamma_impl<double> {
+  EIGEN_DEVICE_FUNC
+  static EIGEN_STRONG_INLINE double run(double x) {
+#if !defined(__CUDA_ARCH__) && (defined(_BSD_SOURCE) || defined(_SVID_SOURCE)) && !defined(__APPLE__)
+    int signgam;
+    return ::lgamma_r(x, &signgam);
+#else
+    return ::lgamma(x);
+#endif
+  }
+};
+#endif
+
+/****************************************************************************
+ * Implementation of digamma (psi), based on Cephes                         *
+ ****************************************************************************/
+
+template <typename Scalar>
+struct digamma_retval {
+  typedef Scalar type;
+};
+
+/*
+ *
+ * Polynomial evaluation helper for the Psi (digamma) function.
+ *
+ * digamma_impl_maybe_poly::run(s) evaluates the asymptotic Psi expansion for
+ * input Scalar s, assuming s is above 10.0.
+ *
+ * If s is above a certain threshold for the given Scalar type, zero
+ * is returned.  Otherwise the polynomial is evaluated with enough
+ * coefficients for results matching Scalar machine precision.
+ *
+ *
+ */
+template <typename Scalar>
+struct digamma_impl_maybe_poly {
+  EIGEN_DEVICE_FUNC
+  static EIGEN_STRONG_INLINE Scalar run(const Scalar) {
+    EIGEN_STATIC_ASSERT((internal::is_same<Scalar, Scalar>::value == false),
+                        THIS_TYPE_IS_NOT_SUPPORTED);
+    return Scalar(0);
+  }
+};
+
+
+template <>
+struct digamma_impl_maybe_poly<float> {
+  EIGEN_DEVICE_FUNC
+  static EIGEN_STRONG_INLINE float run(const float s) {
+    const float A[] = {
+      -4.16666666666666666667E-3f,
+      3.96825396825396825397E-3f,
+      -8.33333333333333333333E-3f,
+      8.33333333333333333333E-2f
+    };
+
+    float z;
+    if (s < 1.0e8f) {
+      z = 1.0f / (s * s);
+      return z * cephes::polevl<float, 3>::run(z, A);
+    } else return 0.0f;
+  }
+};
+
+template <>
+struct digamma_impl_maybe_poly<double> {
+  EIGEN_DEVICE_FUNC
+  static EIGEN_STRONG_INLINE double run(const double s) {
+    const double A[] = {
+      8.33333333333333333333E-2,
+      -2.10927960927960927961E-2,
+      7.57575757575757575758E-3,
+      -4.16666666666666666667E-3,
+      3.96825396825396825397E-3,
+      -8.33333333333333333333E-3,
+      8.33333333333333333333E-2
+    };
+
+    double z;
+    if (s < 1.0e17) {
+      z = 1.0 / (s * s);
+      return z * cephes::polevl<double, 6>::run(z, A);
+    }
+    else return 0.0;
+  }
+};
+
+template <typename Scalar>
+struct digamma_impl {
+  EIGEN_DEVICE_FUNC
+  static Scalar run(Scalar x) {
+    /*
+     *
+     *     Psi (digamma) function (modified for Eigen)
+     *
+     *
+     * SYNOPSIS:
+     *
+     * double x, y, psi();
+     *
+     * y = psi( x );
+     *
+     *
+     * DESCRIPTION:
+     *
+     *              d      -
+     *   psi(x)  =  -- ln | (x)
+     *              dx
+     *
+     * is the logarithmic derivative of the gamma function.
+     * For integer x,
+     *                   n-1
+     *                    -
+     * psi(n) = -EUL  +   >  1/k.
+     *                    -
+     *                   k=1
+     *
+     * If x is negative, it is transformed to a positive argument by the
+     * reflection formula  psi(1-x) = psi(x) + pi cot(pi x).
+     * For general positive x, the argument is made greater than 10
+     * using the recurrence  psi(x+1) = psi(x) + 1/x.
+     * Then the following asymptotic expansion is applied:
+     *
+     *                           inf.   B
+     *                            -      2k
+     * psi(x) = log(x) - 1/2x -   >   -------
+     *                            -        2k
+     *                           k=1   2k x
+     *
+     * where the B2k are Bernoulli numbers.
+     *
+     * ACCURACY (float):
+     *    Relative error (except absolute when |psi| < 1):
+     * arithmetic   domain     # trials      peak         rms
+     *    IEEE      0,30        30000       1.3e-15     1.4e-16
+     *    IEEE      -30,0       40000       1.5e-15     2.2e-16
+     *
+     * ACCURACY (double):
+     *    Absolute error,  relative when |psi| > 1 :
+     * arithmetic   domain     # trials      peak         rms
+     *    IEEE      -33,0        30000      8.2e-7      1.2e-7
+     *    IEEE      0,33        100000      7.3e-7      7.7e-8
+     *
+     * ERROR MESSAGES:
+     *     message         condition      value returned
+     * psi singularity    x integer <=0      INFINITY
+     */
+
+    Scalar p, q, nz, s, w, y;
+    bool negative = false;
+
+    const Scalar maxnum = NumTraits<Scalar>::infinity();
+    const Scalar m_pi = Scalar(EIGEN_PI);
+
+    const Scalar zero = Scalar(0);
+    const Scalar one = Scalar(1);
+    const Scalar half = Scalar(0.5);
+    nz = zero;
+
+    if (x <= zero) {
+      negative = true;
+      q = x;
+      p = numext::floor(q);
+      if (p == q) {
+        return maxnum;
+      }
+      /* Remove the zeros of tan(m_pi x)
+       * by subtracting the nearest integer from x
+       */
+      nz = q - p;
+      if (nz != half) {
+        if (nz > half) {
+          p += one;
+          nz = q - p;
+        }
+        nz = m_pi / numext::tan(m_pi * nz);
+      }
+      else {
+        nz = zero;
+      }
+      x = one - x;
+    }
+
+    /* use the recurrence psi(x+1) = psi(x) + 1/x. */
+    s = x;
+    w = zero;
+    while (s < Scalar(10)) {
+      w += one / s;
+      s += one;
+    }
+
+    y = digamma_impl_maybe_poly<Scalar>::run(s);
+
+    y = numext::log(s) - (half / s) - y - w;
+
+    return (negative) ? y - nz : y;
+  }
+};
+
+/****************************************************************************
+ * Implementation of erf, requires C++11/C99                                *
+ ****************************************************************************/
+
+template <typename Scalar>
+struct erf_impl {
+  EIGEN_DEVICE_FUNC
+  static EIGEN_STRONG_INLINE Scalar run(const Scalar) {
+    EIGEN_STATIC_ASSERT((internal::is_same<Scalar, Scalar>::value == false),
+                        THIS_TYPE_IS_NOT_SUPPORTED);
+    return Scalar(0);
+  }
+};
+
+template <typename Scalar>
+struct erf_retval {
+  typedef Scalar type;
+};
+
+#if EIGEN_HAS_C99_MATH
+template <>
+struct erf_impl<float> {
+  EIGEN_DEVICE_FUNC
+  static EIGEN_STRONG_INLINE float run(float x) { return ::erff(x); }
+};
+
+template <>
+struct erf_impl<double> {
+  EIGEN_DEVICE_FUNC
+  static EIGEN_STRONG_INLINE double run(double x) { return ::erf(x); }
+};
+#endif  // EIGEN_HAS_C99_MATH
+
+/***************************************************************************
+* Implementation of erfc, requires C++11/C99                               *
+****************************************************************************/
+
+template <typename Scalar>
+struct erfc_impl {
+  EIGEN_DEVICE_FUNC
+  static EIGEN_STRONG_INLINE Scalar run(const Scalar) {
+    EIGEN_STATIC_ASSERT((internal::is_same<Scalar, Scalar>::value == false),
+                        THIS_TYPE_IS_NOT_SUPPORTED);
+    return Scalar(0);
+  }
+};
+
+template <typename Scalar>
+struct erfc_retval {
+  typedef Scalar type;
+};
+
+#if EIGEN_HAS_C99_MATH
+template <>
+struct erfc_impl<float> {
+  EIGEN_DEVICE_FUNC
+  static EIGEN_STRONG_INLINE float run(const float x) { return ::erfcf(x); }
+};
+
+template <>
+struct erfc_impl<double> {
+  EIGEN_DEVICE_FUNC
+  static EIGEN_STRONG_INLINE double run(const double x) { return ::erfc(x); }
+};
+#endif  // EIGEN_HAS_C99_MATH
+
+/**************************************************************************************************************
+ * Implementation of igammac (complemented incomplete gamma integral), based on Cephes but requires C++11/C99 *
+ **************************************************************************************************************/
+
+template <typename Scalar>
+struct igammac_retval {
+  typedef Scalar type;
+};
+
+// NOTE: cephes_helper is also used to implement zeta
+template <typename Scalar>
+struct cephes_helper {
+  EIGEN_DEVICE_FUNC
+  static EIGEN_STRONG_INLINE Scalar machep() { assert(false && "machep not supported for this type"); return 0.0; }
+  EIGEN_DEVICE_FUNC
+  static EIGEN_STRONG_INLINE Scalar big() { assert(false && "big not supported for this type"); return 0.0; }
+  EIGEN_DEVICE_FUNC
+  static EIGEN_STRONG_INLINE Scalar biginv() { assert(false && "biginv not supported for this type"); return 0.0; }
+};
+
+template <>
+struct cephes_helper<float> {
+  EIGEN_DEVICE_FUNC
+  static EIGEN_STRONG_INLINE float machep() {
+    return NumTraits<float>::epsilon() / 2;  // 1.0 - machep == 1.0
+  }
+  EIGEN_DEVICE_FUNC
+  static EIGEN_STRONG_INLINE float big() {
+    // use epsneg (1.0 - epsneg == 1.0)
+    return 1.0f / (NumTraits<float>::epsilon() / 2);
+  }
+  EIGEN_DEVICE_FUNC
+  static EIGEN_STRONG_INLINE float biginv() {
+    // epsneg
+    return machep();
+  }
+};
+
+template <>
+struct cephes_helper<double> {
+  EIGEN_DEVICE_FUNC
+  static EIGEN_STRONG_INLINE double machep() {
+    return NumTraits<double>::epsilon() / 2;  // 1.0 - machep == 1.0
+  }
+  EIGEN_DEVICE_FUNC
+  static EIGEN_STRONG_INLINE double big() {
+    return 1.0 / NumTraits<double>::epsilon();
+  }
+  EIGEN_DEVICE_FUNC
+  static EIGEN_STRONG_INLINE double biginv() {
+    // inverse of eps
+    return NumTraits<double>::epsilon();
+  }
+};
+
+#if !EIGEN_HAS_C99_MATH
+
+template <typename Scalar>
+struct igammac_impl {
+  EIGEN_DEVICE_FUNC
+  static Scalar run(Scalar a, Scalar x) {
+    EIGEN_STATIC_ASSERT((internal::is_same<Scalar, Scalar>::value == false),
+                        THIS_TYPE_IS_NOT_SUPPORTED);
+    return Scalar(0);
+  }
+};
+
+#else
+
+template <typename Scalar> struct igamma_impl;  // predeclare igamma_impl
+
+template <typename Scalar>
+struct igammac_impl {
+  EIGEN_DEVICE_FUNC
+  static Scalar run(Scalar a, Scalar x) {
+    /*  igamc()
+     *
+     *	Incomplete gamma integral (modified for Eigen)
+     *
+     *
+     *
+     * SYNOPSIS:
+     *
+     * double a, x, y, igamc();
+     *
+     * y = igamc( a, x );
+     *
+     * DESCRIPTION:
+     *
+     * The function is defined by
+     *
+     *
+     *  igamc(a,x)   =   1 - igam(a,x)
+     *
+     *                            inf.
+     *                              -
+     *                     1       | |  -t  a-1
+     *               =   -----     |   e   t   dt.
+     *                    -      | |
+     *                   | (a)    -
+     *                             x
+     *
+     *
+     * In this implementation both arguments must be positive.
+     * The integral is evaluated by either a power series or
+     * continued fraction expansion, depending on the relative
+     * values of a and x.
+     *
+     * ACCURACY (float):
+     *
+     *                      Relative error:
+     * arithmetic   domain     # trials      peak         rms
+     *    IEEE      0,30        30000       7.8e-6      5.9e-7
+     *
+     *
+     * ACCURACY (double):
+     *
+     * Tested at random a, x.
+     *                a         x                      Relative error:
+     * arithmetic   domain   domain     # trials      peak         rms
+     *    IEEE     0.5,100   0,100      200000       1.9e-14     1.7e-15
+     *    IEEE     0.01,0.5  0,100      200000       1.4e-13     1.6e-15
+     *
+     */
+    /*
+      Cephes Math Library Release 2.2: June, 1992
+      Copyright 1985, 1987, 1992 by Stephen L. Moshier
+      Direct inquiries to 30 Frost Street, Cambridge, MA 02140
+    */
+    const Scalar zero = 0;
+    const Scalar one = 1;
+    const Scalar nan = NumTraits<Scalar>::quiet_NaN();
+
+    if ((x < zero) || (a <= zero)) {
+      // domain error
+      return nan;
+    }
+
+    if ((x < one) || (x < a)) {
+      /* The checks above ensure that we meet the preconditions for
+       * igamma_impl::Impl(), so call it, rather than igamma_impl::Run().
+       * Calling Run() would also work, but in that case the compiler may not be
+       * able to prove that igammac_impl::Run and igamma_impl::Run are not
+       * mutually recursive.  This leads to worse code, particularly on
+       * platforms like nvptx, where recursion is allowed only begrudgingly.
+       */
+      return (one - igamma_impl<Scalar>::Impl(a, x));
+    }
+
+    return Impl(a, x);
+  }
+
+ private:
+  /* igamma_impl calls igammac_impl::Impl. */
+  friend struct igamma_impl<Scalar>;
+
+  /* Actually computes igamc(a, x).
+   *
+   * Preconditions:
+   *   a > 0
+   *   x >= 1
+   *   x >= a
+   */
+  EIGEN_DEVICE_FUNC static Scalar Impl(Scalar a, Scalar x) {
+    const Scalar zero = 0;
+    const Scalar one = 1;
+    const Scalar two = 2;
+    const Scalar machep = cephes_helper<Scalar>::machep();
+    const Scalar maxlog = numext::log(NumTraits<Scalar>::highest());
+    const Scalar big = cephes_helper<Scalar>::big();
+    const Scalar biginv = cephes_helper<Scalar>::biginv();
+    const Scalar inf = NumTraits<Scalar>::infinity();
+
+    Scalar ans, ax, c, yc, r, t, y, z;
+    Scalar pk, pkm1, pkm2, qk, qkm1, qkm2;
+
+    if (x == inf) return zero;  // std::isinf crashes on CUDA
+
+    /* Compute  x**a * exp(-x) / gamma(a)  */
+    ax = a * numext::log(x) - x - lgamma_impl<Scalar>::run(a);
+    if (ax < -maxlog) {  // underflow
+      return zero;
+    }
+    ax = numext::exp(ax);
+
+    // continued fraction
+    y = one - a;
+    z = x + y + one;
+    c = zero;
+    pkm2 = one;
+    qkm2 = x;
+    pkm1 = x + one;
+    qkm1 = z * x;
+    ans = pkm1 / qkm1;
+
+    while (true) {
+      c += one;
+      y += one;
+      z += two;
+      yc = y * c;
+      pk = pkm1 * z - pkm2 * yc;
+      qk = qkm1 * z - qkm2 * yc;
+      if (qk != zero) {
+        r = pk / qk;
+        t = numext::abs((ans - r) / r);
+        ans = r;
+      } else {
+        t = one;
+      }
+      pkm2 = pkm1;
+      pkm1 = pk;
+      qkm2 = qkm1;
+      qkm1 = qk;
+      if (numext::abs(pk) > big) {
+        pkm2 *= biginv;
+        pkm1 *= biginv;
+        qkm2 *= biginv;
+        qkm1 *= biginv;
+      }
+      if (t <= machep) {
+        break;
+      }
+    }
+
+    return (ans * ax);
+  }
+};
+
+#endif  // EIGEN_HAS_C99_MATH
+
+/************************************************************************************************
+ * Implementation of igamma (incomplete gamma integral), based on Cephes but requires C++11/C99 *
+ ************************************************************************************************/
+
+template <typename Scalar>
+struct igamma_retval {
+  typedef Scalar type;
+};
+
+#if !EIGEN_HAS_C99_MATH
+
+template <typename Scalar>
+struct igamma_impl {
+  EIGEN_DEVICE_FUNC
+  static EIGEN_STRONG_INLINE Scalar run(Scalar a, Scalar x) {
+    EIGEN_STATIC_ASSERT((internal::is_same<Scalar, Scalar>::value == false),
+                        THIS_TYPE_IS_NOT_SUPPORTED);
+    return Scalar(0);
+  }
+};
+
+#else
+
+template <typename Scalar>
+struct igamma_impl {
+  EIGEN_DEVICE_FUNC
+  static Scalar run(Scalar a, Scalar x) {
+    /*	igam()
+     *	Incomplete gamma integral
+     *
+     *
+     *
+     * SYNOPSIS:
+     *
+     * double a, x, y, igam();
+     *
+     * y = igam( a, x );
+     *
+     * DESCRIPTION:
+     *
+     * The function is defined by
+     *
+     *                           x
+     *                            -
+     *                   1       | |  -t  a-1
+     *  igam(a,x)  =   -----     |   e   t   dt.
+     *                  -      | |
+     *                 | (a)    -
+     *                           0
+     *
+     *
+     * In this implementation both arguments must be positive.
+     * The integral is evaluated by either a power series or
+     * continued fraction expansion, depending on the relative
+     * values of a and x.
+     *
+     * ACCURACY (double):
+     *
+     *                      Relative error:
+     * arithmetic   domain     # trials      peak         rms
+     *    IEEE      0,30       200000       3.6e-14     2.9e-15
+     *    IEEE      0,100      300000       9.9e-14     1.5e-14
+     *
+     *
+     * ACCURACY (float):
+     *
+     *                      Relative error:
+     * arithmetic   domain     # trials      peak         rms
+     *    IEEE      0,30        20000       7.8e-6      5.9e-7
+     *
+     */
+    /*
+      Cephes Math Library Release 2.2: June, 1992
+      Copyright 1985, 1987, 1992 by Stephen L. Moshier
+      Direct inquiries to 30 Frost Street, Cambridge, MA 02140
+    */
+
+
+    /* left tail of incomplete gamma function:
+     *
+     *          inf.      k
+     *   a  -x   -       x
+     *  x  e     >   ----------
+     *           -     -
+     *          k=0   | (a+k+1)
+     *
+     */
+    const Scalar zero = 0;
+    const Scalar one = 1;
+    const Scalar nan = NumTraits<Scalar>::quiet_NaN();
+
+    if (x == zero) return zero;
+
+    if ((x < zero) || (a <= zero)) {  // domain error
+      return nan;
+    }
+
+    if ((x > one) && (x > a)) {
+      /* The checks above ensure that we meet the preconditions for
+       * igammac_impl::Impl(), so call it, rather than igammac_impl::Run().
+       * Calling Run() would also work, but in that case the compiler may not be
+       * able to prove that igammac_impl::Run and igamma_impl::Run are not
+       * mutually recursive.  This leads to worse code, particularly on
+       * platforms like nvptx, where recursion is allowed only begrudgingly.
+       */
+      return (one - igammac_impl<Scalar>::Impl(a, x));
+    }
+
+    return Impl(a, x);
+  }
+
+ private:
+  /* igammac_impl calls igamma_impl::Impl. */
+  friend struct igammac_impl<Scalar>;
+
+  /* Actually computes igam(a, x).
+   *
+   * Preconditions:
+   *   x > 0
+   *   a > 0
+   *   !(x > 1 && x > a)
+   */
+  EIGEN_DEVICE_FUNC static Scalar Impl(Scalar a, Scalar x) {
+    const Scalar zero = 0;
+    const Scalar one = 1;
+    const Scalar machep = cephes_helper<Scalar>::machep();
+    const Scalar maxlog = numext::log(NumTraits<Scalar>::highest());
+
+    Scalar ans, ax, c, r;
+
+    /* Compute  x**a * exp(-x) / gamma(a)  */
+    ax = a * numext::log(x) - x - lgamma_impl<Scalar>::run(a);
+    if (ax < -maxlog) {
+      // underflow
+      return zero;
+    }
+    ax = numext::exp(ax);
+
+    /* power series */
+    r = a;
+    c = one;
+    ans = one;
+
+    while (true) {
+      r += one;
+      c *= x/r;
+      ans += c;
+      if (c/ans <= machep) {
+        break;
+      }
+    }
+
+    return (ans * ax / a);
+  }
+};
+
+#endif  // EIGEN_HAS_C99_MATH
+
+/*****************************************************************************
+ * Implementation of Riemann zeta function of two arguments, based on Cephes *
+ *****************************************************************************/
+
+template <typename Scalar>
+struct zeta_retval {
+    typedef Scalar type;
+};
+
+template <typename Scalar>
+struct zeta_impl_series {
+  EIGEN_DEVICE_FUNC
+  static EIGEN_STRONG_INLINE Scalar run(const Scalar) {
+    EIGEN_STATIC_ASSERT((internal::is_same<Scalar, Scalar>::value == false),
+                        THIS_TYPE_IS_NOT_SUPPORTED);
+    return Scalar(0);
+  }
+};
+
+template <>
+struct zeta_impl_series<float> {
+  EIGEN_DEVICE_FUNC
+  static EIGEN_STRONG_INLINE bool run(float& a, float& b, float& s, const float x, const float machep) {
+    int i = 0;
+    while(i < 9)
+    {
+        i += 1;
+        a += 1.0f;
+        b = numext::pow( a, -x );
+        s += b;
+        if( numext::abs(b/s) < machep )
+            return true;
+    }
+
+    //Return whether we are done
+    return false;
+  }
+};
+
+template <>
+struct zeta_impl_series<double> {
+  EIGEN_DEVICE_FUNC
+  static EIGEN_STRONG_INLINE bool run(double& a, double& b, double& s, const double x, const double machep) {
+    int i = 0;
+    while( (i < 9) || (a <= 9.0) )
+    {
+        i += 1;
+        a += 1.0;
+        b = numext::pow( a, -x );
+        s += b;
+        if( numext::abs(b/s) < machep )
+            return true;
+    }
+
+    //Return whether we are done
+    return false;
+  }
+};
+
+template <typename Scalar>
+struct zeta_impl {
+    EIGEN_DEVICE_FUNC
+    static Scalar run(Scalar x, Scalar q) {
+        /*							zeta.c
+         *
+         *	Riemann zeta function of two arguments
+         *
+         *
+         *
+         * SYNOPSIS:
+         *
+         * double x, q, y, zeta();
+         *
+         * y = zeta( x, q );
+         *
+         *
+         *
+         * DESCRIPTION:
+         *
+         *
+         *
+         *                 inf.
+         *                  -        -x
+         *   zeta(x,q)  =   >   (k+q)
+         *                  -
+         *                 k=0
+         *
+         * where x > 1 and q is not a negative integer or zero.
+         * The Euler-Maclaurin summation formula is used to obtain
+         * the expansion
+         *
+         *                n
+         *                -       -x
+         * zeta(x,q)  =   >  (k+q)
+         *                -
+         *               k=1
+         *
+         *           1-x                 inf.  B   x(x+1)...(x+2j)
+         *      (n+q)           1         -     2j
+         *  +  ---------  -  -------  +   >    --------------------
+         *        x-1              x      -                   x+2j+1
+         *                   2(n+q)      j=1       (2j)! (n+q)
+         *
+         * where the B2j are Bernoulli numbers.  Note that (see zetac.c)
+         * zeta(x,1) = zetac(x) + 1.
+         *
+         *
+         *
+         * ACCURACY:
+         *
+         * Relative error for single precision:
+         * arithmetic   domain     # trials      peak         rms
+         *    IEEE      0,25        10000       6.9e-7      1.0e-7
+         *
+         * Large arguments may produce underflow in powf(), in which
+         * case the results are inaccurate.
+         *
+         * REFERENCE:
+         *
+         * Gradshteyn, I. S., and I. M. Ryzhik, Tables of Integrals,
+         * Series, and Products, p. 1073; Academic Press, 1980.
+         *
+         */
+
+        int i;
+        Scalar p, r, a, b, k, s, t, w;
+
+        const Scalar A[] = {
+            Scalar(12.0),
+            Scalar(-720.0),
+            Scalar(30240.0),
+            Scalar(-1209600.0),
+            Scalar(47900160.0),
+            Scalar(-1.8924375803183791606e9), /*1.307674368e12/691*/
+            Scalar(7.47242496e10),
+            Scalar(-2.950130727918164224e12), /*1.067062284288e16/3617*/
+            Scalar(1.1646782814350067249e14), /*5.109094217170944e18/43867*/
+            Scalar(-4.5979787224074726105e15), /*8.028576626982912e20/174611*/
+            Scalar(1.8152105401943546773e17), /*1.5511210043330985984e23/854513*/
+            Scalar(-7.1661652561756670113e18) /*1.6938241367317436694528e27/236364091*/
+            };
+
+        const Scalar maxnum = NumTraits<Scalar>::infinity();
+        const Scalar zero = 0.0, half = 0.5, one = 1.0;
+        const Scalar machep = cephes_helper<Scalar>::machep();
+        const Scalar nan = NumTraits<Scalar>::quiet_NaN();
+
+        if( x == one )
+            return maxnum;
+
+        if( x < one )
+        {
+            return nan;
+        }
+
+        if( q <= zero )
+        {
+            if(q == numext::floor(q))
+            {
+                return maxnum;
+            }
+            p = x;
+            r = numext::floor(p);
+            if (p != r)
+                return nan;
+        }
+
+        /* Permit negative q but continue sum until n+q > +9 .
+         * This case should be handled by a reflection formula.
+         * If q<0 and x is an integer, there is a relation to
+         * the polygamma function.
+         */
+        s = numext::pow( q, -x );
+        a = q;
+        b = zero;
+        // Run the summation in a helper function that is specific to the floating precision
+        if (zeta_impl_series<Scalar>::run(a, b, s, x, machep)) {
+            return s;
+        }
+
+        w = a;
+        s += b*w/(x-one);
+        s -= half * b;
+        a = one;
+        k = zero;
+        for( i=0; i<12; i++ )
+        {
+            a *= x + k;
+            b /= w;
+            t = a*b/A[i];
+            s = s + t;
+            t = numext::abs(t/s);
+            if( t < machep ) {
+              break;
+            }
+            k += one;
+            a *= x + k;
+            b /= w;
+            k += one;
+        }
+        return s;
+  }
+};
+
+/****************************************************************************
+ * Implementation of polygamma function, requires C++11/C99                 *
+ ****************************************************************************/
+
+template <typename Scalar>
+struct polygamma_retval {
+    typedef Scalar type;
+};
+
+#if !EIGEN_HAS_C99_MATH
+
+template <typename Scalar>
+struct polygamma_impl {
+    EIGEN_DEVICE_FUNC
+    static EIGEN_STRONG_INLINE Scalar run(Scalar n, Scalar x) {
+        EIGEN_STATIC_ASSERT((internal::is_same<Scalar, Scalar>::value == false),
+                            THIS_TYPE_IS_NOT_SUPPORTED);
+        return Scalar(0);
+    }
+};
+
+#else
+
+template <typename Scalar>
+struct polygamma_impl {
+    EIGEN_DEVICE_FUNC
+    static Scalar run(Scalar n, Scalar x) {
+        Scalar zero = 0.0, one = 1.0;
+        Scalar nplus = n + one;
+        const Scalar nan = NumTraits<Scalar>::quiet_NaN();
+
+        // Check that n is an integer
+        if (numext::floor(n) != n) {
+            return nan;
+        }
+        // Just return the digamma function for n = 1
+        else if (n == zero) {
+            return digamma_impl<Scalar>::run(x);
+        }
+        // Use the same implementation as scipy
+        else {
+            Scalar factorial = numext::exp(lgamma_impl<Scalar>::run(nplus));
+            return numext::pow(-one, nplus) * factorial * zeta_impl<Scalar>::run(nplus, x);
+        }
+  }
+};
+
+#endif  // EIGEN_HAS_C99_MATH
+
+/************************************************************************************************
+ * Implementation of betainc (incomplete beta integral), based on Cephes but requires C++11/C99 *
+ ************************************************************************************************/
+
+template <typename Scalar>
+struct betainc_retval {
+  typedef Scalar type;
+};
+
+#if !EIGEN_HAS_C99_MATH
+
+template <typename Scalar>
+struct betainc_impl {
+  EIGEN_DEVICE_FUNC
+  static EIGEN_STRONG_INLINE Scalar run(Scalar a, Scalar b, Scalar x) {
+    EIGEN_STATIC_ASSERT((internal::is_same<Scalar, Scalar>::value == false),
+                        THIS_TYPE_IS_NOT_SUPPORTED);
+    return Scalar(0);
+  }
+};
+
+#else
+
+template <typename Scalar>
+struct betainc_impl {
+  EIGEN_DEVICE_FUNC
+  static EIGEN_STRONG_INLINE Scalar run(Scalar, Scalar, Scalar) {
+    /*	betaincf.c
+     *
+     *	Incomplete beta integral
+     *
+     *
+     * SYNOPSIS:
+     *
+     * float a, b, x, y, betaincf();
+     *
+     * y = betaincf( a, b, x );
+     *
+     *
+     * DESCRIPTION:
+     *
+     * Returns incomplete beta integral of the arguments, evaluated
+     * from zero to x.  The function is defined as
+     *
+     *                  x
+     *     -            -
+     *    | (a+b)      | |  a-1     b-1
+     *  -----------    |   t   (1-t)   dt.
+     *   -     -     | |
+     *  | (a) | (b)   -
+     *                 0
+     *
+     * The domain of definition is 0 <= x <= 1.  In this
+     * implementation a and b are restricted to positive values.
+     * The integral from x to 1 may be obtained by the symmetry
+     * relation
+     *
+     *    1 - betainc( a, b, x )  =  betainc( b, a, 1-x ).
+     *
+     * The integral is evaluated by a continued fraction expansion.
+     * If a < 1, the function calls itself recursively after a
+     * transformation to increase a to a+1.
+     *
+     * ACCURACY (float):
+     *
+     * Tested at random points (a,b,x) with a and b in the indicated
+     * interval and x between 0 and 1.
+     *
+     * arithmetic   domain     # trials      peak         rms
+     * Relative error:
+     *    IEEE       0,30       10000       3.7e-5      5.1e-6
+     *    IEEE       0,100      10000       1.7e-4      2.5e-5
+     * The useful domain for relative error is limited by underflow
+     * of the single precision exponential function.
+     * Absolute error:
+     *    IEEE       0,30      100000       2.2e-5      9.6e-7
+     *    IEEE       0,100      10000       6.5e-5      3.7e-6
+     *
+     * Larger errors may occur for extreme ratios of a and b.
+     *
+     * ACCURACY (double):
+     * arithmetic   domain     # trials      peak         rms
+     *    IEEE      0,5         10000       6.9e-15     4.5e-16
+     *    IEEE      0,85       250000       2.2e-13     1.7e-14
+     *    IEEE      0,1000      30000       5.3e-12     6.3e-13
+     *    IEEE      0,10000    250000       9.3e-11     7.1e-12
+     *    IEEE      0,100000    10000       8.7e-10     4.8e-11
+     * Outputs smaller than the IEEE gradual underflow threshold
+     * were excluded from these statistics.
+     *
+     * ERROR MESSAGES:
+     *   message         condition      value returned
+     * incbet domain      x<0, x>1          nan
+     * incbet underflow                     nan
+     */
+
+    EIGEN_STATIC_ASSERT((internal::is_same<Scalar, Scalar>::value == false),
+                        THIS_TYPE_IS_NOT_SUPPORTED);
+    return Scalar(0);
+  }
+};
+
+/* Continued fraction expansion #1 for incomplete beta integral (small_branch = True)
+ * Continued fraction expansion #2 for incomplete beta integral (small_branch = False)
+ */
+template <typename Scalar>
+struct incbeta_cfe {
+  EIGEN_DEVICE_FUNC
+  static EIGEN_STRONG_INLINE Scalar run(Scalar a, Scalar b, Scalar x, bool small_branch) {
+    EIGEN_STATIC_ASSERT((internal::is_same<Scalar, float>::value ||
+                         internal::is_same<Scalar, double>::value),
+                        THIS_TYPE_IS_NOT_SUPPORTED);
+    const Scalar big = cephes_helper<Scalar>::big();
+    const Scalar machep = cephes_helper<Scalar>::machep();
+    const Scalar biginv = cephes_helper<Scalar>::biginv();
+
+    const Scalar zero = 0;
+    const Scalar one = 1;
+    const Scalar two = 2;
+
+    Scalar xk, pk, pkm1, pkm2, qk, qkm1, qkm2;
+    Scalar k1, k2, k3, k4, k5, k6, k7, k8, k26update;
+    Scalar ans;
+    int n;
+
+    const int num_iters = (internal::is_same<Scalar, float>::value) ? 100 : 300;
+    const Scalar thresh =
+        (internal::is_same<Scalar, float>::value) ? machep : Scalar(3) * machep;
+    Scalar r = (internal::is_same<Scalar, float>::value) ? zero : one;
+
+    if (small_branch) {
+      k1 = a;
+      k2 = a + b;
+      k3 = a;
+      k4 = a + one;
+      k5 = one;
+      k6 = b - one;
+      k7 = k4;
+      k8 = a + two;
+      k26update = one;
+    } else {
+      k1 = a;
+      k2 = b - one;
+      k3 = a;
+      k4 = a + one;
+      k5 = one;
+      k6 = a + b;
+      k7 = a + one;
+      k8 = a + two;
+      k26update = -one;
+      x = x / (one - x);
+    }
+
+    pkm2 = zero;
+    qkm2 = one;
+    pkm1 = one;
+    qkm1 = one;
+    ans = one;
+    n = 0;
+
+    do {
+      xk = -(x * k1 * k2) / (k3 * k4);
+      pk = pkm1 + pkm2 * xk;
+      qk = qkm1 + qkm2 * xk;
+      pkm2 = pkm1;
+      pkm1 = pk;
+      qkm2 = qkm1;
+      qkm1 = qk;
+
+      xk = (x * k5 * k6) / (k7 * k8);
+      pk = pkm1 + pkm2 * xk;
+      qk = qkm1 + qkm2 * xk;
+      pkm2 = pkm1;
+      pkm1 = pk;
+      qkm2 = qkm1;
+      qkm1 = qk;
+
+      if (qk != zero) {
+        r = pk / qk;
+        if (numext::abs(ans - r) < numext::abs(r) * thresh) {
+          return r;
+        }
+        ans = r;
+      }
+
+      k1 += one;
+      k2 += k26update;
+      k3 += two;
+      k4 += two;
+      k5 += one;
+      k6 -= k26update;
+      k7 += two;
+      k8 += two;
+
+      if ((numext::abs(qk) + numext::abs(pk)) > big) {
+        pkm2 *= biginv;
+        pkm1 *= biginv;
+        qkm2 *= biginv;
+        qkm1 *= biginv;
+      }
+      if ((numext::abs(qk) < biginv) || (numext::abs(pk) < biginv)) {
+        pkm2 *= big;
+        pkm1 *= big;
+        qkm2 *= big;
+        qkm1 *= big;
+      }
+    } while (++n < num_iters);
+
+    return ans;
+  }
+};
+
+/* Helper functions depending on the Scalar type */
+template <typename Scalar>
+struct betainc_helper {};
+
+template <>
+struct betainc_helper<float> {
+  /* Core implementation, assumes a large (> 1.0) */
+  EIGEN_DEVICE_FUNC static EIGEN_STRONG_INLINE float incbsa(float aa, float bb,
+                                                            float xx) {
+    float ans, a, b, t, x, onemx;
+    bool reversed_a_b = false;
+
+    onemx = 1.0f - xx;
+
+    /* see if x is greater than the mean */
+    if (xx > (aa / (aa + bb))) {
+      reversed_a_b = true;
+      a = bb;
+      b = aa;
+      t = xx;
+      x = onemx;
+    } else {
+      a = aa;
+      b = bb;
+      t = onemx;
+      x = xx;
+    }
+
+    /* Choose expansion for optimal convergence */
+    if (b > 10.0f) {
+      if (numext::abs(b * x / a) < 0.3f) {
+        t = betainc_helper<float>::incbps(a, b, x);
+        if (reversed_a_b) t = 1.0f - t;
+        return t;
+      }
+    }
+
+    ans = x * (a + b - 2.0f) / (a - 1.0f);
+    if (ans < 1.0f) {
+      ans = incbeta_cfe<float>::run(a, b, x, true /* small_branch */);
+      t = b * numext::log(t);
+    } else {
+      ans = incbeta_cfe<float>::run(a, b, x, false /* small_branch */);
+      t = (b - 1.0f) * numext::log(t);
+    }
+
+    t += a * numext::log(x) + lgamma_impl<float>::run(a + b) -
+         lgamma_impl<float>::run(a) - lgamma_impl<float>::run(b);
+    t += numext::log(ans / a);
+    t = numext::exp(t);
+
+    if (reversed_a_b) t = 1.0f - t;
+    return t;
+  }
+
+  EIGEN_DEVICE_FUNC
+  static EIGEN_STRONG_INLINE float incbps(float a, float b, float x) {
+    float t, u, y, s;
+    const float machep = cephes_helper<float>::machep();
+
+    y = a * numext::log(x) + (b - 1.0f) * numext::log1p(-x) - numext::log(a);
+    y -= lgamma_impl<float>::run(a) + lgamma_impl<float>::run(b);
+    y += lgamma_impl<float>::run(a + b);
+
+    t = x / (1.0f - x);
+    s = 0.0f;
+    u = 1.0f;
+    do {
+      b -= 1.0f;
+      if (b == 0.0f) {
+        break;
+      }
+      a += 1.0f;
+      u *= t * b / a;
+      s += u;
+    } while (numext::abs(u) > machep);
+
+    return numext::exp(y) * (1.0f + s);
+  }
+};
+
+template <>
+struct betainc_impl<float> {
+  EIGEN_DEVICE_FUNC
+  static float run(float a, float b, float x) {
+    const float nan = NumTraits<float>::quiet_NaN();
+    float ans, t;
+
+    if (a <= 0.0f) return nan;
+    if (b <= 0.0f) return nan;
+    if ((x <= 0.0f) || (x >= 1.0f)) {
+      if (x == 0.0f) return 0.0f;
+      if (x == 1.0f) return 1.0f;
+      // mtherr("betaincf", DOMAIN);
+      return nan;
+    }
+
+    /* transformation for small aa */
+    if (a <= 1.0f) {
+      ans = betainc_helper<float>::incbsa(a + 1.0f, b, x);
+      t = a * numext::log(x) + b * numext::log1p(-x) +
+          lgamma_impl<float>::run(a + b) - lgamma_impl<float>::run(a + 1.0f) -
+          lgamma_impl<float>::run(b);
+      return (ans + numext::exp(t));
+    } else {
+      return betainc_helper<float>::incbsa(a, b, x);
+    }
+  }
+};
+
+template <>
+struct betainc_helper<double> {
+  EIGEN_DEVICE_FUNC
+  static EIGEN_STRONG_INLINE double incbps(double a, double b, double x) {
+    const double machep = cephes_helper<double>::machep();
+
+    double s, t, u, v, n, t1, z, ai;
+
+    ai = 1.0 / a;
+    u = (1.0 - b) * x;
+    v = u / (a + 1.0);
+    t1 = v;
+    t = u;
+    n = 2.0;
+    s = 0.0;
+    z = machep * ai;
+    while (numext::abs(v) > z) {
+      u = (n - b) * x / n;
+      t *= u;
+      v = t / (a + n);
+      s += v;
+      n += 1.0;
+    }
+    s += t1;
+    s += ai;
+
+    u = a * numext::log(x);
+    // TODO: gamma() is not directly implemented in Eigen.
+    /*
+    if ((a + b) < maxgam && numext::abs(u) < maxlog) {
+      t = gamma(a + b) / (gamma(a) * gamma(b));
+      s = s * t * pow(x, a);
+    } else {
+    */
+    t = lgamma_impl<double>::run(a + b) - lgamma_impl<double>::run(a) -
+        lgamma_impl<double>::run(b) + u + numext::log(s);
+    return s = numext::exp(t);
+  }
+};
+
+template <>
+struct betainc_impl<double> {
+  EIGEN_DEVICE_FUNC
+  static double run(double aa, double bb, double xx) {
+    const double nan = NumTraits<double>::quiet_NaN();
+    const double machep = cephes_helper<double>::machep();
+    // const double maxgam = 171.624376956302725;
+
+    double a, b, t, x, xc, w, y;
+    bool reversed_a_b = false;
+
+    if (aa <= 0.0 || bb <= 0.0) {
+      return nan;  // goto domerr;
+    }
+
+    if ((xx <= 0.0) || (xx >= 1.0)) {
+      if (xx == 0.0) return (0.0);
+      if (xx == 1.0) return (1.0);
+      // mtherr("incbet", DOMAIN);
+      return nan;
+    }
+
+    if ((bb * xx) <= 1.0 && xx <= 0.95) {
+      return betainc_helper<double>::incbps(aa, bb, xx);
+    }
+
+    w = 1.0 - xx;
+
+    /* Reverse a and b if x is greater than the mean. */
+    if (xx > (aa / (aa + bb))) {
+      reversed_a_b = true;
+      a = bb;
+      b = aa;
+      xc = xx;
+      x = w;
+    } else {
+      a = aa;
+      b = bb;
+      xc = w;
+      x = xx;
+    }
+
+    if (reversed_a_b && (b * x) <= 1.0 && x <= 0.95) {
+      t = betainc_helper<double>::incbps(a, b, x);
+      if (t <= machep) {
+        t = 1.0 - machep;
+      } else {
+        t = 1.0 - t;
+      }
+      return t;
+    }
+
+    /* Choose expansion for better convergence. */
+    y = x * (a + b - 2.0) - (a - 1.0);
+    if (y < 0.0) {
+      w = incbeta_cfe<double>::run(a, b, x, true /* small_branch */);
+    } else {
+      w = incbeta_cfe<double>::run(a, b, x, false /* small_branch */) / xc;
+    }
+
+    /* Multiply w by the factor
+         a      b   _             _     _
+        x  (1-x)   | (a+b) / ( a | (a) | (b) ) .   */
+
+    y = a * numext::log(x);
+    t = b * numext::log(xc);
+    // TODO: gamma is not directly implemented in Eigen.
+    /*
+    if ((a + b) < maxgam && numext::abs(y) < maxlog && numext::abs(t) < maxlog)
+    {
+      t = pow(xc, b);
+      t *= pow(x, a);
+      t /= a;
+      t *= w;
+      t *= gamma(a + b) / (gamma(a) * gamma(b));
+    } else {
+    */
+    /* Resort to logarithms.  */
+    y += t + lgamma_impl<double>::run(a + b) - lgamma_impl<double>::run(a) -
+         lgamma_impl<double>::run(b);
+    y += numext::log(w / a);
+    t = numext::exp(y);
+
+    /* } */
+    // done:
+
+    if (reversed_a_b) {
+      if (t <= machep) {
+        t = 1.0 - machep;
+      } else {
+        t = 1.0 - t;
+      }
+    }
+    return t;
+  }
+};
+
+#endif  // EIGEN_HAS_C99_MATH
+
+}  // end namespace internal
+
+namespace numext {
+
+template <typename Scalar>
+EIGEN_DEVICE_FUNC inline EIGEN_MATHFUNC_RETVAL(lgamma, Scalar)
+    lgamma(const Scalar& x) {
+  return EIGEN_MATHFUNC_IMPL(lgamma, Scalar)::run(x);
+}
+
+template <typename Scalar>
+EIGEN_DEVICE_FUNC inline EIGEN_MATHFUNC_RETVAL(digamma, Scalar)
+    digamma(const Scalar& x) {
+  return EIGEN_MATHFUNC_IMPL(digamma, Scalar)::run(x);
+}
+
+template <typename Scalar>
+EIGEN_DEVICE_FUNC inline EIGEN_MATHFUNC_RETVAL(zeta, Scalar)
+zeta(const Scalar& x, const Scalar& q) {
+    return EIGEN_MATHFUNC_IMPL(zeta, Scalar)::run(x, q);
+}
+
+template <typename Scalar>
+EIGEN_DEVICE_FUNC inline EIGEN_MATHFUNC_RETVAL(polygamma, Scalar)
+polygamma(const Scalar& n, const Scalar& x) {
+    return EIGEN_MATHFUNC_IMPL(polygamma, Scalar)::run(n, x);
+}
+
+template <typename Scalar>
+EIGEN_DEVICE_FUNC inline EIGEN_MATHFUNC_RETVAL(erf, Scalar)
+    erf(const Scalar& x) {
+  return EIGEN_MATHFUNC_IMPL(erf, Scalar)::run(x);
+}
+
+template <typename Scalar>
+EIGEN_DEVICE_FUNC inline EIGEN_MATHFUNC_RETVAL(erfc, Scalar)
+    erfc(const Scalar& x) {
+  return EIGEN_MATHFUNC_IMPL(erfc, Scalar)::run(x);
+}
+
+template <typename Scalar>
+EIGEN_DEVICE_FUNC inline EIGEN_MATHFUNC_RETVAL(igamma, Scalar)
+    igamma(const Scalar& a, const Scalar& x) {
+  return EIGEN_MATHFUNC_IMPL(igamma, Scalar)::run(a, x);
+}
+
+template <typename Scalar>
+EIGEN_DEVICE_FUNC inline EIGEN_MATHFUNC_RETVAL(igammac, Scalar)
+    igammac(const Scalar& a, const Scalar& x) {
+  return EIGEN_MATHFUNC_IMPL(igammac, Scalar)::run(a, x);
+}
+
+template <typename Scalar>
+EIGEN_DEVICE_FUNC inline EIGEN_MATHFUNC_RETVAL(betainc, Scalar)
+    betainc(const Scalar& a, const Scalar& b, const Scalar& x) {
+  return EIGEN_MATHFUNC_IMPL(betainc, Scalar)::run(a, b, x);
+}
+
+}  // end namespace numext
+
+
+}  // end namespace Eigen
+
+#endif  // EIGEN_SPECIAL_FUNCTIONS_H
Index: TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsPacketMath.h
===================================================================
--- TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsPacketMath.h	(revision 0)
+++ TXM/trunk/bundles/org.txm.statsengine.r.core.linux/res/linux64/library/RcppEigen/include/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsPacketMath.h	(revision 3762)
@@ -0,0 +1,58 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra.
+//
+// Copyright (C) 2016 Gael Guennebaud <gael.guennebaud@inria.fr>
+//
+// This Source Code Form is subject to the terms of the Mozilla
+// Public License v. 2.0. If a copy of the MPL was not distributed
+// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef EIGEN_SPECIALFUNCTIONS_PACKETMATH_H
+#define EIGEN_SPECIALFUNCTIONS_PACKETMATH_H
+
+namespace Eigen {
+
+namespace internal {
+
+/** \internal \returns the ln(|gamma(\a a)|) (coeff-wise) */
+template<typename Packet> EIGEN_DECLARE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS
+Packet plgamma(const Packet& a) { using numext::lgamma; return lgamma(a); }
+
+/** \internal \returns the derivative of lgamma, psi(\a a) (coeff-wise) */
+template<typename Packet> EIGEN_DECLARE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS
+Packet pdigamma(const Packet& a) { using numext::digamma; return digamma(a); }
+
+/** \internal \returns the zeta function of two arguments (coeff-wise) */
+template<typename Packet> EIGEN_DECLARE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS
+Packet pzeta(const Packet& x, const Packet& q) { using numext::zeta; return zeta(x, q); }
+
+/** \internal \returns the polygamma function (coeff-wise) */
+template<typename Packet> EIGEN_DECLARE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS
+Packet ppolygamma(const Packet& n, const Packet& x) { using numext::polygamma; return polygamma(n, x); }
+
+/** \internal \returns the erf(\a a) (coeff-wise) */
+template<typename Packet> EIGEN_DECLARE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS
+Packet perf(const Packet& a) { using numext::erf; return erf(a); }
+
+/** \internal \returns the erfc(\a a) (coeff-wise) */
+template<typename Packet> EIGEN_DECLARE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS
+Packet perfc(const Packet& a) { using numext::erfc; return erfc(a); }
+
+/** \internal \returns the incomplete gamma function igamma(\a a, \a x) */
+template<typename Packet> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+Packet pigamma(const Packet& a, const Packet& x) { using numext::igamma; return igamma(a, x); }
+
+/** \internal \returns the complementary incomplete gamma function igammac(\a a, \a x) */
+template<typename Packet> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+Packet pigammac(const Packet& a, const Packet& x) { using numext::igammac; return igammac(a, x); }
+
+/** \internal \returns the complementary incomplete gamma function betainc(\a a, \a b, \a x) */
+template<typename Packet> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
+Packet pbetainc(const Packet& a, const Packet& b,const Packet& x) { using numext::betainc; return betainc(a, b, x); }
+
+} // end namespace internal
+
+} // end namespace Eigen
+
+#endif // EIGEN_SPECIALFUNCTIONS_PACKETMATH_H
+
